فراتر از ال‌پیک - کاپس

مقدمهسلام، امیدوارم که حالتون مثل همیشه خوب باشه! توی مجموعه‌ی فراتر از ال‌پیک هدف‌مون بررسی تکنولوژی‌ها یا ساختارهای یک سرویس و برنامه‌ی یونیکسی از دید یک توسعه‌دهنده است و هر بار سعی می‌کنیم چیزهایی که ممکن هست درک شما رو از یک سیستم یونیکسی بالاتر ببره با هم بررسی کنیم.اما هدف امروز بررسی سیستم مدیریت پرینت یونیکس یا CUPS به صورت عمیق و بررسی یک سری ایده‌ها توی این زمینه هست.در سیستم‌عامل‌های یونیکسی (مثل لینوکس و macOS) کارهای مربوط به پرینت مثل مدیریت کارهای چاپ، مدیریت صف، اضافه و حذف کردن دستگاه‌های پرینتر توسط برنامه CUPS انجام میشه. این برنامه توسط شرکت اپل برای سیستم‌عامل‌های یونیکسی توسعه داده شده. وقتی یک کاربر یک صفحه رو پرینت می‌گیره اتفاقات زیر توی سیستم رخ میده:کار توسط Spooler یا زمان‌بند به یک سری برنامه به اسم filter تحویل داده میشه. فیلتر‌ها وظیفه‌ی تبدیلِ فرمت دریافت شده به یک فرمت قابل فهم توسط پرینترها رو بر عهده دارند. مثلاً وقتی یک عکس‌ رو پرینت می‌گیرید، این فیلترها عکس‌ رو به یک فایل PDF تبدیل می‌کنند.در مرحله بعدی، فایل تبدیل شده توسط فیلترها به یک برنامه‌ای به اسم Backend تحویل داده میشه. بک‌اندها پل ارتباطی ما با پرینترها هستند. بک‌اندها فایل‌ رو از فیلتر می‌گیرند و به سمت پرینتر مورد نظر می‌فرستند. کاپس خروجی این بک‌اند رو چک می‌کنه تا بفهمه که عملیات پرینت موفقیت آمیز بوده یا نه. منظور من از خروجی، exit-code هست.در اعماقهر پرینتر معمولاً یک فایل PPD همراه خودش داره، این فایل در حقیقت حکم درایور رو برای سیستم‌عامل ایفا می‌کنه. توی این فایل گفته میشه که پرینتر چه ویژگی‌هایی داره: مثلا چه سایز برگ‌هایی، پشت‌رو، رنگ‌های پرینتر و ... . همچنین توی این فایل مشخص می‌شه که چه فیلتر‌هایی باید برای این پرینتر به کار گرفته بشن.در حقیقت فیلتر ها بسته به نوع فایل، به کار می‌رن، میشه گفت یک فایل دیتابیس طوری وجود داره که توی اون مشخص شده هر فرمت از فایل با چه فیلتری پردازش بشه، این دیتابیس رو می‌تونین توی آدرس پایین پیدا کنید:پس روال کلی این‌جوری شد که وقتی کاربر پرینت می‌گیره، کاپس فایل PPD مربوط به پرینتر رو (مثلا) می‌خونه و متوجه می‌شه که پرینتر چه ویژگی‌هایی رو پشتیبانی می‌که و توی صفحه پرینت شما به صورت گرافیکی این امکان رو میده که ویژگی‌های مورد نظرتون رو انتخاب کنید. در مرحله دوم برحسب نوع فایل فیلتر مورد نظر روی اون اعمال میشه و نهایتا فایل به تحویل بک‌اند داده میشه.بک‌اندهابک‌اند‌ها انواع مختلفی دارند و که امکان پرینت از طریق USB، روی https یا اینترفیس‌های مختلف دیگه رو به ما میدن. برای کنجکاوی می‌تونید سری به آدرس پایین بزنید:پرینتر مجازیمهم‌ترین مطلبی که باعث شد من این مطلب رو بنویسم این بخش‌ از کاپس بود. پرینتر مجازی، چیزی هست که دقیقاً مشابه یک پرینتر فیزیکی عمل می‌کنه یعنی وقتی Ctrl+p می‌زنید جزء پرینتر‌های شما نشون داده میشه اما واقعاً وجود فیزیکی نداره. مثلا وقتی با برنامه‌ی Micrsoft word دارید کار می‌کنید می‌تونید قبل از پرینت گرفتن یک Preview از پرینت داشته باشید.شما می‌تونید یک پرینتر مجازی برای کاپس تعریف کنید و بجای پرینت کردن، کار دیگه‌ای که مد نظر خودتون هست انجام بدید.فرض کنید، توی شرکت fax.ir هستید و قصد دارید کاری کنید که همه به جای خرید دستگاه فکس، فکس‌هاشون رو به شما بفرستند و شما کار فکس اونارو در ازای دریافت هزینه انجام بدید. این کار می‌تونه این‌شکلی باشه که شما یک دستگاه پرینتر مجازی داشته باشید که با اون کاربران به اشتراک بذارید و فایل‌ها به جای پرینت به مخزن شما ریخته بشن و شما اونارو با برنامه‌ی دیگه فکس کنید!ایده‌ی دیگه می‌تونه میل به جای پرینت باشه، مثلا هر بار که خواستید یک چیزی رو برای کسی بفرستید به جای باز کردن میل و پیوست کردن اون، فقط Ctrl+p بزنید و به صورت خودکار انجام بشه.برای این از قبیل کار‌ها میشه از پرینتر مجازی استفاده کرد. برنامه کاپس خیلی ماژولار نوشته شده و به راحتی می‌تونید هم فیلتر مورد نظر خودتون و هم بک‌اندی رو که دوست دارید بهش اضافه کنید.در ادامه چند پروژه که توی این مسیر به من کمک کردند و می‌تونن روشن کننده مسیر برای شما هم باشند با هم بررسی می‌کنیم.پروژه اول، اسمش Boomaga هست که کار اون این هست که قبل از پرینت گرفتن عکس یا هر چیزی امکان دیدن یک Preview از اون رو به شما میده.پروژه دوم، fax4cups هست که همون‌طور که از اسمش پیداست به شما امکان فکس کردن رو به جای پرینت کردن میده.پروژه سوم، pdf2email که بعد از کانفیگ اولیه این امکان رو به شما میده که هر فایلی که با این پرینتر مجازی پرینت می‌گیرد به میل‌ادرسی که بهش می‌دید فرستاده بشه.در نهایت من یک نمونه کد برای شروع روی گیت‌هابم گذاشتم که پایه‌ی کار رو نوشتم و می‌مونه اون چیزی که شما قصد پیاده‌سازی‌‌اش رو دارید.تا قسمت بعدی فراتر از ال‌پیک خدانگهدار!