<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علیرضا بروجردیان</title>
        <link>https://virgool.io/feed/@boroujerdian.alireza</link>
        <description>خالقِ طَمطام، از اهالی استارت‌آپ، برنامه‌نویسِ کارکُشته، مدرسِ برنامه‌نویسی. وبسایت شخصی من: https://boroujerdian.com</description>
        <language>fa</language>
        <pubDate>2026-07-06 13:46:12</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/2192100/avatar/avatar.png?height=120&amp;width=120</url>
            <title>علیرضا بروجردیان</title>
            <link>https://virgool.io/@boroujerdian.alireza</link>
        </image>

                    <item>
                <title>master یا main مسئله git است!</title>
                <link>https://virgool.io/@boroujerdian.alireza/master-%DB%8C%D8%A7-main-%D9%85%D8%B3%D8%A6%D9%84%D9%87-git-%D8%A7%D8%B3%D8%AA-wdpr9rspiaji</link>
                <description>اسم شاخه یا branch اصلی پروژه‌های شما کدومه؟ main یا master؟بخش اول - gitاگر git رو نصب دارید، یه پوشه‌ی خالی پیدا کنید و این فرمان رو اجرا کنید:echo &amp;quot# test&amp;quot &gt;&gt; README.mdاین فرمان یک فایل به اسم README.md می‌سازه و عبارت &quot;test #&quot; رو هم داخلش می‌نویسه .حالا به ترتیب، git رو به پوشه اضافه می‌کنیم. فایل ایجاد شده رو add می‌کنیم و این تغییرات رو commit می‌کنیم:git init
git add README.md
git commit -m &amp;quotfirst commit&amp;quotحالا اگر این فرمان رو اجرا کنید:git branchمی‌بینید که یه branch پیش‌فرض به نام master برای شما ایجاد شده.بخش دوم - GitHubحالا بریم سروقت GitHub و اونجا یه Repository بسازیم.بعد از ساخت، یه صفحه می‌بیند که فرمان‌های پیشنهادی GitHub‌ برای شروع کاره:۴ خط اول دقیقاً همون دستورات بخش اول ماست. ولی خط ۵ چرا اضافه شده؟git branch -M mainاین فرمان برای تغییر دادن نام branch اصلی ما یعنی master به main است.بخش سوم - چرا نه به master؟پاسخ کوتاه: یادآوری برده‌داری.پاسخ طولانی: استفاده از لغت ارباب یا master برای بعضی‌ها آزاردهنده و توهین‌آمیز بود. ضمن این که خود این لغت هم بار منفی داره. البته که نظرهای مختلفی رو می‌تونید ببینید که موافق یا مخالف این تصمیم هستنند. بعضی‌ها فکر می‌کنن پرداختن به این مورد، زیاده‌روی بوده یا به طور کل بیجاست.من خودم، پیشنهاد این تغییر رو از این جهت پذیرفتم که اول، main معنای دقیق‌تر و مناسب‌تری داره و دوم هم این که جدا از بحث‌های سیاسی و اجتماعی، واژه‌ای مرتبط با برده‌داری شاید برای صنعت ما و استفاده‌ی هر روز برنامه‌نویس‌ها مناسب نباشه.بخش چهارم - چطور از ابتدا با main شروع کنیم؟برای این که از اول نام branch ایجاد شده‌‌ی شما، main باشه، می‌تونید دستور اضافه شدن git به پروژه رو، به یکی از دو شیوه‌ی زیر بنویسید:git init --initial-branch=mainیاgit init -b mainو در نهایت اگر دوست‌دارید که تنظیمات پیش‌فرض git رو تغییر بدید و از این به بعد هر بار فرمان git init رو اجرا می‌کنید اسم branch‌ پیش‌فرض و اصلی شما main باشه، می‌تونید از این دستور استفاده کنید:git config --global init.defaultBranch mainبخش پنجم - حالا چیکار می‌کنی؟خوشحال می‌شم بهم بگید شما از کدوم استفاده می‌کردید و اگر جواب master بود، آیا تغییری ایجاد می‌کنید؟</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Tue, 14 May 2024 16:46:48 +0330</pubDate>
            </item>
                    <item>
                <title>این یک چالشه! (تایپ)</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%A7%DB%8C%D9%86-%DB%8C%DA%A9-%DA%86%D8%A7%D9%84%D8%B4%D9%87-%D8%AA%D8%A7%DB%8C%D9%BE-frkyuslmomnn</link>
                <description>سر کلاس یا سر کار، بعضی از دوستانم رو می‌بینم که با دو انگشت یا با نگاه مداوم به keyboard در حال نوشتن هستند. این سبک تایپ کردن ظاهر زیبایی نداره، ذهن شما رو درگیر می‌کنه و زمان شما رو هدر می‌ده. در عوض اگر شما خیلی مسلط تایپ کنید، هم خیلی جذابه، هم در زمان صرفه‌جویی می‌کنید و هم افکار خودتون رو متمرکز  نگه می‌دارید.چون می‌دونم به سادگی می‌تونید این مهارت رو کسب کنید، این پست رو نوشتم تا با شما در موردش صحبت کنم.(اگر فکر می‌کنی که تایپ کردن به چه کار میاد؟ بخش پایانی تلاش کردم پاسخ بدم.)تجربه‌ی منتو دفتر ما (طَمطام|tamtaam) یکی از برنامه‌نویس‌ها، خیلی مسلط و شیک تایپ می‌کرد. واقعاً انگار پشت میز یک رستوران باکلاس نشسته بود. (سلام مهدیار جان :)). همیشه به نظر می‌رسید که کار مهم‌تری از بقیه انجام می‌ده، ضمن این که از اونجایی که عقل به چشمه، به نظر می‌رسید که کار بهتری هم تحویل می‌ده.اما من، هم با سرعت کمی تایپ می‌کردم، هم در زمان تایپ به کلیدها نگاه می‌کردم.شاید واقعاً نیازی به نگاه کردن به صفحه‌کلید نداشم ولی طبق عادت این کار رو انجام می‌دادم و هیچ وقت هم تلاشی برای تغییر این عادت نکرده بودم، از طرفی چون من کار با کامپیوتر رو در سن کم، با بازی‌های کامپیوتری شروع کرده بودم، دستم رو طوری روی کلیدها قرار می‌دادم که برای بازی کردن راحت بود، نه برای نوشتن کد یا متن. (انگشت اشاره‌ی دست چپم رو، روی D قرار می‌دادم که به جهت‌ها مسلط باشم.)اگر شما هم هنوز تلاشی برای تصحیح این روند نکردید، پیشنهاد می‌کنم از همین الان شروع کنید.البته من الان هم یک تایپیست حرفه‌ای نیستم (از اعداد روی تصویر ابتدایی می‌تونید بفهمید.) ولی چون سایتی که می‌خوام معرفی کنم، مدرک بامزه‌ای می‌داد و برای خود من جالب بود، قبل از نوشتن این پست گرفتمش و تصمیم گرفتم از شما هم بخوام این روند رو تغییر بدید و مدرک بگیرید تا یک چالش ساده برای سال جدید داشته باشید.از کجا شروع کنم؟تعداد زیادی سایت هستند که برای این کار به شما کمک می‌کنند. من دو تا رو پیشنهاد می‌کنم (برای تایپ انگلیسی) ولی اگر به نظر شما جالب نبود، ده‌ها امکان دیگه دارید که بررسی کنید.پیشنهاد اول من: https://www.typingstudy.comاین سایت خیلی ساده و بدون ثبت‌نام شما رو مرحله به مرحله با تمرین‌های خوب جلو می‌بره.پیشنهاد دوم: https://www.typing.comاین سایت یک دنیا امکانات جالب داره، اگر دوست‌دارید بیشتر در موضوع غرق بشید، من این سایت رو پیشنهاد می‌کنم. روند موفقیت رو می‌تونید ببینید، اشکالات و ضعف‌های خودتون رو بفهمید، همراه با بازی کردن مهارت کسب کنید و حتی مدرک بگیرید.با چه سرعتی باید تایپ کنم؟سرعت تایپ کردن شما معمولاً با واحد WPM که کوتاه شده‌ی عبارت Words per minute (لغت در دقیقه) هست، سنجیده می‌شه.این که شما چه متنی رو تایپ می‌کنید مهمه. طبیعیه که اگر متن‌های ترکیبی با اعداد و نقل‌قول و ... باشه، سرعت شما کم می‌شه ولی اگر روی صحیح تایپ کردن تمرکز کنید و دیگه به صفحه‌کلید نگاه نکنید، بعد از مدت کوتاهی سرعت شما، خود به خود خوب می‌شه.من فکر می‌کنم که اگر کار شما به صورت تخصصی تایپ کردن نیست، سرعت ۴۰ عدد مناسبی باشه.ولی به طور کلی این آمار برای حرفه‌ای ها بالای ۶۵ لغت در دقیقه است که حتی تا بالای ۱۰۰ هم می‌رسه.چقدر زمان نیاز است؟اگر هر روز فقط ۲۰ دقیقه روی یکی از سایت‌هایی که معرفی کردم، تمرین کنید. من به شما قول می‌دم که حداکثر در ۲ ماه، مهارت خیلی خوبی در تایپ کردن، پیدا می‌کنید.رویکرد‌های منفیبعد از مطرح کردن این موضوع بعضی از بازخورد‌های منفی ایناست که اصلاً به چه کار ما میاد؟ الان دیگه همه چیز لمسی شده، با گوشی بیشتر می‌نویسیم، تبدیل متن به گفتار داریم و ... .اما اگر شما دوست‌دارید در آزمون‌های کامپیوتری زبان شرکت کنید. این مهارت به کار شما میاد. اگر حتی دوست‌دارید در آینده Apple Vision Pro تهیه کنید. بازم باید با ۱۰ انگشت تایپ کنید ولی روی فضای خالی که تسلط بیشتری هم نیاز داره.</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Sat, 16 Mar 2024 10:43:51 +0330</pubDate>
            </item>
                    <item>
                <title>امنیت ملی به زبان برنامه‌نویسی مرتبط است!</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%A7%D9%85%D9%86%DB%8C%D8%AA-%D9%85%D9%84%DB%8C-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%D8%B1%D8%AA%D8%A8%D8%B7-%D8%A7%D8%B3%D8%AA-jmzmlnbbq5z6</link>
                <description>نوشته‌ای در مورد زبان Rust و جایگزین‌های ++Cمهاجرت به زبان دیگرکاخ سفید (اگر دقیق‌تر بخوام بگم: US White House Office of the National Cyber Director (ONCD))، تأکید کرده که: همه‌ی برنامه‌نویس‌ها، باید از زبان‌های برنامه‌نویسی memory safe استفاده کنند.در واقع از زبان‌هایی مثل C و ++C استفاده نکنند و از زبانی مثل Rust استفاده کنند. (زبان‌هایی که اشاره کردم به طور مستقیم در گزارش اصلی، به عنوان مثال ذکر شده‌اند.) اصل گزارش رو اینجا مطالعه کنید.بعضی از بزرگترین مشکلات امنیتی در دوره‌ی اینترنت به خاطر همین مشکلات ناشی از ایمن نبودن حافظه ایجاد شده‌اند.(اگر در مورد memory safety نمی‌دونید در بخش پایانی (چرا memory safe؟) توضیحاتی رو نوشتم.)و اما Rustعلاوه بر تاکید کاخ سفید، در گزارش سالیانه‌ی سال 2023 در stackoverflow به زبان Rust اینطور اشاره شده:Rust is the most admired language, more than 80% of developers that use it want to use it again next year.فکر می‌کنم این هشتمین سال پیاپی هست که زبان Rust به عنوان مورد تحسین‌ترین یا دوست‌داشتنی‌ترین زبان سال (طبق آمار) انتخاب می‌شه.هر روز هم بیشتر و بیشتر در مورد این زبان می‌شنویم. خود من در ابتدای پست قبلی (جایی برای برنامه‌نویس‌ها نیست!) به زبان Rust اشاره کردم و حالا دوباره دارم از Rust می‌نویسم.پس اگر برنامه‌نویس هستید و یا به برنامه‌نویسی علاقه‌دارید باید این زبان رو جدی بگیرید.پیش‌داوریاین زبان (++C) برای خیلی‌ها از جمله خود من بیشتر از فقط یک زبان برنامه‌نویسیه.من سال‌ها ++C رو درس دادم و ازش در پروژه‌ها استفاده کردم اما مدتی می‌شه که در مورد جایگزین کردن زبان ++C صحبت می‌شه. اگرچه ناراحتم ولی خب چه می‌شه کرد. این زبان کاستی‌های جدی داره و بالاخره باید ازش عبور کنیم.تصور من این بود که دیر یا زود چیزی شبیه به آن‌چه که در ابتدای متن نوشتم منتشر می‌شه و همه به طور جدی برای مهاجرت از این زبان اقدام می‌کنند ولی پیشبینی من جایگزین شدن زبان Carbon بود.Carbonاز این جهت مدت زیادی برای یادگیری و تسلط به زبان Rust مقاومت کردم، چون فکر می‌کردم با اومدن Carbon همه به سمت این زبان می‌ریم.زبان Carbon در سال 2022 در کنفرانس cppnorth به طور رسمی معرفی شد.این پروژه که در Google شروع شده بود، از ابتدا هم قرار بود تا جایگزین ++C شود. مزیت مهم این زبان امکان همکاری دوطرفه (bi-directional interoperability) با ++C بود. این یعنی برنامه‌نویس‌ها می‌تونند تا کد‌های ++C رو داخل فایل‌های Carbon داشته باشند.خب Rust چنین امکانی رو نداره و این یعنی هزینه‌ی عبور از ++C با زبانی مثل Rust خیلی بیشتر از Carbon می‌شه اما به نظر، برای کاخ سفید مشکلات امنیتی جدی، حالا باعث این اقدام شده.فکر می‌کنم دیگه نباید منتظر Carbon باشیم. Carbon برای سال 2027 برنامه‌ریزیی شده بود.چرا memory safe؟فرض کنید یک آرایه یا لیست به نام MyCollection ساختیم و اسامی ۱۰ تا از دانش‌جوهای یک کلاس رو داخلش ریختیم.شما در واقع درخواست می‌کنید تا حافظه‌های مورد نیاز برای اسم‌ها گرفته شود. (به گرفتن حافظه Memory Allocation می‌گوییم.) بعد اسم‌ها رو داخل این حافظه‌ها می‌نویسید. احتمالاً می‌دونید که آدرس شروع این حافظه‌ها رو هم در MyCollection نگه می‌دارید.شما می‌تونید بعداً درخواست کنید که مثلاً نام دانشجوی دوم روی صفحه چاپ شود.تا حالا فکر کردید که آیا ممکن است برنامه‌ی دیگری به این بخش از حافظه که شما اشغال کرده‌اید، دسترسی داشته‌باشد؟اگر این اتفاق بیوفتد خب اطلاعات مهم ما لو رفته.یا حتی شاید ممکن باشد کسی این اطلاعات رو بازنویسی کند مثلاً نام یکی از دانشجو‌ها رو تغییر دهد.گاهی حتی شاید خود ما در اثر اشتباه در کار کردن با این حافظه‌ها دچار اشکال بشویم.این بخشی از مشکلاتی است که ایمن نبودن حافظه برای ما ایجاد می‌کند.البته زبان های دیگری مثل #C  و Java هم به عنوان زبان‌های memory safe در نظر گرفته می‌شوند ولی Rust به خاطر ساختارهایی که ارائه می‌ده، در این زمینه موفق‌تر عمل کرده.برداشت نادرستامیدوارم این متن باعث نشه فکر کنید که باقی زبان‌های برنامه‌نویسی خوب نیستند. یا مثلاً اگر الان زبان دیگری رو بلد هستید، نگران بشید.همه‌ی زبان‌های پر استفاده‌ی موجود، مزیت‌های قابل رقابت خود رو دارند و هر کدام مناسب کاری هستند. اگر من رو بشناسید، می‌دونید که خود من بیشتر از زبان #C استفاده می‌کنم و این زبان رو بسیار دوست دارم و قرار هم نیست پروژه‌های خودم رو به Rust منتقل کنم.تصویر ابتدای مقاله رو با یک prompt ساده با استفاده از Microsoft Copilot ساختم و عنوان جالب داخل تصویر رو هم از مقاله‌ای که دیروز در همین رابطه در stackoverflow.blog منتشر شده‌بود برداشتم که به جمله‌ی معروف In God We Trust، اشاره داره که روی دلارهای آمریکا نوشته شده.</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Tue, 05 Mar 2024 19:36:31 +0330</pubDate>
            </item>
                    <item>
                <title>جایی برای برنامه‌نویس‌ها نیست!</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%AC%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D9%87%D8%A7-%D9%86%DB%8C%D8%B3%D8%AA-xmhihnm8yiyz</link>
                <description>آیا با وجود AI‌ هنوز باید برنامه‌نویسی یاد گرفت؟با وجود ChatGPT (یا به طور کلی LLM)؛ آیا در آینده، کاری برای برنامه‌نویس‌ها وجود خواهد داشت؟مدتی می‌شه که این سوال، مکرر از طرف دانشجوهام پرسیده می‌شه. حتی در محل کار با یکی از برنامه‌نویس‌های قدیمی در مورد زبان Rust و اهمیت یادگیریش صحبت می‌کردم، خیلی جدی گفت: دیگه فرصتی برای یادگیری زبان جدید نیست، به زودی AI جایگزین می‌شه.نظر منبه این حرف‌ها توجه نکنید.برنامه‌نویس‌ها در دهه‌های گذشته (در کنار تمام متخصصین دیگر) اغلب مشغول حل مشکلات و ساده سازیِ کارهای بشر بودند. (عکاسی، معماری، کارخانه‌ها و ...)حالا این ابزار جدید این‌بار، به ساده سازی کار خود ما هم منجر می‌شود. در همه‌ی کارهای دیگر، این ساده سازی مبنای توسعه بیشتر شده‌است. حالا برای خود ما چطور باید پایان کار باشد؟ این برای ما هم به عنوان برنامه‌نویس، یک شروع جدید است نه یک پایان.در طول تاریخ بشر، کارهای زیادی حذف شده‌اند و یا تغییر شکل پیدا کرده‌اند. متاسفانه یا خوشبختانه کار ما هم در خیلی از بخش‌ها، حذف کارهای دیگران بوده‌است.به طور مثال الان در حال حذف راننده‌ها هستیم. ماشین‌های خودران قرار است مسئولیت جابه‌جایی ما یا بارهای ما را به عهده بگیرند ولی در همین مورد کجای راه قرار داریم؟پیش‌بینی می‌شود تا سال ۲۰۳۵ ماشین‌های خودران در سطح ۳ فقط ۳۷ درصد از سهم بازار را خواهند داشت. سطح ۳ یعنی هنوز هم به طور کامل مستقل از راننده نیستند. Forbesاین موضوع نیاز به برنامه‌نویس را در همه‌ی شرکت‌های خودروسازی بیش از پیش می‌کند و این یعنی توسعه‌ی بازار کار ما.البته توجه داشته باشید که بازار کار ما در بعضی از بخش‌ها در حال کوچک شدن است و در بخش‌های دیگری (مثل اینترنت اشیا) در حال رشد.‌مثلاً در همین مورد IoT شرکت‌های تولید لوازم خانگی نیز بیش از پیش به برنامه‌نویس نیاز خواهند داشت.نحوه‌ی کار ما (مثل نحوه‌ی کار عکاس‌ها در سال‌های گذشته) در حال تغییر است ولی کار ما همچنان پابرجاست.شاید سنگدلانه به نظر برسه ولی در واقع ما به عنوان یکی از پایه‌های حذف کارهای دیگران، خودمان باید تا پایان حذف همه‌ی کارها، سرکار باشیم. تو بهتر می‌فهمی یا مدیرعامل Nvidia؟پاسخ کوتاه: مناز اونجایی که بیشتر شما فکر می‌کنید چیزی که گفتم حمل بر خودستایی می‌شه، باید تصحیح کنم که خیر، همِّ بر خودستایی می‌شه. (از همت میاد به معنی تلاش کردن.) ولی لطفاً چند لحظه به من توجه کنید. :))))Jensen Huang (CEO of Nvidia)یک کلیپ از مدیرعامل Nvidia‌ در حال دست به دست شدنه که داره می‌گه:در ۱۵ سال گذشته همه می‌گفتند که: یادگیری کامپیوتر (Computer Science) برای بچه‌ها حیاتیه و هرکسی باید برنامه‌نویسی رو یاد بگیره، ولی حقیقت درست عکس اینه. این کارِ ماست تا تلاش کنیم که هیچ‌کس مجبور به برنامه‌نویسی نباشه. زبان برنامه‌نویسی الان زبان بشره و هر کسی الان برنامه‌نویسه.اگر در جریان رشد (انفجار) سهام این شرکت باشید، احتمالاً حدس می‌زنید که این سخنرانی جنبه‌ی تجاری داره نه علمی و تخصصی.من نظر شما رو به پاسخی که یکی از دانشمندان حوزه‌ی کاری خودمون به Jensen Huang داده، جلب می‌کنم:مضمون متن:هوش مصنوعی کدنویسی رو می‌کشه، همونطور که Compilerها کد نویسی رو کشتند.چه مدلی از زبان‌های بشر امکان ارائه‌ی جزئیات مناسب و دقیق برای ساخت و نگهداری برنامه‌ها دارن؟ما به اینا (که اشاره شد) می‌گیم: زبان‌های برنامه‌نویسی.....همچنین بدیهیه که بچه‌ها باید یادگیری نوشتن رو هم متوقف کنند چون ما keyboard داریم.یادگیری خوندن رو هم متوقف کنند چون کتاب صوتی داریم.در نهایت، بچه‌ها نباید یادبگیرند که آشپزی کنند، قبض پرداخت کنند و لباس بپوشند، چون ما می‌تونیم برای اون‌ها اپلیکیشن بسازیم.یکی از پست‌های چالشی سال گذشته در X رو هم ضمیمه می‌کنم که توسط New Yorker هم qoute شده بود:داغ ترین زبان برنامه‌نویسی جدید، انگلیسی است.نویسنده‌ی این پست خودش از کارکنان OpenAI بود. (الان دیگه نیست.)ولی خب، ما همیشه به انگلیسی کد می‌نوشتیم. و همیشه در حال نزدیک کردنش به زبان خودمون بودیم. هر کسی انگلیسی بلد باشه قرار نیست بدون فهم مفاهیم تخصصی برنامه بسازه.حالا دوست‌دارم نظر سَم آلتمن، مدیرعامل OpenAI و در واقع ChatGPT‌ رو هم در این مورد بدونید:در قسمت ۶ از پادکست Unconfuse Me with Bill Gates (شنیدنش رو توصیه می‌کنم) بیل گیتس میزبان سَم آلتمن هستش و بخشی از صحبت‌های سَم آلتمن رو اینجا به عنوان پایان‌بندی ضمیمه می‌کنم:Right now, we have AI systems that can do tasks. They certainly can’t do jobs, but they can do tasks, and there’s productivity gain there.....Right now, maybe we can speed up a programmer 3x. That’s about what we see, and that’s one of the categories that we’re most excited about it. It’s working super-well. But if you make a programmer three times more effective, it’s not just that they can do three times more stuff, it’s that they can – at that higher level of abstraction, using more of their brainpower – they can now think of totally different things. It’s like going from punch cards to higher level languages didn’t just let us program a little faster, it let us do these qualitatively new things. We’re really seeing that.....Coding is probably the single area from a productivity gain we’re most excited about today. It’s massively deployed and at scaled usage at this point.سَم آلتمن هم منتظر دیدن توسعه‌ی کار برنامه‌نویس‌هاست نه پایان کار اون‌ها. خودش اشاره می‌کنه که شاید روزی برسه که ما بتونیم به AI بگیم برو یک شرکت برای من راه‌اندازی کن و خودت هم ادارش کن یا شاید یک روز بهش بگیم برو یه فزیک جدید کشف کن. (اینطوری دیگه تقریباً همه‌ی انسان‌ها بی‌کار می‌شن.)در کل، همه‌ی آمارها خبر از رشد نیاز به برنامه‌نویس در سال‌های آینده دارند.خلاصه به شما بگم که دنیا حالا حالاها به ما نیاز خواهد داشت. اگر برنامه‌نویسی رو دوست‌دارید همین امروز شروع کنید. اگر برنامه‌نویس هستید تلاش کنید با تکنولوژی‌های جدید آشنا بشید. </description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Wed, 28 Feb 2024 11:00:37 +0330</pubDate>
            </item>
                    <item>
                <title>نگاه اولیه به NET Aspire.</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D9%86%DA%AF%D8%A7%D9%87-%D8%A7%D9%88%D9%84%DB%8C%D9%87-%D8%A8%D9%87-net-aspire-vkgznlybonne</link>
                <description>چند هفته‌ی گذشته مشغول بررسی و امتحان NET Aspire. بودم و نتیجه رو اینجا با شما به اشتراک گذاشتم. اگر NET. کار می‌کنید حتماً با Aspire آشنا بشید.تلاش کردم توضیحات رو همراه با مراحل راه‌اندازی بیان کنم تا در صورت نیاز از همین مقاله استفاده کنید. اگر توضیحات اولیه برای شما مهم نیست، مستقیم به بخش اجرا بروید.نمای کلیتعریفی که خود Microsoft ارائه کرده‌است:.NET Aspire is an opinionated, cloud ready stack for building observable, production ready, distributed applications.اما تعریف من، اگر Microsoft بودم:دنبال ساخت پروژه‌های بزرگ، مبتنی بر معماری Microservice، روی بستر Cloud هستی؟ ما در حال ساختن یک ساختار برای تولید، توسعه، استقرار و رصد این پروژه‌ها هستیم. به شما کمک می‌کنه تا همه‌ی سرویس‌های یک پروژه رو یک‌جا مدیریت کنید. توسعه این پروژه حتماً برای ترویج بیشتر استفاده از NET. و همچنین گسترش استفاده از Azure انجام شده. (که اگر شما هم مثل من توسعه دهنده‌ی NET. باشید از این موضوع خوشحال خواهید شد.)این ساختار هنوز کامل نشده و در حال توسعه است. اما الان می‌تونید روی سیستم خودتون امتحانش کنید.همه چیز باید Preview‌ باشدنکته اول این که برای استفاده از Aspire باید Visual Studio Preview رو نصب کنید و امکان استفاده از Aspire روی نسخه‌های پایدار و به روز VS، هنوز ممکن نیست.برای پیدا کردن و نصب بیشتر NuGetها هم باید گزینه‌ی Include prerelease رو تیک بزنید.و همچنین توصیه می‌کنم NET 9.‌ رو هم نصب کنید. (امکان تست روی NET 8.‌ وجود دارد ولی بیشتر امکانات برای نسخه ۹ توسعه داده‌شده‌اند.)شروعحالا فقط کافی است که یک پروژه از نوع Aspire بسازید. (با NET Aspire Starter Application. شروع کنید.)پروژه‌ی ساخته شده شامل چند سرویس ساده برای تست و همچنین ۲ پروژه با پسوند‌های AppHost‌ و ServiceDefaults است.شما در زمان اجرا فقط پروژه‌ی AppHost‌ رو اجرا می‌کنید و این پروژه، همه‌ی پروژه‌های دیگر را اجرا می‌کند.در پروژه‌ی AppHost‌  فقط فایل Program.cs قابل مشاهده است که پروژه‌های دیگر داخل این فایل معرفی شده‌اند. هر پروژه‌ی web جدیدی هم که به solution اضافه کنید به صورت خودکار به این بخش افزوده خواهدشد.در نهایت redis هم در همین فایل Add شده است و به هر یک از پروژه‌ها که نیاز باشد ارجاع داده می‌شود:پروژه‌ی ServiceDefaults هم شامل یک فایل با نام Extensions.cs است که تنظیمات کلی برای دیگر پروژه‌هاست. هر پروژه‌ی web‌ که به solution اضافه کنید، این پروژه به صورت خودکار به Dependencyهای پروژه‌ی جدید اضافه می‌شود.پرانتزی در مورد Kubernetes و Dockerاینجا این سوال مطرح می‌شود که: حالا که Microsoft یک ساختار برای اجرا و مدیریت Microservice ساخته و از عبارت orchestration (این عبارت برای معرفی Kubernetes استفاده شده‌است.) هم در معرفی بارها استفاده کرده است. آیا ما از Kubernetes و Docker بی‌نیاز هستیم؟اول این که Kubernetes و Aspire ساختارهای متفاوتی دارند ولی پاسخ اجمالی این که خیر، چرخ رو از اول اختراع نکرده‌اند.شما باید برای اجرای پروژه حتماً Docker را نصب داشته باشید و Kubernetes  هم جزو Packageهای از پیش نصب شده در پروژه‌ی AppHost است.اجرابخش جالب ماجرا از این‌جا شروع می‌شود.بعد از اجرای پروژه شما یک صفحه‌ی شگفت‌انگیز را مشاهده می‌کنید:من برای تست چند پروژه ساختم. برای شما در ابتدا ۲ پروژه‌ی پیش‌فرض نمایش داده می‌شود.در ابتدا لیست و اطلاعات همه‌ی پروژه‌ها نمایش داده می‌شود. redis هم در سطر اول به عنوان یک Container مشخص شده است. امکان مشاهده‌ی Logها و Detailها را دارید و در نوار کناری بخش Monitoring‌ را هم مشاهده می‌کنید.در این dashboard امکانات متنوعی برای رصد پروژه‌ها ایجاد شده است:بررسی یک سناریو برای درک بهترمن یک سناریو ساختم که با هم بررسی کنیم:یک پروژه به عنوان web.bff ایجاد کردم تا همه‌ی درخواست‌ها را پاسخ بدهد و درواقع یک reverse proxy باشد و درخواست‌ها را به سرویس‌های متناظر ارجاع دهد.در پروژه‌ی BFF یک middleware هم برای authentication تعریف کردم تا صحتِ APIKey درخواست‌ها را بررسی کند. به این صورت که به یک پروژه‌ی دیگر به نام infrastructure.core با gRPC‌ متصل شود و APIKey‌ را هم در redis‌ نگه دارد.در مرحله‌ی بعد اگر همه چیز درست بود، درخواست را به API اصلی ارجاع دهد.یک پروژه هم با نام playground ایجاد کردم که API تستی داخل آن باشد. اسم API هم WeatherForecast است.نتیجه Monitoring‌ این درخواست به WeatherForecast را می‌توانید در تصاویر زیر مشاهده کنید.در سطر دوم مشخص شده است که من در چه زمانی این درخواست را ارسال کرده‌ام و چه پروژه‌هایی درگیر این درخواست شده‌اند:همانطور که مشاهده کردید مدت زمان پاسخ هم درج شده است.شما می‌توانید برای هر درخواست جزئیات دقیق‌تری را هم مشاهده کنید:اینجا ترتیب و مدت زمان دقیق درخواست‌ها (طبق سناریو بالا) کاملاً مشخص شده است و حتی جزئیات هر درخواست به تفکیک نیز قابل مشاهده است. (دیدن اینا من رو خیلی هیجان‌زده کرده بود.)حالا در بخش Structured Logs هم می‌توانیم مشاهده کنیم که به طور مثال در زمان درخواست به playground تلاش کرده تا به https پروژه redirect‌ بدهد که پیدا نشده است و warning ثبت شده:فوق‌العاده بووووووووووووووووود. :)و مرحله‌ی آخر Deployدر حال حاضر که من این مقاله را می‌نویسم، زمانی که برای publish پروژه‌ی AppHost‌ اقدام کنید، با صفحه‌ی زیر روبه‌رو می‌شوید و خبری از ساختار قبلی که امکان publish روی سیستم یا از طریق FTP داشتیم نیست:شما برای publish حتماً به Azure نیاز دارید. قطعاً این خبر خوبی برای ما داخل ایران نیست. البته در حال حاضر به طور کلی publish برای Aspire یک فرآیند ناقص است. شما اول باید یک manifest بسازید و در نهایت هم بخشی از امکاناتی که به صورت local می‌دیدید، برای شما در دسترس نخواهد بود.نظر شخصیبا یک زیرساخت خوب و کارآمد روبه‌رو هستیم که احتمالاً در نیمه‌ی دوم ۲۰۲۴ به بلوغ کافی برای استفاده در پروژه‌ها خواهد رسید.</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Mon, 19 Feb 2024 17:06:31 +0330</pubDate>
            </item>
                    <item>
                <title>رنگ‌ها را OKLCH کنید!</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%B1%D9%86%DA%AF-%D9%87%D8%A7-%D8%B1%D8%A7-oklch-%DA%A9%D9%86%DB%8C%D8%AF-gtcgt7sagpmj</link>
                <description>چند هفته‌ی پیش به طور اتفاقی به شیوه‌ی معرفی رنگی به نام Oklch برخوردم که من رو شگفت‌زده کرد.حدود یک هفته، همه‌ی کارها را رها کردم و مشغول بررسی و امتحان این مدل رنگی جدید شدم. احساس کردم مشکلات زیادی را حل می‌کند و متوجه شدم که هنوز به فارسی در مورد این موضوع صحبت نشده‌است.این مقاله را جهت آگاه‌سازی و هم‌اندیشی مرقوم کردم.پروژه‌ای را هم برای تست خودم (و البته شما) ایجاد کردم که در آدرس زیر در دسترس است:لینک: https://oklch.tamtaam.comکد: https://github.com/AliRezaBoroujerdian/oklchو Oklch چیست؟یک شیوه‌ی معرفی رنگ (یا در ترجمه‌ی لغوی یک فضای رنگ - color space) جدید است که در &quot;CSS Color Module Level 4&quot; معرفی شده‌است.  (البته راه‌های جدید دیگری هم معرفی شده است. اگر کنجکاوی بیشتری دارید اینجا مطالعه کنید: w3)احتمالاً با مدل‌های قدیمی‌تر تعریف رنگ در CSS مثل RGB آشنایی کامل دارید:body {
     color: rgb(57, 140, 244);
}در Oklch این‌طور می‌نویسیم:body {
     color: oklch(64.24% 0.175 256);
}معرفی رنگ با Oklch چگونه است؟از دو الگوی (oklch(L C H یا (oklch(L C H / a می‌توانید استفاده کنید که حروف در این الگوها به شرح زیر هستند:حرف L ابتدای لغت Lightness است که با درصد مشخص می‌شود. در این بازه %0 سیاهی عمیق (بدون هیچ نوری) را تعریف می‌کند و %100 روشن‌ترین حالت است. دقت داشته باشید که درصد تعریف شده می‌تواند اعشار داشته باشد.حرف C ابتدای لغت Chroma است که خلوص رنگ را مشخص می‌کند. هر چه کمتر باشد، رنگ خاکستری‌تر و هر چه بیشتر باشد، اشباع شده‌تر و با خلوص بالاتر است. عددهای بالاتر در اصطلاح، رنگ های جیغ به شما می‌دهند. بازه‌ی Chroma از صفر شروع می‌شود و انتهای آن بسته به حالت‌های مختلف متفاوت است. (دقت کنید که مقادیر 0.15 و 15. هر دو برابر و صحیح هستند.)حرف H ابتدای لغت Hue خود رنگ را مشخص می‌کند. شامل بازه‌ی بسته‌ی 0 تا 360 می‌شود.حرف a ابتدای لغت Alpha است که میزان شفافیت (در واقع عدم شفافیت) را تعیین می‌کند. این مقدار هم می‌تواند به صورت درصد (%100 - %0) و هم به صورت عدد اعشاری (1 - 0) تعیین شود. مقدار 100% یا معادل آن عدد 1 حالت پیش‌فرض است که در آن شفافیتی برای رنگ وجود ندارد.برای امتحان این سایت را مشاهده کنید: https://oklch.comبرای امتحان این سایت را مشاهده کنید: https://oklch.comچرا Oklch مهم است؟رنگ‌های بیشتری را پشتیبانی می‌کند. نمایشگرهای به روز - مثل نمایشگرهایی که Apple به تازگی استفاده می‌کند - رنگ‌های بیشتری نسبت به نمایشگرهای sRGB قدیمی پوشش می‌دهند که این رنگ‌ها در Oklch قابل تعریف است. (فکر می‌کنم جالب است بدانید که این نمایشگرهای جدید هم هنوز، همه‌ی رنگ‌های قابل مشاهده‌ی ما را پشتیبانی نمی‌کنند.)یکسانی بیشتری در نمایشگر‌های متفاوت دارد.خوانایی بیشتری برای انسان‌ها نسبت به مدل‌های قدیمی‌تر دارد. در Oklch شما با نگاه کردن، فقط به اعداد متوجه خیلی چیزها مثل میزان روشنایی رنگ، شدت رنگ و … می‌شوید.و … .مهندسی‌سازبرای من به شخصه، موارد بالا مهم نبود.یک اصطلاح رایج درباره‌ی ساختمان وجود دارد که فلان ساختمان مهندسی‌ساز است. (این اصطلاح به طور معمول از طرف مشاورین املاک به سازه‌هایی که دقیق و اصولی ساخته شده‌اند اطلاق می‌شود.)به نظر من Oklch رنگ وب‌سایت‌ها را مهندسی‌ساز می‌کند. چرا؟۱. ساخت رنگ‌ها با ریاضیمن یک رنگ برای دکمه‌ها در نظر می‌گیرم::root {
     --btn-color: oklch(80% .1 218);
}
.button {
     Background: var(--btn-color);
}حالا تصمیم می‌گیرم که در زمان hover، رنگ این دکمه 5 درصد روشن‌تر شود..button:hover {
     Background: oklch(from var(--btn-color) calc(l + 5) c h);
}توضیح کد:اگر این عبارت را نوشته بودم:Background: oklch(from var(--btn-color) l c h);همان رنگ قبلی را ارائه می‌کرد. (مقادیر c، l و h تغییری نمی‌کرد.) من با استفاده از calc به درصد روشنایی قبلی، 5 واحد اضافه کرده‌ام. در ادامه در نظر دارم که برای خطاها یک دکمه بسازم که از نظر روشنی و خلوص رنگ، دقیقاً برابر با سایر دکمه‌ها، ولی به رنگ قرمز باشد. پس می‌نویسم:.error{
     background: oklch(from var(--btn-color) l c 15);
}البته انجام این محاسبه‌ها به طور مستقیم ربطی به Oklch ندارد و در فضای رنگی hsl هم ممکن است. آنچه اینجا مهم می‌شود، امکان پیش‌بینی دقیق‌تر از خروجی رنگ‌ها به خاطر ساختار معرفی رنگ در Oklch است. (حالت‌های قبلی به اندازه‌ی Oklch محاسبه‌پذیر نبودند.)حالا به طور مثال اگر روشنایی رنگ متغییر btn-color-- را کم کنم، دو ساختار دیگر نیز از این تغییر پیروی می‌کنند و دکمه‌ها همچنان با هر رنگی، از نظر شدت روشنایی یکپارچه باقی خواهند‌ماند.برای بررسی دقیق‌تر، دکمه‌های تعریف شده در این صفحه‌ی نمونه را ببینید: https://oklch.tamtaam.com/۲. رنگ‌های دلخواه / Paletteاگر همه‌ی رنگ‌های صفحه را از قبل با یک الگو تعریف کنید. می‌توانید هر زمانی که نیاز شد، ترکیب رنگ صفحه را به هر چیزی که دوست‌دارید تغییر دهید.به طور مثال می‌توانید از این ساختار استفاده کنید:html {
     --hue: 320;

     --color-primary: oklch(5% .2 var(--hue));
     --color-secondary: oklch(13% .2 var(--hue));
     --color-base-primary: oklch(99% .05 var(--hue));
     --color-base-secondary: oklch(90% .1 var(--hue));
}من برای طراحی این صفحه فقط از یک رنگ استفاده کرده‌ام و برای بخش‌های مختلف، شدت روشنایی و یا خلوص رنگ را تغییر داده‌ام. حالا با استفاده از این متغییرها و تغییر دادن hue، صفحه‌ی من، هر رنگی را که انتخاب شده، در یک طیف مشخص نمایش می‌دهد.پروژه‌ی نمونه را باز کنید و هر عدد دلخواه را برای hue انتخاب کنید. حالا شما با یک ساختار طرف هستید که می‌تواند هر رنگ دلخواه را به خود بگیرد و همیشه هم استاندارد و خوانا باشد.۳. حالت تاریک / Dark Modeداشتن نمای تیره از همیشه ساده‌تر است. (به نظر من این بخش عالی بود.)اگر شما طیف‌های از پیش تعیین شده‌ی رنگی برای صفحه در نظر بگیرید. (مثل بخش قبلی) فقط با جابه‌جایی رنگ‌های روشن و تیره این امکان را دارید که از هر ترکیب رنگی، نمای روشن و تیره داشته باشید.به طور مثال این حالت تاریک برای کدهای بخش قبلی است:html {
     --hue: 320;

     --color-primary: oklch(99% .05 var(--hue));
     --color-secondary: oklch(90% .1 var(--hue));
     --color-base-primary: oklch(5% .2 var(--hue));
     --color-base-secondary: oklch(13% .2 var(--hue));
}در این کد فقط مقادیر قبلی جابه‌جا شده‌اند.برای آزمایش این بخش هم به صفحه‌ی نمونه مراجعه کنید. هر مقدار دلخواه را برای hue تعیین کنید و سپس حالت dark را انتخاب کنید.و حالا A11yعبارت A11y به لغت Accessibility اشاره دارد. در واقع یک اختصار برای این لغت است. یعنی حرف a و ۱۱ حرف بعد از آن و در آخر حرف y.در دنیای توسعه‌ی وب، A11y به تلاش برای دسترسی‌پذیر کردن هر چه بیشتر محیط وب، برای افرادی که به نوعی با محدودیت مواجه هستند، اشاره می‌کند. مثل افراد کم‌بینا یا حتی نابینا.من در حال تحقیق و تلاش در این زمینه بودم که به Oklch برخوردم و برای من، مهم‌ترین بخش، همین بخش بود.فضای رنگ Oklch به ما امکان طراحی و پیاده‌سازی یک ساختار اصولی را می‌دهد که علاوه‌بر مواردی که بالا ذکر شد بتوانیم با استفاده از هر نوع ترکیب رنگی (palette)، مطمئن باشیم که تضاد (contrast) رنگ‌ها بین نوشته‌ها و پس‌زمینه به میزان مناسبی وجود داشته باشد تا افرادی که با طیف وسیعی از مشکلات بینایی برای تشخیص رنگ‌ها درگیر هستند تجربه‌ی بهتری در استفاده از وب‌سایت‌ها داشته باشند.اگر دوباره به صفحه‌ای که برای نمونه طراحی کردم مراجعه کنید، می‌بینید که با انتخاب هر رنگی contrast با کیفیت بالایی حفظ شده‌است. و Opera کجایی؟ دقیقاً کجایی؟نکته قابل تامل این است که تا این لحظه که من در حال نوشتن هستم، مرورگر Opera در نسخه‌ی Android‌ از Oklch پشتیبانی نمی‌کند.این مورد را به عنوان یک نکته‌ی منفی در نظر نمی‌گیرم چون به احتمال زیاد در هفته‌های آینده این مورد حل خواهد شد.برای بررسی اینجا را چک کنید: mozillaدر پایاناگر این نوشته را با سایر افرای که در این حوزه فعال هستند به اشتراک بگذارید، بسیار خوشحال می‌شوم.اگر برای تصحیح و یا تکمیل این تجربه‌ی جدید می‌توانید کمک کنید در بخش نظرها، منتظر شما هستم؛ یا این‌که می‌توانید من را از طریق وب‌سایتم پیدا کنید: boroujerdian.com</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Sat, 25 Nov 2023 12:03:13 +0330</pubDate>
            </item>
                    <item>
                <title>به مناسبت روز برنامه‌نویس</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%A8%D9%87-%D9%85%D9%86%D8%A7%D8%B3%D8%A8%D8%AA-%D8%B1%D9%88%D8%B2-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-elsawlegbtke</link>
                <description>بخش اول - چین یا روسیه، مسئله این استروسیهایده‌ی به رسمیت شناختن روز برنامه‌نویس، اولین بار در سال ۲۰۰۲، از طرف دو تا برنامه‌نویسِ روس مطرح شد.اونا شروع کردن به جمع کردن امضا، برای ثبت دویست و پنجاه و ششمین روزِ هر سال، به عنوان روز برنامه‌نویس. هفت سال بعد، روسیه اولین کشوری بود که روز برنامه‌نویس رو به رسمیت شناخت.چرا ۲۵۶؟البته که می‌دونید ولی چون:همه‌ی ما برنامه‌نویس‌ها مبنای ۲ رو دوست داریم و ۲۵۶ می‌شه: ۲ به توان ۸.بزرگترین توان ۲ که کوچکتر از ۳۶۵ (تعداد روزهای سال).تعداد اعداد متمایزی که می‌توان در یک byte ذخیره کرد. (۰ تا ۲۵۵)چینچینی‌ها رویکرد دیگری داشتند. اونا ۲۴ اُکتبر رو روز برنامه‌نویس می‌دونن.۲۴ ُمین روز از ۱۰ ُمین ماه سال رو می‌شه اینجوری نوشت: ۱۰۲۴ که این می‌شه ۲ به توان ۱۰ و تازه برابر کیبی‌بایت هم هست.از اون جالب‌تر این که این تاریخ در همه‌ی سال‌ها دقیقاً یک روز می‌شه.در واقع ۱۰ اکتبر همیشه ۱۰ اکتبره ولی اون مدل روسی، در سال‌های کبیسه یک روز جابه‌جایی داره. (چون در تاریخ میلادی، اون ماهی که در سال‌های کبیسه یک روز زیاد می‌شه ماه دومشون هست؛ این تغییر به وجود میاد. یعنی روز برنامه‌نویس در سال‌های کبیسه ۱۲ سپتامبر و در سال‌های عادی ۱۳ سپتامبره.)ما رو به دودویی بودن می‌شناسند، پس ما هر دو روز رو جشن می‌گیریم و دو روز در سال خواهیم داشت. ;)بخش دوم - نوشابه باز کنیدقرار نیست بگم بقیه بدن و ما خوبیم ولی باید بگم که ما خوبیم و خیلی هم خوبیم.ما یک اجتماع بسیار فعال و دوست‌داشتنی داریم. پر از مغزهای خلاق و پیشرو که مثل یک جسم در سراسر زمین مشغول به کار و توسعه هستیم.آمار فعالیت داوطلبانه بین برنامه‌نویس‌ها به قدری بالاست که در سال ۲۰۲۲ فقط در سایت stackoverflow، بیش از ۲۸ هزار نفر روزانه بین ۱۵ تا ۱۲۰ دقیقه (کاملا رایگان) برای پاسخ دادن به دیگر برنامه‌نویس‌ها زمان صرف کرده‌اند.این آمار جدا از آموزش‌های رایگان، وبلاگ‌ها و ... است. در کنار این موارد، پروژه‌های آماده‌ی استفاده روی github و سایر سایت‌های مشابه هم که سر به فلک می‌کشه.ما در خط مقدم دسترسی آزاد به اطلاعاتیم و همشه در حال تلاش برای ایجاد برابری در دسترسی به امکانات.خلاصه که روز برنامه‌نویس رو به طور خاص به همکارها و دانشجوهای خودم تبریک می‌گم و به طور عام هم به همه‌ی برنامه‌نویس‌ها که این متن رو می‌خونند، تازه‌کارها یا حتی کسانی که دوست‌دارند برنامه‌نویسی رو شروع کنند.بخش سوم - چی بخریم؟همونطور که فهمیدید این متن برای یادآوری و البته پررنگ کردن روز برنامه‌نویس نوشته شده. به همین دلیل هم کمی زودتر منتشر می‌شه تا فرصت خرید هدیه داشته باشید.این متن رو به صورت کاملاً اتفاقی به مدیران و مسئولین مرتبط ارسال کنید که فرصت رو از دست ندن.خودمون رو بیشتر تحویل بگیریم. هدیه بخریم و البته که هدیه بگیریم. استیکرهای باحال برای لپ‌تاپ می‌تونه جالب و البته کم هزینه باشه. اگر پیشنهاد خوبی دارید یا هدیه جالبی گرفتید هم برای بقیه بنویسید.بخش چهارم - خانوادهما در گذشته به عنوان یک خانواده بیشتر با هم دعوا می‌کردیم. الان سال‌هاست که اون تعصب‌های آتشین به یک تکنولوژی یا زبان خاص کمتر شده. البته که هنوز وجود داره ولی در سال‌های نه چندان دور امکان داشت افرادی در جنگ‌های قبیله‌ای بین ویندوزی‌ها و لینوکسی‌ها به هلاکت برسند.چرا جاوا کارها باید عینک بزنند؟ چون دید تیز (C# - see sharp) ندارند.البته که کُری خوندن همیشه جالب و سرگرم کننده بوده ولی لطفاً تعصب نداشته باشید.در این بخش باید از شما درخواست کنم که لطفاً برای این روز خاص تولید محتوا کنید. پست منتشر کنید. استوری کنید. اگر امکانش رو دارید پادکست ضبط کنید، برای پادکست پیشنهاد می‌کنم از برنامه‌نویس‌های خیلی قدیمی دعوت کنید. افرادی که شاید ۵۰ سال پیش برنامه‌نویس بودند.حتماً نگاه محتوای شما در هر سال به موضوعات پیرامونی جامعه هم باشه. خیلی‌ها روی ما حساب باز کردن.نکته آخر هم این که:جذب شرکت‌هایی که حریم خصوصی رو به رسمیت نمی‌شناسند، نشید.بخش پنجم - مدیر بداز مشکلاتی هم که با دیگران داریم، دوست دارم به مدیر اشاره کنم. امان از مدیر بد.سال‌ها پیش، جایی کار می‌کردم که مدیر ما در تلاش بود بگه علاوه بر مدیر، برنامه‌نویس خفنی هم هست.وعده‌ی اضافه شدن امکاناتِ ناممکن به مشتری‌ها می‌داد، بعد تازه با ما مطرح می‌کرد. شاید باور نکنید ولی بدون هیچ مشورتی.یا مثلاً می‌پرسید که این دو تا کار چقدر از تیم زمان می‌گیره؟ من می‌گفتم اولی ۲ هفته و دومی هم ۳ هفته. بعد از ۳ هفته با تقویم وارد اتاق می‌شد و می‌گفت چرا بعد از گذشت ۳ هفته این کارها هنوز تموم نشده؟من می‌تونم یه کتاب فقط در مورد همین مدیر خاص بنویسم. انقدر که این آدم، سمّی بود. البته شاید تقصیر انتخاب خودمم بود. بین کار کردن در جای بهتر با حقوق کمتر یا کار کردن در جای بدتر با حقوق بیشتر من دومی رو انتخاب کرده بودم. (پیشنهادی که هر دو مورد رو داشته باشه، نداشتم.)یه بار قدم زنان وارد اتاق شد و بهم گفت: دوست داری یه سایت برات بنویسم که به محض باز کردن، سیستمت رو از کار بندازه؟ منم با اکراه گفتم چه جالب. حتماً.رفت. بعد از چند ساعت برگشت و گفت این دامنه رو باز کن. باز کردم و هیچ اتفاقی نیفتاد. =)متوجه شدم که یه کد JavaScript نوشته که حلقه‌های بی نهایت و یه سری چیزها داره که، چند لحظه مرورگر رو فریز می‌کنه. تازه اگر مرورگر، قدیمی و یک مرورگر خاص باشه.بعد نتیجه گرفت و توضیح داد که ببینید امنیت چقدر در خطر قرار داره و به همین سادگی می‌شه از آسیب‌پذیری‌های سیستم‌ها استفاده کرد.البته نمی‌دونم در سال‌های گذشته خودم چقدر مدیر سمی بودم ولی واقعاً همیشه تلاش کردم که نباشم.بخش ششم - یه if سادست مهندسمتاسفانه ما دیگه اون آدم‌های دور از دسترس نیستیم. یه زمانی آدم‌های مرموز و به نظر نابغه بودیم. اما الان تعداد کسانی که با کدنویسی آشنا هستند زیاد شده و از طرف دیگه‌ی بوم داریم میوفتیم.بعضی‌ها چون کمی از کدنویسی اطلاع دارند؛ دچار سندرم شیشه خیارشور می‌شن. فکر می‌کنن کار ما خیلی کار ساده‌ای باید باشه.از نظر تعداد برنامه‌نویس‌ها هم رشد قابل توجهی داشتیم. این موارد دست به دست هم دادن که نظرهای غیر تخصصی و چیزهای عجیب و غریب بشنویم.یه آمازون می‌خوام که کنارش یه تاکسی آنلاین هم داشته باشه.خلاق بودن بد نیست، ولی این که تصور می‌شه برای تولید این برنامه‌ها حداکثر نیاز به ۱۰ روز کار و بودجه‌ی ۱۰ میلیون تومنی داریم. خیلی اعصاب خورد کنه، تازه اگر نشنوی که:رایگان انجام بده تا برات رزومه بشه.شمارو به این چالش دعوت می‌کنم که به عنوان برنامه‌نویس درخواست‌های عجیبی که گرفتید رو بنویسید و با هشتگ روزبرنامه‌نویس منتشر کنین. (لطفاً برای نوشتن برنامه‌نویس از نیم‌فاصله استفاده کنید.)بخش هفتم - هوش مصنوعی و پایان کار برنامه‌نویسیو در نهایت اگر از اون دسته آدم‌هایی هستید که کمین کردید و منتظر نوشتن این جمله هستید:هوش‌مصنوعی کار برنامه نویسی رو تموم می‌کنه و این پایان کاره.اولاً نظر شما رو جلب می‌کنم به نظر آقای نادر ابراهیمی که:-- با احساس بخونید --هیچ پایانی به راستی پایان نیست. در هر سرانجام، مفهوم یک آغاز نهفته است.چه کسی می‌تواند بگوید «تمام شد» و دروغ نگفته باشد؟و دوماً هوش‌مصنوعی بدون ما مانا نیست. فعلاً‌ ما هستیم که هوش‌مصنوعی هست. (ایموجی با عینک آفتابی) البته که سبک و سیاق کار همیشه در حال تغییره، ولی ما هم همیشه به روز و یک قدم جلو تریم. (همچنان ایموجی با عینک آفتابی)روز همگی مباااااارک.</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Thu, 07 Sep 2023 18:53:45 +0330</pubDate>
            </item>
                    <item>
                <title>تجربه‌های یک کمال‌گرا از کمال‌گرایی</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%DA%A9%D9%85%D8%A7%D9%84-%DA%AF%D8%B1%D8%A7-%D8%A7%D8%B2-%DA%A9%D9%85%D8%A7%D9%84-%DA%AF%D8%B1%D8%A7%DB%8C%DB%8C-kok3jwqtxz6g</link>
                <description>این نوشته یک تحقیق علمی نیست و فقط، تجربه‌های شخصی من در مورد کمال‌گرایی است که علاقه‌مندم با شما به اشتراک بگذارم. دلیل این علاقه‌مندی هم شنیدن این جمله بود:هر ساله با یک نمودار خطی، تعداد کمال‌گراها در همه جای دنیا، در حال افزایش است.مشتاق شنیدن نظرهای شما هم هستم.فصل اول - داستان‌هابخش اول - لیستاولین بار که به من پیشنهاد شد تا برنامه‌نویسی تدریس کنم، یک لیست ذهنی بلندبالا ساختم. مطالعه‌ی کتاب‌های مرجعتحقیق در ارتباط با شیوه‌ی تدریستحقیق در ارتباط با چگونگی انتقال مطالبمشاهده‌ی تدریس اساتید درجه یکنوشتن شرح درسپیدا کردن مثال‌های مناسبآماده سازی پروژه‌های خارج از کلاس برای دانشجوهاو در ادامه هم از این دست افکار که:لباس مناسب تهیه کنم، شوخی‌های مناسب آماده کنم تا کلاس یکنواخت نشود و ... .بخش دوم - مبادابرای شروع، تصمیم گرفتم تا دقیق‌ترین منابع رو پیدا و مطالعه کنم. من برنامه‌نویس بودم، مدارک فنی مرتبط هم داشتم ولی تصور کردم مبادا چیزی از آموخته‌های من ناقص یا اشتباه باشد. من باید بهترین استاد ممکن می‌شدم. جستجو به دنبال دقیق‌ترین منابع رو شروع کردم؛ در نهایت با تحقیق و مشورت، دو کتاب مرجع را در نظر گرفتم. هر یک از کتاب‌ها بیش از هزار صفحه انگلیسی بود و زبان من هم، نیم‌بند. وقتی شروع به مطالعه کردم، فکر کردم مبادا تعاریف فنی که بسیار هم دقیق هستند در زمان ارائه در ذهن من کمرنگ، فراموش یا جابه‌جا شوند. شروع به خلاصه‌نویسی و یادداشت‌برداری کردم. بعد پاک‌نویس هم کردم. احساس کردم چون کار ما فنی است باید حتماً کدهای داخل کتاب را هم، یک به یک پیاده‌سازی کنم.اگر کمال‌گرا نیستید، به دنیای ما خوش‌آمدید. :)بخش سوم - تشویقمن تصور می‌کردم که نه تنها در مسیر صحیح، بلکه در بهترین مسیر ممکن هستم. از طرف دیگران هم مدام بازخورد مثبت می‌گرفتم. این تاییدها مزید بر علت می‌شد تا من با شدت بیشتری کمال‌گرایی کنم. در واقع من هر روز بیشتر از دیروز کمال‌گرا بودم.بخش چهارم - کمال‌گراها به بهشت نمی‌روندروز موعود (جلسه‌ی اول تدریس) فرارسید. زمان جلسه‌ی اول ۵ ساعت بود، با ۲ زمان استراحت ۱۵ دقیقه‌ای.من بعد از هفته‌ها شب‌بیداری سر کلاس حاضر شدم و فقط توانسته‌بودم کتاب‌های مرجع (اولین مورد لیستم) را تقریباً تمام کنم. بخشی از پاک‌نویس‌ها باقی مانده‌بود.دوره‌ی من یک دوره‌ی مقدماتی برنامه‌نویسی بود. در چنین دوره‌ای به ۸۰ درصد مطالب کتاب‌های مرجع، نیازی نیست، ولی من انقدر غرق در به کمال رساندن این یک کار شده‌بودم که از همه‌ی نکته‌های مهم دیگر، جا مانده‌بودم. از طرفی به شدت تحت فشار خواب بودم. مثال‌های مناسبی برای تدریس مقدماتی نداشتم (کتاب‌های مرجع معمولاً مثال‌های مقدماتی مناسبی ندارند.). حتی چون کتاب‌ها به زبان انگلیسی بود، در ارائه‌ی فارسی تعاریف هم دچار مشکل شده بودم. چطور فلان تعریف را به فارسی ترجمه کنم؟در آخر هم از خودم بسیار ناراضی و ناراحت بودم.بخش پنجم - سندرم مرحله‌ی اولنکته‌ی دردناک ماجرا این بود که اگر من به جای هفته‌ها تلاش بی‌وقفه، صبح روز کلاس بیدار می‌شدم، سرفصل‌های جلسه‌ی اول را مرور می‌کردم، سری به تعاریف و مثال‌های فارسی صفحه‌ی اول گوگل می‌زدم، حتماً مسلط‌تر و موفق‌تر می‌بودم. اصلاً فرض کنید که جلسه‌ی اول هم همه چیز عالی می‌شد. آیا واقعاً نیاز بود این همه زمان و انرژی صرف این موضوع شود؟ اگر به جای این کار روی مسائل دیگر کار می‌کردم بهتر نبود؟ مثلاً استراحت می‌کردم! حداقل خواب‌آلود نبودم.البته که خود لیست من کمال‌گرایانه بود و هرگز در فرصتی که داشتم به پایان نمی‌رسید ولی من حتی نتوانستم از مرحله‌ی اول عبور کنم.به نظرم در ذهن آدم‌ها، تلاش و پشت‌کار فراوان به خودی خود ارزش ذاتی دارد. حالا در هر جهتی که باشد. شاید به همین دلیل هم همه مرا تشویق می‌کردند. به نظرم بهتر است کمال‌گراها را برای تلاش و پشت‌کارِ صِرف، تشویق نکنیم. هرچه بیشتر، مسیر را به آنها یادآوری کنیم و آنها را به سمت مقصد سوق دهیم.در ارتباط با ارزش ذاتی تلاش، احتمالاً با این بیت حافظ آشنا هستید:غرض ز مسجد و میخانه‌ام وصال شماست            جز این خیال ندارم خدا گواهِ من استسوال اینجاست که اگر معشوق اهل لهو و لعب باشد، آیا بهتر نیست صرفاً مسیر می‌خانه را دنبال کنیم؟ و یا بلعکس؟ به هر حال که برآیند تلاش حافظ صفر است، پس ارزشی هم ندارد، بی‌خود منت سر معشوق نگذارید. متشکرم.من هم برای (وصال!) موفقیت با تمام وجود تلاش کرده بودم ولی تلاش من، سد راه من شده بود. (البته من بر خلاف حافظ، در مسیرهای متضاد نرفته بودم.)من وقتی کاری را شروع می‌کردم انقدر در مرحله‌ی اول می‌ماندم که هرگز به مرحله‌ی دوم نمی‌رسیدم. در امتحان‌های مدرسه، فصل اول از هر درس را تا سطح بی‌نهایت، عمیق می‌شدم و وقتی به خودم می‌آمدم فرصت کافی برای مطالعه‌ی فصل‌های دیگر باقی نمانده بود. ولی مغز من اجازه نمی‌داد که فصل اول را قبل از تسلط کامل رها کنم. من این موضوع را سندرم مرحله‌ی اول می‌نامم. اگر کمال گرا هستید، همیشه به این سندرم توجه داشته‌باشید. زمان، امکانات و توان شما محدود است.Done is better than perfectاین عبارت سال‌ها روی یکی از دیوارهای دفتر فیسبوک نقش بسته بود.بخش ششم - گاهی داستان‌ها غم‌انگیزتر می‌شونددر داستان قبلی من در زمان مشخصی، مجبور به شرکت در کلاس بودم و این موضوع مرا از ناکامی‌های بیشتر حفظ کرد و کم‌کم بهتر شدم ولی داستان دیگری در ارتباط با همین موضوع تدریس دارم.سال‌ها بعد به علت مشغله‌ی زیاد، تصمیم گرفتم تا تدریس را برخلاف میل شخصی، رها کنم؛ ولی قبل از این کار، همه‌ی دوره‌های آموزشی خودم را ضبط و روی یک کانال یوتیوب منتشر کنم تا شاید ثمره‌‌ی سال‌ها آموزش را به طریقی حفظ کنم و این راه ادامه داشته باشد. این کار خیلی برای من مهم بود ولی کمال‌گرایی کاری کرد که هرگز موفق نشدم.حدود ۳ سال پیش، یک کانال یوتیوب ساختم. دوباره شروع شد. کمال‌گرایی به من حمله کرد:من دارم اصل زحمت رو می‌کشم. باید کیفیت رو بالا ببرم تا دانشجوها با رضایت بیشتری آموزش‌ها رو دنبال کنند.بنر، تصویر پروفایل و کاور باید طوری باشد که مخاطب جذب شود.از امیرحسین (امیرحسین عبدی گرافیست شاخته شده و با سابقه) که از دوستان خوب من است، تقاضا کردم تا این موارد را طبق نظر من آماده کند. امیرحسین تلاش بسیاری برای جلب رضایت من کرد. پروفایل من در ویرگول که الان مشاهده می‌کنید، طرحی از صورت خودم و یکی از همان ساخته‌های امیرحسین برای کانال است. میکروفون خریدم، پروژه‌ها را آماده کردم و... . سر شما را درد نیاورم. همه چیز تهیه شد. تصمیم گرفتم ویدئوها را در دفتر طَمطام (گروه نرم‌افزاری خودم) ضبط کنم تا زمان آن دست خودم باشد.ویدئوی ابتدایی، در حدود یک دقیقه و نیم توضیح کوتاهی در مورد خودم و آموزش‌ها بود. بدون اغراق ده‌ها بار این ویدئو را ضبط کردیم. مکان‌ها را تغییر دادیم، زاویه‌ی دوربین را عوض کردیم. اصلاً به نظرم خوب نبود. دوباره در مرحله‌ی اول گیر کرده بودم. اما در نهایت پا روی این احساس‌های منفی گذاشتم و ویدئو را منتشر کردم. (این ویدئو را می‌توانید اینجا مشاهده کنید.)خودم اما طبق معمول، نارحت و مأیوس بودم.لینک ویدئو را به تعداد اندکی از دوستان و آشنایان نزدیک دادم. بازخوردها بد نبود ولی من انگار فقط منفی‌ها را می‌شنیدم که در واقع تایید نظر خودم بود.چرا صندلی‌ها در تصویر مشخص است؟ چرا دوربین کادر مناسب ندارد؟هفته‌ی بعد تصمیم گرفتم کمال‌گرایی را رها کنم و تلاش را ادامه دهم. یک آموزش ۳ قسمتی ضبط و منتشر کردم. در نهایت این ۳ قسمت کوتاه، نقطه‌ی پایان این کار شد. چند بار دیگر هم در سال‌های بعد تلاش کردم ولی هرگز به رضایت نسبی برای انتشار ویدئوهای دیگر نرسیدم.من از این دست داستان‌ها، فراوان دارم ولی فعلاً از داستان‌ها بگذریم.فصل دوم - تحلیل‌های منبخش اول - کمال‌گرا شدنتا قبل از این که مشاور به من بگوید:تو در حد بسیار بالایی کمال‌گرا هستی و باید این مسئله رو درک و کنترل کنی.در این موضوع، من گاهی یک آدم سخت‌گیر، گاهی یک آدم دقیق، گاهی شایسته‌ی تقدیر بابت انجام صحیح کارها، گاهی روی اعصاب برای توجه بیش از حد به جزئیات و غیره بودم. بعد از جمله‌ی مشاور اما به جای بیشتر این تحسین یا تقبیح‌ها،  فقط یک کمال‌گرا شدم.کمال‌گرا برای من واژه‌ی دوری نبود، البته به طور معمول به عنوان تعریف. در واقع من از بخش تاریک و آسیب‌های کمال‌گرایی بی اطلاع بودم.بخش دوم - دَرکفهم این موضوع و به طور کلی شناخت بهتر کمال‌گرایی به من کمک زیادی کرد.فصل جدیدی را در زندگی شروع کردم. علت برخی از رفتارهای مرتبط را فهمیدم. وقتی در کارها به حد کمال نمی‌رسیدم، کمتر خودم را سرزنش می‌کردم. اعتماد به نفس من بیشتر شد.شاید باور نکنید ولی همه‌ی این موارد فقط با آگاهی از کمال‌گرایی اتفاق افتاد. از این جهت اگر کمال‌گرا هستید، تلاش کنید تا دانش خود را در این زمینه افزایش دهید و برای فهم بیشتر هم کمک بگیرید.بخش سوم - کنترلاگر کمال‌گرا نباشید شاید این‌طور قضاوت کنید که به محض دَرکِ این موضوع، مشکل برطرف خواهد شد.یعنی مثلاً در مثالی که راجع به امتحان‌ها و باقی ماندن فصل‌های پایانی زدم، اولین بار که متوجه باقی ماندن فصل‌های آخر کتاب برای امتحان شدم، باید آخرین بار هم می‌شد و از امتحان بعدی، کار را به شیوه‌ی درست انجام می‌دادم.خیر، موضوع پیچیده‌تر است.من اگر از فصل اول ساده عبور می‌کردم، هجوم افکار منفیِ غیرقابل کنترل شروع می‌شد که:من نمره‌ی کامل فصل اول رو هم نمی‌گیرم. فصل‌های بعدی حتماً به این فصل ارجاع دارند و در ادامه‌ی هم هستند، پس امکان یادگیری آن‌ها هم نیست. فصل‌های بعدی حتماً سخت‌تر هستند و من که فصل اول رو نمی‌توانم ۱۰۰ درصد مسلط شوم، وای به حال فصل‌های بعد، بهتر است همین فصل را نمره کامل بگیرم و... .هر نکته‌ای را هم که متوجه نمی‌شدم، چون اعتماد به نفس نداشتم احساس می‌کردم حتماً به خاطر عدم تسلط به فصل قبلی است. حتی گاهی این‌طور فکر می‌کردم که من به قدر کافی به دروس سال‌های گذشته تسلط ندارم و نمی‌توانم درس‌های جدید را کامل بفهمم.برای کنترل کمال‌گرایی، نیاز به ابزاری بود که من نداشتم. من هنوز هم نمی‌توانم تشخیص بدهم کجا حد معمول چیزهاست! می‌فهمم که احتمالاً حدی که من برای هر موضوع مشخص کرده‌ام کمال‌گرایانه است اما این که حد صحیح کجاست، برای من مشخص نیست؛ انگار باید تمام آدم‌های کره‌ی زمین را برای هر موضوعی بررسی کنم تا بفهمم که به طور مثال، الان باید از شریک زندگی‌ام تا چه اندازه انتظار حمایت داشته باشم، که البته خود این رویکرد هم کمال‌گرایانه است.مثال بزنم؟ خراب شدن هشدار دهنده‌ی گرسنگی در بدن. (گرسنگی = گرایشِ به کمال)فرض کنید شما مدام احساس می‌کنید که گرسنه هستید. البته متوجه می‌شوید که ۵ دقیقه‌ی پیش غذا خورده‌اید ولی به هر حال به شدت احساس گشنگی می‌کنید. چه کار باید بکنید؟ اگر از بیماری خود اطلاع داشته باشید نگران نمی‌شوید (مرحله‌ی درک). ولی حالا از کجا تشخیص می‌دهید کی باید غذا بخورید؟ و تا چه اندازه غذا بخورید؟ سخت است نه؟ می‌توانید کمک بیرونی بگیرید، یعنی ببینید سایر آدم‌ها کی غذا می‌خورند، شما هم در همان زمان اقدام کنید یا از متخصص تغذیه برنامه بگیرید ولی به هر حال زمان واقعی نیاز بدن خود را متوجه نمی‌شوید. حالا فرض کنید یک کمال‌گرا در موارد بسیاری این قدرت تشخیص را ندارد.بعد از فهم این موضوع، برای این که به دیگران آسیب نزنم، به صورت افراطی شروع به ساده‌گیری نسبت به اطرافیان کردم. به طور مثال هیچ توجهی به ساعت ورود و خروج بچه‌ها به شرکت نشان نمی‌دادم و فقط انتظار انجام کار را داشتم.در واقع کمال‌گرایی را برای دیگران محدود به موارد بسیار مهم مثل تحویل با کیفیت پروژه‌ها کرده‌بودم ولی هنوز به خودم تا جایی که ممکن بود سخت می‌گرفتم. دلیل این موضوع، راهنمایی‌های اشتباه در ارتباط با کمال‌گراییِ خوب بود.بخش چهارم - کمال‌گرایی خوب، کمال‌گرایی بدکمال‌گرایی خوب وجود ندارد. (این نظر شخصی من است.)مشاورها معمولاً  این‌طور به من می‌گفتند که کمال‌گرایی می‌تواند خوب هم باشد. خیلی از آدم‌های موفق در کسب و کار، کمال‌گرا هستند اما نکته این است که باید کنترل شود. حتی تاکید می‌کردند که اگر تو کمال‌گرا نبودی هرگز به موفقیت‌های فعلی نمی‌رسیدی. ویکی‌پدیا:دی. ایی. هَمَچِک (به انگلیسی: D. E. Hamachek) در سال ۱۹۷۸ ادعا کرد که دو نوعِ متضاد از کمال‌گرایی وجود دارد که مردم را در دو گروه کمال‌گرای بهنجار و کمال‌گرای روان‌رنجور طبقه‌بندی می‌کند. ...تحقیقات معاصر از این ایده پشتیبانی می‌کند که این دو جنبهٔ پایهٔ رفتارِ کمال‌گرایانه و همچنین ابعاد دیگری، مانند «ناکمال‌گرایی» (به انگلیسی: nonperfectionism) را می‌توان از هم تفکیک کرد.[۷] این ابعاد، با برچسب‌ها و نام‌های متفاوتی مورد اشاره قرار گرفته‌اند، مانند تلاشِ مثبت و دل‌مشغولی دربارهٔ ارزشیابی ناسازگار، کمال‌گرایی فعال و منفعل (غیرفعال)، کمال‌گرایی مثبت و منفی یا کمال‌گرایی سازگار و ناسازگار.این یک دروغ است. بیاید کمی فلسفی‌تر بررسی کنیم.کمال، تقریباً در هیچ چیز ممکن نیست. (اگر بپرسید که چرا تقریباً؟ چون در ساختارهای ریاضی و تک جوابی مثل حاصل جمعِ ۲ و ۲،‌ عدد ۴ پاسخِ تمام و کمال است. احتمالاً به همین دلیل من از برنامه‌نویسی لذت می‌برم؛ پاسخ‌های قاطع.)ولی در اکثر چیزها کمال انتها ندارد. حتی نمره‌ی ۲۰ پایان کار نیست. من بعد از گرفتن نمره‌ی ۲۰ هم همیشه فکر می‌کردم که در مدارس بهتر از مدرسه‌ی من، امتحان‌ها سخت تر هستند و من باید با همه‌ی بچه‌ها رقابت کنم.ویکی‌پدیا در ادامه مقاله:افراد دیگری مانند تی.اس. گرینسپان (به انگلیسی: T. S. Greenspon) با اصطلاح کمال‌گرای «عادی» در مقابل «روان‌رنجور» مخالف هستند....برای گرینسپان، خودِ کمال‌گرایی، هرگز به عنوان سالم یا سازگار دیده نمی‌شود و از آنجا که کمالِ مطلق، غیرممکن است، اصطلاح‌های کمال‌گرایی «نرمال» یا «سالم»، اصطلاح‌هایی بی‌دقت و اشتباه هستد.اگر شما کمال‌گرا باشید یعنی شما بدون دلیل، گرایش به کمال دارید.شاید در ذهن شما، گرایشِ خودکار به سمت بعضی صفت‌ها، مثبت باشد. مثلاً بگویید گرایشِ خودکار به راست‌گویی خوب است.(که این هم از نظر من نیست.) ولی گرایشِ خودکار به سمت کمال، به هر حال خوب نیست چون اولاً همیشه بی سرانجام است؛ دوماً چون ما در حصارِ زمان هستیم، همیشه کمال‌گرایی مشغول دزدیدن زمان ماست تا چیزهای دیگری از رسیدن به کمال جا بمانند. یک وب‌سایت که عملکرد بسیار دقیق دارد ولی ظاهر آن زشت است.اگر جایی نیاز است یک ساختمان را با استانداردهای بسیار بالا بسازیم، پس می‌سازیم. دلیل این کار گرایش خودکار به کمال نیست، یک نیاز واقعی، این دقت در ساخت را ایجاب می‌کند تا از مرگ انسان‌ها جلوگیری کنیم.در واقع نکته اینجاست که توانایی به کمال نزدیک کردنِ چیزها در جهت صحیح، یک هنر است ولی خیلی از کمال‌گراها هم از این هنر بی‌بهره هستند.پس بدون دلیل، وقت خود را تلف نکنید. من در این تله افتاده بودم.فصل سوم - با کمال‌گراها دورِ آتشبخش اول - اماکمال‌گراهای عزیز، البته که شما خیلی سختی کشیده‌اید و آسیب دیده‌اید اما، کمال‌گرایی در شما خصلت‌های خوبی هم ایجاد کرده است. الان، افرادی سخت‌کوش هستید و به سخت‌کوشی عادت دارید. در کارها دقت بالایی دارید. این صفت‌های مثبت را بردارید و غصه نخورید.دنبال ارضا کردن این نیاز به کمال نروید. هرچه بیشتر این نیاز را ارضا کنید، نیازمندتر خواهید شد.بخش دوم - پاکت سیگاراگر چه کمال‌گرایی، برای من مضر است ولی کمال‌گرایی، درست مثل سیگار برای افراد سیگاری، به من آرامش و تمدد اعصاب می‌دهد. من از کمال‌گرایی لذت می‌برم. احتمالاً وقتی کار کمال‌گرایانه‌ای انجام می‌دهم مقدار زیادی دوپامین دریافت می‌کنم.از این جهت هنوز گاهی با شرایط خاص، وقت‌هایی که می‌طلبه پاکت کمال‌گراییم را باز می‌کنم، یک نخ بیرون می‌کشم و فندک می‌زنم.مثلاً مشخص می‌کنم که دو ساعت آینده می‌خواهم بازی کنم (برای کسانی که آشنا هستند، Valheim بازی می‌کنم.) و در این دو ساعت تا جای ممکن کمال‌گرایی می‌کنم، مثلا در ساخت یک خانه.یا تصمیم می‌گیرم یک ساعت، خط بنویسم اما بدون محدودیت برای اتمام حتی یک جمله؛ شاید تمام یک ساعت را فقط صرف نوشتن یک کلمه کنم ولی چون به نتیجه وابسته نیستم خیالم راحت است.الان شاید ماهی یک پاکت؛ ولی هر ماه کمتر می‌شود.</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Tue, 25 Jul 2023 15:25:05 +0330</pubDate>
            </item>
                    <item>
                <title>از کُدهای تو انباری ارزش خلق کنیم! استارت‌آپ جدید ما بخش دوم</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%A7%D8%B2-%DA%A9%D9%8F%D8%AF%D9%87%D8%A7%DB%8C-%D8%AA%D9%88-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1%DB%8C-%D8%A7%D8%B1%D8%B2%D8%B4-%D8%AE%D9%84%D9%82-%DA%A9%D9%86%DB%8C%D9%85-%D8%A7%D8%B3%D8%AA%D8%A7%D8%B1%D8%AA-%D8%A2%D9%BE-%D8%AC%D8%AF%DB%8C%D8%AF-%D9%85%D8%A7-%D8%A8%D8%AE%D8%B4-%D8%AF%D9%88%D9%85-efsh7ota1lqy</link>
                <description>در بخش اول روند شکل‌گیری ایده برای تولید پروژه‌ای که از طریق تماس، مصرف دارو را یادآوری کند، شرح دادم.بخش دوم - تولیدنامهر پروژه‌ای به اسم نیاز دارد و اگر از من بپرسید، اسم‌ها در موفقیت پروژه‌ها به صورت محسوسی اثر دارند. با توجه به این که در اسامی استارت‌آپ‌ها و سایت‌های ایرانی، بیشتر از کل ادبیات ایتالیایی پسوند &quot;نو&quot; وجود دارد:دلینو، بانکینو، کلاسینو، قبضینو، فرشی‌نو، حسابینو و ...شاید بهتر بود طبق سُنت، نام این پروژه را یادآورینو بگذاریم. اما من فکر کردم در اصل، کاری که پروژه‌ی ما انجام می‌دهد گرفتن اطلاعات و بازگو کردن آن برای مخاطب است مثل داد زدن مقابل کوه! در واقع پژواک می‌توانست اسم مناسبی باشد یا اِکو که در بین فارسی زبان‌ها هم لغت آشنایی بود. تصمیم گرفتم یک ly هم به انتهای آن اضافه کنم و echoly اسم پیشنهادی من برای این پروژه باشد که با استقبال دوستانم هم مواجه شد. البته بررسی کردم که پسوند com این دامنه به مبلغ ۱۳ هزار دلار برای فروش گذاشته شده است. پس به نیک دات آی آر مراجعه کردم و echoly.ir را خریدم. حس کردم اِکولی در فارسی هم تلفظ جالبی دارد و به یاد می‌ماند.لوگوقبل از لوگو باید یک یا چند رنگ مشخص، برای معرفی پروژه انتخاب می‌کردیم. با مشورت اهل فن، به این نتیجه رسیدیم که طیف سبز برای این پروژه مناسب است و رنگ انتخاب شد.پیشنهاد همه برای طراحی لوگو، هوش‌مصنوعی بود. تمام سایت‌هایی که معرفی شده بودند رو بررسی کردم ولی نتیجه‌ی قابل توجهی نداشتند. همه یا زشت بودند، یا تکراری بودند، یا بی‌ربط، یا غیر قابل استفاده در پرینت. خلاصه که photoshop رو باز کردم و چند لوگو‌ی ساده بر پایه‌ی فونت‌های آماده طراحی کردم که نتیجه نهایی این شد:لوگوی اِکولی سایتاز اول تصمیم داشتیم که سایت تا حد امکان برای مخاطب ساده باشد و کل عملیات با چند کلیک تمام شود و کاربرها روی سایت بتوانند بسته‌ی مورد نظر خود را بسازند و متناسب با بسته‌ی ساخته شده، هزینه پرداخت کنند. به طور مثال تنظیم کنند که به مدت ۳۰ روز و هر روز ساعت &#x27;۰۸:۰۵ از طریق پیامک یا تماس به آنها اطلاع رسانی انجام شود و متن اطلاع رسانی را هم خودشان تا حداکثر ۲۵ کاراکتر وارد کنند. البته چون زمان مصرف خیلی از داروها با فاصله‌های زمانی تعیین می‌شود این امکان را هم ایجاد کردیم که مثلاً تنظیم کنند که یادآوری هر ۸ ساعت انجام شود.چون امکان داشت از این پروژه برای ایجاد مزاحمت، سوءاستفاده شود. قبل از فعال سازی بسته، کد اعتبار سنجی (OTP) به تلفن همراه وارد شده ارسال می‌کنیم که باید در سایت وارد کنند.سایت (کمی فنی) من پیاده سازی رو با طراحی یک دیتابیس ساده شروع کردم و apiها رو هم با #C ساختم. ندا هم برای Front-End از React و Next.js استفاده کرد. البته برای ظاهر سایت که می‌بینید از یک قالب رایگان استفاده کردیم. شاید بپرسید پس React و Next.js برای چی بود که باید بگم برای پنل مدیریتی و پیگیری تماس‌ها و پرداخت‌ها و غیره. (توسعه‌ی پروژه رو در زمان‌های آزاد هفته انجام می‌دادیم.)برای پیاده‌سازی منطق پروژه، سناریوهای متفاوتی رو بررسی کردیم. در نهایت این طور شد که بعد از پرداخت صورت‌حساب توسط کاربر، من لیست تمامی تماس‌ها و پیامک‌های خریداری شده رو در جدولی با زمان ارسال هر کدوم ذخیره می‌کنم (بعد از انجام تماس هم هزینه‌ی تماس و سایر اطلاعات جلوی هر سطر پر می‌شود). در پروژه یک لیست ثابت ساختم که هر ۱۵ دقیقه به روز می‌شود و پیامک‌ها و تماس‌های ۱۵ دقیقه‌ی آینده رو در لیست پر می‌کند و سیستم در ثانیه‌ی ۴۵ از هر دقیقه به این لیست رجوع می‌کند و تماس‌ها و پیام‌های دقیقه‌ی بعدی را می‌خواند. مثلا در زمان &quot;۴۵:&#x27;۰۹:۵۹ برای تماس‌های ساعت ۱۰ اقدام می‌کند.(اگر تماس برای زیر ۱۵ دقیقه آینده تنظیم شده باشد مستقیم به لیست ثابت من اضافه می‌شود.)برای کنترل این که متن اطلاع رسانی هم مبادا شامل الفاظ نامناسبی باشد از یک کتابخانه‌ی قدیمی خودم که پر از بد و بیراه است استفاده کردم.برای این که مشخص نشود چقدر الفاظ رکیک بلدم این کتابخانه رو هرگز روی گیت‌هاب منتشر نکردم :)‌از نظر آماری تا این لحظه که من این متن رو می‌نویسم سیستم فقط یک تماس اطلاع‌رسانی واقعی (خارج از بحث تست) به مخاطب را از دست داده است. (پیگیری و البته دلجویی کردیم.)کلام آخرپیام یاسی (بخش اول) در تاریخ  ۱۴۰۲/۳/۰۱ ساعت ۱۲:۲۸ به دست من رسید و  اولین پرداخت با هدف استفاده‌ی واقعی روی سایت در تاریخ ۱۴۰۲/۳/۳۰ ساعت ۲۰:۲۶:۴۱ به مبلغ ۱۰ هزار تومن انجام شد.</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Fri, 30 Jun 2023 14:40:15 +0330</pubDate>
            </item>
                    <item>
                <title>از کُدهای تو انباری ارزش خلق کنیم! استارت‌آپ جدید ما بخش اول</title>
                <link>https://virgool.io/@boroujerdian.alireza/%D8%A7%D8%B2-%DA%A9%D9%8F%D8%AF%D9%87%D8%A7%DB%8C-%D8%AA%D9%88-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1%DB%8C-%D8%A7%D8%B1%D8%B2%D8%B4-%D8%AE%D9%84%D9%82-%DA%A9%D9%86%DB%8C%D9%85-%D8%A7%D8%B3%D8%AA%D8%A7%D8%B1%D8%AA-%D8%A2%D9%BE-%D8%AC%D8%AF%DB%8C%D8%AF-%D9%85%D8%A7-%D8%A8%D8%AE%D8%B4-%D8%A7%D9%88%D9%84-vgy0xeat1pte</link>
                <description>بخش اول - شکل‌گیری ایدهجرقه‌ی اولهمه چیز از پیام یاسی (یاسمن طهماسبی) شروع شد.یک خرداد، یک استوری روی اینستاگرام برام فرستاد با این توضیح که:یک سرویس پیامکیه که روزانه برات پیام سورپرایز یا دلداری می‌فرسته. بعد یسری اپشنا داره که مثلا سرویسو هدیه برای یکی بگیری، یه نگا بهش بنداز. برای بیزینس شما هم شاید ایده بدی نباشه یه گوشش یه افر اینشکلی داشته باشه.این پیشنهاد از این جهت به فکر یاسی رسیده بود که چند ماه پیش، ما یک سرویس برای مدیریت جلسه و همایش عرضه کرده بودیم که لینک و عنوان دعوت رو از طریق پیامک ارسال می‌کردیم. در واقع ما تمام پیش‌نیازهای نرم‌افزاری همچین سرویسی رو آماده داشتیم. فقط نیاز بود که یک دامنه بخریم و سایت رو کمی تغییر بدیم.با هم صحبت کردیم و منم گفتم که پیشنهاد جالبیه، یاسی ادامه داد که:اره مثلا برای روز مادر و روز پدر حتی جالبه. ادم یه سرویس این شکلی براشون میخره. پیامای قشنگ هر روز بفرستن براشون.بعد از این گفتگو ،من با ندا (ندا سبحانی برنامه‌نویس و شریک من در اون پروژه‌ی همایش) تماس گرفتم. پیشنهاد یاسی رو مطرح کردم و ادامه دادم که:با نمکه، امکان داره کسب درآمد کنیم و نیاز به کار زیادی هم نداریم. فقط کافیه از کدهایی که توی انباری داریم استفاده کنیم و این طور که معلومه مخاطب هم داره اما، ارزشی خلق نمی‌کنه.ندا هم با من موافق بود، البته حتی اطمینان نداشتیم که آیا واقعاً مخاطبی برای این سیستم وجود دارد یا نه.نیاز به تحقیق بود و ما فکر کردن به این کار رو به عنوان یک تفریح جدید در مواقع بیکاری شروع کردیم.سیبی که چرخ خورداز اون جایی که ما هر دو feature creep هستیم. تصمیم گرفتیم این ایده رو کمی پرورش بدیم.ایجاد دسته‌بندی‌های جدید، امکان ساخت بسته‌های پیامکی دلخواه، پیشنهاد ساخت بسته‌های پیامکی، امکان استفاده برای سازمان‌ها با توجه به اهداف سازمان، بسته‌های ویژه‌ی مدیران، بسته‌ی پیامکی معما که لینک پاسخ در انتهای پیامک قرار بگیرد و ... .قلم و کاغذ رو برداشتیم و هر ایده‌ای که به ذهنمون رسید نوشتیم تا این که ندا گفت:یادآوری زمان مصرف قرصگوش‌های من تیز شد و از اینجا همه چیز تغییر کرد.یادآوری زمان برای مصرف دارو از هر نظر موضوع کاملاً متفاوتی بود.نیازمندی‌های ویژه و متفاوتی هم داشت، اطلاع رسانی باید درست در زمان مشخص اتفاق می‌افتاد.سیستم قبلی ما پیامک‌ها رو در یک صف قرار می‌داد و در طول روز شروع به ارسال پیامک می‌کرد. این یعنی ما تضمینی برای رسیدن پیامک درست راس ساعت مشخص نداشتیم ولی برای یادآوری زمان مصرف دارو نیاز بود پیامک دقیقاً به موقع به کاربر برسد.از طرف دیگه باید پیگیری های دقیق‌تری هم انجام می‌شد که مبادا پیامکی به دست کاربر نرسیده باشد.ولی به هر حال این کار از نظر ما خلق ارزش می‌کرد. مشکلی رو در دنیای واقعی حل می‌کرد.اگرچه پیاده‌سازی این پروژه دیگه با کدهای توی انباری ممکن نبود ولی برای ما بسیار معنی‌دار شد. مسیر جدیدی رو انتخاب کردیم و مشغول تحقیق و توسعه شدیم.در بابِ اهمیتما متوجه شدیم که مرکز کنترل و پیشگیری از بیماری (CDC) تخمین می زند که عدم پایبندی به مصرف دارو طبق دستور پزشک، باعث ۳۰ تا ۵۰ درصد شکست در درمان بیماری‌های مزمن و همچنین باعث ۱۲۵۰۰۰ مرگ در هر سال در آمریکا می‌شود.۲۵ تا ۵۰ درصد از بیماران تحت درمان با استاتین‌ها (داروهای کاهش دهنده کلسترول) که درمان خود را در عرض یک سال متوقف می‌کنند، تا ۲۵ درصد افزایش خطر مرگ دارند.البته مصرف طبق دستور یعنی: دوز مناسب، در زمان درست، به روش درست و به طور مداوم.تماس بگیریمقبل از تحقیق هم مشخص بود که یادآوری زمان مصرف دارو ایده‌ی جدیدی نیست، ولی با یک تحقیق ساده متوجه شدیم که ایده‌های قبلی کارآمدی لازم رو ندارند.برای حل این نیاز بعضی جعبه‌های مخصوص در داروخانه‌ها موجود بود و یا اپلیکیشن‌های موبایل خوبی هم برای این منظور تولید شده بودند.اما استفاده از این ابزارها برای مخاطبین بالقوه‌ی چنین محصولی بسیار سخت است.به طور مثال افراد مسن در ایران به میزان قابل توجهی در کار با گوشی‌های هوشمند ضعف دارند و اپلیکیشن‌های موبایل مناسب این افراد نیست.البته ارسال پیامک هم در خیلی از موقعیت‌ها شیوه‌ی مناسبی نبود.پس ما تصمیم گرفتیم پروژه‌ای تولید کنیم که در زمان مشخص با مخاطب تماس بگیرد و اطلاعات ثبت شده برای هر مخاطب را بازگو کند. به طور مثال رأس ساعت &#x27;۹:۳۰ تماس بگیرد و بگوید الان زمان مصرف نصف قرص قلب است.در این روش نه نیاز به گوشی هوشمند داریم و نه حتی نیاز به خواندن متن.و به طور کلی کمک می‌کنیم تا دارو ها در دوز مناسب، زمان درست، به روش درست و به طور مداوم مصرف شوند.- پایان سمت اول --&gt; بخش دوم &lt;-</description>
                <category>علیرضا بروجردیان</category>
                <author>علیرضا بروجردیان</author>
                <pubDate>Fri, 30 Jun 2023 14:37:23 +0330</pubDate>
            </item>
            </channel>
</rss>