tag:blogger.com,1999:blog-81294752024-03-13T03:28:09.169-07:00Zero-Width Non-Joiner<a href="http://behnam.es/">Behnam</a>'s notes on the Internet, the Web, Unicode, Software Internationalization and the Persian languageUnknownnoreply@blogger.comBlogger37125tag:blogger.com,1999:blog-8129475.post-28759972859713726772014-02-05T19:48:00.001-08:002017-01-31T17:13:05.719-08:00Microsoft and the Persian Keyboard LayoutsIt was eight years ago that I initially wrote about the Microsoft products rarely getting the Persian language right and the fact that something is always <a href="http://zwnj.behnam.es/2006/08/what-microsoft-did-to-persian-language.html">broken in the very basic levels</a>. Well, there has been some improvements and I feel obligated to write a quick update.<br />
<br />
Starting with Windows Vista, the name of the language was corrected, becoming "Persian" instead of "Farsi". But no one upgraded to Vista, so most people found out about this change later in Windows 7. And in a few more years, with Windows 8, came the "Persian (Standard)" keyboard layout, which was based on the Iranian national standard, <a href="http://behnam.esfahbod.info/standards/isiri-keyboard-9147.pdf">ISIRI 9147</a>, but—wait for it—this new layout was not in compliance with the standard! One of the best parts of the standard keyboard layout was missing: being able to type ZWNJ character using <kbd>Shift+Space</kbd>. Result: not so helpful for the user.<br />
<br />
At the <a href="http://www.unicodeconference.org/iuc37/">2013 Unicode conference</a>, I brought up the issue with Microsoft's <a href="https://twitter.com/michkap">Michael Kaplan</a>, let him know that we have been providing alternate solutions for years, using their own MSKLC, and suggested him to think about enhancing the old Microsoft layout with the same feature, as I did <a href="https://groups.google.com/forum/#!topic/persian-computing/m9UvMNbFE7A">back in 2011</a>.<br />
<br />
Michael <a href="http://blogs.msdn.com/b/michkap/archive/2013/10/30/10461431.aspx">responded</a> to my request on <a href="http://sortingtherestallout.blogspot.com/">his blog</a>: (<a href="https://web.archive.org/web/20170201010933/http://archives.miloush.net/michkap/archive/2013/10/30/10461431.html">archived</a>)<br />
<blockquote class="tr_bq">
<i>Well, I can always look at loosening up the definition of what is legal for the space character. </i></blockquote>
<blockquote class="tr_bq">
<i>To be honest, we always have good reasons for wanting to keep the rules tight, but every time we change anything the definition gets loosened more. </i></blockquote>
<blockquote class="tr_bq">
<i>And ZWNJ is a worthy one to consider. </i></blockquote>
<blockquote class="tr_bq">
<i>I will look into it for the future.... </i></blockquote>
<blockquote class="tr_bq">
<i>Thanks for the great suggestion!!</i></blockquote>
Today, I’m glad to inform you that the “Persian (Standard)” keyboard layout on Windows 8 (and 8.1, with their latest updates) does have ZWNJ mapped on <span style="font-family: monospace;">Shift+Space</span> key and allows easily writing Persian correctly.<br />
<br />
And, it doesn’t end there! You also get the real Persian numbers with this “Persian (Standard)” layout. Therefore, the updated layout does meet all the requirements of the ISIRI standard and even a little more! Don't forget to thank <a href="https://twitter.com/michkap">Michael</a>, if you like these outcomes.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8129475.post-38623096057231268512012-09-20T20:05:00.004-07:002012-09-21T15:53:20.727-07:00Some Magic for CSS3 Linear Gradients<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCOv3TQCtJu50aJVwgZDVFTbWvOMtBP45l9iq-Fx_Ux-wF_drBFqZXcoVNEWn0QdbGA7PX-GuaBDbTBPsCawKLbDewqUUJgdjsS3t6sKgPvAv6EBwFpsVEE5Atw1c7NJXHpJ-E/s1600/css3-linear-gradient-corner-keywords-example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCOv3TQCtJu50aJVwgZDVFTbWvOMtBP45l9iq-Fx_Ux-wF_drBFqZXcoVNEWn0QdbGA7PX-GuaBDbTBPsCawKLbDewqUUJgdjsS3t6sKgPvAv6EBwFpsVEE5Atw1c7NJXHpJ-E/s1600/css3-linear-gradient-corner-keywords-example.png" /></a></div>
<br />
About a year ago, I was implementing linear gradients for an <a href="http://en.wikipedia.org/wiki/OpenType">OpenType font</a> renderer (using <a href="http://www.cairographics.org/">Cairo graphics library</a>) and I decided to support <a href="http://dev.w3.org/csswg/css3-images/#linear-gradients">CSS3 Linear Gradient</a> syntax and functionality. Soon I realized that the specification is missing a basic feature of corner-to-corner linear gradients, that is getting the gradient's perpendicular lines (the lines that get the same color) sticking to the other opposite corners. This feature is pretty useful for the Web, where the page designer cannot be sure of the aspect ratio of the box in the user's end — as opposed to the traditional graphics design practice where document was delivered with a solid fixed layout.<br />
<br />
<a href="http://lists.w3.org/Archives/Public/www-style/2011Jul/0265.html">I wrote to the CSS3 working group</a> about the problem and proposed to add a keyword to enable this behavior, and temporarily called the keyword <i>magic</i>, as it was supposed to do <i>something traditionally was done manually (and having a good eye)</i>. Although, the working group decided to totally <a href="http://dev.w3.org/csswg/css3-images/#corner-gradient-example">change the behavior of the corner keywords</a> and not add yet another keyword for this feature, the name <i>magic corners</i> stuck and is <a href="https://developer.mozilla.org/en-US/docs/CSS/linear-gradient">used</a> <a href="http://meyerweb.com/eric/thoughts/2012/04/26/lineargradient-keywords/">for</a> the invisible ending points of the gradient vector that makes this magical behavior possible.<br />
<br />
This is the story of the name <i>magic corners</i>.<br />
<br />
Now for you: The following box uses CSS3 (and some browser-specific directives) to set a magical linear gradient that is supposed to look like the image on the top of this post. If they do look alike, Congratulations! You've got some magic in your browser!<br />
<br />
<div style="background: gray; border: 1px solid black; color: black; height: 200px; margin: auto; width: 400px;">
<div style="background: -moz-linear-gradient(to top right, red, white, blue); background: -ms-linear-gradient(to top right, red, white, blue); background: -o-linear-gradient(to top right, red, white, blue); background: -webkit-linear-gradient(to top right, red, white, blue); background: linear-gradient(to top right, red, white, blue); height: 200px; text-align: center; width: 400px;">
A box with magic-corner linear gradient.
<br />
<br />
<code>background: linear-gradient(to top right, red, white, blue);</code>
</div>
</div>
Unknownnoreply@blogger.com0New York, NY, USA40.7143528 -74.005973140.3292248 -74.637687100000008 41.0994808 -73.3742591tag:blogger.com,1999:blog-8129475.post-78616911151971321642012-08-08T18:28:00.002-07:002012-08-08T20:29:51.708-07:00Lytro Camera and Light Field Pictures (LFP)Finally got my <a href="http://www.lytro.com/">Lytro camera</a> two month ago and have already filled up my Lytro photo library with more than one thousand pictures, which stores more than 20GB wroth of data on my hard driver. Of course I keep a backup on my Dropbox folder, which means another 20GB on my hard driver <i>and</i> my paid cloud storage service.<br />
<br />
Light field cameras are new technologies, as well as light field pictures. Lytro, Inc. has developed a new file format, called <a href="http://blog.lytro.com/tag/lfp/">LFP</a> (which is short for Light Field Photography or Light Field Pictures), that is used for almost everything, let it be storing some (about 1GB) mixture of text and binary data about the camera, including the lens array calibration information and wifi MAC address, or storing the raw data and/or the processed data for a light field picture. Now, the best thing about the Lytro, Inc. is that, besides developing this new file format (<a href="http://eclecti.cc/computervision/reverse-engineering-the-lytro-lfp-file-format">which is simple enough to reverse-engineer quickly</a>), they are keeping everything transparent, making it easy to understand the logic behind their software and be able to <a href="http://www.dataliberation.org/">liberate our own data</a>. More importantly, this method allows using common technologies to develop for the Lytro camera, the Lytro Desktop application, and the light field pictures.<br />
<br />
Since Lytro released a <a href="http://www.lytro.com/downloads">Windows version of the Lytro Desktop application</a> a couple of weeks ago, I was able to play with my photo library and LFP files. The result is two new pet projects.<br />
<br />
<h2>
<b>Lytro Library Merger</b></h2>
This small Python application lets you merge any Lytro Desktop photo library to your main photo library. For example, if you have a photo library on a Mac OS X machine and have created another one on a Windows machine, now you can merge these two and get all your photos in one place.<br />
<br />
More on Lytro Library Merger at <a href="http://behnam.github.com/lytro_library_merger/">http://behnam.github.com/lytro_library_merger/</a><br />
<br />
<h2>
<b>python-lfp-reader</b></h2>
This is small Python library that comes with some very useful command-line scripts for working with LFP files. But the more interesting feature for some users can be <b>lfp_picture_viewer</b> which displays any processed LFP image and allows you to refocus the image; and it works (almost) any platform that supports Python, including Linux, Windows, and Mac OS X.<br />
<br />
Download it at <a href="http://pypi.python.org/pypi/lfp-reader">http://pypi.python.org/pypi/lfp-reader</a> or if you prefer the command-line, try "<span style="font-family: Courier New, Courier, monospace;">easy_install lfp-reader</span>".<br />
<br />
More on <a href="http://behnam.github.com/python-lfp-reader/">http://behnam.github.com/python-lfp-reader/</a><br />
<br />Unknownnoreply@blogger.com0New York, NY, USA40.7143528 -74.005973140.3271308 -74.637687100000008 41.1015748 -73.3742591tag:blogger.com,1999:blog-8129475.post-52505201441170488072012-08-08T17:28:00.006-07:002012-08-08T20:32:45.497-07:00Moving to zwnj.behnam.esIt was eight years ago that I registered the domain <a href="http://zwnj.org/">zwnj.org</a> and began writing about software engineering, the Internet and the Persian language. I am still going to do the same, more or less, but I have decided to move this blog to a new address, <a href="http://zwnj.behnam.es/">zwnj.behnam.es</a>, as I'm moving my whole digital identity to one place, <a href="http://behnam.es/">behnam.es</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8129475.post-11331330336994828932009-07-01T00:48:00.003-07:002009-07-01T01:10:28.307-07:00First release of Persian Mozilla Firefox ever!<a href="http://fa.www.mozilla.com/fa/">Download Persian Mozilla Firefox 3.5</a> now! This is the first time Firefox is released in Persian. The number of supported languages has raised to 70 this time!<br /><br />I started the <a href="http://wiki.mozilla.org/L10n:Teams:fa">Mozilla Persian localization team</a> back in 2002 and after almost 7 years, this is our first release, which is very very close to perfect! I should thank <a href="http://www.ehsanakhgari.com/">Ehsan Akhgari</a> for his great help to the Persian team and the Mozilla project generally in the past couple of years.Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-8129475.post-8423444595841454532009-02-15T17:49:00.004-08:002009-02-15T17:58:59.558-08:00Gmail WishWish Gears had GPG integrity so Gmail could <span style="font-weight: bold;">sign</span> and <span style="font-weight: bold;">encrypt</span> emails via the web UI...Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-8129475.post-33625113423566790652009-02-08T12:50:00.004-08:002009-02-08T12:57:32.779-08:00RIRA.IRAN (ریرا.ایران)We got a new Persian domain name (IDN) for <a href="http://rira.ir/">RiRa, the free Persian digital library</a>. It's <a href="http://%d9%88%d8%a8.%d8%b1%db%8c%d8%b1%d8%a7.%d8%a7%db%8c%d8%b1%d8%a7%d9%86.ir/">وب.ریرا.ایران.ir</a>. (translation: web.rira.iran.ir ;)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8129475.post-68468502151481160722009-02-08T12:17:00.002-08:002009-02-08T12:36:07.532-08:00UDHR in PersianFinally the <a href="http://unicode.org/udhr/d/udhr_pes_1.html">Persian translation of the Universal Declaration of Human Rights</a> is available on the UDHR in Unicode project. (<a href="http://unicode.org/udhr/d/udhr_pes_1.pdf">get the PDF</a>) <br /><br />This Persian (Farsi) version is an encoding of <a href="http://www.unhchr.ch/udhr/lang/prs.htm">this old printed version</a>. If you know any newer translation available in public domain please inform us.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8129475.post-28411361787831657642009-02-08T11:26:00.006-08:002012-08-08T17:54:19.495-07:00Jalali GCal 3.0 & Greasefire<div class="separator" style="clear: both; text-align: center;">
<img alt="" border="0" height="320" src="http://zwnj.org/uploaded_images/jalali-gcal-in-greasefire-727495.png" style="display: block; margin: 0px auto 10px; text-align: center;" width="640" /></div>
<br />
Jalali GCal has a major update, version 3.0.<br />
<ul>
<li>It's updated to recent changes by Google on the Calendars's HTML code;</li>
<li>now uses jQuery for some operations, which makes it somehow faster now and later updates will be easier as well;</li>
</ul>
Get the new English and Persian edition from <a href="http://code.google.com/p/jalali-gcal/downloads/list">the Google Code download page</a>. <span style="font-weight: bold;"> If you cannot access Google Code, or have problems with Persian text, please try the userscripts.org mirror; </span><a href="http://userscripts.org/scripts/show/7793" style="font-weight: bold;">English</a><span style="font-weight: bold;"> and </span><a href="http://userscripts.org/scripts/show/41935" style="font-weight: bold;">Persian</a><span style="font-weight: bold;">.</span><br />
<br />
OTOH I found this handy Firefox/Greasemonkey extension named <a href="https://addons.mozilla.org/en-US/firefox/addon/8352"><span style="font-weight: bold;">Greasefire</span></a>, which lists all available user-scripts (from userscripts.org) for current site in just one click, and you can install them rightaway!<br />
<br />
The exciting news is that Jalali GCal has the 6th place in the list of scripts for Google Calendar in Greasefire (actually userscripts.org)!Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-8129475.post-86083167587736515262008-09-19T11:39:00.004-07:002008-09-19T12:21:17.203-07:00Jalali GCal moved to Google CodeFinally I created a project for <a href="http://code.google.com/p/jalali-gcal/">Jalali GCal in code.google.com</a>. Here are <a href="http://code.google.com/p/jalali-gcal/wiki/Installation_Guide">the Installation Guide</a> and <a href="http://code.google.com/p/jalali-gcal/downloads/list">the downloads list</a>.<br /><br />Thanks to <a href="http://www.acsu.buffalo.edu/~mehdia/">Mehdi Ahmadizadeh</a>, the new versions work fine with current Google Calendar UI. Also some ideas from <a href="http://www.blogger.com/profile/16986166827027701174">Shayan</a> have been implemented.<br /><br />Here are latest features (for version 2.4):<br /><ul><li>The userscript is now available in two editions: English and Persian. Using Persian edition gives you Persian numbers and months' names;</li><li>The font of Persian texts in Persian version is bigger than the default texts;</li><li>The name of the Jalali month is shown in the first day of the month (in the table).</li></ul>Hope you enjoy it. Feel free to <a href="http://code.google.com/p/jalali-gcal/issues/list">report enhancement requests, bugs, and issues</a>.Unknownnoreply@blogger.com6tag:blogger.com,1999:blog-8129475.post-67573360108728189492008-04-25T09:32:00.008-07:002012-08-08T17:54:50.488-07:00Persian in Console, using Bicon and console-setup<a href="http://zwnj.org/uploaded_images/Bicon---The-Little-Prince---Chapter-02-764049.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" height="640" src="http://zwnj.org/uploaded_images/Bicon---The-Little-Prince---Chapter-02-764039.png" style="display: block; margin: 0px auto 10px; text-align: center;" width="633" /></a><br />
This is a screen-shot of <a href="http://shamlou.org/thelittleprince/text/">Persian translation of The Little Prince</a>, in GNOME Terminal, using Bicon.<br />
<br />
A few days ago <a href="https://edge.launchpad.net/~aelmahmoudy">Ahmed El-Mahmoudy</a> told me about his recent work on <a href="http://www.arabeyes.org/project.php?proj=BiCon">Bicon</a>, the Bidirectional Console program. He has made a Debian package, so I made one for Ubuntu Hardy, with a little fix on builddeps, through Launchpad's Private Package Archive build system. You can find the package at <a href="https://edge.launchpad.net/~behnam/+archive">my PPA</a>.<br />
<br />
I just started using PPA and this is my first package there. By the way, I've also became a <a href="https://edge.launchpad.net/~launchpad-beta-testers">Launchpad Beta Tester</a> and am using Launchpad as my <a href="https://help.launchpad.net/OpenID">OpenID server</a>.<br />
<br />
Also I found <span style="font-weight: bold;">console-setup</span> works fine with XKB's Iranian keyboard layout, with a change on <tt>CODESET</tt>. This is how you can get a Persian/Iranian keyboard on your Linux console. Open <tt>/etc/default/console-setup</tt> and change the lines like these:<br />
<pre>
CODESET="Arabic"
XKBMODEL="pc105"
XKBLAYOUT="us,ir"
XKBVARIANT=","
XKBOPTIONS="grp:shift_caps_toggle,lv3:ralt_switch,grp_led:scroll"</pre>
<br />
Bicon project is not so active, but if you need Persian support in console, it's a good start. Please report bugs, or inform us at <a href="irc://irc.freenode.net/#arabeyes">#arabeyes at irc.freenode.net</a>. Thanks.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8129475.post-35428896482593676552008-01-30T23:37:00.000-08:002008-01-31T02:24:46.187-08:00Iranian Firefox Users Survey<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://zwnj.org/uploaded_images/firefox-ir.15.01.w160px-740497.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 80px;" src="http://zwnj.org/uploaded_images/firefox-ir.15.01.w160px-740494.png" alt="" border="0" /></a>A <a href="http://www.kordestanchi.com/">couple</a> <a href="mailto:samar.dt@gmail.com">of</a> <a href="http://maziar.persianblog.ir/">friends</a> have been running a <a href="http://www.eocsite.com/ff/">survey for Iranian users of Firefox</a>. It contains at most 17 questions, based on whether you use Firefox, and its version.<br /><br />It's open for another couple of weeks, and the results will be out soon after that. Till now, there's been <span style="font-weight: bold;">more than one thousand</span> participants.Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-8129475.post-2202913962477350192008-01-25T13:28:00.001-08:002008-04-25T09:27:25.531-07:00Dot-IR on Firefox IDN White-listJust a quick notice. ".ir" TLD has been <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=IDN-dot-IR">added to the IDN white-list of Firefox</a>, and will be effective on next updates for 2.0 (Gecko 1.8.1.12) and beta-3.0 (Gecko 1.9).<br /><br />Now you can use your <a href="http://www.nic.ir/IDN"><span style="font-style: italic;">Persian domain names</span></a>, "<span style="font-weight: bold;">.ایران.ir</span>", easily in Firefox. Enjoy it!<br /><br /><span style="font-size:85%;">P.S. ".ir" has been in white-list in IE since version 7.0.</span>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-8129475.post-53542536487006865212008-01-09T14:02:00.000-08:002008-01-09T14:24:58.032-08:00On Bugmail RFE and My Bugzilla AccountsAfter my RFE, about adding an option to Bugmail to not put my email address in To/CC fields of email header, rejected as <span style="font-style: italic;">WORKSFORME</span> by one of bugzilla maintainers (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=410671">Mozilla bug 410671</a>), I had to change my Bugzilla email addresses (GNOME, Mozilla, and freedesktop.org for now). I have added a "bugs+" to the beginning of previous one, so it's <span style="font-weight: bold;">bugs+<my-name>@<this-blog-domain></span> from now on.<br /><br />The reason for this change is that I prefer to use the <span style="font-weight: bold;">Mute</span> feature of Gmail, so I can get rid of some discussions, which I cannot unsubscribe them directly. Now I get them in the same mail box, but Gmail doesn't detect them as a To or CC one for <span style="font-style: italic;">me</span>, so when I mute a bug, I won't see the thread again. The more interesting part is when a bug's title changes, I'll get it again, which seems very useful.</this-blog-domain></my-name>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8129475.post-1983281895007367812007-10-15T16:46:00.000-07:002007-10-16T03:56:11.513-07:00Internationalized Top-Level DomainsAfter about a week that eleven Int'lized TLDs had been in root servers, yesterday <a href="http://www.icann.org/announcements/announcement-15oct07.htm">ICANN officially announced</a> them, the localized <a href="http://idn.icann.org/">IDNwiki</a> pages are open to the world. Here are <a href="http://فارسی.idn.icann.org/">the Persian one</a>. Go ahead and test your softwares. Firefox has them in the <span style="font-style: italic;">IDN whitelist</span> in the trunk, and will have them in an update for Firefox 2.0 soon. Unfortunately they started using <span style="font-weight: bold;" >pe</span> as the two-letter code for Persian, which is not a standard, and know it's changed to <span style="font-weight: bold;" >per</span>. I hope they fix it soon, and use just <span style="font-weight: bold;" >fa</span>.<br /><br />This is a big step forward to have <span style="font-weight: bold;" >dot-iran</span> (.ایران) TLD in the root servers, which has currently <a href="https://nic.ir/Statistics">more than two thousand</a> registered domains. In fact supporting fully int'lized domain names was one of the major reasons of developing the new <a style href="http://nic.ir/">IRNIC domain registration system</a>, which has been up since early September. Come on! <a href="https://nic.ir/Domain_Registration?domain_tld_code=9">Register a <span style="font-weight:bold;">future dot-iran domain</span> now!</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8129475.post-16592332183980153552007-01-02T17:37:00.001-08:002008-09-19T11:57:24.549-07:00Jalali GCal, Version 1.2Here are an <a href="http://zwnj.org/proj/gcal/jalali-gcal-1.2.user.js">update for Jalali GCal</a> (old: <a href="http://zwnj.org/2006/06/jalali-calendar-for-google-calendar.html">Jalali Calendar for Google Calendar</a>). Installing the new one will replace the previous version. Also I changed its description to <span style="font-style: italic;">Jalali calendar for the web interface of Google Calendar</span>. All features work well on <a href="http://firefox.ir/">Firefox 1.5</a> on <a href="http://www.ubuntulinux.org/">my Linux desktop</a>. Bug reports are welcomed.<br /><br /><span style="font-weight: bold;">Update</span>: <a href="http://zwnj.org/2008/09/jalali-gcal-moved-to-google-code.html" title="permanent link">Jalali GCal moved to Google Code</a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8129475.post-1158841454261263642006-09-21T04:59:00.000-07:002007-01-03T01:50:45.800-08:00Mozilla/Firefox Hacks for Power Users (Hack 200C+0002)Here is some preferences I have set, and you may like to set them, if you are a power user, bidi user, or your locale is not en-US, but have to use this locale.<br /><br />Newbie HOWTO: use "<a href="about:config">about:config</a>" to set this key/values.<br /><br /><span style="font-weight: bold;">Power User:</span><br /><ul><li>layout.word_select.stop_at_punctuation</li><li>layout.word_select.eat_space_to_next_word</li></ul><blockquote> Set them to <span style="font-style: italic;">TRUE </span>if you want Ctrl+Left/Right-Arrows stop at the start/end of alpha-numeric words (like what you get on <a href="http://gtk.org/">Gtk+</a>/<a href="http://gnome.org/">Gnome</a>). Default values make it to jump to the next/previous Space/Tab character! The second one also affects word boundary on selecting with mouse double-click.</blockquote><br /><ul><li>browser.triple_click_selects_paragraph</li></ul> <blockquote><span style="font-style: italic;"> (Mozilla >= 1.9, Firefox >= 3.0a1)</span><br />This option allows you to select whether triple click should select the whole paragraph, or just the line you are clicking. If it's FALSE, you can select the whole paragraph with quadruple-click (Wait, it doesn't work on Gtk+/Gnome, as Gtk+ doesn't support quadruple-click. If you like it, here are the Mozilla bug: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=348751">#348751</a>.)</blockquote><br /><ul><li>network.http.max-persistent-connctions-per-proxy</li><li>network.http.max-persistent-connctions-per-server</li></ul> <blockquote>If you use <a href="http://tor.eff.org/">Tor</a>, or any other proxy in your LAN, just set the first one to a big number (I use 50). Also I set the second one to 8, as <a href="http://www.flickr.com/">Flickr </a>and many other photo-sharing sites use just one domain for almost all images on the their pages, so I cannot get even two pages simultaneously. (<a href="http://maps.google.com/">maps.google.com</a> is smart enough)<br /></blockquote><br /><ul><li>network.protocol-handler.external.ed2k</li><li>network.protocol-handler.app.ed2k</li></ul> <blockquote> Here are how you can define a protocol and set the external application. In this example, I set <a href="http://en.wikipedia.org/wiki/ED2K">ED2K</a> protocol. Create the first key as <span style="font-style: italic;">Boolean</span>, and set the value to <span style="font-style: italic;">TRUE</span>. Then create the second key as <span style="font-style: italic;">String</span>, and set the path to your ed2k link-handler ("/usr/bin/ed2k" for me) as its value. That's it.<br />Homework: Create a protocol-handler and write a script to handle <a href="http://messenger.yahoo.com/">Yahoo! Messenger</a> links, and make <a href="http://gaim.sf.net/">GAIM</a> do the requested action (add buddy, send message, etc). Of course you should mail them to me to get your point. :D)</blockquote><br /><ul><li>mousewheel.horizscroll.*.action</li></ul> <blockquote>Try possible values for this key (<span style="font-style: italic;">0</span>..<span style="font-style: italic;">4</span> IIRC) to get more functions under your fingers (horizontal scroll of your professional mouse, or the touch-pad of your laptop).</blockquote><br /><br /><span style="font-weight: bold;">Localization:</span><br /><ul><li>printer.printer_PostScript/*.print_paper_name</li></ul> <blockquote>If you live in a country (or organization) which the default paper size is A4, not Letter, just set the value of this key to "<span style="font-style: italic;">A4</span>".</blockquote><br /><ul><li>browser.fixup.alternate.suffix</li></ul> <blockquote>And if your want to set the default "<span style="font-style: italic;">.com</span>" value to something else (i.e. "<span style="font-style: italic;">.co.uk</span>" or "<span style="font-style: italic;">.ir</span>"), just set it in this key.</blockquote><br /><br /><span style="font-weight: bold;">Bi-Directional:</span><br /><ul><li>bidi.browser.ui</li></ul> <blockquote>And this is the best part for <span style="font-weight: bold;">Arabic</span>, <span style="font-weight: bold;">Iranian</span> (Persian), and <span style="font-weight: bold;">Israeli</span> (Hebrew) users. Setting this key to <span style="font-style: italic;">TRUE</span> will do some magic for you. You can switch the text <span style="font-weight: bold; font-style: italic;">direction</span> and <span style="font-weight: bold; font-style: italic;">alignment</span> of input fields with just one keystroke: <span style="font-weight: bold;">Ctrk+Shift+X</span>! Also you can switch the page direction from the View menu. Help yourself!</blockquote><br /><ul><li>mousewheel.horizscroll.*.numlines</li></ul> <blockquote>If you use Mozilla/Firefox in a right-to-left locale, just set the value of these keys to "1" instead of default "-1". Here are the Mozilla bug: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=350594">#350594</a>.</blockquote><br /><br />Ok, that's all. Let me know if you have problem with this hacks, or other <span style="font-weight: bold;">L10n </span>(localization), <span style="font-weight: bold;">Bidi </span>(bi-directional), or <span style="font-weight: bold;">RTL </span>(right-to-left) problems with Mozilla/Firefox.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8129475.post-1157111858957825922006-09-01T04:32:00.000-07:002007-01-03T01:31:37.525-08:00Metro Lines I Have UsedIn order of time:<br /><br /><img src="http://metro.b3co.com/logos/tehran.gif" ondblclick="remove(this,129)" /><img src="http://metro.b3co.com/logos/istanbul-t.gif" ondblclick="remove(this,52)" /><img src="http://metro.b3co.com/logos/barcelona-s.gif" ondblclick="remove(this,9)" /><img src="http://metro.b3co.com/logos/barcelona.gif" ondblclick="remove(this,10)" /><img style="display: none;" src="http://metro.b3co.com/logos/milan.gif" ondblclick="remove(this,76)" /><img src="http://metro.b3co.com/logos/madrid.gif" ondblclick="remove(this,68)" /><img src="http://metro.b3co.com/logos/milan.gif" ondblclick="remove(this,76)" /><br /><br /><br />Here are <a href="http://mces.blogspot.com/2006/08/metro-lines-i-have-used.html">Behdad's</a> and <a href="http://tieguy.org/blog/2006/08/31/metro-lines-i-have-used/">Luis's</a>. Should it be more than ten to blog it? I'm not sure... but, how you will update it?Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8129475.post-1156980590057841882006-08-30T16:06:00.000-07:002014-02-05T11:04:19.867-08:00What Microsoft did to the Persian LanguageRecently I installed Microsoft's Persian UI for Windows XP. Seems like Microsoft can't do anything right for Persian. They use SPACE instead of ZWNJ everywhere in the UI. WTF?! After spending about 1.5 million USD on Persian (they even call it Farsi) support on Windows, the real Persian Windows is still a dream. They are practically removing ZWNJ from Persian, just because they don't know how to use it (or rather, their American-grown confused Iranians don't.)<br />
<br />
Microsoft is the one who brought U+064A ARABIC LETTER YEH (Yeh with two dots bellow in final and isolate forms) to Persian, instead of U+06CC ARABIC LETTER FARSI YEH (Yeh without any dots in final and isolate forms), with their buggy fonts. Even Windows Persian keyboard layout have never been compatible with the Iranian standard layout. Now it's so common to see Arabic Yeh and Keh instead of Persian ones everywhere, everytime. <a href="http://www.laits.utexas.edu/persian/persianword/fonts.htm">More info</a>.<br />
<br />
This story reminds me of an old joke:<br />
<q>A British guy was arguing with a Hindi guy.<br />The British guy says:<br /><span style="font-style: italic;">We f**ked your country for one hundred years!</span><br />The Hindi guy responds:<br /><span style="font-style: italic;">We f**ked your language <span style="font-weight: bold;">forever</span>!</span></q>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-8129475.post-1156085099555897432006-08-20T07:38:00.000-07:002007-01-02T18:15:58.062-08:00Tehran Avenue and Intellectual PropertyNew issue of <a style="font-weight: bold;" href="http://tehranavenue.com/">Tehran Avenue</a> online magazine has some articles and news about Intellectual Property issues in Iran, in both English and Persian. Here are the items:<br /><ul> <li><a href="http://tehranavenue.com/article.php?id=594">On Intellectual Property</a></li> <li><a href="http://tehranavenue.com/article.php?id=595">General Call for the Submission of Works</a></li> <li><a href="http://tehranavenue.com/article.php?id=596">Intellectual Rights in the Laws of Iran</a></li> </ul>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-8129475.post-1149171421929448252006-06-01T06:39:00.000-07:002007-01-02T18:09:53.162-08:00Flickr Hack 200C+0001: EasyDownloadr<a href="http://behdad.org/">Behdad</a> and I prefer to have the "Original" size of a photo to view, or use (if it's under a <a href="http://creativecommons.org/">CC lisence</a>). So we wrote a <a href="http://en.wikipedia.org/wiki/Bookmarklet">Bookmarklet</a> to make it easy to save the original size of an image on Flickr.<br /><br />Here is <a href="javascript: /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Copyright (C) 2006, Behname Esfahbod * Copyright (C) 2006, Behdad Esfahbod */ id=String(page_current_url.match(/\/[0-9]{3,}\//)).match(/[0-9]{3,}/); g=global_photos[id]; l=%22http://static.flickr.com/%22+g.server+%22/%22+g.id+%22_%22+g.secret+%22_o_d.jpg%22; document.location=l; "><b>the Flickr EasyDownloadr bookmarklet</b></a>.<br /><br /><b>HOWTO:</b> Right click on previous link. Bookmark it (preferably in <b>Bookmarks Toolbar Folder</b> and rename it if needed). Open the Flickr page of the image and use this bookmark to save the original size of the image.<br /><br /><b>UPDATE:</b> And here are <a href="javascript: /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Copyright (C) 2006, Behname Esfahbod * Copyright (C) 2006, Behdad Esfahbod */ id=String(page_current_url.match(/\/[0-9]{3,}\//)).match(/[0-9]{3,}/); g=global_photos[id]; l=%22http://static.flickr.com/%22+g.server+%22/%22+g.id+%22_%22+g.secret+%22_o.jpg%22; document.location=l;">the Flickr EasyOpenr</a> which just opens the original size.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8129475.post-1149122548568358922006-05-31T17:00:00.001-07:002008-09-19T11:57:22.444-07:00Jalali Calendar for Google Calendar<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7792/549/1600/157558129_4089a7b07e_o.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/7792/549/320/157558129_4089a7b07e_o.png" alt="" border="0" /></a><br /><br />A couple weeks ago, I wrote the <a href="http://zwnj.org/proj/gcal/jalali-gcal-1.1.user.js"><b>Jalali GCal user script</b></a> (a JavaScript that Firefox runs on the web page if you have <a href="http://greasemonkey.mozdev.org/">GreaseMonkey extension</a> installed) to add Jalali Calendar (A.K.A. Iranian Calendar) to Google Calendar application.<br /><br />As you can see in the screenshot, it adds Jalali year, month, and month days beside the Gregorian ones. (which makes it <i>really useful</i> for me! ;) This version (v1.1) supports all views: <b>Day</b>, <b>Week</b>, <b>Month</b>, <b>Next 4 Days</b>, and <b>Agenda</b>!<br /><br />To use it, you should <a href="http://ftp.mozilla.org/pub/mozilla.org/extensions/greasemonkey/greasemonkey-0.6.4-fx.xpi">install GreaseMonkey (for Firefox 1.5)</a>, then open <a href="http://zwnj.org/proj/gcal/jalali-gcal-1.1.user.js">Jalali GCal user script</a> and install it. Now refresh Google Calendar page.<br /><br />Of course it's under LGPL license. I hope you like it.<br /><br /><span style="font-weight: bold;">Update</span>: <a href="http://zwnj.org/2008/09/jalali-gcal-moved-to-google-code.html" title="permanent link">Jalali GCal moved to Google Code</a>Unknownnoreply@blogger.com14tag:blogger.com,1999:blog-8129475.post-1149115860266976922006-05-31T15:11:00.000-07:002007-01-02T18:11:36.428-08:00Your Google public Calendar is NOT public!I use <a href="http://calendar.google.com/">Google Calendar</a> in day life and also maintain <a href="http://guadec.org/GUADEC2006/schedule/ical">GUADEC 2006 iCal file</a> and keep it synced with <a href="http://guadec.org/GUADEC2006/schedule">the schedule</a> of <a href="http://guadec.org/">The GNOME Conference</a>. Stop! don't try to add that iCal link to your Google Calendar account. It doesn't work and you will get an error message.<br /><br />Here are what happens:<br /><ol><br /><li>Google's robots crawl the web and index all calendar files (i.e. iCal), and of course they check the robots.txt file to make sure they are allowed to do this.</li><br /><li>Unfortunately, Google Calendar AJAX application checks robots.txt. May be it uses the indexed file at Google's server and so it's a side effect of the previous fact.</li><br /><li>Unfortunately again <a href="http://google.com/robots.txt">Google's robots.txt</a> file doesn't allow crawlers to index your public calendars.</li><br /></ol><br /><br />Our iCal link is just an HTTP forward to the address of the file on Google's server. And yes, because of facts 2 and 3, you cannot add our iCal URL to your Google Calendar account! Not Google only, you cannot use it on any other web application that respect to robots.txt files. And of course you won't have your public calendar indexed in any search engine; but Google! It reminds me on how Microsoft tried to make its website somehow Netscape couldn't show it properly.<br /><br />By the way, if you want to add GUADEC 2006 calendar to your Google Calendar account, just search for "GUADEC 2006" there, and add it directly. And send me a note if you need write access to it.<br /><br /><b>Update:</b> Problems:<br /><ol><br /><li>An organizer application (feed reader, calendar, etc) SHOULD NOT use robots.txt files, as it's NOT a crawler, it's just a user agent which do exactly what a user tells it (like a browser).</li><br /><li>Google MUST allow other web crawlers to index <i>public</i> calendars, and NOT make a monopoly .</li><br /></ol>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-8129475.post-1141386495743970862006-03-03T01:42:00.000-08:002007-01-02T18:12:39.568-08:00Intellectual Property in Iran<a href="http://techstudies.org/">Center for Technology Studies</a> (<a href="http://www.sharif.edu/">SUT</a>) held a <b>workshop on intellectual property</b> at <a href="http://management.sharif.edu/">Graduate School of Management and Economics</a> (SUT). <a href="http://www.ripi.ir/en/Staff_info.asp?code=414">Kamran Bagheri</a>, from <a href="http://www.ripi.ir/en/">Iran's Research Institute Of Petroleum Industry</a>, lectured on the Intellectual Property Acts in US, EU and Iran. Here are some interesting news!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7792/549/1600/Majiles.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/7792/549/400/Majiles.jpg" border="0" alt="" /></a><br />The Intellectual Property Act of Iran is under revision! It has been approved in the first vote in <a href="http://en.wikipedia.org/wiki/Majlis_of_Iran">Parliament (Majlis)</a>, and in about seven months, it will be a law. Some effects of this act (as Mr. Bagheri told) will be increase in registration prices (i.e. you can get a patent for $30~40 by now) and international interest on copyright and patent registeration in Iran.<br /><br /><b>Update:</b> Current amount of registered patents per year is about <i>five thousands</i>, that may increase up to <i>fifty thousands</i> with the new act.<br /><br />I'm trying to get more information and will post here as soon as possible.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-8129475.post-1141378644129170022006-03-03T00:24:00.000-08:002007-01-02T18:14:45.720-08:00Journalists' Rights in Iran<div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7792/549/1600/SmartPicture.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/7792/549/320/SmartPicture.jpg" alt="" border="0" /></a> A couple of weeks ago, I missed the <a href="http://www.iranartists.org/en/news.php?id=2891"><b>Speech of Kambiz Norouzi on Rights and Professional Morality of Photojournalism</b></a> which was held on <a href="http://www.iranartists.org/en/">Iranian Artists Organization</a>.<br /></div><br />Based on news reports, <a href="http://rooznamenegar.ir/en/2006/02/12/kombiz_norouzi_lawyer_and_lect_1.shtml">Kambiz Norouzi will be in court branch no. 1083 of General Court of Tehran, headed by Judge Husseinian</a> and he will defend himself. He is accused of propaganda against the establishment, irreverent comments and his accuser is general prosecutor.<br /><br />Hope they let me to get to the session.<br /><br />Kambiz Norouzi is a Lawyer and Lecturer on Press Rights in University and Media Education Center in Iran. More about Kambiz Norouzi: <a href="http://www.google.com/search?q=kambiz+norouzi">English</a>, <a href="http://www.google.com/search?q=کامبیز+نوروزی">Persian</a>, <a href="http://www.google.com/search?q=كامبيز+نوروزي">Persian (misspell)</a>Unknownnoreply@blogger.com1