EverCode
252 subscribers
64 photos
3 videos
4 files
96 links
اینجا راجب کامپیوتر، نرم افزار، زبان‌ها و مطالب مرتبط با هم گپ میزنیم

سایت و بلاگ:
mazdakparnian.com

dev.to/purejoymind

هم توی سایت شخصیم و هم توی دِو بلاگ هام رو میزارم.
Download Telegram
‏احتمالا کلیت اینکه وقتی یه ریکوئست زده میشه، از DNS و TCP تا رسیدن به سرور و گرفتن ریسپانس چه اتفاقی میفته رو میدونین. ولی اگه دوست داشتین این پروسه رو با دیتیل بیشتری بفهمینش به نظرم این سایت رو حتما چک کنین چون خیلی دقیق و خیلی پرجزییات این فرآیند رو براتون توضیح میده

https://200ms.thenodebook.com/

@codehalics | کدهالیک
خب این چندوقته درگیر راه اندازی و شخصی سازی سیستم بودم. گفتم بهتون یه بخشی از فضا رو نشون بدم.
فعلا در حال نصب بازی ام تا ببینم میشه یا نه. ولی درکل خیلی ازش راضی ام. هم راحت میشه تم و صفحه و اینا رو کاستوم کرد.
هم سرعتش بهتره، هم هرچی میخوام تقریبا هست روش. یکم باید حواسم باشه که چیا نصب میکنم ولی فعلا اوکی بوده.

یه قسمت روی اینکه چیکارا باید بعد نصب اولیه Fefora بکنیم شاید برم (اگه وقت کنم بنویسم 😢)

@ever_code
این مدت خودم رو درگیر یه پروژه جالب کردم، اومدم برای خودم با دات نت یه دانلود منیجر نوشتم.
اول Core اش رو به لحاظ فنی برای کلود توضیح دادم، بعد کم کم فیچرهای اولیه رو به core اضافه کردم. بعد که دیگه آماده بود و کار میکرد امروز با استفاده از Avalonia دادم اپش رو نوشت، تا اینجا جالب بوده. قسمتی که کارو راحت کرد این بود که Avalonia یه mcp خوب داره که ایجنت راحت میتونه باهاش کار کنه.
کم کم کامل تر که بشه سورسش رو میزارم.
فیجرهایی که تا اینجا داره:
* تقسیم فایل برای افزایش سرعت دانلود
* توقف/ادامه دانلود، اول بایت های دانلود شده رو توی فایل با پسوند خاص نگه میداره که بعدا هم راحت بتونه ادامه بده.
* تنظیم سرعت دانلود
* تنظیمات Retry و Timeout


@ever_code
❤2👍1🔥1
امروز خیلی روی دانلود منیجر کار کردم، چون ابزاریه که میخوام خودم استفاده کنم، و مدام فیچرها و تجربه کاربری رو دستکاری کردم تا به اون چیزی که میخوام نزدیک تر بشه، از طرفی نکات خاصی هم هست برای آماده کردنش برای پروداکشن که اونا هم اضافه کردم به مرور، مثلا Crash log و راحت کردن ثبت issue توی github، و ازین دست کارها. به زودی فکر کنم بتونم نسخه اولیه رو روی github بزارم.

خودم با System Tray Icon اش حال کردم و بنظرم بد نشد. بالای صفحه سمت چپ میتونید ببینید. فایلهای درحال دانلود رو نشون میده با درصد دانلود شده.

اگه میخواین یه Cross-Platform App بسازین، بشدت Avalonia رو توصیه میکنم، قبلا هم توی کانال راجبش صحبت کردم کمی و سرچ کنین براتون میاد. از طرفی یه MCP خیلی تر و تمیز داره که Claude Code خیلی خوب باهاش کار کرد و پروژه استاندارد و تمیزی زد باهاش نسبتا، UI حدودا یک روز کاری فقط زمان برد، با وسواسی که من داشتم البته.

اینکه یاد بگیریم خودمون رو جای end user بزاریم چیزیه که با تجربه به دست میاد، پروژهای اینطوری که خودمون میخوایم استفاده کنیم تمرین خیلی خوبیه برای اینکه این تجربه رو کسب کنیم.

@ever_code
❤5👍2
بنظرم این ویدیوی Jetbtains Academy ارزش دیدن داره:

https://youtu.be/DkhhE97Swmo?is=q1pFuADsmRbSfzuo

توی دورانی که هوش مصنوعی درصد زیادی از تفکری که قبلا ما انجام میدادیم رو به دوش گرفته، نباید یادمون بره یادگیری واقعی چه شکلیه، توی مغزمون چه مراحلی طی میشه، و وقتی همه‌ی سوالاتمون رو هوش مصنوعی جواب میده چه عواقبی داره!

@ever_code
❤3🔥1
این چند وقته که از 9router استفاده میکردم، بعد از یه سری آپدیت‌های اخیر Claude Code دچار کندی میشد. تو آپدیت‌های اخیر Claude Code باعث مسشد اگه نتونه مستقیم به سرور اصلی وصل بشه Context Window رو خیلی محدود و کوچیک میکنه، برای همین وسط کار خیلی سریع به محدودیت میخوره و همش Compact انجام میده.
وقتی از روی روتر سوییچ کردم روی حالت عادی، مشکلات حل شد و کلا به محدودیت Context نخوردم.

@ever_code
👍2
https://woodruff.dev/beyond-boundaries-is-getting-a-major-update-for-net-11-and-c-15/?via=dailydev

نویسنده‌ی کتاب آنلاین Beyond boundaries اعلام کرده که به زودی مطابق با آخرین نسخه‌ی دات نت کتابشو به روز میکنه.
این کتاب یکی از مراجع فوق العاده برای برنامه‌نویسی شبکه، و کارهای مربوط به شبکه توی دات نت هست. البته در نظر داشته باشین که وقتی میگیم برنامه نویسی شبکه، بخش قابل توجهی از کارهای Backend هم شاملش میشه و اسمش شاید ترسناک باشه.
نگاهی به این مقاله بندازین متوجه میشین منظورم چه چیزهاییه.

@ever_code
👍2
راجب این پست نبی:

https://t.me/thisisnabi_dev/1611

هنوز توی کامیونیتی خارجی زیاد میبینم که گارد شدیدی به ai دارن. خیلیا رو دیدم توی فوروم‌ها که میگن ما توی ریپو اسم Claude میبینیم، ندید ازش میگذریم.

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

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

این تفکیک مهمه، چون اگر پروژه براتون اهمیت داشته باشه، چه از لحاظ فنی، چه از لحاظ کسب و کاری، اگر بخواین تو جامعه خارجی نشون بدین، این تفکیک ارزش پروژه رو مشخص میکنه.

@ever_code
❤1
امروز یکی از دوستام با این متد "هک" شد. شماها که فنی هستین و احتمالا متوجه میشین، ولی خیلی مهمه که به اطرافیان و خانواده که بلد نیستن اصول مراقبت آنلاین رو یاد بدین تا این موارد پیش نیاد. اینجور اپ‌ها چیز پیچیده‌ای نیستن، صرفا از بی توجهی و یا ندونستن کاربر سو استفاده می‌کنن. حالا این یکی رو که من میرم Decompile میکنم دیتاشو در میارم میدم فتا، ولی مراقب اطرافیانتون باشین خلاصه.

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

@ever_code
👍2😁1🌚1
جا داره ازینکه tls certificate سایت رسمی پلیس فتا منقضی شده ابراز نگرانی کنم :)

@ever_code
🤣6
بیاین کمی راجب Memory Allocation حرف بزنیم!
میدونیم توی سی شارپ، String ها نوع خاصی از داده هستن. با اینکه Reference Type هستن ولی مثل Value Type رفتار میکنن. بخاطر کار زیاد باهاشون و خاص بودنشون، توی Heap یه قسمت خاص براشون در نظر گرفته شده. String ها پشت صحنه یجورایی یه آرایه از کاراکتر هستن، به همین خاطر چون تغییر دادنشون عملیات سنگینیه، Immutable ان و اگر تغییرش بدین، یک String جدید ساخته میشه.
تا اینجای مطلب رو به احتمال زیاد میدونستین یا راجبش شنیده بودین.
شاید تا حالا اسم تایپ Span یا Memory و امثالشون رو دیده باشین. بخصوص توی نسخه های اخیر دات نت توی Standard Library ها بیشتر دیده میشن.
اگر ما بخوایم یه بخشی از یه String رو بخونیم، باید slice یا split اش بکنیم و ازونجایی که گفتیم نمیشه به String دست زد، یعنی هرباری که اینکاری میکنیم داریم String جدید ایجاد میکنیم (Memory Allocation). و یعنی اگر یه لیستی از String ها داشته باشیم و بخوایم روی هر کدوم عملیات تغییر کننده انجام بدیم، به تعداد کل لیست، حافظه جدید اشغال میشه. توی تعداد کم، مثلا تا 100 هزارتا و یا شاید 1 میلیون تا، بسته به سیستم، شاید بشه چشم پوشی کرد. اما اگه تعداد بالا بره، حافظه پر میشه و ممکنه برنامه crash کنه.
خب چطوری میتونیم Memory Allocation رو پایین بیاریم؟ باید به یه روشی بتونیم یه بخشی از یه String رو بخونیم بدون اینکه بخوایم تغییرش بدیم، ازونجایی که String پشت صحنه یه آرایه ست، با استفاده از Span میتونیم بصورت مستقیم به بخشی ازون آرایه دسترسی داشته باشیم و دیگه حافظه جدید اشغال نکنیم!
حالا واقعا خود Span و Memory چی هستن؟ به ما دسترسی مستقیم به حافظه هر لیستی میدن بدون اینکه حافظه بیشتری اشغال بشه، و با توجه به ماهیت String میشه روی اون هم ازشون استفاده کرد.

توی این مقاله از خود مایکروسافت میتونین بهتر باهاشون آشنا بشین:
https://learn.microsoft.com/en-us/dotnet/standard/memory-and-spans/memory-t-usage-guidelines

اما میخوام بهتون تفاوت پرفورمنس رو نشون بدم.
من یه لیست از 10 میلیون String توی یه فایل دارم و بعد از خوندنش با استفاده از LINQ میام هر آیتم رو split میکنم، قسمت اول و دوم رو جدا میکنم و توی یه آبجکت ذخیره میکنم. روی سیستم من این نتیجه رو داد:
Performance:
Rows: 10,000,000
Stations: 413
Elapsed: 00:00:06.4921942
Throughput: 1,540,311 rows/sec (36.72 MB/sec)

Memory:
Working Set: 1,582 MB
GC Memory: 1,357 MB
Gen0 Collections: 169
Gen1 Collections: 169
Gen2 Collections: 10


حالا همین تست رو میام با روشی مینویسم که Memory Allocation کمتر داشته باشه، و از طرفی از Span هم استفاده بکنه و نتیجه شد این:
Performance:
Rows: 10,000,000
Stations: 413
Elapsed: 00:00:01.8735861
Throughput: 5,337,358 rows/sec (127.25 MB/sec)

Memory:
Working Set: 778 MB
GC Memory: 750 MB
Gen0 Collections: 47
Gen1 Collections: 47
Gen2 Collections: 8


البته باید بگم که برای این پست نیومدم روش کامل بهینه سازی رو انجام بدم. فقط اون قسمت مربوط به Memory Allocation توی لوپ اصلی رو بهتر کردم و توی هردو تست کل فایل رو یک جا خوندم و پردازش کردم. که این خودش یه عالمه جابجایی انجام میده. توی مرحله بعدی، حتی قسمت خوندن از فایل هم بهینه کردم و نتیجه شگفت انگیز شد:
Performance:
Rows: 10,000,000
Stations: 413
Elapsed: 00:00:01.1981524
Throughput: 8,346,184 rows/sec (198.99 MB/sec)

Memory:
Working Set: 54 MB
GC Memory: 4 MB
Gen0 Collections: 42
Gen1 Collections: 2
Gen2 Collections: 2


یعنی برای 10 میلیون خط فقط 54 مگابایت توی حافظه نگه میداره! درحالی که توی تست قبلی حدودا 1 و نیم گیگابایت درگیر بود!
اینجا اومدم فایل رو Stream کردم بجای اینکه کامل بخونم که باعث میشه فقط اون بخشی از فایل که میخوام رو بیاره توی حافظه و وقتی کارش تموم شد بده بره.

@ever_code
❤2🔥2👍1
اگه تو زیرساختتون از Keycloak برای احراز هویت استفاده می‌کنید سریع‌تر دست‌به‌کار بشید چون یه آسیب‌پذیری خیلی بحرانی با نمره ۹.۱ کشف شده که تو این باگ، هکر بدون نیاز به هیچ دسترسی یا تایید ایمیل و فقط با دونستن یوزرنیم یا ایمیل ادمین، می‌تونه لاگین بازیابی رمز عبور رو دور بزنه و مستقیم پسوورد اکانت رو عوض کنه تا به تمام سیستم‌های پشت Keycloak دسترسی پیدا کنه. تمام نسخه‌های زیر ۲۶.۷.۲ آسیب‌پذیرن و اگه الان شرایط ارتقا به نسخه ۲۶.۷.۲ رو ندارید، حتماً همین امروز قابلیت Forgot password رو از تنظیمات Realm به صورت موقت خاموش کنید.

https://fireup.pro/news/keycloak-cve-2026-18963-critical-password-reset-flaw?via=dailydev

@codehalic | کدهالیک
❤1
یه سری تغییرات اساسی توی UI/UX دانلود منیجیر دادم.
خودم روتین ازش استفاده میکنم و مدام سعی میکنم بهترش کنم. جدا از اون خیلی نحوه‌ی کارم با کلود توی این پروژه بهتر شده. میشه گفت از Spec-driven گذر کردم و بنظرم هرجایی خوب نیست.
برای ui براش sketch میکشم خودش میسازه و تست میکنه، ولی باید پخته‌ترش کنم و برم از selenium یا ابزارهای مشابه استفاده کنم تا تمیزتر تست کنه خودش. الان با پایتون و screenshot گرفتن تست میکنه و موس رو حرکت میده.
در کل پروژه روند جالبی گرفته.
با اینکه تو گیتهابم هست، ولی هنوز لانچ رسمی نکردم. منتظرم به یه استیت خاصی برسه و یه سری فیچر مونده که از دانلود منیجر انتظار میره داشته باشه. البته اگه الان دانلود کنید، خود اپ قابلیت auto update داره و میتونید توی این مسیر همراه باشید و آپدیت‌ها رو دریافت کنید. میتونید تو تنظیماتش فعالش کنید.

@ever_code
❤1👍1👌1