لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 04/19/21 في كل الموقع
-
بداية يجب عليك حسم موقفك و توضيح جيدا لما قد تريد الإنتقال من لغة برمجية إلى أخرى , و لا يكفي هذا أيضا بل ويجب التحقق إن كانت هاته الأسباب بالفعل تدفعك إلى التخلي عن اللغة التي قد تعلمتها و تعلم أخرى جديدة . و شيء جميل أنك قد اوضحت هدفك من الانتقال من الـ php , لكن لا أرى أنها بأسباب فعلية و لنأخذ على سبيل المثال إطار العمل الغني عن التعريف Laravel و لنسقط عليه هاته الأسباب . - فلو كنت تريد تطبيقات متزامنة فإطار العمل هذا يمتلك الكثير من الأشياء التي تسهل فعلا التعامل مع تقنيات الويب سوكيتس و الويب ار تي سيز ( socket.io , pusher , Laravel echo system .. وغيرها الكثير ) - أما لو كانت تريد بناء Restuful API قوية فكثير من الأشياء تجعل Laravel في الصدارة في هذا الأمر ( الـ Restful Controllers , Laravel Passport , jwt auth .. وغيرها ) . و كون لارافل مفتوح المصدر فهو أيضا يعطيك تحكم كامل بدون محدوديات ولك أن تعدل حتى الcore الخاص بإطار العمل . - وطبعا لم أتحدث عن مزايا إطار العمل هذا التي تجعل حوالي مليون و نصف موقع تقوم عليه , فقد اختصصت قولي بالنقاط التي أردت التغيير من أجلها . بجانب أن تعلم لارافيل يختصر عليك طريقا طويلا أنت على وشك أن تسلكه , فقبل التوغل في منصة أو اطار عمل ما ينبغي عليك تعلم اللغة أولا . ومن ثم تعلم أشياء تعطيك نظرة تبسط لك التعامل مع أطر العمل على هاته اللغة ككل كالبرمجة الكائنية و معماريات التصميم بهاته اللغة ومن ثم فقط يأتي إختيار إطار العمل . فأنا أدعوك الى جدية أكثر في توضيح لنفسك الأسباب التي تريد بها الإنتقال و من ثم مراجعتها و التحقق منها قبل الحسم في موضوع قد يأخذ الكثير من الوقت . و أرشح لك دورة تطوير تطبيقات الويب بلغة الphp من حسوب فبها قسم كامل عن كيف تقوم ببناء تطبيقات إعتمادًا على إطار العمل Laravel . وكملاحظة بسيطة فان الوردبرس ليس إطار عمل و انما هو نظام إدارة محتوى , والفرق بينهما ببساطة هو : أن نظام إدارة المحتوى هو عبارة عن برمجية تساعدك على إيجاد حلول رقمية كأن تقوم ببناء تطبيق ويب أو صفحة هبوط , وأمثلة عن ذلك : الووردبرس , جوملا , ويكس وغيرها . أما إطار العمل فهو شيء اخر تماما فهو إضافة على لغة ، يجمع مجموعة من المكتبات و الحزم . و يوفر الأساس الذي يبني عليه مطورو الويب التطبيقات. و أمثلة عن ذلك : لارافل , روبي ان ريلز , دجانقو . فبإطار العمل تستطيع حتى بناء نظام إدارة محتوى كامل ومتكامل اما العكس فغير ممكن . وهذه هي ميزة إستعمال أطر العمل , أي غير المحدودية في مقابل نظم إدارة المحتوى . بالتوفيق2 نقاط
-
وعليكم السلام ورحمة الله وبركاته اعتقد اختيار اللغه واطار العمل بيعتمد علي الاكثر شيوعا في سوق العمل اللي متواجد فيه لغة PHP من اكتر اللغات شيوعا في اغلب الاسواق وكمان ممكن تجرب تستخدم Laravel ما معتمده علي CMS فقط بتقدر تبين بيها Rest api ومشاريع مختلفه في احجامه بالنسبه لل Python لغه منتشره جدا ومجالاتها متعدده في Machine Learning , Security, DataScience, Image processing وتطوير مواقع ويب عن طريق اطارات العمل Django بتعتمد علي built in مودلز جاهزه كتير بتعملها import وتستخدمها ال Flask بتحتاج تقسم الكود وتكتب كود بايديك ما فيها المكتبات اللي موجوده في django تاخد وقت اطول في التطوير بالنسبه لل ruby ما عندي معلومات عنها بس عموما التنقل من لغه لاخره او اطار عمل لاخر بيكون سهل جدا مجرد بتتعلم ال syntax اللغه او اطار العمل الفكره في فهم مواضيع الويب عموم عمليات ال Autherization, authentication , Rest apis , وقواعد البيانات وهكذا والتنقل بين اللغات ما صعب وكمان اختيار اللغه او اطار العمل بيعتمد علي طبيعة المشروع لو مثلا المشروع محتاج تحليل بيانات وهكذا بايثون عندها مكتبات قويه في هذا المجال راح اشتغل بايثون ما راح استخدم مثلا PHP لان الموضوع هيكون صعب شويه بيها وسهل ببايثون2 نقاط
-
يمكنك تنفيذ الأمر التالي في cmd php artisan tinker ثم تقوم بالأستعلام عن الحساب الذي تريد تغيير كلمة المرور له. $user = App\User::where('email', 'user@example.com')->first(); $user->password = Hash::make('password'); $user->save(); أو من خلال ملف web.php يمكنك وضع مسار لتغيير كلمة المرور بهذا الشكل <?php Route::get('changepassword', function() { $user = App\User::where('email', 'admin@laravel.com')->first(); $user->password = Hash::make('123456'); $user->save(); echo 'Password changed successfully.'; }); ?>2 نقاط
-
هل يمكنك ارسال السكيما schema لقاعدة البينات حتى اتعرف اكثر كيف قمت بربط المحادثة مع الاشخاص ؟2 نقاط
-
أنت تعرف من خلال ملفك الشخصي، ككاتب مستقل. لديك فرصة واحدة لإقناع العملاء بأنك الشخص المناسب. وهذا يعني أنه بدون ملف شخصي رائع، لن تستمر في هذا العمل طويلًا. وإلى جانب عرض مهاراتك، فإن الهدف الأساسي من ملفك الشخصي هو الحصول على الثقة. يريد الناس معرفة من يوظفون. إذا كان كل مشروعك على الإنترنت، فأنت تحتاج إلى أن تبذل جهدًا إضافيًا لكسب تلك الثقة. وهذا يعني أن تضيف بعض المعلومات عن نفسك. ستتحدث هذه المقالة عن كيفية تحسين ملفك الشخصي لعملك المستقل، من خلال إضافة قسم السيرة الذاتية. لنبدأ! ماذا تتضمن في ملفك الشخصي لعملك المستقل؟ هناك عدة عناصر يجب أن يتضمنها كل ملف شخصي للعمل المستقل. مثلًا، يجب أن تكون أفضل أعمالك في المقدمة والوسط؛ لأن ذلك هو ما سيراه الناس. وبالإضافة إلى كونك موهوبًا، تريد أن تريهم أنك شخص رائع للعمل معه. من بعض الطرق التي يمكنك بها إظهار ذلك لعملائك المحتملين هو تضمين آراء الزبائن، بعض الصور لك، روابط لمواقع التواصل الاجتماعي وقسم السيرة الذاتية. هدف كتابة السيرة الذاتية هو إعطاء العملاء لمحة مختصرة عنك. وغالبًا، قد يعتقد العملاء المحتملين بأنك موهوب، لكنهم قد لا يختارون توظيفك إذا لم تشارك أي معلومات حول نفسك. تذكر - أنت تبحث عن عمل بنفسك وليس عن طريق منصات العمل المستقل. هذا يعني أن الزبائن لا يستطيعون رؤية تقييماتك السابقة والوصول إلى كل معلوماتك. وبدلًا من ذلك، إذا كنت تريد إيصال أنك الشخص المناسب للوظيفة، فهذا يعود لك. 4 نصائح لتحسين كتابة سيرة ذاتية لعملك المستقل لا يملك معظمنا أي خبرة في كتابة السير الذاتية. المشكلة تكمن في أن معظم العملاء لا يهتمون كثيرًا برمزك أو إذا كنت تحب المشي على الشاطئ. ما يريدونه هو لمحة عن طريقة تفكيرك المهنية، والتي تقودنا إلى النصائح التالية. اجعلها مختصرة لا أحد يريد قراءة الكثير من الصفحات حول تاريخ حياتك كاملة، إلا إذا كنت قد وجدت علاجًا لمرض بنفسك. يجب أن تكون السير الذاتية الخاصة بعملك المستقل قصيرة ولطيفة. وهنا كل شيء تحتاج لتغطيته: الخبرة المهنية مشاريع مميزة أو عملاء عملت معهم بعض الأمثلة على المشاريع الشخصية ما هي نقاط قوتك المميزة بعض التحليلات لشخصيتك إذا كانت القائمة تبدو كأنها كتابة سيرة ذاتية، فأنت على الطريق الصحيح. والوضع المثالي هو أنك تريد إعطاء لمحة عن شخصيتك وهواياتك. ولكن، يجب أن يكون التركيز الرئيسي في سيرتك الذاتية على حياتك المهنية دائمًا. ومن واقع خبرتي -يقول الكاتب-، إذا كان يجب أن أقرأ سيرتك الذاتية بالكامل، وكانت طويلة جدًا، اذهب واختصرها. ضع صورة جيدة من إحدى أسوأ الأخطاء التي يركبها معظم المستقلين، هي عدم وضع صورة مهنية واحدة على الأقل في ملفهم الشخصي. لا يعني ذلك أنك تحتاج أن ترتدي بدلة، بل صورة واحدة مناسبة للرأس من شأنها أن تحدث فرقًا. لا يحب الكثير من الناس مشاركة صور لأنفسهم. ولكن تم التأكد من أنه لا يوجد عميل جاد يحكم عليك من مظهرك. يعد تضمين صورة شخصية مجرد طريقة بسيطة لإظهار أنك (أ) شخص حقيقي (ب) لست في عمر ال 15 وتتظاهر بأنك محترف. لديك صورة واحدة على الأقل لنفسك في مكان ما. ارفعها وضعها في مكان ما بحيث يستطيع الزائرون رؤيتها في ملفك الشخصي، وسيكون وضعك جيدًا. ركّز على نقاط قوتك ومواهبك المميزة يوجد منافسة كبيرة في مجال الكتابة كعمل مستقل. وبما أنني عملت -يقول الكاتب- في كلا الجانبين، أستطيع القول أنك إذا أعلنت عن وظيفة في مجال الكتابة، ستحصل على عشرات الطلبات إذا لم يكن أكثر. وبالتأكيد هناك مرشحين مميزين. يكون السبب في معظم الحالات، هو أن ملفاتهم الشخصية مرموقة ويعرفون كيف يقنعون العملاء بتوظيفهم. لنقل على سبيل المثال أنك كاتب مستقل بخبرة تتجاوز 5 سنوات. يبدو ذلك جيدًا، ولكنه مفهوم واسع لا يجذب أي شخص. من ناحيةٍ أخرى، إذا قلت أنه لديك خبرة 5 سنوات في الكتابة وخصوصًا الدروس التعليمية لتطوير المواقع الإلكترونية، مع التركيز على WordPress وتم نشرها على مواقع إلكترونية، فهذا أفضل. ككاتب مستقل، كلّما كنت أكثر تحديدًا، زادت الفرصة لتوظيفك، وذلك إذا كان السوق يطلب مجال اختصاصك بالطبع. تعد سيرتك الذاتية لعملك المستقل المكان المثالي لمشاركة تلك المعلومات. حافظ على تواضعك يعد الغرور أمرًا شائعًا بين المستقلين الناجحين. تعني عقلية البيع التي تحتاجها للحصول على عملاء جدد، أنك تمجد محاسنك الخاصة. لا يعد هذا أمرًا سيئًا بحد ذاته، ولكن قلل منه عندما تكتب سيرتك الذاتية. مثلًا، إذا أطلقت بعض القصص القصيرة في موقع Amazon، لا يجعلك هذا مؤلفًا ناشرًا (هذا أمر حقيقي رأيته عدة مرات). من المهم أن تمثل سيرتك الذاتية وملفك الشخصي مهاراتك بدقة. نحن نعرف أن الجميع يضخم الأمور قليلًا في ملفاتهم الشخصية وسيرهم الذاتية، ولكنك ترغب بأن يكون ذلك أقل ما يمكن. الدقة والمصداقية في مهاراتك، ستجعل علاقة العمل أفضل. وفي الجانب الآخر، إذا كان لديك ملفًا شخصيًا وسيرة ذاتية مرموقة، تفاخر بها قليلًا بكل الطرق - لديك كل شيء لفعل ذلك. الخاتمة قد تبدو كتابة سيرتك الذاتية أمرًا صعبًا. ولكن فكر بها على أنها إعطاء لمحة عن نفسك للعملاء المحتملين. إذا جعلت سيرتك الذاتية تبدو جيدًا ولديك مجموعة من أعمال الكتابة باسمك، يصبح إيجاد الأعمال أسهل بكثير. تذكر هذه النصائح المتعلقة بكيفية تحسين سيرتك الذاتية وملفك الشخصي: اجعلها مختصرة ضمّن صورة واحدة على الأقل لنفسك ركز على نقاط قوتك ومهاراتك المميزة حافظ على تواضعك هل لديك أي أسئلة حول كيفية تحسين ملفك الشخصي الخاص بعملك المستقل؟ ضعها في قسم التعليقات أدناه. ترجمة وبتصرف للمقال How to Write the Perfect Bio for Your Freelance Portfolio لكاتبه Alexander Cordova1 نقطة
-
استخدم المكتبة spatie/laravel-backup لإنشاء نسخة احتياطية من المشروع ورفعها على S3، ولكن مؤخراً أصبح يظهر لي الخطأ التالي: Copying zip failed because: An exception occurred while uploading parts to a multipart upload. The following parts had errors: - Part 17: Error executing "UploadPart" on "https://s3.eu-west-1.amazonaws.com/my.bucket/Backups/2019-04-01-09-47-33.zip?partNumber=17&uploadId=uploadId"; AWS HTTP error: cURL error 55: SSL_write() returned SYSCALL, errno = 104 (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) (server): 100 Continue - - Part 16: Error executing "UploadPart" on "https://s3.eu-west-1.amazonaws.com/my.bucket/Backups/2019-04-01-09-47-33.zip?partNumber=16&uploadId=uploadId"; AWS HTTP error: Client error: `PUT https://s3.eu-west-1.amazonaws.com/my.bucket/Backups/2019-04-01-09-47-33.zip?partNumber=16&uploadId=uploadId` resulted in a `400 Bad Request` response: <?xml version="1.0" encoding="UTF-8"?> فيبدو أن السبب هو كبر حجم الملفات. فهل يوجد طريقة استطيع فيها زيادة حجم الملفات التي يتم رفعها عن طريق curl؟ أو تقسيم الملفات لعدة أجزاء ليتم رفعها دون نقص؟1 نقطة
-
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "xmmp-chat"; $topic_id= 325; $user_Received_id=1; $user_send_id=2; // Create connection $con = new mysqli($servername, $username, $password, $dbname); // Check connection if ($con->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM conversations WHERE (user_Received_id=$user_Received_id AND user_send_id=$user_send_id) or (user_Received_id=$user_send_id AND user_send_id=$user_Received_id) and topic_id = $topic_id"; $stmt = $con->prepare($sql); //$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id); $stmt->execute(); $result = $stmt->get_result(); //$result = $con->query($sql); if ($result) { $data = []; while ($row = $result->fetch_assoc()) { $data[] = $row; } echo "<pre>"; print_r($data); } ?> جرب هذا الكود أخي1 نقطة
-
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "xmmp-chat"; // Create connection $con = new mysqli($servername, $username, $password, $dbname); // Check connection if ($con->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM conversations WHERE (user_Received_id=1 AND user_send_id=2) or (user_Received_id=2 AND user_send_id=1) and topic_id = 325 "; $stmt = $con->prepare($sql); //$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id); $stmt->execute(); $result = $stmt->get_result(); //$result = $con->query($sql); if ($result) { $data = []; while ($row = $result->fetch_assoc()) { $data[] = $row; } echo "<pre>"; print_r($data); } ?> أنظر أخى لهذا الكود وتلك الصورة لرؤية الناتج من هذا الكود1 نقطة
-
طبعا قد يعتمد هذا على نوع البيانات المدرجة بقاعدة البيانات فالظاهر أن user_Received_id و user_send_id عبارة عن strings او نوع اخر فتأكد أن تقوم بتمرير النوع الصحيح هل يمكن الاطلاع على بنية بيانات الجدول بالphpmyadmin ؟1 نقطة
-
تلك الكويري ستقوم بإرجاع الداتا فقط من طريق واحد وهي فى حالة user_Received_id = 2 و user_send_id = 1 ولذلك يجب أن نعدل الكويري SELECT * FROM conversations WHERE (user_Received_id=1 AND user_send_id=2) or (user_Received_id=2 AND user_send_id=1) and topic_id = ?1 نقطة
-
يجب إضافة التضمين التالي ضمن ملف الاستعلام: use Rebing\GraphQL\Support\Type as GraphQLType; والوراثة من الصف GraphQLType، وأيضاً يجب إعادة return لحقول الخصائص المعرفة ضمن resolvers هذا الغرض فيصبح الكود بالشكل التالي: <?php namespace App\GraphQL\Types; use App\Wine; use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Type as GraphQLType; class ItemType extends GraphQLType { return [ 'id' => [ 'type' => Type::nonNull(Type::int()), 'description' => 'Id of the item', ], 'name' => [ 'type' => Type::nonNull(Type::string()), 'description' => 'The name of the item', ], ]; } وأيضاً ضمن الملف graphql، يجب التأكد من تضمين الصفين: use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; ومن ثم يمكن إنشاء ملف منفصل للاستعلامات: <?php namespace App\GraphQL\Queries; use App\Item; use GraphQL\Type\Definition\Type; use Rebing\GraphQL\Support\Facades\GraphQL; use Rebing\GraphQL\Support\Query; class ItemQuery extends Query { protected $attributes = [ 'name' => 'item', ]; public function type(): Type { return GraphQL::type('Item'); } public function args():array { return [ 'id' => [ 'name' => 'id', 'type' => Type::int(), 'rules' => ['required'] ], ]; } public function resolve($root, $args) { return Item::findOrFail($args['id']); } } ويمكن استعادتها بالجمع عن طريق استخدام listOf: public function type(): Type { return Type::listOf(GraphQL::type('Item')); } public function resolve($root, $args) { return Item::all(); }1 نقطة
-
يجب عليك إضافة implements SluggableInterface ضمن المودل الذي تقوم باستخدامه: class Item extends Eloquent implements SluggableInterface { .... } وبعدها ستتمكن من استخدامها بالشكل التالي: $item = Item::create([ 'title' => 'This is an item', ]); echo $item->slug;1 نقطة
-
مرحبا . إن كانت حاجتك لعمل slug فأقترح إستعمال الدالة slug ضمن المساعد Str كالتالي : <?php use Illuminate\Support\Str; $slug = Str::slug('make a good slug', '-'); // make-a-good-slug لكن ان احتجت تعميم العملية على الكثير من الموديلات و الاستفادة من باقي الـأشياء التي تقدمها مكتبة cviebrock/eloquent-sluggable فتأكد أن تستعمل الTrait الصحيح <?php use Cviebrock\EloquentSluggable\Sluggable; .. class myModel extends Model{ use Sluggable; .. } وبدل تعريف الsluggable attributes في attribute يجب عليك استعمال الabstract method التي اسمها sluggable() ضمن الTrait المستعمل , ومن ثم تعريفها بداخلها فيكون : <?php use Cviebrock\EloquentSluggable\Sluggable; class myModel extends Model { use Sluggable; /** * قم بتعريف القيم هنا * * @return array */ public function sluggable() { return [ 'slug' => [ 'slugable_column' => 'title' ] ]; } } و الان قم بتجريب إنشاء item جديد وسيتم حفظ الslug بشكل عادي .1 نقطة
-
يمكننا زيادة وقت الاتصال عن طريق وضع الخاصية timeout لعميل S3Client في ملف: config/filesystems.php كالتالي: 'disks' => [ 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => 'us-east-1', 'bucket' => env('FILESYSTEM_S3_BUCKET'), 'http' => [ 'timeout' => 360 ] ] ]1 نقطة
-
1 نقطة
-
أولاً تطوير المواقع بستخدام لغة ال php ليست محدودة ومقتصرة على ال cms وأجد أنك تتحدث عن ال wordpress ولكن ال wordpress هو cms أي أنك تحصر إمكانيات اللغة البرمجية في ال wordpress وللعلم تستطيع عمل أي موقع تريده باستخدام ال php ويمكنك استخدام الإطار laravel بدلاً من wordpress إذا كنت لا تريد بناء موقع cms ويمكنك أيضاً بناء api للموقع عن طريق php ولكن هناك خيار يناسب التطبيقات التي تريد بنائها وهو ال node js فيمكنك من خلالها بناء ال api بشكل أفضل وأسهل من ال php1 نقطة
-
1 نقطة
-
اعمل على فكرة اول تجربه لي من خلالها .. ما احاول القيام به كالتالي:انشاء رسائل خاصة بين الاعضاء. على سبيل المثال لدي مستخدم اسمه احمد ومستخدم اسمه محمد محمد قام بنشر موضوع بعنوان : كيف نتعلم البرمجة . ياتي احمد ويقوم بتواصل لدى محمد عن طريق الرسائل الخاصة اول رسالة : كم احتاج وقت حتى اتعلم البرمجة؟ الرسالة الثانية : هل يمكنني التعلم خلال شهر واحد؟ الرسالة الثالثه: ما الفرق بين flutter و java ? بحيث اصبح احمد يمتلك في جدول البيانات او قاعدة MySQL اكثر من سجل تم توجيهم الى محمد وما يربط هذا السجلات هو id واحد الخاص ب موضوع محمد بمعنى كل الاسطر التي يمتلكها احمد الان تمتلك id واحد حتى ولو اختلف محتوى المحادثه. كيف اقوم بجلب اول رسالة قام بارسالها احمد الى محمد وعرضها في list مع امكانية لو محمد رغب بشاهدة باقي المحتوى يقوم بضغط على الرسالة الظاهره ثم ينتقل الى صفحه مختلفه ليتم عرض المحادثه كامله من خلالها ؟ ايضا لو كان في مستخدمين مختلفين غير احمد وقام بارسال رسائل مختلفه الى محمد على نفس الموضوع1 نقطة
-
اهلا بك اخي الكريم لقد فهمت الفكره ساحاول تطبيق ذلك كل الشكر لك كل الشكر لك اخي الكريم لقد فهمت الفكره وشرحك كافي ووافي لقد تم ايضاح الفكره بشكل كامل جزاك الله الف خير شكرا لك لقد تم حل المشكله واعتذر على تاخر ردي1 نقطة
-
نعم يمكنك إرسالها مع المرفقات وتأكد من تسليم جميع الملفات بشكل سليم ثم بعد ذلك قم بتسليم المشروع ستجد كلمة "تسليم المشروع" ف أعلى اليسار في الموقع في الصفحة الخاصة بالمشروع حتى يوافق عليه العميل يصبح المشروع مكتمل و تصلك الأموال1 نقطة
-
1 نقطة
-
اخى الكريم داله ال get تقوم بإرجاع list of collections لذلك اذا اردت ان تقوم بتعديل collection_name الذى يساوى clients الى clients_avatar لديك اكثر من حل اول حل وهوا $data = Media::where(['model_id' => $id, 'collection_name' => 'clients'])->get(); foreach($data as $media){ $media->update([ 'collection_name' => 'clients_avatar', ]); } والحل الاخر هوا ان تسترجع قيمة واحده فقط عن طريق دالة ال first $media = Media::where(['model_id' => $id, 'collection_name' => 'clients'])->first(); if($media){ $media->update([ 'collection_name' => 'clients_avatar', ]); }1 نقطة
-
الصور لا تظهر في الموقع ,نشرت تطبيق لارافيل على منصة heroku و واضع الصور في ملف storage و كتبت الامر php artizan storage:link هذا رابط الموقع http://sadouki-cms.herokuapp.com/ كيف يمكنني حل المشكلة ؟1 نقطة
-
الفكرة كالتالى اخى الكريم سنقوم بعمل جدول خاص بالمواضيع : CREATE TABLE subjects ( id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(30) NOT NULL, description VARCHAR(30) NOT NULL, user_id bigint UNSIGNED, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ونقوم بعمل جدول يسمى المحادثات ويكون كالتالى : CREATE TABLE conversations ( id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY, subject_id bigint UNSIGNED, tile VARCHAR(190) NOT NULL, user_id bigint UNSIGNED, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) بحيث ان تكون المحادثة مربوطة بالموضوع وال user_id هنا يكون اليوزر الذى يريد ان يتحدث مع صاحب الموضوع بحيث اذا اراد اى مستخدم التحدث مع صاحب الموضوع نقوم بعمل محادثة له فى جدول ال conversations ومجرد عنوان ابتدائى للمحادثة ومن ثم نقوم بعمل جدول نقوم بتخزين الرسائل فية ويكون بالشكل التالى : CREATE TABLE messages ( id bigint UNSIGNED AUTO_INCREMENT PRIMARY KEY, conversation_id bigint UNSIGNED, msg text NOT NULL, user_id bigint UNSIGNED, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) subjects table : --------------------- id | title | user_id --------------------- 1 | title | 5 conversations table : -------------------------------------------------------------- id | subject_id | user_id | title --------------------------------------------------------------- 1 | 1 | 1 | مرحبا لدى عدة اسئله على هذا الموضوع --------------------------------------------------------------- 2 | 1 | 2 | مرحبا اخى الكريم هل لديك وقت كافى messages table : ----------------------------------------------------------------- id | conversation_id | user_id | title ----------------------------------------------------------------- 1 | 1 | 1 | كم احتاج وقت حتى اتعلم البرمجة؟ ----------------------------------------------------------------- 2 | 1 | 5 | تحتاج خمس شهور واخيرا اذا اردت ان تسترجع الشات لست يمكن تنفيذ هذه الكويرى : SELECT conversations.* FROM `conversations` JOIN subjects on subjects.id = conversations.subject_id WHERE subjects.user_id = 5 وشكرا .1 نقطة
-
يوجد اخى الكريم نظام تشغيل يسمى Hackintosh وهوا نسخه معدلة من نظام الماك وتستطيع ان تقوم بتحميلها على الاجهزة العادية اى لا يوجد حاجة ان يكون معك جهاز ماك1 نقطة
-
ستقوم بتخزين id محمد و تخزين id للرسائل بحيث عند إرسال الرسالة يتم حفظها, ويكون الاستعلام بهذا الشكل $sql = "SELECT * FROM messages WHERE user_id = {$user_id} and msg_id = {$msg_id}"; $sql = mysqli_query("معرف الاتصال", $sql); وهكذا تستطيع عمل Loop خاصة للرسائل الخاصة بمحمد و الخاصة بالرسائل. الفكرة بعمل جدول للإعضاء و جدول للرسائل و جدول للمحادثات داخل كل رسالة. أو يمكنك إرفاق ملفات مشروعك هنا لنساعدك في حلها.1 نقطة
-
اولا تقوم بفتح ال tinker تعمل run للامر php artisan tinker ثم بعد ذلك تجيب بيانات اليوزر بالايميل ثم تقوم بتغير كلمة المرور وحفظ التغيرات $user = App\User::where('email', 'admin@laravel.com')->first(); $user->password = Hash::make('123456'); $user->save();1 نقطة
-
أضف عنصرًا ثالثًا. تغيير النموذج ل mobil1. احذف السعر من mobile2. قم بتعديل النموذج ل mobile2. mobiles = { mobile1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} , mobile2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000} }1 نقطة
-
لإضافة عنصر جديد الى هذه المجموعه يمكنك أن تستدعي اسم المجموعه و من ثم بين '[]' ضع اسم العنصر الجديد و من ثم تساويها بقيمة جديده كالتالي : mobiles = { mobile1: {'Company':'iphone', 'model':'XR', 'OS':'IOS', "price":67000} , mobile2: {'Company':'Samsung', 'model':'Note 10', "OS":'Android', 'price':87000} } mobiles['mobile3'] ={'Company':'iphone2', 'model':'XR2', 'OS':'IOS2', "price":670002} للتغيير أي قيمة داخل موسوعة عليك إستدعاء أسم الموسوعة و من ثم إستخدام رمز القيمة التي تريد الوصول إليها مثلا إسم المسوعة mobile و أنا أريد ان أصل الى العنصر mobile1 لذلك سأكتب mobiles['mobile1'] هنا قد وصلت الى الموسوعة الداخلية التي تتضمن عدة حقول و كما استخدمنا حقل mobile1 للوصول الى هذه الموسوعة الداخلية علينا أن نستخدم أسم الحقل الداخلي حتى نستطيع الوصول الى قيمته أو تغيير قيمته كالتالي : mobiles['mobile1']['model '] هنا وصلنا الى القيمة للموديل في الموبايل الاول #و من هنا يمكننا يغيير القيمة باسناد اي قيمة جديدة ترغبها للسطر الاعلى كالآتي # mobiles['mobile1']['model']="Any New Value" #اما هنا فالتغيير يكون على المبايل الثاني 2 mobiles['mobile2']['model']="Any New Value" أما بالنسبة لحذف اي حقل او عنصر داخل هذه الموسوعة عليك استخدام نفس التسلسل المستخدم بالاعلى حتى تصل للحقل مسبوقا بكلمة del للحذف كالتالي : del mobiles['mobile2']['price']1 نقطة
-
1- Add third elment print("before change") print(mobiles) mobile3 = {"mobile3": {'Company':'android', 'model':'XR', 'OS':'Android', "price":6200}} mobiles.update(mobile3) print("after change") print(mobiles) 2- Change the model for mobil1 print("before change") print(mobiles) mobiles['mobile1']["model"] ="new model" print("after change") print(mobiles) 3- Delete the price for mobile2 print("before change") print(mobiles) del mobiles['mobile2']["price"] print("after change") print(mobiles) 4- Edit the model for mobile2 print("before change") print(mobiles) mobiles['mobile2']["model"] ="new model2" print("after change") print(mobiles)1 نقطة
-
const [loading, setLoading] = useState(false); const [error, setError] = useState(false); const next = async () => { setLoading(true); updateCurrent(code) //some async function .then(() => setLoading(false)) .catch((e) => { setLoading(false); setError(e); }); }; هل هناك طريقة لجعل loading true فقط في حالة ما اذا updateCurrent أخذت أكثر من ثانية في العمل1 نقطة
-
يمكنك إستخدم setTimeout لتحقيق ذلك كالتالي const [loading, setLoading] = useState(false); const [error, setError] = useState(false); const next = async () => { const timer = setTimeout(() => { setLoading(true); }, 1000); updateCurrent(code) //some async function .then(() => {loading ? setLoading(false) : clearTimeout(timer);}) .catch((e) => { setLoading(false); setError(e); }); };1 نقطة
-
1 نقطة
-
يجب أن تكون مجانية، حتى لا تتعدى حقوق الطبع و النشر الموجودة على الصور.1 نقطة
-
1 نقطة