محمد صقر3
الأعضاء-
المساهمات
47 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد صقر3
-
يمكن تغير قمية المتغير NODE_ENV من ملف package.json كالتالي لو نظام التشغيل ويندوز "scripts": { "start-prod": "SET NODE_ENV=production & node index.js", "start-dev": "SET NODE_ENV=development & node index.js" }, لو نظام التشغيل لينكس "scripts": { "start-prod": "NODE_ENV=production & node index.js", "start-dev": "NODE_ENV=development & node index.js" }, ثم لتشغيل في ال production npm run start-prod او في development mode npm run start-dev
- 2 اجابة
-
- 1
-
لأستخدم environment variables تحتاج لتسطيب dotenv package npm install dotenv --save ثم تقوم بالوصل إلي المتغيرات داخل ملف .env كالتالي // تقوم بإستدعاء dotenv package require('dotenv').config(); // ثم للحصول قيمة ال port const PORT = process.env.PORT // 3000 بفرض ان ملف .env يحتوي علي PORT // .env file conten PORT=3000
- 3 اجابة
-
- 1
-
لأنه دائما قيمة ال modal تاخد اول قيمه تحتاج عند الضغط علي زر المزيد تقوم بتمرير بيانات الصف اللي تم الضغط عليه مع هذا الرابط وباستخدام الجافا سكربيت او JQuery تقوم بالحصول علي القيم الخاصه بهذا الصف وتحديث قيم ال modal هل تستخدم ملفات جافاسكربت للقيم بهذه الوظيفه يمكنك إضافتها مع الكود لمعرفة الخطاء وإذا ما بتستخدم تحتاج تضيف هذا الشيء هنا تقوم بتمرير الداتا الخاصه بكل صف مع زرار المزيد //الجدول echo' <tr class="table-light" align="center"> <th scope="row">' . $row['id'] . '</th> <td >' . $row['facory'] . '</td> <td>' . $supplying_data . '</td> <td align="center"> // هنا تقوم بتمرير factory, id, supllying_data مع هذا الرابط <button class="btn btn-outline-primary m-auto mt-2 more" data-factory="<?php echo $row['facory']; ?>" data-id="<?php echo $row['id']; ?>" data-supllying="<?php echo $supplying_data; ?>" data-toggle="modal" data-target="#more">عرض المزيد</button> <!-- زر التعديل --> <a href="edit_supplier.php?id=' . $row['id'] . '" target="_blank"></a> <button type="button" class="btn btn-primary">تعديل</button> <!-- زر الحذف --> <button type="button" class="btn btn-danger">حذف</button> </td> </tr>'; } ?> ثم تقوم باستخدام JQuery لتحديث قيم العناصر في ال modal بعد اعطاء id للعناصر ال modal <th class="text-center" id="factory"> <?php echo $factory; ?> </th> supplying data <div class="dropdown" id="suplying-data"> <?php echo $supplying_data; ?> </div> $(document).on("click", ".more", function (e) { e.preventDefault(); var that = $(this); const factory = that.data('factory'); const suplying = that.data('suplying'); $("#factory").val(factory); $("#suplying-data").val(suplying); $(that.attr('href')).modal('show'); });
-
العدد الزوجي هو العدد باقي قيسمته علي 2 يساوي صفر 6 % 2 باقي القسمه يساوي 0 وهي 6 / 2 = 3 وباقي القسمه صفر 7 % 2 باقي القسمه يساوي 1 وهي 7 / 2 = 3 وباقي القسمه 1 لان 2 * 3 = 6 مش 7 #include <iostream> using namespace std; // تعريف طول وعرض المصفوفات كثوابت #define WIDTH 3 #define HEIGHT 3 int main() { // تعريف مصفوفه بقيم مختلفه int SweetArray[WIDTH][HEIGHT] = { {1,2,3}, {4,5,6}, {7,8,9} }; // طباعة الاعداد الزوجيه cout<<"Even Numbers:\n"; for(int i = 0; i < WIDTH; i++) for(int j = 0; j < HEIGHT; j++) // العدد زوجي إذا كان باقي قيسمته علي 2 يساوي صفر // 6 % 2 = 0 زوجي // 7 % 2 = 1 فردي if(SweetArray[i][j] % 2 ==0) cout<<SweetArray[i][j]<< " "; cout<<"\n"; return 0; }
- 1 جواب
-
- 1
-
لجمع اكتر من martix وحسب المتوسط لابد أن يكون لهم جميعا نفس الطول و العرض هذا مثلا لجمع 5 مصفوفات 2 * 2 وحساب المتوسط في مصفوفه جديده 2 * 2 #include <iostream> using namespace std; // تعريف طول وعرض المصفوفات كثوابت #define WIDTH 2 #define HEIGHT 2 int main() { // تعريف خمس مصفوفات بقيم مختلفه int arr1[WIDTH][HEIGHT] = {{1,2}, {3,4}}; int arr2[WIDTH][HEIGHT] = {{6,3}, {4,5}}; int arr3[WIDTH][HEIGHT] = {{4,2}, {8,4}}; int arr4[WIDTH][HEIGHT] = {{10,12}, {13,14}}; int arr5[WIDTH][HEIGHT] = {{2,5}, {22,20}}; int result[WIDTH][HEIGHT] = {}; // حساب المتوسط مجموع كل عنصر علي ما يقابله في المصفوفات الاخري مقسوم بعدد المصفوفات // (arr1[0][0] + arr2[0][0] + arr3[0][0] + arr4[0][0] + arr5[0][0]) / 5 => 4 for(int i = 0; i < WIDTH; i++) for(int j = 0; j < HEIGHT; j++) result[i][j] = (arr1[i][j] + arr2[i][j] + arr3[i][j] + arr4[i][j] + arr5[i][j]) / 5; // طباعة مصفوفة النتيجه cout<<"Result: \n"; for(int i = 0; i < WIDTH; i++){ for(int j = 0; j < HEIGHT; j++) { cout<<result[i][j]<<" "; } cout<<"\n"; } return 0; } الناتج: Result: 4 4 10 9
- 4 اجابة
-
- 1
-
ممكن تراجعي العدد علي طول نعد عدد ال rows اللي بتحتوي الكود المعين إذا ما بنحتاج نستخدم ال codes في حاجه تانيه // نستخدم دالة ال count $query="SELECT count(code) FROM types WHERE code =:$code "; $query_res=$conn->query($query); // نستخدم دالة fetchColumn // بترجع string -> cast to int $count= (int) $query_res->fetchColumn();
-
#include <iostream> using namespace std; // نقوم بتعريف ثوابط بطول وعرض المصفوفه #define WIDTH 5 #define HIGHT 3 int main() { // 2D Matrix نعرف المصفوفه ونعطيها ارقام عشوائيه float SweetClass[WIDTH][HIGHT] = { {1, 2, 3.0}, {6, 7, 8.20}, {11, 12, 13}, {10.2, 5, 3.2}, {12, 1.2, 5.6} }; // 1D matrix نعرف مصفوفه بقيمه فارغه float MTRX[WIDTH * HIGHT] = {}; // نقوم بدوران حول المصفوفه طول وعرض ووضع القيمه في مصفوفة النتيجه for(int i = 0; i < WIDTH; i++) for(int j = 0; j < HIGHT; j++) // نقوم بحساب مكان العنصر في مصفوفة النتيجه كالاتي i * HIGHT + j // 0 * 3 + 0 = 0; 0 * 3 + 1 = 1; 0 * 3 + 2 = 2 // 1 * 3 + 0 = 3; 1 * 3 + 1 = 4; 1 * 3 + 2 = 5 MTRX[i * HIGHT + j] = SweetClass[i][j]; // نقوم بطباعة مصفوفة النتيجه for(int i = 0; i < WIDTH * HIGHT; i++) cout<<MTRX[i]<<" "; cout<<"\n"; return 0; }
- 1 جواب
-
- 2
-
يمكن أن تستخدم Laravel API Resource لإنشاء resource ويتم إنشاء ملف ExampleResource داخل مجلد app\Http\Resources php artisan make:resource ExampleResource افتح الملف وقم بعمل التعديل المطلوب <?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; class ExampleResource extends JsonResource { /** * Transform the resource into an array. * * @param \Illuminate\Http\Request $request * @return array */ public function toArray($request) { return [ "id": $this->id, "name": $this->name, "age": $this->age, "type": ($this->type == 0) ? "admin" : "user" ]; } } ثم تقوم بتمرير ال object or collection ل resource // في حالة عنصر واحد return new ExampleResource(Example::findOrFail($id)); // في حالة اكتر من عنصر return ExampleResource::collection(Example::all();
- 2 اجابة
-
- 1
-
// تسطيب حزمة ال ui composer require laravel/ui --dev php artisan ui vue --auth // install and compile node modules dependency npm install npm run dev البديل هو تسطيب حزمة ال laravel/ui
-
ما عندي علم إذا متوفر بالعربي أو لا بس كل الفكره أن الكتب تستغرق وقت طويل لكي يتم نشر كتاب جديد وترجمته للعربي تستغرق وقت ومع تطوير السريع للتكنولوجيا وجود كتاب بأحدث الاصدرات سيتغرق وقت يمكنك مشاهدة الدورة ثم بعد ذلك الإطلاع علي المزيد من المصادر التابعه دائما ما تحدث قبل أي أصدار جديد هنا هذا لا يغني عن قراء الكتب والتي تكون مفصله اكتر وتزيد فهمك للموضوع المراد سواء كانت كتب لارفال أو غيرها
- 2 اجابة
-
- 1
-
يحتوي الكود علي مجموعة أخطاء سأوضح لك وسأضع الكود الصحيح كامل بعد توضيح الأخطاء نوع الداتا اللي بترجعها الداله هو string وليس int والثاني هو لكي تسطيع الكتابه في مصفوفة ال outputArray لا يجب أن تكون const ماتحتاج ل const int arrayConvert(int inputArray[], const char outputArray[], int size) تعمل check علي عنصر في المصفوفه inputArray[i] ما علي المصفوفه ككل if ((inputArray >= 0) && (inputArray < 128)) ماتحتاج إلي for loop إذا القيمه ما صحيح ضع علامة ال . داخل ال outputArray مباشرة for (int i = 0; i< size; i++) outputArray[i] = '.'; break; هنا جملة ال return "valid" او return "invalid بتنهي الدالة ما هيوصل في تنفيذ الكود إلي جملة ال return outputArray التي تليها الأمر الثاني ماتحتاج تعمل return outputArray لأنها array وبتكون في الدالة ب passed by refrence وبالتالي عند أستدعاء الداله وإعطاءها outputArray ستقوم c++ بوضع الناتج داخل المصفوفه التي قمت بإعطاءه للداله if (validity) return "Valid"; return outputArray[]; else return "Invalid"; return outputArray[]; الكود بعد تعديل مجموعة الأخطاء #include <iostream> using namespace std; #define SIZE 5 string arrayConvert(int inputArray[], char outputArray[], int size) { bool validity = true; for (int i = 0; i< size; i++){ if ((inputArray[i] >= 0) && (inputArray[i] < 128)) outputArray[i] = (char)inputArray[i]; else{ validity = false; outputArray[i] = '.'; } } if (validity) return "Valid"; else return "Invalid"; } int main() { int inputArray[SIZE] = {109,110,200,118,230}; char outputArray[SIZE]; string result = arrayConvert(inputArray, outputArray, SIZE); cout<<"outputArray: "; for(int i = 0; i < SIZE; i++) cout<<outputArray[i]<<" "; cout<<"\nResult is " << result <<"\n"; return 0; }
-
#include <iostream> using namespace std; // نعرف ثابت من 50عنصر #define SIZE 50 int main() { // نعرف مصفوفه للعناصر بمقدار الثابت أي 50 عنصر int arr[SIZE]; // نعرف متغيرين بقيمه افتراضيه صفر لعد عدد العناصر الأكبر من الصفر والأصغر int negativeNumbers=0, positiveNumbers = 0; // نقوم بإدخال العناصر في المصفوفه بإستخدم ال for loop for(int i = 0; i < SIZE; i++) { cin>>arr[i]; } // نقوم بالدوارن علي عناصر المصفوفه وحساب ما إذا كان العدد أكبر من الصفر أو أصغر for(int i = 0; i< SIZE; i++) { // الاعداد السالبه الأقل من الصفر // negativeNumbers = negativeNumbers + (arr[i] < 0) // إذا كان العدد أقل من الصفر تكون قيمة هذا الجزء 1 ويضيف قيمته إلي negativeNumbers // وإذا كانت صفر لن توثر علي قيمة المتغر عند جمعه // مثلا إذا قيمة arr[i] = 5 // negativeNumbers = negativeNumbers + (5 < 0) = 0 // negativeNumbers = negativeNumbers + 0 // positiveNumbers = positiveNumbers + (5 > 0) = 1 // positiveNumbers = positiveNumbers + 1 negativeNumbers += (arr[i] < 0); positiveNumbers += (arr[i] > 0); } // نطبع عدد الاعداد الموجبه والسالبه cout<<"negativeNumbers count: " << negativeNumbers <<"\n"; cout<<"positiveNumbers count: " << positiveNumbers <<"\n"; return 0; } ويمكن تنفيذ الجزء الخاص بمعرفة عدد الأعداد الأكبر والأصغر من الصفر بأستخدم if condtions for(int i = 0; i< SIZE; i++) { // إذا قمية العنصر أكبر من الصفر نزيد قمية positiveNumbers بمقدار واحد if(arr[i] > 0) positiveNumbers++; // وإذا كان قمية العنصر أقل من الصفر نزيد قمية ال negativeNumbers بمقدار واحد else if(arr[i] < 0) negativeNumbers++; }
-
للحصول علي أكبر الأعضاء يمكنك ترتيب الأعضاء من الأكبر إلي الأصغر والحصول علي أول عضو للحصول علي أصغر الأعضاء يمكنك ترتيب الأعضاء من الأصغر إلي الأكبر والحصول علي أول عضو // أكبر الأعضاء SELECT column_name_1, column_name_2, ..., column_name_n FROM table_name WHERE condition_expression ORDER BY birth DESC; LIMIT 1 // أصغر الأعضاء SELECT column_name_1, column_name_2, ..., column_name_n FROM table_name WHERE condition_expression ORDER BY birth ASC; LIMIT 1
- 3 اجابة
-
- 1
-
يمكنك إضافة ال middlewares داخل constructor in controller // إضافة auth to index route only $this->middleware('auth', ['only' => ['index']]); // إضافة edit_invoice for edit invoide $this->middleware('edit_invoice', ['only' => ['edit', 'update']]);
- 2 اجابة
-
- 2
-
ربما المشكله في حقل البيانات الذي تقوم بتخزين البيانات فيه إذا كان من نوع char وعدد معين من الحروف سيقوم بتخزين اقصي قيمه له وإهمال باقي الحروف يمكن استخدم Text, LongText نوع الحقل الذي تقوم بتخزين البيانات فيه علي حسب قاعدة البيانات المستخدمه إذا بتستخدم لارفال ممكن تستعمل longtext Schema::table('table_name ', function (Blueprint $table) { $table->longText('column_name'); });
-
يمكنك أستخدم بعض البرامج مثل ngrok ويقوم بتشغيل جهازك المحلي كسيرفر قم بتنزيل البرنامج النسخه المناسبه لنظم التشيغل ويندوز و لينكس وماك فك الضغط عن البرنامج ثم الذهاب إلي مكان البرنامج وفتح command line, or teminal قم بتشغيل مشروعك علي بورت 3000 ثم قوم بتشغيل ngrok on port 300 // يظهر الأوامر التي يمكن أستخدمها في ngrok ./ngrok help // لتشغيل ngrok on port 300 ./ngrok http 3000 بعد تنفيذ الامر أستخدم اللينك الذي يقوم البرنامج بإنشاءه بدل من http://localhost:3000
-
الوقت نسبي بمعني يعتمد علي الوقت اللي مخصص للدراسه وكمان علي الشخص وطريقة تفكيره وإذا كان لديه سابق معرفه عن مجال الدراسه وهكذا ما في وقت محدد لكل الناس تختلف من شخص لأخر
- 3 اجابة
-
- 1
-
لأن هذا السطر يقوم بإرجاع اوبجكت من نوع Query Builder وليس Array or Collection $emails = $user->emails()->where(['verified' => true]); ولكي يكون الناتج array or collection تحتاج إلي استخدام ال get() function وممكن إذا كنت تريد أعمده معينه يمكن أن تعطيها لل get function as array of columns // تقوم بإرجاع كل الداتا الخاصه باالإيميلات $emails = $user->emails()->where(['verified' => true])->get(); // لكي تقوم بإرجاع أعمده معينه وليس كل الداتا // مثلا id, email فقط $emails = $user->emails()->where(['verified' => true])->get(['id', 'email']);
- 4 اجابة
-
- 2
-
قمت بتحميل الكود وفحصه تبين وجود خطاء في اسم ال controller // هنا يوجد خطاء في اسم UserConroller Route::group(['middleware' => ['auth']], function() { Route::get('user/profile', [UserConroller::class, 'edit']); }); // فقط قم بتعديل اسم ال controller => UserConroller Route::group(['middleware' => ['auth']], function() { Route::get('user/profile', [UserConroller::class , 'edit']); }); وبعد تصليح هذا الخطاء هناك خطاء اخر في ملف profile.blade.php وهي أن دالة asser غير موجوده والمفترض أن تكون asset وتاخذ ب paramater من نوع string <img src="{{asset('images/avatar' . $user->avatar)}}" class="w3-cercle" style="size: 255px">
-
يمكنك تشفير ال id في دالة ال edit ويكون مشفر وتضع قيمته المشفره ك hidden input و عندما تقوم بعمل form submit قم بفك التشفير عن ال id واستخدامه <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Crypt; class UserController extends Controller { public function edit(Request $request, $id) { $encryptedId = Crypt::encryptString($id); .... } // يكون ال id مشفر public function update(Request $request, $id) { $userId = Crypt::decryptString($id); .... } }
- 3 اجابة
-
- 1
-
ما تحتاج إلي أستخدم دالة ال find يمكن الحصول علي المستخدم من دالة user() $user = auth()->user(); هذا الرابط محمي بال auth middleware أي لابد أن يقوم المستخدم بتسجيل الدخول لكي يستطيع الوصول إلي هذا الرابط // الرابط محمي بال auth middleware Route::group(['middleware' => ['auth']], function() { Route::get('user/profile', [UserConroller::class, 'edit']); });
-
إذا ممكن بتوضح أكثر بتضيف الكود اللي بيه مشكله بحيث نقدر نساعدك
-
تقوم بإنشاء حساب في الجيت هب ثم تقوم بإنشاء مشروع جديد علي حساب الجيت هب تقوم فتح cmd نافذة الأوامر في الويندوز او terminal في لينكس في مكان ملفات المشروع الذي تريد رفعه علي الجيت هب قم بإنشاء مشروع جيت عن طريق الأمر git init ثم تقوم بإضافة الملفات إلي مشروع الجيت بالأمر التالي git add . ثم تضيف رسالة عن التغير أو التعديل أو الإضافة التي قمت بيها في المشروع بالأمر التالي git commit -m "commit message" ثم تقوم بإنشاء branch جديد git branch -M main ثم تقوم بربط المشروع علي جاهزك المحلي بالمشروع الذي قمت بإنشاءه علي الجيت هب بالأمر التالي git remote add origin https://github.com/github-username/repo-name.git ثم تقوم برفع مشروعك من الجهاز المحلي إلي الجيت هب git push -u origin main ويمكنك أستخدام برنامج مثل Github Desktop بدل من أستخدم ال cmd
- 6 اجابة
-
- 1