Gopher Academy
3.34K subscribers
918 photos
40 videos
279 files
1.99K links
🕸 Gopher Academy

🔷interview golang
https://github.com/mrbardia72/Go-Interview-Questions-And-Answers

حمایت مالی:
https://www.coffeete.ir/mrbardia72

ادمین:
@mrbardia72
Download Telegram
🔴 Go design patterns
.
#book
.

🔰 @gopher_academy
.
👇🏻👇🏻👇🏻PDF👇🏻👇🏻👇🏻
Go Design Patterns-253.pdf
4.6 MB
🔴 Go design patterns
.
#book
.

🔰 @gopher_academy
🍁یه سری کویز در مورد deferها🍁
👇🏻👇🏻👇🏻👇🏻
quiz1: https://t.me/gopher_academy/151
quiz2: https://t.me/gopher_academy/152
quiz3: https://t.me/gopher_academy/153
quiz4: https://t.me/gopher_academy/157
.
----------------------------------------
#quiz
🔰 @gopher_academy
This media is not supported in your browser
VIEW IN TELEGRAM
🔴زبان برنامه‌نویسی Go (یا Golang) 🔴

🔷یک زبان برنامه‌نویسی متن‌باز (Open Source) است که ساخت نرم‌افزار را ساده، قابل‌اعتماد و بهینه می‌کند.
🔷درواقع Golang زبانی است که توسط شرکت Google طراحی شده‌است و در حال حاضر، در سامانه‌های متفاوت اجرایی گوگل به ‌کار گرفته شده‌است.
🔷زبان برنامه‌نویسی Go از لحاظ syntax مشابه زبان برنامه‌نویسی C است، اما تفاوت اصلی جایی رقم می‌خورد که Golang در مقایسه با C از مزایای امنیت حافظه، زباله‌روبی (Garbage collection) حافظه، تایپ ساختاریافته (Structural typing)، برنامه‌نویسی هم‌زمان (Concurrent programming) و غیره بهره می‌برد.

🔷مزیت زباله‌روبی Golang مدیریت حافظه را به ‌صورت خودکار انجام می‌دهد و هم‌چنین، اجازه می‌دهد که اجرای برخی توابع به تعویق بیفتد.
🔷علاوه‌براین، ویژگی برنامه‌نویسی هم‌زمان Golang که از طریق Goroutineها و Channelها اتفاق می‌افتد، اجازه اجرای چند فرایند را به‌طور هم‌زمان به شما خواهد داد. این مزیت آن‌جا اهمیت خود را نشان می‌دهد که با توجه به روند افزایش هزینه‌های ارتقاء سخت‌افزاری، نیاز به بهینه بودن عملیات اجرای کدها احساس می‌شود.

🔷درواقع Golang بر خلاف زبان‌های برنامه‌نویسی قدیمی مانند جاوا و پایتون، می‌تواند چندین میلیون goroutine را به‌صورت هم‌زمان اجرا کند. این رویه‌های Go مزایایی دارند که در مقایسه با زبان‌های برنامه‌نویسی C++، C و جاوا هم‌زمانی‌ها را بسیار بهتر مدیریت کنند.

🔷 این مزایا عبارتند از:
🔸- قطعه‌بندی پشته‌ها
🔸- سرعت بالای آغاز اجرای برنامه
🔸- ارتباط امن میان رویه‌ها

🔷زبان برنامه‌نویسی Go در توسعه و اجرای اپلیکیشن‌های مختلف در سیستم‌عامل‌های متفاوت، دستگاه‌های موبایل، وب‌اپلیکیشن‌ها و حتی برنامه‌نویسی فرانت‌اند (از طریق ماژول gccgo) کاربرد دارد. در واقع، Golang از طریق به‌کارگیری مترجم GopherJS، کدهای Go را به جاوا اسکریپت‌ جهت استفاده در برنامه‌نویسی فرانت‌اند تبدیل می‌کند.
🔷به‌طور خلاصه، طراحان گوگل این زبان را توسعه دادند تا علاوه‌ بر استفاده از قدرت سایر زبان‌های برنامه‌نویسی، با استفاده از ویژگی‌های زیر نیازمندی‌های خود را نیز برطرف کنند:
🔸- تایپ ایستا (Static typing) و کارایی زمان اجرا (مانند ++C)
🔸- خوانا بودن و کاربردپذیری (مانند پایتون و جاوا اسکریپت)
🔸- شبکه‌سازی با کارایی بالا و چندفرایندی (Multiprocessing)

🔷کسب‌وکارهای زیادی برای توسعه اپلیکیشن‌های خود از زبان برنامه‌نویسی Go بهره برده‌اند که برای مثال می‌توان به Google، Sound cloud، Uber، Netflix، Dropbox و غیره اشاره کرد. علاوه‌براین، برخی از اپلیکیشن‌های متن‌بازی که با زبان Go نوشته شده‌اند عبارتند از: Docker، Kubernetes، Ethereum و غیره.

🔷زبان برنامه نویسی Go زبانی می‌باشد که توسط گوگل عرضه گردیده است. برای اینکه این زبان قابل توسعه باشد، قابلیت open source بودن را به آن اضافه کرده‌اند. با استفاده از زبان golang می‌توانید به عنوان برنامه‌نویس هر نوع نرم‌افزاری را پیاده سازی نمایید.

🔷یادگیری زبان گو بسیار آسان و روان است. سادگی و سهولت استفاده از زبان برنامه‌نویسی گولنگ سبب شده است که در زمان کوتاهی محبوبیت زیادی در بین توسعه‌دهندگان پیدا کند.

🔷زبان برنامه‌نویسی Golang به شما این قابلیت را اعطا می‌کند که ارتباط و دسترسی بیشتر به سخت افزار داشته باشد و سرعت بسیار بالایی در زمینه‌ی نوشتن کد و اجرای برنامه‌ها داشته باشید.

🔷زبان برنامه‌نویسی go تعامل بسیار زیادی با زبان کامپیوتر و انسان دارد همچنین این قابلیت را به شما خواهد داد که با استفاده از آن نرم افزار‌های اندروید را طراحی نمایید. این زبان دارای مکانیسم‌های همپوشان است و می‌تواند در کنار آن، قابلیت کامپایل شدن به زبان ماشین را نیز داشته باشید. زبان برنامه‌نویسی go یکی از زبان‌های بهینه‌سازی شده‌ی در حوزه‌ی وب و سرور و شبکه می‌باشد.

🔷زبان go مانند زبان‌های برنامه نویسی C و C++ و همچنین زبان برنامه‌نویسی پایتون، دارای کدنویسی کارآمد و ساده می‌باشد. با این حال ویژگی‌هایی در زبان‌های دیگر وجود دارد که در زبان برنامه‌نویسی go وجود ندارد، در ادامه چند مورد از این ویژگی‌ها را به شما معرفی می‌کنیم:

🔷زبان go کلاس ندارد و تنها دارای ساختارهایی مختص به خود می‌باشد.
🔷زبان برنامه نویسی go توانایی پشتیبانی از وراثت را دارا نمی‌باشد، به همین دلیل ویرایش کدها آسان‌تر خواهد شد.
🔷در زبان برنامه‌نویسی go خبری از جنریک لیست‌ها نیست.
#golang

🔰 @gopher_academy
در دسته بندی تست ها در مهندسی نرم افزار، unit test جزء تست های White-box حساب می شود یا black-box؟
Anonymous Quiz
94%
White-box
6%
black-box
در دسته بندی تست ها در مهندسی نرم افزار، Integration test جزء تست های White-box حساب می شود یا black-box؟
Anonymous Quiz
43%
White-box
57%
black-box
در دسته بندی تست ها در مهندسی نرم افزار، Code coverageجزء تست های White-box حساب می شود یا black-box؟
Anonymous Quiz
75%
White-box
25%
black-bo؟
در دسته بندی تست ها در مهندسی نرم افزار، Test coverage جزء تست های White-box حساب می شود یا black-box؟
Anonymous Quiz
48%
White-box
52%
black-box
🔷اگه چنین query برای ارتباط با postgresql دارید
🔺SELECT name FROM users WHERE id=?
🔷و خطای زیر رو در خروجی دارید
🔺“Operator does not exist: integer =?” when using Postgres
🔷پرس جوی فوق رو ویرایش کنید به صورت زیر
🔺SELECT name FROM users WHERE id = $1

#note

🔰 @gopher_academy
This media is not supported in your browser
VIEW IN TELEGRAM
🔴 Working Effectively with Legacy Code
.
#book
.

🔰 @gopher_academy
.
👇🏻👇🏻👇🏻PDF👇🏻👇🏻👇🏻
Working_Effectively_with_Legacy_Code_by_Michael_C_Feathers_z_lib.pdf
4.1 MB
🔴 Working Effectively with Legacy Code
.
#book
.

🔰 @gopher_academy
🎯Concurrency vs Parallelism 🎯
.
🔺یکی از مباحثی که باعث گیج شدن برنامه نویسان go میشه تفاوت بین Concurrency و Parallelism هست.
🔺در زبان ساده Concurrency (همزمانی) یعنی برخورد با چند کار در یک لحظه و Parallelism (موازی سازی) اجرای چند کار به صورت همزمان است.

🧐به نظر خیلی واضح نیست بذارید بیشتر توضیح بدم.

🔺درواقع Concurrency یک ویژگی یک برنامه ست که دو یا چند کار همزمان می توانند در حال انجام باشند و Parallelism یک خاصیت run-time است که در آن دو یا چند کار به طور همزمان انجام می شود.

🔺دروافع Concurrency می تواند از Parallelism برای انجام کارهای خود استفاده کند ولی لزوما موازی سازی هدف همزمانی نیست.

🔰 @gopher_academy
🔰redis🔰

🔵تفاوت عمده بین Redis و دیگر سیستمهای پایگاه ذخیره سازی داده ها این است که Redis نه تنها مقدار رشته را می پذیرد بلکه مقادیر داده ای زیر را نیز پشتیبانی می کند :👇👇

🔴لیستی از رشته ها (Lists)
🔴مجموعه ای از رشته ها (Sets)
🔴جداول Hash که مقادیر Key,Value آنها رشته می باشد (Hash Tables)
🔴وHyperLogLogs ها که برای تخمین زدن و برآورد تقریبی کاردینالیتی به کار میرود


🔰برخی از موارد استفاده از Redis 🔰

🔴 Session Cache :‌

یکی از رایج ترین موارد استفاده از ردیس , سیستم کش است . یکی از مزایای خوبه ردیس در کش نسب به سایر سیستم های کشینگ مانند Memcached , ماندگاری بالای اطلاعات است



🔴Full Page Cache (FPC)

شما می توانید برای جلوگیری از تعداد مکرر دفعات مراجعه به دیتابیس و یا دیسک, صفحه ی مورد نظر خود را به صورت کامل در ردیس ذخیره نمایید . همچنین کاربران وردپرس هم می توانند با استفاده از پلاگین عالی wp-redis در سایت خود از ردیس استفاده کنند .



🔴Queues

با استفاده از ردیس می توانید لیستی از مقادیر و یا تسک ها تعریف نمایید و یکی یکی آنها را پردازش و اجرا نمایید .

🔰 @gopher_academy
✳️ What is CI/CD ?

🔹 CI
🔸 مفهوم Continuous integration یا به اختصار CI، سبک یا روشی از کدنویسی است که تیم های توسعه را به سمت اعمال تغییرات کوچک و ثبت مکرر آنها در سورس کنترل میبرد.
هدف تکنیکال CI برقراریه روشی برای BUILD , Package , Test خودکار اپلیکیشن میباشد.
به عنوان مثال فرض کنید در یک تیم پنج نفره کار می کنید و از github به عنوان کد ریپازیتوری خود استفاده میکنید. هر یک از اعضای تیم کدهای و تغییرات خود را هروز به ریپازیتوری مربوطه در گیتهاب push میکنند و ممکن است مواردی پیش آید که یک نفر کدی را push کند که دارای باگ باشد و این مورد منجر به درست کار نکردن و از کار افتادن اپلیکشن میشود.
در اینجاست که CI برای جلوگیری از این اتفاق به کمکتان می آید.
🔹 Benefit of using CI

🔸 از مزیت های CI تنظیم ریپازیتوری به گونه ای است که هر زمانی که کسی کد جدیدی را در ریپازیتوری push میکند، CI به صورت خودکار BUILd ای برای کدهایتارن اجرا میکند و اگر اروری در کدها باشد build نخواهد شد و اعضای تیم از آن مطلع میشوند علاوه بر این میتوانید با نوشتن test case های خودکار، بعد از هر build آن هارا اجرا کنید بدین ترتیب اگر موردی درست کار نکند و fail شود بقیه از ان مطلع خواهند شد.

🔹 CD
🔸 مفهوم continuous delivery و continuous deployment و یا به اختصار CD را میتوان به فرایند خودکاری گفت که از تغییرات اعمال شده برنامه نویسان بروی کدها در ریپازیتوری، یک release برای production انجام میشود تا به وسیله مشتریان اپلیکیشن مورد استفاده قرار گیرد.
برای مثال فرض کنین که اپلیکیشن خود را بروی هاست میزبانی کرده اید و میخواهید فرایند توسعه اپلیکیشن را automate کنید. برای این منظور می توانید CD را طوری پیاده کنید ک وقتی تغییرات را روی branch مستر push کردید به صورت خودکار کدهایتارن رو روی AWS دیپلوی (Deploy) کند

🔰 @gopher_academy
🔺دوستانی که میخوان کتاب های (PDF)داخل کانال رو به صورت کتابی داشته باشن به یکی از آی دی های زیر پیام بدن 🔺
@Skybooks_ir
@Rezacisco2007
👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻👇🏻
🔰لیستی از بهنرین و مهمترین کتاب های گولنگ🔰
.
🔴 Working Effectively with Legacy Code
🔹 https://t.me/gopher_academy/383
.
🔴 Go design patterns
🔹 https://t.me/gopher_academy/370
.
🔴 mastering in go
🔹 https://t.me/gopher_academy/368
.
🔴 building restful web services with go
🔹 https://t.me/gopher_academy/366
.
🔴 concurrency in go
🔹 https://t.me/gopher_academy/363
.
🔴 learn data structure and algorithms with go
🔹 https://t.me/gopher_academy/361
.
🔴 grpc up and running
🔹 https://t.me/gopher_academy/359
.
🔴 go standard library
🔹 https://t.me/gopher_academy/357
.
🔴 software architecture with go
🔹 https://t.me/gopher_academy/355
.
#book

🔰 @gopher_academy
🔸استخدام برنامه‌نویس Golang در شرکت کارخانه نوآوری #تهران
🔹حقوق تا ۸ میلیون تومان

🔗 https://quera.ir/r/JCKN9o

🔰 @gopher_academy