27th Apr 2008

Twitter, facebook e FISL em fotos

Olá pessoal,

Postei as fotos com toda a cobertura fotográfica que fiz do FISL 9… vocês podem acessar em http://www.flickr.com/photos/themoises/

Ah, novidade ! Criei minha conta no Twitter, e de lá farei pequenas coberturas do meu dia a dia…
Tamém criei minha conta no facebook

Posted by Moisés Souto under geral, fisl | 1 Comment »

18th Apr 2008

[Drops FISL] Conheci o criador do PHP e o diretor de engenharia da Mozilla… em 1 dia só

Hoje durante o segundo dia de FISL tive oportunidade de ver de perto 2 ícones do desenvolvimento web atual. Um deles é o Rasmus Lerd que criou o a linguagem de programaçao PHP.

rasmus

E encontrei o diretor de engenharia da Mozilla, Chris Hoffman,pude tirar foto :) , ele é muito atencioso, conversamos um pouco, tentei falar o quanto a Mozilla foi importante para meu desenvolvimento profissional.

cris

Em breve mais notícias.

Posted by Moisés Souto under fisl | 2 Comments »

16th Apr 2008

Prontos pro FISL

Olá galera, chegamos em Porto Alegre agora a pouco, 23:25. Não tivemos atraso em nenhuma das conexões, saímos de natal às 15:10, de lá seguimos até o Rio de Janeiro onde chegamos às 18:50, aguardamos e aguardamos o tempo de conexão previsto, até embarcarmos por volta de 21:20… seguem fotos do nosso roteiro de viagem de hoje…

1

Eu e Maria Fernanda (Check-in em Natal)

2

Eu e Acácio pouco antes do embarque (Natal)
3

Sobre Natal

4

Viagem muito agradável, com vista espetacular do litoral

5

Chegada no Galeão no Rio.

As fotos de POA, só postarei hoje, ao final do primeiro dia de evento. Acompanhem tudo pelo blog.

Posted by Moisés Souto under geral | 2 Comments »

15th Apr 2008

Vou pro FISL 9

Ae galera… muito tempo que não posto (engraçado, em todos os últimos posts eu tenho dito isso frequentemente, irônico, rs)… rs rs rs… sempre achei estranho rir com esses “rs”, mas o fiz de forma intencional, apesar de ser uma forma meio pífia de denotar, através de um sentido totalmente desconexo e não sei porque raios tive essa idéia, de associar as risadas (e quem sabe fazer uma piada engraçada onde pelo menos eu conseguisse achar, sei lá, mas isso eu não consegui) ao fato que irei pro Rio Grande do Sul !!!!..

Fisl é Forúm Internacional de Software Livre, e esta é a edição de número 9, realizada anualmente. A sede do evento é Porto Alegre, e o evento acontece nas dependências do centro de eventos da PUC-RS. Será nos dias 17,18 e 19 de abril. Evento que conta com os maiores nomes do Open Source mundial. Este é o maior e melhor forúm do gênero no país, e eu poderei participar, é mais um sonho virando realidade.
Viajo para Porto Alegre, hoje (16/04) às 15:20, faço conexão no Rio de Janeiro e lá vamos pra POA (Porto Alegre).

Tentarei fazer a minha cobertura do evento através deste blog, portanto fiquem atentos, logo mais teremos fotos e talvez vídeos.

Posted by Moisés Souto under geral, fisl | No Comments »

01st Jan 2008

2008

Untitled-1.jpg

Ano novo. Mudanças e tudo de novo que o novo sugere.
O ano começa em tom de saudosismo, e este é o intuito deste post, com a empresa que disponibilizará todas as informações do mundo on-line, homenageando a invenção que permitiu que o termo on-line tenha se popularizado tanto. O google em sua doodle de ano novo, que faz homenagem aos 25 anos da invenção do protocolo tcp/ip.

syn-synack-ack-hidden-message.gif

Quem fez a interessante descoberta da homenagem quase que subliminar do google foi Haochi do blog Googlified. Segundo Haochi, ao examinar o logo foi possível ler na parte inferior a seguinte mensagem: SYN SYN/ACK ACK que seria uma seqüencia de pacotes para estabelecer uma conexão, também conhecida como “Three-Way Handshake”.

Posted by Moisés Souto under geral, google, internet | 3 Comments »

21st Nov 2007

Web 2.0: Muito além do ajax (códigos apresentados durante a palestra)

Bom, estou devendo as pessoas que assistiram minha palestra no III EPSL os códigos que utilizei. Pessoa desculpas pela demora, é que as semanas que se seguiram após o EPSL foram de correria extrema.

Primeiro vamos as funções que utilizei para utilizar o ajax, aconselho que elas estejam em um arquivo separado e o incluam em suas páginas, estas são funções em JavaScript.

  1. // —————————– FUNÇÕES DO AJAX ———————————–
  2. //Fila de conexões
  3. fila=[]
  4. ifila=0
  5. function ajaxPOSTRun(url,parameters){
  6. xmlhttp.onreadystatechange = alertContents;
  7. xmlhttp.open(’POST’, url, true);
  8. xmlhttp.setRequestHeader(”Content-type”, “application/x-www-form-urlencoded”);
  9. xmlhttp.setRequestHeader(”Content-length”, parameters.length);
  10. xmlhttp.setRequestHeader(”Connection”, “close”);
  11. xmlhttp.send(parameters);
  12. }
  13. function ajaxHTML(id,url,carr){
  14. //Carregando…
  15. if (typeof carr == “undefined”)
  16. document.getElementById(id).innerHTML=”Carregando…”;
  17. //Adiciona à fila
  18. fila[fila.length]=[id,url]
  19. //Se não há conexões pendentes, executa
  20. if((ifila+1)==fila.length)ajaxRun()
  21. }
  22. //Executa a próxima conexão da fila
  23. function ajaxRun(){
  24. //Abre a conexão
  25. xmlhttp.open(”GET”,fila[ifila][1],true);
  26. //Função para tratamento do retorno
  27. xmlhttp.onreadystatechange=function() {
  28. if (xmlhttp.readyState==4){
  29. //Mostra o HTML recebido
  30. retorno=unescape(xmlhttp.responseText.replace(/\+/g,” “))
  31. //retorno=xmlhttp.responseText
  32. document.getElementById(fila[ifila][0]).innerHTML=retorno
  33. //Roda o próximo
  34. ifila++
  35. if(ifila
  36. if(document.getElementById(’calendario’)){
  37. var myTips = new Tips($$(’#calendario .agenda_data_marcada’),{maxTitleChars:200,onShow:function(x){x.setOpacity(0.9)}});
  38. $$(”.tool-tip”).each(function(x){
  39. x.setStyle(”visibility”,”hidden”);
  40. });
  41. }
  42. }
  43. }
  44. //Executa
  45. xmlhttp.send(null)
  46. }
  47. //Tenta criar o objeto xmlHTTP
  48. try{
  49. xmlhttp = new XMLHttpRequest();
  50. }catch(ee){
  51. try{
  52. xmlhttp = new ActiveXObject(”Msxml2.XMLHTTP”);
  53. }catch(e){
  54. try{
  55. xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”);
  56. }catch(E){
  57. xmlhttp = false;
  58. }
  59. }
  60. }

Pronto, estas são as funções genéricas para utilizar o ajax, e que abstraem o trabalho o tornando mais simples. Vamos agora criar a função javascript que vai chamar a função ajaxHTML dessas nossas funções. Utilizar essa abstração é muito simples como veremos.

Na página onde queremos que o evento aconteça colocaremos a seguinte função javascript, no exemplo que tratei na palestra é um sistema de acompanhamento de obras de uma construtora, o “ajax” serve para tornar a aplicação mais leve, rápida e interessante ao usuário. Temos uma obra e vinculada a esta temos etapas da construção, cada etapa pode conter diversos álbuns, como seriam muitas miniaturas, e conseqüentemente um temo de espera maior, resolvi implementar o ajax para maximizar a experiência do usuário, como disse anteriormente.

Temos 2 funções uma que chama o “ajax” para fazer a requisição das etapas da construção que temos cadastradas no banco para obra, cujo o id passei como parâmetro na função, chamei essa função de CarregarAlbuns(id_obra), onde passo o id da obra e o “ajax” chama a página de apoio que contém o select no banco para retornar os álbuns associados aquela obra. Segue a função:

  1. function {
  2. axHTML(”div_album”,’albuns.php?id_obra=’+id_obra);
  3. };

Para chamar a função passamos 3 parâmetros necessários e 1 extra para chamar uma imagem enquanto o ajax carrega as informações. Primeiro parâmetro é a div onde desejamos que o ajax atue, em nosso exemplo utilizaremos a div_album, que deve estar no código porém vazia (o ajax a preencherá futuramente ). O segundo parâmetro é a pagina de apoio que terá a ação para preencher a div que setamos no primeiro parâmetro (no nosso caso a div_album), em nosso exemplo chamamos a página albuns.php?id_obra=”" que contém um select para achar os albuns associados a obra, cujo o id passamos por get para a págian albuns.php. O que for “ecoado” (usando a função echo do PHP) nessa página (albuns.php), será escrito dentro da div_album quando a função CarregarAlbuns(id_obra) for chamada, em nosso exemplo chamamos tal função utilizando o evento onclick no link Ver Fotos da obra. OBS: $_db é onde estão dados buscados no banco. As tags estão cortados para pode serem reproduzidas corretamente, lembrem de corrigir.

  1. Ver fotos da obra…/a>/p>

Então a div será preenchida com conteúdo, movendo o conteúdo colocado depois do fim da div_album para baixo, o que dará a impressão de movimento.

2.jpg

Logo depois de termos carregado a listagem dos álbuns que temos, queremos agora listar as imagens que temos para aquele álbum, então devemos acrescentar uma função junto a função anterior (CarregarAlbuns(id_obra)) chamada CarregarFotos(id_album):

  1. function CarregarFotos(id_album){
  2. ajaxHTML(”div_fotos”,’fotos.php?id_album=’+id_album);
  3. };

Ao carregarmos as etapas temos o link para cada álbum, que através do evento onclick chamamos a função que criamos, esse caso é similar a anterior, me refiro aos parâmetros da função o que muda é que a div_fotos que é onde escreveremos as fotos usando ajax (da mesma maneira como foi feito na função anterior), a div vazia deve estar contida dentro da página de apoio anterior, exatamente após o título da etapa de construção.

3.jpg

No final de tudo podemos incrementar a aplicação utilizando o Slimbox

4.jpg

Você pode encontrar os slides da palestra em PDF no link palestras no menu acima.

Posted by Moisés Souto under geral, ajax, web | 2 Comments »

11th Nov 2007

Novo RSS

Olá todos…

Este post é apenas para informar que o blog mudou de RSS. Aos assinantes do Feed RSS, favor mudar para http://feeds.feedburner.com/msouto

Posted by Moisés Souto under geral, blog | No Comments »

07th Nov 2007

Toolbox de Redes Neurais do Matlab

Olá,

Está semana tivemos de fazer um trabalho para a disciplina de Inteligência Artificial, ministrada pelo professor Allan Martins, foram diversos assuntos que o professor distribuiu em grupos, o meuobjetivava predizer o consumo de energia elétrica em minha casa, eu daria o valor das 4 ultimas medições mensais e rede iria calcular a do mês seguinte.

Primeiramente, treino a rede atribuindo como entradas (Localização:matriz P) os valores de cada mês, cada entrada é composta de 4 valores de medições de meses anteriores, esta (cada entrada) aponta para um target(Localização:vetor T), que é um valor correto e conhecido do valor real do quinto mês (que tentarei predizer após este treinamento).

Após este treinamento posso modificar P (entradas) passando 4 valores de meses anteriores e a rede calcula o mês subsequente.
Utilizando o toolbox do Matlab (for linux) para redes neurais implementei da seguinte maneira:

=== SOURCE ===

%Definindo os targerts que servirão para o treinamento da rede
T = [262 250 287 242];
%As entradas que servirão pra o treinamento da rede
P = [250 287 242 244;
287 242 244 306;
242 244 306 295;
244 306 295 259];

%Instanciando a rede com 16 neurônios na camada oculta e 1 neurônio na camada de saída
net = newff(minmax(P),[16 1],{’tansig’ ‘purelin’});

%Treinando a rede
net = train(net,P,T);

%Definindo as entradas para a rede calcular a previsão de saída
% Exemplo:
P=[250;
287;
242;
244];

%Fazendo a rede calcular apartir das entradas dadas no passo anterior
Y = sim(net,P);

=== /SOURCE ===

O algoritmo de ‘Backpropagation’ utiliza o método do Gradiente Descendente para corrigir os valores sinápticos. Neste método, calculamos o gradiente da função objetivo (MSE) a se minimizar e atualizarmos o valor das sinapses somando-se a ele o valor do gradiente com o sinal invertido. O gradiente, neste caso, é a derivada parcial da função erro médio quadrático em relação à sinapse. Este processo faz com que o erro médio quadrático do problema “caminhe” sempre no sentido contrário de seu máximo crescimento. Resumindo, podemos dizer que a equação básica do Algoritmo de ‘Backpropagation’ é:

Wk+1 = Wk - ok Vk(Fo)

onde:

Wk+1 é o vetor de pesos sinápticos no instante k+1;

Wk é o vetor de pesos sinápticos no instante k;

ok é uma constante chamada Passo de treinamento;

Vk(Fo) é vetor gradiente da função objetivo.

O passo de treinamento é uma constante que controla a velocidade de convergência do algoritmo, ou seja, a rapidez com que os valores sinápticos levam o MSE para um mínimo local ou global na superfície de erro do problema. Para pequenos valores de o, a atualização das sinapses é mais lenta, fazendo com que se percorra com maior precisão a superfície de erro do problema. Para valores altos de o, apesar da convergência ocorrer de maneira mais rápida, pode acontecer oscilações no treinamento, podendo ás vezes até impossibilitar a convergência para um mínimo local ou global.

Suas principais características são:

  • Classe de tarefas: reconhecimento de padrões (ex.: controle adaptativo de braços de robôs) e processamento de fala;

  • Propriedades dos neurônios: são do tipo perceptron e possuem valores contínuos. A função de ativação é a sigmóide;

  • Propriedades das redes: rede acíclica de três camadas, no mínimo;

  • Aprendizado: utiliza técnica de Correção de Erros com o uso da regra delta generalizada.

O maior problema da utilização do algoritmo de retropropagação ocorre quando a rede neural obtém uma solução que corresponde a um mínimo local da função do erro. Existem diversas alternativas que visam a diminuir a ocorrência de mínimo local. As mais utilizadas são:

  • diminuição da taxa de aprendizado: se a taxa de alteração dos pesos é diminuída progressivamente, então o algoritmo do gradiente decrescente está apto a alcançar uma solução melhor;

  • adição de unidades internas: é possível considerar que quando um mínimo local é apresentado como solução, duas classes diferentes são classificadas como a mesma. Para evitar isso, ao serem colocadas mais unidades na camada escondida, a rede fará um reconhecimento melhor, diminuindo a ocorrência de mínimo local;

  • introdução de um termo de momento: termo introduzido para que se possa aumentar a taxa de aprendizado sem que ocorra oscilação.

Outro problema enfrentado pela retropropagação é a quebra de simetria, ou seja, se os pesos começam todos com o mesmo valor e se a solução só pode ser alcançada com pesos diferentes, o sistema não poderá aprender. Isto ocorre porque o erro é retropropagado em proporção ao valor dos pesos, o que significa que todas as unidades escondidas conectadas diretamente às unidades de entrada e saída cometem erros iguais. Como a modificação dos pesos depende deste erro, os pesos destas unidades em relação às unidades de saída serão sempre os mesmos.

Posted by Moisés Souto under geral, matlab, engenharia_de_computação, ia | No Comments »

29th Oct 2007

III EPSL

Estamos a poucos dias do III EPSL, que este ano conta com um outro evento simultâneo o “Além das Redes
de Colaboração”. Evento sempre de grande importância para toda a comunidade de SL Potiguar, além de ser um dos eventos de mais força ,na parte de computação, aqui do estado.

Este ano tive novamente a felicidade de ter um trabalho aprovado pra apresentação, meu trabalho intitulado Web 2.0: Muito além do Ajax trata sobre a tendência que reforça o conceito de troca de informações e colaboração dos internautas com sites e serviços virtuais, conceito básico da WEB 2.0. Pretendo mostrar como tais conceitos podem ser aplicados em serviços que podem ser agregados em um site dos mais antigos a um novo projeto, ou mesmo como pensar um projeto nestes moldes.

Farei demonstrações de algumas implementações de uso de Ajax, onde pretendo exibir uma classe para agilizar o uso do Ajax (sim é possível). Explanações sobre mash-ups e softwares livres consagrados para a WEB 2.0, tais como: Wiki e Wordpress.
Participe do III Encontro Potiguar de Software Livre: “Além das Redes
de Colaboração” que acontecerá de 07 a 10 de Novembro de 2007, no
auditório do CEFET-RN (unidade sede), em Natal-RN.

O III EPSL tem como objetivo principal promover e estimular o
desenvolvimento e uso do Software Livre em nosso estado, com isso:
+ Atingir as diversas áreas das ciências humanas através de um debate
qualificado que trate uma mudança de paradigma não só na questão do
compartilhamento de código, mas sim do conhecimento, do acesso à
tecnologia e à informação;
+ Mostrar e discutir alternativas de geração de negócios, renda e de
como construir uma sociedade melhor e justa através da democratização
do conhecimento e da tecnologia;
+ Promover a inclusão digital e social, através da educação
tecnológica ampla e irrestrita, onde o acesso aos mecanismos de
construção e desenvolvimento estarão sempre acessíveis;
+ Através de todas essas iniciativas, estimular o desenvolvimento
tecnológico e humano local, através do uso e desenvolvimento de
Softwares Livres e da difusão da Cultura Livre.

A programação do evento estrutura-se em três tipos de sessões:
exposição de soluções tecnológicas de Software Livre; discussões
relacionados à mídia, arte e cultura livre; ciclos de debates “Além
das Redes de Colaboração: Diversidade Cultural e as Tecnologias do
Poder” - projeto da Casa de Cinema de Porto Alegre e da Associação
Software Livre produzido localmente pelo Projeto Software Livre do RN.

A grade de programação está disponível:
http://rn.softwarelivre.org/portal/programacao

A inscrição no evento tem como custo a contribuição de 2 kg de
alimentos não perecíveis (exceto sal) que serão doadas a 3
instituições carentes.

Inscrições e mais informações sobre o evento pelos sites:
http://alemdasredes.softwarelivre.org ou http://rn.softwarelivre.org

Posted by Moisés Souto under geral | No Comments »

22nd Oct 2007

Mudanças…

Salve pessoal,

Quase 1 ano sem postar… isso é uma tremenda frustração. De lá pra cá muita coisa em minha vida mudou, tanto profissionalmente quanto pessoalmente, passei por cada situação que daria posts intressantes, mas que por falta de tempo acabaram não saindo. Enfim, vamos començar pelas mudanças profissionais.

Janeiro passado foi um divisor de águas em minha vida, aceitei a proposta da Maxmeio de trabalhar 8 horas (full-time) e posteriormente assumir o cargo de gerente do setor de Programação, o que foi extremamente interessante para meu engrandecimento e crescimento profissional.  Foram diversas  experiências a frente do setor e juntamente com uma equipe fantástica de programadores conseguimos mudar pra melhor muita coisa que carecia de atenção. Trabalhei com diversos sites, portais e intranets, também não deu tempo listar tudo em Trabalhos, aqui no blog. Passei 1 ano na Maxmeio e resolvi mudar as coisas, em virtude de alguns posicionamentos da empresa ,que não considerei conciliáveis com os meus. Mas como diz meu amigo Zeck, “Não fique resmungando…”, bola pra frente.
Atualmente sou analista de sistemas da Rits, empresa de desenvolvimento comunicação e tecnologia, focada principalmente em Web. Estou gostando bastante da nova fase, me identifiquei muito com a equipe e empresa. Estou satisfeito trabalhando lá e a cada dia trabalho mais motivado, e espero colher os frutos benditos deste trabalho.

Minha vida pessoal também caminha muito bem, desde fevereiro, de mãos dadas com minha Maria Fernanda, um presente que recebi e que amo e respeito muito. Enfim.

Este post vem para contar um pouco (aos mais afastados) como andam as coisas e tenho alguns planos aqui para o blog.

1- Maior frequêcia nas postagens

2- Podcast e-moises (já estou gravando o pilto)

3- Supresas

Bom, este é um post introdutório é pra passar o tempo e avisar que estou voltando. :)

Posted by Moisés Souto under geral, besteira | 9 Comments »