¡Ese servidor nunca funcionara bien!

Los encargados del El servidor de mi universidad desde siempre ha dado problemas, es una cuestion historica ya que desde antes que yo ingresara a la universidad el proceso de reinscripción siempre ha sido un gran problema.

¿Porque no se invierte en la correcta infraestructura? digo despues de todo es la BUAP no una universidad patito. Pero en fin, habra que sugerir algo mejor en vez de quejarse, de mientras dejo los horarios de reinscripción bajo la advertencia de que no estan actualizados.

A todas las fechas de los alumnos de generaciones anteriores a la 2008 se les debe aumentar un día: si te tocaba el 15 de diciembre ahora te toca el 16. Ok? O_o

Attached Files:

Integracion por sustitucion y partes

Me he encontrado con estos videos que me han ayudado para mi curso de Calculo Integral

Integracion por sustitución

Integración por partes

Integración por fracciones parciales

¡Esta cabron!

Ya voy en el tercer mes del reto y veo que todo va marchando bien, he conseguido estabilizar mis tiempos y actividades cosa que parecía imposible hasta hace medio año. La finanzas prosperan a pesar de la crisis, la influenza y la competencia. Todo parece estar bien, no excelente, pero al final no me puedo quejar de mi suerte. Solo hay una cosa que me ha molestado mucho en las últimas semanas, la calidad de maestros en la universidad.

No pretendo acusar a nadie, mucho menos desprestigiar a alguien, solo quiero que quede anotado acá. Si bien siempre he sido mas un autodidacta y no comulgo mucho con las normas y horarios que establece el sistema escolarizado de educación, tampoco me había enfrentado a profesores de los que dudara tanto y peor aún de los que haya comprobado la falta de conocimiento. Esto realmente me preocupa. No es que piense que saldré de la facultad siendo “una papa”, pero si me he puesto a pensar en el prestigio de nuestros egresados, ya que en estos 3 años de carrera me he encontrado con titulados que no tienen trabajo, no por falta de oportunidad sino de capacidad, otros tantos que tienen un Café Internet y en el mejor de los casos uno de reparación de computadoras y otros que simplemente están chambeando en algún Cinepolis.

Me pregunto si ¿tanto esfuerzo, cinco años de tu vida y demás problemática que existe para asistir y permanecer en la educación superior será tomada en cuenta por los profesores?… nuestros profesores. Porque es muy común ver salones vacíos ó clases que se van en puros comentarios absurdos.

Pienso que la única forma  de superar esto es prepararnos por nuestra cuenta y demandar mas a nuestros profesores, que si bien tienen la responsabilidad de enseñarnos, nunca tendrán la responsabilidad de enseñarnos mas de lo que les pedimos.

Scripts para multiupload files

jQuery

Enviar Email con PHP y Gmail

En el blog de unijimpe, he encontrado un post bastante ingenioso de como enviar correos electrónicos con la librería PHPMailer aprovechando el protocolo SMTP de Gmail y la capacidad de manejar este protocolo desde PHP y por supuesto la librería.

Enviar Email con PHP y Gmail | Fuente

Para compilar PHP o Python

Algunos proyectos interesantes que he visto este día:

Es una implementación de la API de Windows (Win32) para PHP, con la que se pueden producir aplicaciones nativas para Windows.

http://winbinder.org/

Es una extensión para convertir los scripts de Python en programas ejecutables en windows (.exe).

http://www.py2exe.org/

Es un compilador de PHP, produce programas (.exe)
http://www.bambalam.se/bamcompile/

Usar la tecla de Windows en Ubuntu

Vas al menu Sistema -> Preferencias -> Teclado, seleccionas la pestaña Distribuciones, presionas el boton Opciones de distribución, despliegas la opción Comportamiento de la tecla Alt/Windows, y seleccionas la opcion Hyper is mapped to Win-keys.

Fuente: http://drmad.org/blog/usar_tecla_super_windows_para_combinaciones_de_teclas_en_ubuntu.html

El Framework ExtJS

Estoy considerando la utilización del Framework ExtJS para el desarrollo del proyecto. Jamás lo he usado, aunque si conocía de su existencia.

El concepto de este tipo de Frameworks es simple, es una Interface de Usuario Gráfica (GUI por sus siglas en inglés), y nos facilita la creación de tablas, formularios, botones, cuadros de texto, menus y barras de herramientas. Al ser un framework probado en varios navegadores, los dolores de cabeza con el crossbrowsing es cosa del pasado.

Asi como si estuvieramos utilizando Visual Basic, hay herramientas en la red para hacer formularios como esta:

http://extjs.com/learn/Tutorial:Application_Layout_for_Beginners

Aplication Layout for beginners

http://tof2k.com/ext/formbuilder/

Introducción a los Grids en ExtJS

http://www.desarrollosweb.net/2008/11/18/introduccion-a-los-grids-en-extjs/

Guardar datos de un formulario usando PHP y MySQL en ExtJS

http://tuturtinular.com/2008/08/27/extjs-tutorial-using-extjs-form-to-store-data-to-mysql-database-using-php/

Sistema de Plugins

Han comenzado las clases en la FCC, y para la materia de Ingenieria de Software nos han informado que al finalizar el curso tendremos que presentar un software terminado y funcionando, es por eso que en estos primeros dias me he dado a la tarea de investigar cuales son los posibles temas y clientes que podríamos utilizar para nuestro proyecto.

Dentro de mis opciones destaca la del sistema que hicimos para Laserelectron, un sistema administrativo para talleres de servicio. Me interesa mucho mejorar este sistema, y agregarle nuevas características y funcionalidades, y hoy por la mañana me puse a pensar en una característica que hará la gran diferencia: Un sistema que acepte plugins.

Hoy por la mañana me he dado a la tarea de buscar algun tipo de explicación y he encotrado un foro donde davidespr explica:

Bueno, ya que viste el “sistema de plugins” que se usa en Gesbit, pero, no te enteraste de mucho (mea culpa), voy a ver si, en pocas palabras, soy capaz de resumir, no ya el sistema que usa Gesbit, pero, en general, cómo puede implementarse un sistema de plugins en un programa.

En primero lugar, hemos de tener en cuenta que lo que quieres hacer puede lograrse de muy diferentes formas. Como sabes, es raro que no existan varias soluciones y formas de hacer la misma cosa. No obstante, creo que algo sí que puede generalizarse, de manera que puedas hacerte alguna idea de cómo va el asunto.

Para que un programa implemente un sistema de plugins es menester varias cosas, algunos pasos, que, trato de resumir a continuación:

1º El programa “host” (anfitrión) ha de ocuparse de buscar y preparar los plugins para su uso

2º La naturaleza del plugin (una clase, una DLL, un ejecutable) la condicionará también el “host”

3º El programa “host” ha de poder determinar los plugins “cargados” y disponibles, en un momento dado

4º El programa “host” habrá de poder “llamar” al plugin usando algún tipo de mecanismo, y, por último…

5º El plugin ha de ser capaz de “responder” a una llamada del programa “host” de la manera establecida

Yo creo que esos podrían ser lo pasos generales, ahora bien, todo esto se puede complicar cuanto se quiera, qué sé yo, por ejempo, podríamos pensar en plugins que pudieran comunicarse entre sí mismos, además de con el programa “host” y así cualquier virgería que se te ocurriera, una vez que tienes cierta “base”, que sería lo que trato de resumir arriba.

¿Cómo se hace en Gesbit? Pues es más sencillo de lo que tal vez pueda parecer (mea culpa otra vez). Gesbit “busca” los plugins en un determinado directorio. Dentro de un determinado directorio (gbaddon/plugins), cada subdirectorio puede representar un plugin diferente, puesto que además no puede haber dos directorios con el mismo nombre. De hecho, en el caso de Gesbit, el nombre del directorio identifica en no pocas ocasiones al plugin en cuestión.

Dentro de cada subdirectorio de “gbaddon/plugins”, como decía, puede haber tantos subdirectorios como plugins, pero, esto no le basta a Gesbit para considerar a un plugin como “válido”. En efecto, cada plugin, es decir, dentro de su subdirectorio, ha de contar con un archivo con información sobre el plugin (“gbplugin.xml”) y con una clase (PHP) cuyo nombre es el mismo que el del plugin, mejor dicho, el mismo que el subdirectorio del plugin. Dicha clase además ha de derivar de la clase “GbPlugin”.

Piensa que aún estamos con el punto número uno. El programa “host”, en este caso Gesbit, de hecho “recorre” el directorio de plugins y busca en cada uno de sus subdirectorios el archivo de información (“gbplugin.xml”) correspondiente, además de un “script”, “nombre-plugin.class.php”, que, ha de contener la clase de cada uno de los plugins. Ahora bien, Gesbit no irá más allá en el caso de los plugins “inactivos”, sólamente leerá el archivo con la información del plugin, para tenerla disponible.

Quizá se me olvidó comentar antes que el programa “host” ha de conocer, en un momento dado, qué plugins están “activos” y cuáles no lo están. En el caso de Gesbit esta información se guarda en la base de datos, se trata de una cadena separada por comas con los nombres de los directorios de los plugins “activos”. Esto quiere decir lo siguiente: si el nombre del directorio de un plugin está en dicha cadena, significa que el plugin está “activo”, si no está en la cadena, es que el plugin no está “activo”.

Cuando hablo que Gesbit se encarga de buscar los plugins y tal y cual, me estoy refiriendo a que existe una clase en Gesbit, “GbPlugins”, que es realmente la encargada de todo esto. Basta instanciar esta clase para que se ponga a hacer lo dicho hasta ahora, buscar los plugins disponibles, localizar la información de los mismos, e instanciar un objeto de la clase del plugin, siempre que el plugin esté “activo”. Es la propia clase “GbPlugins” quien guarda la información sobre los plugins.

La clase “GbPlugins” contiene, básicamente, dos miembros, dos variables privadas. En una de ellas guarda la información de los diferentes plugins “inactivos” (pero disponibles), y, en otra, guarda las instancias de los objetos de los plugins “activos”. De este modo, como puedes imaginar, la clase “GbPlugins” puede “trabajar” tanto con los plugins “inactivos” como con los “activos”, la clase “GbPlugins” cuenta con métodos para “activar” y “desactivar” plugins, para “listar los disponibles”, etc.

Con esto ya hemos sobrepasado el punto número tres, así que vamos con el número cuatro. En efecto, la clase “GbPlugins” puede ejecutar diversos métodos de los plugins, y, a su vez, el propio Gesbit, en cualquier lugar, puede hacer uso de la clase “GbPlugins”. Por ejemplo, esta cuenta con un método que se llama “ExecutePluginAction”. Cuando desde cualquier punto de Gesbit se ejecuta dicho método de la clase “GbPlugins”, esta recorrerá los plugins “activos”, para confirmar que cada plugin implementa el método “ActionCallback”, en este caso.

Piensa que PHP proporciona lo necesario para averiguar si una clase cuenta con un determinado método público. De este modo, resumiendo, Gesbit ejecuta el método “ExecutePluginAction” de la clase “GbPlugin”, porque se va a llevar o se ha llevado a cabo una “acción” en el sistema, como pueda ser que se acaba de publicar un nuevo comentario. La clase “GbPlugins” recorre los plugins “activos” y, siempre que un plugin cuente con un método “ActionCallback”, la clase “GbPlugins” lo llamará, lo ejecutará y luego guardará la respuesta del plugin.

Con eso hemos cubierto ya el punto número cuatro, es decir, Gesbit cuenta con una forma (en realidad existen más, hay métodos “FilterCallback” y “PrinterCallback”, por ejemplo, pero, estamos hablando de lo mismo) para comunicarse con sus plugins y de ejecutar alguno de sus métodos, en un momento dado. Así que nos queda el punto número cinco, que, en realidad es hermano del anterior: la respuesta de los diferentes plugins se retorna en el método “ExecutePluginAction” de la clase “GbPlugins”, de manera que Gesbit, dependiendo de unas u otras respuestas, llevará a cabo esta o aquella tarea o no hará nada en absoluto, por ejemplo.

No sé si me he enrollado demasiado, y, sobre todo, no sé si todo lo dicho te ha servido de algo. Me temo que con algún ejemplo todo podría ir mejor, y, no es por no preparlo, pero, reconoce que no sería cuestión de un par de líneas de código. Los pasos mencionados anteriores han de darse, resumiendo:

1º Tu aplicación ha de buscar plugins en un determinado lugar, ha de ser capaz de validar los plugins que encuentre (en el caso de Gesbit estos han de tener un archivo “gbplugin.xml”, y una clase PHP, que además debe heredar de la clase “GbPlugin”) y ha de poder trabajar con ellos, esto es, activarlos, desactivarlos (para esto ha de “recordar” qué plugins están activos o no, en el caso de Gesbit ya sabes que se usa la base de datos), buscar métodos públicos en la clase del plugin que poder ejecutar (“ActionCallback”, “FilterCallback”, etc.) y ejecutar dichos métodos cuando sea necesario.

2º En el caso de Gesbit un plugin es una clase que ha de derivar de la clase “GbPlugin”, pero, esta es la solución empleada en Gesbit, no quiere decir que tenga que ser así en todo caso. Lo que está claro es que es la aplicación “host” la que ha de establecer una especie de “plantilla” a la que deberá ceñirse quien desarrolle plugins para la aplicación. En el caso de Gesbit, por ejemplo, basarse en una clase “base” común como “GbPlugin”, ofrece ventajas como que esta clase cuenta con métodos que podrán utilizar cada uno de los plugins en su propia clase, pues su propia clase debe ser (fíjate que no es puede, sino debe ser) una clase derivada de “GbPlugin”.

Los puntos tres, cuatro y cinco, como has visto, ya los hemos resumido en unos cuantos párrafos. Decíamos que:

3º El programa “host” ha de poder determinar los plugins “cargados” y disponibles, en un momento dado

4º El programa “host” habrá de poder “llamar” al plugin usando algún tipo de mecanismo, y, por último…

5º El plugin ha de ser capaz de “responder” a una llamada del programa “host” de la manera establecida

Y esto ya hemos visto cómo se hace en el caso de Gesbit, aunque sea por encima. Y creo que más o menos esto es todo lo que puedo decir, ya con bastante miedo porque me parece que me he alargado más de la cuenta. Creo que si puedes tomar algunas ideas generales de lo que he dicho, podrías atreverte a poner en marcha tu propio sistema de plugins, al menos algún ejemplo que pudiera poner en práctica lo dicho, de manera que se te “quedara” mejor. Si tienes dudas o lo que sea ya sabes que aquí hay gente que puede echarte una mano. ;)

http://www.php-hispano.net/foros/PHP/36473-sistema-de-plugins

Me gusta la idea, es una explicacion clara y general de lo que se puede lograr con PHP, muy parecido a lo que hace Wordpress para administrar sus plugins, sospecho que el primer paso para comenzar con el sistema es definir cual es el elemento eje en el sistema, y para el caso de los blogs los elementos eje son los post, asi como para el sistema del taller de reparaciones son las ordenes de servicio.

Seguiré investigando y explicando todos los avances que haya obtenido con este proyecto.

Mi primer sitio

Hace unos días encontre una pagina que hice cuando todavia era un niño (si ya llovio), y por su puesto ya la desaparecieron de lycos, pero seguia en el cache de google y logre rescatar unas imagenes, vaya no es la gran cosa, pero fue con esta página que di mis primeros pasos en PHP y MySQL:

first-banner

Era la portada de mi sitio, con todas las cosas que me gustaban…bueno algunas me siguen gustando.

El sitio continuaba y tenia una lista de bootlegs de Metallica, que en algun momento tuve, esto si manejado con una pequeña tabla en MySQL y manejado con PHP.

Si llego a encontrar aquellos bootlegs los estaré posteando por aca. ;)

Attached Files: