Repositorio funciones útiles/reutilizables PHP

Llevo desde el 2005 trabajando para una pequeña empresa de informática como programador LAMP. En estos años he acumulado muchas funciones potencialmente reutilizables e interesantes para cualquiera, aqui muestro una pequeña selección.

Os pido e invito a que añadáis vuestras propias funciones útiles o reutilizables en los comentarios.

Sigue leyendo

Anuncios

Como hacer juegos profesionales: Linux + OGRE + PhysX 2ª Parte

1ª Parte : Introducción
2ª Parte : Nuestra Primera aplicación

Nuestra primera aplicación

Vamos a crear 2 cubos, de manera que lo dejaremos caer, y se comportan con una física real. Al principio los tutoriales serán mucho de copy & paste, para entrar a la acción rapidamente, despues se ira explicando más cada cosa.

Empezamos a escribir código

  • Creamos una carpeta para empezar nuestro proyecto : mkdir -p ~/proyectos/juegosProfesionales
  • Nos cambiamos a nuestro nuevo directorio de trabajo : cd ~/proyectos/juegosProfesionales
  • Creamos un main.hpp : gedit main.hpp main.cpp
  • En el main.hpp pegamos esto :
    Sigue leyendo

Como hacer juegos profesionales: Linux + OGRE + PhysX 1ª Parte

1ª Parte : Introducción
2ª Parte : Nuestra Primera aplicación

Llevo mucho tiempo tratando de hacer juegos, no soy ningún experto, pero tratare de explicar lo que ya se y lo que vaya aprendiendo, en una serie de posts sin un buen orden incremental de dificultad.

Inicialmente empeze en java 2D con un juego tipo worms gracioso, enseguida quise probar OpenGL a pelo con los tutoriales de NeHe, lentamente me hice un motor gráfico y un motor físico muy básico. Trabajando por individual solo podemos llegar a nivel amateur y eso si aprender un montón, cuando ya os meteis con biblotecas tan profesionales como ogre o physx es muy recomendable que esteis algo familiarizados con formas más caseras. Pero bueno tampoco es imprescindible.

Yo voy a suponer durante esta tira de posts que teneis unos conocimientos básicos de programación 3d y algo avanzados de c++. Todo aquello que no se entienda pos lo hablamos entre todos en los comentarios.

Comentamos nuestra plataforma de desarrollo:
Sigue leyendo

Ejecutar ASP .NET con MonoDevelop

Esta pequeño tutorial ha sido probado en ubuntu pero en otras distribuciones de linux no debería ser muy distinto.

Primero instalamos todos los paquetes relacionados con mono o monodevelop :

  • sudo apt-get install mono mono-gmcs mono-utils monodevelop monodoc mono-xsp monodoc-http monodoc-ipod-manual monodoc-njb-manual monodoc-nunit-manual monodoc-gtk2.0-manual monodoc-gecko2.0-manual monodoc-ipod-manual monodoc-njb-manual monodoc-nunit-manual monodoc-gecko2.0-manual mono-xsp2 monodevelop-java libnunit-doc monodevelop-nunit monodevelop-versioncontrol

Si os falta algún paquete, o teneis algún problema de dependencias, probar a poneros el repositorio de getdeb, que tiene versiones más actualizadas de mono y monodevelop:

  • echo deb http://ubuntu.org.ua/ getdeb/ | sudo tee -a /etc/apt/sources.list
  • Actualizamos la lista de repositorios : sudo apt-get update

Si quieres, instalate los ejemplos para ASP.NET 1.1 y 2.0:

  • sudo apt-get install asp.net-examples asp.net2-examples
  • El ejemplo de 2.0 tiene un bug tonto que se arregla : sudo cp /usr/share/asp.net2-demos/index.aspx /usr/share/asp.net2-demos/index2.aspx
  • Para ver el ejemplo nos vamos a:
    • nos vamos al directorio de trabajo que corresponde : cd /usr/share/asp.net-demos/
    • Ahora simplemente ponemos en consola xsp2
    • Nos monta un servidor donde podemos ver el ejemplo : http://127.0.0.1:8080/
    • El ejemplo de asp 1.1 es igual pero esta en cd /usr/share/asp.net-demos/y ejecutando xsp
    • Además del server de testing que montas sobre el actual directorio de trabajo en el puerto 8080, los paquetes mono-xsp y mono-xsp2 montan 2 demonios en el 8081 y el 8082 respectivamente. Yo los he dejado pero sabeis que podeis configurar los opciones por defecto de un demonio en /etc/default. En concreto en /etc/default/mono-xsp y /etc/default/mono-xsp2 respectivamente.

El ejemplo es poco educativo,así que vamos hacer un ejemplo para ir empezando:

  • Empezamos un proyecto en MonoDevelop:
monodevelop1
  • En Default.aspx escribimos entre las etiquetas body:
monodevelop2
  • En Default.aspx.cs detectamos el evento del boton:
monodevelop3
  • Ya esta ahora tenemos que construir el proyecto cada vez que modifiquemos algo. El ejecutar solo le damos la primera vez para montar el server xsp2 en http://localhost:8080/ y las siguientes veces el ciclo de desarrollo sera: 1º Realizar cambio, 2º Construir el proyecto y 3º Actualizar con F5 sobre la pestaña de firefox que corresponda :P
  • Por último, os explico alguna conceptos que pueden seros útil para ir empezando, tanto en visual studio como en monodevelop una solución es un conjunto de proyectos, mientras que un proyecto es un conjunto de paginas (en ASP.NET), por eso hay un botón para construir proyecto y otro para construir solución.
  • Una página tiene por un lado la vista(Default.aspx) y por otro lado la lógica de la pagina.
  • Los IDE suelen autogenerar parte de la lógica. Por ello la lógica a su vez se divide en dos.
  • Lógica para que el usuario añada a eventos concretos de la página(Default.aspx.cs), cuando empieza la carga, se pulsa un botón, empieza a escribir …,
  • La lógica autogenerada por el IDE (Default.designer.aspx.cs), que en el caso de MonoDevelop es editable.Estas dos páginas son la misma clase definida en 2 partes, que es una de las novedades de .NET 2.0, la inclusión de clases parciales. Por tanto las variables que añade automaticamente en Default.designer.aspx.cs tienen ambito visible desde Default.aspx.cs y nos permite hacer lo del ejemplo.
  • Nota: Si en la vista borrais un boton asp u otro objeto asp(borrando el html a pelo) que esta identificado por un id, y por tanto tiene una variable en Default.designer.aspx.cs, vereis que la variable no se borra. Parece que la versión de MonoDevelop 0.16 que uso solo añade lógica autogenerada pero nunca borra. La solución es simplemente borrar todas las variables que ha autodefinido y cuando construyas la solución o el proyecto se generaran las variables que falten.
  • Nota 2: Es imprescindible el uso de monodoc (además de google, no hace falta decirlo xD)
  • Hoy ha salido MonoDevelop 1.0, todavía no lo he probado, si algo de este tutorial ha cambiado (especialmente la nota anterior), editare el post en cuanto lo pruebe.

En definitiva, monodevelop para mí es un IDE que estoy empezando a tener en cuenta, yo estoy ahora mismo como programador PHP4(sin objetos)+MYSQL y no uso editores WYSIWYG para nada, utilizo eclipse+aptana si el pc en el que trabajo tiene bastante memoria y uso quanta en el curro que es un PIII justito. Cuando ya tienes experiencia con html+ css+ javascript + librerias ajax(jquery,mootols …) perfectamente puedes prescindir de este tipo de editores y tirar de F5 de firefox. No me convenze la POO de PHP5 y por eso veo mejor opción ASP.NET con C#, por la forma más correcta de tratar los objetos. Ante todo me gusta el software libre, por eso empeze con php, … pero aunque .NET heche atras por ser de M******** parece que se ha estandarizado, eso ha ayudado a la implementación que ha hecho la gente de Miguel Icaza. El problema es que pienso que en unos años ni M******** NO respetará su propio estandar con tal de marcar una diferencia de mercado. Hoy os digo que tengo intención es de aprender .NET profesionalmente asi que igual os digo mañana que no vale la pena por que todavía no se ha estabilizado como lenguaje.

Instalar Netbeans 6.0 en Ubuntu por repositorio

logoNBEste IDE es mi favorito para java cuando tengo que usar swing, he encontrado un repositorio para ubuntu gutsy, que nos evita instalar el binario de SUN. Para ellos procedemos a lo siguiente:

  • Añadimos el repositorio : echo deb http://srvremi.free.fr/ubuntu gutsy main | sudo tee -a /etc/apt/sources.list
  • Autententificamos el nuevo repositorio : gpg –keyserver wwwkeys.eu.pgp.net –recv-keys AA82C25A36399439
  • gpg –armor –export AA82C25A36399439 | sudo apt-key add –
  • Actualizamos : sudo apt-get update
  • Para una instalación básica de NetBeans 6.0 ponemos : sudo apt-get install netbeans6-base netbeans6-common netbeans6-j2ee netbeans6-java
  • Aqui pongo una lista del resto de paquetes que añaden funcionalidad a netbeans:
    • netbeans6-cpp – C/C++ (Prefiero eclipse + con plugins para soporte c++)
    • netbeans6-glassfish – GlassFish V2
    • netbeans6-ruby – Ruby
    • netbeans6-mobility – Mobility
    • netbeans6-openesb – Open ESB V2 Preview 3
    • netbeans6-soa – SOA
    • netbeans6-tomcat – GlassFish V2
    • netbeans6-uml – UML (lo use para una práctica de la universidad, me ahorro mucho tiempo)

Fuentes:
http://srvremi.free.fr/blog/2007/12/installer-netbeans-6-sur-ubuntu.html