חם יותר מיולי

טלפון ציבורי, רדיו טרנזיסטור, מסוף 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 מיליארד.

השעון מתקתק…

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

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

בלוג

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

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

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

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

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

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

[פוסט זה הוא תרגום של מדריך המשתמש הרשמי של 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.

השרות הנסיוני לתכנון נסיעה בתח"צ עלה לאויר

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

תכנון מסלול לדוגמה

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

חישוב מסלול נסיעה בתחבורה ציבורית

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

עד להקמת שרת ציבורי, ניתן להתרשם מצילומי המסך:

מסלול שלם:
מסלול שלם

התמקדות על מקטעים:
התמקדות על מקטעים

גרסה להדפסה:
גרסה להדפסה

ההסבר בהמשך מיועד למי שרוצה להקים שרת. לא למי שרוצה לחשב מסלול !! (מה שנקרא: Don't try this at home).

להקמת השרת, יש לבצע את הפעולות הבאות: (זה הרקע. הקוד בפסקה הבאה מבצע את הפעולות)

לוודא שאזור הזמן של השרת הוא Asia/Jerusalem.
להוריד ולפתוח את הקוד של OpenTripPlanner (גודל הקובץ כ 90MB) וליצור קישור סימבולי ל / .
להוריד ולפתוח קובץ Open Street Map של ישראל מהאתר cloudmade.com (גודל הקובץ 22MB).
למצוא את כתובת קובץ ה GTFS מאתר מאגרי המידע של הממשלה, ולהוריד אותו. מכוון שהקובץ מוגש (זמנית?) משרת ftp ולא http, צריך לארח אותו מחדש על שרת אחר. בדוגמאות הקוד בהמשך האירוח הוא בשרת מקומי

$ date
# Make sure timezone is correct. If not, run the command:
# $ sudo ln -sf /usr/share/zoneinfo/Asia/Jerusalem /etc/localtime
# make sure ntp is installed and running. if not, follow these instructions: http://www.ehow.com/how_8251011_sync-time-centos.html
$ mkdir ~/GTFS
$ cd ~/GTFS
$ curl -L -O "http://maps5.trimet.org/otp-dev/otp.zip"
$ curl -L -O "http://downloads.cloudmade.com/asia/western_asia/israel/israel.osm.bz2"
$ curl -L -O "ftp://199.203.58.18/israel-public-transportation.zip" 
# !! replace IP above with correct IP
$ unzip otp.zip
$ bunzip2 israel.osm.bz2
$ sudo ln -s ~/GTFS/otp /
$ ln -s ~/GTFS/israel.osm /otp/cache/osm/

יש לערוך מספר קבצי הגדרות:

$ vi /otp/graph-builder.xml 
# Line 13, change properties to 'name="path" value="/home/yehuda/GTFS/israel-public-transportation.zip"'
#              (or whatever path you placed the file in)
# Line 40, change file name of OSM from or-wa.osm to israel.osm (just file part)
$ vi /otp/bin/build-graph.sh
# Line 1, change -Xmx2048m to -Xmx6114m. If you have more memory, put as much as possible
$ vi /otp/bin/start-server.sh
# Line 1, change -Xmx2048m to -Xmx4096m. If you have more memory, put as much as possible

בניית הגרף (משלב נתוני OSM עם נתוני תח"ץ)

$ cd /otp
$ bin/build-graph.sh >& ~/GTFS/build-graph.err
# might take 15-30 minutes depending on processor power and memory
$ ls -l /otp/Graph.obj
# should be around 1GB

אחרי הריצה חשוב לוודא בלוג שאין תעופה בגלל חוסר זכרון !!

עכשיו אפשר להריץ את השרת האפליקטיבי:

$ cd /otp
$ bin/start-server.sh 
# Wait for line: "Winstone Servlet Engine v0.9.10 running..."

עכשיו אפשר לפתוח דפדן לכתובת : http://localhost:8080/opentripplanner-webapp/index.html (אם השרת אינו מקומי, להחליף localhost בכתובת השרת). ולנסות לחשב מסלול.

תרגום לעברית:
לבדוק האם הקובץ ‎/otp/webapps/opentripplanner-webapp/js/otp/locale/Hebrew.js‏ קיים. אם לא, להוריד אותו מכאן ולשמור בנתיב הנ"ל. אחר-כך, יש לבצע מספר תיקונים בקוד:

$ vi /otp/webapps/opentripplanner-webapp/index.html
# line 2, add 'dir="rtl"' to html tag
# line 53, duplicate this line and change file name to "js/otp/locale/Hebrew.js" 
$ vi /otp/webapps/opentripplanner-webapp/js/otp/config.js
# line 12, change otp.locale.English to otp.locale.Hebrew (at end of line)
# line 175, change value of 'enabled' to 'true'
# line 177, add this to end of string:
# + '<div style="margin:10px auto;width:205px"><a href="http://www.opentripplanner.org/"><img src="images/logo-otp.png" title="OpenTripPlanner" /></a>' +  '<a style="margin:0 10px" href="http://www.hamakor.org.il/"><img src="images/logo-hamakor.png" title="עמותת המקור" /></a>' + '<a href="http://www.hetz.biz/"><img src="images/logo-hetz.png" title="חץ ביז" /></a></div>'
$ vi /otp/webapps/opentripplanner-webapp/js/otp/locale/Hebrew.js
# line 28, change title to: "אודות האתר"
# line 29, change content to: 
# 'אתר זה הוקם ע"י יהודה ב. על בסיס נתוני "לו"ז ומידע גאוגראפי בתחבורה הציבורית" הזמינים מאתר <a href="http://data.gov.il/">data.gov.il</a> ועל בסיס תוכנת הקוד הפתוח <a href="http://www.opentripplanner.org/">OpenTripPlanner</a>.' + '<br>' + 'תרגום התוכנה לעברית בוצע ע"י ירון שהרבני. אירוח אתר זה בחסות <a href="http://www.hamakor.org.il/">עמותת המקור</a> ובאדיבות <a href="http://www.hetz.biz/">חץ ביז</a>.' + '<br>' +  'תנאי שימוש: עמותת המקור עושה כמיטב יכולתה בכדי לספק שירות זה על בסיס נתונים מדוייקים ועדכניים אולם ייתכנו טעויות. המידע ניתן כפי שהוא ללא אחריות. ראו גם <a href="http://data.gov.il/dataset/383">תנאי שימוש של משרד התחבורה</a>.' 

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

משתלם להיות בטא טסטר של פיירפוקס 4

הנה מה שהגיע אלי במתנה היום בדואר:
FF4 beta tester shirt

וזו הכתובת על הצד האחורי:
FF4 beta tester shirt back

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

כרום ואופרה זהירות: פיירפוקס 4 מאחוריכם! (ולפעמים גם משיג)

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

בתור התחלה, חזרתי על מבחן ה SunSpider שביצע CHAOS6, כאשר המטרה היא לבחון את פיירפוקס מול המתחרים העיקריים (כרום ואופרה), אבל גם להשוות את גרסת החלונות מול גירסת לינוקס. הגרסאות שנבדקו הן: פיירפוקס 3.6.8, פיירפוקס 4.0b4, כרום 5 (כרומיום בלינוקס), ואופרה 10.61. מערכות ההפעלה הן XP SP3 ו – Xubuntu 10.04. התוצאות הן די טובות מבחינת פיירפוקס, כאשר שיפור הביצועים הוא קצת פחות מפי 2 על חלונות ופי 2.3 על לינוקס. ולא פחות חשוב: הפערים בין גרסאות הלינוקס וחלונות של פיירפוקס 4 מבחינת ביצועים צומצמו בהרבה, והם אפילו טובים יותר מהפערים בין גרסאות כרום על פלטפורמות אלה. במבחן זה פיירפוקס עדיין לא שובר את השוק, אבל בהחלט חזר להתחרות בליגה של הגדולים. התוצאות המלאות בגרף המצורף (ערכים קטנים יותר טובים יותר)
SunSpider firefox4 firfox3.6 chrome opera

בשלב השני הרצתי השוואה שונה לגמרי. כאן לא מדובר על מבחן סינטטי, אלא דף שלם, שכל מטרתו להציג אזורים יפים של קבוצת מנדלברוט. את הדף המקורי כתב Kostas Symeonidis ואני שכללתי אותו כך שיכלול אופטימזציות נוספות מצד אחד, אבל גם הגדלה של רוחב אזור הציור, ו"העמקה" של החישוב (הגדלה של מספר האיטרציות המקסימלי לפני הכרזה על צבע שחור). בנוסף, הכנסתי אפשרות לשימוש ב Web workers, שמאפשרת ניצול טוב יותר של מחשבים עם מספר מעבדים (או ליבות) לטובת החישוב הכבד, וגם מונעת הודעות מעצבנות על סקריפטים תקועים. לטובת המבחן נבחר האזור המוצג למטה (וגם להרצה אצלכם), המתאפיין בכך שיש לו אזורים שחורים רבים (יותר חישובים), וגם האזורים הצבעוניים שלו "עמוקים" למדי. תודה לסיימון על הקורדינטות.
Mandelbrot speed test

את המבחן הרצתי רק על סביבת חלונות (אין לי מחשב לינוקס מרובה ליבות), והתוצאות מפתיעות ביותר, כאשר כרום נמצא הרחק מאחור (פער של פי 8 על מעבד אחד ופי 5 על שניים) ואופרה אולי נותן פייט יפה על מעבד אחד מול פיירפוקס 3.6, אבל נכשל לחלוטין במבחן ריבוי המעבדים ובוודאי מול פיירפוקס 4.0.
Floating point speed test firefox4 firefox 3.6 chrome opera

אז נכון, זה רק מבחן אחד, אבל איזה יופי של מבחן…

הו-הו-הו-הו, איך שגלגל מתהפך לו…

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

מאז, זרמו הרבה מים בירקון, גרסה 3.0 תוקנה לתמיכה בעברית (בין השאר בזכות פצ'ים ששלחתי) והיום יצאה גרסת בטא 4 של פיירפוקס 4 (הראשונה עם תמיכה בממשק עברי). וראו זה פלא, מי לא מופיע בגרסאות להורדה בעברית? נכון, חלונות. אז לא שיש לי משהו נגד משתמשי חלונות (some of my best friends…), ואני בטוח שהבטא הבאה תעבוד כמו שצריך על חלונות ובעברית, אבל תרשו לי בכל זאת להגניב חיוך קטן.

למי אין גרסה?