if [ "$(whoami)" != "root" ]; then echo "You aren't the root user" exit fi
quarta-feira, 27 de novembro de 2013
Shell Script: Sabendo se o usuário é root
Para saber se o usuário é root
terça-feira, 22 de outubro de 2013
Baixando vídeos do YouTube com JS direto na página
Outrora, aqui no meu blog mesmo, eu já tinha feito um post sobre isso. Mas convenhamos, eu realmente fui um pouco preguiço quando fiz esse JS velho.
Mas agora, andei bem inspirado ultimamente e fazendo e revendo um bocado de projeto antigo meu e esse foi um dos que retomei coragem pra melhorar o código.
Mas agora, andei bem inspirado ultimamente e fazendo e revendo um bocado de projeto antigo meu e esse foi um dos que retomei coragem pra melhorar o código.
Então, sem mais blá blá blá, vamos lá!
- Habilite a barra de favoritos do seu navegador, use os sub-passos se seu navegador for o Chrome, caso não, pule para o passo N#2
- Se você estiver no Chrome, clique aqui
- Embaixo de "Aparência", marque o checkbox "Sempre mostrar a barra de favoritos" e feche a aba das Configurações e volte pra cá
- Arraste este link Download Video para sua barra de favoritos, que apareceu logo abaixo da barra de endereços
- Agora é só ir em qualquer página de vídeo no YouTube que você quer baixar, e quando o vídeo começar a carregar é só clicar em Download Video na barra de favoritos.
- Quando clicar em Download Video, irá aparecer uma nova aba [ou janela]. Daí, quando aparecer um reprodutor, é só fazer CTRL+S ;)
quarta-feira, 9 de outubro de 2013
Por que programar é tão bom?
Programar. Só de falar já dá um arrepio e uma vontade de inventar algo novo, e talvez seja por isso que programar seja tão bom.
Se você é programador, então você tem uma sede de criar coisas novas. Essa sensação de criar algo e ver "a criatura" o código "viva" rodando, é de um prazer incomensurável para um criador programador.
Além de ter a sensação de ser um "criador" [sim, como O Arquiteto do Matrix], programar é paixão, pois é um desafio. Um programador gosta de ter seus limites testados, de ser desafiado, colocar seus conhecimentos a prova para se gabar com seus amigos programadores e até quem não é [que poucas vezes entendem e dão valor].
Hoje em dia, mesmo com a comodidade dos codeblocks e como surgimento da raça de programadores "pedreiros", programar ainda desperta paixões profundas no nerd/geek interior e exterior de cada um de nós que vive no e do ecossistema de trabalhar com frias [porque são frias que elas tem calor pra gente!] e sedutoras máquinas.
Mas o ponto que eu realmente gostaria de chamar a atenção aqui são para os codeblocks dos programadores pedreiros, você se considera um programador pedreiro? Ou realmente é impossível de escapar de ser um, com toda essa pressão pela agilidade?
Ah, pouco me importa :D ou não...
Ah, pouco me importa :D ou não...
(Ahhh, e sem falar da diversão que é ver aquela gambiarra funcionando, né?)
quinta-feira, 12 de setembro de 2013
Agendando tarefas com crontab
Em manutenções de sistemas e de sites, é preciso realizar tarefas de backup e checagem [ou outras tarefas] periodicamente. Todo sistema Linux vem com um programa chamado cron e ele serve justamente pra isso: Agendar tarefas e/ou executá-las com uma certa periodicidade
Para configurar uma crontab [crontab é o nome de uma configuração do cron] para um usuário [crontabs globais do sistema são criadas somente pelo usuário root, esse arquivo global é encontrado em /etc/crontab]. O crontab pode ser usado das seguintes formas:
crontab -e # Edita o crontab para o usuário atual crontab -l # Lista as tarefas crontab -r # Apaga a crontab do usuário
Vamos supor que você queira executar o comando echo "Você é demais!" todo dia às 8h:00min, então é só adicionar a seguinte linha depois de rodar crontab -e
0 8 * * * echo "Você é demais"
Agora, vamos entender como é a sintaxe de uso:
Hífen (-): 6-11 quer dizer
Dica: Você também pode trocar o dia_da_semana [6o argumento] pelo usuário que executará a tarefa. Ex:
A linha acima diz: "A cada 30 minutos execute o comando como root"
minuto hora dia_do_mes mes dia_da_semana programa_a_ser_executadoO * [asterisco] funciona como um caractere coringa e que quando utilizado ele pega toda a faixa de valores para cada parâmetro. Ainda existem mais caracteres especias com diferentes "poderes", por exemplo:
0,30 6,11 * * * echo "Hey, how is going your day?" 0,30 6-11 * * * echo "Relax, bro" */2 * * * * echo "Se passaram meia hora"Vírgula (,): 0,30 quer dizer "aos 0min e 30min execute..."
Hífen (-): 6-11 quer dizer
Dica: Você também pode trocar o dia_da_semana [6o argumento] pelo usuário que executará a tarefa. Ex:
*/2 * * * * root rm -rf /tmp/*
A linha acima diz: "A cada 30 minutos execute o comando como root"
Pois é pessoal, esse é o basicão. Prometo que, quando der, vou aprofundar mais um pouco.
domingo, 8 de setembro de 2013
Engine de animação em JavaScript
function now(){ return ( new Date ).getTime(); } function animate( time, fn, fps ){ var start = now(), intrval = fps ? 1000/fps : 20, id = setInterval(function(){ var diff = now() - start, p = diff/time; if( p > 1 ) p = 1; fn( p ); if( p == 1 ) clearInterval( id ); }, intrval); }
Acima um exemplo de uma engine simples de animação em JavaScript.
Simbora ver lá como funciona!
A priori você tem que entender o que é uma animação.
O exemplo acima usa a melhor técnica (na minha opinião) de se animar algo,
que é com porcentagem.
Suponhamos que você queira animar o width de uma div de 200px para 300px em 1 segundo.
A animação se dá numa transição de 200px até 300px. Então vai ser assim:
width = 200 + (300 - 200) * p;
Essa é a "fórmula mágica", onde p é a porcentagem definida por: p = ( now - start )/time [linha 9];
Onde now [veja a function now - linha 1] representa o tempo agora,
start o tempo no inicio da animação e time o tempo total em que a animação deverá ocorrer (por exemplo: 1000 milisegundos).
O FPS [Frames Per Second] representa em que interval a função será chamada para
atualizar o p [como o nome fps já é bem auto-explicativo, vou pular essa parte].
Quando p = 1 significa que a animação chegou ao fim, então só é preciso "desligar" o setInterval e fim!
Vamos testar a função animate no console:
- animate( 1000, function(p){
- console.log( p );
- });
Viu? Agora tente animar algo simples, por exemplo:
- var box = document.getElementById('box'), startWidth = 200, toWidth = 300;
- animate( 1000, function(p){
- box.style.width = startWidth + ( toWidth - startWidth ) * p;
- });
Espero que você tenha entendido tudo, caso não, pode comentar :D
sábado, 25 de maio de 2013
Entediado por não ter nada pra programar?
Tédio. Sem Desafios.
Com certeza um período chato na vida de todo programador é não ter nada para se divertir (é claro que eu tô falando de codificar ainda né). Se você, assim como eu, anda meio entediado aqui vai uma dica: Project Euler. Um site cheio de problemas matemáticos só a espera de você criar um código para solucioná-los. Tem problemas de todos os níveis para todos os tipos de tédio.
Good coding!
Com certeza um período chato na vida de todo programador é não ter nada para se divertir (é claro que eu tô falando de codificar ainda né). Se você, assim como eu, anda meio entediado aqui vai uma dica: Project Euler. Um site cheio de problemas matemáticos só a espera de você criar um código para solucioná-los. Tem problemas de todos os níveis para todos os tipos de tédio.
Good coding!
terça-feira, 5 de março de 2013
Uma dica
Se você está fazendo um script Ruby e de repente se depara com
syntax error, unexpected keyword_end, expecting $end
Não está sozinho! Lembro da vez que passei horas procurando o motivo da exception. Mas pra lhe ajudar, se for esse o seu caso, provavelmente foi um do que você esquece
require "sinatra"
get "/"
...
end
# correto
get "/" do
...
end
# Um exemplo de código que daria a exception acima
syntax error, unexpected keyword_end, expecting $end
Não está sozinho! Lembro da vez que passei horas procurando o motivo da exception. Mas pra lhe ajudar, se for esse o seu caso, provavelmente foi um do que você esquece
require "sinatra"
get "/"
...
end
# correto
get "/" do
...
end
# Um exemplo de código que daria a exception acima
Assinar:
Postagens (Atom)