Archivo para la categoría "Programacion"
Evitar la sobre escritura de archivos cargados con php
Pues aquí dejo un segmento de código que me parece algo sencillo pero puede ser útil a otros (además de que no compromete la confidencialidad de mis proyectos laborales) y sirve únicamente para renombrar un archivo que se sube por formulario web para evitar la sobrescritura; eso se hace agregando una serie numérica entre el nombre del archivo y su extensión:
<?php
/**
* @author Javier B. Camacho Martínez
* @copyright DGB - Agosto 2009
*/
$fileSize = $_FILES['fileUploaded']['size'];
$fileName= $_FILES['fileUploaded']['name'];
$fileType = $_FILES['fileUploaded']['type'];
$fileTmp = $_FILES['fileUploaded']['tmp_name'];
// Reemplazar espacios y signos de puntación del nombre de archivo por guiones bajos
$fileName= preg_replace('/[^a-z0-9-_\-\.]/i','_',$fileName);
// Obtener la extensión del archivo (a veces resulta útil saberlo)
$extFile = substr($fileName,-4,4); // mantiene desde -4 a 4 caracteres: .txt
// Obtener el puro nombre del archivo (sin la extensión)
$fileName = substr($fileName,0,-4); // mantiene desde 0 hasta -4 caracteres: carta_a_los_reyes_magos
$uploadsFolder = './uploads/';
// Si no existe el directorio para almacenar los archivos, crearlo con permisos 777
!is_dir($uploadsFolder) ? mkdir($uploadsFolder,0777) : null;
// Antes de mover el archivo al directorio, prevenir la sobre escritura
if(file_exists($uploadsFolder.$fileName.$extFile)){
$counter = 1;
while(@file_exists($uploadsFolder.$fileName.'_'.$counter.$extFile)) { $counter++; }
// Si existe se renombra a con un infijo numérico: carta_a_los_reyes_magos_2.txt
$fileName = $fileName.'_'.$counter.$extFile;
}
// Si no existe, no se renombra y queda tal cual: carta_a_los_reyes_magos.txt
else{
$fileName = $fileName.$extFile;
}
// Mover el archivo a su nuevo hogar:
$statusMovedFile = move_uploaded_file($fileTmp,$uploadsFolder.$fileName);
// Verificación final
echo 'el status es: '.$statusMovedFile;
?>
A dormir buho
Estos últimos días he dormido poco, pero hoy fue mi último día de desvelo, al menos en esta semana.
Son las 03:47 am del día Sábado y al fin, he terminado la galería de las pulseras de plata que estamos armando (Landy y yo); así que ya me puedo irme a dormir unas buenas 8 horas seguidas.
Espero que todo el esfuerzo invertido, nos de buenos dividendos.
See ya.
Detección de fuentes no citadas
Hasta hace algunos meses, yo no consideraba importante realizar citas bibliográficas en mis trabajos escolares ni mucho menos hacer referencias a las fuentes de información que había consultado.
De hecho, de no ser por… una gran persona, no hubiera adquirido el buen hábito de agregar las referencias necesarias cuando incluyo un texto en una presentación, cómo la que hice algunas semanas para la materia de Problemas actuales de México, y aunque mi estilo realmente necesita una refinación, creo que ya voy al menos por el buen camino de incluir las citas, lo cierto es que intento adoptar el estilo APA así que tendré que documentarme bien para lograr el objetivo.
A raíz de estas buenas costumbres adquiridas por influencia regia, he propuesto el nuevo proyecto que desarrollaré para la DGB y que consiste en lo siguiente:
- Tomar un archivo de texto, de inicio sólo pdf’s o txt
- Extraer su contenido
- Segmentar el documento en fragmentos semánticos de 25 palabras o bien, por oraciones completas (hasta donde aparezca un punto y seguido o un punto final)
- Buscar el fragmento en Internet usando la API AJAX de Google para búsquedas
- Si el fragmento está registrado en Internet, quiere decir dos cosas:
1) El fragmento incluido no es propiedad intelectual del autor
2) Se ha omitido hacer la cita o referencia pertinente lo cual puede ser penalizado por cuestiones de autoría. - Al final del análisis el sistema dirá qué porcentaje de originalidad tiene el documento, en base al número de fragmentos que lo componen y el número de coincidencias localizadas en la web.
En sí, eso fue lo que presenté en la reunión que tuvimos el viernes en la Unidad de Recursos Interactivos como parte de la revisión por la dirección que se efectúa el último viernes de cada mes.
Honestamente, me sentí muy nervioso durante la presentación, especialmente porque estaba mi jefe, los directores de todas las bibliotecas, coordinadores de otras áreas como Sistemas, Diseño gráfico, Bibliometría, etc…. puuffff y a mi que me gusta tener el mayor control posible; la verdad es que no logré mantener el pulso normal.
Al final, mi jefe quedó complacido con la idea del proyecto y también hubo buenas sugerencias aunque no faltó el que me preguntó porqué iba yo a utilizar el API de Google y no a realizar un desarrollo desde cero como siempre lo he realizado.
De entrada, estoy convencido que no voy a re inventar la rueda y este proyecto supone varios retos interesantes pese a lo que pudieran pensar algunas personas; como sea, creo que este proyecto puede ser útil incluso para más personas de las que comprende la DGB; lo cual me pone contento porque de esa manera, se puede impactar en otras áreas de oportunidad y mostrar lo que se está haciendo al interior de las bibliotecas que es más que prestar libros y hacer encuentros bibliotecarios un par de veces al año…
Al final, solo resta una línea:
Gracias por la inspiración.
Según yo
Si está escrito, es por algo; y si lo escribo es para recordarlo más adelante porque mi memoria es muy mala.
Algún día me reiré de todas las tonterías que publico.
Fue lo que dije un día, al tratar de explicar el porqué escribía en un blog.
Lo que me da risa es que ese día no ha llegado aún y ya van 6 años y 8 meses desde que inicié este proyecto, esta rara idea de escribir pavadas personales en un sitio colgado en la nube de Internet sigue sin hacerme reír.
No me hace reír, mas bien me hace reflexionar y notar que en algunos aspectos de mi vida, he madurado, que he mejorado mi ortografía, que sigo escribiendo sobre mujeres y esos rollitos sentimentales que según yo, duelen pero que al final no son tan graves; sólo aspectos de la vida de un hombre común que se enamora rápidamente, que entrega todo lo posible, a quien le dan todo lo posible y que aún así no queda satisfecho del todo porque siempre hay detalles pequeños que no permiten la plenitud que tanto anhelo; ya sea por causas de incompatibilidad de caracteres, de visiones espirituales distintas, de acciones o inacciones determinadas, de familia recelosa, de distancias físicas, de amor furtivo, de indecisión o tantas cosas más que he considerado relevantes y determinantes…
Al leer mis escritos anteriores, he notado que ahora sobresale a la vista esa falta de frescura en las publicaciones recientes, porque al leer cosas como esta, me asombro de saber que soy el autor; esa manera de relatar cosas tan sencillas (sencillas, no simples) como recibir un libro de regalo, ir a desayunar con Silvia y llegar a pensar en esos momentos que igual y me casaba con ella, eso si es algo irónico pues aún seguía sin imaginar lo que ocurriría después y la historia que surgiría con ilian y todas esas cosas que han ocurrido desde entonces a la fecha; todo ello me pone a pensar más que a reír.
Lo cierto es que no se en qué momento perdí la capacidad de narrar sucesos cotidianos de mi vida como si fueran una gran historia y me quedé simplemente apegado a los hechos, breves, escritos en signos abiertos pero secretos al mismo tiempo, cosas que tal vez, solo yo y las personas más allegadas a mi, logran entender; las demás personas no saben del porqué escribo lo que escribo y la forma en que lo hago, y eso se nota en los comentarios fuera de lugar, desviados totalmente de la intención del mensaje medular o simplemente no hay palabras que comentar y realmente me es indistinta la falta de comentarios, de hecho ya pasó esa época en que me parecía relevante y necesario que otras personas comentaran.
Y bueno, los años no pasan en vano, a lo largo de estos 6 años, lo único que me sorprende realmente es saber que hay más de un par de personas (llamándoles amigos si es posible) que leen (aunque no necesariamente dejen un comentario) de manera frecuente las cosas que pienso; de verdad… un gran abrazo para ustedes y no escribo nombres porque se que este mensaje queda claro para quienes va dirigido; pero repito… me sorprende que aún se den una vuelta por aquí.
Como ha sido de un par de años a la fecha, este espacio es mi hoja en blanco en la cual puedo decir todo o decir nada, pero simplemente escribir lo que yo pienso.
Si hay que creer en algo, creo que hoy sería un buen día para cerrar mi blog.

Hoy en día, podría comparar mi situación personal y creo firmemente que es distinta a la de hace 6 años, que mis planes son otros; mis pensamientos son otros, mis acciones son otras y hasta mis emociones… otras.
Sí, un poco menos de aquello, y más de esto… pero ese es el sentido de la vida: El movimiento constante; lo que no se mueve, se petrifica, se pudre, se desvanece.
Chao.
Postdata: Saludos a Ro, que seguido anda curioseando por aquí.
Como ocultar la barra de direcciones de IE 7
Uno de los bibliotecarios de la preparatoria Benito Juárez se acercó a mi y me preguntó: “Oye, tu sabes cómo se oculta la barra de direcciones del navegador?” le dije: “No, pero si quiere lo intentamos en una de estas máquinas”
Descubrí que no existe ninguna opción visible que permita ocultar la barra de direcciones del navegador de manera directa, es decir, no existe tal opción desde la propia interfaz de Internet Explorer 7.
A todo esto, surgió mi pregunta: “Y para qué desea ocultar la barra?” a lo que me respondió Juan Carlos: “En los kioscos de consulta, la página de inicio es el catálogo de bibliotecas y es la que se muestra al abrir el navegador, pero quiero que no aparezca la barra de direcciones porque los alumnos se ponen a buscar páginas con contenido para adultos y con eso de que andan en la edad de la punzada…”
De cierta manera, su razonamiento tenía lógica y bueno; me empeñé en darle una solución.
Ciertamente he considerado que las computadoras las creó el hombre, por lo tanto me niego rotundamente a considerar una “rebeldía” de su parte y afirmo que ellas [las computadoras] deben hacer lo que uno les pide, no es posible que sobrepasen la inteligencia humana y si eso ocurre el problema radica en la persona que no pudo resolver el reto con inteligencia; de hecho, por eso me encanta programar; porque después de analizar un problema que tiene una solución mediante software; al escribir las líneas de código prácticamente les estoy dictando las ordenes del comportamiento que debe tomar la computadora y las soluciones que me debe arrojar al procesar la información necesaria y suficiente. En pocas palabras: hacen lo que uno les pide y si lo hacen mal, no es su culpa, es culpa del programador quien no supo dar las ordenes adecuadas o no supo trasladar el problema al ámbito computacional para darle una solución.
Pero regresando al tema de la barra de direcciones y su desaparición, entendí que sí es posible hacerlo pero únicamente a través del registro de windows y específicamente en Internet Explorer.
La clave del registro para ocultar la barra de direcciones es la siguiente:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Toolbars\Restrictions]
"NoNavBar"=dword:00000001
Y la clave del registro para mostrar la barra de direcciones es la siguiente:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Toolbars\Restrictions]
"NoNavBar"=dword:00000000
Ya sea que se navegue en el árbol del registro mediante regedit.exe o que se guarde el código anterior en un archivo de texto plano con extensión .reg y se agregue al sistema dando doble clic sobre el archivo.
Bueno, publico esto por si alguien mas llega a tener la duda de “Cómo hacer que la barra de direcciones del Internet Explorer 7 no aparezca”
Queda claro que el “no se puede” no va conmigo.
En conclusión
Bueno, después del inicio de semana complicado; hoy me encuentro muy tranquilo porque ya se dio por concluido el proyecto que me solicitó mi jefe, después de varias revisiones, sugerencias y verificaciones: He terminado y mi jefe me lo ha hecho saber explícitamente. Eso es respecto a la programación pero el trabajo, el trabajo realmente nunca termina y ya están planificadas las actividades de los días subsecuentes, de entrada hay que terminar de acondicionar el URI (Unidad de Recursos Interactivos) ya sea acomodando las sillas, limpiando la estantería, instalando los equipos de cómputo o refinando detalles para que el día de la inauguración (10 de Noviembre) todo esté perfecto; más que perfecto diría yo.
El URI, viene siendo la parte mas innovadora (sin demeritar a nadie) del CADI (Centro de Aprendizaje y Desarrollo Integral) que a su vez, forman parte del Complejo Cultural Universitario [incluido ahí, el auditorio], del cual me siento sorprendido por su magnitud, su relevancia y claro: porque de alguna manera formamos parte en él de manera directa por el URI o indirecta por ser miembro colaborador de la BUAP.
Por otro lado, ya tengo un pase de entrada y un gafete de identificación para el evento inaugural del auditorio y el 3er informe del rector Enrique Agüera Ibañez. Eso de alguna manera me pone contento.
En conclusión, he terminado el proyecto en tiempo y forma, incluso un poquito antes y bueno, ya veremos que más viene para el futuro no tan lejano.
Respecto a la maestría, obtuve 10/10 como calificación final en la materia de Estadística y 9/10 en mi examen de Administración de Recursos Humanos. No todo en la vida puede ir tan mal
P.S: Si al alejarse se ven mejor las cosas fuera de lugar; hum… ni qué decir. Cest la vie :-)
MacOS X en una laptop HP pavilion dv2000
Leyendo foros, wikis y demás información desde hace varias semanas, al fin pude instalar el sistema operativo X (10) de Mac denominado Leopard.
No fue la gran hazaña de mi vida, he de reconocer que fue relativamente sencillo y el tener el cargador de arranque (GRUB) para Linux/Windows me facilitó el trabajo.
Los pasos básicos fueron:
- Lo más importante: Leer el wiki para instalar Mac OS en una PC: http://wiki.osx86project.org/
- Usar mi liveCD de Gparted para cambiar el tamaño de la partición de Windows a menos 10Gb
- Crear una nueva partición en el espacio sin utilizar de 10Gb y formatearla de tipo NTFS
- Activar los cambios y salir de Gparted
- Usar el DVD de kaliway Intel-Amd 10.5.2 (ese lo bajé vía torrent) para formatear la partición (NTFS) como MacOS Journaled
- Configurar las preferencias e instalar MacOS X (para lo cual se requieren almenos 6.8Gb de espacio libre)
- Reiniciar el equipo
- Usar el DVD de instalación de OpenSuSE Linux 11 (la versión que tengo instalada en mi laptop) e iniciar el sistema en modo reparación
- Configurar el cargador de arranque GRUB añadiendo una entrada para poder iniciar Mac Os
- Guardar los cambios y reiniciar
Ahora al iniciar mi laptop, GRUB me muestra un listado para elegir que SO iniciar:
- Linux Suse 11
- Vista Ultimate
- MacOs X Leopard
Creo que lo último que me resta es disfrutar del sistema operativo de la manzanita aunque con ciertas limitaciones (espero que temporales) como el audio, la tarjeta wireless o las actualizaciones automáticas




