لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/30/21 في كل الموقع
-
يمكنك مشاركة المشروع مع الأجهزة الأخرى بداخل الشبكة من خلال تشغيل الخادم وتعيين المُضيف 0.0.0.0 حتى يصبح الجهاز (خادم) ويتيح الوصول من خلال الأجهزة الأخرى فنقوم بتنفيذ الأمر الخاص بتشغل الخادم في Laravel: php artisan serve --host 0.0.0.0 بهذه الطريقة يمكننا الوصول إلى البرنامج من خلال الرابط (عنوان IP الخاص بالجهاز المشغل للبرنامج): http://192.168.1.101:8000 حيث أن المنفذ 8000 هو الافتراضي عند تشغيل الخادم في Laravel, ولتغييره للوصول إلى البرنامج بشكل مباشر نقوم بتغيير المنفذ إلى 80 وهو الإفتراضي في بروتوكول HTTP عن طريق تمرير قيمة المنفذ في أمر التشغيل: php artisan serve --host 0.0.0.0 --port 80 ليصبح الرابط للوصول إلى البرنامج عن طريق عنوان IP الخاص المضيف داخل الشبكة مباشرة http://192.168.1.1011 نقطة
-
مشروع Laravel الخاص بك لا يتحوي على مفتاح تشفير key لذلك يظهر هذا الخطأ, ولإنشاء مفتاح تشفير ننفذ الأمر التالي: php artisan key:generate حيث يقوم بإنشاء مفتاح خاص بالبرنامج تلقائيًا1 نقطة
-
من خلال ملف php.ini ( حيث يمكنك الوصول إليه من خلال خيار البحث في شريط المهام ) نقوم بالبحث في الملف عن خيار max_execution_time المسؤول عن المدة الزمنية المحددة لتنفيذ البرنامج, فنقوم بتغيير القيمة إلى الزمن المطلوب بالثواني (150 ثانية), هكذا: ;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; max_execution_time = 150 ^^^ ثم نقوم بحفظ التغييرات وإعادة تشغيل الخادم appache من خلال الأمر: service apache2 restart1 نقطة
-
تدعم Laravel إنشاء استثناءات لـ CSRF Token عن طريق الملف App\Http\Middleware\VerifyCsrfToken فنقوم بإضافة المسارات التي نرغب باستثنائها بشكل مصفوفة بداخل المتغير protected $except = [] //array. فمثلًا لو أردنا إضافة استثناء للمسار 127.0.0.1/demo يكون الاستثناء بهذا الشكل protected $except = [ '/demo', ]1 نقطة
-
يمكنك إعداد هذا الخيار في ملف migration الخاص بتهجير البيانات الفرعية عن طريق القيد ->onDelete('cascade') فنقوم بإضافة القيد على حقل foreign_key المرتبط بالنموذج الأساسي ... $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade'); ... وهذا يعني حذف السجل الفرعي عند حذف السجل الرئيسي المرتبط به تلقائيًا1 نقطة
-
أولاً يجب إنشاء mock للمستخدم واستدعائه على Socialite: $abstractUser = Mockery::mock('Laravel\Socialite\Two\User') ثم يمكن إضافة القيم المتوقع الحصول عليها من التجربة: $abstractUser ->shouldReceive('getId') ->andReturn(rand()) ->shouldReceive('getName') ->andReturn(str_random(10)) ->shouldReceive('getEmail') ->andReturn(str_random(10) . '@gmail.com') ->shouldReceive('getAvatar') ->andReturn('https://en.gravatar.com/userimage'); ........ وبعدها، يجب استخدام shouldReceive لقيم المستخدم بالشكل التالي: Socialite::shouldReceive('driver->user')->andReturn($abstractUser); وأخيراً يمكننا تنفيذ هذا الإجراء كالتالي: $this->visit('/auth/github/callback') ->seePageIs('/') ومن الممكن أيضاً دمج آلية الاختبار ضمن كتلة واحدة بالشكل التالي: $provider = Mockery::mock('Laravel\Socialite\Contracts\Provider'); $provider->shouldReceive('redirect')->andReturn('Redirected'); $providerName = class_basename($provider); //استدعاء المودل $socialAccount = factory('test\User')->create(['provider' => $providerName]); $abstractUser = Mockery::mock('Laravel\Socialite\Two\User'); // الحصول على المستخدم من API $abstractUser->shouldReceive('getId') ->andReturn($socialAccount->provider_user_id) ->shouldReceive('getEmail') ->andReturn(str_random(10).'@gmail.com') ->shouldReceive('getNickname') ->andReturn('Laztopaz') ->shouldReceive('getAvatar') ->andReturn('https://en.gravatar.com/userimage'); $provider = Mockery::mock('Laravel\Socialite\Contracts\Provider'); $provider->shouldReceive('user')->andReturn($abstractUser); Socialite::shouldReceive('driver')->with('github')->andReturn($provider); // بعد التحقق والتوثيق من المستخدم سيتم إعادة التوجيه $this->visit('/auth/facebook/callback') // زيارة الصفحة بعد تسجيل الدخول للمستخدم ->seePageIs('/'); ويجب أيضاً تضمين الصف use Laravel\Socialite\Facades\Socialite عند استخدامه في الملف المطلوب.1 نقطة
-
من الممكن ظهور هذه الأخطاء عند التعامل مع github أو عند تحديث إصدارات لارافيل، فيحدث تضارب مع النسخ المستخدمة في المكتبات ضمن المشروع. من الممكن حل هذه الأخطاء عن طريق التأكد من الإصدارات التموافقة مع الإضافات المستخدمة وبأنها معرّفة بشكل جيّد ضمن المسار config/app.php: 'providers' => [ .. AnyProvider\Support\Laravel\AnyServiceProvider::class, 'aliases' => [ .. 'AnyProvider' => AnyProvider\Support\Laravel\Facade::class, وضمن الملف composer.json في Envoyer بأن المكتبات مضمّنة في كل من require و require-dev في حال بيئة التطوير. والمكان الأخير هو app/Providers/AppServiceProvider.php، يجب أيضاً تسجيل أي serviceProvider في حال احتاج ذلك: public function boot() { $env = config('app.env'); if ($env === 'local' || $env === 'testing') { .. dev only libraries $this->app->register(\AnyProvider\Iseed\AnyProvider::class); } } وبعدها يمكن إجراء الأوامر التالية للتأكد من إجراء التحديثات اللازمة: rm -rf bootstrap composer dump-autoload ولكن بعد تنفيذ هذه الأوامر يجب إجراء git revert لإعادة الملفات bootstrap الموجودة بين ملفات المشروع في github1 نقطة
-
كما وضح المدرب عبدالله فإن من الطبيعي فقدان الثقة في بداية التعلم ولكن عند بداية العمل وتنفيذ أول المشاريع لك سترى أن الموضوع لا يحتاج كل هذا التوتر والقلق وألخص لك ما يجب عليك فعله بما أنك في مرحلة التعلم أنصحك بشدة بالتخصص في مجال محدد والتعمق فيه وبناء العديد من المشاريع بعد كسب الثقة وتعلم ما يكفيك لتفيذ المشاريع الخاصة بمجالك ينبغي عليك تعلم بعض المهارات مثل فن التسويق و الإقناع و كيفية بناء portfolio قوي يوضح المهارات التي تتقنها وهذه المهارات لا تقل أهمية عن البرمجة أو المجال الذي تتقنه بعد ذلك قم بالتقدم للعمل وسأضمن لك بعد تنفيذ الخطوتين السابقتين أنك ستقوم بتنفيذ العديد من المشاريع سواء freelancing أو وظيفة ثابتة1 نقطة
-
وعليكم السلام ورحمة الله وبركاته عملية الخوف من عدم تحقيق شئ في المجال أمر طبيعي لحل هذا الأمر عليك بتقسيم أهداف على المدى القصير والبدء على الفور في تنفيذها قم ببناء مشاريع كثيره على كل ما تتعلمه حتى لو أشياء بسيطه جدا جدا هذا سيعطيك ثقه في نفسك أكثر لاتقع في فخ أن تشاهد شروحات وتطبق فقط وراء الشرح دون القيام بمشروع بسيط بنفسك دون إتباع كود شخص ما أخيرا لا تتعجل خذ وقتك وحاول أن تقدم على تدريب داخل شركات سيعطيك هذه التجربه نظره أوسع عن شكل المجال والعمل الحقيقي وتكتسب خبره كبيره أيضا باذن الله بالتوفيق إن شاء الله1 نقطة
-
بجانب أن redux منتشر بشكل أكبر ومطلوب في الشركات بإختصار كلا من redux و flux لهما تقريبا نفس البنيه التحتيه (architecture) ولكن Redux تكون أبسط بشكل كبير وتزيل عنك جزء كبير من التعقيد وذلك من خلال إستخدام (functional composition) بينما Flux تستخدم "callback registration" بالإضافه الى أن التعامل مع Redux وتجربتها للمطورين يكون أفضل بسبب سهولة عملية ال debugging وتوفر الإضافة الخاصه ب Redux DevTools.1 نقطة
-
السبب في ذلك أن React كما أجبتك سابقا لاتقوم بتحديث ال state مباشرة في حالة كنا خارج عملية غير تزامنيه (Asynchronous) بل تقوم بعمل batching وتقوم بعملية التحديث لعدة قيم في ال state مرة واحده حتى لا يحدث render عدد كثير من المرات ولذا بما أنك تستخدم ال hooks يمكنك أن تستخدم ال useEffect لتنفيذ المطلوب عن طريق التالي: useEffect(() => { console.log(username); }, [username]); حيث سيتم تنفيذ الكود فقط في حالة تغيرت قيمة ال username في ال State وفي حالة أردت تنفيذ نفس الأمر في حالة كنت تستخدم class component يمكنك أن تنفذ الأمر كالتالي: render() { return ( <input value={this.state.username} onChange={(e) => { this.setState({ username: e.target.value }, () => { console.log(this.state.username); }); }} /> ); }1 نقطة
-
إن كنت تعني أنك تقوم برسم رابط للملف ولكن الرابط يعرض محتوى الملف بدلاً من تحميله حينها يمكنك استعمال خاصية download كالتالي: <a href="fileurl" download></a> وجود خاصية download بحد ذاتها يخبر المتصفح بأن يحمل الملف بدلاً من عرض محتواه، هذه الخاصية تعمل في كل المتصفحات ما عدا IE، بالنسبة للـIE فلا يوجد حل مع اﻷسف. بالطبع يمكنك إسناد نص لخاصية download هكذا: <a href="fileurl" download="filename.pdf"></a> حينها عند الضغط على الرابط سيتم تحميله باسم filename.pdf. إن كنت تعني شيئاً آخر فأرجو منك توضيح مقصدك.1 نقطة
-
1 نقطة
-
وربييي انت أسطووورة 😭😭😭💗💗💗💗💗 شكرا شكرا جزييلا أستاذ واائل على مساعدتي🥺🤝 الحمد الله ضبطت البرمجة مثل م انا ابي💗💗1 نقطة
-
يوجد نوعين من خوازرميات التشفير، الأول تشفير في إتجاه واحد، أي يتم تشفير النصوص ولا يمكن فك تشفيرها عمليًا ومن هذه الخوارزميات SHA-256 و md5 و bcrypt التي يستعملها Laravel في حفظ كلمات المرور، ويمكن إستخدامها بشكل مباشر عبر دالة bcrypt: $password = "secret"; $hashed_password = bcrypt($password); // $2y$12$j50r.d/Db1HE.lR4TkTbP.lCGlsMjP7NMQDLP.jE1x9kqz7Ltwyr2 ويمكن التأكد من صحة كلمة المرور فيما بعد عبر Hash:check if (Hash::check('plain-text-password', $hashed_password)) { // The passwords match... } أما النوع الثاني فهو التشفير في إتجاهين، أي يمكن تشفير النصوص وفك تشفيرها عبر كلمة سر معينة تسمى مفتاح فك التشفير وتكون هي نفسها قيمة الخاصية APP_KEY في ملف env، يوفر Laravel خدمة تشفير Laravel's encrypter عبر OpenSSL بإستخدام الخوارزميات AES-256 وAES-128 وكل القيم التي يتم تشفيرها يتم تسجيلها بكود مصادقة MAC، بحيث لا يمكن تعديل قيمتها الأساسية أو العبث بها بمجرد تشفيرها. ملاحظة: لا تستخدم أبدًا هذه الطريقة لتشفير كلمات المرور وذلك لأنه يمكن فك تشفيرها بمجرد معرفة قيمة APP_KEY، وقد حدثت الكثير من عمليات الإختراق في عشرات المواقع لأسباب مشابهة، وإنما تستعمل هذه الطريقة في تشفير القيم التي تحتاجها في وقت لاحق مثل API Tokens. للبدء في تشفير القيم يمكنك أن تستخدم دالة encryptString التي يوفرها الصنف Illuminate\Support\Facades\Crypt، وهنا مثال من وثائق Laravel الرسمية: <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Crypt; class DigitalOceanTokenController extends Controller { /** * Store a DigitalOcean API token for the user. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function storeSecret(Request $request) { $request->user()->fill([ 'token' => Crypt::encryptString($request->token), ])->save(); } } يمكن أيضًا إستخدام دالة decryptString من نفس الصنف لفك تشفير النصوص، وفي حالة حدوث خطأ سيتم إطلاق خطأ من نوع Illuminate\Contracts\Encryption\DecryptException، مثال: use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Support\Facades\Crypt; try { $decrypted = Crypt::decryptString($encryptedValue); } catch (DecryptException $e) { return Redirect::back()->withErrors(['msg', 'Invalid decryption key']); } بالتوفيق.1 نقطة
-
يمكنك استخدام AS لوضع اسم مستعار لاسم الجدول في الاستعلام بهذا الشكل Item ::from( 'items as items_alias' ) ->join( 'attachments as att', DB::raw( 'att.item_id' ), '=', DB::raw( 'items_alias.id' ) ) ->select( DB::raw( 'items_alias.*' ) ) ->get(); إذا كنت تستخدم Elquent يمكنك في Model تضع protected $table = 'table_name as alias' وفي الاستعلام ModelName::query()->select(alias.id, alias.name)1 نقطة
-
1 نقطة
-
مرحبًا @أسيل أبو الكاس، في الغالب أن عملية التأكيد لديك يوجد فيها خطأ، كأن تكون صورة البطاقة الشخصية غير واضحة أو أنك لم تتصوري بوضح مع البطاقة الشخصية. ومن أجل حل المشكلة يمكنك التواصل مع مركز الدعم الفني من هنا. كل ماعليك هو فتح تذكرة في القسم الخاص بموقع مستقل وسوف يتم التواصل معك في أسرع وقت. شكرًا لك.1 نقطة
-
أريد برنامج لعمل شخصيه كرتونية مع اضافه الصوت وتاثيرات الحركة أرجوا المساعدة1 نقطة
-
في الدالة mouseClicked لا يتم التعرف غلى المتغير mouse الذي تم تعريفه في الأعلى لعدم وضع كلمة global قبله في بداية الدالة مثل ما تم التعامل مع الألوان، فأعتقد أنه ليس له قيمة بدائية أي ليست 0 و هل تتغير قيمته مع النقر؟ يمكن طباعة قيمته للتأكد من خلال print مثلا. كما يجب تغيير قيمته مع كل نقرة ضمن الشرط if بزيادة 1 له أي ل mouse1 نقطة
-
ممكن ترفق لنا الكود الخاص بإنشاء الكائن من النموذج $pdf ؟ مثل: pdf = new TCPDF();1 نقطة