@avi-rz כתב בבאג: בינה מלאכותית, או לשבור את הראש חצי שעה:
גם מבחינת התוכנה, יש כלים ממש טובים ועקביים.
איזה כלים יש? אני משתמש בGPT החינמי (את שאר הבינות שניסיתי לא אהבתי) אולי בגלל זה אצלי הוא יותר מתקשה?!
@avi-rz כתב בבאג: בינה מלאכותית, או לשבור את הראש חצי שעה:
גם מבחינת התוכנה, יש כלים ממש טובים ועקביים.
איזה כלים יש? אני משתמש בGPT החינמי (את שאר הבינות שניסיתי לא אהבתי) אולי בגלל זה אצלי הוא יותר מתקשה?!
היה לי קוד די מוכן בPHP ואת node אני לא מכיר כמעט, העדפתי להמשיך עם PHP
תודה, התכוונתי מבחינת הMVC וכו', איך עושים את ההפרדה?
עוד פרט, החלק של הPHP זה הליבה הוא מחזיר תשובות גולמיות, מה שיתקשר איתו ויעבד את הנתונים זה node.js, הבנתי שהוא מתקשר טוב עם ימות המשיח.
בקיצור אשמח אם מישהו יכתוב מה הנוהל המקובל בתעשיה.
מתברר שבשביל להיות מתכנת לא מספיק לדעת לכתוב קוד.
@צדיק-תמים כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה?:
ולגבי השאלה המקורית - מקובל לעשות להיפך, לעשות את הולידציה בנקודת הכניסה של הנתונים ולשמור את קוד העדכון עצמו נקי. בכל מקרה אין עניין לעשות אותה בדיקה בשתי מקומות בקוד
השיקול שלי הוא שאם יצליחו להגיע ישירות לקובץ הפנימי, לא תהיה לו שום הגנה.
איך מתמודדים עם זה?
לא יודע מה עשה שם ואיך, הנסיון שלי הראה שכשהתוכנה מתחילה להיות מורכבת הבינה מלאכותית מסתבכת.
אבל עד כמה שהבנתי זה גם בערך הצורה של MVC או Layered Architecture, לא?
די כמו MVC או Layered Architecture
אנסה להסביר.
בהתחלה (אני מדבר על פרויקט קודם, שממנו התחלתי ככה לעבוד) הקוד היה רק העמוד שתכל'ס מבצע דברים, בדוגמא שלנו העמוד deleteAds.php, כשניסיתי לגשת אליו מהדפדפן כדי להשתמש בו (לדעתי במקור הקובץ שלף מידע מהמסד נתונים) קיבלתי שגיאה, בדיקה העלתה שהשגיאה היא שצריך לתת הרשאות גבוהות לuser (הרי בשביל לגשת למסד נתונים צריך לפתוח user עם סיסמא, לא מספיק רק השם של המסד נתונים), ולהשתמש ב% כדי שיוכלו לגשת למסד נתונים גם מחוץ לשרת.
זה לא מצא חן בעיני אז החלטתי להפריד בין המקום שיש למשתמש קצה גישה אליו למקום שמבצע דברים, כך לדעתי הרווחתי 2 דברים:
מקווה שיותר מובן.
ערכתי את ההודעה הקודמת
לדוגמא, הנה 2 קבצים (חלקיים לא צריך את כל הקוד הארוך).
זה המתווך -
main.php
זה המבצע -
deleteAds.php
אני מכיר מחלקות, אבל אני לא רואה איך זה עוזר להפרדת המשתמש מהלוגיקה הפנימית. או שמחלקות בPHP זה שונה מC#?
@dovid לא מכיר תורות מוכנות, אם יש מושגי בסיס שאוכל לחפש אשמח לכמה.
השיקול שלי הוא, שהקוד מורץ בתור API, ואם כל אחד יכול לגשת לAPI בעצמו, זה יצא שגם אצטרך לתת הרשאות גישה למסד נתונים לכל אחד, לא? זה בעצם הסיבה שמלכתחילה התחלתי עם זה, ניסיתי לגשת ישר לAPI וקיבלתי שגיאה של גישה לא מורשית למסד הנתונים, אז אם זה מגיע דרך עמוד מתווך. א. אף אחד לא יודע מה הנתיב של העמוד שעושה בפועל, וככה לא יצליחו לשחק איתו יותר מידי (כמובן שאם יריצו סריקה על השרת יוכלו למצוא הכל, בכל זאת א"א למנוע הכל), וגם אם כן ימצאו עושים עליו הגבלת גישה רק מהIP של השרת עצמו, כך מונעים התקפות עליו ישירות (ברעיון, לא ניסיתי). ב. הגישה היא מהשרת ולא מהמשתמש, ככה לא צריך לפתוח הרשאות מיותרות.
מבחינתי זה נטו בשביל אבטחה.
איזה מבנה לא יעיל? של העמוד חיצוני שמנתב או זה שיש בדיקות בשניהם?
יש לי שני עמודי PHP אחד שניגש למסד נתונים ולא אמור להיות נגיש מחוץ לשרת, ואחד שמקבל נתונים מהמשתמש ומעביר אותם לעמוד הפנימי לפי הנתונים שהוכנסו.
בעמוד הפנימי כמובן יש בדיקה מלאה של הקלט, השאלה אם גם בעמוד החיצוני צריך לבצע את אותן הבדיקות, לכאורה זה סתם קוד כפול, לא?
@avi-rz אני חושב שכל מה שכתבת זה טוב ויפה, פרט לעובדה שאני לא מכיר בינה מלאכותית שיודעת לעשות דברים כמו שצריך.
משהו נקודתי - כן, אבל מערכת מורכבת ממש לא. וגם הנקודתי זה רק משהו קטן, הבינה מלאכותית פשוט בנויה ככה, אני לא מאמין שיבוא יום וזה יהיה במקום מתכנת.
אני נעזר המון בבינה מלאכותית, מצד אחד זה מקל עלי כי אני מתעסק בשפה שאני לא מכיר, ולא כ"כ רוצה ללמוד לעומק. ומצד שני, אני שורף המון זמן על טעויות של הבינה מלאכותית.
בקיצור, זה כלי עזר מצוין, לא מעבר! חשוב שיזכרו את זה!
זו הצעה של GPT
SELECT M.*
FROM Modaot M
WHERE NOT EXISTS (
SELECT 1
FROM ModhaToPhone MT
WHERE MT.ModhaId = M.Id
AND MT.Phone = ?
)
AND EXISTS (
SELECT 1
FROM UserPreference PR
WHERE PR.phone = ?
AND (M.city = PR.city OR PR.city IS NULL)
AND (M.region = PR.region OR PR.region IS NULL)
AND (M.room = PR.room OR PR.room IS NULL)
)
מה אומרים?
@Mordechai-0 מסכים איתך.
אני לא יודע מה לגבי 100,000 שורות קוד, אני לא חושב שהגעתי לזה אי פעם... אף פעם לא הוצרכתי להגיע לכזה דבר, וגם אני די מחלק את זה לקבצים קטנים לדוגמא עכשיו אני בונה מערכת קטנה וחמודה שבה אני צריך לנהל לפחות 3 מסדי נתונים שונים, בכל אחד מהם צריך לקרוא/למחוק/לעדכן/להוסיף שורות למסד נתונים ולמצוא התאמות. אני לא יודע מה מקובל לעשות בתעשיה, אבל לכל פעולה כזו עשיתי קובץ נפרד (PHP) מה שיצר לי כרגע 10 קבצים רק בשביל פעולות אלו חוץ מקובץ לפונקציות עזר וקובץ לקבצי הגדרות. כך שהכי הרבה הגעתי ל150 שורות. בתוכנה אחרת בC# הגעתי ל940 שורות שזה המון בעיני, וגם את זה אפשר בקלות מאוד לחלק לחלקים שהוא יכול לבדוק.
לענינינו, במקרה דנן,לדעתי די קל לבודד את החלקים שיכולים להיות חשודים.
אבל אני מסכים, וגם כתבתי בהודעה הקודמת, צריך להזהר בשימוש בבינה מלאכותית.
הענין הוא שיכולות להיות כמה העדפות, כמו בדוגמא, דירה בירושלים 4 חדרים ובביתר 3 חדרים, זה שתי שורות שונות במסד נתונים.
אם מעניינת אותך תשובת gpt תוכל לראות כאן https://chatgpt.com/s/t_68dafdd51e6081919532a3ac6416e08c
כמובן הוא מחרטט לפעמים אז...
ז"א שאני קודם עושה בקוד
SELECT * FROM ********** WHERE phone = ?
ואז לפי ההעדפות שקבלתי אני עושה AND, לדוגמא אם ההעדפות נשמרות בresult והם דירה בירושלים בשכונה X 4 חדרים ודירה בביתר עילית 3 חדרים אז אני עושה:
SELECT *
FROM Modaot
WHERE NOT EXISTS (
SELECT 1
FROM ModhaToPhone
WHERE ModhaToPhone.ModhaId = Modaot.Id
AND ModhaToPhone.Phone = ?
)
AND (
(Modaot.city = ? AND Modaot.region = ? AND Modaot.room = ?)
OR (Modaot.city = ? AND Modaot.room = ?)
)
?
@dovid כתב בנתקלתי אתמול בבאג חמוד:
@eido כתב בנתקלתי אתמול בבאג חמוד:
יפה.
רק פעם הבאה במקום לבדוק חצי שעה, תכניס את הקוד בGPT, חצי דקה יכתוב בטבעיות את הענין.ההבדל הוא שמי שבודק חצי שעה יהיה מפתח X10.
מי שבודק בGPT הוא בבעיה, כי כשאתה מקבל הכל עם כפית לפה אתה מתקשה להזיז אחר כך את שרירי הלשון, וזה גם בהנחה שכל האוכל הוא טעים ובריא.
מסכים חלקית.
אומרים שללמוד גמרא עם ביאור (לא אנקוב בשמות, זה גם לא משנה, אני חושב שכולם אותו דבר בענין זה, רק אגיד שלא מדובר על רש"י ותוס'. כמובן אני לא מזלזל בזה, לפעמים זה נצרך על אף שלא מומלץ, ההכרח לא יגונה) זה כמו לנסוע עם תוכנת ניווט (כנ"ל) - מגיעים ליעד אבל לא יודעים את הדרך... שזה חבל מאוד, בשתי הדוגמאות...
כאן לדעתי זה שונה, אני לא מתכנת X10 וגם לא שואף לשם, וכל פעם שאני מסיים לכתוב קוד אני נותן לבינה מלאכותית אחת או יותר לעבור על הקוד, אולי פספסתי משהו, אולי טעיתי בהקלדת ושימוש במשתנה (בPHP יש 0 אכיפה ואזהרה לגבי זה אתה יכול לטעות באות אחת ואף אחד לא ידע, בשונה משפות אחרות), או כל בעיה אחרת. אם יש בעיה היא מעדכנת אותי (לפעמים מעדכנת סתם גם כשאין...), ומזה לומדים - אם יש מה ללמוד וזו לא טעות הקלדה - יודעים להבא לא לעשות ככה.
מצד שני, לשאול אותה מראש על כל דבר איך לעשות זה פחות טוב כי ככה באמת לא לומדים, אא"כ שואלים וחופרים מה כל דבר אומר, וגם אז, כמו שאתה אומר לא רגילים לחשוב על דרך פעולה בעצמך שזה גרוע מאוד בעיני.
בקיצור לדעתי צריך לדעת מתי כן ומתי לא, וכמובן מה המטרה שלך, אם המטרה היא רק לסיים את זה ולא להתפתח הלאה אז אפשר לשאול חופשי, חוןץ מלבזבז המון זמן על טעויות שהיא עושה לא תפסיד כלום.