Montar volumes no Docker (No Windows)

Cá estou eu, mil anos depois, mantendo toda aquela aleatoriedade na vida e estudando pra variar!rs

No momento estudando Docker. Estudo vai, estudo vem, cheguei na parte de fazer uma montagem por vinculação. Que é quando a gente vai montar um volume no docker deixando ele vinculado no nosso host para que a gente mantenha os arquivos gravados na nossa máquina e não os perca quando o container for removido.

Como faz?


docker run -v "D:\meu\diretorio:/app" identidock

Qual o problema? Eu não uso o Docker for Windows porque eu sou pobre e uso o Windows 10 Home Single no momento. E para instalar o Docker for Windows é necessário o Windows 10 Professional ou Enterprise 64-bit. Sendo assim utilizo o Docker Toolbox e se tento montar o volume igual todo mundo (Linux, Docker for Windows, Mac [acho]) recebo o erro abaixo:

“Error response from daemon: invalid mode: …”

docker_error_mount_volume

Se tu está limitado tanto quanto eu, veja bem… É simples resolver! \o/

Quando você instalou o Docker Toolbox veio o Oracle VM VirtualBox não veio? Então você vai lá nele e veja que deve ter uma máquina “default” rodando por lá.

vm_virtualbox

Daí você clica em “Configurações” , vai na abinha “Pastas Compartilhadas” e adiciona uma pasta compartilhada colocando o endereço que você quer montar no volume do seu container e dê um nome para ele também.

vm_virtualbox_pastacompartilhada

Aí agora você substitui no seu comando docker run, o caminho do seu host pelo nome da pasta compartilhada que você criou no VirtualBox. 🙂


docker run -v "/identidock_app:/app" identidock

docker_mount_volume

Sucesso né? ❤

Android – Erro de keytool x Fingerprint Google Maps

Pois bem, se você chegou até este post é sinal de que você já deve saber que para trabalhar com mapas do google em aplicativos Android é necessário gerar uma chave que vai identificar a sua solicitação de mapa pelo seu aplicativo.

Para gerar esta chave, é necessário realizar o seguinte comando. No windows, talvez seja necessário que você esteja dentro da pasta bin da sua instalação do Java.

keytool -list -alias androiddebugkey -keystore "" -storepass android -keypass android

No lugar de “<pasta_do_debug.keystore>”, coloque o endereço da pasta que possui o arquivo debug.keystore. Para localizar este arquivo, se você usa o eclipse, acesse o menu ‘Window’ > ‘Preferences’. Expanda o item ‘Android’ e em ‘Build’ copie o caminho especificado em ‘Default debug keystore’.

O que eu realmente quero falar, é que se você estiver usando o Windows em Português, você pode receber a seguinte mensagem de erro após tentar executar o comando acima:

erro de keytool: java.lang.IllegalArgumentException: unknown format type at

Este erro aconteceu aqui comigo, e no caso eu resolvi isto trocando ‘Formato’ e ‘Local’ em ‘Região e Idioma’ para Inglês (Estados Unidos).

PHP (Erro: Allowed memory size)

Olá queridinhos,

Estava eu, linda e pomposa, gerando meus relatórios em PDF utilizando a biblioteca mPDF. O caso não é o PDF, mas se quiserem conhecer melhor esta biblioteca clique aqui #indico.

O caso é que em um determinado momento eu gerei uma listagem grande (18 páginas em PDF), mas ao invés de visualizar o PDF lindo eu recebi o erro abaixo:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261904 bytes) in caminhoTal on line numeroTal

E aí? O que houve?

Aconteceu que o script que está sendo processado estourou o limite de memória indicado na configuração do PHP (php.ini). Sim, existe uma diretiva no php.ini chamada memory_limit que vai definir o máximo de memória que os seus scripts podem gastar. Até o PHP 5.2.0 o padrão desta variável era “8M” e a partir do PHP 5.2.0 ela recebe “16M” como padrão.

No momento eu estou com a versão 5.3.5 do PHP, mas mesmo assim a minha rotina extravazou o limite de memória.

Qual a solução?

Existe uma função do PHP que se chama ini_set e ela nos permite definir um novo valor para uma opção de configuração. Ela recebe dois parâmetros (string $varname, string $newvalue), no primeiro informamos a opção de configuração que queremos alterar e no segundo passamos o novo valor dessa configuração. Mais detalhes sobre a função ini_set aqui.

Claro que vale lembrar que alguns servidores não permitem que você altere as configurações do PHP e também bloqueiam a alteração de algumas configurações pela função ini_set, então vale verificar!

Então, antes do meu script eu inseri a seguinte linha:

<?
ini_set('memory_limit', '-1');
?>

Percebam que o meu $varname é igual a ‘memory_limit‘ e o meu $newvalue é igual a ‘-1’.

No lugar de ‘-1’ eu poderia ter informado um valor em megabytes, por exemplo “32M”, “64M” ou até “1024M”.

Acontece que neste caso eu estou gerando um relatório (listagem de dados), e essa listagem pode variar e muito no seu tamanho. Neste momento se trata de uma listagem de 18 páginas, mas futuramente ela pode ser 20, 30 ou mais páginas.

Então o $newvalue igual a ‘-1’ informa à minha configuração que eu NÃO quero impor um limite de memória neste momento.

 

Bom.. o que eu queria mostrar é isso. Espero poder ajudar alguém com isso.

Para conhecer mais algumas diretivas do php.ini leia isso.

😉

jQuery UI (Buttonset)

Não é de hoje que o JQueryUI vem ajudando a nossa vida né?? \o/

Pois bem, venho falar hoje sobre um item muito interessante que eu trabalhei recentemente que é o “ButtonSet”. Ele nada mais é que um grupo de checkboxes com o visual de botão, isso aí… aqueles grupos de ‘botões’ que você aperta e ele permanece pressionado!

Primeiramente, faz o favor de baixar o JQueryUI lá no site oficial. Descompacta na sua pastinha de trabalho e vamos lá.
Hoje o JqueryUI está na sua versão 1.8.20 e já trás junto o JQuery versão 1.7.2.

Eu criei uma pastinha de trabalho chamada ‘ExemploBuuttonSet’ e descompactei os arquivos do JQueryUI dentro de uma outra pasta chamada ‘jquery-ui’.

Depois criei um arquivo html ‘buttonSet.html’ para importar os arquivos necessários para o JQueryUI funcionar, da seguinte forma:


<link type="text/css" href="jquery-ui/css/ui-darkness/jquery-ui-1.8.20.custom.css" rel="stylesheet" />
<script type="text/javascript" src="jquery-ui/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery-ui/js/jquery-ui-1.8.20.custom.min.js"></script>

Após importar os arquivos do JQueryUI vamos criar uma div que conterá todos os checkboxes do nosso exemplo:

<div id="format">
  <input type="checkbox" id="check1" value="check1" />
    <label for="check1">Elaine</label>
  <input type="checkbox" id="check2" value="check2"/>
    <label for="check2">Cristina</label>
  <input type="checkbox" id="check3" value="check3" />
    <label for="check3">Rocha</label>
  <input type="checkbox" id="check4" value="check4" />
    <label for="check4">Oliveira</label>
</div>

Para ativar o buttonSet nos meus checkboxes que estão dentro da div ‘format’, eu faço o seguinte código. Este código pode ser inserido logo abaixo do código de importação dos arquivos do jQueryUI:

<script>
  $(function(){
    $("#format").buttonset();
  });
</script>

Pronto! Com esse código nós já temos o seguinte resultado.

Exemplo ButtonSet JQueryUI
Exemplo ButtonSet JQueryUI

Neste caso eu baixei o JQueryUI com o tema ‘ui-darkness’. Então a cor cinza representa os botões não clicados, o azul aparece quando colocamos o mouse sobre o botão e o laranja representa o botão clicado/marcado.

Para o sistema que estou desenvolvendo, eu utilizei esta série de botões para que o meu usuário pudesse selecionar as colunas que ele quer que um relatório exiba. Então ao marcar ou desmarcar um botão, eu tenho que atualizar uma tabela temporária e para isso eu chamo uma função javascript que vai disparar todo o processo.

Enfim… no fim das contas eu precisava que ao clicar em qualquer um destes botões, uma função fosse chamada para que eu pudesse pegar o id do checkbox clicado para disparar minha função.

Para fazer isso eu fiz o seguinte código:

<script>
  $(function() {
    $("format input:checkbox").click(function() {
      alert(this.id);
    });
  });
</script>

E olha só que legal! Ao clicar em cada um dos meus botões, eu consigo pegar o id dele por exemplo. Com isso e mais um pouco de trabalho já dá pra fazer muita coisa legal no seu sistema.

Para quem quiser… Baixe o exemplo aqui!

É isso aí! Espero ter ajudado…
😉

Variáveis (JavaScript x PHP)

Pois é, pode parecer até gambi né mas às vezes nós precisamos pegar o valor de uma variável PHP e jogar para uma variável JavaScript e vice-versa.

Até que é simples, veja o primeiro exemplo de pegar uma variável PHP e jogar para JavaScript:


 


//pegando a variável php e jogando numa variável javascript
var variavelJS = '';
alert(variavelJS);

Agora vamos fazer o contrário e escrever uma variável JavaScript através do nosso código PHP:


//criando variável JS
var variavelParaPHP= 'Elaine Cristina';

 

<?
//escrevendo a variável JS pelo PHP
echo "document.write(variavelParaPHP);"
?>

É uma bobeirinha, mas que muitos demoram a entender. Eu mesma quando estava começando a programar demorei um bocado para saber usar isso.

Confesso que utilizo mais a primeira opção, de passar uma variável PHP numa chamada JavaScript. Então fica aí disponível pra qualquer pessoa que estiver precisando de uma luzinha.

Espero que sirva pra alguém…rsrs

😉