Arquivo por categoria geral

Atalho para todas as configurações Windows 8

Usuários do Windows 8 e Windows 7 frequentemente tem que modificar as configurações de seus sistemas operacionais,  esta dica é para criar um atalho para todas as configurações ou  pelo menos a maioria delas.

São apenas 3 passos.

 

  1. Crie uma pasta no seu desktop com um nome qualquer.
  2. Clique com o botão direito nesta pasta ou clique F2 com a pasta selecionada para renomea-la.
  3. Adicione o nome da pasta com este conteúdo:  .{ED7BA470-8E54-465E-825C-99712043E01C}. 

 

Tenha uma atenção especial aos pontos no início e fim da linha, eles tem de ser adicionados.

Pronto será criado um atalho com todas ou a maior parte das configuração dos Windows 7 e  Windows 8.

Referência: http://forum.techtudo.com.br/perguntas/2643/ative-o-modo-deus-no-windows-7

 

 

Tags: , , , , ,

Inicialização automática VMWare Workstation

Estou trabalhando em um projeto em que necessito de recursos de uma máquina virtual. Essa máquina virtual se encontra em um host “emprestado” de amigo de trabalho porque o recurso estava parado, o grande problema é que nessa época de chuvas aqui em minha cidade (Petrópolis/RJ) falta luz com certa frequência então a máquina  Host( máquina pai)  desliga o que acarreta que o guest ( máquina interna ) também some do planeta …..  🙁

 

Por algumas vezes alguém vai até a máquina HOST e liga novamente mas como ninguém conhece a senha do HOST então a máquina GUEST não liga sozinha …. não assim não me resolve em nada.

Esse é o problema agora a solução.

 

Crie um script .bat  que nesse exemplo vou colocar na raiz do sistema em uma pasta chamada startup-script.

c:\startup-script\start-vmworkstation.bat

Com o conteúdo

 

echo "Iniciando  VMware"
echo "ping localhost para esperar os servicos do vmware iniciarem" 
#Esse tempo pode variar entao teste de acordo com o seu valor.
ping -n 60 127.0.0.1 

#Caminho de instalacao do VMware Workstation
cd "C:\Program Files (x86)\VMware\VMware Workstation"

echo "Iniciando vmware guest"
vmrun start "C:\Users\Administrator\Documents\Virtual Machines\linux\freebsd-db.vmx"

exit(0)

Bem temos agora um script para inicialização de nossa máquina virtual Agora temos que colocar na inicialização do Windows que no meu caso é um 2008 R2.

Vamos aos passos agora de maneira visual.

Inicializar -> executar -> Server Manager

iniciar Server manager

iniciar Server manager

Depois disso vamos criar uma nova tarefa .

Em configuration -> Task Scheduler -> Library

add_task_001

Clique com o botão direito no link Task Schedule Library

add_task_002

Clicando em create a  basic task para criar um novo agendamento.

Depois disso começamos a configurar nosso agendamento com um novo nome e um descrição.

Clique em next .

Próximo passo é escolher quando esse agendamento vai acontecer. Para meu propósito deverá ser na inicialização do sistema. Escolha “When the computer starts”.

add_task_004

 

Próximo passo  será escolher o que esse agendamento vai fazer, escolheremos inicializar um programa. Nosso .bat é um programa que cama outro programa….

add_task_005

 

Depois de escolhido que a ação vai ser abrir um programa vamos escolher onde esse programa se encontra.

add_task_006

Depois vamos finalizar na última tela mas tem um detalhe. Temos que marcar a opção “Open the Properties dialog for this task when I Click Finish” Isso que dizer que será aberto mais opções depois de finalizado nosso passo a passo.

Segue a tela.

add_task_007

E por último vamos marcar a opção que mesmo que ninguém faça o login  na máquina o nosso script vai ser inicializado automaticamente pelo windows 2008 r2 corretamente.

Segue a tela com a opção : “Run whether user is logged on or not”

add_task_008

 

Será necessário digitar o login/senha do administrador do sistema “Administrator” ou outro admin para finalizar essa tarefa.

 

Pronto em alguns poucos passos adicionamos um agendamento ao Windows dizendo que sempre que o windows inicializar com ou sem algum usuário fazendo o login nosso script vai inicializar nossa máquina virtual.

Por hoje é isso espero que ajude em alguma coisa.  Seguindo esse conceito pode ser feito também em outros windows modificando apenas a parte de agendamento da tarefa.

A parte de colocar o script no Task Scheduler foi meu camarada Vinicius Amaral ( @vcamaral ) que teve. Valeu Pinico.

Por agora é isso, grande abraço e até.

Dinei.

Tags: , , ,

Utilizando svn em linha de comando

Estava trabalhando em projeto com o @Joe e como estavamos em lugares diferentes tinhamos que sincronizar nosso trabalho assim sempre que terminassemos um feature simples como uma página, um layout ou qualquer coisa simples mas funcional nós mandamos para o servidor e o outro poderia pegar as atualizações e seguir com seus próprios códigos.

Para que possamos fazer isso é necessário que nossos códigos estejam sob um servidor de arquivos que faz esse controle de versionamento e outras coisas.

Esse servidor é conhecido como subversion ( http://subversion.tigris.org/ ) ele nos dá inúmeras possibilidades como adicionar arquivos, remover arquivos, sincronizar, verificar updates, avançar para novas versões, retroceder para versões anteriores de arquivos e outras coisas mais.  Assim não precisamos ficar fazendo os malditos .old, .old1, .old2, .old3.

Depois dessa micro historinha vamos aos codigos.

Para fazermos o download de um projeto para trabalharmos teremos que ter um usuário e senha cadastrados junto ao servidor isso quem tem de fazer é o administrador do projeto.

Considerando que você tenha um usuário e senha valido no servidor vamos listar as pastas e arquivos do projeto.

# Lista a raiz do projeto
svn list svn://url/servidor
# Lista a pasta path do projeto
svn list svn://url/servidor/path

Seria básicamente um ls no servidor svn.

Agora vamos fazer o download ou melhor o checkout do projeto para nossa máquina para começarmos os trabalhos, afinal tempo é dinheiro.

#fazendo o download da pasta path para uma url local
svn co svn://url/servidor/path /url/onde/ficara/projeto

Caso você não esteja logado vai ser requisitado a senha e o usuário que você esta usando no momento na maquina local vai ser
passado como parametro para o checkout no servidor svn

Caso você tenha outro usuário cadastrado no servidor svn você pode passar esse usário como parâmetro.

svn --username outroUsuario co svn://url/servidor/path /url/onde/ficara/projeto

A cada novo commit (envio de codigos para o servidor svn) será criado um novo número de controle de versão (revision).  Pensando que poderiamos mandar um código incorreto(bugado) para o servidor e um companheiro queira pegar  uma versão anterior ou seja a ultima versão correta do projeto pois você ou alguém mandou um código bugado.
Vamos pedir ao servidor informações sobre o projeto para sabermos o número da última revisão.

#Descobrindo informações sobre o projeto
# o que interessa neste momento e saber qual o numero de revision
svn info svn://url/servidor/path
#Visto o numero da ultima revisão podemos escolher qualquer versão anterior a essa passando o -r no checkout
svn --username outroUsuario -r numerorevisao co svn://url/servidor/path /url/onde/ficara/projeto

Pronto temos os códigos todos em nossa máquina agora mãos a obra vamos trabalhar com codificação.

Quando terminarmos vamos precisar mandar nossa modificações para o servidor, para isso temos um comando bem bacana e simples.

#Voce pode commitar uma pasta inteira ou  um arquivo você escolhe
svn commit -m "Seu comentário ou justificativa para as mudanças do codigo isso vai para o log do commit"  /path/a/ser/commitado /path/arquivo/commitar

Podemos verificar todos os arquivos que estão modificados em seu computador e no servidor.

svn status -u path/a/ser/verificado

Com alguma frequência dois desenvolvedores modificam o mesmo arquivo quando isso acontecer o arquivo vai ser marcado como conflict
Para ver as diferenças é possivel fazer um

 svn diff  arquivoNovo arquivoVelho

Depois de ter corrigidos todos os erros basta marcar esse arquivo como resolvido.

 svn resolv  arquivoNovo

Logo

 svn resolved  arquivoNovo

Para depois fazer seu commit corretamente, agora como você vai resolver os conflitos do arquivo…. isso é com você …

E por ultimo e não menos importante podemos ver o commit das pessoas envolvidas no projeto além de seus comentários e arquivos modificados.

#Pegando a saida do log e redirecionando para o less caso seja muito grande esse log.
svn log | less

E para uma leitura completa do log escolha um revision r visto no log visualizado anteriormente.

svn -r  -v  log

Atenção a dicas básicas, nunca apague fisicamente um arquivo com nosso amigo rm, utilize

svn del /path/arquivo
#ou
svn rm /path/arquivo

#ou para pasta com recursividade
svn rm -r /path/past

E para adicição de arquivos ao projeto.

svn add /path/arquivo

#ou para pasta //Nao testado 🙁 

svn add -r /path/pasta

Acredito que com esses comandos básicos já de para se divertir a vontade com o subversion, aconselho sempre usar um servidor de controle de versão. Existem outros como o CVS, GIT dentre outros mais esses ainda não experimentei , quando o fizer posto aqui alguma coisa.

Abraços

Dinei

Tags: , , ,

Editando tags id3 com python

Ola a todos,

Hoje vou falar de um problema que muitas pessoas devem ter. Ao baixar uma música qualquer da internet os carinhas colocam o nome do site no Titulo da música, no artista e nos comentários mas como isso se o o arquivo esta com nome correto?
Eles usam as tags ID3, mas então o que é a tag ID3?

“A etiqueta ID3 (em inglês: ID3 Tag) é um conjunto de informações mais usados junto com o formato de áudio MP3. Ela permite armazenar informações como o título, artista, album, número da faixa, ou outra informação sobre o arquivo no próprio aquivo.” Wikipedia [1]

Depois de ler um pouco a respeito resolvi mudar as tags das músicas para que quando as estiver escutando apareçam os dados válidos como nome da música e do Artista que a canta. Eu uso o Rhythmbox[2] e este pode até ser integrado ao seu software para conversa instantanea como AMSN[4], PIDGIN[4] dentre outros. Fazer isso na mão seria muito cansativo e não divertido, solução …. python.

Para este script utilizei uma biblioteca não padrão do python o mutagen[5], este serve para mostrar/editar as tags ID3 das músicas em formato mp3.

De acordo com o exemplo do site bastam 4 linhas para abrir->modificar->salvar o titulo de uma música em formato mp3 em seu HD.

 
 from mutagen.easyid3 import EasyID3
 audio = EasyID3("sua_musica.mp3")
 audio["title"] = "Somente um exemplo no titulo"
 audio.save()

Agora vamos a meu script, não vou comentar pois o código já esta bem comentado.

 
#!/bin/env python 
#!-*- coding: utf-8 -*-
from sys import exit
from os import walk, path
from os.path import isfile, join

"""
@author: Valdinei dos Santos 
@twitter: http://twitter.com/valdineisantos 
@site: http://www.valdineidossantos.com/
@date: 16 Janeiro 2010
"""

try:
    from mutagen.easyid3 import EasyID3
except:
    print "Necessario instalar a biblioteca mutagen"
    print "Site: http://code.google.com/p/mutagen/"
    print "Python Setup Tools: easy_install mutagen"
    exit(1)


#Diretorio que vai ser pesquisado
directory_root = "/home/valdinei/Musica/Downloads/"

def getInformations(track):
        fileAtributes = dict()
        """
        O Padrão das músicas estavam "01 - Artista - Album.mp3"
        Nesta parte de Código vc deve se adequar a sua realidade mas isso é só trabalhar com strings.
        """
        #split por "- " me dará com resultado 3 strings
        trackNumber, artist, title   =  track.split("- ")

        #Que depois de tratadas serao retorandas como valor final
        fileAtributes["trackNumber"] =  trackNumber.strip() 
        fileAtributes["artist"]      =  artist.strip() 

        #Tratando a string como um lista. O .mp3 esta sendo ignorado pois pego tudo -4 casas do final
        fileAtributes["title"]       =  title.strip()[:-4]

        return fileAtributes 

"""
Caso tenhamos mais diretorios internos sera recursivo.
Mais sobre Walk em : http://docs.python.org/library/os.html#os.walk
"""
for (original,  directoryname, filenames) in walk (directory_root):
    filenames.sort()
    
    total = len(filenames)

    cont = 0;

    for filename in filenames:
        """
        Calculando a porcentagem de arquivos feitos
        (parcial * 100)/numero total de músicas
        """
        cont = cont +  1
        percent = round (cont * 100 / total )
        print "%02d%%" % percent

        info = getInformations(filename)
        
        #Verifico se o endereço do arquivo é valido realmente e se ele continua la.
        if isfile( join(original,filename) ):
            """
            Agora vamos começar a modificar as tags ID3 dos arquivos MP3 depois salva-los.
            """
            try:
                mp3 = EasyID3( join(original,filename) )
                mp3["title"] = info["title"] 
                mp3["artist"] = info["artist"]
                mp3["tracknumber"] = info["trackNumber"]

                #Salva as informações no arquivo
                mp3.save()
            except Exception, e:
                print "%s %s" % (e.__doc__, e )

print "Todos os Arquivos foram modificados"

E com isso suas mp3 agora vão ter o formato que você definiu que teriam. Atenção eu em momento algum modifiquei o nome físico do arquivo, somente as meta informações baseadas no nome que era o que eu tinha em mãos.

Não estou em momento nenhum incentivando a NINGUÉM baixar NADA da internet. A idéia original aqui era simplesmente python + programação e algumas boas práticas.

Algumas coisas que derrepente podem ter passados despercebidas foi o uso do os.walk, os.join, os.isfile todos importados no cabeçalho. Mas isso pode ser um outro assunto de post.

Seguem os links de referencia:

[1] Wikipedia : http://pt.wikipedia.org/wiki/ID3

[2] Rhythmbox: http://projects.gnome.org/rhythmbox/

[4] AMSN: http://www.amsn-project.net/ (esse projeto originalmente era feito por um brasileiro)

[5] PIDGIN: http://www.pidgin.im/

[6] Mutagen: http://code.google.com/p/mutagen/

Tags: , , , , , , ,

Abrindo arquivos com vim

VIM
Vou postar algumas dicas sobre o VIM, um editor em linha comando.
Básicamente vou postar alguns comandos e como deixo certas funções habilitadas setando as mesmas no seu ~/.vimrc, estou considerando que o leitor saiba os comandos básicos de VIM como abrir arquivo, fechar arquivo, entrar em modo de inserção entrar em modo comandos etc.

Abrindo várias páginas ao mesmo tempo (colocando em buffer)

$vim arquivo1 arquivo2 arquivo3

Somente o primeiro arquivo fica exposto quando o vim estiver aberto, o restante dos arquivos fica em buffer. Para mudar para o próximo arquivo no nosso exemplo o arquivo2 em modo de comando (pressione )

:bn 

E para voltar ao arquivo anterior

:bp 

Mas eu não gosto muito desta maneira de trabalho, fico mais a vontade com abas :D, o vim também pode ter abas. Usando os mesmos arquivos como exemplo, utilizaremos a opção “-p”

$vim -p arquivo1 arquivo2 arquivo3

Pronto todos os arquivos estão aberto sendo somente o primeiro sendo exibido, mas se você perceber bem na parte superior vão existir abas com os nomes dos arquivos abertos e em buffer.
Para movimentarmos entre as tabs temos comandos também, o tabnext e o tabprev.

Em modo de comando digite.

:tabnext <enter>

E para voltar para tab anterior

:tabprev <enter>

Mas como prefiro usar uns atalhos de teclado vou postar uma maneira de fazer isso com uma tecla somente, vou utilizar o comando ‘map’ para mapear uma ação de teclado.
No arquivo ~/.vimrc entre com essas linhas de comando salve e feche.

map  <M-Left> :tabprev <CR>
map <M-Right> :tabnex <CR>

Agora com a combinação <alt>+<seta para direita> tenho o comando tabnext e para esquerda tenho o tabprev.
Os comandos:
map -> mapeando a ação do usuário.
M -> alt
Left/Right -> setas direita esquerda
-> Enter

Obs.: Tentei de varias formas fazer com que o atalho fosse alt+1 (número um é representado por Char-061 ficando <M-Char-061> ) e alt+2 (número dois é representado por Char-062 ficando <M-Char-062> ) mas não consegui então fiz com as setinhas mesmo. Ajudas serão bem vindas 😀

Essa dica é pequena e rápida depois faço um compilado de mais alguns comandos e post aqui.
Abraços
Valdinei

Tags: , ,

Acertando a Hora *Unix – ntpdate

Essa vai ser uma dica rápida. Como acertar a hora em sistemas *Unix (Linux, Freebsd, OpenBSD, etc).
Usuários Ubuntu precisam ter o programa instalado.

sudo aptitude install ntpdate

Acertando a hora

Vamos sincronizar a hora de nosso sistema com algum servidor público espalhado pelo mundo, no meu caso vou utilizar o da usp.

sudo ntpdate ntp.usp.br

Isso já é o suficiente para acertar o horário da sua máquina.

Vamos um pouco mais a fundo agora.

Eu tenho que garantir que meus servidores estão com a hora sincronizada, para tanto vou fazer essa essa atualização todos os dias 🙂 e para ficar ainda mais seguro vou fazer em 2 servidores diferentes 🙂 🙂

Segue o script para fazer essa atualização em uma máquina FreeBSD.

#!/usr/local/bin/bash
ntpdate=`which ntpdate`

#Lista de servers ntpdate espalhados pelo mundo pode-se adicionar quantos quiser separados por espaço
SERVERS="ntp.pool.org ntp.usp.br"

for server in $SERVERS
do 
   $ntpdate $server
done   

Esse script deve ser salvo e precisa estar com permissão de execução ( chmod +x atualizaHora.sh ) após isso foi enviado para a pasta /usr/local/etc/periodic/daily onde será executado todos os dias.

Esse procedimento poderia ser feito pelo crontab também, mas ao preferi coloca-lo nesta pasta pois ela já é chamada via crontab do root.

Complementando a informação a porta de entrada e saida do NTPDATE é a 123 isso mesmo 123, sendo assim essa porta deve estar aberta no firewall da máquina que se deseja sincronizar.

Outros servers ntpdate

  • time.windows.com
  • time.apple.com
  • ntp.ufrj.br
  • ntp.ubuntu.com

Pronto hora ajustada, então é hora de partir.
Abraços.

Tags: , , ,

Utilizando a Classe Set do Python

Recentemente fiz uma aplicação onde tinha que verificar a diferença entre algumas estrutura de dados inicialmente fiz na mão mesmo, mas não me conformei com isso e resolvi fazer uma pesquisa para saber como se faz isso no python.

Encontrei uma classe que trabalha com todas as ações básicas dos conjuntos.

Obs.: Fiz uns exemplos básicos e que para alguns podem parecer sem sentido mas server  apenas para mostrar os conceitos da classe.

Vamos lá então, primeiro vou criar uma estrutura de dados que vou chamar de opções isso poderia estar vindo de uma banco de dados ou mesmo lendo um arquivo TXT.

Povoando nossas opções.

 opcoes =  [9, 3, 6, 5, 0, 1, 7, 2, 8, 4]

E inicializaremos nossas bases de números impares e pares.

pares = []
impares = []

#Gerando duas novas listas a partir das opções dadas
for numero in opcoes:
    if numero % 2 == 0:
        pares.append(numero)
    else:
        impares.append(numero)

Para que possamos trabalhar com a classe SET a origens de dados devem ser do tipo SET também.

opcoes  = set(opcoes)
pares   = set(pares)
impares = set(impares)

Agora vamos começar os testes. OBA!!!!

#Descobrir dentre as opções descobrir quais estão no grupo dos pares
opcoesPares = set.intersection( opcoes, pares )

#Descobrir dentre as opções descobrir quais estão no grupo dos impares
opcoesImpares = set.intersection( opcoes, pares )

#Fazendo  a união das duas listas
paresMaisImpares = set.intersection( opcoesPares, opcoesImpares )

#Vamos verificar se o grupo dos pares são pertencentes ao grupo de opções
paresPertencemAOpecoes = set.issubset( pares, opcoes )

#Verificar o que tem de diferente entre as opções e os numeros impares
naoContemEssesNumerosNosImpares = set.difference( opcoes, impares )

Bem acho que é isso fiz alguns exemplos bem básicos e acredito que pode ser um ponto de partida para um estudo mais aprofundado então como última dica a respeito seria isso.

http://docs.python.org/library/sets.html

Mas se não tiver afim de ir para net pode ser por modo interativo mesmo.

$ python
Python 2.4.3 (#1, Jul 27 2009, 17:57:39)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> help(set)

Se tiverem exemplos mais interessantes deixe nos comentários que serão devidamente divulgados com os nomes dos autores

Flash Player a saga continua.

Ola…

Hoje vou falar um pouco sobre a saga de viver com Sistema operacional não Windows. E como se virar com as ferramentas que nos são oferecidas.

Estou com problemas em ver páginas que contenham flash em sua estrutura.  Segue o relato 🙁

Fui buscar as alternativas primeiro na internet. Vou ensinar o caminho das pedras. www.google.com.br depois que a página carregar digite as palavras chaves na area destinada a consulta. No meu caso flashplayer + opera 9 + ubuntu.

A tecnica que utilizo é a seguinte: Passo dando uma olhada geral em todos os links sugeridos pela ferramenta. Algumas vezes existem pessoas que tem exatamente o mesmo problema que você então vamos dar uma olhada nos que são mais semelhantes.

Nesta lista de links sugeridos em quase 100% das vezes aparecem foruns das palavras envolvidas na consulta.

Uma boa seria ir ao forum do Browser  http://my.opera.com/portugues/forums  caso a resposta no esteja neste forum vamos ao do sistema operacional, ubuntuforum-br.org .

Procurei fiz algumas tentativas se alguém tiver a curiosidade de olhar fiz algumas perguntas no forum do opera e tudo mas ….

Descobri que  o problema do flash player 9 com o opera já é conhecido e que não esta previsto uma correção para o mesmo.

http://my.opera.com/portugues/forums/topic.dml?id=193663&t=1211911158&page=1#comment2572806

Caso eu realmente queira que funcione no opera terei que instalar a versão ainda não estavel do Opera 5.

Como esta funcionando perfeitamente no Firefox e no FLock(instalei só para saber como é) vou deixar isso de lado e esperar a versão final.

Por hoje é só pessoal .

Tags: , , ,