- GIT
- Repositório distribuído: o git não trabalha com um servidor centralizado de repositório, como o SVN. Sempre que um usuário clona um repositório ele baixa todo o conteúdo (claro!) juntamente com todo o histórico de commits já feitos.
- Instalação em Ubuntu
- sudo aptitude install git
- Instalador do Windows
- Instalação em Mac
- sudo brew install git
- GIT com repositório local
- Inicialização do repositórioc e criação de novos arquivos
- git init .
- git status
- echo "arquivo readme" > readme # echo: simplesmente manda pra tela o parâmetro que recebeu. No caso, a saída está sendo redirecionada para um arquivo também chamado readme (O > serve para salvar a saída em tela de um comando qualquer em arquivo. Isto é, o que fica depois do > é o arquivo que é usado como saída do comando que está antes do >).
- git status
- git add . # o que estiver depois do # o interpretador de comandos ignora (pelo menos no linux, no windows eu acho que substituindo por ;REM funciona)
- git commit -m "criação do readme"
- Configuração de ferramentas gráficas
- git config --global diff.tool
# diff - git config --global merge.tool
# merge - # (recomendo o meld como ferramenta de diff/merge)
- Modificando arquivo e visualizando as diferenças
- echo "Arquivo readme" > readme
- git status
- git diff
- git difftool # Esta linha e a anterior são duas forma diferentes de se fazer a mesma coisa, só pra constar
- git add readme
- git status
- git commit -m "Melhoria no readme"
- Excluindo arquivos
- rm readme # equivalente windows: del readme
- git status
- git rm readme
- git status
- git commit -m "Exclusão do arquivo readme"
- Descartando alterações não commitadas
- echo "arquivo leiame" > leiame
- git add leiame
- git commit -m "Criação do leiame"
- echo "Alteração indesejada\!" >> leiame # Não sei se o >> funciona no win, a idéia é concatenar conteúdo ao final do arquivo
- git status
- cat leiame # win: more leiame
- git checkout leiame
- # Observação: o Eclipse não enxerga automaticamente mudanças feitas por ferramentas externas, então é preciso ir no Eclipse e dar um F5 no projeto que foi modificado
- cat leiame
- git status
- Adicionando pastas inteiras ao controle de versão
- mkdir pasta # win: md (eu acho, mas isso só cria uma pasta)
- echo file1 > pasta/file1 # win: trocar / por \
- echo file2 > pasta/file2
- git status # Notar que neste ponto não são mostrados os arquivos da pasta criada
- git add .
- git status # Agora o git já olhou dentro da pasta e já sabe quais são os arquivos que ele precisa adicionar
- git commit -m "Nova pasta"
- git status
- Pastas vazias
- mkdir emptyfolder
- ls -l # win: dir (sem o -l no windows)
- git add . # Ignora a pasta pois está vazia
- git status # Diz que não há nada a commitar, um git commit depois disso não iria funcionar
- rmdir emptyfolder # win: rd emptyfolder
- # Isto é: o git não versiona pastas vazias
- Excluindo pastas inteiras
- rm -rv pasta # win: del, já falei!
- ls -l
- Criando novas branches e navegando entre elas (localmente)
- git branch # lista as branchs existentes, a que tem o * é a branch ativa
- git branch branch1 # Cria uma nova branch chamada branch1
- git checkout branch1 # Muda a branch ativa
- git branch
- ls -l # Vamos ver que branch1 foi criada com base no que tinha na master, mas poderia ter sido criada com base em qualquer branch
- echo "Ideia maluca" > ideia_maluca
- echo "leiame versão branch1" >> leiame
- git add .
- git commit -m "Ideia maluca"
- ls -l
- cat leiame
- cat ideia_maluca
- git checkout master
- ls -l
- cat leiame
- git branch -D branch1 # Notar que o -D força a exclusão da branch, enquanto o parâmetro -d é menos agressivo, nesse caso o -d não permitiria excluir pois as alterações feitas na branch1 serão perdidas, como é isso o que eu quero, usei o -D
- Merge entre branches (localmente)
- git branch branch1
- git checkout branch1
- echo "Ideia maluca" > ideia_maluca
- echo "leiame versão branch1" >> leiame
- git add .
- git commit -m "Ideia maluca"
- #ok, criamos uma branch que está mais atualizada que a master, agora vamos colocar tudo no lugar
- git checkout master
- git merge branch1
- ls -l
- cat leiame
- cat ideia_maluca
- Merge entre branches (locais) com conflito
- echo "versão branch master" >> leiame
- git add .
- git commit -m "Alteração no readme"
- git checkout branch1
- echo "versão branch1" >> leiame
- git add .
- git commit -m "Alteração no readme"
- git checkout master
- # Nesse ponto o leiame tem uma versão na master e outra na branch1
- git mergetool leiame # *1
- git status
- ls -l
- cat leiame
- # *1 Uma opção bem útil é fazer o merge com a opção --no-commit. Esta opção apenas faz o merge, mas não commita nada, permitindo resolver o merge manualmente (e mais facilmente). Ainda é possível usar ferramenta gráfica de merge dessa maneira.
- Merge com conflito de pastas (localmente, passo opcional, é uma situação menos frequente)
- Visualizando o histórico de commits: git log
- git log --graph --name-only --all --decorate
- Mostra o log bem formatado, o git log tem inúmeras opções
- Voltando o repositório para commits antigos
- O "git checkout" pode receber os seguintes parâmetros: branchs, tags ou hashs de commit. O hash de commit é aquela sequencia enorme de numeros que aparece no log.
- Visualizando a árvore de branches e o histórico de commits: gitk
sexta-feira, 1 de junho de 2012
Git do zero
terça-feira, 31 de maio de 2011
Post rápido
Como faz tempo que não posto nada, vai um link rapidinho, mas ótimo:
http://oanaconda.blogspot.com/2011/05/como-veja-trataria-abolicao.html
http://oanaconda.blogspot.com/2011/05/como-veja-trataria-abolicao.html
quarta-feira, 20 de abril de 2011
God bless Wine!
Quarta feira, entrego o tcc da pós segunda da semana que vem. Dia perfeito pra licensa de estudante do word terminar, mas eu já sabia: ela ia expirar depois de 25 vezes que eu abrisse o word. Eu só não sabia o que ia acontecer quando a licença vencesse.
Aconteceu que o word não permitia mais fazer qualquer alteração no documento. Nem digitar texto ou selecionar alguma coisa e mudar a formatação, nada.
Oh, e agora, quem poderá nos defender?
Mas tem um pequeno detalhe que eu não contei: eu tava rodando o word (o MS Word) a partir do linux usando um programinha chamado Wine. Wine é uma sigla que quer dizer Wine Is Not an Emulator, é uma sigla recursiva: a primeira letra poderia ser qualquer uma.
Well, voltando ao problema do word: quando eu ví que a licensa havia vencido, simplesmente exclui a pasta de configuração do Wine (que fica em ~/.wine), que é onde fica o hd emulado para os programas do windows.
Pronto! O Word nem suspeitou da mutreta e voltou a funcionar corretamente. Acabei gastando mais pra escrever esse post do que entre apagar a pasta e instalar o word novamente.
Site do wine: http://www.winehq.org/
Usuários de Debian e derivados: aptitude show wine
Aconteceu que o word não permitia mais fazer qualquer alteração no documento. Nem digitar texto ou selecionar alguma coisa e mudar a formatação, nada.
Oh, e agora, quem poderá nos defender?
Mas tem um pequeno detalhe que eu não contei: eu tava rodando o word (o MS Word) a partir do linux usando um programinha chamado Wine. Wine é uma sigla que quer dizer Wine Is Not an Emulator, é uma sigla recursiva: a primeira letra poderia ser qualquer uma.
Well, voltando ao problema do word: quando eu ví que a licensa havia vencido, simplesmente exclui a pasta de configuração do Wine (que fica em ~/.wine), que é onde fica o hd emulado para os programas do windows.
Pronto! O Word nem suspeitou da mutreta e voltou a funcionar corretamente. Acabei gastando mais pra escrever esse post do que entre apagar a pasta e instalar o word novamente.
Site do wine: http://www.winehq.org/
Usuários de Debian e derivados: aptitude show wine
segunda-feira, 18 de abril de 2011
Ainda mudando o brilho no Ubuntu Lucid....
Outra forma de mudar o brilho no Ubuntu Lucid:
xbacklight
é necessário ter o pacote xbacklight instalado:
sudo aptitude install xbacklight
Funciona mesmo quando o note está somente na bateria e não tem como mudar o brilho do monitor...
xbacklight
é necessário ter o pacote xbacklight instalado:
sudo aptitude install xbacklight
Funciona mesmo quando o note está somente na bateria e não tem como mudar o brilho do monitor...
sexta-feira, 15 de abril de 2011
/etc/X11/xorg.conf
Section "DRI"
Mode 0666
EndSection
Section "Device"
Identifier "Configured Video Device"
Driver "psb"
EndSection
# Essas configurações fucionam no meu AcerAO 751h com o poulsbo instalado
# Para instalar o poulsbo e/ou resolver outros problemas no AO751h, recomendo muito:
# https://help.ubuntu.com/community/AspireOne/AO751h
Mode 0666
EndSection
Section "Device"
Identifier "Configured Video Device"
Driver "psb"
EndSection
# Essas configurações fucionam no meu AcerAO 751h com o poulsbo instalado
# Para instalar o poulsbo e/ou resolver outros problemas no AO751h, recomendo muito:
# https://help.ubuntu.com/community/AspireOne/AO751h
Mudar a configuração de brilho no Ubuntu Lucid
Mudando a configuração de brilho no Ubuntu Lucid:
Editar o arquivo /sys/bus/pci/devices/0000:00:02.0/backlight/psblvds/brightness
O conteúdo do arquivo contém somente a porcentagem de brilho que a tela tem no momento. Editar o arquivo na minha máquina deu problema ao gravar (mas mudou a intensidade da tela do note, mesmo fora da tomada).
A saber, minha máquina é uma Acer AO751h
Editar o arquivo /sys/bus/pci/devices/0000:00:02.0/backlight/psblvds/brightness
O conteúdo do arquivo contém somente a porcentagem de brilho que a tela tem no momento. Editar o arquivo na minha máquina deu problema ao gravar (mas mudou a intensidade da tela do note, mesmo fora da tomada).
A saber, minha máquina é uma Acer AO751h
domingo, 1 de agosto de 2010
Ubuntu 10.04 - Primeiras impressões
Embora tenha sido lançado em abril, só agora pude instalar para dar uma olhada. E gostei muito do que ví. Vamos aos pontos positivos:
- Finalmente uma detecção de teclado "for dummies":
Qual o modelo do seu teclado? Apenas escolhendo na lista, vc tem certeza de ter escolhido o país/idioma correto dentre todas as possíveis variações? Alguém aí é da época que tinha que saber o número da página de código pra configurar o teclado?
Tá bom, é possível escolher certo, pois além da lista geralmente tem uma caixinha de texto pra testar. De qualquer forma a equipe da canonical conseguiu melhorar o que já era bom: agora o ubuntu "adivinha" qual é o seu modelo de teclado perguntando se o seu teclado tem essa ou aquela tecla. É uma forma mais segura e esperta de detectar o modelo do teclado do usuário.
- Instalação simples:
Esse ponto nem sei se vale a pena citar. A instalação do ubuntu nunca foi complicada mesmo. São apenas 5 cliques no next e um no finish (lembra alguma coisa?).
- Instalação rápida:
Dessa vez a instalação do Ubuuntu ficou mais rápida. Não medi o tempo que demorou pra instalar, mas não chega a demorar uma hora.
- Boot rápido:
Da primeira vez que me mostraram uma máquina iniciando o 10.04 eu simplesmente fiquei de queixo caído: era a máquina de um colega do escritório, que demorou nada mais nada menos que 5 segundos pra iniciar. Isso depois do POST da BIOS, claro. Mas mesmo assim é um tempo excelente. Alguém aí já cronometrou o tempo um Windows depois de um ano de uso demora pra ficar disponível?
Detalhe: eu não cronometrei, mas o desligamento também é bem rápido.
Mas como nem tudo são flores, principalmente em versões do linux com pouco tempo de lançamento, vamos aos problemas:
- Não reconheceu meu driver de vídeo:
Já tinha tido problema semelhante com 9.04, mas dessa vez perdi menos tempo e tive que fazer menos tramoias pra rodar o driver do meu chipset de vídeo. Só pra constar: uso um Acer AO751h e o Chipset é um Intel GMA500.
- Travando durante o boot:
Notar a hora do post: aqui estou eu num sábado a noite esperando as atualizações do ubuntu baixarem (pois o reinstalei tentando resolver esse problema), enquanto podia estar fazendo coisa melhor (muuuito melhor, diga-se de passagem).
Cerca de 1 em 15 boots é bem sucedido. Os outros 14.... bom, travam a máquina 1.2 segundos depois do kernel subir. Ainda não encontrei solução, e pela quantidade de usuários com problema semelhante, provavelmente esse problema ainda não foi solucionado...
Conclusões:
Embora o ubuntu 10.04 esteja realmente muito bom, ainda vou continuar com o 9.04, pelo menos enquanto eu não encontrar a solução do travamento....
- Finalmente uma detecção de teclado "for dummies":
Qual o modelo do seu teclado? Apenas escolhendo na lista, vc tem certeza de ter escolhido o país/idioma correto dentre todas as possíveis variações? Alguém aí é da época que tinha que saber o número da página de código pra configurar o teclado?
Tá bom, é possível escolher certo, pois além da lista geralmente tem uma caixinha de texto pra testar. De qualquer forma a equipe da canonical conseguiu melhorar o que já era bom: agora o ubuntu "adivinha" qual é o seu modelo de teclado perguntando se o seu teclado tem essa ou aquela tecla. É uma forma mais segura e esperta de detectar o modelo do teclado do usuário.
- Instalação simples:
Esse ponto nem sei se vale a pena citar. A instalação do ubuntu nunca foi complicada mesmo. São apenas 5 cliques no next e um no finish (lembra alguma coisa?).
- Instalação rápida:
Dessa vez a instalação do Ubuuntu ficou mais rápida. Não medi o tempo que demorou pra instalar, mas não chega a demorar uma hora.
- Boot rápido:
Da primeira vez que me mostraram uma máquina iniciando o 10.04 eu simplesmente fiquei de queixo caído: era a máquina de um colega do escritório, que demorou nada mais nada menos que 5 segundos pra iniciar. Isso depois do POST da BIOS, claro. Mas mesmo assim é um tempo excelente. Alguém aí já cronometrou o tempo um Windows depois de um ano de uso demora pra ficar disponível?
Detalhe: eu não cronometrei, mas o desligamento também é bem rápido.
Mas como nem tudo são flores, principalmente em versões do linux com pouco tempo de lançamento, vamos aos problemas:
- Não reconheceu meu driver de vídeo:
Já tinha tido problema semelhante com 9.04, mas dessa vez perdi menos tempo e tive que fazer menos tramoias pra rodar o driver do meu chipset de vídeo. Só pra constar: uso um Acer AO751h e o Chipset é um Intel GMA500.
- Travando durante o boot:
Notar a hora do post: aqui estou eu num sábado a noite esperando as atualizações do ubuntu baixarem (pois o reinstalei tentando resolver esse problema), enquanto podia estar fazendo coisa melhor (muuuito melhor, diga-se de passagem).
Cerca de 1 em 15 boots é bem sucedido. Os outros 14.... bom, travam a máquina 1.2 segundos depois do kernel subir. Ainda não encontrei solução, e pela quantidade de usuários com problema semelhante, provavelmente esse problema ainda não foi solucionado...
Conclusões:
Embora o ubuntu 10.04 esteja realmente muito bom, ainda vou continuar com o 9.04, pelo menos enquanto eu não encontrar a solução do travamento....
segunda-feira, 18 de janeiro de 2010
Ubuntu One + BrOffice
Para os felizes usuários de Ubuntu, o Ubuntu One não é nenhuma novidade: um serviço que sincroniza automaticamente os arquivos do computador para um servidor de arquivo remoto, mantido pela empresa que desenvolve esse ótimo SO que é o Ubuntu.
Infelizmente, se trata de um serviço em versão Beta ainda (isto é, em testes) e alguns problemas acontecem. Uso esse serviço em apenas um computador, mas mesmo assim alguns conflitos acontecem, deixando alguns arquivos com extensão .u1conflict espalhados na pasta do Ubuntu One.
No meu caso não tive maiores prejuízos e apenas renomeei os arquivos para suas extensões originais, e tudo funcionou novamente, nenhum dado perdido.
Porém, esse problema de sincronia tem acontecido com certa frequencia com meus arquivos do BrOffice que estão na pasta do Ubuntu One, pois toda vez que um arquivo do BrOffice é aberto, o mesmo cria um arquivo com extensão .lock para o arquivo original, o que cria problemas com o mecanismo de sincronia do Ubuntu One....
Descobri por que o Ubuntu One vem configurado por padrão para não logar no serviço quando o computador for conectado a internet.... Sou obrigado a conectar apenas depois que tiver alguma coisa que posso subir para a nuvem sem causar conflitos.
Conclusão: a idéia do Ubuntu One é ótima, porém, o serviço ainda precisa amadurecer bastante.
Infelizmente, se trata de um serviço em versão Beta ainda (isto é, em testes) e alguns problemas acontecem. Uso esse serviço em apenas um computador, mas mesmo assim alguns conflitos acontecem, deixando alguns arquivos com extensão .u1conflict espalhados na pasta do Ubuntu One.
No meu caso não tive maiores prejuízos e apenas renomeei os arquivos para suas extensões originais, e tudo funcionou novamente, nenhum dado perdido.
Porém, esse problema de sincronia tem acontecido com certa frequencia com meus arquivos do BrOffice que estão na pasta do Ubuntu One, pois toda vez que um arquivo do BrOffice é aberto, o mesmo cria um arquivo com extensão .lock para o arquivo original, o que cria problemas com o mecanismo de sincronia do Ubuntu One....
Descobri por que o Ubuntu One vem configurado por padrão para não logar no serviço quando o computador for conectado a internet.... Sou obrigado a conectar apenas depois que tiver alguma coisa que posso subir para a nuvem sem causar conflitos.
Conclusão: a idéia do Ubuntu One é ótima, porém, o serviço ainda precisa amadurecer bastante.
Estudos para a SCJP....
Pra quem não é da área da computação: certificação é uma prova que "atesta" conhecimento de determinado profissional em uma tecnologia ou área de conhecimento.
Estou estudando para tirar a SCJP (Sun Certified Java Programmer - Programador Java Sun Certificado), em poucas palavras, trata-se de uma prova de conhecimentos de programação com Java.
Plano original: Tirar a certificação em java antes de mudar de empresa, pois se eu tentar mudar de emprego sem certificação, vou acabar em um emprego com os mesmos problemas que o atual.
No momento: Estou usando minhas férias para tirar a certificação, falta um dia para o fim das minhas férias. Estão faltando 153 páginas para concluir a leitura do livro da certificação.
Causas do fracasso: Resolver o problema com o médico ortomolecular, graças aos erros cometidos pela medial que me custaram cerca de dois dias de leitura, juntamente com a minha baixa disposição e cansaço constantes causados pela ausência de tempo dedicado ao lazer, tornaram impossível concluir a leitura a tempo.
Observações: nos últimos 4 dias, o volume de páginas lidas foi muito pequeno (43 páginas), devido a consulta e aula no dia 14 e indisposições nos outros dias. Para comparações, nos três dias anteriores aos citados (isto é, dias 9-12/jan) foram lidas 164 páginas. Acredito que isso tenha acontecido, em parte, devido a minha inexperiência referente à API (capítulo 6). Levando em conta que os capítulos 6, 7 e 9 abordam os temas da API, a leitura do restante do livro demandará mais tempo do que o estimado.
Conclusões: Obviamente não vou conseguir tirar a certificação conforme o planejado inicialmente. Vou precisar de, pelo menos, mais duas semanas, conciliando o trabalho com os estudos da pós e da certificação. Levando em conta os problemas jurídicos que vou enfrentar com a [nome da empresa omitido], será interessante passar mais algum tempo trabalhando lá.
Planejamento revisado:
Levando em conta as dificuldades relativas aos capítulos de API já citados, estimo em três semanas a leitura do restante do livro, isto é, podemos estimar, a princípio, a data de 7 de fevereiro como data de conclusão da parte inicial dos estudos.
A semana de 08-14/fev será usada para fazer mocks e testes do compilador. O exame será agendado para o dia 18 (depois da quarta feira de cinzas).
Esse plano poderá ser revisado (e provavelmente será) de acordo com o desempenho obtido durante a próxima semana e as aulas da pós.
Espero não ter sacrificado minhas férias por nada.
Estou estudando para tirar a SCJP (Sun Certified Java Programmer - Programador Java Sun Certificado), em poucas palavras, trata-se de uma prova de conhecimentos de programação com Java.
Plano original: Tirar a certificação em java antes de mudar de empresa, pois se eu tentar mudar de emprego sem certificação, vou acabar em um emprego com os mesmos problemas que o atual.
No momento: Estou usando minhas férias para tirar a certificação, falta um dia para o fim das minhas férias. Estão faltando 153 páginas para concluir a leitura do livro da certificação.
Causas do fracasso: Resolver o problema com o médico ortomolecular, graças aos erros cometidos pela medial que me custaram cerca de dois dias de leitura, juntamente com a minha baixa disposição e cansaço constantes causados pela ausência de tempo dedicado ao lazer, tornaram impossível concluir a leitura a tempo.
Observações: nos últimos 4 dias, o volume de páginas lidas foi muito pequeno (43 páginas), devido a consulta e aula no dia 14 e indisposições nos outros dias. Para comparações, nos três dias anteriores aos citados (isto é, dias 9-12/jan) foram lidas 164 páginas. Acredito que isso tenha acontecido, em parte, devido a minha inexperiência referente à API (capítulo 6). Levando em conta que os capítulos 6, 7 e 9 abordam os temas da API, a leitura do restante do livro demandará mais tempo do que o estimado.
Conclusões: Obviamente não vou conseguir tirar a certificação conforme o planejado inicialmente. Vou precisar de, pelo menos, mais duas semanas, conciliando o trabalho com os estudos da pós e da certificação. Levando em conta os problemas jurídicos que vou enfrentar com a [nome da empresa omitido], será interessante passar mais algum tempo trabalhando lá.
Planejamento revisado:
Levando em conta as dificuldades relativas aos capítulos de API já citados, estimo em três semanas a leitura do restante do livro, isto é, podemos estimar, a princípio, a data de 7 de fevereiro como data de conclusão da parte inicial dos estudos.
A semana de 08-14/fev será usada para fazer mocks e testes do compilador. O exame será agendado para o dia 18 (depois da quarta feira de cinzas).
Esse plano poderá ser revisado (e provavelmente será) de acordo com o desempenho obtido durante a próxima semana e as aulas da pós.
Espero não ter sacrificado minhas férias por nada.
Lista de feriados para 2010 - Estado de São Paulo
Já que depois de 1h e 30min de pesquisa não encontrei em lugar nenhum a lista oficial de feriados para 2010 da prefeitura de São Paulo, vai a lista que eu peguei da wikipedia para o estado de SP:
01/jan - Confraternização Universal
25/jan - Fundação da cidade de São Paulo (feriado municipal da cidade de São Paulo, esse eu lembrei, não consultei em lugar nenhum)
16/fev - Carnaval (feriado "móvel")
02/abr - Paixão de Cristo (feriado "móvel")
21/abr - Tiradentes
01/mai - Dia do Trabalho
03/jun - Corpus Christi (feriado "móvel")
09/jul - Revolução Constitucionalista de 1932
07/set - Independência do Brasil
12/out - Nossa Senhora Aparecida
02/nov - Finados
15/nov - Proclamação da República
20/nov - Dia da Consciência Negra
24/dez - Véspera de natal (ponto facultativo depois das 14hrs)
25/dez - Natal
31/dez - Véspera de ano novo (ponto facultativo depois das 14hrs)
fontes: Wikipedia - Feriados no Brasil
Froog.com.br - Feriados 2010
Espero que seja útil pra mais alguém, flw!
01/jan - Confraternização Universal
25/jan - Fundação da cidade de São Paulo (feriado municipal da cidade de São Paulo, esse eu lembrei, não consultei em lugar nenhum)
16/fev - Carnaval (feriado "móvel")
02/abr - Paixão de Cristo (feriado "móvel")
21/abr - Tiradentes
01/mai - Dia do Trabalho
03/jun - Corpus Christi (feriado "móvel")
09/jul - Revolução Constitucionalista de 1932
07/set - Independência do Brasil
12/out - Nossa Senhora Aparecida
02/nov - Finados
15/nov - Proclamação da República
20/nov - Dia da Consciência Negra
24/dez - Véspera de natal (ponto facultativo depois das 14hrs)
25/dez - Natal
31/dez - Véspera de ano novo (ponto facultativo depois das 14hrs)
fontes: Wikipedia - Feriados no Brasil
Froog.com.br - Feriados 2010
Espero que seja útil pra mais alguém, flw!
Assinar:
Postagens (Atom)