Aug
30
2009
0

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 :\

Escrito por NomikOS en: PHP, Personal |
Hoy 1 lectores.
Aug
28
2009
0

Otro manera de usar el operador de comparación ternario en PHP

Agarra tu pecesito y ejecuta esto:

1
2
3
4
5
6
7
8
$enviar_a = array();
$ID = 'destinatario';

var_dump($enviar_a);
in_array($ID, $enviar_a) ? null : $enviar_a[] = $ID;
var_dump($enviar_a);

exit;

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
$enviar_a[] = ! in_array($ID, $enviar_a) ? $ID : !?#

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
! in_array($ID, $enviar_a) ? $enviar_a[] = $ID : null;

Dime que te gustó y te muestro otra construcción tan entretenida y elegantosa como esta. d^^

Escrito por NomikOS en: PHP |
Hoy 1 lectores.
Aug
20
2009
0

XML en 10 puntos – Resúmen

Semantic Web Rubik's Cube
Creative Commons License photo credit: dullhunk

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


1. XML es para estructurar datos

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.

2. XML se parece un poco al HTML

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”?).

3. XML es texto, pero no está pensado para ser leído

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.

4. XML es verboso por diseño

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.

5. XML es una familia de tecnologías

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.

6. XML es nuevo, pero no tanto

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.

7. XML lleva HTML a XHTML

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.

8. XML es modular

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.

9. XML es la base de RDF y de la Web Semántica

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.

10. XML es gratuito, independiente de la plataforma y bien soportado

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.


Escrito por NomikOS en: Computación, Firefox |
Hoy 1 lectores.
Aug
19
2009
2

Guake – Un terminal para linux al estilo Quake

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.


guake-terminal


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.


Escrito por NomikOS en: Computación, Linux |
Hoy 1 lectores.
Aug
18
2009
0

Comando chmod -R (recursivo) en directorios y archivos por separado

Unix Magazin Final
Creative Commons License photo credit:

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
Escrito por NomikOS en: Comandos |
Hoy 1 lectores.
Aug
18
2009
0

“Algunas verdades”

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

Escrito por NomikOS en: Computación |
Hoy 1 lectores.
Aug
18
2009
0

Realizar una actualización automática de Wordpress sin dar datos de FTP.

200303281543
Creative Commons License photo credit: mackz

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.

Escrito por NomikOS en: Wordpress |
Hoy 1 lectores.
Aug
18
2009
0

EL DESCONOCIDO DAKEMBERG – Jean Mazarin


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

CAPITULO I

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…)

Escrito por NomikOS en: Ciencia Ficción |
Hoy 1 lectores.
Aug
01
2009
4

Comando chmod – Modificación de accesos a un archivo

Calculadora chmod
 
  read write execute
owner
group
other

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.-

Introducción

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
man chmod
NAME
       chmod - change file mode bits
SYNOPSIS
       chmod [OPTION]... MODE[,MODE]... FILE...
       chmod [OPTION]... OCTAL-MODE FILE...
       chmod [OPTION]... --reference=RFILE FILE...

# o sea basicamente el formato es:
chmod [opciones] permisos archivo[s]

Tipos de permisos

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

  • Tipos de usuarios

    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

  • Opciones

    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

  • Operadores

    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)

  • Ejemplos con notación literal

    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

    Modo octal

    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?

    Ejemplos con notación octal

    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.

    Escrito por NomikOS en: Comandos |
    Hoy 1 lectores.
    Aug
    01
    2009
    0

    Frases celebres sobre linux

    “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?”

    Escrito por NomikOS en: Linux |
    Hoy 1 lectores.

    Powered by WordPress. Theme: TheBuckmaker. Modifications by NomikOS