-
المساهمات
3552 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
34
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو سمير عبود
-
هل تقصد دروس و مقالات مكتوبة أم دروس دورة أم ماذا ؟ هناك عدة مقالات في الأكاديمية تشرح عن خاصية الصندوق المرن او flex box منها: تعرف على CSS Flexbox وأساسيات استعماله لهيكلة صفحات الويب أساسيات Flexbox في CSS مع أمثلة عملية أمثلة نموذجية لاستخدام flexbox في CSS3 و بإمكانك الوصول لعدة مقالات أخرى بمجرد البحث من خلال نموذج البحث، الرجاء التوضيح أكثر حتى نستطيع مساعدتك.
-
React Native هو عبارة عن اطار عمل لبرمجة تطبيقات أصيلة عن طريق الجافاسكربت وذلك باعادة استعمال المكونات الطبيعية للمنصة. هذا الاطار يمكن من انشاء تجربة المستخدم دات مستوى عالي عن طريق ادوات برمجية تعتمد على javascript و مكتبة React و هو مدعوم من طرف فيسبوك. الهدف من استخدام React Native هو تسهيل عمل المطورين عبر جميع منصات الهواتف بشعار — تعلم مرة واحدة واكتب في كل مكان. فتعلمك لهذه التقنية سيمكنك من برمجة تطبيقات لكل من أندرويد و iOS، يُمكنه التعامل مع firebase، التعامل مع الواجهات البرمجية ( APIs ) و خدمات الويب. قبل تعلم React Native تعلم أسس البرمجة بلغة جافاسكربت ثم تعلم مكتبة React لأنها ستُساعدك كثيراً في تعلم React Native.
- 2 اجابة
-
- 1
-
اعتقد أن المشكلة تكمن في تفعيل حسابك باي بال لأنه بعد ربط الحساب ببطاقة إئتمانية سيقوم باي بال بالتأكد من ملكيتك للبطاقة من خلال استقطاع مبلغ 1.95 $ من بطاقتك الائتمانية، يجب توفير 2 $ كحد أدنى في بطاقتك، ولا تقلق سيعاد لك المبلغ لاحقا بعد انتهاء عملية التأكيد. بعد إتمام عملية استقطاع المبلغ عليك الذهاب لموقع البنك الخاص بك والتأكد من كشف الحساب لبطاقتك الائتمانية والحصول على رمز التأكيد المكون من أربع أرقام والذي سيكون مكتوب في بيانات عملية الشراء. بعد الحصول على رمز التفعيل تعود لحسابك في باي بال وتضغط على المحفظة في القائمة، ثم تختار بطاقتك الائتمانية المراد تأكيدها، وادخل الرمز المكون من 4 أرقام وانقر على تأكيد. بعد تأكيد البطاقة سيفعل حسابك بشكل كامل. تذكر انه يُمكنك دائما التواصل مع الدعم الفني في كل من باي بال و مستقل لحل المشكلة.
- 2 اجابة
-
- 1
-
مرحباً معتز، يوجد لديك خطأ في تعريف المتحكم: class UserConroller extends Controller // الصواب class UserController extends Controller في صفحة العرض profile يوجد خطأ أيضاً: <img src="{{asser(images/avatar).$user->avatar}}" class="w3-cercle" style="size: 255px"> {{-- الصواب --}} <img src='{{asset("images/avatar/$user->avatar")}}' class="w3-cercle" style="size: 255px"> كما أنك في حالة إنشاء مستخدم جديد سيأخذ الصورة default.png لكن إسم الصورة لديك في المجلد هو avatar.png يجب تغييرها لنفس الإسم حتى تظهر الصورة الإفتراضية في حالة عدم وضع صورة. ملاحظة: هذا القسم هو للأسئلة العامة و ليس لأسئلة الدورات فإن واجهتك أي مشكلة أو إستفسار يُستحسن طرحه أسفل الدرس و سيُتابع معك المدربين هناك. بخصوص الإصدارات الخاصة بلارافيل فلا يوجد فرق كبير بينها و من الأفضل لك التعرف على عدة طرق لعمل شيء ما. كما أن الأكاديمية تقوم بتحديث و إضافة مسارات جديدة في العديد من الأوقات. و من المؤكد أنهم سيأخذون ملاحظاتك كلها بعين الإعتبار في تحديثاتهم المستقبلية. كما أن معالجة الأخطاء شيء مهم و هي ما ستزيد في خبرتك و تطوير مستواك. بالتوفيق.
-
ليس هناك شيء مميز في الأمر فكل من vs code و android studio أدوات يستخدمها المطورون و ما دمت مرتاح مع أحدها في التطوير فيكفيك ذلك، هناك شيء و هو أن برنامج android studio به الكثير من الخصائص و يستهلك موارد الجهاز بشكل كبير من ذاكرة عشوائية و ما إلى ذلك فالتطوير على اندرويد ستوديو يتطلب جهاز بمواصفات أعلى بعكس vs code الذي حتى لو كان جهازك متوسط نسبيا تستطيع التطوير من خلاله.
- 8 اجابة
-
- 1
-
بعد تثبيت البرنامج قومي بتسجيل الدخول الى حسابك ثم من خلال قائمة file اختاري add local repository بعد ذلك حددي مجلد المشروع الخاص بك لفتحه على البرنامج ثم ستتمكنين من رفع ملفاتك
-
يُمكنك إستخدام برنامج GitHub Desktop
-
هذه هي الطرق المُستعملة في حل هذه المُشكلة، نحن لحد الآن لا نعلم إن كنت تُطبقين الخطوات بشكل سليم أم لا، الرجاء رفع صور لما تقومين به، حتى نعلم كيف نُساعدك.
-
هناك عدة لغات أخرى على غرار لغة دارت ليس لها تصنيف في قسم البرمجة و السبب أننا لم نقم لحد الساعة بنشر مقالات في هذه اللغة إذا ما قررت الأكاديمية في المستقبل نشر مقالات متخصصة في هذه اللغة فستجد لها تصنيف حيث يُمكنك الوصول إلى مقالاتها من خلاله.
-
يُمكنك إنشاء قاموس بقيم إبتدائية بهذا الشكل: my_dict = {"foo": 1, "bar": 34} print(my_dict) # {'foo': 1, 'bar': 34} أما إن أردت إنشاء قاموس بالإعتماد على قاموس آخر لنفترض أنه لديك هذا القاموس: my_dict = {"foo": 1, "bar": 34, "baz": 15} و تريد إنشاء قاموس ثاني من القاموس الأول يحتوي فقط على القيم الفردية يُمكنك ذلك من خلال: my_dict = {"foo": 1, "bar": 34, "baz": 15} new_dict = {k: v for (k, v) in my_dict.items() if v % 2 != 0 } print(new_dict) و هذا هو الخرج: {'foo': 1, 'baz': 15}
-
لنفترض أنه لديك اسم الملف على شكل سلسلة نصية بهذا الشكل: example.jpeg للحصول على اللاحقة نقوم بتحويل السلسلة إلى مصفوفة بإستعمال الدالة split و تمرير مُحدد الفصل المحرف "." حتى يتم الفصل على أساسه. و بالتالي يُصبح لدينا مصفوفة مكونة من عنصرين example و jpeg. ['example', 'jpeg'] و لإستخراج اللاحقة من هذه المصفوفة نجلب آخر عنصر أي الموجود في الفهرس -1 بهذا الشكل: filename = "example.jpeg" extension = filename.split(".")[-1] print(extension) #jpeg
-
إذا كنت تقوم بتحديث composer إنطلاقاً من الإصدار الأول فسيظهر لك تنبيه أن هناك إصدار أعلى مُتاح و هو الإصدار الثاني يُمكنك الترقية إلى هذا الإصدار عن طريق الأمر: composer self-update --2 كما يُمكنك معرفة رقم الإصدار عن طريق الأمر: composer -V للرجوع إلى إصدار سابق يُمكنك تنفيذ الأمر: composer self-update --rollback
- 2 اجابة
-
- 1
-
لا أعتقد أن هناك إمكانية لحذف عرض قمت بتقديمه على مشروع فبمجرد إضافة عرض لن تستطيع حذفه و سيتم إنقاص عدد العروض المتاحة لك ب 1 و سيتم رفع عدد العروض لك بعد قبول أحد العُروض المقدمة على المشروع او إغلاق ذلك المشروع على ما أعتقد أن مدة إغلاق مشروع ما هي 14 يوم إذا لم يتم قبول أي عرض. بإمكانك أيضاً التعديل على عرض قدمته خلال 15 دقيقة من إضافته، وأيضا إذا قام صاحب المشروع بالتواصل معك عبر الرسائل قبل توظيفك على ذلك المشروع. هناك عدة معلومات أخرى بإمكانك الإطلاع عليها من صفحة: الأسئلة الشائعة
- 6 اجابة
-
- 1
-
كل الدورات التدريبية المقدمة من أكاديمية حسوب عبارة عن دروس مرئية مقسمة على مسارات و كل مسار يحتوي على عدة فصول و كل فصل به عدة دروس مثلا دورة تطوير التطبيقات باستخدام JavaScript تنقسم إلى هذه المسارات أساسيات لغة JavaScript أساسيات React.js أساسيات Node.js تطوير تطبيق جوال باستخدام React Native تطبيق دردشة يشبه WhatsApp و تكون الدروس عبارة عن مقاطع فيديو يُمكنك مُشاهدتها و التطبيق مع المُدرب و إذا واجهتك مشاكل أثناء تطبيقك للدروس توفر الأكاديمية فريق من المدربين يُساعدك في حل مشاكلك و تقديم الدعم لك طيلة تعلمك في الدورة.
- 2 اجابة
-
- 2
-
نعم توثيق الهوية مهم لك و يوفر لك خصائص إضافية حيث أن صاحب العمل سيعرف أن المستقل الذي يتعامل معه حقيقي و يعطيه أريحية أكثر، و أيضاً سيُوفر لك 12 عرض بدل 10 عروض في العادة. صورة السلفي مع الهوية لن تظهر في الحساب الخاص بك و إنما تستخدمها الإدارة للتحقق من أنك مالك لتلك الهوية و ليست لشخص آخر. أظن أنه بإمكانك العمل دون توثيق الهوية لكن لا يُمكنك سحب رصيدك على ما أعتقد حتى توثق حسابك.
-
الدالة toFixed ليست موجهة لعمل تدوير للأعداد و إنما تقوم بعمل format بطريقة fixed point notation و هي تعيد سلسلة نصية و ليس عدد. يُمكنك إستخدام التالي للوصول إلى ما تريد: Number.prototype.round = function(places) { return +(Math.round(this + "e+" + places) + "e-" + places); } // الإستخدام 1.35.round(1); // 1.4 6.35.round(1); // 6.4 52.7785.round(3); // 52.779
- 5 اجابة
-
- 1
-
هناك عدة طرق للوصول إلى ما تريد: إنشاء دالة تقوم بذلك بهذا الشكل: def del_all(mapping, to_remove): for key in to_remove: del mapping[key] ثم نستخدمها: sampleDict = { "name": "kelly", "age": 25, "salary": 80000, "city" : "New yourk" } keysToRemove = ['name' , 'salary'] def del_all(mapping, to_remove): for key in to_remove: del mapping[key] del_all(sampleDict, keysToRemove) print(sampleDict) إستعمال: all(sampleDict.pop(k) for k in keysToRemove) بهذا الشكل: sampleDict = { "name": "kelly", "age": 25, "salary": 80000, "city" : "New yourk" } keysToRemove = ['name' , 'salary'] all(sampleDict.pop(k) for k in keysToRemove) print(sampleDict) إستعمال: all(map(sampleDict.pop, keysToRemove)) بهذا الشكل: sampleDict = { "name": "kelly", "age": 25, "salary": 80000, "city" : "New yourk" } keysToRemove = ['name' , 'salary'] all(map(sampleDict.pop, keysToRemove)) print(sampleDict) إستعمال: list(map(sampleDict.pop, keysToRemove)) بهذا الشكل: sampleDict = { "name": "kelly", "age": 25, "salary": 80000, "city" : "New yourk" } keysToRemove = ['name' , 'salary'] list(map(sampleDict.pop, keysToRemove)) print(sampleDict) إستعمال Dict Comprehensions: finalDict = {key: sampleDict[key] for key in sampleDict if key not in keysToRemove} بهذا الشكل: sampleDict = { "name": "kelly", "age": 25, "salary": 80000, "city" : "New yourk" } keysToRemove = ['name' , 'salary'] finalDict = {key: sampleDict[key] for key in sampleDict if key not in keysToRemove} print(finalDict) و كلها تعطي نفس الخرج.
-
منذ الإصدار 3.6 من بايثون أصبح بالإمكان إستخدام f-string هذا مثال عن إستخدامها: name = 'Samir Abboud' print(f"Hello, My name is {name}.") # Hello, My name is Samir Abboud. و في حالتك أيضاً بالإمكان إستخدامها بهذا الشكل: x=[2,45,38,18,12] for i, item in enumerate(x, start=1): print(f"item #{{{i}}}={item}") و هذا هو الخرج:
-
يجب تعريف القاموس بشكل صحيح بهذا الشكل مثلاً: Data = { "Class": "A", "Name": "Manil Isawi", "Mark": { "Physics": 70, "History": 80 } } بعد ذلك بإمكانك الوصول لأي قيمة تريدين فمثلاً إن أردت الوصول للإسم يُمكنك ذلك من خلال: print(Data["Name"]) # Manil Isawi أما إن اردت الوصول لعلامة مادة التاريخ فيُمكنك ذلك من خلال: print(Data["Mark"]["History"]) # 80 بهذا الشكل ككل: Data = { "Class": "A", "Name": "Manil Isawi", "Mark": { "Physics": 70, "History": 80 } } print(Data["Name"]) # Manil Isawi print(Data["Mark"]["History"]) # 80
-
هناك عدة أخطاء حيث أن projects هو عبارة عن مُتغير يتم تمريره من المتحكم: $projects = auth()->user()->projects; في الأخير أنت تنادي على العلاقة projects لكن في النموذج User قمت بتسمية العلاقة ب project لذلك يجب تصحيح ذلك لتُصبح العلاقة: public function projects() { return $this->hasMany(Project::class); } أنت لا تقوم بتحديد ماهو المفتاح الثانوي في العلاقة لذلك يجب أن تحترم العُرف و تقوم بتسميته user_id و ليس users_id و في هذه الحالة لديك طريقتين: تغيير users_id إلى user_id في كل من ملف التهجير: $table->foreignId('user_id')->references('id')->on('users')->onDelete('cascade'); تنفيذ أمر التهجير: php artisan migrate:fresh ثم تغيير الحقل من users_id إلى user_id في مصفوفة fillable في النموذج Project ثم تغيير التابع store في المتحكم ProjectController ليُصبح: <?php public function store(Request $request) { $data = request()->validate([ "title" => 'required', "description" => 'required', ]); $data['user_id'] = auth()->id(); Project::create($data); return redirect('/projects'); } و بهذا الشكل ستعمل. الطريقة الثانية بترك الحقل كما تريد users_id لكن تحتاج إلى تغيير العلاقة بحيث تُحدد المفتاح الثانوي بهذا الشكل: public function projects() { return $this->hasMany(Project::class, 'users_id'); } و بطبيعة الحال تجعل الدالة store بالشكل التالي: <?php public function store(Request $request) { $data = request()->validate([ "title" => 'required', "description" => 'required', ]); $data['users_id'] = auth()->id(); Project::create($data); return redirect('/projects'); }
- 3 اجابة
-
- 2
-
طريقة الإقتطاع كالتالي: x[start:stop:step] # start: فهرس البداية للشريحة ، سيتضمن العنصر في هذا الفهرس و إفتراضياً يكون 0 أي الفهرس الأول # stop: فهرس النهاية للشريحة ، لا يشمل العنصر في هذا الفهرس # step: المقدار الذي يزداد به المؤشر ، يتم تعيينه افتراضيًا على 1. إذا كان سالبًا ، فأنت تقوم بتقسيم العنصر القابل للتكرار في الاتجاه المعاكس. مثلا: x = [1,2,3,4,3,2,3,4] print(x[1:3]) # [2, 3] print(x[-1]) # آخر عنصر في القائمة 4 print(x[-2]) # العُنصر ما قبل الأخير في القائمة 3 print(x[-2:]) # آخر عنصرين في القائمة print(x[:-2]) # كل العناصر ماعدا آخر عنصرين
-
لقد قمت بفتح ملفات مشروعك و لم أجد في صفحة المسارات إلا التالي: Route::get('/', function () { return view('welcome'); }); //Route::get('posts/craete', function () { // return view('posts.craete'); //}); Route::get('/', function () { return view('welcome'); }); فكما تلاحظ يوجد فقط مسار مكرر للصفحة الرئيسية و مسار آخر تم تعليقه و بالتالي لن يعمل هذا المسار. إذا كنت تريد أن يعمل ذلك المسار قم بحذف التعليق و أجعله: Route::get('posts/create', function () { return view('posts.create'); }); لأنه لديك خطأ في كتابة الكلمة create. ثم قم بالذهاب إلى الرابط: posts/create إذا ظهرت معك الصفحة 404 عليك تنفيذ الأمر: php artisan route:clear لحذف الكاش الخاص بالمسارات. أو تنفيذ الأمر: php artisan optimize:clear لحذف كل الكاش. و في هذه الحالة إذا ذهبت إلى الرابط posts/create سيظهر معك الخطأ: View [posts.create] not found. أي أن صفحة العرض غير موجودة و بالتالي عليك إنشاؤها بنفس الإسم create.blade.php بداخل مجلد posts و الذي بدوره يكون داخل مجلد views.
- 3 اجابة
-
- 2
-
يُمكنك عمل ذلك بإستخدام الطريقة التالية: $users = User::withCount(['articles as article_max_price' => function ($query) { $query->selectRaw('max(price)')->where('active', true); }])->get(); كما يُمكنك أيضاً تمرير مصفوفة للتابع withMax بحيث تستطيع عمل التالي للحصول على ما تريد: $users = User::withMax(['articles' => function ($query) { $query->where('active', true); }], 'price')->get();
- 1 جواب
-
- 1
-
نعم يُمكنك تعلم البرمجة مادامت لديك الرغبة و الإرادة في التعلم تحتاج فقط إلى بعض الأبجديات في الرياضيات كالأولوية و العمليات الرياضية و المنطقية ... مجال البرمجة مفيد جدا لأنها ستجعل تفكيرك يتطور و ستُساعدك في حل المشاكل و العراقيل التي تواجهك و كبداية أنصحك بالإطلاع على هذا المقال المُقدم من أكاديمة حسوب الذي سيرشدك و سيُوضح لك الطريق في بداية التعلم: بالتوفيق.