Ninguna de estas instrucciones son nuevas y probablemente muchos de ustedes las conozcan, pero al menos yo me tarde un rato en encontrar la forma correcta de utilizarlas, así que les dejo un pequeño resumen por si, por alguna extraña razón las llegan a utilizar = ).

Recientemente me vi en la necesidad de programar un Script (.cmd) para hacer un Backup desde la línea de comando desde MS-DOS, el script parecía ser bastante sencillo, tenia que comprimir una carpeta desde la línea de comandos utilizando 7zip , guardar el archivo con un nombre que incluyera como prefijo la fecha, en formato YYY_MM_DD, ejemplo: 2009_05_11Backup1.7z.

El primero problema que tuve con el script , fue ¿Como obtener el año, el mes y el día desde la línea de comando en tres variables separadas?

Si utilizamos la instrucción

c:\>date /t

obtenemos la fecha en formato DD/MM/AAAA, pero lo que queremos es almacenar en variables separadas el año, el mes y día actual.

Dentro de un archivo cmd, esto lo podemos hacer con la instrucción FOR de MS-DOS con la cual podemos hacer un parseo de esa fecha con la siguiente instrucción:

 for /f "tokens=1,2,3 delims=/" %%a in ('date /t') do set fec= %%c_%%b_%%a


Con esta instrucción le decimos al Script que por cada línea que le regrese la instrucción ‘date /t’ (en este caso una sola línea), debe de parsear esa línea utilizando como delimitador ‘/’ , obtener los tokens 1,2 y 3 y guardar los resultados en la variable fec, separándolos con un guión bajo.

De esta forma si el dia es 11/05/2012, se guardara en la variable fec 2012_05_11

El segundo problema es que el FOR regresa fecha con algunos espacios en blanco y en lugar de tener:

fec=”2012_05_11″

se tiene

fec=”2012_05_11

En particular el problema podría plantearse como, ¿Como hacemos un TRIM desde MSDOS? y en general podría ser, como hacemos un Search & Replace en una cadena desde la línea de comandos en MSDOS

Pues resulta que SI existe una forma de hacerlo desde MSDOS y es parte de la sintaxis (es decir, no es una instrucción en particular)

La forma de hacerlo es la siguiente:

set var2=%var1:StrToFind=NewStr%

Con lo cual le indicamos que busque la cadena StrToFInd en la variable var1 , la substituya con NewStr y lo asigne a la variable var2

En nuestro caso lo que queremos es quitar los espacios en blanco, suponiendo que ya tenemos en la variable fec la fecha almacenada la instrucción seria la siguiente:

set fec=%fec: =%

Es decir, le pedimos que busque los espacios en blanco en fec y que los sustituya por “nada”. Con lo cual estamos haciendo un Trim desde MSDOS.

Para mas información

http://www.ss64.com/nt/for_cmd.html

http://www.ss64.com/nt/syntax-replace.html

Este es un mashup que hice con Yahoo Pipes, obtiene el Playlist de Ibero 90.9 (estación de Radio en F.M. del D.F.) y lo convierte en un VideoPlaylist con ligas a los videos correspondientes a las canciones en YouTube

Si lo prefieren pueden verlo directamente en Yahoo Pipes

Primero Steve Demeter hizo $250,000 dolares en tan solo dos meses, y ahora cuando  todos pensaban que el mercado de aplicaciones para el Iphone estaba saturado Ethan Nichola ex ingeniero de Sun Microsystems hace $37,000 en tan solo un dia, segun sus calculos a finales de año podria hablar de al menos un millon de dolares en ganancias.

Independientemente de estos casos expecionales, en los que un programador con una buena idea se hace millonario, de acuerdo a este artículo, la demanda de gente con este tipo de perfil es muy alta,
el skillset incluye:

Xcode
Objective-C
Cocoa
Open GL

Para los que todavia se preguntan si si se especializan en Java, Ruby o .Net sobre Windows /Linux  , porque no considerar Objective-C ?

Por supuesto que el “Entrance Barrier” a superar sigue siendo el precio del Iphone , hay que tener uno para probar las aplicaciones , y un equipo con MacOsX para hacer el desarrollo.

Para las personas interesadas en mantenerse al día y siempre estar al pendiente de los nuevos lenguajes de programación de moda, no se preocupen, de acuerdo a este artículo de la prestigiosa publicación Dr Dobbs Journal,  el lenguaje de programación mas utilizado en pleno  siglo 21 sigue siendo Cobol.

Mas aun, debido a que sigue siendo un elemento clave en muchos sistemas de negocio de tamaño considerable , y como las nuevas generaciones de programadores se enfocan mas a los nuevos lenguajes como Java,Ruby, C#, la demanda de puestos en los que se requiere Cobol va en aumento, y debido a que la oferta es muy poca , los salarios tambien han seguido la tendencia a la alta en los ultimas años.

Y por increible que parezca, no solo es el echo de que muchas empresas tengan dependencia hacía Cobol, en muchas de ellas  todavia se sigue utilizando para nuevos proyectos (Yo conozco una!)

Asi que como dice el articulo:

Si todo esto es verdad, no es tan raro que Cobol:

1) Es  el lenguaje de programacion mas utilizado en el siglo 21

2) Es critico para algunas de las areas de desarrollo de software hoy en dia; y

3) ¿Puede ser el proximo lenguaje que TU decidas aprender?

Para mas información:

Cobol is the most widely used language in the 21st century.

Cobol Job Market Heating Up

Me parece interesante la conferencia de jQuery que da Dmitri Gaskin, un niño de tan solo 12 años, la platica se llava a cabo en una de las  Google Tech Talks.

JQuery es uno de las librerías/frameworks para JavaScript mas populares, tal como su lema lo dice “The Write Less Do More Javascript Library”, y para demostrar que no solo se aprendio su tema, tambien responde a varias preguntas a la audiencia, Dmitri Gaskin tambien esta involucrado en el desarrollo del conocido administrador de contenidos de codigo abierto Drupal, Incluso como puede observarse en las fotos de su blog, ha participado en la LinuxWorld como expositor de Drupal.

Todo un Geek el chamacho! Simpática  la cronica que hace en su blog acerca de como en un principio no se le permitia la entrada a la expo (por no ser mayor de 18!).

Conforme nuestro uso de los distintos servicios de Internet se va incrementando podemos ver una tendencia: esos servicios dejan un rastro de nuestra actividad on-line y off-line.

Tomemos los siguientes servicios como ejemplo:

Navegacion o Social Bookmarking
Si utilizamos delicious podemos saber que es lo que nos parece interesante o digno de ser guardado en
nuestro bookmark personal y compartirlo en linea
Servicios Alternativos :Magnolia, Facebook Link Share, Frienfeed Link Share

Fotos
Compartir fotos en línea es una de las actividades mas populares, uno de los servicios mas conocidos es Flickr, pero hay muchas alternativas (Picassa, Facebook,etc)

Estatus/Actividad Actual
Con servicios como Twitter, podemos compartir con nuestros conocidos que es lo que estamos haciendo/pensando/sintiendo en cada momento, no me extiendo sobre este tema ampliamente comentado y analizado en la blogosfera , el cual se puso tan de moda que incluso Facebook y Hi5 tuvieron que copiar esta característica (o feature) e incorporarlo en sus redes sociales. Aqui una alternativa basada en Codigo y Estandares Abiertos: Identi.ca

Musica
Con servicios como Last.fm puedo compartir que musica/generos/grupos me gustan, que musica estoy escuchando en este momento

Videos
Los dos servicios mas populares para compartir videos en línea YouTube y Vimeo

¿Que es un LifeStream?
Tambien llamado por algunos “LifeCasting”, en su forma mas simple podemos decir que es una lista (obtenida generalmente agregando RSS de diversos sitios como los mencionados anteriormente) , ordenada cronologicamente,  de las actividades que forman parte de tu vida tanto online como offline.

De esta forma si alguno de mis conocidos quiere saber, que estoy leyendo, que paginas me parecen interesantes, que actividades (interesantes o no) he hecho ultimamente, solo tiene que revisar mi lifestream.

En la actualidad hay varios productos que se encargan de hacer este seguimiento o “agregación” y  permiten compartirlo con familiares y amigos:

-Friendfeed (Fundado por ex-empleados de Google)
-Jaiku (recientemente fue adquirida por Google)
-LifeStream.fm
-Profilactic (autodefinido como “online identity aggregato”)

Si se desea  integrar  tu lifestream directamente en tu Blog o pagina web existen las siguientes opciones

-Widgets / Plugins : esta es la opción mas sencilla simplemente hay que copiar y pegar una porción de código y se desplegara un Widget en el sitio, para el caso de Wordpress hay ya varios Plugins disponibles los cuales se instalan , se configuran indicando a que servicios se les dara seguimiento

-API’s : A través de las API’s se pueden utilizar los servicios de agregación de una forma mas personalizada y en distintos lenguajes, Jaiku y Friendfeed tienen estas opciones.

-Scripting : Si se desea se puede crear un script personalizado a traves del cual se obtengan todas las RSS de los servicios que se deseen integrar y presentarlas en orden alfabetico. Esta es la opción que nos permite tener mayor control pero tambien hay que invertir mas tiempo programando los scripts.

Por ejemplo, el codigo en PHP que hace uso del API de Friendfeed para PHP, con el que despliego mi LifeStream en mi Home Page, el cual esta basado en el artículo de Web Monkey es el siguiente (es necesario estar dado de alta en Friendfeed y obtener una Remote Key):

require_once("include/friendfeed.php");
require_once("include/JSON.php");
...
...
...
<div id="textHomeOption">Mi LifeStream:</div>
fetch_user_feed("marioalberto", null, 0, 30);
	foreach ($feedff-&gt;entries as $entry):
	?&gt;
<div class="item">
                service-&gt;iconUrl . '" alt="' . $entry-&gt;service-&gt;name . '" /&gt;'; ?&gt;
                link.'"&gt;'.$entry-&gt;title.' '.date('j M Y-g:i a', $entry-&gt;published).''; ?&gt;
                media as $media) {
                  echo  '<img src="'.$media-&gt;thumbnails[0]-&gt;url.'" alt="" />';
 
                  } ?&gt;</div>

El tema parece estar recibiendo amplia cobertura como se puede ver en esta conferencia organizada por el MIT : “Lifestreaming: The Real-time Web.”, asi como en el Blog de Read Write Web y en el LifeStreamingBlog.

Los Frameworks del Futuro

August 29th, 2008

Te dedicas al desarrollo de aplicaciones web, y necesitas decidir que framework utilizar?

Apenas vas empezando en el mundo del desarrollo y te gustaría saber a que combinación de tecnologías le deberías de invertir mas de tu valioso tiempo?

Con el Boom de los frameworks es cada vez mas dificil tomar este tipo de decisiones:

Si te dedicas a Java:

Struts
Tapestry
Wicket
Spring
Stripes
JSF
GWT

Si lo tuyo es Python tenemos Django y Turbogears,  si le entraste a la moda del Ruby: Ruby on Rails

Si te gusta Java y te dan envidia los de Ruby, tenemos  Groovy con Grails.

En la presentación Web frameworks of the future , Matt Riable se pregunta:

¿Que pasaría si las opciones se redujeran solo a 4? GWT, Grails, RubyonRails, Flex

Se las recomiendo ampliamente, muy interesante.

Lo mejor de todo, la conclusión de Matt:

Don’t Believe The Hype! Prototype and draw your own conclusions.

Hace poco me vi en la necesidad de manipular un archivo de XML con Java,  ya en ocasiones anteriores  había utilizado java para leer y/o escribir archivos de XML  pero generalmente hacía mi propio parser, lo cual es bastante complicado, asi que con el proposito de no reinventar la rueda decidí echarle un ojo a XMLBeans, se los recomiendo bastante. Ya que estuve dedicandole  tiempo a aprenderlo decidi hacer un pequeño tutorial de XMLBeans el cual pueden consultar en este sitio.
Espero que les sea útil.

Acabo de terminar un tutorial mas, en esta ocasión es de los frameworks de Loggeo de Apache:

-Apache Commons Logging
-Log4j

El articulo se puede consultar aqui .