<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>ITECH Blog</title>
	<atom:link href="http://enterx.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://enterx.wordpress.com</link>
	<description>Entrañas Sistemáticas</description>
	<lastBuildDate>Mon, 23 Nov 2009 14:39:30 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='enterx.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/98b02139d2e30bb949cfb1d6173e68a2?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>ITECH Blog</title>
		<link>http://enterx.wordpress.com</link>
	</image>
			<item>
		<title>Dispositivos Perifericos Peligrosos (Adaptadores)</title>
		<link>http://enterx.wordpress.com/2009/11/23/dispositivos-perifericos-peligrosos/</link>
		<comments>http://enterx.wordpress.com/2009/11/23/dispositivos-perifericos-peligrosos/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 14:00:38 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Noticia]]></category>
		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=670</guid>
		<description><![CDATA[Leyendo un correo veo que tenemos la existencia de un dispositivo que podria hacer las funciones de un pendrive pero de forma mas sotisficada. Un puente entre el teclado y su conexion al equipo, el cual obviamente cumple con la tarea de capturar y guardar en su memoria cada una de las teclas pulsadas. Ingreso [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=670&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Leyendo un correo veo que tenemos la existencia de un dispositivo que podria hacer las funciones de un pendrive pero de forma mas sotisficada. Un puente entre el teclado y su conexion al equipo, el cual obviamente cumple con la tarea de capturar y guardar en su memoria cada una de las teclas pulsadas. Ingreso de datos limpios o planos que seria obtenidos directamente de nuestros dedos antes de llegar al sistema y ser encriptados por cualquier programa.</p>
<p><span id="more-670"></span></p>

<a href='http://enterx.wordpress.com/2009/11/23/dispositivos-perifericos-peligrosos/image001/' title='image001'><img width="150" height="143" src="http://enterx.files.wordpress.com/2009/11/image001.jpg?w=150&#038;h=143" class="attachment-thumbnail" alt="" title="image001" /></a>
<a href='http://enterx.wordpress.com/2009/11/23/dispositivos-perifericos-peligrosos/image002/' title='image002'><img width="150" height="131" src="http://enterx.files.wordpress.com/2009/11/image002.jpg?w=150&#038;h=131" class="attachment-thumbnail" alt="" title="image002" /></a>

<p>Login y password de correos, de cuentas de cualquier tipo, datos bancarios, conversaciones, etc. Este riesgo estaria principalmente en lugares publicos como cibercafes y todo PC que se preste para mas de una persona. De este dispositivo solo escaparian las laptops siempre y cuando se use su propio teclado y equipos con tecnologia touch (tacto en pantalla).</p>
<p>Obviamente sabemos que lo peor que una persona puede hacer es acceder a webs de bancos en lugares publicos, e igual para ver el correo.</p>
<p>Con un dispositivo como este, siempre y cuando existan otras personas que tengan alcance de uso de un equipo que usemos bien sea nuestro o porque tambien tenemos acceso a el, chequear antes en la conexion de teclado que no exista ningun dispositivo de puente entre la conexion de teclado con el equipo.</p>
<p>Y esto sin dejar por fuera los peligros de siempre, software que recuperen el cache del navegador, paginas falsas (como la de Banesco, casi identica proveniente de un servidor en Miami por lo que he oido) el cual fue rastreado y tumbado. Cualquier persona podria dejar troyanos en pendrive de bajo costo y dejarlos a la vista para que alguien tarde o temprano los conecte a algun equipo en alguna empresa o pc domestico.</p>
<p>Este dispositivo del teclado es ingenioso, no importa que tanta seguridad de software haya en el equipo, esto es informacion obtenida antes de ingresar los datos al sistema, con llegar a un lugar y sin que nadie lo note, lo colocarian y luego de varios dias lo retirarian, ya muchos hackers y embaucadores (y porque no, la policia claro para investigacion de sospechosos) deben estar buscando o ya disponer quien sabe desde cuando y cuantas veces ya se haya usado, varios de estos y quien no conoce de PCs pero si los usa aun viendolo, no sabria que es y consideraria que simplemente es una parte o conexion mas del equipo, total y completamente normal y al ver que han obtenido sus datos, las averiguaciones apuntarian a reinstalar software, formatear el equipo, tratar de eliminar virus, troyanos, backdoor, sin saber que la verdadera puerta trasera fue otra que nunca considerarian.</p>
<p>Considero que este dispositivo no es nuevo, ya que se habrian tardado mucho en inventarlo, tal vez, solo es ahora que sale mas a la luz para quienes lo vamos conociendo en estos momentos y estar mas alertas y pendientes del equipo que usemos para cosas delicadas de solo y unicamente, nuestro interes.</p>
<p>Porque este dispositivo pasaria desapercibido tan facilmente? no solo por quienes no conocen mucho de los PCs y sus perifericos, sino porque hoy en dia sabemos que ya existen puentes de los perifericos. Conectores de PS/2 a USB e inversamente y los hemos usado. Quien dice que no sea posible disenar uno que si haga el puente que necesitamos y que ademas venga con una utilidad agregada que no desea nadie excepto personas ajenas, quien dice que nadie sea capaz de hasta incluirlo en la propia conexion (unida de cable) del mismo periferico, dichos fabricantes de teclado serian arrestados a no ser que alguien logre fabricar el cable y adaptarselo reemplazando el original. Suena exageradamente paranoico y loco, pero verdaderamente imposible, claro que no lo es, que tenga exito es posible asi que quien no lo intentaria?.</p>
<p>Este dispositivo seria raro que tenga alguna funcion al ver su conector de PS/2 a PS/2 pero uno de PS/2 a USB y viceversa, quien consideraria que recupera informacion propia del teclado?, nadie o muy poca gente.  El &#8220;unico&#8221; inconveniente seria tener acceso y alcance al equipo de poner/quitar el dispositivo, no tomaria mas de 1 segundo hacerlo, con algo asi no hay que preocuparse por software que detecte otros softwares, script que se salten sistemas firewall, abran puertos, rastreo remoto de a donde va la informacion, etc. Esto es hardware espia de buen desempeno y de buenos resultados.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/670/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/670/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/670/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=670&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/11/23/dispositivos-perifericos-peligrosos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>
	</item>
		<item>
		<title>Comandos Peligrosos de Linux</title>
		<link>http://enterx.wordpress.com/2009/11/17/comandos-peligrosos-de-linux/</link>
		<comments>http://enterx.wordpress.com/2009/11/17/comandos-peligrosos-de-linux/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 03:40:36 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[Diario de hoy]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=663</guid>
		<description><![CDATA[Algo que se nos pasa por alto a quienes nos iniciamos en Linux es el no buscar y conocer sobre los comandos que pueden destrozar el sistema y nos haga pasar 1 o 2 dias enteros volviendo a instalar y dependiendo si eres alguien algo cuidadoso que hace respaldos, dependiendo de ello, el volver a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=663&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Algo que se nos pasa por alto a quienes nos iniciamos en Linux es el no buscar y conocer sobre los comandos que pueden destrozar el sistema y nos haga pasar 1 o 2 dias enteros volviendo a instalar y dependiendo si eres alguien algo cuidadoso que hace respaldos, dependiendo de ello, el volver a tener o no tu informacion.</p>
<p>Sabemos que todo usuario Linux tarde o temprano debe abrir la terminal, siendo esta una parte MUY poderosa del sistema operativo y lo que escribamos en ella podria ser igual como escribir en piedra. Puede haber comandos que hagan un reverso pero realmente no todo es asi.</p>
<p><span id="more-663"></span></p>
<p>Linux es un sistema poderoso el cual si no lo sabemos tratar, puede reducirse a nada por culpa del mismo usuario mas que todo. Debe tenerse MUCHO cuidado cuando se recurre a la terminal, pero esta precaucion es cuando se recurre a comandos ALTAMENTE PELIGROSOS del sistema, existen otros comandos que no son ningun peligro para el sistema operativo, la cuestion es saber cuales si y cuales no.</p>
<p>Por ejemplo, supongamos que vas a borrar una subcarpeta que esta fuera de tu home de usuario, ya sabes que debes recurrir a privilegios adinistrativos, incluso hasta podria ser una subcarpeta de tu home de usuario la que deseas borrar, si ejcutas algo como por ejemplo rm -R /carpeta1/carpeta2/carpeta3 pero que ocurre sin antes de terminar de escribir /carpeta3 descuidadamente pulsas la tecla Enter, ya que tal vez querias pulsar la tecla Shif que esta debajo de la tecla Enter o la tecla que esta arriba de Enter. Para este ejemplo, terminas borrando a carpeta2 el cual contenia a carpeta3 pero a muchas otras carpetas y archivos, y lo que borres en la terminal no lo conseguiras luego en ninguna papelera de reciclaje. La terminal no te preguntara si realmente estas seguro si deseas ejecutar o no, mucho de lo que escribas en la terminal y mandes a ejecutar, se ejecutara sin preguntarte nada. Existen programas que una vez instalados pueden ayudarte como el <a href="http://es.wikipedia.org/wiki/Midnight_Commander"><strong>mc</strong></a> u algun otro donde si por descuido no terminaste de escribir toda la larga instruccion y sin quere pulsaste Enter borrando lo que no era, dicha informacion (carpetas o archivos) pasan a un .trash o si pueden ser recuperados de alguna forma. Asi que si aun no tienes nada que pueda revertir lo que hagas en la terminal, te aconsejo que vayas buscando para estar mas tranquilo con lo que escribes en la terminal, sobre todo para muchos que escribimos rapido y ni vemos el teclado al hacerlo.</p>
<p>Por internet se repite mucho unos comandos que se aconseja por nada del mundo aplicar a menos que desees destruir tu sistema linux, dichos comandos son los citados a continuacion:</p>
<p>rm -rf /<br />
Este comando borrará de manera recursiva y convincente todos los archivos en el directorio raíz.</p>
<p>mkfs.ext3 /dev/sda<br />
Este comando formatea la partición que se menciona después de mkfs.</p>
<p>any_command &gt; /dev/sda<br />
Este comando provoca perdida total de datos, en la particion que se menciona en el comando.</p>
<p>mv /home/tu-carpeta-home/* /dev/null<br />
Este comando va a mover todo el contenido de tu carpeta Home a un directorio que no existe, esto significa que ya nunca volverás a ver tus archivos.</p>
<p> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> ){:|:&amp;};:Una bomba fork que satura la tabla de procesos del sistema, fácilmente evitable.</p>
<p>Otros comandos como el <strong>dd </strong>para particiones o redimenciones del disco que es usado tambien para respaldos, imagenes de disco, es muy peligro usarlo si no se indica correctamente lo que se desea, obviamente un usuario linux al recurrir a comandos tan peligrosos como los mencinados, deberia respaldar toda su informacion antes de intentar algo.</p>
<p>En mi caso ya me toco vivir una experiencia bien desagradable en un canal IRC donde por querer ayudar a un usuario a confirmarle un supuesto bug de Ubuntu 9.10 donde al parecer al matar un proceso de pulse-audio se le cambiaba el theme del sistema, colabore en una serie de pasos para recrear o presenciar dicho bug. Una cosa a hacer era agregar mi usuario a un grupo, pero el usuario que indico la instruccion le falto un agregado <strong>-a</strong> en la instruccion de todo el comando. Debo decir que la culpa fue tanto suya como mia obviamente.</p>
<p>Este usuario me indico aplicar un <strong>sudo usermod -G grupo miusuario</strong> pero resulta que si consultamos el manual de este comando tenemos esta informacion:</p>
<p><em>If the user is currently a member of a group which is not listed, the user will be removed from the group. This behaviour can be changed via the -a option, which appends the user to the current.</em></p>
<p>Esto informa que si el usuario es actualmente miembro de un grupo que no esta en la instruccion, el usuario sera eliminado de dicho grupo, para que esto no pase debe agregarse <strong>-a</strong> en las opciones del <strong>usermod</strong> asi nuestro usuario se anexara al nuevo grupo y tambien seguira en sus demas grupos, sino de lo contrario nuestro usuario se borrara de todos los demas grupos de usuarios en los que este presente. Al no poner <strong>-a</strong> en las opciones de <strong>usermod</strong> se borra todos nuestros grupos y deja solo el que le hemos pasado por <strong>-G</strong> y obviamente ya con esto muchas cosas dejan de funcionar. Que cosas dejan de funcionar? el <strong>sudo </strong>ya no nos sirve de nada obteniendo una informacion por la terminal de: <strong>is not in the sudoers file. This incident will be reported.</strong> Esto nos llevara a tener que iniciar el sistema por un recovery o en el peor de los casos reinstalar el sistema nuevamente, no es que sea la primera opcion pero existen personas que pueden quedarse intranquilas con dudas si estan en todos los grupos que estaban antes, si agregar o no nuestro usuario al grupo root es correcto, etc, prefiriendo posiblemente reinstalar el sistema para saber que las cosas vuelvan a estar como el mismo sistema nos las puso.</p>
<h3>Consejos:</h3>
<p>1. No escribas tan alegremente y tan confiadamente todo lo que te indiquen que hagas en los canales IRC, sabemos que mucha gente desea ayudar, pero existe otra poca gente que tal vez no, ya sea por descuido o por intencion. Al menos una vez en un canal irc llegue a leer como le indicaban a alguien usar el comando <strong>rm</strong> (comando de borrado) para algo que no era. Mi caso fue un descuido de quien indico el comando y otro descuido de mi parte no coroborar la instruccion.</p>
<p>2. Todo comando que te indiquen aplicar bien sea en un foro o canal de chat irc, confirmalo revisando su manual: !man comando.</p>
<p>3. De ser posible y mejor, instala Virtual Box y levanta un sistema virtual igual a tu host anfitrion y que sea ahi donde hagas todas esas pruebas, en caso de reventar el sistema, no seria originalmente el tuyo sino uno virtual para pruebas.</p>
<p>4. Recuerda cuales podrian ser los comandos peligrosos, incluso los que no podrian serlo pero que con opciones indevidas o faltantes (como en mi caso) terminan danando las cosas, y esos son platos rotos que siempre recogeremos nosotros, sea culpa de otros, nuestras o en parte de ambos.</p>
<p>Bien sea por las buenas o mas por las malas, Linux nos recuerda que es un sistema delicado al cual si no lo sabemos tratar como se le debe, terminaremos lamentandolo por el tiempo que nos tome volver a acomodar las cosas, la Terminal de Linux es algo que se debe de respetar igual como el Synaptic donde no se puede desintalar toda aplicacion que consideremos porque el nombre de un programa que deseamos quitar este en muchas partes.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/663/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/663/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/663/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=663&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/11/17/comandos-peligrosos-de-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>
	</item>
		<item>
		<title>Galeria de Imagenes (Spry Dreamweaver CS4)</title>
		<link>http://enterx.wordpress.com/2009/11/07/galeria-de-imagenes-spry-dreamweaver-cs4/</link>
		<comments>http://enterx.wordpress.com/2009/11/07/galeria-de-imagenes-spry-dreamweaver-cs4/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 16:24:36 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[Diseno Web]]></category>
		<category><![CDATA[Dreamweaver]]></category>
		<category><![CDATA[Software Propietario]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=640</guid>
		<description><![CDATA[Esta es una practica en Dreamweaver CS4 donde usare las herramientas de Spry que no estan presentes en versiones no CS de Dreamweaver, esta practica tiene sus inicios del post que trata el mismo tema de este blog, tema que se encuentra dividido en dos partes parte1 y parte2 pero aqui se tratara completo. La [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=640&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Esta es una practica en Dreamweaver CS4 donde usare las herramientas de Spry que no estan presentes en versiones no CS de Dreamweaver, esta practica tiene sus inicios del post que trata el mismo tema de <a href="http://dwcs3.wordpress.com/">este blog</a>, tema que se encuentra dividido en dos partes <a href="http://dwcs3.wordpress.com/2007/06/06/galeria-de-imagenes-xml-y-spray-1-de-2/">parte1</a> y <a href="http://dwcs3.wordpress.com/2007/06/22/galeria-de-imagenes-xml-y-spray-2-de-2/">parte2</a> pero aqui se tratara completo. La unica continuidad que se anexaria a esta practica seria otro ejemplo algo mas enriquecido o atractivo de mostrar esta interaccion.</p>
<p>La practica a comentar se trata de hacer una pagina html donde mostraremos una imagen en tamano original o ajustado en ancho y alto, imagen la cual tendra un encabezado o titulo y una descripcion al pie. Debajo de esta imagen tendremos otras imagenes en miniatura, que al irla seleccionando se nos cambiara la imagen en tamano mayor por la seleccionada, cargandose la imagen con su titulo y descripcion, esto en todo momento sin en ningun momento refrescar la pagina, lo cual es la idea.</p>
<p><span id="more-640"></span>No soy partidario de un frecuente uso de Dreamweaver, herramienta que agilice la labor de desarrollo web, pero no te permite ser tan programador como lo harias trabajando con un editor o framework de codigo web (html, php, etc..) ya que en Dreamweaver inicialmente partes en modo de disenar todo visualmente y quien realmente programa es la aplicacion, pero que de igual forma quienes trabajan en Dreamweaver estan obligados en ocasiones a manipular e inyectar codigo entre lineas para terminar de retocar lo que se necesita que haga la web. Pero Dreamweaver mete mucha basura o codigo demas el cual necesita para gestionarse a si mismo, donde en ocasiones en caso de presentarse problemas de conexion, algunos simplemente borran y vuelven a hacer sus pasos a punta de click! por medio de las herramientas de dreamweaver y algunos otros revisando y corrigiendo el codigo (en caso de entenderlo y saber que estan buscando y donde mirar).</p>
<p>Vamos a hacernos una pagina XML la cual contendra el titulo, el nombre del archivo de imagen y la descripcion de la imagen, ese archivo XML sera del que un dataset de Spry se vinculara o relacionara, y estos objetos de Spry en nuestra pagina html sera lo que nos mostrara esta galeria de imagenes.</p>
<p>Usa o baja de internet algunas imagenes y creamos el archivo xml (por ejemplo):</p>
<pre>&lt;imagenes&gt;
  &lt;item id="1"&gt;
     &lt;titulo&gt;Titulo de la imagen 1&lt;/titulo&gt;
     &lt;imagen&gt;img1.jpg&lt;/imagen&gt;
     &lt;parrafo&gt;Descripcion de la imagen 1.&lt;/parrafo&gt;
  &lt;/item&gt;
<pre>  &lt;item id="2"&gt;
     &lt;titulo&gt;Titulo de la imagen 1&lt;/titulo&gt;
     &lt;imagen&gt;img2.jpg&lt;/imagen&gt;
     &lt;parrafo&gt;Descripcion de la imagen 1.&lt;/parrafo&gt;
  &lt;/item&gt;

  &lt;item id="3"&gt;
     &lt;titulo&gt;Titulo de la imagen 1&lt;/titulo&gt;
     &lt;imagen&gt;img3.jpg&lt;/imagen&gt;
     &lt;parrafo&gt;Descripcion de la imagen 1.&lt;/parrafo&gt;
  &lt;/item&gt;

  &lt;item id="4"&gt;
     &lt;titulo&gt;Titulo de la imagen 1&lt;/titulo&gt;
     &lt;imagen&gt;img4.jpg&lt;/imagen&gt;
     &lt;parrafo&gt;Descripcion de la imagen 1.&lt;/parrafo&gt;
  &lt;/item&gt;

  &lt;item id="5"&gt;
     &lt;titulo&gt;Titulo de la imagen 1&lt;/titulo&gt;
     &lt;imagen&gt;img5.jpg&lt;/imagen&gt;
     &lt;parrafo&gt;Descripcion de la imagen 1.&lt;/parrafo&gt;
  &lt;/item&gt;

  &lt;item id="6"&gt;
     &lt;titulo&gt;Titulo de la imagen 1&lt;/titulo&gt;
     &lt;imagen&gt;img6.jpg&lt;/imagen&gt;
     &lt;parrafo&gt;Descripcion de la imagen 1.&lt;/parrafo&gt;
  &lt;/item&gt;
</pre>
<p>&lt;imagenes&gt;</pre>
<p>Como ya ves, tu mismo creas o te inventas la sintaxis en un XML, ya que podria poner &lt;pepe&gt; y mientras haya un &lt;/pepe&gt; despues, se entendria que es la apertura y cierre de llaves de un objeto contenedor de algo, lo de &lt;item&gt; puede haberse puesto cualquier cosa, tambien en vez de &lt;imagenes&gt;&lt;/imagenes&gt; pudimos haber puesto &lt;fotografias&gt;&lt;/fotografias&gt; si quisiesemos y &lt;parrafo&gt;&lt;/parrafo&gt; por alguna otra cosa &lt;descripcion&gt;&lt;/descripcion&gt;, ojala fuese asi en todos los lenguajes, pero habria un libre albedrio donde no se respetaria nada standar o default y tal vez no seria bueno, donde sin importar si yo hablo espanol, y otras personas ingles o chino mandarin, la sintaxis seria igual y no tanto al gusto de cada quien, solo la estructura organizacional del algoritmo pero no su sintaxis.</p>
<p>Ok, ya tenemos algunas imagenes en una carpeta dentro de nuestra carpeta del proyecto web, algunas personas meten todo lo que sea imagenes en una sola y misma carpeta imagenes o image o img (como la desees llamar) pero lo correcto o deber ser es separar o agrupar las imagenes, si tienes imagenes de un evento, guardalas en imagenes/eventoX/asi tendras organizadas las imagenes y no revueltas en la carpeta raiz de imagenes con muchas otras, es mejor trabajar organizadamente.</p>
<p>Creamos ahora un archivo html (migaleria.html o galeria.html) o como gustes llamarla y nos pasamos a la barra de herramientas de Spry (spry son las herramientas de AJAX que ya Dreamweaver CS nos brinda), CS3 y CS4 lo tienen, pero desconozco si CS2, y CS ya lo hayan tenido incluido, versiones previas a CS no disponen de estas herramientas spry.</p>
<p>﻿Selecionamos conjunto de datos spry para llamar al xml:<a href="http://enterx.files.wordpress.com/2009/11/img12.jpg"><img class="aligncenter size-full wp-image-643" title="img1" src="http://enterx.files.wordpress.com/2009/11/img12.jpg?w=478&#038;h=56" alt="img1" width="478" height="56" /></a></p>
<p>Seleccionamos el tipo de datos el cual sera XML, el dataset lo podemos llamar dsImagenes o como desees y buscamos el archivo XML con el boton Examinar:</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img2.jpg"><img class="aligncenter size-medium wp-image-644" title="img2" src="http://enterx.files.wordpress.com/2009/11/img2.jpg?w=300&#038;h=147" alt="img2" width="300" height="147" /></a></p>
<p>Pulsamos el boton Listo o Done (dreamweaver en ingles o espanol).</p>
<p>Fijemosno en algo un momento, me ha pasado que al hacer esto del xml al cerrar la ventana indicada previamente termino viendo en el menu derecho (seccion Vinculaciones) de Dreamweaver lo del xml pero incompleto:</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img3.jpg"><img class="aligncenter size-full wp-image-645" title="img3" src="http://enterx.files.wordpress.com/2009/11/img3.jpg?w=242&#038;h=213" alt="img3" width="242" height="213" /></a>En este menu nos faltan <strong>titulo</strong>, <strong>imagen</strong> y <strong>parrafo</strong> los cuales vamos a usar, desconozco porque pasa esto, asi que de no estar completa la lista, en esta ventanita donde vemos el boton + y el &#8211; selecionamos nuestro dataset dsImagenes y pulsamos el boton del signo &#8211; para eliminarlo y lo volvemos a hacer por el boton de la barra o por el signo +.  En esta ocasion en la que volvemos a hacer lo del dataset spry con nuestro XML, seleccionamos item y cerramos la ventana (boton Listo).</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img4.jpg"><img class="aligncenter size-medium wp-image-646" title="img4" src="http://enterx.files.wordpress.com/2009/11/img4.jpg?w=300&#038;h=142" alt="img4" width="300" height="142" /></a></p>
<p>Ahora si ya vemos los objetos spry relacionados a nuestro archivo xml que nos faltaban anteriormente:</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img5.jpg"><img class="aligncenter size-full wp-image-647" title="img5" src="http://enterx.files.wordpress.com/2009/11/img5.jpg?w=238&#038;h=250" alt="img5" width="238" height="250" /></a>No se porque pasa esto pero si no tenemos todos los &lt;objeto&gt; del xml presentes, no podremos seguir con la practica.</p>
<p>Ahora vamos a colocar una <strong>region de spry</strong> en nuestra pagina html:</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img6.jpg"><img class="aligncenter size-full wp-image-648" title="img6" src="http://enterx.files.wordpress.com/2009/11/img6.jpg?w=483&#038;h=55" alt="img6" width="483" height="55" /></a></p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img7.jpg"><img class="aligncenter size-medium wp-image-649" title="img7" src="http://enterx.files.wordpress.com/2009/11/img7.jpg?w=300&#038;h=143" alt="img7" width="300" height="143" /></a></p>
<p>Esta region spry podria ser a entender, como algo parecido a cuando colocamos una region de formulario &lt;form&gt; y demas cosas de formulario dentro, un contenedor donde solo ahi dentro puede coexistir los demas objetos Spry para su correcto o rganizado funcionamiento.</p>
<p>Vamos a arrastrar a la region spry el objeto imagen de la lista donde tenemos los objetos del xml hacia esta region.</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img8.jpg"><img class="aligncenter size-medium wp-image-650" title="img8" src="http://enterx.files.wordpress.com/2009/11/img8.jpg?w=300&#038;h=90" alt="img8" width="300" height="90" /></a></p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img9.jpg"><img class="aligncenter size-medium wp-image-651" title="img9" src="http://enterx.files.wordpress.com/2009/11/img9.jpg?w=300&#038;h=98" alt="img9" width="300" height="98" /></a></p>
<p>Ahora tendremos que manipular un poco el codigo, ya que este objeto spry {imagen} lo necesitamos como un objeto de imagen, sino, los que nos mostrara la pagina al cargarla sera el nombre del archivo.jpg y no la imagen.</p>
<p>Tenemos esto:</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<pre>
<pre>&lt;body&gt;
&lt;div spry:region="dsImagenes"&gt;{imagen}&lt;/div&gt;
&lt;/body&gt;</pre>
</pre>
<p>Y lo cambiamos a esto: (agregamos el &lt;img src=&#8230;{imagen}&gt; para que el objeto sea de tipo imagen)</p>
<pre>&lt;body&gt;
&lt;div spry:region="dsImagenes"&gt;&lt;img src="../proyectoweb/img/img1/{imagen}" /&gt;&lt;/div&gt;
&lt;/body&gt;</pre>
<p>Si cargamos nuestra pagina html ya deberia verse al menos la primera imagen de la galeria, ahora vamos a colocarle su <strong>titulo</strong> y su <strong>descripcion</strong> provenientes de nuestro archivo xml.</p>
<p>Al codigo le agregamos dos lineas, una antes de nuestro &lt;div&#8230;&gt;&lt;/div&gt; y otra luego de esa linea, quedando asi:</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">&lt;body&gt;</span></span></pre>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>&lt;h1 spry:detailregion="dsImagenes"&gt; </strong></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><em>aqui falta algo</em></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong> &lt;/h1&gt;</strong>
&lt;div spry:region="dsImagenes"&gt;&lt;img src="../pgaleria/img/img1/{imagen}" /&gt;&lt;/div&gt;<strong>
&lt;p spry:detailregion="dsImagenes"&gt; </strong></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><em>aqui falta algo</em></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong> &lt;/p&gt;</strong>
&lt;/body&gt;
</span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> </span></span></pre>
<p>Con un &lt;h1&gt;&lt;/h1&gt; vamos a colocarle su encabezado o titulo a la imagen y con un simple &lt;p&gt;&lt;/p&gt; de parrafo su descripcion debajo de la imagen, con <strong>spry:detailregion=&#8221;nuestro_dataset&#8221;</strong> como se observa en el codigo arriba, solo nos falta bien sea escribirlo o arrastrar del menu de los objetos spry del xml lo que va en <em>aqui falta algo</em>.</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img10.jpg"><img class="aligncenter size-medium wp-image-652" title="img10" src="http://enterx.files.wordpress.com/2009/11/img10.jpg?w=300&#038;h=164" alt="img10" width="300" height="164" /></a>El codigo quedaria entonces asi:</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">&lt;body&gt;</span></span></pre>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">&lt;h1 spry:detailregion="dsImagenes"&gt; </span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>{dsImagenes::titulo}</strong></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> &lt;/h1&gt;
&lt;div spry:region="dsImagenes"&gt;&lt;img src="../pgaleria/img/img1/{imagen}" /&gt;&lt;/div&gt;
&lt;p spry:detailregion="dsImagenes"&gt; </span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>{dsImagenes::parrafo}</strong></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> &lt;/p&gt;
&lt;/body&gt;</span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> </span></span></pre>
<p>Si volvemos a cargar la pagina html en nuestro navegador veremos que ahora con la imagen tenemos su titulo y su descripcion (de esa imagen) proveniente de nuestro archivo xml.</p>
<p>Ahora antes del &lt;/body&gt; vamos a agregar otra linea algo mas larga, la cual es esta:</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">&lt;img src="img/img1/</span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>{imagen}</strong></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">" class="thumb" title="</span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>{titulo}</strong></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">"  onclick="dsImagenes.setCurrentRow('</span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>{dsImagenes::ds_RowID}</strong></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">')"
onmouseover="MM_effectAppearFade(this, 500, 50, 100, true)" onmouseout="MM_effectAppearFade(this, 500, 100, 50, false)" /&gt;</span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> </span></span></pre>
<p>En esta linea o agregado vemos en negrita los objetos spry de nuestro xml, si cargamos nuevamente la pagina veremos que ahora debajo aparecen las demas imagenes, las cuales procederemos a ponerlas en miniatura.</p>
<p>Para que las imagenes debajo se vean en miniatura debemos colocar este codigo antes del &lt;/head&gt; de la pagina, ya que el codigo que este antes del &lt;body&gt; o bien sea entre &lt;head&gt;&lt;/head&gt; se cargara antes que la pagina, por eso el codigo javascript siempre se coloca antes del &lt;body&gt; o entre &lt;head&gt;&lt;/head&gt; para que al ver la pagina en el navegador ya a cargado este codigo, asi que puede ser luego o antes del codigo javascript ponemos esto:</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">&lt;style type="text/css"&gt;
body{ font-family:Georgia, "Times New Roman", Times, serif}
h1{ margin:0 ; font-size:22px; color:black}
p{ font-size:12px}
.thumb{
width:5%;
margin:2px;
cursor: pointer;
-moz-opacity:.50;
opacity:.50;
}
.imagen{ width:450px}
&lt;/style&gt;</span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"> </span></span></pre>
<p>Si cargamos la pagina ahora vemos que las imagenes debajo estan en miniatura, pero vemos que al seleccionar otra imagen, si cambia el titulo y el parrafo pero no la imagen. Esto es porque se nos paso modificar otra cosa en el codigo que esta entre &lt;body&gt;&lt;/body&gt; en los &lt;div&gt;.</p>
<p>Cambiamos <strong>solo</strong> lo que indico en <strong><span style="color:#ff0000;">rojo</span></strong>:</p>
<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<pre><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;">&lt;body&gt;
&lt;h1 spry:detailregion="dsImagenes"&gt; {dsImagenes::titulo} &lt;/h1&gt;<strong>
&lt;div spry:</strong></span></span><span style="color:#ff0000;"><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>region</strong></span></span></span><span style="font-family:Arial,sans-serif;"><span style="font-size:x-small;"><strong>="dsImagenes"&gt;&lt;img src="../pgaleria/img/img1/{imagen}" /&gt;&lt;/div&gt;</strong>
&lt;p spry:detailregion="dsImagenes"&gt; {dsImagenes::parrafo} &lt;/p&gt;
&lt;div spry:repeat="dsImagenes" spry:region="dsImagenes"&gt;
&lt;img src="img/img1/{imagen}" title="{titulo}"  onclick="dsImagenes.setCurrentRow('{dsImagenes::ds_RowID}')" onmouseover="MM_effectAppearFade(this, 500, 50, 100, true)" onmouseout="MM_effectAppearFade(this, 500, 100, 50, false)" /&gt;
&lt;/body&gt;</span></span></pre>
<p>Por <strong>solo</strong> lo que indico en <strong><span style="color:#000080;">azul</span></strong>:</p>
<pre><strong>&lt;div spry:</strong><span style="color:#000080;"><strong>detailregion</strong></span><strong>="dsImagenes"&gt;&lt;img src="../pgaleria/img/img1/{imagen}" /&gt;&lt;/div&gt;
</strong></pre>
<p>Igual como todos los demas &lt;div spry:detailregion&#8230;.&gt; recordemos que esa linea nos la coloco Dreamweaver al arrastrar el objeto {imagen} al cual lo editamos en el codigo agregandolo en un &lt;img&gt; y nos falto editar esta parte que se menciona ahora.</p>
<p>En diseno nuestra pagina se ve asi:</p>
<p><a href="http://enterx.files.wordpress.com/2009/11/img111.jpg"><img class="aligncenter size-full wp-image-653" title="img11" src="http://enterx.files.wordpress.com/2009/11/img111.jpg?w=435&#038;h=294" alt="img11" width="435" height="294" /></a></p>
<p>Se recuerda que las imagenes deben ser del mismo tamano, podria ajustarse su ancho y alto en algun editor de imagenes pero tambien (y en caso de ser muchas) colocar un width=&#8221;numero&#8221; en el codigo del &lt;img&gt;</p>
<p>&lt;div spry:detailregion=&#8221;dsImagenes&#8221;&gt;&lt;img src=&#8221;../pgaleria/img/img1/{imagen}&#8221; <strong>width=&#8221;300&#8243;</strong> /&gt;&lt;/div&gt;</p>
<p>Ya en este punto al cargar la pagina ya deberia verse la idea de esta practica, una galeria de imagenes donde seleccionamos alguna de las miniaturas y se nos muestra dicha imagen en un tamano mayor con un titulo y una descripcion.</p>
<p><span style="color:#ff0000;">Advertencia:</span></p>
<p>Algo importante a comentar es que esta practica ha funciona perfectamente en un PC con WinXP con Dreamweaver CS4 y se ha usado como plataforma web EasyPHP5.3 para las pruebas en localhost. Pero al ver esta practica en un sistema Linux donde ya he trabajado otras cosas en el ambito web e igual al subir esto a un hosting free, la imagen en tamano original o mayor, no aparece, solo las imagenes en miniatura y solo el titulo y descripcion de la imagen en tamano mayor pero no aparece la imagen. Algo de los 3 archivos javascript (no creo que el css) que crea Dreamweaver en una carpeta llamada SpryAssets no interactua bien fuera del entorno aislado y controlado local. Esto es otra razon mas por lo que prefiero escribir yo mismo el codigo o copy+paste codigos de terceros, incluir los archvos .js y editar un poco el codigo uno mismo que por la asistencia de Dreamweaver.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/640/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/640/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/640/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=640&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/11/07/galeria-de-imagenes-spry-dreamweaver-cs4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img12.jpg" medium="image">
			<media:title type="html">img1</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img2.jpg?w=300" medium="image">
			<media:title type="html">img2</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img3.jpg" medium="image">
			<media:title type="html">img3</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img4.jpg?w=300" medium="image">
			<media:title type="html">img4</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img5.jpg" medium="image">
			<media:title type="html">img5</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img6.jpg" medium="image">
			<media:title type="html">img6</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img7.jpg?w=300" medium="image">
			<media:title type="html">img7</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img8.jpg?w=300" medium="image">
			<media:title type="html">img8</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img9.jpg?w=300" medium="image">
			<media:title type="html">img9</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img10.jpg?w=300" medium="image">
			<media:title type="html">img10</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/img111.jpg" medium="image">
			<media:title type="html">img11</media:title>
		</media:content>
	</item>
		<item>
		<title>Combos dependientes con jQuery (AjAX)</title>
		<link>http://enterx.wordpress.com/2009/11/05/combos-dependientes-con-jquery-ajax/</link>
		<comments>http://enterx.wordpress.com/2009/11/05/combos-dependientes-con-jquery-ajax/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 16:07:53 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=618</guid>
		<description><![CDATA[
La necesidad de los Selects/Combos/Listas o como los desees llamar que colocamos en formularios web los cuales en alguna ocasion dependera su informacion de una lista previa es algo que tarde o temprano nos toca tener presente. Por ejemplo, el caso de un formulario web donde tenemos 3 listas (Pais, Estado y Ciudad) donde seleccionas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=618&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img class="aligncenter size-full wp-image-635" title="productshot_ajax" src="http://enterx.files.wordpress.com/2009/11/productshot_ajax.jpg?w=140&#038;h=134" alt="productshot_ajax" width="140" height="134" /></p>
<p>La necesidad de los Selects/Combos/Listas o como los desees llamar que colocamos en formularios web los cuales en alguna ocasion dependera su informacion de una lista previa es algo que tarde o temprano nos toca tener presente. Por ejemplo, el caso de un formulario web donde tenemos 3 listas (Pais, Estado y Ciudad) donde seleccionas el Pais y en base al pais seleccionado, el combo de Estado desplegara solo los estados de ese pais, e igual con sus Ciudades, solo las del Estado de ese Pais que ya se ha seleccionado. Y eso nos sirve para otros casos, una lista de Productos, el cual al seleccionarlo se nos despliegue en otra lista las categorias de ese Producto y hasta en otra lista unas subcategorias de esas categorias, todo proveniente de la base de datos.</p>
<p><a href="http://itech.zobyhost.com/pruebas/registro.php">Una muestra de lo que trata este articulo sobre listas dependientes</a>. Pais: Venezuela &#8211; Estado: Zulia, es el unico que en este ejemplo tiene 3 ciudades.</p>
<p><span id="more-618"></span></p>
<p>Creamos una pagina PHP con un formulario el cual contendra 3 combos o listas las cuales eran (Pais, Estado y Ciudad). En la BD debemos tener 3 tablas Paises, Estados y Ciudades.</p>
<p>Pais (id_pais, pais), Estados (id_estado, estado, id_pais), Ciudades (id_ciudad, ciudad, id_estado, id_pais).</p>
<p>De la tabla Pais id_pais puede ser un Integer Auto_Incrementable (AI), en Estados igual el id_estado, y en Ciudades igual el id_ciudad, recordando no perder la relacion entre los Ids de cada tabla para saber que Ciudad pertenece a que Estado de que Pais, como bien ya se sabe. En internet puede conseguirse un archivo .sql con las tablas de Paises y sus Estados, archivo .sql que importariamos a nuestra BD.</p>
<p>En mi caso busque y consegui mucha informacion sobre AJAX para hacer esto de los combos dependientes, codificaciones completas y largas que realmente poseian inestabilidad en el sentido de que algunos ejemplos descargados ni siquiera funcionaban como lo indicaba su autor sin haberles modificado nada, otros eran funcional pero casi intocables, al tratar de adaptarlo a nuestra pagina o proyecto web, era mas el que fallara que el que funcionara como en su puro e inmodificable ejemplo descargado.</p>
<p>Excluyendo post propios de mi persona en este web blog, material educativo de terceros es comentado su link para hacer referencia al material de otros autores (sin en ningun momento acreditarse articulos o explicaciones ajenas) respetando los derechos de autor. En estos casos hago copia de apuntes de terceros en mi bloq porque ya me ha tocado situaciones en las que he perdido el link o incluso, URLs rotas tratando de volver a obtener dicha informacion al menos por los cache de google. Para evitarme estos mal percances pasados, coloco en mi blog las ensenanzas de otras partes para mantener una copia bien sea original o modificada de dicho articulo, lo cual sera para este caso.</p>
<h3>Combos dependientes con jQuery</h3>
<p>Encontre un material corto, entendible y muy factible en su practica que hace uso de la libreria de javascript jQuery, este material pertenece al <a href="http://www.miguelmanchego.com/">blog de Miguel Manchego</a> articulo titulado <a href="http://www.miguelmanchego.com/2009/combos-dependientes-ajax-base-de-datos/">Combos dependientes AJAX Bases de Datos</a>.</p>
<p>Primero debemos descargar de <a href="http://jquery.com/">jquery.com</a> la libreria javascript que nos ayudara a realizar estos combos dinamicos, de su seccion de descarga nos bajamos el jquery (<a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.3.2.min.js&amp;downloadBtn=">descarga jquery</a>), este archivo .js lo colocamos en la carpeta de nuestro proyecto web, bien sea dentro de una subcarpeta o en la carpeta raiz de nuestro proyecto web.</p>
<p>Debemos crear una pagina .php por cada combo dependiente, en este caso tenemos 3 combos (Pais, Estado y Ciudad), pero el combo Pais no es dependiente de ninguno previo, por lo que el llenado del 1er combo es como ya normalmente llenas un combo.</p>
<p>Yo por mi parte indico la conexion de la Bd en un archivo php el cual incluyo en las de paginas php.</p>
<p><strong>conexion.php</strong></p>
<pre>&lt;?php
function conectar(){
   $servidor = mysql_connect("localhost","usuario","clave") or die('Error de conexion al Servidor: ' . mysql_error());
   $basedatos = mysql_select_db("mi_basedatos") or die('Error de conexion con la BD: ' . mysql_error());
}
function desconectar(){
   mysql_close();
}
?&gt;</pre>
<p>Creamos nuestro formulario bien sea con algunos pocos campos de texto y 3 combos (Pais, Estado y Ciudad). Llenamos la lista de paises en el combo o lista Pais:</p>
<pre>&lt;?php
include 'conexion.php';
conectar();
$resultado = mysql_query("select * from paises");
if($fila = mysql_fetch_array($resultado)){
   do{
      echo '&lt;option value="'.$fila['id_pais'].'"&gt;'.$fila['pais'].'&lt;/option&gt;';
   }while($fila = mysql_fetch_array($resultado));
}
mysql_free_result($resultado);
desconectar();
?&gt;
<span style="color:#000000;">
</span></pre>
<p>El bucle que usamos para cargar las listas debe ser un <strong>do{ }While() </strong>y no un <strong>While()</strong> porque <span style="color:#000000;">la linea <strong>$registros = mysql_fetch_row($resultado)</strong> hace correr el cursor de la BD, por lo que con un bucle While() debe volverse a cargar la consulta SQL una vez dentro del IF() y antes del While(), al ejecutar dos veces la SQL esto vuelve lenta la traida de la data de la BD y para el caso de muchos usuarios conectados al sitio, la carga se vuelve muy lenta.</span></p>
<p><span style="color:#000000;">Si usasemos un  bucle While() el codigo seria este:</span></p>
<pre>
<pre>$consulta = "select * from tabla";
<span style="color:#ff0000;">$resultado = mysql_query($consulta);</span>
<span style="color:#000080;">$registros = mysql_fetch_row($resultado);</span>
if($registros){
   <span style="color:#ff0000;">$resultado = mysql_query($consulta);</span>
   while($fila = mysql_fetch_array($resultado)){
      echo '&lt;option value="'.$fila['id'].'"&gt;'.$fila['campo'].'&lt;/option&gt;';
   }
}</pre>
</pre>
<p>Con respecto a la linea <span style="color:#000080;">azul</span>,  el <em>mysql_fetch_row()</em> mueve el cursor de la BD al siguiente registro, si la SQL es filtrada donde buscamos un solo y unico registro, al llegar al <em>While()</em>, no traera datos porque <em>mysql_fetch_row()</em> movio el cursor de la BD y ahora la consulta para el <em>While</em> es nula. Si la SQL filtrada nos traera varios registros, faltara el primero para el <em>While()</em>. Si colocamos nuevamente luego del <em>IF() </em>la consulta SQL como se indica en las lineas<span style="color:#ff0000;"> rojas</span>, estariamos ejecutando la consulta 2 veces que en un servidor localhost no se notaria la lentitud pero si en un servidor online de produccion y con muchos usuarios conectados a la pagina que carga los datos, dicha carga seria sumamente lenta por la recarga doble de la consulta.</p>
<p>La solucion para evitar que no se nos mueva el cursor de la BD al terminar la consulta es obviamente no usar el <em>mysql_fetch_row() </em>el cual mete en una matriz la data y nos ocasiona este desplazamiento del cursor a la siguiente fila. Tambien el que se debe usar es un <em>do-while()</em> y no un <em>while()</em> lo cual seria un <em>haz-mientras</em> mejor que un <em>mientras()</em> tal cosa. Asi se ejecuta el ciclo al menos una 1era vez y se evalua luego y asi sucesivamente y no evaluar primero antes de hacer el 1er ciclo y subsiguientes.</p>
<pre>
<pre>$consulta = "select * from tabla";
$resultado = mysql_query($consulta);
if($fila=mysql_fetch_array($resultado)){
  do{
     echo '&lt;option value="'.$fila['id'].'"&gt;'.$fila['campo'].'&lt;/option&gt;';
  }while($fila = mysql_fetch_array($resultado));
}</pre>
</pre>
<p><span style="color:#000000;">El codigo para cargar la lista de paises de la BD seria este:</span></p>
<pre>
<pre>
<pre>$consulta = "select * from paises";
$resultado = mysql_query($consulta);
if($fila=mysql_fetch_array($resultado)){
  do{
     echo '&lt;option value="'.$fila['id_pais'].'"&gt;'.$fila['pais'].'&lt;/option&gt;';
  }while($fila = mysql_fetch_array($resultado));
}</pre>
</pre>
</pre>
<p>Este codigo php iria inyectado entre &lt;select id=&#8221;pais&#8217;&gt;&lt;?php codigo ?&gt;&lt;/select&gt; con lo cual ya en el formulario estariamos mostrando la lista de Paises, podemos culminar la SQL con un Order By pais o ASC o DESC para order la lista a nuestro gusto.</p>
<p>Para los otros 2 combos ya debemos recurrir a jquery y otras paginas php que debemos hacer. Recordando el que comentamos que por cada combo dependiente haremos una pagina php. En esta practica tenemos 2 combos dependientes que son Estado y Ciudad, por lo que crearemos una pagina para cada uno y ya veras a que se desea llegar con esto.</p>
<p>El mismo codigo php que usamos para cargar la lista de Paises podemos usarlo para cargar la lista de Estados en otro archivo, solo cambiaremos un poco la SQL y los campos, pero en esencia es la misma codificacion.</p>
<p><strong>estados.php</strong></p>
<pre>&lt;?php
   include 'conexion.php';
   conectar();
   $resultado = mysql_query("select * from estados where id_pais = '$_POST[elegido]'");
   if($fila = mysql_fetch_array($resultado)){
      do{
         echo "&lt;option value=".$fila['id_estado']."&gt;".$fila['estado']."&lt;/option&gt;";
      }while($fila = mysql_fetch_array($resultado))
   }
   mysql_free_result($resultado);
   desconectar();
?&gt;</pre>
<p>Copiamos este codigo de que carga la lista de Estados y hacemos otro archivo php y lo modificamos nuevamente en la SQL y en los campos:</p>
<p><strong>ciudades.php</strong></p>
<pre>&lt;?php
   include 'conexion.php';
   conectar();
   $resultado = mysql_query("select * from ciudades where id_estado = '$_POST[elegido]'");
   if($fila = mysql_fetch_array($resultado)){
     do{
        echo "&lt;option value=".$fila['id_ciudad']."&gt;".$fila['ciudad']."&lt;/option&gt;";
     }while($fila = mysql_fetch_array($resultado))
   }
   mysql_free_result($resultado);
   desconectar();
?&gt;</pre>
<p>Ahora solo nos queda indicar un pequeno codigo javascript en la pagina de nuestro formulario web php, este codigo javascript ira antes del &lt;body&gt; para que al cargarse la pagina, ya se haya cargado el codigo javascript.</p>
<pre>&lt;script language="javascript" <strong><span style="color:#003300;">src="jquery-1.3.2.min.js"</span></strong>&gt;&lt;/script&gt;
&lt;script language="javascript"&gt;
  <strong>$(document).ready(function(){</strong>
     $("#cmbpais").change(function () {
        $("#cmbpais option:selected").each(function () {
           elegido=$(this).val();
           $.post("estados.php", { elegido: elegido }, function(data){
              $("#cmbestados").html(data);
              <span style="color:#ff0000;">$("#cmbciudades").html("");</span>
           });
        });
     })

     <span style="color:#333399;">// Este puede ponerse en comentario si no se dispone de un 3er combo:
     $("#cmbestados").change(function () {
        $("#cmbestados option:selected").each(function () {
           elegido=$(this).val();
           $.post("ciudades.php", { elegido: elegido }, function(data){
               $("#cmbciudades").html(data);
           });
        });
     })</span>

 <strong> });</strong>
&lt;/script&gt;</pre>
<p>Hemos marcado en <strong><span style="color:#003300;">verde</span></strong> donde llamos al archivo .js jquery e indicamos en <strong>negrita</strong> la funcion padre la cual contiene 2 subfunciones, y colocamos en <span style="color:#333399;">azul</span> una de las 2 subfunciones porque si solo tenemos 1 solo combo dependiente, la linea indicada en <span style="color:#ff0000;">rojo</span> y el codigo en<span style="color:#333399;"> azul</span> no estarian, en cambio si tenemos 2, 3, 4, etc combos dependientes uno dependiente del previo, copiamos y pegamos mas abajo el codigo de una de las subfunciones y editamos a que combo previo pertenece, a que archivo .php llamara la carga de los datos y a que combo se cargaran los datos.</p>
<p>&nbsp;</p>
<hr />
<strong>Funcion signo dolar $:</strong> En el codigo de javascript el signo $ es un atajo mejorado de la funcion document.getElementById(). Si se le pasa una cadena de texto con el identificador de un elemento, obtiene ese elemento. La función admite uno o más parámetros: si se le pasa un parámetro, devuelve un objeto; si se le pasan varios parámetros, devuelve un array simple con todos los objetos.</p>
<p>&nbsp;</p>
<p>/ Con JavaScript<br />
var elemento = document.getElementById(&#8216;primero&#8217;);<br />
// Con Prototype<br />
var elemento = $(&#8216;primero&#8217;);<br />
// Con JavaScript<br />
var elemento1 = document.getElementById(&#8216;primero&#8217;);<br />
var elemento2 = document.getElementById(&#8217;segundo&#8217;);<br />
// Con Prototype<br />
var elementos = $(&#8216;primero&#8217;, &#8217;segundo&#8217;);</p>
<p>Existen muchas otras funciones como $F() que permite obtener directamente el valor de los campos de formulario, $$() que permite seleccionar elementos de la pagina utilizando selectores CSS, la funcion $A() para convertir en array (cualquier cosa que se parezca a un array), $R() para crear rangos de valores. El rango de valores se crea desde el valor del primer argumento hasta el valor del segundo argumento. El tercer argumento de la función indica si se excluye o no el último valor (por defecto, el tercer argumento vale false, que indica que sí se incluye el último valor).</p>
<p>Debemos aprender AJAX puesto que es el faltante en el desarrollo web para que las aplicaciones web obtengan una interaccion presente en las aplicaciones de Escritorio (no presentes en las de ambiente web),  Ajax es ese complemento que hacia falta.</p>
<p>&nbsp;</p>
<hr />Cuando ya tenemos datos en los 3 combos, si cargamos otro pais (select padre) la informacion de estados se reemplazara inmediatamente por la nueva data y el combo de ciudades se limpiara, como se indica en la linea de codigo marcada en <span style="color:#ff0000;">rojo</span>.</p>
<p>Nos fijamos que los &lt;select&gt; de Estado y Ciudad no poseen &lt;option&gt; en el formulario ya que estos se encuentran en <strong>estados.php</strong> y en <strong>ciudades.php</strong> dentro del bucle o ciclo while php, igual como en que llena la lista de Paises, codigo que no se llama de otro archivo sino que esta ya incluido entre lineas del codigo html de la pagina de formulario. Al cargarse la pagina de formulario ya se ha cargado el codigo javascript el cual por un <strong>evento change</strong> envia <strong>via post</strong> el dato seleccionado del combo a estados.php el cual busca los datos por una SQL filtrada por una variable elegido presente en el codigo javascript y la cual se observa en la SQL $_POST[elegido] (post de javascript, no post del formulario). Entonces el codigo javascript envia el dato a <strong>estados.php</strong> o <strong>ciudades.php</strong> bien sea el caso del combo previo seleccionado y devuelve a la pagina de formulario los datos en el combo.</p>
<p>&nbsp;</p>
<p>Yo llame a las paginas estados.php y ciudades.php por el contenido que tendrian, pero asi como en las indicaciones y codigo de Miguel comentado al comienzo del post, puedes ponerles combo2.php y combo3.php ajustando esto en el Id de los &lt;select&gt; y en el codigo javascript, queda al gusto de cada quien el nombre de los objetos y los archivos.</p>
<p>enjoy!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/618/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=618&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/11/05/combos-dependientes-con-jquery-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/11/productshot_ajax.jpg" medium="image">
			<media:title type="html">productshot_ajax</media:title>
		</media:content>
	</item>
		<item>
		<title>ZobyHost (Un Hosting Deficiente)</title>
		<link>http://enterx.wordpress.com/2009/09/30/zobyhost-un-hosting-deficiente/</link>
		<comments>http://enterx.wordpress.com/2009/09/30/zobyhost-un-hosting-deficiente/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 16:33:45 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[Comunidad]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Noticia]]></category>
		<category><![CDATA[Plataforma Web]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=599</guid>
		<description><![CDATA[ZobyHost es una de tantas paginas que ofrece alojamiento bien sea gratuito como pago para la comunidad hispana, sus paquetes son atractivos, el hosting free ofrece 800MB de espacio, correos, servicio FTP, 10  BDs MySQL pero desafortunadamente solo 50 MB para MySQL por lo que el hosting gratuito esta mas acorde a paginas estaticas y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=599&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://www.zobyhost.com/">ZobyHost </a>es una de tantas paginas que ofrece alojamiento bien sea gratuito como pago para la comunidad hispana, sus paquetes son atractivos, el hosting free ofrece 800MB de espacio, correos, servicio FTP, 10  BDs MySQL pero desafortunadamente solo 50 MB para MySQL por lo que el hosting gratuito esta mas acorde a paginas estaticas y a duras penas con algo de contenido dinamico, pero no podemos pedir mucho para el paquete free obviamente. ZobyHost posee una plataforma linux estable con Apache, PHP y MySQL al dia, referente a sus versiones.</p>
<p><span id="more-599"></span></p>
<p>Pero ZobyHost posee algo que lo desacredita inmediatamente, su soporte tecnico, si logras llegar al foro, ya es algo, puedes recibir algo de asistencia con respecto a algun problema. Pero en mi caso luego de crearme un hosting free, me registre en el foro pero por razones que desconozco, mi login o password no son los correctos, indiquemos que esto tarde o temprano le pase a otro usuario. La sorpresa con este servicio es que tanto a su correo admin@zobyhost.com como a foro@zobyhost.com e escrito en varias oportunidades y no he recibido ningun tipo de respuesta por parte de ZobyHost. Reviso mi bandeja de Spam pero nada, existen algunos dias entre el margen de unos correos y otros que se les fue enviado, pero luego de varios dias, no hay respuesta de ninguno de ellos. Esto deja a la persona como un usuario que no puede preguntar nada en el foro y que tampoco recibe soporte escribiendo al correo de soporte de la web (no del foro).</p>
<p>ZobyHost solo permite registros con correos Gmail unicamente, algo raro para un hosting, pero aunque mi correo es un correo Gmail asi como ellos aconsejan y piden que sea, de igual forma, hasta el dia de hoy luego de una semana del ultimo correo, sigo esperando respuesta de ZobyHost, el cual brilla por su ausencia. Esto desacredita mucho al hosting no solo por un hosting free, sino peor aun, por un hosting pago, donde el unico medio de comunicacion que ofrecen es via correo electronico, el cual o no ven, o no les llegan o quien sabe a que pueda deberse, pero el soporte o el trato contratista-cliente, no existe. El link de Contactenos considero que lo tienen de adorno en la pagina, ya que no posee ningun tipo de utilidad.</p>
<p>En vista de un deficiente y muy mal soporte por parte de ZobyHost, queda descartado y a ser tomado como en cuenta otros hosting que si ofrescan la ayuda o soporte que todo usuario tiene derecho a tener, y no el engano que ZobyHost promueve.</p>
<h3>Editando 09.10.09</h3>
<p>Hace unos dias recibi un correo de <span style="color:#00681c;">Zobyhost.com sales</span> (sales@byet.net)  un correo en ingles sobre publicidad, al ver la relacion con ZobyHost, les escribi mi descontento con este hosting. Al menos estas personas que a simple vista son el proveedor original y directo de ZobyHost, respondieron a mi correo. Algo ironico hablar con personal de habla ingles cuando creemos  que posiblemente zobyhost si se indique como <a href="http://www.zobyhost.com/sobre-nosotros.php">ellos mismos se expresan</a> en esta seccion de su web.</p>
<p>Informacion de &#8220;sobre nosotros&#8221; de ZobyHost:</p>
<blockquote><p>Somos un sitio de &#8220;hosting gratis&#8221;; para usuarios de habla hispana.</p>
<p>Establecido formalmente en Octubre del 2008, zobyhost.com es un sitio independiente con el objetivo de brindar alojamiento web gratuito para usuarios de habla hispana.</p>
<p>Desde nuestros principios, trabajamos<strong> <span style="color:#000080;">junto a empresas de primer nivel, elegidas por sus cualidades y capacidades.</span></strong> De esta manera hemos<strong> <span style="color:#000000;">logrado asegurar la calidad del servicio y satisfacer las necesidades de nuestros clientes.</span></strong></p>
<p><strong>Nuestra misión:</strong><br />
<span style="color:#ff0000;">Brindar alojamiento web gratuito, <span style="text-decoration:underline;"><strong>de primera calidad</strong></span>, para usuarios de habla hispana.</span></p>
<p><strong>Nuestra visión:</strong><br />
Ser el sitio de alojamiento web gratuito más confiable y popular dentro de la comunidad hispano-hablante. Satisfacer las necesidades de nuestros usuarios estando al nivel de las más grades empresas de alojamiento web pago.</p></blockquote>
<p>La parte en <span style="color:#000080;">azul</span> seria las personas con quien contacte a pura suerte por medio de un correo publicitario. La parte en <span style="color:#ff0000;">rojo</span> seria la mentira que ZobyHost muestra al publico.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/599/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/599/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/599/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=599&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/09/30/zobyhost-un-hosting-deficiente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>
	</item>
		<item>
		<title>Deficientes Servicios Publicos (Venezuela)</title>
		<link>http://enterx.wordpress.com/2009/09/29/deficientes-servicios-publicos-venezuela/</link>
		<comments>http://enterx.wordpress.com/2009/09/29/deficientes-servicios-publicos-venezuela/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 16:29:44 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[Comunidad]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Noticia]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=593</guid>
		<description><![CDATA[No se en tu pais, pero en el mio existen algunos manejos de pago de servicio que no van en la orientacion correcta de como deberia de funcionar y de lo cual al hacer preguntas, no se obtienen las respuestas correctas, de personal que no sabe que contestar debido a que no son ellos quienes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=593&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>No se en tu pais, pero en el mio existen algunos manejos de pago de servicio que no van en la orientacion correcta de como deberia de funcionar y de lo cual al hacer preguntas, no se obtienen las respuestas correctas, de personal que no sabe que contestar debido a que no son ellos quienes impusieron dicha planificacion ilogica. Esto es porque cuando llamamos a un proveedor que nos presta X servicio, recordamos (igual como en un juego de ajedrez) que hablamos solo con los peones, los cuales dificilmente nos permitiran hablar con quienes realmente si tienen las respuestas correctas (quienes estan detras, o arriba de ellos), y sobre este tipo de cosas, sobre porque un servicio funciona de X forma y que tan facil o dificil puede ser el averiguar porque y en muchas ocasiones llegar con una informacion de calle ciega, es de lo que comento.</p>
<p><span id="more-593"></span></p>
<h3>Los desajustes del Plan ABA Cantv</h3>
<p>La telefonica Venezolana Cantv tiene una empresa contratada como filial que ofrece un servicio de internet conocido como Plan Aba, el cual es considerado uno de los mejores servicios de internet prestados por Cantv, pero considero que por igual le siguen el resto de los proveedores como Intercable, NetUno como empresas de television por cable que tambien ofrecen un servicio de internet y las empresas de telefonia movil como Digitel, Movistar y la misma Movilnet que es filial de Cantv en lo que respecta a telefonica celular.</p>
<p>Para quien desconozca esta informacion, ABA de Cantv no cobra en todo momento, el presente mes, es decir, por ejemplo el cobro de Febrero2009 pueden estarte cobrando realmente el servicio de Internet de Octubre2008. El Plan ABA depende de una linea telefonica, y en ocasiones el recibo de pago del mes solo refleja unicamente el pago del servicio telefonico mas no el de internet, en otro mes puede suceder que te esten cobrando dos veces (el doble) el servicio de internet, lo cual no es asi, es debido a este gran desajuste que el Plan Aba posee, donde no te cobran el internet en un mes lo cual se acumula (nunca te lo regalan) y entonces es cuando dicho acumulado se refleja en otro mes.</p>
<p>Esto ocasiona confusion y disgusto por parte del cliente (esto no lo ve quien paga el servicio por tarjeta de credito) a no ser que siga muy de serca su movimiento de tarjeta. Porque ABA no puede cobrar el mes que corresponde? porque deja pasar un cobro de un mes y acumularlo en otro? esto ocasiona preocupacion en donde el cliente se pregunta si le cortaran el servicio telefonico o el de Internet (Aba solo puede cortar el internet mas no el servicio telefonico, y Cantv solo puede cortar el servicio telefonico, mas no el de internet) pero al no haber servicio telefonico, no importa que tan al dia estes con tus pagos de internet, obviamente no podras disfrutar del servicio puesto que el medio o puente de este es el servicio telefonico.</p>
<p><strong>La criptonica del plan Aba.</strong> Todo el que tenga plan Aba sabe perfectamente que el mal tiempo (lluvia) ocasiona perdida de la conexion del servicio, aunque no solo Aba sufre esto, otros servicios de internet de otros proveedores sucumben por igual a presentar problemas del servicio por mal tiempo, pero con Aba es acertadamente seguro en un alto porcentaje que el servicio decaera. Cantv aun posee parte de su infraestructura bajo cableado coaxial y no de fibra optica, lo cual han ido cambiando, pero recordemos que el puente de Aba es el servicio telefonico, y este aun se encuentra en su mayoria en cableado coaxial.</p>
<h3>NIC de Venezuela (registros de dominios .ve)</h3>
<p>Otro servicio (en este caso de CONATEL) Comision Nacional de Telecomunicaciones, es el registro de dominios .ve el cual ha suspendido los pagos por tarjeta de credito y debito, solo permite transferencias por internet del mismo banco, y en donde el principal modo de pago que tanto predican es el de pago por taquilla. Reduciendo la accesibilidad de las ventajas del modo de pago electronico, sumamente rapido y directo, se ha preferido el que el cliente tenga que ir al banco a pagar la minima cantidad de 25 BsF, mismo pago que por transferencia tardaria muy seguramente unos 25 segundos y no 25 minutos o mas en colas de banco y haciendo presencia fisica en el lugar, solo porque se debe ingresar los ultimos 9 digitos del bauche de recibo de pago del deposito bancario en la web de NIC. Afortunadamente un buen punto a favor del cliente es que este pago es anual por lo que esta molestia solo se le presenta al cliente una vez cada 12 meses.</p>
<p>Asi estan los servicios en Venezuela, puede decirse que eficientes (en la mayoria de los casos), pero primitivos y desajustados en su modo de cobro, lo cual no le da mucho sentido, quien no se esforzaria por un rapido y eficiente cobro del servicio como proveedor?. Asusta y preocupa al preguntarse cuanta gente como las que planifican esta modalidad o manejo existen en este pais.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/593/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/593/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/593/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=593&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/09/29/deficientes-servicios-publicos-venezuela/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>
	</item>
		<item>
		<title>Calidad de Servicio (Orientacion al Desarrollador)</title>
		<link>http://enterx.wordpress.com/2009/09/26/calidad-de-servicio-orientacion-al-desarrollador/</link>
		<comments>http://enterx.wordpress.com/2009/09/26/calidad-de-servicio-orientacion-al-desarrollador/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 16:32:03 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Investigación]]></category>
		<category><![CDATA[Plataforma Web]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[mis apuntes]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=570</guid>
		<description><![CDATA[Seria muy fluido y desastroso si con cada proyecto bien sea aplicacion Desktop o Web nos sentasemos frente al computador y conforme tengamos a la mano la informacion proporcionada por el cliente, fuesemos armando cada parte de todo el sistema. Tanto en su proceso como luego de su culminacio tendriamos que estar parchando los defectos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=570&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Seria muy fluido y desastroso si con cada proyecto bien sea aplicacion Desktop o Web nos sentasemos frente al computador y conforme tengamos a la mano la informacion proporcionada por el cliente, fuesemos armando cada parte de todo el sistema. Tanto en su proceso como luego de su culminacio tendriamos que estar parchando los defectos de un mal diseno.  Si las bases no son solidas, todo el proyecto tiene el alto riesgo de irse abajo o funcionar muy deficientemente quitandole la credibilidad del trabajo entre contratista y cliente.</p>
<p><span id="more-570"></span></p>
<p>Este podria ser un borrador o una idea del patron que podria seguirse para poner en marcha un proyecto:</p>
<p>1. Levantamiento de la informacion<br />
1.1. Flujograma Corporativo de la Empresa (inicio-proceso-culminacion por cada dpto).<br />
1.2. Entrega de Planillas, Formularios y Formatos en general (ingreso, proceso, salida/facturacion).<br />
2. Evaluacion y diseno de esquema de proyecto en base a la informacion levantada<br />
2.1. Actual o Rediseno de procesos de la organizacion.<br />
3. Repaso de la informacion, re-evaluacion.<br />
4. Preparacion de la Presentacion del esquema del proyecto.<br />
5. Presentacion del esquema del proyecto</p>
<p>POSIBLE CLAUSULA DE CONTRATO (Ejemplo):<br />
cc1.- Una vez evaluado el costo del proyecto, el programa tendra el costo establecido a como actualmente este estipulado en el contrato y se haya aprobado.<br />
cc2.- Nuevos agregados o ajustes perteneceran a un nuevo costo del proyecto, que debera de establecerse en futuras reuniones con el cliente, en base a nuevos anexos al mismo.<br />
cc3.- Se prohibe el rediseno de modulos ya culminados por peticion del cliente. De presentarse la necesidad de redisenar un modulo ya culminado, las partes, cliente y contratista deben entablar un nuevo costo en base a duplicar el tiempo de trabajo de dicho modulo.<br />
cc4.- Se prohibe el uso de Software Pirata. Debe tenerse las licencias de los Software Propietario en caso de requerirse su uso como herramienta de trabajo.<br />
cc5.- Debe cancelarse la inicial del 30% del costo total del proyecto, el 50% al culminarse el 50% del proyecto y un 20% final al culminar el proyecto.<br />
cc6.- Todo Proyecto de Software personalizado a Empresas, se le hara entrega de Esquemas y Disenos del proyecto.<br />
cc7.- COSTOS:<br />
cc7.1.- Pago por horas trabajadas<br />
cc7.2.- Pago por modulo<br />
cc7.3.- Pago por Redisenos<br />
cc7.4.- Pago por Perfil del Proyecto: local o Cliente/Servidor.</p>
<p>INICIO DEL PROYECTO<br />
1. Investigacion previa para el desarrollo<br />
2. Elaboracion de Diagramas ER, DF. (Entidad Relacion &#8211; Diagrama de Flujo).<br />
3. Diseno en papel de la Base de Datos (BBDD ER: Entidad Relacion de la Base de Datos).<br />
4. Diseno de la BBDD y sus Relaciones<br />
5. Diseno en papel de las interfaz de usuario (GUI).<br />
6. Presentacion y entrega de la interfaz de usuario al cliente.<br />
7. Desarrollo de la Interfaz de Usuario (GUI) por modulo. (una vez aprobado)<br />
8. Pruebas y Depuracion.<br />
9. Manual del Usuario.<br />
10. Instalacion y Configuracion.<br />
11. Adiestramiento y Soporte al Usuario.</p>
<p>Esto es una idea con la que puede empezarse para armar una planificacion y un verdadero Contrato con sus Clausulas, no se indica en ningun momento que esta estructura de recopilar la informacion sea exacta, es un rapido borrador de como podria perfilarse el proyecto. Se necesitaria de alguna planificacion como Project (bajo Windows) o alguna equivalente para Linux e igual para MAC, para indicar el tiempo que se llevaria cada punto y hacerle entrega de ello al cliente.</p>
<h3>Las cosas que pueden vivirse en la marcha del proyecto:</h3>
<p>1. El cliente cambia de opinion sobre el comportamiento de uno o varios de los modulos del proyecto, deseando cambiar algunos procesos o anexarle mas cosas (recordemos que ya se establecio un precio, por lo que se evalua que tanto se debe de redisenar y en base a ello determinamos si es necesario o no un reajuste del precio).</p>
<p>2. A veces no nos tomamos mas del tiempo que deberia ser necesario para probar realmente cada modulo del proyecto, y cada modulo con su integracion a otros, y en resumen todo el proyecto completo. Es importante recordarle al cliente que pueden existir algun mal funcionamiento que inmediatamente se presta a correccion, hacerle saber que los primeros dias el sistema estara bajo &#8220;prueba&#8221; y no ser tomado inmediatamente para produccion. Normalmente un desarrollador no deberia cobrar por fallos del sistema, solo por mantenimiento preventivo, anexos y rediseno por peticion del cliente. Sabemos que en esta area de trabajo, si un sistema no funciona bien, pierde su valor e incluso, podria considerarse que no vale nada, sobre todo en <a href="http://es.wikipedia.org/wiki/Planificaci%C3%B3n_de_recursos_empresariales">Sistemas ERP</a>, de hecho, todo este articulo esta orientada a sistemas ERP, por ser sistemas grandes y mas complejos donde todo se integra y en donde al fallar algo, los otros modulos no caminan (no producen) puesto que dependen de la salida de un modulo previo, asi que si un punto se estanca, el resto tambien.</p>
<p>3. Si el cliente solicita en repetidos momentos, el resideno de uno o varios modulos, esto es un problema que debe entablarse nuevamente con otra reunion (esto es lo que todos tratamos de evitar, retrabajar demas en lo mismo, en cosas en marcha o ya culminadas).</p>
<p>4. Es bueno anotar todo refrente a cosas nuevas que hacemos y aprendemos (buscando e investigando) para satisfacer una o varias necesidades del cliente, ya que de no conservar apuntes, en el futuro al presentarse nuevamente la misma solicitud, es posible que no recordemos como solventamos ese punto (creeme que si pasa). Tomando en consideracion que los respaldos de proyectos para un programador son el Todo, no solo por ser proyectos en funcionamiento, sino porque en ellos existe la codificacion que podriamos volver a necesitar en futuros proyectos.</p>
<p>5. Un consejo, si indicas como PrimaryKey un campo Cedula o Rif, es mejor que el campo ID sea un campo numerico, en las tablas Maestras Autoincrementable, en las tablas hijas o detalles de esta, un campo numerico que estara asociado al Id de la tabla maestra conformando lo que uno llamaria (maestro-detalle). Se puede presentar (se ha presentado y creem que es asi) el que incluso el mismo dato que es el Id de referencia de los registros en la BD fue mal ingresado (mala transcripcion) y esto hace que el programador termine creando un script o pequeno modulo que corrija el cambio de la viejta cedula por la nueva en todas las tablas. Si el Id es realmente otro campo (como se indica) cuando estos malos ingresos (error humano) sucedan, solo se corrige el campo cedula primordial y el sistema seguira funcionando igual, puesto que a partir de la cedula es que el sistema sabe que Id es de este dato y en la estructura de todas las tablas de la BD siempre seguira siendo el mismo Id, campo que el sistema le asigno al campo cedula. Si esto no se hace, cuando un cliente con esa cedula ingrese al sistema, el sistema indicara que ya existe, el usuario transcriptor terminara haciendo dos cosas, o reporta el fallo (y el progamador correra el script que lo cambie en todas las tablas, un proceso lento y tedioso) o el usuario transcriptor editara el registro borrando los datos previos por los del nuevo usuario, ocasionandose todo un desastre (en el caso de que el sistema permite la edicion del registro a dicho usuario), o borre el registro y lo vuelva a hacer que es lo mismo. Una mala transcripcion no es culpa nuestra, pero igual, son platos rotos que nos toca recoger, asi que es mejor prevenirlo que corregirlo, siempre hemos sabido que los sistemas que hagamos debemos hacerlo a prueba de tontos y de tercos. Incluso es nuestra labor en las pruebas tratar de hacerlo fallar, reventarlo y ver cual es su limite.</p>
<p>6. Es bueno tener ayuda (no solo por contar con un buen grupo de programadores) sino por personas que ayuden a probar y ver lo que posiblemente se le ha pasado por alto al desarrollador, tanto en pruebas ficticias como reales.</p>
<p>Finalmente termino indicando lo siguiente&#8230;</p>
<p><strong>No uses lenguajes viejos </strong>(herramientas viejas), gracias a dios existen programadores que si se dedican a aprender lo nuevo, porque si existe y se da a conocer por algo existe, la gente no usa algo porque otros lo usen, es porque es la herramienta mejor adaptada a dichas necesidades. Conozco gente que aun desarrolla en lenguajes viejos lo cual trae sus problemas, el soporte decae, necesidad de hacer algo que en la version nueva o en otros lenguajes si se puede, pero en el viejo no. Conozco un sistema ERP que fue desarrollado en un lenguaje llamado Dexterity y fue una de las peores estrategias de trabajo y la peor decision para una empresa, aceptar este sistema, debido a que el soporte depende netamente de un solo individuo, no existen libros, ni informacion em internet sobre un lenguaje aislado y decaido como este, toda una mala estrategia de negocio, lo cual lo estan pagando ahora, y algo caro.</p>
<p>Conoce muy bien la herramienta de trabajo, puesto que conocer a nivel basico o incluso medio, produce trabajar demas, mas codigo y este en base al analisis de estructura del proyecto, como fue enmarcado su diseno. La persona que conoce muy bien la herramienta no deberia estar preguntando tanto en foros, grupos de correo, o en alguna otra parte de internet buscando como hacer algo, ya que los momentos de investigacion por la necesidad de hacer algo, quita tiempo, aprendes en el proceso pero te retrasa. El que conozca bien la herramienta(s) conoce que tanto pueda hacer con ella, conoce sus limites. Que te detenga unicamente el limite de la herramienta, mas no tu limite en usarla, trata de ser usuario avanzado en lo que uses para trabajar, esa debe ser tu principal meta. Solo las personas apasionadas por algo logran llegar a este nivel, y tu puedes ser una de ellas, porque no? solo tu mismo te puedes dar resistencia, porque todavia no se han levantado las barreras que le digan al genio&#8230; de aqui no pasaras.</p>
<p>Existen dos excelentes articulos sobre la Planificacion de proyectos que indico a continuacion y considero fomentarlo a ser un estilo de trabajo a seguir:</p>
<p><a href="http://www.globalwebtek.com/blog_eng.htm?d6Oqok0CQyrt%FEblog.php,article,253,Orientacion_a_Calidad_de_los_programadores_en_desarrollos_de_Sistemas_Web">Orientacion a Calidad de los Programadores en Desarrollo de Sistemas Web</a></p>
<p><a href="http://www.globalwebtek.com/blog_eng.htm?d6Oqok0CQyrt%FEblog.php,article,127,Gerencia_de_Proyectos_Web">Gerencia de Proyectos Web</a></p>
<p>enjoy!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/570/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=570&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/09/26/calidad-de-servicio-orientacion-al-desarrollador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>
	</item>
		<item>
		<title>Una verdad Incomoda (Linux)</title>
		<link>http://enterx.wordpress.com/2009/09/25/an-inconvenient-truth/</link>
		<comments>http://enterx.wordpress.com/2009/09/25/an-inconvenient-truth/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 16:05:20 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Libre]]></category>
		<category><![CDATA[Software Propietario]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=556</guid>
		<description><![CDATA[An Inconvenient Truth (Linux)
Hablando de Sistemas Operativos, muchos consideramos que Linux posee una estructura de Sistema Operativo sumamente adelantada y superior con Windows como su principal competidor en el mercado de los equipos x86.  Particularmente considero todo un exito el eliminar una particion NTFS para dejar de lleno en el disco una Ext3 (o ext2 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=556&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><h3>An Inconvenient Truth (Linux)</h3>
<p>Hablando de Sistemas Operativos, muchos consideramos que Linux posee una estructura de Sistema Operativo sumamente adelantada y superior con Windows como su principal competidor en el mercado de los equipos x86.  Particularmente considero todo un exito el eliminar una particion NTFS para dejar de lleno en el disco una Ext3 (o ext2 o ext4).</p>
<p><span id="more-556"></span></p>
<p>Pero existe un problema el cual ha sido el gran talon de aquiles del Software Libre (SL), las aplicaciones. Que tantas existen para Linux como para Windows, y sobre todo, que tan maduradas estan. Hoy en dia estamos viendo mas descargas tambien para Linux, pero lamentablemente en Linux existen muchas cosas que aun se trabaja con la rueda de piedra, y no con la rueda de caucho como en Windows. Esto es debido y culpa de los Fabricantes, Casas de Software que no tienen interes en desarrollar sus versiones para Linux, ejemplo de ello es Adobe y su fabuloso paquete de aplicaciones de diseno web.</p>
<p>Existen aplicaciones como VirtualBox, MWare, Wine, etc que permiten traer estas aplicaciones a Linux. Considero a un usuario, como usuario Linux cuando intenta traer estas aplicaciones bajo Wine, el cual crea una carpeta que emula la estructura de unidades y carpetas de Windows dentro de nuestro Linux (una carpeta oculta .wine en el home de nuestro usuario). Los usuarios que usan VBOX para cargar virtualizadamente un Windows no los considero tanto usuarios Linux, debido a que si nos fijamos en este perfil, el usuario cada vez que necesite trabajar sigue recurriendo al Windows que posee dentro de su Linux, sigue siendo un usuario Windows dentro de un Host anfitrion contenedor Linux, en pocas palabras, eres el usuario de la plataforma en la que trabajas, no en la que tengas instalada en tu equipo, sino a la que recurres para hacer tus cosas &#8220;de produccion&#8221; no de ocio.</p>
<p>Hoy en dia ya existen aplicaciones para Linux que no estaban antes, esto es un adelanto, una mejora, pero el hecho no es solo que ya exista una aplicacion para un area (lo cual es mejor que nada y es el inicio) sino el que tan madurado esta dicho proyecto para Linux. Un arquitecto no pensaria en dejar de usar AutoCad por sus equivalentes en Linux sabiendo que no le llega ni por las rodillas a AutoCad, y una empresa de Ingenieria Civil no dejara que sus Arquitectos migren a SL para comenzar a usar una aplicacion mas limitada que ocasione un retraso en la produccion.</p>
<p>Wine es una buena alternativa para tener aplicaciones &#8220;de trabajo&#8221; en nuestro Linux, pero Wine realmente soporta algunas aplicaciones, y versiones algo viejas, y pocas mas recientes. Es triste indicar que aunque el proyecto Wine cumple con lograr entrar aplicaciones de Software Propietario (SP) en Linux, es un proyecto que da soporte principalmente para el area de aplicaciones de entretenimiento (juegos), momentos de ocio. Wine puede dar mas soporte de plataforma de Juegos de consola que de aplicaciones productivas.</p>
<p>En Microsoft SQL Server se pueden crear SQLs (views) complejos e inmensos visualizando graficamente las tablas, estableciendo las relaciones en un diagrama E-R mientras al pie vemos como se va armando los INNER JOIN entre las tablas y mas abajo los campos que la componen. Incluso ya un View SQL hecho, puede unirse a otro, por lo que puede armarse SQLs inmensas que pueden unirse sin problemas a otros Views complejos e inmensos que pueden unirse de igual forma a otras SQLs ya hechas y guardadas donde el usuario edita un poco las cosas pero posee una herramienta que automatiza realmente esta labor haciendola mas rapida y mas perfecta a evitar errores de escritura. Incluso el vulgar Microsoft Access el cual no es considerado un verdadero Gestor de Bases de Datos sino un indexador de archivos por no proporcionar la creacion de Stored Procedure, Tigger ni Jobs, tambien puede armarse SQLs graficamente relacionando tablas.  En MySQL no existe esto, y desconozco si en PostgreSQL exista, pero al pasar por los canales IRC de MySQL y PHP las respuestas ante esta necesidad no eran buenas en linux.</p>
<p>Desafortunadamente el programador de Linux aun debe hacer todo a mano, los entornos visuales que ayudan a agilizar los procesos de trabajo aun no han evolucionado en el Software Libre.  La idea de crear una herramienta y ofrecerla gratuitamente incluyendo su codigo fuente (que no necesariamente se esta sujeto a ello, omitiendo la licencias que asi lo acreditan a ser) no es un insentivo para las grandes empresas, y precisamente por esto es que el SL no ha abarcado mas terreno.  Principalmente aplicaciones aun muy crudas o la falta de esta en un area es lo que ocasiona que Linux no tenga mas usuarios de los que podria tener. Ademas de atribuir el Software Propietario Pirata, el cual es realmente el enemigo de Linux. Estas dos cosas conforman una verdad incomoda para el SL (linux), que nos guste o no, debe admitirse.</p>
<p>Principalmente eres usuario de un sistema por sus aplicaciones, no tanto por la plataforma base, nadie trabaja solo por ser usuario de un sistema, sino de las aplicaciones que se asientan en el, de ahi es que sale tu produccion, las aplicaciones son realmente tu herramienta de trabajo. El sistema operativo Linux es fabuloso, existen aplicaciones que van al mismo nivel o casi, de aplicaciones bajo windows, otras muy por debajo, otras ni existen aun.</p>
<p>Si se presta la necesidad de usar una aplicacion que no existe en linux, o sus equivalentes estan muy crudos y demoran el tiempo de respuesta y produccion, si Wine no soporta bien una aplicacion, o recurres a aplicaciones que Virtualicen el Windows que reemplazaste por tu distribucion Linux, entonces en este punto, no estas usando Linux, ni eres realmente un usuario del sistema libre, sigues estando atado a lo privativo y sigues siendo usuario windows.</p>
<p>Por mucho que nos guste y consideremos a un sistema operativo superior a otro y queramos trabajar en el, llega el momento en que debemos evaluar tiempo y produccion en pos de dar soluciones &#8220;rapidas&#8221; y solidas.  Evaluar esto es lo que ocasiona que aun exista un reselo y rechazo al cambio, la gente busca cambiar para mejorar, no lo opuesto.</p>
<p>Deben existir leyes (que las hay pero no se aplican realmente) para obligar la prohibicion de Software Propietario Pirata en las Empresas, Linux es gratis, solo podrias llegar a pagar el CD o DVD en el que fue copiado, el Software Propietario Pirata igual. Te sorprenderia saber cuanto software pirata es el que funciona en Servidores, Estaciones de Trabajo tanto en sistema como en aplicaciones en pequenas, medianas y grandes companias. Esto ayudaria a cambiarse por costo a muchas empresas, otras lo pagaran sin problema, ya que ya se conocen las herramientas de trabajo y el software adquirido legalmente ofrece un mejor soporte del mismo. Linux posee una gran y extensa comunidad por lo que el soporte tambien es bien enriquecido en el SL, no perfecto, no exacto a veces, pero esta presente.</p>
<p>Suponiendo que se ha ganado la batalla del uso del Software Pirata en las Empresas, igual sigue estando presente el principal problema, las aplicaciones. Cuantas existen, cuantas aun no, que tan al nivel de las Propietarias estan, que tanto en el tiempo tiene que retroceder el usuario para ser productivo en esa herramienta, en comparacion con lo evolucionada que estaria su equivalente en windows.  Acostumbrarse a hacer las cosas mas a mano esperando algun dia la buena noticia de una aplicacion o la misma mas madurada y al mismo nivel o superior que sus hermanos en SP no es la idea, no es la solucion. Muchos seguiran en Windows, bien sea como Host principal o virtualizado, muchos seguiran siendo usuarios Windows, no por costumbre, ni ensenanza, sino por la necesidad de produccion en aplicaciones que si lo ofrecen mejor que sus equivalentes en software libre. No hay que odiar o ver de mala manera a estos usuarios, es bien valida la razon, muy logica y poderosa.</p>
<p>Yo he sido y sigo siendo usuario Windows por las apliciones que uso, podria un dia quitar mi Windows por un completo y rotundo Linux (lo cual ya he hecho) y podria otro dia revertirlo, trabajar en un windows virtual dentro de mi linux, no estaria cambiando nada de como era antes.  Aprendes y te dedicas a trabajar en lo que se pida en el mercado, lo que este en demanda. Si trabajas con .NET estas destinado a ser usuario de Microsoft (aunque Microsoft con el .NET se ha perfilado con su CRL lo msimo que Java con su VirtualMachine, donde logres instalar el .NEt Framework, podras trabajar en .NET), si trabajas con Java, PHP, MySQL puedes trabajar tanto en Windows como en Linux, si eres disenador grafico, en Windows, MAC y en Linux ya no tanto, hay limitantes. Incluso hablando de PHP tambien hay limitantes, codificar mas a mano, en Windows tenemos Dreamweaver (hasta que a Adobe le interese realmente desarrollar para linux).  No es facil ni muy inteligente indicarle a quien trabaja en Dreamweaver el que ya no podra crear paginas visualmente y editando un poco el codigo, sino que tendra que escribir todo, absolutamente todo el mismo, desde cero, en un editor tipo texto que a lo mucho, le permitira ver entre colores la codificacion para evitar errores.</p>
<p>Aunque en Linux muchas cosas estan crudas y aun le falta por evolucionar, igual como David contra Goliat, el ver a Microsoft sacando la plataforma .NET y ofreciendo gratuitamente esta plataforma version Express para estudio (buscando nuevos reclutas para ser programadores de los lenguajes de Microsoft), es prueba clara de que estan perdiendo terreno, un pesado sistema operativo y un .NET robusto e igual de pesado es la deficiencia de Microsoft que Linux ha sabido aprovechar. Hoy en dia se necesita casi un servidor como equipo para cumplir con las exigencias de procesador, disco, memoria, y video de Microsoft tanto para Windows Vista/7 como para el .NET, Linux no necesita tanta maquina para funcionar. Por lo que hoy en dia Microsoft deberia de llamarse Macrosoft.</p>
<p>Pero aun falta mucho para llegar donde deseamos que Linux este, se encamina, a paso lento, pero esa es la trayectoria, pero no tenemos esa eternidad de tiempo ni de vida para ver ese dia, tal vez nuestros hijos, tal vez nosotros mismos pero necesitamos soluciones en este presente (nosotros que vivimos en el) ya luego nuestros hijos gozaran de lo que no tenemos ahora, nuestros hijos, no nosotros, no aun.</p>
<p>No estamos avanzando mucho solo por conseguir algo y decir &#8220;ha! ya existe algo que se parece a lo que busco&#8221; cuando realmente es una aplicacion que es muy limitada, sabiendo que existen aplicaciones mas evolucionadas pero que para usarla debemos volver a Windows, a MAC. Si emuladores como Wine lo soportan, ya es algo, pero si con Wine, lo que necesitamos falla, es inestable, se presentan extranos comportamientos en su uso, es triste para quien le gusta un sistema Linux, estar obligado a dejarlo debido a la necesidad de trabajo y produccion en buen tiempo, en el rechazo de mentalizarse a hacer todo mas a mano sabiendo que existe mas automatizacion en otros sistemas y que es lo que necesitamos y ha lo cual ya estamos acostumbrados. Algunos podrian decir &#8220;realmente no quiero dejar mi sistema linux&#8221; pero solo lo harian si la &#8220;necesidad&#8221; los obliga, no es por gusto ni por capricho, es por una necesidad que estamos obligados a hacer ciertas cosas en la vida, asi lo fue, asi es, y asi lo sera siempre. No es justo que entre un usuario Linux y un usuario Windows a pocos metros cada uno en su equipo, se vea que el usuario Windows puede trabajar mas rapido o con mejores herramientas, y que el usuario Linux para estar a dicha altura deba recurrir a virtualizar o emular bien sea un sistema distinto al que usa, o a lo que realmente primero recurriria un usuario Linux, tratar de integrar a su propio sistema las aplicaciones que tambien desea usar, y no pensarse que no tiene el derecho por usar una plataforma base distinta. Se habla mucho del sitema, como hago esto, como detecto aquello, como instalo esto otro y como lo configuro y uso. Pero muchas de esas preguntas y dudas, son sobre el propio sistema, sobre cosas a anexarle al sistema para el sistema, pero nuestro interes real no es la base sino las herramientas, lo cual es el punto de todo esto. El sistema ya es mas que aceptable y posee una perfeccion mas evolucioanda que otros sisitemas, asi lo consideramos muchos, pero el otro sistema, con sus deficiencias, esta mas enrriquecido en aplicaciones que automatizan mucho mas la labor que otras no tan automatizadas y las cuales debemos aun hacer todo a mano como sacrificio por mantenernos en el sistema que queremos, es triste y es una verdad muy incomoda que debemos admitir.</p>
<p>Queremos participar en ser empleados de una empresa que tenga como filosofia el Software Libre, el uso de Linux y poco interes en algo distinto a esto, pero desafortunadamente, es al reves, aun existe en el mercado mas empresas privadas que publicas del gobierno, interesadas mas en un sistema con muchas mas herramientas mas automaticas y rapidas. El problema no es la falta de educacion de Linux en las escuelas o Universidades, es la falta de aplicaciones en el sistema. No todos podemos trabajar en el area de Seguridad Informatica, en Servidores, muchos trabajan en otras areas en donde predominan las aplicaciones bajo otros sistemas, y donde esta esto, estara el usuario que sabe que ha elegido bien, porque vuelve a comentarse, es la necesidad y la inteligente decision de esto, no el capricho o gusto por apegarse a algo, perfecto es el sistema, ni de virus hay que preocuparse casi, pero lo quequeremos realmente, aun solo gatea y hasta camina un poco, pero muchas cosas que necesitamos aun no corren como quisiesemos.</p>
<p>Se podria decir, &#8220;bien, participa en su desarrollo para que evolucione esa herramienta que tanto necesitas&#8221;, para cumplir con esto, 1ero que la persona tenga los conocimientos para ello, 2do que exista una organizacion que le pague a esa persona o grupo de personas por dicho desarrollo, 3ero evaluar si estara bajo licencia publica, si se dera el codigo (lo cual seria lo ideal) es lo que siempre ha hecho que evlucione y se perfeccionen las cosas y que se pueda confiar en lo que se tiene. Pero no mucha gente posee los conocimientos u organizaciones que se interesen (esto podria depender del pais en el que vivamos), vemos proyectos que avanzan, que mueren para ser luego otro proyecto que le da continuidad bajo otro nombre, vemos como oficilamente un desarrollador anuncia que no mantendra mas el proyecto hasta X version, y verlo morir o ver como otras personas lo toman y continuan. Al menos en mi pais existen proyectos de distribuciones linux, primero la base y luego las aplicaciones, pero vemos que cada dia salen mas y mas distribuciones, existen muchas, pero y las aplicaciones? no solo que existan sino que tan maduradas estan en comparacion con sus equivalentes. Sobre desarrollar primero para usar despues, no todo el mundo pensaria primero tener que ser mecanico para luego poder usar un auto. Debe demostrarseles a las Casas de Software y demas Fabricantes que si existen muchos usuarios Linux y de sistemas similares, que desarrollen para esta base, que no nos tengan marginados por considerar que no hay gente ahi.</p>
<p>Que vino primero, el huevo o la gallina?, con la falta de aplicaciones solidas, muchos usuarios no tendrian mucho interes en entrar en linux, pero si no existen muchos usuarios con interes en ingresar al mundo de linux, no hay mucho interes en desarrollar aplicaciones para el.  Se esta haciendo en el orden correcto, el unico que hay, meter a tanta gente como se pueda en linux, las grandes companias al ver esto, tomarian la decision de desarrollar para todos estos usuarios, porque si esto no sucede, muchos usuarios Linux volveran a Windows puesto que la necesidad los obliga, no el capricho. Bien, esta Wine, pero y si no lo soporta bien, terminas usando versiones viejas de un programa mas actualizado en Windows para que camine bien en Linux, si Wine o semejantes no existiesen, estarias peor que ahora, si usas VirtualBox para trabajar en Windows, volvemos al punto de que no te has pasado a Linux realmente, sigues siendo usuario Windows mas que todo y parcialmente un usuario linux, serias un animal con la piel de otro.</p>
<p>Otra cosa a tomarse en cuenta es que sabemos bien que Linux es un sistema &#8220;delicado&#8221; si tocas algo que no debiste, si instalas algo que tiene repercuciones sobre otras partes, puedes llegar a vivir un infierno, por lo que para usar Linux y para ser un usuario de este sistema, debes cuidar bien cada paso. El usuario Windows no se preocupa si toca o no algo del sistema debido a que si el sistema queda embasurado (aplicaciones desintaladas de las cuales queda informacion, vinculos rotos, registro de windows embasurado), tendrias que borrar la carpeta C:\Windows  o carpetas como System32 u otras para danar el sistema operativo, y es posible en vista de que el usuario windows puede tocar cuaqluier cosa, no como el usuario Linux que no puede hacer nada fuera de su carpeta de usuario y de lo cual para poder hacer cosas fuera debes iniciarse como usuario root, por lo que Linux es un sistema que se trata de proteger mas, pero si tocas algo como superusuario que no debiste haber tocado, sera de algo que recordaras por varios dias o por siempre. Yo en lo personal he llegado a desintalar algun paquete del cual he desintalado una dependencia que es necesitada por otras aplicaciones, lo cual hasta me ha hecho volver a instalar todo el sistema nuevamente, un usuario windows preferiria volver a windows que toparse con una situacion de este tipo.</p>
<p>Solo comparando es que vemos las deficiencias, y en base a esto tomamos la decision y eleccion, no por capricho, no por un gusto indivualista o aislado, no por que asi fue como me ensenaron y no quiero aprender nada nuevo que no conozca. Es por la necesidad, por como esta adelantado algo y saber que eso es lo que queremos usar y sabemos que debemos ir a esa direccion, ir a donde esta esto, porque sabemos bien que es lo que mejor nos conviene.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/556/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/556/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/556/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/556/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/556/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/556/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/556/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/556/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/556/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/556/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=556&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/09/25/an-inconvenient-truth/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>
	</item>
		<item>
		<title>Apache, PHP y MySQL en Linux</title>
		<link>http://enterx.wordpress.com/2009/09/23/apache-php-y-mysql-en-linux/</link>
		<comments>http://enterx.wordpress.com/2009/09/23/apache-php-y-mysql-en-linux/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 19:37:56 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Plataforma Web]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[mis apuntes]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=546</guid>
		<description><![CDATA[Anteriormente previo a este articulo, tenemos el material de Comenzando con un Proyecto Web con el cual se hacia referencia a montar LAMPP como plaforma web de trabajo. Estas aplicaciones como EasyPHP, XAMPP, y demas familias o parecidos no son considerados realmente para ambiente de produccion, aunque puede decirse que si deben existir plataformas web [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=546&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Anteriormente previo a este articulo, tenemos el material de <a href="http://enterx.wordpress.com/2009/09/06/comenzando-con-un-proyecto-web/">Comenzando con un Proyecto Web</a> con el cual se hacia referencia a montar LAMPP como plaforma web de trabajo. Estas aplicaciones como EasyPHP, XAMPP, y demas familias o parecidos no son considerados realmente para ambiente de produccion, aunque puede decirse que si deben existir plataformas web sostenidas con estas herramientas que nos montan rapidamente Apache, PHP y MySQL listos para trabajar en conjunto.</p>
<p><span id="more-546"></span></p>
<p>Para la seccion de &#8220;mis apuntes&#8221; recopilo la informacion que en internet se nos ofrece, instrucciones que se repiten en distintas partes sobre como colocar Apache, PHP y MySQL en nuestro sistema Linux.</p>
<h3>Apache: <strong>sudo apt-get install apache2</strong></h3>
<h3>PHP5: <strong>sudo apt-get install php5 libapache2-mod-php5</strong></h3>
<p>Desde la instalacion de Apache ya podemos escribir en el navegador localhost y mostrarsenos <strong>It Works!</strong> lo cual indica que Apache esta corriendo, luego de instalar PHP5 reiniciamos Apache para que se acople la reciente colocacion de PHP5.</p>
<p><strong>sudo /etc/init.d/apache2 restart</strong></p>
<p>Si hacemos una rapida pagina php con el siguiente contenido: <strong>&lt;?php phpinfo();?&gt;</strong> y buscamos esa pagina, deberia aparecernos la informacion de PHP. Por internet circula el ejemplo de crear un archivo con este contenido y llamarlo desde el localhost</p>
<p><strong>sudo gedit /var/www/testphp.php</strong></p>
<p>Este archivo puede llamarse como el usuario guste, en esta ocasion se le colocaria unicamente lo de: <strong>&lt;?php phpinfo();?&gt;</strong></p>
<p>Si escribis en el navegador: <strong>http://localhost/testphp.php</strong> se deberia visualizar la informacion referente al PHP5 instalado.</p>
<h3>MySQL: <strong>sudo apt-get install mysql-server mysql-client mysql-admin mysql-doc-5.0</strong></h3>
<p>Al finalizar la instalacion por terminal nos mostrara unas ventanas graticas por la misma terminal donde nos pedira password para el usuario root entre otras cosas para dar por culminado su instalacion.</p>
<p>Solo nos queda instalar el <a href="http://es.wikipedia.org/wiki/PhpMyAdmin">phpMyAdmin</a> de la siguiente forma:</p>
<h3><strong>sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin</strong></h3>
<p>Finalmente solo nos queda que PHP trabaje con MySQL, para esto debemos editar el archivo <strong>php.ini</strong> en el cual solo debemos descomentar una linea.</p>
<p><strong>sudo gedit /etc/php5/apache2/php.ini</strong></p>
<p>Buscamos la linea <strong>;extension=mysql</strong> y le quitamos el <strong>;</strong> (punto y coma), guardamos y cerramos.</p>
<p>Ya por ultimo reiniciamos nuestro servidor Apache y todo listo.</p>
<p><strong>sudo /etc/init.d/apache2 restart</strong></p>
<p>Lo que pongamos en: <strong>/var/www</strong> sera visto en <strong>http://localhost/pagina.php</strong></p>
<p>Podemos hacernos un vinculo a esa carpeta, por ejemplo, en el Escritorio:</p>
<p><strong>sudo ln -s /var/www /home/miusuario/Escritorio/www</strong></p>
<p>Se nos creara una carpeta <strong>www</strong> en el Escritorio con un simbolo de una flecha, indicativo de que es un vinculo, igual como colocar un vinculo en el Escritorio de Windows, pero en nuestro caso, en Linux. Pero no poseemos privilegios para agregar, quitar o editar archivos dentro de <strong>/var/www</strong> por lo que ademas de ya haber establecido el vinculo, sea antes o despues de esto, debemos darle propiedades o permisos a nuestro usuario a dicha ruta.</p>
<p><strong>sudo chown miusuario /var/www</strong></p>
<p>Con esto ya nuestro usuario puede trabajar con esta carpeta, nuestra carpeta de trabajo, todo lo que contengamos ahi sera visto en el localhost de Apache.</p>
<p>Sobre VirtualHost puede verse en el post comentado al inicio de este titulado: <a href="http://enterx.wordpress.com/2009/09/06/comenzando-con-un-proyecto-web/">Comenzando un Proyecto Web</a>.</p>
<h3>Comentando sobre la situacion de &#8220;table read only&#8221; en MySQL</h3>
<p>Buscando una lista de Paises y sus Ciudades (aunque en mi caso buscaba Paises, Estados y sus Ciudades) encontre <a href="http://www.formatoweb.com.ar/ajax/select_dependientes.php">este instructivo</a> sobre Select dependientes (de 2 select y de hasta 3 select) con lo cual para el ejemplo de 2 select dependientes, el ejemplo de descarga viene con un archivo .sql que importamos a mysql (o por phpmyadmin) a nuestra BD o creamos la que necesita dicho archivo para incluir estas tablas: <strong>lista_paises</strong> y <strong>lista_estados</strong>.  Pero faltan paises y sus ciudades, asi que al intentar ingresar mi pais, solo recibo el aviso de que la tabla es de solo lectura <span style="color:#ff0000;">&#8216;read only&#8217;</span> por lo que buscando encontre <a href="http://codigotucumano.blogspot.com/2009/07/mysql-tablas-solo-lectura.html#comments">este post</a> al cual me hubiese gustado escribirme un comentario de agradecimiento a su autor, pero en link de comentario no me carga la ventana de comentarios (no sea que ya lo tenga cerrado) ademas de que nunca he aprobado el que una persona tenga que registrarse para tan solo pueda escribir un comentario, estos deberian ser libres, ya que despues de todo se prestan a moderacion por parte del autor y editor del articulo. Al menos espero hacer ping al post por establecer su link aqui.</p>
<p>Entonces, como comentan en el post del blog ya mencionado, con cambiar al dueno y grupo para tener acceso a manipular las tablas. Coloco como apuntes las mismas indicaciones puesto que ya me ha pasado en repetidas veces, que informacion de otras partes con el tiempo pueden ya no estar ahi, link rotos, blogs cerrados, informacion cambiada, donde gracias al cache de google podemos volver a llegar a dicha informacion, asi que para tener un respaldo y sabemos que es mas facil conseguir las cosas cuando la informacion se repite mas de una vez en internet, indico los pasos para evitarnos el <span style="color:#ff0000;">&#8216;read only&#8217;</span> de cualquier tabla al momento de intentar ingresar informacion en ella.</p>
<p>Nos dirigimos donde MySQL tiene todas las BDs incluyendo las nuestras:</p>
<p><strong>cd /var/lib/mysql</strong></p>
<p>Y procedemos a hacer el ajuste de dueno y grupo, donde indicamos que todas (el *) las BDs y tablas pertenescan al grupo de mysql, ya que en mi caso, las tablas importadas pudieron haber sido creadas por un usuario de otro grupo y por ende no se nos permite alterarlas.</p>
<p><strong><span style="color:#ff0000;">Advertencia:</span></strong></p>
<p>Antes de ejecutar la siguiente instruccion, recordamos que se debe de estar dentro de la carpeta donde se dara/cambiara estos permisos, por eso se comenta mas arriba que debemos estar en esa carpeta (cd /var/lib/mysql) ya si abres una terminal y ejecutas la instruccion a continuacion, estaras cambiandole a tu carpeta de usuario (/home/miusuario/)  tus permisos sobre ella y sera el grupo mysql el que sera dueno de tu /home/miusuario, por lo que debe quedar claro que donde se esta haciendo esto.</p>
<p><strong>sudo chown -R mysql:mysql *</strong></p>
<p>Para que MySQL tome los cambios (los cuales MySQL aun no sabe) le ayudamos a que se entere reiniciandolo:</p>
<p><strong>sudo /etc/init.d/mysql restart</strong></p>
<p>Si en tu caso no tienes Apache, PHP y MySQL instalados por separado (integrados o no) sino que tienes XAMPP/LAMPP entonces para reiniciar MySQL si la mente no me falla debria ser:</p>
<p><strong>sudo /opt/lampp/lampp restartmysql</strong></p>
<p>Sino en todo caso con reinciiar todo el LAMPP vastaria:</p>
<p><strong>sudo /opt/lampp/lampp restart</strong></p>
<p>Luego de haber reiniciado el MySQL ya deberiamos poder ingresar informacion a las tablas.</p>
<p>Otra ultima cosa&#8230;</p>
<h3>Apache no muestra mis archivos o carpetas dentro de la raiz</h3>
<p>Me ha pasado que luego de un respaldo y reinstalacion del sistema por razones que no caben o no entran en este tema, al volver a colocar mi respaldo en /var/www/ en localhost no se me mostraban todas las carpetas de proyectos web, solo los archivos de la raiz. Me fije que al crear una carpeta nueva, esta si se veia lo cual indicaba que era un problema de persmisos, exactamente eso, con un chmod 777 (mas rapido que propiedades de cada carpeta e indicar Acceso a sus archivos en Grupo y Otros) con un <span style="color:#000000;"><strong>sudo chmod -Rfv 777 /var/www/</strong></span> recursivamente colocamos todo el contenido de carpetas de /var/www a ser visto nuevamente por Apache para un servidor de desarrollo No de produccion, hablamos de un localhost en este caso.</p>
<p>enjoy!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/546/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/546/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/546/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=546&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/09/23/apache-php-y-mysql-en-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>
	</item>
		<item>
		<title>Comenzando con un Proyecto Web</title>
		<link>http://enterx.wordpress.com/2009/09/06/comenzando-con-un-proyecto-web/</link>
		<comments>http://enterx.wordpress.com/2009/09/06/comenzando-con-un-proyecto-web/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 13:56:10 +0000</pubDate>
		<dc:creator>jose</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Plataforma Web]]></category>

		<guid isPermaLink="false">http://enterx.wordpress.com/?p=470</guid>
		<description><![CDATA[

En este post se comenta el uso de XAMPP, bien sea para Windows como para Linux (LAMPP), pero en esta ocasion, esta practica esta orientada bajo Linux.
Descargamos lampp de apachefriends.org abrimos una terminal, nos dirigimos a la carpeta donde se encuentra y lo descomprimidos en la carpeta /opt que es donde recomiendan en la web.
 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=470&subd=enterx&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><blockquote>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-471" title="xampp" src="http://enterx.files.wordpress.com/2009/09/xampp1.jpg?w=178&#038;h=157" alt="xampp" width="178" height="157" /></p>
<p>En este post se comenta el uso de XAMPP, bien sea para Windows como para Linux (LAMPP), pero en esta ocasion, esta practica esta orientada bajo Linux.</p>
<p>Descargamos lampp de apachefriends.org abrimos una terminal, nos dirigimos a la carpeta donde se encuentra y lo descomprimidos en la carpeta /opt que es donde recomiendan en la web.</p>
<p><span id="more-462"> <span id="more-470"></span></span></p>
<p>sudo tar xvfz xampp-linux-1.7.2.tar.gz -C /opt</p>
<p>sudo: Super User Do (algo asi como decir, el superusuario va a hacer tal cosa, darle privilegios para ello) luego del comando tar, los parametros x(eXtraer, v:verbose ver la descompresion, f: el objeto es de tipo archivo(file), z: descomprime con gzip, ungzip, gunzip -C le indica donde lo descomprimira (el directorio).</p>
<p>La carpeta opt es para la instalación de paquetes que no requieren dependencias, debe ser por esto que aconsejan que sea ahi. Luego de descomprimirlo lo ejecutamos:</p>
<p>sudo /opt/lampp/lampp start</p>
<p>En caso de que indique un error que no permita correr Apache, esto es debido a algun paquete de Apache que debe estar activo y en nuestro sistema que de seguro fue descargo de algun repositorio al momento de actualiar algo, lo detenemos:</p>
<p>sudo /etc/init.d/apache2 stop</p>
<p>Volvemos a iniciar lampp, si todo se inicia bien, procedemos a abrir el navegador y escribimos localhost. Debe salir o “Its Works!” o la ventana de presentacion de lampp, donde escogemos nuestro idioma para luego acceder al panel o menu de lampp.</p>
<p>Debemos activar la seguridad puesto que los usuarios de lampp poseen claves vacias predeterminadamente, lo cual no es seguro. En el menu de la izquieda en la web local de lampp podremos ver Status o Security donde nos indican que hacer para habilitarla.</p>
<p>sudo /opt/lampp/lampp security Indicamos [yes] a todo y le indicamos un password a todos, puede ser el mismo password o preferiblemente por mayor seguridad distintos. Debemos cerrar la web de lampp, debemos por la terminal detener lampp y volverlo a iniciar:</p>
<p>sudo /opt/lampp/lampp restart</p>
<p>Para quienes no lo sepan, lampp si trae de forma grafica el poder ver el status play/stop de apache, mysql y php de forma ventana, un script hecho en python que nos ayuda visualmente con el lampp:</p>
<p>sudo /opt/lampp/share/xampp-control-panel/xampp-control-panel</p>
<p>Algo asi como la interfaz que xampp ofrece para windows Abrimos el navegador, o refresh a la pagina de lampp y nos pedira login y password, el usuario es: lampp, para myphpadmin el usuario es pma, pero este usuario no tiene privilegios para crear bases de datos ni usuarios, por lo que en el caso de myphpadmin entramos con el usuario root, y desde este usuario, nos creamos otro, que es con el que trabajariamos con privilegios de crear databases, tables, view, otros usuarios de ser necesario, etc.</p>
<p>Al final de la web de descarga de apachefriends.org se encuentra los comandos de xampp/lampp, los que se han indicado en este post y otros. Tanto para xampp en windows como lampp para linux, nuestras paginas .php, .hml, etc, deben estar en la carpeta “htdocs” en linux /opt/lampp/htdocs pero obviamete no podemos colocar de forma revuelta estos archivos, mas si son varios proyectos web y no uno solo, lo predeterminado que he visto a consejo es colocar dentro de la carpeta /htdocs una carpeta principal y dentro de esta las subcarpetas por cada proyecto, de esa forma cuando un dia agamos respaldo, tomamos la carpeta padre y listo, puede ser proyectosweb, pagweb o webs.</p>
<p>sudo mkdir /opt/lampp/htdocs/webs</p>
<p>Pero no tenemos el debido acceso de publicar en esta carpeta debido a que nuestro usuario no es el usuario root, en la terminal podemos tener esos privilegios cada vez que reurrimos al comando sudo, pero para el momento de publicar archivos web, no se nos permitira agregar archivos ahi. Para evitar esto, lo que hacemos es que nuestro usuario herede la carpeta.</p>
<p>sudo chown usuario -R /opt/lampp/htdocs/webs</p>
<p>Podemos darle permisos totales 777 a la carpeta pero en caso de que a ella accedan otros usuarios, por intranet, internet lo mejor es que sea 775 por seguridad.</p>
<p>sudo chmod 775 -R /opt/lampp/htdocs/webs</p>
<p>Vinculemos la carpeta que esta en /htdocs/webs con una que apunte a ella en nuestra carpeta de usuario:</p>
<p>ln -s /opt/lampp/htdocs/webs /home/usuario</p>
<p>De esta forma no tenemos que ir hasta /opt/lampp/htdocs/webs/proyecto para guardar algun archivo web, sino que podremos guardar nuestros archivos en una carpeta dentro de nuestras carpetas de usuario ya que el vinculo o link fue creado.</p>
<p>Lo que coloquemos en /home/usuario/webs/proyecto se guardara realmente en /opt/lampp/htdocs/webs/proyecto. Igual como el Windows cuando se crea un acceso directo en el escritorio, eso mismo es esto pero en linux.</p>
<p>Para evitar estar escribiendo en el navegador:</p>
<p><a href="http://localhost/webs/proyectoX/index.php">http://localhost/webs/proyectoX/index.php</a> creamos un host virtual, como un Alias para no indicar esta URL local sino solo poner http://proyectoX/. Esto lo hacemos editando un archivo (el httpd.conf de apache):</p>
<p>sudo gedit /opt/lampp/etc/httpd.conf</p>
<p>Buscamos y le quitamos el simbolo # a lo siguiente para descomentariarlo y hacerlo activo o util:</p>
<p>#Include etc/extra/httpd-vhosts.conf</p>
<p>El httpd-vhosts.conf es otro archivo al cual tambien entraremos para descomentariarle algo de igual forma:</p>
<p>sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf</p>
<p>Este archivo ya viene con unos ejemplos para crear o establecer unos hostvirtuales por lo que tomanos uno de estos y lo editamos para su uso. Copie y pegue uno de los ejemplos y lo edite quedando esto:</p>
<p>DocumentRoot /opt/lampp/htdocs/webs/sahim ServerName sahim</p>
<p>En mi caso “sahim” seria un proyecto que estaria dentro de la carpeta principal webs: /opt/lampp/htdocs/webs/sahim</p>
<p>Guardamos el archivo y reiniciamos lampp:</p>
<p>sudo /opt/lampp/lampp restart</p>
<p>Solo falta que al momento de escribir en el navegador (firefox en mi caso): <a href="http://sahim/">http://sahim</a></p>
<p>Nos cargue la pagina index.html o index.php que tengamos hecha y no el que nos indique error pagina no encontrada, ya que nuestro sistema operativo resolvera la URL y no la encontrara en internet. Esto se arregla editando y ajustando algo en el archivo hosts ubicado en la carpeta /etc/hosts.</p>
<p>sudo gedit /etc/hosts</p>
<p>En este archivo veremos al comienzo unas direcciones IP con un nombre algo asi como: 127.0.0.1 localhost Simplemente debajo de esta o de la ultima, colocamos la nuestra, por ejemplo en mi caso:</p>
<p>127.0.0.1           localhost</p>
<p>127.0.0.1           sahim</p>
<p>Guardamos el archivo y en el navegador escribimos el nombre del proyecto bien sea: http://proyecto o solo proyecto (el navegador anexara el hhtp delante) En mi caso seria: <a href="http://sahim/">http://sahim</a></p>
<p>La pagina index que tengas en la carpeta aparecera, puedes crear algo de prueba, abriendo el editor de texto y escribiendo algo como:</p>
<p><!--p  echo “Hola Mundo”;  -->Guardas el archivo llamandolo index.php en /webs/proyecto y al escribir en el navegador: http://proyecto debe aparecer una pagina que diga: Hola Mundo Incluso solo escribiendo en un txt que guardaremos como .php es mas que suficiente para probar. Con esto podremos comenzar con un proyecto web local con la base de lampp, el resto ya es de tu parte con php y mysql, o postgresql, queda a tu criterio.</p>
<h2>Solucionando algunos problemas en EasyPHP</h2>
<p>Si usas EasyPHP en vez de XAMPP/LAMPP veras que con EasyPHP-1.8 solo tienes que hacer un pequeno ajuste en el archivo de configuracion de Apache (<strong>httpd.conf</strong>) para que el <strong>localhost</strong> del navegador apunte a tu carpeta de proyectos web. No he encontrado EasyPHP para linux asi que podriamos suponer que es solo para Windows. Si tienes tu carpeta de proyectos web en <strong>C:\www </strong>en el archivo de Apache (httpd.conf) debes buscar el <strong>DocumentRoot</strong> y cambiarlo a tu ruta.</p>
<p>El <strong>DocumentRoot &#8220;$[path]/www&#8221;</strong> lo cambias por <strong>DocumentRoot &#8220;C:\www&#8221;</strong></p>
<p>Esto seria todo para el EasyPHP-1.8 pero si usas un EasyPHP superior version 2.0 o v3.0, en la web de EasyPHP (www.easyphp.org) para las fechas de este Post, estan las versiones EasyPHP-5.3.0 Release y 6.0 Developer. En estas versiones (superior a la 1.8) en el archivo de Apache debemos editar otra cosa ademas de lo ya comentado.</p>
<p>Algo mas abajo del DocumentRoot busca algo que dice:</p>
<p><!-- 		@page { margin: 2cm } 		PRE { font-family: "Liberation Serif" } 		P { margin-bottom: 0.21cm } --></p></blockquote>
<pre>#
# This should be changed to whatever you set DocumentRoot to.
# ======================================================
# !!! DO NOT CHANGE THIS LINE AND THE FOLLOWING ONES !!!
# DocumentRootDirectory
<strong>&lt;Directory "C:/www"&gt;</strong>
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

&lt;/Directory&gt;

Ya en mi caso tengo indicado <strong>&lt;Directory "C:\www"&gt;</strong> pero originalmente esta seccion aparece con <strong>&lt;Directory "${path}"</strong> la cual cambias con la ruta de tu carpeta.
Si no haces esto, al momento de escribir el localhost en el navegador, te mostrara un <strong>Acceso denegado Error 403</strong>.

enjoy!</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/enterx.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/enterx.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/enterx.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/enterx.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/enterx.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/enterx.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/enterx.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/enterx.wordpress.com/470/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/enterx.wordpress.com/470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/enterx.wordpress.com/470/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=enterx.wordpress.com&blog=343893&post=470&subd=enterx&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://enterx.wordpress.com/2009/09/06/comenzando-con-un-proyecto-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/15dc6b3278c48d892624cd63a8bcfb08?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jose</media:title>
		</media:content>

		<media:content url="http://enterx.files.wordpress.com/2009/09/xampp1.jpg" medium="image">
			<media:title type="html">xampp</media:title>
		</media:content>
	</item>
	</channel>
</rss>