Mudanças entre as edições de "Garoa Gophers"
(31 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
[[Arquivo:Garoa-gopher.png|160px|right]] |
[[Arquivo:Garoa-gopher.png|160px|right]] |
||
− | '''Garoa Gophers''' é o [[grupo de estudos]] da linguagem de |
+ | '''Garoa Gophers''' é o [[grupo de estudos]] da linguagem de programação '''Go''' no Garoa Hacker Clube. |
== Formato == |
== Formato == |
||
− | Encontros |
+ | Encontros semanais às 3as-feiras, 19:30, na [[sede]] do Garoa Hacker Clube, a partir de 4/ago/2015. |
== Temas == |
== Temas == |
||
Linha 12: | Linha 12: | ||
=== 1º encontro: Hello World === |
=== 1º encontro: Hello World === |
||
− | |||
⚫ | |||
* Experimentar as diferentes formas de rodar um programa, gerando um binário da forma convencional ou usando <code>gorun</code> como se fosse uma linguagem de scripting. Vamos experimentar também outras ferramentas de linha de comando, tipo <code>gofmt</code> etc. |
* Experimentar as diferentes formas de rodar um programa, gerando um binário da forma convencional ou usando <code>gorun</code> como se fosse uma linguagem de scripting. Vamos experimentar também outras ferramentas de linha de comando, tipo <code>gofmt</code> etc. |
||
+ | ** Fizemos experimentos e melhorias nos exemplos de download de imagens: https://github.com/garoago/flags |
||
+ | ** Aprendemos que é necessário setar <code>$GOBIN</code> para compilar individualmente cada programa quando existem vários programas com <code>package main</code> no mesmo diretório (isso não é recomendado em código "profissional", mas para experimentos rápidos é útil poder ter vários programas no mesmo package) |
||
* Discutir as referências existentes para estudar, e definir um plano para os próximos encontros. |
* Discutir as referências existentes para estudar, e definir um plano para os próximos encontros. |
||
+ | ** Resolvemos fazer encontros semanais enquanto estamos começando, e depois rediscutir a periodicidade se for o caso. |
||
=== 2º encontro: A Tour of Go === |
=== 2º encontro: A Tour of Go === |
||
− | * Assistir e discutir o vídeo de Russ Cox, [https://www.youtube.com/watch?v=ytEkHepK08c A Tour of Go] (34 min.) |
+ | * <strike>Assistir e discutir o vídeo de Russ Cox, [https://www.youtube.com/watch?v=ytEkHepK08c A Tour of Go] (34 min.)</strike> |
+ | * <strike>Estudar os tipos básicos da linguagem, com foco em como cada tipo é alocado em memória e associado a variáveis: como valores, ou como referências. Ver [https://groups.google.com/d/msg/golang-nuts/xQUsmdo6oSs/RJ8SF4NsbowJ essa discussão]. Qual a melhor explicação correta e clara para essas questões?</strike> |
||
+ | * <strike>Implementar checagem de erro robusta em uma nova versão do programa de download de imagens.</strike> |
||
+ | |||
+ | Não fizemos nada do que planejamos, mas fizemos algo mais legal: começamos a desenvolver o [https://github.com/garoago/runefinder runefinder] na base do rodízio (cada um 10 minutos no teclado, como se fosse um coding dojo). |
||
+ | |||
+ | === 3º encontro: Continuação do runefinder === |
||
+ | |||
+ | Repositório de código: [https://github.com/garoago/runefinder2 runefinder2] |
||
+ | |||
+ | * [https://github.com/andrewsmedina Andrews Medina] mostrou como usar o <code>[https://labix.org/gocheck gocheck]</code> |
||
+ | * criamos alguns tipos próprios, com métodos: <code>RuneSlice</code> e <code>RuneSet</code> |
||
+ | * implementamos a busca com várias palavras |
||
+ | |||
+ | === 4º encontro: Estudo de caso - Tsuru === |
||
+ | |||
+ | [https://github.com/andrewsmedina Andrews Medina] vai falar sobre o projeto [https://tsuru.io/ Tsuru], um PaaS Open Source, extensível, escrito em Go, criado pelo time do Andrews na Globo.com e usado em grandes operações além da própria Globo.com. |
||
+ | |||
+ | === 5º encontro: Como aprender Go ou qualquer outra linguagem === |
||
+ | |||
+ | Vamos experimentar a [https://speakerdeck.com/ramalho/como-aprender-qualquer-linguagem-de-programacao-em-4-slides metodologia do prof. Gerald Sussman] do MIT, junto com [https://blog.golang.org/examples Testable Examples] para estudar Go, fazendo a ponte entre o [https://tour.golang.org/welcome/1 Tutorial] de alto nível, as idéias de [https://golang.org/doc/effective_go.html Effective Go] e as minúcias da [https://golang.org/ref/spec Language Specification]. |
||
+ | |||
+ | ;Repositório |
||
+ | : https://github.com/garoago/nanolab |
||
+ | ;Quando |
||
+ | : Terça-feira, 29/set/2015, 19:30 |
||
+ | |||
+ | === 6º encontro: Runefinder na rede === |
||
+ | |||
+ | * salvar índice invertido como uma slice de mapas (nosso tipo <code>RuneSet</code>), para simplificar o código da função <code>findRunes</code> que é usada mais vezes que a <code>buildIndex</code> (feito por LR, em casa) |
||
+ | * salvar índice invertido e mapa de nomes em um arquivo gob para evitar ler o UnicodeData.txt toda vez -- se bem que está bem rapidinho da forma atual (feito por LR, em casa) |
||
+ | * refatorar para uma biblioteca e então... |
||
+ | * implementar interface telnet |
||
+ | * implementar interface Web |
||
+ | |||
+ | ;Repositório |
||
+ | : https://github.com/garoago/runefinder2 |
||
+ | ;Quando |
||
+ | : Terça-feira, 6 de outubro, 19:30 |
||
== Pré-requisitos == |
== Pré-requisitos == |
||
− | Saber programar em alguma linguagem |
+ | * Saber programar em alguma linguagem. |
+ | |||
+ | * Ter vontade de aprender Go com autonomia e o apoio de um grupo. |
||
+ | |||
⚫ | |||
+ | |||
== Como participar == |
== Como participar == |
||
− | Basta aparecer. Não precisa se inscrever. |
+ | Basta aparecer na [[sede]] do Garoa. Não precisa se inscrever. |
== Referências == |
== Referências == |
||
− | * Organização coletiva no Github para colocar exemplos: https://github.com/ |
+ | * Organização coletiva no Github para colocar exemplos: https://github.com/garoago |
* Material de estudos e exemplos: https://github.com/gobridge |
* Material de estudos e exemplos: https://github.com/gobridge |
Edição atual tal como às 13h28min de 4 de outubro de 2015
Garoa Gophers é o grupo de estudos da linguagem de programação Go no Garoa Hacker Clube.
Formato
Encontros semanais às 3as-feiras, 19:30, na sede do Garoa Hacker Clube, a partir de 4/ago/2015.
Temas
A serem decididos pelos participantes...
1º encontro: Hello World
- Experimentar as diferentes formas de rodar um programa, gerando um binário da forma convencional ou usando
gorun
como se fosse uma linguagem de scripting. Vamos experimentar também outras ferramentas de linha de comando, tipogofmt
etc.- Fizemos experimentos e melhorias nos exemplos de download de imagens: https://github.com/garoago/flags
- Aprendemos que é necessário setar
$GOBIN
para compilar individualmente cada programa quando existem vários programas compackage main
no mesmo diretório (isso não é recomendado em código "profissional", mas para experimentos rápidos é útil poder ter vários programas no mesmo package)
- Discutir as referências existentes para estudar, e definir um plano para os próximos encontros.
- Resolvemos fazer encontros semanais enquanto estamos começando, e depois rediscutir a periodicidade se for o caso.
2º encontro: A Tour of Go
Assistir e discutir o vídeo de Russ Cox, A Tour of Go (34 min.)Estudar os tipos básicos da linguagem, com foco em como cada tipo é alocado em memória e associado a variáveis: como valores, ou como referências. Ver essa discussão. Qual a melhor explicação correta e clara para essas questões?Implementar checagem de erro robusta em uma nova versão do programa de download de imagens.
Não fizemos nada do que planejamos, mas fizemos algo mais legal: começamos a desenvolver o runefinder na base do rodízio (cada um 10 minutos no teclado, como se fosse um coding dojo).
3º encontro: Continuação do runefinder
Repositório de código: runefinder2
- Andrews Medina mostrou como usar o
gocheck
- criamos alguns tipos próprios, com métodos:
RuneSlice
eRuneSet
- implementamos a busca com várias palavras
4º encontro: Estudo de caso - Tsuru
Andrews Medina vai falar sobre o projeto Tsuru, um PaaS Open Source, extensível, escrito em Go, criado pelo time do Andrews na Globo.com e usado em grandes operações além da própria Globo.com.
5º encontro: Como aprender Go ou qualquer outra linguagem
Vamos experimentar a metodologia do prof. Gerald Sussman do MIT, junto com Testable Examples para estudar Go, fazendo a ponte entre o Tutorial de alto nível, as idéias de Effective Go e as minúcias da Language Specification.
- Repositório
- https://github.com/garoago/nanolab
- Quando
- Terça-feira, 29/set/2015, 19:30
6º encontro: Runefinder na rede
- salvar índice invertido como uma slice de mapas (nosso tipo
RuneSet
), para simplificar o código da funçãofindRunes
que é usada mais vezes que abuildIndex
(feito por LR, em casa) - salvar índice invertido e mapa de nomes em um arquivo gob para evitar ler o UnicodeData.txt toda vez -- se bem que está bem rapidinho da forma atual (feito por LR, em casa)
- refatorar para uma biblioteca e então...
- implementar interface telnet
- implementar interface Web
- Repositório
- https://github.com/garoago/runefinder2
- Quando
- Terça-feira, 6 de outubro, 19:30
Pré-requisitos
- Saber programar em alguma linguagem.
- Ter vontade de aprender Go com autonomia e o apoio de um grupo.
- Se quiser colocar a mão na massa, trazer notebook com o compilador Go instalado e seu editor favorito configurado. Veja Golang/Ambiente de trabalho.
Como participar
Basta aparecer na sede do Garoa. Não precisa se inscrever.
Referências
- Organização coletiva no Github para colocar exemplos: https://github.com/garoago
- Material de estudos e exemplos: https://github.com/gobridge