מכונת אחסון ביתית על אופן-סולאריס

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

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

מה עוד?
לא צריך להסתבכך עם מחיצות, מערכות קבצים, פירמוטים, RAID וכל העניינים האלו.
ZFS תומכת בהכל, עם שתי פקודות אינטואיטיביות – zpool וzfs. היא תומכת גם בNFS (שיתוף קבצים פשוט ברשת).
אני לא אכנס לעובי הקורה בפוסט הזה, אולי בפוסט אחר, אבל מספיק שאומר שמערכת הקבצים הזו לבדה היא סיבה מספיק טובה לעבור מלינוקס לאופן-סולאריס (למרבה הצער, הרשיון בה משוחררת ZFS לא תואם את GPL, ולכן אין ZFS בלינוקס – ולא, אני לא מחשיב פתרון ZFS מבוסס FUSE כפתרון אמיתי).

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

אז איך נהנים משני העולמות?
תוכנות לינוקס, איכסון באופן סולאריס?
האופציה המתבקשת היא לארגן מכונה נוספת שתריץ אופן סולאריס, ותשמש כמכונת אחסון בלבד.
הגישה תתבצע דרך NFS או דרך CIFS למחשבי חלונות (אני עדיין משחק על חלונות!).
וזה מתקשר לאגדה המקדימה על המכונה זוללת הביטים, שהיום זוללת בעיקר אבק.
התוכנית היא לקנות לה עוד קצת זכרון (ג'יגה אחד התקלקל וארבע ג'יגה היום עולה כל כך זול שזה פשע לקנות שני ג'יגה), לקחת איזה הרדיסק או שניים או שלוש מהמחשב בסלון, לקנות עוד איזה הרדיסק או שניים, ולקנפג שם אופן סולאריס עם ZFS בתצורת RAIDZ (תצורה יותר טובה מתצורת RAID5 שנותנת עמידות נתונים זהה אבל גם עם דיסקים זולים ובביצועים יותר טובים ברוב המקרים).
ככה המכונה תזכה לעדנה מחודשת, ולי יצא להנות מהתכונות של ZFS. אולי אני אפילו אשים את ספריית הבית שלי על המכונה הזו. עם חיבור ג'יגה ביט, זה כנראה יהיה יותר מהיר מעבודה מקומית על דיסק בודד כי אני אקבל את הביצועים של עבודה על כמה דיסקים במקביל.

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

Joomla Extentions Directory and GPL

קיבלתי את האימייל הבא מהצוות שמנהל את אתר ההרחבות של ג'ומלה, שאומר בקצרה שמ 1.7.2009 רק חבילות ברשיון GPL יכללו במאגר ההרחבות של ג'ומלה.
הוספתי את פיירסטטס למאגר ההרחבות לפני שנתיים וחצי, והמערכת קיבלה יופי של תגובות ממשתמשי ג'ומלה.
מכיוון שפיירסטטס לא משוחררת תחת GPL, היא כבר לא מופיעה במאגר.
בבדיקה מול גוגל-קש, מספר ההרחבות במאגר ירד מ4554 ל2990, ירידה של 33%.
לדעתי זו חוצפה ובריונות של של ג'ומלה לדרוש ממפתחי ההרחבות לשנות את הרשיון, וויתרתי על שרותי אתר ההרחבות של ג'ומלה (שזה די חבל, כי הוא הכיל 21 ביקורות על פיירסטטס, רובן המכריע מאוד חיוביות).

האימייל, תגובתי למטה:

Dear "Omry Yadan",

We at the Joomla Extensions Directory want to remind you that, as announced 6 months ago, on 1 July are going to change the directory policy to list GPL Extensions only. As always, commercial and non commercial extensions are welcome on JED as long as they use the GPL license.

The deadline for changing licenses without being unpublished is http://www.timeanddate.com/worldclock/fixedtime.html?month=7&day=2&year=2009&hour=00&min=55&sec=0&p1=103.

This change is intended for to bring it into line with the overall mission of the Joomla Project. After careful thought and reflection, the Joomla! Project determined that the Joomla! Extensions Directory should be a community resource that fully embodies the project's values, especially freedom as exemplified by the GPL license.

Policy changes
We have implemented some policy changes to
– Enhance support of GPL developers
– Address concerns about relicensing.
We think that the best place to get an extension is from the original developer of that extension. Therefore we will not link to collections of GPL extensions that are not submitted by the original developers. These are not requirements of the GPL license but rather fall in line with our "forking" guidelines.

Forked projects

Non-GPL extensions
In order for you as developer to keep a non-GPL extension listed you need to relicense it to GPL.
You do it through to add two elements to each source file of your program:
– a copyright notice
– statement of copying permission, saying that the program is distributed under the terms of the GNU General Public License –
http://www.fsf.org/licensing/licenses/gpl-howto.html
– adding a <license> tag to the header of the extension XML file
– including a copy of the GPL license in your distribution. This does not need to be copied to the user's server on install, but must be included in the distribution.

Note for GPL extensions:

– You need to state on your website that the extensions are distributed with the GPL license
– You can't add any conditions that restricts or contradicts the GPL license.

We thank you for your patience during these transitions. We will  extend any assistance possible to making the transition as painless as possible for everyone involved. The project is committed to providing the information and help that developers need in order to relicense (or to license for the first time, if there is no current license).

The JED editors and members of the Core Team and Open Source Matters board are ready to advise or assist any developer who would like this help. If you have any questions about licensing or want help, then you can contact OSM with the following email address license@opensourcematters.org or the JED editors
team@extensions.joomla.org

Some frequently asked questions

What if I have some GPL and some non-GPL extensions?

This policy refers only to those extensions listed in the JED. Your GPL extensions are permitted to be listed on the JED but your non-GPL extensions are not.

Where can I get information about how to license my product using the GNU GPL?

Every copy of Joomla includes a copy of the GNU GPL with instructions for licensing in the license.php file. Instructions are also available from the Free Software Foundation.

All you need to do is add two elements to each source file of your program: a copyright notice (such as “Copyright 1999 Terry Jones”), and a statement of copying permission, saying that the program is distributed under the terms of the GNU General Public License. (Free Software Foundation)


Can I use GPL v3 to license my extension?

Yes. In particular, you may need to use GPLv3 if you rely on certain third party libraries or APIs for your extension.

Can I use libraries in my GPL extension that are GPL compatible?

Yes.

What GPL version is Joomla! licensed under?

Joomla! is licensed under GPL version 2 or later.

Why are only GNU GPL licensed extensions being listed?

The simple answer is, making the JED a GPL only resource is the easiest and most practical solution. It frees the JED team from having to investigate or worry about licensing issues. It frees OSM from having to create and maintain a list of one or more acceptable licenses. When you break it down, other licenses were created because they opposed one or more parts of the GPL. The only license that truly embodies the spirit of the GPL is the GPL. Throughout the Open Source world, there is plenty of disagreement over what that spirit is and there is even more disagreement over what licenses are compatible and incompatible. In the end, our list of compatible licenses might be very different from yours. Our list of licenses that share the spirit of the GPL will most certainly be different than yours. So, we could waste months of time researching a list and debating which licenses should be included and excluded or we can make it simple and easy to understand for the community, the developers, and the JED team so that we can use those precious months to focus on the real point of this project: making great software.

Can I use a GPL compatible license?

The JED will only list extensions licensed using the GNU GPL.

What if I think my extension doesn't violate the Joomla! license?

This is a policy in favor of software freedom and the mission, vision and values of the Joomla! Project, not one about technical issues in licensing.

What does this mean for enforcement of the Joomla! license more generally?

Enforcement of the Joomla! license is a separate issue from the policies of the JED.
If you have relicensed in recent days, thank you for your cooperation.

תגובתי:

First of all, I am both a user and a developer of several open source projects (some of which are using GPL, although I generally prefer BSD now because it puts less constraints on the end user).

the way I see it, you are trying to FORCE me to change my license, and I find this unacceptable.

FireStats is not a Joomla plugin, it's a full fledged application that happen to support Joomla (and many other systems).

If I will dance to the tunes coming from WordPress, Jooma,Drupal or any other supported app, I will never get anywhere.

I am sorry, but I have no intention of changing my license.

feel free to remove FireStats from the Joomla extentions directory.

if I decide to re-license it under GPL I will list it again.

it is a pity because FireStats got great feedback from the Joomla community, but I am not going to step over my principles because of this.

the license under which I decide to release my software if my own decision, my mine alone.

Omry Yadan,

FireStats developer.

Google Wave

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

וויב

  • אפשרות לפצל שיחה לכמה קווי שיחה בקלות (Threads)
  • צ'אט חי, כמו בימי הבבסים (רואים מה האדם השני מקליד בזמן שהוא מקליד).
  • אפשרות לחבר אדם נוסף לשיחה בדיעבד על ידי הוספה שלו למשתתפים, הוא יוכל לראות את השיחה מההתחלה, כולל באמצעות מצב ניגון שמנגן את השיחה בשבילו צעד אחר צעד כאילו הוא השתתף בה מההתחלה.
  • אפשרות להגביל גישה להודעות למשתתפים מסויימים (מסרים פרטיים)
  • תמיכה בגרור וזרוק כדי להצמיד תמונות (וקבצים באופן כללי) להודעות, נכון לכרגע זה דורש גוגל gears, אבל הכוונה היא לדחוף את היכולת הזו בהצעה לHTML 5.
  • אפשרות לשתול שיחה בקלות בתוך בלוג (Embed), מכיוון שהשיחה מאוכסנת בשרת מרכזי זה לא משנה אם מגיבים מהבלוג אם מתוך Wave, היא תשאר שיחה אחת.
  • כל שיחה יכול להיות בעצם מסמך משותף שכל המשתתפים תורמים לו, בדומה לוויקי, כולל פיצול ואיחוד של גרסאות (Branch and merge), כולל עריכה חיה (כמו הצ'אט החי) על ידי כמה משתתפים במקביל.

הרחבות

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

פרוטוקול

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

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

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

midp-build

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

The midp-build system is a generic build system for mobile java applications developed in Eclipse. it uses the Eclipse configuration files (.classpath files) to determine project dependency, build order and build classpath automatically.

it can build any MIDlet with very little configuration.

  • The system supports complex builds with multiple outputs, for example – it's possible to build for several products, configurations and devices in a single run.
  • The build fully support preprocessing of source code based on symbols that are defined per devices, products and configurations (or almost any combination of those).
  • The build allow fine customization of the properties contained in the JAD for each JAR+JAD pair generated.
  • The build supports signing of generated MIDlets automatically
  • The build supports including classpath resources in the generated JAR(s), and/or copying specific resources
  • The build supports local builds, based on files on the workspace (without changing them in any way).
  • The build fully supports CVS and have some untested support for SVN
  • The build supports multiple build configurations per Eclipse project (see conf.prefix)

הארדווינו הגיע

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

אז מה בחבילה?

  • ארדוינו מגה
  • לוח פרורי-לחם (מה שנקרא BreadCrumbs), וערמת מחברים
  • שקית מלאה בנגדים, LEDים, כפתורים,ג'אמפרים וכו'
  • כבל USB כחול ומגניב לחיבור הארדוינו למחשב

arduino

(התמונה לחיצה וסחיטה).

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

ככה נראית התוכנית בתוך סביבת הפיתוח:
screenshot-arduino-0015

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

מלחמת השועלים

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

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

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

Swush

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

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

ניקח לדוגמא את פיסת הXML הבאה (קוד אמיתי מההגדרות של טומקט):

[code lang="xml"]
factory
org.apache.catalina.users.MemoryUserDatabaseFactory
pathname
conf/tomcat-users.xml

[/code]

הרבה מלל כדי להגיד שיש דבר כזה UserDatabase, ויש בתוכו שני זוגות Key-value, לא?
אפשר גם לציין את אותו מידע כך:
[code lang="java"]
ResourceParams{
UserDatabase{
factory : org.apache.catalina.users.MemoryUserDatabaseFactory
pathname : conf/tomcat-users.xml
}
}
[/code]
יותר קומפקטי ופחות פלצני.
השפה שבה השתמשתי בפעם השניה היא Swush, שפה שהגדרתי ומימשתי בסופ"ש.
Swush (סוו'ש בעברית, נראה לי שאני אדבוק באנגלית), תומכת בהערות בסגנון C/C++ וbash:
[code]
// C++ single line comment
/* C multi-
line comment*/
# Bash style comments
[/code]

בנוסף, סטרינגים בSwush לא מחייבים גרשיים, אבל אם משתמשים בגרשיים אפשר להגדיר סטרינגים עם רווחים ואפילו שורה-חדשה בתוכם.
[code]
string1

"another string"

"multi
line
string"
[/code]

המימוש שלי לSwush הוא בשפת ג'אווה, אבל בהחלט אפשרי שיהיו מימושים בשפות נוספות (בין אם שלי או של אנשים אחרים).
Swush תומך ברשימה פשוטה של מפתח-ערך, למשל:
[code lang="java"]
host : "locahost"
port : 8080
[/code]
ככה שאפשר בקלות רבה להחליף אותו קבצי properties של ג'אווה.

מבחינת הקוד, השתדלתי שהוא יהיה מה שיותר פשו לשימוש.
אפשר ליצור אובייקט Swush בכמה צורות:
[code lang="java"]
Swush fromFile = new Swush(new File(filename));

Swush fromString = Swush.constructFromString("swush:rocks","UTF-8");

Swush usingCode = new Swush();
usingCode.add(new Swush("key","value"));
usingCode.add(new Swush("node"));
usingCode.getChildren(1).add(new Swush("key2", "value2"));
[/code]

אחת הפונקציות המעניינות של המימוש שלי היא פונקציית select, שמחזירה רשימה של צמתים שמתאימים לקריטריות שצויין, לדוגמא – אם יש לנו קובץ Swush כזה:
[code lang="java"]
addressbook
{
max_size : 30

item
{
phone : 123
name : "The dude"
address : "Multi
Line address"
}

item
{
phone : 3454
name : "Another dude"
address : unknown
}
}
[/code]
ואנחנו רוצים לגשת לצמתים של הItem, נוכל לעשות משהו כזה:
[code lang="java"]
Swush swush = new Swush(new File(filename));
List matchs = swush.select("addressbook.item");
[/code]
הרשימה שחוזרת תכיל את שני הצמתים המתאימים (מסוג item שנמצאים בתוך addressbook).
Swush ממומשת עם Antlr, וההגדרה שלה מאוד פשוטה, אפשר להעביר אותה בכמה דיאגרמות:



Swush משוחררת ברשיון BSD, ואפשר להוריד אותה מפה.

Ajax Terminal

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

ארדויינו

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

ארדויינו (Arduino) הוא לוח אלקטרוני ניתן לתכנות, שמיועד לאו דווקא לגיקים אלא גם לאמנים ומעצבים.
הלוח עצמו עולה כסף (לא יותר מדי, כ20 יורו לגרסא הבסיסית), אבל סביבת הפיתוח, התכנון של הלוח עצמו, העיצוב וכל השאר – הכל משוחרר ברשיונות חופשיים (GPL, LGPL וCC לפי הצורך).
הלוח קטן ואלגנטי:

אז למה זה טוב?
להמשיך לקרוא ארדויינו