<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3672631960858169580</id><updated>2012-02-16T08:45:14.009Z</updated><title type='text'>Code Time</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-8064216320039868144</id><published>2007-04-25T11:44:00.000Z</published><updated>2007-04-25T11:51:53.294Z</updated><title type='text'>Ubuntu 7.04 - Será desta que a MS se vai sentir?</title><content type='html'>Para quem não sabe, no dia 19 de Abril foi lançado o Ubuntu 7.04 e este tem muitas novidades.&lt;br /&gt;Dentro delas destaca-se o Gestor de Controladores Restritos. Este gestor permite que se instale os drivers de uma placa gráfica (nVidia e ATI), wireless, etc... com apenas alguns cliques.&lt;br /&gt;A nível de rede sem fios também foi melhorado, temos agora um assistente de redes sem fios (e com fios).&lt;br /&gt;Mais suporte a hardware (isto agora tem a ver com o kernel), mais estável...&lt;br /&gt;&lt;br /&gt;Basicamente são estas as mudanças. Já fiz update e está tudo ok :-)&lt;br /&gt;&lt;br /&gt;Aconselho que façam o update.&lt;br /&gt;&lt;br /&gt;Agora com estas melhorias todas, e sem ter aplicaçoes a comer ram para nos proteger de virus e afins.. será que é desta que a MS se vai sentir com o VISTA (sim, porque o vista é uma desilusão)? Quem sabe é desta que tudo migra para GNU/Linux ao ver a sua potencialidade e o baixo (nulo) preço!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-8064216320039868144?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/8064216320039868144/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=8064216320039868144' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/8064216320039868144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/8064216320039868144'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/04/ubuntu-704-ser-desta-que-ms-se-vai.html' title='Ubuntu 7.04 - Será desta que a MS se vai sentir?'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-3652928345857409013</id><published>2007-04-13T19:00:00.000Z</published><updated>2007-04-13T19:11:32.321Z</updated><title type='text'>Home Backup Script (Python)</title><content type='html'>Como prometi, venho aqui colocar uma nova aplicação.&lt;br /&gt;Na altura precisava de algo que me fizesse um backup da homedir e uploadasse para um servidor o backup pus-me ao trabalho de fazer um script que o fizesse.&lt;br /&gt;&lt;br /&gt;Consegui chegar à versão 0.3 desse script e comecei a fazer uma 0.4, quem sabe se daqui a uns tempos não continuo a 0.4&lt;br /&gt;&lt;br /&gt;Ah e este script até faz logs e utiliza um ficheiro para as configurações :-P&lt;br /&gt;&lt;br /&gt;----------------------------------------&lt;br /&gt;&lt;pre&gt;from ftplib import FTP&lt;br /&gt;import time, os, sys, ConfigParser&lt;br /&gt;&lt;br /&gt;# Home Backup variabels, don't change this&lt;br /&gt;home = os.environ["HOME"]&lt;br /&gt;config = ConfigParser.ConfigParser()&lt;br /&gt;config.read(home + "/homebackup/homebackup.conf")&lt;br /&gt;hostname = config.get("FTP","hostname")&lt;br /&gt;username = config.get("FTP","username")&lt;br /&gt;passwd = config.get("FTP","passwd")&lt;br /&gt;date = time.strftime("%d-%m-%Y-%H%M%S")&lt;br /&gt;user = os.getenv('USER')&lt;br /&gt;bkp = user + "-backup-" + date + ".tar"&lt;br /&gt;log = open(home + "/homebackup/homebackup.log","a")&lt;br /&gt;version = "0.3"&lt;br /&gt;&lt;br /&gt;log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Home Backup Script started.\n")&lt;br /&gt;print "\t\t\tHome Backup Script v" + version + "\t\t\t"&lt;br /&gt;print "Where I will put the backup file?"&lt;br /&gt;print "1. In this directory"&lt;br /&gt;print "2. In a remote machine (You need FTP access)"&lt;br /&gt;option = raw_input("=&gt; ")&lt;br /&gt;&lt;br /&gt;def backup():&lt;br /&gt;       print "\n" + time.strftime("[%H:%M:%S] ") + "Creating a backup from " + home + " to " + bkp + " ..."&lt;br /&gt;       os.system("tar --absolute-names -cf " + bkp + " " + home)&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Creating a backup from " + home + " to " + bkp + " ...\n")&lt;br /&gt;       print time.strftime("[%H:%M:%S] ") + "Compressing backup ..."&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Compressing backup ...\n")&lt;br /&gt;       os.system("gzip -9 " + bkp)&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + 'Backup created: ' + bkp + ".gz\n")&lt;br /&gt;       print time.strftime("[%H:%M:%S] ") + 'Backup created: ' + bkp + ".gz\n"&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Home Backup Script closed.\n\n")&lt;br /&gt;       log.close()&lt;br /&gt;def backup_ftp():&lt;br /&gt;       print "\n" + time.strftime("[%H:%M:%S] ") + "Creating a backup from " + home + " to " + bkp + " ..."&lt;br /&gt;       os.system("tar --absolute-names -cf " + bkp + " " + home)&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Creating a backup from " + home + " to " + bkp + " ...\n")&lt;br /&gt;       print time.strftime("[%H:%M:%S] ") + "Compressing backup ..."&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Compressing backup ...\n")&lt;br /&gt;       os.system("gzip -9 " + bkp)&lt;br /&gt; bkpfinal = bkp + ".gz"&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + 'Backup created: ' + bkp + ".gz\n")&lt;br /&gt;       print time.strftime("[%H:%M:%S] ") + 'Backup created: ' + bkp + ".gz"&lt;br /&gt; log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Now I will upload backup to " + hostname + " ...\n")&lt;br /&gt; print time.strftime("[%H:%M:%S] ") + "Now I will upload backup to " + hostname + " ..."&lt;br /&gt; try:&lt;br /&gt;  ftp = FTP(hostname)&lt;br /&gt; except:&lt;br /&gt;  log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Invalid hostname.\n")&lt;br /&gt;  print time.strftime("[%H:%M:%S] ") + "Invalid hostname."&lt;br /&gt;               log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Upload failed.\n")&lt;br /&gt;               print time.strftime("[%H:%M:%S] ") + "Upload failed.\n"&lt;br /&gt;  log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Home Backup Script closed.\n\n")&lt;br /&gt;  sys.exit()&lt;br /&gt; try:&lt;br /&gt;  ftp.login(username, passwd)&lt;br /&gt; except:&lt;br /&gt;  log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Username or Password invalid.\n")&lt;br /&gt;  print time.strftime("[%H:%M:%S] ") + "Username or Password invalid."&lt;br /&gt;  log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Upload failed.\n")&lt;br /&gt;  print time.strftime("[%H:%M:%S] ") + "Upload failed.\n"&lt;br /&gt;  log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Home Backup Script closed.\n\n")&lt;br /&gt;  sys.exit()&lt;br /&gt; filebkp = open(bkpfinal,'rb')&lt;br /&gt; uploadcmd = "STOR " + bkpfinal&lt;br /&gt;       log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Uploading ...\n")&lt;br /&gt;       print time.strftime("[%H:%M:%S] ") + "Uploading ..."&lt;br /&gt; ftp.storbinary(uploadcmd, filebkp)&lt;br /&gt; localsize=os.path.getsize(bkpfinal)&lt;br /&gt; remotesize=ftp.size(bkpfinal)&lt;br /&gt; if localsize != remotesize:&lt;br /&gt;  log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Uploaded file is corrupted.\n")&lt;br /&gt;               print time.strftime("[%H:%M:%S] ") + "Uploaded file is corrupted.\n"&lt;br /&gt;               log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Upload failed.\n")&lt;br /&gt;               print time.strftime("[%H:%M:%S] ") + "Upload failed.\n"&lt;br /&gt;               log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Home Backup Script closed.\n\n")&lt;br /&gt; elif localsize == remotesize:&lt;br /&gt;        log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Upload completed.\n")&lt;br /&gt;        print time.strftime("[%H:%M:%S] ") + "Upload completed.\n"&lt;br /&gt;  log.write(time.strftime("[%d-%m-%Y %H:%M:%S] ") + "Home Backup Script closed.\n\n")&lt;br /&gt; filebkp.close()&lt;br /&gt; ftp.quit()&lt;br /&gt;       log.close()&lt;br /&gt;&lt;br /&gt;if option == "1":&lt;br /&gt;       backup()   &lt;br /&gt;elif option == "2":&lt;br /&gt;       backup_ftp()&lt;br /&gt;elif option != "1":&lt;br /&gt; print "Unknown option."&lt;br /&gt;elif option != "2":&lt;br /&gt; print "Unknown option."&lt;br /&gt;&lt;/pre&gt;Download completo pode ser feito aqui: &lt;a href="http://hydrus.homeunix.net/~amg/homebackup/homebackup-0.3.tar.gz" target="_blank"&gt;http://hydrus.homeunix.net/~amg/homebackup/homebackup-0.3.tar.gz&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-3652928345857409013?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/3652928345857409013/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=3652928345857409013' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/3652928345857409013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/3652928345857409013'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/04/home-backup-script-python.html' title='Home Backup Script (Python)'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-7390928154694434644</id><published>2007-04-12T23:22:00.000Z</published><updated>2007-04-12T23:24:14.439Z</updated><title type='text'>Desculpem o tempo sem posts</title><content type='html'>Olá irmãos,&lt;br /&gt;Para os que lêem (provavelmente ninguém ou quase ninguém) o meu blog, desculpem estar sem fazer posts uns tempinhos... é que tive várias coisas para fazer e esqueci-me disto. Esta fim de semana prometo que ponho uma nova aplicação.&lt;br /&gt;By the way, ando a voltar para Python :-P por isso daqui a uns tempos novas aplicações de 2007 (já não faço aplicações em Python desde 2006, eheheh).&lt;br /&gt;&lt;br /&gt;Bem, é isso.&lt;br /&gt;&lt;br /&gt;Cumprimentos a todos(as)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-7390928154694434644?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/7390928154694434644/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=7390928154694434644' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/7390928154694434644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/7390928154694434644'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/04/desculpem-o-tempo-sem-posts.html' title='Desculpem o tempo sem posts'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-2144127066500485107</id><published>2007-04-05T22:15:00.000Z</published><updated>2007-04-05T22:39:24.144Z</updated><title type='text'>Voltei ao Loonix!</title><content type='html'>Olá irmãos, estou de volta ao Loonix.&lt;br /&gt;Após uns tempos sem este a "doença" voltou. Sou de novo o paranóico que era antigamente. Viva ao Loonix!&lt;br /&gt;Vim para Ubuntu porque agora tenho um laptop (sim, eu com laptop, linux lá e redes wireless é um perigo-- risos). Pus esta distribuição para não perder muito tempo com configurações e por ser mais indicada para portáteis. Para além disso tenho um sticker do Ubuntu na parte de trás do portátil para quando alguém me vir na rua com o portátil dizer: Uhh grande geek!&lt;br /&gt;Deixando de mimos, eu como tenho uma placa gráfica de 128mb e 1gb de ram coloquei o Beryl+AIGLX para ver como ficava... e está mesmo excelente. O VISTA comia-me 50% de RAM (50% de 1gb = 500mb), o portátil aquecia um bocado e o disco rigido fazia um apito muito baixo e agudo. Agora com Ubuntu aqui já é outra coisa :-P&lt;br /&gt;Uma das dificuldades que tive foi a resolução... como é Widescreen e a placa é Intel deu logo barraca. Mas felizmente no Feisty Fawn este problema já vem resolvido.&lt;br /&gt;Para resolver este problema utilizei o 915resolution (podem ver o meu tutorial aqui: http://www.tux-linux.net/view.php?IDART=331).&lt;br /&gt;Não tenho postado ultimamente porque tenho andado a ver LOST (hay, ja estou quase a apanhar a ABC e depois ver os lançamentos semanais).&lt;br /&gt;Tenho andando também a ler a Revista Portuguesa de Linux (http://www.revista-linux.com/), lançada bimestralmente (de dois em dois meses) e que aceitam tutoriais por parte dos leitores. Para não falar que é distribuída livremente (em PDF, nice, estamos a salvar o ambiente, um problema que me preocupa seriamente).&lt;br /&gt;Estou quase de volta à escola, mas são só mais 2 meses sensivelmente e depois tenho férias de verão :-)))&lt;br /&gt;Provavlemente este fim-de-semana ainda coloco mais alguma aplicação minha e explicar como procedi para a sua elaboração.&lt;br /&gt;&lt;br /&gt;Cumprimentos geekianos a todos os geeks(as)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-2144127066500485107?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/2144127066500485107/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=2144127066500485107' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/2144127066500485107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/2144127066500485107'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/04/voltei-ao-loonix.html' title='Voltei ao Loonix!'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-8627296167751886438</id><published>2007-03-24T16:25:00.001Z</published><updated>2007-03-24T16:25:02.350Z</updated><title type='text'>Gerador de PINS (Python)</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Olá irmãos,&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Hoje vou postar aqui sobre este script que fiz na altura para me gerar um PIN do cartão de multibanco, esta foi uma das aplicações em que pensei enquanto ia dormir, e aí levantei-me da cama e vim programar.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Tive apenas duas dificuldades: - Gerar valores aleatórios e fazer com que os números tivessem zeros antes (ex: 0001, 0199, 0012).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Primeiro comecei por ir ao Google e o Python já tem uma biblioteca que o faz (chamada &lt;strong&gt;random&lt;/strong&gt;), bastou fazer um &lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:113px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;strong&gt;Import random&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;para a poder utilizar.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A ideia geral para o script funcionar foi ele primeiro gerar os números de 0000 ate 9999, escrever num ficheiro. Após escrito ele irá abrir novamente o ficheiro para apenas leitura e aí com a biblioteca &lt;strong&gt;random&lt;/strong&gt; pegar num valor aleatório, por exemplo: 6273.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Acima falei de um problema que tive, que foi nos zeros. Andei em vários sítios à procura de como o fazer (pois 000 como inteiro ficava apenas 0). É aí que me vem a ideia: Bem, se não preciso de inteiros, porque não utilizar estes valores como string? Aí já não haveria problemas, e assim o fiz.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Mas agora levanta-se outra questão: - Quando é que o script vai saber em que altura será 000 ou 0 ou 00? É aí que atribuo a três variáveis vários zeros como string:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:85px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 61px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;strong&gt;val1 = '000'&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;val2 = '00'&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;val3 = '0'&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;										&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Após esta atribuição é altura de indicar ao script quando usar o &lt;strong&gt;val1&lt;/strong&gt;, &lt;strong&gt;val2&lt;/strong&gt; e &lt;strong&gt;val3&lt;/strong&gt;. Para isto recorri ao while, visto enquanto x (variável contador que irá de 0 até 9999) for menor que 10 terá o val1 (três zeros), menor que 100 terá val2, e menor que 1000 terá val3.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:311px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;&lt;strong&gt;while x &amp;lt; 10:&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(&lt;strong&gt;val1&lt;/strong&gt;) + str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    &lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;&lt;strong&gt;while x &amp;lt; 100:&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(&lt;strong&gt;val2&lt;/strong&gt;) + str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;&lt;strong&gt;while x &amp;lt; 1000:&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(&lt;strong&gt;val3&lt;/strong&gt;) + str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    &lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;while x &amp;lt; 10000:&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Se repararem na altura de escrever no ficheiro existe um &lt;strong&gt;&lt;em&gt;str(val1) + str(x)&lt;/em&gt;&lt;/strong&gt;, e isto porquê? Bem, segundo se aprende no início da programação apenas se pode fazer operações com dados do mesmo tipo (inteiro com inteiro, string com string), e como x é um dado do tipo inteiro, tenho de na altura o "converter" para string para o poder utilizar com a respectiva string (val1, val2, val3).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Temos os dados escritos no ficheiro &lt;strong&gt;gerado.txt&lt;/strong&gt;, agora teremos de o abrir novamente como &lt;span style='text-decoration:underline'&gt;leitura&lt;/span&gt;. Após abrirmos como leitura teremos de separar os seus dados numa lista, para isto recorri ao &lt;strong&gt;split()&lt;/strong&gt;&lt;br /&gt;			&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:217px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 19px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;&lt;strong&gt;gerado = ficheiro.read().split()&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Agora já temos uma variável (&lt;strong&gt;gerado&lt;/strong&gt;) com os valores gerados (0000 ate 9999) todos separados como lista.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Falta escolher um valor aleatório para aparecer no ecrã, para resolver isto usei o &lt;strong&gt;random.sample()&lt;/strong&gt;, passando como argumento a string com o conteúdo (&lt;strong&gt;gerado&lt;/strong&gt;) e quantos valores queria (&lt;strong&gt;1&lt;/strong&gt;). Após escolher o valor aleatório é armazenado numa variável (&lt;strong&gt;gerados&lt;/strong&gt;) e é mostrado no ecrã o valor:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:274px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;&lt;strong&gt;gerados = random.sample(gerado, 1)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;&lt;strong&gt;print "PIN: " + str(gerados).strip("[' ']")&lt;/strong&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Recorri ao &lt;strong&gt;strip()&lt;/strong&gt; para remover o [' '] que iria aparecer nos números gerados, visto estar a trabalhar com uma lista.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Aqui se segue o código completo:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:387px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;#!/usr/bin/env python&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;# Mon Oct 23 22:46:00 2006 AZOST&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;# Gerador de PINS&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;# (c) 2006 - Alexandre Garcia &amp;lt;alexmgarcia@tux-linux.net&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;import random&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;ficheiro = open('gerado.txt','w')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;val1 = '000'&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;val2 = '00'&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;val3 = '0'&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;x = 0&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;while x &amp;lt; 10:&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(val1) + str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    &lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;while x &amp;lt; 100:&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(val2) + str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;while x &amp;lt; 1000:&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(val3) + str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    &lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;while x &amp;lt; 10000:&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro = open('gerado.txt','a')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.write(str(x) + " ")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;    x = x + 1&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;ficheiro = open('gerado.txt','r')&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;gerado = ficheiro.read().split()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;gerados = random.sample(gerado, 1)&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;print "PIN: " + str(gerados).strip("[' ']")&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='font-family:Calibri; font-size:11pt'&gt;ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-8627296167751886438?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/8627296167751886438/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=8627296167751886438' title='11 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/8627296167751886438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/8627296167751886438'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/03/gerador-de-pins-python.html' title='Gerador de PINS (Python)'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-1703426602511841583</id><published>2007-03-23T13:17:00.000Z</published><updated>2007-03-23T13:16:40.202Z</updated><title type='text'>Conversor de Binário para Decimal (Pascal)</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;Sim, Pascal! Há gente que se questiona: Ainda dão isso?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Pois é, esta linguagem do século passado e ultrapassada a nível de "novidades" ainda é utilizada no ensino para apresentar programação aos novos alunos e ambientá-los com bases de programação.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Eu, felizmente (ou infelizmente?) estou a dar Pascal em Bases de Programação e acho-o simples e bom para aprender a programar.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Este foi um trabalho de casa que foi pedido, mas penso que era para utilizar operações com strings, só que faço as coisas sempre por outro método e utilizei foi o método tradicional de converter de binário para decimal: 010 = 0 * 2 ^ 0 + 1 * 2 ^ 1 + 0 * 2 ^ 2 = 2&lt;br /&gt;&lt;/p&gt;&lt;p&gt;O código é estranho, até usei uns ifs que não sei porquê, mas resolveram os problemas que tinha (caso o ultimo numero fosse 0 acrescentava um valor: 010 ficava 3, 0100 ficava 5, mas já 011 ficava 3 e 0101 ficava 5):&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table style="BORDER-COLLAPSE: collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="WIDTH: 292px"&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="BORDER-RIGHT: black 0.5pt solid; PADDING-RIGHT: 7px; BORDER-TOP: black 0.5pt solid; PADDING-LEFT: 7px; BORDER-LEFT: black 0.5pt solid; BORDER-BOTTOM: black 0.5pt solid"&gt;&lt;p&gt;Program bin_dec;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;function expoente(x,y:longint):longint;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;var&lt;br /&gt;&lt;/p&gt;&lt;p&gt;z,n:longint;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;begin&lt;br /&gt;&lt;/p&gt;&lt;p&gt;n := x;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;for z := 2 to y do&lt;br /&gt;&lt;/p&gt;&lt;p&gt;n := n * x;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;expoente := n;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;end;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;var&lt;br /&gt;&lt;/p&gt;&lt;p&gt;num, aux, multi, digito, valor, soma:longint;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;exp:integer;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;begin&lt;br /&gt;&lt;/p&gt;&lt;p&gt;write('Num (bin): ');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;readln(num);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;multi := 10;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;aux := num;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;exp := 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;soma := 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;while (aux &amp;lt;&amp;gt; 0) do&lt;br /&gt;&lt;/p&gt;&lt;p&gt;begin&lt;br /&gt;&lt;/p&gt;&lt;p&gt;digito := aux mod 10;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;aux := aux div 10;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;multi := multi * 10;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;if (exp = 0) and (digito = 1) then&lt;br /&gt;&lt;/p&gt;&lt;p&gt;begin&lt;br /&gt;&lt;/p&gt;&lt;p&gt;soma := 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;exp := 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;end&lt;br /&gt;&lt;/p&gt;&lt;p&gt;else&lt;br /&gt;&lt;/p&gt;&lt;p&gt;begin&lt;br /&gt;&lt;/p&gt;&lt;p&gt;valor := expoente(2,exp);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;exp := exp + 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;soma := soma + digito * valor;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;end;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;end;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;writeln(num,'(bin) = ',soma,'(dec)');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;readln;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;end.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-1703426602511841583?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/1703426602511841583/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=1703426602511841583' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/1703426602511841583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/1703426602511841583'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/03/conversor-de-binrio-para-decimal-pascal.html' title='Conversor de Binário para Decimal (Pascal)'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-532304217964479500</id><published>2007-03-23T00:35:00.001Z</published><updated>2007-03-23T00:35:43.213Z</updated><title type='text'>Gerador de Galeria em HTML (Python)</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Este vai ser o meu primeiro post sobre aplicações escritas por mim.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;O que é que então isto faz?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;É um script que na altura em que usava Linux fiz em Python para gerar uma galeria de fotos em html a partir de um directório com fotos, pois precisava de o fazer porque tinha um directório com várias fotos e "colocar" uma foto de cada vez em código html é trabalhoso, por isso aproveitei uma biblioteca de Python e pus mãos à obra.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A minha primeira dificuldade foi  certamente criar uma thumbnail da imagem em questão, por isso dei uma visita ao Google (&lt;a href='http://www.google.pt'&gt;http://www.google.pt&lt;/a&gt;) e rapidamente encontrei o que queria: Python Imaging Library (&lt;a href='http://www.pythonware.com/products/pil/'&gt;http://www.pythonware.com/products/pil/&lt;/a&gt;). É óbvio que não sabia como trabalhar com este, então disse a mim mesmo: RTFM, fi-lo e em questão de minutos já sabia minimamente o que queria.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Primeiro de tudo tive que indicar que imagem abrir, para isto atribuí a uma variável o resultado de &lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:163px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 24px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;strong&gt;Image.open(imagem)&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;Em que imagem será uma variável com o caminho da foto/ficheiro.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Também declarei outra variável: THUMBSIZE, em que atribuí a esta a largura e altura da thumbnail (230x153), mais propriamente o valor 230,153. Após isto utilizei a função &lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:80px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 17px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;strong&gt;Thumbnail&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;da biblioteca &lt;strong&gt;&lt;em&gt;PIL&lt;/em&gt;&lt;/strong&gt; (Python Imaging Library) para a criar, que tem a seguinte sintaxe: &lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:434px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 41px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;Img (esta foi uma variável criada por mim em que terá como valor o resultado de image.open(imagem) – &lt;strong&gt;img.thumbnail(THUMBSIZE)&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;OK. Já tenho a thumbnail da imagem, agora tenho que a salvar… mas há um problema: Imaginemos que o utilizador do script já o correu anteriormente, mas agora acrescentou mais imagens, só que as thumbnails das imagens já existentes encontram-se no directório… como fazer para não criar uma thumbnail de uma thumbnail?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;É simples, basta utilizar um if para verificar se as primeiras 5 letras da variável imagem são constituídas pela palavra thumb &lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:188px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr style='height: 17px'&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;strong&gt;If imagem[0:5] != "thumb":&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Após esta verificação, caso o resultado seja Verdadeiro e não Falso, o script vai executar o que vem a seguir a esta condição:&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:274px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;strong&gt;Img.save('thumb.' + str(imagem), "JPEG")&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;Ou seja, o ficheiro ficará: &lt;strong&gt;thumb.Foto1.JPG&lt;/strong&gt; note-se aqui o uso da função &lt;strong&gt;str()&lt;/strong&gt; para converter o valor de &lt;strong&gt;imagem&lt;/strong&gt; para uma string (cadeia de caracteres alfanuméricos). Basicamente a função &lt;strong&gt;save&lt;/strong&gt; do &lt;strong&gt;&lt;em&gt;PIL&lt;/em&gt;&lt;/strong&gt; é para salvar num ficheiro as alterações feitas à imagem.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;E pronto, temos o problema de criar as thumbnails resolvido.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Aqui abaixo segue-se o código completo do script.&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:599px'&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-left: 7px; padding-right: 7px; border-top:  solid black 0.5pt; border-left:  solid black 0.5pt; border-bottom:  solid black 0.5pt; border-right:  solid black 0.5pt'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;#!/usr/bin/env python&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;# Alto Circuito Galeria&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;# Por Alexandre Garcia (c) 2006&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;# Wed, 06 Dec 2006&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;import os, time, string, Image, glob&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;THUMBSIZE = 230, 153&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;PATH = "/home/amg/AC_fotos/" # Alterar para o directorio das fotos&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;HTML = PATH + "index.html"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;TITLE = "Alto Circuito Lan Party I - Fotos" # Alterar para o titulo do site&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;ficheiro = open(HTML,"w")&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;def converter():&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    os.chdir(PATH)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        for imagem in glob.glob("*.JPG"):&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                img = Image.open(imagem)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                img.thumbnail(THUMBSIZE)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        if imagem[0:5] != "thumb":&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                    img.save('thumb.' + str(imagem), "JPEG")&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;def gerar():&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    os.chdir(PATH)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    imgthumb = glob.glob("thumb.*")&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    ficheiro.write("&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;" + TITLE + "&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;font size=\"4\"&amp;gt;&amp;lt;b&amp;gt;&amp;lt;center&amp;gt;" + TITLE + "&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;")&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    for thumb in imgthumb:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        thumb = '&amp;lt;a href=\"' + str(thumb).strip('thumb.') + '\"&amp;gt;' + '&amp;lt;img src=\"' + thumb + '\"&amp;gt;' + '&amp;lt;/img&amp;gt;' + '&amp;lt;/a&amp;gt;' + '  '&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        ficheiro.write(thumb)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    ficheiro.write("&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;font size=\"2\"&amp;gt;Actualizado em " + time.strftime("%d-%m-%Y %H:%M:%S") + "&amp;lt;br&amp;gt;Galeria Alto Circuito - Script feito por &amp;lt;a href=\"mailto:alexmgarcia@tux-linux.net\" style=\"text-decoration:none\"&amp;gt;&amp;lt;b&amp;gt;Alexandre Garcia&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt; (c) 2006&amp;lt;/font&amp;gt;&amp;lt;/center&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;")&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    ficheiro.close()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;converter()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;gerar()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;Haja saúde para todos!&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-532304217964479500?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/532304217964479500/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=532304217964479500' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/532304217964479500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/532304217964479500'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/03/gerador-de-galeria-em-html-python.html' title='Gerador de Galeria em HTML (Python)'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3672631960858169580.post-814390906983637291</id><published>2007-03-22T00:06:00.001Z</published><updated>2007-03-22T00:06:13.688Z</updated><title type='text'>Breve apresentação</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;Bem, decidi criar este espaço para expor as minhas ideias sobre Informática, mais propriamente sobre Programação, claro que não falarei apenas de Programação, farei também algumas reviews de software e colocarei tutoriais da minha autoria.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Eu não tenho jeito para escrever textos longos, apenas o faço em Filosofia, e há quem me chame "cromo" por o fazer.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Whatever… que posso dizer de mim?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Sou um estudante de Informática, tenho 15 anos, frequento a Escola Secundária das Laranjeiras (São Miguel, Açores), e os objectivos que tenho de vida é entrar na Universidade e tirar Engenharia de Redes e Sistemas Informáticos, visto ter uma "paixão" por administração de redes informáticas e segurança informática. Para além disso ando a começar a ficar viciado em LOST.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Tenho alguma (pouca) experiência com redes, a que configurei até agora foi a minha de casa, Servidor com FreeBSD + Clientes com Windows (mas também já houve com GNU/Linux), e configurei também a rede da casa do Uchiha.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;E é isso, poderei não postar com muita frequência por causa da escola e porque nas férias vou ter muito código para escrever e neurónios para queimar/desenvolver.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3672631960858169580-814390906983637291?l=codetime.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codetime.blogspot.com/feeds/814390906983637291/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3672631960858169580&amp;postID=814390906983637291' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/814390906983637291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3672631960858169580/posts/default/814390906983637291'/><link rel='alternate' type='text/html' href='http://codetime.blogspot.com/2007/03/breve-apresentao.html' title='Breve apresentação'/><author><name>Corvus</name><uri>http://www.blogger.com/profile/10945808358167198214</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://img147.imageshack.us/img147/9305/gfdgfgvcad0.jpg'/></author><thr:total>3</thr:total></entry></feed>
