اذهب إلى المحتوى

لوحة المتصدرين

  1. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      4

    • المساهمات

      13209


  2. احمد علي42

    احمد علي42

    الأعضاء


    • نقاط

      3

    • المساهمات

      6


  3. كمال شلبي

    كمال شلبي

    الأعضاء


    • نقاط

      2

    • المساهمات

      15


  4. محمد عاطف17

    محمد عاطف17

    الأعضاء


    • نقاط

      2

    • المساهمات

      3130


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 03/06/24 في كل الموقع

  1. اريد ان اتعلم تطير المواقع ولمني خائف ان بالمستقبل لن يون ضروريا اريد ان اصبح فل ستاك ولكن الai يقوم ببعض الاعمال واخاف بالمستقبل لن يكون داعي ويدهب كل وقتي دراستي على الفاضي لدير خيار لتعلم الai ولكني لا احب الرياضيات ايضا لدي سؤال اخر هل من الممكن تعلم تطوير تطبيقات الجوال والمواقع معا لزيادة فرص العمل؟ ام سيكون اصعب
    2 نقاط
  2. 1. كيف يمكنني إنشاء ملفات pdf بواسطة بايثون بحيث تكون على شكل جدول مثلا كود المنتج اسم المنتج السعر الكمية يوجد ملف مرفق فيه الخانات كبيرة جدا فأريد تصغيرها لحجم مناسب 2. أريد استخدام الأرقام العربية بدلا من الأرقام اللاتينية في العديد من البرامج. كيف ذلك؟ في الملف المرفق مثال. وشكرا لكم mydoc.pdf
    2 نقاط
  3. احتاج برنامجا للحساب علامات الطالب على لغه بايثون يمكنني ادخال اسم بعض من الطلبه وعلاماتهم
    2 نقاط
  4. السلام عليكم. أواجه مشكل في إستعمال الألوان الخاصة بتحديد رسالة خطأ. الكود الذي قمت به لرسالة الخطأ import React from 'react' function Message({ variant, children }) { console.log(variant) return ( <div className={`m-4 rounded-lg py-5 px-6 mb-4 text-base text-${variant}-700 bg-${variant}-100`} > {children} </div> ); } export default Message المشكل هو أنه لم يتسنى قراءة variant. مثلا في الكود التالي <Message variant='red'>ُحصل خطأ ما</Message> في هذه الحالة لم تظهر رسالة الخطأ باللون الأحمر وبخلفية حمراء، بالرغم أن console يظهر red (قيمة variant) شكرا لكم.
    2 نقاط
  5. في مقال اليوم نقدم دليلًا سريعًا مدعمًا بالأمثلة العملية شرح لغة PHP التي تعد واحدة من لغات البرمجة القوية المستخدمة بشكل أساسي لتطوير الويب، فعلى الرغم من ظهور العديد من لغات البرمجة الأحدث في مجال تطوير الويب إلا أن لغة PHP لا تزال اللغة الأكثر شيوعًا واستخدامًا، وهي تتطور باستمرار لإصلاح أي عيوب أو أخطاء فيها وتعزيز أمان وأداء المواقع المبنية باستخدامها. نبذة مختصرة عن لغة PHP يشير اسم PHP إلى عبارة Hypertext Pre-processor أي المعالج المسبق للنصوص الفائقة وكلمة النصوص الفائقة تعني النصوص التي تملك روابط تنقلك لنصوص أو صفحات صفحات ويب أخرى عند النقر فوقها. وهي لغة برمجة مفتوحة المصدر وشائعة الاستخدام تستخدم في إنشاء وتطوير مواقع الويب الديناميكية، وقد طور باستخدامها أكثر من 75% من المواقع الموجودة على شبكة الإنترنت بحسب w3techs. تتميز لغة PHP بسهولتها ودعمها لمجموعة متنوعة من قواعد البيانات وبروتوكولات الإنترنت وتوفيرها للعديد من مكتبات وأطر العمل المساعدة للمبرمجين، وما زاد من شهرتها وحافظ على مكانتها وأهميتها بين مطوري الويب اعتماد العديد من منصات إدارة المحتوى ومنصات التجارة الإلكترونية المشهورة عليها مثل ووردبريس WordPress ودروبال Drupal وماجنتو Magneto وغيرها الكثير، فإذا كنت مهتمًا بمجال تطوير الويب فإن تعلم لغة PHP خيار مناسب وغني بالفرص. تعمل لغة PHP على الخادم server-side بخلاف لغات برمجة أخرى تعمل على المتصفح أو العميل client-side مثل لغة جافا سكريبت JavaScript أي أنها لا تنفذ الشيفرة البرمجية في متصفح الويب، بل تشغلها مباشرة على خادم الويب وبعدها يرسل خادم الويب نتيجة التنفيذ إلى المتصفح لعرضها، وتفترض هذه المقالة أنك تمتلك معلومات أساسية عن لغة PHP وطريقة عملها في الخلفية عند زيارتك لصفحة ويب من خلال متصفح الويب الخاص بك، وبأنك تعرف مسبقًا كيف تحول جهاز حاسوبك إلى خادم محلي وكيف تعد كل الأدوات اللازمة لكتابة أوامر PHP وتنفيذها، فإذا لم تكن على دراية بهذه المعلومات الأساسية أنصحك قبل ذلك ان تقرأ مقال تعرف على لغة PHP ثم تتابع قراءة هذا المقال. ملاحظة: تعمل الأكواد الواردة في الفقرات التالية مع إصدار PHP 5 والإصدارات اللاحقة فقد قدم الإصدار الخامس من PHP العديد من التغييرات والتحسينات المهمة على الإصدارات السابقة وأبرز هذه التغييرات دعم البرمجة كائنية التوجه oop في PHP ووفر العديد من تحسينات الأداء والأمان، وتابعت الإصدارات اللاحقة التحسين وأضافت ميزات جديدة للغة. كيف تكتب أكواد PHP تكتب أكواد PHP بعد وسم الفتح php?> وقبل وسم الإغلاق ‎<? ثم تحفظ داخل ملفات لها الامتداد ‎.php على خادم الويب، ومن الأفضل عمليًا تجاهل كتابة وسم الإغلاق إذا كان ملف php يحتوي على شفرة php فقط، لتلافي نتيجة خرج غير متوقعة. <?php echo "Hello World!"; ?> كما يمكن أن تدمج أكواد PHP مع أكواد HTML لإنشاء صفحات ويب ديناميكية بالشكل التالي: <!DOCTYPE html> <html> <head> <title> HTML and PHP </title> </head> <body> <h1>PHP code mixed with HTML</h1> <?php echo "Hello World!"; ?> </body> </html> التعليقات Comments التعليقات هي أجزاء من الكود البرمجي لا تنفذ عند تشغيل البرنامج وهي تستخدم لشرح وتوثيق الكود وتوضيح عمله للمطورين الآخرين الذين يقرأون هذا الكود، أو لتوضيحها للمبرمج الذي كتبها نفسه فقد ينسى ما كتبه عند العودة لقراءة الكود بعد فترة من الزمن. يمكن كتابة التعليقات في لغة PHP بعدة طرق كما في المثال التالي: // استخدم علامة القوسين المائلين // لبدأ تعليق بسطر واحد // يمكن استخدام العلامة # لكن علامة // أكثر شيوعيا. /* إحاطة نص بالقوس المائل متبوعا بالنجمة بداية وبالنجمة متبوعة بالقوس المائل نهاية يجعل من هذا النص تعليقا متعدد الأسطر */ طباعة الخرج في PHP يمكنك استخدم تعليمة echo أو print لطباعة الخرج أو عرض البيانات المطلوبة على صفحة الويب. print('Hello '); // بدون سطر فاصل "Hello " طباعة استخدام القوسين ( ) اختياري مع تعليمتي echo و print echo "World\n"; // مع سطر فاصل "World" طباعة يجب أن تنتهي كل العبارات في لغة PHP بالفاصلة المنقوطة ";" وأي شيء مكتوب خارج وسوم php?> ستتم طباعته على الشاشة بشكل تلقائي. دورة تطوير تطبيقات الويب باستخدام لغة PHP احترف تطوير النظم الخلفية وتطبيقات الويب من الألف إلى الياء دون الحاجة لخبرة برمجية مسبقة اشترك الآن الأنماط Types والمتغيرات Variables تستخدم المتغيرات في PHP لتخزين وحفظ قيم البيانات، ويمكن أن تخزن هذه المتغيرات قيمًا مختلفة كالأرقام والنصوص والقيم المنطقية. يمكنك التصريحعن المتغيرات في PHP بكتابة الرمز $ يليه مباشرة اسم المتغير، ويجب ان تبدأ أسماء المتغيرات تبدأ بحرف أو تسطيرة سفلية _ يتبعها بأي عدد من الأحرف أو الأرقام أو التسطيرات السفلية. وتكون أسماء المتغيرات حساسة لحالة الأحرف case-sensitive. من أهم أنماط المتغيرات في لغة PHP نذكر: المتغيرات المنطقية Boolean ويملك المتغير من هذا النمط القيمة true أي صحيح أو القيمة false أي خاطئ. $boolean = true; // TRUE أو True $boolean = false; // FALSE أو False الأعداد الصحيحة Integer حيث يملك المتغير من هذا النمط قيمة صحيحة موجبة أو سالبة $int1 = 12; // => 12 $int2 = -12; // => -12 $int3 = 012; // => 10 (البادئة 0 تدل على عدد ثماني) $int4 = 0x0F; // => 15 (0x تدل على رقم ستة عشري) المحارف الصحيحة الثنائية Binary integer literals متاحة اعتبارًا من PHP 5.4.0 وهي تستخدم لتمثيل الأعداد الصحيحة بالنظام الثاني $int5 = 0b11111111; // 255 (0b يدل على عدد ثنائي) الأرقام العائمة Floats أو (المضاعفة doubles) وهي تستخدم لتمثيل الأعداد العشرية $float = 1.234; $float = 1.2e3; $float = 7E-10; لحذف متغير في PHP وتحرير موارد الذاكرة المحجوزة لأجله نستخدم تعليمة unset unset($int1); يمكن إجراء العمليات الحسابية على المتغيرات العددية كما يلي: $sum = 1 + 1; // 2 $difference = 2 - 1; // 1 $product = 2 * 2; // 4 $quotient = 2 / 1; // 2 كما يمكن إجراء العمليات الحسابية المختزلة بالشكل التالي: $number = 0; $number += 1; // بمقدار 1 $number زيادة echo $number++; // (طباعة 1 (الزيادة بعد التقييم echo ++$number; // (طباعة 3 (الزيادة قبل التقييم $number /= $float; // $number قسمة واسناد ناتج القسمة إلى السلاسل النصية Strings وهي تستخدم لتخزين النصوص ويجب أن تكون النصوص محدودة ضمن إشارة تنصيص واحدة ’ من كل جانب كما يلي: $sgl_quotes = '$String'; // => '$String' تجنب استخدام علامات التنصيص المزدوجة إلا في حالة تضمين متغيرات أخرى $dbl_quotes = "This is a $sgl_quotes."; // => 'This is a $String.' تحدد المحارف الخاصة حصريًا باقتباسات مزدوجة $escaped = "This contains a \t tab character."; $unescaped = 'This just contains a slash and a t: \t'; قم بإحاطة المتغيرات بالقوسين المائلين عند الحاجة $apples = "I have {$number} apples to eat."; $oranges = "I have ${number} oranges to eat."; $money = "I have $${number} in the bank."; منذ الإصدار الخامس يمكن استخدام nowdocs في حالة عدة أسطر غير مجمعة $nowdoc = <<<'END' Multi line string END; ستقوم heredocs بتجميع النصوص $heredoc = <<<END Multi line $sgl_quotes END; يتم وصل النصوص أو دمجها باستخدام النقطة "." echo 'This string ' . 'is concatenated'; يمكن تمرير النصوص كبارامتر لـ echo echo 'Multiple', 'Parameters', 'Valid';// 'MultipleParametersValid' يعيد الثوابت في PHP يعرّف الثابت باستخدام ()define ولا يمكن تغيير قيمته خلال فترة التشغيل. ويجب أن تبدأ أسماء الثوابت الصحيحة بحرف أو تسطيرة سفلية, متبوعة بأية حروف أو أرقام أو تسطيرات سفلية. define("FOO", "something"); الوصول إلى المتغير الثابت متاح دون الحاجة الى استخدام الرمز $ echo FOO; // 'something' يعيد echo 'This outputs ' . FOO; // 'This outputs something' يعيد المصفوفات Arrays المصفوفات في PHP هي هياكل بيانات تسمح بتخزين مجموعة من القيم ضمن متغير واحد، وكل المصفوفات في PHP هي مصفوفات مترابطة (تسمى hashmaps في بعض اللغات البرمجية) وتعمل في جميع إصدارات php $associative = array('One' => 1, 'Two' => 2, 'Three' => 3); تم إدخال تركيب قواعدي syntax جديد في PHP 5.4 $associative = ['One' => 1, 'Two' => 2, 'Three' => 3]; echo $associative['One']; // 1 تطبع إضافة عنصر للمصفوفة المترابطة $associative['Four'] = 4; القوائم المحرفية يسند لها مفاتيح صحيحة حكمًا $array = ['One', 'Two', 'Three']; echo $array[0]; // => "One" إضافة عنصر إلى نهاية المصفوفة $array[] = 'Four'; أو array_push($array, 'Five'); حذف عنصر من مصفوفة unset($array[3]); المزيد حول تعلميات الطباعة في PHP echo('Hello World!'); تقوم التعليمة السابقة بطباعة !Hello World على شاشة الاظهار القياسية stdout، وstdout هي صفحة الوب إذا كنت تستخدم متصفحًا print('Hello World!'); // echo مشابه لـ // هي أيضًا من تركيبات اللغة لذلك يمكنك إلغاء الأقواس echo و print echo 'Hello World!'; print 'Hello World!'; $paragraph = 'paragraph'; echo 100; // اطبع المتغيرات العددية مباشرة echo $paragraph; // أو المتغيرات إذا تم إعداد الوسوم القصيرة المفتوحة أو كانت نسخة PHP الخاصة بك 5.4.0 أو أحدث يمكنك استخدام قواعد بناء الجمل القصيرة لـ echo <p><?= $paragraph ?></p> $x = 1; $y = 2; $x = $y; المتغير x$ يحتوي نفس قيمة المتغير y$ $z = &$y; المتغير z$ يحتوي إسناد إلى قيمة y$، وأي تغيير في قيمة z$سيغير قيمة y$ وبالعكس المتغير x$ تبقى قيمته بدون تغيير كقيمة y$ الأصلية echo $x; // => 2 echo $z; // => 2 $y = 0; echo $x; // => 2 echo $z; // => 0 تخرج التفريغات Dumps نوع وقيمة المتحول إلى شاشة العرض القياسية stdout var_dump($z); // int(0) يطبع تطبع التعليمة Print المتغيرات إلى شاشة الإظهار القياسية stdout بصيغة مقروءة للإنسان print_r($array); // Array ( [0] => One [1] => Two [2] => Three ) يطبع العمليات المنطقية $a = 0; $b = '0'; $c = '1'; $d = '1'; يقوم assert بإصدار تنبيه إذا كانت معطياته غير صحيحة وهذه المقارنة ستكون دومًا صحيحة حتى إذا كانت الأنواع مختلفة assert($a == $b); // equality المساواة assert($c != $a); // inequality عدم المساواة assert($c <> $a); // alternative inequality عدم المساواة بشكل بديل assert($a < $c); assert($c > $b); assert($a <= $b); assert($c >= $d); التالي سيكون صحيحًا فقط في حال كانت القيم متساوية ومن نفس النوع assert($c === $d); assert($a !== $d); assert(1 === '1'); assert(1 !== '1'); المشغل `Spaceship` <=> (منذ PHP 7) يعيد 0 إذا كانت القيم على طرفيه متساوية، ويعيد 1 إذا كانت القيمة على اليسار أكبر، ويعيد -1 إذا كانت القيمة على اليمين أكبر $a = 100; $b = 1000; echo $a <=> $a; // النتيجة 0 كونهما متساويين echo $a <=> $b; // $a < $b النتيجة -1 كون echo $b <=> $a; // $b > $aالنتيجة 1 كون يمكن تحويل المتغيرات إلى أنواع مختلفة بحسب استخدامها $integer = 1; echo $integer + $integer; // => 2 $string = '1'; echo $string + $string; // => 2 (تم تحويل النصوص الى أعداد صحيحة) $string = 'one'; echo $string + $string; // => 0 النتيجة 0 لأن المشغل + لا يستطيع موائمة النص `one` الى رقم. موائمة الأنواع Type casting يمكن استخدامها للتعامل مع متغير من نوع معين كنوع آخر. $boolean = (boolean) 1; // => true $zero = 0; $boolean = (boolean) $zero; // => false يوجد أيضًا توابع مخصصة لموائمة أغلب الأنواع $integer = 5; $string = strval($integer); null هي قيمة خالية $var = null; بنى التحكم Control Structures تمكنك بنى التحكم في لغة PHP من التحكم في تنفيذ الكود البرمجي بناءً على شروط معينة أو تكرار تنفيذ جزء من الكود عدة مرات ومن أشهر بنى التحكم المستخدمة في لغة PHP العبارات الشرطية if وعبارات الحلقات مثل for و while وعبارات switch. if (true) { print 'I get printed'; } if (false) { print 'I don\'t'; } else { print 'I get printed'; } if (false) { print 'Does not get printed'; } elseif (true) { print 'Does'; } المشغل الثلاثي ternary print (false ? 'Does not get printed' : 'Does'); بدأ استخدام المشغل الثلاثي المختصر من PHP 5.3 وهو مكافئ لـ "$x ? $x : 'Does'"" $x = false; print($x ?: 'Does'); بدأ مشغّل دمج القيم الفارغة null coalesce operator من php 7 $a = null; $b = 'Does print'; echo $a ?? 'a is not set'; // 'a is not set' تطبع echo $b ?? 'b is not set'; // 'Does print' تطبع $x = 0; if ($x === '0') { print 'Does not print'; } elseif ($x == '1') { print 'Does not print'; } else { print 'Does print'; } القواعد البديلة لبناء الجمل مفيدة لبناء النماذج <?php if ($x): ?> This is displayed if the test is truthy. <?php else: ?> This is displayed otherwise. <?php endif; ?> استخدم التعليمة switch لتوفير كتابة جزء من العمليات المنطقية كما يلي switch ($x) { case '0': print 'Switch does type coercion'; break; // 'two' و'three' وإلا سينتقل الى الحالة break يجب تضمين case 'two': case 'three': // 'two' أو 'three' تساوي $variable قم بعمل شيء ما اذا كانت قيمة break; default: // قم بعمل الاجراء الافتراضي } الحلقات while، do…while، for هي حلقات مألوفة غالبًا وتستخدم لتكرار تنفيذ مجموعة من التعليمات البرمجية كما يلي: $i = 0; while ($i < 5) { echo $i++; } // "01234" اطبع $i = 0; do { echo $i++; } while ($i < 5); // "01234" اطبع for ($x = 0; $x < 10; $x++) { echo $x; } // "0123456789" اطبع $wheels = ['bicycle' => 2, 'car' => 4]; يمكن أن تعمل حلقات foreachعلى المصفوفة بالشكل التالي: foreach ($wheels as $wheel_count) { echo $wheel_count; } // "24"اطبع ويمكنك لحلقة foreach المرور إما عبر المفاتيح أو القيم الخاصة بالمصفوفة foreach ($wheels as $vehicle => $wheel_count) { echo "A $vehicle has $wheel_count wheels"; } $i = 0; while ($i < 5) { if ($i === 3) { break; // while اخرج من حلقة } echo $i++; } // "012" اطبع for ($i = 0; $i < 5; $i++) { if ($i === 3) { continue; // تجاوز هذا التكرار من الحلقة } echo $i; } // "0124" اطبع الدوال Functions الدوال في البرمجة هي مجموعات من الأوامر التي لها اسم محدد وتستخدم لأداء مهمة معينة وهي تساعد في تنظيم واختصار التعليمات البرمجية. ونعرّف الدالة PHP باستخدام الكلمة المفتاحية function function my_function () { return 'Hello'; } echo my_function(); // => "Hello" الاسم المقبول للدالة يجب أن يبدأ بحرف أو تسطيرة سفلية متبوعة بأي عدد من الأحرف ،الأرقام، أو التسطيرات السفلية function add ($x, $y = 1) { // اختيارية وقيمتها الإفتراضية تساوي 1 $y $result = $x + $y; return $result; } echo add(4); // => 5 echo add(4, 2); // => 6 لا يمكن الوصول للمتغير result$ من خارج الدالة واستخدام الأمر ;print $result هنا سيعطي خطأ منذ النسخة PHP 5.3 أصبح من الممكن تعريف دوال مجهولة anonymous functions أي دوال لا تملك اسمًا وتخزن قيمها في متغيرات كما يلي: $inc = function ($x) { return $x + 1; }; echo $inc(2); // => 3 function foo ($x, $y, $z) { echo "$x - $y - $z"; } يمكن للدوال أن تعيد دوالًا أخرى function bar ($x, $y) { // استخدم use لإحضار المتغيرات الخارجية return function ($z) use ($x, $y) { foo($x, $y, $z); }; } $bar = bar('A', 'B'); $bar('C'); // "A - B - C" يطبع يمكنك استدعاء الدوال المسماة named functions باستخدام النصوص $function_name = 'add'; echo $function_name(1, 2); // => 3 وهو هام من أجل تحديد أي دالة يتوجب تشغيلها برمجيًا، أو استخدم الدالة التالية call_user_func (callable $callback [, $parameter [, … ]]); يمكنك الحصول على كل البارمترات الممررّة للدالة function parameters() { $numargs = func_num_args(); if ($numargs > 0) { echo func_get_arg(0) . ' | '; } $args_array = func_get_args(); foreach ($args_array as $key => $arg) { echo $key . ' - ' . $arg . ' | '; } } parameters('Hello', 'World'); // Hello | 0 - Hello | 1 - World | يمكنك الحصول على عدد متغير من المعطيات ابتداء من PHP 5.6 function variable($word, ...$list) { echo $word . " || "; foreach ($list as $item) { echo $item . ' | '; } } variable("Separate", "Hello", "World"); // Separate || Hello | World | التضمين في PHP باستخدام include و require يفيد التضمين في PHP لتضمين محتوى ملف في ملف آخر ويمكن القيام بتضمين ملف في آخر باستخدام include كما يلي: include 'my-file.php'; وبهذا تكون الشفرة ضمن الملف my-file.php متاحة ضمن مجال الرؤية، إذا لم يكن بالإمكان تضمين الملف (على سبيل المثال إذا كان الملف غير موجود ) يظهر تنبيه. include_once 'my-file.php'; إذا كانت شفرة الملف my-file.php متضمنة في مكان أخر ، لن يتم تضمينها ثانية. وهذا يمنع الاخطاء التي تحدث بسبب تكرار التصريح عن الصفوف require 'my-file.php'; require_once 'my-file.php'; تقوم الدالة ()require بنفس عمل ()include إلا أنها ستتسبب بخطأ فادح إذا لم يتمكن من تضمين الملف. محتويات ملف my-include.php <?php return 'Anything you like.'; يمكن الدوال Includes، requires أيضًا أن تعيد قيمة $value = include 'my-include.php'; تضمن الملفات بالاعتماد على المسار المعطى، وإذا لم يحدد المسار يتم اعتماد مسار توجيه الاعداد include_path فإذا لم يتم إيجاد الملف يتم البحث في مسار استدعاء السكريبت ومسار العمل الحالي قبل الاعلان عن الاخفاق الأصناف Classes في PHP الأصناف classes في البرمجة هي أنماط بيانات خاصة تستخدم كقوالب لإنشاء الكائنات objects وتعرف الأصناف في PHP باستخدام العبارة class class MyClass { const MY_CONST = 'value'; // ثابت static $staticVar = 'static'; المتغيرات الثابتة Static ومجال رؤيتها public static $publicStaticVar = 'publicStatic'; يمكن الوصول إليها خلال الصنف فقط private static $privateStaticVar = 'privateStatic'; يمكن الوصول اليها من خلال الصنف والأصناف المشتقة protected static $protectedStaticVar = 'protectedStatic'; يجب تحديد مجال الرؤية للخصائص Properties public $property = 'public'; public $instanceProp; protected $prot = 'protected'; يمكن الوصول إليها من الصنف والأصناف الفرعية private $priv = 'private'; // يمكن الوصول إليها من الصنف فقط قم بإنشاء الباني باستخدام __construct public function __construct($instanceProp) { // $this قم بالوصول إلى متغيرات الحالة باستخدام $this->instanceProp = $instanceProp; } تعرًف الطرق methods كدوال داخل الصنف public function myMethod() { print 'MyClass'; } تجعل الكلمة المفتاحية final الدالة غير قابلة للتحميل الزائد unoverridable final function youCannotOverrideMe() { } الطرق السحرية Magic Methods الطرق السحرية في PHP هي طرق أو وظائف خاصة يبدأ اسمها بشرطة سفلية مزدوجة تسمح لك بإضافة وظائف إلى الأصناف دون الحاجة لتعريف هذه الدوال بشكل صريح. على سبيل المثال الدالة toString__ هي دالة سحرية تستدعى تلقائيًا عند استخدام عمليات أو وظائف معينة تتطلب تحويل الكائن إلى سلسلة نصية public function __toString() { return $property; } ومن الدوال السجرية لدينا دالة الهدم ()destruct__ وهي عكس دالة البناء()construct__ وتستدعى عندما لا تعود هنالك حاجة لأن يكون العنصر مشارًا إليه كمرجع public function __destruct() { print "Destroying"; } الكلمة المفتاحية static في PHP تستخدم الكلمة المفتاحية static في PHP لتعريف خصائص الصنف والطرق على أنها ثابتة وهذا يجعلها قابله للوصول بدون الحاجة إلى إنشاء كائن من الصنف. الخاصية المعرّفة بأنها ثابتة لا يمكن الوصول إليها من العنصر المشتق من الصنف (لكن يمكن ذلك في الطرق الثابتة) public static function myStaticMethod() { print 'I am static'; } ثوابت الصنف Class constants يمكن الوصول إليها دائمًا بشكل ثابت echo MyClass::MY_CONST; // 'value' الخرج; echo MyClass::$staticVar; // 'static' الخرج; MyClass::myStaticMethod(); // 'I am static' الخرج; اشتقاق حالات الأصناف instance باستخدام new $my_class = new MyClass('An instance property'); استخدام القوسين اختياري إذا كنت لا تريد تمرير أيّة معطيات يمكننك الوصول إلى أعضاء الصنف class members باستخدام <- echo $my_class->property; // => "public" echo $my_class->instanceProp; // => "An instance property" $my_class->myMethod(); // => "MyClass" قم بتوسيع الصنف باستخدام extends class MyOtherClass extends MyClass { function printProtectedProperty() { echo $this->prot; } // التحميل الزائد للطرق Override function myMethod() { parent::myMethod(); print ' > MyOtherClass'; } } $my_other_class = new MyOtherClass('Instance prop'); $my_other_class->printProtectedProperty(); // => "protected" يطبع $my_other_class->myMethod(); // "MyClass > MyOtherClass" يطبع final class YouCannotExtendMe { } يمكنك استخدام الطرق السحرية magic methods لإنشاء دوال الجلب أو الإرجاع getters وداول الاسناد setters class MyMapClass { private $property; public function __get($key) { return $this->$key; } public function __set($key, $value) { $this->$key = $value; } } $x = new MyMapClass(); echo $x->property; // __get() سوف تستخدم طريقة $x->property = 'Something'; // __set() سوف تستخدم طريقة يمكن أن تكون الأصناف تجريدية (باستخدام الكلمة المفتاحية abstract) أو واجهات تنفيذ (باستخدام الكلمة المفتاحية implements). الواجهات Interfaces في لغة PHP الواجهات في PHP هي طريقة مجردة لتعريف الكائنات، ويصرح عن الواجهة بالكلمة المفتاحية interface. interface InterfaceOne { public function doSomething(); } interface InterfaceTwo { public function doSomethingElse(); } يمكن أن توسّع الواجهات interface InterfaceThree extends InterfaceTwo { public function doAnotherContract(); } abstract class MyAbstractClass implements InterfaceOne { public $x = 'doSomething'; } class MyConcreteClass extends MyAbstractClass implements InterfaceTwo { public function doSomething() { echo $x; } public function doSomethingElse() { echo 'doSomethingElse'; } } يمكن أن يكون للأصناف أكثر من واجهة واحدة class SomeOtherClass implements InterfaceOne, InterfaceTwo { public function doSomething() { echo 'doSomething'; } public function doSomethingElse() { echo 'doSomethingElse'; } } السمات Traits trait هي ميزة تستخدم للسماح بإعادة استخدام مجموعة من الوظائف داخل الأصناف ويمكنك اعتبارها بمثابة طريقة لتضمين سلوك مشترك بين الأصناف وهي ميزة متوفره بدءًا من النسخة PHP 5.4.0 ويصرّح عنها باستخدام trait trait MyTrait { public function myTraitMethod() { print 'I have MyTrait'; } } class MyTraitfulClass { use MyTrait; } $cls = new MyTraitfulClass(); $cls->myTraitMethod(); // Prints "I have MyTrait" فضاءات الأسماء Namespaces في PHP تستخدم فضاءات الأسماء في PHP لتنظيم الشيفرة وتجنب تعارض أسماء الأصناف والوظائف والمتغيرات فهي تجمع العناصر ضمن في مجموعات أو مساحات لها نفس الاسم لتميزها عن غيرها وللقيام بذلك نكتب namespace كأول عبارة في الملف. دعونا نتظاهر بأن هذا ليس هو الحال <?php افتراضيًا, توجد الأصناف في namespace عام, ويمكن أن تستدعى صراحة بـ backslash $cls = new \MyClass(); ضبط namespace لملف namespace My\Namespace; class MyClass { } من ملف آخر $cls = new My\Namespace\MyClass; أو من داخل namespace آخر namespace My\Other\Namespace; use My\Namespace\MyClass; $cls = new MyClass(); أو يمكنك استبدال namespace باسم مستعار namespace My\Other\Namespace; use My\Namespace as SomeOtherNamespace; $cls = new SomeOtherNamespace\MyClass(); الربط الساكن المتأخر Late Static Binding class ParentClass { public static function who() { echo "I'm a " . __CLASS__ . "\n"; } public static function test() { // على الصف الذي عُرّف التابع ضمنه self تؤشر self::who(); // على الصف الذي استدعي التابع منه static تؤشر static::who(); } } ParentClass::test(); /* ParentClass أنا ParentClass أنا */ class ChildClass extends ParentClass { public static function who() { echo "But I'm " . __CLASS__ . "\n"; } } ChildClass::test(); /* ParentClass أنا ChildClass ولكن أنا */ الثوابت السحرية Magic constants الثوابت السحرية هي ثوابت معرفة مسبقًا في PHP يبدأ اسمها وينتهي بشرطتين سفليتين ولها استخداماات مختلفة، على سبيل المثال للحصول على اسم الصنف الحالي نستخدم الثابت السحري __CLASS__ داخل تصريح الصنف كما يلي: echo "Current class name is " . __CLASS__; وللحصول على مسار الدليل الكامل لملف نستخدم __DIR__ echo "Current directory is " . __DIR__; الاستخدام النموذجي require __DIR__ . '/vendor/autoload.php'; الحصول على المسار الكامل للملف echo "Current file path is " . __FILE__; الحصول على اسم الدالة الحالية echo "Current function name is " . __FUNCTION__; الحصول على رقم السطر الحالي echo "Current line number is " . __LINE__; الحصول على اسم الطريقة الحالية. يرجع قيمة فقط عندما يستخدم داخل تصريح سمة أو كائن echo "Current method is " . __METHOD__; الحصول على اسم namespace الحالي echo "Current namespace is " . __NAMESPACE__; الحصول على اسم السمة الحالية. ترجع قيمة فقط عندما تستخدم داخل التصريح عن السمة أو الكائن. echo "Current trait is " . __TRAIT__; معالجة الأخطاء Error Handling في PHP يمكن أن تتم معالجة أخطاء بسيطة باستخدام كتلة try catch try { // افعل شيء ما } catch (Exception $e) { // معالجة استثناء } عند استخدام كتلة try catch في بيئة namespace استخدم التالي try { // افعل شيء ما } catch (\Exception $e) { // معالجة استثناء } استثناءات مخصّصة class MyException extends Exception {} try { $condition = true; if ($condition) { throw new MyException('Something just happened'); } } catch (MyException $e) { // معالجة استثنائية } ترجمة -وبتصرّف- للمقال Learn PHP in Y Minutes
    1 نقطة
  6. السلام عليكم املك بعض الاسئلة وشكرا لم يجيب حتى اذا جاوب على سؤال واحد السؤال الاول: كيف اجعل Qlabel نص الخاص به يكون قيمته متغير فى مكتبة PyQt5 ها هو الكود from PyQt5 import QtCore,QtWidets, QtGui import sys app = QApplication(sys.argv) w = QWidget() l1 = QtWidgets.QLabel("الاسم : ",w) l1.move(150,150) b1 = QtWidgets.QPushButton("Print", w) b1.move(100,150) e1 = QLineEdit(w) def get(): name_get = e1.text() l2 = QtWidgets.QLabel(?,w) l2.move(180,150) b1.clicked.connect(get) w.show() app.exec_() بدلا من علامة الاستفهام اريد ان اضع قيمة المتغير name_get السوال الثانى : لدى محرر اكواد صنعته بالبايثون اريد ان اعرف كيفية فتح file explorer عند الضغط على open او save as فى مكتبة PyQt5
    1 نقطة
  7. السلام عليكم. قمت بتصميم تطبيق Quiz بسيط باستخدام جافا سكريبت رابط التطبيق على Codepen: https://codepen.io/MUSTAPHA-AOURIK-DEV102-/pen/PogPQeb توجد مشكلة في هذا التطبيق ستلاحظونها في السؤال الثالث والأخير, وهي عندما أختار الإجابة الصحيحة يتغير لون خلفية الإجابة إلى اللون الأحمر, وهذا عكس ما أريده (اللون الأخضر) وإذا إخترت الإجابة الخاطئة يُفترض أن يقوم التطبيق بإعلامي بموقع الإجابة الصحيحة (بتغيير لون خلفية الإجابة الصحيحة إلى اللون الأخضر) ولكن التطبيق يقوم بتحديد أكثر من إجابة ويغير لون خلفيتها إلى الأخضر رغم أنه توجد فقط إجابة واحدة صحيحة أرجو أن توضحوا لي مكامن الخطأ في تطبيقي هذا, وشكرا.
    1 نقطة
  8. بعد محاولات معينة وإجابات الأعضاء الكرام إكتشفت أن السبب في هذا هو أن Addeventlistener يقبل إضافة العديد من الـ Events للعنصر الواحد, لذلك استخدامي للـ onclick حل المشكلة
    1 نقطة
  9. وعليكم السلام ورحمة الله وبركاته . اولا ساشرح لك لما يحدث الخطأ لديك . حينما تقوم باضافة مستمع للحدث (event listener) فانت تضيفه على كل الاجابات مع كل سؤال . اى لو ان لديك 4 اسئله فانت تضيف events listner على كل اجابة 4 مرات . ومع كل click على الاجابة فسيتم تنفيذها بعدد الاسئلة . اى ان فى السؤال الثالث و الاخير فانه يتم تنفيذ الكود الخاص بالتحقق من الاسئلة السابقة ايضا لذلك يظهر اكثر من اجابة صحيحة. ويحدث الخطأ لديك فى السؤال الثالث والاخير لان الاجابة الصحيحة ليس الاجابة رقم 2 . قم بتبديل مكان الاجابة الصحيحة للسؤال الثانى وسيظهر الخطأ فيه هو ايضا . والحل لذلك هو حذف الاجابات القديمة وانشاء اجابات جديدة مع كل سؤال . وهذا هو الكود كاملا بعد التعديل. const questions = [ { question: "which is largest animal in the world?", answers: [ { text: "Shark", correct: false }, { text: "Blue whale", correct: true }, { text: "Elephant", correct: false }, { text: "Giraffe", correct: false }, ], }, { question: "Which is the smallest continent in the world?", answers: [ { text: "Asia", correct: false }, { text: "Australia", correct: true }, { text: "Arctic", correct: false }, { text: "Africa", correct: false }, ], }, { question: "Which is the smallest country in the world?", answers: [ { text: "Vatican City", correct: true }, { text: "Bhutan", correct: false }, { text: "Nepal", correct: false }, { text: "Shri Lanka", correct: false }, ], }, { question: "Which is the more popular programmation language?", answers: [ { text: "JIK", correct: false }, { text: "Batata", correct: false }, { text: "Javascript", correct: true }, { text: "Youssef", correct: false }, ] } ]; const quiz = document.querySelector(".quiz"); const questionTitle = document.getElementById("quiz-question"); let choices = document.querySelectorAll(".quiz__choice"); const nextButton = document.getElementById("next-button"); const score = document.querySelector(".score"); const scoreNumber = document.getElementById("score-number"); const numberOfQuestions = document.getElementById("score-questionsNumber"); let scoreCounter = 0; let questionCounter = 0; const againButton = document.getElementById("score-again"); makeQuiz(0); nextButton.addEventListener("click", function () { if (questionCounter < questions.length) { makeQuiz(questionCounter); choices = document.querySelectorAll(".quiz__choice"); choices.forEach(function (choice) { choice.classList.remove("quiz__answer--correct", "quiz__answer--wrong"); }) } else { quiz.style.display = "none"; score.style.display = "block"; scoreNumber.textContent = scoreCounter; numberOfQuestions.textContent = questions.length; } }) function makeQuiz(questionIndex) { questionTitle.textContent = questions[questionIndex].question; let answers = questions[questionIndex].answers; choices = document.querySelectorAll(".quiz__choice"); choices.forEach(function (choice, answersIndex) { choice.textContent = answers[answersIndex].text; var new_element = choice.cloneNode(true); choice.parentNode.replaceChild(new_element, choice); new_element.addEventListener("click", function () { if (answers[answersIndex].correct) { new_element.classList.add("quiz__answer--correct"); scoreCounter++; } else { new_element.classList.add("quiz__answer--wrong"); choices = document.querySelectorAll(".quiz__choice"); choices.forEach(function (item, answersInd) { if (answers[answersInd].correct === true) { item.classList.add("quiz__answer--correct"); } }) } nextButton.disabled = false; }); }); questionCounter++; }
    1 نقطة
  10. المشكلة الأساسية في تطبيقك هي كيفية إضافة مستمع للحدث إلى عناصر الاختيار داخل وظيفة ()makeQuiz. حيث في كل مرة يتم النقر فيها على خيار، لا تتم إزالة مستمع الحدث من الأسئلة السابقة، مما يؤدي إلى تكديسهم وتنفيذهم عدة مرات. وهذه يؤدي إلى سلوك غير صحيح في التطبيق، مثل تمييز إجابات متعددة أو تلوين الإجابات الصحيحة بشكل غير صحيح. قبل إضافة مستمع حدث جديد إلى الاختيار، يجب إزالة المستمع القديم لمنع عدة مستمعين من التكديس على نفس العنصر. يمكنك تجربة هذه الكود بعد التحسين وحل المشكله const questions = [ { question: "which is largest animal in the world?", answers: [ { text: "Shark", correct: false }, { text: "Blue whale", correct: true }, { text: "Elephant", correct: false }, { text: "Giraffe", correct: false }, ], }, { question: "Which is the smallest continent in the world?", answers: [ { text: "Asia", correct: false }, { text: "Australia", correct: true }, { text: "Arctic", correct: false }, { text: "Africa", correct: false }, ], }, { question: "Which is the smallest country in the world?", answers: [ { text: "Vatican City", correct: true }, { text: "Bhutan", correct: false }, { text: "Nepal", correct: false }, { text: "Shri Lanka", correct: false }, ], }, { question: "Which is the more popular programmation language?", answers: [ { text: "JIK", correct: false }, { text: "Batata", correct: false }, { text: "Javascript", correct: true }, { text: "Youssef", correct: false }, ] } ]; const quiz = document.querySelector(".quiz"); const questionTitle = document.getElementById("quiz-question"); const choices = document.querySelectorAll(".quiz__choice"); const nextButton = document.getElementById("next-button"); const score = document.querySelector(".score"); const scoreNumber = document.getElementById("score-number"); const numberOfQuestions = document.getElementById("score-questionsNumber"); let scoreCounter = 0; let questionCounter = 0; const againButton = document.getElementById("score-again"); makeQuiz(0); nextButton.addEventListener("click", function () { if (questionCounter < questions.length) { makeQuiz(questionCounter); choices.forEach(function (choice) { choice.classList.remove("quiz__answer--correct", "quiz__answer--wrong"); }) } else { quiz.style.display = "none"; score.style.display = "block"; scoreNumber.textContent = scoreCounter; numberOfQuestions.textContent = questions.length; } }) function makeQuiz(questionIndex) { // Reset quiz state for the new question nextButton.disabled = true; choices.forEach(function (choice) { choice.classList.remove("quiz__answer--correct", "quiz__answer--wrong"); }); questionTitle.textContent = questions[questionIndex].question; let answers = questions[questionIndex].answers; choices.forEach(function (choice, answersIndex) { choice.textContent = answers[answersIndex].text; // Remove previous click listeners choice.onclick = null; // This line effectively removes any click event listener previously assigned. // Assign new click listener choice.onclick = function() { // Determine if the selected answer is correct const isCorrect = answers[answersIndex].correct; if (isCorrect) { choice.classList.add("quiz__answer--correct"); scoreCounter++; } else { choice.classList.add("quiz__answer--wrong"); // Highlight the correct answer choices.forEach(function (item, itemIndex) { if (answers[itemIndex].correct) { item.classList.add("quiz__answer--correct"); } }); } // Prevent further choices from being clicked disableChoices(); nextButton.disabled = false; }; }); questionCounter++; } function disableChoices() { choices.forEach(function(choice) { choice.onclick = null; // This disables further clicks on choices. }); }
    1 نقطة
  11. هذا هو مشروعي موقع الملاحظات، برمجته لوحدي ب react مع styled components حاولت بدأ فيه من صفر مع مهرات المكتسبة سابقا سميته PRJ.rar
    1 نقطة
  12. المشروع لديك ممتاز، أحسنت حقًا، التصميم جيد جدًا وبسيط، لكن إن كنت تريد استخدام ذلك المشروع بدلاً من المشروع في المسار أرجو توفير مزايا التعديل والحذف الموجودة في مشروع الدورة فهي غير موجودة هنا. لذا أخبرتك بأن تقوم بتنفيذ المشروع فهناك دائمًا أمور جديدة ستتعلمها أو حتى طريقة جديدة لتنفيذ أمر معين.
    1 نقطة
  13. لا مشكلة عزيزي الإختلاف أمر طبيعي بالتوفيق لك.
    1 نقطة
  14. السلام عليكم عندي استفسار ابغا احد يلمني صوت ادا ممكن ضروري بالله
    1 نقطة
  15. السلام عليكم ........ عندي حاسوبين واحد للعمل والاخر شخصي فهل استطيع ان افتح الحساب في موقع الاكاديمية على الحاسوبين دون اي مشاكل
    1 نقطة
  16. المشكلة قد تكمن في كيفية استخدامك للمتغير `variant` في الكلاس الخاص بال CSS، قفي Tailwind CSS، لا يمكن استخدام المتغيرات داخل السلاسل كما فعلت، ولكن يمكنك استخدام القوسين الدائريين `{}` لتضمين القيمة المتغيرة داخل السلسلة، وعند استخدام المكون Message في تطبيق React وتمرير خاصية variant، يجب أن ننشئ فئات مثل text-red-700 و bg-red-100 إذا كانت قيمة variant تساوي "red"، كمثال: import React from 'react'; function Message({ variant, children }) { // تحقق من قيمة variant في الكونسول للتأكد من صحتها console.log(variant); // تأكد من وجود القوسين الدائريين {} حول variant في الكلاس لتفادي المشاكل return ( <div className={`m-4 rounded-lg py-5 px-6 mb-4 text-base text-${variant}-700 bg-${variant}-100`} > {children} </div> ); } export default Message; كذلك من الأفضل التحقق من وجود القوسين الدائريين حول `variant` في كل مكان يظهر فيه. هذا سيساعد React على فهم أن هذا هو متغير وليس جزءًا من النص الثابت. <Message variant='red'>حصل خطأ ما</Message> <Message variant='red'>حصل خطأ ما</Message> هنا عند استخدام مكون Message بهذه الطريقة، يجب التأكد من وجود الأنماط المناسبة (`text-red-700` و `bg-red-100`) في ملفات النمط (CSS) المعتمدة في المشروه فإذا لم تكن هذه الأنماط موجودة، يجب عليك إضافتها لضمان عمل الأنماط بشكل صحيح عند استخدام المكون في التطبيق. وفي حالة لم تعمل، أرجو إرفاق ملفات المشروع المصدرية، لأتفقد المشكلة ونجد الحل بإذن الله.
    1 نقطة
  17. تفقد العنصر نفسه من خلال inspect element هل هناك تنسيقات أخرى متداخلة؟ فالكود لديك ليس به مشكلة أرجو إرفاق مجلد المشروع إن استمرت المشكلة.
    1 نقطة
  18. وعليكم السلام ورحمة الله وبركاته . هل تاكدت فى ال inspect اذا كانت الرساله تاخذ اسم ال class صحيحأ ؟ اى انه يوجد لديه class يساوى ext-red-700 bg-red-100 اذا كان العنصر ياخذ اسم ال class صحيحا فاذا المشكلة ان هذا ال class ليس موجود فى ملفات ال css تاكد من ان هذه القيمة موجودة فى ملفات ال style
    1 نقطة
  19. السلام عليكم ورحمه الله تعالى وبركاته اخوانى الكرام لدي مشكلة معقدة صار لى يوم كامل احاول حلها وبأذن الله انا اخترت المكان الصحيح وسأجد حلي هنا وشكرا جدا مقدما هذا هو موقعي وهذة هي منطقة تسجيل الدخول للعميل وللادمن ايضا ولكل يوزر صلاحية خاصة تحولة على صفحة معينه حسب صلحياته وهذا هو سورس كود Login.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; using System.Configuration; using System.Threading; using System.Net; using System.IO; using System.Text.RegularExpressions; using System.Text; public partial class Login :System.Web.UI.Page { static string connectionstring = ConfigurationManager.ConnectionStrings["vodastatsonlineConnectionString"].ConnectionString; protected void Page_Load(object sender , EventArgs e) { Session["AdminID"] = null; Session["AdminName"] = null; Session["Role"] = null; } protected void Button1_Click(object sender, EventArgs e) { try { Session["AdminID"] = null; Session["AdminName"] = null; Session["Role"] = null; string username = txtusername.Text; string password = txtpassword.Text; List<LoginModelCS> loginDetail = new List<LoginModelCS>(); if (username == "SIDD" || username == "ADMIN03") { int countuser = username.Length; int countPass = password.Length; if ((countuser == 4 && countPass == 11) || (countuser == 7 && countPass == 12)) { using (SqlConnection conn = new SqlConnection(connectionstring)) { string query = string.Empty; query = "select SIMUID, [Password], SIMULGName, [Role] from tbl_SIMULG where [Role]='TempAdmin' and SIMULGName=@username and [password]=@password"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@username", username); cmd.Parameters.AddWithValue("@password", EncryptionModel.Encrypt(password)); conn.Open(); SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.Read()) { LoginModelCS ModelObj = new LoginModelCS(); ModelObj.AdminID = rdr["SIMUID"].ToString(); ModelObj.AdminName = rdr["SIMULGName"].ToString(); ModelObj.Role = rdr["Role"].ToString(); loginDetail.Add(ModelObj); } conn.Close(); } } } else { using (SqlConnection conn = new SqlConnection(connectionstring)) { string query = string.Empty; query = "select SubAdminID, [Password], LoginName, [Role] from tbl_subadmin where [Role]!='Admin' and [Role]!='TempAdmin' and AccessToNewPanel='Yes' and loginname=@username and [password]=@password"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@username", username); cmd.Parameters.AddWithValue("@password", EncryptionModel.Encrypt(password)); conn.Open(); SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.Read()) { LoginModelCS ModelObj = new LoginModelCS(); ModelObj.AdminID = rdr["SubAdminID"].ToString(); ModelObj.AdminName = rdr["Loginname"].ToString(); ModelObj.Role = rdr["Role"].ToString(); loginDetail.Add(ModelObj); } conn.Close(); } } if (loginDetail.Count != 0) { Session["AdminID"] = loginDetail[0].AdminID; Session["AdminName"] = loginDetail[0].AdminName; Session["Role"] = loginDetail[0].Role; if (loginDetail[0].Role == "Customer") { Response.Redirect("~/CustomerLogin/CustomerHome.aspx"); } else if (loginDetail[0].Role == "SubCustomer") { Response.Redirect("~/SubCustomerLogin/Home.aspx"); } else if (loginDetail[0].Role == "TempAdmin") { Response.Redirect("~/SubAdminLogin/Home.aspx"); } else { Response.Redirect("~/Login.aspx"); } } else { Response.Redirect("~/Login.aspx"); } } catch (Exception ex) { } } } اما هذا هو تيبول[tbl_subadmin] وللاسف بعد كل هذا لا يسجل دخول مع انى متأكد من بينات الزبون كويس جدا ومجربت فى اكتر من يوزر اما بخصوص ملف web.config فهل بينات الملف صحيحة للعلم حاولت مرارا وتكرارا اضافة يوزر وكلمة مرور صحيحة من خلال انى اعمل يوزر عالسكول سرفر لكن دون جدوي فأين المشكلة
    1 نقطة
  20. في الدورات يوجد مشاريع متفرقة في مسارات مختلفة للتطبيق على ما تم دراسته وتعلم أمور جديدة. إذا أردتي تمارين على مسار معين أو مجموعة دروس معينة، أرجو ترك تعليق أسفل الدرس وذكر الدروس أو المسار أو المسارات التي تريدي التطبيق عليها وسيتم توفير تمارين لك أو فكرة مشروع.
    1 نقطة
  21. لم تعد العمليات الثنائية اليوم تستخدم بكثرة بسبب التطور الكبير في البرمجة و في اللغات المستخدمة و لكنهامفيدة في بعض الأحيان فلذلك عليك معرفتها في حال احتجتها مستقبلا و هذا شرح بسيط عن بعض فوائدها: مفيدة كثيرًا، إذا كنت تقوم بالبرمجة ذات المستوى المنخفض على الأنظمة المدمجة. ال bitwise مفيدة في تحسين الأداء و زيادة السرعة, على سبيل المثال قسمة عدد ما على عدد أخر من قوى العدد 2 تستغرق وقتا أكثر بكثير من إجراء العملية باستخدام الbitwise ,حيث أننا باستخدام ال bitwise نقوم بإزاحة البتات بهذه القوة ونحصل على نفس النتيجة بسرعة أكبر فهنا نحن فقط نقوم بتغيير تمثيل البتات. و قد لاتحتاجها أبدا أثناء مسيرتك المهنية فهذا يعتمد على مجال عملك و المشكلات التي تواجهها.
    1 نقطة
  22. لا شك أنك كنت ذات يوم في الحمام، ثم خرجت مسرعا متقافزا وصارخا، كما فعل أرخميدس من قبل: أوريكا.. أوريكا. مبروك، لقد وجدت الفكرة العبقرية التي ستتفوق على جوجل، فيسبوك وأبل. الآن جلست إلى مكتبك المهترئ لتبدأ التخطيط لشركتك الناشئة، وسريعا غرقت في الأحلام وبدأت في بناء قصور رملية ضخمة... ثم منتشيا بأحلامك عدت للواقع وسؤال كئيب يؤرق تفكيرك: مشروع ضخم مثل هذا يحتاج إلى سيرفرات صخمة ولغة برمجة قادرة على معالجة كل تعقيدات المشروع. فما هي هذه اللغة المناسبة؟ مهلا مهلا يا فتى. مشروع ضخم سيتفوق على جوجل وفيسبوك؟ حسنا، هذا ليس أمرا مستحيلا، لكنه ليس عمل يوم وليلة. الأمر سيتطلب عمل سنوات قبل أن تصل إلى ذلك. فلماذا تزعج نفسك اليوم بالتفكير في مشاكل المستقبل؟ من الرائع أن تكون لديك رؤية مستقبلية طويلة المدى حول مشروعك وما الذي يمكنك أن تقدم من خلاله. لكن من العبث أن تزعج نفسك بالتفكير في مشاكل لن تواجهها قبل سنوات، أو ربما لن تواجهها أبدا. حُل مشاكل اليوم هذا اليوم، ودع مشاكل الغد للغد. لكن السؤال يبقى قائما: ما هي لغة البرمجة التي ستعتمدها؟ ببساطة، اعتمد لغة البرمجة التي تتقنها. ابدأ البرمجة بها وقدم مشروعك اليوم. ثم حين يكبر المشروع غدا وتجد أن لغة البرمجة تلك لم تعد مناسبة، ستكون احتياجاتك واضحة آنذاك بشكل كاف يسمح لك باختيار لغة البرمجة المناسبة التي ستواصل العمل بها. يساعدك هذا الفيديو على معرفة المعايير التي من خلالها ستتمكن من اختيار لغة البرمجة التي تتناسب مع تطلعاتك وأهدافك المستقبلية. هل تعلم بأن شبكة فيسبوك برمجت في البداية كاملة بـ PHP؟ نعم ذلك صحيح. ثم لاحقا بعد أن كبر المشروع كثيرا ولم تعد PHP مناسبة لتقديم مستوى الأداء المطلوب، بدأ فريق الشركة في تحويل أجزاء من الشبكة، تباعا، للغات برمجية أخرى مثل جافا وC. لكن ماذا لو كنت تتقن أكثر من لغة برمجة، كيف ستختار اللغة المناسبة لتنفيذ مشروعك؟ بعيدا عن مسألة أداء كل لغة -المتشابه عموما بين أغلبها- فإن أبرز معيار لاختيار اللغة المناسبة هو حجم الطلب العالمي على تلك اللغة. لا شك أنك لن تبقى المبرمج الوحيد لمشروعك، فيوما ما ستنمو شركتك وستحتاج لتوظيف مبرمجين آخرين. لو اخترت لغة برمجية نادرة فإنه سيصعب عليك كثيرا إيجاد المبرمجين لفريقك، وحتى لو وجدت أحدهم بشق الأنفس سيطلب راتبا أكبر مما تتوقع. لذلك عليك أن تختار اللغة التي يتقنها الكثير من المبرمجين، بحيث يمكنك بسهولة إيجاد الكفاءات التي تريد، وبرواتب معقولة. إذن، كيف ستعرف اللغة الأكثر شعبية؟ الجواب في فهرس تيوبي (Tiobe index) للغات البرمجة الأكثر شعبية. وهو فهرس شهري يرتب شعبية اللغات اعتمادا على عدد مرات البحث عن اللغة في محركات البحث ككلمة مفتاحية، ويشمل ذلك عمليات البحث في جوجل، مدونات جوجل، بينج، ياهو، ويكيبيديا و يوتيوب. وهو مخصص فقط للغات البرمجة الكاملة، ولا يتضمن اللغات البرمجية الوصفية مثل SQL وHTML. فيما يلي تقرير شهر نوفمبر الحالي، وهو يظهر استمرار لغة جافا في المركز الأول، وإن كانت نسبة نمو لغة C توحي بأنها قريبا ستصل للمركز الأول. في حين تأتي لغة PHP في مركز متقدم مقارنة بلغات أخرى تستخدم في تطوير مواقع الإنترنت الديناميكية، مثل بايثون وروبي.
    1 نقطة
×
×
  • أضف...