Computêro

[Computando seu conhecimento na web]
  • rss
  • Início
  • Computêro
  • Contato
  • About

URL Rewriting/URL Amigáveis no Wordpres com o filtro ISAPI Rewrite

computêro | 30/05/2009

Bom tarde computêros…

  • Introdução

Este post é uma continuação do URL Rewriting / URL Amigáveis no WordPress com IIS porém a solução dele era a utilização de uma página em php, que fazia o rewriting, porém em alguns amibientes isso não é possível (como aconteceu comigo ao mudar para a Locaweb), qual a solução adota por vários provedores? A utilização de filtros ISAPI, esses filtros terão basicamente duas coisas, o domínio a qual queremos fazer o rewriting e uma regra (que é o rewriting em si), para isso é necessário um conhecimento intermediário sobre Expressões Regulares, caso não conheça eu recomendo que antes de mais nada aprenda sobre expressões regulares para depois tentar o url rewriting, não é nada de outro mundo, mas requer uma certa atenção…

  • Expressões Regulares

Por enquanto não vou falar muito sobre expressões regulares, mas deixo alguns links bem interessantes até para quem já conhece o mundo das expressões regulares:

Expressões Regulares na Wikipedia

Portal Brasileiro de Expressões Regulares

Livro Expressões Regulares – Uma abordagem divertida, autor: Aurélio Marinho Jargas (eu tenho e recomendo que comprem!)

Versão online do livro Expressões Regulares – Uma abordagem divertida (mesmo tendo ela online, espero que comprem já que estaremos contribuindo com o grande autorAurélio Marinho Jargas)

Testador de Expressões Regulares

  • Filtros ISAPI, o que são?

A definição da Microsoft para filtros ISAPI é essa:

Os filtros ISAPI são programas que respondem quando um servidor Web recebe uma solicitação HTTP. No entanto, ao contrário das extensões ISAPI, os filtros ISAPI são sempre executados no processo do servidor. Eles são diferentes dos aplicativos porque são controlados por eventos do servidor Web e não por uma solicitação do cliente. Você pode associar um filtro ISAPI a um determinado evento do servidor Web; dessa forma, o filtro é notificado toda vez que o evento associado ocorre. Por exemplo, um filtro poderia ser notificado quando um evento de leitura ou gravação ocorresse e, em seguida, criptografar os dados não processados a serem retornados ao cliente.

  • Começando a entender o httpd.ini

Vou abordar mais a configuração do httpd.ini, portanto para informações técnicas de como instalar e configurar o filtro ISAPI Rewrite vou deixar por aqui alguns links úteis… (mas no final ok?)

A Locaweb hospeda os sites de uma maneira diferente, temos um site principal e podemos adicionar alguns domínios adicionais (dependendo do plano), esses domínios adicionais são criados em subdiretorios  dentro da raíz, e através do url rewriting ele interpreta como um novo site… bacana neh?

De início sim, mas e pra aprender como arrumar o rewriting, rsrrss…

Segue um exemplo de um arquivo original do httpd.ini

?View Code INI
1
2
3
4
5
6
7
8
9
[ISAPI_Rewrite]
 
#Configuração para o site1
RewriteCond Host: (?:www\.)?site1\.com\.br
RewriteRule (.*) /site1$1 [I,L]
 
#Configuração para o site2
RewriteCond Host: (?:www\.)?site2\.com\.br
RewriteRule (.*) /site2$1 [I,L]

Ou seja, um site principal (site1) e um domínio adicional (site2)…

O maior truque para aplicar o Rewrite é a linha que indica a qual domínio (ou subdomínio) estamos nos referindo, que no caso é aplicada pela linha “RewriteCond Host: ” e qual a regra que queremos definir a este domínio, indicado pela linha RewriteRule

  • RewriteCond Host: (domínio ou subdomínio)

Essa linha nunca mudará, permanecerá sempre a mesma, utilizamos ela sempre que queremos indicar para qual host estamos definindo a regra que virá abaixo dela, pela linha RewriteRule…

  • RewriteRule

A parte mais importante é entender esse comando…

RewriteRule endereco_amigavel endereco_real

Ela irá trabalhar de acordo com as regras que você definir para ela, por exemplo,quando o usuário tentar acessar a página meusite.com.br/computeros, redirecione ele para a página meusite.com.br/artigo.asp?nome=computero.

É basicamente isso, a URL que o usuário acessa, e a URL que ele será redirecionado… sempre utilizando expressões regulares!!!

  • Exemplo:

vamos dar um exemplo bem legal… no wordpress temos  como visualizar os artigos por ano, por mes, por dia… vamos ver como funcionária um artigo dia…

Temos que conhecer qual a regra que ele acessará e pra onde devemos redirecionar…

Acessando todos os artigos do blog computero do dia 30/05/2009

http://blog.computero.com.br/2009/05/30/

Já sabemos que quando clicamos nele, ele exibirá os artigos da data desejada, mas qual será realmente a página que faz isso? para saber isso, temos que ir na administração do blog, Menu de configurações/Links permanentes e escolher a opção padrão…

Fazendo isso ao navegarmos pelo site e trará os posts do dia 30 com o seguinte endereço:

http://blog.computero.com.br/index.php?year=2009&monthnum=5&day=30

Acho que agora conseguimos encontrar um padrão, repare que no link amigável passamos 2009/05/30, que é exatamente os valores que passamos como paramêtros no link real…

Que tal criarmos uma regra para isso? vamos tentar

?View Code INI
1
2
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/ /blog.computero.com.br/index.php?year=$1&monthnum=$2&day=$3 [I,L]

O host é o endereço do blog… sem segredos…
e a regra tratará exatamente o padrão encontrado /ano/mes/dia/ – /([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/
([0-9]{4}) – dígitos de 0-9, repetidos quatro vezes, ou seja, o padrão para indicar um ano de 4 digítos
([0-9]{1,2}) – a mesma coisa do anterios, mas desta vez, permitindo um ou dois digitos
([0-9]{1,2}) – mesma coisa que o anterior
as barras /, indicam a separação do link, exemplo /2009/05/30/

depois há um espaço em branco

e depois /blog.computero.com.br/index.php?year=$1&monthnum=$2day=$3 [I,L]
que quer dizer, se a regra anterior for válida, redireciona o usuário para a página a seguir… que é o endereço real substituído os numeros por “retrovisores”, eu num disse que era importante as expressões regulares? Veja aqui…

Agora é com vocês, vou deixar o meu httpd.ini de referência…

  • http.ini computêro
?View Code INI
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#
# BLOG COMPUTERO
#
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule (?=/blog.computero.com.br/)(.*) $1 [I,L]
#
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /computero/ /blog.computero.com.br/index.php?page_id=11 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /sobre/ /blog.computero.com.br/index.php?page_id=2 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /wp-(.*)/ /blog.computero.com.br/wp-$1/index.php [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /comments/feeds/ /blog.computero.com.br/index.php?feed=comments-rss2
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /([\w-]+)/feed/ /blog.computero.com.br/index.php?feed=rss2&name=$1 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /([\w-]+)/trackback/ /blog.computero.com.br/wp-trackback.php?name=$1 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /([\w-]+)/ /blog.computero.com.br/index.php?name=$1 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /categoria/([\w-]+)/([\w-]+)/ /blog.computero.com.br/index.php?category_name=$2 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /categoria/([\w-]+)/ /blog.computero.com.br/index.php?category_name=$1 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /tags/([\w-]+)/ /blog.computero.com.br/index.php?tag=$1 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /([0-9]{4})/ /blog.computero.com.br/index.php?year=$1 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /([0-9]{4})/([0-9]{1,2})/ /blog.computero.com.br/index.php?year=$1&monthnum=$2 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/ /blog.computero.com.br/index.php?year=$1&monthnum=$2&day=$3 [I,L]
RewriteCond Host: (?:www\.)?blog\.computero\.com\.br
RewriteRule /page/([0-9]+)/ /blog.computero.com.br/index.php?paged=$1 [I,L]
#

Links Úteis:

Site do fabricante

Manual do componente

É isso aí computêros, qualquer dúvida, comentem que tentamos ajudar…

=]

Popularity: 56% [?]

PéssimoRuimRegularBomÓtimo (2 votes, average: 5,00 out of 5)
Loading ... Loading ...
Comentários
50 Comentários »
Categorias
Wordpress
Tags
url amigaveis, url rewriting, Wordpress
Comentários rss Comentários rss
Trackback Trackback

Convertendo Números Decimais para Binários em Java

computêro | 30/05/2009

Acho que a maioria dos usuários que acessam o blog já leram a página de About… e se repararam bem a idéia do blog é simples, ajudar, mais nada, só isso, mas infelizmente vemos algumas coisas no caminho que chegam até a desanimar, na informática existem algumas pessoas (porque não podemos chamá-las de profissionais) que se acham melhores que os outros e superiores em tudo que fazem, mas só fica por aí…

Hoje aconteceu uma cena no mínimo hilária na sala de aula, que não convém ao caso falar, mas ela me motivou falar um pouquinho antes de postar a função…

  • Modo Iterativo
?View Code JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static String cBinario(int n){
		ArrayList resto = new ArrayList();
 
		while (n != 0){
			resto.add((n%2)+"");
			n = (int)(n/2);
		}
 
		String res = "";
		for (int i=resto.size()-1;i>=0;i--){
			res += resto.get(i);
		}
		return res;
	}
  • Modo Recursivo
?View Code JAVA
1
2
3
4
5
6
7
public static String cBinarioRec(int n){
		String ret="";
		if (n > 0){
			ret += cBinarioRec(n/2)+n%2;
		}
		return ret;
	}

Exemplo de Utilização:

?View Code JAVA
1
2
3
4
5
6
public static void main (String args[]){
		int num = 69;
 
		System.out.println(cBinario(num));
		System.out.println(cBinarioRec(num));
	}

Caso tenham alguma dúvida comentem…

Popularity: 4% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
2 Comentários »
Categorias
Java, Programação
Tags
Java
Comentários rss Comentários rss
Trackback Trackback

Vocês não perdem por esperar…

jacky_bento | 30/05/2009

Boa Noite Computêros,

é com um grande prazer que eu, Jaqueline, volto a postar aqui, mais é só pra deixar vocês com um gostinho de quero mais! Estou aqui apenas para lhes dizer, que estou há um certo tempo criando um post que vai ser super interessante e estou fazendo com todo cuidado e carinho para não falhar com vocês, quero muito que este post seja um estoro, quero poder compartilhar dessa maravilha, e espero do fundo do meu coração que vocês gostem…bem, não vou dizer o assunto, quem quiser é só aguardar ai, será que valerá a pena toda essa espera? É esperar pra ver caros Computêros…

Boa noite….

Tem uma data em especial e gostaria de uma contagem regressiva para divulgar a data?
Tá ai, este é um bom e personalizado site … crie o seu …

http://www.countdown2zero.com/

Popularity: 5% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
3 Comentários »
Categorias
Geral
Comentários rss Comentários rss
Trackback Trackback

Contatos tradutores no Google Talk

computêro | 29/05/2009

Boa noite computêros, claro que todos conhecemos as Ferramentas de Idiomas do Google, são muito utilizadas quando não conhecemos determinada palavra (ou texto), ou queremos traduzir o conteúdo de um site.

Fiquei conhecendo mais uma boa sacada do Google nessa semana, imagina você ter um contato no (Google Talk) 24 horas por dia, que você escreva algo pra ele e ele traduza automaticamente para um idioma pré-definido?

Bem prático pra quem está sempre on-line, ao invés de ter que recorrer ao site…

Para “habilitar” essa tradução no Google Talk não podia ser mais simples, basta adicionar os seguintes contatos..

pt2en@bot.talk.google.com

bot_pt2en

en2pt@bot.talk.google.com

bot_en2pt

Pronto, não será necessário mais nada, só clicar no contato e dizer pra ele o que você quer traduzir…

Obs: Vale ressaltar que nenhuma tradução realizada por computadores é 100% fiel…

Tem mais um monte de robôs, caso queira ver a lista completa acesse: http://www.google.com/support/talkgadget/bin/answer.py?answer=89921

Popularity: 5% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
4 Comentários »
Categorias
Geral
Tags
Gmail, Google, orkut
Comentários rss Comentários rss
Trackback Trackback

Mudança de Servidor no Blog Computêro – Locaweb

computêro | 29/05/2009

Boa noite computêros, estou até agora fazendo alguns ajustes finais no blog, já que troquei de hospedagem hoje (ou melhor, ontem já que passamos da meia noite).

Desde domingo, que foi quando eu criei a hospedagem na Locaweb eu estava tentando levar o blog para ela e tive principalmente dois problemas:

  • Problemas com o banco de dados

Eu não conseguia de jeito maneira importar os dados pro servidor da Locaweb, de jeito nenhum, mas graças a indicação da Jaqueline de um programa chamado Toad for MySQL eu consegui sem maiores problemas exportar e importar os dados dos servidores.

  • Problemas com o Url Rewriting

Como o servidor de hospedagem antigo não utilizava ISAPI Rewrite eu encontrei uma solução bem simples na net que resolveu o problema facinho… lembram???

Pois é, mas na Locaweb eu não conseguia implementar essa mesma solução, e não podia trazer o blog sem corrigir isso, primeiro que o blog seria muito negativado, já que temos mais de 100 páginas indexadas pelo Google e outra, que a url não semantica não é muito amigável aos olhos…

:-)

Após me matar bastante, quase 5 dias estudando ISAPI, aqui está o resultado, o blog está em um servidor melhor, está mais rápido e logo logo com mais visitas (assim espero).

Ah! A Locaweb tem um plano de parcerias, caso você for fazer um site tem um campo de indicação, se quiser indicar o login “lucasfsousa” eu ficaria muito grato!!!

Ah! esqueci de dizer, é bem provável que vocês encontrem erros de “A página não pode ser exibida” já que o rewriting ainda não está 100%, mas tenham paciência que assim que possível eu vou corrigindo, foi criada a página de contato para que vocês se comuniquem comigo, e peço por gentileza que reportem os bugs que forem encontrando…

Popularity: 3% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
2 Comentários »
Categorias
Geral
Tags
locaweb
Comentários rss Comentários rss
Trackback Trackback

Introdução ao J2ME – Java para dispositivos móveis

computêro | 24/05/2009

Bom dia computêros… que tal falarmos de aplicações java para celulares/palms???

  • O que é o J2ME:

J2ME é uma plataforma, grupo de tecnologias e especificações que permitem o desenvolvimento para dispositivos móveis limitados. Podemos considerar que J2ME está dividida em três elementos: configurações, perfis e pacotes opcionais.

  1. As configurações (configurations em inglês) são especificações que determinam uma “máquina virtual” a ser utilizada e um conjunto básico de APIs que poderão ser utilizadas para programar em certo tipo de dispositivo.
  2. Um perfil (profile em inglês) será definido baseado em alguma configuração, ou seja, um perfil poderá ser considerado uma extensão da configuração, mas adiciona APIs específicas para fornecer um ambiente completo que permita construir aplicativos.
  3. Um pacote opcional (optional package em inglês) fornece funcionalidade que não foi descrita em determinada configuração e perfil. Por exemplo, um pacote opcional poderia ser utilizado para programar com dispositivos bluetooth, para os quais não existe suporte na configuração e perfil utilizados.
  • A estrutura de aplicativos J2ME

Um aplicativo para dispositivos MID (Mobile Information Device), chamado comumente de MIDlet, será construído declarando uma classe derivada de MIDlet (classe da biblioteca do J2ME) que implementará algumas interfaces, dependendo dos critérios de atenção a eventos do programa.

Vários aplicativos poderão ser empacotados dentro de um arquivo .jar e será criado, também, um arquivo .jad como uma descrição do pacote de aplicativos (jad: Java Application Descriptor).

  • Exemplo de um arquivo .jad

MIDlet-1: Ola, /um.png, Ola
MIDlet-2: Hola, /dois.png, Hola
MIDlet-3: Hello, /tres.png, Hello
MIDlet-Jar-Size: 5431
MIDlet-Jar-URL: Tres aplicativos.jar
MIDlet-Name: Tres aplicativos
MIDlet-Vendor: Unknown
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0

  • Exemplo de um arquivo .jar

META-INF
MANIFEST.MF

Ola.class
Hello.class
Hola.class

um.png
dois.png
tres.png

  • Criando um Hello World com J2ME

Para isso precisaremos que a máquina tenha o JDK instalado e configurado corretamente. Caso não tenha o JDK clique aqui.

Precisaremos também do Wireless Tool Kit programa para a compilação e execução das Classes do J2ME.

E se possível de um compilador java, só pra facilitar a digitação, já que não compilaremos com ele…

A instalação do WTK (Wireless Tool Kit) é bem fácil no Windows NNF(Next Next Finish), agora no linux já complica um pouco mais… vou deixar um post específico para ela e depois linko com esse…

Vamos ao código do nosso querido hello world (lembra do primeiro post aqui do blog)

?Download java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//Hello.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
 
public class Hello extends MIDlet implements CommandListener {
	private Command exitCommand; //comando acionado por teclas do dispositivo
	private Display display; //manipulador da tela do dispositivo
	private TextBox tbMain; //uma tela que permite mostrar e editar informações
 
	public Hello() {
		display = Display.getDisplay(this);
		exitCommand = new Command("Exit", Command.SCREEN, 2);
		tbMain = new TextBox("Meu primeiro app","Olá, mundo!", 150, 0);
		tbMain.addCommand(exitCommand);
		tbMain.setCommandListener(this);
	}
 
	public void startApp() {
		display.setCurrent(tbMain);
	}
 
	public void pauseApp() {
		// método abstrato da classe MIDlet que
		// deve ser implementado
	}
 
	public void destroyApp(boolean unconditional) {
		//método abstrato da classe MIDlet que deve
		//ser implementado
	}
 
	public void commandAction(Command c, Displayable s) {
		if (c == exitCommand) {
			destroyApp(false);
			notifyDestroyed();
		}
	}
} //fim da classe

Agora que temos o código, vamos abrir o WTK (Wireless Tool Kit) e clicar no Botão New Project…

O nome do projeto você escolhe, mas o MIDlet Class Name você coloca o mesmo nome da classe, que no nosso caso é Hello, depois de preencher os dois campos clique em “Create Project”

A próxima tela é a de configurações… de início não interessa pra nós… escolha Custom e deixe como esta:

setting_teste_hello

Com o projeto já criado e configurado, devemos copiar o nosso “Hello World” para a pasta src, que fica dentro da pasta do projeto…

Trabalhando no Windows a pasta onde os projetos podem ser criados são duas, dependendo da configuração feita…

C:Documents and Settingsseu usuario do windowsj2mewtk2.5.2apps

C:WTK2.5.2_01apps

É mais provável que seja a primeira…

Com o arquivo copiado podemos compilar com o nosso querido WTK (Wireless Tool Kit), através do botão Build

Se receber a mensagem “Build omplete” já podemos executar o arquivo, caso tenha recebido algum erro, comenta aí que tentamos ajudar…

Para executar o projeto adivinha onde temos que clicar… isso mesmo em “Run”

Voilà… o projeto está rodando certinho!!! lembrando que como se trata de aplicativos móveis num adianta nada ficar clicando fora do “celular”…

hello_world_j2me

Ah, eu estava esquecendo de uma coisa, se você quiser testar o aplicativo no seu celular ele precisa rodar java (é óbvio) e para isso você deverá copiar o arquivo .jar para ele…

Com o projeto aberto vá no menu:
Project/Package/Create Package

Ele irá te informar onde o arquivo foi criado, mas a pasta padrão é a bin dentro da pasta do projeto.

É isso aí computêros, qualquer dúvida, comenta ae!

Para maiores informações eu recomendo que você leia a documentação oficial do J2ME.

Popularity: 3% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
2 Comentários »
Categorias
Java, Programação
Tags
Java
Comentários rss Comentários rss
Trackback Trackback

StringBuilder x StringBuffer

jacky_bento | 22/05/2009

String, StringBuilder e StringBuffer

Salve computêros, depois de muita espera de meu amigo Lucas, pelo meu post sobre Strings, cá estou eu para falar um pouco sobre 3 tipos de Strings e como usa-las.Primeiramente temos nossa velha e boa String, em Java as Strings são objetos, que podem ser criadas de diversas formas,por exemplo:

?View Code JAVA
1
2
3
4
5
6
String s = new String ();
s = "String";
 
String s = new String ("String");
 
String s = "String";

Os objetos de tipo String podem parecer apenas objetos como outros qualquer, porém há uma diferença, muito significativa para as Strings, elas são imutáveis,isso mesmo meu caro imutáveis, ou seja o valor de uma String não podem ser modificado, apenas referenciado,seguimos um exemplo:

?View Code JAVA
1
2
3
String s = "Comput";
s.concat("ero");
System.out.println("x = " + s); //resultado s = Comput

Agora eu peguei vocês neh?! Pois então, vocês esperavam que a saida nos trouxesse Computero, porém como já havia dito, as Strings são imutáveis,então o objeto referenciado por s não modificou seu valor.
Agora vejamos um outros exemplo:

?View Code JAVA
1
2
3
String s = "Comput";
s = s.concat("ero");
System.out.println("x = " + x); //resultado x = Computero

Agora confudiu tudo neh?! Vamos lá, o que acontece agora é que ao dizer que s = s.concat(“ero”); um novo objeto Computero foi criado na memoria, concatenando o valor de s com o “ero”, e então atribuimos a variavel s o novo objeto criado.

Bom agora vamos pensar um pouquinho, já que foi criado um novo objeto com o valor “Computero”, vocês devem estar se perguntando o que é que acontece com aquele velho objeto “Comput”?
Existe um local da memoria chamado “String constant pool“, este é o lugar onde se encontra nosso velho valor “Comput”. “String constant pool” é um eficiente gerenciador de memoria em java.Basicamente todos os objetos são manejados na area HEAP da memoria, exceto Strings.Na maioria das aplicações, programadores usam o objeto String muitas vezes, e este objeto é frequentemente alterado ou ocupa muito espaço na memória.Então, ao invés de usarem a area HEAP da memória, criaram “String constant pool“. A vantagem de ter esta “String constant pool” é que ela não cria um objeto String se o mesmo já existir na “String constant pool“.

Exemplo:

?View Code JAVA
1
2
String var1 = "Computero";
String var2 = "Computero";

Para os dois objetos, a JVM vai criar apenas um objeto na “String constant pool” e o segundo vai apenas referenciar.

Um grande problemas disso tudo, é que acabamos sempre com a memória cada vez maior, e varios objetos perdidos na memória.Para salvar este grande problema entre as Strings, foram criadas outras duas classes, a StringBuilder e a StringBuffer, veremos adiante a diferença entre elas.
Primeiramente a diferença entre a StringBuilder e a StringBuffer é que na StringBuffer os métodos são sincronizados, ou seja, é acessado apenas uma Thread por vez. A sincronização afeta diretamente o desempenho, portanto, a StringBuffer tende a ser mais lenta que a Builder.

Porque usar StringBuilder ou StringBuffer?
Estas classes são usadas normalmente quando precisamos manipular muitas strings, porém não podemos deixar objetos perdidos na memória, de forma que em alguns minutos ela estoura.
Um exemplo de StringBuilder, vamos lá:

?View Code JAVA
1
2
3
4
StringBuilder sb = new StringBuilder();
sb.append("Comput");
sb.append("ero");
system.out.println("x = " + sb);//x = Computero

O que acontece é o seguinte, a StringBuilder ou StringBuffer vai operar sobre o valor do objeto que chamou o metodo append, coisa que a String não faz quando chamamos o metodo concat, vendo que ela necessida de um novo objeto para concatenar.
O mais maravilhoso desse metodo append é que ele vai aceitar concatenar o que você necessitar, seja ele um int, um char, um double ou até mesmo um float.
Vejamos alguns métodos destas maravilhosas classes:

Reverse() – imprime de forma contrária
Insert() – insere algo na posição especificada
Delete() – deleta algo na posição início e fim.

Mais alguns exemplos usando estes metodos :

?View Code JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
//usando o metodo reverse da classe StringBuffer
 
public class Reverse {
 
public static void main(String args[]){
StringBuilder sb = new StringBuilder();
sb.append("Computero");//concatenando String
sb.append(2009);//concatenando int
sb.append('H');//concatenando char
System.out.println(sb);//imprimindo sb - Computero2009H
System.out.println(sb.reverse());//imprimindo de forma reversa sb - H9002oretupmoC
}
}
?View Code JAVA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//exemplo usando alguns metodos da classe StringBuilder
 
public class Reverse {
public static void main(String[] args) {
StringBuilder sb= new StringBuilder("Computero");
 
/*metodo que remove pelo indice a partir do indice 6 (conta com ele) até o indice 9(não conta com ele)*/
sb.delete(6, 9);
/*imprimi Comput*/
System.out.println(sb);
/*concatena - a String portanto sb esta valendo Comput-*/
sb.append("-");
/*insere na posição 7 a palavra Jaqueline*/
sb.insert(7,"Jaqueline");
//imprimi Comput-Jaqueline
System.out.println(sb);
/*concatena -Bento a String portanto sb esta valendo Comput-Jaqueline-Bento*/
sb.append("-Bento");
/*imprimi Comput-Jaqueline-Bento*/
System.out.println(sb.toString());
}}/*a vantagem de usar StringBuilder ou StringBuffer é que nao tenho objetos perdidos na minha memória*/

Então é isso Computeros, espero ter ajudado em algo ou esclarecido alguma duvida.
Obrigada pelo espaço Lucas.
Boa tarde.

Popularity: 5% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
4 Comentários »
Categorias
Java, Programação
Tags
Java
Comentários rss Comentários rss
Trackback Trackback

Até os gigantes erram #5 – Orkut(2)

computêro | 21/05/2009

Boa noite computêros, estava pelo Orkut como todo brasileiro, vendo o álbum de um camarada quando me reparo com o seguinte bug…

erro_orkut_002

Acho que os caras iniciaram o contador de fotos em 0 ao invés de 1… rsrsrrss

É computêros, já é o segundo erro do Orkut e o terceiro do Google…

Até os gigantes erram #1 – Orkut

Até os gigantes erram #4 – GMail

Popularity: 2% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
1 Comentário »
Categorias
Bugs
Tags
Até os gigantes erram
Comentários rss Comentários rss
Trackback Trackback

Guia UML

vanessa | 19/05/2009

Olá computêros,

Hoje vamos falar sobre o nosso querido Unified Modeling Language, (UML) para os mais íntimos.

Mas o que é esse UML que alguns desenvolvedores tanto falam?

UML pode ser considerado  linguagem de modelagem. O que diz que não é uma linguagem de programação e ela não é obrigatória, mas realmente muito útil na criação de grandes sistemas, principalmente se terão muitas pessoas envolvidas. A UML apenas facilita a comunicação entre os desenvolvedores, desenhando e auxiliando na visualização do projeto como um todo.  Basicamente, a UML permite que desenvolvedores visualizem os produtos de seu trabalho em diagramas padronizados.

Então vamos para algumas dicas simples:

Classe

Classe representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos, através de métodos, e quais estados ele é capaz de manter, através de atributos. Exemplo de classe: Os seres humanos.

Nome da Classe
Atributos: Tipo = Valor Inicial
Operação (Lista arg.): tipo de retorno

Generalização

Atributos e operações comuns compartilhados por classes. Superclasse [Parte] ou [Pessoa] como generalização das subclasses [Organização] e Indivíduo.

generalizacao

Restrição

Public: sem restrição. Qualquer objeto pode acessar tal Método/atributo.
Private:
apenas o objeto que possui o método/ atributo pode acessá-lo.
Protect:
apenas os objetos das classes do mesmo pacote podem acessar o método/atributo.

Estereótipo

É uma extensão do vocabulário de UML que permite a criação de um tipo básico novo que é específico ao problema que está sendo resolvido.

Existe cerca de 50, incluindo:

become (indica uma dependência na qual um objeto se torna outro)
enumeration
(especifica um tipo enumerado incluindo seus possíveis valores)
utility
(uma classe na qual todos os valores e atributos pertencem à classe (e não às suas instâncias).

Nota

Anotações ajudam no entendimento do código.

Objeto

Objeto é uma instancia de classe. Um obejeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.

Nome do objeto: nome da classe

Associação

Uma associação define um relacionamento entre duas classes que permite que um objeto faça com que outro objeto realize uma ação em seu lugar.
Em termos gerais, a casualidade da ação é feita ao enviar uma mensagem ou invocar um método do objeto controlado.

associacao

Multiplicidade

É o número de instâncias de uma classe relacionada com uma instância de outra classe.
Para cada associação, há uma multipicidade em cada direção.

multiplicidade

Associações Qualificadas

Em relacionamentos um-para-muitos e muitos-para-muitos, é geralmente útil modelar como o sistema irá acessar um elemento individual na associação.

associacoes_qualificadas

Navegabilidade

Uma seta de navegação mostra a direção de troca de mensagens entre objetos em tempo de execução.

navegabilidade

Dependência

Uma dependência entre classes indica que uma classe depende dos serviços da outra.
dependencia Leia o resto desta entrada »

Popularity: unranked [?]

PéssimoRuimRegularBomÓtimo (2 votes, average: 5,00 out of 5)
Loading ... Loading ...
Comentários
2 Comentários »
Categorias
UML
Tags
UML
Comentários rss Comentários rss
Trackback Trackback

Instalando programas no Ubuntu 9.04 com o Package Manager

computêro | 17/05/2009

Boa tarde computêros…

Aproveitando que eu preciso instalar alguns programas aqui no Ubuntu resolvi fazer um breve tutorial de como instalar…

Num sabe o que é o Ubuntu? Veja esse post

Antes de mais nada vale lembrar eu eu utilizo o KDE.

Primeiramente vamos executar o Package Manager…

Há duas formas principais… com o caminho…

Menu Aplicativos /Sistema/Package Manager

ou uma forma mais rápida, digitando Package Manager na pesquisa de aplicativos…

menu_pesquisa_aplicativos

Com o Package Manager aberto, podemos navegar pelo menu dos tipos de aplicativos ou podemos pesquisar pelo nome do aplicativo.

menu_package_manager

Podemos escolher vários aplicativos que desejamos instalar (ou desinstalar) e ao terminamos clicamos em “Aplicar Mudanças…”

Após feito isso o Ubuntu irá baixar automaticamente todos os pacotes necessários, só aguardar e o aplicativo será baixado e instalado automaticamente, diferentemente do Windows, o Linux dificilmente (nunca aconteceu comigo) irá pedir pra você reiniciar o seu computador…

É isso aí pessoal… qualquer dúvida… comentem…

Popularity: 2% [?]

PéssimoRuimRegularBomÓtimo (No Ratings Yet)
Loading ... Loading ...
Comentários
2 Comentários »
Categorias
Linux
Tags
Linux
Comentários rss Comentários rss
Trackback Trackback

« Entradas Antigas

Parceiros

  • Vanessa Sueroz – Histórias, Poemas e Poesias

Visitantes

  • 37974Total de visitantes:

Arquivos

  • agosto 2010 (2)
  • maio 2010 (3)
  • abril 2010 (1)
  • fevereiro 2010 (1)
  • janeiro 2010 (3)
  • dezembro 2009 (4)
  • novembro 2009 (3)
  • outubro 2009 (3)
  • setembro 2009 (11)
  • agosto 2009 (24)
  • julho 2009 (31)
  • junho 2009 (27)
  • maio 2009 (19)
  • abril 2009 (24)
  • março 2009 (4)

Categorias

  • Banco de dados (8)
    • SQL Server (1)
  • Blogosfera (3)
  • Bugs (10)
  • Campanhas (2)
  • Dicas Rápidas (14)
  • Eventos (1)
  • Firefox (1)
    • Plugins (1)
  • Ganhar dinheiro (1)
  • Geral (33)
  • Imagens (2)
  • Internet (9)
    • CSS (1)
  • Jogos (3)
    • Flash (2)
  • Lego Mindstorms (1)
  • Linux (2)
  • Notícias (21)
  • Programação (44)
    • ASP (12)
    • ASP.NET (1)
    • C# (2)
    • Java (8)
    • Javascript (6)
    • PHP (7)
  • Redes Sociais (2)
  • Segurança (2)
  • Softwares (4)
  • tirinhas (2)
  • Tutoriais (4)
  • UML (3)
  • Vagas de emprego (1)
  • Vídeos (16)
    • Vídeos Toscos (8)
  • Wordpress (9)

Visitantes Online

  • 01 visitante(s) online
  • powered by WassUp

Meta

  • Login
  • Posts RSS
  • RSS dos comentários
  • WordPress.org
rss Comentários RSS valid xhtml 1.1 design by jide powered by Wordpress get firefox
Monetizado com WP-HOTWords.