יום שישי, 30 בדצמבר 2022

יפו של ערב שבת

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







 

יום רביעי, 28 בדצמבר 2022

כתיבת shell בפייתון

התחלתי לעבוד על shell שאני כותב בפייתון, המטרה העיקרית היא ללמוד מה הקשיים בכתיבת shell. על הדרך אני מגלה דברים שלא ידעתי או לא זכרתי (למשל הפקודה cd היא חלק מה shell).
אין שום סיבה להמציא כאן את הגלגל מחדש חוץ ממטרה לימודית. אני עדיין ממליץ לכולם על oh-my-zsh המצוין.

יום שלישי, 27 בדצמבר 2022

בחירת אלמנט אקראי מ list בפייתון

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

יום שני, 26 בדצמבר 2022

כתיבת שפת תכנות בפייתון - חלק ראשון

 החלטתי לצלול לרעיון של לכתוב שפת תכנות. למה? כי אני יכול וכי למה לא?

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

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

לשפת הלימוד אקרא cozi על שם החתול שלי (קוזי הוא שם חיבה של קוזמו).

בית הקפה EAZY פלורנטין - ביקורת (ארוחת בוקר טבעונית)

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

משחק מילים בפייתון

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

המשחק זמין בכתובת הבאה: https://github.com/barakbl/guess_the_word


זו כמובן רק ההתחלה כשיש המון מה לשפר ולהוסיף אבל חייבים להתחיל איפשהו, לא? :)

יום ראשון, 25 בדצמבר 2022

הפונקציה zip של פייתון.

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


מבט על החוף ביפו.

 ציור שלי שצויר ב procreate הנהדרת (אפליקצית ציור משובחת לאייפד) מהתבוננות בתמונה שצילמתי בחוף הים שבצפון יפו. 

יום יבוא ואשוב אליו למקצה שיפורים (ולא חסר מה לשפר ברוך השם :)). 




גרפיטי שכל חתולאי יעריך.

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

היש בעלים של חתול שלא מכיר את הזווית הזו ושהגרפיטי הזה לא מעורר בו חיוך? :) 




סיני / כאן 11

סיני היא מיני סדרה בשני חלקים שזמינה לצפיה ישירה בכאן 11 תאגיד השידור הציבורי. ניתן לצפות בה  כאן (no pun intended)


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

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


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

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

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





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




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

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




יום שני, 19 בדצמבר 2022

טיפ למתחילים - היפוך מחרוזת ומעט על סלייסינג מחרוזות בפייתון

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


יום ראשון, 18 בדצמבר 2022

קפה או גזוז? [צילום]

אחד מתחביביי הוא לצלם את הקפה ומשקאות אחרים שאני שותה, בזוויות שונות. 

סיכום מונדיאל

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

יום שבת, 17 בדצמבר 2022

המנדט - סדרה בכאן - יש תמורה בעד האגרה?

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

עבודה עם Numba - חלק 2 [פייתון]

בהמשך לחלק הראשון כאן 

אז רציתי לעשות עוד בדיקה של עבודה עם  Numba, 

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

הקוד שלקחתי (וגם ההסבר על מגדלי הנוי והאלגוריתם) נמצאים כאן 

במקרה של האלגוריתם המדובר, לא צריך לשנות כלום בקוד להתאמה ל Numba - חוץ מהוספה של הדקורטור של Numba, לא רע! 

את קוד הבדיקה שמתי ב GitHub, אפשר לראות אותו כאן https://github.com/barakbl/numba_test/blob/main/hanoi.py


הנה תוצאות ההרצה: 



התוצאות מדברות בעד עצמן, השיפור הוא כ 88 אחוז בביצועים.  לא רע בכלל. 


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




הפונקציה id ומעט על פייתון, משתנים וזכרון. [פייתון]

אנחנו חיים בעולם שאנחנו משתמשים המון במשתנה ששמו id, כי מה לעשות אנחנו עובדים המון עם ids 

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

יום שישי, 16 בדצמבר 2022

Mutable Default Argument - [פייתון]

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

יום חמישי, 15 בדצמבר 2022

מתי ואיך נשתמש במשתנים מסוג set בפייטון.

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

קצת מונדיאל (רגע לפני הגמר).

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

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

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

תספורת חדשה

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

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


יום ״חורף״ בתל אביב

את היום הזה התחלתי בראיון עבודה בצפון הישן של העיר. 

חישוב של מספרים ראשונים בשפות שונות

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

סטנלי קובריק ו selfie לפנתאון [צילום]

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


טיפ זריז - דוקומנטציה בפייתון של מודולים ופונקציות [ פייתון]

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

לאובייקטים בפייטון יש attribute שנקרא __doc__ והוא למעשה מכיל את הדוקומנטציה של האובייקט. כשאנחנו נמצאים למשל ב IPython ויש לנו פונקציה שנרצה לקרוא בזריזות התיעוד בלי לצאת החוצה לדפדפן או לכלי אחר, פשוט נוח להציג את ה attribute למשל, עבור חבילת requests ועבור הפונקציה get של החבילה: 


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

טיפ זריז - יצירת מחרוזות ארוכות בטסטים [פייתון]

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

יום חמישי, 8 בדצמבר 2022

קצת על numba - הדגמה על קוד פשוט ממבחן נפוץ למועמדים לעבודה.

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

ראשית מה זה Numba.

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

״Numba is an open source JIT compiler that translates a subset of Python and NumPy code into fast machine code.״

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


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

מעט על סקרייפינג ופייתון

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

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

יום רביעי, 7 בדצמבר 2022

חומוס ביירות - ביקורת אוכל

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

יום שני, 5 בדצמבר 2022

רשימת האפליקציות שאני לא יכול לחיות בלעדיהן ב OSX כמפתח ולא רק!

לפני מעל ל 20 שנה גיליתי את לינוקס ונטשתי את חלונות. 

הפכתי לממש מאמין במערכת ההפעלה לינוקס והגעתי לשליטה  אני חושב לא רעה בה. קימפלתי קרנלים ואפילו הפצות שלמות (למשל את  Linux From Scratch שזו חוויה שאני ממליץ לכל מפתח), ובסוף התקבעתי על Debian המצוינת.

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

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

סמטאות תל אביב

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

כתושב פלורנטין אין שבוע שאני לא מגלה גרפיטי מעניין שלא הכרתי.


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

 בתמונה: סמטה קטנה המתחברת לדרום רחוב אלנבי הסואן. 







תאריך היציאה של פייתון 4

אין מפתח פייתון ותיק שלא זוכר את קשיי המעבר לפייתון 3. 
פייתון 3 יצאה אי שם בסוף 2008.
שנים ארוכות עברו עד שבאמת התעשיה התייצבה במלואה מאחורי פייתון 3. 
כיום, אין מפתח פייתןן שמתגעגע לפייתון 2 (או לצורך הענין ל- 2.7 המיתולוגית). 
סט היכולות שהתווספו לאורך הזמן בפייתון 3 שדרגו את השפה מאוד. 
f strings  בפייתון 3.6 הן דוגמה לתוספת מבורכת שכזו, בטח התמיכה בתכנות אסינכרוני באמצעות asyncio וכו׳. 
 
אך עדיין, חווית ההסבה היתה לא קלה לרבים מאיתנו.
להסב קוד קיים, דרש לא מעט עבודה, והתלות בספריות קיימות שלא תמכו ב 3 לא הועיל למפתחים.

השאלה שמפתחי פייתון רבים שואלים את עצמם: מתי נזכה לפייטון 4 וכמה קשה יהיה לעבור.
והתשובה המפתיעה(?) היא: כנראה שלעולם לא
על פי מי שכתב את פייטון, Guido van Rossum, אלא אם לא תהיה ברירה אחרת, דגש על שינוים גדולים בשפת C (שפייטון כתובה באמצעותה, כאלה שידרשו שבירה של התאימות לאחור, אין כל סיבה לעשות שוב את המעבר הכואב לגרסה מג׳ורית חדשה. 

אז בשורה התחתונה:, אין צפי שנזכה לפייתון 4, אך זה ממש לא אומר שצריך להתכונן להפרד מהשפה, להיפך, יוצאות כל העת גרסאות חדשות בפייתון 3, והגרסאות הללו מוסיפות פיצ׳רים חשובים ויכולות שעדיין חסרות בשפה.
למשל בפייתון 3.10 זכינו סופסוף לתמיכה ב   switch statement ככה שהשפה חיה ומשתפרת וכל זאת תחת העץ של פייתון 3.
לנו כמפתחים נחסך הצורך לעדכן לגרסא ששוברת תאימות לאחור בצורה מהותית, אבל אנחנו ממשיכים לקבל עדכונים ושיפורים. אחלה דיל. 

יום ראשון, 4 בדצמבר 2022

Hello world!

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