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

14 July, 2018

Omer Zak

I got the ability to work with Heroku using my Debian Stretch system

The other day I found that:

  1. Heroku needs Python 3.6 or later to work (as of June 22, 2018). See: Getting Started on Heroku with Python.
  2. Debian Stretch (Debian Stable as of June 22, 2018) and its backports have only Python 3.5.

The solution was to build a Docker image based upon Ubuntu 18.04, which does have Python 3.6. See the project https://gitlab.com/TDDPirate/heroku_on_debian in GitLab.

July 15, 2018 update:

After I complained about flakiness of Selenium-based tests when the Selenium server is running outside of the Docker container while the application runs inside the container, Udi Oron suggested another way to run Python 3.6 on a Debian Stretch system: use pyenv.

Turns out that pyenv solves the pain point of running Python 3.6 on Debian Stretch without having to use a container. So Selenium-based tests are now stable.

The following is an excellent article about using pyenv:
Pyenv – Python Version Management Made Easier

And the following is a link to the GitHub repository:
https://github.com/pyenv/pyenv

I suspect that pyenv is the reason why people are not in a hurry to backport new Python versions to Debian.

14 July, 2018 07:01 AM

13 July, 2018

Ilya Sher

Terraform 0.12 language looks bad

I was hoping that smart guys vs bad situation will have another outcome but Terraform language for version 0.12 looks bad… as languages of Pupppet and Ansible.

I’m not saying that people that made Puppet and Ansible are not smart. It’s that we could learn from the mistakes they made… unless we don’t consider those being mistakes.

Puppet and Ansible went through very similar difficult situation. They have limited themselves to a declarative format and then they tried to accommodate the real life. Terraform has this situation right now.

The situation is:

Interestingly enough, they all did not switch to a proper programming language. Maybe because that would be at least partially admitting that the product should have been a library in the first place?

Terraform is actually in very crappy situation because even if they decide to expose everything as a library as the main interface, I don’t see people start using Go for “infrastructure as code”. Not as smooth as Ruby or Python anyway.

Happy coding, everyone!

 

 

13 July, 2018 06:45 AM

11 July, 2018

Hetz Ben Hemo

על מצלמות אבטחה ופרצות

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

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

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

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

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

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

אז מה ניתן לעשות בנידון?

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

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

הטקסט המלא

11 July, 2018 09:08 AM

Omer Zak

How to visually compare two PDF files? (cont’d)

When I asked the above question in a Telegram group, people proposed also other tools, which I am summarizing below.
Amiad Bareli, Amit Aronovitch, Meir Gil and Yehuda Deutsch – thanks.

  1. ImageMagick compare
  2. matplotlib testing framework – supports also PDF:
    >>> import matplotlib.testing.compare
    >>> matplotlib.testing.compare.comparable_formats()
    ['png', 'eps', 'svg', 'pdf']
  3.  pHash – The open source perceptual hash library.

11 July, 2018 06:55 AM

10 July, 2018

Rabin Yasharzadeh

Overwrite the default theme per application

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

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

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

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

And do this small change, prefix the application

Exec
command with
env GTK_THEME=theme_name

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

10 July, 2018 12:24 PM

04 July, 2018

ik

על שימוש ב VIM ו OCD

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

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

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

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

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

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

אבל הגישה של vi היא שונה כאן. אם כל משפט נגמר בנקודה, אפשר להתחיל בגישה הבאה:
בואו נלחץ על ‏ 2f.‎ (כלומר הספרה שתיים האות f ואז נקודה) ונגלה כי אנחנו מגיעים לנקודה השלישית הנמצאת בשורה שלנו. עכשיו ניתן להקיש 2w ו… הגענו למיקום הנכון. מכאן נלחץ על cw ונשנה את המילה הרצויה.

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

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

תנו לי לנסות את זה שוב. אולי אעשה את זה כך: ‎ 2‎)‎ ואז על w ואקנח ב cw.  טוב זה פחות הקלדות.
ועכשיו נשאלת השאלה – האם אני עדיין יכול לקצר את התהליך. אמנם במקום 7 תווים ירדתי ל5, עדיין זה הרבה בעיני.

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

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

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

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

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

04 July, 2018 03:45 AM

30 June, 2018

Ilya Sher

Terraform becomes a programming language

Declarative languages failure

Approach that in my eyes failed, again and again, is to start with your own declarative language and then with time grow the language. (SQL being among notable exceptions)

Puppet is the best example. map and each, added in Puppet 4.0.0 are, in my opinion, just two in a sea of evidence that the envisioned simple format has failed to handle the needs of the real world.

Ansible’s loop looks bad as the whole idea of making top levels of programs in YAML based syntax (and the rest in Python).

In my opinion, it makes more sense to create a language first and then libraries for it, not a library and then a language around it.

My hope for Terraform

I think Terraform guys are smart. Among other things, it manifests in implementing data sources. Data sources make Terraform much more flexible. I think it’s very clever.

Terraform, which started declarative, are now inventing their own programming language. They are going the way of Puppet and Ansible. I hope they can do better, in this awkward situation: there are quite a lot of constraints on the programming language because of the existing syntax and semantics.

Happy coding, everyone!

 

30 June, 2018 06:00 AM

26 June, 2018

ik

שעתיים עם void-linux

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

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

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

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

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

אז אני ניתקתי את עצמי מכך, והלכתי לכיוון של ארץ' וחשבתי ש void-linux דומה בגישה שלה ל ארץ'. טעיתי.

ובכן, אין יחסית הרבה בחירה בהפצה הזו, היא מאוד דעתנית. אפשר לבחור סוג מימוש של libc שהוא glibc או musl.
אין למשל תמיכה ב systemd ובמקומה יש ruinit.

ההפצה בברירת מחדל מגיעה עם live cd, בטעמים של שולחנות עבודה Enlightenment, Cinnamon, LXDE, LXQT, MATE ואפילו Xfce.
מה חסר? ובכן גנום, kde4 ו plasma.

אני החלטתי ללכת לכיוון של musl ו live cd שהוא רק shell. רציתי להרגיש את ההפצה בברזל שלה.
והיא ממש מדהימה, קלה וזריזה מאוד.

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

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

אוקי, עשיתי בוט להתקנה, ו… עכשיו הגיע הזמן להתקין דברים. אז להפצה יש מנהל חבילות משל עצמה בשם xbps שדווקא עניינה אותי, אבל המסך שלי נתקע פתאום כשהתקנתי neovim, אם כי ההפצה עצמה המשיכה לרוץ בהצלחה. מסתבר שהיה משהו בתוכנה עצמה שנעל עדכון מסך, שעד עכשיו לא הבנתי מה הוא ולמה. ד"א Ctrl+q לא עבד, ניסיתי 🙂

היכולת להשתמש במנהל חבילות בינארי הוא לא חדש, והפורמט הוא בס"כ הסוואה ל tar.xz.
התוכן שם קצת מוזר לי אבל, למשל רשימת החתימה של הקבצים משתמשת ב xml בקובץ בשם files.plist.
גם הקובץ props.plist הוא למעשה קובץ xml.

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

יש לכך שני סיבות עיקריות עבורי:

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

האם זה אומר שהיא גרועה? לא! רחוק מזה!
היא פשוט לא בשבילי, ואני אשאר בנתיים עם ארץ' 🙂

 

26 June, 2018 05:26 AM

23 June, 2018

Kaplan Open Source Consulting

כנס GIS בקוד פתוח, יוני 2018

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

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

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

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

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

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

23 June, 2018 11:10 PM

Ilan Shavit

Flatpak

בשבוע שעבר כתבתי על AppImage. הפעם אכתוב על Flatpak. מהי טכנולוגיית Flatpak  ומה היא מאפשרת?

ל- Flatpak יש Repository רשמי בשם Flathub שמאפשר להתקין ולהריץ מאות אפליקציות (302 חבילות בזמן כתיבת המאמר) כאמור ללא תלות בסוג מערכת ההפעלה או בגרסה הספציפית שלה. בלינוקס מינט בחרו בטכנולוגיית Flatpak (ולא ב- Snap) ככלי להשלמת מאגרי התוכנה של ההפצה.

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

$ flatpak remotes
Name Options
flathub system

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

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

$ flatpak search Application_Name

וכדי להתקין את התוכנה נריץ את הפקודה:

$ sudo flatpak install  Application_Name

כדי לעדכן את כל חבילות Flatpak המותקנות במערכת נריץ את הפקודה:

$ sudo flatpak update

רשימה מלאה של פעולות שניתן לבצע באמצעות פקודת flatpak ניתן למצוא כאן.

מאמרים נוספים שכתבתי בנושא:

23 June, 2018 08:20 AM

18 June, 2018

Hetz Ben Hemo

מה קורה לתחום הסיסטם?

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

עד לפני מס' שנים, עוד לפני כניסת העננים לסצינה, תחום הסיסטם בחברות גדולות לדוגמא, היה די ברור: היו אנשי סיסטם מיקרוסופט, אנשי סיסטם לינוקס, אבטחת מידע היו אחראים על ה-Firewall ודברים אחרים שהיו קשורים לתחום, וצוות תקשורת שהיו אחראים על סוויצ'ים, כתובות IP, על VLAN וכל הדברים הקשורים לתקשורת, מרכזיות, WIFI וכו'.  אם היה צריך להתקין אפליקציות ושרתי אפליקציות (נניח Exchange, SharePoint ב-Windows, או MySQL/Oracle או שרת אפליקציות כמו Tomcat) – אז הצוות שאחראי על אותה מערכת הפעלה היה מתקין אותה והמשתמשים היו מוגדרים ברמת משתמש, לא ברמת Admin.

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

אם נסתכל בתחומים שאותו "איש Devops" צריך להכיר ולתפעל ולכתוב סקריפטים אליו (כן, הרבה פחות שימוש ב-GUI!) – אז הוא בעצם לוקח את תחום הסיסטם לינוקס הבסיסי, ומתרכז הרבה יותר בכלים שרצים על הלינוקס. זה מתחיל בניהול קוד, ממשיך לאוטומציה, סקריפטים, Python, JSON, YAML, ניהול חשבונות ומשאבים בענן כמובן, Jenkin/Travis/CircleCI וכו', והרשימה עוד ארוכה, תלוי בתחומים שהחברה עוסקת בהם, כלומר אם ניקח איש סיסטם לינוקס ממוצע שבחיים לא נגע ברוב הדברים שתיארתי לעיל חוץ מלינוקס, יש לו כיברת דרך ארוכה לעשות השלמות כדי להיות "איש Devops" מקצועי טוב. מה לגבי איש סיסטם מיקרוסופט? ובכן, רוב הכלים שתיארתי קיימים גם ל-Windows (היתרונות של קוד פתוח), אבל אחד הדברים הראשונים שהוא יצטרך להתרגל לרדת מהם, זה ה-GUI, לעבוד עם PowerShell באופן קבוע ומומלץ גם להכיר Python בדרך, ואז כמובן את הדברים שציינתי לעיל בתור התחלה.

אז מה, לכל אלו שההורים/סבתא/מענק שחרור מאפשר להם ללמוד סיסטם מיקרוסופט (MCSA) או לינוקס (RHCA, LPIC) – האם לוותר? בתחום מיקרוסופט לדעתי יש רוויה בשוק (ואשמח שהקוראים יתקנו אותי כי זה לא התחום שלי), בתחום הלינוקס לעומת זאת – יש דרישה, אבל בשתיהם מצפים שהמועמד ידע הרבה יותר ממה שהקורס מספק (ולא, קורס המשך כמו MCSE או RHCE לא יעזרו הרבה, מצפים יותר לידע שמגיע מתוך שימוש ונסיון, לא שתדקלם כמו תוכי). אם לדוגמא תפנה לסטארטאפים, אז הדבר האחרון שהם מחפשים – זה איש סיסטם (אני יודע כי אחרי 7 שנים של להיות פרילאנסר, קיבלתי סך הכל פעמיים בקשה לשרותי סיסטם או בקשות ל"שידוך" איש סיסטם שכיר ע"י חברות סטארטאפ).

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

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

הטקסט המלא

18 June, 2018 06:32 PM

16 June, 2018

Gilad Ben-Yossef

ביל"ו Śūnyatā

מְתַרְגֵּל רֵיקוֹת בביל"ו סֶנְטֶר,
כָּל הָאֲ.נָשִׁים חוֹלְפִים עַל פָּנַי.

הַצְּבָעִים, הַקּוֹלוֹת, הַחֹם וְהָרַעַשׁ,
מְנַסִּים לִמְכֹּר לִי דְּבָרִים שֶׁאֲנִי לֹא צָרִיךְ.

זֶה יָפֶה וְחַם וְצִבְעוֹנִי וּמְתַעְתֵּעַ,
כְּמוֹ קִרְקָס שֶׁהִשְׁתַּגֵּע.

אֲנִי רוֹאֶה לָכֶם אֶת הַקַּרְטוֹן מֵצִיץ מֵהַתַּפְאוּרָה.
זְמַן לְשׁוּב בַּחֲזָרָה.

16 June, 2018 04:32 PM

15 June, 2018

Ilan Shavit

AppImage

בהמשך למאמר הקודם, הפעם אכתוב על AppImage:

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

דוגמא: אם תורידו את תוכנת Etcher מאתר המפתח תיווכחו שאתם מורידים קובץ דחוס (zip). חילוץ הקבצים יחלץ קובץ בודד: etcher-electron-1.4.4-x86_64.AppImage (שימו לב לסיומת AppImage). מתן הרשאות ריצה (במקרה הזה לא צריך) מאפשר הרצה מיידית של התוכנה.

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

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

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

לכן אם משתמשים ב- AppImage חשוב מאוד לבדוק את חתימת הקובץ (זה כאמור לא תמיד יעזור). במקרה של Etcher אפילו לא מצאתי היכן נמצאת חתימת הקובץ…

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

15 June, 2018 05:34 AM

11 June, 2018

Boris Shtrasman

מי צריך dualboot בכלל ?

לא ממש בטוח בשביל אנשי GNU ודביאן ...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

זהו ? בטוחים ? אז הנה התמונה שתעלה  רגשות מעורבים :





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

המכונה המתארחת היא windows 10 תת גירסה 1803.


היופי הזה התקבל ע"י הסכמה להסכם השירות של virtualbox-ext-pack ושימוש ב vbox (שהוא לא בדיוק חופשי אבל נניח).

sudo apt install virtualbox virtualbox-dkms virtualbox-ext-pack

מה שהותקן אצלי הוא 5.2.10


בדיקת המחיצות שחלונות צריך לראות (כל מה שהיה לפניה) :

sudo fdisk -l /dev/sda
Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xffffff

Device Boot Start End Sectors Size Id Type
/dev/sda1 63 80324 80262 39.2M
/dev/sda2 * 81920 25767935 25686016 12.3G 7 HPFS/NTFS/exFAT
/dev/sda3 25767936 500113407 474345472 226.2G 7 HPFS/NTFS/exFAT

יצירת דיסק שייגש לכונן ישירות :

sudo VBoxManage internalcommands createrawvmdk \
     -filename "/home/user/VirtualBox VMs/win10.vmdk"\
     -rawdisk /dev/sda -partitions 1,2,3      

וכמובן שינוי הרשאות בחזרה לכל מה שיש תחת 
/home/me/VirtualBox VMs/ 
לבעלות של המשתמש הנוכחי:

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

 לאחר מכן בVirtualBox צריך לייצר מכונת windows X64 אבל לבקש להשתמש בקובץ שייצרנו (win10.vmdk) להגיד תפילה ולקוות שלא נחטוף BSOD בפנים.

בדומה לבדיחה הרגילה, היו בעיות קול (קול מתכתי) אבל זה ככל הנראה בעיית הגדרה מקומית .

11 June, 2018 06:36 AM

10 June, 2018

Gabor Szabo

Craft Conf 2018 retrospective

This was my second Craft Conference and I enjoyed it as much as I enjoyed Craft Conf 2017. I attended two great workshops before the conference. Met Ruth and Mel Conway and a lot of other interesting people. Some I knew earlier, some I met for the first time. I've attended great talks and went on the hike I organized.

For the full article visit Craft Conf 2018 retrospective

10 June, 2018 07:50 AM

06 June, 2018

Itzik Kotler

Fixating On Vulnerabilities Is A Vulnerability

You almost have to admire the hackers. Almost. Technology research firm Gartner (via Forbes) estimates that companies will spend $93 billion on cybersecurity technologies in 2018. Yet, according to a recent study by security firm Norton (via MIT Technology Review), the relentless efforts of the global hacking community still netted $172 billion in ill-gotten gains. There’s no indication that things will be any different this year. Why do the hackers continue to succeed? What must industry do to make hacking a less profitable venture for the adversary?

To better understand and answer these questions, it’s useful to examine the hackers’ successes and look for consistencies. But first, let’s define a word that is often misused or misunderstood in cybersecurity discussions: vulnerability.


Read the full article at Forbes here

Full text

06 June, 2018 01:50 AM

03 June, 2018

Rabin Yasharzadeh

Convert certificate format with OpenSSL

Convert a PEM file to DER (crt etc)

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

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

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

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

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

 

03 June, 2018 09:25 AM

01 June, 2018

Boris Shtrasman

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


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

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

לאחר ששלושה מחשבים ניידים עם כונני DVD נכשלו בקריאה  - שמעתי את המנוע משנה מהירות , אבל אין כלום ב dmesg ועגינה ידנית הוגיע שאין מדיה :

mount /dev/sr0 /media/cdrom
mount: no medium found on /dev/sr0

מכיוון שהתקשתי להאמין שכל המדיות תקולות הלכתי ורכשתי כונן DVD חיצוני (מזוהה כ):

CD-ROM            HL-DT-ST DVDRAM GP57EB40  PF00 PQ: 0 ANSI: 0

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

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

מרבית הדיסקים שנבדקו היו תקולים , היו גם  גם DVD-Rים וגם CDR-Rים, כמעט ולא היו מדיות DVD-RW/CDR-RW.

חלק מהתקלות היו בסגנון ה :

[10190.308097] sr 4:0:0:0: [sr0] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[10190.308119] sr 4:0:0:0: [sr0] tag#0 Sense Key : Illegal Request [current]
[10190.308132] sr 4:0:0:0: [sr0] tag#0 Add. Sense: Logical block address out of range
[10190.308146] sr 4:0:0:0: [sr0] tag#0 CDB: Read(10) 28 00 00 03 30 96 00 00 01 00 00 00
[10190.308154] blk_update_request: critical target error, dev sr0, sector 836184


המדיות היו של  silver-line  , TDK , משהוא ללא שם  G-Platinum , office-depot  , GPT

3 דיסקים ככל הנראה בין השנים 1999 - 2000 היו תקינים (TDK) .

דיסקים של סילברליין ( CD-R ו DVD-R ) בין השנים 2002 - 2010 כמעט כולם  פרט לשניים היו תקולים כל הדיסקים שהיו לי משנת 2011 ומעלה כולם תקינים.


השמדתי וזרקתי את המדיות הפגומות , ומה שהצלחתי לקרוא גיביתי מחדש והשמדתי את הקודמים.
הגיבויים בין השנים 2002 ו 2010 הכילו קובץ בודד בד"כ.

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

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

01 June, 2018 05:42 PM

27 May, 2018

Gabor Szabo

Flawed democracy

Though I usually unfollow everyone who has shares Israel-bashing on Twitter, every now and then someone shares such a Tweet. For example today I saw some people sharing a link about some proposed law in Israel that will reduce the freedom of speech. Though I have not read the details, it might or might not be reasonable. I don't know. That's not the point here. The point is that these people try to ridicule Israel being the only democracy in the Middle East. Yeah, I know this sound arrogant, so I went to check the Democracy Index on Wikipedia.

For the full article visit Flawed democracy

27 May, 2018 06:53 AM

22 May, 2018

Shlomi Noach

MySQL master discovery methods, part 5: Service discovery & Proxy

This is the fifth in a series of posts reviewing methods for MySQL master discovery: the means by which an application connects to the master of a replication tree. Moreover, the means by which, upon master failover, it identifies and connects to the newly promoted master.

These posts are not concerned with the manner by which the replication failure detection and recovery take place. I will share orchestrator specific configuration/advice, and point out where cross DC orchestrator/raft setup plays part in discovery itself, but for the most part any recovery tool such as MHA, replication-manager, severalnines or other, is applicable.

We discuss asynchronous (or semi-synchronous) replication, a classic single-master-multiple-replicas setup. A later post will briefly discuss synchronous replication (Galera/XtraDB Cluster/InnoDB Cluster).

Master discovery via Service discovery and Proxy

Part 4 presented with an anti-pattern setup, where a proxy would infer the identify of the master by drawing conclusions from backend server checks. This led to split brains and undesired scenarios. The problem was the loss of context.

We re-introduce a service discovery component (illustrated in part 3), such that:

In a failover/service discovery/proxy setup, there is clear ownership of duties:

Depending on the technologies used, we can further achieve:

We explain the setup using the following assumptions and scenarios:

A non planned failover illustration #1

Master M has died, the box had a power failure. R gets promoted in its place. Our recovery tool:

The proxy:

The app:

A non planned failover illustration #2

Master M gets network isolated for 10 seconds, during which time we failover. R gets promoted.

Everything is as before.

If the proxy kills existing connections to M, then the fact M is back alive turns meaningless. No one gets through to M. Clients were never aware of its identity anyhow, just as they are unaware of R's identity.

Planned failover illustration

We wish to replace the master, for maintenance reasons. We successfully and gracefully promote R.

Discussion

This is a setup we use at GitHub in production. Our components are:

As mentioned earlier, the apps need not change anything. They connect to a name that is always resolved to proxy boxes. There is never a DNS change.

At the time of failover, the service discovery component must be up and available, to catch the change. Otherwise we do not strictly require it to be up at all times.

For high availability we will have multiple proxies. Each of whom must listen on changes to K/V. Ideally the name (cluster1-writer.example.net in our example) resolves to any available proxy box.

See also:

Sample orchestrator configuration

An orchestrator configuration would look like this:

  "ApplyMySQLPromotionAfterMasterFailover": true,
  "KVClusterMasterPrefix": "mysql/master",
  "ConsulAddress": "127.0.0.1:8500",
  "ZkAddress": "srv-a,srv-b:12181,srv-c",
  "PostMasterFailoverProcesses": [
    “/just/let/me/know about failover on {failureCluster}“,
  ],

In the above:

See orchestrator configuration documentation.

All posts in this series

22 May, 2018 08:45 AM

MySQL master discovery methods, part 1: DNS

This is the first in a series of posts reviewing methods for MySQL master discovery: the means by which an application connects to the master of a replication tree. Moreover, the means by which, upon master failover, it identifies and connects to the newly promoted master.

These posts are not concerned with the manner by which the replication failure detection and recovery take place. I will share orchestrator specific configuration/advice, and point out where cross DC orchestrator/raft setup plays part in discovery itself, but for the most part any recovery tool such as MHA, replication-manager, severalnines or other, is applicable.

We discuss asynchronous (or semi-synchronous) replication, a classic single-master-multiple-replicas setup. A later post will briefly discuss synchronous replication (Galera/XtraDB Cluster/InnoDB Cluster).

Master discovery via DNS

In DNS master discovery applications connect to the master via a name that gets resolved to the master's box. By way of example, apps would target the masters of different clusters by connecting to cluster1-writer.example.net, cluster2-writer.example.net, etc. It is up for the DNS to resolve those names to IPs.

Issues for concern are:

As long as things are stable and going well, discovery via DNS makes sense. Trouble begins when the master fails over. Assume M used to be the master, but got demoted. Assume R used to be a replica, that got promoted and is now effectively the master of the topology.

Our failover solution has promoted R, and now needs to somehow apply the change, such that the apps connect to R instead of M. Some notes:

A non planned failover illustration #1

Master M dies. R gets promoted. Our tool instructs all DNS servers on all DCs to update the IP address.

Say TTL is 60 seconds. Say update to all DNS servers takes 10 seconds. We will have between 10 and 70 seconds until all clients connect to the new master R.

During that time they will continue to attempt connecting to M. Since M is dead, those attempts will fail (thankfully).

A non planned failover illustration #2

Master M gets network isolated for 30 seconds, during which time we failover. R gets promoted. Our tool instructs all DNS servers on all DCs to update the IP address.

Again, assume TTL is 60 seconds. As before, it will take between 10 and 70 seconds for clients to learn of the new IP.

Clients who will require between 40 and 70 seconds to learn of the new IP will, however, hit an unfortunate scenario: the old master M reappears on the grid. Those clients will successfully reconnect to M and issue writes, leading to data loss (writes to M no longer replicate anywhere).

Planned failover illustration

We wish to replace the master, for maintenance reasons. We successfully and gracefully promote R. We need to change DNS records. Since this is a planned failover, we set the old master to read_only=1, or even better, we network isolated it.

And still our clients take 10 to 70 seconds to recognize the new master.

Discussion

The above numbers are just illustrative. Perhaps DNS deployment is quicker than 10 seconds. You should do your own math.

TTL is a compromise which you can tune. Setting lower TTL will mitigate the problem, but will cause more hits on the DNS servers.

For planned takeover we can first deploy a change to the TTL, to, say, 2sec, wait 60sec, then deploy the IP change, then restore TTL to 60.

You may choose to restart apps upon DNS deployment. This emulates apps' awareness of the change.

Sample orchestrator configuration

orchestrator configuration would look like this:

  "ApplyMySQLPromotionAfterMasterFailover": true,
  "PostMasterFailoverProcesses": [
    "/do/what/you/gotta/do to apply dns change for {failureClusterAlias}-writer.example.net to {successorHost}"
  ],  

In the above:

See orchestrator configuration documentation.

All posts in this series

22 May, 2018 08:44 AM

20 May, 2018

Guy Rutenberg

Google Adsense for Wordpres – No Plugin Needed

Adding Google Adsense ads to your your WordPress blog was a tedious task. Either you needed to manually modify your theme, or you had to use a plugin, such as Google’s own Adsense plugin. Even then, placements were limited and handling both mobile and desktop themes was complicated at best. Recently, two things have changed: Google retired the Adsense plugin and introduced Auto Ads.

At first, the situation seemed like it turned for the worse. Without the official plugin, you had to resort into using a third-party plugin or manually placing ads in your theme. But Auto ads made things much simpler. Instead of having to manually place your ads, you can let Google do it for you. It works great on both desktop and mobile theme.

The easiest way to enable Auto ads is using a child theme. First, you need to get the Auto ads ad code. Nextg, in your child theme’s functions.php add the following lines, making sure to replace the javascript snippet with your own one.

// Add Google Adsense
function my_google_adsense_header() {
?>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({
          google_ad_client: "ca-pub-4066984350135216",
          enable_page_level_ads: true
     });
</script>
<?php
}
add_action( 'wp_head', 'my_google_adsense_header');

20 May, 2018 06:11 PM

07 May, 2018

Meir Kriheli

מצגת ההרצאה NoORM

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

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

07 May, 2018 09:26 PM

05 May, 2018

Guy Rutenberg

Google Analytics for WordPress

To set up Google Analytics tracking for WordPress you don’t need any third-party plugin. It can be easily done using a child theme. A child theme, is a code that modifies the current theme in a way that won’t interfere with future upgrades. To enable Google Analytics, start by creating a child theme using the official documentation.

Now, you need to get you Google Analytics tracking code. Over the years the tracking code had a few different versions. You should make sure you are getting the latest tracking code, which currently looks like:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-380837-9"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-380837-9');
</script>

To get the tracking code, follow the instructions on this page.

Now we add the tracking code to each page using the child theme. In your child theme’s directory, edit the functions.php file and add the following lines. Replace the tracking code with the one you acquired.

// Add Google Analytics tracking
function my_google_analytics_header() {
?>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-380837-9"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-380837-9');
</script>
<?php
}
add_action( 'wp_head', 'my_google_analytics_header');

This adds the tracking code to the <head> of every page.

05 May, 2018 12:58 PM

27 April, 2018

Lev Meirovitch

Say hello to the new math!

Yesterday at my company, some of my department stopped work for a day to participate in an “enrichment” course. We are a large company that can afford such things, and it can be interesting and useful. We even have the facilities for lectures right at the office (usually used for instructing new hires) so it […]

27 April, 2018 08:34 AM

25 April, 2018

Arie Skliarouk

GRUB-based multiple iso booting flash drive

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

GRUB to the rescue!

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

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

    Caveats:

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

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

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

    25 April, 2018 08:21 AM

    adaptec CLI management tool

    Recently I had to install adaptec CLI management tool on an ubuntu 8.10 amd64 server. Despite the fact that aacraid driver is present in kernel, it took me a lot of time to find the management tools that allow to see the RAID status and manipulate it from command line. There are several names for the tools: afacli, aaccli, afaapps, afa-apps-snmp, arcconf, hrconf... oh my!
    After I found the necessary tools (64bit arch), I packaged them into a tiny deb package adaptec-utils_0.0.1_amd64.deb, which can be downloaded from here: DELETED_AS_REDISTRIBUTION OF BINARIES_IS_PROHIBITED_BY_ADAPTEC

    Also, I wrote a simple monitoring script (included in the deb package) that checks the state of the Adaptec RAID system and sends out an email if any of the published indicators is wrong (battery, failed disks, etc). The script can be downloaded from here:
    http://skliarie.meshanet.com/skliarie_blog/adaptec-utils/adaptec_check.sh

    Note that the script requires proprietary binary files to be installed. See the beginning of the script for the details.

    25 April, 2018 08:20 AM

    17 April, 2018

    Diego Iastrubni

    כרומבוק – מחשב מיותר

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

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

    מבחינת חומרה. המסך מאוד בהיר, לא בעל רזולוציה טובה למדי… אבל הצבעים יחסית לא רעים, הרמקולים לא רעים (אני משווה אותם למחשב ThinkPad – אבל יותר מבריק וחזק). הסוללה מחזיקה בין (לפי הדיווח של מערכת ההפעלה) בין 9-13 שעות. המקלדת סבירה מינוס, הלחיצה היא יותר טובה מאשר במחשב HP שהיה לי פעם, אבל לא בגודל אמיתי (נניח 75%). אין מסך מגע, וה-trackpad נוראי וקטן.

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

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

    הטקסט המלא

    17 April, 2018 03:39 PM

    16 April, 2018

    Hamakor

    כנסים, כנסים, ופעילויות נוספות

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

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

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

    מלבד הארועים אותם אנו מארגנים, אנו לוקחים חלק גם בארועים נוספים העוסקים בקוד פתוח. כך למשל, נשתתף כמרצים בכנס Open Source World של אנשים ומחשבים, שיתקיים ב-30 באפריל.

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

    16 April, 2018 05:47 PM

    28 March, 2018

    Lior Kaplan

    Document Freedom Day

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

    אך בעוד מסמכי נייר אפשר לקרוא תמיד (למעט ענייני נזקים פיזיים), את המסמכים הדיגיטלים לא בטוח שנוכל לקרוא. יום חופש המסמכים מדבר בדיוק על החלק של "נגישים לחלוטין לכל אדם". האם נוכל לקרוא את המסמכים שהממשלה יצרה לפני 20 שנה עם Microsoft Word 6? מה לגבי מסמכים שנכתבו בשנות הש-80 וה-90 המוקדמות? (לדוגמה: מסמכי העלייה הרוסית, תיעוד שקשור למלחמת המפרץ). הבעיות כמובן גם קיימות בגרסאות מאוחרות יותר של התוכנה.

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

    לשמחתי, גם ב-Microsoft Word יש בשנים האחרונות תמיכה ב-ODF, כך שנשאר בעיקר להגדיר את הפורמט כמחייב לכל הרשויות. האם Israel State Archives – ארכיון המדינה ירים את הכפפה?

    (ה-28 במרץ הוא יום חופש המסמכים #OpenStandard #ODF )

    28 March, 2018 07:27 PM

    19 March, 2018

    Tom Bigelajzen

    Font Progress Update

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

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

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

    Links to v0.8:
    PDF file
    Illustrator CS4 File

    19 March, 2018 08:15 AM

    Ubuntu Font Hebrew Subset now has an issue on Launchpad

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

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

    I want to quote one thing he wrote:

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

    And later, Paul Sladen wrote:

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

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

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

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

    This is fun! I love Open Source.

    19 March, 2018 08:15 AM

    18 March, 2018

    Hamakor

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

    בתאריך 28.3.2018 בשעה 19:00 תכונס אסיפה כללית רגילה של עמותת המקור – עמותה ישראלית לתוכנה חופשית ולקוד – מקור פתוח (ע"ר). אסיפת העמותה תתכנס במשרדי חברת מטיפיק, במגדל משה אביב קומה 51, דרך ז'בוטינסקי 7 רמת גן.

    על סדר היום:

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

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

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

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

    18 March, 2018 06:37 PM

    06 March, 2018

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

    06 March, 2018 07:39 PM

    05 March, 2018

    Lior Kaplan

    Running for OSI board

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

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

    Full text

    05 March, 2018 09:37 AM

    25 February, 2018

    Amir Aharoni

    Wikimedia Strategy Phase 1: What Does It Mean for Me and (Maybe) for Language Diversity in Wikipedia

    The Wikimedia Foundation is leading a process to write a strategy for the Wikimedia movement. This process takes over a year. A few months ago, the conclusion of Phase 1 of this process was published: The strategic direction.

    Some central concepts in this document are “knowledge as a service” and “knowledge equity”. Some people said that it’s too vague and high-level, and that it can be interpreted in a lot of ways. This is true, especially in a movement that is as culturally and linguistically diverse as Wikimedia. Perhaps this is intentional, so that people will be able to interpret this in any way that feels right for them.

    Recently I was filling a registration form for Wikimedia Conference 2018. This form was very long, and it asked what do the concepts that appear in the strategic direction document mean to me. My answers were longish, and since there’s nothing secret about them, and they may (or may not) interest some people, I copied them from the form to this blog post. I edited them slightly for publishing here so that the context will be clearer, but the essence is the same as what I submitted.

    Knowledge as a service

    The knowledge that Wikimedia projects already contain is available through all common channels of communication: in addition to being available on the website, it must be findable on all search engines in all languages and countries, browsable on devices of all operating systems whether open or not, browsable as much as possible through social networks and chat applications, embeddable in other apps, etc.

    It must be easy for all people, whether they are knowledgeable about computers or not, to contribute their knowledge to Wikimedia sites, and humanity in general should know that Wikimedia sites is the place where they contribute their knowledge and not only learn it.

    Knowledge equity

    What it means to me is:

    • That all people, of all ages and all kinds of identities, of all countries, who speak all languages, must be able to read and write in their language.
    • That we will fight whenever it’s reasonable against censorship and against all kinds of chilling effects that deter potential contributors or threaten their well-being.
    • That we remain independent of commercial and political entities by strictly refusing to carry political and commercial advertising and to accept unreasonable limited grants.
    • That all the software that is useful for reading and writing on our sites must be easily usable in all languages, whether it’s core software, extensions, templates, or gadgets.
    • That we don’t depend on any non-Free or otherwise unethical software, even if it appears to make consuming and contributing knowledge easier.
    • That we set a goal of having good coverage for core content in all languages and actively pursue it and not leave it only to the community’s “invisible hand”.
    • That we set a goal that the most popular Wikimedia projects in each country are in that country’s most spoken languages and not in a foreign language.

    What kind of conditions do you need to realize these activities?

    Describe what you think would be good conditions for you to move forward in this direction. Think of conditions in the broadest sense; e.g., capacity, skills, partnerships, clarification, structures and processes, room for development or experimentation, financial resources, people, access to other means of support etc.

    We need to partner with academic institutions that work on topics that are not currently covered by our projects because of systemic bias.

    We need to partner more with organizations that have expertise in developing minorized and under-resourced languages, working on the ground in the countries where these languages are spoken.

    We need easy access to data about the social and political situations in poorer countries, and if such data doesn’t exist at all, we need to lead research that creates such data ourselves.

    We need a new attitude to developing software for our sites: we need to understand what do our communities actually do on the sites with gadgets and templates rather than just developing new extensions that may be shiny, but are hard to integrate into the sites, each of which is heavily customized.

    What I wrote in that form is a good description of my current attitude to what the priorities of Wikimedia movement should be, at least in terms of ideology and values. You can clearly see my interests: remembering that language support is important and that most people don’t speak English; remembering that we are not supposed to be an American non-profit organization, but an international movement that happens to have an office in the U.S.; remembering that we are also a part of the Free Software movement; remembering that good software engineering are important, even if engineering alone can’t solve all the problems.

    For people who have doubts: This post represents my own opinions, and doesn’t express the opinion of the Wikimedia Foundation or any of its employees or managers.

    25 February, 2018 06:21 PM

    Ira Abramov

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

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

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

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

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

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

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

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

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

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

    25 February, 2018 03:50 PM

    21 January, 2018

    Kaplan Open Source Consulting

    תמיכה ב-PostgreSQL

    אנחנו שמחים להכריז על שירותי ייעוץ ותמיכה ב-PostgreSQL, אחד ממסדי הנתונים בקוד פתוח המועדפים על ארגונים. אנו תומכים בהתקנות על כל הפצות הלינוקס הגדולות, אצל הלקוח או בענן, כולל פתרונות PostgreSQL-as-a-service. בנוסף, אנחנו גם תומכים ב-PostGIS, תוספת עבור מידע מרחבי בתוך PostgreSQL. השירות שלנו מגובה ע"י מרכז הכשירות של credativ, אחת מחברות המובילות בתחום ה-PostgreSQL.

    בנוסף לשירות העסקי, אנחנו שמחים להצטרף לקהילת ה-PostgreSQL הישראלית, על ידי מתן חסות לכנס PGDay 2018 שיתקיים ב-19.3.2018 (פרטים נוספים באתר http://pgday.org.il )

    21 January, 2018 10:37 AM

    16 January, 2018

    Artyom Beilis

    CppCMS עובר מ-LGPLv3 ל-MIT

    היום עדכנתי רישיון של CppCMS ל-MIT. הגרסה הקרובה 1.2 תשוחרר עם רישיון מעודכן

    ההחלטה נובעת ממספר סיבות:

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

    הטקסט המלא

    16 January, 2018 09:47 AM

    04 January, 2018

    Levi Shahar

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

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

    Full text

    04 January, 2018 09:25 AM

    27 December, 2017

    Diego Iastrubni

    העדכון הכי משמעם שיש

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

    כמה שבועות אחרי – אני משתמש בדביאן ובאובונטו ב-wayland. והאמת? זה עובד בצורה שקופה ומשעממת כל כך שצריך ממש להתאמץ ולהבין שהיה שינוי מהותי במערכת. ולא רק זה – יש תמיכה מלאה לאחור תוכניות legacy (דוגמאות – AndroidStudio/IntelliJ או popcorntime שעובדות מעל X11 ולא Wayland).

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

    כל הכבוד לצוות הפיתוח.

    הטקסט המלא

    27 December, 2017 08:18 PM

    28 November, 2017

    Lior Kaplan

    AGPL enforced: The Israeli ICT authority releases code

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

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

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

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

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

    A slide about open source from the Israeli ICT authority presentation

    A slide about open source from the Israeli ICT authority presentation

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

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

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

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

    Full text

    28 November, 2017 09:07 AM

    08 November, 2017

    Lior Kaplan

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

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

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

    מכל הדברים, שקף אחד עשה לי את היום:

    קוד פתוח ברשות התקשוב הממשלתי

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

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

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

    08 November, 2017 03:07 PM

    28 October, 2017

    Levi Shahar

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

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

    Full text

    28 October, 2017 09:25 AM

    18 October, 2017

    Ram on Agmon

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

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

    הטקסט המלא

    18 October, 2017 05:06 PM

    09 October, 2017

    Guy Sheffer

    RealtimePi – out of the box real-time RaspberryPi Raspbian

    RealtimePi logo

    RealtimePi logo

    Hey all,
    So it started as a curiosity, and it looks like its working. I made a Raspbian-based distro that ships with a realtime kernel called RealtimePi. You can download the latest here.  It’s open source, sources are here.

    A realtime system means its deterministic, it means you should know how long things take to run. They way to do is is to apply a patch to the linux kernel that makes it non-preemptible. To explain – Preemption is the act of temporarily interrupting a task being carried out by a computer system, without requiring its cooperation, and with the intention of resuming the task later.

    This is useful for building hardware and robotics, low latency audio and other gpio because there are no surprises when it comes to timing. It seems like something good to try out with the RaspberryPi, because of the GPIO and IOT capabilities.

    Bundled with CustomPiOS you can build your customized realtime-kernel device.

    Features

    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. Open newly flashed image and edit two files, one for the wifi, and one for the bot token:
    4. Put in realtimepi-wpa-supplicant.txt your wifi address (skip if using Ethernet cable). Here is how it should look:
      wifi

    You can test the realtime kernel is enabled, by running in the commandline

    uname -a

    You should see something like this, note PREEMPT RT which indicates its realtime:

     Linux realtimepi 4.9.52-rt37 #1 PREEMPT RT Fri Oct 6 22:29:28 UTC 2017 armv6l GNU/Linux

    The line should  look a little different for armv7

    I am not an expert with actually building realtime systems, so input on how it preforms, and examples would be appreciated!

     

    Full text

    09 October, 2017 10:05 AM

    03 October, 2017

    Meir Kriheli

    מצגת ההרצאה אודות Vue.js

    Vue.js החזירה את הכיף שנעלם לי בפיתוח פרונטאנד.

    ההרצאה אודות Vue.js שהועברה במסגרת PyWeb-IL 69 זמינה בעמוד הרצאות ומצגות.

    03 October, 2017 06:39 AM

    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:
        wifi
      2. In config.ini,  paste the newly created bot token from step 3. This is where the token goes:
        token
      3. optionally, you can change the alarm.mp3 file to the sound of your choice.
    5. Boot your pi and connect it to speakers, wait a bit, because it will reboot internally twice. And send /start to your bot.
    6. You’re done! Let’s see how we can set alarm with telegram!

    How to use the telegram bot

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

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

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

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

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

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

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

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

    You can test the alarm using the /test command.

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

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

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

    As always, code contribute are appreciated!

    Full text

    14 August, 2017 11:01 AM

    31 July, 2017

    Ira Abramov

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

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

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

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

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

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

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

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

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

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

    שו"ת

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

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

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

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

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

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

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

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

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

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

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

    31 July, 2017 04:51 PM

    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

    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

    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:

    Diversity

    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.

    Budget

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

    Income

    Sponsorship: 246

    Ticket sales: 54

    Total: 300

    Expenses

    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:

    2017

    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

    sml

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

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

    הטקסט המלא

    12 August, 2016 04:42 PM