Archivo

Entradas Etiquetadas ‘problema’

Recopilación de soluciones para los retos de #tuentiContest . Challenge #5

Jueves, 23 de Junio de 2011 Gaspar Fernández Sin comentarios

Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).

Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que haerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.

Challenge #5 : The Milkman Problem

Somos un empresario vaquero, y tenemos que llevar vacas de Zaragoza a Madrid, pero sólo podemos dar un viaje, tenemos una serie de vacas con su peso y su producción y el peso total que puede transportar el camión. ¿Cuál es la decisión óptima? Es decir, llenar el camión hasta los topes eligiendo las vacas que más producen.

Soluciones:

Si no estás en la lista y quieres plantear tu solución, deja un comentario con tu link !

Actualización 2011/06/23 13:54 : Corregido error tipográfico y añadida solución de @javipinero
Actualización 2011/06/28 08:00 : Añadida solución de @theom3ga
Actualización 2011/07/03 01:40 : Añadida solución de @frisco82
Actualización 2011/07/03 13:35 : Añadida solución de @Rosapolis

Un apaño para el efecto de kscreenlocker en algunas tarjetas gráficas

Martes, 14 de Diciembre de 2010 Gaspar Fernández 2 comentarios

ksolarwinds_colgado

Si, como yo, tienes una tarjeta Intel, algunas actualizaciones de KDE y Xorg te pueden dejar con mal sabor de boca, ya que cuando salte el protector de pantalla, si tenemos activada la opción de que nos pregunte contraseña, te va a dejar así la pantalla.

Si escribimos la contraseña tal cual, no pasa nada, es decir, volveremos a entrar, aunque es molesto que no se vea nada, y si queremos sorprender a las visitas, con esto, sí que no lo vamos a conseguir.

Es un bug, espero que en las últimas versiones esté corregido, aunque en versiones estables seguimos viendo este fallo. La solución, o bueno, chapucilla o apaño, workaround, como dirían en tierras anglosajonas es el siguiente: ejecutar kscreenlocker (es decir el programa que bloquea la sesión con la siguiente variable de entorno: XLIB_SKIP_ARGB_VISUALS=1; lo malo es que no podemos arrancar KDE con esta configuración ya que debido a la composición de ventanas no arrancaría; además, se debe quedar muy soso sin composición, sin efectos y sin nada, y no queremos eso.

Tenemos que arrancar sólo kscreenlocker con esa configuración, y podemos hacer lo siguiente (como root):

  1. Buscamos el ejecutable kscreenlocker (con locate, por ejemplo). En Linux Mint lo podemos encontrar en: /usr/lib/kde4/libexec/kscreenlocker.
  2. Lo renombramos como kscreenlocker_ (o con cualquier otro nombre)
  3. Luego creamos un archivo llamado kscreenlocker (un script donde añadimos la variable que queremos) y contendrá lo siguiente:

    export XLIB_SKIP_ARGB_VISUALS=1
    /usr/lib/kde4/libexec/kscreenlocker_ $@

  4. Damos permisos de ejecución:

    chmod +x kscreenlocker

No deja de ser un arreglo provisional, ya que cuando actualicemos algún componente, seguramente se romperá esto, pero al menos no nos deja ese desagradable sabor de boca.

Enviando posts a twitter

Viernes, 28 de Mayo de 2010 Gaspar Fernández Sin comentarios

twitter-bird-6

Hace mucho tiempo leí en anieto2k una función muy interesante para twittear sin necesidad de incluir APIs tremendas. Es decir, si en mi aplicación, sólo quiero enviar twits, ¿para qué incluir algo demasiado grande? Con una pequeña función estaría todo resuelto.

El tema es que hace poco inicié un proyecto que periódicamente envía twits y necesité echar mano de esa función. Descubrí que Twitter había cambiado un poco su forma de interactuar.

Antes, podíamos enviar por GET (en la URL) el parámetro del mensaje que íbamos a postear, aunque ahora devuelve un error extraño: 413 Request Entity Too Large, más o menos es cuando la consulta que enviamos al servidor es muy grande; aunque el error nos lo da porque no encuentra el post que queremos publicar.

Para solucionarlo, tenemos que enviarlo con el método post, de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function postToTwitter($username,$password,$message)
{
// Esta línea está modificada
    $host = "http://twitter.com/statuses/update.xml";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $host);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_POST, 1);
// Esta línea es nueva
   curl_setopt($ch, CURLOPT_POSTFIELDS, 'status='.urlencode(stripslashes(urldecode($message))));
    $result = curl_exec($ch);
    $resultArray = curl_getinfo($ch);
    curl_close($ch);
    if($resultArray['http_code'] == "200")
    {
        echo "<br />OK! postedo en http://twitter.com/".$username."/<br />";
    }
    else
    {
        // Esto lo podemos quitar, es sólo para analizar la salida.
        print_r($resultArray);
        echo "<br />Error! ha ocurrido un problema<br />";
    }
}

Con esta versión modificada del script ya podemos twitear :)

Y para llamar a esta función:

postToTwitter(’usuario’, ‘contraseña’, ‘140 letras de lo que queremos twitear’);

Foto: Free Twitter Bird Icon Set

Visita otras webs de la red