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

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

  1. Suhaib Hassan

    Suhaib Hassan

    الأعضاء


    • نقاط

      4

    • المساهمات

      13


  2. سامح أشرف

    سامح أشرف

    الأعضاء


    • نقاط

      2

    • المساهمات

      2934


  3. علي العبدالله2

    • نقاط

      2

    • المساهمات

      254


  4. Adam Ebrahim

    Adam Ebrahim

    الأعضاء


    • نقاط

      2

    • المساهمات

      165


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

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

  1. احتاج موقع لعمل API وتطبيق CRUD عليها
    2 نقاط
  2. شرح للكود بعد إذن Ali Haidar Ahmad في البداية نحن داخل كلاس اسمة JavaApplication16 يوجد فية ميثود اسمها Age يتاخد اكتر من مدخل ( اليوم الاحالي و الشهر الحالي و السنة الحالية و يوم الميلاد شهر الميلاد وسنة الميلاد) 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]; } هذا الشرط بيفحص اذا كان يوم الميلاد أكبر من اليوم الحالي (يوم في المستقبل ) يخلي رقم الشهر - واحد وايضا يعطي قية current data بيعطي نفس القيمة الدخلة if (birth_month > current_month) { current_year = current_year - 1; current_month = current_month + 12; } اما في هذا الشرط فيقوم بفحص الاشهر الدخلة فيقوم بفحص الاشهر اذا كان الشهر المخل أقل من شهر الميلاد مثال شهر ميلادي 7 ونحن في شهر 5 اذا لم أبغل عام كامل بعد لهذا يقوم بطرح واحد من السنة ونفس الفكرة في الشرط في الاعلى int calculated_date = current_date - birth_date; int calculated_month = current_month - birth_month; int calculated_year = current_year - birth_year; هنا يقوم بطرح القيم مب بعض يحصل على الناج النهائي للعمر 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) هنا نقوم بستدعاء الدالة التي كنت اشرح عنها قبل قليل في الاعلى وهذا كل شي اتمنى ان تكون الامو واضحه حياتي
    2 نقاط
  3. الإصدار 1.0.0

    116579 تنزيل

    سطع نجم لغة البرمجة بايثون في الآونة الأخيرة حتى بدأت تزاحم أقوى لغات البرمجة في الصدارة وذاك لمزايا هذه اللغة التي لا تنحصر أولها سهولة كتابة وقراءة شيفراتها حتى أصبحت الخيار الأول بين يدي المؤسسات الأكاديمية والتدريبية لتدريسها للطلاب الجدد الراغبين في الدخول إلى مجال علوم الحاسوب والبرمجة. أضف إلى ذلك أن بايثون لغةً متعدَّدة الأغراض والاستخدامات، لذا فهي دومًا الخيار الأول في شتى مجالات علوم الحاسوب الصاعدة مثل الذكاء الصنعي وتعلم الآلة وعلوم البيانات وغيرها، كما أنَّها مطلوبة بشدة في سوق العمل وتعتمدها كبرى الشركات التقنية. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن بني هذا العمل على كتاب «How to code in Python» لصاحبته ليزا تاغليفيري (Lisa Tagliaferri) وترجمه إلى العربية محمد بغات وعبد اللطيف ايمش، وحرره جميل بيلوني، ويأتي شارحًا المفاهيم البرمجية الأساسية بلغة بايثون، ونأمل في أكاديمية حسوب أن يكون إضافةً نافعةً للمكتبة العربيَّة وأن يفيد القارئ العربي في أن يكون منطلقًا للدخول إلى عالم البرمجة من أوسع أبوابه. رُبط هذا الكتاب مع توثيق لغة بايثون في موسوعة حسوب لتسهيل عملية الاطلاع على أي جزء من اللغة مباشرة وقراءة التفاصيل باللغة العربية. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «المرجع الشامل إلى تعلم لغة بايثون»، أو مباشرةً من الآتي: المقال الأول: دليل تعلم بايثون اعتبارات عملية للاختيار ما بين بايثون 2 و بايثون 3 المقال الثاني: تثبيت بايثون 3 وإعداد بيئتها البرمجية المقال الثالث: كيف تكتب أول برنامج لك المقال الرابع: كيفية استخدام سطر أوامر بايثون التفاعلي المقال الخامس: كيفية كتابة التعليقات المقال السادس: فهم أنواع البيانات المقال السابع: مدخل إلى التعامل مع السلاسل النصية المقال الثامن: كيفية تنسيق النصوص المقال التاسع: مقدمة إلى دوال التعامل مع السلاسل النصية المقال العاشر: آلية فهرسة السلاسل النصية وطريقة تقسيمها المقال الحادي عشر: كيفية التحويل بين أنواع البيانات المقال الثاني عشر: كيفية استخدام المتغيرات المقال الثالث عشر: كيفية استخدام آلية تنسيق السلاسل النصية المقال الرابع عشر: كيفية إجراء العمليات الحسابية المقال الخامس عشر: الدوال الرياضية المضمنة المقال السادس عشر: فهم العمليات المنطقية المقال السابع عشر: مدخل إلى القوائم المقال الثامن عشر: كيفية استخدام توابع القوائم المقال التاسع عشر: فهم كيفية استعمال List Comprehensions المقال العشرون: فهم نوع البيانات Tuples المقال الحادي والعشرين: فهم القواميس المقال الثاني والعشرين: كيفية استيراد الوحدات المقال الثالث والعشرين: كيفية كتابة الوحدات المقال الرابع والعشرين: كيفية كتابة التعليمات الشرطية المقال الخامس والعشرين: كيفية إنشاء حلقات تكرار while المقال السادس والعشرين: كيفية إنشاء حلقات تكرار for المقال السابع والعشرين: كيفية استخدام تعابير break وcontinue وpass عند التعامل مع حلقات التكرار المقال الثامن والعشرين: كيفية تعريف الدوال المقال التاسع والعشرين: كيفية استخدام *args و**kwargs المقال الثلاثين: كيفية إنشاء الأصناف وتعريف الكائنات المقال الحادي والثلاثين: فهم متغيرات الأصناف والنسخ المقال الثاني والثلاثين: وراثة الأصناف المقال الثالث والثلاثين: كيفية تطبيق التعددية الشكلية (Polymorphism) على الأصناف المقال الرابع والثلاثين: كيف تستخدم منقح بايثون المقال الخامس والثلاثين: كيفية تنقيح شيفرات بايثون من سطر الأوامر التفاعلي المقال السادس والثلاثين: كيف تستخدم التسجيل Logging المقال السابع والثلاثين: كيفية ترحيل شيفرة بايثون 2 إلى بايثون 3
    1 نقطة
  4. سنتعرف في بداية هذا المقال إلى تطبيقات شائعة يُستخدَم فيها محرك القوالب تويغ، ثم سنشرح طريقة استخدام تويغ في ووردبريس كنوع من التطبيق العملي على تويغ. تطبيقات شهيرة تستخدم تويغ يتنوع استخدام تويغ بشكل كبير ولا ينحصر فهو يُستخدم في إطار عمل سيمفوني symfony ويستخدم أيضا في عدد من أنظمة إدارة المحتوى مثل دروبال وبلوت Bolt بالإضافة إلى إمكانية استخدامه في ووردبرس. سيمفوني يُعَدّ سيمفوني symfony أحد إطارات العمل المتكاملة التي توفر العديد من المزايا لمصممي تطبيقات الويب المتكاملة حيث يوفر على المبرمج الوقت والجهد يستخدم سيمفوني تويغ لتوليد قوالب الصفحات. دروبال دروبال Drupal نظام لإدارة المحتوى، ويمكن أن يعمل أيضًا كنظام للتدوين أو كنظام لبناء تطبيقات الويب متكاملة بسبب خصائص عديدة منها المرونة والتصميم الجيد التي يمكن التحكم بها وتطويرها بسهولة. في دروبال تم اعتماد تويغ في تصميم القوالب بدءًا من الإصدار الثامن، لمزيد من المعلومات يمكنك الرجوع إلى هذه الصفحة. بلوت بلوت Bolt هو نظام إدارة محتوى خفيف وقد اعتمد تويغ لتصميم قوالب الصفحات، الفرق بين بلوت و ووردبرس هو أن بلوت لا يستهلك إلا القليل جدا من موارد النظام يمكنك الرجوع إلى هذه الصفحة لمزيد من المعلومات. ووردبرس يعمل ووردبرس على تقديم بيئة سهلة لبناء المدونات ومواقع الويب و يمتاز بغناه بقوالب يمكن من خلالها تعديل مظهره بسهولة ويمكن استخدام تويغ في تصميم وبناء تلك القوالب والتصميمات. تصميم قوالب فرعية في ووردبريس نظرا لشعبية ووردبريس فلقد اخترنا أن ننشئ قالبًا فرعيا في ووردبريس كتطبيق عملي على تويغ ولكن ما هو القالب الفرعي؟ القالب والقالب الفرعي في ووردبريس لنسأل أنفسنا، ما هو القالب في ووردبريس WordPress Theme؟ القالب هو وسيلة لتغيير تخطيط وتصميم موقع الويب الخاص بك، إذ تقوم القوالب بتخصيص مظهر موقعك، بما في ذلك التخطيط والطباعة واللون وعناصر التصميم الأخرى، ويمكن أن يؤدي اختيار المظهر الصحيح إلى جعل موقع الويب الخاص بك أكثر جاذبية وسهولة في الاستخدام وتحسين تفاعل الزوار. في ووردبريس لست مضطرًا لتبدأ من الصفر عند تصميم أي قالب ووردبريس خاص بك، ويمكنك الانطلاق من قالب ووردبرس موجود مع تعديل بعض الصفحات أو الخصائص به بما يناسبك، وهذه التعديلات والإضافات التي تجرى تدخل ضمن ما يسمى بالقالب الفرعي أو الابن WordPress Child Theme. عملية بناء وإنشاء قالب فرعي أي إدخال التعديلات المطلوبة على قالب موجود مسبقًا أسهل بالتأكيد من بناء قالب كامل من لا شيء ويبقى الخيار عائدًا لك أي مرحلة تختار. اتبع الخطوات التالية التي اخترناها لك في هذا المقال لتصميم قالب فرعي خاصة بك: كامل الكود الناتج متوفر للتحميل بشكل مباشر في نهاية المقال من خلال مدير الملفات في خطة الاستضافة الخاصة بك اذهب إلى المجلد الحاوي على ووردبريس ثم انتقل إلى المجلد التالي: /wp-content/themes/ ضمن المجلد السابق أنشئ مجلد فرعيًا وسمه باسم twig-child-theme أو أي اسم تريده بشرط أن لا يحوي مسافات فيه في المجلد السابق أنشئ الملفين التاليين: style.css وfunctions.php أضف أية ملفات أخرى تحتاجها: في مثالنا نحتاج ثلاث ملفات إضافية هي: single.php وsingle.twig وmain-file.twig المحتويات الأساسية لملفات القالب الفرعي: الملف style.css: @charset "UTF-8"; /* Theme Name: Twig Child Theme Template: twentytwentyone Version: 1.0 Text Domain: twig-child-theme */ الملف functions.php: <?php //functions.php add_action( 'wp_enqueue_scripts', 'enqueue_parent_styles' ); function enqueue_parent_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' ); } ووردبريس و تويغ لكي نتمكن من استخدام تويغ مع وردبرس يجب تركيب إضافة تسمى Timber تمكنك هذه الإضافة من الاستفادة من الجمع بين وردبريس وتويغ ويمكننا آنذاك كتابة قوالب ووردبريس بواسطة تويع عند تنصيب Timber. يُعَد Timber نافذة وردبرس باتجاه تويغ، حيث يؤمن طريقةً أسرع وأسهل وأكثر فاعلية لبناء قوالب ووردبريس، إذ يساعدك تيمبر Timber على إنشاء قوالب ووردبريس مخصصة بالكامل بسرعة أكبر مع كود أكثر بساطةً و استخدامًا. يؤدي هذا إلى إنشاء كود نظيف وواضح بحيث يمكن لملف PHP التركيز على توفير البيانات، بينما يمكن لملف تويغ التركيز طريقة عرض البيانات. تنصيب تويغ ضمن ووردبريس بعد إضافة تويغ إلى ووردبريس أمرًا أكثر سهولةً من تنصيب تويغ بطريقة منفصلة، فكل ما عليك فعله الانتقال إلى قسم الإضافات في لوحة تحكم ووردبرس ثم اختيار أضف جديد واختيار Timber عند تنصيب الإضافة Timber فيُنصَّب تويغ تلقائيًا كما تؤمن الإضافة Timber العديد من مزايا ربط تويغ بموقع ووردبريس. يرجى ملاحظة أن timber هي إضافة ووردبريس عادية مثل أي اضافة أخرى يمكن تركيبها مثل أي إضافة أخرى وهي متوفرة عبر الرابط التالي Timber. بعد تنصيب الإضافة السابقة لا نحتاج أي أوامر خاصة ولا نحتاج أية إعدادات فتعمل هذه الإضافة مباشرة عند تنصيبها من مدير الإضافات في ووردبرس. بناء القالب الفرعي أي قالب ووردبرس مستقل يجب أن يحوي على الأقل ملفين أساسيين: ملف style.css ملف index.php أما في القوالب الفرعية، فيمكن الاستغناء عن الملف الثاني حيث يُستخدم الملف index.php الموجود في القالب الأب نفسه. عندما يظهر ووردبريس أي صفحة فإنه يبحث في ملفات القالب عن أنسب ملف لعرض تلك الصفحة وفق مبدأ أولية الملفات، يُعَدّ الملف index.php الخيار الأخير حيث يتم اختياره فقط في حال عدم توفر أي ملف أكثر تحديدا وأكثر ملائمةً للمقال. قد يحتوي قالب ووردبريس على ملف مخصص لعرض الصفحات الثابتة وآخر لعرض المقالات وآخر لعرض الأرشيف مثلا عن الرغبة بعرض مقال ما فإن ووردبرس يبحث عن ملف single.php هو يعني مقال مفرد، اختصار للاسم single-post، فإذا وجده استخدمه لعرض المقال أما عندما لا يجده فإنه يبحث عن ملف singular.php وهو يعني مقال أو صفحة ثابتة فإذا وجد الملف singular.php فإنه يستخدمه، أخيرا في حال لم يجد أي من الملفين السابقين فإن ووردبرس يستخدم الخيار الأخير وهو index.php. لقد اصطلح ووردبريس ذلك التسلسل وتلك الأسماء في بنيته الداخلية ويمكن مراجعة ملفات قوالب ووردبريس عبر الرابط التالي WordPress Post Template Files. يسمى المبدأ السابق مبدأ أولوية الملفات في قوالب ووردبرس وبذات الطريقة يمكن الحديث أن أي صفحة في قالب ووردبرس مثلا عند الرغبة بعرض المقالات الموجودة في دليل ما فإن ووردبريس يبحث عن ملف اسمه category.php، فإن وجده استخدمه لعرض المقالات وإن لم يجده يبحث عن ملف اسمه archive.php فإن وجده استخدمه في عرض المقالات وإن لم يستخدمه فإنه يستخدم الملف index.php. لمعرفة تفاصيل أكثر عن ملفات القالب في ووردبرس يمكن زيارة الرابط التالي Template Files Section. يحوي ووردبرس على متغير عام اسمه posts يحوي جميع المقالات الموجود في الدليل أو الأرشيف الحالي ويمكن استخدامه في حلقات for. لسنا مضطرين لإنشاء ملفًا خاصًا بنا لعرض الأرشيف حيث أن غياب الملف في القالب الفرعي يخبر ووردبرس أن عليه أن يستخدم الملف الأصلي في القالب الأب، والهدف الأساسي من القالب الفرعي الخاص بنا هو تعديل طريقة إظهار المقالات الفرعية في قالب محددة لذا سوف يكون عملنا أساسًا على الملف single.php وعدد محدود من الملفات الأخرى. لا يهدف استخدام تويغ إلى الاستغناء كليًا عن PHP، بل يهدف إلى جعل استخدمها في إعداد البيانات وإعطاء الأوامر لمحرك القالب بإظهار البيانات لذا حتى عند استخدام تويغ لابد كتابة عدد محدود من تعليمات PHP لكي نقوم بإظهار قالب تويغ، مثلا أن اكتب الأسطر التالية في ملف single.php الخاص بالقالب الفرعي: <?php /** * file name: single.php * The Template for displaying all single posts */ $context = Timber::context(); $timber_post = Timber::get_post(); $context['post'] = $timber_post; Timber::render( 'single.twig', $context ); أما ملف تويغ single.twig فسوف يحوي تعليمات تويغ التي نريدها لإظهار القالب، وفي مثال على ذلك، لدينا الآتي: {# single.twig #} <!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="description" content="{{ site.description }}"> <link rel="stylesheet" href="{{ site.theme.link }}/style.css" type="text/css" /> </head> <body> <article> <h1>{{ post.title }}</h1> <img src="{{ post.thumbnail.src }}"> <div class="article-body"> {{post.content}} </div> </article> </body> </html> في السطر الأول تمت كتابة ملاحظة مع اسم الملف وهي لا تظهر عند إخراج صفحة ويب بل هي مجرد ملاحظة لنا. في السطر التالي من القالب: <meta name="description" content="{{ site.description }}"> تم الطلب من محرك القالب أن يخرج قيمة وصف الموقع حيث لدينا متغير اسم site وهذا المتغير يحتوي على عدة معلومات فرعية أو خصائص منها description ومن أجل وصف الموقع قمنا بكتابة {{ site.description }}. في السطر السابع تم استخدام عبارة مشابهة لإخراج المسار الكامل للقالب الذي نعمل به وربط ملف css بالموقع، وقد تم استخدام الشيفرة {{ post.title }} لإظهار عنوان المقال وبطريقة مشابهة تم إظهار صورة المقال ومحتوياته. قد لا يبدو الأمر بسيطًا ولكنه في الواقع أبسط من استخدام PHP لتحقيق ذات الأهداف كما أنه يحقق مرونة أكبر ويؤمن فصل جيد لملف إظهار الصفحة عن كود تهيئة البيانات مما يعطي سرعة أكبر في الإنتاجية ويسمح لنا باستخدام محررات HTML لتنسيق ملف تويغ بالشكل الذي نريده. الأمر لم ينته لقد بدأنا للتو هناك الكثير يمكن عمله والكثير علينا تعلمه قبل إنشاء قالب ووردبريس بواسطة تويغ. الكتل ووراثة القوالب في تويغ أحد الأمور الرائعة في تويغ هي الكتل Blocks وهي تمكننا من تعريف كتلة ما من القالب ثم إعادة استخدامها في أي مكان نريد سواء في ذات القالب أو في أي قالب مشتق من ذلك القالب. لتعريف كتلة ما نقوم باستخدام الصيغة {% %} التي تخبر محرك القالب أن عليه أن يفعل شيئًا ما وفي حالتنا هو تعريف كتلة محددة. تبدأ كل كتلة بعبارة من الشكل {% block name %} حيث نضع اسم الكتلة بعد الكلمة block، وتنتهي كل كتلة بعبارة {% endblock %}، وتخزن التعليمات داخل الكتلة واستدعائها عند الحاجة. تعمل الكتل ووراثة القوالب بشكل متناغم في تويغ فنحن نقوم عادة بتعريف الكتل في القالب الأب ثم نعدل محتويات الكتلة في القوالب المشتقة منه ويفدينا ذلك بشكل كبير في تقسيم الملفات مما يسهل العمل. فمثلا يُستخدم قالب ووردبريس WordPress theme لعرض مجموعة مختلفة من الصفحات والمقالات والأرشيف لكن لها جميعا بنية متشابه مثل ترويسة الموقع وشريط القوائم والشريط الجانبي وغيرها، نقوم بتعريف البنية الأساسية في قالب تويغ رئيسي ثم ننشئ قوالب تويغ مشتقة منه لكل نوع فرعي. لنطبق ذلك، يمكن تقسيم ملف تويغ الذي ذُكِر بالفقرة السابقة إلى قسمين: الأول الملف الرئيسي ويحوي البنية الأساسية للملفات مع وضع تعريف للكتل في مكانها الصحيح: {# main-file.twig #} <!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="description" content="{{ site.description }}"> <link rel="stylesheet" href="{{ site.theme.link }}/style.css" type="text/css" /> </head> <body> {% block content %}{% endblock %} </body> </html> أما الملف الفرعي الثاني فهو يحوي الإشارة إلى الملف الرئيسي مع تعريف محتويات الكتل فيه: {# single.twig #} {% extends "main-file.twig" %} {% block content %} <article> <h1>{{ post.title }}</h1> <img src="{{ post.thumbnail.src }}" alt="{{ post.thumbnail.alt }}" > <div class="article-body">{{ post.content }}</div> </article> {% endblock %} يفيد هذا التقسيم في اختصار الكتابة كثيرًا، حيث أن ملف تويغ الرئيسي يبقى نفسه سواءً كنا نريد عرض مقال أم أرشيف أم صفحة البحث أو غيرها لكن كتلة المحتويات هي التي تتغير ويكون ملف تويغ المخصص لعرض المقال مختلفًا عن المخصص لعرض أرشيف المقالات. بطريقة مشابهة يمكننا أيضا تعديل الملف achive.php أو أي قسم من قالب ووردبريس الفرعي، لاستخدام القالب الفرعي الذي صممناه ننتقل إلى لوحة تحكم موقع ووردبرس ثم ننتقل إلى قسم المظهر ونختار علامة التبويب قوالب، وإن كنت قد اتبعت الخطوات أعلاه ستجد اسم القالب الفرعي Twig Child Theme في قائمة القوالب المتوفرة لديك ويمكنك النقر على تفعيل القالب أو اختيار معانية له. بهذه الطريقة نكون قد صممنا قالبًا فرعيًا لـ ووردبريس باستخدام تويغ لكن الأمر لم ينتهي هنا بل هذه مجرد بداية يمكنك الانطلاق منها نحو تصميم مميز وفريد وبجودة عالية محققًا لمتطلباتك الخاصة. لمزيد من المعلومات عن الكتل والوراثة في تويغ يمكن زيارة قسم وراثة القوالب في Twig في موسوعة حسوب. الخلاصة لقد تحدثنا في هذا المقال عن تطبيقات شهيرة تستخدم تويغ ثم تحدثنا عن استخدام تويغ مع ووردبرس من خلال الإضافة timber، ثم بدأنا بالتطبيق العملي لتصميم قالب فرعي في ووردبريس باستخدام تويغ كنوع من التطبيق العملي على ما تعلمناه. في المقال القادم سوف نلقي نظرةً على بنية تويغ وطريقة تخصيص بيئة العمل الخاصة به. twig-child-theme-main.zip
    1 نقطة
  5. كتابة دالة لاستخراج كل أرقام وطنية من النص ملاحظة / ارقام وطنية تبدا ب 056 ومكونة من 10 أرقام بداية الحل هيك يعني باستخدام الدالة import re text = input() كيف أجيب الكود ع برنامج الباي تشارم بلغة البايثون بحيث لما أضغط ع Run أدخل النص التالي Hello my Jawwal number is 0560000001 ليصبح الناتج ["0560000001"] المطلوب الكود نفسو ( فاهمة السؤال بس كل ما بكتب كود بطلع فيه خطأ)
    1 نقطة
  6. بما أن الرقم الوطني له خصائصص يمكننا بناء التعبير المنتظم وفقها مثلا: مثال للبحث عن نص ثابت و محدد: expr = '056' ثم وضعها هكذا: import re text = 'Hello my Jawwal number is 056' expr = '056' match = re.findall(expr, text) print(match) # => ['056'] الآن حاولي تعديل الشيفرة، حيث سنعمل على جعل القسم الآخر من الرقم الوطني عبارة عن أرقام بعدد محدد: [0-9]* # عدد لانهائي من الأرقام وممكن 0 [0-9]+ # عدد لانهائي من الأرقام ولكن على الأقل رقم واحد [0-9]X # X عدد لانهائي من الأرقام وعددهم [0-9]2 [0-9]7 [0-9]X... حاولي دمج القسم الثابت و يتبعه القسم المتغير والمحاولة. علما أن: [0-9] # ستعطي رقم واحد ضمن المجال
    1 نقطة
  7. لنجعل كلاس يرث من كلاس اخر سوف نمرر الكلاس الاب كمعامل عند انشاء الكلاس الابن, لنشرح ذلك بمثال عملي, سوف نقوم بانشاء الكلاس الأب والذي اسمه person class Person: def __init__(self, Fname, Lname): self.FirstName=Fname self.Lastname= Lname def getName(self): print(self.FirstName, self.Lastname) الآن سوف ننشيء كلاس الابن والذي اسمه student class Student(Person): pass كما تلاحظي قمت بتمرير الكلاس الأب person كمعامل عند انشاء الكلاس الابن نستخدم الكلمة pass عندما لا نريد إضافة أي خصائص أو دوال أخرى إلى الكلاس الابن الآن لنحاول انشاء كائن من الكلاس الابن ونستخدم دالة getName التي أنشأناها في الكلاس الأب person x = Student("Ali", "Sami") x.getName() سوف تكون النتيجة كالتالي Ali Sami
    1 نقطة
  8. لقد قمت بالتعديل على ملف واحد من ملفات التهجير users_table ثم قمت باستخدام أمر التهجير التالي: php artisan migrate:fresh --seed ولكن لاحظت أن هذا الأمر قد أعاد إنشاء جميع ملفات التهجير من جديد وقام بحذف المحتوى. هل يوجد طريقة معيّنة لتنفيذ التهجير على ملفات محددة؟
    1 نقطة
  9. لدي سؤال حول المعامل is والذي يستخدم للتأكد من قيمة ونوع قيمتين حيث أن المقارنة بين متغيرين لهما نفس القيمة الرقمية (أقل من أو يساوي 256) يعطي True بينما المفارنة بين قيمتين أكبر من 256 يعطي False كالتالي: x = 5 y = 5 print(x is y) # Output: True x = 300 y = 300 print(x is y) # Output: False أنا أستخدم بايثون 3.8 ، لا أعلم سبب هذه المشكلة لكنها قد تسبب أخطاء غير متوقعة في تنفيذ البرامج لدي، وكيف أقوم بالمقارنة بين قيمتين من نفس النوع إن لم أستخدم المعامل is؟
    1 نقطة
  10. لدي مشكلة في صنف Class في بايثون، الصنف بسيط للغاية، وهو كالتالي: class MyClass: lst = [] student = MyClass() teacher = MyClass() student.lst.append(1) student.lst.append(2) teacher.lst.append(3) teacher.lst.append(4) print(student.lst) # Output: [1, 2, 3, 4] print(teacher.lst) # Output: [1, 2, 3, 4] لماذا يتم طباعة نفس النتيجة؟ أو بالأحرى لماذا يحتوي المتغير lst على جميع القيم [1, 2, 3, 4]؟ أليس من المفترض أن يحتوي على رقمين فقط [1, 2] في الكائن student و [3, 4] في الكائن teacher؟
    1 نقطة
  11. إن السبب في استخدام self لأن لغة بايثون لا تستخدم الترميز @ للدلالة على الغرض المنشأ، ولكن لدينا توابع التي تمرر بدورها هذا الغرض بشكل أوتوماتيكي ولكن لا يتم استقباله بشكل اوتوماتيكي فلذلك يجب علينا ذكر self بشكل صريح. ويعود استخدامها للدلالة على غرض من هذا الصف ولإتاحة إمكانية الوصول إلى بيانات وتوابع هذا الصف فتقوم بربط المتغيّرات مع القيم المعطاة. مثال بسيط عن تمرير القيم واستخدام الباني مع self: class library(): def __init__(self, book, author): self.book = book self.author = author def show(self): print("book is", self.book) print("author is", self.author ) anyLibrary = library("book1", "John") anotherLibrary = library("book2", "Smith") anyLibrary.show() anotherLibrary.show()
    1 نقطة
  12. اهلا بك اختي افهم من كلامك انا حاليا مجبور حتى لو كنت املك خمسة اسطر مثلا لحفظ القيم اني مجبور اتحقق واحد واحد منهم بطريقة التاليه : if(LANG != null){ await _sharedPreferences.setInt(LANG, lang); return true; } else if ..... } else if ..... } else if ..... الا يمكن اختصار هذا الطريقة ؟ قمت بتجربة كالتالي ولكن لم تنجح : if(_sharedPreferences != null){ await _sharedPreferences.setInt(LANG, lang); return true; }
    1 نقطة
  13. تمام شكرا بس لو بدي أعمل طباعة لعناصر الlist باستخدام دالة show() ؟
    1 نقطة
  14. يمكنك أن تقوم بعمل قائمة فارغة من خلال دالة list كالتالي: x = list() # أو هكذا x = [] ويمكنك أن تقوم بإضافة عناصر جديدة فيها من خلال دالة append كالتالي: x.append("Hello, World!") x.append("Hsoub") print(x) # Output: ["Hello, World!", "Hsoub"] ويمكنك الإطلاع على معلومات أكثر حول القوائم في بايثون من خلال موسوعة حسوب من هنا
    1 نقطة
  15. يمكنك أن تستعمل خدمة Firebase المقدمة من جوجل حيث تسمح لك بعمل كل عمليات CRUD مجانًا ولن تحتاج لتعلم كيفية عمل Backend بلغة برمجة معينة مثل PHP أو Python أو غيرها. من مميزات منصة Firebase توفر Firebase قاعدة بيانات مجانية. تزامن فوري بين برنامجك وقاعدة البيانات. أقل جهد ممكن من المبرمج للحصول على تزامن. توثيق سهل لـ Firebase API نظام تسجيل دخول بطرق كثيرة (فيسبوك، تويتر، ايميل ورقم سري، الخ) API يعمل على أنظمة تشغيل ومنصات مختلفة (Android(Java), iOS(C#), Web(Javascript إحصائيات لتفاعل المستخدمين خلال ساعات اليوم. وإن أردت التدرب فقط على عمل تطبيق CRUD وتحتاج إلى API جاهز للتجربة فيمكنك أن تستعمل موقع jsonplaceholder حيث يقدم لك API جاهز يحتوي على العديد من المسارات Routes الجاهزة للإستخدام مجانًا.
    1 نقطة
  16. 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 نقطة
  17. public void getMusicFomDivice() { Cursor cursor; Uri allsongUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; String[] STAR = {"*"}; Log.d("TAG", "listAllSong: " + allsongUri.toString()); if (isSdPresent()) { cursor = getApplication().getApplicationContext().getContentResolver().query(allsongUri, null, selection, null, null); if (cursor != null) { if (cursor.moveToFirst()) { Log.d("TAG", "true: "); do { Log.d("TAG", "true: "); String songName = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); int songId = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID)); String albumname = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); // String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.RELATIVE_PATH)); Log.d("TAG", "true: " + songName); Long albumId = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID)); Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart"); Uri albumArtUri = ContentUris.withAppendedId(sArtworkUri, albumId); try { mediaPlayer.addTimedTextSource(getApplication(), allsongUri, ".mp3"); } catch (IOException e) { Log.d("TAG", "getMusicFomDivice: " + e.getMessage()); e.printStackTrace(); } if (!cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)).equals("WhatsApp Audio") && !cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)).equals("call_rec") && !cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)).equals("Voice Messages")) { Log.d("TAG", "getMusicFomDivice: " + songName); // هنا تتم إضافت كل المسيقى الدي في الجهاز إلى arraylist music.add(new Music(String.valueOf(songId), albumname, songName, albumArtUri)); Log.d("TAG", "getMusicFomDivice: " + music.size()); } } while (cursor.moveToNext()); } cursor.close(); } } } هذا سيساعدك بتأكيد وأي مساعده سأكون متواجد ان شاء الله
    1 نقطة
  18. السلام عليكم في البداية يجب عليك ان ان تطلب من المستخدم ان يدخل تاريخ الميلاد ثم تقوم بطرح التاريخ السنة الدخل من السنة الحالية الناتج بيطلع معاك عمر الشخص بسنين تريد حسب العمر بلأشهر ثم تضرب الناتج ب 12 الناتتج سيكون العمر بلأاشهر تريد حسب العمر الاسبيع تضرب الناتج ب 4 الناتتج سيكون العمر بلأسبيع تريد حسب العمر بالايام ثم تضرب الناتج ب 7 الناتتج سيكون العمر بالايام هل تريد تفاصيل برمجية
    1 نقطة
  19. تمام الموضوع ما زال متعلق بال NULL ارجو القيام بفحص قيمة lang قبل ارسالها الى الدالة sharedPreferences.setInt فتمرير قيمة NULL الى اي دالة قد يؤدي الى نفس المشكلة في حال لم تقم بتعريف قيمة مبدأية لها init value هنا: Future<bool> commit() async { _sharedPreferences ??= await SharedPreferences.getInstance(); // عليك فحص اي قيمة يتم ارسالها الى أي دالة بالنسخة الجديدة حتى يتم اعتبار ان البرنامج لن يحتوي اي قيمة // null await _sharedPreferences.setInt(LANG, lang); }
    1 نقطة
  20. اهلا بك اختي الكريمة قمت بتطبيق ما تم ذكره من قبلك ولكن مع الاسف المشكله مستمره لا اعلم حقيقه لماذا تحدث ولكن انا استطيع تخزين قيم من نوع سترينج بدون حدوث مثل هذا المشكله ايضا لما قمت تطبيق ل migration يقوم بعمل تحليل للبيانات من خلاله تظهر مجموع الاخطاء المتواجده في التطبيق حتى التي لا تشكل مشكلة في عمل التطبيق
    1 نقطة
  21. نعم الشيرد بريفيرنسز ان لم يكن هناك اي شيئ مخزن بالذاكرة سيكون قيمتها null و انت تستخدم flutter 2 اي نسخة null safty مما يعني انك يجب ان تضمن عدم وجود اي قيمة داخل برنامجك يحتوي قيمة null لتفادي هذه الأخطاء يوجد أداه لتقوم بإصلاح أصدار برنامجك قبل النسحة الجديدة , و ذلك بعمل تحديث لجميع المكتبات لضمان انها ستحتوي على هذه الخاصية يمكنك ان تقوم بعمل dart pub outdated --mode=null-safety dart pub upgrade --null-safety flutter pub get flutter analyze dart migrate و عندما تقوم بعمل ال migration ينبغي ان يقوم بتحديث جميع المكتبات يحيث أن القيمة الراجعه لاي شئ لن يحتوي على null ممكن Zero او مصفوفة فارغة
    1 نقطة
  22. 1 نقطة
×
×
  • أضف...