Forwarded from Matin SenPai (᯽マティ️️ン先輩)
دوستان میدونستید که این روشن/خاموش شدن Wifi ویندوزتون باگ نیست؟! بهخاطر فیلترینگ شدید فایروالهای ایرانه🤦🏻♀️ دلیل و راهحلش:
تست اتصال مایکروسافت (NCSI) که فیچر ویندوز ۱۰ به بعده بلاک میشه؛ به زبان ساده، بهخاطر فیلترینگ، ویندوز فکر میکنه اینترنت قطع شده و برای همین هی وایفای رو خاموش/روشن میکنه تا اتصال برقرار شه.
راه غیرفعال کردنش:
۱. همزمان کلید Windows + R رو فشار بده (کلید ویندوز همون لوگو ویندوز روی کیبورد)
۲. توی کادر Run که باز شد، بنویس regedit و اینتر رو بزن.
۳. برو این مسیر:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet
۴. روی EnableActiveProbing دابلکلیک و بعدش Value رو ۰ کن.
۵. سیستم رو ریاستارت کن و تمام.
دیگه این فیچر غیرفعال میشه و VPNتون قطع نمیشه :(
البته تا وقتی که غیرفعاله حتی اگه اینترنت قطع باشه، همیشه «Connected» نشون میده.
✍️ گیکزهرا
تست اتصال مایکروسافت (NCSI) که فیچر ویندوز ۱۰ به بعده بلاک میشه؛ به زبان ساده، بهخاطر فیلترینگ، ویندوز فکر میکنه اینترنت قطع شده و برای همین هی وایفای رو خاموش/روشن میکنه تا اتصال برقرار شه.
راه غیرفعال کردنش:
۱. همزمان کلید Windows + R رو فشار بده (کلید ویندوز همون لوگو ویندوز روی کیبورد)
۲. توی کادر Run که باز شد، بنویس regedit و اینتر رو بزن.
۳. برو این مسیر:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet
۴. روی EnableActiveProbing دابلکلیک و بعدش Value رو ۰ کن.
۵. سیستم رو ریاستارت کن و تمام.
دیگه این فیچر غیرفعال میشه و VPNتون قطع نمیشه :(
البته تا وقتی که غیرفعاله حتی اگه اینترنت قطع باشه، همیشه «Connected» نشون میده.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2💔1
Matin SenPai
دوستان میدونستید که این روشن/خاموش شدن Wifi ویندوزتون باگ نیست؟! بهخاطر فیلترینگ شدید فایروالهای ایرانه🤦🏻♀️ دلیل و راهحلش: تست اتصال مایکروسافت (NCSI) که فیچر ویندوز ۱۰ به بعده بلاک میشه؛ به زبان ساده، بهخاطر فیلترینگ، ویندوز فکر میکنه اینترنت قطع…
منم این مشکل قط شدن وای فای رو زیاد داشتم.
❤2
بهتره که دادههامون رو براساس نیازمندی و رفتار کاربر باهاشون تفکیک کنیم!
چند وقتی هست که توی طراحی و توسعهی سیستمها، در حال عمیق شدنم. یکی از منابع خیلی خوبی که پیشنهاد میکنم ببینین بلاگ دیسکورد هست.
اگر نمیدونستید، خیلی از اپهای بزرگ و معروف مثل Discord بلاگ فنی دارن که توش از نحوهی حل چالشهای فنی میگن. داشتم بلاگی راجع به اینکه چطوری چند میلیارد پیام رو در روز هندل میکنن میخوندم. این پست قدیمی بود و توی پستی جدیدتر داشتن راجع به اینکه چطوری چند تریلیون پیام رو روزانه هندل میکنن میگن. لینک جفت پست ها اینجاست:
https://discord.com/blog/how-discord-stores-billions-of-messages
https://discord.com/blog/how-discord-stores-trillions-of-messages
سال 2017 دیسکورد روزانه چند میلیارد پیام رو مدیریت میکرد که تا سال 2023 به چند تریلیون پیام رسیده این عدد. نکتهای که توجهام رو جلب کرد نحوه تقسیم پیامها بود. دیسکورد اومد یه سری گزارش تهیه کرد تا بتونه نحوه رفتار کاربرهاش رو بررسی کنه. از این گزارش چه جور دادهای درومده؟ اینکه چه کانالهایی (یا به زبان دیسکورد سرورهایی) چه میزان پیام بر اساس تعداد کاربر، نوع و موضوع کانال و دسته بندیهای این شکلی وجود دارن.
بر اساس این گزارش هر دسته از کانال چالشهای خودش رو داشته.
نکتهای که برام جذاب بود، جدا از نحوهی حل چالشها، همین تقسیم نوع کاربری و رفتار محور داده بود. یه عادتی که ما داریم معمولا اینه که به همه چی موقع طراحی سیستم خیلی کلی نگاه میکنیم. این موضوع بخصوص وقتی داریم سیستممون رو گستردهتر میکنیم به چشم میاد.
توی کتاب Designing Data-intensive Applications هم این موضوع رو کم و بیش میبینیم. توی فصل دوم کتاب از مثال صفحه اول توییتر استفاده میکنه و میاد تخمین میزنه که اکثر کاربرها، سلبریتی یا اینفلوئنسر نیستن و مثلا حدود 200 تا حساب رو دنبال میکنن، اما افرادی هم هستن که مثلا 100 میلیون دنبال کننده دارن.
موقع طراحی سیستم باید این تقسیم بندی رو قائل بشیم. چرا؟ چون ما نمیخوایم سیستمی رو طراحی کنیم که مثلا همهی کاربرهاش 100 میلیون دنبال کننده دارن. میخوایم سیستمی رو طراحی کنیم که به طور متوسط کاربرهاش مثلا 200 نفر دنبال کننده دارن، اما افرادی هم هستند که 100 میلیون نفر دنبالشون میکنن. این تفکیک میتونه روی تصمیمات اساسی که برای سیستم میگیریم اثر چشمگیری بزاره.
@ever_code
چند وقتی هست که توی طراحی و توسعهی سیستمها، در حال عمیق شدنم. یکی از منابع خیلی خوبی که پیشنهاد میکنم ببینین بلاگ دیسکورد هست.
اگر نمیدونستید، خیلی از اپهای بزرگ و معروف مثل Discord بلاگ فنی دارن که توش از نحوهی حل چالشهای فنی میگن. داشتم بلاگی راجع به اینکه چطوری چند میلیارد پیام رو در روز هندل میکنن میخوندم. این پست قدیمی بود و توی پستی جدیدتر داشتن راجع به اینکه چطوری چند تریلیون پیام رو روزانه هندل میکنن میگن. لینک جفت پست ها اینجاست:
https://discord.com/blog/how-discord-stores-billions-of-messages
https://discord.com/blog/how-discord-stores-trillions-of-messages
سال 2017 دیسکورد روزانه چند میلیارد پیام رو مدیریت میکرد که تا سال 2023 به چند تریلیون پیام رسیده این عدد. نکتهای که توجهام رو جلب کرد نحوه تقسیم پیامها بود. دیسکورد اومد یه سری گزارش تهیه کرد تا بتونه نحوه رفتار کاربرهاش رو بررسی کنه. از این گزارش چه جور دادهای درومده؟ اینکه چه کانالهایی (یا به زبان دیسکورد سرورهایی) چه میزان پیام بر اساس تعداد کاربر، نوع و موضوع کانال و دسته بندیهای این شکلی وجود دارن.
بر اساس این گزارش هر دسته از کانال چالشهای خودش رو داشته.
نکتهای که برام جذاب بود، جدا از نحوهی حل چالشها، همین تقسیم نوع کاربری و رفتار محور داده بود. یه عادتی که ما داریم معمولا اینه که به همه چی موقع طراحی سیستم خیلی کلی نگاه میکنیم. این موضوع بخصوص وقتی داریم سیستممون رو گستردهتر میکنیم به چشم میاد.
توی کتاب Designing Data-intensive Applications هم این موضوع رو کم و بیش میبینیم. توی فصل دوم کتاب از مثال صفحه اول توییتر استفاده میکنه و میاد تخمین میزنه که اکثر کاربرها، سلبریتی یا اینفلوئنسر نیستن و مثلا حدود 200 تا حساب رو دنبال میکنن، اما افرادی هم هستن که مثلا 100 میلیون دنبال کننده دارن.
موقع طراحی سیستم باید این تقسیم بندی رو قائل بشیم. چرا؟ چون ما نمیخوایم سیستمی رو طراحی کنیم که مثلا همهی کاربرهاش 100 میلیون دنبال کننده دارن. میخوایم سیستمی رو طراحی کنیم که به طور متوسط کاربرهاش مثلا 200 نفر دنبال کننده دارن، اما افرادی هم هستند که 100 میلیون نفر دنبالشون میکنن. این تفکیک میتونه روی تصمیمات اساسی که برای سیستم میگیریم اثر چشمگیری بزاره.
@ever_code
Discord
How Discord Stores Billions of Messages
We decided early on to store all chat history forever so users can come back at any time and have their data available. This is a lot of data: how do we do it?
❤5
خب سرور هم اوکی شد، حالا کمی کار داره مطالب قبلی رو بزارم روش و توی گوگل ایندکس کنم و ازین کارا. متاسفانه چون سرورم خارجه ممکنه مشکل دسترسی بهش وجود داشته باشه🫤 با اینکه پینگ دارم بهش ولی بدون کانفیگ و اینا نمیاد. احتمالا بعد ازینکه راه افتاد بگردم دنبال cdn داخلی چیزی
❤3
خب خبر خوب اینکه سایت بلاگ بالا اومد دوباره. اول با ghost راه انداختم، سرویس جذابیه، ولی تم های محدودی داره و میتونین خودتون کاستوم کنین، اما من چون روی سایت قبلیم که با استفاده از Hugo که یک Static Site Generator هست همه کارهام رو کرده بودم، راحت تر بودم و از قبل Github َAction رو آماده کرده بودم تصمیم گرفتم برگردم به سایت خودم.
یکی دیگه از دلایلش هم این بود که از اول روی سرورم Reverse proxy رو ست کرده بودم و certificate و اینا رو اوکی کرده بودم، برای سایت static هم چیز زیادی لازم نبود، خیلی سریع یه Nginx بالا اوردم که سایت رو Serve میکرد و Github Action هم که قبلا با FTP روی Direct Admin کار میکرد رو عوض کردم که رو سرور Sync کنه.
الان سایت بالاست، فقط متاسفانه شاید مجبور شین با VPN ای چیزی واردش بشین. نمیدونم چه داستانیه، با اینکه ssh و ping و اینا رو همه بدون vpn میزدم، خود سایت بالا نمیاد. شما هم اگر دوست داشتین تست کنین، شاید مشکل از جای دیگه ای باشه.
خلاصه چالش های جالبی داشتم، این وسطا امنیت سرور هم بالا بردم.
@ever_code
یکی دیگه از دلایلش هم این بود که از اول روی سرورم Reverse proxy رو ست کرده بودم و certificate و اینا رو اوکی کرده بودم، برای سایت static هم چیز زیادی لازم نبود، خیلی سریع یه Nginx بالا اوردم که سایت رو Serve میکرد و Github Action هم که قبلا با FTP روی Direct Admin کار میکرد رو عوض کردم که رو سرور Sync کنه.
الان سایت بالاست، فقط متاسفانه شاید مجبور شین با VPN ای چیزی واردش بشین. نمیدونم چه داستانیه، با اینکه ssh و ping و اینا رو همه بدون vpn میزدم، خود سایت بالا نمیاد. شما هم اگر دوست داشتین تست کنین، شاید مشکل از جای دیگه ای باشه.
خلاصه چالش های جالبی داشتم، این وسطا امنیت سرور هم بالا بردم.
@ever_code
❤3
سی شارپ پر از فیچرهاییه که شاید بگیم خیلی تفاوت زیادی ایجاد نمیکنن، میشه گفت بیشتر Quality of Life هستن. توی C#14 کلمه کلیدی بنام
کمی بعد تر در تاریخ سی شارپ، اومدن Auto Implemented Property ها رو اضافه کردن که ما خیلی ازش استفاده میکنیم:
در اصل خود کامپایلر این کد رو به کد قبلی تبدیل میکنه و برای ما get و set رو به همراه یه backing field میسازه. تا قبل از سی شارپ 14، ما دسترسی به backing field که کامپایلر بصورت اتوماتیک میساخت نداشتیم و اگر میخواستیم که فقط یکی از get یا set رو پیاده سازی کنیم مجبور بودیم تا backing field رو هم اضافه کنیم.
اما الان با استفاده از کلمه field میتونیم دقیقا همینکار رو انجام بدیم:
بنظرم ازون دسته فیچرهایی هست که خیلی زود بهش عادت میکنیم و بعدش توهم میزنیم که از روز اول توی زبان بوده 😂
این یکی از نکات جذاب سی شارپه بنظرم، خیلی از فیچرهایی که توی سال های اخیر اضافه شدن صرفا برای راحت تر کردن و خوانا تر کردن کد بودن، درحالیکه شاید تنها کاری که کردن این بوده که کد تکراری و boiler-plate رو توی کامپایلر اتوماسیون کردن.
@ever_code
field اضافه شده. کاربردش برای وقتی هست که توی Property میخوایم فقط یکی از set یا get رو تعریف کنیم. قبل از این فیچر، وقتی میخواستیم که get و set رو با بدنه تعریف کنیم باید حتما یه فیلد با دسترسی private تعریف میکردیم که به اصطلاح بهش میگفتیم Backing Field:class Person
{
private string _name; // Backing Field
public string Name {
get => _name;
set => _name = value;
}
}
کمی بعد تر در تاریخ سی شارپ، اومدن Auto Implemented Property ها رو اضافه کردن که ما خیلی ازش استفاده میکنیم:
class Person
{
public string Name { get; set; }
}
در اصل خود کامپایلر این کد رو به کد قبلی تبدیل میکنه و برای ما get و set رو به همراه یه backing field میسازه. تا قبل از سی شارپ 14، ما دسترسی به backing field که کامپایلر بصورت اتوماتیک میساخت نداشتیم و اگر میخواستیم که فقط یکی از get یا set رو پیاده سازی کنیم مجبور بودیم تا backing field رو هم اضافه کنیم.
اما الان با استفاده از کلمه field میتونیم دقیقا همینکار رو انجام بدیم:
class Person
{
public string Name {
get;
set => field = string.IsNullOrEmpty(value) ? "Not Defined" : value;
}
}
بنظرم ازون دسته فیچرهایی هست که خیلی زود بهش عادت میکنیم و بعدش توهم میزنیم که از روز اول توی زبان بوده 😂
این یکی از نکات جذاب سی شارپه بنظرم، خیلی از فیچرهایی که توی سال های اخیر اضافه شدن صرفا برای راحت تر کردن و خوانا تر کردن کد بودن، درحالیکه شاید تنها کاری که کردن این بوده که کد تکراری و boiler-plate رو توی کامپایلر اتوماسیون کردن.
@ever_code
❤4👍1
هیچوقت فکر نمیکردم روزی بیاد که وبسایت داکیومنت دانلود کنم، تا الان دو سه تا دانلود کردم تا اگر نت قطع شد روی سیستمم هاست کنم و ازشون بتونم استفاده کنم.
برای مثال keycloak تو گیتهاب یه پروژه داره که فایل استاتیک بیلد شدهی پروژهی داکیومنتش هست با حجم ۲.۵ گیگ و اگر دانلود کنین میتونین با پایتون با کامند زیر:
یا با npx با دستور زیر:
روی لوکال هاست اجراش کنید.
@ever_code
برای مثال keycloak تو گیتهاب یه پروژه داره که فایل استاتیک بیلد شدهی پروژهی داکیومنتش هست با حجم ۲.۵ گیگ و اگر دانلود کنین میتونین با پایتون با کامند زیر:
python -m http.server 8080
یا با npx با دستور زیر:
npx server index.html
روی لوکال هاست اجراش کنید.
@ever_code
❤2
متوجه شدم که minio به کل تعطیل شده و ایمیج های داکرش رو دیگه حتی maintain نمیکنن.
قبل از این اتفاق یکی از سرویسهای خیلی خوب برای file storage همین minio بود که با Amazon S3 کار میکرد. بنظر میاد اخیرا از دنیای اوپن سورس فاصله گرفته، و تا مدتی میشد سورس رو گرفت و بیلد انجام داد و اورد روی داکر، اما اخیرا ریپازیتوری خودش رو هم آرشیو کرده.
در کمی گشت و گذار رسیدم به RustFS که یک جایگزین بشدت قوی هست و ۱۰۰ درصد S3 Compatible هست و توی دات نت میشه با پکیج Amazon.S3 باهاش کار کرد.
https://rustfs.com/
@ever_code
قبل از این اتفاق یکی از سرویسهای خیلی خوب برای file storage همین minio بود که با Amazon S3 کار میکرد. بنظر میاد اخیرا از دنیای اوپن سورس فاصله گرفته، و تا مدتی میشد سورس رو گرفت و بیلد انجام داد و اورد روی داکر، اما اخیرا ریپازیتوری خودش رو هم آرشیو کرده.
در کمی گشت و گذار رسیدم به RustFS که یک جایگزین بشدت قوی هست و ۱۰۰ درصد S3 Compatible هست و توی دات نت میشه با پکیج Amazon.S3 باهاش کار کرد.
https://rustfs.com/
@ever_code
Rustfs
RustFS | High-Performance S3 Object Storage for AI & Cloud-Native
RustFS is an open-source, Apache 2.0-licensed distributed object storage system built in Rust. A high-performance, drop-in replacement for MinIO and Amazon S3 engineered for AI workloads.
❤5
از open-spec و spec-kit خوشم نمیومد، حس میکنم توکن زیاد مصرف میکنه. اومدم مثلا ابتکار به خرج بدم خودم عملا کاراییش رو دستی تو Claude code تعریف کردم. بعد اینجوری بودم که خب همین شد که😭
حس میکنم به ورژن مدرن این برخوردم:
Take 3 days to automate a 20 mintue task
ولی در کل بد نشد تونستم روی پروژه کار کنم باهاش و rtk هم کمک کرد توکن کمتر مصرف کنه و حدودا هزار و خوردهای توکن کمتر مصرف کرد، اما مجبور شدم دات نت و همه چی رو روی WSL دوباره نصب کنم تا بیشترین، بهینگی رو بگیرم ازش. اما یجورایی با Spec-driven development حال میکنم.
اگر بخوام تشبیه کنم این حس رو، مثل اولین باری که از TDD واقعا استفاده کردم میشه. وقتی مجبوری واقعا به رفتار سیستم فکر کنی تا ببینی چی میخوای، که بعد برای اون رفتار اول تست بنویسی و بعد پیادهش کنی. الان هم همون قاعده کار میکنه، اول باید خوب فکر کنی ببینی سیستمت چیکار میکنه، بعد بشکونیش، بعد هر قسمت رو جدا تعریف کنی و بری جلو.
@ever_code
حس میکنم به ورژن مدرن این برخوردم:
Take 3 days to automate a 20 mintue task
ولی در کل بد نشد تونستم روی پروژه کار کنم باهاش و rtk هم کمک کرد توکن کمتر مصرف کنه و حدودا هزار و خوردهای توکن کمتر مصرف کرد، اما مجبور شدم دات نت و همه چی رو روی WSL دوباره نصب کنم تا بیشترین، بهینگی رو بگیرم ازش. اما یجورایی با Spec-driven development حال میکنم.
اگر بخوام تشبیه کنم این حس رو، مثل اولین باری که از TDD واقعا استفاده کردم میشه. وقتی مجبوری واقعا به رفتار سیستم فکر کنی تا ببینی چی میخوای، که بعد برای اون رفتار اول تست بنویسی و بعد پیادهش کنی. الان هم همون قاعده کار میکنه، اول باید خوب فکر کنی ببینی سیستمت چیکار میکنه، بعد بشکونیش، بعد هر قسمت رو جدا تعریف کنی و بری جلو.
@ever_code
❤4
EverCode
از open-spec و spec-kit خوشم نمیومد، حس میکنم توکن زیاد مصرف میکنه. اومدم مثلا ابتکار به خرج بدم خودم عملا کاراییش رو دستی تو Claude code تعریف کردم. بعد اینجوری بودم که خب همین شد که😭 حس میکنم به ورژن مدرن این برخوردم: Take 3 days to automate a 20 mintue…
آقا الان نگاه میکنم دو سال پیش این متن رو میذاشتن جلوم گیرپاژ میکردم مغزم اسکرین شات میگرفت، تکنولوژی واقعا عجیبه...
❤5
EverCode
با همهی زبان های general purpose میشه هرکاری کرد وگرنه اسمش اون نبود
در راستای این پست بیاین چیزهای جذابتری بهتون بگم!
این دوتا Library با زبانهای Rust و C برای Front-end هستند:
Rust: https://github.com/dioxuslabs/dioxus
C: https://github.com/nicbarker/clay
اونی که با Rust نوشته شده، کاملا Cross-Platform هست. اونی که با C هست یه کار جالبی که میکنه اینه که روی هر تغییر بجای اینکه مثل React مثلا بیاد پوزیشن ها رو دستی بر اساس State تغییر بده و Component ها رو تکون بده، میاد کاملا صفحه رو از اول رندر میکنه! اول که اینو فهمیدم اینجوری بودم که خب اینکه خیلی بهینه نیست؟! اما واقعیت اینه که 1. زبانمون C هست! 2. کلی از دردسرهای State Management رو نداره. 3.کاربر واقعا متوجه نمیشه! 4.خیلی سایتها با فریمورکهای غولتری با JS/TS زده شدن که خیلی بدتر از این حرفان!
بنظر خودم خیلی جذابه که با این زبانها وارد دنیای Front-end شد ( مشخصه خیلی با JS میانه خوبی ندارم یا بگم؟ )
شاید نوع کد زدن توشون خیلی فرق داشته باشه و خیلیها نخوان که توی production ازشون استفاده کنن. اما چندتا نکته مهم هست که باید توجه بشه بهشون.
اکثر افراد دارای سوگیری تجاری زبان هستند. یعنی بطور پیش فرض وقتی میشنون دات نت ذهنشون میره سمت Back-end یا js میشه برای Front-end یا C و Rust میشن برای کارهای Low-level. اما واقعیت اینه که با اینکه میدونیم NodeJS هست، یا مثلا دات نت MAUI داره، یا الان دیدیم که Rust فریمورک Front-end داره و C سالهاست که QT داره و بشدت توی صنعت ازش استفاده میشه، باز سوگیری داریم.
ما یادمون میره General Purpose Programming Language یعنی چی؟ اما چیزی که خیلیها روش تاکید دارند اینه که توسعه دهنده نباید بردهی ابزار باشه، ابزار صرفا یک مسیر برای رسیدن به هدفه، همینطوری که Ai یک ابزاره.
@ever_code
این دوتا Library با زبانهای Rust و C برای Front-end هستند:
Rust: https://github.com/dioxuslabs/dioxus
C: https://github.com/nicbarker/clay
اونی که با Rust نوشته شده، کاملا Cross-Platform هست. اونی که با C هست یه کار جالبی که میکنه اینه که روی هر تغییر بجای اینکه مثل React مثلا بیاد پوزیشن ها رو دستی بر اساس State تغییر بده و Component ها رو تکون بده، میاد کاملا صفحه رو از اول رندر میکنه! اول که اینو فهمیدم اینجوری بودم که خب اینکه خیلی بهینه نیست؟! اما واقعیت اینه که 1. زبانمون C هست! 2. کلی از دردسرهای State Management رو نداره. 3.کاربر واقعا متوجه نمیشه! 4.خیلی سایتها با فریمورکهای غولتری با JS/TS زده شدن که خیلی بدتر از این حرفان!
بنظر خودم خیلی جذابه که با این زبانها وارد دنیای Front-end شد ( مشخصه خیلی با JS میانه خوبی ندارم یا بگم؟ )
شاید نوع کد زدن توشون خیلی فرق داشته باشه و خیلیها نخوان که توی production ازشون استفاده کنن. اما چندتا نکته مهم هست که باید توجه بشه بهشون.
اکثر افراد دارای سوگیری تجاری زبان هستند. یعنی بطور پیش فرض وقتی میشنون دات نت ذهنشون میره سمت Back-end یا js میشه برای Front-end یا C و Rust میشن برای کارهای Low-level. اما واقعیت اینه که با اینکه میدونیم NodeJS هست، یا مثلا دات نت MAUI داره، یا الان دیدیم که Rust فریمورک Front-end داره و C سالهاست که QT داره و بشدت توی صنعت ازش استفاده میشه، باز سوگیری داریم.
ما یادمون میره General Purpose Programming Language یعنی چی؟ اما چیزی که خیلیها روش تاکید دارند اینه که توسعه دهنده نباید بردهی ابزار باشه، ابزار صرفا یک مسیر برای رسیدن به هدفه، همینطوری که Ai یک ابزاره.
@ever_code
GitHub
GitHub - DioxusLabs/dioxus: Fullstack app framework for web, desktop, and mobile.
Fullstack app framework for web, desktop, and mobile. - DioxusLabs/dioxus
❤4
از Microservice به Outsourced Microservice و سرویسهای Domain-Agnostic
وسط جنگ، شروع کردم دورهی Event sourcing دیدن. دید خیلی بهتری بهش پیدا کردم و یاد گرفتم که چطوری بصورت استاندارد ازش استفاده کنم و پیاده سازیش کنم.
اما چیزی که برام واضح تر بود، این نبود که خب این رو الان کجا پیادهسازی کنم. این بود که الان که میدونم چیه، و چقدر پیچیدگی الکی میتونه استفاده کنه، کجاها سراغش نباید برم.
هرچی بیشتر یاد میگیرم به این مفهوم نزدیکتر میشم که ساده نگاهش کن، مگر اینکه برخلافش نیاز باشه.
یکی از چیزهایی که در سالهای اخیر خیلی سر و صدا کرد مایکروسرویس بود. مایکروسرویس واقعی، هزینه مالی و انسانی زیادی میبره. با گذشت زمان، به یک دید متفاوت رسیدم. درسته که کل سیستم رو مایکروسرویس دیدن الکی گنده هست و باید بررسی عمیقی برای انجام دادن یا ندادنش صورت بگیره. اما خیلی از سرویسها رو دیگه نیاز نیست خودمون توسعه بدیم. بهش که فکر میکردم کلمهی Outsourced Microservices مناسب بنظر میاد.
وقتی میتونیم سرویس احراز هویت رو با keycloak، سرویس سرچ رو با ElasticSearch، سرویس مدیریت فایل رو با Minio و نرم افزارهای مشابهش راه بندازیم، دیگه خیلی منطقی نیست که خودمون توسعه بدیم. اینجوری با یک سرویس مربوط به بیزنسمون، و چندتا سرویس آماده میتونیم به سرعت به یک سیستم شبیه مایکروسرویس برسیم.
ایدهی اصلی اینجا اینه که از سرویسهای Domain-Agnostic استفاده کنیم. یعنی سرویسهایی که ربط مستقیمی به Domain ما ندارن. صرفا به ما کمک میکنن که تمرکزمون روی Domain باشه.
راجب این تجربه توی بلاگ بیشتر نوشتم:
https://mazdakparnian.com/blogs/2026-04/simple-choices
@ever_code
وسط جنگ، شروع کردم دورهی Event sourcing دیدن. دید خیلی بهتری بهش پیدا کردم و یاد گرفتم که چطوری بصورت استاندارد ازش استفاده کنم و پیاده سازیش کنم.
اما چیزی که برام واضح تر بود، این نبود که خب این رو الان کجا پیادهسازی کنم. این بود که الان که میدونم چیه، و چقدر پیچیدگی الکی میتونه استفاده کنه، کجاها سراغش نباید برم.
هرچی بیشتر یاد میگیرم به این مفهوم نزدیکتر میشم که ساده نگاهش کن، مگر اینکه برخلافش نیاز باشه.
یکی از چیزهایی که در سالهای اخیر خیلی سر و صدا کرد مایکروسرویس بود. مایکروسرویس واقعی، هزینه مالی و انسانی زیادی میبره. با گذشت زمان، به یک دید متفاوت رسیدم. درسته که کل سیستم رو مایکروسرویس دیدن الکی گنده هست و باید بررسی عمیقی برای انجام دادن یا ندادنش صورت بگیره. اما خیلی از سرویسها رو دیگه نیاز نیست خودمون توسعه بدیم. بهش که فکر میکردم کلمهی Outsourced Microservices مناسب بنظر میاد.
وقتی میتونیم سرویس احراز هویت رو با keycloak، سرویس سرچ رو با ElasticSearch، سرویس مدیریت فایل رو با Minio و نرم افزارهای مشابهش راه بندازیم، دیگه خیلی منطقی نیست که خودمون توسعه بدیم. اینجوری با یک سرویس مربوط به بیزنسمون، و چندتا سرویس آماده میتونیم به سرعت به یک سیستم شبیه مایکروسرویس برسیم.
ایدهی اصلی اینجا اینه که از سرویسهای Domain-Agnostic استفاده کنیم. یعنی سرویسهایی که ربط مستقیمی به Domain ما ندارن. صرفا به ما کمک میکنن که تمرکزمون روی Domain باشه.
راجب این تجربه توی بلاگ بیشتر نوشتم:
https://mazdakparnian.com/blogs/2026-04/simple-choices
@ever_code
Mazdak Parnian
Simple by Choice, Not by Ignorance
🔥3
مقایسهی زبانهای برنامهنویسی همیشه یکی از کارهای مورد علاقهی من بوده.
نه چون میفهمیم کدوم خوبه کدوم بده، چون اکثر چیزهایی که ما روزمره باهاش سر و کله میزنیم، قبل ازینکه در صنعت به کار گرفته بشن، در تئوری و دنیای آکادمیک مطرح شدن. برای من جذابیتش اینه که میبینم کدوم مباحث الهام بخش چه فیچرهایی در زبانهای مطرح الان بودهان.
برای مثال، مفهوم channel که در Golang, C#, Rust و زبانهای مختلف حالتهایی ازش پیاده سازی شده، توسط Tony Hoare مطرح شد. ایشون مفهومی برای مدیریت پراسسهای همزمان (Concurrent Processes) مطرح میکنن به نام زیر
Communicating sequential processes
که در زبان Go میشه گفت بعنوان First-class concept استفاده شده و بخشی از طراحی زبان هست. این دوستمون هم کمی داستان رو باز تر کرده:
https://t.me/hiradsajde/178
جالبه بدونین، همین آقای هور، کسی بوده که Null Reference رو در روزهای ابتدایی زبانها در طراحی زبان تعریف کرده و کلی آدم رو بدبخت کرده.
خودش، در ارائهای در سال 2009 با نام Null References: The Billion Dollar Mistake اینجوری ازش یاد میکنه:
در این ارائه ایشون میگه دلیلی که Null Reference ها رو داخل زبان تعریف کرده بود صرفا برای راحتی پیادهسازیش بود، اما این کارش میلیاردها دلار هزینه تراشیده!
برای همینه که هر از چندگاهی بنظرم بد نیست که زبان جدید یاد گرفت، برای اینکه یادمون نره که همهی زبانها صرفا ابزاری برای ارتباط با Cold, Hard Metal هستن!
@ever_code
نه چون میفهمیم کدوم خوبه کدوم بده، چون اکثر چیزهایی که ما روزمره باهاش سر و کله میزنیم، قبل ازینکه در صنعت به کار گرفته بشن، در تئوری و دنیای آکادمیک مطرح شدن. برای من جذابیتش اینه که میبینم کدوم مباحث الهام بخش چه فیچرهایی در زبانهای مطرح الان بودهان.
برای مثال، مفهوم channel که در Golang, C#, Rust و زبانهای مختلف حالتهایی ازش پیاده سازی شده، توسط Tony Hoare مطرح شد. ایشون مفهومی برای مدیریت پراسسهای همزمان (Concurrent Processes) مطرح میکنن به نام زیر
Communicating sequential processes
که در زبان Go میشه گفت بعنوان First-class concept استفاده شده و بخشی از طراحی زبان هست. این دوستمون هم کمی داستان رو باز تر کرده:
https://t.me/hiradsajde/178
جالبه بدونین، همین آقای هور، کسی بوده که Null Reference رو در روزهای ابتدایی زبانها در طراحی زبان تعریف کرده و کلی آدم رو بدبخت کرده.
خودش، در ارائهای در سال 2009 با نام Null References: The Billion Dollar Mistake اینجوری ازش یاد میکنه:
I call it my billion-dollar mistake. At that time, I was designing the first comprehensive type system for references in an object-oriented language. My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn’t resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.
در این ارائه ایشون میگه دلیلی که Null Reference ها رو داخل زبان تعریف کرده بود صرفا برای راحتی پیادهسازیش بود، اما این کارش میلیاردها دلار هزینه تراشیده!
برای همینه که هر از چندگاهی بنظرم بد نیست که زبان جدید یاد گرفت، برای اینکه یادمون نره که همهی زبانها صرفا ابزاری برای ارتباط با Cold, Hard Metal هستن!
@ever_code
Wikipedia
Tony Hoare
Sir Charles Antony Richard Hoare (/hɔːr/ HOR; 11 January 1934 – 5 March 2026), known as Sir Tony Hoare or C. A. R. Hoare, was a British computer scientist who made foundational contributions to programming languages, algorithms, operating systems, formal…
👍4
امروز دسترسی به Claude بدون فیلتر برام قطع شد، برای شما هم همچین اتفاقی رخ داد؟ تا قبل از اون میتونستم بدون فیلتر بهش وصل شم.
@ever_code
@ever_code
Forwarded from کدهالیک | codehalic
حرکتی که این آقا با دامنه ویکیتجربه زده، تو دنیای وب بهش میگن Cybersquatting (غصب دامنه) و Brand Hijacking (جعل هویت برند) که اینجا با Defamation (تخریب و افترا) هم قاطی شده. در واقع اومدن دامنه رو به هر روشی صاحب شدن تا بیانیه بنویسن و دیتابیس فیک بسازن. برای خوابوندن این مچ، بهترین کار اینه که مستندات و اسکرینشاتها رو به ایمیل ابیوزِ رجیسترار دامنه (`abuse@namesilo.com`) بفرستیم تا به جرم نقض صریح قوانینِ میزبانی (ToS)، خیلی سریع دامنه رو ساسپند یا قفل کنن.
حالا جالبیش اینجاست که اگه این حرکت رو تو یه کشور خارجی با قوانین سفت و سخت (مثل قانون ACPA آمریکا) انجام میدادن، کار به این راحتیها تموم نمیشد. اونجا شاکی میتونست علاوه بر پسگرفتنِ فوری دامنه، یه پروندهٔ حقوقی سنگین برای آزار سایبری و ضربه به اعتبار تجاری باز کنه که جریمههای مالی وحشتناکی (تا ۱۰۰ هزار دلار برای هر دامنه) روی دست این هلدینگ و بنیانگذارش میذاشت و حتی میتونست به قیمت سابقهٔ کیفری براشون تموم بشه.
@codehalics | کدهالیک
حالا جالبیش اینجاست که اگه این حرکت رو تو یه کشور خارجی با قوانین سفت و سخت (مثل قانون ACPA آمریکا) انجام میدادن، کار به این راحتیها تموم نمیشد. اونجا شاکی میتونست علاوه بر پسگرفتنِ فوری دامنه، یه پروندهٔ حقوقی سنگین برای آزار سایبری و ضربه به اعتبار تجاری باز کنه که جریمههای مالی وحشتناکی (تا ۱۰۰ هزار دلار برای هر دامنه) روی دست این هلدینگ و بنیانگذارش میذاشت و حتی میتونست به قیمت سابقهٔ کیفری براشون تموم بشه.
@codehalics | کدهالیک
🔥1
Forwarded from Matin SenPai (᯽マティ️️ン先輩)
ویکی تجربه یکی از معدود گروههایی بود که بدون هیچ وابستگی و فاند و رانتی، محیطی رو فراهم کرده بود که افراد نظر واقعیشون رو راجب شرکتهای ایرانی بگن و نظر بدن.
سر همین خیلی از شرکتها میگفتن که کامنتهایی که راجب ما گذاشتن رو پاک کن وگرنه شکایت میکنیم و فلانت میکنیم و... یا حتی میگفتن بهت پول میدیم، اما قبول نمیکرد.
و همینطور یکی از عواملی بودش که باعث شد آموزشهای من به دست خیلیها برسن، چون همیشه مطالب رو share میکرد و با وجود هزینههای سرسام آور سرورهاش و شرایط سخت مالی، توی قطعی نت کنارمون بود.
و آخرین پست کانال تلگرامشون توی تاریخ ۲۷ مارچ(۹۰ روز پیش و اواسط جنگ) بود و همه نگران بودیم که نکنه اتفاقی واسهی مالکش افتاده باشه یا دستگیر شده باشه.
و نتونسته دامنه https://tajrobe.wiki رو تمدید کنه. امروز دیدم که دامنهی ویکی تجربه توسط ابرناک گرفته شده(احتمالا یکی از شرکتهایی که تهدیدش میکرد). و در عجبم از اینهمه بیشرفی، که میراث شخصی رو که مشخص نیست مرده یا زندهست یا دستگیر شده یا... رو برداشته و اسم تمام اون پلتفرم رو گذاشته انتقامگیری.
امیدوارم که حال ویکی تجربه خوب باشه. دامنه و اینها کمترین اهمیت رو داره
سر همین خیلی از شرکتها میگفتن که کامنتهایی که راجب ما گذاشتن رو پاک کن وگرنه شکایت میکنیم و فلانت میکنیم و... یا حتی میگفتن بهت پول میدیم، اما قبول نمیکرد.
و همینطور یکی از عواملی بودش که باعث شد آموزشهای من به دست خیلیها برسن، چون همیشه مطالب رو share میکرد و با وجود هزینههای سرسام آور سرورهاش و شرایط سخت مالی، توی قطعی نت کنارمون بود.
و آخرین پست کانال تلگرامشون توی تاریخ ۲۷ مارچ(۹۰ روز پیش و اواسط جنگ) بود و همه نگران بودیم که نکنه اتفاقی واسهی مالکش افتاده باشه یا دستگیر شده باشه.
و نتونسته دامنه https://tajrobe.wiki رو تمدید کنه. امروز دیدم که دامنهی ویکی تجربه توسط ابرناک گرفته شده(احتمالا یکی از شرکتهایی که تهدیدش میکرد). و در عجبم از اینهمه بیشرفی، که میراث شخصی رو که مشخص نیست مرده یا زندهست یا دستگیر شده یا... رو برداشته و اسم تمام اون پلتفرم رو گذاشته انتقامگیری.
امیدوارم که حال ویکی تجربه خوب باشه. دامنه و اینها کمترین اهمیت رو داره
💔5
Forwarded from DevTwitter | توییت برنامه نویسی
خب یوزرهای ایرانی باید با Claude خداحافظی کنن...
از ۱۸ تیر، برای استفاده از کلود باید کارت شناسایی دولتی و سلفی زنده بدید!
چون ایران ساپورت نمیشه، پس حسابتون همون لحظه بسته میشه.
البته اگه با یه سرور ثابت وصل بشید شاید بتونید تا وقتی گیر نداده ازش استفاده کنید.
@DevTwitter | <Behrad Javed/>
از ۱۸ تیر، برای استفاده از کلود باید کارت شناسایی دولتی و سلفی زنده بدید!
چون ایران ساپورت نمیشه، پس حسابتون همون لحظه بسته میشه.
البته اگه با یه سرور ثابت وصل بشید شاید بتونید تا وقتی گیر نداده ازش استفاده کنید.
@DevTwitter | <Behrad Javed/>
💔4
Forwarded from کدهالیک | codehalic
رفقا داشتم مقالهای درباره پدیده توکنمکسینگ یا همون سوزاندن دیوانهوار توکنهای هوش مصنوعی میخوندم که خیلی به وضعیت الان تیمهای فنی ما نزدیکه. تو این مقاله میگه شرکتها به دو شکل کاملا متفاوت دارن پول پای این قضیه میدن. شکل درستش اینه که ابزارهایی مثل کلود کد رو میدن دست دولوپرها و تسکها رو میندازن توی چرخههای خودکار. اینجا هرچقدر هم توکن بسوزه ارزش داره چون مستقیما داره سرعت و خروجی مهندسها رو چند برابر میکنه و یه سرمایهگذاری کاملا سودآور روی نیروی انسانیه.
اما شکل دوم که یه تله وحشتناکه و خیلیها توش میفتن اینه که دولوپرها هنوز دارن دستی کد میزنن ولی میان کلی توکن میسوزونن تا برای پایپلاینها ایجنتهای یکبارمصرف بسازن. نتیجه این کار میشه یه سیستم به شدت شکننده و غیرقطعی که فقط مثل تراکتور بودجه شرکت رو میبلعه و خروجی پایداری هم نداره. به عنوان یه پیشنهاد فنی اگر قراره برای هوش مصنوعی بودجه بذارید اون رو خرج ابزارهایی کنید که قدرت برنامهنویس رو بالا میبرن و تسکهای قطعی پایپلاین رو به ایجنتهای ناپایدار و گرونقیمت نسپارید.
لینک مقاله
@codehalics | کدهالیک
اما شکل دوم که یه تله وحشتناکه و خیلیها توش میفتن اینه که دولوپرها هنوز دارن دستی کد میزنن ولی میان کلی توکن میسوزونن تا برای پایپلاینها ایجنتهای یکبارمصرف بسازن. نتیجه این کار میشه یه سیستم به شدت شکننده و غیرقطعی که فقط مثل تراکتور بودجه شرکت رو میبلعه و خروجی پایداری هم نداره. به عنوان یه پیشنهاد فنی اگر قراره برای هوش مصنوعی بودجه بذارید اون رو خرج ابزارهایی کنید که قدرت برنامهنویس رو بالا میبرن و تسکهای قطعی پایپلاین رو به ایجنتهای ناپایدار و گرونقیمت نسپارید.
لینک مقاله
@codehalics | کدهالیک
🔥4❤1
Forwarded from iCodeNext
سلام به همه.
قبلا تمام فایل های صوتی و پادکست هارو با Whisper تبدیل به متن میکردم. کیفیت خیلی خوبی هم داره مدل large v3 - turbo.
اما خوب فقط cli هست، بخاطر همین گشتم دیدم اپ تر تمیزی برای ویندوز نداره، بقیه هم پولی بودند و یا روی وب سایت و بازم بعد از مدتی پولی. این شد که کم کم شروع کردم به توسعه یه اینترفیس برای ویندوز و مک و لینوکس، و فایل های خودم رو تبدیل به متن کنم و مدیریت کنمش.
چند روز پیش تصمیم گرفتم کدش رو بزارم روی گیت هاب و با هم بهترش کنیم.
البته الان فقط Open AI Whisper رو ساپورت میکنه، اما بزودی WhisperX رو هم اضافه میکنم بهش، که قابلیت های خیلی بهتری داره.
اگر نصب کردید، هرجاش هم ایراد داشتید، ممنون میشم بهم بگید یا ایشیو کنید.
اگرم نصب نکردید، کد رو ببینید و اگه جایی باز نیاز به بهتر شدن داشت حتما باز ایشیو کنید، یا خودتون فیکسش کنید.
استار هم که بدید دمتون گرمه.
❤️❤️❤️
https://github.com/mohammadKarimi/Whisper-Studio
اگرم فایل نصبی رو خواستید توی این مسیر تمامش هست.
https://github.com/mohammadKarimi/Whisper-Studio/releases
قبلا تمام فایل های صوتی و پادکست هارو با Whisper تبدیل به متن میکردم. کیفیت خیلی خوبی هم داره مدل large v3 - turbo.
اما خوب فقط cli هست، بخاطر همین گشتم دیدم اپ تر تمیزی برای ویندوز نداره، بقیه هم پولی بودند و یا روی وب سایت و بازم بعد از مدتی پولی. این شد که کم کم شروع کردم به توسعه یه اینترفیس برای ویندوز و مک و لینوکس، و فایل های خودم رو تبدیل به متن کنم و مدیریت کنمش.
چند روز پیش تصمیم گرفتم کدش رو بزارم روی گیت هاب و با هم بهترش کنیم.
البته الان فقط Open AI Whisper رو ساپورت میکنه، اما بزودی WhisperX رو هم اضافه میکنم بهش، که قابلیت های خیلی بهتری داره.
اگر نصب کردید، هرجاش هم ایراد داشتید، ممنون میشم بهم بگید یا ایشیو کنید.
اگرم نصب نکردید، کد رو ببینید و اگه جایی باز نیاز به بهتر شدن داشت حتما باز ایشیو کنید، یا خودتون فیکسش کنید.
استار هم که بدید دمتون گرمه.
❤️❤️❤️
https://github.com/mohammadKarimi/Whisper-Studio
اگرم فایل نصبی رو خواستید توی این مسیر تمامش هست.
https://github.com/mohammadKarimi/Whisper-Studio/releases
👍3❤1