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

Wael Aljamal

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

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

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

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

    218

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

  1. إجابة Wael Aljamal سؤال في ما هو ال QR code & Ban Code Screen Rider فى react native ؟؟ كانت الإجابة المقبولة   
    إن كلا من QR code و Barcode هما عبارة عن تمثيل صوري/بصري للنص بشكل ترميز ثنائي 0 - 1 يمكن قرائته باستخدام الكاميرة بعد عمليات الفلترة و التدوير للصورة الملتقطة.
    في Barcode: الأعمدة السوداء تمثل 0 و الفراغات البيضاء تمثل 1 وبتتالي الأعمدة و الفرغات تتشكل سلسلة 0001111 أصفار وواحدات وبعد معالجتها يمكن استخراج منها أرقام و أحرف.. في QR code: يوجد مصفوفة مربعة نقطية حيث يمكن ملاحظة أن الرمز هذا مكون من مربعات صغيرة، وبنفس الفكرة السابقة لكل مربع صغير قيمة 0 أو 1 وتتم قرائته بشكل تسلسلي وتجميع هذه الأصفار و الواحدات ثم معالجتها لتركيب النصوص. لكل سلسلة نصية فريدة يمكن تشكل رمز فريد (لكل نص يوجد ترميز وحيد له) في حال الاعتماد على نفس الإصدار من هذه الرموز حيث أن QR code له عدة إصدارات مثلا.. كمبرمج يمكنك استخدام أحد المكتبات التي تستطيع التعامل مع هذا الرمز، من قراءة الصورة حتى تعيد النص المخزن في هذا الرمز.
    أحد المكتبات: react-native-qrcode-reader موجوة على github.
    يمكن أخذ ناتج قراءة الرمز من خلال الدالة: onSucess_
    _onSucess: function(result) { console.log(result); }, طبعا يوجد غيرها من المكتبات يمكنك تصفحهم و قراءة المزيات التي تقدمها كل منهم، ولكن أنت تريد استخلاص النص من أحد هذه الرموز بدون المرور بالتفاصيل..
    لتجريب توليد رمز QR code يوجد العديد من المواقع ابحث عن qr code generator وقم بتوليد نص ما ثم حاول قرائته من خلال الهاتف بأحد البرامج..

  2. إجابة Wael Aljamal سؤال في قراءة ملف في لغة بايثون كانت الإجابة المقبولة   
    نقوم في بايثون بفتح ملف للقراءة من خلال الدالة open، حيث نمرر الوسيط الأول مسار الملف، وفي الوسيط الثاني r للدلالة على read أي قراءة، وقمنا في المثال بتخزين مرجعية للملف المفتوح في المتغير f.
    ثم لقراءة محتوى الملف نطبق الدالة read على f
    f = open("D:\\path\to\file.txt", "r") print(f.read()) أما لقراءة الملف سطراً بسطر، يمكننا المرور عليه باستخدام حلقة:
    f = open("file.txt", "r") for x in f: print(x)  
    كما يمكن استخدام الدالة readline لقراءة سطر فقط، يمكن تكرارها ضمن حلقة لقراءة عدة أسطر..
  3. إجابة Wael Aljamal سؤال في الدالة البانية بدون وسطاء JAVA GUI كانت الإجابة المقبولة   
    public FirstGraphics() هي الدالة البانية للصنف 
    FirstGraphics حيث دائما، إسم الدالة البانية يطابق اسم الصنف الموافق لها.
    وهذه الدالة البانية هي بدون وسطاء صحيح، حيث لا يتم تمرير أي وسطاء دالخل أقواس هذه الدالة () وهي لا تقوم بإسناد قيم لخواص هذا الصنف.
    ولكن بما أنها ترث من الصنف JFrame، تم استدعاء الدالة super في الصنف الأب أي JFrame (دالة تستقبل نص لتعطي اسم للنافذة) وأيضا استدعاء الدوال setSize و setvisibel التي تم وراثتهم أيضا لتحديد أبعاد الإطار و الظهور ليتم عرضه.
    أرجو في المرة القادمة إرفاق الشيفرة بشكل نص (كود برمجي).
  4. إجابة Wael Aljamal سؤال في خطأ بسبب المعامل += في بايثون كانت الإجابة المقبولة   
    السبب في اختلاف الدالة التي يتم استدعائها، حيث أن =+ في مثالك:
    >>> f.bar += [3] تقوم باستدعاء __iadd__ التي تعدل f.bar الأصلية.
    أما:
    >>> f.bar = f.bar + [4] تقوم بإنشاء قائمة جديدة ثم إسنادها للمتغير حيث أنها تستدعي الدالة __add__
  5. إجابة Wael Aljamal سؤال في تطبيق شروط و حلقات مختصرة في بايثون كانت الإجابة المقبولة   
    نعم بالطبع تدعم بايثون هذه الطريقة مثل ternary operator لكن ترتيب الشروط فيها مختلف:
    a, b = 1, 2 min = a if a < b else b print(min) حيث نضع القيمة التي نريد إعادتها في حال تحقق الشرط، ثم الشرط وأخيرا القيمة الأخرى في حال لم يتحقق الشرط والشكل العام لها:
    [on_true] if [expression] else [on_false] كما يوجد عبارة مختصرة لكل من:
    a, b = 1, 2 # اختيارقيمة بناءاً على tuple # (if_test_false,if_test_true)[test] print( (b, a) [a < b] ) # أو القاموس print({True: a, False: b} [a < b]) بالنسبة لحلقة for المختصرة يوجد عدة أشكال عامة لها:
    for i in <collection> <loop body> _____________________ for <var> in <iterable>: <statement(s)> _____________________ مثال >>> a = [1, 2, 3] >>> for i in a: ... print(i) ... 1 2 3 حيث أدرجت مثال للمرور على قائمة بكل بساطة بدون أي تعقيدات.
    كما تعمل مع القواميس:
    >>> d = {'foo': 1, 'bar': 2, 'baz': 3} >>> for k in d: ... print(k) ... foo bar baz _____________________ >>> for k in d: ... print(d[k]) ... 1 2 3 كما يمكن المرور على قائمة من tuple :
    >>> i, j = (1, 2) >>> print(i, j) 1 2 >>> for i, j in [(1, 2), (3, 4), (5, 6)]: ... print(i, j) ... 1 2 3 4 5 6  
  6. إجابة Wael Aljamal سؤال في كيفية الوصول الى معلومات المستخدم مثل الدولة و اللغة عبر API كانت الإجابة المقبولة   
    لمعرفة الدولة، يمكن استخدام API مجاني:
    https://www.iplocate.io/api/lookup/8.8.8.8 ^^^^^^^ = IP وهذا يعيد JSON كالتالي:
    {"ip":"8.8.8.8","country":"United States","country_code":"US", "city":null,"continent":"North America","latitude":37.751,"longitude":-97.822, "time_zone":"America/Chicago", "postal_code":null,"org":"GOOGLE","asn":"AS15169","subdivision":null,"subdivision2":null} حيث يمكنك الوصول للدوالة من الخاصية country.
    $.getJSON('https://www.iplocate.io/api/lookup/8.8.8.8', function(json) { alert(json.country); }); lمثال آخر ipinfo واستخدامها في PHP:
    $ip = $_SERVER['REMOTE_ADDR']; $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); echo $details->country; // -> "US" لمعرفة اللغة، يمكن استخدام GeoIP كالتالي:
    if($country = geoip_country_code_by_name($host)) { switch($country) { case "DJ": case "ER": case "ET": $lang = "aa"; break; case "AE": case "BH": case "DZ": case "EG": case "IQ": case "JO": case "KW": case "LB": case "LY": case "MA": case "OM": case "QA": case "SA": case "SD": case "SY": case "TN": case "YE": $lang = "ar"; break; case "AZ": $lang = "az"; break; case "BY": $lang = "be"; break; case "BG": $lang = "bg"; break; case "BD": $lang = "bn"; break; case "BA": $lang = "bs"; break; case "CZ": $lang = "cs"; break; case "DK": $lang = "da"; break; case "AT": case "CH": case "DE": case "LU": $lang = "de"; break; case "MV": $lang = "dv"; break; case "BT": $lang = "dz"; break; case "GR": $lang = "el"; break; case "AG": case "AI": case "AQ": case "AS": case "AU": case "BB": case "BW": case "CA": case "GB": case "IE": case "KE": case "NG": case "NZ": case "PH": case "SG": case "US": case "ZA": case "ZM": case "ZW": $lang = "en"; break; case "AD": case "AR": case "BO": case "CL": case "CO": case "CR": case "CU": case "DO": case "EC": case "ES": case "GT": case "HN": case "MX": case "NI": case "PA": case "PE": case "PR": case "PY": case "SV": case "UY": case "VE": $lang = "es"; break; case "EE": $lang = "et"; break; case "IR": $lang = "fa"; break; case "FI": $lang = "fi"; break; case "FO": $lang = "fo"; break; case "BE": case "FR": case "SN": $lang = "fr"; break; case "IL": $lang = "he"; break; case "IN": $lang = "hi"; break; case "HR": $lang = "hr"; break; case "HT": $lang = "ht"; break; case "HU": $lang = "hu"; break; case "AM": $lang = "hy"; break; case "ID": $lang = "id"; break; case "IS": $lang = "is"; break; case "IT": $lang = "it"; break; case "JP": $lang = "ja"; break; case "GE": $lang = "ka"; break; case "KZ": $lang = "kk"; break; case "GL": $lang = "kl"; break; case "KH": $lang = "km"; break; case "KR": $lang = "ko"; break; case "KG": $lang = "ky"; break; case "UG": $lang = "lg"; break; case "LA": $lang = "lo"; break; case "LT": $lang = "lt"; break; case "LV": $lang = "lv"; break; case "MG": $lang = "mg"; break; case "MK": $lang = "mk"; break; case "MN": $lang = "mn"; break; case "MY": $lang = "ms"; break; case "MT": $lang = "mt"; break; case "MM": $lang = "my"; break; case "NP": $lang = "ne"; break; case "AW": case "NL": $lang = "nl"; break; case "NO": $lang = "no"; break; case "PL": $lang = "pl"; break; case "AF": $lang = "ps"; break; case "AO": case "BR": case "PT": $lang = "pt"; break; case "RO": $lang = "ro"; break; case "RU": case "UA": $lang = "ru"; break; case "RW": $lang = "rw"; break; case "AX": $lang = "se"; break; case "SK": $lang = "sk"; break; case "SI": $lang = "sl"; break; case "SO": $lang = "so"; break; case "AL": $lang = "sq"; break; case "ME": case "RS": $lang = "sr"; break; case "SE": $lang = "sv"; break; case "TZ": $lang = "sw"; break; case "LK": $lang = "ta"; break; case "TJ": $lang = "tg"; break; case "TH": $lang = "th"; break; case "TM": $lang = "tk"; break; case "CY": case "TR": $lang = "tr"; break; case "PK": $lang = "ur"; break; case "UZ": $lang = "uz"; break; case "VN": $lang = "vi"; break; case "CN": case "HK": case "TW": $lang = "zh"; break; default:break; } }  
  7. إجابة Wael Aljamal سؤال في أريد جلب الداتا من async storage واجلبها بنجاح واستطيع ان اعرضها فى ال console ولكن المشكلة اننى عندما اريد وضعها فى FlatList يظهرلى هذا الايرور كانت الإجابة المقبولة   
    أين تقوم بتخزين البيانات في storage
    هل يمكنك إرفاق المشروع كملف مضغوط لأتمكن من تجريبه وإصلاح الأخطاء؟ شكرا لك
  8. إجابة Wael Aljamal سؤال في كيف نعمل ونشغل مقطع من اليوتيوب على صفحة الويب كانت الإجابة المقبولة   
    لتشغيل فيديو يوتيوب، نقوم بعملية تضمين لشيفرة برمجية من رابط الفيديو الهدف تدعى الطريقة Embed videos.
    افتح فيديو اليوتيوب الذي تريده اضغط على مشاركة اضغط على تضمين أو Embed انسخ شيفرة HTML والصقها في موقعك مثال للشيفرة المنسوخة:
    <iframe width="560" height="315" src="https://www.youtube.com/embed/U3axpYKzyos" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe>  
  9. إجابة Wael Aljamal سؤال في مشكلة برمجية في أحد دروس الدورة كانت الإجابة المقبولة   
    مرحبا ثائر،
    يمكنك اتباع الشرح الموجود في هذا الرابط: كيف أتواصل مع المدرّبين 
    المهم طرح سؤال واضح مع إرفاق ما يدل على المشكلة بشكل واضح
  10. إجابة Wael Aljamal سؤال في كيف يمكن اضافة الوظائف التالية الي stack باستخدام c++? كانت الإجابة المقبولة   
    لمعرفة عدد العناصر ضمن المدس يكننا استدعاء التابع size للمكدس الذي تم تعريفه:
    // تعيف مكدس stack<int> mystack; // إضافة عناضر باستخدام push mystack.push(1); mystack.push(8); mystack.push(6); // أضفنا العناصر 1, 8, 6 cout << mystack.size(); // 3 ضمن المكدس، لايمكننا الوصول إلا للعنصر الذي في القمة (أعلى المكدس) باستخدام التابع top.
    لكي نقوم بحساب تكرار العناصر أو طباعة جميع العناصر، يتوجب علينا تفريغ المكدس لكي نستطيع المرور على جميع العناصر.
    ____
    تكرار العناصر، يتوجب بناء بنية معطيات تمكننا من عد العناصر، مثل مصفوفة أو Map:
    يمكن حساب التكرار للعناصر قبل إضافتها للمكدس، ويمكن كتابة دالة لإنقاض التكرارات بنفس الطريقة.
    #include<bits/stdc++.h> using namespace std; // حساب التكرارات map<int, int> freqMap; // أكثر تكرار int maxfreq = 0; // حساب التكرارات void push(int x) { // تكرار of x int freq = freqMap[x] + 1; freqMap[x]= freq; // تعديل التكرار if (freq > maxfreq) maxfreq = freq; } int main() { // إضافة العناصر للمكدس push(4); push(6); push(7); push(6); push(8); } لعرض عناصر المكدس بطريقة معكوسة حاول كتابة الشيفرة التالية:
    نقوم بتعريف مكدس مؤقت نفرغ المكدس الأول باستخدام التابع pop ونضيف العناصر للمكدس الثاني المؤقت أصبح المكدس الثاني يحوي العناصر نفسها لكن بترتيب مقلوب نفرغ المكدس الثاني باستخدام pop ونطبع العنصر و نضيفه للمكدس الأول الآن المكدس الأول يحوي نفس العناصر بنفس الترتيب الأصلي، المكدس المؤقت فارغ بدون تخريب البيانات.
  11. إجابة Wael Aljamal سؤال في مكتبة Pygame كيف استخدم الأمر pygame.key.get_pressed مع مفاتيح غير مفاتيح التحريك مثل مفتاح w او مفتاح s كانت الإجابة المقبولة   
    هذه الدالة pygame.key.get_pressed تعيد مصفوفة بوليانية بالمفاتيح التي تم الضغط عليها، للتأكد من أن الحرف w أو s قد تم الضغط عليه يمكن استخام الشرط بهذه الطريقة:
    if pygame.key.get_pressed()[K_w]: print('w is pressed') if pygame.key.get_pressed()[K_s]: print('s is pressed')  
  12. إجابة Wael Aljamal سؤال في flutter localization تثبيت اتجاه العرض RTL - LTR بغض النظر عن لغة الترجمة كانت الإجابة المقبولة   
    حاول تثبيت اتجاه العرض من خلال الخاصية : TextDirection.LTR في Directionality.
    child: Directionality( textDirection: TextDirection.LTR, تأكد من تضمين المكتبة:
    package:flutter/material.dart وليس المكتبة الجزئية: (ربما يتم تضمينها تلقائيا من المحرر وهذا يسبب مشكلة)
    textDirection وطبقها على العنصر الأب في الشاشة لديك
    MaterialApp( builder: (context, child) { return Directionality( textDirection: TextDirection.rtl, child: child, ); }, );  
  13. إجابة Wael Aljamal سؤال في الربح من المواقع كانت الإجابة المقبولة   
    بعد كتابة الشيفرات البرمجية للموقع، كتصميم واجهات أمامية Front End = HTML - CSS و لغة Back End مثلا PHP يتم نسخ الملفات لما يسمى استضافة، وهي حاسوب متصل على الشبكة، بعدها يمكن الدخول لرابط الموقع و تصفحه، طبعا يتم ربط الموقع عن طريق Domain وهو رابط URL.
    الربح من الموقع له أكثر من مصدر:
    إعلانات مثل Google Ads عضوية مدفوعة وسيط تجاري متجر الكتروني  وغيرهم.. نسبة الربح حسب عدد الزوار و نوع الدخل، لا يمكن حسابه.
  14. إجابة Wael Aljamal سؤال في كيفية عرض نص مساعد لعنصر ما في موقع ويب كانت الإجابة المقبولة   
    يمكن تحديد النص المساع لعنصر ما في HTML عن طريق title لأي عنصر مثلا:
    <!DOCTYPE html> <html> <body> <p title="أكاديمية حسوب">https://academy.hsoub.com</p> </body> </html>  
    أو ابحث عن CSS Tooltip
     
  15. إجابة Wael Aljamal سؤال في الاستعلام عن عدد الكورسات لكل طالب في قاعدة بيانات كانت الإجابة المقبولة   
    أرجو أن تبدأي بكتابة البرنامج و سنساعدك إن حصل معك أخطاء.
    يمكنك تقسم الاستعلام ل أجزاء:
    عبارة select تجلب عدد المواد الدراسية ويمكن عدهم بواسطة الدالة count from بعدها نحدد اسم الجدول نستخدم تعليمة التجميع group by ونمرر لها عمود في الجدول يميز الطالب لوحده عن غيره السؤال ليس صعب، يمكنك حله وسنساعدك في تعلم الحل.
  16. إجابة Wael Aljamal سؤال في اخفاء مكونات في صفحات معينة react router كانت الإجابة المقبولة   
    يمكن وضع شرط في بنية المكون تختبر المسار و عليه تقرر إما تظهر المكون أو تخفيه..
    import { withRouter } from 'react-router-dom'; const ComponentToHide = (props) => { const { location } = props; // نعيد قيمة فارغة إن لم نرد عرض المكون لهذا المسار // route-path المسار الذي نريد إخفاء المكون فيه if (location.pathname.match(/route-path/)){ return null; } return ( <ComponentToHideContent/> ) } const ComponentThatHides = withRouter(ComponentToHide); حيث نستطيع معرفة الرابط من خلال location ووضع شرط مناسب
  17. إجابة Wael Aljamal سؤال في كيفية تمييز الرسائل الجديدة عن المقروءة في الدردشة العامة لصفحة ويب كانت الإجابة المقبولة   
    توضيح للآلية:
    يمكن استخدام الدوال التالية، لإضافة وجلب Cookies:
    set cookie نمرر له اسم و قيمة و تاريخ الصلاحية ويقوم بإضافتها get cookie يبحث عن cookie موجودة لدينا ويجلبها check cookie يتأكد من صلاحيتها function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return "-1"; // أو فارغة } function checkCookie() { var user = getCookie("username"); if (user != "") { alert("Welcome again " + user); } else { user = prompt("Please enter your name:", ""); if (user != "" && user != null) { setCookie("username", user, 365); } } } خلال دورة جلب الرسائل، نجلب ID آخر رسالة مقروءة لدينا من خلال cookies وإن لم تكن موجودة نضع رقمها الافتراضي بقيمة أصغر من أي رسالة أخرى مثلا قيمة سالبة -1. ثم نقوم بعمل استعلام من قاعدة البيانات ونجلب الرسائل، ربما تكون بعض الرسائل قد قرأها المستخدم، لذلك نقارن بين معرفات الرسائل و نسند أصناف CSS مختلفة بين رسالة مقروءة و رسالة جديدة. الرسائل القديمة لها معرف أصغر من المعرف المحفوظ لدى المستخدم، أما الجديدة فأكبر لأن id تلقائي متزايد. seenId = getCookie("messageId"); messages = getAllMessages(); loop on messages as msg { if msg.id < seenId old message CSS else new message CSS seenId = msg.id // update تحديث } setCookie("messageId",seenId,365);// update تحديث  
  18. إجابة Wael Aljamal سؤال في كيفية انشاء pagination في mongodb كانت الإجابة المقبولة   
    عند عمل استعلام، يمكننا تخطي عدد من الصفحات باستخدام الدالة skip ويمكن أيضا تحديد عدد العناصر للصفحة باستخادم limit:
    مثال لجلب عدد من الطلاب وتقسيمهم في صفحات:
    function printStudents(pageNumber, nPerPage) { print( "Page: " + pageNumber ); db.students.find() .sort( { _id: 1 } ) .skip( pageNumber > 0 ? ( ( pageNumber - 1 ) * nPerPage ) : 0 ) .limit( nPerPage ) .forEach( student => { print( student.name ); } ); } pageNumber لعرض رقم الصفحة المطلوبة nPerPage عدد العناصر للصفحة الواحدة تم ترتيب الطلاب حسب المعرف الخاص بهم id. العلاقة الرياضية تحدد عدد السجلات التي سيتم تخطيها، رقم الصفحة مضروبا بعدد العناصر لصفحة واحدة
  19. إجابة Wael Aljamal سؤال في كيف أحصل على المسار الخاص بالبرنامج الحالي "Node.js" كانت الإجابة المقبولة   
    لعرض الملف الحالي يمكننا استخدام filename__ مباشرة:
    console.log(__filename); فهي module أي وحدة خاصة لذلك.
    أما لطباعة المسار فقط نستخدم dirname__:
    console.log(__dirname);  
  20. إجابة Wael Aljamal سؤال في كيف يمكنني الحصول على عنوان بروتوكول الإنترنت المحلي أثناء إستخدامي ل "Node.js" كانت الإجابة المقبولة   
    يمكن استخدام الحزمة ip مباشرة لعرض IP:
    var ip = require("ip"); console.dir ( ip.address() ); تم استخدام console.dir لطباعة جميع التفاصيل لعنوان IP.
    يمكن أيضا استخدام المكتية dns و os بالشكل التالي:
    require('dns').lookup(require('os').hostname(), function (err, add, fam) { console.log('addr: ' + add); }) حيث جلبنا hostname الذي يحوي IP.
    وطريقة أخرى باستخدام networkInterfaces
    var os = require('os'); var networkInterfaces = os.networkInterfaces(); console.log(networkInterfaces);  
  21. إجابة Wael Aljamal سؤال في كيف يمكن أنشاء واجهة دردشة متطورة للويب كانت الإجابة المقبولة   
    سأضيف قالب HTML + CSS يمكنك الاستفادة منه في عمل بنية لمنطقة الدردشة:
    HTML:
    <!-- الحاوي الرئيسية --> <div id="Thread"> <div id="Header"></div> <!-- قائمة عرض الرسائل --> <div id="MessageList"> <!-- رسائل --> <div class="message"> <p>Latest</p> </div> <div class="message"> <p>Older</p> </div> <div class="message"> <p>Oldest</p> </div> </div> <div id="Footer"></div> </div> ثم CSS:
    #Thread { background-color: mediumseagreen; display: flex; /* نطبق فليكس للحاوية */ flex-direction: column; overflow-y: hidden; height: 100vh; } #Header { height: 25px; background-color: blueviolet; } #MessageList { background-color: deepskyblue; height: 100%; display: flex; /* ونطبق فليكس للقائمة */ flex-direction: column-reverse; overflow-y: auto; } .message { background-color: white; padding: 4px; border: 1px solid #f9f9f9; font-size: 1rem; margin: 4px; } #Footer { height: 100px; background: red; } الملاحظة من الإجابة الأولى أن الحاوية لعنصر يجب أن نضيف لها display: flex; لكي تعمل
    يمكنك التعلم أكثر عن الخاصية Flex من توثيق أكاديمية حسوب من wiki.hsoub/CSS/flex
  22. إجابة Wael Aljamal سؤال في مشكلة في عمل الترجمة في Flutter - Translation كانت الإجابة المقبولة   
    تأكد من تطابق المفتاح الممرر لدالة translate مع ملفات الترجمة، ربما تقوم بتمرير المحتوى بشكل ديناميكي، فتم تمرير متغير فارغ.
    أو لم يتم الوصول لبيانات الترجمة بالأصل
  23. إجابة Wael Aljamal سؤال في مشكله في تنزيل visual studio code  على MacBook Air كانت الإجابة المقبولة   
    لفتح مجلد ما في vs code أرجو فتح محرر أوامر cmd/terminal ثم كتابة: . code 
    any/path> code . النقطة ضرورية، إن فتح المجلد فهذا يعني أن vs code مثبت.
    هذا بسبب التحديثات في البرنامج.
  24. إجابة Wael Aljamal سؤال في لا تعمل firebase phone بعد إنشاء ملف APK كانت الإجابة المقبولة   
    ربما قمت بعملية توقيع التطبيق مرتين، ونتج مفتاحين مختلفين، لعرض المفتاح الذي يعمل به التطبيق يمكنك تنفيذ التعليمة:
    keytool -list -v -alias key -keystore android/app/key.jks ثم وضع هذه القيمة في Firebase
    طبعا المسار هو مكان وضع المفتاح أي ملف key.jks
  25. إجابة Wael Aljamal سؤال في الانتقال من الاستضافة العاديه الى الفاير بيز كانت الإجابة المقبولة   
    حسنا استخدم حاليا firebase لايوجد مشكلة لأن أهم ميزة فيها هي real time database.
    التكاليف في فايربيز ترتفع مع ازدياد حجم المشروع، حاول الاشتراك بخدمة "ادفع حسب ما تستهلك" بدل الاشتراك الثابت..
    بشكل عام الموضوع بحاجة لدراسة عدد المشركين و حجم المشروع والتجريب.
     
×
×
  • أضف...