Categories
וורדפרס לינוקס קוד פתוח ותוכנה חופשית

עוברים דירה


אחרי שלוש שנים שבהן האתר הזה רץ מעל שרות האחסון של Scaleway, קיבלתי מהם הודעה שהחומרה שעליה אני רץ (dual core ARM CPU, 2GB RAM, 50GB SSD) תפסיק לעבוד בעוד מספר חודשים. הם הציעו לי לעבור באותו מחיר לשרת VPS מבוסס אינטל, אלא שעוד לפני שהספקתי להגיב, קיבלתי את המכתב שזו כותרתו: We’re evolving our Instances prices, או בתרגום חופשי: נמאס לנו להיות הכי זולים בשוק, אז נעלה את המחיר ב 66%.


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

השרת שלי מריץ בנוסף גם שני שרתי node קטנים, כך שהעברת כל הטוב הזה היא לא פשוטה, ולכן החלטתי הפעם ללכת על Docker. למי שלא מכיר את Docker, מומלץ לקרוא את סדרת המאמרים באתר של רן בר-זיק. שם הוא גם מדגים התקנת WordPress. אני בחרתי לעקוב אחרי המדריך של Michael J. Stealey ב GitHub, שממנו גם עשיתי פורק לריפו משלי. המדריך הזה קצת יותר מתאים לסביבה הנוכחית שלי שכוללת MariaDB במקום MySQL, וגם סקריפטים מוכנים לתמיכה ב https, דרך השרות של Let’s Encrypt.

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

אז נשארו לי כמה קצוות לסגור, כמו חידוש אוטומטי של הסרטיפיקטים ב Let’s Encrypt, והפעלה של גיבויים, אבל בסך הכל נראה שדוקר עושה עבודה טובה, והמעבר הבא יצריך ״רק״:

sudo docker-compose up -d
Categories
וורדפרס לינוקס קוד פתוח ותוכנה חופשית

php 7.4

חלפה למעלה משנה מאז שהתמיכה ב-7.0 php הופסקה, וזה הזמן לשדרג את הבלוג לגרסה 7.4. כרגיל, צריך לקרוא את כל ה breaking changes, אבל אם הבלוג והתוספים מתוחזקים לגרסה העדכנית ביותר, אפשר לסמוך בדרך כלל שהכל יעובד. גיבוי של הקוד והדאטה רצוי גם כן.

את הגיבויים אני מבצע לאחרונה בעזרת restic, כאשר הקבצים מועלים לאכסון (הזול יחסית) של Backblaze B2.

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

#!/bin/bash
d=$(date +%Y-%m-%d)
mysqldump -u *** -p *** > ~/backup/sql/yehudab-${d}.sql
gzip ~/backup/sql/*.sql
tar -czf ~/backup/site/yehudab.com-${d}.tar.gz yehudab.com
restic backup ~/backup

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

אה, וכמובן, להשתמש ב vi, כי nano זה לחלשים.

אחרי השדרוג, אני מנסה לשמור את הפוסט הזה ובום error 500. בדיקה מהירה בלוג של nginx על השרת מגלה ששכחתי להתקין את  php7.4-memcache שהמדריך הנ"ל לא מחשיב כ common extension. הרצת:

sudo apt install php7.4-memcache

וריסטרט לשרת פתרו את הבעיה.
שדרוג

Categories
וורדפרס

2020

שנה חדשה היא הזדמנות טובה להחלפת תבנית. אז ברוכים הבאים ל-2020, או כמו ש WordPress קוראים לה: TwentyTwenty.

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

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

Image license: CC BY-NC 4.0 pngall.com

Categories
וורדפרס קוד פתוח ותוכנה חופשית

וורדפרס 5.0

גרסה חדשה של וורדפרס יצאה השבוע, והבלוג קיבל את השדרוג המתחייב. על הדרך, עברתי לתבנית 2019 החדשה (הקודמת הייתה 2016).

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

Categories
iPhone שטויות שמוצאים באתרים

איפון 8 או X?

בקרוב יגיעו האייפונים החדשים לארץ (לפי iDigital: ״בצמוד להשקה בארה״ב״), ושאלת מיליון הדולר — או יותר נכון 1000 הדולר — היא אייפון 8 או X?

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

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

Categories
מכוניות

8 ספרות

יש לי חיבה נסתרת למספרי מכוניות. מאז המכונית החדשה הראשונה של הורי (רנו 12, מודל 1972, מס: 644-486) ועד לאחרונה שלי (פיאט 500L, מודל 2014, מס: 64-249-32) אני זוכר כל מספר, וגם את ההיגיון מאחוריו: הספרה הראשונה בשנות ה-70 יצגה את האזור בארץ. 6 היה אזור ירושלים. בתחילת שנות השמונים, שתי הספרות האחרונות יצגו את השנה, אלא שמהר מאוד הבינו ש 90 אלף מספרים לא יספיקו לשנה שלמה, ועברו לשימוש ב 5 במקום 8. מכונית עם סיומת 54 יוצרה בשנת 1984. בשנות ה-90, שתי הספרות האחרונות יצגו את היבואן. המכונית הראשונה שקניתי (פיז׳ו 106xs, מודל 1996, מס: 84-360-04) הסתיימה ב-04 כמו כל המכוניות של פיז׳ו-סיטרואן באותה תקופה. יבואן BMW קיבל את הסיומת 16, שאותה ״זכה״ לשמר עמוק לתוך שנות ה-2000 בגלל מספר נמוך יחסית של מכוניות שנמכרו בכל שנה.

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

בתמונות: 8 ספרות על מכונית עם פנסים מאורכים, לעומת 7 ספרות על מכונית עם פנסים מרובעים.

לוחית רישוי 8 ספרות

לוחית רישוי 7 ספרות

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

Categories
זמן

לייב בלוגינג – עד לשניה ה-1,500,000,000

Categories
אישי קוד פתוח ותוכנה חופשית

חם יותר מיולי

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

Hotter then July album cover

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

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

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

Categories
וורדפרס לינוקס קוד פתוח ותוכנה חופשית

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.

Categories
לינוקס קוד פתוח ותוכנה חופשית

רק שניה

רק שניה מפרידה בין השעה 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 מיליארד.

השעון מתקתק…