Saturday, December 07, 2002

OUPS! يه راه بسيار ساده براي حل كردن مشكل Event قبلي onLoad براي Movie Clipها، اگر امتحان كرده باشيد اين Event يكي در ميون كار مي‌كنه، اين راهي كه دوستمون bokol ارائه كرده‌اند شديداً درست كار مي‌كنه، كدش رو ببينيد و حتماً امتحانش كنيد.

//setter for onLoad
sol = function (f){
if(__onLoadHandler__ == undefined) _global.__onLoadHandler__ = {};
__onLoadHandler__[this] = f;
};

//getter for onLoad
gol = function(){
return __onLoadHandler__[this];
}

//assign property-handlers for onLoad (courtesy of Gnut)
MovieClip.prototype.addProperty("onLoad", gol, sol);


لينك از Guy Watson.
لينك اين مقاله از وبلاگ سكتور ص�ر. بنظرم نويسنده و مترجم اين مقاله �راموش كردند كه درست نيست بگيم چون Unix بعلّت Low Levelتر بودن و همينطور User Friendly نبودن باعث اشتباهات بيشتري از سمت كاربر ميشه پس سيستم عامل ناامن‌تريه. ما نبايد اشتباهات خودمون رو به پاي سيستم عامل بندازيم، عنوان ناامنترين سيستم‌عامل: يونيكس! يه عنوان كاملاً تبليغاتيه، آمار موجود در مقاله هم بدون پايهء علمي و ارائه منبع معتبر ارائه شده كه پيشنهاد مي‌كنم جدّي نگيريد!
تا قبل از Flash 5 تصوّر ما از Flash نرم‌ا�زاري براي ساخت Multimedia بود و Interfaceهاي گرا�يكي بود، چيزي كه نگرش ما رو تغيير داد تكيه كردن ActionScript بر روي تكنولوژيهاي جديد Coding و Object Oriented Programming بود. برنامه نويسي شيء گرا آنگونه كه اكنون در بسيار Developerهاي مختل� مي‌بينيد چيزيست كه با همان روش در ActionScript وجود دارد. Objectها، Methodها و Eventها يه جزء بسيار پركاربرد از زبانهاي شيء گرا هستند شما براي اينكه Action نويس مو�ّقي بشيد بايد تصوّر و دانشتون رو در اين زمينه ارتقاء بديد و با همه امكاناتي كه Flash MX و Actionهاش براتون �راهم مياره آشنا بشيد.

كتابي كه در هنگام انتشار Flash 5 بسيار عالي من رو راهنمايي كرد و هنوز هم پركابرد هستش براي من كتاب جناب Colin Moock بنام Action Script for Flash: The definition Guide بود. اين كتاب �وق‌العاده بود و اگر بخاطر داشته باشيد خبر انتشار نگارش دوّم اين كتاب براي Flash MX رو هم براتون نوشتم، انتشارات غزال اين كتاب رو نداشت ولي يكي از دوستانم گ�ت كه به تازگي اون رو تهيه كردند. من �كر مي‌كنم از هر راهي كه شده بهتره اين كتاب رو تهيه كنيد چرا كه جديدترين تكنولوژيها و متدهاي نوشتن Actionها در اين كتاب آموزش داده شده و مطمئن باشيد نثري كه در اين كتاب مي‌بينيد رو هرگز نمي‌تونيد با كتابهاي ديگه مقايسه كنيد، انتشارات O'rielly معمولاً كتابهاي Refrence و مرجع رو منتشر مي‌كنه ولي اين كتاب يه نمونهء عالي هستش. بخش Designer and Developer در قسمت MX و Flash امروز يك �صل از اين كتاب رو آماده كرده براي خوندن. �صل دهم از اين كتاب كه به Eventها و Event Handling اختصاص داره رو مي‌تونيد از اينجا بخونيد و يا نسخهء PDF رو از اين آدرس دريا�ت كنيد.
بنظر مي‌رسه موج مثبت و بسيار م�يدي كه با شروع و اجراي مسابقه انتخاب بهترين وبلاگهاي �ارسي آغاز شد و باعث شد وبلاگها يك رشد كي�يّتي (و اكيداً نه كميّتي) رو شاهد باشند يك برآيند يا دوران ا�ت بدي داره. من اينطور احساس مي‌كنم كه وبلاگهاي �عّال بيشتر از روي ر�ع وظي�ه و بعضي نيز از روي عادت اقدام به نوشتن مي‌كنن. با كسي تعار� نداريم حتّي WebTag اون وبلاگي نيستش كه توي اون مدّت مسابقه �عّال كار مي‌كرد، جوّ حاكم بر محيط نياز به محرّك خوبي داره و اين حتماً بايد يه جوري اجرا بشه، محيط در حال حاضر همه وبلاگها رو دربر گر�ته، شايد امتحانات دانشگاهها، شايد ماه دسامبر و هواب باروني و شايد هر مسئله ديگه‌اي باعث ا�ت كي�ي وبلاگها شده باشه، طرز ت�كّر شما روي وبلاگ نويسي يا وبلاگ خونيتون چطوره؟ وبلاگ پرمحتواي جديدي ديديد به تازگي؟ Dreamweaver تخصّصي وبلاگ خوبيه، استثناست؟ وبلاگهاي حر�ه‌اي قبلي چند درصد پيشر�ت كرده‌اند؟ مقالهء كورش شمس درباره ا�ت نسبي وبلاگها كه دو ه�ته پيش نوشته شده بود بسيار هراس انگيز بود ولي اين تعداد� وبلاگهاي جديد نيست كه نگران كننده‌ست بلكه خالي شدن صحنه از وبلاگهاي �عّال و قوي پر سابقه‌ست كه نگران كننده‌تر است.

مقاله برنامه‌هاي پايان سال CNet رو براي پيشر�ت در زمينه تكنولوژي و تحقيق ببينيد و بخونيد، بسيار جالب و آموزنده‌ست، بجز جنبه‌هاي آماري روش برنامه‌ريزي جالبترين قسمت برنامه‌ست، سخنراني Bill Gates در ComDex 2002 و همينطور سخنراني مدير HP قبل از اينكه شركت CompaQ رو بخره و همينطور مقالهء پيشر�ت Cnet هر سه 5 هد� اصلي براي پيشر�ت تكنولوژي در سال آينده رو پيش پاي ما مي‌گذارند. پنج زمينهء مختل�، مرتبط و بسيار گسترده، امنيّت (Security)، سرويسهاي وب (Web Services) با تكيه بر تكنولوژي‌هاي جديد (مثل NET.)، برنامه‌نويسي و توسعهء تكنولوژيهاي Open Source ، �ن‌آوريهاي خانگي جديد براي آسانتركردن بخشهاي پيشر�ته و حر�ه‌اي (Personal Technologies) و در نهايت جالبترين بخش يعني ارتباطات بي‌سيم (Wireless Communications) كه من هم به شخصه بسيار بهش علاقه‌مندم. من كنجكاوم كه ببينم هم‌صن�هاي خودم و يا جمع وبلاگ نويس كه در حال حاضر شايد بشه گ�ت از رسانه‌هاي اصلي ايراني هستند براي آينده‌شون چه تصميمي گر�ته‌اند. شايد ديگه اون دوران گذشته باشه كه شب كنكور شب سرنوشت ساز زندگي ما باشه، امروز هد� تخصّصي ما كه بايد يك تصميم حساب شده باشه كه سرنوشت‌سازترين بخش زندگيمونه. �عّاليت، علاقه و استعداد شما به عنوان يك توسعه‌دهنده و يا طرّاح سيستم به كداميك از بخشهاي پيشر�ت تكنولوژي سال آينده مرتبط خواهد بود؟ اگر زمينه �عّاليت شما چيزي غير از اين مباحث است هميشه به خاطر داشته باشيد كه مو�ّقترينها را در بين اين 5 مبحث خواهيد يا�ت، مگر اينكه بتونيد انقلاب كنيد!
اگر علاقه‌مند به توسعهء وبي هستيد و اگر برنامه‌نويسي مسلّط به تكنولوژيهاي مايكروسا�تي مثل Net. و XML و يا زبانهاي، ASP و #C و همينطور VB هستيد، سايت iDevCenter يك سايت �ارسي و يكي از نمونه‌هاي خوب و آينده‌دار براي ارائه اطلاعات لازم و ايجاد ابزارهاي ارتباطي م�يد در اين زمينه‌است. گرچه اين سايت اطلاعاتي درباره Flash يا PHP رو جزو موضوعاتش قرار نداده ولي بازهم ساختار خوب و م�يد سايت من رو وادار كرد كه قسمتهاي مختل� اون رو بخونم. شايد تيم چندان بزرگي مسئول ارائه اطلاعات روي اين سايت نباشند و شايد اين سايت صر�اً يه InfoBase از شركت پشتيباني كنندهء اون يعني SoftTool باشه ولي در هر دو صورت iDevCenter يه نمونهء خيلي خوب از پروژه‌ايه كه مي‌تونه مو�ّق باشه. ظاهر ساده ولي كاملاً Reliable سايت باعث ميشه كه ازش خسته نشيد و بخشهاي خاصّ و بسيار جذّابي مثل مرور نشريات كامپيوتري به زبان �ارسي خيلي من رو جذب كرد. باني اين سايت بنظر بسيار علاقه‌مند به توسعه امكانات موجود بر روي سايت مي‌آيد كه اين امتياز بزرگ براي يك سايت اطلاع رسانيست.

نميشه گ�ت كه iDevCenter در حال حاضر يه پايگاه اطلاع رساني كامله و همينطور من درباره سرعت به روزرساني اين سايت چيزي نمي‌دونم، بنده همين امروز با اين سايت آشنا شدم و برّرسي من تنها اجمالي بوده. بخشهايي مثل اخبار، مقالات، كتابها و خودآموزها و همينطور مجلّات و سايتها همگي از قسمتهايي هستند كه مي‌تونن خيلي بزرگ و گسترده باشند از لحاظ محتوا و همينطور شايد بخشهاي ديگري مانند وبلاگها در آينده به اين قسمتها ا�زوده بشه. اطلاعات موجود در سايت جهتگيري خاصّي داره، مثل كتابهاي كانون نشر علوم كه در همه ص�حات عناويني رو مي‌بينيد و كتابهاي اصلي و غير �ارسي بخشي رو به خودشون اختصاص ندادند، يا بخشهاي مقالات نوشته‌هاي ا�راد متعدّدي رو �هرست نكرده. اينها رو ميشه به حساب زمان اندك از شروع كار گذاشت.
من اسم اين رو يه Template نو نمي‌گذارم ولي يكم خونه‌تكوني كردم تا ظاهر اينجا زياد يكنواخت نشه. خودتون بهتر از من مي‌دونيد كه ظاهر يه وبلاگ چندان كم اهميّت تر از محتويّاتش نيست. سعي كردم كه بهتر از قبليه بشه، ولي اگر نشده شرمنده‌ام. طبق آماري كه Stats اين سايت ارائه مي‌كنه بيشتر از 85 درصد بازديد كنندگان اين وبلاگ از Internet Explorer و Opera است�اده مي‌كنند و كمتر از 10 درصد با NetScape Communicator يا NetScape Navigator به اينجا ميان، اين آمار خوبيه اگر بنده وبلاگ رو صر�اً براي كاربران IE سازگار نگه دارم. كاربران NN تا اطّلاع ثانوي با محتويّات وبلاگ مشكل دارند، البته حل كردن و وصله پينه كردن اين مشكل كار سختي نيست امّا ... ! [نظر شما چيه؟]
اين وبلاگ به نام Quasimondo: Almost Home هم درباره Flash MX مي‌نويسه، من اين وبلاگ رو از روي Reffererهام پيدا كردم. اين برام جالب بود كه نويسندهء وبلاگ با معرّ�ي وبلاگ من به عنوان يه وبلاگ ايراني به پروژه Component نوشتار �ارسي علاقه‌مند شده، بايد با نامه‌اي كه براش مي‌نويسم اطلاعات لازم رو براش ترجمه كنم ب�رستم. اگه به وبلاگ ايشون سر زديد حتماً Sourceش رو ببينيد كه يه نمومهء خوب از كدهاي XHTML و سازگار هستش كه از Indexگذاري RDF هم است�اده كرده. اين تبديل و يا �ارسي نويسي كم كم داره مورد علاقه‌ام ميشه مخصوصاً وقتي كه اوّلين كدي كه شما نوشتيد رو دريا�ت كردم، يكي از دوستان كدي براي من نوشته كه سعي كرده حركت گذاري رو تصحيح كنه و تا جايي هم مو�ّق بوده، روش كار روش درستيه، يعني است�اده از يه تابع ديگه براي دريا�ت اطلاعات پيش�رض در مورد حركتها، ببينيد حركتها مثل "�تحه"، "ضمّه" يا "تشديد" وضع خاصّي در كد ما دارند چون بايد بصورتي حتّي Transparent باشند و كدهاي ما روشون اثر نگذاره، اگر حر�ي كه نوشته ميشه يا خونده ميشه حركت باشه هيچ تأثيري روي ساير حرو� نمي‌گذاره و اين بايد حتماً رعايت بشه. نوشتن يه تابع جداگونه كاملاً كار صحيحيه چون حركتگذاري روش كاملاً مجزّايي در برخورد با ساير حرو� داره. جايي كه بايد مركز توجّه ما باشه حركتهاي پاياني نيست، بلكه حركتهاي وسط كلمات هستش، در كدي كه ايشون نوشتند تا حدّي حركتگذاري بين كلمات تصحيح شده ولي اگر از حرو�ي مثل "ـا" (ال� پاياني) است�اده كنيم كد دچار اشكال خواهد شد.

هيچ لزومي در است�اده از كدهايي كه من نوشتم نيست، بلكه حتّي اگر لازم باشه شما مي‌تونيد تمام كد رو تغيير بديد و يه كد تازه بنويسيد، يا حتّي ساختار اصلي برنامه رو هم از نو يادداشت كنيد. كاملاً مشخّصه كه اين تنها روش نوشتن يك �ارسي نويس نيست و به راحتي ميشه روشهاي ديگه‌اي طرّاحي كرد، مو�ّق باشيد :)

Thursday, December 05, 2002

متأسّ�انه تلاشم براي يا�تن نسخهء مناسبي از نرم‌ا�زاري كه بتونه خط شكسته نستعليق رو شبيه سازي بكنه نيمه شكست خورد! تنها نرم‌ا�زاري كه اكنون در بازار ايران اين خط رو تأييد شده و تضمين شده مي‌نويسه نرم‌ا�زار كلك نسخهء 80 محصول سينا پردازش هستش. اين نرم‌ا�زار 150000تومني با ق�ل سخت ا�زاري كه به گ�تهء توليد كننده غير قابل شبيه سازي است (!) دو تا اشكال بزرگ داره، اشكال اوّل اينكه روي سيستمهاي Macintosh نصب نميشه، يعني بنده براي است�اده از اين نرم‌ا�زار بايد يه PC كه حدّاقل 800دلار قيمت داره تهيّه كنم، علاوه بر اين توليد كننده گ�ت كه عملكرد صحيح برنامه روي ويندوز XP و همينطور ق�ل سخت‌ا�زاري روي ويندوزهاي بر پايه NT تست نشده و تضمين نميشه، نكتهء ديگر قضيه كه باز هم ما رو دچار مشكل كرده اينه كه هر نسخه از نرم‌ا�زار تنها قابليّت يكبار نصب شدن بر روي ق�ل سخت‌ا�زاري همراهش رو داره! يعني بنده اگر بخوام سه تا گرا�يست استخدام كنم بايد 450هزارتومن هزينه 3 تا نسخهء جداگونه از اين نرم‌ا�زار رو بدم! غير منطقيه. مطمئنّا هيچ ق�لي غيرقابل شكستن نخواهد بود، اطمينان توليدكنندگان از امنيّت ق�لشون يكم شك برانگيزه، البته مطمئنّا خريد نسخهء Crackشده كار درستي نخواهد بود ولي وقتي امكانات مناسب در اختيار بنده به عنوان كاربر قرارنگر�ته مجبورم منتظر يه [پيشنهاد]. باشم!
نسخهء نهايي Macromedia Contribute امروز منتشر شد. بدون هيچ توضيحي اين متن خبر و اينهم لينك دريا�ت نسخهء Trial. همونطور كه قبلاً هم در توضيحم گ�تم من زياد موا�ق است�اده از اين نرم‌ا�زار نيستم، امّا اگر مي‌خوايد بدونيد چه شكليه حتماً دريا�تش كنيد كه رابط كاربر خيلي قوي‌اي داره.

از نظر اصولي درستش اينه كه قبل از شروع هر كاري تواناييمون رو بسنجيم و ببينيم آيا مي‌تونيم اون كار رو انجام بديم؟ صر�اً علاقه‌داشتن به انجام دادن يه كاري نمي‌تونه دليل خوبي براي شروع اون كار باشه. روي ديگهء قضيه وقتيه كه ما يه كاري رو شروع كنيم و دائماً از اين صحبت كنيم كه كمبود وقت و مشغله زيادمون باعث ميشه نتونيم كارها رو درست انجام بديم. بنظر من اينجور منّت گذاشتن روي مشتريانمون تأثير خيلي بدي روشون خواهد گذاشت، مثلاً اگر من كه اومدم اينجا وبلاگ مي‌نويسم هر روز بيام بگم كه من سرم خيلي شلوغه وقت ندارم و هزارتا پروژه روي سرمه و اگه چيزي اينجا مي‌نويسم دارم از وقت بقيه كارام مي‌ذارم؛ بطور كل ذهنيّت خوانندگانم رو تغيير مي‌دم. همونطور كه گ�تم ما وقتي كاري رو انجام مي‌ديم كه موقعيّت و تواناييش رو داشته باشيم، اگر من �رصتي براي وبلاگ نوشتن ندارم كار بيهوده‌اي كردم كه وبلاگ راه انداختم، كه هم وجههء خودم رو خراب كردم و هم وقتم رو تل� كردم! �كر نكنم كسي مخال� اين نظر باشه!

Wednesday, December 04, 2002

شايد بعد از اينكه يكي دو تا از آهنگاي مورد علاقه‌مون رو با تكنولوژي جديد Audio 5.1 در Windows Media Player 9 Series گوش داديم و از كي�يت بي‌نظيرش لذّت برديم دلمون بخواد كه راهي پيدا كنيم تا موتورهاي جستجو بتونن داخل SWFهاي ما رو بگردند و براي جستجو كننده‌ها Record درست كنند! سايت Macromedia اطلاعات خوبي ارائه كرده ولي راهي كه به عنوان نمونه گ�ته كمي قديميه. سايت Search-Flash يك پروژه Open-Source هستش كه �قط قراره به شما كمك كنه تا SWFهاتون رو قابل جستجو كنيد تا موتورهاي جستجو بتونن داخل Movieهاي شما رو بگردند و همينطور لينكهاي مناسب به اجزاي مرتبط Movie شما ارائه كنند! تا حدّي باورنكردنيه؟ شايد بهتر باشه بريم چند تا آهنگ ديگه گوش بديم!
خب اينهم از نسخهء دوّم (0.2) از ActionPack. خب راستش من هنوز هيچ كدي از Action نويسان خوانندهء اينجا دريا�ت نكردم و هيمنطور هيچ Hintي درباره كد البته خب زمان كوتاه بوده و مطمئنّا چون من نويسندهء اين Action هستم راحتتر و سريعتر هم مي‌تونم روش كار كنم، اگر �كر مي‌كنيد Action مورد نظر به اندازه كا�ي گويا نيست مي‌تونم كاملاً تشريحش كنم؟ حتماً پيشنهاداتتون رو برام ب�رستيد.

امّا اون باگي كه ازش صحبت كردم رو خودم نهايتاً پيدا كردم و خيلي جالب بود برام كه موقع نوشتن خيلي بي‌دقّتي كرده بودم سر اين بخش. خب اشكال از دستور substr نبود بلكه اشكال واقعاً يه باگ در متن برنامه بود. بخش زير قسمت قبلي Actionي بود كه نوشته بودم.

textF=textF.substr(1);
if(isStickable(textF.charAt(0))){
if(isStickable(textF.charAt(1))){
//small middle
textF=toCapitalSticked(textF.charAt(0))+textF.substr(1);
}else{
//small first
textF=toCapitalLonely(textF.charAt(0))+textF.substr(1);
}
}


و اين قسمت در نسخهء جديد با اين كد عوض شده.

if(textF.charAt(0)==String.fromCharCode(0x00AF)){
//Testing "LA" first form
textF=String.fromCharCode(0x00AD)+textF.substr(1);
}else if(textF.charAt(0)==String.fromCharCode(0x00B0)){
//Testing "LA" second form
textF=String.fromCharCode(0x00AE)+textF.substr(1);
}else{
//Testing other Stickable form
textF=textF.substr(1);
if(isStickable(textF.charAt(0))){
if(isStickable(textF.charAt(1))){
//small middle
if(toCapitalSticked(textF.charAt(0))==undefined){
textF=toSmallMiddle(textF.charAt(0))+textF.substr(1);
}
textF=toCapitalSticked(textF.charAt(0))+textF.substr(1);
}else{
//small first
if(toCapitalLonely(textF.charAt(0))==undefined){
textF=toSmallFirst(textF.charAt(0))+textF.substr(1);
}
textF=toCapitalLonely(textF.charAt(0))+textF.substr(1);
}
}
}


اگر دقّت كنيد متوجّه خواهيد شد كه اشكال در �رستادن كدهاي متغيّرها به Functionها بود. علاوه بر اينكه اين مشكل حل شد اكنون كد كوتيشن (گيومه) هم به ليست كدها ا�زوده شده و همينطور حر�هاي قابل اتصال "لا" بطور كامل پشتيباني مي‌شوند. در نمونهء پايين بطور مثال تايپ كنيد "سلام! " و با كليد Backspace حرو� رو پاك كنيد، خواهيد ديد كه روش كار بدون اشكال هستش، درحاليكه در نسخهء قبلي كه در پستهاي ماقبل نمونه‌اش را خواهيد ديد اين كار با اشكال و باگ همراه بود.




در حال حاضر مي‌شه گ�ت كه تنها 3 بخش اصلي براي آماده شدن قسمتهاي واقعي كار مورد نياز هست، تغيير text Order براي اعداد �ارسي و همينطور تغيير زبان و همينطور ايجاد حركتهايي مثل تشديد، �تحه و كسره. براي اين سه قسمت من نمونه‌هايي رو و همينطور امكانات تازه‌اي رو به كد جديد در نسخهء دوّم اضا�ه كردم كه اگر با دقّت نگاه كنيد آنها را خواهيد يا�ت. مطمئنّا مي‌تونن به شما كمك كنن، بدون شك بخشهايي كه شما مي‌تونيد به اين كد اضا�ه كنيد هرگز به ذهن من خطور نخواهد كرد، پس دست بكار بشيد و اگر كمكي هم نياز بود حتماً با من تماس بگيريد. از اينجا و يا از لينكهاي سمت چپ Action Pack جديد رو دريا�ت كنيد و �راموش نكنيد كه پيشنهادات و انتقادات و نظراتتون رو .[به اشتراك بگذاريد].
پيشنهادات جالبي درباره �ارسي نويس مربوطه برام ارسال كرديد كه اوّل تشكّر مي‌كنم و بعد يه نكته‌اي رو بايد توضيح بدم، ببينيد ما اگر از رابطهاي استاندارد Flash (توجّه كنيد كه سمت Client Side يعني Flash Player مدّ نظر ماست) است�اده كنيم و اين �ارسي نويس رو بنويسيم براش مي‌تونيم هر كاربردي كه �كرش رو بكنيد درنظر بگيريم. مثلاً يكيش همون پيشنهادي هستش كه من براتون داشتم، يعني تبديل اين �ارسي نويس به Componentهاي Text Input براي دريا�ت Recordهاي �ارسي از كاربر. اين Action به هيچ وجه يه Editor نيست ولي حتّي مي‌تونه به يه Editor تبديل بشه. هد� ما در حال حاضر نوشتن كد اصلي هستش كه بعدش كاربردهاي مختل�ي ازش بگيريم.

نكته دوّم براي انتخاب استاندارد كد پيج مورد نظر هستش، ببيند منظور واقعاً يه كد پيج هستش، وقتي شما نياز به انتخاب يه استاندارد از بين استانداردهايي كه با هم سازگار نيستند و همينطور در دپارتمان وب هم ثبت نشدند داريد بايد به �كر يك كد پيج باشيد، امّا تهيه كد پيج شخصي خب كار بيهوده‌ايه چون اين سازگاري بايد ح�ظ بشه. نوشته دوست عزيزم مهران طاهري و پيشنهادات ايشون رو بخونيد. درباره مورد اوّلي كه ايشون نوشتند خب بايد بگم كه خود من هم به اين �كر هستم و روي سايت Macromedia جاي مخصوصي براي قراردادن توضيحات چنين نوشته‌هايي وجود داره و همينطور سايت Flashkit هم مكان خوبي براي نوشتن نمونهء Actionهاست. مورد دوّم مورد بزرگيه كه اميدوارم توضيحاتم دليل بر توجيه نشه صر�اً مي‌خوايم بهترين راه رو پيدا كنيم. در درجه اوّل باز هم اين نكته رو يادآور مي‌شم كه اين Component يه اديتور نيست امّا مطمئنّا بايد بحث استانداردها توش رعايت بشه. Unicode خيلي خوبه ولي متأسّ�انه ما هر طور اين Component رو بنويسيم در نهايتا بايد با Flash Player اجراش كنيم و اين جاييه كه نوشتن و Text Order بسيار مو�ّق Right to Left پشتيباني نميشه بنابراين مشكل چند برابر خواهد شد. همونطور كه در نوشته قبلي گ�تم نمونهء اوّل اين Component كه بنده نوشتم نمونهء Unicodeي هستش و كامل و آماده‌ست و همه توابع و ساختارها هم تست شدند، ولي به هيچ وجه نميشه از حالت استاندارد Right to Left Text Order است�اده كرد، اتّ�اقاً نوشتن Unicodeي اين �ارسي نويس بسيار ساده‌ست و نياز به تبديل و يا تبديل �رم حرو� هم نيست، و اگر شما با اين سيستم تنها به نوشتن �ارسي قناعت كنيد خيلي هم خوب كار مي‌كنه ولي علاوه بر اشكال Text Order وابسته بودن اون به OS و Flash Player تنها قابل است�اده در ويندوزهاي 2000 و XP خواهد بود، در واقع سيستم عاملهايي كه قابليّت نوشتن �ارسي رو از راست به چپ يا عربي از راست به چپ رو داشته باشند مي‌تونند از اين نوشتار است�اده كنند. اين يعني منت�ي شدن است�اده از هر �ونتي كه با استاندارد UTF-8 نوشته شده از جمله Nesf.ttf.

اگر از لحاظ كاربردي به مسئله نگاه كنيم من �كر مي‌كنم اين حالت دوّم خيلي غير استاندارد تر از حالت اوّله. اگر هد� ما توليد �ارسي سازي با رابط خارجي بود، كاري كه چندين نمونه از اون وجود داره، هيچ مشكلي نداشتيم و شايد اصلاً لزومي به انجامش نبود، امّا كاربرد Text Fieldهاي ساده و تك خطي در Flash خيلي م�يدتر از كاربردهاي �رمهاي ورودي بانك اطلاعاتي خواهد بود. من �كر نمي‌كنم كسي علاقه‌مند باشه با يه �رم Flash مقاله‌هاي كاربرانش و يا متنهاي بلند و بالا رو دريا�ت كنه، يه Movie و يه Multimedia خيلي كمتر با اطلاعات ورودي سر و كار داره، شايد وارد كردن كد كاربري و يك كلمه براي جستجو كا�ي باشه، بازهم بنظر من براي اين حالت كه كاربرد بيشتر هم خواهد نياز به است�اده از استاندارد بارها و بارها مهمتر جلوه مي‌كنه.

يه نكته‌اي هست كه حتماً بايد بهش توجّه كنيد، شما مي‌تونيد در Flash بدون رعايت هيچ استانداردي Movie �ارسي بسازيد و با اين �ارسي سازي كه بنده ارائه كردم ورودي �ارسي هم داشته باشيد، چون مي‌تونيد �ونتها رو در Movie هم ضميمه (Embed) كنيد مشكلي باري كاربرانتون پيش نخواهد اومد و حتّي قسمتهاي ورودي سايتتون هم از همون �ونتها است�اده خواهند كرد و در نهايت شما كدي مي‌نويسيد كه اين استاندارد رو به استاندارد Unicode يا هر چيز ديگه‌اي تبديل كنه، ببينيد ما داريم اينجا Interface مي‌سازيم و مي‌بينيد با اين حساب هيچ مشكلي هم نخواهيم داشت و همه چيز به خوبي كار خواهد كرد.


امّا دو تا دليل هم دارم براي اينكه از �ونت Nesf پيشنهاد اقاي طاهري است�اده نكنيم. Flash در نگاه اوّل يه برناه گرا�يكيه، توي اين برنامه است�اده از �ونتهاي مختل� مي‌تونه خيلي م�يد باشه، رابط شما كاملاً س�ارشي و تا حدّي نشون دهنده هنر شماست، �رمهاي Flash وابسته به تنظيمات browser شما نيستند و برعكس �رمهاي HTML دقيقاً همونطوري كه طرّاحي شدند بايد نمايش داده شوند، اين دو قسمت اهمّيت وجود يك Collection متعدّد از �ونتها رو آشكار مي‌كنه. استاندارد UTF-8 قابل انتقال به برنامه‌هاي گرا�يكي مثل Flash نيست و همينطور Collection خوبي از �ونتها رو نداره (بجز مجموعهء IUFonts كه با سيستم Windows 2000 سازگاره). �ونت Nesf هم ت�اوتي با ساير �ونتهاي UTF-8 مثل Tahoma خودمون نداره بغير از يه اصلاحات كه در صورت انتخاب UTF-8 باعث ميشه اين �ونت كلاً از مجموعه انتخابيمون حذ� بشه، چون اين اصلاحات باعث غير استاندارد شدن اون شده. اين �ونت متأسّ�انه خيلي هم نا مرتّبه و كدهاي مختل� براي سازگاري با �ارسي نويسهاي مختل� باعث ايجاد حرو� تكراري شدند و بازهم متأسّ�انه كد ShiftU0x0070 هم وجود نداره! من خيلي روي اين كد حسّاس هستم و �كر مي‌كنم يكي از اجزاي اصلي نوشتار �ارسيه كه اگر �راموش شده باشه به معني بي‌نظمي م�رط در طرّاحي يك �ونت يا Code Page هستش.

در نهايت براي بحث در مورد پيدا كردن استاندارد كدها دو نكته با توجّه به صحبتهاي من و جناب طاهري اهميّت داره، ابتدا Code Pageي كه مت�اوت با Code Page اصلي UTF-8 داشته باشيم و دوّم استانداردي كه قابل است�اده در برنامه‌هاي گرا�يكي به همراه مجموعه �ونتهاي قابل قبول و متعدّد باشه. در حال حاضر هنوز استاندارد مناسبتري پيشنهاد نشده.

حتماً نظراتتون رو در ادامه نظرات ديگران درباره اين بحث [بيان كنيد].
ديروز دوّمين Developer Resource Kitه Macromedia هم منتشر شد. اين نسخه هم مانند نسخه قبلي شامل Extensionهاي مختل� و كاملاً جديد بهمراه تعداد زيادي راهنما و Help است. Flash و Dreamweaver MX و Firework مشتريان اين نسخه هستند. ابزارهاي ضميمهء موجود در اين CD بخشهاي مختل� رو شامل ميشه كه جالبترينشون ابزارهاي PHP و SQL و Referenceهاي ايندو در Dreamweaver MX است. بهترين بخش ضميمه Flash هم Component UI Set 4 هستش كه ديگه ليست Componentهاي Flash رو كامل كرده، نمونه‌هاي موجود در اين نسخه Smart Combo Box و Advanced Calendar و Color Picker و Simple Menu و همينطور از همه جالبتر Rich Text Editor است. حتماً پيشنهاد مي‌كنم اين Text Editor رو ببينيد و سورسش رو دريا�ت كنيد، عالي طرّاحي شده.

علاوه بر ابزارهاي ضميمه؛ مقالات، راهنماها و Tutorialهاي بسيار م�يدي مانند نسخه قبلي در اين CD موجود است، البته من �كر نمي‌كنم بار علمي اين CD با اندازه CD قبلي باشه ولي در نسخهء دوّم از Macromedia DRK مطمئنّا شما مطالب پيشر�ته‌تري رو خواهيد و همينطور يك خلاصه عالي از همه قابليّتهايي كه در 4 يا 5 ماه گذشته به ابزارهاي Macromedia بر روي سايتش اضا�ه شده. يكي از بخشهاي خيلي خوب از راهنماها آرشيو كاملي از مطالب بخش Designer and Developer است كه همه محصولات رو در بر خواهد گر�ت، نرم‌ا�زارهاي كاربردي‌اي كه در اين بخش نوشته شده بود هم در CD ضميمه شده‌اند، Pet Market و photo Album و همينطور Remote Shopping كه با ابزارهاي Flash و Dreamweaver MX و Cold Fusion MX ساخته شده‌اند. مطمئن نيستم كه بتونيد به اين زوديها مطالب اين CD رو كاملاً در ايران پيدا كنيد ولي در اين ص�حه مي‌تونيد اطلاعاتي درباره بخشهاي مختل� اطلاعات اين كيت بدست آوريد و در صورت نياز روي سايت Macromedia و بخش Downloads دنبالشون بگرديد!

در ضمن متن كامل كتابهاي Macromedia Dreamweaver MX Visual QuickStart Guide و Dreamweaver MX Magic و Macromedia Flash MX: Creative و Web Animation and Interactivity و Inside Flash MX و Advanced ColdFusion MX Application Development و ColdFusion MX: Web Application و Construction Kit و Reality ColdFusion: Flash MX Integration و Step into ColdFusion Powered Macromedia Flash هم در اين CD ضميمه شده :)

Tuesday, December 03, 2002

اين �ارسي ساز كه به Flash Movie در سمت Client اجازه وارد كردن حرو� �ارسي رو ميده درواقع يك �ارسي نويس كامل قراره بشه. ما اون رو به يك Compenent تبديل مي‌كنيم كه شم به راحتي بجاي Text Fieldهاي Inputتون ازش است�اده خواهيد كرد. امّا ما مي‌خوايم اين كار رو با هم انجام بديم تا معني واقعيه Shared Project رو درك كنيم. همونطور كه مي‌بينيد من سورس كامل Actionي كه نوشته بودم رو به همراه Flash Movie مثال مربوطه در بخش سمت چپ اضا�ه كردم براي است�اده از اونها طبق اين دستورالعمل ساده عمل كنيد.

1- هر دو �ايل PersianTTTFlashPack.ZIP و PersianTTTActionPack.ZIP رو از لينكهاي سمت چپ دريا�ت كنيد.
2- هر دو پكيج رو در يك دايركتوري باز كنيد و نام �ايلهاي رو تغيير نديد.
3- �ونتي كه در پكيج Flash Pack قرار داره رو نصب كنيد و �ايل FLA رو با Flash MX يا Swish باز كنيد.

شما مي‌تونيد با ويرايش �ايل as. تغييرات لازم خودتون رو ايجاد كنيد، اگر Dreamweaver MX كه ويرايشگر خيلي خوبي براي Action Script هست رو نداريد مي‌تونيد همه محتويات �ايل as. رو در �ريم اوّل در لايهء 2 بجاي دستور include# وارد كنيد. شما اكنون مي‌تونيد �ايل FLA و برنامه اصلي رو با Flash MX ترجمه و Compile كنيد و همينطور اون رو Debug كنيد. من يك Code Viewer هم در كد برنامه قرار دادم كه اگر شما برنامه Compile شده رو در خود محيط Flash ببينيد پنجره Output كدهاي دريا�تي از Key Board رو به شما نشون خواهد داد و همينطور وضعيّت كليدهايي كه مي‌شناسه مثل Shift رو هم گزارش خواهد كرد، سعي كنيد اگر بخش خاصّي براي اين برنامه مي‌نويسيد حتماْ از راهنماهاي trace است�اده كنيد تا بقيه دوستانتون هم روش كارتون رو متوجّه بشن. توجّه كنيد كه اگر در خود Flash اين برنامه رو اجرا مي‌كنيد حتماً براي �رستادن كدهاي مستقيم قبل از شروع رو تايپ روي Text Fieldتون كليك كنيد، اگر با اوّلين حر� پنجرهء Output باز شد به اين معني هستش كه Focus به اون پنجره منتقل شده و شما بايد دوباره روي Text Field كليك كنيد، اين مشكل خارج از محيط Flash بوقوع نخواهد پيوست، بعد از اينكه برنامه رو كامل كرديم حتماْ براي Component نهايي بايد يك تابع در دسترسي به Focus روي Text Field طرّاحي كنيم.

Persian TrueType Typist


شما اگر كاراكترهاي �ارسي �ونت مورد نظرتون رو همراه Movie قرار نديد تمام محتويات و توابع اين �ارسي نويس به 4 كيلوبايت هم نخواهد رسيد. بعد از نصب �ونت �ايل PersianTTTTiny.swf رو ببينيد كه تنها 4 كيلوبايت حجم دارد. من �علاً براي اين نمونه از �ونتهاي �ارسي ساز مريم است�اده كردم، اگر از كاربران اين برنامه باشيد از كاربرد خوبش در ويندوزهاي 98 و ME حتماً راضي خواهيد بود، البته Editor اين برنامه چندان قدرتمند نيست ولي سازگاري اون بخاطر �ونتهاش قابل قبولتر از نمونه‌هايي مثل ParWin 98 يا �ارسي ساز نوين هستش. البته برنامه ويرايشگر مريم در ويندوزهاي NT و 2000 و XP عمل نخواهد كرد. شايد تا اينجا بدون در نظر گر�تن ساير قابليّتهاي �ارسي سازي كه قراره با هم بنويسيم بتونيم بگيم كه با توليد يه projector ساده و يا يك ص�حه Web مي‌تونيم به سادگي كارهايي كه �ارسي ساز مريم انجام مي‌داد رو شبيع سازي كنيم. ت�اوت كار در اين خواهد بود اين �ارسي ساز در همه سيستمهاي عامل به درستي عمل خواهد كرد. روي تمامي كامپيوترهاي X86 يا سيستمهاي RISC با قابليّت است�اده از رابطهاي ورودي استاندارد براي KeyBoard اين �ارسي ساز عمل خواهد نمود.

روش دريا�ت كدها در اين �ارسي ساز بصورت كاملاً مستقيم هستش. يعني Flash Movie شما براش مهم نيست كه OS چه كدي رو بعد از Layout كي‌برد شما قرار ميده، بلكه مهم اينه كه چه كليدي رو KeyBoard شما �شار داده ميشه. است�اده از اين مطلب گرچه خطوط بيشتري رو به برنامه ا�زوده ولي كار رو مطمئنتر كرده. به دليل است�اده از متد getCode در شيء Key من براي اين كد مجبور شدم يك تابع Shift Detector بنويسم كه خودم �كر مي‌كنم بخش خوبي از اين برنامه‌ست كه خيلي خوب كار مي‌كنه و شما هم احتمالاً در تغييرات بعديتون اون رو تغيير نخواهيد داد و خيلي ساده در صورت نياز كليدهاي تركيبي Ctrl و Alt رو اضا�ه خواهيد كرد.

امّا برنامه شايد ظاهراً بلند و بالا باشه ولي هنوز كامل نيست، دو بخش اصلي كه مي‌خوايم با كمك هم بنويسيمشون يكي نوشتن قابليّت نوشتار اعداد از چپ به راست هستش كه برنامه خودش بتونه تشخيص بده كي از اعداد است�اده كنيم و كي نكنيم. ببينيد نكته‌اي كه براي من در نوشتن اين برنامه خيلي مهم بوده، سرعت اجراي اون هستش، اين برنامه رو به چندين روش مي‌شد نوشت، براي توليد كدها مي‌تونسم معادلهاي اونها رو روي KeyBoard است�اده كنم كه كارم خيلي راحتتر مي‌شد ولي اگر Performance كار كردن نوشتاري رو ببينيد خواهيد ديد كه راضي كننده خواهد بود. با توجّه به اينكه شما در آينده از اين �ارسي نويس به عنوان يكي از اجزاي �رمتون است�اده خواهيد كرد بايد توجّه داشته باشيم كه كارايي اون روي ساير اجزاي Movie شما تأثير نگذاره. سعي كنيد اين رو در نظر داشته باشيد كه اگر مي‌خوايد قابليّت تازه‌اي به اين برنامه بيا�زاييد حتماً �اكتور سرعت رو درنظر بگيريد. قسمت بعدي كه خيلي جالب خواهد بود ا�زودن قابليّت تايپ �ارسي و انگليسي توأماً است. متأسّ�انه �ونتهاي �ارسي ساز مريم تنها حرو� �ارسي رو شامل مي‌شن و شما نمي‌تونيد از حرو� انگليسي در آنها است�اده كنيد، براي اين كار نياز به تغيير �ونت داريم، كاري كه اصلاً استاندارد نيست ولي �علاً مجبوريم.

در نهايت اين برنامه يك باگ بزرگ داره. نمونهء زير رو درنظر بگيريد.




كلمه‌اي مثل "اينترنت" رو تايپ كنيد، اين كلمه يك كلمهء تنهاست، حالا دونه دونه با Backspace حرو� رو پاك كنيد، مي‌بينيد هر حر� بعد از پاك شدن حر� بعدش به حر� بزرگ تبديل ميشه كه خيلي جالب به نظر مياد و شما مي‌تونيد از همونجا دوباره به تايپ ادامه بديد. امّا حالا كلمه‌اي رو در نظر بگيريد كه دو قسمتي باشه يا اصلاً جمله‌اي كه Space توش بكار ر�ته باشه، به روش كار كليد BackSpace در پاك كردن حرو� بعد از Space توجّه كنيد، مشكل رو متوجّه شديد؟ من مي‌دونم اشكال كجاست. كد زير رو كه كد كليد BackSpace هست نگاه كنيد.

textF=textF.substr(1);
if(isStickable(textF.charAt(0))){
if(isStickable(textF.charAt(1))){
//small middle
textF=toCapitalSticked(textF.charAt(0))+textF.substr(1);
}else{
//small first
textF=toCapitalLonely(textF.charAt(0))
+textF.substr(1);
}
}


اشكال در عملكرد (textF.substr(1 است. substr از حر� شماره 1 String ما رو شماره‌گذاري مي‌كنه ولي متأسّ�انه اگر اوّلين حر� از سمت چپ Space باشه اين حر� جزو شماره گذاريهاي به حساب نخواهد اومد، است�اده از subString بجاي substr هم مشكل رو برطر� نخواهد كرد. اينطور عملكردن باعث ميشه كه هنگام وجود داشتن Space در انتهاي خط �ارسي با �شاردادن كليد BackSpace بجاي يك حر� 2 حر� از String پاك بشه و شماره‌گذاريهاي غلط از آب دربياد و حر�ي كه بايد به �رم بزرگش تبديل بشه درست عمل نكنه.

اين مطمئنّا تنها Shared Project ما نخواهد بود، كاركردن ما تحت همين كلمهء "ما" يعني قدرت چند برابر، من سعي كردم حسن نيّتم رو با قراردادن متن كامل برنامه‌ام نشون بدم و مطمئن هستم كه شما هم كمك خواهيد كرد تا اين برنامه رو كامل كنيم و به نام همه اونهايي كه توش كمك كردند روي يه جاي Public براي در دسترس قراردادن مردم بگذاريم.

من بسيار خوشحال مي‌شم اگر روي اين دو مورد �كر كنيد و همينطور اگر علاقه‌مند به ا�زودن قابليّتهاي جديد به �رم اصلي �ارسي نويس هستيد حتماً دست بكار بشيد ولي توجّه كنيد كه در حال حاضر ما ميخوايم بخش اصلي رو تكميل كنيم و است�اده از اين �ارسي نويس براي يك Component يا قابليّتهاي جنبي اي كه ميشه ازش است�اده كرد در پلّه‌هاي بعدي قرار دارند، انتظار يه كار �عّال از دوستاني كه روي Action Scripting �عّاليت كردند دارم تا بتونيم اين اشكالي تا امروز هيچ كسي براش دست بكار نشده رو حل كنيم. بجز دو سه موردي كه عنوان كردم نكتهء اصلي‌اي رو هم در نظر بگيريد، من براي نمونه از �ونتهاي �ارسي نويس مريم است�اده كردم، �ونتهاي نوين گرچه قابل است�اده بودند ولي هم محدود و هم غير Unicodeي بودند و است�اده از اونها نياز به است�اده از كدهاي مستقيم در �ايل داشت كه روش خوبي براي انتقال كدهاي غير لاتين نبود، شايد نمونه‌هاي بهتري هم براي كار موجود باشه، من بيشتر براي اين همه �ونتهاي �ارسي نويس مريم رو ضميمه نكردم كه شايد اين رو به زودي تغيير بديم، اگر �كر مي‌كنيد استاندارد مناسبي براي اين كار نداريم آيا داوطلب بين شما هست كه زحمت تبديل اين �ونتها رو به نمونه‌هاي قابل است�اده‌تر بكشه؟ راستي �كر مي‌كنيد شركت توليد كننده �ارسي ساز مريم چقدر بايد به ما بده تا از استانداردش است�اده كنيم؟ :>

درباره همه قسمتهاي نوشته [نظرتون رو بيان كنيد.]
اين نوشتهء Lynx در وبلاگ Black Hat عزيز رو خونديد؟ دستور Siquelه LOAD DATA INFILE كه البته از نسخهء 3.6 به بعد در MySQL قابل است�اده خواهد بود (در نسخه‌هاي غير رايگان!) يكي از دستوراتي بود كه طبق گ�ته توليد كنندگان خيلي خوب تضمين شده. من خودم هم اين روش رو روي MySQL 4.1 امتحان كردم و جواب نگر�تم، احتمالاً اين اشكالات امنيّتي نسخهء 3 هستش كه به همين دليل هم در نسخه‌هاي رايگان ضميمه نشده! همونطور كه مي‌دونيد MySQL نسخه‌هاي جديدش رو براي Download ارائه نميده و نسخه‌هاي تاريخ گذشته رو قابل Download و رايگان قرار داده. البته خوشبختانه اگر مدير سيستم با ك�ايتي داشته باشيم مي‌تونه جلوي اين اشكال رو با ايجاد دسترسي جدا براي كاربران Data Base حل كنه.
اينجا وبلاگيه كه طرّاح Template اون Skinه كوآلاي Winamp 3 رو بطور ماهرانه‌اي تشريح كرده و ازش يه ص�حهء كامل وب ساخته، كي�يّت كار و همينطور دقّت طرّاح قابل تقديره، نويسنده وبلاگ اظهار مي‌كنه كه تمام Template مورد نظر با نرم‌ا�زار Corel Photo-Paint درست شده. توي اين وبلاگ دوستمون درباره نرم‌ا�زار Photo Paint كه شديداً مورد علاقهء من هستش مي‌نويسند، آموزش و اطلاعات م�يدي قراره توش ارائه بشه، البته بنظر مياد ايشون يكم متعصّب هستند، من لينك اين وبلاگ رو از نوشتهء زهير عزيز در سكتور ص�ر پيدا كردم. راستش اين از اون رقابتهاييه كه ميشه گ�ت خيلي م�يده. اينكه آيا Photoshop بهتره يا Photo Paint بنظر من بيشتر به طرّاح در پشت مانيتور برمي‌گرده كه اين طرّاح با امكانات كدوم يكي از نرم‌ا�زارها تصاوير بهتري خلق مي‌كنه. من �كر مي‌كنم برتري Photoshop در رمينهء امكانات و ابزارها و از همه مهمتر Extensionها كه Adobe اونها رو Plug-in خطاب مي‌كنه، غير قابل انكاره. حتّي اگر �رض كنيم photoshop در نسخهء 7 و PhotoPaint در نسخهء 11 داراي امكانات برابري باشند، همين به قول نويسنده گمنامي اين نرم‌ا�زار و �راگيرتر بودن Photoshop باعث برتري Photoshop ميشه، يه نگاه به تعداد Plug-inها و Effectهاي ضميمهء Photoshop مثل Kai Power Studio و يا سري جلوه‌هاي Eye Candy بكنيد، Online Toolsهاي PhotoPaint به هيچ وجه قابل رقابت با اين تعداد بالا نيستند! البته از طر�ي هم من �كر نمي‌كنم PhotoPaint اينقدرها هم گمنام باشه، Corel Graphic Suit از قديم يه Package كامل بوده. يه نكتهء ديگه اينه كه Corel هميشه حر�ه‌اي تر �كر كرده، من �كر مي‌كنم Photoshop رقم بالاي �روشش رو بخاطر كاربرد ساده (و نه حر�ه‌اي) براي تازه‌كاران داره، درحالي كه امكانات Corel PhotoPaint �قط در حدّ متوسّط و پيشر�ته مي‌تونه با Photoshop رقابت كنه و ابزارها معمولي و سادهء Adobe بهتر كار مي‌كنن. حالا چرا مثلاً من از PhotoPaint است�اده مي‌كنم و از PhotoShop خوشم نمياد؟ دليل اوّل اينكه رابط كاربر Adobe راحتي لازم براي من رو كه با محصولاتش آشنايي ندارم برآورده نمي‌كنه و دليل دوّم همه اينكه من هرچي كه براي كار لازم داشته باشم PhotoPaint در اختيارم مي‌گذاره و ابزارهاي �وق پيشر�تهء Photoshop براي كارهاي طرّاحي سادهء من كه اكثراً براي Web هستند كابردي نداره. مي‌بينيد اگر يكم User Baseتر به قضيه نگاه كنيم راحتتر تصميم مي‌گيريم. امّا چطوره مسابقه بذاريم ببينيم توي يه موضوع خاص كي‌ مي‌تونه بهترين تصوير رو خلق كنه، زهير معصوميان با Photoshop و يا روح‌الله بلورد با PhotoPaint؟ :)
Publishing is now Disbale not for PRO users! متأسّ�انه باز هم سرويس Blogger دچار مشكل شده، البته �كر كنم همه كاربران رايگانش بدونن كه اينها مشكلات مصلحتي هستند كه شما رو وادار به است�اده از سرويس Blogger PRO كنند. گرچه اين سرويس هم امكانات خوبي داره و هم قيمت پاييني، ولي بدليل اينكه سرويس دهنده قصد مجبور كردن كاربرانش به ارتقاي سرويسها رو داره چندان جالب بنظر نمياد.

بنده و هر وبلاگ نويسي كه قصد ادامه دادن �عّاليتش رو داشته باشه، بايد به �كر سرويس PRO و يا سرويسي باشيم كه خودمون مديريتش كنيم. كار چندان پيچيده‌اي بنظر نمياد ولي كاربرد زيادي خواهد داشت. سايت IranPHP با مديريت آقاي حميد هاشمي گلپايگاني يكي از سايتهاي بسيار خوب هستش كه در بخش انجمن و همينطور Mailing Listها خيلي خوب كار مي‌كنه و همينطور نسبت به سايتهاي مشابه قابليّتها خوبي داره كه اكثراً با �عّاليت خوب مدير سايت شكل گر�ته‌اند. به تازگي Mailing List جديد اين سايت راه ا�تاده كه كاربران رايگان مي‌تونن توش عضو بشن و براي ارسال سؤالات و گر�تن جوابشون از اين ليست است�اده كنند. البته احتمالاً براي كاربران �عّال امتيازاتي هم در نظر گر�ته خواهد شد. ارتباط اين مسئله با مشكل Blogger در اينه كه مدير سايت پيشنهاد كرده به عنوان اوّلين پروژه مشترك يك سرويس دهنده يا به عبارتي Manager وبلاگ با PHP طرّاحي كنيم تا اوّلين نمونه براي كار با وبلاگهاي �ارسي و به زبان PHP با امنيّت و سرعت بالا باشه. خب انتخاب خيلي خوبيه. براي عضويت در Mailing List و همينطور گر�تن اطلاعات بيشتر مي‌تونيد با آدرس owner-list(at)iranphp.net مكاتبه كنيد و همينطور حتماً به انجمن سايت IranPHP هم سر بزنيد.
كتاب جديدي كه در ه�ته گذشته من تبليغش رو روي Flash Magazine ديدم رو معرّ�ي مي‌كنم كه اگر علاقه‌مند هستيد حتماً تهيه‌ش كنيد. البته من اين كتاب رو از دوستانم غرض گر�تم ولي �رصت نشد كه كامل بخونمش پس به Review سايت Flash Magazne دربارش قناعت مي‌كنم كه نوشتهء كاملي هم هست.

حتّي پيش از اينكه Flash به عنوان يك ابزار براي ساختن جلوه‌هاي Interactive در دنيا مشهور بشه JavaScript وجود داشت و طرّاحان بسياري با آن به خلق تصاوير و Objectهاي Interactive مي‌پرداختند. اين ابزار هنوز هم يكي از نيازهاي برنامه‌نويسان وب براي كنترل و Scripting در سمت Client Side است. شما با JavaScript خيلي ساده مي‌تونيد پنجره‌هاي Browserها رو كنترل كنيد و خيلي راحت بخشهاي �رمهاي HTMLتو رو Programmable كنيد. امّا آيا Java Script تنها به همين درد مي‌خوره؟ بياييد حر�ه‌اي تر ببينيم، كتاب Advanced JavaScript: Insights and Innovative Techniques نوشتهء Dan Livingston در بخشهاي متعدّدي كاربردهاي بسيار جديد و پيشر�تهء JavaScript رو براي ما آشنا مي‌كنه. شما در اين كتاب يك راهنماي نوآموزان نخواهيد داشت بلكه براي ورود به تكنولوژيهاي جديد از پيشر�ته‌ترين كاربردهاي يك ابزار قديمي است�اده خواهيد كرد. تكنولوژيهايي مثل DOM و XML و همينطور بخشهاي پيشر�تهء Stylesheetها و Layerها و Cookieها و COmponentihها و همينطور Flash و Action Scripting در 576 ص�حهء اين كتاب بخشهاي مختل�ي را به خود اختصاص داده‌اند كه بسيار م�يد هستند.

اين كتاب پر از مثالها و نمونه‌هاي م�يد است، بيش از 100 برنامهء كامل در اين كتاب وجود دارد كه به خوبي تشريح شده‌اند و خط به خط برنامه‌ها داراي توضيح و دليل هستند. مطالبي از كتاب تنها مخصوص برنامه‌نويسان Java Script هم نيست، روش ارتباط و توليد ActionScriptها يا روشهاي بهينه كردن كدها براي اجراي روي Platformهاي مختل� براي اكثر طرّاحان وب قابل است�اده خواهد بود. اين كتاب رو اگر هم بخوايد از واردكنندگان ايراني بخريد خيلي ارزون براتون درمياد، قيمتش تنها 40 دلاره و اين به خاطر اينه كه CD-ROMي ضميمه كتاب نيست. البته شما مي‌تونيد همه مثالها رو از سايت ناشر كتاب يعني انتشارات Prentice Hall PTR دريا�ت كنيد.

Monday, December 02, 2002

هممون �ارسي نوشتن توي Flash رو بلديم و Moiveهايي مي‌سازيم كه با �ارسي نويسهاي سازگار نوين يا پروين يا مريم از �ونتهاي True Type است�اده مي‌كنند ولي هيچ كدوممون تا حالا ورودي �ارسي در Flash رو نداشتيم. من �كر كردم اين مي‌تونه يه كار تازه باشه، شما هم دلتون مي‌خواد كه كاربراتون بتونن Recordهاي �ارسي رو با رابط Flash شما وارد كنن و نياز به �رمهاي جداگونه نداشته باشند؟ من دارم سعي مي‌كنم كه اين رابط رو بنويسم، كار چندان سختي نيست و با صر� وقت همه مي‌تونيم نتيجه بگيريم. امروز نوشتن سوّمين نمونه رو هم تموم كردم. نمونهء اوّل كه ساده‌ترين نمونه‌ست يه Component هستش كه KeyBoard Layout �ارسي و Unicode رو به Flash اضا�ه مي‌كنه، شما براي است�اه كا�يه اين Component رو بجاي Text Fieldها براي Input است�اده كنيد. اين Component كوچيكيه كه از 800 خط برنامه تشكيل شده. نمونهء دوّم �ارسي نويس سازگار با Unicode هستش كه روي همه OSها كار بايد كار كنه ولي نمي‌كنه!!، اين پروژه‌ش شكست خورد چون نيازي به نوشتن اينهمه برنامه نبود خيلي راحتتر مي‌شد كار كرد. دو نمونهء قبلي همونطور كه مي‌دونيد با Flash Playerهاي موجود تنها قابل است�اده بر روي Windowsهاي XP و 2000 هستش كه زبان �ارسي رو نصب كرده باشند. نسخه آخري كه خودم خيلي بهش علاقه‌مندم نسخهء سازگار با همه Platfomrهاست كه يه پارس نويس داخلي و كامله (البته هنوز كامل نيست ولي ميشه) اين يه Component نيست (�علاً نيست!). اين نمونه از Code Page سازگار مريم است�اده مي‌كنه كه تنها نمونه در بين �ارسي سازهاست كه از كدهاي Unicode در �ونتهاي True Type است�اده كرده. نمونهء كار رو در پايين مي‌بينيد.

روي Box خاكستري رنگ كليد كنيد (حتماً كليك كنيد!) و بدون تغيير دادن زبان با همون كي‌بورد لاتين تايپ كنيد.




�ارسيه نه؟ در Flash و كاملاً Internal بدون وابستگي به هيچ امكاني از طر� OS. اين حاصل 1370 خط برنامه‌ست كه كاملاً با Action Script نوشته شده و تنها 3 كيلوبايته! يعني يه �ارسي نويس 3 كيلوبايتي كه توي هر Pageاي مي‌تونه قرار بگيره. �ردا نسخهء قابل اجرا �ايل SWF كامل رو به همراه سورس FLA و �ايل as. در اختيارتون مي‌گذارم كه باهم اشكالاتش رو بگيريم. در حال حاضر 2 تا باگ وجود داره در تايپ �ارسي. همينطور 2 تا قسمت كه هنوز ننوشتمشون، اوّل نوشتن چپ به راست اعداد و دوّم امكان نوشتن �ارسي. متأسّ�انه �ونتهاي سازگار مريم اشكالات خيلي زيادي دارند، كدها مرتّب نيست، حرو�ي �دا شدند، كد Shift-U0x0070 اصلاً وجود نداره و �ونته تنها حرو� �ارسي رو دارند و حرو� انگليسي ندارند! �ردا در مورد مشكلاتش صحبت مي‌كنيم كه بزرگترين پيدا كردن يه استاندارد خوب براي �ونتهاي �ارسي True Type هستش يا كسي كه داوطلب بشه و اين �ونتها رو با جابجا كردن حرو� استاندارد كنه، كار سختي نيست ولي زمان گيره!
من در يكي دو روز گذشته بجاي وبلاگ نوشتن بيشتر به وبلاگ خوندن پرداختم و تقريباً همه وبلاگهاي كامپيوتري كه مي‌شناختم و لينكشون رو در ص�حه‌هاي مختل� ديدم خوندم و خيلي خلاصه بايد بگم كه جو حاضر بسيار راضي‌كننده‌ست، اين عنوان مقاله آقاي شكر خواه، "وبلاگ بعنوان يك رسانه" دائماً در ذهنم بود. من �كر مي‌كنم اين قابل باور است، صحبت بر سر رسانه‌هاي اطلاع رساني تكنولوژيك در ايران براي همه آشناست، وضعيّت ضعي� نشريّات كامپيوتري و همينطور اخبار IT سيما و چند سايت دست دوّم كامپيوتري كه اخبارشون رو از تلكس و سايتهاي ديگه مي‌گيرند و همه يه نوعي وبلاگ هستند. همه اين رسانه‌ها منبع خبري خودشون رو منابع اخبار اينترنتي قراردادند يا خبرگذاريهايي كه شبكه‌هاي لاتين روي Satellite را تشكيل مي‌دهند، وبلاگها هم از اين دسته‌هستند، چرا به نظر ما وبلاگها مو�ّقترند؟

دليل مو�ّقيّت وبلاگها در درجهء اوّل سرعت بالاي انعكاس مطالب و به عبارتي Update بودن اونهاست. تنها وبلاگهايي مو�ّق خواهند بود كه كاملاً به روز و �عّال باشند، شما در بلاگستان امروز از اين نمونه وبلاگها بسيار خواهيد ديد. اين نقطهء روشنيست كه من قصد اعتماد به اون رو دارم. مجموعهء وبلاگهاي كامپيوتري به عنوان يك رسانهء به روز و �ارسي زبان مو�ّقتر از بسياري نمونه‌هاي ديگر خواهند بود و آينده اونها بسيار روشن به نظر مي‌آيند. شايد وبلاگها به عنوان ذاتي اونها يعني Web Log هم همونقدر م�يد باشند كه امروز وبلاگهاي تخصّصي و تشريحي كه مطالب ت�سيري و گزارشي را در بر مي‌گيرند م�يد هستند، وبلاگهايي كه تنها ص�حاتي پر از لينك هستند و هر روز لينك تازه‌اي به مطلب جديدي را شامل مي‌شوند هم به همون اندازه اهميّت دارند كه نويسنده يا متخصّصي اقدام به ايجاد وبلاگ يا بهتر بگيم بلاگ مي‌كند.

هماهنگي وبلاگها و همينطور محيط و جوّ مناسب براي �عّاليت مانند چيزي كه الآن كمابيش بر قرار است شايد چندان پايدار نباشد، براي هماهنگي وبلاگها، جمع دوستانه و كاملاً علمي چه مي‌توانيم بكنيم. اين عنوان صحبتي بود كه من در دو روز گذشته با جناب آقاي اروج‌زاده سردبير مجلّه دنياي كامپيوتر و ارتباطات انجام دادم، گرچه اين پيشنهاد از طر� ايشون بوده ولي من بسيار ازش استقبال مي‌كنم. درست كردن يك همايش، يا گروهي هماهنگ كه بتونن براي ارتباط با هم از يك مركز است�اده كنند براي وبلاگهاي كامپيوتري نعمت بزرگيست، جمع كردن وبلاگ نويسان �عّال، تشكيل انجمن يا هر �عّاليت مشتركي در ارتباط اين دوستان بر روي وبلاگهاي شخصي آنها صورت مي‌گيرد بازده بسيار بالاتري خواهد داشت. �رض كنيد براي پوشش خبري جديدترين كن�رانس مرتبط با موضوع روز وبلاگهايي با هماهنگي با هم مي‌تونن خيلي بهتر از يك نشريه كه ماهانه منتشر خواهد شد يا مترجم مطلب يك سايت خبري، اطلاعات به روز و خبرهاي كامل توليد كنند. پروژه‌هاي آموزشي و توليدي مشترك از ديگر مزاياييست كه من به آنها علاقه‌مند هستم. من موا�قم با اينكه CCW امكانات و موقع�ت مناسب براي ايجاد چنين پايگاهي را خواهد داشت [شما چي؟]
شما تا حالا با شيء Cookie در Flash كار كرديد؟ من كه تا ديروز نمي‌شناختمش. 2 تا method بصورت setCookie و getCookie هم مي‌شناسم كه روش است�اده‌شون ساده‌ست، بايد توجّه كنيد كه Flash اين اطلاعات رو بصورت XML ذخيره مي‌كنه و شما هم بايد از سيستم Tag Base براي Stringهايي كه به Cookie مي‌�رستيد است�اده كنيد. اطلاعات اين Cookieها بر خلا� Cookieهاي Browser شما در شاخهء سيستم‌عامل و مرورگرتون ذخيره‌نمي‌شوند بلكه در شاخهء مخصوص Flash Player و در Folderي به نام MMFData ذخيره خواهند شد. من �كر مي‌كنم نياز به Syntax كاملتري هست.
خب بالاخره سايت IranSWF با ظاهر و سرويس كاملتري شروع به كار كرد. ظاهر تازه بي اشكال نيست ولي بسيار قابل قبولتر از نمونهء قبليه. من كماكان �كر مي‌كنم انجام دادن چنين كاري نياز به تيم و نيروهاي زيادي داره، سايتهايي مثل iranJavaScript يا iranPHP يا iranASP به نظر من سايتهاي خوش‌شانسي بودند كه تونستند تا اين حدّ كاربر رو به خودشون اختصاص بدن. من اميدوارم سايت iranSWF نيروها و تيم �عّال خودش رو براي دوران شروع به كار بسيج كنه تا مطالب سايت رو تأمين كنند و بازهم اميدوارم كه اين سايت هم به خوش‌شانسي نمونه‌هاي ديگه باشه تا به مو�ّقيّت نسبي دست پيدا كنه.

بنظر من بخش تالار همايش يا همون Forum خودمون در اين سايت كه در حال حاضر تنها بخش قابل است�اده هستش در آينده هم �عّالترين بخش خواهد بود پس بهتره �عّاليت متصدّيان سايت روي امكانات اين قسمت متمركز بشه، من خودم هم به اسم ClashMX روي اين بخش �عّاليت خواهم كرد. عناوين �علي نوشته‌ها مناسبه اگر اون قسمت preload در Flash حذ� بشه و بخشهاي اسرار Flash و تازه‌هاي Flash در هم ادغام بشن و قسمتهاي �ارسي نويسي در Flash و موزيك و صوت در Flash هم يه �كري به حالشون بشه كه يا در يك Category ديگه باشن يا اصلاً نباشن. من خيلي علاقه‌مندم كه اتاقهايي با عنوانهاي Mobile Flash يا Flash for Devices و يا اتاقهايي درباره Flash Remoting يا Flash Communication Server MX هم داشتيم، ولي پيشنهاد نمي‌كنم چون بعيد مي‌دونم استقبالي بشه ازشون. در حال حاضر بنظرم اتاقهاي كمتر با نوشته‌هاي بيشتر در هر اتاق بازده بهتري از اتاقهاي زياد و نوشته‌هاي كمتر در هر اتاق خواهد داشت. Scroll Barه محترم هم اي‌كاش سمت راست بود.

امّا بخش جالب ماجرا يه مسابقه هستش كه به مناسبت شروع �عّاليت سايت اجرا شده. در بخش كليپهاي برگزيده اينطور كه مشخّصه هر ماه يه مسابقهء كوچيك برگزار خواهد شد كه به بهترين Clip ارائه شده جايزه‌اي هم اختصاص خواهد يا�ت. براي آذرماه شما اين شانس رو داريد كه CDه نرم‌ا�زار Discreet Plasma 1.0 رو در صورتيكه كه بهترين نمونهء Clip رو ارائه كنيد برنده بشيد. هيچ شرايطي وجود نداره، و هيچ توضيحي و هيچ �رمي براي ثبت نام، تنها از شما خواسته شده كه يك كليپ طرّاحي كنيد يا يكي از شاهكارهاي قبليتون رو ب�رستيد، خب �كر مي‌كنم نياز به نوآوري زيادي داشته باشيم، نه؟