קריקטורה בת >15 שנים. אז, הצהרות מוכנות היו חדשות - לפחות עבור מסדי נתונים בקוד פתוח כמו MySQL וסביבות תכנות כמו PHP. היום, אין באמת תירוץ לזה.
...
זה מבלבל את דעתי שמפתחי אתרים עד היום לא מבינים שיטות עבודה מומלצות בנושא...
וזה רק ילך ויחמיר, ככל שיותר ויותר קוד מופשט למסגרות (שכתוב רע אבל פופולרי) שמנציחות את העשייה בטיפשות, ואין לך מושג שזה קורה עד שמישהו מפעיל פיוזר באחד מהעמודים שלך ומגלה כמה קרוב לשבור הכל.
מקדימים קישורי XKCD המופיעים בתגובות כעת על ידי הכללתם במאמר?
בהתחשב ברקורד הזה, נראה שתגובת האירוע כאן צריכה להיות לתקן את זה, ולאחר מכן לעבוד כדי לחסל אותו מהר ככל האפשר. כל כך הרבה פגמים בהזרקת SQL מצביעים על בעיות בסיסיות בבניית המערכת כולה.
זה מבלבל את דעתי שמפתחי אתרים עד היום לא מבינים שיטות עבודה מומלצות בנושא זה, ומשתמשים במבנים שלוקחים יותר משאבים (מקביעת נתיב זמן ריצה), הם פחות חזקים, וב מסדי נתונים מסוימים, לא מאפשרים לבצע אופטימיזציה של שאילתות אלא אם כן (כמו אורקל) אתה רומז לעזאזל החי מתוך ה-SQL שלך, שהוא פשוט מטומטם - אם אתה יכול לעשות את המאמץ הזה, אתה יכול לעשות תוכניות מתאימות נקשר.
הִיסטוֹרִיָה
MOVEit שוחרר בשנת 2002 על ידי Standard Networks.[13] בשנת 2006, החברה פרסמה אינטגרציה בין MOVEit ו תוכנת אנטיוירוס כדי לעצור את העברת הקבצים הנגועים.[14]Ipswitch רכשה את MOVEit ב-2008 כאשר החברה רכשה את Standard Networks.[15] MOVEit Cloud הוכרז בשנת 2012 בתור א מבוסס ענןהעברת קבצים תוכנת ניהול.[16] MOVEit Cloud הייתה תוכנת העברת הקבצים המנוהלת בענן הראשונה ברמה הארגונית. זה ניתן להרחבה עם ויכול לשתף קבצים ממערכת למערכת, קבוצה או מאדם לאדם.[17]
בשנת 2013, לקוחות MOVEit שוחררו עבור iOS ו דְמוּי אָדָם פלטפורמות. המהדורה כללה אשף תצורה, כמו גם דואר אלקטרוני הצפנה.[1][18]
Ipswitch Analytics שוחרר בשנת 2015 כדי לנטר ולדווח על נתונים באמצעות תוכנת MOVEit. הנתונים האנליטיים כוללים ניטור פעילות ויצירת דוחות אוטומטית. Ipswitch Analytics יכול לגשת לנתונים משרתי העברת קבצים ואוטומציה של MOVEit.[19][20] באותה שנה, Ipswitch Failover שוחרר. התוכנה יכולה לחזור יעדי נקודת התאוששות (RPO) בשניות עם יעדי זמן התאוששות (RTO) של פחות מדקה, מה שמגביר את הזמינות של MOVEit.[21]
אה, זה לא רק Webdevs. עבדתי על תוכניות ג'אווה שהשתמשו ב-StringBuffer/Builder, ותוכניות C שנפרצו לתוך מערכים בגודל קבוע עבור 95% מהשאילתות - עם שאילתה אחת או שתיים עם פרמטרים מפוזרים על ידי אותם מפתחים. יש אנשים שפשוט נראים מתים על הפיכת שאילתות SQLs למסובכות יותר מהנדרש.
מקדימים קישורי XKCD המופיעים בתגובות כעת על ידי הכללתם במאמר?
הבעיה התחילה, כמו שאתה אומר, עם PHP, שלפחות בהתחלה עשה את כל הצהרות ה-SQL בשורה ובאופן דינמי. לא עמדתי בקצב של PHP בכלל, אני מניח שהם אפשרו לעשות דברים כמו שצריך מזמן.
זו לא אשמתו, כמו שיש אומרים, של SQL עצמו. השתמשתי בבסיסי נתונים שהוגדרו עוד בשנות ה-70, והם תמיד החליפו נתונים עם יישומים במארח משתנים, או לפחות מאגרי נתונים ייעודיים בגודל קבוע (IMS למשל, אם כי זה לא יחסי). ולכמה DBMSs, כמו DB2 העתיק כיום, יש הרשאות נפרדות לאפשר כל צורה של SQL דינמי בכלל (מלבד דרך כלי עזר כמו DSNTEP2 ו-DSNTIAUL, למרות שראיתי את אלה שעברו התעללות בדרכם שלהם) ש-DBA יעשה לך את תנועת הירידה אם תנסה לעשות בַּקָשָׁה.
זה מבלבל את דעתי שמפתחי אתרים עד היום לא מבינים שיטות עבודה מומלצות בנושא זה, ומשתמשים במבנים שלוקחים יותר משאבים (מקביעת נתיב זמן ריצה), הם פחות חזקים, וב מסדי נתונים מסוימים, לא מאפשרים לבצע אופטימיזציה של שאילתות אלא אם כן (כמו אורקל) אתה רומז לעזאזל החי מתוך ה-SQL שלך, שהוא פשוט מטומטם - אם אתה יכול לעשות את המאמץ הזה, אתה יכול לעשות תוכניות מתאימות נקשר.
וזה רק ילך ויחמיר, ככל שיותר ויותר קוד מופשט למסגרות (שכתוב רע אבל פופולרי) שמנציחות את העשייה בטיפשות, ואין לך מושג שזה קורה עד שמישהו מפעיל פיוזר באחד מהעמודים שלך ומגלה כמה קרוב לשבור הכל.
... כנראה שאנחנו כבר מטוקנים...
שניידר אלקטריק וסימנס אלקטריק אינן חברות אנרגיה. שניהם מייצרים ציוד המשמש חברות אנרגיה, אבל זה רק חלק מהעסק שלהם.
שדרוג מוצר שנמצא בקטגוריה 2 הוא מאמץ שלוקח זמן ויקר, מה שאומר שזה קורה רק אם חברה נאלצת.
שניידר כן אוהב לדבר על עצמם כעל "חברת אנרגיה", למרות שהם לא מייצרים, מפיצים או קמעונאים כמויות משמעותיות של אנרגיה. (הכי קרוב שהם מגיעים זה כנראה עסקי UPS שלהם, APC).
מקדימים קישורי XKCD המופיעים בתגובות כעת על ידי הכללתם במאמר?
פעם עבדתי באחת ממספר החברות שנבלע על ידי שניידר, אבל העסק שלנו לא היה קשור לאנרגיה.
זו לא אשמתו, כמו שיש אומרים, של SQL עצמו. השתמשתי בבסיסי נתונים שהוגדרו עוד בשנות ה-70, והם תמיד החליפו נתונים עם יישומים במארח משתנים, או לפחות מאגרי נתונים ייעודיים בגודל קבוע (IMS למשל, אם כי זה לא יחסי). ולכמה DBMSs, כמו DB2 העתיק כיום, יש הרשאות נפרדות לאפשר כל צורה של SQL דינמי בכלל (מלבד דרך כלי עזר כמו DSNTEP2 ו-DSNTIAUL, למרות שראיתי את אלה שעברו התעללות בדרכם שלהם) ש-DBA יעשה לך את תנועת הירידה אם תנסה לעשות בַּקָשָׁה.
זה מבלבל את דעתי שמפתחי אתרים עד היום לא מבינים שיטות עבודה מומלצות בנושא זה, ומשתמשים במבנים שלוקחים יותר משאבים (מקביעת נתיב זמן ריצה), הם פחות חזקים, וב מסדי נתונים מסוימים, לא מאפשרים לבצע אופטימיזציה של שאילתות אלא אם כן (כמו אורקל) אתה רומז לעזאזל החי מתוך ה-SQL שלך, שהוא פשוט מטומטם - אם אתה יכול לעשות את המאמץ הזה, אתה יכול לעשות תוכניות מתאימות נקשר.
וזה רק ילך ויחמיר, ככל שיותר ויותר קוד מופשט למסגרות (שכתוב רע אבל פופולרי) שמנציחות את העשייה בטיפשות, ואין לך מושג שזה קורה עד שמישהו מפעיל פיוזר באחד מהעמודים שלך ומגלה כמה קרוב לשבור הכל.
PHP 5 הוסיף מודול MySQLi חדש (משופר MySQL) שאכן תומך בהצהרות מוכנות, PHP 5.5 הוציא משימוש את המודול הישן, והחל מ-PHP 7, מודול MySQL הישן נעלם.
מצד שני, השימוש במסגרות (טובות) יכול לעזור למפתחים להימנע ממלכודות נפוצות. קצת כמו לגלגל את הלוגיקה האריתמטית של התאריך שלך, או קריפטו - השתמש בפתרונות מבוססים ופופולריים. אם אתה מוצא את עצמך נלחם באופן פעיל נגד מה שהספרייה/המסגרת רוצה שתעשה, העריך מחדש את מה שאתה עושה כי במקרה הטוב זה לא יעיל ובמקרה הרע מזיק באופן אקטיבי.
ולהקשר PHP5 היה ארוך בשן (אם כי בשימוש נרחב) לפני יותר מ-10 שנים. אין תירוץ.
...תלמיד ששמו המלא הוא "רוברט'); תלמידי זרוק שולחן;--?" (ללא המרכאות).
מצד שני, השימוש במסגרות (טובות) יכול לעזור למפתחים להימנע ממלכודות נפוצות. קצת כמו לגלגל את הלוגיקה האריתמטית של התאריך שלך, או קריפטו - השתמש בפתרונות מבוססים ופופולריים. אם אתה מוצא את עצמך נלחם באופן פעיל נגד מה שהספרייה/המסגרת רוצה שתעשה, העריך מחדש את מה שאתה עושה כי במקרה הטוב זה לא יעיל ובמקרה הרע מזיק באופן אקטיבי.
בואו נקרא לזה SanitaryString. במקום לאחסן את המחרוזת בצורה מאובטחת בזיכרון כמו ש-SecureString עושה, זה יעזור לאכוף נוהלי מחרוזת סניטריים על ידי מתן אפשרות להקצות רק מקבועי מחרוזת ושאר SanitaryStrings.