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

21 October, 2018

Lev Meirovitch

Linux new Code of Conduct

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

21 October, 2018 05:26 AM

20 October, 2018

Lev Meirovitch

How not to protect your app

Examples of several wrong ways to make your app secure

20 October, 2018 01:51 PM

18 October, 2018

ik

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

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

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

התחלה

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

טעויות בכניסה לקוד/פרויקט קיים

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

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

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

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

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

הדרך שלי ללמוד

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

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

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

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

רכיבים קטנים

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

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

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

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

עבור מה השיטה לא מתאימה?

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

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

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

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

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

18 October, 2018 11:48 AM

07 October, 2018

Oz Nahum

backup and restore with duplicity

Duplicity backup utility is the old workhorse in all recent Ubuntu versions. I use the GUI called Deja-Dup for quite a while now. But until now I never bothered to check how to restore my files. I did decide to check how to restore file, because backup is only half the job! It turns out, that the GUI does a disservice for duplicity users. Restoring an encrypted backup turned out to not work. I didn't bother to research why, and turned to the CLI. This is a reminder on how to restore the files. continue reading...

07 October, 2018 11:36 AM

02 October, 2018

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

02 October, 2018 12:33 PM

01 October, 2018

Guy Sheffer

How to build a telegram-controlled sous vide using CraftBeerPiOS

Sous vide pot with tempreture sensor

Sous vide pot with temperature sensor

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

No soldering required!

Flash a ready made image to the Pi!

Bill of materials

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

Assembly

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

    Relay assemply

    Relay assembly – brown writes is phase

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

    Relay in its case and power sockets in place

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

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

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

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

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

Rasepberrypi and relay in cases

Sous vide pot with tempreture sensor

Sous vide pot with temperature sensor

Software

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

Why telegram? (which is optional)

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

Anyway,

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

    Setting a new bot

    Setting a new bot

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

    Set wifi setting you need to change

    Set wifi setting you need to change

  4. [optional telegram] Add your telegram token

    config.ini setting

    config.ini, Telegram token goes here

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

    CraftBeerPi all set up with a thermometer and relay

    Hardware setting in craftbeerpi

    Hardware setting in craftbeerpi

    Screenshot_20180929_121241.png

    How the kettle configuration looks

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

    CraftbeerPiBot access control

    CraftbeerPiBot access control

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

    Sous vide bot list of commands

    Sous vide bot list of commands

Thats it, enjoy! Share recipes!

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

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

Full text

01 October, 2018 06:07 PM

25 September, 2018

Hamakor

אוגוסט פינגווין 2018 — יש כרטיסים!

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

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

להתראות בכנס!

25 September, 2018 08:44 AM

22 September, 2018

Hetz Ben Hemo

לבנות מחשב בזול

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

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

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

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

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

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

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

בואו נתחיל.

מעבדים
בעקרון, אני ממליץ על 2 סוגי מעבדים:

  • מעבד Athlon 200GE. השם אולי מוכר לותיקים אך זהו אינו מעבד עם הארכיטקטורה הישנה. AMD פשוט החליטה להשתמש בשם Athlon למעבדי בגיזרת ה-Value. מעבד זה מכיל 2 ליבות ו-4 נימים, הוא רץ במהירות 3.2 ג'יגהרץ, ויש לו 5 מגהבייט זכרון מטמון. הוא גם כולל בתוכו יחידת עיבוד גרפית עם 3 יחידות עיבוד (CU), כלומר המעבד גם נותן לנו פתרון לתצוגה. זהו מעבד שמתאים יותר למשתמשים שרוב הזמן גולשים בדפדפן, אופיס, ודברים משרדיים אחרים. עלות: 60$
  • מעבד Ryzen 2400G: זהו מעבד ה-Ryzen 5 של AMD שכולל GPU בתוכו שמשתווה בערך לכרטיס GTX 1050 של nVidia. מעבד זה מתאים לאלו שרוצים להריץ משחקים על מסך עם כמות פריימים טובה ברזולוציות עד 1920X1080. המעבד כולל 11 יחידות גרפיות (CU), כ-4 ליבות ו-8 נימים והוא רץ במהירות של עד 3.9 ג'יגהרץ (למעוניינים, אפשר לבצע Overclock). מחיר: 159$

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

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

במקרה הזה ההצעה שאני ממליץ עליה היא זכרון של Corsair Vengeance LPX 8G– אלו 2 מקלות של 4 ג'יגהבייט זכרון המחיר: 80$ (סתם שתדעו, המחיר הכי זול למקל יחיד של זכרון 4 ג'יגה בארץ הוא 200 שקל, ופה אתם מקבלים KIT של 2, אז תעשו חשבון כמה אתם חוסכים). אם אתם רוצים 16 ג'יגהבייט זכרון, אז ה-KIT הזה של Patrior עולה 140$. לדעתי – שווה.

לוח אם:
מכיוון שמדובר במחשב לילדים, ניקח לוח אם פשוט מבוסס Chipset מסידרה A320 של AMD. הלוח שאני ממליץ עליו הוא GIGABYTE GA-A320M-S2H. הלוח הזה כולל כל מה שתרצו למחשב: יש כניסות VGA/DVI/HDMI, יש כניסת רשת 1 ג'יגהביט, יש תושבת M.2 להכנסת מקל אחסון, יש 4 כניסות SATA-3, יש תושבת PCIe X16 להכנסת כרטיס גרפי בהמשך, וגם 2 תושבות PCIe X1 להכנסת ציודים אחרים (כרטיס רשת יותר טוב?) – בקיצור, כל מה שצריך מלוח אם למשתמש ביתי. המחיר: 50$.

הערה: המאוורר מגיע בתוך הקופסא של ה-CPU. יש מאווררים שונים ל-Ryzen ול-Athlon, והחומר הטרמי נמצא בקופסא.

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

על מנת שלא להעביר כבלים של SATA ואחר כך להתבלבל מה הדיסק הראשוני ומה השני ב-BIOS, בחרתי בגירסת המקלון M.2, כך שכל מה שצריך זה להכניס לתושבת, להבריג – וזהו. 2 ההצעות הם M.2 SATA, לא NVME.

דיסק קשיח
במקרה של דיסק קשיח, לפעמים 500 ג'יגהבייט של SSD יכול בהחלט להספיק, אולם לפעמים עדיף לרכוש גם דיסק קשיח מכני. המחירים זולים ואפשר לאכסן יותר מידע, ואם משתמשים בתוכנת Macrium Reflect החינמית ב-Windows – אפשר לגבות אחת לשבוע את ה-SSD לתוך הדיסק הקשיח, גיבוי זה תמיד טוב.

לגבי דיסק קשיח, ההמלצה שלי היא על דיסק 2 טרהבייט של Seagate 2TB BarraCuda – הוא גם מהיר (7200 RPM), והוא גם זול: 60$.

ספק כח:
אחד הדברים החשובים במחשב הוא ספק כח טוב. אני ממליץ על EVGA 500 W1. אני משער שרבים יאמרו ש-500W זה מוגזם, אבל לעניות דעתי כדאי לחשוב קדימה, למצבים שבהם יהיה צורך להוסיף GPU למשחקים רציניים (כי הילד רוצה). המחיר, בכל מקרה, זול: 33$.

מארז למחשב
בסופו של דבר, צריך להכניס את את למארז, וכאן אני דווקא פחות ממליץ על אמזון. מבדיקה שעשיתי, גם אם תבחרו מארז זול, המשלוח יהיה יותר יקר מרכישה בארץ. אם מדובר במחשב לילד עם Athlon שאתם לא הולכים להוסיף לו GPU בקרוב, אז KSP מוכרים בארץ גנרי ב-159 שקל שכולל ספק כח צנוע גנרי. לעומת זאת, אם המחשב יורחב בעתיד, כדאי או לקנות מארז ללא ספק ולרכוש את הספק באמזון, או לחפש עיסקת חבילה שכוללת ספק 500W ומארז טוב, ומכיוון שיש הרבה סוגי מארזים, אז זה עניין של טעם ותקציב.

מאווררים:
בד"כ כל מארז מגיע עם 2 מאווררים (אחד מקדימה למטה ואחד מאחור למעלה), ויש מקרים שלא מגיעים מאווררים. איוורור במחשב הוא חשוב מכיוון שמחשב מוציא חום וצריך לשאוב אויר מבחוץ ולהוציא את האוויר החם. אפשר לרכוש מחנות המחשבים (אם אין במארז מאווררים) 2 מאווררים למחשב, אולם אם רוצים שקט אז אני יכול להמליץ על המאווררים ARCTIC F12 Silent שעולים $9 לחתיכה או Noctua 120mm שעולים אמנם כפול (כמעט $20), אבל הם הכי שקטים והכי אמינים שיש כיום בשוק. כלל אצבע: עדיף שיהיו 2 מאווררים מקדימה (בתצורת PULL) ואחד מאחור (בתצורת PUSH). למי שלא מכיר מה הכוונה PUSH/PULL, הוידאו הזה יסביר מה הכוונה.

סך הכל מחירים:

  • מחשב בסיסי (אופיס/ילדים, ללא GPU): המחיר (ללא משלוח ומע"מ): 411$.
  • מחשב לילדים/עבודה בסיסית/משחקים: $600.

הערות:

  • יהיו לא מעט אנשים שיעדיפו לקנות מקומית את הכל מכאן, ולחסוך משלוחים וכו', שזה לחלוטין לגטימי, אולם כדאי לזכור שעל דברים כמו SSD, מעבדים, זכרון וכו' – המחירים בחו"ל דינמיים ובארץ הם בקושי זזים למטה.
  • הפרטים הקטנים: הלוחות אם שמייבאים לארץ, במקרים רבים חסר בהם דברים. כך לדוגמא אני ציינתי בפוסט זה לוח מבוסס A320 Chipset. מה שמייבאים לארץ (בדקתי ב"זאפ") זה את הגירסה ללא M.2 (ובמחיר הרבה יותר גבוה מ-50$). גם מחירי המעבדים בארץ לא ממש מתעדכנים ו-AMD מורידה מחירים תכופות. אגב, מעבד ה-Athlon שהזכרתי? אין בארץ כרגע. הוא יהיה זמין בעוד חודש או חודשיים.
  • לחברות ועסקים שרוצים לקנות מחשבים לעובדי החברה: מחשבים שהם מבוססי Ryzen עולים בין 100-150$ פחות ואתם מקבלים יותר ליבות.
  • אם אתם רוצים ללכת על מעבדי אינטל: באינטל מציעים חבילה הכוללת "SSD" בגודל 16-32 ג'יגה ללא תשלום נוסף (כביכול, זה כבר מגולם במחיר המעבד). ממליץ לוותר מכיוון שהתועלת של SSD כזה מול כל SSD אחר בגודל של 250 ג'יגה – לא קיימת. עדיף לרכוש SSD או כ-M.2 או כ-SATA רגיל.
  • תוכנה שמאיצה את הביצועים בכך שהיא מעבירה אוטומטית חלקים מדיסק ישן ל-SSD ובכך מאיצה את ה-Boot: רוב התוכנות המסופקות עם היצרנים (אני לא מדבר על התוכנה להעתיק מדיסק קשיח קטן ל-SSD) הן תוכנות די גרועות. אני ממליץ על תוכנה בתשלום של 30$ שנקראת Primo Cache וגירסת נסיון שלה ניתנת להורדה כאן.
  • מערכת הפעלה Windows 10 עולה לרכישה כקופסא כ-500-600 שקלים בארץ ואופיס עולה 600-700 שקל. טריק "אפור" שיש הוא לרכוש את התוכנות ב-eBay בדולרים ספורים. מיקרוסופט לא תזנק עליכם עם שוטרים אם תרכשו, אבל יכול להתרחש מצב שבהמשך הדרך מספר הרשיון שלכם פתאום יפסיק לפעול (אתם יכולים לפנות למי שקניתם ב-eBay, סביר להניח שהוא יתן לכם מספר חדש).

 

הטקסט המלא

22 September, 2018 03:28 PM

21 September, 2018

Oz Nahum

blogit - new release

After a long development hiatus I am releasing a new version of blogit continue reading...

21 September, 2018 09:39 AM

18 September, 2018

Hetz Ben Hemo

תכירו את IPFS

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

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

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

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

לפתרון קוראים IPFS, והפתרון הזה שואב השראה הן מ-BitCoin והן מה-Bittorrent. אפשר לקרוא את הפרטים הטכניים ואיך להשתמש בזה כאן.

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

עם IPFS, הדברים שונים. אם לדוגמא מאן דהוא רוצה להעלות קובץ WORD או קובץ PDF או קובץ HTML (לא ניתן להשתמש ב-PHP או שפות אחרות ולא ניתן להעלות קבצים או תוכן דינמי) או תמונות. מהרגע שמשתמשים ב-Client להעלות תכנים, התוכנה יוצרת שורת טקסט שנקראת hash. ה-hash הזה מייצג בעצם היכן נמצא התוכן. ב-IPFS כל התוכן מבוזר בשיטת Peer to peer (כמו ביטורנט), כך שהורדה של מכונה שמאחסנת את התוכן לא תעזור מכיוון שהחומר נמצא במכונות אחרים שמארחים תוכן IPFS. הגולשים המעוניינים לגשת לתוכן, יכולים להשתמש באחד משרתי ה-Gateway כדי לקבל את התוכן. לדוגמא: אם נכנסים לכתובת https://ipfs.io/ipfs, יש להזין בסוף את ה-hash שקיבלנו (לדוגמא: https://ipfs.io/ipfs/Qmaisz6NMhDB51cCvNWa1GMS7LU1pAxdF4Ld6Ft9kZEP2a ) ואז נקבל את התוכן. אם מישהו ינסה דרך בית המשפט לחסום לדוגמא את הכתובת ipfs.io, אז לצערו של התובע יש עשרות Gateways ורק לאחרונה גם Cloudflare החליטה להיכנס לתחום ה-IPFS והם מציעים Gateway משלהם, כך שלהסיר תכנים זה כמעט בלתי אפשרי. כמובן ש-IPFS זה סיוט ענק ליצרני תכנים מסחריים (סרטים, סדרות, תוכנות מסחריות) אבל סביר להניח שהם ינסו לנקוט בשיטת ה"תבע את המוריד תכנים".

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

רוצים דוגמא? הנה תמונה שהעליתי ל-IPFS. לחצו על הלינק כאן.

הטקסט המלא

18 September, 2018 11:27 AM

15 September, 2018

Ilya Sher

AWS CloudFormation became a programming language

… kind of.

Declarative has its advantages which are hyped all over the internet so I’ll skip that part. The painful downside of declarative approach is often the expressivity. Sample proofs:

Now you can have Python embedded in your CloudFormation file. That is part of the CloudFormation Macros which were introduced on 2018-09-06.


Happy coding, everyone!

 

15 September, 2018 05:07 AM

13 September, 2018

Hamakor

אוגוסט פינגווין 2018

שלום לכולם,
ההכנות לאוגוסט פינגווין 2018 מעלות הילוך!
רוצים לקחת חלק? הקריאה למרצים נפתחה!

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

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

אנחנו מתרגשים לפתוח את הקול הקורא לכנס.

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

הקול הקורא ייסגר בתאריך 4.10.2018
ההרצאות ייבחרו ויפורסמו עד לתאריך 18.10.2018
גם ההרשמה תפתח בשבועות הקרובים

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

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

ישנם גם מספר תפקידים פתוחים בצוות הארגון
(להגשת מועמדות מוזמנים לשלוח מייל ל: august@hamakor.org.il):

מחכים להצעות שלכם,

ועד המקור וצוות ארגון הכנס

13 September, 2018 07:00 AM

12 September, 2018

ik

הגדרות שגויות לnvim

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

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

איזה סופ"ש אחד החלטתי לפתוח קוד Go שלי ולהמשיך ולעבוד עליו.
פתאום קיבלתי המון שגיאות לא קשורות לקוד שלי, אלא לvim-go.
אמנם עברו 3 חודשים מאז שהתחלתי לכתוב את הקוד בזמני הפרטי, אבל מה השתנה?!
הלכתי לפי הודעות השגיאה (בvim/nvim זה ‎:messages), וגיליתי שפונקציה לא קיימת עבור nvim. הלכתי לספריה ש vim-plug מתקין לי תוספים עבור nvim, ועם rg‏ (ripgrep) חיפשתי את הפונקציה ומצאתי אותה. מסתבר שקובץ חדש בשם config.vim לא נטען. אמממ, אבל הוא קיים בספריה.

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

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

set runtimepath+=~/.vim,~/.vim/after
set packpath+=~/.vim
source ~/.vimrc

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

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

לאחר ביצוע פעולה כזו, הכל עבד חלק 🙂

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

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

12 September, 2018 06:32 AM

10 September, 2018

Ilya Sher

What I did not steal from Perl 6

I’m curious about programming languages. Not because I’m creating one right now. I always was. This post is about ideas and features that I have seen in Perl 6 and found interesting. If you are curious about programming languages in general, you should take a look at these.

There are various reasons for not stealing the interesting ideas from Perl 6:

  1. I’m trying to keep number of concepts in NGS as small as possible. If I’m not seeing huge immediate value in a concept – I skip it.
  2. Not taking anything that I think can confuse me or other programmers. I’m not talking here because someone is a beginner. I’m talking about confusing concepts.
  3. Simply because I don’t have enough resources to implement it at the moment.

Here are the interesting Perl 6 features, in no particular order (except the first one). There are also my comments whether I would like the feature in NGS or why not.

  1. Syntax. Very expressive an terse. Perl6 has even more of it than Perl 5. Now that we got rid of the $ and friends in the room:
  2. Grammars. Would actually be nice to have something like that in NGS.
  3. Lots of operators. The most interesting concept is Metaoperators. I’m trying to keep the amount of syntax elements in NGS relatively low. There are already two syntaxes in NGS: commands and expressions. Not taking more syntax without serious need.
  4. How the “pointy block” syntax mixes with “for” syntax: for @list -> @element . NGS already has several syntaxes for Lambdas.
  5. Flow control
    1. when” flow control. The closest NGS has is “cond” and friends, stolen from Lisp.
    2. repeat while / repeat until . It would be nice to have something like that in NGS.
    3. once . Not sure about this one. The functionality might be needed.
  6. Slips. The behaviour is frightening me: if it does expand, how do I pass a Slip if I just want to pass it, say as an item of an array? NGS uses syntax for slips: [1, 2, *myitems, 3, 4] which I think is cleaner. You know you can’t pass it because it’s syntax.
  7. .WHAT method. I stole something similar from Ruby: the inspect method.

As a special note, I have seen a welcome change from $arr[0] to @arr[0] . I think it removes confusion. (That was Perl 5 vs Perl 6).

Please don’t be offended if you are a Perl 6 hacker and you see that there is amazing feature that I have not mentioned. It could be that I’ve seen this in several other languages already or maybe I did not find it interesting or … maybe I just missed it. Don’t hesitate to leave a comment anyway.


Happy coding, in whatever language rocks your boat! Except for bash. Coding in bash will never be happy.

10 September, 2018 06:50 AM

06 September, 2018

Kaplan Open Source Consulting

סדנאות QGIS

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

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

אורך הסדנא הוא כ-4 שעות בשעות הבוקר. מועדי הסדנא הקרובים באזור תל אביב: 12/10, 26/10, 16/11, 30/11, 14/12 ו-28/12.

התעניינות ורישום בטופס: https://goo.gl/forms/2T7kE7T7zDZpGPLZ2

06 September, 2018 10:16 AM

Omer Zak

Do material design icons fail to show in your Cordova/Vue/Vuetify/Android application?

When developing an Android application using Cordova 8.0.0 with Vue and Vuetify, I noticed that the beautiful material design icons do not show as expected.

There were two problems.

Problem 1: ligature transformations in Android’s WebView

Ligature transformations did not work in Android’s WebView, so instead of icons one sees text strings.

To fix it, I had to substitute '' for 'keyboard_arrow_up' and similar substitutions for other icons. This list of icon names and the corresponding codepoints can help.

Problem 2: missing glyph indicators

After getting rid of the text strings, instead of beautiful icons I got missing glyph indicators.

Turns out that the css file generated by the build process (npm run build followed by cordova build android) expects the font files containing the icon glyphs to be found in android_asset/www/dist/static/css/static/fonts, but they were actually located in android_asset/www/dist/static/fonts.

The fix is to use a Cordova hook script to transform the relevant links in the css file.

There are two possible locations for the hook script.

  1. Drop it into the ./hooks/before_build/ subdirectory.
  2. Specify its location in ./config.xml.

I am not very experienced with the platform, so I chose the first location.
Due to a similar reason (inexperience with node scripts), I wrote it quickly as a /bin/bash shell script.
Here it is in its full glory:

#/bin/bash
echo ============================================
echo Fix paths to font files in Android css files.
echo ============================================
CSSFILES=$1/www/dist/static/css/*.css
echo The relevant css files are: ${CSSFILES}
mkdir -p /tmp/fixcssfiles
rm -v /tmp/fixcssfiles/*
for cssfname in ${CSSFILES} ; do
  #cp ${cssfname} /tmp/fixcssfiles/`basename ${cssfname}`
  #                            # (Save a backup css file)
  sed 's=url(static/fonts/=url(../fonts/=g' < ${cssfname} \
                             > /tmp/fixcssfiles/tmpcssfname
  mv /tmp/fixcssfiles/tmpcssfname ${cssfname}
  echo Procssed ${cssfname}
done
echo ============================================

After adding the script, I got to see the material design icons when running the Android application.

06 September, 2018 02:46 AM

24 August, 2018

Itzik Kotler

Were You Attacked Today With Yesterday's Hacking Technique?

We’re all familiar with the idea of recycling as a means of reducing the waste stream. Most of us are in the habit of separating our paper, plastic, glass and metal trash from other garbage. What you may not know is that recycling is a major trend in the hacker community, too. Many of the data breaches that have struck in recent years were accomplished using software that has been around for a long time -- today’s hack, yesterday’s technique.

Tools that have been proven effective at fooling users and sneaking past network defenses are regularly reused by hackers. Whether the software was developed specifically for hacking or as a tool with a legitimate purpose that has been adapted for a less savory one, the hacker community has become expert at extracting value from what already exists. As with commercial software development, it takes time and money for hackers to write and test their code, and in order to maximize their profits, it makes sense to recycle what works. Often, these tried-and-true products are packaged and sold to others, furthering their potential to do harm.

Read the full article at Forbes here

Full text

24 August, 2018 03:51 AM

22 August, 2018

Diego Iastrubni

הרצאה בקבוצת Haifa::C++

קודם כל, מסתבר שלחיפאים יש קבוצה שנפגשת פעם בחודש, ומדברים על C++. החודש העברתי הרצאה אודות Qt5. מי שנמצא באיזור מוזמן למפגשים שלהם: https://www.meetup.com/Haifa-CPP/

השקפים (וקוד לדוגמה) זמין כאן:

https://github.com/elcuco/qt-lecture-2018-08/

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

הטקסט המלא

22 August, 2018 04:14 PM

21 August, 2018

Guy Rutenberg

Compiling CHDK on Debian

A quick cheatsheet for compiling CHDK on Debian

$ sudo apt install gcc-arm-none-eabi
$ svn co https://tools.assembla.com/svn/chdk/trunk chdk
$ make PLATFORM=sx710hs PLATFORMSUB=101a OPT_USE_GCC_EABI=1 firzipsubcomplete

The resulting firmware will be under bin/.

21 August, 2018 06:36 PM

11 August, 2018

Guy Rutenberg

Lens calibration workflow for Canon PowerShot SX710HS

CHDK adds a RAW shooting option to many point and shoot cameras, including Canon PowerShot SX710HS. As the camera does not apply lens correction automatically for RAWs, one has to fix lens distortion when developing the RAWs. Lensfun is the go-to place for FOSS lens correction, however it did not have lens correction data for the SX710HS. So I’ve decided to calibrate the lens myself.

The Lensfun tutorial for lens calibration is quite cumbersome. It directs you go out and shoot some buildings with straight lines, and then manually track those lines in Hugin and extract the distortion parameters. Well, after searching a bit, I came up with what I think is a better workflow.

I’ve started by creating in Inkscape (using the Cartesian grid tool) and printing a page with regularly spaced horizontal lines. I’ve printed it on an A3 paper, but in hindsight A4 would have worked just the same and is more available. I’ve placed the paper on the floor, added some simple lightning and and placed a paperclip in the middle just to make focusing easier.

Next I’ve took several shoots at each focal length, having the printed lines parallel to the long side of the image. To make sure I’m covering the entire zoom range consistently, I’ve used my set_zoom script. I’ve taken calibration shoots in 0 (minimal focal lenght), 5, 10, 20, … ,100, 110 and 111 (maximal focal length) zoom steps. After taking all the shots, I’ve copied the DNGs (CHDK saved RAWs as DNGs) from the camera, and used exiftool to sort them into directories by focal length:

$ exiftool '-directory<${FocalLength;}' *.DNG

As we will use Hugin, for the calibration and Hugin does not support DNGs, we have to convert them to TIFFs.

find -name "*.DNG" | xargs --verbose -P6 -I{} dcraw -t 0 -T {}

The -t 0 is used to remove the orientation info from the TIFFs. As I shoot the pictures with camera pointing straight down, that info is many times incorrect and messes up the calibration in Hugin.

Load each set of TIFFs of a given focal length into Hugin Lens Calibration GUI. Make sure the focal length and focal length multiplier are correct (for some reason Hugin was off by 0.01-0.02 sometimes), and use the “Find lines” button to automatically detect straight lines. Next optimize the radial distortion parameters. Those a, b and c parameters are the numbers Lensfun needs.

Hugin Lens Calibration GUI, after line detection and optimization.
Hugin Lens Calibration GUI, after line detection and optimization.

The next step is to create a Lensfun profile for the camera. The basic blocks are the <camera> tag and the <lens> tag. Both are mandatory, even thought the camera has a fixed lens. For each focal length we calibrated the lens for, we add a <distortion> tag, modifiying the focal and the a, b and c parameters according to the values from the calibration GUI.

<lensdatabase version="1">
    <camera>
        <maker>Canon</maker>
        <model>Canon PowerShot SX710 HS</model>
        <model lang="en">PowerShot SX710 HS</model>
        <mount>canonSX710HS</mount>
        <cropfactor>5.6</cropfactor>
    </camera>
    <lens>
        <maker>Canon</maker>
        <model>Canon PowerShot SX710 HS & compatibles, with CHDK's DNG</model>
        <model lang="en">fixed lens, with CHDK's DNG</model>
        <model lang="de">festes Objektiv, mit CHDK-DNG</model>
        <mount>canonSX710HS</mount>
        <cropfactor>5.6</cropfactor>
        <aspect-ratio>4:3</aspect-ratio>
        <calibration>
            <distortion model="ptlens" focal="4.5" a="0.03396" b="-0.11175" c="-0.01779" />
            <distortion model="ptlens" focal="5.5" a="0.03289" b="-0.11253" c="0.02444" />
            <distortion model="ptlens" focal="6.6" a="0.02218" b="-0.08388" c="0.03521" />
            <distortion model="ptlens" focal="9.5" a="0.01211" b="-0.04143" c="0.02055" />
            <distortion model="ptlens" focal="13.5" a="-0.0022" b="0.00264" c="-0.00558" />
            <distortion model="ptlens" focal="18.2" a="-0.00212" b="0.00441" c="-0.00378" />
            <distortion model="ptlens" focal="23.4" a="0.00328" b="-0.01242" c="0.01298" />
            <distortion model="ptlens" focal="29.1" a="-0.00036" b="-0.00082" c="0.00209" />
            <distortion model="ptlens" focal="36.2" a="0.00129" b="-0.00626" c="0.00705" />
            <distortion model="ptlens" focal="46.3" a="0.00715" b="-0.02588" c="0.0244" />
            <distortion model="ptlens" focal="46.3" a="0.00715" b="-0.02588" c="0.0244" />
            <distortion model="ptlens" focal="62.9" a="0.00067" b="-0.00852" c="0.01085" />
            <distortion model="ptlens" focal="92.0" a="-0.00306" b="0.00016" c="-0.00374" />
            <distortion model="ptlens" focal="128.7" a="-0.0037" b="0.00365" c="-0.00582" />
            <distortion model="ptlens" focal="135.0" a="0.00333" b="-0.02616" c="0.03388" />
        </calibration>
    </lens>
</lensdatabase>

The lens’ model name follows the Lensfun convention for CHDK. However, it makes auto-detection of the lens to fail in many application such as Darktable. You can workaround it by copying exactly the model name from the <camera> tag. The xml file itself should go in ~/.local/share/lensfun.

The two pictures in the beginning of the post show some examples of uncorrected and corrected photos using the newly acquired calibration data.

11 August, 2018 12:15 PM

09 August, 2018

Gilad Ben-Yossef

דו"ח נתיחה שלפני המוות

רשום:

בדיו על דף נייר, שחור על גבי לבן.

בכתב ידו של רופא, בעט נובע.

בפוספור זרחני של מסך מחשב.

סיבת מותו של הגווע -

לידה.

ובינתיים, אני כאן.

ואיזה יופי שפגשתי אותך.

09 August, 2018 04:46 AM

03 August, 2018

Diego Iastrubni

כרומבוק – מחשב מיותר – חלק 2 – לינוקס

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

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

אני החלטתי להמשיך עם הטלאה.

  1. העברת המחשב למצב מפתח. מכבים את המחשב, ולפני שלוצים מחדש על כפתור הדלקה לוחצים על מרשים escape + reload (המקש F3 או, הרביעי בשורה הראשונה). זה ימחק את כל הנתונים שעל הדיסק – ראה הוזהרת.
  2. המחשב יעשה אתחול יהיה מסך לבן שאומר שהמחשב במצב לא מוגן. אחרי 30 שניות הוא ייסגר, או אפשר ללחוץ control+d כדי לסגור מיידית.
  3. לאחר שהמחשב עלה, צריך לעשות login (אפילו בתור משתמש אורח). מפעילים מסוף, ואז לכתוב shell כדי לקבל מסוף מלא של לינוקס.
  4. כעת מפעילים בשורת הפקודה (מתוך התיעוד):
    cd; curl -LO
    https://mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh
  5. כשיתקבל תפריט – יש לבחור 2 – BOOT_STUB  ובכך נשמור את האופציה להפעיל גם ChromeOS.
  6. המחשב יופעל. ראה סעיף 2.
  7. כעת צריך להתקין מערכת הפעלה חדשה. נעשה את זה בעזרת chrx. חוזרים על סעיף 3  ומקבלים מסוף.
  8. במקום כותבים (תיעוד מלא כאן):
    cd ; curl -Os https://chrx.org/go && sh go
  9. במסך הלבן – אם נלחץ control+D נקבל ChromeOS ואם נלחץ control+T נקבל את מערכת ההפעלה שהתקנו.

לגבי בחירת מערכת ההפעלה:

  1. ברירת המחדל היא GalliumOS. היא מערכת הפעלה מבוססת אובונטו, ו-XFCE. היא משופצת בצורה עזרת שכל החומרע נתמכת, כל המקישים עובדים. אבל היא לא התאימה לי. לדוגמה – היא לא יודעת להתמודד טוב עם חיבור אל טלויזיה (המסך החיצוני לא מתחבר כברירת מחדל, והקול לא עובר לשם). הדברים האלו פתירים, אבל לא בא לי להתעסק עם זה בשורת פקודה (צריך להגיד ל־pulse audio לשנות sync). בנוסף – הכפתור שמחפש יישומים (איפה שה־caps lock היה אמור להיות) לא עושה כלום.
  2. ניסיתי אובונטו. הוא ייפתור את בעיות השימושיות שהיו לי ב־GalliumOS. הבעייה כאן היא שלמשל כרטיס הקול לא משמיע לי כלום. הקיצורים של המקשים לא עובדים כולם בצורה טובה (חלק מהם עובדים כמקשי פונקציות – חלק לא).

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

apt dist-upgrade

וקיבלתי מערכת חדשה.

ו… שוב כרטיס הקול לא עובד. הוא עובד אך ורק עם הקרנל של GalliumOS. כמו כן… גיליתי שאם אני משאיר את ה-SDCard המערכת מנסה לעשות boot ממנו… ולא הצלחתי לשכנע את המערכת לעלות ישירות אל אובונטו. אז ה-ritual שלי בעת הפעלת המחשב: תלחץ control+l (כדי לא להעלות ChromeOS) ואז תבחר ב-2 (כדי שיעשה boot מהדיסק הפנימי) ואז ב-grub לבחור את הקרנל המתאים (את זה דווקא אני יודע לפתור).

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

הטקסט המלא

03 August, 2018 01:27 PM

02 August, 2018

Gabor Szabo

CPAN - Number of visits

For the full article visit CPAN - Number of visits

02 August, 2018 07:57 AM

31 July, 2018

Lior Kaplan

Debconf18 – יום ראשון

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

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

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

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

31 July, 2018 02:40 PM

30 July, 2018

Gilad Ben-Yossef

Mission Impossible

I shall walk the path of the warrior,

my arms bare, all defenses down.

I shall take refuge in pestilence,

my weakness shall be my guide.

Like a great spy I shall set out to steal a secret,

so well known it is forgotten.

This Dharma will self destruct in 3 2 1…

<<silence>>

30 July, 2018 04:50 AM

29 July, 2018

Lior Kaplan

Debconf18 – קדם כנס

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

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

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

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

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

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

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

29 July, 2018 04:17 PM

18 July, 2018

Omer Zak

Android unit testing and Mazer Rackham

כבר אמר מייזר רקהאם (“המשחק של אנדר”) שאין מורה כמו האוייב.
נזכרתי בזה במהלך המלחמה שלי בבניית בדיקות יחידה לאפליקציה לאנדרואיד בסביבת הבדיקה של API 24 והלאה.
Mazer Rackham (“Ender’s Game”) said: There is no teacher but the enemy.
I was reminded of this during my war of building unit tests for an Android application in the testing environment of API 24 and later.

18 July, 2018 11:18 AM

10 July, 2018

Rabin Yasharzadeh

Overwrite the default GTK theme per application

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

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

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

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

And do this small change, prefix the application

Exec
command with
env GTK_THEME=theme_name

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

10 July, 2018 12:24 PM

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

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

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

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

07 May, 2018

Meir Kriheli

מצגת ההרצאה NoORM

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

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

07 May, 2018 09:26 PM

25 April, 2018

Arie Skliarouk

GRUB-based multiple iso booting flash drive

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

GRUB to the rescue!

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

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

    Caveats:

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

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

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

    25 April, 2018 08:21 AM

    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

    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

    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

    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

    28 November, 2017

    Lior Kaplan

    AGPL enforced: The Israeli ICT authority releases code

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

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

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

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

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

    A slide about open source from the Israeli ICT authority presentation

    A slide about open source from the Israeli ICT authority presentation

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

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

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

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

    Full text

    28 November, 2017 09:07 AM

    28 October, 2017

    Levi Shahar

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

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

    Full text

    28 October, 2017 09:25 AM

    18 October, 2017

    Ram on Agmon

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

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

    הטקסט המלא

    18 October, 2017 05:06 PM

    03 October, 2017

    Meir Kriheli

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

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

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

    03 October, 2017 06:39 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

    18 June, 2017

    Amir Aharoni

    סיסמה

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

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

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

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

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

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

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

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

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

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

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

    18 June, 2017 11:03 AM

    13 January, 2017

    Ram on Agmon

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

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

    הטקסט המלא

    13 January, 2017 12:10 PM

    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