Arquivo mensais:novembro 2015

Frameworks PHP – Yii, Laravel, Phalcon e afins

Olá pessoal,

Recentemente estava dando uma olhada nos últimos frameworks para PHP e analisando as últimas novidades de cada um.

Após pesquisar bastante, vi que a maioria esmagadora, como eu, que usa Yii2 continua no Yii2 por ser um framework full-stack, enterprise e consolidado no mercado a mais de 2 anos bem estável. A única coisa que vi algumas pessoas falando é que para micro-framework talvez o Laravel seja melhor por permitir rotas no estilo Go ou NodeJS.

Mas de modo geral cada um acaba usando um ou outro dependendo do caso, então se você quer uma aplicação de porte menor ou um microframework, use o Laravel e se você quer uma aplicação de médio ou grande porte use o Yii2. O Yii2 segue a mesma idéia do ZendFramework, ser um framework enterprise para PHP Full-Stack. Tem até alguns usuários que transformaram o Yii2 em micro-framework, mas não é o seu objetivo (REF).

Porém um framework que acompanhei no passado sobreviveu até hoje e recebi a notícia de que estava em sua versão 2.0 e bem estável e este sim, talvez seja uma boa opção se alguém precisa de um pouco mais de performance, o Phalcon (Tutorial). A diferença dele para qualquer outro framework para PHP é que ele é feito em C e não em PHP, o que garante uma performance muito melhor, pois suas classes são expostas para o PHP e todo o processamento até chegar no método que atende a requisição é feito em C mesmo. Aqui tem uma lista dos diversos tópicos que ajudam a entender cada pedaço dele (Tutorial 2).

 

Obrigado e até o próximo post pessoal.

Que banco de dados as grandes empresas usam?

Olá pessoal,

Recentemente analisando alguns sites de busca fiquei me perguntando sobre qual banco de dados esses sites com milhões de acesso utilizam hoje. Digo hoje porque temos uma enorme variedade de opções, seja banco relacional ou NoSQL.

Após uma boa pesquisa cheguei a alguns resultados bem interessantes:

Facebook: MySQL, Cassandra, Memcached
REF1, REF2, REF3 e REF4
Google: BitTable, MySQL, MegaStore
REF1, REF2 e REF3
TripAdvisor: MySQL, SQL Server
REF1
FourSquare: MongoDB
REF1
Twitter: MySQL, FlockDB, Memcache, Cassandra, Gizzard, Lucene, HBase/Hadoop, Redis
REF1 e REF2
Quora: MySQL
REF1
OpenStreetMaps: MySQL(no passado, mas migrou) PostgreSQL(de 19 de abril 2009 para cá)
REF1 e REF2
Dropbox: MySQL, Memcached
REF1 e REF2
Wikipedia: MySQL(no passado), MariaDB(hoje), Memcached
REF1 e REF2

 

Como ficou bem claro, o MySQL ainda está na maioria dos lugares. As empresas com engenheiros mais fortes acabam criando um fork do MySQL para torná-lo mais eficiente com os seus requisitos.

 

Obrigado e até o próximo post pessoal.

Elasticsearch – Como as maiores empresas estão usando o motor de busca mais falado ultimamente?

Olá pessoal,

O crescimento do Elasticsearch tem sido monstruoso e a maioria dos grandes sites estão usando o ES (Elasticsearch) para buscas, BigData, recomendações, etc.

Entre as empresas podemos destacar o iFood, Globo.com, GitHub, Vagas.com.br, JusBrasil, Microsoft, NASA, Mozilla, Facebook, Verizon, Adobe, Ebay, StackOverflow, Netflix, The New York Times, Mercado Libre, WordPress, Wikipedia, LinkedIn, entre outras.

Uma das palestra citadas abaixo contém por exemplo o seguinte exemplo: “Aprenda a utilizar o ElasticSearch, que ajuda o github pesquisar mais de 8 milhões de repositórios e o globo.com a fazer 180 pesquisas por segundo para 25 de milhões de pessoas por dia.”

Vou deixar alguns links que estudei para entender como essas empresas estão usando o Elasticsearch junto com outras ferramentas para obter os resultados esperados e um pouco de código em PHP, Go e Rails:

http://www.infoq.com/br/presentations/1-milhao-de-pedidos-1-milhao-de-entregas

http://www.infoq.com/br/presentations/construindo-uma-plataforma-com-hadoop-e-elasticsearch

http://www.infoq.com/br/presentations/utilize-todo-o-poder-do-wlasticsearch

ElasticSearch com PHP não é magia; é tecnologia!

http://www.devmedia.com.br/elasticsearch-desenvolvendo-big-data-com-php/31609

http://www.sitepoint.com/introduction-to-elasticsearch-in-php/

https://github.com/olivere/elastic

http://www.sitepoint.com/full-text-search-rails-elasticsearch/

http://www.toptal.com/ruby-on-rails/elasticsearch-for-ruby-on-rails-an-introduction-to-chewy

 

Lembrando que o Elasticsearch vai muito mais além do que apenas buscas. Com ele você tem pesquisas full text search, geo location search, análise em tempo real, dados em tempo real e mais uma infinidade de coisas, alguns usam até como banco de dados visto que ele foi feito para ter alta disponibilidade.

Quem não quer se preocupar com a criação de uma infraestrutura manualmente, pode optar pelo serviço já pronto da Amazon que usa o Elasticsearch em cima da infraestrutura da Amazon: https://aws.amazon.com/pt/elasticsearch-service/

Obrigado e até o próximo post pessoal.

Mac OSX – Desabilitando o ganho automático do microfone no Skype

Olá pessoal,

Este pequeno artigo é para ajudar a todos os que possuem um “problema” comum no Skype para mac/osx que é o “auto ganho” do microfone.

Este recurso que eu chamei de problema é bem incômodo, pois toda vez que entramos em uma call no Skype numa sala com barulhos externos, o ganho vai aumentando cada vez mais e as pessoas do outro lado da ligação acabam ouvindo todo o barulho externo, tornando a ligação impossível e confusa.

A solução é bem simples, basta adicionar-mos uma tag no XML de configuração do Skype e o problema é resolvido.

Siga os passos:

1 - Abra o aplicativo Terminal no seu mac/osx
2 - Digite:
open -a /Applications/TextEdit.app ~/Library/Application\ Support/Skype/shared.xml
3 - Procure pela tag "<VoiceEng>".  Abaixo/dentro dela adicione a tag: <AGC>0</AGC>. Ficando +/- assim:
<VoiceEng>
    <AGC>0</AGC>
    ...
</VoiceEng>
4 - Salve com COMMAND+S, feche o editor e pronto.

 

Obrigado e até o próximo post pessoal.

Golang – Novas bibliotecas – Lista thread safe e web response

Olá,

Recentemente desenvolvi duas bibliotecas para o Go, uma é uma lista sincronizada (lista thread safe) e a outra é uma biblioteca para padronizar as respostas de um serviço retornando os dados em JSON.

Segue abaixo os respectivos repositórios:

https://github.com/prsolucoes/gotslist

e

https://github.com/prsolucoes/gowebresponse

 

Obrigado e até o próximo post pessoal.

 

Shell – Matando processos por pattern

Olá,

Existem algumas formas de matar um processo se você souber o PID dele ou até mesmo o nome do processo. Geralmente o procedimento é abrir o TOP, pegar o PID e executar: kill -9 [PID].

Além de ser trabalhoso, quando você quer fazer um script que mate um processo seu conhecido para executá-lo denovo, como foi o meu caso, torna-se trabalhoso fazer isso, além da preocupação de achar o PID correto, então procurei formas mais práticas de fazer isso e pelo nome do meu arquivo binário, já que não teria nenhum outro processo com o nome do nome ou com um nome parecido.

Eu encontrei duas formas, uma usando o PKILL e outra usando um loop no resultado do commando PS com GREP. Abaixo vou colocar as duas soluções, que podem ficar em uma única linha do seu script ou arquivo Makefile:

ps -ef | grep nome-do-processo | grep -v grep | awk '{print $2}' | xargs kill -9
ou
pkill -f nome-do-processo

 

O único cuidado mesmo é com relação ao nome do processo, não pode ser algo genérico, como “a”. Senão ele matará todos os processos com o pattern “a”.

Obrigado e até o próximo post pessoal.