لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 02/12/21 في كل الموقع
-
3 نقاط
-
السلام عليكم ورحمه الله وبركاته - لو سمحتوا انا عندي موقع علي بلوجر، فيه جزء من القالب المقاس بتاعه كبير (العرض تحديدا)، وبيعمل مشاكل في العرض علي الموبايل، المشكلة اني لما بغير مقاس العرض من اكواد ال css، التغيير مش بيتطبق، يعني في اكواد القالب بيكون المقاس اللي انا عملته ولما اعمل فحص علي المتصفح الاقي المقاس زي مهوا متغيرش !!! - ياريت لو حد من حضراتكم يقدر يفيدني في المشكلة دي، انا معنديش الخبرة الكافية في الاكواد ودورت كتير علي حلول وملقتش. - ده الكود اللي بحاول اغيره: (400px) .episodesList [ style="width:400px; margin:0 auto 10px auto; color:#FFFFFF; box-shadow:0 0 10px #3b5998;border-radius:0 0 5px 5px; background:#3b5998;padding:10px;font-size:22px; text-align:center;" ]{ background:#2a264e!important; font-weight:700; border:0!important; box-shadow:0 0 0!important; border-radius:5px!important }2 نقاط
-
اقوم بتعلم تطوير التطبيقات بواسطة flutter منذ شهر، حيث أقوم بتنفيذ تطبيقات تدريبية لممارسة ما أتعلمه. أحاول جلب 500 تعليق كـJSON من الرابط التالي: https://jsonplaceholder.typicode.com/comments ومن ثم عرضها في ListView. لاحظت بطئ وعدم إستجابة مؤقتة في عناصر واجهة المستخدم للتطبيق عند جلب عدد كبير من البيانات من الانترنت بواسطة الاضافة http حيث أن ProgressIndicator تتوقف عن الدوران وتصبح بطيئة. هذا هو الكود : import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData( primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Hello'), ), body:FutureBuilder( future: getData(), builder: (context,AsyncSnapshot<List> snapshot){ if(snapshot.hasData){ return ListView.builder( itemCount: snapshot.data.length, itemBuilder: (context,i){ return ListTile(title: Text('comment:${snapshot.data[i]['email']}')); }); } else{ return Center(child: CircularProgressIndicator()); } } ), ); } Future<List> getData() async{ var response = await http.get('https://jsonplaceholder.typicode.com/comments'); return jsonDecode(response.body); } } شكرا لكم.2 نقاط
-
البطئ وعدم الإستجابة ناتج عن معالجة 500 تعليق وبالتالي إجهاد الـmain thread الخاصة بالتطبيق ومنعه من الإستجابة والتفاعل مع المستخدم خلال معالجته للتعليقات، بدلا من ذلك يجب تنفيذ العمليات التي تستغرق وقتاً في المعالجة في Thread أُخرى معزولة كلياً لكي لا تؤثر على عناصر الواجهة الخاصة بالتطبيق. توفر لغة دارت الدالة compute التي تمكنك من تنفيذ دالة ما بمعزل عن الـ main thread الرئيسية ومن ثم إرجاع قيمة. إليك الشكل العام للدالة compute مع التوضيح: var data = compute(function, argument);// تأخذ معاملان وهما إسم الدالة التي تريد تنفيذها //و المعامل الذي نريد إضافته للدالة //نحفظ البيانات التي ترجعها الدالة //compute //في المتغير //data static myFunc(String response){ // يجب ان تكون الدالة static //هنا نقوم بتنفيذ العمليات التي تستغرق وقتاً طويلاً بحيث لا تؤثر على اداء التطبيق } إليك الكود بعد تعديله وإضافة تحويل البيانات في thread أخرى معزولة عن الـmain thread : import 'dart:convert'; import 'dart:io'; import 'dart:isolate'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData( primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Hello'), ), body:FutureBuilder( future: getData(), builder: (context,AsyncSnapshot<List> snapshot){ print('try'); if(snapshot.hasData){ return ListView.builder( itemCount: snapshot.data.length, itemBuilder: (context,i){ return ListTile(title: Text('comment:${snapshot.data[i]['body']}')); }); } else{ return Center(child: CircularProgressIndicator()); } } ), ); } Future<List> getData() async{ var response = await http.get('https://jsonplaceholder.typicode.com/comments'); // جلب البيانات //List mapList = jsonDecode(response.body); return compute(responseToJson,response.body); // نقوم بتحويل البيانات في الخلفية وليس في //thread الرئيسية //الخاصة بالتطبيق } static List responseToJson(String body){ // يجب أن تكون الدالة الذي تنفذها // compute //من نوع //static // او global return jsonDecode(body); } }2 نقاط
-
بما أن التأثير ظهر عند حذف خاصية الـmargin فإن المشكلة ليست متعلقة بالـcache أو تأخر ظهور التعديلات بل إن هناك ملفات أو خواص أخرى تقوم بتعديل طول العنصر لـ 400px حيث يصعب التنبؤ بالمسبب بدون الإطلاع على كامل الملفات. يرجى إرفاق رابط الصفحة.2 نقاط
-
الملحِّن أو composer (كومبوزر) هو مدير حزم/اعتماديات PHP، يمكن استخدامه لتثبيت وتتبع وتحديث اعتماديات مشروعك، ويهتم أيضًا بالتحميل التلقائي للاعتماديات التي يعتمد عليها تطبيقك مما يجعلك تستخدم الاعتمادية بسهولة داخل مشروعك دون القلق بشأن تضمينها في بداية كل ملف. يعدّ المُلحِّن composer أشهر مدير اعتمادية، وهو يماثل npm في Node وpip في Python وNuGet في .NET. توجد اعتماديات مشروعك ضمن ملف composer.json الموجود عادةً في جذر المشروع، ويحمل هذا الملف معلومات الإصدارات المطلوبة للحزم في مرحلتي تطوير المشروع وإنتاجه، يمكن تعديل هذا الملف بشكلٍ يدوي باستخدام أي محرر نصوص أو تلقائيًا باستخدام أوامر سطر الأوامر مثل composer require <package> أو composer require-dev <package>. تحتاج لبدء استخدام المُحلِّن في مشروعك إلى إنشاء ملف composer.json، يمكنك إنشاؤه يدويًا أو بتنفيذ الأمر composer init وبعد تنفيذ هذا الأمر في الطرفية ستسألك عن بعض المعلومات الأساسية لمشروعك: اسم الحزمة (vendor/package مثل laravel/laravel) - الوصف وهو اختياري - الكاتب وبعض المعلومات الأخرى مثل حد الاستقرار الأدنى والرخصة والحزم المطلوبة. يصف المفتاح require في ملف composer.json الحزم التي يعتمد عليها مشروعك، ويأخذ كائنًا يربط اسم الحزمة (مثل monolog/monolog) بقيود الإصدار (مثل 1.0.*). { "require": { "composer/composer": "1.2.*" } } تحتاج لتثبيت الاعتماديات المعرّفة إلى تنفيذ الأمر composer install ثم يجد composer الحزم المعرّفة المطابقة لقيد version الموجود ويحمّلها في مجلد vendor، هذا اصطلاح لوضع شيفرة من طرف ثالث في مجلد اسمه vendor. ستلاحظ أنّ الأمر install يُنشئ الملف composer.lock تلقائيًا، يستخدم هذا الملف لتتبع الإصدارات المنصَّبة حاليًا وحالة اعتمادياتك، وسيثبّت تنفيذ الأمر composer install الحزم إلى الحالة المخزّنة في ملف القفل. المعامل تفاصيل license يعرّف نوع الرخصة التي تريد استخدامها في المشروع authors يعرّف كاتبي المشروع وتفاصيل عنهم support يعرّف البريد الإلكتروني للدعم وقناة الدردشة على الإنترنت والروابط المختلفة require يعرّف الاعتماديات الفعلية بالإضافة إلى إصدارات الحزمة require-dev يعرّف الحزم الضرورية لتطوير المشروع suggest يعرّف اقتراحات الحزمة، مثال الحزم التي تساعد في التثبيت autoload يعرّف سياسات التحميل التلقائي للمشروع autoload-dev يعرّف سياسات التحميل التلقائي لتطوير المشروع table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } التحميل التلقائي مع المحلن بينما يوفر المُلحِّن نظامًا لإدارة اعتماديات مشروعك من Packagist مثلًا، يمكن أن يعمل أيضًا كمحمّل تلقائي يصف أين يبحث عن فضاء أسماء محددة أو يضمّن ملفات الدوال العامة. يبدأ مع ملف composer.json: { // ... "autoload": { "psr-4": { "MyVendorName\\MyProject": "src/" }, "files": [ "src/functions.php" ] }, "autoload-dev": { "psr-4": { "MyVendorName\\MyProject\\Tests": "tests/" } } } تضمن شيفرة الإعداد هذه أنّ كل الأصناف في فضاء الاسم MyVendorName\MyProject رُبطت إلى مجلد src وكل الأصناف في MyVendorName\MyProject\Tests رُبطت إلى مجلد tests (نسبةً إلى المجلد الجذر) وسيضمّن تلقائيًا ملف functions.php. بعد إضافة هذا الإعداد إلى ملف composer.json ننفذ الأمر composer update في الطرفية ليحدّث المُحلِّن الاعتماديّات وملف القفل ويولّد ملف autoload.php، ستستخدم عند النشر إلى بيئة الإنتاج الأمر install --no-dev، ويمكن إيجاد ملف autoload.php في مجلد vendor الذي يجب أن يتولّد في نفس المجلد الموجود به composer.json، ويجب تضمينه مبكرًا عند نقطة إعداد في دورة حياة تطبيقك باستخدام سطر مشابه للتالي: require_once __DIR__ . '/vendor/autoload.php'; بعد التضمين سيهتم ملف autoload.php بتحميل كل الاعتماديّات المذكورة في ملف composer.json. بعض أمثلة ربط مسار الصنف بالمجلد: MyVendorName\MyProject\Shapes\Square ➔ src/Shapes/Square.php. MyVendorName\MyProject\Tests\Shapes\Square ➔ tests/Shapes/Square.php. الفرق بين 'composer install' و'composer update' composer update يحدّث هذا الأمر الاعتماديات المحددة في ملف composer.json، فإذا كان المشروع يستخدم هذا الإعداد مثلًا: "require": { "laravelcollective/html": "2.0.*" } بفرض كان الإصدار 2.0.1 لهذه الحزمة مثبتًا، سيؤدي تنفيذ الأمر composer update إلى ترقية هذه الحزمة (إلى 2.0.2 مثلًا إذا كانت قد أُصدرت)، أي أنّ هذا الأمر سوف: يقرأ ملف composer.json يزيل الحزم المثبتة التي لم تعد مطلوبة في composer.json يتحقق من توافرية الإصدارات الأخيرة من الحزم المطلوبة يوفر الإصدارات الأخيرة من الحزم يحدّث ملف composer.lock لتخزين إصدار الحزم المثبتة composer install سيثبت الأمر composer install كل الاعتماديات المحددة في ملف composer.lock وفقًا للنسخة المحددة دون تحديث أي شيء، أي أنّ هذا الأمر: يقرأ ملف composer.lock ينصّب الحزم المحددة في ملف composer.lock متى تثبِّت ومتى نحدِّث؟ نستخدم composer update غالبًا في مرحلة التطوير لتحديث حزم المشروع ونستخدم composer install بشكلٍ أساسي في مرحلة النشر لتثبيت التطبيق على خادم الإنتاج أو على بيئة الاختبار باستخدام نفس الاعتماديات المخزنة في ملف composer.lock المُنشأ من قِبل composer update. أوامر المحلن composer المتاحة الأمر الاستخدام about معلومات قليلة حول المُحلِّن archive ينشئ أرشيفًا من حزم المُحلِّن browse يفتح رابط مستودع الحزمة أو الصفحة الرئيسية في المتصفح clear-cache يمسح ذاكرة التخزين المؤقت الداخلية للمُلحِّن clear-cache يمسح ذاكرة التخزين المؤقت الداخلية للمُلحِّن config يضبط خيارات الإعداد create-project ينشئ مشروعًا جديدًا من حزمة في المجلد المحدد depends يعرض الحزم التي تتسبب في تثبيت الحزمة الحالية diagnose يشخّص النظام لتحديد الأخطاء المعروفة dump-autoload يفرّغ المحمّل التلقائي dumpautoload يفرّغ المحمّل التلقائي exec ينفّذ سكربت/ثنائي مقدم global ($COMPOSER_HOME) يسمح بتنفيذ الأوامر في مجلد المُلحِّن العام help يعرض المساعدة لأمر ما home يفتح رابط مستودع الحزمة أو الصفحة الرئيسية في المتصفح info يعرض معلومات الحزم init أساسي في المجلد الحالي composer.json ينشئ ملف install composer.json إذا وجد أو يعود إلى composer.lock ينصّب اعتماديات المشروع من licenses يعرض معلومات رِخص الاعتماديات list يعرض الأوامر في قائمة outdated يعرض قائمة بالحزم المنصّبة والتي تتوفر تحديثات لها مع إصدارها الأخيرة prohibits يعرض الحزم التي تمنع تثبيت الحزمة الحالية remove require-dev أو requireيزيل حزمة من require وينصّبها composer.json يضيف الحزم المطلوبة إلى run-script composer.json ينفّذ السكربتات المعرفة في search يبحث عن الحزم self-update إلى الإصدار الأخير composer.phar يحدّث selfupdate إلى الإصدار الأخير composer.phar يحدّث show يعرض معلومات حول الحزم status يعرض قائمة بالحزم المعدّلة محليًا suggests يعرض اقتراحات الحزم update composer.lock ويحدّث composer.jsonيحدّث الاعتماديات إلى آخر إصدار وفقًا لملف validate composer.lockو composer.json يتحقق من صحة why يعرض الحزم التي تتسبب في تثبيت الحزمة الحالية why-not يعرض الحزم التي تمنع تثبيت الحزمة الحالية فوائد استخدام الملحن composer يتتبع المُحلِّن إصدارات الحزم المنصّبة في ملف يسمّى composer.lock والذي يهدف إلى التحكم في الإصدار، لذا عندما يُنسخ مشروعك مستقبلًا فإنّ تنفيذ الأمر composer install سينصّب ويحمّل كل اعتماديات المشاركة. يتعامل المُلحِّن composer مع اعتماديات PHP على أساس المشروع، مما يجعل من السهل وجود عدة مشاريع على جهاز واحد يعتمد على إصدارات منفصلة لحزمة PHP واحدة. يتتبع المُحلِّن الاعتماديات المخصصة لبيئات التطوير فقط. composer require --dev phpunit/phpunit يوفر المُحلِّن محمّلًا تلقائيًا مما يجعل من السهل أن تبدأ بالعمل مع أي حزمة، مثلًا بعد تثبيت Goutte باستخدام الأمر composer require fabpot/goutte, يمكنك البدء مباشرةً باستخدام Goutte في مشروع جديد: <?php require __DIR__ . '/vendor/autoload.php'; $client = new Goutte\Client(); // Goutte البدء باستخدام يسمح لك المُحلِّن بتحديث مشروعك بسهولة إلى الإصدار الأخير الذي يسمح به composer.json مثل composer update fabpot/goutte أو بتحديث كل من اعتماديات مشروعك: composer update. التثبيت قد تثبّت المُحلِّن محليًا كجزء من مشروعك أو عامًا كنظام عريض قابل للتنفيذ. محليًا عن طريق تنفيذ هذه الأوامر في الطرفية: php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');" للتأكد من صلاحية المنصِّب المحمّل افحصه عبر هذا الرابط ضد SHA-384. ستؤدي الشيفرة السابقة إلى تحميل composer.phar (ملف أرشيف PHP) إلى المجلد الحالي، ويمكنك الآن تنفيذ الأمر php composer.phar لاستخدام المُلحِّن، مثال: php composer.phar install عامًّا ضع ملف composer.phar في مجلد يكون جزء من مسارك لاستخدام المُلحِّن بشكلٍ عام. mv composer.phar /usr/local/bin/composer يمكنك الآن استخدام المُلحِّن في أي مكان بدلًا من php composer.phar مثال: composer install ترجمة -وبتصرف- للفصل [Composer Dependency Manager] من كتاب PHP Notes for Professionals book اقرأ أيضًا المقال التالي: التوابع السحرية (Magic Methods) في PHP المقال السابق: مفهوم السمات (Traits) في PHP1 نقطة
-
السلام عليكم تلاوة قديمة جداً للقرآن واريد تحسين جودة الصوت وازالة التشويش منها .. ما هي الطريقة الافضل لذلك وأي البرامج المتخصصة يمكن استعمالها ؟1 نقطة
-
العفو أخي الكريم، طريقتك في حل المشكلة سليمة 100% لكن أريد أن أوضح أن الكود ليس مشفر بل إنه مشوش/مموه أي تم عمل obfuscate له بقصد تصعيب التعديل من قبل أي أحد آخر. هناك الكثير من المواقع التي ستساعدك في فك أو تقليل التشويش، قم بكتابة " javascript unpacker " في محرك البحث ثم قم بتجربة إحدى هذه المواقع. ماذا لو حذفت الملف بالكامل ؟ ما الأمور التي يؤثر عليها ؟1 نقطة
-
اولا شكرا جدا علي اهتمام حضرتك ♥️ عندما تقوم بعمل inspect والتعديل علي شكل هذا الجزء. فإنه يستجيب لهذا التعديل كما أشرت في الصور، لكن عندما أقوم بتغيير هذا الجزء من الاكواد وحفظ التغيير ، اقوم بعمل inspect مرة أخرى اجد ان العرض كما هو لم يتغير !! الكود الذي ارفقته هو الجزء الوحيد من القالب الذي عندما حذفته اختفي الجزء الذي أود تعديله هل يمكنني ان اضيفك في القالب لتري الاكواد بنفسك؟! اذا وافقت ارسل لي جيميل كي اضيفك في المدونه بعتذر فعلا عن كم الرسائل، ولكن قمت بالبحث كثيرا ولم اجد اي حل،1 نقطة
-
1 نقطة
-
قمت بحذف الكود. بأكمله من اكواد ال css، ولكن لم يحدث له اي تغيير،غالبا المشكله في الكود المشفر1 نقطة
-
حاولت التجربه علي اجزاء مختلفة من القالب واكتشفت انه يوجد كود آخر يؤثر علي هذا الجزء، ولكن لم استطع التعديل عليه لان مبرمج القالب وضعه بشكل مشفر، ولم استطع فك تشفير. هذه الاكواد هذا رابط مدونه تجريبيه ركبت عليها نفس القالب، يمكنك رؤية هذا (المشكلة في عرض نسخة المحمول جزء المسلسلات تحديدا)، الجزء الذي يحمل تسمية "حلقات المسلسل" https://bit.ly/3p9znby وهذا الملف به الكود المشفر اتمني لو حضرتك تقدر تساعدني في حل المشكلة دي، لاني دورت كتير جدا ومش لاقي اي حل للأسف code 1.txt قمت بالتجربه علي اكثر من جزء من القالب واكتشفت ان هناك كود اخر يؤثر علي هذا الجزء، لكن مبرمج القالب وضع هذا الكود بشكل مشفر، ولم استطع فك هذا التشفير هذا رابط لمدونه تجريبيه قمت بتركيب نفس القالب عليها، الجزء الذي به مشكله اسفل كل حلقة من المسلسل بعنوان "حلقات المسلسل" https://bit.ly/3p9znby وهذا الملف المرفق يحتوي علي الكود المشفر. اتمني لو حضرتك تقدر تساعدني في المشكلة دي، code 1.txt1 نقطة
-
لتجنب عدم الاستجابة عند الاتصال بأي api في تطبيق flutter يجب استخدام دالة compute وهذه الدالة تقوم بتشغيل الوظائف المجهدة في الخلفية بحيث لا تؤثر على التطبيق. أيضا من النصائح المتبعة ايضا هي اضافة البيانات المرجعة من api في كلاس Model بحيث تستطيع جلب البيانات وتخزينها في هذا الكلاس Model بحيث تقلل عملية الاستجابة ووقت التنفيذ. الشكل العام لهذه الدالة هو var getData = await compute(function, parameter); بحيث function هي المستقبل أو الوظيفة التي نمررها إلى الدالة. parameter هي البيانات التي تمرر الى function. يمكنك مراجعة دالة compute من هنا ولقد عدلت على الكود الخاص بك واصبح سربعا في الاستجابة import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData( primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, ), home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Hello'), ), body: FutureBuilder<List<Welcome>>( future: getData(), builder: (context, AsyncSnapshot<List> snapshot) { switch (snapshot.connectionState) { case ConnectionState.none: return Center( child: Text('No Connection'), ); break; case ConnectionState.waiting: case ConnectionState.active: return Center( child: CircularProgressIndicator(), ); break; case ConnectionState.done: if (snapshot.hasError) print(snapshot.error); return snapshot.hasData ? WelcomeList(welcome: snapshot.data) : Center( child: CircularProgressIndicator(), ); break; } return Container(); }, ), ); } Future<List<Welcome>> getData() async { var response = await http.get('https://jsonplaceholder.typicode.com/comments'); return compute(welcomeFromJson, response.body); } } // To parse this JSON data, do // // final welcome = welcomeFromJson(jsonString); List<Welcome> welcomeFromJson(String str) => List<Welcome>.from(json.decode(str).map((x) => Welcome.fromJson(x))); String welcomeToJson(List<Welcome> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson()))); class Welcome { Welcome({ this.postId, this.id, this.name, this.email, this.body, }); int postId; int id; String name; String email; String body; factory Welcome.fromJson(Map<String, dynamic> json) => Welcome( postId: json["postId"], id: json["id"], name: json["name"], email: json["email"], body: json["body"], ); Map<String, dynamic> toJson() => { "postId": postId, "id": id, "name": name, "email": email, "body": body, }; } class WelcomeList extends StatelessWidget { final List<Welcome> welcome; WelcomeList({Key key, this.welcome}) : super(key: key); @override Widget build(BuildContext context) { return ListView.builder( itemCount: welcome.length, itemBuilder: (context, i) { return ListTile( title: Text('comment:${welcome[i].name}'), ); }, ); } } وهذه صورة من النتيجة1 نقطة
-
1 نقطة
-
هل يمكنك أن توقف عمل الجافاسكريبت في المتصفح ختى تتأكد من أنها ليست المشكلة؟1 نقطة
-
في حال كنت تقوم بإضافة تغييرات أخرى على هذا العنصر وتظهر، وفقط عند تغيير العرض لا يتأثر، فإن ذلك يعود حتماً لوجود خاصية أخرى تتحكم بالعرض. لأنه بالكود الذي أرفقته لا يوجد خصائص تتحكم بالعرض سوى width، كما وأنه يمكنك التجريب بتغيير قيم الهوامش الموجودة: margin:0 auto 10px auto والتي تقوم هنا بإضافة هامش على اليمين واليسار بشكل تلقائي auto، ربما يمكنك التجربة بوضعها 0px. ولكن لا يوجد مشكلة بباقي التنسيقات الموجودة ضمن هذا الجزء. لذلك أقترح عليك كما ذكرت سابقاً مراقبة الحاوية لهذا العنصر أو باقي عناصر الصفحة في حال كانت تؤثر على عرض العناصر التي بداخلها وأيضاً يجب الأخذ بعين الاعتبار أن خاصيات التموضع position و flex والكثير من أساسيات البنية قد يسبب هذا الأمر1 نقطة
-
لاحظ في آخر سطر هناك الخاصية width التي تحمل القيمة 100% التي ستجعل هذا الجزء يأخذ كامل العرض لدى الأب، لحل المشكلة يجب حذف هذا السطر " width:100%!important ". وإبقاء خاصية الـ width الأولى مضافاً عليها Important! كالتالي: .episodesList [style="width:400px!important;margin:0 auto 10px auto;color:#FFFFFF;box-shadow:0 0 10px #3b5998;border-radius:0 0 5px 5px;background:#3b5998;padding:10px;font-size:22px;text-align:center;"]{background:#2a264e!important;font-weight:700;border:0!important;box-shadow:0 0 0!important;border-radius:5px!important} إضافة !important لأي خاصية ستجعل أولوية التنفيذ لها.1 نقطة
-
مشكلة مثل هذه قد يتسبب بها عدد من الأمور: قد تكون هذه مشكلة في ملفات cache الخاصة بالمتصفح، لذلك حاول أن تجرب الموقع في متصفح مختلف تماماً أو قم بحذف الملفات المؤقتة وملفات الارتباط cookies من المتصفح. وقد تكون المشكلة تنبع من كود جافا سكريبت يقوم بتغير عرض العنصر، فقم بإيقاف الجافا سكريبت من المتصفح وجرب مرة ثانية. بما أن قوالب بلوجر تكون بالكامل في ملف واحد، فربما تقوم بتغير العرض لعنصر مختلف تماماً، وليس العنصر الذي تقصده، لذلك تأكد من أنك تقوم بتعديل العنصر الصحيح.1 نقطة
-
من الصعب تحديد الخطأ بجزء صغير من الكود، حيث يمكن أن تكون المشكلة بعنصر آخر موجود ضمن الصفحة ويسبب تلك المشكلة في العرض، ولكن بملاحظة الكود الذي أرفقته ألاحظ أنه يوجد قيمتين مختلفتين للعرض: width:400px; ثم width: 100% !important وبسبب وجود الخاصية !important سيتم تطبيق العرض 100% أي (كامل عرض العنصر) بدلاً من 400px. لا أعلم إذا كانت ستحل المشكلة، ولكن باعتبار المشكلة ضمن هذا الجزء من الكود يمكنك فقط إزالة هذا التكرار واعتماد عرض واحد ثم عليك بالتجريب لرؤية إذا كانت ستحل المشكلة. وبما أنك تقوم بالفحص على المتصفح Inspect، يمكنك التأكد بتحديد العنصر الذي يسبب المشكلة (أي العنصر ذو العرض الكبير) ورؤية التنسيقات التي يتم تطبيقها عليه في حال كان مطبّق عليه أي خاصية تسبب هذه المشكلة في العرض.1 نقطة
-
يمكنك تحسين جودة الصوت الصوت في أغلب الملفات الصوتية من خلال إستخدام برامج مثل audacity و adobe audition فهذه البرامج مختصة في تعديل وتنقية وإصلاح ملفات الصوت بعشرات الطرق. لاحظ أن هذه البرامج تحتاج خبرة ومعرفة مسبقة لتستطيع التعامل معها، وسيكون من الأسهل والأسرع تعيين مختص في إزالة التشويش وتعديل ملفات الصوت من على أي منصة للعمل الحر مثل مستقل. لاحظ أيضًا أن هناك بعض الملفات لا يمكن تحسين جودة الصوت الخاص بها بدرجة عالية نظرًا لبنية الملف الداخلية (الأمر يختلف من صيغة لأخرى). يمكن أيضًا أضافة تأثيرات معينة على الصوت مثل صدى صوت بسيط أو تفخيم الصوت وغيرها من محسنات الصوت.1 نقطة
-
1 نقطة
-
يتأثر أداء قاعدة البيانات العادية التي تكون على الحواسيب الشخصية مع عدد سجلات يقارب المليون سجل. إن حجم قاعدة البينانات نفسها لايؤثر لوجود خوارزميات بحث سريعة نوعا ما في MySQL، تأكد عند حجز الإضافة من أن يكون القرص الصلب من نوع سريع مثل SSD وأن يكون الرام كبير أيضا وهذا يتم حسابه بالاعتماد على عدد الزبائن ومعدل الطلبيات. كيف تحسن من أداء قاعدة البيانات: يجب أن يكون تصميم الجداول أمثلي قدر الإمكان (شخص له خبرة كافيه لعمل بنية الجداول و العلاقات بينهم و أنواع البيانات المختارة لكل حقل وتقليل عدد الحقول قدر الإمكان) العمل على تحسين علاقات الربط join الفهرسة بالاعتماد على ‘where’, ‘order by’, and ‘group by’ استخدام Full-Text Searches عند البحث في الحقول النصية ضبط حجم الذاكرة المؤقتة وإعدادتها بشكل أمثل حسب قدرات المخدم وطبيعة الاستعلامات MySQL Query Caching1 نقطة
-
لا يوجد قيمة نهائية عظمى ثابتة لعدد السجلات في الجدول، فذلك يعتمد على حجم البيانات المخزنة ضمن كل سجل وفي الجدول بشكل عام، ولكن بشكل تقريبي وباعتبار الحد الأقصى لحجم الجدول هو 64 تيرابايت، وبما أن الحد الأعظمى لسعة السجل الواحد الافتراضية هي 65,535 فبشكل تقريبي يكون عدد السجلات الأعظمى حوالي 1073.741.824 سجلاً. ومع ذلك ، يمكن إضافة المزيد من السجلات إذا كان حجم السجل الواحد أصغر. لا يتم النظر عادةً إلى العدد الأقصى للسجلات في الجدول أو العدد الأقصى لعدد الجداول في القاعدة، فإن MySql مصمم للتعامل مع بيانات بأعداد هائلة كما وأنه قابل للتوسع والنشر على عدة مخدّمات في حال تطلب الأمر ذلك. ويجب أيضاً لفت الانتباه إلى الاطلاع على قدرات مخدّم الويب الذي يحوي قاعدة البيانات، لأن سعته التخزينية ومواصفاته أيضاً ستكون عامل رئيسي في التخزين.1 نقطة
-
مرحبا يحتوي التمثيل الداخلي لجدول MySQL على حد أقصى لحجم الصف يبلغ 65.535 بايت ، حتى لو كان محرك التخزين قادرًا على دعم صفوف أكبر.1 نقطة
-
لإرسال بريد الكتروني في لارافيل نقوم بالخطوات التالية: أولاً: نقوم بوضع معلومات البريد الالكتروني الصحيحة ضمن ملف .env وهي (عنوان البريد الالكتروني، كلمة المرور، رقم المنفذ ،وبقية التفاصيل التي تختلف بحسب نوع البريد الالكتروني مثل gmail أو غيره) كالتالي: MAIL_DRIVER = smtp MAIL_HOST = smtp.gmail.com MAIL_PORT = 587 MAIL_USERNAME = your-gmail-username عنوان البريد الالكتروني الذي سيقوم بإرسال الرسائل MAIL_PASSWORD = your-application-specific-password كلمة المرور MAIL_ENCRYPTION = tls ثم نقوم بإنشاء متحكم controller ونسميه MailController لإدارة إرسال الرسائل كالتالي: php artisan make:controller MailController وهو بدوره بقوم بالتالي: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Mail; use App\Http\Requests; use App\Http\Controllers\Controller; class MailController extends Controller { //التابع الذي سيقوم بإرسال الرسالة public function basic_email() { //نعرف هنا اسم المرسل $data = array('name'=>"firstname lastname"); Mail::send(['text'=>'mail'], $data, function($message) { $message->to('abc@gmail.com'')->subject ('Laravel Basic Testing Mail'); //عنوان الرسالة $message->from('xyz@email.com','Sender Name'); // عنوان واسم المرسل }); //طباعة رسالة تأكيد echo "Basic Email Sent. Check your inbox."; } } يوجد أيضاً العديد من الأمثلة الممتعة في حالات مختلفة مثل إرسال بريد الكتروني وتنسيقه بهيئة HTML وإضافة مستندات مع الرسالة والعديد من الخصائص الأخرى التي يمكنك الاطلاع عليها من التوثيق الرسمي في موقع لارافيل1 نقطة