פלאנט תוכנה חופשית בישראל (Planet FOSS-IL)

19 January, 2021

Gabor Szabo

New course: Testing in Perl

For the full article visit New course: Testing in Perl

19 January, 2021 07:41 AM

17 January, 2021

Hetz Ben Hemo

צילום ואימוץ טכנולוגיה

רכשתי לאחרונה את העדשה החדשה של Tamron למצלמות APS-C של סוני. זו העדשה הראשונה שיצאה מחברת Tamron שמאפשרת טווח רחב (17-70, לפני חישוב MFT) ועם F-STOP של 2.8, עם תמיכה לאוטו-פוקוס, עם יצוב תמונה – וכל זה במחיר של 3299 שקל. בשבילי – הפונקציונאליות הזו והמחיר הזה, גרם לי להיות בין הראשונים בארץ לרכוש זאת מהיבואן המקומי. (אגב, אם אתם חושבים לרכוש את העדשה הזו עבור מצלמת סוני מסידרה A5XXX-A6XXX ואתם נוסעים [לא בזמן קורונה] הרבה לארה"ב – עדיף לרכוש אותה משם, הואיל ושם מקבלים אותה עם 6 שנות אחריות לארה"ב).

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

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

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

צילום ב-4K הוא כמובן שאינו חובה, אבל יש טכנולוגיות רבות שיצאו בשנים האחרונות שכדאי מאוד לאמץ אותם, בין אם מדובר בסטילס או וידאו. קחו ןלדוגמא את עניין הצילום ב-RAW (סטילס) או LOG (וידאו): ב-2 המקרים, הצילום בפורמטים הנ"ל מאפשרים להוציא תמונה הרבה יותר טובה, גם אם היא צולמה בתנאים גרועים. מרקוס לדוגמא (והוא אינו היחיד) מתעקש לצלם ב-JPEG, שזו דרך מצויינת "לחסל" אפשרות שיפור תמונה לאחר שצולמה.

נקודה אחרת שאפשר לראות ממש "2 מחנות" (אחד בעד ואחד נגד) הוא עניין האוטו-פוקוס. יש כאלו שנשבעים לא להשתמש ומצהירים שאין בכך צורך בשעה שהמחנה השני לא ירכוש מצלמה שאין לה אוטו-פוקוס מעולה (סוני או קאנון, למעט ה-R5 שהוא גרוע בפוקוס בוידאו. מנסיון!). אני במחנה של ה-אוטו-פוקוס מסיבה אחת פשוטה: כשאין לי (ואין לי) משאבים לשכור צלם, אני רוצה להתרכז יותר בהכנה וצילום תוכן ולא לדאוג שאינני בפוקוס או לחטוף עצבים מפוקוס "נושם"' ולכן – בשבילי מצלמות של פאנאסוניק היא מצלמה די גרועה לצילום וידאו (היא ממש גרועה באוטו-פוקוס) ולעומת זאת מצלמות כמו ZV1 ו-A6300 של סוני שיש ברשותי – מעולות. ההתנגדות ל-אוטו-פוקוס של אחרים כיום, נראית לי למען האמת די מוזרה: צלם נשלח לצלם ראיון עם 2-3 מצלמות. מה עדיף – מצלמה ש"ננעלת" על העין של המרואיין ונותנת פוקוס מעולה לאורך כל ההקלטה, או בדיקה מתמשכת בין כל המצלמות שהכל נמצא בפוקוס, כל זמן הצילום?

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

הטקסט המלא

17 January, 2021 12:41 PM

ik

ממשקי משתמש – יצירתיות מול שימושיות

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

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

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

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

נלקחת מ: https://commons.wikimedia.org/wiki/File:Mission_Accomplished_-ALS_Ice_Bucket_Challenge(14848289439).jpg

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

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

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

זה התחיל בערך בעשור האחרון – יותר ויותר חברות הולכות לאנשים שהמקצוע שלהם – "חווית משתמש" ו/או "תכנון ממשקים", ונראה כי מאז שזה מתרחש – לי קשה מאוד להתמודד עם הרבה מאוד תכנים. שמתי לב כי ככול שהממשק נקי יותר וממוקד יותר במה שאני צריך ממנו – ככה קל לי יותר לעבוד איתו, בעוד שככול שהוא עשיר יותר בצבעים וכו' קשה לי להתמודד איתו.

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

אני חושב כי אנשי ux/ui חייבים ללכת ולעשות שיעורי בית מול דבר ראשון אלו שצריכים להשתמש במערכת ולהתחיל להקשיב לאנשים עם בעיות שונות, ורק אז לחשוב איך לעצב את זה בצורה "סקסית" ו"מושכת", אחרת הניתוח הצליח, אבל החולה מת.

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

17 January, 2021 07:38 AM

14 January, 2021

Artyom Beilis

1984 הדיגיטלי

בעקבות פרשת טראמפ, החלטתי להבין מה קרה שם בגבעת הקפיטול. לא מהפרשנים אלא מהמקור. מה הייתה ההסתה לכאורה שגרמה להמון משולהב להתפרץ. פתחתי גוגל: trump capitol speech, הגעתי למלא פרשנויות אבל לא למקור. שיניתי גרסאות החיפוש אותה תוצאה... מוזר. פתחתי bing בקישור השני מצאתי וידאו מלא. זה צרם לי אבל המשכתי הלאה. ראיתי ש־twitter החזירו את החשבון לעת עתה.

היום מדברים בחדשות שהחשבונו נחסם לצמיתות. מעניין. Googe: twitter trump. מגיע לעשרות כתבות של חדשות על חסימת חשבון - אבל לא הקישור לחשבון עצמו. הפעם אני פותח bing במידי ובקישור הראשון אפשר למצוא את חשבונו החסום - ממקור ראשון. הפעם האסימון נפל.

1984 מויקיפדיה

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

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

אבל עד עכשיו הנחתי שחיפושים בגוגל יביאו אותי לתוכן הרצוי. מסתבר גם פה - אין להסתמך על ספק יחיד. תארו לעצמכם אם בחיפוש בגוגל אחרי פרשת תיק 4000 או המימד החמישי - כל התוצאות הראשוניות היו מביאות אותי ל"אין כלום כי לא היה כלום" או להפך "הינה הוכחה לשחיתות"... כוח עצום. כוח משחית!

ובעיקר מטריד...

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

טוב אז מאין תבוא הישועה? bing? duck-duck-go? yandex? יש עוד אלטרנטיבות?

מישהו מכיר מנוע חיפוש מבוסס FOSS?

התמונה נלקחה מויקיפדיה

הטקסט המלא

14 January, 2021 11:32 PM

12 January, 2021

Gabor Szabo

Daily Activity

For the full article visit Daily Activity

12 January, 2021 09:50 AM

11 January, 2021

ik

עלייתן ונפילתן של רשתות חברתיות – דעה

ב2007 קיבלתי הזמנה לקחת חלק מאנשים מובחרים באמת ברשת חברתית חדשה ואנונימית בשם פייסבוק.

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

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

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

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

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

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

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

בעל האתר כרגע מתמודד לראשות עיריית לונדון, אולי במטרה לשנות את המקצוע בעקבות הנושא.

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

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

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

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

אם לפני 3,000 שנה היו פותרים בעיות במלחמות של מלכים אחד בשני, כיום מלחמות הכוח הן בין תאגידים שונים בראש ובראשונה.

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

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

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

אוהבים לאכול רק צמחים? גם לכם יהיה עולם משלכם.
אוהבים לאכול רק בשר? גם לכם יהיה עולם משלכם.

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

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

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

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

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

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

אבל שוב, אינני עורך דין (או רוצה להיות אחד) אך כך אני מבין ומנתח את הדברים.

11 January, 2021 05:16 AM

10 January, 2021

Artyom Beilis

רשת חברתית חופשית או פעם זה היה אחרת

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

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

אבל מה... אנחנו בעצם נעולים. אם אין לך twitter או facebook או פלטפורמה נפוצה אחרת אתה לא תגיע לקהל היעד שלך. בעצם מספר רשתות חבריות שולטות בשוק ובעלות כוח רב בהשפעה על דעת הקהל וחשיפה של אנשים כאלה ואחרים. זה לא חדש. עוד מתחילת עידן הפייסבוק ראיתי כיצד הוכחדו מספר טכנולויות של רשתות חברתיות של פעם. כי באמת פייסבוק נתן פלטפורמה זמינה ונוחה ובעלת רף כניסה מאוד־מאוד נמוך למשתמש קצה. אבל מה האלטרנטיבות שהיו ונכחדו?

בלוגים

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

מוכר? נכון - זה ממש כמו פייסבוק! רק במספר הבדלים

הקמת בלוג הייתה עניין לא טריוויאלי שדרש רצינות חשיבה וכתיבה יחסית מסודרת

בד"כ אנשים לא פרסמו "מאמרים" בסגנון

בוקר - 16 גרביים - אף זוג 😕

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

אלא השקיעו בתוכן איכותי. ומה הקמת בלוג לא הייתה עניין מסובך אבל גם לא משהו פשוט.

היה קשה ליצור קשרים חברתיים

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

ברוב הפלטפורמות הפתוחות התוכן היה שלך

אם פתחת בלוג ב־wordpress יכולת להוריד את התוכן/גיבוי בכל רגע ולהעביר אותו לשרת wordpress פרטי - זה אומנם לא שיטה פשוטה למשתמש ביתי, אבל כל דמות חשובה ומשפיעה הייתה יכול לעשות זאת. ולכן הדרך היחידה להוריד את הבלוג מרשת היה בעזרת צו בית המשפט - לטוב ולרע.

פורומים

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

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

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

אז מה אפשר לעשות מלבד לדבר על זכרונות הימים שעברו?

  1. להחזור ולכתוב בפלטפורמות פתוחות כמו בלוגים ולהפנות אליהם מפייסבוק טוויטר ורשתות אחרות על מנת שהתוכן יישאר פתוח ויהי מה.
  2. להקים פרוטוקולים וסטנדטים להחלפת מידע ביו הבלוגים וייבוא/ייצוא מידע. כבר יש תשתיות לזה ופרוטוקולים קיימים - צריך לחדש ולהתאים אותם לדור הנוכחי
  3. לתת לשוק להקים פלטפורומות מתחרות שעובדות על בסיס המידע החופשי והזמין שיהיה

    • קל להתחיל - לכל אחד
    • לק לעבור מפלטפורמה אחת לשניה - על ידי דרישה לעמידה בתקנים חופשיים ומבוזרים

מי מרים ו/או הרים כבר את הדגל?

הטקסט המלא

10 January, 2021 11:02 AM

09 January, 2021

Guy Rutenberg

Checking Thunderbolt security on Linux

Thunderbolt connections may provide DMA access to the host and pose a security risk. There are two mechanisms to mitigate against Thunderbolt DMA attacks in Linux, and you would probably want to verify at least one of them is active.

IOMMU DMA Protection

This uses IOMMU to explicitly allow what memory Thunderbolt devices can access via DMA. This is the prefered way to protect against Thunderbolt-based DMA attacks. It is available on recent hardware (~2018 and forward) and requires Kernel >= 5.0. You can verify IOMMU DMA Protection is enabled using:

cat /sys/bus/thunderbolt/devices/domain0/iommu_dma_protection
1

Value of 1 means it is enabled. This setting is controlled through UEFI. At least in Lenovo systems it is named cat "Kernel DMA Protection" (like the Microsoft name for this feature). You can find it under the Security tab.

Thunderbolt protection

This is the old style of protection, that preceded IOMMU protection. If configured properly, it allows the user to explicitly authorize Thunderbolt devices before granting them DMA access.

$ cat /sys/bus/thunderbolt/devices/domain0/security 
none

none means no protection at all (that will also be the case if you have IOMMU DMA protection enabled). user requires the user to authorize a Thunderbolt device each time it’s connected. secure is like user but devices authorized in the past do not require re-authorization. dponly only allow DisplayPort pass-through.

09 January, 2021 06:44 PM

29 December, 2020

Guy Sheffer

How to reuse your old Raspberry Pi as a Telegram-controlled Alarm Clock – AlarmPi

RaspberryPi Alarm clock

RaspberryPi alarm clock

Hey all,

So do you have a RaspberryPi not doing anything at home? Got that 2GB class 4 SD card that you just don’t know what to do with it? Well this guide is for you! It will let you turn your Pi in to an IOT alarm clock, no code, no complicated commands, just flash, edit two text files and you are good to go. The alarm clock is controlled from Telegram, so you can set it and turn it off from your smartphone. I find that usually using my phone wakes me up. So it’s useful for me. You can also edit the alarm and use any mp3 file you want.
The code is all available in github. AlarmBot is the Telegram Bot. An AlarmPi is the distro (built with CustomPiOS yet again).

Steps to install

  1. Download the image here
  2. Unzip and flash it to an SD card (small enough to fit a 2GB card)
  3. While it downloads and flashes, let’s create a telegram bot and get a token for it!
    1. Send a message to bot father
    2. Send /newbot

      Setting a new bot

      Setting a new bot

    3. Copy the telegram token that is in the last message
  4. Open newly flashed image and edit two files, one for the wifi, and one for the bot token:
    1. Put in alarmpi-wpa-supplicant.txt your wifi address (skip if using Ethernet cable). Here is how it should look:
      wifi
    2. In config.ini,  paste the newly created bot token from step 3. This is where the token goes:
      token
    3. optionally, you can change the alarm.mp3 file to the sound of your choice.
  5. Boot your pi and connect it to speakers, wait a bit, because it will reboot internally twice. And send /start to your bot.
  6. You’re done! Let’s see how we can set alarm with telegram!

How to use the telegram bot

Once you got a reply to /start and you know the bot is working you can use “/help” to list all the available commands.
Screenshot_2017-08-12-16-42-42~01.png

First, set the /timezone to your location, and make sure you can see the correct time with the /time command.

Now let’s set an alarm, type /new and you will get the option to pick an alarm that works daily or weekly (code contributions would be great to add more types of alarms).

Screenshot_2017-08-12-16-44-42~01.png

Once you have alarms, you can manage them in the /list command.

Screenshot_2017-08-12-16-46-53.png

You can disable, or delete commands using this menu. Selecting the bell will disable it, the X will delete an alarm, pressing on the alarm names would close the table.

To stop an alarm that is going, send /stop to the bot.

You can test the alarm using the /test command.

There is no reason why any Pi on earth should not be doing something

So this AlarmPi distro is usable, it lets you burn and flash a device within minutes and make it useful instead of lying and collecting dust in your house. The reason people are not using Pis is because making them do something requires “a guide”, aka list of instructions you are probably going to get wrong to do something simple. Building something as robust as this would take hours, and would be hell to maintain and receive code contributions. But AlarmPi is easy to read and modify. There is a repo for the bot, and a repo for the distro. If a new rapsberrypi comes out and there is a new Raspbian, all you got to do is rebuild and release. No manual editing. And takes less time to build and supports over 40 devices already which run Armbian.

The code base of AlarmBot lets you control crontabs, it could be used for controlling

As always, code contribute are appreciated!

Full text

29 December, 2020 01:22 PM

How to build a telegram-controlled sous vide using CraftBeerPiOS

Sous vide pot with tempreture sensor

Sous vide pot with temperature sensor

Hey all,
So I’ve been cooking sous vide a few months now, with a sous vide I built myself. Its connected to a RaspberryPi and can be controlled via the web or telegram.

No soldering required!

Flash a ready made image to the Pi!

Bill of materials

  1. Slow cooker (crockpot) with a ‘high’ option. You can get them second hand, they are pretty cheap. Make sure it has no digital control.
  2. Raspberry Pi, even version 1 should work – also an SD card and power supply for the Pi.
  3. Pi Plate prototype board. Make sure you get one that matches your Raspberry Pi footprint if you are re-using an old Pi.
  4. Solid state relay that can handle mains
  5. Power cables
  6. Data cable to connect the relay to the Pi
  7. Power socket and power connector for your country – get locally so it fits your country standard.
  8. Water resistant temperature sensor DS1820 x2 – Get a spare one so you can measure the temperature difference and make sure your sous vide is uniformly heated.
  9. Important – 3D printed enclosure for raspberrypi (Raspberry Pi 1) and enclosure for the relay – you are mixing water and electricity in a kitchen, don’t be an idiot.

Assembly

  1. Build the following construction from the relay. You need phase to go via the relay, and in to the sous vide. Please look at this chart to understand what cable is equivalent in your country.

    Relay assemply

    Relay assembly – brown writes is phase

  2. Close up the relay in its box, and attach the power plugs

    Relay in its case and power sockets in place

    Relay in its case and power sockets in place, transparent sticky tape protects case

  3. Wire the temperature sensor DS1820 to GPIO pin 4 (you can use one on the screw terminal and another on the jumper slot, the second one is only to make sure you have a working sous vide.
  4. Connect SSR – terminal to ground, and + terminal to GPIO 17 (you can pick other GPIOs if you want).

    Raspberypi wiring . Two temp sensors on GPIO 4, one Solid state relay (SSR) on GPIO 17

    Raspberypi wiring . Two temp sensors on GPIO 4, one Solid state relay (SSR) on GPIO 17

  5. plug the relay in the your power supply and plug your slow cocker to it. DANGER: Make sure your connections are right with a multimeter before. If you are unsure don’t do this. Mains power can kill!
  6. That’s it!

Rasepberrypi and relay in cases

Rasepberrypi and relay in cases

Sous vide pot with tempreture sensor

Sous vide pot with temperature sensor

Software

I have built a distro called CraftBeerPiOS based on CraftBeerPi 2.2. Why 2.2 and not 3? Because there is an issue with the license. I would have picked something else, but Manuel the developer clearly writes in the README that CraftBeerPi is open source. Its dodge I know, I would welcome someone rewriting something like this. I would help build a distribution.

Why telegram? (which is optional)

I found that telegram was much faster and handy while I am in the kitchen, or if I want to turn the sous vide on before I come home. So I warmly recommend it over CraftBeerPi’s interface. I will mark all its step as optimal in case you don’t want it.

Anyway,

  1. All you got to do is just flash the img to the Pi. Which can be downloaded here. It has both CraftBeerPi and a telegram bot pre-install. The bot is written by me and is open source.
  2. [optional telegram] Create a telegram bot using the botfather here is an explanation how to do this. Its really easy – basically you text a bot the command /newbot, you are asked a few questions and get an API token, you place this token in the file /boot/config.ini where its asked for.

    Setting a new bot

    Setting a new bot

  3. Open the sdcard /boot partition, you can do this on windows. And edit the file /boot/craftbeerpios-wpa-supplicant.txt

    Set wifi setting you need to change

    Set wifi setting you need to change

  4. [optional telegram] Add your telegram token

    config.ini setting

    config.ini, Telegram token goes here

  5. Pop the SD card in the Pi and boot it
  6. You might want to attach a screen on first boot and make sure everything went well. If it did, you should have on your network a service on http://craftbeerpi.local:5000 .If you can’t find the hostname try the Raspberrypi’s IP address. Depending on your network router it might not work.
  7. Follow on that link the wizard to set up your temperature, relay, and kettle.

    CraftBeerPi all set up with a thermometer and relay

    CraftBeerPi all set up with a thermometer and relay

    Hardware setting in craftbeerpi

    Hardware setting in craftbeerpi

    Screenshot_20180929_121241.png

    How the kettle configuration looks

  8. [optional telegram] Text your new telegram bot the command /start this should make your telegram user appear in the telegram control panel located at http://craftbeerpi.local:5001.
  9. Login default user is admin, password 1234
  10. [optional telegram] Set yourself as an admin, otherwise you can’t control your sous vide. This is for security reasons.

    CraftbeerPiBot access control

    CraftbeerPiBot access control

  11. [optional telegram] Send /help to the bot to see the available commands. You can set the sous vide temperature, turn it on and off.

    Sous vide bot list of commands

    Sous vide bot list of commands

Thats it, enjoy! Share recipes!

Sous vide pork belly cooked in maple and liquid smoke and rosemary for 18 hours at 72C

Sous vide pork belly cooked in maple and liquid smoke and rosemary for 18 hours at 72C

Full text

29 December, 2020 01:22 PM

27 December, 2020

Ilya Sher

Ops Tools Marketing Bullshit Dictionary

This article is aimed mostly at juniors. Lacking experience, you are a soft target for marketing bullshit. I encourage critical thinking for evaluation of products and services that are forced down your throat marketed to you.

animal-2599814_640

Background

The purpose of dishonest marketing is to mislead you into using a product and/or a service that you don’t really need. This can waste your time and money.

Separate the products from marketing. The products themselves are not inherently good or bad. The main question is whether to use product X or Y (and how) or code the solution yourself given your specific situation: team, skill levels, requirements, etc. This post will guide you how to see through marketing bullshit when evaluating these products.

The list below is not comprehensive and I might add items later.

Products Marketing Bullshit

( in no particular order )

Cool / coolness

If something is “cool” and you use it, you might write a blog post about it. It has some PR value to you or your company. Other than that, “coolness” of a product has nothing to do with its usefulness for your situation/use case.

Our product is so much better than X

Note that often X will be the worst possible alternative. For example, configuration management tools will most likely be compared to manual work rather to other configuration management tools or any kind of automation. Ignore and compare the suggested product to other viable alternatives.

Use our product or become irrelevant / Our product is [becoming] industry standard

The message is sometimes direct but often it is hidden between the lines. This is an attempt, many times successful, to exploit fear of missing out. Learn the underlying principles then decide whether you want to use one of the products, which come and go. Learning the underlying principles will take more time upfront but you will become more professional. If you are junior Ops, learn Linux and how to use it without any configuration management tools first; learn using the cloud without CloudFormation or Terraform first; see the problems which these tools trying to solve before using the tools.

Our customers include big companies such as X, Y and Z

You have to understand what these companies are using the product/service for. It can be a pilot for example. Check for common owners or investors. Remember that big companies make mistakes too. Anyhow, this is irrelevant for your use case and your situation until proven otherwise.

Success story

The formula is simple: deep shit + our product = great success. Look closely. Often deep shit + other sensible alternative solution would also be great success. For example, configuration management tools show manual process and then how it was automated. Chances are automating using scripts would be other viable alternative.

We abstract all the hard work away from you

You must understand what exactly is abstracted and how. After learning that, it might happen that the perceived value of the product will drop. Skip the learning step and start using the tool and you are in danger: you might need to learn whatever was abstracted in hurry when facing a bug in the tool or be at mercy of someone else to fix it. Remember: abstractions come at cost.

Don’t reinvent the wheel, we have figured out everything already

This exploits your fear of looking stupid. Would you use a spaceship for travelling from Moscow to Tokyo? I guess it would be cheaper to use a plane. Even if tool X solves your problem it might cost you time and complexity and it might be easier to code yourself or use simper tool. There are probably more legitimate reasons not to use tool X.

Companies marketing bullshit

Industry leading company

Who is not? Define your industry narrow enough and you are the leading company!  Simply ignore.


Did I miss something? Let me know here in comments or on Reddit. Have a nice day!

27 December, 2020 06:39 AM

15 December, 2020

Hetz Ben Hemo

סקירה קצרה: געגוע בין השורות

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

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

  • אם מישהו חושב שהספר הוא בעצם "ספר פתוח" על הסופרת, כדאי שינמיך ציפיות כבר מעכשיו. ניתוח קליל של הטקסט בספר מראה שיש סיפורים מהצד הגברי, סיפורים מהצד הנשי, ולא מעט סיפורים ויראליים. אני לא חושב שזה דבר רע, אבל חשוב לזכור שזו אסופת סיפורים, לא בדיוק "יומני היקר".
  • מי שראה את הסידרה "היהודים באים" בוודאי נתקל במושג "עם של קקות", ואני מתכוון לגברים שבחבורה. יש לא מעט גברים שמתנהגים כמו בבונים, שאוהבים ללכת על דברים בעייתיים (להיות עם מישהי, אבל חס ושלום עם טייטל של "בקשר"), שאוהבים לשלוח הודעות דביליות וחסרות טאקט (מישהי שבורת לב מפרידה, ואז האינפנטיל שולח לך הודעה של "מתגעגע") ועוד – ובנות צריכות לקחת זאת בחשבון
  • אבל גם בצד הנשי יש צורך לקחת בחשבון שרגש ושכל אלו 2 דברים שלא תמיד (אם בכלל) הולכים ביחד. אני יכול להמר שבכ-90% ממערכות היחסים שהסתיימו – היו סימנים מוקדמים לכך שהקשר הולך להיות בעייתי במקרה הטוב, או להסתיים במקרה הפחות נעים. אם בן הזוג אינו מתנהג כתמול שלשום, וגם אם הוא מכחיש זאת – כדאי לבדוק את הדברים לעומק, אם הקשר חשוב לך.
  • לפעמים כשאני קורא ספרים, אני מנסה לחשוב על איזו שאלה (או יותר) הייתי שואל את הסופר. במקרה הזה הייתי רוצה לשמוע מאלמוג – אלו לקחים היא הפיקה ממערכות היחסים הקודמות? מה באמת היא מחפשת כיום מבחינת קשר, והאם היא הפעם כן תשים לב לסימנים כשיופיעו (אם יופיעו) עננים אפורים מעל קשר מתהווה?

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

הטקסט המלא

15 December, 2020 01:01 PM

14 December, 2020

Guy Rutenberg

Quick crypto benchmarks

These are two easy ways to benchmark crypto operation speeds on a Linux machine. The first one is geared towards disk encryption operations:

$ /usr/sbin/cryptsetup benchmark 
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1      1691251 iterations per second for 256-bit key
PBKDF2-sha256    2144327 iterations per second for 256-bit key
PBKDF2-sha512    1615679 iterations per second for 256-bit key
PBKDF2-ripemd160  916587 iterations per second for 256-bit key
PBKDF2-whirlpool  701858 iterations per second for 256-bit key
argon2i       6 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
argon2id      6 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
#     Algorithm |       Key |      Encryption |      Decryption
        aes-cbc        128b      1209.7 MiB/s      3687.8 MiB/s
    serpent-cbc        128b        99.9 MiB/s       794.0 MiB/s
    twofish-cbc        128b       230.1 MiB/s       421.7 MiB/s
        aes-cbc        256b       937.9 MiB/s      2944.4 MiB/s
    serpent-cbc        256b       104.2 MiB/s       794.3 MiB/s
    twofish-cbc        256b       239.7 MiB/s       425.8 MiB/s
        aes-xts        256b      3634.5 MiB/s      3638.9 MiB/s
    serpent-xts        256b       762.0 MiB/s       747.9 MiB/s
    twofish-xts        256b       408.1 MiB/s       423.3 MiB/s
        aes-xts        512b      2956.6 MiB/s      2750.4 MiB/s
    serpent-xts        512b       746.9 MiB/s       752.9 MiB/s
    twofish-xts        512b       390.8 MiB/s       421.4 MiB/s

You can actually see how fast AES is compared to other block ciphers due to AES-NI.

The second is based on OpenSSL and provides by default a much more thorough benchmark:

$ openssl speed 
Doing md4 for 3s on 16 size blocks: 19471550 md4's in 3.00s
Doing md4 for 3s on 64 size blocks: 15103053 md4's in 3.00s
Doing md4 for 3s on 256 size blocks: 9059338 md4's in 3.00s
Doing md4 for 3s on 1024 size blocks: 3412145 md4's in 3.00s
Doing md4 for 3s on 8192 size blocks: 498545 md4's in 3.00s
Doing md4 for 3s on 16384 size blocks: 253216 md4's in 3.00s
Doing md5 for 3s on 16 size blocks: 28957162 md5's in 3.00s
Doing md5 for 3s on 64 size blocks: 16360429 md5's in 3.00s
Doing md5 for 3s on 256 size blocks: 7154365 md5's in 3.00s
Doing md5 for 3s on 1024 size blocks: 2218149 md5's in 3.00s
Doing md5 for 3s on 8192 size blocks: 297722 md5's in 3.00s
Doing md5 for 3s on 16384 size blocks: 147715 md5's in 3.00s
Doing hmac(md5) for 3s on 16 size blocks: 11929825 hmac(md5)'s in 3.00s
Doing hmac(md5) for 3s on 64 size blocks: 9120709 hmac(md5)'s in 3.00s
Doing hmac(md5) for 3s on 256 size blocks: 5318155 hmac(md5)'s in 3.00s
Doing hmac(md5) for 3s on 1024 size blocks: 2001226 hmac(md5)'s in 3.00s
Doing hmac(md5) for 3s on 8192 size blocks: 291987 hmac(md5)'s in 3.00s
Doing hmac(md5) for 3s on 16384 size blocks: 148269 hmac(md5)'s in 3.00s
Doing sha1 for 3s on 16 size blocks: 32235670 sha1's in 3.00s
Doing sha1 for 3s on 64 size blocks: 18479233 sha1's in 3.00s
Doing sha1 for 3s on 256 size blocks: 9153365 sha1's in 3.00s
Doing sha1 for 3s on 1024 size blocks: 3007449 sha1's in 3.00s
Doing sha1 for 3s on 8192 size blocks: 417697 sha1's in 3.00s
Doing sha1 for 3s on 16384 size blocks: 209985 sha1's in 3.00s
Doing sha256 for 3s on 16 size blocks: 17740446 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 9850795 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 4567892 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 1408055 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 190363 sha256's in 3.00s
Doing sha256 for 3s on 16384 size blocks: 95699 sha256's in 3.00s
Doing sha512 for 3s on 16 size blocks: 12097608 sha512's in 3.00s
Doing sha512 for 3s on 64 size blocks: 12203513 sha512's in 3.00s
Doing sha512 for 3s on 256 size blocks: 5178856 sha512's in 3.00s
Doing sha512 for 3s on 1024 size blocks: 1948042 sha512's in 3.00s
Doing sha512 for 3s on 8192 size blocks: 280301 sha512's in 3.00s
Doing sha512 for 3s on 16384 size blocks: 140813 sha512's in 3.00s
Doing whirlpool for 3s on 16 size blocks: 8456994 whirlpool's in 3.00s
Doing whirlpool for 3s on 64 size blocks: 4540393 whirlpool's in 3.00s
Doing whirlpool for 3s on 256 size blocks: 1868465 whirlpool's in 3.00s
Doing whirlpool for 3s on 1024 size blocks: 544008 whirlpool's in 2.99s
Doing whirlpool for 3s on 8192 size blocks: 74183 whirlpool's in 3.00s
Doing whirlpool for 3s on 16384 size blocks: 37414 whirlpool's in 3.00s
Doing rmd160 for 3s on 16 size blocks: 10071219 rmd160's in 3.00s
Doing rmd160 for 3s on 64 size blocks: 6032766 rmd160's in 3.00s
Doing rmd160 for 3s on 256 size blocks: 2779084 rmd160's in 3.00s
Doing rmd160 for 3s on 1024 size blocks: 880524 rmd160's in 3.00s
Doing rmd160 for 3s on 8192 size blocks: 118235 rmd160's in 3.00s
Doing rmd160 for 3s on 16384 size blocks: 59732 rmd160's in 3.00s
Doing rc4 for 3s on 16 size blocks: 148607832 rc4's in 3.00s
Doing rc4 for 3s on 64 size blocks: 39326183 rc4's in 3.00s
Doing rc4 for 3s on 256 size blocks: 8165860 rc4's in 3.00s
Doing rc4 for 3s on 1024 size blocks: 1913512 rc4's in 3.00s
Doing rc4 for 3s on 8192 size blocks: 236942 rc4's in 3.00s
Doing rc4 for 3s on 16384 size blocks: 117673 rc4's in 3.00s
Doing des cbc for 3s on 16 size blocks: 16847525 des cbc's in 3.00s
Doing des cbc for 3s on 64 size blocks: 4335887 des cbc's in 3.00s
Doing des cbc for 3s on 256 size blocks: 1087088 des cbc's in 3.00s
Doing des cbc for 3s on 1024 size blocks: 273049 des cbc's in 3.00s
Doing des cbc for 3s on 8192 size blocks: 34202 des cbc's in 3.00s
Doing des cbc for 3s on 16384 size blocks: 17021 des cbc's in 3.00s
Doing des ede3 for 3s on 16 size blocks: 6477330 des ede3's in 3.00s
Doing des ede3 for 3s on 64 size blocks: 1630515 des ede3's in 3.00s
Doing des ede3 for 3s on 256 size blocks: 408304 des ede3's in 3.00s
Doing des ede3 for 3s on 1024 size blocks: 101953 des ede3's in 3.00s
Doing des ede3 for 3s on 8192 size blocks: 12744 des ede3's in 2.99s
Doing des ede3 for 3s on 16384 size blocks: 6395 des ede3's in 3.00s
Doing aes-128 cbc for 3s on 16 size blocks: 50546274 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 64 size blocks: 13358038 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 256 size blocks: 3333758 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 1024 size blocks: 842151 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 8192 size blocks: 104943 aes-128 cbc's in 3.00s
Doing aes-128 cbc for 3s on 16384 size blocks: 52871 aes-128 cbc's in 3.00s
Doing aes-192 cbc for 3s on 16 size blocks: 44629776 aes-192 cbc's in 3.00s
Doing aes-192 cbc for 3s on 64 size blocks: 11527573 aes-192 cbc's in 3.00s
Doing aes-192 cbc for 3s on 256 size blocks: 2861904 aes-192 cbc's in 3.00s
Doing aes-192 cbc for 3s on 1024 size blocks: 719848 aes-192 cbc's in 3.00s
Doing aes-192 cbc for 3s on 8192 size blocks: 90802 aes-192 cbc's in 3.00s
Doing aes-192 cbc for 3s on 16384 size blocks: 45435 aes-192 cbc's in 3.00s
Doing aes-256 cbc for 3s on 16 size blocks: 39272215 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 64 size blocks: 10093402 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 256 size blocks: 2504776 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 1024 size blocks: 637977 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 8192 size blocks: 79787 aes-256 cbc's in 3.00s
Doing aes-256 cbc for 3s on 16384 size blocks: 39202 aes-256 cbc's in 3.00s
Doing aes-128 ige for 3s on 16 size blocks: 47968696 aes-128 ige's in 3.00s
Doing aes-128 ige for 3s on 64 size blocks: 12904621 aes-128 ige's in 3.00s
Doing aes-128 ige for 3s on 256 size blocks: 3298776 aes-128 ige's in 3.00s
Doing aes-128 ige for 3s on 1024 size blocks: 839361 aes-128 ige's in 3.00s
Doing aes-128 ige for 3s on 8192 size blocks: 105162 aes-128 ige's in 3.00s
Doing aes-128 ige for 3s on 16384 size blocks: 52661 aes-128 ige's in 3.00s
Doing aes-192 ige for 3s on 16 size blocks: 42104801 aes-192 ige's in 3.00s
Doing aes-192 ige for 3s on 64 size blocks: 11153161 aes-192 ige's in 3.00s
Doing aes-192 ige for 3s on 256 size blocks: 2861637 aes-192 ige's in 3.00s
Doing aes-192 ige for 3s on 1024 size blocks: 714282 aes-192 ige's in 2.99s
Doing aes-192 ige for 3s on 8192 size blocks: 89697 aes-192 ige's in 3.00s
Doing aes-192 ige for 3s on 16384 size blocks: 45105 aes-192 ige's in 3.00s
Doing aes-256 ige for 3s on 16 size blocks: 37372904 aes-256 ige's in 3.00s
Doing aes-256 ige for 3s on 64 size blocks: 9876719 aes-256 ige's in 3.00s
Doing aes-256 ige for 3s on 256 size blocks: 2494944 aes-256 ige's in 3.00s
Doing aes-256 ige for 3s on 1024 size blocks: 612649 aes-256 ige's in 3.00s
Doing aes-256 ige for 3s on 8192 size blocks: 78842 aes-256 ige's in 3.00s
Doing aes-256 ige for 3s on 16384 size blocks: 38146 aes-256 ige's in 3.00s
Doing ghash for 3s on 16 size blocks: 290449447 ghash's in 3.00s
Doing ghash for 3s on 64 size blocks: 279423358 ghash's in 3.00s
Doing ghash for 3s on 256 size blocks: 110269684 ghash's in 3.00s
Doing ghash for 3s on 1024 size blocks: 32100037 ghash's in 3.00s
Doing ghash for 3s on 8192 size blocks: 4100293 ghash's in 3.00s
Doing ghash for 3s on 16384 size blocks: 2050513 ghash's in 3.00s
Doing camellia-128 cbc for 3s on 16 size blocks: 25557277 camellia-128 cbc's in 3.00s
Doing camellia-128 cbc for 3s on 64 size blocks: 9739653 camellia-128 cbc's in 2.99s
Doing camellia-128 cbc for 3s on 256 size blocks: 2753092 camellia-128 cbc's in 3.00s
Doing camellia-128 cbc for 3s on 1024 size blocks: 705022 camellia-128 cbc's in 3.00s
Doing camellia-128 cbc for 3s on 8192 size blocks: 89548 camellia-128 cbc's in 3.00s
Doing camellia-128 cbc for 3s on 16384 size blocks: 44700 camellia-128 cbc's in 3.00s
Doing camellia-192 cbc for 3s on 16 size blocks: 22217978 camellia-192 cbc's in 3.00s
Doing camellia-192 cbc for 3s on 64 size blocks: 7553707 camellia-192 cbc's in 3.00s
Doing camellia-192 cbc for 3s on 256 size blocks: 2060504 camellia-192 cbc's in 3.00s
Doing camellia-192 cbc for 3s on 1024 size blocks: 531985 camellia-192 cbc's in 3.00s
Doing camellia-192 cbc for 3s on 8192 size blocks: 66556 camellia-192 cbc's in 3.00s
Doing camellia-192 cbc for 3s on 16384 size blocks: 32679 camellia-192 cbc's in 3.00s
Doing camellia-256 cbc for 3s on 16 size blocks: 22127633 camellia-256 cbc's in 3.00s
Doing camellia-256 cbc for 3s on 64 size blocks: 7448703 camellia-256 cbc's in 3.00s
Doing camellia-256 cbc for 3s on 256 size blocks: 1972494 camellia-256 cbc's in 3.00s
Doing camellia-256 cbc for 3s on 1024 size blocks: 529948 camellia-256 cbc's in 3.00s
Doing camellia-256 cbc for 3s on 8192 size blocks: 63902 camellia-256 cbc's in 3.00s
Doing camellia-256 cbc for 3s on 16384 size blocks: 33303 camellia-256 cbc's in 3.00s
Doing seed cbc for 3s on 16 size blocks: 19448527 seed cbc's in 2.96s
Doing seed cbc for 3s on 64 size blocks: 5086661 seed cbc's in 3.00s
Doing seed cbc for 3s on 256 size blocks: 1309579 seed cbc's in 3.00s
Doing seed cbc for 3s on 1024 size blocks: 326399 seed cbc's in 3.00s
Doing seed cbc for 3s on 8192 size blocks: 40847 seed cbc's in 2.97s
Doing seed cbc for 3s on 16384 size blocks: 20473 seed cbc's in 3.00s
Doing rc2 cbc for 3s on 16 size blocks: 11590538 rc2 cbc's in 3.00s
Doing rc2 cbc for 3s on 64 size blocks: 2993882 rc2 cbc's in 3.00s
Doing rc2 cbc for 3s on 256 size blocks: 756250 rc2 cbc's in 2.99s
Doing rc2 cbc for 3s on 1024 size blocks: 189369 rc2 cbc's in 3.00s
Doing rc2 cbc for 3s on 8192 size blocks: 23335 rc2 cbc's in 3.00s
Doing rc2 cbc for 3s on 16384 size blocks: 11620 rc2 cbc's in 3.00s
Doing blowfish cbc for 3s on 16 size blocks: 28823881 blowfish cbc's in 3.00s
Doing blowfish cbc for 3s on 64 size blocks: 7731814 blowfish cbc's in 3.00s
Doing blowfish cbc for 3s on 256 size blocks: 1819269 blowfish cbc's in 2.98s
Doing blowfish cbc for 3s on 1024 size blocks: 453845 blowfish cbc's in 2.96s
Doing blowfish cbc for 3s on 8192 size blocks: 59271 blowfish cbc's in 3.00s
Doing blowfish cbc for 3s on 16384 size blocks: 29739 blowfish cbc's in 3.00s
Doing cast cbc for 3s on 16 size blocks: 24843807 cast cbc's in 3.00s
Doing cast cbc for 3s on 64 size blocks: 7142122 cast cbc's in 3.00s
Doing cast cbc for 3s on 256 size blocks: 1720810 cast cbc's in 2.98s
Doing cast cbc for 3s on 1024 size blocks: 457591 cast cbc's in 2.99s
Doing cast cbc for 3s on 8192 size blocks: 56722 cast cbc's in 3.00s
Doing cast cbc for 3s on 16384 size blocks: 28285 cast cbc's in 3.00s
Doing rand for 3s on 16 size blocks: 3372230 rand's in 2.84s
Doing rand for 3s on 64 size blocks: 3356834 rand's in 2.75s
Doing rand for 3s on 256 size blocks: 3138476 rand's in 2.79s
Doing rand for 3s on 1024 size blocks: 2728751 rand's in 2.82s
Doing rand for 3s on 8192 size blocks: 1092880 rand's in 2.94s
Doing rand for 3s on 16384 size blocks: 651510 rand's in 2.96s
Doing 512 bits private rsa's for 10s: 290761 512 bits private RSA's in 10.00s
Doing 512 bits public rsa's for 10s: 4638554 512 bits public RSA's in 10.00s
Doing 1024 bits private rsa's for 10s: 134299 1024 bits private RSA's in 9.91s
Doing 1024 bits public rsa's for 10s: 1959617 1024 bits public RSA's in 9.98s
Doing 2048 bits private rsa's for 10s: 19348 2048 bits private RSA's in 9.99s
Doing 2048 bits public rsa's for 10s: 658878 2048 bits public RSA's in 10.00s
Doing 3072 bits private rsa's for 10s: 6641 3072 bits private RSA's in 10.01s
Doing 3072 bits public rsa's for 10s: 323266 3072 bits public RSA's in 10.00s
Doing 4096 bits private rsa's for 10s: 2972 4096 bits private RSA's in 10.00s
Doing 4096 bits public rsa's for 10s: 190751 4096 bits public RSA's in 10.00s
Doing 7680 bits private rsa's for 10s: 314 7680 bits private RSA's in 10.00s
Doing 7680 bits public rsa's for 10s: 54717 7680 bits public RSA's in 10.00s
Doing 15360 bits private rsa's for 10s: 60 15360 bits private RSA's in 10.08s
Doing 15360 bits public rsa's for 10s: 14720 15360 bits public RSA's in 10.00s
Doing 512 bits sign dsa's for 10s: 194123 512 bits DSA signs in 9.98s
Doing 512 bits verify dsa's for 10s: 278869 512 bits DSA verify in 10.00s
Doing 1024 bits sign dsa's for 10s: 113554 1024 bits DSA signs in 9.97s
Doing 1024 bits verify dsa's for 10s: 147432 1024 bits DSA verify in 10.00s
Doing 2048 bits sign dsa's for 10s: 45620 2048 bits DSA signs in 9.98s
Doing 2048 bits verify dsa's for 10s: 49758 2048 bits DSA verify in 10.00s
Doing 160 bits sign ecdsa's for 10s: 56221 160 bits ECDSA signs in 9.98s 
Doing 160 bits verify ecdsa's for 10s: 59458 160 bits ECDSA verify in 10.00s
Doing 192 bits sign ecdsa's for 10s: 47616 192 bits ECDSA signs in 9.98s 
Doing 192 bits verify ecdsa's for 10s: 47970 192 bits ECDSA verify in 10.00s
Doing 224 bits sign ecdsa's for 10s: 210941 224 bits ECDSA signs in 9.99s 
Doing 224 bits verify ecdsa's for 10s: 96849 224 bits ECDSA verify in 10.00s
Doing 256 bits sign ecdsa's for 10s: 520231 256 bits ECDSA signs in 9.91s 
Doing 256 bits verify ecdsa's for 10s: 173754 256 bits ECDSA verify in 9.99s
Doing 384 bits sign ecdsa's for 10s: 12826 384 bits ECDSA signs in 9.98s 
Doing 384 bits verify ecdsa's for 10s: 15207 384 bits ECDSA verify in 9.99s
Doing 521 bits sign ecdsa's for 10s: 39062 521 bits ECDSA signs in 9.99s 
Doing 521 bits verify ecdsa's for 10s: 19335 521 bits ECDSA verify in 10.00s
Doing 163 bits sign ecdsa's for 10s: 48363 163 bits ECDSA signs in 9.98s 
Doing 163 bits verify ecdsa's for 10s: 24392 163 bits ECDSA verify in 9.99s
Doing 233 bits sign ecdsa's for 10s: 34469 233 bits ECDSA signs in 9.97s 
Doing 233 bits verify ecdsa's for 10s: 17115 233 bits ECDSA verify in 9.97s
Doing 283 bits sign ecdsa's for 10s: 19982 283 bits ECDSA signs in 9.99s 
Doing 283 bits verify ecdsa's for 10s: 10045 283 bits ECDSA verify in 9.99s
Doing 409 bits sign ecdsa's for 10s: 11777 409 bits ECDSA signs in 10.00s 
Doing 409 bits verify ecdsa's for 10s: 6008 409 bits ECDSA verify in 10.00s
Doing 571 bits sign ecdsa's for 10s: 5447 571 bits ECDSA signs in 10.00s 
Doing 571 bits verify ecdsa's for 10s: 2799 571 bits ECDSA verify in 10.00s
Doing 163 bits sign ecdsa's for 10s: 46234 163 bits ECDSA signs in 9.97s 
Doing 163 bits verify ecdsa's for 10s: 23370 163 bits ECDSA verify in 9.99s
Doing 233 bits sign ecdsa's for 10s: 32597 233 bits ECDSA signs in 10.00s 
Doing 233 bits verify ecdsa's for 10s: 16665 233 bits ECDSA verify in 10.00s
Doing 283 bits sign ecdsa's for 10s: 19004 283 bits ECDSA signs in 9.99s 
Doing 283 bits verify ecdsa's for 10s: 9755 283 bits ECDSA verify in 9.98s
Doing 409 bits sign ecdsa's for 10s: 11207 409 bits ECDSA signs in 10.00s 
Doing 409 bits verify ecdsa's for 10s: 5814 409 bits ECDSA verify in 10.00s
Doing 571 bits sign ecdsa's for 10s: 5148 571 bits ECDSA signs in 9.99s 
Doing 571 bits verify ecdsa's for 10s: 2610 571 bits ECDSA verify in 10.00s
Doing 256 bits sign ecdsa's for 10s: 29886 256 bits ECDSA signs in 9.99s 
Doing 256 bits verify ecdsa's for 10s: 31093 256 bits ECDSA verify in 10.00s
Doing 256 bits sign ecdsa's for 10s: 29985 256 bits ECDSA signs in 9.99s 
Doing 256 bits verify ecdsa's for 10s: 32135 256 bits ECDSA verify in 9.99s
Doing 384 bits sign ecdsa's for 10s: 12609 384 bits ECDSA signs in 9.99s 
Doing 384 bits verify ecdsa's for 10s: 14306 384 bits ECDSA verify in 10.00s
Doing 384 bits sign ecdsa's for 10s: 12962 384 bits ECDSA signs in 9.99s 
Doing 384 bits verify ecdsa's for 10s: 15561 384 bits ECDSA verify in 10.00s
Doing 512 bits sign ecdsa's for 10s: 8564 512 bits ECDSA signs in 9.99s 
Doing 512 bits verify ecdsa's for 10s: 10422 512 bits ECDSA verify in 9.99s
Doing 512 bits sign ecdsa's for 10s: 8795 512 bits ECDSA signs in 10.00s 
Doing 512 bits verify ecdsa's for 10s: 10798 512 bits ECDSA verify in 9.99s
Doing 160 bits  ecdh's for 10s: 61839 160-bits ECDH ops in 10.00s
Doing 192 bits  ecdh's for 10s: 50575 192-bits ECDH ops in 9.99s
Doing 224 bits  ecdh's for 10s: 160868 224-bits ECDH ops in 10.00s
Doing 256 bits  ecdh's for 10s: 234630 256-bits ECDH ops in 10.00s
Doing 384 bits  ecdh's for 10s: 13245 384-bits ECDH ops in 10.00s
Doing 521 bits  ecdh's for 10s: 32844 521-bits ECDH ops in 10.00s
Doing 163 bits  ecdh's for 10s: 50343 163-bits ECDH ops in 9.97s
Doing 233 bits  ecdh's for 10s: 35536 233-bits ECDH ops in 9.99s
Doing 283 bits  ecdh's for 10s: 21057 283-bits ECDH ops in 9.99s
Doing 409 bits  ecdh's for 10s: 12564 409-bits ECDH ops in 10.00s
Doing 571 bits  ecdh's for 10s: 5707 571-bits ECDH ops in 10.00s
Doing 163 bits  ecdh's for 10s: 47944 163-bits ECDH ops in 9.99s
Doing 233 bits  ecdh's for 10s: 35651 233-bits ECDH ops in 9.98s
Doing 283 bits  ecdh's for 10s: 20495 283-bits ECDH ops in 9.97s
Doing 409 bits  ecdh's for 10s: 12072 409-bits ECDH ops in 10.00s
Doing 571 bits  ecdh's for 10s: 4908 571-bits ECDH ops in 9.97s
Doing 256 bits  ecdh's for 10s: 30134 256-bits ECDH ops in 9.99s
Doing 256 bits  ecdh's for 10s: 30999 256-bits ECDH ops in 9.99s
Doing 384 bits  ecdh's for 10s: 13382 384-bits ECDH ops in 10.00s
Doing 384 bits  ecdh's for 10s: 13593 384-bits ECDH ops in 10.00s
Doing 512 bits  ecdh's for 10s: 9110 512-bits ECDH ops in 10.00s
Doing 512 bits  ecdh's for 10s: 8964 512-bits ECDH ops in 9.99s
Doing 253 bits  ecdh's for 10s: 347784 253-bits ECDH ops in 10.00s
Doing 448 bits  ecdh's for 10s: 22735 448-bits ECDH ops in 9.99s
Doing 253 bits sign Ed25519's for 10s: 272233 253 bits Ed25519 signs in 10.00s 
Doing 253 bits verify Ed25519's for 10s: 101997 253 bits Ed25519 verify in 10.00s
Doing 456 bits sign Ed448's for 10s: 37378 456 bits Ed448 signs in 10.00s 
Doing 456 bits verify Ed448's for 10s: 20706 456 bits Ed448 verify in 10.00s
OpenSSL 1.1.1i  8 Dec 2020
built on: Tue Dec  8 19:32:32 2020 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-dgP4jq/openssl-1.1.1i=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
md2                  0.00         0.00         0.00         0.00         0.00         0.00 
mdc2                 0.00         0.00         0.00         0.00         0.00         0.00 
md4             103848.27k   322198.46k   773063.51k  1164678.83k  1361360.21k  1382896.98k
md5             154438.20k   349022.49k   610505.81k   757128.19k   812979.54k   806720.85k
hmac(md5)        63625.73k   194575.13k   453815.89k   683085.14k   797319.17k   809746.43k
sha1            171923.57k   394223.64k   781087.15k  1026542.59k  1140591.27k  1146798.08k
rmd160           53713.17k   128699.01k   237148.50k   300552.19k   322860.37k   326216.36k
rc4             792575.10k   838958.57k   696820.05k   653145.43k   647009.62k   642651.48k
des cbc          89853.47k    92498.92k    92764.84k    93200.73k    93394.26k    92957.35k
des ede3         34545.76k    34784.32k    34841.94k    34799.96k    34916.00k    34925.23k
idea cbc             0.00         0.00         0.00         0.00         0.00         0.00 
seed cbc        105127.17k   108515.43k   111750.74k   111410.86k   112666.20k   111809.88k
rc2 cbc          61816.20k    63869.48k    64749.16k    64637.95k    63720.11k    63460.69k
rc5-32/12 cbc        0.00         0.00         0.00         0.00         0.00         0.00 
blowfish cbc    153727.37k   164945.37k   156286.20k   157005.84k   161849.34k   162414.59k
cast cbc        132500.30k   152365.27k   147827.97k   156713.44k   154888.87k   154473.81k
aes-128 cbc     269580.13k   284971.48k   284480.68k   287454.21k   286564.35k   288746.15k
aes-192 cbc     238025.47k   245921.56k   244215.81k   245708.12k   247949.99k   248135.68k
aes-256 cbc     209451.81k   215325.91k   213740.89k   217762.82k   217871.70k   214095.19k
camellia-128 cbc   136305.48k   208474.18k   234930.52k   240647.51k   244525.74k   244121.60k
camellia-192 cbc   118495.88k   161145.75k   175829.67k   181584.21k   181742.25k   178470.91k
camellia-256 cbc   118014.04k   158905.66k   168319.49k   180888.92k   174495.06k   181878.78k
sha256           94615.71k   210150.29k   389793.45k   480616.11k   519817.90k   522644.14k
sha512           64520.58k   260341.61k   441929.05k   664931.67k   765408.60k   769026.73k
whirlpool        45103.97k    96861.72k   159442.35k   186309.09k   202569.05k   204330.33k
aes-128 ige     255833.05k   275298.58k   281495.55k   286501.89k   287162.37k   287599.27k
aes-192 ige     224558.94k   237934.10k   244193.02k   244623.67k   244932.61k   246333.44k
aes-256 ige     199322.15k   210703.34k   212901.89k   209117.53k   215291.22k   208328.02k
ghash          1549063.72k  5961031.64k  9409679.70k 10956812.63k 11196533.42k 11198535.00k
rand             18998.48k    78122.68k   287974.86k   990865.61k  3045194.88k  3606195.89k
                  sign    verify    sign/s verify/s
rsa  512 bits 0.000034s 0.000002s  29076.1 463855.4
rsa 1024 bits 0.000074s 0.000005s  13551.9 196354.4
rsa 2048 bits 0.000516s 0.000015s   1936.7  65887.8
rsa 3072 bits 0.001507s 0.000031s    663.4  32326.6
rsa 4096 bits 0.003365s 0.000052s    297.2  19075.1
rsa 7680 bits 0.031847s 0.000183s     31.4   5471.7
rsa 15360 bits 0.168000s 0.000679s      6.0   1472.0
                  sign    verify    sign/s verify/s
dsa  512 bits 0.000051s 0.000036s  19451.2  27886.9
dsa 1024 bits 0.000088s 0.000068s  11389.6  14743.2
dsa 2048 bits 0.000219s 0.000201s   4571.1   4975.8
                              sign    verify    sign/s verify/s
 160 bits ecdsa (secp160r1)   0.0002s   0.0002s   5633.4   5945.8
 192 bits ecdsa (nistp192)   0.0002s   0.0002s   4771.1   4797.0
 224 bits ecdsa (nistp224)   0.0000s   0.0001s  21115.2   9684.9
 256 bits ecdsa (nistp256)   0.0000s   0.0001s  52495.6  17392.8
 384 bits ecdsa (nistp384)   0.0008s   0.0007s   1285.2   1522.2
 521 bits ecdsa (nistp521)   0.0003s   0.0005s   3910.1   1933.5
 163 bits ecdsa (nistk163)   0.0002s   0.0004s   4846.0   2441.6
 233 bits ecdsa (nistk233)   0.0003s   0.0006s   3457.3   1716.6
 283 bits ecdsa (nistk283)   0.0005s   0.0010s   2000.2   1005.5
 409 bits ecdsa (nistk409)   0.0008s   0.0017s   1177.7    600.8
 571 bits ecdsa (nistk571)   0.0018s   0.0036s    544.7    279.9
 163 bits ecdsa (nistb163)   0.0002s   0.0004s   4637.3   2339.3
 233 bits ecdsa (nistb233)   0.0003s   0.0006s   3259.7   1666.5
 283 bits ecdsa (nistb283)   0.0005s   0.0010s   1902.3    977.5
 409 bits ecdsa (nistb409)   0.0009s   0.0017s   1120.7    581.4
 571 bits ecdsa (nistb571)   0.0019s   0.0038s    515.3    261.0
 256 bits ecdsa (brainpoolP256r1)   0.0003s   0.0003s   2991.6   3109.3
 256 bits ecdsa (brainpoolP256t1)   0.0003s   0.0003s   3001.5   3216.7
 384 bits ecdsa (brainpoolP384r1)   0.0008s   0.0007s   1262.2   1430.6
 384 bits ecdsa (brainpoolP384t1)   0.0008s   0.0006s   1297.5   1556.1
 512 bits ecdsa (brainpoolP512r1)   0.0012s   0.0010s    857.3   1043.2
 512 bits ecdsa (brainpoolP512t1)   0.0011s   0.0009s    879.5   1080.9
                              op      op/s
 160 bits ecdh (secp160r1)   0.0002s   6183.9
 192 bits ecdh (nistp192)   0.0002s   5062.6
 224 bits ecdh (nistp224)   0.0001s  16086.8
 256 bits ecdh (nistp256)   0.0000s  23463.0
 384 bits ecdh (nistp384)   0.0008s   1324.5
 521 bits ecdh (nistp521)   0.0003s   3284.4
 163 bits ecdh (nistk163)   0.0002s   5049.4
 233 bits ecdh (nistk233)   0.0003s   3557.2
 283 bits ecdh (nistk283)   0.0005s   2107.8
 409 bits ecdh (nistk409)   0.0008s   1256.4
 571 bits ecdh (nistk571)   0.0018s    570.7
 163 bits ecdh (nistb163)   0.0002s   4799.2
 233 bits ecdh (nistb233)   0.0003s   3572.2
 283 bits ecdh (nistb283)   0.0005s   2055.7
 409 bits ecdh (nistb409)   0.0008s   1207.2
 571 bits ecdh (nistb571)   0.0020s    492.3
 256 bits ecdh (brainpoolP256r1)   0.0003s   3016.4
 256 bits ecdh (brainpoolP256t1)   0.0003s   3103.0
 384 bits ecdh (brainpoolP384r1)   0.0007s   1338.2
 384 bits ecdh (brainpoolP384t1)   0.0007s   1359.3
 512 bits ecdh (brainpoolP512r1)   0.0011s    911.0
 512 bits ecdh (brainpoolP512t1)   0.0011s    897.3
 253 bits ecdh (X25519)   0.0000s  34778.4
 448 bits ecdh (X448)   0.0004s   2275.8
                              sign    verify    sign/s verify/s
 253 bits EdDSA (Ed25519)   0.0000s   0.0001s  27223.3  10199.7
 456 bits EdDSA (Ed448)   0.0003s   0.0005s   3737.8   2070.6

14 December, 2020 06:42 PM

10 November, 2020

Boris Shtrasman

איך להציל ולהעביר היסטוריה בין מאגרים שונים בgit לפי מסלול ?

פנו אלי בבקשה לגבי להעביר היסטורי של מסלול (path) למאגר שונה בצורה פשוטה , פעם הייתי ממליף על filter-branch הייפה והטוב , אבל היום יש לנו את git filter-repo שהוא הרבה הרבה הרבה יותר מהיר.

הפתרון תקף גם ל מאגר רגיל וגם לתת מאגר (submodules) אבל זה פחות מתאים לsubtree.

הפתרון שמצאתי שהוא הזול ביותר מבחינת משאבי רשת :

שימוש ב git bundle בשביל להעתיק את המאגר המקומי , למסלול אחר.

שימוש ב git filter-repo בשביל להעתיק את ההיסטוריה של המסלול הזה לענף (branch) בפני עצמו.

 הוספת remote למאגר אשר לתוכו צריך להוסיף את ההיסטוריה , ה remote הוא למקום בו עשינו clone מה  bundle (שזה מסלול מלא).

ביצוע fetch ל ענף שייצרנו במהלך העתקת ההיסטוריה.

ביצוע merge

ביצוע push

ובא לציון גואל.
 
חומר להעתק / הדבק  כמובן שיש להתאים לצורך שלכם :
How to transfer history between two repositories, or a super repository to it's submodules.
in my case, I'm extracting the history of the path 
"engine/C87AOP"
    1. Prepare a bundle to clone a repository, which will be used for git filter-repo later

cd ~/git/source_repo
mkdir ~/git/working_dir
git bundle create ~/git/working_dir/C87.bundle master

2. Clone from the bundle file:

cd ~/git/working_dir/

git clone -b master ./C87.bundle

3. Extracting only C87AOP history by using git filter repo:

git checkout -b C87AOP_ENGINE

git filter-repo --path engine/C87AOP --refs C87AOP_ENGINE --force

4. adding a remote on destination repo to ~/git/working_dir

cd ~/git/dest_repo
git remote add local file:///home/user/git/working_dir/C87/

5. fetching the branch C87AOP_ENGINE from the remote local we added on step 4

git fetch local C87AOP_ENGINE

6. creating a new working branch locally
git checkout -b merging_history_from_c87

7. merging the branch C87AOP_ENGINE with local brnach

git merge local/C87AOP_ENGINE --allow-unrelated-histories

8. git checkout master
9. git merge merging_history_from_c87
10. git push origin master
11. git branch -d merging_history_from_c87
12. git remote remove local
13. rm -rfi /home/user/git/working_dir

10 November, 2020 01:25 PM

שלום עולם IPv6

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

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

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

מכיוון שיש לי נתב פשוט , ברגע שהופעל ipv6 ברמת הספק , הכל עבד בצורה חלוקה (תודות ל RFC 4861 ו המימוש של Router Advertisment ב NetworkManager). למה זה פשוט עובד? כי IPv6 תוכנן מזמן וכל נתב מסכן שמריץ openwrt כבר מגיע מוכן לתמוך בIPv6 בלי שום התעסקות.

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

עברתי מחשב מחשב וראיתי שבכולם ה privacy mode היה מופעל , שזה המצב התקין  פרט למכונת Win10 בה הגדרתי את המוד. מדוע ה privacy mode של IPv6 חשוב תשאלו ? כי אם לא תפעילו אIP שלכם יכיל את כתובת ה MAC שלכם .
 

בחלק המחובר לנתבים להם יש גישה לאינטרנט מצאתי פדיחה רצינית : 

מצאתי "מחשב" בו ה ssh היה מאזין ולא היה פיירוול מופעל, המחשב הזה היה raspberi pi המשמש כנקודת המרה לרכיבי USB על גבי IP.  נכון שהפיי הזה היה מעודכן , והיה רק מחובר לרכיבי USB שאני מעביר אותם למחשבים אחרים, אבל זה היה ווקטור התקפה על המערכת שלי.


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

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

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

מצאתי שהמכונה העיקרית שלי שאוספת לוגים מהציוד (שירות syslog) לא הכילה חוקי פירוול טובים מספיק טובים על המכונה עצמה (היה בנויי בצורה של black list במקום white list).

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

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

10 November, 2020 08:16 AM

31 October, 2020

Ilya Sher

bash or Python? The Square Pegs and a Round Hole Situation

The question “should I do it in bash or in Python?” is both frustrating and common. Why one even needs to choose between two alternatives which are both inadequate for the task at hand? Why try to pick one of the square pegs for the round hole? I believe that you should not be in this annoying situation when just trying to write a script and get back to your endless stream of other todos.

Best illustration that I managed to find in 2 minutes

Both are Inadequate for Ops

bash does not meet any modern expectations for syntax, error handling nor has ability to work with structured data (beyond arrays and associative arrays which can not be nested). Let it go. You are not usually coding in assembly, FORTRAN, C, or C++, do you? They just don’t match the typical Ops tasks. Don’t make your life harder than it should be. Let it go. (Let’s not make it a blanket statement. Use your own judgement when to make an exception).

Python along with many other languages are general purpose programming languages which were not intended to solve specifically Ops problems. The consequence is longer and less readable scripts when dealing with files or running external programs, which are both pretty common for Ops. For example, try to check every status code of every program you run, see how your code looks like. Sure you can import 3rd party library for that. Is that as convenient as having automatic checking by default + list of known programs which don’t return zero + convenient syntax for specifying/overriding expected exit code? I guess not.

Your disorientation and frustration is completely legitimate.

Alternatives

Multitude of attempts to provide viable alternatives by different people are in progress. As others authors, I would like to help my Ops colleagues to avoid frustration and be productive. It just feels good.


Informative section is over. Shameless plug about an alternative that I am developing and how it is special follows.

Next Generation Shell as an Alternative

How Next Generation Shell differs from the alternatives? Reasonable question that I would ask too before investing any more time if I was the reader.

UI

Current shells as well as proposed alternatives treat UI as nothing has happened since the 70-s: mostly typing commands and getting some text back.

How about real interaction with the objects on the screen? Oops. In a typical shell there are no objects on the screen, it’s just a dumpster of combined text (if you are lucky; could be binary) from stdout and from stderr from one or more processes (unless steps were taken). WTF? It doesn’t help you to win. It helps you to lose time. NGS does what is intended to make you productive. I have organized my thoughts about how the UI should look and behave on the wiki page.

Programming language

It looks like alternative solutions have the “let’s make the shell better” approach and therefore are heavily based on the shell syntax and paradigms.

There is also “let’s make a library for existing language” approach which doesn’t hit the target either. Can’t have a syntax for common ops tasks for example.

And finally there is “let’s make a library and a syntax on top of existing language”. Not sure about this one. Sounds good in theory. Looked some time ago at something like this and the overall impression was … awkward (for the lack of better word).

Approach in NGS: let’s make a good programming language for Ops, which fits the use cases and has syntax and facilities for the most common tasks such as running external programs.

The language follows the principle that the most common tasks should have their own syntax or a library function (depending on usage frequency). Examples:

  1. ``external program`` – runs external program and parses the output (JSON is auto detected, easily extensible for anything else).
  2. status(), log(), debug(), retry() – standard library functions. How many times an Ops person should write his/her own retry()? It’s insane.
  3. Argv() facility for constructing command line parameters (for calling external program).
  4. p=$(my_prog my_args &); ....; p.wait().

Small number of “big” core concepts in the language (types with inheritance, multiple dispatch and exceptions).

Dogfooding

Most of the standard library is in NGS.

The UI (only recently started working on it) is in NGS. It doesn’t make sense that when a user of the shell wants to fix a bug in the UI and suddenly he/she needs to learn Go, Rust, C or whatever other language.

We use NGS at work.

Most of the demo scripts come from either current or previous work.

How to proceed?

  1. Install NGS.
  2. Consult documentation and look at sample scripts
  3. Write scripts for non-production-critical tasks.
  4. I am here to help. Do not hesitate to contact me with questions, suggestions, or feedback. If there is anything Ops-y you are trying to do seems to be easier in bash or Python – open an issue, because that’s a bug from my perspective. Something is inconvenient? Yep, also a bug.

If you are like me, you will find at least some satisfaction in using the most appropriate tool before continue to the myriad of other tasks that are in your todo queue.

Or Just Learn More

  1. Is NGS for you? Take a look at intended use cases.
  2. Take a look at how NGS compares to other programming languages.
  3. Browse sample scripts to get some impression about the language.

Reddit: https://www.reddit.com/r/devops/comments/jm3cwe/bash_or_python_the_square_pegs_and_a_round_hole/

31 October, 2020 07:17 PM

28 October, 2020

Diego Iastrubni

ביי ביי WWW – ברוך הבא Gemini

לחלק מהאנשים נמאס מהווב, והחליטו לעשות לו ריבוט. כתבו פרוטוקול להעברת מידע חדש במקום HTTP (S) ותסדיר תצוגה חדש במקום HTML. הפרוייקט נקרא Gemini. הינה אתר הבית שלו בווב המיושנת: https://gemini.circumlunar.space/

יש שם הוראות התקנה לתוכנת “גלישה”, אני התקנתי משהו שהיה כתוב ב־go וזה נתן לי ממשק טקסטואלי. התקנה של שניות בודדת והתוכנה מגיבה מאוד מהר הפרוטוקול ממש.

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

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

אין מה לראות – תמשיכו הלאה.

הטקסט המלא

28 October, 2020 07:59 PM

23 October, 2020

Amir Aharoni

Amir Aharoni’s Quasi-Pro Tips for Translating the Software That Powers Wikipedia

This post is outdated. For a newer version see Amir Aharoni’s Quasi-Pro Tips for Translating the Software That Powers Wikipedia, 2020 Edition


As you probably already know, Wikipedia is a website. A website has content—the articles; and it has user interface—the menus around the articles and the various screens that let editors edit the articles and communicate to each other.

Another thing that you probably already know is that Wikipedia is massively multilingual, so both the content and the user interface must be translated.

Translation of articles is a topic for another post. This post is about getting all of the user interface translated to your language, as quickly and efficiently as possible.

The most important piece of software that powers Wikipedia and its sister projects is called MediaWiki. As of today, there are 3,335 messages to translate in MediaWiki, and the number grows frequently. “Messages” in the MediaWiki jargon are strings that are shown in the user interface, and that can be translated. In addition to core MediaWiki, Wikipedia also has dozens of MediaWiki extensions installed, some of them very important—extensions for displaying citations and mathematical formulas, uploading files, receiving notifications, mobile browsing, different editing environments, etc. There are around 3,500 messages to translate in the main extensions, and over 10,000 messages to translate if you want to have all the extensions translated. There are also the Wikipedia mobile apps and additional tools for making automated edits (bots) and monitoring vandalism, with several hundreds of messages each.

Translating all of it probably sounds like an enormous job, and yes, it takes time, but it’s doable.

In February 2011 or so—sorry, I don’t remember the exact date—I completed the translation into Hebrew of all of the messages that are needed for Wikipedia and projects related to it. All. The total, complete, no-excuses, premium Wikipedia experience, in Hebrew. Every single part of the MediaWiki software, extensions and additional tools was translated to Hebrew, and if you were a Hebrew speaker, you didn’t need to know a single English word to use it.

I wasn’t the only one who did this of course. There were plenty of other people who did this before I joined the effort, and plenty of others who helped along the way: Rotem Dan, Ofra Hod, Yaron Shahrabani, Rotem Liss, Or Shapiro, Shani Evenshtein, Inkbug (whose real name I don’t know), and many others. But back then in 2011 it was I who made a conscious effort to get to 100%. It took me quite a few weeks, but I made it.

Of course, the software that powers Wikipedia changes every single day. So the day after the translations statistics got to 100%, they went down to 99%, because new messages to translate were added. But there were just a few of them, and it took me a few minutes to translate them and get back to 100%.

I’ve been doing this almost every day since then, keeping Hebrew at 100%. Sometimes it slips because I am traveling or I am ill. It slipped for quite a few months because in late 2014 I became a father, and a lot of new messages happened to be added at the same time, but Hebrew is back at 100% now. And I keep doing this.

With the sincere hope that this will be useful for translating the software behind Wikipedia to your language, let me tell you how.

Preparation

First, let’s do some work to set you up.

Priorities, part 1

The translatewiki.net website hosts many projects to translate beyond stuff related to Wikipedia. It hosts such respectable Free Software projects as OpenStreetMap, Etherpad, MathJax, Blockly, and others. Also, not all the MediaWiki extensions are used on Wikimedia projects; there are plenty of extensions, with thousands of translatable messages, that are not used by Wikimedia, but only on other sites, but they use translatewiki.net as the platform for translation of their user interface.

It would be nice to translate all of it, but because I don’t have time for that, I have to prioritize.

On my translatewiki.net user page I have a list of direct links to the translation interface of the projects that are the most important:

I usually don’t work on translating other projects unless all of the above projects are 100% translated to Hebrew. I occasionally make an exception for OpenStreetMap or Etherpad, but only if there’s little to translate there and the untranslated MediaWiki-related projects are not very important.

Priorities, part 2

So how can you know what is important among more than 15,000 messages from the Wikimedia universe?

Start from MediaWiki most important messages. If your language is not at 100% in this list, it absolutely must be. This list is automatically created periodically by counting which 600 or so messages are actually shown most frequently to Wikipedia users. This list includes messages from MediaWiki core and a bunch of extensions, so when you’re done with it, you’ll see that the statistics for several groups improved by themselves.

Now, if the translation of MediaWiki core to your language is not yet at 18%, get it there. Why 18%? Because that’s the threshold for exporting your language to the source code. This is essential for making it possible to use your language in your Wikipedia (or Incubator). It will be quite easy to find short and simple messages to translate (of course, you still have to do it carefully and correctly).

Getting Things Done, One by One

Once you have the most important MediaWiki messages 100% and at least 18% of MediaWiki core is translated to your language, where do you go next?

I have surprising advice.

You need to get everything to 100% eventually. There are several ways to get there. Your mileage may vary, but I’m going to suggest the way that worked for me: Complete the easiest piece that will get your language closer to 100%! For me this is an easy way to strike an item off my list and feel that I accomplished something.

But still, there are so many items at which you could start looking! So here’s my selection of components that are more user-visible and less technical, sorted not by importance, but by the number of messages to translate:

I put MediaWiki core last intentionally. It’s a very large message group, with over 3000 messages. It’s hard to get it completed quickly, and to be honest, some of its features are not seen very frequently by users who aren’t site administrators or very advanced editors. By all means, do complete it, try to do it as early as possible, and get your friends to help you, but it’s also OK if it takes some time.

Getting All Things Done

OK, so if you translate all the items above, you’ll make Wikipedia in your language mostly usable for most readers and editors.

But let’s go further.

Let’s go further not just for the sake of seeing pure 100% in the statistics everywhere. There’s more.

As I wrote above, the software changes every single day. So do the translatable messages. You need to get your language to 100% not just once; you need to keep doing it continuously.

Once you make the effort of getting to 100%, it will be much easier to keep it there. This means translating some things that are used rarely (but used nevertheless; otherwise they’d be removed). This means investing a few more days or weeks into translating-translating-translating.

You’ll be able to congratulate yourself not only upon the big accomplishment of getting everything to 100%, but also upon the accomplishments along the way.

One strategy to accomplish this is translating extension by extension. This means, going to your translatewiki.net language statistics: here’s an example with Albanian, but choose your own language. Click “expand” on MediaWiki, then again “expand” on “MediaWiki Extensions”, then on “Extensions used by Wikimedia” and finally, on “Extensions used by Wikimedia – Main”. Similarly to what I described above, find the smaller extensions first and translate them. Once you’re done with all the Main extensions, do all the extensions used by Wikimedia. (Going to all extensions, beyond Extensions used by Wikimedia, helps users of these extensions, but doesn’t help Wikipedia very much.) This strategy can work well if you have several people translating to your language, because it’s easy to divide work by topic.

Another strategy is quiet and friendly competition with other languages. Open the statistics for Extensions Used by Wikimedia – Main and sort the table by the “Completion” column. Find your language. Now translate as many messages as needed to pass the language above you in the list. Then translate as many messages as needed to pass the next language above you in the list. Repeat until you get to 100%.

For example, here’s an excerpt from the statistics for today:

MediaWiki translation stats example

Let’s say that you are translating to Malay. You only need to translate eight messages to go up a notch (901 – 894 + 1). Then six messages more to go up another notch (894 – 888). And so on.

Once you’re done, you will have translated over 3,400 messages, but it’s much easier to do it in small steps.

Once you get to 100% in the main extensions, do the same with all the Extensions Used by Wikimedia. It’s over 10,000 messages, but the same strategies work.

Good Stuff to Do Along the Way

Never assume that the English message is perfect. Never. Do what you can to improve the English messages.

Developers are people just like you are. They may know their code very well, but they may not be the most brilliant writers. And though some messages are written by professional user experience designers, many are written by the developers themselves. Developers are developers; they are not necessarily very good writers or designers, and the messages that they write in English may not be perfect. Keep in mind that many, many MediaWiki developers are not native English speakers; a lot of them are from Russia, Netherlands, India, Spain, Germany, Norway, China, France and many other countries, and English is foreign to them, and they may make mistakes.

So report problems with the English messages to the translatewiki Support page. (Use the opportunity to help other translators who are asking questions there, if you can.)

Another good thing is to do your best to try running the software that you are translating. If there are thousands of messages that are not translated to your language, then chances are that it’s already deployed in Wikipedia and you can try it. Actually trying to use it will help you translate it better.

Whenever relevant, fix the documentation displayed near the translation area. Strange as it may sound, it is possible that you understand the message better than the developer who wrote it!

Before translating a component, review the messages that were already translated. To do this, click the “All” tab at the top of the translation area. It’s useful for learning the current terminology, and you can also improve them and make them more consistent.

After you gain some experience, create a localization guide in your language. There are very few of them at the moment, and there should be more. Here’s the localization guide for French, for example. Create your own with the title “Localisation guidelines/xyz” where “xyz” is your language code.

As in Wikipedia, Be Bold.

OK, So I Got to 100%, What Now?

Well done and congratulations.

Now check the statistics for your language every day. I can’t emphasize how important it is to do this every day.

The way I do this is having a list of links on my translatewiki.net user page. I click them every day, and if there’s anything new to translate, I immediately translate it. Usually there is just a small number of new messages to translate; I didn’t measure precisely, but usually it’s less than 20. Quite often you won’t have to translate from scratch, but to update the translation of a message that changed in English, which is usually even faster.

But what if you suddenly see 200 new messages to translate? It happens occasionally. Maybe several times a year, when a major new feature is added or an existing feature is changed.

Basically, handle it the same way you got to 100% before: step by step, part by part, day by day, week by week, notch by notch, and get back to 100%.

But you can also try to anticipate it. Follow the discussions about new features, check out new extensions that appear before they are added to the Extensions Used by Wikimedia group, consider translating them when you have a few spare minutes. At the worst case, they will never be used by Wikimedia, but they may be used by somebody else who speaks your language, and your translations will definitely feed the translation memory database that helps you and other people translate more efficiently and easily.

Consider also translating other useful projects: OpenStreetMap, Etherpad, Blockly, Encyclopedia of Life, etc. Up to you. The same techniques apply everywhere.

What Do I Get for Doing All This Work?

The knowledge that thanks to you people who read in your language can use Wikipedia without having to learn English. Awesome, isn’t it? Some people call it “Good karma”.

Oh, and enormous experience with software localization, which is a rather useful job skill these days.

Is There Any Other Way in Which I Can Help?

Yes!

If you find this post useful, please translate it to other languages and publish it in your blog. No copyright restrictions, public domain (but it would be nice if you credit me and send me a link to your translation). Make any adaptations you need for your language. It took me years of experience to learn all of this, and it took me about four hours to write it. Translating it will take you much less than four hours, and it will help people be more efficient translators.

Versions of this post were already published in the following languages:

I’m deeply grateful to all the people who made these translations; keep them coming!

23 October, 2020 04:39 PM

Amir Aharoni’s Quasi-Pro Tips for Translating the Software That Powers Wikipedia, 2020 Edition

This is a new version of a post that was originally published in 2015. Much of it is the same, but there are several updates that justified publishing a whole a new version.

Introduction

As you probably already know, Wikipedia is a website. A website has two components: the content and the user interface. The content of Wikipedia is the articles, as well as various discussion and help pages. The user interface is the menus around the articles and the various screens that let editors edit the articles and communicate to each other.

Another thing that you probably already know is that Wikipedia is massively multilingual, so both the content and the user interface must be translated.

Translation of articles is a topic for another post. This post is about getting all the user interface translated to your language, and doing it as quickly, easily, and efficiently as possible.

The most important piece of software that powers Wikipedia and its sister projects is called MediaWiki. As of today, there are more than 3,800 messages to translate in MediaWiki, and the number grows frequently. “Messages” in the MediaWiki jargon are strings that are shown in the user interface. Every message can and should be translated.

In addition to core MediaWiki, Wikipedia also uses many MediaWiki extensions. Some of them are very important because they are frequently seen by a lot of readers and editors. For example, these are extensions for displaying citations and mathematical formulas, uploading files, receiving notifications, mobile browsing, different editing environments, etc. There are more than 5,000 messages to translate in the main extensions, and over 18,000 messages to translate if you want to have all the extensions translated, including the most technical ones. There are also the Wikipedia mobile apps and additional tools for making automated edits (bots) and monitoring vandalism, with several hundreds of messages each.

Translating all of it probably sounds like an impossibly enormous job. It indeed takes time and effort, but the good news are that there are languages into which all of this was translated completely, and it can also be completely translated into yours. You can do it. In this post I’ll show you how.

A personal story

In early 2011 I completed the translation of all the messages that are needed for Wikipedia and projects related to it into Hebrew. All. The total, complete, no-excuses, premium Wikipedia experience, in Hebrew. Every single part of the MediaWiki software, extensions and additional tools was translated to Hebrew. Since then, if you can read Hebrew, you don’t need to know a single English word to use it.

I didn’t do it alone, of course. There were plenty of other people who did this before I joined the effort, and plenty of others who helped along the way: Rotem Dan, Ofra Hod, Yaron Shahrabani, Rotem Liss, Or Shapiro, Shani Evenshtein, Dagesh Hazak, Guycn2 and Inkbug (I don’t know the real names of the last three), and many others. But back then in 2011 it was I who made a conscious effort to get to 100%. It took me quite a few weeks, but I made it.

However, the software that powers Wikipedia changes every single day. So the day after the translations statistics got to 100%, they went down to 99%, because new messages to translate were added. But there were just a few of them, and it took me only a few minutes to translate them and get back to 100%.

I’ve been doing this almost every day since then, keeping Hebrew at 100%. Sometimes it slips because I am traveling or because I am ill. It slipped for quite a few months in 2014 because my first child was born and a lot of new messages happened to be added at about the same time, but Hebrew got back to 100%. It happened again in 2018 for the same happy reason, and went back to 100% after a few months. And I keep doing this.

With the sincere hope that this will be useful for helping you translate the software that powers Wikipedia completely to your language, let me tell you how.

Preparation

First, let’s do some work to set you up.

If you haven’t already, create a translatewiki.net account at the translatewiki.net main page. First, select the languages you know by clicking the “Choose another language” button (if the language into which you want to translate doesn’t appear in the list, choose some other language you know, or contact me). After selecting your language, enter your account details. This account is separate from your Wikipedia account, so if you already have a Wikipedia account, you need to create a new one. It may be a good idea to give it the same username.

After creating the account you have to make several test translations to get full translator permissions. This may take a few hours. Everybody except vandals and spammers gets full translator permissions, so if for some reason you aren’t getting them or if it appears to take too much time, please contact me.

Make sure you know your ISO 639 language code. You can easily find it on Wikipedia.

Go to your preferences, to the Editing tab, and add languages that you know to Assistant languages. For example, if you speak one of the native languages of South America like Aymara (ay) or Quechua (qu), then you probably also know Spanish (es) or Portuguese (pt), and if you speak one of the languages of Indonesia like Javanese (jv) or Balinese (ban), then you probably also know Indonesian (id). When available, translations to these languages will be shown in addition to English.

Familiarize yourself with the Support page and with the general localization guidelines for MediaWiki.

Add yourself to the portal for your language. The page name is Portal:Xyz, where Xyz is your language code.

Priorities, part 1

The translatewiki.net website hosts many projects to translate beyond stuff related to Wikipedia. It hosts such respectable Free Software projects as OpenStreetMap, Etherpad, MathJax, Blockly, and others. Also, not all the MediaWiki extensions are used on Wikimedia projects. There are plenty of extensions, with thousands of translatable messages, that are not used by Wikimedia, but only on other sites, but they use translatewiki.net as the platform for translation of their user interface.

It would be nice to translate all of it, but because I don’t have time for that, I have to prioritize.

On my translatewiki.net user page I have a list of direct links to the translation interface of the projects that are the most important:

I usually don’t work on translating other projects unless all the above projects are 100% translated to Hebrew. I occasionally make an exception for OpenStreetMap or Etherpad, but only if there’s little to translate there and the untranslated MediaWiki-related projects are not very important.

Priorities, part 2

So how can you know what is important among more than 18,000 messages from the Wikimedia universe?

Start from MediaWiki most important messages. If your language is not at 100% in this list, it absolutely must be. This list is automatically created periodically by counting which 600 or so messages are actually shown most frequently to Wikipedia users. This list includes messages from MediaWiki core and a bunch of extensions, so when you’re done with it, you’ll see that the statistics for several groups improved by themselves.

Now, if the translation of MediaWiki core to your language is not yet at 18%, get it there. Why 18%? Because that’s the threshold for exporting your language to the source code. This is essential for making it possible to use your language in your Wikipedia (or Incubator). It will be quite easy to find short and simple messages to translate (of course, you still have to do it carefully and correctly).

Some technical notes

Have you read the general localization guide for Mediawiki? Read it again, and make sure you understand it. If you don’t, ask for help! The most important section, especially for new translators, is “Translation notes”.

A super-brief list of things that you should know:

Learn to use the project selector at the top of the translation interface. Projects are also known as “Message groups”. For example, each extension is a message group, and some larger extension, such as Visual Editor, are further divided into several smaller message groups. Using the selector is very simple: Just click “All” next to “Message group”, and use the search box to find the component that you want to translate, such as “Visual Editor” or “Wikibase”. Clicking on a message group will load the untranslated messages for that group.

The “Extensions used by Wikimedia” group is divided into several more subgroups. The important one is “Extensions used by Wikimedia – Main”, which includes the most commonly used extensions. Other subgroups are:

There is also a group called “EXIF Tags”. It’s an advanced part of core MediaWiki. It mostly includes advanced photography terminology, and it shows information about photographs on Wikimedia Commons. If you are not sure how to translate these messages, ask a professional photographer. In any case, it’s OK to do it later, after you completed more important components.

Getting things done, one by one

Once you have the most important MediaWiki messages 100% and at least 18% of MediaWiki core is translated to your language, where do you go next?

I have surprising advice.

You need to get everything to 100% eventually. There are several ways to get there. Your mileage may vary, but I’m going to suggest the way that worked for me: Complete the easiest piece that will get your language closer to 100%! For me this is an easy way to remove an item off my list and feel that I accomplished something.

But still, there are so many items at which you could start looking! So here’s my selection of components that are more user-visible and less technical. The list is ordered not by importance, but by the number of messages to translate (as of October 2020):

I put MediaWiki core last intentionally. It’s a very large message group, with over 3000 messages. It’s hard to get it completed quickly, and actually, some of its features are not seen very frequently by users who aren’t site administrators or very advanced editors. By all means, do complete it, try to do it as early as possible, and get your friends to help you, but it’s also OK if it takes some time.

Getting all the things done

OK, so if you translate all the items above, you’ll make Wikipedia in your language mostly usable for most readers and editors. But let’s go further.

Let’s go further not just for the sake of seeing pure 100% in the statistics everywhere. There’s more.

As I wrote above, the software changes every single day. So do the translatable messages. You need to get your language to 100% not just once; you need to keep doing it continuously.

Once you make the effort of getting to 100%, it will be much easier to keep it there. This means translating some things that are used rarely (but used nevertheless; otherwise they’d be removed). This means investing a few more days or weeks into translating-translating-translating.

You’ll be able to congratulate yourself not only upon the big accomplishment of getting everything to 100%, but also upon the accomplishments along the way.

One strategy to accomplish this is translating extension by extension. This means, going to your translatewiki.net language statistics: here’s an example with Albanian, but choose your own language. Click “expand” on MediaWiki, then again “expand” on “MediaWiki Extensions” (this may take a few seconds—there are lots of them!), then on “Extensions used by Wikimedia” and finally, on “Extensions used by Wikimedia – Main”. Similarly to what I described above, find the smaller extensions first and translate them. Once you’re done with all the Main extensions, do all the extensions used by Wikimedia. This strategy can work well if you have several people translating to your language, because it’s easy to divide work by topic. (Going to all extensions, beyond Extensions used by Wikimedia, helps users of these extensions, but doesn’t help Wikipedia very much.)

Another fun strategy is quiet and friendly competition with other languages. Open the statistics for Extensions Used by Wikimedia – Main and sort the table by the “Completion” column. Find your language. Now translate as many messages as needed to pass the language above you in the list. Then translate as many messages as needed to pass the next language above you in the list. Repeat until you get to 100%.

For example, here’s an excerpt from the statistics for today:

Let’s say that you are translating to Georgian. You only need to translate 37 messages to pass Marathi and go up a notch (2555 – 2519 + 1 = 37). Then 56 messages more to pass Hindi and go up one more notch (2518 – 2463 + 1 = 56). And so on.

Once you’re done, you will have translated over 5600 messages, but it’s much easier to do it in small steps.

Once you get to 100% in the main extensions, do the same with all the Extensions Used by Wikimedia. It’s way over 10,000 messages, but the same strategies work.

Good stuff to do along the way

Invite your friends! You don’t have to do it alone. Friends will help you work more quickly and find translations to difficult words.

Never assume that the English message is perfect. Never. Do what you can to improve the English messages. Developers are people just like you are. There are developers who know their code very well, but who are not the best writers. And though some messages are written by professional user experience designers, many are written by the developers themselves. Developers are developers; they are not necessarily very good writers or designers, and the messages that they write in English may not be perfect. Also, keep in mind that many, many MediaWiki developers are not native English speakers; a lot of them are from Russia, Netherlands, India, Spain, Germany, Norway, China, France and many other countries. English is foreign to them, and they may make mistakes.

So if anything is hard to translate, of if there are any other problems with the English messages to the translatewiki Support page. While you are there, use the opportunity to help other translators who are asking questions there, if you can.

Another good thing is to do your best to try using the software that you are translating. If there are thousands of messages that are not translated to your language, then chances are that it’s already deployed in Wikipedia and you can try it. Actually trying to use it will help you translate it better.

Whenever relevant, fix the documentation displayed near the translation area. Strange as it may sound, it is possible that you understand the message better than the developer who wrote it!

Before translating a component, review the messages that were already translated. To do this, click the “All” tab at the top of the translation area. It’s useful for learning the current terminology, and you can also improve them and make them more consistent.

After you gain some experience, create or improve a localization guide in your language. There are very few of them at the moment, and there should be more. Here’s the localization guide for French, for example. Create your own with the title “Localisation guidelines/xyz” where “xyz” is your language code.

As in Wikipedia itself, Be Bold.

OK, so I got to 100%, what now?

Well done and congratulations.

Now check the statistics for your language every day. I can’t emphasize enough how important it is to do this every day. If not every day, then as frequently as you can.

The way I do this is having a list of links on my translatewiki.net user page. I click them every day, and if there’s anything new to translate, I immediately translate it. Usually there are just a few new messages to translate; I didn’t measure precisely, but usually it’s fewer than 20. Quite often you won’t have to translate from scratch, but to update the translation of a message that changed in English, which is usually even faster.

But what if you suddenly see 200 new messages to translate or more? It happens occasionally. Maybe several times a year, when a major new feature is added or an existing feature is changed. Basically, handle it the same way you got to 100% before: step by step, part by part, day by day, week by week, notch by notch, and get back to 100%.

But you can also try to anticipate it. Follow the discussions about new features, check out new extensions that appear before they are added to the Extensions Used by Wikimedia group, consider translating them when you have a few spare minutes. At the worst case, they will never be used by Wikimedia, but they may be used by somebody else who speaks your language, and your translations will definitely feed the translation memory database that helps you and other people translate more efficiently and easily.

Consider also translating other useful projects: OpenStreetMap, Etherpad, Blockly, Encyclopedia of Life, etc. Up to you. The same techniques apply everywhere.

What do I get for doing all this work?

The knowledge that thanks to you, people who read in your language can use Wikipedia without having to learn English. Awesome, isn’t it? Some people call it “Good karma”. Also, the knowledge that you are responsible for creating and spreading the terminology in your language for one of the most important and popular websites in the world.

Oh, and you also get enormous experience with software localization, which is a rather useful and demanded job skill these days.

Is there any other way in which I can help?

Yes!

If you find this post useful, please translate it to other languages and publish it in your blog. No copyright restrictions, public domain (but it would be nice if you credit me and send me a link to your translation). Make any adaptations you need for your language. It took me years of experience to learn all of this, and it took me about four hours to write it. Translating it will take you much less than four hours, and it will help people be more efficient translators.

Thanks!

23 October, 2020 04:36 PM

02 October, 2020

Gilad Ben-Yossef

תלות גומלין

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

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

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

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

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

"Sic Semper Tyrannis"

02 October, 2020 08:11 AM

18 July, 2020

Yehuda Bar-Nir

עוברים דירה


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

The post עוברים דירה appeared first on בלוג פשוט.

18 July, 2020 12:06 PM

17 July, 2020

Diego Iastrubni

המסע אל אנדרואיד – חודשיים עם /e/ – מה לא עובד – חלק 15

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

לגולש ברוך שכתב פה הודעה בפוסט קודם:

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

הבעייה שלי היא … המסביב. איך מגבים Whatsup. איך מוחקים/מאתרים מרחוק את המכשיר כשהוא נאבד. התמיכה ב־Chromecast היא חסרה לי. השלוש חנויות שאני נאלץ להתמודד איתן זה מעיק.

הטקסט המלא

17 July, 2020 08:51 AM

10 June, 2020

hatul

המדריך של חתול להתקנת ארץ׳ לינוקס

אני מודע לכך שלא כתבתי יותר משש שנים ואני מקווה שמישהו עוד עוקב אחרי הבלוג. אבל לאחרונה קניתי מחשב חדש וכמובן שהתקנתי עליו ארץ׳ וחשבתי שתיאור התהליך יוכל לעזור למישהו. לי לפחות יוכל לעזור בעתיד לדעת מה בדיוק עשיתי.

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

בהתקנה התבססתי על שני מדריכים עיקריים:

בתור התחלה, הורדתי את תקליטור ההתקנה של ארץ׳, „צרבתי” אותו על החסן נייד והעליתי את המחשב ממנו.

התחברות לרשת האלחוטית

wifi-menu

או שמתחברים עם כבל לרשת קווית

בדיקה שמחובר:

ping -c3 google.com

עדכון שעון מערכת

timedatectl set-ntp true

חלוקת מחיצות עם fdisk

אצלי כבר היה מותקן אובונטו מהיצרן ולכן השארתי את שתי המחיצות הראשונות של uefi ומחיצת שחזור ומחקתי את המחיצה של אובונטו

fdisk /dev/nvme0n1

יצרתי מחיצה ל־swap של 24G, מחיצת שורש של 30G ומחיצת בית של 175G שנשארו (לפי הסדר הזה)

mkswap /dev/nvme0n1p3
swapon /dev/nvme0n1p3
mkfs.ext4 /dev/nvme0n1p4
mkfs.ext4 /dev/nvme0n1p5

הגדרת מקורות

pacman -Sy reflector
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
reflector -c "IL" -f 12 -l 10 -n 12 --save /etc/pacman.d/mirrorlist

עיגון

mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p5 /mnt/home

התקנה

pacstrap /mnt base linux linux-firmware nano intel-ucode

הגדרת fstab

genfstab -U /mnt >> /mnt/etc/fstab

ביצוע chroot

arch-chroot /mnt

הגדרת אזור זמן

ln -sf /usr/share/zoneinfo/Asia/Jerusalem /etc/localtime
hwclock --systohc

הגדרת locale

nano /etc/locale.gen
en_US.UTF-8 UTF-8
he_IL.UTF-8 UTF-8
locale-gen

הגדרת רשת

echo myname > /etc/hostname
nano /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 myname.localdomain myname

הגדרת סיסמה

passwd

התקנת grub

pacman -S grub efibootmgr
mkdir /boot/efi
mount /dev/nvme0n1p1 /boot/efi
grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi
grub-mkconfig -o /boot/grub/grub.cfg

יצירת משתמש

useradd -s /bin/bash -g users -G sys,adm,wheel -m user
passwd user

התקנת ממשק גרפי

pacman -S xorg-server xf86-video-intel
pacman -S eog evince file-roller gdm gedit gnome-calculator gnome-color-manager gnome-control-center gnome-disk-utility gnome-font-viewer gnome-keyring gnome-logs gnome-menus gnome-screenshot gnome-session gnome-settings-daemon gnome-shell gnome-shell-extensions gnome-system-monitor gnome-terminal gvfs gvfs-gphoto2 gvfs-mtp mutter nautilus networkmanager simple-scan totem xdg-user-dirs-gtk

לא כל גנום חובה, חלק אני רציתי

להפעיל את השירותים

systemctl enable gdm NetworkManager

הרשאות ניהול

pacman -S sudo
nano /etc/sudoers
%wheel ALL=(ALL) ALL

התקנת yay

pacman -S base-devel wget
wget https://aur.archlinux.org/cgit/aur.git/snapshot/yay-bin.tar.gz
tar -xzf yay-bin.tar.gz
cd yay-bin
makepkg -si

התקנת גופנים לעברית

קצת סיפור להוריד ולבנות את החבילה של הגופנים אז אפשר להוריד אותה מדרייב:

pacman -U ttf-ms-win10-10.0.18362.116-2-any.pkg.tar.xz
yay -S culmus culmus-fancy-ttf ttf-alef

התקנת דפדפנים

pacman -S firefox-i18n-he chromium

התקנת ליברה אופיס

pacman -S libreoffice-fresh-he

עוד כמה תוכנות חשובות בעיני (חלק צריך להגדיר)

libhdate-glib vlc mlocate reflector zsh zsh zsh-completions zoom parcellite

וזהו

reboot

אם התקנתם הכול נכון אז המערכת תעלה ותוכלו להינות ממנה. בהצלחה!

10 June, 2020 10:03 AM

26 May, 2020

Shlomi Noach

orchestrator on DB AMA: show notes

Earlier today I presented orchestrator on DB AMA. Thank you to the organizers Morgan Tocker, Liz van Dijk and Frédéric Descamps for hosting me, and thank you to all who participated!

This was a no-slides, all command-line walkthrough of some of orchestrator‘s capabilities, highlighting refactoring, topology analysis, takeovers and failovers, and discussing a bit of scripting and HTTP API tips.

The recording is available on YouTube (also embedded on https://dbama.now.sh/#history).

To present orchestrator, I used the new shiny docker CI environment; it’s a single docker image running orchestrator, a 4-node MySQL replication topology (courtesy dbdeployer), heartbeat injection, Consul, consul-template and HAProxy. You can run it, too! Just clone the orchestrator repo, then run:

./script/dock system

From there, you may follow the same playbook I used in the presentation, available as orchestrator-demo-playbook.sh.

Hope you find the presentation and the playbook to be useful resources.

26 May, 2020 05:52 PM

Kaplan Open Source Consulting

סדנאות QGIS ביוני 2020

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

לצד סדנה בהתאמה אישית לארגונית (דרך zoom בתקופת הקורונה) המאפשרת גמישות מקסימלית של התכנים, אנחנו מפעילים סדנאות חודשיות עם תוכן קבוע. סדנאות QGIS שלנו ביוני 2020:

  1. מה זה QGIS ופלאגאין עבור מידע ישראלי פתוח (17 ביוני, דרך Zoom)
  2. סדנת מבוא ל-QGIS (14 ביוני, דרך Zoom)
  3. סדנת QGIS למתכנני ערים (15 ביוני, דרך Zoom)

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

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

26 May, 2020 10:15 AM

12 May, 2020

Shlomi Noach

orchestrator: what’s new in CI, testing & development

Recent focus on development & testing yielded with new orchestrator environments and offerings for developers and with increased reliability and trust. This post illustrates the new changes, and see Developers section on the official documentation for more details.

Testing

In the past four years orchestrator was developed at GitHub, and using GitHub’s environments for testing. This is very useful for testing orchestrator‘s behavior within GitHub, interacting with its internal infrastructure, and validating failover behavior in a production environment. These tests and their results are not visible to the public, though.

Now that orchestrator is developed outside GitHub (that is, outside GitHub the company, not GitHub the platform) I wanted to improve on the testing framework, making it visible, accessible and contribute-able to the community. Thankfully, the GitHub platform has much to offer on that front and orchestrator now uses GitHub Actions more heavily for testing.

GitHub Actions provide a way to run code in a container in the context of the repository. The most common use case is to run CI tests on receiving a Pull Request. Indeed, when GitHub Actions became available, we switched out of Travis CI and into Actions for orchestrator‘s CI.

Today, orchestrator runs three different tests:

To highlight what each does:

Build, unit testing, integration testing

Based on the original CI (and possibly will split into distinct tests), this CI Action compiles the code, runs unit tests, runs the suite of integration tests (spins up both MySQL and SQLite databases and runs a series of tests on each backend), this CI job is the “basic” test to see that the contributed code even makes sense.

What’s new in this test is that it now produces an artifact: an orchestrator binary for Linux/amd64. This is again a feature for GitHub Actions; the artifact is kept for a couple months or so per Actions retention policy. Here‘s an example; by the time you read this the binary artifact may or may not still be there.

This means you don’t actually need a development environment on your laptop to be able to build and orchestrator binary. More on this later.

Upgrade testing

Until recently not formalized; I’d test upgrades by deploying them internally at GitHub onto a staging environment. Now upgrades are tested per Pull Request: we spin up a container, deploy orchestrator from master branch using both MySQL and SQLite backends, then checkout the PR branch, and redeploy orchestrator using the existing backends — this verifies that at least backend-database wise, there’s not upgrade errors.

At this time the test only validates the database changes are applicable; in the future this may expand onto more elaborate tests.

System testing

I’m most excited about this one. Taking ideas from our approach to testing gh-ost with dbdeployer, I created https://github.com/openark/orchestrator-ci-env, which offers a full blown testing enviroment for orchestrator, including a MySQL replication topology (courtesy dbdeployer), Consul, HAProxy and more.

This CI testing environment can also serve as a playground in your local docker setup, see shortly.

The system tests suite offers full blown cluster-wide operations such as graceful takeovers, master failovers, errant GTID transaction analysis and recovery and more. The suite utilizes the CI testing environment, breaks it, rebuilds it, validates it… Expects specific output, expects specific failure messages, specific analysis, specific outcomes.

As example, with the system tests suite, we can test the behavior of a master failover in a multi-DC, multi-region (obviously simulated) environment, where a server marked as “candidate” is lagging behind all others, with strict rules for cross-site/cross-region failovers, and still we wish to see that particular replica get promoted as master. We can test not only the topology aspect of the failover, but also the failover hooks, Consul integration and its effects, etc.

Development

There’s now multiple options for developers/contributors to build or just try out orchestrator.

Build on GitHub

As mentioned earlier, you actually don’t need a development environment. You can use orchestrator CI to build and generate a Linux/amd64 orchestrator binary, which you can download & deploy as you see fit.

I’ve signed up for the GitHub Codespaces beta program, and hope to make that available for orchestrator, as well.

Build via Docker

orchestrator offers various Docker build/run environments, accessible via the script/dock script:

CI environment: the “full orchestrator experience”

This is the orchestrator amusement park. Run script/dock system to spawn the aforementioned CI environment used in system tests, and on top of that, an orchestrator setup fully integrated with that system.

So that’s an orchestrator-MySQL topology-Consul-HAProxy setup, where orchestrator already has the credentials for, and pre-loads the MySQL topology, pre-configured to update Consul upon failover, HAProxy config populated by consul-template, heartbeat injection, and more. It resembles the HA setup at GitHub, and in the future I expect to provide alternate setups (on top).

Once in that docker environment, one can try running relocations, failovers, test orchestrator‘s behavior, etc.

Community

GitHub recently announced GitHub Discussions ; think a stackoverflow like place within one’s repo to ask questions, discuss, vote on answers. It’s expected to be available this summer. When it does, I’ll encourage the community to use it instead of today’s orchestrator-mysql Google Group and of course the many questions posted as Issues.

There’s been a bunch of PRs merged recently, with more to come later on. I’m grateful for all contributions. Please understand if I’m still slow to respond.

12 May, 2020 07:13 AM

18 April, 2020

Kaplan Open Source Consulting

סדנאות QGIS במאי 2020

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

לצד סדנה בהתאמה אישית לארגונית (דרך zoom בתקופת הקורונה) המאפשרת גמישות מקסימלית של התכנים, אנחנו מפעילים סדנאות חודשיות עם תוכן קבוע. סדנאות QGIS שלנו במאי 2020:

  1. מה זה QGIS ופלאגאין עבור מידע ישראלי פתוח (10 במאי, דרך Zoom)
  2. סדנת מבוא ל-QGIS (11 במאי, דרך Zoom)
  3. סדנת QGIS למתכנני ערים (12 במאי, דרך Zoom)

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

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

18 April, 2020 11:55 AM

16 April, 2020

Hamakor

אסיפה כללית של עמותת המקור – 26.4.2020

שלום לחברי וחברות עמותת המקור,

בתאריך 26.4.2020 בשעה 19:00 תכונס אסיפה כללית של עמותת המקור – עמותה ישראלית לתוכנה חופשית וקוד מקור פתוח (ע"ר).

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

על סדר היום: 

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

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

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

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

האסיפה פתוחה גם למי שאינו חבר עמותה, אך זכות ההצבעה תינתן רק לחברי עמותה. במידה ואתם כיום חברי העמותה ומעוניינים להפסיק את חברותכם, אנא שלחו על כך הודעה בכתב לכתובת board@hamakor.org.il בטרם האסיפה, כדי שלא נידרש לספור אתכם במניין הדרוש לקוורום. במידה ואתם לא חברים ורוצים להצטרף, נשמח מאוד — אנא פנו לועד ובקשו זאת, כפי שמתואר בעמוד ההצטרפות לעמותה.

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

16 April, 2020 07:11 PM

12 April, 2020

Gilad Ben-Yossef

זכרונות מגלגול קודם בגלקסיה רחוקה

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

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

מעבר לכך בסוף ההרצאה יש קטע בונוס מיוחד – גילוי של גלגולו הנוכחי של יודה, כאן ועכשיו!

תהנו!

12 April, 2020 03:08 PM

11 March, 2020

Oz Nahum

Thoughts after leaving noris network after two years

After two years at noris network AG, yesterday was my last day with this company. It has been a long time since it felt so hard leaving a company. In my two years I worked with really great people on some of the most cutting edge technologies. All these things were not possible without the help of so many great people with whom I worked with. Some of them might read this post, so here is a big thanks. I wanted to summerize my two years and gather all the lessons I learned in one place for my future self and others too. It's quite hard summerize such an eclectic post. It's been a wild ride in noris network with lots of new technologies and ideas. We have had a lot of success. I would like to think that a great part was because we opted to work in an open source matter, even thougah not all our projects where open source. This blog post is a summary of the good things we did, and the positive leasons we learned. I hope reading through these will inspire you to choose a similar path. continue reading...

11 March, 2020 03:55 PM

01 March, 2020

Yehuda Bar-Nir

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

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

The post php 7.4 appeared first on בלוג פשוט.

01 March, 2020 08:07 PM

14 January, 2020

Omer Zak

What to reply to a computer science student who asked you to be his accomplice in cheating?

You probably are familiar with the phenomenon of students, who pay other people to write term papers, theses and projects for them to submit in order to meet academic requirements.

Few years ago, a computer science student named R. (a pseudonym) approached me and asked me to write for him and his partner a computer program, so that they will submit it to meet a requirement in order to pass a course, which they were studying.

Instead of taking money from him, I replied to him as follows.

I am approaching your question from the point of view of a mentor, teacher or a wise person needing to advise a young person, who is in a difficult situation and who is considering a bad solution to his problem. What the young person really needs is not to have someone else do his project for him, but long-term thinking: what are the long-term consequences of this solution, what alternative solutions exist, which obstacles exist in the alternatives, how to overcome those obstacles, the need to summon courage to change course.

For starters, as far as I am concerned, what you asked for is in the grey area between cheating and having an original solution to the problem. This is because certificates are not worth that much in the vocation of software development. Either the developer knows how to program or he doesn’t know, no matter what degrees or impressive certificates he has. If he does not know how to program, then within half a year his employer, if the employer has a clue, knows about it, and gives him a kick in the ass – reducing the long-term damage. Also, there are several people, who take on big projects and hire other people to do the actual work. However, the difference is that they have to provide the project with services such as marketing skills, project management, search and selection of development tools, money handling, etc. – instead of (or in addition to) software development skills.

Now to the point. Before proceeding further with what you and your partner are contemplating doing – I highly recommend that both of you read Ayn Rand’s “The Fountainhead” and follow Peter Keating’s career development in the book. He started out relying upon other people, like you are contemplating doing, made an impression on the right people and reached the top of his profession.

But… he didn’t last long and eventually he fell. And the sad truth is that he trained for the wrong vocation. There was a vocation that suited him perfectly, and he could really excel at it, but his mother pressed him to learn the vocation he actually learned (and in which he eventually failed). The saddest thing about his story is that when he realized which vocation is right for him and started engaging in it – it turned out that he started it too late and could not reach a high level of proficiency in that vocation.

If you and your partner decide to pay someone else to do your project, then:

What to do now?

I suggest that you first carefully review the decisionmaking process that led you to decide on a vocation in the software world. If you have taken psychotechnic tests and consulted with a specialist in the area of vocational selection, one of the tests was probably as follows:

  1. Go over a very long list of topics and highlight those which interest you.
  2. Group the interesting topics into groups, such that the topics in each group have the same theme from your point of view.
  3. Go over the groups and identify potential vocations related to each group.

Why am I telling you all this? Because if you kept the papers from your evaluation (or you can get them), you might find there a clue for identifying a vocation, which really attracts you and in which you can excel.

The next step is to determine if you have relatives, who are unwilling to accept that your future is not in the lucrative and profitable software world, but in another direction. Then check if and how to neutralize their influence upon your choice of the vocation that fits you.

I assume that the computer world is appealing to you, so you may want to check out some other vocations in this world besides writing software (I remember that in Hadassah Institute for Professional Selection Counseling in Jerusalem, where I did my vocational counselling, there was a library with descriptions of thousands of vocations – such a library could help you choose the right vocation for you). Examples: training, installation and configuring, software testing, maybe even administrative project management. Then go on to specialize in the vocation that suits you and in which you can excel.

True, you already started studying and already invested two years in your studies, and now I am proposing to write off all this investment and start over? Yes, however as far as getting a certificate or a degree is concerned, some of the investment will probably be lost. But as I said above, certificates are not that valuable in the software world. Like a pilot’s license does not turn someone, not having the aptitude to pilot, into an ace fighter pilot; also a software developer’s certificate does not turn someone not fit to be software developer into a great software developer. In terms of content – I’m sure you’ve learned something that will help you in any direction you choose for the rest of your life. And as far as the requirements for finishing your studies are concerned, once you know which direction is right for you, you probably can switch to a major which fits your vocational goals. In this case, you’ll probably be able to use some of the credits of the courses that you already completed. So what you already studied is not a total loss.

P.S.:

A student, who is paying someone else to do his homework, term papers, projects or theses, is like a basketball player who is paying someone else to go to his team’s practice sessions.

14 January, 2020 03:08 PM

06 December, 2019

Itzik Kotler

Don't Let Your Fear Of Nation-State Hackers Blind You

Mr. Magoo is an old cartoon character famous for his inflated sense of status and an extreme case of myopia, made worse by his refusal to wear corrective glasses. As a result of his poor vision and ego, Magoo would find himself in precarious — and hilarious — situations because he was unable to see the danger right in front of him. Typically, the oblivious Magoo would leave a trail of destruction behind him..

Enterprises today approach security a lot like Mr. Magoo, operating with the idea that they are more important than they really are and therefore are unable to see the real risks that beset them. The result? A lot of unnecessary damage.

Read the full article at Forbes here

Full text

06 December, 2019 09:24 PM

17 November, 2019

Hamakor

מנכ"ל חדש לעמותת המקור!

לאחר 16 שנים של פעילות שהתבססה כולה על מתנדבים, ולאחר שנים של גידול משמעותי בפעילות העמותה, הגיעה העת לצמוח לשלב הבא. עמותת המקור שמחה להודיע על העסקת עובד ראשון – מנכ"ל העמותה הנכנס, סחף קדוש.

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

וכעת ניתן לו להציג את עצמו:

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

אשמח לעזרתכם וכאן למענכם, סחף.

17 November, 2019 01:19 PM

14 November, 2019

Omer Zak

Automatic localtime management in ESP8266 and other low-memory IoT devices

Justification

During the last several years, personal computers and smartphones became capable of displaying the local time, correctly adjusted for daylight saving time (DST) – and without requiring human intervention beyond selecting the correct timezone.

Nowadays, there are also some IoT devices, which need to support local time management – displaying it, or otherwise making it available.

Timekeeping is performed using the Internet protocol NTP, which provides the correct UTC. When using a PC or a smartphone, the timezone is usually selected by manual user action.

However, some IoT devices may not have the UI needed for convenient timezone selection. Then it is desirable to support automatic timezone selection as a default.

How to implement automatic timezone selection?

There are some websites, which discover your IP address and provide you with the best guess of your timezone.

Since those websites usually provide the timezone name rather than the string describing the DST transition dates (the so-called tz_string), the next step is to figure out the DST transition dates from the timezone name.

In devices with plenty of memory this is carried out by means of a timezone database.

For example, in Debian/Ubuntu based systems, this database is stored in the /usr/share/zoneinfo directory and occupies 3.5MB (the relevant package in Ubuntu 18.04 is tzdata and its version, as of Nov. 2019, is 2019c-0ubuntu0.18.04).

Memory constrained IoT devices

However, IoT devices are typically based upon memory-constrained controllers and cannot afford to store locally the whole timezone database – just to correctly determine the local time for a single timezone.

Therefore, IoT devices need to access an Internet based service to get the correct timezone information, just as they get UTC time updates using NTP. In other words, those IoT devices effectively outsource the timezone database management.

Internet service for providing the timezone information

An Internet service, for providing the correct tz_string corresponding to a timezone name, needs to keep the timezone database up to date at all times.

I implemented the internet service as follows.

  1. A machine, running an Ubuntu 18.04 installation with a webserver, is used.
  2. The Internet service is implmented as a small WSGI-based website. It uses the database mentioned below.
  3. A script scans the /usr/share/zoneinfo contents and creates a small database for translating timezone names into the corresponding tz_string values.
  4. There is a mechanism for invoking the above script and restarting the web server each time the tzdata package is updated/installed/re-installed.

Show us the code!

The GitHub project tddpirate/tzdata2tzstring includes redacted versions of both an implementation of the above website and a sample ESP8266 client.

Credits

I wish to thank the Python Israel Telegram group members for advice about selecting a Python WSGI framework. I ended up selecting Falcon because benchmarks indicated that it is faster than Flask and Bottle.

The members of the לינוקס Telegram group deserve thanks, too. They helped me find the mechanism for appending my own postprocessing scripts after a Debian/Ubuntu package installation or upgrade.

14 November, 2019 04:59 PM

24 October, 2019

Arie Skliarouk

MYSQL/BTRFS/NVME failure

It is a very bad idea to run database (especially production one with lots of I/O) on BTRFS because the filesystem at any random time might become readonly:

Oct 24 12:30:22 db02 kernel: BTRFS: error (device nvme0n1) in btrfs_run_delayed_refs:2936: errno=-28 No space left
Oct 24 12:30:22 db02 kernel: BTRFS info (device nvme0n1): forced readonly
And then you find that you need to do rebalance. You try and find out that rebalance can not be done because - you guessed it - there is no space left. They suggest to delete couple of snapshots though. You delete them, start rebalance and now the whole filesystem is stuck completely.

If you need HA mysql db with snapshots, then you should go with mysq/LVM/DRBD path, see this link for insight: https://rarforge.com/w/index.php/2_Node_Cluster:_Dual_Primary_DRBD_%2B_CLVM_%2B_KVM_%2B_Live_Migrations

24 October, 2019 03:02 PM

23 September, 2019

Itzik Kotler

Demystifying Criminal Hackers

As I write these pieces for Forbes Tech Council, I’ve tried to chip away at the Hollywood reputation that hackers have been given over the years. That reputation often keeps people from making good decisions about how to protect their networks and data, keeps people focused on the wrong security priorities, and causes people to give up before the game is over.

It’s important to keep in mind, however, that while criminal hackers may be smart and devious, they are also, in a sense, entrepreneurs who are in the game to make a quick buck. As such, they realize that hacking costs money and so they will do what they can to keep their operating costs low. Why, then, would you expect a criminal hacker to expend time and money developing specialized tools when there are easier ways to get to what they want?

Read the full article at Forbes here

Full text

23 September, 2019 11:38 PM

17 August, 2019

Ilan Shavit

מנסה לעשות קצת סדר: GPT, MBR, UEFI, Legacy Bios

בתקופה הקרובה אני מתכוון לכתוב סדרת מדריכים בנוגע להתקנת Arch Linux. בהסברים אתייחס להתקנות במצבים השונים: התקנה בסכימת מחיצות MBR או GPT והתקנה תחת Legacy Bios או UEFI, אז כדי שההסברים העתידיים יהיו ברורים אקדים ואסביר אה המונחים הללו (שאצל רבים לא ממש ברורים)

אתחיל בהסבר על GPT ו- MBR:
מדובר בשתי דרכים שונות להגדיר את מנהל האתחול ואת טבלת המחיצות (Partitions) בדיסק הקשיח. ה- MBR-Master Boot Record היא השיטה הישנה והמסורתית בה הביוס פונה לאזור שבתחילת הדיסק הקשיח, קורא את מנהל האתחול (446 בתים ראשונים בדיסק), קורא את טבלת המחיצות שמוגדרת אח"כ (64 בתים), ואז טוען את מערכת ההפעלה (באמצעות מנהל האתחול) מהמחיצה המסומנת כ- Active. בשיטה זאת ניתן להגדיר עד 4 מחיצות ראשיות (Primary Partition). במידה ומעוניינים בעוד מחיצות, ניתן, על חשבון מחיצת Primary Partition אחת, להגדיר עוד 23 מחיצות לוגיות (באזור שנקרא Extended Partiton). לפיכך MBR תומך בעד 26 מחיצות – כמספר האותיות האנגליות. שימוש ב- MBR, מעבר להגדרה המוזרה של המחיצות, מגביל אותנו להשתמש בדיסקים בגודל של עד 2 טרה בייט, אין לו שרידות של טבלת המחיצות ולא מתבצעת בדיקת של שלמות ונכונות הנתונים שלה (משמש מצע טוב ונוח להידבקות בוירוסים).

טכנולוגיית GPT נותנת מענה לחסרונות של MBR: היא תומכת בדיסקים הגדולים מ- 2TB (תמיכה בעד 9.4 מיליארד טרהבייט), היא לא מוגבלת (תאורטית) בכמות המחיצות ואין בה הפרדה ל- Extended Partition ו- Logical Devices. טכנולוגיית GPT שומרת 2 העתקים של טבלת המחיצות ומבצעת עליהם בדיקת CRC, ובמידה וטבלת מחיצות אחת משתבשת היא משחזרת אותה מהגיבוי. GPT מהווה שדרוג של ממש ל- MBR ואני לא מוצא שום היגיון להשתמש כיום ב- MBR בהתקנה של מערכת הפעלה חדשה.

אמשיך בהסבר על Legacy Bios ו- UEFI bios. אז כמו שכתבתי: שניהם מהווים את הביוס של המחשב. מדובר באותו רכיב קושחתי שמתווך בין מערכת ההפעלה לחומרת המחשב. כשמדליקים את המחשב הרכיב הראשוני שנטען זה הביוס. הוא זה שמבצע את בדיקת ה- POST, מאפשר להיכנס ולערוך את ההגדרות שלו, לבדוק את זיהוי החומרה ולשנות ערכים שונים (נניח לשנות את קצב השעון עבור ביצוע over clocking, לשנות את המתח שמזינים את זכרונות ה- RAM ועוד…). לאחר הבדיקות העצמיות של החומרה, הביוס ניגש לדיסק הקשיח ומעביר למנהל האתחול את המשימה של טעינת מערכת ההפעלה. אבל כאן לא נגמרת פעילותו. כשמערכת ההפעלה עובדת והיא, למשל, צריכה לכתוב מידע לדיסק הקשיח, היא תעביר את הבקשה (דרך הקרנל של מערכת ההפעלה) לביוס והוא זה שיפנה בפועל את הבקשה לבקר שבדיסק הקשיח. אז במחשב, כפי שניתן להבין, הכל עובר ועובד דרך הביוס!

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

תאימויות:
מערכת הפעלה חלונות תומכת בסכימת מחיצות GPT רק אם משתמשים ב- UEFI. בלינוקס אין מגבלה כזאת: היא תומכת בסכימת מחיצות GPT גם ב- Legacy וגם ב- UEFI

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

17 August, 2019 05:11 PM

26 July, 2019

Ilan Shavit

Arch Linux

מי שעוקב אחרי הבלוג שלי יודע שעברתי להשתמש ב- Arch Linux . אז נכון: Arch זאת הפצת Bleeding Edge (רחוקה מאוד ממודל ה- LTS השמרני של Ubuntu לא כל שכן מדביאן היציבה). מסיבות שונות נמנעתי בעבר מלהשתמש בה, אך עם פיתוח כלים נוחים לביצוע Snapshot (כגון Timeshift, CYA או אפילו Snapshot ברמת LVM), כבר לא צריך להיות קיים החשש של "מה יקרה אם…" (במקרה הכי גרוע מבטלים את העדכון האחרון וממשיכים הלאה).

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

אחד היתרונות הגדולים של Arch הן אפשרויות הבחירה: לא בוחרים עבורך את שולחן העבודה או את האפליקציות איתן תעבוד. אתה צריך לבחור הכל, ובכך אתה בונה לעצמך את שולחן העבודה האולטימטיבי. ב- Arch כמעט ולא עושים החלטות עבורך: בחרת Gnome תקבל Gnome טהור – ללא שום קוסטומיזציה של ההפצה (כנ"ל בכל שולחן עבודה אחר שתבחר). אתה צריך להפשיל שרוולים ולייפות בעצמך את שולחן העבודה: לבחור פונטים יפים, לבחור בערכת נושא ואייקונים הקולעים לטעמך, אך גם אם תעשה את כל הפעולות הללו, עדיין תצטרך לטפל בבעיות "פינתיות" (למשל שאפליקציות QT לא יראו טבעיים בשולחנות עבודה מבוססים GTK). בהתחלה יהיו לך כמשתמש לא מעט נושאים לטפל בהם אבל פה היתרון הגדול: אפשרויות הלימוד שלך כמשתמש הן עצומות. ל- Arch יש WIKI נפלא, בעיני הטוב ביותר מכל הפצות הלינוקס, ודרכו אתה יכול ללמוד המון על לינוקס ועל Arch. ההפצה מאפשרת לך כמשתמש להינות מחבילות התוכנה העדכניות ביותר (ועדיין מאפשרת לשמרנים מבינינו לבחור בקרנל LTS וב- OpenOffice  LibreOffice Still). כיום Arch די יציבה. אני נוהג לעדכן את ההפצה אחת לשבוע (sudo pacman -Syu). לא הייתי ממליץ לעדכן את ההפצה באופן יומי וגם לא לעדכן אותה אחת לפרק זמן ארוך מידי… בכל יום שישי אני מבצע Snapshot ואז מעדכן אותה. בינתיים Arch לא "נשברה" לי אפילו פעם אחת, אבל גם אם כן אוכל לתקן זאת בקלות.

להשתמש באובונטו זה משעמם! כתבתי להשתמש וזאת המילה הכי נכונה ומדוייקת (כי חוץ מלהשתמש בהפצה אתה בדרך כלל לא צריך לעשות כלום…).

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

שולחן העבודה שלי: Gnome Shell בהפצת Arch Linux

 

26 July, 2019 06:48 AM

17 June, 2019

Oz Nahum

Visualize almost anything with Grafana and Python

This is a short tutorial on how to build a data source for Grafana using Python Bottle micro-framework. Eventually, you can use this code to connect to any database (including SQLite). continue reading...

17 June, 2019 08:01 AM

19 March, 2019

Meir Kriheli

מצב התרגום לעברית של Django 2.2

לאחר הפסקה לא קצרה עקב שחיקה, חזרתי לתרגם את Django עם שחרור 2.2 RC1. נכון ליום שלישי ה־19 במרץ התרגום עומד על 100% עבור:

נשארו בחוץ, שוב, עקב חוסר זמן והיקף המשימה:

19 March, 2019 04:56 PM

21 October, 2018

Lev Meirovitch

Linux new Code of Conduct

Collection of links to emails, articles and posts about Linux Kernel CoC situation arranged by date.

21 October, 2018 05:26 AM

20 October, 2018

Lev Meirovitch

How not to protect your app

Examples of several wrong ways to make your app secure

20 October, 2018 01:51 PM

31 July, 2018

Lior Kaplan

Debconf18 – יום ראשון

את היום הראשון של הכנס פתחתי כרגיל בדוכן הרשמה (front desk) והייתי שם עד הצהרים כדי שהצוות ירשום את הגל אנשים שהגיעו.

לצערי הכנסים של דביאן נפתחים מאוד בעצלתיים מבחינת תוכן – יש הרצאת/טקס פתיחת ואחרי אין ישר רצף גדול של הרצאות אלא טפטוף קטן של נושאים והרצאות. קצת מאכזב מבחינתי. ומצד שני, אפשר לי להתחיל לעבוד על החבילות של עברית בדביאן בלי לדאוג לפספס תוכן כלשהו. אבל לפני שאפשר לעבוד על החבילות, צריך לייצר סביבה מתאימה. לקח לי זמן להוריד חלודה לגבי מה צריך, ואיך לייצר משהו שיודע לבנות בתוך chroot (גם כדי שהבניה תהיה נקייה, וגם כי אני משתמש ב-testing בעוד שהבניה נעשית ב-unstable). בעזרת כמה תזכורות מ-Bálint הכל הסתדר, ויש סביבה עובדת עם sbuild.

השלב השני היה להתחיל להמיר את ההיסטוריה של הצוות מ-SVN ל-GIT ואז לדחוף את זה לשרת ה-GitLab החדש של דביאן. עשיתי את זה בנפרד עבור כל חבילה, כאשר הראשונה בתור היא Hspell כי צפריר הספיק להכין את הרוב מראש. ואחר כך עבדתי על המרת Culmus כי לא הייתי רוצה שהגרסה הבאה תצא בלי פונטים בעברית (על הדרך כבר הועלתה גרסה 0.132). כל המאגרים זמינים תחת Debian Hebrew Packagers בכתובת https://salsa.debian.org/hebrew-team . למי שצריך לעשות משהו דומה, הכלי להמרה היא git svn clone ואפשר להשתמש בהוראות שיש באתר git-scm.com בכתובת https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git . על בסיס הפקודות שלהם עוד עשיתי כמה שינויים קלים, אבל החלקים החשובים נמצאים שם.

בין לבין שמעתי את הדיווח השנתי של Chris Lamb במסגרת תפקידו כ-Debian Project Leader. בין השאר גיליתי שם כי דביאן תחגוג השנה יום הולדת 25 באמצע אוגוסט, וישר החלטתי לפתוח event כדי לחגוג עם עוד אנשים. נתראה שם בקרוב (: בנוסף, גיליתי כי המעבר של דביאן ל-GitLab נובע בין השאר גם מהשינוי שלהם בנושא ה-Content License Agreement ושינוי ל-Developer Certificate of Origin מה שמאפשר ליותר אנשים לתרום קוד בלי לוותר על הזכויות שלהם או לקרוא מסמך משפטי כבד. שאפו ל-GitLab, ואיזה כיף לעבור לעבוד במערכת מתקדמת.

31 July, 2018 02:40 PM

29 July, 2018

Lior Kaplan

Debconf18 – קדם כנס

הכנס השנתי של דביאן, Debconf, מתקיים השנה בפעם הראשונה באסיה (Hsinchu, Taiwan). הישג מכובד לאחר שנים של אירופה / ארה"ב ולפעמים דרום אמריקה. וגיוון מבורך בהמשך לכנס בדרום אפריקה לפני שנתיים. כלומר הפעם טסים לכנס מזרחה ולכן גם כולם סובלים מג'ט לג חמור יותר. לצערי זה גם גרם לי לתרום הרבה פחות בדוכן הרשמה (front desk) למרות שזה אחת ההתנדבויות הקבועות שלי.

היום הפתוח התנהל בחלקו בסינית, כך שאפילו לא ניסיתי ללכת להרצאות (גם לבודדות שהיו באנגלית), ובמקום זה התמקדתי בקצת שיחות עם אנשים (למרות העייפות). הספקתי לדבר עם Bálint Réczey שעובד עבור Canonical בצוות Ubuntu Foundation שאחראי על הסנכרון עם דביאן והתרומה של שינויים לקהילה. גם ניצלתי את ההזדמנות כדי לשמוע באיזה כלים הם משתמשים בפעילות, כדי לתזכר את עצמי. אחרי כמעט שנה שלא נגעתי בחבילות, אני בהחלט חלוד (וגם צריך לסדר את סביבת העבודה על המחשב). אגב, קנוניקל מחפשים אנשים עובדים, אם מישהו מתעניין, צרו קשר בפרטי (יש אפשרות לעבוד מרחוק, ואוכל לעזור בסידורים הנדרשים).

בהמשך הערב ישבתי על באג שדיווח לקוח על פיצ'ר של PHP שלא עובד לו מול OpenSSL. תפסתי את Kurt Roeckx שאחראי על החבילה בדביאן וגם עושה עבודת upstream בכמה שנים האחרונות כדי לבדוק את הנושא. אחרי קצת שאלות מולו ובדיקות שלי הסתבר שהבעיה היא לא ב-OpenSSL אלא ב-PHP, ואחרי מספיק חיטוטים בקוד נפתח באג #76676.

לאורך היום יצא לי להכיר את הלן (Helen Koike), בחורה נחמדה שסיפרה שהיא לא מעורבת מאוד בדביאן, ובאה ללמוד קצת כי היא הולכת לעזור לצוות המארגן של שנה הבאה. תייגתי אותה כעוד מישהי שעושה עבודה כללית ולא משהו טכני (הקהילה מורכבת גם מכאלה) והמשכתי הלאה. יותר מאוחר בערב, בשיחה רנדומלית גיליתי שהיא עשתה פעילות על הקרנל במסגרת Outreachy, תרמה דריברים, עובדת ב-Collabora בצוות שמתעסק עם הקרנל וכו'. היא פשוט צנועה לאללה. ניסיתי לדחוף אותה לתרומה בצוות קרנל של דביאן והיא אמרה שהיא לא יודעת לארוז חבילות. הסברתי לה שהיא יודעת לתקן באגים בקרנל, וזה תרומה משמעותית לצוות. בנתיים מישהו אחר יכול לארוז. ויותר חשוב לתקן באגים.

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

לסיום הערב, עשיתי תיאום עם צפריר לגבי החבילות של עברית בדביאן שדורשות תשומת לב בעקבות מהעבר מ-Alioth ל-Salsa שעל הדרך סגר את רשימות התפוצה הצוותיות וגם מכריח את כולם לעבור ל-GIT. כאשר המטרה היא לעשות את המיגרציה, לתקן את הבאגים שדווחו מולן כתוצאה מכך, שגם מונעים מהן להכנס ל-testing (ולכן לגרסה הבאה של דביאן). והדבר משמעותי, כי תהליכי ה-freeze מתחילים בספטמבר. בסופו של דבר, אני הולך להקדיש את הזמן לחבילות, בעוד שצפריר יתעסק בדברים אחרים שלו. שזה סה"כ הוגן, כי במהלך השנה לא יצא לי לתרום כלום לתחזוקת החבילות האלה.

מי שרוצה לעקוב אחרי הכנס מרחוק, אז הלוח זמנים נמצא בכתובת https://debconf18.debconf.org/schedule, רק לא לשכוח שהכנס מתקיים באזור זמן +8, כלומר 5 שעות לפני ישראל (ריאלית, אפשר לצפות בהרצאות של אחרי ארוחת הצהריים כאן, שזה 9 בבוקר בישראל).

29 July, 2018 04:17 PM

10 July, 2018

Rabin Yasharzadeh

Overwrite the default GTK theme per application

I love using a dark theme on my system, currently I’m running the Adapta theme. But not all applications looks great in dark themes, some need tweaking, this is a quick hack to overwrite the default theme used for a specific application.

In this example I’ll be overwriting the theme for virt-manager.

First we’ll copy the default launcher/desktop file to the local dir, and then we will change that file,

sudo cp /usr/share/applications/virt-manager.desktop /usr/local/share/applications/virt-manager.desktop
sudo vim /usr/local/share/applications/virt-manager.desktop

And do this small change, prefix the application Exec command with

env GTK_THEME=theme_name

--- /usr/share/applications/virt-manager.desktop 2018-02-28 22:48:50.000000000 +0200
+++ /usr/local/share/applications/virt-manager.desktop 2018-07-09 11:00:40.000000000 +0300
@@ -55,7 +55,7 @@
Comment[sv]=Hantera virtuella maskiner
Comment[uk]=Керування віртуальними машинами
Icon=virt-manager
-Exec=virt-manager
+Exec=env GTK_THEME=Adapta virt-manager
Type=Application
Terminal=false
Categories=System;

10 July, 2018 12:24 PM

03 June, 2018

Rabin Yasharzadeh

Convert certificate format with OpenSSL

Convert a PEM file to DER (crt etc)

$ openssl x509 -outform der -in certificate.pem -out certificate.crt

Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM

$ openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12)

$ openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

 

03 June, 2018 09:25 AM

07 May, 2018

Meir Kriheli

מצגת ההרצאה NoORM

למרות כותרת ההרצאה הפרובוקטיבית, ההרצאה שלי ב־PyWeb-IL 75 עוסקת במקרים בהם עלינו לעזוב את מחוזות ה-ORM/ODM.

מצגת ההרצאה NoORM זמינה בעמוד הרצאות ומצגות.

07 May, 2018 09:26 PM

25 April, 2018

Arie Skliarouk

GRUB-based multiple iso booting flash drive

With huge USB flash drives of today it is sad that one can't easily put several bootable ISO images on it and have nice on-boot selection menu.

GRUB to the rescue!

Historically GRUB is being used for hard disks and syslinux for floppies and flash drives. But nothing prevents using GRUB for flash drives as well. Here are instructions for creating bootable GRUB-based USB flash drive (disk on key):

  1. Create vfat partition. For big drives you must use fat32 format.
  2. Unpack the http://skliarie.meshanet.com/skliarie_blog/boot.tar.gz onto it. It will create single directory boot on the drive.
  3. Customize boot/grub/grub.cfg file, put iso images accordingly
  4. On linux box, put bootable MBR onto the DOK (for example on /dev/sdf):
    1. mount /dev/sdf /mnt/dok
    2. grub-install --force --no-floppy --root-directory=/mnt/dok /dev/sdf
    3. umount /mnt/dok 

    Caveats:

    The ISO image must support GRUB-based booting. Specifically it must be smart enough to locate ISO image on the DOK using parameters specified in grub.cfg file.

    Latest Ubuntu and Debian based ISO images are known to work.

    Thanks to Jonathan Vollebregt there is a way to boot knoppix as well. You will need custom initrd, with your flash drive specific tuning. I built one for mine: knoppix_minirt.gz, you are free to take and modify it according to your DOK and filesystem parameters. Important commands here are:
    1. Unpack the initrd
      gzip -dc /mnt/dok/boot/knoppix/minirt_ska.gz | cpio -i
    2. Modify the init file (put sector numbers that are correct for your DOK)
    3. Compress back the initrd
      find ./ | cpio -H newc -o | gzip -9 -c > /mnt/dok/boot/knoppix/minirt_ska.gz
    Please send me GRUB stanzas for other ISO images and I will put them into the grub.cfg file.

    25 April, 2018 08:21 AM

    19 March, 2018

    Tom Bigelajzen

    Font Progress Update

    The Ubuntu Font Hebrew v0.8 Design PrototypeThere was some progress made this week, especially with fine tuning the letters and revising those letters I’m not so sure about.
    The one letter I’m struggling with is Aleph (א), I can’t seem to find the right balance.

    I got a lot of feedback and many good tips, thank you everybody 🙂
    I’m doing my best to take them all into account.

    I was trying to add some Hebrew glyphs to a font file, but the free font creation programs I tried (FontForge and the Demo of TypeTool) are not so friendly, it will take some more time to do.

    Links to v0.8:
    PDF file
    Illustrator CS4 File

    19 March, 2018 08:15 AM

    Ubuntu Font Hebrew Subset now has an issue on Launchpad

    The Ubuntu Font Hebrew v0.8 Design PrototypeI opened an issue on launchpad and it was added to the Ubuntu Font Family Wishlist queue.

    As an added bonus Mark Shuttleworth himself gave his blessing to this design effort (!)
    It was a fun mail to start the day with 🙂

    I want to quote one thing he wrote:

    It *would* be useful if you could start building up a Hebrew community that can provide early and accurate feedback to DM when they start the Hebrew design process.

    And later, Paul Sladen wrote:

    developing a typeface takes a very long-time (months and months), and although
    work on Hebrew won’t be incorporated until the Ubuntu 11.04 development cycle,
    it is very useful to start working on it now!

    So, I really want to start working on it seriously (too bad I didn’t start this before August Penguin…)
    This week I guess I’ll finish the initial design with the good tips I got from Paul Sladen and from Maxim Ioresh, but this is only the beginning:

    A real OpenType font must be created and refined, people need to test it, to find where it breaks.
    And there are more variants –  we have to do the Bold font, the Italic and Bold Italic, and by the time these will be finished there most likely be some Condensed variants too… so I need designers, typographers and testers to pitch in, we have a bit more than 6 months, it’s enough, but not a lot of time for a community project.

    Original post: http://tombigel.com/2010/08/26/hebrew-for-the-ubuntu-font/

    This is fun! I love Open Source.

    19 March, 2018 08:15 AM

    05 March, 2018

    Lior Kaplan

    Running for OSI board

    After serving in the board of a few technological Israeli associations, I decided to run as an individual candidate in the OSI board elections which starts today. Hoping to add representation outside of North America and Europe. While my main interest is the licensing work, another goal I wish to achieve is to make OSI more relevant for Open Source people on a daily basis, making it more central for communities.

    This year there are 12 candidates from 2 individual seats and 5 candidate for 2 affiliate seats (full list at OSI elections wiki page). Wish me luck (:

    Full text

    05 March, 2018 09:37 AM

    25 February, 2018

    Ira Abramov

    עוד פרויקט שלא אגיע אליו: עוזר חכם ובית חכם

    האם אתם רוצים מערכת כזו? התשובה מורכבת.

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

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

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

    1. יש מיקרופון והמחשב שמאזין לו, מנסה לבטל רעשי רקע ולהתמקד במה שעלול להיות דיבור.
    2. אח"כ תוכנה אחרת שבודקת אם זה אכן דיבור ומתרגמת אותו לטקסט. זה אולי הרכיב הכי מתוחכם במערכת ונחמד שיש אופציה או שתיים ברישיון חופשי (אבל כרגע אני די בטוח שזה עובד רק באנגלית, ולא יעבוד בעברית בקרוב. מקווה שלא תהיה בעיה עם זיהוי מבטא לא ילידי :)
    3. אחרי שיש לנו טקסט אפשר לפענח ממנו את הפקודה גם אם לא נאמרה בצורה תקנית אחת. כלומר "התראה עוד שעה" או "בבקשה כוון לי תזכורת בעוד שעה מעכשיו, תודה" הם שני משפטים שונים למדי אבל המחשב צריך לזהות את שניהם. הרכיב הזה והרכיב הקודם הם הרכיבים שקורים בענן של גוגל או אמאזון או מיקרוסופט שאותם אני רוצה להביא אל תוך הבית.
    4. בשלב הזה אפשר להפעיל מיני תוכנות וסקריפטים (מייקרופט למשל קוראים לזה "כשרונות" והקהילה פיתחה כבר כ-140 כאלו), כאן מגיעה ההתממשקות עם MQTT ורכיבי חומרת Sonoff השונים, או גישה לרשת כדי לדבר עם חשבון הגוגל שלכן כדי לבדוק איש קשר או לדחוף ארוע ליומן, וכיוצא באלו.
    5. לבסוף לאשר או להחזיר משוב למשתמש בצורת רכיב אחר שהופך תשובת טקסט לדיבור, מסנטזים כאלו יש הרבה בשוק – היה לי אפילו על אפפל ][ עם 64K זכרון, לצערי האיכות התפתחה מעט מאוד מאז בתוכנה פתוחה. מקווה שישתפר בעתיד.

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

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

    קריאה לעומק של תשובות מייקרופט לתומכי הקיקסטארטר ושל תנאי הפרטיות שלהם שכנעה אותי שהם לא עומדים בדרישות הפרטיות שלי בתצורה הנוכחית שלהם. בגדול הם "מתכננים" גרסא מקומית של רכיב ה־STT (דיבור לטקסט) שתרוץ על מחשב לינוקס או חלונות אבל זה עוד לא שם, ובתלות ברכיב שיבחרו, יכול להיות שזה ידרוש GPU חזק כדי לבצע את הניתוח בצורה מהירה ככל הניתן. מנתח ה־STT הנוכחי שלהם לא מספיק טוב והחדש שיכנס בסוף החודש צריך הרבה יותר כוח מחשוב. אז  כדאי לחכות. בעתיד זו תהיה אפליקציה או תמונת Docker מוכנה שנוכל להריץ על שרת PC כעזר לרספברי בלי להסתמך על שרתי החברה.

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

    25 February, 2018 03:50 PM

    04 January, 2018

    Levi Shahar

    איך לא להגן על הרשת אלחוטית שלכם

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

    Full text

    04 January, 2018 09:25 AM

    28 November, 2017

    Lior Kaplan

    AGPL enforced: The Israeli ICT authority releases code

    Data.gov.il was created in 2011 after the Israeli social justice protests as part of the the public participation initiative and started to offer data held by the government. Back then the website was based on Drupal. In 2016 it was changed to CKAN, a designated system for releasing data. This system is licensed under the AGPLv3 requiring source code availability for anyone who can access the the system over a network, de facto for every user.

    Since the change to CKAN, open source people asked the state to release the code according to the license but didn’t get a clear answer. All this time when it’s clear it’s violation.  This led Gai Zomer to file a formal complaint in March 2017 with the Israeli State Comptroller. Absurdly, that same month the ICT authority mentioned a policy to release source code it owns, while failing to release code it has taken from others and adapted.

    With the end of the summer break and Jew holidays, and after I wasn’t able to get the source, I decided to switch to legal channels, and with the help of Jonathan Klinger and my company, Kaplan Open Source Consulting, we notified they should provide the source code or we’ll address the court.

    Well, it worked. In 3 days time the CKAN extensions where available on the website, but in a problematic way, so users weren’t able to download easily. This is why we decided not to publish this code release and let them fix it first. In addition we made it clear all the source code should be available, not only the extensions. Further more, if they already release it’s recommended to use git format instead of just “dumping” a tarball. So we told them if they aren’t going to make a git repository we’ll do that ourselves, but in any case, would prefer them to do that .

    While this issue is still pending, the ICT authority had a conference called “the citizen 360” about e-gov and open government in which they reaffirmed their open source plans.

    A slide about open source from the Israeli ICT authority presentation

    A slide about open source from the Israeli ICT authority presentation

    Now, a month later, after our second letter to them, the about page in data.gov.il was updated with links to the ICT authority GitHub account which has the sources for the website and the extensions. A big improvement, and an important mark point as the commit to the repository was done by an official (gov.il) email address.

    Beyond congratulating the Israeli ICT authority for their steps forward and the satisfaction of our insisting on them became fruitful, we would like to see the repository get updated on a regular basis, the code being given back to the various CKAN extensions (e.g. Hebrew translation). In general, we hope they would to get inspired by how the how data.gov.uk is doing technical transparency. If we allow ourselves to dream, we would like to see Israel becoming a dominate member in the CKAN community and among the other governments who use it.

    We’re happy to be the catalyst for open source in the Israeli government, and we promise to keep insisted where needed. We know that due to other requests and notifications more organizations are on their way to release code.

    (This post is a translation from Hebrew of a post in Kaplan Open Source Consulting at https://kaplanopensource.co.il/2017/11/20/data-gov-il-code-release/)

    Full text

    28 November, 2017 09:07 AM

    28 October, 2017

    Levi Shahar

    השורה הראשונה בסקריפט שלכם

    הפוסט הבא נכתב כתשובה למישהו שאמר לי “הטרמינל קורא את השורה הראשונה בקובץ (*sh), ומחליט כיצד להריץ אותו”. והאמת היא שזה לא נכון, כי הקרנל בכבודו ובעצמו מטפל בזה.

    Full text

    28 October, 2017 09:25 AM

    18 October, 2017

    Ram on Agmon

    אובנטו 1710 – גירסה ששווה להתקין

    זה היה לפני 12 שנים, פעם ראשונה שהתקנתי אובנטו על המחשב שלי. אובנטו 0505. מאז עברו הרבה מאוד ביטים באינטרנטים, למדתי הרבה, אבל תמיד שמרתי חסד נעורים להפצה הלינוקס ששמה לה למטרה להנגיש את שולחן העבודה של מערכת ההפעלה הנפלאה הזו. תחילת המיליניום, היתה תקופה קשה למשתמשי לינוקס. אי אפשר היה לצפות כמעט בסרטים ברשת … להמשיך לקרוא אובנטו 1710 – גירסה ששווה להתקין

    הטקסט המלא

    18 October, 2017 05:06 PM

    31 July, 2017

    Ira Abramov

    כפתור פראנויה לכל כיס

    אמ;לק: סקירת מוצר שיוסיף לכם שכבת הגנה על חשבונות מקוונים וגם על המחשב האישי. זו תהיה כתבה ראשונה בסדרת פוסטים על אבטחת מידע בסיסית לישראלי המצוי, למרות שהפוסט הספציפי הזה אולי לא מיועד ממש לכולם כי הוא עוסק בחומרה יעודית שעולה בסביבות $50 (כולל משלוח) ולא תוכנה זמינה וזולה/חינם.

    יותר מחצי שנה לא כתבתי פוסט, למעשה כמעט 8 חודשים אני חושב. המון חדשות חולפות בקצב מסחרר ואי אפשר להתעמק בכלום, וגם החלפת מקום עבודה מוריד מהזמן הפנוי לכתיבה של יותר מציוצים בטוויטר. אם אתם לא עוקבים, חוק הזיהוי הביומטרי עבר והחל מיוני כולם חייבים לתת טביעות אצבע ופנים. מי שישלם כופר מיוחד יוכל להשאר מחוץ למאגר (אם אתם באמת מאמינים שלא ישמרו לכם את תביעת האצבע אחרי שיכתבו אותה לשבב בתעודה), אבל יצטרך לעשות את זה פעמיים בעשור במקום פעם אחת. ההמשך עכשיו יכול להיות אחד משלושה עיקריים: או שהפניה שלנו לבג"צ תצליח והמאגר יבוטל מתישהו ב-2018, או שיהיה מהפך בחירות וקואליציה חדשה תחליט למחוק את השרץ, או שהגזרה תשאר, ועד 2022 (2027 למי שרץ להחליף תיעוד במאי) כל הישראלים שישארו פה יאלצו להשתדרק למאגר. בינתיים כבר היו דליפות בהודו וסיפורים מסוכנים אחרים, אז נחיה ונראה. על עדכונים של פאדיחות הבית הלבן אני גם לא ארחיב, אתם בטח צופים כמוני בסטיבן קולבר ביוטיוב.

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

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

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

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

    משהו שיש לך – תעודה בלתי ניתנת לזיוף, אם ע"י שימוש בשיטות ייצור סודיות וייחודיות ואם ע"י חתימה דיגיטלית, או אולי מפתח כלשהו שלא ניתן לשכפל. כשאני אומר מפתח עולה לכם אולי בראש מפתח פלדלת או ייל, אבל את אלו כבר שכפלו כי הופיעו בטעות בתמונה. הסיפור הכי מצחיק היה כשסוכני TSA הצטלמו ברוב היבריס עם צרור המפתחות שלהם שפותח כל מנעול מזוודות בשוק, ואנשים מיהרו להעתיק את המבנה מהתמונות, וכמזה שנתיים אפשר להוריד את כל המפתחות מגיטהאב להדפסה בתלתפסת ביתית. לא, אני מתכוון למפתחות הצפנה פיזיים, כלומר מעין התקן USB עם מעבד קטן וזכרון שאי אפשר לקרוא, וניסיון למעקף פיזי של ההגנות אמור להרוס אותו ללא שוב. כאלו יש מספר מוצרים בשוק ואחד היצרנים הבולטים הוא Yubico. אני סוקר את המוצר שלהם כאן כי אחרי שלמדתי את הנושא ברשת הגעתי למסקנה שזה אחד משניים-שלושה הכי מעניינים, מגוונים ונגישים, ואין לי שום קשר איתם מעבר לזה (וכמובן לא קיבלתי מהם מוצר או טובות), ולכן קניתי אותו. יש להם אפילו יבואן רשמי בארץ אבל אחרי שקיבלתי מהם ספאם, העדפתי לשלם את המחיר המלא של הזמנה מחו"ל (אמזון או הריסלר הזה). שווה להציץ, לפעמים יש להם סייל 50% הנחה ליום-יומיים.

    אימות כפול, או אימות מרובה, הוא כזה שמשתמש ביותר משיטה אחת מאלו שפירטתי, ובמיוחד עדיף שלפחות משתי קטגוריות שונות.1

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

    שו"ת

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

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

    אני בונה היום אתר, להשקיע באימות כזה למשתמשים שלי?
    גם TOTP-2FA וגם U2F – לדעתי כן, במיוחד אם האתר שומר פרטים אישיים של כרטיסי אשראי, בריאות מטופלים ועוד כיוצא באלו. יש ספריות חופשיות שקל לשלב, ולמערכות כמו וורדפרס, דג'נגו, ג'ומלה, רובי-או-ריילז ואחרות יש כבר מודולים מוכנים לקטיפה מהעץ, אז חבל להתעצל!

    למה יוביקי 4 ולא גרסת הנאו?
    טעם אישי. היוביקי 4 תומך במפתחות טיפה יותר גדולים, הוא טיפה יותר זול, קוד ה-PGP שלו פתוח בגיטהאב. לרוב האנשים גם הנאו יהיה מצוין, והיתרון הגדול שלו הוא NFC שעובד עם אנדרואידים שיש להם רכיב תקשורת תואם. אם רוצים להשתמש ביוביקי 4 (ללא NFC) על אנדרואיד, אפשר בעזרת כבל OTG, או לטלפונים חדשים, חיבור ישיר USB-C בדקם יוביקי החדש).

    יש מתחרים ראויים?
    יש כמה. חלקם יתנו U2F בלבד בפחות מ$10-$20, חלקם יקרים מאוד אבל עושים דברים נוספים כמו לשמש כארנק קריפטומטבעות (למשל Trezor ואחרים) ויש גם אופציות "האקריות" פתוחות כגון OnlyKey שמוסיף שכבות הגנה כמו סיסמא, פיצ'רים כמו השמדה עצמית וכדומה. יש מצב שאקנה כזה בעתיד, למרות שהוא נראה פחות עמיד מכנית לשבירה ושפשופים.

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

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

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

    למה לא כתבת פוסט כבר המון זמן?!
    כי הייתי עסוק, וכי אף אחד לא שאל למה לא כתבתי כבר המון זמן, אז אולי מסתפקים בפרסונה הטוויטרית שלי…

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

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

    31 July, 2017 04:51 PM

    18 June, 2017

    Amir Aharoni

    סיסמה

    אז לפתע פתאום האקדמיה ללשון שינתה את כללי הכתיב.

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

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

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

    טיפ־טיפה חבל לי על הכתיב „שמים”, שעכשיו הפך ל„שמיים”. היה בזה דמיון יפה ל„מים”, אבל בסדר. עכשיו אני יכול להפסיק להחרים את יישום „ירושמיים”, שהפכה כבר מזמן למשהו פולחני עבור ירושלמים רבים.

    אני מרוצה מהשינוי של „תכנה” ו„יזמה” ל„תוכנה” ו„יוזמה”. אני גם מרוצה למדי מהשינוי של מילות היחס „אתי, אתך” ל„איתי, איתך”, ושל „עתים” ל„עיתים”, אבל מוזר לי ביותר שלא נוספה בהזדמנות הזאת האות יו״ד למילים כמו „אִגרוף” ו„מִחזור”, כדי לא להתבלבל עם „אֶגרוף” ו„מַחזור”. זה היה יכול להיות כלל פשוט ושימושי, והוא ממש לא היה אמור להיות שנוי במחלוקת. חבל שזה התפספס.

    עוד משעשעים אותי ה„אישורים” שנינתו למילה „אומנם” וליו״ד בצורת הגוף הראשון בזמן עתיד בבניין נפעל, למשל „איכנס” במקום „אכנס”. אני תמיד כתבתי אותם בכתיב מלא. את „אומנם” כתבתי בווי״ו כי גם „אֻמנם” הוא ניקוד תקני ולא רק „אָמנם”, וצליל u תמיד אמור להיכתב בווי״ו (אם כי עכשיו גיליתי לראשונה שהניקוד „אֻמנם” מיועד לשאלות, לפחות לפי אבן־שושן). ובבניין נפעל כתבתי תמיד „איכנס”, „איזהר”, וכו׳, כי הניקוד בחיריק תקין כמו בניקוד בסגול (ר׳ למשל גזניוס 51p).

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

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

    עוד דבר שמעטים ישימו לב אליו הוא השם של הכללים החדשים: „כללי הכתיב המלא”. עד עכשיו הם נקראו „כללי הכתיב חסר־הניקוד”. למיטב ידיעתי, המונחים כתיב מלא וכתיב חסר מעולם לא היו מוגדרים באופן מדויק למרות שאנשים רבים השתמשו בהם. „כתיב חסר” עדיין אינו מוגדר, אבל זה בסדר, כי הוא לא ממש נחוץ.

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

    18 June, 2017 11:03 AM

    13 January, 2017

    Ram on Agmon

    סיכום שנה שנת 2016 + מצבה של התוכנה החופשית

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

    הטקסט המלא

    13 January, 2017 12:10 PM