🔴یه کتاب خوب برای درک بهتر اصول مهندسی نرم افزار🔴
✅ Fundamentals of Software Architecture: An Engineering Approach
✅ لینک دانلود
❌ https://b-ok.cc/book/5407664/01e173
✅ فایل پسوند epub هست که با استفاده از سایت زیر اون رو به pdf تبدیل کنید
❌ https://www.zamzar.com
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅ 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
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
✅ همان طور که از کد فوق معلوم هست در خط ۳۳ ما یه تابع داریم به نام 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
✅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
@Skybooks_ir
@Rezacisco2007
#book
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
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
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
✅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
✅اگر میخواید بدونید پروتوباف چیه بهتره اول انواع ساختار مرسوم دیتا چیه، در مرحله اول 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
✅ نحوه تعریف فایل protoبه صورت شکل فوق هست یعنی در گام اول ورژن سینتکس فایل protoخودتون رو مشخص می کنید
✅اگر مشخص نکنید به صورت پیش فرض روی ورژن ۲ تنظیم می شود
✅ما اینجا یه message داریم که تشکیل شده از یه سری فیلد هست
✅و این فیلد ها از type و name و number تشکیل شده
✅که تایپ ها نوع های ما هستن
✅و numberها شماه های ما هستن که از ۱ تا ۱۵ ✅هستن در ادامه در موردشون صحبت می کنیم
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴Assigning Field Numbers🔴
✅در پروتوبافر اسم فیلدها مهم نیستند (البته منظورمون بعد از بیلد هست، وگرنه موقع دولوپ خیلی هم مهمه!)،
✅چیزی که مهمه تگها هستند، منظورمون همون عدادی هستند که در انتهای هر فیلد به ترتیب ۱ ۲ ۳ مینویسیم،
✅در پروداکشن برای شناسایی فیلدها از اسمشون استفاده نمیشه بلکه از تگشون استفاده میشه، پس هر فیلد باید یک تگ منحصر به فرد داشته باشه،
✅کوچیکترین تگی که میتونید استفاده کنید ۱ هست و بزرگترین ۵۳۶،۸۷۰،۹۱۱ هستش، اگر فکر میکنید این مقدار براتون کافی نیست احتمالا برنامهتون منطق اشتباهی داره،
✅همچنین شما نمیتونید از تگهای ۱۹۰۰۰ تا ۱۹۹۹۹ استفاده کنید، این تگها توسط گوگل برای استفادههای خاص رزرو شدن.
✅چیزی که لازمه بدونید تگهای ۱ تا ۱۵ فقط یک بایت فضا اشغال میکنند و تگهای ۱۶ تا ۲۰۴۷ دو بایت فضا اشغال میکنند.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅در پروتوبافر اسم فیلدها مهم نیستند (البته منظورمون بعد از بیلد هست، وگرنه موقع دولوپ خیلی هم مهمه!)،
✅چیزی که مهمه تگها هستند، منظورمون همون عدادی هستند که در انتهای هر فیلد به ترتیب ۱ ۲ ۳ مینویسیم،
✅در پروداکشن برای شناسایی فیلدها از اسمشون استفاده نمیشه بلکه از تگشون استفاده میشه، پس هر فیلد باید یک تگ منحصر به فرد داشته باشه،
✅کوچیکترین تگی که میتونید استفاده کنید ۱ هست و بزرگترین ۵۳۶،۸۷۰،۹۱۱ هستش، اگر فکر میکنید این مقدار براتون کافی نیست احتمالا برنامهتون منطق اشتباهی داره،
✅همچنین شما نمیتونید از تگهای ۱۹۰۰۰ تا ۱۹۹۹۹ استفاده کنید، این تگها توسط گوگل برای استفادههای خاص رزرو شدن.
✅چیزی که لازمه بدونید تگهای ۱ تا ۱۵ فقط یک بایت فضا اشغال میکنند و تگهای ۱۶ تا ۲۰۴۷ دو بایت فضا اشغال میکنند.
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴Adding Comments🔴
شما میتونید کامنتاتون به فایل پروتوباف اضافه کنید تا نیازی به نوشتن داکیومنت ضافه مثل سرویسهای رستفول نباشید، شما فقط فایلهای پروتو در اختیار بقیه دولوپرها قرار میدید و اونها سرویس مورد نظر رو کال میکنند.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
شما میتونید کامنتاتون به فایل پروتوباف اضافه کنید تا نیازی به نوشتن داکیومنت ضافه مثل سرویسهای رستفول نباشید، شما فقط فایلهای پروتو در اختیار بقیه دولوپرها قرار میدید و اونها سرویس مورد نظر رو کال میکنند.
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴Reserved Fields🔴
✅شما میتونید تگ یا اسم فیلدهارو به دلایل مختلف رزرو کنید و حتی رنجی از تگهارو رزرو کنید
✅ولی یادتون باشه نمیتونید تگ و اسم فیلد باهم میکس و رزرو کنید، حتما باید جدا جدا باشن.
✅نکته مهم اینه هیچوقت و هیچوقت مقادیر رزرو رو حذف نکنید، برای مثال بعد چندماه یا چندسال نگید خب خیلی وقته از این رزروها میگذره و دیگه بهش نیازی ندارم پس بذار حذفش کنم، نه، شما همیشه بهشون نیاز دارید، همیشه ممکنه به باگ یا کانفلیکت بخورید.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅شما میتونید تگ یا اسم فیلدهارو به دلایل مختلف رزرو کنید و حتی رنجی از تگهارو رزرو کنید
✅ولی یادتون باشه نمیتونید تگ و اسم فیلد باهم میکس و رزرو کنید، حتما باید جدا جدا باشن.
✅نکته مهم اینه هیچوقت و هیچوقت مقادیر رزرو رو حذف نکنید، برای مثال بعد چندماه یا چندسال نگید خب خیلی وقته از این رزروها میگذره و دیگه بهش نیازی ندارم پس بذار حذفش کنم، نه، شما همیشه بهشون نیاز دارید، همیشه ممکنه به باگ یا کانفلیکت بخورید.
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴What's Generated From Your .proto?🔴
زمانی که شما فایل proto رو برای زبان خاصی جنریت می کنید - برای هر زبان یه سری فایل های دیگه ای رو جنریت می کند
✅برای C ++ یه فایل .h و .cc تولید می کند ، با یک کلاس برای هر نوع پیام که در پرونده شما توصیف شده است.
✅برای java ، یک فایل .java با کلاس برای هر نوع پیام و همچنین کلاسهای Builder ویژه برای ایجاد نمونه های کلاس پیام ایجاد می کند.
✅برای python کمی متفاوت است - پایتون یک ماژول با توصیف کننده ایستا از هر نوع پیام در .proto شما ایجاد می کند ، سپس با یک کلاس بزرگ برای ایجاد کلاس دسترسی به داده های لازم پایتون در زمان اجرا استفاده می شود.
✅برای Go ، یک فایل .pb.go برای هر نوع پیام در پرونده شما ایجاد می کند.
✅برای Ruby ، یک فایل .rb با ماژول Ruby شامل انواع پیام های شما تولید می کند.
✅برای Objective-C ، از هر .proto ، یک فایل pbobjc.h و pbobjc.m تولید می کند ، با یک کلاس برای هر نوع پیام که در پرونده شما توصیف شده است.
✅برای C # ، از هر .proto یک فایل .cs تولید می کند ، با یک کلاس برای هر نوع پیام توصیف شده در پرونده شما.
✅برای dart ، برای هر نوع پیام در پرونده شما ، یک فایل .pb.dart با کلاس تولید می کند.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
زمانی که شما فایل proto رو برای زبان خاصی جنریت می کنید - برای هر زبان یه سری فایل های دیگه ای رو جنریت می کند
✅برای C ++ یه فایل .h و .cc تولید می کند ، با یک کلاس برای هر نوع پیام که در پرونده شما توصیف شده است.
✅برای java ، یک فایل .java با کلاس برای هر نوع پیام و همچنین کلاسهای Builder ویژه برای ایجاد نمونه های کلاس پیام ایجاد می کند.
✅برای python کمی متفاوت است - پایتون یک ماژول با توصیف کننده ایستا از هر نوع پیام در .proto شما ایجاد می کند ، سپس با یک کلاس بزرگ برای ایجاد کلاس دسترسی به داده های لازم پایتون در زمان اجرا استفاده می شود.
✅برای Go ، یک فایل .pb.go برای هر نوع پیام در پرونده شما ایجاد می کند.
✅برای Ruby ، یک فایل .rb با ماژول Ruby شامل انواع پیام های شما تولید می کند.
✅برای Objective-C ، از هر .proto ، یک فایل pbobjc.h و pbobjc.m تولید می کند ، با یک کلاس برای هر نوع پیام که در پرونده شما توصیف شده است.
✅برای C # ، از هر .proto یک فایل .cs تولید می کند ، با یک کلاس برای هر نوع پیام توصیف شده در پرونده شما.
✅برای dart ، برای هر نوع پیام در پرونده شما ، یک فایل .pb.dart با کلاس تولید می کند.
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴Scalar Value Types🔴
✅احتمالا موقع نوشتن فایل پروتو گیج بشید که باید از کدوم یکی نوع مقدار استفاده کنید، برای مثال فقط برای اعداد گزینههای:
int32, int64
uint32, uint64
sint32, sint64
fixed32, fixed64
sfixed32, sfixed64
میتونید انتخاب کنید.
✅برای روشنتر شدن موضوع توصیه میکنم از لینک زیر به داکیومنت اصلی نگاهی بندازید،جدولی میبینید که توضیح کاملی از تایپ موردنظر تو زبانی که کار میکنید داره.
https://developers.google.com/protocol-buffers/docs/proto3#scalar
✅تمام مقادیر دو نوع ۳۲ بیت و ۶۴ بیت دارن.
✅تمام نوعها ممکنه بتونند اعداد منفی بگیرن یا نگیرن. (Signed/Unsigned)
✅تمام این تایپها موقع کامپایل تبدیل به تایپ قابل فهم برای زبانهای برنامه شما میشن، پس حتما از جدول این صفحه استفاده کنید.
✅درک این تایپها کمک میکنه تا برنامهای با پرفورمنس بالا بنویسید.👇🏻
✅تایپ int32 و sint32 میتونه مقادیر -۲،۱۴۷،۴۸۳،۶۴۸ تا ۲،۱۴۷،۴۸۳،۶۴۷ در خودش ذخیره کنه
✅تایپ uint32 میتونه مقادیر ۰ تا ۴،۲۹۴،۹۶۷،۲۹۵ در خودش ذخیره کنه.
✅تایپ int64 و sint64 میتونه مقادیر -۹،۲۲۳،۳۷۲،۰۳۶،۸۵۴،۷۷۵،۸۰۸ تا ۹،۲۲۳،۳۷۲،۰۳۶،۸۵۴،۷۷۵،۸۰۷ در خودش ذخیره کنه.
✅تایپ uint64 میتونه مقادیر ۰ تا ۱۸،۴۴۶،۷۴۴،۰۷۳،۷۰۹،۵۵۱،۶۱۵ در خودش ذخیره کنه.
✅بنابراین یادتون باشه تایپهای uint32 و uint64 یا به اصطلاح Unsigned نمیتونند مقادیر منفی در خودشون ذخیره کنند.
✅تایپهای int32 و int64 به صورت رسمی اعداد منفی قبول نمیکنند. (در این تایپ اعداد منفی فضای بیشتری اشغال میکنند)
✅تایپهای sint32 و sint64 اعداد منفی قبول میکنند. (با تکنیکی به اسم ZigZag اعداد منفی فضای کمی اشغال میکنند)
✅تایپ fixed32 همیشه ۴ بایت اشغال میکنه، اگر عددتون بزرگتر از ۲۶۸،۴۳۵،۴۵۶ بود کاراییش بهتر از uint32 هست، بهتره از این تایپ استفاده کنید.
✅تایپ fixed64 همیشه ۸ بایت اشتغال میکنه، اگر عددتون بزرگتر از ۷۲،۰۵۷،۵۹۴،۰۳۷،۹۲۷،۹۴۰ بود کاراییش بهتر از uint64 هست، بهتره از این تایپ استفاده کنید.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅احتمالا موقع نوشتن فایل پروتو گیج بشید که باید از کدوم یکی نوع مقدار استفاده کنید، برای مثال فقط برای اعداد گزینههای:
int32, int64
uint32, uint64
sint32, sint64
fixed32, fixed64
sfixed32, sfixed64
میتونید انتخاب کنید.
✅برای روشنتر شدن موضوع توصیه میکنم از لینک زیر به داکیومنت اصلی نگاهی بندازید،جدولی میبینید که توضیح کاملی از تایپ موردنظر تو زبانی که کار میکنید داره.
https://developers.google.com/protocol-buffers/docs/proto3#scalar
✅تمام مقادیر دو نوع ۳۲ بیت و ۶۴ بیت دارن.
✅تمام نوعها ممکنه بتونند اعداد منفی بگیرن یا نگیرن. (Signed/Unsigned)
✅تمام این تایپها موقع کامپایل تبدیل به تایپ قابل فهم برای زبانهای برنامه شما میشن، پس حتما از جدول این صفحه استفاده کنید.
✅درک این تایپها کمک میکنه تا برنامهای با پرفورمنس بالا بنویسید.👇🏻
✅تایپ int32 و sint32 میتونه مقادیر -۲،۱۴۷،۴۸۳،۶۴۸ تا ۲،۱۴۷،۴۸۳،۶۴۷ در خودش ذخیره کنه
✅تایپ uint32 میتونه مقادیر ۰ تا ۴،۲۹۴،۹۶۷،۲۹۵ در خودش ذخیره کنه.
✅تایپ int64 و sint64 میتونه مقادیر -۹،۲۲۳،۳۷۲،۰۳۶،۸۵۴،۷۷۵،۸۰۸ تا ۹،۲۲۳،۳۷۲،۰۳۶،۸۵۴،۷۷۵،۸۰۷ در خودش ذخیره کنه.
✅تایپ uint64 میتونه مقادیر ۰ تا ۱۸،۴۴۶،۷۴۴،۰۷۳،۷۰۹،۵۵۱،۶۱۵ در خودش ذخیره کنه.
✅بنابراین یادتون باشه تایپهای uint32 و uint64 یا به اصطلاح Unsigned نمیتونند مقادیر منفی در خودشون ذخیره کنند.
✅تایپهای int32 و int64 به صورت رسمی اعداد منفی قبول نمیکنند. (در این تایپ اعداد منفی فضای بیشتری اشغال میکنند)
✅تایپهای sint32 و sint64 اعداد منفی قبول میکنند. (با تکنیکی به اسم ZigZag اعداد منفی فضای کمی اشغال میکنند)
✅تایپ fixed32 همیشه ۴ بایت اشغال میکنه، اگر عددتون بزرگتر از ۲۶۸،۴۳۵،۴۵۶ بود کاراییش بهتر از uint32 هست، بهتره از این تایپ استفاده کنید.
✅تایپ fixed64 همیشه ۸ بایت اشتغال میکنه، اگر عددتون بزرگتر از ۷۲،۰۵۷،۵۹۴،۰۳۷،۹۲۷،۹۴۰ بود کاراییش بهتر از uint64 هست، بهتره از این تایپ استفاده کنید.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴Default Values🔴
✅چیزی که خیلی مهمه تا بدونید مقدار پیش فرض در پروتوبافه، تمام فیلدها مقدار پیشفرض دارن،
✅برای بولین مقدار false هستش،
✅برای نامبر عدد ۰ هستش،
✅برای استرینگ یک رشته خالی،
✅برای بایت یک رشته بایت خالی،
✅برای اینام (enum) اولین مقدار لیست،
✅برای آرایه یک آرایه خالی.
تمام فیلدهایی که بعد از اجرای برنامه مقدار دهی نشن، شناخته نشن و... مقدار پیشفرض رو میگیرن.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅چیزی که خیلی مهمه تا بدونید مقدار پیش فرض در پروتوبافه، تمام فیلدها مقدار پیشفرض دارن،
✅برای بولین مقدار false هستش،
✅برای نامبر عدد ۰ هستش،
✅برای استرینگ یک رشته خالی،
✅برای بایت یک رشته بایت خالی،
✅برای اینام (enum) اولین مقدار لیست،
✅برای آرایه یک آرایه خالی.
تمام فیلدهایی که بعد از اجرای برنامه مقدار دهی نشن، شناخته نشن و... مقدار پیشفرض رو میگیرن.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴معماری سیستم استخراج و ذخیرهسازی اطلاعات زمان پخش🔴
✅ https://vrgl.ir/OXIPO
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅ https://vrgl.ir/OXIPO
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴Enumerations🔴
✅اگر با اینام آشنا نیستید باید بگم یک لیست از مقدایره، همونطور که بولین یک لیست دوتایی از true و false هستش، اینام میتونه یک لیست چندتایی از هر تایپی باشه.
✅اگر فراموش کردید باید دوباره بگم مقدار اول اینام میشه مقدار پیشفرض، نباید اینو فراموش کنید.
✅اینام باید از تگ ۰ شروع بشه که مقدار پیشفرض هستش.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅اگر با اینام آشنا نیستید باید بگم یک لیست از مقدایره، همونطور که بولین یک لیست دوتایی از true و false هستش، اینام میتونه یک لیست چندتایی از هر تایپی باشه.
✅اگر فراموش کردید باید دوباره بگم مقدار اول اینام میشه مقدار پیشفرض، نباید اینو فراموش کنید.
✅اینام باید از تگ ۰ شروع بشه که مقدار پیشفرض هستش.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴Enumerations🔴 ✅اگر با اینام آشنا نیستید باید بگم یک لیست از مقدایره، همونطور که بولین یک لیست دوتایی از true و false هستش، اینام میتونه یک لیست چندتایی از هر تایپی باشه. ✅اگر فراموش کردید باید دوباره بگم مقدار اول اینام میشه مقدار پیشفرض، نباید اینو…
👆🏻نکته👆🏻
✅ثابت های enum در محدوده یک عدد صحیح 32 بیتی می باشند. از آنجا که مقادیر enum از رمزگذاری varint روی استفاده می کند ، مقادیر منفی را قبول نمی کنند .
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅ثابت های enum در محدوده یک عدد صحیح 32 بیتی می باشند. از آنجا که مقادیر enum از رمزگذاری varint روی استفاده می کند ، مقادیر منفی را قبول نمی کنند .
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴Using Other Message Types🔴
✅آرایهها در پروتوبافر با عنوان repeated شناخته میشن، برای مثال شاید بخوایم برای پروفایلی که داشتیم چندین شماره تلفن درنظر بگیریم، پس فایل رو به این صورت تغییر میدیم:
✅همینطور که میبینید فقط کافیه کلمه repeated قبل از تایپ فیلدمون اضافه کنیم.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅آرایهها در پروتوبافر با عنوان repeated شناخته میشن، برای مثال شاید بخوایم برای پروفایلی که داشتیم چندین شماره تلفن درنظر بگیریم، پس فایل رو به این صورت تغییر میدیم:
✅همینطور که میبینید فقط کافیه کلمه repeated قبل از تایپ فیلدمون اضافه کنیم.
➖➖➖➖➖➖➖➖➖
🔰 @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…
🔴Nested Types🔴
✅علاوه بر اینام شما میتونید از مسیجهای دیگه داخل مسیج اصلیتون استفاده کنید، اینکار خیلی سادس، تو نمونه بالا تاریخ تولد به پروفایل کاربر اضافه میکنیم:
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
✅علاوه بر اینام شما میتونید از مسیجهای دیگه داخل مسیج اصلیتون استفاده کنید، اینکار خیلی سادس، تو نمونه بالا تاریخ تولد به پروفایل کاربر اضافه میکنیم:
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy