A morte do movimento Software Livre no Brasil

Estava lendo um artigo no site dos 300, por sinal, um excelente artigo, então resolvi escrever minha opinião a respeito, o artigo trata da morte do software livre, mas, diz que o movimento Ubuntu é o culpado, apesar de concordar que o movimento do software livre está fraco, e muito fraco aqui no Brasi eu particularmente não culparia o Ubuntu, se tivesse que apontar o dedo pra alguém apontaria para o Facebook, sim, o Facebook é o principal vilão da história, digo isso porque depois da criação do Facebook poucas pessoas mantiveram antigos costumes de leitura e escrita, e em alguns casos, costumes sociais, até isso! O Ubuntu tentou unir uma galera, pode não ter sido feito como queriam, mas, não fracassaram, a Canonical conseguiu muitos feitos até hoje, graças aos esforços dela e da comunidade em volta, o Linux chegou a lugares onde nem mesmo se imaginária chegar, já o nosso vilão, pelo contrário, aos poucos está destruindo a Internet como a conhecíamos, eu parei pra pensar, deve haver pelo menos 6 meses que não leio meus Feeds RSS, uma lista maravilhosa que gastei anos para arquivar, abandonada!

Pois bem, volto a afirmar, quem destruiu o movimento foi o Facebook, foram as redes sociais, mas também foi o comodismo nosso.

Ainda estive imaginando, como faremos para reparar esse estrago?

Geração Ubuntu: a morte do movimento Software Livre no Brasil – http://pulse.me/s/OuM9m


Escrito por: Robersonfox at gmail.com
Posted from WordPress for Android

, ,

1 Comentário

Servindo Streaming para televisores SmartTV

Já tem algum tempo que comprei uma SmartTV, meu principal interesse era assistir os vídeos e ouvir as músicas que tenho no computador diretamente nela sem a necessidade de salvar isso em um HD externo ou Pendrive, acontece que até semana passada eu achava que isso era impossível no ambiente Linux, para minha sorte, estava enganado.

DLNA-1

A DLNA (sigla para Digital Living Network Alliance), ou em tradução livre, Aliança para Redes Domésticas Digitais, é uma organização constituída por empresas associadas, com a finalidade de estabelecer diretrizes baseadas em padrões tecnológicos já existentes, objetivando garantir a interoperabilidade entre eletrônicos conectados em uma rede doméstica, de modo que estes possam trocar arquivos de mídia entre si utilizando a rede em questão, ou seja, o usuário seria capaz de acessar e reproduzir seus arquivos de mídia de um computador por exemplo, através de uma TV, um tablet, smartphone, entre outros, desde que esses se encontrem conectados na mesma rede. Fonte Wikepedia [1].

Leia o resto deste post »

, , , , ,

Deixe um comentário

Android Device Manager, localiza seu celular roubado/perdido

O Android Device Manager (ADM) é uma ferramenta que vem instalado nas novas versões do seu smartphone Android que permite a você encontrar seu gadget caso você seja roubado ou tenha perdido ele.

Android Device Manager

Leia o resto deste post »

, , , , , ,

3 Comentários

Vale a pena programar para o Internet Explore?

Todo Programador Web se deparou com um clássico problema, o Internet Explore, programar pra ele tem se tornado cada dia um problema maior, a falta de recurso e aceitação dos padrões da Web cada vez mais temos que desaprender para satisfazer um pequeno grupo de usuários.

É de se ficar chocado com o fato de ter que usar hacks css o tempo todo para o então famigerado Internet Explore, mas, será que vale mesmo a pena perder tanto tempo reprogramando, reinventando, usando hacks css, quebrando a cabeça? Eu estou aqui para te dizer que não, vejamos o que me fez pensar assim.

Usando estatísticas coletadas em todo o ano de 2012 e até setembro de 2013 por um dos mais acessados sites da web [1] cheguei a esta conclusão, não vale a pena reprogramar para o IE, afinal, tem muito pouca gente usando ele, as estatísticas mostram que ele não é usado pela metade das pessoas que usam o Firefox, por exemplo, e olha, que é juntando todas as suas versões desde a seis e já faz muito tempo! Não só ele, mas, também o Safari e o Opera, sorte é que estes dois últimos não requerem hacks para compreender css e html5.

Captura de tela de 2013-10-15 15:27:12

Leia o resto deste post »

, ,

2 Comentários

Ativar mod_rewrite no apache + ubuntu

Você deve ter procurado em muitos lugares até chegar aqui, pois bem, o que proponho neste pequeno artigo é descrever como ativar o módulo do apache rewrite, neste você não verá como criar o arquivo .htacess, o que é informação para outro artigo, vamos ao que interessa.

Abra um terminal e passe o comando:

$ sudo a2enmod rewrite

A saida deste comando irá mostrar o atual estado do módulo em sua instalação, caso não esteja ativo você verá uma mensagem como esta:

ERROR: Module rewrite not properly enabled: /etc/apache2/mods-enabled/rewrite.load is a real file, not touching it

e se estiver ativo:

Module rewrite already enabled

A mensagem de erro diz que o módulo não está ativado, acontece que ele existe no diretório /etc/apache2/mods-available o que temos que fazer é criar um link simbólico no módulo para o diretório /etc/apache2/mods-enabled, isto é fácil, use o comando abaixo para tal:

sudo ln -s -f /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled

O próximo passo é editar o arquivo de configuração do apache e informá-lo que ele deve sobrescrever as URLs, então:

$ sudo gedit /etc/apache2/sites-available/default

Com o arquvo aberto altere AllowOverride none para AllowOverride All na sessão Directory do DocumentRoot ou do seu Alias, isto será suficiente.

Em seguida, reinicie o apache com sudo service apache2 restart e rode o comando sudo a2enmod rewrite novamente, verá que a mensagem já mudou.

Escrito por robersonfox at gmail.com

Written with StackEdit.

, , ,

Deixe um comentário

Ubuntu 12.04 LTS ou a Última Versão?

Eu juro que tentei, tentei mais de uma vez, verdade, mas, parece que as últimas versões do Ubuntu não gostam de mim, todas as vezes que instalo acontece algum problema, quando não é placa de vídeo é um BUG estranho no Compiz então decidi definitivamente usar a versão com termo de suporte de cinco anos, a LTS, esta versão é muito estável, tudo funciona e até agora, um ano de diferença, não tem muita diferença da versão 13.04. Eu manterei este critério pelo menos na minha máquina de produção, posso, até pensar em instalar a última em alguma máquina mais simples com hardware atual, porque, não tem compensado ficar reinstalando o Linux a cada 3 meses.

Ubuntu 12.04

Verdade é que a última versão vem cheia de novidades, porém, são facilmente instaladas, bastando adicionar o PPA, e em máquinas de produção porque eu iria querer um monte de firula, isso é legal em um notebook ou coisa assim, por fim, estou satisfeito com a decisão, ultima versão em máquina de produção nunca mais!

Related articles

, , , , , , ,

Deixe um comentário

Sobrescrever o método open da classe window

Imagine a seguinte situação: Você entra numa empresa e o sistema que você vai manter usa aquelas janelas pop-ups do javascript, não estou falando do alert() me refiro aquelas da classe window, uma tristeza, inda mais se estivermos pensando em usabilidade e desempenho, eu digo isso, pois, é comum do usuário abrir inúmeros pop-ups destes e deixar em segundo plano ou minimizado, levando em conta maus hábitos de programação conhecido de alguns programadores em PHP, considere então conexões com o banco de dados não finalizadas até o término do script PHP, a solução é fazer com que o usuário abra estes pop-ups na mesma janela, substituindo o conteúdo de uma TAG DIV ou o atributo SRC de um IFRAME, mas, imagine também dez centenas de formulários abertos com window.open(), ficaria difícil ir a cada um e substituir né? Pois, para solucionar isso, nós podemos sobrescrever o método open() da classe window do javascript facilmente, veja abaixo um exemplo:

<script type="text/javascript">
window.open = function (open) {
    return function (url, name, features) { 
        return alert(url);
    };
}(window.open);


</script>

este código acima substitui a funcionalidade do método open() abrindo um alert() com a URL passada como parâmetro (return alert(url);), você poderia por ali qualquer coisa, por exemplo, escrever a URL com document.write().

Ao chamar o método ele mostrará uma caixa de texto com a URL passada por parâmetro.

<input type="button" value="clique" 
    onclick="javascript:window.open('http://www.google.com');">

Caso queira substituir o conteuúdo de um IFRAME, você deveria somente substituir
return alert(url); por document.getElementById("id_do_iframe").src=url;

Uma boa ideia agora é implentar este código para abrir as janelas em um painel esmaecido com DIV flutuante na frente da página que o chamou, fica muito bom!

Escrito por Roberson Carlos robersonfox at gmail.com 27/09/13

Written with StackEdit.

, , ,

Deixe um comentário

Otimizando consultas em um banco de dados MSSQL SERVER 2008

Na era dos bancos de dados NoSQL me deparei aqui na empresa onde trabalho com um velho problema, a otimização de consultas em um banco de dados relacional, e para piorar meu caso, um MSSQL 2008. No MySQL eu sempre fiz paginação usando LIMIT, porém, até pouco tempo atrás eu desconhecia o equivalente para o MSSQL, foi apanhando muito que cheguei ao estado de hoje e neste artigo ensino para quem se interessar boas práticas para otimização de consultas.

Quando enfrentei o problema pela primeira vez logo tentei usar o comando LIMIT do MySQL, porém, o MSSQL reportou um erro, então o jeito era definir uma data para exibição dos registros, imagine a seguinte situação, uma tabela que é consultada por 200 usuários simultâneos, esta tabela tem quase um milhão de registros e o programador anterior não fez nenhuma otimização de consultas, toda vez que um único usuário faz uma requisição na página do sistema o banco de dados percorre todos os quase um milhão de registro e mostra num JQuery todos os dados de uma vez, paginando no lado do cliente, um SELECT * FROM TABELA; eleva quatro processadores Xeon a 30%, isso com um único usuário, imagine a situação que este servidor passa, imagine o sofrimento dele.

Pois então, este é o cenário da batalha. A minha segunda tentativa foi definir para toda pesquisa sem condição uma condição que para o meu caso é muito válida, esta tabela possui um campo data_cadastro e na maioria das vezes o usuário não precisa ver os dados informados além do ano atual, então uma condição between entre a data 01-01-<?= date('Y')?> (01-01-2013) e a data atual: <?= date('m-d-Y') ?>, isso ajudou bastante, pois, reduziu a paginação do JQuery para 50 páginas, mesmo assim isso não desafogou o servidor e seus quatro processadores, as consultas retornavam tantos registros que geravam um arquivo HTML com 9.5MB de peso, até a rede sofria, o gasto médio de memória era de 6GB só para o MSSQL.

Uma nova intervenção foi necessária, o servidor estava negando serviço em muitos casos, então resolvi apelar para o LIMIT, pesquisei na web em busca de um equivalente para o MSSQL e descobri o TOP, analisei por um tempo o tanto de registro que os usuários exigiam e defini um limite 300, ainda assim seis telas na paginação do JQuery, adotei o critério de implementar a instrução TOP somente nas telas onde se faziam muito uso dos dados e ainda mais utilizadas pelos usuários, desta forma consegui desafogar o MSSQL.

O uso conjuto da instrução BETWEEN e da instrução TOP foi suficiente para assegurar um bom desempenho do servidor, mas, ainda assim não foi suficiente, um código mal escrito pode derrubar facilmente um servidor HP dedicado com ISS, PHP 5 e MSSQL 2008, não acreditava nisso até ver acontecer aqui, todas as medidas a nivel de codigo foram tomadas, o melhor a se fazer seria instalar um APACHE e a ultima versão do PHP, pois, esta já suporta as bibliotecas de Garbage Collector, coisa tão necessária e que esperou quase seis versões do PHP para ser implementado (disponível a partir da versão 5.3 do PHP).

A sintaxe para o uso do TOP é a seguinte: select TOP 300 * from tabela;.

Por fim, ainda com as instruções acima, algumas páginas geravam arquivos HTML enormes e que demoravam bastante para serem exibidos para o usuário final, então apliquei a função do artigo anterior e reduzi o tráfego da rede pela metade.
Estas otimizações não levaram nem uma semana para serem implementadas.

Escrito por Roberson Carlos robersonfox at gmail.com 23/09/13

Written with StackEdit.

, , , , ,

Deixe um comentário

Compactando uma página HTML antes de mostrá-la ao usuário

Compactando uma página HTML antes de mostrá-la ao usuário

Eu sempre quiz enviar a página final para o usuário compactada, quis isto para, economizar banda e reduzir tráfego, imagine a situação de uma página ter 512kb acessada por 100 usuários suponhamos a cada 10 minutos isto daria um tráfego enorme para um servidor simples

((512kb/1024)MB*100) a cada 10min

por hora algo em torno de 300MB. Uma forma de fazer isso seria compactar todo o código no servidor nas requisições do usuário, porém, isto gera alguns erros com alguns javascripts, teriamos que ter um código que faça uma compactação seletiva, por exemplo, algum algorítimo que compactasse somente os dados abaixo da tag de fechamento do cabeçalho ou início do corpo da página, mexendo no php.net compreendi como o PHP monta o HTML para o usuário e como ele manuseia o buffer, sendo assim, fácil implementar um compactador usando a função preg_replace, foi o que fiz, veja o resultado abaixo:

ob_start("compactar");
function compactar($b) { 
		$b = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $b); 
		$b = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $b);
		return $b;
}

ao final da página deve ser colocada a função ob_end_flush();.

Eu tenho usado esta função em alguns casos no início das páginas PHP e em outros casos acima do <body> , notei que alguns javascripts não gostam de serem desidentados. Tem funcionado perfeitamente e reduzido o volume de tráfego no servidor, o que devo fazer agora é remover todo o código javascript que está no index e colocá-lo separado. Quanto ao CSS, este não mostrou problemas algum.

Escrito por Roberson Carlos robersonfox at gmail.com 17/09/13

Written with StackEdit.

Deixe um comentário

Sistemas de arquivos e sistemas de arquivos

Da necessidade de montar um servidor Squid e um FTP na mesma máquina veio minha curiosidade: Qual o sistema de arquivos mais adequado para este.

Na teoria uma interface SATA II passa até 300MBs então se eu tenho um arquivo de 600MB eu conseguirei transferir este, por exemplo, da minha área de trabalho para o diretório /tmp em 2 segundo, na teoria, pois na realidade nós sabemos que isto não acontece, e isto ocorre por vário motivos, entre eles está a má qualidade do barramento da placa mãe, um Kernel mal projetado (no caso do Windows), um Shell mal projetado enfim, porém, vamos supor que a teoria aqui funcione perfeitamente e precisamos usar ela pra poder fomentar um tabela, precisamos de um ponto base para fazer os comparativos, levando em conta que todos os testes serão feitos na mesma máquina, com o mesmo barramento e com o mesmo disco rígido, os dados recebidos poderão ser analisados e terão veracidade.

Para estes testes estou usando uma arquitetura que imaginei hoje cedo, um P4 com dois HDs, um para o sistema operacional e outro para os testes, assim, não terei problema algum com os processos do Kernel usando os diretórios do sistema.

Imaginei esta arquitetura, pois, este servidor que estou montando irá usar sucata, sim, sucata, restos de computadores que eu fui juntando, como disse acima é um P4, dois discos rígidos SATA II, três placas de rede, fonte ATX 640, MB ASROCK.

Num sistema com RAID0 os dados são quebrados e enviados para os dois discos rígidos, ou seja, um arquivo de 600MB demoraria 1seg para ser transferido de um lugar para outro, num sistema normal demoraria 2seg como já informado acima. Acontece que o RAID tem suas complicações, uma delas me impediu de dar sequência e foi o fato dos meus HDs terem tamanhos diferentes, segundo a literatura para ter um RAID eficiente e sem perdas de performasse e peso é preciso ter HDs idênticos e se possível da mesma marca.

Robersonfox Desktop Ubuntu

Neste sistema que imaginei hoje cedo para meu servidor eu poderia chegar a uma velocidade semelhante a esta, veja bem porque, imagine um cliente do FTP fazendo um download de um arquivo, o SQUID fazendo seu cache e o sistema fazendo seus processos, todos trabalhando no mesmo HD, tudo iria pra a pilha do HD e iria demorar a escrever os dados, levando em conta que este HD tenha um disco e duas cabeças de leitura/gravação, isto causaria um certo estresse no sistema, agora imagine o SQUID num HD e o FTP em outro, o sistema em um terceiro ou juntamente com o SQUID porém em uma partição separada de um tipo diferente, neste casos os arquivos seriam copiados por inteiro e as funções seriam divididas pelos HDs desta forma causando menos estresse ao mesmos, as complicações das transferências são feitas pelo sistema, nós não precisamos nos preocupar com isto. Pois bem, até aqui conseguimos uma forma de aumentar a velocidade de gravação, mas, uma coisa tem que ser salientada, ela foi mencionada poucas vezes neste documento, estou falando do sistema de arquivos, qual seria o melhor sistema de arquivos para o sistema, qual seria o melhor para o server FTP e para o SQUID? Vamos lá, vamos pensar um pouco, o SQUID trabalha com muitos arquivos pequenos, o FTP com arquivos grandes e o sistema não se tem uma ideia certa. Segundo a literatura o EXT4 trabalha muito bem com arquivos de qualquer tamanho, então este fica para o sistema, o ReiserFS trabalha muito bem com arquivos pequenos e o XFS com arquivos grandes, então FTP -> XFS, SQUID -> REISER4, SISTEMA -> EXT4, segundo meus testes o mais rápido de todos foi o XFS seguido pelo JFS e depois o HFS plus movendo um arquivo de 732,80MB, a tabela ficou assim:

1o  XFS moveu 64,655MB/s
2o  JFS  moveu 62,504MB/s
3o  HFS+ moveu 59,562MB/s

A diferença entre o XFS e o HFS+ é enorme, para arquivos grandes. Já para arquivos pequenos a o HFS+ e o JFS ficaram na frente, o JFS ficando em primeiro lugar novamente.

1o JFS 0,003 segundos para mover um arquivo de 16.924 bytes.
2o HFS+ 0,003 segundos para mover um arquivo de 16.924 bytes.
3o XFS 0,048 segundos para mover um arquivo de 16.924 bytes.

Os testes foram feitos 10x, o tempo total de cada um foi somado e dividido por 10 para se ter a ideia do tempo exato que estes gastariam para transferir o arquivo.

Existem boatos de que o XFS tem sérios problemas com perda de dados, inclusive mencionam não usar este sistema de arquivos em computadores pessoais, não encontrei a fonte que diz isto, este sistema de arquivos se mostrou poderoso quando se deve trabalhar com arquivo grandes, é inclusive o único sistema de arquivos do meu conhecer que suporta até 8 exabytes de armazenamento em uma arquitetura 64bits. O JFS é muito seguro e se mostrou muito rápido é particularmente meu favorito e é suportado pela IBM em seus servidores. Já o HFS+ foi decepcionante, tem suas qualidades mas eu acho que nunca as usaria em um servidor como este que estou montando é o sistema de arquivos criado pela Apple Inc. para substituir o antigo HFS. O EXT4 para movimentar arquivos com permissões e tamanhos diferentes continua sendo o melhor. Não fiz o teste com o ReiserFS pois ele é incompatível com meu Kernel e porque não se sabe bem do futuro dele depois do incidente de Hans Reiser.

Related articles

, , , , , ,

1 Comentário

  • Follow Carl Roberson's on WordPress.com
  • Fallow me
  • Linux 20 Anos
  • Ubuntu LTS Trusty Tahr

    Lançamento da versão LTS do Ubuntu20 abril, 2014
    2 dias restantes.
  • Grafica Livre

  • O que estou lendo agora

  • Na minha estante me aguardando


    Literatura
  • Bookmark and Share
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 966 outros seguidores