Archive for 2009/01

SyntaxHighlighter با طعم JQuery

۱۳۸۷/۱۱/۱۱ ۰:۱۸ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۷/۱۱/۱۱ دسته بندی : ، ، ، ، 2

SyntaxHighlighter JQuery
اگه تا حالا از اسکریپت SyntaxHighlighter استفاده کرده باشین میدونین که با استفاده از این اسکریپت می شه کدها یا همون Code Snipped ها را رنگی و فرمت کرد.
برای استفاده از این اسکریپت در حالت عادی لازم است که علاوه بر موتور اصلی این اسکریپت (shCore.js) اسکرپیت مخصوص زبان استفاده شده در کدتون رو هم اضافه کنید. برای مثال برای سی شارپ shBrushCSharp.js

مشکلی که با این روش وجود داره اینه که ممکنه که نتونید این کار رو با هر پست در وبلاگ و یا هر صفحه در سایتتون انجام بدین، چون ممکنه که چندین زبان در صفحات مختلف استفاده شده باشه و تشخیص زبان و افزودن اسکریپت مخصوص آن به راحتی ممکن نباشه.
در این حالت اکثر سایتها تمامی زبانهایی رو که احتمال می دن در سایت یا وبلاگ استفاده شده باشه رو اضافه می کنند.
این کار علاوه بر اینکه حجم و زمان بالا اومدن رو افزایش میده باعث افزایش تعداد درخواست های غیر ضروری به سرور شده و آن را بی جهت مشغول می کنه.

در زیر اسکریپتی رو که با استفاده از JQuery نوشته ام اگر در صفحه خود استفاده کنید علاوه بر کاهش تعداد درخواست ها به سرور و کاهش حجم دریافتی، اعمال SyntaxHighlighter به صورت خودکار خواهد بود و نیازی به درج هیچ کد اضافه ای نخواهید داشت. این امکان هم هست که اگر در صفحه هیچ کدی(منظور code snipped) وجود نداشته باشد هیچ کدام از اسکریپتهای SyntaxHighlighter استفاده نشود.
پس برای استفاده، به جای لینک مستقیم به SyntaxHighlighter باید از اسکریپت زیر استفاده کنید:
// Coded by Salar Khalilzadeh 2009-01-29
// http://salarblog.wordpress.com/

if($){
// SyntaxHighlighter scripts path
var BrushBasePath='http://www.YourSite.com/SyntaxHighlighter/scripts/';

// SyntaxHighlighter style sheet
var StyleFilePath='http://www.YourSite.com/SyntaxHighlighter/styles/SyntaxHighlighter.css';
var BrushFileName='shBrushXXX.js';
var BrushCoreFile='shCore.js';
var BrushAliases=[
 ['xml','xml'], ['xhtml','xml'], ['xslt','xml'], ['html','xml'] , ['xhtml','xml'],
 ['vb','vb'], ['vb.net','vb'],
 ['sql','sql'],
 //['asm','asm'], uncomment if you have assmbly brush
 ['ruby','ruby'], ['rails','ruby'], ['ror','ruby'],
 ['py','python'], ['python','python'],
 ['php','php'],
 ['js','jscript'], ['jscript','jscript'], ['javascript','jscript'],
 ['java','java'],
 ['delphi','delphi'], ['pascal','delphi']
];

var codeTags=$('pre,code');
var matchedElements=[];
codeTags.each(function(){
 var $item = $(this);
 var href = $item.attr("href");
 var i;
 for(i=0;i<BrushAliases.length;i++){
  var attr=$item.attr("class");
  if(attr.indexOf(BrushAliases[i][0])!=-1 && matchedElements[BrushAliases[i][1]]==null){
   matchedElements.push(BrushAliases[i][1]);
  }
 }
})

// Highlighter core, if there is any language
if(matchedElements.length>0){
 document.write("<link rel='stylesheet' type='text/css' href='"+StyleFilePath+"' />");
 var jsCore=BrushBasePath+BrushCoreFile;
 document.write(unescape("%3Cscript%20type%3D%27text/javascript%27%20src%3D%27")+ jsCore + unescape("%27%3E%3C/script%3E"));
}

// Brushes
for(i=0;i<matchedElements.length;i++){
 var jsSrc=BrushFileName.replace('XXX',matchedElements[i]);
 jsSrc=BrushBasePath+jsSrc;
 document.write(unescape("%3Cscript%20type%3D%27text/javascript%27%20src%3D%27")+ jsSrc + unescape("%27%3E%3C/script%3E"));
}}

نحوه استفاده: این کد رو در حتما در آخر صفحه درج کنید. علت این کار رو در ادامه توضیح می دم.
در این کد در مقدار BrushBasePath آدرس محل brush های SyntaxHighlighter خواهد بود که با توجه به اینکه آن ها را در کجای وبسایت خود قرار داده اید باید آن را مسیر دهی کنید.
StyleFilePath آدرس فایل CSS مورد استفاده SyntaxHighlighter است.

شیوه کار این کد به این صورت هست که با استفاده از لیست زبانهای قابل استفاده، در تگ های pre به جستجو می پردازد و در صورت یافتن، اسکریپت مربوط به آن زبان را به صفحه اضافه می کند.
تنها نکته مهمی که وجود داره عدم استفاده از $(document).ready() مربوط به JQuery هست. به این علت که این تکه کد مقداری اسکریپت در صفحه درج می کند و زمان وقوع رویداد ready کد html کامل دریافت شده است و درج مجدد یک اسکریپت جدید باعث refresh شده صفحه و از دست رفتن ظاهر اون میشه.

موفق باشید


 

تنظیم Http Proxy در CVS

۱۳۸۷/۱۱/۰۷ ۱:۰۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۷/۱۱/۰۷ دسته بندی : ، ، 0

برای دریافت تعدادی کد نیاز داشتم تا از سرویس CVS (مخفف Concurrent Versions System) استفاده کنم و کدها رو که هاست شده بود دریافت کنم.

مشکل زمانی پیش اومد که ساختار اینترنت شرکت ما از یه Http Proxy برای دسترسی کاربران استفاده می کنه و تنظیم خاصی برای عبور از این proxy برای ابزار cvs پیدا نکردم. البته می تونستم از طریق سرور کد ها رو دریافت کنم، ولی این خلاف منطق به نظر می رسید که امکان تنظیم چنین ویژگی پیش پا افتاده ای رو نگذاشته باشند.

پس از جستجوی فراوان تعدادی پارامتر رو پیدا کردم کردم که امکان تنظیم این ویژگی ها رو می ده. جالبه بدونید که در هیچ یک از رفرنس های اصلی این ابزار که مشاهده کردم در مورد این پارامتر ها حرفی گفته نشده بود!! یک منبعی که پیدا کردم لیست پستی هست:

http://www.cvsnt.org/pipermail/cvsnt/2005-November/022467.html

برای رفع این مشکل از پارامتر های زیر می توانید استفاده کنید:

  • proxy: آدرس پراکـسـی سرور خواهد بود. برای مثال 192.168.0.1

  • proxyport: آدرس پورت پراکـسـی سرور خواهد یود. برای مثال 8080

  • proxyuser: نام کاربری برای لاگین شدن به پراکـسـی سرور هست که اختیاری است. یعنی در صورتی که پراکـسـی سرور شما نیاز به تایید هویت داره باید از ان پارامتر استفاده کنید.

  • proxypassword: کلمه عبور برای لاگین شدن به پراکسی سرور که اختیاری است.


توجه کنید موارد فوق فقط بر روی سرور هایی که از pserver استفاده می کنند کار خواهد کرد. pserver مخفف password server هست که دسترسی را از طریق کلمه عبور و رمز را امکان پذیر می کند.

یه نمونه از خط فرمانی که از موارد فوق استفاده می کند:

cvs -d :pserver;proxy=192.168.0.3;proxyport=6000:guest@test.com:/cvs

برای TortoiseCVS

در صورتی که از برنامه TortoiseCVS استفاده می کنید در قسمت "Protocol parameters" هست که باید موارد فوق را وارد کنید.

اگر مثال فوق رو بخواهیم از طریق TortoiseCVS انجام بدیم باید در فیلدی که گفتم مقدار زیر رو قرار بدید:

proxy=192.168.0.3;proxyport=6000

تصویر زیر این مورد رو نشان می ده.
TortoiseCVS

 

Firefox فارسی در دست تهیه

۱۳۸۷/۱۰/۲۵ ۴:۲۱ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۷/۱۰/۲۵ دسته بندی : ، ، 3

فایرفاکس فارسی توسط احسان اخگری و بهنام اسفهبد در حال تهیه است. برای آشنایی هم که شده باید بدانید که احسان اسکندری سایت افزونه های فایرفاکس را اخیرا فارسی کرده اند. توضیحات از زبان خودش.

اگرچه فایرفاکس قبلا فارسی شده بود ولی این فارسی به صورت یک افزونه است وباید جداگانه نصب بشه. البته افزونه بودن مشکلاتی رو ایجاد می کنه و مقداری باعث ناهماهنگی می شه که زیاد جالب به نظر نمی رسه.

این نسخه ای که توسط احسان اخگری تهیه می شود نسخه اصلی خود فایرفاکس خواهد بود و به احتمال زیاد همراه با نسخه 3.2 عرضه خواهد شد. در حال حاضر نسخه قبل آلفا که فارسی شده است را می توانید از لینک موجود در وبلاگ ایشان دریافت کنید:

http://ehsanakhgari.org/blog/2008-12-03/first-persian-firefox-builds-available

تصویری از برنامه در این آدرس :

firefox farsi

از این پس زبان فارسی را هم در لیست زبان ها مورد پشتیبانی فایرفاکس خواهیم دید.

برای این دو نفر آرزوی موفقیت می کنم.

اعضای تیم فعلی فارسی سازی همراه با لیست اعضای قبلی:

https://wiki.mozilla.org/L10n:Teams:fa

 

محاسبه تعداد کاربران آنلاین در ASP.NET

۱۳۸۷/۱۰/۱۴ ۱۶:۵۸ Salar https://www.blogger.com/profile/08261083424775464146 منتشر شده در تاریخ : ۱۳۸۷/۱۰/۱۴ دسته بندی : ، ، ، ، 9

محاسبه کاربران آنلاین در سایت یکی از مسائل مهم در آمار گیری آن هست که برای انجام آن راه های مختلفی وجود دارد. برخی سایت ها وجود دارند که چنین سرویس هایی را برای سایتها عرضه می کنند و برخی سیستم های آمار گیری وجود دارند که می توانید آن ها را خریداری کرده و یا به طور رایگان استفاده کنید.

در ASP.NET نیز چندین روش وجود دارد که یکی از آنها استفاده از رویدادهای Session است. در استفاده از شیئ Session در حالت عادی چندین مشکل مانند TimeOut وجود دارد که باعث عدم کارایی این روش می شود.

ابزار OnlineActiveUsers را به عنوان راه حلی ساده برای این مشکلات نوشتم تا به راحتی امکان آمار گیری از کاربران آنلاین سایت وجود داشته باشد.

  • توضیحی مختصر درباره OnlineActiveUsers


این ابزار از رویدادهای شیئ Session به نحوی متفاوت استفاده می کند، به گونه ای که مشکلات استفاده از آن مرتفع شده و روشی مطمئن برخوردار خواهید بود.

در صورتی که نیاز دارید تفکیکی بر کاربران عضو در سایت و کاربران میهمان داشته باشید، این ابزار این کار را برای شما می تواند انجام دهد و تنها کافی است تا فراخوانی های مورد نیاز انجام شود.

این ابزار را کاملا تست شده نوشته ام و هم اکنون بر روی سایت خودم نصب هست.

اگر نظرات و پیشنهادی در مورد توسعه این ابزار دارید خوشحال می شوم

* مطالب مرتبط

بررسی فعال بودن Javascript در ASP.NET

راهنمای کامل توابع JQuery و MooTools به صورت CHM