cookie

We use cookies to improve your browsing experience. By clicking «Accept all», you agree to the use of cookies.

avatar

Sonia Software Notes

A software engineer journey. GitHub : https://t.ly/_RJr

Show more
Advertising posts
1 238
Subscribers
+224 hours
+37 days
No data30 days

Data loading in progress...

Subscriber growth rate

Data loading in progress...

نکته جالبی که امروز بهش برخوردم فیلتر بودن میرور deb.debian.org بود :) واقعا بعضی وقتا یک سری اتفاقات جالب میوفته که آدم با فهمیدنش شاخ در میاره.
Show all...
Repost from Golang Insights
Photo unavailableShow in Telegram
✅ یا فلت فلت باش یا ساختار دهی کن!!! زمانی که یک پروژه یا پکیج جدید در زبان Go شروع می‌کنیم، اولین سوالی که پیش می‌آید این است که ساختار یا layout پروژه چگونه باید باشد؟ در زبان Go، هر پوشه یا دایرکتوری می‌تواند به عنوان یک package در نظر گرفته شود. وقتی کدی را در این محدوده می‌نویسید، این کد می‌تواند به طور مستقل از بقیه پروژه تست شود و همچنین به لحاظ دسترسی‌های public/private مدیریت شود. داشتن یک ساختار منظم برای پروژه بسیار مهم است، اما از همه مهم‌تر این است که بتوانید به گونه‌ای ساختاردهی کنید که به مشکلاتی مانند import cycle برنخورید. سوالی که برای برخی مطرح است این است که آیا ساختار فلت (flat) خوب است یا نه؟ شاید از دیدگاه بعضی افراد، فلت بودن نشانه‌ای از کمبود دانش فرد در ساختاردهی پروژه باشد، اما باید بدانید که فلت بودن مزایای خاص خود را دارد. البته این مزایا بیشتر در نوشتن پکیج‌ها قابل مشاهده است تا در برنامه‌های اجرایی؛ زیرا در برنامه‌های اجرایی که دارای main هستند، ممکن است با مشکلاتی مواجه شوید. اما برای نوشتن پکیج‌ها، فلت بودن ساختار بسیار مفید است و آزادی بیشتری برای نوشتن یک پکیج خوب به شما می‌دهد. پس به طور کلی، فلت بودن ساختار برای پکیج‌ها می‌تواند بهتر از داشتن یک ساختار پیچیده باشد. ➖➖➖➖➖➖➖➖ ☄️ @GoInsights | @GolangEngineers
Show all...
👍 7 1
Show all...
 یاشو (@voorivex) on X

۱۰ روز پیش امیر به ۳ تا از بات‌های ناشناس نفوذ کرد و صحنه‌هایی دیدیم که شکه شدیم، از ۱۴ میلیون یوزر، ۴۵۰ میلیمون چت، ۱۱ میلیون عکس و ۳ میلیون ویدیو ذخیره شده بود! یه فیچر داشت که یه یوزر رو flag می‌کرد، یعنی هر موقع پیغامی به شخص ارسال میشد طرف می‌فهمید /

https://t.co/mogujfHd2N

🤯 9👎 3😁 1
Repost from N/a
Show all...
ریپو‌های مهم GitHub که هر مهندس نرم‌افزار باید بداند. - ویرگول

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

Intel is laying off over 15,000 employees and will stop ‘non-essential work’ / After losses, the chipmaker is cutting $10 billion in costs. https://www.theverge.com/2024/8/1/24210656/intel-is-laying-off-over-10000-employees-and-will-cut-10-billion-in-costs
Show all...
Intel is laying off over 15,000 employees and will stop ‘non-essential work’

That’s a lot of layoffs.

😨 6😁 1
Photo unavailableShow in Telegram
💋 7👍 5🥰 5
Show all...
Tavis Ormandy (@taviso) on X

This strange tweet got >25k retweets. The author sounds confident, and he uses lots of hex and jargon. There are red flags though... like what's up with the DEI stuff, and who says "stack trace dump"? Let's take a closer look... 🧵1/n

Null pointer dereference همین یه مسئله ساده باعث شد کل سیستم های ویندوزی که‌ سکوریتی پچ رو دریافت کردن BSOD بخوره و سهام مایکروسافت و کراود استرایک به شدت افت کنه به همین سادگی.
Show all...
😁 3 1👎 1
Repost from Golang Insights
Photo unavailableShow in Telegram
تحلیل BSOD پتچ امنیتی CrowdStrike مشکل اصلی که در نرم‌افزار CrowdStrike رخ داد، به دلیل دسترسی نادرست به حافظه از طریق یک اشاره‌گر تهی (NULL pointer) در زبان برنامه‌نویسی C++ بود. حافظه در کامپیوتر به صورت یک آرایه بزرگ از اعداد سازماندهی شده است. اگر برنامه‌ای تلاش کند به یک آدرس حافظه نامعتبر دسترسی پیدا کند، سیستم‌عامل بلافاصله برنامه را متوقف می‌کند و این موضوع منجر به خرابی سیستم می‌شود. در این حالت خاص، برنامه سعی کرد به آدرس حافظه 0x9c (که معادل 156 در مبنای 10 است) دسترسی پیدا کند. این آدرس حافظه نامعتبر است و دسترسی به آن باعث می‌شود که سیستم‌عامل برنامه را متوقف کند. این مسئله به دلیل عدم بررسی اشاره‌گر تهی توسط برنامه‌نویس اتفاق افتاد. برای مثال:
struct Obj {
    int a;
    int b;
};

Obj* obj = NULL;

print(obj->a);
در این مثال، اشاره‌گر obj تهی (NULL) است. هنگامی که برنامه سعی می‌کند به عضو a از شیء obj دسترسی پیدا کند، به دلیل تهی بودن اشاره‌گر، به یک آدرس نامعتبر دسترسی پیدا می‌کند و باعث خرابی برنامه می‌شود. این مشکل به‌خصوص خطرناک بود زیرا در یک درایور سیستمی رخ داد. درایورهای سیستمی دسترسی‌های سطح بالایی به منابع سیستم دارند و خرابی در این درایورها می‌تواند منجر به توقف کل سیستم‌عامل و نمایش صفحه آبی مرگ (BSOD) شود. برای جلوگیری از چنین مشکلاتی، برنامه‌نویسان باید همیشه قبل از دسترسی به اشاره‌گرها، آن‌ها را بررسی کنند. استفاده از زبان‌های برنامه‌نویسی مدرن مانند Rust که از دسترسی‌های نادرست به حافظه جلوگیری می‌کنند، می‌تواند به کاهش این خطرات کمک کند. ➖➖➖➖➖➖➖➖ ☄️ @GoInsights | @GolangEngineers
Show all...
👍 11😁 3
Photo unavailableShow in Telegram
Show all...
👍 12😁 4 1🍓 1
Choose a Different Plan

Your current plan allows analytics for only 5 channels. To get more, please choose a different plan.