(פוסטים בתיוג וורדפרס.)

מוורדפרס ל-11ty

1 באוגוסט 2020 NunjucksComments11tyוורדפרס

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

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

wp gatsby-markdown-export --skip_copy_uploads --skip_original_images --directory=/var/www/html/md-export

זה מייצר אוסף של קבצי Markdown, שנראה בערך ככה:

היררכיית קבצים לאחר היצוא מוורפרס

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

בשלב הבא בחרתי ב starter project מתוך דף התבניות של Eleventy. המבחר די דל, ואין עדיין אף תבנית מותאמת עברית. לבסוף, בחרתי בתבנית 11r. זוהי תבנית dark mode, ומבוססת Tailwind CSS, ורוב היפוכי הכוון הגיעו out of the box, ברגע שהוספתי dir=rtl לתגית הראשית של הדף. את התוצאה אחרי הגיור תוכלו למזלג מהריפו שלי. את הפוסטים בהיררכיה המקורית מעלים לתיקיית src/posts, ואחרי מעקב אחרי ההוראות בREADME, אפשר לראות את התוצאה.

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

האפשרות שאני בחרתי בה היא שימוש ב Staticman. הרעיון כאן הוא שכל תגובה היא בעצם קובץ שנשמר גם כן בgit, ומנגנון אישור התגובה נעשה באופן דומה לאישור Pull Request. המנוע של Staticman דואג לייצר את ה PR-ים, כך שמבחינת המשתמשים באתר שליחת התגובה מתבצעת באמצעות טופס על הדף, בדומה לוורדפרס.

בנוסף לזה, יש צורך לייבא ולשמר את התגובות מהבלוג הישן. כאן השתמשתי בכלי שבמקור נכתב לטובת העברת תגובות לאתרים סטטים מבוססי Jekyll. נדרשו שינויים קלים, אבל בסופו של דבר גם כאן זה מסתכם בהרצה לפי ה README, והוספה של כל קבצי התגובות תחת התיקיה src/globals/comments כך שכל התגובות לפוסט מסויים מרוכזות תחת תיקיה לפי ה slag של הפוסט. מי שמעוניין יכול לקרוא עוד על מודל הנתונים של Eleventy.

התוספת האחרונה היא מעט קוד שידע לשלוף את התגובות המתאימות לכל פוסט ולהציג אותן לפי ההיררכיה המקורית. הקוד הזה מחולק בין קוד JS, שאותו ניתן למצוא ב /filters/comments-tree.js ונראה כך:

module.exports = (obj) => {
const allComments = obj ? Object.values(obj) : [];
const commentsById = {};
allComments.forEach(c => {
c.id = c.id || c._id;
commentsById[c.id] = c;
});
const rootComments = [];
allComments.forEach(c => {
if (c.parentId && c.parentId !== "0") {
const parent = commentsById[c.parentId];
if (parent) {
parent.replies = parent.replies || [];
parent.replies.push(c);
} else {
console.error(`can't find parentID: ${c.parentId} for ID: ${c.id}`);
}
} else {
rootComments.push(c);
}

});
return rootComments;
};

והחלק המשלים שנמצא בתבנית התגובות src/includes/comments.njk. על ריקורסיה ב nunjucks למדתי מהissue הזה. עכשיו ניתן לראות גם את התגובות בהתאם לדו-שיח שנוהל בזמנו:

תגובות משורשרות

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

עוברים דירה

18 ביולי 2020 DockerHostingוורדפרסלינוקסקוד פתוח ותוכנה חופשית

Docker אחרי שלוש שנים שבהן האתר הזה רץ מעל שרות האחסון של 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

php 7.4

1 במרץ 2020 nanophpviוורדפרסקוד פתוח ותוכנה חופשיתלינוקס

חלפה למעלה משנה מאז שהתמיכה ב-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

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

2020

31 בדצמבר 2019 TwentyTwentyוורדפרס

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

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

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

Image license: CC BY-NC 4.0 pngall.com

וורדפרס 5.0

8 בדצמבר 2018 וורדפרסקוד פתוח ותוכנה חופשית

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

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

עדכון אוטומטי לשעון קיץ/חורף בוורדפרס

12 בספטמבר 2010 וורדפרסשעון קיץ

גם אני הלכתי לישון לפי שעון חורף מתוך הנחה שיש לי שעה נוספת וקמתי לפי שעון קיץ כי התחיל אור בחוץ והגוף עדיין רגיל. כדי להעביר את הזמן עברתי בין שעוני הבית (14+ למי שמתעניין) כדי לראות שלא שכחתי אף אחד, וכדי לראות שכל מי שאמור להתעדכן אוטומטית אכן עשה את זה. כחלק מסבב השעונים ניגשתי גם לעדכן את אזור הזמן של הבלוג הזה. בהתחלתי החלפתי את UTC+3 ב UTC+2, אבל אז שמתי לב שההודעה המצחיקה (Unfortunately, you have to manually update this for Daylight Savings Time. Lame, we know, but will be fixed in the future) שהופיעה בעבר מתחת לשדה אזור הזמן נעלמה. חיפוש חוזר במעלה הרשימה גילה שניתן לבחור את ירושלים או תל-אביב ולקבל (אחרי שמירה) את ההודעה הזאת במקומה:
המאה ה21 הגיעה לוורפקס
חיפוש קצר העלה את הדיון הזה שלפיו גם גרסה 2.8 (שבה הייתי קודם) אמורה לתמוך בעדכון אוטומטי ולא ברור לי כ"כ למה הפיצ'ר הזה לא עבד אצלי קודם, אבל העיקר שמעכשיו יש לי פחות שעון לעדכן.
אה… ואף מילה על חרדים, יום כיפור ואם צריך או לא לאחר את המעבר לשעון חורף.

הקץ לספאם?

2 בדצמבר 2009 וורדפרס

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

הבלוג שודרג לוורדפרס 2.7

15 בדצמבר 2008 וורדפרס

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

TwentyTwenty‏ (1) וורדפרס‏ (8) SSG‏ (1) 11ty‏ (3) בלוג‏ (1) Docker‏ (1) Hosting‏ (1) לינוקס‏ (2) קוד פתוח ותוכנה חופשית‏ (5) Nunjucks‏ (1) Comments‏ (1) staticman‏ (1) ie8‏ (2) מיקרוסופט‏ (2) דפדפנים‏ (10) כללי‏ (3) אורנג'‏ (1) אתרים בארץ‏ (1) שמישות‏ (3) BlogDay2008‏ (1) habari‏ (1) הבארי‏ (1) CSS‏ (3) פיירפוקס‏ (10) אופרה‏ (2) ספארי‏ (3) נגנים‏ (3) Flip4Mac‏ (1) מק‏ (3) גראצ'ו מרקס‏ (1) ogg‏ (1) video‏ (1) Uncategorized‏ (1) שטויות שמוצאים באתרים‏ (3) אתרים תומכי פיירפוקס‏ (1) לאומי-קארד‏ (1) ie6‏ (1) acid2‏ (1) אינטרנט אקספלורר‏ (1) Google wave‏ (2) בלוגיה‏ (1) תפוז‏ (1) gps‏ (2) ביקורת מוצרים‏ (1) garmin‏ (2) speedtraps‏ (1) ווידג'טים‏ (4) רכבת ישראל‏ (2) מזג אויר‏ (2) חלונות‏ (1) wordpress‏ (1) שעון קיץ‏ (1) חולצה‏ (1) nano‏ (1) php‏ (1) vi‏ (1)