Al crear las tablas en MySql podemos equivocarnos y dejarlas MyIsam, si se quiere pasar a InnoDB se ejecuta el siguiente comando para solucionarlo.
TER TABLE "nombre de tabla" ENGINE = InnoDB;
Intentare mostrarles todas las cosas que me pasan día a día en mis pruebas, en mi trabajo, etc.
Al crear las tablas en MySql podemos equivocarnos y dejarlas MyIsam, si se quiere pasar a InnoDB se ejecuta el siguiente comando para solucionarlo.
TER TABLE "nombre de tabla" ENGINE = InnoDB;
Cuando la codificación es distinta de algunas tablas y las tenemos que pasar toda a una codificación igual, lo que debemos de ejecutar es lo siguiente
ALTER TABLE "nombre de tabla" DEFAULT CHARACTER SET latin1 COLLATE latin1_general_cs;
ALTER TABLE "nombre de tabla" CONVERT TO CHARACTER SET latin1 COLLATE latin1_general_cs;
Con el primer renglón le decimos a la tabla que character va a tener por defecto, y con el segundo "convertimos" los character del que este al que le estamos poniendo en este caso latin1_generarl_cs.
Más de una vez he tenido que configurar n conexiones ssh en distintos equipo, como la mayoría utilizo putty y este no tiene un exportar, entonces el trabajo de copiar el servidor, el puerto (normalmente el 22) de muchas conexiones, no es menor.
Entonces buscando un poco descubrí que putty escribe las conexiones en la regedit, entonces lo que debemos de hacer para exportar las conexiones de putty es abrir la regedit (inicio, ejecutar, regedit), luego buscar por "SimonTatham"(que dicho sea de paso es el creador de putty) luego, lo que hacemos es exportar esto en un .reg para poder ejecutarlo en otro equipo. Para exportar un punto de la regedit hacemos lo siguiente, primero buscamos luego de encontrar lo que queremos, en la carpeta de la izquierda hacemos click derecho, exportar, y guardamos el archivos en algún lugar conocido, esto nos genera un .reg.
Con este archivo en el nuevo equipo, lo ejecutamos y esto nos carga la carpeta con todos las mismas conexiones.
Siguiendo con el tema ya les comente en el post anterior como actualizar nuestros tags desde Internet, bueno ahora lo que les quiero comentar cual es el editor de tags que uso, ya que es el que me parece mas fácil y practico.
Yo uso Mp3-Tags Generator, es muy básico, lo único que uso de el es la edición de los tags, no utilizo para nada el reproductor (la mitad de las veces anda). No es el mas lindo pero es el mas rápido que he encontrado para modificar lo que necesito.
Me pasa a mi, y supongo que a todo el mundo, que tengo millones de mp3's y estos intentan estar ordenados, o por carpetas, o por autores, o por genero o por casualidad, es decir tirados ahí como vengan, además unos los baje, otros se los robe a algún amigo, otros los ripeo yo etc., entonces nunca se sabe como van a estar los tags de los mp3.
Entonces mi idea era intentar que los tags se actualizaran automáticamente desde Internet. Empecé a buscar por Internet y hay 2 grandes meta base de datos con tags de mp3's. Una es paga, por lo cual la descarte y la otra es frece, y tiene varios programas que la pueden usar, el que yo utilice (que supuestamente es el primero o el oficial digamoslo así) es MusicBrainz Picard, es sus inicios solo tenia versión para Linux, pero en la actualidad ya tiene para Windows también.
La forma de usarlo es muy fácil, primero seleccionamos un archivo, o una carpeta (esta es mas interesante) después le damos en analizar y el solo empieza a recorrer todos los mp3 y los va pasando a la derecha, y poniéndolos en un CD, el CD que a el le parece que coincide con nuestro mp3, además arregla los tags, por ejemplo la primer letra le pone mayúscula, arregla el autor, etc. Después que termina de procesar todos los archivos, lo que podemos es hacer click en Buscar, esto se fija en Internet si los mp3 que me quedaron sin calificar si se pueden calificar de alguna manera.
También tenemos la parte donde nosotros aportamos a la comunidad y es al Enviar PUIDs, que es eso, bueno todo mp3 tiene una huella digital acústica, y se supone que es única, entonces al enviar esto y al cargar bien los tags, la base de datos se va cargando para que otros la utilicen.
Ahora que tan efectivo es? bueno no les voy a mentir, yo analice miles y miles de mp3, y la conclusión que saque es que la música, digamos mundial, léase artistas de renombre, o clásicos de hace años, o de lugares que tiene mucha población (digamos EEUU, Brasil) esta anda muy bien, pero por ejemplo con Folclore Uruguayo ahí tiene todavía un poco de problema, por ejemplo a Estrmin, Pepe Guerra, Los Olimareños, ni los conoce, a Zitarrosa si, etc. Entonces es acá que los usuarios debemos de empezar a trabajar para que esta música sea cargada en la base de datos.
Me ha pasado mas de una vez que los mp3 que tengo están en un volumen muy bajo, entonces empecé a buscar en Internet cual programa me sirve para aumentar su volumen.
Bueno la búsqueda no demoro mucho y encontré mp3gain, con el cual se puede realizar esto, no solo de a un mp3, sino que en masa. El soft tiene una versión estable 1.2 y una beta 1.3.4, ambas realmente son viejas, lo cual me daba un poco de miedo en usarlo ya que yo tengo Windows 7, entonces supuse que ni lo podría instalar, pero funciono a la perfección, además cuenta con versiones para varios sistemas operativos (Linux, Mac).
Se que el titulo no dice mucho, pero en Uruguay, se cambia el horario en el verano, entonces en algunas aplicaciones que corren bajo tomcat, este a veces se marea con la hora y cuando ponemos una fecha, el sistema solo cambia la fecha para un día antes.
Esto lo que hace es bastante complicado pero muy fácil de solucionar, lo que hay que decirle es al arrancar tomcat, exportar una variable que utiliza java.
Entones yo supongo que estamos en un servidor Linux, y que al arrancar tomcat que lo hacemos con un script de inicio en /etc/init.d, le pasamos unos parámetros para que la maquina virtual de java se levante con alguna memoria mínima, máxima, etc. Entonces lo que hacemos es lo siguiente
export JAVA_OPTS="-Xms512M -Xmx1200M -XX:MaxPermSize=384M -XX:PermSize=128M -Duser.timezone=GMT-03:00"
Lo que interesa para el cambio de día, es la ultima parte (-Duser.timezone=GMT-03:00) esto hay que configurarlo según la zona horaria.
Luego solo con reiniciar tomcat la aplicación ya no se "mareara"con la hora.
Cloud = Nube
Es un termino que se esta poniendo de moda o que ya esta de moda, entonces vamos a dar un rápido pantallazo de que es, y como nos puede server, convenir, etc.
Para se mas exactos de lo que voy a hablar es de Cloud Computing (de aquí en delante Cloud)
Gmail, es una aplicación que trabaja en la modalidad Cloud, que ni mas ni menos es un servidor de correo, pero la diferencia es que los correos no están en mi maquina sino que están en algún lugar del mundo, en algún servidor que no se que sistema operativo tiene atrás, que no se nada de nada, solo que maneja mis correos y que yo lo utilizo porque es el mas fácil de usar, es el mas lindo, etc. y no no tengo que encargarme de nada, ni respaldo, ni limpieza, ni actualización ni nada.
Flickr es otro ejemplo.
Pero esto no es todo, Cloud se divide en 3 niveles, GMail, también el Office 2010 que tiene una modalidad que se puede usar desde un navegador, Flickr y muchos mas, están en el nivel superior, si se quiere el que menos técnicos debemos ser para consumir estos servicios.
Los 3 niveles de Cloud son:
- Aplicación, en este nivel encontramos a gmail, flickr, etc.
- Infraestructura, recientemente Microsoft lanzo Azure, que consta de un montón de servicios, ejemplo un sql, a grueso modo seria como tener un servidor windows con un sql, .net, etc. en la nube.
- Arquitectura, el primer representante de este nivel es amazon, con sus servicios, en este punto es como tener un servidor en la nube.
Que ventajas me da esto, bueno empecemos con unos pocos ejemplos para entender, supongamos que tenemos una pequeña empresa en la que necesitamos manejarnos con correo, entonces como ya vimos, utilizaríamos el correo de gmail. El segundo ejemplo seria tengo una aplicación .net, pero no tengo dinero (o simplemente ganas) para comprar un servidor, entonces contrato azures y cuelgo mi aplicación ahi. Ahora supongamos que soy mas técnico y que tengo una aplicación, la cual puede ser linux, windows o lo que sea, entonces elegimos el que mejor nos convenga, contratamos en amazon el servicio y hospedamos ahí nuestra aplicación.
Otras ventajas y nada despreciables, es que nuestra aplicaciones pueden ser escalables, por ejemplo hoy contratamos un servidor con poco ram, poco disco, pero si vemos que necesitamos mas solo hay que contratarlo, obviamente pagando un poco mas y listo. No tenemos que encargarnos de hacer respaldos, mantener los equipos, tener equipos de respaldo, etc.
Depende del contrato y de la empresa los minutos por mes que esta bajo el servicio, normalmente es muy poco pero ...
No solo hay cosas buenas, por ejemplo si hay algún desastre natural, o solamente se nos cae Internet, ahí no vamos a tener sistema.
Seguridad de los datos, es un tema muy discutido, pero nuestros datos estarán en servidores de otros, se supone que hay contratos de confidencialidad, pero al ser servidores en cualquier lugar del mundo las normas de los distintos lugares pueden hacer que las cosas que en un lugar son permitidas en otro no.
Bueno y así se puede seguir con cosas buenas y cosas malas, lo mejor es investigar y hacer pruebas con cosas no criticas para empezar a investigar y sacar conclusiones. La forma de pagar el servicio es muy variado puede ser por uso, por procesamiento contratado, etc. todo depende de la empresa, por ejemplo gmail es gratis.
Como todo es algo nuevo que vino para quedarse, entonces no se puede dejarlo pasar, hay que analizar que usar pero hay que conocer las limitaciones que esto tiene.
Para que lo vayan teniendo en cuenta para los que en algún momento su aplicación tenga que correr con informix, y este hecha en Genexus, cuando el campo es LongVarChar (me paso con un lonvarchar muy grande, de 2000 o mas), si se hace un new o un update se tiene que hacer trim.
Ejemplo
&variable = longvarchar(2000)
Atributo = longvarchar(2000)
Si tenemos lo siguiente
For each
Where …
Atributo = &variable
Endfor
Esto al compilar da error, y el error no dice nada de Atributo sino de algún otro atributo.
Pero si hacemos lo siguiente, anda bien, es mas probé guardar en ese campo algo de más de 300 caracteres y lo guarda bien.
For each
Where …
Atributo = trim(&variable )
Endfor
Lo mismo ocurre en un new, deberia de ser algo asi
new
Atributo = trim(&variable )
...
endnew
En un equipo suse que no tenia conexión a internet tenia que instalar java, lo busque en internet y lo mas fácil era un .bin, pero como se instala un bin?
Es fácil solo hay que ejecutarlo, por ejemplo:
./java.bin
y listo.
Para recordar un poco algo que hace mucho que no utilizo, porque actualmente me gusta mucho mas Ubuntu, instalar un rpm, es también fácil
rpm -i java.rpm
Muchas veces he tenido que crear los script para que al iniciar un Linux este levante las aplicaciones, por ejemplo tomcat, mysql, etc.
Bueno los script de inicio se ponen en /etc/init.d/ y normalmente me copio alguno ya existente y lo modifico a mi elección para que al hacer stop me baje la aplicación y start me la levante.
Con esto estoy seguro que al arrancar el equipo este servicio se va a levantar, pero me esta faltando un punto importante, lo tengo que agregar a la carpeta RC (esto depende del sistema operativo se ubica en un lugar u otro), y crear los links S y K, para que en el arranque en determinado modo (multiusuario, grafico, etc) levante este servicio.
Bueno en suse es mas fácil que en el resto, ya que tenemos un comando que lo hace todo mas fácil, el comando es chkconfig.
Por ejemplo para apagar el arranque en los modos 345 ponemos lo siguiente
chkconfig -level 345 mysql off
esto hace que al arrancar en modo 3 no se levante mysql
ahora para que si levante en vez de off lo ponemos on.
Lo que nos pasa normalmente es que queremos ejecutar la reorg de genexus directamente desde gx, ya que al configurar el DBMS bien, entonces gx hará todo por nosotros, pero a veces cuando la reorg es muy grande, o se tiene que hacer por internet, esto puede durar mucho.
Entonces lo mejor es respaldar la reorg y luego directamente ejecutarla.
Si el equipo es un Linux como es mi caso se debería de ejecutar el siguiente script
export DISPLAY=:0
java -cp GxUtils.jar:.:GXClassR.jar:Reorg.jar:mysql.jar Reorganization -force
si es Windows se debe de ejecutar este script
"ruta de java"\java -cp GxUtils.jar;.;GXClassR.jar;Reorg.jar;mysql.jar Reorganization -force -nogui
Para que esto funcione se deben de tener los jars GxUtils y GXClassR de genexus, el archivo que se genera al guardar la Reorg (daremos una pequeña explicación después), y el jdbc de conexión, que en este caso es mysql pero puede ser cualquiera, sql por ejemplo, todos en una sola carpeta.
El archivo de la reorg se puede exportar directamente de genexus, para esto en el modelo, luego de correr la reorg en el equipo local, se ejecuta el programa WinDeveloper, esto lo que hace es llamar a un programa (que tiene muchas cosas para hacer por ejemplo hacer un war de la aplicación) win, java en mi caso, que te deja exportar el programa de reorganización, entonces buscamos en el menu y ejecutamos la exportación de la reorg, luego podemos incluir en el archivo Reorg.jar los sesteos de conexión de la base de datos (usuario, contraseña, servidor) o podemos no incluirlos (cosa que aconsejo), si elegimos esta ultima opción, entonces en la misma carpeta donde están los jars debemos de poner el reorg.cfg que tenga los datos del servidor, que es idéntico a el client.cfg.
Entonces con todos estos archivos en una carpeta, nos paramos en la carpeta y ejecutamos el script que menciones (se puede crear un bat o sh dependiendo del sistema).
Al correr el script si todo esta perfecto, se debería de impactar la base de datos, si el sistema es windows se mostrara la clásica ventana de reorg de genexus.
Lo mas importante es tener los parámetros de conexión bien, ya sea en el Reorg.cfg como en el modelo de gx si se elije que el Reorg.jar tenga estos parámetros.
Luego como (en mi caso) la aplicación es java, en el servidor tengo que tener instalado java.
Bueno me toco cambiar de notebook y por desgracia el que me compre no traía Windows xp, y por defecto venia instalado con Vista.
Cabe aclarar que utilizo Windows porque Genexus lo que mas utilizo solo anda en Windows, anda muy bien en Windows xp y con algunas complicaciones (nunca lo probé) en vista, nunca escuche si aunque o no en 7, si no fuera por Genexus mi sistema operativo por defecto seria linux, en mi caso Ubuntu, también cabe aclarar que la vez que lo quise probar y le instale VmWare con maquinas virtuales con Windows, realmente dejo mucho que desear (VmWare), se caía muy seguido.
Bueno en este no voy a explicar como hacer andar genexus en windows sino que voy a comentar cual fue mi impresión de 7.
Como dije el S.O. por defecto fue vista, el cual cargaba muy lento, el consumo de ram era excesivo, el aspecto visual bastante mejor pero para ahorrar ram lo mejor como siempre es dejar el Windows gris y feo.
Entonces conseguí un Windows 7 y deje instalados los 2. Primero que nada me encanto que detecto casi todos los dispositivos, siendo que el notebook era muy nuevo y tenia partes que los drivers recién habían salido. Por suerte en la pagina del fabricante estaban todos los drivers, asi qeu a descargar e instalar.
Siguiendo con Windows, el consumo de ram es mayor y bastante al de xp, pero esto es algo en lo que hay que empezar a pensar al pasarse a los S.O. nuevos, es decir al comprar un equipo, preferentemente que tenga bastante ram.
Después igual que vista (aunque a mi entender un poco mas lindo) la parte gráfica realmente mejoro bastante (mejoro bastante pero no invento nada, mas que nada robo ideas de Linux).
Una cosa que no me gusta es el nuevo inicio, la forma de mostrar los iconos la verdad que no me acostumbro (es un poco igual a la forma que se muestran en kde).
Después los programas por defecto que tiene, son casi los mismos, el clásico paint, la calculadora, los juegos hay alguno mas que están lindos, es decir lo mismo pero un poco mas lindos.
El panel de control se cambio todo, y ha mejorado bastante en el tema de la seguridad, el firewall por ejemplo ahora esta muy muy interesante para investigar, para los fanáticos de la seguridad van a poder jugar bastante con esto (ojo no estoy diciendo que sea lo mas seguro), también hay muchos cambios en como se desinstalan los programas, como se configura la pantalla, el protector de pantalla, etc. en esta parte es la que cambiaron mas y hasta que no me acostumbre voy a seguir extrañando a xp.
Bueno en resumen, como dije nunca utilice vista, pero las veces que por alguna cosa trabaje en una realmente me agarraba los pelos, ahora con 7, la verdad que eso no paso. Entonces si no fuera que tengo que trabajar en xp (hoy por hoy trabajo con maquinas virtuales) recomendaría ampliamente 7 a las personas que tiene de 3Gb de ram para arriba, y una buena tarjeta de vídeo, si no son los agraciados de tener una buena maquina, les diría muy seriamente que siguieran con xp, que por mucho tiempo va a seguir siendo un muy buen S.O.
La problemática que tenia era que una base de mysql de un cliente tenia muchas tablas que eran muy muy grandes, y necesitábamos tener además de todas las tablas que eran chicas (que eso lo hicimos con mysqldump -u usuario -pcontraseña base tabla1, tabla2, ... > respaldo.sql, para saber el tamaño de las tablas analizamos un poco en information_schema de mysql y detectamos las tablas chicas, y luego con mysql -u usuario -pcontraseña base < respaldo.sql levantamos el respaldo) debíamos de las tablas grandes (por lo menos de la mayoría) obtener un determinado numero de registros.
Lo que estábamos haciendo era armando un ambiente de testing local con tablas del cliente.
Entonces la idea es ejecutar un select de los primeros 100 registros de una tabla, generar un .sql, y luego este .sql levantarlo en una base local.
Hay que destacar que la estructura de la base de datos no es un problema eso lo podemos replicar (jeje trabajamos con genexus).
El primer paso es en cliente ejecutar es siguiente comando
mysql -u usuario -pcontraseña base -e "select * from tabla limit 10" > tabla.sql
esto nos genera para una tabla un .sql con los primeros 10 registros.
Esto lo debemos de repetir para las n tablas que queramos.
Luego debemos copiar estos sql a nuestro servidor y ejecutar el siguiente comando
mysql -u usuario -pcontraseña base -e "load data infile 'tabla.sql' into table tabla1"
Esto lo que hace es al archivo tabla.sql levantarlo en la tabla que le indiquemos en este ejemplo tabla1
Con estos sencillos ejemplos podemos rápidamente (mas o menos porque lleva un tiempito de proceso) tener un servidor de testing con datos del cliente.
El problema que se me presentaba era que todas las tecnologías que tenia para guardar y obtener variables de sesión en una pagina web eran con php, esto lo que hacia era hacer un pedido al servidor por php para que este obtuviera la variable en el cliente.
Entonces empecé a buscar un poco y encontré esta librería que no solo sirve para generar variables de sesión con javascript sino para mucho mas, pero lo que yo utilizo es solo este tema. La librería no es (para el tema de variables de sesión) gran cosa pero si es una muy buena idea.
La librería se llama SessVars.js, si buscan en Internet van a encontrar donde descargarla, y es totalmente gratis.
Primero que nada debemos de tener una inclusión del javascript en cada una de las paginas en las que vamos a utilizarlo, esto se hace de la siguiente forma
Luego cuando queremos guardar una variable de session hacemos lo siguiente
sessvars.usuario = val;
esto se lee de la siguiente forma, en la clase sessvars que va a ser digamos así, el contenedor de sesiones, se agrega la session usuario con el valor var. Si necesitamos luego definir por ejemplo una variable de sesión que sea nombre por ejemplo, ponemos sessvars.nombre = "pepe"
Y para recuperarla hacemos esto
usu = sessvars.usuario
esto se lee como que en la variable usu, nos queda el valor de la variable de sesión usuario.
Como ven es mucho mas fácil y sencillo que con php (por lo menos para mi) y realmente es muy muy rápido
Estoy trabajando con gx 9 web y quiero hacer lo que en las versiones win es el conocido Confirm().
Un ejemplo de esto en win seria preguntarle si esa seguro si quiere realizar determinada acción, entonces el código seria algo así
Confirm("Estas seguro de borrar el archivo?',N)
if confirmed()
// eliminamos el archivo
endif
Bueno en web esto no anda entonces lo que se utiliza es un poco de los eventos html para esto.
Entonces seria algo así, tenemos un botón el cual al cliquearlo queremos que nos pregunte si realmente estamos seguros.
En el evento start ponemos algo asi
btn.JSEvent('onclick',"confirm('Realmente desea ...?')")
donde btn es el nombre del botón
luego en el evento del botón, solamente tenemos que poner el código para eliminar o hacer lo que deseamos.
Esto lo que produce es nos muestra una ventana Windows, en la cual nos pone el texto "Realmente ..." y nos pide que Aceptemos o Cancelemos, y se ejecuta el código del evento solamente si Aceptamos.
Este post es un poco distinto a los otros, pero solo les quiero contar algo que yo no sabía, y como lo importante no es saber sino "tener el teléfono de quien sabe", le agradezco a Federico que me desasno.
Bueno la historia empieza así, hace poco me compre un teléfono que tiene GPS, y desde ese momento empecé a pensar un poco (cosa que me da muy de vez en cuando). Entonces yo sabía que el celular tenía una antena, y esta antena se conecta con los satélites para saber cuál es la latitud y longitud para que luego el celular o el equipo GPS nos muestre en el mapa la calle en que esta, etc. Etc.
Pero mi pregunta era, los satélites, ¿quién los paga? ¿De quién son?
Entonces como les comente mi amigo Federico que esta mucho mas empapado en el tema me comento que los satélites GPS son todo de Estados Unidos, y que ellos lo mantienen y hacen con ellos lo que quieren, por ejemplo me comento que hay 3 franjas de colores, que la normal es en la modalidad que los satélites andan siempre y que nos ubican muy bien, es decir hay un error muy pequeño, luego en la segunda franja, te dan la ubicación con 1 km de error, y en la última no te dan nada, y está claro porque no?, pienso yo (en esa época no tenia GPS así que no les puedo comentar) el 11 de septiembre cuando les tiraron las torres, que en ese momento se pasaría obviamente a la ultima franja. También tienen satélites GPS otros países (Rusia obviamente) pero que estos satélites y la norma se llaman distinto (es decir no se llaman GPS) y que no son accesibles para el resto del mundo.
Sé que no es muy técnico lo que comente pero es un buen punto si se quiere investigar un poco más.
La idea de este post no es enseñar lo que es un Data Provider, que es uno de los tipos de objetos nuevos en Genexus, sino solamente dar un pequeño ejemplo de como utilizarlo para tener en nuestra aplicación un menú superior.
Encontré un audio libro en Internet que esta en formato mp3, pero esta dividido en muchos archivos, estuve buscando algunos programas para concatenarlos y no encontré ninguno, pero en las búsquedas que hice me salio un comando en Linux que lo hace, y como es tan tan tan fácil, lo voy a postear.
Creo que seguir escribiendo ya es perder tiempo.
cat primer.mp3 segundo.mp3 ....... > todo.mp3
hay veces que Linux hace tan fácil las cosas que en windows son imposibles que todavía me sigue sorprendiendo.
Algunas de las tantas funciones php y js que siempre hay que tener a mano
Primero las funciones js
obtener un una parte de un texto
res = origen.substring(0,3)
ejemplo "123456789" obtenemos "123"
obtener la posición de un caracter, o de un conjunto de caracteres
cadena.indexOf("4")
devuelve un numero menor a 0 si no existe, y si existe devuelve la posición
ejemplo "123456789" cadena.indexOf("4") = 3 (recordar que el 1 esta en la posición 0)
ejemplo "123456789" cadena.indexOf("23") = 1
eliminar los espacios antes y después de un texto
res = trim(origen)
ejemplo trim(" 123 ") = "123"
ejemplo trim(" 1 2 3 ") = "1 2 3"
obtener el largo de un texto
res = cadena.length
ejemplo texto = "123", texto.length = 3
ejemplo texto = "123 456", texto.length = 7
Ahora algunas funciones php
eliminar los espacios antes y después de un texto
$res = trim($origen)
ejemplo trim(" 123 ") = "123"
ejemplo trim(" 1 2 3 ") = "1 2 3"
obtener el largo de un texto
$res = strlen(cadena)
ejemplo texto = "123", strlen(texto) = 3
ejemplo texto = "123 456", strlen(texto) = 7
obtener un una parte de un texto
res = substr($cadena, 0, -4)
ejemplo $cadena = 12345678, substr($cadena , 0, -4) = 1234
ejemplo $cadena = 12345678, substr($cadena , -4) = 5678
bueno estas como dije son algunas, como son muy usadas y muy potentes las posteo.
Muchas veces he visto que la gente no sabe usar JDownloader, o no lo quiere utilizar porque es muy complicado. La verdad no lo entiendo porque para mi es de los soft. mas fáciles de usar.
JDowload se usa para descargar archivos de los servidores de RapidShare, MegaUpload, y muchos mas, sin casi ninguna acción por parte del usuario, a diferencia si lo bajan directo de la pagina que tienen que hacer muchas cosas hasta llegar realmente a bajarlos.
Entonces en principio precisamos el software, eso lo buscan en Internet y lo bajan (la pagina oficial es http://www.jdownloader.org/home)
Este software esta hecho con java así que no necesitan instalar nada, pero si necesitan java, en principio solo el JRE, esto también lo bajan de Internet, ambos programas son gratis, así que no tienen que conseguir ningún crack ni serian ni nada que se le parezca.
Luego de tener en zip, rar, tar o lo que sea como hayan conseguido el jdownloader, lo descomprimen en donde les quede mas cómodo. Dentro de la carpeta que descomprimieron van a tener un archivos, JDownloader.exe, que tiene un icono que es un mundo con una cinta amarilla, entonces ejecutan este programa (le hacen doble click por ejemplo) y esto lo que hace es abrir el programa, como se necesita abrir un puerto de tu sistema operativo si tienes algún firewal activado te va a pedir que abras el puerto, por ejemplo si es el de windows hay que poner desbloquear.
Si llegaste a este paso entonces ya se abrió el JDownloader, entonces ahora lo que hay que hacer es buscar en Internet los links para descargar (programas, películas, música, etc.), luego que estemos en la pagina que tiene los links, entonces lo que hacemos es copiamos (si los links están todos juntos mejor, pero si entre los links hay mucho mas texto, no importa copiamos desde el inicio hasta el final, jdownloader se va a dar cuenta cuales son los links para descargar) los links a bajar.
Con esto ya basta para que jdownloades si esta abierto se de cuenta que estas intentando bajar algo y lo pone en sus "pendientes de descarga" (LinkGrabber), y lo unico que hay que hacer es darle "Add al package", esto lo que hace es pasar a Downloaders, es decir que se van a descargar.
Luego de esto puede, si es la primera vez pedirnos que aceptemos los términos del servicio (esto lo hace para cada servidor), le decimos que si, y ya se empieza a descargar los archivos.
Arriba tenemos un "play" y "pause" para iniciar y detener nuestras descargas, quizás si es la primera vez tienes que configurar la carpeta donde se van a descargar nuestros archivos.
JDownloader también puede llegar a descomprimir nuestros archivos, por ejemplo si es una película en dvd, van a ser muchos pedazos de archivos los que vamos a tener que descargar y luego unirlos a todos en uno solo que puede ser un rar, iso, etc., para esto el programa debe de saber si los archivos tiene alguna contraseña, lo que hacemos es hacer doble click en el paquete y se nos abre abajo un lugar para poner la contraseña y si queremos ponerle un nombre al paquete, también si queremos una ruta auxiliar para descargar, etc.
Y listo, de ahora en delante jdownloader se encarga de todo, de poner los captcha, de esperar los segundos que haya que esperar, de continuar con la siguiente, etc.
Tengo que administrar una base de datos en la que se utilizan varias tablas auxiliares para generar informes y otras cosas, entonces todos los días esas tablas las tengo que limpiar.
Como en el servidor ya tengo un cron con un script para borrar algunas carpetas temporales, la idea es agregar algo al script para que también me borre las tablas auxiliares.
Los pasos son generar un .sql que me borre las tablas. Seria algo así
use basededatos;
truncate tabla_auxiliar1;
truncate tabla_auxiliar2;
......
Esto lo guardamos en un archivo llamado script.sql (o como quieran llamarlo)
luego en el script que ya tenemos que nos borra las carpetas auxiliares agregamos lo siguiente.
mysql -u usuario_con_derechos -pcontraseña basededatos < script.sql
Con esto cuando se ejecute el script nos borrara las tablas.
Como varias veces me ha pasado, necesito bajarme algunos vídeos que son muy pesados de Internet, que están en formato Flv (flash) y guardarlos en mi equipo para poder verlos después.
Buscando un poco encontré Moyea Youtube FLV Donwnloader, es el mas fácil que he visto y realmente anda muy bien.
Como ya he necesitado 3 veces instalar Joomla, y cada vez tengo que buscar como se hace para instalar (que realmente es muy fácil), entonces he decidido escribirlo.
Primero hay que descargarse Joomla, yo he descargado la versión 1.5.12.
Luego de alguna forma copiarlo al servidor, que en mi caso es un Linux Ubuntu server.
Luego en el Linux, con apache ya instalado, copiamos a la carpeta del apache, todo el contenido del archivo que bajamos (obviamente antes hay que descomprimirlo), se puede copiar a la ruta del apache (/var/www) o creamos una carpeta y lo copiamos ahí (/var/www/joomla por ejemplo)
Tenemos que crear la base de datos donde trabajara joomla, entonces desde el prompt hacemos lo siguiente
> mysql -u root -ppassword
> create database joomla;
> show databases;
con esto crearemos la base de datos y con el ultimo comando veremos si realmente esta creado.
Luego (supongo que el apache esta levantado y andando bien) se debe de empezar la instalación de joomla, esto lo hacemos escribiendo lo siguiente en el navegador
http://ip o nombre del server/joomla/installation/ (supongo que se creo una carpeta joomla)
Y seguimos las indicaciones que nos da el instalador de joomla.
Al final dependiendo si se puede escribir o no en el directorio del apache (/var/ww/joomla) podremos directamente acceder a la administración o al sito de ejemplo (que en uno de los últimos pasos de la instalación nos da la opción de instalarlos), si no dejamos escribir, entonces tenemos que crear el archivo configuration.php en la raíz de la carpeta de joomla con el contenido que nos da en la ultima pantalla. Luego como vemos también en la ultima pantalla la carpeta de instalación hay que eliminarla.
Entonces al final de todo en la ruta
http://ip o nombre del server/joomla
tenemos nuestro portal, o en la ruta
http://ip o nombre del server/joomla/administrator
tenemos la administración de nuestro portal.
Esto lo he tenido que hacer 2 veces y como la primera fue hace algunos años y la otra fue hace unos días, en la segunda oportunidad estuve un rato largo acordándome de cada una de las cosas que hice en la primera.
La idea es que un proceso genera un pdf y automáticamente sin interacción del usuario se envía un mail (o muchos mail's).
Bueno en genexus para que se genere un reporte en formato pdf, lo que hay que hacer son 3 cosas.
1 - marcar que el reporte sea main
2 - call protocol como HTML
3 - una regla Output_file(&nombre, "pdf"); siendo nombre el nombre del pdf, con el .pdf
con esto genexus sabe que el reporte lo genera en formato pdf.
Ahora lo que queremos es que ese archivos se genere pero quede guardado en el servidor en alguna ruta que se pueda ,entonces cambiamos &nombre por el nombre completo de la ruta, por ejemplo /home/arch.pdf, y esa variable debe de llegar al reporte y debe de ser in, ejemplo
param(in:&nombre);
Y además en el call protocol hay que cambiar de HTML a Internal.
Con estos cambios tenemos el pdf en una ruta conocida del servidor, ahora lo único que hay que hacer es hacer algún proceso que envié el mail, para esto se pueden utilizar varias formas, pero lo que hay que hacer es una variable del tipo MailMessage, adjuntarle el pdf, MailMessage.attach(&nombre), y luego seguir con el resto de las cosas para enviar el mail.
El problema que tengo es el siguiente, tengo varias maquinas virtuales con ambientes de clientes, en las que en ellas le instalo la menor cantidad de programas para que ande lo mas rápido.
Como la mayoría de las maquinas son Windows, no puedo utilizar en tar y gzip de Linux.
Como tengo documentos muy importantes quiero que periódicamente se haga un respaldo de estos.
En Internet hay muchos programas que hacen esto, pero como dije no quiero instalar nada, así que esa no es una opción.
Me pongo a buscar en Internet y por consola DOS se puede hacer rar o zip utilizando winrar, pero repito no quiero instalar nada, entonces encontré la siguiente solución.
Solamente con copiar el programa de winrar, rar.exe, a una de estas maquinas virtuales, y hacer un bat que mas abajo detallare, se pueden generar respaldos muy fácilmente.
si por consola ejecutaremos rar.exe, nos da todos los parámetros que podemos utilizar, pero yo pongo un pequeño ejemplo abajo para que sea un punto de partida.
"C:\ruta\Rar.exe" a -ad -m3 -agYY-MM-DD-hh-mm Z:\nombrerar "C:\rutaarespaldar\"
C:\ruta\Rar.exe es donde copiamos el rar.exe
Z:\nombrerar es el nombre del archivo a generar
C:\rutaarespaldar es la carpeta que respaldaremos
a quiere decir que si existe el archivo entonces agrega
-ad añade el nombre de archivos la carpeta del archivo
-m3 es la compresión puede ir hasta 5
-ag le agrega al nombre del rar la fecha y hora, ejemplo z:\nombrerar-09-08-30-12-10.rar
Esto ahora lo que tenemos que hacer es o lo ejecutamos manualmente (muy tedioso), o lo ponemos en inicio, para que se ejecute cada vez que inicies la sesión, o lo agregas al programador de tareas (estas son las 3 opciones que se me ocurrieron).
Tengo una carpeta la cual tiene cientos de archivos, de los cuales quiero hacer un tar.gz de solo alguno de ellos.
Utilizaremos una combinacion de find y tar para poder lograrlo.
find /ruta_de_carpeta -name "*.txt" | xargs tar -zcvf misarchios.tar.gz
con esto buscamos dentro de la carpeta ruta_de_carpeta los archivos con extension txt (aca se pude buscar lo que quieran) y los comprimimos en el archivo misarchivos.tar.gz