۱۳ آبان، ۱۴۰۰

١ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل نگه نداشتن سشن های لاگین بعد از ورود جواب داد.

سلام.

اکثر مواقع که این مشکل رخ میده به این دلیل هست که دامنه ای که session رو روی اون ست میکنید اشتباه هست، به مسیر ‍‍/home/milad/Desktop/app/config/session.php و domainرو چک کنید و همچنین میتونید از فایل env. دامنه رو تغییر بدید.در اینجا میتونید مثال این مورد رو ببینید.

در صورت کار نکردن این مورد میتونید از طریق php کوکی یا سِشِن ثبت کنید که صد درصد جواب میده.

Session:

<?php
session_start();
$_SESSION["name"] = "value";

Cookie:


<?php
$cookie_name = "name";
$cookie_value = "value";
$cookie_time = time() + (60* 60*24*365);    //(60* 60*24*365) = یک سال
setcookie($cookie_name, $cookie_value,  $cookie_time);

۲۴ مهر، ۱۴۰۰

٢ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی درخواست فایل پروژه آموزش پی اچ پی جواب داد.

با سلام و خسته نباشید، محمد جان ارور 403 به دلیل عدم اجازه دستزسی هست و به این دلیل رخ داده که فایل ها در google doc ذخیره شده اند و گوگل هم آی پی های ایران رو برای خیلی از خدماتش تحریم کرده،راه حل اینه که با یک vpn یا فیلتر شکن افدام به دریافت کنید.

اما به نظر من بهترین کار اینه که فایل های تمرین رو خودت در زمان یادگیری بسازی،منظورم اینه که قدم به قدم همراه با آموزش پیش بری.

اینطوری چند تا مزیت خوب برات داره:

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

این تجارب در آموزش تيوری هیچ وقت به دست نمیان.

در ضمن این کار درسته که کمی زمان بر هستند ولی ازت توی اون زبان یه برنامه نویس میسازند که ارور های اون زبان یا فریمورک رو یادگرفته و همچنین یادگرفته که چطور اون زبان برنامه نویسی رو با خلاقیت ها خودش قدرتمند تر کنه و همچنین به مرور زمان تمام قابلیت های اون زبان رو یاد میگیری و میتونی به بهترین شکل ممکن ازش استفاده کنی.

۱۲ مهر، ۱۴۰۰

٢ ماه پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم فرمت SVG چیست؟! نوشت.

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

بخش های مقاله

  • گرافیک وکتور
  • گرافیک رستر یا بیتمپ(پیکسلی)
  • گرافیک وکتور در برابر گرافیکی پیکسلی( بیتمپ)
  • لوگوی شبکه‌های اجتماعی و برندهای معروف با فرمت SVG
  • چگونه PNG یا JPG را به عکس وکتوری با فرمت SVG تبدیل کنیم؟

گرافیک وکتور

  • وکتور چیست ؟

مروزه هرکسی که با طراحی گرافیک کامپیوتری سروکار داشته باشد، به نوعی در آثار خود از وکتور کمک می‌گیرد. در امور گرافیکی، دو دسته اصلی به نام گرافیک برداری (وکتور) و «گرافیک شطرنجی» Raster Graphics یا رستر bitmap وجود دارد که در ادامه با آن‌ها آشنا می‌شویم. لازم به ذکر است که «اثر هنری وکتور» Vector Artwork به اثری می‌گویند که توسط گرافیک برداری تهیه شده باشد. از این نوع گرافیک بمنظور درج لوگو شرکت‌ها بر روی کارت ویزیت، طراحی پوستر، طراحی جلد کتاب و … استفاده می‌شود.

  • وکتور

گرافیک برداری از روابط ریاضی برای طراحی استفاده می‌کند. این روابط ریاضی به نقاطی تبدیل می‌شوند و این نقاط به کمک خط‌ها و منحنی‌ها به یکدیگر متصل خواهند شد که در برخی موارد «مسیر برداری» Vector Path نام دارند. در اثر این اتفاق، تصاویر وکتوری را بدون از دست دادن کیفیت، می‌توان با حفظ حجم کم،‌ به مقیاس‌های بسیار بزرگ تبدیل کرد. در تصویر زیر مشاهده می‌کنید که با افزایش مقیاس تصویر، کیفیت آن کاهش پیدا نمی‌کند.

گرافیک رستر(پیکسلی)

  • رستر

گرافیک‌های رستر (bitmap)، از مربع‌های بسیار کوچکی به نام پیکسل تشکیل شده‌اند. زمانی که یک تصویر رستر ـ با اندازه مشخص پیکسل – ایجاد شود، نمی‌توان آن‌را بدون افت کیفیت، بزرگ کرد. هر قدر تعدد پیکسل‌های یک تصویر، بزرگتر باشد، حجم فایل حاوی آن نیز بزرگتر خواهد بود زیرا هر پیکسل از فایل نیاز به حافظه‌ای دارد که در کامپیوتر ذخیره و نگهداری می‌شود. در تصویر زیر می‌بینید که با بزرگتر کردن تصویر، کیفیت آن کاهش پیدا می‌کند

گرافیک وکتور در برابر گرافیکی پیکسلی( بیتمپ)

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

گرافیک وکتوری هم مثل گرافیک پیکسلی می‌تواند متحرک باشد. در واقع به جای فایل GIF می‌توان فایل SVG متحرک استفاده کرد.

لوگوی شبکه‌های اجتماعی و برندهای معروف با فرمت SVG

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

گزینه‌ی دوم استفاده از عکس‌های PNG است. آیکون توییتر با رزولوشن ۵۱۲ در ۵۱۲ پیکسل و فرمت PNG از نظر حجم حدود ۲۰ کیلوبایت فضا اشغال می‌کند که عدد بزرگی است. همین آیکون با تبدیل شدن به فرمت SVG، تنها ۴۲۵ بایت یا حدود ۰.۵ کیلوبایت حجم خواهد داشت که بسیار کم است.

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

چگونه PNG یا JPG را به عکس وکتوری با فرمت SVG تبدیل کنیم؟

برای تبدیل کردن عکس‌های معمولی به عکس وکتوری می‌توان از نرم‌افزارهای تخصصی برای ویرایش فرمت‌های برداری مثل Adobe Illustrator استفاده کرد. نرم‌افزارهای دیگری مثل Inkscape و نرم‌افزار Draw از مجموعه‌ی آفیس رایگان LibreOffice نیز یکی از گزینه‌های جالب است.

برخی وب‌اپلیکیشن‌های رایگان نیز برای تبدیل فرمت‌های مختلف عکس موجود است و از فرمت SVG پشتیبانی می‌کند. نمونه‌ی آن Aconvert است، نرم‌افزاری آنلاین که به صورت رایگان این کار را انجام می‌دهد. نرم‌افزار دیگر Vectorizer است که به صورت آنلاین و رایگان، تصاویر معمولی را به وکتور تبدیل می‌کند و تنظیمات جالب توجهی نیز در آن پیش‌بینی شده است. در ادامه به روش تبدیل فرمت‌ها به فرمت برداری SVG‌ توسط این سرویس‌های رایگان و آنلاین، اشاره می‌کنیم.

سخن پایانی

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

ممنون که تا اینجا با من همراه بودین، لطفا نظراتتون رو از طریق کامنت ارسال کنید

۲۷ شهریور، ۱۴۰۰

٣ ماه پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم linux video codecs نوشت.

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

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

اکثر کاربران از ماژول های خارجی مثل vlc و غیره برای حل این مشکل استفاده میکنن که در واقع مشکل رو حل نمیکنند بلکه از اون فرار میکنن و به عوامل خارجی پناه میبرن،تا اینجا مسئله ای موجود نیست،مشکل از جایی شروع میشه که مرورگرتون قادر به پخش نیست و با ماژول های خارجی هم قابل حل نیست.

بیشتر سیستم های لینوکسی این باگ رو دارند که در بعضی (مثال ورژن ۲۰.۰۴) این ارور رو به شما نشون میده. در بقیه ورژن ها سعی به حل این مشکل کردن اما در حالت لوکال این مشکل وجود دارد.

راه حل اینه که به جای پیچوندن مسئله اون رو حل کنیم.

چطور؟! بهتون میگم.

قدم اول : چک کردن تنضیمات نرم افزار

در قسمت show applications روی ایکون software & updates کلیک کنید.

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

بعد از چک کردن سیستمتون رو با دستور sudo apt update به روز کنید.

بعد از تمام شدن آپدیت ها دوباره چک کنید ببینید که پخش کننده ویدئو در حالت لوکال(داخل سیستم) کار میکنه یا نه.

اگر کار نمیکنه شما باید یکسر موارد اضافه رو روی سیستمتون نصب کنید. برای اینکار ترمینال رو باز کرده و دستور زیر رو تایپ کنید

sudo apt install ubuntu-restricted-extras

دکمه enter رو بزنید و به سوال هم پاسخ بله ‍Y بدید

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

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

در زمان نصب سیستم این توافقنامه رو به شما ارائه میکنه و برای نصب قبولش کنید

ok رو انتخاب کنید تا Microsoft EULA برای شما نصب شه.

اگر میخواید که فونت های Microsoft fonts نصب شه بعد از مرحله بلا YES رو انتخاب کنید

بعد از این انتخاب ها اجازه بدید تا روند نصب کامل شه

نکته قابل توجه اینه که همه ی multimedia codecs مثل تصویر زیر باید نصب شده باشه در غیر این صورت باید نصب رو از اول انجام بدید

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

خب دوستان به پایان این مقاله رسیدیم.

منابع:

۲۳ شهریور، ۱۴۰۰

٣ ماه پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم گوگل مپ نوشت.

دوستان سلام.

توی این مقاله میخوام بهتون توضیح بدم که بدون استفاده از google api از نقشه گوگل در پلتفرمتون استفاده کنید.با پارس کلیک همراه باشید

خب همونطور که میدونید developers.google.com به آی پی های ایران اجازه دسترسی نمیده و وقتی آدرس صفحشون رو وارد میکنی با ارور ۴۰۳ (عدم اجازه دسترسی) رو به رو میشیم.

خب از طریق گرفتن api که کارمون یک کم سخت هست.اما هر مشکلی یک راه حل داره.

چطور بدون API از google map استفاده کنیم(این آموزش صرفا جهت نشون دادن نقشه هست).

  • وارد وبسایت google map بشید و در قسمت جست و جو آدرس مورد نظرتون رو وارد کنید.

  • بعد از اینکه نقشه کاملا بارگزاری شد، در منو سمت چپ روی قسمت Share or embed map و یا رو قسمت Share کلیک کنید، یک popup در صفحه شما باز میشود که شامل دو تب(tab) میباشد.

tab اول شامل لینک صفحه و tab دوم شامل کد html هست(همون چیزی که ما نیاز داریم)

مرحله آخر:

  • روی embed map کلیک کنید و پس از اون کد html که در صفحه قرار دارد رو کپی کنید و هر جایی از پلتفرمتون که خواستید قرار بدید.

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

منبع وبسایت University Of Mine

دوستان لطفا نظرتون رو در مورد این آموزش در قسمت کامنت ها بنویسید.

۲۲ شهریور، ۱۴۰۰

٣ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی GoLang OR NodeJS جواب داد.

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

٣ ماه پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم گولنگ یا نود جی اس نوشت.

Node.js یک محیط توسعۀ بک‌اند بر پایهٔ زبان JS است و همچنین زبان برنامه‌نویسی اپن‌سورس Go نیز به‌ سرعت در میان دولوپرها به‌ عنوان یک زبان ساده، کاربردی و قابل‌اعتماد جای خود را باز کرده است. در جامعۀ دولوپرها، بر سر انتخاب یکی از این دو (Node.js و Golang) اختلاف‌نظرهای بسیاری وجود دارد.برای ارائه نظر باید اول این زبان روبشناسیم.

دیدگاه کاربران وبسایت Quora در مورد سوال امروز :

عملکرد ضعیف Node.js

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

نودجی‌اس مبتنی بر زبان مفسری JS (جاوااسکریپت) است و در آن برنامه‌ها برای اجرا کامپایل نمی‌شوند بلکه خط‌به‌خط تفسیر می‌شوند. سرعت زبان‌هایی که برنامه‌ها در آن تفسیر می‌شوند اندکی از زبان‌های برنامه‌نویسی کامپایلری کمتر است؛ همچنین ماهیت پویای این زبان موجب می‌شود که کارایی آن بسیار کمتر از کارایی زبان گو باشد و این در حالی است که عملکرد زبان Go مشابه C یا ++C است (C نیز یک زبان کامپایلری است.) همچنین به یاد داشته باشیم تنها در مواردی که توسعه دنده قصد برنامه‌نویسی برای ارتباطات بین شبکه یا تعامل با دیتابیس را داشته باشد، نودجی‌اس می‌تواند همچون گو عمل کند.

کانکارنت و مقیاس‌پذیر بودن زبان GO

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

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

تکامل زبان GO

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

البته موارد گفته شده به این معنی نیست که ‍Node js به این زودی ها بازار و برنامه نویس های خود رو از دست میدهد و به فراموشی سپرده میشود،بلکه طبق آمار stackoveflow survey در سال ۲۰۲۱، Node js دارای محبوبیت ۳۳/۹۱ درصدی و مقام ششم را دربین برنامه نویس ها داراست، این در حالیست که GO دارای محبوبیت ۹/۵۵ درصدی و مقام چهاردهم را داراست که البته با توجه به جوان بودن این زبان(نسبت به زبان هایی مثل PHP , C) امری طبیعی هست و نمیتوان منکر این امر شد که برنامه نویسان هنوز به شکل قابل توجهی (مانند دیگر زبان های کامپایلری) از این زبان استفاده نمیکنند.

سخن پایانی

می‌توان گفت که برای دولوپرها زبان گو انتخاب عاقلانه‌تری به نظر می‌رسد.البته نمیتوان منکراصل مطلب که بازار کار هست هم شد،چرا که Node js بازار کار بسیار گسترده تری نسبت GOlang را داراست.

۲۰ شهریور، ۱۴۰۰

٣ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای دو فایل جاوا اسکریپت جواب داد.

شما متغیر ها رو در حالت const ایجاد کردید که غیر قابل تغیر هست. زمانی که هر دو اسکریپت در یک صفحه وارد شوند درواقع کد ها پشت یر هم میوفته و این نوع نام گذاری متغیر مشکل ساز میشه، احتمالا مشکل از همین جا باشه.به جای const از let استفاده کن یا نام متغیر ها رو عوض کن

٣ ماه پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم Vue js یا React js چه زمان از چی استفاده کنیم نوشت.

و React.js دو فریمورک فرانت-اند جاوااسکریپت هستند که در دنیای توسعه دهندگان بسیار محبوب می‌باشند و اکنون React برای چهار سال متوالی در جایگاه برتر قرار دارد. هر دو ابزار یک رویکرد سازنده برای ساختن برنامه‌های مختلف وب به توسعه دهندگان ارائه می‌دهند، اما هر یک بهترین موارد استفاده خود را دارند و به نیازهای مختلف تجاری پاسخ می‌دهند.

آنچه باعث تقاضای این دو فریمورک شده

  • DOM -به جای رندر مجدد کل صفحه همانطور که در مورد DOM معمولی مشاهده می‌شود، React و Vue فقط آن دسته از اشیایی را که تغییر کرده‌اند به روز می‌کنند و باعث صرفه جویی در وقت و منابعی می‌شوند که دستکاری‌های سنگین DOM مصرف می‌کند.

توسعه رابط کاربری مبتنی بر کامپوننت – کتابخانه‌های قابل توجه Vue و React از کامپوننت‌های استفاده مجدد از کد استفاده کرده و بهبود بهره‌وری توسعه و سرعت بخشیدن به روند توسعه را تسهیل می‌کنند.

  • تمرکز بر روی کتابخانه view - وجود دغدغه‌هایی برای مسیریابی، مدیریت state و ...

کتابخانه رسمی کامپوننت‌ها برای ساخت برنامه‌های تلفن همراه – مدت‌ها در Vue انتظار می‌رفت اما اکنون در هر دو ابزار پشتیبانی می‌شود.

دوستان از این قسمت به بعد وارد اصل بحثمون میشیم

موضوع مقاله درواقع توض این تصویر هست.خب بریم سراغ ادامه کار

گذشته

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

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

از طرف دیگر Vue توسط یکی از توسعه دهندگان به نام Evan You ساخته شده است تا بتواند ابزارهای موجود جاوااسکریپت را بهبود بخشد. ایوان یو کارمند سابق گوگل در تیم انگولار خود می‌خواست فریمورکی ایجاد کند که بهترین رویکردهای توسعه پیش رو ازAngular ، Ember و React را با سایر ویژگی‌ها ترکیب کند که نوشتن برنامه‌های وب را سریعتر، آسان‌تر و دلپذیرتر می‌کند.

درآغاز کار Vue یک پروژه کاملا متن باز بود و برای حرکت به جلو به جامعه، مشارکت کنندگان و سرمایه گذاری گسترده‌ای متکی بود.

سینتکس

یکی از بزرگترین تفاوت‌های بین Vue و React نحوه ساخت لایه view است.

به طور پیش فرض Vue از الگوهای HTML استفاده می‌کند، اما گزینه‌ای هم برای نوشتن در JSX وجود دارد.

از طرف دیگر در React فقط JSX وجود دارد. جداسازی سنتی Vue از نگرانی‌ها به HTML ، CSS و JS، یادگیری نحوه ایجاد برنامه‌های وب را حتی برای توسعه دهندگان ارشد آسان می‌کند. الگوهای HTML برای اکثر طراحان وب نیز آشناست و بنابراین همکاری بین توسعه دهندگان و طراحان را بهبود می‌بخشد.

عبارات جاوااسکریپت React، HTML و CSS را با هم در JavaScript ترکیب می‌کند. این سینتکس مشابه XML به توسعه دهندگان اجازه می‌دهد تا کامپوننت‌های رابط کاربری مستقل با دستورالعمل‌های رندرینگ را ایجاد کنند. در ادامه مقاله در مورد معنای آن صحبت خواهیم کرد.

دسترسی به متخصصان

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

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

نظر توسعه دهندگان

توسعه دهندگان در مورد Vue.js دوست دارند:

  • یادگیری آسان
  • سبک و الگوهای برنامه نویسی ظریف
  • مستندات خوب

توسعه دهندگان در مورد React دوست دارند:

  • سبک و الگوهای برنامه نویسی ظریف
  • پکیج اکوسیستم و بی نیاز
  • کاربرد گسترده

طبق گزارش و لیست فریمورک های محبو وب در سال ۲۰۲۰۱ (Stack Overflow Survey ۲۰۲۱)، ۴۰.۱۴٪ توسعه دهندگاه react.js و ۱۸.۹۷٪ توسعه دهندگان Vue.js را انتخاب کرده اند،این اختلا تقریبا ۲۰٪ اختلاف رنکینگ اول تا پنجم بین react.js و vue.js شده است که نسبت به سال قبل vue.js دارای رشد ۲ پله ای و react.js دارای رشد یک پله ای (سعود به پله اول) میباشند. و برطبق این آمار میتوان رو به رشد بودن این دو فریمورک را به وضوح تماشا کرد.

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

Vue js

به عنوان یک فریمورک در حال رشد، می‌تواند متناسب با هر پروژه مورد نیاز به تدریج در یک پروژه موجود ادغام شود. مثلا به عنوان یک کتابخانه سبک برای اضافه کردن برخی تعاملات به یک برنامه وب.

در حقیقت ۷۶ درصد از توسعه دهندگان شرکت کننده در گزارش State of Vue.js سهولت ادغام را بزرگترین سرمایه Vue در نظر می‌گیرند.

ٰVue با یک منحنی یادگیری آسان و ابزارهایی نظیر Vue CLI ۳ و Vue UI، برای تحویل سریع MVPها و ایده‌های راه اندازی بسیار عالی است. به همین دلیل همچنان یک راه‌حل مقرون به صرفه برای برنامه‌های کوچک تا متوسط ​​است.

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

React js

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

JSX قدرت کامل جاوااسکریپت را در اختیار توسعه دهندگان قرار می‌دهد که کنترل‌های جریان و ویژگی‌های پیشرفته IDE مانند تکمیل خودکار یا لیست کردن در الگوهای کامپوننت را شامل می‌شود.

برخلاف Vue ، React بسته‌های رسمی برای مسیریابی یا مدیریت state ندارد و به منظور ساخت برنامه‌های پیچیده، باید تقریبا برای همه موارد از راه حل‌های شخص ثالث استفاده کنید. اما انتخاب گسترده است. توسعه دهندگان باتجربه که وظیفه ارائه پروژه‌های پیشرفته را دارند، می‌دانند که کدام یک از کتابخانه‌های متعدد بهترین گزینه برای پاسخگویی به خواسته‌های تجاری یک برنامه وب خاص می‌باشد.

برخی برنامه‌های وب ساخته شده با Vue.js و React

Vuejs

React js

لازم به ذکر هست که تمامی زیر مجموعه های فیسبوک از react js استفاده کرده اند

سخن پایانی

react و vue هر دو فریمورک های فوقالعاده سریع و درحال رشد و به روز هستند و استفاده از هرکدوم بستگی به پروژه ای داره که درحال انجام هست، در نتیجه استفاده از هرکدوم به خواست خود برنامه نویس هست.

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

۱۲ شهریور، ۱۴۰۰

٣ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی راه اندازی و استفاده از مارک دون در یک پلتفرم جواب داد.

سوال رو در این مقاله حل کردم

٣ ماه پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم استفاده مارک دان در لاراول نوشت.

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

مارک دان:

وبسایت گیت هاب (github) برای فرمت بندی و قالب بندی متن ها و کامنت ها سینتکسی را معرفی کرد به نام markdown که با استفاده از این سینتکس می توان متن ها را از حالت متن خالی خارج و به فرمتی شبیه به Html تبدیل نمود بعنوان مثال می توان متنی را Bold نمود و یا یک لینک داخل متن ایجاد کرد یا عکسی قرار داد و سایر موارد دیگر.

Markdown یا «متن مرتب» شیوه نمایش متن با علامت های ساده است، یک زبان نشانه گذاری سبک با ساختار تمام متن و کاربرد آسان برای نوشتن اسناد و محتوای وب که در نهایت به HTML ترجمه و با ساختار بندی نمایش داده میشه.

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

خب حالا بریم سراغ استفاده از این تکنولوژی در پروژه لاراول

بریم برای نصب:

اول از همه ترمینال رو باز کنید و به مسیر پروژتون برید و پکیج ها رو نصب کنید:

composer require league/commonmark
  • اگر دستور بالا رو بزنید نسخه ی 2.0 رو برای شما نصب میکنه که به درد ما نمیخوره،چون graham-campbell/markdown از نسخه 1.5 استفاده میکنه.پس پکیج رو با دستور زیر نصب کنید.
    composer require league/commonmark ^1.5

بعد از اون نوبت نصب graham-campbell/markdown میرسه.با دستور زیر

composer require graham-campbell/markdown

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

  • معتبر سازی: برای اینکار به فولدر config رفته و فایل app.php رو باز کنید و در قسمت aliases کد زیر رو به آخر آرایه اضافه کنید.
    'Markdown' => GrahamCampbell\Markdown\Facades\Markdown::class

سپس دستور php artisan vendor:publish را در ترمینال اجرا کنید و بعد از اجرا CRTL+C رو بزنید. سپس باید تنظمات و کش پروژه رو باز نشانی کنیدبه شکل زیر

php artisan config:clear
php artisan cache:clear
php artisan config:cache

با این کار پکیج رو معتبر سازی کردید.

  • استفاده:
  1. استفاده خارج از فایل های blade : ابتدا پکیج رو به فایل و کلاستون وارد کنید و ازش استفاده کنید به شکل زیر

مثال ابتدایی:

use GrahamCampbell\Markdown\Facades\Markdown;

Markdown::convertToHtml('foo'); // <p>foo</p>

مثال کامل:

use Illuminate\Support\Facades\App;
use League\CommonMark\MarkdownConverterInterface;

class Foo
{
    protected $converter;

    public function __construct(MarkdownConverterInterface $converter)
    {
        $this->converter = $converter;
    }

    public function bar()
    {
        return $this->converter->convertToHtml('foo');
    }
}

App::make('Foo')->bar();
  1. استفاده در فایل blade: استفاده به اشکال زیر هست:
@markdown('# Foo')

یا

@markdown
# Bar
@endmarkdown
  • من خودم روش دوم رو پیشنهاد میکنم چون توی روش اول نمیشه enter زد و به سطر بعدی رفت(کار نمیکنه)
  • توی روش دوم نباید پشت محتواتون فاصله باشه.
    @markdown
            # Bar   //کار نمیکنه
    @endmarkdown
    @markdown
    # Bar   //کار میکنه
    @endmarkdown

میتونید یک استایل از cdnjs.com دانلود کنید و به مارک دان استایل بدید یا میتونید خودتون اون جور که میخواید بنویسید.

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

۱۰ شهریور، ۱۴۰۰

٣ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم مقایسه react js و livewire درست کرد.

سلام دوستان خته نباشید،توی ی پروژه هستم که فراننت فوق العاده سنگین و پویایی باید نوشته شه،حالا به نظر شما react بهتره یا livewire منظور از نظر همه چی هست:

  • سرعت
  • قدرت
  • کارایی
  • کدنویسی
  • آپدیت
  • و ...

۲۷ امرداد، ۱۴۰۰

۴ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم راه اندازی و استفاده از مارک دون در یک پلتفرم درست کرد.

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

۱۹ امرداد، ۱۴۰۰

۴ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی محدود کردن send شدن چند بار فرم در php جواب داد.

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

۱۸ امرداد، ۱۴۰۰

۴ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی محدود کردن send شدن چند بار فرم در php جواب داد.

@behzad دوست عزیز با این دستور اون ستون یونیک میشه و ممکنه که برنامه نویس این امر رو نخواد.

در غیر این صورت میتونه داخل دیتابس اون ستون رو یونیک کنه ودر کد فقط ارور رو هندل کنه.

در واقع منظور @seingod جلوگیری از درخواست تکراری بود که با Google Authentication میتونه این مشکل رو حل کنه

۲۷ تیر، ۱۴۰۰

۵ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ساخت اپلیکیشن تحت وب درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان عزیز. دوستان چطور و با چه تکنولوژی میشه که فایل های نوشته شده با vue.js که توسط یک پلتفرم تحت وب پشتیبانی میشن رو برای نصب و استفاده در اندروید و ios آماده کرد. ظاهرا snapp و دیوار هم همین کار رو انجام دادن اما چطور؟؟؟!!!

۵ ماه پیش ١۵۰۰+ امتیاز
نویسنده @m-p یک مقاله تازه به اسم ارسال پارامتر های چندگانه و ولیدیشن پارامتر ها بدون برخورد به ارور ولیدیشن نوشت.

همانطور که احتمالا میدانید برای ارسال چند پارامتر به وسیله ی یک فیلد(input) بهتره name رو به صورت جمع و باید با علامت آرایه نوشت مثال:

<input type="file" name="images[]" class="custom-file-input" id="customFile" multiple>

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

  • کد اشتباه:
    if ($request->file('images')) {
            $this->validate($request,[
                'images' => 'max:10240000,mimes:jpg,bmp,png,jpeg',
            ]);
            $files = $request->file('images');
            foreach($files as $file){
                $item->uploadeItemPhoto($file, $item);
            }

    نکته این مقاله اینجاست که لاراول ولیدیشن در زمان چک کردن پارامتر های درون آرایه اون ها رو تک تک و به صورت جدا چک میکنه در نتیجه اسم input هم درون ولیدیشن از حالت جمع (images) به حالت مفرد (image) تغییر پیدا میکنه مثال :

    if ($request->file('images')) {
            $files = $request->file('images');
            foreach($files as $file){
                $this->validate($request,[
                    'image' => 'max:10240000|mimes:jpg,bmp,png,jpeg',
                ]);
                $item->uploadeItemPhoto($file, $item);
            }
        }

    با انجام این امر دیگه ولیدیشن مشکل ساز نمیشه براتون

۱۷ تیر، ۱۴۰۰

۵ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ثبت انحصاری و اجرای کپی رایت برای یک پلتفرم درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان.

برای ثبت انحصاری (کسی نتواند از ایده استفاده مجدد کند و یا به نام خودش ثبت کند) یک پلتفرم و اجرای قانون کپی رایت چه اقداماتی باید انجام بشه و از کجا باید کار رو شروع کرد؟؟؟!!!

۱۱ تیر، ۱۴۰۰

۵ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی ارور ۴۰۴ در مسیر از قبل تعریف شده جواب داد.

با عرض سلامی دوباره خدمت دوستان.

مشکل از کنترولر بود که بخاطر ضعف در شناخت متد پیش اومده بود.

  • کد مشکل دار:

مشکل در گرفتن اطلاعات تماس(contact) بود که از متد firstOrFail() بدون دادن مقدار ورودی استفاده شده بود

public function showItem(Item $item){
        $product_groups = ProductGroup::all();
        $contact = Contact::firstOrFail()->get();
        return view('show-item', compact('item','product_groups', 'contact'));
    }

و با استفاده از متد first() بجای firstOrFail() مشکل حل شد

public function showItem(Item $item){
        $product_groups = ProductGroup::all();
        $contact = Contact::first();
        return view('show-item', compact('item','product_groups', 'contact'));
    }

۵ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ارور ۴۰۴ در مسیر از قبل تعریف شده درست کرد.

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

دوستان من به یک ارور برخوردم و این هست که یک route رو تعریف کردم اما در زمان استفاده ارور 404 رو نشون میده،همیچنین اگر اروری در route یا controller ایجاد کنم ارور رو نشون میده.

  • route در route list وجود داره
  • url رو تغیر دادم چند بار اما جواب نداده
  • دستور php artisan route:clear رو هم استفاده کردم.
  • متدی که به route وصل هست رو هم چک کردم و مشکلی نبود.
  • خود routeهم مشکلی نداره

متن فایل web.php مشکل در لاین دوم(دومین route)

Route::get('/', [PublicpagesController::class, 'index'])->name('index');

Route::get('/{item}', [PublicpagesController::class, 'showItem'])->name('showItem');

Route::get('product-group/{productGroup}', [PublicpagesController::class, 'showByProductGroup'])->name('showByProductGroup');

Route::get('product/{product}', [PublicpagesController::class, 'showByProduct'])->name('showByProduct');

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth'])->name('dashboard');

require __DIR__.'/auth.php';

قسمتی که از route استفاده شده

<a href="{{'{{'}} route('showItem', $item) }}" style="color: black;">

نظرتون چیه؟؟؟!!!

۸ خرداد، ۱۴۰۰

۶ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ارور در پوشه sass در زمان استفاده از laravel mix درست کرد.

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

در مسیر و فایل resources/sass/app.scss برای استفاده از laravel mix استایل های سی اس اس رو وارد میکنیم(‍[email protected])،مشکل من اینجاست که mixبا وارد کردن فایل های app.css و scss/bootstrap مشکلی ندارد اما با وارد کردن فایل های خارجی و حتی افزودن محتوای آنان به فایل ‍app مشکل دارد و ارور

ERROR in ./resources/sass/app.scss
Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/css-loader/dist/cjs.js):
Error: Can't resolve '../webfonts/fa-brands-400.woff2' in '/home/milad/Desktop/PersianBit/resources/sass'

را در زمان راه اندازی npm run dev نشان میدهد.

خیلی ریسرچ کردم و خیلی از ارور ها رو برطرف کردم و این ارور آخره آما زورم بهش نرسید.

  • محتوای فایل ‍app.scss:
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');

// Variables
@import 'variables';

// Bootstrap
@import '~bootstrap/scss/bootstrap';
@import '../css/app';

@import '../css/all.min';
@import '../css/bootstrap.min';
@import '../css/tooplate-style';

۱۲ فروردین، ۱۴۰۰

۸ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی اختلاف زمانی در تاریخ شمسی جواب داد.

@behzad تاریخ پست بر اساس تاریخ هاستتون تنظیم میشه و مشکلی پیش نمیاد

۸ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی اختلاف زمانی در تاریخ شمسی جواب داد.

این کلاس و متود های زمانی در php بر اساس زمان تنظیم شده در os شما کار میکنند،مشکل از تاریخ . ساعت سیستمتون هست باید اون رو تنظیم کنید که دقیق باشه در این صورت درست کار میکنه.

در ضمن هیچ ربطی به تغیرات ساعت نداره

۸ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی اختلاف زمانی در تاریخ شمسی جواب داد.

با عرض سلام و خسته نباشی.

  • کد شما را تست کردم و مشکل از کد شما نبود احتمالا فانکشن jdate دستکاری شده،لطفا کد فانکشن را ارسال کنید تا بتونیم مشکل رو حل کنیم.

  • همچنین میتونید از فانکشن های دیگر مثل gregorian_to_jalali استفاده کنید به شکل زیر:

    $year = date("Y");
    $month = date("m");
    $day = date("d");
    
    // return string
    $jalali_time = gregorian_to_jalali($year,$month,$day,'/ ');
    echo $jalali_time;
    echo "<br>";

۲۶ بهمن، ۱۳۹۹

١۰ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی requierd نشدن پکیج Swagger جواب داد.

@amin میشه بگید چطور باید اینکار رو انجام دهم،توی گوگل در موردش خوندم اما نفهمیدم که چطور انجام داده میشه

۲۴ بهمن، ۱۳۹۹

١۰ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم requierd نشدن پکیج Swagger درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان پارس کلیکی عزیز،

من برای استفاده از یک api مجبور به استفاده از پکیج Swagger-php شده ام و این پکیج رو در سرویس composer و نصب نمودم و در فایل composer.json وارد شده است اما در زمان استفاده از کلاس های این پکیج ارور class...not found رو به من میده،اولین باره که به اینمشکل برمیخورم و از طریق گوگل سرچینگ هم نتونستم جواب به درد بخوری پیدا کنم.

  • نکته : این پکیج رو با همون روش پکیج های قبل نصب کردم و همه پکیج ها بهم جواب دادن(composer require [package name])

  • محتویات فایل composer.json

    {
    "require": {
        "guzzlehttp/guzzle": "^7.0",
        "phpmailer/phpmailer": "^6.2",
        "swiftmailer/swiftmailer": "^6.0",
        "zircote/swagger-php": "^3.1",
        "doctrine/annotations": "^1.11",
        "sendinblue/api-v3-sdk": "7.x.x"
    }
  • محتویات فایل autoload_real.php

    
    <?php
    class ComposerAutoloaderInit9a732474ebcdab3ca8b0d72c7250c12c
    {
    private static $loader;
    
    public static function loadClassLoader($class)
    {
        if ('Composer\Autoload\ClassLoader' === $class) {
            require __DIR__ . '/ClassLoader.php';
        }
    }
    
    /**
     * @return \Composer\Autoload\ClassLoader
     */
    public static function getLoader()
    {
        if (null !== self::$loader) {
            return self::$loader;
        }
    
        require __DIR__ . '/platform_check.php';
    
        spl_autoload_register(array('ComposerAutoloaderInit9a732474ebcdab3ca8b0d72c7250c12c', 'loadClassLoader'), true, true);
        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
        spl_autoload_unregister(array('ComposerAutoloaderInit9a732474ebcdab3ca8b0d72c7250c12c', 'loadClassLoader'));
    
        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
        if ($useStaticLoader) {
            require __DIR__ . '/autoload_static.php';
    
            call_user_func(\Composer\Autoload\ComposerStaticInit9a732474ebcdab3ca8b0d72c7250c12c::getInitializer($loader));
        } else {
            $map = require __DIR__ . '/autoload_namespaces.php';
            foreach ($map as $namespace => $path) {
                $loader->set($namespace, $path);
            }
    
            $map = require __DIR__ . '/autoload_psr4.php';
            foreach ($map as $namespace => $path) {
                $loader->setPsr4($namespace, $path);
            }
    
            $classMap = require __DIR__ . '/autoload_classmap.php';
            if ($classMap) {
                $loader->addClassMap($classMap);
            }
        }
    
        $loader->register(true);
    
        if ($useStaticLoader) {
            $includeFiles = Composer\Autoload\ComposerStaticInit9a732474ebcdab3ca8b0d72c7250c12c::$files;
        } else {
            $includeFiles = require __DIR__ . '/autoload_files.php';
        }
        foreach ($includeFiles as $fileIdentifier => $file) {
            composerRequire9a732474ebcdab3ca8b0d72c7250c12c($fileIdentifier, $file);
        }
    
        return $loader;
    }
    }
    function composerRequire9a732474ebcdab3ca8b0d72c7250c12c($fileIdentifier, $file)
    {
    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
        require $file;
    
        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
    }
    }

۱۸ بهمن، ۱۳۹۹

١۰ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi کلیپ رو ساختم و اینجا در یوتیوب قرار دادم براتون

١۰ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi برای من خیر،شاید به دلیل فرمت فرمت عکس استفاده شده توسط من ( jpg.) هست و باید بر اساس فرمت عکس خودتون تغیرش بدیید.

من از php 8 استفاده میکنم

۱۴ بهمن، ۱۳۹۹

١۰ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi مشکل از ‍روت شما هست که به شکل :

$dirname = "C:/Users/George/Pictures/Camera Roll/";

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

$dirname = "C:\Users\Milad\Pictures\Camera Roll\";

در سیستم عامل یونیکس برای روتینگ از بک اسلش(/) و در ویندوز از اسلش(\) استفاده میکنیم&در ویندوز برای کمتر شدن اشتباهاتی از این قبیل بهتره که به فولدر مربوطه رفته و از منوی properties(کلیک راست در فولدر مربوطه) لینک را از قسمت locaion بردارید تا درصد اشتباه کمتر شود

١۰ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

@ahmadi دوباره سلام،مشکل کد استفاده شده توسط شما در مسیر دهی بود،کد درست به شکل زیر هست و من ازش ریزالت گرفتم.

$dirname = "media/images/iconized/";
    $images = glob($dirname."*.jpg");
    $ignore = Array(".", "..");
    foreach($images as $curimg){
        if(!in_array($curimg, $ignore)) {
            echo "<img src='$curimg' /><br>\n";
        }
    }

١۰ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی مشکل در اجرای یک یا چند عکس جواب داد.

کدی که داخل استک به عنوان سوال پرسیده شده بود:

$dirname = "media/images/iconized/";
$images = scandir($dirname);
$ignore = Array(".", "..");
foreach($images as $curimg){
    if(!in_array($curimg, $ignore)) {
        echo "<img src='$dirname/$curimg' /><br>\n";
    }
}

رو تست کردم و جواب داد اما کدی که به عنوان پاسخ:

$dirname = "media/images/iconized/";
$images = glob($dirname."*.png");

foreach($images as $image) {
    echo '<img src="'.$image.'" /><br />';
}

داده شده بود(کد استفاده توسط شما) جواب نداد،اگر کد رو تغییر دادید لطفان نمونه کد تغییر یافته و نمونه ارور رو بدید،تا بتونیم کمک کنیم

۴ بهمن، ۱۳۹۹

١۰ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم ارسال ایمیل با پی اچ پی درست کرد.

با سلام خدمت دوستان،کد های زیر را جهت ارسال ایمیل از لوکال هاست نوشتم و کد اجرا میشه و هیچ اروری نمیده ولی نکته مهم اینه که هیچ ایمیلی از طرف کلاینت دیده نمیشه.در ضمن php.ini و sendmail برای ارسال ایمیل در حالت دیفالت هستند.

اگر مشکلی باشه احتمالا(نظر شخصی)از لاین ۱۴ به بعد هست

<?php

$data = array();

function validation($form){
    $form = trim(htmlspecialchars(stripcslashes(strip_tags($form))));
    return $form;
}

if($_SERVER['REQUEST_METHOD'] == 'POST'){

    if(isset($_POST['toemail']) && isset($_POST['subject']) && isset($_POST['message'])){

        $to_email = validation($_POST['toemail']);
        $subject = validation($_POST['subject']);
        $message = wordwrap(validation($_POST['message']),70);
        $headers = "From: [email protected]" . "\r\n" ."CC: $to_email";

        if((!empty($to_email) && preg_match('/^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/', $to_email)) && !empty($subject) && !empty($message)){

            try{
                if(mail($to_email, $subject, $message, $headers)){
                    $data['status'] = 400;
                    $data['data'] = "Email SuccessFully Sent";
                }
                else{
                    throw new Exception("Email Not Send");
                }
            }
            catch(Exception $e){
                $data['status'] = 404;
                $data['data'] = $e->getMessage();
            }

        }
        else{
            $data['status'] = 408;
            $data['data'] = "Data Not Validated";
        }

    }
    else {
        $data['status'] = 412;
        $data['data'] = "Access Denied";
    }

}
else{

    $data['status'] = 416;
    $data['data'] = "Access Denied";

}

echo json_encode($data);

?>

۲۶ دی، ۱۳۹۹

١١ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی انتخاب زبان برنامه نویسی در حوزه شبکه جواب داد.

@samikaner با تشکر از نظرتون،البته منظور از اشاره من به زبان های ‍C++ ، C صرفا اسکریپت نویسی نبود بلکه منظور برنامه نویسی ویروس هست که اکثرا با زبان های یاد شده و به خصوص با زبان assembly نوشته میشه،البته زبان های سی در ایران بیشتر شناخته شده هستند و مثال بهتری بودند. باز هم از بازخوردتون ممنونم

۲۴ دی، ۱۳۹۹

١١ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی ارور CORS policy جواب داد.

احتمالا شما در حال استفاده از یک وب سرویس هستید و به دلیل پیچیده بودن درخواست به این مشکل برخوردی توضیح بیشتر:

آنچه در سطح شبکه رخ می دهد می تواند کمی پیچیده تر از توضیحات بالا باشد. اگر درخواست یک درخواست "غیر ساده" باشد ، ابتدا مرورگر یک درخواست OPTIONS "بدون پرواز" بدون داده را ارسال می کند تا تأیید کند که سرور درخواست را قبول می کند. درخواست هر دو (یا هر دو) غیر ساده است: استفاده از فعل HTTP غیر از GET یا POST (به عنوان مثال PUT ، DELETE) استفاده از هدرهای درخواست غیر ساده ؛ تنها عناوین درخواست های ساده عبارتند از: تایید کنید پذیرش-زبان زبان محتوا نوع محتوا (این فقط زمانی ساده است که مقدار آن برنامه / x-www-form-urlencoded ، multipart / form-data یا text / plain باشد)

اگر سرور به پیشآگهی OPTIONS با هدرهای پاسخ مناسب پاسخ دهد (Access-Control-Allow-Headers برای هدرهای غیر ساده ، Access-Control-Allow-Methods برای افعال غیر ساده) که با فعل غیر ساده و / یا غیر مطابقت دارند سرصفحه های ساده ، سپس مرورگر درخواست واقعی را ارسال می کند.

با فرض اینکه سایت A می خواهد درخواست PUT را برای / somePage ارسال کند ، با مقدار غیر ساده نوع محتوا از برنامه / json ، مرورگر ابتدا یک درخواست قبل از پرواز را ارسال می کند:

OPTIONS / somePage HTTP / 1.1 منبع: http://siteA.com روش کنترل دسترسی-درخواست: قرار دهید دسترسی-کنترل-درخواست-عنوان ها: نوع محتوا

توجه داشته باشید که سرصفحه های Access-Control-Request-Method و Access-Control-Request-Headers توسط مرورگر به طور خودکار اضافه می شوند. نیازی به افزودن آنها نیست. این پیش پرواز OPTIONS دارای عناوین پاسخ موفقیت آمیز است:

دسترسی-کنترل-اجازه-مبدا: http://siteA.com دسترسی-کنترل-اجازه-روشها: GET ، POST ، PUT دسترسی-کنترل-اجازه-سرصفحه ها: نوع محتوا

هنگام ارسال درخواست واقعی (پس از انجام پیش پرواز) ، رفتار یکسان با نحوه رسیدگی به یک درخواست ساده است. به عبارت دیگر ، با یک درخواست غیر ساده که قبل از پرواز آن موفقیت آمیز است همانند یک درخواست ساده رفتار می شود (یعنی سرور برای دسترسی به جواب واقعی باید Access-Control-Allow-Origin را دوباره ارسال کند).

مرورگرها درخواست واقعی را ارسال می کنند:

PUT / somePage HTTP / 1.1 منبع: http://siteA.com نوع محتوا: برنامه / json

{"myRequestContent": "JSON بسیار عالی است"}

و سرور یک Access-Control-Allow-Origin را ارسال می کند ، دقیقاً همانطور که برای یک درخواست ساده ارسال می شود:

دسترسی-کنترل-اجازه-مبدا: http://siteA.com

برای اطلاعات بیشتر در مورد درخواست های غیر ساده ، به درک XMLHttpRequest over CORS مراجعه کنید.

در اینجا میتونید جواب سوال رو پیدا کنید

١١ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی انتخاب زبان برنامه نویسی در حوزه شبکه جواب داد.

همونطور که دوستمون @m-javidi گفتند در بحث شبکه آنچنان نیازی به برنامه نویسی نداریم به جز در حوزه اسکریپت ها که در اون مورد زبان های python,C++,C معروف به زبان های اسکریپتی هستند،همچنین در بحث شبکه دوره های network+,sisco,mcse بحث کلی هستند. در اینجا مقاله ای در این مورد هست که میتواند به شما کمک کند

۲۲ دی، ۱۳۹۹

١١ ماه پیش ١۰۰+ امتیاز
@m-p به گفتگوی چگونه در لاراول کلاس شخصی بسازیم جواب داد.

با عرض سلام و خسته نباشید.

مهدی عزیز این موضوع بستگی به نوع کلاس داره،مثلا اگر میخوای controller یا model بسازی،معمول و آسون ترین راه استفاده از دستورات پیشنهادی لاراول هست: به شرح زیر

  • controller :

    php artisan make:controller ProvisionServer

  • model :

    : php artisan make:model Flight

همچنین اگر منظور از ساخت کلاس ایجاد یک helper هست میتونی از پاسخی که دوستان ازطرق composer ارائه کردند استفاده کنی

۳ دی، ۱۳۹۹

١٢ ماه پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم مقاله ای در مورد تغییرات php 8 درست کرد.

با عرض سلام و خسته نباشید خدمت پارس کلیکی های عزیز. ورژن php رو به version 8 آپدیت کردم و شاهد تغییراتی بودم که کمی گیج کننده بود و در اینجا مقاله ای در باره تغییرات به زبان انگلیسی خواندم ،برای مثال متد ‍__autoload() و به جای آن به ‍spl_autoload_register() تغییر پیدا کرده

اولا اینکه نظرتون در مورد این تغیرات چیه و دوما از دوستان نویسنده درخواست دارم یک مقاله به زبان فارسی در این مورد بنویسند.

۱۶ آذر، ۱۳۹۹

١ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم مشکل کار با API در php درست کرد.

با عرض سلام و خسته نباشید خدمت پارسکلیکی های عزیز. من نیاز دارم که برای پلتفرم خودم از یک API استفاده کنم و تا حالا از طریق PHP با API کار نکرده بودم،کد زیر کدی هست که برای تست کردن API نوشتم.


<?php 

    // Api url
    $url = "https://restcountries.eu/rest/v2/all";

    //Initiate cURL.
    $ch = curl_init($url);

    //Tell cURL that we want to send a POST request.
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, ???);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));

    //Execute the request
    $result = curl_exec($ch);
    $response = json_decode($result, true);
    var_dump(json_encode($response));
?>

مشکل اینجاست که این کد هیچگون ریزالتی به من برنمیگردونهResult : string(4) null و من نمیدونم که در قسمت ‍CURLOPT_POSTFIELDS وریبل ورودی(???) چی هست؟؟؟!!!!

  • ریزالتی که ارائه دادم در صورتی هست که یک وریبل وارد کنم نظر دوستان چیه؟؟؟!!!!

۲۰ مهر، ۱۳۹۹

١ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم یک ایده جدید درست کرد.

با عرض سلام و خسته نباشید. در حال حاظر در حال نوشتن یک پلتفرم از نوع کاری Idea هستم و در آخر به اسپانسر برای معرفی به عموم نیازمندم. چندتا مورد توی ذهن خودم بود

  • سپاه
  • شرکت های دانش بنیان
  • حامی دولتی مشاغل جدید

مسئله مهم و گیج کننده خودم اینه که این پلتفرم به راحتی توانایی جهانی شدن رو داره. نظر دوستان در این باره چیه؟؟؟!!!!

یک سوال دیگه هم دارم:

آیا راهی هست که بتونم این پلتفرم رو قبل از ارائه ثبت کنم تا کپی نشه؟؟؟!!!

۱۱ مهر، ۱۳۹۹

١ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی روش کار شرکت‌های برنامه نویسی جواب داد.

با سلام. مکانی که من دارم کار میکنم اولا که اسم ی شرکت به خودمون ندادیم و بیشتر شبیه به تیم هستیم.

  • نکته اول این بود که ساعت کاری قانونی از ساعت ۸ تا ۱۶ بود و کار مفید حدود ۷ ساعت هست،نکته قابل توجه اینه که برامون ساعت کاری مهم نیست و هر وقت که کارمون تموم بشه دست از کد زدن میکشیم بعضی شبا شده خودم تا ساعت ۱۱ شب داخل شرکت بودم بعضی روزها هم ساعت ۱۳ رفتم

  • با توجه به این که همه پروژه ها روی Git یا بقیه ریپازیتوری ها آپلود میشه محل کار مهم نیست ولی توی شرکت تمرکز بیشتری روی کار داریم.

  • چطور نوشت پروژه به خود پروژه بستگی داره بعضی مواقع فقط یک نفر روی پروژه کار میکنه و نوع نوشتن به انتخاب خودمون بستگی داره،اما بعضی مواقع چند نفر روی کد کار میکنند و یا در آینده قراره چند نفر دیگر روی همون کد کار کنند در این مواقع نوع نوشتن کد بستگی به نظر لیدر تیم داره

۲۳ شهریور، ۱۳۹۹

١ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم برنامه نویسی Drone درست کرد.

باعرض سلام و خسته نباشید خدمت امیر عزیز و دوست های پارس کلیکی. یک پروژه مربوط به کد نویسی پرواز هواپیما های بدون سر نشین(Drone) بهم پیشنهاد شده که برای انتخاب زبان برنامه نویسی شک دارم. به نظرتون بین زبان های python و rust کدوم زبان انتخابعاقلانه ای هست؟؟؟!!!

۲ امرداد، ۱۳۹۹

١ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم گرفتن اطلاعات بیشتر از طریق session درست کرد.

با عرض سلام و خسته نباشید خدمت پارس کلیکی های عزیز. در بخش لاگین من مجبورم مثل ی حالت middleware مانند ایجاد کنم که فقط یوزر مورد نظر دسترسی های لازم رو داشته باشه و برای اینکار به محتوای ستون admin نیازمند هستم و میخوام این ستون رو از طریقsession ذخیره شده بگیرم،این session به من آیدی رو میده اما نمیتونم ازش استفاده کنم و ناچارا فعلا admin رو با session میفرستم که امنیتش خیلی پایینه.

  • کد اولیه(دارای ارور)

    function confirm_logged_in_admin(){
        $id = $_SESSION["user_id"];
        $user = select_user_by_id($id);
        if ($user["admin"] == 0) {
            redirect_to("../404.php");
        }
  • ارور

    Fatal error: Uncaught Error: Call to a member function query() on null in /var/www/html/barnelli/includes/functions.php:112 Stack trace: #0 /var/www/html/barnelli/includes/functions.php(174): select_user_by_id() #1 /var/www/html/barnelli/admin/index.php(5): confirm_logged_in_admin() #2 {main} thrown in /var/www/html/barnelli/includes/functions.php on line 112

    ارور ها رو برسی کردم و تنها مشکل واقعی در لاین سوم فانکشن هست.در واقع آیدی رو به varable وارد میکنه اما زمان استفاده آیدی رو بهم نمیده.

۶ تیر، ۱۳۹۹

١ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم Runing php files in the other directorys exept /var/www/html درست کرد.

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

مشکل اینجاست که apache2 آپدیت کردم به نسخه 2.4.41 و از بعد از آپدیت سرور آپاچی

فقط و فقط داخل روت ‍‍var/www/html کار میکنه.

و داخل دایرکتوری های دیگه فایل های phpران نمیشه.

این مشکل رو چطور میشه حل کرد؟؟؟!!!

۴ شهریور، ۱۳۹۸

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی استفاده از ‍‍ubuntu or unix base جواب داد.

باسلام.

از نظر من (طبق تجربه شخصی):

  • مهمترین و اولین فرق unix base با ویندوز اینه که ی سری دخالت های بیجا که سیستم عامل انجام میده رو نداره و دست کاربر رو باز تر گذاشته(برای مثال استفاده کردن از زبان الکسیر در ویندوز از همون اول شروع به نصب به ارور میخوری)
  • فرق دوم اینه که تا حالا آنچنان ویروسی که در سطح جهانی پخش بشه برای unix ساخته نشده(حداقل تا اونجایی که من خبر دارم) در نتیجه نیازی به استفاده از آنتی ویروس های آشغال که سرعت سیستم و کار رو پایین میارن نیست
  • فرق سوم و مهمتر اینه که open source‍‍ هست و هر کسی میتونه به هر شکلی که میخواد شخصی سازیش کنه و همه افراد درش سهیم هستن

۱۷ امرداد، ۱۳۹۸

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی قابل دیدن نبودن بعضی صفحات سایت جواب داد.

@netwons شما میتونید داخل دیتا بیس ی فیلد بسازید که میزان دسترسی های کاربر و ادمین رو مشخص میکنه و بعد میتونید ی middleware بسازید و داخل اون براساس میزان دسترسی صفحه رو نشون بدید و یا کاربران رو ریدایرکت کنید به ی صفحه دیگه(مثلا صفحه 404)

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی Uncaught TypeError در جاواسکریپت جواب داد.

@m-p دلیلش رو پیدا کردم،کد دومی هم اون ارور رو داره ولی ارور نشون داده نمیشه،در واقع دلیل نشون دادن ارور else هست.

 else {
    console.log('error');
}

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی Uncaught TypeError در جاواسکریپت جواب داد.

@amir ممنون از راهنماییتون ولی ی نکته که هست کد زیر دقیقا شبیه همین کد هست ولی هیچگونه اروری ندارد.دلیلش چی میتونه باشه؟؟؟!!!

var request

if (window.XMLHttpRequest) {
  request = new XMLHttpRequest()
} else {
  request = new ActiveXObject('Microsoft.XMLHTTP')
}

request.open('GET', 'data.xml')
// request.open('GET', 'http://localhost:4046/api/values.asmx')
request.onreadystatechange = function () {
  if (request.readyState === 4 && request.status === 200) {
    var items = request.responseXML.getElementsByTagName('name');
    var output = "<ul>";

    for(var i=0;i<items.length;i++)
    {
      output+="<li>"+items[i].firstChild.nodeValue+"</li>";
    }

    output+="</ul>";
    document.getElementById('update').innerHTML=output;
  }
}

request.send()

۱۶ امرداد، ۱۳۹۸

٢ سال پیش ٢۰۰+ امتیاز
@m-p یک گفتگو به اسم Uncaught TypeError در جاواسکریپت درست کرد.

با عرض سلام و خسته نباشید خدمت دوستان گرامی.

چند لاین کد ajax نوشتم که کار میکنه ولی همزمان ارور هم میده.

Uncaught TypeError: Cannot read property 'getElementsByTagName' of null at XMLHttpRequest.request.onreadystatechange

مشکل این کد کجا میتونه باشه؟؟؟!!!

  • ی نکته وجود داره و اینکه این ارور زمانی نمایش داده میشه که قسمت اول شرط request.readyState === 4 && رو برمیدارم،در غیر این صورت فقط error رو لاگ میزنه.
function ajax_XML(){
        var request;
        if(window.XMLHttpRequest){
            request = new XMLHttpRequest();
        }else{
            request = new ActiveXObject('Microsoft.XMLHTTP');
        }
        request.open('GET','ajax.xml');
        request.onreadystatechange = function(){

            if(request.readyState === 4 && request.status === 200){
                var items = request.responseXML.getElementsByTagName('Name');

                var output = "<ul>";

                for(var i = 0;i<items.length;i++){
                    output+="<li>" + items[i].firstChild.nodeValue + "</li>"
                }
                output+="</ul>";
                document.getElementById('ajax_xml').innerHTML=output;
            }else{
                console.log('error');
            }
        }
        request.send();
    }

۱۰ امرداد، ۱۳۹۸

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی تحریم گیت هاب علیه کاربران ایرانی جواب داد.

@amir دلیل اینکه آمریکا و یا هیچ کمپانی نمیتونه بدون زیان کردن اونارو تحریم کنه اینه که به کسی وابسته نیستن،ببینین ما الان هممون عضو یک انجمن برنامه نویس هستیم و همممون کم و بیش مهارت های خوبی داریم،به این نکته فکر کنید که ما قدرت این رو داریم که یک مخزن شبیه به git hub بسازیم،پس چرا اینکار رو نکنیم و خودمون از پلتفرم خودمون استفاده نکنیم،و اینطوری کارها و پروژه هامون هم امن میمونه و همچین ااتفاقی نمیوفته.

اگر هرکدوممون یک گوشه کار رو بگیره به راحتی انجام میشه.
لطفا نظرتون رو در این باره بگید

۹ امرداد، ۱۳۹۸

٢ سال پیش ١۰۰+ امتیاز
@m-p به گفتگوی تحریم گیت هاب علیه کاربران ایرانی جواب داد.

با عرض سلام و خسته نباشید خدمت دوستان، من اینجا تمام بند های تحریم علیه ایران توسط دولت آمریکا ذکر شده و من نتونستم بندی درباره این کار گیت هاب پیدا کنم.

در واقع گیت هاب با بهانه تحریم ها نمیتونه این کار رو بکنه ،و اگر تحریمی در این باره باشه تنها در مورد شرکت ها و موسسه های وابسته به دولت و سپاه هست و نه بیشتر.

من به شخصه این کار رو محکوم میکنم و با راه اندازی کمپین موافقم