یک مقاله کامل و با مثال های ساده جهت یادگیری انواع الگوهای طراحی مرسوم در زبان گو
https://link.medium.com/NN3301snSrb
https://link.medium.com/NN3301snSrb
Medium
Desing Patters in Golang
What a Design Pattern is?
👍15
🔸استخدام برنامهنویس Golang #تهران
🔹تماموقت 🔹ارشد (Senior)
🔗 https://quera.org/r/ZNMdaI
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔹تماموقت 🔹ارشد (Senior)
🔗 https://quera.org/r/ZNMdaI
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👏3👍1
🚀 #تکنیک verify Interface compilance
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
var _ Connector = (*MongoClient)(nil)
این تکنیک زمانی استفاده میشه که قصد داشته باشید هنگام کامپایل از پیاده سازی شدن متدها در ساختاری که از اینترفیس استفاده میشه مطمئن شوید.➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍5
Gopher Academy
🚀 #تکنیک verify Interface compilance var _ Connector = (*MongoClient)(nil) این تکنیک زمانی استفاده میشه که قصد داشته باشید هنگام کامپایل از پیاده سازی شدن متدها در ساختاری که از اینترفیس استفاده میشه مطمئن شوید. ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
🚀 #تکنیک verify Interface compilance
مثال
https://splice.com/blog/golang-verify-type-implements-interface-compile-time/؛
https://golangbyexample.com/go-check-if-type-implements-interface/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
مثال
https://splice.com/blog/golang-verify-type-implements-interface-compile-time/؛
https://golangbyexample.com/go-check-if-type-implements-interface/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍4
🚀 #پترن همزمانی Subscription
پیشگفتار
در مخزن concurrency سعی کردم با تجزیه و تحلیل و مثال به مباحث الگو های همزمانی بپردازم تا سناریو درستی جهت استفاده از همزمانی زبان گو داشته باشید.
مختصر توضیح در خصوص پترن Subscription
پترن subscription در مواقعی که قصد دارید یکسری اطلاعات را از یک سرویس دیگری در زمان های مختلف fetch کنید کاربرد دارد و دیگر کاربردهای آن برای پیاده سازی pub/sub هستش
https://github.com/Ja7ad/concurrency/tree/main/subscription
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
پیشگفتار
در مخزن concurrency سعی کردم با تجزیه و تحلیل و مثال به مباحث الگو های همزمانی بپردازم تا سناریو درستی جهت استفاده از همزمانی زبان گو داشته باشید.
مختصر توضیح در خصوص پترن Subscription
پترن subscription در مواقعی که قصد دارید یکسری اطلاعات را از یک سرویس دیگری در زمان های مختلف fetch کنید کاربرد دارد و دیگر کاربردهای آن برای پیاده سازی pub/sub هستش
https://github.com/Ja7ad/concurrency/tree/main/subscription
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍3
💥 همزمانی در grpc چگونه است؟
https://github.com/grpc/grpc-go/blob/master/Documentation/concurrency.md
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
https://github.com/grpc/grpc-go/blob/master/Documentation/concurrency.md
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔥2👍1
🎆 زبان گو ۱.۱۹ منتشر شد
📝 تغییرات: https://go.dev/doc/go1.19
⬇️ دانلود: https://go.dev/dl/#go1.19
#golang
📝 تغییرات: https://go.dev/doc/go1.19
⬇️ دانلود: https://go.dev/dl/#go1.19
#golang
go.dev
Go 1.19 Release Notes - The Go Programming Language
❤10👏2🎉2👍1🔥1
📌 پروژه ساده مایکروسرویس Greeting
این پروژه شاید چیز خاصی نداشته باشد ولی هدفم از این پروژه این بود که کلاینت اگر یک context از نوع cancel, timeout, deathline فرستاد برای server-side بتواند درخواست خود را کنسل کند و داخل سرور تا هرلایه ای درخواست پیش رفته کنسل شود.
سمت سرور فقط یک middleware به نام timeout نوشتم که این فرآیند کنسل شدن درخواست ها را انجام می دهد.
اگر نکاتی مدنظرتون هست برای بهبود این کانسپت لطفا مشارکت کنید تا تجربه بنده و سایر عزیزان بیشتر شود.
https://github.com/Ja7ad/greeting
این پروژه شاید چیز خاصی نداشته باشد ولی هدفم از این پروژه این بود که کلاینت اگر یک context از نوع cancel, timeout, deathline فرستاد برای server-side بتواند درخواست خود را کنسل کند و داخل سرور تا هرلایه ای درخواست پیش رفته کنسل شود.
سمت سرور فقط یک middleware به نام timeout نوشتم که این فرآیند کنسل شدن درخواست ها را انجام می دهد.
اگر نکاتی مدنظرتون هست برای بهبود این کانسپت لطفا مشارکت کنید تا تجربه بنده و سایر عزیزان بیشتر شود.
https://github.com/Ja7ad/greeting
👍6🤔2
Forwarded from Amir
سلام دوستان خسته نباشید
من یک سری سوال های پر تکرار که خیلی توی مصاحبه ها ازم پرسیده شده جمع کردم و گفتم با شما هم اشتراک بگذارم. به دور از مصاحبه هم فکر میکنم سوال های خوبی باشه تا مروری بشه
https://docs.google.com/document/d/14GtIQjJ63o-5qqsZ8pYtZIKyD0mUb2FxJOJXwyMa8HY/edit?usp=sharing
من یک سری سوال های پر تکرار که خیلی توی مصاحبه ها ازم پرسیده شده جمع کردم و گفتم با شما هم اشتراک بگذارم. به دور از مصاحبه هم فکر میکنم سوال های خوبی باشه تا مروری بشه
https://docs.google.com/document/d/14GtIQjJ63o-5qqsZ8pYtZIKyD0mUb2FxJOJXwyMa8HY/edit?usp=sharing
👍7❤1🎉1
📌 #تکنیک آشنایی با برخی از AntiPatterns در زبان گو
در زیر یکسری مقالات رو معرفی کردم در خصوص آنتی پترن ها بصورت کاربردی با مثال توضیح دادن.
https://hackmysql.com/page/golang-antipatterns/
https://dzone.com/articles/common-anti-patterns-in-go?ref=morioh.com&utm_source=morioh.com
https://deepsource.io/blog/common-antipatterns-in-go/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
در زیر یکسری مقالات رو معرفی کردم در خصوص آنتی پترن ها بصورت کاربردی با مثال توضیح دادن.
https://hackmysql.com/page/golang-antipatterns/
https://dzone.com/articles/common-anti-patterns-in-go?ref=morioh.com&utm_source=morioh.com
https://deepsource.io/blog/common-antipatterns-in-go/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
👍2👏1🎉1
👌مهندس ارشد نرمافزار در گوگل
❎ https://zil.ink/kian1024
🙏پیشنهاد میشه حتما مقالات رو بخونید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❎ https://zil.ink/kian1024
🙏پیشنهاد میشه حتما مقالات رو بخونید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🎉4👍1🔥1
📥 دریافت شده از:
Mostafa Solati
توی پست قبلی #ریفکتور_تایم کدی رو باهم دیدیم که نیاز به ریفکتور داشت، ممکنه اولین راهی که به ذهن برسه اینه که کاراکترهایی که میخوایم حذف کنیم رو داخل یه اسلایس قرار بدیم و از توی متن حذف کنیم. این راه حل یه مشکل داره و اونم اینه که پترن ما میگه احتمالا کاراکتر های دیگه ای به متن اضافه خواهد شد مثلا / یا % و ...
و با هر تغییر باید کدمون رو دست بزنیم و این خلاف اصول مهندسی نرم افزاره و خطا رو زیاد میکنه.
راه بعدی که ممکنه به ذهن برسه استفاده از رجکس هست، اما مشکلاتی که رجکس داره اینه که به شدت کنده (حدودا ۴۰ برابر کندتر از راه حل زیر) و همینطور به زبون آدمیزاد نیست! هم خوندن و هم نوشتنش سخته.
اما راه بهتر رو استاندارد لایبرری در اختیار ما قرار داده و اون استفاده از فانکشن FieldsFunc از پکیج strings و فانکشن IsLetter از پکیج unicode هستش
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Mostafa Solati
توی پست قبلی #ریفکتور_تایم کدی رو باهم دیدیم که نیاز به ریفکتور داشت، ممکنه اولین راهی که به ذهن برسه اینه که کاراکترهایی که میخوایم حذف کنیم رو داخل یه اسلایس قرار بدیم و از توی متن حذف کنیم. این راه حل یه مشکل داره و اونم اینه که پترن ما میگه احتمالا کاراکتر های دیگه ای به متن اضافه خواهد شد مثلا / یا % و ...
و با هر تغییر باید کدمون رو دست بزنیم و این خلاف اصول مهندسی نرم افزاره و خطا رو زیاد میکنه.
راه بعدی که ممکنه به ذهن برسه استفاده از رجکس هست، اما مشکلاتی که رجکس داره اینه که به شدت کنده (حدودا ۴۰ برابر کندتر از راه حل زیر) و همینطور به زبون آدمیزاد نیست! هم خوندن و هم نوشتنش سخته.
اما راه بهتر رو استاندارد لایبرری در اختیار ما قرار داده و اون استفاده از فانکشن FieldsFunc از پکیج strings و فانکشن IsLetter از پکیج unicode هستش
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❤5👍3🎉1
🍷 Go Lang 1.19: Refines Generics and Memory Model
🐊 https://coderoasis.com/go-lang-1-19-released/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🐊 https://coderoasis.com/go-lang-1-19-released/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🙏3👍1🎉1
🍷 bytes.Buffer vs strings.Builder 🍷
🐊 https://medium.com/@felipedutratine/string-concatenation-in-golang-since-1-10-bytes-buffer-vs-strings-builder-2b3081848c45
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🐊 https://medium.com/@felipedutratine/string-concatenation-in-golang-since-1-10-bytes-buffer-vs-strings-builder-2b3081848c45
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🥰2👍1
📡 Nil is not nil
⁉️ https://yourbasic.org/golang/gotcha-why-nil-error-not-equal-nil/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
⁉️ https://yourbasic.org/golang/gotcha-why-nil-error-not-equal-nil/
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔥2👍1