اخیرا میخواستم German String رو پیاده سازی کنم اما دیدم واسه Refcount بودن استرینگ و substr گرفتن بدون hardcopy استفاده های بیشتری دارم.
متاسفانه هنوز string literal بدون allocation ساپورت نمیکنه و هنوز ایده ای به ذهنم نرسیده چطور تو 128بیت درستش کنم.
https://github.com/hexorer/libtoypp/blob/main/include/toypp/immutable_string.hpp
@DevTwitter | <Mohsen M./>
متاسفانه هنوز string literal بدون allocation ساپورت نمیکنه و هنوز ایده ای به ذهنم نرسیده چطور تو 128بیت درستش کنم.
https://github.com/hexorer/libtoypp/blob/main/include/toypp/immutable_string.hpp
@DevTwitter | <Mohsen M./>
👍7🍌7❤1🔥1
وقتی افزونهها کمکم تبدیل میشن به همتیمیهای واقعی…
امروز Cline رو روی VS Code تست کردم و رسماً فهمیدم دوران «تنهایی در کدنویسی» داره تموم میشه.
این موجود فضاییِ کوچک توی ادیتورم نهتنها کد میخونه، بلکه ایراد میگیره، پیشنهاد میده، فایل میسازه، پاک میکنه، حتی ترمینال رو هم دستکاری میکنه.
یک جورهایی انگار داری با یه دولوپر دیگه pair programming میکنی… فقط بدون غر زدن!
دنیای برنامهنویسی داره یه لایه جدید پیدا میکنه:
کد کمتر، فکر بیشتر.
اگه هنوز امتحانش نکردی… چند قدم مونده تا اینکه واقعاً حس کنی IDEت بامرامتر از خیلی از همکاراست.
@DevTwitter | <Amin Hosseini/>
امروز Cline رو روی VS Code تست کردم و رسماً فهمیدم دوران «تنهایی در کدنویسی» داره تموم میشه.
این موجود فضاییِ کوچک توی ادیتورم نهتنها کد میخونه، بلکه ایراد میگیره، پیشنهاد میده، فایل میسازه، پاک میکنه، حتی ترمینال رو هم دستکاری میکنه.
یک جورهایی انگار داری با یه دولوپر دیگه pair programming میکنی… فقط بدون غر زدن!
دنیای برنامهنویسی داره یه لایه جدید پیدا میکنه:
کد کمتر، فکر بیشتر.
اگه هنوز امتحانش نکردی… چند قدم مونده تا اینکه واقعاً حس کنی IDEت بامرامتر از خیلی از همکاراست.
@DevTwitter | <Amin Hosseini/>
👎33👍17❤8🍌5
اپ فال حافظ من از یک نیاز خیلی ساده شروع شد؛ همیشه وقتی دور هم جمع میشدیم و فال میگرفتیم، دوست داشتم یک اپ تمیز و کاملاً فارسی داشته باشم که هم فال تصادفی بده، هم تعبیرش رو قشنگ و خوانا نشان بده برای همین رفتم سراغ Flutter و این پروژه رو ساختم تا روی اندروید، ویندوز و بقیه پلتفرمها هم قابل اجرا باشه و هرکس خواست راحت بتونه ازش استفاده کنه یا توی گیتهاب کمک کنه
اسم پروژه only_faleh_hafez هست و داخلش میتونی با یک کلیک فال تصادفی از دیوان حافظ بگیری، تعبیر و توضیح اون فال رو بخونی و اگر دنبال شعر خاصی هستی، مستقیم داخل اشعار جستوجو کنی رابط کاربری کامل فارسی و راستبهچپ طراحی شده تا حس یک اپ بومی و ساده رو بده، نه یک چیز ترجمهشدهی عجیب؛ هدفم این بوده که هم برای کاربر معمولی راحت باشه، هم برای دولوپرها اوپنسورس و قابل توسعه
لینک ریپو و توضیحات کاملتر پروژه:
https://github.com/MMDREZA7/only_faleh_hafez
@DevTwitter | <Ethan Heida/>
اسم پروژه only_faleh_hafez هست و داخلش میتونی با یک کلیک فال تصادفی از دیوان حافظ بگیری، تعبیر و توضیح اون فال رو بخونی و اگر دنبال شعر خاصی هستی، مستقیم داخل اشعار جستوجو کنی رابط کاربری کامل فارسی و راستبهچپ طراحی شده تا حس یک اپ بومی و ساده رو بده، نه یک چیز ترجمهشدهی عجیب؛ هدفم این بوده که هم برای کاربر معمولی راحت باشه، هم برای دولوپرها اوپنسورس و قابل توسعه
لینک ریپو و توضیحات کاملتر پروژه:
https://github.com/MMDREZA7/only_faleh_hafez
@DevTwitter | <Ethan Heida/>
🍌29❤19👍6👎2
چرا pnpm, بهتر از npm عمل میکنه
چند وقت پیش برای اولین بار که از pnpm استفاده میکردم (با سرعت نت همیشگی)، فر خوردم از سرعت نصب پکیج و این سوال برام پیش اومد که چرا؟؟؟
حالا ماجرا چیه؟
خب، npm همون مدیر بستهٔ کلاسیکِ Node هستش. ساده، همهکاره، ولی هر پروژه یه کپی از بستهها توی node_modules نگه میداره — فضای دیسک زیاد و بعضاً نصبهای کند. جدیدترها هم بهتر شدن ولی هنوز محدودیت دارن ولی pnpm, یک سبک دیگه داره. بستهها رو توی یک مخزن مرکزی (content-addressable store) ذخیره میکنه و داخل پروژه فقط لینک (hardlink/symlink) میسازه. یعنی: کمتر تکرار، نصب سریعتر، و استفادهٔ خیلی بهینه از دیسک یعنی یه بار نصب و ذخیره میکنه توی سیستم مرکزی خودش و یه لینک میزاره برای استفاده های بعدی.
خب حالا مزیت هاش چیه؟
1. سرعتِ نصب بیشتر — چون فایلهاو دوباره دانلود نمیکنه، وقتتو نمیسوزونه.
2. صرفهجویی در فضا — یک بسته فقط یکبار ذخیره میشه، نه هزار بار توی هر پروژه.
3. سختگیری روی وابستگیها = باگ کمتر — pnpm ساختار غیرفلت node_modules داره؛ یعنی اگر پکیجی بهطور مستقیم به یه بسته نیاز داره ولی اون رو در package.json اعلام نکردی، خطا میده — خیلی وقتا نجاتدهندهست.
4. حمایت بهتر از monorepo/Workspaces — تو تیم و پروژههای چندپکیجهای خیلی راحتتر کار میکنه.
سازگاری با اکوسیستم npm — از رجیستری npm استفاده میکنه، اسکریپتها و package.json تغییر زیادی نیاز ندارن. (این خیلی خفنه )
اگه فقط یکی دو تا پروژه کوچیک داری و با npm راحتی — همون بمونه. ولی اگه میخوای سرعت بیاد بالا، فضا کمتر مصرف بشه یا پروژهت چندپکیجهای/تیمی باشه، pnpm واقعاً بهت حال میده.
@DevTwitter | <Mohammad Ghiasi/>
چند وقت پیش برای اولین بار که از pnpm استفاده میکردم (با سرعت نت همیشگی)، فر خوردم از سرعت نصب پکیج و این سوال برام پیش اومد که چرا؟؟؟
حالا ماجرا چیه؟
خب، npm همون مدیر بستهٔ کلاسیکِ Node هستش. ساده، همهکاره، ولی هر پروژه یه کپی از بستهها توی node_modules نگه میداره — فضای دیسک زیاد و بعضاً نصبهای کند. جدیدترها هم بهتر شدن ولی هنوز محدودیت دارن ولی pnpm, یک سبک دیگه داره. بستهها رو توی یک مخزن مرکزی (content-addressable store) ذخیره میکنه و داخل پروژه فقط لینک (hardlink/symlink) میسازه. یعنی: کمتر تکرار، نصب سریعتر، و استفادهٔ خیلی بهینه از دیسک یعنی یه بار نصب و ذخیره میکنه توی سیستم مرکزی خودش و یه لینک میزاره برای استفاده های بعدی.
خب حالا مزیت هاش چیه؟
1. سرعتِ نصب بیشتر — چون فایلهاو دوباره دانلود نمیکنه، وقتتو نمیسوزونه.
2. صرفهجویی در فضا — یک بسته فقط یکبار ذخیره میشه، نه هزار بار توی هر پروژه.
3. سختگیری روی وابستگیها = باگ کمتر — pnpm ساختار غیرفلت node_modules داره؛ یعنی اگر پکیجی بهطور مستقیم به یه بسته نیاز داره ولی اون رو در package.json اعلام نکردی، خطا میده — خیلی وقتا نجاتدهندهست.
4. حمایت بهتر از monorepo/Workspaces — تو تیم و پروژههای چندپکیجهای خیلی راحتتر کار میکنه.
سازگاری با اکوسیستم npm — از رجیستری npm استفاده میکنه، اسکریپتها و package.json تغییر زیادی نیاز ندارن. (این خیلی خفنه )
اگه فقط یکی دو تا پروژه کوچیک داری و با npm راحتی — همون بمونه. ولی اگه میخوای سرعت بیاد بالا، فضا کمتر مصرف بشه یا پروژهت چندپکیجهای/تیمی باشه، pnpm واقعاً بهت حال میده.
@DevTwitter | <Mohammad Ghiasi/>
❤29👍5👎2🔥2
بهترین روشهای طراحی REST API
طراحی REST API به نظر ساده میاد، اما نکات ریز و مهمی داره که باید رعایت کنیم. معمولا اشتباهاتی در طراحی API مرتکب میشیم که شامل این 5 مورده:
1- استفاده از فعل در آدرس URL
آدرس باید فقط «منبع» (اسم) باشه، نه «عمل» (فعل). عمل رو خود متد HTTP مشخص میکنه.
2- استفاده نادرست از متدهای HTTP
متد درست باعث میشه API خودبهخود قابل فهم باشه:
متد GET گرفتن داده
متد POST ساختن منبع جدید
متد PUT جایگزینی کامل یک منبع
متد PATCH ویرایش جزئی یک منبع
متد DELETE حذف منبع
3- برنگردوندن کد وضعیت مناسب
کلاینت نباید مجبور بشه بدنه پاسخ رو پارس کنه تا بفهمه چی شده.
همیشه 200 OK برگردوندن
پاسخ 200 OK برای GET و PUT موفق
پاسخ 201 Created وقتی با POST منبع جدید ساخته شد
پاسخ 204 No Content وقتی با DELETE چیزی حذف شد
پاسخ 404 Not Found وقتی منبع پیدا نشد
400, 401, 403, 429, 500 و … در مواقع لازم
4- نامگذاری ناسازگار
همه جا یک شکل باشه
گاهی /book/123 گاهی /authors
همیشه جمع بساز: /books/123 ، /authors ، /orders
5- فراموش کردن صفحهبندی (Pagination)
برگردوندن همه رکوردها در یک درخواست دروافع فاجعه عملکردیه
برگردوندن ۱۰۰ هزار رکورد یهجا
همیشه صفحهبندی داشته باش:
?page=3&limit=50
@DevTwitter | <Amir Rahimi Nejad/>
طراحی REST API به نظر ساده میاد، اما نکات ریز و مهمی داره که باید رعایت کنیم. معمولا اشتباهاتی در طراحی API مرتکب میشیم که شامل این 5 مورده:
1- استفاده از فعل در آدرس URL
آدرس باید فقط «منبع» (اسم) باشه، نه «عمل» (فعل). عمل رو خود متد HTTP مشخص میکنه.
GET /getAllBooks
POST /createNewBook
GET /books
POST /books
2- استفاده نادرست از متدهای HTTP
متد درست باعث میشه API خودبهخود قابل فهم باشه:
متد GET گرفتن داده
متد POST ساختن منبع جدید
متد PUT جایگزینی کامل یک منبع
متد PATCH ویرایش جزئی یک منبع
متد DELETE حذف منبع
3- برنگردوندن کد وضعیت مناسب
کلاینت نباید مجبور بشه بدنه پاسخ رو پارس کنه تا بفهمه چی شده.
همیشه 200 OK برگردوندن
پاسخ 200 OK برای GET و PUT موفق
پاسخ 201 Created وقتی با POST منبع جدید ساخته شد
پاسخ 204 No Content وقتی با DELETE چیزی حذف شد
پاسخ 404 Not Found وقتی منبع پیدا نشد
400, 401, 403, 429, 500 و … در مواقع لازم
4- نامگذاری ناسازگار
همه جا یک شکل باشه
گاهی /book/123 گاهی /authors
همیشه جمع بساز: /books/123 ، /authors ، /orders
5- فراموش کردن صفحهبندی (Pagination)
برگردوندن همه رکوردها در یک درخواست دروافع فاجعه عملکردیه
برگردوندن ۱۰۰ هزار رکورد یهجا
همیشه صفحهبندی داشته باش:
?page=3&limit=50
@DevTwitter | <Amir Rahimi Nejad/>
👍37❤9🍌6🔥2
پروژه چت بات با Next.js و مدل Groq
سلام دوستان!
مدتی بود دوست داشتم از دید ریکت و نکست دقیقتر بفهمم ارتباط اپهای وب با مدلهای هوش مصنوعی چطور برقرار میشه؛ مخصوصاً بحث Streaming response که تجربهی کاربر رو شبیه ChatGPT میکنه.
برای تمرین، یه چتبات ساده ساختم با:
Next.js (App Router)
AI SDK
Groq API
مدل llama-3.1-8b-instant
نتیجه یه دموی آنلاین سبک و سریع شد که latency خیلی کمی داره
لینک آنلاین:
https://next-chatbot-beta.vercel.app/
لینک ریپازیتوری:
https://github.com/Reza-Rayan/next-chatbot
یادتون باشه موقع استفاده حتما VPN رو روشن کنید.
@DevTwitter | <Reza Hosseinzade/>
سلام دوستان!
مدتی بود دوست داشتم از دید ریکت و نکست دقیقتر بفهمم ارتباط اپهای وب با مدلهای هوش مصنوعی چطور برقرار میشه؛ مخصوصاً بحث Streaming response که تجربهی کاربر رو شبیه ChatGPT میکنه.
برای تمرین، یه چتبات ساده ساختم با:
Next.js (App Router)
AI SDK
Groq API
مدل llama-3.1-8b-instant
نتیجه یه دموی آنلاین سبک و سریع شد که latency خیلی کمی داره
لینک آنلاین:
https://next-chatbot-beta.vercel.app/
لینک ریپازیتوری:
https://github.com/Reza-Rayan/next-chatbot
یادتون باشه موقع استفاده حتما VPN رو روشن کنید.
@DevTwitter | <Reza Hosseinzade/>
❤25🍌18👎4👍1
اگه کارتون به زمانبندی، برنامهریزی یا بهینهسازی گیر کرده… Google OR-Tools میتونه ناجیتون باشه!
یک کتابخونهی متنباز از گوگله که برای حل مسائل سختی مثل:
- زمانبندی شیفتها
- برنامهریزی تولید
- تخصیص منابع
- طراحی مسیرهای بهینه (TSP/VRP)
خیلی عالی جواب میده.
چیزی که جذابش میکنه CP-SAT Solverشه؛ هم سریع کار میکنه هم با مسائل پیچیده راحت کنار میاد.
چرا سراغش برید؟
- وقتی چندتا کار، چندتا محدودیت و چندتا آدم/ماشین دارید و نمیدونید چطور همه رو هماهنگ کنید
- وقتی میخواید بهترین برنامه ممکن رو با کمترین خطا و بیشترین بازده داشته باشید
- وقتی دادهمحور تصمیم میگیرید و دنبال راهحل «بهینه» هستید
رایگانه، با Python خیلی راحت کار میکنه و برای پروژههای واقعی هم کاملاً کاربردیه.
اگر تجربهاش رو داشتید یا سوالی دارید خوشحال میشم گپ بزنیم
اگه خواستید یادش بگیرید این یه منبع خوبه:
https://d-krupke.github.io/cpsat-primer/00_intro.html
ORTools Optimization Scheduling Google Python OperationsResearch
@DevTwitter | <Ali Baghernia/>
یک کتابخونهی متنباز از گوگله که برای حل مسائل سختی مثل:
- زمانبندی شیفتها
- برنامهریزی تولید
- تخصیص منابع
- طراحی مسیرهای بهینه (TSP/VRP)
خیلی عالی جواب میده.
چیزی که جذابش میکنه CP-SAT Solverشه؛ هم سریع کار میکنه هم با مسائل پیچیده راحت کنار میاد.
چرا سراغش برید؟
- وقتی چندتا کار، چندتا محدودیت و چندتا آدم/ماشین دارید و نمیدونید چطور همه رو هماهنگ کنید
- وقتی میخواید بهترین برنامه ممکن رو با کمترین خطا و بیشترین بازده داشته باشید
- وقتی دادهمحور تصمیم میگیرید و دنبال راهحل «بهینه» هستید
رایگانه، با Python خیلی راحت کار میکنه و برای پروژههای واقعی هم کاملاً کاربردیه.
اگر تجربهاش رو داشتید یا سوالی دارید خوشحال میشم گپ بزنیم
اگه خواستید یادش بگیرید این یه منبع خوبه:
https://d-krupke.github.io/cpsat-primer/00_intro.html
ORTools Optimization Scheduling Google Python OperationsResearch
@DevTwitter | <Ali Baghernia/>
🔥16❤5
چطور فشار روی cpu رو محاسبه می کنیم ؟؟
یه مفهومی به اسم load داریم که با دستور uptime و یا مستقیم از
/proc/loadavg
میشه اون رو دید توی لینوکس 3 نوع load رو گزارش میده به ترتیب از چپ در یک دقیقه اخیر، پنج دقیقه اخیر و پانزده دقیقه اخیر
اما این load چیه؟ فرض کنین یه cpu یک هسته ای داریم load اگه صفر باشه یعنی cpu بیکاره و تا عدد 1 میزان کار اون رو نشون میده.
اگه عدد بیشتر از 1 باشه مثلا 1.65 یعنی cpu مقدار 65% از کاراش توی صف هستند و اگه 5.5 باشه یعنی 450% از کار هاش توی صف هستند.
اما کامپیوتر های الان cpu های بیش از یه هسته دارن مثلا برای یه cpu هشت هسته ای اگه load avg برابر 12 باشه 50% کار ها در صف هستن و اگه زیر 8 باشه یعنی هیچ کار در صفی نداره (درواقع load رو باید بر تعداد هسته ها تقسیم کرد)
مثل تصویر میتونین با دستور lscpu اطلاعات cpu خودتون رو بدست بیارین عکس یه cpu چهار هسته ای رو نشون میده که هشتا ترد داره (از دید کامپیوتر ترد ها هرکدام مانند یک cpu جدا هستن پس ملاک ما عدد 8 هست نه 4، انگار این کامپوتر هشتا cpu داره )
@DevTwitter | <Mahdi Bagheri/>
یه مفهومی به اسم load داریم که با دستور uptime و یا مستقیم از
/proc/loadavg
میشه اون رو دید توی لینوکس 3 نوع load رو گزارش میده به ترتیب از چپ در یک دقیقه اخیر، پنج دقیقه اخیر و پانزده دقیقه اخیر
اما این load چیه؟ فرض کنین یه cpu یک هسته ای داریم load اگه صفر باشه یعنی cpu بیکاره و تا عدد 1 میزان کار اون رو نشون میده.
اگه عدد بیشتر از 1 باشه مثلا 1.65 یعنی cpu مقدار 65% از کاراش توی صف هستند و اگه 5.5 باشه یعنی 450% از کار هاش توی صف هستند.
اما کامپیوتر های الان cpu های بیش از یه هسته دارن مثلا برای یه cpu هشت هسته ای اگه load avg برابر 12 باشه 50% کار ها در صف هستن و اگه زیر 8 باشه یعنی هیچ کار در صفی نداره (درواقع load رو باید بر تعداد هسته ها تقسیم کرد)
مثل تصویر میتونین با دستور lscpu اطلاعات cpu خودتون رو بدست بیارین عکس یه cpu چهار هسته ای رو نشون میده که هشتا ترد داره (از دید کامپیوتر ترد ها هرکدام مانند یک cpu جدا هستن پس ملاک ما عدد 8 هست نه 4، انگار این کامپوتر هشتا cpu داره )
@DevTwitter | <Mahdi Bagheri/>
❤23👍7🔥2🍌2
سلام و دورد
امروز یه ربات تلگرام با nodejs نوشتم به در خواست تیم مارکتینگ برای اعضای کانال تلگرامی شرکت که خیلی خیلی ساده اس و کاربران فقط میزنن روی قرعه کشی و آیدیشون ثبت میشه برای قرعه کشی و اعلام برنده
و اینکه به ادمین هم امکان خروجی فایل csvمیده تا اسامی رو داشته باشه
لینکشو میذارم دوست داشتید استفاده کنید و خیلی خوشحال میشم اگر فیچری هم مد نظرتون هست بهش اضافه کنم
https://github.com/iamir4g/raffleBot
@DevTwitter | <Amir Farahani/>
امروز یه ربات تلگرام با nodejs نوشتم به در خواست تیم مارکتینگ برای اعضای کانال تلگرامی شرکت که خیلی خیلی ساده اس و کاربران فقط میزنن روی قرعه کشی و آیدیشون ثبت میشه برای قرعه کشی و اعلام برنده
و اینکه به ادمین هم امکان خروجی فایل csvمیده تا اسامی رو داشته باشه
لینکشو میذارم دوست داشتید استفاده کنید و خیلی خوشحال میشم اگر فیچری هم مد نظرتون هست بهش اضافه کنم
https://github.com/iamir4g/raffleBot
@DevTwitter | <Amir Farahani/>
🍌40❤11👍5👎1
در زبان Go مفهومی به نام Goroutine وجود دارد اما Goroutine چیست؟
اول باید بگم که زبان go برعکس زبان جاوااسکریپت و تایپاسکریپت مفهموم Concurrency (همزمانی) را به صورت کاملا واقعی در CPU اجرا میکند در حالی که جاوااسکریپت و تایپاسکریپت اینکار را فقط شبیهسازی میکنند و یکی از دلایل سرعت بالای این زبان همین امر است
یعنی go میتونه دستورات رو در Thread های مختلف CPU به صورت کاملا واقعی اجرا کنه
حالا بریم سراغ مفهوم Goroutine
بخوام به سادهترین شکل ممکن بگم کارش برعکس async/await در زبان جاوااسکریپت هست (البته فقط در ظاهر)
گوروتین میتونه تابع و دستور مورد نظر مارو در یک Thread متفاوت اجرا کنه تا مابقی کد ما متوقف نشه و سایر کدهای ما همزمان اجرا بشه و برنامه منتظر نمونه
یعنی وقتی یه تابعی داریم که زمانبر هست و ما نیازی به خروجی اون تابع در ادامه کد نداریم (مثل لاگ انداختن) از گوروتین استفاده میکنیم تا کل برنامه منتظر اتمام اون تابع نشه
(در عکس یه مثال ساده از گوروتین رو براتون آوردم)
@DevTwitter | <sina khaghani/>
اول باید بگم که زبان go برعکس زبان جاوااسکریپت و تایپاسکریپت مفهموم Concurrency (همزمانی) را به صورت کاملا واقعی در CPU اجرا میکند در حالی که جاوااسکریپت و تایپاسکریپت اینکار را فقط شبیهسازی میکنند و یکی از دلایل سرعت بالای این زبان همین امر است
یعنی go میتونه دستورات رو در Thread های مختلف CPU به صورت کاملا واقعی اجرا کنه
حالا بریم سراغ مفهوم Goroutine
بخوام به سادهترین شکل ممکن بگم کارش برعکس async/await در زبان جاوااسکریپت هست (البته فقط در ظاهر)
گوروتین میتونه تابع و دستور مورد نظر مارو در یک Thread متفاوت اجرا کنه تا مابقی کد ما متوقف نشه و سایر کدهای ما همزمان اجرا بشه و برنامه منتظر نمونه
یعنی وقتی یه تابعی داریم که زمانبر هست و ما نیازی به خروجی اون تابع در ادامه کد نداریم (مثل لاگ انداختن) از گوروتین استفاده میکنیم تا کل برنامه منتظر اتمام اون تابع نشه
(در عکس یه مثال ساده از گوروتین رو براتون آوردم)
@DevTwitter | <sina khaghani/>
❤39👍6🔥3👎2
This media is not supported in your browser
VIEW IN TELEGRAM
اگه زیاد از terminal CLI استفاده میکنید مثل من و میخواهید فایلهای اکسل را بخونید و یا سرچ کنید و .. این ابزار خیلی عالیه. خیلی خوشگل و مرتب فایل ها را نشون میده، امکان سرچ و کپی داره و کلی فیچر دیگه. گیتهابشون را چک کنید.
https://github.com/bgreenwell/xleak/
@DevTwitter | <Mehdi Allahyari/>
https://github.com/bgreenwell/xleak/
@DevTwitter | <Mehdi Allahyari/>
❤12🔥3👎1
داستان خلق Node.js — جایی که یک نارضایتی ساده تبدیل به انقلاب شد
سال ۲۰۰۹، «رایان دال» پشت لپتاپش نشسته بود و به یک ویدیو ساده در وب فکر میکرد:
چرا هنوز مرورگرها نمیتوانند یک فایل را کاملاً غیرهمزمان آپلود کنند؟
چرا برای کوچکترین عملیات I/O باید کل برنامه منتظر بماند؟
و چرا زبانهای سمت سرور هنوز اینقدر سنگین و بلاککننده کار میکنند؟
این سؤالها شاید پیشپاافتاده بهنظر برسند، اما برای دال تبدیل شدند به جرقه یک تغییر بزرگ.
در آن زمان، بیشتر زبانهای سمت سرور مانند PHP، Python یا Ruby یک مشکل مشترک داشتند:
هر درخواست، یک Thread. هر Thread، حافظه زیاد. و هر برنامه، یک سقف محدود برای مقیاسپذیری.
برای دنیایی که سرعت اینترنت داشت بالا میرفت و کاربران همزمان بیشتر میشدند، این مدل دیگر جواب نمیداد.
دال بهجای اینکه مشکل را با سختافزار بیشتر حل کند، از خودش پرسید:
اگر بتوانیم مدل سرور را مثل مرورگر طراحی کنیم چه؟
جایی که همهچیز Event-Driven باشد، بدون بلاک شدن، بدون Threadهای سنگین.
و اینطور شد که یک ایده جسورانه شکل گرفت:
ساخت یک Runtime سبک، سریع، مبتنی بر event loop، و توانمند در مدیریت هزاران اتصال همزمان.
جاوااسکریپت انتخاب شد، نه به خاطر اینکه بهترین زبان جهان بود،
بلکه بهخاطر اینکه یک ویژگی حیاتی داشت:
تک رشتهای (Single-threaded) بودن و مدل رویداد محور طبیعی.
نتیجه؟
در JSConf اروپا، دال برای اولین بار چیزی را معرفی کرد که صنعت وب را تکان داد:
Node.js
با ارائهی مفهومی جدید از ساخت Back-end —
جایی که شبکهسازی، I/O، و اجرای همزمان،
بدون Threadهای سنگین
و با سرعت باورنکردنی قابل انجام بود.
ابزار Node.js به سرعت از یک تجربه آزمایشگاهی تبدیل شد به ابزاری که امروز موتور بسیاری از شرکتهای بزرگ دنیاست: Netflix، Uber، PayPal، LinkedIn و دهها نام دیگر.
این داستان از این جهت الهامبخش است که نشان میدهد:
گاهی یک نارضایتی ساده در ذهن یک برنامهنویس،
میتواند آیندهی یک صنعت را تغییر دهد.
@DevTwitter | <Ali Yousefi/>
سال ۲۰۰۹، «رایان دال» پشت لپتاپش نشسته بود و به یک ویدیو ساده در وب فکر میکرد:
چرا هنوز مرورگرها نمیتوانند یک فایل را کاملاً غیرهمزمان آپلود کنند؟
چرا برای کوچکترین عملیات I/O باید کل برنامه منتظر بماند؟
و چرا زبانهای سمت سرور هنوز اینقدر سنگین و بلاککننده کار میکنند؟
این سؤالها شاید پیشپاافتاده بهنظر برسند، اما برای دال تبدیل شدند به جرقه یک تغییر بزرگ.
در آن زمان، بیشتر زبانهای سمت سرور مانند PHP، Python یا Ruby یک مشکل مشترک داشتند:
هر درخواست، یک Thread. هر Thread، حافظه زیاد. و هر برنامه، یک سقف محدود برای مقیاسپذیری.
برای دنیایی که سرعت اینترنت داشت بالا میرفت و کاربران همزمان بیشتر میشدند، این مدل دیگر جواب نمیداد.
دال بهجای اینکه مشکل را با سختافزار بیشتر حل کند، از خودش پرسید:
اگر بتوانیم مدل سرور را مثل مرورگر طراحی کنیم چه؟
جایی که همهچیز Event-Driven باشد، بدون بلاک شدن، بدون Threadهای سنگین.
و اینطور شد که یک ایده جسورانه شکل گرفت:
ساخت یک Runtime سبک، سریع، مبتنی بر event loop، و توانمند در مدیریت هزاران اتصال همزمان.
جاوااسکریپت انتخاب شد، نه به خاطر اینکه بهترین زبان جهان بود،
بلکه بهخاطر اینکه یک ویژگی حیاتی داشت:
تک رشتهای (Single-threaded) بودن و مدل رویداد محور طبیعی.
نتیجه؟
در JSConf اروپا، دال برای اولین بار چیزی را معرفی کرد که صنعت وب را تکان داد:
Node.js
با ارائهی مفهومی جدید از ساخت Back-end —
جایی که شبکهسازی، I/O، و اجرای همزمان،
بدون Threadهای سنگین
و با سرعت باورنکردنی قابل انجام بود.
ابزار Node.js به سرعت از یک تجربه آزمایشگاهی تبدیل شد به ابزاری که امروز موتور بسیاری از شرکتهای بزرگ دنیاست: Netflix، Uber، PayPal، LinkedIn و دهها نام دیگر.
این داستان از این جهت الهامبخش است که نشان میدهد:
گاهی یک نارضایتی ساده در ذهن یک برنامهنویس،
میتواند آیندهی یک صنعت را تغییر دهد.
@DevTwitter | <Ali Yousefi/>
1❤57👎10🍌8👍4
This media is not supported in your browser
VIEW IN TELEGRAM
وقتی با مدلهای LLM و سیستم های ایجنتیک کار میکنید یکی از مهمترین کارهایی که باید انجام بدید/بنظرم مهمترین کار اینه که پرفورمنس سیستم را ارزیابی کنید یا به اصطلاح evaluation انجام بدید. اگه بدون evaluation ایجنت میسازید به هیچ دردی نمیخوره!
این منبع ارزشمند/۵۰ صفحه مطلب را حتما بخونید.
Link: https://huggingface.co/spaces/OpenEvals/evaluation-guidebook#what-is-model-evaluation-about
@DevTwitter | <Mehdi Allahyari/>
این منبع ارزشمند/۵۰ صفحه مطلب را حتما بخونید.
Link: https://huggingface.co/spaces/OpenEvals/evaluation-guidebook#what-is-model-evaluation-about
@DevTwitter | <Mehdi Allahyari/>
❤13👍2🔥1
نرمافزار Scrcpy یک ابزار کاربردی شاهکار برای کنترل گوشی اندروید از روی کامپیوتر.
سبکه، بدون نصب اضافی، و کنترل کامل دستگاه رو میده، از صفحه و صدا گرفته تا کیبورد و موس.
میتوان ازش برای Screen Sharing، ضبط ویدیو/صدا، یا بهعنوان Webcam هم استفاده کرد.
https://github.com/Genymobile/scrcpy
@DevTwitter | <Mohammad/>
سبکه، بدون نصب اضافی، و کنترل کامل دستگاه رو میده، از صفحه و صدا گرفته تا کیبورد و موس.
میتوان ازش برای Screen Sharing، ضبط ویدیو/صدا، یا بهعنوان Webcam هم استفاده کرد.
https://github.com/Genymobile/scrcpy
@DevTwitter | <Mohammad/>
👍19❤9🔥1
تم درست کردم برای Vs Code فقط طیف رنگی آبی و سفید که بیشتر برای ++C/C استفاده بشه بهتر است.
مینیمال و زیباست، اگر دوست داشتید استار دهید و حمایت کنید.
https://github.com/Ho3seinTork/blue-spectrum-color-theme.git
@DevTwitter | <Diss Obedience/>
مینیمال و زیباست، اگر دوست داشتید استار دهید و حمایت کنید.
https://github.com/Ho3seinTork/blue-spectrum-color-theme.git
@DevTwitter | <Diss Obedience/>
1❤37👎28🍌14👍2
خیلی وقت پیش یه Prometheus Exporter نوشته بودم برای بازی های لیگ برتر فوتبال :)))
دستی بهش کشیدم و پابلیکش کردم
برای کسایی که هر سوراخی رو مانیتور میکنن
https://github.com/hatamiarash7/iranleague-exporter
@DevTwitter | <Arash Hatami/>
دستی بهش کشیدم و پابلیکش کردم
برای کسایی که هر سوراخی رو مانیتور میکنن
https://github.com/hatamiarash7/iranleague-exporter
@DevTwitter | <Arash Hatami/>
🍌22👍6❤2
لینوس اینجا چند تا چیز جالب میگه
یکیش اینه که من حوصله سربر بودن و یکنواخت بودن رو بیشتر از داشتن ایده های خط شکن و به دردسر انداختن میلیونها کاربر دوست دارم.
ولی اونجا که گفت کار اصلی از نگهداری سیستم شروع میشه واقعا درخشانه.
به نظرم یکی از دلایل موفقیت لینوکس این بود که بارها از نو نوشته نشد بلکه یک بار ولی نه یک باره نوشته شده. کل مسیر توسعه لینوکس یک روند ادامه دار به هم متصله.
https://www.youtube.com/watch?v=tWx769t1JKg
@DevTwitter | <Navid Shokri/>
یکیش اینه که من حوصله سربر بودن و یکنواخت بودن رو بیشتر از داشتن ایده های خط شکن و به دردسر انداختن میلیونها کاربر دوست دارم.
ولی اونجا که گفت کار اصلی از نگهداری سیستم شروع میشه واقعا درخشانه.
به نظرم یکی از دلایل موفقیت لینوکس این بود که بارها از نو نوشته نشد بلکه یک بار ولی نه یک باره نوشته شده. کل مسیر توسعه لینوکس یک روند ادامه دار به هم متصله.
https://www.youtube.com/watch?v=tWx769t1JKg
@DevTwitter | <Navid Shokri/>
🔥37👍11❤4🍌1
سلام،
دیروز یه اتفاق خیلی باحال افتاد، پلاگینی که نوشتم رسماً توی kubernetes-sigs/krew-index مرج شد
اسمش kubectl-edit-secretـه و ایدهش هم از یه درد واقعی شروع شد.
چند روز پیش Hossein AliHosseini گفت:
«آقا این پلاگین view-secret (که من خودمم قبلاً تو لینکدین معرفی کردم) چقدر باحاله که Secret رو decode میکنه و بیدردسر نشون میده، خب بیا یه نسخه editـش رو هم بزنیم»
راست هم میگفت.
هر بار برای ادیت کردن یه Secret باید base64 رو decode کنی، تغییر بدی، دوباره encode کنی، apply بزنی… و همیشه هم احتمال اشتباه هست.
حالا با این پلاگین میتونی Secret رو به صورت متن واقعی و decodeشده ادیت کنی.
خودش Secret رو میگیره، تمام فیلدها رو decode میکنه، توی ادیتور باز میکنه، و بعد از سیو دوباره encode و apply میکنه.
یعنی عملاً فقط:
kubectl edit-secret my-secret
و تمام. دیگه با base64 کاری نداری.
از طریق Krew هم قابل نصبه:
kubectl krew install edit-secret
اگر دوست دارید کدش رو ببینید یا مشارکت کنید:
https://github.com/BardiaYaghmaie/kubectl-edit-secret
@DevTwitter | <Bardia Yaghmaie/>
دیروز یه اتفاق خیلی باحال افتاد، پلاگینی که نوشتم رسماً توی kubernetes-sigs/krew-index مرج شد
اسمش kubectl-edit-secretـه و ایدهش هم از یه درد واقعی شروع شد.
چند روز پیش Hossein AliHosseini گفت:
«آقا این پلاگین view-secret (که من خودمم قبلاً تو لینکدین معرفی کردم) چقدر باحاله که Secret رو decode میکنه و بیدردسر نشون میده، خب بیا یه نسخه editـش رو هم بزنیم»
راست هم میگفت.
هر بار برای ادیت کردن یه Secret باید base64 رو decode کنی، تغییر بدی، دوباره encode کنی، apply بزنی… و همیشه هم احتمال اشتباه هست.
حالا با این پلاگین میتونی Secret رو به صورت متن واقعی و decodeشده ادیت کنی.
خودش Secret رو میگیره، تمام فیلدها رو decode میکنه، توی ادیتور باز میکنه، و بعد از سیو دوباره encode و apply میکنه.
یعنی عملاً فقط:
kubectl edit-secret my-secret
و تمام. دیگه با base64 کاری نداری.
از طریق Krew هم قابل نصبه:
kubectl krew install edit-secret
اگر دوست دارید کدش رو ببینید یا مشارکت کنید:
https://github.com/BardiaYaghmaie/kubectl-edit-secret
@DevTwitter | <Bardia Yaghmaie/>
❤27👎6👍4🔥2
آسیب پذیری بحرانی React و Next.js با CVE-2025-55182 با شدت ۱۰ منتشر شد!
مهاجم با استفاده از RSC میتواند کد دلخواه را بر روی سرور اجرا کند.
نسخه های Patch شده به شرح زیر است :
16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, 15.0.5
لطفا سریعا به روز رسانی کنید و دوستان خود را مطلع کنید.
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
@DevTwitter | <Ali Saleh/>
مهاجم با استفاده از RSC میتواند کد دلخواه را بر روی سرور اجرا کند.
نسخه های Patch شده به شرح زیر است :
16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, 15.0.5
لطفا سریعا به روز رسانی کنید و دوستان خود را مطلع کنید.
https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components
@DevTwitter | <Ali Saleh/>
👍27🍌5🔥3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
یک اپ جالب پیدا کردم که شبیه اپ System Design Visualizer هست که چند روز پیش درست کردم. این اپ مستقیم توی draw .io دیاگرام ها را میکشه. امتحانش کردم خالی خوبه. اگه مثل من باید زیاد طراحی سیستم انجام بدید میدونید که دستی کشیدن طول میکشه. الان دیگه زحمتش چند برابر کمتر میشه. حتما امتحانش کنید. ورژنی که من درست کردم هم جا برای فیچر اضافه کردن داره اگه دوست داشتید PR بدید. لینک این اپ جدید:
https://github.com/DayuanJiang/next-ai-draw-io
لینک اپ خودم:
https://github.com/mallahyari/system-design-visualizer
@DevTwitter | <Mehdi Allahyari/>
https://github.com/DayuanJiang/next-ai-draw-io
لینک اپ خودم:
https://github.com/mallahyari/system-design-visualizer
@DevTwitter | <Mehdi Allahyari/>
1🔥14❤4👍2🍌1
صحبت های Theprimeagenدرباره دلایل خرید Bun توسط Anthropic و اینکه چرا بحث حذف مهندسی نرم افزار توهمی بیش نیست چون آنتروپیک میتونست پروژه رو خودش کلون بکنه و با Claude Code توسعه بده ولی میلیون ها دلار هزینه کرد تا آدم های متخصص اون حوزه رو استخدام بکنه!
https://www.youtube.com/watch?v=Te2I2muO-4c
@DevTwitter | <Max Shahdoost/>
https://www.youtube.com/watch?v=Te2I2muO-4c
@DevTwitter | <Max Shahdoost/>
👍56👎5❤3🔥1