Gopher Academy
3.34K subscribers
920 photos
40 videos
280 files
2.01K links
🕸 Gopher Academy

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

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

ادمین:
@mrbardia72
Download Telegram
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
🎯DevOps Guide from basic to advanced with Interview Questions and Notes🎯
🎯مجموعه‌ای از نکات و موارد مصاحبه‌ای برای شغل DevOps از سطح‌بندی مقدماتی تا پیشرفته🎯

#devops #guide #cheatsheet #interview #question #questions #note

🔺 github.com/Tikam02/DevOps-Guide

🔰 @gopher_academy
🎯 Multitasking vs Multithreading🎯

🔻آیا تا به حال مدت ها منتظر کسی یا کاری بوده اید ، در حالی که هیچ کاری انجام نمی دهید و فکر می کنید که می توانستید کار دیگری انجام دهید؟ این زمانی است که اهمیت multithreading را درک می کنید. انتظار وقتی آسانتر می شود که بتوانید کارهای دیگری را انجام دهید در حالی که منتظر کسی یا چیز دیگری هستید. برای روشن تر شدن مفهوم چند وظیفه ای ، مادر خود را در نظر بگیرید. از زمان به دنیا آمدن ، من مادرم را دیده ام که همزمان چندین کار را انجام می دهد و همیشه تعجب می کنم که او چگونه این کار را انجام می دهد؟ او خانه را تمیز می کند ، لباس های می شوید و همزمان غذا را آماده می کند.

▪️در برنامه نویسی ، شما با وضعیت های بسیاری روبرو میشوید که مجبور می شوید از multithreading و multitasking استفاده کنید.

به عنوان مثال ، هنگام خواندن یک file بزرگ ، بهتر است به کاربر اجازه دهید کارهای دیگری انجام دهد. از این رو ، چه تفاوتی بین multithreading و multitasking وجود دارد؟ آیا آنها یکسان هستند؟

🔸Multitasking

به این معنی است که به کاربر اجازه می دهد چندین task را همزمان انجام دهد. کاربر می تواند ضمن نوشتن یک وبلاگ ، به موسیقی در حال اجرا در پس زمینه گوش دهد. بنابراین کامپیوتر چندین کار را برای کاربر انجام می دهد. هر task به منابع نیاز دارد. از آنجا که کامپیوتر از منابع محدودی برخوردار است ، تعداد کارهای انجام شده در همان زمان نیز محدود است.

🔹Multithreading

ترد ها مربوط به بالاترین سطح کد اجرا شده توسط یک پردازنده هستند ، بنابراین با بسیاری از تردها، سی پی یو شما می تواند همزمان چندین کار را انجام دهد. تمام CPU ها تردهای فعال دارند و هر فرایندی که در رایانه شما انجام می شود حداقل یک ترد واحد دارد.
ترد برای انجام task های متعدد استفاده می شود. هر task می تواند چندین thread داشته باشد. در یک برنامه multithreaded کاربر می تواند در مدت زمان کوتاتر نسبت به یک برنامه single thread کارهای بیشتری انجام دهد. امروزه تقریباً در هر برنامه
از multiple threading استفاده شده است. یک برنامه یا یک process می تواند یک user interface thread داشته باشد که در تعامل با کاربر باشد
و background worker threads که کارهای دیگری را انجام می دهند.
#multithread
#multitask
#thread
#task
#async

🔰 @gopher_academy