Atalho de Content Assist, eclipse + Mac OS X + vmware Fusion

Cenário: Eclipse Java EE rodando no Mac OS X, com vmware fusion instalado

Problema: Sequência de teclas Control + Espaço não funciona como atalho para o “assist content“. A janela do vmware fusion se abre.

Solução: Recomendo reconfigurar o Eclipse, alterando a configuração do atalho do assist content para outra sequência. Para isto, no eclipse vá até “preferences“, “keys” e altere o atalho com a sequencia de teclas de sua preferência.

Tags: , ,

Vmware Fusion: Conectar jdbc com sql server

      Nenhum comentário em Vmware Fusion: Conectar jdbc com sql server

Desta vez tentarei ser breve.

Vamos ao cenário primeiro: Você está usando por exemplo o eclipse no MAC (ou talvez o eclipse no linux, o sistema operacional não importa, o que importa é o meio da conexão, via jdbc) e precisa fazer uma conexão com um sql server numa máquina virtual.

Bem, no título eu deixei explícito: “vmware fusion”- o que significa que estou usando um mac os x. Entenda que  independente do software de virtualização e do sistema operacional, nosso sql server está numa vm (virtual machine).

 

Se ao conectar por jdbc ao sql server virtualizado você tiver dificuldade em conectar ao sql server (erro de conexão), é muito provável que o problema esteja relacionado ao firewall do windows.

Uma saída mais rápida e fácii seria desabilitar o firewall do windows. Mas, voce não faria isto, certo?

Vamos ver como liberar o acesso ao sql server pelo firewall usando portas dinâmicas – isto significa que independe da porta utilizada no seu sql server. O padrão sabemos que é 1433.

 

  1. Abra o windows Firewall pelo painel de controle, vá até “advanced settings” (Windows Firewall with Advanced Security).
  2. Escolha o link para Inbound rules (lado esquerdo) e depois “New rule” (lado direito).
  3. Mantenha a seleção para padrão em “Program” e clique em next.
  4. Escolha o binário onde o sql server está (sqlservr.exe) e clique em next – como estou usando a versão express, o caminho ficou em  “%ProgramFiles%\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Binn\sqlservr.exe”
  5. Mantenha a opção “Allow the connection” e clique em next.
  6. Depois, escolha a opção da profile de rede que pretende deixar ativa a regra e next.
  7. Digite um nome, minha sugestão “SQL Server Binn” e finish.
  8. Crie mais uma nova regra, seguindo os passos 1 a 3
  9. Escolha agora o caminho completo onde se encontra o SQLBrowser.exe – no meu caso, por exemplo, “%ProgramFiles%\Microsoft SQL Server\90\Shared\sqlbrowser.exe”.
  10. Siga os passos 5 e 6
  11. Digite um nome, minha sugestão “SQL Server Browser” e finish.

 

Pronto. Neste momento sua conexão jdbc com o sql server virtualizado não deve mais dar erro de conexão.

Se o erro persistir, verifique sua string de conexão.

Maiores informações estão disponíveis em http://technet.microsoft.com/en-us/library/ms175043.aspx

 

Comigo deu certo, testado e aprovado.

 

Grande abraço e até a próxima.

10 dicas úteis e rápidas para android

      2 comentários em 10 dicas úteis e rápidas para android

Muitas ou a maioria destas dicas servem perfeitamente na maioria dos aparelhos com android – celulares e tablets, a partir da versão 4.0.4.

 

Separei 10 dicas especiais, e espero que estas dicas possam ajudar.

 

1) Acesso rápido ao histórico de navegação
Ao abrir o navegador padrão de internet, segure apertado o botão “voltar” e será aberto as opções de histórico de navegação.

 

2) Print Screen – Captura de tela
Aperte simultaneamente os botões <vol down> + <power>.
Em alguns aparelhos os botões que fazem a captura de tela são diferentes – isto podem variar do fabricante e da versão da rom (sistema).

 

3) Localização de suas fotos
Abra o aplicativo “camera“, toque no atalho de configuração (camera settings) e ative a opção “Store Location” em “on”. Lembre-se também, armazenando a sua localização nas fotos, há questões envolvidas de “privacidade”, qualquer pessoa pode identificar o local onde a foto foi feita.

4) Desativar atalhos na tela ao instalar novos aplicativos
Você pode notar que ao instalar um novo aplicativo, automaticamente é inserido um atalho dele na sua tela. Se desejar desativar esta ação automática, vá até o aplicativo do Google Play, toque no menu e escolha settings.
Então, desative a opção “Auto-add widgets“.

 

5) Ative uma senha para compra de aplicativos.
É muito simples comprar um aplicativo. Tão simples que até uma criança pode efetuar uma compra, mesmo sem saber que um adulto esteja pagando por isto.
Na dúvida, ative uma senha de segurança para comprar um aplicativo. Novamente, vá até o aplicativo do Google Play, toque no menu e escolha settings.
Então, em “Users Controls“, marque a opção “Use pin for purchases” e depois defina uma senha – não muito óbvia, claro. Uma criança mais observadora descobre uma senha rápido.

 

6) Segurança…
Este assunto é fundamental, extenso e simples. Cabe um artigo dedicado a isto. Mas aqui deixo um resumo, simples.
1. Sempre tenha uma senha no seu aparelho ao ligar, seja ele um tablet ou celular.
2. Use algum software de rastreamento e segurança, que permita no minimo que voce apague o conteudo do aparelho remotamente.
3. Além dos cuidados citados acima, recomento instalar o aplicativo app locker – coloque uma senha pra abrir alguns aplicativos, como email, facebook, twitter, google+…
4. Siga a dica passada anteriormente, ativando uma senha para compra de aplicativos. Eu mesmo já perdi 30 dólares nisto.

 

7) Detalhe do aplicativo
Para consultar informações sobre um aplicativo especifico, abra o menu “apps” (todos os aplicativos), toque e segure o icone do aplicativo.
Dois ícones irão aparecer na tela: um de “lixeira” (que você pode usar para desinstalar” e um de “informações”. Basta arrastar até informações. Bastante útil se desejar limpar o cache (histórico armazenado) do aplicativo e até mesmo, apagar os dados do aplicativo (manter sem seus dados, como se tivesse instalado sem configuração alguma).
Caso esteja com pouco espaço de armazenamento no aparelho, com esta dica de “atalho”, é também possível mover o aplicativo para o cartão de memória, por exemplo.

 

8) Verifique consumo de rede e bateria
Você não precisa instalar nenhum aplicativo extra de controle de consumo de bateria e rede. Em “settings“, toque em “Data Usage“, estipule o limite de dados (de acordo com seu plano) e uma faixa de aviso de proximidade do limite.
Confira a lista de aplicativos que mais vem consumindo rede – dependendo do aplicativo, por ele mesmo é possível configurar para que “sincronize” dados somente por wifi. A mesma coisa pode ser feita pelo google play – marque a opção para atualizar pela rede wifi.
Para a bateria, temos algo semelhante; ainda em “settings“, vá para “Battery” e ali você acompanha quais os aplicativos que tem consumido mais energia. Há varias ações que podem ser tomadas para economia de energia, como desabilitar dados, sincronismo, brilho da tela, etc, etc.
Cabe também um novo post específico para este assunto. O importante aqui passado como dica é utilizar as informações nativas no próprio aparelho, que auxiliam no entendimento daquilo que pode estar acontecendo.
O consumo exagerado de bateria e rede 3g é um grande vilão, pode te custar dinheiro e dependendo do caso, te deixar na mão na hora que mais precisa.

 

9) Root ou não root… eis a questão
Sabe o que é root? Não? Então você não precisa. O que é? É um acesso de administrador, é possível fazer tudo e qualquer coisa no aparelho, inclusive “estragar” o sistema. Se não tem certeza se realmente precisa ou se não há uma necessidade justificável e indispensável para isto (não poderá conviver sem?), não faça. Há inúmeros riscos envolvidos, se fizer uma bobagem, pode até danificar os sistema do aparelho. Como diria um amigo, “é como dar uma arma na mão de um macaco”.

 

10) Aplicativos em execução
Se não irá utilizar mais o aplicativo, feche o mesmo pelo botão voltar. Não pense que ao tocar no botão “home” estará fechando o aplicativo, pois na verdade o aplicativo fica “minimizado”. Para encerrar em definitivo um aplicativo “minimizado”, em alguns celulares você segura apertado o botão home, até aparecer os aplicativos em background. Em alguns outros aparelhos, inclusive alguns tablets, há um botão virtual ao lado do botão home, que justamente faz isto – mostra os aplicativos em memória. Para fechar cada um destes aplicativos, toque em cada um e deslize o dedo para o lado. Notará que o mesmo sairá da lista.
Manter muitos aplicativos abertos pode ser prejudicial, pois poderá consumir muita memória e ocasionar até em lentidão ou travamento.

 

Que tal complementar esta lista de dicas? Há alguma informação que gostaria de complementar, ou que não esteja muito claro?

Então, deixe seu comentário…

 

Até a próxima!

Introdução à virtualização de Desktop

      4 comentários em Introdução à virtualização de Desktop

O que é Virtualização de Desktop e quais as vantagens?

O termo virtualização e seus softwares de virtualização são comuns e muito conhecidos entre as pessoas de tecnologia, mas a maioria das pessoas que são usuários normais não tem idéia disto e não sabem como obter algum benefício sobre a solução. Este público acaba perdendo a oportunidade de utilizar as vantagens oferecidas por alguns softwares de virtualização, inclusive gratuitos.

Aqui vou especificar algo voltado para um usuário doméstico, um usuário comum, aquela pessoa que utiliza em sua casa um computador pessoal.

O conceito é simples, e se refere à virtual machine, ou  “máquina virtual“, um desktop virtual. Um software de virtualização de desktop te fornece a capacidade de instalar e executar um ou mais de um sistema operacional em seu computador desktop ou notebook num ambiente “virtual”, sem interferir no sistema que voce já utiliza. O termo utilizado para estes computadores é “host“, como sistema operacional fisico (aquele que voce usa) e “guest“, como o sistema operacional virtual.

Imagine por exemplo, que voce utiliza um computador com windows 7 (host), e dentro dele instala um linux, um windows 8, um windows xp – estes todos como guest, ou seja, virtuais. Estes sistemas operacionais “virtuais” (guest) não afetam o seu sistema principal, entram como se fosse um software normal. Claro que a sua memoria fisica, seu disco e seu processador são compartilhados com estes outros sistemas, e sendo assim, recursos disponiveis podem ser escassos. Quando me refiro em afetar um sistema, estou querendo dizer no sentido de não danificar ou corromper algum outro software que esteja instalado em seu computador – por exemplo, que algum software deixe de funcionar.

Criar ou configurar uma máquina virtual é muito semelhante a uma montagem de um computador físico, onde voce tem um processador, uma memória, um disco rigido, uma placa de rede, uma placa de video, etc, etc.

Algumas pessoas utilizam o dual boot para utilizar mais de um sistema dentro de um computador. O dual boot é feito na inicialização do sistema, onde uma opção de sistemas disponiveis são apresentadas e o usuário seleciona um. Virtualização de desktop NÃO é dual boot, voce inicia um sistema operacional direto do seu sistema, sem a necessidade de reiniciar o computador host.

Hoje existem ótimas opções de softwares para virtualização de desktop, inclusive cito aqui as gratuitas, voltadas para o usuário doméstico: vmware player e virtualbox, da Oracle. Há ainda o microsoft virtualpc, utilizado bastante quando dentro do windows se necessite do xp mode.

 

Quais as vantagens de utilizar um sistema virtualizado, ou melhor, um desktop virtualizado?

  • Mais de um sistema operacional executando no mesmo tempo, no mesmo computador;
  • Ter um sistema operacional isolado de um ambiente de sistema “hospedeiro” (host);
  • Possibilidade de testar e conhecer outros sistemas operacionais diferentes do que está utilizando atualmente;
  • Utilizar um sistema mais leve e mais enxuto com algum software diferente – por exemplo, um software que só funciona num determinado sistema, que é diferente daquele que voce tem instalado;
  • Obter um recurso de instantâneo, onde você facilmente pode desfazer uma alteração no sistema, ou então, adiantar pra uma versão de imagem mais nova – como fotos, que voce tira a qualquer instante, volta no passado ou escolhe uma foto mais nova, falando de forma mais simples.
  • Economia: voce não precisará de 2 computadores fisicos na sua casa, cada um com um sistema diferente, cada um consumindo energia – tenho dois computadores dentro de um só.
  • Backup simples: uma copia dos arquivos de uma máquina virtual dentro de uma hd externa, por exemplo;
  • etc,etc, etc…

 

Há outras vantagens, cito as principais para um usuário documéstico que tem interesse em conhecer a virtualização.

Dentro das empresas, ou para uso profissional, existem outras vantagens, outros softwares e outras versões, em destaque, o Microsoft Hyper-V, que é instalado num servidor microsoft windows server. Mas aqui, o foco é voltado para algo mais simples, para um usuário comum utilizar algo em sua residência, como já citado aqui.

Uma dica importante, caso queira se aventurar na virtualização. Tenha um computador moderno, com um processador rápido, bastante memória e espaço em disco livre, por que haverá o compartilhamento de muitos recursos e ninguém gosta de lentidão ou travamentos.

 

Deixo aqui os links de dois softwares de virtualização que considero bons.

Nestes links, além de baixar as últimas versões dos softwares (versões gratuitas), você também tem todo um material didático que reforça tudo aqui que falei aqui.

 

Um exemplo de virtualização de desktop, usando o virtualbox sobre a instalação de windows 8, está disponivel aqui, num outro post meu.

Nativamente, nas versões mais novas do windows, é possivel anexar um disco virtual (vhd) no gerenciador de discos. Mas aí, cabe um outro post mais detalhado.

 

Adianto que virtualização de desktop, não é nenhum bicho de 7 cabeças.

O assunto é longo, acho que deu para perceber, aqui deixo um resumo que possa ser um inicio a quem interesse buscar algo assim.

 

Utiliza virtualização em seu computador pessoal?? Há alguma vantagem importante que não foi citada aqui e que merece ser lembrada? Deixe seu comentário!

 

 

 

 

Compensa ter um Kindle?

      6 comentários em Compensa ter um Kindle?

Para alguns, a primeira pergunta a ser questionada é: “O que é Kindle”?

O Kindle é um dispositivo de leitura de livros digitais produzido e comercializado pela Amazon.

Uma segunda questão a ser feita é: “O kindle é um tablet?”.

Para quem não conhece, outras perguntas vem na sequência, como “um tablet também não lê livros digitais?”, “por que ter um, se meu tablet também tem esta função?”, “um tablet é mais completo, tem mais funções!”… e assim, outros questionamentos vem sempre a cabeça.

Pra começar, um kindle não é tablet. Não concorre com um ipad, nem com um android tablet ou qualquer outro tablet do mercado. Justamente porque são segmentos diferentes, para uma utilização “diferente”.

Então, quais seriam os principais concorrentes do Kindle, no segmento? Hoje temos o Kobo reader (que aqui no Brasil está sendo comercializado pela livraria cultura), o Sony eReader e o Nook da Barnes & Noble.

Um kindle, assim como qualquer eReader foi concebido para leitura de livros digitais. Tenha em mente isto.

Aqui, vou entrar naquilo que na minha opinião ele tem de melhor: a tecnologia e Ink®, ou melhor, “tinta eletrônica”. Existem modelos que mais se assemelham com um “tablet”, como tela colorida em alta definição, com iluminação, reprodução de audio, navegação de internet, acesso a emails, e até mesmo o sistema “Android”.

Não entro nestes detalhes de eReaders mais completos e complexos, mesmo porque estão próximos da concepção de Tablet. Pra mim, estão mais pra tablets do que pra eReaders.

Como falei, vou me referir ao básico, ao simples, à sua concepção mais pura. Sim, tela sem iluminação, usando a tinta eletrônica. Não vou também comentar sobre o Kobo ou o Sony, porque o post pode ser muito extenso.

Uma observação: Se você gosta de ler no escuro e a iluminação da tela é essencial, neste caso, o sugerido é o Kindle Paperwhite.

Vamos retornar ao básico. Vou a prática, pela minha experiência, direto ao ponto. Tenho um smartphone, tenho um tablet, tenho notebook e trabalho com 2 monitores. No trabalho, a maior parte do tempo estou na frente de um monitor; no horario fora de trabalho, em casa ou nos meus estudos e pesquisas, estou ali, de novo com um monitor – entenda como, notebook, tablet ou pc… Faço muita leitura, e minha vista vive cansada. Nos momentos livres, a leitura de um livro vai bem. Num tablet, minha vista se cansa rápido, justamente pelo brilho e pela luz emitida da tela. Mesmo reduzindo o brilho, luminosidade, fundo da tela, tipo de fonte… A vantagem do kindle pela minha experiencia é que não cansa a vista. A tinta eletrônica (e ink) se projeta sobre a tela “branca” e a sensação de leitura é a mesma da leitura de um livro em papel. Só neste ponto, já valeu ter um kindle pra mim.

Se você lê poucas páginas de um livro num tablet, coisa de 5 minutos, talvez não sinta nenhum tipo de desconforto como eu citei. Ou, se você não convive com monitores os dia inteiro e boa parte da noite, também não saiba o que é desconforto visual.

Neste caso, tenha um Tablet, use um “tudo-em-um”. Leia emails, navegue na internet, acesse suas redes sociais, seus jogos, veja suas fotos, etc, etc, etc. Até mesmo leia livros neles; a questão é que minha intenção não é tentar convencer a nada.

Quais os grandes diferenciais num Kindle?

Pela minha experiência e meu uso:

  • Leitura mais confortável com o uso da tinta eletrônica;
  • A luz direta do sol ou de uma luminária não afeta a leitura – sem reflexo!;
  • Muito leve: muito mais leve que um livro, muito mais leve que um tablet;
  • Tamanho reduzido, transporte para qualquer lugar a sua biblioteca digital;
  • Duração de bateria (mais adiante vou fazer um comparativo);
  • Sua biblioteca com seus livros no seu aparelho;
  • Facilidade de aquisição de livros;
  • Facilidade em transferir livros ao dispositivo (via e-mail, por exemplo);
  • Sincronismo de conteúdo e marcadores com diversos aparelhos via software – vou explicar a seguir;
  • Possibilidade de alterar o tipo e/ou o tamanho da letra;
  • Custo baixo: um kindle básico custa USD 69.

 

A Amazon disponibiliza um aplicativo (chamado Kindle) para seu tablet ou smartphone, seja ele da apple ou android. Então, é possivel ler seu livro num tablet convencional, num celular ou até mesmo pelo computador. Com o sincronismo, o equipamento Kindle ou o software Kindle estão “integrados”. Exemplificando, se você está lendo um livro no seu celular e depois ler num kindle, o kindle irá posicionar na página onde você parou no celular. Então, se a noite você leu um livro no seu tablet e durante o dia resolveu retomar a leitura em outro aparelho (num Kindle, por exemplo), ele irá posicionar no ponto do livro onde parou.

Sobre a duração de bateria…

Comparando a duração de bateria, pra ter uma idéia, segundo a Amazon, a autonomia de bateria é:

  • Laptop = 5 a 9 horas
  • Tablet = 5 a 10 horas
  • Smartphone = 4 a 13 horas
  • Kindle = 4 semanas (1 mês!)

Esta variação de tempo de bateria é meio ampla para os dispositivos, justamente porque cada marca, modelo, tem sua duração de bateria como uma variável. Se levar em conta o tempo máximo, veja que a duração de bateria de um Kindle (comum) é insuperável.

Conclusão: Se você gosta muito de ler, o Kindle é uma boa pedida, e a grande sacada dele é substituir o livro em papel. A leitura nele é extremamente agradável. Se não gosta muito de ler, ou lê livros com baixa frequência, definitivamente um Kindle não é uma boa aquisição. Se está satisfeito com a mobilidade de seu tablet e acha que a leitura nele é confortável, continue com seu tablet. Pessoalmente, eu tenho um kindle, que pro meu uso, complementa meu tablet, assim como meu celular complementa meu tablet ou meu tablet complementa meu celular.

Ok, esta analogia do celular complementando o tablet talvez seja meio “estranha” (hehe).

 

 

Estarei preparando um novo post, onde explicarei como é simples transferir seus livros ao dispositivo, como funciona a entrega e armazenamento de livros pela Amazon – a sua “biblioteca” de livros disponíveis na nuvem da amazon.

 

E ainda quero falar sobre um serviço excelente de automação gratuita – principalmente de livros – conversão e envio de livros ao kindle, via dropbox, e de forma automática.

 

Quer complementar com alguma informação interessante? Deixe seu comentário, com certeza tem vários pontos que ficaram faltando aqui…

Script: Criar sinonimos para todas as tabelas de usuário

Um synonym (ou sinônimo) de banco de dados é um objeto utilizado para servir nos seguintes propósitos:

  • Fornecer um nome alternativo para outro objeto de banco de dados, referindo-se a um objeto de base que pode ser existente no servidor local ou num servidor remoto;
  • Fornecer uma camada de abstração que “protege” uma aplicação client de mudanças no nome ou locação do objeto base.

 

Na prática, seria como um “alias”, um “apelido” – de uma forma genérica e grosseira. Pode ser bem útil quando você utiliza um linked server e quer “encurtar” a cláusula “from”.

Escreverei num próximo artigo o que vem a ser um “linked server” com maiores detalhes, mas para entender melhor e simplificando o artigo, resumo de forma superficial que o “linked server” é um tipo de conexão remota a outro servidor de banco de dados.

Normalmente você faz uma query simples usando no “from” o nome da tabela. Se a tabela estiver em outro banco de dados, você utiliza “banco.schema.tabela”. Por exemplo:

select campo from tabela

ou

select campo from banco.schema.tabela

Até aí, tudo bem. Inclusive aqui já posso exemplificar como usar dentro do mesmo servidor de banco de dados o sinônimo  Por exemplo, no ultimo codigo, ao invés de escrever “banco.schema.tabela”, voce pode escrever apenas “meuSinonimo”.

select campo from meuSinonimo

 

Num linked server, você informa “servidor.banco.schema.tabela”. Da mesma forma que expliquei acima, voce pode trocar tudo isto por apenas um “sinônimo”.

O comando básico para criar um sinônimo é este:

use <banco>; 'Banco onde voce vai USAR o sinonimo em queries
go
create synonym <meuSinonimo>
for servidor.banco.schema.tabela;

 

Então, ao invés de se referenciar a “servidor.banco.schema.tabela”, voce apenas se referencia ao nome que quiser (sinônimo). Seu código fica mais limpo.

Vamos mais longe nesta análise, e é aí que entra o contexto deste artigo. Imagine se você tiver que criar um sinônimo pra cada tabela do seu banco de dados! E se houver umas 500, 1.000 tabelas?

Neste caso, crie uma stored procedure para geração automática de todos sinônimos, um pra cada tabela.

Esta stored procedure faz primeiro o drop de todos sinônimos e depois cria tudo de novo. É interessante, pois você pode executar quantas vezes quiser, por exemplo, se houver alguma(s) tabela(s) nova(s) e que ainda não tem um “sinônimo”.

Outra particularidade: aqui eu sugiro usar um prefixo pro sinônimo: ao bater o olho no script, você sabe que ali há uma referencia de um sinônimo, não corre o risco de ter um sinônimo de uma tabela que já existe com o mesmo nome.

 

CREATE PROCEDURE GeraSinonimos
as
DECLARE @dynsqlcmd VARCHAR(250)
 DECLARE @tblname VARCHAR(150)
 DECLARE @synname VARCHAR(150)
 DECLARE @cnter INT

 -- Drop all synonyms
 DECLARE dbcursor CURSOR FOR
  SELECT sysobjects.name AS 'table name' 
  FROM sysobjects 
  WHERE sysobjects.type = 'sn'

 OPEN dbcursor

 FETCH NEXT 
  FROM dbcursor 
  INTO @synname 
 WHILE (@@FETCH_STATUS =0)
  BEGIN
   SET @dynsqlcmd = 'DROP SYNONYM [' + @synname + ']'

   EXEC (@dynsqlcmd)

   FETCH NEXT 
    FROM dbcursor 
    INTO @synname
  END

 CLOSE dbcursor
 DEALLOCATE dbcursor

 -- Create Synonym
 DECLARE tblnmcursor CURSOR FOR
  SELECT sysobjects.name AS 'table name' 
  FROM CMSQNXTTESTSQL.PlanData_Dev.dbo.sysobjects 
  WHERE sysobjects.name <> 'dtproperties' 
   AND sysobjects.name <> 'sysdiagrams' 
   AND sysobjects.type IN ('u','v')

 OPEN tblnmcursor

 FETCH NEXT 
  FROM tblnmcursor 
  INTO @tblname 
 WHILE (@@FETCH_STATUS =0)
  BEGIN
   SET @synname = 'Any Prefix' + @tblname
   SET @dynsqlcmd = 'CREATE SYNONYM ' + @synname + ' FOR [Server Name].[Database Name].dbo.[' + @tblname + ']'

   EXEC (@dynsqlcmd) 

   FETCH NEXT 
    FROM tblnmcursor 
    INTO @tblname
 END

 CLOSE tblnmcursor
 DEALLOCATE tblnmcursor

 

 

Pronto. Dessa forma você tem um procedimento automático de geração de sinônimos.

Já precisou de algo assim e nunca utilizou? Alguma experiência prática do caso?

 

 

SQL Server: Erro de replicação merge por lock

Se sua replicação do tipo “merge” teve o sincronismo parado e apresenta um erro referente a transação que gerou um deadlock, você se depara com uma situação relativamente incomum, mas não necessariamente rara.

Ao tentar um “reinitiaize subscription” com a geração de um novo snapshot, o mesmo erro persiste.

A mensagem de erro em inglês apresentada é “Message: Transaction (Process ID <id>) was deadlocked on lock resources with another process and been chosen as the deadlock victim. Rerun the transaction.“.

Claro, o “id” do processo é uma variável do seu ambiente.

Como resolver? Aqui segue a dica, válido tanto para as versões do MS sql server 2005 como para o MS sql server 2008 R2.

Na versão do MS sql server 2012, não testei ainda.

 

Segue a receita do bolo:

1. Se o agente estiver em execução, pare (na aba “agents“, dentro do replication monitor);

2. Pare o sincronismo (na aba “All subscriptions“, também no replication monitor);

3. Abra o SQL Server Management Studio e digite o seguinte código:

use <seu_banco_de_dados_replicado>
go
exec sp_helpmergepublication @publication = '<nome do seu publisher>'

4. Anote o “número” apresentado na penúltima coluna, campo “generation_leveling_threshold” . GUARDE este número.
5. Altere o valor deste campo para zero, conforme este código:

exec sp_changemergepublication @publication = '<nome do seu publisher>' 
, @property = 'generation_leveling_threshold' 
, @value = 0

6. Se desejar executar o comando dado no passo 3 para conferir o valor alterado, é um opcional.
7. Gere um novo snapshot (agora deve funcionar, veja pelo status do agente, na aba “agents” do replication monitor;
8. Assim que terminar a geração do novo snapshot, altere novamente o valor do campo “generation_leveling_threshold“, na mesma forma do passo 5, mas ao invés de 0, altere para o mesmo número anotado no passo 4.

exec sp_changemergepublication @publication = '<nome do seu publisher>'
, @property = 'generation_leveling_threshold'
, @value = <o numero que voce guardou no passo 4>

9. Inicie a sincronização e acompanhe.

Isto tudo deve fazer com que sua merge replication volte a funcionar.
Nos primeiros sincronismos, dependendo da sua rede e de quanto desatualizado estiver, é possível que o processo efetivado seja demorado, que dê algum timeout. Mas não se preocupe, o erro apresentado estará resolvido.

 

Gostaria de complementar com alguma informação? Deixe seu comentário, é sempre bem vindo.

Converter datetime2 em datetime

      Nenhum comentário em Converter datetime2 em datetime

Vou tentar explicar de forma bem grosseira o cenário.

Até a versão do SQL Server 2005, havia apenas uma forma de trabalhar com dados do tipo de data: “datetime“. Sempre você armazenava data e hora no mesmo campo.

Com a evolução do SQL Server e com as novas necessidades de mercado, surgiram “date” e “datetime2” (tudo bem, inúmeras outras inovações também surgiram dentro do software). “Date“, como é óbvio, armazena apenas data, e não mais horas junto. Realmente é interessante, porque nem sempre é necessário armazenar a informação das horas. E “datetime2“? Oras, foi necessário aumentar a precisão de horário para nanosegundos e aproveitaram para ampliar os limites de datas.

Vou exemplificar.

Range de Limites:

  • DateTime2 trabalha no range: 01/01/0001 até 31/12/9999 (com precisão de 100 nano segundos)
  • DateTime trabalha no range: 01/01/1753 até 31/12/9999 (com precisão de 0.00333 segundos)
  • Date trabalha no range: 01/01/0001 até 31/12/9999 (e NÃO trabalha com tempo – horas, minutos e segundos).

 

O datatype “DateTime” foi mantido mesmo com as novas versões do sql server, justamente para garantir a compatibilidade nas migrações.

E a questão do armazenamento? Como fica?

No armazenamento:

  • “DateTime2” ocupa de 6 a 8 bytes.
  • “DateTime” ocupa 8 bytes.
  • “Date” ocupa apenas 3 bytes.

Se você precisa, por exemplo, armazenar a data de nascimento, porque precisa usar datetime ou datetime2?

Pode parecer um ganho insignificativo, mas, numa tabela de centenas de milhares de clientes, pode fazer alguma diferença. Em alguns casos, dependendo do tamanho da organização, a diferença pode ser enorme.

Não havendo necessidade de tamanha precisão ou se for parte da regra de negócio trabalhar com um range de datas que cabem dentro de um campo do tipo date ou datetime, minha recomendação é que não utilize o datetime2.

No software, faça a consistência dos dados no input! Não deixe a validação de lado.

 

Vamos imaginar que há uma necessidade de uma conversão “forçada”, onde deve ser necessário MIGRAR seus dados e que tenha sido feito um acordo formal onde as datas fora do range devam ser nulas, e sendo assim, converter um campo datetime2 para datetime ou, de datetime2 para apenas date, é possível criar uma função para a conversão.

Sim, uma função escalar, de usuário. Até o momento não é possível converter um datetime2 para datetime com as funções de sistema: cast e convert, porque são datatypes incompatíveis para esta conversão.

 

** ATENÇÃO: Em nosso papel dentro da tecnologia da informação, JAMAIS devemos tentar mascarar informações por mais erradas que elas possam parecer! Se houve um erro de digitação, se a aplicação não fez sua validação, NÃO devemos corrigir por conta própria a informação, a não ser se seja firmado um acordo formal e oficial desta operação, atendendo a regra de negócio! Tenha uma autorização da operação por escrito e assinado. Em projetos de ETL para fins de abastecimento de dados para um datawarehouse, a informação deve ser levada na íntegra, sem hard code, sem alterações de dados. Um datawarehouse NÃO deve ser usado para corrigir problemas em softwares.

 

No caso de problemas identificados como erro de digitação, tente fazer com que o responsável pela informação atualize os dados pelo software. Depois, implemente a correção via software. Quando tudo estiver correto, atualize o tipo de dado de sua tabela. Contribua com a qualidade dos dados.

 

Segue a função escalar que trata a conversão de datetime2 para datetime. Faça sua adaptação se necessário, mas lembre-se da observação acima: NÃO tente corrigir erros de digitação na origem de dados, como é feito neste exemplo (se fora do range, retorno nulo).

 

CREATE FUNCTION [dbo].[converte_datetime2] 
(
      @data DATETIME2
)
RETURNS datetime
AS
BEGIN
      DECLARE @Result datetime

      select @result =  case 
                                         when (year(@data) < 1754 or year(@data) > 9998)
                                         then null 
                                         when (month(@data) < 1 or month(@data) > 12)
                                         then null
                                         when (day(@data) < 1 or day(@data) > 31)
                                         then null
                                         else CAST(
                                               convert(varchar(4), month(@data)) + '/' +
                                               convert(varchar(4), day(@data)) + '/' +
                                               convert(varchar(4), year(@data) )
                                               as datetime)
                                   end
      return @result
END

 

Simples, e inclusive exagerada a forma como é tratada a conversão. Se houver alguma informação fora do range, note que o retorno é nulo. Se ao invés de nulo preferir algum valor especifico (um default), só acertar no script.

Ainda persiste alguma dúvida ou tem alguma sugestão diferente para tratar isto? Já passou por algo assim algum dia? Nunca se sabe o dia de amanhã. Fique a vontade para deixar seu comentário. Até a próxima!

 

Armazenamento Online – Parte 1

      Nenhum comentário em Armazenamento Online – Parte 1

Para uso pessoal, as primeiras coisas que vem em nossa mente quando falamos em backup de dados pessoais são (ou eram!):

  • Midia (cd/dvd)
  • HD externa

Normalmente se mantém os arquivos originais dentro do computador e para garantir o backup, a maioria das pessoas pensam em manter num dos dois meios citados acima, ou então nos dois meios. Estes meios são relativamente vulneráveis a danos causados a problemas externos, desde uma simples queda da hd externa, até riscos em midias, deterioração, etc.

Com a utilização de “computação móvel”, um celular ou tablet passaram a ter armazenados dados importantes que também precisam de backup. O método mais simples – embora nada prático, é apenas sincronizar o aparelho com um pc e ter seus dados transportados.

Hoje é bastante comum utilizar a nuvem como um meio de backup, tanto para pc´s, como para celulares e tablets. Esta é uma prática simples, prática e eficiente.

Quando se pensa em armazenamento de dados online (em nuvem), a idéia é não apenas armazenar dados para utilização em qualquer local (como compartilhamento), mas também como um meio de backup, uma forma alternativa de guardar seus dados importantes num local “seguro”. Adicionalmente, temos a vantagem da facilidade em compartilhar estes arquivos entre outros usuários.

As opções mais conhecidas hoje para armazenamento online são:

  • Dropbox
  • Box.com
  • Skydrive (Microsoft Live)
  • Google Drive
  • Ubuntu One
  • icloud (para equipamentos Apple)

 

Todos estes tem suas versões free (com limitações), alguns com a opção de sincronismo automático e todos eles permitem utilizar os serviços via navegador web e via dispositivo móvel. O que temos em comum entre eles é o fato de conseguir expandir o espaço de armazenamento através de um pagamento extra. Se o espaço disponível na versão free é o suficiente, é possível utilizar sem nenhum problema, desde que atenda as suas necessidades.

Até aqui, nenhuma novidade, certo?

Quando o espaço necessário é maior do que o espaço fornecido, então cabe fazer sua opção de serviço e de compra. Será que o serviço oferecido/pago é todo suficiente e o valor pago é justo? A grande maioria das pessoas acredita que sim.

 

Vamos a alguns valores médios para expansão (lembrando que preços e promoções podem entrar em vigor a qualquer momento):

  • Google Drive 20gb: USD 2.50/mes
  • Windows Live SkyDrive 20gb: R$ 19/ano
  • Dropbox 50gb: USD 9.99/mes
  • Ubuntu One 20gb: USD 2.99/mes
  • iCloud 20gb: USD 40/ano
  • Box.com 25gb: USD 9.99/mes

 

Os valores variam de acordo com o espaço contratado, sua melhor escolha para expansão é aquele que te proporciona uma maior conveniência no uso e que esteja de acordo com o seu bolso. Mas, existem alguns outros serviços, outras opções que nem são tão popularmente conhecidas e que talvez vale a pena conhecer.

Um ótimo serviço de armazenamento online é o da Amazon, o Amazon S3 (Simple Storage Service). O único detalhe é que para um usuário leigo, a forma de cobrança pode ser meio confusa.

Outras opções que valem a pesquisa: adrive.com, SugarSync.com, mimedia.com

Não recomendado: JustCloud (alguns amigos tiveram problemas no serviço, no suporte técnico, na cobrança e posteriormente, no cancelamento).

 

Claro que estes tipos de serviços estão em pleno crescimento, de um dia pro outro vão se tornando melhores e mais populares. Diante de tantas opções e tanta concorrência, ainda há uma possibilidade de aparecer algo mais novo e mais completo.

O que pensa sobre isto?

Qual solução de armazenamento online/backup está utilizando no momento?

Deixe sua resposta, participe!

Big Data, Datawarehouse e BI

      Nenhum comentário em Big Data, Datawarehouse e BI

Podemos estabelecer uma relação entre Big Data, Datawarehouse e Business Intelligence?

Este é um assunto muito polêmico.

De qualquer forma, são assuntos vitais para que as empresas possam ter um diferencial competitivo. Precisamos inicialmente entender os conceitos de cada um para tentar compreender até que ponto há uma relação entre eles.

De forma rápida, grosseira e suscinta:

  • Big Data: Gigantesco volume de dados, disponíveis em grande velocidade, de altíssima variedade e de forma complexa. Segundo gartner: volume, velocidade, variedade e complexibilidade.
  • Datawarehouse: Armazenamento de dados consolidados, relacionados e organizados de diversas fontes.
  • Business Intelligence (BI): É uma tecnologia que tem como conceito básico a entrega da informação coletada a partir de dados do seu datawarehouse, de forma exata e útil para a tomada de decisões.

Podemos também tentar resumir o termo “big data” pelos 5V´s: Velocidade, Volume, Variedade, Veracidade e Valor.

Segundo um estudo feito pela IBM, em 2008 mais de 2 quintilhões de bytes foram produzidos todos os dias e 90% dos dados no mundo foram criados nos últimos dois anos. A previsão que em 2015 (daqui a 3 anos) chegaremos a quase 8 zettabytes. Pra ter uma idéia, 8 zettabytes são apenas 8.000.000.000.000.000.000.000 bytes.

As origens de dados do Big Data vem de todos os lugares e de todas as formas: sejam de um localização de um GPS, de documentos, emails, imagens, gravações de logs, de videos e mensagens instantâneas, redes sociais, etc. Surgiu na década passada mas nos últimos anos vem ganhando um força impressionante.

Muitas empresas tem utilizado Big Data a seu favor, fazendo uma análise avançada de dados vindo de um ambiente externo (significa que a análise não é apenas vindo de dentro dela mesmo) para apoio a tomada de decisão, de forma estratégica.

Por cima, concluimos e notamos algo em comum nisto tudo: “dados que são utilizados para tomadas de decisões”.

Na organização de dados visando a análise, podemos classificar como:

  • Estruturados (bancos de dados corporativos relacionais)
  • Semi estruturados (arquivos de logs de servidores, por exemplo)
  • Não estruturados (não relacionais, fora do ambiente corporativo e de inúmeras fontes e de várias formas e meios diferentes)

O Datawarehouse é um meio de organização de dados que resulta num modelo estruturado. Visa a precisão e qualidade dos dados e pela complexibilidade na consolidação destes dados, é gerado a partir de um processo que é demorado e que conceitualmente fornece informações de passado, até o dia de ontem (d-1). O modelo de um datawarehouse não é volátil, é construido para atender uma forma pré determinada.

Big Data é um meio variado de altíssimo volume de dados que resulta num modelo não estruturado. Visa a rapidez na coleta, que tanto serve para visualizar o passado como o que acontece em tempo real. Em outras palavras, é algo muito mais escalável, podendo ser volátil ou não.

O mercado de Big Data vem crescendo cada vez mais, cerca de 40% ao ano. A realidade atual nos mostra que na área de tecnologia da informação, faltam profissionais qualificados e a previsão para os próximos anos é que serão necessários ainda mais profissionais para atender a demanda, uma vez que cada vez mais as empresas estarão adotando Big Data.

Surge um novo perfil, um novo cargo dentro das empresas, que é o “Cientista de dados”.

Observação: Para quem pensa que o conhecimento de Matemática e Estatística não é algo tão importante dentro da tecnologia da informação, saiba que está comentendo um tremendo equívoco.

 

Concluindo, em meu ponto de vista, há pontos em comum entre Big Data e Business Intelligence, mas a principio não há como ter algo que possa unificar as duas visões por se tratar de processos e métodos de conceitos diferentes. Ainda segundo meu ponto de vista, um complementa o outro, ambos são úteis e importantes, cada vez mais as grandes empresas adotarão estas análises e visões, gerando um diferencial no mercado em relação à concorrência.

Em outras palavras, o meio difere pela característica da origem, mas o fim é comum: visa a tomada de decisões.

Esta é minha opinião.

 

O que pensa sobre o assunto? São várias óticas sobre a teoria e a prática, existem controvérsias e polêmicas quando se pensa em tecnologia e negócio.

 

Participe, deixe seu comentário.