لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/26/21 في كل الموقع
-
ماذا يمثل الرقم 3306 Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/company","root","password");2 نقاط
-
الدالة add_action تستخدم لإضافة إجراء معين لحدث ما ، و الصيغة العامة لهذه الدالة هي add_action( $hook, $function_to_add, $priority, $accepted_args ); حيث: hook$ : هو الحدث الذي تريد أن تربط به الدالة الخاصة بك، أي الحدث التي تريد أن تنفذ دالتك عند حدوثه. function_to_add$ : اسم الدالة (الإجراء) التي تريد إضافتها للحدث أعلاه. أي التي ستنفذ عند حصول الحدث hook$ . priority$ : هذه هي أولوية تنفيذ الدالة عند هذا الحدث، بمعنى أنه إذا كان هنالك أكثر من دالة تم إضافتها باستخدام الدالة add_action إلى نفس الحدث فإن قيمة هذا المعامل ستحدد أي الدوال ستنفذ أولا وأيها ثانيا وهكذا. قيمة هذا المعامل يجب أن تكون من النوع int ، وقيمته الافتراضية 10 والحدث ذو القيمة الأقل سينفذ أولا ، بمعنى أن الدالة التي لديها قيمة 5 ستنفذ قبل الدالة التي لديها 20 وهكذا. accepted_args$ : عدد المعاملات التي تقبلها الدالة المطلوب تنفيذها function_to_add$. ومن الأمثلة على هذا , حيث يمكنك لإرسال بريد إلكتروني إلى بعض الأصدقاء كلما تم نشر إدخال في مدونتك: function wpdocs_email_friends( $post_id ) { $friends = 'bob@example.org, susie@example.org'; wp_mail( $friends, "Hsoub", 'هنا النص' ); return $post_id; } add_action( 'publish_post', 'wpdocs_email_friends' ); الدالة do_action ، يستخدم ووردبريس الدالة do_action لتحديد المكان الذي سينفذ فيه الإجراء، وبالتالي في هذا المكان الذي تتواجد فيه الدالة يقوم بتنفيذ كل الدوال التي تم إضافتها لهذا الحدث المعين، وتأخذ الصيغة العامة do_action( $tag, $arg ); حيث: tag$ : اسم الإجراء الذي تود تنفيذه. وكما أسلفنا فإن هذه الدالة عند مناداتها ستنفذ كل الدوال التي تم إضافتها لهذا الحدث tag$. arg$ : المعامل الذي يتم تمريره للدوال المرتبطة بالحدث tag$. الدالة add_filter ، تستخدم دالة add_filter لإضافة مرشح جديد لأحد المتغيرات وتأخذ الصيغة العامة: add_filter( $tag, $function_to_add, $priority, $accepted_args ); ومن الأمثلة على add_filter هو التحكم بطول النص المقتطف للتدوينة مثل if( ! function_exists( 'prefix_custom_excerpt_length' ) ) { function prefix_custom_excerpt_length( $length ) { return 40; } } add_filter( 'excerpt_length', 'prefix_custom_excerpt_length', 999 ); يمكنك مراجعة الدرس التالي على أكاديمية حسوب2 نقاط
-
بالنسبة للسطر الأول , سوف يتم طباعة SN Item Name كما هي ثم سوف يتم طباعة مسافة 20 مرة , لاحظي الكود التالي print(" "*20) معنى السطر السابق أن يتم طباعة مسافة ضرب 20 , أي سوف يتم طباعة المسافة 20 مرة , بالنسبة ل Price سوف يتم طباعتها كما هي ثم سوف يتم طباعة مسافة 6 مرات وهكذا الى نهاية السطر الأول بالنسبة للسطر الثاني ,يتم تنفيذ خلاله أكثر من جملة, الكود المرفق ليس كاملا ولكن من الواح انه لديك مصفوفة اسمها item وتحتوي على عناصر , يبدأ تعداد العناصر في المصفوفات من العدد 0 , أي للوصول للعنصر الأول في المصفوفات يكون بالشكل التالي array_name[0] بتعويض array_name باسم المصفوفة التي لديك يصبح item[0] , ثم هناك المعامل end والذي نحدد ما نريد طباعته في نهاية الجملة , هذا المعامل اختياري والوضع الافتراضي له هو 'n/' اي يطبع سطر جديد , ولكن هنا لا نريد طباعة سطر جديد لذلك استخدمناه ووضعنا قيمة مسافة لكي لا ينزل سطر جديد , ثم سوف نطبع العنصر الثاني في المصفوفة والذي رقمه 1 , ثم سوف نقوم باستخدام الدالة ljust والتي تقوم بمحاذاة النص من جهة اليسار , نستخدم المسافة التي نريدها لمحاذاة النص , وهكذا بالنسبة لباقي جمل الطباعة , في الجمل الثلاثة الأخيرة نستخدم الدالة rjust وهي مشابهة للدالة ljust ولكن من جهة اليمين , يمكنك ملاحظة شكل النتيجة لتفهمين وظيفتهما أكثر , ويمكنك تجربة الكود وتغيير القيم لتفهمي بشكل أوضح2 نقاط
-
الأقواس الدائرية تمثل مجموعة محارف () النقطة تمثل ظهور أي محرف (رقم أو حرف) \ تمثل محرف هروب escape أي أن الرمز الذي سيأتي بعده سيتم أخذه كما هو بدون معناه ضمن السياق مثل + * ؟ في حال وجود \ أماها ستعامل كمحارف الأقواس المجعدة {min,max} تحدد مجال لتكرار النمط الذي يسبقها 1\ يدعى backreference سيقوم بربط التعبير الذي قبله بالذي بعده مما يضمن تكرار الجزء الأول محد أدنى 3 مرات في مثالك أعتقد أن الحل السليم سيكون بهذه الطريقة re.search("(.)\1{4,}",password) re.search سيبحث عن النمط إن كان مكررا في كلمة السر أم لا، هنا نريد التحقق من 4 أيضاً إن أعاد البحث True هذا يعني أن هنالك تكرار2 نقاط
-
لاحظ في حال أدخل المستخدم الرقم 1 بعد ظهور القائمة أي convert to bytes سيتم تنفيذ show Bytes وهذه الدالة نمرر لها قيمة megabyte حيث تقوم بضربها ل 1024*1024 وتطبعها من أين نحصل على دخل المستخدم؟ أي قيمة megabyte .. في حال قام المستخدم بإدخال قيمة تختلف عن 5 سيتم تنفيذ elif num < 5 وفيها تتم قراءة الحجم بوحدة ميغابايت2 نقاط
-
هذا البرنامج خاص للتحويل بين وحدات التخزين (حجم البيانات) المختلفة المستعملة في عالم البرمجة. يعرض البرنامج قائمة من 5 اختيارت، حيث يتوقف عند إدخال رقم 5, اما لباقي الخيارات يقبل إدخال حجم مقدراً بواحدة ميغابايت ثم حسب الاختيار المدخل، نمرر القيمة إلى دالة موافقة. كل دالة تستقبل متغير megabyte يحمل القيمة التي أدخلها المستخدم عند تنفيذ البرنامج. تعريفات، البايت byte هو أصغر وحدة تخزين ويمكن أن تحفظ محرف واحد (رقم او حرف او رمز) مثل ماهو موجود على لوحة المفاتيح keyboard. الواحدات الأكبر هي كيلو بايت و تساوي 1024 بايت، ثم ميغابايت و تساوي 1024 كيلو بايت أي 1024*1024 بايت ثم غيغا بايت و تساوي 1024 ميغا بايت وهكذا.. كل واحدة تساوي 1024 مرة من الواحدة الأصغر، أي نضرب ب 1024 عند التحويل من واحدة كبيرة إلى الأصغر. و في العملية المعاكسة (من واحدة صغيرة لواحدة أكبر) نقسم على 1024..2 نقاط
-
كلا هي مكتبة موجودة و بتضمين الملف الخاص بها في صفحتك يمكنك استخدامها مباشرة، الموضوع أن بوتستراب في آخر نسخة رقم 5 لم يعتمد عليها بسبب مشاكل حجم الملفات و الأداء و قرروا كتابة الشيفرات باستخدام جافاسكربت مباشرة2 نقاط
-
جافاسكربت هي لغة البرمجة الأساسية هنا، أما جيكويري هي مكتبة برمجية خاصة بالتعامل مع صفحات الويب ضمن المتصفح HTML-CSS مبنية بشكل كامل على جافاسكربت. لايمكنك استخدام جيكويري قبل تعلم أساسيات جافاسكربت. جيكويري موجودة لكي تسهل البرمجة لمطوري الواجهات الأمامية ولكنها لا تستبدل لغة جافاسكربت. مسار الدورة يعلم أساسيات جافاسكربت ثم جيكويري و تطبيقات عليهم. يمكن تحقيق نفس الهدف البرمجي إما بكتابة شيفرة جافاسكربت أو بمساعدة جيكويري والتي تكون عدد أقل من الأسطر وأسهل وأبسط. والإدارة تعمل على إضافة تحديثات بشكل مستمر وتواكب إصدارات المكتبات. يوجد مقالات من أكاديمية حسوب وتوثيق موسوعة حسوب يمكنك الاطلاع عليهم: موسوعة حسوب / جيكويري موسوعة حسوب / جافاسكربت مقالات أكاديمية حسوب / جيكويري مقالات أكاديمية حسوب / جافاسكربت2 نقاط
-
الإصدار 1.0.0
14782 تنزيل
أصبحت الترجمة عملًا رائجًا جدًا في هذه الأيام، فأي شاب أو فتاة في مرحلة الدراسة ربَّما يبحث أو تبحث عن وظائف حُرّة في الترجمة ظنًا منهم بأنها وظيفة سائغة لكلّ من أتقنَ لغة أجنبية (أو أكثر)، وربّما تكون الترجمة سهلة إذا كان كلّ ما يلزمها هو إتقان لغة أجنبية، لكن هذا الإتقان لا قيمة له إن لم يجتمع مع إتقان اللغة الأم (وهي العربيَّة هنا) ومع اطلاع متعمِّق على نظرية الترجمة وما اتصل بها من علوم اللغة والأدب، وبدونهما تأتي الترجمة ضعيفةً مثل بناءٍ متهالكٍ بناهُ مهندسٌ مبتدئٌ أو لوحة رسمتها يد تنقصها الخبرة. يُقدِّم هذا الكتاب دليلًا للمترجمين الجدد وأصحاب الخبرة المتوسطة ويساعدهم في استيعاب واكتساب بعض من مهارات الترجمة التي ترتقي بعملهم من "ترجمة المعنى" إلى "تعريبه" وتكييفه مع سياقه الثقافي واللغوي الصحيح، وهو موضوعٌ لم تُكرَّس له كتبٌ كثيرة في المكتبة العربية، فالكتاب مُوجَّه إلى المترجمين المبتدئين الراغبين بتعلّم الترجمة الكتابية من اللغة الإنكليزية إلى العربية، وهو لا يُعنى بالترجمة الشفهية ولا يتطرَّقُ إلى لغاتٍ غيرِ هاتين إلا في أمثلة عارضة، ولا يتطرق إلى الترجمة بالاتجاه العكسي (من العربية إلى الإنكليزية) لأن لها شروطًا وضرورات أخرى تحتاج شرحًا منفصلًا. يساعدُ الكتاب غير المختصّين على خوض غمار الترجمة نظريًا وأكاديميًا والتعرف إلى أهم المدارس الفكرية فيها، وإلى خصوصيات تطبيق هذه المناهج في سياق الترجمة من اللغة الإنكليزية إلى العربية (وهي خصوصيات تختلفُ بين كُلِّ لغتين من اللغات). وتبدأُ هذه الرحلة من سؤالٍ بسيطٍ وشيّق: فهل نقل أو "ترجمة" المعنى بين لغات الإنسان ممكنٌ أصلًا؟ وبذلك يبدأُ الكتاب بمدخلٍ إلى ظاهرة الترجمة وأساسياتها ثُمَّ يتناول مدارسها ومناهجها الكثيرة، وينتقلُ بعد ذلك إلى طُرُق التعريب وتعقيداته الشائكة في ترجمة المفردات والتراكيب والجملة وفي النهج والأسلوب، فيتطرَّقُ لأساسيات الكتابة العربية السليمة وضرورتها بالنسبة للمترجم. يُنصح بهذا الكتاب للمترجمين أصحاب الخبرة القليلة الراغبين بتطوير مهاراتهم وبناء خلفية منهجيَّة وأكاديميَّة في مجال الترجمة، على أنه لا يخلو من صعوبة للمستجدِّين في الترجمة بسببِ طرحهِ للكثير من المفاهيم والمشكلات اللغوية التي تحتاجُ إلى خبرة وتجربة تطبيقية لاستيعابها على أنه يمكن للمترجم المبتدئ قراءة الكتاب ثم الرجوع إليه كلما ازدادت خبرته إذ يمكن أن تعد هذا الكتاب مرجعًا تضعه بين متناول يديك، الهدف من الكتاب هو تأهيل المترجم الشغوف ليصبحَ خبيرًا مقتدرًا على أداء عمله وعلى خدمة لغته وثقافته، فالترجمة ليست منجم ذهبٍ وليست دائمًا مهنة مال، على أنها قوة جوهرية في التغيير والتقدُّم والنهضة، لذا أتمنَّى أن يضع بين يدَيْ المترجم العربي وسيلةً يهتدي بها إلى أصول الترجمة السليمة، وأن يساهم -ولو قليلًا- في نهوض الترجمة العربية لغةً ونوعًا لا كمًا وعددًا. وما يجعل هذا الكتاب جديدًا في المكتبة العربية أمران: الأول أنه كتاب أكاديميّ يُقدّم للقارئ منهجًا وأصولًا علميَّة متّبعة عالميًا، والثاني أنه يلاقحُ ما بينَ هذا المنهج العالمي وبينَ خصوصيَّات وسياق الترجمة العربية في زمننا وما يواجه المترجم فيها من عقبات وتحديات حاضرة. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات مجموعة ضمن وسم «الترجم والتعريب» وتجد روابطها تاليًا: الفصل الأول: اللغة ومفهوم الترجمة بين اللغات النسبية اللغوية والترجمة: هل تؤثر اللغة على أفكارنا؟ فن الترجمة وأنواعها وأساليب الترجمة الحديثة كتب تزن ذهبا: تراث العرب والترجمة بين الحرفية والتصرف: تاريخ موجز لنظرية الترجمة آفات الترجمة على اللغة من لسان العرب إلى أكسفورد: المعاجم والقواميس وأهميتها في الترجمة تعريب المفردة والمصطلح تعريب تراكيب اللغة تعريب الجملة وأقلمتها تعريب الثقافة: مسائل لغوية في الترجمة العمل في الترجمة1 نقطة -
ما هي أهمية استخدام الكلاس Vector بالمقارنة مع المصفوفات العادية ؟؟1 نقطة
-
هل يمكننا رسم ال Confidence Interval وتحديد معامل الثقة من خلال Seaborn؟ وكيف يمكن ذلك ؟ وعلى فرض كان لدي البيانات التالية: x = np.random.randint(0, 30, 100) y = x+np.random.normal(0, 1, 100)1 نقطة
-
عند حدوث خطأ في تنفيذ كود برمجي ما الفرق بين الكلمات التالية وكيف يمكنني فهم الخطأ من خلالهم Checked Exception Unchecked Exception Error1 نقطة
-
لدي الكود التالي الضي يمثل رسم بياني خطي: import seaborn as sns import matplotlib.pyplot as plt import pandas as pd import numpy as np sns.set(style="darkgrid") data = pd.DataFrame({'a': np.random.rand(8), 'b': np.random.rand(8)}) sns.lineplot(data=data) والشكل الناتج: الآن أريد معرفة كيف يمكننا التحكم بعدد العلامات ticks، وأيضاً كيفية وضع labels محددة مكانها؟1 نقطة
-
عند إرسال بيانات إلى جهاز حاسب عبر الشبكة يتم إرساله عبر عنوان الشبكة ip address, ومن ثم عند الوصول إلى الشبكة المحددة يتم البحث عن الحاسب عبر العنوان المادي physical address أو mac address ومن ثم يتم إرسال البيانات له السؤال هنا, كيف يتم تحديد أي برنامج سوف يستقبل تلك المعلومات؟ حيث أن لدينا مئات البرامج والخدمات التي تعمل على الحاسوب في نفس ذات الوقت فكيف نستطيع تحديد أي واحد منهم يقوم بإستقبال تلك المعلومات؟ الإجابة هي المنفذ Port حيث أن عنوان الشبكة يستخدم لتحديد أي شبكة تسمع الطلب, والعنوان المادي لتحديد أي جهاز داخل الشبكة يستمع إلى الطلب, بينما المنفذ لتحديد أي برنامج داخل الجهاز يستمع إلى الطلب, فإذًا في حالتنا تلك لن تقوم الmysql بالإستماع إلى أية طلبات إلا االطلبات التي يتم إرسالها إلى المنفذ 33061 نقطة
-
عندما نقوم باستخدام Catching Exception لحماية الكود من أي خطأ try{ System.out.println( "s.charAt(28): " + s.charAt(28) ); // s a = Integer.parseInt(s); } catch( StringIndexOutOfBoundsException e1 ) { System.out.println( "Index is not exist in the string!" ) } }finally System.out.println( "finally codes always execute" ); }1 نقطة
-
يستخدم المبرمجون الكتلة البرمجية ضمن finally عندما يريدون تنفيذ شيفرة برمجية بعد نهاية قسم try catch بغض النظر عما حصل في البرنامج من استثناء أو لم يحصل شيء.. مثلا نقوم بإغلاق اتصال SQL فيها أو إغلاق قنوات الاتصال مع الملفات .. finally { try { if (fis != null) fis.close(); } catch (IOException ex) { ex.printStackTrace(); } } حتي يمكن وضع استثناءات ضمن FINALLY أو نقوم بعمل تنظيف clean up مثل حذف الأغراض البرمجية وماشابه1 نقطة
-
يتم التخاطب بين برامج الحاسوب التي تعمل على الشبكة عن طريق المنافذ ports لتقوم بتباديل البيانات حيث أن المنفذ الافتراضي لقواعد بيانات MySQL هو 3306 يمكن معرفة المنفذ المستعمل لديك إما بتصفح بيانات إعداد MySQL أي الملف my.ini الخاص بالتهيئة ويكون المنفذ مكتوباً ضمنه default_authentication_plugin=mysql_native_password port =3306 [client] port =3306 socket = /tmp/mysql.sock [mysqld] default_authentication_plugin=mysql_native_password port =3306 أو تنفيذ استعلام بسيط كالتالي: show variables where variable_name in ('hostname','port'); ويمكن من مدير الأوامر cmd أو terminal تسجيل الدخول mysql -u root ثم نكتب الأمر mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';1 نقطة
-
1 نقطة
-
مرحبًا أحمد برجاء في المرة القادم كتابة الأسئلة باللغة العربية حتى يسهل فهمها ويسهل الإجابة عليها ويستفاد باقي الزوار من تلك الإجابات بالنسبة لسؤالك فإن الhooks هي في حد ذاتها دوال functions ولكنا دوال من نوع خاص ما هو الخاص فيها؟ الخطافات (hooks) بشكل أساسي يتم إستخدامها من أجل التعامل مع دورة حياة الوِحدة(component) سواء من حيث تغيير الحالة الخاصة بها أو تنفيذ فعل معين عند تغيير الحالة الخاصة بها ويتم تصميمها بحيث لا تعمل إلا في الfunctional react components لذا يمكننا القول أن أي خطاف دالة وليست كل دالة خطاف على سبيل المثال في الشكل التالي شفرة برمجية لcustom hook للتعامل مع النماذج const useForm = (initialState = {}) => { const [formData, setFormData] = React.useState(initialState); const handleInputChange = (e) => { setFormData({ ...formData, [e.target.name]: e.target.value }) } return { formData, handleInputChange }; } يتم إستخدامها بالشكل التالي function Form() { const [formData, setFormData] = React.useState({ username: "", password: "", }); const { username, password } = formData; const handleInputChange = (e) => { setFormData({ ...form, [e.target.name]: e.target.value }); }; const handleSubmit = (e) => { e.preventDefault(); console.dir(formData); } return ( <form onSubmit={handleSubmit}> <input type="text" name="username" value={username} onChange={handleInputChange} /> <input type="password" name="password" value={password} onChange={handleInputChange} /> <button type="submit">Submit</button> </form> كما تلاحظ هنا نحن إستخدمنا خطاف بسيط مثل الuseState وأضفنا إليه شفرتنا الخاصة حتى نصل إلى خطاف جديد يقوم بتخزين بيانات النموذج دون الحاجة إلى التعامل معها يدويًا من خلال النموذج نفسه1 نقطة
-
ما فائدة PreparedStatement PreparedStatement pstmt = con.prepareStatement("SELECT * FROM employee WHERE id = ?"); Statement pstmt = con.Statement();1 نقطة
-
إن Statement هي عبارة SQL التي سوف تنفذ فعليا في قاعدة البيانات، أما PreparedStatement هي عبارة عن الشكل العام للاستعلام بدون الوسطاء/القيم الممررة ضمن الاستعلام حيث تمرر القيم لاحقا بعد التأكد من خلوها من الأكواد البرمجية الخبيثة أي نتجنب حشر أكواد SQL ضمن الاستعلام فنحمي بذلك قاعدة البيانات. تلك المشكلة تدعى SQL injection أي حقن تعليمات SQL مع البيانات المدخلة للاستعلام تسبب في مشاكل مثل التعديلات ع البيانات أو تسريبها أو حذفها أو إعطاء صلاحيات للمستخدمين بدون تخويل (مثل في حالة أن جدول المستخدمين فيه صلاحيات لهم، فعند عمل تعديل بالدور لأحد الحقول يمكن أن يصبح مستخدم ما له صلاحيات مسؤول) كيف نمنع الحقن، يتم التخلص من بعض المحارف مثل ' بوضع محرف الهروب قبلها \ فتصبح تعامل مثل نص عادي ترسل PreparedStatement لقاعدة البيانات ليتم التهيئة لهذا الاستعلام أي عمل pre compile PreparedStatement تحجز موارد الذاكرة بشكل أكبر بقليل حتى تستقبل المدخلات وينتهي التنفيذ ما الذي يمكن أن يكتب المهاجم في المثال المرفق لديك؟ لاحظي SELECT * FROM employee WHERE id = ? ? => 123 or 1 = 1 ^^^ أي رقم في حال تم تمرير أي رقم ليتم الشرط عشوائي ثم تمرير شرط محقق دوماً سيعيد الاستعلام جميع معلومات المستخدمين حيث 1 = 1 محقق دوماً1 نقطة
-
1 نقطة
-
لدي تطبيق مبني بإستخدام React (عبر الأداة create-react-app) وقمت بتنفيذ الأمر npm run build لكي أحصل على ملفات المشروع النهائي، وأصبح لدي الملفات التالية: - build |- static | |- css | | |- style.css | | |- style.css.map | |- js | |- main.js | |- main.js.map |- index.html |- service-worker.js حاول أن أقوم بإضافة كل هذه الملفات في المجلد static الخاص بفلاسك لكي يمكن الوصول إليهم بدون كتابة مسارات routes مخصصة لهم، ثم قمت بعمل مسار لإرسال ملف index.html: @static.route('/') def serve_static_index(): return send_from_directory('../client/build/', 'index.html') لكن المشكلة الآن هو أن الموقع يعمل فقط إذا قام المستخدم بالدخول إلى الصفحة الرئيسية فقط، ولكن عند زيارة أي مسار مختلف (حتى وإن كان المسار موجود في تطبيق React عبر react-router-dom) فسوف يحصل على خطأ بعدم وجود هذا المسار. كيفية إرسال هذه الملفات عندما يزور المستخدم أي مسار في التطبيق؟1 نقطة
-
أحاول أن أقوم بفصل النماذج models في تطبيق فلاسك Flask، لذلك قمت بنقلهم إلى ملفات مختلفة على النحو التالي: الملف الأول الذي يحتوي على كائن SQLAlchemy: # ./shared/db.py from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() ثم أقوم بإستدعاء الملف السابق في app.py: from flask import Flask from flask_sqlalchemy import SQLAlchemy from shared.db import db app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'My connection string is here' db.init_app(app) وفي نموذج user.py: from shared.db import db class User(db.Model): id = db.Column(db.Integer, primary_key=True) email_address = db.Column(db.String(300), unique=True, nullable=False) password = db.Column(db.Text, nullable=False) المشكلة الآن أنه عندما أحاول أن أقوم بإنشاء الجداول من خلال db.create_all يظهر لي الخطأ التالي: No application found. Either work inside a view function or push an application context. كيف يمكنني إستخدام التابع db.create_all بشكل سليم؟1 نقطة
-
كيف اجيب اسم الديبارتمينت و عدد الموظفين في كل قسم يلي avg salary تبعهم أكبر من ٧٥٠٠٠٠1 نقطة
-
1 نقطة
-
يمكنك استخدام مكتبة جافا التي تتيح لك التعامل مع ملفات PDF ومن هذه المكتبات يوجد pdfbox يمكنك تحميلها من الموقع الرسمي لهم، ثم تضمينها في مشروعك، وبعدها عليك قراءة التوثيق لكيفية التعامل معها لإنتاج ملف PDF وتحويل مخرجات تطبيقك عن طريقها للملف PFD الخاص بك مثال بسيط import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; public class Document_Creation { public static void main (String args[]) throws IOException { //إنشاء غرض برمجي للتعامل مع الملف PDDocument document = new PDDocument(); //حلف الوثيقة ي مسار معين document.save("C:/PdfBox_Examples/my_doc.pdf"); System.out.println("PDF created"); //Closing the document document.close(); } } يوجد بعض الأغراض البرمجية الهامة في المكتبة // تمثل الملف بالكامل PDDocument document = new PDDocument(); // تمثل صفحة واحدة PDPage my_page = new PDPage(); // إضافة الصفحة لملف الوثيقة document.addPage(my_page);1 نقطة
-
هل بإمكانك التوضيح اكثر مالذي تريد القيام به1 نقطة
-
لدي الكود التالي الذي يعبر عن تمثيل بياني باستخدام FacetGrid و regplot في seaborn: import seaborn as sb sns.set_style("dark") data = sb.load_dataset("exercise") fg = sb.FacetGrid(data, row="diet", col="time", margin_titles = True) fg.map(sb.regplot, "id", "pulse", color = ".4") الخرج: وأريد الآن وضع نص في منتصف كل مخطط بياني أي ضمن كل subplot، كيف يمكن أن أقوم بذلك؟1 نقطة
-
1 نقطة
-
ايش الفرق بين do action , add action واستخداماتها ,add filter وهذه الاشياء في وورد بريس1 نقطة
-
يمكنك ذلك بتنفيذ التعليمة التالية : بما أنه هناك علاقة بين الجدولين عبر Employee_id SELECT Incentives.Employee_ref_id, //نريد استدعاء آيدي الموظف Employee.First_name //واسم الموظف From Incentives //من جدول JOIN Employees //تُستخدم لدمج صفوف من جدولين أو أكثر ، بناءً على عمود مرتبط بينهما. ON Incentives.Employee_ref_id=Employee.Employee_id //نحدد الأسطر التي نريد دمجها1 نقطة
-
1 نقطة
-
الدالة url_for تقبل معامل آخر هو _external وإذا قمت بتمرير هذا المعامل بقيمة True سوف يتم إنتاج عنوان URL المطلق Absolute وليس عنوان نسبي Relative: url_for('index', _external=True) وقد تحتاج أن تحدد النطاق الذي سيتم إستخدامه من خلال تعين قيمة SERVER_NAME وكذلك البروتوكول المستخدم في إعدادات التطبيق، كالتالي: app.config['SERVER_NAME'] = "localhost:5000" app.config['PREFERRED_URL_SCHEME'] = "http" بهذا الشكل سوف يتم إنتاج عنوان URL كامل عند إستعمال الدالة url_for أيضًا1 نقطة
-
سبب هذا الخطأ أنك قمت بتثبيت WTForms بإصدار 2.3.1 أو أعلى ولكن لم تقم بتثبيت email_validator ويمكنك أن تقوم بتثبيت هذه الحزمة من خلال أحد الطرق التالية: عبر pip: pip install email-validator أو من خلال الأمر التالي: pip install wtforms[email] أو يمكنك أن تقوم بتثبيت إصدار أقدم من WTForms كالتالي: pip install wtforms==2.2.11 نقطة
-
لاحظ أن طريقة كتابة الاستعلام لديك فيها خطأ، حيث أن الاستعلام يقوم بدمج نتائج جدولين أو أكثر (جداء الأسطر) مما يؤدي لعمل جدول يحوي لكل سطر فيه ناتج تكرار كل سطر من أول جدول مع جميع أسطر الجدول الثاني (حجم بيانات ضخم و استعلام معقد.. string com = "select * from TCity , TColors "; ^^^^^^^^^^^^^^^^ cartisan product الحل لديك هو عمل استعلام منفصل لكل جدول و نشر بيانات الاستعلام في القائمة المناسبة. يمكن للتبسيط: اكتب stored procedure يأخذ اسم الجدول كوسيط ويجلب بيناته.. CREATE PROCEDURE getTableData @TableName Varchar(30) AS BEGIN DECLARE @query set @query = 'SELECT * FROM '+ @TableName EXEC @query END --**************************************************** CREATE PROCEDURE getTableData @TableName varchar(30) AS SELECT * FROM @TableName --**************************************************** IF NOT EXISTS(SELECT * FROM sys.tables WHERE name = @tablename) RETURN DECLARE @sql NVARCHAR(30) SET @sql = 'SELECT * FROM ' + QUOTENAME(@tablename) EXECUTE(@sql) شرح المشكلة: اقرأ فقرة الضم المتقاطع Cross Join من المقالة1 نقطة
-
يمكن استخدام الكلمة المفتاحية DISTINCT التي تعمل على فلترة القيم المختلفة من عمود ما في الجدول مثال لاستعلام يعيد الأسماء المختفة من جدول المستخدمين SELECT DISTINCT name FROM users; الآن حاول تنفيذ الفكرة بنفسك بتغير اسم العمود و الجدول إقرأ عن الخاصية من توثيق موسوعة حسوب SQL/distinct1 نقطة
-
لقد تم بالفعل تحديث مسار بناء صفحات هبوط وأصبح التطبيق يتم على الإصدار 5 من بوتستراب. يقوم الاستاذ عبد اللطيف ايمش بنشر أخبار تحديث الدورات على موقع IO حسوب ويمكنك التأكد من تحديث هذا المسار من المنشور: تحديثات دورات أكاديمية حسوب1 نقطة
-
1 نقطة
-
سبب المشكلة هو تحديد الحد الأدنى من توافق التطبيق minSdkVersion مع إصدار نظام أندرويد بقيمة أقل من إصدار مكتبة البناء له compileSdkVersion. يجب أن يكون minSdkVersion بقيمة أقل من compileSdkVersion لأن compileSdkVersion تدعم إصدارات أقل، ولا يمكن تحديد إصدار minSdkVersion أكبر من compileSdkVersion. الحل وأفضل توافقية هي: minSdkVersion <= targetSdkVersion <= compileSdkVersion حل مباشر بوضع القيم إلى 31: android { compileSdkVersion 31 // <-- This defaultConfig { applicationId "com.example.app" minSdkVersion 31 // <-- and this too // ... } } يمكن تحديد هذه القيم في ملف build.gradle ضمن خواص كائن android تأكد من كتابتهم بطريقة صحيحة: minSdkVersion targetSdkVersion compileSdkVersion وتأكد من وجودهم نفسهم في ملف mainfest.xml بالقيم التالية مثلا.. <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="30" android:compileSdkVersion="30" /> مثال لملف gradle plugins { id 'com.android.application' } android { compileSdkVersion 28 buildToolsVersion "30.0.2" defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 15 // Specifies the API level used to test the app. targetSdkVersion 28 // Defines the version number of your app. versionCode 1 // Defines a user-friendly version name for your app. versionName "1.0" } buildTypes { release { minifyEnabled true // Enables code shrinking for the release build type. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } flavorDimensions "tier" productFlavors { free { dimension "tier" applicationId 'com.example.myapp.free' } paid { dimension "tier" applicationId 'com.example.myapp.paid' } } } dependencies { implementation project(":lib") implementation 'com.android.support:appcompat-v7:28.0.0' implementation fileTree(dir: 'libs', include: ['*.jar']) } إن كنت تختبر التطبيق على جهاز أو محاكي، ضع targetSdkVersion بنفس إصدار الأقدم منهما تأكد من عمل clean and rebuild ليتم مزامنة Gradle من جديد1 نقطة
-
هل لديك عناوين ضمن قاعدة بيانات هيروكو؟ حاول إحاطة الشيفرة ب try catch واطبع الخطأ من فضلك1 نقطة
-
تُعتبر العلاقات المُتعددة الأشكال من المواضيع المُتقدمة في الإطار، و العديد من المطورين يجهلون إستخدامها، بسبب أنها معقدة قليلاً، يُمكنك عدم إستخدامها لكن توجد بعض الحالات إذا ما استخدمت فيها هذا النوع من العلاقات ستُسهل عليك الكثير من الأمور، لنفترض أنك تعمل على مشروع، و هذا المشروع به مودل إسمه User و مودل ثاني إسمه Post و مودل ثالث إسمه Photo حيث أن لكل User صورة و لكل مقال صورة، و يمكن أيضاً إضافة نماذج أخرى لها علاقة مع النموذج Photo. قد يكون Product او أي كان. لنتوقف على User و Post بالإضافة إلى Photo فقط. في هذه الحالة كيف ستعمل؟ هل ستقوم بإنشاء نموذج PostPhoto لصور المقالات و جدول خاص به و نموذج ثاني UserPhoto لصور المستخدمين و جدول خاص به أيضاً، و إذا كان هناك نماذج أخرى تتعلق بالصور تُنشئ لها جداول أخرى في قاعدة البيانات أيضاً، ألا ترى أن هذه الطريقة ليست عملية! إذاً ما الحل؟ هل ستستخدم جدول واحد للصور photos و تضع فيه حقلين post_id و user_id و تجعلهما nullable ثم إن كانت الصورة تتعلق ب Post تضع مُعرف المقال في الحقل post_id و تترك الآخر null أما إن كانت الصورة تتعلق ب User تعكس الأمر. ماذا إن كان نموذج آخر يتعلق بالصور و ليكن Product هل ستضيف حقل آخر product_id لجدول الصور!! ألا تُلاحظ أن هذه الطريقة ليست عملية لأننا نضيف كل مرة حقل جديد، و كل مازادت الحقول التي ليس لها داع، تنفيذ الإستعلامات سيكون بطيء، و بالتالي فإن الأفضل هو إستخدام جدول واحد و حقلين فقط بغض النظر عن الحقول الإضافية للنموذج فنحن نتحدث عن حقول العلاقات. و هذين الحقلين هما: imageable_id سيتم فيه تخزين مُعرف النموذج سواء كان User او Post او اي كان imageable_type و فيه سيتم تخزين نوع النموذج مثلا Post او User على شكل سلسلة نصية و بهذه الطريقة تمكنا من إستخدام جدول واحد و تخلصنا من الحقول الإضافية، أيضاً إذا أردنا مستقبلاً إضافة نموذج ثالث له علاقة مع نموذج الصور لسنا بحاجة للتعديل على هيكلية جدول الصور. ملفات التهجير ستكون بهذا الشكل: جدول photos: <?php class CreatePhotosTable extends Migration { public function up() { Schema::create('photos', function (Blueprint $table) { $table->id(); $table->unsignedInteger('imageable_id'); $table->string('imageable_type'); // other fields $table->timestamps(); }); } // ... } العلاقات: النموذج Photo: <?php class Photo extends Model { // ... public function imageable() { return $this->morphTo(); } } النموذج User: <?php class User extends Model { // ... public function photo() { return $this->morphOne(Photo::class, 'imageable'); } } النموذج Post: <?php class Post extends Model { // ... public function photo() { return $this->morphOne(Photo::class, 'imageable'); } } هذه العلاقة تُسمى ( one to one polymorphic) أي واحد لواحد مُتعدد الأشكال يعني لكل مُستخدم صورة و لكل مقال صورة و لكل منتج صورة. ماذا لو كان لدينا الحالة التالية لكل مستخدم عدة صور و لكل مقال عدة صور هذه العلاقة تُسمى One To Many (Polymorphic) هي تُشبه العلاقة الأولى فعند تطبيقها نحتاج فقط لتعديل إسم العلاقة من photo إلى photos حتى تُصبح مُعبرة و نُغير التابع morphOne إلى morphMany بهذا الشكل في كل من النموذج User و النموذج Post: <?php public function photos() { return $this->morphMany(Photo::class, 'imageable'); } ماذا لو أردنا أن تكون صورة ما مُتعلقة بكل من النموذج User و النموذج Post، يعني صورة تابعة لمجموعة من المستخدمين و تابعة في نفس الوقت لمجموعة من المقالات، هذه العلاقة تُسمى Many To Many (Polymorphic) في هذه الحالة نحتاج إلى جدول آخر يُسمى Pivot Table يحتوي على التالي: imageables photo_id - integer imageable_id - integer imageable_type - string بحيث photo_id يُشير إلى معرف الصورة في جدول الصور الذي يكون بالشكل التالي: photos id - integer -- other fields حيث أن العلاقات ستكون بالشكل التالي: النموذج Post و النموذج User: <?php public function photos() { return $this->morphToMany(Photo::class, 'imageable'); } و في النموذج Photo بهذا الشكل: <?php public function posts() { return $this->morphedByMany(Post::class, 'imageable'); } public function users() { return $this->morphedByMany(User::class, 'imageable'); } افضل شيء للتعلم هو التطبيق يُمكنك تخيل سيناريو في ذهنك و تطبيقه. أيضا بإمكانك الإطلاع على توثيق موسوعة حسوب: العلاقات مُتعددة الأشكال1 نقطة
-
إن العلاقات متعددة الأشكال هي أن يكون لديك نماذج يمكن أن تنتمي إلى أكثر من كيان واحد. يحتفظ هذا النوع من النماذج بالبنية نفسها التي لا تتغير بغض النظر عن النموذج الآخر المرتبط به. من الأمثلة الشائعة على هذا النوع من السيناريوهات هي (التعليقات). في مدونة على سبيل المثال ، يمكن أن توضع التعليقات على منشور محدد أو على صفحة مستقلة مع الحفاظ على الهيكل نفسه بغض النظر عما إذا كان منشور أو صفحة. أي بمعنى آخر ستبقى جميع الخصائص للتعليق ثابتة مثل (الاسم، تاريخ التعليق، محتوى التعليق،...). مع أخذ المثال المذكور أعلاه في الاعتبار ، لدينا كيانان: Post و Page. للحصول على تعليقات على كل منها ، يمكننا أن نقرر إنشاء قاعدة بياناتنا على النحو التالي: posts: id الرقم المعرف للمقال title عنوان المقال content محتوى المقال posts_comments: id رقم معرف فريد post_id الرقم المعرف للمقال comment التعليق date تاريخ التعليق pages: id الرقم المعرف للصفحة body محتوى الصفحة pages_comments: id رقم معرف فريد page_id الرقم المعرف للصفحة comment التعليق date تاريخ التعليق ولكن نلاحظ أنه باعتماد النهج السابق، وجب علينا إنشاء جدولين للتعليقات، جدول للتعليقات الخاص بالصفحة، وجدول آخر للتعليقات الخاصة بالمنشور أو المقال. وكليهما يقومان بنفس الدور تماماً ويحتويان نفص الخصائص، إنما الاختلاف الوحيد هو بالمكان الذي يتواجدان فيه (مرة بالمنشور ومرة أخرى بالصفحة). مع استخدام العلاقات المتعددة، يمكننا تبسيط البينة السابقة ومنع التكرار الذي حصل، فتصبح لدينا بنية الجداول كالتالي: posts: id الرقم المعرف للمنشور title عنوان المنشور content محتوى المنشور pages: id الرقم المعرف للصفحة body محتوى الصفحة comments: id الرقم المعرف للتعليق commentable_id الرقم المعرف للمكان الذي يوجد فيه التعليق (أي رقم معرف للصفحة أو رقم معرف للمنشور) commentable_type نوع المكان الهدف (صفحة أو منشور) date تاريخ التعليق body محتوى التعليق وبذلك نلاحظ لدينا عمودين جديدين مهمين يجب الانتباه إليهما: commentable_id و commentable_type. وبدورهما قاما باختصار تكرار جدول التعليق مرتين وتكرار البيانات. وهذا ببساطة هو مفهوم العلاقات المتعددة الأشكال. الآن لنأخذ المثال السابق ونقوم بتضمينه ضمن لارافيل: عند إنشاء الجداول للتهجير نقوم بالتالي: Schema::create('posts', function (Blueprint $table) { $table->increments('id'); $table->string('title'); $table->text('content'); }); Schema::create('pages', function (Blueprint $table) { $table->increments('id'); $table->text('body'); }); Schema::create('comments', function (Blueprint $table) { $table->increments('id'); $table->morphs(‘comment’); //-> ستنشئ تلقائيًا عمودين باستخدام النص الذي تم تمريره إليه $table->text('body'); $table->date('date'); }); بوضع morphs سيقوم تلقائياً بإنشاء العمودين commentable_id و commentable_type. ثم عند إنشاء جدول التعليقات يمكننا تعريف دالة تساعدنا بالحصول على أي مودل آخر يملك تعليق (أي يمكننا مباشرة الحصول على تعليقات المنشور و تعليقات الصفحة) بدالة واحدة بدلاً من اللجوء لآليات أخرى أكثر تعقيداً، كالتالي: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Comment extends Model { //باستخدام هذا التابع نستطيع الآن أن نحصل على أي مودل يملك تعليق أي مودل الصفحة ومودل المنشور public function commentable() { return $this->morphTo(); } } وعند إنشاء الجدول الهدف (الكيان الذي سيحوي التعليقات) على سبيل المثال جدول المنشور: namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { //هذه الدالة ستقوم باستعادة جميع التعليقات الموجودة على منشور محدد public function comments() { return $this->morphMany('App\Comment', 'commentable'); } } نلاحظ قمنا باستخدام morphMany للدلالة بأن المنشور قد يحوي عدة تعليقات، وبذلك نستطيع الحصول على كافة التعليقات الموجودة على هذا المنشور. وكذلك الأمر طبعاً بالنسبة (للصفحة) نكرر الخطوة السابقة morphMany. يمكنك أيضاً الاطلاع على باقي أشكال العلاقات وأنواع العلاقات متعددة الأشكال الأخرى من التوثيق الرسمي في لارافيل.1 نقطة