Saltar al contenido

Archivo

Categoría: Programacion Web

Bueno, muchas veces me ha pasado que para iniciar a hacer una página o un programa me quedo un rato pensando en el diseño … donde poner cada cosa, mas o menos como va a quedar… de hecho no soy muy bueno diseñando y a veces busco irme hacia lo simple, pero de todas formas, ese tiempo que uno le dedica a planear el esquema o la base pues es tiempo que mejor se podría invertir en la codificación :)

Existe el web wireframing, que viene siendo cuando uno hace un esbozo del programa o página que quiere crear … creo que todos lo hemos hecho alguna vez, quizá en algún cuaderno o servilleta para darnos una idea o aterrizar la imagen que traemos en mente de lo que buscamos.

Hago esta entrada por que hace poco me topé con Balsamiq Mockups, una herramienta bastante genial con la que podemos hacer nuestros esbozos de páginas o programas de una manera fácil, rápida e intuitiva. No solo nos sirve para nosotros basarnos, si no que si trabajamos con otras personas se los podemos enseñar o incluso a un cliente para que tenga una idea de que esperar (que de una imágen de computadora a una en servilleta creo que si hay mucha diferencia de presentación).

Algunos ejemplos de lo que se puede crear con Balsamiq Mockups:

Bastante genial, no?

Bueno, el único inconveniente (entre comillas) es que es una herramienta de pago :) … dejo algunos links que tal vez puedan resultar interesantes …. recomiendo ampliamente la herramienta, de hecho creo que yo la adoptaré como una de mis básicas para futuros proyectos.

Ah otra cosa, funciona con Adobe AIR, así que habrá que instalarlo.

http://www.balsamiq.com/products/mockups

http://www.taringa.net/posts/info/2719236/Software-sencillo-para-crear-bosquejos.html

Bueno, pues… recién con lo de Quanaxoft, me he metido un poco más a desarrollar con Javascript para las aplicaciones web y he encontrado en el closure-compiler una interesante herramienta para compilar código :)

Si bien, entre otras monerías, lo que hace el closure-compiler es comprimir nuestro javascript, también le hace modificaciones muy interesantes para optimizarlo.

Closure Compiler

Closure Compiler is a JavaScript optimizing compiler. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what’s left. It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls. It is used in many of Google’s JavaScript apps, including Gmail, Google Web Search, Google Maps, and Google Docs.

Bueno, la página del proyecto la encontramos aquí: http://code.google.com/p/closure-compiler/

Y si queremos probarlo en línea, pues de aqui: http://closure-compiler.appspot.com/home

Es eficiente, libre y multiplataforma…. aparte que se me está haciendo indispensable para trabajar jaja.

windows-7-logo-copiaProbado en: Windows 7 Ultimate, 64 bits

Bueno… ayer instalé Windows 7 en mi máquina… y la verdad me llevo muy buenas sorpresas. No solo es más bonito :) , si no que también es rápido … eficiente… y no me ha dado problemas con la compatibilidad con programas o drivers (los drivers los he encontrado en las páginas de los fabricantes, listos para windows 7).

De hecho, admito que Windows 7 es genial :) … jaja, digo… tal vez soy linuxero, pero fuera de fanatismos burdos, creo que es un sistema operativo que tiene mucho que ofrecer … es como un XP en esteroides!

En fin, como yo utilizo mi máquina para desarrollo, me es indispensable tener Apache, PHP y MySQL :) … asi que procedí a hacer las instalaciones respectivas. De hecho, pensé que tendrías muchos problemas, como me pasó en Windows Vista … pero ésta vez, no me animé a utilizar XAMP, si no que hice las instalaciones programa por programa y todo salió bien, les platico mi procedimiento.

No entraré mucho en detalles, solo diré que pasos extra hice en Windows 7, quien ya haya instalado a estos 3 amigos en Windows XP ya estará familiarizado con el procedimiento, solo explico como hice funcionar PHP con Apache en 7, puesto que si da unos cuantos problemas.

1.- Bajar Apache … lo instalamos… todo normal.

http://httpd.apache.org/download.cgi

Versión que utilicé: apache_2.2.13-win32-x86-no_ssl.msi

Probamos: http://localhost

2.- Bajar PHP… lo instalamos … todo normal.

http://windows.php.net/download/

Versión que utilicé: PHP 5.3 (5.3.0), VC6 x86 Thread Safe (2009-Jun-30 08:52:55)

- Recordar elegir la carpeta de configuración de Apache, en mi caso: C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf

- Lo padre de la versión 5.3.0 es que ya trae seleccionadas las extensiones que me gustan (mysql, mysqli, sockets).

- La instalación no se llevará a cabo exitosamente, nos dirá que falló algo.

- Volvemos a correr el .msi y seleccionamos reparar (ésto no se si tenga un efecto verdadero, yo lo hice para la buena suerte jaja).

- Ahora si se instaló bien.

- Una vez terminado de instalar PHP, detenemos el servicio de Apache (en el tray icon).

tray

- Vamos a la carpeta de archivos de configuración de Apache y modificamos httpd.conf

Agregamos al final:

#PHP SETTINGS
LoadModule php5_module “C:/Program Files (x86)/PHP/php5apache2_2.dll”
AddType application/x-httpd-php .php
PHPIniDir “C:/Program Files (x86)/PHP”

Y agregamos index.php en la parte de indexación:

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

- Ok, volvemos a iniciar el servidor Apache (se puede hacer del icon tray)

- Los archivos de páginas web en Apache los guardamos en: C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs

- Creamos un index.php para pruebas

3.- Bajar MySQL, lo instalamos y todo normal :)

http://dev.mysql.com/downloads/mysql/5.1.html

De MySQL, si quieren un manejador gráfico, yo recomiendo SQLyog, a mi gusto… el mejor :)

http://code.google.com/p/sqlyog/downloads/list

Otra aplicación útil para MySQL y que en lo particular me agrada mucho es el MySQL Workbench:

MySQL Workbench is a next-generation visual database design application that can be used to efficiently design, manage and document database schemata.

It is available as both, open source and commercial editions. The Community (OSS) Edition is available from this page under the free software/opensource GNU General Public License (commonly known as the “GPL”)

The Windows version requires the .Net 2.0 framework which is integrated with Windows Vista. Windows XP SP2 users need to download the framework and install it prior to MySQL Workbench.

More information about the project can be found on MySQL Products and the MySQL Workbench Developer Central site.

Lo pueden obtener de aqui: http://dev.mysql.com/downloads/workbench/5.1.html

logo

Es un protocolo utilizado para el manejo de dispositivos en redes IP y es una excelente opción para la administración de nuestra red. Una de sus grandes ventajas es que es un protocolo soportado por una gran cantidad de dispositivos (switches, routers, impresoras, sistemas Windows, sistemas UNIX, etc.) a diferencia de su predecesor, el Simple Gateway Management Protocol (SGMP), el cual sólo estaba pensado para administrar routers.

Podemos utilizar para cosas tan simples como monitorear la condición de nuestros dispositivos hasta poder tener control sobre ellos (por ejemplo, podemos dar de baja interfaces o condiciones más especificas designadas por los fabricantes del hardware).

¿Cómo funciona SNMP?

En el mundo de SNMP hay dos actores: managers y agents.

Se tiene como manager a un servidor que corra un software que pueda administrar tareas para la red, a menudo se les conoce como NMSs (Network Management Stations).

Los agents, son piezas de software que corren en los dispositivos de red que administramos, puede ser un programa separado o puede estar incorporado en el sistema operativo. La mayoría de los dispositivos IP vienen con una especie de SNMP agent.

En SNMP, tenemos que lo importante es la interacción entre estos dos actores, el agent le pasa información al manager, y éste se encarga de administrarla. De hecho el manager puede tener un rol más activo solicitando y actualizando la información del agent.

snmp

Cabe mencionar que el agent tiene una lista de objetos que lo describen (por decir, un objeto podría ser el status operacional de la interfaz de un router) y aquí es donde entran las MIBs.

Una MIB (Management Information Base ) es una base de datos que contiene información de los objetos del agente, el cual puede implementar varias MIBs, sin embargo todos los agents implementan una en particular, la cual es MIB-II y cuyo RFC es el 1213.

SNMP usa UDP (User Datagram Protocol) como su protocolo de transporte para pasar los datos entre managers y agents. La ventaja de que trabaje con UDP en vez de TCP es por la velocidad, debido a que no hay una conexión end-to-end, sin embargo por obvias razones este envío de información no es confiable (pérdida de paquetes, sin embargo no es un problema realmente), depende entonces de la aplicación SNMP el determinar si se perdieron los datagramas y retransmitirlos en todo caso (esto se logra utilizando timeouts).

SNMP usa el puerto UDP 161 para mandar y recibir requests y el puerto 162 para recibir los traps de los dispositivos administrados.

Un punto importante a tratar al hablar de SNMP es lo que se conoce como comunidades (communities) las cuales son la manera en la cual se establecen relaciones seguras (trust) entre managers y agents. A modo de resumen, una comunidad es una contraseña.

Un agent tiene tres nombres de comunidades: read-only, read-write y trap. Cada una controla una diferente actividad y va en relación a su nombre (solo lectura, lectura y escritura y recepción de notificaciones asíncronas respectivamente). Por default, tenemos que public representa a read-only y private a read-write.

Si bien tenemos que en SNMP podemos obtener información operacional sobre los dispositivos queda una pregunta, ¿cómo es representada la información en SNMP?

Cada objeto tiene tres atributos:

Nombre: El nombre o mejor dicho, el identificador del objeto (OID) el cual es único y define a cada objeto. Puede estar representado en forma numérica o en versión “human readable”.

Tipo y sintaxis: El como los datos van a ser representados y transmitidos entre managers y agents (el tipo de dato del objeto), una ventaja es que es independiente de la máquina que sea, por ejemplo, una máquina con Windows 2000 puede comunicarse con una Sun SPARC.

Encoding: Es el como los objetos son encoded y decoded.

Los objetos son organizados en un árbol jerárquico, y de hecho esta estructura es la base para el esquema de nombres en SNMP. Un OID está hecho con una serie de números enteros basados en los nodos del árbol y separados por puntos.

Como en cualquier árbol el primer nodo es la raíz y cualquier nodo con hijos es un subárbol. Cualquier nodo sin hijos a su vez es llamado nodo hoja. Cabe mencionar que solo el subárbol iso(1) del diagrama pertenece a SNMP. La representación numérica, por ejemplo, del subárbol internet(1) sería la siguiente: 1.3.6.1 y en versión “human readable”: iso.org.dod.internet . Como se puede ver cada objeto tiene un número correspondiente (OID) así como un nombre.

Información para el subárbol internet(1):

Respecto al nodo hoja directory(1), actualmente no es utilizado.

El management(2) define un estándar de administración.

Experimental(3) está reservado para pruebas e investigación.

Y en prívate(4) está reservado para que sean definidos nuevos objetos por individuos u organizaciones (para una lista de los números que se han creado de forma privada visitar: http://www.iana.org/assignments/enterprise-numbers , se anexa un documento de todas formas con ésta información).

Ahora veamos el grupo de MIB-II (definido como iso.org.dod.internet.mgmt.1 o lo que es lo mismo 1.3.6.1.2.1) representado en árbol y una lista rápida descriptiva de los objetos que lo integran (analizar el RFC 1213 respectivo a MIB-II para más información):

snmp2

¿Cómo administrar hosts?

Partiendo del hecho de que con SNMP podemos recabar información de las máquinas en nuestra red, podemos usar una rama llamada host que pertenece a MIB-II, con la cual podemos sacar información específica:

host            OBJECT IDENTIFIER ::= { mib-2 25 }
hrSystem        OBJECT IDENTIFIER ::= { host 1 }
hrStorage       OBJECT IDENTIFIER ::= { host 2 }
hrDevice        OBJECT IDENTIFIER ::= { host 3 }
hrSWRun         OBJECT IDENTIFIER ::= { host 4 }
hrSWRunPerf     OBJECT IDENTIFIER ::= { host 5 }
hrSWInstalled   OBJECT IDENTIFIER ::= { host 6 }

El OID de host es 1.3.6.1.2.1.25 (iso.org.dod.internet.mgmt.mib-2.host).

The hrSystem (1.3.6.1.2.1.25.1) información del sistema en si.

The hrDevice (1.3.6.1.2.1.25.3) and hrStorage (1.3.6.1.2.1.25.2) información de los dispositivos del host y de sus medios de almacenamiento respectivamente.

The hrSWRun (1.3.6.1.2.1.25.4), hrSWRunPerf (1.3.6.1.2.1.25.5), and hrSWInstalled (1.3.6.1.2.1.25.6 ) se refieren aspectos respectivos al software instalado en el sistema y a los procesos, etc.

En el siguiente diagrama presentamos el árbol para la rama de host en MIB-II, la razón, con la información extraida del árbol podemos obtener datos para administrar nustros hosts:

snmp3

Ok… ahora como comentario final, diré que podemos hacer nuestrar propias herramientas de administración con PHP (bueno, con otros lenguajes es posible también, pero yo me anime a hacerlo en PHP para tener una herramienta web fácil de desarrollar y administrar sin tantos líos), de hecho desarrolle un sistema para este fin, al cual le llamé junto con un amigo Free-Love Scanner y puedes encontrar más información de él (incluido más documentación y código fuente) en el siguiente link: http://www.apuntux.com/category/proyectos/free-love-scanner/

Bibliografía:

SNMP – http://es.wikipedia.org/wiki/SNMP

SNMP Tutorial-http://www.dpstele.com/layers/l2/snmp_l2_tut_part1.php

Essential SNMP, Second Edition, by Douglas R. Mauro and Kevin J. Schmidt. Copyright 2005 O’Reilly Media, Inc., 0-596-00840-6

logo

Que tal, les pongo el programa pero subido al servidor de Apuntux, les da información sobre su IP, no es 100% acertado, pero los resultados a veces son muy cercanos:

http://www.apuntux.com/geo/geoAvanzado.php

Manda las coordenadas a Google Maps, lo que hace interesante la aplicación, el código de este programa ya está publicado en un post anterior, salu2!

logoQue tal, en estos dias me di el tiempo para trabajar sobre algo que se me hizo interesante… geolocalización de IP. Me daba curiosidad como algunas páginas podían determinar la ubicación de alguien por su IP e investigando me topé con MaxMind. Bueno, pues quise documentar el proceso y se los paso a ver si les sirve o les interesa.

El fin del documento es al final poder hacer una página que “geolocalice” una IP y que meta los datos en Google Maps. Anexo también los archivos de la página para que la prueben en sus servidores, cualquier duda la pueden comentar en esta entrada, salu2!.

Ejemplo del programa corriendo en mi servidor:

http://www.apuntux.com/geo/geoAvanzado.php

Descargar tutorial:

http://www.mediafire.com/file/ykn30wmy1jy/Geolocalizacion.pdf

Descargar archivos del programa:

http://www.mediafire.com/file/ounjytlm2hm/geo.zip

Que tal, pues gracias al comentario de un amigo (miguex) en un foro… me decidi a hostear el Free-Love Scanner en Google Code…

Les paso la página del proyecto:

http://code.google.com/p/flscanner/

salu2!

Hola, pues a lo mejor … ves una tabla interesante (o tienes) en alguna página y quieres pasarla a una base de datos… pues es muy fácil, ahi les va el procedimiento (el simple, si se quiere algo mas complejo nada como leer a fondo) para hacerlo. Lo acabo de hacer hace rato y resultó ser más fácil de lo que esperaba.

Paso 1.
Copiamos la tabla (que tal que está impresa en una página web, no?) a un documento de texto (a un .txt).

Paso 2.

Ponemos ese archivo .txt en un lugar como C:/ jeje (bueno, esto es para los windowseros, yo ahorita estoy trabajando en windows, pero se entiende la lógica para otro OS).

Paso 3.

Creamos la tabla (obviamente) en nuestra base de datos con los campos respectivos a las columnas de nuestro .txt.

Paso 4.

Ejecutamos la siguiente consulta con la cual cargaremos el archivo a la tabla de nuestra base de datos:

LOAD DATA INFILE ‘C:/puertos.txt’
INTO TABLE nombreTabla

Paso 5.

Listo, comprobamos y deberiamos ver nuestro archivo cargado con éxito.

Si no se logró pues a checar la documentación :)

Fuente:

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Bueno, pues encontré ésta página que creo es bastante útil. En Ajaxload podemos generar en línea una imágen gif de “loading” para usarla en nuestros sitios, lo cual es bastante genial y útil.

Ejemplo:

ajax-loader

Es de esas cosas que parecen simples pero que hacen más fácil la vida :)

Más info aqui:

http://www.ajaxload.info/

greyboxBueno, lleva muuuuuucho rato que me he alejado de Apuntux y de mis responsabilidades con ustedes… por fin hoy me entró un tanto el ánimo y la inspiración para hacer un post en el blog jeje. Es para recomendarles esta sensacional manera de manejar los pop-ups en las páginas que desarrollamos.

Da un muy agradable efecto para los pop-ups de páginas e incluso puedes hacer galería de imágenes de una manera muy fácil… les dejo los links para más información:

Fuentes:

http://orangoo.com/labs/GreyBox/

http://www.apan.net/tools/grey/normal_usage.html