מה יהיה עם המחלות האלו?
שפות העופות, הפרה המשוגעת, שפעת החזירים…
מה הלאה, קדחת ינשופים?
ומה עם סגן שר הבריאות (ואיך אפשר בכלל להיות סגן של מישהו שלא קיים?), שפעת מקסיקו?
למה לא שפעת המקסיקנים אם כבר?
May your sockets never timeout
מה יהיה עם המחלות האלו?
שפות העופות, הפרה המשוגעת, שפעת החזירים…
מה הלאה, קדחת ינשופים?
ומה עם סגן שר הבריאות (ואיך אפשר בכלל להיות סגן של מישהו שלא קיים?), שפעת מקסיקו?
למה לא שפעת המקסיקנים אם כבר?
אף פעם לא חיבבתי את XML.
העבודה עם השפה עצמה מסורבלת, קל מאוד לטעות ולדפוק קובץ שלם ויש יותר מדי תווים מיותרים שלא תורמים כלום לתוכן האמיתי.
אפילו השם מגעיל: איכס אמ אל.
יש נטייה להשתמש בXML כשפה לקבצי קונפיגורציה. אפשר לראות את זה בהמון פרוייקטים (למשל Tomcat ו Pidgin).
XML כשפה מנסה לפתור כל מני בעיות שלא מעניינות במיוחד את רוב המפתחים, ולכן המימוש של קוראי XML תקניים הוא מורכב.
הדבר במעצבן ביותר בXML היא שהיא קשה גם לאנשים שמנסים לקרוא אותה (או לשנות אותה), וגם למחשבים – או יותר נכון למפתחים – שמנסים לקרוא אותה.
ניקח לדוגמא את פיסת הXML הבאה (קוד אמיתי מההגדרות של טומקט):
[code lang="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
[/code]
הרשימה שחוזרת תכיל את שני הצמתים המתאימים (מסוג item שנמצאים בתוך addressbook).
Swush ממומשת עם Antlr, וההגדרה שלה מאוד פשוטה, אפשר להעביר אותה בכמה דיאגרמות:
Swush משוחררת ברשיון BSD, ואפשר להוריד אותה מפה.
כלכליסט בכותרת שמדגימה כמה באמת מבינים שם בסוכנות הידיעות:
אם המלאים עולים זה אומר שמייצרים יותר מדי חביות נפט, ושהצריכה שלהן יורדת.
אם המלאים עולים בצורה חדה מהצפוי, זה אומר שכולם ידעו שהמלאים יעלו, אבל הם הפתיעו ועלו עוד יותר. מה שאומר שמחיר הנפט הנוכחי שגילם בתוכו את העליה הצפויה במלאים צריך לרדת כי כאמור המלאים הפתיעו.
עובדות בסיסות אלו לא בלבלו את מי שכתב את הכותרת הזו.
להמשיך לקרוא נפט
הבטחתי tail -f, ולכן אקיים.
(טוב נו, לא הבטחתי – אבל אני מקיים בכל זאת).
כל פעם שמישהו צופה בפוסט הזה, כתובת הIP שלו וזמן הביקור נכתבים לקובץ, והTAIL למטה עוקב אחרי הקובץ.
להמשיך לקרוא Ajax tail -f
מורפיוס:
יש שדות… שדות אין סופיים, בהם בני אנוש כבר לא נולדים. אלא מגודלים.
לא האמנתי שזה אפשרי במשך זמן ארוך מאוד, עד שראיתי את השדות במו עיני.
צפיתי בהם ממחזרים את המתים, כדי שיוזנו דרך הווריד לחים. כשעמדתי שם, מול האימה, הבנתי את האמת.
מהו המטריקס?
שליטה, המטריקס הוא עולם חלומות יציר מחשב, בו אנשים חיים את חייהם, מורידים קבצים וגולשים באינטרנט.
המטריקס נבנה כדי כדי להפוך את האדם למכונה לפתירת קפצ'ות!
לשרת שאני כותב יש שני ממשקי ניהול, ממשק וובי וממשק טלנט.
הממשק הוובי יותר ידידותי כמובן, אבל ממשק הטלנט מהיר יותר, גמיש יותר וקל יותר להוסיף לו פקודות.
חשבתי לתומי שיהיה ממש נחמד לאפשר גישה לממשק הטלנט דרך הממשק הוובי.
הייתי בטוח שיש משהו כזה כבר, בדקתי כל מני פרוייקטים כמו anyterm,
ajaxterm ועוד כמה, אבל כולם כללו רכיב שרת והיה קשה לחלץ מהם את הקוד של צד הלקוח ולממשק אותו לשרת שלי.
בסוף הבזבוז זמן, החלטתי לנסות לממש כזה, ובעזרתו האדיבה של עמיתי לעבודה שגיא מעוז, כתבנו את הפלאגין Ajax terminal, פלאגין-JQuery פשוט במיוחד לשימוש ולהטמעה.
הרעיון הוא פשוט, הלקוח שולח שורה לשרת, השרת עושה מה שעושה ושולח תשובה ללקוח. הלקוח לוקח את התשובה ודוחף אותה בטרמינל.
הטרמינל תוכנן להראות בדיוק כמו טרמינל לינוקס, כדי שיהיה קולי במיוחד.
להמשיך לקרוא Ajax Terminal
מי שמשחק בחרא, שלא יתפלא אם מחרבנים עליו.
http://firefang.net/blog/756/comment-page-1#comment-7848