ערכתי את ההודעה הקודמת
לדוגמא, הנה 2 קבצים (חלקיים לא צריך את כל הקוד הארוך).
זה המתווך -
main.php
זה המבצע -
deleteAds.php
אני מכיר מחלקות, אבל אני לא רואה איך זה עוזר להפרדת המשתמש מהלוגיקה הפנימית. או שמחלקות בPHP זה שונה מC#?
ערכתי את ההודעה הקודמת
לדוגמא, הנה 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 אכיפה ואזהרה לגבי זה אתה יכול לטעות באות אחת ואף אחד לא ידע, בשונה משפות אחרות), או כל בעיה אחרת. אם יש בעיה היא מעדכנת אותי (לפעמים מעדכנת סתם גם כשאין...), ומזה לומדים - אם יש מה ללמוד וזו לא טעות הקלדה - יודעים להבא לא לעשות ככה.
מצד שני, לשאול אותה מראש על כל דבר איך לעשות זה פחות טוב כי ככה באמת לא לומדים, אא"כ שואלים וחופרים מה כל דבר אומר, וגם אז, כמו שאתה אומר לא רגילים לחשוב על דרך פעולה בעצמך שזה גרוע מאוד בעיני.
בקיצור לדעתי צריך לדעת מתי כן ומתי לא, וכמובן מה המטרה שלך, אם המטרה היא רק לסיים את זה ולא להתפתח הלאה אז אפשר לשאול חופשי, חוןץ מלבזבז המון זמן על טעויות שהיא עושה לא תפסיד כלום.
טוב, יש עוד פרט.
אני צריך גם שיהיה סינון ולא כל ההודעות יושמעו, יש עוד טבלה שבה ההעדפוץ של כל אחד, לפי עיר/עיר+שכונה/עיר+שכונה+רחוב.
איך משלבים את כל הסיפור הזה ביחד?
יש לי קוד מושך את כל ההעדפות של המאזין
SELECT * FROM ********** WHERE phone = ?
(כמובן זה קובץ בפני עצמו יש בדיקות לפני ואחרי, וכל שאר המימוש, זה רק הקוד הרלוונטי).
האם צריך לקרוא לזה ולפי מה שמתקבל לבנות שאילתות או שיש דרך לשלב הכל בבת אחת.
יפה.
רק פעם הבאה במקום לבדוק חצי שעה, תכניס את הקוד בGPT, חצי דקה יכתוב בטבעיות את הענין.
מצוין, תודה רבה!
וואי, זה מעיק כל הענין של אישורי הפוסטים.
מתי מסיימים עם זה?
תודה.
אז אם אני מבין נכון, כל עוד זה לא מערכת גדולה ומורכבת, הסגירה הזו בסדר?
קיבלתי.
ולעצם הענין, האם יש טעם בטענה שסגירה כזו:
if (isset($stmt)) {
$stmt->close();
}
$conn->close();
עלולה להוות בעיה או לא?
אז אתה (ראיתי שגם dovid הסכים איתך) אומר שכל הסגירה בכלל מיותרת?
זה ענין של לדעת, נכון או לא נכון, לדעתי כותבים קוד נכון גם אם זה לוקח יותר זמן.
שחרור משאבים, ככה אומרים.
הענין הוא שהשיטה הזו נראית לי מקובלת ובסדר גמור
if (isset($stmt)) {
$stmt->close();
}
$conn->close();
אבל הבינה מלאכותית כל פעם צועקת שאם יש תקלה והחיבור בכלל לא התחיל זה יגרום לשגיאה וקריסה וכו'. מזה כמובן אני רוצה להמנע. אז היא מציעה את הפתרון שלה, שזה הוספת 2-3 מילים בסה"כ, שזה לא שינוי משמעותי אבל אני לא אתחיל לשנות דברים רק בגלל שהיא אמרה... אני יודע מנסיון שהבינות המלאכותיות כולן (מי שניסיתי לפוחות) לפעמים מבלבלות את השכל וממציאות דברים שלא היו ולא נבראו, ולכן חשוב לי לדעת מאנשים אמיתיים שיודעים מה שמדברים.