Dados Hierarquicos no MySQL

Tradução do artigo: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

Introdução

A maioria dos usuários uma hora ou outra terão de lidar com dados hierarquicos em um banco de dados através de SQL, e sem dúvida irão descobrir que bancos de dados relacionais não foram desenvolvidos pagar gerenciar esse tipo de dados.

Para o propósito deste artigo, dados hierarquicos são uma colução de dados onde cada item tem um pai e zero ou mais filhos ( com exceção do item raíz, que não tem pai ). Dados hierárquicos podem ser encontrados em uma variedade de aplicações de bancos de dados, incluindo foruns, listas de email, gráficos de empresas, gerenciamento de categorias de conteúdo, categorias de produtos, etc. Para esse artigo iremos analisar uma categoria de produtos hierárquica para uma loja de eletrônicos ficticia.

Continue lendo “Dados Hierarquicos no MySQL”

Webpack-dev-server: Rotas Aninhadas

Olá a todos, estou desenvolvendo um projeto em react/redux, utilizando o react-router-dom e o webpack para fazer o bundle. No meu ambiente de desenvolvimento estou utilizando o webpack-dev-server para testar meu código. Para minhas rotas, estou utilizando o BrowserRouter do react-router-dom, e para que ele funcione com o webpack-dev-server precisei adiciona a opção: historyApiFallback: true no meu webpack.config.js dentro da chave devServer, assim o webpack-dev-server vai redirecionar todas as urls que não encontrar para o index.html, necessário para que o BrowserRouter funcione adequadamente com o urls tipo http://localhost/sobre.

Dando continuidade ao meu projeto, me deparei com o seguinte erro:

Unexpected token <

Ao tentar rotear urls aninhadas tipo: http://localhost/usuario/123, o navegador me retornava o erro citado a cima sem nenhum detalhe. Após  algum tempo lendo a documentação sem encontrar nada a respeito e vários posts na internet, finalmente consegui achar um meio dele funcionar, no meu index.html o link para meu bundle javascript  estava assim:

<script src='app.js'></script>
<link rel='stylesheet' href='app.css'>

ao adicionar  a barra na frente resolveu o problema.

<script src='/app.js'></script>
<link rel='stylesheet' href='/app.css'>

Dessa forma passou a funcionar corretamente.

Mysql: Renomentando tabelas para Maiúsculas/Minusculas

Ola galera, passei por uma situação hoje onde precisei renomear todas as tabelas de um banco de dados mysql para maiúculas, pois trouxe o banco do windows para o linux, e este é case sensitive… Eis que resolvi minha situação com o seguinte comando:

for i in `mysql -u root -pSENHAROOT SEUDB -e ‘show tables’ | grep -v Tables_in`; do t=`echo $i | awk ‘{print toupper($0)}’`; mysql -u root -pSENHAROOT SEUDB -e “rename table $i to $t” ; done

Convertendo DateInterval para Extenso.

Estava hoje mais uma vez programando, refatorando um código antigo que tenho em produção. E estou começando utilizar DateTime e DateInterval para minhas datas ( No meu código legado estão sendo tratadas como string do jeito que vem do mysql ). Para isso precisei exibir um DateInterval por extenso para descrever um periodo dentro do sistema.

Fiz da seguinte maneira:

function formatarIntervaloDeData(\DateInterval $dti){
    $legenda = array(
        "y" => ["Ano","Anos",","],
        "m" => ["Mese","Meses",","],
        "d" => ["Dia","Dias",","],
        "h" => ["Hora","Horas",","],
        "m" => ["Minuto","Minutos",","],
        "s" => ["Segundo","Segundos","e"]
    );

    $txt = "";

    foreach(legenda as $key => $val){
        list($sing,$plural, $sep) = $val;
        if($dti->$key > 0){
            $txt .= ($txt?"$sep ":"") . $dti->$key . " " . ($dti->$key==1?$sing:$plural) . " ";
        }
    }

    return $txt;
}


E o resultado fica assim:

48 Segundos
23 Dias , 19 Horas e 1 Segundo
1 Minuto , 15 Dias , 15 Horas e 8 Segundos

e por ai vai.

StartSSL – Certificado Gratuito para o seu Site

startssl Olá galera, venho aqui com uma dica de como deixar seu site seguro e ter acesso a algumas funcionalidades do html5 ( como geolocalização e cache de arquivos ) que estão sendo liberadas apenas para sites com https.

O custo de certificados ssl no Brasil é muito alto, sendo um classe 1 em torno de R$ 1700,00 pela CertSign. A empresa startssl.com, fornece gratuitamente certificados classe 1 com validade de 1 ano totalmente de graça. Basta se cadastrar no site deles, e seguir alguns passos:

Continue lendo “StartSSL – Certificado Gratuito para o seu Site”