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

Khaled Osama3

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

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

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

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

    1

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

  1. نغم تفيد كل ما عليكى هو فهم كيفية إنشاءها ومن ثم عملها بأى لغة برمجة.
  2. نعم يدخل فى مهام مطور واجهة المستخدم. اذا كنت تريد عمله باستخدام مكتبة bootstrap فيمكنك ذلك عن طريق استخدام مكتبة Polylang. ونعم يوجد فى أخر دورة تطوير تطبيقات الويب باستخدام لغة PHP فصل عن التعريب وهو شبيه جدا للتوطين ، وفعال اكثر منه. رابط الدورة:https://academy.hsoub.com/learn/php-web-application-development/
  3. سوف اقوم بشرحها لك عن طريق مثال: تخيل أن الدوال هي مثل الأدوات في علبة أدوات البرمجة. لكن في حالة الدوال ذات النظام العالي، يمكنك أن تتعامل مع هذه الأدوات بطريقة أكثر مرونة وقوة. بدلاً من أن تكون مقيدًا بطريقة معينة لاستخدام الأدوات، يمكنك استخدام هذه الأدوات لبناء أدوات أخرى أو حتى تمريرها إلى أدوات أخرى لتفعيل مهام معينة. لنفهم ذلك بمثال بسيط. لنفترض أن لديك دالة تُسمى "ضرب_في_اثنين" تأخذ عددًا وتضربه في 2 وترجع الناتج. في البرمجة التقليدية، ستبدو الدالة بهذا الشكل: def multiply_by_two(number): return number * 2 def apply_operation(number, operation): # هذه هى high oreder function return operation(number) result = apply_operation(5, multiply_by_two) print(result) #الناتج سيكون 10 هنا ايضا تم تمرير الدالة multiply_by_two كمدخل لدالة apply_operation، والتي قامت بتنفيذ الضرب على الرقم 5.
  4. تحتاجين لتعلم التوطين (localization). التوطين هو عملية تكييف المنتج أو التطبيق ليكون ملائمًا لسوق محدد أو لغة معينة أو ثقافة معينة. يتضمن التوطين تعديل النصوص والرسومات والتصميمات والتوجيهات البرمجية بحيث تتوافق مع الاحتياجات والتفضيلات الثقافية واللغوية للمستخدمين في السوق المستهدف. يشمل التوطين تغيير النصوص، وتعديل التنسيق والتصميم ليناسب الثقافة واللغة المستهدفة، وتحويل العملات والتوقيت إلى النظام المستخدم في البلد المستهدف، وتوفير ترجمة للواجهة والمحتوى، بالإضافة إلى تعديل الأشكال والرموز الخاصة بتوافقها مع الثقافة المستهدفة. على سبيل المثال، إذا كنت تطور تطبيقًا للهواتف الذكية وترغب في إطلاقه في الأسواق العربية، فسيكون عليك توطين التطبيق ليدعم اللغة العربية، وقد يتطلب ذلك ترجمة النصوص إلى العربية، وضبط التصميم ليدعم الكتابة من اليمين إلى اليسار، وتغيير بعض الرموز والصور لتتناسب مع الثقافة العربية، وغيرها من التعديلات المتعلقة باللغة والثقافة. ويمكنكى استخدام لغة ال JavaScript للقيام بهذه المهمة. وهذا مثال بسيط للتوطين بين اربعة لغات مختلفة، اللغة العربية والإنجليزية والفرنسية والإسبانية. function translateText(text, targetLanguage) { // قاموس الترجمة const translations = { "مرحبا": { "en": "Hello", "fr": "Bonjour", "es": "Hola" }, "كيف حالك؟": { "en": "How are you?", "fr": "Comment ça va?", "es": "¿Cómo estás?" }, }; // التحقق مما إذا كان النص موجودًا في قاموس الترجمة if (translations[text]) { // إذا كان النص موجود، فتحقق من توفر الترحمة للغة المستهدفة if (translations[text][targetLanguage]) { // إذا وجدت الترجمة، قم بإرجاعها return translations[text][targetLanguage]; } else { // إذا لم تجد الترجمة، قم بإرجاع النص الأصلي return text; } } else { // إذا لم يكن النص موجودًا في قاموس الترجمة، قم بإرجاع النص الأصلي return text; } }; const originalText = "مرحبا"; const targetLanguage = "en"; // اللغة المستهدفة هنا هي الإنجليزية const translatedText = translateText(originalText, targetLanguage); console.log(translatedText); // Output: Hello
  5. اذا كان هذا سؤال فنعم.
  6. الفرق الرئيسى بينهم أن MySQL عبارة عن قاعدة بيانات و SQLite3 عبارة عن مكتبة يتم تضمنها فى ال تطبيق لديك وهذا مقارنة تفصيلية بينهم نوع الخادم: MySQL: يتم تشغيل MySQL كخادم قاعدة بيانات مستقل يستجيب للاتصالات من عملاء متعددين. SQLite3: يتم تضمين SQLite3 كمكتبة داخلية في التطبيق ويتم الوصول إليها مباشرة دون الحاجة إلى خادم قاعدة بيانات منفصل. المتطلبات والتثبيت: MySQL: يتطلب تثبيت وتكوين خادم MySQL منفصل، ويحتاج إلى مساحة وذاكرة كبيرة. SQLite3: لا يتطلب تثبيت منفصل، حيث يمكن استخدام ملف SQLite3 بسهولة داخل التطبيق بدون أي تكوينات معقدة. الاداء: MySQL: يمكن أن تكون قواعد البيانات الكبيرة ومعالجة العمليات المتعددة تحت ضغط متزايد. SQLite3: تكون الأداء أسرع وأبسط بشكل عام، ولكن قد تظهر بعض القيود في الأداء عند التعامل مع قواعد بيانات كبيرة أو العمليات المتعددة. الدعم والمجتمع: MySQL: يتمتع MySQL بدعم كبير ومجتمع نشط، مما يعني وجود العديد من المصادر والموارد المتاحة للمستخدمين. SQLite3: يحظى SQLite3 أيضًا بدعم واسع النطاق، ولكن قد يكون أقل بعض الشيء من MySQL نظرًا لطبيعته الخفيفة والموجهة نحو التطبيقات الصغيرة. الوظائف والقدرات: MySQL: يوفر MySQL مجموعة واسعة من الوظائف والميزات مثل التعقيد العالي والتنمية الجماعية والتحكم في النسخ الاحتياطي. SQLite3: تكون ميزات SQLite3 أقل قليلاً من MySQL، حيث يركز SQLite3 على توفير وظائف أساسية لإدارة قواعد البيانات بشكل بسيط وفعال.
  7. $(document).ready(function(){ let $qty__up = $(".qty-up"); let $qty__down = $(".qty-down"); let $input = $(".qty_input"); // click on qty up button $qty__up.click(function(e){ e.preventDefault(); let currentValue = parseInt($input.val()); if(currentValue >= 1 && currentValue <= 9){ $input.val(currentValue + 1); } }); // click on qty down button $qty__down.click(function(e){ e.preventDefault(); let currentValue = parseInt($input.val()); if(currentValue > 1 && currentValue <= 10){ $input.val(currentValue - 1); } }); }); يمكنك تجربة هذا الكود بعد التعديل ، وحاول التأكد من ال conditions اللى هل هى صحيحة وهل تقوم بما تريده جيدا .
  8. يرجي ملاحظه ان الكود المرسل لا يحتوي علي إغلاق تعليمة if بقافلة } يجب ان تضع علامه } بعد هذا السطر mysqli_stmt_close($stmt); وقبل هذا السطر ?>.
  9. ارجو ارسال رساله الخطأ الذي تظهر لك. يرجي ملاحظه ان الكود المرسل لا يحتوي علي إغلاق تعليمة if بقافلة }.
  10. نعم، إذا أردت استخدام mysqli بدلاً من PDO، فهذه هي الطريقة الصحيحة لتحضير الاستعلام وتنفيذه بشكل آمن لمنع هجمات الحقن الـ SQL. ومع ذلك، يمكن تحسين الكود قليلاً لجعله أكثر وضوحًا وفعالية. إليك النسخة المحسنة: // الاستعلام مع العلامات الاستفهام كعناصر نائبة للقيم $sql = "INSERT INTO feedback (full_name, email, feedback) VALUES (?, ?, ?)"; // تحضير الاستعلام $stmt = mysqli_prepare($conn, $sql); // التحقق من تحضير الاستعلام بشكل صحيح if (!$stmt) { die("Something went wrong: " . mysqli_error($conn)); } // ربط القيم المدخلة بالعناصر النائبة في الاستعلام mysqli_stmt_bind_param($stmt, "sss", $fullname, $email, $feedback); // تنفيذ الاستعلام if (mysqli_stmt_execute($stmt)) { echo "<div class='alert alert-success'>Feedback submitted successfully.</div>"; } else { echo "<div class='alert alert-danger'>Error submitting feedback: " . mysqli_stmt_error($stmt) . "</div>"; } // إغلاق البيان mysqli_stmt_close($stmt); لاحظ أنني استخدمت mysqli_error($conn) لطباعة الخطأ مباشرة إذا فشلت عملية التحضير، وmysqli_stmt_error($stmt) لطباعة الخطأ إذا فشلت عملية التنفيذ هذا يساعدك لتتمكن من تشخيص المشكلات بدقة وفعالية. بالإضافة إلى ذلك، يجب دائما إغلاق البيان بعد الانتهاء منه باستخدام mysqli_stmt_close($stmt) لتضمن أن تطبيقك لا يستهلك موارد أكثر مما يحتاج ويبقى خادمك أو جهازك يعمل بسلاسة وفعالية، مما يساعد على تجنب المشاكل المحتملة المتعلقة بالأداء أو الذاكرة.
  11. يوجد بعض الاخطاء: في ملف الاتصال بقاعدة البيانات، يبدو أن هناك بعض التباس بين استخدام mysqli وPDO. كلاهما طريقتين ممتازتين للتفاعل مع قاعدة البيانات، لكن عليك ان تختار واحده فقط من بينهم؛ اختر إما mysqli أو PDO واستخدمها consistent في جميع أنحاء مشروعك. عند كتابة استعلامات SQL، من المهم جدًا تجنب الحقن لكود خبيث في قاعدة بياناتك. تخيل أنك تكتب رسالة سرية وتريد التأكد من أن الشخص الوحيد الذي يمكنه فهمها هو الشخص المقصود. استخدام العلامات الاستفهام (?) أو الأسماء المستعارة (:placeholder) في استعلاماتك يشبه استخدام رموز سرية تضمن أن الرسالة (البيانات) تصل بأمان وبالطريقة التي تريدها. لحماية قاعدة البيانات من اللصوص الرقميين الذين يحاولون "حقن" كود خبيث لسرقة البيانات أو التسبب في الفوضى، من الضروري استخدام طرق الربط مثل bindParam أو bindValue. هذا يشبه وضع قفل إلكتروني متطور على باب منزلك يتطلب مفاتيح رقمية خاصة للدخول. بهذه الطريقة، تضمن أن تطبيقك يتحدث مع قاعدة البيانات بلغة مشفرة وآمنة، مما يحمي معلوماتك ويجعل تجربة المستخدم أكثر أمانًا واستقرارًا. إذا قررت الاستمرار باستخدام PDO، إليك كيفية تحديث الكود: في feedback.php: // تأكد من أن الاستعلام يستخدم الأسماء المستعارة $sql = "INSERT INTO feedback (full_name, email, feedback) VALUES (:fullname, :email, :feedback)"; $stmt = $conn->prepare($sql); // ربط القيم بالأسماء المستعارة باستخدام bindParam $stmt->bindParam(":fullname", $fullname); $stmt->bindParam(":email", $email); $stmt->bindParam(":feedback", $feedback); try { $stmt->execute(); echo "Feedback submitted successfully!"; } catch(PDOException $e) { echo "Error submitting feedback: " . $e->getMessage(); } وفي database.php، إذا كنت تريد استخدام PDO بدلاً من mysqli: $hostName = "localhost"; $dbUser = "root"; $dbPassword = ""; $dbName = "feedBack"; // استخدام PDO للاتصال بقاعدة البيانات try { $conn = new PDO("mysql:host=$hostName;dbname=$dbName", $dbUser, $dbPassword); // تعيين وضع الخطأ PDO ليكون exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die("Something went wrong: " . $e->getMessage()); } بعد فعل هذه التغييرات، يمكنك ان تجرب مره اخري ان تدخل بيانات وستسجل في قاعده البيانات.
  12. وعليكم السلام ورحمة الله وبركاته، لوصول إلى مستوى الاحتراف كلمه نسبيه قد تختلف من مكان لأخر ومن مجال لأخر ولكن دعنا نبدلها بكلمه مؤهل لسوق العمل, لتصبح مؤهل لسوق العمل في البرمجة يعتمد على عدة عوامل. الأنشطة التي ذكرتها مثل قراءة الكتب ومشاهدة الدورات التدريبية وحل التمارين على مواقع مثل ليت كود ستساعدك كثيرا في فهم شامل للمفاهيم البرمجية والاساسيات وتطوير مهارة حل المشكلات والتفكير الحسابي وفهم الخوارزميات وهياكل البيانات. بناء مشاريع حقيقية أيضًا مهم لتطبيق ما تعلمته وفهم كيفية عمل الأكواد في الواقع. وإن كنت تواجه أي صعوبة، فمواقع مثل تشات جي بي تي قد تساعد بتقديم بعض الحلول والنصائح. لكن لتصبح مؤهل لسوق العمل بالفعل، يجب أن تستمر بالممارسة والتطبيق العملي الكثير، وتحليل أي أخطاء وتعلم منها. العمل أيضا ضمن فريق قد يساعدك على تحسين قدرتك على التعاون والمتابعة مع شخص لديه خبره اكثر منك للأستشاره قد يفيدك كثيرا. والحصول على خبرة عملية سواء من خلال العمل في مشاريع حقيقية أو تدريبات ميدانية فبالرغم من أهمية ما ذكرته إلا أن الخبرة العملية هي الأفضل للوصول لمرحلة الاحتراف. والحصول على شهادات معتمدة في مجال البرمجة لزيادة فرص العمل. ولا تنسى دائما تحديث مهاراتك بمتابعة التطورات الجديدة لان مجال البرمجة يتطور سريعا. باتباع هذه النصائح والمثابرة، ستصبح بالتأكيد مؤهلا لسوق العمل في مجال البرمجة.
  13. Laravel Sanctum يوفر نظام مصادقة بسيط وخفيف الوزن لـ SPA (Single Page Applications)، والخدمات المتنقلة، والتوكنات البسيطة المستندة إلى API. إليك عده خطوات بسيطه لانشاء نظام المصادقة باستخدام Laravel Sanctum: 1. تثبيت Sanctum: composer require laravel/sanctum 2. نشر التكوين في دليل التكوين الخاص (config): php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" 3. تشغيل الترحيلات (Migrations): يجب تشغيل الترحيلات لإنشاء جداول البيانات اللازمة لـ Sanctum. php artisan migrate 4. إضافة Sanctum's Middleware: يجب إضافة Sanctum's middleware إلى مجموعة الـ api middleware في ملف app/Http/Kernel.php: 'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 5. إعداد نموذج المستخدم: يجب أن يستخدم نموذج User الخاص بك trait HasApiTokens من Sanctum. use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; } 6.: تكوين الحماية لحماية الـ routes التي تتطلب مصادقة، استخدم middleware sanctum. في ملف api.php أو web.php (حسب تطبيقك)، قم بإضافة sanctum كـ middleware للـ routes: Route::middleware('auth:sanctum')->get('/user', function (Request $request) { return $request->user(); }); 7. إنشاء الحساب وتسجيل الدخول وتسجيل الخروج: تسجيل الدخول في AuthController (قد تحتاج إلى إنشائه): use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use App\Models\User; use Illuminate\Http\Request; // تسجيل الدخول public function login(Request $request) { $request->validate([ 'email' => 'required|email', 'password' => 'required', ]); $user = User::where('email', $request->email)->first(); if (!$user || !Hash::check($request->password, $user->password)) { return response()->json(['message' => 'Unauthorized'], 401); } $token = $user->createToken('authToken')->plainTextToken; return response()->json(['token' => $token]);} إنشاء حساب: // إنشاء حساب public function register(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), ]); $token = $user->createToken('authToken')->plainTextToken; return response()->json(['token' => $token]); } تسجيل الخروج: public function logout(Request $request) { // إبطال جميع رموز الوصول للمستخدم الحالي $request->user()->tokens()->delete(); return response()->json(['message' => 'تم تسجيل الخروج بنجاح']); } 8. تعريف المسارات: في routes/api.php, قم بإضافة المسارات اللازمة للتسجيل وتسجيل الدخول. Route::post('/register', [AuthController::class, 'register']); Route::post('/login', [AuthController::class, 'login']); Route::middleware('auth:sanctum')->post('/logout', [AuthController::class, 'logout']); تأكد من استيراد AuthController في أعلى ملف api.php. 9. اختبار الـ API: يمكنك الآن اختبار إنشاء الحساب وتسجيل الدخول باستخدام Postman بإرسال طلبات POST إلى /api/register و /api/login و /api/logout مع البيانات المطلوبة. تأكد من مراجعة الوثائق من الموقع الرسمي لتنفيذ كل خطوة https://laravel.com/docs/master/sanctum.
  14. اضافة الكاش فعلا كما ذكرت تعمل على تحسين الاداء جدا، هناك العديد من استراتيجيات الكاش فى لارفل منها: file, array ,database ,Redis and Memcached كلهم متقاربين فى السرعة، لكن اذا اردت استخدام اسرعهم فهو Redis.
  15. نعم، يمكنك تطوير برنامج محاسبة لإدارة المخازن والمبيعات باستخدام لغة البرمجة Python ، Python تُستخدم على نطاق واسع في تطوير البرمجيات بفضل سهولة تعلمها وقوتها كلغة برمجة.
  16. لقد ارسلت لك الكود بالفعل
  17. اذا كنت تقصد تعديل الكود فهذا هو الكود كامل : <!DOCTYPE html> <html lang="ar"> <head> <link rel="icon" href="https://c0.klipartz.com/pngpicture/573/614/gratis-png-ng%C5%A9-hanh-s%C6%A1n-distrito-casa-apartamento-inmobiliaria-volta-redonda-venta-de-logotipos-de-bienes-raices.png" /> <title>موقع العقارات</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@300&display=swap" rel="stylesheet"> <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" media="screen" href="home.css"> </head> <body> <header> <div> <img src="a.png" alt="نظام العقارات من كمال تجريبي"> </div> <center> <div> <button>نقاط البيع&#127979;</button> <button>أدارة المخزون</button> <button>الإراضي&#128176;</button> <button>&#9917;الشيكات</button> <button>الأستاذ العام&#926;</button> <button>إدارة النظام</button> </div> </center> </header> <?php $server = 'DESKTOP-PJDLJNR'; $database = 'Legacy'; $username = ''; $password = ''; $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password); if (!$connection) { die(print_r(sqlsrv_errors(), true)); } $sql_query = 'select * from Problemss;'; $result = $connection->query($sql_query); ?> <table border="1" width="100%"> <tr> <th>&#127979;تم</th> <th>الحلول</th> <th>المشكلة</th> <th>م</th> <th>الرقم</th> </tr> <?php while ($row = $result->fetch(PDO::FETCH_ASSOC)) { ?> <tr> <td><?php echo $row['تم']?></td> <td><?php echo $row['الحلول']?></td> <td><?php echo $row['المشكلة']?></td> <td><?php echo $row['م']?></td> <td><?php echo $row['الرقم']?></td> </tr> <?php } ?> </table> </body> </html>
  18. هذه الدالة لم تعد صالحة للاستخدام mysql_fetch_assoc() يجب عليك استخدام الدالة الموجودة فى المثال هذا: // قم بتنفيذ استعلام $result = $mysqli->query("SELECT * FROM اسم_الجدول"); // جلب البيانات باستخدام مصفوفة ترابطية while ($row = $result->fetch_assoc()) { // قم بمعالجة كل صف من البيانات echo $row['اسم_العمود'] . "<br>"; }
  19. هذا الخطأ يرجع الى بسبب استخدام الدالة القديمة فى محالة جلب البيانات يجب عليك استخدام الدالة الجديدة وهذا مثال كامل يوضح لك الفرق. <?php // قم بإنشاء اتصال بقاعدة البيانات $mysqli = new mysqli("localhost", "اسم_المستخدم", "كلمة_المرور", "اسم_قاعدة_البيانات"); // تحقق من الاتصال if ($mysqli->connect_error) { die("فشل الاتصال: " . $mysqli->connect_error); } // قم بتنفيذ استعلام $result = $mysqli->query("SELECT * FROM اسم_الجدول"); // .جلب البيانات while ($row = $result->fetch_assoc()) { // قم بمعالجة كل صف من البيانات echo $row['اسم_العمود'] . "<br>"; } // أغلق الاتصال $mysqli->close(); ?>
  20. عبارة عن driver (موصل)، المسؤول عن إنشاء الاتصال بين التطبيق لديك والسيرفر الذى توجد عليه قاعدة البيانات الخاصة بك.
  21. انت تحتاج الى تنزيل ODBC على جهازك ، يمكنك تحميله من الموقع الرسمى لشركة microsoft : https://www.microsoft.com/en-us/download/details.aspx?id=36434
  22. هناك فرق كبير بين العامل == والعامل in في بايثون: العامل == يقوم بالمقارنة ويرجع قيمة بوليان True أو False حسب نتيجة المقارنة. مثلا: a == b أما العامل in فهو يفحص إذا كان عنصر أو قيمة موجودة ضمن مجموعة أو متتالية أو قائمة dictionary ويرجع True أو False. a in list ليس للعامل in علاقة بدوال التكرار زي for loop، حيث أنه يقوم بفحص وجود عنصر وليس تكرار عملية. مثلا يمكنك استخدام in داخل شرط if بدلا من for لفحص وجود عنصر: if a in list: print("item exists") لكن لو أردنا فحص وجود عنصر باستخدام for بدلا من in، يمكن كتابة الكود كالتالي: found = False for item in list: if item == a: found = True break if found: print("item exists") إذاً in يستخدم لفحص وجود عنصر في مجموعة، بينما == للمقارنة والمطابقة.
  23. الحاجات دي هتساعدك ترفع الperformance وaccessibility وseo 1- أولًا، لا يجب أن يحتوي الكود الخاص بـ HTML لديك على أخطاء؛ يجب أن يكون صحيحًا بالكامل (Valid). يمكنك زيارة هذا الموقع وإدخال الكود لحل المشكلات https://validator.w3.org/ 2- يجب كتابة البادئات (prefixes) الخاصة بـ CSS لدعم المتصفحات. يمكنك وضع الكود الخاص بك هنا بعد الانتهاء، وهذا الموقع سيقوم بتعديله لك https://autoprefixer.github.io/ 3- سأوضح هنا بعض الجوانب المتعلقة بالصور، مثل جودتها وحجمها، والبديل (alt attribute)، وتقنية التحميل الكسول (Lazy Load)، وتغيير حجم الصور، وتأثيرها على الأداء. يمكنك تحسين جودة صورك باستخدام العديد من المواقع التي توفر صوراً بجودة عالية مجاناً. فيما يتعلق بحجم الصور، إذا كان كبيراً، يجب تقليله دون التأثير على جودتها، وهناك العديد من المواقع التي تقدم خدمة ضغط الصور. بالنسبة لتقنية التحميل الكسول، عند فتح موقع، يُفترض أن جميع الصور تُحمّل دفعة واحدة، وهو ما يؤثر على الأداء بالطبع. هذه التقنية تجعل فقط الصور التي يراها المستخدم تبدأ بالتحميل، وكلما تم التنقل داخل الموقع، تُحمّل الصور واحدة تلو الأخرى. يمكنك استخدام هذه التقنية بإضافة السمة loading="lazy" إلى علامة img. يمكنك أيضاً التأكد من ملاءمة أحجام الصور لمختلف أحجام الشاشات باستخدام استعلامات الوسائط (media queries)، بتغيير حجم الصور عند تصغير الشاشة ووضع صور مناسبة للتابلت والموبايل، أو تثبيت حجم الصورة، لأن تغيير حجم الصور قد يقلل من الأداء. يمكن القيام بذلك باستخدام علامة HTML picture. بالنسبة للبديل (alt attribute)، لا يجب أن تكون فارغة، فهذا خطأ يؤثر على تحسين محركات البحث (SEO) وإمكانية الوصول، ويجب أن تحتوي على كلمات تصف الصورة. 4-من الضروري قبل رفع الموقع أن تقوم بتصغير حجم (minify) كود الـ CSS والـ JS لأن هذا سيخفض حجم ملف الكود إلى النصف تقريبًا، مما سيحسن الأداء بشكل ملحوظ ويقلل من عدد الطلبات الـ HTTP. كل ملف (CSS، JavaScript، صورة) يحتاج إلى طلب HTTP خاص به ليتم تحميله. يُنصح بدمج الملفات معًا قدر الإمكان لتقليل الطلبات. يمكنك القيام بذلك من خلال استخدام بعض المواقع الإلكترونية المتخصصة في هذا المجال. 5-يمكنك استخدم ال light house ستجدها ف dev tools يمكنك فتحها بالضغط علي f12 يمكنك من خلالها ان تقيس الperformance وaccessibility وseo وستعطيك تعليمات لاجل تحسينهم وستظهر من خلالها المشاكل التي لديك ويمكنك حلها 6- تاج meta description هذا يوضع في الhead وهذا سيفرق في الSeo لدرجه كبيره جدا بمقارنه انه بسيط جدا. 7-يمكنك استخدم Bundlers ستفيدك في المشاريع الكبيره وستسهل عليك الكثير من الاشياء مثل Webpack او gulp او غيره. 8- استخدام الكاش (Cache) تخزين الكاش يساعد في تسريع التحميل للزوار العائدين لموقعك. يتم تخزين بعض البيانات مؤقتًا لتجنب إعادة تحميلها في كل مرة. 9. استخدام شبكة توصيل المحتوى (CDN) هي شبكات توزع المحتوى من موقعك على خوادم حول العالم، مما يقرب المحتوى من المستخدم ويسرع التحميل. 10. تقليل استخدام الإضافات (Plugins) كلما زادت الإضافات، زاد الوقت اللازم لتحميل الصفحة. استخدم فقط الإضافات الضرورية. بتطبيق هذه النصائح، يمكن تحسين أداء موقع الويب بشكل كبير، مما يؤدي إلى تجربة مستخدم أفضل وتحميل أسرع للصفحات.
  24. يمكنك استخدام الدالة window.onload أو استخدام الحدث DOMContentLoaded الذي ينتظر تحميل DOM الصفحة بالكامل قبل تنفيذ الكود. إليك مثال بسيط على كيفية استخدام window.onload: window.onload = function() { // كود JavaScript الذي تريد تنفيذه عند تحميل الصفحة console.log('تم تحميل الصفحة بنجاح!'); // يمكنك استدعاء أي دالة هنا myFunction(); }; function myFunction() { // منطق الدالة الذي تريد تنفيذه console.log('تم تنفيذ دالة myFunction.'); } وهذا مثال آخر باستخدام DOMContentLoaded: document.addEventListener('DOMContentLoaded', function() { // كود JavaScript الذي تريد تنفيذه عندما يكون DOM جاهزًا console.log('DOM جاهز الآن للتفاعل معه!'); // يمكنك استدعاء أي دالة هنا myFunction(); }); function myFunction() { // منطق الدالة الذي تريد تنفيذه console.log('تم تنفيذ دالة myFunction.'); } الفرق بين الاثنين هو أن window.onload ينتظر تحميل كل شيء بما في ذلك الصور وأوراق الأنماط، بينما DOMContentLoaded ينتظر فقط تحميل HTML وبناء DOM. يمكنك اختيار الطريقة التي تناسبك أكثر حسب ما تريد أن تفعله الدالة عند تحميل الصفحة.
×
×
  • أضف...