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>


Primeiro mês trampando por “conta” – freelancer

Faz uns 2 anos que eu não pensava na palavra freela, por puro medo de outro cliente chato invadir minha vida novamente. Fiz uns freelas legais sozinha e com dois amigos, mas ganhei pouca grana e muita mas MUITA dor de cabeça. O cliente não tinha o minimo respeito pela gente e a gente vivia atrasando os jobs, fora que eu fazia esses trampos extra um trampo de 8hrs, era uma qualidade de vida horrenda, HAHAHAHA. Mas deu para aprender bastante.

Hoje faz um mês que estou full time nesse estilo de vida, foi uma decisão dificil trocar a segurança de um salario legal todo fim do mês pela liberdade. Na teoria parece uma decisão fácil, mas com as contas na mão a pegada é outra. Atualmente tenho um trampo fixo mensal que faço da onde eu quiser, o que deu uma boa ajuda para eu tomar a decisão de sair dessa vida de 8hrs trancada no escritorio.

Eu, que não gostava muito de trabalhar de casa, tenho uma vaga fixa em um coworking próximo ao metro, para não ser dificil de chegar. E incrivelmente, ultimamente, tenho me achado mais produtiva de casa até do que do cow. Mas a opção de trabalhar de outros lugares é maravilhosa. Aquele dia arrastado que eu tinha no escritorio por não querer estar ali nao acontece mais, eu trabalho de outro local ou simplesmente deixo para trabalhar mais tarde ou compenso no outro dia. Sempre com a responsabilidade do cronograma passado.

Os aprendizados desde esse tempo e apos muitas pesquisas que fiz antes de largar o job que eu tenho colocado em prática hoje:

  • Dê noticias. Boas ou más, elas são necessárias. Melhor uma má notícia para restruturar o cronograma do que “silêncio no rádio”. Tenho passado um email com status das minhas tarefas pelo menos de 2 em 2 dias, até porque ainda estou me acostumando com esse negocio de estar longe do time.
  • Não seja o ligeirinho nos cronogramas. Dê um cronograma confortável. É absurdamente melhor você adiantar do que atrasar. Imprevistos acontecem.
  • Organize-se. É dificil, mas é necessario o minimo de organização. Saiba quanto tempo você vai trabalhar, se vai folgar feriados e conte isso nos seus prazos. Saiba onde está seus arquivos/coisas. Tenha backups. Se você tiver que se achar todo dia de antes de começar a trampar, você perde tempo.
  • Mantenha suas tarefas anotadas. Sua cabeça voa e você esquece o que precisa fazer. Tenho utilizado o Wunderlist para isso. Junto com o Google Calendar.

Há pessoas que não se acostumam com a falta de um lugar fixo para o trampo, aqueles “amigos fixos” que estão do seu lado diariamente. No meu ponto de vista o trampo é para trampar, se você não vai produzir e quer fumar e trocar uma ideia com o amigo, vá para o bar. É por essas que somos trancados legalmente no escritorio por 8hrs para produzir 6 ou 5hrs (sendo otimista).

Hoje eu ainda não consegui me organizar muito bem, quanto a horarios e tal. A idéia é que eu consiga me ajustar (quero muito trabalhar mais cedo), tente usar ferramentas online para nos atualizarmos e fazer daily meeting via Skype ou Hangout. Tô com um time nesse trampo e sinto falta de informacoes do que está acontecendo.

Mas até entao esse modelo de job está com saldo positivo.

Apareço com mais noticias!

Inspirações do post:

http://blog.ftofani.com/algumas-dicas-para-quem-quer-trabalhar-de-casa/

http://papodehomem.com.br/trabalhar-de-casa-e-uma-merda/

 



Páginas:12345678910