Chusmeando en la página de Ruby (lenguaje altamente documentado) me encuentro con esta simple comparación muy útil:
Similaridades
Como en PHP, en Ruby…
* las variables son dinámicamente tipadas, así que no tienes que preocuparte por declararlas.
* hay clases, y puedes controlar el acceso a ellas como en PHP 5 (public, protected y private).
* algunas variables comienzan con $, pero no todas.
* también está eval.
* puedes usar el interpolado de strings. En vez de hacer “$foo es un $bar”, puedes hacer “#{foo} es un #{bar}”—al igual que en PHP, esto no aplica para los strings definidos con comillas simples.
* tienes “documentos internos” (“heredocs” en inglés).
* tienes excepciones, como PHP 5.
* hay una biblioteca estándar bastante grande.
* los arrays y hashes funcionan como se espera que lo hagan, si cambias array() por { y }: array(’a’ => ‘b’) en Ruby es {’a’ => ‘b’}.
* true y false se comportan como en PHP, pero null se llama nil.
Diferencias
A diferencia de PHP, en Ruby…
* hay tipado fuerte. Necesitarás utilizar to_s, to_i, etc. para convertir entre strings, integers y así en más, en vez de depender del lenguaje para que lo haga.
* los strings, números, arrays, hashes, etc. son objetos. En vez de utilizar abs(-1) se usa -1.abs.
* los paréntesis son opcionales en las llamadas a los métodos, excepto para clarificar qué parámetros van para qué método, cuando es necesario.
* en vez de usar condiciones de nombrado, como guiones bajos (underscores), la biblioteca estándar y las extensiones están organizadas en módulos y clases.
* la reflexión es una capacidad inherente de los objetos, no necesitas usar clases Reflection como con PHP 5.
* las variables son referencias.
* no hay clases abstract o interfaces.
* los hashes y arrays no son intercambiables.
* sólo false y nil son falsos: 0, array() y “”, son todos verdaderos en las condiciones lógicas.
* casi todo es una llamada a un método, incluso raise (equivalente a throw en PHP).
Creo que esperé una página como esta desde que tomé conciencia de la web como programador, Codepad es una página donde uno pone código en, por ahora, 7 lenguajes distintos y la página lo interpreta, compila y devuelve la salida …
Asi es un compilador on-line en constante desarrollo con resaltador de sintaxis incluido y con capacidad para compartir nuestro código con una URL ( http://codepad.org/nombretemporal ) corta y con posibilidad de realizar comentarios (el código esta de manera temporal claro).
Inclusive pueden crearse proyectos con una url donde los contenidos subidos quedan fijos, solo hay que registrarse ( http://proyecto.codepad.org/ ).
Ultimamente que descubrí que UTF8 es la verdad en juegos de caracteres ( y no lo digo yo lo dice Dios), ya que es el único creado para contener todos los caracteres de todos los idiomas (el nuevo estandar, nada puede salir mal digamos ya que utilizar los caracteres Unicode).
Me estoy enfermando para pasar todo a este juego de caracteres y olvidarme de los problemas de una buena vez.
Para lograr esto tuve que luchar un poco ayer, y hoy aprendí algo nuevo en mi lucha diaria, esta vez sobre la configuración de apache 2.
Resulta que trae esta línea en el archivo apache2.conf :
AddDefaultCharset on
y esta en la configuración de los sitios virtuales:
AddDefaultCharset ISO-8859-1
por defecto pisando (override) lo que los documentos web especifican en sus declaraciones. Esta directiva de configuración (si bien nos puede sacar de algún apuro) esta considerada como una herejía, 2.
Lo ideal es sacarla, en lo posible o con:
AddDefaultCharset off
En el archivo de configuración principal (apache2.conf),o bien quitando:
AddDefaultCharset CHARSET (CHARSET es el juego de caracteres especificado en cada caso)
del archivo de configuración de un sitio en particular.
Piensen de esta manera, el día de mañana en las materias como programación se va a hablar del UTF8 como hoy lo hacen del ASCII (estandar por muchos años que solo consideraba el idioma inglés).
Un video que visualiza la historia del desarrollo de python a través de los años basados en los commits de cada usuario.
Muy interesante la forma de mostrarlo
Si bien Python nos obliga a identar, si o si (entre otras prácticas osadas que tiene como las documentation strings en las funciones), los demás lenguajes no siguen esta costumbre asi que, para nosotros los mortales que usamos lenguajes comunes existe la identación y el resaltado.
Como dijo un conocido
“por más información que tengas sin formato no se entiende y tampoco sirve, tienen que estar las dos cosas”
Por eso les dejo un artículo de Algorítmica que habla un poco de todos los estilos de identación y sus usos.
Hace un tiempo vengo viendo cosas del estilo, se trata de programas que nos dejan imitar la física gravitatoria a niveles inesperados. La primero surgió como un port de la biblioteca en C++ de Erin Catto’s y es en flash, se llama Box2DFlashAS3 y la segunda la descubrí hoy y se llama phun realizada por Emil Ernerfeldt.
Bueno, John Resig explica (con un video ! así no tenemos que pensar) algo de como bajarse y empezar a probar este nuevo lenguaje. Además hay mucho más en la página oficial del lenguaje.
Un proyecto para poder correr widgets de cualquier plataforma (léase apple, yahoo, opera, m$) en Gnome.
Todavía esta en desarrollo pero es de lo más interesante. Si alguien sabe Python y quiere ayudar es una muy buena idea.
Dando vueltas por ahí me encontré esta guía para instalar el SDK de android en Eclipse. Iba a escribirla yo pero no vale la pena ya que esta muy completa acá con fotitos y todo.
Habrá que probarlo !
dejo más información con links a videos y cosas de Adroid acá.
Sinceramente había escuchado algo del tema pero nunca profundizé en el.
Ya salió el lenguaje D (sucesor del C ? ). No, parece que es el resultado del conocimiento y la experiencia de muchos desarrolladores, la idea era hacer un nuevo lenguaje con todas las características deseadas, compatible con C pero sin cargar con todo lo que el C representa.
Algo asi como empezar desde cero pero aprovechando todo el conocimiento adquirido durante tantos años.
D is not a scripting language, nor an interpreted language. It doesn’t come with a VM, a religion, or an overriding philosophy. It’s a practical language for practical programmers who need to get the job done quickly, reliably, and leave behind maintainable, easy to understand code.
D is the culmination of decades of experience implementing compilers for many diverse languages, and attempting to construct large projects using those languages. D draws inspiration from those other languages (most especially C++) and tempers it with experience and real world practicality.
El propio sistema operativo no usa las ventajas que su hardware le ofrece !
Alguna vez escuché a un profesor decir que HAL (Hardware Abstration Layer) era una de las grandes desvetajas de Windows con respecto a los demás sistemas operativos ( refiriendose a los que se compilan para cada arquitectura específica) ya que nunca usan las características especiales del hardware en el que corren.
Vemos como cada vez hay más hertz pero el rendimiento se mantiene o empeora.
Creo que con el tema de los celulares y PDA se esta teniendo mucho más en cuenta la programación específica para plataformas con logrando un mucho mejor rendimiento.
Es muy común en tecnología encontrarse con profesionales que intentan dar una visión complicada de las cosas, ocultarse tras la muralla del conocimiento tecnológico para no facilitar la información y mantener por lo tanto una posición, ocultar su incompetencia, incrementar su ego o simplemente salvar un puesto de trabajo. Lo cierto es que a largo plazo esta táctica no funciona.
Muchas veces la forma de identificar a un auténtico experto o (palabra que odio) gurú de un tema es por la facilidad de hacer simple lo aparentemente difícil y, normalmente, esto se consigue gracias al dominio de la materia que se trata.
y un “tutorial” AJAX que en realidad es una explicación de como ya existian técnicas parecidas antes hecha por el creador de PHP Rasmus Lerdof: link
Si bien considero a informix como un buen motor de base de datos, ciertas cosas en las consultas no estan del todo bien documentada, por ej: las fechas.
El problema en particular que tube fue resrando meses. La solución es esta:
SELECT (TODAY) - 3 UNITS MONTH
FROM tabla
(la palabra TODAY significa la fecha actual .. la misma puede ser cambiada por cualquier fecha, se deben untilizar comillas simples en tal caso)
yo solia solucionarlo de esta manera
SELECT registros
FROM tabla
WHERE
month(fecha)=month(TODAY-90)
pero dependiendo de la situación puede dar errores muy grandes la otra manera que es la que solia utilizar es manejar la consulta con un BETWEEN y resolver las fechas con otro lenguaje que genere la consulta ya sea php, perl o cualquier otro por ej:
//datos pasados como parámetro
$mes=$_GET['mes'];
$anio=$_GET['anio'];
for ($t=1;$t<=3;$t++)
{
if ($mes<=1)
{
$mes=12;
$anio--;
}
else
$mes--;
}
$sql = "
SELECT campos
FROM tabla
WHERE
fecha BETWEEN date('01/$mes/$anio') AND date('01/$_GET[mes]/$_GET[anio]')
";
en el caso que se quiera entre la fecha del principio de un mes y del final de otro la solución sería por ej:
SELECT campos
WHERE
campo BETWEEN MDY(6,1,2007) AND MDY(6+1,1,2007) -1 //MDY es una función para armar datos de tipo date
FROM tabla
lo que estoy haciendo es obtener el último día del mes sumando un mes y restandole un día.
Espero que les sirva. Si notan algún error o tienen alguna situación particular por favor avisenme. Gracias.
Slds
Hoy estuve peleando un poco con js como de costumbre este es el resumen del peculiar objecto Date:
var fecha= new Date(); //toma la fecha de hoy
fecha.getMonth(); //devuelve el mes actual -1 , es decir, los cuenta desde 0 (:S:S:S, que necesidad !!)
fecha.getDay(); //devuelve el día respecto de la semana ! no el día respecto del mes como todos nos esperamos !
fecha.getDate(); // quizas quieras usar esta ( sisi DATE (??) ) que es con respecto al mes.
Supongo que estos métodos estan pensados para que podamos convertir las fechas con arrays, por ej.:
var Dias= new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var Meses= new Array('January','February','March',
'April','May','June','July','August','September',
'October','November','December'); //si lo copian borren los enter
var hoy= new Date();
var Mes = hoy.getMonth()+1;
var NombreDia = Dias[hoy.getDay()];
var NombreMes = Meses[hoy.getMonth()];
ya que en js los array empiezan desde 0 como en C.
Codeide como bien lo indica el nombre es un IDE web que soporta varios lenguajes de programa,Ya lo había visto alguna vez, pero ahora le agregaron mas lenguajes, también permite chatear con otra persona mientras uno está programando (cosa MUY útil).
Dando vueltas por el blog Anieto2k me encontré con este Arkanoid hecho completamente en javascript. Después me puse a averiguar que mas había hecho con javascript de este estilo y me acordé que alguna vez había visto una aplicacion al estilo “first person shooter” asi que ahi van.
Dando vueltas por internet encontré esta aplicación disponible on-line y para bajar al disco. Es un corrector de sintaxis para javascript que nos corrije los errores más comunes en ese lenguaje como:
Falta de punto y coma al final de la línea.
Llaves sin un if, for, while.
Código que nunca se ejecuta debido a un return, throw, continue o break.
Sentencias case dentro de un switch que no tienen break.
Números decimales que empiezan o acaban directamente con el punto.
Un número que empiza por cero que lo convierte en octal.
Sentencias que no hacen nada.
Expresiones regulares que no están precedidos por un paréntesis, asignacion, coma o dos puntos.
Sentencias separadas por comas en vez de por punto y comas.