Hoy en un foro de C++ Builer que suelo visitar he encontrado una duda muy habitual de cualquier programador que empieza con este IDE.
Cuando genera una aplicación win32 el compilardor por defecto lo hace usando librerías dinámicas, de tal forma que ese ejecutable queda muy liviano pero no funcionará en ninguna máquina si no se adjuntan dichas librerías ( ningún Windows las trae de serie ). El resultado es que la aplicación no se ejecuta y a cambio nos obsequia con una colección de molestos mensajes pidiendo nosecuantas librerías .bpl
Normalmente queremos generar ejecutables que funcionen de forma autónoma, por lo menos en producción. Para ello debemos modificar las siguientes opciones:
- Project > Options > C++ Linker > ( Desmarca la opción "Link with Dynamic RTL" )
- Project > Options > Packages > ( Desmarca la opción "Build with runtime packages" )
Así el ejecutable resultante aumentará de tamaño considerablemente, pero funcionará
en todas las plataformas windows sin necesidad de librerías especiales de builder.
miércoles, 11 de abril de 2012
martes, 10 de abril de 2012
Restringir puertos por ip en linux
Una de las principales cuestiones cuando administras un servidor web basado
en linux es discriminar accesos a puertos para establecer una política
de seguridad adecuada.
Muchas veces necesitamos discriminar accesos por ip. Por ejemplo, quiero
que el servicio MySQL (normalmente puerto 3306) sea accesible sólo por aplicaciones
locales pero también desde la ip de mi servidor de backups...
Hay muchas maneras de hacer esto en linux, la mas sencilla mediante iptables.
Aquí pongo un ejemplo de restricción de puerto sólo para ip local (127.0.0.1) y
para una supuesta ip de servidor de backups (sustituir con nuestra ip).
en linux es discriminar accesos a puertos para establecer una política
de seguridad adecuada.
Muchas veces necesitamos discriminar accesos por ip. Por ejemplo, quiero
que el servicio MySQL (normalmente puerto 3306) sea accesible sólo por aplicaciones
locales pero también desde la ip de mi servidor de backups...
Hay muchas maneras de hacer esto en linux, la mas sencilla mediante iptables.
Aquí pongo un ejemplo de restricción de puerto sólo para ip local (127.0.0.1) y
para una supuesta ip de servidor de backups (sustituir con nuestra ip).
iptables -A INPUT -s {ip-servidor-backups} -p TCP --dport 3306 -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -p TCP --dport 3306 -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p TCP --dport 3306 -j DROP
jueves, 2 de febrero de 2012
Dudas resueltas: C++ FAQ
Mi trabajo me obliga a compaginar muchas tareas y roles distintos (si estás en el sector del desarrollo de aplicaciones esto te resultará familiar).
Por esa razón cuando toca picar código es necesario tener siempre a mano información de consulta rápida para el lenguaje o la disciplina de turno. Es vital si tu cabeza está en varios asuntos a la vez y además necesitas producir código aceptable en cortos periodos de tiempo.
Hoy he encontrado una página fantástica para añadir a mi colección, se trata de un FAQ de C++ al que he llegado de casualidad. Me ha parecido una lista muy completa, bien explicada y además está ilustrada con cientos de ejemplos.
Enlace en inglés: C++ FAQ (click aquí)
Por esa razón cuando toca picar código es necesario tener siempre a mano información de consulta rápida para el lenguaje o la disciplina de turno. Es vital si tu cabeza está en varios asuntos a la vez y además necesitas producir código aceptable en cortos periodos de tiempo.
Hoy he encontrado una página fantástica para añadir a mi colección, se trata de un FAQ de C++ al que he llegado de casualidad. Me ha parecido una lista muy completa, bien explicada y además está ilustrada con cientos de ejemplos.
Enlace en inglés: C++ FAQ (click aquí)
martes, 31 de enero de 2012
Patrones de diseño en programación orientada a objetos
Hoy me he topado con un recurso bastante útil. Se trata de una página en inglés que recopila los patrones de diseño más utilizados (como los que se enseñan en la universidad en ingeniería del software o estructura de datos). Me ha parecido interesante guardar la dirección:
Link (inglés)
Design Patterns | Object Oriented Design
Link (inglés)
Design Patterns | Object Oriented Design
viernes, 27 de enero de 2012
Limpiar archivos .svn de carpetas de repositorios (win)
Si trabajas con repositorios (como p.ej. TortoiseSVN) puede que te hayas encontrado con este caso alguna vez...
Estamos trabajando en nuestra aplicación y en un momento dado necesitamos extraer parte del código fuente y guardarlo sin esas dichosas carpetas .svn repartidas por todos los subdirectorios. ¿Cómo puedo hacer esto? En pequeños proyectos no supondrá un problema hacerlo a mano pero si se trata de una "criatura" de gran embergadura la cosa se complica, y puede resultar tedioso recorrer todo el árbol de directorios para dejarlo como una patena.
¿Solución? (encontrado en SNIPPLR): Editando el registro de windows (inicio > ejecutar > regedit) podemos añadir un sencillo comando recursivo de limpieza en cuatro pasos:
1. Crear una nueva Clave en el registro y llamarla DeleteSVN:
\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN
2. En REG_SZ de nuestra clave escribir:
Eliminar carpetas SVN
3. Crear otra nueva clave dentro de DeleteSVN llamada command, así:
\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command
4. En REG_SZ de la nueva clave poner:
cmd.exe /C "TITLE Removing SVN Folders in %1 && FOR /r "%1" %%f IN (.svn) DO RD /s /q "%%f" "
A partir de ahora cada vez que se muestre nuestro menú del botón derecho del ratón al pulsarlo sobre una carpeta, aparecerá la nueva opción "Eliminar carpetas SVN" la cual lanzará un shell fugaz que hará el trabajo por nosotros.
Suscribirse a:
Entradas (Atom)
