معرفی ابزار OpenPencil: ویرایشگر طراحی متنباز و AI-Native
اگر به دنبال جایگزینی متنباز و هوشمند برای ابزارهای طراحی هستید، OpenPencil پروژه نوظهوری است که ارزش بررسی دارد. این ابزار با تمرکز بر هوش مصنوعی و انعطافپذیری بالا توسعه یافته است.
ویژگیهای کلیدی:
پشتیبانی مستقیم از فایلهای Figma: فایلهای .fig را بدون نیاز به خروجی گرفتن (Export) مستقیما باز میکند.
طراحی مبتنی بر هوش مصنوعی: ابزارهای AI داخلی آن اجازه میدهند مستقیما روی بوم طراحی، طرحهای جدید ایجاد کرده یا آنها را ویرایش کنید.
پشتیبانی از پروتکل MCP: با بهرهگیری از MCP Server، امکان اتصال به کلاینتهایی مانند Cursor، Claude Code و سایر ابزارهای سازگار فراهم شده است.
دسترسی چندپلتفرمی: علاوه بر نسخه وب (app.openpencil.dev)، نسخه دسکتاپ آن نیز برای سیستمعاملهای مختلف در دسترس است.
وبسایت پروژه:
https://openpencil.dev/
مخزن گیتهاب و نسخههای دسکتاپ:
https://github.com/open-pencil/open-pencil/releases
@codehalics | کدهالیک
اگر به دنبال جایگزینی متنباز و هوشمند برای ابزارهای طراحی هستید، OpenPencil پروژه نوظهوری است که ارزش بررسی دارد. این ابزار با تمرکز بر هوش مصنوعی و انعطافپذیری بالا توسعه یافته است.
ویژگیهای کلیدی:
پشتیبانی مستقیم از فایلهای Figma: فایلهای .fig را بدون نیاز به خروجی گرفتن (Export) مستقیما باز میکند.
طراحی مبتنی بر هوش مصنوعی: ابزارهای AI داخلی آن اجازه میدهند مستقیما روی بوم طراحی، طرحهای جدید ایجاد کرده یا آنها را ویرایش کنید.
پشتیبانی از پروتکل MCP: با بهرهگیری از MCP Server، امکان اتصال به کلاینتهایی مانند Cursor، Claude Code و سایر ابزارهای سازگار فراهم شده است.
دسترسی چندپلتفرمی: علاوه بر نسخه وب (app.openpencil.dev)، نسخه دسکتاپ آن نیز برای سیستمعاملهای مختلف در دسترس است.
وبسایت پروژه:
https://openpencil.dev/
مخزن گیتهاب و نسخههای دسکتاپ:
https://github.com/open-pencil/open-pencil/releases
@codehalics | کدهالیک
🔥2
خب، تصمیمم رو گرفتم دورهی منتورینگ Frontend Engineering رو برگزار میکنم.
ظرفیت این دوره فقط ۱۰ نفره و شرکتکنندههای مستعد، رزومهشون به تیم PWA بلوبانک ریفر میشه.
شرایط شرکت:
• حداقل ۳ سال تجربهی کاری تماموقت
• تجربهی کار با React
📩 رزومههاتون رو به این ایمیل ارسال کنید:
p.faramarzian@bluteam.ir
در صورتی که به ایمیل سازمانی دسترسی نداشتید:
PooriaFaramarzian@gmail.com
پ.ن: این یه فرصت خوب برای کساییه که دنبال منتورینگ فرانتاند هستن و میخوان مستقیم با پوریا در ارتباط باشن. پوریا از فرانتاند دولوپرهای بلوبانک هست.
منبع :
https://x.com/pooridev/status/2046186231902416990
@codehalics | کدهالیک
ظرفیت این دوره فقط ۱۰ نفره و شرکتکنندههای مستعد، رزومهشون به تیم PWA بلوبانک ریفر میشه.
شرایط شرکت:
• حداقل ۳ سال تجربهی کاری تماموقت
• تجربهی کار با React
📩 رزومههاتون رو به این ایمیل ارسال کنید:
p.faramarzian@bluteam.ir
در صورتی که به ایمیل سازمانی دسترسی نداشتید:
PooriaFaramarzian@gmail.com
پ.ن: این یه فرصت خوب برای کساییه که دنبال منتورینگ فرانتاند هستن و میخوان مستقیم با پوریا در ارتباط باشن. پوریا از فرانتاند دولوپرهای بلوبانک هست.
منبع :
https://x.com/pooridev/status/2046186231902416990
@codehalics | کدهالیک
🔥5😁2
خب امروز میخوام یکی دیگه از سوالای مصاحبهای که اگر به عنوان مصاحبهکننده باشم از بقیه میپرسم رو باهاتون مطرح کنم و نظر شما رو بپرسم.
سناریو: جلوگیری از فاجعه در درگاه پرداخت
فرض کنید یوزر روی دکمه «پرداخت نهایی» کلیک میکنه (پرداخت از کیف پول داخلی). به دلیل کندی اینترنت، Response سریع برنمیگرده؛ یوزر چندین بار پشت سر هم روی دکمه کلیک میکنه یا صفحه رو رفرش میکنه.
صورت مسئله:
۱. سمت Frontend، غیرفعال کردن دکمه (Disable Button) لایه اوله اما کافی نیست (چون با ابزارهایی مثل Postman یا رفرش صفحه قابل Bypass شدنه).
۲. سمت Backend، ما نباید تحت هیچ شرایطی اجازه بدیم بیش از یکبار از حساب کاربر کسر بشه، حتی اگر ۵ ریکوئست کاملاً یکسان در یک «میلیثانیه» به سرور برسه (Race Condition).
سوال:
حرفهایترین و استانداردترین راهکار برای اینکه مطمئن بشیم یک عملیات حساس «دقیقاً و فقط یکبار» (Exactly-once) اعمال میشه چیه؟
نظراتتون رو بنویسید، شب درباره راهکار استانداردش (که توی شرکتهای بزرگی مثل اسپاتیفای و اسنپ و ... استفاده میشه) گپ میزنیم.
"Do not hesitate to answer this question!"
@codehalics | کدهالیک
سناریو: جلوگیری از فاجعه در درگاه پرداخت
فرض کنید یوزر روی دکمه «پرداخت نهایی» کلیک میکنه (پرداخت از کیف پول داخلی). به دلیل کندی اینترنت، Response سریع برنمیگرده؛ یوزر چندین بار پشت سر هم روی دکمه کلیک میکنه یا صفحه رو رفرش میکنه.
صورت مسئله:
۱. سمت Frontend، غیرفعال کردن دکمه (Disable Button) لایه اوله اما کافی نیست (چون با ابزارهایی مثل Postman یا رفرش صفحه قابل Bypass شدنه).
۲. سمت Backend، ما نباید تحت هیچ شرایطی اجازه بدیم بیش از یکبار از حساب کاربر کسر بشه، حتی اگر ۵ ریکوئست کاملاً یکسان در یک «میلیثانیه» به سرور برسه (Race Condition).
سوال:
حرفهایترین و استانداردترین راهکار برای اینکه مطمئن بشیم یک عملیات حساس «دقیقاً و فقط یکبار» (Exactly-once) اعمال میشه چیه؟
نظراتتون رو بنویسید، شب درباره راهکار استانداردش (که توی شرکتهای بزرگی مثل اسپاتیفای و اسنپ و ... استفاده میشه) گپ میزنیم.
"Do not hesitate to answer this question!"
@codehalics | کدهالیک
❤3
کدهالیک | codehalic
خب امروز میخوام یکی دیگه از سوالای مصاحبهای که اگر به عنوان مصاحبهکننده باشم از بقیه میپرسم رو باهاتون مطرح کنم و نظر شما رو بپرسم. سناریو: جلوگیری از فاجعه در درگاه پرداخت فرض کنید یوزر روی دکمه «پرداخت نهایی» کلیک میکنه (پرداخت از کیف پول داخلی).…
خب مثل دفعه پیش میخوام ریفرتون بدم به یه مقاله عالی از دوست و همکار خوبم محمدجواد ابراهیمی. محمدجواد توی این مطلب خیلی ساده و تمیز مفاهیم اصلی رو باز کرده که خلاصهش میشه این:
هر متدی که ما مینویسیم یا هر فانکشنی که مینویسیم باید چند خاصیت داشته باشه همیشه :
Side-effect Free:
یعنی متد ما نباید بره یه جای دیگه از برنامه رو ناخواسته تغییر بده (Shared State ایجاد نکنه).
Idempotent:
یعنی اگه یه تابع رو با ورودی یکسان، ۱۰۰ بار هم صدا بزنیم، نتیجه (خروجی و اثرش) همیشه همون بار اول باشه و سیستم رو به هم نریزه.
Pure Functions:
توابعی که هر دو ویژگی بالا رو دارن و فرشته نجات کد ما هستن!
توی بحث درگاه پرداخت و Race Condition که سوال کردم، اگر کد ما Idempotent نباشه، با هر بار کلیک یوزر، یه فاجعه مالی رخ میده!
حتماً یه زمان ۵ دقیقهای بذارید و اصل مقاله رو بخونید که برای هر برنامه نویسی از نون شب واجبتر
https://virgool.io/dotnetzoom/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-side-effect-free-%D9%88-idemponency-%D8%AF%D8%B1-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-gazelp35o4zw
@codehalics | کدهالیک
هر متدی که ما مینویسیم یا هر فانکشنی که مینویسیم باید چند خاصیت داشته باشه همیشه :
Side-effect Free:
یعنی متد ما نباید بره یه جای دیگه از برنامه رو ناخواسته تغییر بده (Shared State ایجاد نکنه).
Idempotent:
یعنی اگه یه تابع رو با ورودی یکسان، ۱۰۰ بار هم صدا بزنیم، نتیجه (خروجی و اثرش) همیشه همون بار اول باشه و سیستم رو به هم نریزه.
Pure Functions:
توابعی که هر دو ویژگی بالا رو دارن و فرشته نجات کد ما هستن!
توی بحث درگاه پرداخت و Race Condition که سوال کردم، اگر کد ما Idempotent نباشه، با هر بار کلیک یوزر، یه فاجعه مالی رخ میده!
حتماً یه زمان ۵ دقیقهای بذارید و اصل مقاله رو بخونید که برای هر برنامه نویسی از نون شب واجبتر
https://virgool.io/dotnetzoom/%D8%A7%D9%87%D9%85%DB%8C%D8%AA-side-effect-free-%D9%88-idemponency-%D8%AF%D8%B1-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-gazelp35o4zw
@codehalics | کدهالیک
❤3
کدهالیک | codehalic
خب امروز میخوام یکی دیگه از سوالای مصاحبهای که اگر به عنوان مصاحبهکننده باشم از بقیه میپرسم رو باهاتون مطرح کنم و نظر شما رو بپرسم. سناریو: جلوگیری از فاجعه در درگاه پرداخت فرض کنید یوزر روی دکمه «پرداخت نهایی» کلیک میکنه (پرداخت از کیف پول داخلی).…
توی رفرنس های خارجی هم بهترین مقاله ای که راجب این موضوع میتونم بهتون بگم که بخونین مقاله استرایپ راجع به idempotent بودن عه :
✅ ایده Idempotency Key: فرانتاِند یه کلیدِ یونیک (مثل UUID) میفرسته. سرور اگه این کلید رو قبلاً دیده باشه، دیگه اصلاً وارد منطق پرداخت نمیشه و فقط جواب قبلی رو از ککش برمیگردونه. یعنی یوزر ۱۰۰ بار هم روی دکمه کلیک کنه، فقط «یکبار» پول کسر میشه.
✅ داستان Retryها: استرایپ میگه وقتی اینترنت قطع میشه، نباید مثل رگبار ریکوئست زد به سرور! از تکنیک Exponential Backoff استفاده میکنن؛ یعنی هر بار که شکست خورد، فاصله ریکوئست بعدی رو بیشتر میکنن تا سرور زیر فشارِ «گلهایِ» ریکوئستها (Thundering Herd) نپکه!
این مقاله هم خیلی جذاب راجب همین موضوع بحث میکنه
https://stripe.com/blog/idempotency
@codehalics | کدهالیک
✅ ایده Idempotency Key: فرانتاِند یه کلیدِ یونیک (مثل UUID) میفرسته. سرور اگه این کلید رو قبلاً دیده باشه، دیگه اصلاً وارد منطق پرداخت نمیشه و فقط جواب قبلی رو از ککش برمیگردونه. یعنی یوزر ۱۰۰ بار هم روی دکمه کلیک کنه، فقط «یکبار» پول کسر میشه.
✅ داستان Retryها: استرایپ میگه وقتی اینترنت قطع میشه، نباید مثل رگبار ریکوئست زد به سرور! از تکنیک Exponential Backoff استفاده میکنن؛ یعنی هر بار که شکست خورد، فاصله ریکوئست بعدی رو بیشتر میکنن تا سرور زیر فشارِ «گلهایِ» ریکوئستها (Thundering Herd) نپکه!
این مقاله هم خیلی جذاب راجب همین موضوع بحث میکنه
https://stripe.com/blog/idempotency
@codehalics | کدهالیک
Stripe
Designing robust and predictable APIs with idempotency
Online payment processing for internet businesses. Stripe is a suite of payment APIs that powers commerce for businesses of all sizes.
🔥3
کدهالیک | codehalic
خب امروز میخوام یکی دیگه از سوالای مصاحبهای که اگر به عنوان مصاحبهکننده باشم از بقیه میپرسم رو باهاتون مطرح کنم و نظر شما رو بپرسم. سناریو: جلوگیری از فاجعه در درگاه پرداخت فرض کنید یوزر روی دکمه «پرداخت نهایی» کلیک میکنه (پرداخت از کیف پول داخلی).…
و اما نظر شخصی خودم درباره این موضوع:
بچهها، واقعیت اینه که Idempotency (تکرارپذیری) خیلی فراتر از یک بحث بکاِندی یا درگاه پرداخته؛ این یک «انتزاع» (Abstraction) هست که توی تمام لایههای مهندسی نرمافزار، از فرانتاِند گرفته تا زیرساخت، حضور داره.
۱. نگاه Idempotent در فرانتاِند
خیلی وقتها ما ناخودآگاه کدهایی میزنیم که تکرارپذیر نیستن. مثلاً فرض کن یه دکمه داریم که قراره کاربر رو به مرحله بعد ببره:
حالت غلط (Non-Idempotent): setState(prev => prev + 1)
اینجا اگه کاربر به خاطر کندی سیستم یا از سر شیطنت ۱۰ بار روی دکمه کلیک کنه، استیت ما ۱۰ واحد میره جلو! فاجعهست، نه؟
حالت درست (Idempotent):
setState(2)
این یعنی کاربر اگه ۱۰۰ بار هم کلیک کنه، استیت همیشه روی عدد ۲ میمونه. خروجی پایداره.
یا مثلاً باز کردن یک مدال (Modal):
به جای اینکه بنویسیم setState(!state) که حالت Toggle داره و با هر کلیک یه جواب متفاوت میده، باید بنویسیم setState(true). اینطوری همیشه خروجی همونه: مدال باز است.
۲. نگاه Idempotent در بکاِند و پیامرسانی
در لایه بکاِند هم داستان همینه. توی معماریهای مبتنی بر ایونت (Event-Driven)، ممکنه یک پیام به هر دلیلی (مثل Retryهای مسیجبروکر) چند بار به دست مصرفکننده برسه.
سیستم نباید گیج بشه! باید همیشه یک Idempotency Key یا کلید یکتا همراه پیام باشه که حتی اگه ۳۰۰ بار هم پردازش شد، فقط بار اول «اثر» بذاره و دفعات بعدی صرفاً بگه: «انجام شده بود، خیالت راحت!»
ما به عنوان توسعهدهنده باید یاد بگیریم سیستم رو جوری طراحی کنیم که نسبت به «تکرار»، مقاوم (Resilient) باشه. فرقی نمیکنه کلیک کاربر باشه یا ریکوئستِ شبکه؛ سیستمِ بالغ، سیستمیه که Side-effect اضافه ایجاد نکنه.
@codehalics | کدهالیک
بچهها، واقعیت اینه که Idempotency (تکرارپذیری) خیلی فراتر از یک بحث بکاِندی یا درگاه پرداخته؛ این یک «انتزاع» (Abstraction) هست که توی تمام لایههای مهندسی نرمافزار، از فرانتاِند گرفته تا زیرساخت، حضور داره.
۱. نگاه Idempotent در فرانتاِند
خیلی وقتها ما ناخودآگاه کدهایی میزنیم که تکرارپذیر نیستن. مثلاً فرض کن یه دکمه داریم که قراره کاربر رو به مرحله بعد ببره:
حالت غلط (Non-Idempotent): setState(prev => prev + 1)
اینجا اگه کاربر به خاطر کندی سیستم یا از سر شیطنت ۱۰ بار روی دکمه کلیک کنه، استیت ما ۱۰ واحد میره جلو! فاجعهست، نه؟
حالت درست (Idempotent):
setState(2)
این یعنی کاربر اگه ۱۰۰ بار هم کلیک کنه، استیت همیشه روی عدد ۲ میمونه. خروجی پایداره.
یا مثلاً باز کردن یک مدال (Modal):
به جای اینکه بنویسیم setState(!state) که حالت Toggle داره و با هر کلیک یه جواب متفاوت میده، باید بنویسیم setState(true). اینطوری همیشه خروجی همونه: مدال باز است.
۲. نگاه Idempotent در بکاِند و پیامرسانی
در لایه بکاِند هم داستان همینه. توی معماریهای مبتنی بر ایونت (Event-Driven)، ممکنه یک پیام به هر دلیلی (مثل Retryهای مسیجبروکر) چند بار به دست مصرفکننده برسه.
سیستم نباید گیج بشه! باید همیشه یک Idempotency Key یا کلید یکتا همراه پیام باشه که حتی اگه ۳۰۰ بار هم پردازش شد، فقط بار اول «اثر» بذاره و دفعات بعدی صرفاً بگه: «انجام شده بود، خیالت راحت!»
ما به عنوان توسعهدهنده باید یاد بگیریم سیستم رو جوری طراحی کنیم که نسبت به «تکرار»، مقاوم (Resilient) باشه. فرقی نمیکنه کلیک کاربر باشه یا ریکوئستِ شبکه؛ سیستمِ بالغ، سیستمیه که Side-effect اضافه ایجاد نکنه.
@codehalics | کدهالیک
❤6
ما به دنبال یک نیرو فرانتاند دولوپر و یک نیرو بکاند دولوپر هستیم.
Backend: Php , Laravel
Frontend: React , Nextjs
تلگرام برام رزومه بفرستید: @a_kamandlou
منبع :https://x.com/a_kamandlou/status/2046247447811305602
@codehalics | کدهالیک
Backend: Php , Laravel
Frontend: React , Nextjs
تلگرام برام رزومه بفرستید: @a_kamandlou
منبع :https://x.com/a_kamandlou/status/2046247447811305602
@codehalics | کدهالیک
❤2
کدهالیک | codehalic
این روزها یه بار سنگین از تنهایی افتاده روی دوشمون؛ دقیقاً وسط فشاری که انگار از هر طرف داره گریبانمونو میگیره. مخصوصاً بعد از موج این تعدیلهای اخیر و اوضاعی که همهمون درگیرش شدیم. از بیرون شاید همهچیز خیلی یه خطی به نظر بیاد. یکی میگه از فردا نیا و تموم.…
شاتل حدود ۲۰۰ نفر رو تعدیل کرده ( خبر به طور غیررسمی اعلام شده بر اساس توییت های توییتر )
علی بابا و رقباش هم به احتمال زیاد با تداوم این اتفاقا و بسته موندن پرواز ها کلا فیل بشه ( به طور غیررسمی اعلام شده )
این اتفاقارو جنگ رقم نزده بلکه قطعی اینترنته که نفس کسب و کار های وابسته به اینترنت رو بریده !
با ادامه دار شدنش هم خیلی از این بدتر قراره شاهد موج عظیم از تعدیل باشیم
اینا ترسوندن نیست اینا طبعات تصمیماتیه که راجع به اینترنت گرفته شده و بعید میدونم به قبل از ۹ اسفند اینترنت برگرده
ناامیدم همین اینا ناامیدیای خودمه تو دلتون خالی نمیکنم فقط دعا کنین اینبار که اینترنت وصل بشه من دوست ندارم کسی دیگ بیکار شه با این وضعیت همتون دوستای خوب منین آخه ناراحتیتونو نبینم هیچ وقت! :)
@codehalics | کدهالیک
😢8👍6❤2🤬2
تا حالا شده توی خونه مبل رو جوری بذاری که جلوی پریز رو بگیره ولی بعد یه مدت به همون وضعیت عادت کنی؟ حالا اگه یکی بیاد مبل رو جابهجا کنه که خونه رو قشنگ کنه، شاکی میشی چون تمام نظم ذهنی تو به هم ریخته. این دقیقا خلاصه اتفاقیه که بهش میگن قانون هایروم.
این قانون تبدیل شده به یکی از قوانین نانوشته مهندسی نرم افزار که خیلی خوبه که یادش بگیرید !
حرف حساب این قانون ساده است: اگه کدی که زدی کاربر زیادی داشته باشه، دیگه مهم نیست توی داکیومنت و راهنما چی نوشتی. مردم به جای اینکه بخونن تو چی گفتی، نگاه میکنن کدت در عمل چیکار میکنه و دقیقا روی همون رفتار (حتی اگه غلط یا اتفاقی باشه) حساب باز میکنن.
یه مثال واقعی و عجیب از دنیای لینوکس:
یه بار مهندسهای گوگل دیدن توی خروجی لیست فایلهای لینوکس چندتا فاصله خالی (Space) بیخود وجود داره. اونا هم از روی دلسوزی این اسپیسها رو حذف کردن که خروجی تمیز بشه. به محض منتشر شدن این تغییر، کلی از برنامههای دنیا از کار افتاد! چرا؟ چون برنامهنویسهای دیگه کدشون رو جوری نوشته بودن که مثلا میگفت: برو کاراکتر شماره ۲۰ رو بردار. اونا از اون فاصلههای بیخود به عنوان خطکش استفاده میکردن و با حذف اونا، کل محاسباتشون غلط شد.
یا مثلا یه کتابخونه قدیمی بود که وقتی فضای هارد خیلی زیاد میشد، به خاطر باگ، عدد رو منفی نشون میداد. بقیه به جای گزارش باگ، توی کدشون نوشتن: اگه عدد منفی بود یعنی فضا خیلی زیاده! حالا اگه سازنده بیاد این باگ رو درست کنه و عدد رو مثبت نشون بده، برنامه تمام اون آدمها میترکه چون فکر میکنن فضای هارد تموم شده.
ته داستان اینه که وقتی نرمافزارت بزرگ و پرکاربر میشه، تو دیگه صاحب ۱۰۰ درصد کدت نیستی. هر حرکت کوچیکی که بزنی، یه جای دنیا یه نفر هست که به اون مدل "تپق" زدن کدت عادت کرده و اگه اصلاحش کنی، زندگیش به هم میخوره. توی ابعاد بزرگ، دیگه فرقی بین باگ و ویژگی وجود نداره؛ هر چیزی که کاربر میبینه، براش میشه قانون.
تا حالا بهش برخوردین ؟ دوست دارم نظرتونو بدونم راجبش !
#lawsofsoftwareengineering
@codehalics | کدهالیک
این قانون تبدیل شده به یکی از قوانین نانوشته مهندسی نرم افزار که خیلی خوبه که یادش بگیرید !
حرف حساب این قانون ساده است: اگه کدی که زدی کاربر زیادی داشته باشه، دیگه مهم نیست توی داکیومنت و راهنما چی نوشتی. مردم به جای اینکه بخونن تو چی گفتی، نگاه میکنن کدت در عمل چیکار میکنه و دقیقا روی همون رفتار (حتی اگه غلط یا اتفاقی باشه) حساب باز میکنن.
یه مثال واقعی و عجیب از دنیای لینوکس:
یه بار مهندسهای گوگل دیدن توی خروجی لیست فایلهای لینوکس چندتا فاصله خالی (Space) بیخود وجود داره. اونا هم از روی دلسوزی این اسپیسها رو حذف کردن که خروجی تمیز بشه. به محض منتشر شدن این تغییر، کلی از برنامههای دنیا از کار افتاد! چرا؟ چون برنامهنویسهای دیگه کدشون رو جوری نوشته بودن که مثلا میگفت: برو کاراکتر شماره ۲۰ رو بردار. اونا از اون فاصلههای بیخود به عنوان خطکش استفاده میکردن و با حذف اونا، کل محاسباتشون غلط شد.
یا مثلا یه کتابخونه قدیمی بود که وقتی فضای هارد خیلی زیاد میشد، به خاطر باگ، عدد رو منفی نشون میداد. بقیه به جای گزارش باگ، توی کدشون نوشتن: اگه عدد منفی بود یعنی فضا خیلی زیاده! حالا اگه سازنده بیاد این باگ رو درست کنه و عدد رو مثبت نشون بده، برنامه تمام اون آدمها میترکه چون فکر میکنن فضای هارد تموم شده.
ته داستان اینه که وقتی نرمافزارت بزرگ و پرکاربر میشه، تو دیگه صاحب ۱۰۰ درصد کدت نیستی. هر حرکت کوچیکی که بزنی، یه جای دنیا یه نفر هست که به اون مدل "تپق" زدن کدت عادت کرده و اگه اصلاحش کنی، زندگیش به هم میخوره. توی ابعاد بزرگ، دیگه فرقی بین باگ و ویژگی وجود نداره؛ هر چیزی که کاربر میبینه، براش میشه قانون.
تا حالا بهش برخوردین ؟ دوست دارم نظرتونو بدونم راجبش !
#lawsofsoftwareengineering
@codehalics | کدهالیک
❤8👏4🤣1
کدهالیک | codehalic
تا حالا شده توی خونه مبل رو جوری بذاری که جلوی پریز رو بگیره ولی بعد یه مدت به همون وضعیت عادت کنی؟ حالا اگه یکی بیاد مبل رو جابهجا کنه که خونه رو قشنگ کنه، شاکی میشی چون تمام نظم ذهنی تو به هم ریخته. این دقیقا خلاصه اتفاقیه که بهش میگن قانون هایروم. این…
خودم توی شرکت قبلی دقیقاً با این داستان برخورد کردم. داشتیم سیستم سرچ رو بازطراحی میکردیم و من اصلاً حواسم به این نبود که یه سری از کاربرها عادت کردن «شناسه ملی» شرکت رو بزنن و اینتر کنن تا مستقیم برن توی پروفایل اون شرکت. این قابلیت اصلاً توی تسک من تعریف نشده بود، ولی چون کاربرها به این «میانبر» عادت کرده بودن، نبودنش رو به چشم یه باگ میدیدن. وقتی این قابلیت رو دوباره اضافه کردیم، تازه فهمیدیم چقدر توی زمان کاربرها صرفهجویی میشه و چقدر خوشحالتر شدن.
این قانون دقیقاً همینه: توی بازطراحی یا همون Migration سیستمها، نباید فقط به فیچرهای رسمی نگاه کرد.
اما این هایروم کیه؟
هایروم رایت یکی از مهندسهای ارشد گوگل هست که تخصصش تغییر دادن کدهایی در مقیاس میلیون خطیه. اون موقعی که داشت روی کتابخانههای مرکزی گوگل کار میکرد، متوجه شد حتی وقتی یه تغییر خیلی ساده و به ظاهر بیضرر مثل حذف یه «فاصله خالی» یا عوض کردن رنگ یه آیکون رو انجام میده، باز هم یه جایی یه چیزی خراب میشه.
هایروم به این نتیجه رسید که هر چقدر هم به کاربرها التماس کنی که «فقط به داکیومنت من اعتماد کنید»، باز هم اونا میرن و از رفتارهای غیررسمی و جانبی کد تو استفاده میکنن. واسه همین این قانون رو گذاشت تا به بقیه هشدار بده: وقتی کدت محبوب شد و آدمهای زیادی ازش استفاده کردن، دیگه اون کد فقط متعلق به تو نیست و نمیتونی به راحتی هر جاش رو که خواستی عوض کنی.
#lawsofsoftwareengineering
@codehalics | کدهالیک
این قانون دقیقاً همینه: توی بازطراحی یا همون Migration سیستمها، نباید فقط به فیچرهای رسمی نگاه کرد.
اما این هایروم کیه؟
هایروم رایت یکی از مهندسهای ارشد گوگل هست که تخصصش تغییر دادن کدهایی در مقیاس میلیون خطیه. اون موقعی که داشت روی کتابخانههای مرکزی گوگل کار میکرد، متوجه شد حتی وقتی یه تغییر خیلی ساده و به ظاهر بیضرر مثل حذف یه «فاصله خالی» یا عوض کردن رنگ یه آیکون رو انجام میده، باز هم یه جایی یه چیزی خراب میشه.
هایروم به این نتیجه رسید که هر چقدر هم به کاربرها التماس کنی که «فقط به داکیومنت من اعتماد کنید»، باز هم اونا میرن و از رفتارهای غیررسمی و جانبی کد تو استفاده میکنن. واسه همین این قانون رو گذاشت تا به بقیه هشدار بده: وقتی کدت محبوب شد و آدمهای زیادی ازش استفاده کردن، دیگه اون کد فقط متعلق به تو نیست و نمیتونی به راحتی هر جاش رو که خواستی عوض کنی.
#lawsofsoftwareengineering
@codehalics | کدهالیک
🤯4👏3
کدهالیک | codehalic
امروز دیجیکالا حدود ۲۰۰۰ نفر رو تعدیل کرده ( ۳۰ درصد از نیروهاش ) در توییت جدید آقای طباطبایی این عدد به طور رسمی 200 نفر اعلام شده است یعنی حدود 3 درصد از نیرو های دیجیکالا تعدیل شدن شاتل حدود ۲۰۰ نفر رو تعدیل کرده ( خبر به طور غیررسمی اعلام شده بر اساس…
@codehalics | کدهالیک
🍌6
ما به دنبال دو نیرو SRE و Devops هستیم.
خوشحال میشم رزومه اتون رو تلگرام برام بفرستید: @ImanAbr7777
@codehalics | کدهالیک
خوشحال میشم رزومه اتون رو تلگرام برام بفرستید: @ImanAbr7777
@codehalics | کدهالیک
🙏1
اگر خودتون یا دوستانتون جویای کار در پوزیشن های شغلی زیر هستید به ایشون پیام بدید
@N_aprr
-Senior Frontend Developer
-Senior FullStack Developer ( PHP - Vue - React )
-Staff Enginner
-Technical Product Manager (TPM)
-Senior Scrum Master
-Accountant
اینم از طریق جابینجاشون :
https://jobinja.ir/companies/bugloos/jobs/
@codehalics | کدهالیک
@N_aprr
-Senior Frontend Developer
-Senior FullStack Developer ( PHP - Vue - React )
-Staff Enginner
-Technical Product Manager (TPM)
-Senior Scrum Master
-Accountant
اینم از طریق جابینجاشون :
https://jobinja.ir/companies/bugloos/jobs/
@codehalics | کدهالیک
این پست درباره «سگارو» عه؛ کسی که هیچکدوم از ما زحماتش برای اینترنت آزاد رو فراموش نمیکنیم.
متأسفانه به نظر میرسه این روزها تو شرایط سختی قرار گرفته. از اونجایی که خودش هم مشکلی با انتشار شماره کارتش نداره و پذیرای دونیت هست، خواستم این موضوع رو با شما در میون بگذارم.
میدونم که این روزها همهمون تو فشار و تنگنا هستیم، اما اگر مایل بودید، هر مبلغی – هرچند کوچیک – میتونه کمکی باشه تا شاید گرهای از کارش باز بشه.
من از طرف بچههای «کدهالیک» مبلغی رو برای حمایت ازش واریز کردم.
امیدوارم که خیلی زود حال همهمون بهتر بشه :)
لینک اصلی توییت :
https://x.com/pari_D_warrior/status/2046599257952505912?s=20
@codehalics | کدهالیک
متأسفانه به نظر میرسه این روزها تو شرایط سختی قرار گرفته. از اونجایی که خودش هم مشکلی با انتشار شماره کارتش نداره و پذیرای دونیت هست، خواستم این موضوع رو با شما در میون بگذارم.
میدونم که این روزها همهمون تو فشار و تنگنا هستیم، اما اگر مایل بودید، هر مبلغی – هرچند کوچیک – میتونه کمکی باشه تا شاید گرهای از کارش باز بشه.
من از طرف بچههای «کدهالیک» مبلغی رو برای حمایت ازش واریز کردم.
امیدوارم که خیلی زود حال همهمون بهتر بشه :)
لینک اصلی توییت :
https://x.com/pari_D_warrior/status/2046599257952505912?s=20
@codehalics | کدهالیک
❤7
دو تا پروژه خیلی خوب برای دور زدن فیلترینگ معرفی شده که خیلی محدود بعضی سایت هارو باز میکنه
https://github.com/masterking32/MasterHttpRelayVPN
یکی این پروژه هست که یوتیوب رو مث بنز براتون میاره بالا
و یکی هم این پروژه هست
https://github.com/patterniha/MITM-DomainFronting
که بعضی سرویس های گوگل رو براتون زنده میکنه ( مثل میت و کلندر و ...)
این دو تا پروژه داخل ReadMe اش کاملا توضیح داده که چطوری کانفیگ میشه و چطور میتونید ازش استفاده کنید
@codehalics | کدهالیک
https://github.com/masterking32/MasterHttpRelayVPN
یکی این پروژه هست که یوتیوب رو مث بنز براتون میاره بالا
و یکی هم این پروژه هست
https://github.com/patterniha/MITM-DomainFronting
که بعضی سرویس های گوگل رو براتون زنده میکنه ( مثل میت و کلندر و ...)
این دو تا پروژه داخل ReadMe اش کاملا توضیح داده که چطوری کانفیگ میشه و چطور میتونید ازش استفاده کنید
@codehalics | کدهالیک
GitHub
GitHub - masterking32/MasterHttpRelayVPN: Domain-fronted HTTP/SOCKS5 proxy tunneling traffic through Google Apps Script with MITM…
Domain-fronted HTTP/SOCKS5 proxy tunneling traffic through Google Apps Script with MITM TLS interception, HTTP/1-2 multiplexing, and DPI evasion. - masterking32/MasterHttpRelayVPN
❤9
🚀 فرصت همکاری ریموت در یک پروژه استارتاپی
در حال توسعه یک پلتفرم در حوزه رزرو خدمات و مارکتپلیس آنلاین هستیم و برای گسترش تیم، به دنبال همکاری با افراد متخصص بهصورت پارهوقت و ریموت از ایران هستیم.
🔎 موقعیتهای مورد نیاز:
• Social Media Manager
• SEO Specialist (On-Page / Off-Page / Technical)
• Web Designer / Developer (آشنا با UI/UX)
• Content Creator (متنی + سناریو ویدیو)
• Video Editor (Reels / YouTube)
• Digital Marketer
• UI/UX Designer
• Flutter Developer
• Backend Developer (ASP.NET Core یا Laravel)
🎯 شرایط همکاری:
• همکاری ریموت
• پارهوقت (با امکان تبدیل به همکاری بلندمدت)
• حضور در یک تیم در حال رشد با فضای استارتاپی
• فرصت رشد و مشارکت در توسعه یک محصول واقعی
📩 برای ارتباط و ارسال رزومه:
Telegram ID: @Btlxadmin
اگر این موقعیت مناسب شما نیست، خوشحال میشم این پست رو با دوستانتون به اشتراک بگذارید 🙏
@codehalics | کدهالیک
در حال توسعه یک پلتفرم در حوزه رزرو خدمات و مارکتپلیس آنلاین هستیم و برای گسترش تیم، به دنبال همکاری با افراد متخصص بهصورت پارهوقت و ریموت از ایران هستیم.
🔎 موقعیتهای مورد نیاز:
• Social Media Manager
• SEO Specialist (On-Page / Off-Page / Technical)
• Web Designer / Developer (آشنا با UI/UX)
• Content Creator (متنی + سناریو ویدیو)
• Video Editor (Reels / YouTube)
• Digital Marketer
• UI/UX Designer
• Flutter Developer
• Backend Developer (ASP.NET Core یا Laravel)
🎯 شرایط همکاری:
• همکاری ریموت
• پارهوقت (با امکان تبدیل به همکاری بلندمدت)
• حضور در یک تیم در حال رشد با فضای استارتاپی
• فرصت رشد و مشارکت در توسعه یک محصول واقعی
📩 برای ارتباط و ارسال رزومه:
Telegram ID: @Btlxadmin
اگر این موقعیت مناسب شما نیست، خوشحال میشم این پست رو با دوستانتون به اشتراک بگذارید 🙏
@codehalics | کدهالیک
چالشهای معماری در Cursor: مهار نشتی حافظه روی بستر Electron
توسعه ابزارهای مبتنی بر ایجنتهای هوش مصنوعی روی ساختارهای چندپردازشی مثل الکترون، چالشهای پرفورمنس سنگینی خلق میکنه. تیم کرسر اخیرا داکیومنت فنیشون رو درباره استراتژیهای حل مشکل حیاتی Out of Memory (OOM) و کرشهای انجین V8 منتشر کرده.
مسئله اصلی اینجا درگیری شدید پروسسهای Renderer به خاطر لود دیتای حجیم ایجنتها و سربار پیامهای IPC بود. توی مقالهای که آماده کردم، ریزِ راهکارهای مهندسی کرسر رو بررسی کردیم؛ از تکنیکهای هندل کردن فایلهای بزرگ (Chunking) و ایزولهسازی پروسسِ اکستنشنها، تا روشهای شکار Memory Leak که در نهایت باعث شد نرخ کرشهای این ادیتور ۸۰ درصد کاهش پیدا کنه.
اگه درگیر چالشهای معماری، مدیریت حافظه و پرفورمنس هستید، پیشنهاد میکنم برای خوندن تحلیل دقیق این کیس استادی، مقاله اصلی رو مطالعه کنید. 👇
https://cursor.com/blog/app-stability
@codehalics | کدهالیک
توسعه ابزارهای مبتنی بر ایجنتهای هوش مصنوعی روی ساختارهای چندپردازشی مثل الکترون، چالشهای پرفورمنس سنگینی خلق میکنه. تیم کرسر اخیرا داکیومنت فنیشون رو درباره استراتژیهای حل مشکل حیاتی Out of Memory (OOM) و کرشهای انجین V8 منتشر کرده.
مسئله اصلی اینجا درگیری شدید پروسسهای Renderer به خاطر لود دیتای حجیم ایجنتها و سربار پیامهای IPC بود. توی مقالهای که آماده کردم، ریزِ راهکارهای مهندسی کرسر رو بررسی کردیم؛ از تکنیکهای هندل کردن فایلهای بزرگ (Chunking) و ایزولهسازی پروسسِ اکستنشنها، تا روشهای شکار Memory Leak که در نهایت باعث شد نرخ کرشهای این ادیتور ۸۰ درصد کاهش پیدا کنه.
اگه درگیر چالشهای معماری، مدیریت حافظه و پرفورمنس هستید، پیشنهاد میکنم برای خوندن تحلیل دقیق این کیس استادی، مقاله اصلی رو مطالعه کنید. 👇
https://cursor.com/blog/app-stability
@codehalics | کدهالیک
Cursor
Keeping the Cursor app stable · Cursor
How we measure crash and OOM rates, debug memory issues with top-down and bottom-up strategies, and ship mitigations and guardrails as the app grows.
👍1
ما توی تیم چیدلی توی گلرنگ ونچرز دنبال یه نفر نیرو بکاند و یه نفر نیرو فرانت اند و یه نیرو تستر میگردیم همکاری به صورت هیبرید هست توی تهران.
بکاند: php, laravel
فرانتاند: react, next
رزومه هاتون رو برام ایمیل کنید همه رزومه ها چک میشه خیالتون راحت :)
hr@chideli.ir
@codehalics | کدهالیک
بکاند: php, laravel
فرانتاند: react, next
رزومه هاتون رو برام ایمیل کنید همه رزومه ها چک میشه خیالتون راحت :)
hr@chideli.ir
@codehalics | کدهالیک