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



در این مقاله به شما می‌گوییم که چطور می‌توانید برخلاف روال معمول، بدون این‌که به دانشگاه بروید یک مهندس نرم‌افزار بشوید. اگر کارمند یا کارگر ساده هستید، یا اینکه به اجبار مشغول کاری هستید که دوستش ندارید (مثل کارمند بخش اپراتور، کارمند بانک و یا مدیریت). تنها در صورتی می‌توانید خود را از این وضعیت نجات دهید و به شغل دلخواهتان (توسعه‌دهنده نرم‌افزار) برسید که سخت کار کنید.

سودآوری شغل یک مهندس نرم‌افزار

اغلب پروژه‌های Bureau of Labor Statistics» که در سال‌های ۲۰۱۴ تا ۲۰۲۴ انجام می‌شوند، با نرخ رشد ۱۷% رشد خواهند کرد، که درنهایت منجر به ایجاد ۱۸۶,۶۰۰ فرصت شغلی می‌شود. این در حالی است که نرخ رشد مشاغل دیگر رقمی برابر با ۷ درصد است. باوجود تمام دیدگاه‌های مثبت و فرصت‌های شغلی فراوان تنها ۲ درصد از دانش‌آموزان در رشته‌های علوم کامپیوتری درس می‌خوانند.

مهارت‌های برنامه‌نویسی می‌توانند همگام با امنیت مالی و شغلی برای شما، انعطاف‌پذیری روزافزون را هم به ارمغان آورند. اما احتمالاً از خودتان می‌پرسید: چگونه؟ چطور می‌توان بدون حضور در کلاس و گذراندن دروس دانشگاهی همه این مهارت‌ها را یاد گرفت؟ و مهم‌تر از همه چطور می‌توان دریکی از آن‌ها متخصص شد و به‌طور مستقل کار کرد؟»

شما با یادگرفتن این ۱۱ مرحله می‌توانید بدون گذراندن دوره‌ها و کلاس‌های طاقت‌فرسا و وقت‌گیر دانشگاهی به یک مهندس نرم‌افزار تبدیل بشوید. پس تا انتهای این ۱۱ مرحله همراه ما باشید.

گام اول: نسبت به انتخاب هدف نهایی‌تان دقت زیادی به خرج دهید و به آن متعهد باشید

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

  • برای اولین بار کد نویسی می‌کنند.
  • مطمئن نیستند که می‌خواهند برنامه‌نویس شوند.
  • می‌خواهند متخصص طراحی وب، UI و UX یا دیگر زمینه‌های مربوط به طراحی بشوند.
  • می‌خواهند به‌طور پاره‌وقت و آزادانه کار کنند.
  • می‌خواهند کسب‌وکار مخصوص خودشان را راه بیندازند.

تغییر شغل کار آسانی نیست. اما وقتی‌که تصمیم نهایی‌تان را بگیرید و با تمرکز بر هدفتان در مسیرش شروع به حرکت کنید، هدف و مقصدی به شفافی زیر خواهید داشت:

  • می‌خواهم به‌عنوان یک توسعه‌دهنده نرم‌افزار در یک شرکت معتبر فن‌آوری کار کنم»
  • می‌خواهم به‌عنوان یک مهندس نرم‌افزار در یک تیم استارت‌آپی مشغول راه‌اندازی برندی جدید باشم. من عاشق صنعت هستم»
  • می‌خواهم به همراه یک تیم خوب، محصولاتی تولید کنم و از آن پول خوبی به جیب بزنم»

فرقی ندارد که هدف شما کدام‌یک از این سه مورد است. درهرصورت وقتی پا در این راه گذاشتید باید به‌عنوان یک مهندس نرم‌افزار عاشقانه کار کنید، و به کارتان متعهد باشید.

گام دوم: زبان موردنظرتان را انتخاب کنید.

زمان شروع باید تصمیم خودتان را بگیرید و زبان موردنظرتان را انتخاب کنید. Ruby on Rails، Python ، Django ، MEAN stack. وقتی یک زبان خاص را به‌صورت تخصصی و حرفه‌ای یاد بگیرید. یادگرفتن زبان برنامه‌نویسی بعدی اصلاً کار سختی نیست. با این کار بعداز این‌که به یک مهندس نرم‌افزار تبدیل شدید، تنها باید تبحر خودتان را در اصول برنامه‌نویسی افزایش دهید، درواقع یاد می‌گیرید که چگونه یاد بگیرید! وقتی پایه یادگیری‌تان خوب بنا شده باشد، به‌راحتی می‌توانید فریم‌ورک‌ها، زبان‌های برنامه‌نویسی و تکنولوژی‌های جدید را هم بیاموزید. یکی از بنیان‌گذاران Flatiron School Avi Flombaum دراین‌باره می‌گوید:

مهم‌ترین بخش کار این است که یاد بگیرید چطور به‌عنوان یک توسعه‌دهنده بیندیشید»

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

گام سوم: تمرین، تمرین و تمرین …

هنگامی‌که در حال یادگیری هستید، تنها مسئله مهم این است که زبان یا مهارت موردنظرتان را در حین کار یاد بگیرید. به این معنا که هرروز و هر هفته زمان خاصی را برای تمرین و یادگیری تعیین کنید و در آن زمان تنها به یادگیری مهارت جدیدتان بپردازید. تابه‌حال هیچ‌کس با ۱۰ ساعت تمرین، مهندس نرم‌افزار نشده است. درواقع رسیدن به این تخصص بدون صرف زمان و تمرین و تکرار هرروزه غیرممکن است.

برخی از افراد معتقدند که برای اینکه یک مهندس نرم‌افزار بشوید باید چیزی حدود ۱۰,۰۰۰ ساعت تمرین کنید! اما ما به شما می‌گوییم که نیازی به‌صرف ۱۰,۰۰۰ ساعت زمان برای تمرین نیست. فقط باید کارتان را جدی بگیرید و زمان خاصی را برای تمرین کردن تعیین کنید. برای مثال Flatiron School’s Full Stack Web Development» برنامه درسی‌اش را در ۶۰۰ الی ۸۰۰ ساعت گنجانده است. اما اکثر دانش‌آموزان بسته به برنامه و تعداد ساعاتی که در هفته به تمرین و کار مشغول می‌شوند، بعد از چهار الی ۱۰ ماه به مهارت کافی می‌رسند.

گام چهارم: از ابزارهایی استفاده کنید که توسعه‌دهندگان واقعی استفاده می‌کنند

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

کمترین سود این کار تسلط هرچه بیشتر شما به محیط واقعی و درنهایت سهولت پیوستن به یک تیم است. دشواری شروع کار با این محیط‌ها موضوع عجیبی نیست و برای همه تازه‌کارها اتفاق می‌افتد. پس صبور باشید. برنامه‌هایی وجود دارد که نحوه استفاده از این ابزارها را به شما آموزش می‌دهد. مثل: Flatiron School’s online program، Learn‌Verified.

برنامه آموزشی Learn‌Verified ابزارها و پردازنده‌هایی ساخته است، درست شبیه نمونه‌های واقعی که مهندسان از آن‌ها استفاده می‌کنند:

  • Git and GitHub
  • Working in your terminal
  • Test‌driven development
  • Group projects/collaboration

با استفاده از این ابزار می‌توانید با سرعت خیلی زیادی، حتی بیشتر از زمانی که در حال کار به‌عنوان شغل واقعی‌تان هستید، کار کنید.

گام پنجم: کدهای دیگران را بخوانید

یکی دیگر از اصول مهم برای تبدیل‌شدن به یک مهندس نرم‌افزار، یادگیری خواندن کدهای دیگران است. برای انجام این کار می‌توانید از مخازن GitHub استفاده کنید، و به دنبال مستندسازی بگردید. گاهی اوقات ممکن است مستندسازی اشتباه انجام شود. اما کد منبع هیچ‌وقت اشتباه نیست! با یادگیری خواندن کدها می‌توانید بفهمید که یک برنامه چگونه شکل‌گرفته و کار می‌کند. یکی از علل اهمیت این مهارت این است که به شما کمک می‌کند کدها را بهتر شناخته و آن‌ها را اشکال‌زدایی کنید.

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

گام ششم: پیدا کردن یک انجمن فعال در حوزه کسب تخصص مهندس نرم‌افزار

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

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

اگر در حال یادگیری با Learn‌Verified باشید، به گروه Slack دسترسی خواهید داشت. این گروه امکان چت ویدئویی و استفاده از کانال خصوصی Slack را در راستای آموزش بهتر به دانش‌آموزان می‌دهد. همچنین دانش‌آموزان می‌توانند با هم‌رده‌های خودشان گروه‌های مطالعه آنلاین بسازند. شما در هر سطحی که باشید می‌توانید در این انجمن‌ها فعالیت کنید. همین باعث شده است که بیش از ۴۰ درصد سؤالات دانش‌آموزان توسط دانش‌آموزان دیگر پاسخ داده شود. بااین‌حال در دل این گروه‌ها گروه‌های دیگری هم هستند، که می‌توانند مشکل‌گشای مشکلات‌ شما باشند.

گام هفتم: ساخت پروژه

مطالعه فایل‌های آموزشی و تماشای ویدئو مفید هستند، اما به‌تنهایی کفایت نمی‌کنند. شما باید از مهارت‌تان استفاده کنید، و درست مثل توسعه‌دهندگان واقعی مشکلات پیش‌آمده در طی مسیر را حل کنید. با این کار نه تنها به یادگیری‌تان کمک می‌کنید، بلکه به کارفرمایان ثابت می‌کنید که توانایی انجام کار رادارید. این می‌تواند شما را در رسیدن به هدف نهایی که همان کسب‌وکار است یاری کند. می‌توانید به‌صورت فردی و یا گروهی روی پروژه‌ها کار کنید.

گام هشتم: شبکه حرفه‌ای‌تان را ارتقا بدهید

هم‌زمان بااینکه در حال یادگیری کد‌نویسی، ساخت پروژه و … هستید. باید به‌طور جدی و تدریجی شبکه حرفه‌ای‌تان را نیز گسترش دهید. چراکه جستجوی شغل به روش‌های معمول سنتی نسبت به جستجوی آنلاین زمان بیشتری را از شما می‌گیرد. که این روزها با وجود تکنولوژی و فضای مجازی، اتلاف وقت حساب می‌شود. به‌جای صرف زمان برای پیدا کردن کار، باید شبکه حرفه‌ای‌تان را گسترش دهید که به همین منظور باید بر روابطی که دارید تکیه کرده و آن‌ها را گسترش دهید. بر اساس گفته‌ی Jobvite» فقط 40 درصد از نیروهای جدید از طریق روش‌های معمول استخدام می‌شوند.

بعد از شبکه درجه اول، باید به سراغ شبکه دوم (دوستان دوستانتان) بروید. هدف از ایجاد روابط و شبکه دوم برقراری روابط و دیدارهای غیررسمی با شرکت‌هایی است که نیازمند نیروی کار هستند است. با این امید که یکی از این روابط به یک مصاحبه شغلی واقعی تبدیل بشود.

روش‌هایی برای ایجاد روابط جدید بدون داشتن دوستان مشترک:

  • رفتن به ملاقات‌ها و همایش‌ها
  • داشتن یک وبلاگ (که شما را در معرض دید قرار می‌دهد)
  • همکاری داوطلبانه و اعلام آمادگی برای شغل‌های تازه
  • صحبت در رویدادها و مجامع مختلف

اگر با جامعه در ارتباط باشید و روابط‌ خودتان را از روش‌های مختلف بهبود ببخشید، بدون تلاش زیادی، فرصت‌های شغلی جدیدی برای شما پیش خواهد آمد.

گام نهم: قبل از مصاحبه کاری، یک مهندس نرم‌افزار حرفه‌ای شوید

بعد از شروع ساخت شبکه و روابط حرفه‌ای باید به فکر آماده‌سازی خودتان برای شغل جدید باشید. قبل از ارسال برنامه‌هایی که ساخته‌اید و همین‌طور ارسال درخواست برای مصاحبه باید ۳ مورد را در نظر داشته باشید:

  • رزومه
  • نامه‌های پوششی
  • حضور آنلاین

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

حضور آنلاین شما به‌عنوان یک توسعه‌دهنده و مهندس نرم‌افزار شامل موارد زیر است:

  • پروفایل LinkedIn
  • GitHub
  • توییتر
  • وب‌سایت شخصی (یا سایت نمونه کارها)
  • وبلاگ نویسی (می‌تواند علاوه بر سایت شخصی وجود داشته باشد.)

مدیران همه این موارد را بررسی می‌کنند و با توجه به مشاهدات‌ شمارا تصور می‌کنند. پس مطمئن شوید که همه این تصورات خوب خواهد بود.

گام دهم: مصاحبه شغلی خود را انجام دهید.

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

 

گام یازدهم: قبول کردن پیشنهاد شغلی به عنوان یک مهندس نرم‌افزار

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

 

 

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


مهندسی نرم‌افزار (Software engineering) یعنی استفاده از اصول مهندسی بجا و مناسب برای تولید و ارائه محصول نرم‌افزاری با کیفیت که قابل اطمینان و با صرفه بوده و بر روی ماشین‌های واقعی به‌طور کارآمدی عمل کند.

مهندسی نرم‌افزار عبارت است از کاربرد مهندسی برای طراحی نرم‌افزار، توسعه، پیاده‌سازی و نگهداری از نرم‌افزار در یک روش سیستماتیک.

نرم‌افزار عموماً از محصولات و موقعیت‌هایی شناخته می‌شود که قابلیت اطمینان زیادی از آن انتظار می‌رود، حتی در شرایط طاقت فرسا، مانند نظارت و کنترل نیروگاه‌های انرژی هسته‌ای، یا هدایت یک هواپیمای مسافربری در هوا، چنین برنامه‌هایی شامل هزاران خط کد هستند، که از نظر پیچیدگی با پیچیده‌ترین ماشین‌های نوین قابل مقایسه هستند. به‌عنوان مثال، یک هواپیمای مسافربری چند میلیون قطعه فیزیکی دارد (و یک شاتل فضایی حدود ده میلیون بخش دارد)، در حالی که نرم‌افزارِ هدایت چنین هواپیمایی می‌تواند تا ۴ میلیون خط کد داشته باشد.

مهندسی نرم‌افزار را می‌توان به ۱۵ زیر رشته تقسیم کرد:

  • شناخت: بررسی و استخراج نیازمندی‌های نرم‌افزار که شامل استخراج، تحلیل و اعتبارسنجی خواسته‌ها و تهیه مستندات مربوطه جهت طراحی نرم‌افزار می‌باشد.
  • طراحی نرم‌افزار: فرایند تعریف معماری، اجزا، واسط و دیگر مشخصه‌های سیستم یا اجزا را گویند. همچنین این زیر بخش به عنوان خروجی فرایند نیز تعریف می‌شود.
  • طراحی نرم‌افزار # توجهات طراحی:سازگاری، توسعه پذیری، تحمل خطا، قابلیت نگهداری، ماژولمند بودن، قابلیت اطمینان، قابلیت استفاده مجدد، استحکام، امنیت، قابلیت استفاده، کارایی، قابلیت حمل، مقیاس پذیری.
  • ساخت نرم‌افزار:جزئیات مربوط به ایجاد کار با معنی برای نرم‌افزار از طریق برنامه‌نویسی، بازنویسی و تأیید، تست واحدها و اجزا، تست یکپارچگی، و اشکالیابی.
  • تست نرم‌افزار: بررسی فنی -تجربی، برای ارائه به سهامداران و ذی نفعان که اطلاعاتی در مورد کیفیت محصول یا خدمات تحت تست بیا ن می‌کند.
  • تعمیر و نگهداری نرم‌افزار: کلیه فعالیت‌های مورد نیاز برای ارائه پشتیبانی مقرون به صرفه در نرم‌افزار است.
  • مدیریت پیکربندی نرم‌افزار: شناسایی پیکربندی یک سیستم در نقاط مشخصی از زمان به منظور کنترل سیستماتیک تغییرات پیکربندی و حفظ و نگهداری یکپارچگی برنامه و ردیابی پیکربندی در طول چرخه عمر سیستم را گویند.
  • مدیریت نرم‌افزارهای مهندسی: نرم‌افزار مدیریت فعالیت‌ها و برنامه‌ریزی، هماهنگی، اندازه‌گیری، نظارت، کنترل و گزارش‌گیری به منظور حصول اطمینان از توسعه و نگهداری سیستماتیک، منضبط و اندازه‌گیری شونده نرم‌افزار است.
  • فرایند نرم‌افزار: تعریف، اجرا و پیاده‌سازی، ارزیابی، اندازه‌گیری، مدیریت، ایجاد تغییر و بهبود فرایند چرخه حیات خود نرم‌افزار را گویند.
  • روش‌های مهندسی نرم‌افزار و مدل‌های تحمیل ساختار در مهندسی نرم‌افزار با هدف سیستماتیک و منظم کردن فعالیت، قابل تکرار بودن و در نهایت افزایش کیفیت نرم‌افزار و موفقیت امیزتر بودن ان ایجاد می‌شود.
  • تمرین مهندسی نرم‌افزار حرفه‌ای دربارهٔ دانش، مهارت و نگرش‌های مهندسی نرم‌افزار است که مهندسان نرم‌افزار باید تمرین مهندسی نرم‌افزار را به صورت حرفه‌ای، مسئولانه و اخلاقی بکنند.
  • اقتصاد مهندسی نرم‌افزار در مورد تصمیم‌گیری در زمینه کسب و کار تجاری مهندسی نرم‌افزار است.
  • مبانی ریاضی و محاسباتی
  • مبانی مهندسی
  • ابزار مهندسی نرم‌افزار و روش‌ها: ابزارهایی مبتنی بر کامپیوتر برای مهندسی نرم‌افزار ایجاد شده‌اند تا به فرایندهای چرخه حیات نرم‌افزار و روش‌هایی که ساختاری را بر فعالیت‌های مهندسی نرم‌افزار اعمال می‌کنند کمک کندتا به هدف ساخت فعالیت‌های سیستماتیک و در نهایت به موفقیت بتوان رسید.

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

معمولاً کسانی که در حوزه‌ی مدیریت عملیات یا مدیریت پروژه فعالیت دارند، جزئیات بسیاری را در مورد بکارگیری و پیاده سازی این ابزار می‌آموزند.

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

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

از آنجایی که هر تیم دارای اعضایی با تخصص های متنوع می باشد، تخته کانبان به شما اجازه می دهد تا جریان کاری خود را بر روی آن پیاده کنید. 

5 گام اصلی در کانبان برد:

گام اول،

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

گام دوم،

دومین گام ساخت تخته کانبان است. هنگامی که وظایف و کارهای لازمه را یافتید، باید آنها را در بردکانبان وارد کنید. سه ستون اصلی (باید انجام شودTO DO، در حال انجام DONIGو انجام شدهDONE) تخته کانبان را رسم کنید و وظایف را در آن قرار دهید. تخته کانبان در اوایل کار بسیار متغیر خواهد بود و پس از گذشت زمان به مرور ثابت می شود.

 

گام سوم

 اضافه کردن محدودیت WIP (کار در حال انجام) می باشد. محدودیت WIP یک عدد است که برای ستون ها (در حال انجام، آزمایش، اجرا، و غیره) معین می شود که نشان می دهد چه تعداد وظیفه می تواند در ستون قرار داشته باشد. اگر ستون پر شود، هیچ کار اضافی نمی تواند اضافه شود. محدودیت های WIP بخش مهمی از روش کانبان هستند زیرا این محدودیت ها باعث می شوند تیم مرتبا پربازده باقی ماند. با ایجاد محدودیت در تعداد وظایف، اعضای تیم تا زمانی که وظیفه مربوط به خود را انجام نداده اند نمی توانند سراغ کارها و وظایف جدید بروند. 

 

گام چهارم

جلسات کوتاه روزانه می تواند یکی از بزرگترین فرصت های شما برای شناسایی مشکلات و یافتن راه حل ها باشد. هدف جلسه روزانه، بحث درباره مشکلات تیم  و حل آنهاست. جلسات برنامه ریزی باید فقط در صورت وم برگزار شوند و به بحث درباره پروژه های آینده و گذشته بپردازد.

گام پنجم 

برای شروع Kanban درج گزارش می باشد.این گزارش ها برای کمک به شما برای یافتن اطلاعاتی مانند چند روز طول می کشد تا یک وظیفه به پایان برسد، تعداد کارهایی که تیم در یک زمان می تواند انجام دهد .گزارشات و بازخوردها به شما یک بینش عالی برای بهبود روند کاریتان ارائه می دهد.

در تصویر زیر یک نمونه بسیار ساده از تخته کانبان را مشاهده می کنید:

                           

رنگ کارت نیز می تواند به اولویت آن وظیفه نیز اشاره کند (به عنوان مثال، قرمز برای سرعت بخشیدن، سبز برای عادی و غیره).

                                               


 

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

از صفر کار تایب رو انجام دهید این امر در مورد تصاویدر هم صدق می کند .

 


اهداف سئو چیست؟

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

 

 

 

چرا سئو برا ما برنامه نویسان مهم است؟

برای همه صاحبان کسبو کار و فروشگاه داران و خدماتی های اینتریتی مهم است که در صفحه اول نتایج جست و جوی گوگل قرار بگیرند علی خضوض سه نتیجه او که 60 درصد کلیک هارا شامل میشود و پس همه وب سایت تمام تلاش خودرا انحام می دهند تا بتوانند رتبه یک را ازان خود کنند تا سهم فروش و بازدید سایت خود را بالا بببرند این ویژگی به خصوص برای آنهایی که با افزایش ترافیک سایت به تعداد مشتریانشان اضافه می‌شودبسیار حیاتی و مهم میباشد(خود جایگاه اول 36.4 درصد بازدیدکنندگان را به خود اختصاص می‌دهد)

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

به طور کلی اهداف سئو :

1 افزایش قابل توجه تعداد بازدید

2 ایجاد برند

3افزایش ترافیک سایت

4بهبود رتبه وب سایت در رده بندی سئو

5افزایش فروش و درامد

6بهترین راه برای تبلیغات

 

سئو درون صفحه چیست ؟ (On Page SEO)

به طور کلی هر چیزی که در سایت خود بارگذاری می‌کنید مربوط به SEO On Page می‌شودو سئو مستقیم کد ها و تمام محتوبات سایت رو کنتل و چک می کند. این قسمت  اساس تمام تلاش‌های بهینه‌سازی وب سایت است زیرا جایی است که شما بیشترین کنترل را روی آن دارید. هر گونه تغییری را که شما در محتویات سایت خود ایجاد می‌نمایید در نتایج جستجو تاثیر گذار خواهد بود . به یاد داشته باشیم که بهینه سازی های ان پیچ باید بدرستی وقبل از اف پیچ انجام شود

سئو بیرون صفحه چیست ؟ (Off Page SEO)

SEO Off Page در مرتبه  اول در بدست آوردن پیوند دهندگان (لینک هاییکه از سایت‌های دیگر به سایت شما اشاره می‌کنند) تمرکز می کند سپس با استفاده از روش‌هایی که در خارج از وب سایت انجام می‌شود به بهینه‌سازی موتور جستجو می‌پردازد.

سئو کلاه - سفید چیست ؟ (White Hat)

منظور کلاه سفید یعنی ما از تکنیک و استرازی هایی برای بهینه سازی استفاده کنیم که از قوانین سئو باشد و نخاهیم از طریف فریب و دستکاری رتبع بهتری در جست و جو را کسب کنیم این همچنین به سئو اخلاقی نیز یاد می‌شود زیرا دلیل آن این است که یا اجرای بلند مدت داشته و یا از دستورالعمل‌ها و ت‌های صحیح جهت بدست آوردن رتبه‌های بالا در نتایج موتور‌های جستجو استفاده می‌کند.

سئو کلاه - سیاه چیست ؟ (Black Hat)

کاملا برعکس کلاه سفید سئو ی کلاه سیاه است یعنی بخواهیم با فریب و دستکاری رتبه بالاتری بدست اوریم.

این مهم است که بدانید این‌ روش‌ها غیر اخلاقی بوده و توسط هیچ موتور جستجویی تایید نمی‌شود و بکارگیری این روش‌ها خطر خارج شدن از فهرست پایگاه داده را برای همیشه در بر دارد.اپرچه استفاده از این روش رشد ناگهانی در نتایج را رقم میزند ولی منجربه پرداخت جریمه یا حتی حذف کامل از فهرست نتایج میشود

مقالات در زمینه بهینه سازی موتور جستجو

در زیر به برخی از مقالات در زمینه بهینه سازی موتور جستجو اشاره شده است:

 استراتژی های بهینه سازی موتور جستجو برای توسعه وب سایت های بزرگ

 هنگامی که پیاده سازی به پایان می رسد مشکلی که خیلی ها با آن مواجه ند ایناست که نمی دانند که چگونه وب سایت خود را در اینترنت معرفی نماید که بهترین روش برای معرفی وب سایت بهنیه سازی است. بر اساس 77 معیاری که از منابع مختلف و موتورهای جستجو بررسی شده استراتژهای بهینه سازی عبارت اند از

  • بهبود ساختار سایت
  • استراتژی کلمات کلیدی
  • استراتژی URL
  • بهینه سازی کد
  • پردازش کردن متن
  • بهینه سازی لینک های ورودی
  • استراتژی نام دامنه و هاست

آنالیز تکنیک های بهینه سازی موتور جستجو

  • اضافه کردن Allow یا DisAllow به نقشه سایت
  • اضافه کردن URL به نقشه سایت
  • اضافه کردن نقشه سایت به robots.txt
  • استفاده از ابزارهای آنالیز جهت crawl

 

  • وب مسترها و شرکت های بهینه سازی موتور جستجو:

  • شرکت هایی که با استفاده از یکسری ابزار و مهارت ها تلاش می کنند رتبه وب سایت ها را در صفحه نتایج موتور جستجو افزایش دهند

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

 

 

تکنیک هایی که برای بهینه سازی است عبارتند از:

  • افزایش لینک های خارجی
  • تغییر اسم فایل ها
  • لینک یک طرفه
  • کلمات کلیدی
  • استفاده از Meta Tag
  • استفاده صحیح از عنوان
  • استفاده از robots.txt
  • بهینه سازی محتوا

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

متدهای توسعهٔ چابک مشخص زیادی وجود دارند، که بیشترشان توسعه، کار تیمی، همکاری و سازگاری فرایند در چرخهٔ حیات پروژه را ترفیع می‌دهند. متدهای چابک وظایف را به گام‌های کوچک با کمترین میزان برنامه‌ریزی می‌شکنند که به‌طور مستقیم با برنامه‌ریزی‌های طولانی‌مدت درگیر نیستند. تکرارها فریم‌های (بسته‌های زمانی) کوتاه‌مدتی هستند که معمولاً بین یک تا چهار هفته طول می‌کشند. هر تکرار دارای یک تیم متقابل عملکردی در تمام مأموریت‌ها است: تحلیل نیازمندی‌ها، طراحی، کدنویسی، واحد تست، و قبولی در تست. در پایان هر تکرار یک محصول کاری به ذی‌نفعان نشان داده می‌شود. این، ریسک کلی را به حداقل رسانده و اجازه می‌دهد پروژه خیلی سریع با تغییرات منطبق شود. ممکن است یک تکرار قابلیت کافی برای تضمین پخش در بازار را نیفزاید، اما هدف، انتشار در دسترس (با حداقل شکاف) در پایان هر تکرار است. شاید تکرارهای چندگانه نیاز به انتشار یک محصول یا ویژگی‌های جدید داشته باشند. ترکیب تیم در یک پروژهٔ چابک معمولاً عملکردی متقابل و خودسازمان‌دهی است، بدون توجه به هرگونه سلسله‌مراتب شرکتی یا نقش‌های شرکتی اعضای تیم. اعضای تیم به‌طور معمول مسئولیت وظایفی را که قابلیت نیازهای تکرار را ارائه می‌دهد، بر عهده می‌گیرند. آن‌ها به صورت جداگانه تصمیم می‌گیرند که چگونه با نیازمندی‌های یک تکرار مواجه شوند.

متدهای چابک، وقتی تیم‌ها با هم در یک مکان هستند، بر ارتباطات رو در رو برای تمام مستندات نوشته‌شده تأکید دارد. بیشتر تیم‌های چابک در یک دفتر تک‌واحدی (به نام bullpen) کار می‌کنند، که چنین ارتباطاتی را تسهیل می‌کند. به منظور ساده کردن ارتباطات و همکاری تیمی، گروه معمولاً کوچک (بین ۵ تا ۹ نفره) است. پروژه‌های بزرگ توسعه می‌توانند توسط تیم‌های کاری چندگانه در راستای یک هدف رایج یا در بخش‌های متفاوت یک پروژه تحویل شوند. ممکن است این امر نیاز به هماهنگی اولویت‌های تمام تیم‌ها داشته باشد. وقتی تیمی در مکان‌های مختلفی کار می‌کند، افراد ارتباط روزانه‌شان را از طریق ویدئو کنفرانس، صدا، ایمیل و. حفظ می‌کنند.

مهم نیست چه دیسیپلین‌های توسعه‌ای لازم است، هر تیم چابک، یک پاسخگوی مشتری دارد. این شخص توسط ذی‌نفعان به نمایندگی انتخاب می‌شود و یک تعهد فردی ایجاد می‌کند که برای پاسخگویی به سؤالات اواسط تکرار، در دسترس توسعه‌دهندگان باشد.در انتهای هر تکرار، ذی‌نفعان و نمایندهٔ مشتریان پیشرفت را بررسی می‌کنند، اولویت‌ها را با دید بهینه‌سازی بازگشت سرمایه (ROI) مجدداً می‌سنجند و از انطباق نیازهای مشتری با اهداف شرکت اطمینان حاصل می‌کنند. بیشتر پیاده‌سازی‌های چابک از ارتباطات غیررسمی، روزانه و رو در رو در میان اعضای تیم بهره می‌گیرند. این به‌طور خاص شامل نمایندهٔ مشتری و هر کدام از ذی‌نفعان علاقه‌مند به عنوان ناظر می‌شود. در یک جلسهٔ مختصر، هر کدام از اعضای تیم گزارش می‌دهند که در روز گذشته چه کرده‌اند، قصد دارند در روز جاری چه کارهایی انجام دهند و موانع پیش روی‌شان کدامند. این ارتباطات رو در رو مشکلات را به محض بروز، افشا می‌کند. این جلسات روزانه، گاهی به صورت ایستاده یا نشست‌های اسکرام هر روز در یک زمان و مکان ثابت برگزار می‌شوند و نباید بیش از ۱۵ دقیقه طول بکشند. معمولاً جلسات ایستاده این نقش را دارند.»

توسعهٔ چابک بر کار نرم‌افزار به عنوان مقیاس اصلی پیشرفت تأکید دارد، که با مزیت ارتباطات رو در رو در هم آمیخته شده، و نسبت به سایر متدها مستندات مکتوب کمتری تولید می‌شود. متد چابک ذی‌نفعان را به اولویت‌بندی خواسته‌ها» با نتایج حاصل از سایر تکرارها، بر اساس ارزش کسب‌وکار مشاهده‌شده در ابتدای تکرار (که با عنوان ارزش‌محور شناخته می‌شود) ترغیب می‌کند.

ابزارها و تکنیک‌های خاص، مانند یکپارچه‌سازی مستمر، تست اتوماتیک یا xUnit، برنامه‌نویسی دوجزئی، توسعهٔ آزمون‌محور، الگوهای طراحی، طراحی دامنه‌محور، code refactoring و دیگر تکنیک‌ها اغلب برای بهبود کیفیت و افزایش چابکی پروژه به کار می‌روند.

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

در توسعهٔ چابک نرم‌افزار، یک رادیاتور اطلاعات، صفحه‌نمایشی فیزیکی (معمولاً بزرگ) واقع در صدر دفتر کار است، جایی که رهگذران بتوانند آن را ببینند. این صفحه‌نمایش خلاصه‌ای از آخرین وضعیت محصول (های) نرم‌افزاری را نمایش می‌دهد. این نام توسط Alistair Cockburn ابداع و در کتاب توسعهٔ چابک نرم‌افزار» در سال ۲۰۰۲ توصیف شد.ممکن است یک نشانگر نوری برای آگاه کردن اعضای تیم در مورد وضعیت فعلی پروژه‌شان به کار رود.

متدهای معروف توسعهٔ چابک نرم‌افزار عبارتند از:

  • مدل‌سازی چابک
  • فرایند یکپارچهٔ چابک (AUP)
  • Crystal Clear
  • متدهای Crystal
  • متدهای توسعهٔ سیستم‌های دینامیک (DSDM)
  • برنامه‌نویسی اکستریم (XP)
  • توسعهٔ ویژگی‌محور (FDD)
  • طراحی گرافیکی سیستم (GSD)
  • توسعه Kanban
  • توسعه Lean
  • Scrum
  • ردیابی سرعت

چرخهٔ عمر توسعهٔ نرم‌افزار

متدهای چابک بر جنبه‌های متفاوتی از چرخهٔ عمر توسعهٔ نرم‌افزار تمرکز دارند. بعضی از آن‌ها بر روش‌ها (برنامه‌نویسی 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

آدرس‌های حاوی Query String، بخش‌های مختلفی دارند:

  • URL: این بخش شامل دامنه مورد نظر است. 
  • ?: ابتدای Query String با علامت سوال (?) مشخص می‌شود. 
  • نام پارامتر: در Query String پارامترهای مختلف را می‌بینیم که هر پارامتر یک نام و یک مقدار دارد. پس از علامت سوال، نام اولین پارامتر دیده می‌شود.
  • =: برای تعریف مقدار یک پارامتر، از علامت مساوی (=) استفاده می‌شود. این علامت پس از نام هر پارامتر وجود دارد.
  • مقدار پارامتر: هر پارامتر یک نام و یک مقدار دارد. پس از نام و علامت مساوی، مقدار پارامتر دیده می‌شود.
  • &: برای جداسازی پارامترهای مختلف، از علامت & استفاده می‌شود. این علامت بین مقدار پارامتر قبلی و اسم پارامتر بعدی دیده می‌شود. 

مزایا و محدودیت‌ها

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

  • استفاده ساده
  • سریع ترین روش انتقال اطلاعات بین صفحات
  • عدم تحمیل عملیات اضافه به سرویس دهنده و در نتیجه هزینه‌ی کم

البته این روش دارای معایبی می‌باشد که برخی از آن‌ها عبارتند از:

  • اطلاعات، محدود به رشته های ساده می‌باشد (فقط کاراکترهای مجاز)
  • اطلاعات همواره به عنوان یک رشته بازیابی می گردند و در صورت نیاز باید آن‌ها را به نوع داده مورد نظر تبدیل کرد.
  • اطلاعات توسط همه قابل مشاهده است. برای مواردی که لازم است اطلاعاتی بطور مخفی از یک صفحه به صفحه دیگر ارسال و یا بر روی آن حساسیت خاصی از نظر امنیتی وجود دارد، قابل استفاده نیست.
  • کاربران می توانند محتویات 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/Requestsmake:requestrules

/**
 * 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;
}

آخرین ارسال ها

آخرین جستجو ها