SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
P O R Q U E V I M ?
A U G U S T O PA S C U T T I
Sebastião Salgado
V O C Ê D E V E R I A U S A R
V I M ?
V O C Ê D E V E R I A U S A R
V I M ?
N Ã O
B O M S O F T WA R E
N O S S O O B J E T I V O É S E M P R E P R O D U Z I R :
Edward Weston
O Q U E É U M
B O M
S O F T WA R E ?
O Q U E FA Z U M S O F T WA R E R U I M ?
• Bugs
• Difícil de usar
• Código difícil:
• De entender
• De estender
• De mudar
C O M O C R I A R
B O M
S O F T WA R E ?
“ C O M O
C O Z I N H A R
B E M ? ”
“ C O M A
B O A
C O M I D A ”
L I N U X
E X I S T E M B O N S E X E M P L O S D E S O F T WA R E ?
Sebastião Salgado
– R O B P I K E
“The heart of Unix philosophy is the idea that the
power of a system comes more from the
relationships among programs than from the
programs themselves.”
I M P O N D O L I M I T E S
• Passar o máximo de tempo possível na shell.
• Evitar root. Customizar pouco.
• Otimizar sempre.
E X E M P L O S
A N A LY T I C S
#!/bin/bash
[~/Apache] $ cat /var/log/apache2/access.log
220.181.108.101 - - [20/Jun/2012:19:31:01 +0200] "GET / HTTP/1.1" 200 912 "-" "Mozilla/5.0 (compatible;
Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
123.125.68.79 - - [20/Jun/2012:19:53:24 +0200] "GET / HTTP/1.1" 200 625 "-" "Mozilla/5.0 (compatible;
Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
178.154.210.252 - - [20/Jun/2012:19:54:10 +0200] "GET /?C=S;O=A HTTP/1.1" 200 663 "-" "Mozilla/5.0
(compatible; YandexBot/3.0; +http://yandex.com/bots)"
74.125.126.102 - - [20/Jun/2012:20:15:28 +0200] "GET / HTTP/1.1" 200 606 "http://www.google.com/url?
sa=t&rct=j&q=error&source=web&cd=1&ved=0CFAQFjAG&url=http%3A%2F%2Fwww.isrolab.com
%2F&ei=GxPiT5PsL4e04AHPtgE&usg=AFQjCNHnmjmdkUV584ORIpOXz7zAPX0UHQ" "Mozilla/4.0 (compatible; MSIE 7.0; Windows
NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET
CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
74.125.126.103 - - [20/Jun/2012:20:15:29 +0200] "GET /icons/blank.gif HTTP/1.1" 200 383 "http://
www.isrolab.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR
2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR
3.5.30729)"
74.125.126.93 - - [20/Jun/2012:20:15:29 +0200] "GET /icons/folder.gif HTTP/1.1" 200 460 "http://
www.isrolab.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR
2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR
3.5.30729)"
74.125.126.82 - - [20/Jun/2012:20:15:30 +0200] "GET /favicon.ico HTTP/1.1" 404 449 "-" "Mozilla/4.0
(compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR
3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"
184.82.92.239 - - [20/Jun/2012:21:03:44 +0200] "GET /logs/access.log HTTP/1.1" 200 2519 "http://isrolab.com/"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT
5.1; SV1) ; .NET CLR 3.5.30729)"
173.236.21.106 - - [20/Jun/2012:21:16:22 +0200] "GET /robots.txt HTTP/1.0" 404 488 "-" "Mozilla/5.0
(compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)"
173.236.21.106 - - [20/Jun/2012:21:16:23 +0200] "GET / HTTP/1.0" 200 621 "-" "Mozilla/5.0 (compatible;
MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)"
213.186.122.2 - - [20/Jun/2012:21:27:53 +0200] "GET /logs/?C=D;O=D HTTP/1.1" 200 658 "-" "Mozilla/5.0
(compatible; AhrefsBot/3.0; +http://ahrefs.com/robot/)"
66.249.72.65 - - [20/Jun/2012:21:28:00 +0200] "GET /robots.txt HTTP/1.1" 404 508 "-" "Mozilla/5.0 (compatible;
Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.72.65 - - [20/Jun/2012:21:28:00 +0200] "GET /logs/ HTTP/1.1" 200 723 "-" "Mozilla/5.0 (compatible;
Googlebot/2.1; +http://www.google.com/bot.html)"
123.125.71.44 - - [20/Jun/2012:21:38:57 +0200] "GET / HTTP/1.1" 200 913 "-" "Mozilla/5.0 (compatible;
Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
220.181.108.88 - - [20/Jun/2012:21:39:48 +0200] "GET / HTTP/1.1" 200 913 "-" "Mozilla/5.0 (compatible;
Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
178.154.210.252 - - [20/Jun/2012:21:45:12 +0200] "GET /logs/ HTTP/1.1" 200 728 "-" "Mozilla/5.0 (compatible;
YandexBot/3.0; +http://yandex.com/bots)"
139.18.2.209 - - [20/Jun/2012:22:31:43 +0200] "GET / HTTP/1.1" 200 912 "-" "findlinks/2.6 (+http://
wortschatz.uni-leipzig.de/findlinks/)"
#!/bin/bash
[~/Apache] $ wc -l access.log
65063 access.log
#!/bin/bash
[~/Apache] $ grep "HTTP/1.1" access.log | wc -l
52129
#!/bin/bash
[~/Apache] $ tail -n 1 access.log
192.210.213.91 - - [08/Jun/2014:19:42:34 -0700] "GET /logs/
access.log HTTP/1.1" 200 4663 "http://redlug.com/"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4)
AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5
Safari/536.30.1" "redlug.com"
#!/bin/bash
[~/Apache]$ head -n 1 access.log
1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET /
robots.txt HTTP/1.0" 404 492 "-" ""Mozilla/5.0"
#!/bin/bash
[~/Apache]$ head -n 1 access.log
1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET /
robots.txt HTTP/1.0" 404 492 "-" “"Mozilla/5.0"
#!/bin/bash
[~/Apache]$ head -n 1 access.log
1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET /
robots.txt HTTP/1.0" 404 492 "-" “"Mozilla/5.0"
[~/Apache]$ head -n 1 access.log | awk '{print $1}'
1.202.218.8
#!/bin/bash
[~/Apache]$ head -n 1 access.log
1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET /
robots.txt HTTP/1.0" 404 492 "-" “"Mozilla/5.0"
[~/Apache]$ head -n 1 access.log | awk '{print $1}'
1.202.218.8
[~/Apache]$ awk '/access.log/' access.log | awk '{print
$1}'
31.184.238.164
31.184.238.164
77.27.18.67
31.184.238.164
31.184.238.164
31.184.238.164
31.184.238.164
31.184.238.164
#!/bin/bash
[~/Apache] $ awk '/access.log/' access.log | 
awk '{print $1}' | 
sort | 
uniq -c | 
sort -r
#!/bin/bash
[~/Apache] $ awk '/access.log/' access.log | 
awk '{print $1}' | 
sort | 
uniq -c | 
sort -r
41 31.184.238.164
2 192.210.213.91
1 77.27.18.67
1 192.227.243.66
1 189.120.185.4
B R O W S E R U S E D
IE
1%
Chrome
39%
Firefox
60%
G I T
G I T T O W E R
M E U R E P O S I T Ó R I O
B R A N C H E S
L O G
C O M M I T
H A H A H A
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git log | wc -l
299 348
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git log | wc -l
299 348
[~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git log | wc -l
299 348
[~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git log | wc -l
299 348
[~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git log | wc -l
299 348
[~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git log | wc -l
299 348
[~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
[~/symfony] $ git branch
* 2.7
[~/symfony] $ git log | wc -l
299 348
[~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
[~/symfony] $ git log --format=%an | rank
10725 Fabien Potencier
1211 Bernhard Schussek
371 Tobias Schultze
[~/symfony] $ git config alias.author "log --format=%an"
[~/symfony] $ git config alias.author "log --format=%an"
[~/symfony] $ git author —since 2014-01-01 | rank
2444 Fabien Potencier
357 Nicolas Grekas
262 Bernhard Schussek
[~/symfony] $ cd ../zf2
[~/symfony] $ cd ../zf2
[~/zf2] $
[~/symfony] $ cd ../zf2
[~/zf2] $ git author | rank
7963 Matthew Weier O'Phinney
1647 Marco Pivetta
782 Maks3w
[~/zf2] $ git author --since 2014-01-01 | rank
1507 Marco Pivetta
1048 Matthew Weier O'Phinney
215 Abdul Malik Ikhsan
1 #!/usr/bin/env php
2 <?php
3 /**
4 * hdate (Human Date)
5 *
6 * Converts a human (relative) date to an specific date.
7 * Usage: hdate "+10 day"
11 */
12
13 $relativeDate = $argv[1];
14 $date = new DateTime($relativeDate);
15
16 echo $date->format('Y-m-d');
[~/zf2] $ git author --since `hdate -1year` | rank
1358 Marco Pivetta
564 Matthew Weier O'Phinney
132 Abdul Malik Ikhsan
E D I T O R
V O LTA N D O A O
T R A B A L H O
[~/zf2] $ git diff --name-only HEAD^
library/Zend/Db/Sql/AbstractSql.php
tests/ZendTest/Db/Sql/AbstractSqlTest.php
tests/ZendTest/Db/Sql/ExpressionTest.php
[~/zf2] $ git diff --name-only HEAD^
library/Zend/Db/Sql/AbstractSql.php
tests/ZendTest/Db/Sql/AbstractSqlTest.php
tests/ZendTest/Db/Sql/ExpressionTest.php
[~/zf2] $ vim `git diff --name-only HEAD^`
L I N T ?
< E S C > : ! P H P - L %
< E S C > : ! P H P - L %
N O R M A L M O D E
< E S C > : ! P H P - L %
C O M A N D O E X T E R N O
< E S C > : ! P H P - L %
O P Ç Ã O “ L I N T ” D O P H P
< E S C > : ! P H P - L %
C A M I N H O C O M P L E T O D O A R Q U I V O A T U A L
R O D A R U M T E S T E ?
C H E C A R E S T I L O ?
V E R Ú LT I M O S A U T O R E S ?
A D I C I O N A R N O G I T ?
T U D O I S S O C O M A L G U N S
P O U C O S P R I N C Í P I O S D E D E S I G N
P R I N C Í P I O S
• Tudo é um arquivo
• Tipo de Informação? Texto.
• Escopos diferentes? Quebra de linha.
• Cache? Nah.
• Erros? Yeah!
L I M I T E S S Ã O B O N S ?
C O N C L U S Ã O
Cartier Bresson
P E R G U N TA S ?
W Eugene Smith
H T T P : / / B I T. LY / G U G U - L I N D O
F O I B O M P R A V O C Ê ?

Weitere ähnliche Inhalte

Was ist angesagt?

Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees Kush Kulshrestha
 
Elementary data structure
Elementary data structureElementary data structure
Elementary data structureBiswajit Mandal
 
Resumo dos testes de convergência
Resumo dos testes de convergênciaResumo dos testes de convergência
Resumo dos testes de convergênciaPedro Neto
 
Busca tabu
Busca tabuBusca tabu
Busca tabuiaudesc
 
Matematica questões resolvidas i
Matematica questões resolvidas iMatematica questões resolvidas i
Matematica questões resolvidas icon_seguir
 
Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip. Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip. Hebert Chaves
 
Interpolação e Geoestatística - QGis, Geoda e R
Interpolação e Geoestatística - QGis, Geoda e RInterpolação e Geoestatística - QGis, Geoda e R
Interpolação e Geoestatística - QGis, Geoda e RVitor Vieira Vasconcelos
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 

Was ist angesagt? (12)

Text Classification
Text ClassificationText Classification
Text Classification
 
Lasso
LassoLasso
Lasso
 
Demonstrações
DemonstraçõesDemonstrações
Demonstrações
 
Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees Machine Learning Algorithm - Decision Trees
Machine Learning Algorithm - Decision Trees
 
Elementary data structure
Elementary data structureElementary data structure
Elementary data structure
 
Resumo dos testes de convergência
Resumo dos testes de convergênciaResumo dos testes de convergência
Resumo dos testes de convergência
 
Busca tabu
Busca tabuBusca tabu
Busca tabu
 
Matematica questões resolvidas i
Matematica questões resolvidas iMatematica questões resolvidas i
Matematica questões resolvidas i
 
Pesquisa de marketing online - Aula 2 - Aula de 26/03/2011
Pesquisa de marketing online - Aula 2 - Aula de 26/03/2011Pesquisa de marketing online - Aula 2 - Aula de 26/03/2011
Pesquisa de marketing online - Aula 2 - Aula de 26/03/2011
 
Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip. Ponte Levadiça e simulação de um protótip.
Ponte Levadiça e simulação de um protótip.
 
Interpolação e Geoestatística - QGis, Geoda e R
Interpolação e Geoestatística - QGis, Geoda e RInterpolação e Geoestatística - QGis, Geoda e R
Interpolação e Geoestatística - QGis, Geoda e R
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 

Ähnlich wie Porque VIM?

Edge trends mizuno-template
Edge trends mizuno-templateEdge trends mizuno-template
Edge trends mizuno-templateshintaro mizuno
 
Logstash for SEO: come monitorare i Log del Web Server in realtime
Logstash for SEO: come monitorare i Log del Web Server in realtimeLogstash for SEO: come monitorare i Log del Web Server in realtime
Logstash for SEO: come monitorare i Log del Web Server in realtimeAndrea Cardinale
 
Twas the night before Malware...
Twas the night before Malware...Twas the night before Malware...
Twas the night before Malware...DoktorMandrake
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basicsAbhay Sapru
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting BasicsDr.Ravi
 
Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境Yuriko IKEDA
 
DevLOVE ターミナル勉強会 zsh + screen
DevLOVE ターミナル勉強会 zsh + screenDevLOVE ターミナル勉強会 zsh + screen
DevLOVE ターミナル勉強会 zsh + screenYozo SATO
 
SLES11で構築するXen仮想化+HAクラスタ入門
SLES11で構築するXen仮想化+HAクラスタ入門SLES11で構築するXen仮想化+HAクラスタ入門
SLES11で構築するXen仮想化+HAクラスタ入門VirtualTech Japan Inc.
 
Version Control and Git - GitHub Workshop
Version Control and Git - GitHub WorkshopVersion Control and Git - GitHub Workshop
Version Control and Git - GitHub WorkshopAll Things Open
 
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Amazon Web Services
 
Noah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsNoah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsHeroku
 
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеТанки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеYandex
 
Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Augusto Pascutti
 
Piwik elasticsearch kibana at OSC Tokyo 2016 Spring
Piwik elasticsearch kibana at OSC Tokyo 2016 SpringPiwik elasticsearch kibana at OSC Tokyo 2016 Spring
Piwik elasticsearch kibana at OSC Tokyo 2016 SpringTakashi Yamamoto
 
From zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchFrom zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchRafał Kuć
 
From Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & ElasticsearchFrom Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & ElasticsearchSematext Group, Inc.
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Librariesjeresig
 

Ähnlich wie Porque VIM? (20)

Edge trends mizuno-template
Edge trends mizuno-templateEdge trends mizuno-template
Edge trends mizuno-template
 
Logstash for SEO: come monitorare i Log del Web Server in realtime
Logstash for SEO: come monitorare i Log del Web Server in realtimeLogstash for SEO: come monitorare i Log del Web Server in realtime
Logstash for SEO: come monitorare i Log del Web Server in realtime
 
Twas the night before Malware...
Twas the night before Malware...Twas the night before Malware...
Twas the night before Malware...
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting Basics
 
Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境Mac OS X Lion で作る WordPress local 環境
Mac OS X Lion で作る WordPress local 環境
 
DevLOVE ターミナル勉強会 zsh + screen
DevLOVE ターミナル勉強会 zsh + screenDevLOVE ターミナル勉強会 zsh + screen
DevLOVE ターミナル勉強会 zsh + screen
 
SLES11で構築するXen仮想化+HAクラスタ入門
SLES11で構築するXen仮想化+HAクラスタ入門SLES11で構築するXen仮想化+HAクラスタ入門
SLES11で構築するXen仮想化+HAクラスタ入門
 
Version Control and Git - GitHub Workshop
Version Control and Git - GitHub WorkshopVersion Control and Git - GitHub Workshop
Version Control and Git - GitHub Workshop
 
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
 
Noah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsNoah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku Secrets
 
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_ЯндексеТанки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
Танки_в_Лунапарке: нагрузочное_тестирование_в_Яндексе
 
Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.Logs: O que comem, onde vivem e como se reproduzem.
Logs: O que comem, onde vivem e como se reproduzem.
 
Malcon2017
Malcon2017Malcon2017
Malcon2017
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
Piwik elasticsearch kibana at OSC Tokyo 2016 Spring
Piwik elasticsearch kibana at OSC Tokyo 2016 SpringPiwik elasticsearch kibana at OSC Tokyo 2016 Spring
Piwik elasticsearch kibana at OSC Tokyo 2016 Spring
 
Gaelyk
GaelykGaelyk
Gaelyk
 
From zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchFrom zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and Elasticsearch
 
From Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & ElasticsearchFrom Zero to Hero - Centralized Logging with Logstash & Elasticsearch
From Zero to Hero - Centralized Logging with Logstash & Elasticsearch
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
 

Mehr von Augusto Pascutti

Melhorando sua API com DSLs
Melhorando sua API com DSLsMelhorando sua API com DSLs
Melhorando sua API com DSLsAugusto Pascutti
 
TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)Augusto Pascutti
 
Guia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidadeGuia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidadeAugusto Pascutti
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHPAugusto Pascutti
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven DevelopmentAugusto Pascutti
 
Como escalar aplicações PHP
Como escalar aplicações PHPComo escalar aplicações PHP
Como escalar aplicações PHPAugusto Pascutti
 
PHP - O que, porquê e como
PHP - O que, porquê e comoPHP - O que, porquê e como
PHP - O que, porquê e comoAugusto Pascutti
 
Testar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorTestar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorAugusto Pascutti
 
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!Augusto Pascutti
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Boas Práticas, Práticas !
Boas Práticas, Práticas !Boas Práticas, Práticas !
Boas Práticas, Práticas !Augusto Pascutti
 
Mão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na PráticaMão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na PráticaAugusto Pascutti
 

Mehr von Augusto Pascutti (20)

Errors
ErrorsErrors
Errors
 
Melhorando sua API com DSLs
Melhorando sua API com DSLsMelhorando sua API com DSLs
Melhorando sua API com DSLs
 
TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)TDD - Test Driven Development (em PHP)
TDD - Test Driven Development (em PHP)
 
Guia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidadeGuia do mochileiro para escalabilidade
Guia do mochileiro para escalabilidade
 
Falhando miseralvelmente com PHP
Falhando miseralvelmente com PHPFalhando miseralvelmente com PHP
Falhando miseralvelmente com PHP
 
SfCon: Test Driven Development
SfCon: Test Driven DevelopmentSfCon: Test Driven Development
SfCon: Test Driven Development
 
Orientação a objetos v2
Orientação a objetos v2Orientação a objetos v2
Orientação a objetos v2
 
Under engineer
Under engineerUnder engineer
Under engineer
 
Como escalar aplicações PHP
Como escalar aplicações PHPComo escalar aplicações PHP
Como escalar aplicações PHP
 
The small things
The small thingsThe small things
The small things
 
Somos jardineiros
Somos jardineirosSomos jardineiros
Somos jardineiros
 
PHP - O que, porquê e como
PHP - O que, porquê e comoPHP - O que, porquê e como
PHP - O que, porquê e como
 
Frameworks PHP
Frameworks PHPFrameworks PHP
Frameworks PHP
 
Testar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhorTestar é bom, integrar é ainda melhor
Testar é bom, integrar é ainda melhor
 
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
PHPSC Conference 2010 - Testar é bom, integrar é melhor ainda!
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Boas Práticas, Práticas !
Boas Práticas, Práticas !Boas Práticas, Práticas !
Boas Práticas, Práticas !
 
Mitos do PHP
Mitos do PHPMitos do PHP
Mitos do PHP
 
Mão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na PráticaMão na Massa: Orientação a Objetos na Prática
Mão na Massa: Orientação a Objetos na Prática
 

Kürzlich hochgeladen

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxalwaysnagaraju26
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 

Kürzlich hochgeladen (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 

Porque VIM?

  • 1. P O R Q U E V I M ? A U G U S T O PA S C U T T I Sebastião Salgado
  • 2. V O C Ê D E V E R I A U S A R V I M ?
  • 3. V O C Ê D E V E R I A U S A R V I M ? N Ã O
  • 4.
  • 5. B O M S O F T WA R E N O S S O O B J E T I V O É S E M P R E P R O D U Z I R : Edward Weston
  • 6. O Q U E É U M B O M S O F T WA R E ?
  • 7. O Q U E FA Z U M S O F T WA R E R U I M ? • Bugs • Difícil de usar • Código difícil: • De entender • De estender • De mudar
  • 8. C O M O C R I A R B O M S O F T WA R E ?
  • 9. “ C O M O C O Z I N H A R B E M ? ”
  • 10. “ C O M A B O A C O M I D A ”
  • 11. L I N U X E X I S T E M B O N S E X E M P L O S D E S O F T WA R E ? Sebastião Salgado
  • 12. – R O B P I K E “The heart of Unix philosophy is the idea that the power of a system comes more from the relationships among programs than from the programs themselves.”
  • 13. I M P O N D O L I M I T E S • Passar o máximo de tempo possível na shell. • Evitar root. Customizar pouco. • Otimizar sempre.
  • 14. E X E M P L O S
  • 15. A N A LY T I C S
  • 16. #!/bin/bash [~/Apache] $ cat /var/log/apache2/access.log
  • 17. 220.181.108.101 - - [20/Jun/2012:19:31:01 +0200] "GET / HTTP/1.1" 200 912 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 123.125.68.79 - - [20/Jun/2012:19:53:24 +0200] "GET / HTTP/1.1" 200 625 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 178.154.210.252 - - [20/Jun/2012:19:54:10 +0200] "GET /?C=S;O=A HTTP/1.1" 200 663 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 74.125.126.102 - - [20/Jun/2012:20:15:28 +0200] "GET / HTTP/1.1" 200 606 "http://www.google.com/url? sa=t&rct=j&q=error&source=web&cd=1&ved=0CFAQFjAG&url=http%3A%2F%2Fwww.isrolab.com %2F&ei=GxPiT5PsL4e04AHPtgE&usg=AFQjCNHnmjmdkUV584ORIpOXz7zAPX0UHQ" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 74.125.126.103 - - [20/Jun/2012:20:15:29 +0200] "GET /icons/blank.gif HTTP/1.1" 200 383 "http:// www.isrolab.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 74.125.126.93 - - [20/Jun/2012:20:15:29 +0200] "GET /icons/folder.gif HTTP/1.1" 200 460 "http:// www.isrolab.com/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 74.125.126.82 - - [20/Jun/2012:20:15:30 +0200] "GET /favicon.ico HTTP/1.1" 404 449 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" 184.82.92.239 - - [20/Jun/2012:21:03:44 +0200] "GET /logs/access.log HTTP/1.1" 200 2519 "http://isrolab.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.5.30729)" 173.236.21.106 - - [20/Jun/2012:21:16:22 +0200] "GET /robots.txt HTTP/1.0" 404 488 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)" 173.236.21.106 - - [20/Jun/2012:21:16:23 +0200] "GET / HTTP/1.0" 200 621 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.3; http://www.majestic12.co.uk/bot.php?+)" 213.186.122.2 - - [20/Jun/2012:21:27:53 +0200] "GET /logs/?C=D;O=D HTTP/1.1" 200 658 "-" "Mozilla/5.0 (compatible; AhrefsBot/3.0; +http://ahrefs.com/robot/)" 66.249.72.65 - - [20/Jun/2012:21:28:00 +0200] "GET /robots.txt HTTP/1.1" 404 508 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 66.249.72.65 - - [20/Jun/2012:21:28:00 +0200] "GET /logs/ HTTP/1.1" 200 723 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 123.125.71.44 - - [20/Jun/2012:21:38:57 +0200] "GET / HTTP/1.1" 200 913 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 220.181.108.88 - - [20/Jun/2012:21:39:48 +0200] "GET / HTTP/1.1" 200 913 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 178.154.210.252 - - [20/Jun/2012:21:45:12 +0200] "GET /logs/ HTTP/1.1" 200 728 "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)" 139.18.2.209 - - [20/Jun/2012:22:31:43 +0200] "GET / HTTP/1.1" 200 912 "-" "findlinks/2.6 (+http:// wortschatz.uni-leipzig.de/findlinks/)"
  • 18. #!/bin/bash [~/Apache] $ wc -l access.log 65063 access.log
  • 19. #!/bin/bash [~/Apache] $ grep "HTTP/1.1" access.log | wc -l 52129
  • 20. #!/bin/bash [~/Apache] $ tail -n 1 access.log 192.210.213.91 - - [08/Jun/2014:19:42:34 -0700] "GET /logs/ access.log HTTP/1.1" 200 4663 "http://redlug.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1" "redlug.com"
  • 21. #!/bin/bash [~/Apache]$ head -n 1 access.log 1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET / robots.txt HTTP/1.0" 404 492 "-" ""Mozilla/5.0"
  • 22. #!/bin/bash [~/Apache]$ head -n 1 access.log 1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET / robots.txt HTTP/1.0" 404 492 "-" “"Mozilla/5.0"
  • 23. #!/bin/bash [~/Apache]$ head -n 1 access.log 1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET / robots.txt HTTP/1.0" 404 492 "-" “"Mozilla/5.0" [~/Apache]$ head -n 1 access.log | awk '{print $1}' 1.202.218.8
  • 24. #!/bin/bash [~/Apache]$ head -n 1 access.log 1.202.218.8 - - [20/Jun/2012:19:05:12 +0200] "GET / robots.txt HTTP/1.0" 404 492 "-" “"Mozilla/5.0" [~/Apache]$ head -n 1 access.log | awk '{print $1}' 1.202.218.8 [~/Apache]$ awk '/access.log/' access.log | awk '{print $1}' 31.184.238.164 31.184.238.164 77.27.18.67 31.184.238.164 31.184.238.164 31.184.238.164 31.184.238.164 31.184.238.164
  • 25. #!/bin/bash [~/Apache] $ awk '/access.log/' access.log | awk '{print $1}' | sort | uniq -c | sort -r
  • 26. #!/bin/bash [~/Apache] $ awk '/access.log/' access.log | awk '{print $1}' | sort | uniq -c | sort -r 41 31.184.238.164 2 192.210.213.91 1 77.27.18.67 1 192.227.243.66 1 189.120.185.4
  • 27. B R O W S E R U S E D IE 1% Chrome 39% Firefox 60%
  • 28. G I T
  • 29. G I T T O W E R
  • 30. M E U R E P O S I T Ó R I O
  • 31. B R A N C H E S
  • 32. L O G
  • 33. C O M M I T
  • 34. H A H A H A
  • 35. [~/symfony] $ git branch * 2.7
  • 36. [~/symfony] $ git branch * 2.7 [~/symfony] $ git log | wc -l 299 348
  • 37. [~/symfony] $ git branch * 2.7 [~/symfony] $ git log | wc -l 299 348 [~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
  • 38. [~/symfony] $ git branch * 2.7 [~/symfony] $ git log | wc -l 299 348 [~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
  • 39. [~/symfony] $ git branch * 2.7 [~/symfony] $ git log | wc -l 299 348 [~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
  • 40. [~/symfony] $ git branch * 2.7 [~/symfony] $ git log | wc -l 299 348 [~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
  • 41. [~/symfony] $ git branch * 2.7 [~/symfony] $ git log | wc -l 299 348 [~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“
  • 42. [~/symfony] $ git branch * 2.7 [~/symfony] $ git log | wc -l 299 348 [~/symfony] $ alias rank="sort | uniq -c | sort -nr | head -n 3“ [~/symfony] $ git log --format=%an | rank 10725 Fabien Potencier 1211 Bernhard Schussek 371 Tobias Schultze
  • 43. [~/symfony] $ git config alias.author "log --format=%an"
  • 44. [~/symfony] $ git config alias.author "log --format=%an" [~/symfony] $ git author —since 2014-01-01 | rank 2444 Fabien Potencier 357 Nicolas Grekas 262 Bernhard Schussek
  • 45.
  • 46.
  • 48. [~/symfony] $ cd ../zf2 [~/zf2] $
  • 49. [~/symfony] $ cd ../zf2 [~/zf2] $ git author | rank 7963 Matthew Weier O'Phinney 1647 Marco Pivetta 782 Maks3w
  • 50.
  • 51. [~/zf2] $ git author --since 2014-01-01 | rank 1507 Marco Pivetta 1048 Matthew Weier O'Phinney 215 Abdul Malik Ikhsan
  • 52. 1 #!/usr/bin/env php 2 <?php 3 /** 4 * hdate (Human Date) 5 * 6 * Converts a human (relative) date to an specific date. 7 * Usage: hdate "+10 day" 11 */ 12 13 $relativeDate = $argv[1]; 14 $date = new DateTime($relativeDate); 15 16 echo $date->format('Y-m-d');
  • 53. [~/zf2] $ git author --since `hdate -1year` | rank 1358 Marco Pivetta 564 Matthew Weier O'Phinney 132 Abdul Malik Ikhsan
  • 54. E D I T O R
  • 55. V O LTA N D O A O T R A B A L H O
  • 56. [~/zf2] $ git diff --name-only HEAD^ library/Zend/Db/Sql/AbstractSql.php tests/ZendTest/Db/Sql/AbstractSqlTest.php tests/ZendTest/Db/Sql/ExpressionTest.php
  • 57. [~/zf2] $ git diff --name-only HEAD^ library/Zend/Db/Sql/AbstractSql.php tests/ZendTest/Db/Sql/AbstractSqlTest.php tests/ZendTest/Db/Sql/ExpressionTest.php [~/zf2] $ vim `git diff --name-only HEAD^`
  • 58. L I N T ?
  • 59. < E S C > : ! P H P - L %
  • 60. < E S C > : ! P H P - L % N O R M A L M O D E
  • 61. < E S C > : ! P H P - L % C O M A N D O E X T E R N O
  • 62. < E S C > : ! P H P - L % O P Ç Ã O “ L I N T ” D O P H P
  • 63. < E S C > : ! P H P - L % C A M I N H O C O M P L E T O D O A R Q U I V O A T U A L
  • 64. R O D A R U M T E S T E ?
  • 65. C H E C A R E S T I L O ?
  • 66. V E R Ú LT I M O S A U T O R E S ?
  • 67. A D I C I O N A R N O G I T ?
  • 68. T U D O I S S O C O M A L G U N S P O U C O S P R I N C Í P I O S D E D E S I G N
  • 69. P R I N C Í P I O S • Tudo é um arquivo • Tipo de Informação? Texto. • Escopos diferentes? Quebra de linha. • Cache? Nah. • Erros? Yeah!
  • 70. L I M I T E S S Ã O B O N S ? C O N C L U S Ã O Cartier Bresson
  • 71. P E R G U N TA S ? W Eugene Smith
  • 72. H T T P : / / B I T. LY / G U G U - L I N D O F O I B O M P R A V O C Ê ?