פייתון למהנדסים - קורס 65,000 שפשוף. מ-Slurm, אימון 3 חודשים, תאריך 15 בינואר, 2024.
Miscellanea / / November 27, 2023
Techlead, מהנדס נתונים ב-Skyeng / לשעבר Slurm, ISPsystem, Grid Dynamics
האב מהנדס תוכנה ב-Test, Auriga, לשעבר ISPsystem
מס' 1: תחביר ומבנים בסיסיים של פייתון
למה: ללמוד להבין את ההיגיון של תוכניות Python, כמו גם כתיבת תוכניות פשוטות, היא המשימה החשובה ביותר. "נהדר" אם אינך מכיר את תחביר Python.
- סוגי נתונים ומשתנים, סוגי נתונים ניתנים לשינוי/בלתי ניתנים לשינוי ופשוט/מרוכבים, טכניקות איתור באגים.
- משפט מותנה - אופרטורים לוגיים, תנאים פשוטים, תנאים מקוננים והחלפת משפט מתג.
- לולאות בסיסיות - בעוד ועבור לולאות, איטרטורים, פסיקות לולאה.
- פונקציות, שיטות מחרוזות, רשימות ומילונים.
- יצירה וטיפול בחריגים.
תרגול: סט של מיקרו משימות קטנות לכל שיעור.
#2: מיומנות פיתון משופרת: אופטימיזציות ו-OOP
למה: בואו נשלוט בתכונות של Python - בזכותם זה כל כך פשוט ופרקטי. נחשוף גם את המשמעות של שלוש האותיות הללו (אנחנו מדברים על OOP) ללא תיאוריה אקדמית ועם מטרה ברורה
- עבודה מתקדמת עם לולאות - הצהרת תשואה ומחוללים, תובנות לגבי לולאות ב-Python, משפט אחר בלולאה, אופטימיזציה של לולאות הבנה וכו'.
- סוגים מיוחדים של מבנים: frozendict, defaultdict וכו'.
- מושגי OOP בסיסיים: מחלקות, מופעי מחלקה, אנקפסולציה, ירושה ופולימורפיזם.
- יצירת מנהלי הקשר עבור הטיפוסים שלך: עם המבנה.
תרגול: סט של מיקרו משימות קטנות לכל שיעור.
תרגול מתקדם: ביקורת שימוש בשירות.
ה-CTO החל לחשוד שחלק מהשירותים כבר לא בשימוש על ידי הצוותים. הבעיה היא שהמודול לניטור שירותים משומשים לא עודכן בעשר השנים האחרונות: הוא לא יכול להעלות נתונים מצטברים, והפורמט של הערכים המוחזרים אינו תואם לאלה המקובלים תקנים. אתה נבחר לחלץ את המדדים שנלכדו, לצבור אותם לפי סוג וצוות, ולספק מידע זה ל-CTO לצורך הערכה ראשונית של היקף הבעיה.
#3: חיבורי רשת
למה: כמעט לכל שירות יש ממשק לחיבור באמצעות פרוטוקול רשת כלשהו. ובלי קשר, אינטראקציה בלתי אפשרית. למרבה המזל, למערכת האקולוגית של Python יש מודולי לקוח כמעט לכל פרוטוקול.
- חבילת Pip והתקנת מודולים של צד שלישי.
- מודול Paramiko לביצוע פקודות באמצעות ssh.
- מודול הבקשות לביצוע בקשות HTTP.
- סקירה כללית של מודולים לעבודה עם מסדי נתונים ומתווכי הודעות.
תרגול. צוות הפיתוח מציג מתודולוגיה חדשה: אם תאפשר להתרחש התראה, תקבל משימה. תת-המערכת האנליטית מחפשת רק שגיאות נבחרות ושולחת עליהן הודעות למתווך ההודעות של קפקא. המשימה שלך היא להשלים את מעגל החזרת הבאגים למפתחים: הצרכן שלך צריך ליצור באופן אוטומטי משימות עם התיאור והעדיפות הנדרשות ב-Trello.
מס' 4: עבודה עם טקסט בפורמטים שונים
למה: חיבור לשירות הוא רק חצי מהקרב. החצי השני הוא שיתוף מידע. ומידע הוא לעתים קרובות קבוצה של תווי טקסט בפורמט מסוים. מודולים יעזרו לך לפענח ולקודד. לא צריך את כל המידע? ביטויים רגולריים יעזרו לך לחלץ את מה שחשוב ולבטל את השאר.
- המודול מחדש והביטויים הרגולריים.
- מודולים לעבודה עם נתונים בפורמטים שונים: ערכים מופרדים, json, yaml, xml.
- שימוש בארגומנטים של שורת הפקודה: מודול argparse.
תרגול: יצירת מקור לנתוני שימוש בשירות.
במהלך הביקורת על השימוש בשירותים זיהית מידע חשוב לעסק, אפילו המנכ"ל התעניין. הוחלט לנתח את הכסף האבוד ולא לאפשר למצבים כאלה לקרות שוב. לשם כך, עליך לתת לאנליסטים כלי לרכישת נתונים כדי שיוכלו להכין דוחות. הבעיה היא שמודול הניטור מחזיר מגבלות שירות עבור בקשה נפרדת בפורמטים של yaml, ומחירי השירותים מוחזרים על ידי מערכת החיוב בפורמט xml. יש צורך לשלב נתונים על העומס הנוכחי עם מגבלות ומחירים. מחלקת הניתוח ביקשה מידע מצטבר בפורמט JSON עם יכולת לציין מרווח זמן ושלב צבירה.
מס' 5: אינטראקציה עם מערכת ההפעלה
למה: אין צורך להסביר יותר את חשיבות האינטראקציה עם מערכת ההפעלה. כיצד לחבר אותו עם Python נמצא בשיעור זה.
- קריאה וכתיבה של קבצים.
- os module - קריאת משתני סביבה, עבודה עם ספריות וזכויות, עבודה עם תהליכים.
- מודול תת-התהליכים לאינטראקציה אינטראקטיבית עם תהליכים.
תרגול: אספקה אוטומטית של גישה לשרתים.
במהלך הקמפיין לנטישת שירותים שאינם בשימוש, נוצר מצב מוזר: שרת מכולת צוותים נסגרו, אך צוות התשתית השתמש בו מעת לעת כמארח עבור הַצָגָה. התברר שצוות המוצר לא השתמש בו כי מדי פעם מישהו היה מחליף את ההגדרות שלו עם ההגדרות שלו. הוחלט שכעת המשאב יוקצה רק לחברי צוות אחד, ואוטומציה תעזור למנוע טעויות. אתה, כמי שהתחיל את הבלגן הזה, צריך לכתוב סוכן שיסקר מעת לעת את מערכת ניהול הזכויות ו לבצע שינויים בתצורת הזכויות בתוך שירותים מותקנים ובמידת הצורך לתת לשירותים פקודה לקרוא מחדש תצורות.
מס' 6: מפעיל K8S ב-Python (זרם קידוד חי)
13 באוקטובר בשעה 19:00
למה: בואו נרחיב את היכולות של K8S כך שיתאימו למשימות שלכם.
מס' 7: כתיבת מודול משלנו עבור Ansible
למה: Ansible היא מערכת חזקה לניהול תצורה, ואפילו ניתנת להרחבה עם מודולים משלה. איזה צירוף מקרים זה עצמו ורוב המודולים כתובים בפייתון.
- כתיבת מודולים משלך עבור Ansible.
תרגול: כתיבת מודול לניהול זכויות.
לפני זמן רב, בגלקסיה רחוקה, רחוקה, כבר כתבת סוכן שינפיק זכויות לשירותים מסוימים. הגיע הזמן לשנות משיכה לדחיפה ואנסיבל תעזור בזה. כל מה שאתה צריך זה רק מודול.
מס' 8: מקרי יצירה ושימוש ב-API שלך
למה: הכנת קוד לפריסה היא אחת המשימות החשובות ביותר. הסקריפטים שלנו עבור צינורות הבמה עוזרים להפוך את התהליך הזה לגמיש ונוח יותר.
- יצירת API של REST ב-Flask.
- יצירת יצואן פרומתאוס משלך עם Prometheus Python Client and Flask.
תרגול: העלאת נתונים למערכת ניטור של צד שלישי.
העלויות של ציוד לא בשימוש עלו אפילו על התחזיות הפסימיות. כעת לצוות ההנדסה יש תחום אחריות נוסף - ניטור שירותים שאינם בשימוש. לשם כך, עליך לבצע סקר מעת לעת את מערכת החיוב באמצעות הסקריפט שלך ולהעביר את הנתונים ל-Prometheus. הפורמט של הנתונים שהתקבל עדיין אינו מתאים. אתה צריך ליישם מחבר. ובמקביל לכתוב נקודת קצה כדי שלמחלקת האנליטיקה יהיה תמיד מידע עדכני בפורמט JSON בהישג יד.
מפגש AMA + מפגש בלתי פורמלי עם דוברי הקורס
28 באוקטובר בשעה 19:00
אנחנו נפגשים כדי לדון בחששות של משתתפי הקורס.
#9: בדיקת ה-API של האפליקציה שלך
למה: לפעמים עדיף שלא יהיה קוד מאשר קוד לא יציב. כדי לא לפחד משבירת הקוד שלך, אתה צריך לכתוב מבחנים.
- סוגי מבחנים: יחידה, אינטגרציה ומקצה לקצה.
- סקירה כללית של מודול pyhamcrest והתאמתו.
- ארכיטקטורה ויכולות של pytest.
- שימוש ב-pytest וב-pyhamcrest לכתיבת מבחני יחידה.
תרגול: כתיבת מבחנים באמצעות pytest ו-pyhamcrest עבור ה-API שלך.
מס' 10: אינטראקציה עם מערכות CVS ו-DevOps
- שימוש במודולים של צד שלישי תוך שימוש בדוגמה של אינטגרציה בצינורות Gitlab.
- שימוש ב-pygit כדי לקבל מידע על שינויים בקוד.
תרגול: יצירת יומן שינויים מ-commits.
צוות ההנדסה כל כך אהב את הפתרונות שלך שהם קיבלו מהם השראה והתחילו לכתוב משלהם. אבל אנשים תמיד שוכחים לכתוב תיאורים לפרסומים. כדי להשיג זאת, הצוות החליט ליישם מוסכמות מחויבות ולייצר יומני שינויים ישירות מ-commits כאשר מיזוג סניף ה-dev עם ה-release one, ואם שם ה-commit אינו תואם את מוסכמות ה-commit, אל תאפשר מיזוג-request עד לְמַזֵג.
#11: Chatops עם Errbot ב-Python
למה: הבעיות העסקיות העיקריות אינן ביצועי אפליקציות או אפילו שגיאות המתרחשות בקוד. הבעיות החמורות ביותר מתעוררות כאשר התקשורת של העובדים אינה יעילה. Chatops היא אחת הדרכים לפתור את הבעיה הזו.
- קונספט של צ'טופס: אילו בעיות צ'טופס פותר?
- Errbot framework: התקנה, יצירת תבנית תוסף בסיסית, הגדרה והשקה.
- מסגרת Errbot: יצירת תוסף משלך עבור Chatops עם אפשרויות שונות לעיבוד הודעות.
פרויקט גמר
בדיקת מועד אחרון והגנה למעוניינים
לאחר הקורס, יהיה לך פרויקט על Git: אתה יכול להפוך את משימת העבודה שלך לאוטומטית או לבצע אחת מהאפשרויות המוצעות.
הפרויקט המוגמר יכול לשמש כמקרה תיק עבודות ולהציג אותו בעת הגשת מועמדות למשרה.