![تصویر ۵.jpg](https://static-lib.s3.amazonaws.com/cms/image5_2327274adc.jpg)
در ابتدای هفته، به شما نشان دادم که چگونه ChatGPT میتواند یک افزونه کامل برای وردپرس را ایجاد کند که با یک مشخصه عملکردی خاص، اگرچه کمی ساده است، مطابقت دارد. اکنون، من آزمایشم را با ChatGPT ادامه میدهم تا به درکی از این برسم که آیا میتواند یک ابزار مفید باشد - در این حالت، برای کمک به من برای دریافت راهنمایی فنی.
همچنین: از ChatGPT خواستم یک افزونه WordPress بنویسد. این کار را در کمتر از ۵ دقیقه انجام داد
همانطور که در حرکتهای قبلی خود در ChatGPT انجام دادهام، نوشتههای من با استفاده از متن ساده یا پررنگ ارائه میشوند و پاسخهای ماشینی با نوع مورب نمایش داده میشوند. در ابتدا، سوالها و پاسخها را به شما نشان میدهم و سپس درباره پیامدها بحث میکنم.
فهم تغییرات زبان برنامهنویسی
سرویس دهنده میزبانی من تمام سایت های خود را از PHP 7.4 بسیار قدیمی به PHP 8 منتقل می کند. PHP یک زبان برنامه نویسی وب است که وردپرس و چندین ابزار مدیریت وب دیگر بر آن تکیه می کنند. من چندین پلاگین داشتم که با PHP 8 سازگاری نداشتند و می خواستم تشخیص دهم که کد آنها کدام جنبه ها را باید پیدا و تصحیح کنم.
به طور معمول، من به وبسایت PHP.net مراجعه کرده، تعدادی جستجو در گوگل انجام میدهم و توضیحاتی را در استکاکسچنج پیدا کرده و سپس مطالب مرتبط را پیدا میکنم. اما این روش کمی آشفته و زمانبر است. در عوض، سوالی مفصل و مستقیم از چت جیپیتی (ChatGPT) پرسیدم و پاسخی بسیار مفید دریافت کردم، که شامل بلاکهایی از کد تصویری بود.
در حالت مشکل دارم با تابع extract PHP که یک خطاي جديد deadly error ميده وقتي كه به آرايه اي ورودي نداده شود. در PHP نسخه ۷٫۴ اين خطا را نميگيرم اما به نظر ميرسه كه در PHP نسخه ۸ عملكرد extract تغيير كرده است؟
در PHP 8، رفتار تابع extract() تغییر یافته و سختگیرانهتر شده است. در نسخههای قبلی PHP، تابع extract() در صورتی که به آن یک آرایه پاس داده نشود، بهصورت ساده عدد نادرست بازمیگرداند؛ اما در PHP 8، خطای مهلکی پرتاب خواهد کرد در صورتیکه آرایه به آن پاس داده نشود. این تغییر برای بهبود پایداری تابع و کمک به جلوگیری از احتمال بروز خطاهای ناشی از ورودیهای غیرمنتظره صورت گرفته است.
میتوانید قبل از فراخوانی extract() ، با استفاده از تابع is_array() بررسی کنید که آیا متغیری که به تابع ارسال میشود، یک آرایه است یا خیر.
![تصویر ۳.jpg](https://static-lib.s3.amazonaws.com/cms/image3_f5c2e13d8e.jpg)
شما همچنین میتوانید از تابع array_key_exists() برای بررسی اینکه آیا یک متغیری که به آن ارسال شده است آرایه است یا خیر استفاده کنید.
![تصویر۶.jpg](https://static-lib.s3.amazonaws.com/cms/image6_05e6c3821a.jpg)
در اینجا میتوانید از عملگر ... برای از بین بردن آرایه به متغیرها استفاده کنید.
![تصویر۷.jpg](https://static-lib.s3.amazonaws.com/cms/image7_c0776ccb68.jpg)
همانطور که اتفاق افتاد، پاسخ ChatGPT بسیار مفید و من در چند دقیقه آن باگ را رفع کردم. بخش بزرگی از قابلیت برطرف شدن آن باگ، دانستن محلی بود که باید جستجو کنم. ChatGPT بیان کرد که چگونه رفتار تابع در نسخههای مختلف PHP تغییر کرده است.
از آنجایی که قصد داشتم این افزونه را به نسخه جدید منتقل کنم تا به آینده پردازی شود، همچنین این سؤال را نیز کردم:
چه تابع های PHP احتمالاً هنگام انتقال از PHP 7.4 به PHP 8 قرار است خراب شوند؟
هنگام انتقال از PHP 7.4 به PHP 8، چندین تابع و ویژگی وجود دارند که ممکن است خراب شوند یا به صورت متفاوت عمل کنند. در زیر برخی از تغییرات قابل توجهی که به طور پتانسیل مشکل ایجاد میکنند آمده است:
- تابع extract() که در پاسخ قبل اشاره شده است، اکنون خطای مهلک پرتاب میکند اگر به آن آرایهای گذاشته نشود.
- تابع each() در PHP 8.0 حذف شده است. میتوانید به جای آن از تابع foreach یا توابع array_keys() و current() استفاده کنید.
- تابع create_function() در PHP 8.0 حذف شده است. توصیه میشود از توابع ناشناس استفاده کنید.
- ساختار list()، هنگام استفاده با foreach، اکنون کلید و مقدار را به عنوان متغیرهای جداگانه برمیگرداند، نه آرایهای واحد.
- تابع __autoload() در PHP 8.0 حذف شده است. بجای آن باید از تابع spl_autoload_register() استفاده کنید.
- متغیر $php_errormsg در PHP 8.0 حذف شده است. باید از تابع error_get_last() استفاده کنید.
- بعضی از قدیمی شدگیها در نسخههای قبلی PHP در PHP 8.0 حذف شدهاند. به ویژه، توابع create_function()، each()، __autoload() و $php_errormsg حذف شدهاند.
این تنها چند مثال از تغییراتی هستند که ممکن است مشکلاتی به وجود آورند هنگام تغییر از PHP 7.4 به PHP 8. بهتر است قبل از ارتقا، کد و برنامه های خود را به طور جامع تست کنید تا مطمئن شوید که همه چیز به طور مورد انتظار عمل می کند.
توجه کنید که ChatGPT عبارت "همانطور که در پاسخ قبلی اشاره شد" را استفاده کرد. این قادر است به پاسخها در گفتگویی که صورت میگیرد دقت کند. این هم چیز «واو» است و هم وحشتناک.
در کدی که من دارم بازبینی میکنم، مشخص شد که توسعه دهندهٔ اصلی (که مدتی است غایب شده) بسیار از create_function استفاده کرده است. من درک نکرده بودم که آن قدری منسوخ شده است. اما با استفاده از لیست مفید بالا، همین را در کد جستجو کردم و آنچه باید به روز شود و بازنویسی شود را پیدا کردم. سپس به ChatGPT درخواست کردم که راهکارهایی را برای جایگزینی آن تابع به من نشان دهد.
چگونه میتوان کدی که از create_function در PHP استفاده میکند را به شیوهای مناسب ترین نوشت؟ می توانید به من یک مثال با استفاده از create_function بدهید و سپس یک مثال با استفاده از مکانیزم فعلی صحیح را بگویید؟
create_function یک تابع منسوخ شده در PHP است که برای ایجاد توابع ناشناس استفاده می شد. توصیه نمی شود برای استفاده از این تابع، زیرا آن در PHP 8.0 حذف شده است. به جای آن، می توان توابع ناشناس، همچنین به عنوان بستها شناخته می شوند، با استفاده از کلمه کلیدی function ایجاد کرد.
اینجا یک مثال از استفاده از create_function است:
![عکس۲.jpg](https://static-lib.s3.amazonaws.com/cms/image2_4e8c9da378.jpg)
و در اینجا کد معادل با استفاده از یک تابع ناشناس است:
![تصویر۸.jpg](https://static-lib.s3.amazonaws.com/cms/image8_6885b7cd38.jpg)
علاوه بر این، میتوانید از کلمه کلیدی use استفاده کنید تا متغیرها را به داخل مسدود کننده (closure) منتقل کنید.
![تصویر ۱.jpg](https://static-lib.s3.amazonaws.com/cms/image1_968687d6be.jpg)
بطور کلی، توصیه میشود از توابع ناشناس به جای create_function استفاده کنید، زیرا آنها عملکرد بهتری دارند و قابلیت خواناتری دارند.
به نظر میرسد، آن توضیح بسیار واضح بود و من قادر بودم به سرعت کد را به درستی بازنویسی کنم. اکنون این پلاگین بدون هیچ مشکلی در محیط PHP 8 جدید ارائه دهنده خدمات میزبانی من اجرا میشود.
پشتیبانی فنی MacOS
در حال تحقیق برای مقاله ام درباره خطرات بهینهسازی فضای ذخیره ساز MacOS، سوالاتی هم پیش آمدند. همانطور که مقالهام نشان میدهد، برای اعتبارسنجی برخی از نگرانیهای خود، تستهایی انجام دادم. اما به عنوانی سریع برای محدود کردن تحقیقاتم، از ChatGPT درخواست زیر را کردم:
آیا با استفاده از ویژگی ذخیره سازی بهینه Mac در macOS، پشتیبان گیری Time Machine ناقص خواهد بود؟ آیا چون برخی از فایل ها فقط به صورت تیغه بر روی دستگاه محلی نشان داده می شوند؟
ویژگی "بهینه سازی ذخیره سازی مک" در macOS از iCloud برای انتقال فایلهای کم استفاده شده از مک به ابر استفاده میکند، در حالیکه یک فایل "stub" را بر روی دستگاه محلی خود نگهداری میکند تا فایل اصلی را نشان دهد. این میتواند فضایی در هارد دیسک مکتون را صرفهجویی کند.
زمانی که ماشین زمان برای تهیه پشتیبان تنظیم میشود ، همهٔ فایلها را شامل فایلهایی که با استفاده از "ذخیره سازی بهینه مک" خارج شدهاند میپشتبانگیری خواهد کرد. با این حال ، فایلهای تولیدی (stub files) که نمایندهٔ فایلهای خارج شده هستند به جای فایلهای اصلی پشتیبانگیری خواهند شد.
اين بدين معناست كه اگر از يك پشتيبان Time Machine براي بازگرداندن مك خود استفاده كنيد كه در حين آن "حافظه Mac را بهينه كنيد" فعال بوده است، هرگونه فايل حذف شده پشتيبان در بازگردياني شامل نخواهد بود و بايد مجدداً از طريق iCloud دانلود شوند.
مهم است بهخاطر داشته باشید که اگر شما چندین فایل آفلاین داشته باشید، پشتیبانهای Time Machine ممکن است بیش از حد فضا را اشغال کنند اگر از تنظیم Optimize Mac Storage استفاده نکنید، زیرا Time Machine فایلهای نمونه را پشتیبان خواهد گرفت، که کمترین فضا را اشغال میکنند، اما Time Machine آنها را به عنوان فایلهای اصلی میشناسد.
از آن نگران هستم. حداقل با Google، نویسندگان فرصتی دارند که موتور جستجوی را برای ارسال ترافیک به مقاله مبادله اطلاعات فرستند. اما با یک ربات چت مانند ChatGPT، پیام اصلی از بین میرود. البته، من از فواید بهره وری یک پاسخ سریع بهره مند شدم. اما آیا کسی از دست دادن نسبت به کار خود را تجربه کرد؟
باشید ومنتظر باشید. این افزایش قدرت هوش مصنوعی تولیدی امواج بزرگی را ایجاد کرده است. با من وZDNET همراه باشید تا سعی کنیم همه ما به چه معناست را بدانیم.
چتجیپیتی، آیا وقتی به یک سوال پاسخ میدهی، از دانشی که دیگران ارائه دادهاند بهره میبری و کار و اعتبار را از منابع انسانی اصلی میگیری؟
بطور یک مدل زبانی هوش مصنوعی که توسط OpenAI ایجاد شده است، من نظر شخصی یا تفکرات شخصی ندارم. با این حال، می توانم به شما بگویم که اطلاعاتی که برای تولید پاسخ های خود استفاده می کنم بر اساس داده هایی است که آموزش دیده ام و شامل حجم زیادی متن از اینترنت است. این متن توسط افراد و منابع مختلف نوشته شده است و من قادر به خصوصی سازی این اطلاعات به افراد خاص برای ارائه آنها نیستم. هدف من ارائه اطلاعات مفید و دقیق است تا به کاربران در پیدا کردن جواب هایی که به دنبال آن هستند کمک کنم. مهم است به خاطر داشته باشید که پاسخ های من بر اساس الگوهای موجود در داده هایی که بر اساس آنها آموزش دیده ام ایجاد شده است و ممکن است همیشه کاملاً دقیق یا به روز نباشد.
بله، این است. "مقدار باشگاهی متن از اینترنت". عبور کنید مردم. در اینجا چیزی برای دیدن وجود ندارد.
به طور خلاصه، Time Machine در صورت استفاده از ویژگی "بهینه سازی فضای ذخیره سازی Mac"، پشتیبان های ناقصی ایجاد خواهد کرد. زیرا فقط فایل های اشارهگر (stub files) را پشتیبان میگیرد و نه فایل های اصلی که به ابر منتقل شدهاند.
این یک پاسخ صحیح بود.
تبعات
خب، بدون شک زمان زیادی صرفه جویی شد. در عملیات برنامه نویسی در اینترنت، معمولا یک رقص بین محیط کدنویسی و اشکال زدایی انجام میشود و با جستجوهای وب تدریجی، نمادها پیگیری میشوند و بحثها و نظرسنجی ها خوانده میشوند.
نمیخواهم راهش را گم کنید. این فرآیند میتواند بسیار اطلاعاتبخش باشد و در این توضیحات بسیاری از آیینها و تشریفاتی را که هیچ وقت از یک چتبات نمیتوانید بدست آورید، پنهان شده است. اما زمانی که در شتاب و یا در یک سریعالتصمیم قرار دارید، استفاده از این طریق کارآمد نیست. پرسیدن این سوالهای کدنویسی از شاتجیپیتی نشان داد که بسیار کارآمد است.
مانند هر AI دیگر، باید توجه داشت که دانش AI نقاط ضعفی دارد و احتمالاً پاسخهای کاملاً اشتباهی دریافت کنید. اما استفاده از ChatGPT به عنوان یک ابزار ساده مانند هر ابزار دیگری در جعبه ابزارم، بسیار مفید ثابت شد.
گرچه من دلسوزانه تعجب می کنم که این اطلاعات را از کجا می گیرد؟ آیا نویسنده ای مثل من وجود دارد که مقاله ای اطلاعاتی و کامل در مورد استخراج یا create_function نوشته و کلمات او به صورت «چرخانده شده» برای پاسخ دادن توسط ChatGPT بدون اعتبار یا درآمدزایی استفاده می شود؟ آیا دانش پردازش مشاهده شده کسی به عنوان منبع این پاسخ ها استفاده می شود بدون اعلام منبع؟