├── .gitignore
├── README.md
├── coding-dojo
├── 18032017
│ ├── dojo.py
│ └── test_dojo.py
├── 19112016
│ └── spec
│ │ ├── fizzbuzz_spec.rb
│ │ └── spec_helper.rb
├── 20052017
│ ├── source.py
│ └── source_test.py
└── .rspec
└── images
└── alda_rocha.png
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | env/
12 | build/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | *.egg-info/
24 | .installed.cfg
25 | *.egg
26 |
27 | # PyInstaller
28 | # Usually these files are written by a python script from a template
29 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
30 | *.manifest
31 | *.spec
32 |
33 | # Installer logs
34 | pip-log.txt
35 | pip-delete-this-directory.txt
36 |
37 | # Unit test / coverage reports
38 | htmlcov/
39 | .tox/
40 | .coverage
41 | .coverage.*
42 | .cache
43 | nosetests.xml
44 | coverage.xml
45 | *,cover
46 | .hypothesis/
47 |
48 | # Translations
49 | *.mo
50 | *.pot
51 |
52 | # Django stuff:
53 | *.log
54 | local_settings.py
55 |
56 | # Flask stuff:
57 | instance/
58 | .webassets-cache
59 |
60 | # Scrapy stuff:
61 | .scrapy
62 |
63 | # Sphinx documentation
64 | docs/_build/
65 |
66 | # PyBuilder
67 | target/
68 |
69 | # IPython Notebook
70 | .ipynb_checkpoints
71 |
72 | # pyenv
73 | .python-version
74 |
75 | # celery beat schedule file
76 | celerybeat-schedule
77 |
78 | # dotenv
79 | .env
80 |
81 | # virtualenv
82 | venv/
83 | ENV/
84 |
85 | # Spyder project settings
86 | .spyderproject
87 |
88 | # Rope project settings
89 | .ropeproject
90 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Meetup
2 | :loudspeaker: Apresentações e códigos apresentados e disponibilizados pelos palestrantes.
3 |
4 |
5 | 24 º Meetup Python BH - 23/07/2016
6 |
7 | Local: Guaja casa
8 |
9 | **Palestras:**
10 |
11 | [Não escale servidores, escale código!](http://slides.com/ervilis/nao-escale-servidores-escale-codigo#/)
12 |
13 | [Introdução ao Python](https://speakerdeck.com/cassiobotaro/introducao-ao-python)
14 |
15 | **Lightning talks**
16 |
17 | [Python Sudeste](http://pythonsudeste.org/)
18 |
19 | [Vim-Bootstrap](http://vim-bootstrap.com/)
20 |
21 | [Vimbook](https://github.com/cassiobotaro/vimbook)
22 |
23 | [exporters](https://github.com/scrapinghub/exporters)
24 |
25 | **Outros**
26 |
27 | [uvloop](https://github.com/MagicStack/uvloop)
28 |
29 |
30 |
31 |
32 | 25º Meetup Python BH & 10º Meetup Rails MG 21/08/2016
33 |
34 | Local: Outbound Market
35 |
36 | **Palestras:**
37 |
38 | [Relato das minhas experiências com Mapa mental](https://www.dropbox.com/s/41fzakqlxqvo728/MapaMental.exe?dl=0)
39 |
40 | [Introdução ao Phoenix framework](http://slides.com/arthurbragaalfredo/introducao-ao-phoenix-framework#/)
41 |
42 | [Usando GIT LFS (Large File Storage)](http://slides.com/jeanoliveirarodrigues/git-lfs#/)
43 |
44 | [React.js para pensar além do Ruby](http://www.slideshare.net/adimircolen/react-para-pensar-alm-do-ruby)
45 |
46 | **Lightning talks**
47 |
48 | [Python Sudeste](http://pythonsudeste.org/)
49 |
50 | [Vim-Bootstrap](http://vim-bootstrap.com/)
51 |
52 | [Vimbook](https://github.com/cassiobotaro/vimbook)
53 |
54 | Oportunidade para freelancer django - lucararruda @ gmail
55 |
56 | 
57 |
58 | [SPED Auditor](http://spedauditor.com.br)
59 |
60 | [Python Challenge](https://cassiobotaro.github.io/armadilha-de-nomes-em-variaveis-de-funcoes.html#armadilha-de-nomes-em-variaveis-de-funcoes)
61 |
62 | Tem startup em BH? - pedalmeilda @ gmail
63 |
64 |
65 |
66 |
67 | 26º Meetup Python BH & 11º Meetup Rails MG - 22/10/2016
68 |
69 | Local: Sede App Prova
70 |
71 | **Palestras:**
72 |
73 | [Dicas de Carreira para Desenvolvedores de Software](http://slides.com/andrealmar/dicas-carreira#/)
74 |
75 | [Programando Robôs de Negociação para Forex](https://www.dropbox.com/s/rhj3c8b3za3yr7j/Desenvolvendo%20Bots%20para%20Forex.ppsx?dl=0)
76 |
77 | [Tutorial Phoenix](https://speakerdeck.com/arthurbragaa/tutorial-phoenix-framework-v2)
78 |
79 | **Lightning talks**
80 |
81 | [Vim-Bootstrap](http://vim-bootstrap.com/)
82 |
83 | [APP Prova](http://appprova.com.br/)
84 |
85 | [Trailblazer](https://github.com/trailblazer/trailblazer)
86 |
87 | [XSloc](http://www.xsloc.com/)
88 |
89 | [Dojo Minas](https://slides.com/andrealmar/dojominas)
90 |
91 | [Python Brasil 2016](http://slides.com/ervilis/deck-3)
92 |
93 |
94 |
95 |
96 |
97 | 27 º Meetup Python BH & 12º Meetup Rails MG - 19/11/2016
98 |
99 | Local: Puc Minas
100 |
101 | **Palestras:**
102 |
103 | [Machine Learning com Anaconda](https://github.com/MarcusWiilo/Machine-Learning/tree/master/Machine%20Learning%20com%20Anaconda)
104 |
105 | [Um Python 3 para a todos governar](https://speakerdeck.com/cassiobotaro/27o-meetup-python-mg-and-12o-meetup-rails-mg)
106 |
107 | **Coding Dojo**
108 |
109 | [FizzBuzz Ruby](coding-dojo/19112016)
110 |
111 |
112 |
113 |
114 | 28 º Meetup Python BH & 13º Meetup Rails MG - 21/01/2017
115 |
116 | Local: BuscarID
117 |
118 | **Palestras:**
119 |
120 | [pytest](https://docs.google.com/presentation/d/1JA-qoXM4iNJ1b9O7Z-53SvdaODmDOE1QfpR3ygo2yVU)
121 |
122 | Minha Jornada do C ao Python
123 |
124 | **Coding Dojo**
125 |
126 | [TDD Ruby: Ano Bissexto](http://dojopuzzles.com/problemas/exibe/ano-bissexto/)
127 |
128 |
129 |
130 | 29º Meetup Python BH & 14º Meetup Rails MG - 11/02/2017
131 |
132 | Local: Thoughtworks
133 |
134 | **Palestras:**
135 |
136 | **Lightning talks**
137 |
138 |
139 |
140 | 30º Meetup Python BH & 15º Meetup Rails MG - 18/03/2017
141 |
142 | Local: AppProva
143 |
144 | **Palestras:**
145 |
146 | [from python import gopher](https://goo.gl/7aWV9f)
147 |
148 | [apartament 101]()
149 |
150 | **Lightning talks**
151 |
152 | [FAZ makerspace](http://fazmakerspace.com.br/)
153 |
154 | [Instagram Faz](https://www.instagram.com/fazmakerspace/)
155 |
156 | [vim-bootstrap slides](https://speakerdeck.com/cassiobotaro/vim-bootstrap)
157 |
158 | [vim-bootstrap site](http://vim-bootstrap.com/)
159 |
160 | [Same content. Diferent words.](https://speakerdeck.com/tmylk/same-content-different-words)
161 |
162 | [Linode](https://www.linode.com/)
163 |
164 | [AWS](https://aws.amazon.com/pt/)
165 |
166 | [Embratel cloud](http://portal.embratel.com.br/cloud/index.php)
167 |
168 | [Cloud at cost](http://cloudatcost.com/)
169 |
170 | [Digital Ocean](https://www.digitalocean.com/)
171 |
172 | **Coding Dojo**
173 |
174 | [FizzBuzz Python](coding-dojo/18032017)
175 |
176 |
177 |
178 | 31º Meetup Python BH & 16º Meetup Rails MG - 20/05/2017
179 |
180 | Local: AppProva
181 |
182 | **Palestras:**
183 |
184 | [Não é apenas Futebol](https://github.com/cassiobotaro/sentibol/blob/master/nao_apenas_futebol.pdf)
185 |
186 | [Ruby vs Python](https://speakerdeck.com/lucasarruda/ruby-ou-python)
187 |
188 | **Lightning talks**
189 |
190 | [Python Brasil 2017](http://2017.pythonbrasil.org.br/)
191 |
192 | [Dojo Minas](http://dojominas.org/)
193 |
194 | [Open source](https://github.com/)
195 |
196 | [AppProva](http://appprova.com.br/)
197 |
198 | [click](http://click.pocoo.org/5/)
199 |
200 | [dotenv](https://github.com/theskumar/python-dotenv)
201 |
202 | [honcho](https://github.com/nickstenning/honcho)
203 |
204 | **Coding Dojo**
205 |
206 | [pizza](coding-dojo/20052017)
207 |
208 |
209 |
210 |
211 | 32º Meetup Python BH - 17/06/2017
212 |
213 | Local: Tivit
214 |
215 | **Palestras:**
216 |
217 | [Git Workflow - Uma modelagem de sucesso](http://nvie.com/posts/a-successful-git-branching-model/)
218 |
219 | [Startups, do Insight ao "unicórnio", como uma startup funciona]()
220 |
221 | **Lightning talks**
222 |
223 | [Python Brasil 13](http://2017.pythonbrasil.org.br/)
224 |
225 | [Tivit](https://tivit.com/)
226 |
227 | [Não seja esse cara](https://github.com/avelino/awesome-go/pull/950)
228 |
229 | [libcloud](https://libcloud.apache.org/)
230 |
231 | [One Cloud](https://onecloudportal.com.br/)
232 |
233 | [Lean Startup](https://www.amazon.com.br/dp/0989200507/ref=asc_df_09892005075028114?smid=A1ZZFT5FULY4LN&tag=goog0ef-20&linkCode=asn&creative=380341&creativeASIN=0989200507)
234 | [Zenhub](https://www.zenhub.com/)
235 |
236 | [Aurelia](http://aurelia.io/)
237 |
238 | [AppRunner](http://apprunner.cloud/)
239 |
240 | [Steem](https://steem.io/)
241 |
242 | [Glassdoor](https://www.glassdoor.com/index.htm)
243 |
244 | [Asciinema](https://asciinema.org/)
245 |
246 | [Quorum](https://www.jpmorgan.com/country/BR/pt/Quorum)
247 |
248 | [IPFS](https://ipfs.io/)
249 |
250 | [Sia Tech](http://sia.tech/)
251 |
252 | [Storj](https://storj.io/)
253 |
254 |
255 |
--------------------------------------------------------------------------------
/coding-dojo/.rspec:
--------------------------------------------------------------------------------
1 | --color
2 | --require spec_helper
3 |
--------------------------------------------------------------------------------
/coding-dojo/18032017/dojo.py:
--------------------------------------------------------------------------------
1 | def FizzBuzz(numero):
2 | initial = ""
3 |
4 | if numero % 3 == 0:
5 | initial += "Fizz"
6 |
7 | if numero % 5 == 0:
8 | initial += "Buzz"
9 |
10 | return initial or str(numero)
11 |
12 | def FizzBuzzList(n):
13 | return [FizzBuzz(i) for i in range(1, n + 1)]
14 |
--------------------------------------------------------------------------------
/coding-dojo/18032017/test_dojo.py:
--------------------------------------------------------------------------------
1 | """
2 |
3 | Neste problema, você deverá exibir uma lista de 1 a 100, um em cada linha, com as seguintes exceções:
4 | Números divisíveis por 3 deve aparecer como 'Fizz' ao invés do número;
5 | Números divisíveis por 5 devem aparecer como 'Buzz' ao invés do número;
6 | Números divisíveis por 3 e 5 devem aparecer como 'FizzBuzz' ao invés do número'.
7 | """
8 | from dojo import FizzBuzz, FizzBuzzList
9 |
10 | def test_number_3():
11 | assert FizzBuzz(3) == "Fizz"
12 |
13 | def test_number_5():
14 | assert FizzBuzz(5) == "Buzz"
15 |
16 | def test_number_15():
17 | assert FizzBuzz(15) == "FizzBuzz"
18 |
19 | def test_number_6():
20 | assert FizzBuzz(6) == "Fizz"
21 |
22 | def test_number_10():
23 | assert FizzBuzz(10) == "Buzz"
24 |
25 | def test_number_30():
26 | assert FizzBuzz(30) == "FizzBuzz"
27 |
28 | def test_number_59():
29 | assert FizzBuzz(59) == "59"
30 |
31 | def test_list_at_5():
32 | assert FizzBuzzList(5) == ["1", "2", "Fizz", "4", "Buzz"]
33 |
34 | def test_list_at_15():
35 | assert FizzBuzzList(15) == ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"]
--------------------------------------------------------------------------------
/coding-dojo/19112016/spec/fizzbuzz_spec.rb:
--------------------------------------------------------------------------------
1 | require 'spec_helper'
2 | require 'fizzbuzz'
3 |
4 | RSpec.describe 'FizzBuzz' do
5 | it "Se a classe FizzBuzz existe" do
6 | fizzBuzz = FizzBuzz.new
7 | expect(fizzBuzz.class == FizzBuzz).to eq true
8 | end
9 |
10 | it "FizzBuzz de 1 retorna 1" do
11 | fizzBuzz = FizzBuzz.new
12 | expect(fizzBuzz.fizz_buzz(1)).to eq [1]
13 | end
14 |
15 | it "FizzBuzz de 3 retorna 1 2 fizz" do
16 | fizzBuzz = FizzBuzz.new
17 | expect(fizzBuzz.fizz_buzz(3)).to eq [1,2,"fizz"]
18 | end
19 | it "FizzBuzz de 5 retorna 1 2 fizz 4 buzz" do
20 | fizzBuzz = FizzBuzz.new
21 | expect(fizzBuzz.fizz_buzz(5)).to eq [1,2,"fizz",4,"buzz"]
22 | end
23 | it "FizzBuzz de 15 retorna array com fizz buzz e fizzbuzz" do
24 | fizzBuzz = FizzBuzz.new
25 | arr = fizzBuzz.fizz_buzz(15)
26 | p arr
27 | expect(arr.include?("fizzbuzz"))
28 | end
29 |
30 | end
31 |
--------------------------------------------------------------------------------
/coding-dojo/19112016/spec/spec_helper.rb:
--------------------------------------------------------------------------------
1 | # This file was generated by the `rspec --init` command. Conventionally, all
2 | # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3 | # The generated `.rspec` file contains `--require spec_helper` which will cause
4 | # this file to always be loaded, without a need to explicitly require it in any
5 | # files.
6 | #
7 | # Given that it is always loaded, you are encouraged to keep this file as
8 | # light-weight as possible. Requiring heavyweight dependencies from this file
9 | # will add to the boot time of your test suite on EVERY test run, even for an
10 | # individual file that may not need all of that loaded. Instead, consider making
11 | # a separate helper file that requires the additional dependencies and performs
12 | # the additional setup, and require it from the spec files that actually need
13 | # it.
14 | #
15 | # The `.rspec` file also contains a few flags that are not defaults but that
16 | # users commonly want.
17 | #
18 | # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
19 | RSpec.configure do |config|
20 | # rspec-expectations config goes here. You can use an alternate
21 | # assertion/expectation library such as wrong or the stdlib/minitest
22 | # assertions if you prefer.
23 | config.expect_with :rspec do |expectations|
24 | # This option will default to `true` in RSpec 4. It makes the `description`
25 | # and `failure_message` of custom matchers include text for helper methods
26 | # defined using `chain`, e.g.:
27 | # be_bigger_than(2).and_smaller_than(4).description
28 | # # => "be bigger than 2 and smaller than 4"
29 | # ...rather than:
30 | # # => "be bigger than 2"
31 | expectations.include_chain_clauses_in_custom_matcher_descriptions = true
32 | end
33 |
34 | # rspec-mocks config goes here. You can use an alternate test double
35 | # library (such as bogus or mocha) by changing the `mock_with` option here.
36 | config.mock_with :rspec do |mocks|
37 | # Prevents you from mocking or stubbing a method that does not exist on
38 | # a real object. This is generally recommended, and will default to
39 | # `true` in RSpec 4.
40 | mocks.verify_partial_doubles = true
41 | end
42 |
43 | # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
44 | # have no way to turn it off -- the option exists only for backwards
45 | # compatibility in RSpec 3). It causes shared context metadata to be
46 | # inherited by the metadata hash of host groups and examples, rather than
47 | # triggering implicit auto-inclusion in groups with matching metadata.
48 | config.shared_context_metadata_behavior = :apply_to_host_groups
49 |
50 | # The settings below are suggested to provide a good initial experience
51 | # with RSpec, but feel free to customize to your heart's content.
52 | =begin
53 | # This allows you to limit a spec run to individual examples or groups
54 | # you care about by tagging them with `:focus` metadata. When nothing
55 | # is tagged with `:focus`, all examples get run. RSpec also provides
56 | # aliases for `it`, `describe`, and `context` that include `:focus`
57 | # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
58 | config.filter_run_when_matching :focus
59 |
60 | # Allows RSpec to persist some state between runs in order to support
61 | # the `--only-failures` and `--next-failure` CLI options. We recommend
62 | # you configure your source control system to ignore this file.
63 | config.example_status_persistence_file_path = "spec/examples.txt"
64 |
65 | # Limits the available syntax to the non-monkey patched syntax that is
66 | # recommended. For more details, see:
67 | # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
68 | # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
69 | # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
70 | config.disable_monkey_patching!
71 |
72 | # This setting enables warnings. It's recommended, but in some cases may
73 | # be too noisy due to issues in dependencies.
74 | config.warnings = true
75 |
76 | # Many RSpec users commonly either run the entire suite or an individual
77 | # file, and it's useful to allow more verbose output when running an
78 | # individual spec file.
79 | if config.files_to_run.one?
80 | # Use the documentation formatter for detailed output,
81 | # unless a formatter has already been configured
82 | # (e.g. via a command-line flag).
83 | config.default_formatter = 'doc'
84 | end
85 |
86 | # Print the 10 slowest examples and example groups at the
87 | # end of the spec run, to help surface which specs are running
88 | # particularly slow.
89 | config.profile_examples = 10
90 |
91 | # Run specs in random order to surface order dependencies. If you find an
92 | # order dependency and want to debug it, you can fix the order by providing
93 | # the seed, which is printed after each run.
94 | # --seed 1234
95 | config.order = :random
96 |
97 | # Seed global randomization in this process using the `--seed` CLI option.
98 | # Setting this allows you to use `--seed` to deterministically reproduce
99 | # test failures related to randomization by passing the same `--seed` value
100 | # as the one that triggered the failure.
101 | Kernel.srand config.seed
102 | =end
103 | end
104 |
--------------------------------------------------------------------------------
/coding-dojo/20052017/source.py:
--------------------------------------------------------------------------------
1 | # Para cada sabor de pizza disponível,
2 | # cada um deve indicar uma nota para ele
3 | # (nota 1, se a pessoa detesta o sabor e nota 5 se a
4 | # pessoa adora o sabor).
5 | # Depois de processar esses dados,
6 | # cada pessoa vai saber quais as pessoas que
7 | # tem o gosto mais parecido que o seu
8 | # (e que provavelmente irá dividir uma pizza com você).
9 | # Marguerita - Quatro queijos - Escarola
10 | # Portuguesa - Frango+Catupiry - Napolitana
11 |
12 | # FUNCIONARIOS = {
13 | # CLAUDIO : {Marguerita: 1, Quatro_Queijos: 3}
14 | # CÁSSIO : {Marguerita: 5, Quatro_Queijos: 2}
15 | # ANDRE : {Marguerita: 4, Quatro_Queijos: 1}
16 |
17 | # }
18 |
19 | # ANFITRIAO : {Marguerita: 4, Quatro_Queijos: 2}
20 | # RETORNO =NOME DE UM DOS FUNCIONARIOS
21 | def verifica_perfil(anfitriao, funcionarios):
22 | valor = anfitriao["Marguerita"]
23 | menor_diferenca = 6
24 | func = null
25 | for key,val in funcionarios.items():
26 | if key == "Marguerita" #val < menor_diferenca:
27 | #funcmenor_diferenca = val
28 | #func = primeiro
29 |
30 | # =)
31 |
32 | # - pessoas novas++
33 | # - testes+
34 | # - boas praticas
35 | # - brainstorming
36 | # - trabalho em equipe+
37 | # - pytest++
38 | # - python
39 | # - participação+
40 |
41 | # =(
42 |
43 | # - não resolveu o problema
44 | # - mais tempo pro dojo++
45 | # - juiz pra controlar o tempo
46 | # - problema++
47 | # - mais tempo pra discutir o problema
48 |
--------------------------------------------------------------------------------
/coding-dojo/20052017/source_test.py:
--------------------------------------------------------------------------------
1 | # Para cada sabor de pizza disponível,
2 | # cada um deve indicar uma nota para ele
3 | # (nota 1, se a pessoa detesta o sabor e nota 5 se a
4 | # pessoa adora o sabor).
5 | # Depois de processar esses dados,
6 | # cada pessoa vai saber quais as pessoas que
7 | # tem o gosto mais parecido que o seu
8 | # (e que provavelmente irá dividir uma pizza com você).
9 | # Marguerita - Quatro queijos - Escarola
10 | # Portuguesa - Frango+Catupiry - Napolitana
11 |
12 | # FUNCIONARIOS = {
13 | # CLAUDIO : {Marguerita: 1, Quatro_Queijos: 3}
14 | # CÁSSIO : {Marguerita: 5, Quatro_Queijos: 2}
15 | # ANDRE : {Marguerita: 4, Quatro_Queijos: 1}
16 | # }
17 |
18 | # ANFITRIAO : {Marguerita: 4, Quatro_Queijos: 2}
19 | # RETORNO =NOME DE UM DOS FUNCIONARIOS
20 | from source import verifica_perfil
21 |
22 |
23 |
24 |
25 |
26 | def test_verificar_perfil_marguerita():
27 | ANFITRIAO = {"Marguerita": 4}
28 | FUNCIONARIOS = {
29 | "CLAUDIO" : {"Marguerita": 1},
30 | "CÁSSIO" : {"Marguerita": 5},
31 | # "ANDRE" : {"Marguerita": 4, "Quatro_Queijos": 1}
32 | }
33 | assert verifica_perfil(ANFITRIAO, FUNCIONARIOS) == "CÁSSIO"
34 |
35 |
--------------------------------------------------------------------------------
/images/alda_rocha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pythonmg/meetup/fc4105f88a21ff67e6e94ad89ec0d33dc38f340d/images/alda_rocha.png
--------------------------------------------------------------------------------