Sonia Software Notes

@sonianotes


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

Sonia Software Notes

23 Oct, 06:14


یه پروژه ios هست و نیازمند یه برنامه نویس سویفت یا فلاتر هستیم اگه کسی رو میشناسین تو همین قسمت کامنت بگین

#موقت

Sonia Software Notes

18 Oct, 09:46


۲ عدد عجوبه.

Sonia Software Notes

11 Oct, 23:44


The End.

Sonia Software Notes

24 Aug, 05:59


یا فلت فلت باش یا ساختار دهی کن!!!


زمانی که یک پروژه یا پکیج جدید در زبان Go شروع می‌کنیم، اولین سوالی که پیش می‌آید این است که ساختار یا layout پروژه چگونه باید باشد؟

در زبان Go، هر پوشه یا دایرکتوری می‌تواند به عنوان یک package در نظر گرفته شود. وقتی کدی را در این محدوده می‌نویسید، این کد می‌تواند به طور مستقل از بقیه پروژه تست شود و همچنین به لحاظ دسترسی‌های public/private مدیریت شود.

داشتن یک ساختار منظم برای پروژه بسیار مهم است، اما از همه مهم‌تر این است که بتوانید به گونه‌ای ساختاردهی کنید که به مشکلاتی مانند import cycle برنخورید.

سوالی که برای برخی مطرح است این است که آیا ساختار فلت (flat) خوب است یا نه؟

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

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



☄️ @GoInsights | @GolangEngineers

Sonia Software Notes

17 Aug, 22:51


https://x.com/voorivex/status/1824895457111474350

Sonia Software Notes

02 Aug, 14:53


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

Sonia Software Notes

21 Jul, 13:11


https://x.com/taviso/status/1814762302337654829

Sonia Software Notes

21 Jul, 08:29


Null pointer dereference
همین یه مسئله ساده باعث شد کل سیستم های ویندوزی که‌ سکوریتی پچ رو دریافت کردن BSOD بخورن و سهام مایکروسافت و کراود استرایک به شدت افت کنه

به همین سادگی.

Sonia Software Notes

21 Jul, 08:21


تحلیل 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

Sonia Software Notes

19 Jul, 12:12


https://x.com/githubprojects/status/1814208575985664083

Crowdstrike devs need this feature :)

Sonia Software Notes

15 Jul, 08:52


به مناسبت تعطیلات تیم لاراول هم سایتشون رو بستن :))

Sonia Software Notes

12 Jul, 11:38


پ.ن :
ادیتور خوبیه ولی هنوز خیلی مونده که به محصولات jetbrains یا vscode برسه.

Sonia Software Notes

12 Jul, 11:34


Zed, GPU-accelerated IDE Written in Rust
https://zed.dev/

Zed is GPU-accelerated (by way of the Vulkan API). Combined with the editor’s Rust underpinnings, this editor boasts blazingly fast startup times, can open large files/projects instantly, and benefits from lower input latency than rival editors, like VS Code.

Plus, Zed provides in-app integration with OpenAI’s ChatGPT (and Copilot on macOS builds). Once a valid API key is entered, users can quickly generate new code from prompts, refactor code entered by GPT’s archaic ancestor (a human); and troubleshoot issues.

Release Builds for Mac & Linux :
https://zed.dev/download

#editor
#ai
#rust

Sonia Software Notes

06 Jul, 17:44


✔️فیکدین!


▪️به نظرم این روزها اثر سوءروانی لینکدین، کمتر از اینستاگرام نیست. اگر در اینستاگرام شوآف و خوشبختی‌نمایی و خودشیفتگی موج میزند، در لینکدین، اغراق و خودبزرگ‌نمایی و توهم دانش جولان میدهد.

▪️یکی از دوستان دایرکت داده که «من میترسم تو لینکدین محتوا بذارم از بس همه خفن و حرفهای هستن، همش فک میکنم نکنه یه جای کارم یا چیزی که می‌نویسم ایراد داشته باشه و دچار ایده‌آل گرایی شدم نمی دونم چکار کنم».

◾️دوستان عزیز، گول تایت‌لهای بزرگ و عناوین پر زرق و برق و عکسهای آنچنانی فضای کاری را نخورید، شما فقط افراد را براساس دانش و کیفیت محتوایی که با شما به اشتراک میگذارند قضاوت کنید. بارها دیده‌ام که فلان مدیر در فلان شرکت بنام، از لحاظ دانش تخصصی از یک کارشناس آن حوزه کمتر بوده و از سر شانس و ارتباطات در رأس یک کمپانی نشسته است.

▪️دوستان عزیز نه دچار خودکم‌بینی شوید و نه مدام مسیر شغلی خودتان را با دیگران مقایسه کنید، اینجا جای خاصی نیست به جز فیکدین و همانند تمامی شبکه‌های اجتماعی، آنچه می‌بینید، در اکثر مواقع با واقعیت فرسنگ‌ها فاصله دارد.

✍️ Hiva Mirzaei

Sonia Software Notes

04 Jul, 08:17


OpenAI Drops ChatGPT Access for Users in China, Russia, Iran

https://www.bankinfosecurity.com/openai-drops-chatgpt-access-for-users-in-china-russia-iran-a-25631

Sonia Software Notes

25 Jun, 09:22


Dto (Data transfer object) mapper

dto-mapper is an easy-to-use library for complex struct mapping. It's intended for the creation of data transfer objects, hence the name.

When working with database relations and ORMs, you often fetch more data than needed. One could create subtypes for all kinds of queries, but this is not suitable for quick prototyping. Tools like go-funk and structs make your mapping code less verbose, but you still have to write it.

dto-mapper requries only a declaration and contraty to many other struct mappers uses only name-based field resolution, works with arbitrary deep structures, slices, maps, poiners, embedded structs, supports custom conversion functions and error handling.

https://github.com/dranikpg/dto-mapper

#dto
#golang_library

Sonia Software Notes

24 Jun, 19:30


Clean Architecture

Clean architecture isn't revolutionary. You need to follow one crucial principle: inner layers can't reference outer layers. Essentially, we're applying dependency inversion on the application level. Inner layers define abstractions, and outer layers implement these abstractions.

You can package Clean Architecture across multiple projects. This is the most common approach with a Domain, Application, Infrastructure, and Presentation project.

However, you can also group components for a single feature together. This is called a vertical slice, and it improves the cohesion of your design.

What are the benefits of Clean architecture?

- Modularity
- Separation of concerns
- Testability of business logic
- Improved team productivity
- Loose coupling of components


☄️ @GoInsights | @GolangEngineers

Sonia Software Notes

05 Jun, 16:57


Channel name was changed to «Sonia Software Notes»