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

Wael Aljamal

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

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

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

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

    218

كل منشورات العضو Wael Aljamal

  1. يمكننا تنفيذ تعليمات سطر الأوامر من خلال بروتوكول الاتصال SSH. تتم العملية عن طريق CMD في حاسوب المبرمج و يكتب الأوامر داخله مباشرة ولكنها تتنفذ على الحاسوب البعيد. يوجد برامج سطح مكتب مساعدة مثل: PuTTY وهو برنامج بسيط نضع فيه بعض الإعدادات مثل عنوان IP الجهاز البعيد و رقم المنفذ PORT وغيرهم. يمكنك البحث أكثر عن بروتوكول SSH و متابعة شروحات وكيفية استخدامه، أرجو الانتباه أن الأوامر التي نكتبها بعد الاتصال بسطح المكتب البعيد/المخدم ستكون بأوامر نظام التشغيل الخاص به (أوامر المكتبات والبرمجيات تقريبا موحدة بين معظم الأنظمة). وأخيرا يجب أن يكون SSH مثبا في المخدم ليتم الاتصال وهذا الأمر مرتبط بالاستضافة.
  2. الجزء الأول من الحل، كيفية الوصول لخصائص غرض في بايثون: في بايثون، يوجد خصائص افتراضية للأغراض من أصل اللغة و خصائص يقوم المستخدم (مستخدم اللغة - المبرمج) بتعريفها. يمكن الوصول لخصائص غرض بالدالة التالية: dir(obj) والتي ستعيد جميع الخصائص: ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bar', 'foo', 'func'] يمكنك الملاحظة أن الخصائص الافتراضية attributes تبدأ و تنتهي ب __ لذلك يمكننا فصلهم بسهولة عن طريقا الاسم: >>> [a for a in dir(obj) if not a.startswith('__')] ['bar', 'foo', 'func'] سنعيد قائمة بأسماء الخواص التي عرفها المستخدم (لن يكتب المستخدم خاصية تبدأ ب __ ). لإعادة الخاصيات بدون الدوال نستعمل: >>> [a for a in dir(obj) if not a.startswith('__') and not callable(getattr(obj, a))] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ الجزء الثاني ويحوي المثال: ليكن لدينا شيفرة التلميذ التالية: class Student: id = 1 f_name = '' l_name = 'aljamal' age = 18 def get_attr(self): return [a for a in dir(self) if not a.startswith('__') and not callable(getattr(self, a))] def print_attr(self): print(self.get_attr()) def print_attr_with_value(self): for attr in self.get_attr(): print("attr: " + attr + "\t value: " + str(getattr(self, attr))) def new_person(self): for attr in self.get_attr(): value = getattr(self, attr) if isinstance(value, str) and value == '': print("attrbut is missed, please Enter: " + attr) #self[attr] = input() setattr(self, attr, input()) else: print(attr + "\t is: " + str(getattr(self, attr))) s1 = Student() s1.print_attr() s1.new_person() s1.print_attr_with_value() قمت بتعريف صنف طالب student وفيه الدوال التالية: get_attr تعيد قائمة بالخصائص print_attr تطبع الخصائص print_attr_with_value تطبع الخصاصية مع القيمة new_person تسمح للمستخدم بإدخال قيمة خاصية نصية فارغة بعض الدوال المساعدة المستخدمة: getattr تقرأ قيمة الخاصية للغرض setattr تقوم بإسناد قيمة للخاصية isinstance للتأكد من نمط خاصية ما للغرض هذا هو حل السؤال كما فهمته أنا وأرجو أن يكون كما تريدين، في حال وجود أسئلة عن الشيفرة يمكنك طرح أسئلة إضافية، أرجو قرائتها بتمعن.
  3. سنحاول تطبيق بعض الأوامر لحل المشكلة التي سببها تضارب بين commit في المستودع المحلي و commits في المستودع البعيد: سنقوم بإعادة تهيئة المستودع، تأكد من إصدار git: git --version المجموعة الثالثة، في حال git حديثة (على الأغلب هو الذي ستنفذه) git pull --rebase git push git pull --rebase origin main git push origin main # Git 2.6+ git config --global pull.rebase true git config --global rebase.autoStash true الأن نعمل commit وندفع التغييرات: # add and commit first git commit -m "solve github problem: failed to push some refs to remote" git push -u origin main _________ حل آخر: (دفع التعديلات المحلية بقوة للمستودع البعيد والأخذ بالتعديلات المحلية) git push -f origin main _________ عمل فرع جديد (اختر اسمه كما تريد ضمن التعليمة التالة) ثم ندفع التغييرات له git branch -m new-name git push -u new-name استبدل new-name
  4. أعتقد أن المشكلة في عدم توافق بين حزمتين من المحملات أو plugins (تضارب في إصدار المكتبات) و خطأ في أحد الملفات. أرجو إرفاق ملفات المشروع بشكل مضغوط (بدون node_moulde إن أمكن) و سنحاول إرشادك لمكان المشكلة بالضبط و العمل على حلها. شكرا
  5. إن هذا الجزء من رسالة الخطأ غير مفيد، بل يوجد قبله رسالة طويلة تشرح أين جاءت هذه الأخطاء الستة. أرجو نسخ كامل رسالة الخطأ وتعديل السؤال و إزالة الصورة
  6. هذه المشكلة من مخدمات حزم البرمجة الخاصة ب composer يمكن حلها باستخدام: composer self-update --snapshot أو تنفيذ: $ composer config -g repo.packagist composer https://packagist.org $ composer config -g github-protocols https ssh لضبط إعادادت التحميل
  7. JDK هي Java development kit خاصة بلغة جافا و هي ضرورية لعمل تطبيقات اندرويد. يمكن الحصول عليها إما بتثبيت لغة جافا و تحمل JDK من الموقع الرسمي أو من خلال إضافة جافا الموجودة مع برنامج اندرويد استديو لمتغيرات البيئة. يمكنك ملاحظة أنني قمت بإضافة مسارات جافا لمتغيرات البيئة لكي يتعرف عليها نظام التشغيل. في الجزء الأوسط من الصورة لاحظي أيضا إضافة JAVA_HOME مع المسار ليتم التعرف عليها أيضا. اي عملية تثبيتها مثل اي مكتبة او لغة برمجة.
  8. إن كنت في بداية التعلم، لايجب عليك الاستعادنة بالمساعدة في حل المشاكل البسيطة بل أشجعك من الآن بالبحث عن الحلول و التعلم: قراءة دخل المستخدم: نستعمل الدالة input طباعة أي شيئ: نستخدم print تعريف صنف مع متغير محلي، ثم دالتين بالكلمة المفتاحية def ونمرر self للدوال لنستطيع الوصول للمتغير id الخاص بالكائن. للتجريب، نعرف كائن من الصنف و نستدعي عليه الدوال.. حاول التجريب بنفسك قبل رؤية الحل: . . class Student: id = 0 def read_id(self): self.id = input() def show_id(self): print(self.id) s1 = Student() s1.show_id() # 0 s1.read_id() s1.show_id()
  9. يوجد نسخة من لغة جافا يتم تثبيتها مع البرنامج يمكنك إيجادها ضمن المسار: C:\Program Files\Android\Android Studio 4.2\jre مكان تثبيتك ل android studio يمكنك تحديدها ليعمل بها. لتحديد مكان التثبيت اتبعي الخطوات التالية في واجهة التطبيق: Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK في حال لم تعمل (التطبيق لا يعمل أو حدث مشكلة)، هنا عليك إضافة لغة جافا لمتغيرات البيئة في ويندوز: في قائمة start نبحث عن edit-system-environment ثم نضيف مسار jre ضمن مسار تثبيت أندرويد استديو لمتغيرات البيئة
  10. أرجو الانتباه أن هذه العملية تمت في السطر: student1 = Student('Sameh', 'Ashraf')
  11. هل تمت إضافة android studio لقائمة ابدأ؟
  12. لايوجد مشكلة هنا يعطي تلميح (إخطار) بوجود بعض الملفات من sdk حيث سيقوم بتحديث و تحميل ماينقصه. أرجو متابعة التثبيت بالنقر على next.
  13. والله ماجربت استرجاع بيانات، وإن احتمال إعادتهم شبه معدم، الريكوفري يمحى بعد الفورمات. ننتظر إجلابة من باقِ الزملاء أو أحد مر بتجربه مماثلة..
  14. مرحبا حنان، أرجو في المرات القادمة نسخ رسالة الخطأ ووضعها مع السؤال. شكرا لكٍ حتى عندما يبحث أشخاص آخرين عن حل للمشكلة تظهر لهم نتائج البحث من موقع الأكاديمية و يتابعون حل مشكلتهم
  15. هذا لا يحدث أي فرق، يتم تخزين الملفات بنفس الطريقة مهما كان وسيط النقل. هذا الأمر سيقص احتمال بقاء الملفا لديك، اعتبر القرص الصلب مساحة فارغة، تملأها بالبيانات، عند حذف ملف ما، يتم تحديد مساحته على أنها ليست مستعملة بدون تغيير البيانات الفعلية في هذه المنطقة (يمكن استعادته)، إنما في حالة قام مدير الملفات بكتابة بيانات جديدة في نفس منطقة الملف القديمة سوف تستبدل البيانات القديمة و تصبح البيانات الجديدة التابعة لملف آخر هي المتواجدة (لا يمكن استعادته). لمحاولة إرجاع ملف من القرص، عليك استخدام أحد برامج استعادة الملفات file recovery مثل: EaseUS Data Recovery Wizard Recuva أو غيرهم بالبحث عن Data Recovery Software مثلا
  16. هل يمكنك تعديل بادئة الصفحة لتصبح بالشكل التالي: <?php
  17. مرحبا اسماعيل، إن هذه تحذيرات بسبب إصدار Sass وليست مشكلة! يمكنك المتابعة. هي توصية باستخدام دالة القسمة بدل إشارة القسمة وأن هذا التعديل سيصبح إجباريا في إصدار SASS 2: math.div ( X , y)
  18. @محمد المصري5 المشكلة في مخدم PHP لديك. تأكد من تشغيل المخدم وأنه يعمل بصورة طبيعية مثلا شيفرة PHP لطباعة جمله بسيطة <?php echo '<h1> Hi Mohammad </h1>'; حاول تشغيل هذا الملف مثلا. حتى يعمل مخدم XAMP يجب وضع شيفرات PHP ضمن المجلد الخاص ضمن مسار المخدم C:\xampp\htdocs أو WAMPP في مجلد WWW.
  19. بعد تجريب المشروع ظهر الخطأ: throw new Error('Dialect needs to be explicitly supplied as of v4.0.0'); وبعد البحث في غوغل تبين أنه مشكلة متعلقة بإعدادات الاتصال. عدت للمشروع و لم أجد ملف env. أرجو التفكير بحل المشكلة قبل رؤية الحل. ___________ ينقص المشروع ملف الإعدادات الخاص بالبيئة والذي هو: .env أرجو إنشاء هذا الملف في المشروع ثم ستجدين ملف .env-sample يحوي مثال لإعدادات البيئة التي وضعها مطور التطبيق، يمكنك نسخهم للملف الأول ومن ثم تشغيل التطبيق و سيتم الاتصال.
  20. هل يمكنك استبدال شيفرة PHP مؤقتا بالتالي: <? include("../includes/db.php"); //db connection $action = $_POST['action']; //تعريف متغير التنفيذ switch ($action){ case 'delete': $id = $_POST['id']; $sql_statement = "DELETE FROM `supplier` WHERE id=$id"; echo $sql_statement; $result = $conn->query($sql_statement); if ($result == true) { echo "done"; } else{ echo "Errormessage: %s\n". $conn->error; } break; default: echo "done"; } و في دالة sucsess أرجو وضع console مباشرة قبل اختبار البيانات لنتأكد من الخرج: success: function(data) { console.log(data); if (data == "done") { location.reload(); } else { console.log(data); } } ثم أرجو إرفاق صورة ل console
  21. يمكننا عمل overload للدالة console.log أي جعلها تقوم بعمل مختلف، فنحدد الملف الذي سوف تكتب به المخرجات خاصتها و نغير قناة الكتابة من الشاشة إلى ملف: // مدير ملفات var fs = require('fs'); // أدوات var util = require('util'); // تعريف ملف للكتابة فيه الأخطاء var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'}); // إسناد قناة الخرج var log_stdout = process.stdout; // overload للدالة console.log = function(d) { // log_file.write(util.format(d) + '\n'); log_stdout.write(util.format(d) + '\n'); };
  22. ولكن أين التعديل؟ لماذا طبع كامل محتوى الصفحة! نريد عمل طباعة فقط لعبارة SQL ولا أرى أنك وضع التعديل $sql_statement = "DELETE FROM `supplier` WHERE id=$id"; echo $sql_statement;
  23. لنعرف إن كان يتم تمرير العبارة بشكل صحيح وأن قيمة id تصل بالقيمة التي نريدها يمكننا طباعة عبارة SQL قبل تنفيذها: $id = $_POST['id']; $sql_statement = "DELETE FROM `supplier` WHERE id=$id"; echo $sql_statement; //... $result = $conn->query("DELETE FROM `supplier` WHERE id='$id'"); ولنعمل على طباعة إجابة السيرفر مهما تكن في حالة sucsess: success: function(data) { console.log(data); وراقب console
  24. في شيفرة PHP: $result = $conn->query("DELETE FROM `supplier` WHERE id='$id'"); ^ ^ => $result = $conn->query("DELETE FROM `supplier` WHERE id=$id"); أو $result = $conn->query("DELETE FROM `supplier` WHERE id=" . $id); إن وضع متغير ضمن اقتباس أحادي يأخذ ماداخله كنص، أما في حالة الاقتباس الثائي سيعمل على استبدال القيمة الموافقة للمتغير
×
×
  • أضف...