No intuito de entender melhor o processo de build do NetBeans (Ant).
Escrevi um ant build file bem simples para projetos java pequenos.
Ele não trata arquivos embarcados, readme files e documentação.
Mas já serve de base para que seja melhorado e utilizado dentro de suas limitações.
Ele está disponibilizado na licensa MIT.
Esse script Ant pode ser utilizado em projetos com qualquer outra licensa que você queira.
Download aqui.
Quem sou eu
- André Moraes
- Programador por profissão, formação e opção! Interessado em tudo relacionado a computadores, menos manutenção de hardware! Linguagens (interesse e trabalho): Java, C#, C/C++, Python, Ruby, Haskell. Atualmente trabalhando como Desenvolvedor (maior parte do tempo em soluções ASP.NET)
quinta-feira, 31 de dezembro de 2009
Ícones
Todo desenvolvedor gosta de bons ícones para suas aplicações.
Seguem ai alguns sites que contém diversos ícones para serem utilizados. Alguns são livres.
- Iconpedia
- Tango - Este é muito mais do que apenas ícones
- IconArchive
- FreeIconsWeb
Novos projetos Open-Source.
Desenvolvi a pouco tempo um gerador de código para utilizar no dia-a-dia.
Durante o desenvolvimento, acabei por criar dois outros projetos que são pequenos porém muito úteis:
Abraços e espero que os projetos sejam úteis.
Durante o desenvolvimento, acabei por criar dois outros projetos que são pequenos porém muito úteis:
- am-simple-factory: Ajuda na utilização do design patter (Factory) sem gerar grandes complicações (sem arquivos de configuração!). O projeto possui apenas duas classes. Vale a pena conferir.
- am-command-line-parser: Um parser para opções de linha de comando. Gera mensagens de erro, e o famoso "printUsage" com muito pouco esforço por parte do programador.
Abraços e espero que os projetos sejam úteis.
Am Java Regular Expression Designer
Olá!
Estava tentando assistir uns vídeos do Google no meu PC mas a conexão não estava das melhores! (Velox...)
Então acabei começando a desenvolver um software em Java para poder baixar o vídeo e depois assistir.
Durante o desenvolvimento, precisei criar uma expressão regular para identificar o ID do vídeo.
Então para dar uma mãozinha no processo, desenvolvi este aplicativo
Am Java Regular Expression Designer - or by simple - ared
Ele basicamente recebe uma expressão regular, um conjunto de teste e executa a expressão regular no conjunto de teste exibindo os grupos que foram encontrados.
Ele é muito simples porém pode ajudar na hora de trabalhar com expressões regulares.
Na página acima existe um pequeno manual (na verdade é apenas um screenshot) que mostra a aplicação e como você faz para utilizar.
Ah, você também pode baixar os códigos fontes e melhorar o aplicativo (ele realmente precisa pois é muito, muuuuito simples!). O código-fonte está liberado sobre a licensa MIT.
Abraços e boas expressões regulares!
Estava tentando assistir uns vídeos do Google no meu PC mas a conexão não estava das melhores! (Velox...)
Então acabei começando a desenvolver um software em Java para poder baixar o vídeo e depois assistir.
Durante o desenvolvimento, precisei criar uma expressão regular para identificar o ID do vídeo.
Então para dar uma mãozinha no processo, desenvolvi este aplicativo
Am Java Regular Expression Designer - or by simple - ared
Ele basicamente recebe uma expressão regular, um conjunto de teste e executa a expressão regular no conjunto de teste exibindo os grupos que foram encontrados.
Ele é muito simples porém pode ajudar na hora de trabalhar com expressões regulares.
Na página acima existe um pequeno manual (na verdade é apenas um screenshot) que mostra a aplicação e como você faz para utilizar.
Ah, você também pode baixar os códigos fontes e melhorar o aplicativo (ele realmente precisa pois é muito, muuuuito simples!). O código-fonte está liberado sobre a licensa MIT.
Abraços e boas expressões regulares!
domingo, 13 de dezembro de 2009
Utilizando alias no linux!
O Shell do Linux está anos luz a frente do Prompt do Dos disponível no Windows. Existem várias opções de shell, porém a mais utilizada é o bash.
Entre as grandes facilidades que vejo no bash é o comando alias.
Basicamente o alias serve para criar um apelido para um comando que você utiliza com muita frequência.
Por exemplo, se você usa muito o comando:
Abaixo estão três alias que eu acho muito práticos para a utilização do dia-a-dia:
Entre as grandes facilidades que vejo no bash é o comando alias.
Basicamente o alias serve para criar um apelido para um comando que você utiliza com muita frequência.
Por exemplo, se você usa muito o comando:
ls -laVocê pode criar um alias para ele da seguinte forma:
alias ls="ls -la"Agora, sempre que você utilizar o ls, ele irá expandir o comando para o alias que você definiu.
Abaixo estão três alias que eu acho muito práticos para a utilização do dia-a-dia:
Lista de Alias Salvadores!
alias cp="cp -v" alias tar-gz="tar -zcvf" alias tar-ugz="tar -xzvf" alias du-first="du -h --max-depth=0"
- faz com que toda cópia de arquivos seja verbose, sendo assim o shell sempre lista quais arquivos estão sendo copiados.
- utilizado para compactar uma pasta utilizando o tar e o gzip
- processo inverso, e serve para descompactar um arquivo .tar.gzip
- Lista o tamanho do diretório que você informar. Por padrão o du traz o total para todas os dirtórios filhos daquele que você informou. O du também pode ser utilizado para listar o tamanho de arquivos.
E para os WindowsManiacos que só vivem com a tela do Prompt, vale a pena uma olhada no WindowsPowerShell e no Cygwin.
Este último traz algumas das ferramentas (muito boas!!!) do Linux para o Windows.
É... foi-se a época que o pessoal do Linux precisava portar aplicativo do Windows! Hoje em dia ocorre extamente o contrário, assim que algo legal sai para o Linux muitos "WindowsUsers" pedem para o aplicativo ser portado!
Marcadores:
alias,
directory size,
disk usage,
file size,
gz,
linux,
shell,
tar
sábado, 28 de novembro de 2009
Google Go - Arquivo de Sintaxe para GEdit
Olá,
Escrevi um arquivo de sintaxe para a biblioteca GtkSourceView (base do Gedit) para reconhcer a sintaxe da linguagem go.
Siga o link abaixo e baixe o arquivo go.lang
http://sites.google.com/site/alamoraespage/google-go-contents
Para instalar basta baixar o arquivo e copiar para o diretório de sintaxe, no ubuntu normalmente encontra-se em:
Feito isso basta abrir o Gedit que a opção da linguagem estará disponibilizada.
Escrevi um arquivo de sintaxe para a biblioteca GtkSourceView (base do Gedit) para reconhcer a sintaxe da linguagem go.
Siga o link abaixo e baixe o arquivo go.lang
http://sites.google.com/site/alamoraespage/google-go-contents
Para instalar basta baixar o arquivo e copiar para o diretório de sintaxe, no ubuntu normalmente encontra-se em:
/usr/share/gtksourceview-2.0/language-specs
Feito isso basta abrir o Gedit que a opção da linguagem estará disponibilizada.
quinta-feira, 19 de novembro de 2009
Tutorial Go - Parte 1 - Hello World
Este é o primeiro post de uma série de postagens que irão apresentar a linguagem Go através de uma série de pequenos blocos de código fonte.
Como em qualquer linguagem, começamos pelo Hello World, vejam abaixo o trecho de código:
package main
import "fmt"
func main() {
fmt.Printf("\nhello, world");
fmt.Printf("\nhello, Mr. World\nA little bit diferent")
}
A primeira linha do código define o nome do pacote, neste caso main
Logo abaixo está a linha que importa os pacotes necessários. Um fato interessante na linguagem é que se o programador importar um pacote que ele não necessita o compilador acusa isso como um erro.
A seguir temos a declaração da função main (ponto de início do programa) posteriormente o corpo da função definido entre {}.
Como Go é uma linguagem compilada, depedendo da sua arquitetura de processador você precisará utilizar um compilador diferente. No meu caso utilizo o 8g, sendo assim o processo para compilar e executar (no Linux) é:
E isso é tudo, nos vemos na próxima
Como em qualquer linguagem, começamos pelo Hello World, vejam abaixo o trecho de código:
package main
import "fmt"
func main() {
fmt.Printf("\nhello, world");
fmt.Printf("\nhello, Mr. World\nA little bit diferent")
}
A primeira linha do código define o nome do pacote, neste caso main
Logo abaixo está a linha que importa os pacotes necessários. Um fato interessante na linguagem é que se o programador importar um pacote que ele não necessita o compilador acusa isso como um erro.
A seguir temos a declaração da função main (ponto de início do programa) posteriormente o corpo da função definido entre {}.
Como Go é uma linguagem compilada, depedendo da sua arquitetura de processador você precisará utilizar um compilador diferente. No meu caso utilizo o 8g, sendo assim o processo para compilar e executar (no Linux) é:
8g helloworld.go 8l -o helloworld.bin helloworld.8 ./helloworld.bin
E isso é tudo, nos vemos na próxima
sábado, 14 de novembro de 2009
Configurando o Vim para a linguagem Go
A linguagem Go já vem com vários documentos de definição de sintaxe para os editores mais comuns (emacs, vim, TextMate).
Como estou utilizando o Ubuntu normalmente utilizo o GEdit porém o mesmo ainda está sem suporte então dei uma chance ao Vim.
Para utilizar o Vim executei os seguintes passos:
Instalando a versão completa do vim. O padrão no Ubuntu é trazer apenas o vim-tiny que é uma versão bem menor do Vim.
Digite o seguinte comando:
Agora o próximo passo e criar ou alterar o seu arquivo .vimrc (localizado em $HOME/.vimrc)
No meu caso eu criei o arquivo e inseri as seguintes linhas:
Não sou especialista em Vim, porém por dedução as linhas fazer respectivamente:
Como estou utilizando o Ubuntu normalmente utilizo o GEdit porém o mesmo ainda está sem suporte então dei uma chance ao Vim.
Para utilizar o Vim executei os seguintes passos:
Instalando a versão completa do vim. O padrão no Ubuntu é trazer apenas o vim-tiny que é uma versão bem menor do Vim.
Digite o seguinte comando:
sudo apt-get install vim-runtime
Agora o próximo passo e criar ou alterar o seu arquivo .vimrc (localizado em $HOME/.vimrc)
No meu caso eu criei o arquivo e inseri as seguintes linhas:
Arquivo de configuração do vim
let gosyntaxfile = "$GOROOT/misc/vim/go.vim" syntax on au BufRead,BufNewFile *.go set filetype=golang au! Syntax golang source $GOROOT/misc/vim/go.vim
Não sou especialista em Vim, porém por dedução as linhas fazer respectivamente:
- Linha 1: Define uma Variável com o caminho do arquivo de sintaxe
- Linha 2: Habilita o syntax highlight
- Linha 4: Associação a extensão (.go) ao tipo de linguagem golang
- Linha 5: Define o arquivo de sintaxe para a linguagem golang definida na linha anterior
Instalando o ambiente para a linguagem Go
Olá!
Comecei a estudar a linguagem Go (novo brinquendo lançado pela Google) hoje, até onde já li e assisti sobre a linguagem ela parece ser muito interessante. Principalmente nas questões relativas a Concorrência
Neste post vou basicamente traduzir o tutorial de instalação do ambiente Go destacando os passos que utilizei para instalar no Ubuntu 9.04 (os passos devem ser os mesmos para a versão 9.10)
Primeiramente é necessário configurar algumas variáveis de ambiente necessárias para a instalação e utilização do Go:
Explicando as variáveis:
GOROOT: Pasta raiz do projeto Go, nesta pasta que você irá baixar o código-fonte da linguagem.
GOARCH: Arquitetura do seu processador, voce pode utilizar um dos valores abaixo:
Feito isso você deve baixar os fontes da linguagem para a pasta GOROOT. A Google utilizou a ferramenta mercurial para gerenciar as versões, sendo assim você precisa instalar essa ferramenta no Ubuntu. Para isso vamos utilizar o APT-GET.
Caso o processo termine com sucesso você deve ver a seguinte mensagem:
Pronto o ambiente Go já está instalado em sua máquina e você pode começar a experimentar essa nova linguagem.
O endereço do tutorial de instalação oficial é o seguinte: http://golang.org/doc/install.html
Lá você encontra outros tutoriais sobre a linguagem.
Este vídeo mostra um pouco do que a linguagem pode oferecer.
Comecei a estudar a linguagem Go (novo brinquendo lançado pela Google) hoje, até onde já li e assisti sobre a linguagem ela parece ser muito interessante. Principalmente nas questões relativas a Concorrência
Neste post vou basicamente traduzir o tutorial de instalação do ambiente Go destacando os passos que utilizei para instalar no Ubuntu 9.04 (os passos devem ser os mesmos para a versão 9.10)
Primeiramente é necessário configurar algumas variáveis de ambiente necessárias para a instalação e utilização do Go:
Variáveis para a configuração do ambiente Go
export GOROOT=$HOME/go export GOARCH=amd64 export GOOS=linux export GOBIN=$HOME/bin/go
Explicando as variáveis:
GOROOT: Pasta raiz do projeto Go, nesta pasta que você irá baixar o código-fonte da linguagem.
GOARCH: Arquitetura do seu processador, voce pode utilizar um dos valores abaixo:
- amd64: Processadores Amd de 64 bits (são os processadores x86_64)
- 386: Processadores baseados na arquitetura 386 (praticamente todos os procesadores intel se enquadram)
- arm: Processadores para dispositivos móveis (celulares, smartphones, alguns netbooks)
- linux: Sistemas baseados no kernel Linux
- darwin: Mac OSX 10.5/10.6
- nacl: Native Client, não sei o que essa opção representa, porém parece ser algo para os celulares?? Vai saber? De toda forma, o próprio site da linguagem informa que essa opção não está 100% ok!
Feito isso você deve baixar os fontes da linguagem para a pasta GOROOT. A Google utilizou a ferramenta mercurial para gerenciar as versões, sendo assim você precisa instalar essa ferramenta no Ubuntu. Para isso vamos utilizar o APT-GET.
sudo apt-get install mercurialAgora basta baixar os fontes utilizando o comando:
hg clone -r release https://go.googlecode.com/hg/ $GOROOTLogo em seguida o que você precisa é instalar as ferramentas para compilar o compilador Go. Digite a seguinte linha de comando:
sudo apt-get install bison gcc libc6-dev ed makeAo terminar de instalar as ferramentas necessárias, você deve iniciar o processo de compilar. Digite os seguintes comandos no seu terminal:
Compilando o Compilador Go
cd $GOROOT/src ./all.bash
Resultado
--- cd ../test N known bugs; 0 unexpected bugs
Pronto o ambiente Go já está instalado em sua máquina e você pode começar a experimentar essa nova linguagem.
O endereço do tutorial de instalação oficial é o seguinte: http://golang.org/doc/install.html
Lá você encontra outros tutoriais sobre a linguagem.
Este vídeo mostra um pouco do que a linguagem pode oferecer.
quarta-feira, 11 de novembro de 2009
Uma nova linguagem - Google Go
É isso ai!
A Google sempre bancando seus empregados para gastarem parte do seu dia investindo em seus projetos pessoais acabou de lançar a sua própria linguagem de programação.
Go é o nome da nova criação da gigante de Mountain View.
Ainda não li o tutorial da linguagem, isso fica para uma próxima postagem.
Não é possível saber se a linguagem será ou não um grande sucesso, mas com certeza em pouco tempo muita gente já vai estar se divertindo com a nova linguagem da Google (está sendo assim com o Chrome). Não duvido nada que em pouco tempo já será disponibilizada uma versão do Google App Engine para a linguagem Go.
Referência da matéria no TechCrunch
- Logo da nova linguagem
A Google sempre bancando seus empregados para gastarem parte do seu dia investindo em seus projetos pessoais acabou de lançar a sua própria linguagem de programação.
Ainda não li o tutorial da linguagem, isso fica para uma próxima postagem.
Não é possível saber se a linguagem será ou não um grande sucesso, mas com certeza em pouco tempo muita gente já vai estar se divertindo com a nova linguagem da Google (está sendo assim com o Chrome). Não duvido nada que em pouco tempo já será disponibilizada uma versão do Google App Engine para a linguagem Go.
Referência da matéria no TechCrunch
- Logo da nova linguagem
sábado, 3 de outubro de 2009
Instalando um FTP no Ubuntu 9.04 - Proftpd
Na minha empreitada por limpar de vez o Windows do meu HD hoje precisei configurar uma Máquina Virtual para instalar o Windows e as ferramentas que preciso para trabalhar nela.
Antes que sejam lançadas as critícas, eu uso o Windows para desempenhar as minhas atividades de trabalho! Afinal de contas, dinheiro é necessário! :)
Bom, para fazer isso eu precisava transferir as isos e instaladores do meu note com o Vista para o meu desktop Ubuntu (para poder então liberar o note para instalar o Ubuntu).
Então vamos ao que interessa, como instalar e configurar um servidor ftp no Ubuntu 9.04?
Primeiro, digite na linha de comando o seguinte:
sudo apt-get install proftpd
Durante a instalação você será questionado se deseja configurar o ftp para utilizar o inetd ou standalone.
No meu caso o inetd seria suficiente, porém preferi o standalone. A diferença é que no standalone o servidor é independente do inetd e já no modo inetd o processo do ftp e iniciado cada vez que uma requisição é aberta.
O inetd ajuda a poupar recursos porém recursos na minha máquina não são problema então o standalone foi a escolha!
Feito isso o serviço será iniciado e já estará pronto para ser utilizado. Para acessar basta no seu cliente ftp entrar com o Ip do seu servidor, seu usuário e senha. A senha é trafegada em plain-text na configuração padrão.
A instalação acima cria uma pasta ftp no diretório home que permite acesso anônimo ao ftp. Todos os usuários por padrão podem acessar suas pastas através do ftp.
Abraço
quarta-feira, 30 de setembro de 2009
OnLine Web Color Picker
Muitas vezes nós desenvolvedores precisamos trabalhar um pouco com questões gráficas e isso com certeza irá envolver escolher uma cor para nossos gráficos, textos ou telas.
Sem questionar o bom gosto de um programador para escolher a cor do seu site (um verde com fundo preto ao estilo terminal do linux), o que mais incomoda é encontrar o código hexadecimal da cor desejada.
Para facilitar nosso serviço alguém teve a brilhante idéia de criar um color picker on line!
Basta digitar o endereço na URL ou clicar no link abaixo e você será redirecionado para uma tela onde um quadrado e alguns sliders lhe permitiram escolher a cor desejada.
Meus parabéns ao desenvolvedor do site.
Abraços,
terça-feira, 22 de setembro de 2009
HTML 5
Estava a um tempo tentando decidir sobre qual tecnologia para desenvolvimento WEB (client-side) iria escolher para dedicar meu tempo de estudo.
Estava quase certo que iria utilizar o FLEX da Adobe para criar minhas aplicações RIA.
Porém a umas duas semanas precisei trabalhar com orientação a objetos em JavaScript e comecei a questionar se a minha decisão por ActionScript/Flex seria realmente a melhor.
Hoje acabei encontrando alguns links interessantes sobre JavaScript/HTML5 e tive a certeza de que as vantagens que o ambiente Flex da Adobe apresenta para os desenvolvedores foram superadas.
A seguir está o link da especificação do HTML 5, um tópico que vale a pena é a tag CANVAS
W3C HTML 5 Reference.
Outro ponto positivo do HTML 5 é que ele suporta "offline storage", o que permite ao desenvolvedor do script armazenar dados na máquina do cliente.
A medida que iniciar meus estudos sobre HTML 5 irei postar mais informações.
Estava quase certo que iria utilizar o FLEX da Adobe para criar minhas aplicações RIA.
Porém a umas duas semanas precisei trabalhar com orientação a objetos em JavaScript e comecei a questionar se a minha decisão por ActionScript/Flex seria realmente a melhor.
Hoje acabei encontrando alguns links interessantes sobre JavaScript/HTML5 e tive a certeza de que as vantagens que o ambiente Flex da Adobe apresenta para os desenvolvedores foram superadas.
A seguir está o link da especificação do HTML 5, um tópico que vale a pena é a tag CANVAS
W3C HTML 5 Reference.
Outro ponto positivo do HTML 5 é que ele suporta "offline storage", o que permite ao desenvolvedor do script armazenar dados na máquina do cliente.
A medida que iniciar meus estudos sobre HTML 5 irei postar mais informações.
domingo, 16 de agosto de 2009
Build da documentação do Flex 3 SDK
A tecnologia Flash sempre esteve distante dos programadores, pois seu publico alvo eram os designers das aplicações.
Porém com o avanço das aplicações RIA a Adobe decidiu trazer as vantagens da tecnologia Flash para os programadores, e assim, criou o Flex.
A partir da versão 3, a tecnologia Flex tornou-se Open Source.
Voce pode baixar o código fonte trunk ou então utilizar a branche mais estável, 3.3.0. Atualmente estou utilizando a branche 3.3.0.
Bom, após baixar o código-fonte você verá que a documentação não foi compilada e se você baixar a versão binária da SDK também verá que a documentação não está presente.
Porém ao rodar o build da documentação (lembre-se que estou utilizando a branche 3.3.0) o mesma não executa e acusa vários erros.
Pesquisei um pouco e acabei encontrado um link no issue tracker da Adobe que explicava como tentar solucionar, e é isto que vou mostrar para vocês agora.
Entre no diretório\asdoc\
Altere o arquivo build.properties da seguinte maneira:
E depois altere o arquivo mxml-manifest.xml e comente todas as entradas referentes a biblioteca graphics. Deve ficar parecido com:
Feito isso basta acionar o ant que o build irá ocorrer.
Ah, para substituir os < e > no xml, usei o site: centricle
Porém com o avanço das aplicações RIA a Adobe decidiu trazer as vantagens da tecnologia Flash para os programadores, e assim, criou o Flex.
A partir da versão 3, a tecnologia Flex tornou-se Open Source.
Voce pode baixar o código fonte trunk ou então utilizar a branche mais estável, 3.3.0. Atualmente estou utilizando a branche 3.3.0.
Bom, após baixar o código-fonte você verá que a documentação não foi compilada e se você baixar a versão binária da SDK também verá que a documentação não está presente.
Porém ao rodar o build da documentação (lembre-se que estou utilizando a branche 3.3.0) o mesma não executa e acusa vários erros.
Pesquisei um pouco e acabei encontrado um link no issue tracker da Adobe que explicava como tentar solucionar, e é isto que vou mostrar para vocês agora.
Entre no diretório
Altere o arquivo build.properties da seguinte maneira:
frameworks.dir = ${basedir}/../frameworks
playerglobal.dir = ${basedir}/../modules/playerglobal/src
asdoc.options = \
-namespace http://www.adobe.com/2006/mxml ${basedir}/mxml-manifest.xml \
-doc-namespaces http://www.adobe.com/2006/mxml \
-doc-classes \
FrameworkClasses \
-source-path \
"${frameworks.dir}/projects/flex/src" \
"${frameworks.dir}/projects/framework/src" \
"${frameworks.dir}/projects/haloclassic/src" \
"${frameworks.dir}/projects/rpc/src" \
"${frameworks.dir}/projects/utilities/src" \
E depois altere o arquivo mxml-manifest.xml e comente todas as entradas referentes a biblioteca graphics. Deve ficar parecido com:
<!-- graphics -->
<!--
<component id="BitmapFill" class="mx.graphics.BitmapFill"/>
<component id="GradientEntry" class="mx.graphics.GradientEntry"/>
<component id="LinearGradient" class="mx.graphics.LinearGradient"/>
<component id="LinearGradientStroke" class="mx.graphics.LinearGradientStroke"/>
<component id="RadialGradient" class="mx.graphics.RadialGradient"/>
<component id="SolidColor" class="mx.graphics.SolidColor"/>
<component id="Stroke" class="mx.graphics.Stroke"/>
<component id="BitmapGraphic" class="mx.graphics.BitmapGraphic"/>
<component id="CubicBezierSegment" class="mx.graphics.CubicBezierSegment"/>
<component id="Ellipse" class="mx.graphics.Ellipse"/>
-->
Feito isso basta acionar o ant que o build irá ocorrer.
Ah, para substituir os < e > no xml, usei o site: centricle
sábado, 15 de agosto de 2009
Buscando pacotes com o apt.
Provavelmente todos os usuários de distribuições derivadas do Debian já utilizaram alguma vez o comando apt-get para instalar ou remover um pacote.
Porém o apt não serve apenas para instalar os pacotes, você pode utilizá-lo para buscar um pacote no repositório.
Para fazer isso é simples, basta digitar:
Por exemplo, para buscar todos os pacotes relacionados com VirtualBox (VM da Sun), basta digitar:
O resultado deve ser:
Vale lembrar que a busca é feita nos dados armazenados localmente, sempre que possível execute um apt-get update para atualizar a lista de pacotes.
Informação recuperada em: Mike Kruckenberg
Porém o apt não serve apenas para instalar os pacotes, você pode utilizá-lo para buscar um pacote no repositório.
Para fazer isso é simples, basta digitar:
apt-cache search
Por exemplo, para buscar todos os pacotes relacionados com VirtualBox (VM da Sun), basta digitar:
apt-cache search virtualbox
O resultado deve ser:
imvirt - detects several virtualizations
vboxgtk - simple GTK+ frontend for VirtualBox
virtualbox-ose - x86 virtualization solution - binaries
virtualbox-ose-dbg - x86 virtualization solution - debugging symbols
virtualbox-ose-guest-source - x86 virtualization solution - guest addition module source
virtualbox-ose-guest-utils - x86 virtualization solution - guest utilities
virtualbox-ose-source - x86 virtualization solution - kernel module source
virtualbox-2.2 - Sun VirtualBox
virtualbox-3.0 - Sun VirtualBox
Vale lembrar que a busca é feita nos dados armazenados localmente, sempre que possível execute um apt-get update para atualizar a lista de pacotes.
Informação recuperada em: Mike Kruckenberg
sexta-feira, 14 de agosto de 2009
Música para programar...
Uma boa forma de aumentar o rendimento na hora de programar é ouvir uma boa música (pelo menos para mim funciona).
Sempre que possível estou utilizando o ambiente Linux (mais precisamente Ubuntu 9.04) para realizar minhas atividades não relacionadas ao meu trabalho.
Apesar da Nullsoft disponibilizar uma versão do Winamp para Linux, prefiro utilizar as ferramentas que a comunidade recomenda. Sendo assim estou utilizando o Rhythmbox para ouvir minhas músicas.
Porém uma coisa que sinto falta é a grande variedade de rádios on-line que eu tenho disponível no Winamp. Sendo assim dei uma procurada no google e achei o link do Shoutcast (serviço que disponibiliza as rádios do winamp).
Para utilizar o Shoutcast no Rhythmbox basta navegar até o site da Shoutcast, encontrar sua rádio preferida e adicionar na lista de rádios do Rhythmbox.
Não é a mesma coisa que utilizar a integração do winamp, mas já ajuda a curtir boa música.
Abraço!
Sempre que possível estou utilizando o ambiente Linux (mais precisamente Ubuntu 9.04) para realizar minhas atividades não relacionadas ao meu trabalho.
Apesar da Nullsoft disponibilizar uma versão do Winamp para Linux, prefiro utilizar as ferramentas que a comunidade recomenda. Sendo assim estou utilizando o Rhythmbox para ouvir minhas músicas.
Porém uma coisa que sinto falta é a grande variedade de rádios on-line que eu tenho disponível no Winamp. Sendo assim dei uma procurada no google e achei o link do Shoutcast (serviço que disponibiliza as rádios do winamp).
Para utilizar o Shoutcast no Rhythmbox basta navegar até o site da Shoutcast, encontrar sua rádio preferida e adicionar na lista de rádios do Rhythmbox.
Não é a mesma coisa que utilizar a integração do winamp, mas já ajuda a curtir boa música.
Abraço!
Manipulando arquivos .iso no Linux
Apesar deste blog ser voltado para programação, algumas dicas do ambiente Linux não podem ferir. :]
Bom, a primeira refere-se a como criar uma imagem de um cd/dvd para o seu sistema de arquivos. Basta escrever:
Este comando copia o disco byte a byte (e da maneira que está pode ser muito lento, porém você não tem problemas em setar tamanhos de blocos errados).
Depois de terminar a cópia do disco, você pode verificar a integridade do seu arquivo com:
Agora o mais interessante do linux é que facilmente você pode pegar uma iso e utilizar como um diretório do seu computador, através do comando mount.
Digite o seguinte comando:
O comando mount recuperei deste site!
Bom, a primeira refere-se a como criar uma imagem de um cd/dvd para o seu sistema de arquivos. Basta escrever:
dd if=/dev/cdrom of=/endereco/onde/quer/salvar/oiso.iso
Este comando copia o disco byte a byte (e da maneira que está pode ser muito lento, porém você não tem problemas em setar tamanhos de blocos errados).
Depois de terminar a cópia do disco, você pode verificar a integridade do seu arquivo com:
isovfy /endereco/onde/salvou/oiso.iso
Agora o mais interessante do linux é que facilmente você pode pegar uma iso e utilizar como um diretório do seu computador, através do comando mount.
Digite o seguinte comando:
mount -o loop -t iso9660 /endereco/onde/salvou/oiso.iso /diretorio/de/destino
O comando mount recuperei deste site!
quarta-feira, 5 de agosto de 2009
Chamando métodos no servidor através de javascript.
Este post apresenta apenas dois links para a documentação do MSDN que indicam como implementar a chamada de métodos no lado server através de código javascript (sem utilizar diretamente o _doPostBack).
Depois faço um novo post com algum exemplo.
Documentação da interface ICallbackEventHandler
http://msdn.microsoft.com/en-us/library/system.web.ui.icallbackeventhandler.aspx
Exemplo de implementação da microsoft
http://msdn.microsoft.com/en-us/library/ms178210%28VS.80%29.aspx
Depois faço um novo post com algum exemplo.
Documentação da interface ICallbackEventHandler
http://msdn.microsoft.com/en-us/library/system.web.ui.icallbackeventhandler.aspx
Exemplo de implementação da microsoft
http://msdn.microsoft.com/en-us/library/ms178210%28VS.80%29.aspx
terça-feira, 4 de agosto de 2009
Carregando arquivos embarcados - .Net
Muitas vezes precisamos carregar arquivos que são embarcados em nossas dlls ou executáveis.
Isso é muito comum com imagens de botões. Pois quando o seu executável é publicado, você não libera uma pasta cheia de imagens para seus usuários.
O trecho abaixo, mostra como carregar um arquivo embarcado em um assembly. É bem simples:
Isso é muito comum com imagens de botões. Pois quando o seu executável é publicado, você não libera uma pasta cheia de imagens para seus usuários.
O trecho abaixo, mostra como carregar um arquivo embarcado em um assembly. É bem simples:
O código acima é bem simples e auto-explicativo. Com este recurso você pode ler qualquer coisa que possa ser manipulada através de Streams (imagens, vídeos, textos, xml, xsd, etc).
public class ResourceReader
{
public static System.IO.Stream OpenResource(string fullName)
{
/* Full name é o nome completo do recurso, ou seja
* o caminho onde você colocou o recurso na sua solução.
* Apenas substituindo o "/" por "."
* Supondo que eu tenha um xml colocado na pasta
* <raiz da solução>\Andre\Configuration\Network\config.xml
* eu acessaria o recuros com o seguinte endereço:
* Andre.Configuration.Network.config.xml
* */
/* Recuperei o objeto que representa a dll ou exe que contém
* o código corrente */
System.Reflection.Assembly meuAssembly = System.Reflection.Assembly.GetExecutingAssembly();
/* Retorna um stream para ler o conteudo que está embarcado em minha dll */
return meuAssembly.GetManifestResourceStream(fullName);
}
}
terça-feira, 14 de julho de 2009
Asp.Net Child Controls
Criar controles customizados é uma parte importante do trabalho de desenvolvedores asp.Net. Muitas vezes os controles criados precisam manipular uma lista de controles filhos. (Child Controls).
Pensando nisso os desenvolvedores do Asp.Net criaram uma classe base para este tipo de controles, a CompositeControl.
A utilização da CompositeControl faz o trabalho de criar controles complexo uma tarefa bastate fácil, porém algumas vezes você precisa herdar de um controle que não é filho de CompositeControl, por exemplo customizar um Textbox.
Implementar as funcionalidades já presentes na ComposisteControle pode ser feita implementando alguns métodos.
- CreateChildControls: Responsável por criar os controles filhos e adicioná-los à lista de controles filhos (this.Controls). O ideal é que a criação de controles filhos seja controlada dentro desta função, evitando que o código fique espalhado.
- RenderChildren(HtmlTextWriter writer): Responsável por renderizar os controles filhos, o modo de operação padrão é simplesmente chamar o método RenderControl para cada um dos itens da lista (this.Controls).
- Render(HtmlTextWriter writer): Este método apenas deve efetuar uma chamada ao método EnsureChildControls() e depois pode simplesmente chamar o método da classe base (base.Render(writer);)
- EnsureChildControls: Este método não deve ser implementado, porém ele tem um papel fundamental. Seu objetivo é verificar a propriedade ChildControlsCreated e caso seja false, executar a chamada ao método CreateChildControls.
- ChildControlsCreated: Sempre que for necessário recriar os itens filhos, o método ideal é setar essa propridade como false e posteriormente efetuar uma chamada ao método EnsureChildControls
public class LabeledTextBox : WebControl
{
private Label _nameLabel;
private TextBox _field;
[Browsable(true)]
public Label NameLabel
{
get
{
EnsureChildControls();
return _nameLabel;
}
}
public TextBox Field
{
get
{
EnsureChildControls();
return _field;
}
}
protected override void CreateChildControls()
{
this.Controls.Clear();
base.CreateChildControls();
_nameLabel = new Label();
_nameLabel.ID = this.ID + "_Label";
_field = new TextBox();
_field.ID = this.ID + "_Textbox";
this.Controls.Add(_nameLabel);
this.Controls.Add(_field);
}
protected override void Render(HtmlTextWriter writer)
{
EnsureChildControls();
base.Render(writer);
}
protected override void RenderChildren(HtmlTextWriter writer)
{
_nameLabel.RenderControl(writer);
writer.WriteBreak();
_field.RenderControl(writer);
}
}
Esta classe é muito simples e não encapsula muito bem os controles, o ideal seria nunca exibir os controles filhos através de propridades públicas pois assim classes clientes podem se apoiar nas interfaces dos controles exibidos nas propriedades.
Sendo assim ao exibir os controles da maneira apresentada o controle fica preso e poderá somente utilizar controles de classes que descendem de Label e Textbox.
Assinar:
Postagens (Atom)