ايجاد پيوند به ديگر صفحات با HTML
برچسب : طراحی وب سایت, طراحی سایت, طراحی وب, نویسنده : ali webmary19 بازدید : 299
همانطور که در قسمت سي و يکم توضيح داده شد، دو حالت از Operator Method وجود دارد: Unary Operators و Binary Operators که با Binary Operators نيز آشنا شديد. Unary Operator ها مانند Binary Operator ها overload ميشوند و با اين تفاوت طراحی وب سایت که در Unary Operators تنها يک operand وجود دارد.
زنگ سيشارپ - قسمت سي و سوم
فرم کلي Unary Operators بهشکل زير است:
// General form for overloading a unary operator
public static ret-type operator op(param-type operand)
{
// operations
}
بهعنوان مثال متد زير، unary minus را overload ميکند:
public static TwoD operator -(TwoD ob)
{
TwoD result = new TwoD();
result.X = -ob.X;
result.Y = -ob.Y;
retu result;
}
در اينجا يک شيء جديد retuميشود که شامل مقدار منفي فيلدهاي operand است. دقت کنيد که operand تغيير نميکند، براي مثال در عبارت a = -b مقدار منفي b به a اختصاص داده ميشود در حاليکه b بدون تغيير ميماند.
using System;
class TwoD
{
private int X, Y;
public TwoD()
{
X = Y = 1;
}
public TwoD(int a, int b)
{
X = a;
Y = b;
}
public static TwoD operator -(TwoD ob)
{
TwoD result = new TwoD();
result.X = -ob.X;
result.Y = -ob.Y;
retu result;
}
public void Show()
{
Console.WriteLine("{0}, {1}", X, Y);
}
}
class UnaryOpertorDemo
{
static void Main()
{
TwoD ob = new TwoD(1, 1);
TwoD result;
result = -ob;
ob.Show();
result.Show();
}
}
در سيشارپ، overload کردن ++ و -- بسيار آسان است. کافي است که مقدار را افزايش يا کاهش دهيد و آن را retu کنيد اما نبايد مقدار شيء operand را تغيير دهيد. سيشارپ بهطور خودکار حالتهاي postfix و prefix را براي شما در نظر ميگيرد. براي مثال متد زير يک ()++operator براي کلاس TwoD است:
شما ميتوانيد operator methods را هم overload کنيد. رايجترين دليل آن اين است که با اين کار اين امکان را فراهم ميکنيد تا عمليات بين يک class type (مثل کلاسي که خودتان تعريف کرديد) و يک built-in type (يک type که در دات نت موجود است، مثل int) انجام شود. بهعنوان مثال، مجدداً به کلاس TwoD دقت کنيد. مشاهده کرديد که + را overload کردهايم و اين باعث ميشود تا مختصات يک شيء TwoD با مختصات يک شيء ديگر جمع شود. اما اين تنها راه جمع کردن براي شيء TwoD نيست! شما فقط توانستيد دو شيء را با هم جمع کنيد اما گاهي نياز داريد يک int را با يک شيء جمع کنيد. براي اين منظور شما نياز داريد که + را دوباره overload کنيد
// Overload binary + for TwoD + int.
public static TwoD operator +(TwoD op1, int op2)
{
TwoD result = new TwoD();
result.X = op1.X + op2;
result.Y = op1.Y + op2;
retu result;
}
دقت کنيد که پارامتر دوم از جنس int است. بنابراين اين متد اجازه ميدهد يک مقدار int به هر يک از فيلدهاي TwoD افزوده شود. توجه داشته باشيد هنگاميکه يک binary operator را overload ميکنيد، يکي از operand ها حتماً بايد از جنس کلاسي باشد که در آن operand مربوطه overload ميشود اما بقيهي operand ها ميتوانند از هر نوعي باشند. به همين دليل است که در متد قبل يکي از parameter ها از جنس TwoD (جنس کلاسي که در آن operand مورد نظر overload شده) و ديگري از يک جنس دلخواه مثل int است.
در زير مشاهده ميکنيد که + دو بار overload شده دارد:
using System;
class TwoD
{
int X, Y;
public TwoD()
{
X = Y = 0;
}
public TwoD(int a, int b)
{
X = a;
Y = b;
}
// Overload binary + for TwoD + int.
public static TwoD operator +(TwoD op1, int op2)
{
TwoD result = new TwoD();
result.X = op1.X + op2;
result.Y = op1.Y + op2;
retu result;
}
// Overload binary + for TwoD + TwoD.
public static TwoD operator +(TwoD op1, TwoD op2)
{
TwoD result = new TwoD();
result.X = op1.X + op2.X;
result.Y = op1.Y + op2.Y;
retu result;
}
public void Show()
{
Console.WriteLine(X + ", " + Y);
}
}
class OpOverloadingDemo
{
static void Main()
{
TwoD ob1 = new TwoD();
TwoD ob2 = new TwoD(3, 3);
TwoD result;
result = ob1 + 2; // TwoD + int
ob1.Show();
result.Show();
result += ob2; // TwoD + TwoD
ob2.Show();
result.Show();
}
}
همانطور که ميبينيد، هنگاميکه + روي دو شيء TwoD اعمال شده، مختصات اين دو شيء با هم جمع ميشود و هنگاميکه + روي يک شيء TwoD و يک مقدار int اعمال شده ، فيلدهاي شيء با مقدار int جمع شده است.
overload کردن + کاربرد مفيدي را به کلاس TwoD ميافزايد اما هنوز اين تمام چيزي نيست که مورد نياز است و در واقع کار هنوز تمام نشده است. متد (operator+(TwoD, int تنها براي عبارتي از اين جمله:
ob1 = ob2 + 10;
مجاز است و عبارتي مثل:
ob1 = 10 + ob2;
را نميپذيرد. به اين دليل که argument عدد صحيح، دومين argument است يعني آن operand که در سمت راست قرار دارد. اما در عبارت قبلي ميبينيد که argument عدد صحيح را در سمت چپ قرار دادهايم. براي اينکه هر دو عبارت براي استفاده مجاز باشند، بايد يک بار ديگر + را overload کنيد. اينبار بايد اولين پارامتر را int و دومين پارامتر را TwoD در نظر بگيريد.
به اين ترتيب، يک ورژن از متد ()+operator براي TwoD + int و يک ورژن ديگر آن براي int + TwoD است. Overload کردن + (يا هر binary operator ديگري) به اين شکل باعث ميشود تا يک built-in type هم بتواند در سمت چپ و هم در سمت راست قرار بگيرد. در نمونهي زير ميبينيد که چگونه + همانگونه که شرح داده شد، overload شده است:
using System;
class TwoD
{
int X, Y;
public TwoD()
{
X = Y = 0;
}
public TwoD(int a, int b)
{
X = a;
Y = b;
}
// Overload binary + for TwoD + int.
public static TwoD operator +(TwoD op1, int op2)
{
TwoD result = new TwoD();
result.X = op1.X + op2;
result.Y = op1.Y + op2;
retu result;
}
// Overload binary + for int + TwoD.
public static TwoD operator +(int op1, TwoD op2)
{
TwoD result = new TwoD();
result.X = op1 + op2.X;
result.Y = op1 + op2.Y;
retu result;
}
// Overload binary + for TwoD + TwoD.
public static TwoD operator +(TwoD op1, TwoD op2)
{
TwoD result = new TwoD();
result.X = op1.X + op2.X;
result.Y = op1.Y + op2.Y;
retu result;
}
public void Show()
{
Console.WriteLine(X + ", " + Y);
}
}
class OpOverloadingDemo
{
static void Main()
{
TwoD a = new TwoD(1, 2);
TwoD b = new TwoD(10, 10);
TwoD c = new TwoD();
Console.Write("Here is a: ");
a.Show();
Console.WriteLine();
Console.Write("Here is b: ");
b.Show();
Console.WriteLine();
c = a + b; // TwoD + TwoD
Console.Write("Result of a + b: ");
c.Show();
Console.WriteLine();
c = b + 10; // TwoD + int
Console.Write("Result of b + 10: ");
c.Show();
Console.WriteLine();
c = 15 + b; // int + TwoD
Console.Write("Result of 15 + b: ");
c.Show();
}
}
overload کردن عملگرهاي رابطهاي
عملگرهاي رابطهاي (Relational Operators)، مثل == يا > ميتوانند بهسادگي overload شوند. بهطور معمول، يک عملگر رابطهاي overload شده، مقدار true يا false را retu ميکند، بهاين دليل که حالت و کاربرد استاندارد عملگرهاي رابطهاي حفظ شود و بتوان از آنها در عبارتهاي شرطي استفاده کرد. اگر در اين موارد بهجاي مقادير bool چيزي ديگري را retu کنيد، به شدت کاربرد اين operator را محدود کردهايد. نکتهي مهم ديگر اينجاست که بايستي relational operators را بهطور جفتي overload کنيد. بهعنوان مثال اگر > را overload کرديد، بايستي < را نيز overload کنيد. اين مورد براي operator هاي (<= و >=) و (== و !=) نيز صادق است.
using System;
class TwoD
{
int X, Y;
public TwoD()
{
X = Y = 0;
}
public TwoD(int a, int b)
{
X = a;
Y = b;
}
public static bool operator <(TwoD op1, TwoD op2)
{
retu ((op1.X < op2.X) && (op1.X < op2.Y));
}
public static bool operator >(TwoD op1, TwoD op2)
{
retu ((op1.X > op2.X) && (op1.Y > op2.Y));
}
}
class OpOverloadingDemo
{
static void Main()
{
TwoD ob1 = new TwoD(1, 4);
TwoD ob2 = new TwoD(2, 3);
if (ob1 > ob2)
Console.WriteLine("ob1 is greater than ob2");
if (ob1 < ob2)
Console.WriteLine("ob1 is less than ob2");
}
}
در مثال بالا، (operator>(TwoD, TwoD در صورتي true را retu ميکند که هم X و هم Y شيء اول از X و Y شيء دوم بزرگتر باشد. (operator<(TwoD, TwoD در صورتي مقدار true را retu ميکند که هم X و هم Y شيء اول از X و Y شيء دوم کوچکتر باشد.
نکتهي ديگر اينکه اگر ميخواهيد operator هاي == و =! را overload کنيد، بايستي متدهاي ()Object.Equels و ()Object.GetHashCode را نيز override کنيد. در مورد اين متدها و تکنيک overriding بعداً صحبت خواهيم کرد.
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 290
تاريخچه وب
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 346
اتحاد جماهير شوروي آن زمان موشکي با نام «اسپونيک» (Spotnik) را به فضا ميفرستد و نشان ميدهد داراي قدرتي است که ميتواند شبکههاي ارتباطي آمريکا را توسط موشکهاي بالستيک و دوربرد خود از بين ببرد. آمريکاييها در پاسخگويي به اين اقدام روسها، موسسه پروژههاي تحقيقي پيشرفته “ARPA” را بهوجود آوردند. هدف از تاسيس چنين موسسهاي پژوهش و آزمايش براي پيدا کردن روشي بود که بتوان از طريق خطوط تلفني، کامپيوترها را به هم مرتبط نمود. به طوري که چندين کاربر بتوانند از يک خط ارتباطي مشترک استفاده کنند. در اصل شبکهاي بسازند که در آن دادهها به صورت اتوماتيک بين مبدا و مقصد حتي در صورت از بين رفتن بخشي از مسيرها جابهجا و منتقل شوند. در اصل هدف “ARPA” ايجاد يک شبکه اينترنتي نبود و فقط يک اقدام احتياطي در مقابل حمله احتمالي موشکهاي اتمي دوربرد بود. هر چند اکثر دانش امروزي ما درباره شبکه بهطور مستقيم از طرح آرپانت “ARPPA NET” گرفته شدهاست. شبکهاي که همچون يک تار عنکبوت باشد و هر کامپيوتر ان از مسيرهاي مختلف بتواند با همتايان خود ارتباط دااشته باشد واگر اگر يک يا چند کامپيوتر روي شبکه يا پيوند بين انها از کار بيافتاد بقيه باز هم بتوانستند از مسيرهاي تخريب نشده با هم ارتباط بر قرار کنند. طراحی وب سایت
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 285
Beginners' Guide to Web Design with WordPress
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 347
گزينشکرها (selectors)
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 326
سريعترين و ساده ترين روش براي ساخت وب سايت خود را عملياتي را فقط در چند دقيقه است که نصب ورد پرس است که بستر هاي نرم افزاري رايگان وبلاگ نويسي. ورد پرس شما اجازه مي دهد براي دريافت رايگان از پيش ساخته شده وب سايت که شما برخي از جنبه هاي متمرکز نشان مي دهد مانند مطالب, منافع, فروش وب سايت شما و…. در اين مقاله ما در مورد مطبوعات واژه ها و منافع آن به طور مفصل مورد بحث.
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 264
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 549
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 280
پردازش فرم ها با زبان PHP
فرم ها يکي از مهمترين و شايد جالب ترين کاربردهاي زبان قدرتمند PHP مي باشد ، فرم ها در طراحی وب سایت کاربردهاي بسيار زيادي را دارند ، اين کاربرد ها از قبيل :ثبت کاربران جديد ، دريافت سفارش در فروشگاه هاي اينترنتي ، ارسال فيدبک و ... مي باشند
همانطور که ملاحظه نموديد ، همه ي اين فرم ها دقيقا به يک صورت عمل يا پردازش مي شوند ، ايجاد يک فرم و طراحی وب سایت آن با استفاده از زبان HTML و CSS صورت مي گيرد ولي پردازش اين فرم يا به عبارتي ديگر کاري که فرم انجام مي دهد مثلا ارسال ايمل توسط يکي از زبان هاي تحت سرور همانند PHP و يا ASP صورت مي گيرد.
در اين سري مجموعه هاي آموزش پردازش فرم در سون لرن سعي مي کنيم تا شما را به صورت کامل و کاربردي با پردازش فرم همراه با يک يا دو پروژه عملي مثل ساخت Quizو يا فرم تماس با ما آشنا خواهيم کرد.
در ابتدا ما قصد داريم يک فرم را با بک سري فيلد هاي مشخص تعريف نمائيم:
نام و نام خانوادگي
ايميل
پيام شما
1 <form action="" method="post">
2 Name: <input type="text" name="name" />
3 Email: <input type="text" name="email" />
4 Comment: <input type="text" name="comment" />
5 <input type="submit" />
6 </form>
از اين پس ما بر بخش آموزش پردازش فرم با php با اين فرم کار طراحی وب سایت خواهيم کرد.
اما قبل از اينکه شروع به کد نويسي براي پردازش فرم ها نمائيم ، بهتر شما را با تفاوت متدهاي Get و Post آشنا سازيم:
تفاوت دو متد Get و Post :
بهترين طريقه آموزش طراحی وب سایت براي نمايش تفاوت بين اين دو متد ، استفاده از فرم مي باشد ، ما با همان فرم قبلي کار خود را شروع مي کنيم ، در ابتدا فرم خود را از متد Post به Get تبديل نمائيد :
1 <form action="" method="get">
سپس فرم خود را در xampp اجرا نمائيد ، حال اگر شما هر فيد نام ، ايميل و پيام را وارد نمائيد و دکمه Submit را کليک کنيد ، در نوار آدرس مرورگر خود با آدرس زير مواجه مي شويد:
http://localhost/xampp/aaa.php?name=MiladHeydari&email=miladbruce%40live.com&comment=i+love+the+world!
همانطور که ملاحظه نموديد ، شما تمام مقاديري که در فيلدهاي خود وارد نموديد ، در نوار آدرس مشخص گرديد ، پس يعني متد Get چندان ايمن يا Secure نيست!
اما هم اکنون متد فرم خود را از Get به Post تغيير دهيد :
1 <form action="" method="post">
حال اگر فيلدهاي طراحی وب سایت فرم خود را پر کنيد ف و بر روي دکمه Submit کليک نمائيد ، هيچ گونه تغييري را در نوار آدرس مرورگر خود ملاحظه نخواهيد کرد.
نتيجه گيري :
همان طور که ديديد ، متد Get داده هاي شما را به صورتي نمايش مي دهد که در معرض ديد است و همچنين مرورگرهايي همچون Inteet Explorer يک محدوديت کارکتري در نوار آدرس را براي خود ايجاد کرده اند به طول 2048 کاراکتر ، بنابراين از متد Get فقط زماني استفاده مي شود که پاسخ فرم ما بسيار کوتاه باشد و همچنبن متد Get چندان ايمن نيست!
ولي در مقابل متد Post ايمن تر بوده و مي توان اطلاعات يک فرم را به اندازه 8 مگابايت کاراکتر پردازش کرد ، به طور معمول اکثرا از متد Post براي فرم ها استفاده مي کنند ولي Get نيز کاربرد خاص خود را دارد به عنوان مثال اکثر سايت هايي که امکان جستجو را به کاربران خود مي دهند ، فرم جستجوي خود را با متد Get طراحي کرده اند ، در اين صورت اين کار مي تواند حتي باعث افزايش بازديد نيز شود و همچنين کاربران مي توانند آدرس جستجو را در مرورگر خود BookMark نمايند.
ساده و منطقي است. مرورگر HTML را مثل وقتي که شما انگليسي را ميخوانيد مي خواند: از بالا به پايين و از چپ به راست. بنابراين يک سند HTML ساده با آن چيزي که بايد اول بيايد شروع مي شود، و با آن چيزي که بايد در انتها بيايد به آخر مي رسد.
اولين کاري که نياز داريد انجام دهيد، اين است که به مرورگر بگوييد که، شما با زبان HTML مي خواهيد با او گفت و گو کنيد. اين کار با برچسب <html> انجام مي شود. بنابراين قبل از اينکه هر کاري را غير از اين انجام دهيد، برچسب <html> را در اولين خط از سندتان در برنامه notepad تايپ کنيد.
همانطور که ممکن است از درس هاي قبل به ياد داشته باشيد، <html> يک برچسب باز است و بايد زماني که نوشتن کدهاي html تان به پايان رسيد، با برچسب بسته به اتمام برسد. بنابراين براي اينکه مطمئن شويد که برچسب بسته را فراموش نمي کنيد، طراحی وب سایت حال <htm/> را در دو خط پايين تر تايپ کنيد و بقيه کدهاي اچ تي ام ال را بين <html> و <html/> تايپ کنيد.
مورد بعدي که سندتان به آن احتياج دارد برچسب <head> است، که اطلاعاتي را در مورد صفحه آماده مي کند. و <body> که محتواي سندتان در آن وجود دارد. به دليل اينکه اگر HTML منطقي نباشد بي ارزش ميشود، برچسب باز و بسته head، بايد بالاي برچسب باز و بسته body قرار گيرد.
برچسب : طراحی وب سایت,طراحی سایت,طراحی وب, نویسنده : ali webmary19 بازدید : 302