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

محمد المري2

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

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

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

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

    6

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

  1. إجابة محمد المري2 سؤال في كيف اضيف اللغة العربية إلى سكربت PHP؟ كانت الإجابة المقبولة   
    ليس لدي معرفه فيما تستخدمه .. ولا يمكنني ان اقوم بمساعدتك بهذه الطريقة. 
    ولكن سأفيدك بنقطة طالما ان السكربت الذي تستخدمه على PHP .. 
    في بعض الاحيان عندما يكون هنالك خطأ في PHP يعطي صفحة بيضاء وهذا الخطأ قد يكون خلل برمجي او ان هنالك تعارض بالمعطيات مع الدوال المستخدمة .. (شبيه بما حصل معك) ... 
    فلمعرفة ما اذا كان الخطأ يخص الـ PHP يجب عليك تفعيل ظهور اخطاء الـ PHP بإضافة هذا الكود : 
    <?php error_reporting(E_ALL); ini_set('display_errors', 1); ?> يمكن وضعه داخل ملف الـ PHP في أول سطر من الملف .. وحفظه ومعاودة محاولة اضافة اللغة من جديد وحفظها.. عندها إما ان تختفي الصفحة البيضاء وتظهر لك صفحة فيها اخطاء تخص PHP .. 
    إذا ظهرت لك الصفحة البيضاء, فالخطأ خارج نطاق الـ PHP .. وهو في مكان آخر, وستحتاج الى تحديد مصدره. 
  2. إجابة محمد المري2 سؤال في برمجة التطبيقات الهجين ام النيتف ؟ كانت الإجابة المقبولة   
    كبرمجة , الافضلية تعود للهجين وذلك لسبب ان المبرمج يكون لديه مصدر واحد يقوم ببرمجته والتطوير عليه متى اراد . 
    فمثلاً لو كان التطبيق متعدد المنصات (مثل iOS و Android) واراد المبرمج اضافة خاصية جديدة بالتطبيق. 
    لو كان التطبيق نيتف , سيتطلب من المبرمج اضافة الخاصية  الجديدة في كل منصة على حدة .. وهذا سيتطلب وقت وجهد وايضاً مهارات اضافية (لسبب ان المنصتين تختلف في برمجتها فهو يستخدم لغتين برمجة وليست واحدة) .. 
    اما لو كان التطبيق هجين , سيتطلب من المبرمج اضافة الخاصية الجديدة مرة واحدة فقط على المصدر الرئيسي للتطبيق , وسيتم تلقائياً اضافته الى المنصات الأخرى. 
     
    اما كاداء, 
    فالهجين ممكن ان يصل الى مستوى اداء النيتف ومن الممكن ان يتفوق عليه في بعض النواحي , وهذا يعتمد على المبرمج ومفهوميته في الاداء وتجربة المستخدم.
    أمور أخرى تفيدك , 
    التطبيق الهجين غالباً يكون الافضل كحل امثل لغالبية الاستخدامات , إلا استخدامات الالعاب. فالالعاب في التطبيقات الهجينة ليست كمستوى الالعاب بالنيتف. 
    ايضاً افضل انواع التطبيقات الهجينة هي التي تكون بدون بيئه ثانوية.. 
    اي انك تستخدم مباشرة الويب HTML, CSS, JavaScript وتستخدم الـ WebView داخل التطبيق ليتم عرض الصفحات عليها. وهذه الطريقة تكون يدوية بدون بيئه ثانوية (مثل Cordova. والسبب وراء هذا الامر هو في حال استخدامك لبيئة ثانوية يتوجب عليك دائماً ان تقوم بتحديث التطبيق بشكل مستمر على اخر تحديثات البيئة الثانوية. اما لو كان بشكل مباشر, فغالباً لاتحتاج الى اي تحديثات للتطبيق النيتف طالما ان ليس هنالك حاجة لاضافة خدمات جديدة (مثلاً كان التطبيق النيتف مفعل فيه خدمة Notifications فقط .. وبعد عدة اشهر تريد اضافة خدمة المواقع .. هنا يستلزم عليك اضافة الخدمة للتطبيق النيتف وتحديثه )
  3. إجابة محمد المري2 سؤال في هل اتقان لغة java يعني مبرمج اندرويد ؟ كانت الإجابة المقبولة   
    اتقان لغة الجافا لوحدها كافيه بأن تمكنك من إنشاء تطبيقات بالاندرويد واي برامج او تطبيقات اخرى يمكن عملها بالجافا (مثلاً برامج لانظمة اخرى). 
    ولكن في الاندرويد , قد تحتاج الى معرفة الـ XML وبعض اللغات الاخرى (مثل JavaScript و HTML و CSS) التي ستمكنك من وضع لمسات اضافية خاصة لكل تطبيق. 
    والاهم معرفة المكتبات الخاصة بالاندرويد وكيفية استعمالها .. لانك ستحتاج الى مثل تلك المهارات في بعض تطبيقات الاندرويد . 
     
    اما عن تعلمها, 
    فالجواب عليه يعتمد على سرعة الإستيعاب والفهم . 
    فحتى لو خصصت نصف يوم بشكل يومي , لايهم, المهم مقدار المعرفة واالمهارات التي اكتستبها خلال فترة تعلمك .. 
    فمن الممكن ان تتعلم وتقن مهارات بالجافا خلال شهر , بينما اخرين قد يتقنونها باكثر من ثلاثة اشهر ! 
     
  4. إجابة محمد المري2 سؤال في كيف يتم تصدير برنامج بصيغة exe؟ كانت الإجابة المقبولة   
    اذا كنت محتفظ بأي معلومات تسجيل دخول داخل البرنامج, فيجب عليك التخلص منها وإتخاذ طريقة اخرى لعملها. لان هذا يعتبر خطأ برمجي حاد, فأي شخص يستطيع الوصول لها بكل سهولة.
    لذلك مايتوجب عليك عمله هو اولاً ضبط طريقة الاتصال بالـ SQL Server وذلك عن طريق التعديل على ConnectionString للإتصال وجعله يعتمد على حساب المستخدم المسجل بالنظام Windows Account Login .. 
    والـ ConnectionString سيكون شبيه بالتالي : 
    connectionString="Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=True" فقط تقوم بتغيير الـ ServerName و DatabaseName .. وسيكون الاتصال بقواعد البيانات مبني على تصاريح حساب المستخدم الذي يستخدمه على النظام نفسه Windows .. 
    ومن الممكن ان يتم عمل متغيرات لها حتى يتمكن المستخدم من تغيير اسم ServerName و DatabaseName اذا كان سير عمل البرنامج يسمح بذلك. 
    اما عن معلومات تسجيل الدخول الاخرى او اي معلومات قد تكون حساسة , يجب عليك تشفيرها وعدم حفظها بدون تشفير, وجعل البرنامج يقرأها بالتشفير. 
    واذا كنت لاتعرف كيف ذلك, انصحك بالبحث والقراءة ثم تطبيقها على مشروع جديد (تجريبي) وعندما تكون جاهزة , يمكن تطبيقها على البرنامج وعمل التغييرات اللازمة لها. 
    يمكن ايضاً حفظها بملف اعدادات البرنامج Settings وذلك عن طريق الضغط على اسم المشروع الزر الايمن ثم اختيار Properties ثم الذهاب الى Settings .. 
    اذا لم يكن هنالك ملف اعدادات قم بإنشاءه (في Visual Studio سيكون هنالك رسالة لذلك عند فتح نافذة Settings فقط اضغط عليها وسيتم انشائها تلقائياً). 
    فائدة ملف الاعدادات هذا هو حفظ اي بيانات تمكن البرنامج من قرائتها باستمرار بما فيها معلومات الـ ConnectionString مثل DatabaseName و ServerName .. 
    ويمكن ايضاً حفظ معلومات الدخول فيها ولكن كما ذكرت ليست الحل الامثل لها ولكنها ستعمل خارج نطاق البرنامج. 
    ويمكن ايضاً وضع متغيرات بداخلها يقوم البرنامج بقرائتها او الحفظ فوقها في كل مره يعمل (مثل عدد مرات تشغيل البرنامج) ..
    اما بداخل البرنامج فيتم استدعائها عن طريق : 
    String someString = Properties.Settings.Default.MySavedSettingString; اما اذا كنت قد استخدمت خصائص DataSet و Data Models وقمت بإستيراد schema من الـ VisualStudio فالـ ConnectionString سيكون استدعائه مشابه للمثال الآتي : 
    String db = ConfigurationManager.ConnectionStrings["ProjectName.Properties.Settings.db"].ConnectionString;  
    اتمنى ان تكون الامور اوضح الآن
  5. إجابة محمد المري2 سؤال في تصميم واجهة تطبيق اندرويد تفاعلية كانت الإجابة المقبولة   
    بيئة الأندرويد تفي بالغرض
    اما الـ unity بالإمكان تضمينها داخل بيئة عمل الاندرويد ولكنك لن تحتاجها إلا عند تصميم الألعاب التي تتطلب هذه البيئة. 
  6. إجابة محمد المري2 سؤال في برمجة بعض الميزات باستخدام PHP كانت الإجابة المقبولة   
    والله مابعرف اذا باللحق اجاوب على كامل السؤال او لا .. 
    انت بالمختصر عندك موقع للأكلات بشكل عام , 
    ومتطلباتك مختلفه وتختلف التقنيات المستخدمة فيها كذلك. 
    فمثلاً صفحة اضافة الأكلات , 
    هذا من الممكن برمجته من خلال Javascript و PHP.
    ستقوم بإستخدام الجافاسكربت في التحكم بالتغييرات الديناميكية في واجهة المستخدم. 
    مثلاً, قام المستخدم بإختيار اكلة من القائمة, سيظهر له حقلين جديدة بشكل تلقائي وبدون تحديث للصفحة. 
    مثل هذه التغييرات الديناميكية يمكن عملها بالجافا سكربت, 
    اما الـ PHP فلا يتميز بها. فلذلك غالباً مايتم استخدام التقنيتن معاً لهذا السبب. 
    وهذا ايضاً يدخل في موضوع البحث وإظهار قائمة المقترحات وقت البحث (هذا ايضاً بالجافا سكربت).
    بالنسبة لقواعد البيانات, 
    إذا كانت قاعدة بيانات الأكل والأسعار , وقاعدة بيانات البيانات والتصنيفات منفصلة عن بعضها البعض, 
    فأنصحك بإعادة بناء قاعدة بيانات جديدة تضم القاعدتين, وتكون فيها الجداول مرتبه بحسب نوعها. 
    مثلاً, جدول للأكل والأسعار. جدول للبيانات , جدول للتصنيفات ... الخ. 
    الفكرة هي عمل قاعدة بيانات بشجرة مرتبه ومرتبطه بعضها ببعض. وهذا سيسهل عليك عملية البحث والربط والاضافة والتعديل .. الخ. 
    ولا أنصح ابداً بإكمال العمل على قواعد بيانات منفصلة بهذه الطريقة. فمثلاً لو كانت مفصولة, لن يمكنك الاستفادة من الذكاء الاصطناعي لسبب انه لايمكنه الوصول الى كامل المعلومات اللازمة لبناء معلومات حول أكلة معينة سواء كان بنوعها او بسعرها او حتى بشعبيتها وغيرها من طرق التحليل. 
    اما بالنسبة للـ Google Sheets, 
    فبإمكانك اضافتها الى قواعد البيانات وهنالك طرق مختلفه لذلك.  ولكن اسهلها هي استخدام ملفات CVS , فقواعد البيانات تقرأ ملفات CVS وبإمكانك تصدير Google Sheets الى CVS ومن ثم استيرادها من داخل قواعد البيانات. ولكن لابد أن تكون الجداول والصفوف والأعمدة بنفس ترتيب جدولها الموجود داخل قاعدة البيانات.
    اما عن برنامج يقترح عليك الاكل المناسب من قاعدة البيانات , 
    هذا ممكن ولكن تحتاج الى استخدام ذكاء اصطناعي, هنالك الكثير من المواقع تقدمه بشكل مجاني (مفتوح المصدر). فقط ابحث عنه وستجده. 

    -كيف ممكن ابرمج نظام الخانات يعني انو دائما يشوف شو الاكلة الي خترتها واذا الها اضافات يعملي خانات جنبها واذا لا ما يعمل ... وكيف فيني حدد الاضافات لكل اكلة ؟؟
    بالنسبة لرؤية الأكلة او ظهورها بشكل عام بالصفحة, فهذا يعتمد على طريقتك بإظهارها. 
    الـ PHP سيكون كافي لإظهارها, ولكن كما ذكرت سابقاً ستحتاج الى التقنيات الديناميكية للتحكم بتنسيق الصفحة بشكل عام مثل HTML, CSS, Javascript.
    اما تحديد الاضافات لكل اكلة, فهذه فائدة قواعد البيانات الموحدة, يمكنك ربط كل اضافة بالرقم التعريفي للأكلة في قواعد البيانات ومن ثم قرائتها من الـ PHP. ولا يمنع من استخدام بعض Queries المساعدة لنتائج افضل.

    - كيف ممكن اربط التصنيفات تبع الاكل مع الاكل بقاعدة البيانات (نوع كل اكلة  .... مع العلم لدي فقط 5 انواع)؟ 
    كما ذكرت تقوم بإعطاء رقم تعريفي ID مميز لكل تصنيف داخل جدول التصنيفات. ومن ثم تقوم بإضافة عمود جديد مثلا تقوم بتسميته الصنف وتقوم بربطه بمفتاح اجنبي foreign key في جدول الأكلات وتقوم بإضافة الرقم التعريفي للتصنيف لكل اكل عبر استخدام داخل هذا العمود. 
    مثال : 
    رقم الأكلة      العنوان         الوصف           الصنف
    وبكل الاحوال لماذا تقوم ببرمجتها من الصفر بينما هنالك برامج جاهزة مفتوحة المصدر ومجانية وقابلة للتخصيص كيفما تريد وتقوم بتخصيصها والتعديل عليها قدر حاجتك لكسب الوقت والجهد ؟ 
    مثل WooCommerce على سبيل المثال. متخصص بالتسويق الالكتروني, ولكن يمكن تخصيصه الى متجر أكلات. 
    ان شاء الله اني وفقت بالاجابة
  7. إجابة محمد المري2 سؤال في كيفية عرض رسالة تنبيهية في المتصفح؟ كانت الإجابة المقبولة   
    لم يسبق لي أن تعاملت مع sweetalert2 ولكن من خلال الكود الذي وضعته, يظهر ان سبب التأخير في ظهور نافذة التحذير هي دالة setTimeout()
    في الجافا سكربت الـ setTimeout يقوم بتأخير الأمر بحسب الوقت المعطى له ويحسب الوقت بالجزء من الثانية . وفي الكود المدرج أنت قد وضعت 1000 جزء من الثانية وهذا يساوي 1 ثانية.
    أي ان التحذير سيقوم بالإنتظار لمدة ثانية واحدة قبل أن يظهر. فلو قمت بتغييرها من 1000 جزء من الثانية إلى 0 سيظهر التنبيه بشكل مباشر كما هو موضح بالمثال التالي :
    echo '<script type="text/javascript">'; echo 'setTimeout(function () { swal("title!","message!","error");}, 0);'; echo '</script>';  
     
  8. إجابة محمد المري2 سؤال في شرح لي بطريقة مبسطة Sin & Cos & Tan واهميتها في برمجة الالعاب كانت الإجابة المقبولة   
    وضيفتها بالبرمجة بشكل مبسط هي حساب المسافة بين نقطتين او اكثر عن طريق استخدام علم المثلثات الهندسي (يعرف في الرياضيات بعلم المثلثات).
    يستفاد منها في برمجة الألعاب لحسبة المسافة لأي نقطتين حتى يتم معرفة قياس الحركات الفيزيائية الصحيحة لها. 
    مثال مبسط : 
    لو أخذنا لعبة بسيطة مثل لعبة Pong - تنس الطاولة - (احد الالعاب القديمة).
    صورة للعبة : 

     
    اللعبة عبارة عن كورة ومضربين موزعة على مضرب لكل جهة. وتصميم اللعبة ثنائي الأبعاد 2D اي انك ستحتاج إلى :
    حساب المسافة بين المضربين  حساب مساحة الطاولة حساب حجم المضرب  هذه ثلاث معطيات تمكنك من استخدام الفيزياء لمعرفة التواقيت والإتجاهات والحركات اللازمة لتحريك الكرة من النقطة أ إلى النقطة ب .
    فمثلاً لو تم ضرب الكرة من النقطة أ إلى النقطة ب. وتم صدها بالمضرب في النقطة ب. فالطريقة الواقعية هي ان الكرة ستقوم بالإرتداد بالإتجاه المعاكس. وهنا سيتوجب عليك معرفة قوة الدفع (السرعة) المناسبة عند صد الكرة والإتجاه الفيزيائي الصحيح الذي يجب ان تسلكة الكرة (الإرتداد). 
     وهذا تقديره يكون بعلم المثلثات والذي من خلاله ستعرف : 
    نقطة ملامسة الكرة بالمضرب الإتجاة المعاكس عند ارتداد الكرة   
    هذا بشكل مبسط وهو اكثر عمق كتفاصيل حركية وهندسية .. ولكن حاولت أن اعطيك مبدأ بسيط عنها.
     
  9. إجابة محمد المري2 سؤال في كود استراجاع قاعدة البيانات أين الخطأ؟ SQL SERVER كانت الإجابة المقبولة   
    الخطأ عندك في strQuary
    لن يتم تنفيذ إلا آخر أمر  
    لأنك فقط قمت بإعادة تعيين المتغير strQuary ثلاث مرات دون تنفيذها. فقط سيتم تنفيذ آخر تعيين تم وهو : 
    "ALTER DATABASE service_station SET MULTI_USER WITH ROLLBACK IMMEDIATE"
    ليتم حل المشكلة يجب ان يتم تنفيذ كل امر بعد كل عملية تعيين للمتغير. 
    فتضيف cmd.ExecuteNonQuery بعد كل امر SQL. ولكن ستحتاج إلى أن تقوم بتعديل عملية تعريف SqlCommand ويتم التعريف مباشرة بعد تعريف الـ SqlConnection وايضاً تحتاج إلى جعل تعريف متغيرات ال string في بداية الدالة (فوق ال SqlConnection) .
    كما هو موضح لك بهذه الصورة : 
     
    إذا كنت ستستخدم الـ sqlconnection و sqlcommand بشكل متكرر أنصحك بجعلها دوال functions أو حتى Class حتى تتفادى التكرار وايضاً تختصر الجهد والوقت. 
    انظر الى هذا المثال (جعلها كدالة): 

     وحين تطبيقها على دالتك : 

     
    لن نحتاج إلى تعريف الاتصال إلا مرة واحدة, والإتصال سيفتح مع بداية دالة SQLCmd ويغلق تلقائياً بعد تنفيذ أمر الإستعلام SQL.      
×
×
  • أضف...