O Ubuntu 14.04 LTS – Última Versão

Ubuntu 14.04 Long Term Support

A Canonical Lançou no último dia 17 a versão com suporte a longo prazo do seu sistema operacional com Linux/Gnu, Ubuntu, como eu não poderia ficar de fora, logo fiz o Update da versão 12.04 para o 14.04.

O Ubuntu LTS é a versão com maior tempo de suporte (5 anos), isto faz dela a versão mais segura para computadores de produção.

A última versão deste SO veio com diversas melhorias no visual e não fica por aí, ele está muito mais rápido e praticamente sem bugs, um Kernel 3.13 e Xorg 15 e ótimo suporte para unidades SSD. Uma novidade que talvez assuste muitos é a falta por padrão do Ubuntu One que será descontinuado pela Canonical em 01/06/2014.

Leia o resto deste post »

, , , , ,

Deixe um comentário

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

  • 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
    Ubuntu LTS Trusty Tahr Chegou!!! http://www.ubuntu.com/download/desktop
  • 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