TGViewer
Channel Public Channel
سماموس: نوشته‌های یوسف مهرداد بی‌بالان

سماموس: نوشته‌های یوسف مهرداد بی‌بالان

@bibalan_com

این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
Subscribers
297
Photos
27
Videos
7
Links
353

Showing posts older than #267 · Back to latest

Older Posts 20 shown
Post #266 143
برنامه ۱۲ عاملی (۶)- عامل پنجم: ساخت، انتشار، اجرا

عامل ۵: ساخت(build)، انتشار(release)، اجرا(run)
گام‌های ساخت (‌Build) و اجرا(Run) را کاملا از هم جدا کنید.

هر پایگاه کد (codebase) طی سه مرحله به استقرار (deploy) تبدیل می‌شود:

- مرحله ساخت (build stage) : در این مرحله مخزن کد (codebase) به یک بسته قابل اجرا (executable bundle) تبدیل می‌شود. این بسته‌ی قابل اجرا با نام بسته‌ی ساخت (Build) نیز شناخته می‌شود. در این مرحله ابتدا بر اساس شماره‌ی نسخه‌ی (version) کدی که در فرایند استقرار مشخص شده، کد از مخزن کد برداشته می‌شود،‌ در گام دوم، اجزا و مولفه‌های خارجی که برنامه
به آنها وابسته است (vendors dependencies) گردآوری می‌شود و در پایان، فایل‌ها و سایر اجزای برنامه کامپایل می‌شوند.

- مرحله انتشار (release stage): در این مرحله بسته ساخت (Build) که در مرحله قبلی آماده شده با پیکربندی(config) استقرار ترکیب می‌شود که نتیجه‌ی آن نسخه قابل انتشار (release) است که شامل هم بسته‌ی ساخت و هم پیکربندی است. این نسخه‌‌ی انتشار برای استفاده در محیط اجرا (execution environment) آماده است.

- مرحله اجرا (run stage): برنامه در محیط اجرا بالا می‌آید، برای هر انتشار مجموعه‌ای از فرآیندهای برنامه اجرا می‌شود. این مرحله نام “مرحله زمان اجرا” (runtime) نیز شناخته می شود.

مترجم:
بسته (bundle):‌به دو یا چند برنامه‌ی نرم‌افزاری (application) که با هم بسته‌بندی می‌شوند و به عنوان یک محصول به فروش می‌رسند) بسته یا باندل گفته می‌شود.

https://bit.ly/3sRgn6l

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

ابزارهای استقرار معمولاً دارای ابزارهای مدیریت انتشار نیز هستند و یکی از قابلیت‌های برجسته آنها،‌ امکان برگشت به عقب و به نسخه قبلی است (roll back). برای مثال، ابزار استقرار Capistrano نسخه‌ها را در پوشه‌ای (folder) به نام releases ذخیره می‌کند. در این ابزار به کمک یک فایل لینکی (Symlink) که به یکی از پوشه‌های داخل releases اشاره می‌کند، مشخص می‌گردد که نسخه‌ی جاری در کدام یک از پوشه‌ها قرار دارد. هم‌چنین در این ابزار، فرمان rollback به شما کمک می‌کند به راحتی و به سرعت به نسخه قبلی برگردید.

مترجم:
واژه Symlink که symbolic link هم نامیده می‌شود نوعی فایل در لینوکس است که به فایل یا پوشه دیگری در کامپیوتر اشاره می کند. Symlink مشابه shortcut در ویندوز است.

هر انتشار باید یک شناسه‌ی منحصر به فرد مانند شناسه‌ی زمانی (timestamp) مانند 2011-04-06-20:32:17 یا یک شناسه‌ی عددی مانند v100 داشته باشد. فهرست انتشارها مانند لیستی است که فقط می‌توان به آن ردیف جدیدی اضافه کرد و بعد از اضافه شدن ردیف جدید، نمی‌توان آن را تغییر داد.. اعمال هر تغییر جدیدی در انتشار فقط از طریق ایجاد یک انتشار جدید و اضافه کردن آن به لیست موجود، امکان‌پذیر است.

نوشته‌های قبلی:
–قسمت پنجم: سرویس ‌های کمکی ( backing services)

مترجم: حمید آقای خاتمی

گزیده:
بخش توسعه‌ی (Devs) مریخی‌اند و بخش عملیات و اجرا (Ops) ونوسی!  استیون هاینس


https://www.bibalan.com/?p=3948
https://t.me/bibalan_com
  • 👍 3
Post #265 155
گیلان گیلان همیشه بهاره گیلان


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

عکس: بی‌بالان، اردیبهشت ۱۴۰۱
با سپاس فراوان از یوسف ابر عزیز


https://www.bibalan.com/?p=3939
https://t.me/bibalan_com
  • ❤ 1
  • 🥰 1
Post #264 164
یادگیری ماشین برای همه (۱)

پیش گفتار:
مدت‌هاست که دلم می‌خواهد مطالب بیشتری در زمینه یادگیری ماشین (machine learning) در وبلاگ منتشر شود. پس از بررسی به این نتیجه رسیدم که بهتر است این دسته از مطالب با یک معرفی ساده و به دور از مباحث نظری و ریاضی شروع شود. بعد از همفکری با سرکار خانم سپیده مشایخی تصمیم بر آن شد که با نوشته‌ی Machine Learning for Everyone از سایت vas3k.com شروع کنیم. ضمن تشکر و قدردانی از ایشان،‌ امیدوارم که این نوشته‌ها مورد استفاده شما عزیزان قرار گیرد.

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

چرا می خواهیم ماشین ها قدرت یادگیری داشته باشند؟
اجازه دهید بیلی (Billy) را به شما معرفی کنم. بیلی قصد دارد خودرویی بخرد. او سعی دارد حساب کند که برای خرید خودرو ماهانه چقدر باید پس‌انداز کند. او ده‌ها آگهی فروش خودرو را در اینترنت بررسی کرد و فهمید قیمت خودروهای صفر و دست اول حدود ۲۰،۰۰۰ دلار است و قیمت خودروهای یک سال کار کرده‌ حدود ۱۹،۰۰۰ دلار و دو سال کارکرده حدود ۱۸،۰۰۰ دلار است و به همین ترتیب با افزایش کارکرد خودرو قیمت آن هم کاهش پیدا می‌کند.
تحلیل‌گر باهوش ما یعنی بیلی پی‌ برد که الگویی (pattern) بین این اعداد وجود دارد: قیمت خودرو به مدت کارکرد آن (سن خودرو) وابسته است. هر سال ۱۰۰۰ دلار از قیمت خودرو کاسته می‌شود ولی قیمت آن از ۱۰،۰۰۰ دلار پایین‌تر نمی‌آید.
بر اساس ادبیات حوزه‌ی یادگیری ماشین، بیلی موفق به ابداع روش رگرسیون (regression) شده است یعنی وی توانسته یک مقدار عددی (قیمت خودرو) را بر اساس داده های تاریخی (historical data) موجود پیش‌بینی کند. افراد وقتی که تلاش می‌کنند قیمت آیفون دست دوم را در سایت ebay برآورد کنند یا وقتی می‌خواهند مقدار گوشت کبابی لازم برای یک مهمانی را حساب کنند از این روش استفاده می‌کنند.
بی‌شک وجود یک فرمول ساده که بتواند همه‌ی مسائل دنیا را حل کند فوق‌العاده است به ویژه برای حل مساله‌ی مقدار گوشت کبابی لازم برای یک مهمانی. اما متاسفانه این کار امکان‌پذیر نیست.
بیایید برگردیم به مساله خرید خودرو. مشکل این است که خودروها دارای تاریخ تولید، امکانات (آپشن)، وضعیت فنی و میزان تقاضای فصلی متفاوتی هستند و معلوم نیست چه تعداد عامل ناشناخته دیگری هم در این میان وجود دارد که می‌تواند روی قیمت خودرو تاثیرگذار باشد. یک فرد عادی مثل بیلی ​​نمی‌تواند موقع محاسبه قیمت خودرو، تمام این داده‌ها را در ذهن خود نگهداری و پردازش کند. البته من هم نمی‌توانم.

انسان‌ها در این زمینه ناتوان و البته تنبل‌اند. ما برای محاسبات ریاضی به روبات‌ها نیاز داریم. بنابراین بیایید از روش‌های محاسباتی برای حل این مساله استفاده کنیم. اجازه دهید داده‌ها را به ماشین بدهیم و از آن بخواهیم که تمام الگوهای (pattern) پنهان و ناآشکار مرتبط با قیمت خودرو را پیدا کند.
وای! جواب داد! و شگفت‌انگیزترین موضوع این است که ماشین چنین کاری را به مراتب بهتر از هر انسانی که تمام وابستگی‌ها (بین قیمت و عامل‌های اثرگذار) را دقیق و کامل در ذهن خود تحلیل کرده باشد انجام می‌دهد.

و با این یافته‌ی جدید، یادگیری ماشین متولد شد.

مترجم: خانم سپیده مشایخی

گزیده:
اگر کامپیوتری بتواند انسان را فریب دهد تا انسان بودنش را باور کند، سزاوار این است که هوشمند نامیده شود. آلن تورینگ


https://www.bibalan.com/?p=3934
https://t.me/bibalan_com
  • ❤ 3
Post #263 146
جایی برای بومیان نیست!


فیلم “جرونیمو: افسانه آمریکایی” (Geronimo: An American Legend) داستان سرخ‌پوستان و بومیان آمریکا در مبارزه با ارتش سفیدپوستان آمریکاست. قهرمان اصلی داستان،‌ جرونیمو یکی از رهبران سرخ‌پوستان آمریکاست. داستان فیلم بسیار غم‌انگیز است.
سفیدپوستان زمین‌های بومیان را از آنها می‌گیرند و آنها را با زور اسلحه مجبور می‌کنند در منطقه‌ی محدودی زندگی کنند و البته حق خروج از آن منطقه را هم ندارند. سرآخر هم به این بسنده نمی‌کنند و مانع از انجام آیین سرخپوستان آپاچی می‌شوند و خودشان آتش‌بس را زیر پا می‌گذارند، سرخپوستان را تحریک می‌کنند و کشت و کشتار را شروع می‌کنند.

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

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

در بخشی از فیلم که بین رهبران سرخپوستان و ژنرال ارتش آمریکا جلسه‌ای برای برقراری صلح در جریان است، جرونیمو رهبر سرخپوستان رو به ژنرال آمریکایی می‌کند و می‌گوید:

«توی این همه زمین، چرا جایی برای آپاچی‌ها نیست؟ چرا چشم سفید (سفیدپوستان) همه‌ی این زمین‌ها را فقط برای خودشان می‌خواهند؟»

و من جمله‌ی جرونیمو را با خود زمزمه می‌کنم که ‌«واقعاْ چرا همه‌ی زمین‌ها را فقط برای خودشان می‌خواهند؟ چرا جایی برای بومیان نیست؟»

https://bit.ly/3PxbQQn

https://www.bibalan.com/?p=3928
https://t.me/bibalan_com
  • ❤ 1
  • 😢 1
Post #261 162
برنامه ۱۲ عاملی (۴)- عامل سوم: پیکربندی
عامل ۳: پیکربندی
پیکربندی (config) را در محیط استقرار (environment) ذخیره کنید

پیکربندی هر برنامه احتمالاً برای استقرارهای مختلف (محیط عملیاتی یا production، محیط داخلی یا stage، محیط‌ توسعه‌دهندگان و غیره) یکسان نیست. این تفاوت می‌تواند به دلایل متفاوتی از جمله موارد زیر باشد:
– منابع دسترسی به پایگاه داده، حافظه‌های ذخیره‌سازی سریع (Memcached) و سایر خدمات پشتیبان (backing services) سرویس‌دهنده‌
– اعتبارنامه (Credentials) برای خدمات خارجی مانند Amazon S3 یا Twitter
– مقادیری مانند نام مستعار میزبان (canonical hostname یا cname) برای هر استقرار

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

دقت کنید که تعریف ما از “پیکربندی” شامل پیکربندی داخلی برنامه [مثلا پیکربندی ارتباط بین ماژول‌ها و مولفه‌های برنامه] نمی‌شود. این نوع پیکربندی در استقرار‌ها متفاوت نیست در نتیجه بهتر است در خود کد نگهداری و مدیریت شود.

رویکرد دیگر مدیریت پیکربندی، استفاده از فایل‌های پیکربندی (config files) است که در مخزن کد (repo) قرار نمی‌گیرند. چنین رویکردی در مقایسه با نوشتن پیکربندی در کد به کمک تعریف مقادیر ثابت، پیشرفت بزرگی محسوب می‌شود، هر چند این روش نیز ایراداتی دارد. احتمال اشتباه و قراردادن فایل پیکربندی در مخزن کد بسیار بالا است. احتمال پراکنده شدن فایل‌های پیکربندی در جاهای مختلف و با قالب‌های (format) متفاوت زیاد است. چنین اتفاقی مدیریت فایل‌های پیکربندی‌ و یکسان‌سازی آنها را دشوار می‌کند. معمولا قالب‌(formats) هر یک از این فایل‌های پیکربندی مختص زبان یا چارچوب متفاوتی است که مدیریت آنها را دشوارتر می‌کند.

هر برنامه دوازده عاملی پیکربندی را در متغیرهای محیط (environment variables) ذخیره می‌کند (به صورت اختصار env vars یا env نامیده می‌شوند). متغیرهای محیطی (env vars) را بدون آن که نیازی به تغییر کد باشد، به راحتی می‌توان برای هر استقرار تغییر داد. در مقایسه با فایل‌های پیکربندی، احتمال قرار گرفتن اشتباهی آنها در مخزن کد نیز کمتر است. و برخلاف فایل‌های پیکربندی خاص‌منظوره یا مکانیزم‌های پیکربندی خاص هر زبان‌ برنامه‌نویسی، این متغیرها مستقل از استاندارد زبان و سیستم عامل تعریف می‌شوند.

گروه‌بندی یکی دیگر از موضوعات مدیریت پیکربندی (config) است. گاهی‌ افراد متغیرهای پیکربندی را در قالب گروه‌هایی دسته‌بندی می‌کنند که نام آنها ترکیبی است از انواع استقرار (development, test, ,production) و کلمه‌ی environments . چنین روشی مقیاس‌پذیر نیست زیرا با اضافه شدن انواعی جدیدی از استقرار مانند staging یا qa به نام‌های جدیدی برای محیط‌ها نیاز خواهیم داشت. حتی احتمالا با رشد پروژه و ورود توسعه‌دهندگان جدید، هر فردی محیط‌ دلخواه و مورد نیازش را به فهرست محیط‌های قبلی اضافه خواهد کرد (مانند smith-qa یا smith-development). چنین اتفاقی باعث رشد نمایی و انفجار تعداد پیکربندی‌ها (config) می‌شود و عملا مدیریت استقرار را پراشتباه و فلج می‌نماید.

در هر برنامه دوازده عاملی، هر متغیر محیطی (environment variables یا env vars) مانند یک واحد کنترل‌کننده کوچک است که هیچ ارتباط یا وابستگی به بقیه متغیرهای محیطی ندارد. هرگز نباید تعدادی از آنها را تحت عنوان یک محیط جدید (environment) با هم دسته‌بندی کنید. بلکه باید تک‌تک آنها را هر نسخه از استقرار مقدار دهی و مدیریت کنید. با رشد طبیعی برنامه و افزایش نسخه‌های استقراریافته‌ی آن، این مدل نیز می‌تواند پا به پای آن رشد کند و به بالندگی برسد.

پانوشت:
استقلال یا orthogonal بودن دو متغیر محیطی (env var) به چه معناست؟
orthogonal به این معناست که دو متغیر محیطی می‌توانند مستقل از همدیگر تغییر کنند و تغییر یکی لزوما منجر به تغییر دیگری نمی‌شود. در نتیجه هنگام انتخاب متغیرهای محیطی باید بدون در نظر گرفتن محیط‌های استقرار (مانند development, test, and production)، یک سری از متغیرها را شناسایی و به عنوان متغیر محیطی تعریف کرد

https://www.bibalan.com/?p=3904
https://t.me/bibalan_com
Telegram سماموس: نوشته‌های یوسف مهرداد بی‌بالان این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
  • 👍 2
Post #260 179
گربه کد من را خورد (۳)

به جای بهانه، گزینه‌ها و راه‌کارهای جدیدی پیشنهاد کنید. نگویید که این کار شدنی نیست؛ توضیح دهید که چه کاری می‌توان برای نجات از شرایط کنونی انجام داد. آیا بهتر است کد را حذف کنیم (delete)؟ اگر به این نتیجه رسیدید،‌ این موضوع را با آنها در میان بگذارید و اهمیت و فایده‌های بازسازی کد (refactoring) را توضیح دهید.
آیا برای انتخاب بهترین راهکار به نمونه‌سازی اولیه (prototype) نیاز دارید؟ آیا برای جلوگیری از تکرار چنین شرایطی نیاز به تعریف و پیاده‌سازی آزمون‌های بهتر یا خودکارسازی آنها دارید؟ شاید برای انجام کار به منابع بیشتری نیاز داشته باشید. یا شاید لازم باشد زمان بیشتری را با کاربران بگذرانید و روش کار آنها را از نزدیک ببینید. شاید هم نیاز باشد تکنیک یا فناوری جدیدی را عمیق‌تر و دقیق‌تر یاد بگیرید. شاید یک کتاب یا یک دوره‌ی آموزشی بتواند به شما کمک کند. از درخواست کردن یا پذیرش و اعتراف به اینکه به کمک نیاز دارید نترسید.
قبل از اینکه بهانه‌های غیرمنطقی و ناموجه را با صدای بلند جار بزنید سعی کنید آنها را از ذهن خود بیرون بریزید. اگر فکر می‌کنید باید بهانه‌‌ی ناموجهی را با صدای بلند اعلام کنید، بهتر است ابتدا آن را با گربه‌تان در میان بگذارید. خدا را چه دیدی، شاید گربه‌ی کوچک و ملوس شما، مسئولیت اشتباهات را قبول کرد.

https://bit.ly/3Lvtdyh

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

وقتی فهمیدید عبارت «راستش نمی‌دونم …» را گفته‌اید، بی‌درنگ آن را با عبارت «… ولی یه راهی پیدا می‌کنم» ادامه دهید. چنین رویکردی راهی فوق‌العاده برای پذیرش چیزهایی است که نمی‌دانید، اما در عین حال مانند یک فرد حرفه‌ای مسئولیت آن را قبول می‌کنید.

منبع عکس:
gettyimages.ca

پ.ن.
صادقانه بگویم هر چه بیشتر می‌اندیشم بیشتر مطمئن می‌شوم ‌که عمل به راهنمایی‌های «گربه کد من را خورد» واقعا برای من دشوار است.

چون عمل کردی شجر بنشاندی
اندر آخر حرف اول خواندی

گزیده: از فیلم آخرین سامورایی
کسی نمی‌داند چه بر سر سروان آمریکایی (نیتان آلگرن، تام کروز) آمده است. تنها یک دفترچه‌ خاطرات از او باقی مانده که من هم آن را طبق آخرین خواسته‌اش منتشر کردم. برخی می‌گویند او بر اثر جراحات ناشی از جنگ جان خود را از دست داده، برخی دیگر می‌گویند که او به کشورش برگشته…

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

https://www.bibalan.com/?p=3904

https://t.me/bibalan_com
  • ❤ 3
Post #259 339
گربه کد من را خورد (۲)

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



اگر با این ریسک رو به رو هستید که احتمالا فروشنده سخت‌افزار هنگام بروز مشکل مطابق میل و خواسته شما عمل نمی‌کند، باید از قبل، یک طرح اضطراری (contingency plan) داشته باشید. اگر دستگاه ذخیره انبوه (mass storage) شما که تمام کدها روی آن است خراب شده و شما نسخه‌ی پشتیبانی (backup) از آن ندارید، این تقصیر فروشنده نیست بلکه تقصیر خود شماست. این که بروید و به رییس‌تان بگویید «گربه کد من رو خورده»، مشکل شما را حل نخواهد کرد و بدیهی است که بهانه‌جویی گره‌ای از مشکل شما باز نمی‌کند.

https://bit.ly/3KhMrpT


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

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

منبع: کتاب برنامه‌نویس عملگرا (The Pragmatic Programmer)

گزیده:
بزرگترین نقطه ضعف، ترس از ضعیف به نظر رسیدن است.
جی.بی. باسوئیت


https://www.bibalan.com/?p=3895
https://t.me/bibalan_com
  • ❤ 2
Post #258 193
بهار دانشگاه!

و برف می‌بارد در بهار
آن هم چه برفی!


۲ اردیبهشت ۱۴۰۱
۲۲ اپریل ۲۰۲۲

https://t.me/bibalan_com
  • 🤩 1
Post #257 188
گربه کد من را خورد (۱)

https://bit.ly/3k7Qbzn


یکی از پایه‌های فلسفه عمل‌گرایی این است که مسئولیت اقدامات خود را در مورد پیشرفت شغلی، یادگیری و آموزش، پروژه و کار روزانه‌ بپذیرید. برنامه‌نویسان عملگرا (Pragmatic Programmers) مسئولیت حرفه‌ای خود را می‌پذیرند و از اعتراف به ناآگاهی یا اشتباه هراسی ندارند. بی‌شک این خوشایندترین جنبه برنامه‌نویسی نیست، اما شک نداشته باشید که اتفاقی است که همواره رخ می‌دهد حتی در بهترین پروژه‌ها. با وجود آزمون‌های جامع، مستندات باکیفیت و اتوماسیون یکپارچه، اشتباهات رخ می‌دهند. تحویل سیستم با تاخیر انجام می‌شود و مشکلات فنی پیش‌بینی‌نشده پیش می‌آید. این اتفاقات می‌افتند و تلاش ما بر این است که تا جایی که می‌توانیم با آنها حرفه‌ای برخورد کنیم. یعنی برخوردی صادقانه و سرراست (بی‌شیله پیله) با این موضوعات داشته باشیم. ما می‌توانیم به توانایی‌هایمان افتخار کنیم، اما باید به کاستی‌هایمان یعنی ناآگاهی، بی‌اطلاعی و اشتباهات خود نیز اعتراف کنیم و آنها را بپذیریم.

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

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

منبع: کتاب برنامه‌نویس عملگرا (The Pragmatic Programmer)

گزیده:
بزرگترین نقطه ضعف، ترس از ضعیف به نظر رسیدن است.
جی.بی. باسوئیت

https://t.me/bibalan_com
https://www.bibalan.com/?p=3885
  • ❤ 2
Post #256 347
برنامه ۱۲ عاملی (۳)- عامل دوم: وابستگی‌ها
عامل ۲: وابستگی ها (Dependencies)

وابستگی ها را به صورت شفاف و صریح بیان کنید و آن ها را ایزوله کنید (Explicitly declare and isolate dependencies)

اکثر زبان‌های برنامه‌نویسی دارای سیستم بسته‌بندی (packaging system) یا مدیریت بسته‌ها (package manager) برای توزیع و پخش کتابخانه‌ها هستند، مانند npm برای جاوا اسکریپت، pip برای پایتون و NuGet برای دات‌نت. کتابخانه‌هایی که با ابزار مدیریت بسته‌ها نصب می‌شوند می‌توانند در سطح کل سیستم (system-wide) نصب ‌شوند که با نام site packages نیز معروف‌ هستند یا می‌توانند فقط محدود به یک دایرکتوری خاص شوند که برنامه در آن قرار دارد که با نام vendoring یا bundling نیز معروف هستند.

یک برنامه دوازده عاملی هیچ گاه اعتماد نمی‌کند که بسته‌ها از قبل در سیستم نصب شده‌اند و به صورت پیش‌فرض وجود دارند. این گونه برنامه‌ها همه‌ وابستگی‌ها را به صورت کامل و دقیق و به کمک یک «بیانیه اعلان وابستگی‌» (dependency declaration manifest) اعلام می‌کنند. به علاوه از یک «ابزار ایزوله‌سازی وابستگی» (dependency isolation tool) در طول اجرای برنامه استفاده می‌کنند تا مطمئن شوند که هیچ‌گونه وابستگی بیان‌نشده‌ای از محیط اطراف به داخل سیستم “نشت نمی‌کند” (leak in). وابستگی‌ها به صورت کامل و صریح و به شکل یکسان هم برای محیط عملیاتی و هم برای محیط توسعه اعمال می‌شوند.

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

یکی از مزایای اعلان صریح وابستگی‌ها (explicit dependency declaration) این است که راه اندازی (setup) را برای توسعه‌دهندگان تازه‌وارد ساده می‌کند. توسعه‌دهنده جدید کافی است نسخه‌ای ازکد (codebase) برنامه را روی دستگاه خود داشته باشد و آن وقت برای اجرا تنها به ابزارهای خود زبان (مانند پایتون) و ابزار مدیر وابستگی (مانند pip) ‌نیاز خواهد داشت. پس از این مراحل، آنها می‌توانند به کمک یک سری دستورات ساخت (build command) معین کارهای لازم برای اجرای برنامه را انجام دهند.

برنامه‌های دوازده عاملی نه تنها اعتماد نمی‌کنند که بسته‌ها در سیستم از قبل نصب شده‌اند، بلکه حتی اعتماد نمی‌کنند که ابزارها نیز از قبل نصب‌ شده و قابل استفاده باشند. به عنوان مثال ابزاری مانند curl (ابزار ارسال و دریافت داده‌ها) ممکن است در اکثر سیستم‌ها وجود داشته باشد، ولی تضمینی وجود ندارد که در همه سیستم‌هایی که برنامه روی آنها اجرا خواهد شد نیز وجود داشته باشد یا اینکه نسخه موجود در سیستم با برنامه سازگار باشد. اگر برنامه‌ای به ابزاری نیاز دارد باید آن را به همراه خودش عرضه کند.

مترجم: حمید خاتمی

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

https://t.me/bibalan_com
https://www.bibalan.com/?p=3881
Telegram سماموس: نوشته‌های یوسف مهرداد بی‌بالان این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
  • 👍 1
  • 👏 1
Post #255 176
.
.
یکی از بهترین کنسرت‌های زندگی‌:
کنسرت خاطره‌انگیز بی‌بالان


https://t.me/bibalan_com
  • ❤ 2
Post #254 190
برنامه ۱۲ عاملی (۲)- عامل اول: پایگاه کد

عامل ۱:‌ پایگاه کد (code base)

برای کنترل نسخه‌های کد یک برنامه، فقط و فقط یک پایگاه کد (کد بیس) وجود دارد، ولی در عین حال می‌تواند نسخه‌های استقراریافته (deploy) متعددی از آن وجود داشته باشد.

یک برنامه‌ی دوازده عاملی همیشه به کمک سیستم‌های کنترل نسخه (version control) مانند Git، Mercurial  یا Subversion کنترل و ردیابی (track) می‌شود. به یک کپی از پایگاه داده‌ای که حاوی اطلاعات نسخه‌ها است مخزن کد (code repository) گفته می‌شود که معمولا به صورت مختصر به نام مخرن، code repo یا repo خوانده می‌شود.

معمولا ارتباط یک به یکی بین پایگاه کد و برنامه وجود دارد:
۱) وجود چندین پایگاه کد برای یک برنامه نشان می‌دهد که آن برنامه تنها یک برنامه جدا نیست، بلکه احتمالا یک سیستم توزیع‌شده است. هر مؤلفه (component) از این سیستم توزیع‌شده، خود یک برنامه‌ی جداست و هر یک از این برنامه‌ها به تنهایی می‌تواند عوامل دوازده‌گانه را رعایت کنند.

۲) اگر چند برنامه دارای یک کد یکسان و مشترک باشند، عوامل دوازده‌گانه را نقض کرده‌اند. راه حل این است که کد مشترک بین آنها جدا شود و در کتابخانه‌هایی قرار گیرد که بتوان به کمک مدیر وابستگی(dependency manager) در جاهای مختلف استفاده شوند.

فقط یک پایگاه کد برای هر برنامه وجود دارد، ولی تعداد زیادی از نسخه‌های استقراریافته از هر برنامه می‌تواند وجود داشته باشد. معمولا یک نسخه روی محیط عملیاتی (production)، یک یا چند نسخه هم روی محیط داخلی و غیرعلمیاتی  (stage) قرار دارند و هر توسعه‌دهنده هم معمولا یک نسخه‌ی در حال اجرا از برنامه را روی دستگاه خود دارد.

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

مترجم: حمید خاتمی 

گزیده:
هدف زندگی این نیست که با اکثریت همراه شوی، بلکه در نپیوستن به جمع بی خردان است. مارکوس آئورلیوس


https://t.me/bibalan_com
https://www.bibalan.com/?p=3876
Telegram سماموس: نوشته‌های یوسف مهرداد بی‌بالان این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
Post #253 216
روزی که کل عمرم فنا شد

یادم نمی‌آید از چه زمانی عاشق درس دادن و معلمی شدم. درس دادن برای من نوعی “ارزش آفرینی” است.

بارها با خود فکر کرده‌ام که مهم‌ترین چیزهایی که به شاگردانم آموخته‌ام چه بوده است؟ حالا دلم می‌خواهد که چند مورد از آنها را بازگو کنم.

یکی از مهم‌ترین مطالبی که به شاگردانم می‌گفتم و خودم را مقید می‌دانستم به آنها بیاموزم، مطلبی بود در مورد “بازخورد” (فیدبک) و “انواع بازخورد”.

سر کلاس از عزیزانم می‌پرسیدم که
* بازخورد را تعریف کنید
* انواع آن را بگویید

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

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

من کماکان در ذهنم آشوبی به پا بود. مدام با خودم می‌گفتم: “خوب این که معلومه؛ ما دو جور بازخورد داریم؛ در درس الکترونیک هم خوانده‌ایم؛ بازخورد مثبت و بازخورد منفی”.

خانم دکتر توضیح‌اش را ادامه داد که: نوع اول بازخورد، بازخورد مثبت است. و نوع دوم بازخورد، بازخورد سازنده (Constructive).
من که بی‌حوصلگی تمام داشتم گوش می‌کردم یک دفعه جا خوردم و حواسم را جمع کردم؛ چه شد؟! بارخورد سازنده از کجا آمد. اگر دو نوع بازخورد داریم (مثبت و سازنده)، پس بازخورد منفی کجا رفت.
این شد که نصف عمر من بر فنا شد.

حالا دیگر با دقت تمام به صحبت‌های خانم دکتر گوش می‌کردم. احساس کردم واقعا نیمی از عمرم تباه شده است.
خانم دکتر ادامه داد که:
“خوب اگر می‌خواهید بازخورد مثبت بدهید، بازخورد را به نویسنده بدهید؛ مثلا مایکل عجب متن زیبابی نوشته‌ای؛ ماریا عجب ساختار خوبی برای جمله به کار برده‌ای”
و
“اگر بازخورد سازنده ارائه بدهید باید به متن اشاره کنید؛ مثلا این نوشته اگر مجهول بود بهتر بود، این فعل برای این جمله مناسب نیست”

حالا دیگر واقعا مطمئن شده بودم که کل عمر من بر فنا شد. این که چرا چنین احساسی داشتم را در نوشته‌ی بعدی توضیح خواهم داد.


https://t.me/bibalan_com
https://www.bibalan.com/?p=2541
Telegram سماموس: نوشته‌های یوسف مهرداد بی‌بالان این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
  • 👍 1
Post #252 211
برآمد باد صبح و بوی نوروز
به کام دوستان و بخت پیروز
مبارک بادت این سال و همه سال
همایون بادت این روز و همه روز

اول فروردین ۱۴۰۱
۱۹ مارس ۲۰۲۲

https://t.me/bibalan_com
Post #251 245
مهم‌ترین تصمیم زندگی

مهم‌ترین تصمیم زندگی از دید ریک راس نویسنده کتاب
A Perfect Day for Boss Up:



How you choose to spend your time is your most important decision in life.


https://t.me/bibalan_com
https://www.bibalan.com/?p=3861
Post #250 418
برنامه ۱۲ عاملی (۱)

پیش‌گفتار:
چندی پیش به صورت اتفاقی با مفهومی آشنا شدم با نام The Twelve-Factor App یا برنامه ۱۲ عاملی. برای من جالب آمد و بعد از گفتگو و بررسی آن در جلسات هفتگی با چند تن از دوستانم، تصمیم گرفتم که روزی آن را ترجمه نمایم. در این بین موضوع را با دوست خوبم حمید آقای خاتمی مطرح کردم و ایشان استقبال کردند تا آن را ترجمه نمایند. قرار بر آن شد که ایشان مطالب را ترجمه نمایند و بازنگری نهایی نیز بر عهده‌ من باشد. ضمن تشکر صمیمانه از ایشان،‌ امیدوارم آموختن این موضوع برای شما هم مفید باشد.

گفتار:

۱- معرفی

در دنیای مدرن، نرم افزارها معمولا به صورت خدمت (سرویس) ارائه می‌شوند و با نام‌های برنامه‌ی تحت وب (web apps) یا «نرم‌افزار‌ در قالب خدمت» (software-as-a-service) شناخته می‌شوند.

برنامه‌ دوازه عاملی (twelve-factor app) روشی برای ساخت برنامه‌های «نرم‌افزار در قالب خدمت» است که دارای ویژگی‌های زیر هستند:

۱- از شکل تشریحی (declarative) برای تعریف و راه‌اندازی خودکارسازی‌ها (automation setup) استفاده می‌کنند تا زمان و هزینه برای توسعه‌دهندگان تازه‌ وارد به پروژه به حداقل برسد.

۲- قرارداد مشخص و شفافی (clean contract) با سیستم عاملی که نرم‌افزار روی آن مستقر می‌شود دارند تا حداکثر امکان جابه‌جایی (portability) بین محیط‌های اجرا فراهم گردد.

۳- برای استقرار(deployment) روی سکوهای (platform) ابری مدرن مناسبند و نیازی به خدمت‌گذارها (server) و مدیریت سیستم‌ ندارند.
تفاوت و دوگانگی بین محیط توسعه (development) و محیط عملیاتی (production) را به حداقل می‌رسانند و امکان استقرار پیوسته (continuous deployment) با هدف حداکثرسازی چابکی را فراهم می‌کنند.

۴- و بدون تغییرات قابل توجهی در ابزار، معماری یا شیوه‌‌های توسعه می‌توانند مقیاس و اندازه خود را افزایش دهند (scale up).


روش دوازده عاملی را می‌توان برای برنامه‌هایی که با هر زبانی نوشته شده‌اند و برنامه‌هایی که از هر ترکیبی از خدمات (پایگاه داده، صف (queue)، حافظه‌ پنهان (cache) و غیره) استفاده می‌کنند، اعمال کرد.


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


https://www.bibalan.com/?p=3858
https://t.me/bibalan_com
Telegram سماموس: نوشته‌های یوسف مهرداد بی‌بالان این کانال برای اطلاع‌رسانی نوشته‌های وبلاگ سماموس (bibalan.com) ایجاد شده است. مطالب پس از انتشار در وبلاگ، در این کانال نیز منتشر خواهد شد. امیدوارم که مطالب آن برای شما مفید باشد و خوشحال خواهم شد تا نظرات و بازخوردهای شما عزیزان را دریافت کنم.
Post #249 213
تو هم فقط یک انسانی

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

از فیلم «شهروند مطیع قانون»

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

گزیده:
خودت را در رویاهای داشتن چیزهایی که نداری، غرق نکن، اما موهبت‌هایی که دارا هستی را بشمار، و شکرگزارانه به خاطر داشته باش که چطور رؤیای داشتن شان را در سرت می‌پروراندی اگر آنها را نداشتی‌. مارکوس آئورلیوس

منبع گزیده و پانوشت:‌ویکی پدیا

https://www.bibalan.com/?p=3849
https://t.me/bibalan_com
Post #247 262
برنامه‌نویس دور

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

https://bit.ly/359oFO2

در گزارشی از مجله‌ی Communications of the ACM خواندم که «کمبود توسعه‌دهندگان نرم‌افزار» در راه هست و شرکت‌های بزرگ فناوری اطلاعات با این چالش بزرگ باید دست و پنجه نرم کنند. مقاله را می‌توانید اینجا (https://bit.ly/355BZmq) بخوانید.

یکی از دوستان از قول یکی از همکاران هندی‌اش می‌گفت که شرکت‌های نرم‌افزاری هندی با چالش کمبود برنامه‌نویس رو به رو شدند زیرا کووید باعث شده که برنامه‌نویسان هندی بتوانند قراردادهای بهتری با شرکت‌های اروپایی و آمریکای شمالی منعقد کنند.

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

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

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

به نظر می‌رسد کووید با همه نتایج فاجعه‌باری که به همراه داشت، دنیا را برای برنامه‌نویسان دورکار جای بهتری برای کسب درآمد و دسترسی به فرصت‌های بهتر کرده است.

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

https://www.bibalan.com/?p=3843
https://t.me/bibalan_com
Post #246 212
درگذشت بانوی «کیفیت»


متاسفانه امروز با خبر شدم خانم مهندس آزاده داننده از بین ما رفت.

برای او که «آزاده» زیست و در کار خود، «داننده» بود، آرامش ابدی و برای بازماندگان و همکارانش به ویژه سرکار خانم مهندس افسانه عمادافشار صبر و سلامتی آرزومندم.
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →