✅ پادکست وبینار مهندسین گولنگ پارسی
دوستان از طریق Spotify و Google Podcasts و همچنین castbox می توانید وبینار را گوش دهید.
در این وبینار درخصوص جامعه برنامه نویسان ایران و همچنین در خصوص بازار کار و درآمد استک گو در داخل یا خارج پرداختیم و تجربیان خیلی خوبی مطرح شد برای اینکه بتوانید یک فرصت شغلی مناسبی بدست آورد.
🔗 https://open.spotify.com/show/6aQdgKiOF5tuzI7mpijlfj
🔗 https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy9kZGY3OWRiNC9wb2RjYXN0L3Jzcw
🔗 https://castbox.fm/va/5381928
➖➖➖➖➖➖➖➖➖
🔰@gopher_academy
دوستان از طریق Spotify و Google Podcasts و همچنین castbox می توانید وبینار را گوش دهید.
در این وبینار درخصوص جامعه برنامه نویسان ایران و همچنین در خصوص بازار کار و درآمد استک گو در داخل یا خارج پرداختیم و تجربیان خیلی خوبی مطرح شد برای اینکه بتوانید یک فرصت شغلی مناسبی بدست آورد.
🔗 https://open.spotify.com/show/6aQdgKiOF5tuzI7mpijlfj
🔗 https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy9kZGY3OWRiNC9wb2RjYXN0L3Jzcw
🔗 https://castbox.fm/va/5381928
➖➖➖➖➖➖➖➖➖
🔰@gopher_academy
🐳3💊2🕊1
Why do we need message brokers 👇?
Message brokers play a crucial role when building distributed systems or microservices to improve their performance, scalability, and maintainability.
🔹 Decoupling: Message brokers promote independent development, deployment, and scaling by creating a separation between software components. The result is easier maintenance and troubleshooting.
🔹 Asynchronous communication: A message broker allows components to communicate without waiting for responses, making the system more efficient and enabling effective load balancing.
🔹 Message brokers ensure that messages are not lost during component failures by providing buffering and message persistence.
🔹 Scalability: Message brokers can manage a high volume of messages, allowing your system to scale horizontally by adding more instances of the message broker as needed.
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
Message brokers play a crucial role when building distributed systems or microservices to improve their performance, scalability, and maintainability.
🔹 Decoupling: Message brokers promote independent development, deployment, and scaling by creating a separation between software components. The result is easier maintenance and troubleshooting.
🔹 Asynchronous communication: A message broker allows components to communicate without waiting for responses, making the system more efficient and enabling effective load balancing.
🔹 Message brokers ensure that messages are not lost during component failures by providing buffering and message persistence.
🔹 Scalability: Message brokers can manage a high volume of messages, allowing your system to scale horizontally by adding more instances of the message broker as needed.
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
❤2👍1🤔1🐳1
اگر دنبال یه کلاینت رایگان، اپن سورس و سبک برای دیتابیس های SQL و NoSQL هستید حتما DBGate رو امتحان کنید.
برای لینوکس، ویندوز، مک و مرورگر های وب هم قابل استفاده س.
https://dbgate.org/
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
برای لینوکس، ویندوز، مک و مرورگر های وب هم قابل استفاده س.
https://dbgate.org/
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍4
POCO vs DTO vs Entity vs VO
POCO, DTO, Entity and VO are programming concepts used in software development. A better understanding of where we use them might help us make better code:
POCO (Plain Old CLR Object)
▪️ POCO classes hold data and represent business models.
▪️ POCO classes do not have any behavior.
▪️ They are used to persist data.
▪️ POCO classes are not framework-dependent.
▪️ hey should not contain any validation or persistence rules.
Data Transfer Object (DTO)
▪️ A DTO transfers data between layers, processes, or applications.
▪️ A DTO is immutable and has no behavior.
▪️ A DTO is optimized for serialization and deserialization for efficient data transfer.
▪️ A DTO only represents data and should not have business logic or validation methods.
▪️ Data transported by a DTO may not be reliable from a business perspective.
▪️ A DTO represents data needed by the consumer, not business entities directly.
▪️ A DTO should include only relevant data from one or multiple sources for a specific purpose.
Entity
▪️ Entities encapsulate business models related to database tables or domain units.
▪️ Entities validate, CRUD, fetch related data and apply business logic in a domain layer.
▪️ Validated entity changes allow persistence and visibility for consistency across layers.
▪️ Entities can represent non-table domain objects and are used in frameworks for mapping tables.
Value Object (VO)
▪️ VOs are immutable objects holding valid data for independent entities like dates or monetary amounts.
▪️ VOs shouldn't be used for persistence, but can represent properties of domain objects in a database.
▪️ Comparing VOs should consider property values, not references for equivalent object treatment.
▪️ VOs ensure valid data and provide necessary info to consumers via constructors, static factory methods or builder patterns.
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
POCO, DTO, Entity and VO are programming concepts used in software development. A better understanding of where we use them might help us make better code:
POCO (Plain Old CLR Object)
▪️ POCO classes hold data and represent business models.
▪️ POCO classes do not have any behavior.
▪️ They are used to persist data.
▪️ POCO classes are not framework-dependent.
▪️ hey should not contain any validation or persistence rules.
Data Transfer Object (DTO)
▪️ A DTO transfers data between layers, processes, or applications.
▪️ A DTO is immutable and has no behavior.
▪️ A DTO is optimized for serialization and deserialization for efficient data transfer.
▪️ A DTO only represents data and should not have business logic or validation methods.
▪️ Data transported by a DTO may not be reliable from a business perspective.
▪️ A DTO represents data needed by the consumer, not business entities directly.
▪️ A DTO should include only relevant data from one or multiple sources for a specific purpose.
Entity
▪️ Entities encapsulate business models related to database tables or domain units.
▪️ Entities validate, CRUD, fetch related data and apply business logic in a domain layer.
▪️ Validated entity changes allow persistence and visibility for consistency across layers.
▪️ Entities can represent non-table domain objects and are used in frameworks for mapping tables.
Value Object (VO)
▪️ VOs are immutable objects holding valid data for independent entities like dates or monetary amounts.
▪️ VOs shouldn't be used for persistence, but can represent properties of domain objects in a database.
▪️ Comparing VOs should consider property values, not references for equivalent object treatment.
▪️ VOs ensure valid data and provide necessary info to consumers via constructors, static factory methods or builder patterns.
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍5❤1🤔1🐳1
تیکه ی کلفت تلگرام به دیسکورد در توییتر در پی افزایش حجم ارسال فایل از 8 مگابایت به 25 مگابایت:
"سایز مهمه" :)))
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
"سایز مهمه" :)))
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
🤣26
1681029443356.pdf
923.4 KB
یک داکیومنت خوب که تمام سوالات مصاحبه کننده در مورد GIT , یک جور مرور هم حساب میشه و همیشه اماده نگهتون میداره 👌
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍6
✅ آیا استفاده از atomic نیازمند mutex می باشد یا خیر؟
چند روز پیش یکی از دوستان در خصوص مثال کتاب برای بحث atomic سوال کرد چرا بازم از mutex استفاده شده در اتمیک؟
پاسخ:
"در این کد، mutex در متد Set برای جلوگیری از رخ دادن race condition یا دادههای نامنظم استفاده شده است. بدون mutex، چندین گوروتین ممکن است همزمان به دسترسی و تغییر دادههای map data بپردازند که موجب رفتار نامنظم و فساد داده میشود. با گرفتن mutex قبل از تغییر map data، متد Set اطمینان حاصل میکند که تنها یک گوروتین در هر زمان میتواند به دادهها دسترسی پیدا کند و تداخل دادهها را جلوگیری میکند.
استفاده از mutex در متد Get نیز مهم است، زیرا این اطمینان را به ما میدهد که در هنگام دسترسی به map data، هیچ گوروتین دیگری دارای مجوز تغییر دادهها نیست. بدون mutex، یک race condition ممکن است ایجاد شود اگر یک گوروتین دیگر در حال تغییر دادههای map باشد در حالی که یک گوروتین دیگر سعی در خواندن از آن دارد.
در پیادهسازی AtomicCache، یک atomic.Value برای ذخیره map استفاده شده است که به انجام عملیات اتمی روی آن اجازه میدهد. با این حال، حتی با استفاده از یک مقدار اتمی، همچنان نیاز به mutex وجود دارد تا فقط یک گوروتین در هر زمان به دسترسی به map دسترسی داشته باشد و تداخل دادهها را جلوگیری کند."
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
چند روز پیش یکی از دوستان در خصوص مثال کتاب برای بحث atomic سوال کرد چرا بازم از mutex استفاده شده در اتمیک؟
پاسخ:
"در این کد، mutex در متد Set برای جلوگیری از رخ دادن race condition یا دادههای نامنظم استفاده شده است. بدون mutex، چندین گوروتین ممکن است همزمان به دسترسی و تغییر دادههای map data بپردازند که موجب رفتار نامنظم و فساد داده میشود. با گرفتن mutex قبل از تغییر map data، متد Set اطمینان حاصل میکند که تنها یک گوروتین در هر زمان میتواند به دادهها دسترسی پیدا کند و تداخل دادهها را جلوگیری میکند.
استفاده از mutex در متد Get نیز مهم است، زیرا این اطمینان را به ما میدهد که در هنگام دسترسی به map data، هیچ گوروتین دیگری دارای مجوز تغییر دادهها نیست. بدون mutex، یک race condition ممکن است ایجاد شود اگر یک گوروتین دیگر در حال تغییر دادههای map باشد در حالی که یک گوروتین دیگر سعی در خواندن از آن دارد.
در پیادهسازی AtomicCache، یک atomic.Value برای ذخیره map استفاده شده است که به انجام عملیات اتمی روی آن اجازه میدهد. با این حال، حتی با استفاده از یک مقدار اتمی، همچنان نیاز به mutex وجود دارد تا فقط یک گوروتین در هر زمان به دسترسی به map دسترسی داشته باشد و تداخل دادهها را جلوگیری کند."
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
زبان گو فارسی
3.4 پکیج atomic
پکیج atomic یک حافظه atomic سطح پایین برای پیاده سازی الگوریتم های همگام سازی شده است. از مواردی که خیلی قابل اهمیت است با این پکیج شما می توانید یکسری الگوهای همگام سازی را پیاده سازی کنید. سعی کنید با دقت بیشتری از این پکیج استفاده کنید چون کارکردش خارج…
❤4👍1
Are serverless databases the future? How do serverless databases differ from traditional cloud databases?
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍1🍾1
Dylan_Meeus_Functional_Programming_in_Go_Apply_functional_techniques.pdf
15.5 MB
Functional Programming in Go: Apply functional techniques in Golang to improve the testability, readability, and security of your code
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍2🕊1
✅ یک مقاله خوب درخصوص Value Object در گولنگ
https://levelup.gitconnected.com/practical-ddd-in-golang-value-object-4fc97bcad70
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
https://levelup.gitconnected.com/practical-ddd-in-golang-value-object-4fc97bcad70
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
Medium
Practical DDD in Golang: Value Object
Let us start a journey of practical Domain-Driven Design in Golang with the most important pattern, Value Object.
👍2🔥1🕊1🏆1👾1
اگر میخواید برنامه نویس وب بشید، نیازی به خرج کردن میلیون ها تومن برای دوره های مختلف نیست
از سایت ها و ابزار های زیر استفاده کنید :)
سایت های آموزش وب دولوپمنت
1. W3schools.
2. Freecodecamp
3. TheOdinProject
4. Scrimba
5. Tutorialspoint
6. Geeks for Geeks.
7. Studytonight
8. Solo Learn
9. Guru99
چنل های یوتیوب برای وب دولوپر ها
1. Code with harry
2. Taversy media
3. Freecodecamp
4. Clever programmer
5. The new boston
6. Telusko
7. Yahoobaba
نرم افزار های آموزشی
1. Solo learn
2. W3schools
3. Mimo
4. Grasshopper
5. Programminghub
تمرین کد زدن
1. Icodethis
2. Frontend Mentor
3. Hacker Rank
4. Top coder
5. Codechef
6. Hacker Earth
7. Coder byte
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
از سایت ها و ابزار های زیر استفاده کنید :)
سایت های آموزش وب دولوپمنت
1. W3schools.
2. Freecodecamp
3. TheOdinProject
4. Scrimba
5. Tutorialspoint
6. Geeks for Geeks.
7. Studytonight
8. Solo Learn
9. Guru99
چنل های یوتیوب برای وب دولوپر ها
1. Code with harry
2. Taversy media
3. Freecodecamp
4. Clever programmer
5. The new boston
6. Telusko
7. Yahoobaba
نرم افزار های آموزشی
1. Solo learn
2. W3schools
3. Mimo
4. Grasshopper
5. Programminghub
تمرین کد زدن
1. Icodethis
2. Frontend Mentor
3. Hacker Rank
4. Top coder
5. Codechef
6. Hacker Earth
7. Coder byte
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍9
چند وقت پیش یه مطلب درمورد گندکاریهای گوگل توی مهندسی نرمافزار میخوندم
این یکی خیلی باحال بود:
حوالی سال ۲۰۰۵ که پروژه گوگل وب سرور (GWS) یهویی شروع به بزرگ شدن کرد، پروسههایی که توی تیم مهندسی وجود داشت آماده هندل کردن این رشد سریع نبود (پروسههایی مثل تست، کد ریویو و...)
و اوضاع جوری به فنا رفت که ۸۰ درصد کامیتهایی که میرفت روی پروداکشن، باگدار از آب درمیاومدن و مجبور میشدن roll back کنن روی ورژن قبلی!
و البته که این مشکل بخاطر پروسههاست، نه آدما
فرض کنین ۱۰۰ تا دولوپر فوقالعاده داشته باشین که فقط ماهی ۱ باگ توی کدشون هست
اینجوری هر ماه حداقل ۱۰۰تا باگ رو پروداکشن داریم :))))
فرایندهای release فیچرهای جدید باید طوری باشه که این باگها قبل از رفتن روی پروداکشن پیدا و فیکس بشن
#DevTwitter | <Erfan.tsx/>
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
این یکی خیلی باحال بود:
حوالی سال ۲۰۰۵ که پروژه گوگل وب سرور (GWS) یهویی شروع به بزرگ شدن کرد، پروسههایی که توی تیم مهندسی وجود داشت آماده هندل کردن این رشد سریع نبود (پروسههایی مثل تست، کد ریویو و...)
و اوضاع جوری به فنا رفت که ۸۰ درصد کامیتهایی که میرفت روی پروداکشن، باگدار از آب درمیاومدن و مجبور میشدن roll back کنن روی ورژن قبلی!
و البته که این مشکل بخاطر پروسههاست، نه آدما
فرض کنین ۱۰۰ تا دولوپر فوقالعاده داشته باشین که فقط ماهی ۱ باگ توی کدشون هست
اینجوری هر ماه حداقل ۱۰۰تا باگ رو پروداکشن داریم :))))
فرایندهای release فیچرهای جدید باید طوری باشه که این باگها قبل از رفتن روی پروداکشن پیدا و فیکس بشن
#DevTwitter | <Erfan.tsx/>
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍11❤5🔥1🍾1
آگهی شغلی
درود دوستان ✋🏽
ما تو آرکپچا به یه نیروی بکاند (Go) نیاز داریم.
آگهی زیر رو مطالعه کنید لطفا. اگه خودتون تمایل به همکاری با ما دارید یا کسی رو میشناسید، لطفا از طریق آگهی برامون رزومه ارسال کنید. 😊
https://quera.org/j/g9x7x
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
درود دوستان ✋🏽
ما تو آرکپچا به یه نیروی بکاند (Go) نیاز داریم.
آگهی زیر رو مطالعه کنید لطفا. اگه خودتون تمایل به همکاری با ما دارید یا کسی رو میشناسید، لطفا از طریق آگهی برامون رزومه ارسال کنید. 😊
https://quera.org/j/g9x7x
➖➖➖➖➖➖➖➖➖
🕊 @gopher_academy
👍6🔥1🎉1🍓1🍾1
موضوع دورهمی هفته چهارم در تاریخ 1 اردیبهشت؟
Final Results
10%
کتابخانه های استاندارد زبان گو
21%
الگو Saga در معماری EDD
16%
معماری Clean
5%
اصول مهندسی نرم افزار SOLID, DRY و...
13%
معماری Hexagonal
7%
بحث درخصوص TDD
1%
معماری Master Slave
20%
بلاکچین در زبان گو (Smart Contracts, Web3 و...)
0%
الگوهای طرحی
6%
الگوریتم و ساختار داده
👍2