רשומות

מציג פוסטים מתאריך דצמבר, 2020

פוסט אורח: Data Objects בפייתון - מ tuple ועד dataclass

תמונה
פוסט אורח מאת ליאור אלבז ליאור הוא מפתח תוכנה צעיר ומוכשר מאוד, עובד כעת בחברת דיפ אינסטינקט . ליאור משקיע את מרבית שעות היום שלו בפיתוח ובלמידה של טכנולוגיות חדשות. לא צריך לדבר איתו יותר מ5 דק׳ כדי להבין שהוא חי את עולם התוכנה ועוד יעשה דברים גדולים. מבוא פעמים רבות כשאנחנו כותבים קוד נרצה להעביר מידע בין מחלקות, פונקציות או לשלוח מידע בבקשות דרך הרשת. בכל שפת תכנות עילית קיימים כיום סוגים שונים של מבני נתונים ואובייקטי מידע בהם נוכל להשתמש על מנת לארוז את אותו המידע ולהעביר אותו ממקום למקום. לדוגמה, במקום להעביר לפונקציה מסוימת מספר של פרמטרים באופן הזה: print_shape(color= 'red' , category= 'rectangle' , size= 10 )                                                                                              ...

המדריך לבניית קריירת החלומות

תמונה
הפוסט הזה שונה מהפוסטים שאני כותב בדרך כלל, לא תראו בו דוגמאות קוד ולא אדבר בו על ספרייה חדשה בפייתון. אני כותב את הפוסט הזה כי אני מאמין שהידע המקצועי שלנו הוא לא הכל ועלינו ללמוד הרבה על הפילוסופיה של שוק העבודה, על ניהול זמן ופרודקטיביות, על יחסי אנוש, ניהול סטרס וכל מה שאני מכניס תחת המטרייה של ״self development״. את מה שתראו כאן אני לא כותב ממרום גילי ומניסיוני בשוק העבודה, אני מאמין הרבה יותר בלתת לאנשים חכמים ומנוסים ממני לעשות את העבודה הזו. במקרה הזה בחרתי לסקור את הספר ״So good they can't ignore you״ של cal newport על מנת לנסות לענות על השאלה - איך בונים קריירה שתסב לנו סיפוק ואושר. באופן אישי, הספר שינה אצלי את ההסתכלות על עולם התעסוקה ובכלל את ההגדרה של ״סיפוק בקריירה״. לא מה שסיפרו לכם את הספר ניופורט מתחיל בלדבר על אחד הנאומים הכי מוכרים שיש ברשת היום ושצבר עשרות מיליוני שיתופים וצפיות, בנאום סטיב ג׳ובס מדבר מול למעלה מ-20 אלף מסיימי אוניברסיטת סטנפורד ומפציר בהם ללכת לרדוף אחרי החלומות שלהם, ולא לעצור עד שהם לא מצאו את התשוקה האמיתית שלהם. זוהי אכן גם אחת העצות הנפו...

הגרסה החדשה של pip - 20.3

תמונה
אתם בטח שואלים את עצמכם - למה שאכתוב פוסט על גרסה כל כך ספציפית של pip? אז התשובה פשוטה. לפני מספר חודשים המפתחים של pip הכריזו על גרסה עם שינוי גדול ולפני כשבועיים בתאריך 30/11/20 יצאה גרסה 20.3 שכוללת שינוי די רציני. כל כך רציני שהמפתחים אשכרה עשו על זה סרטון. חשוב לי לציין שפוסט הזה לא הולך לדבר על היכולות של pip או על איך משתמשים בו, כתבתי על זה קצת כאן . מה בעצם הגרסה מגיעה לפתור? אחד הפיצ׳רים החסרים של pip, שמשתמשים לא הפסיקו לבקש הוא dependency resolver. עד היום בכל פעם כשהתקנו חבילות באמצעות pip הוא היה מתאמץ מאוד לספק לנו מבנה תלויות נכון לפי התלויות שסיפקנו לו אבל לא תמיד היה מצליח. למה אני מתכוון: נניח שביקשנו מ pip להתקין את החבילות הבאות:  pip install "six<1.12" "virtualenv==20.0.2" בתמימותינו אנחנו נצפה שתתוקן לנו גרסה קטנה מ1.12 של הספריה six וגרסה 20.0.2 של virtualenv. אבל מה קורה אם אחת מתתי התלויות של virtualenv בגרסה 20.0.2 היא six בגרסה שגדולה מ-1.12? כלומר - בהרצת הפקודה שראינו למעלה, pip ינסה להתקין את החבילה six עם ההגבלה שניתנה לו, ימצא את...

איך decorators עובדים (פייתון)

תמונה
מה זה decorators? דקורטורים הם קונספט פשוט ועוצמתי שקיים כמעט בכל שפת high level, נמצא בשימוש נרחב כמעט בכל פרויקט ומאפשר למשתמש להוסיף פונקציונאליות לפעולות מבלי להתערב במימוש הפעולה. לדוגמה: יכולה להיות לי הפונקציה הבאה say_hello שמדפיסה את המחרוזת hello ואני יכול לכתוב דקורטור בשם twice לצורך העניין, שכשאשים אותו מעל פונקציה היא תבוצע פעמיים. במקרה כזה כשאקרא ל say_hello, הפונקציה תרוץ פעמיים ותדפיס פעמיים את המחרוזת hello. הסינטקס פשוט מאוד ויראה כך: הדקורטורים בפייתון עובדים כמו ומממשים עיקרון דומה ל  decorator design pattern  (שבדרך כלל נראה בשימוש במחלקות) מתי נצטרך decorators? ישנם מקרים רבים בהם נרצה להשתמש בדקורטורים, בעצם, זו דרך אלגנטית מאוד להוסיף פונקציונאליות לפני ו/או אחרי פעולה מסויימת. בואו נגיד והיינו רוצים להדפיס ללוג את שם הפונקציה ואת הפרמטרים שלה בכל פעם שהפונקציה נקראת. יכולנו לעשות זאת כך: ואותה שורת לוג הייתה נמצאת לנו בכל פונקציה אבל דקורטרים נותנים לנו יכולת לגרום לאותה פונקציונאליות להיות הרבה יותר אלגנטית, פחות משוכפלת ולהראות כך: איך decorators ע...