Ir al contenido principal

Entradas

¿Avances en el problema de las Direcciones en Nicaragua 2020?

Existen relativamente abundantes artículos quejandose, burlandose, o intentando explicar ( 1 , 2 ) la particularidad de las direcciones nicaragüenses, entre el ruido de quejas, se vislumbran algunas propuestas para crear una nomenclatura estándar, ninguna hasta hoy ha sido implementada. Sin embargo con el advenimiento de la tecnología, incluso en los países con nomenclaturas específicas y alta densidad de señalización, es mas común buscar una dirección en una de las varias aplicaciones existentes(Google Maps, Waze, OpenStreetMap, etc) y esta te guiará paso a paso("turn-by-turn") hacia tu destino. Por eso pienso que en lugar de intentar forzar una nomenclatura que podría tardar años en aplicarse, se debería dar una respuesta tecnológica al problema y luego avanzar hacia la tan anhelada estandarización. Aunque en estos tiempos la movilidad de las personas se ha reducido, al contrario la cantidad de empresas que proveen servicios de envío o transporte hacia domicilios ha crecido...

Limite en articulos de Ghost

En la documentación oficial de Ghost no dice nada sobre un límite de tamaño para los post, sin embargo Ghost usa como middleware  Body Parser  este componente si que define un límite por defecto para las peticiones que es de 100kb, aun asi desde Ghost aun no se puede modificar dicho límite en la configuración, pero sabiendo la información podemos modificar fácilmente el código de Ghost para definir manualmente dicho límite: En config.js, para el ambiente correspondiente agregaremos un nuevo campo requestLimit: development: { // The url to use when providing links to the site, E.g. in RSS and email. url: 'http://my-ghost-blog.com', database: { client: 'sqlite3', connection: { filename: path.join(__dirname, '/content/data/ghost-dev.db') }, debug: false }, server: { // Host to be passed to node's `net.Server#listen()` host: '1...

Personalizando Chrome

Cuando hablo de personalizar no me refiero a cambios en el tema, ni modificar algún comportamiento via la configuración, no, me refiero a obtener el código, modificarlo y compilarlo para crear mi propia "distribución". Así que antes de nada realiza esto: Descargar el codigo: http://dev.chromium.org/developers/how-tos/get-the-code Como compilar: https://code.google.com/p/chromium/wiki/NinjaBuild En caso, como a mi, que necesite una version anterior: https://www.chromium.org/developers/how-tos/get-the-code/working-with-release-branches Me encontré con varios errores cuando trate de descargar la versión 37, aquí está el hilo con las soluciones: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/pmki-Uju6Zs La version 37 no estaba preparada para los cambios que vinieron con Yosemite, un error que encontré:  https://codereview.chromium.org/555163002 https://chromium.googlesource.com/chromium/src.git/+/59c4ad104b6f03af9c9acffc0fd9a42707083390/ba...

Auth::attempt siempre retorna falso

Estaba obteniendo un error que parece común entre los usuarios novatos de Laravel. Al usar Auth::attempt este siempre me estaba retornando falso. Este era el código que usaba: class UserTableSeeder extends Seeder{ public function run(){ User::create(array( 'username' => 'admin', 'email' => 'test@test.net', 'name'=> 'Administrator', 'password' => Hash::make('123456') )); } } use Illuminate\Auth\UserTrait; use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableTrait; use Illuminate\Auth\Reminders\RemindableInterface; class User extends Eloquent implements UserInterface, RemindableInterface { protected $fillable = array('email', 'username', 'password'); use UserTrait, RemindableTrait; /** * The database table used by the model. * * @var string */ protected $table = '...

Expresiones Regulares y pruebas en javascript

¿Qué es una expresión regular? Una expresión regular es una cadena que contiene una combinación de caracteres normales y metacaracteres o metasecuencias especiales. Los caracteres normales coinciden por ellos mismos. Los metacaracteres y metasecuencias son caracteres o secuencias de caracteres que representan ideas como cantidad, posiciones o tipos de caracteres. Regular Expression Pocket Reference 2nd Ed - Tony Stubblebine - O'Reilly ¿Para qué son útiles las expresiones regulares? Las expresiones son especialmente útiles para validar información, por ejemplo en formularios de ingreso de datos. Por ejemplo para validar que se ingresó un número de teléfono, puedes usar la siguiente expresión regular. /^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})?$/ Parecieran símbolos al azar, pero nada mas lejos de la realidad. Te muestro una tabla básica con los elementos usados para crear expresiones regulares. Carácter Texto buscado ^ ...

Deshabilitar Google Analytics en la previsualización de Blogger

Se puede excluir las previsualizaciónes de los artículos, del seguimiento del tráfico que hace Google Analytics, creando un filtro. Primero hay que identificar la pieza de URL que distingue la previsualización del resto de páginas o publicaciones. Para el caso de Blogger, este genera dos tipos de URL para las pevisualizaciones: /b/app-preview y  /b/post-preview Entra por el enlace Administrador de la barra de navegación Principal. Escoge la pestaña Filtros y presiona Filtro Nuevo Crear un filtro nuevo para el perfil Nombre de Filtro: Blogger Preview (o el que prefieras) Tipo de Filtro: Filtro Personalizado Tipo de Filtro: Excluir Campo del Filtro: URI de la solicitud Patrón de filtro: % /b/post-preview % Distinción entre mayúsculas y minúsculas: No Repetir para /b/app-preview Este procedimiento no elimina el conteo de previsualizaciones, previas a la creación del filtro.

jQuery DataTables y CodeIgniter

Ajax Source Datatables permite configurar fácilmente el origen de datos de la tabla, para que esta sea generada dinámicamente desde el servidor, así que con CodeIgniter tendríamos el siguiente código public function page(){ $data['pedidos'] = $this->pedidos_model->get_pedidos($this->input->post('iDisplayStart')); define('AJAX_REQUEST', 1);//truco para que en nginx no muestre el debug $TOTAL = $this->pedidos_model->total(); echo json_encode(array('aaData'=>$data['pedidos'], 'iTotalRecords'=>$TOTAL, 'iTotalDisplayRecords'=>$TOTAL, 'sEcho'=>$this->input->post('sEcho'))); } Este método producirá algo parecido a esto: {"iTotalRecords":83099,"iTotalDisplayRecords":83099,"sEcho":"2", "aaData":[{"Id":"85514","num":"86109...

Fin de Ciclo

14 proyectos, aplicaciones de escritorio, sistemas, complejos, fàciles, largos, cortos, de todo un poco, en las que he podido toquetear las siguientes tecnologías:   Creado en www.wordle.net Han sido casi 4 años de compartir con grandes profesionales y excelentes personas, a quienes les quedaré eternamente agradecido por todo su apoyo. Se corta nuestra relación laboral, pero no nuestra amistad, ya saben que pueden contar conmigo. ¡Hasta Pronto!

Instalar Tomcat 7, JBoss AS 7 y Subversion en CentOS

Instalando Tomcat 7 Este artículo lo explica muy bien: http://davidghedini.blogspot.com/2011/02/install-tomcat-7-on-centos-rhel.html Aunque el tutorial es para una de las primeras versiones de tomcat 7, también funciona con la mas reciente y les dejo el enlace: wget http://www.gtlib.gatech.edu/pub/apache/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz Instalando JBoss 7 Primero recomiento leer una introducción a JBoss 7 Como no encontré un buen tutorial para JBoss 7, decidí seguir el de la version 6: http://davidghedini.blogspot.com/2011/03/install-jboss-6-on-centos.html y también este otro: http://community.jboss.org/wiki/StartJBossOnBootWithLinux . También sería bueno seguir las mejores prácticas: http://jboss.ociweb.com/wiki/JBossSupport/BestPractices Al intentar desplegar la aplicación me he encontrado con algunos problemitas. Errores: Cannot find scanner class. hibernate.ejb.resource_scanner=org.jboss.as.jpa.hibernate4.HibernateAnnotationScanner JBoss A...

MTI se vuelve mas ágil

En la Oficina de Ingeniería y Sistemas del Ministerio de Transporte e Infraestructura estamos trabajando en un proyecto piloto implementando la metodología SCRUM. Es apenas nuestro primer Sprint y nos falta mucho por aprender pero estamos haciendolo lo mejor posible.  Scrum Board - Sprint 1 Stand-up Meeting (Reunion Diaria)    Scrum Team (Equipo Scrum) Scrum Master

Desplegar proyectos JSF y JPA automáticamente desde eclipse

Recientemente pasé varios dias compilando y recompilando un proyecto JPA y luego copiando el jar generado a la carpeta de librerías del servidor. Todo esto para ejecutar otro proyecto JSF que dependía del primero y no lograba hacer que el eclipse hiciero esto automáticamente. Al fin he dado con la configuración que hay que hacer en el eclipse , para que este lo haga automáticamente y es lo que presento a continación: Click derecho sobre el proyecto JSF y elegir el item Properties  Esto abrirá el cuadro de diálogo de propiedades, en la parte izquierda buscaremos el item Deployment Assembly , al clicarlo nos muestra la siguiente pantalla, de la cual eligiremos el botón Add que está en la parte derecha A continuación nos muestra la ventana New Assembly Directive con una serie de opciones de la cual eligiremos Project y presionamos el boton Next Finalmente seleccionamos el proyecto JPA que queremos enlazar y presionamos Finish Con esto ecli...

Trabajando con Icefaces 2.X

Algo muy útil si habias trabajado con versiones de icefaces anteriores: Guía de migración de la versión 1.8 a 2.x Error: GRAVE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase com.sun.faces.config.ConfigureListener java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: Parece que la versión JSP del contenedor es más antigua que la 2.1 y no se puede ubicar la fábrica de expresiones EL RI, com.sun.el.ExpressionFactoryImpl.  Si no utiliza JSP o EL RI, asegúrese de que el parámetro de inicialización de contexto, com.sun.faces.expressionFactory, esté definido correctamente. Solución: Incluir en el class_path de la aplicación y dentro del servidor las siguientes librerías: el-impl-2.2.0-SNAPSHOT.jar y el-api-2.2.0-SNAPSHOT.jar . Estas librerías extrañamente no vienen incluidas en el bundle de icefaces. Error: El Backing Bean se crea cada vez que se realiza un request aunque está marcado con @ViewScoped Solución: Agregar ...

TecnoUNI 2011

Feria Tecnológica - Universidad Nacional de Ingeniería Banco de simulación de turbina PELTON Programa de Proyectos Elécticos Control y monitoreo de ascensores mediante PLC y sistema SCADA PROTOTIPO DIDACTICO Brazo robótico Sistema y material constructivo para la mitigación del impacto de oleaje y la susceptibilidad de inundaciones en sitios habitacionales contiguos a rios y lagos Geotermia - Ministerio de Energía y Minas Geotermia Maquina de control numérico computarizado (cnc) de cuatro ejes, con comunicación usb, para la automatización de los procesos de grabado en madera, plástico y materiales no convencionales. Sistema Reforzado de Piedra Pómez Sistema Reforzado de Piedra Pómez Proyectos de Agroindustria, Alimentos e Ingeniería de Procesos Geotermia Parque Industrial Dirianes ARQUITECTURA DEL BAMBÚ DISEÑO DE VIVIENDA MÍNIMA UNI - INFIL Programa de Microturbinas del Proyecto PCH ...

Tips semanales #2

Suma de Entradas y Salidas El problema reside en realizar una suma de dos campos en tablas distintas (entradas y salidas) con un enlace común (artículos), el DER correspondería a lo siguiente: Modelo de Bodega Pareciera fácil pero no lo es tanto pues tiene su truco. El código sería el siguiente: SELECT tipo_articulos_nombre_tipo, articulos_descripcion,  SUM(cantidad) AS entradas, SUM(cantidad_salida) AS salidas FROM ( (SELECT tipo_articulos.`nombre_tipo` AS tipo_articulos_nombre_tipo, articulos.`descripcion` AS articulos_descripcion, detalle_entradas.`cantidad` AS cantidad, 0.0 as cantidad_salida FROM `articulos` articulos LEFT JOIN `detalle_entradas` detalle_entradas ON detalle_entradas.`idarticulo` = articulos.`idarticulo` INNER JOIN `entradas` entradas on entradas.identrada=detalle_entradas.`identrada` INNER JOIN `tipo_articulos` tipo_articulos ON articulos.`idtipo_articulo` = tipo_articulos.`idtipo_articulo` ORDER entradas.`fecha_entrada...

Tips para desarrollo en Facebook

b is undefined Este error ocurre al tratar de usar la versión antigua del api javascript de facebook junto con la nueva. Como pasa en el siguiente código: <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script> <script src="http://connect.facebook.net/en_US/all.js"></script>; Comentariando o eliminando la primera fila corregirá el problema   FacebookApiException  :: CurlException SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed El problema es que cURL no ha sido configurado para confiar en el certificado HTTPS del servidor. Los conceptos de los certificados y PKI gira entorno a la confianza de los Certificados de Autoridades (Certificate Authorities (CAs))  y por defecto, cURL está configurado para no confiar en ningún CA, así que no confiará en ningún c...

Error con Nimbus Look and Feel

java.lang.ClassNotFoundException: javax.swing.plaf.nimbus.NimbusLookAndFeel No establecer el lookandfeel Nimbus explícitamente invocando el método UIManager.setLookAndFeel por que no todas las versiones o implementaciones de Java SE 6 soportan Nimbus. Además, la ubicación del paquete Nimbus cambió entre las versiones JDK 6 Update 10 y JDK 7. Iterar a través de todas las implementaciones de lookandfeel instaladas es un enfoque mas robusto por que si Nimbus no está disponible, se usará el lookandfeel por defecto. Para la versión JDK 6 Update 10 el paquete Nimbus está localizado en com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel Agregar el siguiente código al hilo despachador de eventos antes de crear la interfaz gráfica de usuario: import javax.swing.UIManager.*; try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); break; ...

Como Implementar Scrum en 10 pasos fáciles - Paso #10: Revisa, Reflexiona, Repite

Continuando con la serie: Como implementar SCRUM en 10 pasos fáciles . Creación de Kelly Waters y traducida con la autorización correspondiente por su servidor. La entrada original de este artículo es: Step 10: Review, Reflect, Repeat Paso #10: Revisa, Reflexiona, Repite Así que tienes tu pila del producto en orden , has estimado la pila , esclarecido los requisitos , planeado tu sprint y has creado un espacio de trabajo colaborativo . Estás haciendo un Sprint para alcanzar tus metas y estás haciendo reuniones diarias y estás midiendo el progreso con un gráfico. Ahora vienes al final del Sprint y terminas cuando dijistes que lo harías . Todo lo que queda por hacer ahora, es la revisar , reflexionar y repetir ... Revisión del Sprint   Al final del Sprint haz una reunión para revisar el Sprint (Sprint Review) . Invita a todo el equipo. Invita a todos los tomadores de decisiones del negocio. Invita a tomadores de decisiones importantes incluyendo ejecutivos ...