-
المساهمات
5196 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
52
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Adnane Kadri
-
أي إطارٍ تقصد بين الإثنين؟
-
React Native هو إطار عمل يساعد على إنشاء تطبيقات جوال باستخدام لغة JavaScript ومكتبة React . التطبيقات التي تبنى بإطار React Native أصيلة، ما يعني أنّ شيفرة JavaScript تُترجَم إلى الشيفرة الأصلية للجهاز حسب المنصّة (Android أو iOS)، بخلاف التطبيقات الهجينة التي يُمكن إنشاؤها بأطرٍ مثل Cordova. Cordova هو إطار عمل مفتوح المصدر يساعد على إنشاء تطبيقات جوال .يسمح باستخدام تقنيات الويب القياسية مثل HTML5 و CSS3 و JavaScript لتطوير تطبيق للجوال يعمل على جميع المنصات. يمكنك مراجعة توثيق كل منهما في : توثيق ReactNative . توثيق Cordova . كما يمكنك الإطلاع على مقالات الأكاديمية في قسم Cordova .
-
يحددث هذا بسبب أن لديك خطأ في السياق العام لإضافة إستعلام قيد CHECK ، فالشكل العام لإستعماله يكون كالتالي : ALTER TABLE [table_name] ADD CONSTRAINT [check_name] CHECK ([column_name] IN ('check1', 'check2', 'check3' ... )); حيث أن : table_name : يعبر عن اسم الجدول الحاوي للعمود المستهدف . check_name : يعبر عن اسم القيد الذي تحاول إضافته . column_name : يعبر عن اسم العمود المستهدف . ما داخل القوسين يعبر عن القيد و شرطه . ففي المثال الذي لديك يجب أن يوجد كالتالي : ALTER TABLE orders ADD CONSTRAINT size_check CHECK (size IN ("s", "e", "l", "xl")); ليصبح كامل الإستعلام كالتالي : ALTER TABLE ADD COLUMN size varchar(255); ALTER TABLE posts ADD CONSTRAINT size_check CHECK (size IN ("s", "e", "l", "xl"));
- 1 جواب
-
- 1
-
لا يأخذ أي وقت فعملية التسجيل بسيطة مثلها كأي عملية تسجيل أخرى . فبمجرد شرائك للدورة سترسل لك التفاصيل عبر البريد الالكتروني و ستلاحظ ظهور زر " دوراتي " في قائمة التصفح العلوية و سيصبح محتوى الدورة متاحا لك بشكل طبيعي . تأكد أن تقوم بمراجعة صندوق رسائل البريد الإلكتروني ، كما يمكنك مراسلة الدعم لأي استفسارات أخرى.
-
بالطبع يمكنك ذلك ، فبوتستراب يوفر إمكانية تحسين اداءه و يتجاوز مشكلة بطئ تحميله أو تحميل مكونات لا نحتاجه . و يتيح إمكانية تضمين كل مكون على حدة ، مثل : badge ، alert ، containers ، grid أو غيرها . و لكن يكون كل ذلك بإستعمال Sass ، فهو يوفر إمكانية استيراد المكونات التي تحتاجها فقط دون الأخرى . توفر حزمة bootstarp الملف bootstrap.scss ، أين يتم تضمين قائمة المكونات : // الإعداد و التهيئة @import "functions"; @import "variables"; @import "mixins"; @import "utilities"; // المكونات @import "root"; @import "reboot"; @import "type"; @import "images"; @import "containers"; @import "grid"; @import "tables"; @import "forms"; @import "buttons"; @import "transitions"; @import "dropdown"; @import "button-group"; @import "nav"; @import "navbar"; @import "card"; @import "accordion"; @import "breadcrumb"; @import "pagination"; @import "badge"; @import "alert"; @import "progress"; @import "list-group"; @import "close"; @import "toasts"; @import "modal"; @import "tooltip"; @import "popover"; @import "carousel"; @import "spinners"; @import "offcanvas"; // Helpers @import "helpers"; // Utilities @import "utilities/api"; فإذا كنت لا تستخدم أحد المكونات فيمكنك ببساطة تعليق سطره أو حذف تماما من الملف . ثم سيمكنك عن طريق خوادم و أدوات مثل webpack إخراج ملف جامع . قد تكون هاته المعلومات متقدمة بعض الشيء إذ يعتبر هذا تعديلا على الملف الأم لبوتسراب بطريقة مخصصة غرض التحسين ، ولكن هذا لا يمنع من طرح الفكرة أو البحث فيها أكثر .
- 6 اجابة
-
- 2
-
بشكل عام ، إستعمال بوتستراب ليس به أي عيوب إن كنت تحبذ نمطا معينا للتصميم فيه و لكنك ستواجه أحد هاته العيوب في حالات أخرى : ستكون هناك حاجة إلى الكثير من تجاوز الشيفرات و إعادة كتابة الملفات أو إعادة تعيين بعض التنسيقات التي يمكن أن تؤدي إلى قضاء الكثير من الوقت في تصميم موقع الويب وترميزه إذا كان التصميم يميل إلى الانحراف عن التصميم المعتاد المستخدم في Bootstrap ، أي أنه سيتعين عليك بذل جهد إضافي أثناء إنشاء تصميم وإلا ستبدو جميع مواقع الويب التي تقوم بهاا متشابهة إذا لم تقم بإجراء عمليات تخصيص كبيرة. الأصناف التي يوفرها بوتستراب كثير ويمكن أن تؤدي إلى الكثير من العبث في HTML وهو أمر غير مطلوب دوما و قد يتعارض مع مفاهيم الشيفرة النظيفة في بعض الأحيان . نسخ متأخرة من بوتستراب معتمدة كليا على jQuery و Pooper ، مما يترك معظم الشيفرات الإضافية غير مستخدمة ، وهو أمر اخر يتعارض مع مفاهيم الشيفرة النظيفة بجانب أنه قد يؤخر تحميل الصفحات إن كانت سرعات التحميل لدى عملائك أو أغلبهم بطيئة . لكن هذا لا يمنع بالطبع من إمتلاك الكثير من الإيجابيات التي يمكن أن تجعلك تغفل أو تتقبل هاته السلبيات ، نذكر من بينها : كونه يساعدك على تجنب العديد من الأخطاء التي يمكن أن تظهر أثناء تعميم الخواص على المتصفحات . فعلى سبيل المثال : لا نقوم بتخصيص صنف لـ google chrome و اخر لـ IE ، بل نجد أن بوتستراب يوفر صنفا واحدا جامعا يتعامل به بوتستراب مع كامل التغيرات بين المتصفحات . بجانب أنه يعتمد على jQuery فهو أيضا يجنبك إستعمال الكثير من إضافات الجيكويري أو تضمين المكتبات المعتمدة عليها لخدمة أغراض معينة . يساعدك في الحصول على عمل و يضمن لك مكانا في سوق العمل ، إذ أن بوتستراب واحد من أكثر الأدوات المطلوبة في سوق العمل . يقدم Bootstrap نظام تخطيط شبكي Grid system رائع ، يختصر عليك هذا الكثير من الجهد و الشيفرات الإضافية . التجاوبية ، فأغلب حاويات بوتستراب تجاوبية و مرنة مع كل الشاشات ، هذا بجانب أنه يوفر أصنافا خاصة بكل نوع من الشاشات . يوفر الوقت ، فبوتستراب يحرص على توفير أغلب -إن لم نقل كل- ما تحتاجه لتصميم موقع الويب الخاص بك . أما عن تفضيلك لنظام التخطيط الشبكي grid system عن نمط الصندوق المرن flexbox فهو شيء طبيعي جدا ، ولا مشكلة بذلك إن كان إستخدامه أفضل و أكثر مرونة بالنسبة لك . قد تحتاج الإطلاع على العلاقة بين الخطاطة الشبكية Grid Layout وبين طرق التخطيط الأخرى .
- 6 اجابة
-
- 2
-
يمكنك مراسلة مركز مساعدة أكاديمية حسوب و اقتراح الفكرة . كما قد تحتاج الإطلاع على صفحة درب معنا للاستزادة .
-
يمكنك إستعمال حزمة barryvdh/laravel-dompdf لذلك ، إذ توفر هاته الحزمة إمكانية تحويل ملف عرض view بسيط إلى ملف PDF و تحميله . نحتاج في ذلك تطبيق الخطوات التالية : تثبيت الحزمة و إعدادها . تثبيت الحزمة يتم عن طريق تشغيل الأمر : composer require barryvdh/laravel-dompdf سنحتاج بعد ذلك إضافة مزود خدمة الحزمة إلى مصفوفة providers في ملف config/app.php : 'providers' => [ Barryvdh\DomPDF\ServiceProvider::class, ], يفضل أيضا تعريف اختصار للوصول السهل إلى واجهة الحزمة : 'aliases' => [ 'PDF' => Barryvdh\DomPDF\Facade::class, ] توفير رابط لطباعة ملف العرض بشكل PDF : في ملف العرض ، نحتاج توفير زر تصدير للصفحة المعروضة بشكل PDF . يكون ذلك بشكل مشابه : <div class="d-flex justify-content-end mb-4"> <a class="btn btn-primary" href="{{ route('pdf_export') }}">PDF تصدير إلى </a> </div> و بالطبع سنحتاج تعريف هذا المسار في ملف routes/web.php : <? use App\Http\Controllers\PDFController; Route::get('/pdf_export' ,[PDFController::class , 'export'])->name('pdf_export'); إستعمال توابع الحزمة لتصدير الملف . ليكن التابع export للمتحكم PDFController كالتالي : namespace App\Http\Controllers; use Illuminate\Http\Request; use PDF; class PDFController extends Controller { public function export() { $pdf = PDF::loadView('target_view', $someData); return $pdf->download('file_name.pdf'); } } بحيث أن : target_view : يعبر عن ملف العرض المستهدف ، يمكنك إستبداله باسم ملف العرض المناسب الذي تريد تصديره . file_name.pdf : يعبر عن اسم الملف المصدر ، يمكنك تغييره بحسب حاجتك أو حاجة عميلك .
-
طبقا للتوثيق الرسمي لمرجع أخطاء مكتبة libcurl المشار إليه في نص الخطأ فإن الخطأ cURL error 60 يعني أنه قد تم اعتبار شهادة SSL للخادم الذي تحاول إرسال الطلب من عليه غير مقبولة . قد تتعدد أسباب رفضها ، و لكن إشارتك للتالي : توضح أنه لا يمكنك إرسال طلب موثق بشهادة SSL لأنك في الغالب تستعمل localhost ، و ليكن في العلم أنه لا يحتوي على هاته الشهادة افتراضا . لا أظن أن بالأمر مشكلة كونك تقوم بتجربة الواجهة التي تستهدفها عن طريق خادمك المضيف . و لكن يقترح كحل لهاته المشكلة إضافة SSL صالح للمضيف المحلي لـ XAMPP كونك تقوم بإرسال هاته الطلبات بإستخدام أو بوساطة cURL .
- 1 جواب
-
- 1
-
أظن أن سؤالك متشعب كثيرا , إذ أن " تعلم HTML و CSS كمطور تطبيقات أندرويد " يعتمد بالدرجة الأولى على نهجك في تطوير هاته التطبيقات . فإذا كنت تقوم بتطوير تطبيقات الـ Android بإستعمال تقنيات هجينة من مثل ReactNative أو Cordova ، فستحتاج بالطبع إلى معرفة HTML و CSS لأنها تستخدم ذلك في مضمونها . و لكن إذا كنت تقوم بالتطوير أصليًا بإستعمال Java و XML ، فأنت لن تحتاج ذلك . أما عن كونك مشترك في دورة تطوير التطبيقات بإستخدام Javascript فأظن أن معرفة بأساسيات اللغتين ستكون كافية جدا .
- 10 اجابة
-
- 2
-
قد أحسنت , هاته الطريقة عملية جدا . وذلك لكون هاته المعلومات معلومات وصفية . أي أنها لا يجدر أن تظهر في الصفحة و إنما لأغراض أخرى مثل تحسين محركات البحث أو تحسين الظهور . فعوضا عن طباعة HTML يقترح فلترة المحتوى و استخراج النصوص من محتوى الـ html فقط . خصوصا في حالات من مثل الحاجة إلى هذا الحقل في أغراض أخرى , مثال : وجود حقل واحد للمقالة و لوصف صفحة المقالة في جدول المقالات في قواعد البيانات . أي أن كل محتوى كالتالي : <p style="text-align:center;"> هاته فقرة تخص وصف الصفحة </p> <h2> هذا عنوان يخص وصف الصفحة أيضا</h2> يصبح : هاته فقرة تخص وصف الصفحة هذا عنوان يخص وصف الصفحة أيضا ليمكن إستيعابها في الخاصية content كالتالي : <meta name="description" content=" هاته فقرة تخص وصف الصفحة هذا عنوان يخص وصف الصفحة أيضا" > مما يعني أنه هذا لن يسبب المشكلة السابقة . يمكنك إنشاء دالة للفلترة و تحويل كل محتوى html إلى محتوى نصي بمنطق مشابه : $text = '<p style="text-align"> هاته فقرة </p> <h2> هذا عنوان </h2>'; $cleaner_input = strip_tags($text); echo $cleaner_input; وهو نفس ما اقترحته سابقا .
- 6 اجابة
-
- 1
-
ليكن في العلم أن محتوى الخاصية content يقبل نصا فقط , في حين أنك تقوم بتقديم محتوى HTML إليه . لاحظ : <meta name="description" content="<p style="text-align:center;"" و بسبب علامتي التنصيص المفتوحتين في : content="<p style="text-align:center;">" ^ ^ فإن المتصفح يقوم بقراءة ما يقدم له كمحتوى HTML عادي , و بطبيعة الحال فإن هذا سيؤدي إلى ظهوره في الصفحة كـ HTML عادي . يحتمل أنك تقوم بإستعمال محرر نصوص لتحرير نص الوصف عن طريق لوحة التحكم , تأكد أنك لا تقوم بذلك , و أن الحقل news_content محتوى نصي فقط و لا يحوي أية وسوم أو عناصر HTML . يمكنك كحل لهاته المشكلة إلغاء تفعيل محرر النصوص الذي تستعمله على مدخل هذا الحقل في مكان ما بلوحة التحكم أين تقوم بتحديث نص الوصف . يحتمل أيضا أنك تقوم بإستهداف حقل غير الذي تقوم بتخزين المحتوى النصي فيه . تأكد من كل من السابق و أخبرني ما إن استمرت مشكلتك بالظهور .
- 6 اجابة
-
- 1
-
عموما , لا توجد أي مشكلة بالشيفرة التي لديك . يحتمل أن يكون الإختلاف الذي يظهر بين ما هو الخادم المحلي و ما هو على المستضيف هو أحد التالي : عدم إحتواء قواعد البيانات الخاصة بك على أي صفوف مدرجة بجدول topics بالمعرف المدرج في رابط الصفحة كـ : ?topics=23 يعني هذا إعادة الإستعلام الذي لديك لمصفوفة فارغة . و بالتالي عدم إمكانية قراءة الخواص news_content و title من ناتج الإستعلام . يؤدي هذا بدوره إلى نتيجة مشابهة للتالي : <meta name="keywords" content=" " /> <meta name="description" content=" "> الإحتمال الاخر هو في عدم إحتواء رابط الصفحة على معامل بالإسم topics أساسا , فبدل أن تقوم بتصفح رابط الصفحة عن طريق : https://domain.dm/path/to/my_page.php?topics=22 أنت تقوم بالتصفح إليه كالتالي : https://domain.dm/path/to/my_page.php يعني هذا تجاوز الشرط : <?php if( isset($_GET['topics']) ) : ?> و كل ما يقتضيه , و المرور مباشرة إلى شطر العبارة الشرطية الاخر : <?php else : ?> <title> موقع ....... </title> <?php endif; ?> مما يؤدي إلى عدم ظهور الوصف و الكلمات المفتاحية . لتجاوز هاته المشكلة , يقترح تصدير قواعد البيانات التي لديك على الخادم المحلي و إستيرادها في خادمك المستضيف . يقترح جانبا التأكد من أن الإتصال بقواعد البيانات يتم بشكل عادي , و من أن الجدول الذي تحاول القراءة من عليه يحوي بشكل عادي صفوفا يمكن القراءة منها .
- 6 اجابة
-
- 1
-
لا يزال أمامك الكثير فمحتوى الدورة غزير و شامل لكل مفاهيم تطوير واجهات المستخدم . كما أن ما يقدم لا يشمل html , css و جافاسكربت فقط بل ستمتد محتويات الدورة حتى تشمل Bootstrap و sass و jQuery , سواء من الناحية النظرية أو من الناحية التطبيقية إذ يتم تطبيق كل ما يدرس عمليا , بجانب الأشياء التي يتم استذكارها أو التعمق فيها أو توضيح أغراضها أثناء التطرق لها في التطبيق العملي .
-
مرحبا أحمد , في مسار أساسيات CSS في دورة تطوير واجهات المستخدم في الأكاديمية يتم التحدث عن أساسيات الـ css بمجملها و منطق تعاملها , ولا يتم تناول كل خاصية على حدة . و ذلك بهدف تسهيل إستذكارها للطلاب , و لجعل عملية ترتيبها و إستيعابها منطقية . فلا نجد مثلا دروسا كالتالي : الخاصية display الخاصية flex-wrap مجموعة الخواص background بل نجد دروسا ذات عناوين و محتويات دلالية , جامعة لمجموعة أفكار تضم مجموعة خواص تصب في ذات السياق , من مثل : التعامل مع الألوان . الروابط و الأصناف الزائفة . طرق العرض display modes . و هكذا .. أي أن ترتيب الدروس و تصنيفها كالتالي يجعل من إستيعابها أسهل و أكثر وضوحا . كما أن الأمور التي ذكرتها بعيدة بعض الشيء عن الأساسيات ذاتها , فهي من الأمور المتقدمة التي يتطلب التعامل معها معرفة مسبقة بـ css .. فلا يعقل مثلا أن نستوعب عمل transition أو transform دون أن نعرف الخواص التي يتخذها العنصر أثناء و بعد تحويله . في حين أن مسار أساسيات CSS يتعرض للأساسيات فقط . و لهذا فقد تم التطرق لهاته الأمور في المسارات اللاحقة لمسار أساسيات CSS في دورة تطوير واجهات المستخدم , و لذلك فقد تم تطبيقها عمليا و بشكل مكرر في كثير من المواضع اللاحقة , مثل مسار بناء صفحات هبوط أو مجموعة الفيديوهات في قسم تجاوبية الصفحة في مسار تطوير متجر إلكتروني .. و غيرها الكثير . كما يمكنك دوما الإستزادة بالإطلاع على موسوعة حسوب .
- 3 اجابة
-
- 2
-
لنقم بإستكمال عملك و تحقيق ذات الغرض , ثم سنأتي لطريقة الأجاكس بعد ذلك : في ملف العرض display_items.php : نقوم بإستعمال حقل من نوع radio بدلا عن checkbox كونه عملي أكثر , و لنتأكد من إعطاء كامل الحقول ذات الإسم و ذلك كالتالي : <?php foreach ($category_data->result_array() as $row) { ?> <label> <input name="filter_cats" type="radio" value="<?php echo $row['category_name'];?>"> <?php echo $row['category_name']?> </label> <?php } ?> لنتأكد من إعطاء كامل أسطر الجدول صنفا عاما كالتالي : item و صنفا اخر خاصا كالتالي : item_[category_name] ليصبح : foreach($result as $row): echo "<tr class='item item_".$row->category_name."'>"; ثم لنقم بإضافة التفاعلية التالية : $("input[type='radio']").change(function() { if(this.checked) { let target = $(this).val(); $('.item').hide(); $('.item_' + target).show(); } }); يلخص هذا الطريقة الأولى . هاته الطريقة عملية و بسيطة في حالة محدودية المنتجات لديك , و لكن إن كنت مضطرا لإستعمال AJAX فسنلجأ لإستعمال الطريقة الثانية : و لكن هاته الطريقة أيضا غير عملية كونك لا تقوم بفصل جدول العناصر عن جدول الفئات , بل تضيف عمودا خاصا لإسم الفئة داخل جدول العناصر , و في هاته الحالة لن يمكنك الإستعلام من جدول منفصل بل من ذات الجدول الذي تريد جلب العناصر منه . و يجعل هذا العملية غير منطقية و غير عملية . فلا يوجد داع من : الإستعلام مرة أولى من الجدول tbl_items لقراءة أسماء الفئات . الإستعلام مرة ثانية من الجدول tbl_items لقراءة المنتجات الحاملة لإسم فئة معين . و بالتالي فإن أفضل حل هو ما تم إعتماده في الطريقة الأولى . خصوصا و أن المسار , ملف العرض و المتحكم يخصون المنتجات .
- 6 اجابة
-
- 1
-
في الغالب و بشكل عام , يعني هذا الخطأ أنه قد تم حظر عنوان IP الذي تتصل منه بواسطة إحدى خدمات الأمان للخادم الذي ترسل إليه طلبات الـ Http . و ليس المقصود بحظر عنوان IP الخاص بك حظره هو ذاته بالضرورة , بل قد يكون الحظر شمل عناوين ذات البلد مثلا . مثال : إذا كنت تتصل من شبكة مشتركة ، تكون فيها البنية التحتية للإنترنت أقل تطورًا ، فإن عناوين IP نادرة (من المرجح أن يشاركها الكثير من الأشخاص) ، فهذا يمكن أن يزيد من احتمالية رؤية هذا الخطأ . في هاته الحالة ، كإقتراح على ما يمكنك فعله هو محاولة الاتصال من شبكة أخرى مؤقتًا . أما و بشكل خاص , فستحتاج البحث في توثيق الواجهة البرمجية التي تتصل بها على دلالية كود الخطأ 1003 و إصلاح المشكلة بعد تحديدها , فقد يحتمل مثلا أن بيانات المصادقة التي تستعملها قد استهلكت .
- 3 اجابة
-
- 1
-
في الحقيقة , هذا ما تم وصفه في التعليق السابق . و قد تم تجزئته إلى إحتمالين : في حالة محدودية العناصر المنتمية للفئات : أين تم تفضيل عرض كل المحتوى بالصفحة و التلاعب بإظهاره و إخفاءه بحسب التفاعل مع مربعات التحقق . في حالة كثرتها : أين تم تأويل العمل بالأجاكس لعرض الفئات فقط , و إرسال طلبات الأجاكس عند التحقق من المربعات لجلب بيانات معينة تخص الفئة المحدد مربع تحققها . لاحظ تماثل منطق المثالين مع مطلوبك تماما : المثال 1 : المثال 2 : لا يقترح أن يكون طلب الأجاكس من النوع POST , فهذا الأخير موجود خصيصا لإرسال بيانات من الواجهة الأمامية للخلفية على عكس GET الذي هو موجود لعكسها . أظن أن أفضل و أقصر طريق هي ما تم وصفها سابقا , فنحن لا نقوم بإرسال أية بيانات للواجهة الخلفية . على عكس ذلك نحن نقوم بتمرير ما نحتاج في عنوان الـ URL الخاص بنا مباشرة . وهو نفس المتبع في الفيديو , على أن صاحب الفيديو يعتمد تخصيص الفلتر و إضافة مميزات أخرى بجانب غرضه الأساسي , و بالطبع يمكنك ذلك فالعملية عملية تطوير إبتداءا من فكرة صغيرة و بدائية.
- 6 اجابة
-
- 1
-
في الحقيقة , في لينكس لا يوجد ما يعرف بـ "إسم روت " . فـ kali@kali مثلا يجزء إلى : kali ما قابل الرمز @ معبرة عن اسم المستخدم الحالي , في الغالب يكون هو ذاته المستخدم الـ root . و : kali الأخرى ما بعد الرمز @ معبرة عن اسم المستضيف أو الجهاز . على سبيل المثال : ali@ali-lap يمكنك طباعة كل منهما بإستعمال الأمرين التاليين : whoami و : hostname تغيير إسم المستضيف يمكنك ذلك عن طريق التعديل على ملفي hostname و hosts داخل /etc بإرفاق إسم المستضيف الجديد مكان الإسم القديم . يمكنك إستعمال الأمرين التاليين لتعديلهما : sudo nano /etc/hostname sudo nano /etc/hosts سنحتاج بعد ذلك إعادة تشغيل النظام لإلتقاط هاته التحديثات : sudo reboot تغيير اسم المستخدم يتطلب هذا التأكد من أن المستخدم المراد تغيير اسمه غير مسجل للدخول حاليا , أي أن مستخدما اخر هو من يمكنه تغييره و ليس هو ذاته . و عليه سيمكنك إتباع أحد الحلين : إنشاء المستخدم باسم ali , حذف kali تماما . إنشاء مستخدم مؤقت و ليكن tempUser , و تسجيل الخروج كـ kali و تسجيله كـ tempUser . و أخيرا تغيير اسم مستخدم kali و حذف tempUser . يمكنك تغيير إسم مستخدم عن طريق مستخدم اخر كالتالي : sudo usermod -l new-name old-name كما يمكنك حذف مستخدم كالتالي : sudo userdel user-name و أخيرا إضافة مستخدم عن طريق الأمر : sudo useradd user-name كما يمكنك التبديل بين الجلسات عن طريق طباعة الأمر : su -targetUsername و طباعة كلمة المرور في حالة ظهورها .
-
و عليكم السلام و رحمة الله . أظن أنك تقصد فلترة بيانات معينة بحسب الفئات التي تنتمي لها إعتبارا لهاته العلاقة . مثال : فلترة المنتجات بحسب الفئات التي تنتمي لها . لنقم بتجزئة الأمر إلى فكرتين : بيانات محدودة في حالة محدودية الفئات لديك يمكنك الإستغناء عن AJAX تماما و طباعة كامل الفئات مع كامل البيانات , و التعامل مع إخفاء بيانات الفئة الواحدة عن طريق أصناف CSS عادية و بعض الجافاسكربت . سيمكن ذلك كالتالي : في ملف المتحكم : جلب كامل الفئات و تمريرها إلى ملف العرض . public function index(){ $query = $this->db->get('categories'); $data['categories'] = $query->result(); $query = $this->db->get('products'); $data['products'] = $query->result(); $this->load->view('categories_view' ,$data); } في ملف العرض , عرض كامل الفئات : <?php foreach($categories as $c):?> <div> <label for="cat_<?php echo $c['id']; ?>"> <?php echo $c['name']; ?> </label> <input type="checkbox" id="cat_<?php echo $c['id']; ?>" value="<?php echo $c['id']; ?>"> </div> <?php endforeach;?> مرفقة بكامل المنتجات : <?php foreach($products as $p):?> <div class="product c_<?php echo $p['category_id']; ?>"> <h2><?php echo $p['name']; ?></h2> </div> <?php endforeach;?> ثم لنقم بإضافة التفاعلية التي تقوم بعمل التالي : عند تحديد أي مربع تحقق يتم تخزين قيمته و تحديدها . يتم إخفاء كامل المنتجات . يتم إظهار تلك التي تمتلك صنفا كالتالي : [c_[category_id . مثال عملي : عند تحديد مربع تحقق الفئة بالعنوان "ملابس رجال" يتم تخزين القيمة 5 و تحديدها . يتم إخفاء كامل المنتجات . يتم إظهار تلك التي تمتلك صنفا كالتالي : c_5 . ستفي الشيفرة التالية بذات الغرض : $("input[type='checkbox']").change(function() { if(this.checked) { let target_id = $(this).val(); $('product_container').hide(); $('c_' + target_id).show(); } }); بيانات غير محدودة سنضطر في هذا إلى إخفاء كامل العناصر (المنتجات مثلا) , و إظهار كامل الفئات : لنقم بتغيير محتوى ملف المتحكم كالتالي : public function index(){ $query = $this->db->get('categories'); $data['categories'] = $query->result(); $this->load->view('categories_view' ,$data); } public function get_products_of_category(){ $c_id = $this->input->get('category_id'); $query = $this->db->get('products')->where('category_id' ,$c_id); return $query->result(); } على أن يحتوي ملف العرض الهيكلية التالية : <?php foreach($categories as $c):?> <div> <label for="cat_<?php echo $c['id']; ?>"> <?php echo $c['name']; ?> </label> <input type="checkbox" id="cat_<?php echo $c['id']; ?>" value="<?php echo $c['id']; ?>"> </div> <?php endforeach;?> <div id="products_container" ></div> سنحتاج الان تعديل التفاعلية لتصبح كالتالي : عند تحديد أي مربع تحقق يتم تخزين قيمته و تحديدها . يتم حذف أي عناصر لمنتجات تظهر . يتم إرفاق طلبية AJAX لجلب بيانات المنتجات إلى عنوان URL مرفق بمعرف الفئة . مثال عملي : عند تحديد مربع تحقق الفئة بالعنوان "ملابس رجال" يتم تخزين القيمة 5 و تحديدها . يتم حذف أي عناصر لمنتجات تظهر و ذلك تجنبا لإضافة أي بيانات لا تهم الفئة الحالية . يتم إرفاق طلبية AJAX لجلب بيانات المنتجات إلى العنوان التالي : https://domain.info/categories/5/products عند نجاح الطلبية , يتم عرض كامل المنتجات التي تم جلبها داخل حاوي المنتجات . يترجمه : $("input[type='checkbox']").change(function() { if(this.checked) { let target_id = $(this).val(); $('#products_container').empty(); $.get("https://domain.info/categories/"+ target_id +"/products", function(data, status){ data.forEach(function(item){ $('#products_container').append('<h2>'+ item['title'] +'</h2>'); }); }); } }); و بالطبع سيجب تعريف المسارات اللازمة في ملف routes.php و إرفاقها بالمتحكمات و التوابع المتعلقة بها . سيمكن تخصيص العملية أكثر و جعلها عملية أكثر , كأن يتم إضافة حاو لكل منتج , و طباعة إسم المنتج بجانب غلافه و تخصيص تصميم هذا الحاو و غيرها من الأفكار ..
- 6 اجابة
-
- 1
-
يمكنك ذلك عن طريق تشغيل الأمر التالي مباشرة : passwd root أو : sudo passwd root سيطلب منك طباعة كلمة مرورك القديمة و الجديدة مع تكرار هاته الأخيرة للتأكيد . قم بعد ذلك بتقديم الطلب و ستظهر لك رسالة لطيفة تخبرك بنجاح تحديثها كالتالي : passwd: password updated successfully
- 3 اجابة
-
- 1
-
بالضبط , هذا ما تم الإشارة إليه سابقا في : أما عن المقصود بتوثيق طلبات الدفع , فهي تلك المسائلة البسيطة التي يطلب منك فيها اسم المستخدم و كلمة المرور عند تنفيذ الأمر : git push -u origin main ففي حالة فشل هاته المصادقة لن يتم رفع -يستحسن اللفظ دفع- ملفات المشروع إلى غيتهب . يرجى الإنتباه جيدا إلى الخطأ الذي يظهر و التصرف بناء عليه . يمكنك التخلص من المشكلة بإتباع الخطوات التالية : تحديث : يرجى الملاحظة جيدا أنه لا يوجد لديك أي مستودع على الرابط : https://github.com/najah18/cof.git في حين أنه يتوفر و بشكل عادي على : https://github.com/najah18/coffee.git يرجى التأكد جيدا من توفر المستودع على الرابط المضاف أولا . يمكن أن يسبب هذا ذات المشكلة .
-
يحتمل أنك قد قمت بنسيان تنفيذ أحد الأوامر على نحو صحيح , كما أنه يلحظ سلوك مشابه في حالة الخطأ في إضافة رابط المستودع البعيد هلا تأكدت أولا من إصلاحها بتنفيذ الأمر التالي : git remote remove origin git remote add origin https://github.com/najah18/ecommerce.git git push -u origin main كما أنه مهم جدا إضافة اللاحقة git. مثلما ما هو موضح . إذ لم ينجح الأمر يرجى إعادة تنفيذ كافة الأوامر على نحو صحيح , و تتبع أي خطأ يظهر بأية مرحلة . هلا قمت بتنفيذ هاته الأوامر : git init git add . git commit -m "init commit" git push -u origin main و إخباري بأي أخطاء تظهر مع الإشارة إلى المرحلة أو الأمر الذي أظهر نص الخطأ . يحتمل أيضا أنك لم تقومي بتجاوز عملية توثيق طلب الدفع عند تنفيذ الأمر : git push -u origin main مما أظهر خطأ كالتالي مع اخر الأوامر : remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. و هذا لأن طريقة توثيق طلبات الدفع عن طريق كلمة مرور حساب غيتهب قد تم التخلي عنها , و تم إستبدالها بتوكن للوصول يستعمل عند طلب كلمة المرور في توثيق الطلب عوضا عن كلمة سر الحساب . يمكنك إنشاء توكن كالتالي : الذهاب إلى الإعدادات Settings. // // إعدادات المطور Developer Settings . // // توكن وصول شخصي Personal Access Token . الضغط على توليد توكن Generate New Token . ملئ النموذج . الضغط على توليد توكن Generate token . نسخ التوكن الظاهر و الإحتفاظ به , و إستعماله في عملية توثيق الطلب عند تنفيذ الأمر : git push -u origin main