sexta-feira, 24 de julho de 2015

Usando arquivos Dot Env para gerenciar as configurações

Configuração Laravel


Incluído no Laravel http://laravel.com/docs/configuration#protecting-sensitive-configuration



Eu realmente gosto da segunda ligação e como ele cria um arquivo .env primeiro a apenas devolver um array simples. Depois disso, você pode ter o .env.production.php ou .env.local.php que laravel pode procurar.


//bootstrap/start.php

$env = $app->detectEnvironment(function()

{

if (file_exists(__DIR__ . '/../.env')) {

return include(__DIR__ . '/../.env');

} else {

return 'production';

}

});

Muito simples nesse ponto para separar todos os ambientes.

terça-feira, 25 de fevereiro de 2014

Como instalar o MemCache num Windows

Configurando o MemCache num Windows


Depois de algumas pesquisas, descobri que há uma versão binária do Win32 memcached disponível aqui.
Caso você tenha problemas com a dll, ou ainda precise de um memcached para 64 bits, outras versões podem ser encontradas para download aqui.

Então vá lá e baixar a versão binária win32 para o seu computador. Quando baixado, extraia o arquivo para a pasta memcahced em sua partição C.

Você deve pegar apenas um arquivo chamado memcached.exe. Agora precisamos instalar este como um serviço, como o memcached é daemon e deve ser executado apenas como serviço.

Para instalar o Memcached como um serviço, siga estes passos (por favor, mudar tudo barras para barras invertidas):

Se você está rodando o Vista, você deve definir memcached.exe para Executar como administrador
Instalar o serviço usando o comando:

c:/memcached/memcached.exe  -d install

no prompt de comando 
Inicie o servidor dos Serviços ou executando um dos seguintes comandos:

c:/memcached/memcached.exe -d  start
ou
net start "memcached Server"


Isso é que é, agora o servidor memcached é instalado e está escutando na porta 11211. Há mais uma coisa a fazer. Por padrão, o servidor é definido como limite de 64MB de memória, o que é muito pequeno. Para corrigir, vá para o Editor do Registro e encontrar a chave

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/memcached  Server .


Modifique o comando para:

“C:/memcached/memcached.exe” -d runservice -m 512


Desta forma, você vai usar 512 Mb limite de memória para o seu servidor. 

Se você estiver usando WAMP, então basta ligar extensão php_memcache nele. Agora estamos prontos para ir testando. 

O teste mais simples é escrever algo para memcache que irá expirar em 30 segundos e, em seguida, tentar recuperar o valor do cache. 

Então escreva isso em seu arquivo de teste:

<?php

$memcache = new Memcache; // instantiating memcache extension class

$memcache->connect("localhost",11211); // try 127.0.0.1 instead of localhost 

// if it is not working 



echo "Server's version: " . $memcache->getVersion() . "<br />\n";



// we will create an array which will be stored in cache serialized

$testArray = array('horse', 'cow', 'pig');

$tmp       = serialize($testArray);



$memcache->add("key", $tmp, 30);



echo "Data from the cache:<br />\n";

print_r(unserialize($memcache->get("key")));

?>


Se tudo correu bem, você deve ver sua matriz escrita de memcache. Agora você pode usar este mecanismo de cache poderoso para desenvolver aplicações PHP muito rápido. Se você precisa saber mais, acesse a página do Manual do  PHP Memcached

quinta-feira, 28 de março de 2013

Como Limpar Cache do Putty

Como limpar o cache do putty e atualizar as 'fingerprints'



Para todos aqueles que precisam limpar o cache do Putty de impressões digitais (fingerprints) de host (Windows) para desenvolvimento e teste, aqui está a resposta:

1. Abra o registro (regedit)
2. Vá para HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys

Lá você deve ver o cache Putty de chaves de host.
A coluna 'Nome' diz que chave é para qual servidor.
Por exemplo, ele vai ter o formato de <algo> @ <port>: <host> [RSA2 @ 22:172.16.117.159]

3. Excluir as linhas que você precisa e pronto!

Isso é tudo...

terça-feira, 26 de março de 2013

Instalando Fontes True Type no CentOs 6

Instalando Fonts TrueType no centOs 6


msttcorefonts é uma maneira de obter as fontes TrueType da Microsoft no Linux. No entanto, a liberação da versão 6 do Red Hat Enterprise Linux não inclui mais um pacote pré-requisito de msttcorefonts, nomeadamente chkfontpath, que, por sua vez, depende da fonte servidor pacote xfs.

A última versão do msttcorefonts no sourceforge não é adequado para isso, então, enquanto isso, podemos corrigir o arquivo de especificação e construí-lo nós mesmos.

1) Baixe o arquivo de especificações de http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec

2) corrigir o arquivo spec. Crie um arquivo chamado msttcorefonts.rhel6.patch, contendo o seguinte:

--- msttcorefonts-2.0-1.spec 2011-09-05 11:09:57.206756336 +0100
+++ msttcorefonts-2.0-1.1.spec 2011-09-05 11:23:56.925761649 +0100
@@ -19,8 +19,8 @@
 BuildPrereq: %{ttmkfdir}
 BuildPrereq: wget
 BuildPrereq: cabextract
-Prereq: /usr/sbin/chkfontpath
-Packager: Noa Resare 
+#Prereq: /usr/sbin/chkfontpath
+#Packager: Noa Resare 
 
 %description
 The TrueType core fonts for the web that was once available from
@@ -152,7 +152,7 @@
 %post
 if test $1 -eq 1
 then
- /usr/sbin/chkfontpath --add %{fontdir}
+ ln -s /usr/share/fonts/msttcorefonts/ /etc/X11/fontpath.d/msttcorefonts
 fi
 # something has probably changed, update the font-config cache
 if test -x /usr/bin/fc-cache
@@ -163,7 +163,7 @@
 %preun
 if test $1 -eq 0
 then
- /usr/sbin/chkfontpath --remove %{fontdir}
+ /bin/rm -f /etc/X11/fontpath.d/msttcorefonts
 fi
 
 %files

3) corrigir o arquivo de especificações, executando o seguinte comando no mesmo diretório do arquivo de especificação.
patch 

Inspecionar visualmente o arquivo de especificação resultante para verificar se ele não exige mais chkfontpath.
4) Reconstruir o pacote rpm usando o arquivo de especificação do novo
rpmbuild-bb msttcorefonts-2.0-1.spec

5) Finalmente, copie o RPM resultante para seu repositório local, ou instalar localmente com
yum localinstall msttcorefonts-2.0-1.noarch.rpm

quarta-feira, 6 de junho de 2012

Instalando JDK Java da Oracle no Ubuntu 12.94


Instalando JDK Java da Oracle no Ubuntu 12.94  (Precise Pangolin)

Objetivos:
  • Instalar  a Java JDK no Ubuntu 12.04 (Precise Pangolin)
To get started, download Java JDK package from here.
When prompted with the screen below, choose to save the file.

jdk_precise

Depois de salvar, extraia a package baixada, rodando o comando abaixo. O comando assume que o seu arquivo foi baixado na pasta Downloas.
tar -xvf ~/Downloads/jdk-7u3-linux-i586.tar.gz

jdk_precise_1

Após, crie uma pasta para a JDK, com o seguinte comando.
sudo mkdir -p /usr/lib/jvm/jdk1.7.0 

jdk_precise_2

Então mova todos os arquivos e pastas da JDK, para a nova localização, conform mostrado.
sudo mv jdk1.7.0_03/* /usr/lib/jvm/jdk1.7.0/

jdk_precise_3

Após, copie e cole cada comando, sendo um de cada vez, conforme mostrado abaixo, dando um enter após cada comando.
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 1 
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 1

Depoism crie uma pasta para os plugins do Mozilla, no seu diretorio home.
mkdir ~/.mozilla/plugins/

jdk_precise_7

Finalmente, crie um link simbólico, para a sua pasta de plugins do Mozilla. Não esqueça de substituir no comando o i386, por amod64 se seu Sistema Operacional for 64 bits
ln -s /usr/lib/jvm/jdk1.7.0/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

jdk_precise_8
 E é isso, sua JDK Java esta instalada.

segunda-feira, 4 de junho de 2012

Paginator com Zend e Doctrine

Zend_Paginator e Doctrine 2


Para quem gosta de trabalhar com o Zend, mas usa o Doctrine 2 como ORM, aqui vai um modo fácil de implementar um Paginador, usando o Zend_Paginator com o Doctrine.


use Doctrine\ORM\Tools\Pagination as Paginator; // goes at top of file
SomeController::someAction() {
 $dql = "SELECT s, c FROM Square\Entity\StampItem s JOIN s.country c ".' ORDER BY '.  $orderBy . ' ' . $dir;

 $query = $this->getEntityManager()->createQuery($dql);
 $d2_paginator = new Paginator($query); \\

 $d2_paginator_iter = $d2_paginator->getIterator(); // returns \ArrayIterator object

 $adapter =  new \Zend_Paginator_Adapter_Iterator($d2_paginator_iter);

 $zend_paginator = new \Zend_Paginator($adapter);          

 $zend_paginator->setItemCountPerPage($perPage)
            ->setCurrentPageNumber($current_page);

 $this->view->paginator = $zend_paginator; //Then in your view, use it just like your currently use     
}

terça-feira, 15 de maio de 2012

Servidor Git pessoal com gitolite

Usem o Git, vale a pena. Usem o Github quando puderem, também vale muito a pena. Mas as vezes precisamos de um repositório mais privado, e não estamos afim de pagar para o github (embora vale a pena!) já que temos servidores sobrando.
Entra o gitolite, que permite fácil configuração multiusuário para um repositório Git.
Eis como proceder: Primeiro copie sua chave pública para o servidor (a mesma do github, por exemplo):
$ scp ~/.ssh/id_rsa.pub user@servidor:~/
E então faça ssh para o servidor e se torne root, para seguir os seguintes passos:
# cd
# aptitude install git
# git clone git://github.com/sitaramc/gitolite gitolite-source
# cd gitolite-source
# mkdir -p /usr/local/share/gitolite/conf /usr/local/share/gitolite/hooks
# src/gl-system-install /usr/local/bin /usr/local/share/gitolite/conf /usr/local/share/gitolite/hooks
# useradd git -d /home/git -g users -m -s /bin/bash
# su - git
$ gl-setup /home/user/id_rsa.pub
Atenção: assumi que seu usuário padrão no servidor é user, se não for troque as ocorrências. Pronto assim temos o básico pronto, agora sobre operação geral.
Você pode configurar uma interface de consulta básica na web usando o próprio git, ainda no user git faça:
$ cd repositories/testing.git
$ git instaweb -d webrick -p 8081
Agora pode acessar seu servidor na porta 8081 para navegar nos projetos. Não precisamos mais estar no servidor para os próximos passos.
Então vamos criar um novo repo e adcionar usuários, da sua maquina:
$ git clone git@servidor:gitolite-admin.git
$ cd gitolite-admin
Nessa pasta edite o arquivo conf/gitollite.conf, nessa sintaxe:
repo nome-do-repositorio
  RW+ = user1 user2 user3
Sendo user1 user2 e user3 os usuários com acesso para escrita. O repositório será criado vazio e e para liberar os usuários basta copiar as chaves publicas para a pasta “keydir”, no formato “user1.pub” e etc. Agora envie as alterações.
$ git commit -a -m 'adionado repositorio nome-do-repositorio'
$ git push

segunda-feira, 14 de maio de 2012

could not open file "pg_clog/ windows e linux


 could not open file "pg_clog/ windows

 

Sintomas

Algumas vezes os arquivos de log das transações podem estar corrompidos por uma queda do servidor, falha de energia entre outros.Neste caso, o servidor vai dar uma mensagem parecida com a listada abaixo

hsphere=# select * from TABLE;
ERROR:  could not access status of transaction 1918986094
DETAIL:  could not open file "/var/lib/pgsql/data/pg_clog/0726": No such file or directory




Solução

O Arquivo necessário deve ser re-criado na mão com os direitos corretos
su - postgres
dd if=/dev/zero of=/var/lib/pgsql/data/pg_clog/0726 bs=256k count=1

Ou ainda como uma solução alternativa, copie um dos arquivos existentes na pasta pg_clog com o nome do arquivo necessário.


KVM: uma opção fácil ao VirtualBox e ao VMware


Embora seja um software open-source bastante antigo e conhecido, o Qemu nunca foi muito usado, pois era muito lento. Diferente do VMware e do VirtualBox, que são virtualizadores, capazes de rodarem outros sistemas operacionais com um overhead relativamente baixo, o Qemu é um emulador, que funciona de forma similar aos emuladores de consoles antigos, que usamos para rodar jogos de SNES e Mega-Drive no PC.
Em vez de utilizar um sistema de virtualização, ele tenta processar todas as instruções, o que acaba demorando mais tempo e fazendo com que a performance seja menor. Em geral, o VMware consegue fazer com que o sistema guest rode com de 70 a 90% do desempenho que teria se estivesse rodando diretamente, enquanto que o Qemu obtém de 5 a 10%.
Em 2005 o Qemu ganhou um módulo adicional, o Kqemu, um "acelerador" que faz com que ele passe a ser capaz de virtualizar as instruções, passando a oferecer um desempenho muito melhor. O Kqemu melhorou consideravelmente o desempenho do Qemu, mas, ainda assim, ele continuou atrás do VMware em questão de desempenho. Como o Kqemu era um componente proprietário, ele continuou sendo pouco usado.
O segundo salto veio em 2007, com o lançamento do KVM (http://kvm.qumranet.com/kvmwiki), um sistema de virtualização incluído diretamente no Kernel, disponível a partir da versão 2.6.20. O KVM substituiu o Kqemu como "acelerador" e, por ser licenciado sob a GPL, passou a ser desenvolvido de forma ativa, incorporando melhorias rapidamente, se tornando uma opção viável de virtualização, que passou a ser cada vez mais usado em servidores, concorrendo com o Xen, o VMware e o Virtuozzo.
Em se tratando de desktops, a principal vantagem do KVM é a facilidade de instalação e de criação das máquinas virtuais, combinada com o baixo impacto sobre o desempenho do sistema host, diferente do VMware, onde o processador fica ocupado o tempo todo enquanto a VM está ativa, mesmo que nada esteja sendo feito dentro dela.
O KVM pode ser instalado rapidamente sobre praticamente qualquer distribuição atual (com kernel 2.6.20 ou mais recente); basta procurar pelos pacotes "kvm" e "qemu". No caso do Debian Lenny e do Ubuntu 8.10, você pode instalá-los diretamente via apt.
O primeiro passo é instalar os dois pacotes. A grande vantagem do KVM é que, por ser um virtualizador open-source, ele é bastante simples de instalar nas distribuições atuais. O módulo vem incluído diretamente no kernel e os demais componentes podem ser instalados usando o gerenciador de pacotes:
# apt-get install kvm qemu
Depois de instalar, adicione o usuário que estiver utilizando no grupo "kvm", para que ele tenha permissão para usar o acelerador:
# adduser gdh kvm
Com isso a instalação está concluída. Falta apenas começar a criar os discos virtuais e rodar as VMs. Assim como no caso do VMware, o KVM suporta o uso de discos virtuais dinâmicos, que começam como arquivos vazios e vão crescendo conforme você instala coisas dentro da VM. O comando para criar os discos virtuais é o "qemu-img create nome.img -f qcow tamanho", como em: $ qemu-img create ubuntu.img -f qcow 10G
Este comando deve ser executado com o seu login de usuário (e não mais como root), já que ele é quem deve ser o dono do arquivo. Se você criar as imagens usando o root, você não terá permissão para escrever dentro dos arquivos ao usar o KVM, o que vai fazer com que a instalação dentro da VM falhe com uma mensagem "não é possível escrever no disco", ou similar.
Como pode imaginar, o "ubuntu.img" é o nome do arquivo e o "10G" é o limite máximo de tamanho para o disco virtual. Ele é originalmente criado como um arquivo vazio, que ocupa apenas alguns kbytes e pode crescer até o limite especificado.
É recomendável agrupar os discos virtuais em uma mesma pasta, para fins de organização, mas isso fica a seu critério. Se quiser espelhá-los pelo HD, não há problema. :)
Com o disco virtual criado, falta apenas inicializar a VM usando o CD/DVD ou a imagem ISO com o sistema de boot e começar a instalação do sistema.
O comando agora é o "kvm", seguido pelo arquivo ISO com a imagem de boot (pode ser tanto o ISO de uma distribuição Linux quanto uma imagem de uma mídia de instalação do Windows), seguido pelo disco virtual que será usado, a quantidade de memória RAM reservada à VM (em MB) e a opção "-boot d", que faz com que o KVM inicialize a VM a partir do CD-ROM:
$ kvm -cdrom /dev/cdrom -hda ubuntu.img -m 512 -boot d
Se quiser usar diretamente um CD ou DVD gravado dentro do drive, especifique o dispositivo "/dev/cdrom", que permite acesso direto à mídia dentro do drive:
$ kvm -cdrom /dev/cdrom -hda ubuntu.img -m 512 -boot d
Assim como em outros virtualizadores, uma nova janela é aberta e o boot ocorre da maneira tradicional. Ao clicar sobre a janela, o mouse fica "preso" dentro dela; para soltá-lo, pressione Ctrl+Alt:
kvm_html_m2556625b
O KVM não possui uma opção de tela cheia, mas você pode aumentar o espaço útil removendo a borda da janela, o que no KDE é feito clicando com o botão direito na barra de título e usando a opção "Avançado > Sem Borda" (pressione "Alt+F3" para que ela volte a ser exibida). Você pode também mover a janela (o que é muito útil em casos em que o sistema dentro da VM configura o vídeo com uma resolução vertical maior que a área útil da tela), segurando a tecla Alt e arrastando a janela usando o botão esquerdo do mouse.
Em alguns casos (que estão se tornando cada vez mais raros, conforme o software evolui), o KVM pode apresentar erros diversos durante a instalação de alguns sistemas operacionais específicos. Nesse caso, você tem a opção de desativar o KVM, ficando apenas com o Qemu sem aceleração que, embora muito mais lento, consegue completar a instalação na maioria dos casos. Para isso, basta executar o mesmo comando, substituindo o "kvm" por "qemu -no-kvm":
$ qemu -no-kvm -cdrom /dev/cdrom -hda ubuntu.img -m 512 -boot d
Estes problemas se manifestam apenas durante a instalação, de maneira que você pode voltar a usar o KVM normalmente depois que ela estiver concluída.
Outra opção destinada a solucionar problemas de instalação é a "-no-acpi" (que era necessária para instalar o Windows em versões anteriores do KVM), que pode ser adicionada no final do comando, como em:
$ kvm -cdrom winxp.iso -hda xp.img -m 256 -boot d -no-acpi
Depois de instalado o sistema dentro da VM, o comando para inicializá-la daí em dia é bem mais simples, indicando apenas o disco virtual e a quantidade de memória reservada, como em:
$ kvm -hda ubuntu.img -m 512
Para facilitar, crie ícones de atalho para as VMs criadas. Basta indicar o comando, especificando o caminho completo para o arquivo do disco virtual:
kvm_html_427657c9
O KVM inclui um sistema de compartilhamento de conexão, que simplesmente compartilha a conexão de rede via NAT, permitindo que o sistema guest configure a rede via DHCP. Graças a isso, você não precisa executar nenhum passo adicional para que a VM acesse a web, basta deixar que ela obtenha a configuração de rede via DHCP durante a instalação. Este modo é equivalente às opções "-net nic -net user", que precisavam ser especificadas manualmente em versões antigas.
Concluindo, se ao abrir a VM você receber um erro como:
open /dev/kvm: Permission denied
Could not initialize KVM, will disable KVM support
... significa que o KVM não está carregado, ou que (mais provável) as permissões de acesso ao dispositivo virtual não foram ajustadas corretamente ao instalar o pacote. Nesse caso, carregue o módulo (apenas por desencargo) e ajuste as permissões manualmente, como em:
# modprobe kvm
# chown root:kvm /dev/kvm
# adduser gdh kvm
Se você é o único que utiliza o PC, pode simplesmente abrir as permissões do dispositivo, de modo a não precisar mais se preocupar com isso:
# chmod 666 /dev/kvm
A principal limitação do KVM é que ele funciona apenas em processadores com suporte a virtualização via hardware, o que deixa de fora a maioria das máquinas antigas. Você pode checar se o processador possui ou não suporte à virtualização usando o comando "cat /proc/cpuinfo", onde o campo "flags" deve incluir o "vmx" ou o "svm", como em:
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
É necessário também que o suporte a virtualização esteja ativado no Setup (caso a opção esteja disponível. Procure pela opção "Enable SVM" ou "Virtualization support".
Caso o processador não suporte nenhum dos dois, você ainda poderá usar o Qemu em modo de emulação (usando os mesmos comandos), mas tudo ficará muito lento. Nesse caso, o melhor seria partir para o VMware ou o VirtualBox, que não dependem de suporte especial por parte do processador.