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

محمد ربيع زليول

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

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

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

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

    18

كل منشورات العضو محمد ربيع زليول

  1. نعم جانب الخادم سيحتوي على الواجهة البرمجية فقط API، وتطبيق الجوال يتم رفعه على متاجر التطبيقات ( جوجل بلاي، آبل ستور ). غير متأكد من الموضوع لكني أعتقد أن السيناريو كالتالي: عند إنشاء حساب مطور على جوجل يجب توصيل الحساب بالبطاقة البنكية. بعد إنتهاء الشهر في حالة: كان الرصيد الإجمالي أكبر من الحد المجاني الأقصى ( أعتقد 200$ ) لن يتم الإقتطاع في حال الرصيد الإجمالي أكبر من الحد المجاني الأقصى سيتم اقتطاع المبلغ من البطاقة في الغالب إحدى الخدمات التالية: Mobile Native Dynamic Maps Dynamic Maps
  2. كما أخبر الأخ وائل، لا يوجد سعر محدد لإستخدام خرائط جوجل، تعتمد خرائط جوحل على نضام Pay-as-you-go pricing في التسعير بحيث أن التكلفة مرتبطة بعدد الطلبات التي تقوم بها ونوعيتها ولا يوجد أي اشتراك شهري أو سنوي، ولأقرب الموضوع سأذكر لك المتغيرات التالية التي تأثر في التكلفة: عدد الطلبات التي سترسلها إلى خادم جوجل: يقوم بجوجل بوضع تسعيرة معينة لكل طلب، فمثلًا لنقل أن كل طلب ب 1$، اذا تم ارسال 100 طلب ستكون التكلفة 100دولار واذا أرسلت 1000 ستكون التكلفة 1000 دولار وهكذا ( هذا مثال فقط، أغلى طلب تساوي قيمته 0.02 دولار، أما بقية الطلبات فثمنها 0.002 أو 0.007 ) نوعية الطلبات التي ستقوم بإرسالها: يحتوي جوجل على مجموعة من الخدمات، مثلًا: الخرائط الثابتة Static Maps: وهي خدمة تقدم لك خريطة ثابتة على شكل صورة يمكن أن تضعها في <img /> في HTML مثلًا. الخرائط الدينامكية Dynamic Maps: وهي خدمة تمكن من عرض خرائط ديناميكية، يمكن التفاعل معها، عن تكبير تصغير الخريطة، تغير شكلها .. الإتجاهات Directions API: وتستطيع من خلالها طلب معلومات عن طريقة التوجه من نقطة معينة إلى أخرى. Distance Matrix : تمكن من حساب مسافة بين نقطتين أو مجموعة من النقاط. Places في حالة كنت تريد أن تقوم بعمل Autocomplete للبحث عن مكان أو عنوان ما. ... فهذه الأنواع وغيرها لكل منها سعر لكل طلب، بحيث ان سعر الخرائط الثابتة مثلًا هو 0.002 دولار لكل طلب، بينما سعر الخرائط الدينامكية هو 0.007 دولار لكل طلب. أود أن أذكر أيضًا أن جوجل تقدم استخدامًا مجانيًا، أعتقد أنه يساوي 200 دولار شهريًا ( غير متأكد من الرقم )، في حالة لم تصل إلى هذا الرقم لا يقوم النظام بقطع أي مبالغ، لكن عندما تفوق التكلفة هذا الرقم يقوم النظام بإقتطاع المبلغ المستهلك. بالنسبة لمشروعك ستستخدم في الغالب Dynamic Maps لعرض الخرائط، وأماكن الأشخاص كحد أدنى. ويمكن أن تزيد بعض الخدمات الأخرى على حسب طلب العميل، كالإتجاهات أو البحث عن الاماكن وهكذا. هذه الرابط يحتوي على كافة التفاصيل المتعلقة بالتسعير. PRICING
  3. أعتقد أن المحرر يعمل بشكل صحيح، هذا هو دوره، فهو في النهاية يقوم بتحويل النص المكتوب به وتنسيقاته إلى أكواد HTML. ما يجب عليك ان تقوم به هو التالي: بدل طباعة المحتوى بالشكل العادي كما تقوم بطباعته حاليًا ( على شكل نص string )، يجب عليك أن تقوم بعمل render لهذا النص وتحويله إلى HTML. سأقدم لك حلين للقيام بهذا: الحل الأول: عن طريق إستخدام الخاصية dangerouslySetInnerHTML. لنقل مثلًا أن الخاصية أو المتغير الذي يحتوي على هذه الأكواد التي أرسلها المحرر هو content. بدل كتابة الكود أسفله لعرض المحتوى: <div> {content} </div> يجب كتابة كود مشابه للكود التالي: <div dangerouslySetInnerHTML={{__html: content}} /> الحل الثاني: يمكنك إستخدام بعض المكتبات التي تقوم بنفس الدور ( تحويل html على شكل نص string إلى عناصر HTML )، أذكر كمثال مكتبة html-react-parser التي يمكنك تثبيتها في مشروعك عن طريق الأمر: npm i html-react-parser ثم إستخدامه بالشكل التالي: import parse from 'html-react-parser'; ثم: <div> {parse(content)} </div>
  4. المرجو مشاركة الكود الكامل ( الجزء الذي استخدمت فيه محرر tiny )، والطريقة التي اشتغلت بها لإستخدام محرر tiny. في الرابط التالي ستجد طريقة إستخدام محرر tiny مع تطبيق React، لا أعلم إن كنت قد استخدمت نفس الطريقة أم أنك اشتغلت بطريقة أخرى. أحتاج توضيحات أكثر حتى أستطيع مساعدتك، أيضًا أحتاج فهم ما الذي تقصده بإرسال المحتوى؟
  5. يمكنك التطبيق عن طريق تقليد بعض المشاريع، أو متابعة دروس تشرح إنشاء مشاريع عن طريق لغة جافا سكربت. أو كما يمكنك متابعة محاولة حل المسائل البرمجية بهذه المواقع، وبعد كم سؤال ستفهم قواعد حل المسائل وستبدأ بإنجازها، أود الإشارة لأن المسائل بهذه المواقع تختلف صعوبتها، هناك مسائل سهلة وأخرى متوسطة الصعوبة ومسائل متقدمة.
  6. لا اعرف صراحة مستواك البرمجي، في حالة كانت هذه هي بداياتك في جافاسكربت، أنصحك بتعلم الأساسيات من خلال الفيديوهات أو المقالات أولًا. وفي حالة كان مستواك متوسطًا، يمكنك متابعة حل هذه المسائل البرمجية في هذا الموقع أو غيره، بعد كم مسألة ستتعلم قواعد وطريقة حل هذا النوع من المسائل.
  7. المشكلة هي أنك قمت بتحميل create-react-app بشكل global عن طريق الأمر التالي: npm install -g create-react-app هذا الأمر يقوم بتحميل نسخة إلى حاسوبك ويستخدمها عندما تقوم بكتابة أمر create-react-app، النسخة التي قمت بتحميلها سابقًا غير حديثة outdated. أنصحك بحذفه عن طريق الأمر التالي: npm uninstall -g create-react-app ثم بعد ذلك يمكنك إستخدام الأمر التالي لإنشاء المشروع: npx create-react-app my-app مع تغير my-app لإسم تطبيقك.
  8. أعتقد أن السبب الرئيسي هو أنك غير متعود على الطريقة التي تطرح بها الأسئلة في هذا النوع من المواقع. التحديات بهذه المواقع دائمًا تحتوي على هذه الأمور الثلاث: نص المشكلة: وهو نص يشرح الإشكالية التي نحاول حلها في السؤال. المدخلات: وهي المتغيرات التي يقدمها لك الموقع في البداية والتي عليك أن تقوم بإستخدامها للوصول للنتيجة، وغالبًا ستجدها في معاملات الدالة. المخرج: هي القيمة التي عليك إرجاعها في آخر السؤال، وهي حل السؤال. وستجد ضمن النص بعض القيود، أو الأمثلة التي تشرح أو تساعدك للوصول إلى الحل. هذه الأسئلة التي تقوم بحلها الآن هي أسئلة تشرح الأساسيات فقط، من جهة تعلمك طريقة التعامل مع الموقع وهذه التحديات، ومن جهة أخرى تشرح لك بعض أساسيات جافاسكربت. في السؤال السابق مثلًا، كان الهذف هو تعلم طريقة إرجاع قيمة من الدالة، وفي السؤال الحالي شرح المعامل && في جافا سكربت. إذا رجعنا للسؤال السابق سنجد أن: نص المشكلة: يتحدث عن الوصول للقيمة القصوى لضلع الثالث للمثلث. المدخلات: هي side1 و side2 وهي طول ضلعين من المثلث، ونجدها أيضًا في معاملات الدالة: function nextEdge(side1, side2) { } المخرج: هو طول الضلع الثالث وهو القيمة التي علينا الوصول إليها وإرجاعها في النهاية: return (side1 + side2) - 1 كما نجد بعض الملاحظات التي شرحت لنا طريقة إرجاع حساب طول الأقصى للضلع الثالث بالإضافة للأشياء التي علينا القيام بها.
  9. يطلب السؤال حساب الطول الأقصى للضلع الثالث للمثلث. أي أنه يقوم بتقديم طول ضلعين من المثلث، وأنت عليك حساب أقصى طول ممكن للضلغ الثالث. السؤال قدم العلاقة التي يمكنك من خلالها حساب هذا الطول، وهي كالتالي: (side1 + side2) - 1 وما يطلبه السؤال هو بإكمال الدالة التالية بحيث، تقوم بتطبيق العلاقة وإرجاع القيمة: function nextEdge(side1, side2) { } المتغير side1 هو طول الضلع الأول. والمتغير side2 هو طول الضلع الثاني. ولنطبق العلاقة سنقوم بجمع الضلعين وإنقاص 1: function nextEdge(side1, side2) { (side1 + side2) - 1 } ثم بعد ذلك علينا إضافة return لإرجاع قيمة هذه المعادلة: function nextEdge(side1, side2) { return (side1 + side2) - 1 } للحصول على معلومات أكبر عن معادلة حساب طول الضلع الأقصى، وحساب طول الأدنى، يمكنك مشاهدة هذا الفيديو. وعلى العموم العلاقة كالتالي: إذا اعتبرنا أن side1 هو طول الضلع الأول، وأن side2 هو طول الضلع الثاني، وأن side2 أكبر من side1. فطول الضلع الثالث side3 دائمًا سيكون محصورًا بين القيمتين: القيمة الأدنى: side2 - side1 القيمة القصوى side2 + side1 بالشكل التالي: side2 - side1 < side3 < side1 + side2
  10. كما أخبرك الأخ @عبود سمير، يمكنك مراسلة الدعم الفني من خلال الرابط التالي: مركز المساعدة، إفتح تذكرة، وقم بطرح مشكلتك، وسيقوم فريق الدعم بمساعدتك في أقرب وقت ممكن.
  11. مرحبًا حسام، بعد شرائك للدورة، ستظهر لك القائمة العلوية بالشكل التالي: يجب عليك الضغط على دوراتي، وستظهر لك قائمة بالدورات. بعدها إختيار الدورة التي قمت بالتسجيل بها، وبدأ دراسة المسارات. أتمنى لك التوفيق.
  12. يجب التحقق من ترتيب المعقوفات والأقواس، هل جميعها مغلق بالشكل الصحيح.
  13. يمكن وضع هذه الأكواد داخل الكود المسؤول على عملية الضغط على زر الإضافة Ajouter btn_Ajouter.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // يجب وضعه هنا } }); بالشكل التالي مثلًا: btn_Ajouter.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // يجب وضعه هنا if(textField_1.getText().equals("") || textField_2.getText().equals("") || textField_3.getText().equals("") || textField_4.getText().equals("")){ return; } try { Integer.parseInt(textField_1.getText()); } catch(NumberFormatException ex) { if(textField_1.getText().length() != 1) { return; } } String Tache = textField_1.getText(); try { Integer.parseInt(textField_3.getText()); } catch(NumberFormatException ex) { if(textField_3.getText().length() != 1) { return; } } String Precedent = textField_3.getText(); try { Float.parseFloat(textField_2.getText()); String Duree = textField_2.getText(); } catch(NumberFormatException ex) { // إضهار رسالة خطأ return; } try { Float.parseFloat(textField_4.getText()); String Cout = textField_4.getText(); } catch(NumberFormatException ex) { // إضهار رسالة خطأ return; } String[] userInfo = { Tache, Duree, Precedent, Cout }; model.addRow( userInfo ); } });
  14. لجعل الخانة JTextField تقبل نوعًا معينًا فقط، يمكن التحقق أن القيمة الموجودة بهذه الخانة قابلة لتحويل لهذا النوع. مثلًا في حالة أردنا التحقق من أن JTextField تحتوي على رقم سنقوم بكتابة الكود التالي: try { int Tache = parseInt(textField_1.getText()); } catch(NumberFormatException ex) { // إضهار رسالة خطأ } بنفس الطريقة يمكن التحقق من أن الخانة تحتوي على قيمة من نوع float هكذا: try { int Tache = Float.parseFloat(textField_2.getText()); } catch(NumberFormatException ex) { // إظهار رسالة خطأ } أما بالنسبة للتحقق من أن الخانة JTextField تحتوي على حرف واحد فقط كالتالي: if(textField_1.getText().length() == 1) { String Tache = textField_1.getText(); } else { // إظهار رسالة خطأ }
  15. من خلال قاعدة المعرفة، سؤال كيف أعدّل معلومات الخدمة مثل العنوان، الوصف، الصورة، نجد أنه يمكنك تعديل جميع معلومات الخدمة إلا معلومتين وهما: عنوان الخدمة. تصنيف /قسم الخدمة. كما نجد أنه يمكن تعديل تطويرات الخدمة ووصفها، أي انه يمكن تعديل سعر الخدمة المقدم لكن هناك ملاحظة في آخر الصفحة وهي كالتالي: إذن من خلال المعلومات السابقة، يمكن تعديل أسعار الخدمات التطويرية ووصف الخدمة وغيرها من المعلومات، لكن لا يمكن تعديل العنوان، كما يجب أن يضل العنوان مطابقًا لمحتوى الخدمة. على العموم، يمكنك دائمًا التواصل مع فريق الدعم من خلال مركز مساعدة حسوب، يمكنك فتح تذكرة، وشرح المشكلة وسيقوم فريق الدعم بالتواصل معك في أقرب وقت.
  16. أنت الآن قد قمت بإستضافة مدونتك في موقع Wordpress.com، لا يجب عليك إضافة إستضافة أخرى، يمكنك تشغيل المدونة من خلال موقع Wordpress.com مباشرة.
  17. من خلال الموقع الرسمي للووردبريس، نجد التالي: إذن يمكن إسترداد مالك ما دام أنه لم يمر 30 يومًا على إشتراكك في الخطة، ويمكن إسترجاع المال المتعلق بتسجيل إسم النطاق إن لم تمر مدة 96 ساعة. يمكنك إلغاء عملية الشراء من خلال صفحة إدارة عمليات الشراء. يمكنك الإطلاع على التفاصيل الكاملة من خلال الصفحة التالية: إدارة عمليات الشراء وعمليات التجديد وعمليات الإلغاء.
  18. SQL هي اختصارٌ للعبارة Structured Query Language (أي لغة الاستعلام البنوية)، وهي اللغة المستخدمة لإجراء عمليات على قواعد البيانات، لا يمكن إستخدام SQL مباشرة، بل يجب الإعتماد على إحدى أنظمة معالجة قواعد البيانات وهي التالية: MySql PostgresSql Oracle SQLite SQL Server لكل نظام طريقة تحميل مختلفة: نظام Mysql يمكن تحميله من الموقع الرسمي من الرابط التالي. نظام PostgresSql يمكن تحميله من الموقع الرسمي من الرابط التالي. نظام Oracle يمكن تحميله من الموقع الرسمي من الرابط التالي. نظام SQLite يمكن تحميله من الموقع الرسمي من الرابط التالي. نظام SQL Server يمكن تحميله من الموقع الرسمي من الرابط التالي.
  19. في حالة حصلت معك المشكلة عند ثتبيت مكتبة react-navigation، يجب عليك تحميل هذه الإعتماديات dependencies : expo install react-native-gesture-handler react-native-reanimated react-native-screens react-native-safe-area-context @react-native-community/masked-view في حالة كنت قد قمت بالفعل بثتبيت هذه الإعتماديات، اتبع الخطوات التالية: أغلق جميع الطرفيات terminals المرتبة ب expo قم بحذف ملف package-lock.json قم بحذف مجلد node_modules ثم قم بكتابة الأمر npm install وتشغيل expo عن طريق الأمر expo start -c
  20. لصناعة قوالب ووردبريس، ستحتاج ستحتاج للغات HTML , CSS , JAVASCRIPT بالإضافة للغة PHP.
  21. يمكنك تحميل Python من الموقع الرسمي للبرنامج، وهذا رابط الإصدار 3.8.5. إن واجهت أي مشاكل أثناء التحميل والتثبيت المرجو إرفاق صورة للمشكلة، لنستطيع المساعدتك.
  22. المرجو توضيح السؤال، ما الذي تقصده بمسارات العمل؟
  23. غالبًا لا نقوم بإخبار المستخدم أن إسم المستخدم صحيح وكلمة السر، أشياء متعلقة بالحماية، لكن إذا أردت القيام بها فالطريقة كالتالي: أولًا تقوم بالبحث عن مستخدم في قاعدة البيانات عن مستخدم لديه الإسم المدخل في فورم تسجيل الدخول هكذا مثلًا: $stmt = $con->prepare("SELECT * from users WHERE username_users = ? limit 1"); // قمت بالبحث بإسم المستخدم فقط $stmt->execute(array($user)); // قمت بالبحث بإسم المستخدم فقط $row = $stmt->fetch(); $count = $stmt->rowcount(); الكود التالي يرجع القيمة 1 إذا كان هناك مستخدم بهذا الإسم والقيمة 0 إذا لم يكون هناك إي مستخدم بهذا الإسم. إذن في حالة كانت القيمة 0 سنقوم بعرض رسالة الخطأ: if ($count == 0 ) { echo "Username is wrong"; } else { // باقي الكود } وفي حالة كانت قيمة count تساوي 1، سنقوم بالتحقق من أن كلمة السر التي أدخلها المستخدم مطابقة لكلمة السر في قاعدة البيانات، في حالة لم تكن مطابقة سنعرض رسالة خطأ في حالة كنت متطابقة نقوم بالإنتقال لصفحة admin.php أو index.php if ($count == 0 ) { echo "Username is wrong"; } else { if($hashpass != $row['password_users']) { echo "Password is wrong"; // نقوم بعرض رسالة الباسورد خاطئ } else { // نقوم بتسجيل الدخول والإنتقال للصفحات $_SESSION['username'] = $user ; $_SESSION['id'] = $row['id_users']; $_SESSION['types'] = $row['types_users']; if($_SESSION['types'] == 2 || $_SESSION['types'] == 3){ header('location: index.php'); } if($_SESSION['types'] == 0 || $_SESSION['types'] == 1){ header('location: admin.php'); } } }
  24. مرحبًا حفصة، يمكنك التواصل مع فريق الدعم من خلال الرابط التالي: مركز المساعدة، قم بفتح تذكرة وسيوم الفريق بالتواصل معك في أقرب وقت. شكرًا لك
×
×
  • أضف...