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

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

dev.to/purejoymind

هم توی سایت شخصیم و هم توی دِو بلاگ هام رو میزارم.
Download Telegram
شاید یکی از بزرگترین پشیمونی‌هام این باشه که به اندازه کافی تو دانشگاه توی low-level programming عمیق نشدم. الان باید انرژی بیشتری بزارم تا به چیزی که اون موقع زمانش رو راحت داشتم برسم.

@ever_code
1👍1🔥1
از ۴ شنبه بگم گه خلاصه کل آخر هفته برنامه مفید کنسل بود😂😭
چشمام از کاسه درومد بدون عینک
2😱1
آیا از پیاده سازی متدهای خودتون خسته شدین؟ خب مهم نیست بسپارینش به AI به ما چه اصلا😂
به
No-implementation oriented programming
سلام کنید😭

https://github.com/lofcz/ai

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

@ever_code
2
توی Front-end ما اکثرا تصوری که داریم یا وب هست و یا اپلیکیشن برای گوشی یا کامپیوتر، همه‌ی اینها زیرمجموعه‌ی Graphical User Interface (GUI) یا رابط کاربری گرافیکی میشن. پس میشه پرسید که خب رابط کاربری غیر گرافیکی چی؟ اینجاست که با Terminal/Text User Interface (TUI) آشنا میشیم.
به شخصه خیلی ازش لذت میبرم و حتی بنظرم توسعه‌ش جذاب‌تره. شاید ساده بنظر بیاد اما خیلی کارهای حرفه‌ای و قشنگی میشه باهاش انجام داد.
بنظرم اگه روزی اپلیکیشنی برای پلتفرم‌های مختلف توسعه بدم، حتما نسخه‌ی ترمینالش هم سعی میکنم توسعه بدم.

توی دات نت برای توسعه‌ی اپلیکیشن ترمینالی یا کنسول، یکی دوتا پکیج معروف هست. یکیش Spectre.Console هست:

https://spectreconsole.net/

یکی دیگه‌ش هم Terminal.Gui هست که نسبت به قبلی کمی متفاوته و کارهای تخصصی تری شاید بشه باهاش انجام داد:

https://github.com/gui-cs/Terminal.Gui

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

در گشت و گذار بودم که به این پروژه‌ی جالب برخوردم:
https://github.com/andrewmd5/dawn
یک Terminal Live Markdown Editor هست. ظاهر باحالی داره اما احتمالا بدرد کسی بخوره که اکثر وقتش رو توی ترمینال میگذرونه. خلاصه از TUI غافل نشین!

@ever_code
3
Forwarded from جادی | Jadi
توی این ویدئو سریع و سر راست در مورد تگ زدن در گیت حرف می‌زنیم. روشی است برای اینکه مثلا روی نرم افزارتون ورژن بزنین یا به گیت هاب بگین که اگر کسی اومد دانلود کنه فلان نسخه ها رو بذار توی بخش releaesها یا اگر خودتون خواستین به جایی از تاریخ برگردین، به راحتی با یه اسم بهش برسین.

https://youtu.be/jjaBdcgsz1A
🔥1
در این شرایط بازار ایران، شاید تمرکز روی توسعه فردی برای بعضیا سخت باشه و حق دارن. اما نباید آدم خودش رو ببازه و یا بهانه کنه. دلار فردا تا ۴۰۰ بره، پس فردا بیاد روی ۵۰، با اینکه وضعیت جیب ما شاید خیلی تغییر کنه، ولی حقیقت امر اینه که نمیشه با تصمیم‌های احساسی کاری براش کرد. تهش وقتمون هدر رفته. توی این شرایط با افزایش دانش اقتصادی‌مون، مدیریت سرمایه‌مون (حتی اگر سرمایه‌ای نداشته باشیم و یا احساس کنیم که انقدر کمه که چیزی نیست مدیریت کنیم) و فکر کردن به آینده، شاید بتونیم برای خودمون احساس بهتری، چه بسا موقت، ایجاد کنیم. من یکی به شخصه همیشه این حس رو داشتم که توی مدیریت سرمایه هیچی بلد نیستم و نمیدونم از کجا شروع کنم. اما برای شروع، کتابی که به من کمی کمک کرد و یه کوچولو دیدم رو بازتر کرد "هل اول" از صادق الحسینی بود. باعث شد بجای اینکه جلوی پام رو ببینم و کوچک بودن مبلغ سرمایه گزاری الانم، دراز مدت رو ببینم و تجمیعش + سود رو درک کنم. اینطوری حداقل کمی نوسانات هیجانی بازار آشفته ایران کمتر با روانم بازی میکنه، هرچند که اقتصاد مریض و ناسالمی داریم و قرار نیست خودمون رو گول بزنیم.
موفق و پیروز باشید❤️

@ever_code
7
Forwarded from Happy Developer (Ashkan Rahmani)
یک آپدیتی از این پروژه بدم ...
تقریبا الان یک ماهی هست که روی پروداکشن علی بابا داریم ازش استفاده میکنیم و کلی باگ فیکس روش رفتیم.

میخوام از دو نفر اینجا تشکر کنم که توی ریپو به صورت اوپن سورس مشارکت کردن و خیلی نظرات خوبی دادن و کلی روی کد وقت گذاشتن.

مزدک و یاسمین عزیز که دمشون گرم

خلاصه خوشحال میشم شما هم اگر فیچر خاصی یا بهبودی توی ذهنتون هست واسم PR بفرستین یا یک issue باز کنین.

اینم لینک ریپو اگر ندیدین و استار ندادین🙌

https://github.com/ashkanRmk/FastCrud
تا حالا شده بخواین یه API برای Get کردن یه مدل بزنین؟ مثلا برای گرفتن محصولات یه فروشگاه. توی اینجور سرویس‌ها معمولا با یه سری نیازمندی‌ها روبرو میشیم. برای مثال:
- نیاز داریم تا بتونیم مشخص کنیم چه فیلدهایی از مدل رو برگردونیم، یعنی مثلا توی درخواستمون بگیم فقط نام و کد ملی کاربر برگرده
- نیاز به pagination داشته باشیم
- نیاز به sort داریم
بصورت کلی تر بخوایم بگیم، وقتی نیاز داریم سرویسمون عملا برابر دسترسی Read برای یه Table توی دیتابیس باشه.
یه راه اینه که خودمون همه چی رو پیاده سازی کنیم، اما راه دیگه‌ای هم هست. میتونیم از پروتوکل OData (OpenData) استفاده کنیم.
یک پروتوکل برمبنای REST که قواعد مشخصی رو برای کوئری کردن دیتا تعریف میکنه. برای مثال برای گرفتن یوزر، طوری که نیاز داریم فقط یه سری ستون خاص رو بگیریم، یه Sort بزنیم روش، و فیلتر کنیم کوئری‌مون یه همچین چیزی میشه:
GET /odata/Users?$select=id,displayName,email&$filter=status eq 'active' and age ge 18&$orderby=displayName asc&$top=50&$skip=0
البته به کوئری ختم نمیشه و کلی کارهای دیگه میشه توی Body درخواست انجام داد.
میتونید اینجا کمی بیشتر راجبش بخونید:
https://www.odata.org/getting-started/basic-tutorial/

حالا چجوری توی دات نت یه سرور OData راه بندازیم؟
* پروژه رو با استفاده از EFCore به دیتابیس وصل میکنیم.
* پکیج Microsoft.AspNetCore.OData رو نصب میکنیم
* توی Program.cs ستاپ میکنیم:
c#
var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<User>("Users");

builder.Services.AddControllers()
.AddOData(options => options.Select().Filter().OrderBy().Expand().Count().SetMaxTop(100)
.AddRouteComponents("odata", modelBuilder.GetEdmModel()));


* کنترلرمون رو بجای ControllerBase با ODataController میسازیم و برای هر مدلی که میخوایم OData براش داشته باشیم دوتا متد Get یکی برای همه رکوردها و یکی برای گرفتن با Id میسازیم:

c#
public class UsersController(ApplicationDbContext context) : ODataController
{

[EnableQuery]
public IActionResult Get()
{
return Ok(context.Users.OrderByDescending(o => o.CreatedOn));
}

[EnableQuery]
public IActionResult Get([FromRoute] Guid key)
{
var saga = context.Users.FirstOrDefault(s => s.Id == key);
return saga == null ? NotFound() : Ok(saga);
}

}


اگر دقت کنید، وقتی که با DbContext داریم کاربرها رو برمیگردونیم، متد ToList رو صدا نزدیم. نمیخوایم که کوئری رو انجام بدیم، اون قسمت رو پکیج OData انجام میده برامون.
بعد این مراحل سرور OData آماده‌ست و میتونین هرنوع کوئری که نیاز دارین رو روی اون دیتا انجام بدین، pagination داشته باشین، sort کنین و خیلی بیشتر.

@ever_code
2
آخر هفته کرمانشاه مهمان هستم گفتم شما هم زیبایی ببینید. البته زیبایی زیاد داره این بخش کوچکی ازش هست😍
@ever_code
9
Forwarded from iCodeNext
Github Actions Build and Test

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

مدت ویدیو: 30 دقیقه
لینک ویدیو :

https://youtu.be/CF-JenvUKwQ
2
روی سرور پروداکشن چه سیستم عاملی نصب میکنید و آیا GUI هم استفاده میکنید؟
Anonymous Poll
33%
Windows server
46%
Ubuntu - No GUI
8%
Ubuntu - With GUI (Gnome or others)
8%
Debian - No GUI
4%
Debian - With GUI (Gnome or others)
0%
Other OS (tell me in the chat)