Bloco de notas
terça-feira, 16 de abril de 2013
sexta-feira, 1 de fevereiro de 2008
Excelente tutorial sobre como criar screencasts em Linux
http://popey.com/Creating_Screencasts
quinta-feira, 31 de janeiro de 2008
Criar um túnel SSH para um serviço remoto através da linha de comando
Normalmente utilizo o Putty para gerir os meus acessos remotos por SSH, e recorro frequentemente aos túneis para aceder a serviços remotos que se encontram atrás de firewalls.
Mas estou esta manhã a preparar software para instalar num servidor e para tal utilizo Linux (Ubuntu 7.10 em dual boot no portátil), e tive necessidade de efectuar uma ligação remota a um servidor através de túnel SSH, coisa que nunca tinha feito através da linha de comando, mas que é extremamente simples, por isso aqui fica a sintaxe:
[localhost]$ sudo ssh -L 8080:www.hostname.com:80 user@www.hostname.com
A porta 8080 é a porta local, a 80 é a remota e www.hostname.com é o servidor a que queremos ligar.
quarta-feira, 9 de janeiro de 2008
Windows Live Writer
Estou a escrever este post no Windows Live Writer da M$, assim à laia de 'test drive'... para quem não sabe, é um software de download gratuito, destinado à edição em blogues. Assim à primeira vista parece 5 estrelas:
Acho que desde 2006 que não testo este tipo de software da MS. Uso regularmente o Office 2007 (Word e Excel, excelentes), e com menor frequência o Visual Studio 2005 e agora o 2008 (excelentes também). Aliás, agora que penso nisso, até acho que a Microsoft produz excelente software.. desde que não sejam sistemas operativos.. eheh!
Vou também aproveitar para testar o Windows Live Mail e o Windows Live Spaces, para comparar a 'oferta' com a do nosso querido Google (yes, I'm a Google fan, so what?). Quem ainda não experimentou a integração dos serviços do Google, não sabe o que perde... Search, Gmail, Docs, Calendar, Maps, Photos, etc... excelente, especialmente o Gmail e o Calendar.
Uma possível desvantagem do Google é que a interface principal com a maioria dos seus serviços é o browser, e para ser honesto, mesmo com o advento da "Web 2.0", e por muito AJAX que metam para ali, parece-me que o browser não consegue substituir com eficácia a facilidade e agradabilidade de uma interface gráfica tradicional.
terça-feira, 8 de janeiro de 2008
Ligação a servidor Oracle a partir de RHEL4 ou CentOS4 sem recompilar Apache/PHP
Há cerca de três semanas colocou-se-me a necessidade de ligar a um servidor Oracle para depositar dados a partir de uma aplicação em PHP (PHP 5.2.x mais precisamente, mas será igual para PHP4).
Após percorrer vários fóruns e blogs rapidamente cheguei à conclusão que todas as formas de utilizar um driver Oracle de forma nativa em PHP envolviam a recompilação do Apache e do PHP, situação a evitar, do meu ponto de vista, por "quebrar" futuras actualizações do sistema via yum já que os RPMs desses pacotes teriam de ser desinstalados e substituidos por versões compiladas manualmente a partir da fonte. Também não estava interessado em manter uma infra-estrutura completa de gcc/glibc/headers/etc,etc para compilação, só para conseguir acrescentar ao PHP a capacidade de ligar a uma base de dados remota.
Na semana que passou, a necessidade dessa ligação tornou-se mais premente, e procurei desesperadamente por uma alternativa à solução mais vista. Por sorte ocorreu-me efectuar a ligação através de ODBC (unixODBC mais especificamente), pois é uma forma de ligação ao SQL Server que utilizo em alguns servidores com PHP 5.2 pois nunca encontrei pacotes RPM de php-mssql para essas versões de PHP, que creio não podem ser fornecidas por questões de licenciamento.
A utilização de ODBC em PHP para ligar ao SQL Server funciona bem, se tivermos cuidado com os campos de base de dados com mais de 255 caracteres que causam alguns problemas. Peço desculpas, esta questão seria para outro post, fica aqui apenas a referência.
A ideia era então instalar o suporte a Oracle no servidor, configurar a ligação ODBC e utilizar essa ligação a partir do PHP.
O primeiro passo consiste em instalar o Oracle Instant Client, o SQL*Plus e as bibiliotecas ODBC da Oracle, que são fornecidas gratuitamente pela Oracle (requer registo no site). Optei por instalar as versões em formato RPM para Linux x86, tendo o cuidado para fazer os downloads para a mesma versão (no meu caso optei pela versão 11.x, que era a mais recente, apesar de o servidor Oracle ser 10.x).
A instalação dos pacotes no servidor Linux é feita através do comando:
rpm -ivh
Em seguida é necessário editar o ficheiro /etc/profile e
export LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib
export TNS_ADMIN=/etc/oracle
e carregar a alteração do mesmo através do comando:
source /etc/profile
Depois é necessário criar a directoria /etc/oracle e dentro desta o ficheiro tnsnames.ora com um conteúdo semelhante ao seguinte (mas vai sempre depender da implementação Oracle, o melhor será que peçam ao responsável do Oracle um ficheiro tnsnames.ora já existe noutra máquina que seja cliente habitual do Oracle, mesmo que em ambiente Windows):
LIGACAODB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = [endereço de rede do servidor ORACLE]
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =
[OU ALTERNATIVAMENTE:]
(SSID =
)
)
Depois executa-se o configurador do odbc da oracle normalmente encontrado em
/usr/share/oracle/11.1.0.1/client/odbc_update_ini.sh
que vai configurar os ficheiros /etc/odbcinst.ini e /etc/odbc.ini. Cuidado, se já tiverem estes ficheiros com dados definidos, este processo poderá apagá-los, apesar de tal não ter acontecido comigo.
Nota: Tal como anteriormente, o texto 11.1.0.1 deverá ser substituído pela versão dos pacotes que instalaram, caso seja diferente.
Depois é necessário verificar se a biblioteca no ficheiro /etc/odbcinst.ini aponta correctamente para a biblioteca de Oracle instalada, e configurar o ficheiro /etc/odbc.ini para ter a definição correcta do nome da base de dados conforme definido no ficheiro /etc/oracle/tnsnames.ora (neste caso seria LIGACAODB, mas o melhor é usarem se possível o mesmo nome da base de dados real para evitar mais problemas do que os que já naturalmente irão ter...) e definir o nome da DSN que irão utilizar na ligação ODBC a partir do PHP ou outra linguagem qualquer, pois isto vai funcionar para Mono, Python, Ruby, C++ ou outra linguagem qualquer com suporte a ODBC em Linux.
Ah, e não me perguntem por ligações JDBC, não mexo em Java nem com máscara, luvas de borracha e um pau de cinco metros...
Finalmente, é preciso muita coragem para testar a ligação, pois quase garantidamente vão gastar os restantes 95% do tempo a tentar que isto realmente funcione (thanks, Oracle ;-)
O método de teste mais fiável que encontrei é utilizando o sqlplus que já foi instalado através de RPM, pelo comando:
sqlplus utilizadorDB/passwordDB@endereco_rede_servidor_ORACLE/LIGACAODB
Nota: LIGACAODB deve ter o mesmo nome que foi definido no inicio do ficheiro /etc/oracle/tnsnames.ora.
Se a ligação funcionar, podem subsistir problemas com a parte ODBC, mas a partir daí o problema resume-se a verificar a configuração dos dois ficheiros de configuração relativos ao ODBC indicados acima. Se não funcionar... mais uma vez, paciência e coragem são importantes, assim como as mensagens de erro fornecidas pelo sqlplus.
Se utilizarem PHP4/5, recomendo vivamente a biblioteca ADOBD para ligações a base de dados, inclusivamente ODBC. Por outro lado, se usarem PHP5, *não* recomendo a utilização de PDO, seja para o que for...
quinta-feira, 8 de novembro de 2007
Montar uma pasta partilhada do Windows Server 2003 em Linux (Centos 4.x) através de CIFS
$ /bin/mount //ipdoservidorwindows/partilha /pasta_local -t cifs -o username=utilizador,password=muitosecreta1234 -o gid=users,dir_mode=0777,file_mode=0777,rw
> error 13 = Permission denied
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
Nota: O smbclient dava também erro de autenticação.
Ainda pensei que a solução estivesse em alterar as políticas de segurança do Windows 2003, mas pelo que li, essas alterações são necessárias para o smbfs funcionar, e estou a utilizar o cifs neste caso pois o smbfs já morreu.
Por isso, antes de partir para essa reconfiguração, experimentei especificar o nome de domínio no comando mount e FUNCIONOU...
$ /bin/mount //ipdoservidorwindows/partilha /pasta_local -t cifs -o username=utilizador,password=muitosecreta1234 -o gid=users,dir_mode=0777,file_mode=0777,domain=NOMEDODOMINIO,rw
Nota 2: O smbclient continua a não aceder às partilhas, mesmo especificando o domínio... provavelmente o smbfs requer as alterações às políticas de segurança do Windows para que não seja obrigatória a assinatura digital dos pacotes de dados SMB.
O que eu não tinha era consciência de que o cifs já fazia isto assim tão bem.