Academy and Foundation unixmens | Your skills, Your future
2.29K subscribers
6.66K photos
1.37K videos
1.24K files
6.08K links
@unixmens_support
@yashar_esm
[email protected]
یک کانال علمی تکنولوژی
فلسفه متن باز-گنو/لینوکس-امنیت - اقتصاد
دیجیتال
Technology-driven -بیزینس های مبتنی بر تکنولوژی
Enterprise open source
ارایه دهنده راهکارهای ارتقای سازمانی - فردی - تیمی
Download Telegram
🔴کار زیبای اساتید و دانشجوهای دانشکده داروسازی شهید بهشتی برای تامین ضد عفونی کننده ی مراکز بهداشتی درمانی
✌️ بهبودی کامل و ترخیص ۲۱ بیمار COVID-19 در قم

🔺۲۱ نفر از مبتلایان کروناویروس جدید (COVID-19) در قم پس از بهبودی کامل از بیمارستان مرخص شدند. ۱۳ نفر از این بیماران در بیمارستان کامکار و ۸ نفر نیز در بیمارستان فرقانی بستری بودند. البته ۳۲۰ نفر مشکوک به COVID-19 هنوز در دو بیمارستان قم بستری هستند./ایسنا
🔴مقایسه علائم کرونا، آنفولانزا و سرماخوردگی با یکدیگر
This media is not supported in your browser
VIEW IN TELEGRAM
🔴دکتر حمید رضا جماعتی فوق تخصص ریه و ICU بیمارستان دکتر مسیح دانشوری :

🔺مبتلایان به ویروس کرونا در صورت داشتن مشکل تنفسی بستری خواهند شد؛
تعداد زیادی از بیماران مبتلا به کرونا نیاز به بستری ندارند.
کسب کدام یک از مدارک IT براساس گزارش موسسه #Globalknowledge بالاترین مقدار حقوق و دستمزد💰 در سال 2020 را به همراه دارد؟
👇👇👇
⭐️رده های اول تا چهارم لیست متعلق به حوزه امنیت و #کلود که نمایانگر تاثیر بالای این دو حوزه در صنعت IT می باشد.

⭐️مدرک کلود GCP Cloud Architect certification #گوگل که در سال 2017 معرفی شد برای دومین سال متوالی بالاترین میزان حقوق و دستمزد را به خود اختصاص داد.

⭐️مدرک AWS Certified Solutions Architect – Associate #آمازون همانند سالهای قبل که یکی از 3 مدرک با بالاترین میزان پرداختی بود در رده دوم قرار گرفت.

⭐️مدرک ITIL® Foundation به عنوان محبوب ترین مدرک و دومین مدرک محبوب در ایالات متحده آمریکا 🇺🇸 شناخته شد.
یک موقعیت خوب دکترا در اسپانیا که تقریبا تمام گرایشهای کامپیوتر را پوشش میده https://careers.networks.imdea.org/

#jobs #بورسیه #بورسـتحصیلی
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
دواپس چیست ؟ | What is DevOps ?

ا DevOps یا دِوآپس، مجموعه ای از روش ها، فرایند ها و ابزارهایی است که با تمرکز بر ارتباطات و همکاری و یکپارچگی بین تیم های توسعه، تضمین کیفیت و عملیات، ارزش های تولید شده را سریع و به صورت مستمر به مشتریان نهایی می رساند. ادغام کلمات اختصاری “Dev” و “Ops” به این موضوع اشاره دارد که توسعه و عملیات به عنوان دو تیم مستقل و کاملا جدای از هم، جای خود را به تیم های چند تخصصی با مهارتها، روش ها و ابزار یکپارچه داده است.
یک تعریف ملموس برای کسب و کار

دواپس اتحاد بین افراد، فرایندها و محصولات برای تحویل مستمر ارزش ها (Continuous Delivery of value) به مشتریان نهایی است. Donovan Brown
دواپس به زبان ساده

در پست دیگری با عنوان “دواپس به زبان ساده چیست ؟” تعریف و توصیف ساده تر و عامیانه تری ارائه شده است.

از جمله الزامات اجرای دواپس می توان به موارد زیر اشاره کرد :

Continuous Integration
Continuous Delivery
Agile Planning
Application Monitoring

چرا دواپس را اجرا کنیم ؟ | Why should implement DevOps ?



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


تاریخچه

در کنفرانس چابک سال ۲۰۰۸، اندرو شفر و پاتریک Debois «زیرساخت چابک» را توصیف کردند. اصطلاح DevOps از طریق یک سری رویداد به نام "devopsdays" در سال ۲۰۰۹ در بلژیک رایج شد. پس از آن کنفرانس‌هایی با نام devopsdays در بسیاری از کشورها در سراسر جهان برگزار شده‌است.#devops @unixmes
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
مفهوم و ساختار Ansible چیست ؟
چنانچه شما بعنوان یک Linux System Administratior در دیتا سنتری کار کنید میدانید که مدیریت و راهبری تعداد زیاد server کار آسانی نیست مثلا اگر قرار باشد تعداد ۵ تا server را بروز رسانی کنید شاید کار زیاد زمان بری نباشد اما اگر لازم باشد تعداد ۱۰۰ یا ۲۰۰ تا بیشتر را پشتیبانی و بروز رسانی کنید کاری بسیار پر استرس و زمان بر خواهد بود .
در سالهای گذشته بیشتر System Administrator ها از قابلیت نوشت script به منظور راهبری و پشتیبانی server های خود استفاده میکردند که نیاز به دانش عمیق در برنامه نویسی با زبان script داشت و مستلزم وقت برای نوشتن script های صحیح و دقیق و کارا بود . فرض کنید میخواهید کلیه server های خود را update کنید و یا می خواهید backup بگیرید , چنانچه بخواهید بر روی هر server جداگانه این کار را انجام دهید مسلما کاری وقت گیر است که در این زمانه وقت و زمان بسیار در سیستم های آنلاین و برخط مهم است و اینکه server و service شما بالا و برخط باشد و در همان شرایط بتوانید عملیات لازم را روی آن انجام دهید مسئله ای ارزشمند است .
در واقع Ansible یک برنامه opensource برای متمرکز کردن کارهای دیتاسنترها روی server های می باشد . بوسیله Ansible قادر خواهید بود که بسیاری از وظایف ادمین را بصورت خودکار راه اندازی و تعریف کنید تا در زمان مناسب بصورت remote یا از راه دور روی ماشین های شما اجرا گردد. ساختار Ansible بگونه ای طراحی شده است که شما را قادر خواهد ساخت بدون shutdown کردن سیستم به عملیات مختلف روی ماشین های خود ادامه دهید .
مثلا Ansible میتواند عملیاتی مثل update ماشین های مختلف را بصورت Zero Downtime انجام دهد . در ضمن system admin نیازی به نوشتن script های بهینه شده نداشته و میتواند از زبانهای high-level در ansible براحتی استفاده نماید . در Ansible می توانید وظایف را بصورت گروه های مختلف مثلا گروه های مرتبط با host یا نوع آنها و ساختار معماری آنها تعریف نمایید . مفهومی بنام paly در Ansible داریم که مجموع از وظایف مرتبط با یک گروه از host ها را برعهده دارد و فایلی که یک یا بیش از یکی از این palys ها را شامل باشد palybook نامیده می شود . معماری Ansible بصورت agentless است . هر زمانی که Ansible کاری را اجرا کند و فرمانی صادر
کند این کار به ماشین های راه دور منتقل می شود . از آنجاییکه Ansible تعداد زیادی بیش از صد ماژول در core خود دارد لذا کار system administrator ها را خیلی راحت می کند .
در واقع Ansible اولین بار توسط Michael DeHaam طراحی و تولید شد ، شخصی که بوجود آورنده برنامه Collber provisioning بود. از آنجاییکه Ansible بسیار ساده است لذا بسیاری از system admin ها از آن استفاده میکنند . همچنین Developer ها یا توسعه دهندگان برنامه ها نیز می توانند براحتی از Ansible استفاده نمایند زیرا بر پایه زبان Python نوشته شده است . Ansible توسط ابزارهای DevOps مثل Vagrant و Jenkins پشتیبانی می شود. در این بین کارهای زیادی هم وجود دارد که ansible قادر به انجام آنها نیست . مثلا Ansible نمیتواند تغیراتی که توسط کابران در سیستم انجام میگردد را audit یا رسد کند . مثلا اینکه این فایل را چه کسی تغییر داده است .
لیست زیر نمونه ای از کارهایی که توسط Ansible قابل انجام نمی باشد آمده است :
در واقع Ansible می تواند package های مورد نیاز در زمان نصب را اضافه کند، اما قادر به نصب اولیه در حالت minimal روی سیستم نیست . هر سیستمی را میتوان بصورت Minimal راه اندازی کرده و سپس توسط Kickstart یا ابزارهای مشابه یک image از آن تهیه نمود، سپس با Ansible برای پیکربندی های دیگر استفاده کرد .
با اینکه Ansible قادر است پیکربندی مربوط به فایروال را تنظیم نماید اما بر آن نظارتی ندارد . Ansible نمی تواند تغییرات روی فایل های داخل سسیتم را پیگیری کند که آیا این تغییرات توسط کاربر انجام شده یا توسط process . غالبا بهتر است که این گونه تغییرات بهتر است با ابزارهای دیگر مخصوص version control یا ابزارهای audit خود سیستم عامل لینوکس انجام پذیرد.
#ansible #sys_admin #devpos @unixmens
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
با #jenkins آشنا شویم
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
اگر برنامه نویس هستید احتمالا با مشکلات زیادی که هنگام برنامه نویسی پیش می آید برخورد کرده اید. شروع کار هر پروژه کامپیوتری که از روش سنتی و بدون تست استفاده میکند معمولا سریع پیش می رود و رفته رفته سرعت توسعه کم و کمتر می شود. این شرایط درست شبیه به شرایطی است که در باتلاق رخ میدهد هر چه بیشتر دست و پا می زنید بیشتر غرق می شوید...

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

همین روند باعث شد تا روشی جدید برای برنامه نویسی به نام test driven development یا به اختصار TDD ابداع شود. در این روش یک سیکل دائمی وجود دارد که منجر به کاهش جشمگیر میزان باگ ها خواهد شد.
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
در شکل بالا روند کلی این روش نشان داده شده است. این روش به این صورت است که برنامه نویس باید دو توع کد را موازی با هم پیش ببرد یکی کد اصلی و دیگری کد تست نام دارد. کد تست کد اصلی را تست می کند و کد اصلی خود برنامه اصلی است. روند کار در TDD به این صورت است که ابتدا سعی می کنیم تستی بینویسیم که fail شود. سپس سعی می کنیم تا کد اصلی خود را طوری تغییر دهیم که آن تست pass شود بعد از این کار به تمیز کردن کدهایی که زدیم می پردازیم (مثلا انتخاب نام های بهتر برای متغیرها و کم کردن حجم توابعی که نوشتیم برای خواناتر شدن کد) بعد از این کار این روند را تا ابد تکرار می کنیم. اگر بخواهیم نمودار بالا را ساده تر نشان دهیم می توانیم آن را به سه قسمت Red و Green و Refactor تقسیم کنیم :

د RED : در این حالت هدف نوشتن تستی است که fail شود. شاید پیش خودتان بپرسید چرا باید همچین کاری کرد ؟ جواب این سوال در اینجاست که شما fail شدن تست خود را با چشمان خود می بینید و به این ترتیب به تستی که نوشتید اطمینان پیدا می کنید وقتی در ادامه راه توانستید pass شدن آن را هم ببینید آن وقت هم test شدن و هم pass شدن آن را دیده اید و مطمئن می شوید که این تست درست کار می کند این نکته خیلی مهمی است
د GREEN : برای تستی که در مرحله قبل fail شده کد اصلی ای مینویسید که تست fail شده را pass کند به این ترتیب شما به تست خود اعتماد می کنید چون هم fail شدن و هم pass شدن اش را دیده اید
د REFACTOR : در این مرحله کدهایی که در دو مرحله قبل زده اید را از لحاظ خوانایی بهتر میکنید مثلا کارهایی از قبیل کم کردن تعداد خطوط توابع یا بهینه کردن پارامترهای ورودی آنها
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
به این ترتیب درواقع ما کد اصلی را مانند قطعات پارل کنار هم قرار می دهیم. هر کدام از این قطعات تست شده اند و احتمال وقوع باگ را در ادامه کار کاهش می دهند. شاید در ابتدا اینگونه به نظر برسد که نوشتن تست برای کد سرعت توسعه را کاهش می دهد شاید در ابتدای کار این حرف درست باشد اما هر چقدر که کار جلوتر می رود دیگر مانند قبل در باتلاقی که توصیف کردم فرو نمی روید و با سرعتی تقریبا ثابت به کار ادامه می دهید. چیزی که در این روش توسعه به شدت محسوس است کاهش میزان debug کردن در حین کار است.
نقش jenkins در این داستان کجاست ؟

حال که نقش تست نرم افزار را درک کردید به سراغ یکی از ابزارهای معروف برای continuous integration به نام jenkins می رویم. این برنامه برای کار تیمی روی یک پروژه درست شده است و بطور اتوماتیک خودش با یک اتفاق خاص (مثلا هر ۲۰ دقیقه یکبار یا با هر بار push کردن کد) تست هایی که برایش به عنوان یک کار (job) تعریف کردیم را اجرا کند و بلافاصله نتیجه را نشان میدهد اگر تست ها fail شدند تمام اطلاعات ذخیره شده و معلوم میشود که با کدام commit بوده که تست fail شده و مشکل را میتوان سریعتر حل کرد مثلا مدیر پروژه میتواند این موضوع را سریعا دیده و اطلاع دهد تا مشکل قبل از بزرگتر شدن حل شود.
نصب jenkins

برای نصب jenkins می توانید به آدرس jenkins.io رفته و متناسب با سیستم عامل خود installer موردنظر خود را دانلود و نصب کنید. همچنین اگر java runtime برروی سیستم شما نصب است می توانید فایل نصب war. را دانلود کنید و با دستور زیر آنرا اجرا کنید:

java -jar <name of file>.war

در دستور بالا به جای <name of the file> نام فایلی را که دانلود کرده اید قرار دهید. (مثلا jenkins.war) بعد از اجرای این دستور در log هایی که در اجرای دستور می آیند شماره پورتی که سرور روی آن اجرا می شوند نمایش داده میشود (معمولا این عدد ۸۰۸۰ است) بعد از اینکه سرور آماده برای کار شد میتوانید در مرورگر ip و port ای که دارید را وارد کنید (اگر local هستید این آدرس localhost:port و اگر برروی سرور این عملیات را انجام دادید server_ip:port را وارد کنید.) پس از انجام مراحل نصب باید چیزی شبیه به تصویر زیر ببینید
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
این وب اپلیکیشن قسمت های مختلفی دارد مثلا بخش people در منوی سمت چپ افرادی که در سیستم حضور دارند و پروژه های مرتبط با آنها را نمایش می دهد. بخش دیگر new item نام دارد که یکی از اصلی ترین بخش های این نرم افزار است. این بخش برای ایجاد job جدید درست شده. job ها معمولا همان کارهایی هستند که قرار است برای تست کدهای اصلی مان انجام دهیم. مثلا یک job میتواند این باشد که به ازای هر بار push به سرور یک سری تست برروی کدها انجام شود تا اگر تستی fail شد سریعا مشخص شود و سریعا برطرف شود یا حتی میتوان اگر تستی fail شد اجازه push به کاربر داده نشود تا مجبور شود تست ها را pass کند. البته نتیجه این کار را زمانی میتوان مشاهده کرد که تست ها کامل و خوب نوشته شده باشند اگر تست ها ناقص باشند باز هم احتمال وقوع باتلاقی که در ابتدای بحث کردیم وجود دارد !
یک مثال ساده از continuous integration با استفاده از jenkins

برای این که با طرز کار jenkins بهتر آشنا شوید با یک مثال ساده از یک پروژه django بحث را ادامه می دهیم. django یک فریمورک برای ساخت وب سایت است که با زبان برنامه نویسی پایتون (python) نوشته شده است. معمولا وقتی حرف از تست نرم افزار به میان می آید اکثر اوقات منظور unit testing است. به زبان ساده Unit test یعنی تست کردن جزء به جزء سیستم بطور مجزا مثلا یعنی ابنکه به توابع سیستم ورودی های مختلف بدهیم و چک کنیم آیا خروجی های آن با چیزی که انتظار داریم یکسان است یا خیر. در django هم میتوانیم از Unit test ای که خود فریمورک در اختیار ما قرار داده استفاده کنیم تا برنامه خود را تست کنیم. در این مثال میخواهیم کاری کنیم تا بعد از هر بار تغییر در کد هنگام push یکبار تست هایی که برای وب اپلیکیشن نوشتیم اجرا شود و نتیجه را به ما نشان دهد.دقت کنید که مراحل برای تقریبا تمام پروژه های دیگر با هرزبان برنامه نویسی و فریمورکی قابل اجراست ما فقط برای اینکه نتیجه را ملموس تر نشان دهیم با یک پروژه ساده شروع کردیم. مراحل زیر را دنبال کنید:

ابتدا در ضحه اصلی بر روی new item کلیک کنید.
سپس یک نام برای item‌ جدید انتخاب کرده و گزینه free style project را انتخاب کنید و برروی ok کلیک کنید.
در صفحه جدیدی که ایجاد میشود در قسمت Source Code Management گزینه git را انتخاب کنید و تنظیمات مربوط به repository خود را که میخواهید با هر بار push تغییراتش را چک کنید وارد کنید
در قسمت build همین تنظیمات general کدی را که میخواهید به ازای هر بار Push شدن اجرا شود وارد کنید (در django برای اجرای unit test ها باید دستور python manage.py test را اجرا کرد که میتوان در همین قسمت وارد کرد)
Forwarded from Academy and Foundation unixmens | Your skills, Your future (yashar esmaildokht 🐧)
پس از ذخیره کردن تنظیمات با هر بار تغییر در کدهای اصلی و push کردن به سرور jenkins کدهای جدید را تست میکند و نتیجه را اعلام میکند که میتوان در صفحه مربوط به item ایجاد شده آن را مشاهده کرد.