Python – Configuração de ambiente [UBUNTU]

Dando continuidade no projetinho Python que eu estava querendo fazer (agora com a idéia finalizada), pensei: porque não testar mais coisas novas? Foi daí que surgiu o Linux novamente e o PyCharm.
Então vamos lá, novamente, mais uma vez, configurando!

O Python já vem instalado no Linux, veja a versão pelo terminal:

python -V

Baixei o PyCharm (community edition) e vem um tar.gz, para executá-lo, pelo que diz o ReadMe precisa, após extrair, executar o pycharm.sh, que está na bin. Porém.. o quão chato é toda hora navegar até a pasta e fazer isso, certo? Então, “path nas variaveis do Windows”, que podemos modificar/verificar da seguinte maneira:

echo $PATH
export PATH=$PATH:/home/my_user/my_application_path/bin
echo $PATH

Porém, verifiquei que após finalizar a sessão o $PATH voltava ao padrão, pesquisei e vi que uma maneira de setar o $PATH forever é colocando o export no /etc/profile

vim_profile

Só para finalizar, instalar o MySQL, Apache e Git (utilizarei o bitbucket.org que tem repositório privado free).

apt-get install mysqld
apt-get install apache2
apt-get install Git

Espero iniciar ainda essa semana esse projeto, vamos ver o que rola. :)

[UPDATE]
P.S.: Para criar um icone na barra para abrir o PyCharm, utilizei o Main Menu (app disponível na Software Center) e coloquei para ele rodar, via terminal, o sh. É coisa linda!

main_menu


Keyboard shortcuts [UBUNTU]

Aloha!

Faz umas 2 semanas que estou dando fuçada no Ubuntu! Que sodadi!

Primeira coisa que pensei foi nos atalhos, apertei o “botão do Windows” e pensei um pouco para ver qual eu ia testar e tchrãn.. tem o mapinha, que belezura, ein? Acho que todo mundo deve fazer isso sem querer hahaha, puta sacada!

keyboard-shortcut

P.S.: SUPER = “botão do Windows”


AngularJS – futucada inicial

Faz um tempinho que dei uma futucada no AngularJS no Code School (os cursos lá são práticos e rápidos, para ter uma base é ótimo #ficadica).
Logo que comecei a fazer alguns sites mais interativos, com algumas requisições AJAX, senti falta de algo que fizesse a gente visualizar o que estava modificando o HTML em runtime, porque, quando você pega uns projetos que rola uns churros.js que está com todo o código do projeto, o choro é livre. Então, achei sensacional a idéia de “javascript declarativo” no HTML, batendo o olho rapidamente dá para imaginar como está o JavaScript e tudo mais, sem contar que minimiza a possibilidade de caos.

A principio o que eu achei maaaaaaaais legalzão foi o “Data Binding de mão dupla”. Vamos à um exemplício para despertar a curiosidade:

<!DOCTYPE html>
<html ng-app="exemplicio">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<script type="text/javascript" src="angular.min.js"></script>
		<script type="text/javascript">
			(function() {
				var app = angular.module('exemplicio', [])
 
				app.controller("MusicaController", function(){
					this.musicas = sonho_medio;
 
					this.altera_musicas = function() {
						if (this.musicas == queen_is_dead) {
							this.musicas = sonho_medio;
						} else {
							this.musicas = queen_is_dead;
						}
					};
				});
 
				var sonho_medio = [
					{ titulo: 'Escapando', artista: 'Dead Fish' },
					{ titulo: 'Sobre a violência', artista: 'Dead Fish' },
					{ titulo: 'Modificar', artista: 'Dead Fish' },
					{ titulo: 'Paz verde', artista: 'Dead Fish' },
					{ titulo: 'Mulheres negras', artista: 'Dead Fish' },
					{ titulo: 'Sonho médio', artista: 'Dead Fish' },
					{ titulo: 'Por paz', artista: 'Dead Fish' },
					{ titulo: 'Fragmentos de um conflito iminente', artista: 'Dead Fish' },
					{ titulo: 'Hoje', artista: 'Dead Fish' },
					{ titulo: 'Cidadão padrão', artista: 'Dead Fish' },
					{ titulo: 'Sua bandeira', artista: 'Dead Fish' },
					{ titulo: 'Canção para amigos', artista: 'Dead Fish' },
					{ titulo: 'Damn\' Lie', artista: 'Dead Fish' },
					{ titulo: 'Lost Soul', artista: 'Dead Fish' }
				];
 
				var queen_is_dead = [
					{ titulo: 'The queen is dead', artista: 'The Smiths' },
					{ titulo: 'Frankly, Mr. Shankly', artista: 'The Smiths' },
					{ titulo: 'I know it\'s over', artista: 'The Smiths' },
					{ titulo: 'Never had no one ever', artista: 'The Smiths' },
					{ titulo: 'Cemetary gates', artista: 'The Smiths' },
					{ titulo: 'Bigmouth strikes again', artista: 'The Smiths' },
					{ titulo: 'The boy with the thorn in his side', artista: 'The Smiths' },
					{ titulo: 'Vicar in a tutu', artista: 'The Smiths' },
					{ titulo: 'There is a light that never goes out', artista: 'The Smiths' },
					{ titulo: 'Some girls are bigger than others', artista: 'The Smiths' }
				];
			})();
		</script>
	</head>
	<body ng-controller="MusicaController as musicaCtrl">
		<ul>
			<li ng-repeat="musica in musicaCtrl.musicas">
				{{musica.titulo}} - {{musica.artista}}
			</li>
		</ul>
 
		<input type="button" value="Alterar músicas" ng-click="musicaCtrl.altera_musicas()" />
	</body>
</html>

Alterando o altera_musicas para sua paginação chamando sua API Rest, é coisa linda.
Estou utilizando ele em algumas páginas de um projeto que comecei em Dezembro e até agora está supimpão. Vai que é sucesso!

P.S.: Lembrando que não é solução de tudo na vida. Tenha bom senso no uso, sempre!



Hotspot – Compartilhe sua wi-fi, por wi-fi, no seu Windows 8

Cheguei no hotel, o cara passou a senha da wi-fi e já lançou: “só pode um device por vez”. Tá de brinks, né?
Eu to trampando e tô aqui, limitar acesso por device é muito ridiculo, só pra cobrar mais. E se vem uma familia?
Já cheguei e compartilhei a wi-fi do meu note, agora vai. Fica a dica:

1 – Abra o prompt de comando como administrador.
2 – Digite: netsh wlan set hostednetwork mode=allow ssid=leleka key=123456, onde leleka vai ser o nome da conexão e 123456 será a senha da mesma.
3 – Depois inicie sua rede, digitando: netsh wlan start hostednetwork

4 – Entre em Painel de Controle\Rede e Internet\Conexões de Rede e clique em propriedades da sua Wi-Fi.

5 – Na aba Compartilhamento, check o campo de permissão de compatilhamento de internet e selecione sua conexão criada.

6- Liberem a senha para todos os hospedes, rs.

Enjoy! :)


Django – Firsts steps com Py

Queria dar uma cutucada em Python há eras, tô procrastinando saporra, mas tamo enfim aqui…
A idéia é fazer um sitezinho bobo pra sentir o Django de leve. Tava aqui navegando nos sites de artes da vida e pensei em testar só salvando imagens, recebendo sempre o endereço e exibindo todas numa maçaroca mesmo. A la Pinterest? Não manjo muito, só lembro das imagens bagunçadas.

Vamos começar configurando o ambiente.
Bom, eu fiz algum post aí onde eu já passei o link para instalar o Python. Mas vamos no passo-a-passo, já que não tem muita coisa de Python @ Windows por aí.

Baixei o Python em http://www.python.org/getit/, versão 3.3.3. Instalação é orientada a next next.

Baixei o Django em http://www.djangoproject.com/download/, ultima versão também (1.6) em tar.gz. Descompactei e instalei via linha de comando:

python C:\django\setup.py install

A maioria dos tutoriais que eu achei fazem os primeiros passos com SQLite. Me recuso. Vamos de MySQL!

MySQL eu tô utilizando pelo xampp, baixa aqui http://www.apachefriends.org/pt_br/xampp.html. É moleza, descompactou, abre o control e dá um start no mysql. Simples como a vida.

Agora para instalar o drive é necessário o setuptools https://pypi.python.org/pypi/setuptools, e aí rola o https://pypi.python.org/pypi/PyMySQL. A instalação é no mesmo esquema do Django, install no setup.py.

Ambiente configurado… let’s go!


Trello – Kanban online

Sumi de novo, tava de mudança. Inclusive em breve tem post da vida ai com moveis sustentaveis, hahahah.
Vamos tentar retomar o ritmo aqui novamente mais uma vez de novo! :)

Tinha uns rascunhos aqui de umas coisas que estava vendo um tempo atras, vou começar a liberar. Começando pelo Trello!

Acho que eu já tinha comentado que eu trabalho remoto, com a equipe toda remota. Então para termos alinhamento do que está acontecendo no projeto como um todo fica bem complicado.
Conversei com o @erickwilder e ele me indicou o Trello para “kanban” online, falando porcamente.

É muito foda e é free. <3
Aproveitem!


#if(DEBUG) – Executando Windows Service pelo Visual Studio

Faz um tempo que eu venho desenvolvendo, eventualmente, Windows Services para fazer processamentos esporádicos, para requisições assíncronas e tal.
Eu acho legal Windows Service, para caralho, é muito util. Mas tem uma coisa que realmente me deixa #chatiada: executá-lo no Visual Studio. Não dá.
Ontem precisei criar um Windows Service, com um timer que disparava um eventindo para chamar um serviço, simples como a vida. Queria executar para ver rolando, pesquisei um pouco e se liga nisso…

Essa é a classe do serviço, parecida com a que eu tenho, perceba que meu OnStart chama um método publico da classe, onde inicia o timer e seta o evento quando o intervalo for atingido.

public partial class ServiceOfDeath : ServiceBase
{
	System.Timers.Timer aTimer;
 
	public ServiceOfDeath()
	{
		InitializeComponent();
	}
 
	protected override void OnStart(string[] args)
	{
		IniciarTimer();
	}
 
	public void IniciarTimer()
	{
		aTimer = new System.Timers.Timer(Convert.ToInt32(ConfigurationManager.AppSettings["MilisegundosDeIntervalo"]));
		aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
		aTimer.Start();
	}
 
	private void OnTimedEvent(object sender, ElapsedEventArgs e)
	{
		aTimer.Stop();
		new Liquidificador().Misturar();
		aTimer.Start();
	}
 
	protected override void OnStop()
	{
		aTimer.Stop();
	}
}

Daí na classe que é executada quando a aplicação é executada (Program.cs), fazemos o seguinte.

static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            #if (!DEBUG)
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[] 
                { 
                    new ServiceOfDeath() 
                };
                ServiceBase.Run(ServicesToRun);
            #else
                ServiceOfDeath servicoDaMorte = new ServiceOfDeath();
                servicoDaMorte .IniciarTimer();
                //Thread eterna
                System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
            #endif
        }
    }

Ou seja, o #if(DEBUG) serve para o Visual Studio interpretar aquele código somente quando estiver em modo debug (não acredito que ainda não conhecia isso), dá um mundinho de possibilidades aí para quem quer debugar alguma coisa que o VS não executa. Acho melhor que ficar attachando processo, que é chatissimo.

Anotem essa para quando estiverem com um código macarronico em mãos! rs


soapUI (ou xml string): como enviar valor nulo?

Acrescente no seu cabeçalho:

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”

e na sua tag:

xsi:nil=”true”

E está prontim prontim.

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:privado="http://schemas.datacontract.org/2004/07/PRIVADA">
   <soapenv:Header xsi:nil="true"/>
   <soapenv:Body>
      <tem:Churros>
         <tem:Recheio>
            <privado:Cor xsi:nil="true"/>
         </tem:Recheio>
      </tem:Churros>
   </soapenv:Body>
</soapenv:Envelope>


Páginas:12345678910