Subscribe: Proyecto Script
http://proyectoscript.blogspot.com/feeds/posts/default
Added By: Feedage Forager Feedage Grade B rated
Language: Spanish
Tags:
app  archivo  balam balam  este  gems  lib ruby  lib  rails lib  rails  root root  root  ruby  siguiente  usr lib 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: Proyecto Script

Proyecto Script



Este blog trata de ser un medio para compartir soluciones y consejos prácticos sobre la programación.



Last Build Date: Tue, 07 Oct 2014 05:30:27 +0000

 



Productos Cruzados en SQL

Thu, 02 Apr 2009 02:08:00 +0000

Los productos cruzados de conjuntos son muy útiles para hacer combinaciones de ellos principalmente, aquí tendremos un ejemplo para una forma de tabulación.Supongamos que tenemos los datos de un alumno y queremos desplegar sus datos de forma que nos pueda ayudar a visualizarlos mejor, para eso nos gustaría saber cuanto es el total de sus parciales pero también el porcentaje del total de cada parcial. Imaginemos los siguientes datos:Alumno, Parcial, Total, PorcentajeSi quisieramos sacar estos datos, una forma de hacerlo es por medio de "producto cruzado" en tablas para eso podemos hacer un conteo de los parciales, hacer producto cruzado con los datos de los parciales y por último hacer una proyección más para hacer el cálculo del porcentaje.   1 SELECT * FROM alumnos; id | nombre | parcial======================  1 | Balam  |    6  2 | Balam  |    8  3 | Balam  |    9  4 | Balam  |    4  5 | Balam  |    7  6 | Balam  |    1   1 SELECT *   2 FROM alumnos,   3 (   4   SELECT   5     SUM(parcial) AS CONTADOR   6   FROM alumnos   7 ) TOTAL; id | nombre | parcial | contador=================================  1 | Balam  |    6    |    35  2 | Balam  |    8    |    35  3 | Balam  |    9    |    35  4 | Balam  |    4    |    35  5 | Balam  |    7    |    35  6 | Balam  |    1    |    35   1 SELECT   2   *,   3   parcial/TOTAL.CONTADOR   4 FROM alumnos,   5 (   6   SELECT   7     SUM(parcial) AS CONTADOR   8   FROM alumnos   9 ) TOTAL; id | nombre | parcial | contador | porcentaje==============================================  1 | Balam  |    6    |    35    |    0.17  2 | Balam  |    8    |    35    |    0.23  3 | Balam  |    9    |    35    |    0.26  4 | Balam  |    4    |    35    |    0.11  5 | Balam  |    7    |    35    |    0.2  6 | Balam  |    1    |    35    |    0.03[...]



Concatenación de cadenas en SQL

Tue, 31 Mar 2009 18:23:00 +0000

Concatenar cadenas en SQL no es algo estandar así que depende mucho del manejador de base de datos que estemos usando y aquí tenemos ejemplos con tres de ellos:Con oracle existen dos formas, una es con la funcion "CONCAT" y otra con el operador "||", con la funcion "CONCAT" no podemos concatenar mas de dos cadenas, es decir, acepta dos argumentos, en cambio con el operador "||" podemos concatenar mas (si somos estrictos el operador "||" tampoco concatena mas de dos por ser un operador binario pero por la sintaxis se puede aparentar hacerlo):   1 CONCAT('hola','mundo')                 => 'holamundo'   2 CONTACT(CONCAT('hola','mundo'),'hola') => 'holamundohola'   3 CONCAT('hola',CONCAT('hola','mundo'))  => 'holaholamundo'   4 'hola' || 'mundo'                      => 'holamundo'   5 'hola' || 'mundo' || 'hola'            => 'holamundohola'En el caso de mysql, existe también esta función solo que si acepta mas de dos cadenas (parámetros):   1 CONCAT('hola','mundo')                => 'holamundo'   2 CONCAT('hola','mundo','hola')         => 'holamundohola'   3 CONCAT('hola','mundo','hola','mundo') => 'holamundoholamundo'Y el caso de sqlserver o access, ellos tienen el operador "+" y de la misma forma que el operador "||" de oracle, es binario pero aparenta "recibir" mas de dos parámetros:   1 'hola' + 'mundo'          => 'holamundo'   2 'hola' + 'mundo' + 'hola' => 'holamundohola'[...]



Adobe Air en Gentoo (y verdaderos Linux)

Tue, 24 Mar 2009 05:48:00 +0000

El archivo de instalación de Air para Linux que distribuye Adobe en su página (http://get.adobe.com/es/air/) solo funciona para distribuciones de Linux basadas en rpm y debian. Así que para distribuciónes como Gentoo el instalador no funciona.

Los pasos para instalar Adobe Air que segui son estos:

  1. Descargar de http://www.adobe.com/products/air/tools/sdk/ el archivo comprimido (en el momento que lo descarge la url era http://airdownload.adobe.com/air/lin/download/latest/AdobeAIRSDK.tbz2).
  2. Crear un directorio -por ejemplo- "adobe-air-sdk".
  3. Descomprimir el archivo del SDK descargado dentro del directorio "adobe-air-sdk".

También recomiendo agregar a la variable PATH los archivos ejecutables que se encuentran dentro del directorio "adobe-air-sdk/bin" (es decir "adl" y "adt") por practicidad.

Para ejecutar aplicaciones para Air:

  1. Crear un directorio -por ejemplo- "adobe-air-apps".
  2. En este directorio -recomiendo- descargar todas las aplicaciones y descomprimirlas.
  3. Y utilizar el ejecutable "adl" (para mayores detalles ver la documentación de este ejecutable).




Error "undefined method `cache_template_loading='"

Sun, 01 Feb 2009 03:48:00 +0000

En Rails 2.2.2 (no tengo conocimiento hasta el momento de publicar esta entrada si en otra versión también ocurre este error), me di cuenta que al ejecutar mi aplicacion en modo de "producción", arrojaba el siguiente error:


1 /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:530:in `send': undefined method `cache_template_loading=' for ActionView::Base:Class (NoMethodError)
2 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:530:in `initialize_framework_settings'
3 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:529:in `each'
4 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:529:in `initialize_framework_settings'
5 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:526:in `each'
6 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:526:in `initialize_framework_settings'
7 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:154:in `process'
8 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:112:in `send'
9 from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:112:in `run'
10 from /home/neoriddle/etc/rails_apps/miproyecto/config/environment.rb:13

Tomando en cuenta el volcado anterior en la ultima línea visible esta una referencia a la línea número 13 del archivo enviroment.rb, esa línea es la siguiente:


Rails::Initializer.run do |config|

Sabemos que en ejecutar esta línea se carga también el archivo de configuración específico del modo de ejecución (que podría ser "development", "test" o "production"), en mi caso al ejecutar el modo de producción, se generaba el error, de ahí que en la línea 13 del archivo de configuracion del modo produccion tiene lo siguiente:


config.action_view.cache_template_loading = true

Al parecer este método ya no existe en esta versión por lo que una solución es borrar o simplemente comentar esta línea. No estoy seguro si esta sea una solución correcta pero al menos elimina el error el cual no permite que el servicio se ejecute, es decir, el proceso se finaliza.




Error "nil.dependencies" en `rake gems`

Sat, 31 Jan 2009 20:12:00 +0000

En la versión 2.2.2 de Rails, al ejecutar rake:gems aparece el siguiente mensaje (con alguna posible variación dependiendo de las gemas principalmente):   1 neoriddle@neobalam ~/proyectos/miproyecto $ rake gems   2 (in /home/neoriddle/proyectos/miproyecto)   3  - [I] calendar_date_select >= 1.13   4   - [ ] hoe = 1.8.2   5   - [ ] rubyforge = 1.0.2   6   - [I] rake = 0.8.3   7  - [I] mini_magick >= 1.2.3   8   - [ ] hoe = 1.8.2   9   - [ ] rubyforge = 1.0.2  10   - [I] rake = 0.8.3  11  - [I] RedCloth >= 4.1.1  12 rake aborted!  13 You have a nil object when you didn't expect it!  14 The error occurred while evaluating nil.dependencies  15   16 (See full trace by running task with --trace)  17 neoriddle@neobalam ~/proyectos/miproyecto $Este es un error que hay en la versión de la gema, así que para solucionarlo hay que abrir el archivo /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails/gem_dependency.rb (esta ubicación podría variar por el sistema operativo o alguna opción en la instalación) y ubicar el siguiente fragmento de código:   1 def dependencies   2   return [] if framework_gem?   3   all_dependencies = specification.dependencies.map do |dependency|   4     GemDependency.new(dependency.name, :requirement => dependency.version_requirements)   5   end   6   all_dependencies += all_dependencies.map(&:dependencies).flatten   7   all_dependencies.uniq   8 endBasta con agregar la siguiente línea return [] if specification.nil?, de manera que quedaría de la siguiente forma:   1 def dependencies   2   return [] if framework_gem?   3   return [] if specification.nil?   4   all_dependencies = specification.dependencies.map do |dependency|   5     GemDependency.new(dependency.name, :requirement => dependency.version_requirements)   6   end   7   all_dependencies += all_dependencies.map(&:dependencies).flatten   8   all_dependencies.uniq   9 endUna vez editado, hay que guardar los cambios y regresemos a ejecutar de nuevo la instrucción inicial rake:gems y el resultado es el siguiente:   1 neoriddle@neobalam ~/proyectos/miproyecto $ rake gems   2 (in /home/neoriddle/proyectos/miproyecto)   3  - [I] calendar_date_select >= 1.13   4     - [ ] hoe = 1.8.2   5     - [ ] rubyforge = 1.0.2   6     - [I] rake = 0.8.3   7  - [I] mini_magick >= 1.2.3   8     - [ ] hoe = 1.8.2   9     - [ ] rubyforge = 1.0.2  10     - [I] rake = 0.8.3  11  - [I] RedCloth >= 4.1.1  12     - [ ] echoe  13   14 I = Installe[...]



Tabla simulando un arbol

Mon, 08 Dec 2008 08:41:00 +0000

Seguramente se ha presentado el caso donde tiene una tabla a nivel base de datos que guarda la información de una entidad que tiene un comportamiento de árbol, peensando un ejemplo práctico tenemos una tabla de Categorias la cual esta construida por el siguiente script:

   1 CREATE TABLE categories (
   2   id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   3   nombre VARCHAR(20) NOT NULL,
   4   parent_id BIGINT NULL
   5 );


De esta manera podriamos tener lo siguiente:

  • General de División
    • General de Brigada
      • General Brigadrier


Y visto como una tabla tendrías:

id |        nombre       | parent_id
------------------------------------
 1 | General de División |   null
 2 | General de Brigada  |     1
 3 | General Brigadier   |     2


Vayamos al código...
Existe una funcion llamada "acts_as_tree" la cual nos ayuda con ese comportamiento, es importante hacer la aclaración que hasta la versión 1.x de Rails (mas específicamente en ActiveRecord) era parte de ésta, pero apartir de la versión 2.x, ésta fue seprada para convertirse en un plugin.

La instalación del plugin es muy sencilla, basta con ejecutar la siguiente linea:

script/plugin install acts_as_tree


Una vez hecho esto, podemos ir a nuestra clase model "Categoria":

   1 class Categoria < ActiveRecord::Base
   2   acts_as_tree :order => 'parent_id'
   3 end


De esta manera tenemos los isguientes metodos disponibles para aprovechar mucho mejor el comportamiento en arbol:

MétodoDescripcion
childrendevuelve todos los hijos inmediatos
parentdevuelve el padre (objeto inmediato)
siblingsdevuelve todos los hijos del mismo padre (hermanos)
self_and_siblingsdevuelve todos los hermanos incluyéndome
ancestorsdevuelve todos los objetos padre hasta llegar a la raiz (padre, abuelo, etc)
rootdevuelve el objeto raiz de la jerarquía


(image)



Problems compiling app-text/poppler-bindings-0.8.7

Fri, 05 Dec 2008 19:57:00 +0000

Hace algunos días trataba de compilar el paquete "app-text/poppler-bindings-0.8.7" pero me arrojaba el siguiente error en la compilación:0001 neobalam proyectos # emerge -q1 =app-text/poppler-bindings-0.8.70002 >>> Verifying ebuild Manifests...0003 0004 >>> Emerging (1 of 1) app-text/poppler-bindings-0.8.7 to /0005 * Applying poppler-0.6-bindings.patch ... [ ok ]0006 * Running eautoreconf in '/var/tmp/portage/app-text/poppler-bindings-0.8.7/work/poppler-0.8.7' ...0007 ...0008 checking for Qt headers... /usr/qt/3/include0009 checking for Qt libraries... /usr/qt/3/lib0010 checking if Qt needs -pthread... no0011 checking for POPPLER_QT4... configure: error: Package requirements (QtCore >= 4.1.0 QtGui >= 4.1.0 QtXml >= 4.1.0 QtTest >= 4.1.0) were not met:0012 0013 No package 'QtGui' found0014 0015 Consider adjusting the PKG_CONFIG_PATH environment variable if you0016 installed software in a non-standard prefix.0017 0018 Alternatively, you may set the environment variables POPPLER_QT4_CFLAGS0019 and POPPLER_QT4_LIBS to avoid the need to call pkg-config.0020 See the pkg-config man page for more details.0021 0022 0023 !!! Please attach the following file when seeking support:0024 !!! /var/tmp/portage/app-text/poppler-bindings-0.8.7/work/poppler-0.8.7/config.log0025 *0026 * ERROR: app-text/poppler-bindings-0.8.7 failed.0027 * Call stack:0028 * ebuild.sh, line 49: Called src_compile0029 * environment, line 2536: Called econf 'src_compile' 'src_compile' '--enable-cairo-output' '--enable-poppler-glib'0030 * ebuild.sh, line 519: Called die0031 * The specific snippet of code:0032 * die "econf failed"0033 * The die message:0034 * econf failed0035 *0036 * If you need support, post the topmost build error, and the call stack if relevant.0037 * A complete build log is located at '/var/tmp/portage/app-text/poppler-bindings-0.8.7/temp/build.log'.0038 * The ebuild environment file is located at '/var/tmp/portage/app-text/poppler-bindings-0.8.7/temp/environment'.0039 *0040 0041 * Messages for package app-text/poppler-bindings-0.8.7:Cabe mencionar que usaba el administrador "Portage" (para los que no sepan algo como el "apt-get", "yast", etc, a diferencia que este descara el código fuente y lo compila).Por fin pude compilar ese paquete, basta con incluir en la compulacion qt-4 y poppler-bindings en la misma llamada de emerge-[...]



Unexpected result mapping beans with betwixt

Tue, 14 Oct 2008 22:27:00 +0000

Dadas dos clases (beans), las intentaba mapear con betwixt, pero a la hora de hacer la generación del XML a partir de los beans, curiosamente no aparecia el XML que yo esperaba. Lo que hice fue (por razones de practicidad del momento) en un archivo definir algunas clases entre ellas los beans a manera, donde ninguno de los beans tenía el modificador public, algo como lo siguiente:   1 public class Prueba {   2     // Definicion de clase   3 }   4    5 class Familia implements Serializable {   6     List personas;   7    8     // setters y getters   9 }  10   11 class Persona implements Serializable {  12     private String nombre;  13     private String apellido;  14     // setters y getters  15 }Y los beans mapeados de la siguiente forma:Primero el archivo Persona.betwixt:   1    2      3        4        5      6 Y en segundo lugar el archivo Familia.betwixt:   1    2      3        4          5        6      7 El problemas radica en que todas las clases a mapear deben estar definicas con el modificador public. Así que hay que ponerlo en archivos separados. [...]



Agregar automáticamente salto de línea en Emacs

Sat, 27 Sep 2008 18:07:00 +0000

Para agregar de manera automática un salto de línea en cualquier buffer al momento de guardar a un archivo en Emacs basta con agregar la siguiente línea:

1 (setq require-final-newline t)

Nótese que se pasa como parámetro a la funcion una t, lo cual podríamos ver para fines prácticos como un true, recordemos que el lenguaje es Lisp y dado que utiliza listas, podríamos decir que "algo" está o no en una lista, asi que podríamos ver como un valor false a nil (lo cual significa Not In List).

Es decir, si lo queremos deshabilitar estaría asi:

1 (setq require-final-newline nil)


(image)



Error en NewGem con RubyGems 1.1.1: Undefined method `add_development_dependency'

Tue, 16 Sep 2008 02:39:00 +0000

Para empaquetar proyectos en gem's de ruby, una vez que ejecutaba rake, arroja lo siguiente:

neoriddle@neobalam ~/proyectos/amatohtli $ rake
(in /home/neoriddle/proyectos/amatohtli)
rake aborted!
undefined method `add_development_dependency' for #
/home/neoriddle/proyectos/amatohtli/Rakefile:2
(See full trace by running task with --trace)
neoriddle@neobalam ~/proyectos/amatohtli $


El error se soluciona con actualizar la version de rubygems a la versión 1.2.0.

En mi caso muy particular yo tenia a versión 1.1.1:

neobalam amatohtli # emerge -vp =dev-ruby/rubygems-1.2.0

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild U ] dev-ruby/rubygems-1.2.0 [1.1.1] USE="doc server" 242 kB

Total: 1 package (1 upgrade), Size of downloads: 242 kB
neobalam amatohtli #


Una vez hecho esto ya no arrojaró errores.


(image)



Problemas con caracteres al enviar un formulario HTML

Sun, 14 Sep 2008 05:14:00 +0000

Muchas ocaciones tenemos el problema donde el enviar una forma de html los caracteres cambiar por caracteres raros o simplemente no son los que esperabamos.

Esto es principalmente porque al momento que se hace la encapsulación de la petición se toma un charset (conjunto de caracteres) que no corresponde al que necesitamos para que estos caracteres sean válidos.

La solución es simple, basta con especificar el charset en el atributo accept-charset del tag form de html:

1 method="post" accept-charset="CHARSET" />

Para mayor información sobre charset's consulte la sección 6.9 y para detalles del tag form la sección 17.3 de la especificación de html 4.01.


(image)



Carga de archivos en un tag
con Java (Apache FileUpload)

Sun, 14 Sep 2008 02:36:00 +0000

La carga de archivos requiere -según la especificacion de HTML 4.0-básicamente dice que para poder enviar un archivo hay que poner el valormultipart/form-data al atributo enctype del tagform, de la siguiente manera: 1 Esto es con respecto a el archivo HTML (o JSP, o algún tipo similar), peroahora falta la programación del lado del servidor. Por suerte existe ApacheCommons FileUpload, el cual implementa la solución dejandonos solo unasclases para obtener los archivos.Como ejemplo, imaginemos que tenemos el siguiente archiv jsp: 1 2    3    4    5
Entonces en nuestra clase MiServlet podríamos hacer lo siguiente: 1 import org.apache.commons.fileupload.disk.DiskFileItemFactory; 2 import org.apache.commons.fileupload.servlet.ServletFileUpload; 3 import org.apache.commons.fileupload.FileItem; 4 5 public class MiServlet extends HttpServlet { 6   public void doPost(HttpServletRequest req, HttpServletResponse resp) { 7     DiskFileItemFactory factory = new DiskFileItemFactory(); 8     ServletFileUpload upload = new ServletFileUpload(factory); 9     List params = upload.parseRequest(request); 10     Map paramsMap = new HashMap(); 11     for(FileItem param : params) { 12       // paramsMap["grupo","Jaguares"]; 13       paramsMap.put(param.getFieldName(),param.getString()); 14     } 15   } 16 }Una vez ya en este punto, tenemos los siguientes métodos en la interfaz FileItem: getInputStream()getName()getOutputStream()getSize()write(java.io.File file)getContentType()Cuando algunos de los parámetros es un archivo el método getContentType es diferente de null por lo es importante señalar que los parámetros como típicamente se obtienen aquí no tiene efecto, es decir:   1 public class MiServlet extends HttpServlet {   2   public void doPost(HttpServletRequest req, HttpServletResponse resp) {   3     req.getParameter("cancion"); // null   4     req.getParameter("grupo"); // null   5     req.getParameterNames(); // Enumeration vacio   6   }   7 } [...]



Problema 'xcb_xlib_unlock' al actualizar JVM

Thu, 17 Jul 2008 18:50:00 +0000

Después de cada actualización a la JVM es posible que cuando se quiere ejecutar algo en Java nos arroje algún error similar, en este reproduciré el error al ejecutar un archivo jar (el cual es el un diagramador de modelos entidad-relación):


neoriddle@neobalam ~/dbwrench_1.4.7 $ java -jar DbWrenchAll.jar
java: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.
Abortado
neoriddle@neobalam ~/dbwrench_1.4.7 $


Y esto se corrige deshabilitando el XCB Xlib de la siguiente manera, basta con ejecutar la línea correspondiente (con los suficientes privilegios) dependiendo de la versión de la JVM.

  • Para Java 5:
    sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib/i386/xawt/libmawt.so


  • Para Java 6:
    sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/i386/xawt/libmawt.so

Según he visto en varios foros, el problema se puede reproducir con muchas aplicaciones escritas o ejecutables en Java.

Como referencias aqui tienen las siguientes ligas:



(image)



Registro de Nick en IRC

Tue, 24 Jun 2008 05:51:00 +0000

Muchos de los canales de IRC, solicitan que los nicknames (o apodos) sean registrados, unos servidores (como por ejemplo Freenode) lo requieren para entrar a algún canal y otros simplemente para mandar mensajes privados a los integrantes del canal.

Aquí escribo los pasos básicos para realizar este proceso:
  • Una vez dentro del servidor hay que elegir el apodo (de hecho para entrar al servidor se debió haber elegido un nick) pero si se quiere cambiar se puede hacer con el siguiente comando: /nick nuevo_nombre.
  • Después si el apodo ha sido elegido lo notificará en tal caso pide autentificarse (lo cual se explica mas adelante), en caso de que el apodo este libre hay que registrar la contraseña y un correo electrónico relacionados con el apodo, esto se hace con el siguiente comando: /msg nickserv register , o /msg nickserv register (es importante escribir un correo electrónico válido porque ahí se enviará una confirmación de registro que hay que realizar forzosamente).
  • Una vez realizado el paso anterior es posible que se mande un correo electrónico para confirmar el registro, en tal caso ahí se envían unas instrucciones para enviar el código de verificación del registro.
  • Y por ultimo lo que queda es iniciar sesión con este apodo (nombre de usuario) y con su contraseña registrada, con el siguiente comando /msg nickserv identify password.
Por ejemplo imaginemos que mi apodo es 'usuarioirc', la contraseña es 'claveirc' y el correo eletrónico al registrar es 'micorreo@miservidor.com', el registro sería de la siguiente manera:


/nick usuarioirc
/msg nickserv register claveirc micorreo@miservidor.com
...
/msg nickserv identify claveirc


(image)



Mas sobre JSTL

Mon, 16 Jun 2008 02:28:00 +0000

Bueno,hoy quiero compartir algo de lo que aprendí haciendo mi proyecto con JSP y JSTL.

Intente hacer todo el proyecto usando las librerías estándar que ofrece JSTL 1.1, evitando el uso de java tradicional.

Mientras iba avanzado en el proyecto me di cuenta de que no se puede reemplazar uno por el otro; aunque JSTL engloba las funciones principales JSP tiene más ventaja para nosotros los que no estamos familiarizados con la web.

Un ejemplo de ello en mi sistema fue cuando generé una lista de captura de calificaciones de asignaturas (mostrando las calificaciones de acuerdo al grado y/o al plan de estudios y nombrando los SELECT de las calificaciones con el nombre de la asignatura), pero en la página donde recibí el valor no pude referenciar la variable de ningun modo por que en ${param.atributo} atributo no es un string y eso me genera un grave problema a la hora de iterar.
En cambio si hubiera usado algo del lenguaje java pude haber creado un arreglo de String con los nombres de las materias de dicho grado y/o plan de estudios e insertar los valores con request.getParam(arreglo[posicion]); .

Con esto no digo que JSTL no sirva ni mucho menos, es mucho más fácil usar DBCP con JSTL, solo indicando el dataSource como atributo de la etiqueta
en lugar de crear objetos Context,DataSource... en fin, aprendí que combinando estas dos cosas podemos hacer cosas muy hermosas y funcionales:D.

Quizá muchos de ustedes ya sepan eso, pero yo tuve que aprenderlo del modo difícil y quiero que el próximo que este en una situacion similar lo piense dos veces antes de hacer a un lado el buen lenguaje java.


(image)



Avira Antivir License File

Sun, 15 Jun 2008 03:36:00 +0000

Seguramente los usuarios del programa de Antivirus Avira AntiVir a la hora de hacer la actualización de la definición de virus, les ha pedido este programa un archivo de licencia.

Sucede que si vamos a la página oficial del programa, deberíamos encontrar una forma rápida para descargar este archivo, pero bajo el esquema espacial del sitio en estos momentos, simplemente no se encuentra en la sección de soporte, descargas, ni ninguna.

Resulta que existe una liga a este archivo en la sección Support, después a FAQ y finalmente en la primera pregunta del FAQ se encuentra la liga a este archivo, por si las dudas aquí pondré una liga a el:Debido a que los administradores de ese sitio pueden cambiar la url hacia este archivo (y obviamente yo no tengo control sobre eso) es posible que la liga se rompa, en ese caso por favor envienme un mensaje informando este caso y aún mejor la nueva ruta para que se actualize.

(image)



Railscasts

Mon, 09 Jun 2008 05:19:00 +0000

A todos los programadores de Rails muy seguramente les servirá esta página, se llama Railscasts, la cual tiene pequeñas "recetas de cocina" sobre el trabajo con Rails. Y para los que están cansados de que cuando le preguntan a alguien los manda a Google, aquí a parte de dar soluciones tienen un video como demostración para ver la implementación paso a paso. Vale la pena tenerlo entre los favoritos y hasta tener el feed suscrito.

(image)



Error al generar controlador con Login_Generator en Rails 2.0

Sun, 01 Jun 2008 20:40:00 +0000

Tratando de implementar un sistema de seguridad por logeo en una aplicacion en Rails 2.0, uno de los pasos señala que hay que generar un controlador con la siguiente instrucción:ruby script/generate login



SD/SDIO/MMC/MS/MSPro funcionando en linux

Sun, 25 May 2008 17:36:00 +0000

Para usar el dispositivo para SD/MMCMS/MSPro, basicamente en el kernel hay que tener habilitadas algunas opciones:

Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers
Device Drivers --->
  MMC/SD Card support -->
    <*> MMC support
    [ ] MMC debugging
    <*> MMC block device driver
    <*> Secure Digital Host Controller Interface support (EXPERIMENTAL)
    < > Winbond W83L51xD SD/MMC Card Interface support
File systems --->
  <*> DOS FAT fs support
  DOS/FAT/NT Filesystems -->
    <*> MSDOS fs support
    < > UMSDOS: Unix-like file system on top of standard MSDOS fs
    <*> VFAT (Windows-95) fs support


En mi caso tengo un dispositivo de la marca Ricoh:

# lspci | grep -i mmc
03:01.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 19)


Asi que solo lo recompilamos y usamos ese kernel y listo.

(image)



Kopete tarda en iniciar

Sat, 24 May 2008 21:48:00 +0000

He encontrado que Kopete suele tardar en iniciar mucho tiempo debido a que la carga de los plugins que a su vez éste carga son pesados. En mi caso tuve la desafortunada experiencia durante casi mas de 4 meses donde Kopete tardaba en iniciar 5 minutos al principio y esto se extendió hasta casi 25 minutos, obviamente eso no es normal ni deseable, así que encontré que el archivo donde guarda la configuración de usuario ~/.kde/share/config/kopeterc, y ahí hay una linea que activa el plugin (muchas veces ya instalado, esto dependiendo del administrador de paquetes de dicha distribución), esta línea es:

kopete_statisticsEnabled=true

por lo que hay que cambiar su valor a false en caso de que no se pueda desactivar por la interfaz gráfica, de tal modo dicha linea cambiaría a:

kopete_statisticsEnabled=false

De este modo ya no carga las estadísticas que guarda por cada contacto y ya no hay retardo.

Aquí dejo el vínculo hacia el foro donde escribí un post sobre este problema (Gentoo Forums).

(image)



JSTL =O!

Tue, 13 May 2008 05:52:00 +0000

Bueno, soy algo novato en esto de jstl y quisiera la opinion de todo aquel que sea capaz de darla, sobre si jstl es diferente de jsp, si es una extension de jsp, en que casos la usas, cualquier cosa s valida x]



Manejo de RSS con Ruby

Thu, 24 Apr 2008 20:11:00 +0000

Recientemente investigé un poco como manejar los RSS con Ruby y encontré varias APIs, como FeedTools, FeedUpdater, RSSRuby, etc.

Y aquí les dejo un código (que ya probé y funciona).

Para escribir RSS:


require 'rss/maker'

version = "2.0" # ["0.9", "1.0", "2.0"]
destination = "test_maker.xml" # local file to write

content = RSS::Maker.make(version) do |m|
m.channel.title = "Example Ruby RSS feed"
m.channel.link = "http://www.rubyrss.com"
m.channel.description = "Old news (or new olds) at Ruby RSS"
m.items.do_sort = true # sort items by date

i = m.items.new_item
i.title = "Ruby can parse RSS feeds"
i.link = "http://www.rubyrss.com/"
i.date = Time.parse("2007/2/11 14:01")

i = m.items.new_item
i.title = "Ruby can create RSS feeds"
i.link = "http://www.rubyrss.com/"
i.date = Time.now
end

File.open(destination,"w") do |f|
f.write(content)
end

Y para leer:

require 'rss/1.0'
require 'rss/2.0'
require 'open-uri'

source = "http://rubyforge.org/export/rss_sfnewreleases.php" # url or local file
content = "" # raw content of rss feed will be loaded here
open(source) do |s| content = s.read end
rss = RSS::Parser.parse(content, false)


(image)



File system del iPhone

Sun, 20 Apr 2008 01:55:00 +0000

Un dia me encontraba jugando con mi iphone
I descubri ke el system operative es algo asi
komo freebsd y ademas el entorno de desarrollo
del iphone utiliza objetive C para desarrollar sus
aplikaciones.

Estoy por conseguir su entorno de desarrollo para windows para compartirlo aka ademas de
todo un file system del iPhone para aprender nuevas kosas.
pronto estara en la red.

BY T E


(image)



Arrancando una tarjeta nVidia

Tue, 08 Apr 2008 21:22:00 +0000

Para poder hacer uso de una tarjeta grafica nVidia bajo Linux, primeramente deberemos de tenerla instalada, por lo cual deberemos de buscar los drivers, para lo cual dentro de el CD o medio de datos que nos dan con el producto buscaremos si en este estan los drives (estos deben ser compatibles con nuestro Kernel), en caso de que no existan dichos archivos, podemos acudis a las siguientes paginas.http://www.nvidia.es/object/linux_es.htmlhttp://www.linux-drivers.org/Si en "Linux Drivers" tu dispositivo aparece como "unsupported" lamentablemente sera poco probable que logres compatibilidad, en otro caso siempre esta Google.Una vez instalados los drivers (No lo explicare, ya que el fabricante o proveedor de dichos archivos inclue las instrucciones y estas llegan a variar segun modelo, fuente, etc), proseguimos a arrancar nuestro dispositivo, ya que normalmente este no se encuentra activo despues de instalar.Accediendo como rootEn la terminal de Linux teclear: ($ es el prompt, lo que seria c:\> en windows) $su"Ingresa el password del root"Apagando el modo grafico$init 3Te aparecera la terminal pero en toda tu pantalla, no te asustes.Configuranción de nVidia recomendada. (Puede cambiar ligeramente según modelo)$nvidia--xconfig --composite$nvidia--xconfig --render-acel$nvidia--xconfig --add-argb-glx-visuals -d 24Arrancando modo graficoEn mi caso, yo uso KDE y x11 con OpenSuSe 10.3 (Sax2 es elprograma que ayuda a la configuración grafica de x11)$sax2 -r -m 0=nvidia "ojo que 0 ---> es un cero, si no usas SuSe, deberás hacerlo con tu administrador gráfico"$init 5o en su defecto$startx-----**Esto lo e probado en SuSe 10.3, si tienes otra distro y se requiere modificar algo, por favor, no dudes en colaborar con ello¿ERRORES?Si encuentras un error en esto, por favor, has el favor de indicarlo, pero no borrarlo ya que mes mejor marcar el error que borrarlo. (Así se aprenderá mas de ello)[...]



FLISOL 2008

Mon, 07 Apr 2008 18:37:00 +0000

Estamos casi a un mes de que el FLISOL (Festival Latinoamericano de Software Libre) en su edición 2008 se lleve a cabo.

Este festival tienes como objetivo ser una puerta de entrada y alternativa para todas las personas que quieren usar software libre y/o necesitan ayuda o tienen problemas instalado dicho software.

Este festival se realiza simultáneamente en las principales ciudades de latinoamérica, en la Ciudad de México las sedes serán las siguientes:
  • CECyT No.8
  • CUGS-CIC
  • ESCOM-CIDETEC
  • UACM
  • UAMA
  • UAMI
  • UNAM (LIDSOL)
  • UNITEC Campus Sur
En el Estado de México también habrá sedes (para mayor información vaya a la página de FLISOL.

En este festival existen personas experimentadas (y veces con mucho ánimo), y están ahí para ayudar a los demás en la instalación de software pero también para dar consejos de como usarlos de una manera adecuada o quizá mas óptima de la que lo venimos haciendo. También existen exposiciones sobre este temas relacionados con este tipo de software.

Asi que es una buena recomendación, cabe señalar que en cada una de las sedes las actividades (talleres de instalación, exposiciones, platicas, etc) pueden variar y muy probablemente no ser las mismas.

(image)