👍12🍾2🕊1
🎊 Go 1.20 Release Candidate 1 is released!
🏃♂️ Run it in dev! Run it in prod! File bugs! go.dev/issue/new
📣 Draft Release Note: https://tip.golang.org/doc/go1.20
📦 Download: go.dev/dl/#go1.20rc1
#golang
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🏃♂️ Run it in dev! Run it in prod! File bugs! go.dev/issue/new
📣 Draft Release Note: https://tip.golang.org/doc/go1.20
📦 Download: go.dev/dl/#go1.20rc1
#golang
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
⚡4🕊2❤1👍1
✅ Go 1.20 new main features:
1. slice -> array conversion
2. unsafe.{String, StringData, SliceData} functions
3. PGO https://github.com/golang/go/issues/55022
4. Arena https://github.com/golang/go/issues/51317
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
1. slice -> array conversion
2. unsafe.{String, StringData, SliceData} functions
3. PGO https://github.com/golang/go/issues/55022
4. Arena https://github.com/golang/go/issues/51317
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍3🕊2⚡1
مقاله جالبی راجع به تعریف senior بودن از کسی که نزدیک به 100 مهندس ارشد را مدیریت کرده است (تیاگو گیسی) و انتظاراتی که از مهندسان ارشد تیم میره.
linkedin.com/pulse/being-senior-engineer-thiago-ghisi
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
linkedin.com/pulse/being-senior-engineer-thiago-ghisi
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍2⚡1🕊1💯1
❎25 𝐆𝐨𝐥𝐝𝐞𝐧 𝐑𝐮𝐥𝐞𝐬 𝐭𝐨 𝐚𝐧𝐬𝐰𝐞𝐫 𝐢𝐧 𝐚 𝐒𝐲𝐬𝐭𝐞𝐦 𝐃𝐞𝐬𝐢𝐠𝐧 𝐈𝐧𝐭𝐞𝐫𝐯𝐢𝐞𝐰❎
1. If we are dealing with a read-heavy system, it's good to consider using a Cache.
2. If we need low latency in the system, it's good to consider using a Cache & CDN.
3. If we are dealing with a write-heavy system, it's good to use a Message Queue for Async processing
4. If we need a system to be ACID complaint, we should go for RDBMS or SQL Database
5. If data is unstructured & doesn't require ACID properties, we should go for NO-SQL Database
6. If the system has complex data in the form of videos, images, files etc, we should go for Blob/Object storage
7. If the system requires complex pre-computation like a news feed, we should use a Message Queue & Cache
8. If the system requires searching data in high volume, we should consider using a search index, tries or a search engine like Elasticsearch
9. If the system requires to Scale SQL Database, we should consider using Database Sharding
10. If the system requires High Availability, Performance, & Throughput, we should consider using a Load Balancer
11. If the system requires faster data delivery globally, reliability, high availability, & performance, we should consider using a CDN
12. If the system has data with nodes, edges, and relationships like friend lists, & road connections, we should consider using a Graph Database
13. If the system needs scaling of various components like servers, databases, etc, we should consider using Horizontal Scaling
14. If the system requires high-performing database queries, we should use Database Indexes
15. If the system requires bulk job processing, we should consider using Batch Processing & Message Queues
16. If the system requires reducing server load and preventing DOS attacks, we should use a Rate Limiter
17. If the system has microservices, we should consider using an API Gateway (Authentication, SSL Termination, Routing etc)
18. If the system has a single point of failure, we should implement Redundancy in that component
19. If the system needs to be fault-tolerant, & durable, we should implement Data Replication (creating multiple copies of data on different servers)
20. If the system needs user-to-user communication (bi-directional) in a fast way, we should use Websockets
21. If the system needs the ability to detect failures in a distributed system, we should implement a Heartbeat
22. If the system needs to ensure data integrity, we should use Checksum Algorithm
23. If the system needs to transfer data between various servers in a decentralized way, we should go for the Gossip Protocol
24. If the system needs to scale servers with add/removal of nodes efficiently, with no hotspots, we should implement Consistent Hashing
25. If the system needs anything to deal with a location like maps, nearby resources, we should consider using Quadtree, Geohash, etc
If you like my posts please follow me Dinesh Varyani
#systemdesign
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
1. If we are dealing with a read-heavy system, it's good to consider using a Cache.
2. If we need low latency in the system, it's good to consider using a Cache & CDN.
3. If we are dealing with a write-heavy system, it's good to use a Message Queue for Async processing
4. If we need a system to be ACID complaint, we should go for RDBMS or SQL Database
5. If data is unstructured & doesn't require ACID properties, we should go for NO-SQL Database
6. If the system has complex data in the form of videos, images, files etc, we should go for Blob/Object storage
7. If the system requires complex pre-computation like a news feed, we should use a Message Queue & Cache
8. If the system requires searching data in high volume, we should consider using a search index, tries or a search engine like Elasticsearch
9. If the system requires to Scale SQL Database, we should consider using Database Sharding
10. If the system requires High Availability, Performance, & Throughput, we should consider using a Load Balancer
11. If the system requires faster data delivery globally, reliability, high availability, & performance, we should consider using a CDN
12. If the system has data with nodes, edges, and relationships like friend lists, & road connections, we should consider using a Graph Database
13. If the system needs scaling of various components like servers, databases, etc, we should consider using Horizontal Scaling
14. If the system requires high-performing database queries, we should use Database Indexes
15. If the system requires bulk job processing, we should consider using Batch Processing & Message Queues
16. If the system requires reducing server load and preventing DOS attacks, we should use a Rate Limiter
17. If the system has microservices, we should consider using an API Gateway (Authentication, SSL Termination, Routing etc)
18. If the system has a single point of failure, we should implement Redundancy in that component
19. If the system needs to be fault-tolerant, & durable, we should implement Data Replication (creating multiple copies of data on different servers)
20. If the system needs user-to-user communication (bi-directional) in a fast way, we should use Websockets
21. If the system needs the ability to detect failures in a distributed system, we should implement a Heartbeat
22. If the system needs to ensure data integrity, we should use Checksum Algorithm
23. If the system needs to transfer data between various servers in a decentralized way, we should go for the Gossip Protocol
24. If the system needs to scale servers with add/removal of nodes efficiently, with no hotspots, we should implement Consistent Hashing
25. If the system needs anything to deal with a location like maps, nearby resources, we should consider using Quadtree, Geohash, etc
If you like my posts please follow me Dinesh Varyani
#systemdesign
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❤4👍4⚡2💯1
What is the CAP theorem? How useful is it to system design?
The CAP theorem is a concept in computer science that explains the trade-offs between consistency, availability, and partition tolerance in distributed systems.
Consistency refers to the property of a system where all nodes have a consistent view of the data. It means all clients see the same data at the same time, no matter which node they connect to.
Availability refers to the ability of a system to respond to requests from users at all times.
Partition tolerance refers to the ability of a system to continue operating even if there is a network partition.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
The CAP theorem is a concept in computer science that explains the trade-offs between consistency, availability, and partition tolerance in distributed systems.
Consistency refers to the property of a system where all nodes have a consistent view of the data. It means all clients see the same data at the same time, no matter which node they connect to.
Availability refers to the ability of a system to respond to requests from users at all times.
Partition tolerance refers to the ability of a system to continue operating even if there is a network partition.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍1🕊1🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
✅ آموزش استفاده از sync.Pool راه حلی کاربردی برای کاهش سربار حافظه
https://book.gofarsi.ir/chapter-3/go-sync-package/#335-pool
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
https://book.gofarsi.ir/chapter-3/go-sync-package/#335-pool
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
⚡3
✅ کتابخانه PayGap یک Sdk چند منظوره برای داشتن چندین درگاه پرداخت در یک جا
خیلی وقت پیش تصمیم گرفتم یک کتابخانه بنویسم که چندین درگاه پرداخت مختلف داخلی را برای زبان گو داشته باشد به همین منظور این کتابخانه را آماده کردم و تا امروز ۲ درگاه اضافه کردم و همینطور در حال افزایش درگاه های بیشتری هستم.
اگر علاقه مند هستید می توانید برای توسعه این کتابخانه مشارکت کنید.
- کتابخانه : https://github.com/GoFarsi/paygap
- داکیومنت : https://pkg.go.dev/github.com/GoFarsi/paygap
- کد نمونه : https://github.com/GoFarsi/paygap/tree/main/_example
- نحوه مشارکت : https://github.com/GoFarsi/paygap#contributing
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
خیلی وقت پیش تصمیم گرفتم یک کتابخانه بنویسم که چندین درگاه پرداخت مختلف داخلی را برای زبان گو داشته باشد به همین منظور این کتابخانه را آماده کردم و تا امروز ۲ درگاه اضافه کردم و همینطور در حال افزایش درگاه های بیشتری هستم.
اگر علاقه مند هستید می توانید برای توسعه این کتابخانه مشارکت کنید.
- کتابخانه : https://github.com/GoFarsi/paygap
- داکیومنت : https://pkg.go.dev/github.com/GoFarsi/paygap
- کد نمونه : https://github.com/GoFarsi/paygap/tree/main/_example
- نحوه مشارکت : https://github.com/GoFarsi/paygap#contributing
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❤7🔥1🕊1🍾1
❎موقعیت شغلی ❎
مهارت های ضروری:
تسلط بر مفاهیم برنامهنویسی و زبان برنامهنویسی GoLang
آشنایی با دیزاین پترنها و معماری های مختلف نرمافزار (REST, MVC, SaaS, Microservice, ...)
درک یکی از متدولوژیهای توسعهی چابک نرمافزار مانند Scrum یا Kanban
کار با دیتابیس و توانایی طراحی مدلهای داده در پایگاه داده
تسلط و درک کافی از نرمافزار کنترل نسخه Git
آشنایی با Linux
با توجه به استفاده پروژه از تکنولوژی های زیر آشنایی با این موارد مزیت به شمار میآید:
Redis
PostgreSQL
ELK
gRPC
زبان برنامه نویسی پایتون
شرایط عمومی:
امکان کار به صورت تماموقت
حداقل ۳ سال سابقه کار مفید و مرتبط
ارسال رزومه به ایمیل زیر
Maryam.rouhbakhsh65@gmail.com
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
مهارت های ضروری:
تسلط بر مفاهیم برنامهنویسی و زبان برنامهنویسی GoLang
آشنایی با دیزاین پترنها و معماری های مختلف نرمافزار (REST, MVC, SaaS, Microservice, ...)
درک یکی از متدولوژیهای توسعهی چابک نرمافزار مانند Scrum یا Kanban
کار با دیتابیس و توانایی طراحی مدلهای داده در پایگاه داده
تسلط و درک کافی از نرمافزار کنترل نسخه Git
آشنایی با Linux
با توجه به استفاده پروژه از تکنولوژی های زیر آشنایی با این موارد مزیت به شمار میآید:
Redis
PostgreSQL
ELK
gRPC
زبان برنامه نویسی پایتون
شرایط عمومی:
امکان کار به صورت تماموقت
حداقل ۳ سال سابقه کار مفید و مرتبط
ارسال رزومه به ایمیل زیر
Maryam.rouhbakhsh65@gmail.com
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🍓2🗿2👻1
قالب بندی رشته در زبان گو
در زبان گو مانند سایر زبان ها یکسری عناوین برای قالب بندی رشته وجود دارد که برخی از این عناوین مشترک بین همه زبان ها می باشد و برخی مختص زبان گو است.
در زیر شما می توانید با انواع قالب بندی رشته آشنا شوید :
https://book.gofarsi.ir/chapter-1/go-string-formatting/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
در زبان گو مانند سایر زبان ها یکسری عناوین برای قالب بندی رشته وجود دارد که برخی از این عناوین مشترک بین همه زبان ها می باشد و برخی مختص زبان گو است.
در زیر شما می توانید با انواع قالب بندی رشته آشنا شوید :
https://book.gofarsi.ir/chapter-1/go-string-formatting/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🗿3❤1🕊1
کانال ها در زبان گو
کانال یک نوع تایپ است که داده از نوع خاصی را نگه داری میکند و امکان برقراری ارتباط و همگام سازی داده بین گوروتین ها را فراهم می کند. شما می توانید کانال ها را به عنوان خط لوله های در نظر بگیرید که این خط لوله ها به گوروتین ها متصل می شود و باعث برقراری ارتباط بین گوروتین ها می شود.
در کتاب اومدیم به بحث کانال بطور عمیق پرداختیم و تمامی عناوینی که در خصوص کانال باید بدونید را قرار دادیم.
https://book.gofarsi.ir/chapter-3/go-channel/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
کانال یک نوع تایپ است که داده از نوع خاصی را نگه داری میکند و امکان برقراری ارتباط و همگام سازی داده بین گوروتین ها را فراهم می کند. شما می توانید کانال ها را به عنوان خط لوله های در نظر بگیرید که این خط لوله ها به گوروتین ها متصل می شود و باعث برقراری ارتباط بین گوروتین ها می شود.
در کتاب اومدیم به بحث کانال بطور عمیق پرداختیم و تمامی عناوینی که در خصوص کانال باید بدونید را قرار دادیم.
https://book.gofarsi.ir/chapter-3/go-channel/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❤3🕊2
✅ پکیج context
اگر هنوز پکیج context را کامل یادنگرفتید یا اینکه عمیقا نتوانستید درک کنید ما در بخش context داخل کتاب آمدیم به بحث context بطور خیلی عمیق پرداختیم و کلی تجربه را برایتان قرار دادیم.
توضیح مختصر در خصوص context :
در واقع context مانند یک درخت می باشد که کلی شاخه دارد و هر شاخه به شاخه های ریزتری تقسیم شده و در نهایت به برگ ها و میوه های درخت منتهی می شوند. حال شما می توانید در هر ناحیه شاخه والد را قطع کنید تا شاخه های فرزند از بین برود. در زبان گو context یک اینترفیس است که یکسری متد دارد که هریک از متدها می تواند عملیاتی را انجام دهد و این امکان را فراهم می کند هر وقت یک درخواست از سمت کلاینت به سرور می آید این درخواست می تواند در لایه های مختلف منتهی شود و داخل context می تواند یکسری key/value های مهم باشد که شما می توانید در هر لایه دسترسی داشته باشید و هچنین می توانید سیگنال cancel بفرستید که درخواستی که تا هرجا رفته اس کنسل شود.
https://book.gofarsi.ir/chapter-3/go-context/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
اگر هنوز پکیج context را کامل یادنگرفتید یا اینکه عمیقا نتوانستید درک کنید ما در بخش context داخل کتاب آمدیم به بحث context بطور خیلی عمیق پرداختیم و کلی تجربه را برایتان قرار دادیم.
توضیح مختصر در خصوص context :
در واقع context مانند یک درخت می باشد که کلی شاخه دارد و هر شاخه به شاخه های ریزتری تقسیم شده و در نهایت به برگ ها و میوه های درخت منتهی می شوند. حال شما می توانید در هر ناحیه شاخه والد را قطع کنید تا شاخه های فرزند از بین برود. در زبان گو context یک اینترفیس است که یکسری متد دارد که هریک از متدها می تواند عملیاتی را انجام دهد و این امکان را فراهم می کند هر وقت یک درخواست از سمت کلاینت به سرور می آید این درخواست می تواند در لایه های مختلف منتهی شود و داخل context می تواند یکسری key/value های مهم باشد که شما می توانید در هر لایه دسترسی داشته باشید و هچنین می توانید سیگنال cancel بفرستید که درخواستی که تا هرجا رفته اس کنسل شود.
https://book.gofarsi.ir/chapter-3/go-context/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❤3🗿2⚡1
❎ Designing Go Libraries: The Talk: The Article
https://abhinavg.net/2022/12/06/designing-go-libraries/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
https://abhinavg.net/2022/12/06/designing-go-libraries/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍2❤🔥1
❎ Embedding Our New React UI in Go
https://www.flipt.io/blog/embedding-react-in-go
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
https://www.flipt.io/blog/embedding-react-in-go
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍1🐳1
❎What’s New in Go 1.20, Part I: Language Changes
https://blog.carlmjohnson.net/post/2023/golang-120-language-changes/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
https://blog.carlmjohnson.net/post/2023/golang-120-language-changes/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍1🏆1
❎ How to Use //go:embed
https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
https://blog.carlmjohnson.net/post/2021/how-to-use-go-embed/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔥2👍1💋1
❎ How to Use //go:generate
https://blog.carlmjohnson.net/post/2016-11-27-how-to-use-go-generate/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
https://blog.carlmjohnson.net/post/2016-11-27-how-to-use-go-generate/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍2🎃2