در این مقاله به شما میگوییم که چطور میتوانید برخلاف روال معمول، بدون اینکه به دانشگاه بروید یک مهندس نرمافزار بشوید. اگر کارمند یا کارگر ساده هستید، یا اینکه به اجبار مشغول کاری هستید که دوستش ندارید (مثل کارمند بخش اپراتور، کارمند بانک و یا مدیریت). تنها در صورتی میتوانید خود را از این وضعیت نجات دهید و به شغل دلخواهتان (توسعهدهنده نرمافزار) برسید که سخت کار کنید.
اغلب پروژههای Bureau of Labor Statistics» که در سالهای ۲۰۱۴ تا ۲۰۲۴ انجام میشوند، با نرخ رشد ۱۷% رشد خواهند کرد، که درنهایت منجر به ایجاد ۱۸۶,۶۰۰ فرصت شغلی میشود. این در حالی است که نرخ رشد مشاغل دیگر رقمی برابر با ۷ درصد است. باوجود تمام دیدگاههای مثبت و فرصتهای شغلی فراوان تنها ۲ درصد از دانشآموزان در رشتههای علوم کامپیوتری درس میخوانند.
مهارتهای برنامهنویسی میتوانند همگام با امنیت مالی و شغلی برای شما، انعطافپذیری روزافزون را هم به ارمغان آورند. اما احتمالاً از خودتان میپرسید: چگونه؟ چطور میتوان بدون حضور در کلاس و گذراندن دروس دانشگاهی همه این مهارتها را یاد گرفت؟ و مهمتر از همه چطور میتوان دریکی از آنها متخصص شد و بهطور مستقل کار کرد؟»
شما با یادگرفتن این ۱۱ مرحله میتوانید بدون گذراندن دورهها و کلاسهای طاقتفرسا و وقتگیر دانشگاهی به یک مهندس نرمافزار تبدیل بشوید. پس تا انتهای این ۱۱ مرحله همراه ما باشید.
قبل از شروع کار، لازم است بدانید که این مراحل برای کسانی گفته شده است که هدفشان از رسیدن به تخصص مهندسی نرمافزار شروع یک کار تماموقت است. نه کسانی که:
تغییر شغل کار آسانی نیست. اما وقتیکه تصمیم نهاییتان را بگیرید و با تمرکز بر هدفتان در مسیرش شروع به حرکت کنید، هدف و مقصدی به شفافی زیر خواهید داشت:
فرقی ندارد که هدف شما کدامیک از این سه مورد است. درهرصورت وقتی پا در این راه گذاشتید باید بهعنوان یک مهندس نرمافزار عاشقانه کار کنید، و به کارتان متعهد باشید.
زمان شروع باید تصمیم خودتان را بگیرید و زبان موردنظرتان را انتخاب کنید. Ruby on Rails، Python ، Django ، MEAN stack. وقتی یک زبان خاص را بهصورت تخصصی و حرفهای یاد بگیرید. یادگرفتن زبان برنامهنویسی بعدی اصلاً کار سختی نیست. با این کار بعداز اینکه به یک مهندس نرمافزار تبدیل شدید، تنها باید تبحر خودتان را در اصول برنامهنویسی افزایش دهید، درواقع یاد میگیرید که چگونه یاد بگیرید! وقتی پایه یادگیریتان خوب بنا شده باشد، بهراحتی میتوانید فریمورکها، زبانهای برنامهنویسی و تکنولوژیهای جدید را هم بیاموزید. یکی از بنیانگذاران Flatiron School Avi Flombaum دراینباره میگوید:
مهمترین بخش کار این است که یاد بگیرید چطور بهعنوان یک توسعهدهنده بیندیشید»
همه حرفی که در این جمله وجود دارد این است که برای شروع روی یک چارچوب و زبان خاص تمرکز کنید.
هنگامیکه در حال یادگیری هستید، تنها مسئله مهم این است که زبان یا مهارت موردنظرتان را در حین کار یاد بگیرید. به این معنا که هرروز و هر هفته زمان خاصی را برای تمرین و یادگیری تعیین کنید و در آن زمان تنها به یادگیری مهارت جدیدتان بپردازید. تابهحال هیچکس با ۱۰ ساعت تمرین، مهندس نرمافزار نشده است. درواقع رسیدن به این تخصص بدون صرف زمان و تمرین و تکرار هرروزه غیرممکن است.
برخی از افراد معتقدند که برای اینکه یک مهندس نرمافزار بشوید باید چیزی حدود ۱۰,۰۰۰ ساعت تمرین کنید! اما ما به شما میگوییم که نیازی بهصرف ۱۰,۰۰۰ ساعت زمان برای تمرین نیست. فقط باید کارتان را جدی بگیرید و زمان خاصی را برای تمرین کردن تعیین کنید. برای مثال Flatiron School’s Full Stack Web Development» برنامه درسیاش را در ۶۰۰ الی ۸۰۰ ساعت گنجانده است. اما اکثر دانشآموزان بسته به برنامه و تعداد ساعاتی که در هفته به تمرین و کار مشغول میشوند، بعد از چهار الی ۱۰ ماه به مهارت کافی میرسند.
باوجود اینکه منابع رایگانی مثل Codecademy در دسترس هستند، اما هنگام استفاده از آنها نمیتوانید حس کار در محیط و دنیای واقعی را تجربه کنید. هرچند با استفاده از این منابع میتوانید با تایپ در مرورگر وب در مسابقهها یا فعالیتهای مشابه دیگر فعالیت کنید و امتیاز کسب کنید. ولی واقعیت این است که در دنیای واقعی و زمان کار، هرگز بهقصد مسابقه و فعالیتهای تعاملی دیگر نیستید و تنها بهقصد انجام یک کار مهندسی و تحویل یک پروژه بدون نقص کار میکنید. در آن وضعیت تنها با ابزارهای واقعی کار خواهید کرد.
کمترین سود این کار تسلط هرچه بیشتر شما به محیط واقعی و درنهایت سهولت پیوستن به یک تیم است. دشواری شروع کار با این محیطها موضوع عجیبی نیست و برای همه تازهکارها اتفاق میافتد. پس صبور باشید. برنامههایی وجود دارد که نحوه استفاده از این ابزارها را به شما آموزش میدهد. مثل: Flatiron School’s online program، LearnVerified.
برنامه آموزشی LearnVerified ابزارها و پردازندههایی ساخته است، درست شبیه نمونههای واقعی که مهندسان از آنها استفاده میکنند:
با استفاده از این ابزار میتوانید با سرعت خیلی زیادی، حتی بیشتر از زمانی که در حال کار بهعنوان شغل واقعیتان هستید، کار کنید.
یکی دیگر از اصول مهم برای تبدیلشدن به یک مهندس نرمافزار، یادگیری خواندن کدهای دیگران است. برای انجام این کار میتوانید از مخازن GitHub استفاده کنید، و به دنبال مستندسازی بگردید. گاهی اوقات ممکن است مستندسازی اشتباه انجام شود. اما کد منبع هیچوقت اشتباه نیست! با یادگیری خواندن کدها میتوانید بفهمید که یک برنامه چگونه شکلگرفته و کار میکند. یکی از علل اهمیت این مهارت این است که به شما کمک میکند کدها را بهتر شناخته و آنها را اشکالزدایی کنید.
بااینکه این مهارت اغلب اوقات نادیده گرفته میشود، اما در واقعیت به شما کمک خواهد کرد، که بتوانید بفهمید توسعهدهندگان واقعی چطور کار میکنند. اینکه فقط بتوانید کد بزنید کافی نیست. باید تا عمق کار بروید. اصول صحیح کار را یاد بگیرید و درنهایت کدها را از نو بنویسید. با استفاده از این روش میتوانید یک برنامه را مهندسی مع کنید و بفهمید که چطور، برنامهای بهتر از آن را بنویسید.
پیدا کردن یک انجمن تخصصی در حوزه فعالیت و مهارت شما، میتواند تضمینی بر موفقیت شما باشد. بهخصوص اگر تازهکار هستید. وقتیکه در محیطی قرار میگیرید که همه افراد آن دارای فکر، تمرکز و دغدغه یکسانی هستند، بهطور ناخودآگاه تحت پشتیبانی یک سیستم خودکار قرار میگیرید، که میتوانند به شما در حل مشکلات کمک کنند. مهمتر از آن انگیزهتان برای ادامه مسیر چندین برابر خواهد شد.
گروههای زیادی در دنیای واقعی هستند که میتوانند مفید واقع شوند. اما بزرگترین مشکلشان این است که هماهنگیها و دسترسی به افراد گروه در این مورد کمی مشکل است. اما برای حل این مشکل میتوان از انجمنهای آنلاین استفاده کرد، که به همان اندازه مفید هستند و همیشه و در همه حال هم قابلدسترسی هستند.
اگر در حال یادگیری با LearnVerified باشید، به گروه Slack دسترسی خواهید داشت. این گروه امکان چت ویدئویی و استفاده از کانال خصوصی Slack را در راستای آموزش بهتر به دانشآموزان میدهد. همچنین دانشآموزان میتوانند با همردههای خودشان گروههای مطالعه آنلاین بسازند. شما در هر سطحی که باشید میتوانید در این انجمنها فعالیت کنید. همین باعث شده است که بیش از ۴۰ درصد سؤالات دانشآموزان توسط دانشآموزان دیگر پاسخ داده شود. بااینحال در دل این گروهها گروههای دیگری هم هستند، که میتوانند مشکلگشای مشکلات شما باشند.
مطالعه فایلهای آموزشی و تماشای ویدئو مفید هستند، اما بهتنهایی کفایت نمیکنند. شما باید از مهارتتان استفاده کنید، و درست مثل توسعهدهندگان واقعی مشکلات پیشآمده در طی مسیر را حل کنید. با این کار نه تنها به یادگیریتان کمک میکنید، بلکه به کارفرمایان ثابت میکنید که توانایی انجام کار رادارید. این میتواند شما را در رسیدن به هدف نهایی که همان کسبوکار است یاری کند. میتوانید بهصورت فردی و یا گروهی روی پروژهها کار کنید.
همزمان بااینکه در حال یادگیری کدنویسی، ساخت پروژه و … هستید. باید بهطور جدی و تدریجی شبکه حرفهایتان را نیز گسترش دهید. چراکه جستجوی شغل به روشهای معمول سنتی نسبت به جستجوی آنلاین زمان بیشتری را از شما میگیرد. که این روزها با وجود تکنولوژی و فضای مجازی، اتلاف وقت حساب میشود. بهجای صرف زمان برای پیدا کردن کار، باید شبکه حرفهایتان را گسترش دهید که به همین منظور باید بر روابطی که دارید تکیه کرده و آنها را گسترش دهید. بر اساس گفتهی Jobvite» فقط 40 درصد از نیروهای جدید از طریق روشهای معمول استخدام میشوند.
بعد از شبکه درجه اول، باید به سراغ شبکه دوم (دوستان دوستانتان) بروید. هدف از ایجاد روابط و شبکه دوم برقراری روابط و دیدارهای غیررسمی با شرکتهایی است که نیازمند نیروی کار هستند است. با این امید که یکی از این روابط به یک مصاحبه شغلی واقعی تبدیل بشود.
روشهایی برای ایجاد روابط جدید بدون داشتن دوستان مشترک:
اگر با جامعه در ارتباط باشید و روابط خودتان را از روشهای مختلف بهبود ببخشید، بدون تلاش زیادی، فرصتهای شغلی جدیدی برای شما پیش خواهد آمد.
بعد از شروع ساخت شبکه و روابط حرفهای باید به فکر آمادهسازی خودتان برای شغل جدید باشید. قبل از ارسال برنامههایی که ساختهاید و همینطور ارسال درخواست برای مصاحبه باید ۳ مورد را در نظر داشته باشید:
رزومهها حتی در دنیای مدرن امروزی هم لازم و ضروری هستند. مدیران، هنوز هم رزومه را به هر چیز دیگری ترجیح میدهند چراکه با یک نگاه میتوانند اطلاعات کافی راجع به مهارتها و تجربههای شما را بهدست بیاورند. اینها موارد اساسی در صنعت هستند. با این حال در این میان حضور آنلاین شما مهمتر از نامههای پوشی و رزومه است. برای کسی که درزمینه فناوری و صنایع مربوطه، مشغول بهکار است حضور آنلاین مهمترین وجه کارش بهحساب میآید. کاری که بهمرورزمان باید انجام بدهید. محدودههای دیجیتالی شما از این لحاظ حائز اهمیت است که مدیران قبل از دعوت از شما برای مصاحبه، میتوانند اسمتان را در گوگل ببینند.
حضور آنلاین شما بهعنوان یک توسعهدهنده و مهندس نرمافزار شامل موارد زیر است:
مدیران همه این موارد را بررسی میکنند و با توجه به مشاهدات شمارا تصور میکنند. پس مطمئن شوید که همه این تصورات خوب خواهد بود.
در آخر به یک مصاحبه شغلی میرسید. اغلب شرکتها اولین مصاحبه را بهصورت آنلاین و در خانه برگزار میکنند. بعدازاین غربالگری یک مصاحبه تلفنی انجام میدهند. اگر در این دو مصاحبه موفق شوید که نظر مدیران شرکت را به خود جلب کنید، میتوانید در مرحله مصاحبه حضوری شرکت کنید. علاوه بر سؤالات استاندارد مصاحبه (بزرگترین نقاط قوت و نقاط ضعف)، باید برای سؤالات تخصصی فنی و رفتاری هم آماده باشید. ممکن است از شما بخواهند یک پروژه یا کار را با به چالش کشیدن یک کد حل کنید، یا اینکه بپرسند قبلاً چگونه این مشکل را حل کردهاید.
بعد از شرکت در مصاحبهها و اثبات توانمندیتان به کارفرماها فقط یک نکته دیگر باقی میماند که باید رعایت کنید، و بعدازآن پیشنهاد کاریتان را بپذیرید. شاید حس کنید که تازهکار هستید ولی بالاخره باید از یک جایی شروع کنید، و سپس به رشد و یادگیری ادامه دهید که درنهایت به یک توسعهدهنده حرفهای تبدیل بشوید.
کار آسانی نیست، و احتمالاً مواقع زیادی پیش خواهد آمد که از ادامه مسیر ناامید میشوید. اما باید به خودتان و توانمندیهایتان ایمان داشته باشید. افراد زیادی هستند که فقط با تمرین و ممارست در کار توانستهاند به یک توسعهدهنده حرفهای نرمافزار تبدیل بشوند. بسیاری از افراد معتقدند که خودآموزی، کار یادگیری را سختتر میکند. هرچند با این کار میزان مهارتها و تسلط افراد بر کار و همینطور توانایی یافتن شغل جدید راحتتر میشود.
مهندسی نرمافزار (Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرمافزاری با کیفیت که قابل اطمینان و با صرفه بوده و بر روی ماشینهای واقعی بهطور کارآمدی عمل کند.
مهندسی نرمافزار عبارت است از کاربرد مهندسی برای طراحی نرمافزار، توسعه، پیادهسازی و نگهداری از نرمافزار در یک روش سیستماتیک.
نرمافزار عموماً از محصولات و موقعیتهایی شناخته میشود که قابلیت اطمینان زیادی از آن انتظار میرود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاههای انرژی هستهای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامههایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیدهترین ماشینهای نوین قابل مقایسه هستند. بهعنوان مثال، یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی حدود ده میلیون بخش دارد)، در حالی که نرمافزارِ هدایت چنین هواپیمایی میتواند تا ۴ میلیون خط کد داشته باشد.
مهندسی نرمافزار را میتوان به ۱۵ زیر رشته تقسیم کرد:
معمولاً کسانی که در حوزهی مدیریت عملیات یا مدیریت پروژه فعالیت دارند، جزئیات بسیاری را در مورد بکارگیری و پیاده سازی این ابزار میآموزند.
رویکرد Kanban :
Kanban یک روش قدرتمند و کاربدی است که از تجسم کار استفاده می کند. کانبان بهترین انتخاب برای استارت اپ ها است چون بسیار سریع میتوان از ان فید بک و بازخورد گرفت . با استفاده از Kanban شما باید بر روی تجسم کار در حال پیشرفت، نگه داشتن گردش کار به شکل ثابت و یادگیری از اشتباهات برای کاهش زمان چرخه های یادگیری تمرکز کنید.
گروه هایی که از Kanban استفاده می کنند، خیلی سریع تر در مورد روند کاری خود، به نتایج ارزشمندی دست پیدا می کنن، نتایجی که به طور چشمگیری سرعت رشد را افزایشمی دهد. تیم ها به کمک Kanban می توانند به طور مستمر در حال پیشرفت باشن.
از آنجایی که هر تیم دارای اعضایی با تخصص های متنوع می باشد، تخته کانبان به شما اجازه می دهد تا جریان کاری خود را بر روی آن پیاده کنید.
گام اول،
اولین گام این است کهشما باید از کارها و وظایفی که باید انجام دهید مطلع باشید تا بتوانید ان را روی برد کاانبان پیاده کنید.
گام دوم،
دومین گام ساخت تخته کانبان است. هنگامی که وظایف و کارهای لازمه را یافتید، باید آنها را در بردکانبان وارد کنید. سه ستون اصلی (باید انجام شودTO DO، در حال انجام DONIGو انجام شدهDONE) تخته کانبان را رسم کنید و وظایف را در آن قرار دهید. تخته کانبان در اوایل کار بسیار متغیر خواهد بود و پس از گذشت زمان به مرور ثابت می شود.
گام سوم
اضافه کردن محدودیت WIP (کار در حال انجام) می باشد. محدودیت WIP یک عدد است که برای ستون ها (در حال انجام، آزمایش، اجرا، و غیره) معین می شود که نشان می دهد چه تعداد وظیفه می تواند در ستون قرار داشته باشد. اگر ستون پر شود، هیچ کار اضافی نمی تواند اضافه شود. محدودیت های WIP بخش مهمی از روش کانبان هستند زیرا این محدودیت ها باعث می شوند تیم مرتبا پربازده باقی ماند. با ایجاد محدودیت در تعداد وظایف، اعضای تیم تا زمانی که وظیفه مربوط به خود را انجام نداده اند نمی توانند سراغ کارها و وظایف جدید بروند.
گام چهارم
جلسات کوتاه روزانه می تواند یکی از بزرگترین فرصت های شما برای شناسایی مشکلات و یافتن راه حل ها باشد. هدف جلسه روزانه، بحث درباره مشکلات تیم و حل آنهاست. جلسات برنامه ریزی باید فقط در صورت وم برگزار شوند و به بحث درباره پروژه های آینده و گذشته بپردازد.
گام پنجم
برای شروع Kanban درج گزارش می باشد.این گزارش ها برای کمک به شما برای یافتن اطلاعاتی مانند چند روز طول می کشد تا یک وظیفه به پایان برسد، تعداد کارهایی که تیم در یک زمان می تواند انجام دهد .گزارشات و بازخوردها به شما یک بینش عالی برای بهبود روند کاریتان ارائه می دهد.
در تصویر زیر یک نمونه بسیار ساده از تخته کانبان را مشاهده می کنید:
رنگ کارت نیز می تواند به اولویت آن وظیفه نیز اشاره کند (به عنوان مثال، قرمز برای سرعت بخشیدن، سبز برای عادی و غیره).
به هیچ عنوان چه وبلاگ و چه وبسایت از مطالب کپی شده از منابع دیگر قرار ندهید زیرا گوگل با هوش مصنوعی خود توانایی شناخت منبع و حتی درصد کپی شدن رو دارد و در نتیجه برای شما امتیاز منفی داده می شود و در صوورت تکرار بیشتر سایت پنالتی می شود پس سعی شود در توالید محتوا
از صفر کار تایب رو انجام دهید این امر در مورد تصاویدر هم صدق می کند .
هدف سئو کمک به وبسایت ها برای رسیدن به سکو بالاتر در صفحات موتور جستوجو گر به طور طبیعی (اخلاقی) و ارتباط هر چق بیشتر بین کلمات وارده از سمت کاربر با سایت مورد نظر است.
برای همه صاحبان کسبو کار و فروشگاه داران و خدماتی های اینتریتی مهم است که در صفحه اول نتایج جست و جوی گوگل قرار بگیرند علی خضوض سه نتیجه او که 60 درصد کلیک هارا شامل میشود و پس همه وب سایت تمام تلاش خودرا انحام می دهند تا بتوانند رتبه یک را ازان خود کنند تا سهم فروش و بازدید سایت خود را بالا بببرند این ویژگی به خصوص برای آنهایی که با افزایش ترافیک سایت به تعداد مشتریانشان اضافه میشودبسیار حیاتی و مهم میباشد(خود جایگاه اول 36.4 درصد بازدیدکنندگان را به خود اختصاص میدهد)
اگر چه ممکن است نتایج بهینهسازی جستجو به سرعت دیده نشود ولی در دراز مدت مزایای سئو باعث افزایش رتبهبندی سایت و افزایش بازدیدکنندگان است.
به طور کلی اهداف سئو :
1 افزایش قابل توجه تعداد بازدید
2 ایجاد برند
3افزایش ترافیک سایت
4بهبود رتبه وب سایت در رده بندی سئو
5افزایش فروش و درامد
6بهترین راه برای تبلیغات
به طور کلی هر چیزی که در سایت خود بارگذاری میکنید مربوط به SEO On Page میشودو سئو مستقیم کد ها و تمام محتوبات سایت رو کنتل و چک می کند. این قسمت اساس تمام تلاشهای بهینهسازی وب سایت است زیرا جایی است که شما بیشترین کنترل را روی آن دارید. هر گونه تغییری را که شما در محتویات سایت خود ایجاد مینمایید در نتایج جستجو تاثیر گذار خواهد بود . به یاد داشته باشیم که بهینه سازی های ان پیچ باید بدرستی وقبل از اف پیچ انجام شود
SEO Off Page در مرتبه اول در بدست آوردن پیوند دهندگان (لینک هاییکه از سایتهای دیگر به سایت شما اشاره میکنند) تمرکز می کند سپس با استفاده از روشهایی که در خارج از وب سایت انجام میشود به بهینهسازی موتور جستجو میپردازد.
منظور کلاه سفید یعنی ما از تکنیک و استرازی هایی برای بهینه سازی استفاده کنیم که از قوانین سئو باشد و نخاهیم از طریف فریب و دستکاری رتبع بهتری در جست و جو را کسب کنیم این همچنین به سئو اخلاقی نیز یاد میشود زیرا دلیل آن این است که یا اجرای بلند مدت داشته و یا از دستورالعملها و تهای صحیح جهت بدست آوردن رتبههای بالا در نتایج موتورهای جستجو استفاده میکند.
کاملا برعکس کلاه سفید سئو ی کلاه سیاه است یعنی بخواهیم با فریب و دستکاری رتبه بالاتری بدست اوریم.
این مهم است که بدانید این روشها غیر اخلاقی بوده و توسط هیچ موتور جستجویی تایید نمیشود و بکارگیری این روشها خطر خارج شدن از فهرست پایگاه داده را برای همیشه در بر دارد.اپرچه استفاده از این روش رشد ناگهانی در نتایج را رقم میزند ولی منجربه پرداخت جریمه یا حتی حذف کامل از فهرست نتایج میشود
در زیر به برخی از مقالات در زمینه بهینه سازی موتور جستجو اشاره شده است:
هنگامی که پیاده سازی به پایان می رسد مشکلی که خیلی ها با آن مواجه ند ایناست که نمی دانند که چگونه وب سایت خود را در اینترنت معرفی نماید که بهترین روش برای معرفی وب سایت بهنیه سازی است. بر اساس 77 معیاری که از منابع مختلف و موتورهای جستجو بررسی شده استراتژهای بهینه سازی عبارت اند از
شرکت هایی که با استفاده از یکسری ابزار و مهارت ها تلاش می کنند رتبه وب سایت ها را در صفحه نتایج موتور جستجو افزایش دهند
افرادی که فعالیت بهینه سازی را انجام می دهند باید از آخرین تغییرات الگوریتم ها ی موتورهای جستجو مطلع باشند و عواملی که باعث می شود ترافیک سایت افزایش پیدا نماید را بخوبی بشناسند و همچنین از کلماتی که کاربران نهایی بدنبال آن می گردند نیز آگاهی داشته باشند وبه طور کلی سایت را بروز نگه دارند
توسعه چابک نرمافزار یا توسعه نرمافزاری چابک گروهی از متدهای توسعهٔ نرمافزار مبتنی بر تکرار و به شکل تدریجی است که در آنها، راهحلها از طریق خودسازماندهی و همکاری بین تیمهای مختلف کاری، انجام میشوند. این روش برنامهریزی تطبیقی، توسعه و تحویل تکاملی و رویکرد زمان بستهبندیِ تکرارشونده را ارتقا میبخشد و پاسخهای سریع و انعطافپذیر برای انجام تغییرات را تقویت میکند. در واقع چابکسازی یک چارچوب مفهومی است که پیشبینی تعاملات در سراسر چرخهٔ توسعه را بهبود میبخشد.
متدهای توسعهٔ چابک مشخص زیادی وجود دارند، که بیشترشان توسعه، کار تیمی، همکاری و سازگاری فرایند در چرخهٔ حیات پروژه را ترفیع میدهند. متدهای چابک وظایف را به گامهای کوچک با کمترین میزان برنامهریزی میشکنند که بهطور مستقیم با برنامهریزیهای طولانیمدت درگیر نیستند. تکرارها فریمهای (بستههای زمانی) کوتاهمدتی هستند که معمولاً بین یک تا چهار هفته طول میکشند. هر تکرار دارای یک تیم متقابل عملکردی در تمام مأموریتها است: تحلیل نیازمندیها، طراحی، کدنویسی، واحد تست، و قبولی در تست. در پایان هر تکرار یک محصول کاری به ذینفعان نشان داده میشود. این، ریسک کلی را به حداقل رسانده و اجازه میدهد پروژه خیلی سریع با تغییرات منطبق شود. ممکن است یک تکرار قابلیت کافی برای تضمین پخش در بازار را نیفزاید، اما هدف، انتشار در دسترس (با حداقل شکاف) در پایان هر تکرار است. شاید تکرارهای چندگانه نیاز به انتشار یک محصول یا ویژگیهای جدید داشته باشند. ترکیب تیم در یک پروژهٔ چابک معمولاً عملکردی متقابل و خودسازماندهی است، بدون توجه به هرگونه سلسلهمراتب شرکتی یا نقشهای شرکتی اعضای تیم. اعضای تیم بهطور معمول مسئولیت وظایفی را که قابلیت نیازهای تکرار را ارائه میدهد، بر عهده میگیرند. آنها به صورت جداگانه تصمیم میگیرند که چگونه با نیازمندیهای یک تکرار مواجه شوند.
متدهای چابک، وقتی تیمها با هم در یک مکان هستند، بر ارتباطات رو در رو برای تمام مستندات نوشتهشده تأکید دارد. بیشتر تیمهای چابک در یک دفتر تکواحدی (به نام bullpen) کار میکنند، که چنین ارتباطاتی را تسهیل میکند. به منظور ساده کردن ارتباطات و همکاری تیمی، گروه معمولاً کوچک (بین ۵ تا ۹ نفره) است. پروژههای بزرگ توسعه میتوانند توسط تیمهای کاری چندگانه در راستای یک هدف رایج یا در بخشهای متفاوت یک پروژه تحویل شوند. ممکن است این امر نیاز به هماهنگی اولویتهای تمام تیمها داشته باشد. وقتی تیمی در مکانهای مختلفی کار میکند، افراد ارتباط روزانهشان را از طریق ویدئو کنفرانس، صدا، ایمیل و. حفظ میکنند.
مهم نیست چه دیسیپلینهای توسعهای لازم است، هر تیم چابک، یک پاسخگوی مشتری دارد. این شخص توسط ذینفعان به نمایندگی انتخاب میشود و یک تعهد فردی ایجاد میکند که برای پاسخگویی به سؤالات اواسط تکرار، در دسترس توسعهدهندگان باشد.در انتهای هر تکرار، ذینفعان و نمایندهٔ مشتریان پیشرفت را بررسی میکنند، اولویتها را با دید بهینهسازی بازگشت سرمایه (ROI) مجدداً میسنجند و از انطباق نیازهای مشتری با اهداف شرکت اطمینان حاصل میکنند. بیشتر پیادهسازیهای چابک از ارتباطات غیررسمی، روزانه و رو در رو در میان اعضای تیم بهره میگیرند. این بهطور خاص شامل نمایندهٔ مشتری و هر کدام از ذینفعان علاقهمند به عنوان ناظر میشود. در یک جلسهٔ مختصر، هر کدام از اعضای تیم گزارش میدهند که در روز گذشته چه کردهاند، قصد دارند در روز جاری چه کارهایی انجام دهند و موانع پیش رویشان کدامند. این ارتباطات رو در رو مشکلات را به محض بروز، افشا میکند. این جلسات روزانه، گاهی به صورت ایستاده یا نشستهای اسکرام هر روز در یک زمان و مکان ثابت برگزار میشوند و نباید بیش از ۱۵ دقیقه طول بکشند. معمولاً جلسات ایستاده این نقش را دارند.»
توسعهٔ چابک بر کار نرمافزار به عنوان مقیاس اصلی پیشرفت تأکید دارد، که با مزیت ارتباطات رو در رو در هم آمیخته شده، و نسبت به سایر متدها مستندات مکتوب کمتری تولید میشود. متد چابک ذینفعان را به اولویتبندی خواستهها» با نتایج حاصل از سایر تکرارها، بر اساس ارزش کسبوکار مشاهدهشده در ابتدای تکرار (که با عنوان ارزشمحور شناخته میشود) ترغیب میکند.
ابزارها و تکنیکهای خاص، مانند یکپارچهسازی مستمر، تست اتوماتیک یا xUnit، برنامهنویسی دوجزئی، توسعهٔ آزمونمحور، الگوهای طراحی، طراحی دامنهمحور، code refactoring و دیگر تکنیکها اغلب برای بهبود کیفیت و افزایش چابکی پروژه به کار میروند.
توسعهٔ کمیچابک (LAD) چاشنی متدولوژی چابک است که تکنیکهای دستچین را (از طیف وسیعتری از پروژههای چابک) برای شرکتهای مناسب مختلف، تیمها، موقعیتها و محیطهای توسعه به کار میبندد. یکی دیگر از جنبههای کلیدی LAD متمایل به کاربرمحور بودن است، در درجهٔ اول بر تجارب کاربر و واسطهای نرمافزاری قابلاستفاده تمرکز میکند و برای تحویل آنها متدولوژیهای چابک را به کار میبندد. بیشتر پیادهسازیهای چابک دنیای واقعی در عمل واقعاً LAD هستند، چون ارزش اصلی متدولوژی به انعطافپذیری، معقول بودن و تمرکز بر کارهایی که انجام شده، است.
در توسعهٔ چابک نرمافزار، یک رادیاتور اطلاعات، صفحهنمایشی فیزیکی (معمولاً بزرگ) واقع در صدر دفتر کار است، جایی که رهگذران بتوانند آن را ببینند. این صفحهنمایش خلاصهای از آخرین وضعیت محصول (های) نرمافزاری را نمایش میدهد. این نام توسط Alistair Cockburn ابداع و در کتاب توسعهٔ چابک نرمافزار» در سال ۲۰۰۲ توصیف شد.ممکن است یک نشانگر نوری برای آگاه کردن اعضای تیم در مورد وضعیت فعلی پروژهشان به کار رود.
متدهای معروف توسعهٔ چابک نرمافزار عبارتند از:
متدهای چابک بر جنبههای متفاوتی از چرخهٔ عمر توسعهٔ نرمافزار تمرکز دارند. بعضی از آنها بر روشها (برنامهنویسی extreme، برنامهنویسی فعال مدلسازی چابک) تمرکز دارند، در حالی که بعضی دیگر بر مدیریت پروژههای نرمافزاری تأکید دارند (مانند رویکرد Scrum ). هنوز، رویکردهایی وجود دارند که تمام چرخهٔ عمر توسعه را پوشش میدهند (متدهای توسعهٔ سیستم دینامیک (DSDM) و Rational Unified Process (RUP))، در حالی که بیشتر آنها از فاز تعیین نیازمندیها مناسب هستند (مثلاً ویژگیمحور در توسعه یا FDD). بنابراین، یک تفاوت آشکار بین متدهای گوناگون توسعهٔ چابک نرمافزار در این مورد است. اگرچه DSDM و RUP نیازی به رویکردهای مکمل برای پشتیبانی از توسعهٔ نرمافزار ندارند، بقیهٔ آنها با درجات متفاوت این نیاز را دارند. DSDM میتواند توسط هر کسی به کار رود (علیرغم اینکه فقط اعضای DSDM میتوانند محصولات یا خدمات DSDM را عرضه کنند). RUP یک محیط توسعه تجاری فروشی است (Abrahamsson، Salo، Rankainen & Warsta، 2002).
پایهٔ اصلی چابک | پایهٔ اصلی ارزشمحور | متدهای رسمی |
---|---|---|
حساسیت پایین | حساسیت بالا | حساسیت شدید |
توسعهدهندگان ارشد | توسعهدهندگان تازهکار | توسعهدهندگان ارشد |
نیازمندیها اغلب تغییر میکنند. | نیازمندیها اغلب تغییر نمیکنند. | نیازمندیهای محدود، خصوصیات محدود |
تعداد کمی از توسعهدهندگان | تعداد زیادی از توسعهدهندگان | نیازمندیها میتوانند مدلسازی شوند |
فرهنگ پاسخ به تغییر | فرهنگ نیاز به نظم | کیفیت بسیار زیاد |
ممکن است متدولوژیهای چابک در سازمانهای بزرگ و انواع خاصی از پروژهها ناکارآمد باشند.
متدهای چابک برای پروژههای توسعهای و غیردائمی بهتر به نظر میرسد. بسیاری از سازمانها باور دارند متدولوژیهای چابک بسیار قوی هستند و با یک رویکرد مخلوط که ترکیبی از المانهای رویکردهای چابک و برنامهمحور است، سازگار میشوند.
این دستور را در ترمینال ویزیال کد اجرا می کنیم
اسم میدلویر php artisan make : middleware
سپس در kernel در پوشه http در پوشه app
در قسمت پروتکتت میدل ویر
با سین تکس بالاییا با نام میدل ویر خودمان یه خط اضافه می کنیم قسمت بعد فلش نام namespace را می نویسیم
سپس در ترمینال دستور کامپوزر دامپ را ااجرا می کنیم
روت ها همان url هایی هستن که کاربرا میتوانند به ان درخواست بدن
ما در روت کد هایی می نویسم که با هر یو ار ال چه عکس العملی برایش انجام بدیم
ریککویست ها دو نوع ان get یا post
برای هر روت نوع ریت رو تعریف می کنیم
سپس دو پارمتر می گیره تابع route
1 یو ار الی که کاربر ریت داده
2 کنترلر یا میدل ویری که میخواهیم ریت به ان جا فرستاده شود . دراین قسمت فقط اسم فایل رو می نویسم چون خود لاراول تشخیص مکان ان فایل را می دهد بعد از نام فایل از علامت@ استفاده می کنیم سپس فانکشن مورد نظر را وارد می کنیم
در انتها بعد از پرانتز میتوانیم یک فلش زده میدل ویر را نوشته و سپس داخل پرانتز نام میدل ویر را می نویسیم
میدلور ها ههمون که از اسمشان پیداس میان افزار هسن یعنی بین رووت و کنترلر ارتباط برقرار می کنند
در میدل ور ی سری چیزا ها بررسی می شوند مثلا ولیدیشن ها و کنترل ای پی و
ریت در میدل ور همانند برخورد اب با سد هس پس یه گونه سد امنیتی محسوب میشود
اگه میدل ور اجازه به ریت بدهد به کنترلر وارد میشود و اگر اجازه نداد ریت ریجکت میشود
وارد پروزه public پروزه می شویم روی نوار ادرس کلیک راست کرده کپی می کنیم
سپس روی ومپ کلکیک کرده و گزینه your virtual host و سپس virtualhost management انتخاب میکنیم
از صفحه باز شده نوار اول کلمه مورد نظر پروزه مونو تایپ می کنیم و در نوار دوم ادرس رو پست می کنیم سپس dns server را ریستارت می کنیم
پوشه app خیلی با این کار داریم
کنترلر و میدل ور در پوشه http درون این پوشه قرار دارند
پوشه public
پوشه config
پوشه database
پوشه resource
ویو ها درداخل این پوشه قرار دارند
پوشهroutes
پوشهtests
پوشه vendor
زا کامپوزر نصب کرده که شامل همه پکیج هاست که خود لاراول یکی از ان هاست
nav.
composer.json اینستالر لاراول با این فایل پکیج هارو دانلود می کند (گامپوزر پکیج منیج منتی برای php)
package.json پکیج های جاوا اسکریپتی نصب می کند توسط mpm (پکیج کنیجمنتی برای جاوا اسکریپت)
ابتدا باید کامپوزر بر روی سیستم نصب باشد
سپس ترمینال ویندوز را باز می کنیم سپس دستور زیرو وارد می کنیم
composer global require laravel/installer
دانلود لاراول شروع میشود
سپس برا ای استفاده از لاراول هر جایی خاستید پروزه را ایجاد کنید کلیک راست کرده (git bash here (cmd رو بزنید سپس دستور زیرا وارد کنید
(laravel new (project name
الان لاراول رو پروزه شما نصب شده است
بهترین نوع از دستورهای url اون دسته از url ها هستند که گوگل باهاشون مشکل ندارن و اونو بپسندند که حداقل امکان از کوئری استرینگ ها استفاده نکنیم
کوئری استرینگ ها اصن توسط ربات های جست و جو گر خونذه نمیشوند هر url که ما بتونیم با کوئری استرینگ محتوای داخل اونو عوض کنیم چون برای موتوره ای جست وجو گر یک ضفحه حساب میشه
و اونا احساس می کنن که این یو ار ال یک صفحه اس که هر لحظه محتوای درون اون تعویض میشه
فرم ورکا های مث لاورال خیلی قوی عمل کردن و اینکار راحت هندل کردند و url های سئو پسند تولید می کنند
این کار توسط توی روتر پروزه در لاراول تعریف می کنیم
Query String هر مقداریست که بعد از علامت سوال (?”) در انتهای URL قرار میگیرد .
آدرسهای حاوی Query String، بخشهای مختلفی دارند:
این روش مزایایی دارد که موجب محبوبیت آن شده است:
البته این روش دارای معایبی میباشد که برخی از آنها عبارتند از:
شناسایی دیتا بیس برای لاراول
فایل env. را کلیک می کینم
db port: 3307
db data base: نام دیتا بیس
چگونه با لاراول تیبل بسازیم
ترمینال را در مسیر پرزوه استارت می کنیم
و دستور زیر و اجرا می کنیم
نام تیبلphp artisan make :migration create_t
و تغییر انجین دیتا بیس
فایل دیتا بیس در پوشه کانفیگ خط 46 قسمت my sql
engine-> InnoDB
اسم موتور رو می نویسیم
سپس در اخر در ترمینال فرمان
php artisan migrate
را تایپ می کنیم
پکیجlaravel go to
laravel go to view
laravel go to contrller
1dark raincoat
archivos laravel
auto close tag
auto complate tag
auto raname tag
auto raname tagbeautify css/sass/scss/less
beauty
better comments
bootstrap4 , font
can i use
class autocomplete for HTML
csscomb
debugger for chrome
dotENV
editorconfig for vs
EJS language support
eslint
expressjs
format html in php
formatter-pug
git history
html snippets
intelisence for css class names in html
itmcdev generic extnsion pack
itmcdev html/css extnsion pack
laravel 5 snippets
laravel 5.6 snippets
laravel artisan
laravel assist
laravel blade snippets
laravel helpers
laravel model snippets
laravel sinp
laravel snippets pro
laravel-5-snippets
larvel-blade
laravel-goto-controller
less intelisense
live share
live share audio
live share chat
live share extension pack
live share whiteboard
markdown all in one
material icon theme
mongo snippets for node
mustache
node.js extension pack
node.js modules intelisense
nodejs module snippet
nodejs snippets
npm
npm intlisense
one dark pro
path intelisense
php debug
php extension pack
php intelisense
php namespace resolver
php snippets from phpstorm
php xdebug
prettier - code formatter
pug (jade) snippets
pug\jade bootsrap, font awesome snippets
ra shadow
sass lint
scss intlisense
search node-modules
simple icons
sublime text keymap and setting importer
simple iconssuper one dark theme
teminal tabs
vetur
vs code counter
vs code for node.js development pack
windows opacity
مدل ها در لاراول در داخل پوشه app وجد ارند
دستور ایجاد مدل سی ام دی مربوط به مدل
نام مدل php artisam make:model
برای نام مدل کافی است از اسم تیبل مربوط به ان حرف s را حذف کرده و حرف اول ان را کپتال بنویسم تا لاراول خودی خود مدل و تنبل را به هم کانتکت کند
نکته
هر جا بخواهیم از مدل استفاده کنیم بالای صفحه باید نیم اسپیس (اسم کلاس)ان مدل را یوز کنیم
Laravel چندین روش مختلف برای تأیید اعتبار داده های ورودی برنامه شما ارائه می دهد. به طور پیش فرض ، کلاس کنترلر پایه لاراول از یک صفت ValidatesRequests استفاده می کند که روشی مناسب برای اعتبارسنجی درخواستهای HTTP ورودی با انواع قوانین اعتبار سنجی قدرتمند ارائه می دهد.
تعریف مسیرها:
ابتدا فرض کنیم مسیرهای زیر را در پرونده خود تعریف کرده ایم:
Route::get('post/create', 'PostController@create');
Route::post('post', 'PostController@store');
مسیر GET فرم ایجاد وبلاگ جدید را برای کاربر نمایش می دهد ، در حالی که مسیر POST پست جدید وبلاگ را در پایگاه داده ذخیره می کند.
ایجاد کنترلر
بعد ، بیایید نگاهی بیندازیم به یک کنترلر ساده که این مسیرها را کنترل می کند. اکنون روش store را خالی می گذاریم:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Show the form to create a new blog post.
*
* @return Response
*/
public function create()
{
return view('post.create');
}
/**
* Store a new blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// Validate and store the blog post.
}
}
نوشتن منطق اعتبار سنجی
اکنون ما آماده هستیم تا روش STORE خود را با این منطق برای اعتبارسنجی پست وبلاگ جدید پر کنیم. برای این کار از روشی معتبر تهیه شده توسط شی Illuminate \ Http \ Request استفاده خواهیم کرد. اگر قوانین اعتبارسنجی تصویب شوند ، کد شما اجرای خود را به صورت عادی ادامه می دهد. اما اگر اعتبار سنجی انجام نشود ، یک استثناء انداخته می شود و پاسخ خطایی مناسب به طور خودکار به کاربر ارسال می شود. در صورت درخواست سنتی HTTP ، یک پاسخ تغییر مسیر ایجاد می شود ، در حالی که یک پاسخ JSON برای درخواست های AJAX ارسال می شود.
برای درک بهتر روش VALIDATE ، بیایید دوباره به روش STORE برویم:
/**
* Store a new blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$validatedData = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// The blog post is valid.
}
همانطور که مشاهده می کنید ، قوانین اعتبارسنجی مورد نظر را به روش VALIDATE منتقل می کنیم. باز هم ، اگر اعتبار سنجی انجام نشود ، پاسخ مناسب به طور خودکار ایجاد می شود. اگر اعتبار سنجی بگذرد ، کنترلر ما به طور معمول اجرای خود را ادامه می دهد.
از طرف دیگر ، قوانین اعتبارسنجی ممکن است به جای یک تک به عنوان آرایه ای از قوانین مشخص شوند | رشته نامحدود:
$validatedData = $request->validate([
'title' => ['required', 'unique:posts', 'max:255'],
'body' => ['required'],
]);
اگر مایل هستید ERROR BAG را که پیام های خطا در آن قرار داده شده است ، مشخص کنید ، می توانید از روش validateWithBag استفاده کنید:
$request->validateWithBag('blog', [
'title' => ['required', 'unique:posts', 'max:255'],
'body' => ['required'],
]);
متوقف کردن اولین عدم موفقیت اعتبارسنجی:
بعضی اوقات ممکن است بخواهید بعد از اولین خرابی اعتبار ، اجرای قوانین اعتبارسنجی را روی یک ویژگی متوقف کنید. برای این کار ، قانون BAIL را به این ویژگی اختصاص دهید:
$request->validate([
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',
]);
در این مثال ، اگر قانون UNIQUE روی ویژگی TITLE خراب شود ، قانون MAX بررسی نمی شود. قوانین به ترتیبی که تعیین شده اند معتبر خواهند بود.
یادداشت در مورد ویژگی های تو در تو
اگر درخواست HTTP شما حاوی پارامترهای "تو در تو" است ، می توانید آنها را در قوانین اعتبار خود با استفاده از نحو "نقطه" مشخص کنید:
$request->validate([
'title' => 'required|unique:posts|max:255',
'author.name' => 'required',
'author.description' => 'required',
]);
خطاهای اعتبار سنجی
بنابراین ، اگر پارامترهای درخواست ورودی ، قوانین اعتبارسنجی داده شده را تصویب نکنند ، چه می شود؟ همانطور که قبلاً نیز گفته شد ، Laravel به طور خودکار کاربر را به مکان قبلی خود هدایت می کند. علاوه بر این ، تمام خطاهای اعتبارسنجی به طور خودکار به جلسه چشمک می زنند.
باز هم توجه کنید که ما در مسیر GET خود مجبور نبودیم پیغامهای خطا را به طور صریح به نمایش پیوند دهیم. این امر به این دلیل است که Laravel خطاهای موجود در داده های جلسه را بررسی می کند و در صورت موجود بودن آنها را به طور خودکار به نمایش متصل می کند. متغیر $ ERROR نمونه ای از Illuminate \ Support \ MessageBag خواهد بود.
متغیر ERROR$ توسط واسطه بین المللی Illuminate \ View \ Middleware \ ShareErrorsFromSession ، که توسط گروه وب MIDDLEWARE تهیه شده است ، به نمای محدود می شود. هنگامی که این میان افزار اعمال می شود ، یک متغیر ERROR$ همیشه در دیدگاه های شما موجود می باشد ، به شما امکان می دهد فرض کنید متغیر ERROR$ به راحتی همیشه تعریف شده است و می توانید با خیال راحت از آن استفاده کنید.
بنابراین ، در مثال ما ، کاربر در صورت عدم موفقیت اعتبار به کاربر ، به روش ایجاد کنترلر ما هدایت می شود و به ما اجازه می دهد تا پیام های خطا را در نمای نمایش دهیم:
<!-- /resources/views/post/create.blade.php -->
<h1>Create Post</h1>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<!-- Create Post Form -->
یادداشت در زمینه های اختیاری
به طور پیش فرض ، Laravel شامل واسط TrimStrings و ConvertEmptyStringsToNull در پشته جهانی برنامه جهانی برنامه شما است. این وسایل واسط طبق برنامه App \ Http \ Kernel در پشته ذکر شده اند. به همین دلیل ، اگر نمی خواهید اعتبارگر مقادیر NULL را نامعتبر در نظر بگیرد ، اغلب باید زمینه های درخواست "اختیاری" خود را به عنوان NULLABLE علامت گذاری کنید. مثلا:
$request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
'publish_at' => 'nullable|date',
]);
در این مثال ، ما مشخص می کنیم که قسمت bot_at ممکن است NULL یا یک تاریخ معتبر باشد. اگر اصلاح کننده NULLABLE به تعریف قانون اضافه نشود ، اعتبار دهنده NULL را یک تاریخ نامعتبر می داند.
درخواستها و اعتبار سنجی AJAX:
در این مثال ، ما برای ارسال داده به برنامه از یک فرم سنتی استفاده کردیم. با این حال ، بسیاری از برنامه ها از درخواست های AJAX استفاده می کنند. هنگام استفاده از روش VALIDATE در طی درخواست AJAX ، Laravel پاسخی برای تغییر مسیر ایجاد نمی کند. در عوض ، Laravel یک پاسخ JSON تولید می کند که حاوی همه خطاهای اعتبارسنجی است. این پاسخ JSON با کد وضعیت 422 HTTP ارسال می شود.
اعتبار درخواست فرم
Laravel چندین روش مختلف برای تأیید اعتبار داده های ورودی برنامه شما ارائه می دهد. به طور پیش فرض ، کلاس کنترلر پایه لاراول از یک صفت ValidatesRequests استفاده می کند که روشی مناسب برای اعتبارسنجی درخواستهای HTTP ورودی با انواع قوانین اعتبار سنجی قدرتمند ارائه می دهد.
تعریف مسیرها:
ابتدا فرض کنیم مسیرهای زیر را در پرونده خود تعریف کرده ایم:
Route::get('post/create', 'PostController@create');
Route::post('post', 'PostController@store');
مسیر GET فرم ایجاد وبلاگ جدید را برای کاربر نمایش می دهد ، در حالی که مسیر POST پست جدید وبلاگ را در پایگاه داده ذخیره می کند.
ایجاد کنترلر
بعد ، بیایید نگاهی بیندازیم به یک کنترلر ساده که این مسیرها را کنترل می کند. اکنون روش store را خالی می گذاریم:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Show the form to create a new blog post.
*
* @return Response
*/
public function create()
{
return view('post.create');
}
/**
* Store a new blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// Validate and store the blog post.
}
}
نوشتن منطق اعتبار سنجی
اکنون ما آماده هستیم تا روش STORE خود را با این منطق برای اعتبارسنجی پست وبلاگ جدید پر کنیم. برای این کار از روشی معتبر تهیه شده توسط شی Illuminate \ Http \ Request استفاده خواهیم کرد. اگر قوانین اعتبارسنجی تصویب شوند ، کد شما اجرای خود را به صورت عادی ادامه می دهد. اما اگر اعتبار سنجی انجام نشود ، یک استثناء انداخته می شود و پاسخ خطایی مناسب به طور خودکار به کاربر ارسال می شود. در صورت درخواست سنتی HTTP ، یک پاسخ تغییر مسیر ایجاد می شود ، در حالی که یک پاسخ JSON برای درخواست های AJAX ارسال می شود.
برای درک بهتر روش VALIDATE ، بیایید دوباره به روش STORE برویم:
/**
* Store a new blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$validatedData = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// The blog post is valid.
}
همانطور که مشاهده می کنید ، قوانین اعتبارسنجی مورد نظر را به روش VALIDATE منتقل می کنیم. باز هم ، اگر اعتبار سنجی انجام نشود ، پاسخ مناسب به طور خودکار ایجاد می شود. اگر اعتبار سنجی بگذرد ، کنترلر ما به طور معمول اجرای خود را ادامه می دهد.
از طرف دیگر ، قوانین اعتبارسنجی ممکن است به جای یک تک به عنوان آرایه ای از قوانین مشخص شوند | رشته نامحدود:
$validatedData = $request->validate([
'title' => ['required', 'unique:posts', 'max:255'],
'body' => ['required'],
]);
اگر مایل هستید ERROR BAG را که پیام های خطا در آن قرار داده شده است ، مشخص کنید ، می توانید از روش validateWithBag استفاده کنید:
$request->validateWithBag('blog', [
'title' => ['required', 'unique:posts', 'max:255'],
'body' => ['required'],
]);
متوقف کردن اولین عدم موفقیت اعتبارسنجی:
بعضی اوقات ممکن است بخواهید بعد از اولین خرابی اعتبار ، اجرای قوانین اعتبارسنجی را روی یک ویژگی متوقف کنید. برای این کار ، قانون BAIL را به این ویژگی اختصاص دهید:
$request->validate([
'title' => 'bail|required|unique:posts|max:255',
'body' => 'required',
]);
در این مثال ، اگر قانون UNIQUE روی ویژگی TITLE خراب شود ، قانون MAX بررسی نمی شود. قوانین به ترتیبی که تعیین شده اند معتبر خواهند بود.
یادداشت در مورد ویژگی های تو در تو
اگر درخواست HTTP شما حاوی پارامترهای "تو در تو" است ، می توانید آنها را در قوانین اعتبار خود با استفاده از نحو "نقطه" مشخص کنید:
$request->validate([
'title' => 'required|unique:posts|max:255',
'author.name' => 'required',
'author.description' => 'required',
]);
خطاهای اعتبار سنجی
بنابراین ، اگر پارامترهای درخواست ورودی ، قوانین اعتبارسنجی داده شده را تصویب نکنند ، چه می شود؟ همانطور که قبلاً نیز گفته شد ، Laravel به طور خودکار کاربر را به مکان قبلی خود هدایت می کند. علاوه بر این ، تمام خطاهای اعتبارسنجی به طور خودکار به جلسه چشمک می زنند.
باز هم توجه کنید که ما در مسیر GET خود مجبور نبودیم پیغامهای خطا را به طور صریح به نمایش پیوند دهیم. این امر به این دلیل است که Laravel خطاهای موجود در داده های جلسه را بررسی می کند و در صورت موجود بودن آنها را به طور خودکار به نمایش متصل می کند. متغیر $ ERROR نمونه ای از Illuminate \ Support \ MessageBag خواهد بود.
متغیر ERROR$ توسط واسطه بین المللی Illuminate \ View \ Middleware \ ShareErrorsFromSession ، که توسط گروه وب MIDDLEWARE تهیه شده است ، به نمای محدود می شود. هنگامی که این میان افزار اعمال می شود ، یک متغیر ERROR$ همیشه در دیدگاه های شما موجود می باشد ، به شما امکان می دهد فرض کنید متغیر ERROR$ به راحتی همیشه تعریف شده است و می توانید با خیال راحت از آن استفاده کنید.
بنابراین ، در مثال ما ، کاربر در صورت عدم موفقیت اعتبار به کاربر ، به روش ایجاد کنترلر ما هدایت می شود و به ما اجازه می دهد تا پیام های خطا را در نمای نمایش دهیم:
<!-- /resources/views/post/create.blade.php -->
<h1>Create Post</h1>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<!-- Create Post Form -->
یادداشت در زمینه های اختیاری
به طور پیش فرض ، Laravel شامل واسط TrimStrings و ConvertEmptyStringsToNull در پشته جهانی برنامه جهانی برنامه شما است. این وسایل واسط طبق برنامه App \ Http \ Kernel در پشته ذکر شده اند. به همین دلیل ، اگر نمی خواهید اعتبارگر مقادیر NULL را نامعتبر در نظر بگیرد ، اغلب باید زمینه های درخواست "اختیاری" خود را به عنوان NULLABLE علامت گذاری کنید. مثلا:
$request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
'publish_at' => 'nullable|date',
]);
در این مثال ، ما مشخص می کنیم که قسمت bot_at ممکن است NULL یا یک تاریخ معتبر باشد. اگر اصلاح کننده NULLABLE به تعریف قانون اضافه نشود ، اعتبار دهنده NULL را یک تاریخ نامعتبر می داند.
درخواستها و اعتبار سنجی AJAX:
در این مثال ، ما برای ارسال داده به برنامه از یک فرم سنتی استفاده کردیم. با این حال ، بسیاری از برنامه ها از درخواست های AJAX استفاده می کنند. هنگام استفاده از روش VALIDATE در طی درخواست AJAX ، Laravel پاسخی برای تغییر مسیر ایجاد نمی کند. در عوض ، Laravel یک پاسخ JSON تولید می کند که حاوی همه خطاهای اعتبارسنجی است. این پاسخ JSON با کد وضعیت 422 HTTP ارسال می شود.
اعتبار درخواست فرم
برای سناریوهای اعتبار سنجی پیچیده تری ، ممکن است بخواهید "درخواست فرم" ایجاد کنید. درخواست فرم ها کلاس های درخواست سفارشی هستند که حاوی منطق اعتبار سنجی هستند. برای ایجاد یک کلاس درخواست فرم ، از دستور artisan CLI استفاده کنید :make:request
php artisan make:request StoreBlogPost
کلاس تولید شده در فهرست قرار می گیرد . اگر این فهرست وجود نداشته باشد ، هنگام اجرای دستور ، ایجاد می شود . بیایید چند قانون اعتبار سنجی را به روش اضافه کنیم:app/Http/Requests
make:request
rules
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
شما می توانید وابستگی های مورد نیاز خود را در
rules
امضای روش تایپ کنید . آنها بطور خودکار از طریق ظرف سرویس Laravel برطرف می شوند .
بنابراین ، قوانین اعتبار سنجی چگونه ارزیابی می شوند؟ تنها کاری که باید انجام دهید اینست که درخواست را به روش کنترل خود تایپ کنید. قبل از فراخوانی روش کنترل ، درخواست فرم ورودی تأیید می شود ، به این معنی که نیازی به کنترل و کنترل خود با هرگونه منطق اعتبار ندارید:
/**
* Store the incoming blog post.
*
* @param StoreBlogPost $request
* @return Response
*/
public function store(StoreBlogPost $request)
{
// The incoming request is valid.
// Retrieve the validated input data.
$validated = $request->validated();
}
در صورت عدم موفقیت اعتبار ، پاسخی برای تغییر مسیر ایجاد می شود تا کاربر به محل قبلی خود برگردد. خطاها همچنین به جلسه چشمک می زنند ، بنابراین برای نمایش در دسترس هستند. اگر درخواست یک درخواست AJAX بود ، یک پاسخ HTTP با کد وضعیت 422 از جمله نمایندگی JSON از خطاهای اعتبار سنجی به کاربر بازگردانده می شود.
اگر می خواهید قلاب "بعد" را به درخواست فرم اضافه کنید ، می توانید از این withValidator
روش استفاده کنید. این روش اعتبار سنجی کاملاً ساخته شده را دریافت می کند و به شما امکان می دهد قبل از ارزیابی قوانین اعتبارسنجی ، هرکدام از روشهای آن را فراخوانی کنید:
/**
* Configure the validator instance.
*
* @param \Illuminate\Validation\Validator $validator
* @return void
*/
public function withValidator($validator)
{
$validator->after(function ($validator) {
if ($this->somethingElseIsInvalid()) {
$validator->errors()->add('field', 'Something is wrong with this field!');
}
});
}
کلاس درخواست فرم همچنین شامل authorize
روشی است. در این روش ، شما می توانید بررسی کنید که آیا کاربر معتبر در واقع صلاحیت به روزرسانی یک منبع داده شده را دارد یا خیر. به عنوان مثال ، شما ممکن است تعیین کنید که آیا کاربر در واقع صاحب نظر وبلاگی است که در تلاش است تا آن را به روز کند:
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
$comment = Comment::find($this->route('comment'));
return $comment && $this->user()->can('update', $comment);
}
از آنجا که کلیه درخواست های فرم ، کلاس درخواست اصلی Laravel را گسترش می دهد ، ما ممکن است از این user
روش برای دسترسی به کاربر معتبر فعلی استفاده کنیم. همچنین route
در مثال بالا تماس با روش را یادداشت کنید . این روش به شما امکان دسترسی به پارامترهای URI تعریف شده در مسیری که گفته می شود ، مانند پارامتر موجود در مثال زیر می دهد:{comment}
Route::post('comment/{comment}');
اگر این authorize
روش بازگردد false
، یک پاسخ HTTP با کد وضعیت 403 بطور خودکار برمی گردد و روش کنترل کننده شما اجرا نمی شود.
اگر می خواهید در قسمت دیگری از برنامه خود منطق مجوز داشته باشید ، true
از authorize
روش برگردید :
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
درباره این سایت