-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
932 lines (548 loc) · 56.4 KB
/
index.html
File metadata and controls
932 lines (548 loc) · 56.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Almir 'm3nd3s'</title>
<meta name="author" content="m3nd3s">
<meta name="description" content="Em 20 de janeiro de 2011, inspirado por um post do Jeveaux, eu publiquei um post sobre as ferramentas que utilizo em meu ambiente de trabalho. Com o …">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://m3nd3s.github.io">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<link href="/atom.xml" rel="alternate" title="Almir 'm3nd3s'" type="application/atom+xml">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/lib/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<!-- <link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css"> -->
<link href='http://fonts.googleapis.com/css?family=Lustria|Amethysta|Terminal+Dosis' rel='stylesheet' type='text/css'>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-10130376-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Almir 'm3nd3s'</a></h1>
<h2>Ruby, Rails, Arduino, GNU/Linux, Software livre...</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:m3nd3s.github.io" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Posts</a></li>
<li><a href="/presentations">Apresentações</a></li>
<li><a href="/about">Sobre</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2013/05/13/meu-ambiente-de-trabalho-em-7-itens-2013/">Meu Ambiente De Trabalho Em 7 Itens: 2013</a></h1>
<p class="meta">
<time datetime="2013-05-13T14:19:00-03:00" pubdate data-updated="true">May 13<span>th</span>, 2013</time>
| <a href="/blog/2013/05/13/meu-ambiente-de-trabalho-em-7-itens-2013/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>Em 20 de janeiro de 2011, inspirado por um <a href="http://jeveaux.com/2011/meu-ambiente-de-trabalho-em-7-itens/">post</a> do <a href="http://jeveaux.com/">Jeveaux</a>, eu publiquei um post sobre as <a href="/blog/2011/01/20/meu-ambiente-de-trabalho-em-7-itens/">ferramentas que utilizo em meu ambiente de trabalho</a>. Com o passar do tempo é comum que façamos mudanças em nosso ambiente visando melhorar e agilizar nosso processo de trabalho. Então resolvi dar uma atualizada no post para mostrar como e o que estou usando agora.</p>
<h2>1. Navegador</h2>
<p>Como desenvolvedor web o navegador é uma ferramenta essencial. Há muitos anos vinha utilizando o <a href="http://www.mozilla.org/en-US/firefox/new/">Mozilla Firefox</a> mas de uns tempos pra cá ele vinha me decepcionando.</p>
<p>Ao menos em minha máquina o Firefox comia muita memória e não raro travava enquanto abria determinada página. Outro problema eram as extensões que eu precisava instalar para torna-lo uma ferramenta de trabalho (Firebug, WebDeveloper, etc).</p>
<p>Hoje abro os demais navegadores apenas para fazer testes nos sistemas que trabalho. É impressionante as informações que podemos extrair através do Developer Tools do Google Chrome, até hoje não aprendi todas. Abaixo deixo alguns links que julgo ser imprecindíveis para quem desenvolve aplicações web, mais específicamente para quem tem o Google Chrome como opção:</p>
<ul>
<li><a href="https://developers.google.com/chrome-developer-tools/">Chrome DevTools</a></li>
<li><a href="http://discover-devtools.codeschool.com/">Code School Discover DevTools</a></li>
</ul>
<h2>2. Editor</h2>
<p>Neste caso não há uma mudança grande ou significativa, sempre utilizei Vim como editor principal e já estou tão acostumado que me minha produtividade em outro editor chega a ser péssima.</p>
<p>Assim que comecei a usar o sistema MacOS eu conheci o <a href="https://github.com/b4winckler/macvim">MacVim</a>, instalei e desde então o utilizava. Um dos motivos que me fazia utiliza-lo era, principalmente, que um dos plugins que eu utilizo, o <a href="https://wincent.com/products/command-t">CommandT</a>, dependia do Vim com suporte a ruby. Como o vim padrão do MacOS não possuía suporte e eu não tinha vontade de compilar o na unha, eu utilizava o MacVim.</p>
<p>Com o uso do <a href="http://mxcl.github.io/homebrew/">homebrew</a> descobri que o Vim dele incluía suporte a ruby, isso e a vontade de usar o Tmux (leia abaixo) me fizeram largar do MacVim para o vim.</p>
<h2>3. Tmux</h2>
<p>Talvez a mudança/melhoria mais significativa. Ao menos uma coisa é certa, mantenho minha mente e memória ocupados por um bom tempo tendo que decorar mais algumas teclas de atalho, mas nem tanto.</p>
<p>O <a href="http://tmux.sourceforge.net/">Tmux</a> é um terminal multiplexer, basicamente é um programa que lhe permite manipular vários programas em um único terminal, assim como o velho conhecido de usuários Unix Like, o <a href="http://www.gnu.org/software/screen/">GNU screen</a>. A diferença é que o Tmux tem várias features que o transformam em uma opção considerável para programadores que utilizam editores em modo texto. Recomendo olhar na internet alguns vídeos de integração Tmux + Vim + Ruby.</p>
<p>Meu interesse nele surgiu pela vontade de reduzir ainda mais o uso de cliques para escolher janelas e navegar entre elas e as features que ele possui que melhorariam significativamente meu fluxo de desenvolvimento.</p>
<h2>4. Git e Github</h2>
<p>Simplesmente indispensável. Todos os produtos que desenvolvemos na <a href="http://www.giran.com.br/">Giran</a> são versionados pelo <a href="http://git-scm.com/book">Git</a>, nós utilizamos também o <a href="http://www.github.com">Github</a> que parafraseando um <a href="https://twitter.com/rodolfospalenza">amigo</a>, que até hoje não postou nada no blog dele:</p>
<blockquote><p>Todo desenvolvedor deveria conhecer o Github e ter uma conta.</p></blockquote>
<h2>5. Terminal</h2>
<p>Depois de alguns meses usando o ZSH, por meio de um pacote de script providos pelo projeto <a href="https://github.com/robbyrussell/oh-my-zsh">oh-my-zsh</a>, estou de volta ao Bash. Tive alguns problemas misteriosos utilizando os scripts do oh-my-zsh então resolvi voltar ao Bash, com o auxílio de um <a href="https://github.com/revans/bash-it">outro pacote de scripts</a> deixei-o do jeito que eu queria.</p>
<p>Depois de anos utilizando sistemas Unix Like – antes eu usava Linux (Slackware, Archlinux, Debian, Ubuntu) e hoje MacOSX – não consigo mais utilizar um SO que não tenha um terminal descente.</p>
<h2>6. Evernote (GTD)</h2>
<p>O <a href="http://evernote.com">Evernote</a> ganhou minha admiração, eu praticamente anoto tudo que julgo importante nele.</p>
<p>Na Giran temos uma reunião diária, chamamos de <a href="http://improveit.com.br/scrum/daily_scrum">Daily</a>, nela repassamos tudo que fizemos no dia anterior e o que faremos no dia de hoje bem como os impedimentos que ocorreram até o momento.</p>
<p>Um dos usos que faço do Evernote é anotar o que tenho feito no meu dia de trabalho, com isso conseguirei lembrar o que precisarei dizer na Daily do dia seguinte, bem como me planejar para o dia corrente. A medida que as solicitações vão chegando eu vou colocando na minha lista de coisas a fazer, conforme vou fazendo eu vou marcando como feito e tocando para o próximo da lista.</p>
<p>O Evernote se tornou tão útil pra mim que o utilizo em minha vida pessoal e demais atividades que tenho fora do meu trabalho.</p>
<h2>7. Monitor Externo</h2>
<p>Nunca tinha pensando que fosse tão bom e produtivo ter um monitor externo.</p>
<p>A possibilidade de distribuir janelas e visualiza-las ao mesmo tempo sem perda de informação é fantástico! Isso me ajuda muito na produtividade. Costumo abrir um terminal (iTerm2) em fullscreen, dividi-lo com tmux, e abrir o vim, visualizar os logs dos servidores, executar comandos, abrir o navegador e ainda sobra espaço. Tudo isso sem precisar ficar fazendo <em>“ALT + TAB”</em>.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/12/30/e-la-se-vai-2012/">E Lá Se Vai 2012, Que Venha 2013!</a></h1>
<p class="meta">
<time datetime="2012-12-30T11:10:00-03:00" pubdate data-updated="true">Dec 30<span>th</span>, 2012</time>
| <a href="/blog/2012/12/30/e-la-se-vai-2012/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>Comentei com alguns amigos que escreveria um blog post de retrospectiva do ano de 2012, isso já tem algumas semanas, mas fui enrolando até que o <a href="http://twitter.com/jvrmaia">@jvrmaia</a> publicou o <a href="http://blog.joaovrmaia.com/blog/2012/12/29/morre-deabo-de-2012-e-vem-ni-mim-2013/">seu blog post retrospectivo</a>, então percebi que tinha que publicar logo senão ficaria feio pra mim <code>:-D</code>. Então, vamos lá!</p>
<p>O ano de 2012 foi um ano irado! Simplesmente o ano de muito trabalho e diversas conquistas. Começarei pela que considero a mais marcante deste ano e provavelmente da minha vida: a conquista da minha graduação. Em julho eu terminei minha graduação em Ciência da Computação, <a href="blog/2012/07/08/mission-accomplished/">foi uma luta e tanto</a>. Depois de anos na rotina <em>trabalho –> faculdade –> casa –> repete tudo</em> eu finalmente posso escolher o que fazer após o expediente de trabalho <code>:)</code>.</p>
<p>Também conquistei a liberdade automotiva :), está sendo uma experiência e tanto. É muito boa a sensação de ir aonde quer na hora que quer e escolher quando voltar.</p>
<p>Vários amigos meus começaram ou já faziam algum tipo de atividade física, alguns com bikes, outros com simples caminhadas e/ou frequentando academias. Então eu e minha digníssima esposa decidimos deixar o banco dos reservas (sedentários) e partimos para a competição (fazer alguma atividade). Ainda estamos, como eu diria… em processo de adaptação :).</p>
<p> Outra <em>parada</em> muito bacana foi eu ter finalmente comprado o meu videogame. Para muitos isso pode ser algo irrelevante né? Afinal, um videogame é algo banal. Deixa eu contextualizar isso: Sempre fui viciado em jogos de videogame, houve uma época que eu estava todos os dias na locadora gastando o pouco dinheiro que eu tinha para jogar. Minha paixão sempre foram os jogos de luta, parte desta história você pode <a href="blog/2010/01/24/pkgbuild-do-advancemame/">ver aqui</a>. Mas nunca tive dinheiro para comprar um videogame, e quando tive oportunidade financeira para comprar, adquirir um videogame nunca atingira o topo da minha lista de prioridades. Mas este ano consegui realizar meu sonho, coincidentemente ao final da minha faculdade.</p>
<p>Profissionalmente foi um ano de muita luta, carrego a posição e líder técnico do time de desenvolvimento do <a href="http://www.adena.com.br">Adena</a>, posso dizer que é um aprendizado diário e contínuo, muitas vezes aprendo mais do que ensinando o que pessoalmente me deixa muito motivado. Nesse sentido 2013 tende a ser um ano muito promissor, com o término da faculdade posso começar finalmente a estudar o que me interessa sem a preocupação de ter uma prova ao final. É o momento de aprofundar em metodologias, técnicas, padrões e tudo mais.</p>
<p>Foram várias as conquistas também, algumas delas você pode <a href="http://blog.giran.com.br/">ver aqui</a>.</p>
<p>Sempre participei de grupos e comunidades de software livre, organizando eventos e micro-eventos. Entretanto não tive oportunidade e tempo para ajudar em algum projeto de software. Penso que todo desenvolvedor deveria participar do desenvolvimento de algum software livre, os benefícios de estar em uma comunidade, trocar experiências, ter seu código <em>auditado</em> por uma comunidade e o fato de se trabalhar com pessoas que você não conhece, culturas diferentes, pessoas de outros países, etc há de ser algo de muito valor.</p>
<p>Comecei por baixo, aos poucos reportando algumas issues, corrigindo outras, refatorando algumas implementações. Mas acho que é chegada a hora de participar firmemente de algum projeto, ainda não achei um, na verdade nem fiz pesquisas. Mas como tenho desenvolvido em ruby tende a ser algo em ruby mesmo.</p>
<p>Continuarei ajudando em eventos e mantendo minha participação nos grupos, mas em 2013, assim como foi ao final de 2012, vou me afastar da organização e participar apenas com palestras. Portanto se você que me lê conhecer ou estiver organizando algum evento de desenvolvimento ou software livre fique a vontade para fazer contato, ficarei feliz em ajudar no que for possível <code>;)</code>.</p>
<p>Pretendo continuar o <a href="http://horaextra.org/">#Horaextra</a> como fizemos neste último semestre de 2012. O #horaextra não foi criado por nós, como pode ver no link foi criado no Rio de Janeiro. Eu fiquei sabendo dele através do <a href="https://twitter.com/henriquebastos">@henriquebastos</a> quando de sua vinda aqui às terras capixabas. Desde então tenho seguido mais ou menos o que eles fazem. Mensalmente eu, <a href="https://twitter.com/vixlima">@vixlima</a>, <a href="https://twitter.com/jvrmaia">@jvrmaia</a>, <a href="https://twitter.com/ra_pha">@ra_pha</a>, alguns membros mais do <a href="https://twitter.com/_tuxes">@_tuxes</a> e alguns amigos nos reunimos para comer, beber e conversar, geralmente sobre tecnologia.</p>
<p>Foram ótimos encontros!</p>
<p>Agradeço pelo ano de 2012 e tudo que ele foi e desejo um ano de 2013 repleto de conquistas e muito trabalho para todos nós <code>\o/</code>.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/09/25/gtd-no-meu-dia-a-dia/">GTD No Meu Dia-a-dia</a></h1>
<p class="meta">
<time datetime="2012-09-25T12:56:00-03:00" pubdate data-updated="true">Sep 25<span>th</span>, 2012</time>
| <a href="/blog/2012/09/25/gtd-no-meu-dia-a-dia/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>Reuniões, e-mails, solicitações, tarefas, projetos, família, lembretes, faculdade, eventos, lazer, estudos, médico, etc. São alguns exemplos das coisas que nós, querendo ou não, gerenciamos todos os dias. Quanto mais funções você acumula, quanto maior for seu envolvimento com as coisa ao seu redor, mais itens você terá para gerenciar.</p>
<p>OK, talvez o parágrafo inicial tenha ficado um pouco descontextualizado, mas se você já ouviu falar de <a href="http://pt.wikipedia.org/wiki/Getting_Things_Done">Getting Things Done</a>, ou só GTD, deve imaginar do que se trata. Aos que não conhecem segue abaixo uma breve explicação sobre o que é o GTD, dito pelo próprio autor <em>Devid Allen</em>:</p>
<blockquote><p>Tire tudo de sua cabeça. Tome decisões sobre cada coisa no momento em que toma conhecimento dela, sem esperar elas explodirem. Organize lembretes de seus projetos e das próximas ações em cada um deles em categorias apropriadas.</p>
<p>Mantenha seu sistema atualizado, completo e analisado com uma freqüência suficiente para ter confiança em suas escolhas intuitivas sobre o que você está fazendo (ou deixando de fazer) a cada momento.</p></blockquote>
<p><em><em>O texto foi retirado do site <a href="http://www.efetividade.net/">Efetividade.net</a>, que também é um ótimo ponto de partida para se estudar o GTD</em></em></p>
<p>Trata-se de um sistema de organização pessoal para que você consiga dar fluxo e continuidade a tudo que você precisa fazer, desde projetos pessoais (viagens, eventos, passeios, lazer em geral, família, médico, enfim tudo) até suas tarefas profissionais. Não é o objetivo desde blog post descrever com funciona e como utilizar o GTD. Caso tenha interesse em aprender mais eu sugiro, como ponto de partida, o <a href="http://www.efetividade.net/tag/gtd/">Efetividade.net</a>.</p>
<p>Não posso dizer que sou usuário assíduo e exemplar do método GTD, entretanto posso afirmar que utilizo algumas das técnicas do GTD, e outras ainda estou criando o hábito de utiliza-las. Contudo o pouco que tenho utilizado tem me ajudado bastante e é isso que gostaria de compartilhar.</p>
<p>Este blog post é sobre como eu tenho utilizado as técnicas do GTD em meu dia-a-dia e como isto tem me ajudado, me permitindo lembrar de cosias que eu deveria lembrar (quando eu precisava lembrar) e não me preocupar com coisas que, digamos, não são importantes <em>(ao menos não no momento)</em>.</p>
<p>Listarei algumas ferramentas que utilizo, descrevendo um pouco sobre como eu as utilizo, depois comento um pouco sobre como o GTD melhorou minha produtividade e melhorou o fluxo das tarefas no meu dia-a-dia. Por fim deixo alguns <strong>comentários pessoais</strong> que podem ajudar quem estiver começando agora com o GTD.</p>
<h2>Ferramentas</h2>
<p><img class="left" src="/images/blog/moleskine1.png" title="Meu Moleskine" ></p>
<p>Trabalho com tecnologia da informação <em>(vulgo informática)</em> e por isso tendencio a procurar por softwares que façam o trabalho por mim, entretanto isto é um erro comum. As ferramentas servem de apoio e portanto a função delas é dar suporte. Adequar-se ao GTD é mais uma questão de mudança de hábito, e como mudar hábitos nunca é tão fácil, muitas pessoas se frustram enquanto tentam aplicar o GTD em suas vidas e acabam por culpar o software que escolheram para lhes ajudarem.</p>
<p>As ferramentas que utilizo no meu dia-a-dia são basicamente: Papel e caneta, Gmail e Evernote. Destes o melhor de todos sem dúvida é a dupla <em>papel e caneta</em>.</p>
<h3>Papel e caneta</h3>
<p><img class="right" src="/images/blog/moleskine2.png" title="Meu Moleskine" ></p>
<p>São meus preferidos e suponho que também seja o de muitos outros colegas. É prático, está sempre a mão e é muito simples de ser utilizado. Eu tenho comigo um <a href="http://www.moleskine.com/web/us/">Moleskine</a> que ganhei, eu comecei a utilizar ele para meu GTD diário, entretanto o Moleskine é um caderno com preço um pouco acima dos demais, portanto parei de utiliza-lo como anotação diária e passei a usá-lo apenas como referência das reuniões e projetos que participo.</p>
<p>Há algum tempo eu utilizava um caderno quadriculado, só que ele era um pouco grande e me atrapalhava na mesa, portanto passei a utilizar um bloco de anotações simples.</p>
<p><a href="http://www.pomodorotechnique.com/"><img class="right" src="/images/blog/pomodoro.jpg" title="Pomodoro Technique" ></a></p>
<p>Estou ainda tentando me acostumar com o <a href="http://www.pomodorotechnique.com/">Pomodoro Technique</a>, muito bom para o passo <strong>Fazer</strong> do GTD. Então utilizo o bloco de anotações para marcar o que estou fazendo e quantos <em>pomodoros</em> utilizei para executar tal tarefa.</p>
<p>Também utilizo o caderno/bloco como <strong>Inbox</strong> de solicitações que recebo diariamente, assim não corro o risco de esquecer e ainda me serve de retrospectiva do que fiz durante todo dia.</p>
<h3>Evernote</h3>
<p><a href="http://evernote.com/"><img class="center" src="/images/blog/hero_evernote.png" title="Evernote" ></a></p>
<p>Existem anotações que merecem ser guardadas para referências futuras. Em geral eu descarto as folhas dos blocos, mas as mais importantes eu guardo para referência, outras eu prefiro juntar em uma nota no <a href="http://evernote.com/">Evernote</a>.</p>
<p>O Evernote é uma ferramenta impressionante e mesmo que você não tenha interesse em aplicar o GTD em seu dia-a-dia vale a pena instalar e usar a ferramenta. É possível salvar notas, fotos, páginas de sites, enfim, tudo que faça lhe faça necessário criar uma nota sobre. E por ter versões para web, mobile e desktop permite o acesso rápido e fácil às suas notas onde quer que você esteja.</p>
<h3>Gmail</h3>
<p>Quando comecei a usar o Gmail fiz como a maioria, nunca apagava um e-mail sequer, afinal espaço não era problema. Para piorar a situação eu não me importava em organizar os e-mails que recebia, foram anos assim. Imagina a dificuldade de buscar algo, simplesmente era um sufoco.</p>
<p>Com o GTD passei a encarar meu Gmail como, literalmente, uma Inbox. Tornou-se minha Inbox principal, é no e-mail que recebo a maioria das requisições e tarefas que executo durante meu dia de trabalho. Sendo assim a organização dos e-mails tornou-se algo primordial e necessário, caso contrário usar o e-mail como Inbox não faria qualquer sentido.</p>
<p>Fiz várias pesquisas na internet e <a href="http://lifehacker.com/5321180/turn-gmail-into-your-ultimate-gtd-inbox">descobri uma forma simples</a>, hoje basicamente utilizo assim:</p>
<ul>
<li>Se for algo que eu precise fazer e for rápido <em>(regra dos 2-3 minutos do GTD)</em> eu “faço na hora”;</li>
<li>Se levar mais que 2-3 minutos, marco com uma <strong>Star (exclamação)</strong> para ser feito depois;</li>
<li>Se for algo que eu possa delegar, delego e marco com uma <strong>Star (setinhas)</strong> se precisar que eu acompanhe, caso contrário deleto o e-mail;</li>
<li>Se for algo para leitura posterior, tenho duas opções: mando para o <a href="http://getpocket.com/">Pocket</a> quando se tratar de link ou marco com uma <strong>Star (estrela lilaz)</strong>;</li>
<li>Se não for necessária qualquer ação mas o e-mail for importante o bastante, aplico um label “Referência* e Arquivo o e-mail;</li>
<li>Apago qualquer e-mail que eu julgar não mais necessário;</li>
</ul>
<p>Em todos os casos, excetuando quando da exclusão, eu arquivo o e-mail. O importante é não manter o e-mail na Inbox. Desta forma a minha inbox fica limpa sempre para receber novos e-mails e com isso novas solicitações. Uma inbox lotada de e-mails, muitos não lidos, aterroriza sua mente e lhe dá a impressão que há muita coisa a ser feita. Esta forma de organização e atitudes no e-mail me permitem estar no controle sempre.</p>
<h2>Compartilhando o que já experimentei</h2>
<p>Estas foram as ferramentas que mais utilizo, agora vamos aos meu comentários sobre as experiências que já passei e acho que posso ajudar compartilhando-as.</p>
<h3>Não ache que conseguirá usar o GTD do dia pra noite (ou vice-versa)</h3>
<p>Quando comecei a usar o GTD eu tive um sério problema. O método pede que você páre, literalmente, durante um ou dois dias para organizar sua vida antes de começar a usar os métodos do GTD, ou seja, organizar tudo que você fez até hoje nos moldes do GTD. Mas convenhamos, se eu tivesse um ou dois dias para parar provavelmente eu não estaria tão desorganizado.</p>
<p>O que fiz? Uma faxina de porco <code>:)</code>, joguei a sujeira para deibaxo do tapete e comecei aos poucos aplicando os métodos que eu conseguisse. Conforme falei usar o GTD é uma questão de mudança de hábito, e decidi começar pelas que eu imaginava serem mais fácil, no meu caso a <em>Coleta</em>.</p>
<h3>Coleta</h3>
<p>Comecei a implementar o GTD em minha vida pela coleta, uma das ações que fazem parte do GTD. O alvo principal foi meu Gmail <strong>sempre</strong> organizado. No mínimo uma vez por dia eu checo meu email e faço os procedimentos citados no tópico acima. Hoje consigo fazer isso quase instantaneamente quando recebo um e-mail. Minha dica, mantenha sua inbox do (G)mail vazia, faz um bem que você não imagina <code>:-D</code>. Que o diga o amigo <a href="https://twitter.com/leohackin">@leohackin</a>.</p>
<p>Não tenha medo de apagar seus e-mails, use labels/pastas sempre, crie uma estrutura de labels/pastas que for conveniente para você, especialmente porque se você arquivou o e-mail é porque um dia precisará busca-lo novamente, portanto organização é fundamental.</p>
<h3>Anote <em>“tuto”</em></h3>
<p>Uma frase que sempre digo: <em>“Sua mente não tem mente própria”</em>, portanto anote tudo, especialmente as coisas que você sabe precisará lembrar e mantenha isso perto de você. Seja no Evernote, seja no bloco de anotações, seja no caderno, no Smartphone ou em um belíssimo Moleskine. O importante é anotar.</p>
<p>Assim como sugere o GTD, se for um compromisso ou algo que tenha data e hora para acontecer o lugar correto é o calendário. No meu caso tenho usado o Google Calendar, agendando avisos em SMS e/ou e-mail sempre que necessário para me lembrar.</p>
<h3>Várias ferramentas = Problemas</h3>
<p>Eu tentei utilizar o Gmail tasks, o Wunderlist ou Wunderkit e várias outras ferramentas. Simplesmente não consigo!</p>
<p>Uma das dicas do GTD ou ZTD é que se utilize o mínimo de inbox possíveis pois quanto mais tiver mais locais você precisará procurar por tasks. Eu tentei usar outras ferramentas, mas estou tão bem organizado no meu Gmail e bloquinho de anotações que sinceramente não compensa usar outra ferramenta para isso.</p>
<p>Não estou dizendo que não funcionará para você, só quero dizer para tomar cuidado ao usar muitas ferramentas ao mesmo tempo, você pode ser confundir. E lembrando o que citei acima, as ferramentas não são para usarem o GTD por você, são para te ajudar.</p>
<h3>ZTD</h3>
<p><a href="http://zenhabits.net/zen-to-done-the-simple-productivity-e-book/"><img class="left" src="/images/blog/ztd.png" title="Zen To Done" ></a></p>
<p>Uma variante do GTD é o ZTD – Zen To Done. Ele se baseia no GTD entretanto ele faz um <em>“resumo”</em>, uma compactada no GTD para que se torne ainda mais fácil o uso dos métodos do GTD. Confesso que depois de ler tanto sobre o GTD eu foi apresentado ao ZTD (graças ao amigo <a href="https://twitter.com/leohackin">@leohackin</a>) e estou gostando. Eu encaro o ZTD como um caminho simples para aplicar o GTD.</p>
<p>Recomendo a leitura, o link oficial pode ser visitado <a href="http://zenhabits.net/books/">aqui</a>. Se preferir há uma tradução para <em>pt-BR</em> <a href="http://lucasteixeira.com/ztd/">disponível aqui</a>.</p>
<h2>Finalizando</h2>
<p>Eu teria mais um monte de coisas para compartilhar, mas acho que o blog post está grande o suficiente. Se tiver alguma dúvida, sugestão, etc. fique a vontade para deixar seu comentário, ficarei feliz em ajudar.</p>
<p>Mais uma vez queria deixar claro que o blog post expressa minha opinião e experiência sobre o GTD.</p>
<p>Obrigado e que a força esteja contigo.</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/09/13/rockn-rails-2012/">Rock’n Rails 2012</a></h1>
<p class="meta">
<time datetime="2012-09-13T12:49:00-03:00" pubdate data-updated="true">Sep 13<span>th</span>, 2012</time>
| <a href="/blog/2012/09/13/rockn-rails-2012/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>É isso aí galera, o Rock’n Rails 2012 já está com data e local defindos, como no ano passado o evento será realizado na <a href="http://www.uvv.br">Universidade Vila Velha</a> no dia <strong>20 de outubro de 2012</strong>.</p>
<p><a href="http://www.rockandrails.com.br"><img class="right" src="/images/logo-rockandrails.jpg"></a></p>
<p>Nós criamos o Rock’n Rails na tentativa de juntar desenvolvedores, curiosos, empresários, todo tipo de pessoa interessada na linguagem para conversarem, aprenderem e principalmente fazerem um networking bacana entre profissionais e empresários afim de fomentar o movimento Ruby/Rails em terras capixabas.</p>
<p>Um ano se passou desde a nossa <a href="http://www.flickr.com/photos/68470895@N07">primeira edição</a> e ficamos orgulhosos com o resultado: conhecemos inúmeras pessoas, expandimos nosso conhecimento e como resultado e consequência disto nós pretendemos fazer um evento ainda melhor este ano.</p>
<p>Como no ano passado o evento está sendo organizado pela equipe da <a href="http://www.giran.com.br">Giran Ecommerce Solutions</a>, o Rock’n Rails não tem fins lucrativos: todos os recursos obtidos junto aos parceiros, patrocinadores e incrições será revertido para cobertura do evento e compra de brindes para sorteio ao final do evento.</p>
<p>Nossa grade de palestras está quase fechada mas já com figuras de peso confirmadas como Bruno Oliveira(<a href="https://twitter.com/abstractj">@abstractj</a>) da <a href="http://br.redhat.com/">Red Hat</a> e <a href="https://twitter.com/timotta">Tiago Motta</a> da <a href="http://www.globo.com/">Globo.com</a>, <a href="https://twitter.com/sr_valeriano">Ricardo Valeriano</a> da <a href="http://www.caelum.com.br/">Caelum</a> e <a href="https://twitter.com/maxwellleonardo">Maxwell Leonardo</a> da <a href="http://www.giran.com.br">Giran</a>. Estamos confirmando mais gente e esperando fechar tudo nos próximos dias.</p>
<p>Esse ano iniciamos com patrocinadores de peso: a <a href="http://www.caelum.com.br">Caelum</a> apoiando como sempre a disseminação de conhecimento e a <a href="http://www.casadocodigo.com.br/">Casa de Código</a>, nova editora de livros feitos por programadores para programadores. Além deles, a <a href="http://www.helabs.com.br/">He:Labs</a>, desenvolvedora de software e organizadora do evento StartupDev Rumble, nos ajudará esse ano. Nosso muito obrigado a vocês. :)</p>
<p>Como a idéia do evento é ser melhor que o ano passado, estaremos cobrando uma taxa simbólica de <em>R$ 35,00</em> para cobrir os custos e tentar fazer camisas para todos. :) As inscrições serão abertas em breve, estamos apenas com uma pendência de nosso gateway de pagamentos.</p>
<p>No mais, sintam-se a vontade para ajudar e sugerir, pois movimento e comunidade só se faz com a ajuda e contribuição de todos. Os contatos e mais informações estão disponívels no site do <a href="http://www.rockandrails.com.br">Rock’n Rails</a>, fique a vontade para nos contactar.</p>
<p>Nos vemos no dia <strong>20 de outubro</strong> <code>\o/</code>!</p>
</div>
</article>
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/07/27/instalando-nginx-com-rvm-para-aplicacoes-rails/">Instalando Nginx Com RVM Para Aplicações Rails</a></h1>
<p class="meta">
<time datetime="2012-07-27T13:05:00-03:00" pubdate data-updated="true">Jul 27<span>th</span>, 2012</time>
| <a href="/blog/2012/07/27/instalando-nginx-com-rvm-para-aplicacoes-rails/#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>Olá pessoal! Depois de muito tempo sem um post, eu resolvi fazer algo que estava no meu dashboard há um bom tempo, explicar o básico para se levantar uma aplicação Rails e Nginx em um servidor Linux.</p>
<p>Minha intenção com o post é passar os caminhos básicos de como configurar o Nginx, o Passenger e o RVM em um servidor Linux. O processo é relativamente simples.</p>
<p>Antes de começar o processo de instalação é necessário que você possua acesso de administrador do sistema, ou seja, acesso ao usuário <em>root</em>. Caso você não possua esse nível de acesso os comandos abaixo não darão certo.</p>
<p>Algumas distribuições não permitem o acesso direto ao usuário <em>root</em>, exigindo que você tenha uma conta de usuário normal e só então, a partir dele, mudar o nível de acesso para o <em>root</em>, isso normalmente é feito através do comando <code>sudo</code>. Se for o seu caso sugiro rodar o comando <code>sudo su -</code> que fará você mudar o nível de privilégios para administrador do sitema, aí é só seguir os passos abaixo.</p>
<h2>Instalando o RVM</h2>
<p>O processo de instalação do RVM não possui muitos mistérios, basta seguir <a href="https://rvm.io/rvm/install/">o processo de instalação disponível no site do RVM</a>. Mas para que você não tenha dúvidas segue a linha a ser executada:</p>
<figure class='code'><figcaption><span>Instalando o RVM</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>curl -L https://get.rvm.io | bash -s stable --ruby
</span></code></pre></td></tr></table></div></figure>
<p>Este comando fará a instalação do RVM no sistema, e logo em seguida a instalação da a última versão do ruby disponível, no momento que escrevo esse post a versão mais atual é a <strong>1.9.3-p194</strong>.</p>
<p>A instalação do RVM requer o uso do <code>curl</code>, portanto é preciso ter ele instalado, verifique como instalar esse software em sua distribuição/versão de Linux.</p>
<p>Caso ocorra algum erro na instalação do ruby é bem provável que seja pela ausência de alguma dependência na distribuição utilizada, para fazer um levantamento e identificar se falta algo rode o comando <code>rvm requirements</code>. Siga os procedimentos informados e após terminar tente novamente instalar o <code>ruby</code>:</p>
<figure class='code'><figcaption><span>Instalando o ruby manualmente</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>rvm install 1.9.3 <span class="c">#ou a versão que deseja</span>
</span></code></pre></td></tr></table></div></figure>
<h2>Instalando o Passenger</h2>
<p>Esse talvez seja o passo mais fácil. O passenger é uma gem que por sua vez possui um script que auxilia em todo o processo, como estamos fazendo a instalação em um ambiente servidor nós podemos instalar a gem sem os arquivos de documentação:</p>
<figure class='code'><figcaption><span>Instalando o Passenger</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>gem install passenger --no-ri --no-rdoc
</span></code></pre></td></tr></table></div></figure>
<p>Pronto, agora já temos o passenger instalado. Entretanto ele sozinho não fará muita coisa por você, ou melhor, por sua aplicação. Vamos agora instalar o Nginx.</p>
<h2>Instalando o Nginx</h2>
<p>Infelizmente não podemos utilizar o Nginx provido pela distribuição Linux que você está usando, isso porque o Nginx não possui o suporte a módulos, algo que o Apache tem, que seria a possibilidade de instalar o Nginx e depois apenas os módulos que necessários (php, ruby, etc.). Para o nosso caso será necessário (re)compilar o Nginx habilitando o suporte ao Passenger, é justamente isso que vamos abordar no próximo tópico.</p>
<h3>Instalando o Nginx com suporte ao Passenger (usando o assistente)</h3>
<p>Nós utilizaremos o instalador provido pela gem <code>passenger</code>, esse script fará todo o trabalho sujo por você, baixando o nginx, configurando e compilando. Esse processo é recomendado para aqueles que estão começando e querem algo funcional de forma simples. Vamos lá então:</p>
<figure class='code'><figcaption><span>Instaladando o Nginx com suporte ao passenger</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>passenger-install-nginx-module
</span></code></pre></td></tr></table></div></figure>
<p>O script fará uma série de perguntas, vou documentar cada uma delas e explicar para que você se sinta seguro <code>;)</code>.</p>
<p>Logo no início será apresentado um texto informativo sobre o que será realizado durante o processo de instalação, nessa primeira parte será solicitado que você pressione <code><ENTER></code> para continuar, ou <code><CTRL>-C</code> caso tenha se arrependido e queira abortar a instalação. <strong>É óbvio que vamos continuar né!</strong> <code>:P</code>, senta o dedo aí no <code><ENTER></code>.</p>
<p>Logo em seguida o script fará um checklist sobre todas as dependências necessárias para compilar o Passenger e o Nginx, entre os itens verificados estão: compilador, make, curl ou wget, headers do ruby (bibliotecas necessárias para compilação), rubygems, rack, openssl, zlib, etc. Caso algum deles esteja faltando o script fará o alerta e mostrará o que fazer para resolver as dependências.</p>
<p>Se for o seu caso, instale as dependências e depois volte a executar o comando <code>passenger-install-nginx-module</code> novamente.</p>
<p>Após o checklist de dependências o script solicitará qual o método você utilizará para instalar o Nginx + Passenger:</p>
<figure class='code'><figcaption><span>Questionamento sobre qual processo será utilizado para instalar o Nginx + Passenger</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
<span class='line-number'>20</span>
<span class='line-number'>21</span>
</pre></td><td class='code'><pre><code class='text'><span class='line'>Automatically download and install Nginx?
</span><span class='line'>
</span><span class='line'>Nginx doesn't support loadable modules such as some other web servers do,
</span><span class='line'>so in order to install Nginx with Passenger support, it must be recompiled.
</span><span class='line'>
</span><span class='line'>Do you want this installer to download, compile and install Nginx for you?
</span><span class='line'>
</span><span class='line'> 1. Yes: download, compile and install Nginx for me. (recommended)
</span><span class='line'> The easiest way to get started. A stock Nginx 1.0.10 with Passenger
</span><span class='line'> support, but with no other additional third party modules, will be
</span><span class='line'> installed for you to a directory of your choice.
</span><span class='line'>
</span><span class='line'> 2. No: I want to customize my Nginx installation. (for advanced users)
</span><span class='line'> Choose this if you want to compile Nginx with more third party modules
</span><span class='line'> besides Passenger, or if you need to pass additional options to Nginx's
</span><span class='line'> 'configure' script. This installer will 1) ask you for the location of
</span><span class='line'> the Nginx source code, 2) run the 'configure' script according to your
</span><span class='line'> instructions, and 3) run 'make install'.
</span><span class='line'>
</span><span class='line'>Whichever you choose, if you already have an existing Nginx configuration file,
</span><span class='line'>then it will be preserved.
</span></code></pre></td></tr></table></div></figure>
<p>Selecione a opção 1 e pressione <code><ENTER></code>. Nesta opção será feito o download e compilação do Nginx com suporte ao Passenger pelo próprio script. Logo Após será feito um novo questionamento, desta vez sobre qual será o local onde o Nginx será instalado. Eu prefiro escolher um local diferente por questões de gosto e costume, em meus processos de instalação eu utilizo o path <code>/usr/local/nginx</code>, fique a vontade para escolher qual deles utilizar.</p>
<figure class='code'><figcaption><span>Onde instalar o Nginx</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='text'><span class='line'>Where do you want to install Nginx to?
</span><span class='line'>
</span><span class='line'>Please specify a prefix directory [/opt/nginx]: /usr/local/nginx
</span></code></pre></td></tr></table></div></figure>
<p>Faça a sua escolha e pressione <code><ENTER></code> para dar início a compilação, agora é só esperar finalizar o processo.</p>
<p>Ao finalizar a compilação e instalação do Nginx o script exibe alguns parâmetros que devem ser definidos na configuração do Nginx para ativar o passenger, nós não precisamos nos preocupar com isso agora pois o script de instalação já injetou essas diretivas no arquivo de configuração do nginx, mas vale a pena registrar para não ter dúvidas:</p>
<figure class='code'><figcaption><span>Nginx instalado, diretivas de configuração para suporte ao Passenger</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
</pre></td><td class='code'><pre><code class='text'><span class='line'>Nginx with Passenger support was successfully installed.
</span><span class='line'>
</span><span class='line'>The Nginx configuration file (/usr/local/nginx/conf/nginx.conf)
</span><span class='line'>must contain the correct configuration options in order for Phusion Passenger
</span><span class='line'>to function correctly.
</span><span class='line'>
</span><span class='line'>This installer has already modified the configuration file for you! The
</span><span class='line'>following configuration snippet was inserted:
</span><span class='line'>
</span><span class='line'> http {
</span><span class='line'> ...
</span><span class='line'> passenger_root /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.15;
</span><span class='line'> passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby;
</span><span class='line'> ...
</span><span class='line'> }
</span><span class='line'>
</span><span class='line'>After you start Nginx, you are ready to deploy any number of Ruby on Rails
</span><span class='line'>applications on Nginx.
</span></code></pre></td></tr></table></div></figure>
<p>Pressione <code><ENTER></code> e outra mensagem informativa será exibida, desta vez é exibido um trecho de configuração da seção <code>server</code> dos arquivos de configuração do Nginx, essa seção é utilizada justamente para configurar uma aplicação/site no Nginx, <strong>esta não é inserida automaticamente</strong>, precisaremos setar isso quando da configuração de nossa aplicação.</p>
<h2>Organizando a instalação</h2>
<p>Vamos agora dar uma organizada para termos menos trabalho no futuro, até para melhorar a manutenção. Como é padrão das distribuições linux os arquivos de configuração devem ficar no path <code>/etc</code>, sendo assim ficaria melhor se a configuração do Nginx ficasse em <code>/etc/nginx</code>, vamos criar um link simbólico dos arquivos de configuração do Nginx para o <code>/etc/nginx</code>:</p>
<figure class='code'><figcaption><span>Criando link simbólico do Nginx para o</span><a href='/etc/'>link</a></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ln -s /usr/local/nginx/conf /etc/nginx
</span></code></pre></td></tr></table></div></figure>
<p>Outra melhoria que podemos fazer é colocar o binário do nginx em um path globalmente reconhecido pelo linux, para isso vamos criar outro link simbólico:</p>
<figure class='code'><figcaption><span>Criando link simbólico do binário do nginx</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
</span></code></pre></td></tr></table></div></figure>
<h2>Configurando o Nginx</h2>
<p>O Nginx é instalado com um arquivo default de configuração, não vou cobrir todo esse processo, no lugar eu sugiro que você baixe e use o arquivo de configuração abaixo:</p>
<div><script src='https://gist.github.com/3334030.js?file=nginx.conf'></script>
<noscript><pre><code>user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 512;
multi_accept on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
# Paths para o passenger e o ruby utilizados
passenger_root /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.15;
passenger_ruby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby;
# Vide mais configurações em: http://www.modrails.com/documentation/Users%20guide%20Nginx.html
passenger_max_pool_size 4;
passenger_max_instances_per_app 2;
passenger_pool_idle_time 10;
passenger_log_level 2;
# Buffer
client_body_buffer_size 8K;
client_header_buffer_size 1k;
client_max_body_size 5m;
large_client_header_buffers 2 1k;
# Timeouts
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 15;
send_timeout 10;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
# Para melhorar a organização os .conf foram separados em conf.d e sites-enabled (no estilo do Apache)
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}</code></pre></noscript></div>
<p>A seguir vamos criar algumas pastas para organizar melhor os arquivos de configuração:</p>
<figure class='code'><figcaption><span>Criando a pasta conf.d, sites-enabled e sites-available</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>mkdir /etc/nginx/conf.d
</span><span class='line'>mkdir /etc/nginx/sites-enabled
</span><span class='line'>mkdir /etc/nginx/sites-available
</span></code></pre></td></tr></table></div></figure>
<h2>Configurando seu domínio</h2>
<p>Pronto, quase tudo configurado, falta agora configurar o Nginx para responder pelo domínio de seu site, para isso usaremos a diretiva <code>server</code>, vamos utilizar como exemplo o meu domínio almirmendes.com. Vamos criar um arquivo em <code>/etc/nginx/sites-available/</code> com o nome do seu domínio (o nome não importa, pode ser qualquer um):</p>
<figure class='code'><figcaption><span>Criando arquivo de configuração para o domínio</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>vim /etc/nginx/sites-available/almirmendes.com
</span></code></pre></td></tr></table></div></figure>
<p>Eu tenho, no Gist abaixo, uma configuração que você pode utilizar como exemplo, apenas lembre-se de trocar as entradas que tiverem <strong>almirmendes.com</strong> pelo seu domínio:</p>
<div><script src='https://gist.github.com/3482847.js'></script>
<noscript><pre><code></code></pre></noscript></div>
<p>Agora vamos fazer um link simbólico do arquivo <code>almirmendes.com</code> para a pasta `/etc/nginx/sites-enabled/. Se reparar no arquivo de configuração acima, no gist 3482847, ela é a única que está sendo lida pelo Nginx, esta é a forma que temos para ativar uma configuração nova de site. Com isso habilitaremos o site:</p>
<figure class='code'><figcaption><span>Habilitando a configuração do domínio</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>ln -s /etc/nginx/sites-available/almirmendes.com /etc/nginx/sites-enabled/almirmendes.com
</span></code></pre></td></tr></table></div></figure>
<p>Se algum dia precisar desativar o site basta remover o link simbólico e pronto em <code>/etc/nginx/sites-enabled/almirmendes.com</code>. Você ainda terá o arquivo de configuração intacto em <code>/etc/nginx/sites-available</code>.</p>
<p>Para testar a configuração use o seguinte comando:</p>
<figure class='code'><figcaption><span>Testando a configuração do nginx</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>nginx -t
</span></code></pre></td></tr></table></div></figure>
<p>Se no resultado do comando acima aparecer algo semelhante ao exibido abaixo é sinal de que está tudo correto, agora só falta inicializarmos o Nginx <code>;)</code>:</p>
<figure class='code'><figcaption><span>Sintaxe testada pelo Nginx</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
</span><span class='line'>nginx: configuration file /usr/local/nginx/conf/nginx.conf <span class="nb">test </span>is successful
</span></code></pre></td></tr></table></div></figure>
<h2>Script de inicialização do Nginx</h2>
<p>Por fim falta só adicionar ao sistema o script de inicialização do Nginx. Sugiro que baixe o que está disponível <a href="https://gist.github.com/3506074">neste link</a> e salve-o em <code>/etc/init.d/nginx</code>. :</p>
<figure class='code'><figcaption><span>Inicializando o Nginx</span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>chmod +x /etc/init.d/nginx <span class="c"># permissão de execução para o script</span>
</span><span class='line'>service nginx start <span class="c">#inicializa o nginx</span>
</span></code></pre></td></tr></table></div></figure>
<p>Existem inúmeras outas informações a serem adicionadas ao post, entretanto não queria deixá-lo ainda maior. Espero que ajude você a configurar o Nginx, qualquer coisa estamos a disposição. Abraços!</p>
</div>
</article>
<div class="pagination">
<a class="prev" href="/blog/page/2/">← Older</a>
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating…</li>
</ul>
<a href="https://github.com/m3nd3s">@m3nd3s</a> on GitHub
<script type="text/javascript">
$(document).ready(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'm3nd3s',
count: 0,
skip_forks: true,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
<section>
<h1>Latest Tweets</h1>
<ul id="tweets">
<li class="loading">Status updating…</li>
</ul>
<script type="text/javascript">
$.domReady(function(){
getTwitterFeed("m3nd3s", 1, false);
});
</script>
<script src="/javascripts/twitter.js" type="text/javascript"> </script>
<a href="http://twitter.com/m3nd3s" class="twitter-follow-button" data-show-count="false">Follow @m3nd3s</a>
</section>
<section>
<h1>Blog de Amigos</h1>
<ul>
<li><a target="_blank" href="http://www.leohackin.com.br">Leo Hackin</a></li>
<li><a target="_blank" href="http://www.jeveaux.com">Jeveaux</a></li>
<li><a target="_blank" href="http://blog.joaovrmaia.com/">João Victor</a></li>
<li><a target="_blank" href="http://www.tux-es.org">Comunidade Tux-ES</a></li>
</ul>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright © 2013 - m3nd3s -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'm3nd3s';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js#appId=212934732101925&xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<script type="text/javascript">
(function() {
var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
script.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
})();
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>