امروز خیلی روی دانلود منیجر کار کردم، چون ابزاریه که میخوام خودم استفاده کنم، و مدام فیچرها و تجربه کاربری رو دستکاری کردم تا به اون چیزی که میخوام نزدیک تر بشه، از طرفی نکات خاصی هم هست برای آماده کردنش برای پروداکشن که اونا هم اضافه کردم به مرور، مثلا Crash log و راحت کردن ثبت issue توی github، و ازین دست کارها. به زودی فکر کنم بتونم نسخه اولیه رو روی github بزارم.
خودم با System Tray Icon اش حال کردم و بنظرم بد نشد. بالای صفحه سمت چپ میتونید ببینید. فایلهای درحال دانلود رو نشون میده با درصد دانلود شده.
اگه میخواین یه Cross-Platform App بسازین، بشدت Avalonia رو توصیه میکنم، قبلا هم توی کانال راجبش صحبت کردم کمی و سرچ کنین براتون میاد. از طرفی یه MCP خیلی تر و تمیز داره که Claude Code خیلی خوب باهاش کار کرد و پروژه استاندارد و تمیزی زد باهاش نسبتا، UI حدودا یک روز کاری فقط زمان برد، با وسواسی که من داشتم البته.
اینکه یاد بگیریم خودمون رو جای end user بزاریم چیزیه که با تجربه به دست میاد، پروژهای اینطوری که خودمون میخوایم استفاده کنیم تمرین خیلی خوبیه برای اینکه این تجربه رو کسب کنیم.
@ever_code
خودم با 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
https://youtu.be/DkhhE97Swmo?is=q1pFuADsmRbSfzuo
توی دورانی که هوش مصنوعی درصد زیادی از تفکری که قبلا ما انجام میدادیم رو به دوش گرفته، نباید یادمون بره یادگیری واقعی چه شکلیه، توی مغزمون چه مراحلی طی میشه، و وقتی همهی سوالاتمون رو هوش مصنوعی جواب میده چه عواقبی داره!
@ever_code
YouTube
Therapy for the Vibe-Coded Brain
Clara explores the concept of metacognitive awareness, the role it plays in learning, common traps in your thinking, and how using LLMs affects it in surprising ways.
📃 Read the research this video is based on here:
The Widening Gap: https://dl.acm.org…
📃 Read the research this video is based on here:
The Widening Gap: https://dl.acm.org…
❤3🔥1
این چند وقته که از 9router استفاده میکردم، بعد از یه سری آپدیتهای اخیر Claude Code دچار کندی میشد. تو آپدیتهای اخیر Claude Code باعث مسشد اگه نتونه مستقیم به سرور اصلی وصل بشه Context Window رو خیلی محدود و کوچیک میکنه، برای همین وسط کار خیلی سریع به محدودیت میخوره و همش Compact انجام میده.
وقتی از روی روتر سوییچ کردم روی حالت عادی، مشکلات حل شد و کلا به محدودیت Context نخوردم.
@ever_code
وقتی از روی روتر سوییچ کردم روی حالت عادی، مشکلات حل شد و کلا به محدودیت 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
نویسندهی کتاب آنلاین Beyond boundaries اعلام کرده که به زودی مطابق با آخرین نسخهی دات نت کتابشو به روز میکنه.
این کتاب یکی از مراجع فوق العاده برای برنامهنویسی شبکه، و کارهای مربوط به شبکه توی دات نت هست. البته در نظر داشته باشین که وقتی میگیم برنامه نویسی شبکه، بخش قابل توجهی از کارهای Backend هم شاملش میشه و اسمش شاید ترسناک باشه.
نگاهی به این مقاله بندازین متوجه میشین منظورم چه چیزهاییه.
@ever_code
Chris Woody Woodruff
Beyond Boundaries Is Getting a Major Update for .NET 11 and C# 15
When I first published Beyond Boundaries: Networking Programming with C# and .NET, I knew it would need to evolve. Networking doesn't stand still, and neither does the .NET platform. What I didn't expect was just how much ground .NET 11 and C# 15 would cover.…
👍2
راجب این پست نبی:
https://t.me/thisisnabi_dev/1611
هنوز توی کامیونیتی خارجی زیاد میبینم که گارد شدیدی به ai دارن. خیلیا رو دیدم توی فورومها که میگن ما توی ریپو اسم Claude میبینیم، ندید ازش میگذریم.
تعادل مهمه، ازونجایی که متاسفانه ما کمی از جهان به واسطهی اقتصاد و خیلی مسائل دیگه منزوی هستیم، اثرات هوش مصنوعی رو توی اکوسیستم دیرتر دیدیم و بنظرم هنوز خیلی از اثراتشو ندیدیم. الان که اکثرا آگاه شدن و دنبال کنترل کردن و استفادهی مناسبن، باید در نظر بگیریم که احتمالا همین قضیه چند برابر بدتر بوده در جهان، حجم پول زیادی بوجود اومده، و حجم زیادی هم از بین رفته.
نکتهی دیگهای که خودم سعی میکنم رعایت کنم، اکثرا سعی کنید پروژههای شخصیتون رو به دو دسته تقسیم کنید. یا تصمیم بگیرید درست، استاندارد و با تکنولوژی روز دنیا از هوش مصنوعی استفاده کنید، یا تصمیم بگیرید که بصورت "کلاسیک" کاملا دستی پروژه رو جلو ببرید و از هوش مصنوعی کمترین حد، در حد تحقیق و یادگیری مطالب، استفاده کنید.
این تفکیک مهمه، چون اگر پروژه براتون اهمیت داشته باشه، چه از لحاظ فنی، چه از لحاظ کسب و کاری، اگر بخواین تو جامعه خارجی نشون بدین، این تفکیک ارزش پروژه رو مشخص میکنه.
@ever_code
https://t.me/thisisnabi_dev/1611
هنوز توی کامیونیتی خارجی زیاد میبینم که گارد شدیدی به ai دارن. خیلیا رو دیدم توی فورومها که میگن ما توی ریپو اسم Claude میبینیم، ندید ازش میگذریم.
تعادل مهمه، ازونجایی که متاسفانه ما کمی از جهان به واسطهی اقتصاد و خیلی مسائل دیگه منزوی هستیم، اثرات هوش مصنوعی رو توی اکوسیستم دیرتر دیدیم و بنظرم هنوز خیلی از اثراتشو ندیدیم. الان که اکثرا آگاه شدن و دنبال کنترل کردن و استفادهی مناسبن، باید در نظر بگیریم که احتمالا همین قضیه چند برابر بدتر بوده در جهان، حجم پول زیادی بوجود اومده، و حجم زیادی هم از بین رفته.
نکتهی دیگهای که خودم سعی میکنم رعایت کنم، اکثرا سعی کنید پروژههای شخصیتون رو به دو دسته تقسیم کنید. یا تصمیم بگیرید درست، استاندارد و با تکنولوژی روز دنیا از هوش مصنوعی استفاده کنید، یا تصمیم بگیرید که بصورت "کلاسیک" کاملا دستی پروژه رو جلو ببرید و از هوش مصنوعی کمترین حد، در حد تحقیق و یادگیری مطالب، استفاده کنید.
این تفکیک مهمه، چون اگر پروژه براتون اهمیت داشته باشه، چه از لحاظ فنی، چه از لحاظ کسب و کاری، اگر بخواین تو جامعه خارجی نشون بدین، این تفکیک ارزش پروژه رو مشخص میکنه.
@ever_code
Telegram
thisisnabi.dev [Farsi]
ظاهرا اون روزایی که تو علیبابا KPI میذاشتن زمان Integrate شدن با درگاههای بانکی رو از ۱۴ برسونیم به ۷ روز، یه چیزی در باب بهینه کردن فرایند توسعه در من نهادینه شده.
دیشب یه درگاه پرداخت خارجی رو تو ۱۲ دقیقه implement کردم. اونم روی سیستمی که تا قبلش حتی…
دیشب یه درگاه پرداخت خارجی رو تو ۱۲ دقیقه implement کردم. اونم روی سیستمی که تا قبلش حتی…
❤1
امروز یکی از دوستام با این متد "هک" شد. شماها که فنی هستین و احتمالا متوجه میشین، ولی خیلی مهمه که به اطرافیان و خانواده که بلد نیستن اصول مراقبت آنلاین رو یاد بدین تا این موارد پیش نیاد. اینجور اپها چیز پیچیدهای نیستن، صرفا از بی توجهی و یا ندونستن کاربر سو استفاده میکنن. حالا این یکی رو که من میرم Decompile میکنم دیتاشو در میارم میدم فتا، ولی مراقب اطرافیانتون باشین خلاصه.
تو این مورد اس ام اس تلگرام و پسوردهای کاربر برداشته شد و به اکانتش دسترسی پیدا کردن، کانتکتها هم گرفته طرف.
@ever_code
تو این مورد اس ام اس تلگرام و پسوردهای کاربر برداشته شد و به اکانتش دسترسی پیدا کردن، کانتکتها هم گرفته طرف.
@ever_code
👍2😁1🌚1
بیاین کمی راجب Memory Allocation حرف بزنیم!
میدونیم توی سی شارپ، String ها نوع خاصی از داده هستن. با اینکه Reference Type هستن ولی مثل Value Type رفتار میکنن. بخاطر کار زیاد باهاشون و خاص بودنشون، توی Heap یه قسمت خاص براشون در نظر گرفته شده. String ها پشت صحنه یجورایی یه آرایه از کاراکتر هستن، به همین خاطر چون تغییر دادنشون عملیات سنگینیه، Immutable ان و اگر تغییرش بدین، یک String جدید ساخته میشه.
تا اینجای مطلب رو به احتمال زیاد میدونستین یا راجبش شنیده بودین.
شاید تا حالا اسم تایپ
اگر ما بخوایم یه بخشی از یه 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 میکنم، قسمت اول و دوم رو جدا میکنم و توی یه آبجکت ذخیره میکنم. روی سیستم من این نتیجه رو داد:
حالا همین تست رو میام با روشی مینویسم که Memory Allocation کمتر داشته باشه، و از طرفی از Span هم استفاده بکنه و نتیجه شد این:
البته باید بگم که برای این پست نیومدم روش کامل بهینه سازی رو انجام بدم. فقط اون قسمت مربوط به Memory Allocation توی لوپ اصلی رو بهتر کردم و توی هردو تست کل فایل رو یک جا خوندم و پردازش کردم. که این خودش یه عالمه جابجایی انجام میده. توی مرحله بعدی، حتی قسمت خوندن از فایل هم بهینه کردم و نتیجه شگفت انگیز شد:
یعنی برای 10 میلیون خط فقط 54 مگابایت توی حافظه نگه میداره! درحالی که توی تست قبلی حدودا 1 و نیم گیگابایت درگیر بود!
اینجا اومدم فایل رو Stream کردم بجای اینکه کامل بخونم که باعث میشه فقط اون بخشی از فایل که میخوام رو بیاره توی حافظه و وقتی کارش تموم شد بده بره.
@ever_code
میدونیم توی سی شارپ، 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
Docs
Memory<T> and Span<T> usage guidelines - .NET
This article describes Memory and Span, which are buffers of structured data in .NET that can be used in pipelines.
❤2🔥2👍1
Forwarded from کدهالیک | codehalic
اگه تو زیرساختتون از Keycloak برای احراز هویت استفاده میکنید سریعتر دستبهکار بشید چون یه آسیبپذیری خیلی بحرانی با نمره ۹.۱ کشف شده که تو این باگ، هکر بدون نیاز به هیچ دسترسی یا تایید ایمیل و فقط با دونستن یوزرنیم یا ایمیل ادمین، میتونه لاگین بازیابی رمز عبور رو دور بزنه و مستقیم پسوورد اکانت رو عوض کنه تا به تمام سیستمهای پشت Keycloak دسترسی پیدا کنه. تمام نسخههای زیر ۲۶.۷.۲ آسیبپذیرن و اگه الان شرایط ارتقا به نسخه ۲۶.۷.۲ رو ندارید، حتماً همین امروز قابلیت Forgot password رو از تنظیمات Realm به صورت موقت خاموش کنید.
https://fireup.pro/news/keycloak-cve-2026-18963-critical-password-reset-flaw?via=dailydev
@codehalic | کدهالیک
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
خودم روتین ازش استفاده میکنم و مدام سعی میکنم بهترش کنم. جدا از اون خیلی نحوهی کارم با کلود توی این پروژه بهتر شده. میشه گفت از Spec-driven گذر کردم و بنظرم هرجایی خوب نیست.
برای ui براش sketch میکشم خودش میسازه و تست میکنه، ولی باید پختهترش کنم و برم از selenium یا ابزارهای مشابه استفاده کنم تا تمیزتر تست کنه خودش. الان با پایتون و screenshot گرفتن تست میکنه و موس رو حرکت میده.
در کل پروژه روند جالبی گرفته.
با اینکه تو گیتهابم هست، ولی هنوز لانچ رسمی نکردم. منتظرم به یه استیت خاصی برسه و یه سری فیچر مونده که از دانلود منیجر انتظار میره داشته باشه. البته اگه الان دانلود کنید، خود اپ قابلیت auto update داره و میتونید توی این مسیر همراه باشید و آپدیتها رو دریافت کنید. میتونید تو تنظیماتش فعالش کنید.
@ever_code
❤1👍1👌1
این چندوقته با چندتا از همکاران و دوستان داشتیم راجب این بحث میکردیم که کد بهینه نوشتن دنیای خیلی متفاوتی با کد تمیز نوشتن داره. خیلی سخته که جفتش رو با هم داشته باشی، بیشتر شبیه دو سر یه نمودار هستن که تصمیم میگیری چی رو فدای چی بکنی. اگه بخوای واقعا کدت تماما بهینه باشه، احتمالا با دیگه تمیز نخواهد بود. نکته اینجاست که کد بهینه نوشتن نیازمند دانش بالایی هست و باید درک خوبی از یه سری چیزا داشته باشی. توسعه و نگهداریش سختتره، و هرکسی نمیتونه به راحتی بهش دست بزنه.
این موضوع منو یاد یه جملهی دیگه انداخت. کامپایلر نوشتن شاید اونجوری سخت نباشه و بشه یادش گرفت. ولی بهینه سازی کامپایلر ۸۰ درصد کاره.
این موضوع رو وقتی داشتم کتاب کامپایلر میخوندم به چشم دیدم. مفاهیم پایهی کامپایلر، حداقل برای شروع و یادگیری اونقدر پیچیده نبود و با کمی وقت گذاشتن میشد فهمید چی به چیه. اما کامپایلرهای واقعی که توی کار استفاده میشن زمین تا آسمون با کتاب فرق دارن.
بنظرم راجب همه مفاهیم این صدق میکنه.
@ever_code
این موضوع منو یاد یه جملهی دیگه انداخت. کامپایلر نوشتن شاید اونجوری سخت نباشه و بشه یادش گرفت. ولی بهینه سازی کامپایلر ۸۰ درصد کاره.
این موضوع رو وقتی داشتم کتاب کامپایلر میخوندم به چشم دیدم. مفاهیم پایهی کامپایلر، حداقل برای شروع و یادگیری اونقدر پیچیده نبود و با کمی وقت گذاشتن میشد فهمید چی به چیه. اما کامپایلرهای واقعی که توی کار استفاده میشن زمین تا آسمون با کتاب فرق دارن.
بنظرم راجب همه مفاهیم این صدق میکنه.
@ever_code
👌3
یکی از تفکرات کسب و کاری که خیلی آزارم میده این ایدهی "سوپر اپ" یا همون "یچی بزنیم همه چی توش باشه" هست.
فکر میکنم همونطور که توی کد باید تفکیک قائل بشیم توی محصولات هم باید قائل بشیم. چرا باید همه چی یجا باشه؟ اونم بخصوص وقتی کاربر شاید واقعا از ۲۰-۳۰ درصد قابلیتهاش استفاده بکنه.
بنظرم یه نمونه از Feature Creep میشه که ترند شده و scope پروژه رو الکی بزرگ میکنه
@ever_code
فکر میکنم همونطور که توی کد باید تفکیک قائل بشیم توی محصولات هم باید قائل بشیم. چرا باید همه چی یجا باشه؟ اونم بخصوص وقتی کاربر شاید واقعا از ۲۰-۳۰ درصد قابلیتهاش استفاده بکنه.
بنظرم یه نمونه از Feature Creep میشه که ترند شده و scope پروژه رو الکی بزرگ میکنه
@ever_code
👍4💯1
Forwarded from جادی | Jadi
بیرجند لاگی ها توی روز برنامه نویس یه چلنج باحال دیگه داشتن: چلنج فشرده سازی! (:
توی این رپو یه فایل به شما داده شده که باید فشرده اش کنین و بر اساس اینکه برنامه شما چقدره و چقدر فشرده می کنه، یه امتیاز میگیرین. دقت کنین که هدف نهایی درک کردن فشرده سازی، ور رفتن باهاش و .. است. اگر یه چیزی بنویسین که یه الگوریتم فشرده سازی رو به کار ببره نسبتا بیمزه است و شاید حتی خارج از رده بندی.
اگر من بخوام بازی کنم اول آنتروپی و چند تا فاکتور دیگه رو تست می کنم. بخصوص با برنامه
enp
تا ببینم این فایل اصولا چقدر دیتا داره. یه فایل رندوم چندان قابل فشرده سازی نیست.
بعدش سعی می کنم ایده های خیلی بیسیک فشرده سازی رو پیاده کنم. مثل
RLE, huffman
برای یادگیری بگم که توی آر.ال.ای، اگر ۵ تا A پشت هم هست ممکنه بتونین بنویسین 5A. معلومه که چند تا مشکل ریز داریم که باید حلش کنین.
توی هافمن یه بار متن رو می بینیم و ترکیب های تکراری رو توش پیدا می کنیم، بعد اینها رو کد گذاری می کنیم و سعی می کنیم هر موردش رو با کدش جایگذاری کنیم و این چیزها.
این ها مسائل جالبی هستن و چیزهای باحالی بهتون یاد می دن؛ پس اگر می خواین بازی کنین معما اینجاست:
https://github.com/birlug/256
البته معلومه که سطح چنین چیزی در رده متوسط است ولی اتفاقا مسائل رده متوسط خوبیشون اینه که اگر شما تازه کار هستین، بهتون ایده می ده چطوری شروع کنین و از اونطرف بررسی کنین بقیه چیکار کردن.
و مرسی از بچه های بیرجندلاگ که مدت ها است گاه گداری مسائلی واقعا جالب برامون مطرح کردن. منم چند ساعت دیگه اگر فرصت کنم تست می کنم و جواب های شما رو هم می بینم که لذت ببرم.
توی این رپو یه فایل به شما داده شده که باید فشرده اش کنین و بر اساس اینکه برنامه شما چقدره و چقدر فشرده می کنه، یه امتیاز میگیرین. دقت کنین که هدف نهایی درک کردن فشرده سازی، ور رفتن باهاش و .. است. اگر یه چیزی بنویسین که یه الگوریتم فشرده سازی رو به کار ببره نسبتا بیمزه است و شاید حتی خارج از رده بندی.
اگر من بخوام بازی کنم اول آنتروپی و چند تا فاکتور دیگه رو تست می کنم. بخصوص با برنامه
enp
تا ببینم این فایل اصولا چقدر دیتا داره. یه فایل رندوم چندان قابل فشرده سازی نیست.
بعدش سعی می کنم ایده های خیلی بیسیک فشرده سازی رو پیاده کنم. مثل
RLE, huffman
برای یادگیری بگم که توی آر.ال.ای، اگر ۵ تا A پشت هم هست ممکنه بتونین بنویسین 5A. معلومه که چند تا مشکل ریز داریم که باید حلش کنین.
توی هافمن یه بار متن رو می بینیم و ترکیب های تکراری رو توش پیدا می کنیم، بعد اینها رو کد گذاری می کنیم و سعی می کنیم هر موردش رو با کدش جایگذاری کنیم و این چیزها.
این ها مسائل جالبی هستن و چیزهای باحالی بهتون یاد می دن؛ پس اگر می خواین بازی کنین معما اینجاست:
https://github.com/birlug/256
البته معلومه که سطح چنین چیزی در رده متوسط است ولی اتفاقا مسائل رده متوسط خوبیشون اینه که اگر شما تازه کار هستین، بهتون ایده می ده چطوری شروع کنین و از اونطرف بررسی کنین بقیه چیکار کردن.
و مرسی از بچه های بیرجندلاگ که مدت ها است گاه گداری مسائلی واقعا جالب برامون مطرح کردن. منم چند ساعت دیگه اگر فرصت کنم تست می کنم و جواب های شما رو هم می بینم که لذت ببرم.
GitHub
GitHub - birlug/256: happy programmer's day
happy programmer's day. Contribute to birlug/256 development by creating an account on GitHub.
❤3
اگر تو انتخاب پلت رنگی برای پروژهتون مشکل دارین، میتونین از این ابزار استفاده کنید:
https://coolors.co/
@ever_code
https://coolors.co/
@ever_code
Coolors.co
Coolors - The super fast color palettes generator!
Generate or browse beautiful color combinations for your designs.
🔥1