
process ומכיל את משתני הסביבה של המחשב.set מגדירה משתנה רק לחלון הפקודות הנוכחי.הטקסט המלא של הדקות הראשונות בהרצאה «משתנה סביבה - Environment variable» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לנושא שנקרא configurations, כלומר תצורות או תצורה מסוימת שאנחנו רוצים להגדיר במערכת שאנחנו בונים. כאשר אנחנו מפתחים מערכת, קליינט או סרבר, יש כל מיני הגדרות שאנחנו רוצים לתת לכל מיני דברים במערכת, שיכול להיות שעם הזמן אנחנו נרצה לשנות אותם או לבצע קונפיגורציה עבורם.
דוגמה לכך יכולה להיות נתיב לקובץ מסוים שאני רוצה לפעמים לשנות את הנתיב הזה. דוגמה אחרת יכולה להיות שמשתמש של כניסה כללית למערכת לא user name של מי שמשתמש במערכת לא של הלקוח קצה אלא נניח משתמש של כניסה לדאטאבייס.
דוגמה אחרת יכולה להיות אולי איפה הדאטאבייס נמצא באיזה מחשב הוא נמצא אז יש כמה אפשרויות להגדיר תצורות במערכת של Node.js ובנושא הזה אנחנו נעבור ונראה כמה אפשרויות בשביל לבצע את זה.
האפשרות הראשונה נקראת Environment Variables. אנחנו בעבר ראינו שיש את, בוא נרצה קונסולוג, יש את האובייקט הראשי גלובל ויש בו פרוסס ובתוכו יש משתנה שנקרא env קיצור של environment.
הדבר הזה זה אובייקט מאוד גדול, בואו רגע נריץ ונראה שהוא נותן לי אובייקט מסועף שיש בו הרבה משתנים של הסביבה.
מה זה משתני סביבה? משתני סביבה זה משתנים שמוגדרים במערכת ההפעלה ואנחנו יכולים דרך המשתנה הזה להשתמש בכל מיני משתנים כאלה, זה חלק מההגדרות אולי שאנחנו צריכים להשתמש בהם.
בואו נראה כמה מהם. לדוגמה אנחנו רואים מהו הדרייב הראשי נקרא home drive. בואו ניגש ונציג מספר אלמנטים כאלה. דבר נוסף יכול להיות לנו בואו נחפש פה איפה הOS אנחנו רואים פה את הOS דבר נוסף שאנחנו יכולים להשתמש בו זה איפה היא תיקיית הפורוגרם פיילס בדיוק איפה יושבת במחשב.
נעלם לי פרוגרם פייל אז רגע זה קופץ לי פה פרוגרם פיילס קונטרול סי פה זה מה שרציתי דבר נוסף יכול להיות שאנחנו רוצים איזושהי טמפ דירקטורי בשביל סתם לשמור קבצים זמניים שאני רוצה להיפטר מהם מהר מאוד באיזה שפה מהי השפה הנוכחית שכרגע קיימת במחשב שהמחשב תומך בה אז אנחנו רואים שיש לנו
כל מיני תצורות כלליות של המערכת, בואו נריץ עוד פעם, ונראה שהצלחנו להגיע לכל מיני הגדרות כלליות של Environment Variables.
אבל יש עוד שימוש מעניין ב-Environment Variables. השימוש שאנחנו הולכים לראות עכשיו מאפשר למי שמריץ את התוכנית, במקום זה שמפתח את התוכנית, להגדיר הגדרות מסוימות.
בוא נניח שאני בתור זה שבונה את התוכנית, אני כרגע המתכנת, אני רוצה שיהיה לי איזשהו שם של קובץ עבור שמירת קבצי לוג. הרבה פעמים בפרויקט אנחנו שומרים קבצי לוג, יומן.
זה אומר שאם מתרחשים כל מיני דברים בתוכנית אנחנו רוצים לתעד אותם, יוזר אולי עשה איזה משהו וגרם לתוכנית לקרוס, אני רוצה לתעד את זה.
אז אני רוצה שיהיה לי איזשהו log file name. אוקיי ואם אני עכשיו בא ואני אומר שאני רוצה שיהיה לי בקונן C איזשהו איזושהי תיקייה נניח פרוג'קטס ובתוך פרוג'קטס אני רוצה שיהיה לי לוג פולדר ובתוכה אני רוצה לשמור את הקבצים שלי אוקיי נניח שזה בעצם רק לוג פולדר בוא נניח ככה פה אני רוצה לשמור את קבצי הלוג את היומן אז אם אנחנו עושים דבר כזה בואו רגע נציג
אותו קונסול לוג לוג פייל נקרא לזה פייל לוקיישן בעצם לוג פייל לוקיישן זה המיקום של כל קבצי הלוג שאנחנו רוצים אם אנחנו נריץ את זה כרגע בואו רגע ניפטר מאלה אנחנו בעצם נראה שיש לנו את המיקום הזה מה הבעיה הבעיה שמי שכתב את זה זה המתכנת אז מה יכולה להיות הבעיה
יכול להיות שמי שרוצה להריץ את המערכת לא רוצה להיכנס לקוד ולהתחיל לשנות דברים בקוד בצורה כזאת. יכול להיות שהוא רוצה מבחוץ לבצע הגדרה והיא תשפיע על תצורות מסוימות.
זה יכול להיות זה שכרגע מריץ את המערכת, זה יכול להיות מי שאחראי על הסרוור, זה יכול להיות מי שאחראי על המכונה של הסרוור, אולי מי שבעצם אחראי על המכונה עצמה, על המחשב של הסרוור הוא זה שרוצה להגדיר איפה בדיוק לשמור את קבצי הלוג.
אז כמובן שהוא לא רוצה להיכנס עכשיו לקוד שלנו ויכול להיות בכלל שאין לו גישה לקוד כי העלינו לסרבר את כל הקוד בצורה שהיא מעורבלת או בעצם העלינו איזשהו קובץ שהוא קובץ הערצה מסוים אולי.
יש כל מיני מקרים שאין לו בכלל גישה לקוד עצמו וגם אם הוא ילך וישנה את זה אולי אני לא רוצה שאף אחד ייגע לי בקוד. אז יש כל מיני מקרים של תצורות כאלה כלליות שאני רוצה שמי שמריץ את המערכת יקבע אותם.
איך אנחנו משתמשים בזה? על ידי Global Process Env. אז בואו נעשה כזה דבר. בואו נגדיר שבגלובל פרוסס Env קיים לנו איזשהו משתנה שנקרא Log Files Location.
אז אני בא ואני אומר אוקיי אני יוצר משתנה Log Files ובואו נעשה אותו באמת עם let ונגדיר אותו בצורה כזאת. אני מכניס לתוכו, נעשה את זה ככה.
אני בודק קודם כל האם בתוך environment קיים log files, נקרא לזה לוקיישן, נשאיר עם אותו השם לוקיישן. אם כן, אז בתוך המשתנה log files לוקיישן הזה אני רוצה לשים את מה שקיים פה.
דרך אגב, אמרנו כבר בעבר, אנחנו לא חייבים לרשום את השם גלובל בכל מקום, נכון? בואו רגע נוריד אותו