EverCode – Telegram
EverCode
96 subscribers
27 photos
3 videos
3 files
49 links
اینجا راجب کامپیوتر، نرم افزار، زبان‌ها و مطالب مرتبط با هم گپ میزنیم

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

dev.to/purejoymind

هم توی سایت شخصیم و هم توی دِو بلاگ هام رو میزارم.
Download Telegram
اگه کمی راجب فریمورک های توسعه اپلیکیشن توی دات نت سرچ کرده باشین و هدفتون cross platform بودنش باشه احتمالا یجایی از مایکروسافت ناامید شدین و فکر کردین که قضیه کنسله، اما اگه یکم بیشتر سرچ کرده باشین احتمالا با فریمورک های اوپن سورس دیگه آشنا شدین که از خود مایکروسافت بهتر این قضیه رو مدیریت کردن. دو فریمورک Avalonia و Uno از معرف ترین فریمورک های توسعه اپلیکیشن روی پلتفرم های مختلف هستن. توصیه میکنم یه نگاهی بهشون بکنین.
اخیرا Avalonia با تیم توسعه Flutter توی گوگل همکاری تشکیل داده تا موتور رندر Impeller رو ساپورت کنه و از skia استفاده نکنه.
خودم خیلی عمیق نشدم روی خبر چون خب توسعه اپلیکیشن نمیدم هنوز ولی برام جالب بود که یه تیم خارج مایکروسافت چقدر جدی و حرفه ای داره محصولی بهتر از مال مایکروسافت ارائه میده. اگه با WPF کار کردین احتمالا خیلی راحت بتونین با Avalonia کار کنین چون بقولی spiritual successor اون هست.

https://avaloniaui.net/blog/avalonia-partners-with-google-s-flutter-t-eam-to-bring-impeller-rendering-to-net?utm_source=reddit&utm_medium=social&utm_campaign=impeller_announcement

@ever_code
1
EverCode
https://mazdakparnian.com/blogs/2025-11/streams-in-csharp/ توی این بلاگ بطور رسمی برنامه نویسی شبکه با سی شارپ رو شروع میکنیم. این قسمت یجورایی پیش نیاز حساب میشه چون خیلی مستقیم به شبکه ربط نداره و در اصل قبل ازینکه توی شبکه عمیق بشیم نیازه تا کمی stream…
توی قسمت بعدی این سری پست بلاگ قراره وارد Socket programming بشیم و ببینیم که چجوری بتونیم پورت های شبکه رو از داخل سی شارپ مدیریت کنیم.
فهمیدن اینجور اطلاعات بهمون کمک میکنه بفهمیم که دات نت چه حجمی از کار رو برای ما مدیریت کرده و باعث میشه بفهمیم خودمون چجوری میتونیم فریمورک خودمون رو توسعه بدیم.
اگه هم فکر میکنید که توسعه فریمورک از صفر کار بدرد نخوریه متاسفانه جای اشتباهی اومدین😂 اینجور کارای بدرد نخور معمولا بصورت پتانسیل بالقوه خودش رو نشون میده😉

@ever_code
2
EverCode
اگه کمی راجب فریمورک های توسعه اپلیکیشن توی دات نت سرچ کرده باشین و هدفتون cross platform بودنش باشه احتمالا یجایی از مایکروسافت ناامید شدین و فکر کردین که قضیه کنسله، اما اگه یکم بیشتر سرچ کرده باشین احتمالا با فریمورک های اوپن سورس دیگه آشنا شدین که از خود…
https://avaloniaui.net/blog/net-maui-is-coming-to-linux-and-the-browser-powered-by-avalonia

اتفاق جذاب بعدی اینه که تیم Avalonia اومد و بک اند MAUI رو به خودش تغییر داده. حالا یعنی چی؟ یعنی شما میتونین پروژه های رو MAUI رو روی هر پلتفرمی، حتی وب (Web assembly) ببری. خود MAUI قبلا روی سیستمهای لینوکس و ویندوز و مک اوکی بود و برای گوشی هم ساپورت داشت اما با اینکار شما عملا با همون پروژه میتونین وب هم راه بندازین و تو پلتفرم هایی که قبلا ساپورت بودن هم سرعتتون بهتر میشه.

@ever_code
👍1
دارم یه بات تلگرام مینویسم. گفتم بیام شانسم رو اول با وایب کدینگ امتحان کنم. شعورش به یه سری چیزای اساسی نمیرسه. کاملا مثل یه بچه ای هست که ۴ تا داکیومنت حفظ کرده. از طرفی با پکیجی که استفاده میکردم آشنا نبود و هی باید براش توضیح میدادم. کمی طول میکشید تصمیم گرفتم خودم بنویسم و بیخیالش شدم.

@ever_code
3😁2
خب دیپلوی کردن دات نت روی سرورهای لینوکسی arm64 با داکر واقعا داره ناراحتم میکنه😭

@ever_code
💔2
رو سرور پروداکشن اگه داکر کار میکنه، تا میتونین آپدیت نکنین، اومدم apt upgrade زدم، داکر اپدیت شد و کلی breaking change داشت. زد کاملا reverse proxy و همه سرویسا رو ترکوند. سرچ کردم دیدم apiهای داکر تغییرات اساسی داشته و خب باید این سرویس ها خودشون رو با داکر وفق بدن.

@ever_code
😁41
فردا از بات رونمایی میشه😁
🔥4🎉2
بات تلگرام برای ارسال پست کانال به لینکداین

فعالیت من تو کانال تلگرام اکثرا بیشتر از لینکداین بوده، از طرفی دوست دارم میزان تولید محتوام توی لینکداین بالا باشه.
یه #bot تلگرام نوشتم که همینکارو دقیقا برام انجام میده.
با چی توسعه دادم و روی سرور قرارش دادم؟

#dotnet
#n8n
#traefik
#docker

دلیل که از n8n استفاده کردم برای این بود که کار با سرویس های لینکداین کمی زمان بر بود و من از قبل n8n آماده برای خودم داشتم. تصمیم گرفتم از node آماده‌ش استفاده کنم.

بیشترین چالشی که این پروژه برام داشت بیشتر از کد زدن و توسعه بخش استقرار و دپلوی روی سرورم بود. کمی با traefik چالش داشتم اما تهش کار تمیز شد.

روی پست چه پردازشی انجام میده؟
چون برای کانال خودم بود و من ته همه پست های کانال معمولا آی دی کانال رو میزارم، اومدم آی دی رو حذف کردم و بجاش لینک کامل پست در تلگرام رو قرار دادم تا به راحتی بتونین اون پست رو توی کانال ببینین😉

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

همین پستی هم که میبینین هم توسط همین بات پردازش شده😁

@ever_code
4
چندتا مهارت که اگه برمیگشتم روز اولی که با برنامه نویسی آشنا شدم حتما به خودم میگفتم تقویتشون کنه:

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

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

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

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

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

این نکاتی بود که با گذشت زمان بیشتر بهشون اعتقاد پیدا کردم و دوست داشتم به اشتراک بزارم. اگه کسی رو میشناسین که این پست میتونه براش مفید باشه باهاش به اشتراک بزارین و نظرتون هم برام بنویسین🌹


@ever_code
👍52
دیشب یه ایده‌ی ای برای یه ابزار کامند لاینی به ذهنم رسید، خلاصه شب و صبح جذابی داشتم، اگه برسم این آخر هفته پابلیش میکنم😁

@ever_code
خب پکیج هم رفت روی نوگت، فردا معرفیش میکنم که چی به چیه😁
3
دواپس بازی هم تموم شد و الان روی هر پوش روی ریپازیتوری درست ورژن میخوره و میره روی نوگت، رسما آماده‌ست.
2
تو سلوشن‌های بزرگ دات نت، مدیریت ورژن پکیج‌هامون میتونه سخت باشه. پکیج‌هایی که توی چندتا پروژه استفاده شده مثل
Newtonsoft.Json
یا مثلا تو پروژه‌های تست:
Xunit, NSubstitute, Shouldly

دردسر وقتی شروع میشه که بخوایم ورژن یکی ازین پکیج‌ها رو تغییر بدیم.

مایکروسافت قابلیتی برای پروژه‌هاش تعریف کرده به نام
Central Package Management

به این صورت هست که شما توی سلوشن‌تون یک فایل به اسم
Directory.Packages.props
میسازین و توی اون اسم پکیج‌ها به همراه ورژنشون رو مشخص میکنین و بعد از اون توی هر پروژه‌ای که خواستین کافیه فقط اسم (بدون ورژن) پکیج رو به فایل csproj پروژه‌تون اضافه کنین. اینطوری از یجا ورژن پکیج ها رو مشخص میکنین هرموقع خواستین میتونین به راحتی تغییرش بدین.

اگه پروژه‌ای داشته باشین و بخواین دستی به CPM تغییرش بدین، احتمالا کار حوصله سر بر و سختی باشه. اینجاست که CPMGen به کمکتون میاد! با استفاده از cpmgen میتونین با یک دستور خیلی سریع پروژه‌تون رو به CPM تغییر بدین. این یک ابزار دات نت هست و با استفاده از دستور زیر میتونین نصبش کنین:

dotnet tool install --global CPMGen
قابلیت‌هاش:

به‌صورت خودکار فایل‌های ‎.sln‎ یا ‎.csproj‎ را در پروژه پیدا می‌کنه (یا می‌تونی مسیر دلخواه بدهی).

یک فایل Directory.Packages.props می‌سازه و نسخهٔ همهٔ پکیج‌ها را متمرکز می‌کنه

فایل‌های csproj. رو آپدیت میکنه و قسمت ورژن پکیج رو خودش حذف میکنه

امکان بکاپ داخلی داره تا نسخهٔ اصلی فایل‌ها حفظ شود.

در صورت نیاز، پوشهٔ بکاپ رو به ‎.gitignore‎ اضافه می‌کند.

لینک پروژه:
https://github.com/PureJoyMind/CPMGen


داخل پروژه اطلاعات بیشتری راجب نحوه کار باهاش هست و خود ابزار هم از help ساپورت میکنه.

اگه هم باگی داشت یا قابلیتی بود که دوست داشتین بهش اضافه کنین ایشو بزنین و مشارکت کنین❤️

@ever_code
6👍1
خبر خوب، دو تا پکیج
Npgsql 10.0.0

Npgsql.EntityFrameworkCore.PostgreSQL 10.0.0

برای کار با Postgres توی دات نت ریلیز شدن. قبلا یه سری ایشو اساسی وجود داشت که کار باهاشون رو مشکل میکرد اما الان ایشوها بسته شدن و برای دات نت ۱۰ ریلیز دادن.

https://www.nuget.org/packages/Npgsql

https://www.nuget.org/packages/Npgsql.EntityFrameworkCore.PostgreSQL

@ever_code
4
ویژوال استودیو ۲۰۲۶ نصب کردم گفتم تست کنم، امیدم این بود که کار با xaml توش راحت تر باشه، ولی کند بود و از طرفی هنوز با intellisense اش مشکل دارم و نمیخوام resharper نصب کنم چون خیلی مصرف رو بالا میبره، پاک کردم و به کار با Rider ادامه دادم. دیدم اپدیت داده و هم ui رو خوشگل تر کرده و هم پرفورمنسش خیلی بهتره. برای کار xaml هم خب شاید به اندازه vs قابلیت نداشته باشه، ولی بطور کلی من خودم xaml رو مینوسیم و از فیچر drag and drop ویژوال استفاده نمیکنم، پس هنوز rider عالیه😂😁

@ever_code
👍4🔥1
اگر ویزاکارت دارین سایت educative.io برای ایرانیا تخفیف گذاشته، اگه پلن سالانه‌ش رو بگیرین ماهی ۸ دلار میفته، برای اونایی که پولشون اضافه کرده و ویزا کارت دارن مناسبه😂
باید بدون وی پی ان برین تا بفهمه ایرانی هستین و تخفیف بیشتر بده، و اینکه اگه امروز بگیرین تا آخر عمر تخفیف ایرانی بودن رو میگیرین

@ever_code
اینم اینجا باشه یادگاری از ردیت
@ever_code
4
اخیرا ردیت اومده یواش یواش بخش‌هایی از بک اند رو از پایتون به گولنگ تغییر داده. اولین سرویسی که تغییرش رسمی روی پروداکشن اومده سرویس کامنت هست. توی ردیت کامنت یه بخش خیلی بزرگی از کل پلتفرمه. برای همین خیلی مهمه که سیستمی که این بخش رو مدیریت میکنه برای throughout بالا مناسب باشه. بنظرم بحث جذابیه و ارزش خوندن داره.

لینک مقاله‌ش توی خود ردیت:
https://www.reddit.com/r/RedditEng/s/2tmpQVQSdv

#reddit #golang #systemdesign

@ever_code
Forwarded from جادی | Jadi
خب خب امسال هم به دسامبر رسیدیم و تمرین‌های Advent Of Code. یک مجموعه مساله برنامه نویسی که ده سالی شده که هر سال از اول دسامبر تا ۲۵ دسامبر هر روز یکی منتشر می‌شن و می تونین به هر زبونی حلش کنین و برنامه نویسی خودتون (یا مهارتتون در یک زبون خاص) رو بهتر کنین. سطوح مساله‌ها متفاوت است و به شکل سنتی جلوتر که می‌ریم سختتر می شن. موضوعات جالبن و سوال‌ها هیجان انگیز طراحی شدن. و خب معلومه که خیلی هاش (احتمالا امسال همه) رو هوش مصنوعی می‌تونه حل کنه؛ دقیقا همونطور که لیفتراک می‌تونه کل وزنه‌هایی که توی جیم می‌زنین رو یه جا بلند کنه (: سوال اینه که شما می‌خواین وزنه‌ها رو جابجا کنین یا می خواین ورزیده بشین.

با ادونت آو کد امسال خوش بگذره. من معمولا تفننی هر روز نگاهش می کنم و گاهی سعی می کنم حلش کنم اگر در طول روز وقت داشته باشم.

https://adventofcode.com/2025/about

#برنامه‌_نویسی
2🔥1
جادی | Jadi
خب خب امسال هم به دسامبر رسیدیم و تمرین‌های Advent Of Code. یک مجموعه مساله برنامه نویسی که ده سالی شده که هر سال از اول دسامبر تا ۲۵ دسامبر هر روز یکی منتشر می‌شن و می تونین به هر زبونی حلش کنین و برنامه نویسی خودتون (یا مهارتتون در یک زبون خاص) رو بهتر کنین.…
ایونت advent of code 2025 شروع شد. منم شرکت کردم و یواش یواش جوابای سوالایی که حل میکنم رو توی این ریپازیتوری میذارم:
https://github.com/PureJoyMind/AdventOfCode2025
سعی کردم تمیز و خوانا و در عین حال با در نظر گرفتن پرفورمنس بنویسم و فقط جواب‌هایی رو قرار میدم که تائید شده باشن.
هدف اینه که خودمون رو به چالش بکشیم و اگر هم شد چیزی یاد بگیریم.
شماها هم شرکت کنین و راه حلاتون رو به اشتراک بزارین😍

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

@ever_code
3