Dobrando o Mundo!
17 de Março de 2010, 14:47 - sem comentários aindaOlá a todos e sejam bem vindos ao Mind Bending!
Alegro-me por anunciar o início desse blog! Muito irão se perguntar quem sou eu, então eu postei aqui uma breve descrição de quem eu sou e o o que faço. Vou adiantar que não sou ninguém importante e eu não sou nenhum especialista, eu simplesmente vou usar esse blog para postar algumas notícias que eu ache relevante, relatar um pouco sobre meus projetos e para documentar algumas coisas interessantes que eu venha a descobrir. Geralmente irei postar sobre assuntos relacionados com FOSS e GNU/Linux, diversos códigos em Python, jogos e, esporadicamente, alguns desenhos.
Antes que alguém pergunte vou falar sobre "o que é Mind Bending". Traduzindo ao pé da letra, Mind Bending seria algo como dobrando a mente. A palavra bend em inglês tem um outros significados além de dobrar como, dar nova forma, tornar algo submisso, focar sua mente em algo e etc. Desta forma, o título seria "dobrando a mente" no sentido de:
Dobrando o Mundo! é um artigo original de Mind Bending
Dobrando o Mundo!
17 de Março de 2010, 11:47 - sem comentários aindaOlá a todos e sejam bem vindos ao Mind Bending!
Alegro-me por anunciar o início desse blog! Muito irão se perguntar quem sou eu, então eu postei aqui uma breve descrição de quem eu sou e o o que faço. Vou adiantar que não sou ninguém importante e eu não sou nenhum especialista, eu simplesmente vou usar esse blog para postar algumas notícias que eu ache relevante, relatar um pouco sobre meus projetos e para documentar algumas coisas interessantes que eu venha a descobrir. Geralmente irei postar sobre assuntos relacionados com FOSS e GNU/Linux, diversos códigos em Python, jogos e, esporadicamente, alguns desenhos.
Antes que alguém pergunte vou falar sobre "o que é Mind Bending". Traduzindo ao pé da letra, Mind Bending seria algo como dobrando a mente. A palavra bend em inglês tem um outros significados além de dobrar como, dar nova forma, tornar algo submisso, focar sua mente em algo e etc. Desta forma, o título seria "dobrando a mente" no sentido de:
Dobrando o Mundo! é um artigo original de Mind Bending
Lançamento do USBManager 1.0.0
16 de Março de 2010, 0:00 - sem comentários aindaOlá pessoal! Após um bom tempo como Release Candidate, tenho o prazer de anunciar o USBManager 1.0.0. O pessoal que acompanhou a versão 1.0-rc vai perceber que, visivelmente, poucos alterações foram feitas. A maioria das mudanças foram realizadas "debaixo do capô", para deixar o aplicativo mais estável e rápido.
Nesses meses foram reportados poucos bugs, a maioria simples e que não impactavam no funcionamento do aplicativo, com excessão do bug #423476.
Downloading e instalação
O USBManager 1.0.0 pode ser baixado aqui. Para instalar, descompacte o arquivo e execute a seguinte linha:
sudo ./setup.py install
Utilização
O USBManager pode ser utilizado através do menu Aplicações->Sistema. Alternativamente, você pode chamá-lo com o comando: usbmanager.
É possível montar e desmontar o dispositivo clicando no checkbox. Para Obter mais informações sobre um dispositivo, basta selecioná-lo e clicar no ícone de propriedade (catraca), ou simplesmente um duplo clique sobre o dispositivo. Nessa janela também é possível alterar o label do dispositivo.
A "função systemtray" pode ser usada chamando o USBManager com a seguinte linha: usbmanager --tray
Uma boa sugestão é configurar o USBManager para inicializar no system tray juntamente com o sistema operacional, desta forma ele irá monitorar todas as atividades de dispositivos USB.
Além de tudo isso, o USBManager ainda te dá a possibilidade de formatar dispositivos. Basta selecionar o dispositivo desejado e clicar na 'vassoura'.
Para ter mais possibilidades de formatação, sugerimos a instalação das ferramentas mlabel, ntfsprogs e e2label.
Melhoramentos
Visivelmente o USBManager apresenta as seguintes novas funcionalidades:
Melhor suporte para distribuições baseadas em Red Hat (como o Fedora).
Essa funcionalidade é resultado da correção do Bug #423476. Distribuições Red Hat não possui o gksudo, com isso foi criada uma rotina para pre-selecionar a função de credenciamento a ser utilizada. Atualmente a rotina busca as funções gksudo, gksu e beesu. Se sua distribuição não suporta nenhuma destas, reporte um bug aqui informando qual função de credenciamento pode ser utilizada que eu providenciarei a correção imediatamente.
Novo design da janela de análise de utilização de disco.
Agora ela possui barras coloridas para ressaltar os arquivos que mais ocupam espaço do dispositivo, além de uma disponibilizar uma macro análise do dispositivo informando, numero total de arquivos, tamanho médio de arquivo, numero total de pastas e tamanho médio de pastas.
Suporte ao formato do tipo EXT.
Agora o USBManager suporta os seguintes formatos: FAT16, FAT32, NTFS, EXT2, EXT3 e EXT4.
Desmontagem inteligente.
Agora, antes de mudar o label do dispositivo, o USBManager automaticamente desmonta o dispositivo correspondente.
Mais notificações
Algumas novas notificações como quando um dispositivo é desmontado.
As mudanças não visíveis mais importantes são descritas a baixo:
Sinais GOBjects
Todos os objetos dentro do USBManager se comunicam através de sinais, reduzindo o uso de ponteiros e trazendo mais flexibilidade ao código.
Análise sob demanda
A ferramenta da análise de disco foi modificada para escanear e analisar o conteúdo das pastas somente quando esta pasta é expandida, tornando o tempo de inicialização dessa função muito mais rápida.
Traduções cooperativas:
O USBManager agora utiliza o Rosetta, ferramenta de tradução do Lanchpad, com isso as traduções podem ser feitas pela Web, sem a necessidade de instalar nenhum programa adicional. As traduções, de tempos em tempos, incluídas dentro da base de código do USBManager automaticamente.
Mais Traduções
Além das línguas inglesas e português brasileiro, o USBManager está disponível (graças as contribuições dos usuários do Launchpad) em mais 5 línguas:
- Holandês
- Francês
- Alemão
- Russo
- Espanhol
Atualmente estão sendo feitas traduções para Tailandês (25% traduzido), Turco (84% traduzido) e Árabe (23% traduzido).
Bugs Corrigidos
Lista de correção de "Bugs leves":
- #413438 - Detalhamento do arquivo README
- #413995 - Renomear o arquivo .desktop para ser compativel com o resto do projeto
- #494026 - Erros de digitação de algumas palavras
Lista de correção de "Bugs médios:
- #414003 - Erro de codificação de arquivos
Lista de correção de "Bugs importantes":
- #423476 - Desmontar o volume resultava em falhas (para distribuições baseadas em Red Hat)
Agradecimentos
Apesar do USBManager ser desenvolvido exclusivamente por mim, tenho que agradecer a algumas pessoas pela realização desse trabalho. Deve agradecer, por exemplo, a todos que ajudaram a espalhar esse meu aplicativo pela Web e a todos que reportaram bugs e erros no meu projeto.
Um agradecimento especial ao Fabian Affolter por me ajudar a melhorar meu projeto com sugestões e por empacota-lo para o Fedora. Em breve estarei disponibilizando um pacote do USBManager para Ubuntu.
Tradução para o Árabe: Nizar Kerkeni
Tradução para o Holandês: Donkade e cumulus007
Tradução para o Francês: Guillaume Mazoyer, Nicolas Delvaux, Nizar Kerkeni, Pascal Lemazurier e Sorkin.
Tradução para o Alemão: BBO, Fabian Affolter, Fred Seidemann, Georg Engelmann e mogli.
Tradução para o Russo: Nikolay Edigaryev, Petron, Sergey Sedov e vsink.
Tradução para o Espanhol: Demuxer, Monkey, Paco Molinero, guillemsster e kaeltas.
Tradução para o Tailandês: Krit Marukawisutthigul.
Tradução para o Turco: zeugma
[Curso de Python] Correção: Estruturas For Aninhadas
8 de Março de 2010, 0:00 - sem comentários aindaAntes de prosseguir leia os artigos anteriores aqui.
Olá pessoal!! Depois de uma sumida pra conseguir lançar um dos meus projetos, estou retomando o curso. A um tempo deixei uns exercícios mas não corrigi. Logo... vamos corrigi-los!
Correção: Estruturas For Aninhadas
1. O dicionário abaixo representa uma lista de alunos (chaves) e suas notas (valores). Percorra esse dicionário e calcule a média de cada aluno imprimindo o nome do aluno seguido de sua nota.
alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]}
Esse exercício é muito divertido e simples. A grande sacada está em lembrar de usar o método items() em conjunto com o for. Vamos ver o código.
Nada muito complexo. Declaramos o dicionário com os alunos, e já vamos para o for. Nele "desempacotamos" as variáveis aluno (string) e a variável notas (lista de números). É importante notar que esse "desempacotamento" só é possível porque usamos o método items(), caso contrário só seria possível obter o nome do aluno. Depois criamos um novo for, que irá pegar cada nota dentro de notas. Esse for simplesmente soma todas notas do aluno. Depois desse for podemos dividir pelo comprimento da variável notas, assim obtemos a média!Código:alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]} for aluno,notas in alunos.items(): media = 0 for nota in notas: media += nota media = float(media) / len(notas) print \"Aluno:\",aluno print \"Média:\",media print
2. Repita o exercício 1 informando, ao final de tudo, a média da turma.
Aqui bastou adicionar uma outra variável com o nome media_turma. Nela somamos todas as médias e depois dividimos pelo número de alunos.Código:alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]} media_turma = 0 for aluno,notas in alunos.items(): media = 0 for nota in notas: media += nota media = float(media) / len(notas) media_turma += media print \"Aluno:\",aluno print \"Média:\",media print media_turma = float(media_turma)/len(alunos) print \"Media da turma:\",media_turma
3. Repita o exercício 2 informando quais alunos foram aprovados (média deve ser maior ou igual a 6).
Para resolver esse, bastou adicionar um if verificando se a nota é menor que 6 (de 0 até 5.9).Código:alunos = {'fulano':[6, 7, 5, 2], 'sicrano':[7, 8, 9, 8], 'beltrano':[10, 9, 10, 10]} media_turma = 0 for aluno,notas in alunos.items(): media = 0 for nota in notas: media += nota media = float(media) / len(notas) media_turma += media print \"Aluno:\",aluno if media < 6: print \"Média:\",media,\"(Reprovado)\" else: print \"Média:\",media print media_turma = float(media_turma)/len(alunos) print \"Media da turma:\",media_turma
Até mais...
USBManager 1.0.0 Release
5 de Março de 2010, 0:00 - sem comentários aindaHello all! After a long Release Candidate Freeze, I'm happy to announce the USBManager 1.0.0 release. Who was following the 1.0-rc version will notice that there are few visibly changes. A great part of 1.0.0 improvements are "under the hood", making the application more stable and fast.
I the past months few bugs were reported, most were simple and didn't cause any glitch in USBManager, except for bug #423476. #423476.
Downloading and Installing
The USBManager 1.0.0 version can be donwloaded here. To install, unpack it and execute the following line:
sudo ./setup.py install
Usage
USBManager can be called through the Applications Menu, in the System section. Alternatively, you can call it with the line: usbmanager.
Its possible to mount/umount the device clicking int the checkbox. To obtain more info about a certain device, just select it and click in the properties icon, or simply double click the device. In this window you can change the devices label.
The "tray feature" can be used calling USBManager with the following line: usbmanager --tray
The 'system tray' gives you the feature to mount/umount the device with only two clicks. With this feature you're able to call the main USBManager interface very quickly.
A good suggestion is put USBManager to start on the tray with the operational system, so it can monitor all your USB device activity.
Also, USBManager provide a way fast and simple way to format you USB devices. Just select the desired device and click in the format icon (broom).
In order to have more formating options, I suggest you to install the following tools: mlabel, ntfsprogs and e2label.
Improvements
Visibly the USBManager has the following improvements:
Better support for Red Hat based distributions (as Fedora).This new funcionality was resulted by the work on Bug #423476. As Red Hat based distributions does not use gksudo was created a routine to pre-select the proper command used to "become root". Actually this routine searches for the following functions: gksudo, gksu and beesu. If none of those are supported by you Linux distribution, please report a bug here, inform which graphical front-end for sudo can be used and I'll provide the correction immediately.New Disk usage window design.
The Disk Usage window now has colored bars, used to highlight the biggest files and folders. Also, a device macro analysis was added, providing and overview of the total number of files, average size of files, total number of folders and average size of folders.EXT File System formating support.
USBManager 1.0.0 supports formating for the following file systems: FAT16, FAT32, NTFS, EXT2, EXT3 e EXT4.Smart umounting.
The device is automatically umounted before changing the device label.More notifications.
Some more new notifications were added in 1.0.0. Ex: Umounted device notification.The most important non-visual improvements are highlighted below:
GOBjects SignalsAll objects inside USBManager communicate with signals, reducing the usage of pointers nad bringing more code flexibility.On demand analysis
The Disk Usage tool was modified to provide file/folder scanning and analysis only when a folder is selected. This modification was made to reduce the Disk Usage Tool startup time and making it more fast and user friendly.Community translations:
USBManager started using Rosetta, launchpad's translation tool. With this, the USBManager translations can be made trough the Web without the need to install some additional software. The translated strings are sporadicly merged into the USBManager's code.
More translations
Further on Brazilian Portuguese translation were added more 5 languages (thanks for the lanchpad community contributions):
- Dutch
- French
- German
- Russian
- Spanish
Actually, there are unfinished translations for Thai (25% translated), Turkish (84% translated) and Arabic (23% translated).
Fixed Bugs
"Minor bugs" corrections:
- #413438 - Details in the README
- #413995 - Renaming of the .desktop file
- #494026 - "Error" repeatedly spelled as "Erro"
"Average bugs" corrections:
- #414003 - Wrong script end-of-line-encoding
"Critical bugs" corrections:
- #423476 - Umounting fail
Community Thanks:
Despite I'm the only one developing USBManager, I must thank to some people in the community to help me concluding this job. I must thanks for anyone that helped me spreading my app through the Web and everyone that reported some bug or errors in this project.
A special thank to Fabian Affolter for helping me improve this project with suggestions and for packing it to Fedora.
Arabic translations: Nizar Kerkeni
Dutch translations: Donkade and cumulus007
French translations: Guillaume Mazoyer, Nicolas Delvaux, Nizar Kerkeni, Pascal Lemazurier and Sorkin.
German translations: BBO, Fabian Affolter, Fred Seidemann, Georg Engelmann and mogli.
Russian translations: Nikolay Edigaryev, Petron, Sergey Sedov and vsink.
Spanish translations: Demuxer, Monkey, Paco Molinero, guillemsster and kaeltas.
Thai translations: Krit Marukawisutthigul.
Turkish translations: zeugma