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

Wael Aljamal

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

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

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

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

    218

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

  1. إجابة Wael Aljamal سؤال في ازاي اعمل deallocate في C++؟ كانت الإجابة المقبولة   
    في الجزء التالي:
    // To Erase The Elemets void Erase() { if (CheckIsEmpety()) { cout << "Stack Is Empety"; } else { // Create Temporary Pointer Points To *Top Node* Temp = Top;_____________________________________________ هنا // To Move Top A Step Down Top = Top->Next; // Make The Temporary Pointer NULL Temp = Temp->Next = NULL; // Then Delete Temp delete Temp; } } يجب أن نشير للعقدة من عنوانها في الذاكرة وليس نسخ قيمتها كما هو الحال في الشيفرة لديك.
    كما أن حذف العقدة Temp (لديك في نف الشيفرة) هو غير ضروري لأنه متغير مؤقت ضمن الجزء else أي سوف يتم التخلص منه تلقائيا.
    - يجب أخذ عنوان Top& عندتعريف temp و من ثم حذف temp سيعمل بشكل صحيح.
  2. إجابة Wael Aljamal سؤال في عمليه تراجعيه تتلقى مؤشر على اول حلقه من سلسله حلقات من نمط صحيح سي شارب كانت الإجابة المقبولة   
    نمرر بداية السلسلة للدالة، ونختبر في كل مرة وجود عقدة فارغة أو لا، ثم نختبر قيمة العقدة و نطبق المنطق المطلوب ومن ثم نمرر العقدة التالية للدالية كاستدعاء عودي/تراجعي.
    Public static void PositiveNegative(Node<int> p) { if (p == null) return; if (p.value > 0) p.value = 1; else if (p.value < 0) p.value = -1; PositiveNegative(p.GetNext()); }  
    لمعرفة أكبر قيمة:
    نريد تمرير قيمة تحمل أكبر قيمة و لتكن Max_Value، نعيدها عند نهاية السلسلة لأننا عندها سيكون لدينا أكبر قيمة بعد تطبيق منطق الخوارزيمة.
    في كل خطوة نقارن بين القيمة التي لدينا و القيمة الحالية للعقدة ونسند القيمة الحالية ل Max_Value في حال كانت أكبر..
    نستدعي الدالة عوديا و نمرر لها الوسطاء، العقدة التالية و أكبر قيمة حققناها للآن.
    Public static int PositiveNegative(Node<int> p, int Max_Value) { if (p == null) return Max_Value; if (p.value > Max_Value) Max_Value = p.value; return PositiveNegative(p.GetNext() , Max_Value); } أرجو الاعتماد على نفسك في حل المشكلات البرمجية وعدم الاعتماد على الآخرين.
  3. إجابة Wael Aljamal سؤال في ماهي تكلفة إنشاء موقع كوبونات مثل هذا الموقع؟ كانت الإجابة المقبولة   
    كيف نتفحص الموقع بحثا عن نوعه و الملفات المستخدمة؟
    نضغط F12 في لوحة المفاتتيح و تظهر لوحة المطورين، نختار منها التبويب Application ثم نذهب للجزء الأيسر و نستعرض بنية المشروع

    لا نرى أي دلالات لوجود قوالب وورد بري، فقط مكتبات جافاسكربت و CSS، يمكنك تفحص وجود وورد بريس من الخدمة wpthemedetector والتي تخبرك في حال وجود ثيمة، ربما هذا الموقع مبرمج بثيمة خاصة لن تجدها في المتاجر.
    بالنسبة للتكلفة تختلف بين مطور و آخر، وحسب بلد المعيشة و ماذا تريد إضافات، يمكنك طرح مشروع على مستقل و تلقِ العروض وعندها ستعرف الكلفة التقريبية وأيها الأرخص
  4. إجابة Wael Aljamal سؤال في واجهات المستخدم كانت الإجابة المقبولة   
    طالما ذكرتِ "لأصبح شخص مختص بتصميم الواجهات" فهنا علينا تعلم جميع التقنيات و المهارات اللازمة لعمل التصميم،
    بشكل عام يمكننا التفريق بين:
    التصميم بنفسه: أي عمل الواجهة وما تحويه من عناصر و تحديد الألوان و أشكال الأزرار .. (لا تحتاج لبرمجة) برمجة الواجهات والتي تكون في مواقع الويب أو تطبيقات الهاتف المحمول. (تحتاج لتعلم التقنية الموافقة لبيئة العمل المستهدفة) إن استخدام البرامج الجاهزة التي تقدم Blocks جاهزة ليس طريقة عملية بشكل كبير (أحيانا تكون صعبة التعديل)، بل يجب أيضا تعلم أساسيات مناسبة لطبيعة الملفات التي تنتجها هذه البرامج، كما قُلت في حال كان خرج البرنامج ملفات CSS واحتاجت لتعديل، فيجب عندها معرفة CSS.
    يوجد برامج خاصة بالتصميم مثل adobeXD وغيره تعطي دعم كبير للمصمم وتجعله يتحكم بالتفاصيل.
    أما في حال كنت تريدين العمل بطريقة أسهل في البرمجة (تصميم المواقع) يمكن تعلم إضافة لأساسيات CSS إطار عمل Bootstrap والذي يحوي تنسيقات مبرمجة مسبقا تسهل و توحد طريقة بناء الواجهات.
  5. إجابة Wael Aljamal سؤال في خطأ في binary search بلغة جافا كانت الإجابة المقبولة   
    إن list هي مصفوفة أعداد من النوع int أي يجب أن تكتب الأعداد بدون " اقتباس ويفصل بينها فواصل.
    int[] list ={1,2,5,7,9,15}; ويوجد أخطا في طريقة كتابة تابع البحث الثنائي حيث يجب أن تكون بالطريقة التالية:
    import java.util.*; import java.lang.*; import java.io.*; class Main { public static int executions = 0, comparisons = 0; public static void main(String[] args) throws java.lang.Exception { int[] list = {1,2,5,7,9,15}; int target = 5; boolean result = binarySearch(list, target, 0, list.length - 1); if (!result) { System.out.println("Target not found -- bad search."); } else { System.out.println("Target found -- sucessful search!"); System.out.println("executions: " + executions); System.out.println("comparisons: " + comparisons); } } public static boolean binarySearch(int[] list, int target, int low, int high) { executions++; int mid = (low + high) / 2; if (list[mid] == target) { return true; } else { if (low > high) { return false; } else { comparisons++; if (list[mid] < target) { return binarySearch(list, target, mid + 1, high); } else { return binarySearch(list, target, low, mid - 1); } } } } } وسيكون الخرج:
    Target found -- sucessful search! executions: 1 comparisons: 0 أي سيجد القيمة 5 من أول محاولة
  6. إجابة Wael Aljamal سؤال في خطا عند التعامل مع ملفات الاكسل في جافا كانت الإجابة المقبولة   
    كما ذكرت، يحدث الخطأ عند قراءة خلية فارغة، فعلينا وضع شرط للتأكد من احتواء الخلية على بيانات قبل قراءة القيمة منها
    مثلا: قبل استخدام 
    int col1 = (int) nextCell.getNumericCellValue(); لتصبح:
    int col1 = -1; قيمة ابتدائية غريبة عن بيانات الجدول if (nextCell.getNumericCellValue() != null) { col1 = (int) nextCell.getNumericCellValue(); } يمكنك تمرير قيم غير مستخدمة مثلا -1 في حالة int و سلسلة تحوي رمز معين في حال كان محتوى الخلية هو نص.
  7. إجابة Wael Aljamal سؤال في فشل تشغيل برنامج بصيغة jar كانت الإجابة المقبولة   
    في ملف بنية المشروع 
    META-INF/MANIFEST.MF يجب تحديد الحزمة package التي تحوي الدالة main ليبدأ تنفيذ البرنامج منها.
    حيث يتم تحديدها عن طريق السطر التالي:
    Main-Class: com.mypackage.MyClass حيث أن هذا الصنف يحوي الالة main:
    public static void main(String[] args) يمكن إضافة الملف META-INF/MANIFEST.MF للمشروع بتنفيذ التعليمة التالية في سطر الأوامر:
    jar cmvf META-INF/MANIFEST.MF <new-jar-filename>.jar <files to include> مع تحديد اسماء الملفين أو التعليمة التالية:
    java -cp app.jar com.somepackage.SomeClass لتحديد الصنف الذي يحوي main عند التنفيذ.
    في حال استخدام NetBeans أو Eclipse يمكن تعديل الملف المذكور من الواجهة الرسومية في إعدادات المشروع.
  8. إجابة Wael Aljamal سؤال في C# موقع لحل المسائل البرمجية كانت الإجابة المقبولة   
    يمكنك التوجه إلى موقع codeforces مثلا، وهو موقع مختص في المسابقات البرمجية.
    يمكنك من تصفح المسائل البرمجية من تبويب problem set حيث أن المسائل من نوع A هي الأسهل ثم B أصعب ثم C تصبح تعتمد على الخوارزميات في حلها..
    بعد قرائتك لمسألة ما، تكتب حلاً لها في محرر الأكواد الذي تستخدمه عادة وتتأكد من تنفيذ الأمثلة sample test الموجودة في صفحة المسألة ثم يمكنك من رفع ملف الحل submit من صفحة المسألة بجهة اليمين بعد اختيار للغة البرمجة #C والإصدار الذي تستخدمه.
    في حال كان الحل صحيح سوف يعطيك Accepter و إلا wrong answer أو شيئ آخر حسب حلك.
  9. إجابة Wael Aljamal سؤال في خطأ في سيلينيوم - جافا كانت الإجابة المقبولة   
    تكمن المشكلة في محاولة الدالة لقراءة قيمة لكن هذه القيمة غير موجودة.
    و يحدث الخطأ تحديدا في الجزء :
    String parentId = it.next(); String childId = it.next(); حيث علينا قبل محاولة القراءة التأكد في حال وجود العنصر أم لا باستخام الشرط:
    String parentId = ""; if (it.hasNext()) parentId = it.next(); String childId = ""; if (it.hasNext()) childId = it.next(); وهكذا نحل المشكلة
  10. إجابة Wael Aljamal سؤال في استخراج عدد المدخلات بالداتابيز mysql كانت الإجابة المقبولة   
    أقترح عليك استخدام mysqli  انتبه لحرف i في نهاية التعليمة حيث أنها النسخة المحدثة من mysql في php واستخدامها أفضل.
    <?php $mysqli = new mysqli("localhost","my_user","my_password","my_db"); if ($mysqli -> connect_errno) { echo "Failed to connect to MySQL: " . $mysqli -> connect_error; exit(); } $sql = "SELECT Lastname, Age FROM Persons ORDER BY Lastname"; if ($result = $mysqli -> query($sql)) { while ($row = $result -> fetch_row()) { echo $row[0]. " " . $row[1]; } $result -> free_result(); } $mysqli -> close(); ?> وهذا مثال لاستخدامها حيث يتوجب الاتصال بقاعدة البيانات ثم التأكد من عدم وجود خطأ في الاتصال.
    تجهيز الاستعلام و تنفيذه وثم طباعة النتائج
  11. إجابة Wael Aljamal سؤال في سلام عليكم مساعده اذا ممكن بموضوع سي شارب كانت الإجابة المقبولة   
    أن الحل بسيط، أقترح عليك الحاولة فهو يشبه إلى حد كبير نفس هذه الشيفرة التي قدمتها.
    سأشرح بعض الخطوات المساعدة:
    تابع البحث عن قيمة يجب أن نمرر له هذه القيمة كوسيط parameter ومن ثم نقوم بالتجول على قيم السلسلة بنفس الطريقة المقدمة أي حلقة while وفيها نقارن قيمة العقدة الحالية مع القيمة الممرة و  نعيد true في حال التساوي.
    إذا انتهت الحلقة ولم نجد أي عنصر مساوٍ للوسيط نعيد false.
    حاول حل المشكلة إعتمادا على الشرح السابق.
    Public static int CountNodes(Node<int> p, int X) { while(p != null) { if (p.value == X) return true; p=p.GetNext(); } return false; } إن بنية العقدة يمكن أن تحوي قيمة العنصر الحالي حيث أن الوصول لها يكون إما عن طريق value أو قيمة أنت قمت بتعريفها حسب بنائك لنمط البينات Node.
    إن Node يجب أن تحوي قيمة محلية من النوع int و العنصر التالي Next. وفي حالتنا علينا المقارنة مع العنصر الحالي للعقدة.
    ربما تختلف التسمة value لديك لكن هذه هي الطريقة المطلوبة.
  12. إجابة Wael Aljamal سؤال في طريقة اضافة البيانات في قاعدة البيانات بlaravel كانت الإجابة المقبولة   
    في أي مشكلة برمجية إن كانت بتصميم قاعدة البيانات Data Base وجداولها و أنماط الحقول إلى كتابة التوابع Functions بالاعتماد على خوارزميات سريعة للتعامل مع البيانات، فإنه يوجد عدة طرق لحل المكشلة.
    قبل الاعتماد على لارافل لم يكن يستخدم النماذج أصلا وكانت جداول قاعدة البيانات هي النماذج الأساسية وكان يتم كتابة استعلامات SQL مباشرة ضمن شيفرات PHP، وفيما بعد ظهر مفهوم PDO وأصبحت البرمجة غرضية التوجه في بناء الاستعلامات هي الأساس و مع ظهور لارافل أصبحنا نتعامل مع جدول البيانات بطريقة أفضل و أكثر تحكما و بالاعتماد على النماذج Models عن طريق Eloquent، والتي سهلت بناء و إدارة قواعد البينات بشكل كبير.
    إن استخدام النماذج كما في دورة الأكاديمية تعطينا أسلوب أفضل في التعامل مع الجداول حسب Active Records Pattern و 
    يعد Active Record حلاً جيدًا لمعالجة كيان واحد بطريقة CRUD - أي إنشاء كيان جديد بخصائص مسندة القيم ثم حفظه في قاعدة بيانات أو تحميل سجل من قاعدة بيانات أو حذفه.
    ميزات Eloquent مثل التحقق المتسخ dirty checking (لإرسال SQL UPDATE فقط للحقول التي تم تغييرها) ، ونموذج الأحداث model events (على سبيل المثال لإرسال التنبيهات الإدارية أو تحديث عدادات الإحصائيات عندما يقوم شخص ما بإنشاء حساب جديد) ،السمات traits (الطوابع الزمنية ، المحذوفات الناعمة ، سماتك المخصصة) (timestamps, soft deletes, your custom traits) التحميل الشغوف / البطيء eager/lazy loading إلخ بالإضافة لـ التحقق من صحة وإدارة العلاقات validation, managing relations.
    ولكن استخدام هذا الأسلوب يؤثر على أداء التطبيق (تطبيق متوسط لكبير الحجم وعدد زوار كبير) لأنه يقوم ببناء الكثير من الأغراض و حجز الذاكرة Ram أثناء التنفيذ.
    إن استخدام Laravel DB methods هو أفضل في مصفوفات البيانات ، للتقارير ، لمعالجة الدُفعات (datagrids, for reports, for batch processing) لأنها تتعامل مع بيانات كبيرة الحجم بأداء أفضل.
    نستخدم كلا الأسلوبين حتى لو في نفس التطبيق (المشروع) نميل لأحد الأسلوبين حسب فهمنا لكيفية التعامل مع البيانات و حجمها ومدى تأثيرها على الأداء.
  13. إجابة Wael Aljamal سؤال في إنشاء موقع كانت الإجابة المقبولة   
    تنقسم برمجة مواقع الويب إلى قسمين رئيسيين هما:
    تصميم الموقع Front-end أي ما يظهر للمستخدم برمجة الموقع Back-end أي عملية إدارة قواعد البيانات ومعالجة البيانات (قسم المخدم) تصميم المواقع يعتمد على التقنيات التالية:
    HTML: تستخدم لتحديد بنية صفحات الموقع و أقسامه بالشكل الأساسي
    CSS: تستخدم لعمل التنسيقات و ترتبط مع HTML
    JavaScript: هي لغة البرمجة التي تعمل على المتصفح و تستخدم بإدارة الواجهة (معالجة بيانات و تحريك العناصر)
    مكتبات وإطارات عمل مهمة لتصميم المواقع (مستوى متقدم):
    jQuery: مكتبة في لغة البرمجة JavaScript تسهل العمل.
    Bootstrap: إطار عمل CSS يسهل عمل التنسيقات.
    برمجة المواقع يعتمد على التقنيات التالية:
    أولا: قواعد البيانات ومنها: عليك تعلم SQL MySQL
    PostgreSQL
    MongoDB .. وغيرهم
    ثانيا: لغات البرمجة لمواقع الويب: PHP: ونستخدم معها إطار العمل Laravel
    JavaScript: ونستخدم معها إطار العمل Node.JS
    Python: ونستخدم معها إطار العمل Django
    الأساسيات المشتركة بين جميع مواقع الويب هي : HTML - CSS - JavaScript
    ثم تختار نوع قاعدة بيانات مع لغة برمجة مثلا MySQL + PHP.
    تعلم أولا الأساسيات وبعد تمكنك منهم يمكنك الانتقال لباقي التفاصيل و يسهل عليك الاختيار.
    سترى الطريق طويل لكن علينا التقدم خطوة بخطوة.
    يوجد لديك متطلبات إضافية مثل فريق عمل للمراجعة و إدارة الموقع و عليك حجز استضافات قوية و مساحات تخزين كبيرة نسبيا بحسب عدد مستخدمي المتوقع.
  14. إجابة Wael Aljamal سؤال في كتابة علاقات رياضية في ++c كانت الإجابة المقبولة   
    المكتبة المساعدة للعلاقات الرياضية في ++c هي :
    #include <cmath> دالة الجذر:
    cout << sqrt(X); دالة اللوغاريتم natural logarithm:
    cout << log(X); الدالة الأسية:
    pow(x, y) رفع قيمة لقوة 10^X exp(x)  
  15. إجابة Wael Aljamal سؤال في تصميم صوره على الفوتوشوب للطباعة على القماش كانت الإجابة المقبولة   
    للطباعة على القماش يتم تصدير الملفات بالطريقة CMYK، أما RGB يستخدم فقط للإعلانات التي تعرض على الشاشات.
     في حال كان اللون الأسود باهت يكون بسبب نوع الحبر أو عدم مناسبته لنوع القماش.
    قم بالبحث عن اسم المواد القماشية و أنواع الأحبار المستخدمة، أعتقد وجود دليل استخدام مع كل نوعية وهذا يضمن لك نتيجة أفضل.
  16. إجابة Wael Aljamal سؤال في كيف اقوم بعمل بذر للصور في الdb في laravel7 كانت الإجابة المقبولة   
    يوجد طريقتين:
    الأولى عن طريق الصنف faker المعرف مسبقا في لارافيل:
    <?php /* @var $factory \Illuminate\Database\Eloquent\Factory */ use App\Product; use Faker\Generator as Faker; $factory->define(Product::class, function (Faker $faker) { return [ 'name' => $faker->word, 'short_description' => $faker->sentence, 'description' => $faker->paragraph, 'category_id' => function () { return factory(App\Category::class)->create()->id; }, 'amount' => $faker->randomFloat(2, 0, 10000), 'image' => $faker->image('public/storage/images',640,480, null, false), ]; }); حيث كما نلاحظ أن السطر التالي هو الذي قام بتشكل الصور:
    'image' => $faker->image('public/storage/images',640,480, null, false), أو:
    $factory->define(Post::class, function (Faker $faker) { return [ 'image'=>'https://source.unsplash.com/random', ]; }); لإضافة أبعاد محددة للصور نضيف القيمة التالية للمسار  600*800/random/~
    الطريقة الثانية عن طريق استخدام الموقع lorempixel:
    <img src="http://lorempixel.com/400/200/sports/" /> هنا يمكنك عمل كود php بسيط يشكل أرقام عشوائية أو تسلسلية وحشر الروباط في قاعدة البيانات.
  17. إجابة Wael Aljamal سؤال في لماذا لا تعمل بعض تنسيقات CSS مع أنني كتبتها كانت الإجابة المقبولة   
    ربما تكمن المشكلة في أولوية التنسيقات، في حال كتابة محدد وصول عن طريق class في الجزء السفلي للملف و وجود تنسيق يعتمد على id في الجزء العلوي، فإن تنسيق id سيعطي تأثيره لأن له أولوية.
    احتمال آخر، هو تضمين عدة ملفات css و تضارب اسماء الصفوف و التنسيقات، في حال كان لديك عنصر تطبق عليه تنسيق يمكنك إضافة الكلمة المفتاحية important! ضمن نفس سطر الخاصية التي لا تظهر فيعطيها معالج css أولوية.
    مثال:
    <!DOCTYPE html> <html> <head> <style> #myid { background-color: blue; } .myclass { background-color: gray; } p { background-color: red !important; } </style> </head> <body> <p>This is some text in a paragraph.</p> <p class="myclass">This is some text in a paragraph.</p> <p id="myid">This is some text in a paragraph.</p> </body> </html> لاحظ النتيجة:

    بالرفم من أن محدد الوصول خلال الوسم p هو الأقل أهمية لكن إضافة important جلعت تنسيقه يطبق.
  18. إجابة Wael Aljamal سؤال في تحدث مشكلة عند استخدام ruby في مشاهدة ملفات الsass كانت الإجابة المقبولة   
    هل يمكنك استبدال \ ب / ضمن المسارات؟
  19. إجابة Wael Aljamal سؤال في هل يوجد شرط للعمر للتسجيل في الأكاديمية؟ كانت الإجابة المقبولة   
    إن أكاديمية حسوب تقدم دورات لجميع الطلاب المشتركين و الذين يرغبون بالتسجيل بدون أي شرط للعمر.
    يمكنك الإطلاع على المعلومات العامة لدورات حسوب من الأسئلة الشائعة,
    و لمعلومات الدورات من هنا: دورات تعليمية
  20. إجابة Wael Aljamal سؤال في هل محاكي الماك علي اجهزة الويندوز مناسب للبرمجة كانت الإجابة المقبولة   
    إن تشغيل نظام macOs عن طريق محاكي على نظام ويندوز هو أمر ممكن، مثلا تثبيته عن طريق VirtualBox لأنه اقل بيئة لاستهلاك الموارد (يوجد vm ware workstation)، وتكمن التوافقية في حال وجود معالج إنتل له معمارية 64x بت, لاحظت ذلك من عدة شروحات ولكن اعتقد يمكن ان يعمل بغير معالجات.
    بطبيعة الحال، ستتأثر سرعة النظام و المعالجة بالطبع مقارنة مع نظام ماك مثبت مباشرة على الجهاز، هذا يعتمد على جيل المعالج، حيث يفضل ان يكون حديث i7 و جيل 8 مثلا. ولكن الأهم هو الذاكرة RAM والتي يجب أن تكون كبيرة نسبيا حتى 16 غيغابايت ليعمل بكفائة ولا تتعرض لبطئ في التشغيل.
    يعتمد هذا على مواصفات جهازك وعليك تجريب الأمر لتحكم بنفسك.
    سيكون مناسبا للتعلم و برمجة التطبيقات
  21. إجابة Wael Aljamal سؤال في دور PROVIDERS_CHANGED في الأندرويد كانت الإجابة المقبولة   
    يعمل android.location.PROVIDERS_CHANGED كمستمع لأحداث تغير حالة مقدم خدمة الموقع، وتكون عادة خدمة GPS.
    عند تغيير حالة GPS بين تشغيل و إطفاء on / off فهذا يرسل Broadcast للخدمات Services التي تستقبل هذا الحدث.
    في حال لم يم إعطاء إذن الوصول لخدمة الموقع ربما يظهر رسائل خطأ.
    Manifest.XML <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ender.projects.receivertest"> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> حتى تعرف من هو التطبيق الذي يظهرها عليك ب Long press on the notification ضغطة طويلة على الإشعار ثم معلومات التطبيق.
    في حال يظهر لك رسالة خطأ فهذا ربما بسبب debug message من مطور أحد التطبيقات ونسي حذف هذه الجزئية من البرنامج ربما ظهرت من تطبيق قديم تم تحديثه أو بعد تثبيت تطبيق آخر (لإي حال أنت لست مطور إنما مستخدم عادي)
    مثال:
    نضيف مستمع لتغير الموقع: <receiver android:name=".GpsLocationReceiver"> <intent-filter> <action android:name="android.location.PROVIDERS_CHANGED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> و مستمع الأحداث: public class GpsLocationReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) { Toast.makeText(context, "in android.location.PROVIDERS_CHANGED", Toast.LENGTH_SHORT).show(); Intent pushIntent = new Intent(context, LocalService.class); context.startService(pushIntent); } } } لمعلومات أكثر : LocationManager و الشيفرة من : GitHub،
    توثيق مفصل من هنا: Broadcast receiver for GPS on android
  22. إجابة Wael Aljamal سؤال في نصحية لتطوير مهاراتي في التصميم كانت الإجابة المقبولة   
    مرحبا مجدداً،
    جمعت لك بعض الأسئلة السابقة التي تتكلم عن نفس المشكلة - قبول العروض في مستقل -
    رابط 1 - رابط 2 - رابط 3 - رابط 4
    ويوجد الكثير من النقاشات، كما يمكنك متابعة حلقات تقييم تصميمات الجمهور من مصممين مشهورين وستعرف في حال وجود نقاط ضعف لديك.
  23. إجابة Wael Aljamal سؤال في عدم عمل اندرويد ستيديو بعد التحديث لا استطيع الدخول أو فتحه كانت الإجابة المقبولة   
    مرحبا، 
    بعض الصور لا تظهر، وفي أي مرحلة يظهر الخطأ؟
    الحل: 
    اذهب لمسار تثبيت أندرويد استديو لديك، قد يكون مثل التالي:
    C:\Users\UserName\AppData\Roaming\Google\AndroidStudio4.1\plugins ثم قم بإعادة تسمية marketplace إلى الاسم :
    marketplace_back أعد تشغيل اندرويد استديو، في حال استمرار المشكلة، احذف المجلد marketplace.
    في المسار السابق، userName يدل على اسم المستخدم لديك قم باستبداله قبل وضعه في شربط العناوين، وفي حال لم تجد أحد المجلدات، أرجو عرض الملفات المخفية لديك، 
    اذهب لقائمة العرض view غي متصفح الملفات هو برنامج windows explorer الذي يعرض محتوى الملفات، وفي القائمة العلوية ابحث عن خيار لعرض الملفات المخفية.
    بالتوفيق
  24. إجابة Wael Aljamal سؤال في مشكلة مع الاضافة flutter_braintree كانت الإجابة المقبولة   
    هذه ليست تعليمة برمجية، ما قصدته هو من قائمة file في أندرويد استديو تختار invalidate Cahces/restart
    ليتم حذف الملفات المؤقتة من المشروع.
    ---------------
    حسب توصيات المكتبة و لعمل توافق بينها و بين gradle نصحو بالتالي:
    تحديد أقل نسخة تطوير ل 21 In /app/build.gradle, set your minSdkVersion to at least 21. و تحديد إصدار المكتبة dependencies: flutter_braintree: 0.6.0 قبل ذلك حاول حذف +1 من إصدار المكتبة.
    كل هذه مشاكل توافقية و علينا تجريب تغييرهم
  25. إجابة Wael Aljamal سؤال في ما هي التحديثات الجديدة لاصدار PHP 8 كانت الإجابة المقبولة   
    مرحبا،
    PHP 8.0 هو تحديث رئيسي للغة PHP.
    يحتوي على العديد من الميزات والتحسينات الجديدة بما في ذلك الوسائط المسماة named arguments ، وأنواع الاتحاد union types، والسمات attributes، وترويج خاصية المُنشئ constructor property promotion، وتعبير المطابقة match expression، وعامل nullsafe operator، و JIT الترجمة اللحظية للغة، والتحسينات في نظام أنماط البيانات Data Types، ومعالجة الأخطاء error handling، والاتساق consistency.
    Named arguments يمكننا تحديد الوسيط عن طريق اسمه حتى لو لم يكن بنفس ترتيب تعريفه في الدالة htmlspecialchars($string, double_encode: false); قديما كان يجب تمرير كل الوسطاء htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false); تغيير طريقة استخدام المسارات لتصبح بالشكل التالي:
    class PostsController { #[Route("/api/posts/{id}", methods: ["GET"])] public function get($id) { /* ... */ } } Constructor property promotion سمحت بتعريف خواص الصنف بدالخل دالة البناء :
    - بدل تعريفهم ثم اسناد قيمهم ..
    class Point { public function __construct( public float $x = 0.0, public float $y = 0.0, public float $z = 0.0, ) {} } match expression:
    أصبح نمط البيانات string لا يتم قصره إلى int بشكل تلقائي ..
    echo match (8.0) { '8.0' => "Oh no!", 8.0 => "This is what I expected", }; //> This is what I expected Nullsafe operator : اختصر وضع العديد من الشروط لإسناد قيمة للمتحول بوضع إشارة استفهام ؟
    $country = $session?->user?->getAddress()?->country; بدل $country = null; if ($session !== null) { $user = $session->user; if ($user !== null) { $address = $user->getAddress(); if ($address !== null) { $country = $address->country; } } } بالإضافة لدوال و أصناف جديدة يمكنك أن تجدهم عبر الرابط التالي: 
    تعديلات لغة البرمجة PHP 8
    بالتوفيق
×
×
  • أضف...