November 22, 2008

? Who asked the profiler to butt-in

An English translation is available for this post...

אחרי תקופה קשה בה הבריאות הרופפת שלי החלישה כל נים אפשרי, החלטתי שהגיעה העת להעיף מבט שוב למחשב ולבטל איזה מעופף טורדני שהקפיץ לי exceptions בדיבאג.
מה שקרה הוא, שבכל פעם שבאתי לדבג, עפה לי הודעה שה- profilerAgent.swf לא מצליח להתחבר בעקבות בעיית security sandbox, בעוד אני יושב שמוט לסת ולשון כששאלה אחת רצה 100 מטר משוכות בראש שלי: מי בכלל, לאלף עזאזלים, ביקש מהפרופיילר הזה להרים ת'ראש שלו?!
אמרתי לעצמי, שעכשיו אני מגגל על זה ומוצא את ההסבר לתופעה. תופעה, שאגב, החלה ברגע ששדרגתי לנגן 10 הידוע יותר לשמצה בכיניו "אני עוד אגיע לכל הפיצ'רים שלך, רק תן לעבוד קודם". פי-פאם-פו היגעתי לאיזה פוסט מעניין ששמט לי את הלסת עוד יותר, בבקשה לקרא.
נו? מה תגידו?
מסתבר שנשארה שורה בקובץ ה mm.cfg (ההוא שרושם לוגים של פלאש אם הוא ממש במצב רוח טוב). שורה פשוטה שאומרת לפרופיילר להרים את הראש שלו ולנסות להתחבר, בלי שום קשר לאם ביקשנו או לא. כמה פלקסי מצידו, הא?
אם מוחקים את השורה הזו הכל חוזר לסורו. כאשר מרימים את הפרופיילר, השורה נרשמת שוב וכאשר מרימים רק את הדיבגר, השורה הזו נמחקת כלא הייתה.
אז בכל מקרה, אם נתקלת בגוגל-מוגל הזה, אתם יודעים מה לעשות.
שבוע טוב.

After a long time in which my poor health has weakened any possible vain, I’ve decided that it is time to have a filtering glimpse over my PC and deal with some flying annoying pest that keeps on popping those exception windows when I debug.
What happens is that every time I debug, an exception pops up that the profilerAgent.swf can’t connect over a security sandbox violation (don’t you love it?). While I’m still on my chair with my mouth wide open, one question kept racing the marathon in my head, going: who, for flex sake, has asked to profiler to raise its head and connect?!
I decided that it’s time to google that pest and find the solution for this phenomenon, a phenomenon that BTW begun the moment I upgraded to Player 10, better known by the name of “I will get to all you feature, just let me work first”. After a few searches I came to some interesting post that got my mouth to open even wider. There you go, read it.
So? What can you say about that, huh?
As it appears, there is a lost line left on the mm.cfg file (you know, the one that registers flash logs if it’s in a really good mode). This line simply tells the profiler to raise its head and connect, regardless if we’ve asked for it or not. How Flexi of it, right?
If you delete this line then all goes back to normal. When the profiler is bootstrapped the line registers again and when the debugger is bootstrapped then the line is erased.
So anyhow, if you encounter this lovely swamp you know what to do.
Have a great week.

November 12, 2008

OT: ירושלים

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

November 03, 2008

ServiceAdapter in BlazeDS – Where’s the service?

An English translation is available for this post...

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

“Fun”.
If I had one word to define the migration from LCDS to BlazeDS, I would choose this word – “Fun”. Well, it’s not like it’s all that bad, but still Adobe manages to fail when they are known to fail in the most: Documentation.
Even though that most of it is pretty transparent for the implementers (me, myself and I…) and after smuggling all the .jar files and messing around with dependencies, we reach to the code migrations which hurt the most.
At the time I’ve created an extension for ActionScriptAdapter for a chat in the application. This class managed the messages that came through it in a slightly different manner that’s not relevant to the story. What’s relevant is that this class used an inherited variable called “service” that came from Mr. ServiceAdapter.
A swift compilation and Java shouts that it doesn’t know who “service” is. I instantly dive into Adobe’s documentation to see what the hell is done wrong here, and I do find out that there’s no such thing as “service” on ServiceAdapter, but to my utter surprise I also see a nice code sample which uses it. Don’t believe me? See for yourselves. So what have I got left? That’s right… forums.
After a quick search I find this thread where it says that the code sample is wrong and misleading and there’s another way to reference the “service” variable.
I very much hope that Adobe is well aware of this mistake that surely waste time to a lot of developers around the world.
Till next time…