Sigueme en Twitter

Archivo de artículos en la categoría "Tips"

Ir al inicio

Variables Dinámicas en PHP

18/05/2007

Notita cultural.

El operador $$ en PHP se utiliza para las variables dinámicas, es decir, lo utilizas cuando quieres que el valor de una variable, se convierta en otra variable por si mismo, un tanto confuso, pero resulta muy util.

Un código dice mas que mil palabras.

1
2
3
4
5
6
7
8
9
10
11
12
$dinamica  = 'variable';
$$dinamica = 'Algun valor tonto';
echo $variable;
//Algun valor tonto
 
$variable = 'Otro valor tonto';
echo $variable;
//Otro valor tonto
 
$$dinamica = 'Amigas';
echo "Las llaves son tus ${$dinamica}";
//Las llaves son tus Amigas
3 Comentarios

3 Características indispensables de Vim

13/05/2007

Suelo ser de aquellos que prueban cada nuevo editor que va saliendo.. de esos que cambian de gustos cada 3 dias, pero por alguna razón siempre regreso arrastrandome a usar Vim.

Estas son algunas cosas que considero indispensables para programar:

1. Tabs!

Algo de lo que renegaba mucho antes de que saliera la versión 7, es que Vim no tuviera soporte para tabs, me era muy molesto tener que abrir varias instancias o usar screen, pero todo eso se mejoro con la salida de Vim 7, los comandos básicos para manejar tabs son:

:tabfind archivo - abre archivo en un nuevo tab
:tabnext - pasa al siguiente
:tabprevious - pasa al anterior
:tabnew - abre un nuevo tab
:tabmove n - mover el tab a la posición n

Obviamente es tedioso escribirlos completos, aunque el modo de comandos tenga autocompletado, por eso lo mejor es hacer un mapping de ellos, con combinaciones de teclas que recuerdes facilmente.

Mi mapping va de esta manera (en el archivo ~/.vimrc).

map ,t :tabnew
map ,1 :tabprevious
map ,2 :tabnext
map ,f :tabfind
map ,m :tabmove
map ,n :tabnew

Por lo tanto solo escribo ,t para un nuevo tab o ,f para buscar un archivo y asi sucesivamente.

Tabs en Vim

2. Autocompletar

Este es un indispensable en cualquier editor, otra de las grandes cosas por las que me quejaba antes de Vim 7 es que no tenia un autocompletado con una lista seleccionable y simplemente no me parecia funcional (a pesar de que el moy me alegara lo contrario).

De igual manera puedes incluir esto en tu .vimrc y listo

function! Mosh_Tab_Or_Complete()
if col(’.')>1 && strpart( getline(’.'), col(’.')-2, 3 ) =~ ‘^\w’
return “\
else
return “\
endfunction

:inoremap =Mosh_Tab_Or_Complete()
:set dictionary=”/usr/dict/words”

Tu autocompletar quedara asi:

Autocompletar en Vim

3. Sesiones

Soy uno de esos que termina frecuentemente con 5 o 6 archivos abiertos al final del dia y me cuesta valiosos minutos llegar al dia siguiente y acordarme en lo que estaba trabajando exactamente, por eso para mi las sesiones son indispensables, en Vim 7 puedes guardar sesiones para lo que gustes y donde gustes.

:mksession! archivo - te guarda tu estado actual en archivo
:source archivo - te restaura el estado que este guardado en archivo

Nuevamente, son comandos largos y somos webones, asi que hago un mapping sencillo:

map ,s :mksession! ~/.vim/.session
map ,r :source ~/.vim/.session

Con ,s grabo el estado actual, que archivos tengo abiertos y con ,r recargo el estado de la ultima sesión que guarde.

Mas sencillo no se puede!

6 Comentarios

Tunneling por SSH

27/04/2007

Una cosa molesta de estar en lugares públicos es que suelen tener la mayoria de puertos que se utilizan para descargas p2p bloqueados, una solución rápida y sencilla es hacer un tunel con SSH a algún servidor que tengamos disponible (quien no tiene aunque sea una cuenta pequeña en estos dias?) y configurar nuestros clientes a que utilizen esos puertos.

Lo que hago yo siempre es iniciar una sesión de screen y luego hacer esto:

ssh -2 -4 -L 7663:localhost:7663 -A -D 1080 usuario@example.com

Es lo que uso mas comunmente y que casi no se me desconecta, pero en ciertas ocasiones varia un poco, como por ejemplo, cambiar -L por -R, conexión remota por conexión local. Para mi fue importante dejar -4 y -2 (versión de IP y SSH) porque de otra forma se desconecta aleatoriamente. El 7663 (usa el que gustes) es el puerto con el que debes de configurar tus clientes como Azureus para conectarse localmente, el 1080 es el puerto en el que el servidor externo va a hacer forwarding.

Prerrequisitos de esta técnica en /etc/ssh/sshd_config de tu server, la segunda es solo si estas teniendo problemas:

  • GatewayPorts yes
  • AllowTcpForwarding yes

Debes de dejar abierta la sesión de SSH siempre que quieras que este abierto el tunel, como usamos screen no hay problema, cierras la consola y sigue ejecutandose.

Si tienes dudas leer el manual de SSH nunca esta de mas.

2 Comentarios

Screenshots en Linux

25/10/2006

Hoy mas temprano, deje ver lo novato y pregunte en los foros de Ubuntu acerca de una aplicación para tomar screenshots de areas determinadas de la pantalla, algo asi como lo hace MacOS X, para los ociosos como yo, que gustan de no tener que cortar las imágenes y que estan sean guardadas automáticamente.

Entre varias recomendaciones, me dieron a conocer el comando import de ImageMagick, que viene instalado por default en Ubuntu Dapper, simplemente ejecutas “import nombredelaimagen.png”, seleccionas lo que quieres capturar y listo, yo lo hago con alt+F2 pero los mas quisquillozos pueden hacer un shortcut con gnome para evitar estar escribiendo su carpeta deseada o formato cada ves.

import -help para mucha mas (y relevante no como este post) información.

Import

== Actualización ==

duh, no sabia que scrot tambien tenia opción para tomar una area determinada solamente (scrot -s), bien, ahora tengo 2 opciones

Sin Comentarios

Feedburner y Lighttpd

28/08/2006

Si tienes un blog seguramente haz oido hablar de Feedburner, un servicio que sirve las noticias por ti dejandote estadisticas de tus lectores de paso, el único problema es que no queremos obligar a nuestros viejos lectores a cambiar la dirección en su cliente, sino que siempre es mejor hacer el cambio transparente sin que el usuario se de cuenta, para esto en Apache existe un plugin que realizado por Steve Smith pero lamentablemente no es compatible con nuestro servidor web favorito Lighttpd.

Sin embargo la solución es muy sencilla, podemos escribir la siguiente regla de redirección y conseguir que los feeds RSS y Atom sean dirigidos a nuestro nuevo feed en feedburner, solo asegurate de tener el mod_redirect activado

1
2
3
4
5
$HTTP["useragent"] !~ "FeedBurner" {
  url.redirect = (
    "/^feed*" => "http://feeds.feedburner.com/pablasso"
  )
}

Con la primera condición nos aseguramos que esto no sea aplicable cuando el mismo Feedburner este leyendo nuestro sitio, solo reinicia Lighttpd y listo.

1 Comentario

Monokai para TextMate

25/08/2006

He estado usando este theme para TextMate, bastante bueno para cuando pasas largas horas frente al monitor, no cansa la vista para nada. Estan medio mayatones algunos colores, pero se pueden cambiar.

Monokai

Tema Monokai

Sin Comentarios

URL amigables con Lighttpd y Wordpress

25/06/2006

Si usas el excelente lighttpd ya la vez quieres usar url’s amigables con wordpress lo unico que tienes que hacer es poner esta opción en el lighttpd.conf

server.error-handler-404 = “/index.php?error=404″

Y solo adapta la estructura de tu permalink sin el index.php, por ejemplo, el mio esta asi:

/%year%/%monthnum%/%day%/%postname%

Si estas usando el modulo de virtual server para hospedar varios dominios talvez no quieras que esa opción para 404 sea valida para todos tus dominios, lo que puedes hacer es usar la opcion “host” de esta manera:

1
2
3
$HTTP["host"] =~ "^(www.pablasso.com)$" {
server.error-handler-404 = "/index.php?error=404"
}

Saludos!

== Actualización ==

No me ha gustado este método, no deja de ser una especie de parche, usar el 404 asi es algo sucio y Google no indexa bien estas URL’s, cuando tenga tiempo me voy a poner a reescribir las reglas de Apache, para que sean compatibles con lighttpd y les paso el tip.

== Actualización #2 ==

Ahora revise y ya me agrego google las nuevas url’s, tal parece que el único problema es que visita el sitio no muy seguido que digamos, asi que ya no me importa tanto si estan en 404 o no, seguira en mi ToDo pero con muy baja prioridad

Sin Comentarios