Gopher Academy
🔴 اینم درگاه پرداخت زرین پال با گولنگ و مانگو🔴 https://github.com/mrbardia72/dark-zarinpal ➖➖➖➖➖➖➖➖➖ 🔰 @gopher_academy
👆🏻👆🏻👆🏻👆🏻
این ریپو رو خودم دورس کردم
دوستان اگه پیشنهادی برای بهتر شدن یا آبشنی که بخواد اضافه بشه میتونن مشارکت کنن pull requestبزنن
این ریپو رو خودم دورس کردم
دوستان اگه پیشنهادی برای بهتر شدن یا آبشنی که بخواد اضافه بشه میتونن مشارکت کنن pull requestبزنن
🔴چطوری تست بنویسیم و چطور اجرا کنیم🔴
❌در ادامه آموزش خواهیم داد
🔵About Golang Testing Package
🟡 https://t.me/gopher_academy/685
🔵How to write Unit test cases with a single input
🟡 https://t.me/gopher_academy/686
🔵How to write Unit test cases with multiple inputs.
🟡 https://t.me/gopher_academy/687
🔵Different Commands to run test cases with example
🟡 https://t.me/gopher_academy/688
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌در ادامه آموزش خواهیم داد
🔵About Golang Testing Package
🟡 https://t.me/gopher_academy/685
🔵How to write Unit test cases with a single input
🟡 https://t.me/gopher_academy/686
🔵How to write Unit test cases with multiple inputs.
🟡 https://t.me/gopher_academy/687
🔵Different Commands to run test cases with example
🟡 https://t.me/gopher_academy/688
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴چطوری تست بنویسیم و چطور اجرا کنیم🔴 ❌در ادامه آموزش خواهیم داد 🔵About Golang Testing Package 🟡 https://t.me/gopher_academy/685 🔵How to write Unit test cases with a single input 🟡 https://t.me/gopher_academy/686 🔵How to write Unit test cases with multiple…
🔴About Golang Testing Package🔴
🟡برای اینکه شروع کنیم به تست نویسی باید موارد زیر رو انجام بدیم
🔵اضافه کردن پکیج “testing” به فایل تستی که میخوایم بنویسیم
🔵سعی کنید نام فایل به صورت الگوی زیر باشد
🔵eg : filename_test.go
🔵متد مربوطه برای تست به صورت الگوی زیر باشد
🔵TestFunctionName()
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🟡برای اینکه شروع کنیم به تست نویسی باید موارد زیر رو انجام بدیم
🔵اضافه کردن پکیج “testing” به فایل تستی که میخوایم بنویسیم
🔵سعی کنید نام فایل به صورت الگوی زیر باشد
🔵eg : filename_test.go
🔵متد مربوطه برای تست به صورت الگوی زیر باشد
🔵TestFunctionName()
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴چطوری تست بنویسیم و چطور اجرا کنیم🔴 ❌در ادامه آموزش خواهیم داد 🔵About Golang Testing Package 🟡 https://t.me/gopher_academy/685 🔵How to write Unit test cases with a single input 🟡 https://t.me/gopher_academy/686 🔵How to write Unit test cases with multiple…
🔴How to write Unit test cases with a single input🔴
🔵 خوب توی این روش ما یه کدی نوشتیم که مجموع یه آرایه از اعداد صحیح رو محاسبه می کنه توی خط ۲ تا ۱۰ مشخص هست
🔵 توی خط ۱۳ تا ۳۹ تست نوشتیم برای کد بالا
به این صورت که دو حالت Success و Failed رو براش پیاده سازی کردیم
🔵توی خط ۱۸ و ۱۹ لیست اعدادی که جمعشون میشه ۱۰ رو قرار دادیم که جواب تست دورسته
🔵توی خط ۲۹ و ۳۰ لیست اعدادی که جمعشون میشه ۱۰ رو قرار دادیم که جواب تست اشتباه هست یعنی جمع اعداد با لیست مجموعه اعداد برابر نیست
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔵 خوب توی این روش ما یه کدی نوشتیم که مجموع یه آرایه از اعداد صحیح رو محاسبه می کنه توی خط ۲ تا ۱۰ مشخص هست
🔵 توی خط ۱۳ تا ۳۹ تست نوشتیم برای کد بالا
به این صورت که دو حالت Success و Failed رو براش پیاده سازی کردیم
🔵توی خط ۱۸ و ۱۹ لیست اعدادی که جمعشون میشه ۱۰ رو قرار دادیم که جواب تست دورسته
🔵توی خط ۲۹ و ۳۰ لیست اعدادی که جمعشون میشه ۱۰ رو قرار دادیم که جواب تست اشتباه هست یعنی جمع اعداد با لیست مجموعه اعداد برابر نیست
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴چطوری تست بنویسیم و چطور اجرا کنیم🔴 ❌در ادامه آموزش خواهیم داد 🔵About Golang Testing Package 🟡 https://t.me/gopher_academy/685 🔵How to write Unit test cases with a single input 🟡 https://t.me/gopher_academy/686 🔵How to write Unit test cases with multiple…
🔴How to write Unit test cases with multiple inputs AKA Table Driven tests🔴
🔵 فرض کنید میخواید مجموعه ای از حالت رو روی متد خود تست کنید که میاد از حالت aka tdd استفاده می کنید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔵 فرض کنید میخواید مجموعه ای از حالت رو روی متد خود تست کنید که میاد از حالت aka tdd استفاده می کنید
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴چطوری تست بنویسیم و چطور اجرا کنیم🔴 ❌در ادامه آموزش خواهیم داد 🔵About Golang Testing Package 🟡 https://t.me/gopher_academy/685 🔵How to write Unit test cases with a single input 🟡 https://t.me/gopher_academy/686 🔵How to write Unit test cases with multiple…
🔴Different Commands to run test cases with example🔴
🔵حالت های مختلف اجرای تست
🟢 اجرای کل تست
🟡go test
🟢 اجرای کل تست داخل فایل مربوطه
🟡go test filename_test.go
🟢 اجرای کل تست به همراه نتیجه
🟡go test -v
🟢 اجرای بک متد تست خاص از یک فایل تست
🟡go test -run TestFunctionName
🟢 اجرای یک متد به همراه ورودی و نمایش نتیجه
🟡go test -run TestFunctionName/Inputvalue=4 -v
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔵حالت های مختلف اجرای تست
🟢 اجرای کل تست
🟡go test
🟢 اجرای کل تست داخل فایل مربوطه
🟡go test filename_test.go
🟢 اجرای کل تست به همراه نتیجه
🟡go test -v
🟢 اجرای بک متد تست خاص از یک فایل تست
🟡go test -run TestFunctionName
🟢 اجرای یک متد به همراه ورودی و نمایش نتیجه
🟡go test -run TestFunctionName/Inputvalue=4 -v
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔰موضوع ارائه: مروری بر ریزهکاریهای اینترفیس error در زبان Go🔰
در این دورهمی مروری نسبتا عمیق روی اینترفیس error در زبان Go خواهیم داشت و با هم سعی میکنیم با ماهیت، ریزهکاریها و روشهای متنوع استفاده از این اینترفیس آشنا بشیم.
در انتها نیز زمانی رو برای پرسش و پاسخ و گپ و گفت اختصاص میدیم.
🔹تاریخ و ساعت ارائه:
🔺یکشنبه ۱۷ اسفند
🔺 ساعت ۱۹:۳۰ به وقت ایران
🔹ارائهدهنده: حامد مومنی (https://twitter.com/2hamed)
🔹لینک شرکت در دورهمی: https://meet.google.com/fpw-azih-cvf
🔰 @gopher_academy
در این دورهمی مروری نسبتا عمیق روی اینترفیس error در زبان Go خواهیم داشت و با هم سعی میکنیم با ماهیت، ریزهکاریها و روشهای متنوع استفاده از این اینترفیس آشنا بشیم.
در انتها نیز زمانی رو برای پرسش و پاسخ و گپ و گفت اختصاص میدیم.
🔹تاریخ و ساعت ارائه:
🔺یکشنبه ۱۷ اسفند
🔺 ساعت ۱۹:۳۰ به وقت ایران
🔹ارائهدهنده: حامد مومنی (https://twitter.com/2hamed)
🔹لینک شرکت در دورهمی: https://meet.google.com/fpw-azih-cvf
🔰 @gopher_academy
🔴 اینم درگاه پرداخت idpay با گولنگ و مانگو🔴
🟡 https://github.com/mrbardia72/dark-idpay
🔵این ریپو رو خودم دورس کردم - دوستان اگه پیشنهادی برای بهتر شدن یا آبشنی که بخواد اضافه بشه میتونن مشارکت کنن pull request بزنن
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🟡 https://github.com/mrbardia72/dark-idpay
🔵این ریپو رو خودم دورس کردم - دوستان اگه پیشنهادی برای بهتر شدن یا آبشنی که بخواد اضافه بشه میتونن مشارکت کنن pull request بزنن
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴استاتیک تایپ و داینامیک تایپ در زبان های برنامه نویسی و بیشتر🔴
🟡 https://vrgl.ir/5nP0q
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🟡 https://vrgl.ir/5nP0q
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴۴ دلیل برای اینکه از GraphQL بیشتر از REST API استفاده کنید🔴
🟡 https://roocket.ir/articles/stop-using-rest-for-apis
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🟡 https://roocket.ir/articles/stop-using-rest-for-apis
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴پشت صحنه garbage collector در زبانهای برنامهنویسی🔴
🟡 https://vrgl.ir/1y8Wd
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🟡 https://vrgl.ir/1y8Wd
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔴 سناریو استفاده از پکیج context در گولنگ 🔴
❌آموزش در ادامه این مطلب
🟡 introduction
🟢 https://t.me/gopher_academy/697
🟡 RPC call
🟢 https://t.me/gopher_academy/698
🟢 https://t.me/gopher_academy/699
🟡 PipeLine
🟢 https://t.me/gopher_academy/700
🟡 Timeout request
🟢 https://t.me/gopher_academy/701
🟢 https://t.me/gopher_academy/702
🟢 https://t.me/gopher_academy/703
🟢 https://t.me/gopher_academy/704
🟡 HTTP server requests transfer data
🟢 https://t.me/gopher_academy/705
🟢 https://t.me/gopher_academy/706
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
❌آموزش در ادامه این مطلب
🟡 introduction
🟢 https://t.me/gopher_academy/697
🟡 RPC call
🟢 https://t.me/gopher_academy/698
🟢 https://t.me/gopher_academy/699
🟡 PipeLine
🟢 https://t.me/gopher_academy/700
🟡 Timeout request
🟢 https://t.me/gopher_academy/701
🟢 https://t.me/gopher_academy/702
🟢 https://t.me/gopher_academy/703
🟢 https://t.me/gopher_academy/704
🟡 HTTP server requests transfer data
🟢 https://t.me/gopher_academy/705
🟢 https://t.me/gopher_academy/706
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴 سناریو استفاده از پکیج context در گولنگ 🔴 ❌آموزش در ادامه این مطلب 🟡 introduction 🟢 https://t.me/gopher_academy/697 🟡 RPC call 🟢 https://t.me/gopher_academy/698 🟢 https://t.me/gopher_academy/699 🟡 PipeLine 🟢 https://t.me/gopher_academy/700 🟡 Timeout request…
🟡 introduction🟡
در مورد پکیج context
🔵این کتابخانه از ورژن Go1.7 وارد شد
🔵 کاربرد اصلی آن ، در یک جمله ، کنترل چرخه گوروتین ها می یاشد.
🔵هنگامی که یک کار محاسباتی به دست یک goroutine منتقل می شود ، به دلایلی (وقفه زمانی یا خروج اجباری) ، ما می خواهیم کار محاسباتی این goroutine را به حالت تعلیق درآوریم.. پس برای این سناریور های از این قبیل از context استفاده می کنیم
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
در مورد پکیج context
🔵این کتابخانه از ورژن Go1.7 وارد شد
🔵 کاربرد اصلی آن ، در یک جمله ، کنترل چرخه گوروتین ها می یاشد.
🔵هنگامی که یک کار محاسباتی به دست یک goroutine منتقل می شود ، به دلایلی (وقفه زمانی یا خروج اجباری) ، ما می خواهیم کار محاسباتی این goroutine را به حالت تعلیق درآوریم.. پس برای این سناریور های از این قبیل از context استفاده می کنیم
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴 سناریو استفاده از پکیج context در گولنگ 🔴 ❌آموزش در ادامه این مطلب 🟡 introduction 🟢 https://t.me/gopher_academy/697 🟡 RPC call 🟢 https://t.me/gopher_academy/698 🟢 https://t.me/gopher_academy/699 🟡 PipeLine 🟢 https://t.me/gopher_academy/700 🟡 Timeout request…
🟡 RPC call 🟡
🟣پروتکل rpc چیست و چه کاربردی دارد؟
🔵پروتکل RPC که مخفف عبارت Remote Procedure Call است یک پروتکل است که یک برنامه می تواند برای درخواست یک سرویس از یک برنامه در یک کامپیوتر دیگر در یک شبکه بدون نیاز به درک جزئیات شبکه استفاده کند. درواقع RPC از مدل client-server استفاده می کند. پروتکل rpc یک نوع پروتکل درخواست است که از سمت کلاینت به یک سرور شناخته شده در محل دیگر ارسال میشود تا یک فرآیند مشخص را با پارامترهای ارایه شده اجرا کند.اگر سرور هم پاسخی به مشتری ارسال کند، برنامه همچنان روند خود را ادامه می دهد.
🟣سرویسهای مهمی که از پروتکل rpc استفاده میکنند:
🔵سرویس NFS (Network File System) یکی از مهمترین کاربران RPC است.
🔵بXML-RPC یک پروتکل RPC است که از XML برای رمزگذاری تماس ها و HTTP به عنوان یک مکانیسم حمل و نقل استفاده می کند.
🔵بJSON-RPC یک پروتکل RPC است که از پیام های کد شده JSON استفاده می کند.
🔵بGoogle Toolkit از یک asynchronous RPC برای برقراری ارتباط با سرور استفاده میکند.
🔵بGoogle Protocol Buffers Buffers شامل یک زبان تعریف رابط استفاده شده برای پروتکل های RPC [12] است از سال 2015 به عنوان gRPC عرضه می شود.
🔵ب Microsoft .NET Remoting امکانات RPC را برای سیستم های توزیع شده در پلت فرم ویندوز ارائه می دهد. این توسط WCF جایگزین شده است.
🔵بMicrosoft DCOM از MSRPC استفاده می کند که بر اساس DCE / RPC است.
🔵بOpen Software Foundation که از DCE / RPC استفاده میکند.
🔵ب(Directory Service Remote Procedure Call (DS-RPC پروتکل پیشفرض، برای intersite replication است.
🔻🔻🔻🔻🔻🔻🔻
در گورتین اصلی 4 RPC وجود دارد.
در واقع RPC 2 / 3 /4 به طور موازی درخواست می شوند.
در اینجا امیدواریم که پس از عدم موفقیت RPC2 خطایی را مستقیماً برگردانیم و RPC3 / 4 محاسبه را متوقف کند.
👇🏻👇🏻code👇🏻👇🏻
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🟣پروتکل rpc چیست و چه کاربردی دارد؟
🔵پروتکل RPC که مخفف عبارت Remote Procedure Call است یک پروتکل است که یک برنامه می تواند برای درخواست یک سرویس از یک برنامه در یک کامپیوتر دیگر در یک شبکه بدون نیاز به درک جزئیات شبکه استفاده کند. درواقع RPC از مدل client-server استفاده می کند. پروتکل rpc یک نوع پروتکل درخواست است که از سمت کلاینت به یک سرور شناخته شده در محل دیگر ارسال میشود تا یک فرآیند مشخص را با پارامترهای ارایه شده اجرا کند.اگر سرور هم پاسخی به مشتری ارسال کند، برنامه همچنان روند خود را ادامه می دهد.
🟣سرویسهای مهمی که از پروتکل rpc استفاده میکنند:
🔵سرویس NFS (Network File System) یکی از مهمترین کاربران RPC است.
🔵بXML-RPC یک پروتکل RPC است که از XML برای رمزگذاری تماس ها و HTTP به عنوان یک مکانیسم حمل و نقل استفاده می کند.
🔵بJSON-RPC یک پروتکل RPC است که از پیام های کد شده JSON استفاده می کند.
🔵بGoogle Toolkit از یک asynchronous RPC برای برقراری ارتباط با سرور استفاده میکند.
🔵بGoogle Protocol Buffers Buffers شامل یک زبان تعریف رابط استفاده شده برای پروتکل های RPC [12] است از سال 2015 به عنوان gRPC عرضه می شود.
🔵ب Microsoft .NET Remoting امکانات RPC را برای سیستم های توزیع شده در پلت فرم ویندوز ارائه می دهد. این توسط WCF جایگزین شده است.
🔵بMicrosoft DCOM از MSRPC استفاده می کند که بر اساس DCE / RPC است.
🔵بOpen Software Foundation که از DCE / RPC استفاده میکند.
🔵ب(Directory Service Remote Procedure Call (DS-RPC پروتکل پیشفرض، برای intersite replication است.
🔻🔻🔻🔻🔻🔻🔻
در گورتین اصلی 4 RPC وجود دارد.
در واقع RPC 2 / 3 /4 به طور موازی درخواست می شوند.
در اینجا امیدواریم که پس از عدم موفقیت RPC2 خطایی را مستقیماً برگردانیم و RPC3 / 4 محاسبه را متوقف کند.
👇🏻👇🏻code👇🏻👇🏻
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴 سناریو استفاده از پکیج context در گولنگ 🔴 ❌آموزش در ادامه این مطلب 🟡 introduction 🟢 https://t.me/gopher_academy/697 🟡 RPC call 🟢 https://t.me/gopher_academy/698 🟢 https://t.me/gopher_academy/699 🟡 PipeLine 🟢 https://t.me/gopher_academy/700 🟡 Timeout request…
🟡 PipeLine 🟡
🔵درواقع pipeline، مجموعهای از عناصر (مراحل) پردازش داده است که به صورت سری به یکدیگر متصلند و ورودی هر عنصر، خروجی عنصر قبلی است.
🔵در تکنیک pipeline، چند دستور میتوانند در یک زمان اجرا شوند. یعنی دستورها از لحاظ زمان اجرا دارای همپوشانی هستند.
🔵خوب برای اینکه با مفهوم PipeLine بیشتز آشنا شید لینک زیر رو باز کنید که در ادامه میخوام توضیح بدم
🔻 https://gist.github.com/claudiofahey/3afcf4f4fb3d8d3b35cadb100d4fb9b7
مدل PipeLine مدل خط assembly است. چندین workers در خط assembly کردن محصول دارند و یکی یکی جمع می شوند.
در حقیقت ، اجرای مدل خط لوله هیچ ارتباطی با زمینه ندارد. همچنین می توانیم از chan برای پیاده سازی مدل خط لوله بدون زمینه استفاده کنیم. اما برای کنترل کل خط لوله ، استفاده از Context ضروری است.
سه کارگر خط لوله در runSimplePipeline وجود دارد. lineListSource وظیفه تقسیم و انتقال پارامترها را یک به یک دارد. lineParser وظیفه پردازش رشته به int64 را دارد. سینک در مورد در دسترس بودن داده ها با توجه به مقدار خاص قضاوت می کند. تمام مقادیر بازگشتی آنها اساساً دارای دو تعویض هستند ، یکی برای انتقال داده ها و دیگری برای عبور خطاها.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔵درواقع pipeline، مجموعهای از عناصر (مراحل) پردازش داده است که به صورت سری به یکدیگر متصلند و ورودی هر عنصر، خروجی عنصر قبلی است.
🔵در تکنیک pipeline، چند دستور میتوانند در یک زمان اجرا شوند. یعنی دستورها از لحاظ زمان اجرا دارای همپوشانی هستند.
🔵خوب برای اینکه با مفهوم PipeLine بیشتز آشنا شید لینک زیر رو باز کنید که در ادامه میخوام توضیح بدم
🔻 https://gist.github.com/claudiofahey/3afcf4f4fb3d8d3b35cadb100d4fb9b7
مدل PipeLine مدل خط assembly است. چندین workers در خط assembly کردن محصول دارند و یکی یکی جمع می شوند.
در حقیقت ، اجرای مدل خط لوله هیچ ارتباطی با زمینه ندارد. همچنین می توانیم از chan برای پیاده سازی مدل خط لوله بدون زمینه استفاده کنیم. اما برای کنترل کل خط لوله ، استفاده از Context ضروری است.
سه کارگر خط لوله در runSimplePipeline وجود دارد. lineListSource وظیفه تقسیم و انتقال پارامترها را یک به یک دارد. lineParser وظیفه پردازش رشته به int64 را دارد. سینک در مورد در دسترس بودن داده ها با توجه به مقدار خاص قضاوت می کند. تمام مقادیر بازگشتی آنها اساساً دارای دو تعویض هستند ، یکی برای انتقال داده ها و دیگری برای عبور خطاها.
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
Gopher Academy
🔴 سناریو استفاده از پکیج context در گولنگ 🔴 ❌آموزش در ادامه این مطلب 🟡 introduction 🟢 https://t.me/gopher_academy/697 🟡 RPC call 🟢 https://t.me/gopher_academy/698 🟢 https://t.me/gopher_academy/699 🟡 PipeLine 🟢 https://t.me/gopher_academy/700 🟡 Timeout request…
🟡 Timeout request 🟡
🔵جهت مدیریت زمانی درخواست هامون از این روش استفاده می کنیم
🔵در زیر نمونه چند کد رو براتون میزارم
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔵جهت مدیریت زمانی درخواست هامون از این روش استفاده می کنیم
🔵در زیر نمونه چند کد رو براتون میزارم
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy