הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
סקירה מקיפה של אפליקציות לימוד ערבית
ללמוד שפה חדשה זה קשה. לימוד עצמי בא עם עוד סדרה של קשיים בגלל שאין מורה שיכול לתקן אותך. פה אפליקציות לימוד שפה יכולות לעזור מאוד - כי הן יכולות לתת משוב מידי, לתת תרגל מקיף ולהיות זמינות בקצות האצבעות.
אז כמה זה יכול להיות קשה: קורס מקוון עם הרבה תרגול שיאפשר לך ללמוד טוב? ועוד בעידן AI?
אז מסתבר שלבנות אפליקציות טובות זה מאוד קשה. הרוב נכשלות בדברים בסיסיים. ומעטות האפליקציות שבאמת מלמדות בצורה אפקטיבית - כלומר מאפשרות להתקדם עם לימוד ערבית.
הדרישות שלי פשוטות:
- לימוד עצמי - לא מורה מקוון
- קורס הדרגתי מהבסיס למתקדם כולל תרגול דקדוק, אוצר מילים וכד
- לא רק כרטיסיות בסגנון Anki - אוצר המילים ילווה בהקשר וכד' ובניית משפטים
אז אחרי שבדקתי כ־15 אפליקציות כולל מפותחות בארץ הגעתי ל־3 שבאמת עובדות ומקדמות אותך. עבדתי עם שלושתן בצורה רצינית והתקדמתי, השכלתי. - שילמתי מנוי לשלושתן: דואולינגו - Duolingo, כלילה - Kaleela ומנגו Mango Languages ולא מצטער על אגורה ששילמתי עליהן
המשך...שחררתי את CppCMS 2.0.1
הגרסה העדכנית של CppCMS הייתה ב־beta המון זמן גרסה 2.0.0 - לא טרחתי לשחרר אותה עד שהגיע אליי תלונה שב־vcpkg עדיין מופיעה גרסה 1.2.1 שאומנם עובדת אבל כבר לא מתאימה לעולם בו C++17 הוא סטנדרט.
אז הגיע זמן להפוך אותה ליציבה במיוחד שלאחרונה עשיתי כמה תיקונים הקשורים בחלונות ובאנדרואיד.
טוב... אולי הגיע זמן השקיע זמן בפרויקט שוב?
למה נטשתי את Boost אפילו שתרמתי אליו שתי ספריות בעבר
בעבר השתמשתי הרבה ב־Boost לטובת פרוייקטים שונים ב־C++. במיוחד לפני ש־C++11 הפך לנורמה. אבל לאט־לאט עם בעיות שבירת API השונות התחחתי להתרחק ממנו במיוחד כש־C++11 ויותר נתן מענה למרבית הבעיות הקריטיות ש־Boost פתר בעבר.
אז שנים רבות הסתדרתי בלי Boost. אפילו שתרמתי שתי ספריות בעבר Boost.Locale ו־Boost.Nowide - הן עכשיו מתוחזקות בצורה יוצאת דופן ע"י מפתח אחר.
עכשיו אני עובד על פרויקט גדול OpenLiveStacker שגם בו לא השתמשתי ב־Boost וגם היה לי מענה לבעיות נוספות דרך CppCMS שאני משתמשו בו בפנים לטובת UI. הוא מיועד בעיקר לאנדרואיד ולינוקס אבל הבנתי שיהיה שימושי גם בחלונות ואז התחלתי לעשות הסבה לחלונות.
בגדול הקוד גם ככה היה כמעט ולא תלוי בפלטפורמה אז לרב זה היה חלק ואז הגעתי לבעיה פשוטה של להריץ תהליך חיצוני, להרוג אותו אם צריך, לקבל סטטוס. בלינוקס ואנדרואיד פשוט עשיתי fork/exec/kill/wait. ואז הגעתי לחלונות. טוב אז מה עושים? אמרתי למה להמציא גלגל פשוט אקח Boost.Process - גוגל זריז - הוא בדיוק נותן מענה למה שאני צריך. אולי הייתי צריך להשתמש בו מלכתחילה? טוב נו. הסתכלתי במדריכים כתבתי, הורדתי גרסה אחרונה 1.88 של Boost לחלונות מקמפל ו־... לא עובד.
השגיאה bp::child לא מוגדר! טוב מוודא שאני פותח את הגרסה אחרונה של התיעוד (גוגל לא תמיד מביא אותה) והפלא הפלא אין יותר bp::child יש bp::process! מה קרה? אכן API השתנה. מתי זה קרה? לפני כשנה באוגוסט 2024. כלומר אם הייתי משתמש ב־Boost.Process מלכתחילה הקוד היה נשבר. (כדי להשתמש ב־api ישן צריך לעשות include וליצור aliases וכד)
שורה תחתונה - הם שברו API לגמרי. לא הוסיפו API חדש עם bp::process אלא מחקו את הקיים והחליפו. זה הזכיר לי לגמרי למה הפסקתי להשתמש ב־Boost. אז עשיתי אחורה פנה, ופשוט תחת ifdef כתבתי קוד עם שימוש ב־CreateProcess של חלונות ו... זה זה עבד ללא דופי.
עצוב. איך מפתחי תוכנה פשוט לא מבינים את המשמעות של תאימות API לאחור.
שבירת API בלי סיבה מוצדקת זה פשע נגד הקהילה
באתי לבנות את הפרויקט שלי OpenLiveStacker עם OpenCV אחרון 4.11 - הכל נופל. נעלמו אופרטורים +/- על פעולות וקטוריות. לדוגמה הקוד הבא:
cv::v_float32x4 zero = cv::v_setall_f32(0.0f);
cv::v_float32x4 one = cv::v_setall_f32(1.0f);
int limit = N/4*4;
for(;i<limit;i+=4,p+=4,d+=4,f+=4) {
cv::v_float32x4 v=cv::v_max(zero,cv::v_load(p) - cv::v_load(d));
v = cv::v_min(cv::v_load(f) * v,one);
cv::v_store(p,v);
}
פשוט לא מתקמפל כי הסירו אופרטורים של חיבור/חיסור. למה? כובע!
איזו זאת יש לכם לשבור את הקוד של האחרים ועוד בפרויקט ענק שמשתמשים בו בכל העולם ועוד בלי סיבה אמתית.
טוב, נחכה ונראה
פריסת מקלדת "חדשה-ישנה"
בעקבות מעבר לעבודה חדשה אני נאלץ לעבוד חלק מהזמן בחלונות. בלינוקס התרגלתי ל־LyX שנותנת לי ניקוד בצורה נוחה, מקף־עליון וגם צירופים RLM/LRM שמסייעים בכתיבה של עברית ואנגלית ביחד.
אבל מה פריסת מקלדת בחלונות 10 באה עם התקן החדש SI-1452-2. אז התחלתי לעבוד איתו ולמען אחידות העברתי בבית את המחשב השולחני לתקן מקלדת הזה במקום LyX. מה ההבדל בגדול? במקום ללחוץ על shift לוחצים על Alt-Gr או Alt ימני. לקח מעט זמן להתרגל. אבל אני חייב להגיד שנעשתה פה עבודה מעולה! כל הכבוד לכל הפעילים ביניהם שחר שמש ועמותת המקור.
אני יודע שזה נעשה לפני יותר מעשור אבל היום באמת אני מרגיש שאפשר להוציא את LyX לגימלאות. כמה יתרונות מבחינתי:
- אפשר לכתוב קיצורי דרך באנגלית בלי להחליף שפה – זה מאוד יקל על אנשים שרגילים להשתמש בזה
- מיקום קיצורי RLM/LRM הרבה יותר הגיוני – על מקשי סוגריים.
- בנוסף למקף־עליון הנמצא במקש "-/_" יש גם מקף "–" על מקש "+/=".
- סימן ₪ נמצא במקש של $ שזה מקל מאוד לזכור את מיקומו
- זה עובד גם בחלונות כך שלא צריך לשבור את הראש אם רוֹצִים לְנַקֵּד משהו או עוברים ממערכת הפעלה אחת לאחרת מידי פעם – זה כבר שם!
באיחור של יותר מעשר שנים: תודה רבה!
