Ontem, a profa Roseli de Deus Lopes foi entrevistada no programa do Jô. A entrevista foi bastante interessante; para assistir basta clicar aqui.
Mostrando postagens com marcador NATE -LSI. Mostrar todas as postagens
Mostrando postagens com marcador NATE -LSI. Mostrar todas as postagens
sexta-feira, 23 de novembro de 2007
segunda-feira, 6 de agosto de 2007
Novo build "estável"
Faz um bom tempo que não publicamos no blog. Mas não menos tempo que a OLPC não lança um build estável. O último build intitulado dessa forma tinha sido o 406. Agora, a OLPC acaba de lançar o 542.
Bem, não haveria muito motivo para eu falar sobre isso. Entretanto, esse é o primeiro build "estável" com a Oficina de Desenho. Isso quer dizer, na verdade, que a Oficina passa a ser a nova atividade de desenho do Sugar. A atividade está em pleno desenvolvimento, ainda há bastante trabalho a ser feito.
Se você quiser dar uma olhada, pode simplesmente baixar o build (para rodar no seu XO ou qemu) ou usar o sugar-jhbuild e dar um checkout em nosso repositório svn. Seria melhor clonar o repositório git em dev.laptop.org, mas por algum motivo, não é possível fazer isso como usuário anônimo.
Para baixar o código do svn, faça:
svn checkout http://oficina.googlecode.com/svn/trunk/ oficina
Até a próxima!
Bem, não haveria muito motivo para eu falar sobre isso. Entretanto, esse é o primeiro build "estável" com a Oficina de Desenho. Isso quer dizer, na verdade, que a Oficina passa a ser a nova atividade de desenho do Sugar. A atividade está em pleno desenvolvimento, ainda há bastante trabalho a ser feito.
Se você quiser dar uma olhada, pode simplesmente baixar o build (para rodar no seu XO ou qemu) ou usar o sugar-jhbuild e dar um checkout em nosso repositório svn. Seria melhor clonar o repositório git em dev.laptop.org, mas por algum motivo, não é possível fazer isso como usuário anônimo.
Para baixar o código do svn, faça:
svn checkout http://oficina.googlecode.com/svn/trunk/ oficina
Até a próxima!
Marcadores:
Build,
NATE -LSI,
Oficina de Desenho
sexta-feira, 20 de julho de 2007
Oficina de Desenho
A Oficina de Desenho é um software de desenho parecido com o Paint, leve e com recursos básicos de edição e manipulação de imagens, é programada em python e utiliza biblioteca gráfica PyGTK. Ela está sendo adaptada para o XO por uma equipe do NATE.
Clique na imagem abaixo para ver um Screen-shot da Oficina rodando no Sugar:
Entre as dificuldades para programar, uma das maiores foi a baixa velocidade de processamento dos objetos do tipo lista em python. Isto trazia problemas por exemplo para a função de preenchimento que era baseada no algoritmo Flood Fill e executava muito lentamente. Então decidiu-se utilizar um binding de C para esta função, já que C tem lista mais eficiente e de complexidade de ordem menor.
A estrutura básica de widgets do gtk é uma área de desenho (gtk.DrawingArea) com dois pixmaps, um temporário que não aparece na tela e é utilizado para receber modificações e outro que é o original e mostra a situação final do desenho. Os outros widgets, como toolbox, button, frame entre outros, interagem com a área de desenho enviando sinais para desenhar retas, formas pré-definidas (shapes), aplicar efeitos na imagem etc.
Na atividade, as ferramentas Undo e Redo copiam pixmaps a cada alteração que o usuário faz no desenho. Os pixmaps guardam informações da imagem que deve ser desenhada. Tendo todos os pixmaps da imagem armazenados, a ferramenta Undo ou Redo pode desfazer ou refazer qualquer parte perdida do desenho e recuperar informações de maneira muito eficaz.
A Oficina de Desenho encontra-se em estágio final de desenvolvimento e a equipe do NATE se orgulha do nível que a atividade está alcançando.
Para mais informações, visite http://wiki.laptop.org/go/Oficina_de_Desenho.
Clique na imagem abaixo para ver um Screen-shot da Oficina rodando no Sugar:
Entre as dificuldades para programar, uma das maiores foi a baixa velocidade de processamento dos objetos do tipo lista em python. Isto trazia problemas por exemplo para a função de preenchimento que era baseada no algoritmo Flood Fill e executava muito lentamente. Então decidiu-se utilizar um binding de C para esta função, já que C tem lista mais eficiente e de complexidade de ordem menor.
A estrutura básica de widgets do gtk é uma área de desenho (gtk.DrawingArea) com dois pixmaps, um temporário que não aparece na tela e é utilizado para receber modificações e outro que é o original e mostra a situação final do desenho. Os outros widgets, como toolbox, button, frame entre outros, interagem com a área de desenho enviando sinais para desenhar retas, formas pré-definidas (shapes), aplicar efeitos na imagem etc.
Na atividade, as ferramentas Undo e Redo copiam pixmaps a cada alteração que o usuário faz no desenho. Os pixmaps guardam informações da imagem que deve ser desenhada. Tendo todos os pixmaps da imagem armazenados, a ferramenta Undo ou Redo pode desfazer ou refazer qualquer parte perdida do desenho e recuperar informações de maneira muito eficaz.
A Oficina de Desenho encontra-se em estágio final de desenvolvimento e a equipe do NATE se orgulha do nível que a atividade está alcançando.
Para mais informações, visite http://wiki.laptop.org/go/Oficina_de_Desenho.
sexta-feira, 22 de junho de 2007
Adobe Flash Player
Hoje precisei instalar o Flash Player da Adobe no XO. Fui seguir o tutorial que está na wiki do laptop e não deu certo... Por isso, to postando aqui como se instala (depois vou atualiza lá na wiki também) o Flash Player...
1) Baixar o Flash Player no link: http://linuxdownload.adobe.com/adobe-release/adobe-release-1.0-0.noarch.rpm
2) Na linha de comando, entre na pasta na qual você baixou o pacote e digite:
rpm -i nome_do_pacote
yum install flash-plugin
É isso ai...
1) Baixar o Flash Player no link: http://linuxdownload.adobe.com/adobe-release/adobe-release-1.0-0.noarch.rpm
2) Na linha de comando, entre na pasta na qual você baixou o pacote e digite:
rpm -i nome_do_pacote
yum install flash-plugin
É isso ai...
segunda-feira, 11 de junho de 2007
Acessando seu XO do seu Desktop
Bem, sei que isso não chega a ser uma novidade, mas é um problema que surgiu aqui no laboratório. Explico: os XO estão conectados em uma rede Wifi, que é isolada pelo firewall do ponto de acesso.
Nosso roteador Wifi impede a transmissão de pacotes da rede dos computadores Desktop para quem estiver na rede sem fio, funcionando efetivamente como um NAT. Funciona como a relação entre seu computador e a Internet: você enxerga o Google, mas o Google não te enxerga. Não é possível mudar essa configuração nele, então, a saída é criar um túnel entre o XO e o Desktop.
O túnel que criei aqui foi feito via ssh, disponível nas maquininhas. A idéia é conectar o XO ao Desktop via ssh e fazer esta conexão habilitar uma no sentido contrário. Bem, vamos aos comandos:
- no XO:
[olpc@xo-00-CB-A7 ~]$ ssh -R 7777:localhost:22 -l seu_usuario_no_desktop IP_DO_DESKTOP
A opção -R é responsável por fazer o serviço do túnel remoto. Em seguida, vem a configuração do túnel, que redireciona as conexões na porta 7777 para a 22 do XO. Claro, ao invés de 7777, poderia ser qualquer outra porta. A opção -l é para indicar o usuário e, depois, o IP do seu Desktop.
Um detalhe, seu usuário olpc no XO vai precisar de uma senha. Se você ainda não colocou uma, digite:
[olpc@xo-00-CB-A7 ~]$ passwd
e escolha uma senha.
- no Desktop:
alexandre@edulivre08:[~]$ ssh localhost -p 7777 -l olpc
O comando acima é equivalente a fazer uma conexão localmente na porta 7777 como usuário olpc. Voilà! É isso. Você pode acessar seu XO do seu Desktop. Obviamente, você não precisa dessa ginástica no caso de já enxergar o laptop na sua rede. Neste caso, bastaria um ssh normal.
Espero que seja útil para vocês.
Nosso roteador Wifi impede a transmissão de pacotes da rede dos computadores Desktop para quem estiver na rede sem fio, funcionando efetivamente como um NAT. Funciona como a relação entre seu computador e a Internet: você enxerga o Google, mas o Google não te enxerga. Não é possível mudar essa configuração nele, então, a saída é criar um túnel entre o XO e o Desktop.
O túnel que criei aqui foi feito via ssh, disponível nas maquininhas. A idéia é conectar o XO ao Desktop via ssh e fazer esta conexão habilitar uma no sentido contrário. Bem, vamos aos comandos:
- no XO:
[olpc@xo-00-CB-A7 ~]$ ssh -R 7777:localhost:22 -l seu_usuario_no_desktop IP_DO_DESKTOP
A opção -R é responsável por fazer o serviço do túnel remoto. Em seguida, vem a configuração do túnel, que redireciona as conexões na porta 7777 para a 22 do XO. Claro, ao invés de 7777, poderia ser qualquer outra porta. A opção -l é para indicar o usuário e, depois, o IP do seu Desktop.
Um detalhe, seu usuário olpc no XO vai precisar de uma senha. Se você ainda não colocou uma, digite:
[olpc@xo-00-CB-A7 ~]$ passwd
e escolha uma senha.
- no Desktop:
alexandre@edulivre08:[~]$ ssh localhost -p 7777 -l olpc
O comando acima é equivalente a fazer uma conexão localmente na porta 7777 como usuário olpc. Voilà! É isso. Você pode acessar seu XO do seu Desktop. Obviamente, você não precisa dessa ginástica no caso de já enxergar o laptop na sua rede. Neste caso, bastaria um ssh normal.
Espero que seja útil para vocês.
sábado, 9 de junho de 2007
Como rodar o X do seu linux (desktop) no XO
Olá
Este é mini-tutorial para "exportar" o X de uma máquina desktop linux e para "importá-lo" no XO. Testei com uma máquina rodando Ubuntu 7.04 e com XO (B1):
No desktop:
- Entre no arquivo gdm.conf ( /etc/gdm/gdm.conf ).
-Procure uma linha que contenha [xdmcp]. - Logo mais abaixo dessa linha haverá um "Enable = false". Troque para "Enable = true".
- Reinicie o serviço (no terminal fora do ambiente gráfico (Ctrl+Alt+F1): /etc/init.d/gdm restart)
No XO:
- Verifique se o XO entrou corretamente na rede sem fio. Se isso não ocorrer, você pode iniciar pelo terminal, digitando:
>> iwconfig eth0 essid NOME_DA_REDE key SENHA
>> ifconfig eth0 IP_DO_XO_NA_REDE netmask MASCARA_DA_REDE up
>> dhclient
- Depois que o XO estiver conectado na rede, basta digitar no terminal:
>> X -query IP_DO_DESKTOP :1
Está pronto! Você verá na tela do XO, o seu desktop linux rodando...
Este é mini-tutorial para "exportar" o X de uma máquina desktop linux e para "importá-lo" no XO. Testei com uma máquina rodando Ubuntu 7.04 e com XO (B1):
No desktop:
- Entre no arquivo gdm.conf ( /etc/gdm/gdm.conf ).
-Procure uma linha que contenha [xdmcp]. - Logo mais abaixo dessa linha haverá um "Enable = false". Troque para "Enable = true".
- Reinicie o serviço (no terminal fora do ambiente gráfico (Ctrl+Alt+F1): /etc/init.d/gdm restart)
No XO:
- Verifique se o XO entrou corretamente na rede sem fio. Se isso não ocorrer, você pode iniciar pelo terminal, digitando:
>> iwconfig eth0 essid NOME_DA_REDE key SENHA
>> ifconfig eth0 IP_DO_XO_NA_REDE netmask MASCARA_DA_REDE up
>> dhclient
- Depois que o XO estiver conectado na rede, basta digitar no terminal:
>> X -query IP_DO_DESKTOP :1
Está pronto! Você verá na tela do XO, o seu desktop linux rodando...
sexta-feira, 1 de junho de 2007
Editor Musical - Demo 1.0
# Update
Na grade de composição, quando você pintava a nota SI, tocava a nota DO e vice-versa. Upei uma nova versão para download.
Download em:
http://code.google.com/p/editor-musical/downloads/list
Roda em qualquer SO (com ou sem Sugar). Para mais informações leia o arquivo README.
Requisitos: python, gtk, csound (com módulo csnd.py instalado).
Obs:
Falta ainda tocar a composição criada e criar alguns eventos de som do tipo 'play' and 'stop'.
Nesta demo, é possível tocar apenas os instrumentos da primeira linha de seleção (CLARINET, ORGAN, elecGuiter (seno), Hi-hat, SIMPLE_DRUM)
Na grade de composição, quando você pintava a nota SI, tocava a nota DO e vice-versa. Upei uma nova versão para download.
Download em:
http://code.google.com/p/editor-musical/downloads/list
Roda em qualquer SO (com ou sem Sugar). Para mais informações leia o arquivo README.
Requisitos: python, gtk, csound (com módulo csnd.py instalado).
Obs:
Falta ainda tocar a composição criada e criar alguns eventos de som do tipo 'play' and 'stop'.
Nesta demo, é possível tocar apenas os instrumentos da primeira linha de seleção (CLARINET, ORGAN, elecGuiter (seno), Hi-hat, SIMPLE_DRUM)
domingo, 27 de maio de 2007
Game Jam Brasil
O Roberto Fagá fez um pequeno esboço de idéias para um Game Jam Brasil:
http://wiki.laptop.org/go/Game_Jam_Brazil
Obviamente ainda não está nada acertado se vai rolar ou não, por enquanto é só uma idéia que precisa de que pessoas se interessem e ajudem a fazer rolar mesmo. Um bom começo seria dando uma olhada no que tem nesse link e dando sugestões. Depois fazer as sugestões virarem realidade com apoio em infraestrutura, palestrantes, etc.
Outro link que queria deixar aqui é do SBIE 2007:
http://www.sbie.org.br/
O SBIE é o Simpósio Brasileiro de Informática na Educação e será realizado em São Paulo, de 28 a 30 de novembro, no Mackenzie. Está sendo organizado pelo LSI-USP e pelo Mackenzie.
A partir desses dois links me vem a cabeça: será que não rola de aproveitar o SBIE (e sua infraestrutura) para fazer um Game Jam Brasil? Acho que tem tudo a ver...
http://wiki.laptop.org/go/Game_Jam_Brazil
Obviamente ainda não está nada acertado se vai rolar ou não, por enquanto é só uma idéia que precisa de que pessoas se interessem e ajudem a fazer rolar mesmo. Um bom começo seria dando uma olhada no que tem nesse link e dando sugestões. Depois fazer as sugestões virarem realidade com apoio em infraestrutura, palestrantes, etc.
Outro link que queria deixar aqui é do SBIE 2007:
http://www.sbie.org.br/
O SBIE é o Simpósio Brasileiro de Informática na Educação e será realizado em São Paulo, de 28 a 30 de novembro, no Mackenzie. Está sendo organizado pelo LSI-USP e pelo Mackenzie.
A partir desses dois links me vem a cabeça: será que não rola de aproveitar o SBIE (e sua infraestrutura) para fazer um Game Jam Brasil? Acho que tem tudo a ver...
quinta-feira, 24 de maio de 2007
Editor Musical - SVN
Olá a todos!
Neste último mês eu e o Bruno Gola estivémos, entre outras coisas, escrevendo o Editor Musical em python.
O Bruno está cuidando da parte de áudio (CSound) e eu tenho escrito alguns módulos de Interface Gráfica.
Por enquanto, o som não roda em linux sem sugar porque o sugar tem alguns binds de CSound especiais. Se quiser ouvir alguma coisa, o recomendável é fazer testes no sugar.
O projeto (com o código) está em um repositório do google:
http://code.google.com/p/editor-musical/
Para baixar o código no seu computador, você precisa de algum cliente svn. Para linux, você pode instalar o subversion.
Em sistemas debian:
# sudo apt-get install subversion
ou
# sudo apt-get install svn
Com o cliente instalado, basta executar o comando:
# svn checkout http://editor-musical.googlecode.com/svn/trunk/ editor-musical
Assim, você baixará a versão em linux sem sugar e a versão para o sugar.
Para usar a versão em linux:
# cd editor-musical/linux/Musical\ Editor/
# python MusicalEditor.py
Para usar a versão em sugar, copie a pasta ' editor-musical/sugar/MusicalEditor.activity/ ' para a pasta do seu sistema emulado do XO ou do seu laptop XO: ' /usr/share/activities '
Reinicie o sugar (ctrl-alt-backspace) e um ícone será adicionado ao frame.
Ainda falta bastante coisa para fazer, mas já dá para ter uma boa idéia do que está acontecendo.
Semana que vem, se tudo der certo, o Editor Musical estará pronto.
Amanhã haverá reunião no NATE para discutirmos um possível módulo de comunicação para atividades compartilhadas.
Então é possível que logo o Editor Musical funcione em modo compartilhado (modo para o qual foi projetado).
Neste último mês eu e o Bruno Gola estivémos, entre outras coisas, escrevendo o Editor Musical em python.
O Bruno está cuidando da parte de áudio (CSound) e eu tenho escrito alguns módulos de Interface Gráfica.
Por enquanto, o som não roda em linux sem sugar porque o sugar tem alguns binds de CSound especiais. Se quiser ouvir alguma coisa, o recomendável é fazer testes no sugar.
O projeto (com o código) está em um repositório do google:
http://code.google.com/p/editor-musical/
Para baixar o código no seu computador, você precisa de algum cliente svn. Para linux, você pode instalar o subversion.
Em sistemas debian:
# sudo apt-get install subversion
ou
# sudo apt-get install svn
Com o cliente instalado, basta executar o comando:
# svn checkout http://editor-musical.googlecode.com/svn/trunk/ editor-musical
Assim, você baixará a versão em linux sem sugar e a versão para o sugar.
Para usar a versão em linux:
# cd editor-musical/linux/Musical\ Editor/
# python MusicalEditor.py
Para usar a versão em sugar, copie a pasta ' editor-musical/sugar/MusicalEditor.activity/ ' para a pasta do seu sistema emulado do XO ou do seu laptop XO: ' /usr/share/activities '
Reinicie o sugar (ctrl-alt-backspace) e um ícone será adicionado ao frame.
Ainda falta bastante coisa para fazer, mas já dá para ter uma boa idéia do que está acontecendo.
Semana que vem, se tudo der certo, o Editor Musical estará pronto.
Amanhã haverá reunião no NATE para discutirmos um possível módulo de comunicação para atividades compartilhadas.
Então é possível que logo o Editor Musical funcione em modo compartilhado (modo para o qual foi projetado).
segunda-feira, 21 de maio de 2007
OLPC no 60 minutes
Essa é uma reportagem que saiu em um programa chamado "60 minutes" da CBS:
http://video.google.com/videoplay?docid=-1049354722405908055&hl=en
Nela aparecem imagens da escola onde está rolando o projeto piloto em São Paulo. Também fala em "5 segundos" sobre o NATE e o trabalho desenvolvido aqui com os laptops (XO e Classmate).
http://video.google.com/videoplay?docid=-1049354722405908055&hl=en
Nela aparecem imagens da escola onde está rolando o projeto piloto em São Paulo. Também fala em "5 segundos" sobre o NATE e o trabalho desenvolvido aqui com os laptops (XO e Classmate).
sexta-feira, 18 de maio de 2007
Vários assuntos
Olá a todos os leitores do blog
É a minha 1ª postagem aqui no blog, quase ninguém deve saber quem eu sou, então vou fazer uma breve apresentação...
Sou a Nathalia, estou no 3º ano de engenharia de computação na Poli-USP e trabalho como estagiária no Nate (LSI).
Primeiramente, vou deixar aqui o link que o Alexandre passou. É uma crítica contra o projeto do OLPC de um professor do IME-USP. É bem extenso, mas vale a pena! Pelo menos para abrir a mente e ver o outro lado, os argumentos contra e tal. Ah, o link:
http://www.ime.usp.br/~vwsetzer/um-laptop-por-crianca.html
Outra coisinha para se pensar... Vai rolar um tal de Game Jam lá nos EUA, que é um evento voltado ao desenvolvimento de jogos para o XO. Olhem só:
http://hackronym.com/olpc/gamejam/
http://wiki.laptop.org/go/GameJam
Através de umas conversas iniciadas pela lista do OLPC-Brasil acabei conhecendo um tal de Roberto Fagá lá da USP-São Carlos e ele está com umas idéias bem legais. Ele entrou em contato com um pessoal de lá do Game Jam e parece que dá para rolar uns esquemas de algumas pessoas participarem aqui do Brasil usando uma web can. Tem mais alguém interessado??? Favor, manifestem-se...
Outra idéia dele foi de nós brasileiros organizarmos o mesmo evento aqui no Brasil... E ai o que acham???
Aproveitando para dar uma notícia para quem não acompanha muitos as listas de desenvolvimento de games: parece que tá quase certo que o Pygame (ahn? http://www.pygame.org ) vai ter uma versão para o XO mesmo. Já estam trabalhando nisso:
http://wiki.laptop.org/go/PyGame_Implementation
Acho que só isso por hoje!
É a minha 1ª postagem aqui no blog, quase ninguém deve saber quem eu sou, então vou fazer uma breve apresentação...
Sou a Nathalia, estou no 3º ano de engenharia de computação na Poli-USP e trabalho como estagiária no Nate (LSI).
Primeiramente, vou deixar aqui o link que o Alexandre passou. É uma crítica contra o projeto do OLPC de um professor do IME-USP. É bem extenso, mas vale a pena! Pelo menos para abrir a mente e ver o outro lado, os argumentos contra e tal. Ah, o link:
http://www.ime.usp.br/~vwsetzer
Outra coisinha para se pensar... Vai rolar um tal de Game Jam lá nos EUA, que é um evento voltado ao desenvolvimento de jogos para o XO. Olhem só:
http://hackronym.com/olpc/gamejam/
http://wiki.laptop.org/go/GameJam
Através de umas conversas iniciadas pela lista do OLPC-Brasil acabei conhecendo um tal de Roberto Fagá lá da USP-São Carlos e ele está com umas idéias bem legais. Ele entrou em contato com um pessoal de lá do Game Jam e parece que dá para rolar uns esquemas de algumas pessoas participarem aqui do Brasil usando uma web can. Tem mais alguém interessado??? Favor, manifestem-se...
Outra idéia dele foi de nós brasileiros organizarmos o mesmo evento aqui no Brasil... E ai o que acham???
Aproveitando para dar uma notícia para quem não acompanha muitos as listas de desenvolvimento de games: parece que tá quase certo que o Pygame (ahn? http://www.pygame.org ) vai ter uma versão para o XO mesmo. Já estam trabalhando nisso:
http://wiki.laptop.org/go/PyGame_Implementation
Acho que só isso por hoje!
Marcadores:
Curiosidades,
Dicas,
Game Jam Brasil,
NATE -LSI,
Pygame,
Python
terça-feira, 8 de maio de 2007
IRC Logger
Opa, e ai pessoal , está é minha primeira vez no blogger (e em qualquer blogger), e vou comentar um pouco sobre um logger que criei, em python, com ajuda do pessoal aqui do NATE para armazenar as mensagens do nosso canal no IRC (#olpc-brasil no channel FreeNode).
Bem inicialmente o Rafael Barbolo me passo um código com a base de como conectar num servidor IRC, que foi encontrado em:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/299411/index_txt
Entretando este criava um arquivo em modo texto (txt) que não é muito completo, claro. Então comecei a elaborar algumas modifições para que o arquivo salvo fosse em html.
Para isto simplesmente criei um cabeçalho, aonde é definido o nome da página ([head]), e aonde outras futuras informações podem ser alteradas (cor de fundo, imagem de fundo, e até mesmo o layout da página).
No corpo do texto ([body]), decidimos que seria muito interessante que cada usuario possuíse uma cor, para deixar mais claro quem falou. Para isso criamos um dicionário, que armazenaria uma cor, definida em uma tupla "circular", à um nick_name (apelido). Esta atribuição inicialmente era feita ao usuario efetuar o login no IRC, entretando limitava o código para que o logger SEMPRE fosse o primeiro usuário, senão o programa dava KeyError.
Isto foi facilmente resolvido com o uso da exceção KeyError (óbvio :D), onde seria mais interessante atribuir esta cor ao usuário apenas quando o mesmo enviasse mensagens e se já não houvesse Cor relacionada a este.
Também foi incluído o momento do envio da mensagens através da biblioteca time.
Após esta modificações restavam duas coisas: finalizar o código HTML ([/body][/html]) e enviar o arquivo para um servidor ftp.
Bem a parte de finalizar o código foi feita, inicialmente, através de uma exceção (ow coisinha util viu) KeyboardInterrupt, onde ao se finalizar o programa (com ctrl-C) este finalizaria o HTML terminando assim o log.
Já para enviar o arquivo utilizei como base um arquivo encontrado em:
http://snippets.dzone.com/posts/show/711
Assim ao se finalizar o programa o código era finalizado e já enviado ao servidor, porém achei mais interessante fazer estas duas ultimas ações como um outro processo, assim criei um arquivo send.py.
EDITED: Consegui automatizar a rotina de upload, melhorei o layout da pagina e as cores que são atribuidas aos usuarios, também implementei o replace para mudança dos > e < para não interpretar o html e não sumir os códigos que sejam semelhantes a HTML.
a seguir o código do ircLogger.py:
Os códigos podem ser encontrados tbm em:
br.geocities.com/olpcbrasil/ircLogger.txt e
br.geocities.com/olpcbrasil/send.txt
OBS: As tags do HTML estão entre [] pois o blogger interpreta os comandos em <>
Bem inicialmente o Rafael Barbolo me passo um código com a base de como conectar num servidor IRC, que foi encontrado em:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/299411/index_txt
Entretando este criava um arquivo em modo texto (txt) que não é muito completo, claro. Então comecei a elaborar algumas modifições para que o arquivo salvo fosse em html.
Para isto simplesmente criei um cabeçalho, aonde é definido o nome da página ([head]), e aonde outras futuras informações podem ser alteradas (cor de fundo, imagem de fundo, e até mesmo o layout da página).
No corpo do texto ([body]), decidimos que seria muito interessante que cada usuario possuíse uma cor, para deixar mais claro quem falou. Para isso criamos um dicionário, que armazenaria uma cor, definida em uma tupla "circular", à um nick_name (apelido). Esta atribuição inicialmente era feita ao usuario efetuar o login no IRC, entretando limitava o código para que o logger SEMPRE fosse o primeiro usuário, senão o programa dava KeyError.
Isto foi facilmente resolvido com o uso da exceção KeyError (óbvio :D), onde seria mais interessante atribuir esta cor ao usuário apenas quando o mesmo enviasse mensagens e se já não houvesse Cor relacionada a este.
Também foi incluído o momento do envio da mensagens através da biblioteca time.
Após esta modificações restavam duas coisas: finalizar o código HTML ([/body][/html]) e enviar o arquivo para um servidor ftp.
Bem a parte de finalizar o código foi feita, inicialmente, através de uma exceção (ow coisinha util viu) KeyboardInterrupt, onde ao se finalizar o programa (com ctrl-C) este finalizaria o HTML terminando assim o log.
Já para enviar o arquivo utilizei como base um arquivo encontrado em:
http://snippets.dzone.com/posts/show/711
Assim ao se finalizar o programa o código era finalizado e já enviado ao servidor, porém achei mais interessante fazer estas duas ultimas ações como um outro processo, assim criei um arquivo send.py.
EDITED: Consegui automatizar a rotina de upload, melhorei o layout da pagina e as cores que são atribuidas aos usuarios, também implementei o replace para mudança dos > e < para não interpretar o html e não sumir os códigos que sejam semelhantes a HTML.
a seguir o código do ircLogger.py:
import socket, string, sys, ftplib, time, datetime, os
#some user data, change as per your taste
SERVER = 'irc.freenode.net'
PORT = 6667
NICKNAME = 'logging_bot'
CHANNEL = '#olpc-brasil'
#open a socket to handle the connection
IRC = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#open a connection with the server
def irc_conn():
IRC.connect((SERVER, PORT))
#simple function to send data through the socket
def send_data(command):
IRC.send(command + '\n')
#join the channel
def join(channel):
send_data("JOIN %s" % channel)
#send login data (customizable)
def login(nickname, username='user', password = None, realname='Logger do Canal', hostname='????', servername='Server'):
send_data("USER %s %s %s %s" % (username, hostname, servername, realname))
send_data("NICK " + nickname)
#for entering more colors to the program see http://www.w3schools.com/html/html_colornames.asp
color = ('#483D8B', '#FF0000', '#00AA00', '#0000FF', '#FFD700', '#A52A2A', '#FF00FF', '#A0A0A0', '#FF8C00')
i=0 #variable to count between colors
nameC={} #declares dictionary for Colors of Nicknames
irc_conn()
login(NICKNAME)
join(CHANNEL)
def makeHeader(): #make the HTML header
filehtml = open('msg.html', 'a+') #open afile to store the messages
filerd = open ('msg.html', 'rb')
if string.find(filerd.read(),'[html]')!=0: #verify if header is alread there
filehtml.write('[html]'+'\n'+ \
'[head] \n [meta http-equiv="Content-Type" content="text/html; charset=UTF-8"]' + '\n' + \
' [title]Log do IRC olpc-brasil[/title]' + '\n' + \
'[/head]' + '\n' + \
'[body bgcolor="#F5F5F5"]' + '\n' + \
'[p][h1] Log do IRC do dia ' + str(datetime.date.today()) +' [/h1][/p]\n' )
filehtml = open('msg.html', 'a+')
makeHeader()
recTime = time.time()
while True:
nowTime = time.strftime("[ %H:%M:%S ] ", time.localtime())
if time.time() >= recTime+60*60*24: #if has passed 24 hours than the last updat
#send routine then wait
date = str(datetime.date.today())+'.html'
print 'Connecting...'
s = ftplib.FTP('ftp.br.geocities.com','olpcbrasil','****') # Connect
filehtml = open('msg.html','a+') # file opened to finish html and to send
filehtml.write('[/body]' + '[/html]') #finish html on file
filehtml.flush()
print 'Uploading...'
fileSend = open ('msg.html' , 'rb')
s.storbinary('STOR %s' % date, fileSend) # Send the file
os.system("rm msg.html") #remove the previous log
filehtml = open('msg.html','a+') #start the new log
makeHeader();
print 'Operation Finished!'
recTime = time.time()
time.sleep(5)
try:
buffer = IRC.recv(1024)
except KeyboardInterrupt:#verify the end of file (ctrl-C)
filehtml.close()
#print 'Type "python send.py" to Upload this LOG to server'
print 'Program Terminated'
sys.exit(0)
msg = string.split(buffer)
print msg
if msg [1] == 'PRIVMSG':
print 1
nick_name = msg[0][:string.find(msg[0],"!")] #if a private message is sent to you catch it
message = ' '.join(msg[3:])
if nick_name != ':freenode-connect': #cancel first msg who comes from IRC
try:
nameC[nick_name]
except KeyError:
if i==9:
i=0
nameC[nick_name]=color[i]
i+=1
textMsg=string.lstrip(message, ':')
textMsg=string.lstrip(message, ':').replace('<','<').replace('>','>') #to not interp html texts
filehtml.write('[font color='+nameC[nick_name]+']' +nowTime\
+ string.lstrip(nick_name, ':')+ ' -> [/font]' + textMsg + '[br]' + '\n' )#write to the file
filehtml.flush() #don't wait for next message, write it now!
elif msg[1] == 'QUIT':
nick_name = msg[0][:string.find(msg[0],"!")]
message = ("saiu do canal")
filehtml.write('[font color="red"]' + nowTime + string.lstrip(nick_name, ':') + \
' -> ' + message + '[/font]' + '[br]' + '\n') #write to the file
filehtml.flush() #don't wait for next message, write it now!
try:
del nameC[nick_name]
except KeyError:
print 'User dont have color because he not send any msg'
elif msg[1] == 'JOIN':
nick_name = msg[0][:string.find(msg[0],"!")]
message = ("entrou no canal")
filehtml.write('[font color="green"]' + nowTime+ string.lstrip(nick_name, ':') + \
' -> ' + message + '[/font]' + '[br]' + '\n') #write to the file
filehtml.flush() #don't wait for next message, write it now!
Os códigos podem ser encontrados tbm em:
br.geocities.com/olpcbrasil/ircLogger.txt e
br.geocities.com/olpcbrasil/send.txt
OBS: As tags do HTML estão entre [] pois o blogger interpreta os comandos em <>
quinta-feira, 19 de abril de 2007
Projeto Piloto - continuação
No dia seguinte, voltamos à Escola. Desta vez, contamos com a presença da profª. Roseli de Deus Lopes e do prof. David Cavallo. Roseli é a coordenadora geral de nosso núcleo (NATE - LSI - USP) e David é o representante da OLPC na América Latina.
Falamos com mais professores neste dia, a reunião aconteceu com dois grupos, conforme o horário de cada um. Eles começaram a dar suas idéias de como usar o laptop na proposta de aula, mas a discussão não foi dada como encerrada.
Foi nesse dia também que combinamos abrir uma "chamada de voluntários" para os alunos de 7ª e 8ª séries. Esses alunos deverão ser monitores e nós vamos passar alguns "truques" para eles poderem ajudar os professores quando nós não estivermos lá.
Falamos com mais professores neste dia, a reunião aconteceu com dois grupos, conforme o horário de cada um. Eles começaram a dar suas idéias de como usar o laptop na proposta de aula, mas a discussão não foi dada como encerrada.
Foi nesse dia também que combinamos abrir uma "chamada de voluntários" para os alunos de 7ª e 8ª séries. Esses alunos deverão ser monitores e nós vamos passar alguns "truques" para eles poderem ajudar os professores quando nós não estivermos lá.
Projeto Piloto
Essa notícia deveria ter sido postada antes, mas antes tarde do que nunca, sabe como é...
No dia 9 de abril, uma equipe de pesquisadores e engenheiros da USP (da qual faço parte, é claro) esteve na EMEF Ernani Silva Bruno para mais uma reunião com os professores. A novidade foi levarmos as máquinas para eles conhecerem. Eram 10 XO B2, se não me engano.
Os professores experimentaram a máquina livremente, e pareceram gostar das possibilidades.
Nesse dia, os técnicos da PRODAM deram uma chegada na escola para configurar a rede. O acesso à Internet deve ser feito com um XO ligado à rede local e conectado aos outros pela interface Mesh. O pessoal da TV Digital aqui da USP toma conta disso, mas estamos trabalhando... o esquema ainda não está totalmente afinado.
No dia 9 de abril, uma equipe de pesquisadores e engenheiros da USP (da qual faço parte, é claro) esteve na EMEF Ernani Silva Bruno para mais uma reunião com os professores. A novidade foi levarmos as máquinas para eles conhecerem. Eram 10 XO B2, se não me engano.
Os professores experimentaram a máquina livremente, e pareceram gostar das possibilidades.
Nesse dia, os técnicos da PRODAM deram uma chegada na escola para configurar a rede. O acesso à Internet deve ser feito com um XO ligado à rede local e conectado aos outros pela interface Mesh. O pessoal da TV Digital aqui da USP toma conta disso, mas estamos trabalhando... o esquema ainda não está totalmente afinado.
segunda-feira, 2 de abril de 2007
Links Interessantes
Hoje o Jecel Mattos de Assumpcao Jr da Merlintec Computadores e que posta muito nas mailing lists da OLPC visitou o LSI nos oferecendo ajuda principalmente com squeak e smalltalk.
Muito Obrigado, Jecel!
Ele nos deixou um link para uma wiki que criou:
http://www.merlintec.com:8080/laptop
Lá, está reunida por exemplo a lista completa de blogs brasileiros do projeto OLPC.
Vale a pena conferir!
Estou postando também outro link:
http://digitalmediauniverse.blogspot.com/
É o blog do Américo Damasceno Jr. ligado ao Digital Media Universe (http://www.dmu.com/). Como ele mesmo disse, lá é onde rolam as fofocas e novidades do projeto.
Muito Obrigado, Jecel!
Ele nos deixou um link para uma wiki que criou:
http://www.merlintec.com:8080/laptop
Lá, está reunida por exemplo a lista completa de blogs brasileiros do projeto OLPC.
Vale a pena conferir!
Estou postando também outro link:
http://digitalmediauniverse.blogspot.com/
É o blog do Américo Damasceno Jr. ligado ao Digital Media Universe (http://www.dmu.com/). Como ele mesmo disse, lá é onde rolam as fofocas e novidades do projeto.
quinta-feira, 29 de março de 2007
Editor Musical
No próximo mês, devo trabalhar na finalização do Editor Musical para o XO.
http://wiki.laptop.org/go/Editor_Musical
O que falta:
* Reescrever pedaços do código da interface gráfica para rodar como atividade no sugar
* Começar a programar os módulos de som com o CSound
* Compartilhamento de atividade pela mesh
http://wiki.laptop.org/go/Editor_Musical
O que falta:
* Reescrever pedaços do código da interface gráfica para rodar como atividade no sugar
* Começar a programar os módulos de som com o CSound
* Compartilhamento de atividade pela mesh
Sangue novo
Até a próxima terça devemos ter gente nova trabalhando no projeto. Já entrevistei a maioria dos candidatos e eles deverão começar a por a mão na massa logo mais...
Assinar:
Postagens (Atom)