tag:blogger.com,1999:blog-185221782024-03-14T13:28:53.560-03:00d.a.dominguesdesenvolvimento e coisas interessantesDanielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.comBlogger130125tag:blogger.com,1999:blog-18522178.post-87423709462998146522017-02-08T18:00:00.003-02:002017-02-08T18:01:31.391-02:00Ferramentas online grátis de gestão de timesHoje me perguntaram sobre ferramentas de kanban online gratuitas. Há um tempo pesquisei soluções para gestão de projetos e refiz o apanhado completando com algumas informações. Existem ferramentas bem interessantes para gestão e trabalho em time disponíveis gratuitamente. Segue uma lista com serviços gratuitos:<br />
<br />
<b>Trello</b> (<a href="http://www.trello.com/">http://www.trello.com</a>)<br />
Ferramenta de gestão de tarefas bem objetiva e com recursos bacanas de visualização e compartilhamento de arquivos. Por possuir aplicativo móvel, permite seu uso em qualqur lugar. Recomendo para pequenos projetos e uso pessoal como organização de uma festa, por exemplo. Acho muito pŕatico, customizável e fácil de usar.<br />
<br />
<b>Asana</b> (<a href="http://www.asana.com/">http://www.asana.com</a>)<br />
Mesmas funcionalidades do Trello, mas com layout bem diferente. Possui chat entre os membros, compartilhamento de arquivos e aplicativo móvel. Foi o primeiro serviço desse tipo que utilizei e gostei.<br />
<br />
<b>Kanbanchi</b> (<a href="http://www.kanbanchi.com/">http://www.kanbanchi.com/</a>)<br />
Foco no kanban, permite visualização de cronograma de marcos e compartilhamento. É integrado com uma conta do Google para armazenamento dos dados. Muito interessante mesmo. Vale a pena conferir.<br />
<br />
<b>Taiga</b> (<a href="http://taiga.io/">http://taiga.io</a>)<br />
Projeto open source que possui o serviço gratuito e pago. Para projetos com poucos membros, o plano gratuito atende muito bem com recursos de kanban, visualização de burndown, tarefas, issues, wiki, épicos com subprojetos entre outros. Bem completo para gestão de produtos e trabalho em time. Recomendo para pequenos projetos e times e também uso empresarial baixando o projeto e rodando em infra própria ou pelo serviço pago.<br />
<br />
<b>Volerro</b> (<a href="http://www.volerro.com/">http://www.volerro.com</a>)<br />
Possui bastante recursos de forma simples. Tem calendário, kanban, compartilhamento de arquivos, rastro de tarefas por pessoa, chat e dashboard de trabalho. Não possui app e o plano gratuito suporta até 3 projetos.Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-67175864592948201662017-01-27T18:08:00.000-02:002017-01-27T18:08:57.553-02:00Alguns SGBD NoSQL com DockerArangoDB e OrientDB são SGBD multi-modelo, ou seja, trabalham, conforme configuração, orientados a documento, chave-valor e até grafo. O Neo4J trabalha com o modelo de grafo somente.<br />
Se quiser fuçar, e encorajo a isso!, você pode instalar diretamente no su sistema operacional ou usar o Docker e manter o isolamento da instalação.<br />
<br />
Instalação stand alone dos SGBD acima usando seu container Docker:<br />
<br />
ArangoDB:<br />
<code>
docker run -p 8529:8529 arangodb/arangodb:3.1.9
</code>
<br />
<br />
OrientDB:<br />
<code>
docker run -d --name orientdb -p 2424:2424 -p 2480:2480 -e ORIENTDB_ROOT_PASSWORD=root orientdb:latest
</code>
<br />
<br />
Neo4J:<br />
<code>
docker run \<br />
--publish=7474:7474 --publish=7687:7687 \<br />
--volume=$HOME/neo4j/data:/data \<br />
--volume=$HOME/neo4j/logs:/logs \<br />
neo4j:3.1<br />
</code>
Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-83009906545313449082017-01-20T08:51:00.002-02:002017-01-20T08:51:57.131-02:00Opções leves para abstração de banco de dados em PHPGosto de soluções <b>simples e leves</b> para meus projetos. No caso de abstração de banco de dados tradicionais (relacionais), vejo duas escolhas: ou trabalhar com o <b>PDO</b> (nativo do PHP) ou com uma <b>abstrção simples que facilite o trabalho</b>. Como nem sempre deseja-se um mapeamento objeto-relacional, não há como pensar que a solução deve ser um ORM (object relational mapper); é uma opção. Como restrição para essa lista é <b>a leveza, a relativa estabilidade e a simplicidade </b>da solução. Coloquei "relativa estabilidade" pois a evolução é e deve ser constante. Segue uma lista do que achei mais interessante:<br />
<div>
<br /></div>
<div>
<b>RedBeanPHP (<a href="http://www.redbeanphp.com/">http://www.redbeanphp.com/</a>)</b></div>
<div>
ORM simples e estável em um único arquivo de fácil configuração e métodos estáticos. Já está na versão 4 e tem bastante recurso interessante além do básico que todos os ORMs possuem. Como ORM, recomendo.</div>
<div>
<br /></div>
<div>
<b>Spot ORM (<a href="http://phpdatamapper.com/">http://phpdatamapper.com/</a>)</b></div>
<div>
Mapeador de Dados feito sobre o Doctrine BAL, possui uma característica que gosto como opção de trabalho: a definição da estrutura de dados (campos da tabela). Isso pode ser muito útil, pois essa restrição aos dados pode lhe dar flexibilidade na sua solução.</div>
<div>
<br /></div>
<div>
<b>LessQL (<a href="http://lessql.net/">http://lessql.net/</a>)</b></div>
<div>
Inpirado no NotORM, foi escrito a partir de suas características de uma forma a agregar alguns benefícios dos ORMs sem estragar o conceito. A nomentclatura dos métodos não me agrada muito, mas possue um padrão que facilita o trabalho. Apesar de a PK, por exemplo, ser "id" por padrão, é customizável, o que também é interessante. Como eu curtia o NotORM, sou suspeito a opinar.</div>
<div>
<br /></div>
<div>
<b>Medoo (<a href="http://medoo.in/">http://medoo.in/</a>)</b></div>
<div>
Se intitula como o framework PHP mais leve para acelerar o desenvolvimento. Realmente é bem simples e fácil de configurar. Possui, assim com o o RedBean um único arquivo a ser incluído no seu script ou na sua classe. Tem os métodos simples para trabalho com os dados e que ajudam em vários aspectos.</div>
<div>
<br /></div>
<div>
Todos dessa lista trabalham com os principais bancos como MySQL, SQLite e Postgres (e outros a ver em seus sites), pois usam o PDO por trás dos panos. </div>
Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-22230108185186898262017-01-04T14:20:00.000-02:002017-01-27T18:13:54.165-02:00Agilidade é um meio, não o fimEsse excelente artigo escrito por Alisson Vale, trata bem da questão que sofremos por conta do modismo e das ideologias.<br />
<br />
<a href="https://medium.com/software-zen/a-morte-do-agilismo-e-o-que-isso-pode-significar-pra-voc%C3%AA-4b365a289301#.4p6aj68pf">https://medium.com/software-zen/a-morte-do-agilismo-e-o-que-isso-pode-significar-pra-voc%C3%AA-4b365a289301#.4p6aj68pf</a><br />
<br />
Ignorar o contexto e "usar por usar" ou "fazer por fazer" tem um custo alto e que muitas vezes fica imperceptível até surgir aos nossos olhos como fracasso.<br />
Para os desenvolvedores, sendo mais específico: metodologias, frameworks, patterns, práticas... entenda em que podem ser usados e o porque de seu uso, além das interdependências de seus pedaços. Entenda o conceito por trás de cada coisa sem ficar preso a ela. Abra sua mente. Isso amplia seu conhecimento e, consciente de seus problemas reais, permite que a ferramenta certa seja usada na hora e na situação mais adequada. Como dizem: não pense fora da caixa; pense como se não houvesse caixa.<br />
É uma tarefa árdua para quem aprendeu que existe um "melhor", um "correto" e vive na zona de conforto sem desafiá-la como se o mundo tivesse que mudar aos moldes de seu restrito conhecimento. Somos moldados assim e é difícil lidar com isso.<br />
Nosso objetivo está claro? Vamos atender ao cliente? Vamos desenvolver o melhor produto dadas as restrições? Sendo assim, podemos utilizar técnicas e ferramentas de um grande leque que temos disponível. Mas quais? Simplesmente... depende! Temos acesso a muito conhecimento explícito hoje em dia (a internet a total disposição!), que junto ao nosso conhecimento tácito, à nossa experiência e à consciência do meio que nos cerca podemos conseguir muito e garantir a melhoria contínua!<br />
<br />
E a agilidade? Continua ajudando muito, obrigado! Ela auxilia a alcançarmos o objetivo. Ninguém e nenhuma empresa deve ter como meta simplesmente ser ágil. Não devemos ser por ser. O objetivo é resolver o problema; entregar a solução para o cliente. Então, agilidade é um meio, não o fim.Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-66047547424204802012016-12-20T07:49:00.000-02:002016-12-20T07:49:28.382-02:00Trabalhando com distribuição normal em RO R possui 2 principais funções para trabalharmos com distribuição normal: pnorm e qnorm.<br />
<br />
Se consultarmos o help do R, ambas as funções fazem parte do grupo "normal distribution" com pnorm, qnorm, rnorm e dnorm. Apresentarão vários parâmetros e são muito completas em seus objetivos. Porém, para um uso básico, vamos ver como podem nos ajudar.<br />
<br />
<b>pnorm</b> - função de distribuição e probabilidade: você passa o valor de análise de probabilidade, a média e o desvio padrão; ela retorna a probabilidade de um evento ocorrer até o valor analisado.<br />
<br />
<code>
pnorm(50, mean=45, sd=3.2)<br />
[1] 0.9409149
</code>
<br />
<br />
<b>qnorm</b> - função de quantile: você passa a probabilidade percentual da análise, a média e o desvio padrão; ela retorna o valor.<br />
<br />
<code>
qnorm(0.20, 77, 5)<br />
[1] 72.79189
</code>
Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-40327497896642718272015-06-28T23:07:00.000-03:002015-06-28T23:07:21.130-03:00Desabilitar núcelos/cores do seu procesador no UbuntuExistem motivos para você desabilitar e/ou reabilitar <i>cores</i> do seu processador: vida da bateria do notebook, problema com algum dos núcleos, controle de uso do seu hardware etc. Os seguintes comandos são muitos úteis no Ubuntu/Debian.<br />
<br />
Para obter informaçõesdo seu processador:<br />
<code>cat /proc/cpuinfo</code><br />
<br />
Para desabilitar ou habilitar um core do seu processador:<br />
Desabilitar:<br />
<code>echo 0 | sudo tee /sys/devices/system/cpu/cpu1/online</code><br />
<br />
Habilitar:<br />
<code>echo 1 | sudo tee /sys/devices/system/cpu/cpu1/online</code><br />
<br />
Lembre-se de que é necessário indicar o ID do núcleo e o primeiro é zero. Por exemplo, o seu processador tem 3 núcelos: 0, 1 e 2.<br />
<br />
Veja os seguintes exemplos. <br />
<br />
Desabilitando o primeiro núcleo:<br />
<code>echo 0 | sudo tee /sys/devices/system/cpu/cpu0/online</code><br />
<br />
Habilitando o terceiro núcleo:<br />
<code>echo 1 | sudo tee /sys/devices/system/cpu/cpu2/online</code><br />
<br />
<br />
Fonte: <a href="http://www.upubuntu.com/2011/09/how-to-disable-cpu-core-on-ubuntudebian.html"><i>http://www.upubuntu.com/2011/09/how-to-disable-cpu-core-on-ubuntudebian.html</i></a><br />
<br />
<br />Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-57373081439773159742015-01-29T23:08:00.000-02:002015-01-29T23:08:34.690-02:00Editores para ChromeUtilizando mais o Google Chrome para testes e desenvolvimento, além de ver uma boa performance do Chromebook (notebook básico com Chrome OS e 16GB de flash voltado para serviços na nuvem), que é bem interessante para levar em viagens e para realizar tarefas simples do dia a dia como navegar e acessar e-mails, resolvi montar essa lista de apps pro navegador que nos auxiliem no desenvolvimento através dele ou do Chrome OS.<br />
<br />
<b>ZED</b> (app <a href="https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp?hl=pt-BR">https://chrome.google.com/webstore/detail/zed-code-editor/pfmjnmeipppmcebplngmhfkleiinphhp?hl=pt-BR</a> / site <a href="http://zedapp.org/">http://zedapp.org</a>) - funciona offline e tem bastante recurso para diversas linguagens desde HTML, JS e CSS a PHP, Lua, Python, Markdown etc; permite leitura e gravação em serviços remotos como Github ou Dropbox, por exemplo.<br />
<br />
<b>Coding the Web</b> (app <a href="https://chrome.google.com/webstore/detail/coding-the-web/pbinfbikhndabcdlabpcbhggkcdakgfg?hl=pt-BR">https://chrome.google.com/webstore/detail/coding-the-web/pbinfbikhndabcdlabpcbhggkcdakgfg?hl=pt-BR</a>) - como o nome diz, o foco é HTML, JS e CSS; o que chama a atenção é que você edita em janelas internas ao centro, possui um menu de facilidades à esquerda, e visualiza em tempo real à direita.<br />
<br />
<b>Codenvy IDE</b> (app <a href="https://chrome.google.com/webstore/detail/codenvy-ide/lefigjbiimiemfhjmibbgemkpenelmag?hl=pt-BR">https://chrome.google.com/webstore/detail/codenvy-ide/lefigjbiimiemfhjmibbgemkpenelmag?hl=pt-BR</a> / site <a href="https://codenvy.com/">https://codenvy.com/</a>) - com suporte às principais linguagens web e alguuns frameworks, possui interface ao Github, BitBucket e serviços em nuvem.<br />
<b><br /></b>
<b>Codeanywhere</b> (app <a href="https://chrome.google.com/webstore/detail/codeanywhere/jdofbmaiblhheoneemdjccjeeihbiabl?hl=pt-BR">https://chrome.google.com/webstore/detail/codeanywhere/jdofbmaiblhheoneemdjccjeeihbiabl?hl=pt-BR</a>) - leve, fácil de usar e com funçaõ de highlight e de auto-completar para diversas linguagens, se conecta com servidores FTP, SFTP, Dropbox, Google Drive e Github.<br />
<br />
Bom desenvolvimento! Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-54912479163337052942015-01-06T00:51:00.000-02:002015-01-06T00:51:04.422-02:00Algumas frases interessantes para começar 2015Esta é uma seleção de frases relacionadas a empreendedorismo, educação, pessoas e inovação para iniciarmos o ano.<br />
<ul>
<li>"Se eu perguntasse para os meus clientes o que eles queriam, eles diriam cavalos mais rápidos." - Henry Ford</li>
<li>"Seja a mudança que quer ver no mundo." - Dalai Lama</li>
<li>"Eu já errei mais de 9.000 arremessos na minha vida. Perdi quase 300 jogos. Em 26 ocasiões me confiaram o arremesso do jogo e eu errei. Eu falhei muitas e muitas vezes na minha vida, e é por isso que venci." - Michael Jordan</li>
<li>"Contrate caráter, treine técnica." - Peter Schutz</li>
<li>"Não vá onde o caminho pode te levar, vá para onde não há caminho e deixe sua marca." - Ralph Waldo Emerson</li>
<li>"O dinheiro faz homens ricos, o conhecimento faz homens sábios e a humildade faz grandes homens." - Mahatma Gandhi</li>
<li>"O melhor indicador do caráter de uma pessoa é como ela trata as pessoas que não podem lhe trazer benefício algum." - Abigail van Buren</li>
<li>"Um gênio é uma pessoa de talento que faz toda a lição de casa." - Thomas Edison</li>
<li>"Liderança: A arte de fazer com que alguém realize algo que você deseja porque ele quer fazê-lo." - Dwight D. Eisenhower</li>
<li>"O poder não corrompe as pessoas; as pessoas corrompem outras pessoas." - William Gaddis</li>
<li>"As invenções são resultado de um trabalho teimoso." - Santos Dumont</li>
<li>"Sorte é o que acontece quando a preparação encontra a oportunidade." - Elmer Letterman</li>
<li>"Não são os grandes planos que dão certo. São os pequenos detalhes." - Stephen Kanitz</li>
<li>"Não existe caminho para a felicidade. A felicidade é o caminho." - Mahatma Gandhi</li>
<li>"Treine as pessoas suficientemente bem para que elas possam ir embora, trate-as bem o suficiente para que elas não queiram." - Richard Branson</li>
</ul>
Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-91143928859429024582014-10-23T21:27:00.005-02:002014-10-23T21:30:56.048-02:00Resolvendo problema com libz.so.1 ao usar ADT no Ubuntu 14.04 x64Descompactei o Eclipse com ADT (Android Developer Tools), baixado do <a href="https://developer.android.com/sdk/index.html">site de desenvolvimento do Android</a>, atualizei os pacotes conforme reza a boa prática (Android SDK Manager) e quando fui criar um projeto para testar, levei um erro:<br />
<br />
<code>
.../android-4.4W/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file...<br />
</code>
<br />
Quebrei a cabeça um tempo, pesquisei na internet, achei parte da solução: a instalação do pacote "lib32z1". Porém não dava certo... não permitia instalar... mas por quê? Simplesmente precisava atualizar o apt-get.<br />
<br />
Segue a solução completa:<br />
<br />
<code>
sudo apt-get update<br />
<br />
</code>
<code>
sudo apt-get install lib32z1<br />
</code>
<br />
<br />
Pronto!<br />
<br />
Espero ter ajudado!Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-2198406608356568362014-08-18T08:44:00.000-03:002014-08-18T08:44:01.238-03:00Circuito Santista de Pedestrianismo 2014 - Segunda EpataA primeira etapa do circuito santista foi a "Porto-Centro" com um trajeto muito interessante. A cidade é plana, mas pegamos um viaduto, o que, apesar de pequeno, altera o esforço/tempo dos atletas. Excelente prova!<br />
A segunda etapa foi da Zona Noroeste da cidade. O trajeto é 100% plano o que ajuda os atletas a manterem o ritmo ou aplicar uma estratégia de forma mais eficiente.<br />
<br />
O bom destas provas é que a quantidade de participantes não passa de duas mil (percurso de 10km), o que ajuda a organização e até mesmo o ritmo da prova, pois não tem super-herois nem câmera de TV para ninguém ficar pulando e preocupado em aparecer... as pessoas estão lá para correr e fazer seu tempo e por isso todos gostam deste campeonato (mesmo sendo amadores como eu).<br />
Não quero ser o cara que fala mal ou acha defeito, mas preciso escrever. Assim como a maioria dos santistas que participam - se não todos - eu adoro estas provas e tenho orgulho de a prefeitura organizar um campeonato assim ao custo de 1km de alimento no início do ano para os corredores. Mas tudo tem o que melhorar e esta etapa teve algo a mais (último item).<br />
<br />
Nas etapas, a largada não tem um sinal sonoro ou aviso da organização mesmo que pelo microfone de que o tempo começa a ser marcado; para quem fica atrás só sabe por que olha o cronometro andando e a galera avançando. Sugiro uma <b>notificação de largada mais explícita</b>.<br />
<br />
O tempo começa a ser marcado de forma global e não individual; quem fica para trás perde 30..40..50 segundo até passar pela real largada e tem seu tempo prejudicado. Poderiam colocar um <b>tapete de marcação na largada ao passar pelo "portal"</b>, assim como acontece em outras provas e mesmo nessa no ponto intermediário e na chegada.<br />
<br />
Recebemos um número no início do ano e temos que correr as 5 etapas com ele; o meu está todo amassado. Não vejo grandes problemas com isso, está apenas por registro. Não julgo justo o gasto com a confecção do material mais 4 vezes por parte da prefeitura.<br />
<br />
Na segunda etapa passamos em frente a uma favela. Sem discriminação alguma, todos passaram em frente, assim como em todo o bairro, e sempre receberam apoio das pessoas, porém <b>alguns corredores foram assaltados</b>. Isso mesmo,<b> </b>assaltados. Não havia policiamento, apenas CET para controlar o tráfego de veículos a uns 2 quarteirões das passagens mais perigosas com relação a saída da comunidade, visão geral de alguma autoridade e tomada de ação. Quando o grupo passante era menor ou uma pessoa passava sozinha com uma distância razoável de outra, um indivíduo sacava sua arma e com ajuda de seus comparsas chegaram a levar relógio (tem alguns que além de cronômetro e monitor cardíaco tem até GPS) e tênis. Isto aconteceu mais de uma vez depois com pessoas de tempo 60min+. Me pergunto: a prefeitura e a polícia não imaginavam que isso poderia acontecer? Todos nós sabíamos desta possibilidade e certos locais são evitados no dia-a-dia por conta da violência, mas confiamos na organização e segurança provida, ou que deveria ser, pela prefeitura e a PM. Aqui fica minha maior crítica: a prefeitura deveria conhecer melhor a própria cidade ou não no mínimo resguardar os cidadãos participantes de algo de sua organização e evitar pontos inseguros. Foi <b>inocência ou displicência</b>? A polícia na entrada de uma comunidade como aquela poderia soar ostensivo e por isso creio que não fosse a melhor solução, mas algo poderia ser feito para que não acontecesse.<br />
<br />
Bom... tirando este último item, a organização está de parabéns. Tem algumas coisas que poderiam ser melhoradas para o ano que vem, mas são provas excelentes para nós santistas participarmos.<br />
<br />Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-90364682098321469662014-07-07T22:07:00.001-03:002014-07-07T22:07:31.595-03:00Ferramentas ágeis e gestão de tarefasSimilar ao post anterior, segue uma lista de ferramentas ágeis em plataforma web. Algumas têm foco na gestão de tarefas, mas podem ser usadas da mesma forma. Todas as listadas são ou tem planos gratuitos com certas limitações de quantidade de projetos e quantidade de colaboradores. Confira:<br />
<br />
serviço (limite de quadros; limitede usuários)<br />
<ul>
<li><a href="http://leankit.com/">http://leankit.com</a> (3 kanbans; até 10 usuários)</li>
<li><a href="http://www.swiftkanban.com/">http://www.swiftkanban.com</a> (10 quadros; 20 usuários)</li>
<li><a href="https://www.kanbanpad.com/">https://www.kanbanpad.com</a> (única opção de conta = free)</li>
<li><a href="http://flow.io/">http://flow.io</a> (1 quadro; 1 usuário)</li>
<li><a href="http://www.hansoft.com/">http://www.hansoft.com</a> (sem limite de projetos/programas; 9 usuários *)</li>
<li><a href="http://www.targetprocess.com/">http://www.targetprocess.com</a> (sem limite de projetos; até 5 usuários ¹) </li>
<li><a href="https://www.mavenlink.com/">https://www.mavenlink.com</a> (projetos, tarefas e colaboradores ilimitados ¹)</li>
<li><a href="https://asana.com/">https://asana.com/</a> (projetos ilimitados; até 15 colacoradores ¹)</li>
<li><a href="https://trello.com/">https://trello.com/</a> (projetos, tarefas e colaboradores ilimitados ¹)</li>
</ul>
<br />
<br />
* possui plano educacional mais completo que a versão gratuita<br />
¹ tem app para tablet/smartphoneDanielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-38293723437119670622014-07-02T23:35:00.002-03:002014-07-02T23:35:53.410-03:00Serviços de criação de vídeos e slidesNa internet existem vários serviços para a criação online (com disponibilização e acesso direto) de vídeos e apresentações de slides. Não estou falando de pacotes de escritório online com módulo de slides como MS PowerPoint, Google Presentation ou Zoho, mas de específicos nesse tipo de mídia. Alguns desses serviços possuem com planos pagos, porém alguns são gratuitos ou com opções de conta free. Normalmente o produto da opção gratuita possui uma marca do serviço e/ou tem recursos mais limitados para a produção. Segue uma lista simples e vale a pena dar uma olhada!<br />
<br />
<br />
<a href="http://www.powtoon.com/">http://www.powtoon.com</a> (vídeo com plano gratuito)<br />
<a href="http://www.sparkol.com/">http://www.sparkol.com</a> (vídeo 100% gratuito)<br />
<a href="http://www.rawshorts.com/">http://www.rawshorts.com</a> (vídeo com plano gratuito)<br />
<a href="http://www.animoto.com/">http://www.animoto.com</a> (vídeo com plano gratuito)<br />
<a href="http://www.slides.com/">http://www.slides.com</a> (slides com plano gratuito)<br />
<a href="https://www.haikudeck.com/">https://www.haikudeck.com</a> (slides 100% gratuito)<br />
<a href="http://www.emaze.com/">http://www.emaze.com</a> (slides com plano gratuito)<br />
<a href="https://www.prezi.com/">https://www.prezi.com</a> (slides com conta gratuita se pública)<br />
<a href="http://www.sliderocket.com/">http://www.sliderocket.com</a> (slides 100% gratuito com aplicativo)<br />
<br />
Existem serviços com foco na disponibilização desse tipo de conteúdo como <a href="http://slideshare.net/">slideshare.net</a> e o <a href="http://youtube.com/">youtube.com</a>, mas isso é assunto para outro post...<br />
<br />
<br />Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-91087170821017847692014-06-11T15:04:00.003-03:002014-06-11T15:04:46.721-03:00A Parábola dos Lenhadores<br />
Este conto eu ouvi do consultor da IBM Gustavo Grillo e achei uma excelente parábola sobre o <b>uso errado de uma ferramenta</b>.<br />
Consegui encontrar na internet o link do post do próprio Gustavo. Segue o link e o conteúdo da "estória".<br />
<a href="https://www.ibm.com/developerworks/community/blogs/rationalbrasil/entry/a_f_c3_a1bula_dos_lenhadores10?lang=en">https://www.ibm.com/developerworks/community/blogs/rationalbrasil/entry/a_f_c3_a1bula_dos_lenhadores10?lang=en</a><br />
<br />
Era uma vez, nas profundezas de uma densa floresta, uma vila de lenhadores. A vila era sustentada pelos lenhadores que cortavam árvores com seus reluzentes, ainda que antigos, machados. Eles eram bons nisso.<br />
A cada ano que passava eles precisavam cortar mais e mais árvores para acompanhar a demanda, que era cada vez maior. Ao mesmo tempo, alguns lenhadores, decepcionados com a vida dura que levavam, acabavam indo embora da vila para tentar novos trabalhos, e não eram substituídos pois não haviam mais jovens na vila.<br />
Um belo dia, um dos lenhadores pensou: "Não é possível, deve haver uma maneira melhor de fazer isso!" e resolveu viajar até uma vila do outro lado da montanha para descobrir como eles cortavam as árvores por lá.<br />
Eis que ele volta todo entusiasmado e com uma nova ferramenta: uma serra de corte transversal, dessas que lembram um serrote, só que com a lâmina bem mais comprida em que fica um lenhador de cada lado e quando um puxa o outro empurra. Ele havia aprendido como usar a nova serra e desenvolveu um novo processo para cortar as árvores com esta nova ferramenta.<br />
Este lenhador treinou toda a vila à exaustão, fazendo com que todos aprendessem a usar a nova serra e seguissem o novo processo. Os lenhadores se tornaram mais produtivos e ficaram felizes apesar de alguns pequenos problemas que a nova serra causava.<br />
Algum tempo depois, um vendedor itinerante chegou à vila dos lenhadores e percebeu que eles usavam a serra transversal. Ele reuniu os lenhadores e anunciou:"Eu tenho uma ferramenta que vai revolucionar a forma como vocês trabalham". E mostrou a ferramenta.<br />
Os lenhadores ficaram um pouco céticos, e disseram: "Ok, vamos testar a sua ferramenta, mas temos uma exigência. Sabe, nós gastamos tanto tempo e esforço, treinando no uso da serra transversal e no processo que nós não queremos mudar a forma como trabalhamos, nem o nosso processo. Deu muito trabalho desenvolver isso tudo e vamos tentar usar a sua ferramenta, mas do nosso jeito"<br />
O vendedor coçou a cabeça, ficou meio apreensivo, mas acabou concordando. Ele trouxe os melhores técnicos da sua empresa para ensinar os lenhadores a usar a nova ferramenta, mas depois de poucos dias de testes e demonstrações os lenhadores concluíram que eles eram mais produtivos com as suas velhas serras transversais do que com a nova ferramenta.<br />
Desapontado, o vendedor voltou com os técnicos para a sua empresa. O dono da empresa o chamou para que explicasse como não havia conseguido efetuar a venda:<br />
- Nós temos a melhor ferramenta do mercado para cortar madeira! Ela é insuperável no corte de árvores! A economia deles é baseada no corte de árvores! Como as demonstrações não mostraram isso?<br />
E ele respondeu:<br />
- Bom, nós realmente temos a melhor ferramenta. Mas os lenhadores precisariam ter ligado as motosserras, e as utilizado da forma que uma motosserra deve ser usada.<br />
<br />
<b>Moral da história:</b> Se você usa uma motosserra como machado, não reclame que ela não atende às suas necessidades.<br />
Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-40962509919175198072014-06-09T21:32:00.002-03:002014-06-09T21:32:39.816-03:00Funções principais para programação em RAntes de falar das funções principais, aquelas funções que a gente sempre vai usar, vou passar a tradução de "Por que usar R?" do site <a href="http://www.statmethods.net/">Quick-R - Stat Methods</a>:<br />
<br />
Se você atualmente usa outro pacote estatístico, pro que usar R?<br />
<ul>
<li>É gratuito! Se você é professor ou estudante, os benefícios são óbvios.</li>
<li>Roda em uma variedade de plataformas incluindo Windows, Unix e MacOS.</li>
<li>Provê uma plataforma sem paralelo para programação de novos métodos estatísticos de uma maneira fácil e direta... honesta.</li>
<li>Contém rotinas estatísticas avançadas ainda não disponível em outros pacotes.</li>
<li>Tem capacidades gráficas no estado-da-arte.</li>
</ul>
Bom... vamos ao objetivo principal do post: as funções interessantes, <b>funções principais de trabalho e para se usar no ambiente R</b>. A maioria delas tem mais parâmetros possíveis e só estão aqui as que trabalham com o ambiente e com os objetos (vetores, listas, matrizes etc), do post anterior. Há muitas outras funções com finalidade matemática, geração de gráficos entre outras, mas vamos ver um pouco de cada vez...<br />
<br />
Geral:<br />
<b>help(nome_da_funcao)</b> # abre no navegador a definição/ajuda da função; no RStudio a página é aberta em uma janela lateral.<br />
<b>?função</b> # idem ao help.<br />
<b>getwd()</b> # mostra o diretório (caminho) configurado para o workspace atual.<br />
<b>setwd("caminho/para/diretorio")</b> # configura o diretório para o workspace; qualquer referência de arquivos, por exemplo, serão feitas a partir do "work directory".<br />
<b>library(biblioteca)</b> # carrega a biblioteca para uso de suas funções.<br />
<b>source("script.R")</b> # carrega o script/fonte para uso das funções.<br />
<b>dir()</b> # exibe os arquivos e pastas do diretório do workspace; similar ao "dir" do prompt do DOS/Windows ou o 'ls" dos Unix like.<br />
<b>ls()</b> # lista os objetos existentes no ambiente; no Linux usa-se "ls" para listar o conteúdo do diretório e no R para listar o conteúdo corrente carregado no ambiente.<br />
<b>objects()</b> # igual ao ls().<br />
<b>rm(objeto)</b> # remove um objeto do ambiente; deleta.<br />
<b>julian(data_dia_juliano,origin=data_base)</b> # retorna o dia juliano (o dia a partir da data passada ou 1/1/1970 se omitido).<br />
<b>Sys.getenv(variável_x)</b> # obtém o valor da variável de ambiente "variável_x".<br />
<b>Sys.putenv(variável_x)</b> # atribui o valor da variável de ambiente "variável_x".<br />
<b>Sys.time()</b> # retorna a data e hora do sistema, respeitando o fuso do sistema ("t" minúsculo)<br />
<b>Sys.Date()</b> # retorna a data do sistema ("D" maiúsculo; respeitando o fuso do sistema, sem exibir a hora, claro).<br />
<b>system("cmd")</b> # executa o comando "cmd" do sistema operacional (Windows).<br />
<br />
Para objetos:<br />
<b>length(objeto)</b> # retorna o número de elementos ou componentes de um objeto; seu tamanho.<br />
<b>cat(objeto)</b> # imprime os elementos/argumentos do objeto.<br />
<b>str(objeto)</b> # imprime a estrutura de um objeto (structure).<br />
<b>class(objeto)</b> # imprime a classe ou tipo de um objeto.<br />
<b>identical(objeto1, objeto2)</b> # testa se 2 objetos são idênticos (TRUE/FALSE).<br />
<b>vector(tamanho)</b> # retorna um vetor com determinado tamanho.<br />
<b>matrix(linhas,colunas)</b> # retorna uma matriz com as dimensões passadas.<br />
<b>mat.or.vec(linhas,colunas)</b> # retorna uma matriz se o segundo parâmetro for maior que 1 ou um vetor para o segundo parâmetro igual a 1.<br />
<b>subset(objeto, condição, select=colunas)</b> # retorna um subconjunto do objeto com elementos/linhas que obedeçam à condição e, se informado e o objeto se tratar de um dataframe, um vetor com as colunas para esse subset.<br />
<br />
Para strings:<br />
<b>toupper(objeto)</b> # retorna o conteúdo do "objeto" passado para letras maiúsculas.<br />
<b>tolower(objeto)</b> # retorna o conteúdo do "objeto" passado para letras minúsculas.<br />
<b>grep(padrão, objeto)</b> # busca o padrão no objeto.<br />
<b>regexpr(padrão, objeto)</b> # busca o padrão no objeto.<br />
<b>sub(padrão, novo_valor, objeto)</b> # substitui o padrão encontrado pelo novo_valor no objeto.<br />
<b>formatC(objeto, ...)</b> # formata números usando a especificação no estilo C.<br />
<br />
Para vetores:<br />
<b>c(objeto1,objeto2,...)</b> # combina objetos em um vetor.<br />
<b>sequence(valor)</b> # retorna um vetor com a sequencia de 1 até o "valor" passado; se "valor" for um vetor de valores, cria sequencias de 1 até cada valor de forma concatenada.<br />
<b>seq(inicio,limite,quantidade)</b> # cria uma sequência de valores respeitando a quantidade de itens e o limite.<br />
<b>rep(objeto, quantidade)</b> # repete o objeto tantas vezes a quantidade indicar; pode ser um número ou um vetor que será repetido de forma sequencial.<br />
<b>rev(objeto)</b> # retorna de "objeto" em ordem um a um de trás para frente.<br />
<b>range(objeto)</b> # retorna o valor mínimo e o valor máximo do "objeto".<br />
<b>paste(objeto)</b> # concatena de forma sequencial o objeto (vetor) convertendo esse resultado em caracteres; gera uma string unindo os elementos.<br />
<b>append(objeto1, objeto2, after=posição)</b> # adiciona elementos "objeto2" (pode ser de um vetor) a um vetor "objeto1", podendo indicar a posição de inserção dos elementos que por padrão é no final.<br />
<b>sort(objeto)</b> # retorna os elementos de "objeto" de forma ordenada.<br />
<b>order(objeto)</b> # retorna os elementos de "objeto" de forma ordenada.<br />
<b>unique(objeto)</b> # retorna o vetor "objeto" sem elementos repetidos, que são removidos.<br />
<b>rnorm(quantidade)</b> # retorna um vetor com valores aleatórios<br />
<br />
Para dataframe:<br />
<b>names(objeto)</b> # nomes das colunas do objeto/dataframe.<br />
<b>cbind(objeto1, objeto2, ...)</b> # combina objetos como colunas; anexa o objeto2 ao objeto1.<br />
<b>rbind(objeto1, objeto2, ...)</b> # combina objetos como linhas; anexa o objeto2 ao objeto1.<br />
<br />
Funções matemáticas simples:<br />
<b>sign(objeto)</b> # retorna um objeto do mesmo tamanho de "objeto", porém com conteúdo representando o sinal do valor em "objeto", podendo ser "-1" se o valor daquela posição em "objeto" for negativa, 0 se for 0 e 1 se for positiva.<br />
<b>abs(objeto)</b> # retorna o valor absoluto dos elementos do objeto.<br />
<b>floor(objeto)</b> # retorna o arredondamento do valor ou dos elementos do objeto para baixo.<br />
<b>ceiling(objeto)</b> # retorna o arredondamento do valor ou dos elementos do objeto para cima.<br />
<b>round(objeto, digitos)</b> # retorna o arredondamento do valor ou dos elementos contendo a quantidade de dígitos informada.<br />
<b>signif(objeto, digitos)</b> # retorna o arredondamento do valor ou dos elementos contendo a considerando a quantidade de dígitos informada e retornando um a menso.<br />
<b>trunc(objeto)</b> #trunca o valor do objeto ou dos elementos.<br />
<br />
Foi difícil, mas acho que a organização ficou coerente, não?<br />
Lembre-se que o R foi feito para trabalhar com conjunto de dados e sua análise.<br />
<!----->Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-83200217564688228432014-06-04T16:37:00.003-03:002014-06-04T16:38:04.700-03:00As sete ferramentas da qualidadeSegue o link para um post que descreve muito bem as 7 ferramentas de qualidade organizadas por Ishikawa. Estas ferramentas conseguiriam tratar a grande maioria dos problemas.<br />
<div>
<br /></div>
<div>
<a href="http://www.blogcmmi.com.br/qualidade/as-sete-ferramentas-da-qualidade">http://www.blogcmmi.com.br/qualidade/as-sete-ferramentas-da-qualidade</a></div>
<div>
<br /></div>
<div>
São elas:<br />
<ul>
<li>Diagrama de pareto</li>
<li>Diagrama de causa e efeito</li>
<li>Histograma</li>
<li>Folhas de verificação</li>
<li>Gráfico de dispersão</li>
<li>Fluxogramas</li>
<li>Cartas de controle</li>
</ul>
</div>
<div>
Vale a pena ler!</div>
Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-87769056017601727262014-05-29T00:04:00.000-03:002014-05-29T00:04:56.616-03:00Linguagem R - Objetos e Tipos de DadosNo R temos, segundo o próprio site do R-Project (<a href="http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Basic-types">http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Basic-types</a>), os objetos são divididos em tipos, modos e modos de armazenamento. Isto significa, por exemplo, que um objeto do tipo (type) inteiro é armazenado (storage mode) como tal, mas é tratado simplesmente como numérico (mode). Há diversos tipos de objetos como inteiro, lógico, função, expressão linguagem, listas, complexos etc. É bem completo! Porém no uso do R com conjunto de dados e análise estatística, utiliza-se os tipos básicos para trabalho com vetores. Depois veremos funções para nos auxiliar com "tipos" e "objetos".<br />
<br />
<b>Objetos primitivos - t</b><b>ipos atômicos</b><br />
<br />
Pode-se dizer que o R foi feito para trabalhar com estruturas de dados, que são compostas, de forma geral, por objetos primitivos. Por exemplo, o vetor é o objeto mais simples no R: uma lista ordenada de um tipo atômico básico.<br />
O R possui 6 tipos atômicos:<br />
<br />
<ul>
<li>lógico,</li>
<li>inteiro,</li>
<li>real,</li>
<li>complex,</li>
<li>string (or character), e</li>
<li>raw (bruto/primitivo).</li>
</ul>
<br />
<b>Estruturas de Dados</b><br />
<br />
Esse é o foco dessa linguagem: o agrupamento de objetos para análise dos dados.<br />
Temos:<br />
<br />
<ul>
<li>vetor</li>
<li>fator</li>
<li>matriz</li>
<li>array</li>
<li>lista</li>
<li>dataframe</li>
</ul>
<br />
Como já dito, o mais simples tipo de estrutura de dados é o <b>vetor</b> (vector) que é uma lista ordenada de um objeto primitivo. Parecido com o vetor, temos o <b>fator</b> (factor) que é um vetor de categorias, valores que não se repetem.<b> Matriz</b> (matrix) é um vetor de 2 dimensões e cada elemento é localizado por referência de linha e coluna e <b>Array</b> é uma matriz com mais de 2 dimensões aqui no R.<br />
Todos estes possuem objetos do mesmo tipo, mas o R possui estruturas mais interessantes que permitem a mescla de tipos.<br />
<b>Lista</b> (list) é um vetor que permite que suas células tenham objetos de tipos diferentes... um vetor misto que pode ser acessado pela sua posição ou por seu nome como variável. <b>Dataframe</b> é como uma matriz (2 dimensões) que permite tipos diferentes por coluna; são listas de vetores do mesmo tamanho.<br />
<br />
Nos próximos posts vamos falar de algumas funções e ver cada estrutura de dados de forma mais detalhada com exemplos.<br />
<br />Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-64980648722184236662014-05-26T23:33:00.001-03:002014-05-26T23:33:26.080-03:00Guerra de gerações no projetoEssa guerrinha não levará ninguém a lugar algum. Nunca levou e não vai levar. Na realidade levará sim... para o mesmo alugar onde a arrogância sobre o outro empurra: para trás.<br />
<br />
Estava acompanhando um webinar sobre gestão de projetos, técnicas de facilitação etc, quando um participante escreveu no chat do grupo um problema que passava em sua empresa com relação a novas ferramentas e formas de trabalho. Muitos concordaram e, para o meu espanto, o bom senso foi muito maior que eu esperava na pequena discussão (que logo acabou para retornar à apresentação). Vejo, felizmente como muitos outros (sim, felizmente), que nas empresas (principalmente nas maiores) os mais experientes tem certa resistência em aceitar novas formas de trabalho. E em contrapartida, há muitos recém chegados da faculdade, que fizeram alguns cursos ágeis ou participaram de um projeto em uma startup, achando ter a solução para todas as respostas sem nem saber quais são as perguntas.<br />
<br />
OK...vou explicar melhor. Entre a teoria e a prática há hiato. Junto com a cultura, esse hiato desencorajou os mais antigos que aprenderam - e sempre viveram com isso em mente - que este é um vale proibido (você assistiu Planeta dos Macacos? Tipo aquilo). Os recém chegados, por outro lado, estão repletos de novas técnicas (+), cheios de si (+), mas têm certeza que são os salvadores do mundo (-) e que todo o resto é uma cambada de ignorante (-). Muitas vezes estes não entendem realmente os conceitos e nem o status quo da empresa que estão entrando, partindo da suposição que só existe uma forma das coisas funcionarem: a novíssima metodologia que alguém inventou em um lugar distante e que ele viu num blog por aí. <b>É claro que testar técnicas é válido, mas antes de aceitar o risco, identifique-o.</b><br />
<br />
Alguns de cabeça antiga esperam <b>ser solicitados, são passivos e não discutem com seu superior</b>, pois seria falta de respeito (muitas vezes este superior acha isso mesmo quando alguém o questiona). Os de cabeça nova querem revolucionar a empresa de forma drástica,<b> ignorando o ambiente como um todo e pensando somente no seu quadrado</b> e naquele período de tempo: uma errada interpretação de coragem, iteração e acolhimento de mudanças. Decorar não é entender e muitos decoraram o manifesto; têm a resposta na ponta-da-língua para tudo... desde que se enquadre no seu cenário perfeito, claro.<br />
<br />
Você não concorda que há algo de errado quando o "Sr. João" vê um fracasso, muitas vezes óbvio, de quem voluptuosamente inicia uma empreitada sem conhecer o terreno (desconsiderando as características do local onde está e achando que tudo ocorrerá igualzinho de como naquela empresa caso-de-sucesso da palestra do Agile Brazil), como <b>justificativa para não mudar nada</b>?<br />
<br />
Você não concorda que algo não está certo quando o "Marquinhos", teoricamente mais esclarecido (pois aprendeu numa escola a frente de seus colegas de trabalho mais antigos), <b>cometer os mesmos erros básicos</b> de algumas pessoas de gerações atrás que ignoraram a adaptação, interpretaram as coisas como lhe convinham e achavam que estava tudo errado até a ideia deles surgir para simplificar exageradamente a complexidade? Enaltecer os defeitos do outro quando se está prestes a repeti-los não é nada bom... assim como é péssimo achar que a diferença dele para o super-homem é que o super-homem enfraquece com a criptonita.<br />
<br />
<b>Num ambiente complexo, temos que estabilizar ou minimizar um grande número de variáveis para que seja possível lidar melhor com tudo que está fora do nosso controle</b>. É isso que o ágil propõe. Se o problema dos projetos é comunicação e é possível utilizar formas de mantê-la eficiente, vamos utilizar estas técnicas e nos organizar de forma a mitigarmos este tipo de preocupação e, assim, podermos focar mais na mudança de requisitos, por exemplo. A maioria das técnicas e ferramentas, assim como os conceitos básicos por trás do manifesto, não foram criados agora; <b>é tudo coisa velha aglutinada de forma excelente</b>! É o uso correto de todo esse conhecimento unido ao entendimento dos conceitos por trás de cada princípio a ser adotado que faz e fará a diferença. É a integração das novas misturas e novos sabores com o que já existia que impulsionará o mundo. É a adaptação com a boa estratégia de mudanças na organização que levará sua empresa ao sucesso. Se você está em uma startup, excelente! Muitos problemas carregados de "outras vidas" não existirão! Mas se você está em uma multinacional (ou governo) com estrutura e pensamentos antigos e problemas culturais gigantescos, <b>o caminho para a excelência será traçado de uma forma um pouco diferente dos desenhos Disney,</b> como é pregados em muitos testemunhos ágeis.<br />
<br />
Quanto ao "Sr. João" e ao "Marquinhos", deve haver bom senso e desejo de vitória coletiva, cientes de que todos erramos, sempre aprendemos e precisamos conhecer antes de criticar.
É um cabo de guerra que não leva ninguém a lugar nenhum. Ao invés de se complementarem e crescerem juntos, "Srs Joões" e "Marquinhos" ficam todos numa disputa querendo apontar o erro do outro.
Entender os conceito ágeis é uma excelente forma de começar. Eu disse entender, não decorar. Entender as razões de um grupo de experientes pessoas terem chegado a tais "mandamentos" é essencial, assim como entender a cultura da sua empresa e o perfil de seus colegas de trabalho.<br />
<br />
Recomendo artigos do Klaus Wuestefeld e do Manoel Pimentel, na internet ou no MundoJÁgil; sempre falam deste ponto que para mim é o mais delicado e decisivo: comportamento.
E também este link para entender um pouco como as pessoas da geração Y são como são: <a href="http://qga.com.br/comportamento/jovem/2013/09/porque-os-jovens-profissionais-da-geracao-y-estao-infelizes">Porque os jovens profissionais da geração y estão infelizes</a>.<br />
<br />
... Má interpretação do gráfico da baleia... "pessoas precisam ser mandadas e pressionadas"... "o importante é entregar (qualidade ninguém vê)"... "nós fizemos o que o cliente pediu".<br />
Software não é um prédio. O produto é abstrato. O projeto de desenvolvimento é algo criativo; gera um resultado único. O desenvolvimento não uma linha de produção.<br />
Algumas certezas foram trazidas e algumas comparações foram feitas no passado e nos fizeram chegar em alguns problemas de entendimento. <b>Por favor, entusiasta de métodos ágeis, não cometa os mesmos equívocos!</b>Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-21940698828485681902014-05-23T01:21:00.001-03:002014-05-23T01:21:34.497-03:00Introdução à Linguagem RConsiderando que você já está com o ambiente instalado (<a href="http://dadomingues.blogspot.com.br/2014/05/o-que-e-r.html">O que é R</a>), vamos começar?<br />
<br />
Ao iniciar a sessão no terminal (no Linux basta digitar "R" que ele é iniciado), você verá um sinal de maior ">" que permite que você digite o comando desejado. É o prompt do R.<br />
<br />
<b>Interação entre o prompt e você</b><br />
Como dito, o sinal ">;" indica que você pode iniciar o diálogo. Faça um teste: digite um número, por exemplo, "5":<br />
<code>> 5<br />[1] 5</code><br />
O R sempre retorna um vetor com a resposta a seu comando. No caso informei o número 5 e ele retornou um vetor de 1 posição, cuja primeira posição é o número 5.<br />
Digite agora "1 + 1"<br />
<code>> 1 + 1<br />[1] 2</code><br />
Digitei "1 + 1" e ele retornou para mim a soma de 1 e 1 em um vetor.<br />
<br />
<b>Comentário</b><br />
Tudo que estiver após o sinal de cerquilha # é desconsiderado pelo R, ou seja, torna-se um comentário:<br />
<code>> 1 + 1 #esta é uma soma simples</code><br />
<br />
<b>Atribuição</b><br />
A forma mais comum é utilizando sinal de menor seguido de hífen para atribuir algo que está ao lado direito desta seta para o objeto que está à esquerda. Para isto também podemos utilizar o igual "=". Uma coisa interessante no R é que podemos atribuir ao contrário usando uma seta inversa, ou seja, usamos hífen e sinal de maior (seta para a direita) para atribuir algo que está à esquerda em uma variável ou objeto à direita deste sinal.<br />
Para exibir o conteúdo de um objeto, basta digitar o nome dele no prompt.<br />
<code>> a <- 5<br />
> a<br />
[1] 5<br />> 10 -> b<br />> b<br />
[1] 10<br />> c = 3<br />> c<br />
[1] 3<br />
</code>
<br />
<b>Ajuda</b><br />
Para obter ajuda com relação a alguma função no R, use a função "help", ou uma ? antes do nome da função:<br />
<code>help(c)<br />
?c</code><br />
<br />
Na próxima postagem vamos ver os tipos de dados.Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-88122648825786887512014-05-17T19:50:00.000-03:002014-05-17T19:50:12.738-03:00O que é R?R é um ambiente de programação derivado da linguagem S (comercial) e possui um grande número de pacotes para trabalhar com dados. Por esse motivo vem numa crescente de utilização e é bastante difundido principalmente na área científica (estatística e bioinformática), o que não impede o uso em outras frentes como jornais e revistas, por exemplo, para estudos mais profundos com geração de gráficos para o site e material impresso.<br />
<br />
Segunda a wikipedia: "R é uma linguagem e um ambiente de desenvolvimento integrado, para cálculos estatísticos e gráficos."<br />
<br />
Página oficial: <a href="http://www.r-project.org/">http://www.r-project.org/</a><br />
<br />
No ambiente R, temos sua linguagem fácil de se trabalhar e um grande conjunto de pacotes que a torna muito poderosa para análise de dados. Você pode criar seu pacote e enviar para o CRAN (rede de arquivamento de tudo do ambiente, IDE, linguagem etc).<br />
A conheci pelo curso de especialização de Ciência de Dados no Coursera pela Universidade Johns Hopkins. Eles usam para todos os módulos esse ambiente. É muito interessante.<br />
<br />
Os outros:<br />
<ul>
<li>A audaciosa Julia: <a href="http://julialang.org/">http://julialang.org/</a></li>
<li>O famoso Python: <a href="https://www.python.org/">https://www.python.org/</a></li>
</ul>
<br />
<b>Vamos lá?</b><br />
<br />
Planilha rápida de comandos: <a href="http://cran.r-project.org/doc/contrib/Short-refcard.pdf">http://cran.r-project.org/doc/contrib/Short-refcard.pdf</a><br />
<br />
Muita gente utiliza também o Python que, agregando algumas bibliotecas como Pandas, NumPy, SciPy etc, faz um trabalho semelhante. Muitos acabam preferindo o Python por já conhecer melhor a linguagem, a forma de trabalho, IDEs ou terem uma plataforma montada com outras aplicações. Cada um escolhe o que agrega mais independente do motivo.<br />
<br />
Não vou entrar em detalhes em como instalar, pois isso muda conforme as versões... mas seguem os links:<br />
<ul>
<li>Para instalar o ambiente R: <a href="http://cran.r-project.org/">http://cran.r-project.org/</a></li>
<li>Para instalar o RStudio: <a href="https://www.rstudio.com/">https://www.rstudio.com/</a></li>
</ul>
<br />
<b>Como trabalhar?</b><br />
<br />
Ao abrir um terminal e executar o R ou abrir o IDE RStudio, é criado no ambiente uma área de trabalho em sessão, o que possibilita que você crie objetos e trabalhe com ele de duas formas:<br />
<ul>
<li><b>Comandos livres:</b> assim como no terminal do sistema operacional ou de outras linguagens, você pode executar os comandos que ele vai interpretando e armazenando, se necessário, na sua área de trabalho.</li>
<li><b>Scripts:</b> você cria scripts que são carregados no ambiente e este executa o que está dentro do arquivo de forma sequencial. Normalmente são criadas funções que são executas ao serem acionadas após a carga do script para a área/sessão.</li>
</ul>
Independente da forma, você pode criar objetos, funções, filtros etc, que podem ser acionados a qualquer momento na sessão que você estiver (pois estão carregados na sua área de trabalho).<br />
<br />
Uma das principais coisas que você precisa saber é como carregar dados de arquivos (como CSV, TXT e XLS), acessar bancos de dados e utilizar serviços na web, pois normalmente é assim que você obterá os dados para trabalhar. Depois das análises, é importante a forma de apresentação do resultado: tabela ou gráficos, ambos em tela ou exportados.Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-58004392959538418872014-05-15T16:49:00.002-03:002014-05-26T23:34:30.534-03:00Scaled Agile FrameworkNo Agile Trends 2014 conheci o SAFe. Foi um Trend Talk da Sandra Santos (IBM) que deu um case de implantação de agile utilizando a ferramenta de AML da própria empresa utilizando este framework.<br />
Achei muito interessante, pois para grandes empresas com necessidade de fluxo de informações que ultrapassam a fronteira de equipe de desenvolvimento, há uma dificuldade enorme em absorver ou customizar uma metodologia ou framework com foco apenas no time.<br />
<br />
<a href="http://scaledagileframework.com/">http://scaledagileframework.com/</a><br />
<br />
<br />
Conforme o próprio site, é uma base de conhecimento para implementação de práticas ágeis em escala organizacional.<br />
Muitos podem criticar, mas ajuda muito na entrada dessas práticas nos diversos níveis das empresa, de forma integrada, <strike>fácil</strike> menos complicada e concisa.<br />
Com um desenho e fluxo pronto nos 3 níveis que possui o foco (e não só no desenvolvimento feito pela equipe como ocorre no Scrum, por exemplo), o SAFe atende a necessidade de visualização do todo por quem está no alto comando.<br />
Claro que é mais pesado que os frameworks ágeis tradicionais por conta da necessidade de integração vertical, mas é uma boa dica para quem está em uma empresa grande e encontra dificuldades com o corpo gerencial. É uma base para criação ou ajuste no processo, pois deixa clara a necessidade da agilidade em toda a organização.<br />
<br />
O site é intuitivo, mas não permite que clique com o botão direito... para abrir o link em nova aba, utilize ctrl + clique (no Chrome, por exemplo).Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-43633008110173264352014-05-13T14:59:00.002-03:002014-05-13T14:59:44.907-03:00TDD para qualquer um entenderTá bom, vai... qualquer um é exagero, mas este white paper da caelum é bem interessante porque aborda TDD de uma forma mais fácil para chefes, gerentes e diretores, que não são desenvolvedores, entenderem o que é, para que serve e seus benefícios. Créditos à Caelum!<br />
<br />
<a href="http://tdd.caelum.com.br/">http://tdd.caelum.com.br/</a><br />
<br />
Test-Driven Development (TDD) é desenvolvimento dirigido/orientado a testes que ganhou muita força com o aumento do uso de práticas ágeis nas equipes de desenvolvimento de software.<br />
<br />
Boa leitura!Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-79161283013462431022014-05-13T00:36:00.001-03:002014-05-13T00:36:57.213-03:00Curso interativo de Linguagem RCurso <b>básico</b> e <b>interativo</b> de linguagem R, evoluindo de lição em lição... comando a comando seguindo uma uma sequência direcionada de aprendizagem: <a href="http://tryr.codeschool.com/">http://tryr.codeschool.com/</a><br />
O <b>CodeSchool</b> tem vários cursos, alguns pagos e outros gratuitos, seguindo o mesmo esquema. O interessante é você se cadastrar e fazer os demais livres.<br />
Coim relação ao R, estes são os tópicos abordados:<br />
<ol>
<li>R Syntax: A gentle introduction to R expressions, variables, and functions</li>
<li>Vectors: Grouping values into vectors, then doing arithmetic and graphs with them</li>
<li>Matrices: Creating and graphing two-dimensional data sets</li>
<li>Summary Statistics: Calculating and plotting some basic statistics: mean, median, and standard deviation</li>
<li>Factors: Creating and plotting categorized data</li>
<li>Data Frames: Organizing values into data frames, loading frames from files and merging them</li>
<li>Working With Real-World Data: Testing for correlation between data sets, linear models and installing additional packages</li>
</ol>
<div>
Vale a pena para conhecer ou praticar no início da aprendizagem.</div>
Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-5404585118524018372014-05-12T23:56:00.002-03:002014-05-13T00:37:18.914-03:00Conteúdo de estatística básicaProcurando um site com conteúdo objetivo de estatística para reciclar o conhecimento há muito não utilizado, encontrei esse site de um software de estatística que possui justamente o que eu procurava, desde a parte mais básica até, para mim, mais avançada.<br />
<a href="http://www.portalaction.com.br/">Portal Action</a> [conteúdo de estatística em <a href="http://www.portalaction.com.br/content/estat%C3%ADstica-b%C3%A1sica">http://www.portalaction.com.br/content/estatística-básica</a>]<br />
Action é um software livre GPL 2.0 sob a plataforma R.Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-13632502841683988262014-04-26T11:24:00.002-03:002014-04-26T11:24:40.606-03:00Doação de sangue - faça periodicamente!"Doar sangue é um ato muito nobre"... é isso que dizem né? Eu gosto e recomendo a todos que possam fazê-lo. As restrições para doação, que variam de acordo com o hospital, são em relação a peso (acima de 50kg, pois são retirados 450ml), idade (16 a 65 anos) e possibilidade de aquisição de alguma doença - para isso você responde um questionário do com perguntas do tipo: Teve mais de um(a) parceiro(a) sexual no último ano? Saiu com garota de programa? Fez tatuagem recente? Está em ratamento médico? Usa drogas? etc.<br />
Você pode ver os requisitos básicos aqui: <a href="http://www.prosangue.sp.gov.br/artigos/requisitos_basicos_para_doacao">http://www.prosangue.sp.gov.br/artigos/requisitos_basicos_para_doacao</a><br />
Eu nunca tive problema no processo, salvo a penúltima vez em que não tomei um bom café da manhã, fui doar e quando terminou, levantei rápido pois achava que nada aconteceria. Resultado: fiquei zonzo depois de alguns segundos e tive que voltar e ficar deitado por um tempo em observação. Nada grave e foi por minha displicência. Por isso sigam os passos corretamente, alimente-se bem antes e comam o lanchinho após o processo; também beba bastante água no decorrer do dia.<br />
Costumo participar dos programas de doação da empresa que acontecem de 6 em 6 meses. Nesse intervalo, aos 3 meses, gosto de ver alguma possibilidade de doação, pois sabemos da falta de sangue nos bancos do estado. No início desse mês doei em nome de um colega de trabalho que passou por uma cirurgia e precisava repor o estoque; foi tranquilíssimo como as todas as outras vezes.<br />
Informe-se na sua região! Recomendo! Pense no próximo, mesmo porque nunca sabemos quando será nossa vez de precisar...Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com0tag:blogger.com,1999:blog-18522178.post-35240043974287112822014-04-25T21:09:00.001-03:002014-04-26T11:24:55.830-03:00Agile Trends 2014 SP - pontos positivos e negativos do eventoBoa noite galera!<br />
Após deixar meus registros dos dois dias de evento, gostaria de sintetizar pontos positivos e negativos na minha perspectiva.<br />
<br />
<b>Positivos:</b><br />
<ul>
<li>Palestrantes muito bons com temas no mesmo nível.</li>
<li>Deram, enfim, mais valor a empresas reais que são pelo menos um pouco maiores do que normalmente falam nos eventos (normalmente o foco são as startups). Isso foi muito bom, pois direciona melhor como realmente o ágil pode ser aplicado em empresas que já andam por si, empresas com um número de milhares de pessoas e empresas que desenvolvem há décadas com cultura forte em outras metodologias e formas de gestão. A importância da estrutura formal/hierárquica, a maneira como a alta gerência lida com isso e falta de capacitação adequada são os grandes problemas que precisam ser vencidos.</li>
<li>O feedback ao final de cada trend talk, como vem acontecendo também no Agile Brazil, continua sendo uma ótima ferramenta.</li>
<li>O quadro de feedback do evento também funcionou muito bem, como por exemplo, o ar condicionado que estava forte demais de manhã foi amenizado após o almoço.</li>
<li>Sempre teve espaço para as pessoas participarem dos eventos escolhidos.</li>
<li>Happy Hour no primeiro dia de evento para integração e networking.</li>
<li>Mais situações reais e dicas de como mudar o nosso dia-a-dia de maneira prática e realista.</li>
</ul>
<b>Negativos:</b><br />
<ul>
<li>Um trend talk de Análise de Negócio de uma pessoa que não vou citar o nome foi muito agressiva e até faltou com respeito com o Cláudio Keber, que apresentou o mesmo assunto anteriormente com uma ótica um pouco diferente. Achei no início que estava brincando, mas ficou muito chato mesmo... Esse não volta.</li>
<li>Ar condicionado do auditório principal (sala Insights) muito forte nos 2 dias; no segundo estava absurdo e corrigiram após o almoço.</li>
<li>A tela da outra sala menor (Sinapses) estava muito baixa no primeiro dia; subiram um pouco no segundo.</li>
<li>Muita gente reclamou de falta de guarda-volume no primeiro dia; no segundo já tinha :)</li>
<li>Atraso no início dos talks prejudicava as rodadas de discussões que a organização frisava ser o mais importante do evento. Acabava que essa rodada tinha tempo somente para 2 perguntas - quando tinha.</li>
<li>Ao final dos talks sobre "Aprendendo a tomar decisões em equipe" (Haddad) e "The PornoAgile" (Manoel Pimentel), a Erica (garota de cabelo cor-de-rosa) fez a melhor pergunta ou explanação do evento justamente colocando em questão o que é ignorado nos eventos de agile - em que muitas vezes os cenários são tratados sempre em estado de Nirvana, num mundo perfeito como se em todos os lugares as premissas para o ágil perfeito estão presentes. Ao terminar sua colocação, a staff deste trend talk encerrou o a rodada de perguntas pelo timebox ter acabado (ainda tinha 2 minutos e depois seria o almoço de 1h). Ninguém se incomodaria em perder 5 min do almoço que fosse para escutar os palestrantes colocarem suas posições sobre a importância financeira na quebra de paradigma de uma empresa já inserida no mercado. Muito negativo para o evento em que os staffs precisam ter sensibilidade e talvez um conhecimento mínimo do assunto para não fazer uma besteira dessa. Para mim era o ápice do dia e ele foi cortado de forma <strike>ridícula</strike> chata.</li>
<li>No primeiro dia teve duas palestras meio fora da curva o que ajudou a cair a qualidade nesta data.</li>
<li>Alguns agilistas xiitas sem vivência do agile fora de startups ou sem visão empresarial impondo certos pensamentos que muitos visitantes acabam ignorando - <strike>para este tipo de pensamento e material pegamos na internet e não precisaríamos ir em um evento de tendências</strike>. É bom para quem está conhecendo métodos ágeis e por isso deve-se manter nos eventos, porém com cautela e de forma equilibrada com os demais pontos focais.</li>
</ul>
Bem... apesar dos pontos negativos parecerem muitos, não influenciaram na qualidade do evento que foi excelente!<br />
<br />
Em suma, pontos básicos foram ignorados inicialmente (o que mostrou certa falta de experiência talvez dos staffs) e corrigidos durante o evento (força da melhoria contínua). Para mim o excesso de confiança de parte da organização e a falha de uma comunicação correta entre eles (orientação de comportamento e valores) foram os responsáveis pelos pontos negativos. Já o feedback foi a palavra chave para o sucesso do Agile Trends 2014, usando outros eventos como base para o planejamento deste e os quadros para correções pontuais no decorrer dos 2 dias.<br />
<br />
Abraço!<br />
<br />Danielhttp://www.blogger.com/profile/13307551621122620519noreply@blogger.com2