کدهالیک | codehalic
3.47K subscribers
319 photos
8 videos
66 files
359 links
دوره های آموزشیمون رو از داخل سایت ببینید

https://codehalic.ir
Download Telegram
مایکروسافت در مقاله‌ی جدید .NET توضیح داده که C# قرار است مدل دقیق‌تری برای Memory Safety داشته باشد. در نسخه‌های فعلی، کلمه‌ی unsafe بیشتر یک هشدار کلی است؛ یعنی می‌گوید بخشی از کد ممکن است با حافظه به‌صورت مستقیم یا کم‌سطح کار کند، اما همیشه مشخص نمی‌کند دقیقاً کدام عملیات خطرناک است و چه قراردادی باید بین نویسنده‌ی API و استفاده‌کننده رعایت شود. مدل جدید تلاش می‌کند این مرز را شفاف‌تر کند: کدهایی که با pointer، حافظه‌ی unmanaged، Marshal یا APIهای حساس سروکار دارند باید صریح‌تر مشخص کنند چه پیش‌فرض‌هایی برای امن بودن لازم است.
اهمیت این تغییر در این است که C# نمی‌خواهد قابلیت‌های low-level خودش را حذف کند؛ بلکه می‌خواهد استفاده از آن‌ها قابل‌تحلیل‌تر، قابل‌بررسی‌تر و کم‌ریسک‌تر شود. وقتی کامپایلر بتواند بخش‌های حساس به حافظه را دقیق‌تر تشخیص دهد، code review بهتر انجام می‌شود، مسئولیت APIها واضح‌تر می‌شود و احتمال مخفی ماندن خطاهایی مثل دسترسی نامعتبر به حافظه، use-after-free یا buffer overrun کاهش پیدا می‌کند. به زبان ساده‌تر، هدف این نیست که C# را محدودتر کنند؛ هدف این است که هرجا برنامه‌نویس به حافظه نزدیک‌تر می‌شود، قواعد ایمنی هم شفاف‌تر و قابل اعتمادتر باشند.

https://devblogs.microsoft.com/dotnet/improving-csharp-memory-safety/

@codehalics | کدهالیک
👍2
کدهالیک | codehalic
مایکروسافت در مقاله‌ی جدید .NET توضیح داده که C# قرار است مدل دقیق‌تری برای Memory Safety داشته باشد. در نسخه‌های فعلی، کلمه‌ی unsafe بیشتر یک هشدار کلی است؛ یعنی می‌گوید بخشی از کد ممکن است با حافظه به‌صورت مستقیم یا کم‌سطح کار کند، اما همیشه مشخص نمی‌کند…
نگاه فنی‌تر به Memory Safety جدید در C#


تغییر اصلی اینه که در C# 16، مفهوم unsafe دقیق‌تر می‌شه. قبلاً وقتی روی یک متد unsafe می‌ذاشتیم، یعنی داخلش اجازه داریم با pointer و عملیات سطح پایین کار کنیم. اما مدل جدید بین دو چیز فرق می‌ذاره: APIای که از caller انتظار رعایت شرط ایمنی دارد و بخشی از کد که واقعاً عملیات خطرناک انجام می‌دهد.
مثلاً اگر متدی از caller می‌خواهد pointer معتبر بدهد، خود signature می‌تواند unsafe باشد. اما داخل بدنه، جایی که pointer واقعاً dereference می‌شود، باید با unsafe { } مشخص شود:
public static unsafe byte Read(byte* ptr)
{
unsafe
{
return *ptr;
}
}

اینجا unsafe بیرونی یعنی caller مسئول است pointer معتبر بدهد؛ ولی unsafe داخلی دقیقاً محل دسترسی خطرناک به حافظه را نشان می‌دهد.
چرا این مهم است؟
چون خطر اصلی صرفاً وجود pointer نیست؛ خطر اصلی جایی است که از آن pointer برای خواندن یا نوشتن حافظه استفاده می‌کنیم. مدل جدید کمک می‌کند این نقاط پنهان نمانند، مخصوصاً وقتی با IntPtr، Marshal، NativeMemory یا interop کار می‌کنیم.
همچنین unsafe APIها باید بهتر مستند شوند؛ مثلاً با بخش‌هایی مثل:
/// <safety>
/// Caller must ensure ptr points to valid readable memory.
/// </safety>

این باعث می‌شود در code review دقیق‌تر بفهمیم چه چیزی بر عهده‌ی caller است و چه چیزی داخل متد تضمین شده.

@codehalics | کدهالیک
👍2
یه مقاله جالب توضیح می‌داد چرا شرکت‌های ژاپنی این‌قدر وارد حوزه‌های مختلف می‌شن. مثلاً شرکتی که از توالت و سرامیک شروع کرده، امروز قطعه‌ی حساس برای صنعت نیمه‌هادی می‌سازه.

نکته اینه که این تنوع شانسی نیست. وقتی آدم‌ها سال‌ها داخل یک شرکت می‌مونن، دانش فنی کم‌کم جمع می‌شه، تیم‌ها فقط تخصص باریک ندارن و تجربه بین بخش‌ها پخش می‌شه. نتیجه‌اش اینه که شرکت می‌تونه تخصص قدیمی خودش رو در بازارهای جدید استفاده کنه.

به نظرم تو نرم‌افزار هم همین اتفاق می‌افته. تیمی که فقط با تعویض فریم‌ورک و ابزار جلو می‌ره، مزیت عمیق نمی‌سازه. مزیت واقعی وقتی ساخته می‌شه که تیم domain رو بفهمه، history تصمیم‌ها رو بدونه، codebase رو مثل یک موجود زنده بشناسه و آدم‌ها زودبه‌زود عوض نشن.

شاید مهم‌ترین دارایی یک تیم نرم‌افزاری خود کد نباشه؛ حافظه‌ی جمعی تیمه.

https://davidoks.blog/p/why-japanese-companies-do-so-many

@codehalics | کدهالیک
👍84
یه نفر اومده سراغ یکی از ساده‌ترین چیزهایی که توی نرم‌افزارها مدام اتفاق می‌افته: تبدیل عدد به متن. مثلاً اینکه عدد 123456 بشه «123456». کاری که معمولاً برنامه‌ها انجام می‌دن اینه که عدد رو چند بار تقسیم می‌کنن، رقم‌ها رو یکی‌یکی درمیارن، یا از یه‌سری جدول آماده کمک می‌گیرن. اما ایده‌ی این مقاله این بوده که بیایم این مسیر قدیمی رو دور بزنیم. عدد رو به تکه‌های ۸ رقمی شکسته، بعد با قابلیت‌های جدید پردازنده، چندتا رقم رو هم‌زمان حساب کرده؛ یعنی به‌جای اینکه CPU رقم‌ها رو دونه‌دونه بسازه، همه رو موازی جلو برده. برای این کار هم از AVX-512 و ضرب‌های سریع استفاده کرده تا تقسیم‌های سنگین تا حد زیادی حذف بشن. جالب‌تر اینکه الگوریتم قبل از اجرا یه نمونه‌گیری کوچیک هم می‌کنه تا بفهمه جنس عددها شبیه همه یا نه، بعد خودش مسیر سریع‌تر رو انتخاب می‌کنه. نتیجه‌اش؟ یه کاری که خیلی معمولی به نظر می‌رسه، توی بعضی حالت‌ها زیر دو نانوثانیه انجام می‌شه.


https://onlinelibrary.wiley.com/doi/10.1002/spe.70079

@codehalics | کدهالیک
🔥6❤‍🔥1
ازم پرسید به عنوان یک فرانت اند دولوپر useEffectEvent رو بلدی ؟؟

من بلد نبودم شما یاد بگیرین :

وقتی داخل useEffect نیاز به دسترسی به آخرین مقدار props/state داری ولی نمی‌خوای Effect reconnect بشه.
این هوک دقیقاً برای حل همین مشکل ساخته شده.

https://react.dev/reference/react/useEffectEvent

Abolfazl

@codehalics | کدهالیک
12👍5
بازگشایی اینترنت بین الملل مصوب شد

🔹ستاد راهبری و ساماندهی فضای مجازی صبح امروز دوشنبه (چهارم خردادماه) به ریاست دکتر عارف معاون اول رئیس جمهور تشکیل جلسه داد و بازگشت اینترنت به وضعیت قبل از دی ماه 1404 مصوب شد.

🔹این مصوبه برای رییس جمهور ارسال شد و در صورت تایید رئیس جمهور جهت اجرا برای وزارت ارتباطات ارسال خواهد شد.

@codehalics | کدهالیک
🗿14🤣1
کدهالیک | codehalic
مقاله درباره‌ی یه ایده‌ی خیلی عجیب ولی باحال توی رمزنگاریه: اینکه گاهی «چیزی که نمی‌تونیم ثابت کنیم» می‌تونه خودش تبدیل بشه به ابزار امنیتی. اول از یه مفهوم به اسم اثبات بدون افشای اطلاعات یا Zero-Knowledge Proof شروع می‌کنه؛ یعنی من می‌خوام به تو ثابت کنم…
چند وقت پیش توی کانال درباره‌ی یه مقاله‌ی خیلی باحال از Quanta نوشتم؛ مقاله‌ای درباره‌ی اینکه گاهی «چیزی که نمی‌تونیم ثابت کنیم» خودش می‌تونه تبدیل بشه به ابزار امنیتی. ایده‌اش از Zero-Knowledge Proof شروع می‌شد؛ اینکه بتونی ثابت کنی چیزی رو می‌دونی، بدون اینکه خود اون چیز رو افشا کنی. خلاصه‌ی ساده‌اش این بود که در امنیت، همیشه مسئله فقط این نیست که «چیزی قابل شکستن هست یا نه»، گاهی مسئله اینه که آیا اساساً می‌شه راه شکستن یا ناامن بودنش رو ثابت کرد یا نه.
این چند روز دوباره یاد همون مقاله افتادم، وقتی دیدم هنوز در سال ۲۰۲۶، با این حجم از کراولرها، بات‌ها و ربات‌های اسکمر، بعضی سایت‌ها توی سناریوی Forgot Password خیلی راحت جواب می‌دن: Email Not Found. یعنی اگر من ایمیل یک نفر رو داشته باشم، می‌تونم برم توی مسیر بازیابی رمز عبور و بفهمم آیا اون آدم قبلاً عضو اون سایت بوده یا نه. این دقیقاً همون جاییه که UX Writing فقط مسئله‌ی شفاف‌نویسی نیست؛ مسئله‌ی مرز بین اطلاع‌رسانی کافی و افشای داده‌ی پشت سیستم هم هست.
وقتی محصول به من می‌گه «ایمیل یافت نشد»، در واقع داره فرض می‌کنه من حق دارم این اطلاعات رو بدونم. در حالی که با تقریب خوبی، نه. پیام‌هایی مثل «اگر این ایمیل در سیستم ثبت شده باشد، لینک بازیابی رمز عبور ارسال خواهد شد» شاید از نظر تجربه کاربری کمی گنگ‌تر باشن، اما از نظر امنیت و حریم خصوصی رفتار بالغ‌تری دارن. چون به کاربر واقعی کمک می‌کنن، بدون اینکه به فرد ناشناس اطلاعات اضافه بدن.
ما خیلی وقت‌ها درباره‌ی امنیت محصول به‌عنوان چیزی جدا از حریم خصوصی حرف می‌زنیم، در حالی که این دو در عمل به‌شدت به هم گره خوردن. اتحادیه اروپا درگیر کوکی‌ها و قوانین پیچیده‌ایه که خیلی وقت‌ها به UX آسیب می‌زنن، اما هم‌زمان هنوز چنین مسئله‌های ساده‌ای توی محصول‌ها دیده می‌شه. به نظرم امنیت نباید بعد از حریم خصوصی بیاد؛ امنیت باید طوری طراحی بشه که از همان ابتدا مراقب حریم خصوصی آدم‌ها هم باشد.
همون مقاله‌ی Quanta از یک زاویه‌ی عمیق‌تر می‌گفت گاهی «ندانستن» یا «نتوانستن برای اثبات» می‌تونه بخشی از مدل امنیت باشه. شاید در طراحی محصول هم باید همین‌قدر جدی به این فکر کنیم که چه چیزهایی را اصلاً نباید به کاربر ناشناس بگوییم، حتی اگر گفتنش از نظر UX ساده‌تر و واضح‌تر به نظر برسد.
مقاله باحالیه، اگه نخوندین یه سر بهش بزنین:

https://www.quantamagazine.org/how-unknowable-math-can-help-hide-secrets-20260511/

علت این پست خوندن این پست لینکدین از این دوست عزیزمون بود که بنظرم با یکی از پست های ما که کوت کردم قرابت خوبی داشت

سورس پست لینکدین

@codehalics | کدهالیک
4👀1
متأسفانه نوبرکلاد، یکی از استارتاپ‌های خوش‌فکر و آینده‌دار حوزه کلاد، زیرساخت و خدمات دواپس، نتوانست مسیر فعالیت خود را در شرایط موجود ادامه دهد و به کار خود پایان داد.

نوبرکلاد در مدت فعالیت خود، به‌ویژه با حضور پررنگ در رویداد اخیر ته‌لاگ، نشان داد تیمی جوان، پرانرژی و صاحب نگاه فنی جدی پشت این مجموعه قرار دارد.

پایان مسیر چنین تیم‌هایی همیشه تلخ و قابل تأمل است. برای اعضای نوبرکلاد در ادامه مسیر حرفه‌ای‌شان بهترین‌ها را آرزو می‌کنیم و امیدواریم تجربه و انگیزه این تیم در مسیرهای تازه، دوباره به ثمر بنشیند.

@codehalics |کدهالیک
💔11🕊1😇1
کدهالیک | codehalic
بازگشایی اینترنت بین الملل مصوب شد 🔹ستاد راهبری و ساماندهی فضای مجازی صبح امروز دوشنبه (چهارم خردادماه) به ریاست دکتر عارف معاون اول رئیس جمهور تشکیل جلسه داد و بازگشت اینترنت به وضعیت قبل از دی ماه 1404 مصوب شد. 🔹این مصوبه برای رییس جمهور ارسال شد و در…
فوری

بازگشایی اینترنت بین‌الملل ثابت شروع شد

🔹در پی دستور رئیس جمهور به وزیر ارتباطات برای بازگشایی اینترنت بین الملل: تا ساعت ۱۵ امروز سه شنبه (۵ خردادماه) حاکی از ادامه روند بازگشایی است و توقفی در اجرای حکم رئیس جمهور صورت نگرفته است.

@codehalics | کدهالیک
🕊1
کدهالیک | codehalic
فوری بازگشایی اینترنت بین‌الملل ثابت شروع شد 🔹در پی دستور رئیس جمهور به وزیر ارتباطات برای بازگشایی اینترنت بین الملل: تا ساعت ۱۵ امروز سه شنبه (۵ خردادماه) حاکی از ادامه روند بازگشایی است و توقفی در اجرای حکم رئیس جمهور صورت نگرفته است. @codehalics |…
یه توصیه اکید بهتون دارم اگر که اینترنتتون وصل شد (قاعدتا تا الانم وصل بودید ولی حجم و هزینه اینترنتتون بصرفه نبوده که آپدیت کنین ) اولین کاری که انجام باید بدید آپدیت کردن همه دیوایس هاتونه چون توی این ۹۰ روز تا دلتون بخواد زیرو دی اومده
هم سرور ها هم گوشی موبایل و هر چیزی که آپدیت میگیره رو آپدیت کنید حتما !
مخصوصا سرویس هایی که این چند وقت شنیدید که هک شدن مثل پنل های هاست و ...

@codehalics | کدهالیک
8
یه پست بامزه و جالب امروز راجب به استفاده از ai دیدم که ترجمش رو براتون میزارم حس و حال های مشترکی با خود من داره و همینارو منم حس کردم و جالب بود !

از حرف زدن با هوش مصنوعی خسته شده‌ام.

چند ریپازیتوری در GitHub پیدا کردم که بدافزار پخش می‌کردند. از AI پرسیدم باید چه کار کنم، اما جواب مفیدی نداد. بعد در GitHub یک بحث باز کردم. کسی جواب داد، اما دقیقاً همان متن AI بود. وقتی گفتم، کامنت حذف شد. نفر بعدی هم دوباره همان پاسخ AI را فرستاد.

در یک شرکت هم از مدیر یک سؤال کاری پرسیدم. به‌جای جواب، اسکرین‌شات ChatGPT فرستاد. گفتم ربطی به سؤال من ندارد و اشتباه است. یک دقیقه بعد دوباره اسکرین‌شات دیگری فرستاد، بدون اینکه حتی جواب را بخواند.

اخیراً هم در Reddit با کسی در حال گفتگو بودم، اما بعد از چند پیام فهمیدم دارم با یک AI صحبت می‌کنم.

مشکل فقط AI نیست؛ این است که آدم‌ها هم دیگر فکر نمی‌کنند، فقط پاسخ AI را کپی می‌کنند و می‌فرستند.

از حرف زدن با AI خسته شده‌ام. می‌خواهم با انسان‌ها صحبت کنم.


https://orchidfiles.com/im-tired-of-ai-generated-answers/

@codehalics | کدهالیک
👍11
یه باگ امنیتی مهم توی FastAPI (و Starlette) وجود داره که باعث میشه با دستکاری هدر Host، مسیر درخواست جعلی ساخته بشه و در بعضی حالت‌ها بشه احراز هویت یا دسترسی به APIها رو دور زد.

https://badhost.org/

@codehalics | کدهالیک
2
کلودفلر یه فیچری داده بیرون به اسم Cloudflare Flagship یک سرویس مدیریت Feature Flag است که به توسعه‌دهنده‌ها اجازه می‌دهد قابلیت‌های نرم‌افزار را بدون نیاز به انتشار مجدد کد کنترل کنند. با استفاده از آن می‌توان فیچرها را برای درصدی از کاربران فعال کرد، به‌صورت مرحله‌ای rollout انجام داد یا بر اساس قوانین و ویژگی‌های کاربر آن‌ها را محدود یا فعال کرد. این سرویس با Cloudflare Workers و استاندارد OpenFeature سازگار است و امکان مدیریت ساده و انعطاف‌پذیر ویژگی‌های اپلیکیشن را فراهم می‌کند.

https://developers.cloudflare.com/flagship/

پ.ن : این ویژگی از چند وقت پیش برای عده ای فعال شده بود ولی الان وارد فاز پابلیک بتا شده !

@codehalics | کدهالیک
Forwarded from کار باشه !
فرصت ریلوکیشن به ارمنستان

WE'RE HIRING — Senior Angular Developer (Yerevan · Hybrid · Visa & Relocation Support)

ArgusRecruit · Many Eyes. One Purpose.

We're recruiting on behalf of an international software company on a confidential basis. They're looking for a Senior Angular Developer to own architecture decisions and shape the frontend of a product used across multiple markets.

📍 Yerevan, Armenia · 🏢 Hybrid · 💼 Senior · Full-time
🌍 Visa sponsorship and relocation support available for international candidates
🇬🇧 English required

What you'll do:
• Design and develop production-grade frontend applications using Angular (v14+)
• Optimize for speed, responsiveness, and cross-device performance
• Build type-safe API consumption layers
• Implement security and accessibility (A11y) standards
• Conduct code reviews and support the full development lifecycle
• Mentor mid-level engineers and shape frontend architecture

What we're looking for:
• 6+ years in frontend development with strong Angular focus
• Expert-level TypeScript, RxJS, and state management (NgRx)
• Component libraries and design systems experience
• Strong responsive design and A11y standards
• Unit testing (Jasmine/Jest) and E2E testing (Cypress/Playwright)
• Git with collaborative workflows
• Fluent English

This is a senior, hands-on role for someone who cares about clean component architecture and the boring parts — testing, code reviews, accessibility — not just shipping features.

— Where ambitious talents meet exceptional employers —

👉 Apply confidentially: https://lnkd.in/d5UzDKp4


#relocation #frontend


💬 @job_bashe | گروه کار باشه با دسته بندی شغلی
📢 @karbashe_ir | کانال کار باشه
3
کار باشه !
فرصت ریلوکیشن به ارمنستان WE'RE HIRING — Senior Angular Developer (Yerevan · Hybrid · Visa & Relocation Support) ArgusRecruit · Many Eyes. One Purpose. We're recruiting on behalf of an international software company on a confidential basis. They're looking…
توی کانال دوممون یعنی کار باشه جاب آفر های سطح لینکدین و توییتر و جاهایی که توی جابینجا و جاب ويژن نیستن ولی میتونین مستقیم براشون اپلای کنید رو میزاریم

اگر مایل بودید حتما به کانال دوممون هم جوین بشید !

تمام تلاشمون اینه که افرادی که تعدیل شدن رو زودتر بفرستیمشون سرکار

@karbashe_ir
6
یه سری بحث‌ها درباره .NET 11 هست که می‌گن مدل async/await قراره یه تغییر جدی تو معماریش داشته باشه؛ یعنی بخشی از کارهایی که قبلاً Roslyn انجام می‌داد (مثل ساخت state machine و مدیریت await) بیشتر منتقل می‌شه به خود runtime و CoreCLR. تو این مدل جدید، به‌جای اینکه وضعیت‌های async مثل قبل هی برن روی heap و فشار GC زیاد بشه، گفته می‌شه اجرای این حالت‌ها به runtime نزدیک‌تر و بهینه‌تر می‌شه تا allocation کمتر بشه و performance تو سناریوهای سنگین async بهتر دربیاد و latency هم پایین‌تر بیاد. حتی بعضیا می‌گن دیباگ و trace هم تمیزتر می‌شه چون اون همه MoveNext و state اضافی کمتر دیده می‌شه؛ البته فعلاً بیشتر در حد بحث و پیش‌نمایشه و باید دید واقعاً تو نسخه نهایی چطور پیاده می‌شه.

#.Net11

@codehalics | کدهالیک
3👍2
بیاید یه لایف هک توی لینوکس بهتون یاد بدم

تازه فهمیدم nala چقدر از apt بهتره.
عملاً همون کارای apt رو انجام میده ولی خروجی تمیزتره، سرعت دانلود بهتره، mirror مناسب پیدا می‌کنه و موقع نصب پکیج‌ها آدم واقعاً می‌فهمه داره چه اتفاقی میفته.
مثلاً به‌جای این:
sudo apt install nginx
الان اینو می‌زنم:
sudo nala install nginx
ظاهر خروجی خیلی مرتب‌تره، dependencyها واضح‌تر نمایش داده میشن و حس مدرن‌تری داره.
ترکیبش با screen هم عالیه؛
یه سشن باز می‌کنی، آپدیت رو می‌ذاری اجرا شه و حتی اگر SSH قطع شد چیزی از دست نمیره.
از اون ابزاراییه که بعد از استفاده، برگشتن به apt یکم سخت میشه.

همه کامند هایی که با apt میزنین با nala هم میتونین بزنین مثلا nala upgrade
اولش یه اسکرین بسازین توش دستورارو بزنین و بعد دیتچ کنین و برید پی کارتون خودش پشت زمینه کل سیستم اپدیت میکنه بدون که بخواد سیشن ssh شما روش تاثیری داشته باشه !

@codehalics | کدهالیک
7👍4🆒1
بابک تو خیلی بامزه ای این چیه تو پنلت گذاشتی مگ ClashOfClans عه ؟ :))))))))))))))))

@codehalics | کدهالیک
😁15👎1🐳1😭1
کدهالیک | codehalic
بابک تو خیلی بامزه ای این چیه تو پنلت گذاشتی مگ ClashOfClans عه ؟ :)))))))))))))))) @codehalics | کدهالیک
یه بارم تو ی بیزینسی میدیدم که کاربر میخواد شارژ بخره هر بار که میخواد بخره ۱۲ بار ریکوست میزنه حداقل اخرم هیچ کدوم نمیخره ورداشتن ایپیشو بلاک کردن
بعدا فهمیدیم رو دکمه مادر مرده خرید که میرفت به درگاه لودینگ نزاشته بودن بعد خیلی دیر میرفت درگاه طرف هی ریکوست میزد چرا این لامصب نمیره تو درگاه !
نمیدونم چقد مرتبط بود این داستان ولی واقعا یه سری از اینایی ک زیاد ریکوست میزنن گندکاریای خودمون توی اپلیکیشنه
ما ک اونو بلاک کردیم ولی یاد گرفتیم واس این کارا یه کلید یونیک بسازیم برای یه کاربر توی ردیس که سیصد بارم زد نره سیصد تا تراکنش بسازه که بعدا بخوایم بلاکش کنیم چون‌اپ موبایل بود نمیشد دیگ ریلیز بدیم درستش کنیم اینو !

@codehalics | کدهالیک
😁9