שלום אורח התחבר

הבלוג של ינון פרק

טיפים קצרים וחדשות למתכנתים

מעדיפים לקרוא מהטלגרם? בקרו אותנו ב:@tocodeil

או הזינו את כתובת המייל וקבלו את הפוסט היומי בכל בוקר אליכם לתיבה:

במשחקים עם דוקר ראיתי את השורה הבאה בתיעוד שלהם:

$ printf "This is a secret" | docker secret create my_secret_data -

זה דווקא טריק נחמד - הוא אומר שיש לנו תוכנית שמצפה לקבל את הקלט שלה ל STDIN אבל מצד שני אנחנו רוצים להעביר לתוכנית טקסט קבוע. במקום להדפיס את הטקסט לקובץ ולתת לתוכנית לקרוא מהקובץ, אנחנו מדפיסים את הטקסט ישירות באמצעות Pipe ל STDIN של התוכנית.

זה עובד גם מחוץ לדוקר, למשל התוכנית wc יודעת די טוב לספור תווים בשורה שהיא קוראת מתוך STDIN או מקובץ, אבל אם יש לכם ביד טקסט קבוע תוכלו להשתמש ב printf כדי לשלוח אותו ישירות אליה:

$ printf "hello world" | wc -c
11

אז למה printf ולא echo? כי מסתבר ש echo מוסיף תו ירידת שורה לטקסט אותו הוא מדפיס. כך בספירת התווים אנחנו מקבלים:

$ echo "hello world" | wc -c

לכן בדוגמא של דוקר נבחרה הפקודה printf. אם נוסיף תו ירידת שורה שם תו זה יישמר בתור חלק מה Secret ועלול לפגוע בהתנהגות של תוכניות שצריכות את המידע.

נ.ב.1 אז נכון יש דרכים לגרום ל echo לוותר על תו ירידת השורה אבל בכל מערכת יוניקס הדרך היא קצת שונה ויש גם מקומות ש echo לא יקשיב לכם, לא משנה כמה תבקשו.

נ.ב.2 דרך התמודדות אחרת שעוקפת את הבעיה היא למחוק את הרווחים ותווי ירידת השורה כשקוראים Secret בתוכנית שרצה בתוך קונטיינר. אני מעדיף ליישם את שתי השיטות כלומר לשמור את הסוד בלי תו ירידת השורה ולכתוב את התוכנית כך שתהיה מספיק חכמה להתעלם מתווי ירידת שורה ורווחים שאולי נכנסו בטעות.

לקראת הוובינר היום בואו נסכם את עיקרי הדברים שמתוכננים וגם נשאיר משהו כתוב שיהיה קל להיזכר.

המשך קריאה...

דוקר מרגיש לפעמים כמו ניסוי מוזר שיצא משליטה. הוא התחיל כפרויקט פנימי בדוטקלאוד עד שב 2013 הפרויקט הוצג לציבור ושוחרר בקוד פתוח. דוטקלאוד עצמה אגב נסגרה ב 2016, אבל זה לא הפריע לדוקר להמשיך לצמוח ולצבור פופולריות עד היום.

המטרה של דוקר היתה ונשארה הפעלת יישומים על המחשב בצורה מבודדת בתוך מה שנקרא מיכלים (או Containers באנגלית). תוכנית שרצה בתוך מיכל מרגישה שכל המחשב שלה, אבל בניגוד למכונה וירטואלית אין הפרדה אמיתית בין התוכניות וכולן משתמשות בצורה ישירה בחומרה של המחשב המארח. דוקר משתמש במנגנונים מובנים במערכת ההפעלה לינוקס ולכן התחיל שם ורץ שם בצורה טבעית. לימים מייקרוסופט הוסיפה תמיכה מלאה בדוקר למערכת ההפעלה Windows 10 ולכן גם שם אין בעיה, ועל מק דוקר משתמש במכונה וירטואלית של לינוקס כדי להפעיל את המיכלים.

בתוך כל מיכל כזה יושבת תוכנית או אוסף תוכניות שמרגישים בבית. מבחינת התוכנית המיכל הוא העולם כולו והיא יכולה לגשת לכל מקום בעולם הזה, ממש כאילו הפעלתם את התוכנית בתוך מכונה וירטואלית. נו, אז בשביל מה צריך את זה שאלתם? הנה שלוש תשובות:

המשך קריאה...

שמעתי על גיט לראשונה ב 2009 כשאחד החברים לעבודה נכנס למשרד בפנים קורנות לספר שהוא ראה את האור, והאור הזה מתחיל בגימל. אני לא אחד שעף על טכנולוגיות חדשות אז אמרתי לו שנדבר עוד שבועיים כשיעבור לו. אני נשאר עם SVN.

תשע שנים אחרי ועדיין לא עבר לו, וגם אני כבר מזמן מכור.

גיט עשתה שינוי משמעותי קודם כל בזמינות של כלי ניהול גירסאות. לפני שגיט היתה פופולרית מתכנתים רבים הסתבכו עם התקנה של SVN או CVS והעדיפו לוותר על ניהול גירסאות לחלוטין בפרויקטים קטנים. בהיותה מערכת מבוזרת וקלה להתקנה גיט איפשרה לכל אחד לשלב מנגנון ניהול גירסאות גם בפרויקטים הקטנים ביותר.

אבל את היופי האמיתי של גיט מוצאים בפרויקטים גדולים: בזכות היותה מערכת מבוזרת היא מאפשרת לאלפי מתכנתים ברחבי העולם לשתף פעולה בפרויקטים גם בלי ניהול מרכזי. כיום כל עולם הקוד הפתוח כבר מתנהל בגיט וגם פיתוחים רבים בקוד סגור עוברים לשם.

מתכנתים רבים מגיעים ללמוד גיט ומחפשים איך לבצע בגיט את ה-3 פקודות שהם מכירים ממערכת ניהול הגירסאות הקודמת שלהם או דרך Tutorials של "למד את עצמך גיט בעשרים דקות". זה עובד אבל רק חלקית. כשאתם לומדים תוך כדי עבודה ומדלגים על הבסיס התיאורטי וה Best Practices יהיו דברים חשובים שתחמיצו ויהיו דברים שוליים שתקחו יותר מדי ללב.

בוובינר שהעברתי לא מזמן על גיט עלו מספר שאלות מרתקות שהזכירו לי כמה חשובה ההבנה של הכלי בשביל להבין את הפקודות ומתי להשתמש בכל אחת.

בקורס הזה החלטתי לקחת גישה שונה ממה שרוב הקורסים בנושא git לוקחים: במקום ללמד אתכם כמה שיותר מהר איך להסתדר עם הכלי אני רוצה ללמד אתכם כמה שיותר לאט איך להבין את הכלי. אני רוצה לתת לכם את הכלים להבין מצבים מסובכים ולהיות מסוגלים לצאת מהם בלי לעשות נזק ולהבין את שיטות העבודה המקובלות כך שתוכלו לבחור דרך שמתאימה לכם ולפרויקט שלכם.

התוצאה היא קורס גיט מקיף שמתחיל מההתחלה ובונה לאט את ההיכרות עם הפקודות השונות והיכולות השונות של הכלי. זה הקורס שאם הייתי מתחיל ללמוד גיט ממנו היו נחסכות לי הרבה טעויות והרבה תיסכולים.

אני בטוח שתהנו מהקורס ומקווה שתבחרו להצטרף. אם אתם מנויים לאתר יכולים כבר עכשיו להיכנס ולראות את התכנים. אם לא יכולים להצטרף כמנויים או לרכוש רק קורס זה בתשלום חד-פעמי. זה הקישור לקורס עם הסילבוס המלא וכפתור הצטרפות:

https://www.tocode.co.il/bundles/git

נתראה שם, ינון

עכשיו שאתם כבר יודעים איך להתקין שרת שלכם בענן אפשר להשתמש בו כדי לגבות את כל המיילים שלכם מג'ימייל (או כל שירות מייל אחר). מסתבר שזה אפילו די פשוט.

המשך קריאה...

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

https://www.tocode.co.il/workshops/41

המשך קריאה...

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

המשך קריאה...

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

המשך קריאה...

סקריפטים ב Bash הם דרך פשוטה לתת למחשב לעבוד בשבילכם. לאחרונה התווספה ל Windows תמיכה מלאה בכל פקודות לינוקס כולל Bash ולכן קל להריץ אותם על כל מערכות ההפעלה. והחלק הכי טוב - סקריפטים ב Bash משתמשים בכל הכלים שאתם כבר מכירים מעבודה שוטפת בלינוקס.

המשך קריאה...

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

המשך קריאה...