بایگانی دسته: کتاب

داکر چیست؟

لوگوی داکر

مدتی است داکر (Docker) در فضای IT تبدیل به یک موضوع داغ تکنولوژیک شده است. در نتیجه، بسیاری به دنبال یادگیری و استفاده از این ابزار برآمده اند. در این پست سعی می کنم خلاصه ای از ماهیت داکر و مسائلی که این ابزار سعی در حل آنها دارد را بیاورم.

داکر متشکل از یک ابزار خط فرمان و یک سرویس (Daemon) است که:

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

در ادامه هر یک از این موارد را با جزئیات بیشتر مورد بررسی قرار می دهیم.

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

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

یکی دیگر از امکانات داکر مجازی سازی در سطح سیستم عامل است. اما این عبارت به چه معناست و چه مزایایی دارد؟ در گذشته نه چندان دور، یکی از روش های ایزوله سازی نرم افزارها استفاده از ماشین های مجازی بود (البته ماشین مجازی کاربردهای دیگری هم دارند که برای ساده تر شدن درک مفاهیم از آنها صرفنظر می کنیم). در این رویکرد یک ماشین میزبان (Host) وجود دارد که سیستم عاملی مشخص دارد برای مثال لینوکس. به علاوه، روی سیستم میزبان یک نرم افزار مجازی سازی نصب می شود (مانند VMWare یا سایر ابزارهای مشابه). حال باید با استفاده از ابزار مجازی سازی ماشین های مجازی ایجاد شوند. هر ماشین مجازی باید یک سیستم عامل و در نهایت نرم افزاری که می خواهیم ایزوله شود را داشته باشد. خلاصه این موارد را می توانید در تصویر زیر مشاهده کنید:

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

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

یکی دیگر از امکانات داکر فراهم آوردن یک مخزن برای دانلود و نصب نرم افزارها است. این مخزن به آدرس https://hub.docker.com در دسترس است (هرچند به علت تحریم ها در حال حاضر این سایت به صورت مستقیم قابل استفاده نیست. اما می توانید با ابزارهای دور زدن تحریم یا اندیس های جایگزین از این امکان استفاده کنید).

در نهایت تمامی این موارد قابلیت جا به جایی نرم افزارها را بهبود می دهند. با استفاده از داکر می توانید نرم افزارهای گوناگون را در سیستم عامل های مختلف نصب و راه اندازی کنید و کانتینرهای خود را به راحتی و بدون نگرانی به اشتراک بگذارید.

در نوشتن این پست سعی شده موارد تا حد امکان بدون ذکر جزئیات فنی مطرح شوند تا مطلب برای همه مخاطبان قابل مطالعه باشد. اگر به یادگیری بیشتر در این باره علاقه دارید، پیشنهاد می کنم کتاب Docker In Action نوشته Jeff Nickoloff رو مطالعه کنید. در نهایت امیدوارم موارد مطرح شده مورد استفاده قرار بگیرد.

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

کتاب برنامه نویسی با پایتون ۳

سرانجام کتاب برنامه نویسی با پایتون ۳ به چاپ رسید. این کتاب درواقع ویرایش دوم کتاب برنامه نویسی با پایتون است که چاپ اول آن در سال ۱۳۹۳ و چاپ دومش در سال ۱۳۹۴ روانه بازار شد و با استقبال خوبی از طرف مخاطبین عزیز مواجه شد. در این ویرایش کتاب برای تغییرات پایتون ۳ به روز رسانی شده است. به علاوه چند فصل هم به کتاب اضافه شده. در این کتاب نه تنها با نحو (Syntax) زبان پایتون آشنا می شوید بلکه می آموزید چطور مثل یک کامپیوتردان فکر کنید و با مهارت های حل مسئله و اشکال زدایی که برای برنامه نویسان تازه کار بسیار مهم هستند آشنا می شوید. به علاوه در سی دی همراه کتاب می توانید به نسخه لاتین و یک مجموعه ویدئوی آموزشی پایتون و کدهای کتاب هم دسترسی داشته باشید. امیدوارم از مطالعه کتاب لذت ببرید. می توانید یک فصل از کتاب را به صورت رایگان در آدرس زیر مطالعه کنید:

مطالعه رایگان یک فصل از کتاب برنامه نویسی با پایتون ۳

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

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

قافله عمر

مدتی پیش طبق درخواست نشر دانشگاهی کیان به روز رسانی کتاب برنامه نویسی با پایتون را آغاز کردم. این کتاب اولین بار در سال ۱۳۹۳ چاپ شد و در سال ۱۳۹۴ به چاپ دوم رسید. قرار است در این ویرایش کتاب برای استفاده در نسخه سوم زبان پایتون به روز رسانی شود. البته به جز به روز رسانی برای پایتون ۳ تغییرات دیگری هم وجود دارد که پس از چاپ طی پستی ارائه خواهم داد.

اما نکته جالبی که با آن مواجه شدم گذر زمان است. امروز به برخی از حاشیه نویسی های ویرایش اول نگاه می کردم که متعلق به پانزدهم فوریه ۲۰۱۳ میلادی است. طبق http://www.time.ir این تاریخ مطابق با ۲۷ بهمن ماه ۱۳۹۱ است! در آن زمان چند فصل اول کتاب را ترجمه کرده بودم! از آن زمان تا امروز که این مطلب را می نویسم ۱۴۰۲ روز یا به عبارت دیگر ۳ سال و ۱۰ ماه و ۳ روز می گذرد. مثل یک چشم بر هم زدن. این گذر سریع مرا یاد این شعر از خیام می اندازد:

این قافله عمر عجب میگذرد
دریاب دمی که با طرب میگذرد

ساقی غم فردای حریفان چه خوری
پیش آر پیاله را که شب میگذرد

برای آگاهی از پست های بعدی می توانید در کانال تلگرام وبلاگ عضو شوید.
برای عضویت در کانال وبلاگ اینجا کلیک کنید

کتب جدید!

busy

مدتی است که در کنار کار روتین و به اصطلاح کارمندی ام به عنوان یک محقق تکنیکی/برنامه نویس در حال ترجمه سه کتاب هستم(تا بتوانم کم کاری یکی دو سال گذشته را جبران کنم)! در واقع مدت زیادی است که ترجمه یکی از این سه اثر را آغاز کردم اما به علت کمبود وقت نتوانستم آن را به اتمام برسانم. عنوان این کار نیمه تمام باشد برای فرصتی دیگر. اما یکی از دو کتاب دیگر ویرایش دوم کتاب برنامه نویسی با پایتون: چطور مثل یک کامپیوتردان فکر کنیم است. چاپ اول این کتاب در سال ۹۳ و چاپ دوم آن در سال ۹۴ به بازار ارائه شد و خوشبختانه با استقبال خوبی هم مواجه شد. در این ویرایش محتوای کتاب برای سازگاری با پایتون ۳ به روز خواهد شد و قصد دارم مجموعه ای مثال کاربردی هم به انتهای کتاب اضافه کنم (نوعی تالیف و ترجمه).
به علاوه کتاب دیگری هم در دست کار دارم که کارهای مربوط به ترجمه آن تا انتهای مهر به پایان خواهد رسید و تا حد خوبی پیش رفته. این کتاب از سری کتب For Dummies است و بیشتر در راستای علاقه ام به ترجمه کتب علمی به صورت عام و نه فقط کتب علوم کامپیوتر انتخاب و ترجمه شده. همیشه علاقه مند بودم در حوزه علومی به جز علوم کامپیوتر به ترجمه کتب بپردازم و این کتاب حاصل این علاقه است! امیدوارم مورد توجه و استفاده دوستان واقع بشود.
به دلایل فوق چند وقتی است فرصت کمتری برای به روز رسانی مطالب وبلاگ دارم و از این رو از تمامی خواننده گان گرامی پوزش می طلبم.

چاپ دوم کتاب برنامه نویسی با پایتون

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

دانلود و مطالعه رایگان دو فصل اول کتاب برنامه نویسی با پایتون

طرح جلد کتاب برنامه نویسی با پایتون ترجمه غلامرضا صابری تبریزی

معرفی کتاب

در دوره کارشناسی کامپیوتر درسی وجود داره به نام نظریه زبان و ماشین یا Formal Languages and Automata. این درس که خیلی هم مورد علاقه دانشجویان نیست و اغلب اساتید هم در پیچوندن و کم کاری در تدریس اون کم نمی گذارند در واقع یکی از پیش نیازهای درس کامپایلر بوده و به علاوه شالوده درک بهتر زبان های برنامه نویسی است. متاسفانه با وجود مطالعات بسیار من خودم هم درک درستی از بسیاری از مفاهیم این درس ندارم و نداشته ام. اما چند ماه پیش به کتابی برخوردم درباره دستور زبان که مطالعه اون موجب شد برخی از ابهاماتی که در زمینه نظریه زبان داشتم رفع بشه. در واقع زبان های صوری (Formal Languages) خود از روی زبان های طبیعی ایجاد شده اند. به نوعی مطالعه دستو زبان های طبیعی منجر به توانایی درک بیشتر بشر از زبان شده که نتیجه آن تولید زبان های صوری و نظریه زبان های صوری و روش های توصیف گرامر این زبان ها شده است.

کتابی که می خوام در این زمینه به شما معرفی کنم Grammar as a Science نام داره و نوشته Richard Larson هست. متن کتاب بسیار ساده است و برای مطالعه اون نیاز به آگاهی از مطلب خاصی ندارید. عکس جلد کتاب:

امیدوارم مورد استفاده قرار بگیره.

کتاب جدید (تفکر پایتونی)

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

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

امیدوارم این کتاب نقطه شروعی باشه برای تمامی علاقه مندان به برنامه نویسی در ایران.

موفق و موید و پیروز باشین.

در پناه حق.