سایت بالا بود و همهچیز ظاهراً درست کار میکرد. حتی لینک مستقیم عکسهایی که روی S3 بودند بدون مشکل باز میشدند و 200 برمیگشتند. اما کاور بعضی عکسها در پروداکشن 500 میداد. وقتی DevTools را چک کردم، دیدم مرورگر بهجای اینکه مستقیم عکس را از S3 بگیرد، دارد مسیر /_next/image را صدا میزند. همانجا مشخص شد مشکل از خود عکس یا S3 نیست، بلکه از Image Optimization در Next.js است. چون وقتی از کامپوننت Image استفاده میکنیم و optimization روشن باشد، Next.js عکس را از منبع میگیرد، resize و optimize میکند و بعد به مرورگر تحویل میدهد. این یعنی سرور کوچک من با 1 vCPU و 2GB RAM عملاً داشت نقش Image CDN را بازی میکرد. در محیط production، داخل Docker، با عکسهای بزرگ PNG و سایزهایی مثل 3840، این پردازش گاهی به timeout یا خطای 500 میرسید. راهحل این بود که برای این شرایط، optimization را در Next.js خاموش کنم و images.unoptimized: true بگذارم تا مرورگر مستقیم عکس را از S3 بگیرد. خلاصه اگر لینک مستقیم S3 درست کار میکند اما /_next/image خطای 500 میدهد، احتمالاً مشکل از optimizer خود Next.js است، نه از فایل عکس یا S3.
نتیجه ساده است: اگر لینک مستقیم عکس درست کار میکند اما /_next/image خطای 500 میدهد، احتمالاً مشکل از S3 نیست؛ مشکل از این است که سرور Next.js توان پردازش و optimize کردن آن عکس را ندارد. برای سرورهای کوچک، image optimization واقعی باید روی CDN انجام شود، نه روی خود اپلیکیشن.
Hossein Molavi | The Engineering Mind
@codehalics | کدهالیک
نتیجه ساده است: اگر لینک مستقیم عکس درست کار میکند اما /_next/image خطای 500 میدهد، احتمالاً مشکل از S3 نیست؛ مشکل از این است که سرور Next.js توان پردازش و optimize کردن آن عکس را ندارد. برای سرورهای کوچک، image optimization واقعی باید روی CDN انجام شود، نه روی خود اپلیکیشن.
Hossein Molavi | The Engineering Mind
@codehalics | کدهالیک
👍12
در دیجیکالا برای حفظ سلامت معماری کدبیسهای TypeScript و کنترل وابستگی بین ماژولها، از ابزاری داخلی برای تحلیل coupling و cohesion استفاده میکنیم. حالا تصمیم گرفتیم نسخه سادهای از این ابزار را با نام ts-modularity متنباز کنیم. این ابزار با اجرای دستور npx ts-modularity کدبیس را اسکن میکند و ساختار وابستگیها، کلاسترهای طبیعی، چرخههای پنهان و بخشهایی را که نیاز به refactor دارند، بهصورت بصری در مرورگر نمایش میدهد. هدف ts-modularity این است که تیمها بتوانند خیلی سریع تصویر واضحتری از معماری واقعی کد خود داشته باشند و تصمیمهای بهتری برای بهبود ساختار ماژولها بگیرند.
https://github.com/mberneti/ts-modularity
@codehalics | کدهالیک
https://github.com/mberneti/ts-modularity
@codehalics | کدهالیک
👏20👍2
یه قابلیت خیلی کمتر دیدهشده توی Git هست به اسم
اسمش یعنی: Reuse Recorded Resolution
یعنی چی؟ یعنی اگه یه بار یه merge conflict رو حل کردی، Git میتونه یادش بمونه دفعه بعد اگه همون conflict تکرار شد، همون راهحل قبلی رو خودش دوباره اعمال کنه.
فقط کافیه یک بار فعالش کنی:
از اون به بعد، مخصوصاً توی rebase، mergeهای تکراری، branchهای طولانی یا وقتی چند بار به یه conflict مشابه میخوری، Git کمکم میفهمه قبلاً چی کار کردی.
https://git-scm.com/book/en/v2/Git-Tools-Rerere
نمونه واقعی:
https://gist.github.com/skipcloud/f1033afb4fa5681d69fa63458cc95928
@codehalics | کدهالیک
rerere.اسمش یعنی: Reuse Recorded Resolution
یعنی چی؟ یعنی اگه یه بار یه merge conflict رو حل کردی، Git میتونه یادش بمونه دفعه بعد اگه همون conflict تکرار شد، همون راهحل قبلی رو خودش دوباره اعمال کنه.
فقط کافیه یک بار فعالش کنی:
git config --global rerere.enabled trueاز اون به بعد، مخصوصاً توی rebase، mergeهای تکراری، branchهای طولانی یا وقتی چند بار به یه conflict مشابه میخوری، Git کمکم میفهمه قبلاً چی کار کردی.
https://git-scm.com/book/en/v2/Git-Tools-Rerere
نمونه واقعی:
https://gist.github.com/skipcloud/f1033afb4fa5681d69fa63458cc95928
@codehalics | کدهالیک
❤9👎1
کدهالیک | codehalic
یه قابلیت خیلی کمتر دیدهشده توی Git هست به اسم rerere. اسمش یعنی: Reuse Recorded Resolution یعنی چی؟ یعنی اگه یه بار یه merge conflict رو حل کردی، Git میتونه یادش بمونه دفعه بعد اگه همون conflict تکرار شد، همون راهحل قبلی رو خودش دوباره اعمال کنه. فقط…
مثلاً فرض کن یه branch قدیمی داری و هر بار که با
بار اول خودت conflict رو حل میکنی و به Git میگی کدوم نسخه درسته.
از دفعه بعد، اگر دوباره دقیقاً همان conflict پیش بیاد، Git میگه:
یعنی: «داداش اینو قبلاً با هم حل کرده بودیم، من یادمه.»
همینجاست که
@codehalics | کدهالیک
main ریبیسش میکنی، سر یک فایل config یا یک import خاص conflict میخوری.بار اول خودت conflict رو حل میکنی و به Git میگی کدوم نسخه درسته.
از دفعه بعد، اگر دوباره دقیقاً همان conflict پیش بیاد، Git میگه:
Resolved using previous resolutionیعنی: «داداش اینو قبلاً با هم حل کرده بودیم، من یادمه.»
همینجاست که
rerere از یه قابلیت عجیب Git تبدیل میشه به یه نجاتدهنده واقعی.@codehalics | کدهالیک
❤5👎1
امروز یه چیزی دیدم که بعد مدت ها خستگیمو در کرد :))))
کدهالیک از مرز ۳۰۰۰ کاربر گذشت.
الان خانواده کدهالیک به ۳٬۰۱۶ نفر رسیده و تا امروز ۵٬۵۸۲ ثبتنام روی دورهها داشتیم. بیشتر از ۱۷٬۷۴۴ بازدید محتوا ثبت شده، ۱۱٬۱۵۹ بازدید یکتا داشتیم و فقط در بخش ویدیوها، یادگیرندهها بیش از ۸۳۳ ساعت و ۳۳ دقیقه آموزش دیدهاند. ( این آمار مربوط به یک ماه گذشته است و کدهالیک نزدیک به 1 ساله که متولد شده و آماری از اون تایم تا یه ماه پیش ازش در دسترسمون نیست دی:)
چیزی که برای ما جذابتر از خود عددهاست، عمق یادگیریه. تا امروز ۲٬۷۳۹ ویدیو کامل دیده شده، ۴٬۱۳۷ ویدیو توسط کاربران تماشا شده، ۱۹۹٬۳۵۵ رویداد یادگیری ثبت شده و ۴۰۷ یادگیرنده فعال داریم که واقعاً دارن مسیرشون رو جلو میبرن.
این مسیر با همراهی شما معنی پیدا کرده. ممنونیم که کنار کدهالیک هستید و بهمون انگیزه میدید که جدیتر، بهتر و کاربردیتر ادامه بدیم.
https://codehalic.ir/
@codehalics | کدهالیک
کدهالیک از مرز ۳۰۰۰ کاربر گذشت.
الان خانواده کدهالیک به ۳٬۰۱۶ نفر رسیده و تا امروز ۵٬۵۸۲ ثبتنام روی دورهها داشتیم. بیشتر از ۱۷٬۷۴۴ بازدید محتوا ثبت شده، ۱۱٬۱۵۹ بازدید یکتا داشتیم و فقط در بخش ویدیوها، یادگیرندهها بیش از ۸۳۳ ساعت و ۳۳ دقیقه آموزش دیدهاند. ( این آمار مربوط به یک ماه گذشته است و کدهالیک نزدیک به 1 ساله که متولد شده و آماری از اون تایم تا یه ماه پیش ازش در دسترسمون نیست دی:)
چیزی که برای ما جذابتر از خود عددهاست، عمق یادگیریه. تا امروز ۲٬۷۳۹ ویدیو کامل دیده شده، ۴٬۱۳۷ ویدیو توسط کاربران تماشا شده، ۱۹۹٬۳۵۵ رویداد یادگیری ثبت شده و ۴۰۷ یادگیرنده فعال داریم که واقعاً دارن مسیرشون رو جلو میبرن.
این مسیر با همراهی شما معنی پیدا کرده. ممنونیم که کنار کدهالیک هستید و بهمون انگیزه میدید که جدیتر، بهتر و کاربردیتر ادامه بدیم.
https://codehalic.ir/
@codehalics | کدهالیک
❤16🔥5
کدهالیک | codehalic
امروز یه چیزی دیدم که بعد مدت ها خستگیمو در کرد :)))) کدهالیک از مرز ۳۰۰۰ کاربر گذشت. الان خانواده کدهالیک به ۳٬۰۱۶ نفر رسیده و تا امروز ۵٬۵۸۲ ثبتنام روی دورهها داشتیم. بیشتر از ۱۷٬۷۴۴ بازدید محتوا ثبت شده، ۱۱٬۱۵۹ بازدید یکتا داشتیم و فقط در بخش ویدیوها،…
یه آمار خیلی جذاب دیگه از کدهالیک:
بین فعالترین یادگیرندههای کدهالیک، کاربری داریم که تا امروز ۲۷ ساعت و ۱۶ دقیقه آموزش دیده. بعد از اون هم چندین کاربر دیگه داریم که بین ۱۲ تا ۲۵ ساعت از آموزشهای سایت رو تماشا کردن.
یعنی فقط ۱۳ نفر از فعالترین یادگیرندهها، روی هم بیشتر از ۲۰۷ ساعت آموزش دیدن.
جذابتر اینکه میانگین تکمیل آموزش بین این کاربران، در بیشتر موارد بالای ۹۰٪ بوده. یعنی صرفاً وارد دوره نشدن؛ واقعاً نشستن، دیدن، جلو رفتن و یاد گرفتن.
برای من این عددها فقط آمار نیستن. نشونه اینه که کدهالیک داره کمکم به بخشی از مسیر یادگیری آدمها تبدیل میشه.
@codehalics | کدهالیک
بین فعالترین یادگیرندههای کدهالیک، کاربری داریم که تا امروز ۲۷ ساعت و ۱۶ دقیقه آموزش دیده. بعد از اون هم چندین کاربر دیگه داریم که بین ۱۲ تا ۲۵ ساعت از آموزشهای سایت رو تماشا کردن.
یعنی فقط ۱۳ نفر از فعالترین یادگیرندهها، روی هم بیشتر از ۲۰۷ ساعت آموزش دیدن.
جذابتر اینکه میانگین تکمیل آموزش بین این کاربران، در بیشتر موارد بالای ۹۰٪ بوده. یعنی صرفاً وارد دوره نشدن؛ واقعاً نشستن، دیدن، جلو رفتن و یاد گرفتن.
برای من این عددها فقط آمار نیستن. نشونه اینه که کدهالیک داره کمکم به بخشی از مسیر یادگیری آدمها تبدیل میشه.
@codehalics | کدهالیک
🔥8👍3
کدهالیک | codehalic
یه آمار خیلی جذاب دیگه از کدهالیک: بین فعالترین یادگیرندههای کدهالیک، کاربری داریم که تا امروز ۲۷ ساعت و ۱۶ دقیقه آموزش دیده. بعد از اون هم چندین کاربر دیگه داریم که بین ۱۲ تا ۲۵ ساعت از آموزشهای سایت رو تماشا کردن. یعنی فقط ۱۳ نفر از فعالترین یادگیرندهها،…
یه آمار قشنگ دیگه هم از همراهی شما داریم.
در طول یک سال گذشته، ۳۶ نفر از مسیر «کافی بده» از کدهالیک حمایت کردن و مجموع حمایتها به ۵٬۱۶۵٬۳۷۶ تومان رسیده.
شاید این عدد در ظاهر فقط یک مبلغ باشه، اما برای من معنی بزرگتری داره. یعنی آدمهایی بودن که محتوای کدهالیک براشون مفید بوده، به مسیرش اعتماد کردن و خواستن سهمی در ادامهدار شدنش داشته باشن.
اگر آموزشهای کدهالیک براتون مفید بوده و دوست داشتید از ادامه این مسیر حمایت کنید، میتونید از این لینک کنارمون باشید:
https://www.coffeebede.com/codeholic
ممنونیم که فقط مخاطب نیستید؛ همراه این مسیر هستید.
@codehalics | کدهالیک
در طول یک سال گذشته، ۳۶ نفر از مسیر «کافی بده» از کدهالیک حمایت کردن و مجموع حمایتها به ۵٬۱۶۵٬۳۷۶ تومان رسیده.
شاید این عدد در ظاهر فقط یک مبلغ باشه، اما برای من معنی بزرگتری داره. یعنی آدمهایی بودن که محتوای کدهالیک براشون مفید بوده، به مسیرش اعتماد کردن و خواستن سهمی در ادامهدار شدنش داشته باشن.
اگر آموزشهای کدهالیک براتون مفید بوده و دوست داشتید از ادامه این مسیر حمایت کنید، میتونید از این لینک کنارمون باشید:
https://www.coffeebede.com/codeholic
ممنونیم که فقط مخاطب نیستید؛ همراه این مسیر هستید.
@codehalics | کدهالیک
👍15❤6🔥1
یه چیز جدید توی css یاد گرفتم باهاتون میخوام شیر کنم !
پارالاکس یعنی وقتی کاربر صفحه رو اسکرول میکنه، لایههای مختلف با سرعت متفاوت حرکت کنن؛ مثلاً متن عادی بالا بیاد ولی عکس پسزمینه کمی کندتر جابهجا بشه و صفحه حس عمق بگیره. قبلاً برای این کار معمولاً سراغ JavaScript میرفتیم، ولی الان با CSS جدید میشه خود انیمیشن رو به اسکرول وصل کرد؛ یعنی انیمیشن به جای زمان، با حرکت اسکرول جلو میره. مثلاً خیلی ساده میتونیم بگیم عکس داخل یک بخش، موقع اسکرول کمی بالا و پایین حرکت کنه:
خلاصهاش اینه: برای افکتهایی مثل پارالاکس، قبل از اینکه سریع بریم سراغ JS، بهتره اول ببینیم خود CSS راهحل سبکتر و تمیزتری نداره.
https://dan-webnotes.com/posts/2026-06-02-css-native-parallax-effect/
@codehalics | کدهالیک
پارالاکس یعنی وقتی کاربر صفحه رو اسکرول میکنه، لایههای مختلف با سرعت متفاوت حرکت کنن؛ مثلاً متن عادی بالا بیاد ولی عکس پسزمینه کمی کندتر جابهجا بشه و صفحه حس عمق بگیره. قبلاً برای این کار معمولاً سراغ JavaScript میرفتیم، ولی الان با CSS جدید میشه خود انیمیشن رو به اسکرول وصل کرد؛ یعنی انیمیشن به جای زمان، با حرکت اسکرول جلو میره. مثلاً خیلی ساده میتونیم بگیم عکس داخل یک بخش، موقع اسکرول کمی بالا و پایین حرکت کنه:
.parallax {
overflow: hidden;
view-timeline-name: --parallax;
}
.parallax img {
animation: moveImage linear both;
animation-timeline: --parallax;
animation-range: cover;
}
@keyframes moveImage {
from {
transform: translateY(-20%);
}
to {
transform: translateY(20%);
}
}خلاصهاش اینه: برای افکتهایی مثل پارالاکس، قبل از اینکه سریع بریم سراغ JS، بهتره اول ببینیم خود CSS راهحل سبکتر و تمیزتری نداره.
https://dan-webnotes.com/posts/2026-06-02-css-native-parallax-effect/
@codehalics | کدهالیک
dan—webnotes
CSS-native parallax effect
A parallax effect built entirely in CSS with scroll-driven animations, no scroll listeners required.
❤16🔥2
کدهالیک | codehalic
یه چیز جدید توی css یاد گرفتم باهاتون میخوام شیر کنم ! پارالاکس یعنی وقتی کاربر صفحه رو اسکرول میکنه، لایههای مختلف با سرعت متفاوت حرکت کنن؛ مثلاً متن عادی بالا بیاد ولی عکس پسزمینه کمی کندتر جابهجا بشه و صفحه حس عمق بگیره. قبلاً برای این کار معمولاً…
از این داریم توی صفحه دوره کدهالیک استفاده میکنیم میتونین به طور نمونه یکی از دوره ها رو با دسکتاپ باز کنین سمت چپ که ثبت نام دوره است داره با همین انمیشن parallax کند تر از باقی قسمت ها بالا میره که روی هر دیوایس با هر Height ای تمرکزش روی ثبت نام در دوره باشه که دیده شه !
خود همینم از دل یه باگ برای یه کاربر میومد که Height دیوایسش انقد کم بود که دکمه ثبت نام رو نمیدید !
به طور مثال این صفحه رو توی دسکتاپ ببینید :
https://codehalic.ir/courses/frontend-codecamp-beginners
@codehalics | کدهالیک
خود همینم از دل یه باگ برای یه کاربر میومد که Height دیوایسش انقد کم بود که دکمه ثبت نام رو نمیدید !
به طور مثال این صفحه رو توی دسکتاپ ببینید :
https://codehalic.ir/courses/frontend-codecamp-beginners
@codehalics | کدهالیک
🔥8❤2
یه باگ عجیب توی VSCode و github.dev پیدا شده که داستانش خیلی ترسناکه:
فقط با کلیک روی یه لینک، ممکن بود مهاجم به GitHub Token شما برسه؛ یعنی همون چیزی که میتونه به ریپوهای خصوصیتون دسترسی داشته باشه و حتی روی بعضی ریپوها تغییر ایجاد کنه.
ماجرا از اینجا شروع میشه که github.dev در واقع یه VSCode داخل مرورگره. حالا پژوهشگر امنیتی نشون داده بود که با ترکیب یک Jupyter Notebook، Webview و چند میانبر کیبورد، میشه کاری کرد VSCode فکر کنه خود کاربر داره یه اکستنشن رو نصب میکنه؛ در حالی که پشت صحنه، یه کد مخرب داره توکن GitHub رو میدزده.
جزییات این باگ در این لینک :
https://blog.ammaraskar.com/github-token-stealing/
@codehalics | کدهالیک
فقط با کلیک روی یه لینک، ممکن بود مهاجم به GitHub Token شما برسه؛ یعنی همون چیزی که میتونه به ریپوهای خصوصیتون دسترسی داشته باشه و حتی روی بعضی ریپوها تغییر ایجاد کنه.
ماجرا از اینجا شروع میشه که github.dev در واقع یه VSCode داخل مرورگره. حالا پژوهشگر امنیتی نشون داده بود که با ترکیب یک Jupyter Notebook، Webview و چند میانبر کیبورد، میشه کاری کرد VSCode فکر کنه خود کاربر داره یه اکستنشن رو نصب میکنه؛ در حالی که پشت صحنه، یه کد مخرب داره توکن GitHub رو میدزده.
جزییات این باگ در این لینک :
https://blog.ammaraskar.com/github-token-stealing/
@codehalics | کدهالیک
😱1
مایکروسافت توی Build 2026 یه خبر مهم برای دنیای AI Agentها داد: OpenClaw داره رسمیتر وارد اکوسیستم ویندوز و Microsoft 365 میشه. OpenClaw همون ایدهی «دستیار هوش مصنوعی که فقط جواب نمیده، کار انجام میده» رو جلو میبره؛ یعنی میتونه چند مرحله کار رو پشت سر هم انجام بده، با فایلها، ابزارها، ایمیل، تقویم یا سرویسهای سازمانی درگیر بشه و نقش یه عامل اجرایی واقعی رو بازی کنه، نه فقط یه چتبات معمولی.
نکتهی مهم خبر اینه که مایکروسافت نمیخواد این مدل ایجنتها همینطوری ول و بدون کنترل روی سیستم شرکتها اجرا بشن. برای همین OpenClaw روی ویندوز با چیزی به اسم Microsoft Execution Containers یا MXC اجرا میشه؛ یعنی نود و گیتوی OpenClaw داخل محیط کنترلشده و ایزوله بالا میآیند تا IT و Security بتوانند مشخص کنند ایجنت به چه فایل، شبکه، داده یا منبعی دسترسی داشته باشد. از آن طرف Microsoft Scout هم معرفی شده؛ یک ایجنت همیشهفعال داخل Microsoft 365 که با Teams، Outlook، OneDrive و SharePoint کار میکند و طبق اعلام مایکروسافت، بر پایه تکنولوژی متنباز OpenClaw ساخته شده.
@codehalics | کدهالیک
نکتهی مهم خبر اینه که مایکروسافت نمیخواد این مدل ایجنتها همینطوری ول و بدون کنترل روی سیستم شرکتها اجرا بشن. برای همین OpenClaw روی ویندوز با چیزی به اسم Microsoft Execution Containers یا MXC اجرا میشه؛ یعنی نود و گیتوی OpenClaw داخل محیط کنترلشده و ایزوله بالا میآیند تا IT و Security بتوانند مشخص کنند ایجنت به چه فایل، شبکه، داده یا منبعی دسترسی داشته باشد. از آن طرف Microsoft Scout هم معرفی شده؛ یک ایجنت همیشهفعال داخل Microsoft 365 که با Teams، Outlook، OneDrive و SharePoint کار میکند و طبق اعلام مایکروسافت، بر پایه تکنولوژی متنباز OpenClaw ساخته شده.
@codehalics | کدهالیک
❤1
استک اورفلو که سالها پاتوق اصلی برنامهنویسا برای یادگیری و رفع باگ بود، حسابی افت کرده
تعداد سوالات ماهانهاش از حدود ۲۰۷ هزار تا در ۲۰۱۴ رسیده به کمتر از ۴ هزار تا در ۲۰۲۶!
حالا Stack Overflow کمکم داره از یه انجمن زنده، تبدیل میشه به موزهای از دانش برنامهنویسها؛ همون دانشی که حالا خود AIها ازش تغذیه میکنن.
@codehalics | کدهالیک
تعداد سوالات ماهانهاش از حدود ۲۰۷ هزار تا در ۲۰۱۴ رسیده به کمتر از ۴ هزار تا در ۲۰۲۶!
حالا Stack Overflow کمکم داره از یه انجمن زنده، تبدیل میشه به موزهای از دانش برنامهنویسها؛ همون دانشی که حالا خود AIها ازش تغذیه میکنن.
@codehalics | کدهالیک
👍16😱2🤬1
میدونم که دلتون برای قوانین مهندسی نرم افزار تنگ شده بود (الکی)
یه تصور خطرناک توی تیمسازی هست که میگه: «کار عقب افتاده؟ آدم اضافه کن.»
ولی اثر رینگلمان دقیقاً همینجا میزنه زیر میز.
میگه هرچی تعداد آدمهای یک گروه بیشتر میشه، الزاماً خروجی بیشتر نمیشه؛ حتی گاهی تلاشِ هر نفر کمتر هم میشه. نه چون آدمها بدتر میشن، نه چون کسی قصد کمکاری داره. مسئله اینه که وقتی جمع بزرگ میشه، مسئولیت بین آدمها پخش میشه، سهم هر نفر کمتر دیده میشه، هماهنگی سختتر میشه و آدمها ناخودآگاه عقبتر میایستن.
یه جلسه سهنفره رو تصور کن. تقریباً همه حرف میزنن، نظر میدن، مسئولیت میگیرن. حالا همون موضوع رو ببر توی جلسه پونزدهنفره. چند نفر حرف میزنن؟ چند نفر فقط گوش میدن؟ چند نفر ته ذهنشون میگن «یکی دیگه بالاخره میگه»؟
توی تیم فنی هم همین داستانه. همیشه اضافه کردن دولوپر یعنی سرعت بیشتر نیست. گاهی یعنی کانفلیکت بیشتر، مرج بیشتر، جلسه بیشتر، وابستگی بیشتر، منتظر موندن بیشتر. یعنی تیم به جای اینکه انرژیاش بره پای ساختن محصول، خرج هماهنگ کردن خودش میشه.
#lawsofsoftwareengineering
@codehalics | کدهالیک
یه تصور خطرناک توی تیمسازی هست که میگه: «کار عقب افتاده؟ آدم اضافه کن.»
ولی اثر رینگلمان دقیقاً همینجا میزنه زیر میز.
میگه هرچی تعداد آدمهای یک گروه بیشتر میشه، الزاماً خروجی بیشتر نمیشه؛ حتی گاهی تلاشِ هر نفر کمتر هم میشه. نه چون آدمها بدتر میشن، نه چون کسی قصد کمکاری داره. مسئله اینه که وقتی جمع بزرگ میشه، مسئولیت بین آدمها پخش میشه، سهم هر نفر کمتر دیده میشه، هماهنگی سختتر میشه و آدمها ناخودآگاه عقبتر میایستن.
یه جلسه سهنفره رو تصور کن. تقریباً همه حرف میزنن، نظر میدن، مسئولیت میگیرن. حالا همون موضوع رو ببر توی جلسه پونزدهنفره. چند نفر حرف میزنن؟ چند نفر فقط گوش میدن؟ چند نفر ته ذهنشون میگن «یکی دیگه بالاخره میگه»؟
توی تیم فنی هم همین داستانه. همیشه اضافه کردن دولوپر یعنی سرعت بیشتر نیست. گاهی یعنی کانفلیکت بیشتر، مرج بیشتر، جلسه بیشتر، وابستگی بیشتر، منتظر موندن بیشتر. یعنی تیم به جای اینکه انرژیاش بره پای ساختن محصول، خرج هماهنگ کردن خودش میشه.
#lawsofsoftwareengineering
@codehalics | کدهالیک
👍6❤3🔥1
کدهالیک | codehalic
میدونم که دلتون برای قوانین مهندسی نرم افزار تنگ شده بود (الکی) یه تصور خطرناک توی تیمسازی هست که میگه: «کار عقب افتاده؟ آدم اضافه کن.» ولی اثر رینگلمان دقیقاً همینجا میزنه زیر میز. میگه هرچی تعداد آدمهای یک گروه بیشتر میشه، الزاماً خروجی بیشتر…
من همیشه برای توضیح این خطای مدیریتی یه مثال ساده میزنم: به دنیا اومدن یک بچه ۹ ماه زمان میبره؛ حالا اگر ۹ نفر رو کنار هم بذاریم، بچه یکماهه به دنیا نمیاد.
خیلی وقتها مدیرها با تیم و پروژه هم همینطوری برخورد میکنن. فکر میکنن هر کاری که زمانبر شده، با اضافه کردن آدم سریعتر میشه. در حالی که بعضی کارها ذاتاً زمان، بلوغ، هماهنگی و تمرکز میخوان. آدم اضافه کردن، اگر بدون طراحی درست نقشها، مرز مسئولیتها و مسیر تصمیمگیری باشه، نهتنها کار رو سریعتر نمیکنه، بلکه تیم رو کندتر هم میکنه.
چون از یه جایی به بعد، مسئله دیگه «کمبود آدم» نیست؛ مسئله اینه که آدمها دارن وقتشون رو صرف هماهنگ شدن با هم میکنن، نه جلو بردن کار.
@codehalics | کدهالیک
خیلی وقتها مدیرها با تیم و پروژه هم همینطوری برخورد میکنن. فکر میکنن هر کاری که زمانبر شده، با اضافه کردن آدم سریعتر میشه. در حالی که بعضی کارها ذاتاً زمان، بلوغ، هماهنگی و تمرکز میخوان. آدم اضافه کردن، اگر بدون طراحی درست نقشها، مرز مسئولیتها و مسیر تصمیمگیری باشه، نهتنها کار رو سریعتر نمیکنه، بلکه تیم رو کندتر هم میکنه.
چون از یه جایی به بعد، مسئله دیگه «کمبود آدم» نیست؛ مسئله اینه که آدمها دارن وقتشون رو صرف هماهنگ شدن با هم میکنن، نه جلو بردن کار.
@codehalics | کدهالیک
👍5😁4
حمایت از دورههای رایگان و باکیفیت فارسی، همیشه جزو ارزشهای کدهالیک بوده و هست. ✨
دوست خوبمون مرجان عزیزاللهی، بهتازگی یه دوره جذاب UX Research توی سایت سکان آکادمی منتشر کرده که کاملاً رایگانه و حاصل تجربیات عملی خودشه. دیدن این دوره رو به همه علاقهمندان این حوزه پیشنهاد میکنیم!
لینک دسترسی به دوره:
👇
https://sokanacademy.com/academy/courses/ux-research
پ.ن: بدون vpn باید وارد سایت بشید وگرنه خطای ۵۰۴ میگیرید !
@codehalics | کدهالیک
دوست خوبمون مرجان عزیزاللهی، بهتازگی یه دوره جذاب UX Research توی سایت سکان آکادمی منتشر کرده که کاملاً رایگانه و حاصل تجربیات عملی خودشه. دیدن این دوره رو به همه علاقهمندان این حوزه پیشنهاد میکنیم!
لینک دسترسی به دوره:
👇
https://sokanacademy.com/academy/courses/ux-research
پ.ن: بدون vpn باید وارد سایت بشید وگرنه خطای ۵۰۴ میگیرید !
@codehalics | کدهالیک
❤17👍1🔥1
چند آسیبپذیری مهم در 7Zip طی ماههای اخیر افشا شده که میتوانند از طریق فایلهای ZIP دستکاریشده، به مهاجم اجازه اجرای کد مخرب روی سیستم قربانی را بدهند.
مهمترین این موارد مربوط به نحوه پردازش Symbolic Linkها در فایلهای ZIP است. مهاجم میتواند آرشیوی بسازد که هنگام Extract شدن، فایلهایی را خارج از مسیر مورد انتظار بنویسد (Directory Traversal) و در برخی سناریوها این موضوع به Remote Code Execution منجر شود. CVE-2025-11001 و CVE-2025-11002 از شناختهشدهترین نمونههای این دسته هستند.
همچنین اخیراً یک آسیبپذیری Heap Overflow در Handler مربوط به NTFS Archiveها گزارش شده که حتی باز کردن یک آرشیو آلوده میتواند زمینه اجرای کد مخرب را فراهم کند. این مشکل در نسخه 26.00 وجود داشته و در 26.01 برطرف شده است.
نکته نگرانکننده اینجاست که 7Zip مکانیزم Auto Update ندارد و هنوز تعداد زیادی از سیستمها نسخههای قدیمی و آسیبپذیر را اجرا میکنند.
@codehalics | کدهالیک
مهمترین این موارد مربوط به نحوه پردازش Symbolic Linkها در فایلهای ZIP است. مهاجم میتواند آرشیوی بسازد که هنگام Extract شدن، فایلهایی را خارج از مسیر مورد انتظار بنویسد (Directory Traversal) و در برخی سناریوها این موضوع به Remote Code Execution منجر شود. CVE-2025-11001 و CVE-2025-11002 از شناختهشدهترین نمونههای این دسته هستند.
همچنین اخیراً یک آسیبپذیری Heap Overflow در Handler مربوط به NTFS Archiveها گزارش شده که حتی باز کردن یک آرشیو آلوده میتواند زمینه اجرای کد مخرب را فراهم کند. این مشکل در نسخه 26.00 وجود داشته و در 26.01 برطرف شده است.
نکته نگرانکننده اینجاست که 7Zip مکانیزم Auto Update ندارد و هنوز تعداد زیادی از سیستمها نسخههای قدیمی و آسیبپذیر را اجرا میکنند.
@codehalics | کدهالیک
نسخه جدید زبان برنامهنویسی الکسیر (نسخه ۱.۲۰) به تازگی منتشر شده است که مهمترین تغییر آن، توانایی تشخیص خودکار خطاهای کدنویسی قبل از اجرای برنامه است. در این آپدیت، الکسیر بدون نیاز به درگیر کردن برنامهنویس با کدهای پیچیده، باگها را پیشاپیش پیدا میکند تا نرمافزار پایداری بسیار بیشتری داشته باشد. اگر با این زبان آشنایی ندارید، جالب است بدانید که الکسیر برای مدیریت سیستمهای بسیار شلوغ طراحی شده و به همین دلیل در شبکههای مخابراتی کاربرد گستردهای دارد؛ به عنوان یک مثال ملموس، بخش چت اپلیکیشن دیوار نیز با همین زبان نوشته شده تا بتواند همزمان حجم عظیمی از پیامهای کاربران را در لحظه و بدون قطعی
پردازش کند.
https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/
@codehalics | کدهالیک
پردازش کند.
https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/
@codehalics | کدهالیک
کدهالیک | codehalic
نسخه جدید زبان برنامهنویسی الکسیر (نسخه ۱.۲۰) به تازگی منتشر شده است که مهمترین تغییر آن، توانایی تشخیص خودکار خطاهای کدنویسی قبل از اجرای برنامه است. در این آپدیت، الکسیر بدون نیاز به درگیر کردن برنامهنویس با کدهای پیچیده، باگها را پیشاپیش پیدا میکند…
برای کسایی که علاقمندن داستان تغییر استک چت دیوار از پایتون به الکسیر رو بخونن پیشنهاد میکنم این مقاله از بلاگ آقای علی رجبی راجب این تغییر استک رو مطالعه کنن
https://virgool.io/@alirajabi/%DA%86%D8%AA-%D8%AF%DB%8C%D9%88%D8%A7%D8%B1-%D8%A7%D8%B2-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%AA%D8%A7-%D8%A7%D9%84%DB%8C%DA%A9%D8%B3%DB%8C%D8%B1-mxeospiy722c
@codehalics | کدهالیک
https://virgool.io/@alirajabi/%DA%86%D8%AA-%D8%AF%DB%8C%D9%88%D8%A7%D8%B1-%D8%A7%D8%B2-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%AA%D8%A7-%D8%A7%D9%84%DB%8C%DA%A9%D8%B3%DB%8C%D8%B1-mxeospiy722c
@codehalics | کدهالیک
ویرگول
چت دیوار: از پایتون تا الیکسیر
بهار ۹۴ در تیم فنی دیوار تصمیم به پیادهسازی چت دیوار گرفتیم. برای تست اولیه و ارائه سرویس چت به کاربران در زمان کوتاه Tigase، که یک Message Broker متنباز مبتنی بر پروتکل
کدهالیک | codehalic
امروز میریم ادامه قوانین مهندسی نرم افزار رو بررسی کنیم و یک کانسپت بسیار جذاب در سیستم های توزیع شده رو بررسی میکنیم قضیهی CAP (Consistency – Availability – Partition Tolerance) میگه تو سیستمهای توزیع شده نمیتونی هر سه تا ویژگی رو همزمان بهطور کامل…
در مقاله ای که میخونین راجب به CAP به عنوان یکی از نیازمندی ها و چالش های فنی پیش از پیاده سازی چت دیوار توجه ویژه ای شده بود که ما قبلا این قانون از مهندسی نرم افزار رو ویژه بررسیش کردیم که خوندن مجددش خالی از لطف نیست !
@codehalics | کدهالیک
@codehalics | کدهالیک
دفعه بعد كه خواستيد پاورپوينت درست كنيد، به اين فكر کنید كه يه لايبررى JS هست كه اكه به Claude بديد، براتون يه پرزنتيشن interactive جالب با كلى transition متنوع
درست ميكنه!
revealjs.com
@codehalics | کدهالیک | Amir
درست ميكنه!
revealjs.com
@codehalics | کدهالیک | Amir
❤9👍2