درک یک پایان
رمانی به ظاهر ساده و کوتاه اما بشدت پیچیده و سنگین که محتوی فلسفه و روانشناختی و تحلیلی دارد
اخیرا به این فکر و باور بودم که 99 درصد زندگی یک انسان رو توهم تشکیل میدهد نه بیشتر، سعی داشتم با این دیدگاهم مقابله کنم
بطور اتفاقی با این کتاب آشنا شدم که صحه بر باورم گذاشت، ما در تعریف آگاهی به چند مورد اشاره میکنیم: گذشته فرد، سلامت فکری و روانی، درک او از محیط اطرافش و آنچه رخ میده
این کتاب با یک داستان ساده هر سه مورد ذکر شده راجب آگاهی رو نقض میکنه برای یک انسان و با این شرایط انسان رو وادار میکنه که نسبت به آنچه در زندگیش هست بازنگری کنه و اینکه با این اوصاف آیا انسان میتونه به پذیرش نسبت به مسائل برسه یا نه
آیا ما واقعا مسئولیم؟؟؟
@code_crafters
رمانی به ظاهر ساده و کوتاه اما بشدت پیچیده و سنگین که محتوی فلسفه و روانشناختی و تحلیلی دارد
اخیرا به این فکر و باور بودم که 99 درصد زندگی یک انسان رو توهم تشکیل میدهد نه بیشتر، سعی داشتم با این دیدگاهم مقابله کنم
بطور اتفاقی با این کتاب آشنا شدم که صحه بر باورم گذاشت، ما در تعریف آگاهی به چند مورد اشاره میکنیم: گذشته فرد، سلامت فکری و روانی، درک او از محیط اطرافش و آنچه رخ میده
این کتاب با یک داستان ساده هر سه مورد ذکر شده راجب آگاهی رو نقض میکنه برای یک انسان و با این شرایط انسان رو وادار میکنه که نسبت به آنچه در زندگیش هست بازنگری کنه و اینکه با این اوصاف آیا انسان میتونه به پذیرش نسبت به مسائل برسه یا نه
آیا ما واقعا مسئولیم؟؟؟
@code_crafters
❤4
Kubernetes in action - lesson 3
کوبرنتیز یک پلتفرم برای ساخت, دیپلوی و منیج کردن یک برنامه توزیع شده است. این برنامهها در سایز و اشکال مختلفی میتوانند باشند که روی یک یا چند سیستم به صورتهای متفاوت به اجرا درامدند. تمامی این برنامهها ورودیهایی را دریافت میکنند و میتوانند خروجیهایی را ارسال کنند. قبل از اینکه وارد این موضوع شویم, ابتدا باید بدانیم که چطور میتوانیم یک کانتینر اپلیکیشن بسازیم تا بتوانیم آن را در بستر این محیط به اجرا دربیاوریم.
برنامهها عموما ترکیبی از کتابخانهها و سورس کدها هستند که در مواقع مختلف روی کتابخانههای سیستمعاملی مانند libc و libssl نیز تکیه میکنند. این دیپندنسیها میتوانند گاهی مشکلاتی را بوجود بیاورند. برای مثال ممکن است یک کتابخانه روی لپتاپ برنامهنویس نصب باشد اما روی سرور پروداکشن این کتابخانه نصب نباشد. آنگاه به مشکلات مختلفی بر میخوریم.
این راه قدیمی که باید کل کد بیس روی یک ماشین با یک سیستمعامل مشخص و کتابخانههایی با ورژنهای مشخص اجرا شود, اکنون دیگر منقضی شده است. چرا که در تیمهای بزرگ این رویکرد تنها پیچیدگی را زیاد کرده بود.
یکی از راههایی که میتوانیم در مقابل این مشکل بایستیم این است که کل برنامه را تبدیل به یک package کنیم و آن را یکجایی push کنیم تا دیگران آن را pull کنند و از آن استفاده کنند. Docker یکی از محبوبترین ابزارها برای این کار است. با داکر میتوانیم یک ایمیج executable بسازیم و سپس آن را روی یک رجیستری push کنیم تا دیگران بتوانند از آن استفاده کنند.
پس درواقع container image ها یک مجموعهای از سورس کد و دیپندنسیهای آن هستند که در لایههای مختلفی از یک ایمیج ذخیره شدهاند. معروفترین فرمت این ایمیجها, فرمت ایمیجهای داکر است که توسط OCI, استداندارد سازی شده است.
خوشبختانه کوبرنتیز از فرمتهای docker image format و OCI ساپورت میکند.
ایمیج کانتینرها تنها یک فایل نیستند, بلکه آنها پوینتری به فایلهای دیگه هستند. ایمیجها از لایههایی تشکیل شدهاند که این لایهها ممکن است گاهی مدتها پیش توسعه یافته باشد.
ایمیجها معمولا با یک configuration file اجرا میشوند که در آن تنظیمات مربوط به نتورک, entrypoint command و syscall restriction کانفیگ میشوند.
کانتینرها به دو دسته تقسیم میشوند.
1- system containers
2- application containers
دسته اول به کانتینرهایی میگوییم که یک سیستمعامل کامل را نصب دارد که میتوانیم در آن اقدامات زیادی انجام دهیم. اما این کانتینرها منابع بیشتری مصرف میکنند, پس برنامهنویسها به دنبال یک راه بهتر و سبک تر رفتند و application containerها را پیدا کردند. این کانتینرها معمولا ایمیجهای سبکتری دارند. چرا که این کانتینرها با یک سیستمعامل پایهای و سبک بوت میشوند و تمرکز آنها بیشتر روی ابزاری است که توسعه میدهند.
اما یک ایمیج را چگونه میتوانیم بهینه کنیم؟
۱- فایلهای اضافی را در .dockerignore قرار دهیم.
سناریو زیر را درنظر بگیرید:
Layer 1: Contain a big file
Layer 2: Removes the big file
در سناریو بالا, خیلی بهتر میشد اگر از همان اول Big file را داخل .dockerignore قرار دهیم.
۲- به ترتیب اجرای دستورات دقت کنید.
به سناریوی زیر دقت کنید:
Dockerfile A:
Install big linux dependencies
Copy requirements.txt
Install reuirements
Dockerfile B:
Copy requirements.txt
Install reuirements
Install big linux dependencies
دو ایمیج بالا دقیقا یک کار را انجام میدهند, اما در ایمیج دومی هرگاه requirements.txt تغییر میکند, ما دیپندنسیهای سنگین را از نو نصب میکنیم! پس بهتر است این لایههای سنگین را در ابتدای فایل ایجاد کنیم.
در درسهای بعد به مسائلی همچون multistage image build میپردازیم.
#kubernetes_up_and_running
@Code_Crafters
کوبرنتیز یک پلتفرم برای ساخت, دیپلوی و منیج کردن یک برنامه توزیع شده است. این برنامهها در سایز و اشکال مختلفی میتوانند باشند که روی یک یا چند سیستم به صورتهای متفاوت به اجرا درامدند. تمامی این برنامهها ورودیهایی را دریافت میکنند و میتوانند خروجیهایی را ارسال کنند. قبل از اینکه وارد این موضوع شویم, ابتدا باید بدانیم که چطور میتوانیم یک کانتینر اپلیکیشن بسازیم تا بتوانیم آن را در بستر این محیط به اجرا دربیاوریم.
برنامهها عموما ترکیبی از کتابخانهها و سورس کدها هستند که در مواقع مختلف روی کتابخانههای سیستمعاملی مانند libc و libssl نیز تکیه میکنند. این دیپندنسیها میتوانند گاهی مشکلاتی را بوجود بیاورند. برای مثال ممکن است یک کتابخانه روی لپتاپ برنامهنویس نصب باشد اما روی سرور پروداکشن این کتابخانه نصب نباشد. آنگاه به مشکلات مختلفی بر میخوریم.
این راه قدیمی که باید کل کد بیس روی یک ماشین با یک سیستمعامل مشخص و کتابخانههایی با ورژنهای مشخص اجرا شود, اکنون دیگر منقضی شده است. چرا که در تیمهای بزرگ این رویکرد تنها پیچیدگی را زیاد کرده بود.
یکی از راههایی که میتوانیم در مقابل این مشکل بایستیم این است که کل برنامه را تبدیل به یک package کنیم و آن را یکجایی push کنیم تا دیگران آن را pull کنند و از آن استفاده کنند. Docker یکی از محبوبترین ابزارها برای این کار است. با داکر میتوانیم یک ایمیج executable بسازیم و سپس آن را روی یک رجیستری push کنیم تا دیگران بتوانند از آن استفاده کنند.
پس درواقع container image ها یک مجموعهای از سورس کد و دیپندنسیهای آن هستند که در لایههای مختلفی از یک ایمیج ذخیره شدهاند. معروفترین فرمت این ایمیجها, فرمت ایمیجهای داکر است که توسط OCI, استداندارد سازی شده است.
خوشبختانه کوبرنتیز از فرمتهای docker image format و OCI ساپورت میکند.
ایمیج کانتینرها تنها یک فایل نیستند, بلکه آنها پوینتری به فایلهای دیگه هستند. ایمیجها از لایههایی تشکیل شدهاند که این لایهها ممکن است گاهی مدتها پیش توسعه یافته باشد.
ایمیجها معمولا با یک configuration file اجرا میشوند که در آن تنظیمات مربوط به نتورک, entrypoint command و syscall restriction کانفیگ میشوند.
کانتینرها به دو دسته تقسیم میشوند.
1- system containers
2- application containers
دسته اول به کانتینرهایی میگوییم که یک سیستمعامل کامل را نصب دارد که میتوانیم در آن اقدامات زیادی انجام دهیم. اما این کانتینرها منابع بیشتری مصرف میکنند, پس برنامهنویسها به دنبال یک راه بهتر و سبک تر رفتند و application containerها را پیدا کردند. این کانتینرها معمولا ایمیجهای سبکتری دارند. چرا که این کانتینرها با یک سیستمعامل پایهای و سبک بوت میشوند و تمرکز آنها بیشتر روی ابزاری است که توسعه میدهند.
اما یک ایمیج را چگونه میتوانیم بهینه کنیم؟
۱- فایلهای اضافی را در .dockerignore قرار دهیم.
سناریو زیر را درنظر بگیرید:
Layer 1: Contain a big file
Layer 2: Removes the big file
در سناریو بالا, خیلی بهتر میشد اگر از همان اول Big file را داخل .dockerignore قرار دهیم.
۲- به ترتیب اجرای دستورات دقت کنید.
به سناریوی زیر دقت کنید:
Dockerfile A:
Install big linux dependencies
Copy requirements.txt
Install reuirements
Dockerfile B:
Copy requirements.txt
Install reuirements
Install big linux dependencies
دو ایمیج بالا دقیقا یک کار را انجام میدهند, اما در ایمیج دومی هرگاه requirements.txt تغییر میکند, ما دیپندنسیهای سنگین را از نو نصب میکنیم! پس بهتر است این لایههای سنگین را در ابتدای فایل ایجاد کنیم.
در درسهای بعد به مسائلی همچون multistage image build میپردازیم.
#kubernetes_up_and_running
@Code_Crafters
❤6
شاید عمیقا رنج انسان از زندگی همین مفهوم باشد، جایی که در انتهای تمام تلاشت صرف دوست داشتن کسی به منتها علیه نرسیدنی ختم شود که آن دیگری نمیخواهد یا تنها بازیچه برطرف شدن حس نیاز به دیده شدن او شوی که برگرفته از کمبودهای درونی اوست، آنچه بر تو غالب خواهد شد نرسیدن نیست بلکه بیگانگی عمیقیست که نسبت به دنیا و ارزشهای خود ساخته داری، با نگاه کوچکی به گذشته خود و آنچه را که از دیگری به تو با لمس رسیده باشد، چنان در خود خواهی شکست که هیچ توانی صرف بازسازی مجدد خویش نمیبینی، عمیقا دنبال پاسخی میگردی که آن دیگری هم از پذیرش اصل مسئله سرباز خواهد زد تا که بخواهد در یافتن پاسخ سرنخی به تو بدهد، حس دور شدن نه از دیگری بلکه از خودت شروع میشود، آدمی که به خود نرسد، به هیچ هم نمیرسد
👍5
عمیقترین احساس زندگی خودتون رو پیدا کنید بعد ببینید بیدفاعترین حالت ممکن شما دقیقا در همونجا قرار گرفته
این حس برای من نوعی دقیقا جایی قرار داره " که بشدت دلتنگ آدمیم که دوستش دارم و هیچ راه ارتباطی برام نمیزاره" چنان در مقابل این احساس پیچیده بی دفاعم که انگار یک کودک از دوری مادرش رنج میبره
این دقیقا همون ترومایی هستش که در دوران کودکی درونم فعال شده و تمامیه زندگی من رو قربانی خودش کرده و پس از این همه سال که خودش رو در پنهانترین لایههای زندگیم گنجانده بود در نهایت تونستم پیداش کنم و با بزرگترین چالش زندگیم در خودشناسی روبرو شدم
میشنوم از تجربه عمیقترین احساسی که تجربه کردهاید❤️
این حس برای من نوعی دقیقا جایی قرار داره " که بشدت دلتنگ آدمیم که دوستش دارم و هیچ راه ارتباطی برام نمیزاره" چنان در مقابل این احساس پیچیده بی دفاعم که انگار یک کودک از دوری مادرش رنج میبره
این دقیقا همون ترومایی هستش که در دوران کودکی درونم فعال شده و تمامیه زندگی من رو قربانی خودش کرده و پس از این همه سال که خودش رو در پنهانترین لایههای زندگیم گنجانده بود در نهایت تونستم پیداش کنم و با بزرگترین چالش زندگیم در خودشناسی روبرو شدم
میشنوم از تجربه عمیقترین احساسی که تجربه کردهاید❤️
❤5