-
المساهمات
14490 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
384
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
تلك العملية تتم من جهة قاعدة البيانات، فالأمر عبارة عن تخزين بيانات ثم مقارنتها والتحقق منها والسماح أو المنع بعد ذلك حسب النتيجة. فأولاً، تحتاج إلى إنشاء جداول قاعدة البيانات لتخزين المستخدمين والسيريالات. CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL ); CREATE TABLE serials ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, serial_key VARCHAR(50) NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, used TINYINT(1) DEFAULT 0 ); ثم عند شراء المستخدم للسكربت، يتم توليد السيريال وتخزينه في قاعدة البيانات. function generateSerial($userId) { $randomPart = bin2hex(random_bytes(15)); $datePart = date('Ymd'); $serial = $userId . '-' . $randomPart . '-' . $datePart; return $serial; } function storeSerial($userId, $serial) { $pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password'); $stmt = $pdo->prepare("INSERT INTO serials (user_id, serial_key) VALUES (:user_id, :serial_key)"); $stmt->execute(['user_id' => $userId, 'serial_key' => $serial]); } // افتراض أن المستخدم قد اشترى السكربت وتم تمرير معرف المستخدم $userId = 1; $serial = generateSerial($userId); storeSerial($userId, $serial); وفي صفحة التحقق من السيريال، تقوم بالبحث عن المستخدم ثم التحقق من السريال ثم تحديث حالة السيريال على أنه أصبح مستخدم ثم متابعة التثبيت، وإن لم يحدث ذلك يعني أنّ التحقق فشل ولا يتم المتابعة. function verifySerial($username, $serial) { $pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password'); $stmt = $pdo->prepare("SELECT id FROM users WHERE username = :username"); $stmt->execute(['username' => $username]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user) { $userId = $user['id']; $stmt = $pdo->prepare("SELECT * FROM serials WHERE user_id = :user_id AND serial_key = :serial_key AND used = 0"); $stmt->execute(['user_id' => $userId, 'serial_key' => $serial]); $serialData = $stmt->fetch(PDO::FETCH_ASSOC); if ($serialData) { $stmt = $pdo->prepare("UPDATE serials SET used = 1 WHERE id = :id"); $stmt->execute(['id' => $serialData['id']]); return true; } } return false; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = $_POST['username']; $serial = $_POST['serial']; if (verifySerial($username, $serial)) { } else { unlink('install.php'); echo "بيانات خاطئة أو السيريال مستخدم سابقاً."; } } وبخصوص التحقق من أن كود الحماية لم يُزال، يمكنك استخدام تقنيات مثل Obfuscation (إخفاء الكود) أو تضمين كود التحقق في أماكن متعددة في السكربت. function checkIntegrity() { if (!file_exists('install.php')) { header('Location: رابط موقعك'); exit(); } } checkIntegrity(); حيث تقوم بتضمين الدالة السابقة في جميع الملفات المهمة للتأكد من أن ملف install.php لم يُحذف.
- 2 اجابة
-
- 1
-
-
بالطبع أنت ستعتمد على محرك البحث لتحصل على زيارات، إذن عليك أولاً ضبط الـ SEO لموقعك، من خلال تحسين جودة الموقع وتصمميه وسرعة تحميله أي تحسين تجربة المستخدم فهي العامل الأهم حاليًا. ومن ضمن تلك الأمور هو شراء دومين ولا يشترط .com تستطيع شراء دومين بأي لاحقة مختلفة وبسعر زهيد. وإذا لا تريد شراء دومين فحاول التقدم لمنصة Adsterra فهي تقبل ذلك. بعد ذلك ستحتاج إلى كتابة مقالات في موقعك لتسويقه من خلال المحتوى ويظهر على كلمات محددة في جوجل. أيضًا إنشاء روابط باك لينكس backlinks لتحسين ظهور الموقع في جوجل ومدى موثوقيته. وستحتاج 10 آلاف زائر كحد أدنى لتتمكن من التقدم لأحد مقدمي الإعلانات، مثل ezoic. لديك أيضًا Mediavine لكن يتطلب 25,000 زائر شهريًا على الأقل. ألقي نظرة على popads أيضًا.
- 3 اجابة
-
- 1
-
-
لم يتم ذكر ما نوع المشروع والبيانات الخاصة به؟ عامًة لا مشكلة في استخدام أكثر من قاعدة بيانات مع Django، تفقد التالي: https://docs.djangoproject.com/en/5.0/topics/db/multi-db/ وهو يقصد الجداول الداخلية التالية: django_content_type (content types for models) django_migrations (migration history) django_session (session data) auth_permission (permissions) auth_group (groups) بسبب ذلك، عليك تخصيص قاعدة بيانات مركزية تحتوي على الجداول التي يستخدمها Django داخليًا. ثم استخدم موجهات قواعد البيانات Database Routers لتحديد الجداول التي يجب أن تكون في قاعدة البيانات المركزية والجداول التي يمكن أن تكون في قواعد البيانات الأخرى.
-
لم تذكر ما الداعي لفعل ذلك، حيث أنّ IIS يعمل على نظام ويندوز فقط لكونه من تطوير مايكروسوفت. عامًة، لا مشكلة في استخدام IIS بدلاً من XAMPP لتشغيل تطبيقات PHP، فكل من IIS و XAMPP خادمان ويب يمكنهما تشغيل تطبيقات PHP. لكن XAMPP هو حزمة خادم ويب مجانية ومفتوحة المصدر تحتوي على Apache و MySQL و PHP و Perl و متاحة لأنظمة Windows و macOS و Linux. والعمل على IIS ليس بالسهل وستحتاج إلى خبرة ودراية به على عكس XAMPP. وربما تحتاج إلى إجراء بعض التعديلات على كود PHP لديك في حال كنت تستخدم ميزات أو امتدادات خاصة بالخادم والتي قد لا تكون متوفرة على كلا الخادمين، بمعنى لو تستخدم وحدات أو دوال خاصة بـ Apache، فستحتاج إلى تعديل كودك لاستخدام بدائل متوافقة مع IIS. أيضًا ملفات .htaccess في Apache، ستحتاج إلى تحويلها إلى قواعد URL Rewrite في IIS.
- 1 جواب
-
- 1
-
-
تعلم سي شارب الحلقات التكرارية في لغة سي شارب #C
Mustafa Suleiman علق على مقال حسام برهان في لغة C#
الحل صحيح، تستطيع تحسينه بتجنب طباعة فاصلة زائدة في النهاية، الفكرة هي التأكد من أن الفاصلة تُطبع فقط بين الأرقام وليس بعد آخر رقم في السلسلة. for (int i = 1; i <= 100; i++) { if (i % 5 != 0) { if (i > 1 && (i - 1) % 5 != 0) { Console.Write(","); } Console.Write(i); } } استخدمت شرطًا إضافيًا داخل الحلقة للتحقق في حال كان الرقم الحالي ليس الأول في السلسلة (i > 1) وأن الرقم السابق لم يكن مضاعفًا للـ 5 ((i - 1) % 5 != 0). بالتالي طباعة الفاصلة فقط بين الأرقام التي ليست مضاعفات للـ 5، وتجنب الفاصلة الزائدة في النهاية. وللعلم يوجد حل آخر باستخدام قائمة لتخزين النتائج، فبدلاً من التحقق داخل الحلقة، باستطاعتك استخدام قائمة لتخزين الأرقام ومن ثم طباعة الأرقام مرة واحدة بفاصلة بين كل رقم: using System; using System.Collections.Generic; class Program { static void Main() { List<int> numbers = new List<int>(); for (int i = 1; i <= 100; i++) { if (i % 5 != 0) { numbers.Add(i); } } Console.WriteLine(string.Join(",", numbers)); } } -
السؤال غير واضح، ما المقصود؟ هل تقصد إلغاء خاصية منع نسخ النص من موقع معين؟ هناك إضافات للمتصفح تسمح لك بذلك. عامًة لو تقصد إزالة حماية النسخ (مثل تعطيل النقر بزر الماوس الأيمن ومنع سحب الصور) وتريد فعل ذلك بنفسك، فستحتاج إلى كود JavaScript لتعطيل بعض وظائف المتصفح التي تقوم بحماية المحتوى، ولكن يرجى ملاحظة أن تلك الممارسات غير قانونية أو غير أخلاقية إن كنت تحاول تجاوز حقوق الطبع والنشر أو الحماية التي وضعها مالك الموقع.
-
في الأكاديمية لا يتوفر ذلك،. وعامًة MQL5 (MetaQuotes Language 5) عبارة عن لغة برمجة مخصصة لتطوير الأدوات والبرامج المستخدمة في منصة التداول MetaTrader 5 (MT5) كما ذكرت. والتي تُستخدم بشكل واسع في أسواق المال لتداول العملات الأجنبية (فوركس)، الأسهم، العقود الآجلة، وعقود الفروقات (CFDs). ستجد على اليوتيوب شرح للنسخة Mql4 بالعربية، لكن MQL5 ستجد شرح بالإنجليزية.
-
تعلم سي شارب الحلقات التكرارية في لغة سي شارب #C
Mustafa Suleiman علق على مقال حسام برهان في لغة C#
جيد جدًا، نقوم أيضًا استخدام TryParse بدلاً من Parse لتجنب حدوث استثناءات في حالة إدخال قيم غير صحيحة. using System; class Program { static void Main() { Console.WriteLine("Please enter a positive integer:"); if (!int.TryParse(Console.ReadLine(), out int n) || n <= 0) { Console.WriteLine("Invalid input. Please enter a positive integer greater than 0."); return; } CalculateAndPrintFactorial(n); } static void CalculateAndPrintFactorial(int n) { int sum = 1; for (int i = 1; i <= n; i++) { sum *= i; Console.WriteLine(sum); } } } إن أدخل المستخدم قيمة أقل من أو تساوي 0، يتم عرض رسالة "n must be > 0" ويتم إنهاء التطبيق باستخدام return. و int.TryParse يحاول تحويل الإدخال إلى عدد صحيح، وفي حال فشل التحويل، يعود false ويتجنب حدوث استثناء. إن كانت القيمة المدخلة أكبر من 0، يتم تنفيذ الحلقة التكرارية لحساب وعرض القيم المتتابعة للمتغير sum. -
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس لمساعدتك بشكل أفضل. مع إرفاق مجلد المشروع بعد ضغطه لتفقده.
-
تقصد الصورة في معرض الأعمال أم الصورة الشخصية؟ عامًة الصورة الشخصية تستطيع تعديلها من خلال الرابط التالي: https://accounts.hsoub.com/settings?service=11
-
مايكروسوفت إكسل أحد البرامج التي لا غنى عنها لأي شخص يتعامل مع الحاسوب، فمهما كانت اهتمامتك ستحتاج إليه في وقت من الأوقات. لكن في حالك أنت كونك مهندس برمجيات، فلن تحقق استفادة منه إلا إن كنت تتعامل مع البيانات في مشروع معين مثلاً. لكن للاستخدام الشخصي فهو جيد جدًا كما ذكرت، تستطيع تنظيم أمور حياتك من خلال ملف معين وتخصيصه حسب الأمور التي تريد متابعتها وتنظيمها، وحتى في عملك ستحتاج أحيانًا إلى التعامل مع ملفات Excel. تفقد الموقع التالي وستجد الكثير من القوالب المفيدة: https://www.vertex42.com
- 2 اجابة
-
- 1
-
-
هناك وجهات نظر مختلفة، لكن في رأي الاستيعاب والحفظ مهمان في بداية التعلم، فالاستيعاب وحده لا يكفي، والتطبيق العملي يقوم بتثبيت ذلك الاستيعاب والحفظ بنسبة أكبر، وبعد ذلك لو نسيت بعض الأمور لا مشكلة وليس جميعها بالطبع، ومع التكرار ستترسخ لديك الأمور التي أنت بحاجة بشكل متكرر في المشاريع. وباقي الأمور تستطيع البحث عنها واسترجاعها لكونك قد استوعبتها من قبل وتستطيع استخدامها بدون مشكلة، والجميع كذلك. النقطة المحورية هي التطبيق العملي بمفردك، فلا يكفي التطبيق وراء الشرح فقط، وذلك أمر يتكاسل عنه الغالبية رغم أن الفائدة تكمن به. ستجد هنا تفصيل أرجو قراءته:
- 2 اجابة
-
- 1
-
-
صحيح، من أشهر الخوارزميات المستخدمة في التجميع Clustering نظرًا لبساطتها وسرعتها في التنفيذ، ولا يعني هذا بالضرورة أنها الأفضل في جميع الحالات، فهناك العديد من الخوارزميات الأخرى التي تكون أكثر فعالية حسب طبيعة البيانات والمشكلة التي تحاول حلها. مثلاً DBSCAN (Density-Based Spatial Clustering of Applications with Noise) تعتمد الخوارزمية على الكثافة ولا تتطلب تحديد عدد المجموعات مسبقًا، كما أنها قادرة على التعامل مع الضوضاء والعثور على المجموعات ذات الأشكال غير المنتظمة. ولديك أيضًا Hierarchical Clustering التجميع الهرمي، مفيد في الحالات التي ترغب فيها ببناء شجرة تراتبية من المجموعات، وتوجد أشكال مختلفة من التجميع الهرمي مثل التجميع المتراكم Agglomerative والتجميع التقسيمي Divisive. بجانب Gaussian Mixture Models (GMM) وتلك الخوارزمية تعتمد على النماذج الإحصائية وتستخدم لتقدير التوزيعات المختلفة في البيانات، وهي أكثر مرونة من K-Means في التعامل مع مجموعات البيانات التي تمتلك أشكالًا وتوزيعات مختلفة. بالإضافة إلى Spectral Clustering التي تستخدم لتحليل القيم الذاتية لمصفوفة التشابه لإنشاء مجموعات، وفعالة في اكتشاف المجموعات المعقدة في البيانات. أخيرًا خوارزمية Mean Shift التي تعتمد على تقدير الكثافة لتحديد مراكز المجموعات، ولا تتطلب تحديد عدد المجموعات مقدما.
- 3 اجابة
-
- 1
-
-
لن يتم السؤال في كل الأمور النظرية، مع التركيز بشكل أكبر على الجانب العملي والأمور النظرية الهامة بالنسبة للجانب العملي. أيضًا السؤال حول التطبيقات العملية التي قمت بها ومدى استيعابك، بعد ذلك سيتم تحديد مشروع عملي لك لتنفيذه كمشروع تخرج.
- 2 اجابة
-
- 1
-
-
أتفهم الظروف في دولة اليمن، لكن مجال البرمجة له طابع خاص، وهو أن الشهادة ليس لها وزن بشكل كبير، نعم هي دلالة على أنه الشخص اجتاز محتوى تعليمي معين ولديه مهارات معينة، لكن ليس بالضرورة أن ذلك صحيح. لذا يتم الإهتمام بالمهارات الفعلية وليس الشهادة، أي ما أنت قادر على تقديمه وتنفيذه في الواقع العملي وإثباته من خلال معرض أعمالك. في الأكاديمية لا يوجد ماجستير فقط شهادة إعتماد على إتمام الدورة وليس حضورها أي يتم منحها لن اجتاز الدورة بالفعل واستوعبها وأتم التطبيقات العملية.
-
بخصوص ذلك، أرجو التحدث لمركز المساعدة، فالأمور المالية أو تبديل الدورات يتم من خلاله. وفي حال هناك أمر تودي الاستفسار عنه أرجو طرحه.
- 2 اجابة
-
- 1
-
-
السن مناسب لا مشكلة، فالحد الأدنى هو ما بين 8 إلى 11 سنة، لكن دورة جافاسكريبت دورة متقدمة بعض الشيء، ستحتاج أولاً إلى دراسة دورة علوم الحاسوب. وكحل وسط، تستطيع تعلم أساسيات البرمجة من خلال سكراتش من أي مصدر، ثم الإشتراك بدورة جافاسكريبت هنا بالأكاديمية. ستجد تفصيل هنا:
-
بالطبع، لكن هناك أمر يجب توضيحه، علوم الحاسوب ليس الهدف منها تعلم مجال معين، بل التأسيس لمجال البرمجة بشكل عام بيحث تقف على أرض صلبة وتتفهم المفاهيم البرمجية وأساسيتها، والمجالات المختلفة للبرمجة وآلية عمل التقنيات وما الفائدة منها وتاريخها وهكذا. بحيث يتكون لديك مهارة التفكير المنطقي والقدرة على إتخاذ القرارات البرمجية على وعي. حيث ستتعلم التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب ما سبق سيفيدك بلا شك في أي مجال برمجي تختاره بعد ذلك، وبدونه ستواجه صعوبة في تفهم ما يحدث ويزداد الأمر صعوبة كلما ازدادت صعوبة المجال، فمجال الألعاب من المجالات الصعبة والتي بحاجة إلى مجهود أكبر وتأسيس جيد بالبرمجة. المقال التالي سيفيدك:
-
للتوضيح، ملف web.php هو لتعريف مسارات الويب العادية التي تتعامل مع الطلبات التي تأتي من المتصفحات، وتلك المسارات في العادة نستخدمها لتقديم صفحات HTML، وتعتمد على الجلسات sessions وحماية CSRF. بينما ملف api.php الغرض منه تعريف مسارات واجهات برمجة التطبيقات APIs التي تتعامل مع الطلبات التي تأتي من تطبيقات العملاء أو الخدمات الأخرى وليس من المتصفحات بشكل مباشر، وذلك لإرجاع البيانات بصيغة JSON ولا تعتمد على الجلسات وحماية CSRF. ومسارات الـ API تلك عديمة الحالة stateless، بمعنى أن كل طلب يتم معالجته بشكل مستقل عن الطلبات الأخرى، ولا يتم الاحتفاظ بأي معلومات عن المستخدم أو الطلب بين الطلبات المختلفة، فكل طلب يحتوي على جميع المعلومات اللازمة لمعالجته. ومن ضمن وظائف الـ API توفير وظائف أو بيانات معينة لتطبيقات أو خدمات خارجية، مثلاً يستطيع تطبيق التجارة الإلكترونية أن يوفر واجهة API للسماح لتطبيقات الجوال بالوصول إلى قائمة المنتجات، معالجة الطلبات، وما إلى ذلك.
-
بالضبط، به تستطيع تعريف مسارات الويب التي تتعامل مع مختلف أنواع الطلبات HTTP مثل GET, POST, PUT, DELETE، وغيرها، فكل مسار يشير إلى وحدة تحكم Controller لمعالجة الطلب أو إلى دالة مغلقة Closure. للتوضيح: <?php use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('welcome'); }); Route::post('/submit', 'FormController@submit'); أيضًا المسارات المحددة في web.php تُطبق عليها وسيط (Middleware) web بشكل افتراضي، والذي يتعامل مع الجلسات sessions وملفات تعريف الارتباط cookies، بالتالي هي مناسبة للصفحات التي تحتاج إلى تتبع حالة المستخدم، مثل صفحات تسجيل الدخول، سلال التسوق، إلخ.
-
ما تريده هو تحديد النسبة المئوية في عمود commission تلقائيًا عند إدخال قيمة في عمود amount، في عمود commission، اكتب التالي: =B:B*0.01 هنا افترضت أن عمود amount في عمود B ضع ما سبق في عمود commission وانسخ المعادلة في جميع الحقول الخاصة بالعمود وسيتم حساب نسبة مئوية 1% نفس الأمر يتم من خلال المعادلة السابقة. ستحتاج إلى استخدام معادلة مثل التالي: =A1-B1 عليك بالطبع تعديل أسماء الخلية في المعادلة ليتم الخصم بشكل صحيح، حيث A1 تعني الخلية الأولى في عمود A وهكذا. ضع المعادلة السابقة في الخانة رقم 3 التي تود أن تظهر بها نتيجة الخصم.
- 3 اجابة
-
- 1
-
-
صحيح ستجدها بشكل واسع في معادلات الانحدار Regression في مجال الإحصاء وتحليل البيانات، خاصة في الانحدار الخطي المتعدد Multiple Linear Regression. في نموذج الانحدار الخطي البسيط، العلاقة بين المتغيرات تُكتب على شكل معادلة: [ y = \beta_0 + \beta_1 x + \epsilon ] للتوضيح: ( y ) هو المتغير التابع. ( x ) هو المتغير المستقل. ( \beta_0 ) هو التقاطع (الجزء الثابت). ( \beta_1 ) هو معامل الانحدار (الوزن). ( \epsilon ) هو الخطأ العشوائي. في حالة الانحدار الخطي المتعدد، تستطيع كتابة النموذج بشكل مصفوفة كالتالي: [ \mathbf{Y} = \mathbf{X} \boldsymbol{\beta} + \mathbf{\epsilon} ] حيث (\mathbf{Y}) هي متجه القيم التابعة و (\mathbf{X}) هي مصفوفة القيم المستقلة (كل صف يمثل متغير مستقل وكل عمود يمثل عينة). (\boldsymbol{\beta}) هي متجه المعاملات و (\mathbf{\epsilon}) هي متجه الأخطاء العشوائية. من خلال تلك الصيغة المصفوفية، باستطاعتك استخدام العديد من التقنيات الجبرية مثل الجبر الخطي للحصول على حلول فعّالة وسريعة للمعادلات، مثل طريقة المربعات الصغرى العادية Ordinary Least Squares التي تُستخدم لتقدير المعاملات (\boldsymbol{\beta}) كالتالي: [ \boldsymbol{\beta} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{Y} ] تلك الطريقة تعتمد على عمليات مصفوفية مثل الضرب، النقل، والعكس.
- 2 اجابة
-
- 1
-
-
هل يتم غلق الشاشة ثم تعمل مرة أخرى؟ أم لا تعمل نهائيًا؟ ففي حال كان اللابتوب لديك حديث وبه شاشة ذات معدل تحديث مرتفع مثل 120 فيتم خفض ذلك المعدل عند العمل على البطارية ثم تفعيله عند وضع الشاحن من أجل خفض معدل الاستهلاك للطاقة. في حال لا تعمل بشكل نهائي، فعليك تعطيل تلك الخاصية أي خاصية التنقل بين معدل التحديث. قم بقراءة التالي: