E em um comando só =)
for x in * .[!.]* ..?*; do if [ -L "$x" ] && ! [ -e "$x" ]; then rm -- "$x"; fi; done
Desenvolvimento Web, Administração Linux e Curiosidades
E em um comando só =)
for x in * .[!.]* ..?*; do if [ -L "$x" ] && ! [ -e "$x" ]; then rm -- "$x"; fi; done
La estava eu, quase agendando uma manutenção em alguns servidores pra eliminar processos zumbis, daqueles que manda um kill -9 e fica preso como <defunct>
Consegui resolver isso com dois comandos, o que me garantiu que vou conseguir dormir as minhas 5 ou 6 horas de sono de todas as noites sem interrupções =P
kill -9 $(ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }') #mata todos os processos defuntos ps aux |grep nomedoscript |awk '{print $2}' |xargs kill -9 #mata os processos que restaram
Problema do dia:
Servidor mysql usado a quase 10 anos, que mesmo tendo sido atualizado a versão, os usuários legados continuam com a hash antigamente utilizada (hoje chamada de old_password)
Para estes casos, basta trocar o tipo de autenticação na session, reescrever a senha e um flush nos privilegios.
SET SESSION old_passwords=0; UPDATE mysql.user SET Password = PASSWORD('minhasenha') WHERE User = 'meuusuario'; FLUSH PRIVILEGES;
internet ilimitada, internet sem franquia, provedor sem limites, internet livre
Um projeto ao qual orgulhosamente faço parte visa criar uma lista colaborativa de pequenos provedores que não vão aderir a bizarra prática de impor limites de franquia na banda larga fixa.
http://internetsemlimites.github.io/
O código-fonte do site, cms e api de utilização estão disponíveis gratuitamente no github.
Não adianta, eu não consigo me acostumar a usar o nano, o vim até pode ser mais complexo no início mas é um verdadeiro canivete suiço.
Quando instalei o ubuntu (eu vivo trocando de distro :P) e fui executar um pull em um repositório git, me aparece aquele editor horrível.
Pra resolver isso, basta utilizar o alternatives pra trocar o editor.
O comando é:
sudo update-alternatives --config editor
ao digitar a senha do usuário, basta escolher o editor pelo número e apertar enter =)
braz@localhost:~/Projetos/Repositorios/classes$ sudo update-alternatives --config editor [sudo] senha para braz: ****** Existem 4 escolhas para a alternativa editor (disponibiliza /usr/bin/editor). Selecção Caminho Prioridade Estado ------------------------------------------------------------ * 0 /bin/nano 40 modo automático 1 /bin/ed -100 modo manual 2 /bin/nano 40 modo manual 3 /usr/bin/vim.basic 30 modo manual 4 /usr/bin/vim.tiny 10 modo manual Press <enter> to keep the current choice[*], or type selection number: 3 update-alternatives: a usar /usr/bin/vim.basic para disponibilizar /usr/bin/editor (editor) em modo manual
“Nos dias atuais contemporâneos de hoje em dia” (não resisti a piada) muito se fala em dispositivos a prova d’agua com certificações ip67, ip68, etc.
Porém uma dúvida comum é o que significam estas siglas.
Este sistema de proteção IP é definido pela norma internacional IEC 60529 que classifica o grau de proteção fornecido por um compartimento de equipamento elétrico/eletrônico contra objetos sólidos (como poeira) e líquidos (água, óleo, etc.).
Seu grau de proteção é definido pela sigla ip, seguido de um número de dois dígitos, aonde o primeiro é o grau de proteção contra sólidos e o segundo contra líquidos.
O primeiro número indica o grau de proteção contra objetos sólidos | O segundo número indica o grau de proteção contra líquidos |
X: Não mensurado | X: Não mensurado |
0: Sem proteção | 0: Sem proteção |
1 = protegido contra a entrada de objetos sólidos externos de diâmetro ? 50 mm | 1 = Protegido contra gotejamento vertical |
2 = protegido contra a entrada de objetos sólidos externos de diâmetro ? 12,5 mm | 2 = Protegido contra gotejamento (inclinação de 15%) |
3 = protegido contra a entrada de objetos sólidos externos de diâmetro ? 2,5 mm | 3 = Protegido contra pulverização (inclinação de 60%) |
4 = protegido contra a entrada de objetos sólidos externos de diâmetro ? 1 mm | 4 = Protegido contra respingo |
5 = protegido contra poeira (entrada limitada, sem depósitos prejudiciais) | 5 = Protegido contra jato |
6 = à prova de poeira | 6 = Protegido contra jato potente |
7 = Protegido contra imersão temporária (até 1 metro por 30 minutos) | |
8 = Protegido contra imersão contínua (acima de 1 metro de profundidade pelo período de tempo especificado pelo fabricante) |
OBS: Em alguns casos, no lugar dos algarismos numéricos, podem ser substituídos pela letra X, referenciando que aquela situação não foi testada.
Exemplo: ipX6 significa que, apesar de aguentar jatos potentes de água, não possui qualquer garantia de resistência contra objetos sólidos.
Webinar ao qual fui co-palestrante =)
Pra quem, assim como eu, prefere modelar o banco da forma tradicional ao invés de criar através das entities.
Considerando que:
– O namespace aonde vão ser gravadas as entities é Application\\Entity\
– As entities vão ser gravadas em module/Application/src/Application/Entity/
./vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --force --namespace="Application\\Entity\\" --from-database annotation ./module/Application/src/Application/Entity/ ./vendor/doctrine/doctrine-module/bin/doctrine-module orm:generate-entities ./module/Application/src/Application/Entity/ --generate-annotations=true
La estava eu configurando um servidor ubuntu e o mysql teimava em não subir.
No log de erro tínhamos o seguinte:
InnoDB: Fatal : Cannot initialize AIO sub-system
Bem, parece que a vps que estou utilizando neste projeto não “gosta” muito do Asynchronous Input Output do kernel sendo necessário forçar o mysql a utilizar lib de terceiros (no meu caso a libaio)
Para isto, basta adicionar ao my.cnf
innodb_use_native_aio = 0
Consultar restituição:
http://www.receita.fazenda.gov.br/aplicacoes/atrjo/consrest/atual.app/index.asp
Cronograma da restituição
http://www.receita.fazenda.gov.br/pessoafisica/restituicao/cronograma.htm