Howto: Como mudar a URL do seu repositório SVN

Normalmente você precisa fazer isso quando você altera seu servidor controlador de versão subversion…

Para saber como migrar os repositórios de um servidor para outro, veja este tutorial.

Mas em resumo é assim, após você instalar o subversion, e realizar a migração dos projetos:

# svnadmin dump myrepos > dumpfile

# svnadmin load newrepos < dumpfile

Ai no seu cliente tortoise é so fazer assim:

# svn switch –relocate  <from URL> <to URL>

Ou via ferramenta:

Howto: Como desabilitar a interface gráfica no Linux

Howto: Como desabilitar a interface gráfica do Linux
=======================================

Problema: Ao se instalar o Linux (Red Hat, CentOS…) como default, é carregado a interface gráfica (Gnome ou KDE), e para um servidor não é necessário manter ativo a Interface Gráfica, conhecida também como X.

Solução: Pode-se desabilitar o carregamento do X, e quando for necessário basta chamá-lo através do comando: startx.

Vamos aos passos:

1. Edite o arquivo: /etc/inittab

2. Vá até o final do arquivo, lá você vai encontrar uma linha semelhante a esta:

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

3. Basta comentar, remover ou editar a linha:

x:5:respawn:/etc/X11/prefdm -nodaemon

ficando assim:

id:3:initdefault:

4. Salve o arquivo, e reinicie a máquina, ao retornar so irá ser carregado o terminal. Para carregar o X, basta se logar e entrar com o comando:

# startx

Howto: Criando uma área de segurança para proteger aplicações no Tomcat

Olá pessoal, hoje uma dica bem simples.

Você já deve conhecer o esquema de proteção de diretórios que é utilizado no apache, onde é possível configurar uma lista de usuários que podem ter acesso a terminando conteúdo de um servidor web. Normalmente é solicitado um usuário e senha através de uma janela semelhante a esta:

Com Apache é muito fácil, tem muitos tutoriais por ai, iremos ver como podemos fazer o mesmo com uma aplicação rodando no Tomcat.

Howto:  Como proteger suas aplicações Java utilizando Realm
==================================================

Primeiramente convido você a conhecer o que é Realm do Tomcat.

1. Edite o arquivo: <tomcat_home>/conf/server.xml, e descomente a seguinte linha:

<Realm className=”org.apache.catalina.realm.MemoryRealm” />

Se você não encontrar esta linha, acrescente-a.

OBS:
“Tentei prosseguir sem fazer este passo, e funcionou também, apesar de ser recomendação  oficial”.

2. Vá ate o diretório de sua aplicação, e abra o arquivo web.xml, normalmente localizado em:

<tomcat_home>/webapps/suaAplicacao/WEB-INF/web.xml

Adicione as seguintes linhas entre as tags <web-app>…</web-app>:

<security-constraint>

<web-resource-collection>
<web-resource-name>OnJava Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>

<auth-constraint>
<role-name>onjavauser</role-name>
</auth-constraint>

</security-constraint>

Existem apenas dois sub-elementos que você precisa concentrar-se.

O primeiro é o <url-pattern>. Este sub-elemento define a URL da aplicação que será protegida. No exemplo acima protege a raíz da aplicação (/*), se fosse uma determinada pasta, é so definir ai, (/pasta)

O segundo sub-elemento, <role-name>, define o papel que o usuário pode acessar no diretório previamente definido em <url-pattern>.

Ou seja, significa que o acesso a raíz (/*) da aplicação (onjava) so poderá ser acessado pelos usuários do perfil definido em onjavauser.

3. Adicione no mesmo arquivo (web.xml) logo na seqüência após </security-constraint>, as seguintes linhas:

<login-config>
<auth-method>BASIC</auth-method>
<realm-name>OnJava Application</realm-name>
</login-config>

4. Edite o arquivo <tomcat_root>/conf/tomcat-users.xml e adicione o seguinte sub-elemento:

<user name=”bob” password=”password” roles=”onjavauser” />

O sub-elemento <user> irá criar um novo usuário na base de dados do MemoryRealm do Tomcat,  que no exemplo dado com  com um nome de bob uma senha de password e um papel de onjavauser.

Você deve ter percebido que o valor do atributo roles  corresponde ao valor do sub-elemento <role-name> previamente definidos no web.xml em <security-contstraint>.

5.  Para concluir esta configuração, reinicie  o Tomcat.

Somente…

Fonte:

http://www.onjava.com/pub/a/onjava/2001/07/24/tomcat.html

Duplicando tabelas Mysql

Howto: Como duplicar o conteúdo de uma tabela Mysql

Simples, primeiro a sintaxe do comando SQL:

# CREATE TABLE nova_tabela SELECT * FROM tabela_original

Para grandes quantidades de dados, você pode querer limitar o tamanho da nova_tabela:

# CREATE TABLE nova_tabela SELECT * FROM tabela_original WHERE field1=’value’ LIMIT 0, 10000;

Mysql Error – Can´t connect to MySQL server (10061)

How to: Como resolver o problema de conexão ao Mysql quando apresenta o erro 10061 acima.

O erro 10061 indica que MySQL não esta “ouvindo” conexões na porta TCP padrão: 3306. Normalmente isso é desabilitado por razões de segurança, normalmente ocorre quando você esta usando alguma versão do Debian como Sistema Operacional.

Para resolver isto, acesse o terminal de seu servidor, e edite o arquivo my.cnf:

#vim /etc/mysql/my.cnf

Encontre a linha iniciada com bind-address e troque o IP 127.0.0.1 pelo IP de seu servidor MySQL, que no caso da imagem acima irá ficar assim:

bind-address = 172.22.10.5

OBS: Isso só faz sentindo se você quiser vincular seu servidor MySQL à máquina em questão, porém isso raramente é usado, e com certeza você nem precisaria alterar o valor da linha bind-address, bastando comentar a tal linha assim:

#bind-address = 127.0.0.1

Feito as alterações, basta reiniciar o MySQL: # /etc/init.d/mysql restart E tentar conectar-se remotamente pelo seu cliente favorito.


Se mesmo assim não conseguir se conectar, ai continue a parte 2 do howto:

HowTo – Parte 2: Setando privilégios para acesso remoto.

No terminal, acesse o seu MySQL:

# mysql -u root -p
Vai ser perguntado qual a senha do usuário root

mysql>use mysql;

O que você vai fazer agora é alterar o registro do usuário Root na tabela Users do MySQL, para permitir que o mesmo seja seja acessado de qualquer máquina da sua rede.

mysql>update user set Host=’%’ where User=’root’ ;

mysql>FLUSH PRIVILEGES;

Ou se você usar o phpMyadmin basta ir diretamente no banco MySQL e na tabela user e atualizar o valor localhost para ‘%’

Após isso é so reiniciar o MySQL e tentar se conectar remotamente.

Há, completando este artigo, caso você realmente insista em usar o Debian ( eca 🙁  ) então você possa passar por um outro erro chamado ‘debian-sys-maint’ account, neste caso, veja a solução no blog do Daniel Antunes. (Dica do Leonardo Barroso…)

Até próxima…

Usando o Gmail como Servidor de Backup

A idéia não é minha, porém testei e gostei, e resolvi compilar aqui os procedimentos…

How-to: Como usar o Gmail como servidor de Backup

Acredito que muita gente seja fã do Gmail, e por diversos motivos como por exemplos as diversas configurações que o mesmo permite (settings), o módulo de “chat” também é muito utilizado, sem falar na quantidade enorma de Ajax, que torna a experiência de navegação no Gmail fantástica (isso sem citar o espaço disponibilizado).

Tá chega de rasgar seda, e vamos ao que realmente importa, como que eu posso tirar o máximo proveito desses recursos? Ou como usar o Gmail como um repositório de backups?

Imaginemos o seguinte caso real:

  1. Você desenvolve aplicações web PHP/JAVA/MySql/Postgresql… para a empresa;
  2. Todos os dias há alterações nos Bancos, e esses Bancos vão crescendo exponencialmente;
  3. Você é um “backup paranoid“;
  4. Portanto, tem que ter backup do arquivos fontes de seus sites, além de banco de dados é claro.

Tá até ai blz, realmente com esse caso será necessário utilizar alguma tecnologia de backup, pois bem, o Gmail pode ser essa tecnologia. Como? Simples:

  • No seu servidor web, você cria um script que irá fazer a compactação em um arquivo da aplicação X (arquivos html, php, jsp…) e fazer o dump da respectiva base de dados.

# cd /var/www/htdocs/aplicacaoX
# mysqldump –password=”minhasenha” BD_aplicacaoX > BD_aplicacaoX.sql
# tar -cf backup_aplicacaoX.tar *
# gzip backup_aplicacaoX.tar
# mv backup_aplicacaoX.tar.gz /tmp

  • Após este arquivo estar criado e armazenado em um diretório temporário, iremos utilizar o comando mutt, para enviar este arquivo como anexo em uma mensagem de email, diretamente para uma conta do Gmail, previamente criada para esta finalidade.

# mutt -s “BACKUPS_SERVER” -a backup_aplicacaoX.tar.gz meuemail@gmail.com < /etc/gmail_msg.conf

O arquivo /etc/gmail_msg.conf contém apenas o corpo da mensagem. Nele você pode colocar o que você quiser, é opcional escrever algo nele também.

Com isso, ao invés de ter algumas cópias do Banco de Dados, e das aplicações em vários locais, pode-se criar um backup diário que pode ser facilmente puxado online.

Mas, como controlar a sua caixa de entrada do Gmail, para não lotar com tantos arquivos, durante dias, semanas e meses a fio?

Aqui que entra os perfils de configuração do Gmail, os chamados settings, ou melhor, os filters.

Vamos aos settings:

  • criamos um filtro baseado no assunto da mensagem com o nome BACKUPS_SERVER (o mesmo assunto de quando você enviou o arquivo) e aplicamos a regra para apagar imediatamente esses emails.
  • O Gmail então passa a executar essa regra. A política do Gmail é a de apagar todas as mensagens que estejam na Lixeira com mais de 30 dias.
  • Com isto, temos um sistema de backups seguros dos últimos 30 dias.

Claro que podem fazer isto semanalmente ou com a periodicidade que você entender. É só jogar esses comandos na crond.

Se tiver medo de que não seguro seus dados sensíveis estarem a viajar por email, basta acrescenter alguns comandos para encriptar os arquivos com TrueCrypt. Este é um programa open-source e freeware muito bom para encriptação de arquivos e partições.

Deixe algum comentário se resolver colocar isso em prática também.

HowTo: Como converter HTML em PDF com PHP

Provavelmente você já deva ter ouvido falar na biblioteca FPDF, que serve pra converter resultados em PHP diretamente em PDF. Porém o seu uso não é muito simples, pois é necessário efetuar uma configuração minimalista na página a ser montada.

A idéia deste HowTo é apresentar uma maneira mais simples para isso, ou seja, que tal você criar um HTML, por exemplo o relatório que você quer que seja gerado, e o PHP automaticamente gerar um PDF igual ao HTML? Isso é fácil…

dompdf é uma biblioteca em PHP que permite converter HTML para PDF. Interpreta tags html, incluíndo CSS.

Características
dompdf requer para seu funcionamento PHP 5, e entre as qualidades mais destacadas temos:

  • Suporte a propriedades, seletores CSS 2.1.
  • Suporte a atributos HTML 4.0
  • Suporte para de estilos externos (local e/ou remoto)
  • Suporte para tabelas, incluindo linhas e colunas.
  • Suporte ao carregamento de imagens GIF, JPG e PNG.
  • Suporte para links e âncoras.
  • Suporte a comandos PHP.
  • Não é necessário instalar nenhuma biblioteca adicional.

Utilizando dompdf
Utilizar dompdf é muito simples, primeiramente deve-se incluir o arquivo dompdf_config.inc.php e então criar uma instância da classe DOMPDF.

  1. require_once(“dompdf_config.inc.php”);

  2. $html =

  3. ‘<html><body>’.

  4. ‘<p>Put your html here, or generate it with your favourite ‘.

  5. ‘templating system.</p>’.

  6. ‘</body></html>’;

  7. $dompdf = new DOMPDF();

  8. $dompdf->load_html($html);

  9. $dompdf->render();

  10. $dompdf->stream(“sample.pdf”);

Como você pode observar é muito simples de utilizar e pode-se obter excelentes resultados. Se deseja verificar uma demostração, pode-se utilizar o dompdf Demo o qual mostra um formulário que podemos incluir nossas tags html e gerar automaticamente o arquivo pdf.

Aproveite e confira os melhores preços em Câmeras Digitais – Jacotei

HowTo: Subversion – Ignorando arquivos estranhos

Olá pessoal,

O objetivo deste HowTo não é fazer definição do que é Subversion, controlador de versão, SVN, Tortoise e etc… isto você deve saber, ou pode verificar excelentes outros posts a respeito:

A idéia aqui é dar uma dica pra você na hora de fazer o versionamento de arquivos de projetos web, editados no Dreamweaver.

Tenho usado Subversion a algum tempo, e um detalhe que muitas vezes não damos conta na hora de fazer um ADD de um projeto, é justamente os arquivos que não se devem fazer o versionamento.

Se você, assim como eu, utiliza Dreamweaver para realizar a edição de seus sites, já deve ter percebido que o DW cria vários arquivos e pastas dentro do seu projeto, para organização interna dele, como sincronização, notas de design e assim por diante.

E o Windows contribui adicionando outros arquivos, no meu aparece uns que parece referir-se a um tal de Microsoft Visual Fonte Segura, um programa que nunca utilzei.

O pior mesmo é um tal de Thumbs.db que é modificado toda vez que você abrir seus arquivos pelo Windows Explorer, então o Tortoise sempre acha que precisa atualizar e vai manter as grandes exclamações vermelhas sobre seus arquivos.

Estes arquivos realmente não precisa entrar no controlador de versão, portanto precisamos de dizer SVN que deve ignorá-los.

Minha lista de arquivos a serem ignorados:

  1. _notes folder – usado pelo Dreamweaver
  2. dwsync.xml – criado pelo Dreamweaver dentro da pasta _notes
  3. Thumbs.db – criado pelo Windows
  4. vssver.scc – criado por um tal de Visual Source Safe.
  • Abra o Windows Explorer e vá para a pasta raiz de seu projeto.
  • Clique com o botão direito e escolha Tortoise-> Propriedades.
  • Adicione um nome de propriedade svn:ignore e, em seguida, adicione a lista de arquivos a serem ignorados (lista acima), um em cada linha.
  • Por último, marque a caixa “Aplicar propriedades recursivamente ” e clique em OK.
  • Agora faça um Commit sobre essas mudanças.
  • Em seguida, exclua os arquivos que já estão lá. A maneira mais simples de fazer isso é usar o Windows Explorer, pesquisar para encontrar todos esses arquivos na pasta de seu projeto, em seguida, selecione todos, clique com o direito e selecione Excluir no menu do Tortoise. Mais uma vez, lembre-se de fazer um Commit sobre essas mudanças.

Agora sim, você vai ver que o SVN comporta-se melhor…

Referências: http://rynoinstereo.com/?p=1

HowTo: Como copiar arquivos de uma máquina para outra no Linux?

Muito usado, principalmente quando se esta realizando atualização e/ou migração de servidores. Pense na necessidade de copiar arquivos de configuração de uma máquina que já tenha os serviços funcionando, para uma nova máquina que você esteja montando.

A maneira mais simples de fazer isso é utilizar o protocolo SCP – Secure Copy. É o meio mais seguro para transferir arquivos entre um host local e um remoto ou entre dois hosts remotos, usando o protocolo SSH.

scp ArquivoFonte usuário@host:diretório/ArquivoAlvo
scp usuário@host:diretório/ArquivoFonte ArquivoAlvo

Por exemplo, digamos que queremos copiar o arquivo httpd.conf, que se encontra em em uma máquina local (mesmo que seja acessada via Putty, por exemplo), para uma outra máquina da rede chamada intranet, dentro do diretório /tmp, faríamos assim:

scp /etc/httpd/conf/httpd.conf root@intranet:/tmp

Vai ser solicitada a senha do usuário root da máquina intranet, e automaticamente após digitar a senha, a transferência se completará. Simples assim.

Se fizermos assim:

scp arquivo usuario@ip_ou_nome_da_maquina_remota:

– Vai copiar o arquivo para o diretório home do usuário na máquina remota;
– Não esqueça dos “:” no final;
– No nome do arquivo você pode utilizar “*”, expressões regulares, etc…

Caso você precise copiar um diretório inteiro, use o “-r”:

scp -r diretório usuario@ip_ou_nome_da_maquina_remota:

– O “-r” tem que ficar logo após o scp para funcionar.

No sentido contrário (remoto para local) é só inverter:

scp usuario@ip_ou_nome_da_maquina_remota:arquivo

– Copia o arquivo da máquina remota para o diretório local. Aqui também
vale lembrar que o usuário precisa ter direito de leitura neste arquivo da máquina destino.

IMPORTANTE: o scp não avisa se o arquivo já existir no destino.
Simplesmente sobreescreve. Fique atento a isso !

Espero que possa ser útil pra você também…

Fonte: http://www.linein.org/blog/2009/01/27/copy-files-between-two-webservers-using-linux-scp/

HowTo: Editor TinyMCE com LightBox

HowTo: Como integrar o editor TinyMCE com LightBox.

  • Definições:
    TinyMCEé um editor Javascript HTML WYSIWYG multi-plataforma, web based. É usado principalmente em sistemas de notícias, onde fornece uma interface semelhante a um editor de texto, permitindo realizar praticamente toda a formatação necessária em um bloco de texto. Site oficial: http://tinymce.moxiecode.com/
  • LightBox – É um script que permite fazer sobreposição de imagens á página corrente e não dentro da página. Isto faz com que as imagens não sejam limitadas por um layout. Página oficial: http://www.huddletogether.com/projects/lightbox2/

Exemplo de utilização: Esta sendo muito usado, o efeito LightBox dentro de sistemas de notícias, o G1 é um exemplo, confira:

http://g1.globo.com/Noticias/Mundo/0,,MUL268938-5602,00.html,

basta clicar em uma das fotos.

Agora você não precisa ficar quebrando a cabeça pra poder fazer isso, é tudo muito, mas muito simples.

============================================================

1 . Você deve baixar o material necessário:

TinyMCEhttp://tinymce.moxiecode.com/download.php
Baixe a última versão disponível. Você depois pode baixar no mesmo local, o pacote de idiomas, que tem para o português também. É fácil fazer a mudança, no próprio site ensina, só não iremos falar aqui porque não é o objetivo deste howto.

falamos aqui, em outra oportunidade, que o TinyMCE não possui um assistente de upload de fotos, mas que você pode usar o plugin Ibrowser para isso, se estiver usando PHP. Se for ASP, JSP, CFM ou qualquer outra linguagem pode se utilizar o TinyFCK.

LightBox2http://www.huddletogether.com/projects/lightbox2/#download
Também, baixe a última versão.

============================================================

1 . Configurando:

  • Descompacte o arquivo baixado, você vai ter uma basta chamada examples, com dicas e modelos para você ver como implementar em seu formulário, e outra chamada jscripts, com os scripts necessários para que o TinyMCE funcione.
  • Copie a pasta jscripts para dentro de seu projeto. Se você já tiver uma pasta de JavaScript em seu projeto, copie somente a pasta que fica dentro dela, a tiny_mce que é onde fica todos os scripts.

Na sua página que faz a inserção do conteúdo através de um formulário com os campos de Text e Textarea, você vai editar, inserindo entre as tags <head>:

<!– TinyMCE –>

<!–aqui você deve indicar o caminho correto, dentro de seu projeto, onde se encontra a pasta tiny_mce que você copiou anteriormente–>
<script type=”text/javascript” src=”jscripts/tiny_mce/tiny_mce.js”></script>

<script type=”text/javascript”>
tinyMCE.init({
// General options
mode : “textareas”,
theme : “advanced”,
plugins : “safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template”,

// Theme options
theme_advanced_buttons1 : “save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect”,
theme_advanced_buttons2 : “cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor”,
theme_advanced_buttons3 : “tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen”,
theme_advanced_buttons4 : “insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak”,
theme_advanced_toolbar_location : “top”,
theme_advanced_toolbar_align : “left”,
theme_advanced_statusbar_location : “bottom”,
theme_advanced_resizing : true,
});
</script>
<!– /TinyMCE –>

É claro que tem outras opções, é so você ver o código fonte dos exemplos, na pasta examples.

Quando você terminar, seu formulário terá mais ou menos essa aparência:

Ou seja, os campos Textarea automaticamente assumirão o editor de texto.

2. Para que o efeito LighBox funcione:

  • Você vai inserir imagens normalmente, através do botão inserir imagem do editor. Se você estiver usando o Ibrowser, terá um botão exclusivo para isso, se não estiver usando será o botão padrão, sendo que neste caso a imagem já deve estar carregada em algum lugar, podendo ser uma imagem de um outro site, por exemplo, copie e cole este endereço, no campo URL da imagem:

    http://www.funpic.hu/files/pics/00002/00002281.jpg

  • Depois de inserir a imagem, você pode redimensionar conforme ficar melhor pra você.
  • Agora você clica na imagem, e depois escolhe o botão Insert/Edit Link, que é o desenho de uma corrente. Vai surgir uma outra janela, você então vai colar novamente a URL da imagem que você quer que ele abra: http://www.funpic.hu/files/pics/00002/00002281.jpg
  • Na mesma janela, você tem a opção Title, ai você vai colocar uma descrição da foto, que vai aparecer quando a foto for clicada, exemplo: Gato Fumando.
  • Clique na aba Advanced, vá até o combo Relationship page to target, e escolha a opção Lightbox, e pronto.

3. Configurando a página de resultado.

Na página que exibe as notícias, você vai ter que inserir as propriedades do LightBox, antes da tag <head>:

<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="js/lightbox.js"></script

É claro que você já pegou esses JavaScripts, e copiou para a pasta JS de seu projeto né?

Ai é so colocar também o CSS do Lightbox:

<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />

Pronto, já deve funcionar…

Até a próxima.