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

Wael Aljamal

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

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

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

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

    218

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

  1. إن لم تغير في الشيفرة، هل غيرت في البيانات المرسلة؟ نعم صحيح، بنفس الطريقة
  2. المدربون متواجدون على مدار الساعة ويتم التنسيق بينهم لتقديم الإجابة بأسرع وقت. يتم في أول الأقسام تقديم معلومات بسيطة، ثم مع كل مشروع يتم إضافة مفاهيم جديدة تناسب العمل مع المشروع، لأنه حتى لو تعلمت 1000 خاصية/فكرة لن تستفيد حتى بناء مشروع حقيقي وتوظيف هذه المفاهيم مع العلم مع تقدمك في فهم البرمجية ستبدأ تلاحظ كيفية عمل المطلوب بالشكل الأبسط والأسهل.
  3. يمكنك التواصل مع مركز مساعدة حسوب وإخبارهم بالتفاصيل. مع العلم أنه معك وقت بالتعلم في الدورة حتى بعد إنتهائك من التعلم في الدورة وحصولك على الشهادة ب 6 أشهر لإلغاء الاشتراك إن لم يتم قبولك بعمل واستطعت تحقيق أرباح. يمكنك قراءة الأسئلة الشائعة في قسم الشهادات المتخصصة. عليك التحلي بالصبر، بالتوفيق في مسار بناء واجهة مستخدم تشبه موقع YouTube في مسار تطوير متجر الكتروني git يتم شرحها لتعليم كيفية رفع مشروع على مستودع github وهي ليست مسار منفصل. Bootstrap يتم تطبيقه في عدة مشاريع.
  4. حاول طباعة خصائص الكائن $request
  5. يمكن إعطاء رتبة لكل سطر من الاستعلام باستخدام دالة ()RANK في SQL فهي تعيد ترقيم تصاعدي بدءاً من 1 ولأعلى لكل سطر حسب شرط الترتيب. وتعتبر هذه الدالة من دوال النافذة window function وتعمل مع دالة OVER لتحديد المجالات الجزئية للترقيم وعلاقة الترتيب. لعمل ترقيم شامل لكل الموظفين حسب ترتيب الراتب، لن نقوم بعمل تجزئة للبيانات، أي بدون PARTITION سوف نمرر لدالة OVER علاقة الترتيب حسب الراتب فقط: SELECT *, RANK() OVER (ORDER BY salary) salary_rank FROM employees; والنتيجة: أما لعمل ترتيب جزئي حسب كل قسم، علينا تجزئة البيانات باستخدام PARTITION مع تمرير رقم القسم ثم علاقة الترتيب: لاحظ التجزئة حسب رقم الفرع: SELECT *, RANK() OVER ( PARTITION BY department_id ORDER BY salary ) salary_rank FROM employees والنتيجة:
  6. يمكن التأكد من أن المتغير ليس فارغ لتنجب وضع %% وراء بعضهم se_var_val = "_" if str(self.se_var.get()) != "" se_var_val = str(self.se_var.get()) str(self.se_by.get())+" LIKE " + '%' + se_var_val + '%')
  7. أين بحثت عن قوالب؟ لأنني وجدت العديد لكن لم أجربهم.. يمكنك توظيف مبرمج من خلال مشروع على موقع مستقل أو البحث عن خدمة إنشاء قالب على موقع خمسات أو شراء قالب تم تقديم خدمته فعلياً على المنصة.
  8. هل تأكدت من حفظ الملف بعد التعديل؟ اعتقد أن الخطا بسبب تداخل علامات الاقتباس حاول تجزئة العبارة بطريقة صحيحة
  9. حاول تعديل السطر كالتالي: str(self.se_by.get())+" LIKE '%'"+ str(self.se_var.get())+"'%'") أو: str(self.se_by.get())+" LIKE " + '%' + str(self.se_var.get())+ '%')
  10. يمكن حل المشكلة مؤقتاً باستعمال أحد أدوات VPN بهذا يتم تجنب حظر IP حسب الدولة التي تتصل منها. لمعرفة نوع الخطأ المتعلق بالمصادقة يمكنك الاطلاع على السؤال: الأخطاء من نوع 4xx هي أخطاء من طرف المستخدم إما لم يرسل بيانات مصادقة، أو بياناته خاطئة أو ممنوع من الوصول بالأساس من الخدمة
  11. بافتراض أن خدمة API service التي تعتمد عليها في مشروعك ويتصل تطبيق لارافل عليها محظورة في بلدك (بلد المطور) ولا تستطيع طلب الخدمات بدون VPN أثناء التطوير بسبب IP جهازك حالياً، فهذا الأمر بسبب البلد، أي بعد رفع المشروع على استضافة لدولة غير محظورة من هذه الشركة سيتصل تطبيق لارافل من استضافتك على الخدمة بدون مشكلة. تطبيق لارافل يتعمد على نظام التشغيل في إدارة الاتصال مع الشبكة، فهذا الموضوع غير متعلق بالمشروع نفسه. الكلام السابق صحيح حسب وصفك للمشكلة، حيث أن المستخدم العادي لايطلب الخدمة بشكل مباشر من بلد محظور.
  12. تقسم توابع النافذة window functions في SQL إلى 3 أقسام. توابع التجميع Aggregate functions مثل: COUNT AVG SUM MAX MIN توابع التصنيف أو الترتيب Ranking functions مثل: RANK ROW_NUMBER DENSE_RANK. توابع التحليل Analytic functions مثل: FIRST_VALUE LAST_VALUE LEAD LAG بشكل عام، تعمل توابع التجميع على إعادة قيمة واحدة كنتاتج معالجة قيم عمود ما، وعند استخدامها مع الدالة OVER مع عمل تقسيم الناتج لأجزاء أي نوافذ، يصبح عمل توابع التجميع بشكل مختلف حيث تعيد قيمة لكل مجموعة أسطر حسب التقسيم: إقراء عن دوال النوافذ في: دوال النافذة Window Functions:
  13. تستخدم الدالة OVER لانتقاء الأسطر من ناتج الاستعلام التي نريد تطبيق عليهم دالة معينة (دالة تجميع aggregation function)، وتفيد في عمل ترتيب أو حسابات عليهم، من خلال تقسيمهم إلى أجزاء partitions ولذلك تستخدم مع window functions. الشكل العام لها: <function> OVER ( [PARTITION BY clause] [ORDER BY clause] [ROWS or RANGE clause]) حيث نمرر لها غلاقة clause نحدد فيها الأسطر المستهدفة. في حال لم يتم تمرير غلاقة يكون استعلام على كامل الجدول في حال تم تمرير عبارة التقسيم يتم تطبيق العملية على الأسطر / السجلات المختارة مثلا يمكن جلب إجمالي أرباح شركة ثم حساب المجموع الجزئي حسب الفرع بعمل تقسيم حسب الدولة SELECT year, country, product, -- المنتج profit, -- ربح النتج SUM(profit) OVER() AS total_profit, -- ربح إجمالي يجمع الأرباح SUM(profit) OVER(PARTITION BY country) AS country_profit -- تقسيم الربح حسب الدوالة FROM sales ORDER BY country, year, product, profit; والنتيجة: أصبح باستطاعتنا تحديد ربح منتج الحاسوب بالنسبة لأرباح فرع فنلندا الإجمالية مثلا.. 1500/1610 في سنة 2000 مثال آخر، حساب قيم أعمدة جدول من خلال عمل حسابات جزئية على ناتج الاستعلام، في مدرسة نريد عمل تحليل حسب متوسط العمر و عدد الطلاب والنتائج يتم فرزهم حسب الجنس. SELECT id, name, gender, -- عدد الطلاب حسب الجنس COUNT(gender) OVER (PARTITION BY gender) AS Total_students, -- متسوط العمر حسب الجنس AVG(age) OVER (PARTITION BY gender) AS Average_Age, -- مجموع الدخل حسب الجنس SUM(total_score) OVER (PARTITION BY gender) AS Total_Score FROM student والنتائج:
  14. يوجد معماريتين لأنظمة التشغيل الخاصة بالحواسيب والهواتف وهي 32 بت و 64 بت. إن كان ipad حاصتك حديث وله نظام تشغيل أحدث من 10.3 فعليك تعديل إعدادات مشروعك لدعم تشغيله على 64 بت. هنا يجب تحديد targets an iOS حديث. نحتاج دعم 64-bit architecture تعديل Architectures build setting إلى Standard Architectures support the 64-bit runtime environment وإلا فالمشكلة بسبب توقف دعم أنظمة ios لتطبيقات 32 بت، تأكد أن ipad خاصتك من ضمن قائمة 64 بت: iOS devices are 64-bit: iPhone 5s/SE/6/6s/7 iPad Air and iPad Air 2 iPad mini 2, iPad mini 3 and iPad mini 4 Sixth-generation iPod touch 12.9-inch iPad Pro and 9.7-inch iPad Pro 9.7-inch iPad (2017) كان نظام iOS 10.3 آخر من يدعم تطبيقات 32 بت. حاول عمل التوافقية لدعم الإصدارات الأقدم: minimum iOS version as 10.0 or 10.2 or 10.3.
  15. ضمن ملف android/build.gradle في المشروع الخاص ب android حاولي تعديل الاعتمادية: classpath 'com.android.tools.build:gradle:3.5.0' إلى classpath 'com.android.tools.build:gradle:3.4.2' أو classpath 'com.android.tools.build:gradle:3.5.3' إن لم تحل المشكلة، نقرأ السطر التالي من الخطأ ndk-bundle did not have a source.properties file أي يحتاج المشروع لتحديد ndk-bundle وهذا يتم في ملف build.gradle بإضافة السطر android { ndkVersion '22.0.7026061' } أو بالشكل: android{ defaultConfig { ndkVersion = "22.0.7026061" } } لوجود نقص في هذه الحزمة. إن لم يكن ndk-bundle لديك موجود في مسار SDK حيث أن إصداره لديك يمكن نسخ اسم المجلد الخاص به على الأغلب المسار لديك مختلف تأكدي من ذلك C:\SDK\ndk\22.0.7026061 ^^^^^^^^^^^^ هنا يتوجب عليك تحميله من SDK manager إما من خلال android studio أو من خلال كتابة الأمر: sdkmanager --install "ndk;22.1.7171670" هنا يتوجب تنفيذ الأمر في cmd من خلال مجلد tools/bit أما أندريو استديو:
  16. بشكل عام هي حسب الاستعلامات لديك والحقول في الجدول، لنفرض أنك تقوم باستعلام يبحث عن العمر و رقم الهاتف فنقوم بعمل فهرسة مزدوجة أي فهرس لحقلين معاً. فإذا كان لديك استعلام بالشكل التالي: SELECT * FROM USERS WHERE age > 17 AND phone = xxxxxxxxx سيكون الفهرس المناسب بهذا الشكل، مثال: Create Index My_IndexName On TableName_USERS (phone Asc, age Asc) فنقوم بإنشاء فهرس لأكثر من عمود Multi-column Indexes كما أن ترتيب الأعمدة يهم في الفهرس فوضع رقم الهاتف أولاً أفضل من العمر لأنه قيمة غير مكررة فرضاً بينما ملايين الأشخاص لهم نفس العمر (ضمن مشروعك مثلاً كل عمر له مئة مشترك.. فالفهرسة للرقم أسرع لأنه على الأغلب فريد ) يمكن الاستفادة من السؤال:
  17. يمكنك جعل مخدم SQL يعطيك اقتراحات حسب الاستخدام SQL Server. من خلال تشغيل التتبع trace لبضع دقائق ثم تحديد typical usage الاستخدام العادي ثم Database Engine Tuning Advisor. تأكد من عملها على المفاتيح الرئيسة (تكون موجودة افتراضيا) والفريدة وغير الفارغة أي UNIQUE + NOT NULL توثيق موسوعة حسوب ل SQL Index - التعامل مع الفهارس
  18. لعمل نسخ احتياطي لحجم تخزين نستخدم العلم volumes-from-- مثال لإنشاء مساحة تخزين باسم my_application_backup: docker run -v /dbdata --name my_application_backup ubuntu /bin/bash مثال لعمل نسخة احتياطية: docker run --rm --volumes-from my_application_backup -v $(pwd):/backup ubuntu tar cvf /backup/my_application_backup.tar /dbdata لاسترجاع البيانانت restore docker run --rm --volumes-from my_application_backup -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/my_application_backup.tar --strip 1" كما يوجد العديد من الإضافات التي يمكن استخدامها لإدارة حجوم البيانات data volume في حاويات وتقنيات Docker ويمكن الوصول لها من البحث عن Docker volume plugins التي يمكن تثبيتهم من خلال Docker يمكن تثبيت الإضافة من خلال: docker plugin install --grant-all-permissions xxx/yyy اسم الإضافة ثم اتباع التوثيق الخاص بهم لتعلم استخدامهم.
  19. يمكن تثبيت التعديلات التي قمنا بها ضمن الحاوية إلى صورة جديدة باستعمال commit docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] مثال: docker commit c3f2xxxd17e0a my_application/test_3_image:version3 ينتج لنا صورة جديدة مع التعديلات new image. لتصدير حاوية لملف مضغوط نستخدم الأمر export الشكل العام docker export [OPTIONS] CONTAINER التصدير لملف docker export my_application > my_application_bk.tar أو docker export --output="my_application_bk.tar" my_application لاستيراد حاوية من ملف مضغوط نستخدم import الشكل العام docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] من الويب docker import https://example.com/my_application_bk.tar من ملف cat my_application_bk.tar | docker import - my_application:new
  20. لعمل نسخ احتياطي لصورة docker image نستخدم الأمر save docker save [OPTIONS] IMAGE [IMAGE...] مثال: docker save my_application > my_application_bk.tar لتحميل صورة نستخدم load docker load [OPTIONS] مثال: docker load < my_application_bk1.tar في حال الرغبة بعمل ضغط للملفات باستخدام خوارزيمة gzip ننفذ الأمر التالي docker save my_application:latest | gzip > my_application_bk.tar.gz docker save my_application > my_application_bk.tar
  21. docker image هو عبارة عن مجموعة ملفات تحوي التعليمات المسؤولة عن تشغيل الحاوية وليس لديها أي حالة، تحوي التعليمات البرمجية والملفات المصدرية والمكتبات والتبعيات والأدوات والملفات الأخرى اللازمة لتشغيل التطبيق/الحاوية .. source code, libraries, dependencies, tools.. وهو ملف غير قابل للتعديل فقط للقراءة. docker container الحاوية هي بيئة تشغيل التطبيق virtualized run-time environment أي هي الكائن النشط الذي ينتج عن docker image بعد تشغيلها. يمكن ل docker image واحد أن نقوم بإنشاء أكثر من نسخة نشطة منه التي هي حاوية docker container وتمثل كل منها عملية ضمن نظام التشغيل process صورة توضيحية: يتم بناء docker image عن طريق الأمر build للملف Dockerfile # تحميل اوبنتو FROM ubuntu:18.04 # نسخ ملفات COPY . /app # إنشاء مجلد RUN make /app # تشغيل بايثون CMD python /app/app.py أمر بناء: docker build -t my_image dir_with_dockerfile my_image اسم صورة التطبيق dir_with_dockerfile مسار الملف يتم تشغيل docker container بالأمر run مثل docker run image_name docker run my_image docker run hello-world لتوضيح المفهوم برمجياً، docker image تمثل Class بينما docker container تمثل Object. docker image مثل ملفات نظام التشغيل قبل تشغيل تثبيته وتشغيله ليصبح بعد التشغيل مثل docker container
  22. حاولي نشر القائمة: Widget build(BuildContext context) { return Column( children: [ Row(children: ...fafa, ^^^^^^^^ ), أو children: <Widget>[...fafa] أو children: <Widget>[ for(var item in fafa ) Text(item) ], مهما كان نوع القائمة التي أنشأناها، سنحولها إلى قائمة widgets أرجو مشاركة الحل الذي يعمل.
  23. Dockerfile هو ملف نصي عادي، يحوي الأوامر التي تمكن المستخدم من تجميع image والتي هي بنية الحاوية نفسها أي فعلياً اسم وإصدار نظام التشغيل مع الأدوات البرمجية والمكتبات وبيئات العمل المطلوبة لعمل التطبيق. مثال لتنصيب nginx مع PHP لمشروع ما: FROM nginx:latest MAINTAINER wael wael@hsoub RUN apt-get -y update && apt-get -y upgrade && apt-get install -y php أما docker-compose هي أداة لتعريف و تشغيل تطبيق متعدد الحاويات، يتم من خلاله تعريف الخدمات التي ستعمل في بيئة منعزلة والسماح بتشغيل التطبيق من خلال أمر واحد docker-compose up مثال لضبط إعداد mysql: تحديد الخدمات للتطبيق تحديد منفذ كل خدمة تحديد معلومات البيئة تحديد أي صورة خدمة سنعمل بها version: '3' services: back_end: ports: - "8080:80" db: image: mysql ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=root-password - MYSQL_USER=wael - MYSQL_PASSWORD=wael-password - MYSQL_DATABASE=my-database
  24. يمكن إضافة للبنة server إعداد port_in_redirect بقيمة off كالتالي server { listen 80; server_name localhost; port_in_redirect off; } وإن كنت تستخدم proxy أضف: server_name_in_redirect off; proxy_set_header Host $host:$server_port; => server { listen 80; server_name mySite.com; server_name_in_redirect off; proxy_set_header Host $host:$server_port; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080; } access_log off; }
×
×
  • أضف...