Vaso más frágil

vector-internacional-dia-de-la-mujer_81060

1 Pedro 3:7

Vosotros, maridos, igualmente, vivid con ellas sabiamente, dando honor a la mujer como a vaso más frágil, y como a coherederas de la gracia de la vida, para que vuestras oraciones no tengan estorbo.

Este versículo es un mandamiento, no solo hay 10, todos lo sabemos, pero hoy en el día de la mujer creo que debemos reflexionar específicamente en este mandamiento.

¿Como estamos tratando a nuestras mujeres en la Casa, en la Oficina, a nuestras hijas, a nuestras Hermanas, y por su puesto a nuestras Madres?

¿Quien hace el trabajo pesado?

¿Aún le abres la puerta del auto a tu esposa,a tu Mamá o a tus Hijas?

¿Te gusta escucharla platicar acerca de sus inquietudes, anhelos, temores?

Con detalles en ocasiones pequeños desde la perspectiva del genero masculino podemos dar el lugar de “vaso más frágil” a las mujeres.

Este pequeño artículo que tiene el objetivo de felicitar a las mujeres, en realidad tiene mucho para que los que no somos mujeres, reflexionemos en el significado de este día.

Feliz Día a todas mis contactos mujeres

Dlb

Saludos

 

Montar carpeta de owncloud en Linux Mint

Este artículo esta basado en este post de wikihow http://es.wikihow.com/montar-autom%C3%A1ticamente-una-unidad-box.com-al-arrancar-Debian-(o-Ubuntu) Pero yo lo estoy adaptando al procedimiento que seguí en Linux Mint para poder montar mi unidad de ownlcoud. Me pareció mas práctico que usar el cliente de sincronización de owncloud, ya que en ocasiones falla. Los pasos son los siguientes: Las instrucciones que deban ejecutarse como administrador, deberán llevar “sudo”

1. Instalar davfs2, el cual nos va a permitir montar sistemas de archivos WebDav, abrimos una Terminal, y escribimos:

sudo apt-get install davfs2

2. Agregar tu usuario al grupo de davfs2:

sudo adduser <usuario> davfs2

3. Crear una carpeta donde se montará la unidad de owncloud: Como ejemplo la carpeta se llamará “owncloud” y la crearemos en el /home/usuario:

mkdir /home/usuario/owncloud

4. Añadir el punto de montaje al archivo /etc/fstab, debemos editar el archivo fsta a través de nano:

sudo nano /etc/fstab

Al final del archivo agregar una linea como la siguiente, subsituyeno el valor de “servidor” por el nombre del servidor donde esté instalado “OwnCloud”, en este ejemplo suponemos que “OwnCloud” esta instalado bajo la carpeta “owncloud” dentro del servidor.

http://www.servidor.com/owncloud/remote.php/webdav /home/usuario/owncloud davfs rw,user,noauto   0   0

Entre cada valor, debemos usar un tabulador.

5. Cambiar permisos al archivo /usr/sbin/mount.davfs: sudo chmod u+s /usr/sbin/mount.davfs

6. Montar por primera vez nuestra unidad owncloud, en este paso, si la información del paso 4 es correcta, nos pedirá usuario y contraseña de acceso a OwnCloud.

mount /home/usuario/owncloud ó mount ~/owncloud

Ambas instrucciones hacen lo mismo, solo que ~ es el atajo para /home/usuario. Al montar por primera vez nuestra unidad owncloud, se crean en nuestro home unos archivos de configuración que usaremos mas adelante, para configurar los parámetros de usuario y contraseña y poder montar de forma automática nuestra unidad cada vez que iniciemos sesión.

7. Desmontar la unidad, para modificar la configuración:

umount /home/usuario/owncloud

ó

umount ~/owncloud

8. Cambiar parámetros de configuración para que al montar la unidad no pida el nombre de usuario y contraseña de acceso a “OwnCloud” Debemos primero editar el archivo /home/usuario/.davfs2/davfs2.conf.

nano /home/usuario/.davfs2/davfs2.conf

Al final del archivo, debemos agregar una linea con el valor:

use_locks 0

También necesitamos modificar el archivo /home/usuario/.davfs2/secrets.

nano /home/usuario/.davfs2/secrets

Agregando al final del archivo la linea:

http://www.servidor.com/owncloud/remote.php/webdav <usuario> <contraseña>

Y por último en este paso, cambiar los permisos al archivo secrets:

chmod 666 /home/usuario/.davfs2/secrets

9. Volver a montar la unidad, para comprobar que ya no pida usuario y contraseña.

mount /home/usuario/owncloud ó mount ~/owncloud

10. Por último, agregar a las aplicaciones de inicio el montaje de nuestra unidad: Ir a Menú -> Preferencias -> Aplicaciones al Inicio, Presionar el botón “Añadir” y llenar los campos como se muestra en la siguiente imagen.

AgregarInicio

Espero que sirva esta pequeña guía. Saludos

PHP y archivos de texto de más de 50 Mb

Hola, escribo este Post, porque recientemente me enfrente a un problema al tratar de trabajar con archivos de texto de mas de 50 mb a través de una aplicación Web desarrollada en PHP.

Espero que esta experiencia pueda ser útil para la comunidad que siga este post. No pretendo enseñar nada, ya que es evidente que allá afuera hay expertos en PHP, pero quizás haya otros que no lo sean tanto y esto pueda ser de mucha utilidad.

El objetivo

El objetivo de este proceso parte de la aplicación era buscar un valor alfanumérico en un archivo de texto de 746,885 lineas. El archivo de texto tenia una tamaño en de 54 Mb. Este archivo tiene una estructura de campos separados por “pipes”, en total 5 campos por renglón.

Las diferentes alternativas de solución

La primera opción que paso por mi mente, fue convertir ese archivo en una tabla de una base de datos en MySQL, que me permitiera hacer las consultas de forma mas cómoda. Un punto importante en esto es que ese archivo se actualiza cada día lo cual implicaba un proceso diario de eliminar los registros de la tabla y volver a insertar todos los registros del archivo.

En el primer intento y después de unos cálculos me di cuenta que ese proceso podía tardar aproximadamente 12 horas. Por lo que inmediatamente descarte esa posibilidad, no me pareció tan práctico.

De ahí pasamos a la segunda alternativa de solución, buscar directamente en el archivo el valor dado.

Esta solución parecía fácil de implementar. Explicare de que forma lo hice funcionar en primera instancia.

Existen dos formas de trabajar con archivos en PHP, y usaremos alguna de ellas dependiendo del requerimiento.

La primera forma en que hice uso del archivo fue, a través de la función file() la cual lee por completo un archivo y construye un arreglo con una linea por elemento del archivo.

Ejemplo

$file = file("ruta/del/archivo.txt");

con esta sencilla instrucción convertimos a la variable $file en un arreglo que contiene cada una de las lineas del archivo.

Existen dos argumentos opcionales que permiten especificar que ignore, lineas nuevas y/o lineas vacías, quedando la sintaxis de la siguiente manera.

$file = file("ruta/del/archivo.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

Ok, después había que buscar el valor, en cada una de las lineas hasta encontrarlo y obtener los campos de esa linea.

Para lograr esto hice uso de la estructura de control foreach.

foreach ($file as $numlinea => $linea):

Esta validación es para no usar la primer linea del archivo que contiene solo el nombre de los campos.

if ($numlinea > 0):

Con esta linea convertimos cada campo en un elemento de un arreglo que se guarda en la variable $campos la función, explode nos permite partir en elementos de un arreglo una linea tomando como separador el símbolo que indicamos en el primer parámetro de la función

$campos = explode("|", $linea);

En la siguiente linea hacemos la validación del primer campo de la linea, preguntando si este es igual al valor que buscamos, que esta alojado en la variable de entorno $argv en la posición uno. La variable $argv almacena los valores que son enviados a un script en PHP, es útil cuando el script será ejecutado desde la linea de comandos y no a través de una solicitud HTTP.

Adicionalmente validamos que el último campo de la linea se valor “A”, que para este caso sería un valor de “Aprobado” y al cumplirse ambas condiciones nos aseguramos que el valor buscado se encuentra en el archivo y que mantiene un estado de “Aprobado”

if ($campos[0] == $argv[1] && $campos[4] == "A"):

En la variable $output guardamos cada uno de los campos separados por una coma y en formato de una cadena de texto. Esto es así específicamente para el uso que se le dará mas adelante.

$output = "$campos[0],$campos[1],$campos[2],$campos[3],Aprobado";

Con el comando break; rompemos el foreach para no seguir buscando en el resto de las lineas del archivo.

break;

Y finalmente damos salida a la variable $output

echo $output;

Hasta aquí todo bien y sin muchas cosas nuevas. Pero el problema fue cuando a través de la aplicación intentaba correr esta función.

Invariablemente el navegador mandaba un error 500, y nunca logre identificar que provocaba este error. Al ejecutar el script desde consola, inmediatamente encontraba el valor y devolvía los datos, además lo hacia verdaderamente rápido.

Busque en algunos foros y encontré toda variedad de sugerencias, comentarios como que “PHP no esta diseñado para manejar grandes archivos” sugerencias a usar Python, Pearl, etc.

Sin embargo encontré una forma de obtener el resultado deseado.

Otra alternativa que busque fue, cambiar el método de leer todo el archivo a leerlo linea por linea, quizás eso evitaría el error 500 del navegador. Pero no fue así. Sin embargo explico en que consistió el cambio.

Básicamente abrí el archivo para lectura con:

$file = fopen("ruta/al/archivo.txt","r");

Y lo leí linea por linea con la función fgets:

$linea = fgets($file);

Esto me hizo pensar que podría evitar un overflow en la memoria, al tratarse de un archivo tan grande. Pero al momento de probarlo en el navegador se producía el mismo error 500.

En este punto ya estaba realmente desesperado. Pero pensé que si ambas opciones resultaban desde la consola, algo había que cambiar en la configuración del servidor, en este caso Apache2 o en la configuración de PHP a través del php.ini

Me perdí un rato en eso y no concluí nada.

La solución

Entonces pensé que tendría que ejecutar desde un script PHP, el script de búsqueda, como si fuera ejecutado desde la consola.

Y encontré que PHP cuenta no con una sino con varias funciones para este efecto. No haré mas grande este post tratando de explicar cada una, vamos al grano.

La función que me permitió obtener la solución fue:

shell_exec();

Esta función ejecuta comandos a través de un shell y devuelve en formato de cadena, el resultado de dicho comando.

Y lo utilicé de la siguiente manera.

En la siguiente linea lo que hacemos es asignar a la variable $output el resultado de shell_exec. El primer parámetro que  vemos es el comando a ejecutar, en este caso mandamos llamar al comando php con el argumento -f que sirve para ejecutar un script de PHP indicando el archivo de script, que en el ejemplo es el archivo “scriptbusqueda.php” que se encuentra en la ruta “/var/www/proveedores/php” y por ultimo una variable $cual, que en realidad aloja el valor que deseamos encontrar en el archivo de texto de mas de 50 Mb

$output = shell_exec("php -f /var/www/proveedores/php/scriptbusqueda.php $cual");

Una ves que es devuelto el resultado del script a través de la función shell_exec lo guardamos como arreglo en la variable $campos como se muestra a continuación. Si recuerdan lineas antes vimos que la búsqueda en el archivo nos devolvía una cadena con los campos de la linea, separados por comas. Ahora en esta parte de la aplicación tomamos esa cadena y la convertimos en un arreglo.

$campos = explode(",", $output);

Y la mejor parte fue que al probar la aplicación en su entorno de Navegador, todo funcionó, el error 500 desapareció y obtuve mi resultado sin problemas.

Ventajas

  1. Me ahorre 12 horas al día para mantener actualizada una tabla.
  2. Reduje el proceso a actualizar un archivo cada día desde un servidor FTP a través de wget en un servidor Linux, archivo de texto de mas de 50 Mb, pero que tarda no mas de 5 minutos en ser descargado
  3. Y la oportunidad de poder compartir con Uds esta experiencia.

Espero que en realidad sea útil y sientan la confianza de hacer preguntas y/o comentarios, sería muy bueno si alguno de Uds conoce una mejor manera de hacerlo.

Hasta la próxima.

Échale Ganas… ¿te suena?

¿Alguna vez, alguien te ha dicho “échale ganas”, o “animo, tú puedes”.? Quizás cuando estas por iniciar una contienda deportiva o un nuevo trabajo, suena bastante alentador, ¿no es así?. Pero que tal después de luchar durante algunos años con un mismo padecimiento físico o emocional. ¿Que pasa con esas palabras?

Sin duda a lo largo de nuestra vida habrá personas que sin duda nos quieren, nos aman, nos procuran, pero en un sentido estricto, estamos hablando de “personas” tal y como nosotros; con sus propios asuntos, con sus propios temores, dolores, carga emocional, física etc.

Que pasa entonces cuando alguien quizás en tu misma circunstancia te dice “Échale ganas”, puedes ver en sus rostros que no hay en realidad algo en lo cual puedas verdaderamente sujetarte para tomar aliento.

Y queda de momento todo en tan solo tu fortaleza como persona, en tu fortaleza mental, la cual al igual que todo en nuestro cuerpo se va minando, va disminuyendo con el paso de los días o de los años. Fuimos creados para ser dependientes unos de otros, de lo contrario Dios nos hubiera dado un mundo a cada uno. Sin embargo todos estamos sujetos a la misma condición limitativa de ser “humanos”

Hoy tras 8 días de estar en un hospital, y después de escuchar por 3era ocasión una negativa a mi proceso de alta, pude ver en el rostro de aquellos que me decían “Échale ganas” una clara expresión de agotamiento. Una clara y humana condición de imposibilidad para hacer o deshacer aquello que impide que las cosas se muevan a favor de lo que uno desea.

Por eso reflexioné y quise compartir con Uds que uno de los propósitos de todo esto que pasa por mi vida es entender que solo hay un ser capaz de ser constante en su promesa de no apartarse de ti, solo un ser puede ser capaz de repetirte las mimas palabras todos los días y en Él no encontraras cansancio, no encontraras condición alguna. Por algo es Dios, por algo esta en todas partes, por eso nos invita a confiar en él y solo en él.

Una de las grandes promesas que he encontrado en su palabra durante estos días y que seguramente ya había leído antes sin entender en carne propia el poder que estas pueden infundir en el alma de una persona son:

Isaías 40: 30-31

30 Los muchachos se fatigan y se cansan, los jóvenes flaquean y caen; 31 pero los que esperan a Jehová tendrán nuevas fuerzas; levantarán alas como las águilas; correrán, y no se cansarán; caminarán, y no se fatigarán.

Y la segunda es:

Isaías 41:13

13 Porque yo Jehová soy tu Dios, quien te sostiene de tu mano derecha, y te dice: No temas, yo te ayudo.

Y bueno es verdad, todos de un lado o de otro, ya sea que digamos o nos digan “Échale ganas” estamos en la misma condición. Somos agotables, somos vencidos, sin importar de donde viene o hacia donde va, el río fluye y somos finalmente vulnerables.

Pero he aprendido que es lo que quiere Dios, quiere que tenga nuevas fuerzas, que levante alas como las águilas, que deje que Él me tome de la mano de derecha y tan solo espere a que Él me ayude.

Si tu estas pasando por algo similar, espero que esto te llene de esperanza, y cuando alguien te diga “Échale ganas”, podrás responder, “Dios es quien le echa ganas por mi, yo no puedo mas” y entonces caerás en cuenta en esta otra verdad de su palabra.

2 Corintios 12:10

Por lo cual, por amor a Cristo me gozo en las debilidades, en afrentas, en necesidades, en persecuciones, en angustias; porque cuando soy débil, entonces soy fuerte.

Públicamente agradezco a todos sus frases de aliento que sin duda lo hacen de corazón. Ruego a Dios por sus vidas y que Dios toque sus corazones y los lleve al conocimiento de su palabra.

Que Dios te bendiga.

RVR

Gracias, por las felicitaciones

Hola, Primero quiero agradecer a Dios el permitirme estar en este día escribiendo esto.

Gracias Señor Jesús por tu sacrificio en la cruz para darme vida eterna.

Gracias Dios por haberme encontrado y haber rescatado no una sino muchas veces de mi peor enemigo, yo mismo.

Gracias por la vida que hoy  me has dado, gracias por las personas que hoy forman mi familia, y gracias por quitar de mi vida a las que no eran buenas para mi.

Gracias por los padres que formaron el hogar en el que llegue a este mundo, gracias por mis hermanos, que han dado tanta alegría a mi vida en tantos momentos, gracias por que aún tengo a mis padres a mi lado, gracias por cada uno de los momentos que me has permitido vivir.

Hoy llego a este momento en mi vida en el que vuelvo a sentir la emoción que sentía cuando era niño.

Desperté esperando recibir mis regalos, desperté esperando ver la sonrisa de esas personas que hoy están a mi lado y extrañando la sonrisa de aquellos dos que no han querido estar a mi lado. Pero tu Dios sabes porque es así y yo lo acepto.

Quiero también agradecer a todos los que hoy me han dejado felicitaciones en las redes sociales. En verdad que cada uno ha dejado una sonrisa en mi. Y esto provoca que no pueda hacer otra cosa que agradecerle a Dios tantas bendiciones.

Tengo preciosos recuerdos de mi cumpleaños a lo largo de mi vida, y hay algunos cumpleaños que he preferido dejar atrás. Fueron dolorosos, pero si no fuera por eso hoy no podría darle el justo valor a lo que me rodea.

Dice Lilly Goodman en su canción “Sin Dolor” que :

“a veces hay que ser golpeado para poder crecer

y alcanzar un poco mas de madurez,

porque no habría forma de saber manejar lo que vendrá

y  aunque el dolor en esos tiempos puede ser tan cruel,

pero Dios no nos dejará permanecer allá mas tiempo del que podamos soportar”

Y he podido ser testigo de eso y hoy quiero compartir con todos los que lean esto, que

“Solo Dios puede sacarte de lo mas profundo de tu propia obscuridad, sea cual sea y transformar tu vida en una hermosa oportunidad de agradecerle cada intento exitoso de inhalar y exhalar”

Gracias a todos por las felicitaciones y que Dios los bendiga.

RVR

IBM – Lotus Symphony

En días pasados recibí un correo electrónico de un boletín que publicaba IBM en relación a la nueva versión de su Suite de Ofimática llamada Symphony. Lo relevante de este artículo era el énfasis que hacían en el tema de apoyar el software libre y los formatos abiertos de documentos de ofimática, haciendo inclusive hincapié en el interés por contrarrestar la dependencia que ha generado Microsoft en los usuarios de sus formatos privativos y su suite Microsoft Office, y mas importante aún es que estamos hablando de que el artículo viene de una empresa llamada IBM, ¿estamos de acuerdo?

Otro punto importante es que la nueva versión esta basada en el proyecto ahora llamado Apache OpenOffice. Lo cual hace de Symphony una Suite de Ofimatica compatible con los proyectos independientes OpenOffice y LibreOffice.

Pude instalar Symphony en una maquina con Windows, y es bastante agradable su interface, y es totalmente igual de funcional que OpenOffice y LibreOffice, solo hicieron algunos cambios a nivel de las barras de herramientas, y Symphony solo cuenta con Procesador de Textos, Hoja de Calculo y Presentacion con Diapositivas. OpenOffice y LibreOffice, cuentan con otras herramientas, como Dibujo, y hasta un manejador de bases de datos compatible con MySQL.

En mi experiencia de mas de 2 años de no utilizar Microsoft Office, puedo decirles que no hay nada que no puedas hacer en OpenOffice o LibreOffice, en realidad sigo observando tan solo, resistencia al cambio y una dependencia a los productos de Microsoft, mas que una verdadera ventaja de los productos de Microsoft sobre los ya mencionados.

Sigo creyendo que trabajar sobre formatos abiertos, beneficiaría  a las compañías, a las dependencias de gobiernos y a los usuarios estudiantes o de hogar, porque de esta manera no se fomenta la piratería y el ahorro por concepto de licenciamiento también es muy importante.

Bueno, si quieren probar IBM Symphony lo pueden encontrar en http://www-03.ibm.com/software/lotus/symphony/home.nsf/home desde donde podrán descargar la versión indicada para su tipo de Sistema Operativo. Lo único importante que comentar es que aún no hay una versión para sistemas operativos a 64 bits. Creo que es un tema en el que IBM debería trabajar con cierta urgencia.

Saludos y los invito a apoyar el software libre y trabajar sobre formatos abiertos para sus documentos de ofimática, encontraran verdaderas ventajas en el uso de estas tecnologías.

Hasta la próxima…

Un nuevo cambio…

Hola, quiero compartir con Uds. la forma en que Dios me ha ido ejercitando en el hecho de aprender a enfrentar momentos de definición sin mas recurso que el conocimiento de que Él esta detrás de todas las cosas, y su principal objetivo es hacernos descansar y confiar. Que hagamos del pasaje de Filipenses 4:6 <Por nada estéis afanosos, sino sean conocidas vuestras peticiones delante de Dios en toda oración y ruego, con acción de gracias.> una realidad en nuestras vidas.

Este fin de semana, Dios nos ha ido mostrando que debemos hacer un cambio en nuestra rutina, en nuestra administración del tiempo, en nuestra forma de vivir, e inclusive en nuestro lugar para vivir. Lo ha hecho de una manera que me ha sorprendido, porque cada paso ha sido seguro, ha sido claro y ha sido poco a poco.

Habíamos estado orando por un cambio de lugar para vivir el cual nos facilitara el llegar a tiempo a la escuela de los niños, al trabajo, que significara un menor desgaste emocional cada día.

Y veíamos que Dios solo nos llevaba al pensamiento de “esperar”, no había opciones, no teníamos ni la menor idea de lo que Él estaba preparando.

Y bueno, el día llegó, Él nos movió a realizar una búsqueda que había sido aparentemente infructuosa,  pero de pronto y ya de regreso a casa,  a lo lejos vimos unas casas que con anterioridad habíamos visitado y pensamos, “hace tiempo vimos en esas casas y no había nada….” y de pronto.. al acercarnos mas al punto, sobre la carretera, vimos un letrero verde intenso, que por la distancia no alcanzábamos a leer lo que decía,  solo se veía el cuadro de cartulina.

Y bueno decidimos acercarnos a leer el contenido de tal letrero. Y si efectivamente, era lo que al parecer habría convertido la búsqueda en algo con resultado. Pero Dios es sorprendente, cuando piensas que Él te ha mostrado todo, es tan solo el principio.

La casa que publicó en esa cartulina verde su anuncio no era la que Dios tenia preparada para nosotros, si no que en la parte mas escondida de otra casa,( seguramente los dueños pensaron “definitivamente aquí no verán el anuncio”) estaba lo que hasta ahora parece ser la elección de Dios. Tan es así que al día siguiente la casa del letrero verde, ya se había ocupado.

Bueno lo mas importante para compartir ademas de lo anterior, es que Dios nos lleva a este punto sin mas recurso que la fe, la confianza en que si el plan es de Dios, todo lo que implica un cambio de casa tendrá que darse de forma Buena, Agradable y Perfecta como lo dice Él en Romanos 12:2 <No os conforméis a este siglo, sino transformaos por medio de la renovación de vuestro entendimiento, para que comprobéis cuál sea la buena voluntad de Dios, agradable y perfecta.>

Y en verdad cuando digo que nuestro único recurso es Dios es literal. Pero confiamos en que Él dará los medios y estaremos dentro de su plan.

Si tu crees en Jesús como tu Señor y Salvador te pido que nos ayudes a orar, para que Dios nos siga mostrando su plan y confirmando el mismo a través de los detalles que este implica.

Gracias anticipadas por tu oraciones y bueno al rededor de todo este suceso hay mas cosas, mas detalles con los pareciera que Dios estuviera detrás de nosotros con su mano en sobre nuestro hombro, como abrazándonos y diciendo de cerca al oído “Si, adelante, confía en mi”

Si aún no crees en Jesús como tu Señor y Salvador, invítalo hoy, busca en la Biblia, Juan 3:16 y hazlo tuyo.

Gracias Dios por esta nueva experiencia en nuestras vidas, confiamos en ti y solo en ti.