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

27 ינואר, 2012

Dolev Ravid

‫הפרדת פרוטוקולים בשרתי Exchange‬

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

link-exchangeבארגון החליטו לעבור לעבוד עם סביבת רד האט ובחרו בקליינט אבולושן שיהווה להם תחליף ל-Outlook.
רק מה ? פה התחילו צרור בעיות אחרות שמקורן בתקשורת מול שרתי Exchange  מיקרוסופטיים.
אבולושן היה מתמוטט להם בעבודה עם פרוטוקול Mapi (Messaging Application Programming Interface) שהוא למעשה פרוטוקול ה-Exchange של MS.
שוחחתי עם אחד העובדים שם , ניסיתי להבין באיזה שלב בדיוק קוראים הנפילות.
מסתבר שכאשר לקוח פותח את המשתמש ומריץ את אבולושן , עוד בעלייתה היא מתחברת לפרוטוקול ומושכת מיילים, פגישות, שינוי באנשי קשר וכו’ באופן אוטומטי
הדבר כנראה לוקח יותר מידי זמן ומשאבים וברגע שהלקוח “מתעצבן” –ובצדק- הוא מתחיל ללחוץ על כפתורים בממשק ואז האבולושן נופלת לו.
הבנתי מהבחור ששוחח איתי שהחיבור לפרוטוקול מהווה מעמסה אדירה יחסית.

הצעתי לו ישר לפצל פורטוקולים הרי שלזה מספר יתרונות משמעותיים:

  1. יתרון ברוחב הפס ברשת – צריכה עניינית יותר של תוכן. אם אתה בתור לקוח רוצה לקרוא רק מיילים , בלי לראות את לוח השנה שלך אז אתה קורא רק מיילים. כאשר Imap לא מוריד עבורך את כל האי-מיילים.
  2. פחות מאשבי מערכת- MAPI בזמן ההתחברות שואבת מיילים (גם אם אני כרגע לא רוצה לקרוא אותם), פגישות, פתקיות, אנשי קשר.. פשוט ה-כ-ל דבר שלעיתים או בארגונים גדולים יכול להוות מעמסה של ממש על רשת המחשבים.
  3. שירותי CO-LOCATE  לפי פרוטוקול- ניתן לפצל את כלל השירותים למספר שרתים שונים ובכך להקל את העומס של כל שרת.
  4. ניטור טוב יותר של משאבים הכולל אפשרות תעדוף- QoS .

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

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

הטקסט המלא

27 ינואר, 2012 02:45 PM

Ido Kanner

השנה 1994, הגרסה 0.2 התכנה FPK

התגלה אוצר באחד משרתי ה FTP של הפרוייקט FPC: גרסה 0.2 של המהדר.
נחמד לראות, ומומלץ להשתמש במילון גרמני אנגלי/עברי בשביל להבין.


Filed under: FPC, Object Pascal, היסטוריה, טכנולוגיה, פיתוח, קוד פתוח Tagged: fpc

27 ינואר, 2012 12:40 PM

sml

טיפ: פתיחת שיתופי סמבה מתוך סייר קבצים

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

הטקסט המלא

27 ינואר, 2012 12:30 PM

Inbar Hovav

ורוד עכבר.

קניתי לק חדש של OPI, בצבע ורוד עכבר. (Pompeii Purple NLC09) האפור עכבר מתבקש לפנות את מקומו לטובת הורוד עכבר. ענבר.

27 ינואר, 2012 03:01 AM

Lior Kaplan

PHP 5.4 @ Debian

PHP 5.4.0 is around the corner, with RC6 released this weekend. With the courtesy of Ondřej Surý it’s already available in experimental.

Earlier this week, Raphael Geissert, tested some PHP extensions with the new version and reported 16 bugs (severity: important) against those who failed to build with PHP 5.4. As they will become RC bugs when 5.4.0 will enter unstable (probably around mid February), I preferred to handle them sooner than later. The result is 3 patches sent (one already uploaded) and 5 NMUs done.

During the process I poked through a lot of upstream SCMs. In the way I found out a trivial change was done in PECL’s SVN two years ago for all the extensions located there, which got me suspicious regarding some extensions we have. For non PECL hosted extensions, I had to track if and when a fix was done and use it for building or do a trivial fix myself. Packages using the 3.0 (quilt) source format were extremely easy to fix, and I was quite happy it generally went fast.

In general I’m a passive subscriber to the Debian PHP Maintainers mailing list, and finally could help actually and not just reply emails. For me it’s also doing some Debian work after a few months of focusing on the coming LibreOffice 3.5 release.

update [26/1/2012]:

From the 16 issues, only 2 aren’t fixed already or will be on the next upstream release. As their upstreams are dead, this is in the hands or the debian people, at least till they’ll FTBFS on unstable (instead of experimental).


Filed under: Debian GNU/Linux, PHP

Full text

27 ינואר, 2012 01:31 AM

PHP 5.4 @ Zend

As a Linux integration guy at Zend, most of my time is spent in compiling PHP related code or dealing with the variety of Linux distributions we support. With the coming release for PHP 5.4, we (at Zend) had some interesting stuff going on.

As part of the RC phase, I got to check the status of the 50-60 PHP extensions we provide, especially the PECL extensions which have different release cycles than the main PHP. With minor versions, this usually doesn’t really matter, but for major versions this means that some extensions need a little bit of love and fixes to work well with the new PHP version. This of course with the help of our developers.

The changes are usually one-liners due to a variable type change, or finding commits in the extension’s SCM and applying/back-porting it to the current versions (e.g. pecl memcache). Our policy regarding the patches we have, is that they should at least be sent to upstream (a core member or a bug report, e.g. #55703). I think I’m in the best position to enforce that patch policy, so in a few recent cases, I found myself asking one of our developers if the patch he sent me was already accepted upstream before willing to take it into the build process (in this case they are used temporarily, till we’ll work with the next RC or final release).

While most people build PHP as a final and standalone product, we also test it against ZendServer (or the other way around, depends on your POV). This helps to discover problems related to and implications of the changes done in the major version. During the PHP 5.4 RC cycle (which is still not finished), we had, more than a few times, that an internal problem discovered led to debugging, code reviewing and sending feedback (and patches when relevant) to the PHP project. Providing fixes for the issues found, helps having PHP in a better shape for release. At least for me, that’s one of the fun parts of work – getting the chance to contribute back to the community (or at least making sure others do, as I don’t write the patches myself).

Filed under: PHP

Full text

27 ינואר, 2012 01:21 AM

Lior Kaplan

מסיבת בדיקות עבור ליברה אופיס

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

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

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

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

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


Filed under: LibreOffice

27 ינואר, 2012 12:08 AM

26 ינואר, 2012

Artyom Beilis

הגיע הזמן לשרת וירטואלי פרטי

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

הסיבה העיקריות למעבר הן:

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

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

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

אחרי הרבה השוואות של מחירים (לא זולים) של שרתי VPS החלטתי ללכת על Amazon EC2, כיוון שאני משלם על מה שאני משתמש... וחוץ מרוחב הפס אני לא ממש הולך להשתמש בהרבה :-). לכן, החלטתי ש־Amazon EC2 יהיה אידאלי לטכנולוגיה שאני מציע.

ובכן, רכשתי שם המתחם, סידרתי שרת ב־EC2 ותוך זמן קצר עברתי ל־VPS משלי בענן.

כרגע יש לי שרת שמריץ lighttpd ומאחוריו שלוש יישומי FastCGI: עבור האתרים:

השרת מהיר וקל כנוצה עם ערכי uptime:load average שווים ל־0.

הטקסט המלא

26 ינואר, 2012 09:45 PM

Doron Ofek

‫איפה אתם חושבים זרוקה הפרטיות של הילדים שלכם ?‬

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

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

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

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

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

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

למעשה מעין הרחבה של היומן שפעם מורים היו מסתובבים איתו ..

מטרה יפה – היישום שלה , לא ממש.

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

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

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

כלומר מישהו הפריט את הפרטיות של הילדים שלכם. יופי.

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

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

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

מצאתם עוד מידע מעניין ? ספרו לנו ..

26 ינואר, 2012 09:02 AM

Artyom Beilis

עברתי שרת ושם המתחם

בשעה טובה, עברתי שרת.

אנא עדכנו את ה־rss שלכם לשרת החדש:

http://artyom.cppcms.com

העברה אוטומטית מהכתובת הישנה (art-blog.no-ip.info) לחדשה מתבצעת בצורה אוטומטית אבל היא תיעלם בקרוב.

הטקסט המלא

26 ינואר, 2012 08:45 AM

שפת תכנות לא משנה...

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

  • תהיה מהירה
  • תהיה פשוטה
  • תהיה חזקה
  • תהיה ברורה
  • תהיה נוחה
  • תכין לנו קפה לארוחת הבוקר...

אז נגיד מחר אני אצליח ליצור שפה חדשה:

  • מהירה כמו C או C++‎
  • קלה להבנה כמו Java או Pascal
  • גמישה כמו Python או JavaScript
  • ועוד כמה תכונות נוספות שתרצו לפרט

ואז כשיהיה לי מהדר (או משערך) אולטימטיבי שיעבוד על כל מערכת הפעלה ובכל סביבה החל ממערכות משובצות עד מחשבי על, החל מ־ARM עד ל־Itanium ואפתח IDE אולטימטיבי יהפוך אותי לפרודוקטיבי־על, אני אתחיל לעבוד...

מה יקרה?

רוב המפתחים היום לא כותבים אלגוריתמים הם כותב אפליקציות. רוב המפתחים היום צריכים לדעת את הספריות שלהם יותר טוב מהשפה, למתכנת GUI ממוצא יותר חשוב להבין אין עובד Qt מאשר לדעת כיצד לעשות partial template specialization. למתכנת יישומי עיבוד תמונה ב־Matlab יותר חשוב לזכור את הפונקציות שמבצעות convolution על מטריצה, מאפשר לזכור כיצד להגדיר מחלקות. למפתח Web יהיה יותר חשוב לדעת כיצד לייצר טופס, מאשר כיצד להשתמש בפונקציות למבדה.

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

זאת הסיבה רוב השפות שנולדות לאחרונה הן רצות על JVM או על ‎.Net או כמו Vala משתמשות באוסף הספריות העשיר של Gnome כדי להיות פרודוקטיבי.

ומה עם "שפות־העל" שפותחו והמון מחשבה הושקעה בהן כמו, למשל, D? הן לא התרוממו.

למעומת זאת, שפות "עתיקות" כמו C ממשיכות להתקיים והמונים כותבים בהן. Vala בזכות האימוץ המלבב של GTK ו־GObject תופסת תאוצה. Go? כנראה לא תתרומם בקרוב בלי השקעה אדירה.

במילים אחרות.

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

הטקסט המלא

26 ינואר, 2012 08:31 AM

טיפוסים דינאמיים או סטטיים?

נתקלתי בכתבה מעניינת

Static vs Dynamic Debate Decided

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

הטקסט המלא

26 ינואר, 2012 08:31 AM

מועמד לשחרור ראשון של הדור הבא של CppCMS זמין להורדה

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

איפשהו באפריל 2009 היה לי ברור שהארכיטקטורה של הדור הראשון של CppCMS לא הייתה מוצלחת:

  • ה־API היה בנוי בצורה שלא אפשר הרחבה קלה
  • הארכיטקטורה לא אפשרה פיתוח מונחה אירועים: Comet
  • הישענות על ספריות צג ג' כמו CgiCC ו־libfastcgi שהיו להן הבעיות API עמוקות, לא אפשרה לפרויקט להתקדם.
  • המערכת הייתה קשורה בצורה מאוד מובהקת ל־POSIX API ולא אפשרה תמיכה טבעית במערכת הפעלה Windows.

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

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

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

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

היום, שנתיים וחצי אחרי שנוצר ענף "refactoring" ב־svn ה־API התייצב ומועמד לשחרור הראשון זמין להורדה.

הטקסט המלא

26 ינואר, 2012 08:31 AM

על חשיבותן של בניות ובדיקות ליליות

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

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

אבל כשהפרויקט מגיע ל־100,000 שורות של קוד, תומך במספר רב של מערכות הפעלה (Linux,‏ Solaris,‏ BDS,‏ Windows,‏ Darwin), מספר רב של קומפיילרים (gcc‏, clang‏, intel‏, msvc‏, sunstudio) ומספר רב של פלטפורמות (x86‏, x86_64‏, arm) אז הבדיקות ידניות לא ממש עומדות על הפרק, אלא אם כן, יש לך המון זמן=כסף מיותר.

אז מה צריך כדי להקל על ניהול הפרויקט?

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

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

בניתי מערכת כזו עבור CppCMS וכל לילה נוצר לי הדו"ח הבא.

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

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

    1. להתעורר בבוקר ולוודא שכל הטסטים עברו
    2. להריץ תסריט שייצור גרסה מוכנה ולהעלות אותה ל-SF.‏
    3. לפרסם הודעה בבלוג/ברשימת תפוצה.

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

הטקסט המלא

26 ינואר, 2012 08:31 AM

מפתח בארץ ה־IDE

לאחרונה, הייתי צריך לבחון סביבת פיתוח משולבת (IDE) בלינוקס, ולעשות להן השוואה: איזו סביבה היא יותר מתקדמת ונוחה בהקשר של פיתוח ב־C++‎. למרות שאני כותב הרבה קוד, ויצא לי בעבר להשתמש בלא מעט IDE, ביניהם גם Visual Studio וגם KDevelop 3, אני מעדיף לעבוד עם vim, סביבת הפיתוח האולטימטיבית. אבל vim בתור "סביבת פיתוח משולבת" זה לא בדיוק מוכר. יש אנשים שאוהבים IDE... כך שפשטתי שרוולים והתחלתי לבדוק.

על הפרק עמדו מספר אופציות:

  • KDevelop שהיה לי ניסיון איתו בגסראות 3
  • Eclipse שרבים עובדים איתו
  • Netbeans שרבים ממליצים עליו

ומספר IDE נוספים: Anjuta, CodeBlocks ו־CodeLite.

התחלתי מ־KDevelop 4:

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

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

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

הסביבה מאוד מהירה ומגיבה בצורה כמעט מידית.

מבחינת יכולת הדיבוג, הדבר היחיד שלא הצלחתי למצוא זה כיצד אני מגדיד למשל catch throw - לעצור על זריקת החריגה, בסוף, הפעלתי את זה ישירות דרך מסוף ה־gdb.

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

המשכתי ל־Eclipse

אחרי מעט הגדרות הצלחתי לגרום לו לעבוד עם קובץ Makefile הנוצר ע"י CMake, הגדרתי פרויקט והתחלתי לעבוד.

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

בנוסף, בניגוד ל־KDevelop הוא לא ידע להשלים ערכים תוך כדי הקלדה בצורה לגמרי אוטומטית, למשל אני מתחיל לכתוב my_variable הוא לא מציע לי השלמה אחרי שכתבתי my_va - צריך ללחוץ ctrl-space, אבל בסה"כ הסביבה בהחלט לא רעה ופרודוקטיבית.

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

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

ניסיתי סביבות "קלות" יותר

אז פתחתי CodeBlocks שרבים ממליצים עליו. ויתרתי עליו די מהר - מבחינתי חוסר אינטגרציה עם כלי בניה חיצוניים הוא "deal-breaker" ובכלל לא התרשמתי ממנה יותר מידי. ניסיתי קצת codelite - גם הוא היה יותר מידי lite לטעמי.

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

גם היא ירדה מהפרק די מהר.

נותרה לי סביבת Netbeans

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

בניגוד לסביבות אחרות שזמינות ישירות ומהמאגרים של Ubuntu, ‏Netbeans לא מופיעה שם, צריך להתקין אותה בנפרד. הורדתי את הגרסה היציבה האחרונה המותאמת לפיתוח C++‎ והתקנתי.

פה הייתה לי הפתעה ממש טובה:

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

ועוד

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

סיכום

אחרי הרבה שנים של עבודה עם vim אני חושב שאתחיל לבחון את הגישה שלי ל־IDE מחדש. כרגע Netbeans היא הבחירה המובילה. הייתי מאוד רוצה לעבוד עם KDevelop אבל אני לא חושב שאוכל לעבוד אתו כל עוד הוא קורס.

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

הטקסט המלא

26 ינואר, 2012 08:31 AM

Sqlite - עבודה עם WAL.

אומנם גרסה 3.7 של Sqlite שוחררה יותר מלפני שנה, לא רבים שמו לב לשורה הקצרה ברשימת השינויים:

Added support for write-ahead logging.‎

זאת שיטת עבודה שכל בסיס נתונים מודרני עובד איתה, לעומת שיטת העבודה הרגילה של Sqlite3 והיא ניהול "לוג לשחזור לאחור" - Rollback.

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

השיטה החדשה שמומשה בגרסה 3.7, עובדת עם קובץ WAL -‏ Write Ahead Log. כל שינוי נרשם לקובץ הלוג והקובץ המקורי נשמר ללא שינויים. מה שחשוב כאן שכדי להבטיח שרידות מספיק לקרוא fsync - פעם אחת בלבד עבור קובץ WAL. הטרנזקציות הבאות יוסיפו עוד מידע לסוף הקובץ. אחת לכמה זמן sqlite3 מעביר את כל השינויים לקובץ בסיס הנתונים המקורי ומאפס את קובץ הלוג. יותר מזה, כיוון שהקובץ המקורי נשאר ללא שינויים אז טרנזקציות קריאה יכולות לרוץ במקביל לטרנזקציות כתיבה.

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

כך שאם אתם משתמשים פעילים של Sqlite3 - תבדקו את האופציה

PRAGMA journal_mode=WAL;

היא יכול לשפר משמעותית את היישומים שלכם.

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

אם מגדירים

PARAGMA synchronous=NORMAL

אז במצב של WAL ה־fsyncים שמבטיחים את ה־D -‏ Durability ייקראו רק פעם ב־checkpoint ולא כל טרזקציה. אם המחשב קורס (חשמל/חומרה) אז אנחנו נאבד מספר טרנזקציות אחרונות אבל בסיס הנתונים יישאר תקין, במילים אחרות, אנחנו ניפול בגבול טרנזקציה, אבל לאו דווקא הטרנזקציה האחרונה. שיטה זו מאפשר להגדיל מספר עדכונים מכמה עשרות בשנייה לכמה אלפים.

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

למשל, ב־PostgreSQL ניתן להגדיר אופציה synchonous_commits=off ברמת הקשר. אז עדכון הלוג יתבצע ללא fsync ורק פעם בשניה יתבצע עדכון מלא. בבסיס הנתונים MySQL אפשר להגדיר את זה בעזרת אופציה innodb_flush_log_at_trx_commit=2, אבל ההגדרה הזו תעבוד ברמת שרת MySQL כולו ולא רק ברמת הקשר או בסיס הנתונים הספציפי.

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

הטקסט המלא

26 ינואר, 2012 08:31 AM

מי הרס את שולחן העבודה שלי?

פעם הייתי משתמש מרוצה של KDE 3. יצא KDE 4 הזדעזעתי, לא התרגלתי, לא הצלחתי להתאים אותה לדרישות שלי. עברתי ל־Gnome 2 שאז כבר התקדם בצורה משמעותית. ואז יצאה Unity הבלתי נסבלת ומיד עברתי ל-Gnome 3. אומנם הזדעזעתי קצת פחות ואפילו הצלחתי להגיע למשהו סביר, אבל בכל זאת לא הייתי מרוצה. אז ניסיתי XFCE בגרסה האחרונה. אני חושב שאשאר שם.


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

ניסיתי לאחרונה 3 סביבות שנחשבות ה"מתקדמות ביותר" היום: KDE 4,‏ Unity וגם Gnome 3 - בשלושתן מצאתי מספר בעיות שהפריעו לי:

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

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

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

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

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

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

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

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

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

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

מחשב נועד לעבודה: השינויים לא צפויים ורכיבים שנעלמים פוגעים באופן ישיר ביכולת העבודה שלי. למשל Gnome 3 לא ייבא את הסרגל עם לחצני התכנה שלי מ-Gnome 2. דברים שאתה משתמש בהם ביום יום נעלמו.

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

אני חושב שמפתחים התחילו לשכוח ש-Gnome/KDE/Unity הם בסה"כ קליפה - "Shell". הם צריכים לעזור לנו לעבוד - לא להפריע. הם לא הרכיב המרכזי אלא רכיב חשובה אבל משני.


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

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


עדכונים

מסתבר שלינוס עבר ל־XFCE‏.

ציטוט:

I'm using Xfce. I think it's a step down from gnome2, but it's a huge step up from gnome3. Really.‎

הטקסט המלא

26 ינואר, 2012 08:31 AM

מספר ימים עם Unity

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

אז החתחלתי לעבוד עם Unity. דבר ראשון שקפץ לי: הם ניסו להעתיק את הממשק של Mac OS X. העתיקו את התפריט שמופיע למעלה העתיקו את ה־Dock. האמת שלא אהבתי את זה, אבל החלטתי לתת לזה ניסוי.

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

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

  1. אין appletים... זה אחד הדברים החשובים מבחינתי, תמיד מופיע לי מד העומס, מד צריכת הזיכרון. איפה אפלט של שולחן עבודה וירטואלי שאפשר להזיז חלון פעולת עכבר אחת?
  2. התאמה אישית... איפה אני עושה התאמה אישית של ממשק? איך למשל אני מגדיר 6 שולחנות עבודה ויראואליים או 4 שיושבים בשורה אחת. קשה למצוא ולמשל אפילו חיפוש בתפריט הציג לי שתי תוכנות של הגדרות (אחד של Gnome והשניה של KDE)
  3. איך אני מגיע להגדרות המערכת וכד', למשל כיצד מגדיר מדפסת. פעם היה תפריט ברור System->Printing ומה עכשיו?

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

טוב, אחרי שאשדרג ל־11.10 אחזיר את ה־Gnome הרגיל (או שגם הוא ייהרס כי זה היה Gnome 3?)

אני כבר מחכה ש־12.04 תשוחרר - LTS אז אני לפחות אדע שיש לי שקט בלי מהפכות למשך שנתיים.

הטקסט המלא

26 ינואר, 2012 08:31 AM

שוחררה גרסת 1.48 של Boost שמכילה Boost.Locale

סוף סוף שוחררה גרסה 1.48 של Boost. אחד הדברים המשמעותיים בה היא שילוב של Boost.Locale - ספריית הלוקליזציה שאני פיתחתי.

קישורים:

להזכירכם, Boost.Locale פותחה כחלק מפרויקט CppCMS‏

הטקסט המלא

26 ינואר, 2012 08:31 AM

כמה מטומטם ה־API יכול להיות

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

תוך כדי בירור נכנסתי למכונה וגיליתי חלונית עם הודעה בסגנון:

The library e:\mingw\lib\libsqlite3.dll is not valid windows library. Reinstalling
application may solve the problem

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

אני מצפה שפונקציה תחזיר שגיאה ולא תציג חלון! אחרי חיפוש קצר הגעתי לפונקציה SetErrorMode... שמאפשרת "לפתור" את הבעיה. אבל באמת... אם אין dll אז LoadLibrary יחזיר שגיאה אבל אם ה־dll לא ניתן לטעינה תקפיץ חלון?!?!

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

בקיצור: אם אתם לא חייבים אל תפתחו לחלונות!

הטקסט המלא

26 ינואר, 2012 08:31 AM

Shlomi Noach

Syntax of the day: IS TRUE and IS FALSE

What makes for a true statement?

We usually test statements using a WHERE clause:

SELECT * FROM world.City WHERE Population > 1000000

The "Population > 1000000" statement makes for a boolean expression. Using WHERE is just one way of evaluating it. One can also test with IF():

SET @val := 7;
SELECT IF(@val > 2, 'Yes', 'No')

TRUE and FALSE

The two are keywords. They also map for the numerals 1 and 0, as follows:

mysql> SELECT TRUE, FALSE;
+------+-------+
| TRUE | FALSE |
+------+-------+
|    1 |     0 |
+------+-------+

Like in the C programming language, a nonzero value evaluates to a true value. A zero evaluates to false. A NULL evaluates to... well, NULL. But aside from 3-valued logic, what's important in our case is that it is not true.

However, simple value comparison is incorrect:

mysql> SELECT @val, @val > 3, @val > 3 = TRUE as result;
+------+----------+--------+
| @val | @val > 3 | result |
+------+----------+--------+
|    7 |        1 |      1 |
+------+----------+--------+

mysql> SELECT @val, @val = TRUE as result;
+------+--------+
| @val | result |
+------+--------+
|    7 |      0 |
+------+--------+

To test for the truth value of an expression, the correct syntax is by using IS TRUE:

SELECT @val, @val IS TRUE as result;
+------+--------+
| @val | result |
+------+--------+
|    7 |      1 |
+------+--------+

Likewise, one may use IS FALSE to test for falsehood. However, if you wish to note NULL as a false value this does not work:

SELECT @empty, @empty IS TRUE, @empty IS FALSE;
+--------+----------------+-----------------+
| @empty | @empty IS TRUE | @empty IS FALSE |
+--------+----------------+-----------------+
| NULL   |              0 |               0 |
+--------+----------------+-----------------+

If you're unsure why, you should read more on three-valued logic in SQL. To solve the above, simply use IS NOT TRUE:

SELECT @empty, @empty IS NOT TRUE;
+--------+--------------------+
| @empty | @empty IS NOT TRUE |
+--------+--------------------+
| NULL   |                  1 |
+--------+--------------------+

In summary, use IS TRUE and IS NOT TRUE so as to normalize truth values into a 0, 1 value range, C style, including handling of NULLs.

26 ינואר, 2012 04:09 AM

25 ינואר, 2012

Amir Aharoni

נציגה

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


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


מתחבר לנציג שירות …

עדי: שלום … אני נציגת שירות וירטואלית באתר

עדי: אני רואה שאתה מתעניין בויזה לחו"ל, אפשר לדעת באיזה ויזה אתה מתעניין?

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

עדי: האם אתה מעוניין שנחזור אליך עם ייעוץ מקצועי אישי וחינם?

מבקר: אני מעוניין שתתקנו "איזה ויזה" ב"איזו ויזה".

עדי: אנו יכולים להציע לך עצות מקצועיות והמלצות…

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

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

עדי: אתה רוצה שאחד מנציגינו יתקשר אלייך?

מבקר: "תקליד" זה זכר.

עדי: בסדר …

מבקר: "אלייך" זה נקבה.

עדי: אני מצטערת שאני פונה אליך בלשון זכר … ואני מתנצלת

מבקר: אולי תחליטו?

עדי: האם אתה בטוח שאינך מעוניין שנציג מקצועי יצור עמך קשר?

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

עדי: האם אתה מעונין?

מבקר: "אליך" זה זכר.

עדי: אוקיי

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

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

עדי: אתה רוצה שאחד מנציגינו יתקשר אלייך?

מבקר: "אתה" זה זכר. "אלייך" זה נקבה.

עדי: אני מצטערת שאני פונה אליך בלשון זכר … ואני מתנצלת

מבקר: גם מצטערת וגם מתנצלת?

עדי: סליחה. לא הבנתי למה אתה מתכוון?

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

עדי: קוראים לי עדי. אני עוזרת וירטואלית.

עדי: האם אתה בטוח שאינך מעוניין שנציג מקצועי יצור עמך קשר?

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

עדי: האם אתה מעונין?

מבקר: אה!

עדי: בסדר

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

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

עדי: אבל אני לומדת דברים חדשים כל יום.

מבקר: לא שלא ניחשתי את ז, אבל בכל זאת.

עדי: בוא נחזור לשיחה שלנו.
מה אתה מחפש כרגע?

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

עדי: אז, איך נוכל לעזור?

מבקר: אני אסתפק בזה שתתקנו את הטעויות.

עדי: בסדר …

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

עדי: בוא נחזור חזרה לשיחה שלנו. איך אני יכולה לעזור לך?


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

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


25 ינואר, 2012 10:16 PM

Katriel Traum

‫להבין את ממוצע העומס (Load Average)‬

בודאי יצא לכם להיתקל באנשי IT או תמיכה פולטים "המכונה עמוסה, תסתכל על ה-Load Average!", או לראות את ה-Load Average על המחשב הביתי שלכם, ולא בדיוק להבין מה משמעות המספרים. אם לא שמעתם על Load Average מעולם, אלה הם אותם שלושה מספרים שמתקבלים כפלט לפקודה "uptime":

$ uptime
 00:46:59 up 15:39,  2 users,  load average: 0.24, 0.12, 0.10

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

אז מה זה בעצם Load Average? ממה מורכבים הערכים? כדי להבין את זה, קודם צריך להבין מה מחזירה הפקודה. שלושת הערכים הם ממוצע העומס בפרקים של דקה, 5 דקות ו-15 דקות בהתאמה.

משתנה העומס מחושב כממוצע התהליכים שהם ברי הרצה (מחכים לזמן CPU), תהליכים שבריצה כרגע ותהליכים שמחכים לסיום פעולת כלשהיא (Uninterpretable sleep), בד"כ פעולת IO (דיסק או רשת). חשוב לדעת, כי לחישוב לא נכנסים כמות המעבדים במערכת. כלומר, שרת עם Load Average של 1, אומר שמעבד אחד (בממוצע) פעיל כל הזמן. בשרת עם מעבד אחד, זו מערכת עמוסה, בשרת עם 4 מעבדים, המערכת עובדת ב-75% (בממוצע כמובן)

מה זה אומר אם יש לשרת Load Average גבוהה? בכלליות, זהו סימן שהשרת לא מצליח להתמודד עם דרישת התהליכים הרצים עליו לזמן CPU. הגורמים יכולים להיות רבים: יותר מדי תהליכים רעבי CPU, יותר מדי IO, למשל בגישה ל-swap ועוד.

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

top - 08:56:53 up 41 min,  2 users,  load average: 0.09, 0.10, 0.15
Tasks: 166 total,   1 running, 165 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.2%us,  0.9%sy,  0.0%ni, 92.3%id,  3.0%wa,  0.2%hi,  0.4%si,  0.0%st
Mem:   5966228k total,  4111868k used,  1854360k free,    67016k buffers
Swap:  8060924k total,        0k used,  8060924k free,  2916392k cached

באופן כללי, אם הערכים של us או sy גבוהים, המערכת כנראה עמוסה בתהליכים רעבי CPU. במידה והערך wa גבוהה באופן קבוע, כנראה שמערכת עסוקה בהרבה I/O. את המשך האבחון אפשר לעשות בעזרת:

  1. שאר המידע ב-top
  2. כלים כמו iostat, vmstat
  3. ps

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

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

 

 

הטקסט המלא

25 ינואר, 2012 09:21 PM

Ido Kanner

מערך כתכונה

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

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

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

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

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

...
  TPerson = class(TPrimates)
...
  public
...
    property MatchingColor[name : string] : TColor read GetColor write SetColor;
...
  published
...
    property ShirtColor : TColor read FShirtColor write FShirtColor;
...
  end;
...

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

לתכונה הגדרנו שם כלשהו שהוא מחרוזת. וGetter ו Setter. כלומר התכונה היא גם לקריאה וגם לכתיבה.

הגדרת ה Getter תראה בצורה הבאה:

private
...
   function GetColor(AName : String) : TColor;
...

ה Setter יראה בצורה הבאה:

private
...
   procedure SetColor(AName : String; AValue : TColor);
...

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

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

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


Filed under: Delphi, Object Pascal, טכנולוגיה, פיתוח, קוד פתוח, תוכנה, תכנות

25 ינואר, 2012 06:40 PM

Diego Iastrubni

היסטוריה של מערכות הפעולה (יענו) חופשיות למכשירים סלולרים

 

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

נוקיה - Maemo

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

 אינטל - Moblin

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

Meego

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

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

סאמסונג - Bada

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

Tizen

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

דרך אגב, זהו הפרוייקט הראשון שיש לו באמת קוד זמין ברשת: http://source.tizen.org/git

מקורות

הטקסט המלא

25 ינואר, 2012 05:56 PM

24 ינואר, 2012

Nadav Vinik

‫מהפך בשולחן העבודה, קינמון [5]‬

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

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

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

קינמון

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

התמונה נלקחה מ Cinnamon 1.2 Released With Desktop Effects, Multiple Layouts, More

לינוקס מינט

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

המסקנה המתבקשת

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

עדכון:

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

unity

24 ינואר, 2012 06:50 PM

Boris Shtrasman

באג ב OWA 2007

לאנשים שבנינו שמשתמשים ב8  FF וגם ב OWA ,

כאשר מבצעים logoff  (לחיצה על כפתור logoff ) ע"ג פיירפוקס ממערכת outlook web access 2007  ומשאירים את הטאב פתוח:
הגעה לעמוד:
https://mailserver/owa/auth/logoff.aspx?Cmd=logoff

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

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

מחיפוש ב msdn מתברר שמדובר בבאג ידוע וישן עד exchange 2000 ,אבל עדיין מאוד מתריד.

24 ינואר, 2012 12:49 PM

Ido Kanner

ככה לא עושים פיטצ'ר אבטחה

בשעה טובה ומוצלחת הפצת הלינוקס האהובה עלי – Arch הכניסה לתוכה חתימת חבילות התקנה.

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

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

אז ארצ' נכנסו סוף כל סוף לעולם של הגדולים -> דביאן וredhat. ומציעים גם חתימה של חבילות ! אבל המימוש שלהם לא נכון.

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

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

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

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

אז כאשר האנשים הטובים בהפצה הבינו את הבעיה, הם פתרו אותה על ידי יצירת מספר מפתחות "על" (master keys  ואנחנו מייבאים אותם בצורה הבאה:

$ sudo -s
# for key in FFF979E7 CDFD6BB0 4C7EA887 6AC6A4C2 824B18E8; do
    pacman-key --recv-keys $key
    pacman-key --lsign-key $key
    printf 'trust\n3\nquit\n' | gpg --homedir /etc/pacman.d/gnupg/ \
        --no-permission-warning --command-fd 0 --edit-key $key
done

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

sudo pacman-key --lsign-key

כאשר מפתח נראה בסגנון הבא: FFF979E7.

את המפתחות אתם מקבלים על ידי pacman – מנהל החבילות עצמו.

בהצלחה !


Filed under: arch linux, אבטחת מידע, טכנולוגיה, לינוקס, קוד פתוח, תוכנה Tagged: redhat, repository

24 ינואר, 2012 11:18 AM

Boris Shtrasman

אתם מוכנים להוציא את היד שלכם מהארנק שלי ?!

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

אני יחסית אוהב את kwallermanager שהוא די מותמע כחלק מהסביבת KDE, אז לקחתי את הפלאגין הבא לסיבוב (מקשר בין kwallet ל firefox / iceweasel).

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


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

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




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


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

24 ינואר, 2012 11:04 AM

Lior Kaplan

RTL status for Libre Office 3.5.0

As LibreOffice is approaching its final 3.5.0 release, I’d like to sum up the RTL status for RC1.

So far, 6 RTL related bugs were resolved in the 3.5 cycle (#32530, #34222, #40950, #43790#43793, #44078), and a few minor issues reported directly to the developer’s mailing list got quick responses. Most importantly, the new features of page break and header/footer not only support RTL but actually looks good. During the LibreOffice conference I was suggested to help with these features, providing feedback, and I’m glade the needed attention was given to it.

Besides that, a few l10n and translation issues were solved in the process of doing the Hebrew translation (which also reflects on other RTL languages). At a few cases, these issue because a general l10n issues which affects all the languages.

In general, I found the core developers responsive to mails about RTL support. I’m sure the talk about RTL problems during the conference helped, as well as being more active in the project and having more personal acquaintance with the developers.

That’s being said, RTL support for LibreOffice still has problems, which I hope will be pushed during the 3.5.x cycles (full list at Bug 43808, the rtl meta bug). As to get some focus regarding was is to be done, I’m listing the top problems:

  1. #44657 – RTL UI: Horizontal scrollbar in calc main window is broken
  2. #33302 – brackets inverted in rtl text (mac only)
  3. #37692 – RTL list numbering reverses its direction
  4. #42070 - RTL support in broken in presenter Console extension
  5. #32531 - Incorrect cursor key movement between table cells of different directionality
  6. #104515 - RTL UI: moving active embedded object to the left moves it to the right (reported for OO.org, but verified in LibO)
  7. #37128 - Writer saves text alignment of RTL paragraph not according to the ODF specification

I hoped to have the first two done for 3.5.0, but didn’t succeed in getting them fixed. Will keep trying…


Filed under: i18n & l10n, Israeli Community, LibreOffice

Full text

24 ינואר, 2012 01:16 AM

23 ינואר, 2012

Ido Kanner

Redis or not

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

למי שלא מכיר, אז Redis הוא מסד נתונים אשר מספק מערכת Key value עם הרבה יכולות. הוא מאפשר לי ליצור הרבה מעבר ל key value, ולמעשה הוא סוג של data struct manager.

פירוש השם הוא קיצור של מספר מילים ולא כתיבה שגויה של צנון: REmote Dictionary Server. רק אם תהיתם במקרה.

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

זה על רגל אחת על מסד הנתונים הזה.

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

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

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

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

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

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

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


Filed under: Delphi, FPC, טכנולוגיה, מסדי נתונים, פיתוח, קוד פתוח, תוכנה, תכנות Tagged: dictionary server, key value, redis

23 ינואר, 2012 07:57 PM

Artyom Beilis

שפת תכנות לא משנה...

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

  • תהיה מהירה
  • תהיה פשוטה
  • תהיה חזקה
  • תהיה ברורה
  • תהיה נוחה
  • תכין לנו קפה לארוחת הבוקר...

אז נגיד מחר אני אצליח ליצור שפה חדשה:

  • מהירה כמו C או C++‎
  • קלה להבנה כמו Java או Pascal
  • גמישה כמו Python או JavaScript
  • ועוד כמה תכונות נוספות שתרצו לפרט

ואז כשיהיה לי מהדר (או משערך) אולטימטיבי שיעבוד על כל מערכת הפעלה ובכל סביבה החל ממערכות משובצות עד מחשבי על, החל מ־ARM עד ל־Itanium ואפתח IDE אולטימטיבי יהפוך אותי לפרודוקטיבי־על, אני אתחיל לעבוד...

מה יקרה?

רוב המפתחים היום לא כותבים אלגוריתמים הם כותב אפליקציות. רוב המפתחים היום צריכים לדעת את הספריות שלהם יותר טוב מהשפה, למתכנת GUI ממוצא יותר חשוב להבין אין עובד Qt מאשר לדעת כיצד לעשות partial template specialization. למתכנת יישומי עיבוד תמונה ב־Matlab יותר חשוב לזכור את הפונקציות שמבצעות convolution על מטריצה, מאפשר לזכור כיצד להגדיר מחלקות. למפתח Web יהיה יותר חשוב לדעת כיצד לייצר טופס, מאשר כיצד להשתמש בפונקציות למבדה.

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

זאת הסיבה רוב השפות שנולדות לאחרונה הן רצות על JVM או על ‎.Net או כמו Vala משתמשות באוסף הספריות העשיר של Gnome כדי להיות פרודוקטיבי.

ומה עם "שפות־העל" שפותחו והמון מחשבה הושקעה בהן כמו, למשל, D? הן לא התרוממו.

למעומת זאת, שפות "עתיקות" כמו C ממשיכות להתקיים והמונים כותבים בהן. Vala בזכות האימוץ המלבב של GTK ו־GObject תופסת תאוצה. Go? כנראה לא תתרומם בקרוב בלי השקעה אדירה.

במילים אחרות.

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

הטקסט המלא

23 ינואר, 2012 04:01 PM

טיפוסים דינאמיים או סטטיים?

נתקלתי בכתבה מעניינת

Static vs Dynamic Debate Decided

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

הטקסט המלא

23 ינואר, 2012 08:01 AM

22 ינואר, 2012

Doron Ofek

‫אוהבים לינוקס ותוכנה חופשית ? (עודכן)‬

חושבים שצריך יותר תוכנה חופשית בממשלה ??

יופי .

הנה הזמן שלכם לתרום ולסייע.

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

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

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

זו ההזדמנות שלכם .

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

22 ינואר, 2012 09:32 PM

‫מה עוד לא סיפרו לכם על המאגר הביומטרי ?‬

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

עובדים עליכם.

עובדים עלינו .

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

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

ואם עושים עריכה מחדש לפרוטוקול אחרי חודש – מה זה אומר ? שמשכתבים את הפרוטוקול ?

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

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

ככה ניראת דמוקרטיה ?

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

מה שהוא עושה זה זילזול בדמוקרטיה . נקודה.

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

ונעבור סוף סוף לעיניין המהותי.

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

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

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

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

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

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

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

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

אז בפעם הבאה שיחסלו את "מבחוח 2” בדובאיי – אל תתפלאו אם על הכפתורים במעלית יהיו טביעות האצבע שלכם.

22 ינואר, 2012 05:49 PM

Shlomi Fish

git tip: adding remotes to .git/config

When working with the git version control system and editing .git/config to add a new remote, some people may be tempted to copy and change the origin remote that reads something like:

[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = git@github.com:shlomif/perl.git

However, note that origin also appears at the fetch = and needs to be changed there as well, or else all the branches will be placed in remotes/origin. Maybe there's a better way to add a new remote using the git config commands.

Otherwise, I should note that there doesn't seem to be a consensus among git users whether git pull --rebase is better than a simple git pull: the perl people told me to use --rebase and the Amarok people and someone on Freenode's ##programming told me not to use it. Now I'm just confused.

22 ינואר, 2012 04:33 PM

Ido Kanner

a tale about PIPA, SOPA and Copyrights

Imagine a person finding a road that everyone is using, and decide to charge money from every car that is passing by. Then that person think about it, and start taking money also from people who are walking by that road, just looking at it, or just reading about it.

The person is also limiting the number of people that can use the road, in what type of vehicles, number of passengers, the location from where the driver is from etc…

And if to add  on all of that. the person never fixes the road, or provide extra benefit of using it. You get what he provides "as-is", in the way that he think you should have it, and that's it.

When people that live beside the road, started to create their own path to the road, so they could arrive from one place to another, caused a big headache to the road owner.  Because they did not pay for the usage of the road, and did not stand in his limitation. So the road owner decided not only to sue them, but also to provide some money for public elected figures to place bills and rules, to say that without his permission, and in his conditions, it is illegal to do so.

So people started to create their own roads instead, and the traffic started to move to thar roads instead,  and the original road owner, started to loose a lot of road users -> money to that newer and better roads, that take only minor maintenance fees, but do not limit anything. Even the roads are better maintained then the original road that the person took over and start changing on it.

So now that person decided to pay again to that public figures to place more bills and call the other roads thieves, pirate etc..  And that everyone who is not using the original road hurts the right of the original road owner.


Filed under: זכויות יוצרים, חברה, חוק, כלכלה, לקוח, מוזיקה, מכירות, משפט, עסקים, פוליטיקה, קהילה, קוד פתוח Tagged: maintenance fees, minor maintenance, pirate, road users, thieves

22 ינואר, 2012 04:29 PM

21 ינואר, 2012

Doron Ofek

‫האב הבן וריח של עובש …‬

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

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

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

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

יותר טוב, נמכור את הכל ב"עסקת חבילה": דרכונים + תעודות … וונוסיף גם מאגר ביומטרי.

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

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

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

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

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

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

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

בנוסף לכך היא מנהלת מאגר של מידע שבו היא שומרת את המידע הביומטרי .


יש לשים לב.

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

ה"פריצה" שיש במאגר היא בעצם קיומו ויוסבר.

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

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

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

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

כספת פירצה קוראת לגנב וגנב, כשקוראים לו …. בא :

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

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

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

נניח שבמהלך יום אחד אוכל לאסוף X נתונים . ככל שיהיו לי Y אנשים ו Z ימים , כמות הנתונים שנאסוף היא XYZ .

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

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

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

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

יש לשים לב, כי הבעיה היא תוצאה משילוב של שלושת הגורמים.

בגרמניה, לדוגמה, אין תעודות זהות.

במדינות אחרות, אין מאגר מרכזי.

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

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

דברים שבשיטה הישראלית – משולבים יחדיו במארג של: דרכונים + תעודות זהות + מאגר .

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

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

לינקים וקישורים:

1. מסמך שעל פיו נבנה התקן (חופשי להורדה).

2. התקן  ISO7501 (המסמך בתשלום).

21 ינואר, 2012 10:01 PM

Yariv Kedem

תביעת ענק על הפרת זכויות יוצרים בקוד פתוח

האיגוד האמריקני SFC לשימור תוכנה חופשית (Software Freedom Conservancy), משמש אכסניה למימון והגנה של בעלי זכויות יוצרים בתוכנות מסוג FOSS, קרי בתוכנות ומערכות הפעלה בעלות קוד-מקור פתוח או חופשי (Free and Open Sorce Softwares).
ביום 14 לדצמבר 2009, הגישו ארגון SFC ואריק אנדרסון, בעל זכות היוצרים בתוכנה BusyBox, תביעה בארה"ב, בבית המשפט המחוזי בדרום ניו-יורק, כנגד 14 חברות ענק ידועות כגון Samsung, Western Digital ועוד, בטענה כי במכשירים ובמוצרים שמשווקים ע"י החברות הללו מוטמעת (embedded) תוכנה להפעלתם (קושחה -Firmware), הנסמכת או נובעת מתוכנת BusyBox.
...

עפ"י הנטען בתביעה, תוכנת BusyBox מורשה לשימוש תחת גירסה 2 של רשיון "GNU General Public License", אשר לפי סעיף 2(b) שלו, על אדם המפיץ או מפרסם יצירה הכוללת או הנובעת, כולה או חלקה, מתוכנת BusyBox או מגירסה שלה (יצירה נגזרת), לגרום לכך שתאושר כולה לשימוש לכל אדם ללא תשלום, כחלק מתנאי רשיון GPL הנ"ל.
תביעה זו מציפה סוגיה משפטית כבדת משקל הקיימת בתעשיית התוכנה והקושחה במקרים בהם נעשה שימוש בתוכנת קוד פתוח או חופשי תחת אחת מגירסאות רשיון GPL, בסביבה שבה החברה מפתחת גם תוכנות/קושחות אשר זכויות היוצרים בהן מהוות קניין רוחני של החברה המפתחת:
מצד אחד ברי כי עקב פיתוח תוכנה באמצעות כלי פיתוח מורשי GPL, חייבת החברה המפתחת לאפשר לצדדים שלישיים גישה לקוד המקור של התוכנה שפותחה באופן זה.
מצד שני ברור כי זכויות היוצרים בפיתוח תוכנה מקורית הן של החברה המפתחת ללא מגבלות.
אולם במקרים בהם קיימים יחסי גומלין בין תוכנות משני הסוגים, עולה השאלה, האם חייבת החברה המפתחת, בכל סוג של יחסי גומלין, לפרסם את זכויות היוצרים שלה רק על שום אותם יחסי גומלין. דוגמה לכך היא גישה ארעית (Dynamic Link) של תוכנה מקורית, לנתונים שמקורם בתוכנה GPL-ית.
התוצאה המשפטית של סוגיה זו תלויה גם במדינת השיפוט, באשר דיני זכויות יוצרים, חרף מכנה משותף בין מדינות רבות, משתנים ממדינה למדינה.
במקרה של התביעה הנ"ל טרם הוגש כתב הגנה, כך שעדיין מוקדם לדעת את מלוא הטענות הנגדיות של הנתבעים, בצד העובדתי או המשפטי.
ביום 4 לאוגוסט 2010 ניתן פסק דין נגד Westinghouse Digital Electronics הכולל צו מניעה, פיצויים, והוצאות משפט.
נמשיך לעקוב.

21 ינואר, 2012 09:15 PM

הגנת פטנט על תוכנה - הדין הרצוי

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

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

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

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

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

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

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

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

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

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

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

21 ינואר, 2012 09:14 PM

הרצאה על ההיבטים המשפטיים של GPL Linux

ההרצאה תתקיים במסגרת סמינר של Freescale ו- Future Embedded שיתקיים ביום 22/3/10 בבניין פריסקייל בהרצליה, ועניינה רשיונות זכויות יוצרים בקוד פתוח.

יריב קדם, עורך דין ונוטריון

21 ינואר, 2012 08:18 PM

פיתוח חופשי של תוכנה, תחת רשיון קוד פתוח – טאוטולוגיה?

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



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

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

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

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

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

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

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

יריב קדם, עורך דין ונוטריון.

21 ינואר, 2012 08:03 PM

sml

התחרות הגדולה - סוף

לפני למעלה משנתיים התחלתי בהכנות להחלפת "גיבוי" המזדקן שנבנה כבר לפני שש שנים. התכנית היתה להריץ "צוואר-אל-צוואר" שתי מכונות שעל כל אחת מהן מותקנת מועמדת להפעלת "גיבוי 1” : על הראשונה היתה זו מערכת FreeBSD ועליה מערכת הקבצים ZFS (פיתוח של סאן ע"ה) ועל השניה היתה זו BTRFS החדשנית, של לינוקס. התחרות תוארה כאן . ובסדרת רשימות שהופיעו בהמשך.

הטקסט המלא

21 ינואר, 2012 11:40 AM

20 ינואר, 2012

Hetz Ben Hemo

‫שידורי וידאו – הדור הבא‬

‫הנה עובדה מצערת: בישראל של שנת 2012 לשדר וידאו זה עסק מאוד יקר. זה זול כשיש לך תוכן שאתה רוצה לשדר לכמה עשרות אנשים סימולטנית, אבל כשאתה רוצה לשדר לאלפי אנשים סימולטנית, אז תצטרך להכין סכום רציני. כמה רציני? אם לדוגמא אתה רוצה לשדר באיכות של חצי מגהביט (500K וידאו ואודיו כולל, איכות לא משהו [...]‬

הטקסט המלא

20 ינואר, 2012 08:16 PM