Jan 12

Yesterday I received an email from Android Market support team saying that my application was removed due to a violation of the Developer Distribution Agreement. They explicitly say that the application could be used in an “harmful way”.

Here is the complete email:

This is a notification that the application, Router Passwords, with package ID net.davidgouveia.routerpasswords has been removed from Android Market due to a violation of Android Market developer terms. It has come to our attention that this application could be used in a way that is harmful to devices, networks, or users.

For specific policies pertaining to this suspension, please see:
Developer Distribution Agreement:
4.3 Use of the Market by You
4.4 Prohibited Actions
Content Policy:
Malicious Products

Specifically, this application allows users to circumvent the (default) password protection made available through third-party routers. We would like to emphasize that the simplicity in which a security measure is circumvented is irrelevant to the application of this Android Market Developer agreement provision.

Please fully review the Content Policies, Developer Distribution Agreement, and Business and Program Policies before you create or upload additional applications. Please also consult our guidelines on rating your application.

Please be advised that this or additional violations may result in a suspension of your Android Market Publisher account, and may also result in actions, including possible suspension, taken against any associated Android Market Publisher, AdSense, Google Checkout, or AdMob accounts.

Thanks,
The Android Market Team

Since I believe that the source of this problem is the database that ships with the application, I will launch a new one without any information. You will then be able to populate da database with information about all of your network devices.

I would also like to thank all the people who’ve helped me reach almost 700k downloads in a few months.

Stay tuned :)

PS: You can still download the application from other sources including this website. Click here.

Tagged with:
Sep 15

Hi,

Today I’m going to show you a very small script that allows you to convert any video (as long as it is supported by mplayer) to a GIF.

Required tools:

* mplayer

* convert

 

mplayer is popular media player available for multiple operating systems that support a wide range of video formats. The convert tool is an utility that lets you convert between multiple image formats among other definitions.  Since the mplayer takes screenshots using jpeg format, we need to use the convert tool to do the convertion to aGIF format.

 

Copy the following code, save it to a file and change its permissions (chmod a+x) and you are ready to roll :)

 

 

#!/bin/sh
TMPDIR=/tmp/animated
shopt -s nocaseglob
if [ ! -d "$TMPDIR" ]
then
        mkdir $TMPDIR
fi
 
\rm $TMPDIR/* &> /dev/null
 
if [ $# -lt 3 ]
then
        echo -e "Usage: $0 <start> <length> <inputfile> [<with:height>]\nExample:\n$0 00:15:11 10 myvideo.avi 320:240"
        exit 1
fi
 
if [ -n "$4" ]
then
        SCALE="scale=$4"
fi
 
echo "Generating screenshots. Please be patitent..."
mplayer -ao null -ss $1 -endpos $2 $3 -vo jpeg:outdir=$TMPDIR/ -vf $SCALE &> /dev/null
if [ -f $TMPDIR/00000001.jpg ]
then
        echo "Finished generating frames. Assembling the animated GIF..."
        convert -delay 5 $TMPDIR/*.jpg $TMPDIR/output.gif
        echo "Done! Please check the $TMPDIR/output.gif"
        exit 0
else
        echo -e "Oops\! Something went wrong and the frames were not generated. Check your parameters\!"
        exit 1
fi

Just try it and let me know ;-)

Tagged with:
Aug 22

I’ve been trying to learn how to use Perl to do some simple stuff whenever I just cannot use PHP. PERL is a language that I have access on every machine under my control, but unfortunately I cannot say the same thing about PHP and that is why I have decided to start learning using this ultra flexible language.

Now, the first thing I have developed (aside from the popular Hello World – LOL) was a simple script to check for website updates. This was particularly useful to check for updates on a website related to a contest.

use strict;
use warnings;
use LWP::Simple;
use Digest::MD5 qw(md5 md5_hex md5_base64);
use Encode qw(encode_utf8);
 
my $link                = 'http://www.foobar.com';
my $email_from          = 'foo@bar.com';
my $email               = 'bar@foo.com';
my $email_subject       = 'Website Changed!';
my $email_body          = 'Hello! I just want to let you know that the website ' 
                          . $link . ' have just changed!';
my $tmp_file            = '/tmp/stored_hash';
 
my $web_source = get( $link );
my $current_hash =  md5_hex(encode_utf8($web_source));
 
if(-e $tmp_file)
{
        open FH, "<$tmp_file" or die "could not open: $!\n";
        my $mod_hash = <FH>;
        if( $current_hash ne $mod_hash )
        {
                open(MAIL, "|/usr/sbin/sendmail -t");
                print MAIL "To: $email\n";
                print MAIL "From: $email_from\n";
                print MAIL "Subject: $email_subject\n\n";
                print MAIL "$email_body\n";
                close(MAIL);
 
        }
        close FH;
}
        open FH, ">$tmp_file" or die "could not create: $!\n";
        print FH $current_hash;
        close FH;

Just replace the email and link stuff to suite your needs and you are all set! Enjoy!

Tagged with:
Jul 01

If you are thinking about using domainsarefree.com to register a website, please think twice! I tried to register a domain which failed because I couldn’t find my credit card. I just thought “No problem, I will search for my wallet and register the domain later…”

Two days later when I tried to register that domain again it was already registered! And I thought to myself: “how the heck did that happen? That domain is complex with so many letters and not even related to a recent hot topic, this can’t be a coincidence!”

I don’t like to be paranoid, but after reading a few links like this one I now understand what happened.

So be aware: If you want to register a domain, either do it fast or don’t even use domainsarefree.com otherwise you will end up with a robbed domain.

Tagged with:
May 01

A few months ago I got tired of using eclipse as my IDE because it is extremely slowwww, so I’ve decided to give an oportunity to IntelliJ Idea.

It seems faster than eclipse. No doubts about that. But then I came across these king of lame errors:

I’m getting tired of using such lame IDEs with basic bugs. Any alternative to develop Java/Android applications?

I wish someone could develop a Visual Studio clone for java :-(

Tagged with:
Apr 23

This is probably a common problem among all the people trying to get audio over HDMI under Linux using an EN210 graphics card (or similar).

Even though the HDMI may appear in your available cards listed in proc (/proc/asound/cards) you will probably see that you cannot find it using the aplay utility. Just check it running the command “aplay -l”. The HDMI device isn’t listed here isn’t it?

The reason for this issue is related to the ALSA driver version 1.0.21 (or older) which is quite buggy for these graphics cards.

You can check which version you are using by executing the following command:

cat /proc/asound/version

If you get a version older than 1.0.21 then you need to upgrade it. You can check your favourite distribution’s repository for an update or you can try to compile it from source code.

If you can’t find an update, check this page: http://ubuntuforums.org/showthread.php?t=1681577

It might help you ;-)

Tagged with:
Apr 16

If you are an Android Developer you probably know how hard it may be to develop webservices based applications. The lack of official support for these implementations is compensated by some modules like ksoap2 that handle de SOAP stuff and communication.

For simple cases where you just have to send/receive simple data types it is easy to use, but things can get a bit complicated when you need to handle complete data types with dozens of different functions.

That’s why someone created the automatic stub generator. A stub is a set of classes generated automatically from the WSDL so you don’t have to create all functions, definitions and data types available in the WSDL by hand.

You can download the ksoap2 jar from here.

You can download the stub generator from here or you can try my online version of the stub generator filling the input box with the WSDL URL and press download.

Tagged with:
Dec 13

Talvez por os tempos serem de crise, tenho andado a pensar nos últimos tempos como rentabilizar ao máximo os fundos de que disponho actualmente. A ideia é pegar numa determinada quantia e fazer uma aplicação durante alguns anos reinvestindo todos os anos o valor inicial incluindo os juros ganhos.

Criei um simples simples script que me efectua este calculo. Já existem calculadoras destas às paletes, apenas criei uma nova para simular variações nas taxas de juros entre os vários anos.

A ideia é simplesmente utilizar como limites de variação de juros fornecidos pela instituição financeira e assim tentar ter uma ideia mais real (que na realidade até pode ser bem menos real) do resultado final.

Utilizem o seguinte formulário para efectuarem o calculo:

 

[INDISPONIVEL AINDA]

Tagged with:
Oct 26

Já chegaram as duas competições que te podem levar a passar umas férias no outro lado do mundo, ou a passear pela Europa no teu novo Mercedes.

São eles a XTB Trading Cup e o Jogo da Bolsa do Jornal de negócios.

O objectivo é simples: Investir uma determinada quantia de dinheiro virtual em instrumentos financeiros e rentabilizar ao máximo durante um período de tempo. No final, ganha quem tiver ganho mais.

Os prémios são no mínimo muito aliciantes. Na XTB Trading Cup o primeiro prémio é nada mais nada menos que um Mercedes SLK. Haverá ainda prémios para o segundo classificado e para os vencedores semanais.

No caso do Jogo da Bolsa os prémios são mais simpáticos, mas não deixam de ser bastante aliciantes. Para o primeiro classificado será entregue um cheque de quatro mil euros, com prémios garantidos até ao quinto lugar. Tal como no concurso patrocinado pela XTB, aqui também haverá prémios para os vencedores semanais.

Mais informações no site oficial do Jogo da Bolsa e no site da XTB Trading Cup.

Tagged with:
Sep 15

Hoje lembrei-me de um jogo que costumava jogar nos jantares académicos. Chama-se general peck e consistia em fazer algumas afirmações e gestos sob pena de ter de beber uma bebida algo de penalti.

Cada pessoa vai ter de repetir todos estes passos. Se falhar algum destes passos, então tem de beber e recomeçar de novo. Aqui fica um resumo de como o jogar:

O Bar está cheio e todas as pessoas envolvem o GENERAL PECK.
Todos demonstram curiosos com a cena.
Vemos uma mesa com um copo grande vazio e uma garrafa de vinho cheia.
O General Peck está de pé e olha para os presentes com confiança.

GENERAL PECK
(enchendo o copo de vinho)
O General Peck vai fazer uma demonstração.

O General Peck sabe que não pode falhar, com a penalização de beber tudo de golada e começar de novo.
Silêncio na sala.
Pega no copo com o polegar e um dedo.

GENERAL PECK
O General Peck vai beber pela primeira vez.

Bebe um golo de vinho e bate o copo uma vez na mesa.
Pega no copo com o polegar e dois dedos.

GENERAL PECK
O General Peck Peck vai beber pela segunda vez.

Bebe dois golos de vinho e bate o copo na mesa duas vezes.
Pega no copo com o polegar e três dedos.

GENERAL PECK
(Lentamente)
O General Peck Peck Peck vai beber pela terceira e ultima vez, . . .

Olha em redor.

GENERAL PECK (CONT’N)
. . . e no final vai colocar o polegar direito sobre a mesa.

INSERE – GRANDE PLANO GENERAL PECK A BEBER

Bebe três golos de vinho até esvaziar e bate o copo na mesa três vezes.

REGRESSA À CENA

Olha em redor com ar vencedor. Levanta a mão direita sem copo e aponta o polegar para cima.
Mostra o polegar a toda a gente e num movimento brusco coloca o polegar direito sobre a beira da mesa.
Os presentes enchem a sala de palmas.

Pessoalmente preferia esta versão à do jogos dos limões por ser mais elaborada. Testem um dia com amigos :-)

Tagged with:
preload preload preload