Posts Tagged ‘javascript’
اندازهگیری زمان اجرای توابع جاوا اسکریپت
مرداد ۲۳م, ۱۳۸۸
بعضی اوقات پیش اومده که ما یک تابع یا کلا” انجام یک کاری توسط جاوا اسکریپت رو به چندین حالت مختلف برنامه نویسی میتونیم بنویسیم یا انجام بدیم. برای سایت های کوچک و سایتی که استفاده خیلی کمی از جاوا اسکریپت استفاده میکنند شاید مورد مهمی به نظر نیاید اما برای سایت های وب ۲ و سایت هایی که استفادی زیادی از تکنولوژی های جدید جاوا اسکریپت مثل آژاکس (Ajax) میکنند در نظر گرفتن زمان اجرا میتواند عامل بسیار مهمی باشد. البته باید در نظر داشت که کاربران امروزه از تب ها برای استفاده از سایت های مختلف اسفاده میکنند نه از پنجره های متعدد. و این عامل را حتما” باید در نظر داشت که وقتی شما موتور یک مرورگر را مثلا” برای اجرای جاوا اسکریپت در اختیار میگیرید، مسلما” برای تب های دیگر درصد کمتری اختصاص می یابد. بنابراین درصورتی که سایت شما کدهای سنگینی داشته باشد، علاوه بر سایت شما، باعث کند شدن مرورگر هم شده و کاربر را بشدت ناراضی میکند.
و این ها دلایلی است که باعث میشود که زمان اجرای توابع جاوا اسکریپت برای ما اهمیت پیدا کند.
در فایرباگ (Firebug) در قسمت Console تبی با نام Profile وجود دارد که این کار را انجام میدهد! برای مثال شما تابعی نوشتهاید و میخواهید زمان اجرای آن را اندازه گیری کنید. برای این کار کافیست ابتدا یک بار دکمه Profile را بزنید و سپس آن تابع را اجرا کنید. حال دوباره دکمه Profile را بزنید تا زمان اجرای آن را با تمام جزئیات ببینید.
اگر قصد دارید چندین تابع را با هم مقایسه کنید، تمام توابع را بعد از زدن دکمه Profile اجرا کنید و اگر میخواهید کل اسکریپت(script) های سایت را بررسی کنید، بعد از زدن دکمه Profile صفحه را رفرش کنید و دوباره Profile را بزنید.
برای مثال به عکس زیر توجه کنید.

من برای یک درخواست Ajax و اجرای یک تابع بعد از آن، کدی نوشتم (البته با استفاده از کتابخانه jQuery) و آنرا اجرا کردم که نتیجه آنرا میبینید.
توابعی که نام آنها بصورت (?)() است، توابع داخلی هستند که نام خاصی ندارند. برای مثال:
(function(){
// Do something;
})();
ستون Calls تعداد دفعات اجرای هرکدام از توابع در مدت زمانی است که شما Profile را نگه میدارید. برای مثال تابع success یکبار اجرا شده است.
ستون Percentage درصد زمان سپری شده نسبت به کل توابع مورد بررسی قرار گرفته برای این تابع را نمایش میدهد.
ستون Own Time مدت زمان اختصاصی هر تابع را نمایش میدهد. این زمان شامل مدت زمان سپری شده برای توابعی که از داخل این تابع فراخوانی شده اند، نمی باشد.
ستون Time زمان کل هر تابع، با در نظر گرفتن تمام توابع فراخوانی شده از داخل آن میباشد.
ستون های Avg,Minو Max هم بترتیب میانگین، حداقل و حداکثر زمانها را برای هر تابع نمایش می دهد.
در نهایت هم File، لینکی به آدرس فایلی که این تابع در آن قرار دارد برای دسترسی سریع تر برقرار کرده است.
Tags: firebug, javascript, run time, جاوا اسکریپت, فایرباگ
Posted in Mozilla FireFox, javascript, مرتبط با وب 2 | Comments (۳)
GWT (Google Web Toolkit)
اردیبهشت ۴م, ۱۳۸۸
برگرفته از knol.google.com
چکیده فارسی
ماموریت GWT بهبود ریشه ای کیفیت appهای تحت وب, با قادر ساختن توسعه گرها به استفاده از ابزارهای فعلی جاوا در تولید appهای Ajax با کیفیت بالا برای تمام مرورگرهای مدرن است.GWT گام بزرگی جهت کم کردن فاصله appهای وب با appهای ویندوز است. GWT انتخاب مناسبی برای تولید Enterprise application ی تحت اینترانت و اینترنت است.
کلمات کلیدی GWT – Google Web Toolkit – Ajax Java Framework – Google Ajax Compiler
متن کامل
مقدمه
از اوایل سال ۲۰۰۵, که Ajax توسط یک معمار اطلاعات معرفی شد تا بحال تکنولوژی ها و ابزارهای زیادی مبتنی بر آن ارائه شده است و جالب است که پس از گذشت ۲۰سال, برنامه نویس های Ajax با مشکلاتی دست و پنجه نرم می کنند که برنامه نویسهای آن زمان در برنامه های TSR تحت DOS با آن روبرو بودند. البته خیلی از این مشکلات توسط framework ها مختلفی که برای Ajax ارائه شده است , برطرف شده است. مثلا در ATLAS که مایکروسافت ارئه کرده است, برنامه نویسی Ajax بسیار ساده شده است ولی جالب است که خود مایکروسافت تمایل زیادی به استفاده از آن ندارد! مایکروسافت در واقع به همان اندازه که کار را ساده کرده است, از کیفیت و کارایی آن نیز کاسته است به نحوی که برنامه نویسها در حین کار با Atlas بزودی متوجه می شوند که اساسا خیلی از کارها را با Atlas نمی توانند انجام بدهند و در مواردی که انجام می شود سرعت و قابلیت اطمینان آن رضایتبخش نیست. از بین تمام پیاده سازیهایی که از Ajax شده شاید بتوان Gmail و Google Map را جز بهترین به حساب آورد, به نحوی که شرکت های معظمی مانند یاهو و مایکروسافت هنوز نتوانسته اند محصولات قابل رقابتی با آنها ارائه کنند.
در اقدامی غیر منتظره در ماه می ۲۰۰۶, گوگل اقدام به ارائه frameworkی برای تولید appهای Ajax, مبتنی بر تجربه موفق gamil و google map نمود.همان گونه که از گوگل انتظار می رود, GWT کاری بزرگ , باکیفیت و سرشار از ایده های نو است, که انتظار می رود تحول بزرگی را در تولید نرم افزار ایجاد کند و در بسیاری از موارد, انتخاب بهتری از appهای معمولی ویندوز(rich client) و یا وب باشد.
GWT
Google web toolkit یک framework سورس باز جاوا است که به شما امکان می دهد که از تکنولوژهایی که تولید appهای Ajax را دشوار و مستعد باگ می کنند, رهایی یابید. با GWT می توانید appهای java را با ابزارهای دلخواه java توسعه و دیباگ کنید. زمانی که کار شما آماده ارائه به تولید شد, کامپایلر GWT آن را به javascript و html ی که با انواع مرورگرها سازگاری دارد, ترجمه می کند.
تفاوت GWT با frameworkهای دیگر این است که شما کد سمت مرورگر را بجای javascript با java می نویسید. و این به این معنی است که شما از منابع و ابزارهای بسیار زیادی که هم اکنون در java موجود است, در طرف مرورگر(client side) استفاده کنید. همچنین شما می توانید از مزایای OOP مانند encapsulation و ارث بری در طرف مرور گر بهره مند شوید و همچنین می توانید کد طرف مرورگر را به صورت واقعی دیباگ کنید. هسته GWT یک کامپایلر java به javascript است که کد جاوا اسکریپت سازگار با مرورگرهای Internet Explorer, Firefox, Mozilla, Safari و Opera را تولید می کند. به همراه GWT یک کتابخانه از کنترلهای متدوال مانند منو, پنل, کلید, درخت و …. عرضه شده است.
ساختار GWT
GWT ابزارهای جامعی را درخور چالشهایی که برای تولید rich internet application وجود دارد, گرد هم آورده است.
Java to js compiler
در طرف مرورگر کدهای جاوا را به جاوا اسکریپت تبدیل می کند.
JSNI
کار فراخوانی مستقیم کد جاوا اسکریپت از جاوا را انجام می دهد.
JRE Emulation
یک زیر مجموعه از Java runtime library که برای برنامه نویسی سمت Client استفاده می شود.
Widgets and Panels
مجموعه ای از کنترلها که در GWT برای ساختن UI از آن استفاده می شود.
I18N
چند تکنیک برای بین المللی کردن app و تنظمیات مرتبط با آن ارائه می کند.
RPC
پیاده سازی گوگل از remote procedure call برای ارتباط برقرار کردن کدهای client با کدهای سمت سرور.
XML Parser
با توجه با اهمیت و گسترش روز افزون XML, GWT کلاسهایی را برای کار با آن فراهم آورده است.
Managing the browser history
یکی از اشکالات موجهی که به rich internet application ها گرفته می شود این است که آنها کلید برگشت مرورگر(back button) را نقض می کنند. این از آنجا ناشی می شود که وقتی شما با جاوااسکریپت محتوای صفحه را به صورت داینامیک عوض می کنید, کاربر انتظار دارد که با زدن کلید برگشت به حالت قبل بازگردد, ولی این اتفاق می افتد چونکه مرورگر متوجه تغییرات داینامیک شما نمی شود. GWT این مشکل را برطرف نموده است.
JUnit Integration
همیشه نوشتن کدهایی برای تست برنامه به صورت اتوماتیک, تکنیک خوبی محسوب می شود. در حال حاضر frameworkهای متعددی سالهاست که این پروسه را ساده تر کرده اند, JUnit یکی از بهترین آنها برای توسعه گرهای جاوا است. GWT بجای نوشتن این framework از ابتدا, از JUint پشتیبانی می کند.
مزایا
زمان توسعه
GWT با فراهم آوردن امکان استفاده از جاوا در سمت کلاینت و سرور, امکان دیباگ واقعی هر دو طرف, استفاده از OOP در سمت UI , بعهده گرفته سازگار بودن کد تولید شده با انواع مرورگرها, فراهم آوردن امکان استفاده از ابزارها و frameworkهای موجود جاوا, صرفه جویی بسیار زیادی را در زمان توسعه و پشتیبانی appهای Ajax به همراه دارد.
سرعت و کیفیت اجرا
appهای GWT همیشه به اندازه appهایی javascript که با دست نوشته می شوند, سریع اجرا می شوند. تیم GWT وسواس بسیار زیادی در این زمینه به خرج داده است مثلا تمام تصاویر صفحه را در سمت سرور به یک تصویر تبدیل می کند و در سمت کلاینت فقط بایک request آن را دریافت, و به تصاویر اصلی می شکند.GWT همچنین در انتخاب اسم متغیرها و حتی فضای خالی بین کدها بهینه عمل کرده است. در نسخه اخیر GWT(1.4), برای دریافت جاوا اسکریپت و CSS ها از طرف از سرور, از متد PKZip استفاده شده است.
اندازه جاوا اسکریپت تولید شده
اندازه جاوااسکریپت تولید شده برای یک برنامه کاربردی معمولیGWT با تمام امکانات حدود ۱۰۰ کیلوبایت خواهد بود, که قابل cache شدن بوسیله مرورگر نیز می باشد, بعد از آن فقط تکه های کوچک اطلاعات هستند که رد و بدل می شوند.
پهنای باند مورد استفاده
GWT مانند appهای معمولی وب postback ندارد و فقط اطلاعات مورد نیاز هستند که رد و بدل می شوند, در مقایسه با appهای معمولی وب که حتی با تیک زدن یک checkbox کل صفحه postback می شود و دوباره load می گردد, پهنای باند و ترافیک شبکه به طور قابل توجه ای صرفه جویی می شود.
امنیت
GWT اطلاعات کمتری را در سمت کلاینت باقی می گذارد که به صورت javascript فشرده شده است و قابلیت خوانایی ندارد, در نتیجه امنیت بهتری حاصل می شود
حل مشکلات پرداخت online
GWT برای مشکلاتی که به هنگام پرداخت آنلاین پیش می آید, راه حلهای قطعی ارائه می دهد(حداقل در تئوری).
عدم وابستگی به platform
GWT مبتنی بر جاوا است و کد تولید شده توسط آن جاوااسکریپت و HTML معمولی است که باعث می شود به plateform وابسته نباشد.
سورس باز
GWT سورس باز(Open source) است که کمک زیادی به توسعه اجزاء و درک مکانیزمهای آن می کند. همچنین تجربه نشان داده است که پروژهای سورس باز به دلیل داشتن توسعه گرها یی که در تمام جهان پراکنده هستند, بهتر پیشرفت می کنند و پشتیبانی بهتری دارند.
معایب
SEO
شرکتهایی که از GWT برای پیاده سازی وب سایت ها استفاده می کنند ممکن است با این مشکل روبرو شوند که موتورهای جستجو محتوای صفحات آنها را اندیکس نمی کند. این مشکل در واقع مربوط به تمام وب سایتهای داینامیک می گردد و از آنجا ناشی می شود که وقتی محتوای صفحات بوسیله javascript تغییر می کند, آدرس آن ثابت می ماند بنابراین موتورهای جستجو شاخصی برای دسترسی به صفحه جدید را ندارند.برای این مشکل راه حل های متعددی ارائه شده است مثلا یک وب سایت موازی استاتیک با وب سایت داینامیک وجود داشته باشد, که تاحدی مشکل را برطرف نموده اند.
نتیجه گیری
GWT قدرت appهای ویندوز را به appهای وب می دهد و به شما امکان می دهد که نرم افزارهای تحت اینترانت و اینترنت غنی تر را در زمان کمتری تولید کنید. هزینه نگهداری آنها نبز به مراتب پایین تر خواهد بود. GWT نیز مانند جاوا دارای منابع فراوان به صورت وب سایت, کتاب, مقاله, ویدئو, کد آماده و ابزارهای ۳rd party مانند GWT Designer است. GWT محصول زیربنایی شرکت گوگل است در مدت کوتاهی که عرضه شده رشد قابل توجهی داشته است و انتظار می رود که platform عمده برای تولید appهای داینامیک باشد.(برای مشاهده آهنگ رشد GWT و همچنین مقایسه بین فراگیر بودن java نسبت به c#, به www.google.com/trends مراجعه کنید و عبارت gwt یا java,c# را تایپ کنید)
Tags: ajax, googlw web toolkit, gwt, javascript
Posted in Java, gwt, javascript | Comments (۰)
حذف کامنت ها
فروردین ۱۲م, ۱۳۸۸
برای حذف کامنت های جاوا اسکریپ این رو استفاده کردم. اگه میخواین بدونین واسه چی، واسه کم شدن حجم فایلjs
درواقع این رو در بخش Regular Expression در قسمت Replace برنامه Notepad++ استفاده کردم
دقت داشته باشین که g در آخر پارامتر اول تمام اتفاقات از این regExp رو برمیگردونه.
اگه نباشه فقط اولین عبارتی که پیدا میشه با پارامتر دوم replace شده و تموم!
str.replace(/(<!--(.*)-->)|(\/\*(.*)\*\/)|(\/\/(.*))/g,'');
Tags: javascript, regular expression, remove comments, جاوا اسکریپ, حذف کامنت ها
Posted in javascript | Comments (۲)
Operation Aborted
اسفند ۲م, ۱۳۸۷
درحال نوشتن یک کد برای یک سایت بودم که یکهو دیگه توی ie بالا نیومد! و خطای:
Interne Explorer can not open the Internet site http://sitename.com.
Operation aborted!
و بعد هم خطای The page cannot be displayed روی صفحه اومد!
اگر میخواهید که این خطا رو ببینید همین چند خط کد ساده رو در ie اجرا کنید.
<table border="0">
<tbody>
<tr>
<td><script type="text/javascript"><!--
var oDiv = document.createElement("DIV");
document.body.appendChild(oDiv);
// --></script></td>
</tr>
</tbody></table>
راه حل این مشکل اینه که تگ اسکریپت (script) و محتویات آن را بعد از بسته شدن تگ جدول (table) بگذارید.
واقعا” مسخره ست! نه؟
اگه درحال کار با اینترنت اکسپلورر هستید باید در مرورگر خود تجدید نظر کنید!
Tags: appendChild, javascript, Operation Aborted
Posted in Damn ie, Mozilla FireFox, javascript | Comments (۱)
getElementsByClassName
بهمن ۲۷م, ۱۳۸۷
تاحالا شده بخواهید یکی از elementهای DOM رو از طریق نام کلاس آن انتخاب کنید؟! البته این کار درصورتی که از یکی از کتابخانه های جاوا اسکریپت مثل jQuery استفاده میکنید خیلی راحت خواهد بود.
اما باید بدونید که در فایرفاکس هم ( که من پیشنهادش میکنم! ) یک تابعی تعریف شده که عینا” همین کار رو انجام میده.
( document.getElementsByClassName(”targetClass”) ) و بعد از فراخوانی آرایه ای از element هایی رو که دارای کلاس targetClass برمیگردونه!
اما طبق معمول برای ie و همچنین opera هنوز این تابع وچود ندارد که در زیر آنرا بطور دستی اضافه میکنیم:
document.getElementsByClassName = function(class_name) {
var docList = this.all || this.getElementsByTagName('*');
var matchArray = new Array();
var re = new RegExp("(?:^|\\s)"+class_name+"(?:\\s|$)");
for (var i=0, n=docList.length; i<n; i++) {
if (re.test(docList[i].className) ) {
matchArray.push(docList[i]);
}
}
return matchArray;
}
متغیر doList شامل تمام elementهای داخل DOM هست. درصورتی که all برای Document تعریف شده باشد (در فایرفاکس تعریف نشده است) all و در غیر اینصورت توسط تابع getElementsByTagName انتخاب شده و در docList قرار میگیرد.
حالا یک سوال پیش میاد و اون اینکه چرا all اول نوشته شده با اینکه تابع getElementsByTagName در هر سه مرورگر شناخته شده است؟! جواب اینه که در موارد خاصی تعداد element های select شده در این دو مورد فرق داره و البته که all کامل تره.(در Opera)
درباره عبارت منظم استفاده شده هم این رو بگم که قسمت اول یعنی (?:^|\\s)
از اول رشته ی نام کلاس یا از اولین کلمه بعد از فاصله رو تست میکنه و قسمت دوم هم تا فاصله یا تا آخر رشته رو تست میکنه.
در ضمن استفاده از ?: در این عبارت ها هم ضرورتی نداره اما باعث میشه که سرعت تست کردن این عبارات بالا بره (به عبارات منظمی که شامل “?:” باشه “Non-capturing groups” گفته میشه چون وقت صرف ساختن backreferenceها نمیشه)
فکر نکنم نکته خاص دیگه ای داشته باشه!
فعلا”
Tags: Damn ie, ff, firefox, getElementsByClassName, internet explorer, javascript, js, opera, regular expression, اینترنت اکسپلورر, جاوا اسکریپت, عبارات منظم, فایرفاکس
Posted in Damn ie, Mozilla FireFox, javascript | Comments (۰)
تگهای script اضافی!
دی ۹م, ۱۳۸۷
چندوقت پیش John Resig نویسنده jQuery توی وبلاگش چیز جالبی نوشته بود که منم خودم به این مورد برخورده بودم. برای همین خیلی برام جالب و مفید بود. متن زیر خلاصه ای نوشته های John و کامنت های وبلاگش هست:
اگه دقت کرده باشین هنگامی که ما با استفاده از صفت منبع (source attribute) یک کد جاوا اسکریپت (javascript) رو به صفحه خودمون اضافه میکنیم، قادر نیستیم که کدهای دیگه ای رو در بدنه تگ بنویسیم. منظورم اینه:
<script src="some-lib.js"></script> <script> var foo = use_some_lib(); foo.do.stuff(); </script>
یعنی واقعا” چرا برای نوشتن ادامه کدها مجبوریم یک تگ دیگه باز کنیم وقتی کد زیر خیلی جذاب تر و تر و تمیز تره؟!
<script src="some-lib.js"> var foo = use_some_lib(); foo.do.stuff(); </script>
خب برای اینکه بتونیم این کار رو انجام بدیم، John دست به کار شده و دو خط کد نوشته!
اول اینکه تگ script مربوطه رو انتخاب میکنیم بعد هم محتویات آنها را با استفاده از دستور eval اجرا میکنیم! بهمین سادگی!
var scripts = document.getElementsByTagName("script");
eval( scripts[ scripts.length - 1 ].innerHTML );
خب کافیه که این کد رو به فایل منبع (src) اضافه کنید و حالشو ببرید.
اما خب شاید همین دو خط کافی نباشه. چرا؟ خب فرض کنید مثلا” شما چندتا فایل اسکریپت توی صفحه دارین که حالا یا بطور عادی نوشته شدن یا قراره بارگذاری (load) بشن.
حالا اگه کد شما وابسته به اونها باشه چی؟ بهرحال john پیشنهادهایی داده و کد خودش رو کامل کرده که من تکه کد نهایی رو توضیح میدم.
(function(){
var scripts = document.getElementsByTagName("script");
var curScript = scripts[ scripts.length - 1 ];
if ( curScript.executed )
return;
// ... jQuery ...
curScript.executed = true;
var script = curScript.innerHTML;
if ( script ) {
jQuery(document).ready(function(){
jQuery.globalEval( script );
});
}
})();
// if you don't use jQuery :
// if ( script )
// eval ( script );
اولین چیزی که توی این کد به چشم میخوره اینکه که ما چک میکنیم که کد قبلا” اجرا شده یا نه و دومین هم طبق چیزی که گفتم کد رو بعد از اینکه DOM آماده شد کد اجرا میکنیم.
حالا جذابیت نوشته های John یک طرف، کامنت هایی هم که گذاشته میشه حاوی نکات خیلی جالبیه!
مثلا یکی نوشته که چطوره اصلا” همه تک های script رو خلاصه کنیم و منابع اونهارو بصورت آرایه ای مثل مثال زیر بنویسیم !؟
<script src="myScript.js,myNextScript.js,myFinalScript.js"> var hello = "world"; </script>
یا حتی یکی کد زیر رو نوشته و کد خودش رو احمقانه خونده! درصورتی که من فکر نمی کنم نتیجه متفاوتی داشته باشه و احمقانه هم نیست! بالاخره برای خودش یک راهکاره!
<script src="..." onload="eval(innerHTML)"> //code <script>
Tags: html, javascript, jQuery, جاوا اسکریپت
Posted in jQuery, javascript | Comments (۱)
Firebug
دی ۶م, ۱۳۸۷
بعید میدونم که شما طراح و برنامه نویس وب باشین اما با Firebug آشنا نباشید. در واقع FireBug علاوه بر مزیت هایی که در کار با کدهای HTML و CSS داره دارای خط فرمان جاوا اسکریپت نیز هست. وجود خط فرمان javascript در firebug به شما این امکان رو میده که کدهای خودتون رو به صفحه جاری الصاق کنید. انگار که اونها از اول توی صفحه جاری نوشته شده بودند!!
شاید در نگاه اول این چیز خیلی جالبی نباشه اما وقتی یکم دقیق بشین متوجه میشین که چی میگم. بذارین یک مثال بزنم. اگه شما Ajax کار کرده باشید باید بدونید که آژاکس Cross-Domain نیست. یعنی اینکه شما نمیتونید درخواست (request) هایی رو از دامین های دیگه داشته باشین. (البته حالت های خاصی داره ازجمله JSON و CSSHTTPREQUEST) اما مهم اینه که در حالت معمولی چنین امکانی وجود ندارد. خب حالا به شما از طریق FireBug این امکان داده شده که وارد یک سایت بشید و کدهای جاوا اسکریپت خودتون و خصوصا” آژاکستون رو اجرا کنید. شاید بهتر باشه یک مثال بزنم. چند وقت پیش یکی از دوستام یک آدرسی به من داد که اجازه میداد sms رایگان بفرستین. بدون هیچ محدودیتی. البته من نیدونم اون صفحه شخصی بود یا هرچیز دیگه ای! مهم فارسی بودنش بود که خیلی تعجب برانگیزناک آلود بود!
خب بر طبق طبع من چندتا اس ام اس تست ارسال کردم و بعد از ایکه صحتش برام معلوم شد، جرقه ای در سرم زده شد! اومدم کد ساده ای مثل زیر نوشتم :
var xmlhttp= new XMLHttpRequest();
var msg = 'My message will be here!';
var sms = function(){
xmlhttp.open("POST", 'send.php');
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
sms();
}
};
i = Math.round( Math.random()*10000 );
xmlhttp.send('phone=98913333'+i+'&message='+escape(msg));
}
و این کد رو اجرا توی فایرباگ مرورگرم اجرا کردم!! جالبه بدونین که تقریبا” ثانیه ای ۲تا sms ارسال میشد و این بود که من در هزینه تبلیغاتم کمی صرفهجویی کردم! بگذریم که این فقط یک روز جواب داد و اون سایت چندروزی میشه که از کار افتاده!!!
مثال دیگه این هم بزنم اینکه یک دایرکتوری بود که من یکی از سایت هام رو بهش اضافه کرده بودم. این دایرکتوری یک rank فرضی بر اساس ورودی هایی که از سایت من به اون دایرکتوری باضافه خروجی های اون دایرکتوری به سایت من ایجاد میکرد و جلو اسم هر سایت نمایش میداد. خب سایت من rank بالایی نداشت. تقریبا” جز ۴۰-۵۰ تا سایت اولش بود که خوب با اجرای کدی شبیه کد بالا هم به سایت خودم ورودی دادم هم خروجی!! و این بود که سایتم از حدود ۵۰ام در یک روز به ۳ام ارتقاء یافت!!!
در واقع از سایت هایی که باگ دارند میتونین به خوبی استفاده کنید. فقط باید یکم حواستون جمع باشه!!! :D
راستی اگر نمیدونید که Firebug چیه، فقط این رو بگم که میتونید با استفاده از گزینه Add-ons در منوی Tools در مرورگر فایرفاکس (Firefox) آنرا به مرورگر خود اضافه کنید.
موفق تر باشید.
Tags: ajax, firebug, firefox, javascript, آژاکس, جاوا اسکریپت, فایرباگ, فایرفاکس
Posted in Mozilla FireFox, javascript | Comments (۰)

