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

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

  1. Ali Haidar Ahmad

    Ali Haidar Ahmad

    الأعضاء


    • نقاط

      20

    • المساهمات

      1068


  2. Amer Abdallah

    Amer Abdallah

    الأعضاء


    • نقاط

      4

    • المساهمات

      150


  3. Hassan Hedr

    Hassan Hedr

    الأعضاء


    • نقاط

      3

    • المساهمات

      2851


  4. بلال زيادة

    بلال زيادة

    الأعضاء


    • نقاط

      3

    • المساهمات

      4376


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

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

  1. لقد أجريت عملية تهجير للبيانات وتمت إضافة جدول جديد وأريد التراجع عنه وحذف آخر عملية تهجير، بدون إنشاء ملف تهجير جديد. كيف يمكنني فعل ذلك؟ هل هناك أمر للتراجع عن آخر عملية تهجير للبيانات لأقوم لعد ذلك بحذف ملف التهجير فقط؟
    2 نقاط
  2. عندي مشكلة في جافا سكربت من المفترض ان الفور لوب تعطيها statement عشان تقولها متي توقف وانا سويت كذا ومو راضية توقف function addUp(num) { for (i = 0; i < num; i++) { num += i } return num }
    2 نقاط
  3. يعتبر الموضوع بسيط حيث يمكنك التحكم في ال scroll من خلال الخاصية scrollTop بواسطة javascript لاحظ الكود التالي من خلال jquery var div = $('#div1'); div.scrollTop(div.prop("scrollHeight")); و إذا كنت تريد التحرك ب animation يمكنك استخدام الكود التالي $("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000); الكود السابق يقوم بتحريك الصفحة لأسفل ال div المحدد يمكنك استخدام هذا الكود ضمن موقعك كما تريد
    2 نقاط
  4. السلام عليكم ورحمة الله اخواني الأفاضل نرى في محادثات الواتساب عند تحميل المحادثة يتحرك الشريط الجانبي لأسفل وعند ورود رسالة جديدة يتحرك ايضا الى أسفل المحادثة وعندما نرتفع لأعلى لقرائة الرسائل القديمة اذا كانت هناك رسالة واردة يظهر سهم عند الضغط عليه يتحرك الشريط الجانبي الى اسفل المحادثة اتسائل هل هذا الأمر صعب التطبيق وهل يمكن تنفيذه في البرنامج التالي حيث عند اعادة تحميل الصفحة يتحرك الشريط لأسفل وعند ورود رسالة جديدة يتحرك الشريط لأسفل وعند قراءة الرسائل القديمة يتوقف الشريط الجانبي عن التحرك التلقاءي <div class="div_show_message_groups" id="div_show_message_groups"> </div> <script> $(document).ready(function(e) { function getMessages(letter) { var message=$('#div_show_message_groups'); $.get('show_pages/display_messages_groups.php', function(data) { message.html(data); }); } setInterval(function() { getMessages("letter"); }, 100) //....... $("#messages_form_groups").on('submit', function(e) { e.preventDefault(); $.ajax ({ type: 'POST', url: 'send_pages/send_messages_form_groups.php', data: new FormData(this), dataType: 'json', contentType: false, cache: false, processData:false, success: function(response) { if(response.status == 1) { $('#messages_form_groups')[0].reset(); } } }); }); }); </script>
    1 نقطة
  5. كنت أعمل على تطبيق ويب باستخدام Django ، وكنت أتسأل ما إذا كانت هناك طريقة لجدولة وظيفة لتعمل بشكل دوري في وقت محدد أو بعد عدد معين من الساعات أريد فقط المرور على جدول في قاعدة البيانات وإجراء بعض العمليات الحسابية والتحديثات بشكل تلقائي ومنتظم (كل يوم على سبيل المثال)، ولكن لا يمكنني العثور على أي شروحات حول القيام بذلك الأمر في Django.
    1 نقطة
  6. السلام عليكم اريد الاستفادة من تجارب احد محترفي ومتقني لغة javascript الاستفسار حول كيفية التعلم السليم للغة وماهي اهم الاساليب التي يجب استخدامها للتعلم مع العلم انني اتوفر على اربع الى خمس ساعات فارغة لدراسة اللغة وهل ينصح بالتعلم وحل المسائل في نفس الوقت عبر احد مواقع حل المسائل البرمجية ما هي ابرز النصائح التي من الممكن ان استفيد منها من متقني هاته اللغة ... جزاكم الله خيرا
    1 نقطة
  7. أنا أستخدم جانغو Django وقد نسيت اسم المستخدم وكلمة المرور الخاصين بالحساب المسؤول. كيفية إعادة تعيين كليهما؟ وهل من الممكن تحويل مستخدم عادي إلى مسؤول ، ثم إزالة حالة المسؤول؟ أي أقوم بعمل أدمن بشكل مؤقت فقط ثم حذفه مرة أخرى؟
    1 نقطة
  8. عندما أقوم بكتابة ألسطر التالي في موجه الأوامر CMD يظهر لي الخطأ التالي: pip3 install --upgrade tensorflow-gpu الخطأ: Could not install packages due to an EnvironmentError: [WinError 5] Access is denied: 'c:\\users\\dylan\\appdata\\local\\programs\\python\\python35\\Lib\\site-packages\\numpy\\.libs\\libopenblas.BNVRK7633HSX7YVO2TADGR4A5KEKXJAW.gfortran-win_amd64.dll' Consider using the `--user` option or check the permissions.
    1 نقطة
  9. تحيه طيبه سابقا قمت برفع تطبيقي على سوق جوجل بلاي وكان يظهر في البحث ولكن قمت بعمل الغاء نشر بسبب فقدي لملف keystore وقمت باعادة نشر تطبيقي من جديد المشكله الان تم الموافقه على تطبيقي ولكن لما اعمل بحث من خلال اسم التطبيقي لا يظهر لي يظهر في حالة واحده في حالة قمت بالبحث باسم المطور او اسم حسابي في جوجل بلاي حساب المطورين كيف يمكن حل هذا المشكله وجعل التطبيق يظهر من خلال البحث عن اسمه مع العلم انني قمت بتسجيل اسم التطبيقي في الماركة عربي+ انجليزي اذا احدث واجه مثل هذا المشكله سابفا ارجو الافاده
    1 نقطة
  10. الأمر طبيعي , وسوف يستغرق وقت في الظهور ولا توجد مشكلة محددة في هذا الأمر
    1 نقطة
  11. اهلا بك اخي بلال المشكله الذي احترت فيها ان تطبيقي السابق يظهر على طول حتى لو في صفحات مختلفه اما هذا قمت بتمرير حتى وصلت الى نهاية الصفحات ولم اجده ولكن لو قمت بالبحث باسم المطور يظهر لدي
    1 نقطة
  12. ايه الخطاء في كده كل ما اعمل صفحه ويب لايظهر شي ع الصفحه ارجو الرد
    1 نقطة
  13. لاحظ أنه لم تقم بحفظ الملف , ولو أردت التأكد من ذلك سوف تلاحظ أنه يوجد نقطة بيضاء بجانب اسم الملف و هو page.html فعليك حفظ الملف بعد الأنتهاء من كتابة الأكواد عن طريق الضغط على قائمة file ثم save أو بالضغط على لوحة المفاتيح على الزرين ctrl + s او من خلال فائمة file يمكنك تعليم خيار auto save , هل لو سمحت قمت بحفظ الملف و تجربة فتحه مرة أخرى و أخباري بالنتيجة.
    1 نقطة
  14. لوسمحت بكتب الاكواد جيدا ولا تظهر اي معلومات ع الصفحه انا لسه فس المرحله انا في الفيديو رقم 7
    1 نقطة
  15. بالإضافة إلى ما قام المدرب سامح بشرحه يمكننا تلخيص الوظيفة في دالة مستقلة تماما يتم إستدعاءها عند الحاجة لها . لنقم أولا بتعريف الدالة المسؤولة عن العملية : function scrollToBottom() { var div = $('#div1'); div.scrollTop(div.prop("scrollHeight")); } لنقم الان بإستدعاء الدالة في كل من الوظائف المعبر عنها بهاته الحالات : أي أن الدالة تستدعى عند كل تحميل لموارد الصفحة : scrollToBottom(); نحتاج في هذا تعقب الوظيفة المسؤولة عن عرض رسائل جديدة و إستدعاء الدالة المسؤولة عن تعديل الاسكرول عند كل عرض لرسالة جديدة . أي : <script> $(document) .ready(function(e) { function getMessages(letter) { var message = $('#div_show_message_groups'); $.get('show_pages/display_messages_groups.php', function(data) { message.html(data); // ضبط الشريط الجانبي بعد كل تضمين لرسالة جديدة scrollToBottom(); }); } }); </script> هاته العملية هي خطوتان مركبتان , نحتاج أولا تعقب إرسال رسائل جديدة و إستدعاء الدالة عند كل تضمين (وهو ما تم عمله بالفعل في الخطوة الثانية) , و ثانيا : التحقق من أن المستخدم لا يقوم بتحريك الشريط للأعلى . لنقم بتعريف متغير يحمل قيمة بوليانية تعبر عن ما إن كان المستخدم يقوم بتحريك الشريط أو لا , و لنقم بربط هذا بفترة تقوم بالتحقق ما إن توقف المستخدم بتحريك الشريط أو لا : var myDiv = $('#div1'); var userIsScrolling = false; /*يتم تغيير فيمة المتغير عند كل تحريك للشريط الجانبي*/ myDiv.scroll(function(){ userIsScrolling = true; }); /*ان توقفف المستخدم عن تحريك الشريط الجانبي لأكثر من ثلاث ثواني سيتم تغيير قيمة المتغير*/ setInterval(function(){ userIsScrolling = false; }, 3000); ثم سيتم إستعمال قيمة هذا التغير في التحقق قبل ضبط الشريط الجانبي عند كل إرسال لرسالة جديدة : <script> $(document) .ready(function(e) { function getMessages(letter) { var message = $('#div_show_message_groups'); $.get('show_pages/display_messages_groups.php', function(data) { message.html(data); // ضبط الشريط الجانبي للأسفل عند كل رسالة جديدة , و في حالة عدم تحريكه من طرفف المستخدم if(! userIsScrolling){ scrollToBottom(); } }); } }); </script> ثم لنقم بدمج الشيفرة كاملة , لتكون : $(document) .ready(function(e) { /*الوظيفة المسؤولة عن عمل الاسكرول*/ function scrollToBottom() { var div = $('#div1'); div.scrollTop(div.prop("scrollHeight")); } /*استدعاء الدالة عند كل تحميل جديد للصفحة*/ scrollToBottom(); var userIsScrolling = false; /*يتم تغيير فيمة المتغير عند كل تحريك للشريط الجانبي*/ $('#div1') .scroll(function() { userIsScrolling = true; }); /*ان توقفف المستخدم عن تحريك الشريط الجانبي لأكثر من ثلاث ثواني سيتم تغيير قيمة المتغير*/ setInterval(function() { userIsScrolling = false; }, 3000); /*الدالة المسؤولة عن جلب الرسائل من الواجهة الخلفية*/ function getMessages(letter) { var message = $('#div_show_message_groups'); $.get('show_pages/display_messages_groups.php', function(data) { message.html(data); // ضبط الشريط الجانبي للأسفل عند كل رسالة جديدة , و في حالة عدم تحريكه من طرفف المستخدم if (!userIsScrolling) { scrollToBottom(); } }); } setInterval(function() { getMessages("letter"); }, 100) /*إرسال طلب إلى الواجهة الخلفية بتسجيل رسالة جديدة*/ $("#messages_form_groups") .on('submit', function(e) { e.preventDefault(); $.ajax({ type: 'POST', url: 'send_pages/send_messages_form_groups.php', data: new FormData(this), dataType: 'json', contentType: false, cache: false, processData: false, success: function(response) { if (response.status == 1) { $('#messages_form_groups')[0].reset(); } } }); }); }); و بالطبع فإنه يمكنك التعديل من سلوك التحريك كإضافة بعض الأنيميشن أو ربما تغيير المهلة التي يتم فيها إعتبار أن المستخدم توقف عن السكرول . تأكد فقط أن الكثير من الأفكار قد تحتاج تجزئة و تبسيط لها ,و لما لا نمذجة في سبورة أو ورقة , فهو صحيح أن البرمجة ومفاهيمها أشياء تجريدية , و لكنها تنطلق من الواقع و تحاول نمذجته و تبسيطه و لذلك حاول دوما تقسيم الفكرة إلى أفكار جزئية و لا يجب عليك أبدا النظر إلى أية فكرة بمجملها كفكرة واحدة موحدة غير قابلة للتقسيم .
    1 نقطة
  16. لا يظهر التطبيق بسرعة كبيرة على المتجر يجب الأنتظار كم يوم حتى يظهر , ايضا عند البحث عن باسم التطبيق و اسم المطور يكون قد ظهور لأنك بحثت باسمه أو باسم مطوره ولكن في حالة وجود تطبيقات مشابهة و تكون أقدم من تطبيقك فسوف تظهر قبل تطبيقك و يكون تطبيقك في الصفحات التالية , ايضا حاول الاهتمام بوصف التطبيق و اسمه و محاولة تمييزه بكلمات دليلة تدل عليه مما تساعد في تقدمه في نتائج البحث الأولى. ولكن لا تقلق سوف يظهر تطبيقك مع مرور الوقت في الصفحات الأولى بعد الزيارات و التحميلات التي سوف تتم عليه.
    1 نقطة
  17. هذه الجزئية يجب أن تكون متاحة للتنفيذ بعد اكتمال عرض الصفحة و ضمان تحميل محتوى المحادثات القديمة أي نفذها بعد اكتمال جلب البيانات (دع الاستعلام يجلب آخر 20 رسالة مثلا) لايفضل تحريك الصفحة تلقائياً بعد ورود رسالة جديدة، إنما لاحظ فيسبوك تعرض رمز صغير وبالنقر عليه يتم عمل إنزلاق لنهاية المحادثة، أعتقد من الأفضل أن تضع زر أيقونة يظهر فقط في حالة لم يكن المستخدم يستعرض آخر رسالة وبالنقر عليه يتم الإنزلاق لتعرض آهخر رسالة (أضف action listener) لرسالة جديدة وضع فيها أن مكان عرض القسم ليس بكامل الارتفاع فيظهر الزر، وعند نقر الزر نعمل إنزلاق ***** أي تضع أيقونة مخفية بشكل افتراضي فوق شريط الكتابة ضمن المحادثة مع عرض مخفي display : none بعد ورود رسالة جديدة إن كان المستخدم في آخر جزء في أسفل قسم عرض الرسائل يتم تحميل الرسالة الجديدة فقط إن كان المستخدم في مكان آخر من المحادثة تظهر الأيقونة لتدل على ورود رسالة جديدة وبالنقر عليها تعمل إنزلاق لمعرفة ارتفاع التمرير للعنصر نقرأ القيمة من جيكويري: $('#div1').prop("scrollHeight") وبمقارنها مع ارتفاع العنصر الكامل نعلم هل المستخدم في آخر جزء من الصفحة أو كلا وعليه نضع باقي الشروط.. وقم بإخفاء الأيقونة بعد تنفيذ دالة الانتقال أو قبلها animate: $("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000);
    1 نقطة
  18. حلقة ال for تبقى تدور طالما الشرط التالي محقق في كل دورة أنت تقوم بالتالي إضافة 1 إلى قيمة المتحول i إضافة قيمة i (بعد الزيادة) إلى قيمة المتحول num التحقق من الشرط // بافتراض تمرير التالي addUp(5) i num حالة الشرط 0 5 0 < 5 صحيح يكمل 1 6 1 < 6 صحيح يكمل 2 8 2 < 8 صحيح يكمل 3 11 3 < 11 صحيح يكمل . . ... إلى لا نهاية قيمة num دائما أكبر من i لذلك لن تقف الحلقة وضح ما الغرض من الدالة الذي تريده لكي أقوم بالمساعدة
    1 نقطة
  19. @مروان مروان3 سبب ذلك بالعادة هو جوجل بلاي ويبدو إنك قمت بتفعيل خاصية خدمة التوقيع الخاصة بجوجل عند عمل حساب جوجل بلاي لأول مرة الأن ما تقوم به جوجل بعد أن تقوم بتفعيل ذلك هو تقوم بتوليد keystore جديد وتقوم بإزالة المفتاح الخاص بك وإضافة ال keystore الخاص بهم لأغراض الحماية وبالنهاية يصبح تطبيقك غير موقع أو لا يملك الصلاحيات المناسبة لأنه تم توقيعه بإستخدام keystore آخر وهو الخاص بجوجل , الأن لحل المشكلة ما سنقوم به هو من Google Play Console من القائمة اليمني "للغة الإنجليزية" إضغط على "Release Management" ثم إذهب إلى App signing -> App signing certificate أرفقت صورة للمسار أعلاه في Google Play Console وقم بنسخ المفتاح SHA-1 أو SHA-256 وأيضاً نسخ مفتاح SHA-1 الخاص بقسم "Upload Certificate" ثم أضفهن جميعاً في ال firebase console بعد ذلك قم بتنزيل ملف google-services.json الجديد وأضفه إلى التطبيقك وقم بعمل نسخة جديدة من التطبيق بنفس ال keystore الذي إستخدمته عند رفع أو نسخة من التطبيق أو النسخة المرفوعة حالياً على المتجر بعد ذلك سيعمل معك تسجيل الدخول كما في السابق
    1 نقطة
  20. حاولي تحديث أندرويد استديو، وكل لواحقه مثل gradle plugin. لملف gradle.properties تأكدي منهم android.enableJetifier=true android.useAndroidX=true وتوافق: compileSdkVersion 28 /// هذه defaultConfig { ...... minSdkVersion 21 targetSdkVersion 28 // هذه ...... } كما تعديل إصدار المكتبات التالية أو تعديل اسمها لتصبح لوجود بديل أحدث: ** android/build.gradle and changed * com.android.tools.build:gradle to version 3.3.0 * com.google.gms:google-services to version 4.2.0 **opened android/app/build.gradle and *changed compileSdkVersion to 28 * replaced android.support.test.runner.AndroidJUnitRunner to androidx.test.runner.AndroidJUnitRunner * replaced com.android.support.test:runner to androidx.test:runner:1.1.0 * replaced com.android.support.test.espresso:espresso-core to androidx.test.espresso:espresso-core:3.1.0 للأسف هكذا مشاكل يوجد العديد من الخطوات التي من الممكن لها حلا المشكلة وهذا يتطلب منك نسخ رسالة الخطأ وتجريب كل الحلول،
    1 نقطة
  21. يمكنك التراجع عبر التهجير الى التهجير السابق على سبيل المثال ، إذا كان آخر تهجيرين لك هما: 0010_previous_migration 0011_migration_to_revert ثم ستقوم بتنفيذ: ./manage.py migrate my_app 0010_previous_migration لا تحتاج فعليًا إلى استخدام اسم التهجير الكامل ، فالرقم كافٍ ، أي ./manage.py migrate my_app 0010 ثم بعد ذلك يمكنك حذف التهجير 0011_migration_to_revert. إذا كنت تستخدم Django 1.8 ومافوق ، فيمكنك إظهار أسماء جميع عمليات التهجير باستخدام ./manage.py showmigrations my_app لعكس جميع عمليات التهجير لأحد التطبيقات ، يمكنك تنفيذ: ./manage.py migrate my_app zero لكن يجب الإشارة إلى أنه لا يمكن عكس جميع الهجرات . يحدث هذا إذا لم يكن لدى Django قاعدة للقيام بعملية العكس. بالنسبة لأغلب التغييرات التي أجريت عمليات التهجير بشكل تلقائي بإستخدام /manage.py makemigrations سيكون الإلغاء أو التراجع ممكنًا. مع ذلك فإن النصوص البرمجية المخصصة ستحتاج إلى كتابة الأمام والعكس. وايضاً لا تحذف ملف التهجير إلا بعد الرجوع. لأنه بدون ملف التهجير ، لم تكن قاعدة البيانات تعرف الأشياء التي يجب إزالتها. python manage.py showmigrations python manage.py migrate {app name from show migrations} {00##_migration file.py} إذا كنت تريد التراجع عن جميع عمليات التهجير ، فاستخدم zero كاسم التهجير: python manage.py migrate app_name_here zero احذف ملف التهجير. بمجرد أن يكون التهجير المطلوب في نماذجك ... python manage.py makemigrations python manage.py migrate
    1 نقطة
  22. إذا أردت عرض سهم جانبي عندما تقوم بالتحرك إلى الأعلى (عند قراءة الرسائل القديمة)، فيمكنك أن تقوم بذلك من خلال التابع scroll كالتالي: var div = $('#div1') $(window).scroll(function() { // إذا كان موضعنا في الصفحة فوق نهاية العنصر div if (div.prop("scrollHeight") > window.scrollY) { $('#toBottom').fadeIn(); } else { $('#toBottom').fadeOut(); } })
    1 نقطة
  23. لدي هادا المتغير let day = " friday "; اريد حدف المسافات الجانبية له وجعل الحرف الاول كبيرا فقط الحرف الاول لقد حاولت مرارا وتكرارا عبر استخدام الخصائص trim and charAt وغيرها من الامور اللازمة لتحقيق هادا الامر لكن استعصى علي فعل دلك
    1 نقطة
  24. في هذه الحالة يمكنك استخدام طريقتين لفعل ذلك, بداية نقوم بحذف المسافات الجانبية باستخدام trim ونقوم بحفظ الناتج في متغير على سبيل المثال اسمه day1 var day1 = day.trim(); الطريقة الاولى أن نقوم بتكبير الحرف الاول ثم نقوم باضافته الى باقي أحرف الكلمة باستخدام علامة + واستثناء الحرف الاول من المتغير day1 كالتالي day1.charAt(0).toUpperCase()+ day1.slice(1); الطريقة الثانية أن نقوم بعمل function وظيفتها أن تقوم بتقسيم الكلمة الممرة لها وعمل حلقة تكرار على احرف الكلمة وبداخل حلقة التكرار نقوم بتكبير الحرف الاول وعمل join للحروف كالتالي function firstUpperCase(str) { var splitStr = str.toLowerCase().split(' '); for (var i = 0; i < splitStr.length; i++) { splitStr[i] = splitStr[i].charAt(0).toUpperCase() + splitStr[i].substring(1); } return splitStr.join(' '); } تستطيع تخزين القيمة المرجعة من الفنكشن في متغير وطباعته كالتالي var dd = firstUpperCase(day1) console.log(dd)
    1 نقطة
  25. شكرا لك اخي هادا الحل على ما اظن قد وجدته خلال البحث الدي كنت اقوم به لكن انا مطلوب مني ان اجد الحل بدون استخدام function او غيرها من الامور المتقدمة اتمنى ان تكون قد فهمت قصدي جزاك الله خيرا شكرا لك اخي المشكل هنا هو ان الناتج يكون هو الحرف الاول فقط F لكن ما اريد الوصول اليه هو جعل الحرف الاول كبيرا وكدا تطبع معه باقي حروف المتغير النتيجة المطلوبة هي كالتالي Friday ^:hm hggi odvh
    1 نقطة
  26. يمكننا ازالة المسافات الجانبية باستخدام الدالة trim , ثم يمكننا تحديد الحرف الاول من الكلمة باستخدام charAt وتحويله الى حرف كبير باستخدام الدالة toUpperCase() كالتالي day.trim().charAt(0).toUpperCase() سوف يكون الناتج حرف F , لا يمكنك اجراء الدالتين في سطرين منفصلين, ويجب اجراءهما معا بالتتابع في نفس السطر لأنك اذا حاولت تنفيذ كل دالة في سطر منفصل سوف يتم التعامل مع المتغير day بصورته الأصلية , بمعنى اذا قمت بتنفيذ الدالة trim على المتغير day فسوف يكون الناتج "friday" واذا حاولت تنفيذ الدالة charAt مع toUpperCase في سطر منفصل فسوف يكون الناتج الحرف الأول من المتغير day وهو مسافة " " لذلك يجب تنفيذ الدالتين بالتتابع في نفس السطر , أرو يمكنك حفظ نتيجة تنفيذ الدالة trim في متغير آخر مثلا ليكون اسمه day1 , ثم يمكنك تنفيذ الدالة charAt مع toUpperCase عليه كالتالي day1=day.trim() => //"friday" day1.charAt(0).toUpperCase() =>//"F"
    1 نقطة
  27. string = day.replace(/\s+/g, ''); استخدم الكود في الاعلي لكي تحذف المسافات ثم استخدم هذا الكود لكي تجعل الحرف الاول كبير من خلال استخدام str.charAt لكي تحدد اول حرف و تجعله حرف كبير من خلال استخدام toUppercase ثم تستخدم str.slice لتحدد string بدون الحرف الاول ثم تضيفه علي الحرف الاول function capitalizeFirstLetter(str) { return str.charAt(0).toUpperCase() + str.slice(1); } capitalizeFirstLetter(string)
    1 نقطة
  28. الصيغة الرسمية لخصائص UML هي على الشكل التالي: [الظهور] ['/'] اسم الخاصية [ ':' نوع الخاصية ] [ '[' التعددية ']' ] [ '=' القيمة الافتراضية ] [ صفات تعريفية ] حيث مابين القوسين المربعين [ ] هو عنصر اختياري أحد الصفات التعريفية وهي ما تحتاجينه هنا هي "readOnly" يمكن صياغة خاصية نهائية ثابتة final بالأشكال التالية // أبسط شكل age {readOnly} // مع تعيين نوع المتحول age:integer {readOnly} // مع تعيين القيمة الافتراضية age = 20 {readOnly} // مع تعيين القيمة الافتراضية والنوع age:int = 20 {readOnly} ولسهولة القراءة يمكن الاتفاق مع الفريق على كتابة الخواص الثابتة بأحرف كبيرة (كما الاتفاق على كتابتها بأحرف كبيرة داخل الكود) AGE {readOnly} AGE:integer {readOnly} AGE = 20 {readOnly} AGE:int = 20 {readOnly}
    1 نقطة
  29. شكرا كثيرا لك ولكن هل من الممكن ان ترسل لي ايضا الخطوات عندما استخدم حزمةsrmklive/laravel-paypal
    1 نقطة
  30. باستخدامك لمكتبة Redux لإدارة الحالة داخل تطبيقك تنشئ عادة مخزن store وهو مخزن يعبر عن حالة التطبيق الحالية، هذا المخزن ليس إلا متحول عادي يخزن في الذاكرة العشوائية RAM عند عمل التطبيق ويتم حذفه من الذاكرة عند انتهاء عمل التطبيق مكتبة redux-persist تمكنك من تخزين حالة التطبيق في الذاكرة الدائمة واستعادتها عند بدء التطبيق كلمة persist تعني هنا الإبقاء أو الحفظ دالة مسؤولة عن تحديد مكان تخزين كل قطعة من بنية الحالة من مخزنك وتمييزها بمفتاح معين، عادة تقوم بتخزين المخزن ككل في قطعة واحدة كما التالي import { persistStore, persistReducer } from 'redux-persist' import storage from 'redux-persist/lib/storage' import rootReducer from './reducers' const persistConfig = { key: 'root', // مفتاح للتمييز storage, // مكان التخزين } const persistedReducer = persistReducer(persistConfig, rootReducer) تعني حفظ المخزن وهي دالة مسؤولة عن حفظ المخزن واستعادته عند بدء التطبيق // مخزن عادي يخزن في الذاكرة let store = createStore(persistedReducer) // تعزيز المخزن العادي بحفظه واستعادته let persistor = persistStore(store) const App = () => { return ( <Provider store={store}> /* نمرر المخزن المعزز */ <PersistGate loading={null} persistor={persistor}> ...
    1 نقطة
  31. الدالة flatten دوماً تعيد نسخة أي "copy". أما ravel فيقوم بإرجاع view (طريقة أخرى لعرض بيانات المصفوفة. وتعني أنه يتم مشاركة بيانات كلا الكائنين.) للمصفوفة الأصلية كلما أمكن ذلك. وهذا يكون غير مرئي في الإخراج الذي يتم طباعته، لكن إذا قمت بتعديل المصفوفة التي تم إرجاعها بواسطة رافيل، فسيتم التعديل أيضاً في المصفوفة الأصلية. أما إذا قمت بذلك في flatten فلن يحدث ذلك. غالبًا ما يكون ravel أسرع نظرًا لعدم نسخ ذاكرة ، ولكن عليك أن تكون أكثر حذراً بشأن تعديل المصفوفة التي تعيدها. انظر للمثال التالي الذي يوضح الأمر: import numpy as np y = np.arange(9).reshape(-1,3) """array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])""" e=y.flatten() # array([0, 1, 2, 3, 4, 5, 6, 7, 8]) a=y.ravel() # array([0, 1, 2, 3, 4, 5, 6, 7, 8]) a[0]=144 print(a) # [144 1 2 3 4 5 6 7 8] print(y) """ [[144 1 2] [ 3 4 5] [ 6 7 8]] """ e[2]=88 print(e) # [ 0 1 88 3 4 5 6 7 8] print(y) # لاحظ كيف لم ينتقل التعديل """ [[144 1 2] [ 3 4 5] [ 6 7 8]] """
    1 نقطة
  32. يمكنك القيام بذلك بالشكل التالي من خلال scipy: import scipy.misc scipy.misc.imsave('outfile.jpg', image_array) أو من خلال مكتبة PIL : from PIL import Image im = Image.fromarray(A) im.save("your_file.jpeg") أو من خلال مكتبة matplotlib : import matplotlib matplotlib.image.imsave('name.png', array) ومن خلال مكتبة png لكن قم أولاً بتحميل المكتبات : # pip install pypng # python setup.py install import png png.from_array([[255, 255, 122, 255], [0, 255, 255, 0]], 'L').save("im.png") أو من خلال مكتبة opencv: import cv2 img = ... # مصفوفتك cv2.imwrite("filename.png", img) # المسار والصورة
    1 نقطة
  33. عندما نريد إعادة تعيين حجم مصفوفة فإننا نقوم باستخدام هذا التابع، مثلاً إذا كانت لديك مصفوفة أحادية ل 20 عنصر يمكنك تحويلها لثنائية لكن يجب أن يكون عدد الأسطر * عدد الأعمدة يساوي 20 وبالتالي نمرر له البعد الأول والثاني اللذين نريد إعادة تعيين أبعاد المصفوفة إليهما، مثلا 5 و 4 أو 10 و 2 حيث أن جداءهما يساوي 20، لكن للاختصار يمكننا أن نمرر البعد الأول او الثاني فقط و البعد الآخر نضع بدلاً منه --1 وبالتالي يفهمها بايثون ويستنتج البعد الآخر من تلقاء نفسه، انظر للأمثلة التالية: arr=np.arange(20) arr.shape # (20,) # هنا أعطى خطأ لأن جداء الأسطر بالأعمدة يجب أن يساوي حجم المصفوفة الأصلية #arr.reshape(10,5) # ValueError: cannot reshape array of size 20 into shape (10,5) arr.reshape(10,2) # (10,2) arr.reshape(2,10) # (2,10) arr.reshape(4,5) # (4,5) # هنا سيستنتج البعد الآخر بناءان على فكرة أن الجداء يجب أن يساوي أبعاد المصفوفة الأصلية arr.reshape(-1,2) # (10,2) arr.reshape(-1,10) # (2,10) arr.reshape(4,-1) #(4,5) # أعطى هنا خطأ لأنه لايوجد عدد تضربه ب6 يعطيك 20 arr.reshape(6,-1) # ValueError: cannot reshape array of size 20 into shape (6,newaxis)
    1 نقطة
  34. بالشكل التالي: pd.DataFrame(data=data[1:,1:], # القيم index=data[1:,0], # العمودالأول كفهرس columns=data[0,1:]) # الصف الأول كأسماء الأعمدة حيث تحتاج إلى تحديد ال data والفهرس والأعمدة إلى باني ال dataframe: import numpy as np data = np.array([ ['', 'Col1', 'Col2'], ['Row1', 1, 2], ['Row2', 3, 4] ]) import pandas as pd pd.DataFrame(data=data[1:,1:], # القيم index=data[1:,0], # العمودالأول كفهرس columns=data[0,1:]) # الصف الأول كأسماء للأعمدة """ Col1 Col2 Row1 1 2 Row2 3 4 """ حيث أن: data[1:,1:] """ array([['1', '2'], ['3', '4']], dtype='<U4') """ data[1:,0] """ array(['Row1', 'Row2'], dtype='<U4') """ data[0,1:] """ array(['Col1', 'Col2'], dtype='<U4') """ ويمكنك أيضاً أن تقوم بتغيير نمط البيانات الخاص بالقيم إذا أردت بالشكل: import numpy as np data = np.array([ ['', 'Col1', 'Col2'], ['Row1', 1, 2], ['Row2', 3, 4] ]) import pandas as pd pd.DataFrame(data=np.int_(data[1:,1:]), # القيم index=data[1:,0], # العمودالأول كفهرس columns=data[0,1:]) # الصف الأول كأسماء الأعمدة """ Col1 Col2 Row1 1 2 Row2 3 4 """
    1 نقطة
  35. يمكنك استخدام الدالة astype بالشكل التالي: import numpy as np arr = np.array((0.2,1.7, 4.2, -1.2)) # array([ 0.2, 1.7, 4.2, -1.2]) arr = arr.astype(int) arr # array([ 0, 1, 4, -1])
    1 نقطة
  36. هناك عدة طرق للقيام بذلك، أولها استخدام باندا: import pandas as pd import numpy as np # إنشاءمصفوفة a = np.arange(3,4).reshape(-1,2) # طباعة المصفوفة print(a) # تحويل المصفوفة إلى DataFrame df = pd.DataFrame(a) #CSV حفظ الداتافريم كملف df.to_csv("data1.csv", index=False) #يفضل إلغاء تخزين عمود الفهرس لأنه قد يسبب لك مشاكل عند إعادة تحميل الملف الطريقة الثانية هي استخدام numpy_array.tofile(): import numpy as np # إنشاء مصفوفة a = np.arange(3,4) # عرض المصفوفة print(a) #tofile() استخدام الطريقة #',' يجب أن تستخدم الفاصلة # إنشاء الملف a.tofile('data2.csv', sep = ',') استخدام numpy.savetext(): """ numpy.savetxt(fname, arr, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None) """ import numpy as np # إنشاء مصفوفة arr = np.array([[11, 16, 3], [1, 0, 8]]) #CSV حفظ المصفوفة في ملف np.savetxt("a.csv", arr, delimiter = ",") لكن هنا سيتم تخزين البيانات في تنسيق أسي ك float مثل 2.000000000000000000e+00 لذا يجب عليك تغيير ال formatting باستخدام الوسيط fmt كما يلي: np.savetxt('a.csv', arr, fmt="%d", delimiter=",") طبعاً delimiter هو سلسلة أو حرف لاستخدامه كفاصل عنصر. و newline سلسلة أو حرف لاستخدامه كفاصل أسطر. و header تكتب سلسلة في بداية ملف txt أي ترويسة. أما footer فتكتب سلسلة في نهاية الملف (ذيل). و fmt افتراضياً تكون %.18e أي بالتنسيق الأسي. أما arr فهي مصفوفة أحادية أو ثنائية البعد حصراً. مثال آخر: import numpy as np arr = np.array([6, 1, 4, 2, 18, 9, 3, 4, 2, 8, 11]) np.savetxt('array.csv', [arr], delimiter=',', fmt='%d') # ستخزن بالشكل التالي # 6,1,4,2,18,9,3,4,2,8,11 مررنا المحدد "،" لجعله بتنسيق csv. تم قمنا بتمرير نوع التنسيق أيضاً كـ "٪ d" ، أي تخزين العناصر كأعداد صحيحة. وكما أشرت فإنه بشكل افتراضي، سيتم تخزين الأرقام بتنسيق عائم flotting point. وللتنويه أيضاً، إذا لم تقم بإحاطة مصفوفة numpy ب [] أي تحويلها إلى قائمة أثناء تمريرها إلى numpy.savetxt () فقد لا يعمل محدد الفاصلة، وسيستخدم "\ n" كمحدد افتراضي. لذا يفضل إحاطتها. مثال آخر مع إضافة ترويسة وذيل: np.savetxt('array_hf.csv', [arr], delimiter=',', fmt='%d' , header='A Sample 2D Numpy Array :: Header', footer='This is footer') """ # A Sample 2D Numpy Array :: Header 6,1,4,2,18,9,3,4,2,8,11 # This is footer """ مثال آخر مع مصفوفة ثنائية الأبعاد: arr2D = np.array([[11, 12, 13, 22], [21, 7, 23, 14], [31, 10, 33, 7]]) np.savetxt('2darray.csv', arr2D, delimiter=',', fmt='%d') """ 11,12,13,22 21,7,23,14 31,10,33,7 """ أيضاً، بدلاً من حفظ مصفوفة كاملة ثنائية الأبعاد في ملف csv ، إذا أردنا، يمكننا حفظ أعمدة أو صفوف فردية أو متعددة فقط. # حفظ عمود np.savetxt('a.csv', [arr2D[:,1]], delimiter=',', fmt='%d') """ 12,7,10 """ # حفظ سطر np.savetxt('aa.csv', [arr2D[1] ], delimiter=',', fmt='%d') """ 21,7,23,14 """ ولحفظ مصفوفة مهيكلة Structured Numpy array: dtype = [('Name', (np.str_, 10)), ('Marks', np.float64)] structure = np.array([('Ali', 21.2, 5), ('Eyad', 22.3, 4)], dtype=dtype) print(structure) # [('Ali', 21.2, 5) ('Eyad', 22.3, 4)] np.savetxt('structured.csv', structure, delimiter=',', fmt=['%s' , '%f', '%d'], header='Name,Marks,Age', comments='') """ Name,Marks,Age Ali,21.2, 5 Eyad,22.3, 4 """ وبما أن كل عنصر في المصفوفة الرقمية الخاصة بنا كان عبارة عن مزيج من سلسلة ، عدد عشري وعدد صحيح ، لذلك أثناء حفظه في ملف csv ، نقوم بتمرير خيارات التنسيق كلها أي ["٪ s" ، "٪ f" ، "٪ d"] ويمكنك لاحقاً تحميل الملف بعدة طرق، باستخدام loadtxt: from numpy import loadtxt # تحميل المصفوفة data = loadtxt('data.csv', delimiter=',') # طباعتها print(data) أو من باندا: import pandas as pd data = pd.read_csv("filename.csv") # عرض أول 5 أسطر من الملف data.head() # إذا أردت عرض أسطر أكثر مرر عددها إلى الوسيط التالي data.head(n=10)
    1 نقطة
  37. لاتستخدم And هنا، يمكنك استخدام: dists[(dists >= r) & (dists <= r+dr)] # أو dists[(np.where((dists >= r) & (dists <= r + dr)))] لأن & هو "element-wise and" أي يطبق عملية and على أطراف العلاقة بت بت (وهذا سبب تسمية هذه المعاملات ب bitwise). إن np.where تعيد قائمة من الفهارس وليس مصفوفة بوليانية، وأنت تحاول استخدام and مع مصفوفتين من الأرقام (ليست قيم بوليانية). وبالتالي إذا كنت x و y كلاهما True فهذا يعني أن a and b=b: [0،3،6] and [2،5،4]=[2،5،4] لاحظ معي: ##################################################################### dists = np.arange(0,8,.7) r = 5 dr = 1 np.where(dists >= r) #(array([ 8, 9, 10, 11], dtype=int64),) np.where(dists <= r+dr) #(array([0, 1, 2, 3, 4, 5, 6, 7, 8], dtype=int64),) np.where(dists >= r) and np.where(dists <= r+dr) #(array([0, 1, 2, 3, 4, 5, 6, 7, 8], dtype=int64),) ##################################################################### # أما الذي كنت تتوقع مقارنته هو مصفوفة منطقية، على سبيل المثال dists >= r #array([False, False, False, False, False, False, False, False, True, True, True, True]) dists <= r + dr # array([ True, True, True, True, True, True, True, True, True, False, False, False]) (dists >= r) & (dists <= r + dr) # array([False, False, False, False, False, False, False, False, True, False, False, False]) يمكنك الآن استدعاء np.where على المصفوفة المنطقية المدمجة: dists[np.where((dists >= r) & (dists <= r + dr))]
    1 نقطة
  38. يمكنك الوصول إلى أي جزء من أجزاء المصفوفة اعتماداً على مفهوم ال slicing في نمباي: import numpy as np arr = [[1, 2, 3], [7, 0, 7], [0, 8, 2]] arr = np.array(arr) print(arr) print('0th row: ') print(arr[0, :]) print('2nd column: ') print(arr[:, 2]) # يمكن أيضًا تحديد عدة أعمدة أو صفوف print('0th and 1st row:') print(arr[:,[0,1]]) """ [[1 2 3] [7 0 7] [0 8 2]] 0th row: [1 2 3] 2nd column: [3 7 2] 0th and 1st row: [[1 2] [7 0] [0 8]] """ يمكنك أيضاً استخدام مفهوم ال Ellipsis: # numpy_Array_name[…,column] للاعمدة # numpy_Array_name[row,…] للاسطر import numpy as np arr = [[1, 2, 4], [5, 6, 8], [7, 2, 2]] a = np.array(arr) print(a) print('0th column: ') print(a[..., 0]) print('1st row: ') print(a[1, ...]) """ [[1 2 4] [5 6 8] [7 2 2]] 0th column: [1 5 7] 1st row: [5 6 8] """ المزيد من الأمثلة: #i:j:k #i فهرس البداية #j فهرس التوقف #k الخطوة x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) x[1:7:2] #array([1, 3, 5]) x[-2:10] #array([8, 9]) x[-3:3:-1] #array([7, 6, 5, 4]) x[5:] #array([5, 6, 7, 8, 9]) x = np.array([[[1],[2],[3]], [[4],[5],[6]]]) x.shape #(2, 3, 1) x[1:2] """array([[[4], [5], [6]]]) """ x[...,0] """ array([[1, 2, 3], [4, 5, 6]]) """
    1 نقطة
  39. الإجابة التالية حسب توثيق باندا. عندما نضع low_memory=False فهذا يعني أن باندا ستقرأ الأعمدة بأكملها أولاً، ثم يتم تحديد الأنواع المناسبة لكل عمود. على سبيل المثال، سيتم الاحتفاظ بالعمود ككائنات (سلاسل) حسب الحاجة للحفاظ على المعلومات. (وهذا سيئ للذاكرة). إذا كان low_memory = True (الافتراضي)، فإن الباندا تقوم بمعالجة الملف داخلياً ضمن "chunks" (طريقة منهجية للتقسيم إلى أجزاء بحيث يسهل تجميعها لاحقأ)، ثم لاحقاً يقوم بدمجها معاً. مما يؤدي إلى استخدام أقل للذاكرة أثناء عملية ال parsing (التحويل من نمط بيانات إلى نمط آخر)، بعد ذلك، قد تكون بعض الأعمدة مثلاً "chunks of integers and strings" أي مزيج من السلاسل والأعداد الصحيحة، وهنا قد تحدث مشكلة مثلاً عنصر لم يستطع باندا تحويله من نمط إلى آخر وبالتلي قد ينتج عمود كل قيمه أعداد صحيحة ماعدا عنصر واحد لم يستطع باندا تحويله إلى عدد صحيح، لذا في حال حدوث ذلك ولو لمرة واحدة، فستظهر رسالة تحذرك من ذلك لأن هذا قد يسبب مشاكل لاحقاً ولذلك فمن الآمن أكثر أن نحدد نوع البيانات لكل عمود من خلال الوسيطة dtype وبالتالي سيفهم باندا مباشرة عند قراءة العمود نوع بيانات كل عمود وبالتالي تجنب حدوث أي مشاكل وهذا ماعليك القيام به دائماً دائماً: # هنا نحدد ال dtype df = pd.read_csv(csv_file,sep=';', encoding = 'ISO-8859-1',names=['c1','c2'], dtype={'c1':str,'c2':int}) أو نضع low_memory=False لنضمن أنه لن تكون هناك أنواع مختلطة (أي لتضمن عدم وجود عمود به قيم من أنماط مختلفة) أي أيضاً سيتم حل الأمر، لكن هذا الأمر سيكون على حساب الكفاءة كما أشرنا. df = pd.read_csv('data.csv', low_memory=False) وفي حال أردت فلترة التحذير: import warnings warnings.filterwarnings('ignore', message="^Columns.*")
    1 نقطة
  40. فقط استدعي ()tensor.numpy على ال Tensor object # tensorflow_version 2.x # مثال1 import tensorflow as tf t = tf.constant([[1, 2], [4, 8]]) a = t.numpy() print(a) print(type(a)) """ [[1 2] [4 8]] <class 'numpy.ndarray'> """ # مثال 2 import tensorflow as tf a = tf.constant([[1, 2], [3, 4]]) b = tf.add(a, 1) a.numpy() # array([[1, 2], # [3, 4]], dtype=int32) b.numpy() # array([[2, 3], # [4, 5]], dtype=int32) tf.multiply(a, b).numpy() # array([[ 2, 6], # [12, 20]], dtype=int32) إذا كانت النسخة هي TensorFlow version 1.x استخدم: tensor.eval(session=tf.compat.v1.Session()) مثال: # tensorflow_version 1.x import tensorflow as tf t = tf.constant([[1, 2], [4, 8]]) a = t.eval(session=tf.compat.v1.Session()) print(a) print(type(a)) أيضاً يجب أن تعلم أنه بمجرد استخدامك لأي عملية من عمليات نمباي على ال tensor سوف تتحول تلقائياً إلى numpy array، في الكود التالي مثلاً ، نقوم أولاً بإنشاء Tensor وتخزينه في متغير t عن طريق إنشاء ثابت Tensor ثم استخدام تابع الضرب في TensorFlow والناتج هو نوع بيانات Tensor أيضاً . بعد ذلك ، نقوم بإجراء عملية np.add () على Tensor التي تم الحصول عليها من خلال العملية السابقة. وبالتالي ، تكون النتيجة عبارة عن NumPy ndarray حيث تم إجراء التحويل تلقائيًا بواسطة NumPy. import numpy as np import tensorflow as tf #tensor إنشاء كائن t = tf.constant([[1, 2], [4, 8]]) t = tf.multiply(t, 2) print(t) # تطبيق عملية من نمباي a = np.add(t, 1) print(a) # هذا كل شيء
    1 نقطة
  41. plt.scatter(X[0, :], X[1, :], c=Y.reshape(X[0,:].shape), s=40, cmap=plt.cm.Spectral); #or plt.scatter(X[0, :], X[1, :], c=Y.reshape(X[1,:].shape), s=40, cmap=plt.cm.Spectral); #or plt.scatter(X[0, :], X[1, :], c=Y.reshape(X.shape[0]), s=40, cmap=plt.cm.Spectral); #or plt.scatter(X[0, :], X[1, :], c=Y.reshape(X.shape[1]), s=40, cmap=plt.cm.Spectral); - plt.scatter هو تابع يأخذ مصفوفتين كدخل، الأولى تمثل المحور السيني والثانية تمثل المحور العيني وتمثلهم كنقط بالمستوي الاحداثي. - هذه النقط يمكن أن تلونها باستخدام الخرائط اللونية. - cmap هي خريطة لونية وكل لون فيها له index. -كل نقطة سوف تأخذ لون من الخريطة cmap هذا اللون سوف يكون بناءان على قيمة c مثلاً إذا كانت c=0 هذا يعني أن النقطة ستأخذ اللون المقابل لل index=0 وهكذا .. - لدينا 400 نقطة حسب X لذا يجب أن نسند ل c أربعمئة قيمة، هذه القيم سوف تؤخذ من Y لذا يجب ضبط أبعاد المصفوفة Y بحيث تكون بنفس أبعاد [:,0]X أو X[1,:].
    1 نقطة
  42. لتحقيق ال Serialization نستخدم الكلاس ObjectOutputStream لإنشاء نسخة من الكائن الموجود في الذاكرة و وضعها في ملف . يجب القيام بالخطوات التالية : 1 - الكائن الذي تريد حفظ حالته يجب أن يكون في الأساس محققا للواجهة Serializable . ( ملاحظة الواجهة Serializable هي واجهة معرفة في الجافا ولاتحوي أي طرائق ومن اجل تحقيقها يجب كتابة تعليمة الاستيراد للصفوف import java.io.Serializable ). 2 - إنشاء ملف إمتداده ser بواسطة الكلاس FileOutputStream. 3 - تجهيز كائن من الكلاس ObjectOutputStream الذي يستخدم لكتابة حالة الكائن في الملف . 4 - نسخ حالة الكائن الموجود في الذاكرة في هذا الملف بواسطة الدالة writeObject() . 5 - عند الإنتهاء من عملية النسخ نقوم بقطع كل إتصال قمنا بإجرائه مع هذا الملف . مثال : ليكن لدينا كلاس يعبر عن طالب حقوله الاسم والرقم والمطلوب القيام ب Serialization. import java.io.Serializable; public class Student implements Serializable { String name; int id; public Student(String name,int id){ this.name=name; this.id=id; } public void printInformation(){ System.out.println("name: "+name+" id: "+id); } } الان في main سوف نعرض باقي خطوات السلسة : import java.io.FileOutputStream; import java.io.ObjectOutputStream; public class Session2 { public static void main(String[] args) { Student st=new Student("Alel",1); try { FileOutputStream fs = new FileOutputStream("teat.ser"); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(st); os.close(); } catch(Exception ex) { ex.printStackTrace(); } } } عند تنفيذ الخطوات السابقة ينشأ ملف بالاسم test.ser
    1 نقطة
  43. # فقط انسخ والصق هذا الكود import re def get_ID(string): s=re.split(' ',string) ID=[] for i in s: if(i.isnumeric()): if('056' == i[0:3] and len(i)==10): ID.append(i) return ID text =input() get_ID(text)
    1 نقطة
  44. class MyClass: def __init__(self): self.lst = [] بايثون تقدم نوعين لل attributes هما : class attributes and instance attributes. ال class attributes تشبه كثيراً ال static attributes في جافا و c++ فهي تتشارك نفس القيمة مع كل ال object التي تؤخذ من هذا الصف، ويتم تعريف ال class attributes في بايثون تماماً كما قمت أنت بتعريف المتغير الذي سميته lst لذا فكانت القيم هي نفسها. أما ال instance attributes فهي متغير ينتمي إلى object واحد فقط أي أن كل متغير تعرفه ك instance attributes سوف تكون قيمه منفصلة في كل object تأخذه من هذا الصف ، ويتم تعريف ال instance attributes تماماً كما عرفتها لك أنا أي ضمن التابع init
    1 نقطة
  45. السؤال غير واضح تماماً أخي لكن أعتقد أنك تريد إنشاء Object اسمه person ثم تعريف التابع المطلوب وهذا يتم كالتالي: class Person: def __init__(self): self.name = "" self.age = 0 def new_person(self,name,age): self.name=name self.age=age def who(self): print("The name: "+str(self.name)) print("The age: "+str(self.age)) p1 = Person() p1.new_person("Mohamed", 25) p1.who()
    1 نقطة
  46. # GRADED FUNCTION: forward_propagation_with_dropout def forward_propagation_with_dropout(X, parameters, keep_prob=0.5): np.random.seed(1) # retrieve parameters W1 = parameters["W1"] b1 = parameters["b1"] W2 = parameters["W2"] b2 = parameters["b2"] W3 = parameters["W3"] b3 = parameters["b3"] # LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SIGMOID Z1 = np.dot(W1, X) + b1 A1 = relu(Z1) ### START CODE HERE ### (approx. 4 lines) D1 = np.random.rand(A1.shape[0], A1.shape[1]) # A1 تعريف مصفوفة بقيم عشوائية بين الصفر والواحد وبنفس أبعاد المصفوفة D1 = D1 < keep_prob A1 = A1 * D1 A1 = A1 / keep_prob ### END CODE HERE ### Z2 = np.dot(W2, A1) + b2 A2 = relu(Z2) ### START CODE HERE ### (approx. 4 lines) D2 = np.random.rand(A2.shape[0], A2.shape[1]) D2 = D2 < keep_prob A2 = A2 * D2 A2 = A2 / keep_prob ### END CODE HERE ### Z3 = np.dot(W3, A2) + b3 A3 = sigmoid(Z3) cache = (Z1, D1, A1, W1, b1, Z2, D2, A2, W2, b2, Z3, A3, W3, b3) return A3, cache نعرف مصفوفة بقيم عشوائية بنفس أبعاد المصفوفة A ثم تحويل قيم المصفوفة D1 إلى 0 أو 1 حسب الشرط ( إذا كانت القيمة الأولى في المصفوفة D1 مثلاً 0.2 وهي أقل من العتبة (keep_prob = 0.5) أي سيكون الشرط محقق (D1<keep_porb) وسيقوم بتحويل القيمة إلى 1 , والعكس صحيح وسيقوم بتحويل القيمة إلى 0 ثم ضرب المصفوفة A1 بـ D1 بعد تعديل قيمها إلى 0,1 ثم تقسيم قيم المصفوفة A1 على العتبة....
    1 نقطة
  47. import java.util.Scanner; public class JavaApplication16 { static void Age(int current_date, int current_month, int current_year, int birth_date, int birth_month, int birth_year) { int month[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (birth_date > current_date) { current_month = current_month - 1; current_date = current_date + month[birth_month - 1]; } if (birth_month > current_month) { current_year = current_year - 1; current_month = current_month + 12; } int calculated_date = current_date - birth_date; int calculated_month = current_month - birth_month; int calculated_year = current_year - birth_year; System.out.println("Present Age"); System.out.println("Years: " + calculated_year + " Months: " + calculated_month + " Days: " + calculated_date); } public static void main(String[] args) { Scanner sc=new Scanner(System.in); // إدخال التاريخ الحالي int current_date = sc.nextInt(); int current_month = sc.nextInt(); int current_year = sc.nextInt(); //إدخال تاريخ الميلاد int birth_date = sc.nextInt();; int birth_month = sc.nextInt();; int birth_year = sc.nextInt();; // استدعاء التابع الذي قمنا بتعريفه لكي يطبع لنا العمر Age(current_date, current_month, current_year, birth_date, birth_month, birth_year); } }
    1 نقطة
  48. using namespace std; int Min(int myarray[], int n) { int res = myarray[0]; for (int i = 1; i < n; i++) res = min(res, myarray[i]); return res; } int main() { int arr[] = { 12, 1234, 45, 67, 1 }; int n = sizeof(arr) / sizeof(arr[0]); cout << "Minimum element of array: " << Min(arr, n); return 0; }
    1 نقطة
  49. 1.ادخل إلى start menue. 2.اكتب في مربع البحث "registry editor" ثم ادخل إليه. 3. من الواجهة التي تظهر انتقل إلى : "HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\shell". ملاحظة 1: إذا لم يكن المجلد shell موجوداً، قم بإنشائه عن طريق الضغط بالزر اليميني على Background ثم اختر new ثم key ثم سينشئ لك مجلد ويطلب منك تسميته (قم بتسميته shell). ملاحظة 2: يمكنك تتبع الصور. 4.بعد ذلك انقر بالزر اليميني على shell واختر new ثم key سمي المجلد الذي سينتج Bash. 5.الآن على يمين الشاشة اضغط بالزر اليميني على البيانات التي تسمى "Deafult" (تسمى القيمة value) ثم اختر modify ثم اكتب open in bash (هذا الاسم هو الذي سيظهر على سطح المكتب عندما تضغط على المجلد الذي تريده). 6.اضغط بالزر اليميني على bash واختر new ثم key وسمي المجلد الذي سينتج command. 7.اضغط بالزر اليميني على ال value واختر modify ثم ضع المسار الذي يوجد به التطبيق الخاص بك . 8. الآن اذهب لسطح المكتب واضغط بالزر اليميني على أي مجلد وستراه.
    1 نقطة
×
×
  • أضف...