Apperture Web Framework

29 02 2008

Pido disculpas por el retraso de entregas de nuevo material para el blog, pero he estado bastante atareado con la presentación de mi nuevo proyecto. A partir del día 25 de febrero el proyecto Apperture y su sitio ya están publicos para que todos aquellos entusiastas de Internet puedan unirse al equipo y que creemos grandes herramientas en beneficio de todos.

Apperture es un proyecto de framework para desarrollo de aplicaciones Web, un conjunto de scripts y subaplicaciones para hacernos la vida más sencilla a nosotros los programadores y expertos de Internet.

Asi que espero que puedan participar con nosotros en este nuevo proyecto que espera con ansias que más gente pueda incluirse dentro del grupo. La página del proyecto es: http://www.apperture.org





Smultron

4 02 2008

Pues ahora ha tocado el turno de comprobar que tan bueno es el editor Smultron, la alternativa libre y gratuita a los editores para Mac OS. Realmente, Smultron es por mucho una alternativa muy buena. Veamos algunos aspectos dentro de la evaluación:

Interfaz Gráfica: no me cansaré de insistir en que ese punto es muy valorado por mi parte. Smultron es feo, tremendamente feo. El desarrollador del programa fue el encargado de desarrollar la interfaz. Realmente es la viva imágen de lo que muchos comentan: “los programadores no son diseñadores”. Pero bueno, afortunadamente existe un pack de íconos que le dan vida al programa y cambia la apariencia de los iconos. Además, y como yo lo hice, podemos editar la aplicación y cambiar nosotros mismos los íconos, cuidando el formato. Y es las aplicaciones en Mac OS son mas bien archivos contenedores.

Smultron

Sistema: he considerado que debo describir este aspecto independientemente. El punto flaco de Smultron es el consumo de recursos. La aplicación no es pesada, pero si tenemos 10 o más archivos abiertos empezaremos a ver en el monitor de nuestro sistema que puede llegar a consumir hasta 256 MB de RAM. Creo que ni iTunes consume tanto.

Capacidad de Trabajo: el consumo de memoria lo compensa con un par de cosas importantes. Por ejemplo, tiene la mayor lista de reconocimiento de sintáxis que he visto en los programas que he evaluado, incluyendo ASP/ASP.Net, ColdFusion e incluso plantillas de Smarty. Otra herramienta muy importante que he visto es Split Window, que permite trabajar con dos archivos al mismo tiempo. También cuenta con un administrador de Handled Commands y Snippets bastante básicas. También existe la función de Live Search al más puro estilo de Spotlight.

Ahora bien, no tiene capacidades de Smart-tags, pero esperaremos que las gane en futuras versiones. Por lo demás lo recomiendo para su uso como editor alternativo en pequeños trabajos o para profesionales con grandes capacidades, por que no tiene un function-tracker o algo por el estilo.

Artílos Relacionados





Utilizando la API de Twitter con PHP

24 01 2008

Twitter se ha convertido de una novedad y los desarrolladores estamos bastante interesados en proveer en nuestros proyectos, soporte a herramientas de actualidad, para salir de la monotonía del desarrollo web. Navegando en busca de material para la redacción de un artículo relacionado, me toque con una excelente clase para hacernos la vida más sencilla a la hora de trabajar con la API de Twitter. Y es que hacerlo vía CURL es un tanto engorroso. Al final, la clase en cuestión hace el mismo uso de CURL, solo que con métodos más sencillos: viva la abstracción…!

Obteniendo la clase: la clase está disponible para su descarga desde el grupo de desarrollo en Google Code: Twitter Development Talks API Class. La clase está desarrollada en lenguaje PHP.

Utilizando el objeto Twitter: dentro del mismo archivo se encuentra el ejemplo. Basicamente los únicos datos requeridos son los datos del usuario.

$twitter = new Twitter(“username”, “password”);
$public_timeline_xml = $twitter->getPublicTimeline(“xml”);

El listado de las funciones es:

getPublicTimeline($format [, $since_id])
getFriendsTimeline($format [, $id [, $since ]])
getUserTimeline($format [, $id [, $count [, $since ]]])
showStatus($format, $id)
updateStatus($status)
destroyStatus($format, $id)
getReplies($format [, $page ])
getFriends($format [, $id ])
getFollowers($format [, $lite ])
getFeatured($format)
showUser($format [, $id [, $email ]])
getMessages($format [, $since [, $since_id [, $page ]]])
getSentMessages($format [, $since [, $since_id [, $page ]]])
newMessage($format, $user, $text)
destroyMessage($format, $id)
createFriendship($format, $id)
destroyFriendship($format, $id)
verifyCredentials([$format])
endSession()
getArchive($format [, $page ])
getFavorites($format [, $id [, $page ]])
createFavorite($format, $id)
destroyFavorite($format, $id)
lastStatusCode()
lastAPICall()

En lo personal, la clase me agrada mucho y si la usaré por que veo que realmente funciona muy bien. Lo único que podría proponer al equipo es que el parámetro requerido FORMAT pueda ser una propiedad y no un parámetro obligatorio para casi todas las funciones por que muchos de nosotros utilizaremos un solo tipo de formato; ya sea XML o JSON pero muy pocos, utilizarán ambos.





URL’s amigables con .htaccess

14 01 2008

Una de las características más importantes de htaccess es la posibilidad de permitir crear URL’s amigables para los motores de búsqueda. Una de las características de los lenguajes de scripting para el Web es que permiten automatizar funciones para la publicación de contenido en el sitio. Este procedimiento se hace muchas veces a través del paso de parámetros, generalmente por el método GET. Pues bien, asumiendo que esta introducción ya ha sido bastante comentada en otros artículos veamos los pasos para crear URL’s amigables con htaccess:

Paso 0: lo defino como paso 0 por que es una precondición que podemos tomar en cuenta a la hora de trabajar con la manipulación de URL’s. En este paso, lo que se propone es establecer que las condiciones de reestructuración afectarán solo a determinados tipos de archivos.

# Siempre iniciamos con estas intrucciones
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

Para continuar, es importante recordar que para el uso de estas características es fundamental que el servidor este compilado con el módulo MOD_REWRITE.

Paso 1: antes de iniciar la reescritura de URL es necesario que usted sepa utilizar Expresiones Regulares. Las Expresiones Regulares nos ayudan a no tener que escribir cada regla por cada archivo que queremos “reescribir”. Un buen sitio donde aprender a utilizar Expresiones Regulares es: RegularExpressions.info. También, prepararé en el futuro un tutorial sobre Expresiones Regulares.

Pues bien, con estos dos puntos abarcados, podemos iniciar este tutorial de Reescritura de URL’s. En este primer ejemplo se condiciona que toda petición que tenga como dominio ‘domain.com’ entre a las reglas de reescritura. Dentro de la directiva RewriteRule, se indica que toda petición al dominio sea rediccionado a ‘domain2.com’. La partícula [R=301,L] indica literalmente: Redirección Permanente (Status 301), Última Regla para denotar que las que siguen, indican otras condicionantes.

# Sitio movido a otro sitio permanentemente
# domain.com a domain2.com
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(\.)$ http://www.domain2.com/$1 [R=301,L]

El siguiente ejemplo nos muestra una regla mas sencilla. En esta solamente, indicamos que el archivo ‘domain.com/page.htm’ direcciona a ‘domain.com/new_page.htm’. Las RewriteCond FLAGS indican rediccionamiento, que se tome sin Case-sensitive y que esta es la última regla.

RewriteRule ^page$ new_page.htm [R,NC,L]

Podemos crear varias lineas de condiciones, cuando usamos las variables de servidor, como en el primer ejemplo. Generalmente, usaremos la partícula [L] por cada línea para denotar única regla.

Los siguientes dos ejemplos son más complejos y denotan la reescritura de parámetros a estructuras de directorios. En el primer caso seria algo como: cualquier nombre sea el valor del atributo name para ‘categories.php’. El segundo es similar, solamente que incluye una segunda variable. En este se indica que todo aquello que sea para el directorio ‘/articles/’ y que tenga dos niveles será interpretado como ‘titulo’ y ‘pagina’.

# domain.com/category-name-1/ a
# domain.com/categories.php?name=categorie-name-1
RewriteRule ^([A-Za-Z0-9-]+)/?$ categories.php?name=$1 [L]

# domain.com/articles/title/5 a

# domain.com/articles.php?name=title&page=5
RewriteRule ^articles/([A-Za-Z0-9-]+)/([0-9]+)/?$ articles.php?name=$1&page=$2 [L]

Los ejemplos han sido algo básicos pero principalmente se han debido a que no he deseado extender tanto el artículo. Pero como agregado les puedo decir que lo principal sería contar con una copia de: ModRewrite Cheatsheet, disponible desde el sitio de I Love Jack Daniels.

Artículos Relacionados





Coda

10 01 2008

Siguiendo con la evaluación de editores de texto, le toca el turno a una nueva propuesta del mundo Mac: Coda. Pues se preguntaran cual es la manía de evaluar editores de texto para la plataforma Mac OS. Pues la razón es que mi computador en el hogar es un MacBook con Mac OS X Leopard. Por lo cual estoy haciendo las evaluaciones de estos productos, pero no se preocupen que también evaluaré otros editores para Linux y Windows.

Pues bien, me dispuse a evaluar Coda y la verdad aunque sea apresurado yo le pongo de calificación general un 8.5 sobre 10. El editor me ha parecido de lo mejor sin duda y aquí va el por que:

Diseño de la Interfaz: simplemente genial, atractica, sencilla y con un montón de funcionabilidades interesantes. Y también puedo comentar como dato interesante que el nombre denota “movimiento”. La versión que evalué fué Coda 1.1; la demo de 14 días con alguna que otra funcionabilidad no disponible. Sin embargo lo básico que espero en un editor, si que lo tenía. Me a parecido genial que no consuma tantos recursos, aunque lo hace más que TextMate.

Coda

Capacidades del Editor: tiene un manejador de sintáxis bastante bueno. Soporta los tipos de lenguaje más importantes como PHP, Ruby, Java, Python, Perl, XML, HTML, CSS, JavaScript, etc. incluyendo ColdFusion y ASP. Tiene el mejor editor que he visto de editores HTML para Mac, a excepción de Adobe Dreamweaver. Si tiene Smart-tags y autocompletado de las funciones integradas del lenguaje bastante bueno, aunque como muchos editores ligeros no soporta estas características cuando se combinan varios lenguajes en un mismo documento.

El administrador de proyectos es bastante interesante y con un “bonito efecto”. Cuando se crea un proyecto se pueden definir los datos de los archivos en local y en servidor para mantener sincronización con el servidor. Otra parte importante es el editor CSS que trae integrado, que permite trabajar la hoja de estilo de forma manual o mediante un asistente. También destaca la opción de Terminal que embebe el terminal dentro del escritorio en local y vía SSH y una sección de libros de documentació para HTML, CSS, JavaScript y PHP aunque esta opción está solo disponible con conexión a Internet.

Como otros editores, también se aprecia que tenga opciones de Snippets (Clips), un validador de HTML integrado, Share via Bonjour, etc. El buscador es parecido al buscador de Finder en Mac OS X Leopard; simplemente genial y punto muy a favor.

Puntos en contra: realmente bastante pocos aunque por muchos apreciado. El mayor punto flaco resulto ser que no cuenta con opción de Tabs to Spaces, aunque si me gusto mucho que contase con opción para definir los caracteres de Line-ending para Unix, Macintosh y Windows. Tiene la opción de dividir editor para mostrar dos o mas porciones del mismo documento, no asi mostrar diferentes scripts.

Me gustaría que la siguiente versión ganara las capacidades de Komodo Edit o editores avanzados como Eclipse, Zend o el IDE de Visual Studio, por mencionar algunos, que permiten trasado de variables y de clases igual que los smart-tags de funciones del lenguaje. Talvez sea por que el valor de su licencia es de US$ 79.00 que sus características aún no son tan ricas, pero sin duda los chicos de Panic Software han hecho un excelente trabajo y creo que veremos mejoras significativas en futuras versiones.

Artílos Relacionados





.htaccess por defecto

8 01 2008

Los autores originales del curso de .htaccess del que me base para escribir esta serie, también publicarón un ejemplo de como podría ser un archivo .htaccess por defecto para sus proyectos

 

# .htaccess por defecto
# Permitir ejecución de scripts CGI y no presentar indice de dirctorios
Options +ExecCGI -Indexes

# Servir automáticamente los archivos de índice (index.(*) ó
# default.(*))
DirectoryIndex index.php index.html index.htm

# Errores
ErrorDocument 400 /cgi-bin/error.php
ErrorDocument 401 /cgi-bin/error.php
ErrorDocument 403 /cgi-bin/forbidden.cgi
ErrorDocument 404 /404.html
ErrorDocument 405 /cgi-bin/error.php
ErrorDocument 406 /cgi-bin/error.php
ErrorDocument 409 /cgi-bin/error.php
ErrorDocument 413 /cgi-bin/error.php
ErrorDocument 414 /cgi-bin/error.php
ErrorDocument 500 /cgi-bin/error.php
ErrorDocument 501 /cgi-bin/error.php

# Firma del Servidor en Off
ServerSignature Off

# Agregando el MIME-Type de los archivos .FLV, .SWF y .ICO
AddType video/x-flv .flv
AddType application/x-shockwave-flash .swf
AddType image/x-icon .ico

# Configurando por defecto el juego de caracteres y el lenguaje

AddDefaultCharset UTF-8
AddLanguage en-US .html .htm .txt .xml .php

# Colocando TIMEZONE y el correo del administrador

SetEnv TZ America/Indianapolis
SetEnv SERVER_ADMIN webmaster@askapache.com

# PHP como Script CGI
### PHPINI-CGI
# AddHandler php-cgi .php
# Action php-cgi /cgi-bin/php5.cgi

# PHP en FAST-CGI
### FAST-CGI
# AddHandler fastcgi-script .fcg .fcgi .fpl
# AddHandler php5-fastcgi .php
# Action php5-fastcgi /cgi-bin/fastcgi.fcgi

# Cabeceras y control de Caché
#
# Caché para un año (realmente 336 días) para estos tipos de archivo
<FilesMatch "\.(flv|ico|pdf)$">
    Header set Cache-Control "max-age=29030400, public"
</FilesMatch>

# Caché para una semana
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
    Header set Cache-Control "max-age=604800, public"
</FilesMatch>

# Caché para tres horas
<FilesMatch "\.(txt|xml|js|css)$">
    Header set Cache-Control "max-age=10800"
</FilesMatch>

# Caché para un minuto
<FilesMatch "\.(html|htm|php)$">
    Header set Cache-Control "max-age=0, private, no-store, no-cache,
                              must-revalidate"

    # -P3P es un estándar propuesto por la W3C para acceso seguro
    Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"NOI DSP COR NID
                    CUR ADM DEV OUR BUS\""

    Header set imagetoolbar "no"
</FilesMatch>

# URL’s amigables y Redireccionamientos
#
### Redireccionamientos SEO (según el ejemplo)
# Redirect 301 /ssl-ns.html /htaccess/apache-ssl-in-htaccess.html
# Redirect 301 /ht.tml
# Redirect 301 /index.html /
# RedirectMatch 301 /2006/htaccess-forum/(.*) /2006/htaccess/$1
# RedirectMatch 301 /(.*)rfc2616(.*) http://www.w3.org/Protocols/$1
# RedirectMatch 301 /phpmanual(.*) /manual/en/$1

### Activando MOD_REWRITE
RewriteEngine On
RewriteBase /

### MOD_REWRITE para WordPress
# <IfModule mod_rewrite.c>
#     RewriteEngine On
#     RewriteBase /
#     RewriteCond %{REQUEST_FILENAME} !-f
#     RewriteCond %{REQUEST_FILENAME} !-d
#     RewriteRule . /index.php [L]
# </IfModule>

### Requerir el subdominio WWW
# RewriteCond %{HTTP_HOST} !^www\.somewhere\.com$ [NC]
# RewriteRule ^(.*)$ /$1 [R=301,L]

### Para código enciclado
# RewriteCond %{ENV:REDIRECT_STATUS} 200
# RewriteRule ^.*$ – [L]

### Redireccionar el Blog Feed a FeedBurner
# RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator|Recent) [NC]
# RewriteRule ^feed/?.*$ http://feeds.feedburner.com/somewhere [L, R=302]

### Bloquear WGET?
# RewriteCond %{HTTP_USER_AGENT} ^Wget.* [NC]
# RewriteRule .* /cgi-bin/forbidden.cgi [L]


# Autenticación
#

### Protección Básica
# AuthName "Prompt"
# AuthUserFile /home/somewhere.com/.htpasswd
# AuthType basic
# Require valid-user

### Sitio en Construcción
# AuthName "Under Development"
# AuthUserFile /home/askapache.com/.htpasswd
# AuthType basic
# Require valid-user
# Order Deny,Allow
# Deny from all
# Allow from 23.23.23.1 w3.org googlebot.com google.com
# Satisfy Any

Este ejemplo me ha parecido muy completo y he aprovechado para incluir una pequeña descripción de lo que hace cada paso dentro del archivo.

Artículos Relacionados





Habilitar Mod_Rewrite para Apache en Ubuntu

5 01 2008

Estoy realizando el sitio del proyecto Apperture en mi computador con Ubuntu Linux. Ahora, por alguna extraña razón no funcionan las reglas de reescritura con Mod_Rewrite. Al parecer el problema está en que no tengo instalado el módulo de Mod_Rewrite, asi que he buscado en la red la solución y he encontrado esto:

# a2enmod rewrite && sudo invoke-rc.d apache2 restart

Claro, lo he encontrado como comentario en este artículo que encontre en Google pero que en el paso de editar el archivo /etc/apache2/sites-avalible/000-default me he quedado por “inconsistentencia” en las instrucciones.

Artículos Relacionados








Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.