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

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

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

ادمین:
@mrbardia72
Download Telegram
🎯چه نوع دیتایی رو میشه باهم مقایسه کرد؟🎯

یا بهتره بگیرم در چه مواقعی میشه از عملگر == (مساوی بودن) یا =! (نامساوی بودن) استفاده کرد؟

۱- داده های basic یا پایه قابل مقایسه هستن. این داده ها شامل نوع های int , string , complex , boolean, float میشن و نوع pointer (اشاره گر)

۲- نوع های map , slice و function اصلا قابل مقایسه نیستن

۳- در مورد interface ها قضیه به چه صورته؟ وقتی دوتا متغیر از نوع interface ها رو باهم مقایسه میکنیم در صورتی که هردو nil باشن یا نوع و مقدار دیتایی که داخل اون متغیر هست باهم یکسان باشه , اون دوتا متغیر یکسان هستن. اما اگه مقدار دوتا متغیر باهم قابل مقایسه نباشه با panic مواجهه خواهیم شد. (مثلا مقدار از نوع slice باشه)

نکته: نوع های داده ای رو که بشه باهم مقایسه کرد میتونیم به عنوان key یا index توی map ها استفاده کنیم! اما نوع های داده ای که قابل مقایسه نیستن رو نمیشه به هیچ وجهه درون map ها به عنوان index استفاده کرد.


🔰 @gopher_academy
🔴Visualizing gRPC Language Stacks🔴

در gRPC-Go ، به دلیل عدم پشتیبانی از بسیاری از تنظیمات ، پشته بسیار ساده تر است.
در اینجا یک نمای کلی از سطح بالای پشته Go وجود دارد:
ساختار در اینجا کمی متفاوت است. از آنجا که فقط یک زبان وجود دارد ، جریان از بالای پشته به پایین خطی تر است. ب
درواقع ، gRPC Go می تواند از پیاده سازی HTTP / 2 یا بسته Go net / http استفاده کند.

🔰 @gopher_academy
Gopher Academy
🎯آموزش Regular Expressions در گولنگ🎯 Understanding Regular Expressions 🔴 https://t.me/gopher_academy/593 Dealing With Special Characters 🔴 https://t.me/gopher_academy/599 Using Boundaries 🔴 https://t.me/gopher_academy/606 Using Classes 🔴 https:/…
🔴Using Boundaries🔴
خط ۵
پیدا کردن کلمه father در رشته
خط ۸
انتهای رشته کلمه father باشد
خط ۱۱
شروع رشته کلمه Hello باشد
خط ۱۳
پیدا کردن کلمه kill در رشته
خط ۱۶
جست و جوی بخشی از جمله killed در رشته
خط ۱۹
ادامه کلمه kill نباید چیزی باشد
خط ۲۲
قبل و بعد kill نباید چیزی باشد
خط ۲۵
قبل و بعد killed نباید چیزی باشد
خط ۲۸
قبل Montoya چیزی نباید باشد اما بعدش باید یه ویرگول باشد

🔰 @gopher_academy
👀1
Gopher Academy
🔴Using Classes🔴 انواع الگو ها جهت استفاده در کد 🔰 @gopher_academy
👆🏻👆🏻👆🏻👆🏻
پیدا کردن یه عدد سه رقمی در رشته

🔰 @gopher_academy
Gopher Academy
🔴Using Classes🔴 انواع الگو ها جهت استفاده در کد 🔰 @gopher_academy
👆🏻👆🏻👆🏻👆🏻
توی خط ۳ دنبال رشته ACGTمیگرده که بعدش دنباله ای داشته باشه
توی خط ۶ هم دیگه واضح هست

🔰 @gopher_academy
Gopher Academy
🎯آموزش Regular Expressions در گولنگ🎯 Understanding Regular Expressions 🔴 https://t.me/gopher_academy/593 Dealing With Special Characters 🔴 https://t.me/gopher_academy/599 Using Boundaries 🔴 https://t.me/gopher_academy/606 Using Classes 🔴 https:/…
🔴Compiling Your Regex🔴
برای اینکه بخواییم چندین الگو رو توی یه رشته به کار ببریم از کد فوق استفاده می کنیم
با استفاده از MustCompile
دقت کنبد که فقط کافی هست یکی از الگو ها با رشته ما صدق کند

🔰 @gopher_academy
🔴بقول Uncle Bob، سیستم‌هایی که مدیریت وابستگی(SOLID) در آن رعایت نمی‌شود این ۴ بو (Smell) را همراه خود خواهند داشت:🔴

سختی یا Rigidity
سختی یا Rigidity یعنی ناتوانی در تغییر. / اگر برای تغییر دادن بخش کوچکی از کد مجبور شویم کل سیستم را مجددا rebuild کنیم، آنوقت آن سیستم سخت شده یا دچار Rigidty شده است.

شکنندگی یا Fragility
مفهوم Fragility و Rigidity بسیار بهم نزدیک اند. درواقع شکنندگی و سختی، علت و معلول یکدیگر هستند. شکنندگی یا Fragility اشاره دارد به اینکه هر موقع تغییری در سیستم ایجاد می‌کنید در بخش (یا بخش‌های) دیگری از سیستم - که حتی هیچ ربطی با آن قسمت ندارد - با خطا و مشکل مواجه می‌شوید.

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

چسبناکی یا Viscosity
چسبناکی، ویسکوزیته یا Viscosity مقاومت در مقابل تغییر است. وقتی که ساخت مجدد و تست سیستم برای ما سخت می‌شود و ترجیح بدهیم از خیر تغییرات آن قسمت بگذریم، آنگاه کد ما viscous یا چسبناک است.


🔰 @gopher_academy
سیستم عاملی فعلیت برای کد زدن؟
Final Results
77%
Linux
30%
Window
7%
Mac
🔴یه کتاب خوب برای درک بهتر اصول مهندسی نرم افزار🔴

Fundamentals of Software Architecture: An Engineering Approach

لینک دانلود
https://b-ok.cc/book/5407664/01e173

فایل پسوند epub هست که با استفاده از سایت زیر اون رو به pdf تبدیل کنید
https://www.zamzar.com


🔰 @gopher_academy
Gopher Academy
🎯آموزش Regular Expressions در گولنگ🎯 Understanding Regular Expressions 🔴 https://t.me/gopher_academy/593 Dealing With Special Characters 🔴 https://t.me/gopher_academy/599 Using Boundaries 🔴 https://t.me/gopher_academy/606 Using Classes 🔴 https:/…
🔴Finding🔴

از سمت چپ شروع به تگاه کردن می کنه تا الگوی مانند الگوهای خط دو را پیدا کند و بعدش به انتها جمله همون الگوی رو که پیدا کرد رو بزاره


🔰 @gopher_academy
Gopher Academy
🎯آموزش Regular Expressions در گولنگ🎯 Understanding Regular Expressions 🔴 https://t.me/gopher_academy/593 Dealing With Special Characters 🔴 https://t.me/gopher_academy/599 Using Boundaries 🔴 https://t.me/gopher_academy/606 Using Classes 🔴 https:/…
🔴Replacing🔴
همان طور که از کد فوق معلوم هست در خط ۳۳ ما یه تابع داریم به نام ReplaceAllStringFunc که کارش اینه یه تکست میگیره و یه الگو که به صورت map در آوردیم و رشته مدنظر رو باهاش تطبیق میده و جایگذین می کنه
به همین راحتی

🔰 @gopher_academy
Forwarded from Gopher Academy
🎯آموزش Regular Expressions در گولنگ🎯

Understanding Regular Expressions
🔴 https://t.me/gopher_academy/593

Dealing With Special Characters
🔴 https://t.me/gopher_academy/599

Using Boundaries
🔴 https://t.me/gopher_academy/606

Using Classes
🔴 https://t.me/gopher_academy/608
🔴 https://t.me/gopher_academy/609
🔴 https://t.me/gopher_academy/610

Using Alternatives
🔴 https://t.me/gopher_academy/611

Compiling Your Regex
🔴 https://t.me/gopher_academy/612

Finding
🔴 https://t.me/gopher_academy/617

Replacing
🔴 https://t.me/gopher_academy/618



🔰 @gopher_academy
🔺دوستانی که میخوان PDF های داخل کانال رو به صورت کتابی (جلدی) داشته باشن به یکی از آی دی های زیر پیام بدن 🔺
@Skybooks_ir
@Rezacisco2007

#book

🔰 @gopher_academy
Gopher Academy pinned «سیستم عاملی فعلیت برای کد زدن؟»
Forwarded from Bardia
Fundamentals_of_Software_Architecture_An_Engineering_Approach_by.pdf
59.3 MB
🔴یه کتاب خوب برای درک بهتر اصول مهندسی نرم افزار🔴

https://t.me/gopher_academy/616

Fundamentals of Software Architecture: An Engineering Approach

🔰 @gopher_academy
🔴آموزش proto3 از صفر تا صد🔴
proto?
🔴https://t.me/gopher_academy/627

Defining A Message Type
🔴 https://t.me/gopher_academy/628

Assigning Field Numbers
🔴https://t.me/gopher_academy/629

Adding Comments
🔴 https://t.me/gopher_academy/630

Reserved Fields
🔴 https://t.me/gopher_academy/631

What's Generated From Your .proto?
🔴 https://t.me/gopher_academy/632

Scalar Value Types
🔴 https://t.me/gopher_academy/633

Default Values
🔴 https://t.me/gopher_academy/634

Enumerations
🔴 https://t.me/gopher_academy/636

Using Other Message Types
🔴 https://t.me/gopher_academy/638

Nested Types
🔴 https://t.me/gopher_academy/639

Updating A Message Type
🔴 https://t.me/gopher_academy/641

Any
🔴 https://t.me/gopher_academy/642

Oneof
🔴 https://t.me/gopher_academy/643

Maps
🔴 https://t.me/gopher_academy/647

Packages
🔴 https://t.me/gopher_academy/648

Defining Services
🔴 https://t.me/gopher_academy/649
🔴 https://t.me/gopher_academy/650

JSON Mapping
🔴 https://t.me/gopher_academy/664
🔴 https://t.me/gopher_academy/665
🔴 https://t.me/gopher_academy/666

JSON options
🔴 https://t.me/gopher_academy/667

Options
🔴

Generating Your Classes
🔴

#proto3

🔰 @gopher_academy
🔴پروتوباف🔴

اگر می‌خواید بدونید پروتوباف چیه بهتره اول انواع ساختار مرسوم دیتا چیه، در مرحله اول CSV وجود داشت که یک سری ستون تعریف میکردید و برای اون ستون ها ردیف اضافه می‌کردید.

میشد راحت ساختش، راحت خوندش، راحت درکش کرد ولی نمیشد نوع دیتاهارو تعریف کرد، وقتی توی دیتاتون ویرگول داشته باشید کارِتون خیلی سخت میشه، نمی‌تونید مطمئن باشید دارید دیتارو توی ستون درست ذخیره می‌کنید یا نه.

در مرحله بعد XML داشتیم که فکر نمیکنم دیگه هیچ‌جایی استفاده بشه پس توضیح نمیدم ولی توی وب خیلی کاربرد داشت تا اینکه جی‌سون معرفی شد.

جی‌سون هر نوع دیتایی تو خودش جا میداد (آرایه، آبجکت، تو در تو)، تو اپلیکیشن‌های وب خیلی محبوب بود، با تمام زبان‌های برنامه نویسی سازگار بود، به راحتی توی شبکه انتقال داده میشد. ولی چندتایی مشکل داشت، برای مثال الگویی نداشت و توی هر ریکوئست میتونست شکل متفاوتی داشته باشه، چون کلید‌هارو هر دفعه تکرار میکنه حجم بزرگتری داشت، همچنین هیچ داکیومنت یا کامنتی همراشون ندارن.

و اما پروتوباف (protocol buffers) در سال ۲۰۰۸ توسط گوگل ایجاد شد (که در اون تاریخ SPDY نام داشت)، یک استاندارده که بیشتر برای ارتباط داخلی (ارتباط سرویس‌ها با یکدیگر) استفاده میشه اما این روزها دارن تلاش میکنند که این استاندارد سمت کاربر هم قابل استفاده باشه که فعلا در اندروید امکان پذیره و نمونه‌هایی هم برای مرورگر آماده شده، به علت باینری بودن قابل استفاده در HTTP/2 است از همین جهت سرعت و پرفورمنس خیلی بهتری داره.

مزیت‌های پروتوباف: تایپ دیتاها تعریف شدس، دیتاها بصورت اتوماتیک کمپرس میشن، تمام مسیج‌های ارسالی و دریافتی ساختار (schema) دارن (توی فایل proto تعریف میشن و بعدا توسط جنریتور کد مخصوص زبان شما جنریت میشه)، داکیومنت میتونه توی فایل proto نوشته بشه، دیتاها میتونه توی هر زبان برنامه نویسی‌ای خونده بشه، ساختار (schema) میتونه هرزمانی توسعه پیدا کنه، حدود ۷ برابر سریعتر از جیسونه، کدها بصورت اتوماتیک برای زبان شما جنریت میشه.

و معایب پروتوباف: ممکنه کد جنریتورش بعضی از زبانها رو ساپورت نکنه، نمی‌تونید دیتاهارو موقع انتقال با تکست ادیتور باز کنید (چون باینتریه).

#proto3

🔰 @gopher_academy
Gopher Academy
🔴آموزش proto3 از صفر تا صد🔴 proto? 🔴https://t.me/gopher_academy/627 Defining A Message Type 🔴 https://t.me/gopher_academy/628 Assigning Field Numbers 🔴https://t.me/gopher_academy/629 Adding Comments 🔴 https://t.me/gopher_academy/630 Reserved Fields…
🔴Defining A Message Type🔴

نحوه تعریف فایل protoبه صورت شکل فوق هست یعنی در گام اول ورژن سینتکس فایل protoخودتون رو مشخص می کنید
اگر مشخص نکنید به صورت پیش فرض روی ورژن ۲ تنظیم می شود
ما اینجا یه message داریم که تشکیل شده از یه سری فیلد هست
و این فیلد ها از type و name و number تشکیل شده
که تایپ ها نوع های ما هستن
و numberها شماه های ما هستن که از ۱ تا ۱۵ هستن در ادامه در موردشون صحبت می کنیم

🔰 @gopher_academy