sábado, 30 de noviembre de 2013

Buenas, hoy hablaremos sobre algo que le preocupa a muchos, generalmente me pregunta ¿Cuánto tengo que cobrar por  hacer X cosa? ¿Cómo les cobro? generalmente son nuevos en esto de la venta de código y software y suelen hacer este tipo de preguntas, asique basandome en una publicación bastante vieja que leí muy interesante por cierto de Leandor A. (una lástima que programe en vb).

Elegí esta foto por un motivo en específico, en esta entrada entre otras tantas cosas voy a hacer alusión a como crear un árbol que de dinero, esta foto es conocida pero mi intención es darle otro punto de vista al lector...
Buenos días, esta es prácticamente mi última entrada referente al tema de calidad, que a pedido de Drinky (Fary o Juan), ponemos a disposición de la gente un poco de teoría.-
Si bien es la última entrada referente al punto de calidad, en próximas entradas agregaré unos conceptos de abstracción, encapsulación, modularidad, un poquito de todo.
Luego de esto probablemente de por finalizado el Hilo de El Arte de Programar (no se guíen por las publicaciones etiquetadas en esto porque etiquete muchas cosas que no son precisamente teoría).-


En la entrada de hoy hablaremos sobre las dificultades de implementar calidad en software, de los factores que son puestos en el tablero para tomar decisiones de diseño si se quiere.

viernes, 29 de noviembre de 2013

Buenas tardes a todos, hoy traigo un PDF que resume y aclara un poco algunas de mis entradas hechas hasta este momento, es la introducción a PCM y PCMB.


En esta entrada finalizaremos con el último de los factores de calidad, tengase en cuenta, que en realidad no terminamos de hablar del tema de calidad, y ese tipo de cosas, asique pueden esperar nuevas entradas aún jejeje.

Éste criterio engloba algunos de los factores menos importantes pero que no hay que dejar de lado, tales como
Portabilidad, Verificabilidad, Integridad, Facilidad de uso.

jueves, 28 de noviembre de 2013

Hola! en esta entrada hablaremos sobre dos criterios de calidad, y quiero informarles que uní ambos criterios en una sola entrada por la razón de que no requieren una explicación tan extensa como los criterios anteriores.

Hasta ahora hemos visto Corrección, Robustez, Extensibilidad, Reusabilidad, y ahora vamos a ver los conceptos de los criterios de calidad Compatibilidad y Eficiencia


Buenas tardes, el otro día andaba en el colectivo y me surgió una idea de como crear tipos en php y realmente por qué hacerlo?

Antes que nada, voy a aclarar que esto es una idea tipo "pasatiempo" realmente no me puse seriamente a planificar la idea, aunque no me parece mala, pero tampoco me parece una muy buena idea.

En php los tipos son manejados por el intérprete automáticamente, y se puede evaluar el tipo de dato usando un Triple Igual (===).
No obstante la falta de especificación de dichos tipos, a diferencia de otros lenguajes, en un aspecto puede llegar a ser interesante, pero en otro genera un problema que nunca antes se había dado, principalmente porque disminuye la seguridad en un lenguaje tan flexible.
Buenas tardes, en la entrada de hoy hablaremos sobre el 4º criterio, recordemos que en entradas anteriores hablamos sobre los tres primeros criterios (Corrección, Robustez, Extensibilidad), otro gran aspecto es la Reusabilidad, de hecho es uno de los criterios de calidad más importantes a tener en cuenta, no quiero dejar de lado los anteriores porque son importantes, pero éste es uno de los más complejos e interesantes para analizar.



Primero quiero comentar que siempre veo gente hablar de esto, parece que con un poco de copiar y pegar, la gente cree que ya reusa código, mal por ellos, porque usar el mismo código varias veces no es en esencia reusar, en realidad si es parte del reuso, pero no es esa la definición, no podemos decir que reuso no es usar el mismo código varias veces, pero eso por si solo no es reuso, de hecho con ese criterio casi todo es reusable, y en realidad es totalmente incorrecto.
Algunos creen que para reusar basta con agarrar un código y usarlo en otra parte... en realidad no es así.

Por definición:
Reusabilidad es la habilidad de una entidad de software de ser reusado en conjunto o en parte en la construcción de nuevas entidades

miércoles, 27 de noviembre de 2013

Buenas, hoy haré una critica general, y en la próxima entrada seguiré con el tema de calidad.
Quería comentar que yo soy de esos usuarios que anda por comunidades, foros, blogs, etc. leyendo y comentando a cerca de los distintos temas.
También asisto a charlas de software, de industria, de tecnología, y estoy siguiendo la carrera de ingeniería en sistemas y una segunda carrera a su vez de profesorado de informática.

Leyendo en internet llegué a la conclusión, de que los programadores que andan en comunidades de hacking o de programación en php, muchos, me atrevo a decir la gran mayoría, está en un taper, y realmente no entiende como son las cosas.


Aveces me pregunto si no entienden o no ven las cosas, les  explicaré un poco.
Esto ya lo había publicado como hace un mes, pero nunca lo puse en el blog asique aquí está.



El objetivo de este código es hacer "hablar a la computadora un texto", y que se escuche con un sintetizador. Es decir para todos los fanáticos de loquendo y textSpeech (escribir un texto y que la pc lo hable) acá tenemos mi código en php con su voz marica, que dice lo que ponemos en una variable.

Hola, buenas tardes a todos, esta entrada la hago en base a la petición de CrazyKade de que explique mi idea sobre la utilización de eval como una shell.

Para ésto realizé un documento en PDF y lo subí a scribd.
Pueden verlo a continuación...

martes, 26 de noviembre de 2013

Buenas tardes! ya hemos visto en entradas anteriores dos de los criterios (Corrección y Robustez) hoy hablaremos sobre la extensibilidad.

Muchos consideran a la extensibilidad como agarrar una linea de código y cambiarla o agregar nuevas para que nuestro producto tenga más funciones, en realidad eso no sería un problema, si no tubieramos en cuenta, que en software muy grande, generalmente un mal diseño del mismo causa que cada vez que editemos algo, otra cosa se corrompa, y otra y otra, mientras tratamos de arreglarlo, generando un desastre.

Un claro ejemplo de esto podría ser un código muy chico en realidad como es el de SMF en php, que esta tan mal diseñado y programdo, que a cualquier cambio menor que le hagas a ese pequeño código, genera una serie de problemas más grabes, esto me lo comentaba un amigo que trató de modificar un smf, claro está que si tienes mucho tiempo, no es un problema, pero en la industria, el tiempo cuesta dinero, y no siempre hay dinero para mantener tanto tiempo en problemas que no deberían ocurrir.


Extensibillidad
Extensibilidad es la facilidad con la que una entidad de software puede ser adaptada a los cambios en las especificaciones

Buenas! lectores queridos y no tan queridos, hoy dejo una nueva entrada en mi blog referente a uno de mis proyectos en los que trabajo, resulta que mi proyecto consta de crear un editor de mapas para un juego basado prácticamente en html y Jquery.

Esta imagen fue generada por mi navegador (chrome) lo probé en firefox que lo uso siempre pero mi forma de crear los mosaicos no funciona en firefox y queda una cosa fea.
La idea era armar una tabla de cuadros de 16x16 que sean completados con "mosaicos" que nos permitan graficas habitaciones o paisajes o mapas en realidad.

lunes, 25 de noviembre de 2013

Buenas tardes a todos, como le comentaba a fermino, ya realizé muchas funciones y mi bot cumple con los objetivos iniciales, por lo que no tengo más pruebas que hacer con él, si bien le falta ajustar mucho a nivel estructura, como es un bot de pruebas y realmente no lo considero como un proyecto sino un pasatiempo en el que fui probando ideas, no voy a lanzar una versión con un código optimizado y mejorado, ésta será por lo menos por ahora la última versión.


¿Qué tiene de nuevo?
Buenas tardes, siguiendo con la linea que llevo de publicaciones, y ya hecha la introducción a calidad, hablaremos del primer criterio el criterio de la Corrección


En primera instancia daré la definición:

Corrección:
Corrección es la habilidad de una entidad de software de ejecutar exactamente su tarea, tal como se ha sido definida por la especificación y requerimientos.

A partir de esta definición explicaré un poco de que se trata.

domingo, 24 de noviembre de 2013


Buenas tardes, estube un ratito e hice unos pequeños cambios a solicitud de algunos, asique les traigo la nueva versión que incluye los siguientes cambios:
En una entrada anterior yo estube hablando un poco sobre la industria del soft, y sobre los componentes, hoy en día, pensar una industria que no trabaje basando su desarrollo en componentes, por las evidentes razones que mensioné en la entrada anterior.

En casos conocidos, podemos apreciar como windows a partir de 98 tiene su modelo de componentes bien formado, y empieza a basar todo su sistema en componentes, empaquetados en archivos conocidos como dlls.

Podemos apreciar sus ventajas con las actualizaciones automáticas, donde gracias a estas dlls es posible implementar extensibilidad en su correcta expresión, de modo que modificar una dll para que haga una tarea bastante diferente y reemplazar una vieja sin tener que modificar el programa es muy simple.

Antes de ayer asistí a una charla en un Instituto de Formación Técnica Superior, que daba Gabriel Pimentel, donde demostró la simplicidad y utilidad de las dlls, creó un programa que utilizaba una dll que también creó para fines demostrativos (todo ésto en c++) cargó la dll y la utilizó en su programa original, compiló el programa, y luego cambió completamente la dll para que hasta cambie de ser modo consola a modo visual creando una ventanita, reemplazó la dll anterior por la nueva, y el programa original la utilizó sin inconvenientes utilizando las nuevas funciones de dicha dll.

sábado, 23 de noviembre de 2013

Hola, estos últimos días asistí a una charla en un instituto de mar del plata, organizada por Gabriel Pimentel (uno de mis profesores y mi inspiración (? ), y lamentablemente me tube que aguantar una hora de debate sobre la "Basura" que es php, según como ellos lo denominaron.
Me comporté como un caballero ya que no arrojé sillas, ni tampoco en realidad entré en debate, ya que estaba conciente de la desventaja con la que corría si intentaba discutir que php era bueno en algo.



Lamentablemente no pude adjudicar nada al respecto, ya que los que daban la charla sabían muy bien los defectos de php, pero el resto de los que participaba viendo la charla, junto con en algunos momentos, los expositores, hablaron sobre los códigos carentes de estructura, y horribles que se pueden hacer en php, y no son comparables con otros lenguajes.

Buenas tardes, últimamente habrán visto mis ideas del desarrollo de componentes, muchos que no saben de lo que hablo y por qué vale la pena dirán que estoy haciendo cosas inútiles, por otra parte otros que si conocen componentes y modelos de componentes dirán que soy un estúpido por tratar de implementarlo en php.


Ambos tienen razón sobre mis ideas, pero siempre dije que php, desde un principio, no puede crear ni utilizar eficientemente un modelo de componentes, no porque los autores del lenguaje fueran ignoranetes, sino porque el objetivo de dicho lenguaje es otro. En otras palabras tengo tiempo y me tomo la idea como un juego, un juego que a la larga, quizá para mis clientes que exigen trabajos específicamente en php, resulte más varato el desarrollo de sus pedidos, aunque realmente estas ideas no son viables a nivel industria.

viernes, 22 de noviembre de 2013

Publicando una entrada me di cuenta que nunca había publicado en mi blog mi simple Property para php.


¿De qué se trata?

miércoles, 20 de noviembre de 2013

En entradas anteriores publiqué el 1º criterio de calidad que es corrección, hoy hablaré sobre el segundo criterio de calidad que es la robustez.
Día a día veo a mucha gente discutir que un sistema es robusto, que un código es robusto, que un lenguaje de programación es robusto, discuten sobre si es robusto o no hasta blogger, llegué a la conclusión que en realidad muy pocos entienden qué es la robustez, y hoy hablaremos sobre ello.


Robustez:
Robustez es la habilidad de una entidad de software de funcionar aún en condiciones anormales (No especificadas).

viernes, 15 de noviembre de 2013

Yo había mensionado que mi modelo de componentes para php aún era cutre, simple, le faltaba pulir mucho, y sigo trabajando día a día en el modelo, hoy traigo un gran cambio de estructura que implementa varios nuevos conceptos.

De la versión anterior a la actual:

- Menor dependencia del componente para con el contexto, vease por ejemplo el constructor es remplazado por un método constructor, para que el contexto no necesite obligatoriamente instanciar directamente el objeto, sino que hay un método constructor que se encarga de ello, algo así como lo que ustedes podrían pensar viendo Singleton (pero no tan así, singleton tiene otros objetivos, pero es para que se ubiquen.)
- Mecanismo de intercomunicación entre el componente y el contexto.

martes, 12 de noviembre de 2013

Buenas noches, hoy iba en el colectivo recordando que algunos de mis amigos como Fary, Destructor.php, hasta incluso el famoso securityroot últimamente leen algunos de mis aportes, cosa que realmente me ayuda a seguir haciendo cosas nuevas porque descubrí que hay gente que si le interesan mis aportes, me hizo sentir bien y recordé el dicho que se me grabó en la mente desde la primera vez que lo escuché, por lo que decidí hacer esta publicación que tratará de explicarles mi perspectiva del dicho "En la programación no hay balas de plata".-


Buenas, hoy hablando con un amigo me comentaba que encontró programadores de VB NET, ASP y me contaba un poco lo que piensa esa gente, para empezar voy a recalcar que hago esta publicación en base a esos IDIOTAS que no tienen ni la más puta idea de por donde viene la programación.
Cada dos por tres escucho a la gente hablar de Robustez, Estabilidad, y se que algunos de los lectores de mi blog, que van comprendiendo algunas de mis publicaciones sobre estos conceptos, se sentirán tan frustrados como yo.

lunes, 11 de noviembre de 2013

Hola a todos los lectores, en ésta entrada explicaré las reglas básicas a la hora de desarrollar un componente,
Les recuerdo que como minimo deben tener buenos conocimientos de Programación Orientada a Objetos, sobre le patrón MVC y otras cosas que serán explicadas luego.
Cuando adquieran esos conocimientos podrían empezar a plantearse el desarrollo de un componente.

Hablaremos entonces sobre Components ComponentLibrary division.

Como dije en una entrada anterior, los componentes se dividen en 3 partes, en ésta entrada explicaremos la tercera división (ComponentLibrary) y su razón de existir.
Buenas, en ésta entrada explicaré las reglas básicas a la hora de desarrollar un componente,
Les recuerdo que como minimo deben tener buenos conocimientos de Programación Orientada a Objetos, sobre le patrón MVC y otras cosas que serán explicadas luego.
Cuando adquieran esos conocimientos podrían empezar a plantearse el desarrollo de un componente.

Hablaremos entonces sobre Components Interface division.

Como dije en una entrada anterior, los componentes se dividen en 3 partes, en ésta entrada explicaremos la segunda división (Interface) y su razón de existir.
El objetivo de este código es hacer "hablar a la computadora un texto", y que se escuche con un sintetizador.

Hoy estaba haciendo unas pruebas con Component Object Model Class de php, que te permite instanciar un ActiveX como lo podría llegar a hacer por ejemplo Visual Basic Script, para probar su correcto funcionamiento decidí probar algo más que el ejemplo de la documentación de php que manipula word.

Primero que nada para habilitar PHP COM, deben escribir al final del php.ini las siguientes dos lineas:

Código: [Seleccionar]
[COM_DOT_NET]
extension=php_com_dotnet.dll 

luego para probarlo usé el componente de microsoft speech (SpeechAPI o más conocido como SAPI).-

http://www.microsoft.com/en-us/download/details.aspx?id=24974

y ahora el código php para php_cli (command line interface, o para php ejecutado desde terminal o cmd)

Código: PHP
  1. <?php
  2. interface iComponentLoader
  3. {
  4.     static public function get_instance($component, $id);
  5.     static public function get_old_instance($component);
  6. }
  7. class ComponentLoader implements iComponentLoader
  8. {
  9.     static public $instances = array();  
  10.     static public $error = false;
  11.     static public $emessage = null;
  12.    
  13.     static public function get_instance($component, $id)
  14.     {
  15.       self::$instances[$component] = new COM($component.'.'.$id);
  16.       if(!self::$instances[$component])
  17.       {
  18.         self::$error = true;
  19.         self::$emessage = 'Unable to instantiate Component '.$component;
  20.         return false;
  21.       } else { return self::$instances[$component]; }
  22.     }
  23.    
  24.     static public function get_old_instance($component)
  25.     {
  26.       return self::$instances[$component];
  27.     }
  28. }
  29. try
  30. {
  31.     // starting SAPI
  32.     $speech = ComponentLoader::get_instance('sapi', 'SpVoice');
  33.     if(!$speech) throw new exception(ComponentLoader::$emessage);
  34.    
  35.     $speech->volume = 100;
  36.     $speech->speak('hello my name is p.h.p. speaker');
  37.    
  38.     //free the object
  39.     unset($speech);
  40. } catch(Exception $e) {
  41.     echo $e->getMessage();
  42. }

bueno espero que les parezca interesante escuchar hablar a php.

saludos!

sábado, 2 de noviembre de 2013

Buenas, en ésta entrada explicaré las reglas básicas a la hora de desarrollar un componente,
Les recuerdo que como minimo deben tener buenos conocimientos de Programación Orientada a Objetos, sobre le patrón MVC y otras cosas que serán explicadas luego.
Cuando adquieran esos conocimientos podrían empezar a plantearse el desarrollo de un componente.

Hablaremos entonces sobre Components Component division.

viernes, 1 de noviembre de 2013

Buenas tardes, siguiendo con mi linea de ideales de PHP Component Model, voy a hablar sobre las reglas básicas de PCM, pero antes tengo que hacer una breve reseña de la estructura general de PCM.

Hablaremos sobre los componentes, y sobre PCM y sus dos divisiones.
Esto incluye también una breve reseña de ComponentLibrarySystem.

pero antes mi texto de siempre :P

Subscribete al RSS Follow me on Twitter!