sábado, 30 de enero de 2010

Biblioteca Digital Mundial

Saludos Amigos Mios,
en la entrada de hoy quiero compartir algo que llegó a mi correo, creo yo es un gran aporte a la comunidad mundial por parte de la unesco, les copio el texto para que se enteren de lo mismo que yo, espero les guste.

De Interés cultural
La Unesco lanzó la Biblioteca Digital Mundial

El acceso es gratuito y los usuarios pueden ingresar directamente por la Web, sin necesidad de registrarse.

Les envió lo que considero, sin duda, el archivo CULTURAL más importante que he recibido!!! LA NOTICIA DEL LANZAMIENTO EN INTERNET DE LA WDL..... LA BIBLIOTECA DIGITAL MUNDIAL. QUE REGALAZO DE LA UNESCO PARA LA HUMANIDAD ENTERA!!!... ¡disponible en Internet, a través del sitio www.wdl.org

Es una noticia QUE NO SOLO VALE LA PENA REENVIAR SINO QUE ES UN DEBER ÈTICO, HACERLO!!

Reúne mapas, textos, fotos, grabaciones y películas de todos los tiempos y explica en siete idiomas las joyas y reliquias culturales de todas las bibliotecas del planeta.
Tiene, sobre todo, carácter patrimonial", anticipó ayer Abdelaziz Abid, coordinador del proyecto impulsado por la Unesco y otras 32 instituciones.
La BDM no ofrecerá documentos corrientes, sino "con valor de patrimonio, que permitirán apreciar y conocer mejor las culturas del mundo en idiomas diferentes: Árabe, chino, inglés, francés, ruso, español y portugués. Pero hay documentos en lí­nea en más de 50 idiomas".

Entre los documentos más antiguos hay algunos códices precolombinos, gracias a la contribución de México, y los primeros mapas de América, dibujados por Diego Gutiérrez para el rey de España en 1562", explica Abid.
Los tesoros incluyen el Hyakumanto darani, un documento en japonés publicado en el año 764 y considerado el primer texto impreso de la historia; un relato de los aztecas que constituye la primera mención del Nuevo Mundo; trabajos de cientí­ficos árabes desvelando el misterio del Álgebra; huesos utilizados como oráculos y estelas chinas; la Biblia de Gutemberg; antiguas fotos latinoamericanas de la Biblioteca Nacional de Brasil y la célebre Biblia del Diablo, del siglo XIII, de la Biblioteca Nacional de Suecia.
Fácil de navegar

Cada joya de la cultura universal aparece acompañada de una breve explicación de su contenido y su significado. Los documentos fueron escaneados e incorporados en su idioma original, pero las explicaciones aparecen en siete lenguas, entre ellas EL ESPAÑOL.
La biblioteca comienza con unos 1200 documentos, pero ha sido pensada para recibir un número ilimitado de textos, grabados, mapas, fotografías e ilustraciones.

Cómo se accede al sitio global.
Aunque será presentado oficialmente hoy en la sede de la Unesco, en Parí­s, la Biblioteca Digital Mundial ya está disponible en Internet, a través del sitio www.wdl.org
El acceso es gratuito y los usuarios pueden ingresar directamente por la Web, sin necesidad de registrarse.
Cuando uno hace clic sobre la dirección www.wdl.org , tiene la sensación de tocar con las manos la historia universal del conocimiento.
Permite al internauta orientar su búsqueda por épocas, zonas geográficas, tipo de documento e institución. El sistema propone las explicaciones en siete idiomas (árabe, chino, inglés, francés, ruso, español y portugués). Los documentos por su parte, han sido escaneados en su lengua original. De ese modo, es posible, por ejemplo, estudiar en detalle el Evangelio de San Mateo traducido en aleutiano por el misionero ruso Ioann Veniamiov, en 1840.
Con un simple clic, se pueden pasar las páginas de un libro, acercar o alejar los textos y moverlos en todos los sentidos. La excelente definición de las imágenes permite una lectura cómoda y minuciosa.
Entre las joyas que contiene por el momento la BDM está la Declaración de Independencia de Estados Unidos, así como las Constituciones de numerosos países; un texto japonés del siglo VIII considerado la primera impresión de la historia; el diario de un estudioso veneciano que acompañó a Fernando de Magallanes en su viaje alrededor del mundo; el original de las "Fabulas" de Lafontaine, el primer libro publicado en Filipinas en español y tagalog, la Biblia de Gutemberg, y unas pinturas rupestres africanas que datan de 8.000 A .C
Dos regiones del mundo están particularmente bien representadas:
América Latina y Medio Oriente. Eso se debe a la activa participación de la Biblioteca Nacional de Brasil, la biblioteca Alejandrina de Egipto y la Universidad Rey Abdula de Arabia Saudita.
La estructura de la BDM fue calcada del proyecto de digitalización la Biblioteca del Congreso de Estados Unidos, que comenzó en 1991 y actualmente contiene 11 millones de documentos en línea.
Sus responsables afirman que la BDM está sobre todo destinada a investigadores, maestros y alumnos. Pero la importancia que reviste ese sitio va mucho más allá de la incitación al estudio de las nuevas generaciones que viven en un mundo audiovisual. Este proyecto tampoco es un simple compendio de historia en lí­nea: es la posibilidad de acceder, í­ntimamente y sin lí­mite de tiempo, al ejemplar invalorable, inabordable, único, que cada uno alguna vez soñó con conocer.-
Disfruten del conocimiento
Y COMPARTANLO!!!!

"Un mecanismo de intercomunicación mundial será creado, abarcando al planeta entero, libre de las trabas y restricciones nacionales, y funcionando con maravillosa rapidez y perfecta regularidad".

Shoghi Effendi (1897-1957).


sábado, 21 de noviembre de 2009

Social Media - Asuncion Digital Week - Paraguay

He vuelto nuevamente luego de muuucho tiempo

En esta ocasion les traigo un video que rescate gracias a Vivian, filmada por Randallflag (alias de Adrian) del Asuncion Digital Week, este en particular filmado el dia 19 de Noviembre (de 2009).

Y me parecio muy importante poder compartirlo con Uds.




Es muy importante que los empresarios, y la gente en general empiecen a tomar conciencia de lo importante del social media.

Saludos!.

viernes, 11 de septiembre de 2009

Carlos Zayas Guggiari: Un debate con consenso conocido

Carlos Zayas Guggiari: Un debate con consenso conocido

Creo que merece la pena que esto sea leido por todos ya que la libertad es un derecho de todo ser racional (e inclusive aquellos que creen serlo pero no lo son).

Yo personalmente prefiero las licencias basadas en BSD, ya que para mi opinion son las mas libres, aunque el objetivo fundamental de la licencia GPL es que el software libre y sus derivados continuen siendolo, pero para mi ya queda a cargo del que implementa dichos codigos, yo normalmente lo dejo como se diría, "a conciencia".

Pd. creo que la frase que saque en el primer párrafo es de la película Transformers y fue enunciada por Optimus Prime.

martes, 11 de agosto de 2009

Servidor SVN con usuarios y permisos de repositorios

Hola nuevamente, recientemente he abierto un nuevo blog que se dedicará netamente a lo que es php, dicho blog cuya direccion es http://aprendefacilphp.blogspot.com/ será entonces el lugar donde publique mis codigos de php y muestre lo poco que sé. ;P

Bueno, para empezar con nuestro tema quisiera darles una breve explicación de lo que es el SVN o Sistema de Control de Versiones, este sistema fue "diseñado" para sustituir al CVS (Sistema Concurrente de Versiones). Lo que permite es que varias personas trabajando en un mismo proyecto (ya sea de programación o no) puedan escribir sus respectivos archivos, realizar modificaciones e inclusive solucionar problemas sin temor a que se sobre-escriban los fuentes. Por ej. Yo tengo dos compañeros mas de trabajo, y todos estamos trabajando en un proyecto de desarrollo web, cada uno de nosotros trabaja en un área específica, pero a veces uno encuentra un problema en el código del otro y lo soluciona, pero que ocurre si el otro estaba trabajando en el mismo archivo, pues ahi es donde surge el sistema, Cuando alguien empieza a trabajar en un archivo (en este caso existente) al descargarlo se dice que se descargó en un número de versión digamos en este caso el 89 y al mismo tiempo mi compañero tambien descargó ese mismo número de versión, cuando yo suba mis modificaciones (ya que lo hago primero) el archivo pasará a la versión 90, y cuando mi compañero quiera subir sus cambios, el sistema le notificará que hay una versión mas reciente y que el archivo que el descargó tiene una anterior, notificándole asi que puede haber un conflicto, normalmente el sistema descarga ambos archivos y permite al usuario "corregir" o tomar los cambios de uno sin afectar al otro, una vez solucionado se suben los nuevos cambios y el archivo pasa a pertenecer a la version 91. Ese es sólo un ej. Hay varios mas así por ejemplo, podemos tener branchs o saltos o ramas de versiones que a partir de un número determinado sigue en paralelo al otro, esto por ej, cuando se desarrollan sistemas para clientes, y necesitan ser iguales en la base pero diferentes en algunos detalles, pues este sistema lo facilita, asi como tambien luego permite hacer un merge o mezcla de ambos para obtener una version conjunta de ambos. Bueno, no seguiré explicando porque se hará muy largo esto, no soy muy bueno con la teoría así que les sugiero pregunten a papá google que pueden hacer con el SVN y prueben, que echando a perder se aprende ;P

Bueno, luego de mucho tiempo de haber puesto en práctica este tutorial http://slackdhabyx.wordpress.com/2007/08/28/activar-subversion-con-apache-en-slackware-12/ siempre quise que pudiera haber un cierto tipo de limitación de acceso a los usuarios, es decir. Por ejemplo:

Tengo 7 repositorios con software que es de mi empresa, pero quiero sacar un nuevo proyecto público(nótese que en este caso uso proyecto como repositorio indistintamente) pero quiero que participe más gente y no quiero montarlo en otro servidor, quiero que esté en el mio. Pues como lo tenia según ese tutorial no lo iba a poder hacer, ya que una vez que creo el usuario, este puede acceder a cualquiera de los proyectos y descargarlos sin problemas, pues entonces me puse a investigar con google y econtré este otro tutorial http://svn-access-mana.sourceforge.net/ que sugiere que use un archivo de limitacion de acceso al usuario(no sólo al repositorio sino que inclusive a una carpeta solamente), con este archivo pues, se me facilitó todo, pues puedo restringir el acceso tanto de lectura como de escritura por repositorio.

Bueno a continuación pongo como tengo estructurado mis archivos de configuración:
en mi archivo de configuracion del apache ademas de los modulos del svn que se cita en el primer blog pongo el codigo de la siguiente manera

<Directory "/repositorio/svn">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
<Location /repositorios>
DAV svn
SVNParentPath /repositorio/svn
#nueva linea
AuthzSVNAccessFile /etc/svn/users-access-file
#fin de nueva linea
SVNListParentPath on
AuthType Basic
AuthName "Repositorio SVN"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
Con esa "nueva linea" que se agregó permito que se restrinja el acceso a los usuarios definidos en el archivo de autenticación svn

y a continuación pongo el script de configuración
/etc/svn/users-access-file

[/]
* =
[repo1:/]
p431i7o = rw
user2 = rw
user3 =
[repo2:/]
p431i7o = rw
user2 = r
user3 = r
[repo3:/]
p431i7o = rw
user2 =
user3 = r
  • con esto en la repo1 tanto yo como el user2 tenemos permiso de lectura y escritura mientras que se le deniega el acceso al user3
  • en la repo2 todos tenemos permiso de lectura pero solo yo puedo escribir
  • y en la repo3 podemos leer solamente el user3 y yo luego el user2 no puede acceder

Puede parecer una pequeñez esto, pero me llevo como 2 horas encontrar esta respuesta (luego de habermelo propuesto) y creo que esto a alguien le servirá.

Una vez mas recomiendo leer previamente el primer blog, para poder tener montado el servidor svn y un repositorio de ejemplo, luego ya podran continuar con este ejemplo :)

Si te gustó el post pues deja un comentario, y si no te gustó igual déjalo que con críticas constructivas podemos mejorar el mundo :)

jueves, 9 de julio de 2009

Aplicaciones p2p en java con JXTA

Hola amig@s del mundo, me he decidido nuevamente a publicar un texto despues de un largo tiempo (espero no haya sido demasiado), pero quiero mantener este espacio y para hacerlo hay que publicar ;p

Bueno, a lo que vine, actualmente estoy trabajando en lo que vendria a ser mi proyecto de final de grado, tambien conocido como tesina o tesis dependiendo del contexto en el que hablemos. El programa en el que estoy trabajando tendrá que ver con el uso de aplicaciones en p2p y para ello voy a utilizar la libreria JXTA, uso el termino libreria porque creo que es el mas apropiado, ya que para ser considerado un framework creo que le faltaria un poco mas de "maduración".

En fin, me he topado con un tutorial de esta libreria a principios de este año (2009) y lo he estado leyendo "lentamente" y de hecho varias veces "interrumpido" por los quehaceres de todos los dias.

Para los que no conozcan, les explicaré en la forma que yo entendí, lo que hace el JXTA, ahora que me acuerdo, siempre lo mencionan como la "Especificacion" ya que pretende ser la base para el desarrollo de aplicaciones p2p, y desenmarañar la forma en la que estas se desarrollan, ya que casi todas las aplicaciones, desarrolladas por diferentes programadores o grupos de estos, lo hacen "a su manera" y lo que tenemos como resultado es que todos "reinventan la rueda" una y otra vez para lograr la conectividad y ese tipo de cosas (disculpen mi poco tecnisismo).

Entonces como decia, lo que pretende es establecer las normas y estandares como para que a partir de la especificacion, se pueda desarrollar en los distintos lenguajes (C,C++,java,python,etc), para demostrar el funcionamiento de la especificación se eligió java, no me pregunten porque ni quien/es lo decidió/eron.

Bueno, como dije en un principio, yo tome la decisión de hacer mi proyecto en java y utilizar esta especificación como base para esta, actualmente sigo con la investigación de como funciona, luego de tener un pequeño y tonto tropezon (leia un tutorial para la versión 2.4 utilizando la libreria 2.5) supongo que por tonto perdi unas cuantas horas procurando hacer funcionar los ejemplos, pero no todo es malo, sirvió para entender algunos pasos que dieron para llegar a la versión 2.5 y entender "como funcionan" algunas de las partes que lo integran.

Luego de esto tengo planeado desarrollar una aplicación basica de interconexion entre dos computadoras a través de internet y transmitir mi primer "hello world" o "hola mundo!" junto con algún fichero que me encuentre por ahi.

El funcionamiento, aclaro como yo entiendo hasta el momento, es el siguiente.
Todas las comunicaciones son a través de los llamados adversitements que se transmiten utilizando siempre XML.

Existen varios protocolos que dominan el funcionamiento, y estos son:
* PDP (Peer Discovery Protocol) - utilizado por los peers para anunciar sus recursos por ej. otros peers, grupos de peers, pipes (canales de comunicacion) o servicios.
* PIP (Peer Information Protocol) - utilizado por los peers para obtener información de estado (tiempo online, estado, tráfico reciente, etc) de otros peers.
*PRP (Peer Resolver Protocol) - Permite a los peers enviar una consulta genérica a uno o más peers y recibe una respuesta (o multiples) a la consulta. Estas pueden ser dirigidas a todos los peers, a un grupo de peers, o a un conjunto selecto dentro de este. A diferencia del PDP y PIP, los cuales son usados para consultar informacion específica y predefinida, este protocolo permite a los servicios del peer definir e intercambiar información de forma arbitraria como se necesite.
* PBP (Pipe Binding Protocol) - Usado por los peers para establecer una comunicación virtual, o pipe, entre uno omas peers. El PBP es usado por un peer y ligado a dos o mas conexiones finales (pipe endpoints)
* ERP (End point routing protocol) - Usado por los peers para hallar rutas (caminos o path) a los puertos de destino de otros peers. La información de ruteo incluye una ordenada secuencia de ID's de peers repetidores que pueden ser usados para enviar un mensaje al destino. (Por ejemplo, el mensaje puede ser entregado al Peer A el cual lo repite al Peer B, que lo reenviará al destino final).
* RVP (Rendezvous Protocol) - Usado por los 'Edge Peer' (creo que son peers que se encuentran al final de una ruta, tras un NAT o un firewall) para resolver recursos, propagar mensajes, y anunciar recursos locales. Usado por los peers rendezvous para organizarse con otros peers rendezvous, compartir la tabla hash distribuida de espacio de direcciones, y propagar mensajes de forma controlada.

NOTA: esta lista y descripcion de protocolos lo extraje y traduje de la guia para programadores hecha por SUN microsystems. Link a la guia aqui.

Como no he encontrado mucha informacion o ejemplos complejos de esta especificacion en java pretendo cuando termine mi proyecto publicarlo bajo licencia libre, quizas GPL o BSD, no se aun, de hecho no he revisado la licencia bajo la cual se libero la especificacion en java, tendré que adaptarme a ella quizas. Pero si publicare los fuentes que yo cree para hacer mi aplicación, y en sucesivos post ire mostrando mis avances.

Llegando a la parte final de este post les ruego, que si consiguen mas informacion (comunidades, ejemplos, informacion o lo que sea referenciado a esto) publiquen un comentario con esa información, no solo me ayudaran a mi sino a todo aquel que luego busque mas información al respecto.

Me despido nuevamente hasta una proxima publicacion.

martes, 21 de abril de 2009

Entretenimiento Virtual

Hola amigos...
hace mucho que no publico nada, y hoy se me ocurrio contarles de un sitio que un par de amigos me han recomendado visitar, y creo que está bastante bueno ver
se trata del sitio
este sitio es uno bastante original, se trata de un sitio de peleas virtuales, pero con la excepcion de que no hacemos nada realmente, cada jugador tiene unas habilidades basicas iniciales y algunas veces con alguna arma...
Luego de haber escogido al jugador/a y cambiar su look, esta listo para "desafiar" a algun otro participante en una pelea.

Cada jugador va subiendo de nivel y ganando puntos de experiencia segun vaya juntando peleas de este tipo.Asi se pueden tener hachas, barras, cuchillitos, espadas, tridentes, redes e inclusive puedes tener alguna mascota que te ayude durante la pelea.

Realmente al comienzo tengo que ser sincero,no me atrajo ni un poquito, luego le di una segunda oportunidad y me cayo mejor... luego de las tres primeras peleas ya empece a ver porque le gustaba a la gente.

Les recomiendo lo visiten, aqui tienen un enlace donde pueden encontrar mi usuario para "desafiarme" jaja... http://p431i7o.elbruto.es

Espero les guste, no les explico todo lo que tiene (doyos, torneos, historial de peleas...etc) porque no tengo muchas pilas hoy


Saludos..

jueves, 12 de febrero de 2009

Mack 3

Se viene el Mack 3
Manga
Anime
Cosplay
Karaoke
3 Edicion

Se llevará a cabo los dias 28 de febrero y 1 de marzo (un dia antes de mi cumple) jeje
Lugar: Centro Paraguayo Japones

Hora: desde las 14
Entradas Anticipadas: 25000 Guaraníes (por los dos dias)
Entradas Generales: 15000 Guaraníes

Habrá concursos de Cosplayers, karaokes, muchos mangas, dibujos y comidas japonesas


Para contactos pueden hacerlo con
- Diego:
msn: dieguiariel@hotmail.com,
Gtalk: dieguiariel@gmail.com
Cel: 0961814834

-Mahoro:
msn: josefinadedasso@hotmail.com
gtalk: rosajosefina@gmail.com
Cel: 0961675476

No se lo pierdan, vayan agendandolo para esas fechas...

jueves, 22 de enero de 2009

Gestor de Contenidos CMS basado en CodeIgniter

Buenas Nuevas amigos de la red!!!

En el grupo de codeigniter en español link ha surgido la idea de construir nuestro propia version de un gestor de contenidos (CMS) para que tengan una idea, pueden pensar en algo como joomla!, drupal, post-nuke, etc.

La idea surgió luego de un post del compañero Marcelo Espinola, esto todo paso a una votacion en el grupo donde se decidió desarrollar la propia version del grupo de un CMS.

El proyecto por el momento se llama codeigniter-es-cms y puede ser encontrado en google code. Link

En el momento que este lista las primeras versiones del sitio en su version beta, creo que sera publicado en el sitio www.codeigniter.com.es o en algun sitio que el grupo decida.

Es muy entusiasmante la idea, en especial para mi, ya que yo en el pasado (un año atras aproximadamente) comence un proyecto similar, pero solo desarrollado por mi para el Centro de Informacion y Cultura CIE. Link.

Este sitio ya cuenta con sistema de articulos, calendario de eventos, encuestas, suscripcion a boletines mensuales, Enlaces de interes organizados por categorias, servicios ofrecidos instituiciones de distintos ramos organizados por categorias, y un sistema de feed para los articulos publicados.

Obviamente es un sistema bastante sencillo pero me llevo como 4 meses desarrollarlo. Pero creo que esta idea de crear un CMS propio es una de las mejores que hemos tenido. Combinará todos los conocimientos que poseemos tanto del mismo framewor CI, asi como de gestores de contenidos que conocemos, en mi caso, joomla! y PostNuke, junto con los conocimientos que tenemos de javascript, css, ajax y php en general.

Todavia no tenemos una fecha de desarrollo inicial, y muchos menos para el rc (release candidate), ni siquiera que objetivos a corto plazo debera tener el sistema, pero, la rueda ya esta girando, es solo cuestion de tiempo para que ganemos velocidad.

Con el paso del tiempo ire publicando los avances que tengamos.

Saludos amigos!

miércoles, 10 de septiembre de 2008

desactivar el autorun en windows xp

hola amig@s
estoy aqui nuevamente pero ahora con una solucion a un pequeño problema que ultimamente
andamos sufriendo los usuarios de software propietario ;)

Resulta que ultimamente hay muchos de estos virusillos que se ejecutan por medio del llamado
autorun que es gatillado cuando introducimos nuestro pendrive en la maquina.

Esta modalidad ya existia desde windows 9x donde grlte. se usaba para ejecutar algun contenido en los cdroms, etc. Pero es recien en este tiempo en el que el uso masivo de pendrives y la consecuente movida de informacion de una pc a otra, lo que ocasiona que millones de ordenadores se infecten.

Estos archivos se encuentran en la raiz del pendrive, y por lo gral funcionana asi
introducimos nuestro pendrive (contaminado) el windows xp revisa el pendrive en busca del autorun lo encuentra y este ejecuta una secuencia de comandos que activa un o unos virus que tenga almacenado dentro.

Como sabran los virus no se pueden autojecutar, siempre necesitan de un gatillo, es eso lo que hace el autorun. Ahora si, cuando se gatilla el virus fuimos, porque toma control de la maquina y la predispone a infectar tantos pendrives y discos pueda aparte de otros daños como hacer mas lenta, espiar nuestros archivos, e inclusive robarla y ocultarla o cifrarla y pedir un rescate por esta.

Bueno, la presente solucion funciona para equipos que no hayan sido contaminados aun,
nos vamos al menu inicio y seleccionamos la opcion ejecutarescribimos gpedit.msc
y luego pulsamos el boton aceptar


deberia desplegarse un programa que es para edicion de politicas de grupo:

buscamos en el lado izquierdo la carpeta que dice plantillas administrativas que es sub carpeta de configuracion del equipo.

dentro de esa subcarpeta buscamos una que dice sistema

la seleccionamos

y en el lado derecho buscamos una opcion que dice Desactivar reproducción automática

la seleccionamos y le damos doble click

seleccionamos la opcion que dice habilitada y en el combo box mas a la derecha le decimos que sean todas las unidades , por ultimo click en aceptar


y cierran pulsando Aceptar y todo listo
ahora conectan su pendrive y no aparecera mas el escaneo que le hace el sistema en busca del autorun

ahora unos tips extras mas para que puedan hacer una pequeña limpieza a sus pendrives encaso de que esten infectados
ojo, no me hago responsable de ninguna forma por ningun daño directo o indirecto que puedas hacer al equipo

con el comando cmd
te vas a la unidad que pertenece a tu pendrive
por lo general es f: o g: o h:
entonces tendrias algo como
F:\>
para ver los archivos ocultos ejecutamos el comando
dir /ah
la opcion a es para atributos y la h es de hidden (oculto)
con eso obtendremos un listado de archivos ocultos en nuestro pendrive
de ese listado tendriamos que poder diferenciar archivos/carpetas que no deberian estar alli

por ejemplo si encontramos algo como
RECYCLER
que nos indica que hay un directorio o carpeta llamado recycler, deberia llamarnos la atencion, ya que en el pendrive cuando le damos borrar a un archivo no nos pregunta si queremos enviarlo a la papelera, sino que directamente pregunta si queremos eliminarlo es por ello esa carpeta no deberia estar alli!.

ahora para borrar un directorio
usamos el comando rd (remove directory)
pero si lo usamos a secas
rd recycler
nos dira que hay archivos dentro y no se que cosas mas
para ello usamos la opcion silencioso y sin confirmaiones(q) y (s)que borra todos los archivos dentro y directorios
rd recycler /q /s
ahora para todos los archivos que nos parezcan sospechosos
usamos el comando del abreviatura de delete(borrar)

del archivo.ext /ah
nos borrara un arhivo, si es que el archivo es oculto y no esta indicado como del sistema, pero como los creadores del virus por lo gral le ponen esos atributos, al tratar de borrarlo nos dira
permission denied (permiso denegado)
tendremos que usar la opcion f (force)
del archivo.ext /ah /f

observacion usamos ah porque es un archivo oculto

algunos archivos que suelo encontrar en pendrive y que suelo borrar son
csrcs.dll
knight.exe
NTRun.exe o .com
autorun.inf

eso es todo por este post, espero les parezca interesante y no olviden hacer siempre un backup (copia de seguridad o respaldo) de sus informaciones importantes


lunes, 11 de agosto de 2008

Usando CodeIgniter

Bueno, lo prometido es deuda como dirian, me he decidido y ahora quiero ofrecerles un mini tutorial de como usar el codeigniter a un nivel bien basico para que puedan empezar si es que nunca lo han hecho antes con este u otro framework.

ok, lo primero que necesitan conocer medianamente es la estructura de archivos y directorios del framework para que sepan donde poner cada cosa.

cuando descarguen el framework de www.codeigniter.com tendran algo similar a esto:
system
|- application
|-cache
|-codeigniter
|-database
|-fonts
|-helpers
|-language
|-libraries
|-logs
|-plugins
|-scaffolding
user_guide
index.php
license.txt

archivos mas o menos eso deberia ser asi...
ok la carpeta que nos interesa es la que dice system y dentro de esa, la que dice application y dentro de esta carpeta, las carpetas que se llaman
config, controller, model, view

dentro de la carpeta config nos interesan los archivos
autoload.php
config.php
database.php y
routes.php

el primer archivo tiene la configuracion de lo que por defecto se cargara cada vez que se invoque al sitio, por ejemplo la conexion a la base de datos, las funciones de session, y cosas por el estilo, esto es lo que ayuda a que el framework pueda decirse que es liviano, ya que se carga solo con lo que consideremos necesario

el archivo config tiene algunas configuraciones como por ejemplo el

$config['base_url'] = "http://127.0.0.1/new/";
?>

que dice que la raiz de nuestro sitio es esa direccion que aparece en el lado derecho de la expresion de asignacion

otras configuraciones como el

$config['index_page'] = "index.php";
?>


que le dice cual es la pagina index y si usamos el mod rewrite que provee apache y usamos la siguiente regla en nuestro .htacces ( un archivo de configuracion que mediante unas expresiones regulares establece que todo se redirige al index y este se encargara de tomar el rumbo adecuado)

a continuacion les copio el contenido de mi .htaccess para que puedan usar las url amigables y asi no tengan que usar el index.php

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

ahora pasamos al siguiente archivo que es database.php que es el archivo de configuraciones de la base de datos
en el encontraran el siguiente codigo:
<?php
$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "";
$db['default']['password'] = "";
$db['default']['database'] = "";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
?>


donde lo importante realmente es el que dice hostname, username, password y database, ahh y el dbdriver, que normalmente solemos compleatar de la siguiente forma:
donde dice hostname, suele ser con "localhost", donde dice username password y database son datos que uds deben manejar, y el dbdriver puede ser mssql, mysql, mysqli, postgre
esta es una de las ventajas del codeigniter, la variedad de controladores de base de datos que tiene, por dentro nosotros programamos en una forma digamos estandar y si tenemos que cambiar de mysql a postgre por ej, solo cambiamos el nombre del driver y no nos complicamos tanto modificando nuestro codigo (claro, si es que no usamos sentencias propias de mysql u otro en nuestras consultas) pero en gral es asi.

y por ultimo en este directorio nos interesa routes.php
que es el archivo en el que definimos las rutas de nuestro sitio...
tendremos en cuenta dos cosas principales en este archivo una, cual va a ser el controlador principal de nuestro sitio, esto es, que controlador se llamara cuando ingresemos a la raiz del sitio, cuando nuestra instalacion es nueva encontramos lo siguiente:
$route['default_controller'] = "welcome";

donde welcome es el nombre del controlador/archivo que se encuentra en nuestra carpeta controller, lo cambiamos por el controlador que nosotros desarrollemos y nos interesa que sea el principal, otra forma de acceder a este controlador seria
http://www.nuestrositio.com/index.php/controlador_por_defecto o sencillamente
http://www.nuestrositio.com/controlador_por_defecto en el caso de que poseamos url amigables con la ayuda del .htaccess

continuemos, ahora nos vamos a la carpeta controller; como les decia aqui vamos a poner los archivos y/o carpetas que nos interesan funcionen como index, y a que me refiero al usar esa frase (que tal vez este mal dicha) imaginense que quieren tener algo asi:
http://www.tusitio.com/blog
o
http://www.tusitio.com/administracion/login

en el primer caso, blog seria nuestro controlador, en el segundo podriamos tener una carpeta administracion y un archivo controlador dentro que se llame login.php

de esa forma se puede determinar a donde queremos ir y que acciones queremos ejecutar

la estructura del archivo controller es asi:

class Micontrolador extends Controller
{
function Micontrolador()
{
parent::Controller();
}
function index()
{
$this->load->model('mi_modelo');

//tambien podemos cargar alguna vista
$this->load->view('bienvenida');
}

funciton miPrimeraFuncion()
{
echo "estamos en nuestra primera funcion";
}
}
?>

ok, fijense en los siguientes detalles, la clase debe llamarse exactamente de la misma forma que el archivo pero la primera letra debe ser mayuscula, (los programadores de java encontraran esto bastante similar)
segundo en la clase constructora siempre se llama al constructor de la clase padre
el metodo llamado index es el metodo que se ejecuta por defecto si no se especifica ninguno cuando se llama al controlador.

la estructura del modelo es similar tambien

class Mimodelo extends Model()
{

function Mimodelo()
{
parent::Model();
}
function misMetodos($parametros)
{
//aqui van los codigos, consultas sql, etc
}
}
?>


y las vistas son archivos php como normalmente lo harian solo que con algunas ventajas mas
por ejemplo, si en nuestro controlador definimos un arreglo de la siguiente forma


$data["valorDeResultado"] = $this->miModelo->dameResultados();
y llamamos a la vista, pasandole el arreglo como parametro
$this->load->view('algunaVista',$data);



y en nuestro archivo de vista
podemos acceder a ese "valor de resultado"como una variable local del archivo
de la siguiente forma:


echo $valorDeResultado; ?>


y otras ventajas como de que se pueden llamar a otras vistas desde la misma vista.

ahora algunas cosas mas antes de ir terminando.

si en el autoload no definimos que se cargue la libreria de base de datos, lo hacemos asi

$this->load->library('database');
?>

y podemos hacer consultas sql
$query = $this->db->query("select * from tabla");

donde $query sera un objeto que es resultado de la consulta de base de datos
para consultar el numero de filas hariamos

$query->num_rows();
?>



y podemos recuperar los resultados de la base datos "como objetos" esto quiere decir que podemos hacer esto:


foreach($query->result() as $row):
echo $row->columna1;
echo $row->columna2;
endforeach;
?>



si quisieramos recuperar como arreglos (como tradicionamente lo hariamos) en vez de ejecutar el metodo result() ejecutamos el metodo result_array(), y si quiesieramos recuperar solamente una fila hariamos row()

bueno eso es todo por ahora...
saludos y si les gusto, no olviden dejar algun comentario y si cometi algun error por favor no duden en hacermelo conocer para corregirlo inmediatamente; :)