[review] Pro Git
Tweet
Pro Git é um livro muito bom se voce ja conhece um pouco de git e quer se aprofundar mais, ou se voce nao conhece e quer conhecer bem.
Nele voce vai aprender sobre controle de versao distribuido, workflows para melhor utilização dos recursos do git, melhores praticas com git. Alem disso voce aprenderá a instalar e configurar um servidor git, a como gerenciar e colaborar com projetos e inclusive a extender o git.
O livro pode ser lido capitulo por capitulo se voce nao sabe nada sobre Controle de versao distribuido. Ou voce pode ler somente os capitulos que lhe interessam, se voce ja tem um conhecimento basico do git.
Onde Comprar?
Na amazon.
Ou voce pode ler no proprio site do livro. Ou voce pode baixar do github.
Aprendendo C - formatação do printf
TweetRecentemente comecei a aprender C. Sim eu não sei C, não tive na faculdade e sempre senti falta de saber melhor como as coisas funionavam por dentro do computador, já que minha maior experiencia em programação é com python, que é uma linguagem de altissimo nivel.
Com C voce trabalha mais perto da maquina, direto com bytes, alocação de memoria, tem que fazer as estruturas de dados.
E pra aprender eu escolhi estudar pelo livro Learn C The Hard Way do Zed Shaw. É um livro que te instiga a estudar os conceitos por voce mesmo, ensina em cima de exemplos bem praticos e eficientes, te adiciona ao ecossistema da linguagem, apresentando ferramentas e tecnicas que vao te ajudar a pensar em C.
Uma das coisas que ele me instigou a estudar foi todos os possiveis formatos e suas variações para o printf, a função que escreve na saida padrão (o print do python).
#include <stdio.h>
int main() {
printf("%s\n", "Hello World!");
return 0;
}
#output
Hello World!
formatando a saida do printf
O printf recebe 2 parametros: uma string com os formatos mapeados e um minimo de valores igual ao mapeado.
#include <stdio.h>
int main() {
printf("%d %s\n", 1, "Hello again!");
return 0;
}
#output
1 Hello again!
Esta função é capaz de imprimir diferentes tipos de dados (char, string, int, float, octal, hexa, outros aqui) de acordo com a formatação que voce usar.
#include <stdio.h>
int main() {
printf("Char: %c %c \n", 'b', 65); // char pode receber um int referente a Tabela ASCII (http://www.asciitable.com/).
printf("Decimais: %d %ld\n", 1988, 650000L);
printf("Precedido com espaços em branco: %10d\n", 1988);
printf("Precedido com zeros: %010d\n", 1988);
printf("Numeros com base diferente: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
printf("Floats: %4.2f %+.0e %E \n", 3.14554, 3.3214, 3.1234);
printf("Truque de tamanho: %*d\n", 5, 10);
printf("String simples %s\n", "Oi!");
return 0;
}
#output
Char: b A
Decimais: 1988 650000
Precedido com espaços em branco: 1988
Precedido com zeros: 0000001988
Numeros com base diferente: 100 64 144 0x64 0144
Floats: 3.15 +3e+00 3.123400E+00
Truque de tamanho: 10
String simples Oi!
Tabela de Formatos
Os formatos seguem o seguinte prototipo: %[
flags][tamanho][.precisao][quantidade]formatoFlags, largura, .precisão, tamanho são opcionais.
Formatos:
| Formato | Saida | Exemplo |
|---|---|---|
| c | char | a |
| d ou i | signed int | 1 |
| e | Notação Cientifica usando o caracter e | 3.9265e+2 |
| E | Notação Cientifica usando o caracter E | 3.9265E+2 |
| f | float | 3.4 |
| g | usa o menor numero possivel de f e e | 3.54 |
| G | usa o menor numero possivel de f e E | 3.54 |
| o | unsigned octal | 610 |
| s | string | Hello World |
| u | unsigned int | 2345 |
| x | unsigned hexa | 7fa |
| X | unsigned hexa com letras maiusculas | 7FA |
| p | ponteiro de endereço | B800:0000 |
| n | Nada impresso. O argumento deve ser um ponteiro para um int assinado, onde o número de caracteres escritos até então é armazenado. | |
| % | % seguido de outro % irá printar % na saida | % |
Flags
| Flag | Descrição |
|---|---|
| - | Alinhado a esquerda dentro do tamanho definido. Alinhamento a direita é o padrão (veja a tabela de formatação de tamanho). |
| + | Força a o resultado ser mostrado com um simbolo de + ou -. Por padrão, somente numeros negativos são mostrados com -. |
| # | Usado com o, x e X indica que o valor será precedido de 0, 0x ou 0X respectivamente, para valores diferentes de 0. Usado com e, E e f, força o output para mostrar um ponto decimal mesmo sem numeros depois dele. Por padrão, se nenhum numero estiver depois do ponto decimal ele nao é mostrado. Usado com g e G o resultado é mostrado com zeros a direita. |
| 0 | Numero 0 é printado ao invés de espaços em branco quando o tamanho é especificado. (veja a tabela de formatação de tamanho). |
Modificadores de Tamanho
| Tamanho | Descrição |
|---|---|
| (Numero) | Número minimo de caracteres a serem printados. Se o valor a ser printado for menor que o numero, será adicionado espaços em branco para atigir o numero limite. O valor nao é trucado caso seja maior que o limite. |
| * | O tamanho nao é especificado na formatação da string, mas é passado como argumento precedendo o argumento a ser formatado |
Modificadores de Precisão
| .precisão | Descrição |
|---|---|
| .numero | Para formatos inteiros (i, d, u, o, x, X): precisão especifica o numero minimo de digitos a serem mostrados. Se a quantidade de digitos for menor que o limite, entao serão acrescentados zeros ao final. O valor nao é truncado se a quantidade de digitos for maior que o limite. Precisão 0 significa que o nenhum valor é printado se o numero for 0. Para formatos e, E, f: é o numero de digitos que serão mostrados depois do ponto decimal. Para formatos g e G: é o numero maximo de digitos significantes a serem mostrados. Para s: é o numero maximo de caracteres a serem mostrados. Por padrão, todos os caracteres serão mostrados até o caracter nulo que finaliza uma string (por exemplo \n) Para c: não tem efeito. Quando nenhuma precisão é especificada, o padrão é 1. Se o periodo é especificado sem um valor explicito para precisão, 0 é assumido. |
| .* | A precisão nao é especificada na formatação da string, mas é passado como argumento precedendo o argumento a ser formatado. |
Modificadores de Quantidade
| quantidade | Descrição |
|---|---|
| h | O argumento é interpretado como um short int ou unsigned short int (só se aplica aos formatadores de inteiro: i, d, o, u, x, X). |
| l | O argumento é interpretado como um long int ou unsigned long int (só se aplica aos formatadores de inteiro: i, d, o, u, x, X) e como um caractere de largura ou cadeia de caracteres de largura para formatadores c e s. |
| L | O argumento é interpretado como um long double (somente para formatadores de float: e, E, f, g e G). |
O printf é muito poderoso, e espero ter ajudado a conhece-lo melhor.
Obrigado, até a proxima!
[dica rapida] syntax hightlight no seu blog com javascript
Tweetse voce tem um blog sobre programação, provavelmente voce postará snippets de codigo e provavelmente voce vai querer que esse snippet tenha syntax highlight como no seu editor de codigo preferido.
mas como faz?
é bem facil, basta voce usar um modulo JS e CSS chamado google code prettify.
para cofigura-lo na pagina. basta voce colocar esses 2 links no seu html.
<link href="prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="prettify.js"></script>
e depois chamar uma função no load da pagina.
$(function() {prettyPrint();});
obs: para chama-lo assim voce deve carregar o jquery na pagina.
obs 2: mais informaçoes de configuração, veja o readme. do projeto.
e agora?
basta voce colocar seu codigo dentro de uma tag code ou pre com a classe prettyprint e pronto, seu codigo vai ficar bonito na pagina!
um exemplo:
<code class="prettyprint">print "Hello World!</code>
é isso, até mais!
Programming Highlight - 2
Tweetcompilação dos melhores links da semana
Leitura
- Zen Coder or Distraction-Junkie
http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/
- Jeff Atwood anunciou sua saida da equipe do Stack Overflow.
http://www.codinghorror.com/blog/2012/02/farewell-stack-exchange.html
- Poster do The Zen of Python para impressao
http://www.dirtymonkey.co.uk/blog/zen-of-python-poster
- Lembra do Hacker way do Facebook nos Highlights da semana passada? Então, posters sobre o ele em creative commons pra voce baixar
http://www.designforfun.com/facebookposters/
- Uma otima apresentação sobre como e porque customizar os admin do django. Indica varios pros e contras de cada abordagem
http://www.slideshare.net/lincolnloop/customizing-the-django-admin/
- Se voce usa vim, veja se está fazendo isso certo!
http://blog.sanctum.geek.nz/vim-anti-patterns/
- Patterns de ORM
http://techspot.zzzeek.org/2012/02/07/patterns-implemented-by-sqlalchemy/
- Css Box Model
http://css-tricks.com/the-css-box-model/
- Podcasts for Hackers
http://designpepper.com/podcasts-for-hackers
Projetos
- Django-Facebook - o principal destaque desse projeto é a integracao com o Open Graph beta.
[Review] Nao me faça pensar! Uma Abordagem de Bom Senso À Usabilidade na Web
Tweet
Eu recentemente acabei de ler este livro sensacional sobre usabilidade na web.
Ele trata sobre a arquitetura de informação de uma pagina web, mostrando elementos básicos que toda pagina deve ter, o que fazer e o que não fazer, como montar sua pagina principal e como executar testes de usabilidade. Te abre os olhos pra questões básicas muitas vezes esquecidas por nós em nossos projetos web.
Mas eu sou desenvolvedor!
Por isso mesmo! Você deve ser plural, conhecer um pouco de tudo. Design, infraestrutura, usabilidade, CSS, HTML, semantica, protocolo http e todo o ecosistema que engloba a web.
Neste otimo post o Henrique Bastos fala mais sobre pluralidade para programadores web. Vale a leitura!
Se você quiser ler somente um livro sobre usabilidade na sua vida, LEIA ESTE!
Ok, legal. Onde eu compro?
Voce pode escolher o melhor preço no buscapé, por esse link.
Ou se preferir, pode comprar a versao em ingles, na amazon.
Pode ter certeza, este livro é um otimo investimento para melhorar seus projetos web, e deixar seus usuarios mais felizes! Aproveite e boa leitura.
Até a proxima!