quinta-feira, 26 de fevereiro de 2009

Saiu Ranking das linguagens de programação de fevereiro de 2009

Bom dia pessoal,


Estava dando uma olhada no ranking das linguagens de programação que saiu em fevereiro desse ano e vale a pena dar uma analisada. Linguagens como a Brasileira Lua criada pela PUC-Rio apesar de ter caído duas posições está entre as 20 linguagens de programação mais utilizadas de acordo com o índice da TIOBE Software. Java e C continuam liderando e C++ subiu duas posições. Acho interessante C++ estar em terceiro porque acredito que C++ tem muito do que o Java pode oferecer e tem a base em C. Na minha opnião é uma linguagem completa apesar dos problemas é claro.


Depois do sucesso e do incrível crescimento, Python e Ruby deram uma estagnada no ranking. Só não entendi como ABAP e Logo subiram tanto. Vou dar uma pesquisada, porque são linguagens que nunca utilizei.


Clique na imagem para ampliar.


Abaixo segue as outras 30 posições do ranking.


Clique na imagem para ampliar.


Agora uma comparação dos últimos 5 anos


Clique na imagem para ampliar.


Quem quiser ver o ranking do ano de 2008 que postei aqui no blog segue o link.

sexta-feira, 13 de fevereiro de 2009

Organized Eclipse Shortcuts (Resumido)

Organized Eclipse Shortcuts


Navigational Shortcuts
F10 Main menu
Shift F10 Context menu
Ctrl F10 View menu

Workspace navigation
F12 Activate editor
Ctrl+Shift+W Switch editor
Ctrl F6 Next editor
Ctrl Shift F6 Prev editor
Ctrl F7 Next workspace
Ctrl Shift F7 Prev workspace
Ctrl F8 Next perspective
Ctrl Shift F8 Prev perspective
Alt Left Back
Alt Right Forward

Files
Alt Shift S Show in…
Ctrl Shift R Jump to file
Ctrl N New file
Ctrl S Save file
Ctrl Shift S Save all files
Ctrl F4 Close file
Ctrl Shift F4 Close all files

Find
Ctrl L Goto line
Ctrl F Find
Ctrl J Incremental find
Ctrl Shift J Incremental find prev
Ctrl K Find next
Ctrl Shift K Find prev
Ctrl H Search workspace
Ctrl (dot) Navigate next
Ctrl (comma) Navigate prev

Java navigation
F3 Goto declaration
Ctrl Shift U Find references in file
Ctrl Shift G Find references in workspace
Ctrl G Find declarations in workspace
Ctrl Shift P Navigate to matching bracket/brace
Ctrl T Popup type hierarchy
Ctrl Shift T Open Type
Ctrl O Outline of current source
Ctrl F3 Outline of current cursor position
Ctrl Shift Arrow Jump beetween methods up or down
F2 Show Javadoc
F4 Show hierarchy
Ctrl Alt H Open call hierarchy


General editing
Alt Arrow Move line(s) up or down
Alt Shift Up Expand selection to enclosing element
Alt Shift Right Expand selection to next element
Alt Shift Left Expand selection to previous element
Alt Shift Down Restore previous selection
Ctrl Alt Arrow Duplicate line(s) up or down
Shift Enter Insert line below
Ctrl Shift Enter Insert line above
Ctrl D Delete line
Ctrl Shift Q Toggle Quick Diff
Ctrl Shift Y Convert to lowercase
Ctrl Shift X Convert to uppercase

Java editing
Alt Shift U Remove occurrence annotations
Ctrl 1 Quick fix (works even when there are no errors
Ctrl Shift M Add import
Ctrl Shift F Reformat
Ctrl Shift O Organize Imports
Ctrl / Comment
Ctrl \ UnComment
Ctrl Shift Space Parameter hints
Ctrl Hyperlink identifier
Ctrl I Correct indentation
Shift Space Incremental content assist

Debugger
F5 Step into
F6 Step over
F7 Run to return
F8 Resume
F9 Relaunch last
F11 Run/debug last
Ctrl F11 Run
Ctrl Shift B Toggle breakpoint
Ctrl D Display
Ctrl Q Inspect
Ctrl R Run to line
Ctrl U Run snippet

Refactoring
Alt T Refactoring menu
Ctrl Shift Z Undo refactor
Ctrl Shift Y Redo refactor
Alt Shift R Rename
Alt Shift V Move
Alt Shift I Inline
Alt Shift M Extract method
Alt Shift L Extract local
Alt Shift C Change method signature

Misc
F5 Refresh
F1 Infopop
F2 Show resizeable hover

http://www.allapplabs.com/eclipse/eclipse_shortcuts.htm

Atalhos do Eclipse / Eclipse shortcuts


Olá a todos.

Resolvi juntar algumas dicas de atalhos do eclipse que acho importante. Serve como guia de consulta pra mim e pra todos que utilizam o eclipse.

O post foi montado baseado em vários blogs e os atalhos que eu mais utilizo também. Espero que seja útil a todos.

Esses atalhos adiantam muito a vida dos desenvolvedores, afinal você pode em vez de digitar public static void main(String[] args), digitar somente main em seguida pressionar Ctrl+espaço, apertar Enter e o método é escrito pra você. Muitas outras dicas faladas aqui facilitarão muito seu dia-a-dia com eclipse.


Boa sorte!

Antes de qualquer coisa é importante que todos saibam o uso do Ctrl+espaço que é essencial para você desenvolvedor. Ele abre o assistente de código que vai ser útil para completar nome de classes, métodos, atributos e etc em todas as partes do código.



Busca

• Ctrl+Shift+R
Busca e abre rapidamente qualquer item do projeto, seja ele uma classe, arquivo XML, arquivo de properties, bytecode etc.
• Ctrl+T
Mostra a hierarquia da classe atual, permitindo abrir rapidamente qualquer classe da hierarquia.
• Ctrl+H
Abre a janela de pesquisa nos arquivos do workspace. Nela é possível procurar tanto por trechos textuais nos arquivos, quanto por referências a elementos da linguagem como tipos, métodos, pacotes, atributos etc.
• Ctrl+J
Busca incremental no arquivo aberto. O cursor é posicionado no trecho de código correspondente à medida que você digita.
• Ctrl+Alt+G
Pesquisa no workspace por todas as ocorrências do elemento sobre o qual o cursor está posicionado.

Navegação no código

• Alt+Left
Volta para a última posição editada.
• Alt+Right
Avança para a próxima posição editada.
• Ctrl+O
Mostra a estrutura (outline) do arquivo que está sendo editado e permite navegar até declaração selecionada.
• Ctrl+D
Apaga a linha corrente.
• Ctrl+G
Localiza a declaração da classe, interface, atributo ou método selecionado.
• Crtl+Shift+G
Localiza todas as referências à classe, interface, atributo ou método selecionado existentes no workspace.
• Ctrl+3
Navegação rápida. Navega entre todos os itens abertos em todas as views e perspectivas abertas no momento.

Organização do código

• Crtl+Shift+F
Formata automaticamente o trecho de código selecionado de acordo com as configurações definidas em Window -> Preferences -> Java -> Code Style -> Formatter
• Crtl+Shift+O
Organiza os imports do arquivo aberto, removendo as declarações desnecessárias.
• Crtl+Shift+C
Adiciona comentário ao trecho selecionado. Serve também para remover o comentário se já houver.

Depuração

• Ctrl+1
Invoca a funcionalidade de reparo rápido (quick fix) quando o compilador acusa algum erro. O reparo rápido consiste em um pop-up com uma lista de sugestões de modificação que são aplicadas automaticamente ao selecionar.
• Ctrl+Shift+I
Inspeciona o valor das variáveis enquanto ocorre a depuração. Disponível apenas na perspectiva Debug.
• Ctrl+3
Navega entre todos os arquivos abertos, e todas as views abertas de todas as perspectivas. Basta digitar o nome.

Refactoring

• Alt+Shift+R
Renomeia o elemento.
• Alt+Shift+L
Extrair para variável local. Atribui a expressão selecionada a uma váriavel.
• Alt+Shift+M
Extrair método. Cria um novo método contendo o trecho de código selecionado.
• Alt+Shift+S
Abre o menu igual ao que aparece ao clicar com o botão direito no código fonte.
• Alt+Shift+T
Abre o menu de refatoração.
• Alt+Shift+X
Executa sua classe java que tem um “public static void main”.


Configuração

• Ctrl+Shift+L
Mostra a lista de atalhos de teclado.
• Ctrl+Shift+L duas vezes
Abre a tela de personalização de atalhos de teclado.

sexta-feira, 6 de fevereiro de 2009

Código de como enviar e-mail pelo c++

Olá pessoal,

Demorei, mas postei o código de uma função de como enviar e-mail utilizando o c++.

Nesta função deixei o remetente como constante e a passagem da mensagem e do destinatário como parâmetro. A função pode ser mudada para passagem de parâmetro do remetente também. Não tive essa necessidade, mas pode ser que alguém tenha.

Espero que tenha ajudado vocês.

Até a próxima dica.


void CSIOAVISODlg::email(CString StrAvisoProblema, LPCTSTR to)
//Primeiro parâmetro é a mensagem a ser enviada e o segundo é o destinatário
{

int iProtocolPort = 0;
char szSmtpServerName[64] = "";
char szToAddr[64] = "";
char szFromAddr[64] = "";
char szBuffer[8192] = "";
char szLine[255] = "";
char szMsgLine[8192] = "";
char szSubject[255] = "";
char szMsg[16384] = "";

SOCKET hServer;
WSADATA WSData;
LPHOSTENT lpHostEntry;
LPSERVENT lpServEntry;
SOCKADDR_IN SockAddr;

// Convert to a char*
const size_t newsize = 16384;
char nstring[newsize];
strcpy(nstring, StrAvisoProblema);
// strcat(nstring, " (char *)");

lstrcpy(szSmtpServerName, "10.153.205.21"); //Servidor SMTP
lstrcpy(szToAddr, to); //Destinatário
lstrcpy(szFromAddr, "teste@teste.com.br"); //Remetente
lstrcpy(szSubject, "código fonte email - Carlos Augusto"); //Assunto

// Attempt to intialize WinSock (1.1 or later)
if(WSAStartup(MAKEWORD(VERSION_MAJOR, VERSION_MINOR), &WSData))
{
//cout << "Cannot find Winsock v" << VERSION_MAJOR << "." << VERSION_MINOR << " or later!" << endl;

// return 1;
}

// Lookup email server's IP address.
lpHostEntry = gethostbyname(szSmtpServerName);
if(!lpHostEntry)
{
// cout << "Cannot find SMTP mail server " << szSmtpServerName << endl;
// return 1;
}

// Create a TCP/IP socket, no specific protocol
hServer = socket(PF_INET, SOCK_STREAM, 0);
if(hServer == INVALID_SOCKET)
{
// cout << "Cannot open mail server socket" << endl;
// return 1;
}

// Get the mail service port
lpServEntry = getservbyname("mail", 0);

// Use the SMTP default port if no other port is specified
if(!lpServEntry)
iProtocolPort = htons(IPPORT_SMTP);
else
iProtocolPort = lpServEntry->s_port;

// Setup a Socket Address structure
SockAddr.sin_family = AF_INET;
SockAddr.sin_port = iProtocolPort;
SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);

// Connect the Socket
if(connect(hServer, (PSOCKADDR) &SockAddr, sizeof(SockAddr)))
{
// cout << "Error connecting to Server socket" << endl;

// return 1;
}

// Receive initial response from SMTP server
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() Reply");

//Aqui já entra o código baseado no post anterior sobre como enviar email usando telnet

// Send HELO server.com
sprintf(szMsgLine, "HELO %s%s", szSmtpServerName, CRLF);
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() HELO");
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() HELO");

// Send MAIL FROM:
sprintf(szMsgLine, "MAIL FROM:<%s>%s", szFromAddr, CRLF);
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() MAIL FROM");
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() MAIL FROM");

// Send RCPT TO:
sprintf(szMsgLine, "RCPT TO:<%s>%s", szToAddr, CRLF);
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() RCPT TO");
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() RCPT TO");

// Send DATA
sprintf(szMsgLine, "DATA%s", CRLF);
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() DATA");
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() DATA");

sprintf(szMsgLine, "FROM: %s%sSUBJECT: %s%s%s%s%s", szFromAddr, CRLF, szSubject, CRLF, CRLF, nstring, CRLF);
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() end-message");

// Send blank line and a period
sprintf(szMsgLine, "%s.%s", CRLF, CRLF);
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() end-message");
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() end-message");

// Send QUIT
sprintf(szMsgLine, "QUIT%s", CRLF);
Check(send(hServer, szMsgLine, strlen(szMsgLine), 0), "send() QUIT");
Check(recv(hServer, szBuffer, sizeof(szBuffer), 0), "recv() QUIT");

// Close server socket and prepare to exit.
closesocket(hServer);

WSACleanup();

}

//fim da função de enviar email

//para executar basta chamá-la dessa forma
// email(Str, "augustoffilho@gmail.com");
//Primeiro a variável contendo a mensagem que deve ser do tipo CString
// e depois o destinatário

// quando copiarem o código cuidado com as quebras de linhas que não
// ficou muito bom aqui no blog

Links

Related Posts with Thumbnails