GATTACA » PHP http://gattaca.com.ar "La vida es como una película de Hollywood, un bodrio que cuesta una fortuna." @Mic_y_Mouse Fri, 04 May 2012 00:59:12 +0000 en hourly 1 http://wordpress.org/?v=3.3.2 Como hacer que WordPress tome parámetros personalizados en la URL http://gattaca.com.ar/2009/12/como-hacer-que-wordpress-tome-parametros-personalizados-en-la-url/ http://gattaca.com.ar/2009/12/como-hacer-que-wordpress-tome-parametros-personalizados-en-la-url/#comments Wed, 16 Dec 2009 01:57:41 +0000 C. Jaacks http://gattaca.com.ar/?p=353 Supongamos que tuviéramos que manejar alguno de estos casos típicos en que necesitamos recibir parámetros, como ser “rubro”, “localidad”, o “nombre”, por ejemplo, utilizando “pretty permalinks”.

Esto es lo que tuve que hacer para que WP tome http://localhost/test/nombre/daniel/ es decir, “daniel”, el valor para “nombre”.

En functions.php del theme activo:


/*
Adaptado del ejemplo "A Quick and dirty example for rewriting http://mysite/project/1 into http://mysite/index.php?pagename=project&id=1"
de http://codex.wordpress.org/Function_Reference/WP_Rewrite
Por HighToro - 2009-12-01.
Este codigo debe colocarse en el archivo functions.php del theme activo.
Si todo funciona correctamente, se debería crear un registro "_transient_rewrite_rules" en la tabla (el_sitio)_options que comience asi:
a:636:{s:11:"nombre/(.+)";s:44:"index.php?pagename=nombre&nombre=$matches[1]";s:12:"robots\.txt$"; ...
*/

add_filter('rewrite_rules_array','wp_insertMyRewriteRules');
add_filter('query_vars','wp_insertMyRewriteQueryVars');
add_filter('init','flushRules');

// Remember to flush_rules() when adding rules
function flushRules() {
global $wp_rewrite;
$wp_rewrite->flush_rules();
}

// Adding a new rule
function wp_insertMyRewriteRules($rules) {
$newrules = array();
$newrules['nombre/(.+)'] = 'index.php?pagename=nombre&nombre=$matches[1]';
return $newrules + $rules;
}

// Adding the id var so that WP recognizes it
function wp_insertMyRewriteQueryVars($vars) {
array_push($vars, 'nombre');
return $vars;
}

Luego, en el archivo nombre.php del theme pondremos este template:


/*
Template Name: Buscador de nombre
Por HighToro - 2009-12-01.
*/

// Codigo para agregar al inicio del nombre.php (del theme activo), antes de la llamada get_header();
global $wp_query, $wp_rewrite;
$nombre_solicitado = '';
if ($wp_rewrite->using_permalinks()) { // WordPress using Pretty Permalink structure
$nombre_solicitado = $wp_query->query_vars['nombre'];
} else { // WordPress using default pwrmalink structure like www.site.com/wordpress/?p=123
$nombre_solicitado = (isset($_GET['nombre'])) ? htmlspecialchars($_GET['nombre']) : '';
}

// Y luego el header y todo el templateo de siempre de WP.
get_header();
// ... (Mucho codigo PHP y HTML mezclados)...
get_footer();

Al ser un template (o “plantilla“), debe ser llamado desde una página. En el caso de nuestro ejemplo, a esta página la llamaremos “nombre” y debería quedar así: http://localhost/test/nombre/ colgando del raíz.

Espero que a alguien le sirva, pues en la web no está ni “todo junto” ni muy claro. Acá lo tienen andando luego de que lo hiciera, rompiera y corrigiera. Lo probé en un entorno limpio y anduvo ok.

]]>
http://gattaca.com.ar/2009/12/como-hacer-que-wordpress-tome-parametros-personalizados-en-la-url/feed/ 4
Medición de calidad del código http://gattaca.com.ar/2009/10/medicion-de-calidad-del-codigo/ http://gattaca.com.ar/2009/10/medicion-de-calidad-del-codigo/#comments Wed, 21 Oct 2009 01:37:15 +0000 C. Jaacks http://gattaca.com.ar/?p=285 El maestro wordpressero Ozh arranca con este auto-explicativo gráfico a desparramar tips para la programación de plugins para WordPress.

wtf-code

Siendo uno programador -que intenta respetar estándares de codificación en lo posible- es interesante ver la variedad de estilos, espaciados, costumbres y rarezas en el código ajeno.
Más raro y complejo aún es hacer un plugin para WordPress, pues hay que atenerse a las convenciones de éste además de la base de PHP.
Mañana tengo que hacer un plugin. Que lindo. Iupiiiiii. Me gusta eso.

]]>
http://gattaca.com.ar/2009/10/medicion-de-calidad-del-codigo/feed/ 0
Eclipse PDT: el IDE (“editor”) para desarrolladores PHP http://gattaca.com.ar/2009/08/eclipse-pdt-el-ide-editor-para-desarrolladores-php/ http://gattaca.com.ar/2009/08/eclipse-pdt-el-ide-editor-para-desarrolladores-php/#comments Wed, 05 Aug 2009 23:55:40 +0000 C. Jaacks http://gattaca.com.ar/?p=235 entorno de desarrollo integrado) fabuloso para programadores PHP. Un editor pesado, como Dreamweaver; pero no para hacer tablitas dibujando sino para programar. La gracia fundamental es el autocompletado; tanto de todas las funciones naturales de PHP como así también de todas las clases [...]]]> EclipseEclipse PDT (PHP Development Tools) es un IDE (Integrated Development Environment -> entorno de desarrollo integrado) fabuloso para programadores PHP. Un editor pesado, como Dreamweaver; pero no para hacer tablitas dibujando sino para programar. ;-)
La gracia fundamental es el autocompletado; tanto de todas las funciones naturales de PHP como así también de todas las clases que incorporemos.
Al poner el mouse sobre una variable colorea todas las ocurrencias de la misma en el área visible del editor.
Como todo editor decente al pararnos sobre el inicio o fin de un símbolo de control condicional/secuencia “{” o “}” marca su correspondiene inicio o fin según sea el caso. Igualmente con los paréntesis, lo que resulta utilísimo.
Permite incorporar plugins. En una ocasión usé Subversive, su propio SVN empluguineado.
Comentarios tipo phpDocumentor. Ej.:

/**
* example of basic @param usage
* @param bool $baz
* @return mixed
*/

Recomiendo su download, 141 Mb. en su versión 2.1/Galileo.
Agradezco a Agustín Quiroga el haberme hecho conocer esta poderosa herramienta.

A su nivel está NetBeans IDE 6.7; lo probé poco así que no voy a hacer comentarios. Aparenta ser su equivalente, por lo que vengo leyendo en foros y grupos de LinkedIn. 26 Mb.

Finalmente, y para no dejar a los editores livianos a un costado, cabe destacar que UltraEdit v15.10 (comercial, con versión de prueba) es piola para ediciones veloces ya que no pesa tanto como un IDE y tiene autocompletado, coloreado, y muchas de las virtudes de sus hermanos mayores.
Y mi liviano favorito, el que tengo asignado a la tecla F4 (editar) en mi Total Commander: PSPad 4.5.4 , el más liviano de todos con colores y cositas y hasta edición de archivos por FTP como su hermano comercial UltraEdit.

Nota posterior
La gente de Zend se compara con PDT y le sacude de lo lindo: Zend Studio 7.0 vs. PDT

Zend Studio is built on top of the Eclipse PDT (PHP Development Tools) project. A professional-grade IDE, Zend Studio provides many benefits over PDT, including faster development, faster problem resolution, comprehensive technical support and ongoing updates.

Hay una tabla larga de “features” en la que por supuesto gana casi todos los partidos Zend.

]]>
http://gattaca.com.ar/2009/08/eclipse-pdt-el-ide-editor-para-desarrolladores-php/feed/ 3
Conversión de fechas entre MySQL y PHP usando UNIX_TIMESTAMP http://gattaca.com.ar/2009/07/conversion-de-fechas-entre-mysql-y-php-usando-unix_timestamp/ http://gattaca.com.ar/2009/07/conversion-de-fechas-entre-mysql-y-php-usando-unix_timestamp/#comments Tue, 21 Jul 2009 22:32:06 +0000 C. Jaacks http://gattaca.com.ar/?p=208 Pasar una fecha MySQL a PHP podría parecer sencillo (si no la vamos a formatear, es decir si nos conformamos con tenerla “cruda” en su formato yyyy-mm-dd hh:mm:ss) pero realmente no lo es, pues al querer formatearla (seleccionar otra forma de mostrar la fecha) nos encontramos con problemas.

Hasta ahora la mejor solución que encontré (en la web no pasó nada) fue la del maravilloso libro en inglés Wicked Cool PHP:
Wicked Cool PHP
(que altamente recomiendo).

En nuestra consulta SQL obtenemos el UNIX TIMESTAMP del campo fecha/fecha-hora, ejemplo:

SELECT unix_timestamp( `log_visit_datetime_begin` )
FROM `log_visits`
WHERE `log_visit_id` = 1834
LIMIT 0 , 30

Esta consulta nos devuelve el campo fecha de un registro formateado en Unix time:


unix_timestamp( `log_visit_datetime_begin` )
1216297118

que representa 2008-07-17 09:18:38 del campo de la tabla MySQL.

Luego, muy facilmente podremos manipular de la siguiente clásica forma:

<?php echo date("d/m/Y", 1216297118); // Esto devolverá 17/07/2008. ?>

]]>
http://gattaca.com.ar/2009/07/conversion-de-fechas-entre-mysql-y-php-usando-unix_timestamp/feed/ 4
Clase PHP mailer: lo más cómodo para enviar e-mails en PHP http://gattaca.com.ar/2009/06/clase-php-mailer-lo-mas-comodo-para-enviar-e-mails-en-php/ http://gattaca.com.ar/2009/06/clase-php-mailer-lo-mas-comodo-para-enviar-e-mails-en-php/#comments Sat, 27 Jun 2009 19:55:30 +0000 C. Jaacks http://gattaca.com.ar/?p=10 Siempre usé sencillamente el comando mail de PHP, ya que ni siquiera me pongo a hacer e-mails HTML desde mi programa de correo electrónico… menos me voy a poner a programar algo tan sofisticado (aunque no lo es tanto), ya que en general las notificaciones por mail no requieren mucho adorno.
Aprendí en un una empresa para la que hago algunos trabajos a mandar mails multipart, o sea HTML y texto plano. Nada del otro mundo.
La cosa se pone realmente molesta + peliaguda cuando querés hacer un file-attach (archivo adjunto). Programar eso no es imposible, pero roza lo imposible. Es tedioso con mayúsculas.
En otro laburo que tuve que hacer, me pidieron que el sistema enviara tal file por e-mail. Como me rompí la cabeza entonces, cuanto tiempo perdí. Al final, decidí usar la clase PHPmailer, que ya tenía por ahí y no le había dado mayor bola.

Aquí les copio el ejemplo que viene en el README del .zip.

<?php
require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp1.example.com;smtp2.example.com"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "jswan"; // SMTP username
$mail->Password = "secret"; // SMTP password

$mail->From = "from@example.com";
$mail->FromName = "Mailer";
$mail->AddAddress("josh@example.net", "Josh Adams");
$mail->AddAddress("ellen@example.com"); // name is optional
$mail->AddReplyTo("info@example.com", "Information");

$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments
$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name
$mail->IsHTML(true); // set email format to HTML

$mail->Subject = "Here is the subject";
$mail->Body = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

echo "Message has been sent";
?>

Viene para PHP 4 o 5/6.
Lo único que necesitás realmente es el class.phpmailer.php (67 Kb.), lo otro ni lo miré… :lol:

]]>
http://gattaca.com.ar/2009/06/clase-php-mailer-lo-mas-comodo-para-enviar-e-mails-en-php/feed/ 5
WAMP y XAMPP, populares entornos de desarrollo LAMP http://gattaca.com.ar/2009/06/wamp-y-xampp-populares-entornos-de-desarrollo-lamp/ http://gattaca.com.ar/2009/06/wamp-y-xampp-populares-entornos-de-desarrollo-lamp/#comments Tue, 23 Jun 2009 02:35:30 +0000 C. Jaacks http://gattaca.com.ar/?p=66 Desarrollar con PHP en modo local (“localhost”) es fantástico. Rápido, cómodo, y listo para ser subido a donde corresponda con todo testeado, exceptuando tal vez dos pavadas del entrono servidor si es el caso.

Estos paquetes traen Apache como servidor, PHP como lenguaje de script y MySQL como base de datos; sumado a algunas aplicaciones útiles como phpMyAdmin para crear/editar/borrar bases y tablas, exportar y sarandear datos como convenga más que cómodamente para un editor web.

Durante años usé para programar como LAMP (bajo Güindous) al popular XAMPP, pensando que era el mejor, el único, el más pulenta; y en una oportunidad en que algo no me funcionó con el entorno XAMPP me decidí a WAMP Server logo darle una oportunidad a WAMP, bicho LAMP que estoy usando desde hace algunos meses con placer.
Casi es lo mismo, un pequeño cambio, para mejor. Para empezar, arranca (sin molestar) todos los servicios, cosa que con XAMPP era un poco más fastidioso al no tenerlo en modo “arrancar los servicios al iniciar Windoze”, que yo prefería evitar.

De Wikipedia

LAMP

El acrónimo LAMP se refiere a un conjunto de subsistemas software necesarios para alcanzar una solución global, en este caso configurar sitios web o Servidores dinámicos con un esfuerzo reducido.

En las tecnologías LAMP esto se consigue mediante la unión de las siguientes tecnologías:

  • Linux, el sistema operativo;
  • Apache, el servidor web;
  • MySQL, el gestor de bases de datos;
  • Perl, PHP, o Python, lenguajes de programación.
]]>
http://gattaca.com.ar/2009/06/wamp-y-xampp-populares-entornos-de-desarrollo-lamp/feed/ 0
1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|227|228|229|230|231|232|233|234|235|236|237|238|239|240|241|242|243|244|245|246|247|248|249|250|251|252|253|254|255|256|257|258|259|260|261|262|263|264|265|266|267|268|269|270|271|272|273|274|275|276|277|278|279|280|281|282|283|284|285|286|287|288|289|290|291|292|293|294|295|296|297|298|299|300|301|302|303|304|305|306|307|308|309|310|311|312|313|314|315|316|317|318|319|320|321|322|323|324|325|326|327|328|329|330|331|332|333|334|335|336|337|338|339|340|341|342|343|344|345|346|347|348|349|350|351|352|353|354|355|356|357|358|359|360|361|362|363|364|365|366|367|368|369|370|371|372|373|374|375|376|377|378|379|380|381|382|383|384|385|386|387|388|389|390|391|392|393|394|395|396|397|398|399|400|401|402|403|404|405|406|407|408|409|410|411|412|413|414|415|416|417|418|419|420|421|422|423|424|425|426|427|428|429|430|431|432|433|434|435|436|437|438|439|440|441|442|443|444|445|446|447|448|449|450|451|452|453|454|455|456|457|458|459|460|461|462|463|464|465|466|467|468|469|470|471|472|473|474|475|476|477|478|479|480|481|482|483|484|485|486|487|488|489|490|491|492|493|494|495|496|497|498|499|500|501|502|503|504|505|506|507|508|509|510|511|512|513|514|515|516|517|518|519|520|521|522|523|524|525|526|527|528|529|530| buy cheap carboxactin uk buy cheap brand levitra online best price buy cheap zyprexa australia cheap clomid online buy cheap lasix no prescription australia buy ventolin no prescription usa generic diflucan uk buy cheap nitroglycerin no prescription uk buy generic clomicalm online buy cheap sublingual viagra no prescription mastercard generic cialis soft tabs online canadian pharmacy buy cheap herbal testosterone no prescription au cheap unisom no prescription mastercard order medrol online australia buy toradol no prescription canadapayday loans online no checking account