terça-feira, 5 de janeiro de 2016

Aprendendo Go Lang

Aprendendo GO Lang

Final do ano de 2015 fui a um curso de GO Lang na Google e gostei da linguagem e esse ano uma das metas é aprender essa nova linguagem de programação que parece ser uma tendência, pois grandes empresas já estão migrando seus projetos para GO.

Empresas utilizando GO
https://github.com/golang/go/wiki/GoUsers

O que me chamou atenção é o material fornecido para aprendizado que o google disponibiliza no site:
https://tour.golang.org/welcome/1


Na minha opinião é muito fácil de intuitivo o site, ou seja, se tiver interesse e compromisso você vai aprender essa linguagem sem sair do site.

Comparativo de Perfomance com outros linguagens:
http://www.techempower.com/benchmarks/#section=data-r9&hw=i7&test=json

Eu comecei um projeto utilizando GO e tudo que eu achar que vale a pena compartilhar vou colocando aqui no blog.

Abraços e até a próxima.


2016 - Nono Ano + Novas Metas



Feliz 2016

Começa um novo ano e com ele surgi novos objetivos e metas, passei o ano novo no Rio de Janeiro com minha família e foi sensacional e após essa viagem surgiu uma nova idéia de projeto que vou colocar no back log de 2016.

Assim que começou o ano eu montei minha agenda semana para me ajudar a conquistar minhas metas, basicamente ela se resume no seguinte:
1- Certificação
2- Projeto OpenSource ( GO, Cassandra e React)
3- Projeto Particular ( React, REST, Java, MySQL)
4- Atividades Físicas
5- Estudos de Línguas

E teoricamente era para ter iniciado essa agenda ontem, porém vida de casado não é tão simples, ontem mesmo tive que levar minha cachorrinha para o veterinário e ficamos duas horas por lá. Felizmente não é nada sério, ela deve ter pego alguma alergia no RJ e estava se coçando muito. Ou seja minha agenda de ontem foi por água abaixo, mas vamos se adaptando e não perder o foco e nem desanimar.

Desejo a todos vocês um excelente ano com muitas conquistas, a melhor forma de conquistarmos nosso objetivo é a organização + comprometimento.

Lets GO!  

quarta-feira, 13 de maio de 2015

Presente Kindle

Olá pessoal, ganhei um Kindle da minha linda esposa Tatiane!!! É incrível como meu motivou mais a leitura, fazia muito tempo que eu não terminava de ler um livro por completo, e semana passada consegui finalizar um excelente livro chamado "Agile". Estou muito empolgado com a leitura, por enquanto vou dar foco a leituras com foco em Agile, pretendo tirar certificação até o mês de Junho de Scrum Master.
Essa semana inciei a leitura de outro livro muito bom chamado "Como mudar o mundo, gestão 3.0", é bem interessante e útil para aplicar no nosso dia a dia, ele nos ajuda a lidar com pessoas resistentes a mudança. Acredito que finalizo essa leitura até sexta-feira, em seguida vou ler um próprio para certificação, conforme o andamento dos meus estudos vou compartilhando com vocês.

O detalhe importante que os livros custam metade do preço.

Para finalizar esse post, quero agradecer minha esposa pelo incrível presente, que além de ser moderno também melhorou meu hábito para leituras e a cada página virada enriquece minha vida. Obrigado!

Abs.






Livro Agile:
http://www.casadocodigo.com.br/products/livro-agile





quinta-feira, 7 de maio de 2015

Oracle - Too many values

Olá pessoal, estou viajando muito a trabalho e acabei ficando sem tempo para fazer novos posts. Não vou desanimar não! 

Vamos um erro que não é difícil, mas na minha opinião a descrição dele não é clara e fiquei um pouco perdido até encontrar o motivo.

Erro de SQL: ORA-00913: valores demais
00913. 00000 -  "too many values"
*Cause:    
*Action:

O motivo é que informei uma quantidade de campos maior do que existem na minha tabela.

Ex:
>TabelaCliente
   colunaNome
   colunaIdade

Insert:
insert into TabelaCliente(Select nome, idade, CPF from pessoa);

O erro ocorre porque minha TabelaCliente tem apenas 2 colunas e estou informando 3.

O correto:
insert into TabelaCliente(Select nome, idade from pessoa);


Encontrei o motivo do erro no site baixo:
http://www.techonthenet.com/oracle/errors/ora00913.php



O site da oracle é rico em conteúdo, vale a pena conferir.
http://docs.oracle.com/cd/B28359_01/index.htm

Tchau e até logo.

segunda-feira, 13 de abril de 2015

SQL SERVER - Connection refused: connect

Olá pessoal, hoje me deparei com um erro chato ao tentar me conectar com o SQL SERVER.

Uma simples string de conexão não conectava o banco, então eu desabilitei o firewall e mesmo assim não funcionou.
Eu também executei o comando netstat -an no DOS e percebi que a porta 1433 não estava rodando.

Olha só os erros:



comando netstat -an


Como resolver isso:

- Sql Server Configuration Manager
- Sql Server Network Configuration
- Habilite o protocolo TCP/IP



Em seguida
- clique duas vezes em TCP/IP 
- IP Addresses
- Informe em IP ALL a porta 1433 ou a porta necessária.


- Necessário reiniciar o servidor SQL SERVER

- Após isso execute novamente o comando netstat -an
- Funcionou, olhe na última linha a 1433 rodando.


É isso ai galera, valeu.

Abs.

sexta-feira, 10 de abril de 2015

Backup SQL 2012 e Restore SQL 2008 - Specified cast is not valid. (SqlManagerUI)

Galera hoje tentei fazer um backup/restore de uma servidor SQL 2012 para SQL 2008, e tive o seguinte erro:



Specified cast is not valid. (SqlManagerUI)



Ao procurar na net, encontrei informações que dizem que não é possível fazer o downgrade, uma alternativa que encontrei é gerar um script das procedures ,tabelas, etc.. com a opção de gerar os dados.

No vídeo abaixo tem o passo a passo.

Abs.

fontes:
http://blog.sqlauthority.com/2012/12/25/sql-server-restoring-2012-database-to-2008-or-2005-version-and-2-other-most-asked-questions/
https://www.youtube.com/watch?v=lSh3fq-MikE

C++ - GET IP BY NAME | GET NAME BY IP

Olá galera, ultimamente tenho trabalhado muito e ainda não consegui montar um cronograma das minhas atividades pessoais que tenho como meta para esse ano. Preciso fazer isso nesse final de semana!!

Mas hoje quero contribuir com um código em C++ que é simples e muito útil.

O código abaixo em C++ tem como objetivo retornar o IP de um PC que esta na REDE pelo nome passado como parâmetro. E o outro faz o contrário..

Você vai precisar dessas includes:

#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
#include <WinSock2.h> 
#include <ws2tcpip.h>

E declarar as seguintes variáveis.

struct hostent *remoteHost;
struct in_addr addr;

Essa function recebe o nome do computador que retornar o IP.

char* getIpByName(char* name) throw(int)
{
   printf("Calling gethostbyaddr with %s\n", name);
        
addr.s_addr = inet_addr(name); 

        if (addr.s_addr == INADDR_NONE) 
{
            printf("O endereço é inválido.\n");
            return NULL;
        } 
else remoteHost = gethostbyaddr((char *) &addr, 4, AF_INET); 

if (remoteHost==NULL) throw(0);

return remoteHost->h_name; //Retorna o IP pelo nome recebido
}

Essa outra aqui recebe o IP e retorna o nome.

char* getNameByIP(char* IP) throw(int)
{
 printf("Calling gethostbyname with %s\n", IP);
          remoteHost = gethostbyname(IP);

 if (remoteHost==NULL) throw(1);

 addr.s_addr = *(u_long *) remoteHost->h_addr_list[0]; 

return inet_ntoa(addr);
}

Agora vamos testar:


int main()
{
    WSADATA wsaData;
    int iResult;

    DWORD dwError;

    iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
    if (iResult != 0) 
{
        printf("WSAStartup failed: %d\n", iResult);
        return 1;
    }


char* URI = "192.192.115";

try
{

if (isalpha(URI[0])) 
{    
char *x = getNameByIP(URI);
printf("\tIP Address: %s\n", x);
}
else 
{
  char *x = getIpByName(URI); 
  printf("\tName: %s\n", x);
}
}
catch(int e) 
{
printf("%s\n", "Ocorreu um erro: HOST NOT FOUND");
} 

system("pause");
    return 0;

}


Utilizei o DEV-C++ para desenvolver, link para download:
http://sourceforge.net/projects/orwelldevcpp/

Qualquer dúvida postem ai..

Abs.