Posts arquivos para agosto, 2011

31ago2011

Ordenando conteúdo de arquivo via bash unix

(0) comentários

O comando sort ajuda muito quando precisamos fazer ordenações simples de palavras, números ou datas dentro de arquivos texto, cvs, etc. Existem muitas outras maneiras, mas nenhuma tão rápida como esta.
Fica a dica:

Listando os arquivos e exibindo o conteúdo do arquivo lista_de_clientes.txt

> ls -la
-rw-r--r--   1 amorim  staff      58 Aug 31 19:11 lista_de_clientes.txt
> cat lista_de_clientes.txt
mauricio
amorim
wordpress
wordpress
wordpress
linux
bash

Usando o comando sort com o parâmetro -u para eliminar itens duplicados e usando >> para atribuir o resultado ao arquivo lista_de_clientes_ordenada.txt

>  sort -u lista_de_clientes.txt >> lista_de_clientes_ordenada.txt
>  cat lista_de_clientes_ordenada.txt
amorim
bash
linux
mauricio
wordpress

Referência:
Só Linux

31ago2011

pra encerrar um capítulo: meus posts mais populares neste um ano de blog

(0) comentários

hoje é meu último dia na Locaweb e ainda não sei muito bem o que fazer com esse blog daqui pra frente.   como eu produzo conteúdo sem parar, algo me diz que vou continuar compartilhando aqui mais pérolas de UX, cultura digital, cultura geral, livros e videos e dicas pra abrir a cabeça e os horizontes de quem faz web  Alegre

uma surpresa boa deste ano que passou foi ver a repercussão super boa da minha iniciativa de compartilhar as estatísticas de acesso do site da empresa.   veja a lista abaixo: quase metade dos top 10 tem a ver com esses números (e eu corrigi o link pra apontar pros números mais recentes)

 

  1. presente pros desenvolvedores e designers: novas estatísticas do site da Locaweb 7 comment(s) | 989 view(s)
  2. novas estatísticas: IE6 finalmente abaixo de 3% e iPad subindo  2 comment(s) | 730 view(s)
  3. isso é revolucionáriorio ou não é? banda larga… pela lâmpada!  0 comment(s) | 571 view(s)
  4. nossas estatísticas de acesso para junho: IE6 cai mais e android pula de 10º; para 7º   !3 comment(s) | 561 view(s)
  5. dica: como medir qualquer coisa   1 comment(s) | 560 view(s)
  6. quer ver como a gente trabalha? seja bem-vindo!   0 comment(s) | 532 view(s)
  7. que blog é esse, afinal?1 comment(s) | 515 view(s)
  8. estatísticas de março: 81 browsers, iPad subindo, IE6 caindo!  2 comment(s) | 504 view(s)
  9. o que é um browser? (pasme!)  1 comment(s) | 466 view(s)
  10. presentão pros geeks: a tabela periódica… em vídeo!  0 comment(s) | 410 view(s)

 

meus caros, muito obrigado pela audiência, pelos comentários, RT’s e like’s ao longo desse ano todo.    em breve darei notícias.    e por enquanto… um forte abraço Alegre

31ago2011

Mailfromd – General-Purpose Mail Filter

por em Sem categoria
(0) comentários

Mailfromd is a general-purpose mail filtering daemon and a suite of accompanying utilities for Sendmail(1)MeTA1(2)Postfix(3) or any other MTA that supports Milter (or Pmilter) protocol. It is able to filter both incoming and outgoing messages using a filter program, written in mail filtering language (MFL). The daemon interfaces with the MTA using Milter protocol.

The name mailfromd can be thought of as an abbreviation for ‘Mail Filtering and Runtime Modification’ Daemon, with an ‘o’ for itself. Historically, it stemmed from the fact that the original implementation was a simple filter implementing the sender address verification technique. Since then the program has changed dramatically, and now it is actually a language translator and run-time evaluator providing a set of built-in and library functions for filtering electronic mail.

The first part of this manual is an overview, describing the features mailfromd offers in general.

The second part is a tutorial, which provides an introduction for those who have not used mailfromd previously. It moves from topic to topic in a logical, progressive order, building on information already explained. It offers only the principal information needed to master basic practical usage of mailfromd, while omitting many subtleties.

The other parts are meant to be used as a reference for those who know mailfromd well enough, but need to look up some notions from time to time. Each chapter presents everything that needs to be said about a specific topic.

The manual assumes that the reader has a good knowledge of the SMTP protocol and the mail transport system he uses (Sendmail , Postfix or MeTA1).

http://puszcza.gnu.org.ua/software/mailfromd/manual/mailfromd.html

 

Permalink | Leave a comment  »

29ago2011

nossos números para agosto: iPad cresceu 57%, Android… 87%!!!

(0) comentários

toooooda virada de mês eu abro o nosso google analytics e vou tirando fotos de tela pra mostrar pro mercado inteiro os números mais legais do site da Locaweb .   claro que um site só não representa a internet brasileira, mas ao menos é um site com milhões de visitas/mês e audiência bastante eclética.

dê uma boa olhada nos números de agosto.   como sempre, dei uma borradinha nos números mais confidenciais.

(aqui estão as estatísticas para o mês de julho de 2011, compare)

 

comecemos pelos browsers, onde os números não mudaram muito:

image

 

já quanto a versões do IE, temos de novo um recorde histórico: IE6 caiu de 2,16 para 1,76%  Smiley de boca aberta

 

image

 

em sistemas operacionais notamos uma leve subida da participação do Windows (de 91,9 para 92,3%, enquanto o Mac OS caiu de 5,34 para 4,27%)

image

 

a participação do XP caiu ainda mais (48,71%) e Windows 7 subiu de 41,9 para 43,51%

 

image

 

se quiserem ver a  combinação browser x OS, aí vai (confirmando a subida IE/Windows e a queda do Safari)

 

image

 

o número de resoluções diferentes pulou de 2976 para… 3616 resoluções diferentes.   juro que não entendo esse número tão alto… de qualquer maneira, vejam como preponderam resolucoes bem altas:

 

image

 

aqui vão as versões de flash:

 

image

 

o acesso por mobile subiu praticamente 50%!!!  (ok, continua nanico comparado a milhões de visitas, mas é uma taxa de crescimento espantosa).  iPad cresceu 57% e Android… 87%!!!

 

image

 

se voce se interessa por mobile, veja como as 60k visitas se distribuem geograficamente:

 

image

 

se olharmos as cidades com mais acesso, a concentração é muito forte:  Sao Paulo com 3 a 4x Rio, BH com metade do Rio, Salvador com metade de BH…

 

image

 

resolvi comparar com os acessos mobile ao meu blog (que, por ser wordpress, fica bacana em mobile).   veja que a concentração tem um perfil muito parecido:

meu

image

29ago2011

ZFS Internals (part #11)

(0) comentários
PLEASE BE AWARE THAT ANY INFORMATION YOU MAY FIND HERE MAY BE INACCURATE, AND COULD INCLUDE TECHNICAL INACCURACIES, TYPOGRAPHICAL ERRORS, AND EVEN SPELLING ERRORS. From the MANUAL page: The zdb command is used by support engineers to diagnose failures and gather statistics. Since the ZFS file system is always consistent on disk and is self-repairing, [...]


29ago2011

Resenha – “A Meta”, de Eliyahu M. Goldratt – http://amzn.to/nExP1u

(0) comentários

The GoalO livro “A Meta“, de Eliyahu Goldratt, é um clássico romance sobre a Teoria das Restrições, em que o gerente de uma fábrica, Alex Rogo, se vê numa situação em que sua fábrica corre o risco de ser fechada pela administração da empresa por não estar conseguindo atender às demandas do mercado. Com pedidos atrasados em meses e ritmo de trabalho nada sustentável para ele e seus funcionários, Rogo, com ajuda de um consultor Jonah, identifica melhorias que poderia implementar na fábrica para que o lead time (tempo entre o pedido feito por um cliente e a entrega do produto) caísse de alguns meses para poucas semanas, salvando a fábrica da falência e recebendo uma promoção que lhe permitiria aplicar seu método em todas as fábricas da divisão.

Rogo percebe que, apesar de a fábrica não estar gerando dinheiro (devido a pedidos atrasados, clientes insatisfeitos, excesso de horas extras e diversos outros problemas), havia equipes na empresa que celebravam o sucesso por terem atingido suas metas locais (por exemplo, alta produtividade numa etapa do processo de fabricação do produto final). Rogo percebe que a alta produtividade de uma equipe (não gargalo) que gerava insumo para uma segunda equipe (gargalo) não era benéfica para a fábrica, pois gerava um inventário desnecessário (e caro), uma vez que o processo desta segunda equipe era mais lento e não dava conta de processar este insumo. Assim, a fábrica comprava matéria prima num ritmo alto para manter a produtividade da primeira equipe, e, no entanto, não conseguia entregar o produto final devido ao ritmo da segunda equipe. Assim, definem-se dois tipos de recursos: recurso-gargalo (aquele recurso cuja capacidade é igual ou menor do que a demanda colocada nele) e recurso-não-gargalo (qualquer outro recurso cuja capacidade é maior que a demanda colocada nele).

A primeira mudança na gestão de Alex se dá ao perceber que todos na empresa devem estar focados no objetivo da empresa, que é gerar dinheiro, e que a otimização local de uma etapa do processo era prejudicial para a meta global da empresa. Assim, sua primeira missão foi identificar a meta da empresa (geração de dinheiro) e fazer com que todos os times trabalhassem para o mesmo objetivo, e não para otimizações locais.

Através de três conceitos apresentados por Jonah, Alex e sua equipe conseguem identificar como gerenciar melhor seu processo de produção e identificar a meta de qualquer empresa: reduzir a despesa operacional e o inventário aumentando simultaneamente o ganho, onde Ganho é índice pelo qual o sistema gera dinheiro através das vendas -, Inventário é todo o dinheiro que o sistema investiu na compra de coisas que ele pretende vender -, Despesa Operacional é todo o dinheiro que o sistema gasta a fim de transformar o inventário em ganho”.

Rogo e sua equipe identificaram os gargalos da empresa (duas etapas do processo de produção), e fizeram com que toda a fábrica trabalhasse no ritmo do gargalo, assim, só haveria realização de trabalho caso fosse possível entregar o produto final para o cliente, caso contrário, todo trabalho realizado teria sido desperdício. Assim, através da otimização dos processos-gargalo da fábrica, Rogo percebeu que os únicos processos que precisavam ser otimizados eram os processos-gargalo, uma vez que estes eram os responsáveis pela baixa produtividade da fábrica.

Não adiantava hora-extra, pressão ou equipamentos melhores em processos que não eram gargalo, uma vez que isso geraria custos e inventário, e não teria impacto algum sobre a redução do lead time da empresa, que é o que geraria o resultado no final. Rogo percebeu que mesmo a compra de robôs para automatizar determinados processos da fábrica não havia sido benéfica, pois otimizava processos que não eram o gargalos, e portanto geravam inventário que não era processado pelas etapas seguintes.

Após todas as melhorias iniciais implementadas, o gargalo da produção passa a ser o mercado (vendas),  o que permitiu que a produção da fábrica fosse puxada pela demanda, e não empurrada para o mercado. A principal diferença é que quando a demanda é empurrada para o mercado, há geração de inventário (custo); quando a demanda é puxada pelo mercado, a fábrica produz (custa) somente o que precisa para gerar a receita (vendas), ou seja, o processo é muito mais otimizado e não há desperdício.

Através de um processo de melhoria contínua, Alex e sua equipe conseguem reduzir o lead time, reduzir custos e provar seu método para a alta direção da empresa, que reconhece o sucesso da fábrica com a produção dos principais envolvidos. O processo de melhoria contínua baseia-se em

1. IDENTIFICAR a restrição do sistema
2. EXPLORAR a restrição do sistema
3. SUBORDINAR tudo o mais a decisão acima
4. ELEVAR a restrição do sistema
5. SE num passo anterior a restrição for quebrada, volte ao passo 1. MAS não deixar que a INÉRCIA se torne  a restrição do sistema.

E o que isso tudo tem a ver com o desenvolvimento de produtos?

A analogia da fábrica descrita no livro pode ser feita com qualquer tipo de organização, inclusive com o desenvolvimento de software. Alguns exemplos:

- não adianta cobrar velocidade de entrega de features da equipe de desenvolvimento se a equipe de Marketing não consegue manter os clientes e prospects informados de que essas features existem no produto. As features são feitas para que mais clientes comprem o produto, e se não for publicado que a feature existe foi lançada, eles não comprarão, e assim ter feito a feature representa inventário

- não adianta a equipe de experiência do usuário (UX) ou design definir o layout de 20 telas do produto em uma semana, se a equipe de desenvolvimento consegue entregar apenas 1 tela por semana. Muito provavelmente boa parte das telas irá mudar por demandas do produto e dos desenvolvedores, então seria muito melhor a equipe de UX/Design estar no mesmo ritmo dos desenvolvedores do que tão adiantada.

- não adianta o Gerente de Produtos definir as histórias e funcionalidades num ritmo muito maior que a implementação, pois o inventário gerado certamente precisará de feedback, e quando o gerente de produtos receber este feedback, provavelmente terá que alterar boa parte do que havia planejado. Assim, terá trabalhado à toa se seu planejamento se distanciar muito do ritmo de entregas da equipe de desenvolvimento.

Em resumo, é importante que os lotes de trabalho sejam pequenos, para que os ciclos de entrega possam ser curtos e feitos conforme a demanda do mercado, para que não haja desperdício e possa haver feedback no processo. Lotes grandes implicam em ciclos de entrega grandes, que geram inventário e tornam as mudanças de prioridade mais difíceis e caras de serem gerenciadas.

A leitura deste livro é extremamente esclarecedora e importante para qualquer um que gerencia uma empresa, de qualquer tipo!

Compartilhe! RSSTwitterFacebookGoogle BookmarksGoogle BuzzDiggdel.icio.usMySpaceNetvibesFriendFeedOrkutPosterousPDFAdd to favoritesPrint


28ago2011

[IT Web - Ruby Fundamental] Diferenças entre procs e lambdas

(0) comentários

No último post do blog Ruby Fundamental falei sobre procs e lambdas. Agora vamos ver quais as diferenças entre eles.

Um proc se comporta como um bloco. Invocar um proc é semelhante a produzir um bloco. Já um lambda tem o comportamento de um método. Invocar um lambda é como invocar um método.

Veja o post completo no blog Ruby Fundamental:
Diferenças entre procs e lambdas

Veja também os outros posts do blog Ruby Fundamental:


28ago2011

Management 3.0

(0) comentários

I mentioned earlier that one of the sources I’ve been reading and enjoying is Jurgen Appelo’s posts about agile management. I’ve been reading his posts for a while, since the time he was the CTO of a dutch company. I really like the way he connects agile methodologies and complex adaptive systems theory.

I’ve mentioned his work in 4 posts:

Now he is 100% focused on his agile management coach career. He recently launched a book entitled “Management 3.0: Leading Agile Developers, Developing Agile Leaders“.

He also provides Agile Management courses.

Last week he was in São Paulo providing his management course at AdaptWorks and I had the opportunity to attend his course.

I’ll make a brief summary of the course below, as a way for me to review what we discussed during this two days. However, I strongly advise any leader, even from non software related areas or companies, to attend. Even though the ideas and insights Jurgen provides during the course are very good and he is an excellent presenter, you can read them in his blog and in his book. What is great in this course is the opportunity to practice and discuss the ideas and insights with Jurgen and the other attendees and the chance to exchange experiences.

Intro

After a quick introduction about the ideal size of a group and quick introductions of the attendees, Jurgen explained quickly about agile software development and then introduced Martie, the Management 3.0 representation with the 6 aspects of management that we should take care if we want to be good managers.

Martie

Martie

Then Jurgen explained briefly about the theory of complex systems and the types of fallacies we may fall into if we don’t use complex systems thinking when managing teams.

The seven fallacies

The seven fallacies

To end the introductory section, we did a group exercise where we analyzed some situations to identify what was the fallacy in play.

Energize people

When discussing about people, Jurgen talked about intrinsic and extrinsic motivation and presented us with the 10 intrinsic desires:

  • Acceptance The need for approval
  • Curiosity The need to think
  • Power The need for influence of will
  • Honor Being loyal to a group
  • Social Contact / Relatedness The need for friends
  • Idealism / Purpose The need for purpose
  • StatusThe need for social standing
  • Independence / Autonomy Being an individual
  • Order Or stable environments
  • Competence / Mastery The need to feel capable

Intrinsic desires

Intrinsic desires

Exercise time: we analyzed individually how we are in our current jobs in terms of each of these 10 intrinsic desires.

Then Jurgen presented some tools to helps us know what is important for the people in our team:

B = f (P, E)

B = f (P, E)

Group exercise: we had to use the practices below to get to know 10 important facts about Ellen, a member of a fictional team managed by us.

Empower teams

Here Jurgen presented the 7 delegation levels I already mentioned in a previous post.

Delegation levels

Delegation levels

Group exercise: delegation poker where we were presented with different situations where we needed to figure out the appropriate delegation level.

Align constraints

A leader must:

  • define the constraints (playing field, players), but let the system create its own rules.
  • protect people against bad team formation
  • protect good teams against non-team players
  • protect shared resources (energy, budget, environment, office space, food, sysadmins)

The 4 I’s to cope with the Tragedy of the Commons:

  • Institutions: create trust to accept common rules
  • Information: increase understanding of situation
  • Identity: increase social belonging across teams
  • Incentives: address behaviors with small rewards

3 kinds of purpose (or goal) for a team:

  • Intrinsic purpose: an easily spottable trend in a team, e.g., produce software.
  • Extrinsic purpose: assigned by caretaker, e.g., make money.
  • Emergent purpose: chosen by the team, e.g., be a winning team.

Qualities of a good goal

Qualities of a good goal

Exercise time: we had to define a purpose for the course.

Develop competence

First Jurgen described how we can improve.

Competency development

Competency development

Then he described how we can measure our improvement.

KPI matrix

KPI matrix

Exercise time: we had to define KPIs according to the matrix above to our organization.

Grow structure

We can have two types of team organization, functional or cross-functional, it depends on how often team members need to communicate. Product managers, user experience designers and software developers need to communicate all the time about the project or product they are working on, so they need to sit together in a cross functional team. HR people on the other hand need to talk constantly to other HR people so they need to sit in a functional HR team.

Jurgen also advised we should hire generalizing specialists, promote informal leadership and widen job titles.

Exercise time: Meddlers.

Meddlers

Meddlers

Improve everything

How can I…

  • Make the rest of the organization more Agile?
  • Motivate my employees to develop themselves?
  • Convince customers they should accept Scrum?
  • Etc…

In order to change things we need to consider:

The system

  • Plan: What Is Your Goal?
  • Plan: Where Is It Going Well?
  • Do: What Are the Crucial Steps?
  • Do: When and Where Do You Start?
  • Check: How Do You Measure Results?
  • Check: How Do You Get Feedback?
  • Act: How Do You Accellerate Results?

The individuals

  • Awareness: How Will You Communicate?
  • Awareness: How Will You Set an Example?
  • Desire: How Do You Make It Urgent?
  • Desire: How Do You Make It Desirable?
  • Knowledge: What Will You Tell Them?
  • Knowledge: Who Will Be Teaching?
  • Ability: What Makes It Easy?
  • Ability: How Can They Practice?
  • Reinforcement: What Are the Short-Term Wins?
  • Reinforcement: What Makes It Sustainable?

The interactions

  • Initiators: Are You Committed?
  • Initiators: Who Is Assisting You?
  • Innovators: Who Will Be the Innovators?
  • Early Adopters: Who Are the Early Adopters?
  • Early Adopters: How Will the Leaders Help?
  • Early Majority: How Do You Reach the Early Majority?
  • Early Majority: How Will You Cross the Chasm?
  • Late Majority: How Will You Deal with Skeptics?
  • Laggards: How Do You Prevent a Relapse?
  • Laggards: How Do You Deal with Resistance?

The environment

  • Information: How Do You Make Things Visible?
  • Information: How Do You Ease Communication?
  • Identity: What Is the Group Identity?
  • Identity: How Can You Apply Peer Pressure?
  • Incentives: Can You Incentivize Good Behavior?
  • Infrastructure: Which Barriers Will You Remove?
  • Infrastructure: Which Guides Will You Place?
  • Institutions: Who Can Make the Rules?

Culture changes only after you have successfully altered people’s actions, after the new behavior produces some group benefit for a period of time.

John P. Kotter, Leading Change

Exercise time: each member of the group tell one story with she needs ideas on how to change, then the group select from the list above and discuss.

Conclusion

This is just a brief summary of the 2-day course, as a way for me to review what we discussed during. However, I strongly advise any leader, even from non software related areas or companies, to attend. Even though the ideas and insights Jurgen provides during the course are very good and he is an excellent presenter, you can read them in his blog and in his book. What is great in this course is the opportunity to practice and discuss the ideas and insights with Jurgen and the other attendees and the chance to exchange experiences.

26ago2011

Sobre o livro “SQL Curso Prático”

(0) comentários

Já faz um tempo que li este.
Mas não posso deixar de ‘recomendá-lo’. O autor, Carlos Poderoso, é bem didático e a leitura flui super bem.

O livro começa com um breve histórico sobre a criação da linguagem SQL. Importante para entendermos o contexto, e nos darmos conta da importância dessa linguagem. A SQL possui diversas ‘versões’, SQL-86 (lançada em 1986), SQL-92 e SQL-99 conhecida como SQL3, versão que define um modelo de banco objeto-relacional.

A maioria dos bancos atuais, ainda não implementam todas as funcionalidades das versões mais recentes dessas especificações. O autor deixa bem claro, o que já temos pronto para usar, e note: não é pouca coisa.

SQL não é uma linguagem autônoma e nem procedural. Deixando de lado as diferenças entre bancos que implementam essa linguagem, um dos pontos principais do livro, é algo que todo desenvolvedor deveria saber: planejamento do banco de dados.
Algumas coisas são básicas, porém sem a base teórica, fazemos por impulso e podemos nos perder no meio do caminho.

O livro define e muito bem as 5 Formas Normais. Importantes para o projeto de qualquer sistema, pois é uma forma ‘científica’ de modelar os dados. Vale a pena ler com muita atenção os tópicos sobre Normalização de Dados, assim como o texto seguinte sobre comandos básicos, pois explorando ao máximo o poder das consultas, subconsultas, grupos, visões, não vamos precisar resolver na aplicação, o que deve ser responsabilidade da camada do banco de dados.

Recomendo este livro, sem nenhuma ressalva. É bem completo.
E vc? já leu ? me indica algum outro ?

25ago2011

Cyclone, a pretty awesome low-level network toolkit

por em Sem categoria
(0) comentários

Cyclone is a low-level network toolkit, which provides support for HTTP 1.1 in an API very similar to the one implemented by the Tornado web server - which was developed by FriendFeed and later released as open source / free software by Facebook.

Key differences between Cyclone and Tornado

  • Cyclone is based on Twisted, hence it may be used as a webservice protocol for interconnection with any other protocol implemented in Twisted.
  • Localization is based upon the standard Gettext instead of the CSV implementation in the original Tornado. Moreover, it supports pluralization exactly like Tornado does.
  • It ships with an asynchronous HTTP client based on TwistedWeb, however, it's fully compatible with one provided by Tornado - which is based onPyCurl. (The HTTP server code is NOT based on TwistedWeb, for several reasons)
  • Native support for XMLRPC and JsonRPC. (see the rpc demo)
  • WebSocket protocol class is just like any other Twisted Protocol (i.e.: LineReceiver; see the websocket demo)
  • Support for sending e-mail based on Twisted Mail, with authentication and TLS, plus an easy way to create plain text or HTML messages, and attachments. (see the e-mail demo)
  • Built-in support for Redis, based on txredisapi. We usually need an in-memory caching server like memcache for web applications. However, we prefer redis over memcache because it supports more operations like pubsub, various data types like sets, hashes (python dict), and persistent storage. See the redis demo for details.
  • Support for HTTP Authentication. See the authentication demo for details.

Advantages of being a Twisted Protocol

  • Easy deployment of applications, using twistd.
  • RDBM support via: twisted.enterprise.adbapi
  • NoSQL support for MongoDB (TxMongo) and Redis (TxRedisAPI).
  • May combine many more functionality within the webserver: sending emails, communicating with message brokers, etc...

https://github.com/fiorix/cyclone

 

Permalink | Leave a comment  »

Switch to our mobile site