Se você quer participar do FISL14 e está na região do ABC, junte-se a nós na caravana São Bernardo, envie um e-mail para folksilva@gmail.com se apresentando e eu envio um convite.
Um blog desconhecido
Informações sobre tecnologia da informação e conhecimento em geral. Viagens mentais de um desenvolvedor web.
terça-feira, março 26
segunda-feira, março 11
Instalando o Samsung Smart TV SDK no Ubuntu 64bits
Sou usuário do Ubuntu 64bits e estou iniciando um projeto no trabalho para desenvolver um aplicativo para Smart TVs da Samsung, fiquei feliz ao saber que o SDK é baseado no eclipse e possui versão para Linux, mas apenas para sistemas 32bits, neste post apresento a solução que encontrei para esse dilema.
1. Download do SDK
Se cadastre e faça o download do SDK para Linux versão 4.0 no fórum de desenvolvedores da Samsumg: http://www.samsungdforum.com, você precisa baixar os arquivos "SDK Download for Linux" e "SDK Emulator Image for Virtual Box".
2. Instalar o emulador
Instale o Virtual Box na sua máquina com o seguinte comando:
sudo apt-get install virtuabox
Abra o Virtual Box, clique em Arquivo -> Importar Appliance, na tela que surgir, clique em Abrir appliance e selecione o arquivo ova que você baixou do fórum da Samsung, ai é Próximo e Importar pra ter o emulador pronto.
3. Instalar o Java 32bits
Para evitar conflitos com o seu Java 64 bits, acesse http://java.com/en/download/linux_manual.jsp e baixe o Java para Linux (O 32 bits em .tar.gz), no momento em que escrevo esse artigo a versão mais recente é a 1.7.0_17. Feito o download, descompacte na pasta de Downloads mesmo, no terminal execute:
sudo cp -R ~/Downloads/jre1.7.0_17 /opt/
4. Instalar o SDK da Samsung
Descompacte o arquivo baixado, no meu caso o nome da pasta criada ficou como Samsung_TV_SDK_4_Linux
, e execute os seguintes comandos no terminal:
sudo cp -R ~/Downloads/Samsung_TV_SDK_4_Linux /opt/
cd /opt/Samsung_TV_SDK_4_Linux/eclipse
Para funcionar você precisa dizer para o Eclipse do SDK usar o Java 32bits que você instalou anteriormente, execute:
sudo gedit eclipse.ini
Adicione ao final do arquivo a seguinte linha:
-vm /opt/jre1.7.0_17
Salve e feche o arquivo, agora é preciso criar um script para inicializar o ambiente 32bits quando você for rodar o SDK, no terminal execute sudo gedit eclipse.sh
e escreva o seguinte conteúdo:
export JAVA_HOME=/opt/jre1.7.0_17
export PATH=/opt/Samsung_TV_SDK_4_Linux/eclipse:$JAVA_HOME/bin:$PATH
export MOZ_PLUGIN_PATH=/usr/lib/browser-plugins/
cd /opt/Samsung_TV_SDK_4_Linux/eclipse
./eclipse $*
Salve o arquivo. Para finalizar, execute os seguintes comandos no terminal:
sudo chmod +x eclipse.sh
sudo chown SEU_USUARIO -R .
sudo ln -s /opt/Samsung_TV_SDK_4_Linux/eclipse/eclipse.sh /usr/bin/tvsdk
Pronto, agora você pode rodar o comando tvsdk
sempre que quiser iniciar o SDK da Samsung!
5. Atalho do aplicativo
Ficar abrindo o terminal só pra abrir o SDK da Samsung não é muito divertido, então vamos criar um icone pra ele no nosso sistema. Pressione ALT+F2 e digite "alacarte", se nada acontecer você precisa instalar esse pacote, é o gerenciador de menus do Gnome, clique em Desenvolvimento e em Novo item, preencha com os seguintes dados:
Tipo: Aplicativo
Nome: Samsung TV SDK
Comando: /opt/Samsung_TV_SDK_4_Linux/eclipse/eclipse.sh
No icone você pode usar a imagem que está em /opt/Samsung_TV_SDK_4_Linux/AppsTemplate/app/icon/default_106.png
, ai é só dar OK e seu icone do menu está pronto para ser acessado!
Embora seja muito fácil desenvolver para a Smart TV da Samsung, é muito mais divertido desenvolver para Ginga, saiba mais sobre o assunto neste link: http://gingahackathon.java.net/. Bom desenvolvimento e até a próxima!
sexta-feira, março 8
Habilidades sociais para trabalhar em equipe.
Os três pilares
[...]. Se trabalho em equipe é a melhor rota para produzir um excelente software, como alguém constrói (ou encontra) uma equipe excelente?Não é tão simples assim. Para conseguir o nirvana colaborativo, primeiro você precisa aprender e abraçar o que nós chamamos de “Os três pilares” das habilidades sociais. Estes três princípios não são sobre lubrificar as rodas dos relacionamentos; eles são o fundamento no qual todas as interações e colaborações saudáveis são baseadas.
Humility (Humildade)
Respect (Respeito)
Trust (Confiança)
Juntos, nós referimos a estes princípios como HRT. Nós pronunciamos isso como “heart” e não “hurt” porque é tudo sobre diminuição da dor e não sobre ferir pessoas. De fato, nossa principal tese é feita diretamente nesses pilares:
Isso pode parecer implausível no começo, mas faça uma tentativa. Pense sobre alguma situação social desagradável ou inconfortável em sua vida até agora. No mais básico nível, todo mundo está sendo apropriadamente humilde? As pessoas estão realmente respeitando uma a outra? Existe confiança mutua?
Nós acreditamos que estes princípios são tão importantes que nós estruturamos esse livro em volta deles.
Esse livro começa com você: levando você a abraçar HRT e realmente internalizar o que isso significa para colocar HRT no centro de suas interações. O primeiro capítulo é sobre isso. Daqui nós criamos círculos de influencia cada vez maiores.
[…]
Nós então examinamos as pessoas que estão interagindo com o seu time diariamente, mas podem não ser parte da cultura da equipe. Esses podem ser colegas de outros times, ou apenas voluntários se oferecendo para ajudar no seu projeto. Muitos deles não apenas desconsideram o HRT, mas podem ser completamente venenosos! Aprender a defender sua equipe deles é a primeira ordem de negócio. Contudo, remover suas presas e sugar eles para sua cultura pode ser um objetivo final. Essa é uma excelente forma para expandir uma equipe.
Muitas equipes trabalham dentro de uma grande companhia, e esse ambiente pode frequentemente ter muito de um impedimento como pessoas venenosas. Aprender como navegar nesses obstáculos organizacionais pode ser a diferença entre lançar um produto ou ter o mesmo produto cancelado.
Por fim, nós consideramos os usuários do seu software. As vezes nós esquecemos que eles existem, mas eles são a seiva do seu projeto. Sem usuários, seu software não tem propósito. Os mesmos princípios do HRT que prosperam na sua equipe podem e devem ser aplicadas para a forma que você interage com seus usuários, e os benefícios colhidos são tremendos.
Vamos parar por um momento.
Quando você pegou esse livro, você provavelmente não estava pensando que estava entrando em um tipo de grupo de apoio semanal. Simpatizamos. Lidar com problemas sociais pode ser difícil. Pessoas são confusas, imprevisíveis, e frequentemente irritantes para interagir. Antes de colocar energia em analisar situações sociais e fazer movimento estratégicos, é tentador amortizar todo o esforço. É muito mais fácil sair com um compilador previsível, não é? Porque se incomodar com as coisas sociais em tudo?
Aqui está uma citação de uma fomas palestra de Richard Hamming:
A moral disso é: não subestime o poder de jogar o jogo social. Isso não é sobre enganar ou manipular pessoas; isso é sobre criar relacionamentos para ter as coisas prontas, e relacionamentos sempre duram mais que projetos.
terça-feira, março 8
Organização pessoal no Ubuntu
1. Coleta de informações
Com o Ubuntu você possui diversas caixas de entrada que podem ser usadas para aumentar a sua produtividade. A primeira, e mais óbvia, é a caixa de entrada de emails no Evolution, nele é possível agrupar as mensagens vindas das suas contas de e-mail e organiza-las como achar melhor. A segunda caixa de entrada está nas anotações do Tomboy, durante uma reunião ou evento, ou até mesmo quando está tendo uma idéia, você pode ir adicionando notas de forma rápida e intuitiva, além disso ele permite organizar as notas em catálogos e criar um relacionamento entre as notas simplesmente digitando o título de uma na descrição de outra, as anotações também estão disponíveis no Evolution, mas com o nome de memorandos. A terceira opção é o Gwibber, ele busca informações das suas redes sociais, e atualmente, pelo menos para mim, a maioria das coisas que quero ler ou saber mais vem do Twitter ou do Facebook, sendo assim, também podemos considerar as redes sociais como uma caixa de entrada mais rápida, só faltou no Gwibber uma forma simples de colocar as mensagens em alguma lista organizacional.
2. Organização dos dados coletados
Agora que você aprendeu como tirar as coisas da sua cabeça usando as ferramentas que já vem no Ubuntu, está na hora de aprender a separar esses dados em listas de tarefas, eventos no calendário e arquivos de referência. Usando o Evolution, você pode criar listas de tarefas categorizadas, nas tarefas você pode associar um e-mail ou um arquivo que está salvo no seu computador, pode definir uma data de início e um prazo e também pode atribuir uma prioridade. O mesmo se aplica a agenda do Evolution, que permite até sincronizar os eventos com a agenda do Google. Como arquivo de referência rápida você pode usar as notas do Tomboy, colocadas em um catálogo especial ou criar uma lista para os memorandos do Evolution. Caso algo que apareça nas minhas caixas de entrada possa se tornar uma referência para projetos futuros, mas não precise consultá-los com certa freqüência, como no caso dos arquivos na referência rápida, simplesmente os armazeno em um diretório que batizei de "Biblioteca" dentro do meu diretório pessoal. Nesse diretório coloco PDFs que recebi por email, scans de revistas e impressões em PDF de artigos que li na web. A minha biblioteca já possui um bom conteúdo que as vezes "salva minha vida" nos apertos que um branco geral pode causar.
3. Mantendo o sistema em funcionamento
Todos esses recursos disponibilizados no Ubuntu podem ser inúteis caso não tenhamos uma disciplina fiel de consultar nossas caixas de entrada e arquivos de referência rápida. O Ubuntu também dá uma força para nos tornar mais disciplinados. Sempre que inicia o computador, automaticamente as suas tarefas, eventos e notas são carregados, o Evolution se encarrega de recordá-lo das pendências em sua agenda e ainda mostra as suas tarefas no menu do relógio, assim fica difícil se esquecer de algo. De qualquer forma, o alicerce principal desse sistema de organização é você, se não usá-lo corretamente ele se tornará inútil.
4. Ferramentas adicionais
Caso precise de mais recursos na organização de listas, recomendo o Getting Things Gnome, já usei por um longo tempo e acredito que o único sistema deste tipo mais fácil de usar do que ele seja o site Remember the milk. O GTG, como é popularmente conhecido, permite criar várias listas de tarefas e associá-las a cores, as tarefas podem receber prazos e etiquetas, deixei de usá-lo simplesmente porque quase tudo que preciso colocar em uma lista está no meu e-mail, então o Evolution tornou o processo mais rápido e menos repetitivo.
Para organizar as suas idéias durante um brainstorm, uso e recomendo o FreeMind, um pequeno aplicativo que permite criar mapas mentais de forma simples, com certeza irá ajudar a tirar as idéias da sua cabeça, aliás, usei ele para escrever este artigo.
Fica ai a minha dica, agora é só instalar o Ubuntu para aproveitar todos os recursos que ele disponibiliza, e o melhor, sem custos e licenças de teste. Até a próxima!
Links de referência:
Evolution - http://projects.gnome.org/evolution/
Tomboy - http://projects.gnome.org/tomboy/
Gwibber - http://gwibber.com/
Getting Things Gnome - http://gtg.fritalk.com/
FreeMind - http://freemind.sourceforge.net/wiki/index.php/Main_Page
Ubuntu - http://ubuntu.com/
A arte de fazer acontecer (Getting Things Done) - http://www.submarino.com.br/produto/1/1062057/arte+de+fazer+acontecer,+a
segunda-feira, dezembro 13
Eu na comunidade Ubuntu
- Wiki do Ubuntu-BR: http://wiki.ubuntu-br.org/LuizSilva
- Wiki do Ubuntu.com: https://wiki.ubuntu.com/folksilva
- Launchpad: https://launchpad.net/~folksilva
domingo, novembro 21
Análise e Projeto Orientado a Objetos - Parte 2
Representa um agrupamento das classes e interfaces, pode demonstrar a decomposição do sistema em sub-sistemas ou camadas.
Diagrama de objetos
Fornece uma visão do sistema em determinado momento, descrevendo o estado e relações dos objetos. Um objeto pode ser nomeado ou anônimo e é representado quase como as classes.
Diagrama de atividades
É um diagrama que apresenta um comportamento do sistema, focado na descrição da ordem dos eventos. É composto por:
- Estado inicial: Representa o começo de tudo.
- Estados de ações: Representam uma ação no sistema.
- Estado final: Representa o fim do fluxo.
- Transições: Representam a passagem de um estado para outro
- Decisões: Ramificações (caminhos alternativos) que dependem de uma tomada de decisão.
- Bifurcações e Uniões: Representam atividades que podem ocorrer em paralelo, a bifurcação representa o começo e pode receber várias entradas, a união representa o fim e tem apenas uma saída
- Raias de natação: Usadas para mostrar quem é o responsável por determinadas atividades.
- Fluxo de Objetos: Um complemento ao diagrama que apresenta o estado e/ou os atributos de um objeto relacionados a uma ação.
quarta-feira, novembro 17
Java - Collections
A Collection se divide básicamente em Listas e Conjuntos.
Veja abaixo as principais características de cada classe:
Listas:
- Permitem repetição
- Mantêm a ordem de inserção
- A busca é feita diretamente pelo índice, por isso é extremamente rápido
- A inserção e remoção dependem da quantidade de itens na lista
- A busca, inserção e remoção são feitas de forma linear, dependem da quantidade de itens na lista
- Não permitem repetição
- Não mantêm a ordem de inserção
- Mistura um array com uma lista ligada
- A busca é muito eficiente
- A inserção e remoção também são muito eficientes
- É impossível determinar a ordem de saída dos dados
- É balanceada automáticamente
- A busca, inserção e remoção são eficientes
- A saída dos dados sempre estará ordenada
Map:
- É um conjunto de pares
- As chaves não podem ser repetidas
- O percurso é feito através das chaves
- Se divide em HashMap e TreeMap
- É um mapa, mas com chaves e valores do tipo String
- Geralmente usado para armazenar configurações da aplicação
- Para obter o Iterator de uma Collection utiliza-se o método iterator() da Collection
- Para saber se existe um próximo item na Collection utiliza-se o método hasNext() do Iterator
- Para retornar o próximo item da lista, utiliza-se o método next() do Iterator
Análise e Projeto Orientado a Objetos - Parte 1
- Objeto: Uma instância de uma classe
- Classe: Um conjunto de características e funcionalidades que definem objetos
- Atributos: Características de uma classe, os dados do objeto
- Métodos: Uma ação executada, algo que o objeto faz
- Mensagem: Uma chamada de método
Notação: Um retângulo dividido em 3 partes, na primeira fica o nome, na segunda os atributos, na terceira os métodos e caso seja necessário é possível criar mais dicisões.
Visibilidade: Para os atributos e métodos da classe pode ser usada as seguintes notações de visibilidade:
- + (público): O atributo/método pode ser acessado por qualquer outra classe
- - (privado): O atributo/método apenas poderá ser acessado pela própria classe
- # (protegido): O atributo/método poderá ser acessado apenas pela própria classe e suas descendentes na herança
- ~ (pacote/default): O atributo/método pode ser acessado pelas classes que estão no mesmo pacote
Relacionamento entre classes
Associação: Representa uma relação “tem um” ou “existe um”. É quando uma classe faz referência a outra classe num determinado período de tempo. Um objeto pode existir sem que o outro exista. É representado por uma linha entre as duas classes. É subdividido em:
Agregação: Uma relação forte “tem um” que define uma propriedade, quando a classe que se relaciona deixa de existir, a classe relacionada continua existindo mas perde parte do sentido de existência. É representado por uma linha, no lado da classe que se relaciona coloca-se um diamante sem preenchimento e no lado da classe relacionada coloca-se uma seta.
Composição: Uma relação muito forte “todo-parte” que diz que uma classe “é parte de” outra classe. Quando a classe que se relaciona é destruída, a relacionada também será. É representado por uma linha, no lado da classe que se relaciona coloca-se um diamante preenchido e no lado da classe relacionada coloca-se uma seta.
Generalização: Representa uma “herança”. De uma classe mais geral para uma classe mais específica. É representada por um linha, na ponta da classe generalizada coloca-se um triângulo.
Dependência: É a relação mais fraca, acontece quando uma classe usa outra classe através da chamada de um método estático ou quando é usado como parâmetro de um método. É representado por uma linha tracejada apontando para a classe que é usada.
Reconhecimento de classe
- Substantivos: se transformam nas classes. Ex.: Pessoa, Carro, Escola.
- Adjetivos: se transformam nos atributos de uma classe. Ex.: cor, peso, altura, endereço.
- Verbos: se transformam nos métodos de uma classe. Ex.: estudar, andar, acelerar.
terça-feira, setembro 14
Ensine o Ubuntu a falar
Primeiro precisamos instalar o "voz" do ubuntu. Eu utilizei o Espeak, para instalá-lo basta clicar nesse link ou digitar o seguinte comando:
~$ sudo apt-get install espeak
Depois de instalado, seu ubuntu já será capaz de falar, faça um teste:
~$ espeak "Hello, world with Espeak!"
Existem variações da voz para masculino, feminino e especiais:
~$ espeak -vpt+m1 "Voz masculina 1"
~$ espeak -vpt+m2 "Voz masculina 2"
~$ espeak -vpt+m3 "Voz masculina 3"
~$ espeak -vpt+m4 "Voz masculina 4"
~$ espeak -vpt+m5 "Voz masculina 5"
~$ espeak -vpt+m6 "Voz masculina 6"
~$ espeak -vpt+m7 "Voz masculina 7"
~$ espeak -vpt+f1 "Voz feminina 1"
~$ espeak -vpt+f2 "Voz feminina 2"
~$ espeak -vpt+f3 "Voz feminina 3"
~$ espeak -vpt+f4 "Voz feminina 4"
~$ espeak -vpt+croak "Voz especial coaxada"
~$ espeak -vpt+whisper "Voz especial susurrada. Como o Darth vader!"
Agora vamos adicionar ao ubuntu a capacidade de contar piadas e pensamentos, para isso usamos um aplicativo popular no mundo linux chamado fortunes. Para instalá-lo basta clicar aqui ou digitar no terminal:
Você pode fazer isso simplesmente digitando:
Vamos criar agora o script que dará boas vindas e falará uma mensagem todas vez que efetuar login. No seu editor de texto favorito digite o seguinte script:
minuto=`date +%-M` # O minuto atual sem preenchimento de zero a esquerda
data=`date +%A` # O nome do dia (segunda, terça etc.)
dia=`date +%-d` # O número do dia atual
mes=`date +%B` # O mês por extenso
ano=`date +%Y` # O ano
Salve como saudação.sh na sua pasta home e atribua a permissão de execução com o comando chmod +x saudação.sh. Para que esse script seja executado toda vez que efetuar o login, basta adicioná-lo nos aplicativos da sessão, siga os passos:
Através do menu Sistema->Preferências abra Aplicativos da sessão.
Na janela que surgir clique em adicionar.
Em nome coloque "Saudação" e em comando "~/saudação.sh". Clique em Adicionar e pronto.
Toda vez que efetuar login você ouvirá as boas vindas do Ubuntu junto com uma piadinha ou um pensamento, muitas vezes ele diz o que esperavamos ouvir.
quarta-feira, agosto 25
Sustentabilidade para empresas
A sustentabilidade permite que a empresa se arrisque com certa segurança, uma empresa que realmente implanta métodos totalmente sustentáveis tem o apoio da sociedade, por isso se torna muito poderosa.
Sustentábilidade |
Para ser sustentável é preciso entender a sustentabilidade. Ela pode ser dividida em três partes. Meio-ambiente, sociedade e economia. A maioria das empresas usam apenas a sustentabilidade econômica, mas ela sozinha não é suficiente.
Meio-ambiente, o assunto do século, todos sabemos que o aquecimento global é um fato, e que cada vez mais surgem problemas relacionados a natureza, ela parece estar se vingando dos maus tratos milenares da sociedade. É possível aliar-se ao meio ambiente para sobreviver a crises, uma forma é praticando coleta seletiva e reciclagem, também é possível reduzir o consumo de água e energia simplesmente mudando alguns hábitos. Plantas dentro de um escritório ajudam a manter a temperatura amena, além de absorver energias que podem provocar estresse.
Uma empresa não pode se dizer sustentável sem apoiar a comunidade periférica, é ela que vai cuidar da imagem da empresa através do marketing mais eficiente de todos os tempos, o boca-a-boca. Apoiar a festinha de São João do bairro ou até mesmo promover palestra e cursinhos abertos a comunidade local cuida para que a imagem da empresa seja divulgada como sociável. Normalmente as empresas ficam distantes da comunidade, mesmo quando a distância física é apenas alguns metros, quebrar essa imagem dá força política para uma empresa.
Para a sustentabilidade econômica não é preciso muitas palavras, ela já está nas nossas mentes e é moldada pelo formato da sociedade, só é preciso saber que sustentabilidade econômica é a capacidade da empresa de sobreviver sem consumir ou descartar seu próprio patrimônio, material e humano.
Uma barreira para a implantação de métodos sustentáveis em uma empresa muitas vezes está dentro dela, as pessoas não entendem ou não se comprometem com a empresa e nem com os objetivos dela, é cada um por si, sobrevivendo a rotina e enfraquecendo a equipe. Para corrigir isso, é preciso entender como as pessoas evoluem. Todos nós estamos em constante formação, a todo momento, até quando dormimos, é essa capacidade que fez a humanidade ser o que é, a espécie dominante. Utilizando o aprendizado de cada pessoa é possível aumentar a confiança da equipe e criar um censo comum de compromisso e lealdade aos objetivos da empresa. Não é possível exigir do funcionário lealdade a empresa, mas é possível deixá-lo leal aos objetivos e é isso o que importa.
Formação |
Antes de tudo, é preciso definir os reais objetivos da empresa a curto, médio e longo prazos e depois usar metodologias transdisciplinares para colocá-los como objetivos pessoais de cada um nos três níveis de formação. O primeiro nível, auto formação, é a formação pessoal, o que ela quer para ela, seus sonhos e objetivos pessoais. O segundo nível é a hétero formação, a formação da pessoa voltada para os que estão a sua volta, família, amigos e colegas de trabalho. O terceiro e último nível de formação é talvez o mais importante e o mais difícil de capitar, envolve os objetivos da pessoa para o resto do mundo, é a eco formação, ela parece meio abstrata na mente das pessoas e muitas vezes é confundida com a hétero e a auto formação, forçar as pessoas imaginarem as consequências dos seus atos além dos horizontes pode tornar-los parceiros inseparáveis, pois a maioria das pessoas não possui uma eco formação sólida e acaba a transformando em desejo de fama.
Para concluir, uma forma de facilitar a evolução da equipe é criando atividades que forcem confiança e criatividade. Abra as portas para novas ideias, elas podem mudar completamente o futuro da empresa, para melhor.