רברס עם פלטפורמה

299 Fogcast 25 - Package managers


Listen Later

אנחנו בפרק 299, ה 19 למרץ 2016. בפרק זה רן וליאור מדברים על Package Managers 1:16 - תקציר הפרק על AWS Lambda, ו Serverless architecture. רן בונה Web Crawler ולבסוף החליט שלא להשתמש בשירות של Lambda. הרושם חיובי, אבל חסר למערכת בגרות בשליטה על התהליך. 4:16 - בסביבות רבות כגון  Node.js, Rails יש חשיבות עליונה ל Package Managers. ב״עולם הישן״ של C++ , לא היו Package Managers ותחזוקת גרסאות של ספריות בתוך פרוייקט הייתה מטלה כבדה ומייגעת. 5:30 - יש להבדיל בין סוגי ה Package Managers השונים. למפתח מדובר בהתקנת ספריות (למשל ב Node.js, Ruby). לעומת זאת בעולם ה Infrastructure, מדובר בהתקנת Executables על הוסט מסויים למשל apt, yam. 6:15 - הגדרה - Package Manager מאפשר משיכת חבילה, לשלוט בגרסא הנמשכת, לעדכן את הגרסא, ולטעון את כל ה Dependencies -חבילות אחרות בהן החבילה המבוקשת תלויה (התלויות שלהן). כמשתמש הציפייה היא לבקש חבילה מסויימת ושכל ההליכים הנלווים יהיו מנוהלים אוטומטית. 7:53 - נושא ניהול החבילות הדינמיות תמיד היה בעייתי. בעבר DLL Hell היה אתגר נפוץ באקוסיסטם של מערכות הפעלה Windows. הקונספט שנועד לחסוך בשטח אחסון במחשב אפשר להוריד חבילה מסויימת ולהשתמש בה במגוון תוכנות במחשב. ה״גהינום של ה DLL״ החל כאשר תוכנות שונות השתמשו בגרסאות שונות של אותה חבילה, אך החבילה הייתה מותקנת אך ורק בגרסא אחת. 9:17 - הבעיה קיימת בעוד סביבות כמו Java או לינוקס גם כיום. 10:04 - בעיית ה Versioning היא יחסית פתירה כבעיה טכנית, ובסביבות שבהן נבנה Semantic Versioning מהיסוד של הטכנולוגיה, יש סדר יחסי. דוגמאות מוצלחות הן Node.js, ROR, אבל גם טכנולוגיות אחרות מתחילות להדביק את הפער. 12:38 - ה Package Manager מאפשר שליטה במה שמשתמשים בו בפיתוח ובפרודקשן. 12:47 ה Package Managers לפי סביבות הם : Node.js - NpmRuby - GemPython - pipJava - Maven           לכל שפה או טכנולוגיה כבר יש Package manager, אפילו ישנות כמו C. 13:21 - מספרי גירסאות מנוהלים ע״י Semantic Versioning - שלוש המספרים של גרסא. המספר הראשון הוא ה Major release - משתנה בד״כ אחת לכמה שנים. המספר השני מבטא שינויים ב API ויכול להגיע גם למאות. הנקודה האחרונה מבטאת שינויים שלא אמורים להשפיע על ה API, למשל תיקוני באגים. 15:44 - אין מעקב ריאלי או אכיפה אחרי שינויים הגרסאות - זה מערב פרוע. בפריימוורק אחד טוענים שיש אכיפה סביב הנושא והוא ELM (פריימוורק פרונט אנד לווב). 16:44 - מודל ה Semantic versioning איננו מושלם. יתכנו שינויים בתוצאות שמחזירות פונקציות מבלי לשנות את חתימתן, וכך לעקוף את מנגנון האכיפה. 17:24 - איך נמנעים מבעיית הגרסאות השונות בפרויקט אמיתי במצב בו ספריות ה Dependencies משתמשות באותה ספריה, אך בגרסאות שונות ולא תואמות? ב Java זה יכול להיות סיוט ואף ליצור בעיות רק בזמן ריצה. עם קצת מזל מוצאים גרסא שמתאימה לכל הדרישות אך זה ידני. החלופה השניה היא שימוש ב OSGI להכלה של חבילות, אך גם זה תהליך לא נעים. 19:57 - אלטרנטיבה לפתרון היא השמה של החבילות בצורה מקבילה כך שכל חבילה מבודדת את החבילות שבה היא תלויה, זה בזבזני באחסון וזכרון, אבל לא משמעותי ביחס ליתרון. נעשה שימוש בשיטה זו ב NPM מעל Node.js. 21:36 - בעולם ה Java זה לא ממש אפשר מפני שצריכת חבילות הוא לפי שם ה Class וכך אי אפשר ליצור את הבידוד. כשכתבו את Java לא היו מודעים לקיום הבעיה, והטכנולוגיות המודרניות כבר לקחו את המכשולים הללו בחשבון. 22:42 - הבעיות הללו היו פתירות ב C++ וגם Java, אבל דורשות מעקפים ״מלוכלכים״ של עריכת הקוד בחבילות הנדרשות והקוד שאותו צורכים. 24:38 - הבעיה קיימת גם בפייתון עם Hacks כמו טעינה דינמית או שינוי Path. 26:00 - באקוסיסטם של GO, יש חידוש בתחום ה Deployment - הקומפילציה נעשית ביחד עם ״משתני הסביבה״, ויוצרת Executable בודד כך שאפשר בקלות יחסית להעלות לשרת ללא תלויות. 27:31 - קול קורא: ישנה בעיה כיום של תקשורת ״דו-כיוונית״. המשתמש בחבילה צריך לדאוג לעדכן את החבילה בעצמו, ואילו אם כותב החבילה מתקן באג קריטי, אין לו יכולת ״להודיע״ למשתמשים בחבילה שעליהם לעדכן. דמיינו את העדכונים במערכות ההפעלה - היה טוב לו הייתה יכולת זו (לדחוף תיקונים ב Push) גם בעולם החבילות וה Package Managers. 29:21 - למאזיני פודקאסטים שאוהבים מדע בדיוני - ממליצים על  Escapepod. הקובץ נמצא כאן, האזנה נעימה ותודה רבה לשי על התמלול
...more
View all episodesView all episodes
Download on the App Store

רברס עם פלטפורמהBy Ran Tavory && Ori Lahav

  • 4.4
  • 4.4
  • 4.4
  • 4.4
  • 4.4

4.4

5 ratings


More shows like רברס עם פלטפורמה

View all
גיקונומי by ראם שרמן ודורון ניר

גיקונומי

90 Listeners

עושים חשבון Osim Heshbon by רשת עושים היסטוריה

עושים חשבון Osim Heshbon

21 Listeners

עושים היסטוריה עם רן לוי Osim Historia With Ran Levi by רשת עושים היסטוריה

עושים היסטוריה עם רן לוי Osim Historia With Ran Levi

163 Listeners

חיות כיס Hayot Kiss by כאן | Kan

חיות כיס Hayot Kiss

141 Listeners

עושים טכנולוגיה עם ד״ר יובל דרור I רשת עושים היסטוריה by רשת עושים היסטוריה

עושים טכנולוגיה עם ד״ר יובל דרור I רשת עושים היסטוריה

38 Listeners

מנועי הכסף by כלכליסט

מנועי הכסף

36 Listeners

חצי שעה של השראה עם ערן גפן by חצי שעה של השראה עם ערן גפן

חצי שעה של השראה עם ערן גפן

12 Listeners

מה יש בזה by קובי מלמד ואלעד יצחקיאן

מה יש בזה

49 Listeners

האינטרסנטים by TheMarker

האינטרסנטים

82 Listeners

בזמן שעבדתם by mako מאקו

בזמן שעבדתם

94 Listeners

אחד ביום by N12

אחד ביום

308 Listeners

מפלגת המחשבות by Beit Avi Chai

מפלגת המחשבות

95 Listeners

הפודקאסט של נדב פרי by All•in & Nadav Perry

הפודקאסט של נדב פרי

50 Listeners

פשוט AI by Benny Farber

פשוט AI

13 Listeners

הקרנף - עם יואב רבינוביץ׳ by בית הפודיום

הקרנף - עם יואב רבינוביץ׳

24 Listeners