پست‌ها

نمایش پست‌ها از اوت, ۲۰۰۹

تست سازگاري وب سايت با مرورگرهاي مختلف (Browser Compatibility)

تصویر
يكي از دغدغه هاي طراحان وب سازگاري وب سايت آنها با مرورگرهاي مختلفه.متاسفانه اكثر وب سايت هاي پارسي زبان با IE سازگاران و… در زير 7 تا ابزار آنلاين و آفلاين به شما معرفي ميشه كه مي تونه خيلي كار راه انداز باشه   1- Browsershots 2- Browsercamp 3- Xenocode Browser Sandbox 4- CrossBrowserTesting 5- NetRenderer 6- Litmus 7- IETester منبع

برداشتن محدوديت 2 گيگ رم براي Visual Studio

تصویر
همونطور كه ميدونيد Visual Studio از منابع زيادي استفاده ميكنه مخصوصا اگه شما solution بزرگ ي داشته باشيد و از افزونه ها هم استفاده كنيد مثل ReSharper و… در اين مواقع و بعد از مدتي كار در محيط Visual Studio هنگام كامپايل كردن برنامه ممكنه با ارور Not enough storage is available to complete this operation. مواجه شيم. شايد تصور اين باشه كه با ارتقا سخت افزار اين مشكل حل شه ولي اين يك مشكل نرم افزاري هست و هم در OS هاي 32 و 64 اين مشكل رو داريم. و اما براي رفع 2 كار رو بايد انجام بديدم قرار دادن سويچ 3GB/ در فايل boot.ini ( اطلاعات بيشتر ) با رفتن به اين شاخه C:\Program Files\Microsoft Visual Studio 8\Common7\IDE و اجراي دستور زير در Command Prompt editbin /LARGEADDRESSAWARE devenv.exe در آخر ريستارت كردن PC فرامشو نشه. اين نتيجه كار منبع

لود كردن سريع JavaScript

اين روزها استفاده از JavaScript براي داشتن وب سايت هاي RIA يك روش قابل قبول و هوشمندانه در دنياي development محسوب ميشه.اما استفده زياد از JavaScript باعث ميشه سرعت و كارايي وب سايت (لود شدن) بعلت حجم زياد كد هاي جاوااسكريپت پايين بياد. هرچقدر سايت ما پويا و Ajax ي باشه به كدهاي جاوااسكريپ و CSS بيشتري نياز داره مخصوصا اگز شما از فريمورك خاصي استفاده كرده باشيد معنيش اسنه كه كاربر بايد ديتاي بيشتري دانلود كنه بطور سرانگشتي هر چند JavaScript فقط يه فايل تكسته یک فريمورك JavaScript نسبتا جمع و جور 100 كيلوبايت حجمشه! در زير 3 روش رو براي كم كردن (minimize) كردن اين حجم معرفي ميكنيم كوچك كردن (minify) جاوا اسكريپت پاك كردن هر چيز غير ضروري در فايل جاوا اسكريپت بخصوص پاك كردن توضيحات (comments) و white space ها (تب , خط هاي خالي و SPACE) اينا چيزهاي هستن (مخصوصا كامنت ها ) براي دولوپر ضروررين ولي مرورگر كاربر هيچ نيازي به اونا نداره.براي پاك كردن ميتونيد بصورت دستي اين كار رو انجام بديد يا از JSMin يا YUI Compressor استفاده كنيد. فشرده كردن (compress) جاوا اسكريپت كد زير د

NHibernate در مقابل Entity Framework

تصویر
آقاي Gergely Orosz در قسمتي از پايان نامش به مقايسه و اندازه گيري كارايي (performance) دو فريمورك ORM در دات نت Entity Framework و NHibernate پرداخته.براي تست از دو برنامه ساده كه كارهاي يكساني رو روي جدوال يكساني انجام ميدن استفاده كرده. عملياتي كه اندازه گيري شدن عبارتند از ذخيره خواندن بر اساس رابطه ها (relations) خواندن بوسيله ID آپديت پاك كردن نتيجه تست رو برنامه ها بصورت زير بوده ديدن جزئيات آزمايش نتيجه گيري براي ذخيره كردن ديتا Entity Framework نشون داد كه از NHibernate بصورت قابل توجهي سريع تره براي پاك كردن ديتا NHibernate خيلي از  Entity Framework سريعتره نتيجه گيري آقاي Gergely Orosz اينه كه در سناريوهاي كه عملياتش زياد وقت گير نيستن زياد فرقي نيكنه از كدوم فريمورك استفاده كني و در اينجا بايد اون فريموركي رو كه باهاش ميتوني سريعتر و موثر تر پروژت رو انجام بدي رو انتخاب كني .

رمز دار كردن (Encrypt) صفحات وب با jCryption

تصویر
بطور خلاصه jCryption يك پلاگين (رايگان) jQuery براي اينكريپت كردن ديتاهاي  POST/GET (كه توسط فرم ها ارسال ميشن) است. jCryption از الگوريتم RSA براي رمزگزاري استفاده ميكنه و يك فايل PHP براي هندل كردن رمزگشايي (Decrypt) ديتا دارد. بعضي از خصوصيات jCryption رمزگزاري تا 2048 بيت پشتيباني كردن از  AjaxSubmit در محاسبات (Cryptography) مرورگر رو بلاك نميكنه عدم نياز به SSL (درحال حاظر jCryption جايگزين مناسبي براي SSL نيست چون Authentication ندارد) براحتي نصب و استفاده ميشود jCryption  بروي Internet Explorer 6 +, Mozilla Firefox 3+, Safari 3, Opera 9+, Google Chrome  تست شده ضمنا براي كار با اين پلاگين به حداقل  PHP 4.0.4 نياز داريد. همونطور كه قبلا ذكر شد استفاده از jCryption آسان است به مثال زير توجه كنيد 1: $( "#formID" ).jCryption();   مثال هاي بيشتر

اتفاق عجيب در سال 2038 !

تصویر
در اين تاريخ 19th of January 2038 03:14:07 UTC همونظور كه تو انيميشن ميبينيد بعضي سيستم ها (32 بيتي) كرش ميكنند و بعضي برنامه ها از كار ميافتند. دليل: اگر كامپيوترها فيلدهاي مربوط به تاريخ رو بصورت signed 32 bit integer ذخيره كرده باشن ; در تاريخ ذكر شده فيلد تاريخ به حداكثر مقدار خود ميرسه و باعث ميشه عدد دهدهي (decimal number) به عدد منفي سويچ كنه و درنتيجه تاريخ برميگرده به 1901(در واقع يك overflow رخ ميده) منبع

ورق هاي تقلب (Cheat Sheet) ضروري براي يك توسعه دهنده وب

با زياد شدن زبان و تكنولوژي هاي توسعه وب بخاطر سپردن Syntax هاي اين زبان و تكنولوژي ها سخت ميشه و خيلي پيش مياد كه هنگام برنامه نويسي نحوه استفاده از يك تابع رو به ياد نمياريم و… در زير چند Cheat Sheet ضروري رو معرفي ميكنم Javascript and AJAX libraries Javascript Reference Card Javascript Cheat Sheet Javascript and Browser Objects Quick Reference Gigantic List of Javascript Cheat Sheets jQuery Visual Map jQuery API Browser jQuery 1.3 Cheat Sheet MooTools Cheat Sheet HTML and CSS Cheat Sheets HTML Cheat Sheet HTML Cheat Sheet - PDF/PNG HTML 5 Cheat Sheet – PDF CSS Cheat Sheet PDF/PNG CSS Online Cheat Sheet CSS 3 Cheat Sheet Cheat Sheet هاي بيشتر

ساخت دايناميكي تگ HTML

ساخت دايناميكي تگ <DIV> با استفاده از جاوااسكريپت < html xmlns ="http://www.w3.org/1999/xhtml" > < head > < title > Create DIV Dynamically Using JavaScript </ title > < script type ="text/javascript" language ="javascript" > 1: 2: function DynamicDiv() { 3: var dynDiv = document.createElement( "div" ); 4: dynDiv.id = "divDyna" ; 5: dynDiv.innerHTML = "Created using JavaScript" ; 6: dynDiv.style.height = "20px" ; 7: dynDiv.style.width = "300px" ; 8: dynDiv.style.backgroundColor = 'gray' ; 9: document.body.appendChild(dynDiv); 10: } </ script > </ head > < body > < div > < input id ="Button1" type ="button" value ="Using JS" onclick ="DynamicDiv();" /> </ d

طراحي پيش الگوي فرم هاي برنامه بوسيله Balsamiq Mockups

تصویر
با استفاده از اين نرم افزار ميتونيد براي فرم هاي برنامه تون پيش الگو طراحي كنيد.يكي از ويژگي هاي اين نرم افزار اينه كه بصورت تيمي ميتونيد رو پروژه كار كنيد و … اطلاعات بيشتر

ساختار فيزيكي داده ها در اسكيوال سرور (قسمت اول)

در اسكيوال سرور ديتا ها داخل فايلها سازمان يافته اند . زماني كه ما يك ديتابيس ميسازيم نام و مكان اين فايل ها رو مشخص ميكنيم(لاگ فايل و ديتا فايل).براي ساختن ديتابيس حداقل به يك لاگ فايل و ديتا فايل نياز داريم. ديتا فايل:مقادير ديتا ,ايندكس ها و حتي SP و توابع در اين فايل ذخيره ميشوند. لاگ فايل:تمام تغييرات در  ديتابيس بصورت write-ahead(يعني هر تغيير در ديتابيس اول در لاگ ثبت شود) در لاگ فايل ثبت ميشوند. براي مكانيابي سريع داده ها اين مقادير ديتا بايد به يك روشي سازماندهي شوند كه ; موتور ديتاي (Data Engine) اسكيوال سرور دسترسي كامل به محل قرارگيري هر ديتا داشته باشد.اسكيوال سرور با شازماندهي ديتا ها در ديتاپيج(به حجم 8 كيلوبايت) به اين مهم دست ميابد.هر ديتاپيج با هدرهاي 96بايتي شروع ميشوند(كه شامل اطلاعاتي از قبيل شماره صفحه , نوع صفحه ,مقدارفضاي خالي در صفحه و…است). رديف هاي داده بصورت سريالي بعد از هدر در ديتاپيج ها قرار ميگيرند.يك جدول رديف آفست (row offset) در انتهاي هر صفحه قرار ميگره و در اين جدول به ازاي هر رديف ديتا يك رديف داريم (كه ترتيب قرار گرفتن آنها برعكس ترتيب ردي

توابع رشته اي در اسكيوال سرور 2005 (قسمت اول)

ASCII ( character_expression ) كد اسكي يك كاراكتر رو برميگردونه و اگر يك عبارت رشته اي وارد كنيم كد اسكي سمت چپي ترين كاراكتر اون رشته رو برميگردونه و خروجي اون يك عدد از نوع int هست CHAR ( integer_expression ) دقيقا عكس تابع بالا عمل ميكنه و كاراكتر متناظر با كد اسكي وارد شده رو برميگردونه CHARINDEX ( expression1 ,expression2 [ , start_location ] ) پيدا كردن و برگرداندن مكان عبارت اول در عبارت دوم اگه پيدا نكرد صفر (بصورت ديفالت از ابتداي عبارت دوم شروع به جستجو ميكنه كه قابل تغييره با پارامتر سوم تابع) مثال 1: 1: SELECT Charindex ( 'winsharp' , 'my blog name is winsharp' ) خروجي  17 SOUNDEX ( character_expression ) كدي رو برميگردونه كه براساس اون ميشه اسامي(و يا كلمات)ي رو كه صداشون يكي هست رو تشخيص داد مثال 1: SELECT SOUNDEX ( 'hosaini' ), SOUNDEX ( 'hasani' ) خروجي H250 DIFFERENCE ( character_expression , character_expression ) بر اساس تابع SOUNDEX با برگرداندن عددي در بازه صفر تا 4 ميزان شب

دلايل استفاده از SP بجاي كوئري هاي موردي

Reduce Network Traffic ترافيك بيش از اندازه بدليل كوئري هاي دم دستي يا اد هوك باعث بالارفتن ترافيك شبكه مشود كه خود قاتل پرفرمنس سيستم است. Database Privileges با استفاده از اس پي ميتوان براي كاربران پرميژن تعيين كرد Code Security جلوگيري از اسكيول اينجكشن Execution Plan Re-use با توجه به اينكه پلن اجراي اس پي در سرور ذخيره ميشود براي فراخواني هاي مجدد اس پي نيازي به كامپايل مجدد نيست در نتيجه پرفرمنس بصورت وحشتناكي افزايش پيدا ميكند Efficient Re-use of Code با داشتن اس پي هاي كامان (Common) در سرور ميتوانيم آنرا در هر برنامه اي استفاده كنيم در نتيجه باعث كم شدن كدنويسي ميشود Single Point of Maintenance اگر منطق برنامه ما با استفاده از اس پي باشد در تغييرات احتمالي منطق برنامه ما فقط با تغيير اس پي ميتوانيم به مطلوبمان برسيم بدون نياز به تغيير در كد برنامه   منبع