sábado, maio 04, 2013

Linux em Arrow, finalmente!

Pra quem acompanha o seriado Arrow já deve ter percebido que a produção é patrocinada pela Microsoft. Todos os celulares que aparecem com alguma marca são Nokia, as pessoas usam o Surface e têm Windows 8 instalado em suas máquinas... Nada de errado até aí, mas os personagens usam o BING para procurar informações na internet. Quem na vida real faz isso? Sério?

Porém, um dos personagens não caiu nas garras da gigante de Bill Gates.

No episódio dessa semana, "The Undertaking", podemos dar uma olhada no apartamento do veterano de guerra e guarda-costa do Arqueiro, John Diggle. E advinha qual o sistema ele usa quando não está perseguindo bandidos?

Felicity: Acho que ouvi um software livre.

Vamos dar uma olhada mais de perto:


Pra quem não conhece, essa interface parece ser a Unity, padrão da distribuição Ubuntu Linux.

Na boa, Diggs já tinha meu respeito a muito tempo. Depois desse episódio ele passa a ser meu personagem favorito da série.

Felicity com cara que instalaria o Ubuntu em todas as
máquinas se não perdesse o patrocínio de Bill Gates.

quarta-feira, dezembro 05, 2012

GUI Toolkit: Uma eterna procura

Esse semestre eu cursei a matéria Projeto de Interface de Usuário, ministrado pelo Dr. Jair Cavalcante Leite, uma espécie de introdução ao campo de interface humano computador. É engraçado como muita coisa que nós gostamos, e outras tantas que detestamos, nas interfaces gráficas das ferramentas que usamos tem um porquê de estar ou não lá.

Uma das coisas que eu gostei dessa matéria com relação a outras que eu cursei na UFRN foi o fato que o professor nos deixou livre para usar as tecnologias que quiséssemos no projeto, o que me permitiu experimentar o GTK+, uma biblioteca de interface gráfica, e eu decidi não usar nenhum binding, ou seja, usei a linguagem em que a biblioteca foi feita originalmente, isto é, C. Era algo que eu queria fazer a algum tempo.

Quando você pensa em programação de maneira comercial, interface gráfica é crucial para o sucesso de um produto. E após alguma pesquisa a respeito do assunto, também um grande limitador de requisitos. Vou citar aqui algumas coisa que eu aprendi a considerar ao escolher uma biblioteca gráfica.

Linguagem

Diferentes bibliotecas são escritas em diferentes linguagens. Isso faz com que as bibliotecas herdem características das linguagens em que foram escritas, por mais que essas bibliotecas tenham bindings para outras linguagens. As mais tradicionais e mais utilizadas foram escritas em C, ou seja, se você quiser usá-la com uma linguagem orientada a objetos, prepare-se para alguns pedaços de códigos bem procedurais, a não ser que o binding da linguagem seja muito bem feito.

Plataforma

Mantendo o escopo de desktop, diferentes sistemas operacionais aceitam essas interfaces de maneiras diferentes. Alguns toolkits tentam circular essa deficiência enquantos outros assumem que eles são específicos para seu S.O. Os primeiros tendem a seguir duas abordagens diferentes para ser multiplataformas:

Utilizam a API nativa de cada Sistema
É o caso da wxWidgets e do projeto XWT. O ponto bom dessa abordagem é que o aplicativo fica com a aparência nativa do sistema em que se encontra, mas tem que usar aos controles comuns a todas API, tornando-a meio limitada
Têm uma implementação específica para cada Sistema
Acho que a maioria dos toolkits usam essa. A vantagem é que podem ser mais completos, definindo todos os controles que acham necessários, implementados do jeito que acharem melhor, mas acaba comprometendo a aparência dos programas, dando a impressão de estarem deslocados em alguns Sistemas.

Uma curiosidade é que o GTK+ tá trabalhando para poder rodar via navegador, através de conexão de rede (incluindo internet!), o que eleva o termo multiplataforma á um outro nível.

Documentação

Infelizmente é aqui que muita biblioteca peca e não só de GUI. Não é à toa que GTK+ e Qt são tão utilizadas, elas mantêm em seus sites uma referência completa de maneira organizada e sempre atualizada. Não se pode dizer o mesmo de alguns bindings delas.

Licença

E aqui muitos programadores pecam. Lembrem-se de sempre pesquisar a licença de uso das bibliotecas que vocês usam. Algumas licenças têm limitações de uso e distribuição do software que usa o toolkit que foi licenciado. É bom ter isso em mente para não ter problemas judiciais e financeiros.

Então, é isso. Espero ter ajudado a vocês a ter uma idéia de qual interface escolher. Uma dica a mais é tentar desenvolver de maneira modular, mantendo a lógica de negócio independente da interface usada, assim você terá mais liberdade de escolher, e caso necessário, mudar de toolkit de acordo com as suas necessidades. 

sexta-feira, novembro 05, 2010

A Crença dos Trabalhadores da Pedreira

Esqueça o Chile. Não vou falar de catástrofes com finais felizes - que por sinal acontecem muito na vida profissional na área de software. Retorno a esse blog para falar sobre uma das coisas que mais nos interessa quando decidimos seguir uma carreira: Realização.

Mês passado um colega meu que cursa Psicologia me ligou perguntando se eu poderia dar uma palestra para estudantes do Ensino Médio e vestibulandos sobre como é o curso de Ciência da Computação. Seria um "Dia da Carreira" para esses estudantes, assim alguns profissionais e universitários estariam lá falando sobre suas respectivas áreas. Senti-me honrado em poder representar a "classe".

Fui o último dos palestrantes do dia. Por isso pude prestar bem atenção em cada uma das palestras. Medicina, enfermagem, arquitetura, serviço social... Algumas constantes apareceram durante o dia, acho válido citá-las aqui:

  1. Dinheiro é proporcional a tua dedicação e profissionalismo na área.
  2. Existem profissionais bons e ruins em todas as áreas.
  3. Sempre há mercado de trabalho se você souber procurar.
  4. Todos os palestrantes comentaram como se sentem realizados no seu trabalho por poder ajudar alguém.

Achei interessante esse último ponto. Todas as profissões que estavam lá lidam diretamente com um cliente, com um paciente, com uma pessoa. Essas pessoas geralmente retornavam ao profissional para lhe agradecer e, às vezes, até presenteá-lo por seu serviço.

Depois disso, as atenções são voltadas a mim. Um "nerd" que passa boa parte do tempo na frente de um computador. Cuja obra não passa de um monte de caracteres que boa parte da população mundial não compreende.

No decorrer da apresentação comentei sobre como eu, ao ser um Cientista da Computação, me senti tão realizado ao ver as outras apresentações quanto o próprio orador. Porque para um médico descobrir um tumor e salvar uma vida, para um arquiteto poder andar numa obra antes dela ter sido construída, para isto houveram vários cientistas que se esforçaram ao máximo para fazer algoritmos e programas melhores.

Ao ler The Pragmatic Programmer, de Andrew Hunt e David Thomas, logo no primeiro capítulo eles nos chama a atenção para nunca nos esquecermos da big picture, do programa ou problema como um todo. Porque cada um de nós contribuímos direta ou indiretamente para que todo o mundo atual fique cada vez melhor.

"Nós que cortamos meras pedras, devemos sempre vislumbrar as grandes catedrais." Crença dos trabalhadores da pedreira.

quinta-feira, março 11, 2010

public static void...

Volta às aulas na UFRN me empurra a situações desconfortáveis, posso enumerar algumas aqui: noites mal dormidas, aulas mal dormidas assistidas, alimentação desregulada e linguagens de programação novas.

Apesar de não me ser completamente estranho, é a primeira vez que eu realmente vou usar Java. Segundo literaturas por aí, uma versão enxuta de C++, definição que discordo toda vez que crio um método main, sinto-me como que escrevendo um feitiço ou algo assim.

Não que eu não goste da linguagem, longe de mim, só acho que não é bem o meu estilo de programação. Mas pelo visto é uma linguagem muito poderosa, além da facilidade de ser portável, merece meu respeito.

quinta-feira, janeiro 14, 2010

Dicas de férias para programadores

Eu sou um ótimo aluno. Se o calendário acadêmico me diz que em Janeiro eu estou de férias, eu tiro férias. E isso me deu algumas dores de cabeça.

Por isso, colegas de curso, deixo aqui algumas dicas para não se dar mal na sua vida na universidade:

  1. Olhe sempre todos os seus e-mails.
  2. Pode parecer óbvio, mas no calor do verão quando você está nas praias sem conexão à internet você pode esquecer de um detalhe tão importante. Lembre-se sempre de parar em uma Lan House ou carregar consigo um modem 3G.

  3. Não marque viagens para muito longe por muito tempo
  4. Você nunca sabe quando um professor vai querer marcar entrevista para bolsa contigo. Não é o fim do mundo, mas você terá que esperar até a próxima oportunidade.

  5. Não pare de "estudar"
  6. Teve um tempinho entre uma balada e outra? Procure um livro, leia uma revista de tecnologia, siga um tutorial na net. Lembre-se que a área de T.I. é uma área de constante mudanças. E tem sempre um nerd mais atualizado que você, então corra atrás.

  7. Descanse
  8. Evite stresses desnecessários, tua vida já é cheia deles. Não tem por que até férias ficar sem dormir pensando quais matérias você tem que passar esse semestre para terminar o curso sem se atrazar (muito), deixe isso para o período letivo quando você pode fazer algo a respeito.

Faça isso e seja feliz. Eu não fiz e talvez pague pelas consequencias.

sexta-feira, novembro 06, 2009

Consternação

Só pra deixar registrada a minha consternação.

Eu me esforço bastante, preparo um material muito legal para um screencast, demoro dias e uma atualização do Ubuntu para fazer o recordMyDesktop funcionar aqui no meu pc e acontece isso...

Gravei um vídeo de 17min, muito supimpa, muito massa...

Quando tava salvando, o PC trava e eu tenho que reiniciar... (odeio meu processador bugado)

Bom, vocês vão ter que esperar mais um tempo para ver o screencast.

quarta-feira, outubro 14, 2009

Pedido de ajuda

To querendo fazer um screencast aqui... Alguém tem alguma dica com relação a programa de gravação de desktop no Linux?

O meu recordMyDesktop tá bugado. =(

segunda-feira, outubro 05, 2009

Jogo da Velha FXRuby version

Aew gente!

Finalmente consegui compilar o Jogo da Velha usando a biblioteca gráfica FOX.

Quem quiser baixar:




http://www.lcc.ufrn.br/~jedi/arquivos/tictactoe_fox.exe

Só roda no Windows. O rubyscript2exe não está se dando bem com a última atualização do RubyGems no Linux. Fazer o quê?

Próximo projeto: Versão CUI - Command User Interface - com Python.

quinta-feira, outubro 01, 2009

Jogo da Velha by JediComp

Bom, ainda estou trabalhando no meu Jogo da Velha em Pyhton, mas a versão CUI do jogo em Ruby está feita e totalmente funcional!

Se alguém quiser testar, Clicke aqui para baixar o .rb(Salvar como...). O jogo deve estar rodando tanto em Linux quando em Windows.

Depois eu edito esse post com o jogo "compilado" pra quem não tiver Ruby no PC.

O primeiro de muitos!

UPDATE:
Link para o .EXE = Clicka aqui (só Windows

sábado, setembro 26, 2009

A linguagem C++ é um Frankstein: muito poderosa mas muito difícil de se compreender.
David Deharbe, Professor do Curso de Ciências da Computação na UFRN

Durante o "Hora Extra" dessa semana. Depois eu falo mais desse evento.

quinta-feira, setembro 17, 2009

TicTacToe ~ Hello World?

Uma coisa bizarra interessante que eu tenho feito ultimamente é programar TicTacToes, ou "Jogos da Velha", em diversas linguagens.

Mês passado, enquanto pesquisava tutoriais para a biblioteca 'rubygame', a versão ruby da famosa 'Pygame', me deparei com um código muito fail feio de um jogo da velha usando apenas as bibliotecas padrão e rodando no terminal. Achei tão mal organizado que resolvi criar o meu próprio jogo, e o fiz usando a biblioteca gráfica QtRuby, e estou desenvolvendo minhas versões de Terminal em Ruby e Python.

Sei lá, acho o "Hello World!" muito simples, principalmente nessas linguagens, e botei na cabeça que logo após fazer qualquer Hello World eu faria um TicTacToe.

Eu sou muito estranho nerd.

sábado, setembro 12, 2009

Começo

Hoje eu Oficialmente inicio a construção do JediComp no Rails.

ray@ray-desktop:~$ rails JediComp

Só pra deixar registrado algumas coisas que podem me ser úteis lá na frente

versão do Ruby: 1.8.7
versão do Rails: 2.3.4
IDE: NetBeans 6.7.1 (que comece o flame!)
banco de dados de desenvolvimento: SQLite3 v3.6.10
SO: Ubuntu (Studio) 9.04

Não sei quanto tempo eu vou levar pra concluir tudo e me mudar do Blogger. Não por ser difícil trabalhar com o Rails, mas pela falta de tempo para me dedicar ao projeto.

Me desejem boa sorte.

quarta-feira, setembro 09, 2009

Muitas vezes as pessoas, especialmente engenheiros de computadores, focam-se nas máquinas. Eles pensam, "Fazendo assim, a máquina vai rodar mais rápido. Fazendo isso, a máquina vai rodar de modo mais eficaz. Ao fazer isso, a máquina vai fazer alguma coisa de algum jeito." Eles estão focando em máquinas. Mas devíamos focar nos humanos, em como humanos se importam em programar ou operar a aplicação de máquinas. Nós somos os mestres. Eles são os escravos.
—Yukihiro Matsumoto a.k.a. Matz, Criador da linguagem Ruby

Retirado da entrevista The Philosophy of Ruby

terça-feira, setembro 08, 2009

Programadores Poliglotas

Relendo o post do meu colega Dyego sobre linguagens de programação, senti-me interessado pela temática. Um trecho que me chamou a atenção foi o seguinte:
"Então pare de enrolar e diz logo, qual devo escolher? Sinto desapontá-lo, mas essa pergunta não tem uma resposta predefinida, pois depende de alguns fatores que estão totalmente incorporados a relação do programador com a linguagem. Você deve escolher a linguagem que transformar você em um programador melhor, fazendo-o se divertir programando, aumentando sua produtividade e te animando a se aprofundar nos conceitos e na filosofia por trás dela, mas cuidado para nunca ficar limitado a não conhecer as novas tecnologias que surgirem. Isso é um erro gravíssimo, mas que freqüentemente acontece no mundo do desenvolvimento de software."
Ok, quote longo, espero não repetir no futuro. Mas deu pra entender o contexto. Destaques feitos por mim pois é um ponto importante e merece comentários.

Primeiramente, porque será que sempre que nos apresentam à linguagens de programação nós botamos na cabeça de procurar a melhor linguagem entre todas? Isso frustra muitos novos desenvolvedores e programadores hobbistas por aí. É a pergunta errada a se fazer. A certa seria: "Qual a melhor linguagem para o que eu quero fazer?" Todas as linguagens foram feitas para cumprir um determinado objetivo e geralmente elas cumprem. Um programador hábil é aquele que sabe usar a linguagem certa para o problema certo.

Quando eu falo sobre Ruby pra os meus colegas sempre me respondem "eu gosto de C++" ou "tenta Java, é uma boa linguagem", mas poucos me responderam "massa! quero dar uma olhada!". Eu gosto de C++, Java, O'caml, de verdade, mas também queria ver porque tanta gente gosta de Ruby, Python ou Lua e vou procurar aprender cada uma delas, onde elas se saem melhor e onde estão as fraquezas delas. Acho que assim posso me tornar um desenvolvedor melhor.

terça-feira, setembro 01, 2009

Chama o cara do TI!

"Alô? Ah! Sim, eu gostaria de um Técnico de Informática com habilidade em Programação, WebDesign, Administração de Redes e que saiba fazer Manutenção de Computadores, para a minha empre- Alô? Alô!? ... "

Alguns podem achar a situação acima um tanto quanto estranha, mas eu digo a vocês que essa frase foi retirada de um contexto real. Dito isto, eu gostaria de comentar um pouco a respeito das várias vertentes de profissões da área de T.I.

Pra quem já não sabe, "A sigla TI, tecnologia da informação, abrange todas as atividades desenvolvidas na sociedade pelos recursos da informática."wikipedia Ou seja, apesar de muita gente ainda pensa que se é pra mexer no computador tem que chamar o "Técnico em Informática", existem vários profissionais que devem exercer tarefas diferentes dentro da área da informática.

Os Técnicos em Informática são os primeiros a serem lembrados na hora de uma contratação. Não só porque existem muitos deles por aí, como também é o profissional mais barato para uma empresa. Os Técnicos são as pessoas que fazem um Curso Técnico na área da informática, em instituições como o atual IFRN (antigo Cefet-RN) aqui em Natal. Eles são um ótimo quebra-galho pra uma empresa pequena e sem muitos recursos.

Também na área técnica e profissionalizante, existem os cursos de Web Design e Montagem e Manutenção de Computadores. Normalmente esses profissionais são contratados por empresas especializadas nos ramos de Criação de Sites e Conserto de Computadores, respectivamente, e todos os serviços relacionados a isso, ou caso alguma empresa queira investir em uma equipe interna para esses setores.

Subindo para os cursos Superiores (hahaha), encontramos os cursos de Ciência da Computação e Engenharia da Computação, e não, eles não são a mesma coisa! O Engenheiro da Computação tem uma ênfase muito grande no hardware de computadores, de criação de circuitos à administração de redes. A afinidade é explicada pelo fato de que o curso surgiu de uma especialização dos cursos de Engenharia Elétrica e Ciência da Computação. Apesar de conhecimentos de programação e outras coisas relacionadas a software, esse é na verdade o foco do Bacharel em Ciência da Computação.

Esses sim são os verdadeiros nerds programadores! Focados no "estudo dos algoritmos, suas aplicações e de sua implementação, na forma de software, para executação em computadores eletrônicos"wikipedia. São esses caras responsáveis pela criação desde do programa de caixa do Mercado da sua rua até o Sistema Operacional que roda no seu computador.

Em resumo, antes de ligar para o SENAC procurando um faz-tudo, procure saber o que a sua empresa realmente precisa e qual o profissional certo para isso. Existem muitos outros além dos que eu citei, só pesquisar.

sexta-feira, agosto 28, 2009

Problemas

Acho que o fato de eu já ter algum conhecimento de Ruby está me prejudicando no aprendizado dessa linguagem, por mais paradoxal que isso pareça. To querendo baixar 500 livros e acabo não lendo nenhum. E no caso da "Picareta", a mudança de Edição me deixou um pouco confuso.

def conclusão
   puts "Preciso me organizar quanto ao tempo que eu tiro pra aprender a linguagem."
end

quinta-feira, agosto 27, 2009

Referencias em Ruby

Post feito para o Zé Neto, e pra todos os outros com a mesma dúvida, que perguntou quais os materiais que eu estou usando pra aprender Ruby. Bom, basicamente, baixei alguns e-books (e espero comprar os originais assim que puder) que são recomendados pela comunidade de programadores pela web afora.

Eis aqui os nomes dos livros, para serem baixados adquiridos por quem se interessar na linguagem:

Learn to Program, de Chris Pine
Ótimo livro para aprender o basicão da linguagem. É na verdade uma espécie de apostila pra novos programadores começarem a desenvolver. Apesar de usar Ruby, ajuda a ter uma base de programação em qualquer linguagem. Traduzido para o português por Fábio Akita com o nome Aprenda a Programar. Está na 2ª Edição.

Programming Ruby 1.9, de Dave Thomas
Guia completo sobre a linguagem. São 960 páginas abrangendo desde somar dois números até o próprio código da linguagem. Não tenho notícias se foi traduzido para o português. É o que eu estou lendo no momento.

Já na área do Rails, o que eu andei vendo foram alguns vídeos tutoriais que estão listados no site oficial do framework. A saber: http://www.rubyonrails.pro.br/apresentacoes

O Eustáquio "TaQ" Rangel tinha feito um livro-tutorial muito bom onde ele ensinava a configurar o sistema e a fazer uma aplicação, no caso uma loja de livros, mas ficou defasado depois da última atualização do RoR, mas eu ainda o tenho impresso aqui.

Bom, é basicamente isso. Se vocês quiserem uma indicação melhor, eis aqui um post no blog oficial do Rails, por Matt Aimonetti. Onde ele basicamente cita todas os meios de aprender e crescer no mundo Ruby e Rails.

segunda-feira, agosto 24, 2009

sábado, agosto 22, 2009

Apresentação

Bom, agora que o blog está pronto legível, eu posso fazer as devidas apresentações.

Seja Bem-vindo ao meu novo Blog, o JediComp! Sim, eu gosto de CamelCase, mas não é isso que eu quero discutir aqui. Esse blog foi criado para registrar minhas desventuras aventuras no mundo da POG Programação. Sei que é um pouco tarde já que já estou cursando o 6º Período do curso de Ciência da Computação na UFRN, mas é como dizem: nunca é tarde pra tentar coisas novas.

Entre outras coisas, tenho certeza que vou dar destaques à linguagem Ruby. Minha atual paixão em termos de linguagens de programação. Mas também vou falar de outras linguagens e outras coisas do ramo.

Enfim, espero que gostem, espero postar bastante.

end