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

ياسر مسكين

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

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

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

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

    6

كل منشورات العضو ياسر مسكين

  1. بالطبع فتعلم تطوير المواقع أمر ذو أهمية كبيرة في وقتنا هذا، حيث يمكن لهذه المهارة أن تفتح لك أبوابا كثيرة لفرص العمل وتحقيق النجاح المهني. على سبيل المثال، عند اكتسابك لمهارات تطوير المواقع، يمكنك بناء تطبيقات ومواقع ويب مثل متجر إلكتروني، منصة تعليمية أو حتى شبكة اجتماعية. كما يمكنك العمل كمطور ويب في شركات تكنولوجية معينة أو بدء مشروعك الخاص كمطور ويب مستقل. مهارة تطوير المواقع ستبقى مطلوبة في المستقبل نظرا للتطور المستمر في تكنولوجيا المعلومات وزيادة الطلب على الحلول الرقمية. فمثلاً، بناء تطبيقات الويب والمواقع الذكية يظل ضروريا لأي نشاط تجاري يسعى لتوسيع نطاق عمله عبر الإنترنت وتحسين تجربة المستخدم. أما بالنسبة لفرص العمل بعد تعلم تطوير المواقع فهي تتنوع بشكل كبير، حيث يمكنك العمل كمطور ويب في الشركات التكنولوجية، أو كمطور مستقل حيث يمكنك بناء مواقع وتطبيقات مخصصة للعملاء، أو حتى بدء مشروعك الخاص كموقع أو تطبيق يحل مشكلة معينة في المجتمع. بالنسبة لسؤالك الآخر، فالذكاء الاصطناعي يمكن أن يساعد في حل مشاكل معقدة وتطوير تطبيقات متقدمة. على سبيل المثال، يمكن استخدام الذكاء الاصطناعي في تطوير تطبيقات الذكاء الصناعي مثل مساعدات الصوت مثل Siri و Alexa، أو في تحليل البيانات الضخمة في المجالات الطبية والمالية وتتنوع مجالات استخداماته بشكل كبير. يمكن تعلم الذكاء الاصطناعي دون الحاجة لمعرفة عميقة بالرياضيات، حيث يمكنك البدء بتعلم لغات البرمجة المستخدمة في تطوير الذكاء الاصطناعي مثل Python و TensorFlow. بعد ذلك، يمكنك استخدام الموارد المتاحة عبر الإنترنت لتعلم المفاهيم الأساسية وتطبيقها في مشاريع عملية مثل بناء نماذج التعلم الآلي لتصنيف الصور أو تحليل النصوص. وأنصحك بهذه المصادر القيمة للتعلم: https://academy.hsoub.com/programming/artificial-intelligence/
  2. المشكلة قد تكمن في كيفية استخدامك للمتغير `variant` في الكلاس الخاص بال CSS، قفي Tailwind CSS، لا يمكن استخدام المتغيرات داخل السلاسل كما فعلت، ولكن يمكنك استخدام القوسين الدائريين `{}` لتضمين القيمة المتغيرة داخل السلسلة، وعند استخدام المكون Message في تطبيق React وتمرير خاصية variant، يجب أن ننشئ فئات مثل text-red-700 و bg-red-100 إذا كانت قيمة variant تساوي "red"، كمثال: import React from 'react'; function Message({ variant, children }) { // تحقق من قيمة variant في الكونسول للتأكد من صحتها console.log(variant); // تأكد من وجود القوسين الدائريين {} حول variant في الكلاس لتفادي المشاكل return ( <div className={`m-4 rounded-lg py-5 px-6 mb-4 text-base text-${variant}-700 bg-${variant}-100`} > {children} </div> ); } export default Message; كذلك من الأفضل التحقق من وجود القوسين الدائريين حول `variant` في كل مكان يظهر فيه. هذا سيساعد React على فهم أن هذا هو متغير وليس جزءًا من النص الثابت. <Message variant='red'>حصل خطأ ما</Message> <Message variant='red'>حصل خطأ ما</Message> هنا عند استخدام مكون Message بهذه الطريقة، يجب التأكد من وجود الأنماط المناسبة (`text-red-700` و `bg-red-100`) في ملفات النمط (CSS) المعتمدة في المشروه فإذا لم تكن هذه الأنماط موجودة، يجب عليك إضافتها لضمان عمل الأنماط بشكل صحيح عند استخدام المكون في التطبيق. وفي حالة لم تعمل، أرجو إرفاق ملفات المشروع المصدرية، لأتفقد المشكلة ونجد الحل بإذن الله.
  3. المشكلة الرئيسية هي أن السكربت يبدو أنه لا يتحقق من حجم الملفات قبل محاولة رفعها، وبالتالي لا يتم التحقق من تجاوز حدود الحجم المسموح بها، ولحل هذه المشكلة، يجب عليك إضافة التحقق من حجم الملفات قبل محاولة رفعها. يمكنك القيام بذلك باستخدام الميزة المدمجة في PHP لفحص حجم الملف المُحمَّل قبل محاولة حفظه على السيرفر. بداية يمكنك التحقق من حجم الملف باستخدام الدالة: ثم مقارنة حجم الملف الذي تم تحميله مع الحد الأقصى المسموح به، فإذا كان حجم الملف يتجاوز الحد الأقصى المسموح به، فسوف يتم عرض رسالة خطأ ولا تقم بحفظ الملف على السيرفر.وهذا تعديل للسكريبت الخاص بك ليتماشى مع ما ذكرته: if(isset($_POST['submit'])){ $file_proj = date("Ymdhis") . $_FILES['file']['name']; $file_type = $_FILES['file']['type']; $file_tmp = $_FILES['file']['tmp_name']; $file_size = $_FILES['file']['size']; // Get the size of the file $file_dir = '../uploads/'; $id_pro = $_GET['id']; // Check if file size exceeds the maximum allowed size (in bytes) $max_file_size_allowed = 1048576; // 1 MB, you can change this as per your requirement if ($file_size <= $max_file_size_allowed) { if(in_array($file_type,array("application/pdf","application/vnd.ms-powerpoint","application/msword","application/vnd.ms-word.document.macroenabled.12"))){ move_uploaded_file($file_tmp,$file_dir.$file_proj); $sql = "INSERT INTO `file_project`(`id_p`, `path_file`) VALUES ($id_pro ,'$file_proj')"; $query = mysqli_query($con,$sql); echo '<div class="col-md-12"><div class="alert alert-success" role="alert"> تم اضافة الملف بنجاح </div></div>'; } else { echo '<div class="col-md-12"><div class="alert alert-danger text-center" role="alert">خطأ في رفع الملف الرجاء التحقق من نوع الملف<div /> </div>'; } } else { echo '<div class="col-md-12"><div class="alert alert-danger text-center" role="alert">حجم الملف يتجاوز الحد المسموح به<div /> </div>'; } }
  4. سأشرح لك ذلك، ال `window.onload` هو حدث في JavaScript يتم تنشيطه عندما يكتمل تحميل الصفحة بالكامل. يعني هذا أن أي كود تريد تنفيذه بعد أن تكون جميع المحتويات (مثل النصوص والصور والأشكال والملفات الأخرى) قد تم تحميلها بالكامل على الصفحة، يمكنك وضعه داخل دالة `window.onload`. وفي السكريبت المذكور سنقوم باستخدام `window.onload` لتحويل المستخدم تلقائيًا إلى رابط عشوائي بعد تحميل الصفحة بالكامل بهذا الشكل: <script type="text/javascript"> function showLucky(e) { var t = e.feed; var n = t.entry || []; var r = t.entry[0]; for (var i = 0; i < r.link.length; ++i) { if (r.link[i].rel == "alternate") { var href = r.link[i].href; href += "?khatar3"; window.location.href = href; } } } function fetchLuck(e) { script = document.createElement("script"); script.src = "/feeds/posts/summary?start-index=" + e + "&max-results=1&alt=json-in-script&callback=showLucky"; script.type = "text/javascript"; document.getElementsByTagName("head")[0].appendChild(script); } function feelingLucky(e) { var t = e.feed; var n = parseInt(t.openSearch$totalResults.$t, 10); var r = Math.floor(Math.random() * n); r++; fetchLuck(r); } // هنا نستخدم window.onload لتنفيذ تابع feelingLucky بعد تحميل الصفحة window.onload = function() { var script = document.createElement("script"); script.src = "/feeds/posts/summary?max-results=0&alt=json-in-script&callback=feelingLucky"; script.type = "text/javascript"; document.getElementsByTagName("head")[0].appendChild(script); }; </script>
  5. نعم قد يكون ذلك هو السبب، يمكنك اتباع هذه الخطوات للتأكد: فتح لوحة التحكم: من خلال فتح قائمة "ابدأ" والبحث عن "لوحة التحكم" ثم النقر على النتائج لفتحها. البحث عن الإعدادات الإقليمية واللغة: عبر البحث عن الإعدادات الخاصة باللغة أو الإعدادات الإقليمية في لوحة التحكم. تغيير الترميز: ابحث عن الخيار الذي يسمح لك بتغيير الترميز أو اللغة المستخدمة في النظام، وحدد UTF-8 إذا كان متاحًا كخيار. إعادة تشغيل النظام: بعد تحديد الترميز الجديد، قد يُطلب منك إعادة تشغيل النظام لتطبيق التغييرات. خلاف ذلك ممكن أن يكون السبب وراء ذلك عدم تحديد ترميز النصوص في برنامج إدارة قاعدة البيانات ففي بعض الحالات، يجب تعيين الترميز بشكل صحيح في البرنامج نفسه. يمكنك تجربة استخدام أمر SET NAMES: قبل استيراد البيانات إلى قاعدة البيانات، جرب استخدام أمر SET NAMES لتعيين الترميز المناسب، من خلال هذا الأمر: SET NAMES 'utf8mb4'; استخدام أمر CHARSET في الاستيراد فعند استيراد الملف إلى قاعدة البيانات، جرب استخدام أمر CHARSET مع تعيين الترميز المطلوب، من خلال: LOAD DATA INFILE 'file.csv' INTO TABLE table_name CHARACTER SET utf8mb4 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; هكذا سيتمكن نظام التشغيل الخاص بك من عرض البيانات بشكل صحيح بعد التحويل إلى UTF-8.
  6. يمكن فهم كيفية عمل الحارس (Guard) وكيفية تنفيذه في قاعدة البيانات من خلال هذا المثال أين أشرح فيه الكود: مفهوم الحرّاس (Guards): في Laravel، يُعتبر الحارس جزءًا من نظام المصادقة ويُستخدم لتحديد كيفية مصادقة المستخدمين. فمثلا في الكود الذي قدمته، لديك حارسين: 'web': يستخدم لمستخدمي الويب العاديين. 'admin': يستخدم لمستخدمي الإدارة. كل حارس يحتوي على موفر لعملية المصادقة بحيث يُستخدم موفر المصادقة لاسترجاع بيانات المستخدم من قاعدة البيانات والتحقق من هويته. في الكود الخاص بك، تم تعريف الحارسين 'web' و 'admin' مع موفرات المصادقة الخاصة بهما. بحيث يُحدد driver كيفية المصادقة أين يتم استخدام 'session' driver لكلتا الحارسين. أما بخصوص هذا الكود في قاعدة البيانات: 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => 'session', 'provider' => 'admins', ], يفترض أن لديك جدولين في قاعدة البيانات: جدول 'users' للمستخدمين العاديين وجدول 'admins' للمستخدمين الإداريين. يتم تخزين بيانات المستخدمين في الجدولين بشكل منفصل، حيث يحتوي كل منهما على الحقول اللازمة مثل الاسم، البريد الإلكتروني، كلمة المرور، إلخ. لنأتي إلى مفهوم موفرات المصادقة، 'provider' هنا تعني اسم الموفر الذي يقوم بإحضار بيانات المستخدمين من قاعدة البيانات، ويتم تحديد 'users' كموفر للمستخدمين العاديين و 'admins' كموفر للمستخدمين الإداريين. عندما يحاول المستخدم تسجيل الدخول، يتم تحقق من بياناته مقابل الحارس المناسب وموفره. إذا كانت المصادقة ناجحة، يتم تسجيل دخول المستخدم وتخزين بياناته في الجلسة أو غيرها من وسائل التخزين التي تم تعيينها في driver. وباختصار، يتيح لك Laravel تحديد سلوك مختلف لعملية المصادقة لأنواع مختلفة من المستخدمين (على سبيل المثال: المستخدمين العاديين والمستخدمين الإداريين) من خلال استخدام الحراس وموفرات المصادقة المختلفة. حارس الويب (Web Guard) مثلا هنا يستخدم session driver لحفظ بيانات المصادقة. يستخدم موفر المستخدمين 'users'، مما يعني أنه سيبحث عن المستخدمين في جدول 'users' في قاعدة البيانات. 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], حارس الإدارة (Admin Guard) يستخدم session driver لحفظ بيانات المصادقة. ويستخدم موفر المستخدمين 'admins'، مما يعني أنه سيبحث عن المستخدمين في جدول 'admins' في قاعدة البيانات. 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], حارس رؤساء الأقسام (Head of Department Guard) يستخدم session driver لحفظ بيانات المصادقة. ويستخدم موفر المستخدمين 'head_of_department'. 'head_of_department' => [ 'driver' => 'session', 'provider' => 'head_of_department', ], أما حارس طلاب الثانوية العامة (HSC Guard)، يستخدم session driver لحفظ بيانات المصادقة. ويستخدم موفر المستخدمين 'hscs'. 'hsc' => [ 'driver' => 'session', 'provider' => 'hscs', ], حارس عمداء الكليات (Dean Guard) يستخدم hscs driver لحفظ بيانات المصادقة. هنا لا يوجد موفر محدد، ولكن يمكن تخصيصه ليبحث عن بيانات المستخدمين في الجدول المناسب. 'dean' => [ 'driver' => 'hscs', ], وفي الأخير حارس طلاب الكليات الأخرى (Stuff Student Guard) ويستخدم session driver لحفظ بيانات المصادقة، كما يستخدم موفر المستخدمين 'stuff_student'. 'stuff_student' => [ 'driver' => 'session', 'provider' => 'stuff_student', ], ], هذه التكوينات تحدد كيفية تخزين بيانات المصادقة وكيفية البحث عن المستخدمين في قاعدة البيانات بناءً على نوع المستخدم والسياق الذي يتم فيه تسجيل الدخول.
  7. للتحقق من ترميز الملف باستخدام Notepad++، يمكنك البدء من خلال: فتح الملف في Notepad++: انقر بزر الماوس الأيمن على الملف. اختر "افتح باستخدام" (Open with). اختر Notepad++ من القائمة. مثلما هو موضح في الصورة: ثم التأكد من ترميز الحروف: انتقل إلى قائمة "تشفير" (Encoding) في شريط القوائم. ستظهر لك قائمة بخيارات الترميز المتاحة. اختر الخيار الذي تشتبه فيه، مثل "UTF-8" أو "UTF-8 without BOM" لملفات UTF-8. بعد اختيار الترميز المناسب، يمكنك التحقق من النصوص في الملف.
  8. في لغة البايثون يمكنك ضرب مصفوفتين باستخدام المكتبة NumPy. وهذا مثال: import numpy as np # قم بتعريف المصفوفتين matrix1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) matrix2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]]) # قم بضرب المصفوفتين result_matrix = np.dot(matrix1, matrix2) # طباعة المصفوفة الناتجة print(result_matrix) هذا الكود ينشئ مصفوفتين (`matrix1` و `matrix2`) ثم يستخدم دالة `()np.dot` من NumPy لضربهما. والناتج سيتم طباعته في `result_matrix`. لكن تأكد من تثبيت مكتبة NumPy إذا لم تكن مثبتة بالفعل باستخدام هذا الأمر: `pip install numpy`.
  9. عند استيراد ملف CSV إلى جدول في قاعدة بيانات MySQL، تظهر البيانات النصية باللغة العربية عادةً على أنها علامات استفهام بدلاً من النص الصحيح باللغة العربية، يجب أولا التحقق من ترميز الحروف في ملف CSV لهذا يجب عليك أن تقوم: بفتح الملف CSV باستخدام برنامج نصي مثل Notepad++ والتأكد من أن ترميز الحروف يتوافق مع اللغة العربية، ويفضل استخدام UTF-8. لكن عند استيراد الملف CSV إلى MySQL، تأكد من تحديد الترميز المناسب. يمكنك استخدام الأمر التالي: LOAD DATA INFILE 'file.csv' INTO TABLE table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; يجب عليك التأكد من أن ترميز الحروف للجدول في قاعدة البيانات MySQL معين بشكل صحيح. ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; وقبل استيراد الملف CSV، استخدم أمر SET NAMES لتعيين الترميز المناسب. SET NAMES 'utf8'; وهذا مثال لأشرح لك بشكل مبسط أكثر، لنفترض أن لدينا ملف CSV يُدعى `data.csv` ويحتوي على البيانات التالية: "اسم","عمر" "ياسر",25 "مسكين",30 ونريد استيراده إلى جدول يُدعى `users` في قاعدة البيانات نستخدم هذه الأوامر: SET NAMES 'utf8'; LOAD DATA INFILE 'data.csv' INTO TABLE users CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; بهذا، يجب أن يتم استيراد البيانات العربية بشكل صحيح دون أي مشاكل في الترميز.
  10. نعم لقد فهمت ما تريد أن تصل له، ولتعديل الروابط الخاصة بالمدونة يمكنك اتباع الأكواد التي قمنا بإرفاقها لك في الإجابة السابقة.
  11. هذه المشكلة كانت تواجه العديد من المستخدمين خاصة من كانوا يستخدمون محاكيات لتشغيل ال ios 14 فواجهوا مشكلة في سرعة عملية التجميع والتشغيل في Xcode على نظام macOS، بينما لا يواجه نفس المشكلة عند استخدامه لتطوير تطبيقات Flutter على نظام Windows. لحل هذه المشكلة، يمكن بدايةً القيام بحذف المجلدات داخل هذا الإجراء يهدف إلى تخفيض أي تأثير سلبي قد يكون لهذه المجلدات على سرعة عملية التجميع، لكن في حال لم يعمل معك يمكنك تجربة هذه الخطوات: يمكن القيام بعملية إلغاء الإقتران مع الجهاز في حالة استخدام جهاز فعلي يعمل بنظام iOS 14، ومن ثم إعادة الإقتران مع Xcode. هذا الإجراء يمكن أن يساعد في تحسين التوصيل وزيادة سرعة العمل. يمكن أيضًا التحقق من إعدادات Xcode وتحسينها، والتأكد من توافق إصدار Xcode المستخدم مع إصدار Flutter، وتحسين الكود لتجنب العمليات الزائدة التي قد تؤثر على سرعة التجميع والتشغيل.
  12. العفو، هذا مثال عن كود ملف htaccess: مثلا ووردبريس افتراضيا لا يأتي مصحوب بملف .htaccess ولا يقوم بإنشائه مباشرة بعد التثبيت، بل يتم إنشائه تلقائيا داخل المجلد الرئيسي للموقع عند تغيير او تحديث للروابط الدائمة، الكود ويكون الملف افتراضيا يحتوي على هذه الأوامر. # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress بحيث يمكنك إضاقة أي كود تريده بعد # END WordPress أز قبل # BEGIN WordPress وذلك لتفادي خلط الاوامر المخصصة مع الاوامر التي يكتبها ووردبريس افتراضيا على ملف .htaccess. RewriteEngine On # إعادة توجيه من /old-page إلى /new-page Redirect 301 /old-page /new-page # إعادة توجيه من HTTP إلى HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # منع الوصول إلى ملفات .htaccess <Files .htaccess> Require all denied </Files> # منع الوصول إلى ملفات php.ini <Files php.ini> Require all denied </Files> # منع تصفح المجلدات Options All -Indexes
  13. لتعديل الروابط يمكن استخدام ملف .htaccess لتحويل لتحويل الرابط "page.php?id= الاستعلام" إلى "page-الاستعلام.html" يمكن أولا، البدء بتفعيل محرك الإعادة الكتابة (Rewrite Engine) من خلال هذا الأمر: RewriteEngine On بعدها يمكنك كتابة القاعدة لإعادة الكتابة (Rewrite Rule)من خلال هذين الأمرين: RewriteCond %{QUERY_STRING} id=(.*) RewriteRule ^page.php$ /page-%1.html? [R=301,L] وهذه القاعدة تحدد أنه إذا كانت السلسلة الاستعلامية تحتوي على متغير "id"، ستتم إعادة الكتابة لتكون بتنسيق "page-الاستعلام.html" بواسطة الرابط "page.php". بعدها مباشرة تقوم بتوجيه الزوار إلى الرابط الجديد، فهنا يتم استخدام `R=301` لإعادة توجيه الزوار إلى الرابط الجديد بواسطة إعادة توجيه دائمة (301 Redirect)، و `L` تحدد أن هذه هي آخر قاعدة إعادة كتابة ستتم تطبيقها. وهذا مثال عملي لأشرح الطريقة، ففرضا لدينا الرابط التالي: http://example.com/page.php?id=الاستعلام باستخدام القواعد التي ذكرتها لك سيتم تحويله إلى: http://example.com/page-الاستعلام.html وبهذا، يتم تحقيق الهدف المطلوب في تعديل الرابط.
  14. يمثل "type=text/css" في عنصر HTML `<link>` توضيحًا لنوع الملف الذي يتم ربطه بالصفحة، في سياق وربط ملف CSS، يُعرف هذا النوع بأنه وسائط نصية (text) للنوع (type) لغة التنسيق (CSS). لكن في الإصدارات الحديثة من HTML (مثل HTML5)، يُعتبر تحديد "type=text/css" اختياريًا بالنسبة لملفات CSS. هذا يعني أنه يمكنك حذفها دون تأثير على أداء ملف CSS الخاص بك. يتم فهم ملفات CSS تلقائيًا كملفات CSS من قِبل المستعرضات الحديثة، حتى بدون تحديد نوع الملف بشكل صريح. لذا، يُمكنك كتابة العنصر `<link>` ببساطة كما يلي: <link href="style.css" rel="stylesheet"> لذا يمكن ربط وكتابة عنصر الربط وبهذه الطريقة، يتم توضيح أن الملف المرتبط هو ملف CSS بدون الحاجة إلى تحديد نوع الملف بشكل صريح. هذا يجعل الشيفرة أقل تعقيدًا وأكثر وضوحًا.
  15. الفرق بينهما متباين للغاية، فالمترجم مثلا (Compiler) هو برنامج يقوم بتحويل الشفرة المصدرية للبرنامج (مثل الشفرة المكتوبة بلغة C++ أو Java) إلى رمز ثنائي (ملف تنفيذي) يمكن تشغيله مباشرة من قبل الحاسوب. ويتم استخدامه لكونه يحمل: أداءً عاليا: حيث يتم تحويل الشفرة المصدرية إلى رمز ثنائي مباشرة، وبالتالي تكون البرامج التي تم إنشاؤها باستخدام المترجم عادةً أكثر كفاءة من حيث الأداء. تحسينات في الأمان: فبمجرد تحويل الشفرة المصدرية إلى رمز ثنائي، يصعب بشكل عام على المستخدمين الآخرين رؤية أو تعديل الشفرة المصدرية. هذا يجعل من الصعب استغلال الثغرات الأمنية في البرامج. الانتشار الواسع: بحيث يمكن تشغيل البرامج التي تم تحويلها باستخدام المترجم على أنظمة متعددة دون الحاجة إلى ترجمتها مرة أخرى، مما يجعلها ملائمة للتوزيع. أما ال (Interpreter) فهو برنامج يقوم بتنفيذ الشفرة المصدرية للبرنامج مباشرة دون الحاجة إلى تحويلها إلى رمز ثنائي. ويتم استخدامه عادة لوجود هذه الميزات: التطوير والاختبار السريع: بحيث يمكن تطوير واختبار البرامج باستخدام المترجم بشكل أسرع من المترجم، حيث يمكن للمطورين رؤية نتائج تنفيذ الشفرة المصدرية على الفور دون الحاجة إلى تحويلها أولاً. التفاعلية: هو مفيد في بناء الأنظمة التفاعلية مثل الواجهات الرسومية، حيث يمكن للمستخدمين التفاعل مباشرة مع البرنامج ورؤية النتائج على الفور. التوزيع السهل: بحيث يمكن توزيع البرامج التي تستخدم المترجم بسهولة أكبر، حيث لا يلزم إعادة تحويل الشفرة المصدرية إلى رمز ثنائي قبل تشغيلها على الأنظمة الأخرى. ومن هنا يمكنك أن تستفيد أكثر لفهمهما بشكل جيد:
  16. بالطبع، ففهم أنظمة التشغيل من المواد النظرية في مجال علوم الحاسوب ويعتبر ذلك أمراً مهماً. فأنظمة التشغيل تعتبر جزءاً أساسياً في هذا المجال، وهي تهتم بكيفية تنظيم وإدارة الموارد في الحاسوب مثل المعالج، الذاكرة، والتخزين، بالإضافة إلى توفير واجهة بين المستخدم والجهاز الحاسوبي. بالنسبة للشقّ الثاني من سؤالك، فالمواد النظرية تشمل مجموعة واسعة من المواضيع التي تركز على الأسس والمبادئ الرئيسية التي تقوم عليها تطبيقات الحاسوب والبرمجيات. من بين المواد النظرية الشائعة في علوم الحاسوب: هياكل البيانات والخوارزميات**: دراسة تنظيم وتخزين البيانات بشكل فعال وفعالية الخوارزميات في معالجتها. تشمل هذه المواد النظرية دراسة القوائم المتسلسلة، الأشجار، الجرافات، وأساليب البحث والفرز نظرية الحوسبة**: وتشمل المواد مثل نظرية الأتمتة، والحساب المعقد، والحوسبة التوزيعية، ونظرية اللغات والآلات. نظرية قواعد البيانات: وتشمل دراسة هياكل البيانات القاعدية، والاستعلامات، والمعالجة المتعددة المستوى. الشبكات وأمن المعلومات: ويغطي هذا المجال البروتوكولات الشبكية، وأمان المعلومات، وإدارة الشبكات. نظرية اللغات البرمجية: وتشمل دراسة النماذج اللغوية، وتحليل وتصميم اللغات، وتحويل اللغات. نظرية النظم: وتركز على تحليل وتصميم النظم الكبيرة والمعقدة، وتضمن تكامل مكونات النظام وتحديد متطلبات النظام وتصميم الهياكل المناسبة. بالنسبة للسؤال الآخر، فإن فهم أنظمة التشغيل والمواد النظرية في علوم الحاسوب يمكن أن يفرق بين مبرمج جيد ومبرمج ممتاز، لكنه ليس العامل الوحيد. البرمجة مثلا بلغات مثل C و C++ تتطلب فهماً عميقاً للمفاهيم البرمجية والقدرة على كتابة الشيفرة بشكل فعال ومنظم. ومع ذلك، فهم كيفية تفاعل البرامج مع النظام التشغيل وكيفية استخدام الموارد بشكل فعال يمكن أن يجعل فارقاً في أداء المبرمج وفي جودة البرمجيات التي يقوم بتطويرها. وهذه بعض المصادر التي يمكن أن تفيدك لفهم أنظمة التشغيل:
  17. في حالة ما كنت تقصد بالموقع أكاديمية حسوب، فهي بالفعل تتضمن مقالات في هذا السياق والمجال، هذه بعض المصادر التي يمكنك الاطلاع عليها: كما يوجد مقال شامل على مدونة مستقل أتمنى أن يفيدك: https://blog.mostaql.com/content-writing-skills/
  18. من أجل جلب بيانات مستخدم محدد من Firebase في Flutter، يمكنك استخدام Firebase Realtime Database أو Firebase Firestore باستخدام حزمتي `firebase_database` أو `cloud_firestore`. مثلا باستخدام باستخدام Firebase Firestore سيكون بهذا الشكل: import 'package:flutter/material.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; class UserScreen extends StatelessWidget { final String userId; UserScreen({required this.userId}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('User Data'), ), body: FutureBuilder<DocumentSnapshot>( future: FirebaseFirestore.instance.collection('users').doc(userId).get(), builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Center(child: CircularProgressIndicator()); } if (snapshot.hasError) { return Center(child: Text('Error: ${snapshot.error}')); } if (!snapshot.hasData || !snapshot.data!.exists) { return Center(child: Text('User not found!')); } var userData = snapshot.data!.data() as Map<String, dynamic>; return ListView( children: [ ListTile( title: Text('Name: ${userData['name']}'), ), ListTile( title: Text('Email: ${userData['email']}'), ), // يمكنك عرض المزيد من البيانات هنا ], ); }, ), ); } } ففي هذا المثال، يتم تحميل بيانات المستخدم المحدد (باستخدام `userId`) من مجموعة المستخدمين في Firebase Firestore، ثم يتم عرضها في واجهة المستخدم باستخدام `ListView`. يرجى استبدال `users` بمسار مجموعة المستخدمين الخاصة بك في Firebase Firestore، لكن يجب على المستخدم الذي تحاول جلب بياناته أن يكون لديه إذن الوصول إلى البيانات في قاعدة البيانات وإلا فلن يتم الأمر.
  19. يبدو أنك نسيت إرفاق السؤال بشكل جيد، من فضلك أرفق السؤال كاملا كي أتمكن من فهمك ومساعدتك.
  20. في بعض الأحيان قد لا يعمل معك التطبيق وانت تستخدم خدمات Firebase وذلك لان المده المسموح بها قد انتهت ولتفادي هذة المشكلة يمكنك الانتقال الى حسابك في الfirebase ومنها اختيار cloud firebase ( يمكنك الوصول اليه من الشريط العلوي ) ومن rules سوف تشاهد المدة الخاصه بالتطبيق يمكنك رفعها. العديد من المشاكل قد تكون السبب وهذا عادي، يمكنك التحقق من إعدادات التوجيه Domain Verification بحيث يجب أن تقوم بإضافة نطاق تطبيقك إلى إعدادات التوجيه في Firebase. هذا يتطلب التحقق من ملكية النطاق وتفعيله. ويساعد هذا الإجراء كثيرا في ضمان توافق خدمات Firebase مع تطبيقك عندما يتم نشره. الخطوة التالية هي إضافة مفتاح SHA-1 الخاص بتطبيقك على Google Play إلى إعدادات مشروعك في Firebase. وهذا مهم لتمكين التواصل الآمن بين تطبيقك وخدمات Firebase على Google Play. قد تحتاج أيضا إلى ضبط بعض القواعد في لوحة التحكم في Firebase للسماح بالوصول من تطبيقك. هذا يشمل إعداد قواعد الأمان والوصول بحسب احتياجات تطبيقك لضمان استخدامها بطريقة آمنة وفعالة. كما يجب أن تتأكد من أن جميع مفاتيح الواجهة البرمجية المستخدمة في تطبيقك مفعلة وصحيحة. قد تكون هذه المفاتيح مطلوبة لتمكين بعض الخدمات في Firebase مثل التحليلات وتخزين البيانات.
  21. السبب وراء وجود مجلد سطح المكتب في OneDrive هو تفعيل المزامنة التلقائية بين حسابك على OneDrive وجهاز الكمبيوتر الخاص بك. فعندما تقوم بتفعيل المزامنة التلقائية، يتم نسخ ومزامنة الملفات والمجلدات من حاسوبك إلى حسابك على OneDrive والعكس، وهذا يشمل أيضًا مجلد سطح المكتب. لكن في حالة ما إذا كنت تفضلين عدم مشاركة مساحة القرص الصلب مع OneDrive أو تفضلين حفظ ملفات سطح المكتب محليًا، يمكنك إيقاف المزامنة لمجلد سطح المكتب من إعدادات OneDrive على جهاز الكمبيوتر الخاص بك. هذا من خلال فتح تطبيق OneDrive على جهاز الكمبيوتر، ثم النقر فوق "المزامنة" أو "الإعدادات" والبحث عن الإعدادات التي تسمح لك بتحديد المجلدات التي ترغبين في مزامنتها. وهناك يمكنك إلغاء تحديد مجلد سطح المكتب لمنع مزامنته مع OneDrive والاحتفاظ به محليًا على القرص الصلب الخاص بك.
  22. لا شكر على واجب أخي، في الخدمة.
  23. نعم، يمكنك ضبط إعدادات اللغة والموقع (Locale settings) في جهازك لتكون متوافقة مع القيم التي تتوقعها من برنامجك دون الحاجة لاستخدام `Locale.US` في الكود. في نظام التشغيل Windows مثلا يمكنك فعل ذلك عن طريق اتباع الخطوات التالية: فتح "Control Panel" (لوحة التحكم) من قائمة "Start" (ابدأ). اختيار "Clock and Region" (الساعة والمنطقة). النقر على "Region" (المنطقة). الانتقال إلى علامة التبويب "Formats" (تنسيقات). اختيار اللغة والتنسيق المطلوب من قائمة "Format" (التنسيق). أخبرني في حال واجهتك أي مشكلة أخرى.
  24. يجب أن تقوم أولا بإعداد متغيرات البيئة الخاصة بالنظام. فإن كنت تستخدم نظام الويندوز، يمكنك الوصول إلى متغيرات البيئة عن طريق القيام بالتالي: اضغط على زر البدء في نظام التشغيل Windows. قم بالبحث عن "متغيرات البيئة" أو "Edit the system environment variables" واضغط عليها. في نافذة متغيرات النظام، انقر على الزر "متغيرات البيئة". ستظهر لك نافذة تحتوي على الـ"User variables" (المتغيرات الخاصة بالمستخدم) و "System variables" (المتغيرات النظام). اختر "System variables" وانقر على زر "New" لإضافة متغير جديد. أما إذا كنت تعمل على نظام تشغيل آخر، فيمكنني أن أقدم لك الإرشادات المناسبة له.
  25. العديد من الأسئلة تطرح في مقابلات العمل، ولا يمكن توقعها كاملة، فمثلا حينما نتحدث حول البرمجة الديناميكية فهي تقنية حاسوبية تُستخدم لحل مجموعة متنوعة من المشاكل التي تتطلب تقسيمها إلى مشاكل أصغر وحلها بشكل تدريجي، مع استخدام التخزين المؤقت للنتائج الفرعية لتحسين الأداء. هذه التقنية غالبًا ما تُستخدم في مجموعة متنوعة من المجالات بما في ذلك العلوم الحاسوبية، والهندسة، وعلوم البيانات، والرياضيات، والاقتصاد، وغيرها. أبرز تلك المشكلات: مشكلة الرقم الثلاثي الأمثل (Optimal Binary Search Tree). مشكلة السلسلة الأمثل (Longest Common Subsequence). مشكلة القطع الأمثل (Cutting Stock Problem). مشكلة البائع المتجول (Travelling Salesman Problem). مشكلة التحميل الأمثل (Knapsack Problem). مشكلة تحليل الأمثل (Parsing Problem). مشكلة الأعمدة الرأسية (Vertical Sticks Problem). مشكلة ترميز هوفمان (Huffman Coding Problem). مشكلة القص المشترك (Maximum Cut Problem). مشكلة تقسيم الصفوف (Partition Problem). فمثلا تطرقنا من قبل حول مشكلة البائع المتجول هنا في الأكاديمية ويمكنك الاطلاع عليها من خلال هذا المصدر:
×
×
  • أضف...