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

Mustafa Suleiman

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

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

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

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

    472

كل منشورات العضو Mustafa Suleiman

  1. أولاً، Python لغة برمجة سهلة التعلم وتحظى بشعبية كبيرة في مجال التعليم وتطوير البرمجيات. بالإضافة إلى ذلك، فإن Python يدعم بنية البيانات الكائنية بطريقة أكثر بساطة وسهولة من Java، وهذا يجعل فهم المفاهيم الأساسية في البرمجة الكائنية أسهل بكثير. على سبيل المثال، إذا أردت إنشاء كائن في Python، يمكنك ببساطة إنشاء متغير وتعيين قيمة له، مثل: my_object = "Hello World" وهذا ينشئ متغيرًا جديدًا من النوع النصي ويعين قيمته على "Hello World". ويمكن الوصول إلى هذا الكائن وتعديله بسهولة بواسطة المتغير my_object. أما بالنسبة للجافا، فيتطلب إنشاء كائن تعريف كلاس مستقل له. فمثلاً، إذا أردت إنشاء كائن من النوع String، يتعين عليك كتابة الكود التالي: String myObject = new String("Hello World"); يتطلب هذا الكود كتابة عدة أسطر وكتابة اسم الكلاس بالإضافة إلى استخدام new لإنشاء الكائن. وأيصًا تحتاج Java إلى المزيد من الشفافية والتعقيد في تعريف البنية الكائنية والتعامل معها بالمقارنة مع Python. وبشكل أكثر تفصيلاً، إليك بعض الأمثلة التي توضح فوائد استخدام Python في تعليم البرمجة الكائنية: 1- إنشاء كائنات يمكن إنشاء كائنات في Python بسهولة باستخدام الدوال والتعابير الشائعة في اللغة، مثلاً، لإنشاء كائن من النوع Person يمكن كتابة الكود التالي: class Person: def __init__(self, name, age): self.name = name self.age = age person1 = Person("John", 30) person2 = Person("Sarah", 25) هنا يتم تعريف الكلاس Person وإنشاء كائنين منه باستخدام الدالة __init__ التي تستخدم لتهيئة الكائنات. ويتم تمرير المعلومات الخاصة بالكائن (الاسم والعمر) كمدخلات للدالة. 2- الوصول إلى الخصائص يمكن الوصول إلى الخصائص الموجودة في الكائنات بسهولة في Python، وهذا يسهل فهم المفاهيم الكائنية. على سبيل المثال، للوصول إلى خاصية الاسم في الكائن Person يمكن كتابة الكود التالي: print(person1.name) وسيتم طباعة "John" كقيمة للخاصية name في الكائن person1. 3- إنشاء دوال الكائن يمكن إنشاء دوال خاصة بالكائنات في Python بسهولة باستخدام الكلمة المفتاحية self، و لإضافة دالة تعيد السن للكائن Person يمكن كتابة الكود التالي: class Person: def __init__(self, name, age): self.name = name self.age = age def get_age(self): return self.age person1 = Person("John", 30) print(person1.get_age()) ستعيد الدالة get_age() العمر الخاص بالكائن، وسيتم طباعته باستخدام الدالة print()، وهكذا.
  2. أهلا بك زياد، حاول استخدام رقم هاتف آخر أو كتابة رقم بشكل صحيح بعد إختيار البلد الخاصة بك كما في الصورة التالية: وإذا استمرت المشكلة أرجو منك التواصل مع مركز المساعدة الخاص بأكاديمية حسوب وسيتم حل مشكلتك. أو التواصل مع مركز الدعم الخاص بمستقل إذا كنت تريد العمل على موقع مستقل.
  3. تتمثل الطريقة الأكثر شيوعًا في إنشاء صفحة فريدة لكل إعلان على الموقع، من خلال إنشاء صفحة HTML مخصصة تحتوي على معلومات المنتج المحددة، والتي يتم تحميلها وعرضها عند النقر على إعلان المنتج، ويمكن أن يكون لكل صفحة عنوان URL فريد ، مما يسمح للمستخدمين بالرجوع إليها في أي وقت. وإنشاء صفحة فريدة لكل إعلان يسهل التعامل مع محتوى الموقع وتحديثه وصيانته بشكل فعال. بالإضافة إلى تحسين الأداء العام للموقع من خلال تخزين المحتوى المخصص للصفحات على مستوى التخزين المؤقت للمتصفح، مما يحد من حجم البيانات المرسلة بين المتصفح والخادم. وفي حالة كون عدد الإعلانات كبيرًا جدًا ومتجددًا باستمرار، يمكن استخدام منصات إدارة المحتوى مثل WordPress لإنشاء صفحات معلومات المنتجات بسهولة وتحديثها بسرعة، ويمكن استخدام السمات والإضافات لتخصيص التصميم والوظائف وتوفير المزيد من الخيارات والمرونة في إدارة المحتوى. وإليك، مثال بسيط على كيفية إنشاء صفحة HTML فريدة لإعلان منتج وعرض معلومات المنتج المحددة: HTML: <!DOCTYPE html> <html> <head> <title>Product Ad Page</title> </head> <body> <h1>Product Name</h1> <img src="product-image.jpg" alt="Product Image"> <p>Product Description</p> <ul> <li>Feature 1</li> <li>Feature 2</li> <li>Feature 3</li> </ul> <p>Price: $10</p> </body> </html> كما ترى تم إنشاء صفحة HTML بسيطة تحتوي على اسم المنتج، صورة المنتج، وصف المنتج، وميزات المنتج، وسعر المنتج. وبإمكانك تخصيص المعلومات الموجودة على الصفحة حسب الاحتياجات الخاصة بك، ويجب أن تحتوي صفحة المنتج على عنوان URL فريد ، على سبيل المثال: http://example.com/product-page. ولتحقيق ذلك، يجب إنشاء ملف HTML فريد لكل منتج وتخزينه في مجلد على الخادم الذي يمكن الوصول إليه عند النقر على الإعلان. بالإضافة إلى ذلك، باستطاعتك استخدام لغة البرمجة مثل PHP لتوليد محتوى الصفحة الديناميكي لتمكين المستخدمين من تفاعل مع صفحات المنتج بطريقة مخصصة أكثر، كالتالي: HTML: <!DOCTYPE html> <html> <head> <title>Product Ad Page</title> </head> <body> <h1><?php echo $product_name; ?></h1> <img src="<?php echo $product_image; ?>" alt="Product Image"> <p><?php echo $product_description; ?></p> <ul> <?php foreach ($product_features as $feature) : ?> <li><?php echo $feature; ?></li> <?php endforeach; ?> </ul> <p>Price: <?php echo $product_price; ?></p> </body> </html> PHP: <?php // استدعاء بيانات المنتج من قاعدة البيانات أو ملف معين $product_name = "Product Name"; $product_image = "product-image.jpg"; $product_description = "Product Description"; $product_features = array("Feature 1", "Feature 2", "Feature 3"); $product_price = "$10"; ?> وأيضًا بإمكانك استخدام React مع Express لإنشاء تطبيق ويب ديناميكي. حيث React هي مكتبة خاصة بالواجهة الأمامية (Front-End) لإنشاء واجهة المستخدم، ويستخدم Express كإطار عمل لجانب الخادم (Back-End) لإنشاء خدمات الويب وإدارة الملفات والاتصالات مع قاعدة البيانات. حيث يتم استخدام Express لإنشاء خدمات ويب API لإرجاع بيانات المنتجات من قاعدة البيانات، واستخدام React لإنشاء واجهة المستخدم وتحميل بيانات المنتجات باستخدام خدمات ويب API. مثلاً، استخدام fetch() API المدمجة في React لاستدعاء بيانات المنتجات من Express API، وتصميم واجهة المستخدم باستخدام JSX وتخصيصها باستخدام العناصر المتاحة في React مثل الأشكال والأزرار والجداول والقوائم وغيرها. وبالطبع، يمكن استخدام Express لتقديم ملفات HTML والملفات الثابتة (مثل الصور والأيقونات وملفات CSS وJavaScript) والوظائف الأخرى المتاحة للخادم. وإليك مثال على كيفية استخدام React و Express و React Router معًا لإنشاء تطبيق ويب ديناميكي: في ملف server.js (Express): const express = require('express'); const app = express(); const PORT = process.env.PORT || 3001; // خدمة ويب API لاسترداد بيانات المنتجات app.get('/api/products', (req, res) => { const products = [ { id: 1, name: 'Product 1', price: 10.99 }, { id: 2, name: 'Product 2', price: 15.99 }, { id: 3, name: 'Product 3', price: 20.99 }, ]; res.json(products); }); // يقوم Express بتقديم ملفات الويب الثابتة في المجلد public app.use(express.static('public')); // استمع على المنفذ المحدد app.listen(PORT, () => console.log(`Server listening on port ${PORT}`)); في ملف App.js (React): import React, { useState, useEffect } from 'react'; import { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom'; import './App.css'; function App() { const [products, setProducts] = useState([]); useEffect(() => { fetch('/api/products') // استدعاء API المنتجات من Express .then(response => response.json()) .then(data => setProducts(data)) .catch(error => console.error(error)); }, []); return ( <Router> <div className="App"> <nav> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/products">Products</Link> </li> </ul> </nav> <Switch> <Route path="/products"> <Products products={products} /> </Route> <Route path="/"> <Home /> </Route> </Switch> </div> </Router> ); } function Home() { return ( <div> <h2>Home</h2> <p>Welcome to our website!</p> </div> ); } function Products({ products }) { return ( <div> <h2>Products</h2> <ul> {products.map(product => ( <li key={product.id}> {product.name} - ${product.price} </li> ))} </ul> </div> ); } export default App;
  4. ما تقصده هو الوصول للقسم الأول من الدورات الأخرى مما يعني أنك في دورة تطوير واجهات المستخدم ستتمكن من الوصول للمسار الأول وهو يحتوي على التالي: أساسيات تطوير الويب أساسيات HTML أساسيات CSS أساسيات JavaScript أساسيات jQuery بناء موقع شخصي بالطبع يمكنك تنفيذ أي واجهة أمامية تريدها من خلال HTML, CSS, JS ولكن باستخدام مكتبات وإطر عمل مثل jQuery و React و Vue.js ستتمكن من تنفيذ واجهات أمامية تفاعلية متقدمة وأيضًا بشكل أسهل بمراحل. وما أنصحك به هو تعلم Vue.js حيث أنها تتوافق مع إطار لارافيل الخاص بلغة PHP وهي سهلة جدًا في التعلم. لكن يجب التنبيه إلى أنّ المسار الأول يشرح الأساسيات فقط، لذلك عليك بالتطبيق بمفردك أو الإشتراك في الدورة لتتمكن من رؤية باقي المسارات.
  5. بجانب ما تم ذكره، المشاريع المطلوب تسليمها هي المشاريع التي يتم كتابة كود بها، حيث ستجد في نهاية كل مسار متعلق البرمجة أو قواعد البيانات تطبيقات عملية نهائية ومن خلالها يتم التطبيق على ما تم دراسته في المسار. لذلك قم بالتطبيق بمفردك أولاً وإختبار نفسك ثم مشاهدة الحل الخاص بالمدرب والتطبيق معه ومقارنة الحل الخاص بك ثم رفعه على GitHub. وأيضًا إحتفظ بالملفات الخاصة بمشاريع سكراتش في حال طُلبت منك، أو أية ملفات أخرى خاصة بالتطبيقات العملية، وأنصحك بإنشاء مجلد خاص بالدورة وتقسيمه تبعًا لكل لمسار، حتى يسهل عليك ترتيب المشاريع والملفات.
  6. كما ذكرت لك، يمكنك الدفع بالجنيه المصري من خلال الفيزا الخاصة بك وسيتم التحويل إلى الدولار عند الدفع وهناك رسوم 10% تسمى رسوم تحويل عملة في البنوك المصرية، وقد أشرت لك بالأسباب والطرق في النقاش التالي: حيث أن المشكلة ليست في الدفع بالجنيه بل في نوع الفيزا إذا ظهرت لك رسالة تم رفض البطاقة، حيث يجب أن تكون من نوع debit أو credit. وإذا كانت من النوع الذي تم ذكره فقد تكون المشكلة من البنك الخاص بالبطاقة وعليك بالتواصل معهم. والأفضل هو التواصل مع لمركز المساعدة الخاص بأكاديمية حسوب طالما أنك تواجه مشكلة في الدفع.
  7. ربما البطاقة من نوع Prepaid أي مسبقة الدفع أي ليست مربوطة بحساب بنكي بل يتم شحنها صحيح؟ ما يجب استخدامه هو بطاقة من نوع debit أو credit وذلك يتطلب فتح حساب بنكي من خلال مفردات مرتب أو إثبات دخل، وإذا كنت طالب فسيتم فتح الحساب بكارنيه الجامعة أو إثبات أنك طالب بكل سهولة. أو ربما المشكلة في أنّ الفيزا الخاصة بك لا تدعم الشراء بالدولار من خارج مصر أو هناك حد معين للشراء على الفيزا.
  8. عملة الفيزا بالجنيه المصري ولا يشترط عليك فتح حساب دولاري، وعند الدفع بالجنيه يتم التحويل إلى دولار وذلك هو سبب رسوم تحويل العملة التي ذكرتها وهي 10%.
  9. من خلال فتح حساب واستخراج فيزا كما أخبرتك، ثم إضافة المبلغ المطلوب والذي تم توضيحه، ثم إدخال بيانات الفيزا هنا عند شراء الضغط على شراء الدورة والدفع ثم إختيار الدفع عن طريق البطاقة الائتمانية. ستجد هنا شرح كامل لطريقة الإشتراك وطرق الدفع وهما باي بال و البطاقة الإئتمانية.
  10. الباي بال المصري يوفر لك سحب الرصيد فقط، أما إذا أردت الشراء فيجب توفير فيزا للشراء أون لاين والأفضل أن تكون من نوع Debit أو Credit وإذا كنت طالب فيمكنك التوجه إلى بنك CIB أو بنك إسكندرية وفتح حساب بسهولة واستخراج فيزا. ثم إضافة المبلغ المطلوب الذي قد وضحته من قبل وهو 320 دولار وقد يقل عن ذلك لكن إحتياطًا، وبالطبع قم بضرب المبلغ في السعر الرسمي للدولار في البنك الخاص بك. ومن خلال باي بال يمكنك تحويل الجنيهات إلى دولار من خلال إضافة الفيزا إلى حسابك في باي بال ثم الشراء من خلالها. وسيوجد رسوم تحويل عملة 4% من قبل باي بال ولا أعلم هل سيتم فرض رسوم من قبل الفيزا أيضًا وهي نسبة 10% أم لا، ولذلك من الأفضل الدفع عن طريق الفيزا مباشرًة إذا أمكن.
  11. في حالة الدفع باستخدام الدولار فلا يوجد رسوم وهو أمر غير ممكن في الباي بال "المصري"، أما في حالة الدفع بعملة الجنيه وهي عملة الفيزا المصرية الخاصة بك فسيوجد رسوم تحويل 4% ولا أعلم هل سيتم فرض رسوم من قبل الفيزا أيضًا وهي نسبة 10% أم لا، ولذلك من الأفضل الدفع عن طريق الفيزا مباشرًة إذا أمكن. وفي حالة تم رفض الفيزا الخاص بك عند الدفع فقم بربطها بباي بال ثم الدفع، حيث أنّ ذلك قد يحدث إذا كانت الفيزا prepaid أي مسبقة الدفع وليس debit أو credit. وبخصوص تفعيل باي بال المصري فقد تم شرحه في النقاش التالي وذكر اسم الفيزا المناسبة، ويجب التنبيه إلى أنه لا يمكن الشراء مباشرًة من خلال رصيد باي بال "المصري" بل يجب ربطه بفيزا والشراء من خلالها:
  12. المدونة جيدة ويجب ربطها بـ Google console للتأكد من الأرشفة جيدة ولا يوجد مشاكل بالموقع وخاصًة عند عرضه على الهاتف وأن الأزرار والنص يتم عرضهم بشكل مناسب وألا يقل حجم الخط عن 18px أو 16px إذا الخط المستخدم سميك. وأيضًا التأكد من سرعة المدونة من خلال عمل فحص على https://pagespeed.web.dev/ . ويجب إخفاء الصفحات مثل من نحن وسياسة الخصوصية من الصفحة الرئيسية وعرض المقالات فقط. وعند التقدم لجوجل أدسنس حاول ألا يقل عدد المقالات عن 14 وأيضًا حجم المقالة عن 1000 كلمة مع توافر صور بجودة جيدة وفيديو إذا أمكن وتجنب نسخ أي نص إلا لو كان مثلاً مواصفات وما شابه
  13. إذا كانت المكتبة صغيرة الحجم ويتم استخدامها بشكل واسع على صفحات موقعك ، فمن المفضل استخدام CDN لتحسين أداء الموقع، حيث ستتم مضاعفة الفائدة إذا كنت تستخدم CDN للمكتبات الشائعة التي يتم تحميلها من نفس الخادم للعديد من المواقع. بمعنى أبسط عندما تستخدم CDN لتحميل مكتبات البرمجة التي تستخدمها على موقعك، فإن ذلك يعني أن المكتبة تحمل من خادم مختلف وليس من خادم موقعك. وهذا يتيح الفرصة لتحسين أداء موقعك بشكل كبير، لأنه يمكن للخادم المركزي الذي يقدم خدمة CDN توزيع الملفات المطلوبة من أقرب نقطة إلى موقع الزائرين، مما يقلل من الوقت اللازم لتحميل الملفات. وفي الواقع، إذا كنت تستخدم CDN لتحميل مكتبات البرمجة الشائعة، فربما يتم تحميل المكتبة نفسها من نفس الخادم المركزي للعديد من المواقع، وبالتالي يكون هناك نسخ مخزنة من المكتبة في العديد من الخوادم المنتشرة في جميع أنحاء العالم، وهذا يساعد على تحسين سرعة تحميل المكتبة وتقليل الضغط على خادم موقعك. أما إذا كان حجم المكتبة كبيرًا أو لا يتم استخدامها بشكل كبير على صفحات موقعك، فمن المفضل تنزيل المكتبة واستخدامها محليًا. وبالتالي، لن يؤثر تأخير تحميل المكتبة من CDN على سرعة تحميل صفحة الموقع. وأرجو منك قراءة النقاش هنا على السؤال التالي:
  14. أهلا بك حمزة، الإشتراك في دورات الأكاديمية يتم من خلال الدفع عن طريق باي بال أو بطاقة الإئتمان أو بطاقة الهدية وجميعها تحتاج إلى الدفع بالدولار. ولذلك هناك حلان، الأول وهو أن تقوم بشحن بطاقة تقبل بالشراء من على الإنترنت ودفع تكلفة الدورة وهي 290 دولار للدورة الواحدة مع الأخذ في الحسبان أن في مصر يتم وضع 10% من إجمالي المبلغ المدفوع كرسوم تحويل عملة ليصبح المبلغ هو 320 دولار وقم بضرب المبلغ في السعر الرسمي للبنك الخاص بالفيزا التي ستقوم بالشراء من خلالها. والحل الثاني هو أن تقوم بالدفع إلى وسيط أو إلى أي شخص آخر ليدفع لك تكلفة الدورة، أو أن يقوم بشراء بطاقة هدية بتكلفة الدورة وستسخدمها لشراء الدورة. ولا تنسى عرض رمضان حيث يوفر لك اشتراك دورتين بثمن دورة واحدة. عرض رمضان 2023 وللمزيد من الشرح حول بطاقة الهدية وطرق الدفع أرجو منك قراءة الإجابات على السؤال التالي. وهنا توضيح لكيفية الوصول للدورات الخاصة بك بعد الإشتراك. وبخصوص الدفع بالجنيه، فأرجو منك الاستفسار عن ذلك من خلال التحدث لمركز المساعدة في أكاديمية حسوب.
  15. لا مشكلة في ذلك، لكن عليك بتقبل فكرة أن المدونة بحاجة إلى فترة تتراوح من 3 من إلى 6 أشهر لتعود لتحقيق النتائج وتحقيق ترتيب في جوجل. وطالما المدونة في بدايتها فلا مشكلة، والأفضل هو كتابة مقال كبير كل فترة طالما لن توفر محتوى بشكل يومي أو شبه يومي، من الممكن أن تخصص يومي الخميس والجمعة للكتابة والنشر.
  16. الدوال لا تنتمي لمكتبة Spatie، فدالة "text()" ودالة "sentences()" تنتميان إلى مكتبة PHP الأساسية (Core PHP) ويمكن استخدامهما في أي تطبيق PHP دون الحاجة إلى تثبيت مكتبات إضافية. ما قصدته هو استخدام مكتبة Spatie لتحويل ملفات PDF إلى نص، وقطع النص إلى جمل، وهي مكتبة PHP مفتوحة المصدر توفر العديد من الوظائف المفيدة لتطوير تطبيقات الويب. وذلك عن طريق وظيفة extract() التي تأخذ اسم الملف الذي تريد استخراج النص منه كمدخل، ويتم إرجاع النص كنص عادي (string) ومن ثم يمكن استخدام وظائف النص العادية في PHP مثل explode() لقطع النص إلى جمل. مثال على ذلك: use Spatie\PdfToText\Pdf; // اسم الملف الذي نريد استخراج النص منه $filename = 'file.pdf'; // استخراج النص من الملف $text = Pdf::extract($filename); // قطع النص إلى جمل $sentences = explode('.', $text); // اختبار طباعة أول جملة echo $sentences[0]; يجب تثبيت مكتبة Spatie باستخدام Composer قبل استخدامها في التطبيق، ويمكن الاطلاع على المزيد من الوظائف التي توفرها المكتبة في الوثائق الرسمية للمكتبة على موقع GitHub.
  17. سؤالك غير واضح أرجو تعديل نص السؤال وتوضيحه. وإذا كان سؤالك بخصوص أيقونات font-awesome فعليك بقراءة الإجابات التالية، ففيها شرح استخدام مكتبة font-awesome. وأيضًا تأكد من أنك تستخدم أيقونات مجانية free من خلال تحديد خيار free عند البحث عن الأيقونات وأيضًا تحديد رقم إصدار المكتبة عند البحث سواء 5 أو 6 ليتوافق مع إصدار المكتبة الذي قمت باستيراده في كود HTML الخاص بك. وذلك هو رابط الإصدار 6.4 والذي يجب وضعه ضمن عنصر head في الصفحة التي تريد ظهور الأيقونات بها. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  18. قد تم شرح كيف يتم تغيير لون الزر في المقال، ويمكنك أيضًا استخدام أكواد CSS لتحديد اللون الذي تريده، أو استخدام الألوان المحددة مسبقًا من قبل ووردبريس. ولوضع رمز داخل الزر، يمكنك استخدام HTML لوضع الرمز داخل العنصر زر، باستخدام رموز Font Awesome أو Glyphicons أو أي رمز آخر تريده. على سبيل المثال ، يستخدم الكود التالي لإنشاء زر أحمر اللون مع رمز تعجب بداخله: <button class="btn btn-danger"><i class="fa fa-thumbs-up"></i> Like</button> هذا يستخدم مكون الأزرار في ووردبريس مع تطبيق الفئة "btn-danger" التي تغير لون الزر إلى اللون الأحمر ، ويضع رمز Font Awesome لزر الإعجاب داخل الزر. لاحظ أنه ستحتاج إلى إضافة مكتبة Font Awesome إلى موقعك لاستخدام رموزها.
  19. يمكن تحويل التواريخ بلغة PHP باستخدام دالة التحويل المدمجة في PHP والتي تسمى "date"، من خلال تحديد تنسيق التاريخ الذي يتم تحويله باستخدام الأحرف المحددة. لتحويل تاريخ ميلادي إلى تاريخ هجري، يمكن استخدام دالة "HijriDate" المدمجة في PHP. حيث يتم تمرير تاريخ الميلادي الذي يجب تحويله كوسيط، ويتم تحديد اليوم والشهر والسنة المناسبة للتاريخ الهجري المحول. يمكنك استخدام الكود التالي: // تاريخ ميلادي للتحويل $miladi_date = '2023-04-11'; // تحويل التاريخ الميلادي إلى هجري $hijri_date = date('d-m-Y', strtotime($miladi_date)); $hijri_date = HijriDate('d-m-Y', strtotime($miladi_date)); // طباعة التاريخ الهجري echo 'التاريخ الهجري: '.$hijri_date; ولتحويل تاريخ هجري إلى ميلادي، يمكن استخدام الدالة "HijriToJD" لتحويل التاريخ الهجري إلى عدد الأيام منذ التاريخ اليولياني الأول (1 يناير 4713 قبل الميلاد)، ومن ثم استخدام دالة "JDToGregorian" لتحويل عدد الأيام إلى تاريخ ميلادي. يمكنك استخدام الكود التالي: // تاريخ هجري للتحويل $hijri_date = '1444-08-01'; // تحويل التاريخ الهجري إلى ميلادي $hijri_jd = HijriToJD( explode('-', $hijri_date)[1], explode('-', $hijri_date)[2], explode('-', $hijri_date)[0]); $miladi_jd = $hijri_jd - 2400000.5; $miladi_date = JDToGregorian($miladi_jd); // طباعة التاريخ الميلادي echo 'التاريخ الميلادي: '.$miladi_date;
  20. قرار تحويل صفة نوع العقار إلى كينونة أخرى يعتمد على عدة عوامل، مثل نوع التطبيق ومتطلبات الأعمال المحددة للنظام الذي يستخدم هذه الجداول. على سبيل المثال، باستطاعتك استخدام جدول منفصل لتعريف أنواع العقارات، حيث يمكن تحديد مفتاح فريد لكل نوع عقار واستخدام هذا المفتاح في جدول العقارات بدلاً من صفة النوع. يمكن أيضًا توفير جدول منفصل للميزات المشتركة بين أنواع العقارات، مثل عدد الغرف أو المساحة، وتوصيلها بجدول العقارات باستخدام مفتاح خارجي. باختصار، تحويل صفة نوع العقار إلى كينونة أخرى يمكن أن يساعد في تحسين تنظيم وفهرسة البيانات وجعلها أكثر فعالية وسهولة في الإدارة.
  21. المشكلة تحديدًا في أن اسم المتغير my number = 6 غير صحيح في Python لأن الأسماء (variables) في Python لا يمكن أن تحتوي على مسافات. بدلاً من ذلك، يجب عليك استخدام _ أو camelCase لتجميل الكلمات في الأسماء. لذا، يمكنك تعديل الأمر إلى my_number = 6 لتخزين الرقم 6 في متغير my_number. إليك مثال آخر: myVariable = "Hello, world!" # اسم متغير صحيح يستخدم camelCase my_variable = "Hello, world!" # اسم متغير صحيح يستخدم snake_case my variable = "Hello, world!" # اسم متغير غير صحيح - يحتوي على مسافة وبالتأكيد أنت تتسائل: هل يمكنك كتابة اسم المتغير كالتالي: my-variable والإجابة هي لا يمكن استخدام علامة الشرطة المنخفضة (dash) في اسم المتغير في Python، لأن Python يفهمها كعلامة خاصة. لذلك استخدمنا شرطة سفلية (underscore) بدلاً من ذلك في اسم المتغير، مثل my_variable.
  22. هل تنوي العمل على مواقع أجنبية أو مع شركات أجنبية؟ إذا كان الأمر كذلك فنعم تعلم اللغة وإطار Ruby on rails الخاص بها. رغم أني لا أفضل تلك اللغة كلغة أولى لك فهى تضيق عليك مجال العمل كثيرًا ولكن لها مرتب مجزي بالطبع نظرًا لقلة المطورين المتوفرين للغة. وإذا كنت تريد العمل في السوق المحلي أو على مواقع العمل الحر مثل مستقل وخمسات، فعليك بتعلم التالي: HTML, CSS, JS بعد ذلك عليك بتعلم لغة خاصة بالواجهة الخلفية Back-End وما أنصحك به هو تعلم PHP ثم إطار لارافيل وأيضًا وورد بربس. وبخصوص إطار الواجهة الأمامية فأنصحك بتعلم VUE.JS في حال تعلمت إطار لارافيل وأيضًا هناك وظائق متاحة لها بالنسبة للمبتدأين وأيضًا أنصحك بتعلم إطار Angular.js إذا أردت التخصص في الواجهة الأمامية فقط ثم تعلم لغة Net. الخاصة بالواجهة الخلفية ويمكن استخدامها للواجهة الأمامية أيضًا وستجدها مطلوبة بكثرة مع إطار Angular.js في إعلانات الوظائف. ولا تشغل بالك بالمصطلحات أو أسماء الإطارات حاليًا فقط قم بتعلم الأساسيات وستتضح لك الصورة بشكل كبير. والأمر يتوقف على سنك أيضًا فإذا كان سنك صغيرة فقم بتعلم ما تريد عزيزي، أما إذا كنت تريد التعلم من أجل الحصول على وظيفة فيجب تعلم المهارات المطلوبة في سوق العمل. أنصحك بقراءة النقاشات التالية فقد تم الإجابة فيها على الكثير من الأسئلة. وأرشح لك البداية من خلال تعلم أساسيات الحاسوب وتوجد دورة خاصة بذلك في أكاديمية حسوب، وأيضًا دورة خاصة بلغة PHP وإطار لارافيل وورد بريس ويوجد عرض رمضان للحصول على دورتين بثمن دورة واحدة.
  23. ما تريده هو إضافة خاصية رفع الصور في تطبيقك Facebook clone بإستخدام تقنيات MERN و TypeScript. وهناك طرق عديدة لتنفيذ ذلك، فحاول إتباع التالي: قم بتثبيت وإعداد مكتبة multer لإدارة عملية تحميل الملفات. في ملف الخادم الخاص بك، قم بإضافة نقطة نهاية (end-point) لتلقي طلبات تحميل الملفات، وبإمكانك استخدام multer لتحديد المسار الذي سيتم تحميل الملفات إليه وتحديد اسم الملف. في الجزء الخاص بالعميل، قم بإنشاء نموذج لرفع الملفات باستخدام العنصر input الذي يسمح بتحديد نوع الملفات المسموحة وأقصى حجم للملفات. في المتحكم الخاص بالعميل، أنشئ دالة تعمل على إرسال طلب تحميل الملفات إلى نقطة النهاية التي قمت بإنشائها في السيرفر. بعد تحميل الملف، يمكنك حفظ معلومات الصورة في قاعدة البيانات الخاصة بك واستخدامها في العرض أو التحديث أو الحذف أو غيرها من الأنشطة. يمكنك استخدام cloudinary أو AWS S3 لتخزين الصور وتوفير الامكانية لتحميلها والوصول إليها. قد تحتاج إلى تحديد بعض الإعدادات في مكتبة multer وفقًا لما تحتاجه. مثال بسيط: 1- تثبيت وإعداد multer multer هي مكتبة Node.js تستخدم لإدارة عملية تحميل الملفات. npm install --save multer 2- ثم، في ملف server.js، يجب عليك استيراد multer وتهيئته حسب احتياجات تطبيقك. هنا مثال على ذلك: const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); // تعيين مسار الحفظ app.post('/upload', upload.single('file'), (req, res) => { // تنفيذ الإجراءات اللازمة لحفظ الملف }); تقوم multer في هذا المثال بإنشاء مجلد uploads/ ويحفظ الملفات التي تم تحميلها في هذا المجلد. ويتم تحميل الملفات باستخدام طريقة POST لنقطة النهاية /upload. يتم تحديد اسم الملف باستخدام الوسم name الذي يتم تمريره من العميل. 3- إضافة عنصر input لرفع الملفات في العميل في صفحة React الخاصة بك، يمكنك إضافة العنصر input لرفع الملفات كما هو موضح في الكود التالي: import React, { useState } from 'react'; function UploadForm() { const [file, setFile] = useState(null); const handleChange = (event) => { setFile(event.target.files[0]); }; const handleSubmit = (event) => { event.preventDefault(); const formData = new FormData(); formData.append('file', file); fetch('/upload', { method: 'POST', body: formData, }) .then((response) => response.json()) .then((data) => { console.log(data); }) .catch((error) => { console.error(error); }); }; return ( <form onSubmit={handleSubmit}> <input type="file" onChange={handleChange} /> <button type="submit">Upload</button> </form> ); } export default UploadForm; 4- عرض الصور المحملة في العميل يمكن استخدام URL.createObjectURL لتحويل الملف الذي تم تحميله إلى عنوان URL يمكن استخدامه لعرض الصورة في الصفحة. يمكنك تحديث حالة React الخاصة بالصورة المحملة وتمرير العنوان الجديد إلى عنصر img. يمكنك استخدام الكود التالي كمثال: import React, { useState } from 'react'; function UploadForm() { const [file, setFile] = useState(null); const [image, setImage] = useState(null); const handleChange = (event) => { setFile(event.target.files[0]); setImage(URL.createObjectURL(event.target.files[0])); }; const handleSubmit = (event) => { event.preventDefault(); const formData = new FormData(); formData.append('file', file); fetch('/upload', { method: 'POST', body: formData, }) .then((response) => response.json()) .then((data) => { console.log(data); }) .catch((error) => { console.error(error); }); }; return ( <div> <form onSubmit={handleSubmit}> <input type="file" onChange={handleChange} /> <button type="submit">Upload</button> </form> {image && ( <img src={image} alt="Uploaded image" style={{ maxWidth: '100%' }} /> )} </div> ); } export default UploadForm; وما يفعله الكود السابق هو تحديث حالة الصورة (image) عندما يتم تحديد ملف جديد. إذا تم تحميل الملف بنجاح، فسيظهر الصورة المحملة في الصفحة.
  24. Scrapy هو إطار عمل مفتوح المصدر (Open-source) مكتوب بلغة بايثون (Python) ويستخدم للحصول على بيانات من صفحات الويب واستخراجها بشكل تلقائي، ويتم استخدامه في تطوير تطبيقات ومشاريع الويب سكرابينغ والتنقيب عن البيانات (Web scraping and data mining). مثالًا بسيطًا يوضح كيفية استخدام إطار عمل Scrapy للحصول على عناصر محددة من صفحة الويب: لنفرض أننا نريد جمع عناوين الكتب الأكثر مبيعًا في موقع آمازون. يمكننا استخدام إطار عمل Scrapy لجلب عناوين الكتب عبر الخطوات التالية: 1- تثبيت إطار العمل Scrapy باستخدام الأمر التالي: pip install scrapy 2- إنشاء مشروع Scrapy جديد باستخدام الأمر التالي: scrapy startproject amazon_books 3- تعديل ملف amazon_books/spiders/spider.py الذي يمثل الملف الرئيسي للتحكم في عملية الحصول على البيانات، وإضافة الكود التالي لاستهداف صفحة الكتب الأكثر مبيعًا وجمع العناوين: import scrapy class AmazonBooksSpider(scrapy.Spider): name = "amazon_books" start_urls = [ 'https://www.amazon.com/gp/bestsellers/books/', ] def parse(self, response): for book_title in response.css('.p13n-sc-truncated'): yield {'title': book_title.css('::text').get()} 4- تشغيل مشروع Scrapy باستخدام الأمر التالي: scrapy crawl amazon_books سيعرض الأمر السابق عناوين الكتب الأكثر مبيعًا على موقع آمازون.
  25. من الجيد أنك قمت بالبحث واختيار Google Cloud لـ Object Storage ومكتبة Spatie لتحويل PDF إلى نص، هذا يعني أنك على الطريق الصحيح. 1- بالنسبة لتحليل ملفات PDF، أنت عثرت بالفعل على مكتبة Spatie. وفي PHP بإمكانك استخدام الدالة "text()" لتحويل الملف إلى نص، ثم يمكنك استخدام دالة "sentences()" لتقطيع النص إلى جمل. 2- وبالنسبة للجداول، يمكنك تسميتها بأي اسم تريده، ولكن من الأفضل أن تختار أسماء مناسبة وسهلة الفهم، مثل Files و Sentences. مثلاً، اسم جدول Files هو "pdf_files"، وذلك لأن هذا الجدول يحتوي على سجلات الملفات التي تم تحميلها، بينما يمكن أن يكون اسم جدول Sentences هو "pdf_sentences"، وذلك لأنه يحتوي على سجلات الجمل المستخرجة من الملفات. يمكن أيضاً استخدام أسماء تحوي على معنى مثل "uploaded_files" و "parsed_sentences". 3- لربط الـ Object Storage مع Laravel، يمكنك استخدام مكتبة Google Cloud Storage، وتثبيتها باستخدام Composer. 4- باستطاعتك استخدام وظيفة "upload()" لتحميل الملفات إلى Object Storage، ولإضافة سجل في قاعدة البيانات، وبإمكانك استخدام وظيفة "create()" في طراز البيانات الخاص بك. 5- لحفظ الجمل في جدول الجمل، تتوفر وظيفة "create()" أو "insert()" لإدخال كل جملة في قاعدة البيانات وربطها بملف PDF. 6- بالنسبة للبحث عن الكلمة المفتاحية في جميع الملفات، تتوفر وظيفة "where()" في Laravel للعثور على جميع الملفات التي تحتوي على الكلمة المفتاحية، ثم استخدم وظيفة "pluck()" لاسترداد معرفات الملفات فقط، ثم استخدام وظيفة "with()" لاسترداد جميع الجمل المرتبطة بكل ملف. ولا تنسى تأمين API الخاص بك باستخدام Basic Auth وإعداد اختبارات الوحدة للتأكد من أن جميع الوظائف تعمل بشكل صحيح.
×
×
  • أضف...