Golang: различия между версиями

Материал из Artem Aleksashkin's Wiki
Перейти к навигации Перейти к поиску
Нет описания правки
Нет описания правки
 
(не показаны 44 промежуточные версии этого же участника)
Строка 1: Строка 1:
* https://golang.org/doc/install
* [https://golang.org/doc/install Установка]
* [https://go-tour-ru-ru.appspot.com/welcome/1 Тур на русском]
* [https://habr.com/ru/post/249545/ GOPATH и GOROOT]
* http://golang-book.ru/
* https://gobyexample.com/
* https://www.golangprograms.com/
* https://awesome-go.com/
* [https://habr.com/ru/articles/654569/ Собеседование Golang разработчика (теоретические вопросы), Часть I]
** [https://habr.com/ru/companies/nixys/articles/492056/ 4 примера iota-перечислений]
* [https://habr.com/ru/articles/670974/ Собеседование Golang разработчика (теоретические вопросы), Часть II. Что там с конкурентностью?]
** [https://gobyexample.com/waitgroups Go by Example: WaitGroups]
* Книга 100 ошибок Go и как их избежать ISBN:978-5-4461-2058-1
* [https://habr.com/ru/articles/490336/ Анатомия каналов в Go]
* [https://dzen.ru/a/ZT37Gzpya2uEvz9L #3 Аксиомы каналов в Go]
* [https://habr.com/ru/articles/743266/ Про планировщик] P, M, G
* [https://habr.com/ru/articles/457728/ Про MAP]
* [https://www.youtube.com/watch?v=eOyxRI8FQm4 Вопрос по Golang на миллион долларов]
* [https://www.youtube.com/watch?v=10LW7NROfOQ GoLang Slice в деталях, простым языком]
* [https://www.youtube.com/watch?v=P_SXTUiA-9Y Как на самом деле устроен тип Map в Golang? | Golang под капотом]
* [https://www.youtube.com/watch?v=ZTJcaP4G4JM Как на самом деле устроены каналы в Golang? | Golang channels internals]
* https://gobyexample.com/generics
* https://go.dev/doc/tutorial/generics


[[File:golang-developer-roadmap.png|400px]]
= Roadmap =
 
* '''Go'''
** GO CLI
** Variables, Constants, Types, Function, Packages, etc
** Array & Slices
** Pointers, Structures, Methods
** Interface
** GoRutine, Channel, Buffer, Select, Mutex
** Defer, Error, Panic, Recover
 
* '''Go Modules'''
** Learn Go dependecy management tool
** semantic versioning
** Version, scripts and other Properties
 
* '''SQL fundamentals'''
** Basic Sql Syntax
 
* '''General Development Skills'''
** GIT
** HTTP/HTTPS
** Data Structures and Algorithms
** Scrum, Kanban or other project strategies
** Basic Authentication, OAuth, JWT, etc
** SOLID, YAGNI, KISS
 
* '''CLI'''
** cobra
** urfave/cli
 
* '''Web Frameworks + Routers'''
** Echo
** Beego
** Gin
** Revel
** Chi
 
* '''ORMs'''
** Gorm
** Xorm
 
* '''Databases'''
** Relational
*** PostgreSQL
*** MySQL
*** SQL Server
*** CockrachDB
*** MariaDB
** NoSQL
*** MongoDB
*** Redis
*** Apache Cassandra
*** RavenDB
*** CouchDB
** Search Engines
*** ElasticSearch
*** Solr
*** Sphinx
** Cloud Databases
*** Azure CosmosDB
*** Amazon DynamoDB
 
* '''Caching'''
** GCache
** Distributed Cache
*** Go-Redis
*** GoMemcache
 
* '''Logging'''
** Log Frameworks
*** Zap
*** Logrus
*** ZeroLog
** Distributed Tracing
*** Jaeger
** Log Management System
*** Sentry.io
*** loggly.com
 
* '''Real-Time Communication'''
** Melody
** Centrifugo
 
* '''API Clients'''
** REST
*** Gentelman
*** GRequests
*** Heimdail
** GraphQL
*** gqlgen
*** graphql-go
 
* '''Testing'''
** Unit Testing
*** Frameworks, Assertion
**** Testify
**** Ginkgo
**** GoMega
**** GoCheck
*** Mocking
**** GoMock
*** Behavior Testing
**** GoDog
**** GoConvey
**** GinkGo
*** Integration Testing
**** Testify
**** GinkGo
*** E2E Testing
**** Selenium
**** Endly
 
* '''Good to Know Libraries'''
** Validator
** Glow
** GJson
** Authboss
** Go-Underscore
 
* '''MicroServices'''
** Message-Broker
*** RabbitMQ
*** Apache Kafka
*** ActiveMQ
*** Azure Service Bus
** Building event-driven
*** Watermill
*** Message-Bus
** Frameworks
*** rpcx
*** Go-kit
*** Micro
** RPC
*** Protocol Buffers
*** gRPC-Go
*** gRPC-gateway
*** twirp
 
* '''Task Scheduling'''
** gron
** jobrunner
 
* '''Go Patterns'''
** Creational
** Structural
** Behavioral
** syncronization
** Concurrency
** Messaging
** Stability


= Уроки =
= Уроки =


* https://www.youtube.com/watch?v=9Pk7xAT_aCU
* https://www.youtube.com/watch?v=9Pk7xAT_aCU
= Private repo =
<pre>
git config --global --add url."artem@artem2.aleksashkin.net:projects/repo/docker/repos/core".insteadOf "https://repo.aleksashkin.net/core"
export GOPRIVATE=repo.aleksashkin.net/core
</pre>
and https://repo.aleksashkin.net/core?go-get=1 should return (error fix go: errors parsing go.mod: go.mod unrecognized import path "repo.aleksashkin.net/core": parse https://repo.aleksashkin.net/core?go-get=1: no go-import meta tags ())
also check this https://pkg.go.dev/rsc.io/go-import-redirector
<pre>
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;
&lt;meta name=&quot;go-import&quot; content=&quot;repo.aleksashkin.net/core git https://repo.aleksashkin.net/core&quot;&gt;
&lt;meta http-equiv=&quot;refresh&quot; content=&quot;0; url=https://pkg.go.dev/repo.aleksashkin.net/core.git&quot;&gt;
&lt;/head&gt;
&lt;body&gt;
Redirecting to docs at &lt;a href=&quot;https://pkg.go.dev/repo.aleksashkin.net/core.git&quot;&gt;pkg.go.dev/repo.aleksashkin.net/core.git&lt;/a&gt;...
&lt;/body&gt;
</pre>
Should work after
<pre>
git clone https://repo.aleksashkin.net/core
git clone artem@artem2.aleksashkin.net:projects/repo/docker/repos/core
go get repo.aleksashkin.net/core
</pre>

Текущая версия от 14:34, 23 сентября 2024

Roadmap

  • Go
    • GO CLI
    • Variables, Constants, Types, Function, Packages, etc
    • Array & Slices
    • Pointers, Structures, Methods
    • Interface
    • GoRutine, Channel, Buffer, Select, Mutex
    • Defer, Error, Panic, Recover
  • Go Modules
    • Learn Go dependecy management tool
    • semantic versioning
    • Version, scripts and other Properties
  • SQL fundamentals
    • Basic Sql Syntax
  • General Development Skills
    • GIT
    • HTTP/HTTPS
    • Data Structures and Algorithms
    • Scrum, Kanban or other project strategies
    • Basic Authentication, OAuth, JWT, etc
    • SOLID, YAGNI, KISS
  • CLI
    • cobra
    • urfave/cli
  • Web Frameworks + Routers
    • Echo
    • Beego
    • Gin
    • Revel
    • Chi
  • ORMs
    • Gorm
    • Xorm
  • Databases
    • Relational
      • PostgreSQL
      • MySQL
      • SQL Server
      • CockrachDB
      • MariaDB
    • NoSQL
      • MongoDB
      • Redis
      • Apache Cassandra
      • RavenDB
      • CouchDB
    • Search Engines
      • ElasticSearch
      • Solr
      • Sphinx
    • Cloud Databases
      • Azure CosmosDB
      • Amazon DynamoDB
  • Caching
    • GCache
    • Distributed Cache
      • Go-Redis
      • GoMemcache
  • Logging
    • Log Frameworks
      • Zap
      • Logrus
      • ZeroLog
    • Distributed Tracing
      • Jaeger
    • Log Management System
      • Sentry.io
      • loggly.com
  • Real-Time Communication
    • Melody
    • Centrifugo
  • API Clients
    • REST
      • Gentelman
      • GRequests
      • Heimdail
    • GraphQL
      • gqlgen
      • graphql-go
  • Testing
    • Unit Testing
      • Frameworks, Assertion
        • Testify
        • Ginkgo
        • GoMega
        • GoCheck
      • Mocking
        • GoMock
      • Behavior Testing
        • GoDog
        • GoConvey
        • GinkGo
      • Integration Testing
        • Testify
        • GinkGo
      • E2E Testing
        • Selenium
        • Endly
  • Good to Know Libraries
    • Validator
    • Glow
    • GJson
    • Authboss
    • Go-Underscore
  • MicroServices
    • Message-Broker
      • RabbitMQ
      • Apache Kafka
      • ActiveMQ
      • Azure Service Bus
    • Building event-driven
      • Watermill
      • Message-Bus
    • Frameworks
      • rpcx
      • Go-kit
      • Micro
    • RPC
      • Protocol Buffers
      • gRPC-Go
      • gRPC-gateway
      • twirp
  • Task Scheduling
    • gron
    • jobrunner
  • Go Patterns
    • Creational
    • Structural
    • Behavioral
    • syncronization
    • Concurrency
    • Messaging
    • Stability

Уроки

Private repo

git config --global --add url."artem@artem2.aleksashkin.net:projects/repo/docker/repos/core".insteadOf "https://repo.aleksashkin.net/core"
export GOPRIVATE=repo.aleksashkin.net/core

and https://repo.aleksashkin.net/core?go-get=1 should return (error fix go: errors parsing go.mod: go.mod unrecognized import path "repo.aleksashkin.net/core": parse https://repo.aleksashkin.net/core?go-get=1: no go-import meta tags ())

also check this https://pkg.go.dev/rsc.io/go-import-redirector

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="go-import" content="repo.aleksashkin.net/core git https://repo.aleksashkin.net/core">
<meta http-equiv="refresh" content="0; url=https://pkg.go.dev/repo.aleksashkin.net/core.git">
</head>
<body>
Redirecting to docs at <a href="https://pkg.go.dev/repo.aleksashkin.net/core.git">pkg.go.dev/repo.aleksashkin.net/core.git</a>...
</body>

Should work after

git clone https://repo.aleksashkin.net/core
git clone artem@artem2.aleksashkin.net:projects/repo/docker/repos/core
go get repo.aleksashkin.net/core