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

07 February, 2016

Dan Fruehauf

Spanning files over multiple smaller devices

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

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

Things to consider are:

LVM/ZFS over a few HDs

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

tar | split

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

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

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

Span Files

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

The utility is available here:

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

07 February, 2016 11:33 AM

06 February, 2016

Gabor Szabo

Switching Gears? Changing direction?

I have been struggling with what I am doing for quite some time. I keep seeing the evidence that the user-base of Perl is shrinking. While you can't see from these numbers, but the Perl Maven has not gaing more readers since February 2015. But I still love to explain stuff about Perl.

For the full article visit Switching Gears? Changing direction?

06 February, 2016 11:30 AM

Shlomi Noach

MySQL Community Awards 2016: Call for Nominations!

The 2016 MySQL Community Awards event will take place, as usual, in Santa Clara, during the Percona Live Data Performance Conference, April 2016.

The MySQL Community Awards is a community based initiative. The idea is to publicly recognize contributors to the MySQL ecosystem. The entire process of discussing, voting and awarding is controlled by an independent group of community members, typically based of past winners or their representatives, as well as known contributors.

It is a self-appointed, self-declared, self-making-up-the-rules-as-it-goes committee. It is also very aware of the importance of the community; a no-nonsense, non-political, adhering to tradition, self criticizing committee.

The Call for Nominations is open. We are seeking the community’s assistance in nominating candidates in the following categories:

MySQL Community Awards: Community Contributor of the year 2016

This is a personal award; a winner would a person who has made contribution to the MySQL ecosystem. This could be via development, advocating, blogging, speaking, supporting, etc. All things go.

MySQL Community Awards: Application of the year 2016

An application, project, product etc. which supports the MySQL ecosystem by either contributing code, complementing its behaviour, supporting its use, etc. This could range from a one man open source project to a large scale social service.

MySQL Community Awards: Corporate Contributor of the year 2016

A company who made contribution to the MySQL ecosystem. This might be a corporate which released major open source code; one that advocates for MySQL; one that help out community members by... anything.

For a list of previous winners, please see MySQL Hall of Fame.

Process of nomination and voting

Anyone can nominate anyone. When nominating, please make sure to provide a brief explanation on why the candidate is eligible to get the award. Make a good case!

The committee will review all nominations and vote; it typically takes two rounds of votes to pick the winners, and a lot of discussion.

There will be up to three winners in each category.

Methods of nomination:

Please submit your nominations no later than Monday, February 29, 2016.

The committee

Members of the committee are:

Jeremy Cole and myself (Shlomi Noach) are acting as co-secretaries; we will be non-voting (except for breaking ties).

The committee communicates throughout the nomination and voting process to exchange views and opinions.

The awards

Awards are traditionally donated by some party whose identity remains secret. We are now securing the donation, but if you feel an urgent need to be an anonymous donator, please contact us in private, and thank you!


This is a community effort; we ask for your support in spreading the word and of course in nominating candidates. Thanks!

06 February, 2016 07:02 AM

31 January, 2016

Diego Iastrubni

המסע אל אנדרויד 10 – MotoX 2014

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

מה נשתנה מפעם האחרונה שכתבתי בנושא זה (למשועממים – הינה קישור לכל הפוסטים בנושא המסע האישי שלי אל שימוש באנדרויד): ה־Galaxy S1 שלי עבר דירה. במקומו קניתי Nexus 4. השתמשתי בבלידים של Cyanogenmod, היה מגניב. הוא נפל לי מהיד, המסך נשבר. החלטתי לקנות מכשיר חדש, קניתי MotoX 2014, דור שני.

כמה מילים על המכשיר:

  1. המכשיר בנוי טוב. מוצק, ולא רוטט.
  2. הסוללה שלו מחזיקה בערך יומיים המתנה, בערך יום שימוש (שלי).
  3. המיקרופון שלו מעולה, הוא מצליח להקליט מהכיס שלי (ולאחר הגברה, ניקוי רעשים כללי ו־compression בעזרת audacity) הקלטות נשמעות מעולה.
  4. נניח שהמצלמה בסדר, אין לי מושג.
  5. יש בלידים מסודרים של Cyanogenmod והם עובדים לא רע (עוד לא עברתי אל Android 6).
  6. למכשיר יש שני (שלושה) פיצ'רים שחסרים לי בכל מכשיר אחר (הוידאו הזה הוא על דגם אחר, אבל מדגים את כולם), כל הפיצ'רים הללו עובדים גם ב־cm:
    1. כאשר אתה מנופף את היד מול המסך, החיישן תנועה מגלה את זה וזה מתפקד כמו לחיצה על power. זה גם מאפשר לי לסתכל על השעה (או התרעות) בלי מגע פיזי. זה יותר קל מללחוץ על כפתור power.
    2. כאשר אתה מנער את המכשיר ביד, כמו לחיצת יד, נדלק האור/פנס. מעולה בלילה בהליכת פיפי.
    3. כאשר אתה מחזיר את המכשיר ביד ומנער אותו מצד לצד (כמו… פתיחה של ברז…) המצלמה נדלקת. פי'צר חסר שימוש.
  7. אין טעם שאני אסביר על כמה שהקוד דומה ל־upstream והוא stock ROM כי אני לא מאמין בזה. עבדתי בפיתוח אנדרויד (בניתי ROM בחברה מאוד גדולה) ואני יודע שגם אם ה־UI לא השתנה, הקרביים שונה. מאוד. אני לא מאמין שהמוטורולה/לנובו לא שינו את הקוד בפנים. (ללא קשר לרוגלות). אבל… הממשק הוא לא סוטה ממה שרואים ב־AOSP, וזה טוב.

האם הייתי ממליץ על המכשיר? בהחלט. למרות הגודל שלו. הוא גדול מדי ולא נוח לי. המכשירים שיצאו אחריו (למשל Moto X Play שמוכרים בארץ) ענקיים וממש לא נוחים להחזקה ביד. המכשיר לא נמכר בארץ, והייתי צריך לדאוג לייבוא אישי שלו. המכשיר מאוד זול (עלה לי בסביבות 1500₪ בזמנו). בעייה אחת היא: כיוון שהוא לא כזה מוכר קשה למצוא בשבילו מארזים או מגני מסך. אבל… אפשר למצוא בודדים באיכות טובה (לא כזאת).

הטקסט המלא

31 January, 2016 06:58 PM

Kobi Zamir

Diff , Patch ו Pull Requests

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

הטקסט המלא

31 January, 2016 05:35 PM

24 January, 2016

Kobi Zamir

מכתב לא שגרתי

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

הטקסט המלא

24 January, 2016 04:00 PM

23 January, 2016


סיכום שנה – 2015

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

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

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

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

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

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

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

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

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

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

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

תויק תחת:asterisk, freeswitch, VoIP, טלפוניה, קוד פתוח, תקשורת

23 January, 2016 02:01 PM

19 January, 2016

Gabor Szabo

2015 in Numbers

I did not have a detailed plan for 2015, I just wanted to write a lot more articles than in 2014 to reach 1,000,000 pageviews by November 2015 This page was going to serve me as a way to follow my progress.

For the full article visit 2015 in Numbers

19 January, 2016 09:48 PM

15 January, 2016

Boris Shtrasman

בשעה טובה ומצלחת הרגולטורים מתחילים להתעורר

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

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

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

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

15 January, 2016 01:57 PM

כל הכבוד לגוגל #2

לפני מספר ימים סיפרתי על זה שגוגל סוגרת את הברז ל  RouteBuilder , ואוסרת עליה להשתמש בשירות המפות שלה (לטענת גוגל RouteBuilder פעלו בניוד ו TOS של מפות גוגל).

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

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

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

השאלה היא מתי מפתחי אפליקציות נוספות יחליפו את שירותי ההסתמכות על מיפוי גוגל ויתחילו להשתמש ולאפשר החלפת שרתי מיפוי למשתמש ?

אחת השאלות הגדולות ביותר לאפליקציית מיפוי היא -
האם היא מוסגלת לעבוד offline לאחר הורדת מפות ל cache.
האם היא מסוגלת לעבוד בתוך רשת סגורה ללא פנייה למקורות חיצוניים.

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

15 January, 2016 01:38 PM

09 January, 2016

Guy Rutenberg

WordPress.com Login Loop

Sometimes, when I try to use certain functions on wordpress.com, I get redirected to a login page. After I sign-in, I get redirect again to the same login page. This repeats in an endless loop. It usually doesn’t bother me, as I self-host my blog, but for some things, like the yearly annual report that came in about two weeks ago, it does bother. I looked up into the matter, and the issue turned up to be due to blocking third-party cookies. To resolve the endless login loop, you need to add https://wordpress.com (note the https) to the exception list of accepted third-party cookies (In Firefox it’s under Preferences -> Privacy -> Exceptions).

09 January, 2016 08:30 PM

Diego Iastrubni

נטפליקס בלינוקס

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

  1. אני משתמש בפדורה. אני משתמש בכרומיום של פדורה. שם נטפליקס לא עובד. צריך להפעיל תוסף בשם Widevine, שלא זמין בכרומיום. פרטים כאן: http://unix.stackexchange.com/questions/172364/netflix-works-on-chrome-but-not-chromium
  2. ננסה Firefox. גם לא. מסתבר שהתמיכה ב־DRM של הדפדפנים שונה.
  3. אז הורדתי את ה־rpm של כרום, והחילצתי משם את הקבצים המתאימים. ואז אני מצליח לראות.

מסקנה: זה עובד בכרום בלבד.

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

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

הטקסט המלא

09 January, 2016 06:01 PM

07 January, 2016

Ram on Agmon

שנת 2015, שנת התוכנה החופשית ומקצוע ה- devops

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

הטקסט המלא

07 January, 2016 10:40 PM

Lior Kaplan

תוכנה חופשית במערכת החינוך

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

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

תויק תחת:Free Software in Israel, gov.il

07 January, 2016 09:49 AM

06 January, 2016

Amir Aharoni

I Deleted My Facebook Account

I used Facebook quite a lot. I posted lots of things, I got to know a lot of people, I learned about things that I wouldn’t learn anywhere else, I shared experiences.

But the feeling that I am the product and Facebook is the user got stronger and stronger as time passed. It happens with many other companies and products, but with Facebook it’s especially strong.

In February 2015 I stopped posting, sharing and liking, and I deleted Facebook apps from all my other devices. I continued occasionally reading and exchanging private messages in a private browser window.

Then I noticed that a few times things were shared in my name, and people liked them and commented on them. I am sure that I didn’t share them, and I am also quite sure that it wasn’t a virus (are there viruses that do such things on GNU/Linux?). Also, a few people told me that they received messages from me, and I’m sure that I didn’t send them; It’s possible that they saw something else under my name and thought that it’s a message even though it was something else, but in any case, nobody is supposed to think such a thing. That’s not how people are supposed to interact.

I am not a bug, not an A/B test, not a robot, not an integer in a database. I am Amir Aharoni and from today Facebook doesn’t use me. There are other and better ways to communicate with people.

Stop telling that “everybody is on Facebook”. I am not. I don’t feel exceptionally proud or special. I am not the only one who does this; a few of my friends did the same and didn’t write any blog posts or make any fuss about it.

You should delete your Facebook account, too.

Filed under: Facebook, Free Software, Internet, Uncategorized

06 January, 2016 10:21 AM

05 January, 2016

Lior Kaplan

PHP 5 Support Timeline

With the new year starting the PHP project is being asked to decide about the PHP 5 support timeline.

While Aligning PHP 5.6 support timeline with the release date of PHP 7.0 seems like common sense to keep the support schedule continuous, there’s a big question whether to extend it further to an additional one year of security support till the end of 2018. This would make PHP 5.6, the last of the PHP 5 branch, to have 2 years of security support and de facto getting the same life span as PHP 7.0 would (ending support of both in Dec 2018).

But beside of support issues, this also affects adoption rate of PHP 7.0, serving as a catalyst due to end of support for the PHP 5 branch. My concerns are that with the additional security support the project would need to deal with the many branches (5.6, 7.0, 7.1, 7.2 and then to be 7.3 branch).

I think we should limit what we guarantee (meaning keeping only one year of security support till end of 2017), and encourage project members and the eco-system (e.g. Linux distributions) to maintain further security based on best effort.

This is already the case for out of official support releases like the 5.3 and 5.4 branches (examples for backports done by Debian: 5.3 and 5.4). And of course, we also have companies that make their money out of long term support (e.g. RedHat).

On the other hand, we should help the eco system in doing such extended support, and hosting backported fixes in the project’s git repo instead of having each Linux disto do the same patch work on its own.

Filed under: PHP

Full text

05 January, 2016 11:52 PM

03 January, 2016

Guy Rutenberg

nginx and SNI

Server name indication (SNI) allows you serve multiple sites with different TLS/SSL certificates using a single IP address. Nginx has support for SNI for quite some time and actually setting it up is easy, simply add server entries for the corresponding sites. There is one caveat, the server_name entry must come before the server_certificate in order for SNI to be activated:

server {
    listen          443 ssl;
    server_name     www.example.com;
    ssl_certificate www.example.com.crt;

server {
    listen          443 ssl;
    server_name     www.example.org;
    ssl_certificate www.example.org.crt;

is good, but

server {
    listen          443 ssl;
    ssl_certificate www.example.com.crt;
    server_name     www.example.com;

server {
    listen          443 ssl;
    ssl_certificate www.example.org.crt;
    server_name     www.example.org;

will serve the wrong certificate for www.example.org.

03 January, 2016 09:50 AM

23 December, 2015

Shlomi Noach

Orchestrator progress

This comes mostly to reassure, having moved into GitHub: orchestrator development continues.

I will have the privilege of working on this open source solution in GitHub. There are a few directions we can take orchestrator to, and we will be looking into the possibilities. We will continue to strengthen the crash recovery process, and in fact I've got a couple ideas on drastically shortening Pseudo-GTID recovery time as well as other debts. We will look into yet other directions, which we will share. My new and distinguished team will co-work on/with orchestrator and will no doubt provide useful and actionable input.

Orchestrator continues to be open for pull requests, with a temporal latency in response time (it's the Holidays, mostly).

Some Go(lang) limitations (namely the import path, I'll blog more about it) will most probably imply some changes to the code, which will be well communicated to existing collaborators.

Most of all, we will keep orchestrator a generic solution, while keeping focus on what we think is most important - and there's some interesting vision here. Time will reveal as we make progress.


23 December, 2015 04:01 PM

18 December, 2015


מנהל הרשת ו-Polkit

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

הטקסט המלא

18 December, 2015 04:57 PM

13 December, 2015

Arie Skliarouk

GRUB-based multiple iso booting flash drive

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

GRUB to the rescue!

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

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


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

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

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

    13 December, 2015 01:33 PM

    11 December, 2015

    Lior Kaplan

    מפגש פיתוח ראשון של עמותת המקור

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

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

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

    במהלך המפגש טיפלתי בשני אתרים מראה חדשים – oVirt ו-Kodi. הראשון עוד דורש תיאום מול הפרוייקט והשני נמצא כבר בתהליכי סנכרון (עדכון – אתר המראה זמין כאן: http://mirror.isoc.org.il/pub/kodi/)

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

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

    הצקתי קצת לירון כדי שיעבוד על התרגום של ליברה, ולקראת סוף המפגש גם תרמתי קצת תרגומים בעצמי (בעיקר אלה שהם fuzzy ודיי קלים לטיפול). התרגום נמצא כרגע על 75% ואני מקווה שנגיע לפחות ל-80% עבור גרסה 5.1 שצפויה לצאת בפברואר. מבחינת ההתחלה – מדובר בנקודת זמן טובה, הקפאת המחרוזות של התוכנה היא באמצע שבוע הבא, ובועד חודש גם יש הקפאת קוד (לוח הזמנים המלא כאן: https://wiki.documentfoundation.org/ReleasePlan/5.1).

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

    תויק תחת:Hamakor, ISOC-IL, LibreOffice, Uncategorized

    11 December, 2015 10:22 AM

    07 December, 2015

    Ira Abramov

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

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

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

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

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

    תגים: , , , , ,

    07 December, 2015 03:42 PM

    03 December, 2015

    Shlomi Fish

    Tech Tip: Speed up building perl 5 by not installing the man pages

    2015-12-03: Tech Tip: Speed up building perl 5 by not installing the man pages

    When building perl 5 from source, one can speed up the "make" and "make install" stages significantly by not installing the man pages. To do so, pass the options “-Dman1dir=none -Dman3dir=none” to “sh Configure”.

    Cheers, and happy upcoming Chanukkah, and happy Christmas and/or Yulth or whatever winter holiday you celebrate.

    Call for action

    Creative Commons has set up a campaign to stop TPP - the Trans-Pacific Partnership. Please consider signing it and spreading the word.


    Copyright by Shlomi Fish, 2015.

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

    03 December, 2015 04:37 PM

    02 December, 2015

    Itzik Kotler

    I See Your True ECHO_REQUEST Patterns (Pinging Data Away)

    I've started blogging again! In order to avoid cross-posting between the different blogs, I'll just give a brief paragraph and a link back to the original post. Here we go:

    Getting into a network and getting data out of a network are two different challenges. Just because an employee clicked on a malicious link and got hacked, it doesn’t mean the attacker gets to walk off with PII, Financials, Source Code etc. In this blog post, we’ll explore the known breach method of using ICMP protocol for data exfiltration but with a twist. Instead of showing how to use this breach method with some custom made tools, we’re going to do it using the default and common ping utility– red team style!

    Continue reading: http://blog.safebreach.com/2015/12/02/i-see-your-true-echo_request-patterns-pinging-data-away/

    Full text

    02 December, 2015 07:55 PM

    01 December, 2015

    Meir Kriheli

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

    התחלתי לתרגם מאוחר לאחר הקפאת המחרוזות של Django 1.9, התרגום עמד על 95%.

    מקווה שלא פספסתי את מיזוג המחרוזות של 1.9. נכון ליום שבת, ה־25 בנובמבר התרגום עומד על 100% עבור:

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

    01 December, 2015 07:58 AM

    25 November, 2015

    Artyom Beilis

    שילוב בין טכנולוגיות Web שונות ו-CppCMS

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

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

    לכן, יצרתי שכבת תיאמות שמאפשרת לגשת ל-Session של CppCMS מכל שפת תכנות אחרת.

    בשלב ראשון עדכנתי את המחלקות הקשירות לניהול ה-Session של CppCMS שיוכלו לפעול בצורה בלתי תלויה מהמערכת. יצרתי API נקי מבוסס C בלבד כדי שלא יהיו בעיות כמו חריגות (exceptions) האופייניות ל-++C וגם כדי שאפשר היה לטעון את הפונקיות ישירות בעזרת dlopen.

    אחר כך יצרתי מספר מודולים עבור שפות שונות:

    • PHP עם שימוש ב-Swig
    • Java/Servlet עם שימוש ב-JNA
    • Python עם שימוש ב-ctypes והתממשקות עם Django (אבל לא מוגבל ל-Django)
    • Asp.Net עם שימוש ב-PInvoke

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

    חייב להגיד לכל טכנולויה היו בעיות משלה... למשל ב-Python היו התנהגויות מוזרות כשניסיתי לבנות מתודות באופן דינאמי, ב-Java/JNA הכל עבר חלק להבפליא. PInvoke שיגע אותי עם חוסר רצון שלו להמיר UTF-8 ל-string ובחזרה (אגב Mono כן עושה זאת בצורה שקופה אבל לא Net. של Windows מתעקש להשתמש בקידוד ANSI). יצירת מודולים עם Swig עבדה לא רע בכלל, אבל נדרשת עוד מעטפת כדי להתאים את הכל בסופו של דבר לשפה עצמה והתנהגותה.

    ואיך זה נראה


    // pool initialization
    // per request session access
    if($session->is_set('x')) {


    static SessionPool pool;
    public void init() throws ServletException
        pool = SessionPool.openFromConfig("/path/to/cppcms-config.js");
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response) 
                        throws ServletException, IOException
        Session session = pool.getSession();
        String x="0";


    # Create global pool
    # Actual view
    def home(request):
        if 'x' in s:
                v= s['x']
        response = HttpResponse()


    static SessionPool pool;
    static Example() {
        pool = SessionPool.FromConfig("cppcms-config.js");
    protected void Page_Load(object sender,EventArgs e)
        using(Session s = pool.Session()) {
            string v="0";
            v = (int.Parse(v) + 1).ToString();

    אפשר לראות את הקוד והדוגמאות המלאות כאן

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

    הטקסט המלא

    25 November, 2015 02:16 AM

    שעון קיץ בישראל ומחשבים

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

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

    בזיון. מרבית הפצות לינוקס לא הספיקו לעדכן את tzdata, למשל לא Debian ולא Ubuntu יציבות קיבלו איזורי זמן נכונים (גם בעדכונים אחרונים), העדכון האחרון של Red Hat גם הוא יצא ממש לא מזמן. כמובן גם Windows לא הספיקו להוציא עדכונים - כך שגם אשתי שלא משתמשת בלינוקס התעוררה עם שעון לא תקין במחשב שלה - והוא תמיד מעודכן אצלה עד לדקה האחרונה.

    אני כמובן כבר לא מדבר על יישומים שמנהלים את IANA Time Zone Database בעצמם, יישומים זניחים כמו Java או ICU וכד.

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

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

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

    הטקסט המלא

    25 November, 2015 02:16 AM

    24 November, 2015

    Yoav Farhi

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

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

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

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

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

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

    24 November, 2015 08:51 AM

    16 November, 2015

    Liran Tal

    VeriGreen – lightweight, server side solution for verification of git commits

    Verigreen – https://github.com – is a lightweight, server side solution for verification of git commits. Now open-sourced  by HPE’s VeriGreen team.


    The post VeriGreen – lightweight, server side solution for verification of git commits appeared first on Liran Tal's Enginx.

    16 November, 2015 11:13 AM

    08 November, 2015

    Rabin Yasharzadeh

    Run Command Before Starting SSH Connection

    This a quick hack I found while I was looking to run a knock script before connecting to servers which I have the SSH service protected with a knock sequence. In my setup I used the ProxyCommand option in the ssh_config file to loop over my loop-back interface.

    Host server1
        User root
        Hostname server1.com
        ProxyCommand bash -c 'knock-script %h; sleep 1; ssh -W %h:%p'
    # in the above
    # %h is a place holder for the hostname i.e server1.com
    # and i added 1 sec delay before running the ssh tunnel
    # to give the script on the server side time to validate my knock.


    08 November, 2015 04:58 PM

    06 November, 2015

    Shlomi Fish

    Tech Tip: Make Panes Equally Heighted in Tmux

    When pressing «Ctrl+B;"» in tmux to split a pane vertically there, one will notice that tmux splits the existing pane into two which can result in smaller and smaller panes. In order to fix this, one can type «Ctrl+B;M-2» (where “M” is the Meta key and is normally “Alt” on most keyboards.) which will make all the panes equally heighted.

    I found this feature after wondering whether it existed, and then searching for it in the tmux man page.


    Copyright by Shlomi Fish, 2015.

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

    06 November, 2015 10:19 AM

    05 November, 2015

    David Kaplan

    Lunchbox Glitching for Fun & No Profit

    As part of my work on the IBM X-Force Application Security Team, a few months ago I wanted to see if I could reproduce a Rowhammer-exploit-type memory corruption via an externally-generated electromagnetic pulse (EMP). The idea here was to target primary memory (usually [S]DRAM) to perform a bit-flip via an electromagnetic pulse-induced glitch.

    I have (thus far) failed miserably to build an actual exploit; more on why in a subsequent blog post.

    In this post, I'd like to detail my IBM-sponsored single-pulse glitcher (EMP generator) build (yes, it involves Tupperware) and touch on some basics of the theory of operation of its various components.



    Disclaimer 3: My build's EMP range is in the order of millimeters to centimeters and the interference it causes is relatively weak. It's not a weapon and was built at my employer for security-research purposes only and used only within a private lab. Do not use this build for nefarious reasons!

    OK, warnings aside, let's begin.

    I'll start by detailing the most basic build which simply consists of a single capacitor, a switch and a coil of wire like so:

    If the capacitor was charged, closing the circuit (by flipping the switch) would induce an extremely high current over the coil load (as there is very little resistance in the circuit). This is because capacitors store energy. The amount of energy stored by a capacitor is denoted by Farads, or the symbol F.
    As the electrons flow from the negative pole to the positive pole of the capacitor, a magnetic field is formed as per Maxwell's correction to Ampère's Law. In our circuit above, these electrons flow through the coil - a solenoid - concentrating the magnetic field inside the coil. The strength of this field is proportional to the current flowing through the solenoid which, in turn, is proportional to the energy dissipated by the capacitor discharge.

    It is this magnetic field that causes electronics to go crazy. This is due to the fact that the field can excite electrons (and hence current flow) within the target device (the exact reverse of what's happening on the EMP side). If one manages to excite the target enough, Bad Things May Happen.

    It follows therefore that the more energy stored within the capacitor, the stronger the magnetic field will be.

    The decision that we have to make at this point is which capacitor to chose. We need a capacitor capable of quickly discharging its stored energy and one with large enough capacity to induce a sufficiently-strong magnetic field within the solenoid. We don't wish for the field to be too strong as our range of operation for this project (glitching memory) is in the order of millimeters and the target devices operate at around 3.3 volt so the glitch amplitude shouldn't need to be that high to induce some undefined behaviour.

    The easiest capacitor to go for, imho, is a 330V 80uF flash capacitor. You'll see this advised by a number of glitcher-building guides on the net. The reason is that it's easily available and comes with a charging circuit to match! Just find a disposable camera with a flash and gut it (actually getting more difficult to find these days; I think I found the last 3 in the country).

    A word of caution when opening these cameras. Make sure the capacitor is discharged before touching any part of the circuitry inside. You can do this by firstly winding up the camera and charging the flash. Then activate the shutter to discharge the capacitor. Additionally it's a good idea to make sure it has fully discharged by shorting both ends of the capacitor with a rubber-handled screwdriver (it might make a spark - the energy dissipates as light and heat - but it's likely safe to do with a capacitance of this value).

    In our first circuit above, we assumed that the capacitor was already charged. In our working circuit we will need to charge the capacitor.

    In order to charge capacitors, one must apply a potential difference (voltage) over it's poles which is greater than its rated voltage for a set amount of time. The time that a capacitor takes to charge is specified by the RC time constant, tau T, of the circuit such that the capacitor will be charged to 63% after 1T. At 4T the capacitor will be charged to 98%. The charging time between 0T and 4T is called the transient period. After 4T the capacitor enters the steady-state period. At 5T the capacitor is considered to be fully charged.

    In our circuit, we have selected a value of R = 10k. Our capacitance is C = 80uF.

    T = RC
      = 10k x 80u
      = 800 milliseconds
    5T = 4 seconds

    So in order to charge our capacitor to capacity, we need to apply 330V over its poles for 4 seconds.

    The challenge now is to provide a 330V source with which to charge the capacitor. One can use a DC-DC step-up transformer, however luckily the disposable camera which we pillaged above has a nice little charging circuit which we can re-purpose for our needs.

    The circuit in most disposable cameras has a feedback mechanism whereby closing the switch causes the charging process to commence and it automatically stops charging when the target voltage is reached (this is so that one doesn't need to hold down the flash button on the camera for the whole duration of the transient period). We'll consider it a black-box for our purposes and using this charger, we can update our circuit diagram as follows:

    The push button switch in the diagram above commences the charging procedure. After the capacitor has reached capacity, closing the switch between the capacitor and the solenoid will create the EMP.

    Even though we now have a full EMP circuit, I added a number of features to my design.

    Firstly, I doubled the capacitance of the circuit in order to create a stronger pulse. I pillaged another 80uF capacitor from a disposable camera and added it in parallel to the first capacitor. This gives a total capacitance of 160uF.

    I then added a high impedance voltage-divider circuit which allows me to digitally measure the voltage of the circuit. This is connected in parallel over the capacitor. The reason for the high impedance is that I don't want the capacitor to discharge ('bleed') its energy though this path otherwise there won't be any energy to discharge through the coil!

    The total impedance of the voltage divider is just over 2.2M. To understand the affect that this has on the circuit, we need to take a look at how the capacitor discharges.

    As with the charging circuit above, the capacitor will discharge 63% of its energy in 1T and be fully discharged at 5T. The impedance of the voltage divider is approximated 2.2M, therefore:

    T = RC
      = 2.2M * 160uF
      = 58.6 minutes

    As one can see, the bleeding through the voltage divider is quite slow and doesn't have a major affect on the energy of the EMP if the EMP is triggered shortly after the capacitor is charged.

    Interestingly this also provides a built-in safety feature. Forgetting to discharge the circuit could prove hazardous as capacitors will hold their charge for a long time. The voltage divider will cause the circuit to bleed the capacitors over time as even though the impedance is high, there is some current flowing through this path. The capacitors I'm using will generally be considered safe at around 42V. They will be discharged to this value at roughly 2.2T, so after about 2 hours and 10 minutes.

    The aforementioned voltage divider is connected to a microcontroller (MCU). The one I'm using is the MicroPython board which is a pretty awesome bit of kit (highly recommended). I use this board connected over USB to a PC to control the glitcher (mostly). The voltmeter gives me an indication of the current level of charge of the capacitor. The MCU is also connected to two relays. The first relay is used to complete the charger circuit (in place of the disposable camera push button). The second relay connects a 3.3k resistor over the poles of the capacitor. I can use this to very quickly discharge (bleed) the circuit and even use it to select a particular voltage for the pulse (I can bleed the circuit for a very short time causing a controlled drop in capacitor charge; to half the voltage for example). This is a 35W rated part as it needs to be able to handle the amount of energy dissipated through it (high current). The interface is shown in the video of the capacitor charging below:

    The final part of the build is the solenoid itself. I have experimented with a number of different coils; diameter, number of windings etc. The ideal coil depends on the application and isn't an exact science at all. For my needs I wanted a small, focused EMP with which I could target a RAM IC without glitching the surrounding electronics. My first attempt at a large coil tended to reset my computer! I then made a few smaller coils out of insulated copper wire wound around ferrite iron cores. Here are some pictures of my various coils:

    So does the glitcher work? Well yes! I verified this experimentally. As mentioned, the large coil can reset my computer. I used the smaller coils to target RAM IC chips in a PC. I was able to cause some havoc with RAM contents but I'll leave that for another blog post.

    As for how the glitch actually looks on the target; according to Wikipedia, what we should see is a damped sinewave pulse. This is due to coupling on the ground plane between the glitcher and the target. I won't go into this in detail but it's all on Wikipedia if you're interested. Throwing an EM pulse out at a scope probe shows exactly this affect so all seems to be working well:

    That's all for now folks! Leaving you with a picture of the glitcher in all it's tupperwear-enclosed glory!

    05 November, 2015 06:12 PM

    02 November, 2015

    David Kaplan

    CUPC/8 Goodbye ROM, Hello ROM

    So it has been a while since my last CUPC/8 (formerly known as CUPCake) update.

    Over the past few months I have spent a significant amount of time working fleshing out the instruction set, implementing support in the assembler and simulator and coding the Kernel (the status of which will be discussed in another blog post).

    I have also spent some time back with the hardware itself; integrating and testing the physical RAM and MMU FPGA modules, bus interfaces etc.

    Additionally, I finally got around to starting the documentation (see here). Some of it is already slightly out of date but hopefully I'll revise it soon.

    As development has progressed, I have continually challenged my original design decisions and this has resulted in a few design revisions.

    The main change is that the memory board is no longer responsible for loading the ROM into primary memory on boot. It just didn't make sense for me to use a powerful (relative to CUPC/8) XMEGA MCU within the context of the project as a whole.
    As such, I have removed the XMEGA from the design. The ROM chip is now connected directly the the SoC over I2C. The SoC also now includes a small ROM buffer on-chip (termed ROM0) which will hold code that will be responsible for bootstrapping the ROM code. ROM0 is memory-mapped into the 64k memory region by the MMU. The hard reset vector points to the start of the ROM0 and will therefore execute it on boot.
    The ROM0 code will be minimal; consiting of a stripped-down I2C driver responsible for the loading of the off-chip ROM chip (ROM1) into primary memory and jumping to the ROM1 start vector.
    This is somewhat similar to how modern CPUs bootstrap today.

    My next milestone is to get the hardware SPI and I2C modules working properly and interfacing ROM1 with the FPGA development board.

    02 November, 2015 01:44 PM

    30 October, 2015

    Oz Nahum

    NOSQLite - SQLite, support for JSON field

    Released just recently (14-10-2015) the new SQLite (3.9.*) now has optional support for NoSQL like work flows with the new JSON field type. This is a very brief introduction to the JSON1 extension which enables this support. continue reading...

    30 October, 2015 09:49 AM

    AJAX with bottle.py

    A working example of AJAX with JQuery and Bottle ... continue reading...

    30 October, 2015 09:49 AM

    20 October, 2015

    Guy Sheffer

    FullPageOS – Out-Of-The-Box Kiosk mode for the RaspberryPi



    Hey all,

    Today I am announcing a RaspberryPi operating system that addresses a small need we have – Get the RaspberryPi to display a webpage on full screen with no hassle.
    The OS is called FullPageOS. And you can download it here.

    Why I built it

    A friend of mine, Tailor Vijay wanted something to stream video and add titles to it. Also I was looking for a way to start the RaspberryPi with a browser on full screen for a stats screen at work, and apparently the only thing available is complex guides that only partly work on today’s RaspberryPi.

    So what I did last weekend is build a distro based off the code of OctoPi, the 3D printer operating system I built. All this distro does is start Chromium at boot on full screen, with a URL of your choice. The url can be changed conveniently from a text file on the /boot FAT folder. So all you have to do is set the wifi and url via text files, boot, and voilà!
    Among the minor tweaking is the elusive setting of disabling the screen from blanking.

    How to set it up

    What’s nice about FullPageOS is that its simple, no need to install packages, just flash it like any distro, set your wifi and URL settings and boot.

    1. Open the FAT filesystem that is mounted as /boot
      on the pi
    2. Set the URL you want in the file fullpageos.txt
    3. If you need to set up wifi, set your wifi settings with the file fullpageos-network.txt or any way you want are used to on the RaspberryPI
    4. Plug to HDMI display, internet and boot

    Known issue with black boarders

    On some screens I tried FullPageOS I got a black boarder, to fix this, you need to edit config.txt and uncomment the line:


    This fixes the issue.

    Contribution is appreciated!

    FullPageOS works, but its missing the shiny slickness that OctoPi has today. For example if someone wants help me write a nice default boot page that would be great! The current default url is just the github page. So as usual, pull requests are welcome.
    The source works just like an OctoPi build, and as a by product I wanted to show how easy it is to create custom distros for the RaspberryPi using this build method. We could, really, build a universal custom distro system based off these things. There is already a variant system that was ported from OctoPi code.

    FullPageOS image can be downloaded here


    Share and enjoy,

    Full text

    20 October, 2015 04:04 PM

    25 September, 2015


    הכירו את SCTP

    זהירות, פוסט ארוך

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

    עד עכשיו היה שימוש רק ב E1, אז החיבור הוא קווי באמצעות קו רגיל של ISDN, אבל יש לזה מגבלה של 30 ערוצי תקשורת פר חיבור (אם אין דחיסה).
    אנחנו כמובן מעוניינים לספק כמה שיותר תעבורה, אז התחלנו לברר על משהו הנקרא SIGTRAN אשר הוא בעצם SS7 על גבי IP, אך הוא אינו משתמש ב TCP או UDP בשביל זה, אלא על גבי פרוטוקול (יחסית חדש) בשם  SCTP.

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

    מהו SCTP?


    ישנם שני פרוטוקולים מעל רמת IP אשר מאוד מוכרים בעולם – TCP ו UDP.

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

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

    אז מה הוא SCTP או Stream Control Transmission Protocol בשמו המלא?

    הסבר הרעיון (TL;DR)

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

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

    כלומר אם אשווה את זה לבקשת HTTP, אני יכול להגיד כי תוכן מסוים של ווב, יהיה חייב להישלח כמו שהוא, בעוד שחלקים קטנים של מידע, למשל css ו JS, כולל דף ה HTML ישלחו בחלקים באותה בקשה.

    כלומר יש לנו כאן סוג של פרוטוקול multiplexing .

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

    מוכר לכם ממשהו? למשל מגישה בשם HTTP/2?
    אבל כאן זה פרוטוקול ברמה נמוכה יותר, ולא מימוש בשכבה 7.

    אבל העניין הוא שזה ממש לא הכל. יש לפרוטוקול תמיכה בmultihoming – כלומר האפשרות להתחבר למספר שרתים במקביל, וכך להבטיח שרידות בקבלה ושליחה של המידע.
    הפרוטוקול אפילו מאפשר תמיכה במציאות הנתיב עם האיכות הכי טובה שהגדרנו, כמו ש MPLS, DiffServ וכיוב' מספקים.
    עוד פיטצ'ר נחמד, הוא תמיכה ב jumbo frames, אשר מאפשרים לשלוח עם MTU גדול יותר מ1500 בתים.

    אז כיצד זה בעצם עובד?

    הפקטה עצמה די פשוטה יחסית במבנה שלה:

    sctp header

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

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

    ה header שלו בנוי כך:

    sctp chunk field

    8 ביטים הראשונים נקראים Chunk Type, השדה מחזיק מידע על סוג ה"חתיכה". הערכים יכולים להיות מ0 ועד 254, כאשר הספרה 255 שמורה לשימוש עתידי.

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

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

    שש עשרה הביטים הבאים הנקראים Chunk Length מחזיקים את אורך הבקשה במספר שלם ויכול להיות עד הטווח של 65,535.  הגודל מכיל גם את גודל ביחד עם Chunk Type ו Chunk Flags. במידת הצורך, השדה יהיה עם padding של אפסים בהתחלה, שלא יעלו על יותר מ3 בתים בפועל.

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

    sctp chunk value

    השדה הראשון הוא בגודל 16 ביט, וקיבל את השם Parameter Type. הוא יכול להיות מספר בין 0 ל65,534, כאשר המספר 65,535 הוא מספר שמור עבור הגדרת הרחבות של IETF.

    השדה השני הוא בגודל 16 ביט, וקיבל את השם Chunk Parameter. הוא מחזיק את אורך ה value בבתיים כולל את עצמו ואת Parameter Type.
    פרמטרים עם גודל אפס יהיה לו גודל של 4, ללא תוספת רווחים בהתחלה.

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

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

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

    המידע עצמו

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


    sctp payload


    השדה שהוא Reserved הוא בגודל 5 ביטים ותמיד חייב להיות 0, ותמיד חייבים להתעלם ממנו בקבלת המידע.

    האותיות U, B ו E הן בעלות גודל של ביט בודד, ויכולות להיות בעלות הערך של 0 או 1:

    במידה והמידע אינו מחולק (fragmented), אז הערכים של B ו E צריכים להיות עם הערך 1. כאשר אם שניהם מחזיקים ב0, הכוונה היא שזה האמצע של ההודעה.
    במידה וגם B וגם E מכילים את הערך 1, מדובר במידע שאינו מחולק.

    sctp payload fragments

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

    השדה Length הוא בגודל 16 ביט, והוא בטווח של עד 65,535. השדה מציין את אורך או גודל המידע בבתים, כולל ההתחלה של השדה type ועד למעשה ה Data עצמו כולל, לא כולל איזשהו padding.
    שדה ה Data עם בית בודד של מידע מהמשתמש, יכיל את המספר 17, בשביל לציין 17 בתים.
    כאשר מידע מהמשתמש יהיה בגודל המצויין באות L, יכיל את האורך של 16+L, אשר מציין 16+L בתים. חשוב לציין כי L חייב להיות גדול מ0.

    השדה TSN הוא בגודל 32 ביטים ויכול להיות מ0 ועד המספר 4,294,967,295. כאשר לאחר הגעה למספר הזה, הוא יחזור להיות 0.
    תפקיד השדה הוא להחזיק את הערך של Transmission sequence number – מזהה עבור אותה חתיכה שנשלחה. וכאמור יהיה בשימוש כאשר יש להרכיב מחדש הודעה המחולקת למספר פקטות.

    השדה של Stream Identifier S, הוא בגודל של 16 ביט, והוא בטווח של 0 ועד 65,535. תפקידו הוא לזהות לאן ה stream שייך.

    השדה של Stream Sequence Number הוא בגודל של 16 ביט, והוא בטווח של 0 ועד 65,535. תפקידו הוא לדעת מה הסדר של ה stream אשר נשלח, לפי השייכות שלו המוגדרת ב Stream Identifier S.
    כאשר ההודעה מתחלקת (fragmented) על מספר בקשות, אותו מספר עוקב חייב להיות עם כל החלקים של ההודעה.

    השדה של Payload Protocol Identifier הוא שדה בגודל של 32 ביט. המקום הזה מייצג בערך מידע של התוכנה או שכבה כבוהה, כמספר הפרוטוקול. המידע הזה מועבר על ידי SCTP לשכבה הגבוהה יותר, ונשלח ל peer. המזהה אינו נמצא בשימוש של SCTP עצמו, אך יכול להיות בשימוש על ידי מערכות תקשורת שונות, וכן על ידי התוכנה עצמה הזקוקה למידע הזה בשביל לזהות את סוג המידע הנשלח בחלק המידע למשתמש.
    השדה חייב להישלח כחלק ממידע מחולק (fragmented), בשביל שיהיה נגיש למפרשים שונים).
    חשוב להדגיש כי SCTP אינו נוגע על ידי מימוש ה SCTP, ולכן המידע שבו אינו חייב להופיע כ Big Endian.
    שכבת התוכנה היא זו שאחראית על המרת המידע.
    במידה והשדה מחזיק בערך 0, זה אומר כי אין הגדרה למזהה שכבת תוכנה על במידע המשתמש עצמו.

    השדה של User Data, הוא בגודל משתנה. השדה הזה הוא המידע עצמו שנשלח על ידי המשתמש. המימוש חייב לשים padding של 4 בתים בערך של 0 בסוף. תוספת 4 הבתים, אסורה להיכלל בחישוב אורך המידע.

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

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

    תויק תחת:Operating Systems, אינטרנט, טכנולוגיה, קוד פתוח, רשתות, תוכנה, תקשורת

    25 September, 2015 10:03 AM

    20 September, 2015

    Guy Sheffer

    How I Founded a Startup

    ShapeDo logo

    ShapeDo logo

    Hey all,

    It’s my 29th birthday this week, and that sorta made me realise no one really knows what I have been doing the past 18 months, so I thought it’s time to tell you how I founded a company. Unlike the tutorials and guides I wrote here, I am not sure this would work for everyone, but it did work for me.

    The Idea

    I have started one of my biggest and ambitious projects yet, after collaborating with people around the world bringing OctoPi to the world, I realised that something was missing from the scene of 3D design – a decent version control and collaboration tools.

    This was the initial idea, as you will see things played out differently, but what was important with this idea was contagious, I got the feeling everyone I told about it wanted to join me, it was wonderful.

    Assembling the team

    My talent is mostly in the core backed stuff, so I found myself going to one of the more talented web developers I know for help, my co-worker at Zend, Amit. It started by asking him javascript questions. When he realized what I was doing, he started helping me out, and he was fast, suddenly in days my core stuff was accessible to the world with a simple and elegant interface. At that time we thought this is going to be a nice open source project, not something commercial, but as the server load grew on Amit’s little server we understood we needed some way to pay its bills, so I started to look for someone that would help me figure out how to sustain this financially. Since our idea was “github for 3D printing”, it seemed like there should be a way to support it, perhaps charge for closed-source projects.

    I’ve been going around the Makerspaces in Tel-Aviv, mostly XLN and T.A.M.I, in some random workshop I came across someone who said “You should write an executive summary, I don’t mind helping you out”. I didn’t even know what an executive summary was at the time, and today it makes me realise how much I learned about fundraising during this year. I later found his name was Ari and he was between companies. We set to meet at Google Campus and write it since we both went to some ecology hackathon that was going on there.

    We ended up drunk from exhaustion and pizza, scooting on chairs at the space and we also had a draft. As we wrote it, the idea spread to Ari, and he realized he that he wanted to join. I introduced him to Amit. It took a while to put our trust in Ari, less time than we expected, and today I know ShapeDo would not have reached anything without Ari’s help. Eventually we wrote a few basic agreements on paper and Ari made sure we register a company, ShapeDo was born.

    The Pivot

    We worked on a new site for 3D printing and launched, we got coverage on 3D printing industry, and the user base grew, but people were not really using the collaboration features. It turns out most people 3D printing share are simple one person designs in one afternoon projects. However, what is special about the 3D printing industry is that there is no 3D CAD tool that was built for it. So you end up meeting designers from mechanical engineering, gamers, architects, programmers and any discipline that has a 3D design program that can export the printable files. We (everything eventually becomes “we”) found that everyone wanted this kind of tool in their workplace, while in 3D printing was not as urgently needed.

    Ari and I had a talk where he thought we should pivot either to construction planning, or mechanical engineering. In the end construction seemed more favourable because AutoDesk, who rule that realm, had neglected collaboration (also known as, product lifecycle management or PLM) for the past decade, and so there was a lot of low-hanging fruit. At first I didn’t want to pivot, after all 3D printing was my idea, but eventually, I let it go. A lot of what a startup is about is letting go of your ownership, a company has to grow beyond you. We slowly found ourselves with a technology for an industry we know nothing about, so we learned, we banged on doors and met with architects, contractors, constructors, anyone that is in the process of construction, we can’t cover everything, but we were getting an idea of what is going on.

    Investors and our Investment

    The pivot did more than point us to users we could talk to and find out what they actually need, it also made the business proposition make more sense. The goal was not to just build a big collection of files for people to share, it was to build a system we could charge for. We started getting investors interested, we first started talking to angel investors, but it seemed to be much harder than anticipated. Angels seem to be mostly interested in apps. Something your 6 year old could download, something they can understand, there are a small number of them that would understand what it means to sell something to a construction enterprise. So it made the process much harder, we found that the first meeting was just for grasping what we actually do, before talking about the investment itself.

    Ari and I went around looking for an investment, I had an 80% time job so I had an extra day to do this. I had a few chats about it with Gina, who also had that extra day for OctoPrint. I think that 80% is good when you want something steady while looking for funds, stability in your life in one part lets you explore radical stuff in another.

    Eventually we set a meeting with Incentive, we got a warm recommendation for them for the accelerator Ari was going to at the time called Siftech (an accelerator is a place you got to for a few months that helps your startup out with a physical location and various services, usually paid). Indeed when we met with them they seemed much better than the angel investors we were talking to. The catch was that we had to base our offices in Ariel University (though today it seems not so bad, there is never traffic to work). The program they offer was enough to keep us and an extra worker for a 1.5-2 years. Working on something as volatile as ShapeDo means you don’t want to have to think about personal finance, it means you don’t have time to consider the company’s. So we went through a due diligence, it took a while, but it was a good process for us and the company. Today our offices are located in the investors offices.

    Today, Happy 29th Birthday

    Today we found a go to market, something we can sell, and we are just in the process of hiring someone from the industry to help us out. Our system is flooded with real customer data. Things are going great. But as I saw every step of the way, everything can explode the next day, nothing is certain, and I think that kind of attitude is what got us this far.

    I hope this helps the people around me to know what is going on, I feel like I had to let this be known. It might even help others that are on a similar path. I’ve been playing with 3D printers for fun in the meantime, and I might post a few findings.

    As always, would love to hear your comments.

    Celebrating first day at the office

    Celebrating first day at the office

    Example of what we do today

    What we are selling today is a a construction planning collaboration platform and a comparison tool for constructors. At the bottom you can see how complex an architectural plan is, and how easy it is to spot the changes marked in purple detected by our software, normally this would have been done on hard paper by the constructor.

    Architectural plan with the changes marked between two versions

    Architectural plan with the changes marked in purple between two versions

    Full text

    20 September, 2015 09:23 AM

    10 September, 2015

    Yoav Farhi

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

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

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

    10 September, 2015 07:58 AM

    27 August, 2015

    Amir Aharoni

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

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

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

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

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

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

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

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

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

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

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


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

    Priorities, part 1

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

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

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

    I usually don’t work on translating other projects unless all of the above projects are 100% translated to Hebrew. I occasionally make an exception for OpenStreetMap or Etherpad, but only if there’s little to translate there and the untranslated MediaWiki-related projects are not very important, for example, they are unlikely to be used by anybody except a few software developers, but I translate those, too.

    Priorities, part 2

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

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

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

    Getting Things Done, One by One

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

    I have surprising advice.

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

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

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

    Getting All Things Done

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

    But let’s go further.

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

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

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

    But you’ll be able to congratulate yourself on the accomplishments along the way, and on the big accomplishment of getting everything to 100%.

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

    Another strategy is quietly competing with other languages. Open the statistics for Extensions Used by Wikimedia – Main. Find your language. Now translate as many messages as needed to pass the language above you in the list. Then translate as many messages as needed to pass the next language above you in the list. Repeat until you get to 100%.

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

    MediaWiki translation stats exampleLet’s say that you are translating to Malay. You only need to translate eight messages to go up a notch. Then six messages more to go up another notch. And so on.

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

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

    Good Stuff to Do Along the Way

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

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

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

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

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

    Before translating a component, review the messages that were already translated. It’s useful for learning the current terminology, and you can also improve them and make them more consistent.

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

    As in Wikipedia, Be Bold.

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

    Well done and congratulations.

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

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

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

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

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

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

    What Do I Get for Doing All This Work?

    The knowledge that thanks to you people who speak your language can use Wikipedia without having to learn English. Awesome, isn’t it?

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

    Is There Any Other Way in Which I Can Help?


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

    Filed under: Free Software, localization, Wikipedia

    27 August, 2015 01:05 PM

    18 August, 2015

    Lior Kaplan

    Overdue GPG signing

    In the last few years I wasn’t really maintaining my GPG keys. I’ve created a new one (B4E14499) in 2011 during DebConf11, after the older primary one (99E81DA0) became too weak (1024D). I thought that I didn’t have enough signatures on the new key and almost lost my place on the debian keyring due to removal on the old one (without adding the new key).

    Due to my confusion with the key signature, I didn’t really take the time to sign other people keys. But that doesn’t mean I ignored them completely, as I kept all the information from Debconf11 (yes, 4 years ago) and also the slips I was handed since.

    Today, I finally took the time to finish the backlog and sign all the keys which are strong enough and still valid (haven’t expired / revoked). One less item on the todo list.

    For those who got my signatures – I’m sorry for the delay, but better later than never, right ?

    Filed under: Debian GNU/Linux Tagged: gpg

    Full text

    18 August, 2015 11:23 PM

    16 August, 2015

    Ram on Agmon

    מה זה docker ולמה זה מגניב לאללה

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

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

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

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

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

    היתרונות שדוקר מביא הן:

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

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

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

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

    במכונות לינוקס, כאשר מעלים, לדוגמא, מספר מופעים של אפליקציית java, למשל tomcat, שכל אחד מהם לוקח 1gb של זכרון, הרי הצריכה הכללית לא תהיה 10Gb אלא עשויה להיות הרבה פחות, מה שמבטיח יעילות שימוש בחשמל וגם חסכון ניכר בעלויות השימוש בזכרון. אך במקרה של docker, מאחר שהמכונות לא שומרות מידע, מקבלים הלכה למעשה מספר מופעים של אותה אפליקציה, העושים שימוש באותו זכרון, אך מספקים שירות בנפרד.

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

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

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

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

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

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


    הטקסט המלא

    16 August, 2015 08:20 AM

    15 August, 2015

    Rabin Yasharzadeh

    [NetworkManager] Using dispatcher.d to run scripts based on network connectivity

    This post is based on my personal need to mount/umount some network shares automatically when I’m switching between networks (e.g Homer/Office). Later on I was looking to make it more modular and came out with this solution, which can be further extended.

    NetworkManager have a nice option to execute scripts after ones connect/disconnect to a network, you can find more in the Arch wiki page including some examples.

    The problem I had with the way dispatcher.d works is that it execute all the files in the dispatcher.d folder in a linear order, and you have to code each script to handle the interface, connection state and the network you’re connecting to, so at first all my scripts looked something like this,

    interface=$1 status=$2
    if [ "$CONNECTION_UUID" = "uuid" ]; then
      case $status in
          export SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user "$USER" -name 'ssh')
          su "$USER" -c "sshfs $REMOTE $LOCAL"
          fusermount -u "$LOCAL"

    I hated that I had to replicate the if/case template for each script I was adding, so I came with a different approach. And in my current setup I added the following file to the dispatcher.d folder

    CWD=$(dirname "$0")
    # DEBUG
    echo "$(date +"%F %T") Called with ($*) and connection uuid is: ${CONNECTION_UUID}" >> ${LOG}
    # Needed only if you need to display notification popups
    #export DISPLAY=:0.0
    #export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep session)/environ)
    for FILE in ${CWD}/${CONNECTION_UUID}/${STATE}/*
            echo "$(date +"%F %T") Running ${FILE}" >> ${LOG}
            . "${FILE}"

    NetworkManager pass 2 parameters to each script it runs under the dispatcher directory,

    And so if we have connected to the home network with, The “master” script will list all the files under 

      and will execute them one-by-one.

    And so my dispatcher folder structure look like this,

    # tree /etc/NetworkManager/dispatcher.d 
    ├── 4237f1af-15bf-46f7-a3a1-9a37c0d075de/
    │   ├── down/
    │   │   └── 00-umount-freenas-media*
    │   └── up/
    │       ├── 00-mount-freenas-media*
    │       ├── 70-wifi-wired-exclusive.sh*
    │       └── 99-set-display*
    ├── fdd94fcd-c801-401c-9caa-ebb21e10bc9e/
    │   ├── down/
    │   └── up/
    │       └── 99-set-display*
    ├── Home -> 4237f1af-15bf-46f7-a3a1-9a37c0d075de/
    ├── Office -> fdd94fcd-c801-401c-9caa-ebb21e10bc9e/



    15 August, 2015 08:28 PM

    09 August, 2015

    Ira Abramov

    איך לא לעצבן לנו את הנגן

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

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

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

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

    1. רספברי פאי 2, עם קופסת ABS קשיחה וספק כוח – סביבות $42. אם אתם רוצים ספק שגם יודע לדחוף זרמים כראוי, אני יכול להמליץ על המפלץ הזה.
    2. להתקין דביאן וקודי על כרטיס 16GB, נגיד עוד כ$5.
    3. כבל HDMI.
    4. זהו. סטרימינג מהרשת, מכוננים של USB או משרת הטורנטים שבחדר העבודה. מי צריך יותר מזה, תכלעס? אה, וזה אפילו מריץ מיינקראפט לילדה, אז בכלל…


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

    אני מקווה שלא שכחתי כלום. בהצלחה!

    תגים: , , , , , , , ,

    09 August, 2015 05:11 PM

    05 May, 2015

    Meir Kriheli

    מצגת ההרצאה אודות החידושים ב-Django 1.8

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

    ההרצאה אודות החידושים ב-Django 1.8 שהועברה במסגרת PyWeb-IL 44 זמינה בעמוד הרצאות ומצגות.

    05 May, 2015 09:38 AM

    13 April, 2015

    Liran Tal

    The Drupal Rap song – Everyday I’m Drupalin’

    This YouTube video doesn’t need any further explanation beside it’s title: The Drupal Rap song – Everyday I’m Drupalin’





    Everyday I’m drupalin

    Where them forms you gettin fapi with I’m the fapi boss/ hookin into edit form and webforms is my specialty sauce/ I’ll hook form alter by form id’s or entities/ put a list on Ajax/ just to keep it callin back/

    I got them distrobutions, I’m like acqia/
    Check my public repos, I didn’t copy nuttin/ I know dries n webchick, I kno Ryan szrama/ all the commerce guys we hipchat when they got some drama/
    Might not be pretty code but it gets me paid/ I’m using rules like php loopin through arrays/ I put it all in features, so the code is stable/ it might take longer, but next time I just click enable/ These dudes clearin caches, on every hook init/ queries by thousands, page loads by the minutes

    No matter the language we compress it hard/ drugs cc all, we just drugs cc all/
    Where’s all of the changes, you never saw/ so drush cc all, we just drugs cc all/ I lean heavy on smacss, compass compilin my sass/ you just installed flexslider now you teachin a class/
    I seen your content types, I don’t need to kno you/ to know that we ain’t even in the same nodequeue/
    I’m on drupal answers, check my reputation/ I’m on my tablet earnin karma while I’m on vacation/ ya girl like a module, she stay hookin n/ you couldn’t code an info file, without lookin in/
    Mo scrums, equals better sprints, break the huddle, n the work begins

    Thanks to New Valley Media for helping with the video http://www.newvalleymedia.com/
    Thanks to Broadstreet Consullting http://www.broadstreetconsulting.net

    The post The Drupal Rap song – Everyday I’m Drupalin’ appeared first on Liran Tal's Enginx.

    13 April, 2015 05:26 PM

    30 January, 2015

    Dan Fruehauf

    Privilege Escalation – be slack and pay for it

    My predecessor(s) had left a bunch of people at my work place (not even developers) with sudo access to chown and chmod – for the purpose of data management. For a while I had tried to explain that having sudo access to just those two commands is effectively having full root access on the machines.

    I had to demonstrate it. So I did:

    cat <<EOF >> make-me-root.c
    #include <unistd.h>
    int main() {
        execv("/bin/bash", NULL);
        return 0;
    gcc -o make-me-root make-me-root.c
    sudo chown root make-me-root
    sudo chmod u+s make-me-root

    Alright, demonstrated. Now it’s time for the raising eyebrows to follow.

    And now also comes the part where I know it’s almost impossible to revoke privileges from people after they got used to a broken workflow.

    30 January, 2015 12:43 AM

    18 November, 2014


    OpenSUSE 13.2: טיפים וטריקים

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

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

    הטקסט המלא

    18 November, 2014 07:27 PM

    23 October, 2014

    Yaniv Gershoni

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

    אשכול הקישורים הגדול

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

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

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

    הטקסט המלא

    23 October, 2014 12:30 AM

    04 September, 2014

    Arie Skliarouk

    O GTalk team, where were thou? (part II)

    Four full years passed since my last post on GTalk. Unfortunately I can't say much good about Google Instant Messenger efforts. It looks they would like everybody to switch from XMPP-based GTalk to proprietary protocol of Hangouts.

    We saw stop of XMPP federation, wholesale upgrade of GTalk clients to Hangouts, last GTalk for Windows have been released15 months ago. Next logical step is to stop supporting XMPP altogether. What a sad day that would be..

    Of the handful biggest IM providers, none supports open protocol (besides Google/XMPP yet). With 19 billions valuations the market is huge, and one would expect the fierce competition to leave no rock unturned in attracting more users. Unfortunately commercial interests prevail here.

    There never was better time for an established company to embrace open-protocol platform. May be there already is? Please post in comments.

    PS. Whoever is still on XMPP/Jabber/GTalk platform, uses pidgin on ubuntu 14.04 amd64 and misses "message delivery confirmation" plugin - here is a bit of solace for you: pidgin-xmpp-receipts_0.6-1_amd64.deb

    04 September, 2014 10:59 AM

    24 August, 2014

    Doron Rainer

    סדרת מדריכים: לינוקס זה לא מפחיד

    שלום לכולם,

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

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

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

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

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

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

    כרגע ישנם 2 פרקים.

    אשמח לתגובות :)

    24 August, 2014 06:08 AM

    23 August, 2014

    Doron Rainer

    אז למה אני משתמש בלינוקס ולא בווינדוס?

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

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

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

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

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

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

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

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

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

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

    למה תפריטים חבויים? למה לא פשוט להציג כפתור לכל התפריטים האלה?

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

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

    23 August, 2014 05:19 PM

    16 August, 2014

    Yehuda Bar-Nir

    מדריך למתחילים בסקראץ׳

    [פוסט זה הוא תרגום של מדריך המשתמש הרשמי של Scratch. תוכלו להוריד את המדריך באנגלית מדף העזרה באתר. הזכויות למקור שמורות ל Lifelong Kindergarten Group, MIT Media Lab. מופץ ברשיון CC-BY-SA 2.0]

    Scartch Cat

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

    מסך לדוגמה מסקראץ׳

    המדריך הזה יאפשר לכם ליצור פרויקט בסקראץ׳.

    ליצירת פרויקט חדש, גשו לאתר: http://scratch.mit.edu. אם האתר נפתח באנגלית, ניתן לשנות את שפת הממשק מהתפריט בתחתית הדף. לאחר מכן, לחצו על הכפתור צור.

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

    1 – התחילו לזוז

    לבנת זוז

    גררו לבנת זוז לאזור התסריטים.

    לחצו על הלבנה

    לחצו על הלבנה כדי לגרום לחתול לזוז.

    2 – הוסיפו צלילים

    לבנת נגן בתוף

    גררו לבנת נגן בתוף וחברו אותה ללבנת הזוז.

    לחצו והקשיבו

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

    החלפת צלילים

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

    3 – התחילו ריקוד

    הוספת לבנת זוז חדשה

    הוסיפו לבנת זוז חדשה. לחצו בתוך הלבנה והוסיפו סימן מינוס.

    לחצו להפעלה

    לחצו על כל אחת מהלבנים כדי להריץ את כל הערמה.

    לבנת נגן בתוף נוספת

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

    4 – שוב ושוב

    לבנת חזור

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

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

    שינוי מספר החזרות

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

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

    5 – אמרו משהו

    לבנת אמור

    לחצו על קטגוריית המראה וגגרו החוצה לבנת אמור.

    שינוי טקסט

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

    חברו לראש הערמה

    אחר-כך, חברו את לבנת האמור להתחלה.

    6 – דגל ירוק

    כאשר לוחצים על הדגל הירוק

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

    הפעלת הדגל הירוק

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

    7 – שנו צבע

    עכשיו, נסו משהו שונה…

    לבנת שנה אפקט

    גררו לבנת שנה אפקט.

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

    8 – לחיצה על מקשים

    לבנת כאשר נלחץ מקש

    חברו לבנת כאשר נלחץ מקש

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

    בחירת מקש

    תוכלו לבחור מקש שונה מהתפריט

    9 – הוסיפו רקע

    תוכלו להוסיף רקע לבמה.

    בחירת רקע

    לחצו כפתור רקע כדי לבחור רקע חדש.

    בחרו רקע מהספריה (למשל "spotlight-stage").

    ספרית הרקעים

    לחצו אישור.

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

    הרקע החדש

    10 – הוסיפו דמות

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

    כפתורי הוספת דמות

    כפתורי הוספת דמות:

    דמות מהספריה בחרו דמות מהספריה

    צייר דמות ציירו דמות משלכם

    דמות מקובץ העלו דמות/תמונה מקובץ

    דמות ממצלמת רשת צלמו תמונה (ממצלמת רשת)

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

    תוכלו לגרור את הדמויות ולמקם אותן על הבמה.
    גררו את הדמות

    11 – חקרו!

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

    הוסיפו צליל:

    לחצו על לשונית הצלילים. תוכלו לבחור צליל בחר צליל, להקליט צליל משלכם הקלטה, או ליבא מקובץ צליל מקובץ. (בפורמט AIF, MP3 או WAV)

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

    שנו תלבושות:

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

    צרו אנימציה:

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

    12 – טיפים!

    שם לפרויקט
    תנו שם לפרויקט שלכם.

    לרעיונות נוספים, לחצו על טיפים:

    חלון טיפים

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

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

    שמור ושתף

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

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

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

    דף פרויקט
    דף פרויקט

    לחצו מסך מלא לקבלת מסך מלא.

    לחצו שיתוף כדי שאחרים יוכלו לצפות ולשחק בפרויקט שלכם. כאשר אתם משתפים, אחרים יכולים לבקר ולשחק בפרויקט שלכם.

    הוסיפו הערות לפרויקט.

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

    כדי ללמוד עוד, לחצו עזרה או גלשו אל http://scratch.mit.edu/help (אנגלית).

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

    16 August, 2014 03:02 PM

    27 July, 2014

    Amir Aharoni


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

    קראתם נכון, exe.

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

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

    נ״ב: בשדות שם המשתמש והססמה אתם עדיין מגדירים dir="rtl", למרות שהם תמיד כתובים משמאל לימין. זה אמור להיות תיקון של שורה אחת. יהיה נחמד אם תתקנו את זה.

    27 July, 2014 08:49 AM

    16 May, 2014

    Tomer Cohen

    עמותת המקור במשבר — עזרתכם נדרשת!

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

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

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

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

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

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


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

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

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

    הטקסט המלא

    16 May, 2014 10:34 AM

    14 May, 2014

    Amit Tal

    התקנת סביבת פיתוח לאינטרנט עם אובונטו 14.04

    למדריך התקנת פיתוח לאינטרנט עם אובונטו 14.04 לחצו כאן

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

    הטקסט המלא

    14 May, 2014 01:34 PM

    22 April, 2014

    Tomer Cohen

    המראה החדש של פיירפוקס

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

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

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

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

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

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

    Google Chrome 1 UI taken from Google Chrome comic book

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

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

    למשל שורת הכתובת, שבעבר הופיעו בה כתובות קודמות שהמשתמש ביקר בהן כעת הפכו לחכמות יותר; גוגל למשל נוהגים לשלב בהן בכרום תוצאות חיפוש, בעוד בפיירפוקס ניתן דגש להיסטורית הגלישה של המשתמש ולסימניות. דפי הפתיחה הפכו להיות מותאמים יותר למשתמש ומציגים את האתרים המועדפים על המשתמש, וכדומה. באופן דומה לשינויי הממשק ביישומים אחרים, דוגמת סרגלי הכלים של Microsoft Office בגרסאותיו האחרונות, שינוי אופן השימוש בסביבות עבודה מובילות בלינוקס דוגמת Gnome ו־KDE, כיום מקובל לתת דגש רב יותר על הפעולות שנמצאות בשימוש תדיר, ולהצניע כפתורים ופעולות שהמשתמש אינו נוהג להשתמש בהן.

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

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

    לחצו כדי לצפות במצגת.

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

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

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

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

    Firefox 29 menu panel screenshot

    לוח התפריט המאוחד בפיירפוקס 29

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

    Firefox 29 customization screenshot

    התאמה אישית של פקדי הדפדפן

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

    פיירפוקס עם מראה מותאם אישית

    פיירפוקס עם מראה מותאם אישית

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

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

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

    הטקסט המלא

    22 April, 2014 04:07 AM

    17 April, 2014

    Yaniv Gershoni


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

    הסתובבתי קצת בין קיצורי הדרך וראיתי פתאום שאם לוחצים על Ctrl+Alt+מקש הרווח נכנסים למצב של...
    "Create Orientation"

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

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

    פרטים נוספים »

    הטקסט המלא

    17 April, 2014 03:21 PM

    13 April, 2014

    Meir Gil

    חבר חדש Darktable, או איך לעשות Post Production בכמה שניות

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

    13 April, 2014 08:50 AM

    27 March, 2014

    Jonathan Klinger

    תביעה ייצוגית על הפרת זכויות יוצרים? אגוז קשה. על Waze.

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

    [קובץ התביעה (זהירות, מסמך DOC)]

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

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

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

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

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

    27 March, 2014 01:19 PM