sexta-feira, 22 de maio de 2009
Lógica Básica
Galera, pra dar início as minhas postagens aqui no blog, proponho um simples desafio como distração. A proposta é criar uma "class LogicaBasica" que implemente uma solução para informar o resultado de uma subtração entre "x" e "y" sendo que só é permitido utilizar o operador de adição para os cálculos.
Certificação JAVA: Sobrecarga de construtores
Bom pessoal, hoje vamos começar aqui no blog uma série de posts com dicas para certificação Java SCJP, Certificação com o JLiVe. Como estou começando a estudar para conseguir esta certificação, estes posts vão servir tanto para mim quanto para quem tem o mesmo objetivo.
Vamos então:
Sobre construtores, considere o código abaixo.
Sobre construtores, considere o código abaixo.
1. public class TesteQual a opção correta?
2. {
3. public Teste(String str){
4. System.out.println ("Teste(String) executado");
5. }
6. public Teste(Object obj){
7. System.out.println ("Teste(Object) executado");
8. }
9. public Teste(){
10. System.out.println ("Construtor sem argumentos executado");
11. }
12. public static void main(String[] args) {
13. Teste teste = new Teste(null);
14. }
15. }
- chama o construtor public Teste(String str)
- chama o construtor public Teste(Object obj)
- chama o construtor public Teste()
- Código não compila, nenhum construtor adequado definido.
A resposta correta é a número 1. Tanto o construtor que recebe Object e o que recebe uma String são considerados pelo compilador como elegíveis. O null apesar de ser nada... ele está sendo passado como parâmetro, é uma referencia vazia, por tanto o construtor sem parâmetro não é chamado.
Entre o String e o Object o compilador escolhe o mais especifico. Mais o que string tem a ver com null? O null é nada, nada pode ser string ou object (?)... O string é escolhido pois sempre que vc passar uma string você vai poder fazer cast pra object, mas nem todo object vai poder ser uma string.
Dúvidas???
Falei bobagem???
Então entre em contato... através de comentário
abraços.
Entre o String e o Object o compilador escolhe o mais especifico. Mais o que string tem a ver com null? O null é nada, nada pode ser string ou object (?)... O string é escolhido pois sempre que vc passar uma string você vai poder fazer cast pra object, mas nem todo object vai poder ser uma string.
Dúvidas???
Falei bobagem???
Então entre em contato... através de comentário
abraços.
quinta-feira, 21 de maio de 2009
Skype para Ubuntu 64bits (Linux)
Já foi postado aqui no blog por Diego (leia aqui) um macetinho pra fazer o skype funcionar na arquitetura 64bits. Contudo, navegando pelo skype comunity, achei um link para o skype na na arquitetura 64bits aparentemente sem armengues.
confiram: http://www.skype.com/go/getskype-linux-ubuntu-amd64
OBS.: Ainda não testei a versão informada acima, pois, aqui no trabalho, minha máquina é de 32bits.
Deixem seus comentários a respeito
quarta-feira, 20 de maio de 2009
1 Ano de Blog!
Como não poderia deixar de ser, estou aqui para lembrar a todos do primeiro aniversário do JaLiVE (Java Linux e Vatapá Experts). Tudo começou dia 11/05/2008 com o post Ubuntu + Active Directory: Um guia simples e definitivo, ainda éramos eu e Mário apenas no blog, mas mesmo assim fizemos um trabalho legal. De lá pra cá o blog só fez crescer e mais pessoas fizeram e fazem parte dessa história. Atualmente o quadro de colaboradores do blog é:
Vida eterna ao JaLiVE!
- Allan Charlles
- Diego Barreto
- Ian Laborda
- Mário Jorge
- Murilo Caetano
Vida eterna ao JaLiVE!
MacOs Hospedeiro e Windows Virtual
Eu precisei instalar o Windows numa máquina virtual (VirtualBox) a partir de um MacBook (MacOs X). A máquina virtual estava beleza, a não ser pelo detalhe do teclado, pois o teclado do MacBook é diferente do teclado que o Windows esperava (por exemplo o teclado do MacBook não tem a tecla delete, tem apenas o backspace).
Tentando encontrar um software que resolvesse o meu problema eu encontrei o KeyTweak. Ele é um software free que consegue remapear teclas do teclado a fim de deixá-lo mais adequado à sua necessidade.
Tentando encontrar um software que resolvesse o meu problema eu encontrei o KeyTweak. Ele é um software free que consegue remapear teclas do teclado a fim de deixá-lo mais adequado à sua necessidade.
Apostila Fj21 da Caelum
Ontem resolvi acessar o site da Caelum, observei que a apostila gratuita que eles distribuem do curso de java web (FJ21), havia sido atualizada em fevereiro de 2009. Quando comecei a estudar java web essa apostila me ajudou muito e quando comecei a estagiar na área - em 2008 - meu treinamento foi praticamente baseado na apostila. Observei que a apostila está bem interessante. Uma das coisas que me chamou atenção de cara foi na seção "11.1 - Propriedades de páginas JSP" da apostila. Nesta seção eles destacam as novas propriedades permitidas pela API do JSP que são:
- Desativar Scriptlets nas páginas jsp.
<scripting-invalid>true</scripting-invalid>
Ao conversar com um colega de trabalho sobre esta possibilidade ele comentou "que bom, assim acaba com a macarronada nos jsp". Macarronada é o termo que algumas pessoas utilizam para qualificar essa prática de incluir programação nas páginas JSP. Quando pensamos numa macarronada temos aquela visão de tudo misturado, enrolado um no outro sem saber onde começa um ou termina o outro. Se você pensar em um sistema que utiliza código na pagina JSP para fazer conexão com um banco de dados é mais ou menos a mesma coisa... o lugar que vc devia utilizar apenas para apresentação, vc colocar código, fica um tanto quanto dificil de um outro programador dê manutenção no seu código.
- Desativar Expression Language
<el-ignored>false</el-ignored> //O padrão é que venha habilitado para desabilitar set true
Não sei em que situação isso seria útil, eu por exemplo utilizo bastante expression Language. Talvez alguns frameworks permitam que utilizem outras formas.
- Determinar a codificação dos arquivos de maneira genérica
<page-encoding>UTF-8</page-encoding>
Imagine toda vez que você criar uma pagina jsp ter que definir a codificação da mesma. Isso é meio chato, essa solução eu achei bastante prática.
- Incluir arquivos estaticamente antes e depois de seus JSPs:
<include-prelude>/antes.jspf</include-prelude>
<include-coda>/depois.jspf</include-coda>
Os velhos includes topo e rodapé. Aquela mesma história... ter que ficar incluindo em todas as páginas. Mais praticidade pra sua vida novamente ;)
Então, para configurar essas opções basta incluir a listagem abaixo no seu arquivo web.xml
<jsp-config>
<jsp-property-group>
<display-name> todos os jsps</display-name>
<description> configuracoes de todos os jsps</description>
<url-pattern> *.jsp</url-pattern>
<scripting-invalid> true</scripting-invalid>
<el-ignored> false</el-ignored>
<page-encoding> UTF-8</page-encoding>
<include-prelude> /antes.jspf</include-prelude>
<include-coda> /depois.jspf</include-coda>
</jsp-property-group>
</jsp-config>
Observem que eu destaquei a parte <url-pattern> pra chamar a atenção que além de permitir que você faça essa configuração para todos os arquivos .jsp, você também pode configurar para um arquivo específico.
Bastante interessante, não acham?
Por agora é só.
Abraços.
FONTE: www.caelum.com.br, curso FJ21
- Desativar Scriptlets nas páginas jsp.
<scripting-invalid>true</scripting-invalid>
Ao conversar com um colega de trabalho sobre esta possibilidade ele comentou "que bom, assim acaba com a macarronada nos jsp". Macarronada é o termo que algumas pessoas utilizam para qualificar essa prática de incluir programação nas páginas JSP. Quando pensamos numa macarronada temos aquela visão de tudo misturado, enrolado um no outro sem saber onde começa um ou termina o outro. Se você pensar em um sistema que utiliza código na pagina JSP para fazer conexão com um banco de dados é mais ou menos a mesma coisa... o lugar que vc devia utilizar apenas para apresentação, vc colocar código, fica um tanto quanto dificil de um outro programador dê manutenção no seu código.
- Desativar Expression Language
<el-ignored>false</el-ignored> //O padrão é que venha habilitado para desabilitar set true
Não sei em que situação isso seria útil, eu por exemplo utilizo bastante expression Language. Talvez alguns frameworks permitam que utilizem outras formas.
- Determinar a codificação dos arquivos de maneira genérica
<page-encoding>UTF-8</page-encoding>
Imagine toda vez que você criar uma pagina jsp ter que definir a codificação da mesma. Isso é meio chato, essa solução eu achei bastante prática.
- Incluir arquivos estaticamente antes e depois de seus JSPs:
<include-prelude>/antes.jspf</include-prelude>
<include-coda>/depois.jspf</include-coda>
Os velhos includes topo e rodapé. Aquela mesma história... ter que ficar incluindo em todas as páginas. Mais praticidade pra sua vida novamente ;)
Então, para configurar essas opções basta incluir a listagem abaixo no seu arquivo web.xml
<jsp-config>
<jsp-property-group>
<display-name> todos os jsps</display-name>
<description> configuracoes de todos os jsps</description>
<url-pattern> *.jsp</url-pattern>
<scripting-invalid> true</scripting-invalid>
<el-ignored> false</el-ignored>
<page-encoding> UTF-8</page-encoding>
<include-prelude> /antes.jspf</include-prelude>
<include-coda> /depois.jspf</include-coda>
</jsp-property-group>
</jsp-config>
Observem que eu destaquei a parte <url-pattern> pra chamar a atenção que além de permitir que você faça essa configuração para todos os arquivos .jsp, você também pode configurar para um arquivo específico.
Bastante interessante, não acham?
Por agora é só.
Abraços.
FONTE: www.caelum.com.br, curso FJ21
terça-feira, 19 de maio de 2009
Banco do Brasil e Linux 64 Bits
A solução de segurança do Banco do Brasil (Cadastramento de Computadores), que permite que correntistas utilizem serviços de suas contas através da internet, não possibilita que você cadastre o seu computador se o mesmo estiver rodando um S.O. Linux 64 Bits.
Pelo telefone eu não consegui muitos esclarecimentos do que ocorre, mas fui informado que este problema ainda não tem previsão de ser corrigido. A partir de uma máquina rodando Windows 64 Bits ou Mac Os 64 Bits a solução do BB funciona corretamente, o caso é só com o Linux 64 Bits mesmo.
Para quem tem esse problemas, como eu, o que eu recomendo é a instalação do VirtualBox para poder rodar uma máquina virtual com uma versão 32 Bits do Linux e poder usufruir desse conforto.
Pelo telefone eu não consegui muitos esclarecimentos do que ocorre, mas fui informado que este problema ainda não tem previsão de ser corrigido. A partir de uma máquina rodando Windows 64 Bits ou Mac Os 64 Bits a solução do BB funciona corretamente, o caso é só com o Linux 64 Bits mesmo.
Para quem tem esse problemas, como eu, o que eu recomendo é a instalação do VirtualBox para poder rodar uma máquina virtual com uma versão 32 Bits do Linux e poder usufruir desse conforto.
Dica de linux para iniciantes
A dica é o comando apropos. Esse comando pode te salvar em algum tipo de situação emergencial, principalmente quando você não puder contar com a internet...
Basta digitar no terminal apropos texto_desejado que ele exibe uma lista de comandos existentes e suas descrições, todos os comandos estão relacionados com o texto digitado. Veja o exemplo abaixo:
apropos update
/etc/updatedb.conf (5) [updatedb.conf] - a configuration file for updatedb(8)
catman (8) - create or update the pre-formatted manual pages
chgpasswd (8) - update group passwords in batch mode
chpasswd (8) - update passwords in batch mode
cups-genppdupdate (8) - update CUPS+Gutenprint PPD files
dellBiosUpdate (1) - SMBIOS management/utility program
gtk-update-icon-cache (1) - Icon theme caching utility
install-info (8) - create or update entry in Info dir file
iptables-apply (8) - a safer way to update iptables remotely
libgraphviz4-config-update (1) - maintain libgraphviz's configuration file
mandb (8) - create or update the manual page index caches
newusers (8) - update and create new users in batch
nsupdate (1) - Dynamic DNS update utility
pam-auth-update (8) - manage PAM configuration using packaged profiles
ucf (1) - Update Configuration File: preserve user changes in co...
ucfr (1) - Update Configuration File Registry: associate packages...
unix_update (8) - Helper binary that updates the password of a given user
update-alternatives (8) - maintain symbolic links determining default commands
update-app-install (8) - Cache the data for gnome-app-install
...
Nesse caso eu digitei update como o texto de referência e ele exibiu uma lista de comando relacionados com update e a descrição de cada comando. Para saber como usar cada comando pode-se utilizar o comando man:
man update-app-install
Basta digitar no terminal apropos texto_desejado que ele exibe uma lista de comandos existentes e suas descrições, todos os comandos estão relacionados com o texto digitado. Veja o exemplo abaixo:
apropos update
/etc/updatedb.conf (5) [updatedb.conf] - a configuration file for updatedb(8)
catman (8) - create or update the pre-formatted manual pages
chgpasswd (8) - update group passwords in batch mode
chpasswd (8) - update passwords in batch mode
cups-genppdupdate (8) - update CUPS+Gutenprint PPD files
dellBiosUpdate (1) - SMBIOS management/utility program
gtk-update-icon-cache (1) - Icon theme caching utility
install-info (8) - create or update entry in Info dir file
iptables-apply (8) - a safer way to update iptables remotely
libgraphviz4-config-update (1) - maintain libgraphviz's configuration file
mandb (8) - create or update the manual page index caches
newusers (8) - update and create new users in batch
nsupdate (1) - Dynamic DNS update utility
pam-auth-update (8) - manage PAM configuration using packaged profiles
ucf (1) - Update Configuration File: preserve user changes in co...
ucfr (1) - Update Configuration File Registry: associate packages...
unix_update (8) - Helper binary that updates the password of a given user
update-alternatives (8) - maintain symbolic links determining default commands
update-app-install (8) - Cache the data for gnome-app-install
...
Nesse caso eu digitei update como o texto de referência e ele exibiu uma lista de comando relacionados com update e a descrição de cada comando. Para saber como usar cada comando pode-se utilizar o comando man:
man update-app-install
Assinar:
Postagens (Atom)