بهمن هستم. میتونید مرد مرده صدام کنید. یه برنامه نویس سادم که عاشق کسب و کارهاشه.
برای این که بتونیم به خودمون بگیم Senior Python Developer چه چیزهایی باید بلد باشیم؟ (قسمت دوم)
خب، تا اینجای کار ما با موارد زیادی آشنا شدیم. ولی ممکنه از خودتون بپرسید که پس چجوری دانشی که تا اینجا یاد گرفتیم میتونه به ما برای نوشتن کدهای مربوط به بک اند یه اپلیکیشن کمک کنه. واقعیت اینه که چیزهایی که تا اینجا یاد گرفتیم یه جورایی حکم مقدمه رو داشتن. از اینجا ما قراره با نوشتن کدهای بک اندی آشنا بشیم.
قبل از این که وارد فریمورکهای پایتون که کارشون دولوپ کردن وب هست بشیم، بهتره که یه سری مفاهیم رو یاد بگیریم. این مفاهیم رو پایین براتون آوردیم:
- پروتوکول HTTP: پروتوکل http راهیه برای برقراری ارتباط بین کلاینت و سرور. هر بار که شما سایتی رو باز میکنید دارید از این پروتوکل استفاده میکنید. در این پروتوکل سیستم شما میشه کلاینت و سروری که کد های سایت مقصد روش قرار داره میشه سرور.
- معماری REST: این معماری به ما کمک میکنه که API های مناسب و اصولی تری رو ایجاد کنیم. در حقیقت با استفاده از این معماری میتونیم در مواقع مورد نیاز API هایی بنویسیم که آدرس های یکسان ولی فعل های مختلفی دارن. برای مثال آدرس API ما ممکنه zalcademy.ir/api/v1/courses باشه که در اون ما میتونیم فعل های GET - PUT - POST - DELETE رو صدا بزنیم.
- مفاهیم STATELESS و STATEFULL در بک اند: سرور STATELESS به سروری گفته میشه که در اون ما هیچ چیزی رو توی سرور ذخیره نمیکنیم. در اینجا منظورمون از چیز اطلاعات مرتبط با کاربر هستش. سرور STATEFULL به سروری گفته میشه که بعضی از اطلاعات کاربر رو ذخیره میکنه و هر بار که کاربر ریکوئستی رو صدا میزنه قبلش اطلاعات از قبل ذخیره شده مخصوص اون کاربر رو هم فراخوانی و پردازش میکنه.
خب تا اینجای کار ما تقریبا مفاهیم اولیه و مورد نیاز رو یاد گرفتیم. حالا وقت اون رسیده که سراغ فریمورک های طراحی وب بریم. این فریمورک ها رو توی حالت کلی میشه به سه دسته تقسیم کرد:
- Full-Stack Framework
- Microframework
- Asynchronous Framework
توی دسته ی اول ما فریمورک های Full-Stack رو داریم. این دسته از فریمورک ها تقریبا هر چیزی که ما نیاز داشته باشیم رو توی خودشون جا میدن. به همین خاطر برای استفاده ازشون نیازی نیست سراغ فریمورکهای جانبی برید و تمام کارتون (یا حداقل بخش زیادی از اون) توسط خود این فریمورکها راه میوفتن.
بعد از اون Microframework ها قرار میگیرن. این فریمورکها مقداری سبک تر از فریمورک های دسته ی قبل هستن و گاها برای استفاده از بعضی از امکانات باید از ابزارهای دیگه ای در کنارشون استفاده کرد. برای مثال میشه گفت Django به عنوان یه Full-Stack فریمورک درون خودش یه ORM جا داده ولی نمیشه چنین چیزی رو توی Microframework ها دید.
در نهایت هم میرسیم به دسته بندی فریمورک های Asynchronous. مزیت این دسته از فریمورک ها اینه که به شما امکان قرار دادن ریکوئست های HTTP ای رو میدن که باعث بلاک شدن سرور شما نمیشه. معنی این چیه؟ فرض کنید که شما یه اپلیکیشن دارید که تعداد کاربران فعال بالایی داره. انقدر بالا که این امکان وجود داره که در یک لحضه و به صورت همزمان به سرور شما 1000 ریکوئست جدید زده بشه. اگه شما از یه فریمورک Asynchronous استفاده کرده باشید، برای این مورد به هیچ مشکلی نمیخورید.
در ادامه با هم از هر دسته بندی یه فریمورک رو بررسی میکنیم:
استفاده از فریمورک Django: این فریمورک در دسته بندی Full-Stack Framework قرار میگیره. علتش اینه که تقریبا هر چیزی که یه برنامه نویس ممکنه نیاز داشته باشه رو در خودش قرار داده. هدف این فریمورک اینه که برنامه نویسها بتونن در کوتاه ترین زمان ممکن، بهترین اپ ها رو بسازن. امروزه حدود 12000 وبسایت از Django استفاده میکنن و این باعث شده Django یکی از معروفترین فریمورکهای پایتون بشه.
استفاده از فریمورک Flask: این فریمورک در دسته بندی Microframework قرار میگیره. شاید نتونه امکاناتی مثل امکانات جنگو رو به شما بده اما قطعا خیلی از نیازهای شما رو رفع میکنه.
یه نکتهای که بد نیست ازش مطلع باشید اینه که شما توی بعضی از این فریمورکها با چیزی به اسم Template Engine آشنا میشید. بهتره این مفهوم رو نسبتا خوب کار کنید چون این مفهوم توی زبانهای دیگه هم استفاده میشه و در نهایت کار ما رو راحت تر میکنه.
بعد از این که با این فریمورکها آشنا شدید باید بدونید که به عنوان یه دولوپر فول استک نیاز دارید تا از تکنولوژیهای کدنویسی سمت کاربر هم آشنا باشید. توی شروع باید بتونید کدهای ظاهر سایتتون رو بنویسید و در نهایت میتونید سراغ موارد پیشرفته تر برید. اینحا قصد داریم تا با هم تکولوژیهایی که نیاز دارید رو یاد بگیرید.
- دانشهای مورد نیاز برای Web Design:
- HTML
- CSS
- Javascript
- jQuery
- Responsive Design
- Minification
از مواردی که بالا به شما گفتیم، میشه گفت که HTML و CSS برای طراحی صفحات وب استفاده میشن. Javascript و jQuery برای این استفاده میشن که بتونیم یه مقدار کد زنی و لاجیک به صفحاتمون اضافه کنیم. بعد از اون Responsive Design هست که دانشیه که برای طراحی صفحات مناسب برای هر صفحهی نمایشی با هر اندازهای استفاده میشه و minification روشی هست که برای کم کردن حجم کدهای ما و به طبع اون بهبود سرعت بارگذاری صفحات ما استفاده میشه.
هر چند که یادگیری موارد بالا برای تبدیل شدن به یه Ful Stack لازمه اما کافی نیست. ما باید بتونیم با استفاده از فریمورکهای UI ظاهرهای خیلی بهتری رو به وجود بیاریم. برای این کار، ما باید سراغ فریمورکهایی بریم که به بعضی هاشون پایین اشاره میکنیم:
- Bootstrap
- Foundation
قدم بعدیما اینه که بتونیم از فریمورکهای javascript هم استفاده کنیم. این کار میتونه به ما کمک کنه تا بعد از ساخت API هایی که با اونها توی بخشهای فریمورکهای وب پایتون باید آشنا شده باشیم، بتونیم یه داشبورد، یه پنل کاربری و یا در حالت کلی سایتی با ظاهر و امکانات مناسب تری برای کاربرانمون بسازیم.
بعضی از این فریمورکها و توضیحات مختصری دربارهی اونها رو در پایین برای شما آوردیم:
کتابخانهی React: کتابخانه ی react به شما کمک میکنه که با استفاده از المنتهای تعبیه شده در JSX که شبیه به HTML هستش، UI مناسبی رو طراحی کنید. هرچند که لایبرریهای مناسبی هم وجود داره که در صورت نیاز میتونید از اونها استفاده کنید. این فریمورک به شکلی نوشته شده که موارد مورد نیاز شما رو در خودش جا نداده اما از اون سمت این قضیه باعث میشه که ما بتونیم برای هر کاری از ماژول مختلفی استفاده کنیم و اون رو به react خودمون اضافه کنیم. در حالت کلی react به شکلی نوشته شده که میتونید به راحتی هر چیزی که بهش نیاز دارید رو بهش اضافه کنید.
کتابخونهی Angular: این کتابخونه بر خلاف react هر چیزی که ما ممکنه بهش نیاز داشته باشیم رو در خودش جا داده. مزیتی که به ما میده اینه که میتونیم به ساده ترین شکل ممکن و سریعترین حالت ممکن در صورتی که قالب HTML و CSS ما آماده باشه داشبورد مورد نظرمون رو بالا بیاریم.
هر چند که لایبرریهای خیلی زیادی وجود داره اما ما دو تا از معتبر ترینهاش رو بالا به شما نشون دادیم.
خب تا اینجای کار پیشرفت خوبی داشتید، فرض کنید ما با دانشی که تا اینجای کار یاد گرفتیم تصمیم گرفتیم یه فروشگاه اینترنتی رو راه اندازی کنیم. فروشگاهمون رو نوشتیم و تصمیم گرفتیم تا هر هفته یه ایمیل حاوی کد تخفیف به خریداران برترمون بفرستیم. برای حل کردن این مشکل چه راهی رو پیشنهاد میکنید؟
شاید یه روشی که به ذهنتون بخوره اینه که بتونید یه داشبورد رو بسازید که آخر هر هفته صاحب فروشگاه بیاد و توی یه فیلد یه عدد انتخاب کنه به عنوان درصد تخفیف و در نهایت هم یه دکمه رو فشار بده که باعث شه یه کد تخفیف توی دیتابیس ذخیره شه و اون کد تخفیف برای همه ایمیل شه.
بیاید یه مشکل دیگه رو هم در نظر بگیریم. فرض کنید بعد از این که خرید انجام شد قصد دارید یه کاتالوگ با فرمت PDF از کالاهای مشابه برای کاربرتون ارسال کنید و روش یه کد تخفیف بزنید. خب این یه مقدار پیچیده تر میشه درست میگم؟
مبحث بعدی ای که دارید اینه که باید با ابزاری آشنا بشید که بهتون کمک میکنه این مشکلها رو حل کنید. به ابزاری که برای این کارها ساخته شده، Task Queue گفته میشه. Task Queue ها ابزاری هستن که به ما کمک میکنن کارهایی که زمان بر هستن رو به ترتیب اجرا کنیم. به جز این، به ما یه مزیت دیگه هم میدن و اون اینه که کمک میکنن تا ما بتونیم توی زمانهای خاصی، و یا با تکرار خاصی کاری رو انجام بدیم. با استفاده از ابزاری که پایین قراره ازشون اسم ببریم، میتونید مشکلهایی که بالا گفته شد رو حل کنید. علاوه بر مواردی که بالا بهشون اشاره شد، دلیل اصلی استفاده از این ابزارها این هستش که شما میخواید توی سریعترین زمان به کاربر سایتتون یه پاسخ بدید و بعضی از کارها رو بعد از این که پاسخی به کاربرتون ارسال کردید انجام بدید.
برای مثال ممکنه بخواید به کاربرتون اس ام اس ارسال کنید و بگید که سفارشش با موفقیت ثبت شده. شما میتونید قبل از این که پاسخ رو به کاربرتون نمایش بدید، به Task Queue استفاده شده اعلام کنید که توی اولین فرصت برای کاربرتون یه اس ام اس ارسال کنه. بلافاصله هم میتونید پاسخی که قراره به کاربرتون نمایش بدید رو، به سمت کاربر ارسال کنید.
تا اینجای کار ما چیزهای زیادی یاد گرفتیم که وجود بخش زیادیشون برای پروژهی ما گاهی حتی حیاطی هستن. ولی طبیعتا این لیست ما هنوز تموم نشده.
برای این که بتونید به ادامه ی قسمتها دسترسی داشته باشید کافیه که مارو فالو کنید.
مطلبی دیگر از این انتشارات
برای این که بتونیم به خودمون بگیم Senior Python Developer چه چیزهایی باید بلد باشیم؟ (قسمت اول)
مطلبی دیگر از این انتشارات
دیزاین پترن ها در پایتون - پیش نیازها - قسمت 1
افزایش بازدید بر اساس علاقهمندیهای شما
مسعود زمانهات را بشناس!