Mostrando las entradas con la etiqueta informatica. Mostrar todas las entradas
Mostrando las entradas con la etiqueta informatica. Mostrar todas las entradas

gnome-terminal y el título de los tabs

Si han jugado un poquito con gnome-terminal sabrán que hay una opción para ponerle título a la terminal y a los tabs y si han jugado en varias distros se darán cuenta que no siempre muestra estos títulos, esto es porque algunas veces nuestro archivo .bashrc se encarga de resetear estos títulos cada vez que abrimos la terminal lo cual va en contra de nuestras instrucciones, desactivar esto es sencillo, solo hay que saber buscar, en mi caso en fedora 16 si entramos a .bashrc este nos va a dirigir a otro archivo que esta en /etc/bashrc, lo abrimos como super user y buscamos los else que estan dentro de cada case como sigue:

    xterm*)
      if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
      # COMENTADO POR MI
      #else
      #    PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
      fi
      ;;
    screen)
      if [ -e /etc/sysconfig/bash-prompt-screen ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
      # COMENTADO POR MI
      #else
      #    PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
      fi
      ;;

Guardamos y listo!! Ya podemos modificar el título. En cualquier distro debe ser similar, solo hay que buscar en que momento se modifica el PROMPT_COMMAND y cuando lo hace. Si se fijan los archivos ubicados en /etc/sysconfig/ no existen por lo tanto nunca entrará al if y bien pueden comentarse  pero desconozco su funcionamiento real por lo cual ante la duda es mejor no mover.

Beep!!

Me dio por buscar como hacer sonar el beep de la pc con la idea de agregarlo en un script de bash como una especie de alarma y esto fue lo que encontre:

En primera hay que ejecutar el modulo pcspkr de la sig. manera:

modprobe pcspkr

Si no lo tiene hay que instalarlo. Despues instalamos la aplicacion "beep" y lo ejecutamos  y voilá!!

Si instalas beep y no suena es porque no esta instalado el modulo pcspkr.

En algún foro venia que una vez instalado el modulo podías hacer sonar el bip con un "echo -ne '\a' " pero la verdad nunca me funciono, estaría interesante porque no dependeríamos del comando beep sin embargo el comando trae un monton de cosas curiosas que dudo se puedan hacer en un echo.

Ejemplo que viene en el manual de beep (man beep)

sudo beep -f 1000 -r 2 -n -r 5 -l 10 --new

Una vez que le entiendes puedes componer tus propias melodías, Me voy a ver algo friki pero investigue las frecuencias de las notas musicales y las encontre en esta página: http://latecladeescape.com/algoritmos/1129-frecuencia-de-las-notas-musicales e hice que sonara el beep del DO3 al DO4  en teoria podriamos alcanzar mas alla del SI8 porque el beep soporta frecuencias de hasta 19,999Hrz.

Le puse un timer de 500 milisegundos y un do final largo para que se apreciara la escala de do con cadencia =P

sudo beep -f 261.626 -l 500 -n -f 293.665 -l 500 -n -f 329.628 -l 500 -n -f 349.228 -l 500 -n -f 391.995 -l 500 -n -f 440 -l 500 -n -f 493.883 -l 500 -n -f 523.251 -l 1000

Luego colocare composiciones mas complejas ...

Actualización al 20 de noviembre del 2012:
Cuando reinician la maquina se desactiva el modulo pcspkr así que hay que buscar una forma de agregarlo al arranque, en fedora 16 al parecer tan solo hay que agregar un archivo conf en /etc/modprobe.d  para nuestra suerte en fedora ya debe haber un archivo beep.conf y solo hay que abrirlo y descomentar la linea que se indica.

Aquí encontre el método en CentOS (basado en red-hat): http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-kernel-modules-persistant.html

Bitacora de instalación Dell Inspiron N5110

1. Instalando ubuntu linux 11.04 de 64 bits
2. Usando este procedimiento se instalo virtualbox 4.1:

http://blogdecomputacion.com/blog/2011/05/04/como-instalar-virtualbox-en-ubuntu-11-04/

3. Intentando instalar windows 7 de 64 bits. Aparece un mensaje de error 0xc0000225 "error desconocido" para quitarlo simplemente hay que activar la opción "Habilitar IO APIC" en el menu de configuración de la placa base del virtualbox y voilá.

4. Intentando instalar google chrome, descargas el .deb de 64 bits de la página oficial y lo ejecutas como sudo con un #dpkg -i nombre-paquete.deb y me aparecen dos dependencias incumplidas, buscandolas con apt-cache search las localizo:

libnspr4-0d - Biblioteca del entorno de ejecución portátil de NetScape
libnss3-1d - Bibliotecas del servicio de seguridad de red

y con un apt-get -f install se instalan los 3 automaticamente.

5. Instalando ubuntu tweak
http://ubuntu-tweak.com/

6. SQL SERVER: Agregando Alias a sql server... hay dos apartados, uno para 64 bits y otro para 32 ... el de 64 no sirve para nada, agrega tus alias en el de 32.

7. Intentando poner los plugins de flash player ... es una monserga, ya llevo varios intentos fallidos cuando descubra como lo posteo... ya lo descubrí... al menos en ubuntu puedes instalar el plugin desde el centro de software, en la maquina virtual todavia no lo he logrado.

8. Para compartir una carpeta basta con instalar los VirtualBox Guest Aditions y agregar la carpeta a la lista de carpetas compartidas en el menu de Virtual Box.

9. Tambien tuve problemas para configurar mi monitor y la pantalla de la laptop ya que queria o expandir el escritorio o apagar la pantalla de la laptop y la configuración de monitores que tiene ubuntu por default no me lo permitia asi que buscando en el centro de software de ubuntu instale "multiple screens" que te da mas facilidad para las configuraciones.

De nuevo con postgres

Hace tanto que no usaba postgres que ya había olvidado ciertos detalles, los documentare aqui para futuras referencias, estamos usando un postgresql 8.4.5 sobre un ubuntu server 9.10, tambien tuve otras bronquillas interesantes con los accesos locales y remotos.

1. Despues de instalar nuestro postgres con apt-get nos disponemos a accesar con el ya tradicional:
$sudo su postgres

2. Una vez adentro accesamos directamente a pqsl
#psql

3. Digamos que quiero hacer una base de datos llamada pepito y que el usuario sea pepito_user con un password, primero crearemos el usuario, despues la db y al final nos salimos

CREATE USER pepito_user WITH PASSWORD 'n0m4nch35';
postgres=# CREATE DATABASE pepito WITH OWNER pepito_user;
postgres=# \q

4. Ahora accesamos como pepito_user
# psql -d pepito -U pepito_user --password

Aqui lo mas probable es psql te raye la mother, que no te permita accesar, esto es porque no está habilitado el acceso de este tipo para postgres, para hacer esto modificamos nuestro querido archivo pg_hba.conf, en cada maquina puede variar pero en la mia estaba en
/etc/postgresql/8.4/main/pg_hba.conf

Lo editamos como root, te encontrarás esta linea la cual vamos a borrar o comentar
local all all ident

y escribiremos la siguiente
local all all md5

Explicacion: el método de autenticación ident se refiere a que el usuario que se validará para el acceso sera el que esta en sesión y como mi usuario es postgres aunque escriba yo --password en psql le valdrá gorro, por lo cual preferimos md5 que nos permite mandar un user y password encriptado por seguridad en md5, esto también es útil para accesar remotamente ya que remotamente no siempre estas logueado como un usuario ident.

Una vez que guardemos los cambios debemos reiniciar el demonio de postgresql
# sudo /etc/init.d/postgresql stop
# sudo /etc/init.d/postgresql start
ó
# sudo /etc/init.d/postgresql restart

5. Ahora que ya estamos dentro ya podemos crear la estructura de nuestra db con CREATE table... cosa que no especificare aqui. Despues de eso nos vamos a otra maquina que tenga instalado un cliente psql e intentamos accesar remotamente:

# psql pepito -h pepito.com.mx -U pepito_user --password

pepito.com.mx puede ser la ip de tu server postgres también... sin embargo lo mas probable es que te rechace la petición... ¿que pasa? que nuestro archivo pg_hba.conf no esta configurado para recibir peticiones externas, por lo cual nos regresamos a nuestro server de postgresql y lo editamos de nuevo, ahora agregaremos la siguiente linea:

host all all 0.0.0.0 0.0.0.0 md5

Y reiniciamos postgres. Ahora ya podrán acceder remotamente y hacer las tablas que quieran a menos que suceda algo como lo del siguiente punto.

6. Mi server tiene 6 direcciones ip para una misma tarjeta por lo cual postgres no mostraba el abierto el puerto mas que en localhost y en la ip principal, para que postgres se escuche en todas las direcciones ip o incluso en las direcciones que tu elijas debemos modificar el archivo
sudo vi /etc/postgresql/8.4/main/postgresql.conf

Buscamos una linea que diga listen_addresses que esta comentada, ahi vienen las instrucciones para configurarla, yo lo único que hice fue escribir una nueva linea de la siguiente manera:

listen_addresses = '*'

reiniciando el servidor ya se podia ver el puerto 5432 de postgresql en todas las ip de forma remota... como supe esto? pues monitoreando los puertos con ayuda del comando "nmap" y con el comando "netstat -putan" con los cuales puedes escanear los puertos abiertos tanto de tu misma maquina como el de otras maquinas remotas, por ejemplo, al ejecutar nmap dentro de mi server podia ver el puerto 5432 abierto pero si ejecutaba nmap desde otra maquina hacia mi server no lo podia ver, por cierto, recomiendo ejecutar nmap de la siguiente manera, tarda un poco mas pero podemos ver mas puertos abiertos.

#nmap -p1-65535 pepito.com.mx

FIN

Gitweb

Ahora si, un facil y divertido gitweb para nuestros repositorios en git... en ubuntu karmic koala (9.10) instalarlo es tan sencillo como esto:

sudo apt-get install gitweb

1. Gitweb es un simple cgi escrito en perl (gitweb.cgi) la instalacion lo coloca en /usr/lib/cgi-bin, podemos moverlo si gustamos ... por lo pronto lo dejare ahi.

2. Las imagenes y css los coloca en /var/www/ este es el DocumentRoot de Apache2, asi que recomiendo copiarlas en otro lugar para configurar un VirtualHost digamos que las copiamos a /home/git.miweb.com/docs

3. Tambien genera un archivo de configuracion (gitweb.conf) en /etc/ en el cual podemos algunas variables de las cuales nos interesa por lo pronto modificar solamente una $projectroot en el cual colocaremos el directorio donde tenemos nuestros proyectos, lo mas probable es que dependiendo la version de gitweb deba cambiarse alguna otra en mi caso no fue asi.

4. Para publicar el cgi en web configure un VirtualHost de la siguiente manera:


<VirtualHost *:8081 >
ServerName git.miweb.com
ServerAdmin webmaster@localhost

DocumentRoot "/home/git.miweb.com/docs"
DirectoryIndex index.html
ErrorLog /home/git.miweb.com/logs/error_log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /home/git.miweb.com/logs/access_log combined
ServerSignature on

<Directory>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Alias /cgi-bin /usr/lib/cgi-bin
<Directory /usr/lib/cgi-bin >
Options ExecCGI FollowSymLinks
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
</Directory>
</VirtualHost>


Esta configuracion incluye sus propios logs, configura la carpeta para accesar a imagenes,css, js desde raiz con el DocumentRoot y configura cgi-bin para ejecucion de cgis con perl. Si se fijan tambien configuramos DirectoryIndex como index.html, este es un archivo que contiene lo siguiente:


<html>
<head>
<meta equiv="Refresh" content="0; URL=/cgi-bin/">
</head>
<body><h1>Direccionando a gitweb</h1></body></html>


Y esto se comporta asi: cuando accesamos http://git.miweb.com:8081 abrira index.html el cual direccionara a http://git.miweb.com:8081/cgi-bin/ que a su vez direccionara a gitweb.cgi que si se fijan esta definido como DirectoryIndex de cgi-bin y Voilá!! Tenemos funcionando gitweb en nuestro VirtualHost.

Interface web para git

Hace poco instale git en el server ubuntu que tengo en el trabajo, entonces me dispuse a buscar algunas herramientas gráficas via web, encontre varios ejemplos en varias páginas los cuales listare ahora, sin embargo la herramienta que instale fue viewGit que fue la que se dejó instalar mas rapidamente.

  • En primera una liga a varias interfaces para git, no tan solo web sino de escritorio etc, además de que es parte de una muy interesante guía de uso para git: http://git.or.cz/gitwiki/InterfacesFrontendsAndTools#gitweb.28distributedwithGit.29
  • GitWeb. Hasta donde entendí es la interface default de git, aqui podemos ver una guía util de instalación para un servidor debian o equivalente: http://www.tovar.net.ve/nelo/Tecnologia/Linux/gitpublico/
    yo no lo instale porque mi version de ubuntu es tan vieja que los repositorios no la contienen, todavia estoy buscando la forma de instalarlo pero no he podido bajar el código, aqui una liga al fork xmms de gitweb para que vean un ejemplo de como funciona esta interface: http://git.xmms.se/
  • git-php. Primero baje la version de esta página: http://code.google.com/p/git-php/ Pero hasta donde tengo entendido el autor siguio con el desarrollo por aca: http://people.proekspert.ee/peeter/git/git.php?p=git-php.git
    tuve problemas para instalarlo en primera porque me pedia instalar enscript el cual por razones del misterio no se dejó [Los siguientes paquetes tienen dependencias incumplidas:
    enscript: Depende: libpaper1 pero no es instalable
    ] entonces en lugar de ponerme a investigar y perder mas tiempo decidí brincarme a buscar otra interface...
  • cgit. Una muy interesante interface que podemos visualizar y descargar desde aqui: http://hjemli.net/git/ El problema que tuve con esta interface en primero es que me pedía la version 1.5.3 de git y en mi maquina tengo la 1.5.2, pense que tal vez por eso no se ejecutaba correctamente el make, entonces baje una versión mas antigua que soportara la 1.5.2... sin embargo siguió causando problemas extraños (ahora me decia que no tenia permisos para acceder aun siendo root... ) tambien queda pendiente por falta de tiempo...me gusta mucho su interface y los datos que muestra, aparte de hacerlo rapidamente.
  • viewgit. http://viewgit.sourceforge.net/ La interface ganadora!! jaja, fue tan sencillo instalarlo, tan solo con copiar la descarga a una carpeta donde apache interprete php, configurando el archivo /docs/localconfig.php [no olviden leer el docs/README ] direccionandolo a nuestro proyecto y listo.
Me gustaria que se pudiera limitar con login el acceso a las interfaces pero a ver si me da tiempo de ver que monerias tienen, lo mas problable es que me quede con viewgit porque mi jefe se pone de genio si me tardo mas de un día "perdiendo el tiempo en otras cosas" ...

To Be Continued...

¿Estoy mal o windows vista apesta?

Estaba haciendo una simple busqueda como siempre, solo queria los archivos de una carpeta que contuvieran el siguiente texto "tt" y pues como siempre windows vista hace un cochinero y no me muestra nada de lo que quiero por mas indexado que esté y la madre y media, entonces digo, bueno, a lo mejor no se usar esta madre... pero no, no hay forma en la que windows vista me pueda mostrar los archivos con el contenido de dos pinches letras repetidas ¿saben que tuve que hacer? copiar la carpeta donde estaba buscando a un servidor linux y buscar el texto ejecutando el comando grep ¿saben cuanto me tarde? 2 minutos... y vista todavia es el día que no me muestra el archivo.

Aun no puedo creer que existan páginas enteras defendiendo a vista... puff, estoy molesto y no me cansaré de decir que odio windows vista:

  1. Esta todo tan organizado que no encuentras nada (nunca te acostumbras a su "revolucionario" sistema)
  2. Se pone lento en procesos estupidos como mostrar una ventana (a lo mejor es la ram de mi maquina (2GB) pero creo que exageraron con tanto gráfico pesado y vistoso la pobre laptop puja al abrir una ventana de explorer jaja, al contrario de por ejemplo beryl-compiz que lo hace con ligereza)
  3. Me pregunto porque tengo dos carpetas que se llaman "Archivos de Programa" con distinto contenido pero en el mismo directorio raiz!!
  4. Siguen quejas ...

Instalando Netbeans 6.0.1

Ah como me hizo sufrir con este problema el instalador de netbeans 6.0.1, esto aparecia en el log de errores:

[2008-03-14 10:50:20.125]: deleting file: C:\Program Files\NetBeans 6.0.1\java1\ant\lib\ant.jar.pack.gz
[2008-03-14 10:50:20.125]: extracting C:\Program Files\NetBeans 6.0.1\java1\ant\etc\changelog.xsl
[2008-03-14 10:50:20.140]: extracting C:\Program Files\NetBeans 6.0.1\java1\config\ModuleAutoDeps
[2008-03-14 10:50:20.140]: extracting C:\Program Files\NetBeans 6.0.1\java1\sources\org\netbeans
[2008-03-14 10:50:20.140]: extracting C:\Program Files\NetBeans 6.0.1\java1\modules\ext\jaxws21
[2008-03-14 10:50:20.140]: extracting C:\Program Files\NetBeans 6.0.1\java1\modules\ext\toplink
[2008-03-14 10:50:20.140]: extracting C:\Program Files\NetBeans 6.0.1\java1\modules\docs\locale
[2008-03-14 10:50:20.140]: extracting C:\Program Files\NetBeans 6.0.1\java1\ant\etc\jdepend.xsl
[2008-03-14 10:50:20.156]: extracting C:\Program Files\NetBeans 6.0.1\java1\ant\etc\tagdiff.xsl
[2008-03-14 10:50:20.171]: extracting C:\Program Files\NetBeans 6.0.1\java1\ant\bin\antenv.cmd
[2008-03-14 10:50:20.171]: org.netbeans.installer.utils.exceptions.InstallationException: Cannot extract installation data for Java SE
[2008-03-14 10:50:20.171]: at org.netbeans.installer.product.components.Product.install(Product.java:285)
[2008-03-14 10:50:20.171]: at org.netbeans.installer.wizard.components.actions.InstallAction.execute(InstallAction.java:151)
[2008-03-14 10:50:20.171]: at org.netbeans.installer.wizard.components.WizardAction$1.run(WizardAction.java:120)
[2008-03-14 10:50:20.171]: Caused by: java.io.FileNotFoundException: C:\Program Files\NetBeans 6.0.1\java1\ant\bin\antenv.cmd (Access is denied)
[2008-03-14 10:50:20.171]: at java.io.FileOutputStream.open(Native Method)
[2008-03-14 10:50:20.171]: at java.io.FileOutputStream.(Unknown Source)
[2008-03-14 10:50:20.171]: at java.io.FileOutputStream.(Unknown Source)
[2008-03-14 10:50:20.171]: at org.netbeans.installer.utils.FileUtils.extractByList(FileUtils.java:1607)
[2008-03-14 10:50:20.171]: at org.netbeans.installer.utils.FileUtils.extractAll(FileUtils.java:1541)
[2008-03-14 10:50:20.171]: at org.netbeans.installer.utils.FileUtils.unjar(FileUtils.java:936)
[2008-03-14 10:50:20.171]: at org.netbeans.installer.product.components.Product.install(Product.java:275)
[2008-03-14 10:50:20.171]: ... 2 more

Al final solo me instalaba el IDE básico y yo necesitaba las herramientas de Web&Java EE para desarrollar orientado a web. Despues de cambiar permisos y buscar archivos inexistentes en otras maquinas encontre la solucion a mi problema: Mejor bajen la version "all in one" desde la página de sun y se quitan de broncas, lo bajas, lo descomprimes en algun directorio y ejecutando netbeans.exe en la carpeta bin ¿Me pregunto para que tanto pedo con la instalación si con un copy&paste es mas efectivo?

Segundo paso: moviendo proyecto de una maquina a otra.

Unicamente hay que copiar la carpeta de tu proyecto y pegarla en alguna carpeta. Buscar con un open project y al abrirse seguramente apareceran algunos warnings pues algunas librerias de netbeans no estarán en la misma ruta en una maquina que en otra, asi que procedemos a dar click derecho en el proyecto y seleccionamos "Resolve Reference Problems..." donde podremos cambiar las rutas hacia las librerias que necesitamos, en mi caso copie un proyecto que comence a desarrollar en linux y ahora esta en windows funcionando perfectamente... y a programar.

RAZONES POR LAS CUALES ES MEJOR EL SQL MANAGENENT STUDIO DE SQL SERVER 2005(SMSSQL) QUE EL ADMINISTRADOR CORPORATIVO DE SQL 2000(ACSQL)

PROS
1. Te puedes conectar a servidores sql 2005 con SMSSQL y en ACSQL no
2. La edición de procedimientos almacenados es tipo texto por lo que se facilita la substitución de variables en todo el procedimiento sin necesidad de copiar y pegar y otros malabares
3. El texto del editor es monoespacio. Nota: no se si el texto sea configurable tanto en SMSSQL como en ACSQL pero SMSSQL lo trae por default por lo tanto le doy el triunfo.
4. Aparte de que en general la programación T-SQL para SQL Server 2005 es mucho mejor que la de su antecesor sobre todo en el manejo de XML y paginación y como en ACSQL no puedes ni accesar pues ya perdió mas puntos.

CONTRAS
1. Los wizards de SMSSQL me han fallado generalmente y los de ACSQL no, como por ejemplo para una simple importación de datos desde excel o incluso de una tabla a otra.
2. Es algo pesado y necesita obviamente una buena cantidad de memoria para trabajar agusto.

SQL SERVER EN LINUX
En mi busqueda existencial por migrar mi trabajo a linux he buscado algún administrador de bases de datos desarrolado en java (por eso de la portabilidad) y son útiles hasta que llegas al punto de tener que trabajar con procedimientos almacenados, ni si quiera con el querido druid ha podido decodificarlos -puede ser problema del jdbc no de druid exactamente- y he llegado al grado de pensar seriamente en desarrollar mi propio IDE linuxero para sql server, sin embargo esto seria dar cierta ayuda microsoft, aunque tambien el objetivo es convencer a la gente -sobre todo de escritorios aqui cercanos- que el software libre es tan útil como el propietario, asi que por ese lado valdria la pena. En fin, rindiendome ante la supuesta portabilidad javosa me encontre una pequeña herramienta llamada sqsh que trabaja bajo la amada consola y con freetds. No me he metido mucho, pero si me he conectado ejecutado algunos selects y además de que si me trae el contenido de los stored procedures decodificado, acabo de imprimir el manual para leerlo y recomiendo hagais lo mismo. A veces lo mas sencillo es lo más útil.

Algunas páginillas:

http://infolab.stanford.edu/~ullman/fcdb/aut96/sy-intro.html <--introduccion a sqsh


http://misdocumentos.net/wiki/linux/odbc <--Acceso a sql desde ubuntu... buenisima pero lentisima

Framework Catalyst con mod_perl2 y apache2

Parte1. INSTALACIÓN

Lamento decepcionaros pero no incluiré por lo pronto esta parte ya que el encargado de instalarlo fue el administrador del servidor donde trabajo, pero pronto lo haré en mi computadora y prometo documentarlo aquí.

Parte 2. CREANDO LA APLICACION

Ejecutamos en la carpeta deseada /www/www.miserver.com/ el script catalyst.pl de la siguente manera:
$catalyst.pl MiAplicacion

lo cual nos generará todo el árbol de directorios y archivos necesarios para manejar nuestra aplicación. Algo similar a esto:

$ ls -R
.:
Changes Makefile.PL README evaluaciones.yml lib root script t

./lib:
Evaluaciones Evaluaciones.pm

./lib/Evaluaciones:
Controller Model View

./lib/Evaluaciones/Controller:
Root.pm

./lib/Evaluaciones/Model:

./lib/Evaluaciones/View:

./root:
favicon.ico static

./root/static:
images

./root/static/images:
btn_120x50_built.png btn_120x50_powered_shadow.png btn_88x31_powered.png
btn_120x50_built_shadow.png btn_88x31_built.png btn_88x31_powered_shadow.png
btn_120x50_powered.png btn_88x31_built_shadow.png catalyst_logo.png

./script:
evaluaciones_cgi.pl evaluaciones_create.pl evaluaciones_fastcgi.pl evaluaciones_server.pl evaluaciones_test.pl

./t:
01app.t 02pod.t 03podcoverage.t


Parte3. EDITANDO LOS ARCHIVOS DE CONFIGURACIÓN DE APACHE2.
Esto es para que apache conozca nuestra aplicación y podamos accesar via web.

Primero configuramos el servidor de la manera deseada y simplemente agregamos las siguietes lineas a nuestro archivo .conf que generalmente se encuentra en /etc/apache2/vhosts.d/:

PerlModule MiAplicacion
Alias /MiAplicacion /www/beta.dsiweb.uach.mx/MiAplicacion

SetHandler modperl
PerlResponseHandler MiAplicacion
PerlOptions +ParseHeaders +GlobalRequest
AuthName Manejador
AuthType Basic
PerlAuthenHandler Manejador::Autentica
ErrorDocument 403 /login.html
require valid-user

despues debemos agregar las librerias a nuestro archivo startup de mod_perl, el mio se encuentra en /etc/apache2/modules.d/

use lib(/www/www.miserver.com/MiAplicacion/lib);

reiniciamos el servidor web con un :
$sudo/etc/init.d/apache2 restart

con esto podremos acceder www.miserver.com/MiAplicacion y veremos la página de bienvenida de catalyst.

Parte 4: programando con catalyst.
Proximamente.

Pseudemys y ¿Ajax?












Aparece Imagen, Desaparece Imagen !!! jaja

Créditos:
imagen "download" patrocinada por Ajax Load vía el blog de Skorpyo, almacenamiento por ImageShack código javaScript patrocinado por Pseudemys||Pseudocode:


<table bgcolor="#ffffff" border="0">
<tr><td align="center">
<div id="miCosaEstaDizkeAjax" name="miCosaEstaDizkeAjax">
<img src="http://img123.imageshack.us/img123/7169/ajaxloadercx1.gif" />
</div><form><input onclick="var miDiv=document.getElementById('miCosaEstaDizkeAjax'); if(miDiv.style.visibility=='hidden'){miDiv.style.visibility='visible'; }else{miDiv.style.visibility='hidden'; }" value="Click" type="button">
</form>
</td></tr></table>


Intente colocar una etiqueta <script> pero esta cosa no se dejo, asi que tuve que incluir todo el código en el evento OnClick del botón. Se que pudo quedar mejor indentado, pero de por si me costó trabajo desplegar el código para que no lo interpretara el blog, es pedir demasiado.

método? copiar el código html que se desee desplegar a cualquier editor de texto y hacer las sustituciones correspondientes, en este caso se utilizo el poderosísimo vi de GNU/linux :)

Xubuntu y Tomcat

Despues de un rato de sufrimiento, logre hacer jalar tomcat en el server. Ah, el server es un HP Net-server E50 con un fabuloso Pentium a 333mhz, 320MB de Ram y un disco duro de 4GB, por lo cual decidí ponerle xubuntu o en si se ponia muy lento el asunto poner la desaparecida distro ubuntu-lite que puedes rescatar de la red bittorrent.

De lo primero que instale fue la maquina virtual de java. En su ultima version 1.6 mediante apt-get.

Despues hay que configurar con un sudo update-alternatives --config X
donde X es: jar, javac, javadoc, javah, javap y javaws.
Direccionando cada uno a la carpeta de instalación de java de sun.

Despues instale el tomcat, pero causaba error al final de la instalacion mediante apt (es decir al intentar arrancar el servicio pero ya estaba instalado), asi que despues de buscar y recordar un poco, simplemente edite el archivo de configuracion /etc/default/tomcat5.5 y descomentando las lineas con los siguientes parámetros:
TOMCAT USER
JAVA_HOME
CATALINA_BASE
JSP_COMPILER

JAVA_HOME es direccionado a la maquina virtual que acabamos de intalar, es decir la localizada en /usr/lib/jvm/miversion-sun-java

Esto lo había hecho si mal no recuerdo en una instalación de tomcat en windows y funcionó, pero aqui no ocurrio asi, por lo que tuve que recurrir a la siguiente página para levantar el servicio de tomcat de forma manual: http://mundogeek.net/archivos/2006/04/03/apache-y-tomcat-en-linux/

[Nota, además de la variable CATALINA_HOME tuve que crear la de JAVA_HOME]
sin embargo me rechazaba la conexion al momento de ejecutar el startup.sh asi que recurri desinstalar tomcat con un apt-get remove porque supuse que podrían estar estorbandose aunque se suponía que no estaba corriendo el servicio, sin embargo asi era, el tomcat instalado con apt nunca pude hacerlo jalar y el copiado a mano en una carpeta funcionar con solo quitarle de la vista al otro. To be continued...

Tablas temporales en el Transa-SQL



Podemos usar dos trucos para programar en procedimientos almacenados en T-SQL:

1. Usar tablas temporales en disco:

Estas se crean como cualquier tabla:

'Create table #MiTabla(valor1 tipoDeDato1, ...)'

Asi que la unica diferencia con crear una tabla realmente es el signo # y podemos hacer inserciones y todo lo que querramos. Se supone que esta se elimina al terminar el procedimiento o la sesión del usuario, sin embargo para fines de efectividad se recomienda hacerle un 'delete table #MiTabla' en cuanto esta ya no se necesite ya que estas tablas se crean en disco duro. Lo que todavia no he comprobado es si se crea una tabla temporal por sesión o todos los usuarios acceden a la misma tabla, lo cual nos podria traer algunos problemas de concurrencia...

2. Usar tablas temporales en memoria:

Estas estan un poco mejor y quiero suponer que no tendremos problemas de concurrencia con ellas ya que son declaradas como una variable:

'declare @MiTabla TABLE(valor1 tipoDeDato1, ...)'

para despues poder utilizarse como cualquier tabla comun y corriente.

Asi que el top-ten de uso en efectividad es el siguiente:

1. Tablas.
2. Tablas temporales en memoria.
3. Tablas temporales en disco.
4. Cursores.

Curiosamente ocupa menos procesamiento accesar el disco que declarar un cursor en memoria, los cursores pueden ser utiles en registros no mayores a 300, para el resto se recomienda el uso de tablas temporales, claro que todo depende de los requerimientos de tu sistema.

Referencias: http://sql.manivesa.com/Tutoriales+SQL/SQL+Server/550.aspx

SQL

1. Copiar una tabla. agregado el 17-05-2007:

select tabla1.* into tabla2 from tabla1 where 1=2

Lo que hace es copiar la toda la tabla uno en una tabla2 creando la tabla 2 y la comparación falsa 1=2 es que la copia vacía, solo su estructura, digamos que es como un Save As. Ahora, si una vez que la creamos nos arrepentimos de nuestros pecados y queremos meter datos en la tabla 2 tenemos que hacer algo similar al siguiente punto.

2. Insertar de una tabla a otra. 18-05-2007

insert into tabla2 select * from tabla1 where 1=1

Esto nos copiara todo el contenido, claro que podemos definir el filtro como nosotros queramos.

3. Vaciar una tabla

delete tabla

Hay que tener cuidado con esta aparentemente inocente instrucción, puede causar daños irreparables si no se tiene un respaldo de los datos.

Receta de Cocina Postgresql.

Para esta receta utilizaremos un ubuntu feisty montado en una dell inspiron E1505:

1. Dadas estas caracteristicas bajaremos nuestro gestor de bases de datos postgresql mediante el maravilloso apt-get (o si prefieren usar Synaptics allá ustedes):
$sudo apt-get install postgresql-8.2

2. Una vez instalado nos disponemos a entrar con nuestro usuario postgres a nuestra sesion postgres:
$sudo su postgresql
Deberemos ver en nuestro shell como algo similar a esto:
postgres@micompu: /$

3. Ahora, podemos intentar entrar al administrador psql:
postgres@micompu: /$ psql

Esto nos dará acceso a todas las bases de datos como administrador, como ven, esto es poco seguro, además de que no podemos hacer muchas cosas, por eso vamos a colocar la contraseña para administrador y vamos a realizar un pequeño cambio a la configuración:

3a. Para cambiar la contraseña, ya estando dentro del editor psql escribimos las siguientes lineas

=# ALTER USER postgres
=# WITH PASSWORD '12345';

Si todo salio bien nos salimos con el comando \q
=#\q

4a. Luego un exit para volver a nuestro usuario. Entraremos a nuestro archivo de configuracion de conexiónes pg_hba.conf de nuestro postgresql.
$sudo vi /etc/postgresql/8.2/main/hba.conf

y cambiamos la linea
local all all ident sameuser
por
local all all password

y hasta donde tengo entendido esto permitira accesos desde cualquier lugar por medio de un password, de otra manera nadie podrá accesar aunque le asignes un password.

Ahora reiniciaremos nuestro servidor de bases de datos:
$sudo /etc/init.d/postgresql-8.2 restart

Ahora entraremos tal como lo hicimos hasta el paso 3.

4. Una vez en en psql, nos dispongremos a crear un usuario, de hecho hay dos maneras de hacerlo:

4a.la primera mediante el comando createuser pero no en psql sino como usuario general de postgres, asi que tendriamos que salir de psql para hacerlo. Te preguntara algunas cosas como si el usuario creado va a ser

4b. la segunda es ejecutando una sentencia SQL dentro de psql, la cual sería similar a esta:
=#CREATE USER nombre_del_usuario WITH PASSWORD 'supass';

5. Ahora crearemos una base de datos que pertenezca a ese Usuario
=#CREATE DATABASE mi_db WITH OWNER = "nombre_del_usuario";


6. Ahora podemos entrar desde usuario postgres
postgres@micompu: /$ psql -d mi_db -U nombre_de_usuario
y veremos algo similar a esto:
mi_db=>

Ahora podremos meter las sentencias SQL para crear tablas, etc, etc... pero esto no es lo importante, ya que podemos acceder incluso como administrador psql y realizar esto, lo que logramos aqui es utilizar el acceso a un usuario especial al cual podemos asignarle ciertos privilegios por seguridad.

7. Como plus, instalaremos mediante apt-get admin3.
$sudo apt-get install admin3

el cual se agregará a nuestro menú de aplicaciones y herramientas del sistema. Para poder acceder en conexión pondremos los siguientes parámetros(los cuales configuramos en los pasos anteriores):

Address: localhost
MaintenanceDB: postgres
Username: postgres
Port: 5432
SSL: --- lo dejamos en blanco ---
Password: 12345

Algunos otros comandos utiles como psql:
\? - ver ayuda
\q - salir
\dt - ver tus tablas(siempre y cuando hayas entrado como en el paso 6, incluso sin User)

... los que vayan saliendo

Programando en transac-SQL, Perl, JavaScript y XML mejor conocido como la historia de MSQLServer, El Camello, DOM y el nuevo Dios XML



Estaba editando un sencillito procedimiento almacenado para SQLserver en la chamba con la peculiaridad de que la consulta era en un servidor remoto cuando al intentar guardarlo sale una ventana con el siguiente error:

Error 7405: Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query.

Despues de navegar un rato encontre la solucion en algun frio y lejano foro gringo y resulta que colocando las siguientes lineas antes del código del procedimiento deja de salir el error:

SET ANSI_NULLS ON
GO
SET ANSI_WARNINGS ON
GO

CREATE PROCEDURE sp_miprocedimientoalmacenado
@Opcion smallint
AS
SET XACT_ABORT ON

/* consultamos el la tabla en un server remoto al nuestro */
If @Opcion=1
Begin
Begin Tran
Select * from nombredelSERVER.nombredelaDB.dbo.tabla
Commit Tran
End
GO

Otra cosa es que esa dos lineas no apareceran la siguiente vez que abras el procedimiento, como que se las come el servidor, jaja, y claro que despues de comerselas activa esas opciones que como se puede suponer tiene que ver con la configuracion de caracteres o algo asi, ya no me puse a invertigar mas a fondo, pero aqui queda registrado a ver si le es util a alguien ya que tarde algo de tiempo en encontrarlo ... en español... nota mental: deja de buscar soluciones de tecnología en tu idioma, aprende inglés, japonés, chino y alemán... en ese orden.