🐳 کاربرد های Dock Typing در دنیای واقعی
- یکی از دوستان یه سوالی پرسید یه جایی و منم به این فکر افتادم که Dock Typing (مثل interface های زبان go) کجا ها توی پروژه های مختلف کمک آدم میکنه ؟
- ساده ترین مثالش، User و Admin User هست. شما چه Admin باشی چه یوزر معمولی باشی، میتونی توی یک گروه تلگرامی مثلا پیام بدی (اگر دسترسیتو نبنده کسی البته)
- حالا کافیه که وقتی میخواید توی گروه پیام بدید، تایپ پارامتر ورودی تابع رو از User بگیرید و مطمئین بشید که هرکس میاد، متد SendMessage رو داره !
- یکی از مثال هایی که رسید به ذهنم و یه جایی هم قبلا کار کردم باهاش، Load Balancer هستش. شما وقتی خیلی بزرگ میشید (مثل netflix و یوتیوب و فیلیمو و آپارات وP*rn Hub😄 که دارن ساعت ها ویدیو باکیفیت استریم میکنن) سرور های مختلفی برای کار های مختلف نیاز دارید (مثلا بکاپ و Cache) و همچنین اینکه باید بتونید ترافیک روی این سرورا بالانس کنید. همچنین توی مهندسی برق هم این اتفاق زیاد میوفتهو مثلا توی سیستم های کنترلی و پردازش سیگنال مثل رادار های پیچیده. (حتما رادار جت جنگنده نیست 😁)، Load Balancing بین پردازنده هایی که باید سیگنال ها رو تجذیه کنن اتفاق میوفته، همچنین توی مخابرات (ایرانسل و..) هم وقتی که سیستم خیلی بزرگ میشه، میان بین آنتن های یک منطقه توزیع بار (Load Blancing) انجام میدن که ترافیک بین ملت یکسان باشه!
- برای دیدن یک مثال عملی از این Load Balancing میتونید سورس پروژه X-Ray که به زبان go هم هست رو بخونید که میشه یه جورایی بنیان همین V2Ray هایی که داریم. یک سیستم خیلی جالب دارن که میان و node های شبکه سر راه پروکسی شما رو به دو دسته inbound و outbound تقسیم میکنن که هرکدوم کار های خودشون رو میکنن (نمیخوام وارد جزئیات شبکه ایش بشم) و خلاصه بگم که این یعنی باید درخواستا بین این outbound ها و inbound ها یه جور خاصی توزیع بشه! حتی برای مدیریت بار بین خود inbound ها و outbound ها هم باید یه چیزی باشه که مواظب باشه مثلا یک سرور inbound، بیشتر از بقیه روش فشار نیاد. این اینترفیس رو ببینید :
- یکم پیچیدست ساختارشون ولی اصلا مهم نیست برای ما، نکتش اینه که ممکن بوده چند جور Manager بخوان داشته باشن و مجبور میشن یه interface تعریف کنن که هر جا Manager بخوان مطمئن باشن اون چیزی که میاد، مثلا حتما متد
#آموزشی #مهم
@codeaghajcs
- یکی از دوستان یه سوالی پرسید یه جایی و منم به این فکر افتادم که Dock Typing (مثل interface های زبان go) کجا ها توی پروژه های مختلف کمک آدم میکنه ؟
- ساده ترین مثالش، User و Admin User هست. شما چه Admin باشی چه یوزر معمولی باشی، میتونی توی یک گروه تلگرامی مثلا پیام بدی (اگر دسترسیتو نبنده کسی البته)
type UserInGroup interface {
SendMessage(message string) bool
}- حالا کافیه که وقتی میخواید توی گروه پیام بدید، تایپ پارامتر ورودی تابع رو از User بگیرید و مطمئین بشید که هرکس میاد، متد SendMessage رو داره !
- یکی از مثال هایی که رسید به ذهنم و یه جایی هم قبلا کار کردم باهاش، Load Balancer هستش. شما وقتی خیلی بزرگ میشید (مثل netflix و یوتیوب و فیلیمو و آپارات و
- برای دیدن یک مثال عملی از این Load Balancing میتونید سورس پروژه X-Ray که به زبان go هم هست رو بخونید که میشه یه جورایی بنیان همین V2Ray هایی که داریم. یک سیستم خیلی جالب دارن که میان و node های شبکه سر راه پروکسی شما رو به دو دسته inbound و outbound تقسیم میکنن که هرکدوم کار های خودشون رو میکنن (نمیخوام وارد جزئیات شبکه ایش بشم) و خلاصه بگم که این یعنی باید درخواستا بین این outbound ها و inbound ها یه جور خاصی توزیع بشه! حتی برای مدیریت بار بین خود inbound ها و outbound ها هم باید یه چیزی باشه که مواظب باشه مثلا یک سرور inbound، بیشتر از بقیه روش فشار نیاد. این اینترفیس رو ببینید :
type Manager interface {
features.Feature
// GetHandler returns an InboundHandler for the given tag.
GetHandler(ctx context.Context, tag string) (Handler, error)
// AddHandler adds the given handler into this Manager.
AddHandler(ctx context.Context, handler Handler) error
// RemoveHandler removes a handler from Manager.
RemoveHandler(ctx context.Context, tag string) error
}- یکم پیچیدست ساختارشون ولی اصلا مهم نیست برای ما، نکتش اینه که ممکن بوده چند جور Manager بخوان داشته باشن و مجبور میشن یه interface تعریف کنن که هر جا Manager بخوان مطمئن باشن اون چیزی که میاد، مثلا حتما متد
AddHandler رو داشته باشه. برای اینکه بیشتر بدونید به سورسشون یه نگاهی بندازید علی الخصوص این فایل که پیاده سازی مستقیم بالانسر هست.#آموزشی #مهم
@codeaghajcs
👍2
Forwarded from 👾 Geek Engineers ([ Taha. Dostifam ])
Cyrus: A high-performance, statically-typed, manually memory-managed and procedural programming language empowered by GCCJIT. Made with Rust 🦀.
برای حمایت از ما میتونید توی گیت هاب ⭐️ بدید که خیلی به دیده شدنش توی explore گیت هاب کمک میکنه. همینطور اگر با دوستاتون شیر کنید خیلی خوشحال میشیم =) ❤️🤌🏿
Community:
@cyrus_lang
GitHub:
https://github.com/cyrus-lang/Cyrus-Lang
برای حمایت از ما میتونید توی گیت هاب ⭐️ بدید که خیلی به دیده شدنش توی explore گیت هاب کمک میکنه. همینطور اگر با دوستاتون شیر کنید خیلی خوشحال میشیم =) ❤️🤌🏿
Community:
@cyrus_lang
GitHub:
https://github.com/cyrus-lang/Cyrus-Lang
Code Agha
واقعا اسم پر مفهومی داره😂🤝 #فان
🐳 نرد فونت هم چیز خوبیه !
- اینا اومدن یه سری آیکون که روی تصویر میبینید رو وارد فونت های محبوب Monospace کردن (تعداشونو خودش زده بیش از 68) و این کمک میکنه ترمینال های باحال تری داشته باشید. کسایی که از چیزایی مثل NvChad استفاده میکنن بهشون نیاز دارن تا ایکون ها رو ببینن !
- برای استفاده از فونتاشون میتونید از Homebrew هم استفاده کنید یا از لینکی که پایین میزارم:
🔗 www.nerdfonts.com
🔗 دانلود فونتاشون
#لینوکس #فان
@codeaghajcs
- اینا اومدن یه سری آیکون که روی تصویر میبینید رو وارد فونت های محبوب Monospace کردن (تعداشونو خودش زده بیش از 68) و این کمک میکنه ترمینال های باحال تری داشته باشید. کسایی که از چیزایی مثل NvChad استفاده میکنن بهشون نیاز دارن تا ایکون ها رو ببینن !
کلا با ویم و پلاگیناش اینا زیادی کار کردن
- برای استفاده از فونتاشون میتونید از Homebrew هم استفاده کنید یا از لینکی که پایین میزارم:
brew install --cask font-<FONT NAME>-nerd-font
🔗 www.nerdfonts.com
🔗 دانلود فونتاشون
#لینوکس #فان
@codeaghajcs
1👍2🎉1
Forwarded from کانال اطلاعرسانی توزیع پارچ (Sohrab @sohrab:bsd.cafe)
ما تیم پارچ مفتخریم که به شما پورت پارچ لینوکس ریسکپنج (Parch Linux RISC-V) را معرفی کنیم. این پورت به طور خاص برای معماری ریسکپنج طراحی شده است و هدف آن ارائه یک محیط توسعه و تست کارآمد و پایدار برای علاقمندان و توسعهدهندگان است.
برای اطلاعات بیشتر و دستورالعملهای اجرایی، لطفاً به صفحه ویکی ما مراجعه کنید:
🔗 https://wiki.parchlinux.com/fa/parch-riscv
پ.ن: از اونجایی که این روش بر روی شبیهساز QEMU عمل میکنه بنابراین ممکن است عملکرد مطلوبی دریافت نکنید. همچنین به علت عدم وجود فریمبافر در کرنل ریسکپنج شبیهساز درحالت سریال کنسول و در پایانه (ترمینال) شما اجرا میشود.
@ParchLinux
برای اطلاعات بیشتر و دستورالعملهای اجرایی، لطفاً به صفحه ویکی ما مراجعه کنید:
🔗 https://wiki.parchlinux.com/fa/parch-riscv
پ.ن: از اونجایی که این روش بر روی شبیهساز QEMU عمل میکنه بنابراین ممکن است عملکرد مطلوبی دریافت نکنید. همچنین به علت عدم وجود فریمبافر در کرنل ریسکپنج شبیهساز درحالت سریال کنسول و در پایانه (ترمینال) شما اجرا میشود.
@ParchLinux
👍1
🐳 مهاجرت تدریجی Typescript به Go
- تیم TypeScript تصمیم گرفته که یه نسخه بومی (Native) از کامپایلرش بسازه و برای این کار، زبان Go رو انتخاب کرده. الان TypeScript کاملاً وابسته به Node.js و موتور V8 هست، که به این معنیه که برای اجرا حتماً به یه محیط جاوااسکریپتی نیاز داره. این وابستگی باعث میشه که سرعت اجرا، مصرف حافظه و ادغام با ابزارهای بومی محدود بشه. هدف این پورت بومی اینه که TypeScript بتونه بدون نیاز به محیط جاوااسکریپت روی پلتفرمهای مختلف، سریعتر و کارآمدتر اجرا بشه.
- برای رسیدن به این هدف، تیم TypeScript چند تا روش رو بررسی کرده. از پورتهای هیبریدی (ترکیب زبانهای بومی با جاوااسکریپت) تا بررسی کامپایلرهای جایگزین مثل swc، oxc و esbuild، اما در نهایت، تصمیم گرفتن که یه پورت کاملاً بومی با Go بسازن. دلایل این انتخاب هم چندتا نکته کلیدی بودن: سازگاری ساختاری با نسخه فعلی جاوااسکریپت، مدیریت حافظه بهینه و مشابه JS، و ابزارهای قوی و مدل همزمانی خوب Go که میتونه اجرای TypeScript رو خیلی سریعتر و سبکتر کنه. علاوه بر این، ادغام با محیطهای بومی و سیستمهای بدون جاوااسکریپت هم راحتتر میشه.
- اما این تصمیم توی کامیونیتی بیحرف و حدیث نبوده. بعضی از اعضای جامعه توسعهدهندگان از این انتخاب حمایت کردن، چون Go واقعاً یه زبان قوی و کارآمده و با این پروژه همخوانی داره. ولی یه سری هم نگرانیهایی داشتن. بعضیا میگفتن که منحنی یادگیری Go ممکنه برای بخشی از تیم و جامعه سخت باشه، یا اینکه شاید زبانهای دیگه مثل Rust یا Zig گزینههای بهتری باشن. اما در نهایت، تیم TypeScript معتقده که Go بهترین انتخاب برای این پروژهست و میتونه تجربه توسعه TypeScript رو در آینده سریعتر، سبکتر و پایدارتر کنه.
🔗 مقاله اصلی سایت مایکروسافت
🔗 ریپوزیتوری فعلی
🔗 چرا Go انتخاب شد؟
#خبر #مهم
@codeaghajcs
- تیم TypeScript تصمیم گرفته که یه نسخه بومی (Native) از کامپایلرش بسازه و برای این کار، زبان Go رو انتخاب کرده. الان TypeScript کاملاً وابسته به Node.js و موتور V8 هست، که به این معنیه که برای اجرا حتماً به یه محیط جاوااسکریپتی نیاز داره. این وابستگی باعث میشه که سرعت اجرا، مصرف حافظه و ادغام با ابزارهای بومی محدود بشه. هدف این پورت بومی اینه که TypeScript بتونه بدون نیاز به محیط جاوااسکریپت روی پلتفرمهای مختلف، سریعتر و کارآمدتر اجرا بشه.
- برای رسیدن به این هدف، تیم TypeScript چند تا روش رو بررسی کرده. از پورتهای هیبریدی (ترکیب زبانهای بومی با جاوااسکریپت) تا بررسی کامپایلرهای جایگزین مثل swc، oxc و esbuild، اما در نهایت، تصمیم گرفتن که یه پورت کاملاً بومی با Go بسازن. دلایل این انتخاب هم چندتا نکته کلیدی بودن: سازگاری ساختاری با نسخه فعلی جاوااسکریپت، مدیریت حافظه بهینه و مشابه JS، و ابزارهای قوی و مدل همزمانی خوب Go که میتونه اجرای TypeScript رو خیلی سریعتر و سبکتر کنه. علاوه بر این، ادغام با محیطهای بومی و سیستمهای بدون جاوااسکریپت هم راحتتر میشه.
- اما این تصمیم توی کامیونیتی بیحرف و حدیث نبوده. بعضی از اعضای جامعه توسعهدهندگان از این انتخاب حمایت کردن، چون Go واقعاً یه زبان قوی و کارآمده و با این پروژه همخوانی داره. ولی یه سری هم نگرانیهایی داشتن. بعضیا میگفتن که منحنی یادگیری Go ممکنه برای بخشی از تیم و جامعه سخت باشه، یا اینکه شاید زبانهای دیگه مثل Rust یا Zig گزینههای بهتری باشن. اما در نهایت، تیم TypeScript معتقده که Go بهترین انتخاب برای این پروژهست و میتونه تجربه توسعه TypeScript رو در آینده سریعتر، سبکتر و پایدارتر کنه.
🔗 مقاله اصلی سایت مایکروسافت
🔗 ریپوزیتوری فعلی
🔗 چرا Go انتخاب شد؟
#خبر #مهم
@codeaghajcs
👍1
🐳 ویدیوی بسیار جالب در مورد مخفی کردن بد افزار توی ۷ لایه زیر یک فایل mp3
- هکر روسی قاطی یک فایل mp3 یه کد js نوشته که اون کد یک کد js دیگه رو ران میکنه و بعد اون کد چند تا اسکریپت پاورشل رو دیکد شده توی خودشون دارن و هی همو دیکد میکنن و اجرا میکنن و آخریشون یک اسمبلی دات نتی رو دیکد و اجرا میکنه
🔗 https://youtu.be/25NvCdFSkA4?si=Sj_a-LKTysTUuY0U
#فان
@codeaghajcs
- هکر روسی قاطی یک فایل mp3 یه کد js نوشته که اون کد یک کد js دیگه رو ران میکنه و بعد اون کد چند تا اسکریپت پاورشل رو دیکد شده توی خودشون دارن و هی همو دیکد میکنن و اجرا میکنن و آخریشون یک اسمبلی دات نتی رو دیکد و اجرا میکنه
🔗 https://youtu.be/25NvCdFSkA4?si=Sj_a-LKTysTUuY0U
#فان
@codeaghajcs
YouTube
this MP3 file is malware
https://jh.live/vanta || Automate and prove your security compliance with Vanta! Get $1,000 off with my link to cruise through compliance across SOC 2, ISO 27001, ISO 42001, NIST AI RMF, HIPAA, GDPR, and more! https://jh.live/vanta
Learn Cybersecurity and…
Learn Cybersecurity and…
Forwarded from آموزش برنامه نویسی سی شارپ
میدونستین API سایت شخصیم خیلی وقته که Open Source هست ؟
https://github.com/imrostami/ResumeAppApi
پروژه با clean architecture توسعه پیدا کرده
ازش میتونین کلی چیز میز یاد بگیرین از معماری پروژه تا نحوه ذخیره پوشه بندی و بهینه سازی تصاویر و عکس ها داخل سیستم
نحوه پیاده سازی CQRS و استفاده از MediatR و EF Core و باقی موارد
مخلصیم 🎩
@ishadowme
@csharps
https://github.com/imrostami/ResumeAppApi
پروژه با clean architecture توسعه پیدا کرده
ازش میتونین کلی چیز میز یاد بگیرین از معماری پروژه تا نحوه ذخیره پوشه بندی و بهینه سازی تصاویر و عکس ها داخل سیستم
نحوه پیاده سازی CQRS و استفاده از MediatR و EF Core و باقی موارد
مخلصیم 🎩
@ishadowme
@csharps
GitHub
GitHub - imrostami/ResumeAppApi: یک پیاده سازی Web API با برای وبسایت شخصی با ASP.Net Core و معماری تمیز
یک پیاده سازی Web API با برای وبسایت شخصی با ASP.Net Core و معماری تمیز - imrostami/ResumeAppApi
Forwarded from DevTwitter | توییت برنامه نویسی
من یه دیتاست ۲۶ هزارتایی از اسامی فارسی به همراه جنسیت و نوشتار انگلیسی اونها درست کردم که یکی از بزرگترین دیتاستهای open source در نوع خودشه. کاربردهاش بینهایته :)
استار دادن اگه به کارتون میاد یادتون نره
https://github.com/farbodbj/persian-gender-by-name
@DevTwitter | <Farbod/>
استار دادن اگه به کارتون میاد یادتون نره
https://github.com/farbodbj/persian-gender-by-name
@DevTwitter | <Farbod/>
👍3
🐳 بیلگیتس، سورس کد اولین محصولی که مایکروسافت با آن شروع شده را در وبلاگش منتشر کرد | Bill Gates Publishes Original Microsoft Source Code in a Blog Post
- بیلگیتس بهمناسبت ۵۰ سالگی شرکت مایکروسافت در وبلاگش یادی از قدیما کرد و کد این برنامه رو به عنوان "جالب ترین کدی که تاحالا نوشته" معرفی کرد. این عکس بالا هم گذاشته از خودش و کد های روی کاغذ.
- کد مربوط به برنامه Altair BASIC بود که در سال ۱۹۷۵ توسط بیلگیتس ۱۹ ساله و پل آلن برای کامپیوتر های کوچیک MITS Altair 8800 نوشته شده بود و به عنوان اولین محصول رسمی شرکت نوپا Micro‑soft معرفی میشد.
🔗 Bill Gates Publishes Original Microsoft Source Code in a Blog Post
🔗 پست اصلی وبلاگ خودش (وبلاگش خوشگله و البته خاطرات زیادی هم تعریف میکنه قصه جالبیه بخونیدش حتما)
#خبر #مهم
@codeaghajcs
- بیلگیتس بهمناسبت ۵۰ سالگی شرکت مایکروسافت در وبلاگش یادی از قدیما کرد و کد این برنامه رو به عنوان "جالب ترین کدی که تاحالا نوشته" معرفی کرد. این عکس بالا هم گذاشته از خودش و کد های روی کاغذ.
- کد مربوط به برنامه Altair BASIC بود که در سال ۱۹۷۵ توسط بیلگیتس ۱۹ ساله و پل آلن برای کامپیوتر های کوچیک MITS Altair 8800 نوشته شده بود و به عنوان اولین محصول رسمی شرکت نوپا Micro‑soft معرفی میشد.
🔗 Bill Gates Publishes Original Microsoft Source Code in a Blog Post
🔗 پست اصلی وبلاگ خودش (وبلاگش خوشگله و البته خاطرات زیادی هم تعریف میکنه قصه جالبیه بخونیدش حتما)
#خبر #مهم
@codeaghajcs
👍1🔥1