استكمالا لففرة منير بركات حول تصميم الويب التفاعلي Responsive Web Desigen أضع لكم بعض المواقع الجميلة والجذابة
أو بالأحرى ، بعض المواقع التي ستصدمك
d
استكمالا لففرة منير بركات حول تصميم الويب التفاعلي Responsive Web Desigen أضع لكم بعض المواقع الجميلة والجذابة
أو بالأحرى ، بعض المواقع التي ستصدمك
عند الإنتهاء من برمجة موقع ، والتأكد من أن البرمجة لا تحتوي على أخطاء ، تحتاج لعمل مراجعات عديدة وهامة، مثلا توافقه مع محركات البحث، وجود روابط لا تعمل، دعمه للجوال وغيرها من هذه المراجعات والفحوصات الهامة ، ولكن من أين يبدأ المبرمج الغلبان ؟
الإجابة من هذا الموقع
http://webdevchecklist.com/asp.net/
فكرة الموقع بسيطة ، وبالتأكيد ستعجبك وستعرف كيف تستخدمه
بالتوفيق لكم
عندما تريد إجراء تحقق من أداة CheckBoxList فإن الأمر لن ينجح معاك بالشكل المطلوب
، والحل بسيط جدا : ألا وهو استخدام أداة خاصة لهذا الغرض . وقد قمت بإرفاقها لكم
على هذا الرابط
CheckBoxListValidator
قم باستدعاء الأداة في قائمة الأدوات ، ثم اسحب الأداة واستخدمها كأي أداة
تحقق عادية
بالتوفيق للجميع
واجهتنا مشكلة طباعة Form على الطابعة بأبعاد مختلفة مع تحديد هذه الأبعاد، وإمكانية نقلها وطباعتها على طابعات مختلفة، وبعد التفكير توصلنا إلى عدة حلول وكان أبسطها وأقلها كلفة للوقت والجهد تحويل ال Form لصورة وإمكانية التحكم في أبعادها لاحقا.
بداية الأمر، استخدمنا شيفرة طباعة الشاشة، ومن ثم قمنا باقتصاص حجم الForm منها في صورة كالتالي
وفق الله الجميع
وهذا مثال على ذلك
<div onmousedown="javascript:window.open('http://www.tkfithat.com/Details.aspx?depid=166');"
style="text-align: center; vertical-align: middle"> <embed wmode="transparent"
allowfullscreen="false"
allowscriptaccess="always" height="136" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" width="300"
src="http://www.3orod.com/ImagesStore/AdsMedia/201102161044541826936843.swf"
quality="high" wmode="transparent" />
</div>
وهنا قمت بجعل الكود يفتح صفحة جديدة عند النقر على كائن الفلاش، وهذا الفكرة الأساسية
، تستطيع الاستزادة مثلا بتخصيص نفس هذه الخصائص للوسم <object> هنا وضعت الوسم
<embed> على سبيل المثال.
أتعرف …أعتقد أنه عند قراءتك للعنوان …. للوهلة الأولى سيتبدى في ذهنك السؤال التالي: هل فعلا هناك طريقة جيدة ومثالية لتعلم لغة برمجة وأيضا احترافها؟؟
أنا أقول لك وبكل ثقة نعم . ولم لا !! فالأمر ليس مستحيلا ولكن الأمر يحتاج بعض الاجتهاد والصبر لتنل ما تريد…إذا لنبدأ رحلتنا معا لتكتشف كيف يمكنك فعل ذلك ولتصل إلى الاحتراف الذي تتمناه.
ولكن قبل أن أبدأ….أنت تعرف أن كل أمر نراه ولا نعرفه نجده صعبا . وأحيانا نقنع أنفسنا باستحالة تعلمه في يوم من الأيام. ولكن في حال تعلمناه…يصبح سهلا جدا بالنسبة لنا حتى أننا نستهين به أحيانا ولا نتذكر كيف أننا كنا نعتبره صعبا أو مستحيلا في يوم من الأيام.
الآن أخبرني :
إن كان لديك الرغبة في تعلم أمر معين في الحياة…مثل تعلم اللغة الإنجليزية أو قيادة السيارة أو تصليح الأجهزة الكهربائية وغيرها…ماذا تفعل ؟؟
الجواب بسيط وأنت تعرفه جيدا …. ستخبرني بأنك ستقرأ كتبا عن الأمر الذي تريد تعلمه وبعدها ستحاول تطبيق ما قرأته لإتقانه يعني إن أردت تعلم اللغة الإنجليزية ستقوم بتعلم قواعد اللغة ومعانيها لكي تستطيع تكوين الجمل وبعد ذلك التحدث بها وبالاستمرار في ذلك ستحترف اللغة وستتكلم بها بطلاقة
إذا…أنت تعرف الطريقة التي بها يمكنك تعلم لغة برمجة واحترافها….فتعلم لغة برمجة ستكون بنفس الطريقة التي تتعلم بها أي أمر آخر في حياتك.
في البداية ستقوم بالبحث عن أفضل اللغات والتي تحمل الكثير من المزايا والإمكانيات الرائعة والتي ستلبي احتياجاتك في الحياة العملية. ولن أخبرك بها فيجب أن تقوم باكتشافها بنفسك لأنك في النهاية ستعتبرها وجهة نظر مني لا أكثر.أنت لديك عقل وتستطيع التفكير وبناء على قراءتك لمساوئ ومميزات كل لغة ستقرر أي لغة الأفضل لك .
الآن لديك اللغة التي تريد تعلمها ولديك الرغبة القوية لذلك وأنا أؤكد على الرغبة كثيرا لأنه بدونها لن تكمل مشوارك في التعلم
ستقوم بعد ذلك بقراءة كتب لتعلم قواعد اللغة ولا تقم بالقراءة كأنك تقرأ قصة أو مجلة للتسلية ولكن يجب عليك القراءة وتطبيق ما تقرأه بالموازنة فما نقرأه ننساه بسرعة ولكن ما نطبقه عمليا يظل محفورا في أذهاننا
واعلم أن جميع لغات البرمجة بغض النظر عن محاسنها ومساوئها تعتمد على نفس الأساسيات ونفس المفاهيم ولكن تختلف في طريقة كتابة الأمر البرمجي فعلى سبيل المثال إن أردت حجز متغير في الذاكرة لتخزين أرقام صحيحة بداخله بلغة الفيجوال بيسك دوت نت فالأمر سيكون كالتالي
Dim x as integer
ويتم كتابة نفس الأمر بلغة السي شارب بهذه الطريقة
Int x;
والأمر متشابه عند باقي لغات البرمجة وقس هذا الأمر على غيرها من الأوامر البرمجية..
من هنا نستنتج أنك بتعلم لغة برمجة …تستطيع الانتقال بسهولة إلى أي لغة أخرى
وبعد انتهائك من تعلم قواعد اللغة…لا تظن أنك أصبحت خبيرا وأنك تستطيع البرمجة بكل سهولة ولا أقول لك ذلك لكي أحبطك أو أجعلك تيأس بالعكس فغرضي أن أبين لك الحقيقة لأنني إن لم أخبرك بذلك ستكتشف ذلك بنفسك ولن تصدقني وستظن بأنني أقوم بسرد نصائح عابرة لا أساس لها من الصحة
فيجب عليك أن تختلق برنامج من نسج خيالك وتقوم ببرمجته لكي تستعمل كل ما تعلمته فيه…هنا ستواجهك المشاكل والصعوبات…وسيكون عليك أن تتحلى بالصبر والمثابرة لصمودك وعدم تخليك عن النجاح الذي تريد الوصول إليه…توكل على الله وأعلم أن الله لا يضيع تعب أحد على الإطلاق
سيتطلب منك البحث كثيرا عبر الإنترنت لحل مشاكلك وهو أفضل مرجع لك للوصول إلى ما تتمناه ولا عيب بأن تطلب المساعدة بمن هو أكثر خبرة منك ومع حل كل مشكلة ستكتسب معرفة جديدة وبالمداومة على ذلك ستصبح خبيرا وسترى نتائج تعلمك.
وأعلم أن من نجح قبلك ليس أفضل منك ولا تحاول مقارنة نفسك بمن هو أفضل منك ولكن قم بقياس مستواك منذ بداية تعلمك وحتى فترة معينة…إن وجدت فرقا وسيكون بالطبع للأحسن فأنت تسير في الطريق الصحيح وقم بالمداومة على ذلك لكي تتابع تقدمك المستمر لأن ذلك سيكسبك ثقة أكبر بنفسك وستكون أكثر حماسا وتأكد بأنك ستصبح أفضل بمن كان أفضل منك في يوم من الأيام
وأروع أمر هو بدون أدنى شك رؤيتك لنجاحك بعد تعبك وجهدك الذي استمر وقتا طويلا…ستغمرك السعادة والفرح عند انتهاءك من برنامج قد أخذ منك وقتا وجهدا كبيرا
ترى أنت تتساءل لماذا أتكلم بهذه الثقة الكبيرة وكأنني مررت بهذه التجربة…أقول لك نعم..
أنا أتكلم من تجربتي الشخصية التي مررت بها …وإلى الآن أتعلم أمورا جديدة في حياتي…فنحن مهما تعلمنا ستظل أمورا كثيرة لا نعرفها وسنظل نتعلم إلى الأبد.
ومن يريد التعلم يبدأ من اليوم ولا يؤجل ذلك للغد وتمنياتي بالتوفيق لكل من سيبدأ باكرا
في الإصدارات السابقة من الدوت نت تطلب الأمر منك إذا أردت أن تعرف خاصية Property أن تعرفها بالشكل العام كالتالي:
تسهيل جديد من مايكروسوفت على المطورين ، وخطوة جيدة من قبلهم
وفق الله الجميع
احمي موقعك من تغرة XSS
رغم أن ثغرة XSS تعتبر ثغرة قديمة، إلا أنها قد شاعت في هذه الأيام XSS حتى أنها أصبحت كابوسا كبيرا لكثير من المواقع والبرمجيات الجاهزة كالمنتديات وما شابه، وهنا سأطرح الحلول المقترحة لهذه المشكلة في الدوت نت بإذن الله.
بداية، ما سأقوم بعرضه يكفي فقط للدوت نت الإصدار 1.1 وما بعده مثل الإصدار 2.0 وأما بخصو ص الإصدار 1.0 فتوجد حلول أخرى لحل هذه الثغرة وهو ما لن أهتم به لأن من يستخدم الإصدارات القديمة كان الواجب عليه أن يواكب التحديثات.
إن هذه المشكلة تظهر عند مناطق إرسال البيانات، فمثلا لدي صفحة بها صندوق نصي وأقوم عبرها بإرسال البيانات للخادم ، فقام شخص ما بكتابة الجملة التالية:

وهذا وسم جافا سكريبت يظهر رسالة، وليست الخطورة في هذا الوسم ولكنها تكمن في إمكانية إرسال وسوم أخرى عديدة شأنها تغيير عمل الصفحة بالكامل.
الحل يكمن في أن نقوم بمنع إرسال هذه الوسوم للخادم ، وإذا كانت الصفحة تحتاج لإرسال قيمة بالرابط QueryString يجب فحصها في الصفحة التالية لها ( صفحة قراءة البيانات ).
لتلافي منع إرسال وسوم خطيرة إلى يتوجب عليك أن تقوم بتفعيل فحص المدخلات عبر الخاصية ValidateRequest=”true” في الصفحة في أول سطر بها.

وهذه الخاصية جديدة في الإصدار 1.1 وما بعده وهدفها فحص مدخلات الصفحة المرسلة، فإذا وجد أن هنالك وسوم ممنوعة ، سوف يقوم الخادم برمي خطا من نوع HttpRequestValidationException وهو ما يمكنك أن تقوم بفحصه عبر الملف Global.asax في ححدث الخطأ ، وتقوم بإطهار رسالة أو صفحة خاصة له تخبره مثلا ، بأن هذا الأمر ممنوع ، أو عار عليه إذا رغبت بذلك .

أو أن تقوم بتفعيلها في ملف الإعدادات Web.Config في وسم الصفحة validateRequest=”true”، مع العلم أن هذا هو القيمة الإفتراضية لهذه الخاصية هي true ، بمعنى إن لم تكن قد غيرتها فلا تقوم بفعل شيء.

الأمر الآخر هو عند إرسالك لبيانات من صفحة إلى أخرى ، عليك أن تقوم بإستدعاء الدالة Server.HtmlEncode() عند الإرسال ، وعند استقبال البيانات عليك قراءتها عبر الدالة Server.HtmlDecode()، أو مثلا أن تستقبل البيانات من ويب سيرفس أو من قاعدة بيانات أخري، على سبيل المثال أنني مثلا أريد أن أرسل اسم المستخدم المكتوب في الصندوق النصي لصفحة أخرى كالتالي
فإنه يتوجب إضافة الدالة بالشكل التالي
وعند قراءة البيانات في الصفحة الثانية أن تقرأ بالشكل التالي
أما بخصوص الإصدار 1.0 فإنه توجد بعض الحلول الفعالة مثل استخدم Reqular Expression في فحص المدخلات أو القيم المرسلة ، أو بطريقة بسيطة وغير دقيقة استبدال الوسوم بالقيم المشابهة لها من ال HTML
بالتوفيق للجميع
العديد منا تواجهه مشكلة عندما يريد ربط برنامج قام بصنعه بقاعدة بيانات موقع قام بصنعه أو العكس ، أو يريد عمل موقع يستطيع أي شخص التواصل مع قاعدته وأخذ ما يريد على أن يسمح له الموقع بذلك أو حتى السماح له بالإضافة في هذه القاعدة . ومع الدوت نت ، هذا الأمر سهل للغاية وممكن إنجازه بعدة تقنيات ، وهذا المقال يتطرق لأبسط هذه التقنيات.
ولكن …لعل البعض يتساءل ، ما الهدف من ربط الموقع بالبرنامج ؟!
الأمر له فائدة كبيرة، فأنت على سبيل المثال تستطيع عمل برنامج يبقى على جهاز المستخدم يقدم نفس خدمات الموقع وذلك لتريح المستخدم من عناء فتح الموقع والتنقل من خلاله، أو تستطيع ربط عدة مواقع بقاعدة بيانات موقعك مثل موقع امازن ويستطيع أي شخص الوصول لخدمات موقعك كما يقوم جوجل ولايف وياهو وباقي المواقع الضخمة ، ولكن كيف سيتم هذ الأمر ؟؟
بما أن البرنامج سيقدم نفس الخدمات ( أو جزء منها ) التي سيقدمها الموقع ، فهذا يعني أن قاعدة البيانات ستكون مشتركة بين الاثنين ( أو جزء منها ) ، ولتفرض أن الموقع هو صاحب القاعدة الأساسية ، والبرنامج هو الجزء المستفيد من هذه القاعدة ، وهي مرفوعة على الإنترنت
سيكون الحل كالتالي : سنقوم بعمل دالة عادية ولكن سنقوم بوضعها في منطقة خاصة وبمواصفة خاصة (Attribute) ، وسنقوم باستدعائها من البرنامج.
سيتم إضافة جميع الدوال التي نحتاجها في ويب سيرفس (web service) وبعدها نستدعيها في البرنامج ، وهذا الأمر يتم بالشكل التالي
، سنقوم بإضافة ويب سيرفس وذلك بالنقر بالزر الأيمن للماوس على اسم الموقع من قائمة.Solution Explorer ونختار add New item ومن ثم نختار web service
وبعدها سنقوم بكتابة جميع الدوال التي سنحتاجها على أن يسبق كل دالة _<()WebMethod> ولننظر إلى الدالة التالية على سبيل المثال وهي لاسترجاع اسم جهاز الحاسوب ونظام التشغيل المستخدم:_<()WebMethod>
من المميزات الرائعة التي قدمتها ASP.NET لمطوري المواقع
هي أدوات التحقق
لذلك دعنا نرى ما هي هذه الأدوات وما هي الفائدة منها ؟
الكثير منا يقوم على سبيل المثال بالتسجيل في المنتديات وتكون البيانات المدخلة تتبع
شروط معينة فعند إدخال البيانات يتم التحقق منها ويتم ظهور رسالة
تفيد بوجوب تغيير حقل معين في حال عدم تطابقه لشرط معين كمطابقة كلمة السر في مربع
النص الأول مع تأكيده في مربع النص الثاني
فالتحقق هي قواعد يتم تطبيقها على البيانات المدخلة من قبل المستخدم
وقد قدمت لنا ال ASP.NET خمس أنواع
من أدوات التحقق التي تتميز كل منها بوظيفة معينة تختلف عن غيرها والتي وفرت الوقت
الكثير لمطوري المواقع فباستخدامها لا تحتاج إلى كتابة سطر برمجي واحد بعكس لغات الويب
الأخرى المختلفة التي تطلب برمجة عمليات التحقق باختلاف أنواعها ووظائفها
x–
وسنقوم باستعراض كل نوع على حدة بشكل مفصل وأول
نوع فيها هو:
وهذه الأداة مهمتها التأكد من أن المستخدم قام بإدخال قيمة في المكان المراد أو لا
ولتوضيح ذلك سنعطي مثالا
وهو بعمل جدول من سطرين وعمودين ووضع مربع نص وزر وأداة التحقق RequiredFieldValidator
بالشكل التالي مع إعطاء اسم الأداة التي سيتم إجراء التحقق عليه لخاصية
ControlToValidate التابعة لأداة التحقق والتي ستكون هنا
TextBox1 وأيضا إدخال النص الذي تريده في خاصية ErrorMessage
وهي رسالة الخطأ التي تظهر للمستخدم في حال لم يدخل قيمة في مربع النص مع ترك خاصية
Text فارغة :

بعد ذلك قم بتنفيذ الصفحة وتجربة الحالتين : الأولى بإدخال قيمة في مربع النص والضغط
على الزر وفي هذه الحالة لن تظهر رسالة الخطأ والثانية بترك مربع النص فارغ والضغط
على الزر وفي هذه الحالة تظهر رسالة الخطأ تعلمك بوجوب إدخال قيمة معينة
وأريد أن أقوم بالتنبيه على أمر مهم ألا وهو التأكد من أن خاصية CausesValidation
التابعة للزر تأخذ القيمة True وذلك لإنجاز عملية التحقق عند
الضغط على الزر
وهذه الأداة مهمتها المقارنة بين قيمتين إما من خلال المقارنة بين قيمة مدخلة في
مربع نص وقيمة مدخلة في مربع نص آخر أو بمقارنة قيمة مدخلة في مربع نص مع قيمة ثابتة
وأيضا سنعطي مثالا كسابقتها لتوضيح الفكرة وطريقة استخدامها
وهنا سنقوم بتوضيح الفكرة الأولى وهي بمقارنة قيمة مدخلة في مربع النص الأول مع قيمة
مدخلة في مربع النص الثاني
وسيكون ذلك بعمل جدول من 3 سطور وعمودين وإضافة مربعين نص وزر وأداة التحقق
CompareValidator بالشكل التالي :

ويلزمنا الاهتمام بالخصائص التالية التابعة لأداة التحقق :
ControlToValidate: وتحتوي اسم الأداة التي سيتم التحقق من البيانات
المدخلة به
ControlToCompare: وتحتوي اسم الأداة التي سيتم مقارنته مع الأداة الآخر
والذي تم تحديده في الخاصية السابقة
ErrorMessage: وتحتوي على رسالة الخطأ التي ستظهر للمستخدم في حال اختل
شرط التحقق
Operator: وهي لتحديد العملية التي على أساسها سيتم التحقق بين القيمتين
إما بالتساوي أو غيرها
Type: وهي لتحديد نوع البيانات المدخلة التي سيتم التحقق منها إما أعداد
صحيحة أو نص أو غيرها
ولتوضيح الفكرة الثانية وهي بمقارنة قيمة مدخلة في مربع نص مع قيمة ثابتة وذلك بإضافة
مربع نص واحد وزر وأداة التحقق وسنهتم بنفس خصائص أداة التحقق التي تم ذكرها عند توضيح
الفكرة الأولى مع فارق بسيط وهو أننا هنا لن نهتم بالخاصية ControlToCompare
ولكن اهتمامنا سينصب على الخاصية ValueToCompare والتي من خلالها
سيتم إدخال القيمة الثابتة بناء على نوع البيانات الذي قمت بتحديده في الخاصية
Type
بعدها قم بالتجربة والتنفيذ ورؤية النتائج بنفسك
وهذه الأداة مهمتها التحقق من أن القيمة المدخلة واقعة تحت مدى معين
لنعطي مثالا لتوضيح الفكرة : سنقوم بإضافة مربع نص وزر وأداة التحقق بالشكل التالي

والاهتمام بالخصائص التالية لها وهي :
ControlToValidate و ErrorMessage و
Type: وتم شرحها سابقا ويلزمنا هنا أيضا خاصية
MaximumValue وهي لتحديد القيمة القصوى التي لا يمكن أن يتعداها المستخدم
عند إدخال قيمة معينة في مربع النص وخاصية MinimumValue وهي
لتحديد القيمة الدنيا التي يجب أن يلتزم المستخدم بالبدء منها عند تحديده للقيمة المدخلة
في مربع النص
وهذه الأداة مهمتها التأكد من صحة صياغة أو شكل القيمة المدخلة يعني على سبيل المثال
مربع النص الخاص بالبريد الإلكتروني ، فنحن نعلم أن البريد الإلكتروني يتبع صيغة ثابتة
في الكتابة لا يمكن تغييرها ولمنع المستخدم من كتابة أي نص عشوائي في خانة البريد الإلكتروني
والتزامه بالصيغة المعروفة له يتم استخدام أداة التحقق هذه ولتوضيح ذلك ، سنضع مربع
نص وزر وأداة التحقق وتحديد الصيغة الثابتة التي سيتم التحقق من خلالها من الخاصية
ValidationExpression بالإضافة إلى خاصية ControlToValidate
و ErrorMessage والتي تم شرحها في أدوات التحقق السابقة

لنفترض أننا نريد التحقق من أن القيمة المدخلة تقبل القسمة على العدد 5
، هنا لا نستطيع استخدام أيا من أدوات التحقق السابقة لأن لا أحد منها
يقدم هذه الخدمة ، لذلك لغة ال ASP.Net أضافت
هذه الأداة لإتاحة الفرصة أمام مطور المواقع بالتحقق من خلال الأمر الذي يريده والتي
لا توفرها أيا من أدوات التحقق الأخرى ولكن يتطلب هنا استخدام
Jscript أو VBScript
لكتابة الدالة التي من خلالها سيتم التحقق ولنطبق مثالا لتوضيح الفكرة:
في البداية أضف مربع نص وزر وأداة التحقق إلى صفحة الويب وبعدها في صفحة السورس أضف
الكود التالي بين بداية ونهاية head tag
<script
language=JavaScript>
function validateNumber(oSrc, args) {
args.IsValid = (args.Value % 5 == 0);
}
</script>
وبعدها نعطي اسم الدالة لخاصية ClientValidationFunction
التابعة لأداة التحقق وبعدها تستطيع تنفيذ الأمر

ويمكنك أيضا إظهار رسائل الخطأ في صندوق حوار وذلك بإعطاء الخاصية showSummery
القيمة False بينما يتم إعطاء الخاصية showMessageBox
القيمة True بالشكل التالي:

بعد استعراض أدوات التحقق، هل رأيت مدى سهولة استخدامها والوقت الذي توفره، أرأيت
البراعة التي تمتلكها شركة مايكروسوفت في توفير كل ما يريح مطورو المواقع فهي لا تنسى
أي أمر يعد مهما في تطوير المواقع.