Md Daily – Telegram
Md Daily
725 subscribers
239 photos
15 videos
21 files
283 links
راجب مقالات و مستندات فنی یا غیر فنی که میخونم و علایقم اینجا مینویسم :)


گروه کانال: https://news.1rj.ru/str/MdDailyGap

کورس ها: https://news.1rj.ru/str/MdDaily/395

وبلاگ: https://mddaily.ir
Download Telegram
#ام_دی_کورس

با استفاده از RUN میتونیم کامند اجرا کنیم :

RUN کامند

اینجا من میخوام از پکیج sl استفاده کنم پس:

RUN apt-get install sl

برای تنظیم و استفاده از environment variables هم از ENV استفاده میشه:

ENV مقدار:نام متغیر

برای نمونه من اینجا مقدار متغیر PORT رو روی 8080 قرار دادم:

ENV PORT=8080


ادامه در پست بعدی...


🆔 @MdDaily
1🔥1
#ام_دی_کورس

حالا میخوایم وقتی که داکر کانتینر اجرا میشه یه دستوری را اجرا کنه. برای این کار توی داکر فایل از CMD استفاده میکنیم:

CMD ["executable", "parameter1", "parameter2"]

توی ایمیج ما قرار وقتی کانتینر اجرا شد پیام Hello MdDaily Members رو نشون بده پس:

CMD [ "echo" , "Hello MdDaily Members 🐳"]


خب کار داکرفایل ما تقریبا تمومه. برای آشنایی بیشتر با Dcokerfile از مستندات داکر استفاده کنید:

https://docs.docker.com/develop/develop-images/dockerfile_best-practices/


ادامه در پست بعدی...


🆔 @MdDaily
1🔥1
#ام_دی_کورس

حالا وقت اینکه ایمیجمون رو بیلد کنیم .
برای این کار دستور docker build رو در ترمینال اجرا میکنیم :

docker build -t ImageTag Directory

👈 پارامتر -t تگ ایمیج رو مشخص میکنه

بعد از اینکه ترمینال رو در محلی که Dockerfile امون قرار داره باز کردیم با اجرای دستور زیر :

dokcer build -t mddailyimage ./

یک ایمیج جدید بنام mddailyimage را بیلد میکنیم و با دستور docker run میتونیم ایمیج ها را اجرا کنیم.

docker run نام ایمیج

پس با اجرای دستور:

docker run mddailyimage

ایمیج ما در کانتینر اجرا میشه .

ادامه در پست بعدی...


🆔 @MdDaily
1🔥1
#ام_دی_کورس

تا اینجای کار با مفاهیم مهم داکر آشنا شدیم و در عمل ازشون استفاده کردیم. در ادامه دستورات مهم و کاربردیه داکر رو بررسی میکنیم :

دستور docker pull:
برای دانلود یک ایمیج داکر از مخزن عمومی داکر استفاده میشه. به عنوان مثال، برای دانلود ایمیج وب‌سرور nginx میتونید از دستور زیر استفاده کنید:

docker pull nginx


دستور docker run:
برای ایجاد و اجرای یک کانتینر داکر از یک ایمیج استفاده میشه. به عنوان مثال، برای ایجاد یک کانتینر nginx که وب‌سایتی را در پورت 80 ارائه میده میتونید از دستور زیر استفاده کنید:

docker run -p 80:80 nginx


دستور docker ps:
برای نمیش لیست تمام کانتینرهای داکر در حال اجرا استفاده میشه:
docker ps

دستور docker stop:
برای متوقف کردن یک کانتینر داکر استفاده میشه. به عنوان مثال، برای متوقف کردن کانتینر nginx میتونید از دستور زیر استفاده کنید:

docker stop nginx

دستور docker rm:
برای حذف یک کانتینر داکر استفاده میشه. به عنوان مثال، برای حذف کانتینر nginx میتونید از دستور زیر استفاده کنید:

docker rm nginx

دستور docker build:
برای ساخت یک ایمیج داکر از یک فایل Dockerfile استفاده میشه. به عنوان مثال:

docker build -t my-web-server .

دستور docker image ls:
برای نمایش لیست کردن تمام ایمیج های موجود استفاده میشه :

docker image ls

دستور docker image rm:
برای حذف ایمیج داکر استفاده میشه. به عنوان مثال، برای حذف ایمیج my-web-server میتونید از دستور زیر استفاده کنید:

docker image rm my-web-server


🆔 @MdDaily
👍211🔥1👌1
#فان

برای اینکه هوش مصنوعی رو یاد بگیرید باید پایتان کار بشید :)

🆔 @MdDaily
🤣10🌚3
#course

درایو گوگل شامل دوره های:

Microsoft excel
Data analytics
SQL
Business analytics
Data visualization
Big data
Data Science
Web Dev
UI/UX
Product mgt
Project mgt cert
Computer Science
Interview
Resume/CV


🔗 لینک


🆔 @MdDaily
5
داده ها بخش مهمی از هر کسب و کاری هستن.

به طور کلی، شما داده ها را در یک پایگاه داده ذخیره می کنید و فکر می کنید که این کافیه.

اما این فقط نیمی از بازیه.

اگر داده های شما قابل دسترسی نباشن، کسب و کار یا پروژه ی شما از بین میره.

یکی از ترفندهای مهم برای مدیریت داده ها، تکثیر یا ایجاد کپی (replication) از اون هاست.

تکثیر پایگاه داده (Database Replication) چیه؟

فرایند Database Replication شامل نگهداری کپی هایی از داده های شما در چنتا ماشینه.

چرا؟

در دسترس بودن پایگاه داده و سیستم شما را بهبود می بخشه.

دسترسی به داده های شما را مقیاس پذیر می کنه.

همچنین، امنیت داده های شما را افزایش میده.

* تصویر پست نمونه ای از Database Replication هستش

ادامه در پست بعدی...

🆔 @MdDaily
❤‍🔥31🔥1
Md Daily
داده ها بخش مهمی از هر کسب و کاری هستن. به طور کلی، شما داده ها را در یک پایگاه داده ذخیره می کنید و فکر می کنید که این کافیه. اما این فقط نیمی از بازیه. اگر داده های شما قابل دسترسی نباشن، کسب و کار یا پروژه ی شما از بین میره. یکی از ترفندهای مهم برای…
اما Database Replication چطوری کار میکنه؟

*در دیاگرام پست، سه replicas داریم - 1 سبز و 2 نارنجی.

هر
write ای که تو دیتابیس اتفاق میوفته باید توی replica ها هم ثبت بشه.

رایج‌ترین رویکرد Replication مبتنی بر لیدر یا فعال/غیرفعال هستش.

در اینجا (تصویر پست)، سبز رنگ لیدر است و بقیه دنباله رو هستن.

مراحل راه اندازی Replication تیپیکال مبتنی بر لیدر :

👈 کلاینت ها درخواست های write خودشون رو به node لیدر ارسال می کنن.
👈 لیدر داده های جدید رو تو حافظه محلی(local storage) ایش ذخیره میکنه.
👈 لیدر همچنین تغییر داده رو به همه دنباله روهای خود به صورت یک لاگ replication ارسال می کنه.
👈 هر دنباله رو لاگ رو میخونه و کپی ای که از دیتابیس اصلی داشته رو با داده های جدید به روز می کنه.
👈 وقتی که یک کلاینت میخواد داده ها را بخونه، میتونه یک کوئری را به لیدر یا هر یک از دنباله روها ارسال کنه.
لود بالانسرها این کار را به طور خودکار انجام می دن.

به طور کلی، دو رویکرد برای Database Replication وجود داره:

1️⃣ همزمان
2️⃣ غیر همزمان

ادامه در پست بعدی...

🆔 @MdDaily
3❤‍🔥2🔥1
Md Daily
اما Database Replication چطوری کار میکنه؟ *در دیاگرام پست، سه replicas داریم - 1 سبز و 2 نارنجی. هر write ای که تو دیتابیس اتفاق میوفته باید توی replica ها هم ثبت بشه. رایج‌ترین رویکرد Replication مبتنی بر لیدر یا فعال/غیرفعال هستش. در اینجا (تصویر پست)،…
👈 در Replication همزمان، لیدر منتظر میمونه تا همه دنباله روها تأیید کنن که تغییرات را دریافت کردن.

این تضمین می کند که دنباله روها یک نسخه به روز از داده ها خواهند داشت.

اما همچنین به این معنی است که اگر یک دنباله رو در دسترس نباشد، کل سیستم از کار می افته.

👈 در Replication غیرهمزمان، لیدر بروزرسانی‌ها رو به دنباله‌ها ارسال می‌کنه، اما منتظر پاسخ دنباله‌رو نمیمونه.

این باعث میشه که لیدر برای پردازش عملیات write جدید آزاد باشه.

اما به قیمت اینکه عملیات write حتی در صورت تأیید به کلاینت، تضمینی برای ماندگاری نداره.


پس چرا به Replication نیاز داریم؟

- داده‌ها همیشه وجود دارن. ایمن و مطمئن

- میتونید بر اساس تقاضا scale کنید

- با قرار دادن سرور های replica در لوکیشن های نزدیک به کاربران داده‌ها نزدیک کاربر باقی میمونه

- هیچ نمونه(instance) ای بیش از حد تحت فشار قرار نمیگیره

- پشتیبان گیری در صورت بروز مشکل

🆔 @MdDaily
❤‍🔥32🔥1
#ام_دی_کورس

💻 کرش کورس Bash noscript

توی این دوره از آموزش های MdDaily قرار باهم یه نگاه سریعی به بش اسکریپت بندازیم، محیط Lab امون رو آماده کنیم و مثال های مختلف رو تست کنیم، پس با من همراه باشید‌ :)

ادامه در پست بعدی...


🆔 @MdDaily
4❤‍🔥1🔥1
Md Daily
#ام_دی_کورس 💻 کرش کورس Bash noscript توی این دوره از آموزش های MdDaily قرار باهم یه نگاه سریعی به بش اسکریپت بندازیم، محیط Lab امون رو آماده کنیم و مثال های مختلف رو تست کنیم، پس با من همراه باشید‌ :) ادامه در پست بعدی... 🆔 @MdDaily
#ام_دی_کورس

آماده سازی محیط کار

خب قبل از هر چیزی ما نیاز به یه جایی داریم که توش بتونیم با Bash کار کنیم .

اگه می خواهید محیطی که توش قرار Bash را یادبگیرید ایزوله و جدا از محیط اصلیتون باشه میتونید از ابزار های زیر استفاده کنید:

☁️ - Google Cloud Shell

دسترسی به سرور لینوکسی ارائه شده توسط گوگل از طریق مرورگر

⌨️ - tutorialspoint

ترمینال لینوکسی با دسترسی های محدود
🐧 - bellard.org

دسترسی به توزیع های مختلفی مثل Fedora و Alpine Linux به صورت رایگان

💻 - onworks.net

ارائه دهنده میزبانی رایگان آنلاین برای توزیع های لینوکسی
🐳 - Docker

استفاده از image های توزیعات لینوکسی

ادامه در پست بعدی...


🆔 @MdDaily
1❤‍🔥1🔥1
Md Daily
#ام_دی_کورس آماده سازی محیط کار خب قبل از هر چیزی ما نیاز به یه جایی داریم که توش بتونیم با Bash کار کنیم . اگه می خواهید محیطی که توش قرار Bash را یادبگیرید ایزوله و جدا از محیط اصلیتون باشه میتونید از ابزار های زیر استفاده کنید: ☁️ - Google Cloud Shell…
#ام_دی_کورس

خب اینجا من از داکر استفاده میکنم

با استفاده از دستور زیر image اوبونتو رو از داکر هاب دریافت کردم

docker pull ubuntu:latest

با استفاده از دستور زیر یه کانتینر اوبونتو اجرا کردم و اسمش رو گذاشتم mddaily-bash

docker run --name mddaily-bash -it ubuntu:latest

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

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

docker start -i mddaily-bash

خب حالا که محیط کارمون آماده شده وقتشه که بریم سراغ کار با Bash :)

ادامه در پست بعدی...

🆔 @MdDaily
🔥21
Md Daily
#ام_دی_کورس خب اینجا من از داکر استفاده میکنم با استفاده از دستور زیر image اوبونتو رو از داکر هاب دریافت کردم docker pull ubuntu:latest با استفاده از دستور زیر یه کانتینر اوبونتو اجرا کردم و اسمش رو گذاشتم mddaily-bash docker run --name mddaily-bash…
#ام_دی_کورس

ایجاد و اجرای اولین Bash Shell Script

قدم
اول رو به سمت اسکریپت نویسی شل بردارید :) بریم که یاد بگیریم برای ایجاد یک اسکریپت bash ساده و نحوه اجرای آن چه کاری لازمه 🤔.

اگه باید کاری را بیش از یک بار انجام دهید، اون رو خودکار کنید 🤖!

شما اغلب متوجه میشید که یک کار واحد را در لینوکس بارها و بارها تکرار می کنید 🔁. این کار ممکن است یک بکاپ ساده از یک دایرکتوری باشه 🗃 یا ممکنه پاک کردن فایل های موقت 🗑 یا حتی کلون کردن یک پایگاه داده 💾.

خودکار کردن یک کار یکی از سناریوهای مفید بسیاری هستش که میتونید در اون از قدرت اسکریپت نویسی bash استفاده کنید 🚀.

بریم ببینیم چطوری یه Bash Shell Script ساده ایجاد و اجرا کنیم و چه مواردی رو باید در مورد اسکریپت نویسی شل بدونید 💡.


📁 ابتدا یه دایرکتوری جدید به نام noscripts ایجاد می کنیم که تمام اسکریپت های ما تو این دایرکتوری قرار میگیرن.

برای ایجاد دایرکتوری از دستور mkdir استفاده میشه:

mkdir نام دایرکتوری

یعنی:
mkdir noscripts

با استفاده از دستور cd وارد دایرکتوری میشیم:
cd noscripts


حالا تو این دایرکتوری
noscripts
، با استفاده از دستور cat یک فایل جدید به نام hello.sh ایجاد میکنیم:

cat > hello.sh

بعد از اجرای کامند بالا متن زیر را وارد کنید یا بنویسد:

echo 'Hello, World!'

و در نهایت با فشردن کلید های ترکیبی Ctrl+D ذخیرش کنید و از کامند cat خارج بشید

💡 شما همچنین میتونید از یه ویرایشگر متن مبتنی بر ترمینال مثل Vim، Emacs یا Nano استفاده کنید. اگر از لینوکس دسکتاپ استفاده می کنید، میتونید از ویرایشگر متن گرافیکی مثل Gedit یا vscode هم برای افزودن متن به این فایل یا ایجادش استفاده کنید.


💡 پس، اساسا شما از دستور
echo برای چاپ "Hello, World" استفاده می کنید. میتونید از این دستور به طور مستقیم در ترمینال استفاده کنید، اما در این تست، این دستور را از طریق یک اسکریپت شل اجرا خواهید کرد.

حال برای اجرایی کردن فایل hello.sh از دستور chmod به صورت زیر استفاده کنید:

chmod u+x hello.sh

و در نهایت، اولین Bash Shell Script خود را با قرار دادن "bash" قبل از hello.sh اجرا کنید:


bash hello.sh


روی صفحه نمایش Hello, World! رو میبینید :)


ادامه در پست بعدی...


🆔 @MdDaily
❤‍🔥2🔥2
Md Daily
#ام_دی_کورس ایجاد و اجرای اولین Bash Shell Script قدم اول رو به سمت اسکریپت نویسی شل بردارید :) بریم که یاد بگیریم برای ایجاد یک اسکریپت bash ساده و نحوه اجرای آن چه کاری لازمه 🤔. اگه باید کاری را بیش از یک بار انجام دهید، اون رو خودکار کنید 🤖! شما اغلب…
#ام_دی_کورس

تبدیل shell noscript به bash noscript

گیج شدید؟ نگران نباشید. من همه چیز رو براتون توضیح خواهم داد :)

پوسته Bash که مخفف Bourne-Again shell هستش، فقط یکی از انواع پوسته(Shell) های موجود در لینوکسه.


پوسته(Shell) یک مفسر خط فرمان(command line interpreter) هست که دستورات را میگیره و اجرا می کنه. اگر تا به حال دستوری را در لینوکس اجرا کرده باشید، از پوسته استفاده کردید. هنگامی که یک ترمینال را در لینوکس باز می کنید، در حال اجرای پوسته پیش فرض سیستمتون هستید.

بش اغلب پوسته پیش فرض در اکثر توزیع های لینوکسیه. به همین دلیله که bash اغلب مترادف با Shell هستش.


اسکریپت های پوسته(shell noscripts) اغلب تقریباً سینتکس یکسانی دارن، اما گاهی اوقات نیز متفاوت هستن. به عنوان مثال، ایندکس آرایه در Zsh از 1 شروع میشه در حالی که در bash از 0 شروع میشه. اسکریپتی که برای پوسته Zsh نوشته شده، در صورتی که آرایه داشته باشه، در bash به درستی کار نمی کنه.

برای جلوگیری از سوپرایزهای ناخوشایند، باید به مفسر بگویید که shell noscript شما برای پوسته bash نوشته شده. چگونه این کار را انجام میدید؟

با استفاده از shebang !

ادامه در پست بعدی...

🆔 @MdDaily
❤‍🔥3🔥1
#ام_دی_کورس

خط SheBang در ابتدای shell noscript

خط
 #!/bin/bash

به خط شه‌بنگ (shebang) معروف است و در برخی از متون به عنوان خط هش‌بنگ (hashbang) هم بهش اشاره میشه، چون که با دو کاراکتر هش '#' و بنگ '!' شروع میشه

#! /bin/bash

echo 'Hello, World!'


وقتی شما خط
 #!/bin/bash

را در بالاترین قسمت اسکریپتتون قرار میدید، سیستم میفهمه که شما می خواهید از bash به عنوان مفسر برای اسکریپت استفاده کنید. بنابراین، شما میتونید اکنون اسکریپت hello.sh را بدون قرار دادن bash در ابتدای اون اجرا کنید.



ادامه در پست بعدی...

🆔 @MdDaily
❤‍🔥2🔥1
Md Daily
#ام_دی_کورس خط SheBang در ابتدای shell noscript خط #!/bin/bash به خط شه‌بنگ (shebang) معروف است و در برخی از متون به عنوان خط هش‌بنگ (hashbang) هم بهش اشاره میشه، چون که با دو کاراکتر هش '#' و بنگ '!' شروع میشه #! /bin/bash echo 'Hello, World!' وقتی…
#ام_دی_کورس

افزودن shell noscript به PATH (به طوری که بشه را از هر دایرکتوری اسکریپت رو اجرا کرد)

از
./hello.sh
برای اجرای اسکریپت استفاده کردم؛ اگر نقطه ابتدایی (./) را حذف کنیم، با خطای زیر مواجه میشیم:

hello.sh: command not found

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

میتونید از دستور echo برای مشاهده محتوای متغیر PATH استفاده کنید:
echo $PATH

نمونه خروجی دستور:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


دو نقطه (:) مسیر هر یک از دایرکتوری‌هایی رو که پوسته هنگام اجرای هر دستوری اسکن می‌کنه رو جدا می‌کنه.

دستورات لینوکس مانند echo، cat و غیره میتونند از هر جایی اجرا شوند، چونکه فایل‌های اجرایی آن‌ها در دایرکتوری‌های bin ذخیره میشن. دایرکتوری‌های bin در PATH قرار دارن. وقتی که یه دستور را اجرا می‌کنید، سیستم PATH را برای همه مکان‌های احتمالی که باید برای یافتن فایل اجرایی آن دستور جستجو کنه، بررسی می‌کنه.

اگه می خواهید اسکریپت bash خود را از هر کجا، مانند یک دستور لینوکس معمولی اجرا کنید، مکان اسکریپت shell خود را به متغیر PATH اضافه کنید.

ابتدا با استفاده از دستور PWD، مکان دایرکتوری اسکریپت خود را بدست آورید (با فرض اینکه در همان دایرکتوری هستید):

pwd

نمونه خروجی دستور:

/home/user/noscripts

از دستور export برای اضافه کردن دایرکتوری اسکریپت های خود به متغیر PATH استفاده کنید:

export PATH=$PATH:/home/user/noscripts

💡 با این کار پوشه noscripts به انتهای متغیر PATH اضافه میشه. بنابراین مسیر سفارشی پس از مسیرهای استاندارد جستجو میشه.


حالا میتونید اسکریپت bash رو از هر کجا اجرا کنید، مثل یک دستور معمولی در لینوکس.


ادامه در پست بعدی...

🆔 @MdDaily
❤‍🔥11👍1🔥1
#ام_دی_کورس


خب تا اینجای کار از shell noscript استفاده کردیم و با مفاهیم پایه آشنا شدیم و در نهایت مثل تصویر پست با قرار دادن مسیر دایرکتوری noscripts در PATH تونستیم از هر جایی اسکریپتمون رو اجرا کنیم

خب این بود از بخش اول از آموزش و در ادامه قرار با متغیر ها در Bash Shell Scripting آشنا بشیم و کار کنیم


ادامه در پست بعدی...

🆔 @MdDaily
❤‍🔥11🔥1
Bash_Chapter_1_Practice_Questions_Linux_Handbook.pdf
26 KB
#ام_دی_کورس

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

🆔 @MdDaily
1❤‍🔥11🔥1
#ام_دی_کورس

متغیرها در Bash Shell Script

اگه با بقیه ی زبان های برنامه نویسی کار کرده باشید، با متغیر ها آشنایی دارید.

اگه تا به حال با متغیرها کار نکردید، میتونید اونها رو مخزنی در نظر بگیرید که اطلاعاتی رو که ممکنه تغییر کنن، ذخیره می‌کنه.

متغیرها همیشه موقع نوشتن Bash Shell Script مفید هستن و بریم که در این آموزش، نحوه استفاده از متغیرها در Bash Shell Script را یاد بگیریم.

💻 استفاده از متغیرها bash shell noscripts

💡در آموزش قبلی این مجموعه، نوشتن یک برنامه hello world در bash را یاد گرفتیم. اون یک اسکریپت ساده Hello World بود. بیایید اون رو به یک Hello World بهتر تبدیل کنیم.

برنامه ی قبلی:

#! /bin/bash

echo 'Hello, World!'


بیایید این اسکریپت رو با استفاده از متغیرهای shell بهبود بدیم تا کاربران رو با اسمشون صدا کنیم. اسکریپت hello.sh رو ویرایش میکنیم تا از دستور read برای دریافت ورودی از کاربر استفاده بشه:

#! /bin/bash

echo "What's your name, stranger?"

read name

echo "Hello, $name"

حال اگر اسکریپت hello.sh رو اجرا کنید، از شما اسمتون رو میپرسه و بعد با هر اسمی که بهش ارائه بدید، به شما سلام می کنه:

linux@ubuntu:~/noscripts$ ./hello.sh
What's your name, stranger?
MdDaily
Hello, MdDaily


💡 در مثال بالا، من MdDaily رو به عنوان اسم وارد کردم و بعدش اسکریپت از من با "Hello, MdDaily" استقبال کرد. این قطعاً بسیار بهتر از یک برنامه عمومی "Hello, World" هست. موافقید؟

ادامه در پست بعدی...

🆔 @MdDaily
❤‍🔥11🔥1