addon domain در plesk

 

cpanel یک امکانی داره به نام addon domain که این امکان رو به شما میده که با یک اکانت هاستینگ چند تا هاست جداگانه راه بیاندازید. اخیرا به دلیل تحریم cpanel خیلی از هاست های ایرانی (از جمله ما) سوئیچ کردند به plesk که این امکان رو نداره. و باعث شده مشتری ها شاکی بشن.

برای رفع این معضل یک راه سرخ پوستی پیدا کردم با استفاده از htaccess و ماژول mod_rewrite :

  1. دامنه مورد نظر (مثلا addon.com) رو پارک می کنید روی هاست (توی plesk به جای پارک میگن domain alias)
  2. یک شاخه با نام addon.com توی فولدر httpdocs می سازید.
  3. یک فایل .htaccess در شاخه httpdocs با محتوای زیر ایجاد میکنید:
# addon.com addon domain.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^addon\.com [OR]
RewriteCond %{HTTP_HOST} ^www\.addon\.com
RewriteCond %{REQUEST_URI} !^/addon\.com/
RewriteRule ^(.*) /addon.com/$1 [L]

 


آخرین رکورد بازبینی شده

 

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

فرض کنید بدین منظور ستونی در جدول مورد نظر قرار داده ایم و با هر تغییر در رکورد مقدار آنرا نیز تعویض کرده تا بدین ترتیب متوجه رکورد تغییر یافته شویم که در این مثال و در جدول Person ستونی با نام Revision ایجاد شده است

بنابراین کوئری Linq متناسب با این سناریو به صورت زیر خواهد بود


  1. public IEnumerable GetPersons()
  2.         {
  3.             return from person in Person.All()
  4.                    group person by person.Id
  5.                    into personGroup
  6.                    from entity in personGroup
  7.                    where entity.Revision == personGroup.Max(x => x.Revision)
  8.                    select entity;
  9.         }

 


با Cloudflare امنیت و سرعت سایت خود را افزایش دهید

 

حتماً شما هم بعنوان مدیر سایت تجربه بارگزاری کند صفحات یا ایجاد اختلال بر اثر حملات اینترنتی را داشته‌اید و می‌دانید که این مشکلات چقدر می‌تواند بر میزان بازدیدکنندگان شما تاثیر بگذارد. بعنوان یک وب مستر افزایش سرعت و امنیت سایت ها از دغدغه‌های همیشگی شما خواهد بود. شرکت‌های بزرگ با استفاده از CDN و بکارگیری تیم‌های امنیتی سعی می‌کنند تا حد ممکن از این پیشامدها جلوگیری کنند ولی چاره کار برای سایت‌های کوچک که استطاعت مالی شرکت‌های بزرگ را ندارند چیست ؟

Cloudflare Logo

Cloudflare یک دیواره آتش مبتنی رایانش ابری (Cloud Computing) است که علاوه بر تامین امنیت در برابر تهدیدات، عملکرد سایت شما را نیز بهبود می‌بخشد؛ در واقع Cloudflare می‌تواند خدماتی همانند شرکت‌های بزرگ در اختیار شما بگذارد.
وقتی سایت شما بخشی از جامعه کلودفلر شود ترافیک آن از شبکه هوشمند جهانی این سرویس عبور خواهد کرد و بصورت خودکار سرعت بارگزاری صفحات سایت را بهینه خواهد کرد در نتیجه بازدیدکنندگان با سرعت بیشتری صفحات را باز خواهند کرد و سایت عملکرد بهتری خواهد داشت. همچنین مانع تهدیدات، bot و crawler هایی می‌شود که پهنای باند و منابع سرور شما را تلف می‌کنند بنابراین با استفاده از این سرویس تا ۳۰% سرعت بارگزاری سایت افزایش می یابد، ۶۰% از پهنای باند مصرفی کم می شود و سرور شما ۶۵% لود کمتری خواهد داشت.

استفاده از Cloudflare رایگان است و نصب آن کمتر از ۵ دقیقه از وقت شما را خواهد گرفت بدون اینکه نیازی به سخت‌افزار، نصب‌ نرم‌افزار یا تغییر در کدهای سایت داشته باشید. نصب خیلی سر راست است و در ۴ مرحله به سرانجام می‌رسد ولی برای افرادی که با تنظیمات دامنه و DNS ها آشنایی ندارند گیج کننده خواهد بود

نخست باید دامنه خود را در کلودفلر اضافه کنید. اندکی طول می‌کشد تا DNS های سایت شما بررسی شود.
در مرحله بعد باید از صحت DNS Record های خود مطمئن شوید و در صورت نیاز آنها را تصحیح کنید.
سپس باید تعیین کنید که می‌خواهید ترافیک کدام یک از CNAME Record ها از این سیستم بگذرد.
و در پایان Name Server های جدید را باید جایگزین تنظیمات قبلی دامنه خود کنید و منتظر بمانید تا به اصطلاح ست شوند.
در تمام مراحل نصب، راهنمایی‌ها و توضیحات لازم به شما داده خواهد شد که در صورت گیر کردند می‌توانید از آنها کمک بگیرید.

Cloudflare بعضی از فایل‌های شما را در ۵ دیتاسنتر خود که در شهرهای شیکاگو، آزبورن، سن خوزه، آمستردام و توکیو واقع شده‌اند کش (Cache) خواهد کرد و به بازدیدکنندگان شما اجازه می‌دهد نسبت به مکانی که قرار دارند دسترسی سریع‌تری به سایت داشته باشند و در عین حال اسپمرها، حملات و تهدیدات وارده را نیز پالایش می‌کند. با ویژگی Always Online سایت شما را همیشه آنلاین نگه می دارد حتی زمانی که سرور شما آفلاین شده باشد! می‌دانم که عاشق این ویژگی شدید ;)
همچنین در داشبورد کلودفلر می‌توانید آماری از وضعیت سایت و میزان بازدیدکنندگان واقعی و تهدیدات وارده داشته باشید و از تنظیمات امنیتی و بهبود سرعت سایت خود نیز مطلع شوید.

 


sem چیست ؟

 

SEM= Search Engine Marketing

بازاریابی با موتورهای جستجوگر

SEM به تمام پروسه افزایش بینندگان سایت و بالا بردن فروش آن به کمک موتورهای جستجوگر گفته می شود. در حقیقت SEO بخش از SEM است. نمونه کارهایی که در SEM انجام می شود عبارتست از:

انتخاب کلمات کلیدی

بررسی وضعیت فعلی سایت و رقبای آن

اصلاح ساختار سایت

تنظیم متاها و عناوین سایت

بهینه سازی سایر پارامترهای سایت

معرفی سایت به موتورهای جستجوگر

افزایش محبوبیت و پیوندهای سایت و مدیریت این پروسه

شرکت در برنامه های PFI

تحلیل آمار سایت

بالا بردن رتبه ها (کنترل رتبه ها و اعمال تغییرات مورد نیاز

انتخاب موتورهای جستجوگر برای سرمایه گذاری بر آنها

بهینه سازی اخبار و Press Release

 


SQLite چیست ؟

 

SQLite یک برنامه مدیریت بانک اطلاعاتی مبتنی بر زبان استاندارد SQL هست.
بر خلاف مدل های مرسوم بانک اطلاعاتی که به صورت Client/Server هستند و نیاز به نصب و پیکر بندی های خاص خودشون دارن، SQLite تنها یک برنامه مدیریت بانک اطلاعاتی مستقل هست که نیازی به هیچ گونه نصب و پیکر بندی ای نداره و مهمترین هدف از عرضه اون به کار گریش به صورت ضمیمه شده در سیستم های مختلف هست.
یک مثال خیلی کارا در این رابطه میتونه برنامه های موبایل و سیستم عامل های موبایل باشه که با توجه به ماهیت اونها ضرورت به کار گیری چنین برنامه های مدیریت بانک اطلاعاتی رو دو چندان میکنه. برای تصدیق این مطلب میتونین از اینجا به لیست مشتریان صاحب نام این برنامه دسترسی پیدا کنید. SQLite به صورت رایگان عرضه میشه و مجوز همراه اون امکان استفاده از اون رو در هر سطحی رو میده که بسیار ارزشمند هست.
بعبارتي SQLite یک پایگاه داده کوچک (حجمی در حدود 500 KB) که به زبان C در قالب یک کتابخانه (Library) نوشته شده است و از پایگاه داده های RDBMS به حساب می آید. این پایگاه داده بدون لیسانس (Public Domain) ، آزاد و open source منتشر می شود


SQLite Expert ابزاری قدرتمند و ویژوال می باشد که به شما این امکان را می دهد تا بتوانید به آسانی دیتا بیس های SQLite خود را مدیریت نموده و دید بهتری نسبت به اینکه چگونه دیتا بیس شما عمل می کند، بدست آورید. این نرم افزار، مدیریت دیتا بیس و نگه داری از آن را در محیطی یکتا و یکپارچه و با واسطی گرافیکی تمیز و بدیع، ترکیب می نماید . با استفاد ه از SQLite Expert قادر خواهید بود جداول و نماها رابصورت بصری و بدون نوشتن حتی یک خط SQL ویرایش نمایید.

قابلیتهای کلیدی نرم افزار SQLite Expert v2.0.28 :

* درباره سازی ساده فیلدها، فهرست ها، قید ها، تریگر ها بدون از دست دادن اطلاعات موجود برروی جداول
* ساختن اسکریپتهای SQL و تولید نماها بصورت بصری با استفاده از سازنده Query
* ایحاد دیتابیس های SQL ، مشاهده و تغییر پارامترهای دیتابیس ، بررسی تمامیت دیتابیس و فشردگی آن
* انتقال آسان دیتا میان دیتابیس های SQLite
* وارد کردن اطلاعات از اسکریپتهای SQL یا اطلاعت منبع ADO یا استخراج اسکریپتهای SQL
* نمایش و ویرایش دیتا بصورت گرافیکی ، شامل فیلدهای تصویر و BLOB
* پشتیبانی از فرمتهای تصویری BMP, JPG و PNG
* اجرای Query های SQL و نمایش نتایج بصورت گرافیکی یا متنی

سازنده : http://www.sqliteexpert.com

 


مسیریابی آدرس در ASP.NET 4

 

داشتن یک آدرس تمیز و قابل فهم برای کاربران و موتورهای جستجو، یکی از امکاناتی است که این روز ها درباره آن بحث زیادی میشود. این امکان در ASP.NET 3.5 SP1 برای برنامه نویسان ASP.NET نیز به وجود آمد.
امروز با یک مثال نحوه استفاده از این امکان را در برنامه های WebForms به شما نشان میدهم.
در اصلی URL Routing استفاده از یک آدرس قابل فهم است که فایل معادل فیزیکی آن وجود ندارد. و شما در برنامه خود این آدرس را به یک فایل فیزیکی متصل میکنید.



در طول این مثال فرض ما بر این است که سایتی با 2 صفحه وجود دارد.صفحه اصلی و صفحه نمایش یک مقاله با نام های Default.aspx و Detail.aspx که تا امروز برای ارسال شناسه مقاله ها به این صفحه از یک کوئری استرینگ به نام ID استفاه میشده است. و آدرس آن به شکل زیر بوده
www.mysite.ir/Detail.aspx ?ID=22
حال میخاهیم این آدرس را به شکل زیر تبدیل کنیم
www.mysite.ir/viewarticle/22
قدم اول:
اولین کار ایجاد مسیر مجازی و اتصال آن به مسیر فیزیکی است. نمونه این کار را درمثال پایین مشاهده میکنید. این کار به کمک تابع RegisterRoutes انجام میشود که در Application_Start فراخوانده میشود.

 

void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routs)
{
    routs.MapPageRoute("article-browser", "viewarticle/{ID}",
        "~/Detail.aspx");
}
در این تابع از تابع کمکی MapPageRoute استفاده میکنیم که سه پارامتر دارد. اولین پارامتر یک نام برای مسیر ما است. پارامتر دوم مسیر مورد نظر ما میباشد که به صورت یک فرمت میباشد و میتوانیم چندین محل را در آن تعبیه کنیم و بعدا با پارامتر هایی این محل ها را پر کنیم. و در نهایت سومین مسیر آدرس فیزیکی مورد نظر ما است.
قدم دوم:
دومین قدم ایجاد یک لینک است از صفحه دوم به این صفحه که لینک به شکل زیر میشود.


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

protected void Page_Load(object sender, EventArgs e)
{
    string articleId = Page.RouteData.Values["ID"] as string;
}

 


تجارت دومین

 

مثل همه چیزهایی که تو این دنیای سرمایه داری گرفتاری سودائی به نام تجارت شده اند دومین ها هم از این قضیه مستثنی نبوده اند

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

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

در مورد دومین .ir وضعیت نسبتاً در شرایط بدتری قرار دارد چون دامنه های ایرانی با قیمت بسیار کم قابل ثبت و رزرو به مدت یک ماه می باشند ولی متاسفانه 99%(در صد ذکر شده مستند نیست) دومین های ایرانی که بدین صورت ثبت و منتظر یک مشتری گردن کلفت هستند بی استفاده مانده اند چون خریداران معمولاً شرکتها یا سازمانهای تجاری هستند که معمولاً مایل به استفاده از دامین های بین المللی می باشند یا از دامنه ویژه سازمانهای دولتی مانند gov.ir یا شرکتی مانند co.ir استفاده می کنند

با این حساب تقریبا هر کلمه ای که در فرهنگ لغات بتوانید پیدا کنید به عنوان دامنه ثبت شده و نسبتاً کار مشکلی پیش رو دارید.

 

متاسفانه با عنایت به مشکلات قانونی کشورمان در زمینه تجارت الکترونیک و عدم وجود متولی رسمی در زمینه رسیدگی به اختلافات بر سر مالکیت دومین بعضاً شاهد به اصطلاح سرقت دومین های توسط شرکت های ثبت کننده واسطه داخلی هستیم که این مورد به نوبه خود باعث عدم سرمایه گزاری و پیشرفت در بخش تجارت الکترونیک است مثلا ً سایتی مانند google.com را فرض کنید اگر دومینش در اختیار فرد دیگری قرار گیرد کل اعتبار و سرمایه اش از بین خواهد رفت.

 

آماری از گرانترین url های تاریخ را در ذیل ذکر می کنیم :

 

Insure.com:
اين نام دامنه كه در سال 2009 به مبلغ 16 ميليون دلار خريداري شد، بي‌شك بزرگ‌ترين فروش نام دامنه را داشته است. اين نام دامنه در ماه دسامبر 2001 ابتدا توسط Insure.com به مبلغ 1.6 ميليون دلار خريداري شده بود. يكي از كارهايي كه اين وب سايت انجام مي‌دهد فراهم كردن قيمت بيمه عمر، خودرو و سلامت است. 

Fund.com:
شركت اينترنتي سهامي عامي كه در عرضه خدمات مالي فعاليت مي‌كرد، در سال 2008 به مبلغ 9.99 ميليون پوند فروخته شد و اطلاعات در مورد گزينه‌هاي سرمايه‌گذاري وجه فراهم كرده، نظر كارشناسي داده و به كاربران امكان مي‌دهد سهام بگيرند. 

Business.com:
اين نام دامنه كه در سال 1999 به مبلغ 7.5 ميليون دلار خريداري شد، موتور جست‌وجوي كسب و كار و دايركتوري اينترنتي است كه در سال 1999 توسط جيك وين بوم، رييس هيات مديره پيشين گروه والت ديسني و اسكاي ديتون، بنيانگذار Earthlink بنيانگذاري شد و شركت business.com در سال 2007 به ناشر Yellow Pages به مبلغ 345 ميليون دلار فروخته شد. 

Diamond.com:
اين نام هم در سال 2006 به مبلغ 7.5 ميليون دلار خريداري شد كه در زمينه فروش جواهرات الماس فعاليت مي‌كند و توسط فروشنده جواهرات آنلاين ice.com خريداري شد. 

Casino.com:
اين نام به سايت شرط‌بندي آنلاين مربوط است كه در سال 2003 به مبلغ 5.5 ميليون دلار خريداري شد. 

Toys.com:
اين دامنه در سال ميلادي گذشته توسط ToysRUs در حراجي به مبلغ 5.1 ميليون دلار خريداري شد. در اين حراج پس از متوقف شدن پيشنهادهاي ديگر در مبلغ سه ميليون دلار، اين شركت اسباب‌بازي و دارنده دامنه‌هايي مانند free.com و divorce.com به پيشنهاد قيمت ادامه دادند تا در نهايت اين فروشنده برنده شد. 

به تازگي يك نام دامنه غيراخلاقي كه يكي از گران‌ترين نام‌هاي دامنه در تاريخ است، به حراجي گذاشته شده و پيشنهاد قيمت آن از يك ميليون دلار آغاز مي‌شود. اين نام دامنه در سال 2006 به مبلغ 14 ميليون دلار خريداري شده بود.

 

 


کامپوننت PDFWebViewer.NET

 

با این کامپوننت شما می تونید به صورت کاملاً بهینه فایلهای pdf رو تحت وب نمایش بدین بدون نیاز به اینکه پلوگین Acroabt Reader روی کامپیوتر کلاینت نصب باشه !

سایت سازنده : http://www.tallcomponents.com

 


تکنیک Refer

 

اسم این روش رو خودم انتخاب کردم و معنی و مفهوم آن این است که :

وقتی تو یه سایت کاربر می خواد وارد یه قسمت بشه که فقط کاربرای لوگین کرده می تونین به اون صفحه دسترسی داشته باشن شما به دستوری مثل response.redirect (login.aspx) کاربر رو به صفحه لوگین منتقل می کنید ولی بعد از اینکه کاربر لوگین کرد به صفحه قبلی بر می گرده ؟

برای اینکه این کار انجام بشه شما تو اون صفحه ای که نیازمند لوگین کردنه اسم صفحه رو هم با روش QueryString به صفحه login پاس می دین یعنی به جای دستور :

response.redirect("login.aspx");

دستور زیر رو می نویسید :

response.redirect("login.aspx?refer=order.aspx");

و تو صفحه لوگین چک می کنید که اگه متغییر refer پر باشه بعد از لوگین کردن به اون صفحه برگرده یعنی به شکل زیر :

                        if (Request.QueryString["refer"] != null)
                        {
                            Response.Redirect(Request.QueryString["refer"].ToString());
                        }
                        else
                        {
                            Response.Redirect("Default.aspx");
                        }

 


Janus چیست ؟

 

Janus نام یكی دیگر از Component هایی است كه به منظور استفاده‌ی راحتتر از قابلیت‌های دات نت برای برنامه نویسان تهیه و ساخته شده است.
این كامپوننت برای برنامه نویسی در حالت WinForm می‌باشد كه امكانات و توانایی‌های بسیار زیادی را در این حیطه به شما خواهد داد.
حتماً تا به حال با Office 2007 ماكروسافت كار كردید، یا حداقل محیط اون رو دیدید، این قضیه برای برنامه نویسان خیلی دوست داشتنی است كه بتونند، برنامه‌های ویندوز بیس خودشونو با Style آفیس 2007 ماكروسافت طراحی كنند.
این كامپوننت این امكان رو به سادگی برای شما فراهم می‌كنه، شما به وسیله‌ی Janus می‌تونید بدون دردسر، Application هایی با ظواهری بسیار زیبا داشته باشید. در ضمن اكثر ابزارهای این Component از Style های Office 2007 ، Office 2003 ، Office XP ، VS2005 پشتیبانی می‌كنه.

از دیگر ابزارهای این كامپوننت موارد زیر می‌باشد.

Janus GridEX for .NET
Janus Schedule for .NET
Janus ButtonBar for .NET
Janus ExplorerBar for .NET
Janus Timeline for .NET
Janus Ribbon Control
Janus UI Bars – Menus, ToolBars, Panels and Tab controls

موارد ذكر شده در بالا تمامی امكانات این كامپوننت ارزشمند نیستند، بلكه فقط تعدادی از ابزارهایی هستند كه منحصراً Janus بر روی آنها دقت و توجه خاصی داشته است، به قول معروف اونها رو Highlight كرده. این كامپوننت تقریباً اكثر كامپوننت‌های لازم را جهت طراحی یك Application تحت ویندوز خواهد داشت، مثل دكمه، دراپ‌دان منو، تكست باگس یا دیگر موارد دیگر. . .

Janus GridEX
همونطور كه ار اسمش پیداست، این ابزار امكانات یك Grid رو به شما خواهد داد با اضافه‌ی بسیاری دیگر از قابلیت‌های مورد نیاز در این مورد، در ضمن پشتیبانی از انواع Style ها و رنگبندی‌ها برای زیباتر شدن هرچه بیشتر Grid.

Janus ButtonBar
ButtonBar ابزاری است كه شبیه منوی Outlook ماكروسافت می‌باشد كه بیشتر در كناره‌های صفحه به كار می‌رود، بیشتر از این ابزار در برنامه‌هایی كه تعداد زیادی منو دارند استفاده می‌شود، به كمك این ابزار شما دسترسی كاربران را به تمامی نقاط نرم‌افزار خود به راحتی فراهم می‌آورید و همه چیز دمه دست كاربر خواهد بود.

Janus ExplorerBar
ExplorerBar نیز چیزی شبیه به ButtonBar است با این تفاوت كه از نظر شكل ظاهری كمی با ButtonBar فرق می‌كند و همچنین موارد كاربرد دیگری هم دارد

Janus Ribbon Control
این همان ریبون Office 2007 می‌باشد كه می‌تونید در شكل‌ها اون رو مشاهده كنید، یك Office 2007 بدون هیچ كمی و كاستی‌ای. با این ریبون برنامه‌ی شما كم نظیر خواهد شد.

Janus UI Bars
نیز مجموعه‌ای از منو، تول‌بار، پنل و تب كنترل است (Menus, ToolBars, Panels and Tab controls) كه تمامی این ابزارها با ساختاری زیبا و كاربردی آسان، برنامه نویسی را برای شما لذت بخش خواهند كرد.

اين كامپوننت بر روی VS2005 نصب و آزمايش گرديده و مشكلی نداشته است، براي اطلاع از ديگر جزئيات و اطلاعات كاملتر به سايت اين شركت مراجعه نماييد.

قابل توجه برنامه نويسان حرفه‌ای:
شما مي‌توانيد بدون نصب اين كامپوننت نيز، از آن استقاده نماييد. از طريق Register كردن فايل‌هاي DLL كه داخل بسته، به عنوان Patch معرفي شده است، با اضافه كردن دستی اين DLL ها داخل ToolBox ويژوآل استاديو، تمامي قابليت‌های اين كامپوننت رو خواهيد داشت.

 


بهينه سازي فايل هاي PDF

 

بررسي ها سبب شده است که بيشتر از گذشته به موفقيت فايل هاي Adobs PDF اذغان کنيم. يکي از مزيت هاي کلي اين نوع فايل ها اين است که تقريبا هر نوع داده اي را مي توان بدون نگراني از تغيير آن ها، درون اين فايل ها قرار داد. همچنين محتويات اين فايل ها توسط هر کسي که برنامه Acrobat Reader را داشته باشد، به راحتي قابل دسترسي است. اما استفاده از اين روش هميشه هم نمي تواند مشکل گشاي شما باشد، به طور مثال وقتي حجم اين نوع فايل ها بي اندازه زياد مي شود، ديگر استفاده و انتقال آن ها کار آساني نخواهد بود و اين امر وقتي دردسر سازتر مي شود که شما بايد فايل PDF خود را بدون از دست دادن کيفيت محتواي آن ها، به فرد مورد نظر يا رايانه مقصد انتقال دهيد. تا او بتواند به راحتي از فايل شما استفاده کند. ساخت فايل PDF با برنامه هاي گوناگوني ميسر است. بيشتر برنامه هاي نشر روميزي و برنامه هاي گرافيکي و برخي برنامه هاي پردازشگر متون، مي توانند اين نوع فايل را بسازند. اما اگر برنامه اي که هم اکنون از آن استفاده مي کنيد. به طور عادي قادر به ساخت آن ها نيست، مي توانيد با تهيه برنامه Acrobat Reader اين فايل ها را به راحتي بسازيد. با هر نرم افزاري که فايل PDF را مي سازيد، بايد به سه مورد اندازه فايل، کيفيت و قابليت فشرده سازي توجه کنيد تا بتوانيد بهترين PDF را بسازيد. در اين مقاله نه روش مختلف را براي بهينه سازي اين فايل ها به شما معرفي خواهيم کرد.

انتخاب يک Preset
اگر شما با مفاهيمي از قبيل، وضوح تصوير، تغيير حجم تصوير در هنگام تبديل نوع آن، و فشرده سازي آشنا باشيد. خواهيد توانست با انتخاب يک Preset مناسب در برنامه خود يک فايل بهينه ايجاد کنيد، مثلا برنامه Adobe In Desingn هفت خروجي Preset را از صفحه نمايش تا انتشار به شما معرفي مي کند.

انتخاب نوع خروجي PDF
يک مسئله مهم و حساس در اسناد عکس دار، تنظيم درست وضوح تصوير است که در کيفيت و حجم فايل PDF تاثير به سزايي دارد. شما بايد بدانيد که خروجي نهايي فايل PDF شما به چه صورت خواهد بود، آيا تنها قرار است که کاربر آن را در صفحه نمايش ببينيد يا بايد آن را چاپ کند. صفحات رايانه ها، اغلب تصاوير با وضوح 72dpi را خوب نشان مي دهند و اين وضوح حجم زيادي را نيز اشغال نمي کند. ولي در مقايسه با آن ها، چاپگرها خروجي اي برابر 300dpi يا بالاتر دارند. که اگر اسناد عکس دار خود را با همان وضوح 72dpi چاپ کنيم، تصاوير به صورت نقطه به نقطه و غيرشفاف چاپ خواهند شد. اگر هم وضوح تصوير را تا 300dpi بالا مي بريد، مقدار قابل توجهي به حجم فايل شما افزوده مي گردد. اگر فايل PDF شما براي استفاده در صفحه نمايش ساخته مي شود. قبل از آن که اقدام به پخش آن کنيد، بهتر است آن ها را چاپ و کيفيت آن ها را ارزيابي کنيد. اگر واقعا به کيفيت بالاي چاپ احتياج داريد، بهتر است که دو نسخه از يک PDF تهيه کنيد، يکي براي صفحه نمايش که حجم کمتري دارد و ديگري براي چاپ که حجم بيشتر و کيفيت بهتري دارد.

تنها يک بار فشرده کنيد!
فشرده کردن تصويرها در فايل هاي حاوي تصاوير، مي تواند کمک خوبي براي شما باشد تا اين که حجم فايل را کم کنيد. اين امکان وجود دارد که هر يک از خروجي هاي برنامه ساخت محتويات ( Content Cretion Program ) را فشرده کنيد يا بعدا داخل خود Acrobat آن ها را فشرده نماييد. اگر شما در دو مرحله تصويرتان را فشرده کنيد، با اين که ترفند خوبي براي کاستن حجم فايل به نظر مي رسد، ولي اين کار سبب مي شود فايل شما افت کيفيت قابل ملاحظه اي پيدا کند. بنابراين بهتر است فايل خود را تنها در توليد PDF نهايي فشرده کنيد. بهترين راه هم براي توليد فايل توليد فايل نهايي استفاده از ابزارهاي معمولي خود برنامه ساخت محتويات است که مي توان از آن استفاده کرد و يا خود Acrobat يا بدون فشرده سازي از برنامه ساخت محتويات PDF تان بگيريد و بعد در نهايت در Acrobat آن را فشرده کنيد.

استفاده از تصاوير خاکستري
استفاده از تصاوير طيف خاکستري به جاي تصاوير رنگي مي تواند تا 25 درصد از حجم فايل شما را کم کند.

استفاده از رنگ هاي RGB براي صفحه نمايش
اگر مطمئن هستيد که خروجي فايل شما تنها صفحه نمايش است، از رنگ هاي RGB استفاده کنيد. اين کار باعث مي شود برخلاف رنگ هاي CMYK . تقريبا 50 درصد از حجم فايل شما کاسته شود.

پيدا کردن عوامل افزايش حجم
Acrobats PDF Optimizer مي تواند براي شما يک « Space Audit » انجام دهد که در نهايت ليستي از تمام اجزاي سازنده فايلتان با مقدار حجم آن ها و درصد اشغال فضاي آن ها را روبه روي خود، خواهيد ديد. بنابراين مي توانيد اجزايي که فضاي بيشتري را اشغال کرده اند شناسايي کنيد. به بخش Advaced\PDF Optimizer برويد. روي کليد «Audit Space » کليک کنيد. براي اين که به صورت دستي فايل خود را کوچک کنيد، اينجا محل خوبي خواهد بود.

بهره گيري از فونت هاي رايج
در متون فايل هاي PDF ، غالبا از فونت هايي استفاده مي شود که مي توانند فضاي زيادي را اشغال کنند. شما مي توانيد آن ها را با فونت هاي مناسب عوض کنيد و به ازاي هر فونت 40 کيلوبايت از حجم فايل بکاهيد. اما اگر کامپيوتر مقصد فونت انتخابي شما را نداشته باشد، Acrobat از يک جايگزين براي آن استفاده خواهد کرد که علاوه بر اين که در مواردي نتيجه مطلوب نخواهد داشت، ممکن است باعث تغيير ناخواسته يا تحريف PDF شما نيز بشود. پيشنهاد مي شود از فونت هاي رايجي مثل Arial و Times Roman استفاده کنيد تا با خيال آسوده تري PDF خود را انتشار دهيد.

سازگاري را فراموش نکنيد
در Adobe ابزارهاي پيشرفته تري براي کم کردن حجم فايل ها وجود دارد که در هر نسخه از Adobe اين ابزارها بهينه تر شده اند و مي توانند مقدار بيشتري از حجم فايل را کم کنند، اما نکته قابل توجه اين است که کاربران PDF شما همواره بايد از آخرين نسخه هاي اين نرم افزار استفاده کنند تا بتوانند به آن مراجعه کنند، آماده کنيد. اگر با پيش فرض هاي خود برنامه Acrobat به ساخت فايل PDF اقدام کنيد، ممکن است در نهايت سندي براي شما ساخته شود که تمام کاربران نتوانند آن را بخوانند و در استفاده از بخشي آن دچار مشکل شوند.

فشرده سازي فايل هاي چند رسانه اي
اگر مي خواهيد فايل صوتي يا ويدئويي را درون فايل PDF جاگذاري کنيد، لازم است آن ها را با بيشترين حالت فشرده سازي قابل انجام (در حالت Streaming ) کوچک کنيد. اين کار با نرم افزارهايي مثل Quick Time يا Microsoft Windows Media قابل انجام است. در فايل هاي صوتي سخنراني مي توانيد سرعت رمزگذاري را تا 84Kbps پايين بياوريد و افت کيفيت قابل ملاحظه اي را هم احساس نکنيد. البته اين کار باعث کاهش زياد حجم فايل صوتي خواهد شد. در حالي که فايل هاي موسيقي حداقل به سرعت 69Kbps براي داشتن کمترين کيفيت نياز دارند. فايل هاي ويدئويي نيز با سرعت 300 تا 400Kbps رمزنگاري مي شوند که در اين حالت شما وضوح 320x240 را خواهيد داشت. اما کم تر از 200Kbps کيفيت تصوير افت قابل ملاحظه اي خواهد داشت. با اين که شما با اين روش ها مي توانيد از مقدار حجم اين فايل ها بکاهيد، در نهايت با اضافه کردن آن ها به فايل PDF ، باعث افزايش زياد حجم آن خواهيد شد. استفاده از روش هاي ارائه شده، شما را به سمتي هدايت خواهد کرد که بتوانيد در نهايت يک فايل PDF خوب و با کيفيت و در حجمي کم به کاربر خود انتقال دهيد که در هنگام استفاده از اين فايل ها با هيچ مشکلي مواجه نشود.

 


طرح ريزي و برپايي يک سايت

 

مقدمه :

براي کسب نتايج بهتر در پياده سازي صفحات و سايت هاي وب بايد قبل از ايجاد  هر صفحه بايد اقدام به طرح ريزي و برنامه ريزي در  آن نمود . « سايت وب » مجموعه اي  از اسناد لينک شده به يکديگر با  ويژگي هاي مشترک ، همانند موضوعات مرتبط ، طرح  يا هدف مشترکاست. قبل از شروع به فکر کردن در خصوص ايجاد يک سايت وب ، براي اطمينان از موفقيت آميز عمل کردن سايت بايد با ساتفاده از برنامه ريزي حساب شده و معيني شروع به کار کنيد . حتي اگر سايت شما شامل يک يا چند صفحه ساده است که تنها برخي از دوستان و آشنايانتان از آن بازديد مي کنند، عمل طرح ريزي به شما اطمينان مي دهد که هر کسي قادر خواهد بود بدون مشکل به آن دسترسي داشته باشد .

1- تعييين اهداف

تصميم گيري در خصوص اهداف سايت اولين مرحله اي است که بايد مد نظر قرار گيرد. از خودتان سوال کنيد که با داشتن اين سايت وب چه اتفاقي مي افتد، اهداف خود را يادداشت کنيد بطوريکه آنها را در سراسر مراحل طراحي به ياد داشته باشيد و به آنها توجه کنيد. درواقع داشتن درک درستي از اهداف به شما کمک مي کند تا بر روي سايت وب تان متمرکز شده و آن را براي نياز هاي خاص مسير دهي کنيد.

مسلماً نماي سايت وبي که اخبار و اطلاعاتي را در موضوع مشخصي مطرح مي کند با نماي سايتي که به مبحث خريد و فروشOnline در اينترنت اختصاص دارد متفاوت است .اهداف پيچيده تر در مسير يابي، ابزار ايجاد کننده اي که بکار مي گيريد ( بکارگيريFlash,Director و مشابه آنها ) و حتي نما و حس سايت ، همه و همه در طراحي موثر مي باشند .

2- انتخاب تنوع بازديد کنندگان

بعد از تعيين اهداف ، بايد در خصوص گروه بازديد کنندگان سايت  تصميم گيري نمائيد. از آنجا که طراحان صفحات و سايت هاي وب يا اداره کنندگان چنين سايت هايي مايلند تا تمام مردم از سايت آنها ديدن کنند ، شايد طرح اين مسئله کمي عجيب به نظر برسد .اما با توجه به اينکه مردم در  سراسر کره زمين از مرورگرهاي مختلفي در سيستم شان استفاده مي کنند و حتي با داشتن يک مرورگر مشابه ممکن است از نسخه هاي مختلف آن بهره ببرند ،  با سرعت هاي مختلفي به اينترنت دسترسي داشته باشند ، يا سيستم صوتي و تصويري مناسبي در سيستم شان نصب نشده باشد، توجه به اين موارد در طراحي سايت بسيار مهم است  و بايد تمامي فاکتور هاي فوق الذکر را در آن مد نظر قرار داد و به همين دليل بايد اهداف بازديد کنندگان تان را تعيين نمائيد.

درباره افرادي که جذب سايت خواهند شد  يا افرادي که بطور اتفاقي به آن علاقه مند مي شوند و همچنين نوع سيستم کامپيوتري آنها فکر کنيد . اينکه از چه سيستم عاملي اســتفاده مي کننــــــد ؟ ( ويندوز ، مکينتاش، لينوکس  يا ....)  سرعت ارتباطي آنها در اينترنت چقدر است ؟ چه نوع مرورگري دارند  يا حتي ابعاد مانيتور آنها چيست و از چه بزرگنمائي در تنظيم کارت گرافيک شان استفاده مي کنند ؟

آيا سايت شما در يک شبکه اينترانت داخلي مورد استفاده قرار مي گيرد که تماس کاربران از سيستم مرورگر مشابهي استفاده مي کنند. تمامي اين فاکتورها براي مشاهده صفحات وب شما مفيد و توجه به آنها حائز اهميت است.

3- ايجاد سايتهاي سازگار با مرورگرها

هنگاميکه سايت را ايجاد مي کنيد بايد از انواع مرورگرها که به طور معمول بازديد کنندگان از آن استفاده مي کنند اطلاع و آگاهي داشته باشيد. حتي اگر تنها مرورگرهايIE ياNS بعنوان هدف و مقصد شما است، کداميک بوسيله اکثريت کاربران استفاده مي شود و اينکه آيا کسي از نسخه هاي قديمي تر اين مرورگرها استفاده مي کند يا خير؟

اگر سايت تان در وب قرار دارد ممکن است بزودي و در آينده نزديک از طريق مرورگرهاي جديدي مورد بازديد قرار گيرد يا حتي بوسيله مرورگرهاي قديمي يا متني همانند مرورگرlynx .

در بيشتر شرايط، براي سايت هاي وبي که بعنوان يک محل عمومي طراحي شده اند، قابل مشاهده بودن سايت در اغلب مرورگرها يک هدف بسيار مناسب است. هر چند ايجاد چنين سازگاري بسيار مشکل و پيچيده است ولي شما مي توانيد يک يا دو مرورگر را بعنوان مرورگر کاري خود انتخاب کرده و سايت را براي آن دو مرورگر طراحي کنيد. سپس سعي کنيد تا سايت تکميل شده را با ديگر مرورگرها نيز مشاهده کنيد تا مفاهيم ناهماهنگ در سايت را يافته و حتي الامکان از بکار بردن آنها اجتناب کنيد.

همچنين مي توانيد پيغامهايي را براي چند تن از دوستانتان ارسال کرده و از آنها درخواست کنيد تا از سايت شما بازديد کنند و نتيجه آن را به شما اعلام نمايند . اين امر روش مناسبي براي بازخورد از يکسري بازديد کنندگان مي باشد.

تمام مرورگرها نمي توانند جاوا اسکريپت ها را اجرا کنند . براي مثال يک صفحه متني که از هيچ کارکتر خاصي استفاده نمي کند بطور قطع در تمامي مرورگرها قابل مشاهده است. اما چنين صفحاتي بالطبع جاذبه کمتري خواهد داشت، همانند طرح بندي ، گرافيک ها يا آثار فعل و انفعال.

در طراحي سايت بهتر است سعي خود را برآن بگذاريد که بين طراحي افکت ها و حداقل توانايي مرورگرها برابري برقرار کنيد. يک روش مفيد نيز ايجاد چندين نسخه از صفحات مهم همانند صفحه اصلي سايت است که هريک با مرورگر خاصي عمل مي کنند. براي مثال از آنجا که فريم ها يکي از عناصري هستند که برخي مرورگرها آنها را نشان نمي دهند، مي توانيد از يک صفحه هم نسخه اي داراي فريم و هم نسخه اي بدون فريم را ايجاد کنيد سپس در صفحه وب عملکردي را قرار دهيد که بطور اتوماتيک بازديد کنندگان عادي را به صفحه داراي فريم و ساير بازديد کنندگان را که قادر به مشاهده فريم نيستند را به صفحه مطابق با نسخه بدون فريم مرورگر ارجاع دهد.

4- سازماندهي ساختار سايت

سازماندهي دقيق سايت زمان عمل را براي شما حفظ مي کند. اگر اسنادتان را بدون فکر در خصوص طبقه بندي پوشه هايتان قرار دهيد ، احتمالاً در پايان با يک پوشه بزرگ نامرتب پر از فايل مواجه خواهيد شد يا با فايلهاي پراکنده در پوشه هايي با نام هاي مشابه.

روش معمول ايجاد يک پوشه در هارد ديسک است که تمامي فايلها و پوشه هاي مربوط به سايت را در خود جاي داده (پوشه سايت محلي) و ويرايش يا ايجاد اسناد جديد در داخل آن پوشه مي باشد.

در مرحله بعد و هنگاميکه آماده انتشار سايت شده ايد نيز فايلها را به يک سرور کپي خواهيد کرد تا به عموم افراد اجازه مشاهده آن را بدهيد.

دراين روش مي توانيد تغييرات سايت محلي را قبل از دسترس قرار دادن عموم آزمايش کرده و سپس هنگاميکه کليه مراحل را به پايان رسانيد ، فايلهاي محلي را به سرور منتقل کرده وتمام سايت عمومي را در يک زمان بروزآوري کنيد.

 5- طبقه بندي و خرد کردن سايت در داخل گروهها و دسته ها

 سعي کنيد تا صفحات مرتبط را دريک پوشه قرار دهيد . براي مثال اطلاعات رسمي شرکت را دريک پوشه و تصاوير و عناصر وابسته را در پوشه ديگر قرار دهيد . و در مواقع ضروري نيز  از زير پوشه ها استفاده کنيد.

اين نوع سازماندهي به شما کمک مي کند تا به آساني سايت را مديريت کنيد و در آن به جستجو بپردازيد.

در اين حالت مي توانيد با قرار دادن تمامي تصاوير در يک موقعيت مناسب عمل کنيد بطوريکه پس از وارد کردن يک تصوير به داخل صفحه، بدانيد که در کجا به آن دسترسي پيدا خواهيد کرد.

مي توانيد پوشه اي با نام Assets را در سايت ايجاد کنيد و تمامي آيتم ها و عناصر سايت را که html نيستند درآن پوشه ها ويا زير پوشه ها ي آن قرار دهيد.( همانند پوشه Images براي تصاوير، پوشه sounds براي فايلهاي صوتي، پوشه Photos براي عکس ها و ....)

6- ايجاد نماي طراحي
اگر قبل از اجراي عملي طرح بندي و صفحه بندي سايت اقدام به طرح ريزي کنيد مي توانيد در زمان و وقت خود صرفه جويي نماييد . ساده ترين روش پياده سازي طرح سايت مورد نظر بر روي کاغذ است. و يا در روش حرفه اي تر استفاده از برنامه ها يي همچون فري هند و يا فايرورکز مي باشد.
داشتن هماهنگي و انسجام در طراحي و طرح بندي نيز حائز اهميت است به عبارتي ديگر بازديد کنندگان و کاربران بايد بتوانند بدون گيج شدن در سراسر سايت مفاهيم را بخوبي کليک کنند و استفاده لازم را از برنامه ببرند و براحتي بدانند که در کجاي سايت شما قرار دارند.

7- طراحي الگوي مرور و جستجو
محيط ديگري که به طرح بندي شما نتيجه مطلوبي مي دهد محيط مرور است . هنگام طراحي سايت به تجربه بازديد کنندگان سايت فکر کنيد . يک بازديد کننده چگونه مي تواند از صفحه اي به صفحه ديگر باز گردد. توانايي مرور و راهنماي موضوعي مي تواند به آنها در يافتن موضوعات و مطالبي که به دنبال آن هستند کمک شاياني نمايند.
امکان مرور بايد در سراسر سايت در دسترس قرار داشته باشد و سعي کنيد تا يک نوار مرور را در قسمت بالايي تمامي صفحات تان حفظ کنيد.

8- طرح ريزي و گرد آوري متعلقات:
هر زمان که دريافتيد طرح بندي و صفحه بنديتان چگونه بايد باشد مي توانيد اقدام به جمع آوري و گرد آوري متعلقات مورد نيازتان کنيد (عکس ها، تصاوير ، صداها، و متون ويا.....) و درسايت اين متعلقات را به نحو سازماندهي کنيد که به آساني به آنها دسترسي داشته باشيد.
با به کارگيري الگوها و عناصر کتابخانه اي به آساني امکان استفاده مجدد از طرح هاي صفحه و عناصر صفحه وجود دارد و در واقع اعمال الگوها و عناصر کتابخانه اي موجود بسيار آسان تر از ايجاد صفحات جديد مي باشد.
1- الگوها يا Templates :
هنگامي که قصد ايجاد صفحاتي با طرح بندي يکسان داريد مي توانيد يک الگوي پايه اي را براي طرح ريزي ايجاد نماييد. و درصورتي که پس ازاتمام طراحي ها نياز داشته باشيد تا تغييري در تمامي صفحات ايجاد کنيد کافي است تا به آساني و فقط فايل الگوي اصلي را تغيير دهيد تا تغييرات به تمامي صفحات اعمال شود.
البته ايجاد تغييرات در الگوها داراي محدوديتهايي نيز مي باشد. الگوها بيشتر در محيطهاي گروهي و چند کاربره مورد استفاده قرار مي گيرند تا مطمئن شويد که هر شخصي از يک محيط صفحه و طرح بندي استفاده مي کند. در خارج از محيط هاي گروهي بکارگيري آيتم هاي کتابخانه اي انعطاف پذيري بيشتري دارد.
2- آيتم هاي کتابخانه اي يا Library Items :
اگر فکر مي کنيد که يک آيتم همچون يک فايل تصويري در صفحات زيادي از سايت شما مورد استفاده قرار مي گيرد مي توانيد از آيتم هاي کتابخانه اي استفاده کنيد .
مفهوم مورد نظرتان را يکبار طراحي کرده و سپس آن را بعنوان يک آيتم کتابخانه اي تعريف نماييد.
سپس اگر آن آيتم را بعدها تغيير دهيد تمامي نسخه هاي مربوط به آن آيتم که در سايت مورد استفاده قرار گرفته اند بروز آوري مي شوند.

منبع : تبیان

 


چرا به دات نت احتياج داريم؟

 

به طور معمول نسل های جديد زبان های برنامه نويسی به اين دليل متولد می شوند که زبان های قديمی تر دارای امکانات محدود بودند و يا قدرت استفاده از تکنولوژی های فعلی را به صورت مطلوب و ساده ندارند.

مهمترين نيازی که به عنوان آخرين تکنولوژی وجود دارد، برنامه نويسی در محيط اينترنت است. اينترنت در مدت تقريبا ۸ سال جای خود را به عنوان يکی از مهمترين وسايل ارتباطی برای کارهای روزمره و تجارت باز کرده است. سيستم های برنامه نويسی قديمی تر امکان برنامه نويسی برای اينترنت را فراهم کرده بودند اما هر کدام دارای اشکالات بزرگی هستند، برای مثال تکنولوژی COM اولين بار در ويندوز به کار گرفته شد. در سال ۱۹۷۰ نيز سيستم هايی برای Unix نوشته شده بودند، جاوا نيز در اصل برای ابزارهای الکترونيکی بود و نه برای اينترنت.

سپس برای اولين بار يک سيستم جامع برای برنامه نويسی تحت اينترنت ايجاد شد. اين سيستم -NET. از مراحل سطح پايين که به زبان ماشين می باشد تا بالاترين سطح که برنامه نويسی ويژوال آن می باشد برای استفاده در اينترنت طراحی شده است. البتهNET. فقط برای اينترنت نيست و با استفاده از آن می توان برنامه های کامل تحت Client نيز ايجاد کرد، اما بزرگترين مزيت آن دربرابر سيستم های ديگر امکانات اينترنت آن است.

برای اينکه مزايای استفاده ازNET. را بهتر متوجه بشويم بهتر است در ابتدا معايب سيستم های پيشين را ذکر کنيم. شرکت مايکروسافت تا قبل از سال ۱۹۹۵ به برنامه نويسی در محيط های Client و Server می پرداخت، اما از آن سال به بعد توجه بيشتری به مساله برنامه نويسی در اينترنت کرد. مايکروسافت COM و +COM را ايجاد کرد و آنها را در ويژوال استوديوی ۶ به کار گرفت. در سال ۱۹۹۹ حدود ۵۰ در صد از بزرگترين سايتهای تجارت الکترونيکی از محصولات مايکروسافت استفاده می کردند. اما هنوز هم مشکلات بزرگی در سيستم های مايکروسافت وجود داشت که يکی از آنها دشواری نوشتن برنامه در اينترنت با محصولات مايکروسافت بود. شرکت مايکروسافت برای راحتی کار برنامه نويس ها ASP يا Active Server Page را ايجاد کرد. با اينکه اين يک قدم بزرگ بود و کارها را بسيار ساده کرد ولی هنوز از برنامه نويسی شی گرا پشتيبانی نمی کرد. همچنين در ويژوال استوديوی ۶ قسمتی برای Internet Application ايجاد شده بود و در آنها امکان ساختن Web Class وجود داشت ولی هيچ وقت به عنوان يک ابزار کار آمد برای برنامه نويسی وب درنظر گرفته نشد.

مدل برنامه نويسی DNA
مايکروسافت يک مدل برنامه نويسی به نام Distributed interNet Application دارد که بر پايه برنامه نويسی n-tier و COM بنا نهاده شده است. مدل DNA از سه بخش اساسی تشکيل شده است.

بخش اول به نام Presentation tire معروف است. در اين بخش رابط تصويری کاربر وجود دارد و خود نيز به دو نوع Internet Browser و Win 32 GUI تقسيم می شود که هر کدام مشکلات خاص خود را دارند. در مدلی که از Win32 GUI يا همان نرم افزارهای معمولی استفاده می شود دو مشکل بزرگ وجود دارد ؛ دشواری بروز رسانی نرم افزار و ديگری DLL Hell که در ادامه توضيح داده خواهد شد. در نوع دوم مشکلاتی از قبيل نبود امکانات برنامه نويسی کافی در محيط مرورگر، نبود رابط قوی با کاربر، نبودن مرورگر های يکسان و… وجود دارد. همچنين هميشه يک اتصال به اينترنت يا اينترانت لازم است. در اين نوع از برنامه نويسی می توان از Java Applet ها يا ActiveX استفاده کرد ولی مرورگر بايد امکان استفاده از آن را داشته باشد، مخصوصا ً هنگام استفاده از ActiveX که بايد فقط از IE استفاده کرد.

بخش دوم که Middle tier نام دارد، مکانی است که اطلاعات و قوانين تجاری در آن وجود دارد. منظور از قوانين ، متد ها و اجزائی هستند که اعمال کاربران را کنترل می کنند. مهمترين و آسان ترين زبان برای نوشتن اين اجزا از DNA ويژوال بيسيک است. برنامه نويسی که بخواهد در اين رده برنامه بنويسد بايد آشنايی کاملی با COM و پروتکل های رايج داشته، همچنين بايد مهارت کافی در استفاده از ADO و ADSI داشته باشد. مشخص است که يک اشتباه در اين لايه باعث بروز خطا و نقص در کل سيستم می شود.

بخش سوم يا Data tier مکانی است که اطلاعات سازمان در آن ذخيره می شود. معمولا ً در اين قسمت از بانکهای پيشرفته رابطه ای مانند SQL Server و Oracle استفاده می کنند.

محدوديت های COM
همانطور که ديديد مهمترين قسمت در DNA همان COM است که در جای جای آن استفاده می شود. در اينجا برخی معايب COM ذکر می شود : ( در ابتدای متن ذکر شد که برای درک نياز بهNET. بايد ابتدا معايب سيستم های قديمی را بشناسيم )

DLL Hell: اگر کوچکترين تغييری در يک COM ايجاد شود، ديگر برنامه هايی که از ورژن قبلی استفاده می کردند قادر به فعال ساختن نسخه جديد نيستند. هنگامی که در ويندوز، يک COM نصب شود برايش در رجيستری يک GUID ثبت می شود که اطلاعات آن COM را در خود ذخيره می کند. اگر يک برنامه از نسخه اول يک COM استفاده کند و بعد از مدتی شما تغييراتی در نسخه اول بدهيد و بخواهيد آن را دوباره در سيستم نصب کنيد ويندوز به شما پيغام خطا می دهد چون ورژن آن تکراری است، اگر هم آن را به ورژن دوم ارتقا دهيد نرم افزار قبلی هنوز به دنبال نسخه اول می گردد. اين امر باعث می شود که شما مجبور شويد يکبار ديگر کل برنامه را کامپايل کرده و در کامپيوترتان نصب کنيد.

کمبود در وراثت: در نسخه های COM که در حال حاضرهستند چيزی به نام وراثتی که در ++C وجود دارد نمی باشد، بلکه وراثت تنها در واسط يک COM می باشد، استفاده از آن هم چندان کمکی به برنامه نويسی نمی کند.

برخی محدوديت های برنامه نويسی اينترنتی در مدل DNA

۱- وجود دو محيط برنامه نويسی برای اينترنت و Client
نقصان در نوشتن برنامه هايی با رابط گرافيکی خوب که در اينترنت کار می کردند کاملا ً مشهود است، نمونه بارز آن اختلاف در برنامه نويسی در ويژوال بيسيک و ASP است. ويژوال بيسيک با رابط گرافيکی کاملا ً سطح بالا و ASP تقريبا ً رابط گرافيکی ندارد. همين امر باعث می شد که يک برنامه نويس مجبور باشد طيف وسيعی از تکنيک ها و زبان ها را فرابگيرد تا بتواند برنامه ساده ای در اينترنت بنويسد.

۲- نبودن حالت های ذخيره اطلاعات رابط گرافيکی در صفحه های اينترنتی
نمونه اين حالت زمانی است که در يک textbox متنی وجود داشته باشد. در برنامه های Win32 GUI متن داخل textbox تا زمانی که کاربر يا برنامه آن را تغيير نداده بر جای خود وجود دارد. اما در محيط اينترنت و نوع ASP با هر بار refresh کردن صفحه کل اطلاعات ازبين می رود. البته اين مشکل با استفاده از شئ های Request و Response تقريبا ً قابل حل است ولی احتياج به برنامه نويسی برای هر تکه از صفحه ASP دارد.

۳- نداشتن Event Handler در محيط برنامه نويسی اينترنت
يکی از مهمترين ابزاری که در برنامه نويسی Win32 GUI وجود دارد استفاده از Event ها است. با تکنولوژی که در حال حاضر وجود دارد تنها راه رسيدن به اين مهم استفاده از ActiveX است که به علت مسايل امنيتی در بيش از ۹۵ در صد مواقع توسط کاربر استفاده از آن رد می شود.

معايب استفاده از API
API ها توابعی هستند که از ويندوز نسخه ۱ تا امروز در برنامه نويسی کاربرد داشته و دارند. مهمترين کاری که اين توابع انجام می دهند انجام کارهای سخت و سطح پايين سيستمی است که احتياج به برنامه نويسی زيادی دارند و يا حتی امکان ايجاد آن با زبان هايی مثل ويژوال بيسيک نيست. اما هر API از هر نسخه ويندوز تا نسخه ديگر آن می تواند دچار تغييرات بشود. برای مثال برنامه ای که در ويندوز ۹۸ نوشته شده باشد می تواند در ويندوز ۹۵ اجرا نشود. همچنين هم اکنون ابزارهای جديدی به بازار آمده است که برای آنها نيز می توان برنامه نويسی کرد، مانند تلفن های سيار، کيوسک تلفن، دستگاه های کامپيوتری جيبی و غيره. در اين نوع دستگاه ها ديگر ويندوز به مفهومی که در حال حاضر وجود دارد قابل اجرا نيست و در نتيجه API هم وجود ندارد. لازم به ذکر است که ويندوز CE برای دستگاه های مذکور می باشد ولی قابليت های آن با ويندوزهای ديگر تفاوت زيادی دارد.

خلاصه از کتاب Professional VB.NET از Wrox

 


پیاده سازی “من را بخاطر بسپار” در ASP.NET

 

اکثر وب سایت ها هنگام ورود کاربران یا همان Login کردن، برای راحتی کاربر قابلیتی دارند به نام “Remember me” یا “من را بخاطر بسپار” که با تیک زدن آن کاربر از آن به بعد می تواند بدون اینکه نام کاربری یا رمز عبور خود را وارد کند، از امکانات سایت استفاده کند. نمونه این قابلیت را حتماً هنگام وارد شدن در جی میل دیده اید. در این مطلب کوتاه آموزشی می خواهیم چنین قابلیتی برای یک وب سایت مبتنی بر ASP.NET پیاده سازی کنیم.
ابتدا باید بدانید که این قابلیت توسط کوکی ها پیاده سازی می شوند. Cookie یک فایل فایل متنی کوچک است که توسط مرورگر به درخواست یک صفحه وب ساخته می شود و برای استفاده های بعدی خوانده می شود. از آنجا که اطلاعات یک کوکی در هارد دیسک کاربر ذخیره می شوند، شما نباید اطلاعات حساس مانند رمزعبور کاربر را در آن نگهداری کنید. ASP.NET برای استفاده از کوکی ها کلاس هایی در نظر گرفته است. شما باید برای استفاده از کوکی ها ابتدا فضای نام System.Net را using کنید. در این مثال فرض می کنیم که شما با مباحث پایه ای ASP.NET آشنایی دارید.
صفحه لاگین خود را باز کنید و یک کنترل CheckBox به آن اضافه کنید و نام آن را به chkRemember تغییر دهید. در روال لاگین خود یعنی وقتی که کاربر درخواست ورود به سایت را می فرستد (مثلاً روی دکمه Login کلیک می کند) کدهای زیر را قرار دهید.

if (chkRemember.Checked)
{
HttpCookie cookie = new HttpCookie(“YourAppLogin”);
cookie.Values.Add(“username”, txtUsername.Text);
cookie.Expires = DateTime.Now.AddDays(15);
Response.Cookies.Add(cookie);
}

کد بالا ابتدا چک می کند که آیا چک باکس توسط کاربر تیک خورده است یا خیر. اگر تیک خورده یعنی اینکه کاربر می خواهد وب سایت شما او را بخاطر بسپارد. سپس cookie را از کلاس HttpCookie نمونه سازی می کنیم و نام آن را YourAppLogin می گذاریم که در اینجا شما باید نام اپلیکیشن خود را به جای آن بگذارید (یا هر نام دلخواه دیگری) سپس Username کاربر را در این کوکی ذخیره می کنیم. txtUsername را به نام کامپوننتی که Username را از کاربر می گیرد تغییر دهید. در اینجا شما می توانید مقادیر دیگری را به همین شکل به کوکی اضافه کنید، به طور مثال ID کاربر را نیز برای هدف خاصی ذخیره کنید. در خط بعدی با Expires به مرورگر می گوئیم که پس از 15 روز این کوکی را به صورت خودکار حذف کند. این زمان را می توانید با تغییر عدد 15 عوض کنید. در خط آخر نیز باید این کوکی را به مجموعه کوکی های مرورگر اضافه کنیم.

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

if (Request.Cookies["YourApLogin"] != null)
{
string username = Request.Cookies["YourAppLogin"].Values["username"]);
}

استفاده از کدهای بالا در صورتی است که شما Login را به صورت دستی کدنویسی کرده باشید. کسانی که از روش Forms Authentication و قابلیت Membership در ASP.NET استفاده می کنند به راحتی با یک خط کد زیر می توانند از این  قابلیت استفاده کنند :

FormsAuthentication.SetAuthCookie(txtUsername.Text, chkRemember.Checked);

 


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

 

برای تعیین زبان فارسی به عنوان پیش فرض در فرم ها در صورتی که زبان فارسی بر روی سیستم عامل نصب باشد کافی است در form load از کد زیر استفاده نماییم

private void Form1_Load(object sender, EventArgs e)
{
foreach (InputLanguage lng in InputLanguage.InstalledInputLanguages)
{
if (lng.LayoutName.ToLower() == "farsi")
{
InputLanguage.CurrentInputLanguage = lng;
}
}
}

 


صفحات مجازی در asp.net

 

 فرض کنیم کسی در سایت شما ثبت نام کرد. نام کاربری ان test  میابشد   شما میخواهید برای ان یک صفحه داشته باشید . مانند test.aspx این صفحه واقعا وجود ندارد ولی زمانی که این کاربر این صفحه را درخواست میکند این url  ساخته بشه و مثلا مشخصات ان را نمایش بدهد. اگر منظور مشا این است که با یک روش ساده انجام میشود ولی اگر چیز دیگری است لطفا کامل توضیح بدهید

برای این کار در فایل global.asax یک تابع وجود دارد





void Application_BeginRequest(object sender, EventArgs e)
{
{

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





String PathRequset = this.Request.Path.ToLower();

        if (PathRequset.IndexOf("test.aspx") != -1)
        {
           
            String Path = "userprofile.aspx?username=test";
            this.Context.RewritePath(Path);

        }

 


خروجی دیتابیس به XML

 

در اين مقاله سعی دارم که نحوه نوشتن در XML و خواندن از آن را شرح دهم. برای مثال ما يك وبلاگ داريم که اطلاعات را از بانک اطلاعاتی Access می خواند. ولی من برای اينکه همين اطلاعات را در يک فايل XML هم داشته باشم اين کد را به Load صفحه اضافه کردم:

Dim DS As New DataSet()
Dim strConnect As New OleDbConnection(ConfigurationSettings.AppSettings(“datasource”))
Dim objSQLAdapter As New OleDbDataAdapter(“SELECT * from blog order by id DESC”, strConnect)
objSQLAdapter.Fill(DS, “blog”)
Dim doc As XmlDataDocument = New XmlDataDocument(DS)
Dim writer As XmlTextWriter = New XmlTextWriter(“D:\www\weblog\weblog.xml”, Nothnig)
writer.Formatting = Formatting.Indented
doc.Save(writer)

در اين کد با استفاده از شئ DataSet، اطلاعات را از جدول مورد نظر بانک اطلاعاتی خود می خوانيم و آن را در يک فايل XML به نام weblog.xml ذخيره می کنيم. اگر اين کد را اجرا کنيم يک فايل XML ايجاد می شود و هر وقت صفحه اول اجرا شود فايل XML رونويسی می شود.

اما حالا يک فايل XML داريم و می خواهيم از آن استفاده کنيم. مخصوصا استفاده از XML برای سايت های خبری يا وبلاگ ها بسيار مناسب است. مثلا فرض کنيد که می خواهيم خبرهای موجود در يک سايت ديگر که به شکل XML ارائه می شوند (مانند RSS) را در سايت خودمان نمايش دهيم. برای اين کار ابتدا يک فايل ASPX ايجاد کنيد و اين کد را در قسمت Design يا همان HTML آن بنويسيد.



تاريخ :<%# DataBinder.Eval(Container.DataItem, “news_date”) %>

عنوان : <%# DataBinder.Eval(Container.DataItem, news_title”) %>


<%# DataBinder.Eval(Container.DataItem, “news_body”) %>




ما در اينجا يک کنترل DataList ايجاد کرديم و مقادير مورد نظر را در آن نوشتيم. حالا کدی که در Load اين صفحه بايد بنويسيم به اين شکل خواهد بود:

Dim ds As New DataSet()
ds.ReadXml(“d:\www\weblog\weblog.xml”, XmlReadMode.Auto)
theDataList.DataSource = ds
theDataList.DataBind()

اگر اين صفحه را اجرا کنيد تمام فيلدهای XML در اين فايل ASP.NET نمايش داده خواهد شد. در مثال بالا از يک فايل XML موجود بر روی ديسک استفاده شده است حال آنکه می توانيم بجای اين آدرس محلی از يک آدرس موجود در وب که همان آدرس سايت مورد نظر است استفاده کنيم. مثلا اگر بخواهيد اخبار سايت مورد نظر را در سايت خود نمايش دهيد کافی است اينگونه عمل کنيد: :

Dim ds As New DataSet()
ds.ReadXml(“http://www.website.com/weblog.xml”,XmlReadMode.Auto)
theDataList.DataSource = ds
theDataList.DataBind

منبع : aspcode.ir

 


مديريت وضعيت در صفحات وب ( State Management )

 

مديريت وضعيت صفحات در فرم های وب ( State Management )

فرم های وب و فريمورک ASP.NET از طريق پروتکل Http با يکديگر مبادله اطلاعاتی دارند( مرورگر و سرويس دهنده وب ) . Http يک پروتکل stateless است . صفحات وب زمانيکه از سرويس گيرنده درخواستی برای آنان نزد سرويس دهنده واصل گردد ،مجددا" ايجاد خواهند شد. اين بدان معنی است که تمامی اطلاعات مرتبط با صفحه و کنترل های مربوطه بر روی صفحه گم ( حذف ) می شوند. مثلا" اگر کاربری اطلاعاتی را در يک TextBox درج کرده باشد ، اطلاعات درج شده پس از ارسال صفحه از طريق مرورگر به سرويس دهنده حذف خواهند شد. برای غلبه بر اين نوع از مشکلات ،ASP.NET راهکارهای متفاوتی در اين زمينه را ارائه نموده است. راهکارهای ارائه شده به دو گروه عمده تقسيم می گردنند:
● Client-Based state management
● Server-Based state management
در ادامه به تشريح امکانات ارائه شده در هر يک از گروه های فوق خواهيم پرداخت .

گزينه های Client-Based

در اين بخش به بررسی امکاناتی پرداخته می شود که بکمک آنها می توان اطلاعات مورد نظر را بر روی صفحه و يا بر روی کامپيوتر سرويس گيرنده ذخيره نمود.
● View State . يک ديکشنری از اشياء مورد نظر برای ذخيره و بازيابی اطلاعات مورد نياز جهت استفاده در فرم های وب است . زمانيکه صفحه پردازش می گردد ،وضعيت جاری صفحه بهمراه کنترل های مربوطه در يک رشته ذخيره و بعنوان يک فيلد مخفی در صفحه نگهداری می شوند. زمانيکه صفحه مجددا" برای سرويس دهنده ارسال می گردد در ابتدا رشته فوق بررسی و مقادير ذخيره شده در آن استخراج و اطلاعات مربوطه در صفحه مجددا" بازيابی خواهند شد. هر يک از کنترل های موجود بر روی يک فرم وب ( خود صفحه را هم شامل می شود) شامل يک صفت Viewstate بوده که از کلاس پايه ای Control برای آنها به ارث رسيده است. Viewstate در فريمورک ASP.NET بمنظور ذخيره خودکار مقادير مربوط به صفحه و کنترل های موجود استفاده می گردد. زمانيکه صفحه برای سرويس دهنده پست می گردد ،يکی از اولين عملياتی که در اين زمينه انجام خواهد گرفت ،برگرداندن viewstate است . صفت viewstate در صفحات وب در يک فيلد مخفی نگهداری می گردد. بمنظور استفاده از صفت فوق می بايست فرم دارای المانی با نام
باشد. برای ذخيره مقدار مورد نظر در viewstate می بايست يک المان جديد ايجاد و مقدار مورد نظر را در آن ذخطره نمود. فرمت داده هائی که می بايست در المان ذخيره نمود از نوع string است بنابراين در ابتدا می بايست تبديلات مربوطه را بر روی آن اعمال نمود.
 
ViewState("color") ="yello"
برای بازيابی اطلاعات ذخيره شده در Viewstate می توان نام المان مربوطه را استفاده تا مقدار ذخيره شده در آن برگردانده شود.
 

Dim strColor as String
strColor = CStr(ViewState("color"))

● فيلدهای مخفی . ASP.NET اين امکان را فراهم می آورد که از فيلدهای مخفی در يک فرم استفاده کرد. يک فيلد مخفی قابل مشاهده در مرورگر نبوده اما می توان صفات مربوط به آن را تغيير داد. زمانيکه صفحه ای برای سرويس دهنده ارسال می گردد ،محتويات فيلد مخفی از طريق مجموعه Http Form ارسال خواهد شد. يک فيلد مخفی صرفا" يک مقدار را در خود ذخيره کرده و می بايست با صراحت به صفحه وب آن را اضافه نمود. ASP.NET با معرفی کنترل htmlinputhidden امکان تعريف يک فيلد مخفی را فراهم نموده است . بمنظور استفاده از فيلدهای مخفی در يک صفحه می بايست صفحه مورد نظر بر اساس متد Post پروتکل Http ارسال گردد .در صورتيکه اطلاعات ذيربط بر اساس متد GET ارسال گردنند ،امکان استفاده از فيلدهای مخفی وجود نخواهد داشت .
● Cookies . يک کوکی شامل حجم کوچکی از داده ها است که در يک فايل متنی بر روی سيستم فايل سرويس گيرنده و يا در حافظه مرورگر سرويس گيرنده ذخيره می گردد. اطلاعات ذخيره شده شامل موارد مرتبط با يک صفحه بوده که از طريق سرويس دهنده برای سرويس گيرنده ارسال می گردد. کوکی ها می توانند بصورت موقت و يا دا ئم ايجاد گردنند. از کوکی می توان برای ذخيره اطلاعات مرتبط با يک سرويس گيرنده خاص ،يک session و يا يک برنامه استفاده کرد. کوکی ها بر روی دستگاههای سرويس گيرنده ذخيره و زمانيکه مرورگر درخواست يک صفحه را داشته باشد ،اطلاعات ذخيره شده در کوکی بهمراه ساير اطلاعات برای سرويس دهنده ارسال خواهند شد. سرويس دهنده از اطلاعات ذخيره شده در کوکی ها با توجه به شرايط حاکم بر نامه استفاده خواهد کرد.
● Query String(QS) . QS شامل اطلاعاتی است که به انتهای يک URL صفحه اضافه خواهد شد. مثلا"
 

http://www.contoso.com/listwidgets.aspx?category=basic&price=100

در دستور فوق QS با ? ، شروع و دارای دو مقدار مربوط به فيلدهای Category و Price است . روش فوق يک راه حل ساده و در عين حال محدود برای پشتيبانی از اطلاعات مربوط به وضعيت يک صفحه است . با استفاده از QS می توان بسادگی اطلاعاتی را از يک صفحه به صفحه ديگر ارسال نمود. اغلب مرورگرها و دستگاههای سرويس گيرنده حداکثر طول مجاز برای يک URL را دويست و پنجاه و شش حرف در نظر می گيرنند. بمنظور استفاده از روش فوق می بايست صفحه را از طريق متد GET پروتکل Http ارسال نمود.

گزينه های Server-Based

ASP.NET روش های متفاوتی برای پشتيبانی از وضعيت اطلاعاتی يک صفحه از جايگاه سرويس دهنده ارائه نموده است . در ادامه به تشريح برخی از آنان خواهيم پرداخت .
● Application State ، تکنولوژی ASP.NET ، اين امکان را فراهم نموده که با استفاده از ذخيره اطلاعاتی وضعيت يک برنامه ،اطلاعات ذخيره شده را برای تمام سرويس گيرندگانی که به برنامه متصل هستند ،قابل استفاده نمود. مسئوليت اين کار برعهده کلاس HttpApplication گذاشته شده است . در حقيقت روش فوق يک محل ذخيره سازی سراسری را ارائه داده تا از طريق اين فضای مشترک دستيابی به اطلاعات آن برای تمامی صفحات وب موجود در يک برنامه فراهم گردد.
● Session state . ساختمان داده ئی است که در زمان مراجعه به يک URL خاص ايجاد خواهد شد. مسئوليت اين کار برعهده کلاس HttpSessionStateگذاشته شد ه است . ASP.NET اين امکان را فراهم نموده که مقادير مربوط به يک Session خاص را برای هر کاربر و به ازای يک برنامه بصورت جداگانه ذخيره نمود . روش فوق نظير روش Application state بوده با اين تفاوت که حوزه عملکردی آن به Current browser session برمی گردد. در صورتيکه کاربران متعددی از برنامه استفاده می نمايند ،هر يک دارای يک Session متفاوت و مختص بخود خواهند بود. در چنين حالتی اگر کاربری ارتباط خود را با برنامه قطع و مجددا" به برنامه متصل گردد ،کاربر مورد نظر داری يک Session جديد شده که با Session قبلی کاملا" متفاوت خواهد بود.
● DataBase Support . پشتيبانی و مديريت وضعيت اطلاعاتی يک برنامه ( يا صفحات ) با استفاده از تکنولوژی بانک های اطلاعاتی يک راهکار مفيد در اين زمينه و خصوصا" موارديکه حجم اطلاعات ذخيره شده زياد بوده و يا دامنه پشتيبانی از وضعيت يک برنامه طولانی باشد و يا بخواهيم وضعيت يک برنامه پس از را ه اندازی سرويس دهنده همچنان نگهداری شوند ،بسيار مفيد و کارساز خواهد بود. روش فوق اغلب بهمراه کوکی ها استفاده می گردد.

 


10 نکته SEO برای وب سایت های ASP.NET

 

پس از ساخت یک وب سایت و قرار دادن آن در اینترنت، مهمترین مسئله پیدا کردن بازدیدکننده و مشتری برای آن است. وب سایتی که بازدیدکننده نداشته باشد به هیچ دردی نمی خورد. در این روزگار هم بازدید کننده و مشتری از کجا پیدا می شود… از موتورهای جستجوی معروف مثل گوگل، یاهو و بینگ! اکثر بازدیدهای یک وب سایت را موتورهای جستجو تامین می کنند، به همین علت داشتن یک رتبه ی خوب در موتورهای جستجو یک امتیاز مهم محسوب می شود و باعث پیشرفت وب سایت شما خواهد شد. موتورهای جستجو برای ربته بندی وب سایت ها در نتایج جستجوی خود قوانین مشخصی دارند که با پیروی از این استانداردها می توانید وب سایت خود را برای موتورهای جستجو بهینه کنید. به بهینه کردن یک وب سایت برای موتورهای جستجوگر SEO یا Search Engine Optimization می گویند.

بهینه سازی برای موتورهای جستجو

در این مطلب با نکاتی آشنا خواهید شد که اگر آن ها را به کار بگیرید، موتورهای جستجوگر مطالب وب سایت شما را ایندکس خواهند کرد و لینک های شما در نتایج جستجوی موتورهای جستجوگر معروفی همچون گوگل پدیدار خواهد شد! هر چند این نکات به صورت عمومی و برای صفحات استاتیک هم کاربرد دارند اما این مطلب به صورت خاص برای توسعه دهندگان ASP.NET نوشته شده است.

1 ) URLهای تمیز بسیازید!

URL یک صفحه وب، اولین جایی است که یک موتور جستجو می بیند پس سعی کنید تا جایی که می توانید آدرس های شما با معنی باشند. اگر از ASP.NET MVC استفاده می کنید که هیچ! در غیر این صورت باید از تکنیک URL Rewriting برای بازنویسی آدرس های پارامتری و تبدیل آن به URLهای با معنی استفاده کنید. به طور مثال شما باید آدرسی مثل mysite.com/products.aspx?id=1 را تبدیل به mysite.com/products/1 کنید. اگر به جای اعداد از کلمات با معنی استفاده کنید که چه بهتر!

2 ) URLهای کوتاه بهتر از URLهای طولانی است

سعی کنید آدرس های تولید شده توسط وب سایت شما حداقل طول ممکن را داشته باشند. خود گوگل توصیه می کند که صفحات پویا حداکثر دارای دو پارامتر باشند. صفحاتی با آدرس شبیه به mysite.com/products.aspx?item=3&category=7&subcategory=12&show=true شانس کمتری برای ایندکس شدن نسبت به صفحاتی با یک URL تمیز و کوتاه دارند.

3 ) تا جایی که می توانید از ایجاد Postback جلوگیری کنید!

استفاده از Postback در صفحات aspx می تواند از مهمترین دلایل برای عدم ایندکس شدن بخشی از این صفحات در موتورهای جستجوگر باشد. به طور مثال فرض کنید بخشی از صفحه را در یک Panel قرار داده اید که کاربر پس از فشردن یک دکمه و ایجاد یک Postback به صفحه دستور panel1.Visible = true اجرا شده و محتویات پانل را به کاربر نمایش می دهد. این کار اشتباه شما باعث عدم ایندکس شدن بخشی از محتویات سایت شما که در پانل وجود دارد، می شود، به این دلیل که یک موتور جستجو نمی تواند لینک های یک دکمه را دنبال کند، به زبان ساده تر نمی تواند روی آن دکمه کلیک کند تا ببیند چه اتفاقی می افتد! علاوه بر این مورد، Postback باعث ساخته شدن مقداری کد جاوا اسکریپت در صفحه ما می شود که هم حجم صفحه را بالا می برد و هم اینکه این کدها به هیچ وجه ایندکس نمی شوند. راه حل استفاده از Query String برای انجام اعمالی است که می خواهید هنگام Postback انجام شوند. به طور مثال یک پارامتر به همین صفحه می فرستید و در Page_Load پارامترها را چک می کنید تا عمل مورد نظر کاربر را انجام دهید. در این صورت صفحه شما به راحتی در موتورهای جستجو ایندکس خواهد شد.

4 ) تا جایی که می توانید از کنترل Button استفاده نکنید!

در بکارگیری و استفاده از کنترل تحت سرور asp:Button دقت مضاعف! داشته باشد. این کنترل حتی اگر کدی برای آن ننویسید باعث ایجاد یک Postback می شود. موتورهای جستجوگر نمی توانند کد پشت این دکمه را اجرا کنند تا نتیجه را ایندکس کنند. سعی کنید تا جایی که امکان دارد به جای استفاده از دکمه از تگ a (لینک معمولی) و دستور Response.Redirect استفاده کنید.

5 ) همیشه Title صفحه را به صورت پویا ایجاد کنید

هنگامی که یک صفحه aspx به پروژه خود اضافه می کنید، صفحه شما هیچ Title خاصی ندارد. همانطور که می دانید تگ Title یکی از مهمترین بخش های یک صفحه وب است که از نگاه تیزبین موتورهای جستجو مخفی نمی ماند. فرض کنید شما یک عنوان مناسب برای قسمت Title تعیین کردید، اما آیا این کافیست؟ مگر قرار نیست صفحه پویای شما بر اساس درخواست کاربر محتویات مختلفی نمایش دهد؟ اگر جوابتان مثبت است پس شما باید بر اساس درخواست کاربر و محتویات صفحه، هر بار یک Title خاص را ایجاد کنید. برای این کار می توانید از کلاس HtmlTitle استفاده کنید یا تگ title صفحه خود را به شکل زیر تغییر دهید :

سپس در Page_Load کدی شبیه به کد زیر را بنویسید :

if (Request.QueryString.Count > 0)
{
mytitle.Text = "Test - " + Request.QueryString["name"];
}

6 ) به تگ Meta توجه ویژه ای داشته باشید

تگ Meta با خاصیت های name=”description”x و name=”keywords”x یکی از مهمترین تگ های مربوط به SEO هستند که اولی برای توضیح یک صفحه وب و دومی برای مشخص کردن کلمات کلیدی آن صفحه وب برای موتورهای جستجو کاربرد دارند. خزنده موتورهای جستجو همیشه دقت ویژه ای به محتویات این دو تگ مهم دارند و استفاده درست از آن ها باعث بالا رفتن رتبه صفحه وب شما در نتایج موتورهای جستجو مثل گوگل خواهد شد. در صفحات استاتیک که محتویات صفحه قرار نیست تغییر کنند، شما به صورت دستی مقادیر این تگ ها را مشخص می کنید اما در صفحات پویای ASP.NET بهتر است بر اساس محتویات صفحه ای که قرار است بر اساس اطلاعاتی که از دیتابیس خوانده می شود تغییر کند، محتویات این تگ ها نیز تغییر کنند. برای این که هر بار تگ متا به صورت پویا تعیین شود می توانید این تگ را به شکل زیر بنویسید :

  />
/>

سپس در Code Behind صفحه خود دو متغیر Public از نوع string به نام های MetaDesc و MetaKeywords بسازید. حالا در Page_Load بر اساس اطلاعاتی که می خواهید نمایش دهید این دو متغیر را تغییر دهید تا تگ های متای شما نیز تغییر کنند.

7 ) هر صفحه* URL یکتای خود را داشته باشد

این نکته خیلی مهم است. * منظور از صفحه در اینجا یک فایل فیزیکی نیست. به طور مثال فایل فیزیکیproducts.aspx می تواند صفحات products.aspx?id=1 یا products.aspx?name=datefa را بسازد که محتویات یکسانی ندارند! موتورهای جستجو این دو آدرس را به صورت دو صفحه جداگانه در نظر می گیرند. اگر مثل همین مثال از Query String برای مشخص کردن پارامترها استفاده کنید هیچ مشکلی وجود ندارد، اما اگر از ViewState، Session یا کوکی برای ذخیره این پارامترها و پاس دادن مقادیر به صفحات استفاده می کنید، راه اشتباهی را در پیش گرفته اید! استفاده از این روش باعث می شود که نرم افزارهای خزنده توانایی تفکیک صفحات را نداشته باشند و در نتیجه محتویات شما در موتورهای جستجو ایندکس نخواهد شد. به بیان ساده هر صفحه ای که یک URL یکتا داشته باشد و کاربر بتواند آن را بوکمارک کند توسط موتورهای جستجو نیز قابل ایندکس شدن خواهد بود.

8 ) حتماً یک Site Map برای پروژه خود بسازید

Site Map یک پروتکل استاندارد بر اساس XML است که به موتورهای جستجو کمک می کند تا صفحات را آسان تر و کاراتر ایندکس کنند. داشتن یک Site Map در یک وب سایت مبتنی بر ASP.NET علاوه بر فوایدی که برای ایندکس شدن در موتورهای جستجوی مختلف دارد، باعث نظم در ساختار منوها و Navigation یک وب سایت می شود. ساختن یک Site Map با لطف ویژوال استادیو بسیار آسان شده است. روی پروژه خود کلیک راست کنید و گزینه Add New Item… را برگزینید. در پنجره باز شده Site Map را پیدا کنید و به پروژه خودتان اضافه کنید. حالا فایلی به نام Web.sitemap به پروژه شما اضافه شده است. اگر با XML آشنایی داشته باشید، قواعد نوشتن Site Map نیز مانند نوشتن تگ های XML است. سعی کنید تمام صفحات مهم خودتان را با جزئیات کامل و رعایت قوانین یک نقشه سایت، در این فایل مشخص کنید.

9 ) URLهای خود را با حروف کوچک بسازید

اکثر موتورهای جستجو به بزرگی و کوچکی حروف حساس هستند و این یعنی دو آدرس mysite.com/products.aspx و mysite.com/Products.aspx برای آن ها متفاوت هستند. برای جلوگیری از این اشتباه شما باید تمام URLهای خود را با حروف کوچک بسازید تا مشکلی در ایندکس شدن صفحات توسط موتورهای جستجو پیش نیاید.

10 ) سورس کد صفحات را تمیز کنید!

سورس کد خود را تمیز کنید تا صفحات شما کم حجم شوند. در اینجا منظور از سورس کد، کد نوشته شده در فایل های aspx است نه کدهای موجود در Code Behind که به cs یا vb ختم می شوند. برای تمیز کردن سورس صفحات :

  • کامنت های html را حذف کنید
  • از ViewState وقتی که نیازی به آن ندارید، استفاده نکنید
  • از form runat=”server”x وقتی که نیازی به آن ندارید، استفاده نکنید
  • تا می توانید کد جاوا اسکرپیت درون فایل aspx ننویسید، بلکه از فایل های Js خارجی استفاده کنید
  • تا می توانید کدهای CSS خود را در فایل های استایل جداگانه تعریف کنید

 

نکات مهم دیگر :

  • در تگ های a حتماً از خاصیت title استفاده کنید
  • در تگ های img از خاصیت alt استفاده کنید
  • مطالب وب سایت خود را در فرمت rss هم ارئه کنید
  • از Flash یا Silvetlight برای نشان دادن محتویات استفاده نکنید
  • از Flash یا Silverlight برای ساختن منوها استفاده نکنید
  • از منوهای جاوا اسکریپت استفاده نکنید
  • لینک خود را در وب سایت های دیگر قرار دهید

منبع :farsika.ir

 


چگونگی بازنویسی آدرس ها (UrlRewriting)

 

بازنویسی آدرس ها در ASP.NET یکی از موارد پرکاربرد امنیتی است که فوايد زیادی دارد. سهولت ایندکس شدن سایت توسط موتور های جستجو ، مخفی کردن Query String و نمایش ظاهری یک سایت پویا به صورت ایستا و بالا بردن امنیت نسبی سایت از مهمترین این فواید هستند. در این مقاله سعی می کنیم بصورت مختصر و مفید چگونگی بازنویسی آدرس ها را در ASP.NET توضیح دهیم.


کار UrlRewriting تبدیل یک آدرس اینترنتی واضح و با معنا به یک آدرس واقعی دارای Query String جهت تفسیر موتور Asp.net است. دو آدرس زیر را در نظر بگیرید :

http://aspcode.ir/article.aspx?id=4&type=print

http://aspcode.ir/article-4-print.html

یقینا" آدرس دوم با معنی تر از آدرس اول است.در ضمن تا حدودی امکان هک شدن سایت از طریق تزریق عبارات Sql را کاهش می دهد. اجازه دهید ابزار های موجود برای UrlRewriting را بررسی کنیم.

بعد از ظهور Asp.net 2.0 خبر پشتیبانی استاندارد این تکنولوژی از UrlRewriting بسیار جالب توجه بود. برای این منظور در Asp.net 2.0 تنها کافیست مقداری تغییر در Web.Config دهید :

 
     
              mappedUrl="~/show.aspx?id=5" />

دقت فرمایید تنظیمات فوق متعلق به شاخه می باشد و باید در این بخش از Web.Config تعریف شود. در مثال بالا url آدرسی است که کاربر مشاهده می کند و mappedUrl آدرس حقیقی ماست. اما همانطور که از ظواهر امر پیداست این روال کاری، تنها برای مواقعی مفید خواهد بود که تعداد دفعات استفاده محدود باشد و در صورتی که تعداد آدرس ها بالا باشد ، مدیریت آنها بسیار کار مشکل و زمانبری خواهد بود.
برای حل این مشکل ابزار های دیگری در دسترس برنامه نویسان قرار گرفته است. یکی از بهترین ابزار ها را می توان در سایت www.UrlRewriting.net یافت. جهت استفاده از این ابزار که Open Source هم می باشد ، می توانید مستندات آن و تمام آنچه که نیاز دارید از آدرس فوق دانلود کنید.
هر چند که مستندات و مطالب ارائه شده در سایت فوق کاملا" جامع است ، ولی در ادامه این مقاله، توجه شما را به مثال هایی از UrlRewriting در Asp.net جلب می کنم.
ابتدا فایل ضمیمه مقاله را دریافت کنید و Intelligencia.UrlRewriter.dll را به پوشه Bin پروژه خود انتقال دهید. حال مراحل زیر را جهت بازخوانی یک آدرس ثابت دنبال کنید :

فایل Global.asax را باز و
رویداد Application_BeginRequest را بصورت زیر کد نویسی می کنیم. همانطور که از نام این رویداد پیداست زمانی کد اجرا می شود که درخواستی به سمت موتور Asp.net ارسال شود.

if (Request.Url.ToString().Contains("show.htm"))
{
      Context.RewritePath("show.aspx");
}

در این مثال محتوای صفحه ای با نام show.htm که بصورت مجازی ایجاد شده است و وجود خارجی ندارد از صفحه ای دیگر با نام show.aspx خوانده می شود.











سپس فایل web.config را باز و محتوای آن را به صورت زیر تنظیم نمایید :

لطفا" به محل قرار گرفتن تغییرات دقت ویژه ای داشته باشید :

داخل تگ قرار گیرد.
داخل تگ قرار گیرد.
:
داخل تگ و خارج و بعد از تگ قرار گیرد.
توجه فرمایید کد کامل برنامه را نیز می توانید در انتهای برنامه دانلود نمایید.
مخفی کردن Query String :
شاید به ذهن شما رسیده باشد که چگونه می توان آدرس های مجازی
دارای Query String را نیز بازنویسی کنیم. این کار نیز بسیار ساده است و تفاوتهای جزئی با مثال بالا دارد.
برای اینکار
دوباره فایل Global.asax را باز و رویداد Application_BeginRequest را بصورت زیر کد نویسی می کنیم :

if (Request.Url.ToString().Contains("show-(.+).htm"))
{
      Context.RewritePath("show.aspx?id=$1");
}

علامت (.+) نماینده یک متغیر است که مقدار Query String را می گیرد و $1 در خط بعدی همان مقدار (.+) و نماینده مقدار Query String در آدرس حقیقی است. همچنین تگ rewrite را بصورت زیر تغییر دهید :

در صورتی که آدرس شما دارای بیش از یک پارامتر Query String است (برای مثال سه پارامتر) بصورت زیر عمل کنید :

show-(.+)-(.+)-(.+).htm
Show.aspx?Page=$1&Id=$2&state=$3

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

دقت کنید که در بازخوانی
آدرسهای با چندین پارامتر Query String در قسمت آدرس حقیقی قبل از & ، amp; را قرار دهید. در ضمن برای بازخوانی مقدار Query String نیاز به کد نویسی خاصی نیست و با در نظر گرفتن مثال فوق بعد از UrlRewriting با دستور زیر در صفحه show.aspx می توانیم مقدار Query String را بخوانیم :

Response.Write((string)Request.QueryString["id"]);

 


خروجی Excel برای gridview

 

C#
protected void Button1_Click(object sender, EventArgs e)
    {
        Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");
        Response.Charset = String.Empty;
        Response.ContentType = "application/vnd.xls";
        System.IO.StringWriter sw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(sw);
        GridView1.RenderControl(hw);
        Response.Write(sw.ToString());
        Response.End();
    }
VB.NET
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
            Response.AddHeader("content-disposition", "attachment;filename=FileName.xls")
            Response.Charset = String.Empty
            Response.ContentType = "application/vnd.xls"
            Dim sw As System.IO.StringWriter = New System.IO.StringWriter()
            Dim hw As System.Web.UI.HtmlTextWriter = New HtmlTextWriter(sw)
            GridView1.RenderControl(hw)
            Response.Write(sw.ToString())
            Response.End()
End Sub

 


صفحه بندی دستی Gridview

 

شما دو تا روش برای صفحه بندی

1- اتوماتیک

2- دستی

روش اول که به سادگی با فعال کردن خاصیت allow paging فعال میشه مشکلات خاصی داره از جمله اینکه در صورتی که تعداد رکورد های شما زیاد باشه مصیبت اتفاق مبافته مثلا اگه 1000000 تا رکورد رو صفحه بندی کرده باشین همش یک جا فراخوانی میشه وتنها به وصورت صفحه بندی شده نمایش داده میشه

روش دوم نیاز به کد نویسی دستی داره و شما برای هر صفحه تعداد رکورد های اون صفحه رو فراخوانی می کنید مثلا 10 رکورد از 1000000 رکورد

 


افزایش سرعت بارگزاری صفحات Asp.NET

 

سرعت لود صفحات در وب به ویژه برای کاربرانی که از سرعت اینترنت بالایی برخوردار نیستند بسیار پر اهمیت است از این رو سایت هایی که به کندی لود می شوند باعث دلزدگی کاربر شده و به مرور بازدیدکنندگان خود را از دست خواهند داد .
توسعه گران Asp.NET باید بدانند که در صورت بی توجهی و بی دقت به برخی نکات حجم صفحات افزایش پیدا کرده و وب سایت به کندی لود خواهد شد .
در این مقاله به ذکر چند نکته اساسی در این رابطه می پردازم :
بانک اطلاعاتی : نیمی از دلایل کند شدن صفحات به دلیل استفاده نادرست از بانک اطلاعاتی می باشد ، برای همین دقت به نکات زیر در مورد استفاده بانک اطلاعاتی ضروری می باشد :
حتی المقدور از بانک اطلاعاتی SQL Server استفاده کنید ، بانک Access و همچنین SQLExpress بانک های اطلاعاتی مناسبی برای پروژه ها حرفه ای نیستند .

برای جداول خود حتما Primary Key تعیین نمایید ، و بین جداول Relation های مورد نیاز را برقرار کنید

فیلد هایی که در هنگام Query گرفتن بر روی آن ها شرط می گذارید Index کنید

حتما از Stored Procedure استفاده کنید
برای نمایش اطلاعات زیاد (1000 رکورد به بالا) از Paging پیشفرض خود GridView استفاده نکنید ، بلکه از روش های CustomePaging (صفحه بندی دستی) استفاده کنید تا رکورد ها به تفکیک درخواست شوند
تا جایی که امکان دارد از Join کردن چند جدول در یک Query که حجم زیادی را درخواست می کند بپرهیزید
به جای View ها از StoredProcedure استفاده کنید
غیر فعال نمودن ViewState : یکی از مهمترین دلایل افزایش حجم صفحات در Asp.NET استفاده بی رویه از ViewState می باشد ، برنامه نویسان Asp.NET باید به این قضیه بسیار توجه کنند که اگر به حالت ماندگاری مقادیر یک کنترل نیازی ندارند باید ViewState آن را غیر فعال کنند .ViewState باعث می شود که کنترل شما پس از PostBack مقادیر خود را حفظ نماید ، به عنوان مثال اگر یک GridView دارید که Paging و Sorting ندارد می توانید ViewState آن را غیر فعال کنید .
استفاده کردن از Css : استفاده از Css به صورت فایل خارجی به طور محسوسی به سرعت بارگزاری صفحات شما کمک خواهد کرد ، به جای اینکه استایل یک تگ در همان تگ نوشته شود یک کلاس برای آن در یک فایل خارجی Css ایجاد می کنیم و فقط نام کلاس در تگ ذکر خواهد شد ، به ویژه در کنترل های تکرار کننده مانند GridView و Repeater و... حتما از Css به صورت فایل خارجی استفاده کنید و از نوشتن Style داخل خود تگ جدا خود داری نمایید .
گرافیک سبک : استفاده از قالب های گرافیکی سنگین و همچنین استفاده از عکس های Optimize نشده صحفات شما را سنگین خواهد کرد
تگ Div به جای Table : استفاده بی رویه از المان Table یک روش بسیار نا مناسب برای ساخت صفحات وب است ، این کنترل بدلیل داشتن تگ های TR و TD به سرعت حجیم می شود ، به ویژه در هنگامی که کنترل های تکرار کننده استفاده می کنید پیشنهاد می شود به جای استفاده از Table از تگ Div استفاده کنید .
استفاده از Css Friendly : اگر شما جزو کسانی هستید که از کنترل های Menu و TreeView خود دات نت استفاده می کنید هرچه سریعتر به سراغ Css Friendly بروید ، این کنترل ها به شکل عجیبی حجم صفحات شما را افزایش داده و سایت شما را کند می کنند ، دلیل این امر این است که به صورت پیشفرض این کنترل ها از المان Table استفاده می کنند و با وجود تگ های Tr و Td و همچنین استایل هایی که داخل هر تگ نوشته می شوند و همچنین توابع جاوا اسکریپتی حجم زیادی را به وجود می آورند ، پس از نصب Css Friendly این المان به تگ Div تبدیل می شوند . پیشنهاد دیگر بنده این است که حتی المقدور از منوهای Css Base استفاده کنید و تاجایی که ممکن است از استفاده کردن از منوهای خود دات نت پرهیز نمایید .
وارد کردن متن از نرم افزار Word : اگر قصد دارید در صفحه ای سایت متنی را از نرم افزار Word یا نرم افزار های مشابه کپی کنید دست نگه دارید ، پس از Copy کردن متن آن را Paste نکنید بلکه از Paste Alternate (این گزینه در Visual Studio وجود دارد) استفاده کرده تا استایل های متن پاکسازی شوند ، این استایل ها شکل غیر قابل باوری حجم صفحه شما را افزایش خواهند داد . همچنین میتوانید متن را یک بار در یک Notepad کپی کرده و سپس به صفحه منتقل نمایید .
فشرده سازی صفحات : فشرده سازی صفحات از نظر بنده جزئی طراحی یک وب سایت است و ناگزیر باید انجام شود ، این کار حجم صفحات شما را تا ده ها برابر کاهش خواهد داد ، برای اطلاعات بیشتر میتوانید به مقاله بنده در مورد کاهش حجم صفحات به وسیله فشرده سازی مراجعه نمایید
حذف فضا های خالی : شاید در ابتدا به نظر برسد که فضای خالی یعنی هیچ ولی این تفکر درست نیست ، فضاهای خالی در صفحات Html برای نمایش زیباتر متن به کار میروند ، شما با حذف این فضا ها به صورت داینامیک حجم قابل توجهی را کاهش خواهید داد ، برای اطلاعات بیشتر به مقاله کاهش حجم صفحات به وسیله حذف فضاهای خالی مراجعه نمایید .
استفاده از Cache : در وب ، کش کردن صفحات یکی از روش های مرسوم افزایش سرعت بارگزاری می باشد ، در Asp.NET چند نوع Cache وجود دارد ، Cache بانک اطلاعاتی ، Cahce اطلاعات خروجی و ... شما میتوانید بخش هایی از پروژه خود که نیاز به اطلاعات به روز ندارد را Cache کنید ، این کار به افزایش سرعت بارگزاری و افزایش Performance بانک اطلاعاتی کمک خواهد کرد .
Ajax : همانطور که استفاده بهینه از Ajax سرعت صفحات شما را افزایش داده و لود دوباره گرافیک و اجزای صفحه جلوگیری می کند استفاده بی رویه و غیر منطقی باعث کاهش سرعت بارگزاری صفحات خواهد شد ، بنابراین قبل از استفاده از Ajax در مورد همه چیز خوب فکر کنید ، استفاده از کنترل های Ajax مایکروسافت حجم زیادی کد های Javascript به صفحات شما تزریق کرده و باعث کند شدن آن می شود ، در جاهایی که حجم صفحه برای شما خیلی مهم است و میخواهید از Ajax استفاده کنید میتوانید از Ajax کلاسیک (XHR) یا Jquery Ajax استفاده نمایید ، همچنین کتابخانه Anthem که بنده در یکی از مقالات معرفی کردم کتابخانه مناسب تری برای کار با Ajax می باشد .
JavaScript : در استفاده از کتابخانه های جاوا اسکریپت وسواسی عمل کنید ، دقت نمایید که فایل هایی جاوا اسکریپت که در تگ Head اضافه می کنید در هنگام بارگزاری صفحه لود خواهند شد ، البته پس از بارگزاری برای اولین بار Cache می شوند ولی به هرحال استفاده نا بجا باعث کندی صفحات شما می شود ، استفاده نا بجا از کتابخانه های Jquery و Mootools نیز از قاعده مستثنی نیست ، فقط کتابخانه هایی که در هر صفحه نیاز دارید را در همان صفحه وارد نمایید ، از وارد کردن کل کتابخانه ها در MasterPage بپرهیزید .
کوچک نمایی تصاویر : اگر قرار است در بخشی از سایت عکسی را نمایش دهید و این عکس قرار است کوچک تر نمایش داده شود حتما از روش های کوچک نمایی تصاویر استفاده کنید تا با کوچک شدن تصویر حجم آن هم به تناسب کوچک شود .
انتخاب هاست مناسب : انتخاب WebHosting مناسب بخشی از پیاده سازی یک وب سایت است و تاثیر بسزایی در سرعت وب سایت شما دارد بنابراین در انتخاب آن بسیار دقت کنید ، از انتخاب سرور هایی که تعداد زیادی دامنه بر روی آن ها وجود دارد بپرهیزید (برای اطلاع از تعداد دامنه ها بر روی یک سرور به آدرس http://www.domaintools.com/reverse-ip مراجعه کنید ) ، از سرور هایی که در دیتاسنتر های نا معتبر هستند خودداری نمایید . قبل از خرید هاست از مدیر هاست یک هفته تست رایگان درخواست نمایید و کل پروژه را به صورت کامل روی هاست تست نمایید . اگر وب سایت شما قرار است فقط در ایران استفاده شود استفاده از سرور های ایرانی گزینه مناسبی است .

Publish کردن وب سایت : پس از اینکه پروژه شما به اتمام رسید قبل از بارگزاری سایت حتما پروژه را Publish کرده و سپس آن را بارگزاری کنید ، برای این کار کافیست وارد منوی Build شده و گزینه Publish Web Site را انتخاب کنید ، مسیر مورد نظر را وارد کرده ، گزینه اول و دوم را تیک دار کنید و سپس دکمه OK را کلیک نمایید .

غیر فعال کردن خاصیت Debug : پس از اینکه پروژه را Publish کردید ، قبل از بارگزاری فایل ها به سراغ Web.Config رفته و خاصیت debug تگ compilation را false نمایید ، برای مدیریت خطا هم می توانید طیق مقاله بنده در مورد مدیریت خطاها عمل نمایید .

 


استفاده از آژاکس در ASP.Net

 

همون طور که تا حالا شنیدید و شاید کار کردید، با آژاکس میشه بدون رفرش کردن و بارگذاری مجدد صفحات کارهایی رو انجام داد و به کاربر نشون داد. مثلا کاربر برای ثبت نام ایمیلش رو وارد میکنه در حالت عادی باید صفحه رفرش بشه تا بفهمیم که آدرس ایمیل درست وارد شده یا نه اما با آژاکس بدون رفرش کردن میشه این کار رو انجام داد.

این رو باید در نظر داشته باشیم که آژاکس فناوری جدیدی نیست بلکه از جاوا اسکریپت و یک شئی به نام xmlhttprequest تشکیل شده.

برای استفاده از آژاکس در ASP.Net باید فایل زیر رو دانلود و اکسترکت کنید. بعد ASPAJAXExtSetup.msi رو نصب کنید و بعد فایل AjaxControlExtender.vsi رو که template آژاکس به قالب های کاری ویژوال استدیو اضافه شه. بعد از این کار برای اضافه کردن کنترل ها به toolbox یه تب جدید باز کنید و dll آژاکس رو از جایی که ASPAJAXExtSetup.msi رو نصب کردید اضافه کنید. حالا تمام کنترل های آژاکس در اختیارتونه.

 


watermark روی عکس

 

ابتدا با دستور زیر عک عکس را لود می کنیم

string fileloc = oFileDlg.FileName;

//load image to picturebox

pictureBox1.Image = Image.FromFile(fileloc);

سپس کد زیر را در یک رویداد قرار می دهیم

if (pictureBox1.Image != null)

{

    // Create image.

    Image tmp = pictureBox1.Image;

    // Create graphics object for alteration.

    Graphics g = Graphics.FromImage(tmp);

 

    // Create string to draw.

    String wmString = "Mdi Sample";

    // Create font and brush.

    Font wmFont = new Font("Trebuchet MS", 10);

    SolidBrush wmBrush = new SolidBrush(Color.White);

    // Create point for upper-left corner of drawing.

    PointF wmPoint = new PointF(10.0F, 10.0F);

    // Draw string to image.

    g.DrawString(wmString, wmFont, wmBrush, wmPoint);

    //Load the new image to picturebox                

    pictureBox1.Image = tmp;

    // Release graphics object.

    g.Dispose();

}

 


عوامل کاهش رنکینگ

 

ممکن است زمانی این اتفاق برای وبسایت یا وبلاگ شما هم رخ دهد، رنک شما نوساناتی داشته باشد. این تغیرات کوچک هشدار دهنده نیست، اما اگر رنک شما به طور ناگهانی پائین آمد می‌توانید روی این ۵ دلیل مشکل را بررسی کنید.

Page-Rank

۱- موتورهای جستجوگر الگوریتم خود را تغیر دهند : موتور های جستجوگر دائما در حال تغیر و بهبودی قوانین رنک بندی خود هستند، تغیرات به سختی قابل درک و ملاحظه است اما هر بار که تغیرات عمده ای اتفاق می افتد تاثیر آن آشکارا بر روی رنک شما قابل مشاهده است. بنابراین مهم است که همیشه صفحات خوذ را بهینه نگه دارید تا در تمامی شرایط رنک فعلی خود را حفظ کند.

۲- وجود مشکلات فنی در وبسایت : اگر سایت شما زمانی که اسپایدرها برای چک کردن به سایت سر می زنند دان یا در دسترس نباشد، موتور های جستجو ممکن است صفحه غیر فابل دسترس رو از کش خود پاک کنند. بنابراین مطمئن شوید میزبان سایت شما معتبر و قابل اطمینان می باشد. در صورتی هم که هرگونه شکی راجع به میزان آپ تایم میزبان خود داشتید، میتوانید برای اطمینان از سیستم های مانیتورینگ استفاده کنید.

۳- ممکن است تغیرات زیادی در وبسایت خود داده باشید : این درسته که موتورهای جستجو علاقه زیادی به طرح های جدید، به روز رسانی مطالب دارند اما تغیرات خیلی زیاد می‌تواند آسیب جدی به رنک شما وارد کند. مطابق گوگل تغیرات قابل ملاحضه مثل تغیر اسناد قدیمی، تغیر انکر ها و ... خیلی قابل اطمینان نیستند. پس اگر سایت شما در حال لذت بردن از رنک بالای خودش است، در مورد تغیرات اساسی و بزرگ شدیدا هوشیار باشید.

۴- رقیبان شما صفحات خود را به روز کنند : اگر آنها مطالب بهتری، لینک های خارجی و کلمات کلیدی بهتری داشته باشند به طور طبیعی رنک بهتری خواهند داشت، پس همواره تغیرات رنک رقیبان خود را بررسی کنید.

۵- وضعیت لینک های خارجی : وضعیت لینک های خارجی برای رنک موتورهای جستجو امری مهم به حساب می آید. لینک های خارجی می بایست قابل اطمینان و قابل قبول باشد. خریداری لینک با این که باعث رشد چشمگیری در رنک شما خواهد داشت اما ممکن است سایت شما را دچار مجازاتی از سوی گوگل کند، پس لینک های خارجی شما می بایست به طور معمولی و قابل قبول لینک شده و تناقضی با چرخه همیشگی خود نداشته باشد.

 

اگر شما هم متوجه تغیرات ناگهانی در رنک خود شده اید، خونسردی خود را حفظ کنید.فقط مطالب بالا رو بررسی کنید ، ممکن است دلیل یا دلایلی باعث این کاهش شده باشند که نیاز به تغیراتی داشته باشد.

 


ابزارهای مانیتورینگ سایت

 

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

15-monitoring-tools

۱- یاهو! سایت اکپلورر : سایت اکپلورر به شما اجازه می دهد تا بررسی قطعی راجع به جهت رشد وب سایت داشته باشید. از ویژگی های این ابزار می‌توان به این لینک اشاره کرد که جزئیات مربوط به بک لینک ها را در اختیار کاربر قرار می دهد.

۲- کامپیت : کامپیت یک آنالیزر تحت وب است که به شما امکان مقایسه آمار ترافیک و روند دو یا سه وب سایت با هم دیگر را می دهد.

۳-  کوآنت کست : یک ابزار رایج دیگر برای اندازه گیری ترافیک وب سایت است که با اضافه کردن اسکریپت در صفحات وب سایت می‌توانید ترافیک دقیق سایت خود را مشاهده کنید.

۴-  الکسا : نامی آشنا که از سال ۱۹۹۶ کار خود را آغاز کرده و یکی از محبوب ترین و رایج ترین سرویس های  رتبه بندی ترافیک است. الکسا آمار ترافیک یک وب سایت را پیگیری می کند و به صورت یک رتبه عددی آن را اعلام می‌کند.

۵- فید کامپیر : یک عامل موثر در تعیین محبوبیت یک وب سایت پیگیری مشترکان فید آر اس اس آن وب سایت است. اگر وب سایتی از فید برنر استفاده کند شما می تونید با فید کامپیر سیر افزایش/کاهش مسترکان را مقایسه کنید، همچنین می‌توانید مشترکان ۴ فید را با هم مقایسه کنید.

۶- پاپیری : ابزاری است که به شما کمک می‌کند تا اطلاعاتی همچون تعداد بوک مارک های دلیشز، تعداد مشترکان فید و ... را بدست آورید.

۷- سوشیال متر : ابزاری که درپیدا کردن تعداد شیر های  صفحات شما در شبکه هایی مثل دلیشز، دیگ و ... کمک می‌کند.

۸- توئیت ولوم : ابزاری که به شما کمک می‌کند تا تعداد توییت هایی که وبسایت شما در آن ها ذکر شده است را مشاهده کنید.

۹- کرک بیس : ابزاری جامع که اطلاعات زیای راجع به محبوبیت و ترافیک و ... یک وب سایت در اختیار می گذارد.

۱۰-  بلاگ پالس  : اگر خواستار پیدا کردن اطلاعات جالبی راجع به وب سایت خود هستید، بلاگ پالس ابزاریست ساده که در این زمینه به شما کمک خواهد کرد.

۱۱- تکنوروتی بلاگینگ سنترال : یکی از برجسته ترین موتور های جستجوی وبلاگی به حساب می آید. همینطور به شما اجازه می دهد تا وبلاگ خود را بین بیشتر از ۱۲۸ میلیون وبلاگ بسنجید، همچنین می‌توانید ۱۰۰ وبلاگ برتر را نیز مشاهده کنید.

۱۲- استت برین : ابزاری آسان که تعداد بازدید کنندگان یک روز وب سایت را نشان می دهد.

۱۳- کیوب استت : با توجه به ترافیک و بازید روزانه قیمتی را برای وب سایت تعیین می‌کند.همینطور اطلاعاتی راجع به بازده ادسنس گوگل ارائه می‌کند.

۱۴- دی ان اسکوپ : اطلاعاتی راجه به سن دامین، پیج رنک، قیمت یک لینک در سایت که می‌تواند به مدیران وب سایت ها کمک کند.

۱۵- وب سایت اوت لوک : اطلاعاتی راجع به قیمت سایت، بازدید روزانه صفحات، وضعیت در دی موز و ... را ارائه می‌کند.

با استفاده از این ابزار ها  می‌توانید همواره وضعیت وب سایت خود را زیر نظر گرفته و روند رو به رشد آن را پیگیری کنید.

 


نام و کد رنگها در asp.net

 

AliceBlue Hex Code: #F0F8FF
AntiqueWhite Hex Code: #FAEBD7
Aqua Hex Code: #00FFFF
Aquamarine Hex Code: #7FFFD4
Azure Hex Code: #F0FFFF
Beige Hex Code: #F5F5DC
Bisque Hex Code: #FFE4C4
Black Hex Code: #000000
BlanchedAlmond Hex Code: #FFEBCD
Blue Hex Code: #0000FF
BlueViolet Hex Code: #8A2BE2
Brown Hex Code: #A52A2A
BurlyWood Hex Code: #DEB887
CadetBlue Hex Code: #5F9EA0
Chartreuse Hex Code: #7FFF00
Chocolate Hex Code: #D2691E
Coral Hex Code: #FF7F50
CornflowerBlue Hex Code: #6495ED
Cornsilk Hex Code: #FFF8DC
Crimson Hex Code: #DC143C
Cyan Hex Code: #00FFFF
DarkBlue Hex Code: #00008B
DarkCyan Hex Code: #008B8B
DarkGoldenrod Hex Code: #B8860B
DarkGray Hex Code: #A9A9A9
DarkGreen Hex Code: #006400
DarkKhaki Hex Code: #BDB76B
DarkMagenta Hex Code: #8B008B
DarkOliveGreen Hex Code: #556B2F
DarkOrange Hex Code: #FF8C00
DarkOrchid Hex Code: #9932CC
DarkRed Hex Code: #8B0000
DarkSalmon Hex Code: #E9967A
DarkSeaGreen Hex Code: #8FBC8B
DarkSlateBlue Hex Code: #483D8B
DarkSlateGray Hex Code: #2F4F4F
DarkTurquoise Hex Code: #00CED1
DarkViolet Hex Code: #9400D3
DeepPink Hex Code: #FF1493
DeepSkyBlue Hex Code: #00BFFF
DimGray Hex Code: #696969
DodgerBlue Hex Code: #1E90FF
Firebrick Hex Code: #B22222
FloralWhite Hex Code: #FFFAF0
ForestGreen Hex Code: #228B22
Fuchsia Hex Code: #FF00FF
Gainsboro Hex Code: #DCDCDC
GhostWhite Hex Code: #F8F8FF
Gold Hex Code: #FFD700
Goldenrod Hex Code: #DAA520
Gray Hex Code: #808080
Green Hex Code: #008000
GreenYellow Hex Code: #ADFF2F
Honeydew Hex Code: #F0FFF0
HotPink Hex Code: #FF69B4
IndianRed Hex Code: #CD5C5C
Indigo Hex Code: #4B0082
Ivory Hex Code: #FFFFF0
Khaki Hex Code: #F0E68C
Lavender Hex Code: #E6E6FA
LavenderBlush Hex Code: #FFF0F5
LawnGreen Hex Code: #7CFC00
LemonChiffon Hex Code: #FFFACD
LightBlue Hex Code: #ADD8E6
LightCoral Hex Code: #F08080
LightCyan Hex Code: #E0FFFF
LightGoldenrodYellow Hex Code: #FAFAD2
LightGray Hex Code: #D3D3D3
LightGreen Hex Code: #90EE90
LightPink Hex Code: #FFB6C1
LightSalmon Hex Code: #FFA07A
LightSeaGreen Hex Code: #20B2AA
LightSkyBlue Hex Code: #87CEFA
LightSlateGray Hex Code: #778899
LightSteelBlue Hex Code: #B0C4DE
LightYellow Hex Code: #FFFFE0
Lime Hex Code: #00FF00
LimeGreen Hex Code: #32CD32
Linen Hex Code: #FAF0E6
Magenta Hex Code: #FF00FF
Maroon Hex Code: #800000
MediumAquamarine Hex Code: #66CDAA
MediumBlue Hex Code: #0000CD
MediumOrchid Hex Code: #BA55D3
MediumPurple Hex Code: #9370DB
MediumSeaGreen Hex Code: #3CB371
MediumSlateBlue Hex Code: #7B68EE
MediumSpringGreen Hex Code: #00FA9A
MediumTurquoise Hex Code: #48D1CC
MediumVioletRed Hex Code: #C71585
MidnightBlue Hex Code: #191970
MintCream Hex Code: #F5FFFA
MistyRose Hex Code: #FFE4E1
Moccasin Hex Code: #FFE4B5
NavajoWhite Hex Code: #FFDEAD
Navy Hex Code: #000080
OldLace Hex Code: #FDF5E6
Olive Hex Code: #808000
OliveDrab Hex Code: #6B8E23
Orange Hex Code: #FFA500
OrangeRed Hex Code: #FF4500
Orchid Hex Code: #DA70D6
PaleGoldenrod Hex Code: #EEE8AA
PaleGreen Hex Code: #98FB98
PaleTurquoise Hex Code: #AFEEEE
PaleVioletRed Hex Code: #DB7093
PapayaWhip Hex Code: #FFEFD5
PeachPuff Hex Code: #FFDAB9
Peru Hex Code: #CD853F
Pink Hex Code: #FFC0CB
Plum Hex Code: #DDA0DD
PowderBlue Hex Code: #B0E0E6
Purple Hex Code: #800080
Red Hex Code: #FF0000
RosyBrown Hex Code: #BC8F8F
RoyalBlue Hex Code: #4169E1
SaddleBrown Hex Code: #8B4513
Salmon Hex Code: #FA8072
SandyBrown Hex Code: #F4A460
SeaGreen Hex Code: #2E8B57
SeaShell Hex Code: #FFF5EE
Sienna Hex Code: #A0522D
Silver Hex Code: #C0C0C0
SkyBlue Hex Code: #87CEEB
SlateBlue Hex Code: #6A5ACD
SlateGray Hex Code: #708090
Snow Hex Code: #FFFAFA
SpringGreen Hex Code: #00FF7F
SteelBlue Hex Code: #4682B4
Tan Hex Code: #D2B48C
Teal Hex Code: #008080
Thistle Hex Code: #D8BFD8
Tomato Hex Code: #FF6347
Transparent Hex Code: #FFFFFF
Turquoise Hex Code: #40E0D0
Violet Hex Code: #EE82EE
Wheat Hex Code: #F5DEB3
White Hex Code: #FFFFFF
WhiteSmoke Hex Code: #F5F5F5
Yellow Hex Code: #FFFF00
YellowGreen Hex Code: #9ACD32

 


FreeTextBox چیست؟

 

 

FreeTextBox

The no. 1 free ASP.NET HTML Editor.

ادیتور ویزیویگ چیست؟
در بسیاری از پروژه ها ، شما نیازمند آن هستید که بجای یک textBox ساده، امکانات بیشتری را برای تهیه متن های پرمحتوا در اختیار کاربر قرار دهید. بطور مثال برای ایجاد یک وبلاگ در یک پروژه شما نیازمند یک ادیتور متن قدرتمند برای ویرایش متون وبلاگتان هستید. اینجاست که ادیتورهای ویزیویگ به کمک شما میآیند. این ادیتور ها محیطی مانند ورد را به شما نمایش میدهند و شما میتوانید متن نوشته شده را فرمت کنید، به آن رنگ و سایز و غیره بدهید و حتی جدول رسم کنید و در هنگام submit کردن فرم ، کد HTML آنچه را که شما ایجاد کرده اید به شما بعنوان خروجی میدهد.

ادیتور ویزیویگ یعنی چه ؟
عبارت ویزیویگ (WYSIWYG) از حروف اول جمله ی What You See Is What You Get به دست آمده است و به این معناست که ادیتور ویزیویگ آنچه را که شما در آن میبینید، دقیقا همان را - به صورت HTML - به شما تحویل میدهد.

طرز کار ادیتورهای ویزیویگ :

این ادیتورها معمولا با استفاده از جاوا اسکریپت کار میکنند و با استفاده از کدهای سمت کلاینت، کد HTML متن شما را ایجاد میکنند. به همین دلیل برای استفاده از بسیاری از این ادیتورها شما نیازمند اضافه کردن کدهای Javascript در داخل صفحه ی HTML خود هستید، البته این قضیه یک خوبی نیز دارد. این ادیتورها چون جاوا اسکریپتی مقدار خود را به فرم پاس میدهند، در کلیه زبان های برنامه نویسی تحت وب مانند asp, php , CF , asp.net , jsp قابل استفاده اند. در میتوانید با مجموعه ای از این ادیتورها اشنا شوید.

ادیتور ویزیویگ دات نتی :
ادیتورهای ویزیویگ معمولا جاوا اسکریپتی هستند و باید طرز استفاده از آنها را از راهنمای آنها به دست آورید. اما ادیتور FreeTextBox یک ادیتور ویزیوگ مخصوص کاربران asp.net است و به سادگی در پروژه های دات نت قابل استفاده است.


ادیتوری قدرتمند برای دات نت کاران:
این ادیتور ویزیویگ رایگان است و بصورت یک کامپوننت در پروژه شما قابل استفاده است. در میتوانید یک نمونه از اجرای این پروژه را مشاهده کنید و در میتوانید امکانات این ادیتور را مشاهده کنید.

وب سایت : www.FreeTextBox.com

 


اسکریپت بک آپ از دیتابیس

 

Sypex Dumper یک نرم افزار تحت وب متن باز هست که کار پشتیبان گیری بلادرنگ یا خودکار از دیتابیس های MySQL رو انجام می ده، با زبان PHP نوشته شده و واسط کاربری اون هم از Ajax استفاده می کنه، همچنین قابلیت بازیابی اطلاعات دیتابیس رو هم داره.
این نرم افزار به دلیل این که محدودیت زمانی اجرای دستورات PHP رو bypass می کنه می تونه با دیتابیس های با حجم زیاد هم کار کنه.
Sypex Dumper قابلیت این رو هم داره که جداول یک دیتابیس روچک کنه و در صورت وجود اشکال تعمیر کنه. همچنین می تونه اون ها رو optimize کنه و برای این که شما فضای زیادی رو هنگام پشتیبان گیری از دست ندین این امکان رو هم داره که فایل های قدیمی پشتیبان روبه صورت خودکار حذف کنه.
در ضمن از فشرده سازی فایل ها و چند زبانه بودن هم پشتیبانی می کنه.
وب سایت مربوطه