كل الأنشطة
- الساعة الماضية
-
مريم الحمصي اشترك بالأكاديمية
-
مرحبا استاذ نعم اكملت الدورة الذكاء الاصطناعي فقط بكامل مساراتها
-
أهلا بك عبد الله، هل تقصد أنك أتممت مسارات الدورة؟ إن كان كذلك فهذا أمر جيد جدا ونهنئك على هذا الإنجاز. بخصوص ما بعد الدورة أرجو مراجعة هذه الإجابة وتحرّيها جيدا: فبعد إنتهائك من الدورة سيتعين عليك التواصل مع فريق حسوب لإجراء اختبار للحصول على شهادة اتمام الدورة أرجو مراجعتها من هنا: https://support.academy.hsoub.com/exams
-
أرجو توضيح هل أكملت دورة الذكاء الاصطناعي فقط؟ أم هناك دورات أخرى؟ وهل قمت بدراسة الدورة بالكامل أم مسارات محددة فقط؟ وهل يوجد مسارات تخطيتها؟
-
اليوم وبحمد لله اكملت الدورات بالكامل اريد منكم ان ترشدونني ماذا افعل بعد بالتفصيل وكيف اراجع جميع المسارات للامتحان شكرا
- 3 اجابة
-
- 2
-
-
يوجد طلب على المجالين، لكن النصيحة بشكل عام ضررها أكثر من نفعها، لذا يجب توضيح ظروفك من أجل الحصول على نصيحة مناسبة لك، أي ما وضعك الحالي وما هو هدفك وما هي بلدك وما مستوى اللغة لديك وهكذا. بشكل عام، من حيث سهولة دخول سوق العمل فمجال الأمن السيبراني أفضل في تلك النقطة، حيث توجد وظيفة محددة اسمها محلل مركز عمليات أمنية - SOC Analyst Tier 1 وتلك الوظيفة مصممة للمبتدئين لمراقبة التنبيهات الأمنية والتعامل معها. أيضًا في الأمن السيبراني، شهادات مثل CompTIA Security+ أو Certified Ethical Hacker (CEH) لها وزن وتأثير في الحصول على وظيفة، وحتى أهم من الدرجة الجامعية.
-
Youssef Abdelhakim اشترك بالأكاديمية
- اليوم
-
غالبًا يوجد تضارب بين z-index و overflow، فلديك حاوية div لها الكلاس .field تحتوي على القائمة المنسدلة select، وحاوية أخرى أسفلها التي تحتوي على قائمة المواضيع التابعة ولها الكلاس .box وقمت بتعريف ما يلي للكلاس .box: .box { position: relative; z-index: 1; } خاصية z-index: 1 تجبر الـ div على أن يرتفع طبقة واحدة فوق العناصر الأخرى التي ليس لها z-index محدد والتي تعتبر z-index: auto أو 0. بالتالي عند فتح القائمة المنسدلة select، تظهر خياراتها لكن بما أن العنصر .box الذي يقع تحتها له z-index أعلى من الحاوية التي توجد بها القائمة، فيظهر فوق خيارات القائمة ويغطيها. وقمت بالفعل بحل المشكلة من خلال: @media (min-width: 801px) { .field:focus-within { z-index: 9999; } } لرفع الـ .field إلى طبقة عليا عند التركيز على القائمة، ولكن يبدو أن Firefox لا يزال يعطي الأولوية لسياق التكديس الذي أنشأه .box أقصد خاصية z-index أيضًا التعليق الذي كتبته /* تحت السيلكت عند الفتح */ يعني أنك تريد أن يكون العنصر تحت القائمة، ولكن z-index: 1 يفعل العكس حيث يضعه فوق العناصر التي ليس لها z-index، ويجب إزالته. قم بتجربة إزالة z-index: 1 من العنصر .box، فهو ليس ضروري ويسبب المشكلة وبما أن العنصر .box يأتي بعد .field في ترتيب الـ HTML، فلن تكون هناك حاجة لإعطائه z-index ليبقى في مكانه. .box{ border:1px solid var(--line); border-radius:12px; padding:10px; max-height:340px; overflow:auto; background:var(--card); position:relative; /* z-index:1; */ }
-
Khalid Hasan اشترك بالأكاديمية
-
الكود المشترك في دالة والوراثة تنبعان من نفس المبدأ الأساسي وهو Don't Repeat Yourself - DRY لكنهما ليسا نفس الشيء، بل تطبيقان مختلفان لهذا المبدأ في نموذجين برمجيين مختلفين. فالكود المشترك في البرمجة الإجرائية مثل لغة C، فكرته هي أنه لو لديك مجموعة من الأسطر التي تتكرر في دالتين أو أكثر، تستطيع وضعها في دالة مساعدة جديدة، ثم تستدعي الدالة المساعدة من كل الأماكن التي تحتاجها. أي علاقة استخدام أو استدعاء فالدالة find_parent والدالة check تستخدمان نفس منطق التنقل في الشجرة، لمشاركة منطق أو خوارزمية محددة بين عدة دوال. بينما الوراثة في البرمجة كائنية التوجه OOP مثل C++, Java, Python، فلا تشارك مجرد جزء من الكود، بل تشارك هوية وسلوك كامل، أي طريقة لإنشاء Class جديدة بناءًا على كلاس موجود، فالكلاس الجديد الابن يرث كل الخصائص أي المتغيرات والسلوكيات وهي الدوال من الكلاس الأصل الأب. لذا يوجد علاقة نوع من، فالسيارة هي نوع من المركبات، والقطة نوع من الحيوانات، أي إنشاء تسلسل هرمي بين الكائنات، حيث يرث كائن متخصص كل صفات وسلوكيات كائن أعم منه. ليس كذلك، فكتابة الكود بتلك الطريقة غير عملية، بل يستخدمون مفاهيم برمجية مثل الوراثة والمبادئ الخاصة بها مثل Method Overriding. أي إنشاء كلاس عام اسمه Enemy يحتوي على كل الخصائص والسلوكيات المشتركة بين كل الأعداء في اللعبة، ووداخل دالة die() في الكلاس Enemy الأساسي، يكتبون الكود مرة واحدة فقط، ثم لكل نوع مختلف من الأعداء، يتم إنشاء كلاس جديدة يرث من الكلاس Enemy الأساسي. وبما أن Soldier و Sniper و Guard جميعهم يرثون من Enemy، فيحصلون تلقائياً على دالة die() بنفس الكود المشترك دون الحاجة لكتابتها مرة أخرى، وعندما يموت أي منهم في اللعبة، يتم استدعاء نفس الدالة die() من الكلاس الأب، فيصدر نفس الصوت وتحدث نفس الحركة. وبالنسبة للعدو المميز كزعيم مثلاً له صوت وحركة موت مختلفة؟ يتم استخدام مبدأ تجاوز التابع Method Overriding حيث لكلاس الزعيم أن يرث من Enemy أيضًا، لكن يُعيد كتابة دالة die() الخاصة به لتنفيذ سلوك مختلف.
-
Ibn Dghij Boutheina اشترك بالأكاديمية
-
هل فكرة عمل كود مشترك تعمل دالتين أو أكثر به هي الوراثة في اللغات كائنية التوجه. الاحظ في بعض الألعاب (القديمة مثل IGI 2000) أن أكثر من شخصية من شخصيات الأعداء تتشارك نفس الصوت و نفس ال(animation) عندما تقتل. هل يضطر المبرمجين لكتابة نفس الأكواد لكلا الشخصيتين المختلفتين.
- 3 اجابة
-
- 1
-
-
روان العنزي5 اشترك بالأكاديمية
-
سلمى الرمالي اشترك بالأكاديمية
-
Eman Saleh4 اشترك بالأكاديمية
-
Amal Alsaluli اشترك بالأكاديمية
-
رنا الغامدي2 اشترك بالأكاديمية
-
Omar Younes3 اشترك بالأكاديمية
- البارحة
-
شكرا لردك اخوي محمد المشكلة مع متصفح فايرفوكس فقط وفي الشاشة الكبيرة واذا تم تصغير الشاشة تختفي المشكلة كأن اللون الابيض يصبح امام القائمة المنسدلة والمفروض يكون خلفيه
- 4 اجابة
-
- 1
-
-
اي التخصصين اعلى طلبا في سوق العمل كوظائف الامن السيبراني ام الذكاء الاصطناعي وماذا ترجحون في الوقت الحالي ؟
- 1 جواب
-
- 1
-
-
<!doctype html> <html lang="ar"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <title>محاكاة لعبة التفاحة — تعليمية</title> <style> body{font-family: system-ui,Segoe UI,Roboto,"Helvetica Neue",Arial; background:#f6f7fb;color:#111;margin:0;padding:20px;direction:rtl} .container{max-width:820px;margin:0 auto;background:#fff;border-radius:12px;padding:18px;box-shadow:0 6px 24px rgba(12,20,40,0.08)} h1{margin:0 0 12px;font-size:22px} .row{display:flex;gap:12px;align-items:center;flex-wrap:wrap} .apples{display:flex;gap:10px;margin:16px 0} .apple{width:96px;height:96px;border-radius:12px;background:#ffefef;display:flex;align-items:center;justify-content:center;font-size:26px;cursor:pointer;box-shadow:0 6px 14px rgba(0,0,0,0.06);user-select:none} .apple.locked{opacity:0.45;cursor:default} input[type=number]{padding:8px;border-radius:8px;border:1px solid #e0e4ef;width:120px} button{padding:10px 14px;border-radius:10px;border:0;background:#0b79f7;color:#fff;cursor:pointer} button.secondary{background:#6b7280} .status{margin-top:12px;padding:12px;border-radius:8px;background:#fbfbff;border:1px solid #eef2ff} .stats{margin-top:10px;font-size:14px;color:#374151} .small{font-size:13px;color:#6b7280} </style> </head> <body> <div class="container"> <h1>محاكاة لعبة "التفاحة" — تجريبي وآمن</h1> <div class="row"> <div> <div>الرصيد الافتراضي: <strong id="balance">1000</strong> وحدة</div> <div class="small">*هذا محاكي تعليمي فقط، لا يتصل بأي منصة مراهنات</div> </div> <div style="margin-left:auto"> <label>اختر عدد التفاحات: <select id="appleCount"> <option value="3">3</option> <option value="5" selected>5</option> <option value="7">7</option> <option value="9">9</option> </select> </label> </div> </div> <div style="margin-top:12px" class="row"> <label>مقدار الرهان: <input id="betAmount" type="number" min="1" value="50" /> </label> <label>مضاعف الفوز (تقريبي): <input id="payout" type="number" min="1" value="4" /> </label> <button id="startBtn">ابدأ جولة</button> <button id="resetBtn" class="secondary">إعادة ضبط</button> </div> <div class="apples" id="applesArea" aria-live="polite"></div> <div class="status" id="status">اضغط "ابدأ جولة" لاختيار التفاحات وعرضها.</div> <div class="stats" id="stats">جولات: 0 — فوز: 0 — خسارة: 0</div> </div> <script> (function(){ // عناصر const balanceEl = document.getElementById('balance'); const applesArea = document.getElementById('applesArea'); const startBtn = document.getElementById('startBtn'); const resetBtn = document.getElementById('resetBtn'); const appleCountSelect = document.getElementById('appleCount'); const betAmountInput = document.getElementById('betAmount'); const payoutInput = document.getElementById('payout'); const statusEl = document.getElementById('status'); const statsEl = document.getElementById('stats'); // حالة اللعبة let state = { balance: 1000, rounds: 0, wins: 0, losses: 0, active: false, winningIndex: null, appleCount: parseInt(appleCountSelect.value,10) }; function renderApples(n){ applesArea.innerHTML = ''; for(let i=0;i<n;i++){ const d = document.createElement('div'); d.className='apple'; d.dataset.index = i; d.innerText = '🍎'; applesArea.appendChild(d); d.addEventListener('click', onAppleClick); } } function updateUI(){ balanceEl.innerText = state.balance; statsEl.innerText = `جولات: ${state.rounds} — فوز: ${state.wins} — خسارة: ${state.losses}`; const apples = applesArea.querySelectorAll('.apple'); apples.forEach((a)=>{ a.classList.toggle('locked', !state.active); }); } function startRound(){ const bet = Number(betAmountInput.value) || 0; if(state.active){ statusEl.innerText = 'الجولة شغالة حاليًّا — اختَر تفاحة أو أعد تشغيل.'; return; } if(bet<=0){ statusEl.innerText='اكتب قيمة رهان أكبر من صفر.'; return; } if(bet>state.balance){ statusEl.innerText='الرصيد غير كافي للرهان.'; return; } state.appleCount = parseInt(appleCountSelect.value,10); state.active = true; state.winningIndex = Math.floor(Math.random()*state.appleCount); // عرض التفاحات renderApples(state.appleCount); statusEl.innerText = `تم خصم ${bet} من رصيدك. اختَر تفاحة (1 من ${state.appleCount}).`; state.balance -= bet; updateUI(); } function onAppleClick(e){ if(!state.active) return; const pick = Number(e.currentTarget.dataset.index); revealResult(pick); } function revealResult(pick){ const bet = Number(betAmountInput.value) || 0; const payoutMult = Number(payoutInput.value) || 1; state.rounds += 1; // إظهار كل التفاحات: علامة الفوز × const apples = applesArea.querySelectorAll('.apple'); apples.forEach((a,idx)=>{ a.innerText = (idx===state.winningIndex) ? '🍏' : '🍎'; a.style.transform = (idx===pick) ? 'scale(1.06)' : 'none'; }); if(pick === state.winningIndex){ // فوز const winAmount = Math.floor(bet * payoutMult); state.balance += winAmount; state.wins += 1; statusEl.innerText = `فزت! حصلت على ${winAmount} (مضاعف ${payoutMult}).`; } else { // خسارة state.losses += 1; statusEl.innerText = `خسرت الجولة — التفاحة الصحيحة كانت رقم ${state.winningIndex+1}.`; } state.active = false; updateUI(); } function resetAll(){ state.balance = 1000; state.rounds = 0; state.wins = 0; state.losses = 0; state.active = false; state.winningIndex = null; appleCountSelect.value = '5'; betAmountInput.value = 50; payoutInput.value = 4; renderApples(state.appleCount); statusEl.innerText = 'تم إعادة الضبط. افتح جولة جديدة.'; updateUI(); } // أحداث startBtn.addEventListener('click', startRound); resetBtn.addEventListener('click', resetAll); appleCountSelect.addEventListener('change', ()=> renderApples(parseInt(appleCountSelect.value,10))); // تهيئة renderApples(state.appleCount); updateUI(); })(); </script> </body> </html>
-
يجب تعديل الكود لربط Form3 بنافذة invoice الأصلية، أي ستقوم بإضافة مُنشئ constructor جديد إلى Form3 يقبل كائن من نوع invoice ويخزنه. ثم تعديل نافذة invoice لتمرير نفسها إلى Form3، ثم تعديل معالج حدث النقر dataGridView3_Click في invoice.cs لتمرير النسخة الحالية من نافذة الفاتورة this إلى Form3. أرفقت لك الملفين بعد التعديل. Form3.cs invoice.cs
- 11 اجابة
-
- 1
-
-
فعلاً، الواقع الافتراضي فتح آفاق جديدة في البرمجة والعمل الحر. تجربة الأكواد بشكل واقعي قبل التطبيق فعلاً تساعد على تقليل الأخطاء وتحسين جودة المشاريع. كمان الاجتماعات التفاعلية عن بُعد صارت أسهل وأكثر إنتاجية بفضل التقنية. استخدام الواقع الافتراضي يعطي شعور بالتفاعل وكأنك حاضر فعلياً في مكان العمل. واضح أن المستقبل للعمل عن بعد والبرمجة مرتبط بشكل كبير بهذه التقنية المبتكرة.
- آخر أسبوع
-
لم يعد هناك حاجة إلى الفلاش بسبب تطور لغات الويب، حيث HTML5 الخاصة بتطوير الهيكل الأساسي للصفحة، تم بها إضافة عناصر قوية حلت محل الفلاش مباشرة، وهي<canvas> عبارة عن لوحة رسم رقمية تستطيع الرسم عليها وتحريك العناصر باستخدام الجافاسكريبت لإنشاء رسوم متحركة، ألعاب، إعلانات تفاعلية، ورسوم بيانية. أيضًا <video> و <audio> لتشغيل الفيديو والصوت مباشرة في المتصفح دون الحاجة لمشغل فلاش. كذلك لغة CSS3 وهي لغة التصميم والتنسيق، وأصبحت قوية جداً في إنشاء التأثيرات والحركات، عن طريق Transitions أي الانتقالات لعمل تأثيرات ناعمة عند تغير حالة عنصر ما، كتغيير اللون أو الحجم عند مرور الماوس، والرسوم المتحركة Animations لإنشاء سلاسل حركية معقدة ومتكاملة مثل تحريك إعلان عبر الشاشة باستخدام keyframes. بجانب SVG وهي تقنية رسوميات متجهة كالفلاش ولكن بمعيار ويب مفتوح، وحجمها صغير، لا تفقد جودتها عند تكبيرها، ويمكن التحكم في كل جزء منها وتحريكه باستخدام CSS و JavaScript، بالتالي مثالية للشعارات والأيقونات والرسوم التوضيحية المتحركة. وحاليًا يتم استخدام برنامج Adobe Animate CC والذي هو نفسه برنامج فلاش القديم ولكن تم تطويره ليقوم بتصدير الملفات بصيغة HTML5 Canvas و JavaScript بدلاً من ملفات SWF.
-
السلام عليكم في السابق كانت تعرض الاعلانات والتبيهات بواسطه برامج الفلاش وتحفظ ورفع على الموقع الان ماهو البديل عن الفلاش بحيث يتحرك الاعلان وتاثيرات بالموقع ماهو البديل عن ملفات الفلاش
- 1 جواب
-
- 1
-
-
استخدم تقنية Hybrid Search مع نموذج embedding متعدد اللغات، بمعنى يوجد نماذج Embedding عربية متقدمة فالنماذج الحديثة تفهم المرادفات تلقائيًا: from sentence_transformers import SentenceTransformer model = SentenceTransformer('sentence-transformers/paraphrase-multilingual-mpnet-base-v2') # أو model = SentenceTransformer('aubmindlab/bert-base-arabertv2') لديك أيضًا CAMeLBERT. وذلك لنتمكن من البحث الدلالي Semantic Search والذي يفهم المعنى بحيث يجد قطة و بسة و هرة. كذلك Keyword Search للبحث بالكلمات، والذي يعتمد على TF-IDF لمطابقة الكلمات النصية لتضمن دقة النتائج عند التطابق الحرفي. وابدأ بـ 0.7 للـ embedding و 0.3 للكلمات المفتاحية، وفي حال يوجد أكثر من 10,000 خدمة، استخدم FAISS للسرعة، وأعد حساب الـ embeddings عند إضافة خدمات جديدة.
-
السلام عليكم لدي مشروع وهو بحث عن خدمة في موقع حكومي رسمي في البداية لدي API بالخدمات المقدمة من تصاريح او اي كان من الخدمات اتصلت ب API وبعدها سحبت كل بيانات الخدمات، المطلوب مني هو اني اكتب فالبحث اي كلمة ويبحث عنها فالموقع على سبيل المثال لو كتبت قطط سيأتي بالخدمات الخاصة بالقطط ولكن ماذا لو كتبت قطه او قطة او بسه او هره لن يأتي بنفس النتائج حليت مشكلة قطة او قطه او قطط او قطوه من خلال استخدام طبقت Lemmatization على الكلمة والبيانات وبعدها Embedding للبيانات والكلمة المراد البحث عنه ولكن لم اجد حل ل كلمة هره او بسه او هرة جربت اني ارسل الكلمة لنموذج llama 3.1 وطلب منه اعطائي مرادفات الكلمة وبعدها تطبيق الخطوات السابقة على كل المرادفات ولكن للاسف لم ينجح llama ب كتابة المرادفات هل يوجد حل آخر ممكن اجربه؟
- 1 جواب
-
- 1
-
-
يجب تثبيت bun أولاً من خلال تنفيذ الأمر التالي في منفذ الأوامر powershell powershell -c "irm bun.sh/install.ps1|iex" ثم أغلق منفذ الأوامر ومحرر الأكواد vscode، وأعد تشغيلهم وتنفيذ التالي للتحقق من التثبيت: bun --version من المفترض أن يظهر لك إصدار bun في حال لم يظهر، إذن يجب إضافة bun لمتغيرات البيئة من خلال تنفيذ التالي في منفذ الأوامر powershell [System.Environment]::SetEnvironmentVariable( "Path", [System.Environment]::GetEnvironmentVariable("Path", "User") + ";$env:USERPROFILE\.bun\bin", [System.EnvironmentVariableTarget]::User ) ثم أغلق منفذ الأوامر ومحرر الأكواد vscode، وأعد تشغيلهم وتنفيذ التالي للتحقق من التثبيت: bun --version
-
أرفق مجلد المشروع بشكل مضغوط لتفقده
-
لزالت نفس مشكلة اخي مصطفي ممكن تحل مشكلة لي عن طريق anydisk
-
قمت بتجربة تسجيل مستخدم وتم الأمر بشكل سليم: لا تحاول فتح روابط التي تستقبل طلبات POST في المتصفح، فهي لن تعمل لأن المتصفح يرسل طلب get عند التوجه للرابط في شريط العنوان.
-
يجب ألا تدع نافذة الفاتورة تُدمر عند إغلاقها، بل قم بإخفائها فقط، لتحتفظ النافذة ببياناتها وهي الأصناف الموجودة في الـ DataGridView، وفي المرة التالية التي تحتاجها، ستقوم بإظهارها مرة أخرى بدلاً من إنشائها من الصفر. في invoice.cs أو ما شابه لديك أنشئ الدالة التالية: private void invoice_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; this.Hide(); }
- 11 اجابة
-
- 1
-
-
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sales { public partial class Form3 : Form { public Form3() { InitializeComponent(); } invoice ff ; private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (ff == null || ff.IsDisposed) { ff = new invoice(); } ff.dataGridView4.Rows.Add(label2.Text, textBox1.Text); if (!ff.Visible) { ff.Show(); } else { ff.BringToFront(); } } } private void textBox1_TextChanged(object sender, EventArgs e) { } } } اخي اختار صنف يضفيه ثم عند اضافة صنف جديد يظهر جديد ويختفي قديم يمكن ارسل لكي ip تدخل تحل مشكلة لي عن طريق anydisk
