Prueba Scratch

//scratch.mit.edu/projects/embed/98343281/?autostart=false

febrero 19, 2016 at 4:29 pm Deja un comentario

Configuración de un punto de acceso wifi conectado a un modem/router

SITUACIÓN: Me deja un amigo un router wifi, sin modem integrado.Lo llamaremos router B. Me facilitan un nuevo modem/router al contratar la línea telefónica pero no es wifi, lo llamaremos A.

OBJETIVO: Quiero comprobar que puedo conectar los 2 routers por ethernet y acceder por wifi a internet desde el portátil.

REALIZACIÓN: Conecto el router A a la línea telefónica y lo enciendo. Desde él ya tendría acceso a internet conectado por cable ethernet. Lleva un servidor dhcp que proporcionará ips a los ordenadores de la red.
Conecto ambos routers por Rj45  a través de los puertos LAN de ambos aparatos.
Reseteo el router B a los valores de fábrica.
Enciendo el router B y me conecto a él vía wifi para configurarlo:

1 – Desactivo el servidor dhcp.
2 – Elimino todas las entradas que tenga en la sección de conexiones WAN ya que es un modem/router y no quiero que actúe el modem.
3 – Le asigno una dirección ip dentro del rango de las que me proporciona el router A. Esto no debería ser necesario hacerlo puesto que podría recibir la ip vía dhcp del router A pero es más útil  tener una dirección fija.
Me conecto vía wifi al router B y ya debería tener acceso a internet. Por si acaso reinicio ambos routers.

Nota:  Se podría configurar la tabla de rutas del router B para que apuntara hacia el A, pero a mi me ha funcionado perfectamente sin hacer nada.

enero 14, 2010 at 9:53 pm 3 comentarios

Caché DNS Windows,Linux,Mac,Firefox

Comandos útiles para trabajar con la caché dns en un pc.

En Windows:

ipconfig /flusdns Para vaciar la caché dns.
ipconfig /displaydns Para ver el contenido de la caché.
net stop dnscache Para desactivar el servicio de caché dns temporalmente
compmgmt.msc Para desactivar el servicio de caché dns completamente habría que buscar Servicios y Aplicaciones > Servicios > Cliente DNS y poner tipo de inicio Deshabilitado.

En linux

  • /etc/rc.d/init.d/nscd restart Reinicio del nscd daemon
  • /etc/init.d/network restart Reinicio completo de la red

En Mac OSX Leopard

  • lookupd -flushcache

En Mac OSX

  • dscacheutil -flushcache

En Firefox

  • Abre Firefox, escribe “about:config” en la barra de direcciones y pulsa Enter.
  • Pulsa el  botón derecho en un espacio vacío y escribe “Nuevo” -> “Entero”
  • Escribe “network.dnsCacheExpiration” en el nombre y “0″ como valor entero
  • Pulsa el  botón derecho de nuevo y escribe “Nuevo” -> “Entero”
  • Escribe “network.dnsCacheEntries” en el nombre y “0″ como valor entero

En google Chrome

  • Herramientas > Opciones > Avanzadas > Desmarcar Utilizar la precarga de DNS …

Para acceder a la consola de  comandos en Windows :

  • Inicio > Ejecutar > cmd
  • Tecla “Windows + R”

Listado de comando útiles en Windows XP y Vista:

http://www.webtaller.com/maletin/articulos/comandos-utiles.php
http://www.webtutoriales.com/tutoriales/windows/comandos-windows-vista.49.html

noviembre 8, 2009 at 9:35 pm 1 comentario

Windows 7 y el XP Mode

Con el advenimiento de Windows 7 ha llegado una “nueva tecnología” asociada que denominan XP Mode. Consiste fundamentalmente en que toda aplicación que tuviéramos funcionando en Windows  XP sea capaz de funcionar de igual manera en Windows 7, sin ningún tipo de problemas.

La idea es lógica y muy buena. Que exista una manera de poder utilizar software antiguo sobre este nuevo sistema operativo.

En teoría mucho software  va a funcionar perfectamente sobre Windows 7, sobre todo aquel que ya lo hacía en Vista.

La solución que propone Microsoft es la siguiente:

Descargarte e instalar de su web 2 programas:

Windows XP Mode y Windows Virtual PC.
Como podéis ver exige descargar Virtual PC un software de emulación / virtualización (al estilo VMware, Xen,VirtualBox, Qemu, etc ) en el que va a realizar una  virtualización (no emulación) de Windows XP que será transparente al usuario (verá la aplicación como si estuviera corriendo en Windows 7 aunque por debajo estará corriendo una versión virtualizada de Windows XP).

Los problemas:

  1. Las versiones Starter y la versión Home no permiten hacerlo tal y como indica Microsoft. Habría  manera de conseguir hacerlo pero se salen del propósito de este post.
  2. Es un añadido, es decir, te tienes que descargar el software aparte de su web (eso sí gratuitamente).
  3. Que la BIOS esté configurada correctamente para admitir tecnología de virtualización (se entiende un poco más abajo).
  4. Los requisitos que exigen:
    Tener un procesador Intel VT, o AMD-V, es decir, procesadore Intel o AMD con capacidades de virtualización integradas.

Y en este punto es donde está el verdadero problema.
Tú te compras un flamante ordenador, portátil o no, te compras tu versión de Windows 7, descargas Windows XP Mode y Virtual PC y felizmente esperas que lo que dicen de que los programas de XP te van a funcionar perfectamente se desvanece en el momento que lo intentas hacer.
¿Por qué?
Pues resulta que simplemente no te funciona porque el dichoso procesador no tiene incorporada esa tecnología o no está configurada correctamente. El cacao en cuanto a qué procesadores la tienen o no es monumental. Algunos modelos incluso han sido modificados en tiradas posteriores por lo que no te sirve la denominación del mismo para identificarlo sino que tienes que tirar de versión.

Como siempre, Microsoft consigue que en algunas cosas la sencillez que predica y consigue con algunas cosas en otras nos la complique y de qué manera.

Soluciones:

  1. Instalar VMware, Virtual PC ,Virtual Box etc  y emular (ya no sería virtualizar) un Windows XP que tendríamos que instalar dentro de es máquina Virtual, etc, etc., con la pérdida de tiempo correspondiente frente a lo que en principio nos ponía tan bonito Microsoft.
  2. Cambiar de procesador o esperar alguna solución que a Noviembre de 2009 no conozco que exista. Si alguno la conoce que lo diga o calle para siempre.

Creo que este tipo de cosas son las que hacen que haya frikis de la informática, que en vez de estar con sus amigos, familia o durmiendo se dediquen a tener que investigar esto y que el resto del mundo se sientan raros por no saberlo. Deberíamos exigirle daños y perjuicios a Microsoft por las horas que nos vamos a pasar unos cuantos intentando ayudar a maltrechos clientes, amigos, etc

También quiero señalar que no tengo experiencia instalando software XP en Widows 7. A lo mejor estoy  hablando aquí de todo esto y resulta que por defecto sin Windows XP Mode ni nada funcionan correctamente los programas (algo habrá para que lo hayan creado pero bueno…) . Agradecería comentarios respecto a esto.

PD: Intel ha creado una página en la que explica cuáles de sus procesadores tiene y cuáles no  esta tecnología.
Microsoft tiene una herramienta para detectar si tu ordenador soporta o no estas tecnologías.

noviembre 4, 2009 at 11:03 pm 2 comentarios

Recursos para programadores en php

Os quiero presentar lo que a mi modesto entender son los conocimientos, recursos y herramientas con las que poder comenzar a programar utilizando el lenguaje php. Son conclusiones que he ido sacando de mi experiencia como programador y son aplicables hasta el mes de mayo de 2008; ya sabéis como son estas cosas, lo que hoy vale mañana quién sabe …
Va dirigido a gente que pretenda ir un poco más allá de la creación de una página web sencilla, aunque ya sabéis que todos sois bienvenidos.
He tratado de poner la mayor parte de enlaces posibles en español.

EL LENGUAJE PHP

Lo primero que necesito para programar es tener un conocimiento básico del lenguaje.
A mediados de 2008 la versión de php que está funcionando es la 5. La 4 está ampliamente difundida pero posee una orientación a objetos más limitada. Se espera que ese mismo año se publique  definitivamente la versión 6, la cuál continuará con una mejora de la orientación a objetos, xml etc.
Os recomiendo que trabajéis con orientación a objetos por varios motivos aparte de los típicos de reutilización, encapsulamiento, etc:

  • Es un modo muy profesional de trabajar, lo usa la mayoría de empresas (y con ello no quiero decir que el lenguaje estructurado no lo sea).
  • Mucho código está basado en clases por lo que es bueno conocer su funcionamiento para poder usarlo y modificarlo.
  • La tendencia de php ha ido en esa dirección desde la versión 4, no vayamos en contra , ¿no?.

Considero muy interesantes los siguientes recursos:

– La web de IBM http://www-128.ibm.com/developerworks/library/os-php-read/ . El único incoveniente es que está en inglés, pero tiene cantidad de artículos, tutoriales, enlaces, etc. Recomiendo para principiantes la sección de “Learning PHP part 1,2,3” . Pide que nos registremos en la web para verlos, pero el registro es gratuito.

– La web de php http://www.php.net.  Me parece de lo más sencillo, con multitud de ejemplos. Si necesitas conocer alguna función, seguro que tienes algún ejemplo fácil de entender.

– Memorias de un aprendiz de php, una web muy querida que me ayudó en tiempos a introducirme en el mundo del php. Muy completa orientada a programación estructurada y trata la mayoría de temas  http://rinconastur.net/php/.

IDES

Un IDE es la herramienta de software que nos permite fundamentalmente escribir el código. Un simple bloc de notas podría realizar dicha tarea.
Pero necesitamos algo más: un editor avanzado que nos permita gestionar los ficheros y módulos de un proyecto, las clases involucradas, proporcionar ayuda a las funciones del lenguaje, integrar frameworks, depurar el código, etc. Esa sería realmente la función de un IDE, facilitarnos un entorno que haga más sencilla la tarea de programar.

FRAMEWORKS

Se denomina con el nombre de framework a “una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, un framework puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto. Un framework representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.”

Facilita la tarea de creación de software mediante clases y funciones que evitan tener que crear de cero todo el software necesario.

La elección vendrá determinada por variados factores:las necesidades, si está siendo usado por tu empresa, la facilidad de uso etc.
Yo aconsejo el uso de frameworks “con futuro”, es decir, aquellos soportados por empresas solventes (en este caso Zend, de los creadores de php) o por la comunidad (Symphony), que sean de uso extendido, con una documentación clara y completa, y a ser posible cuyo código fuente sea accesible para poder aprender de él y comprobar su calidad y seguridad.

Una de las ventajas del uso de frameworks, además de la mejora de la productividad ,es el hecho de que utilizarás clases muy probadas probablemente más seguras, y, si el framework está bien hecho, te obligará a usar mejores técnicas de programación.
Exigen invertir cierto tiempo aprendiendo su funcionamiento, pero una vez lo domines, las ventajas superan con creces el tiempo invertido. Eso siempre que no dejen de desarrollarlo …
En internet puedes encontrar debates acalorados sobre las ventajas y desventajas frente a la codificación a mano.
Tener que lavar a mano la ropa puede dejarla muy limpia, dependerá de mi pericia como lavandero. Yo prefiero el uso de una “buena” lavadora, y remarco lo de buena, porque usar una mala lavadora me crearía más problemas de los que me solucionaría.
También es posible que tu empresa, si es de cierto tamaño, ya posea uno propio mejor o peor documentado. Salvo si es un código de excelente calidad o para aplicaciones específicas, yo recomiendo no crearlo de cero, sino usar uno ya existente por varias razones: lo que aprenda me puede servir para otros proyectos, se tiende a la estandarización (no a software cerrado), un trabajador podrá incorporarse a un proyecto más fácilmente si ya conoce el entorno, pueden existir funcionalidades que uno ni se imagine, y si además es software libre, se puede contribuir con aportaciones propias (no todo va a ser recibir … )
También puedes encontrarte con software libre tipo Joomla/Mambo que poseen apis que permitan adaptarlo a tus necesidades, crear módulos etc. Los que yo conozco, son demasiado engorrosos y poco o mal documentados.
Recomiendo suscribirse a listas de correo, boletines, etc para tener nuestro framework lo más actualizado posible y no os agobiéis por la elección; si os sirve para lo que necesitáis y teniendo en cuenta lo dicho anteriormente, adelante con ello.

Los más populares son:

Zend: http://framework.zend.com/

IBM tiene un magnífico tutorial sobre este framework tratando temas bastante avanzados

Symphony: http://www.symfony-project.org/

Cake: http://www.cakephp.org/

ENTORNOS DE TRABAJO PARA PHP

Para poder programar con php se necesita al menos un servidor web y un intérprete de PHP.
Existe software que instala plataformas completas para php.
Instalan un servidor web (suele ser apache), php, mysql, perl, etc,  donde podemos colgar  nuestras aplicaciones php.
Una de las más interesantes es XAMPP http://www.apachefriends.org/en/xampp.html

PLANTILLAS

Funcionan a modo de modelo estático de página cuyo contenido puede ser cambiado sencillamente sin necesidad de tener conocimientos de php.
Pretenden servir para separar el código de la aplicación de la  presentación de la información.
Hay muchos debates sobre el uso de plantillas y el rendimiento de php, la utilización de sistemas de caché etc http://mnm.uib.es/gallir/posts/2006/09/26/820/. Algunos frameworks poseen sistemas propios de plantillas por lo que utilizar un software externo no se justificaría salvo en casos muy concretos.
Uno de los sistemas de plantillas más usados es Smarty
DOCUMENTACION

Uno de los momentos más frustantes para un programador es encontrarse con un software que no se encuentre documentado de ninguna manera (incluso aunque uno sea el autor después de unos meses se hace difícil entender tu propio código). Tener que ir descubriendo para qué sirve cada función, clase, variable, etc nos hace perder demasiado tiempo.

Consejos :

– Usar una nomenclatura clara, sencilla para los nombres de variables, clases etc.
En http://www.cristalab.com/tutoriales/190/reglas–de-codificacion-y-lineamientos-de-codigo-php nos ofrecen unos consejos muy interesantes.
– Comentar el código. http://www.variablenotfound.com/2007/12/13-consejos-para-comentar-tu-cdigo.html
– Ser organizado a la hora de programar . Leer todo lo que podamos sobre metodologías de programación, errores frecuentes, optimización de código
– Usar phpdoc (http://www.phpdoc.org/) para documentar las variables, clases, métodos, funciones. Es un sistema automático que genera documentación a partir del código fuente y de comentarios especialmente creados incluidos dentro del mismo.

CONEXIONES A BASE DE DATOS

Nuestras aplicaciones probablemente necesitarán conectarse a base de datos para obtener la información que necesitemos.
Para facilitarnos el trabajo podemos utilizar librerías como adodb (http://adodb.sourceforge.net/) , que nos proporcionan un api que entre otras cosas sirve de capa de abstracción de base de datos. Esto permite que con un mismo código podamos accceder a distintas bases de datos, sin necesidad de usar funciones específicas para cada una de ellas. Esto nos obliga a usar código sql estándar, lo que es bueno.
Por contra, perdemos un poco de rendimiento de la aplicación y el poder acceder a determinadas funciones específicas de las bases de datos . Si estamos muy atados a una determinada de base de datos, quizás no nos interese utilizar este tipo de librerías.

APIS

Por definición, Internet es global. Y cada día más.
Los contenidos son cada vez más dinámicos y pueden provenir  de distintos orígenes:
Una página puede contener parte de contenido estático en xhtml, parte generado con php, datos obtenidos de una base de datos local o remota, titulares obtenidos de un feed rss externo, un mapa o unas gráficas  obtenidas en tiempo real de google, información de twitter, previsión del tiempo de un servicio de , noticias de un servicio especializado de noticias, inserción de publicidad adaptada al contenido, widgets, chats integrados en nuestra web,  etc.
Diversas webs , muchas de ellas de manera gratuita,  nos ofrecen apis de programación (conjunto de funciones, clases, métodos) que nos permiten acceder a sus contenidos y publicarlos directamente en nuestros propios desarrollos .
Un ejemplo de cómo han cambiado las cosas:
Antiguamente, una cosa muy típica,  era  poner un pequeño mapa en la web, que se le solía encargar al diseñador, donde mostrar la situación de la empresa del cliente. Hoy día todo el mundo utiliza el api de google para mostrar dicho mapa. Las ventajas: Un interfaz bien definido y  conocido por los usuarios (todos sabemos movernos por un mapa de google maps), funcionalidades en continuo crecimiento, etc. Desventajas: Código cerrado, y para utilizarlo en  sitios de mucho tráfico es de pago.
A continuación presento algunos de los que conozco y que pueden aportar soluciones a problemas cotidianos

Aparte podemos descargar diversas apis para usar directamente en el código dentro de nuestros proyectos

Otros APIS: Facebook, Twitter, Yahoo,PAYPAL, PEAR,GD library, charts(gráficos) etc, etc

MIS CONSEJOS

  • Simplificar, simplificar, simplificar.
  • Dividir los problemas complejos en partes más sencillas. Divide y vencerás.
  • Evitar las chapuzas.  Te solucionan la vida en un momento determinado pero a la larga minan tu autoestima como programador y hacen el código ilegible.
  • Hacer código legible y lo más estandarizado posible.
  • Pensar antes de programar. Tener diseñado un plan de trabajo
  • No reinventar la rueda. Es casi seguro que antes de nosotros alguien haya encontrado solución al problema que pretendemos resolver. Investigar las funciones, clases, métodos y constantes de PHP, comprobar dentro de la documentación del framework que usamos, consultar en la web, a amigos, foros, etc. nos puede ahorrar mucho tiempo.
  • Usar frameworks que nos vayan a facilitar el trabajo. Crear un framework propio desde cero es una tarea compleja, piensa si te va a merecer la pena.
  • Comentar el código lo necesario.
  • Estar al día de las tecnologías relacionadas con la web, pero tampoco obsesionarse con ello. Estar a la última en tecnología implica arriegarse. Elige productos más o menos asentados y probados. Quizás no seas lo más “in” pero te asegura una producción más estable.
  • PHP es una tecnología que soluciona unos determinados problemas. Otras tecnologías solucionan otros.
  • El tamaño sí importa. Cuanto más pequeño mejor.
  • Utilizar tecnologías estándar, es decir, codificar las página en XHTML, CSS etc  y comprobar las páginas con los validadores del W3C.
    Debemos pensar en las páginas como en estructuras de contenido, no como en  diseños artísticos.
    En esta página http://www.maestrosdelweb.com/editorial/estandaresweb/ tenemos unos muy buenos consejos y enlaces sobre estos temas.
  • En definitiva y como dice un amigo  “lo que se hace bien, estará siempre bien hecho”

RENDIMIENTO, ESCALABILIDAD Y NUESTRA RELACIÓN CON LOS SISTEMAS

Enlaces sobre cómo mejorar el rendimiento de nuestras aplicaciones web.
Mi recomendación es que no sobrecarguemos las páginas, que no abusemos de los frameworks y acumulemos código sobre código, que reduzcamos las consultas sql a la mínima expresión y que las optimicemos (http://www.webtaller.com/construccion/lenguajes/sql/lecciones/optimizar-consultas-sql.php), que usemos sistemas de cacheo de páginas, que comprimamos todo lo posible tanto los ficheros como los flujos http usado ZLIB (http://es.php.net/zlib)
Si somos afortunados y nuestra web aumenta a volúmenes de tráfico importantes,  la pelota estará en el tejado de los de sistemas, y conceptos como balanceo de cargas, frontend-backend, separación de contenidos estáticos y dinámicos en distintos servidores, clustering, serán a partir de ese momento el pan de cada día. Eso sí, nuestra obligación como programadores será la de realizar un código óptimo, seguro y libre de errores.  Sobre este tema hay unos artículos interesantísimos de Raúl Rivero http://www.elmundo.es/imasd/docs/charlas/2006-caceres/elmundo-es-y-su-planteamiento-tecnico.html http://www.soitu.es/participacion/2008/03/11/u/soitu_1205230727.html

Enlaces sobre optimización de php
http://phplens.com/lens/php-book/optimizing-debugging-php.php
http://developer.yahoo.com/performance/
http://www.sitepoint.com/article/caching-php-performance

Mejoras de rendimiento
http://www.ibm.com/developerworks/opensource/library/os-php-varnish/

Herramientas de benchmarking (análisis de rendimiento)
Pear::Benchmark. http://pear.php.net/package/benchmark/redirected
Pear::apd http://pecl.php.net/package/apd
Apache ab. Rendimiento del servidor bajo carga simulada. http://httpd.apache.org/docs/2.0/programs/ab.html

SEGURIDAD

Suele ser una gran descuidada pero considero fundamental conocer los mínimos requisitos de seguridad de una aplicación que nosotros podemos controlar.
Una vez más recurrimos a las fuentes: http://es.php.net/manual/es/security.php
En las siguientes webs podréis encontrar información, libros, herramientas relacionadas con la seguridad web: http://www.owasp.com y http://phpsec.org/library/

ESTANDARIZACIÓN. INGENIERÍA DEL SOFTWARE

De lo que se conoce como ingeniería del software (http://es.wikipedia.org/wiki/Desarrollo_de_software) creo que lo más interesante es  conocer  los conceptos de patrones de diseño, UML, gestión de proyectos  y los distintos modelos o paradigmas de programación.
En mi opinión, la ingeniería del software es básicamente un elemento normalizador que permite encauzar la complejidad de la creación de software mediante una serie de técnicas y herramientas más o menos unificadas.

– Patrones de diseño. Son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos basadas en la experiencia y que se ha demostrado que funcionan.
El artículo de http://www.programacion.net/java/tutorial/patrones/ aunque se refiera a java es aplicable a cualquier lenguaje de programación.
Yahoo pone a disposición de todos los desarrolladores multitud de patrones que usan para sus propios desarrollos http://developer.yahoo.com/ypatterns/
Los patrones identifican un problema y cómo solucionarlo, pero no cómo implementarlo. No explican como hacerlo. Además permiten estandarizar las soluciones, evitando la “reinvención de la rueda”
A los patrones se les asigna un nombre, lo que permite que sea más fácil identificarlos. Así si yo tengo que resolver un problema de programación, es probable que alguien haya encontrado una solución genérica a dicho problema, le haya puesto un nombre y sea considerada como un patrón de diseño. Si lo conozco de antemano, sólo deberé aplicar dicho concepto y conseguiré dos ventajas: podré en centrarme en cómo desarrollar la solución en el lenguaje que use, y estandarizaré la resolución de problemas.

Un ejemplo ficticio muy sencillo:
Patrón de diseño llamémoslo energía motor vehículo.
Problema: Cómo hacer que el motor de un coche funcione.
Solución: Necesito energía, un depósito donde almacenarla y unas sistema de transporte para llevarla hasta el motor.

Este patrón nos serviría como base para crear sistemas energéticos de alimentación de motores por gasolina, gasoil, biodiesel, eléctrico, etc. Los diseñadores se centrarían en cómo realizarlo partiendo de este concepto.

Un ejemplo real de diseño es el patrón MVC, muy útil y usado, que divide la estuctura de programación en tres capas: modelo, vista y controlador. Cada una de ellas se encarga de gestionar una parte del sistema. Se comunican entre ellas y permiten hacer una separación de la lógica de la programación, del acceso a datos y de la forma de presentar la información.

Importante: Un patrón sólo sirve como directriz básica, no es la solución concreta. Vamos, que no son cortar y pegar, pero que sí que permite, por ejemplo, que programadores creen  clases, funciones basadas en estos patrones y que sí sean reutilizables facilmente.

Lenguaje de modelado de datos UML. http://www.clikear.com/manuales/uml/index.aspx
Permite representar y documentar un sistema de software utilizando diversos diagramas.
Nos permite poner en papel lo que vamos a realizar, organizando y documentando todas esas maravillosa ideas que vamos teniendo. Además lo hace de un modo estándar.

Gestión de proyectos. Todo proyecto software exige de una planificación de tiempo realista que permita llevarlo a buen puerto. Este tema es de los más complejos puesto que los factores que intervienen son muchos y variados, aunque básicamente son dos los principales: tiempo y dinero.
Realmente un desarrollador no se encarga de estos temas, para ello están los jefes de proyecto. Lo que sí considero que se debe tener en cuenta es lo siguiente:
Que en un proyecto pueden intervenir muchas personas, directa o indirectamente.
En el lado del cliente podemos tratar con un gerente, con directivos, con informáticos, con usuarios más o menos avanzados, con técnicos, con intermediarios (es decir, tú le haces un trabajo a una empresa que luego lo vende a una tercera utilizando su propio nombre).
En el lado de la empresa desarrolladora están los programadores puros y duros, analistas, la gente de sistemas , los programadores multifunción (que hacen de todo, desde el análisis al desarrollo hasta la gestión de sistemas), los jefes de proyecto, los gerentes, los jefes, los diseñadores, etc. Cuanto mayor es la empresa, en teoría, más gente se ve implicada en el proyecto. Como muchas empresas son pequeñas, los papeles comienzan a entremezclarse, y si eres freelance (autónomo en castellano puro) te encargas de todos ellos.

Paradigmas de programación. La ingeniería de software tiene varios modelos  de desarrollo en los cuales se puede apoyar para la realización de software.
El modelo tradicional denominado en cascada o clásico es aquel basado en una estructura más o menos rígida de análisis-diseño- implementación – implantación – mantenimiento.
Existen muchos otros modelos, pero actualmente se habla mucho de los RAD (desarrollo rápido de aplicaciones), metodologías ágiles y XP (extreme programming) que fundamentalmente pretenden acelerar el desarrollo de proyectos  solapando las distintas fases de los mismos sin menoscabo de la calidad, mediante el uso de herramientas de análisis, la creación de prototipos y sobre todo de fomentar la implicación del cliente en el proyecto y la comunicación cliente-desarrollador, usando para todo ello una serie de procesos identificados y claros.

Metodología y fundamentos de programación. Soy de los que cree que saber programar es saber pensar en cómo resolver problemas y no sólo en conocer tal o cuál lenguaje.
Un buen programador debería ser capaz de adaptarse a un nuevo lenguaje fácilmente (… con esfuerzo eso sí).
Esto significa que conocer algunos algoritmos básicos y estructuras de datos tiene su importancia. http://www.algoritmia.net/ . Sinceramente, se puede programar sin conocerlos, puesto que muchos de ellos ya están implementados dentro de las funciones de los propios lenguajes, pero conocerlos te prepara para enfrentarte a nuevos problemas y crea un vocabulario común.

Principios de diseño html propugandos por la W3C (World Wide Web Consortium), el organismo internacional formado por las principales empresas relacionadas con las tecnologías de la información y que permite estandarizar la web mediante propuestas que más tarde se adoptan en el desarrollo, entre otras cosas, de navegadores web. http://www.w3.org/TR/html-design-principles/

OTRAS TECNOLOGÍAS – CONCEPTOS  A CONOCER

– HTML 4. Tutorial de html: http://html.conclase.net/tutorial/html/4/5
Recurriendo a las fuentes(W3C): Especificación de HTML  http://www.w3.org/TR/html4/
En estado de borrador se encuentra la versión X/HTML5, lo que parece será el futuro de html-xhtml http://www.w3c.es/Prensa/2008/nota080122_html5 –   http://www.w3.org/html/wg/html5/

– XHTML 2.0 Especificación más moderna de html basada en xml, que se diferencia de ésta básicamente en que pretende dotar a los documentos de una estructura más estandar y libre de errores puesto que exige de una validación previa .
http://www.w3.org/TR/xhtml2/

– CSS

– JAVASCRIPT

-AJAX.

– Base de datos mysql http://www.mysql-hispano.org/page.php?id=45&pag=1

ORM (Object Relational Mapper) . Permite trabajar sobre  bases de datos  relacionales utilizando capas de abstracción y de un modo orientado a objetos. Existe un proyecto en php llamadad Doctrine

-DHTML

-XML

-RSS, sindicación de contenidos

– SOAP

-SQL

-SQLITE

– ADOBE FLEX

– Usabilidad. Fundamentalmente significa que el interfaz de usuario, la parte del software que el usuario realmente ve, debe seguir una serie de pautas dirigidas a que las sensaciones que experimente a la hora de manejar el programa sean lo más satisfactorias posible. Es decir, que se sienta cómodo con el diseño, que sea claro y sencillo, que sea fácil de manejar y lo más intuitivo posible, que sea similar en funcionamiento a otras aplicaciones que ya haya usado, que sea rápido, que siempre sepa en qué parte de la aplicación se encuentra. En definitiva, orientar el software al usuario final.

El tema es fácil de exponer pero no lo es tanto llevarlo a la práctica http://es.wikipedia.org/wiki/Usabilidad

– Web semántica.

– Web 2.0

– URLS amigables

– Plugins de Firefox: Web developer, firebug etc

DISEÑO WEB

Páginas que cuentan qué debemos hacer y qué no a la hora de diseñar una página
http://www.webtaller.com/maletin/articulos/15-consejos-diseno-web.php
http://www.dailyblogtips.com/43-web-design-mistakes-you-should-avoid/

DONDE ENCONTRAR MÁS INFORMACION

– Tutoriales sacados de internet
– Artículos de internet
– Libros gratutitos http://www.computer-books.us/php.php
– Revistas
– Foros
– Chats
– Suscríbete a listas de correo
– Colabora en los debates que se plantean en los distintos blogs
– Usa un lector de rss o utiliza igoogle (página personalizada de inicio de google) para ir añadiendo los feeds que más te interesen sobre el tema.
– Libros. Editoriales como Oreilly,Packt Publishing, Prentice Hall, Sitepoint tienen catálogos extensisimos de libros sobre php
– Acude a bibliotecas. En muchas de ellas, sobre todo si son universitarias, tiene libros que podrían interesarte.
-Aprende de lo que hacen los demás. Revisa el código hecho por otros. No pierdas el tiempo viendo cualquier código, comprueba antes que el código merece la pena ser analizado.
– Amigos

Zend proporciona un sistema de certificación en php http://www.zend.com/en/services/certification/

WEBS DE REFERENCIA

http://www.hotscripts.com
http://www.phpclasses.com
http://www.maestrosdelweb.com/
http://www.versioncero.com/
http://www.tufuncion.com
http://www.barrapunto.org
http://www.devshed.com
http://www.programacion.net
http://www.sitepoint.com
http://www.phparch.com

FIN

Son bienvenidas todas vuestras aportaciones, correcciones, opiniones,discrepancias, dudas etc que permitan hacer crecer este pequeño documento .

septiembre 17, 2008 at 9:14 pm 2 comentarios

Trucos para acelerar Windows XP

Resumen y traducción libre del sitio 23 Ways to speed winxp

  1. Actualmente, con discos SATA, Ultra-133 y con cachés de 8M  defragmentar no es ya significativo el hacerlo
  2.  Invertir en memoria RAM
  3. Que el sistema de ficheros sea NTFS. Si es FAT32 podemos convertirlo con la herramienta que lleva el propio windows (Abrir la linea de comandos y ejecutar CONVERT C: /FS:NTFS )
  4. Deshabilitar que IndexServer “indice” el disco. MiPC > C:  > Botón derecho- Propiedades > Desmarcar Permitir a IndexServer …
  5. Actualizar los drivers de la placa base y del BIOS
  6. Borrar la carpeta de Windows Prefetch de vez en cuando
  7. Realizar una limpieza mensual del disco MiPC > C:  > Botón derecho- Propiedades > Liberar espacio en disco
  8. Tener activado el DMA en los discos(por defecto lo está) . Pulsar tecla WIndows + tecla Pausa > Seleccionar pestaña Hardware > Administrador de dispositivos > Controladoras IDE
  9. Cambia los cables de los discos(80-wire Ultra-133)  y conéctalos correctamente
  10. Elimina el spyware (SpyBot Search & Destroy.)
  11. Elimina todos los programas del arranque. Usa msconfig desde  Inicio > ejecutar (o tecla de Windows + R)
  12. Elimina todos los programas que no vayas a necesitar
  13. Quita todos los efectos de ventanas que ralentizan el sistema.  Pulsar tecla WIndows + tecla Pausa > Seleccionar pestaña Opciones Avanzadas > Rendimiento – configuracion y Ajustar para obtener el mejor rendimiento
  14. Usar los trucos de tweakxp para mejorar el rendimiento tocando el registro de Windows.
  15. Tener el sistema operativo actualizado
  16. Usar sólo un software antivirus y tenerlo actualizado
  17.  No tener más de 500 fuentes de texto instaladas
  18. No particionar el disco.  NTFS gestiona mejor un disco grande que varias particiones
  19. Usar software como MemTest86 para comprobar si su memoria RAM no tiene errores
  20. Actualizar el firmware de la grabadora de CD / DVD
  21. Desactivar servicios innecesarios. Visitar  Black Viper site

septiembre 2, 2008 at 10:28 pm Deja un comentario

Software de monitorización de redes

Proyectos de software libre para la gestión de redes:

En el lado del software propietario podemos echarle un vistazo a :

Permiten monitorizar la mayoría de características de una red informática y de los elementos que la componen, desde la red más simple a la más heterogénea.

Nos permiten conocer:

  • Tamaño en disco de particiones.
  • Uso de CPUs
  • Controlar servidores y workstations
  • Uso de ancho de banda
  • Estado de aplicaciones, bases de datos, servidores web
  • Utilización de traps SNMP (v1,2,3) de cualquier tipo de dispositivo, uso de MIBS
  • Alertas por SMS, jabber, correo electrónico
  • Gráficos de estado de la red
  • Información de análisis de tráfico de routers, firewalls etc
  • Ejecución de pings, tiempos de respuesta
  • Obtención de información de máquinas Windows, Unix, etc
  • Descubrimiento de nodos en rangos IP
  • Estadísticas de toda la información generada
  • etc, etc, etc

Se basan en arquitecturas cliente-servidor en las que el servidor nos facilita un interfaz web para poder mostrar la información de estado de las redes y para poder configurar lo que vayamos a monitorizar.

Se pueden instalar agentes en las máquinas clientes que deseemos  observar y que se comunicarán con el servidor de diversas formas (ssh, ftp, etc)

Vamos, una joya de software para administradores de redes que quieran estar al tanto de la “salud” de sus entornos informáticos de trabajo.

Relacionado con esto aconsejo estudiar temas de SNMP y MIBS para sacarle todo el partido posible.

agosto 20, 2008 at 12:45 am 2 comentarios

Entradas antiguas


Categorías

Feeds