Herramientas de usuario

Herramientas del sitio


notas:programacion

¡Esta es una revisión vieja del documento!


Programación

Notas generales de programación

Actualizacion a PHP 5.3.2

split() reemplazarla por explode()

How to fix ‘Function eregi() is deprecated’ in PHP 5.3.0

I used to use eregi for validating email address input that matches to the regular expression.

<?php
if(!eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $str)) {
    $msg = 'email is not valid';
}
else {
$valid = true;
}
?>

That would return true if given email address is matches to username@domain.ext pattern. Unfortunately, after upgrading PHP to the earlier version (5.3.0), it wont work properly. This is because eregi is one of several functions that are deprecated in the new version of PHP.

Solution: Use preg_match with the 'i' modifier instead. i means that regular expression is case insensitive. So the code become like this:

<?php
if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $str)) {
    $msg = 'email is not valid';
}
else {
$valid = true;
}
?>

http://takien.com/513/how-to-fix-function-eregi-is-deprecated-in-php-5-3-0.php

Obtener el usuario segun su UID

En este caso queremos obtener el usuario que corresponde al UID 506

#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>
 
int main()
{
  struct passwd *pw;
 
  pw = getpwuid(506);
 
  if (pw == NULL) {
    printf("NULL!\n");
  }
  else {
    printf("name: %s\n", pw->pw_name);
  }
}

Parsear el contenido de un tag XML con sed

A veces necesitamos extraer el contenido de un tag XML dentro de un script, aca un ejemplo simple

	<state can_be_paused="0">running</state>
sed 's/<[^>]*[>]//g'

Salida:

	running

Agregar texto al final de una linea que matchea con cierto patrón

Ejemplo en la linea que se refiere al kernel en el archivo menu.lst quiero cambiar la opción de memoria para el dominio 0.

Entonces necesito cambiar de algo asi:

kernel /xen.gz-2.6.18-164.10.1.el5

A algo asi:

kernel /xen.gz-2.6.18-194.8.1.el5 dom0_mem=96

Ejecuto esto:

sed -e 's/kernel.*/& dom0_mem=96/g' menu.lst

Redondear un numero en BASH

echo "tmp=$variable; tmp /= 1;tmp" | bc

Ejecutar asyncronicamente en Perl o como emular un nohup desde adentro

use strict;
use POSIX qw/setsid/;
my $pid = fork();
die "can't fork: $!" unless defined $pid;
exit 0 if $pid;
setsid();
open (STDIN, "</dev/null");
open (STDOUT, ">/dev/null");
open (STDERR,">&STDOUT");
exec "comando a ejecutar";
notas/programacion.1307644494.txt.gz · Última modificación: 2011/06/09 18:34 por cayu