PHP para nostálgicos y con criterio formado
Aaaaaah! Aún recuerdo aquellos entrañables días cuando siempre eran las 11 y tanto.
Captas?,… colega… –es un chiste :\
Aaaaaah! Aún recuerdo aquellos entrañables días cuando siempre eran las 11 y tanto.
Captas?,… colega… –es un chiste :\
Agarra tu pecesito y ejecuta esto:
1 2 3 4 5 6 7 8 |
Funciona!
Acostumbro a usar el operador ternario “?” para asignar valores. Si no sabes que es esto revisa esto Comparison Operators y busca “Ternary Operator”.
En resúmen:
1 | $val = $expresion_verdadera ? 'asignar_este_valor_si_es_verdadera' : 'asignar_este_valor_si_es_falsa'; |
Muchas veces me ha pasado que comienzo a escribirla cuando me doy cuenta de que no es adecuada. Ej:
1 |
con !?# quiero decir que en ese punto me doy cuenta que aqui no habría que usar este operador. Porque que en este caso no quiero asignar nada al array, cierto?
Es decir, traduciendo el anterior código, estamos diciendo: Asignar el valor $ID al array $enviar_a sólo si es que ya no está en él. O sea, quiero rellenar este array sólo con valores nuevos –no repetir ninguno.
Pero este operador espera que pongas algo en el lugar de !?#, que es el valor que le asignarías al array $enviar_a si es que ya contiene $ID.
Bueno, lo podemos hacer así:
1 |
Dime que te gustó y te muestro otra construcción tan entretenida y elegantosa como esta. d^^
Como una preparación para el desarrollo de extensiones para Firefox, comenzamos con una introducción a XML (Extensible Markup Language), lenguaje con el cual está hecho XUL (XML User Interface Language), el lenguaje para interfaces de usuario de Mozilla.
Este es un resúmen –apenas resumido– de un documento del mismo nombre perteneciente a la W3C. Está en español y puedes encontrarlo en http://www.w3.org/XML/1999/XML-in-10-points.es.html
Los datos estructurados incluyen cosas como planillas de cálculo, libretas de direcciones, parámetros de configuración, transacciones financieras y dibujos técnicos. XML es un conjunto de reglas (también se las podría pensar como líneas de guía o convenciones) para diseñar formatos de texto que permitan estructurar los datos. XML facilita a la computadora la tarea de generar datos, leerlos, y asegurar que su estructura no es ambigua.
Al igual que HTML, XML usa etiquetas (palabras encerradas por ‘<’ y ‘>’) y atributos (de la forma nombre=”valor”). XML usa las etiquetas sólo para delimitar las piezas de datos, y deja la interpretación de los datos completamente a la aplicación que los lee. En otras palabras, si usted ve “<p>” en un archivo XML, no asuma que es un parágrafo. Dependiendo del contexto, podría ser un precio, un parámetro, una persona, una p… (¿y quién dice que debería ser una palabra que empiece con “p”?).
Los programas que producen planillas de cálculo, libretas de direcciones y otros datos estructurados, a menudo guardan esos datos en disco, usando un formato binario o de texto. Una ventaja del formato de texto es que permite que las personas, si es necesario, miren los datos sin el programa que los produjo; en un aprieto, uno puede leer un formato de texto con su editor de texto favorito. XML permite esto. Las reglas de XML son estrictas, su especificación oficial prohibe a las aplicaciones que traten de adivinar las intenciones del creador de un archivo XML dañado; si el archivo está dañado, la aplicación debe detenerse allí mismo y reportar un error.
Como XML es un formato de texto y usa etiquetas para delimitar los datos, los archivos XML son casi siempre más grandes que los formatos binarios comparables. Eso fue una decisión consciente de los diseñadores de XML. Las ventajas de un formato de texto son evidentes (ver el punto 3), y sus desventajas son fácilmente neutralizadas usando compresión, tanto para el almacenamiento como para su transmisión.
XML 1.0 es la especificación que define lo que son las “etiquetas” y los “atributos”. Más allá de XML 1.0, “la familia XML” es un conjunto creciente de módulos que ofrecen servicios útiles para realizar tareas importantes frecuentemente demandadas. Xlink describe un modo standard de agregar hipervínculos a un archivo XML. XPointer y XFragments son sintaxis en desarrollo para apuntar a partes de un documento XML. Un XPointer se parece un poco a un URL, pero en lugar de apuntar a documentos en la Web, apunta a piezas de datos dentro de un archivo XML. CSS, el lenguaje de hojas de estilo, es aplicable a XML tanto como a HTML. XSL es el lenguaje avanzado para expresar las hojas de estilo. El DOM es un conjunto standard de llamadas a funciones para manipular archivos XML (y HTML) desde un lenguaje de programación.
El desarrollo de XMLcomenzó 1996 y ha sido una recomendación de la W3C desde febrero de 1998. Antes de XML estuvo SGML, desarrollado a principios de los 80. El desarrollo de HTML empezó posteriormente en 1990. Los diseñadores de XML simplemente tomaron las mejores partes de SGML, guiados por la experiencia con HTML, y produjeron algo que es no menos poderoso que SGML, y vastamente más regular y simple de usar.
XHTML, el sucesor de HTML, tiene muchos de los mismos elementos de HTML. La sintaxis ha sido ligeramente cambiada para conformarse a las reglas de XML. Un documento “basado en XML” hereda la sintaxis de XML y la restringe de ciertas maneras (XHTML permite “<p>”, pero no “<r>”); también suma significado a esa sintaxis: XHTML dice que “<p>” significa “parágrafo”, y no “precio”, “persona”, o cualquier otra cosa.
XML le permite definir un formato de documento combinando y reusando otros formatos. Puesto que dos formatos desarrollados independientemente podrían tener elementos o atributos con el mismo nombre, se debe tener cuidado al combinarlos (¿”<p>” significa “parágrafo” de este formato o “persona” de aquél otro?). Para eliminar la confusión de nombres al combinar formatos, XML provee un mecanismo de espacio de nombre. XSL y RDF son buenos ejemplos de formatos basados en XML que usan espacios de nombres.
El Resource Description Framework (RDF) es un formato de texto XML que soporta aplicaciones de descripción de recursos y metadatos, tales como listas de temas musicales, colecciones de fotos, y bibliografías. Por ejemplo, RDF podría permitirle identificar las personas en un álbum de fotos Web usando información de una lista de contactos personales. Lo mismo que HTML integró los documentos, los sistemas de menú y las aplicaciones de formularios para lanzar la Web original, RDF integra las aplicaciones y los agentes en una Web Semántica. Las descripciones formales de los términos en una cierta área (compras o manufactura, por ejemplo) se llaman ontologías, y son una parte necesaria de la Web Semántica. RDF, las ontologías, y la representación del significado de modo que las computadoras puedan ayudar a las personas a hacer el trabajo, son tópicos de la Actividad de la Web Semántica.
Al elegir XML como la base de un proyecto, usted gana acceso a una comunidad grande y creciente de herramientas (¡una de las cuales podría ya hacer lo que usted necesita!) e ingenieros experimentados en la tecnología. Optar por XML es un poco como elegir SQL para bases de datos: usted todavía tiene que construir su base de datos y sus propios programas y procedimientos que la manipulen, y hay muchas herramientas disponibles y mucha gente que puede ayudarlo. Y como XML es gratuito, usted puede construir su propio software alrededor de él sin pagar nada a nadie.
Te presento el terminal guake, para linux. Al toque de una tecla –F12, por defecto– abre una ventana de terminal desde el tope de tu pantalla, similar a la consola del juego Quake.

Se mantiene cargado en memoria, por lo que abre y cierra muy rápido. Muy útil para quienes necesitan acceder continuamente a la línea de comando. [F11] intercambia a pantalla completa. Perfecto!
Hay otros como tilda (GTK+) y yakuake (KDE), pero este está hecho especialmente para Gnome, por lo que brinda mayor performance. En XFCE funciona muy bien.
Una gran diferencia es que estos dos últimos permiten variar el ancho de la ventana. Guake ocupa todo el disponible.
En un post anterior hablamos exhaustivamente del comando chmod, que sirve para cambiar los privilegios de acceso a tus archivos en linux.
Vimos que con la opción -R podemos aplicar este comando recursivamente a un directorio, y así operar sobre todos los archivos y subdirectorios que contenga. Bien, espero que no hayas metido la pata ya.
Porque si así lo hacemos damos el mismo tipo de privilegios a directorios y archivos normales por igual.
Hace tiempo que tenía este problema con chmod. Recién ayer encontré un post sobre el tema Recursively chmod only directories or files.
Los siguientes comandos usan find y chmod conjuntamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Encontrar directorios (-type d) en el directorio actual (.) y darles # acceso 755 find . -type d -exec chmod 755 {} \; # Encontrar archivos (-type f) en el directorio actual (.) y darles # acceso 644 find . -type f -exec chmod 644 {} \; # Encontrar archivos (-type f) html (-name '*.htm*') en el subdirectorio # web (./web) y darles acceso 644 find ./web -type f -name '*.htm*' -exec chmod 644 {} \; # Encontrar archivos/directorios con permiso 777 (-perm 777) en el # directorio actual (.) y darles acceso 755. La opción -print entrega # más información sobre el resultado find . -perm 777 -exec chmod 755 {} \; -print |
Algunas personas cuando se enfrentan a un problema, piensan “Ya sé, voy a usar expresiones regulares”. Ahora tienen dos problemas. –Jamie Zawinski.
“Escribe tu código como si el tipo que vaya a hacerle mantención fuera un maniaco homicida que sabe donde vives.” –Kathy Sierra and Bert Bates.
“EL código más rápido es aquel que no corre.” –Joel Webber.
Estas frases las encontré en el blog de la programadora Huilén Abed
Wordpress se actualiza periódicamente. Una y hasta dos veces al mes aparece ese mensaje “Por favor actualiza a la última versión” al tope de la página de administración.
Afortunadamente desde la versión 2.7 se puede hacer automáticamente con sólo un click.
Al parecer no hay problemas en la mayoría de hostings compartidos. Pero si manejas tu propio hosting o VPS podría pasarte que WP te pide datos de acceso FTP para llevar a cabo la actualización. Ellos dicen, y de seguro que es así, que no guardan estos datos. Pero siempre es incómodo dar datos de autentificación en una línea abierta.
La manera más fácil y rápida de evitarlo es dando privilegios al servidor para que pueda sobreescribir el directorio de WP.
1.- Averigua qué usuario corre httpd (servidor Apache) o lighttpd (lighttpd), etc…
1 2 | $ pstree -u | grep httpd |-httpd---10*[httpd(apache)] |
Ahá! el usuario apache
2.- Hazlo dueño del directorio de tu blog.
1 | chown -R apache: myblog/ |
3.- Corrre ahora la actualización automática desde el panel de administración de WP.
4.- Vuelve a hacerte dueño del directorio de tu blog. En este ejemplo usuario nomikos.
1 | chown -R nomikos: myblog/ |
Eso es todo. No habrá tomado más de 1 minuto.
Título original: Un fils pour la lignée
Traducción: Juan José Lignée
© 1977 by Jean Mazarin
© 1979 Nueva Situación S.A.
Pacarro 14 – Madrid
ISBN: 84-85483-05-1
Edición digital: Montenegro
Al final del año 3.130, el Imperio de los hombres de la Tierra se extendía sobre la totalidad del Universo. Desde hacía más de medio siglo, esta gigantesca federación estaba sometida a la ley de los emperadores arcturianos, que habían sucedido a la dinastía de los Ling en el trono. Outh el Rico reinaba así sobre dos billones de sujetos, pertenecientes a mil razas diferentes.
El Imperio acababa de escapar a una terrible guerra fratricida. En efecto, por una curiosa propiedad del universo, los hombres habían alcanzado los límites incluso sin darse cuenta y habían empezado a combatirse unos contra otros, cuando estalla la realidad. La tragedia se había evitado, pero algunos hombres ya habían muerto y el cuerpo de oficiales del ejército galáctico se desgarró por una nueva crisis.
Una familia pagó un tributo especialmente doloroso en este trágico episodio de la historia de los hombres de la Tierra. Julio V. Dakemberg, el general de las galaxias, encontró la muerte en un accidente ocurrido en el mismo lugar donde su hijo, Cyro, había sido abatido por una astronave que pertenecía a la flotilla mandada por su propio padre.
La esposa del general Dakemberg sobrevivió diecinueve años a la desaparición de los dos hombres de la familia, cuya dinastía se iba a extinguir después de siete siglos de combates al servicio del Imperio.
Encerrada en sus recuerdos y en el culto a su esposo, velando celosamente sus reliquias, la anciana incluso ni se ocupó de su segundo hijo, que era una chica. Muchos de los antiguos amigos de la familia y algunos médicos pensaron que la esposa del general había perdido la razón y que vivía en una especie de estado secundario, como si su propia vida se hubiera parado el día trágico en el que la dinastía Dakemberg se rompió.
Hacia el final del invierno de 3.149, Amalia Dakemberg se apagaba lentamente, minada por la pena que no había cesado de roerla desde aquel año trágico. Por una curiosa coincidencia, el Emperador Outh el Rico fue fulminado por una crisis cardíaca cuatro meses más tarde.
Su hijo, Outh el Sencillo, iba a sucederle. (more…)
No he podido hacer que esta calculadora aparezca en otro lugar más que en el principio. Es un muy sencillo plugin WP que hice para enmascarar el script en javascript desarrollado por Jeroen Vermeulen. Si lo quieres deja un comentario y si no, también. Como ves es un excelente juguete para practicar lo que aquí veremos.
NomikOS.-
El comando chmod (change mode) permite asignar a un archivo o directorio distintos tipo de accesos –o permisos de acceso– a distintos tipos de usuarios.
1 2 3 4 5 6 7 8 9 10 |
Tenemos 3 tipos de permisos de acceso que pueden ser otorgados o revocados a cada archivo:
r read: lectura w write: escritura –modificación, borrado, renombrado x execute: ejecución –si es archivo, acceso si es directorio
Tenemos 4 tipo de usuarios: usuario, grupo, otros y todos.
u user: dueño del archivo g group: grupo al que pertenece el archivo o others: el resto de usuarios a all: todos los usuarios
Los más usados son:
R recursive: aplica el comando recursivamente a todos los archivos y subdirectorios de un directorio. v verbose: informa de resultados por cada archivo procesado (no muy útil en verdad). Recuerda que las opciones siempre se anteceden por un (y sólo un) guión (-). Por ejemplo:
chmod -vR ugo=rwx archivo
Los permisos pueden ser otorgados de la siguiente manera. Luego veremos otra forma, la octal.
+ agrega permiso - elimina permiso = hace igual a (los ejemplos aclararán esto)
Para entender la diferencia entre = y +/- fíjate muy bien en los comentarios (nada más) y (y mantiene los demás)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # en general haremos combinaciones: ugoa [operador] permisos chmod u/g/o/a +/-/= r/w/x # puedes definir varios accesos a varios archivos en un sólo paso # separando por comas los permisos y por espacios los archivos chmod u+rwx, go+rx, go-w archivo1 archivo2 # dueño lee, escribe y ejecuta (es decir, permite todo tipo de acceso) chmod u=rwx archivo # grupo lee y ejecuta (nada más) # otros leen y escriben (nada más) chmod g=rx, o=rw archivo # dueño agrega permiso de escritura (y mantiene los demás) # grupo agrega permisos de lectura y ejecución (y mantiene los demás) # grupo elimina permisos de escritura (y mantiene los demás) chmod u+w, g+rx, g-w archivo # ahora dicho más sencillamente: # grupo y otros sólo pueden ejecutar el archivo # el dueño puede leerlo y ejecutarlo manteniendo otros permisos ya dados chmod go=x, u+rx archivo |
Con lo ya visto puedes definir todos los tipos de permisos de una manera bastante representativa, verdad? Cuando ya tienes más experiencia buscas elegancia y eficiencia. Con el modo octal logras esto.
Le llamamos octal porque usa números en base 8: un modo de contar con el que podemos obtener todos los números (0 .. infinito) usando sólo los dígitos 0 a 7.
Solo recuerda esto. En una escala de 1 a 7:
Lo más preciado es poder leer un archivo. Le damos un 4. Después, es poder escribir en él –no necesariamente leerlo. Le damos un 2. Lo mínimo que podemos hacer con un archivo es poder ejecutarlo –sin saber como está escrito ni poder modificarlo. Le damos un 1. En verdad, lo mínimo que podemos hacer con un archivo es nada. Le damos un 0. Ahora, si podemos hacer todo lo que queramos con el archivo –leerlo, modificarlo y ejecutarlo– le damos la suma de todos, un 7 (4+2+1)
Asimilándolo al formato r-w-x tenemos:
r -leer- es un 4 w -escribir- es un 2 x -ejecutar- es un 1
Ahora que sabemos que como interpretar estos números, los usaremos escribiéndolos en un determinado orden.
Este orden determina a que tipo de usuario (ugo) le asignamos que tipo de permiso –dado por los números 4,2,1,0,7; basándonos en su posición.
posición 1: u -dueño posición 2: g -grupo posición 3: o -otros posición 1 posición 2 posición 3 -> u g o
Nota:
El tipo de usuarios a (all: todos) está implicita, ya que u+g+o=a
usuario + grupo + otros = todos
Eso es todo. Sencillo verdad?
Fíjate como obtenemos todas las combinaciones posibles sumando los permisos básicos 4, 2 y 1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # dueño puede leer, escribir y ejecutar (4+2+1) # grupo puede escribir y ejecutar (2+1) --no leer # otros no tiene ningún acceso (0) chmod 730 archivo # este tipo de permiso es muy usado en archivos de servidores web # dueño puede leer y escribir (4+2) # grupo y otros sólo pueden leer (4) chmod 644 archivo # este tipo de permiso es muy usado en directorios de servidores web # dueño puede leer, escribir y acceder al directorio # grupo y otros pueden leer y acceder (4+1) achivos al directorio chmod 755 directorio |
La notación r-w-x es la usada por el comando ls -l para decirnos los permisos de cada archivo:
1 2 3 | drwxr-xr-x 2 nomikos users 104 2009-07-10 03:54 backups -rwxr-xr-x 1 nomikos users 103282 2009-07-10 03:56 program -rw-r--r-- 1 nomikos users 19734183 2009-07-31 07:27 blog.sql |
1 2 3 | -rwxr-xr-x // se representa como 755 en notación octal. -rw-rw-r-- // se representa como 664 en notación octal. -r-x------ // se representa como 500 en notación octal. |
El primer guión (-) dice que es un archivo regular, podría ser (d) de directorio, (l) link simbólico y otros.
Por último, en general los links simbólicos siempre muestran todos los permisos para todos los tipos de usuarios:
1 2 | lrwxrwxrwx 1 root root 3 2009-07-18 15:50 X11R6 -> X11 lrwxrwxrwx 1 root root 8 2009-07-18 15:50 adm -> /var/adm |
Eso es normal y no significa que el archivo apuntado tenga esos permisos. Si aplicas chmod a uno de estos archivos –los links tambien son archivos– los permisos se darán al archivo apuntado.
“La elección de las GNU-evas generaciones.”
“Porque el reinicio es para agregar nuevo hardware.”
“Este programa ha ejecutado una operación ilegal y su computador se apagará. Por favor reinicie con linux.”
“Linux transforma tu microcomputador en una estación de trabajo. Windows NT transforma tu estación de trabajo en un microcomputador.”
“Su mouse se ha movido. Windows debe ser reiniciado para que los cambios tengan efecto. Reiniciar ahora?”
Powered by WordPress. Theme: TheBuckmaker. Modifications by NomikOS