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

23 September, 2017

Guy Rutenberg

Use `mk-build-deps` instead of `apt-get build-dep`

If you are building a package from source on Debian or Ubuntu, usually the first step is to install the build-dependencies of the package. This is usually done with one of two commands:

$ sudo apt-get build-dep PKGNAME


$ sudo aptitude build-dep PKGNAME

The problem is that there is no easy way to undo or revert the installation of the build dependencies. All the installed packages are marked as manually installed, so later one cannot simply expect to “autoremove” those packages. Webupd8 suggests clever one-liner that tries to parse the build dependencies out of apt-cache and mark them as automatically installed. However, as mentioned in the comments, it may be too liberal in marking packages as automatically installed, and hence remove too many packages.

The real solution is mk-build-deps. First you have to install it:

$ sudo apt install devscripts

Now, instead of using apt-get or aptitude directly to install the build-dependencies, use mk-build-deps.

$ mk-build-deps PKGNAME --install --root-cmd sudo --remove

mk-build-deps will create a new package, called PKGNAME-build-deps, which depends on all the build-dependencies of PKGNAME and then install it, therefore pulling all the build-dependencies and installing them as well. As those packages are now installed as dependencies they are marked as automatically installed. Once, you no longer need the build-dependencies, you can remove the package PKGNAME-build-deps, and apt will autoremove all the build-dependencies which are no longer necessary.

23 September, 2017 08:00 AM

21 September, 2017

Amir Aharoni

The Curious Problem of Belarusian and Igbo in Twitter and Bing Translation

Twitter sometimes offers machine translation for tweets that are not written in the language that I chose in my preferences. Usually I have Hebrew chosen, but for writing this post I temporarily switched to English.

Here’s an example where it works pretty well. I see a tweet written in French, and a little “Translate from French” link:

Emmanuel Macron on Twitter.png

The translation is not perfect English, but it’s good enough; I never expect machine translation to have perfect grammar, vocabulary, and word order.

Now, out of curiosity I happen to follow a lot of people and organizations who tweet in the Belarusian language. It’s the official language of the country of Belarus, and it’s very closely related to Russian and Ukrainian. All three languages have similar grammar and share a lot of basic vocabulary, and all are written in the Cyrillic alphabet. However, the actual spelling rules are very different in each of them, and they use slightly different variants of Cyrillic: only Russian uses the letter ⟨ъ⟩; only Belarusian uses ⟨ў⟩; only Ukrainian uses ⟨є⟩.

Despite this, Bing gets totally confused when it sees tweets in the Belarusian language. Here’s an example form the Euroradio account:

Еўрарадыё   euroradio    Twitter double.pngBoth tweets are written in Belarusian. Both of them have the letter ⟨ў⟩, which is used only in Belarusian, and never in Ukrainian and Russian. The letter ⟨ў⟩ is also used in Uzbek, but Uzbek never uses the letter ⟨і⟩. If a text uses both ⟨ў⟩ and ⟨і⟩, you can be certain that it’s written in Belarusian.

And yet, Twitter’s machine translation suggests to translate the top tweet from Ukrainian, and the bottom one from Russian!

An even stranger thing happens when you actually try to translate it:

Еўрарадыё   euroradio    Twitter single Russian.pngNotice two weird things here:

  1. After clicking, “Ukrainian” turned into “Russian”!
  2. Since the text is actually written in Belarusian, trying to translate it as if it was Russian is futile. The actual output is mostly a transliteration of the Belarusian text, and it’s completely useless. You can notice how the letter ⟨ў⟩ cannot be transliterated.

Something similar happens with the Igbo language, spoken by more than 20 million people in Nigeria and other places in Western Africa:

 4  Tweets with replies by Ntụ Agbasa   blossomozurumba    Twitter.png

This is written in Igbo by Blossom Ozurumba, a Nigerian Wikipedia editor, whom I have the pleasure of knowing in real life. Twitter identifies this as Vietnamese—a language of South-East Asia.

The reason for this might be that both Vietnamese and Igbo happen to be written in the Latin alphabet with addition of diacritical marks, one of the most common of which is the dot below, such as in the words ibụọla in this Igbo tweet, and the word chọn lọc in Vietnamese. However, other than this incidental and superficial similarity, the languages are completely unrelated. Identifying that a text is written in a certain language only by this feature is really not great.

If I paste the text of the tweet, “Nwoke ọma, ibụọla chi?”, into translate.bing.com, it is auto-identified as Italian, probably because it includes the word chi, and word that is written identically happens to be very common in Italian. Of course, Bing fails to translate everything else in the Tweet, but this does show a curious thing: Even though the same translation engine is used on both sites, the language of the same text is identified differently.

How could this be resolved?

Neither Belarusian nor Igbo languages are supported by Bing. If Bing is the only machine translation engine that Twitter can use, it would be better to just skip it completely and not to offer any translation, than to offer this strange and meaningless thing. Of course, Bing could start supporting Belarusian; it has a smaller online presence than Russian and Ukrainian, but their grammar is so similar, that it shouldn’t be that hard. But what to do until that happens?

In Wikipedia’s Content Translation, we don’t give exclusivity to any machine translation backend, and we provide whatever we can, legally and technically. At the moment we have Apertium, Yandex, and YouDao, in languages that support them, and we may connect to more machine translation services in the future. In theory, Twitter could do the same and use another machine translation service that does support the Belarusian language, such as Yandex, Google, or Apertium, which started supporting Belarusian recently. This may be more a matter of legal and business decisions than a matter of engineering.

Another thing for Twitter to try is to let users specify in which languages do they write. Currently, Twitter’s preferences only allow selecting one language, and that is the language in which Twitter’s own user interface will appear. It could also let the user say explicitly in which languages do they write. This would make language identification easier for machine translation engines. It would also make some business sense, because it would be useful for researchers and marketers. Of course, it must not be mandatory, because people may want to avoid providing too much identifying information.

If Twitter or Bing Translation were free software projects with a public bug tracking system, I’d post this as a bug report. Given that they aren’t, I can only hope that somebody from Twitter or Microsoft will read it and fix these issues some day. Machine translation can be useful, and in fact Bing often surprises me with the quality of its translation, but it has silly bugs, too.

Filed under: Belarusian, Free Software, Igbo, Microsoft, Nigeria, Russian, search, translation, Twitter, Ukraine, Wikipedia

21 September, 2017 09:39 AM

18 September, 2017

Levi Shahar

איך לעבוד על ה - sysadmin

שאלתם את עצמכם פעם האם הפלט שאתם רואים בטרמינל אמיתי? כלים כמו awk, tr, cut מאפשרים לשנות פלט טקסט בקלות. איך תוכלו לוודא שהפקודה שאתם מריצים, היא לא נסיון של תוקף לבצע “social engineering” או להסוות את עצמו?

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


הפקודה who, היא הפקודה הראשונה שנריץ בכדי לראות מי מחובר כרגע למערכת.

$ who user pts/0 2017-09-01 09:43 ( user pts/1 2017-09-01 09:50 ( 

כפי שניתן לראות בפלט הפקודה who מופיעה גם כתובת ה - IP של בוב ( ואנחנו יכולים לראות בבירור שעוד משתמש מחובר למערכת.
בכדי להסתיר את עצמו, בוב כתב סקריפט בשם im-a-ghost.sh....

Full text

18 September, 2017 08:44 AM

17 September, 2017

Hetz Ben Hemo

מעבדי השנה

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

כשזה מגיע למעבדי X86-64, שנת 2017 בהחלט תירשם כשנת מפנה, הן עבור AMD והן עבור אינטל. 2 החברות הוציאו משפחות מעבדים שונות השנה והצרכן – רק הרוויח מכך (פחות או יותר, על כך בהמשך).

נתחיל עם AMD:

חברת AMD הוציאה השנה מעבדים המבוססים ארכיטקטורה חדשה שלהם, ה-ZEN. לפני ZEN, חברת AMD הוציאה מעבדים הכוללים מעבד גרפי (ובקיצור: APU) שביצועיהם לא ממש הרשימו אך המחירים שלהם היו מאוד נמוכים. עם ZEN המעבדים של AMD קיבלו תפנית רצינית ולראשונה AMD הציגה משפחת מעבדים בשנת 2017 החל מ-Ryzen 3 ועד Ryzen-7 שהצליחו להתחרות בכבוד במעבדים של אינטל בכל מה שקשור לעבודה בריבוי משימות. AMD לא הצליחה להגיע לביצועים יותר גבוהים ממעבדי אינטל בכל הקשור למשימות שמשתמשות בליבה אחת (Single Threading) אך AMD העמידה אתגר מעניין לצרכנים: שלם פחות, קבל יותר ליבות ממה שאינטל נותנת לך. התוצאה? הסתערות המונית של צרכנים שהחליטו לנצל את המחירים היותר נמוכים ע"מ לשדרג את המכונות שלהם.

גם בתחום השרתים AMD השתמשתה בפלטפורמת ה-ZEN שלהם וגם כאן, לראשונה לאחר 5 שנים, AMD הוציאה משפחת מעבדים לשרתים (ה-EPYC) עם מחירים מאוד מפתים וביצועים מעולים ברוב המטלות – בהשוואה למעבדי דור 4 ו-5 של אינטל. גם כאן, לראשונה, לאינטל יש תחרות וחברות גדולות מאוד כמו מיקרוסופט ו-Ali Baba החליטו לרכוש הרבה מאוד מעבדים לעננים הציבוריים שלהם מ-AMD.

ואז.. צצה ההפתעה של AMD, הפתעה ש-AMD בעצמה לא תכננה..

אם תשאלו כל יצרן מעבדים, לוקח בין שנתיים ל-3 שנים ליצור מעבד. ב-AMD לעומת זאת מספר מהנדסים החליטו לפתח להם פרויקט צד קטן. הם לקחו את תכנון מעבדי EPYC, לקחו את ה-Chipset מסידרה X370 שיועד ל-Ryzen והם החליטו "לשחק" קצת…

התוצאה? משפחת מעבדים חדשה, ה-Threadripper שנבנה ב-3 חודשים ובדגם בקצה הגבוה נותן לצרכן 16 ליבות, 32 נימים, 64 נתיבי PCIE, עד 1 טרהבייט זכרון ECC (כולל תמיכה בזכרון שאינו ECC), ובמחיר שרבים לא ציפו לו – 999$, הרבה פחות מהתחזיות שציפו למחיר של 1500-2000$. ההפתעה היותר גדולה (ש-AMD כלל לא דיברה עליה) התגלתה רק לפני מס' ימים: רבים הניחו ש-2 החתיכות סיליקון שאינם עובדים ב-Threadripper הם סתם סיליקון ללא טרנזיסטורים, אבל אז אחד המומחים לפריקה של מעבדים רכש מעבד Threadripper ופירק לו את הצורה והתוצאה שהתגלתה – שהסיליקונים הללו הם פשוט סיליקונים פגומים, כלומר אם AMD תרצה מחר להוציא מעבדים לדסקטופ עם 24 או 32 ליבות – הם פשוט יכולים להנמיך במעט את מהירות השעון, ולשנות מס' דברים קטנים במעבד – ויש להם דגמים חדשים.

AMD השנה תציג גם את מעבדי ה-Ravenridge, אלו המעבדים החדשים (סידרה 2500U) של AMD שמיועדים למחשבים ניידים. הם יהיו יותר חסכוניים בסוללה בכ-50% בהשוואה לדור קודם של AMD, הם יהיו מבוססי Ryzen עם 4 ליבות והם יכללו GPU מסידרת VEGA בתוך המעבד. התוצאות הראשונות שדלפו הראו שיש ל-AMD במה להתגאות. מחשבים ניידים מבוססי RavenRidge יצאו לקראת קניות חג המולד.

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

מכאן נעבור למתחרה הכחולה הגדולה: אינטל.

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

בתחילת השנה הגיעו מעבדי Kaby Lake לשוק, ולמען האמת – לא היו חידושים כה סוערים וגם במבחני הביצועים לא נרשמו התלהבויות. תוספת של 10% במקרה הטוב. אינטל נאלצה להשתמש בגימיקים כמו תמיכה ב-4K עם דפדפן Edge ב-Netflix, והוצאת מקלון SSD מסוג Optane שפועל רק עם Kaby Lake על מנת להאיץ דיסק קשיח (פתרון לא משהו, במיוחד שדיסק SSD בגודל 128 ג'יגהבייט יכול לבצע את אותה מטלה במחיר זהה רק עם יותר Cache).

בהמשך השנה אינטל הוציאו 2 משפחות מעבדים לדסקטופ: ה-Sky Lake X וה-Kaby Lake X. נתחיל ב-Kaby Lake X: עד היום, אף אחד לא מבין מדוע אינטל הוציאו חלק מהמעבדים הללו (כמו 7640X ו-7740X). הם נחותים מה-Kaby Lake בכך שיש להם פחות נתיבי PCIE ואין להם יחידת עיבוד גרפי פנימית, מה שמכריח את הצרכן לקנות GPU. מיטב הסוקרים לא מצאו תשובה מדוע אינטל הוציאו את אותם מעבדים. יחד עם זאת, אם הצרכן מוכן לחיות עם המגבלות, ישנם מעבדים בסידרה כמו 7800X עם 6 ליבות ו-7820X עם 8 ליבות.

במקביל אינטל, כפי שציינתי, הוציאו את ה-Sky Lake X, ועם מעבדים אלו (ולוח אם שמבוסס על Chipsets כמו X299 ו-Z270) אינטל לראשונה הוציאו סדרת מעבדים חדשה שמאפשרת לצרכן לרכוש מעבדים עם יותר מ-4 ליבות מבלי למכור כליה (ע.ע. 6950X ב-1700$). המעבדים הללו (שנקראים Core-i9) הגיעו עם מספר ליבות שנע בין 6 ליבות (7800X) וכלה ב-18 ליבות (7980XE) ואלו מעבדים שאינטל בהחלט יכולים להתגאות בהם בכך שהם נותנים ביצועים (כמעט) בכל סוג של מטלה. הבעיה היחידה שלהם – היא תמחור. במחיר של מעבד 10 ליבות כמו 7900X, אפשר לרכוש Threadripper שנותן הרבה יותר. בינתיים, בשלב זה אינטל לא מורידה מחירים.

חשבתם שגמרנו עם Kaby Lake? טעיתם. אינטל הציגה לאחרונה את ה-Kaby Lake Refresh. אלו מעבדים שמיועדים למחשבים ניידים בסידרה 8 של אינטל. החידוש העיקרי – אינטל החליטה לתת קצת יותר לצרכן והפעם יש 4 ליבות ו-8 נימים במקום 2 ליבות ו-4 נימים. מחשבים ניידים עם המעבדים הללו יוצאים בימים אלו.

כשזה מגיע לשרתים, אינטל החליטה להוציא את המעבדי Xeon-SP (שם קוד: Purley) ב-4 משפחות: ברונזה, כסף, זהב, ו-פלטיניום. כל אחד מהצבעים מתאים לצרכים שונים. אם הייתם רגילים לדוגמא ל-Xeon E5 עם 8 ליבות ו-2 מעבדים, הסתכלו על משפחת הברונזה. המעבדים הללו יקרים בהרבה מהמעבדים הקודמים מדור 4 ומבחינת ביצועים – הם נותנים ביצועים טובים אולם יש לא מעט מבחנים שבהם דווקא מעבדי EPYC מובילים.

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

אם הייתי נותן דירוג לחברות, הייתי נותן 9 ל-AMD ו-7.5 לאינטל. להלן הסיבות:

לסיכום: שנת 2017 היא השנה שגם אינטל וגם AMD יצאו לקרב לשכנע אותך הצרכן שהגיע הזמן לשדרג את ה-PC שלך ו-2 החברות מציעות לך שורה של מעבדים שאחד מהם סביר להניח שיתאים לתקציבך. בשנה הבאה אנחנו נראה מאינטל את ה-Coffee Lake (המעבדים לקצה הנמוך לדסקטופ ששם יהיו יותר ליבות) וה-Ice Lake (שיחליפו את ה-Sky Lake X). מהצד של AMD אנחנו נראה יותר מעבדים למחשבים ניידים (RavenRidge) ומעבדים חדשים עם פלטפורמת Zen-2 המשופרת.

מי אמר שתחרות זה רע? 🙂

שנה טובה לכולם.

הטקסט המלא

17 September, 2017 12:17 PM

Kaplan Open Source Consulting

מה זה קוד פתוח?

ויקיפדיה מגדירה את המושג תוכנה חופשית:

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

באנגלית השימוש במילה Free מבלבל ויש לו שתי משמעויות: חופשי או חינם. מכאן מגיע ההסבר למתחילים "Free as free speech,  not as free beer". בעיה שאין לנו בעברית כי אצלנו יש הבדל בין חופשי וחינם.

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

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

17 September, 2017 10:59 AM

16 September, 2017

Gabor Szabo

Perl Dancer eBook Crowdfunding campaign

For the full article visit Perl Dancer eBook Crowdfunding campaign

16 September, 2017 08:48 AM

15 September, 2017

Shlomi Noach

gh-ost 1.0.42 released: JSON support, optimizations

gh-ost 1.0.42 is released and available for download.


MySQL 5.7's JSON data type is now supported.

There is a soft-limitation, that your JSON may not be part of your PRIMARY KEY. Currently this isn't even supported by MySQL anyhow.


Two noteworthy changes are:

We're not running benchmarks at this time to observe performance gains.


More tests validating 5.7 compatibility (at this time GitHub runs MySQL 5.7 in production).


Many other changes included.

We are grateful for all community feedback in form of open Issues, Pull Requests and questions!

gh-ost is authored by GitHub. It is free and open source and is available under the MIT license.


In two weeks time, Jonah Berquist will present gh-ost: Triggerless, Painless, Trusted Online Schema Migrations at Percona Live, Dublin.

Tom Krouper and myself will present MySQL Infrastructure Testing Automation at GitHub, where, among other things, we describe how we test gh-ost in production.

15 September, 2017 05:52 AM

14 September, 2017


סיכום ומשוב אוגוסט פינגווין

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

14 September, 2017 06:17 PM

ההרשמה לאוגוסט פינגווין נפתחה!

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

לאתר ההרשמה

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

14 September, 2017 06:13 PM

Lior Kaplan

Public money? Public Code!

An open letter published today to the EU government says:

Why is software created using taxpayers’ money not released as Free Software?
We want legislation requiring that publicly financed software developed for the public sector be made publicly available under a Free and Open Source Software licence. If it is public money, it should be public code as well.

Code paid by the people should be available to the people!

See https://publiccode.eu/ for the campaign details.

This makes me think of starting an Israeli version…

Filed under: Uncategorized

Full text

14 September, 2017 09:30 AM

13 September, 2017

Kaplan Open Source Consulting

LibreOffice Conference 2017

כנס ליברה אופיס 2017 יתקיים השנה ברומא במהלך חג הסוכות. השנה הכנסנו 3 ארועים לתוכנית של הכנס:

  1. אסטרטגיית תרגום (BoF) – כיצד לבחור איזה מחרוזות של ליברה אופיס לתרגם קודם. האם פשוט לפי הסדר או באמצעות מרכזיות הופעה על המסך? מטרת המפגש הוא לברר כיצד המתרגמים השונים תעדפו את הטקסטים והאם יש צורך בארגון שונה של המחרוזות לתרגום באופן שמיועד למתרגמים ולא מוכתב על ידי המתכנתים.
  2. ליברה אופיס בממשלות (BoF) – מפגש שיתן במה למשתתפים לספר על ליברה אופיס אצלו בממשלה (או בגופיים מוניציפליים). מטרת המפגש היא להבין כיצד אנחנו כקהילה יכולה לעזור ולעודד ממשלות לאמץ את ליברה אופיס. כמו גם הפקת לקחים הדדית  מארועים קודמים.
  3. תמיכה ב-RTL (הרצאה) – סקירת מצב התמיכה ב-RTL בליברה אופיס תוך דגש על גרסה 5.4 ששוחררה לאחרונה וגרסה 6.0 שתשוחרר בפברואר 2018.
    (הרצאות דומות הועברו בכנסים של 2012 ו-2015)

13 September, 2017 08:12 AM

Shlomi Noach

Speaking at Percona Live Dublin: keynote, orchestrator tutorial, MySQL testing automation

I'm looking forward to a busy Percona Live Dublin conference, delivering three talks. Chronologically, these are:

See you there!

13 September, 2017 05:21 AM

12 September, 2017

Levi Shahar

איך לקמפל קרנל (Linux)

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

אז למה לקמפל?

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

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

Full text

12 September, 2017 05:12 PM

Gabor Szabo

Bailador 0.0.12 released and the Bailador Book is progressing

For the full article visit Bailador 0.0.12 released and the Bailador Book is progressing

12 September, 2017 10:28 AM

10 September, 2017

Lior Kaplan

PHP 7.2 is coming… mcrypt extension isn’t

Early September, it’s about 3 months before PHP 7.2 is expected to be release (schedule here). One of the changes is the removal of the mcrypt extension after it was deprecated in PHP 7.1. The main problem with mcrypt extension is that it is based on libmcrypt that was abandoned by it’s upstream since 2007. That’s 10 years of keeping a library alive, moving the burden to distribution’s security teams. But this isn’t new, Remi already wrote about this two years ago: “About libmcrypt and php-mcrypt“.

But with removal of the extension from the PHP code base (about F**King time), it would force the recommendation was done “nicely” till now. And forcing people means some noise, although an alternative is PHP’s owns openssl extension. But as many migrations that require code change – it’s going slow.

The goal of this post is to reach to the PHP eco system and map the components (mostly frameworks and applications) to still require/recommend mcyrpt and to pressure them to fix it before PHP 72 is released. I’ll appreciate the readers’ help with this mapping in the comments.

For example, Laravel‘s release notes for 5.1:

In previous versions of Laravel, encryption was handled by the mcrypt PHP extension. However, beginning in Laravel 5.1, encryption is handled by the openssl extension, which is more actively maintained.

Or, on the other hand Joomla 3 requirements still mentions mcrypt.

mcrypt safe:

mcrypt dependant:

For those who really need mcrypt, it is part of PECL, PHP’s extensions repository. You’re welcome to compile it on your own risk.

Filed under: Debian GNU/Linux, PHP

Full text

10 September, 2017 08:59 AM

05 September, 2017

Diego Iastrubni

פיירפוקס לסלולרי – מכה (וחבל)

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

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

אז התקנתי מהחנות של FDroid את Fennec ולאחריו את Firefox מתוך ה-PlayStore [1]. בגדול – המוצר עובד. והאפשרות להתקין תוספים (את אותם תוספים של השולחן עבודה!!!) מאוד קסמה לי.

  1. התקנתי adblock ו־Ghostery. הדפים יותר רזים, ועולים יותר מהר. מצויין על מכשיר חלש ובעל סוללה. טוב. מצויין.
  2. אם מאפשרים את כל הטלמטריה – הדפדפן מקרטע. אז הסרתי "שירות המיקום" ו־"Telemery" התוכנה עובדת טוב. לא טוב [2].
  3. בעת גלילה בדפים יש … תקיעה לאחר שני מסכים. לא טוב.
  4. כשאני חוזר לעמוד הראשון של המכשיר, אני רואה ריענון כבד וזה לוקח הרבה זמן. לא טוב.
  5. הדפים נטענים מאוד לאט. האם פיירפוקס לא תומך ב־HTTP2? האם כרום טוען חלק מהדף מראש…? אין תשובה, אבל לוקח לי שלוש עד חמש שניות לפתוח עמודים ואילו בכרום תוך שנייה העמוד פתוח. מוזר ורע.
  6. בתצוגה של כל הלשוניות (מה פתוח) יש שתי עמודות… וכדי לסגור לשונית/טאב/כרטיסייה צריך לזרוק הצידה… אבל יש רק חצי מסך ומאוד קשה לבצע את המחווה… בהגדרות יש "כללי – לשוניות צפופות" – נא לבטל ואז אפשר להשתמש בפיצ'ר הזה כמו שצריך. בעייתי.
  7. כאשר צופים בדך אינטרנט – הטקסט לא מקוצר לרוחב הדף אלא גולל. זה קורה למשל בפורומים של ואטסאפ וגורם זה שהפורום בלתי קריא. דוגמה שנייה היא בקיראה של קבצי text ושם אין ממש אשרות לעשות זום (דוגמה https://tools.ietf.org/html/rfc4180). רע.
  8. בחיפוש בגוגל – אני מקבל עמוד שונה (הכותרת נראות שונות מאשר בכרום). זה אומר שגוגל מניאקים ושולחים תוכן שונה, למראות שהדפדפן יכול להציג. וכן – אני לא היחיד שרואה את זה   (זהו היוצר של הדפדפן אופרה). [3]
  9. בחיפוש בגוגל – הלחיצה על חיפוש במקלדת (איפה שה־enter אמור להיות, ויש עליו זכוכית מגדלת) לא מתחילה את החיפוש. נוראי. רשימת באגים שאולי מתאימה:  1344153  1163985  751238 1174348

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

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


  1. למעשה מדובר באותו הקוד, רק בנייה שונה. זאת של FDroid יותר קפדנית ולא רשמית. אני רוצה להעלות את המספרים של הגרסה הרשמית ולכן התקנתי מה־Play Store.
  2. לבטל שליחה של נתונים למפתחים זה רע מאוד. זה אומר שכאשר תהיה בעייה – אין להם אפשרות לטפל בה.כמו כן – אין להם מושג במה אתה משתמש ומה לא, וכך הם לא ידעו במה צריך לטפל.
  3. בואו נזכור שמיקרוסופט עשו להם אם זה פעם – http://www.operasoftware.com/press/releases/desktop/opera-releases-bork-edition http://www.wiumlie.no/2003/2/msn/

הטקסט המלא

05 September, 2017 09:57 AM

01 September, 2017

Ilya Sher

Technology Prevention

Part of my job is to prevent usage of technologies. This sounds so uncool, I know. Do you want to increase the chance of success of your organization? You must prevent technologies. There are lots of technologies out there. Most of the technologies are not relevant to your situation. It is cool to build a spaceship, but do you need one?


Growth of a startup S that makes technology/product X is more important than whether or not there is a match between X and your use case. S generally doesn’t care whether your startup will succeed or fail because you used X. There is no immediate economical incentive for S to be honest. In short, S f*cks you over for money.



As a consequence, a distorted picture of reality is presented to you:


See also: Prove your tool is the right choice

Have a nice weekend!

01 September, 2017 06:00 PM

31 August, 2017

Lior Kaplan

הויקיפדים החדשים

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

פרטים אצל טל: https://www.talgalili.com/2017/08/1831

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

אני רואה ביוזמה דווקא משהו חיובי מכמה סיבות:

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

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

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

תויק תחת:Wikipedia

31 August, 2017 10:08 PM

27 August, 2017

Diego Iastrubni

תשובה: מדוע מכשיר הסמארטפון שלי זוחל?

המשך לפוסט של חץ בן חמו ותגובה שלי אליו:

מדוע מכשיר הסמארטפון שלי זוחל?

כל מה שאמר הוא נכון ואני רוצה להוסיף. כפי שהסברתי כאן:  http://cucomania.mooo.com/posts/424/%d7%90%d7%a0%d7%93%d7%a8%d7%95%d7%90%d7%99%d7%93-%d7%97%d7%95%d7%a4%d7%a9%d7%99-%d7%9c%d7%90-%d7%91%d7%90%d7%9e%d7%aa

אנדרואיד מורכב משני דברים – הבבסיס שהוא קוד פתוח לגמרי (AOSP), שאותו יצרניות הסלולריות משנות והפכות לתוכנה לא חופשית. ועל זה יש את שכבת הקוד של גוגל החברה – שהוא קוד סגור לגמרי (ולא מדובר רק על הסקין, למשל סמסונג היו משנים את ה-Dalvik machine לכל מכשיר בנפרד). זהו ה-Android Play Services. אלו כמה apk וכמה ספריות native. שמספקים services שונים למערכת ההפעלה, שמאפשרים להתקין תוכנות (ה-Google Play) הקוד שאחראי על push notifications (שבשימוש נרחב על ידי החנות – ככה בוחרים משהו מהמחשב ופוף הוא מותקן על הסלולרי שלכם, כך גם נשלחות הודעות למכשירים), שימוש במפות, דיבור מול AndroidWear ועוד. הקוד הזה שוקל בערך 700 מגה, והמערכת ההפעלה הפתוחה (למכשיר דומה לזה שחץ הזכיר) שוקל בערך 350 מגה. מה שהכי יפה – זה שהשירותים הללו מתעדכנים מאחורי הגב שלכם ללא אישור ובשקט פעם בשבועיים (לא מצאתי אימות לזה… מעניין אם זאת תורה שבעל פה). אבל – כל פעם, נוסף קוד חדש והוא תמיד רץ. גם אם לא תתקינו יישומים חדשים על המכשיר שלכם – גוגל תשנה חלק נכבד מהמערכת הפעלה של המכשיר תוך כדי שימוש בו. ולא תמיד זה קוד שיגרום למכשיר לעבוד יותר מהר (אלא רק מוסיף לכם תמיכה בתשלום באמצעות המכשיר למשל).

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

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

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

הטקסט המלא

27 August, 2017 11:58 AM

Hetz Ben Hemo

מדוע מכשיר הסמארטפון שלי זוחל?

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

מדוע זה קורה, ומה ניתן לעשות בנידון?

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

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

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

ואז הגיעו הסמארטפונים (ולא, אפל לא היתה הראשונה. נוקיה היתה קודם עם מערכת הפעלה Symbian S60) שעודדו להתקין אפליקציות. אייפון ואנדרואיד לקחו את זה קדימה והציעו הרבה יותר ממכשירי הסלולר הפשוטים: רוצה פונקציונאליות מסויימת? תתקין אפליקציה וזהו. וכאן בעצם מכשירי הסמארטפון מתחילים להתנהג כמו ה-PC: אתה מתקין אפליקציות, האפליקציות תופסות משאבים שונים, מריצים דברים שונים ברקע ואם אתה לא איש טכני עם ידע טוב, ה-PC שלך יתחיל להתנהג כמו "משוגע" לפעמים, וזה גם הגיע לסמארטפונים ושוב – גם באייפון וגם במכשירי אנדרואיד (וכן, גם ב-Windows Phone/Mobile).

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

אם ניקח לדוגמא את המכשיר מימין (גלקסי Note-4), מכשיר שרבים מחשיבים כמודרני למרות שעברו 3 שנים מאז שהוא יוצר. המכשיר כיום עם אפליקציות מודרניות רבות יכול בהחלט להגיע למצב של "זחילה" (למרות שיש לו מעבד לא רע ו-3 ג'יגהבייט זכרון) בגלל אפליקציות כמו פייסבוק ואפליקציות נוספות שמתקינות חלקים נוספים שכל מטרתם היא לזרוק לך הודעות על מבצעים ושאר הודעות מטרידות (ניו-פארם, 365, סופר-פארם, קופות חולים שונים ושאר אפליקציות שטורחות להזכיר לך שממש עכשיו יש מבצע שאם לא תרכוש – אלוהים יעניש אותך!). כל הדברים הללו צורכים זכרון כל הזמן וגורמים להאטת המכשיר.

אז מה עושים בנידון? הנה כמה דברים, נעבור מה"קל" אל "הכבד":

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

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

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

יתכן וגם אחרי כל הפעולות הללו המכשיר לא יעבוד כנדרש. דוגמא נפוצה היא מכשירי ה-Note-4 שגם אחרי החלפת מערכת ההפעלה – הסוללה נגמרת תוך שעות ספורות גם אם תחליפו סוללה. אלו באגים (תקלות) שקשורים לרכיבים פנימיים ובמקרים כאלו אין ברירה אלא להחליף מכשיר סלולרי. לשמחתינו, כיום ישנם מכשירים כמו של חברת Xiaomi לדוגמא, שאינם עולים הרבה (שימו לב, באתרים כמו ZAP חנויות רבות מציעים מחירים מפתים מאוד, אולם במקרים רבים אתם תקבלו מכשיר ללא מטען מקורי, ללא אריזה מקורית ואחריות מאוד "חפיפניקית", ולכן אם אתם קונים מכשירים של Xiaomi, דירשו אחריות מקורית של חברת המילטון, היבואנית הרשמית ולא אחריות של החנות!) בסכומים מ-750 ועד 2000 שקלים. מנסיון אישי – מכשירים אלו בהחלט מספיקים לאנשים שאינם טכניים וגם קלים לשימוש – במיוחד לאלו שמגיעים ממכשירי אייפון.

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

הטקסט המלא

27 August, 2017 11:15 AM

25 August, 2017


חודש עם Tilix

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

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

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


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

בנוסף לכך שיש לי split שקל לעבור בניהם עם המקלדת, אפשר גם ליצור משהו שנקרא session, ממש כמו virtual desktop. וגם אליהם ניתן לעבור בקלות עם המקלדת.
היא מאפשרת למשל לשתף מקלדת עם כל או חלק מהטרמינלים הפתוחים בסשן, כך שהקלדה במקום אחד תתקבל גם בשאר, חיפוש של תוכן שהודפס למסך (למשל לוג שאתם פתחתם עם tail -f, ואולי פספסתם משהו בו), ואפילו ניהול של clipboard, בנושא שאל העתקה והדבקה, ולא בניהול של היסוטוריה וכיוב' שלו, הוא יודע לספק הודעת מערכת כאשר פעולה הסתיימה, להגדיר מסוף כ readonly (לא מקבל מקלדת, בניגוד ל CTRL+S שפשוט משהה את הפעילות) ובנוסף, יש לו תמיכה בכלים שונים שלא ניסיתי עדיין.

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

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

אבל זה לא הכל, אני יודע שכאן אני תלוי בטרמינל, ולא בתוכנה שרצה בטרמינל, אבל בסופו של דבר, האם זה משנה אם התוכנה נקראת tmux, screen או אולי Tilix?

ובכן, קצת 🙂

הייתי מאוד שמח לראות את Tilix משפרת מספר דברים אצלה:

במידה והשניים הראשונים יהיו, לדעתי מדובר במתחרה ראוי ל tmux (למעשה הוא כזה כבר עכשיו, אבל עדיין).
כמובן שגם אפשר להריץ tmux בתוך tilix, ואז בכלל זכיתם המון גמישות 🙂

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


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

תויק תחת:ui, טכנולוגיה, לינוקס, קוד פתוח, תוכנה

25 August, 2017 08:29 AM

23 August, 2017

Guy Rutenberg

Calculate Google Drive Folder Size Using `rclone`

Google Drive lacks a very basic feature: calculating folder size. There is no solution in the web interface to view the total size of a given directory. There are a couple of dubious looking online “folder size analyzers” request access permissions to your Google Drive and offer you the basic functionality of calculating folder size. While those apps, have a legitimate need for access permission to your account, you may consider given those permissions to random apps a questionable decision.

The (very) useful tool rclone, which provides rsync like interface to many cloud storage providers, implements this functionality. After configuring rclone to work with your Google Drive, use the size command to determine the size of a given folder:

$ rclone size "gdrive:Pictures/"
Total objects: 1421
Total size: 9.780 GBytes (10501374440 Bytes)

The size is calculated recursively. However, there is no simple way to display the size of each sub-directory recursively.

23 August, 2017 07:34 PM

Lior Kaplan

Debconf 2019 בישראל – קול קורא לקהילה

למי שלא מכיר – Debconf הוא הכנס של השנתי של הפצת הלינוקס Debian. הכנס מתקיים מאז שנת 2000, כל שנה ביבשת אחרת. הכנס נמשך כשבוע ואליו מגיעים כ-350-500 משתתפים מרחבי העולם. לפני הכנס מתקיים ארוע מקדים בשם DebCamp הפתוח לחברי הפרוייקט שמגיעים לעבוד בשקט (וגם לעזור להקים את התשתית לכנס).

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

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

תהליך ההצעה מתואר כאן: https://wiki.debconf.org/wiki/BidProcess וניתן לראות דוגמאות להצעות של מקומות אחרים כאן:

במהלך הכנס האחרון, פתחתי עמוד בויקי של דביאן כדי להתחיל לייצר את ההצעה עבור ישראל (כי עוד לא בחרנו עיר): https://wiki.debconf.org/wiki/DebConf19/Plans/Israel

כיצד ניתן לעזור?

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

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

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

תויק תחת:Debian GNU/Linux, Free Software in Israel, Israeli Community

23 August, 2017 02:43 PM

22 August, 2017

Boris Shtrasman

איך libxml2 לימדה אותי לבדוק בינאריים

אני ממש אוהב להשתמש בסיפריות צד שלישי.

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

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

זכרתי את ספריית libxml2 כמשהוא פשוט שהשתמשתי בו בפרויקטים שהיו תחת רישיון GPL, אבל הפעם הצורך שלי היה לעמוד ב LGPL ולוודא חיבור דינאמי (dynamic linking) וזאת למרות שlibxml2 תחת רישיון MIT.

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

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

בבדיקה באמצעות lib /list libxml2_a_dll.lib פרסה את שמות האובייקטים (במקום לציין את שם ה dll) ו
 link /dump /linkermember libxml2_a_dll.lib

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

התיקון לבעיה הוא פשוט - יצרת קובץ def  וקריאה ל lib /def:mydef.def /out:libxml2_trulylgpl.lib.

22 August, 2017 12:06 PM

14 August, 2017

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:
    2. In config.ini,  paste the newly created bot token from step 3. This is where the token goes:
    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.

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).


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


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

14 August, 2017 11:01 AM

09 August, 2017


פיתון למתכנת רובי

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

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

אז מה לא אינטואיטיבי עבורי?  הכל 🙂
סתם, הנה הדגמה קטנה לרובי:

[1, 2, 3, 4].each_with_index do |elem, idx|
puts "arr[#{idx}]=#{elem}"

המקביל (למעט שימוש ב format string) של זה בפיתון:

for idx, elem in enumerate([1, 2, 3, 4]):
print('arr[{}]={}'.format(idx, elem))

לפני שאסביר מה מפריע לי, בואו נראה איך זה יתבצע ב ES6 למשל:

[1, 2, 3, 4].forEach( (elem, idx) => console.log('arr[%d]=%d', idx, elem) )

בגו (go/golang) זה יראה ככה:

slice := []int{1, 2, 3, 4}
for idx, elem := range slice {
 fmt.Printf("arr[%d]=%d\n", idx, elem)

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

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

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

אז מה מפריע לי בפיתון?
אני יכול לבצע איטרציה פשוטה של

for elem in [1, 2, 3, 4]:

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

אבל בפיתון האיטרציה מסוגלת להתבצע באמצעות הגדרה של שני מתודות: __iter__ ו __next__ (או next בגרסה 2), אז למה אין איטרציה לאינדקס? למה צריך משהו חיצוני בשביל זה?

סבבה, אפשר "לבלוע" את זה, אם זה היה הדבר היחיד.

הנה בעיה נוספת:

ברובי, יש לי פעולה כזו:

[1, 2, 3, 4].join(',')

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

לרשימה בפיתון אי אפשר לעשות אותו הדבר. צריך לעשות את זה בגישה לגמרי שונה:

','.join(str(n) for n in [1, 2, 3, 4])

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

','.join([1, 2, 3, 4])

הוא יצעק עלי:

TypeError: sequence item 0: expected str instance, int found

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

אפילו ES עושה את זה בגישה שאני מצפה לה:

[1, 2, 3, 4, 5].join(',')

כלומר זה לא ייחודי לרובי.

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

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


[1, 2, 3, 4].length
[1, 2, 3, 4].count


[1, 2, 3, 4].length


[1, 2, 3, 4].count() # TypeError: count() takes exactly one argument (0 given)
# oh, it looks up if an element exists... and how many times, okay then ...

len([1, 2, 3, 4])

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

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

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

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

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

אה, ועוד דבר, ברובי, count לא קיים למחרוזת אמנם, אבל בכל מה שיורש מ enumerable (כדוגמת מערך ו hash) ב3 צורות:

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

עבור Hash שימוש מספר 2, תמיד יחזיר 0, כי הבדיקה מורכבת מעט יותר, הרי על מה אנחנו רוצים לבצע את הספירה? על מפתחות? סבבה, יש מתודה בשם keys. על ערכים? סבבה, יש מתודה בשם values. שתיהן מחזירות מערכים. לבדוק אם מפתח וערך מתקיימים ביחד, זה לא הגיוני עבור count להחזיר, כי לא יכולים להיות 2 מפתחות באותו השם. לבדוק האם מפתח קיים, משתמשים ב include?‎ (סימן השאלה בסוף). אותו הדבר לגבי מערך, אותה מתודה תחזיר האם איבר קיים, שוב פעם ירושה, הפעם מ BasicObject.

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

תויק תחת:go, javascript, Python, Ruby, טכנולוגיה, פיתוח, קוד פתוח, תוכנה, תכנות

09 August, 2017 07:49 AM

04 August, 2017

Ilya Sher

NGS unique features – Argv command line arguments builder

Background: what is NGS?


NGS, the Next Generation Shell is a (work in progress) shell and a programming language built ground up for systems engineering tasks. You can think of it as bash that’s designed today: sane syntax, data structures, functional programming, extensibility, cloud in mind, declarative primitives.

What’s the problem with constructing command line arguments?

The problem affects only more “advanced” cases of constructing command line arguments when some arguments might or might not be present. Let’s consider this example:

# Made-up syntax, resembling NGS
args = []
if 'Subnets' in props {
  args += '--subnets'
  args += props['Subnets']
if ... {
  args += ...
if ... {
  args += ...
aws elb create-load-balancer ... $args

Wouldn’t it be cleaner to get rid of all the ifs? … and what happens if props['Subnets'] is an empty array?

How Argv facility in NGS solves the problem?

Argv is a result of factoring out the common code bits involved in constructing command line arguments. The ifs above were also factored out. They are now in Argv.

Let’s look at usage example (real NGS code, from AWS library)

argv = Argv({
  '--load-balancer-name': rd.anchor.name
  '--listeners': props.ListenerDescriptions.encode_json()
  '--subnets': rd.opt_prop('Subnets', props).map(only(ResDef, ids))
rd.run('create ELB', %(aws elb create-load-balancer $*argv))

The important points here are:

  1. Argv is a function with a single parameter which must be of type Hash (also called “dictionary” in some languages)
  2. The keys of the Hash are switches’ names (--load-balancer-name, --listeners, --subnets)
  3. The values of the Hash are values for the switches

The “if” that decides whether a switch is present in the resulting argv is inside Argv implementation and your code is clean of it. The values of the Hash are considered when Argv decides whether a switch should be present. null, empty array and instances of type EmptyBox are considered by Argv as missing values and it discards the switch. For convenience, instances of type FullBox are unboxed when constructing the result of Argv.

The Argv facility is yet another point among others that shows why NGS and systems engineering tasks are best fit.

Have a nice weekend!


04 August, 2017 05:26 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 שעובד עם אנדרואידים שיש להם רכיב תקשורת תואם.

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

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

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

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

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

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

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

31 July, 2017 04:51 PM

18 July, 2017

Guy Sheffer

ElectricSheepPi – Use your spare RaspberryPi to run evolving digital art!

Electric Sheep running on a RaspberryPi

Electric Sheep running on a Raspberry Pi

Hey all,
So its been a while since I had time to release something fun. After developing CustomPiOS I thought I might write something to demonstrate how easy it is to make your own RaspberryPi distribution with it. So I made one that runs Electric Sheep on boot. Its called ElectricSheepPi.
Electric Sheep is a collaborative abstract artwork that keeps evolving as you vote for “sheep”. So it makes nice visuals and is great to play on a spare screen and Pi. Raspberrypi 2 works, Raspberrypi 3 is recommended for smooth visuals. You can see examples of the visuals on youtube.

To run it

  1. Download the image
  2. Flash it like any distro
  3. set up wifi, set your wifi settings with the file electricsheep-network.txt or electricsheep-wpa-supplicant.txt.
  4. Plug to HDMI display, internet and boot

Its easy to write a custom distro with CustomPiOS!

To write I had to write a module for CustomPiOS, it was just 32 lines mostly copied from the electric sheep install manual. To make stuff start on boot I used the gui module which lets you start any gui application full screen at boot, that’s 2 lines in the config file.

Thank you Doc’s Tech for hosting the image yet again!

Full text

18 July, 2017 02:11 PM

12 July, 2017

Artyom Beilis

אחרי תקופה ארוכה שוחררה בטא של CppCMS 1.1.0

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

  • תכנון מחדש של application pool לתיקון מספר בעיות מובנות שהיו קיימות בו עד כה
  • API חדש של פעולות non-blocking לשיפור משמעותי בביצועי אפליקציות אסינכרוניות
  • סיכון ועיבוד בזמן העלאה של התוכן (למשל עיבוד או בדיקה של קבצים תוך כדי העלאה)
  • תמיכה משופרת ב-RESTful API
  • מערכת לניהול plugin ושיפורים מערכת תבניות (templates) בהם.
  • אפשרות ניהול session ללא עוגיות (למקרה והמשתמש ממש צריך)
  • שילוב ניהול ה-session מול טכנולוגיות אחרות כולל מימוש עבור PHP, Java Servlet, ASP.Net ו-Python Django
  • שיפורי ביצועים רבים
  • ועוד...

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

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

  • ל-1.4 תמיכה מלאה ב-HTTP/1.1, ב-HTTPS ומימוש של websockets
  • ל-2.0 להעביר CppCMS ל-C++11 תוך ניקוי חלק מה-API שילקח מספריה סטנדרטית כמו std::shared_ptr

אתם מוזמנים להתנסות בגרסת בטא האחרונה!

הטקסט המלא

12 July, 2017 09:01 AM

11 July, 2017

Oz Nahum

Submitting patches to Python

This is not my typical blog post style. So no "how to" or opinnions. Just some reflections on how I submitted a patch to Python's standard library. continue reading...

11 July, 2017 06:56 AM

18 June, 2017

Amir Aharoni


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

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

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

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

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

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

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

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

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

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

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

18 June, 2017 11:03 AM

14 June, 2017

Boris Shtrasman

סקירה ל nadlan.gov.il

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

משום מה בחרו לאחסן חלק מידע בשרתי גוגל וב CDN של bootstrap במקום לאחסון בשירותי הממשל, אבל לפחות את רוב האתר איחסנו תחת הדומיין gov.il.

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

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

אם היו מאפשרים להשתמש במידע של govmap בתנאי השימוש, יכול להיות שהיה אפשר למשל לשתף מידע עם OSM או לאפשר משיכת מידע ושכבות בתוכנות צד שלישי ובאתרים אחרים.זאת כמובן ע"י נתינת הקרדיט הנדרש  כמו שעושים כשמתמשים ב OpenLayers או Marble אבל אי אפשר.

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

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

כאשר ניגשים לאתר מגלים שהוא מתהדר בתמיכה ב דסקטופ טאבלט ומובייל. רק שככל הנראה אין זה לא כולל פיירפוקס (אבל זה עובד ב IE ו Edge) על Win10  או Gnu/Linux.

בפיירפוקס זה נראה כך :

ואם בודקים בשגיאות רואים :
10:28:24.704 Error: this.predictorInput.offsetParent is null
1 bundleJS.js:33796:18
consoleLog/< https://www.nadlan.gov.il/scripts/dis/bundleJS.js:33796:18
$ExceptionHandlerProvider/this.$get</< https://www.nadlan.gov.il/scripts/dis/bundleJS.js:30737:7
timeout/timeoutId< https://www.nadlan.gov.il/scripts/dis/bundleJS.js:38443:11
completeOutstandingRequest https://www.nadlan.gov.il/scripts/dis/bundleJS.js:27065:7
Browser/self.defer/timeoutId< https://www.nadlan.gov.il/scripts/dis/bundleJS.js:27453:7

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

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

לפעמים המפה מוצגת ולפעמים זה :

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

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

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

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

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

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

14 June, 2017 10:59 AM

09 May, 2017

Meir Kriheli

debian.org.il המחודש

debian.org.il היה חלק מה"חוב הטכני" שלי. מדובר באתר די פשוט שנבנה עם Django pre-1.0 ופייתון 2.6, והציג נהלים לקויים (כמו הכללת שם הפרוייקט ב־import).

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

הקוד החדש באתר כולל:

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


09 May, 2017 02:41 PM

17 April, 2017

Oz Nahum

Why I still persist on not using systemd

The following screenshot of a systemd issue reported on github saysit all. I don't care if systemd is technically superior, the way it's being developed is truely bothering. It's leadership is insisting on being blunt ingoring users, misleading and even wrong. continue reading...

17 April, 2017 02:36 PM

15 April, 2017

Lev Meirovitch

Sneaking features through the back door

Sometimes programming language developers decide that certain practices are bad, so bad that they try to prevent their use through the language they develop. For example: In both Java and C# multiple inheritance is not allowed. The language standard prohibits it, so trying to specify more than one base class will result in compiler error. […]

15 April, 2017 05:24 PM

07 April, 2017

Amir Aharoni

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

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.


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 exampleLet’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?


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.

Filed under: Free Software, localization, Wikipedia

07 April, 2017 07:34 PM

03 April, 2017

Lev Meirovitch

Putting it out there…

When I first discovered Linux and the world of Free Software, I was already programming in the Microsoft ecosystem for several years, both as a hobby, and for a living. I thought switching to writing Linux programs was just a matter of learning a new API. I was wrong! Very wrong! I couldn’t find my […]

03 April, 2017 09:04 PM

01 April, 2017

Meir Kriheli

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

את התרגום של Django 1.10 פספסתי עקב עומס. התחלתי לתרגם לקראת השחרור הצפוי של Django 1.11, ביום שלישי הרביעי באפריל. הפעם התרגום עמד על 93%.

נכון ליום שבת, הראשון באפריל בנובמבר התרגום עומד על 100% עבור:

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

01 April, 2017 03:27 PM

16 February, 2017

Itzik Kotler

The Key To Cybersecurity: Shared Intelligence And Industry Cooperation

Chicago in the 1930s was a hive of organized crime where the bad guys always had the upper hand. As dramatized by the film "The Untouchables," lawman Eliot Ness confides to Officer Jim Malone that he is prepared to do “everything within the law” to take down Al Capone. But streetwise Malone tells Ness that, to win, he must be prepared to do more. “He pulls a knife, you pull a gun. He sends one of yours to the hospital, you send one of his to the morgue. That’s the Chicago way.”

Like ‘30s Chicago, the dark web is crawling with global crime syndicates, and everyone I've talked to says fighting the Chicago way sounds appealing. The problem is that the same laws that make hacking a crime also make it a crime to retaliate.

Read full article at Forbes here

Full text

16 February, 2017 12:12 AM

13 January, 2017

Ram on Agmon

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

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

הטקסט המלא

13 January, 2017 12:10 PM

18 October, 2016

PyCon Israel

Pycon Israel 2016 wrap up

A little less than six months ago, we held the first PyCon in Israel. To our dismay, it took us this long to post all the videos from the event, but now they’re finally up, and you can finally catch up on The Track Not Taken.

We’d like to take this opportunity to clear the 2016 table and summarize the conference, to give it some closure.

The conference was a lot of work and fun to organize, and truly wonderful to witness. We’ve had:

Over and beyond the hard data, there was a great feeling of a community coming together.

There’s a few points we want to discuss in more details:


We made a conscious effort to make the conference more welcoming to diverse populations. This included a well-defined Code of Conduct, as well as reaching out to specific communities, which are usually underrepresented in technical conferences. This included, of course, the cooperation with Django Girls Tel Aviv, who were invited to the conference; we did not collect the statistics of visitor gender, but we have reason to believe it was significantly more balanced than usual. We also reached out to some other groups who were less clearly visible. By all the feedback we got, everybody felt very welcome.

To our regret, we could not show the same level of diversity among the speakers. Only 3 of the 32 accepted talks were presented by women, and none of these were Israeli. Further, we did not have a travel-support plan for speakers, and partly as a result of that, we did not have any speaker from the less-privileged parts of the world. We still have some way to go there.

We intend to keep pursuing diversity in future editions of PyCon Israel.


In the spirit of Open Source and transparency, we’re happy to share a summary of our budget (all numbers are thousands of Shekels).


Sponsorship: 246

Ticket sales: 54

Total: 300


Venue (incl. food): 134

Conf. party (food+movie): 41

Keynote speakers travel: 30

Speaker’s dinner: 13

Video recording & editing: 20

T-shirts & other swag: 28

Wireless internet: 5

Various other: 3

Total: 274

As you can see, we ended with a positive balance of close to 26K ILS. This is more than we intended, a miss we attribute to over-cautiousness and inexperience. A small part of this surplus will go to support Hamakor, the Israeli F/OSS association which helped make the conference happen, and the rest will go into the budget of the next PyCon Israel.

Community organizations

We’d like to call out three special groups which could use your help — participation as well as sponsorship; groups whose ongoing work enabled this conference and will hopefully enable others like it in the future:


Since so long has passed, we can also add a look to the future: Preparations for PyCon Israel 2017 have already started! You can join the organizing team, or just keep track of our progress via our different channels -

Blog: https://medium.com/@pyconil

Twitter: @pyconil, #pyconil

YouTube channel: https://www.youtube.com/channel/UC8ApA9ibgkf0XK7lgTVZgEQ

Facebook: https://www.facebook.com/pyconisrael/

Google group: https://groups.google.com/forum/#!forum/pycon-israel (requires registration)

Website: http://il.pycon.org/

Final words

Watching the months of preparations come to full fruition made our hearts burst with joy. We’d like to thank everyone involved — all CFP submission authors, the invited and accepted speakers, the sponsors (and in particular the Diamond sponsors, Red Hat & Cymmetria), the vendors (and in particular the helpful staff of our wonderful venue at Yes Planet), the Israeli Python community in general for making such an event possible, and you, the attendees, for making it a reality.

See you in 2017,

The PyCon Israel organizing team

18 October, 2016 07:45 PM

23 September, 2016

Yosef Or Boczko

GNOME 3.22 שוחרר !

צהריים טובים.

לאחר מחזור פיתוח בן שישה חודשים, שוחררה גרסה 3.22 של שולחן העבודה GNOME !

GNOME 3.22 Hebrew

גרסה זו מכילה 22980 שינויים שנרשמו ב־Git על ידי 775 תורמים, בהשוואה ל־28933 שינויים על ידי 837 תורמים ב־3.20.

אחוז התרגום עומד על 80% (36912 מחרוזות מתורגמות, 3682 מעורפלות ו־49874 שאינן מתורגמות), בהשוואה ל־80% (36069 מחרוזות מתורגמות, 3702 מעורפלות ו־4937 שאינן מתורגמות) ב־3.20 ו־82% (37120 מחרוזות מתורגמות, 3326 מעורפלות ו־4675 שאינן מתורגמות) ב־3.18.

על התרגום בעיקר אני אחראי, ולאחרונה הצטרף ניב באר ותרגם את חלק מהתיעוד למשתמש „צעדים חדשים ב־GNOME” (נקרא ‏gnome-getting-started-docs) ואפילו החל לתרגם ליישומים (טרם מצאתי זמן להכניס את התרגומים האחרונים שלו).

להלן מוטמע סרטון המציג את GNOME 3.22. קריינות על ידי קארן סנדלר, לשעבר מנכ״ל קרן GNOME, ומייק טרנטינו. עריכה על ידי Bastian Ilsø, שעורך סרטונים אלו כבר למספר שחרורים.

כרגיל, אוסיף כאן שיר. שיר יפה, שפשוט נהניתי לנגן על הפסנתר.


יוסף אור

23 September, 2016 02:47 PM

14 August, 2016

Yosef Or Boczko

מצב תרגום GNOME – לקראת 3.22

ערב טוב.

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

אחוז התרגום עומד על 80% (36915 מחרוזות מתורגמות, 3727 מעורפלות ו־4987 שאינן מתורגמות), בהשוואה ל־80% (36069 מחרוזות מתורגמות, 3702 מעורפלות ו־4937 שאינן מתורגמות) ב־3.20 ו־82% (37120 מחרוזות מתורגמות, 3326 מעורפלות ו־4675 שאינן מתורגמות) ב־3.18.

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

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

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

ערב טוב,

יוסף אור


14 August, 2016 04:05 PM

12 August, 2016


החלצות מעידכון כושל

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

הטקסט המלא

12 August, 2016 04:42 PM

31 July, 2016

Ram on Agmon

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

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

הטקסט המלא

31 July, 2016 08:25 PM

13 July, 2016

Itzik Kotler

Fuzzing The Kill Chain

Fuzzing is a technique in software testing where you generate a number of random inputs, and see how a program handles it. So what does a testing technique have to do with a process such as the Cyber Kill Chain as developed by Lockheed Martin? Easy! Just as fuzzing a software produces resilient software, fuzzing a process will produce a validated process. The Kill Chain takes about seven steps that adversaries must complete in order to achieve their goals, but will it always be the case? Can an attacker pull off a successful attack with just one step? Or three? That’s what we’re going to fuzz out ...

(Again, in order to avoid cross-posting between the different blogs, that was just a brief paragraph and a link to the original post is below).

Continue reading: https://www.safebreach.com/blog/fuzzing-the-kill-chain

Full text

13 July, 2016 08:14 PM

24 June, 2016


טיפ: התקנת NX על OpenSUSE Leap 42.1

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

הטקסט המלא

24 June, 2016 09:35 AM

27 May, 2016

Shlomi Fish

Tech Tip: Checking the Latest Build in Travis CI

If you are using Travis CI, you can check the latest build after a failed build by going to the “Build History” tab in your project’s main page (= https://travis-ci.org/shlomif/fc-solve or equivalent), and selecting the new commit.


Copyright by Shlomi Fish, 2016.

You can reuse this entry under the Creative Commons Attribution 3.0 Unported licence, or at your option any later version of it. See the instructions on how to comply with it.

27 May, 2016 12:43 PM

21 May, 2016

Shachar Shemesh

על פטרת צפרניים ופרטיות

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

The post על פטרת צפרניים ופרטיות appeared first on לינוקס ותוכנה חופשית.

21 May, 2016 05:59 AM

29 April, 2016

PyCon Israel

Meet our silver sponsors — Cloudify

Cloudify is an open-source Python Shop developing an orchestration framework for any cloud infrastructure provider allowing to use the tools of your choice to manage your applications. Cloudify’s mission statement is to allow organizations to realize the benefits of cloud computing by simplifying the management of cloud applications at scale.

Our complex challenges vary from scaling and healing to abstracting common tools like Docker, Puppet, Chef, Telegraf and the likes via Cloudify plugins. We adhere to PEP8 and do not compromise on code quality! OpenStack contributors are welcome.

We’re looking for brilliant developers to join us on a journey to take the concept of orchestration to the next level. http://github.com/cloudify-cosmo is our home. You’re invited.

29 April, 2016 08:55 AM

14 April, 2016

Arie Skliarouk


In our company developers deal with massive datasets that needs to be easy to copy, modify a fraction of it and scrape. Snapshotting is an ideal solution here. Each developer has a personal vserver (LXC container). The missing piece here is to provide them with a way to manipulate partitions and snapshots from inside of their vservers.

To enable users manipulate partitions from inside of the virtual server, I wrote LLS (LXC+LVM+Snapshots) scripts.

LXC+LVM+Snapshots = LLS

LLS system is set of scripts that enable LVM partitions and snapshots to be managed from inside of LXC vservers. It is safer to allow developers to use the scripts, instead of giving them superuser access to the physical machine.


The LLS scripts consist from two parts. The daemon script on the host and client scripts on the vservers. The clients communicate with the server over a named pipe in a shared (bind mount) directory /lls (lls - LXC+LVM+Snapshots). The /lls directory is actually a small partition that contains configuration file, the shell scripts and the named pipe used for communcation.
The daemon script does all the necessary low-level manipulations, both on the physical machine and on the LXC vservers.

Each LLS vserver has /lls partition mounted. To preserve mounts across reboots, the /etc/rc.local file runs /lls/tools/lls_mount_on_boot.sh script.
There are several client scripts the /lls/tools partition that do various operations:
script nameOperation
lls_create_partition.shCreate a partition
lls_create_snapshot.shCreate an LVM snapshot from an existing LVM partition
lls_delete_partition.shDelete an LVM partition or snapshot
lls_list_partitions.shList available LLS partitions and refresh /dev/mf directory
lls_mount_on_boot.shMount LLS partitions using configuration in the /etc/fstab file

The scripts show informative Usage information when ran without arguments.
Developers are expected to operate the scripts by themselves. They are also expected to maintain the /etc/fstab file for mounts they want to survive reboot of their vserver. Unmounted snapshot is assumed to be not necessary anymore and might be deleted at any time.

Further work

As the LLS system is used, more features are asked by developers and system administrators. Here are some of them:
  • Track unused (unmounted) LVM snapshots and delete them automatically
  • Track disk space used/required by LVM snapshot and grow it automatically. Send email to sysadmin each time this happen.
  • Have a way to enable/disable visibility of a LLS partition. This is useful while the LLS partition is under construction.
  • Have a way to mark an LLS partition as non-mountable or mountable in read-only mode.
Version 20111124.

14 April, 2016 12:15 PM

25 March, 2016

Shlomi Fish

Freecell Solver 4.2.0 was Released

Freecell Solver version 4.2.0, has been released. It is available in the form of a source archive, from the download page. Freecell Solver is an open source library and some command line applications, for automatically solving several variants of card Solitaire / Patience games, including Freecell.

This release sports the new configuration theme “-l conspiracy-theory” (or “-l ct”) which is somewhat faster than the best contender up to it, “-l amateur-star”, some relatively minor bug fixes, new compile-time options, and many small and somewhat larger code cleanups, refactorings, and optimisations.

“conspiracy-theory” is a reference to the Jewish holiday of Purim, which took place around the time of its release and an old post of mine about it.


25 March, 2016 04:14 PM

13 March, 2016

Artyom Beilis

לבנות RPM להרבה הפצות

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

בזכות debootstrap היה לי יחסית קל לבנות חבילות deb ל־Debian ו־Ubuntu, אבל המצב הרבה יותר מורכב כשמדובר ב־rpm כי אין דרך קלה לשים את הפצת rpm בספריה ולעשות לתוכה chroot.

בהמלצת שגיא בן־עקיבא התחלתי להשתמש ב־Open Build Service של OpenSuse.

האמת, אני מאוד מרוצה! כל מה שצריך זה להעלות Source RPM או קובץ spec, כל השאר ייעשה בצורה אוטומטית: בניה למספר הפצות ופלטפורמות, הכנת מקורות מסודרים ואפילו אתה מקבל repository מסודר.

בצורה כזו הכנתי rpmים ל־3 הפצות (Fedora, Suse, CentOS) כולל מספר גרסאות וגם הכל עבור שתי ארכיטקטורות: x86 ו־x86_64.


מה שנותר... להבין כיצד משתמשים בשירות עבור debים

הטקסט המלא

13 March, 2016 02:11 PM

09 February, 2016

Dan Fruehauf

Spanning files over multiple smaller devices

Imagine you are in Tasmania and need to move 35TB (1 million files) to S3 in the Sydney region. The link between Tasmania and continental Australia will undergo maintenance in the next month, which means either one or both:

In short, I’m going to be presented with a bunch of HDs and I need to copy the data on them, fly to Sydney and upload the data to S3. If the HD given would be 35TB I could just copy the data and be done with it – no dramas. Likely though, the HDs will be smaller than 35TB, so I need to look at a few options of doing that.

Things to consider are:

LVM/ZFS over a few HDs

Building a larger volume over a few HDs require me to connect all HDs at the same time to a machine and if any of them fail I will lose all the data. I decide to not do that – too risky. It’ll also be difficult to debug if anything goes wrong.

tar | split

Not a bad option on its own. An archive can be built and split into parts, then the parts could be copied onto the detination HDs. But the lose of a single HD will prevent me from copying the files on the next HD.

tar also supports -L (tape length) and can potentially split the backup on its own without the use of split. Still, it’ll take a very long time to spool it to multiple HDs as it wouldn’t be able to do it in parallel. In addition, I’ll have to improvise something for untarring and uploading to S3 as I will have no staging area to untar those 35TB. I’ll need something along the lines of tar -O -xf ... | s3cmd.

tar also has an interesting of -L (tape length), which will split a volume to a few tapes. Can’t say I am super keen using it. It has to work the first time.

Span Files

I decided to write a utility that’ll do what I need since there’s only one chance of getting it right – it’s called span-files.sh. It operates in three phases:

The utility is available here:

I’ll let you know how it all went after I do the actual copy. I still wonder whether I forgot some things…

09 February, 2016 12:28 PM

31 January, 2016

Kobi Zamir

Diff , Patch ו Pull Requests

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

הטקסט המלא

31 January, 2016 05:35 PM

24 January, 2016

Kobi Zamir

מכתב לא שגרתי

לפני שבוע קבלתי מכתב לא שגרתי לגבי libhdate. ראשית הכותב אינו שגרתי, מדובר באדם בגיל 80 בערך. שנית מדובר בפלטפורמה לא שגרתית Raspberry Pi. ושלישית מדובר בשימוש לא שגרתי בספריה.

הטקסט המלא

24 January, 2016 04:00 PM

13 December, 2015

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://t11.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 


    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.

    13 December, 2015 01:33 PM

    07 December, 2015

    Ira Abramov

    תלתפסת לכל פועל

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

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

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

    https://ira.abramov.org/3DPadventures/ אנא גלשו למצג המקורית אם משום מה זה לא מציג לכם פה.

    07 December, 2015 03:42 PM

    24 November, 2015

    Yoav Farhi

    וורדפרס.קום, הדור הבא

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

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

    ברמה הטכנית, מדובר על אפליקציית עמוד אחד (Single Page Application), שעושה שימוש בין השאר ב-React, Flux ו Node, ועובדת מול Rest API פתוח. אולי זה נראה כמו תהליך אופייני של כתיבה מחדש של מערכת, אבל בעיניי מדובר בהרבה יותר מזה. מבחינת המתכנתים באוטומטיק המעבר לעבודה על המערכת החדשה דרש אימוץ של כלים וטכנולוגיות חדשות במהירות שיא, ולמידה תוך כדי תנועה. אנדי פיטלינג, מרכז הפרוייקט, כותב על התהליך מאחורי הקלעים ומסביר על הבחירות שלנו, ועל השינויים שעברנו כחברה כדי ליישם אותן.

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

    כן, אנחנו מגייסים עובדים – בואו לעבוד איתנו.

    24 November, 2015 08:51 AM