חם יותר מיולי

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

Hotter then July album cover

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

אחרי מספר נסיונות לפתור את החלק המתמטי בעזרת נייר ועפרון, החלטנו לנצל את מחשבי האוניברסיטה לטובת הפרס הנחשק. תכנית מחשב שתעבור על כל האפשרויות הייתה מחוץ לתחום במשאבים שהיו זמינים לנו אז (נדמה לי שזה היה מחשב VAX-11/780, שהריץ גרסת יוניקס של ברקלי), וכנראה גם לא היום – מדובר בכטרליון תרגילים אפשריים – אבל בעזרת יוריסטיקה פשוטה יחסית הצלחנו לכתוב תוכנית שתמצא פתרון בזמן סביר. העניין היותר מורכב בשלב הזה היה החלק הלוגיסטי: להביא רדיו למעבדה, להקשיב לתוכנית, להזין את המספרים ואז לרוץ לטלפון הציבורי בקומה השניה ולהתקשר לאולפן.

בסופו של דבר עליתי לשידור מספר פעמים וצברתי בסה״כ כ-10 תקליטים, בינהם התקליט Hotter then July של סטיבי וונדר.

HTTP/2

עוד שדרוג קטן לבלוג.
הפעם העברתי את השרת מ apache ל nginx, ועל הדרך הפעלתי HTTP/2.
זה אמור לשפר את הביצועים, למרות שאני לא ממש מרגיש בזה בנתיים.

Hex dump of nginx logs

למעוניינים, המדריך הזה מסביר על התקנת nginx, והגדרות HTTP/2. כאן תמצאו הסבר על ההגדרות הדרושות ב nginx לטובת הפעלת WordPress במקום mod_rewrite של apache.

התוצאה הסופית של כל ההגדרות האלה, כפי שנשמרה בקובץ ‎/etc/nginx/sites-available/default היא זו:

server {

        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;
        include snippets/gzip.conf;

        ssl_certificate /etc/nginx/ssl/live/yehudab.com/fullchain.pem;
        ssl_certificate_key /etc/nginx/ssl/live/yehudab.com/privkey.pem;
        ssl_dhparam /etc/nginx/ssl/live/yehudab.com/dhparam.pem;

        root /var/www/yehudab.com;

        index index.html index.htm index.php index.nginx-debian.html;

        server_name yehudab.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location /blog/ {
                try_files $uri $uri/ /blog/index.php?$args;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
        include snippets/expires.conf;
}


server {
       listen         80;
       listen    [::]:80;
       server_name    yehudab.com;
       return         301 https://$server_name$request_uri;
}

לאחר סיום ההגדרות, ניתן לוודא את תמיכת האתר ל HTTP/2 באמצעות דף הבדיקה של KeyCDN.

רק שניה

רק שניה מפרידה בין השעה 03:14:07 ל 03:14:08 בתאריך: 19 בינואר 2038. לכאורה, זה לא צריך לעניין אף אחד. אבל אם אתה יוניקס/טיים גיק כמוני, התאריך הזה מייד אמור להדליק לך נורה אדומה.
למה? כי בשניה הזאת יעברו בדיוק 2,147,483,648 (או 2 בחזקת 31) שניות מתאריך 1.1.1970 בשעה 00:00:00. מחשב לינוקס בארכיטקטורת 32 ביט לא יכול להציג את הזמן הזה.
נסו להריץ את הפקודה הבאה על מחשב הלינוקס הקרוב:

date --date='@2147483647'

או במערכות מבוססות BSD (כמו macOS), את הפקודה הזאת:

date -r 2147483647

זה אמור לעבוד בלי בעיה. אבל אם תוסיפו שניה נוספת (כלומר להחליף את ה-7 ב-8), אתם עלולים לראות משהו כזה:
2038 on 32 bit Linux

לעומת זאת, על מחשב 64 ביט, התוצאה תקינה:
2038 on 64 bit Linux

אז למה זה מעניין עכשיו, ומה איכפת לי ממשהו שיקרה בעוד קצת יותר מ-20 שנה?

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

צילום המסך העליון, לדוגמה, נלקח ממחשב Raspberry Pi שמחובר למערכת ההשקיה בגינה שלי.
Raspberry Pi with Open Sprinkler
האם הוא ישרוד עד 2038? אולי. עד עכשיו, החלפתי בממוצע מחשב השקייה כל 10 שנים: הראשון בגלל הבטרייה שזלגה, והשני עדיין עבד, רק שרציתי להחליף אותו בדגם שמאפשר תכנות דרך הרשת במקום ממשק לא ידידותי. למזלי, ה 19 בינואר יוצא בחורף, כך שיהיו לי כמה חודשים טובים לדאוג למחליף במידת הצורך.

ולמה נזכרתי בכל זה עכשיו? כי מחר (2 ביולי 2017) יעבור מספר השניות את סף ה 1.499 מיליארד, ובעוד שבועיים (14 ביולי) הוא יעבור את סף ה 1.5 מיליארד.

השעון מתקתק…

יומולדת 10 שמח

7:00 שעון מעורר (מפעיל סנוז)
7:09 שעון מעורר (מכבה סנוז)
7:10 מייל (פרטי)
7:11 ג׳ימייל (עבודה)
7:12 פייסבוק
7:13 טוויטר
7:30 מוביט קרפול (מאשר בקשת קרפול)
7:31 פייסבוק מסנג׳ר (תיאום סופי של מקום ושעה)
7:55 וייז
7:56 אוברקאסט (שומע Rocket)
8:00 מוביט קרפול (מאשר איסוף נוסע)
8:15 גז טרקר פלוס (רושם מילוי דלק)
8:35 פייסבוק (מחכה למכונת קפה בעבודה)
8:42 גוגל אות׳נטיקטור (לוגין ל AWS)
9:35 גוגל הנגאאוט (עבודה)
10:00 טלפון (מהבנק – מבקש שיתקשרו ב 17:00)
11:05 ספארי (וואינט)
11:25 גוגל אנליטיקס (עבודה – מתגאה בתוצאות – לוקח צילום מסך)
11:26 פינפוינט (מסמן על הצילום)
11:27 ג׳ימייל (שולח צילום)
12:01 ג׳ימייל (בודק אם תן ביס הגיע)
12:30 וואטסאפ (תזכורת לשלם לועד הכיתה למסיבת סיום)
12:31 ביט (מעביר תשלום למסיבה)
13:30 ספארי (בודק באג באתר)
13:31 מוביט (משווה מול האתר – אין באג)
14:10 פינגדום (בודק אפטיים של הבלוג על השרת החדש – 99.97%)
16:55 טלפון (מהבנק – הקדימו)
17:30 אצה (מזמין פיק אפ)
17:31 וייז
17:32 אוברקאסט (שומע ATP)
18:15 אצה (תשלום באפליקציה)
19:15 לוח שנה (בודק מתי לאסוף את הילדה מהחוג)
20:20 נטפליקס (עונה 5 בית הקלפים)
22:34 פרומט (SSH לשרת החדש לתקן באג בווידג׳ט מזג האוויר)
23:12 שעון מעורר (מכוון למחר ישר לקום ב 7:09)
23:15 ספארי (כותב את הפוסט הזה)
23:42 תמונות (מעלה את צילום המסך שלמטה לדרופבוקס)
23:45 דרופבוקס (משנה שם)
23:46 פרומפט (מוריד את הצילום מדרופבוקס לשרת)
23:58 ספארי (מפרסם את הפוסט)
23:59 מטען, מצב מטוס

Apps on iPhone

שוב שדרוג לבלוג

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

בלוג

דבר ראשון, בקטנה, שדרוג מתחייב לגרסה האחרונה (4.8).

חוץ מזה, תוסף חדש: Yoast SEO, כי פייסבוק דורש מטה תגיות, וזה הכי קל.

אבל הכי חשוב, החלפתי את שרות האירוח מאכסון משותף על NearlyFreeSpeach לשרת וירטואלי פרטי של Scaleway. בחרתי בשרת מבוסס ARMv8 כך שהמחיר יוצא כמעט אותו דבר (3$ בראשון, 3€ באחרון), כשכאן אני מקבל שרת פרטי, יכול להריץ עליו מה שאני רוצה, וגם הביצועים טובים הרבה יותר. כמובן, אני צריך לדאוג לבד לשדרוגי תוכנה, אבטחה, גיבויים וכד׳, אבל זה חלק מהעניין. המדריך ב LinuxBabe יכול לעזור כאן.

Scaleway לא כ״כ אוהבים ששולחים מייל מהשרת שלהם (כדי שלא ישמשו לספאם), אז נרשמתי לשירות mailgun שמאפשר לשלוח עד 10,000 מיילים בחודש בחינם. הוא עובד יחד עם התוסף המקביל ב WordPress. באתר wpbeginner יש הסבר מפורט איך להשתמש בשניהם.

דבר אחרון, העברתי את האתר לעבוד דרך https, כי בכל זאת 2017. המדריך הנ״ל מ LinuxBabe מסביר איך לעשות את זה בחינם דרך Let's Encrypt.

לכבוד גל הקור – עדכון לווידג׳ט מזג האויר

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

ווידג׳ט מזג האויר

מוזמנים להוריד את הגרסה האחרונה מכאן.

בעלי OS X 10.7.5 ומעלה: אחרי הורדת הזיפ ופתיחתו, יש ללחוץ על הקובץ שנפתח עם כפתור ימין של העכבר ולבחור Open מהתפריט. אחרת תיתקלו בהודעת שגיאה של ה Gatekeepr.

איך לפתוח את הקובץ

לאחר מכן, יש ללחוץ על הווידג׳ט המוצג, ולרענן אותו ע״י שילוב המקשים ⌘+R.

הווידג׳ט זמין למחשבי מק בלבד.

מדריך למתחילים בסקראץ׳

[פוסט זה הוא תרגום של מדריך המשתמש הרשמי של Scratch. תוכלו להוריד את המדריך באנגלית מדף העזרה באתר. הזכויות למקור שמורות ל Lifelong Kindergarten Group, MIT Media Lab. מופץ ברשיון CC-BY-SA 2.0]

Scartch Cat

סקראץ׳ (Scratch) היא שפת תיכנות שמאפשרת ליצור סיפורים אינטראקטיביים, אנימציות, משחקים, מוזיקה ואומנות.

מסך לדוגמה מסקראץ׳

המדריך הזה יאפשר לכם ליצור פרויקט בסקראץ׳.

ליצירת פרויקט חדש, גשו לאתר: http://scratch.mit.edu. אם האתר נפתח באנגלית, ניתן לשנות את שפת הממשק מהתפריט בתחתית הדף. לאחר מכן, לחצו על הכפתור צור.
צור

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

1 – התחילו לזוז

לבנת זוז

גררו לבנת זוז לאזור התסריטים.

לחצו על הלבנה

לחצו על הלבנה כדי לגרום לחתול לזוז.

2 – הוסיפו צלילים

לבנת נגן בתוף

גררו לבנת נגן בתוף וחברו אותה ללבנת הזוז.

לחצו והקשיבו

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

החלפת צלילים

תוכלו לבחור סוג אחר של תופים מהתפריט.

3 – התחילו ריקוד

הוספת לבנת זוז חדשה

הוסיפו לבנת זוז חדשה. לחצו בתוך הלבנה והוסיפו סימן מינוס.

לחצו להפעלה

לחצו על כל אחת מהלבנים כדי להריץ את כל הערמה.

לבנת נגן בתוף נוספת

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

4 – שוב ושוב

לבנת חזור

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

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

שינוי מספר החזרות

תוכלו לשנות את מספר החזרות שיבוצעו.

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

5 – אמרו משהו

לבנת אמור

לחצו על קטגוריית המראה וגגרו החוצה לבנת אמור.

שינוי טקסט

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

חברו לראש הערמה

אחר-כך, חברו את לבנת האמור להתחלה.

6 – דגל ירוק

כאשר לוחצים על הדגל הירוק

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

הפעלת הדגל הירוק

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

7 – שנו צבע

עכשיו, נסו משהו שונה…

לבנת שנה אפקט

גררו לבנת שנה אפקט.

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

8 – לחיצה על מקשים

לבנת כאשר נלחץ מקש

חברו לבנת כאשר נלחץ מקש

עכשיו, לחצו על מקש הרווח במקלדת שלכם.

בחירת מקש

תוכלו לבחור מקש שונה מהתפריט

9 – הוסיפו רקע

תוכלו להוסיף רקע לבמה.

בחירת רקע

לחצו כפתור רקע כדי לבחור רקע חדש.

בחרו רקע מהספריה (למשל "spotlight-stage").

ספרית הרקעים

לחצו אישור.

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

הרקע החדש

10 – הוסיפו דמות

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

כפתורי הוספת דמות

כפתורי הוספת דמות:

דמות מהספריה בחרו דמות מהספריה

צייר דמות ציירו דמות משלכם

דמות מקובץ העלו דמות/תמונה מקובץ

דמות ממצלמת רשת צלמו תמונה (ממצלמת רשת)

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

תוכלו לגרור את הדמויות ולמקם אותן על הבמה.
גררו את הדמות

11 – חקרו!

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

הוסיפו צליל:
צלילים

לחצו על לשונית הצלילים. תוכלו לבחור צליל בחר צליל, להקליט צליל משלכם הקלטה, או ליבא מקובץ צליל מקובץ. (בפורמט AIF, MP3 או WAV)

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

שנו תלבושות:
תלבושות

לכל דמות יכולות להיות מספר תלבושות.
לשינוי התלבושת הנוכחית, לחצו על לשונית התלבושת.
אחר-כך לחצו על תלבושת שונה לדמות.

צרו אנימציה:
אנימציה

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

12 – טיפים!

שם לפרויקט
תנו שם לפרויקט שלכם.

לרעיונות נוספים, לחצו על טיפים:
טיפים

חלון טיפים

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

הוא גם מסביר מה כל אחת מהלבנים של סקראץ׳ עושה.

שמור ושתף

כדי לשמור את הפרויקט ברשת, הקפידו להתחבר לאתר. התחבר

(אם תרצו לשמור את הפרויקט במחשב שלכם, לחצו על תפריט קובץ ובחרו באפשרות: ״הורד למחשב שלך״.)

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

דף פרויקט
דף פרויקט

לחצו מסך מלא לקבלת מסך מלא.

לחצו שיתוף כדי שאחרים יוכלו לצפות ולשחק בפרויקט שלכם. כאשר אתם משתפים, אחרים יכולים לבקר ולשחק בפרויקט שלכם.

הוסיפו הערות לפרויקט.

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

כדי ללמוד עוד, לחצו עזרה או גלשו אל http://scratch.mit.edu/help (אנגלית).

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

עדכונים קצרים

  1. לראשונה מאז הקמת הבלוג החלפתי את ערכת העיצוב לערכת העיצוב האחרונה של WordPress: Twenty Fourteen. השינוי המהותי (פרט לצבעים) הוא תמיכה ב Responsive Design, כך שהבלוג יוצג מעתה בצורה טובה גם על מכשירים ניידים. קצת מאוחר, אבל better late then never.
  2. בעקבות שינויים באתר IsraelWeather התגלתה תקלה בווידג׳ט מזג האויר. בזכות הארכיטקטורה החדשה התקלה תוקנה בשרת הביינים, כך שאין צורך להתקין גרסה חדשה של הווידג׳ט. אם התחזית לא מוצגת, לחצו על הווידג׳ט עם העכבר, ואחר-כך ⌘+R במקלדת. מי שעדיין לא התקין מוזמן לעשות זאת ע״פ ההוראות בפוסט הקודם.