quinta-feira, 30 de julho de 2009

MXML + ActionScript (Flex)

Continuando na bagunça do Flex, agora adicionando um pouco de action script na brincadeira. Além disso, adiciona-se mais alguns widgets... aos fontes:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="init();">
<mx:Script>
<![CDATA[
//ActionScript statements
public function init():void {
btn.addEventListener(flash.events.MouseEvent.CLICK,
clicar);
btn2.addEventListener(flash.events.MouseEvent.CLICK,
clicar);
}
public function clicar(event:flash.events.MouseEvent):void {
var bb:Button = event.target as Button;
var aux:String = txt.text;
txt.text = bb.label;
bb.label = aux;
}
]]>
</mx:Script>

<mx:Panel title="Modelo 001"
width="100%"
height="100%"
>

<mx:HBox width="100%"
height="100%"
>
<!-- conteúdo -->
<mx:Text id="txt"
text="hello"
/>
</mx:HBox>

<mx:ControlBar
direction="horizontal"
>
<!-- barra de controles -->
<mx:Button label="!"
id="btn2"
/>
<mx:Button label="world"
id="btn"
/>
</mx:ControlBar>
</mx:Panel>
</mx:Application>


É bem bobo, mas é só um começo... um screenshot:



Documentação: http://livedocs.adobe.com/

(e dalhe mais pygments nos códigos!)

segunda-feira, 27 de julho de 2009

Alterando Volume via linha de comando

As pessoas reclamam da linha de comando do Linux, mas até o (r)windows está aderindo a ela com o PowerShell.

É possível controlar o volume através da linha de comandos. Quem faz isso é um software chamado amixer (pra instalar, apt-get install amixer).

"Master" é o controle principal, e os outros são separados para cada coisa (microfone, por exemplo). Adaptei um script que permite aumentar e diminuir o volume:

#!/bin/bash
volsetting=`amixer sget 'Master' | grep off`
case "$1" in
mute)
amixer sset 'Master' mute
;;
unmute)
amixer sset 'Master' unmute
;;
toggle)
if [[ x"$volsetting" = x"" ]]; then
amixer sset 'Master' mute
else
amixer sset 'Master' unmute
fi
;;
increase)
amixer sset 'Master' 8%+
;;
decrease)
amixer sset 'Master' 8%-
;;
*)
echo "This is not an acceptable command!";
echo -e "Use \033[01;33mmute\033[01;00;0m, \033[01;33mincrease\033[01;00;0m or \033[01;33mdecrease\033[01;00;0m as options!";
echo;
esac


Fonte: http://www.djlosch.com/dlo/controlling-pcm-volume-in-linux-via-command-line/

(Código-fonte colorido através do Pygments (http://pygments.org/), com um "tema" chamado "friendly")

sexta-feira, 24 de julho de 2009

quinta-feira, 23 de julho de 2009

Novo xorg - problemas (e o retorno do notebook)

Meu notebook voltou da manutenção forçada de - sim, acredite - 6 meses e meio (entre vai-e-volta deu tudo isso). Como bom linuxer, instalei logo o Debian nele, com tudo novinho, pacotes atualizados (incluindo experimental, unstable e testing).

Já deu pra perceber que o boot está mais rápido e não precisa mais de gambiarras para a placa wifi funcionar (roda com driver nativo).

Mas as coisas boas pararam por aí. Assim que instalei o novo xserver-xorg (versão 7.4), comecei a ter problemas. Vamos às porcarias.

1. Nada de Ctrl+Alt+Backspace


O Ctrl+Alt+Backspace não existe mais. Alguém conseguia pressinar essas 3 teclas ao mesmo tempo sem querer. Um comentário muito interessante é o do curl, no BR-Linux:
O argumento é que alguém pode apertar as teclas acidentalmente e daí você perde tudo o que estiver aberto no X.

No entanto acho que o problema está exatamente aí. Ao invés de desenvolverem uma forma de recuperar as janelas quando o X cai preferiram desabilitar a tecla de atalho para matar o X. :(

Sabe quem faz isso? O Firefox, que abre todas as abas que estavam abertas se vc "matar" ele, com um Session Restore. Concordo que deve ser bem mais complexo que só abrir sites da Web, mas que retirar funcionalidade é chato. Imagina como vai ser a vida do cara que vai tentar tunar o Xorg? Ou vai tentar configurar um driver novo?

Para funcionar (só depois do login, no GDM não vai funcionar), é preciso executar:

setxkbmap -option terminate:ctrl_alt_bksp

A configuração que falam por aí (DontZap) não funcionou comigo.
Colocar no ~/.xinitrc também não funcionou. Tem que criar um ~/.xsessionrc
Fonte: http://www.lunix.com.au/blog/xorg_dontzap/

2. Pouco respeito ao xorg.conf


Primeiro, o arquivo de configuração não e criado automaticamente. Só que, pra configurar o driver da NVidia, ele é necessário. Ainda bem que tem um programinha que cria um genérico, pra quebrar um galho (nvidia-xconfig)
Aí vc configura o teclado nele e... não funciona. Esqueça, simplesmente não funciona. A configuração deve ser feita no HAL (Hardware Abstraction Layer), em arquivos XML. Parece feito por programador Java...

No momento, todas as minhas configurações de teclado estão no usuário (configuradas dentro do XFCE). Ou seja, teria que reconfigurar tudo para cada usuário, e ainda não funcionaria no GDM.

Sinceramente, assim que surgir uma alternativa ao Xorg, eu vou testar.


Não bastasse isso, a atualização de BIOS da HP deixa o cooler do notebook o tempo todo ligado com potência máxima. Ou seja: torra bateria e faz barulho. Sim, bando de incompetentes os funcionários da HP...

Eu mereço...

segunda-feira, 20 de julho de 2009

Wordpress - A Tentação

Instalei o Wordpress (http://br.wordpress.org/) em casa e fiz umas experiências. Até coloquei um site para os meus pais nele. Achei muito interessante.

Hoje, dou de cara com um vídeo. Fiquei tentado...



Acho que vou dar só uma olhadinha... :)

Onde vi isso: http://www.meiobit.com/meio-bit/internet/opcoes-para-trabalho-colaborativo

domingo, 19 de julho de 2009

Hello World no Flex - MXML

O que vc vai precisar:

- Adobe Flex SDK 4
Faça download em http://opensource.adobe.com/flex
Eu estou usando a versão 4.0 Beta 1 (é o ZIP com mais de 100MB)

- ant 1.7.0
O de sempre:
apt-get install ant

Descompacte a SDK em algum lugar. Eu coloquei em /opt/flex_sdk
Dentro desse diretório, descompacte também o arquivo runtimes/player/10/lnx/flashplayer.tar.gz (se usar windows, não precisa, mas vai ter que colocar ".exe" em tudo quanto é canto)

Talvez vc precise acertar as permissões (leitura para todos, execução no "bin/*" e no "runtimes/player/10/lnx/flashplayer/flashplayer". Eu precisei. (Dica para dar permissão em todos os diretórios de 1x: "find . -type d -exec chmod uog+x {} \;")

Agora é preciso criar um diretório com o código Flex. É, na verdade, apenas um "hello world" com um MXML. No Flex, a interface fica em um XML e o código é em Action Script. Particularmente, gosto de separação assim (lembra o Glade e a libglade).

Arquivo HelloWorld.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="red">
<mx:Label text="Hello world!" color="white"/>
</mx:Application>


Sim, só isso, é um hello world basicão mesmo.

Agora a parte do ant. Isso é opcional, mas permite evitar repetir muitas vezes os mesmos comandos. Para isso, criamos um arquivo chamado build.xml

Arquivo build.xml
<project name="HelloWorld" default="compile">
<property name="sdkdir" value="/opt/flex_sdk"/>
<property name="flashplayer" value="${sdkdir}/runtimes/player/10/lnx/flashplayer"/>
<property name="flex.mxmlc" value="${sdkdir}/bin/mxmlc" />
<property name="dest.dir" value="./bin" />

<target name="init">
<delete dir="${dest.dir}" />
<mkdir dir="${dest.dir}" />
</target>

<target name="compile" depends="init">
<exec executable="${flex.mxmlc}" failonerror="true">
<arg line="-output '${dest.dir}/HelloWorld.swf'"/>
<arg line="HelloWorld.mxml"/>
</exec>
</target>

<target name="run">
<exec executable="${flashplayer}" failonerror="true">
<arg line="'${dest.dir}/HelloWorld.swf'"/>
</exec>
</target>
</project>


O que temos aqui... vejamos:
"<project>" é só a identificação do projeto.
o "default" é a ação ("target") que será executado quando chamarmos o ant sem argumentos
"<property>" funciona como uma veriável que podemos usar depois, nos comandos. Assim, ficou centralizado a localização do SDK e do FlashPlayer.
"<target>" é cada uma das ações que podemos executar com o ant.

No fim, isso só vai chamar o "mxmlc" (que é o compilador) com um parâmetro indicando para criar o arquivo "HelloWorld.swf" a partir do "HelloWorld.mxml".

Para compilar, é só chamar:

ant

Para executar dentro do flash player:

ant run

Era isso.

Documentação da Adobe (incluindo o Flex):
http://livedocs.adobe.com

Fontes:
https://admin.adobe.acrobat.com/_a200985228/p77346236/ (é um screencast em pt-BR)
http://eclipse.sys-con.com/node/309503
http://www.nutrixinteractive.com/HelloWorld/srcview/source/HelloWorld.mxml.html

quarta-feira, 1 de julho de 2009

Primeira vez no FISL - parte 2

Outra palestra que assisti no FISL 10 foi sobre a e-UNI, o projeto de educação à distância da UNIRIO. Eles fizeram um "fork" do moodle, mas agora estão colocando as modificações deles de volta no projeto original... algumas coisas dá para aproveitar.

[aviso - post pode ser considerado chato e cheio de divagações. Esteja avisado]

Tudo ali é centrado numa agenda, que é a tela inicial do software. Ali estão avisos, datas de encontros e coisas assim.

Existe uma caisa de entrada de mensagens (uma pseudo-cópia do sistema de e-mail) separada para cada disciplina. Assim todo mundo tem 10 lugares diferentes para olhar (o ponto negativo) com tudo separado num contexto (o ponto positivo).

Na educação à distância, existe o problema de ninguém conhecer seus colegas. Eu fiz uma disciplina "semi-presencial" e fui descobrir colegas agora, só no fim do semestre. Não tem solução ainda. O mesmo acontece com o professor, mas pra isso tem solução: em um laboratório, eles gravam em vídeo a apresentação do professor. Assim os alunos ao menos sabe quem é o maluco que vai ensinar alguma coisa a eles... Ainda assim, o aluno se sente distante do conteúdo.

Um chat só acontece agendado no ambiente e com assunto previamente definido. Foi a forma encontrada para não perderem o foco nas discussões.

A forma de organização do conteúdo deles é diferente. O conteúdo em PDF foi separado em diversos arquivos HTML e indexados. Pra quem entende, um Ctrl+F num PDF resolve, mas e pra quem não entende?! Além disso, HTML é muito mais leve do que o PDF...

Outras coisas que eles separaram foi o Fórum. Criaram um "Tira-dúvida", que - imagino - deve funcionar como uma FAQ.

Uma coisa importante a não fazer é deixar retrabalho para o professor. Em outras palavras: acerte de primeira.

No fim, o grande diferencial é que estão tentando variar as formas de interação dos alunos, usando conteúdos multimídias. Isso é possível com uma metodologia para criação de conteúdo com esse objetivo. É o processo de "evangelizar os pedagogos", desenvolver o conteúdo em conjunto - técnico e professores - e voltados para disciplinas. Assim, o conteúdo torna-se reaproveitável.


Tudo isso pra dizer que esse deveria ser o caminho para que os professores utilizassem melhor os recursos "informáticos"... O ponto alto aqui é evangelizar os professores...


[continua...]