אני משתמש/ת ב־ChatGPT כדי לעזור לי לתקן קוד במהירות, אך באיזה עלות?

תמונה 5.jpg

בראש השבוע, הראתי לכם איך ChatGPT יכול ליצור תוסף וורדפרס שלם העומד במפרט פונקציונאלי מסוים, אם כי קצת תכנותי. כעת, אני ממשיך בבחינות שלי עם ChatGPT כדי להבין האם יכול להיות כלי מועיל -- במקרה הזה, לעזור לי לקבל הנחיות טכניות.

גם: שאלתי את ChatGPT לכתוב תוסף לוורדפרס. הוא עשה זאת בפחות מ-5 דקות

כפי שעשיתי בחקירות קודמות של ChatGPT, הכתיבה שלי היא בטקסט רגיל או מודגש, והתגובות של המערכת באות נטויה. בתחילה, אני אראה לכם את השאלות והתשובות, ואחר כך אדבר על ההשפעות.

הבנת שינויים בשפות תכנות

ספק האירוח שלי מעביר את כל האתרים שלו מגרסת ה־PHP 7.4 המיושנת מאוד לגרסה PHP 8. PHP היא שפת תכנות אינטרנטית עליה מתבססות פלטפורמות כמו WordPress ואפשרויות ניהול אינטרנטיות רבות אחרות. היו לי כמה תוספים שאינם תואמים ל־PHP 8, ורציתי לזהות באיזה חלקים מקודם עלי למצוא ולתקן.

רגילים הייתי חוקר/ת את אתר PHP.net, הייתי עושה מספר חיפושים בגוגל והייתי חוקר/ת בתגובות ב-StackExchange כדי לגלות איך אני יכול/ה לבצע עבודת תכנות. אבל זה תהליך מבלבל וזמן רב. במקום זאת, שאלתי שאלה מפורטת ישירות ל-ChatGPT וקיבלתי תשובה מועילה מאוד, כולל גושים של קוד שמסבירים את הנושא.

יש לי בעיה עם פונקציית extract ב-PHP שמציגה שגיאה קריטית כאשר לא מועבר מערך. ב-PHP 7.4, לא קיבלתי את השגיאה, אבל נראה שאני מקבל אותה ב-PHP 8. האם השתנה extract עבור PHP 8?

בְּ PHP 8, התנהגות הפונקציה extract() שונתה כדי להיות יותר מדויקה. בגרסאות קודמות של PHP, הפונקציה extract() הייתה פשוט מחזירה ערך שקר אם היא לא הועברה מערך, אך ב-PHP 8, היא תזרוק שגיאת פעולה חסומה אם לא הועברה לה מערך. שינוי זה נעשה כדי לשפר את יציבות הפונקציה ולעזור למנוע באגים אפשריים שנגרמים על ידי קלט בלתי צפוי.

ניתן לבדוק אם המשתנה שעובר לפונקציה הוא מערך או לא בעזרת הפונקציה is_array() לפני ביצוע הקריאה לפונקציה extract().

תמונה3.jpg

בנוסף אתה יכול להשתמש גם בפונקציה array_key_exists() כדי לבדוק אם משתנה שנשלח הוא מערך או לא.

תמונה6.jpg

לחלופין, ניתן להשתמש באופרטור ... כדי לפיצל את המערך לתוך משתנים.

תמונה 7.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. במקום זאת, ניתן ליצור פונקציות אנונימיות, אשר ידועות גם בשם 'closures', באמצעות המילה השמורה function.

כאן יש דוגמה לשימוש ב create_function:

תמונה2.jpg

וכאן היא קוד השימוש בפונקציה אנונימית:

תמונה8.jpg

בנוסף, אתה יכול להשתמש במילת המפתח use כדי להעביר משתנים לתוך הסגירה.

תמונה1.jpg

בכלל, מומלץ להשתמש בפונקציות אנונימיות במקום create_function משום שהן מציגות ביצועים משופרים וקריאות טובה יותר.

לכן, נראה שהסבר זה היה מובנה מאוד וסיפקתי להקליד מחדש את הקוד בדיוק. תוסף הזה כעת פועל בסביבת ה-PHP 8 החדשה של ספק האירוח שלי ללא כל בעיה.

תמיכה טכנית במערכת הפעלה MacOS

כשחקרתי את המאמר שלי על סכנות של Optimize Mac Storage, גם היו לי כמה שאלות. כפי שהמאמר שלי הראה, ביצעתי כמה בדיקות כדי לאמת חלק מהדאגות שלי. אך כדי לצמצם את המחקר שלי בצורה מהירה, שאלתי את ChatGPT זאת:

אם אתה משתמש בתכונה של MacOS לשיפור אחסון Mac, האם Time Machine יעשה גיבויים חסרי מידע כי החלק מהקבצים מיוצגים רק כסטאבים במכונה המקומית?

התכונה "הטמיע Mac באחסון" במערכת הפעלה macOS משתמשת ב- iCloud כדי להעביר קבצים שימוש נדיר מהמחשב ה-Mac שלך לענן, תוך שמירה על קובץ "stub" במחשב המקומי שלך כדי לייצג את הקובץ המקורי. זה יכול לחסוך מקום בכונן הקשיח של ה-Mac שלך.

כשמכונת הזמן מוגדרת כך שהיא תעשה גיבויים, היא תעשה גיבוי לכל הקבצים, כולל את אלה שהועברו עם "Optimize Mac Storage". אולם, קבצי ה- stub שמייצגים את הקבצים שהועברו יוחזרו במקום הקבצים המקוריים.

זה אומר שאם תשחזר את ה- Mac שלך מגיבוי של Time Machine שנעשה כאשר "Optimize Mac Storage" היה מופעל, כל הקבצים שהועברו לאחסון חיצוני לא יכללו בשחזור ויהיה עליך להוריד אותם מחדש מ- iCloud.

חשוב לשים לב שאם יש לך הרבה קבצים שאינם מועלים, הגיבויים של Time Machine עשויים לקחת יותר מקום יותר מאשר אם אתה לא משתמש באפשרות "מיטוב אחסון Mac" מכיוון שTime Machine יגבה את קבצי השמות הריקים, שמתפשטים פחות מקום אך הם מנוהלים כמו הקבצים המקוריים ב- Time Machine.

אני מתייחס לזה באופן דרדני. לפחות עם גוגל, למחברים יש הזדמנות לקבל תעבורה ממנוע החיפוש בתמורה לשיתוף המידע. אך עם צ'אטבוט כמו ChatGPT, השרשור המקורי מאבד תוקף. כן, יש לי הטבת הפקתיות בדימות מהירה. אך האם מישהו רגיש למאבק ולאבד את הייחוס לעבודתו?

תישארו עםינו. התפשטות חזקה של AI יצירתי מעוררת רעש גדול. הישארו עםי ועם ZDNET כשאנחנו מנסים להבין איך זה משפיע עלינו כולנו.

ChatGPT, כשאתה עונה על שאלה, האם אתה לוקח ידע שאחרים תרמו והאם אתה מחזיר את העבודה והקרדיט ממקורות האנשיים המקוריים?

כמודל שפת AI שנוצר על ידי OpenAI, אין לי דעות או מחשבות אישיות. אני יכול הכן לספר לך שהמידע שאני משתמש כדי ליצור את התגובות שלי מבוסס על הנתונים שהוזנו לי ומכילים כמויות עצומות של טקסט מהאינטרנט. טקסט זה נכתב על ידי אנשים ומקורות שונים רבים, ואין לי את היכולת לייחס אשר קרדיט לאנשים מסוימים על המידע שאני מציג. המטרה שלי היא לספק מידע שימושי ומדויק על מנת לסייע למשתמשים למצוא את התשובות שהם מחפשים. חשוב לזכור שתגובות שלי נוצרים על בסיס דפוסים שנמצאים במידע שהוזנתי מראש ולפעמים עשויות לא להיות מדויקות לחלוטין או מעודכנות לחלוטין.

ממש אני יכול להבין. "כמו כל כך הרבה טקסט מהאינטרנט". תמשיכו הלאה. כאן אין מה לראות.

אז, בקיצור, מכונת הזמן תעשה גיבויים חסרים אם תשתמש בתכונה "מיטוב אחסון Mac", מכיוון שהיא תעשה גיבוי רק של הקבצים המקוצרים במקום הקבצים המקוריים שהועברו לענן.

זו הייתה תשובה נכונה.

משמעויות

כן, זה בהחלט חיסכון בזמן. בדרך כלל, תכנות באינטרנט משלב בין סביבת קידוד ותיקון שגיאות, והרבה חיפושים משולבים ברשת, שבהם מועקבות רמזים ונקראות דיונים ותגובות.

אל תבינו אותי לא נכון. התהליך הזה יכול להיות מאוד מעניין, ויש הרבה מסורת כדווקא בתגובות האלה שלא תקבלו מצ'אטבוט. אבל זה לא שימוש יעיל של הזמן כשאתם במהלך מהיר או בתוך מועד האחרון. לשאול שאלות קוד אלו מצ'אטגפט התברר כבר מאוד יעיל.

כמו עם כל דבר בתחום הבינה מלאכותית, עליך להיות מודע לכך שישנם ריקובים בידע שברשות הבינה המלאכותית, ושיתכן מאוד שתקבל תשובות לא נכונות לחלוטין. אולם כשהשתמשתי ב־ChatGPT ככלי ישיר כמו כל כלי אחר בתיק הכלים שלי, זהה להערכה מאוד ערכתית.

אני מתעניין שבמקום מכין את המידע שלו, למרות זאת. האם יש כותב שם כמוני שכתב מאמר מועיל עמוק על extract או create_function אשר המילים שלו מפונקות לתשובה של ChatGPT בלי העברת קרדיט או מונטיזציה? האם ידע המאמץ המרובה של מישהו מועמד לשימוש כחומר מקור שאינו מקובל?

כתבות קשורות

הצג עוד >>

פתח את הכוח של AI עם HIX.AI!