اشتراکها
اشتراکها
بسط System.Web.Optimization
اشتراکها
معرفی تایپ اسکریپت 0.9
تایپ اسکریپت 0.9 در Visual Studio Magazine
وبلاگها ، سایتها و مقالات ایرانی (داخل و خارج از ایران)
- علت مرگ نرم افزار ها
- مدیریت ساده تر Group policy – قسمت دوم
- آموزشCCNA لایه های OSI(بخش4)
- تاریخ بردار میلادی و شمسی (جلالی) !
- وجدان برنامه نویسی و اجبار برنامه نویسی
- دسترسی به کنترل های Server side از طریق جاوا اسکریپت
- MikroTik EOIP Tunnel
- انتشار SMF 1.1.8
- دسترس پذیری وب: مروری بر یک پژوهش؛ بخش اول
- سوییچ های Catalyst
- Tab Order، به راحتی آب خوردن !
- 20+ افزونه فایرفاکس برای توسعه دهندگان و طراحان وب
امنیت
Visual Studio
ASP. Net
طراحی و توسعه وب
- بهبودهای حاصل شده در کارآیی مرورگرها
- بیش از 40 مقاله آموزشی jQuery
- مجموعهای از کتابخانههای آپلود فایل
اسکیوال سرور
سی شارپ
عمومی دات نت
مسایل اجتماعی و انسانی برنامه نویسی
- اگر معمارها روزی مانند برنامه نویسها قرار بود کار کنند ...
- وضع اعضای تیم شما چطور است؟
- 14 ابزار مدیریت پروژه
کتابهای رایگان جدید
متفرقه
- آموزش رایگان جاوا
- برگه تقلب SVN
- مقایسه سرعت یک سری از پلتفرمهای برنامه نویسی و یک نمونه دیگر
- Valentine’s day timestamp
- چگونه بهتر بنویسیم؟
- MCSE از نوع ایرانی!
گریس مانکی یکی از افزونههای فایرفاکس است که توسط آن میتوان اسکریپتهایی را بر روی صفحات وب در حال مشاهده، جهت تغییر آنها اجرا کرد. این نوع تغییرات بیشتر در جهت بالا بردن کارآیی یا خوانایی سایتها صورت میگیرد. مثلا بررسی وجود لینکهای ارائه شده در یک صفحه وب (قبل از اینکه به آنها رجوع کنیم، مشخص شود که آیا وجود دارند یا خیر) و هزاران مثال شبیه به این که در سایت اسکریپتهای آن قابل دریافت هستند.
گریس مانکی به خودی خود کار خاصی را انجام نمیدهد و فقط میزبان اجرایی اسکریپتهایی است که برای آن تهیه شده اند. به این اسکریپتها user scripts گفته میشود و جهت تهیه آنها از زبان جاوا اسکریپت استفاده میگردد.
مطابق اصول نامگذاری آن، فایل این اسکریپتها حتما باید به .user.js ختم شود تا توسط افزونه گریس مانکی قابل شناسایی باشد.
اسکریپت سلام دنیای گریس مانکی!
// ==UserScript==
// @name Hello World
// @namespace http://diveintogreasemonkey.org/download/
// @description example script to alert "Hello world!" on every page
// @include *
// @exclude http://diveintogreasemonkey.org/*
// @exclude http://www.diveintogreasemonkey.org/*
// ==/UserScript==
alert('Hello world!');
در پایان مثلا نام آنرا hello.user.js خواهیم گذاشت (همانطور که ذکر شد قسمت user.js آن باید رعایت شود). برای نصب آن فقط کافی است این فایل را به درون پنجره فایر فاکس کشیده و رها کنیم (drag & drop).
استفاده از jQuery در اسکریپتهای گریس مانکی
عمده کاربردهای اسکریپتهای گریس مانکی در جهت اعمال تغییرات بر روی document object model صفحه (DOM) هستند. کتابخانه jQuery اساسا برای این منظور تهیه و بهینه سازی شده است.
مثال:
فرض کنید قصد داریم به نتایج خروجی جستجوی گوگل، fav icon سایتهای یافت شده را اضافه کنیم (در کنار هر لینک، آیکون سایت مربوطه را نمایش دهیم). گوگل اینکار را انجام نداده است. اما ما علاقمند هستیم که این قابلیت را اضافه کنیم!
// ==UserScript==
// @name Google FavIcon
// @namespace http://userscripts.org
// @description Shows favicon for Google searches results
// @include http://*.google.*/search?*
// ==/UserScript==
loadJquery();
$(document).ready(function(){
$("h3.r > a.l").each(function(){
var $a = $(this);
var href = $a.attr("href");
var domain = href.replace(/<\S[^><]*>/g, "").split('/')[2];
var image = '<img src="http://' + domain + '/favicon.ico" style="border:0;padding-right:4px;" />';
//GM_log(">image:> " + image);
$(this).prepend(image);
});
});
دریافت سورس این مثال
در اینجا ابتدا لینکهای حاصل از جستجو پیدا میشوند. سپس نام دومین مربوطه استخراج میگردد (با استفاده از regular expressions) و در ادامه از این نام دومین یک آدرس استاندارد http://domain/favico.ico ساخته شده و از آن یک تگ img درست میشود. در آخر این تگ به قبل از لینکهای گوگل اضافه میشود.
شاید سؤال بپرسید از کجا مشخص شد که باید به دنبال h3.r > a.l گشت؟ به تصویر زیر دقت نمائید (نمایی است از یکی از تواناییهای افزونه fireBug فایرفاکس).
هنگامیکه صفحه بارگذاری شد، بر روی آیکون سوسک موجود در status bar فایرفاکس کلیک کنید تا FireBug ظاهر شود (البته من اینجا سوسک دیدم شاید موجود دیگری باشد :) )
سپس بر روی دکمه inspect در نوار ابزار آن کلیک کنید. در همین حال اشارهگر ماوس را به یکی از لینکهای نتیجه جستجوی گوگل نزدیک کنید. بلافاصله تگها و کلاسهای مورد استفاده آن به شکل زیبایی ظاهر خواهند شد. به این صورت صرفه جویی قابل ملاحظهای در وقت صورت خواهد گرفت.
نتیجه اجرای اسکریپت فوق (پس از نصب) به صورت زیر است:
نکته: نحوه دیباگ کردن اسکریپتهای گریس مانکی
اگر نیاز به مشاهده مقدار متغیرها در لحظه اجرای اسکریپت داشتید، یکی از راهحلهای موجود استفاده از تابع GM_log مربوط به API گریس مانکی است که خروجی آنرا در قسمت messages مربوط به error console فایرفاکس میتوان دید.
نظرات اشتراکها
تبدیل آنلاین transcript به فرمت srt
در مورد کد که جاوا اسکریپت هست توی یک سایت خارجی پیداش کردم و یه تغییر کوچیک توش دادم .
در مورد فید هم ممنون از توجه شما ، متوجه اون شدم و همراه یک سری تغییرات دیگه در سایت اون رو اصلاح میکنم.
function LconvertToSRT()
{ var arr = getArray(); var subStr = "-->"; if (arr[0].indexOf(subStr) < 0)
{ for (var i = 0; i < arr.length; i++) { var timeRe = /\d{2}:\d{2}/i; var timeStart = "00:" + arr[i].match(timeRe) + ",200"; var j = parseInt(i) + parseInt(1); if (j < arr.length) { var timeEnd = "00:" + arr[i + 1].match(timeRe) + ",200"; } var speakStr = arr[i].replace(/\d{2}:\d{2}\s/, ""); arr[i] = j + "\n" + timeStart + " --> " + timeEnd + "\n" + speakStr + "\n\n"; } arr.pop(); var fullText = arr.join(""); document.getElementById("source").value = fullText; } }
نظرات اشتراکها
HTML Helper برای jqGrid
اگر این کتابخانهها نبودند و امروزه تا این حد تکامل پیدا نکرده بودند، هیچ وقت سیلورلایت و فلش از صحنه روزگار محو نمیشدند. در بسیاری از اوقات هدف ساخت یک برنامه غنی وب است. برنامهای که تجربه کاربری آن همانند برنامههای دسکتاپ باشد. مثلا صفحه مدام چشمک نمیزند و کاربر احساس نمیکند که مدام رفت و برگشت به سرور وجود دارد، کنترلهای auto-complete مانند برنامههای دسکتاپ و یا حتی شکیلتر و غنیتر از آنها در وب وجود دارند، برنامههای تک صفحهای وب، اعتبار سنجیهای سمت کاربر، بدون هدایت او به سرور و دریافت پاسخ آنی و بسیاری از مثالهای دیگری که در جهت بهبود کاربری در وب مطرح هستند. در اینجا HTML خالص بدون جاوا اسکریپت حرفی برای گفتن ندارد. HTML خالص صرفا جهت ارائه محتوا اختراع شده است نه طراحی برنامههای غنی وب و کار ما هم با ASP.NET و یا فناوریهای مشابه، تولید برنامههای وب است و نه صرفا ارائه محتوا. اگر قرار است مثلا چند صفحه توضیح مشخصات شرکتی را در اینترنت قرار دهید، این تنها به معنای ارائهی محتوا است. نیازی به برنامه خاصی ندارد. چند صفحه HTML به همراه مقداری هم CSS برای اینکار کافی است. اما اگر همینجا قرار شد از کاربر اطلاعات دریافت کنید، نیاز است تجربه کاربری او را غنی کنید.
دقیقا همینطور هست. در اینجا فناوریهای سمت سرور فقط تبدیل به ارائه کنندهی وب سرویس میشوند و نه بیشتر.
مزیت آن این است که شما با Razor فقط یک سری فرمهای ابتدایی و اعتبارسنجی آنها را به خوبی میتوانید مدیریت کنید. یک مقدار کار UI که پیچیدهتر شد، به صفحهای میرسید که درون آن 100ها سطر کد جیکوئری با کدهای Razor مخلوط شدن و 2 ماه بعد حتی جرات نمیکنید به این صفحه دست بزنید و تغییری را در آن اعمال کنید. اینجا است که فریم ورکهای SPA ارزش خودشان را نشان میدهند.
برای فرمهای معمولی، Razor عالی است. برای UI پیچیده، ترکیب Razor و jQuery اصلا قابلیت نگهداری ندارد (صفحاتی پر از قطعات جاوا اسکریپت که نه فضای نامی دارند، به راحتی تداخل میکنند، عموما از TypeScript استفاده نمیکنند و مبتنی بر قابلیتهای جدید این زبان نیستند). در یک چنین حالتی قابلیت تست UI را هم از دست خواهید داد. همچنین مدام هم محدود به افزونههای جیکوئری خواهید بود، اما با فریم ورکهای SPA، خیلی از این افزونهها، کارهای معمولی آنها هستند. به علاوه زمانیکه back-end (سمت سرور) و front-end (مدیریت کدهای سمت کلاینت) را از هم جدا میکنید، بهتر میتوانید از مزیت کار با طراحان UI استفاده کنید. کسانیکه عموما قرار نیست با کدهای سمت سرور کار کنند.
مزیت آن این است که شما با Razor فقط یک سری فرمهای ابتدایی و اعتبارسنجی آنها را به خوبی میتوانید مدیریت کنید. یک مقدار کار UI که پیچیدهتر شد، به صفحهای میرسید که درون آن 100ها سطر کد جیکوئری با کدهای Razor مخلوط شدن و 2 ماه بعد حتی جرات نمیکنید به این صفحه دست بزنید و تغییری را در آن اعمال کنید. اینجا است که فریم ورکهای SPA ارزش خودشان را نشان میدهند.
برای فرمهای معمولی، Razor عالی است. برای UI پیچیده، ترکیب Razor و jQuery اصلا قابلیت نگهداری ندارد (صفحاتی پر از قطعات جاوا اسکریپت که نه فضای نامی دارند، به راحتی تداخل میکنند، عموما از TypeScript استفاده نمیکنند و مبتنی بر قابلیتهای جدید این زبان نیستند). در یک چنین حالتی قابلیت تست UI را هم از دست خواهید داد. همچنین مدام هم محدود به افزونههای جیکوئری خواهید بود، اما با فریم ورکهای SPA، خیلی از این افزونهها، کارهای معمولی آنها هستند. به علاوه زمانیکه back-end (سمت سرور) و front-end (مدیریت کدهای سمت کلاینت) را از هم جدا میکنید، بهتر میتوانید از مزیت کار با طراحان UI استفاده کنید. کسانیکه عموما قرار نیست با کدهای سمت سرور کار کنند.
نظرات مطالب
متدی برای بررسی صحت کد ملی وارد شده
سلام
میتونین چک کنین فکر نکنم معتبر باشه
کد جاوا اسکریپت تشخیص صحت کد ملی، منبعش این سایته
میتونین چک کنین فکر نکنم معتبر باشه
کد جاوا اسکریپت تشخیص صحت کد ملی، منبعش این سایته
function checkCodeMeli(code) { var L=code.length; if(L<8 || parseInt(code,10)==0) return false; code=('0000'+code).substr(L+4-10); if(parseInt(code.substr(3,6),10)==0) return false; var c=parseInt(code.substr(9,1),10); var s=0; for(var i=0;i<9;i++) s+=parseInt(code.substr(i,1),10)*(10-i); s=s%11; return (s<2 && c==s) || (s>=2 && c==(11-s)); return true; }
نظرات مطالب
AngularJS #2
در مورد ترکیب Client Side Templates با MVC: یکی از خوبیهای بازگشت دادن یک partial view کامل در MVC (که بله، یک HTML کامل رو بر میگردونه در حالت Ajax ایی مثلا) نسبت به این روش، امکان استفاده از متدهای کمکی سمت سرور برای رندر کردن View هست. مثلا فرض کنید یک لیست فایلها قراره نمایش داده بشه. در View یا Partial View میشه بدون تعریف یک کلاس اضافهتر برای بازگشت دادن اطلاعات به صورت JSON که بخواد در AngularJS سمت کلاینت استفاده بشه، اطلاعات رو خیلی ساده برای نمایش، با razor و سیشارپ فرمت کرد. مثلا تاریخ رو شمسی کرد. اندازه رو به کیلوبایت یا مگابایت نمایش داد (در حد فراخوانی یک متد الحاقی). یک if و else گذاشت که اگر کاربر لاگین بود این قسمت از partial view رو که درون حلقه داره تولید میشه، مشاهده نکنه یا برعکس. یک قسمت از حلقه هم یک فرم کوچک درست کرد برای ارسال دیتا به سرور اون هم فرمی که آدرسش رو از T4MVC به صورت strongly typed میگیره و یا فیلدهاش از Html Helperهای MVC استفاده میکنند که اینها هم سمت سرور رندر میشن. الان چون تمام کار با جاوا اسکریپت باید انجام بشه، یعنی تمام این مراحل رو باید به صورت JSON بازگشت داد که AngularJS بخواد اونها رو سمت کلاینت، سر هم کنه. به علاوه امکان کامپایل کردن Viewهای razor و یافتن خطاهای احتمالی رو هم از دست میدیم چون همه چیز قراره سمت کلاینت رندر بشه.