-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
نحن لا نحل الأسئلة الامتحانية. عليك البدء بالحل و كتابة الكود و إن كان هنالك جزء لم تفهمه يمكن أن نساعدك في توضيح الحل.
- 1 جواب
-
- 1
-
حاول وضع شرط قبل عرض القائمة flat list تتأكد من وجود بيانات ضمن books قبل عرض القائمة لأنها ستعرض بياناتها. حاول استخدام المعامل && أو ضعها في مكون منفصل و ضع الشرط المناسب قبل المرور على القائمة
- 6 اجابة
-
- 1
-
الشيفرة خاصة بكل فيديو وتحوي رابطه الخاص ولا تظهر في تطبيق يوتيوب افتح من متصفح الحاسوب.
-
لتشغيل فيديو يوتيوب، نقوم بعملية تضمين لشيفرة برمجية من رابط الفيديو الهدف تدعى الطريقة Embed videos. افتح فيديو اليوتيوب الذي تريده اضغط على مشاركة اضغط على تضمين أو Embed انسخ شيفرة HTML والصقها في موقعك مثال للشيفرة المنسوخة: <iframe width="560" height="315" src="https://www.youtube.com/embed/U3axpYKzyos" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe>
- 4 اجابة
-
- 1
-
هذا صنف PHP استخدم الدالتين (التشفير و فك التشفير) كمثال في آخر سطر.. $encryptedText = AES256Encryption::encrypt($text, $key, $iv); $decryptedText = AES256Encryption::decrypt($encryptedText, $key, $iv); key مو مفتاح التشفير أنت تختاره، باقِ الكود لايحتاج لتعديل encrypt تقوم بتشفير أول وسيط لها text وناتجها هو السلسلسة النصية encryptedText أي النص المشفر. decrypt دالة فك التشفير، تستقبل نص مشفر وتعيد النص بدون تشفير
-
لكي تصبح cookies آمنه يمكنك تطبيق تشفير ولو بسيط عليها، ابحث عن أي ملف PHP للتشفير، مثلا استخدم التالي: <?php class AES256Encryption { public const BLOCK_SIZE = 8; public const IV_LENGTH = 16; public const CIPHER = 'AES256'; public static function generateIv(bool $allowLessSecure = false): string { $success = false; $random = openssl_random_pseudo_bytes(openssl_cipher_iv_length(static::CIPHER)); if (!$success) { if (function_exists('sodium_randombytes_random16')) { $random = sodium_randombytes_random16(); } else { try { $random = random_bytes(static::IV_LENGTH); } catch (Exception $e) { if ($allowLessSecure) { $permitted_chars = implode( '', array_merge( range('A', 'z'), range(0, 9), str_split('~!@#$%&*()-=+{};:"<>,.?/\'') ) ); $random = ''; for ($i = 0; $i < static::IV_LENGTH; $i++) { $random .= $permitted_chars[mt_rand(0, (static::IV_LENGTH) - 1)]; } } else { throw new RuntimeException('Unable to generate initialization vector (IV)'); } } } } return $random; } protected static function getPaddedText(string $plainText): string { $stringLength = strlen($plainText); if ($stringLength % static::BLOCK_SIZE) { $plainText = str_pad($plainText, $stringLength + static::BLOCK_SIZE - $stringLength % static::BLOCK_SIZE, "\0"); } return $plainText; } public static function encrypt(string $plainText, string $key, string $iv): string { $plainText = static::getPaddedText($plainText); return base64_encode(openssl_encrypt($plainText, static::CIPHER, $key, OPENSSL_RAW_DATA, $iv)); } public static function decrypt(string $encryptedText, string $key, string $iv): string { return openssl_decrypt(base64_decode($encryptedText), static::CIPHER, $key, OPENSSL_RAW_DATA, $iv); } } $text = '8SViI0Gz4r-p7A15YxkwjOBFuW*@NTtbm{U]D&E=~6yLM+adX'P;h3$,KJ%/eo>}<Rs:2#gZ.9fqn"Cv_^[(H\c!)?`Ql'; $key = 'secretkey'; $iv = AES256Encryption::generateIv(); $encryptedText = AES256Encryption::encrypt($text, $key, $iv); $decryptedText = AES256Encryption::decrypt($encryptedText, $key, $iv); printf('Original Text: %s%s', $text, PHP_EOL); printf('Encrypted: %s%s', $encryptedText, PHP_EOL); printf('Decrypted: %s%s', $decryptedText, PHP_EOL); فيسبوك تعمل بمبدأ Token وهي عبارة عن سلسلة نصية طويلة و فريدة يتم إرسالها للمستخدم بعد التحقق منه و تسجيله الدخولن ويقوم بتضمينها مع كل طلبية من المخدم، وكما تعلم أن لدى Facebook مساحة تخزين ضخمة، أي يمكنكهم تخزين ما يريدون. على كل حال يمكنك تعديل مدة الجلسة الافتراضية من ملف php.ini
-
إن الجلسة session هي تخزين مؤقت على المخدم، غالبا مدتها 20 دقيقة ثم يتم حذفها (يتم تقليلها لعدم ملئ ذاكرة المخدم)، أما ملفات تعريف الارتباط Cookies تتخزن في المتصفح أي ذاكرة لدى المستخدم وتكون مدة صلاحيتها كبيرة حتى سنة وأكثر. معلومات الجلسة آمنة أكثر استخدم الشرط if حسب رتبة المستخدم وحدد ضمنها الشيفرات البرمجية التي تريد تنفيذها.. هذا يتوقف عليك و كيفية تعاملك مع جلب بيانات الرتبة وما إلى ذلك. if (user->role == 'admin') { // admin مدير } else { // normal user hide لا تعرض شيئ أو اعرض بيانات للمستخدم العادي }
-
لانعيد الغرض مباشرة من uuid إنما الخاصية string منه كالتالي: $uuid = Uuid::generate()->string; // أو use Illuminate\Support\Str; $uuid = Str::uuid()->toString(); الخاصية string تعيد المعرف على شكل نص، يمكن قراءة الخاصية time التي تعيد الوقت: Uuid::generate()->time;
-
المشكلة لديك أن إصدار node js قديم وأنت تستخدم نظام لينوكس/أوبونتو, لتحديث node js يمكن تنفيذ الأوامر التالية: sudo npm cache clean -f # مسح التخزين المؤقت القديم sudo npm install -g n # أحدث إصدار مستقر sudo n stable ولإعادة ضبط المسار: sudo apt-get install --reinstall nodejs-legacy طريقة أخرى لأوبونتو: # Using Ubuntu curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - sudo apt-get install -y nodejs
-
مرحبا ثائر، يمكنك اتباع الشرح الموجود في هذا الرابط: كيف أتواصل مع المدرّبين المهم طرح سؤال واضح مع إرفاق ما يدل على المشكلة بشكل واضح
- 2 اجابة
-
- 1
-
لمعرفة عدد العناصر ضمن المدس يكننا استدعاء التابع size للمكدس الذي تم تعريفه: // تعيف مكدس stack<int> mystack; // إضافة عناضر باستخدام push mystack.push(1); mystack.push(8); mystack.push(6); // أضفنا العناصر 1, 8, 6 cout << mystack.size(); // 3 ضمن المكدس، لايمكننا الوصول إلا للعنصر الذي في القمة (أعلى المكدس) باستخدام التابع top. لكي نقوم بحساب تكرار العناصر أو طباعة جميع العناصر، يتوجب علينا تفريغ المكدس لكي نستطيع المرور على جميع العناصر. ____ تكرار العناصر، يتوجب بناء بنية معطيات تمكننا من عد العناصر، مثل مصفوفة أو Map: يمكن حساب التكرار للعناصر قبل إضافتها للمكدس، ويمكن كتابة دالة لإنقاض التكرارات بنفس الطريقة. #include<bits/stdc++.h> using namespace std; // حساب التكرارات map<int, int> freqMap; // أكثر تكرار int maxfreq = 0; // حساب التكرارات void push(int x) { // تكرار of x int freq = freqMap[x] + 1; freqMap[x]= freq; // تعديل التكرار if (freq > maxfreq) maxfreq = freq; } int main() { // إضافة العناصر للمكدس push(4); push(6); push(7); push(6); push(8); } لعرض عناصر المكدس بطريقة معكوسة حاول كتابة الشيفرة التالية: نقوم بتعريف مكدس مؤقت نفرغ المكدس الأول باستخدام التابع pop ونضيف العناصر للمكدس الثاني المؤقت أصبح المكدس الثاني يحوي العناصر نفسها لكن بترتيب مقلوب نفرغ المكدس الثاني باستخدام pop ونطبع العنصر و نضيفه للمكدس الأول الآن المكدس الأول يحوي نفس العناصر بنفس الترتيب الأصلي، المكدس المؤقت فارغ بدون تخريب البيانات.
- 1 جواب
-
- 1
-
يمكننا تعريف دلة replace_all التي تقبل السلسلة النصية كوسيط أول و قاموساً كوسيط ثاني يحوي في مفتاحة الكلمة المراد استبدالها و في مقابلها القيمة البديلة: نقوم بالمرور على القاموس بحلقة، ولكل عنصر منه نطبق عملية الاستبدال في السلسلة النصية باستخدام الدالة replace def replace_all(text, dic): for i, j in dic.items(): text = text.replace(i, j) return text ,التجريب: d = {"hello": "hi", "world": "adam"} my_sentence = "hello, world" my_sentence = replace_all(my_sentence, d) print(my_sentence)
-
هذه الدالة pygame.key.get_pressed تعيد مصفوفة بوليانية بالمفاتيح التي تم الضغط عليها، للتأكد من أن الحرف w أو s قد تم الضغط عليه يمكن استخام الشرط بهذه الطريقة: if pygame.key.get_pressed()[K_w]: print('w is pressed') if pygame.key.get_pressed()[K_s]: print('s is pressed')
- 7 اجابة
-
- 1
-
حاول تثبيت اتجاه العرض من خلال الخاصية : TextDirection.LTR في Directionality. child: Directionality( textDirection: TextDirection.LTR, تأكد من تضمين المكتبة: package:flutter/material.dart وليس المكتبة الجزئية: (ربما يتم تضمينها تلقائيا من المحرر وهذا يسبب مشكلة) textDirection وطبقها على العنصر الأب في الشاشة لديك MaterialApp( builder: (context, child) { return Directionality( textDirection: TextDirection.rtl, child: child, ); }, );
- 2 اجابة
-
- 1
-
بعد كتابة الشيفرات البرمجية للموقع، كتصميم واجهات أمامية Front End = HTML - CSS و لغة Back End مثلا PHP يتم نسخ الملفات لما يسمى استضافة، وهي حاسوب متصل على الشبكة، بعدها يمكن الدخول لرابط الموقع و تصفحه، طبعا يتم ربط الموقع عن طريق Domain وهو رابط URL. الربح من الموقع له أكثر من مصدر: إعلانات مثل Google Ads عضوية مدفوعة وسيط تجاري متجر الكتروني وغيرهم.. نسبة الربح حسب عدد الزوار و نوع الدخل، لا يمكن حسابه.
- 2 اجابة
-
- 1
-
يمكنك قراءة توثيق هذه الدالة، ومنه تعرف رمز كل مفتاح في لوحة المفاتيح التوثيق: pygame.org/docs/ref/key مثال للأحرف: K_a a a K_b b b K_c c c K_d d d K_e e e K_f f f K_g g g K_h h h K_i i i K_j j j K_k k k K_l l l K_m m m K_n n n K_o o o K_p p p K_q q q K_r r r K_s s s K_t t t K_u u u K_v v v K_w w w K_x x x K_y y y K_z z z الرمز الأول على اليسار يحمل قيمة مفتاح الحرف المقابل. ويوجد غيرهم لكل مفتاح.
-
يمكن تحديد النص المساع لعنصر ما في HTML عن طريق title لأي عنصر مثلا: <!DOCTYPE html> <html> <body> <p title="أكاديمية حسوب">https://academy.hsoub.com</p> </body> </html> أو ابحث عن CSS Tooltip
- 2 اجابة
-
- 3
-
أرجو أن تبدأي بكتابة البرنامج و سنساعدك إن حصل معك أخطاء. يمكنك تقسم الاستعلام ل أجزاء: عبارة select تجلب عدد المواد الدراسية ويمكن عدهم بواسطة الدالة count from بعدها نحدد اسم الجدول نستخدم تعليمة التجميع group by ونمرر لها عمود في الجدول يميز الطالب لوحده عن غيره السؤال ليس صعب، يمكنك حله وسنساعدك في تعلم الحل.
- 1 جواب
-
- 2
-
يمكن وضع شرط في بنية المكون تختبر المسار و عليه تقرر إما تظهر المكون أو تخفيه.. import { withRouter } from 'react-router-dom'; const ComponentToHide = (props) => { const { location } = props; // نعيد قيمة فارغة إن لم نرد عرض المكون لهذا المسار // route-path المسار الذي نريد إخفاء المكون فيه if (location.pathname.match(/route-path/)){ return null; } return ( <ComponentToHideContent/> ) } const ComponentThatHides = withRouter(ComponentToHide); حيث نستطيع معرفة الرابط من خلال location ووضع شرط مناسب