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
🔸استخدام برنامه‌نویس 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
🎯Serverless 🎯چیست؟
درواقع Serverless یک مدل اجرایی از محاسبات ابری است که در آن سرویس‌دهنده ابری به صورت پویا سرویس‌های تخصیص داده شده به یک پروژه را مدیریت می‌کند. در چنین حالتی تمام هزینه‌ها براساس میزان مصرفی خواهد بود که شما از سیستم می‌کنید. بنابراین دیگر خبری از مدل‌های پرداختی قدیمی که در آن شما قبل از استفاده از سیستم هزینه‌ای پرداخت می‌کردید نیست. به نظر می‌رسد که خیلی ایده‌آل است!

بسیاری از سرویس‌دهندگان ابری در دنیا روی این تکنولوژی سرمایه‌گذاری کرده‌اند. به نظر نیز می‌رسد که استفاده از این ساختار روز به روز در حال افزایش بوده و همین موضوع بالا رفتن تعداد سرویس‌دهندگان را نیز توجیه می‌کند.

🔰 @gopher_academy
🎯معماری سنتی در مقابل Serverless

🔰 @gopher_academy
🎯اپلیکیشن Serverless

🔰 @gopher_academy
🎯مزایای استفاده از معماری Serverless
۱- هزینه‌ای که شما بابت زیرساخت می‌دهید تنها به ازای مقداری خواهد بود که استفاده می‌کنید.

۲- روند دیپلوی سریع به شما این اجازه را می‌دهد تا در یک معماری Serverless در کوتاه‌ترین زمان ممکن یک اپلیکیشن را روی سرور اجرا نمایید.

۳- نیازی به هزینه برای استخدام یک فرد در جهت نگه‌داری از زیرساخت‌ها نیست. جدای از هزینه این موضوع باعث می‌شود که مسئولیت شما در قبال اجرای برنامه کم شود.

۴- مقیاس‌پذیری به شما این امکان را می‌دهد تا بدون نگرانی از منابع سرور استفاده کنید.

🎯معایب استفاده از معماری Serverless
۱- نبود کنترل کامل روی سرور

۲- پیچیدگی ساختاری

۳- تست در حالت محلی (Local) می‌تواند سخت باشد

۴- نامعلوم بودن هزینه‌ها در برخی اوقات

۵- نبود ابزارهای مدیریتی کامل

🔰 @gopher_academy
🎯مفهوم Branch Coverage و Path Coverage در تست نرم‌افزار 🎯
.
🔹مفهومBranch Coverage: آیا هر شاخه (branch) موجود در هر ساختار کنترلی (control structure)، مانند if، در مجموعه آزمون مورد نظر، اجرا شده است یا خیر؟ یعنی اگر عبارت if ای داشته باشیم، باید با اجرای مجموعه آزمون مورد نظر، هر یک از حالتهای (شاخه) true و false آن، حداقل یک بار، اجرا شوند.

🔹مفهوم Path Coverage: آیا تمام مسیرهای ممکن در برنامه اجرا شده است یا خیر؟ تمام مسیرهای ممکن در برنامه: تمام شاخه های موجود در تمام ساختارهای کنترلی، فراخوانی ها (call) و بازگشت های (return) توابع و ... . بدیهتا Path Coverage ِ کامل برای یک ماژول نسبتا بزرگ، غیرعملی است (مثلا در صورت داشتن حلقه، تعداد مسیرها ممکن است بی نهایت شود؛ و با افزایش تعداد دستورات کنترلی موجود، تعداد مسیرهای ممکن با مرتبه نمایی رشد میکند). (راه حل: استفاده از Prime Path Coverage)

🔹بنابراین در Branch Coverage فقط به دستورهای کنترلی کار داریم ولی در Path Coverage به تمام مسیرهای ممکن (Branch Coverage زیرمجموعه ای از Path Coverage است؛ یعنی مجموعه آزمونی که Path Coverage کنند، حتما Branch Coverage نیز خواهند کرد).

🔰 @gopher_academy
🎯Code Coverage vs Test Coverage 🎯

🔹گفتن تفاوت این دو مفهوم خیلی سخته ولی میشه گفت Code coverage مقیاسی است که مشخص می کند چه مقدار از خطوط کد توسط test case ها پوشش داده شده و مورد تست قرار گرفته است و Test coverage مقیاسی است که مشخص می کند چه تعداد test case وجود دارد و آیا این test case ها تمام functionality سیستم را مورد تست قرار می دهند به عبارت دیگر چند درصد از functionality سیستم توسط test case ها مورد تست قرار گرفته است.

🔰 @gopher_academy
🎯آشنایی با تفاوت های Code Coverage و Test Coverage🎯
در ادامه به چهار مورد از مهم ترین تفاوت های Code Coverage و Test Coverage پرداخته ایم.


🔹درواقع Code Coverage میزان اجرای کد برنامه هنگام اجرای برنامه را توضیح می دهد اما Test coverage موارد آزمون را که در هر مدرک نوشته و ذکر شده است ، توصیف می کند.


🔹درواقعCode coverage بخشی از آزمایش white-box است که در آن کد مورد آزمایش قرار می گیرد در حالی که Test coverage بخشی از آزمایش black-box است که در آن عملکرد مطابق اسناد مورد نیاز آزمایش می شود. اندازه گیری Code coverage دقیقاً روی کد برنامه مورد استفاده قرار می گیرد.


🔹درواقعTest coverage بیشتر موارد تست را که با ساختن سند مورد نیاز به عنوان پایه ایجاد می شوند ، پوشش می دهد و هنگام Test coverage نیازی ندارید که کد را بررسی کنید.


🔹درواقعCode coverage یک فرایند ساده است که به دنبال بهبود پوشش کدهای مورد آزمایش و یافتن نقایص آن است؛ از طرف دیگر ، Code coverage یک روش آزمایش black-box است که روش آزمایش باید مطابق با الزامات مشخص شده تراز شود.


🔹درواقعTest coverage به راحتی تنظیم می شود و به پیدا کردن اشکالات در جریان برنامه کمک می کند اما Test coverage عملکردها را آزمایش کرده و ویژگیهای نرم افزار را آزمایش می کند.


🔹درواقعCode Coverage و Test Coverage هر دو برای اندازه گیری کیفیت برنامه کاربردی ساخته شده اند اما یکی جنبه کد نویسی را پوشش می دهد و دیگری جنبه الزامات را.
را Code Coverage توصیف می کند که کد برنامه کاربردی اجرا شده است و Test Coverage توصیف می کند که چه مواردی تحت پوشش قرار گرفته است. در هنگام آزمایش یک برنامه، هر دو به روش های خاص خود دارای اهمیت هستند و به ارائه محصول با کیفیت کمک می کنند.

🔰 @gopher_academy
در حال حاضر کدوم برنامه رو برای کد زدن گو انتخاب می کنید؟
Anonymous Poll
58%
jetbrains goland
45%
VS Code
🎯قسمت هفتم کار با Gin Web Framework🎯
🔷 فهرست بخش هفتم از این مقاله
🔸Serving static files
🔸Serving data from file
🔸Serving data from reader
🔸HTML rendering
🔸Custom Template renderer
🔸Custom Template Funcs
.

🔴 https://vrgl.ir/x0UTP
.
#gin

🔰 @gopher_academy
محفل آریاییتان طلایی ، دلهایتان دریایی ، شادیهایتان یلدایی ، پیشاپیش مبارک باد این شب اهورایی
روی گل شما به سرخی انار

+ یلداتون مبارک

🔰 @gopher_academy
🎯تست های دو گزینه ای مربوط به مفاهیم test نویسی در مهندسی نرم افزار🎯
🔹 https://t.me/gopher_academy/375
🔹 https://t.me/gopher_academy/376
🔹 https://t.me/gopher_academy/377
🔹 https://t.me/gopher_academy/378
.
#quiz

🔰 @gopher_academy
توجه توجه توجه

⚠️دوستانی که مقاله ای توی ویرگول یا در هر سایتی دیگه در مورد گولنگ منتشر کردن لینک رو برامون بفرستن و ما داخل کانل بزاریم
⚠️سورس کدی اگه توی گیت هاب دارید برامون بفرستید
⚠️اگه ویدیویی دارید رو هم برامون بفستید
تمام موارد بالا با نام نویسنده مقاله یا توسعه دهند کد یا مدرس ویدیوی در کانال درج می شود (فیلم + مقاله + سورس کد )
🔸admin: @mrbardia72

🔰 @gopher_academy
🎯 zero values: 🎯

🔹 0 for all integer types,
🔹 0.0 for floating point numbers,
🔹 false for booleans,
🔹 "" for strings,
🔹 nil for interfaces, slices, channels, maps, pointers and functions.

🔰 @gopher_academy
🎯قسمت هشتم کار با Gin Web Framework🎯
🔷 فهرست بخش هشتم از این مقاله
🔸Multitemplate
🔸Redirects
🔸Custom Middleware
🔸Using BasicAuth() middleware
🔸Goroutines inside a middleware
🔸Custom HTTP configuration
🔸Support Let's Encrypt
.

🔴 https://vrgl.ir/pTeDF
.
#gin

🔰 @gopher_academy
🎯 Data Types in Go 🎯

🔸Basic type:
🔹Numbers, strings, and booleans come under this category.

🔸Aggregate type:
🔹Array and structs come under this category.

🔸Reference type:
🔹Pointers, slices, maps, functions, and channels come under this category.

🔸Interface type
.

🔰 @gopher_academy
Integers

🔰 @gopher_academy
Floating-Point Numbers

🔰 @gopher_academy