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

Wael Aljamal

الأعضاء
  • المساهمات

    6975
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    218

إجابات الأسئلة

  1. إجابة Wael Aljamal سؤال في مشكلة في الكتابة على ملف نصي بلغة بايثون يظهر الخطأ io.UnsupportedOperation: not writable كانت الإجابة المقبولة   
    عند استخدام الدالة open لفتح قناة اتصال مع الملف، يتوجب تمرير معامل ثاني بعد المسار ليفهم مفسر بايثون الغرض من هذه القناة، أهو للقراءة أو الكتابة أو غيره.
    في حال أردت الكتابة على الملف نمرر المحرف w أي write 
    myfile= open("D:\IT3\zeina.txt", "w") ^^^^^^ يمكنك قراءة: قراءة الملفات والكتابة فيها في بايثون
  2. إجابة Wael Aljamal سؤال في كيف اتعلم البرمجة بلغة python من أكاديمية حسوب مجانا  كانت الإجابة المقبولة   
    توفر موسوعة حسوب كتاب تعلم لغة بايثون:
    ومجموعة دروس ومقالات:
    دروس ومقالات بايثون و موسوعة حسوب:
    لغة بايثون Python - موسوعة حسوب
  3. إجابة Wael Aljamal سؤال في كيفية معالجة الأخطاء في Mail::send في لارافيل Laravel؟ كانت الإجابة المقبولة   
    المشكلة لديك في تضمين صنف الاستثناءات ضمن عبارة catch
    catch(Exception $e){ // لا يعمل أبدًا } الذي يجب استبداله بال root namespace \Exception
    catch(\Exception $e){ // يعمل } أو أضف في بداية الملف use Exception
  4. إجابة Wael Aljamal سؤال في كيفية حفظ list في SharedPreferences في Flutter كانت الإجابة المقبولة   
    إن shared preferences في Flutter تسمح لك بتخزين قائمة سلاسل نصية مباشرة من خلال الدالة setStringList كما الطريقة التالية:
    setStringList(String key, List<String> value) هي تماماً ما تحتاجه، لأن قائمتك عبارة عن قائمة سلاسل نصية String List.
    يوجد الدالة لقراءة القيمة المخزنة مسبقاً
    // read final myStringList = prefs.getStringList('string_list_key') ?? []; // write prefs.setStringList('string_list_key', ['wael', 'walid', 'wassim']);  
  5. إجابة Wael Aljamal سؤال في إدخال بيانات مختلقة من المستخدم بواسطة جافاسكربت كانت الإجابة المقبولة   
    صندوق الإدخال، هل تقصد به prompt؟ يمكنك وضعه دالخل الحلقة، وعند إدخال كل قيمة تقوم بتخزينها في عنصر من مصفوفة أو طباعته مباشرة
    for (let i=0; i<3; i++) { let person = prompt("Please enter your name"); alert("name is " + person); } حاول كتابة البرنامج بنفسك، وشاركه إن كان فيه خطأ لنساعدك على تصويبه
  6. إجابة Wael Aljamal سؤال في تحميل البيانات مسبقا من السيرفر Flutter كانت الإجابة المقبولة   
    تمام، في صفحة splash screen تقوم بجلب البيانات بشكل عادي، ثم بعد انتهاء الطلب، في نهاية التابع الذي يجلب البيانات، اعمل تحويل لصفحة Home بطلب الصفحة يدوياً
    class HomeScreen extends StatefulWidget { final dynamic Data; Tabbar(this.Data); @override State<Tabbar> createState() => _HomeScreenState(); } وإن الانتقال لصفحة ال Home يتم تمرير بيانات api
    get data async { fetch .. HomeScreen(result) // قائمة result }  
    ثم نتابع تمرير البيانات للقائمة 
    كلا هي الأفضل. لكن يمكن استخدام list عادية سوف تحمل الجميع عند إنشائها
    وحاول التأكد أن طريقتك في جلب الصور تستخدم الذاكرة المؤقتة cache لتخزين الصور المكررة في التطبيق و عند طلب نفس الرابط لا تحمل الصورة من الانترنت مثل cached_network_image
    ,الأفضل تطبيق Pagination أي التقسيم لصفحات، لكن فيها عمل أكثر إن لم يكن أداء التطبيق مقبول يمكن الانتقال لها
  7. إجابة Wael Aljamal سؤال في ما هي متغيرات الـ Application وما الفرق بينها وبين متغيرات الـ Session كانت الإجابة المقبولة   
    إن الفرق بينهم أن application variable هو متغير خاص بالتطبيق (البرنامج) ككل، ويتم توفير نسخة واحدة في الذاكرة له و يمكن الوصول له من أي مكان في التطبيق، يمكن اعتباره متغير عام ولجميع المستخدمين. مثل بيانات عامة مثلاً يمكن عرض عدد مستخدمي النظام أو 
    أما session variable هي بيانات خاصة بالجلسة الحالية فقط، أي في فترة اتصال المستخدم مع الموقع وطالما يوجد جلسة نشطة فإن البيانات التي تربط المستخدم مع الموقع يتم تخزينهم على مستوى الجلسة و هذه البيانات تكون خاصة بالمستخدم الحالي فقط، تكون بيانات خاصة مثل user id
  8. إجابة Wael Aljamal سؤال في كيفية تعطيل احد ازار BottomNavigationBar في Flutter كانت الإجابة المقبولة   
    كما لديك، إن افترضنا وجود قائمة أزرار من BottomNavigationBarItem يمكننا تتبع الزر المحدد من خلال تخصيص متغير حالة يحمل ترقيمه index
    bottomNavigationBar: BottomNavigationBar( items: [ BottomNavigationBarItem( ... ), BottomNavigationBarItem( ... ), BottomNavigationBarItem( ... ), ], onTap: navigationTapped, currentIndex: _page, ), ولنفرض أن اسمه page_ أو أي شيء مناسب.
    وعند النقر على الأزرار نحول الاستجابة لدالة مخصصة callback وهي فرضاُ navigationTapped
    سوف تستقبل هذه الدالة رقم الزر المضغوط عليه، و قارنه مع متغير الحالة لديك أو مع قيمة غير مرغوبة، ثم قم بالتصرف المناسب
    void navigationTapped(int page) { if (page == 2) { return; } else { setState(() { _selectedIndex = page; }); } } لاحظ إن كان قد تم نقر الزر 2 لن نعمل تغيير في اختيار الواجهة
    كما يمكنك عمل ثيم مخصص مثلاً لون شفاف
    Theme( data: Theme.of(context).copyWith( splashColor: Colors.transparent, highlightColor: Colors.transparent, ), child: YourWidget(), ); كما يمكنك وضعه ضمن حاوية Container مع أبعاد  0 * 0 أو fontSize = 0
  9. إجابة Wael Aljamal سؤال في اظهار رسالة الترحيب للمستخدم بشكل متناسق بلغة بايثون كانت الإجابة المقبولة   
    يمكنك استدعاء الدالة strip على السلاسل النصية،يحذف هذا التابع الحروف المحدّدة من قبل المستخدم من نهاية وبداية السلسلة النصية. (الوضع الافتراضي هو الفراغات '  ' .
    التوثيق: wiki.hsoub.com/Python/str/strip
    يمكنك تطبيقها عند قراءة الدخل مباشرة، أو قبل الطباعة (الأفضل)
    fName = input(" Enter your First_Name").strip() أو
    print(f"Welcome {fName.strip()}) لاحظي أن input تعيد كائن من نوع str لذلك يمكن تطبيق stripe عليه مباشرة
  10. إجابة Wael Aljamal سؤال في طريقة لطباعة اسم المستخدم دون طباعة اللاحقة الموجودة في الايميل بلغة بايثون كانت الإجابة المقبولة   
    المشكلة بسيطة، علينا طباعة الجزء قبل المحرف @ حيث يمكن تطبيق الفكرة:
    عمل حلقة for تطبع المحارف طالما نحن لم نصل للمحرف  @ استخدام دوال الكائن str لمعرفة ترقيم المحرف @ ثم جلب المحارف قبله توثيق دالة البحث wiki.hsoub.com/Python/str/find و اقتطاع السلسلة النصية
    يمكنك مشاركة برنامجك، وسوف نعمل على إصلاحه 
  11. إجابة Wael Aljamal سؤال في طباعة قيمة من Dictionary بلغة بايثون كانت الإجابة المقبولة   
    توفر بايثون عدة طرق مختلفة للوصول لقيمة المفاتيح ضمن القاموس، والأفضل بينها هو استعمال الدالة get
    user.get("name") التي لا تعطي خطأ في حال عدم وجود المفتاح ضمن القاموس user.
    وفي حال كنت متأكدة من وجود المفتاح يمكن مباشرة الوصول له من خلال الدليل
    user['name' ] أرجو الاعتماد على نفسك في البحث هذا السؤال بسيط، يمكنك القراءة أكثر من موسوعة حسوب: wiki.hsoub.com/Python/dict
  12. إجابة Wael Aljamal سؤال في كيف يمكن الوصول للميكروفون في لغة جافا سكربت كانت الإجابة المقبولة   
    قمت بتعديل الشيفرة، حيث أن المشكلة في مجال الوصول للمتيغرات، و عدم تطبيق دالة stop لتفعيل حدث stop للبدء بإجراءات حفظ الملف
    <html> <body> <button onclick="samah();">تسجيل صوتي</button> <button onclick="stops();">stop</button> <a id="a"></a> <script> var audioChunks = []; // بيانات الصوت var mediaRecorder = null; var audioBlob = null; var audioUrl = null; function samah() { navigator.mediaDevices.getUserMedia({audio: true}) .then(stream => { mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(); // بدء التسجيل mediaRecorder.addEventListener("dataavailable", event => { audioChunks.push(event.data); }); }); } function stops() { mediaRecorder.addEventListener("stop", () => { audioBlob = new Blob(audioChunks, {type: mediaRecorder.mimeType}); audioUrl = URL.createObjectURL(audioBlob); // تحميل ملف الصوت let a = document.getElementById("a"); a.href = audioUrl; a.download = "recording.webm"; a.innerText = 'click me to save file'; //document.body.appendChild(a); //a.click(); }); mediaRecorder.stop(); } </script> </body> </html> وهو يعمل بشكل جيد كما المطلوب
  13. إجابة Wael Aljamal سؤال في مشكلة جلب الوقت الفعلي TimeAge كانت الإجابة المقبولة   
    إن الطلبية تعيد الوقت بشكل سلسلة نصية، بتنسيق الوقت كما هو مخزن في قاعدة البيانات لديك.
    لذلك على السيرفر أن يحول الوقت من تنسيق التاريخ لرقم عدد صحيح.
    استخدم الدالة strtotime لتحويل الخانة التي تحمل الوقت لرقم echo strtotime('2012-03-27 18:47:00'); //--> which results to 1332866820 أعتقد هكذا: ضمن الحلقة
    $row['TimeNow'] = strtotime($row['TimeNow']); $array[] = $row; ثم في Dart استقبل (الرقم) الذي سيكون على شكل نص (احتمال) وحوله لرقم صحيح
    import 'dart:convert'; . . . TimeNowAge = int.parse(data[0]['TimeNow']);  
  14. إجابة Wael Aljamal سؤال في الحصول على الاسم الاخير ضمن list بلغة بايثون كانت الإجابة المقبولة   
    توفر بايثون طريقة لجلب العناصر من آخر القائمة عن طريق تمرير دليل العنصر (ترقيمه) بقيمة سالبة 
    أي سوف يعبر -1 عن آخر عنصر، -2 عن ما قبل آخر عنصر (ثاني عنصر من الخلف) وهكذا..
    print(names[-1]) #hala print(names[-2]) #ghaith  
  15. إجابة Wael Aljamal سؤال في ماالفرق بين Remove و discard بلغة بايثون كانت الإجابة المقبولة   
    المشترك: إن كلاً من هذه الطريقتين methods تستخدم في حذف عنصر من المجموعة set.
    الاختلاف: أن discard هي طريقة أمنة لحذف العنصر، حيث تختبر وجوده ضمن المجموعة قبل حذفه ولا تعطي أي رسالة خطأ في حال لم يكون العنصر ينتمي للمجموعة، أما remove تعطي خطأ في حال عدم وجود العنصر، خطأ من نوع KeyError.
    بالنسبة ل set 
    >>> s = {1, 2, 3, 4, 5} >>> s.remove(3) # عنصر موجود - يتم حذفه >>> s {1, 2, 4, 5} >>> s.remove(6) # عنصر غير موجود - يعطي رسالة خطأ Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 6 أما discard لاتعطي أي تحذير أو خطأ
    >>> s.discard(6) >>> s {1, 2, 4, 5} توثيق المجموعات set في بايثون
  16. إجابة Wael Aljamal سؤال في ماهي افضل استضافة موقع ؟ كانت الإجابة المقبولة   
    اختيارك للاستضافة يجب أن يعتمد على عدة أمور،
    القيمة المالية مقابل الاشتراك ( مجانية - مدفوعة) قوة المعالجة والذاكرة RAM (تكفي لعدد المستخدمين المتوقع) هل تدعم تشغيل BackEnd الخاص بمشروعك؟ حسب لغة البرمجة و قابلية تنصيب و تعديل البرمجيات وبالنسبة لتصدر نتائج البحث يعتمد على نوع المشروع، إن كنت تكتب مقالات فهذا يعتمد على SEO أما التطبيقات التي ليس لديها مدونة أو منشورات عامة لن تظهر في محركات البحث، بل تعتمد على الانتشار بين المستخدمين و الميزات التي تقدمها
    تهيئة محركات البحث SEO
  17. إجابة Wael Aljamal سؤال في ظهور الخطأ Reference Error: require is not defined عند تشغيل المشروع عن طريق live server كانت الإجابة المقبولة   
    لاحظي أن الخطا يقول address is already in use أي االمنفذ مستعمل بالفعل، ولا يمكن تشغيل نفس التطبيق أو أكثر من تطبيق على نفس المنفذ.
    أرجو إغلاق cmd المفتوحة من الجزء الأيمن أعتقد أن شيء يستعمل المنفذ او عدلي 5000 إلى رقم آخر.
    استعمال الرابط، ننسخه و نلصقه في المتصفح!
  18. إجابة Wael Aljamal سؤال في الحصول على بطاقة هدية من أكاديمية حسوب كانت الإجابة المقبولة   
    لا أعتقد أن هذا العرض متوفر، كان هنالك عرض للطلاب المشتركين فترة العيد بتخفيض 100 دولار لكل دورة جديدة يرغبون بالاشتراك بها ومعظم العروض للطلاب المشتركين فعلياً كما لاحظت.
    بشكل عام يمكنك التواصل مع مركز المساعدة
  19. إجابة Wael Aljamal سؤال في طباعة جميع القيم من قائمة enum في جافا كانت الإجابة المقبولة   
    إن الطريقة التي تتبعينها Days.MONDAY تطبع قيمة الثابت نفسه أي MONDAY ويجب تكرار هذه العملية لكامل القيم في القائمة.
    يمكن المرور عليهم بواسطة حلقة for على ما تعيده الطريقة values حيث ترجع مصفوفة
    public static void main(String[] args) { // و ستعرض كل عنصر فيها values() هذه الحلقة ستقوم بالمرور على جميع العناصر التي سترجعها الدالة for(Days d: Days.values()) { System.out.println(d); } }  
  20. إجابة Wael Aljamal سؤال في عدم طباعة القيم عند التنفيذ بلغة جافا كانت الإجابة المقبولة   
    أرجو مشاركة رسالة الخطأ، لكي نشرحها لك و تتعودي على حل مشاكلك بنفسك. ضمن عباراة الطباعة تقومين بطباعة متغيرات بأسمائها مباشرة، هل قمت بتعريف هذه المتغيرات؟  لدينا كائن اسمه em فيه عدة خصائص نصل لهم من اسم هذا الكائن em.property
  21. إجابة Wael Aljamal سؤال في استخدام مفهوم ال Nested Classes في جافا كانت الإجابة المقبولة   
    نلاحظ أن الصنف B عبارة عن خاصية من خصائص الصنف A ( Non Static Nested Classes.) وبذلك حتى تتوفر يتوجب بناء كائن من A ثم من خلاله نقوم بإنشاء كائن من B
    A a = new A(); // A ننشئ كائن من الـ A.B b = a.new B(); // B ننشئ كائن من الـ يمكن عمل الأمر بخطوة واحدة
    A.B b = new A().new B(); أما في حال تعريف B كخاصية static أي (Static Nested Classes) يمكن الوصول لها مباشرة بدون إنشاء كائن من A
    public class A { // A إسمه Outer Class هنا قمنا بتعريف static class B { // B إسمه Nested Class هنا قمنا بتعريف } } ويصبح إنشاء الكائن B:
    A.B b = new A.B(); // b إسمه A الموجود بداخل الكلاس B هنا قمنا بإنشاء كائن من الكلاس  
  22. إجابة Wael Aljamal سؤال في كود html و javascript لمشاركة نص كرسالة لواتساب كانت الإجابة المقبولة   
    يمكن استخدام الشيفرة التالية في الهاتف لفتح تطبيق واتساب و تحميل النص من الصفحة للتطبيق
    <button onclick="window.open('whatsapp://send?text= النص ')"> مشاركة عبر WhatsApp </button> ^^^^ سوف نمرر النص المطلوب مشاركته ضمن قيمة الوسيط text.
    يمكن نقل شيفرة جافاسكربت التي ستقرأ النص لدالة خاصة ومن ثم يتم استدعائها ضمن تلك الدالة
    نضيف زر المشاركة  عند النقر على الزر، نقرأ النص من عنصر HTML المطلوب (تحديده مثلا عن طريق id) فتح تطبيق واتساب مع النص  <p id="myElement"> مشاركة تجريبية عن طريق واتساب </p> <button onclick="share()"> Share to WhatsApp </button> <script> function share() { let message = document.getElementById("myElement").textContent; // ^^^^^^^^^^^^ العنصر الذي فه النص المطلوب مشاركته window.open( "whatsapp://send?text=" + message, '_blank'); } </script>  
  23. إجابة Wael Aljamal سؤال في الحصول على كائن تاريخ في المستقبل في جافا كانت الإجابة المقبولة   
    يمكننا الاستعانة بكائن التقويم Calendar فهو يسمح لنا بإضافة وقت معين للتاريخ الحالي ثم نسترجع التاريخ الجديد من الدالة getTime
    Calendar cal = Calendar.getInstance(); // بناء غرض من calendar cal.setTime(new Date()); // تحديد الوقت الحالي time/date cal.add(Calendar.HOUR_OF_DAY, 1); // إضافة ساعة cal.getTime(); // استرجاع الوقت الجديد توثيق الكائن Calendar يوجد طرف أخرى مثل استعمال الصنف java util Date
  24. إجابة Wael Aljamal سؤال في حقل كلمة المرور لا يعمل في الإستمارة Form في جانغو Django كانت الإجابة المقبولة   
    حل المشكلة هو أن ال widget يجب أن تكون استدعاء دالة، أي ينقص قوسين () الخاصين بالاستدعاء
    password = forms.CharField(widget=forms.PasswordInput()) ^^  
  25. إجابة Wael Aljamal سؤال في الفرق بين الدالتين ()Tittle و()Capitalize بلغة بايثون كانت الإجابة المقبولة   
    ملاحظة إضافية، في Title إن كان هنالك كلمة في السلسلة النصية تبدأ برقم، سوف يتم تكبير أول حرف من الكلمة بعد هذا الرقم.
    a 2bb 3ccc => A 2Bb 3Ccc  
×
×
  • أضف...