-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
الأمن السيبراني أو cyber security هي مجموعة من الخطوات التي نقوم بها لحماية موارد نظام معلوماتي على الشبكة من الاختراق أو التلاعب بالبيانات. يمكنك الاستفادة من الشرح التالي في التعريف: والخطوات الأساسية لدراساته مع مصادر من هنا: كما توفر أكاديمية حسوب عدداً من المقالات المتنوعة في مجال الحماية: devops/security
-
يمكننا المرور على جميع الجداول وعمل truncate لهم، افتح محرر الأوامر cmd أو terminal ثم اكتب أمر musql وبعد ظهور المؤشر اكتب السطر التالي: mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "truncate table $table" DATABASE_NAME; done هذا الأمر سوف يجلب أسماء جميع الجداول في قاعدة بيانات ما، ثم ينفذ أمر truncate الذي يحذف بيانات الجدول دون حذف هيكلية الجدول نفسه. إذا ظهر لك مشاكل (حذف جدول مرتبط بجدول آخر) أو لتجنب حدوث أخطاء بالأساس، نضبط عدم إظهار تحذيرات عند حذف المفاتيح الثانوية Forien kyes SET FOREIGN_KEY_CHECKS=0; ثم أمر الحذف ... ثم نعيد القيد SET FOREIGN_KEY_CHECKS=1; ويمكن تجميع الأوامر السابقة في script وحيد: SET FOREIGN_KEY_CHECKS = 0; SELECT @trunc_str := CONCAT('TRUNCATE TABLE ', table_schema, '.', table_name, ';') FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema IN ('db_name1','db_name2'); PREPARE statement FROM @trunc_str; EXECUTE statement; DEALLOCATE PREPARE statement; SET FOREIGN_KEY_CHECKS = 1; وإن أردت استخدام shell script: # اسم قاعدة البيانات DATABASE_NAME=$1 # اسم مستخدم قاعدة البيانات read -p "DB User: " DBUSER # كلمة السسر للمستخدم read -s -p "DB Password: " DBPASSWORD echo "" # طباعة فراغ # حذف بيانات الجداول mysql -Nse 'show tables' -D $DATABASE_NAME -u$DBUSER -p$DBPASSWORD | while read table; do echo "SET FOREIGN_KEY_CHECKS = 0;truncate table \`$table\`; SET FOREIGN_KEY_CHECKS = 1;"; done | mysql $DATABASE_NAME -u$DBUSER -p$DBPASSWORD exit 0 إن كنت تستعمل phpMyAdmin يمكن من واجهة التحكم تفريغ قاعدة البيانات: Database View => Check All (tables) => Empty
- 1 جواب
-
- 1
-
إن التعليمة drop table تقوم بحذف الجدول وتعريفه نهائيا من القاعدة أي البيانات مع الهيكلية الخاصة به Schema أما Truncate تحذف فقط البيانات، فعليك: تجنب استخدام عبارة DELETE FORM TABLE WHERE 1 لأنها بطيئة استخدام عبارة truncate لحذف محتوى جدول مع الإبقاء عليه TRUNCATE TABLE tbl_name للتخلص من الجدول بشكل نهائي استخدم DROP: DROP TABLE IF EXISTS tbl_name; فائدة العبارة DELETE في حذف سجلات يمكن تحديدها بشرط ما: DELETE FROM People WHERE F_Name = 'wael'
- 1 جواب
-
- 1
-
مثلما أخبرك المدرب سامح، عليك عمل تحقق من نوع الملف في Back End حاول استخدام أحد مكتبات PHP. يمكنك جلب لاحقة الملف : $_FILE['input_name']['type']; والدالة mime_content_type : <?php echo mime_content_type('php.gif') . "\n"; echo mime_content_type('test.php'); ?> image/gif text/plain مكتبات: mimey mimeDetector
- 6 اجابة
-
- 1
-
أحد الحلول كان بإضافة نمط فارغ '' للمصفوفة الخاصة بالتحقق var allowedTypes = [ 'application/x-zip', 'application/zip', 'application/x-zip-compressed', 'application/force-download', 'application/x-rar', 'application/rar', 'application/x-rar-compressed', 'application/force-download', 'application/octet-stream', '' // هنا ]
-
إن عملية رفع مشروع React تتضمن فقط عملية نقل الملفات إلى الاستضافة حيث أن المشروع سيكون عبارة عن ملفات ساكنة static files من HTML - CSS - JS والتي - بعد اختبار تطبيق - سوف تقوم ببناء النسخة الإنتاجية منه التي ستقوم برفعها على الانترنت، فإن كنت تستخدم npm مدير الحزم، اكتب الأمر: npm run build حيث سيتم تشكيل مجلد فيه الناتج النهائي من عملية ضفط وربط ملفات مشروعك وهذا المجلد سيكون الجذر لملفات الموقع "الواجهات الأمامية" يمكن رفع تطبيقات ريأكت React على أي استضافة، ولا تحتاج لقاعدة بيانات بنفسها أو أي مخدم. أيضا يمكن استعراضها على github pages على firebase بعد إنشاء حساب في الخدمة ثم ضمن المشروع نقوم بتهئيته لرفعه npm i -g firebase firebase init firebase deploy سيتخلل إضافة بعض الإعدادات لتوافق مشروعك في Firebase لايتطلب إعدادات إضافية
- 2 اجابة
-
- 1
-
حاول طباعة المتغير var fileType = file.type; وأخبرنا ما قيمته عند تحديدك لملف rar لديك، شكرا لك
- 6 اجابة
-
- 1
-
إن متطلبات تشغيل المشروع، تعتمد على إصدار Laravel بالإضافة للمكتبات الخارجية التي قمت بتثبيتها في composer.json متطلبات لارافيل العامة: في مسار PHP في ملف php.ini أزل الفاصلة المنقوطة ; من أمام كل من الميزات التالية لأن لارافل تعتمد عليهم ثم احفظ الملف وأعد تشغيل المخدم. على الأغلب تجد تنصيب PHP في مسار تثبيت المخدم الذي تستعمله أو نفذ سكربت <php phpinfo(); ?> المتطلبات: PHP >= 7.3 BCMath PHP Extension Ctype PHP Extension Fileinfo PHP Extension JSON PHP Extension Mbstring PHP Extension OpenSSL PHP Extension PDO PHP Extension Tokenizer PHP Extension XML PHP Extension بعد إنشائك لمشروع لارافل، احتفظ بالمجلد public بموقعه ضمن public_html ولا تبدله ولا تنقله المهم أن يكون متاح على الشبكة ، إنما باقي المشروع يمكن أن تضعه خارج public_html وتعدل السطرين التاليين في index.php ليدلا على مجلد الجذر للمشروع require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; إعداد ngnix الموصى به من لارافل: server { listen 80; # منفذ server_name example.com; # دومين root /srv/example.com/public; # مسار المشروع على الاستضافة add_header X-Frame-Options "SAMEORIGIN"; # إعدادات حماية add_header X-Content-Type-Options "nosniff"; index index.php; # الملف الجذر لتصفح المشروع charset utf-8; # ترميز الأحرف ليقبل العربية و غيرها من اللغات location / { try_files $uri $uri/ /index.php?$query_string; # إعادة توجيه الطلبات } location = /favicon.ico { access_log off; log_not_found off; } # أيقونة الموقع location = /robots.txt { access_log off; log_not_found off; } # ملف الفهرسة error_page 404 /index.php; # صفحة غير متوفرة location ~ \.php$ { # إعداد PHP fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } لرفع المشروع، ادخل مجلد المشروع ثم حدد جيمع الملفات والمجلدات بدون vendor ثم قم بعمل أرشيف أو ضغطه zip منهم، تحديد بزر الفأرة ثم add to archive ثم علينا رفع هذا الملف للاستضافة. نسجل دخول للوحة التحكم في الاستضافة، ثم نفتح متصفح الملفات ثم نتوجه ل public_html ونرفع الملف المضغوط عليه، ثم نفك الضغط. ننتقل لمسار المشروع ثم نقوم بتثبيت الاعتماديات: composer install --optimize-autoloader --no-dev ^^^^^^^^ لاتثبت اعتماديات المطورين نتأكد من أن المجلد public متاح للقراءة وله صلاحية (يمكن 644 ) مناسبة (755 موصى بها) مثله مثل مجلد التخزين storage و cache. chmod -R o+w storage chmod -R o+w bootstrap/cache وربط التخزين php artisan storage:link ln -s /home/username/laravel-project/storage/app/public/ /home/username/public_html/laravel-project/storage إنشاء قاعدة بيانات فارغة، لأن لارافل تقوم بعملية تهجير وتبني الجداول (طبعا أنت يفترض أن تتبع هذه الطريق) يفضل أن يكون للمستخدم صلاحيات كالة على القاعدة ALL PREVILLAGE ثم يبقى تعديل ملف البيئة env وإدراج معلومات قاعدة البيانات التي أنشأناها مع معلومات المستخدم. APP_URL=http://localhost DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret ونقوم بإلغاء تفعيل app_debug APP_DEBUG=false وباقي الإعدادت APP_NAME=Laravel اي اسم APP_ENV=production APP_KEY= سيتم توليده من خلال أمر لاحق APP_DEBUG=false APP_URL=http://localhost رابط الاستضافة لديك ثم نولد مفتاح: php artisan key:generate نحذف الكاش: php artisan config:cache php artisan route:cache php artisan view:cache ثم نقوم بعمل التهجير php artisan migrate php artisan db:seed في حال بيانات افتراضية الآن الموقع جاهز للعمل، جزء API ليس له متطلبات إضافية في حال اتصالك بقواعد بيانات خارجية تأكد من ضبط driver الخاص بها لكل خدمة laravel/config/database.php ... 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('RDS_HOSTNAME', '127.0.0.1'), 'port' => env('RDS_PORT', '3306'), 'database' => env('RDS_DB_NAME', 'forge'), 'username' => env('RDS_USERNAME', 'forge'), 'password' => env('RDS_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ... لإضافة تعديلات، نطفي artisan ثم نعيد تشغيله بعد الانتهاء php artisan down إيقاف php artisan up تشغيل في حال قمت بعدد من التعديلات الكثيرة، ولكي لارفع المجلد المضغوط عددة مرات، يمكن رفع المشروع على مستودع مثل github أو gitbucket ثم استنساخ المستودع git clone أول مرة ثم git pull.. بعد كل تحديث تقوم به (git push إلى المستودع) لكي تسحب التحديثات للاستضافة تابع المستجدات على توثيق لارافل.
- 7 اجابة
-
- 5
-
لكي تجعل المفتاح AWS_ACCESS_KEY_ID قبل للقراءة زمن التشغيل أي runtime variable يجب تعديل الضبط لديك لأنه الآن يعمل وفق build time variable وذلك بإضافة الإعدادات ل serverRuntimeConfig // سوف نستبدل هذه env: { AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID }, // بهذه module.exports = { serverRuntimeConfig: { AWS_ACCESS_KEY_ID: process.env.AWS_ACCESS_KEY_ID } } وتأكد من ضبط aws.config.update حيث أن هيكليته لديك غير مطابقة للتوثيق const aws = require('aws-sdk') aws.config.update({ 'credentials': { 'accessKeyId': process.env.AWS_ACCESS_KEY_ID_MYAPP, 'secretAccessKey': process.env.AWS_SECRET_ACCESS_KEY_MYAPP }, 'region': process.env.AWS_REGION_MYAPP, 'bucketname': process.env.AWS_BUCKET_NAME // (...) }) // New S3 class const s3 = new aws.S3() module.exports = (req, res) => { // (...) } توثيق: AWS SDK Environment Variables
-
يوجد في vs code عدة إضافات لكل لغة برمجية، يمكنك تجريب أي منهم وبقاء التي أعجبتك مفعلة enable وأبطل التي لاتريدها disable. عليك الآن، إما إنشاء مجلد وتضع فيه مشروعك البرمجي، أو فقط تقوم بإنشاء ملف، وتأكد من أن اللاحقة cpp. ثم اكتب الشيفرة التي تريها ضمنه. ربما لن ينفذ الملف لأنه ليس لديك مترجم لغة c++ حيث عليك تحميله بشكل منفصل. يمكنك تثبيت المترجم: Mingw-w64 via MSYS2 يمكنك أيضاً استخدام CodeBlocks
- 1 جواب
-
- 2
-
إن كلاً من cin و cout تستعمل قنوات الدخل والخرج input - output streams لقراءة وكتابة البيانات بين البرنامج والبيئة الخارجية مثل الملفات أو cosole، ربما أحياناً يحدث أخطاء في الاتصال ضمن القناة، وقد تحوي هذه القنوات على بيانات غير معالجة وفي حال استخدام القنوات مرة ثانية بدون تنظيفها أي عمل flush لها، قد تسبب بقراءة بيانات خاطئة. fflush(stdin); لذلك التعليمة cin.tie(0) و cout.tie(0) تعمل على عمل flush تلقائي قبل كل إعادة استخدام للقناة أي تعمل flushing of std::cout قبل قبول دخل جديد من std::cin. تفيد في البرامج التفاعيله interactive console programs وتضر في حال بيانات ضخمة. هذه التعليمة ليس لها هلاقة بالأداء. وربما استخدامها مع بعض ال platform قد يسبب مشكلة في حال عدم تطبيقها بشكل صحيح بعد كل استخدام. مهمتهم تنظيف ال Buffer التخزين المؤقت من أي بيانات لضمان صحة البيانات الجديدة. لتحقيق أداء أفضل (تسريع عمليات الدخل و الخرج) وفقط سوف تنفع في حال بيانات كثيرة أي مئات ألوف القيم يمكن إبطال المزامنة بين cin - cout والمكتبة القياسة std للغة (يصبح تنفيذهم مباشر بدون التحقق من التزامن) ios_base::sync_with_stdio(false);
- 1 جواب
-
- 2
-
أنا بحثت عن MariaDB 10 - rename column
- 8 اجابة
-
- 1
-
هل يمكنك تصفح قاعدة البيانات والتأكد من اسم الجدول؟ لربما قد تغير بدون أن تنتبه حاول عمل هذه: alter table table_name change column original_name new_name
- 8 اجابة
-
- 3
-
تأكد من حفظ الملف ثم إعادة التجريب، وأرجو مشاركة رسالة الخطأ إن ظهرت.. وحاول إرفاق أي معلومات عن إصدار قاعدة البيانات لديك.
- 8 اجابة
-
- 1
-
ربما تكمن المشكلة أنك لم تذكر أنك تريد تعديل عمود column : ALTER [ONLINE] [IGNORE] TABLE [IF EXISTS] tbl_name .. RENAME COLUMN old_col_name TO new_col_name لأن عدم تحديد عمود يقود إلى تعديل مفتاح أو دليل RENAME {INDEX|KEY} old_index_name TO new_index_name اكتب: ALTER TABLE t1 RENAME COLUMN c_old TO c_new; ALTER TABLE $table1 RENAME COLUMN post TO name; ^^^^^^^^ أي المشكلة بالتحديد هي ذكر COLUMN
-
الحل هو إعادة تضمين ملف إعادادت firebase من خلال القائمة التالية.. حسب الصورة.. اعمل نسخة من الملف خارج المشروع واحذف التي يحويها المشروع، ثم من القائمة اعمل على تضمين الملف مجدداً.. لاحظ المشكلة أن XCODE لن يربط الملف مع المروع في حال تم وضعه من متصفح الملفات. إنما عليك إضافته من القائمة إعادة تشغيل XCODE ربما تحل المشكلة
- 10 اجابة
-
- 1
-
أحدهم قام بحذف الهاتف من ذاكرة Xcode أي عمل له unregister ثم أعاد وصله قد تضطر للذهاب لحساب مطور أبل لديك، في قسم 'Certificates, Identifiers & Profiles' > profiles > provisioning profiles ثم إضافة الجهاز الذي تستعمله للاختبار، اتبع بعض الخطوات وسوف تحصل على ملف قم بتحميله بأي اسم.. ثم قم بتشغيله بالنقر المزدوج عليه سيتم ربط الهاتف وحل المشكلة حاول تحديث مكتبات XCODE ربما تحتاج لإعادة توقيع التطبيق مع التنسيق الجديد له Using the Latest Code Signature Format.. لحل المشكلة التي سببها تحديث نظام IOS عن طريق Flutter اتبع التوثيق المقدم من فلاتر: flutter/ios-project-migration ربما يوجد مفتاحين تحقق للجهاز، احذف الأول security find-identity -p codesigning -v security delete-identity -Z المفتاح لديك وشرح إضافي من القائمين على Flutter من github
- 10 اجابة
-
- 2
-
أحد الحلول هي كالتالي: TARGETS -> select[your project name] -> General -> Frameworks,Libraries,and EmbeddedContent -> set the framework with [Do Not Embed] لكي لايتم تضمين static frameworks حسب موقع آبل، فلاتر تعمل مع dynamic frameworks static frameworks يتم تضمينهم في المرحلةالنهائية من تجميع التطبيق
- 10 اجابة
-
- 1
-
يفضل في هكذا مشكلة، إرفاق الشيفرات مباشرة وشرح كيفية استخدامك لها (ضع الشيفرات التي تعتقد أنها سبب المشكلة في السؤال ضمن محرر الأكواد) واشرح عنها
-
حاول تثبيت المكتبة، ربما هي اعتمادية npm install intl ثم عليك تضمينها، import "intl"; import { Platform } from "react-native"; import "intl/locale-data/jsonp/en"; if (Platform.OS === "android") { // See https://github.com/expo/expo/issues/6536 for this issue. if (typeof (Intl as any).__disableRegExpRestore === "function") { (Intl as any).__disableRegExpRestore(); } } تأكد من وضع هذه الشيفرة في أول الصفحة إن كنت تستخدم ريأكت نيتف، فربما تحتاج لثبيت react-intl "jsc-android": "^241213.1.0", "react": "16.9.0", "react-intl": "^4.3.1", "react-native": "^0.62.2", قد تختلف إصدارات هذه المكتبات، حاول تثبيتهم بطريقة عادية، باسم المكتبة
- 2 اجابة
-
- 1
-
سنعمل عدة خطوات لحل المشكلة: تجميع طلبيات كل شخص على حدى باستخدام group by ثم عمل استعلام فرعي يختبر تصنيف طلبيات كل شخص select customer_name , (case WHEN 'DELIVERED' = ALL (SELECT status FROM customer_order) then 'COMPLEATED' WHEN 'SUBMITTED' = ALL (SELECT status FROM customer_order) then 'AWATING PROGRESS' WHEN 'DELIVERED' != some(SELECT status FROM customer_order) then 'IN PROGRESS' ELSE 'AWATING SUBMITTON' END) as final_status from customer_order group by customer_name إن لم يعمل الاستعلام، يمكن تجزيئه واستخدام VIEW وتشكل جدول يحوي جزء من العلاقة. كما استخدمنا العبارة CASE لإعادة حالة مجموعة الطلبيات، حيث كل منها تختبر أحد الحالات، وتعيد سلسلة نصية كما هو مطلوب. لاحظ أن ترتيب عمل الشروط ضمن CASE ضروري حسب الحالات لديك
- 1 جواب
-
- 1
-
بالإضافة لمقالات أكاديمية حسوب التي تتكلم عن لغة بايثون، يمكنك مراجعة توثيق موسوعة حسوب التي تحوي فهرس شامل لكل خواص اللغة وكما يوجد أمثلة توضيحية. رابط توثيق موسوعة حسوب للغة بايثون: wiki.hsoub/Python
- 2 اجابة
-
- 1
-
إن هدف الصفحة documeny.js_ هو التهيئة لبيانات التوصيف لصفحات الموقع، أما لعمل جزء من الشيفرة مشترك بين الصفحات نضعه في الصفحة app.js ويتم عمل render لصفحة document على المخدم (السيفر). كما يبدو من استخدامك لشات المحادثة فهو مكون مشترك shared components ضعه في app.js حاول مراجعة التوثيق: nextjs/custom-document إن وجدت حلاً مختلفاً يمكنك مشاركته.
- 1 جواب
-
- 1