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

Khaled Osama3

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

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

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

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

    1

كل منشورات العضو Khaled Osama3

  1. في HTML، العنصر <div> هو اختصار لكلمة "division" أي "قسم". يُستخدم <div> لتقسيم أو تجميع العناصر في الصفحة لأغراض التنسيق عبر CSS أو لإجراء تعاملات معينة باستخدام JavaScript. هو عنصر حاوية شائع الاستخدام ولا يحمل أي معنى بحد ذاته؛ يعني أنه لا يعرف نوع المحتوى الذي يحتويه. من خصائص العنصر <div> لا يؤثر على المحتوى أو التنسيق بشكل مباشر, ويمكن استخدامه لإنشاء تخطيطات معقدة عندما يتم تطبيق CSS. يتصرف كعنصر بلوك (block element)، ما يعني أنه يأخذ العرض الكامل للوالد (parent element) ويبدأ على سطر جديد. من استخدامات <div>تجميع العناصر التي يجب أن تتشارك في نمط معين أو تعديلات في التخطيط. وتطبيق أنماط CSS، مثل الخلفيات، الحدود، أو التباعد. استهداف عناصر متعددة بسهولة باستخدام JavaScript من خلال إعطاء <div> معرف (ID) أو فئة (class). مثال على استخدام <div> في HTML: <div class="header"> <h1>Welcome to My Website</h1> <p >This is my personal webpage where I share my projects and ideas.</p> </div> <div class="content"> <p>Here is some more detailed information about what I do and what this site is for. You can find links to various sections and articles below.</p> </div> <div class="footer"> <p>Contact me at: example@example.com</p> </div> في هذا المثال، يتم استخدام عناصر <div> لتنظيم أقسام الصفحة بطريقة مرتبة وواضحة. كل <div> يحتوي على محتويات مختلفة تمثل أجزاء مختلفة من الصفحة: الرأس (header)، المحتوى الرئيسي (content)، والتذييل (footer). العنصر <div>
  2. توجد اكثر من طريق لدعم تعدد اللغات ولكن اشهرهم واكثرهم شيوعا باستخدام مكتبة جافاسكريبت خارجية تسمى "i18next". هذه المكتبة تسمح بإدارة اللغات بشكل مركزي وتبديل اللغة على الصفحة دون الحاجة لإعادة تحميلها. إعداد i18next لتبديل اللغات 1. إضافة المكتبات: لنبدأ بإضافة المكتبات اللازمة في ذيل الصفحة (HTML footer): <script src="https://unpkg.com/i18next@21.5.3/i18next.min.js"></script> <script src="https://unpkg.com/jquery@3.6.0/jquery.min.js"></script> <script src="https://unpkg.com/i18next-browser-languagedetector@6.1.1/i18next-browser-languagedetector.min.js"></script> 2. تحضير ملفات اللغة: نعمل ملفات JSON لكل لغة عايزين ندعمها. يعني لو الإنجليزية والبنغالية: // en.json { "greeting": "Hello" } // bn.json { "greeting": "হ্যালো" } 3. تهيئة i18next: هنهيء i18next في ملف JavaScript: i18next.use(i18nextBrowserLanguageDetector).init({ resources: { en: { translation: { "greeting": "Hello" } }, bn: { translation: { "greeting": "হ্যালো" } } }, fallbackLng: 'en', detection: { order: ['querystring', 'cookie', 'localStorage', 'navigator', 'htmlTag'], caches: ['cookie'] } }, function(err, t) { // معالجة DOM باستخدام jQuery لتحديث النصوص updateContent(); }); function updateContent() { $('body').find('[data-i18n]').each(function() { var $this = $(this); var key = $this.data('i18n'); $this.text(i18next.t(key)); }); } 4. تحديث HTML لاستخدام i18next: تأكد إن العناصر اللي عايز تغير لغتها معمول لها السمة data-i18n: <body> <center> <div class="switch"> <input id="language-toggle" class="check-toggle check-toggle-round-flat" type="checkbox" onclick="toggleLanguage()"> <label for="language-toggle"></label> <span class="on">BN</span> <span class="off">EN</span> </div> <h1 data-i18n="greeting">Hello</h1> </center> </body> 5. تبديل اللغات: نضيف دالة لتبديل اللغة لما الزرار يتغير: function toggleLanguage() { var newLang = i18next.language === 'en' ? 'bn' : 'en'; i18next.changeLanguage(newLang, function(err, t) { if (err) return console.error('Something went wrong loading', err); updateContent(); }); } استخدام i18next بيسهل إدارة اللغات وتبديلها، وبيسمح بزيادة دعم لغات تانية بسهولة عن طريق إضافة ملفات JSON. كمان، الطريقة دي بتحسن تجربة المستخدم بإنه يقدر يغير اللغة من غير ما يحتاج يعيد تحميل الصفحة." ولكن يوجد طرق اخري ابسط ولكن اقل شيوعا ولكن حسب استخدام الموقع بتاعك وتفضيل اي طريقه
  3. عشان تفتح الملف اللي بامتداد .رار ده، اللي فيه موقع ويب بيشمل كود اتش تي ام ال و سي اس اس و بي اتش بي، لازم يكون عندك برنامج لفك الضغط يقدر يفتح صيغة ال رار دي. فيه برامج كتير ممكن تستخدمها لكده، على حسب نظام التشغيل اللي عندك: لو ويندوز: 1- وينرار او 7 زيب: - ممكن تنزل وينرار من موقعه الرسمي https://www.win-rar.com - او تنزل 7 زيب من موقعه https://www.7-zip.org/ ومجاني - بعد ما تنزل اي واحد منهم، اضغط كليك يمين على ملف hospital.rar واختار "Extract Here" او "Extract to folder" لو ماك: 1- ذا انارشيفر او كيكا: - ممكن تنزل ذا انارشيفر من متجر تطبيقات الماك - او تنزل كيكا من موقعها الرسمي https://www.keka.io - بعد تركيب اي واحد منهم، اضغط دبل كليك على ملف hospital.rar عشان يفتحه لو لينكس: 1- انرار او بيازيب: - عشان تركب انرار، ممكن تستخدم الامر "sudo apt-get install unrar" (للتوزيعات بتاعة ديبيان/ابونتو) او حاجة شبهها في توزيعتك - ممكن تنزل بيازيب من موقعها https://peazip.github.io/ - استخدم الامر "unrar x hospital.rar" في الترمينال عشان تفك الضغط لما تفك الضغط: - هتلاقي ملفات الاتش تي ام ال و السي اس اس و البي اتش بي، ممكن تفتحها بمحرر نصوص زي فيجوال ستوديو كود او سبلايم تكست - عشان تشغل الملفات اللي فيها بي اتش بي، لازم تركب خادم محلي زي زامب او مامب: - زامب: ممكن تنزله من موقعه https://www.apachefriends.org - انقل الملفات اللي فكيتها لمجلد htdocs جوا مجلد زامب - شغل خدمات ابتشي من لوحة تحكم زامب وافتح المتصفح على localhost/اسم_المجلد عشان تشوف الموقع لو عملت كده بالخطوات دي، مفروض تقدر تفتح وتشغل ملفات الموقع بتاعك بسهولة.
  4. نعم، بالطبع من الممكن عمل عدة واجهات بخادم واحد باستخدام JavaScript. يعتبر الاستخدام الشائع هو عبر تطبيقات الويب المبنية بتقنية الـ Single Page Application او كما يطلق عليها تطبيق الويب الفردي ، حيث يتم تحميل المحتوى وتحديث الواجهة ديناميكيا دون الحاجة إلى إعادة تحميل الصفحة. يمكنك تصميم واجهات مختلفة للعميل والبائع بشكل منفصل وتنفيذها بواسطة JavaScript. يمكن أيضا تحميل الواجهات المناسبة بناء على نوع المستخدم الذي يقوم بتسجيل الدخول (بائع أو عميل)، ويمكن استخدام خوارزميات التوجيه الديناميكية لتحديد أي واجهة يجب عرضها. باستخدام مكتبات مثل React.js أو Angular.js أو Vue.js، يمكنك بناء تطبيق ويب قوي يدعم هذا النوع من التبديلات بين الواجهات بشكل سلس وفعال.
  5. بالنسبة للسؤال الاول: ليس هناك مكاتب لتغيير الخطوط فإذا كنت تريد تغير الخط يجب عليك استخدام خصائص ال CSS بشكل مباشر مثل font-family و font-size و font-weight و font-style فلا يمكن الاستغناء عنها. وبالنسبة للسؤال الثانى: نعم جافاسكريبت لديها العديد من المكتبات المفيدة الخاصة بها اذا كنت تريد استخدمها لوحدها خارج نطاق ال node.js ، كل المكتبات تظهر معك بهذا الطريقة لانك تستخدمها داخل نطاق ال node.js. وهذه بعض المكتبات المشهورة فى الجافاسكريبت: مكتبة Lodash هذه المكتبة توفر مجموعة واسعة من الأدوات للتعامل مع البيانات والمصفوفات في جافاسكريبت، مثل التصفية والتحويل والفلترة والتجميع ، ومكتبة jQuery التى تستخدم لتبسيط التفاعل بين الجافاسكريبت وHTML، بالإضافة إلى توفير العديد من الوظائف للتلاعب بالمستند والأحداث والتأثيرات وغيرها من المكتبات.
  6. هل يمكنك اخباري ما الرساله التي تظهر لك وهل توجد مشكله في التخزين في الداتابيز بالنسبه للصوره ام عموما لا يخزن اذا كان في الصوره فقط ارجو اخباري ماذا يخزن في column img_std
  7. تـاكد من أنك قمت بارسال البيانات عن طريق طباعة البيانات فى ال console قبل تخزنها.
  8. عليكم السلام الشبكات السائلة او كما يطلق عليهاLiquid State Networks والشبكات العصبية Neural Networks هما نموذجان مختلفان في مجال الذكاء الاصطناعي ، ولكنها ايضا يتفقا فى بعض الخصائص . بالسنبة للشبكات العصبية: الشبكات العصبية هي خوارزميات تعلم الآلة تحاكي هيكل وقدرات الدماغ البشري للاعتراف بالأنماط من البيانات التدريبية. تتكون من طبقات ثابتة من الخلايا العصبية المترابطة. تحتاج إلى كمية كبيرة من البيانات المصنفة للتدريب. تعالج البيانات بشكل غير متسلسل، مما يجعلها غير فعالة في التعامل مع البيانات في الوقت الفعلي وهذا مثال توضيحى لها: تخيل أن الشبكات العصبية مثل بيت مكون من طوابق متعددة، كل طابق يقوم بعمل مختلف. في الطابق الأول، تقوم بوضع الأشياء اللى هى البيانات التي تريد معالجتها مثل صورة حيوان مثلا تريد ان تعرف ما نوعه ، كل طابق يقوم بعمل شئ حتى نعرف ما نوع هذا الحيوان ،الطابق الأخير يعطيك الجواب مثل هذا صورة لكلب. وأثناء التدريب، تقوم بتعديل الوزن بين هذه الطوابق حتى يعطيك الجواب الصحيح. أما الشبكات السائلة: هي نموذج في مجال الذكاء الاصطناعي يستخدم لمعالجة الإشارات الدقيقة والتنبؤ بنمطها ، تمثل هذه الشبكات نهجا مختلفا عن الشبكات العصبية التقليدية، حيث يتم فيها تصميم الشبكة بشكل عشوائي وتتأثر حالتها بتدفق الإشارات خلالها. في الشبكات السائلةيتم تشكيل الشبكة من مجموعة من العناصر المتصلة بشكل عشوائي وتكون حالة الشبكة ناتجة عن تدفق الإشارات عبر هذه العناصر و تعتمد فعالية هذه الشبكات على قدرتها على تمثيل وتحليل النمط في تدفق الإشارات بدقة، مما يجعلها مفيدة في تطبيقات مثل التعرف على النمط ومعالجة الإشارات الحيوية. باختصار أخى الشبكات السائلة تعتمد على تغيير حالة الشبكة بالتأثير على تدفق الإشارات خلالها، مما يجعلها قادرة على معالجة الإشارات الدقيقة بشكل فعال.
  9. اذا كنت تقصد ان مسار الصوره خزن في الداتابيز ولكن الصوره نفسها لم تحفظ فحينها يجب ان تتأكد ان مسار المجلد صحيح في الكود، لو البرنامج بيشتغل من جوا مجلد admin، يبقى لازم المسار يكون "../uploads/" + اسم الملف. شوف كويس ان رسالة "تم الحفظ بنجاح" مش بتظهر غير لما يتم تحميل الصورة ودخول البيانات في الداتابيز بشكل صحيح. ده كود معدل بيتأكد من نجاح كل خطوة قبل ما ينتقل للخطوة اللي بعدها: if ($_SERVER["REQUEST_METHOD"] == "POST") { $id_std = $_POST['num_std']; $full_name = $_POST['name_std']; $dept_std = $_POST['dept']; $email_STD = $_POST['email_STD']; $pass = $_POST['Pass']; $group = $_POST['group_ID']; $id_teah = $_POST['teah']; $file_name = $_FILES['image']['name']; $tempname = $_FILES['image']['tmp_name']; $folder = "../uploads/" . $file_name; if (move_uploaded_file($tempname, $folder)) { $sql = "INSERT INTO student (Name_std, Num_std, Email_STD, Password, dept_ID, group_ID, id_teah, img_std) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; $stmt = $con->prepare($sql); $stmt->bind_param("ssssssss", $full_name, $id_std, $email_STD, $pass, $dept_std, $group, $id_teah, $file_name); if ($stmt->execute()) { echo "تم إضافة بيانات الطالب وتحميل الصورة بنجاح!"; } else { echo "خطأ في إدخال بيانات الطالب: " . $stmt->error; } } else { echo "خطأ في تحميل الصورة."; } } الكود ده بيتحقق الاول من نجاح تحميل الصورة، ولو نجح بيحاول يدخل البيانات في الداتابيز، ويعرض الرسالة المناسبة لو حصل خطأ في اي خطوة.
  10. عشان نتأكد ان الـ ID اللي المستخدم بيدخله مش موجود فعلا في الداتابيز، لازم نضيف جزء كود يتحقق من كده قبل ما نحاول ندخل سجل جديد: from pywebio.input import * from pywebio.output import * import sqlite3 mydb = sqlite3.connect("cvdb.db") cr = mydb.cursor() def create_db(): cr.execute('''CREATE TABLE if not exists cv (id int, name varchar(255), age varchar(255), PRIMARY KEY (id))''') mydb.commit() create_db() def select_user_type(): user_type = radio("Select the type of user", ["New User", "Old User"]) if user_type == "New User": registration_form() else: search_user() def registration_form(): data = input_group("Enter your data:", [ input("Enter your id:", name='id', type=NUMBER), input("Enter your name:", name='name', type=TEXT), input("Enter your age:", name='age', type=NUMBER), ]) # Check if the id already exists cr.execute("SELECT id FROM cv WHERE id = ?", (data['id'],)) if cr.fetchone(): popup("This ID is already used. Please use a different ID.") registration_form() # Recall the form to enter the data again else: cr.execute("INSERT INTO cv (id, name, age) VALUES (?, ?, ?)", (data['id'], data['name'], data['age'])) mydb.commit() put_table([["id", "Name", "Age"], [data['id'], data['name'], data['age']]]) return data def search_user(): id = input("Enter your id:", type=NUMBER) cr.execute("SELECT * FROM cv WHERE id = ?", (id,)) x = cr.fetchone() if x is None: popup("I can't find this id, please enter the correct id.") search_user() else: put_text("Your contact information") put_table([["id", "Name", "Age"], [x[0], x[1], x[2]]]) select_user_type() # Start the application select_user_type() هنا بعد ما المستخدم يدخل البيانات، بنعمل استعلام على الداتابيز عشان نشوف لو الـ ID ده موجود فعلا ولا لأ، باستخدام cr.fetchone(). لو الـ ID موجود فعلا، هنعرض رسالة تنبيه للمستخدم ونعيد استدعاء دالة registration_form() تاني عشان يقدر يدخل بيانات جديدة. لو الـ ID مش موجود، هنا بس هندخل السجل الجديد في الداتابيز وهنعرض بياناته. بكده بقينا متأكدين ان اي ID جديد هيتم ادخاله مش موجود فعلا قبل كده في الداتابيز.
  11. للعلم مجلد gpms هو مجلد مشروع داخله مجلد admin وايضا يوجد مجلد uploads انا كود اكتبه في صفحة add_student داخل مجلد admin يعني مفروض يكون هكدا مسار تخزين صورة $folder = "..uplodas/" . $file_name; تظهر رسالة تم حفظ لكن لا يتم تخزين سجل او صورة $sql = "INSERT INTO `student`(`Name_std`, `Num_std`, `Email_STD` , `Password`, `dept_ID`, `group_ID`,`id_teah`,`img_std`) VALUES ( '$full_name' , '$id_std' , '$email_STD' , '$pass' , '$dept_std' , '$group','$id_teah','$file_name')"; دعنا نبدأ بتحليل وإصلاح الأخطاء خطوة بخطوة. مشكلة في استعلام SQL كان فيه غلطة في طريقة كتابة الاستعلام بتاع إدراج البيانات في الداتا بيز. لازم نتأكد ان كل القيم محاطة بعلامات اقتباس ، وان اسم العمود img_std ليه قيمة نصية صحيحة. الاستعلام الصح هيبقى: $sql = "INSERT INTO `student`(`Name_std`, `Num_std`, `Email_STD`, `Password`, `dept_ID`, `group_ID`, `id_teah`, `img_std`) VALUES ('$full_name', '$id_std', '$email_STD', '$pass', '$dept_std', '$group', '$id_teah', '$file_name')"; التأكد من نجاح الاستعلام لازم نتأكد ان الاستعلام اتنفذ بنجاح، ونعرض رسالة مناسبة للمستخدم: if (mysqli_query($con, $sql)) { move_uploaded_file($tempname, $folder); // رسالة نجاح وتحويل للصفحة التالية } else { echo "<div>حدث خطأ اثناء حفظ البيانات</div>"; echo mysqli_error($con); } لو طبقنا كل التصحيحات دي، المفروض الكود هيشتغل صح وهيحفظ بيانات الطالب وصورته في المكان المناسب. قولي لو لسه فيه اي حاجة مش واضحة او محتاج مساعدة تانية.
  12. لحفظ اسم الصورة في قاعدة البيانات والصورة نفسها في مجلد الرفع، يمكنك إجراء التعديلات التالية على الشفيرة: -قم بتعديل نوع العمود في جدول قاعدة البيانات لتخزين اسم الملف بدلا من تخزين المسار الكامل للصورة. -استخدم دالة move_uploaded_file() لحفظ الصورة في المجلد المحدد. واخيرا، قم بتحديث استعلام الإدراج لتخزين اسم الملف في قاعدة البيانات بدلا من المسار الكامل. وبعد عمل هذه التعديلات: تأكد من تعديل هيكل جدول قاعدة البيانات بحيث يحتوي العمود المخصص لاسم الملف على نوع بيانات يمكنه تخزين أسماء الملفات. وتأكد من أن عملية التحميل تتم بنجاح وأن الصورة تحفظ في المجلد المحدد uploads. لقد بينت لك الطريقة ، و اريدك أن تقوم بعملها بنفسك لكى تكتسب خبرة وتنقل مستواك.
  13. ماذا تقصد بإضافة صورة طالب ؟
  14. نعم هكذا ستصبح العلاقات ولكن يوجد تعديل صغير في العلاقه بين القسم والمشرف يجب عكس العلاقه حتي تصبح هكذا
  15. 1- لو كل طالب ليه مشروع واحد بس: هنا هتكون علاقة "واحد لواحد" بين الطالب والمشروع. في الـ ERD هنرسمها كده: الطالب (1) --- يملك --- (1) المشروع 2- كل مشرف بيتبع قسم واحد بس: دي علاقة "واحد لعديد" من ناحية القسم للمشرفين، يعني كل مشرف ليه قسم واحد بس، بس القسم الواحد ممكن يكون فيه مشرفين كتير. هنرسمها: المشرف (M) --- يتبع --- (1) القسم 3,4- مشرف واحد بيشرف على طلاب كتير: دي علاقة "واحد لعديد" من المشرف للطلاب، يعني مشرف واحد ممكن يشرف على عدة طلاب. هنرسمها: المشرف (1) --- يشرف --- (M) الطلاب كده بقينا واضحين على شكل العلاقات: - الطالب والمشروع: (1 -> 1) - المشرف والقسم: (1 <- M) - المشرف والطلاب: (1 -> M)
  16. 1- العلاقة بين الطالب والمشاريع هنا قلت "الطالب M --- يضيف --- 1 المشاريع"، يعني كل طالب ممكن يضيف مشروع واحد أو أكتر، بس كل مشروع بيتم إضافته من طالب واحد بس. لو مشروع واحد ممكن أكتر من طالب يشارك فيه، يبقى هنا لازم نغير العلاقة لتبقى M -> M (عديد لعديد). 2- العلاقة بين المشرف والقسم "المشرف M --- يتبع --- 1 القسم"، يعني ان قسم واحد ممكن يكون فيه مشرفين كتير، بس كل مشرف بيتبع قسم واحد بس. وده منطقي لو الأقسام فيها مشرفين أكتر من واحد. 3- العلاقة بين الطالب والقسم هنا لازم يكون فيه علاقة "يتبع" بين الطالب والقسم، لأن كل طالب لازم يكون متبع لقسم واحد. فلو كل قسم فيه طلاب كتير، يبقى العلاقة هتكون "الطالب M --- يتبع --- 1 القسم". عشان نحقق العلاقات الصح بين الكيانات دي، لازم نعمل بعض التعديلات على تخطيط الـ ERD عشان يعكس الحالة بشكل مظبوط: العلاقة بين الطالب والقسم دي هتكون علاقة "واحد لعديد" (1->M)، لأن كل طالب بيتبع قسم واحد بس، بس القسم الواحد ممكن يكون فيه طلاب كتير. يعني هنرسمها: الطالب (M) --- يتبع --- (1) القسم
  17. الخطأ 405 "Method Not Allowed" بيحصل لما البرنامج مش بيدعم الطريقة HTTP اللي انت بتستخدمها في الطلب. بتحاول ترفع صورة عن طريق PUT request، وده فيه مشكلتين: 1- النماذج في HTML مش بتدعم PUT ولا DELETE، بتدعم بس GET و POST. 2- لما بترفع ملف (زي الصورة دي)، لازم تغير content type بتاع الطلب ل multipart/form-data مش application/json، علشان البرنامج يفهم انك بترفع ملف مش بيانات عادية. عشان تصلح المشكلة دي، ممكن تعمل كده: في البَاك اِند (PHP/Laravel): تأكد ان مسار ال PUT صحيح وبيدعم رفع الصور، وان ProfileController بيتعامل مع الطلبات دي صح. في الفرونت إند: 1- تقدر تستخدم النموذج بطريقة POST وتضيف input مخفي اسمه _method بقيمة put، كده Laravel هتفهم ان الطلب الحقيقي هو PUT: <form action="http://localhost:8000/api/users/image/${EMAIL}" method="post" enctype="multipart/form-data"> <input type='hidden' name='_method' value='put'> <input id='image' type='file' name='image' /> <input type="submit" id='sub' /> </form> 2- لو هتستخدم fetch، لازم تستخدم FormData عشان ترفع الملف صح: let handleImage = () => { let formData = new FormData(); formData.append("image", document.getElementById('image').files[0]); fetch(`http://localhost:8000/api/users/image/adham111mahfoud@gmail.com`, { method: "PUT", body: formData }) .then(res => res.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); } وماتنساش تشيل "Content-Type": "application/json" من headers لأن ال fetch هيضبط content type لوحده لما تستخدم FormData. بتطبيق هذه التعديلات، يجب أن يتم حل مشكلة الخطأ 405 وتكون قادرا على رفع الصور بشكل صحيح.
  18. في مجال برمجة الأجهزة زي الآيفون والآيبود، البايثون مش الخيار الأول عادة. لغات زي Swift والObjective-C هي الأنسب لبرمجة تطبيقات الآيفون لأنها بتدعم مميزات الios أحسن وبتديك أداء أعلى. بس ممكن تلاقي حلول بديلة زي Kivy أو BeeWare اللي بتخليك تكتب تطبيقات ios بالبايثون، بس مش هتبقى كفاءتها وأدائها زي التطبيقات المكتوبة بلغات البرمجة الأصلية. لو كنا بنتكلم عن برمجة تطبيقات الماك، البايثون بيبقى خيار كويس، وبتقدر تستخدمها لعمل واجهات مستخدم رسومية بمكتبات زي PyQt أو Tkinter. وكمان بتستعمل كتير في أتمتة المهام وإدارة الملفات على الماك. أما لو كنا بنتكلم عن الآيبود، برمجة تطبيقات جديدة ليه مش بتحصل كتير خصوصا للأجيال القديمة، ومش فيه طرق معروفة تخليك تستخدم البايثون لبرمجة الآيبود على طول. فالبايثون ممكن تستخدمها مع أجهزة الآيفون والماك لكن مع وجود قيود وبتبقى لغات تانية أنسب في كتير من الحالات.
  19. هنا استخدام الإكسيل ممكن يكون أقل لزوم مقارنة بآلات ولُغات البرمجة الأكتر تخصص زي البايثون والآر أو حتى الماتلاب اللي بتوفرلك مكتبات ووظايف مباشرة للتعامل مع خوارزميات تعلم المكنة المعقدة. بس ممكن لسه يفضل الإكسيل في حاجات زي دي ممكن تستعمل الإكسيل عشان تستكشف البيانات بسرعة وتعمل ملخصات أو رسومات بيانية فاهمة توزيع البيانات أو تحدد القيم الشاذة أو المفقودة قبل تنقلها لآلات أكتر متقدمة. الإكسيل بيساعدك تقدم البيانات بطريقة مفهومة لغير المختصين من خلال العروض أو التقارير. ممكن تاخد البيانات للآخرين من غير ما يستخدموا آلات متقدمة في شغلهم. أحيانا ممكن تستخدم الإكسيل تنقل البيانات بين المنظومات أو تنسقها قبل استخدامها في النماذج. فالإكسيل مش أساسي زي البايثون أو التينسورفلو بس معرفتها ممكن تديك مرونة أكتر في مهام محددة وتساعدك تشتغل بشكل تعاوني أحسن مع أقسام تانية.
  20. تعلم Excel لتحليل البيانات فيه لزمة كبيرة، وده حتى لو كنت بتستخدم لغات برمجة زي Python أو تقنيات SQL في مجال تحليل البيانات. وده لان Excel بيتعامل معاه في كل مكان في الشركات والمؤسسات في الدنيا. تعرف تستخدم Excel يعني إنك تقدر تتعامل مع البيانات في كل الأوضاع وتتواصل مع الناس اللي ممكن يكونوا مش مبرمجين ويفضلوا الأدوات الجرافيكية على البرمجة. وهو ايضا عنده واجهة مستخدم سهلة جدا بتساعدك تعمل تحليلات بسيطة وسريعة من غير ما تحتاج تكتب أكواد معقدة. ده بيخليه مثالي للمهام السريعة أو لما تحتاج تغييرات بسيطة على البيانات. و يمكنك من فهم تنسيقات بيانات مختلفة قبل نقلها لبايثون أو قواعد البيانات. قد تحتاج إلى التعامل مع أنظمة إدارية تخزن البيانات في Excel. فيه كتير من الأدوات القوية للتحليل الإحصائي والمالي، زي Pivot Tables، والدوال الإحصائية، والرسوم البيانية. Excel ممكن يكون نقطة انطلاق ممتازة لفهم الأساسيات قبل ما تتعلم أدوات أكثر تعقيدا زي Python وSQL. بالطبع، Python وSQL قويين جدا وبيتعاملوا مع بيانات أكبر وتحليلات أعقد. Python مفيد خصوصا في التحليل الإحصائي المتقدم والتعلم الآلي، وSQL ممتاز للتعامل مع الاستفسارات المعقدة على قواعد البيانات. بس استخدام Excel لسه مهم لأسباب كتير، وبيكمل مهاراتك في Python وSQL بتقديم حلول سريعة وفعالة في مواقف مختلفة. فهو لا يحل محل بايثون وSQL بالتأكيد، لكن معرفته تساعد خاصة في بداية العمل مع البيانات.
  21. االمشكله اللي بتواجهها دي غلطة شائعة بتحصل لما بتكون فيه مشكلة في تكوين قيود الـ Foreign Key في قواعد بيانات MySQL مع Laravel. النوع ده من الاخطاء بيظهر لما خصائص العمود اللي عايز تربطه بـ Foreign Key مش متطابقة مع خصائص العمود المرجعي في الجدول التاني. فيه أسباب محتملة كتير للغلطة دي اولهم ان نوع البيانات مش متطابق لازم نوع البيانات للعمود id_client في جدول evaluers يكون نفس نوع البيانات للعمود id في جدول clients. وبعد كدا لازم ان تتأكد من خصائص العمود لو العمود id في جدول clients بيستخدم خصائص زي UNSIGNED، لازم العمود id_client في جدول evaluers يكون معرف بنفس الطريقة. و لازم الترميز والترتيب للجداول المرتبطة يكون متطابق. علشان تحل الغلطة دي، ممكن تتأكد من النقط دي يجب ان تتأكد من تطابق نوع البيانات وخصائصه: Schema::create('clients', function (Blueprint $table) { $table->increments('id'); // لو كان بيستخدم increments مثلًا }); Schema::create('evaluers', function (Blueprint $table) { $table->unsignedInteger('id_client'); $table->foreign('id_client')->references('id')->on('clients'); }); لو الجدول بيستخدم ترميز معين، تأكد ان الجدول التاني بيستخدم نفس الترميز والترتيب. شغل عملية التهجير من جديد بعد ما تتأكد من صحة التعريفات: php artisan migrate:fresh دي هتحذف كل الجداول وتعيد إنشائها من جديد. تأكد من أنك لا تفقد بيانات مهمة قبل تنفيذ هذا الأمر. ما ينفعش خالص تتجاهل النوع ده من الغلطات، لأنه هيأثر على سلامة البيانات والعلاقات في قاعدة البيانات، واللي ممكن يسبب مشاكل في استرجاع البيانات أو تكامل البيانات في المستقبل. الأفضل دايمًا تصلح الغلطات دي على طول.
  22. الحدود بالصور border-image-slice في CSS تستخدم لتحديد كيفية تقسيم وتوزيع صورة الحدود حول العنصر. الفكرة إن خاصية border-image-slice دي بتقسم الصورة الخاصه بك اللي انت محددها كحدود للعنصر، إلى شبكة 3 في 3، يعني 9 أجزاء. 4 زوايا، و4 أطراف، وواحد في النص. المهم لما تحدد قيمة border-image-slice ، إنت بتقول للبراوزر يقطع الصورة من حوافها بالمسافات اللي انت محددها. يعني لو قلت border-image-slice: 1 ، معناها هيقطع من كل ناحية وحدة واحدة من الصورة. طيب لو الصورة بتاعتك مثلا تدرج لوني زي المثال، يبقى لما تقول border-image-slice: 1 ، ده معناه إنه هياخد وحدة واحدة من طرف الصورة ويطبقها كحدود للعنصر. فلو العنصر عندك input، وانت عاملها border-bottom بقيمة 5 بكسل، وبعدين حددت صورة التدرج ده في border-image-source ، فسيظهر الحد السفلي للinput فيه نفس ألوان التدرج اللوني ده بناء على القيمة اللي انت حددتها في border-image-slice. ده بيديلك شكل حلو خالص وبيخلي الواجهة بتاعتك أكتر جمال وجاذبية، خصوصا في النماذج والمدخلات اللي انت عايز تلفت النظر ليها شوية. فعشان كده المهندسين بيلجأوا لاستخدام الصور في الحدود علشان يضيفوا لمسات أنيقة وفنية على التصميم، بدل ما يستخدموا حدود عادية سوليد لونها واحد. كل ده بفضل الخاصايا الرهيبة دي في CSS. يمكنك معرفه المزيد من هنا
  23. جزاك الله خيرًا على كلماتك الطيبة. لإضافة خطوط فاصلة بين الصفوف والأعمدة يمكنك اضافه للجدول كلاس table-bordered حيث يضيف للحدود على كافة جوانب الجدول والخلايا. ام بالنسبه لعرض نص مختار من قائمة select عند الطباعة، يمكنك استخدام جافا سكريبت لقراءة القيمة المختارة وطباعتها في عنصر يمكن طباعته. سأضيف كود جافا سكريبت لهذه الوظيفة ستضيف سكربت جافاسكربت للصفحة: <script> function printPage() { // نقرأ القيمة المختارة من السيلكت var selectedText = document.getElementById('options-select').options[document.getElementById('options-select').selectedIndex].text; // نعرض القيمة دي في عنصر عشان نطبعها document.getElementById('selected-value').innerText = "القيمة المختارة: " + selectedText; // ونطبع window.print(); } </script> ونضيف عنصر فاضي عشان نحط فيه القيمة المختارة قبل ما نطبع، ونديله كلاس printable علشان يتطبع: <div id="selected-value" class="printable"></div> 3. ونغير الزر بتاع الطباعة عشان يستدعي الفنكشن printPage() دي: <button onclick="printPage()">اطبع الجدول والخيار المختار</button> كده لما المستخدم يدوس على الزر، هيقرأ القيمة المختارة من السيلكت، ويعرضها في الديف اللي عملناه، وبعدين يطبع الجدول والقيمة المختارة مع بعض. نظام تمام كده يا معلم؟ فهمت الفكرة؟
  24. لا مشكله يمكنك رويه هذا الملف لكي توضح اليك الامور اكثر index.html print.css
  25. لا شكر على واجب، يمكنك استخدام ميزة ورقة أنماط CSS مخصصة للطباعة. ورقة الأنماط هذه تمكنك من تحديد العناصر التي تريد طباعتها والعناصر التي تريد إخفاءها عند الطباعة. يجب انشاء ملف css مخصص للطباعة، ونضعه في راس الصفحة كده: <link rel="stylesheet" href="print.css" media="print"> في ملف print.css هنكتب الأنماط اللي عايزين نطبقها على العناصر اللي هتتطبع بس، زي مثلا: body, html { visibility: hidden; /* نخفي كل حاجة الأول */ } .printable, .printable * { visibility: visible; /* ونظهر بس اللي فيها كلاس printable */ } .printable { position: absolute; left: 0; top: 0; } بعدين في الجدول اللي عايز نطبعه نضيف كلاس printable عليه: <table class="table table-striped table-responsive printable"> <!-- كود الجدول هنا --> </table> وآخر خطوة نضيف زر للطباعة بيستخدم window.print(): <button onclick="window.print()">اطبع الجدول</button> عندما المستخدم يدوس على الزر ده، هيطبع الجدول بس لأن الأنماط في print.css خصصت إن اللي هيبان هو العناصر اللي فيها كلاس printable بس. وممكن كمان تضيف الكلاس ده على أي عنصر تاني عايز يتطبع زي select مثلا. وهكذا استطعنا التحكم في ايه اللي هيتطبع وايه اللي لأ عن طريق إضافة الكلاس printable عليه.
×
×
  • أضف...