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

Wael Aljamal

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

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

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

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

    218

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

  1. لاحظ أن طريقة كتابة الاستعلام لديك فيها خطأ، حيث أن الاستعلام يقوم بدمج نتائج جدولين أو أكثر (جداء الأسطر) مما يؤدي لعمل جدول يحوي لكل سطر فيه ناتج تكرار كل سطر من أول جدول مع جميع أسطر الجدول الثاني (حجم بيانات ضخم و استعلام معقد.. string com = "select * from TCity , TColors "; ^^^^^^^^^^^^^^^^ cartisan product الحل لديك هو عمل استعلام منفصل لكل جدول و نشر بيانات الاستعلام في القائمة المناسبة. يمكن للتبسيط: اكتب stored procedure يأخذ اسم الجدول كوسيط ويجلب بيناته.. CREATE PROCEDURE getTableData @TableName Varchar(30) AS BEGIN DECLARE @query set @query = 'SELECT * FROM '+ @TableName EXEC @query END --**************************************************** CREATE PROCEDURE getTableData @TableName varchar(30) AS SELECT * FROM @TableName --**************************************************** IF NOT EXISTS(SELECT * FROM sys.tables WHERE name = @tablename) RETURN DECLARE @sql NVARCHAR(30) SET @sql = 'SELECT * FROM ' + QUOTENAME(@tablename) EXECUTE(@sql) شرح المشكلة: اقرأ فقرة الضم المتقاطع Cross Join من المقالة
  2. لاحظ في حال أدخل المستخدم الرقم 1 بعد ظهور القائمة أي convert to bytes سيتم تنفيذ show Bytes وهذه الدالة نمرر لها قيمة megabyte حيث تقوم بضربها ل 1024*1024 وتطبعها من أين نحصل على دخل المستخدم؟ أي قيمة megabyte .. في حال قام المستخدم بإدخال قيمة تختلف عن 5 سيتم تنفيذ elif num < 5 وفيها تتم قراءة الحجم بوحدة ميغابايت
  3. يمكن استخدام الكلمة المفتاحية ORDER BY التي تعمل على ترتيب القيم المختلفة حسب عمود ما في الجدول مثال لاستعلام يعيد بيانات المستخدمين مرتبة حسب العمر SELECT DISTINCT name FROM users ORDER BY age; الشكل التلقائي يعيد البينانات بترتيب تصاعدي ascending من الأصغر للأكبر بدون وضع ASC (لا حاجة له)، ولعمل العكس نضيف DESC في نهاية الاستعلام ليصبح ترتريب تنازلي descending إقرأ عن الخاصية من توثيق موسوعة حسوب SQL/order_by
  4. يمكن استخدام الكلمة المفتاحية DISTINCT التي تعمل على فلترة القيم المختلفة من عمود ما في الجدول مثال لاستعلام يعيد الأسماء المختفة من جدول المستخدمين SELECT DISTINCT name FROM users; الآن حاول تنفيذ الفكرة بنفسك بتغير اسم العمود و الجدول إقرأ عن الخاصية من توثيق موسوعة حسوب SQL/distinct
  5. هذا البرنامج خاص للتحويل بين وحدات التخزين (حجم البيانات) المختلفة المستعملة في عالم البرمجة. يعرض البرنامج قائمة من 5 اختيارت، حيث يتوقف عند إدخال رقم 5, اما لباقي الخيارات يقبل إدخال حجم مقدراً بواحدة ميغابايت ثم حسب الاختيار المدخل، نمرر القيمة إلى دالة موافقة. كل دالة تستقبل متغير megabyte يحمل القيمة التي أدخلها المستخدم عند تنفيذ البرنامج. تعريفات، البايت byte هو أصغر وحدة تخزين ويمكن أن تحفظ محرف واحد (رقم او حرف او رمز) مثل ماهو موجود على لوحة المفاتيح keyboard. الواحدات الأكبر هي كيلو بايت و تساوي 1024 بايت، ثم ميغابايت و تساوي 1024 كيلو بايت أي 1024*1024 بايت ثم غيغا بايت و تساوي 1024 ميغا بايت وهكذا.. كل واحدة تساوي 1024 مرة من الواحدة الأصغر، أي نضرب ب 1024 عند التحويل من واحدة كبيرة إلى الأصغر. و في العملية المعاكسة (من واحدة صغيرة لواحدة أكبر) نقسم على 1024..
  6. لقد تم بالفعل تحديث مسار بناء صفحات هبوط وأصبح التطبيق يتم على الإصدار 5 من بوتستراب. يقوم الاستاذ عبد اللطيف ايمش بنشر أخبار تحديث الدورات على موقع IO حسوب ويمكنك التأكد من تحديث هذا المسار من المنشور: تحديثات دورات أكاديمية حسوب
  7. كلا هي مكتبة موجودة و بتضمين الملف الخاص بها في صفحتك يمكنك استخدامها مباشرة، الموضوع أن بوتستراب في آخر نسخة رقم 5 لم يعتمد عليها بسبب مشاكل حجم الملفات و الأداء و قرروا كتابة الشيفرات باستخدام جافاسكربت مباشرة
  8. جافاسكربت هي لغة البرمجة الأساسية هنا، أما جيكويري هي مكتبة برمجية خاصة بالتعامل مع صفحات الويب ضمن المتصفح HTML-CSS مبنية بشكل كامل على جافاسكربت. لايمكنك استخدام جيكويري قبل تعلم أساسيات جافاسكربت. جيكويري موجودة لكي تسهل البرمجة لمطوري الواجهات الأمامية ولكنها لا تستبدل لغة جافاسكربت. مسار الدورة يعلم أساسيات جافاسكربت ثم جيكويري و تطبيقات عليهم. يمكن تحقيق نفس الهدف البرمجي إما بكتابة شيفرة جافاسكربت أو بمساعدة جيكويري والتي تكون عدد أقل من الأسطر وأسهل وأبسط. والإدارة تعمل على إضافة تحديثات بشكل مستمر وتواكب إصدارات المكتبات. يوجد مقالات من أكاديمية حسوب وتوثيق موسوعة حسوب يمكنك الاطلاع عليهم: موسوعة حسوب / جيكويري موسوعة حسوب / جافاسكربت مقالات أكاديمية حسوب / جيكويري مقالات أكاديمية حسوب / جافاسكربت
  9. لحل السؤال علينا فهم الخوارزميات العودية حيث يقوم التابع function باستدعاء نفسه ولكن للمرحلة التالية من حل المشكلة، ولكل استدعاء حالة مميزة عن باقي الحالات، في مسألتنا يجب تجريب وضع جميع المعاملات الرياضية مكان كل اشارة استفهام ثم الانتقال للإشارة الاستفهام التالية و تجريب جميع المعاملات.. لذلك سيكون لدينا دالة تقبل مصفوفة فيها الرموز ورقم الخطوة وفيها حلقة تجرب استبدال ؟ بقيمة جميع المعاملات ثم تستدعي الخطوة التالية (إشارة الاستفهام التالية).. عندما نقوم بتبديل جميع الإشارات يبقى مهمة عمل تقييم للتعبير الرياضي، والتأكد هل القيمة هنا تساوي 0 حسب شرط المسألة؟ هنا استخدمت مكتبة math والدالة evaluate للتحقق. يوجد 180 حل مختلف للمسألة const math = require("./math.js"); // مكتبة خارجية const operands = ["+", "-", "*", "/", "%"]; // مصفوفة المعاملات let sequence = "10 ? 20 ? 15 ? 3 ? 190 ? 10 ? 400"; // السلسة التي تعبر عن المعادلة let maxStep = sequence.split("?").length - 1; // عدد إشارات الاستفهام let numberOfSolutions = 0; // عدد الحلول sequence = sequence.split(" "); // تحويل السلسة لمصفوفة لنتمكن من تعديل القيم // لايمكن تعديل قيم String // لأنها نمط immutable //console.log(maxStep); function solve(seq, step) { // دالة الحل تقبل مصفوفة القيم و الرموز و الوسيط الثاني هو رقم إشارة الاستفهام //console.log(step); if (step === maxStep) { // بعد الوصول لآخر خطوة نحسب التعبير let fin = seq.join(""); // دمج المصفوفة //console.log(fin); if (math.evaluate(fin) === 0) { // نمرر السلسسة للتقييم وفي حال وجود حل numberOfSolutions++; console.log("solution ", numberOfSolutions, ": ", fin); // نطبع الحل } return; } let index = step * 2 + 1; // حساب دليل العنصر الحالي الذي نريد تبديله let nextStep = step + 1; // رقم الخطوة التالية for (let op = 0; op < operands.length; op++) { // تجريب المعاملات seq[index] = operands[op]; // استبدال المعامل مكان إشارة استفهام هذه الخطوة solve(seq, nextStep); // استدعاء الدالة للخطوة التالية } } solve(sequence, 0); // استدعاء أساسي console.log("numberOfSolutions: ", numberOfSolutions); // طباعة عدد الحلول الملفات: math js.rar
  10. ما المشكلة بالضبط؟
  11. سبب المشكلة هو تحديد الحد الأدنى من توافق التطبيق minSdkVersion مع إصدار نظام أندرويد بقيمة أقل من إصدار مكتبة البناء له compileSdkVersion. يجب أن يكون minSdkVersion بقيمة أقل من compileSdkVersion لأن compileSdkVersion تدعم إصدارات أقل، ولا يمكن تحديد إصدار minSdkVersion أكبر من compileSdkVersion. الحل وأفضل توافقية هي: minSdkVersion <= targetSdkVersion <= compileSdkVersion حل مباشر بوضع القيم إلى 31: android { compileSdkVersion 31 // <-- This defaultConfig { applicationId "com.example.app" minSdkVersion 31 // <-- and this too // ... } } يمكن تحديد هذه القيم في ملف build.gradle ضمن خواص كائن android تأكد من كتابتهم بطريقة صحيحة: minSdkVersion targetSdkVersion compileSdkVersion وتأكد من وجودهم نفسهم في ملف mainfest.xml بالقيم التالية مثلا.. <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="30" android:compileSdkVersion="30" /> مثال لملف gradle plugins { id 'com.android.application' } android { compileSdkVersion 28 buildToolsVersion "30.0.2" defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 15 // Specifies the API level used to test the app. targetSdkVersion 28 // Defines the version number of your app. versionCode 1 // Defines a user-friendly version name for your app. versionName "1.0" } buildTypes { release { minifyEnabled true // Enables code shrinking for the release build type. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } flavorDimensions "tier" productFlavors { free { dimension "tier" applicationId 'com.example.myapp.free' } paid { dimension "tier" applicationId 'com.example.myapp.paid' } } } dependencies { implementation project(":lib") implementation 'com.android.support:appcompat-v7:28.0.0' implementation fileTree(dir: 'libs', include: ['*.jar']) } إن كنت تختبر التطبيق على جهاز أو محاكي، ضع targetSdkVersion بنفس إصدار الأقدم منهما تأكد من عمل clean and rebuild ليتم مزامنة Gradle من جديد
  12. مرحبا إبراهيم، يبدو أنك تحاول التسجيل من لوحة الأدمن والمسؤولين، حاول من الرابط التالي: support.academy.hsoub.com/login سيتم بعدها طلب إدخال برديك الالكتروني، وبعد إرساله سيتم إرسال رابط لبريدك الإلكتروني وبعد النقر عليه يتم تسجيل الدخول وتبدأ المحادثة من الدعم الفني. حاول إرفاق جميع التفاصيل في رسالة واحدة، معلومات الامتحان من academy.hsoub.com/exams شكراً لك
  13. يمكنك تمرير قيمة ثابتة لكل سطر في ناتج الاستعلام مثل type = x لتعرف سطر اول او ثاني SELECT *, 'R1' AS type FROM table UNION SELECT *, 'R2' AS type FROM table و مرر R2 للاستعلام الثاني ثم يمكنك معرفة كل سطر من الناتج لمن يعود حل آخر، لا بأس بعمل استعلامين، وخزن نتيجتهما في متغيري منفصلين و طبق الشرط الذي يحلو لك لكل ناتج.
  14. يعتمد هذا على نوع اللعبة التي تود القيام بها ولغة البرمجة التي ستختارها للتعلم. إن كنت مبتدئاً ربما الأفضل البدء من الصفر باستعمال محرر أكواد vs code ثم معرفة أسس صناعة الألعاب، وبعد فهم المنطق وبرمجة بعض الألعاب الصغيرة تنتقل لاستخدام محرك ألعاب، وإن كان لديك فهم جيد لأساسيات البرمجة و منطق الألعاب ابدأ مباشرة بتعلم استخدام محرك ألعاب، سترى أن العديد من الأمور موجودة مسبقاً وسهلة التطبيق لأن المحرك يقدم دعم لكافة أنواع الحركة ومواضيع متقدمة. بشكل عام: يتم تطوير الألعاب بما يعرف باسم: محرك الألعاب، وهو عبارة عن برنامج يضم عدة برمجيات بداخله مدمجة بواجهة مستخدم تسهل عليك التحكم في هذه البرمجيات، مثل: نظام ملاحة: يسمح لك بتحريك أي كائن وكذلك معرفة المسافات بين الاجسام واطلاق الأشياء نحو جانب او جهة محددة. نظام فيزيائي: يسمح لك بتحريكك أي كائن بأي طريقة حركة، كالاندفاع أو التسارع أو حساب التصادمات وغيره بطريقة سهلة. نظام اضاءة: يتيح لك تسليط الضوء والظل على الاجسام. نظام render: يسمح لك برسم المجسمات سواء ثنائية أو ثلاثية في شاشة اللاعب نظام كاميرا: يسمح لك بتحريك الرؤية نحو عالم اللعبة نظام animation: يسهل عليك دمج أنميشن الاجسام ببعضها وبرمجة أي واحد منها يتفعل ومتى يتفعل بالتحديد لو استخدمت محرك العاب، فإن المنطق سيسهل عليك التفكير فيه، لان جزء كبير من اللعبة تم إنجازه سلفاً داخل المحرك! كالفيزياء والحركة وانشاء الرسوميات للكائنات في اللعبة وغيره. بدون محرك العاب، فان تطوير أي لعبة سيجبرك بشكل لا مباشر على تطوير محرك العاب مخصص لهذه اللعبة فقط! لذلك استخدام محرك ألعاب هو أفضل للمستوى الاحترافي.
  15. لغة برمجة سكراتش هي لغة بسيطة وتحوي تقريبا تطبيق لمعظم خواص لغات البرمجة، وهي مهمة للمبتدئ للبدء في تعلم معنى البرمجة و كيفية كتابة الشروط و الحلقات، وتعريف متغيرات و التعامل مع الأحداث. بالرغم من أنك تراها بسيطة ولكنها مفيدة و سهلة في تطبيق الخوارزميات المختلفة، يوجد نفس الاستفسار مسبقاً ويمكنك الاطلاع على رأي المدربين.
  16. linearLayoutManager = new LinearLayoutManager(context) { @Override public boolean canScrollVertically() { return false; } }; recyclerview.setLayoutManager(linearLayoutManager); recyclerView.setNestedScrollingEnabled(false); استخدم هذه
  17. هذا الحقل يجب أن يحوي قيمة مرجعية ل SSN مدير الموظف الحالي وليس لنمط عمله. job هو الحقل الذي نطبق عليه الشرط ADD CONSTRAINT JOB_check check (job IN('manager','senior','junior')) check غير مرنة لعمل استعلام جزئي sub query لتحقيق شرط ما
  18. هذا القيد غير متوافق مع نمط بيانات المستخدم، أن تجبره أن يكون قيمة نصية manager أو senior ولا يمكن تمرير رقم في هذه الحالة.
  19. لم أفهم هذه النقطة، إن كان لديك حقول تحوي مفتاح ثانوي، يتوجب وجود نفس id في كلا الجدولين
  20. حاول تنفيذ الاستعلام عن طريق دمج ناتج استعلامين منفصلين باستخدام Union All SqlCommand comm = new SqlCommand( "select * from TFile " + " inner join TAlQ AS A ON TFile.SendFromIdTAlQ = A.IdAlQ " + " WHERE TFile.Name LIKE N'%" + TextBoxSerach.Text + "%'" + " UNION ALL" + " select * from TFile " + + " inner join TAlQ AS B ON TFile.SendToIdTAlQ = B.IdAlQ " + + " WHERE TFile.Name LIKE N'%" + TextBoxSerach.Text + "%'" , con); في حال توقع نتائج مكررة احذف كلمة ALL. ALL تسمح بالتكرار، وإن حذفتها سيصبح الاستعلام أبطأ لأنه سيتحقق من كل قيمة مضافة أنها غير مكررة
  21. هل الحقل SSN يتم توليد id بشكل تلقائي فيه؟ هنا لا نمرر قيمة عندما نفعل الخاصية auto increment لاحظ الحقل الذي يحوي الخطأ هو superVisor_id تأكد من عدم وضع اقتباس حول الرقم
  22. عندما نقوم بتمرير قيمة رقمية مثل 101 لا نضعها بين علامتي اقتباس '101' حاول حذفهم من جانبي الرقم، أما الحقول التي تحوي قيمة نصية نستخدم معها علامة الاقتباس.
  23. هل بدأت بحل المشكلة؟
×
×
  • أضف...