Tag Archives: Web

ובמקום האחרון: ישראל

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

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

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

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

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

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

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

יש לנו עוד דרך ארוכה, כבר אמרתי?

More useful keyboard shortcuts; Apache evilness

As a sequel to this browser shortcuts post, here're two new shortcuts that rocked my world (ok, almost..) :

  1. F4: opens a select box. Seems like a standard for all UIs! (Windows/Linux at least)
  2. Tick (') key in FireFox: would switch to 'search' mode just like slash (/), but would search for links only. Just type the beginning of the link's name and hit Enter.

Do you know any other shocking keyboard shortcuts?


On a completely other subject, I was fighting (along with a collegue) today with Apache httpd's configuration. The web server seemed to "automatically guess" URLs in a weird fashion.

The cause is that we had the MultiViews feature enabled. With MultiViews, when a URL points to a nonexisting file, i.e. http://mydomain/my/file, apache tries to look for an existing file which looks similar to the directory (I won't describe here the exact algorithm), i.e. http://mydomain/my.php. Then it loads it instead, and the user doesn't get 404.

Maybe some people need it.. but it's also weird and error-prone..

PHP Session locks

At work we have a page that loads multiple PHP scripts (in parallel), using XMLHttpRequest.

Later, we noticed that if one PHP script responds very slowly (i.e. when we put sleep(120) inside), all the others are waiting till the first one finishes loading. In other words: the load is serial, not parallel!

What? Why?!
A little research revealed an interesting phenomena: PHP session locks the session file till the session is closed. By default, the lock starts with session_start() call, and ends at the end of the PHP script!

Continue reading

How can a parent DIV get the child DIV's width?

In the following code, I wanted the parent div to expand to the size of the child. But it doesn't work this way:

<div id="parent">
<div id="child" style="width: 500px">Child Text</div>
</div>

Instead, the parent takes 100% of the screen width and does not shrink to the width of the child. Quite a long googling revealed some interesting facts:

  • div is a 'block', so it always tries to take all available width. (unlike a span which is 'inline')
  • Using 'float: left' in the parent, makes it "shrink wrap" over the child, thus not trying to take all available width.
    adding 'clear: both' will prevent the float from causing the other blocks to join the same line.
  • If the parent is a <td>, then the "shrink wrap" effect takes place.. (Also with <div display="table-cell"> on firefox, but not in IE)

Session cookie preserving; other browser window/tabs

Many websites use session-cookies (PHP session installs such a cookie, for example). Session-cookies have expiry time of zero, and the browser usually deletes them after closing its window. This is very useful for a 'log-in' session, like in your bank account, gmail, etc.

So all browsers delete the cookie as you close them, but what happens when you open a new browser window or tab? Does it also respect this temporary, session cookie? If you're logged in to gmail from one window, can you open a new browser window with another gmail account?

The answer is not surprising: that depends on your browser.

Continue reading

'onmouseout' event of a container div

Today I wanted to catch a 'mouse-out' event in a div. Every time the mouse leaves the div, I want to call a function So.. there's the onmouseout event which, at first sight, does exactly what I needed.

<div id="parent" style="height: 500px; width: 500px;" onmouseout="alert('out!');">
<table id="child"><tr><td>child text</td></tr>
</div>

HOWEVER - if the div contains child elements (it usually does.. like above example), when mouse moves from the "bare naked" div directly to its child element, an 'onmouseout' event is called from the div, while the mouse is still inside the borders of the div. And the worst news is that it's not a bug! 🙂

So straight to the sad solution: onmouseleave event does exactly what I needed, but isn't standard and is IE-only (same goes for onmouseenter). As Rick summed it in the post which solved my issue today: "Bummer."

So bummer, but the good thing is that among the reads, I've found this must-read article which talks about the order browsers handle the events, and how to deal with it.

Time zones – how to do it right

After some struggling with how the Daylight Saving Time change affected my code, I realized that one shouldn't mess with the time zone offsets on his own (i.e. Add or Subtract hours manually from the UTC time), because underlying libs already implement it - and probably better (yes, including DST changes, works flawlessly!). Here are the new simple rules I set to myself:

  • Absolute time: Store dates only relative to UTC (usually [milli]seconds since Unix epoch or another reference date. The familiar Timestamps are measured as UTC and not as Local Time!
  • Absolute-to-Local: When local date matters, convert UTC-to-local (and vice versa) using the already-existing methods:
  • Absolute-to-somewhere-on-the-globe: instead of the OS-defined local time zone settings, PHP seems to have a way, but for JavaScript I haven't found anything unfortunately.

Bottom line: stick to UTC as much as you can, it's good for you.

Trivia line: Morocco is GMT+0 and has no Daylight Saving Time (so it's identical to UTC). Good for them, eh?