22/07/2011 a 9:53 AM (programacion, snippets, Tecnología)
Tags: bash, bash script, lower priviledges, script
¡Hola gente!
Yo generalmente corro todo el software en mi linux como root. No es porque sea re heavy re jodido, sino porque prefiero perder toda la información en mi computadora antes que escribir mi contraseña 300 veces por día. Además, lo único “de valor” que hay en mi computadora es mi información personal y correr como un usuario sin privilegios no protege eso.
De todas maneras hay aplicaciones que no son seguras para correr como root. Si alguien hackea una computadora, es muy probable que lo haga a través de algo como un servidor apache, una aplicación que esta siendo ejecutada por este, o por un browser.
Creé un script que ejecuta el comando que le damos como un usuario de menor rango – una especie de opuesto de sudo -, de manera que podemos ejecutar nuestro browser como otro usuario haciendo algo tan simple como
# lower chromium-browser
El código fuente y la documentación la pueden encontrar en el foro de puppy linux.
Un abrazo grande,
Pedro
Me gusta:
Sé el primero en decir que te gusta esta post.
Dejar un comentario
31/01/2011 a 11:33 AM (programacion, snippets, Tecnología)
Tags: aprender, desarrolladores, desarrollo, php, programacion, programadores, snippets
¡Hola gente!
Hace muy poco, me encontré con una situación en la que tenía que obtener la URL desde la que se estaba ejecutando el script. El siguiente código obtiene, tal como el original, además de la url, los parámetros GET. La diferencia con éste es que nos permite eliminar uno o varios parámetros GET.
function getCurrentUrl($exceptions) {
/*
* @param array $exceptions an array containing the string keys of get to be skipped
*/
$pageURL = 'http';
if ($_SERVER ["HTTPS"] == "on") {
$pageURL .= "s";
}
$pageURL .= "://";
if ($_SERVER ["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER ["SERVER_NAME"] . ":" . $_SERVER ["SERVER_PORT"] . $_SERVER ["REQUEST_URI"];
} else {
$pageURL .= $_SERVER ["SERVER_NAME"] . $_SERVER ["REQUEST_URI"];
}
foreach($exceptions as $e) {
$e = preg_quote($e);
$pageURL = preg_replace('/(?<=(&|\?))'.$e.'=.*?(&|$)/', "", $pageURL);
}
return $pageURL;
}
¡Espero que les sea de utilidad!
Un saludo,
Pedro
Me gusta:
One blogger likes this post.
Dejar un comentario
05/10/2010 a 4:42 PM (programacion, snippets, Tecnología)
Tags: aprender, php, programacion, snippets
¡Hola gente!
Quería compartir esta expresión regular, que me sirvió para obtener la parte final de una url, independientemente de si es http://droope.wordpress.com o google.com o lo que sea, siempre obtiene solo el sector final ( “droope.wordpress.com”, “google.com”).
$regex = '/(?:http:\/\/)?(?:www\.)?([\w\d]+\.[\w]+(\.[\w]+)?)/';
También creé una función que lo hace toda la matemática por nosotros:
function valid_url_get($url) {
if(preg_match('/(?:http:\/\/)?(?:www\.)?([\w\d\-]+\.[\w]+(\.[\w]+)?)/i', $url, $matches)) {
return $matches[1];
} else {
return false;
}
}
Retorna false si no es válida. En caso contrario, retorna el sector final de la url ;)
Un saludo,
Pedro
Me gusta:
One blogger likes this post.
Dejar un comentario
17/09/2010 a 4:20 PM (programacion, snippets, Tecnología)
Tags: aprender, bash, grep, programacion, recursivamente, snippets
¡Hola Amigos!
En alguna ocasión sintieron un profundo deseo de buscar una cadena de texto a través de todos los archivos de un directorio.
Yo se que si.
A continuación, el código que satisface ese deseo:
grep -nHR "cadena a buscar" ./directorio
Fácil, ¿Eh? :P
Un abrazo grande,
Pedro
Me gusta:
Sé el primero en decir que te gusta esta post.
1 comentario
14/09/2010 a 4:12 PM (programacion, snippets, Tecnología)
Tags: aprender, desarrolladores, desarrollo, programacion, programadores, snippets, sql, webmasters
¡Hola amigos!
Para aquellos que estén buscando lo que promete el título, la consulta es
select @rownum:=@rownum+1 as row, gid FROM games LIMIT 3000
Para los demás, dejo una consulta muy sencilla, que sirve para obtener el lugar que ocuparía una fila en determinada consulta ( es útil para redirigir a un usuario, luego de un evento exitoso, al lugar en el que estaba, en lugar de la página uno. Obteniendo el resultado que nos da esta consulta, y dividiendolo por el número de elementos que mostramos por página, obtendremos el número de página )
SET @rownum = 0;
SELECT row FROM (select @rownum:=@rownum+1 as row, gid FROM games LIMIT 3000) result WHERE result.gid = 3675
:)
Un saludo,
Pedro
Me gusta:
Sé el primero en decir que te gusta esta post.
Dejar un comentario
03/09/2010 a 4:55 PM (programacion, snippets, Tecnología)
Tags: php, programacion, slug, slugify, slugs, url, urls, urls amigables
¡Hola amigos!
Hasta hoy, al momento de crear strings, me encontraba utilizando str_replaces y un montón de cosas mas, cosas que siempre me llevaban a urls amigables un tanto feas.
Hoy busqué y encontré una función que permite crear slugs fácilmente, y que además convierte letras del tipo ‘á’ a ‘a’.
Sin mas, el código:
function slugify($text, $encoding = "utf-8") {
$text = preg_replace ( '~[^\\pL\d]+~u', '-', $text );
$text = trim ( $text, '-' );
if (function_exists ( 'iconv' )) {
$text = iconv ( $encoding, 'us-ascii//TRANSLIT', $text );
}
$text = strtolower ( $text );
// remove unwanted characters
$text = preg_replace ( '~[^-\w]+~', '', $text );
if(empty($text)) {
return false;
}
return $text;
}
¡Espero que les sea de utilidad!
Un saludo,
Pedro
Me gusta:
Sé el primero en decir que te gusta esta post.
Dejar un comentario
14/08/2010 a 4:33 PM (programacion, snippets, Tecnología)
Tags: feeds, feeds rss, php, php rss, programacion, programacion php, rss, rss php
¡Hola gente!
Los RSS son de gran utilidad para compartir información sobre nuestro sitio. El otro día me encontré en una situación en la que necesité generar uno dinámicamente. Busqué en google por el tema, pero no encontré nada… asique decidí compartir esto con ustedes.
/*
* generates a rss feed. If an item has a key, it will be considered a tag like <$key>$value</$key>.
* Otherwise, $value will be placed straight in the rss
* @author droope <pedro@worcel.com>
* @param string $encoding the rss' encoding
* @param array $channelProperties an array such as array('title' => 'Our cool RSS', 'link' => $site_url)
* @param array $items an array of arrays containing items and their properties. array(array('title' => 'Why we rule', '<enclosure url="logo.gif" type="image">'), array('title' => 'Lorem ipsum is simply dummy!'));
* @param bool $output if set to true, headers will be set and rss will be ouptutted to the screen. Otherwise, output will be returned
*/
function rss_generate($encoding, $channelProperties, $items, $output = true) {
$rss_url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if($output) {
header("Content-type: text/xml; charset=utf-8");
}
$output = '<?xml version="1.0" encoding="'.$encoding.'" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<atom:link href="'.$rss_url.'" rel="self" type="application/rss+xml" />
';
foreach($channelProperties as $property => $value) {
if(!empty($property)) {
preg_match("/^([\w:]+)(?:\s)?/", $property, $match);
$closeTag = $match[1];
$output .= "<$property>$value</$closeTag>";
} else {
$output .= $value;
}
}
foreach($items as $item) {
$output .= "<item>";
foreach($item as $property => $value) {
if(!empty($property)) {
preg_match("/^([\w:]+)(?:\s)?/", $property, $match);
$closeTag = $match[1];
$output .= "<$property>$value</$closeTag>
";
} else {
$output .= $value . "
";
}
}
$output .= "</item>";
}
$output .= "</channel></rss>";
if($output) {
echo $output;
} else {
return $output;
}
}
Los RSS generados validan y cumplen todas las recomendaciones de el validador oficial de RSS. Este código ha sido testeado en +-70 sitios y funciona bien. En caso de que encuentre alguna anomalía, recordaré actualizar el código posteado aqui.
¡Espero que sea de utilidad! Feliz generación de RSS con php :D
Un saludo,
Pedro
Me gusta:
Sé el primero en decir que te gusta esta post.
9 comentarios
08/07/2010 a 5:50 PM (programacion, recursos y tutoriales, redacciones, snippets, Tecnología)
Tags: desarrolladores, links, php, programacion, regex, snippets, transform urls to links, transformar links
¡Hola!
En el curso de mis viajes, me encontré en una situación en la que tenía que reemplazar URLs obtenidas desde un feed por links a esas URLs. Pensé en crear mi propio código regex, pero al final opté por utilizar google. Hoy me alegro de haberlo hecho, porque me encontré una expresión regular excelente que cubre las urls que veran si clickean este enlace.
Me parece que está muy completo, y hasta ahora no me ha fallado con ninguna url.
El código regex es:
<?php
$regexUrl = "/\b(([\w-]+:\/\/?|www[.]|(\w+\.))([^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/))))/";
// $2 = subdomain $3 resto de la url $1 cadena completa
Hice una función que simplifica bastante todo, simplemente hemos de pasarle como parámetro la variable en la que queremos que se transformen las URLs. La dejo a continuación, junto con un ejemplo de su uso. (es muy sencilla de utilizar.)
<?php
function urls_to_links($originalString) {
return preg_replace("/\b(([\w-]+:\/\/?|(www[.]|\w+\.))([^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/))))/", '<a href="http://$3$4">$1</a>', $originalString);
}
$cadena = "esta es una www.match.com con regex.urls.com para transformar a links. Dije alguna vez regex transformar urls? regex.urls.com/transformar/a/links";
$transformada = urls_to_links($cadena);
// ¡la cadena tiene ahora transformados los enlaces!
echo $transformada;
Para aquellos a los que les interese, el test case de esta aplicación es el siguiente:
<?php // regex to transform links test case / regex para transformar urls a enlaces - links test case
$testCases = "http://google.com/mail
http://google.com/mail/
(Something like http://google.com/mail)
http://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style_(disambiguation_pages)
(Something like http://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style_(disambiguation_pages))
http://google.com/mail.
http://google.com/mail/.
<http://google.com/mail>
<http://google.com/mail/>
http://google.com/mail,
http://www.tokyoflash.com/blog/?p=1288.
http://website.ws/faq
http://userid:password@example.com:8080
http://userid@example.com
http://userid@example.com:8080
http://userid:password@example.com
<tag>http://google.com/mail</tag>
Just a www.google.com link.
this is a adsense.google.com
this is a adsense.google.com/
this is a http://adsense.google.com
this is a http://adsense.google.com/";
$testCases = explode("\n", $testCases);
$urlRegex = "/\b(([\w-]+:\/\/?|(www[.]|\w+\.))([^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|\/))))/";
foreach($testCases as $testCase) {
$stringWithUrls = preg_replace($urlRegex, '<a href="http://$3$4">$1</a>', $testCase);
echo $stringWithUrls . "<br />";
}
¡Eso sería todo!
Espero que les sea de utilidad, me costó bastante esfuerzo, y modifiqué bastante la expresión original. :)
Un saludo
Pedro
Fuente:
Liberal regex for matching URLs
Me gusta:
Sé el primero en decir que te gusta esta post.
Dejar un comentario
14/03/2010 a 9:17 AM (programacion, snippets, Tecnología)
Tags: arrays, desarrollo, desarrollo rapido, librerias, php, programacion, recursos, snippets, webmasters
¡Hola!
Hice este snippet de código, que sirve básicamente para realizar un stripslashes de todos los elementos de un array, util especialmente en los casos en los que sacamos datos de una base de datos en la que la data no se escapó correctamente, o queremos trabajar con data que está escapada.
(cuando me refiero a escapada, lo hago como una traducción de la palabra escape, que es lo que se le hace a las cadenas de texto para evitar inyecciones SQL y errores con caracteres comunes como ‘ o “. Esos caracteres, escapados, serían transformados en \’ y \”, respectivamente)
Leer el resto de esta entrada »
Me gusta:
Sé el primero en decir que te gusta esta post.
Dejar un comentario