שמירה על ה-global namespace.

כשבונים פלאגינים למערכות קוד פתוח (כמו וורדפרס למשל) או כותבים קוד למערכות שעושות שימוש נרחב ב-JavaScript, חשוב מאוד לשמור על ה-global namespace שלא יוצף ביותר מידי משתנים.
ככה ניתן להימנע מדריסה של משתנים של חלקי קוד אחרים ובטיחותו של הסקריפט נשמרת, שהסקריפט ירוץ כמו שציפינו. אין אנו יודעים אם פלאגין אחר שמישהו כתב משתמש בשמות משתנים דומים לשלנו, צריך להיזהר מזה!
כדי לשמור על ה-global namespace צריך להשתמש בפונקציה אנונימית בתור ה-scoop של הקוד שלנו במקום ב-windows.

למשל:

(function(){
var x = “Hello Anonymous World!!”;
alert(x);
})(); // execute the function!
alert(x); // Error: “x is not defined”

בדרך זו כל משתנה/פונקציה שנגדיר בתוך הפונקציה האנונימית לא יהיה חשוף למחוץ הפונקציה ובכך ה-global namespace לא מזוהם.
אם למשל נרצה להגדיר פונקציה שהשם שלה קיים כבר ב-global namespace נוכל לעשות זאת מבלי לדרוס אותה ומבלי לקבל שגיאה:

function alertMe(str){ alert(str); }
(function(){
function alertMe(str){ alert(”alert: “+str); }
alertMe(”bla”); // will alert “alert: bla”
})();
alertMe(”bla”); // will alert “bla”

אותו הדבר תקף גם למשתנים.

במידה ואנחנו רוצים לשמור מידע ב-global namespace כך שיהיה זמין לכל הסקריפטים באפליקציה נוכל להכניס אותו לתוך אובייקט ה-window שנמצא בסקופ הגולבלי, לכל אובייקט ב-JS ניתן לגשת כמו אל מערך אסוציאטיבי (או Hash Table), נוכל להשתמש בתכונה הזו כאן:

(function(){
window[”something”] = “blabla”;
})();
alert(something);

 

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

VirtualHosts ב-Apache על פורטים שונים.

מזה הרבה זמן שאני רוצה להגדיר מס’ פורטים שאליהם ה-apache יאזין ויביא תוכן מתיקיות שונה בספריית הפיתוח שלי, כך ש-pathים יעבדו לי אותו דבר גם בפיתוח וגם ב-production, שאני אוכל להשתמש ב-mod_rewrite בלי שיעשה לי בעיות ועוד כל מיני בעיות שנתקלתי בהם.

ובא לציון גואל (נו טוב, רק לי), הצלחתי לעשות זאת סוףסוף! מסתבר ש-Apache צריך שיגידו לו שהוא צריך להאזין גם ל-port הנוסף.

כך נראה הפתרון:

 

Listen 81
<VirtualHost 127.0.0.1:81>
ServerAdmin temp@temp.com
DocumentRoot “/home/nir/sites/MyNewSite/”
ServerName www.newsiteport81.com
</VirtualHost>

את השורות האלו ניתן להוסיף ישירות ל-httpd.conf או אם אתם באובונטו אז ל-etc/apache2/sites-available/default/, ונראה לי אני לא בטוח אבל גם ע”י פתיחת קובץ חדש בתיקייה זו זה אפשרי.

שימו לב לשורה המודגשת, השורה שחסרה לי בשנה האחרונה וגרמה לכמה בעיות מעצבנות.