لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 07/14/22 في كل الموقع
-
نلاحظ أن الصنف B عبارة عن خاصية من خصائص الصنف A ( Non Static Nested Classes.) وبذلك حتى تتوفر يتوجب بناء كائن من A ثم من خلاله نقوم بإنشاء كائن من B A a = new A(); // A ننشئ كائن من الـ A.B b = a.new B(); // B ننشئ كائن من الـ يمكن عمل الأمر بخطوة واحدة A.B b = new A().new B(); أما في حال تعريف B كخاصية static أي (Static Nested Classes) يمكن الوصول لها مباشرة بدون إنشاء كائن من A public class A { // A إسمه Outer Class هنا قمنا بتعريف static class B { // B إسمه Nested Class هنا قمنا بتعريف } } ويصبح إنشاء الكائن B: A.B b = new A.B(); // b إسمه A الموجود بداخل الكلاس B هنا قمنا بإنشاء كائن من الكلاس2 نقاط
-
الإصدار 1.0.0
116464 تنزيل
سطع نجم لغة البرمجة بايثون في الآونة الأخيرة حتى بدأت تزاحم أقوى لغات البرمجة في الصدارة وذاك لمزايا هذه اللغة التي لا تنحصر أولها سهولة كتابة وقراءة شيفراتها حتى أصبحت الخيار الأول بين يدي المؤسسات الأكاديمية والتدريبية لتدريسها للطلاب الجدد الراغبين في الدخول إلى مجال علوم الحاسوب والبرمجة. أضف إلى ذلك أن بايثون لغةً متعدَّدة الأغراض والاستخدامات، لذا فهي دومًا الخيار الأول في شتى مجالات علوم الحاسوب الصاعدة مثل الذكاء الصنعي وتعلم الآلة وعلوم البيانات وغيرها، كما أنَّها مطلوبة بشدة في سوق العمل وتعتمدها كبرى الشركات التقنية. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن بني هذا العمل على كتاب «How to code in Python» لصاحبته ليزا تاغليفيري (Lisa Tagliaferri) وترجمه إلى العربية محمد بغات وعبد اللطيف ايمش، وحرره جميل بيلوني، ويأتي شارحًا المفاهيم البرمجية الأساسية بلغة بايثون، ونأمل في أكاديمية حسوب أن يكون إضافةً نافعةً للمكتبة العربيَّة وأن يفيد القارئ العربي في أن يكون منطلقًا للدخول إلى عالم البرمجة من أوسع أبوابه. رُبط هذا الكتاب مع توثيق لغة بايثون في موسوعة حسوب لتسهيل عملية الاطلاع على أي جزء من اللغة مباشرة وقراءة التفاصيل باللغة العربية. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «المرجع الشامل إلى تعلم لغة بايثون»، أو مباشرةً من الآتي: المقال الأول: دليل تعلم بايثون اعتبارات عملية للاختيار ما بين بايثون 2 و بايثون 3 المقال الثاني: تثبيت بايثون 3 وإعداد بيئتها البرمجية المقال الثالث: كيف تكتب أول برنامج لك المقال الرابع: كيفية استخدام سطر أوامر بايثون التفاعلي المقال الخامس: كيفية كتابة التعليقات المقال السادس: فهم أنواع البيانات المقال السابع: مدخل إلى التعامل مع السلاسل النصية المقال الثامن: كيفية تنسيق النصوص المقال التاسع: مقدمة إلى دوال التعامل مع السلاسل النصية المقال العاشر: آلية فهرسة السلاسل النصية وطريقة تقسيمها المقال الحادي عشر: كيفية التحويل بين أنواع البيانات المقال الثاني عشر: كيفية استخدام المتغيرات المقال الثالث عشر: كيفية استخدام آلية تنسيق السلاسل النصية المقال الرابع عشر: كيفية إجراء العمليات الحسابية المقال الخامس عشر: الدوال الرياضية المضمنة المقال السادس عشر: فهم العمليات المنطقية المقال السابع عشر: مدخل إلى القوائم المقال الثامن عشر: كيفية استخدام توابع القوائم المقال التاسع عشر: فهم كيفية استعمال List Comprehensions المقال العشرون: فهم نوع البيانات Tuples المقال الحادي والعشرين: فهم القواميس المقال الثاني والعشرين: كيفية استيراد الوحدات المقال الثالث والعشرين: كيفية كتابة الوحدات المقال الرابع والعشرين: كيفية كتابة التعليمات الشرطية المقال الخامس والعشرين: كيفية إنشاء حلقات تكرار while المقال السادس والعشرين: كيفية إنشاء حلقات تكرار for المقال السابع والعشرين: كيفية استخدام تعابير break وcontinue وpass عند التعامل مع حلقات التكرار المقال الثامن والعشرين: كيفية تعريف الدوال المقال التاسع والعشرين: كيفية استخدام *args و**kwargs المقال الثلاثين: كيفية إنشاء الأصناف وتعريف الكائنات المقال الحادي والثلاثين: فهم متغيرات الأصناف والنسخ المقال الثاني والثلاثين: وراثة الأصناف المقال الثالث والثلاثين: كيفية تطبيق التعددية الشكلية (Polymorphism) على الأصناف المقال الرابع والثلاثين: كيف تستخدم منقح بايثون المقال الخامس والثلاثين: كيفية تنقيح شيفرات بايثون من سطر الأوامر التفاعلي المقال السادس والثلاثين: كيف تستخدم التسجيل Logging المقال السابع والثلاثين: كيفية ترحيل شيفرة بايثون 2 إلى بايثون 31 نقطة -
1 نقطة
-
1 نقطة
-
عند الضغط على اشارت التعجب مثل المدرس لم تظهر لي اي كود او قالب مثل المدرس1 نقطة
-
السلام عليكم أردت إضافة اللغة العربية لهذا الموقع لكن عندما اردت التعديل على الموجهات لم افهم كيف أجمعها وانضمها لكي أحدد Local على حسب التوجيه <?php use Illuminate\Support\Facades\Route; Route::get('/clear', function(){ \Illuminate\Support\Facades\Artisan::call('optimize:clear'); }); /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- */ Route::namespace('Gateway')->prefix('ipn')->name('ipn.')->group(function () { Route::post('paypal', 'paypal\ProcessController@ipn')->name('paypal'); Route::get('paypal_sdk', 'paypal_sdk\ProcessController@ipn')->name('paypal_sdk'); Route::post('perfect_money', 'perfect_money\ProcessController@ipn')->name('perfect_money'); Route::post('stripe', 'stripe\ProcessController@ipn')->name('stripe'); Route::post('stripe_js', 'stripe_js\ProcessController@ipn')->name('stripe_js'); Route::post('stripe_v3', 'stripe_v3\ProcessController@ipn')->name('stripe_v3'); Route::post('skrill', 'skrill\ProcessController@ipn')->name('skrill'); Route::post('paytm', 'paytm\ProcessController@ipn')->name('paytm'); Route::post('payeer', 'payeer\ProcessController@ipn')->name('payeer'); Route::post('paystack', 'paystack\ProcessController@ipn')->name('paystack'); Route::post('voguepay', 'voguepay\ProcessController@ipn')->name('voguepay'); Route::get('flutterwave/{trx}/{type}', 'flutterwave\ProcessController@ipn')->name('flutterwave'); Route::post('razorpay', 'razorpay\ProcessController@ipn')->name('razorpay'); Route::post('instamojo', 'instamojo\ProcessController@ipn')->name('instamojo'); Route::get('blockchain', 'blockchain\ProcessController@ipn')->name('blockchain'); Route::get('blockio', 'blockio\ProcessController@ipn')->name('blockio'); Route::post('coinpayments', 'coinpayments\ProcessController@ipn')->name('coinpayments'); Route::post('coinpayments_fiat', 'coinpayments_fiat\ProcessController@ipn')->name('coinpayments_fiat'); Route::post('coingate', 'coingate\ProcessController@ipn')->name('coingate'); Route::post('coinbase_commerce', 'coinbase_commerce\ProcessController@ipn')->name('coinbase_commerce'); Route::get('mollie', 'mollie\ProcessController@ipn')->name('mollie'); Route::post('cashmaal', 'cashmaal\ProcessController@ipn')->name('cashmaal'); }); // User Support Ticket Route::prefix('ticket')->group(function () { Route::get('/', 'TicketController@supportTicket')->name('ticket'); Route::get('/new', 'TicketController@openSupportTicket')->name('ticket.open'); Route::post('/create', 'TicketController@storeSupportTicket')->name('ticket.store'); Route::get('/view/{ticket}', 'TicketController@viewTicket')->name('ticket.view'); Route::post('/reply/{ticket}', 'TicketController@replyTicket')->name('ticket.reply'); Route::get('/download/{ticket}', 'TicketController@ticketDownload')->name('ticket.download'); }); /* |-------------------------------------------------------------------------- | Start Admin Area |-------------------------------------------------------------------------- */ Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function () { Route::namespace('Auth')->group(function () { Route::get('/', 'LoginController@showLoginForm')->name('login'); Route::post('/', 'LoginController@login')->name('login'); Route::get('logout', 'LoginController@logout')->name('logout'); // Admin Password Reset Route::get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.reset'); Route::post('password/reset', 'ForgotPasswordController@sendResetLinkEmail'); Route::post('password/verify-code', 'ForgotPasswordController@verifyCode')->name('password.verify-code'); Route::get('password/reset/{token}', 'ResetPasswordController@showResetForm')->name('password.change-link'); Route::post('password/reset/change', 'ResetPasswordController@reset')->name('password.change'); }); Route::middleware(['admin','access'])->group(function () { Route::get('dashboard', 'AdminController@dashboard')->name('dashboard'); Route::get('profile', 'AdminController@profile')->name('profile'); Route::post('profile', 'AdminController@profileUpdate')->name('profile.update'); Route::get('password', 'AdminController@password')->name('password'); Route::post('password', 'AdminController@passwordUpdate')->name('password.update'); //System Info Route::get('request-report','AdminController@requestReport')->name('request.report'); Route::post('request-report','AdminController@reportSubmit'); //Report Bugs Route::get('system-info','AdminController@systemInfo')->name('system.info'); Route::get('optimize', 'GeneralSettingController@optimize')->name('setting.optimize'); //Custom CSS Route::get('custom-css','GeneralSettingController@customCss')->name('setting.custom.css'); Route::post('custom-css','GeneralSettingController@customCssSubmit'); //Cookie Route::get('cookie','GeneralSettingController@cookie')->name('setting.cookie'); Route::post('cookie','GeneralSettingController@cookieSubmit'); //Manage Category Route::get('category', 'CategoryController@categories')->name('category'); Route::post('category/new', 'CategoryController@storeCategory')->name('category.store'); Route::post('category/update/{id}', 'CategoryController@updateCategory')->name('category.update'); Route::get('category/search', 'CategoryController@searchCategory')->name('category.search'); Route::post('category/activate', 'CategoryController@activate')->name('category.activate'); Route::post('category/deactivate', 'CategoryController@deactivate')->name('category.deactivate'); //Manage Subcategory Route::get('subcategory/{id}/search', 'CategoryController@searchSubcategory')->name('category.sub.search'); Route::get('subcategory/{id}', 'CategoryController@subcategories')->name('category.sub'); Route::post('subcategory/new/{id}', 'CategoryController@storeSubcategory')->name('category.sub.store'); Route::post('subcategory/update/{id}', 'CategoryController@updateSubcategory')->name('category.sub.update'); Route::post('subcategory/activate', 'CategoryController@subcategoryActivate')->name('category.sub.activate'); Route::post('subcategory/deactivate', 'CategoryController@subcategoryDeactivate')->name('category.sub.deactivate'); //Manage Category Details Route::get('category-details/new/{id}', 'CategoryController@categoryDetailsNew')->name('category.details.new'); Route::get('category-details/{id}', 'CategoryController@categoryDetails')->name('category.details'); Route::post('category-details/store', 'CategoryController@categoryDetailsStore')->name('category.details.store'); Route::get('category-details/edit/{c_id}/{c_d_id}', 'CategoryController@CategoryDetailsEdit')->name('category.details.edit'); Route::post('category-details/update/{c_d_id}', 'CategoryController@CategoryDetailsUpdate')->name('category.details.update'); //Manage Category Route::get('level', 'LevelController@levels')->name('level'); Route::post('level/new', 'LevelController@storeLevel')->name('level.store'); Route::post('level/update/{id}', 'LevelController@updateLevel')->name('level.update'); Route::get('level/search', 'LevelController@searchLevel')->name('level.search'); //Reviewer Manager Route::get('reviewers', 'ManageReviewersController@allReviewers')->name('reviewers.all'); Route::get('reviewers/new', 'ManageReviewersController@newReviewer')->name('reviewers.new'); Route::post('reviewers/store', 'ManageReviewersController@storeReviewer')->name('reviewers.store'); Route::get('reviewer/detail/{id}', 'ManageReviewersController@detail')->name('reviewers.detail'); Route::post('reviewer/update/{id}', 'ManageReviewersController@update')->name('reviewers.update'); Route::get('reviewers/active', 'ManageReviewersController@activeReviewers')->name('reviewers.active'); Route::get('reviewers/banned', 'ManageReviewersController@bannedReviewers')->name('reviewers.banned'); Route::get('reviewers/email-verified', 'ManageReviewersController@emailVerifiedReviewers')->name('reviewers.emailVerified'); Route::get('reviewers/email-unverified', 'ManageReviewersController@emailUnverifiedReviewers')->name('reviewers.emailUnverified'); Route::get('reviewers/sms-unverified', 'ManageReviewersController@smsUnverifiedReviewers')->name('reviewers.smsUnverified'); Route::get('reviewers/sms-verified', 'ManageReviewersController@smsVerifiedReviewers')->name('reviewers.smsVerified'); Route::get('reviewers/{scope}/search', 'ManageReviewersController@search')->name('reviewers.search'); //Reviewer Login History Route::get('reviewers/login/history/{id}', 'ManageReviewersController@reviewerLoginHistory')->name('reviewers.login.history.single'); Route::get('reviewers/login/history', 'ManageReviewersController@loginHistory')->name('reviewers.login.history'); Route::get('reviewers/login/ipHistory/{ip}', 'ManageReviewersController@loginIpHistory')->name('reviewers.login.ipHistory'); Route::get('reviewers/send-email', 'ManageReviewersController@showEmailAllForm')->name('reviewers.email.all'); Route::post('reviewers/send-email', 'ManageReviewersController@sendEmailAll')->name('reviewers.email.send'); Route::get('reviewer/send-email/{id}', 'ManageReviewersController@showEmailSingleForm')->name('reviewers.email.single'); Route::post('reviewer/send-email/{id}', 'ManageReviewersController@sendEmailSingle')->name('reviewers.email.single'); //Manage Products Route::get('pending/products', 'ProductController@pending')->name('product.pending'); Route::get('approved/products', 'ProductController@approved')->name('product.approved'); Route::get('soft-rejected/products', 'ProductController@softRejected')->name('product.softrejected'); Route::get('hard-rejected/products', 'ProductController@hardRejected')->name('product.hardrejected'); Route::get('update-pending/products', 'ProductController@updatePending')->name('product.update.pending'); Route::get('products/view/{id}', 'ProductController@view')->name('product.view'); Route::get('update-pending/product/view/{id}', 'ProductController@updatePendingView')->name('product.update.pending.view'); Route::get('products/download/{id}', 'ProductController@download')->name('product.download'); Route::get('update-pending/product/download/{id}', 'ProductController@updatePendingDownload')->name('product.update.pending.download'); Route::get('resubmitted/products', 'ProductController@resubmit')->name('product.resubmit'); Route::get('resubmitted/product/view/{id}', 'ProductController@resubmitView')->name('product.resubmit.view'); Route::get('resubmitted/product/download/{id}', 'ProductController@resubmitDownload')->name('product.resubmit.download'); //Product Decession Route::post('approve/product', 'ProductController@approveProduct')->name('approve.product'); Route::post('soft-reject/product', 'ProductController@softRejectProduct')->name('softreject.product'); Route::post('hard-reject/product', 'ProductController@hardRejectProduct')->name('hardreject.product'); Route::post('approve/resubmit-product', 'ProductController@resubmitApprove')->name('resubmit.approve.product'); Route::post('soft-reject/resubmit-product', 'ProductController@resubmitSoftReject')->name('resubmit.softreject.product'); Route::post('hard-reject/resubmit-product', 'ProductController@resubmitHardReject')->name('resubmit.hardreject.product'); Route::post('approve/update-pending/product', 'ProductController@updatePendingApprove')->name('approve.product.update.pending'); Route::post('reject/update-pending/product', 'ProductController@updatePendingReject')->name('reject.product.update.pending'); Route::post('featured/product', 'ProductController@featuredProduct')->name('featured.product'); Route::post('unfeatured/product', 'ProductController@unFeaturedProduct')->name('unfeatured.product'); //Sells Log Route::get('sell-log', 'ProductController@sellLog')->name('sell.log'); Route::get('sell-search', 'ProductController@sellSearch')->name('sell.log.search'); //Manage Comments Route::get('comments', 'CommentController@products')->name('comment'); Route::get('comments/view/{id}', 'CommentController@comments')->name('comment.view'); Route::post('comment/delete', 'CommentController@commentDelete')->name('comment.delete'); Route::post('reply/delete', 'CommentController@replyDelete')->name('comment.reply.delete'); // Users Manager Route::get('users', 'ManageUsersController@allUsers')->name('users.all'); Route::get('users/active', 'ManageUsersController@activeUsers')->name('users.active'); Route::get('users/banned', 'ManageUsersController@bannedUsers')->name('users.banned'); Route::get('users/email-verified', 'ManageUsersController@emailVerifiedUsers')->name('users.emailVerified'); Route::get('users/email-unverified', 'ManageUsersController@emailUnverifiedUsers')->name('users.emailUnverified'); Route::get('users/sms-unverified', 'ManageUsersController@smsUnverifiedUsers')->name('users.smsUnverified'); Route::get('users/sms-verified', 'ManageUsersController@smsVerifiedUsers')->name('users.smsVerified'); Route::get('users/{scope}/search', 'ManageUsersController@search')->name('users.search'); Route::get('user/detail/{id}', 'ManageUsersController@detail')->name('users.detail'); Route::post('user/update/{id}', 'ManageUsersController@update')->name('users.update'); Route::post('user/add-sub-balance/{id}', 'ManageUsersController@addSubBalance')->name('users.addSubBalance'); Route::get('user/send-email/{id}', 'ManageUsersController@showEmailSingleForm')->name('users.email.single'); Route::post('user/send-email/{id}', 'ManageUsersController@sendEmailSingle')->name('users.email.single'); Route::get('user/transactions/{id}', 'ManageUsersController@transactions')->name('users.transactions'); Route::get('user/deposits/{id}', 'ManageUsersController@deposits')->name('users.deposits'); Route::get('user/deposits/via/{method}/{type?}/{userId}', 'ManageUsersController@depViaMethod')->name('users.deposits.method'); Route::get('user/withdrawals/{id}', 'ManageUsersController@withdrawals')->name('users.withdrawals'); Route::get('user/withdrawals/via/{method}/{type?}/{userId}', 'ManageUsersController@withdrawalsViaMethod')->name('users.withdrawals.method'); // Login History Route::get('users/login/history/{id}', 'ManageUsersController@userLoginHistory')->name('users.login.history.single'); Route::get('users/send-email', 'ManageUsersController@showEmailAllForm')->name('users.email.all'); Route::post('users/send-email', 'ManageUsersController@sendEmailAll')->name('users.email.send'); //Featured Author Route::get('featured-author', 'ManageUsersController@featured')->name('users.featured.all'); Route::post('make/featured-author', 'ManageUsersController@makeFeatured')->name('users.make.featured'); // Subscriber Route::get('subscriber', 'SubscriberController@index')->name('subscriber.index'); Route::get('subscriber/send-email', 'SubscriberController@sendEmailForm')->name('subscriber.sendEmail'); Route::post('subscriber/remove', 'SubscriberController@remove')->name('subscriber.remove'); Route::post('subscriber/send-email', 'SubscriberController@sendEmail')->name('subscriber.sendEmail'); // Deposit Gateway Route::name('gateway.')->prefix('gateway')->group(function(){ // Automatic Gateway Route::get('automatic', 'GatewayController@index')->name('automatic.index'); Route::get('automatic/edit/{alias}', 'GatewayController@edit')->name('automatic.edit'); Route::post('automatic/update/{code}', 'GatewayController@update')->name('automatic.update'); Route::post('automatic/remove/{code}', 'GatewayController@remove')->name('automatic.remove'); Route::post('automatic/activate', 'GatewayController@activate')->name('automatic.activate'); Route::post('automatic/deactivate', 'GatewayController@deactivate')->name('automatic.deactivate'); // Manual Methods Route::get('manual', 'ManualGatewayController@index')->name('manual.index'); Route::get('manual/new', 'ManualGatewayController@create')->name('manual.create'); Route::post('manual/new', 'ManualGatewayController@store')->name('manual.store'); Route::get('manual/edit/{alias}', 'ManualGatewayController@edit')->name('manual.edit'); Route::post('manual/update/{id}', 'ManualGatewayController@update')->name('manual.update'); Route::post('manual/activate', 'ManualGatewayController@activate')->name('manual.activate'); Route::post('manual/deactivate', 'ManualGatewayController@deactivate')->name('manual.deactivate'); }); // DEPOSIT SYSTEM Route::name('deposit.')->prefix('deposit')->group(function(){ Route::get('/', 'DepositController@deposit')->name('list'); Route::get('pending', 'DepositController@pending')->name('pending'); Route::get('rejected', 'DepositController@rejected')->name('rejected'); Route::get('approved', 'DepositController@approved')->name('approved'); Route::get('successful', 'DepositController@successful')->name('successful'); Route::get('details/{id}', 'DepositController@details')->name('details'); Route::post('reject', 'DepositController@reject')->name('reject'); Route::post('approve', 'DepositController@approve')->name('approve'); Route::get('via/{method}/{type?}', 'DepositController@depViaMethod')->name('method'); Route::get('/{scope}/search', 'DepositController@search')->name('search'); Route::get('date-search/{scope}', 'DepositController@dateSearch')->name('dateSearch'); }); // PAYMENT SYSTEM Route::name('payment.')->prefix('payment')->group(function(){ Route::get('/', 'PaymentController@payment')->name('list'); Route::get('pending', 'PaymentController@pending')->name('pending'); Route::get('rejected', 'PaymentController@rejected')->name('rejected'); Route::get('approved', 'PaymentController@approved')->name('approved'); Route::get('successful', 'PaymentController@successful')->name('successful'); Route::get('details/{id}', 'PaymentController@details')->name('details'); Route::post('reject', 'PaymentController@reject')->name('reject'); Route::post('approve', 'PaymentController@approve')->name('approve'); Route::get('via/{method}/{type?}', 'PaymentController@paymentViaMethod')->name('method'); Route::get('/{scope}/search', 'PaymentController@search')->name('search'); Route::get('date-search/{scope}', 'PaymentController@dateSearch')->name('dateSearch'); }); // WITHDRAW SYSTEM Route::name('withdraw.')->prefix('withdraw')->group(function(){ Route::get('pending', 'WithdrawalController@pending')->name('pending'); Route::get('approved', 'WithdrawalController@approved')->name('approved'); Route::get('rejected', 'WithdrawalController@rejected')->name('rejected'); Route::get('log', 'WithdrawalController@log')->name('log'); Route::get('via/{method_id}/{type?}', 'WithdrawalController@logViaMethod')->name('method'); Route::get('{scope}/search', 'WithdrawalController@search')->name('search'); Route::get('date-search/{scope}', 'WithdrawalController@dateSearch')->name('dateSearch'); Route::get('details/{id}', 'WithdrawalController@details')->name('details'); Route::post('approve', 'WithdrawalController@approve')->name('approve'); Route::post('reject', 'WithdrawalController@reject')->name('reject'); // Withdraw Method Route::get('method/', 'WithdrawMethodController@methods')->name('method.index'); Route::get('method/create', 'WithdrawMethodController@create')->name('method.create'); Route::post('method/create', 'WithdrawMethodController@store')->name('method.store'); Route::get('method/edit/{id}', 'WithdrawMethodController@edit')->name('method.edit'); Route::post('method/edit/{id}', 'WithdrawMethodController@update')->name('method.update'); Route::post('method/activate', 'WithdrawMethodController@activate')->name('method.activate'); Route::post('method/deactivate', 'WithdrawMethodController@deactivate')->name('method.deactivate'); }); // Report Route::get('report/transaction', 'ReportController@transaction')->name('report.transaction'); Route::get('report/transaction/search', 'ReportController@transactionSearch')->name('report.transaction.search'); Route::get('report/login/history', 'ReportController@loginHistory')->name('report.login.history'); Route::get('report/login/ipHistory/{ip}', 'ReportController@loginIpHistory')->name('report.login.ipHistory'); // Admin Support Route::get('tickets', 'SupportTicketController@tickets')->name('ticket'); Route::get('tickets/pending', 'SupportTicketController@pendingTicket')->name('ticket.pending'); Route::get('tickets/closed', 'SupportTicketController@closedTicket')->name('ticket.closed'); Route::get('tickets/answered', 'SupportTicketController@answeredTicket')->name('ticket.answered'); Route::get('tickets/view/{id}', 'SupportTicketController@ticketReply')->name('ticket.view'); Route::post('ticket/reply/{id}', 'SupportTicketController@ticketReplySend')->name('ticket.reply'); Route::get('ticket/download/{ticket}', 'SupportTicketController@ticketDownload')->name('ticket.download'); Route::post('ticket/delete', 'SupportTicketController@ticketDelete')->name('ticket.delete'); // Language Manager Route::get('/language', 'LanguageController@langManage')->name('language.manage'); Route::post('/language', 'LanguageController@langStore')->name('language.manage.store'); Route::post('/language/delete/{id}', 'LanguageController@langDel')->name('language.manage.del'); Route::post('/language/update/{id}', 'LanguageController@langUpdatepp')->name('language.manage.update'); Route::get('/language/edit/{id}', 'LanguageController@langEdit')->name('language.key'); Route::post('/language/import', 'LanguageController@langImport')->name('language.import_lang'); Route::post('language/store/key/{id}', 'LanguageController@storeLanguageJson')->name('language.store.key'); Route::post('language/delete/key/{id}', 'LanguageController@deleteLanguageJson')->name('language.delete.key'); Route::post('language/update/key/{id}', 'LanguageController@updateLanguageJson')->name('language.update.key'); // General Setting Route::get('general-setting', 'GeneralSettingController@index')->name('setting.index'); Route::post('general-setting', 'GeneralSettingController@update')->name('setting.update'); // Logo-Icon Route::get('setting/logo-icon', 'GeneralSettingController@logoIcon')->name('setting.logo_icon'); Route::post('setting/logo-icon', 'GeneralSettingController@logoIconUpdate')->name('setting.logo_icon'); // Plugin Route::get('extensions', 'ExtensionController@index')->name('extensions.index'); Route::post('extensions/update/{id}', 'ExtensionController@update')->name('extensions.update'); Route::post('extensions/activate', 'ExtensionController@activate')->name('extensions.activate'); Route::post('extensions/deactivate', 'ExtensionController@deactivate')->name('extensions.deactivate'); // Email Setting Route::get('email-template/global', 'EmailTemplateController@emailTemplate')->name('email.template.global'); Route::post('email-template/global', 'EmailTemplateController@emailTemplateUpdate')->name('email.template.global'); Route::get('email-template/setting', 'EmailTemplateController@emailSetting')->name('email.template.setting'); Route::post('email-template/setting', 'EmailTemplateController@emailSettingUpdate')->name('email.template.setting'); Route::get('email-template/index', 'EmailTemplateController@index')->name('email.template.index'); Route::get('email-template/{id}/edit', 'EmailTemplateController@edit')->name('email.template.edit'); Route::post('email-template/{id}/update', 'EmailTemplateController@update')->name('email.template.update'); Route::post('email-template/send-test-mail', 'EmailTemplateController@sendTestMail')->name('email.template.sendTestMail'); // SMS Setting Route::get('sms-template/global', 'SmsTemplateController@smsSetting')->name('sms.template.global'); Route::post('sms-template/global', 'SmsTemplateController@smsSettingUpdate')->name('sms.template.global'); Route::get('sms-template/index', 'SmsTemplateController@index')->name('sms.template.index'); Route::get('sms-template/edit/{id}', 'SmsTemplateController@edit')->name('sms.template.edit'); Route::post('sms-template/update/{id}', 'SmsTemplateController@update')->name('sms.template.update'); Route::post('email-template/send-test-sms', 'SmsTemplateController@sendTestSMS')->name('sms.template.sendTestSMS'); // SEO Route::get('seo', 'FrontendController@seoEdit')->name('seo'); // Frontend Route::name('frontend.')->prefix('frontend')->group(function () { Route::get('templates', 'FrontendController@templates')->name('templates'); Route::post('templates', 'FrontendController@templatesActive')->name('templates.active'); Route::get('frontend-sections/{key}', 'FrontendController@frontendSections')->name('sections'); Route::post('frontend-content/{key}', 'FrontendController@frontendContent')->name('sections.content'); Route::get('frontend-element/{key}/{id?}', 'FrontendController@frontendElement')->name('sections.element'); Route::post('remove', 'FrontendController@remove')->name('remove'); // Page Builder Route::get('manage-pages', 'PageBuilderController@managePages')->name('manage.pages'); Route::post('manage-pages', 'PageBuilderController@managePagesSave')->name('manage.pages.save'); Route::post('manage-pages/update', 'PageBuilderController@managePagesUpdate')->name('manage.pages.update'); Route::post('manage-pages/delete', 'PageBuilderController@managePagesDelete')->name('manage.pages.delete'); Route::get('manage-section/{id}', 'PageBuilderController@manageSection')->name('manage.section'); Route::post('manage-section/{id}', 'PageBuilderController@manageSectionUpdate')->name('manage.section.update'); }); }); }); /* |-------------------------------------------------------------------------- | Start Reviewer Area |-------------------------------------------------------------------------- */ Route::namespace('Reviewer')->prefix('reviewer')->name('reviewer.')->group(function () { Route::namespace('Auth')->group(function () { Route::get('/', 'LoginController@showLoginForm')->name('login'); Route::post('/', 'LoginController@login')->name('login'); Route::get('logout', 'LoginController@logout')->name('logout'); // surveyor Password Reset Route::get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.reset'); Route::post('password/reset', 'ForgotPasswordController@sendResetLinkEmail'); Route::post('password/verify-code', 'ForgotPasswordController@verifyCode')->name('password.verify-code'); Route::get('password/reset/{token}', 'ResetPasswordController@showResetForm')->name('password.change-link'); Route::post('password/reset/change', 'ResetPasswordController@reset')->name('password.change'); }); }); Route::namespace('Reviewer')->name('reviewer.')->prefix('reviewer')->group(function () { Route::middleware('reviewer')->group(function () { Route::get('authorization', 'ReviewerAuthorizationController@authorizeForm')->name('authorization'); Route::get('resend-verify', 'ReviewerAuthorizationController@sendVerifyCode')->name('send_verify_code'); Route::post('verify-email', 'ReviewerAuthorizationController@emailVerification')->name('verify_email'); Route::post('verify-sms', 'ReviewerAuthorizationController@smsVerification')->name('verify_sms'); Route::post('verify-g2fa', 'ReviewerAuthorizationController@g2faVerification')->name('go2fa.verify'); Route::middleware(['checkReviewerStatus'])->group(function () { Route::get('dashboard', 'ReviewerController@dashboard')->name('dashboard'); Route::get('profile', 'ReviewerController@profile')->name('profile'); Route::post('profile/update', 'ReviewerController@profileUpdate')->name('profile.update'); Route::get('password', 'ReviewerController@password')->name('password'); Route::post('password/update', 'ReviewerController@passwordUpdate')->name('password.update'); //2FA Route::get('twofactor', 'ReviewerController@show2faForm')->name('twofactor'); Route::post('twofactor/enable', 'ReviewerController@create2fa')->name('twofactor.enable'); Route::post('twofactor/disable', 'ReviewerController@disable2fa')->name('twofactor.disable'); //Products Route::get('pending/products', 'ReviewerController@pending')->name('product.pending'); Route::get('products/view/{id}', 'ReviewerController@view')->name('product.view'); Route::get('products/download/{id}', 'ReviewerController@download')->name('product.download'); Route::get('approved/products', 'ReviewerController@approved')->name('product.approved'); Route::get('soft-rejected/products', 'ReviewerController@softRejected')->name('product.softrejected'); Route::get('hard-rejected/products', 'ReviewerController@hardRejected')->name('product.hardrejected'); Route::get('update-pending/products', 'ReviewerController@updatePending')->name('product.update.pending'); Route::get('update-pending/product/view/{id}', 'ReviewerController@updatePendingView')->name('product.update.pending.view'); Route::get('update-pending/product/download/{id}', 'ReviewerController@updatePendingDownload')->name('product.update.pending.download'); Route::get('resubmitted/products', 'ReviewerController@resubmit')->name('product.resubmit'); Route::get('resubmitted/product/view/{id}', 'ReviewerController@resubmitView')->name('product.resubmit.view'); Route::get('resubmitted/product/download/{id}', 'ReviewerController@resubmitDownload')->name('product.resubmit.download'); //Product Decession Route::post('approve/product', 'ReviewerController@approveProduct')->name('approve.product'); Route::post('soft-reject/product', 'ReviewerController@softRejectProduct')->name('softreject.product'); Route::post('hard-reject/product', 'ReviewerController@hardRejectProduct')->name('hardreject.product'); Route::post('approve/resubmit-product', 'ReviewerController@resubmitApprove')->name('resubmit.approve.product'); Route::post('soft-reject/resubmit-product', 'ReviewerController@resubmitSoftReject')->name('resubmit.softreject.product'); Route::post('hard-reject/resubmit-product', 'ReviewerController@resubmitHardReject')->name('resubmit.hardreject.product'); Route::post('approve/update-pending/product', 'ReviewerController@updatePendingApprove')->name('approve.product.update.pending'); Route::post('reject/update-pending/product', 'ReviewerController@updatePendingReject')->name('reject.product.update.pending'); }); }); }); /* |-------------------------------------------------------------------------- | Start User Area |-------------------------------------------------------------------------- */ Route::name('user.')->group(function () { Route::get('/login', 'Auth\LoginController@showLoginForm')->name('login'); Route::post('/login', 'Auth\LoginController@login'); Route::get('logout', 'Auth\LoginController@logout')->name('logout'); Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register'); Route::post('register', 'Auth\RegisterController@register')->middleware('regStatus'); Route::group(['middleware' => ['guest']], function () { Route::get('register/{reference}', 'Auth\RegisterController@referralRegister')->name('refer.register'); }); Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request'); Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email'); Route::get('password/code-verify', 'Auth\ForgotPasswordController@codeVerify')->name('password.code_verify'); Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update'); Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset'); Route::post('password/verify-code', 'Auth\ForgotPasswordController@verifyCode')->name('password.verify-code'); }); Route::name('user.')->prefix('user')->group(function () { Route::middleware('auth')->group(function () { Route::get('authorization', 'AuthorizationController@authorizeForm')->name('authorization'); Route::get('resend-verify', 'AuthorizationController@sendVerifyCode')->name('send_verify_code'); Route::post('verify-email', 'AuthorizationController@emailVerification')->name('verify_email'); Route::post('verify-sms', 'AuthorizationController@smsVerification')->name('verify_sms'); Route::post('verify-g2fa', 'AuthorizationController@g2faVerification')->name('go2fa.verify'); Route::middleware(['checkStatus'])->group(function () { Route::get('dashboard', 'UserController@home')->name('home'); Route::get('profile-setting', 'UserController@profile')->name('profile-setting'); Route::post('profile-setting', 'UserController@submitProfile'); Route::get('change-password', 'UserController@changePassword')->name('change-password'); Route::post('change-password', 'UserController@submitPassword'); //2FA Route::get('twofactor', 'UserController@show2faForm')->name('twofactor'); Route::post('twofactor/enable', 'UserController@create2fa')->name('twofactor.enable'); Route::post('twofactor/disable', 'UserController@disable2fa')->name('twofactor.disable'); // Deposit Route::any('/deposit', 'Gateway\PaymentController@deposit')->name('deposit'); Route::post('deposit/insert', 'Gateway\PaymentController@depositInsert')->name('deposit.insert'); Route::get('deposit/preview', 'Gateway\PaymentController@depositPreview')->name('deposit.preview'); Route::get('deposit/confirm', 'Gateway\PaymentController@depositConfirm')->name('deposit.confirm'); Route::get('deposit/manual', 'Gateway\PaymentController@manualDepositConfirm')->name('deposit.manual.confirm'); Route::post('deposit/manual', 'Gateway\PaymentController@manualDepositUpdate')->name('deposit.manual.update'); Route::get('deposit/history', 'UserController@depositHistory')->name('deposit.history'); // Payment Route::any('/payment', 'Gateway\PaymentController@payment')->name('payment'); Route::post('payment/insert', 'Gateway\PaymentController@paymentInsert')->name('payment.insert'); Route::get('payment/preview', 'Gateway\PaymentController@paymentPreview')->name('payment.preview'); Route::get('payment/manual', 'Gateway\PaymentController@manualPaymentConfirm')->name('payment.manual.confirm'); Route::post('payment/manual', 'Gateway\PaymentController@manualPaymentUpdate')->name('payment.manual.update'); // Withdraw Route::get('/withdraw', 'UserController@withdrawMoney')->name('withdraw'); Route::post('/withdraw', 'UserController@withdrawStore')->name('withdraw.money'); Route::get('/withdraw/preview', 'UserController@withdrawPreview')->name('withdraw.preview'); Route::post('/withdraw/preview', 'UserController@withdrawSubmit')->name('withdraw.submit'); Route::get('/withdraw/history', 'UserController@withdrawLog')->name('withdraw.history'); // Product Route::get('product/all', 'ProductController@allProduct')->name('product.all'); Route::get('product/new', 'ProductController@newProduct')->name('product.new'); Route::post('product/store', 'ProductController@storeProduct')->name('product.store'); Route::get('product/edit/{id}', 'ProductController@editProduct')->name('product.edit'); Route::post('product/update/{id}', 'ProductController@updateProduct')->name('product.update'); Route::get('product/resubmit/{id}', 'ProductController@resubmitProduct')->name('product.resubmit'); Route::post('product/resubmit/store/{id}', 'ProductController@resubmitProductStore')->name('product.resubmit.store'); Route::post('product/delete', 'ProductController@deleteProduct')->name('product.delete'); //Comment Store Route::post('comment/store', 'ProductController@commentStore')->name('comment.store'); Route::post('reply/store', 'ProductController@replyStore')->name('reply.store'); //Payment Route::post('checkout-payment', 'SellController@checkoutPayment')->name('checkout.payment'); //Purchased Product List Route::get('purchased-product/list', 'UserController@purchasedProduct')->name('purchased.product'); //Rating Route::post('rating', 'UserController@rating')->name('rating'); //Product Download Route::get('download/{id}', 'UserController@download')->name('download'); //Ivoice Download Route::get('invoice/{id}', 'UserController@invoice')->name('invoice'); //Transactions Route::get('transaction', 'UserController@transaction')->name('transaction'); //Sells log Route::get('sells-log', 'UserController@sellLog')->name('sell.log'); //Track Sell Route::get('track-sell', 'UserController@trackSell')->name('track.sell'); Route::post('track-sell-search', 'UserController@trackSellSearch')->name('track.sell.search'); //Email To Author Route::post('email-author', 'UserController@emailAuthor')->name('email.author'); }); }); }); Route::get('/contact', 'SiteController@contact')->name('contact'); Route::post('/contact', 'SiteController@contactSubmit')->name('contact.send'); Route::get('/change/{lang?}', 'SiteController@changeLanguage')->name('lang'); Route::get('/cookie/accept', 'SiteController@cookieAccept')->name('cookie.accept'); //Blog Route::get('blogs', 'SiteController@blogs')->name('blogs'); Route::get('blog/{id}/{slug}', 'SiteController@blogDetails')->name('blog.details'); //Subscriber Store Route::post('subscriber', 'SiteController@subscriberStore')->name('subscriber.store'); //Company Policy Route::get('company-policy/{id}/{heading}', 'SiteController@policy')->name('policy'); //Company Policy Route::get('support-details', 'SiteController@suppotDetails')->name('support.details'); //Products Route::get('featured-products', 'SiteController@featured')->name('featured'); Route::get('all-products', 'SiteController@allProducts')->name('all.products'); Route::get('best-selling-products', 'SiteController@bestSell')->name('best.sell.products'); Route::get('best-author-products', 'SiteController@bestAuthor')->name('best.author.products'); Route::get('author-products/{username}', 'SiteController@authorProducts')->name('author.products'); //Products Details Route::get('product-details/{slug}/{id}', 'SiteController@productDetails')->name('product.details'); Route::get('product-reviews/{slug}/{id}', 'SiteController@productReviews')->name('product.reviews'); Route::get('product-comments/{slug}/{id}', 'SiteController@productComments')->name('product.comments'); //Search Products Route::get('product/search', 'SiteController@productSearch')->name('product.search'); Route::get('product/filtred', 'SiteController@productFilter')->name('product.filtered'); Route::get('category/search/{id}/{slug}', 'SiteController@categorySearch')->name('category.search'); Route::get('subcategory/search/{id}/{slug}', 'SiteController@subcategorySearch')->name('subcategory.search'); Route::get('author-profile/{username}', 'SiteController@usernameSearch')->name('username.search'); Route::get('tag/search/{tag}', 'SiteController@tagSearch')->name('tag.search'); //Add To Cart Route::post('product/add-to-cart', 'SellController@addToCart')->name('addtocart'); Route::get('product/remove-cart/{id}', 'SellController@removeCart')->name('remove.cart'); Route::get('product/cart', 'SellController@carts')->name('carts'); Route::get('placeholder-image/{size}', 'SiteController@placeholderImage')->name('placeholderImage'); Route::get('/{slug}', 'SiteController@pages')->name('pages'); Route::get('/', 'SiteController@index')->name('home');1 نقطة
-
جميل، يتم هنا قراءة اللغة الافتراضية من قاعدة البيانات. يمكن بهذا الشكل تعيينها من قبل المشرف من على لوحة التحكم ليتحكم في اللغة الافتراضية لزوراه مثلا. يمكنك التطوير عليها أكثر. هلا قمت بتفعيل وضع تشخيص الأخطاء؟ من ملف متغيرات البيئة env.قم بضبط APP_DEBUG لـ true وابحث في تفاصيل المشكلة.1 نقطة
-
شكرا لك أخي عدنان بدأت أفهم وجدت فيها صنف آخر انظر كيف <?php namespace App\Http\Middleware; use App\Language; use Closure; class LanguageMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { session()->put('lang', $this->getCode()); app()->setLocale(session('lang', $this->getCode())); return $next($request); } public function getCode() { if (session()->has('lang')) { return session('lang'); } $language = Language::where('is_default', 1)->first(); return $language ? $language->code : 'en'; } } لكن لما احاول معرفة كود اللغة app()->getLocal() من اجل تغيير الاتجاه يعطيني خطأ في الإتصال باسارفر1 نقطة
-
السلام عليكم ورحمة الله وبركاته ليس معي ما يكفي من المال لشراء دورات اكاديمية حسوب وانا في الحقيقة اريد ان اتعلم البرمجة ولم اجد افضل من اكاديمية حسوب لذلك المجال ممكن بطاقات هدية بي 150$1 نقطة
-
نعم يمكنك تغييرها ديناميكيا عن طريق الواجهة App. وهو ما قصدته بـ: كمقاربة عملية، اقوم في تطبيقات لارافيل التي تتطلب أكثر عن من لغة بإنشاء طبقة وسيطة Middleware لتعيين اللغة كل مرة يتم طلب مسار جديد. فلو قمت مثلا بطلب المسار /home سيتم قبل اي شيء، اعداد اللغة المرادة ثم اكمال الطلب مثل عرض الصفحة. كمكان جيد يتم فيه تخزين اللغة التي يريدها المستخدم نستخدم الجلسات Session. يكون ملف الطبقة الوسيطة على نحو: class SetLanguageMiddleware { public function handle(Request $request, Closure $next) { if(Session::has('locale')){ App::setLocale(Session::get('locale')); } else{ App::setLocale('ar'); } return $next($request); } } تقوم هاته الطبقة بالبحث في الجلسة عن اي قيمة مخزنة لـ locale. فان كانت موجودة قامت بتعيين القيمة الموجودة كلغة للتطبيق. وفي حال عدم وجود اي قيمة، سنقوم بتعيين لغة افتراضية مثل طرف الشرط else الآن سنحتاج تسجيل هاته الطبقة الوسيطة ضمن مصفوفة الطبقات الوسيطة web في ملف app/Kernel.php : 'web' => [ .. \App\Http\Middleware\SetLanguageMiddleware::class, لأننا نحتاج هاته المقاربة في كامل مسارات تطبيق الويب الذي لدينا ولا نريد ان يحصل ذلك في مسارات معينة فقط. الآن نحن نحتاج الى طريقة ما لتبديل قيمة المفتاح locale في الجلسة وفقط، لأننا نعلم ان الطبقة الوسيطة المنشئة حديثا ستتعامل معه بشكل منفصل. يمكنك انشاء متحكم ما لذلك يحوي منطقا مشابها لـ: public function switchLaguage($locale) { if(in_array($locale ,['en' ,'ar'])) { App::setLocale($locale); Session::put('locale' ,$locale); } return back(); } نتحقق هنا من ما ان كان القيمة التي يطلبها المستخدم ضمن اللغات المتوفرة ar , en . بعد هذا نقوم بتعيين قيمة جديدة لقيمة المفتاح locale في الجلسة. ثم نعيد المستخدم الى الصفحة التي كان فيها. ما بين الإعادة والعرض ستشتغل الطبقة الوسيطة وتعين لك المفتاح في الجلسة.1 نقطة
-
نعم او ليس لها دخل ؟ لما اضيف هذا السطر <html @if( app()->getLocal() == 'ar') dir="rtl" @else dir="ltr" @endif> يطلعلي هذا الخطأ 500 Internal Server Error The server has been deserted for a while. Please be patient or try again later. منين المشكل ؟1 نقطة
-
هل تقصد تلك الكائنة بملف اعداد التطبيق app.php؟1 نقطة
-
يمكنك تقييد تحديد اتجاه الصفحات بشرط يتحقق من ما ان كانت اللغة ar لوضع التنسيق direction:rtl الخاصية dir="rtl" على نحو: <html @if( app()->getLocal() == 'ar') dir="rtl" @else dir="ltr" @endif> ... <style> * { direction: @if( app()->getLocal() == 'ar') rtl @else ltr @endif; } </style> بالتأكيد فان هذا يكون في واحدة من ملفات القالب layouts من مثل app.blade.php ليتم تطبيقها بشكل عام على كامل الصفحات الفرعية.1 نقطة
-
1 نقطة
-
1 نقطة
-
لارافيل يفصل بين هاذين المكونين، لا يوجد أي تداخل بينهما. يمكنك مباشرة البدء بتعريف المفاتيح والقيم في ملفات اللغات واستعمالها في ملفات العرض لديك. {{ __('messages.welcome') }} هل تقصد تقصد انشاء طبقة وسيطة middleware لتمرير اللغة الى الواجهة App من الموجه نفسه قبل انشاء الوصول الى المتحكم او ملف العرض؟ حيث تأخذ هاته الطبقة الوسيطة اللغة من الجلسة Session مثلا.1 نقطة
-
1 نقطة
-
يعني مثلا أكادمية حسوب ال navbar وال footer الخاص بالمواقع ثابتين دايما عند الدخول على أي صفحة من صفحات الموقع هل يجب علي تكرار خذا الكود في كل صفحة من صفحات الموقع؟؟1 نقطة
-
أرجو تفصيل المشكلة بشكل واضح. عادة جزء navbar نفسه مكرر لجميع الصفحات التي ترغب بوجوده ضمنها، مع التنسيقات الخاصة به1 نقطة
-
لو تكرمتم انا داخل مجال البرمجه جديد .... لدى معرفه قليله حاليا ببعض مفاهيم وخورازميات البرمجه، وكنت محتاج اعرف من فين ابدا خطوات دراسه البرمجه والدورات المطلوبه بالترتيب حتى اصبح مطور1 نقطة
-
لقد حللت المشكلة من body{ background-color: rgba(214, 161, 182, 0.247); background-image: url("../img/body-logo.png"); background-position: center; background-size: cover; background-attachment: fixed; } ل body{ background-color: rgba(214, 161, 182, 0.247); background-image: url("../img/body-logo.png"); background-position: center; background-size: cover; overflow-x: hidden; } اضفت overflow-x: hidden;1 نقطة
-
لاحظ ان هنالك صنف ml-3 مطبق، على الأغلب هو السبب، حاول تتبع مصدره. مثلا نضع ml-ms-0 أي لانريد حاشية للشاشات الصغيرة. يمكن اقتطاع الحافة باستخدام overflow مع قيمة hidden يمكن تطبيق تنسيقات عامة بجعل الحواف 0 لجميع الكائنات * { margin: 0; padding: 0; }1 نقطة
-
قمت بتعريف enum إسمه Days وضعت فيه ايام الاسبوع لكنني لم انجح بطباعةجميع القيم (اسماء الاسبوع) public class Main { enum Days { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { System.out.println(Days.MONDAY); }}1 نقطة
-
إن الطريقة التي تتبعينها Days.MONDAY تطبع قيمة الثابت نفسه أي MONDAY ويجب تكرار هذه العملية لكامل القيم في القائمة. يمكن المرور عليهم بواسطة حلقة for على ما تعيده الطريقة values حيث ترجع مصفوفة public static void main(String[] args) { // و ستعرض كل عنصر فيها values() هذه الحلقة ستقوم بالمرور على جميع العناصر التي سترجعها الدالة for(Days d: Days.values()) { System.out.println(d); } }1 نقطة
-
قمت بإسناد قيم الى المتغيرات وطباعتها ولكن لم احصل على النتيجة لوجود خطأ في الكود أرجو المساعدة public class Employee { String name; int age; double salary; }public class Main { public static void main(String[] args) { Employee em = new Employee(); em.name = "Zeina"; em.age = 22; em.salary = 1500; System.out.println("Name: " +name); System.out.println("Age: " +age); System.out.println("Salary: " +salary); } }1 نقطة
-
أرجو مشاركة رسالة الخطأ، لكي نشرحها لك و تتعودي على حل مشاكلك بنفسك. ضمن عباراة الطباعة تقومين بطباعة متغيرات بأسمائها مباشرة، هل قمت بتعريف هذه المتغيرات؟ لدينا كائن اسمه em فيه عدة خصائص نصل لهم من اسم هذا الكائن em.property1 نقطة
-
قمت باستخدام مفهوم الـ Nested Classes في جافا لكن واجهة مشكلة عند انشاء كائن من الكلاس لتوضيح: اريد انشاء كائن من الكلاس B Class A{ Class B{ } }1 نقطة
-
يمكن استخدام الشيفرة التالية في الهاتف لفتح تطبيق واتساب و تحميل النص من الصفحة للتطبيق <button onclick="window.open('whatsapp://send?text= النص ')"> مشاركة عبر WhatsApp </button> ^^^^ سوف نمرر النص المطلوب مشاركته ضمن قيمة الوسيط text. يمكن نقل شيفرة جافاسكربت التي ستقرأ النص لدالة خاصة ومن ثم يتم استدعائها ضمن تلك الدالة نضيف زر المشاركة عند النقر على الزر، نقرأ النص من عنصر HTML المطلوب (تحديده مثلا عن طريق id) فتح تطبيق واتساب مع النص <p id="myElement"> مشاركة تجريبية عن طريق واتساب </p> <button onclick="share()"> Share to WhatsApp </button> <script> function share() { let message = document.getElementById("myElement").textContent; // ^^^^^^^^^^^^ العنصر الذي فه النص المطلوب مشاركته window.open( "whatsapp://send?text=" + message, '_blank'); } </script>1 نقطة
-
يمكننا الاستعانة بكائن التقويم Calendar فهو يسمح لنا بإضافة وقت معين للتاريخ الحالي ثم نسترجع التاريخ الجديد من الدالة getTime Calendar cal = Calendar.getInstance(); // بناء غرض من calendar cal.setTime(new Date()); // تحديد الوقت الحالي time/date cal.add(Calendar.HOUR_OF_DAY, 1); // إضافة ساعة cal.getTime(); // استرجاع الوقت الجديد توثيق الكائن Calendar يوجد طرف أخرى مثل استعمال الصنف java util Date1 نقطة
-
حل المشكلة هو أن ال widget يجب أن تكون استدعاء دالة، أي ينقص قوسين () الخاصين بالاستدعاء password = forms.CharField(widget=forms.PasswordInput()) ^^1 نقطة
-
هاهي دالة الحذف لدي if( !v || v.length === 0){ console.log("tasks not found"); }else{ let newarr= v.split(','); console.log(newarr); for(let i=0; i<newarr.length;i++){ i.toString(); let del=document.getElementById(`${i}`); del.addEventListener('click',function(){ let de=document.getElementById(`${i}`); console.log(newarr); // let va=newarr.splice(i,1); let spliced= newarr.splice(i,1); // console.log(va); console.log(spliced); window.localStorage.setItem("value",v); console.log(v); let myd=document.getElementById(`my-div${i}`); myd.remove(); de.remove(); }) v=newarr; } } وهي تحذف بطريقة صحيحة لكن يلزمني تحيل الصفحة بعد ان احذف كل عنصر وحيد . في أي مكان أطبق دالة الحذف التي اقترحتها علي اعلاه بحيث أن أحذف العنصر سواءا بعد إضافته مباشرة أو بعد الاضافة وتحميل الصفحة ومن ثم حذفه ؟1 نقطة
-
في Django في حال كنت تعتقد أن عملية معينة ستحتاج منك وقت عند الطلب وجعل الموقع الخاص بك أبطء فعليك بالستخدام ما يسمى ب celery ما هو celery هو سيرفر منفصل تقوم بإنشائه أسمه celery تقوم من خلاله ترحيل العمليات التي تقتعد أخذ وقت إضافي ولا يحتاج المستخدم لإنتظار الصفحة حتى تنتهي من العملية على سبيل المثال العمليات الخاصة بإرسال الإيميلات و ملفات و أمور التي تحتاح وقت للعمل عليها. طريقة عمل ذلك كتالي:(مثال) أنشئ ملف proj/proj/celery.py import os from celery import Celery # Set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') app = Celery('proj') # Using a string here means the worker doesn't have to serialize # the configuration object to child processes. # - namespace='CELERY' means all celery-related configuration keys # should have a `CELERY_` prefix. app.config_from_object('django.conf:settings', namespace='CELERY') # Load task modules from all registered Django apps. app.autodiscover_tasks() @app.task(bind=True) def debug_task(self): print(f'Request: {self.request!r}') كيفية أعداد celery: اولاً عليك تثبيت RabbitMQ ينصح إستخدام أنظمة لينكس: $ sudo apt-get install rabbitmq-server ثم تشغيله: قم بتشغيله في نافذة أوامر منفصلة $ docker run -d -p 5672:5672 rabbitmq ستظهر لك العبارة التالية Starting rabbitmq-server: SUCCESS. لتحميل RabbitMQ من هنا. الأن سنقوم بتثبيت Celery: pip install celery لنقم بإعداد أول مهمة عبر celery قم بإنشاء ملف بإسم tasks.py في مشروعك: أضف الكود التالي في الملف: from celery import Celery app = Celery('tasks', broker='pyamqp://guest@localhost//') """ هذه دالة سوف يتم تنفيذها بشكل منفصل عند إستدعائها من خلال عملية أخرى في النظام وستعمل في موجه أوامر منفصل عن اللذي قمت بتشغيل عليه runserver """ @app.task def add(x, y): return x + y و الأن تشغيل the Celery worker server: في موجه أوامر منفصل لا تقم بإغلاقه سيتم تشغيل app.task عليه أكتب الأمر التالي: $ celery -A tasks worker --loglevel=INFO لأستدعاء الأمر في أي مكان من المشروع ما عليك سوى فعل التالي: from tasks import add add.delay(4, 4) تمت معالجة المهمة الآن بواسطة موجه الأوامر الذي بدأته سابقًا. يمكنك التحقق من ذلك من خلال النظر في مخرجات في موجه الأوامر. يمكنك معرفة المزيد من خلال documentation الخاص ب celery. وبما أنك تريد ضغط ملفات يمكنك وضع عميلة الضغط ك task و تفعيله داخل celery حتى لا تجعل الموقع بطئ.1 نقطة
-
صحيح سوف تستعمل QueryDict عند إجراء طلب من نوع PUT سوف تقوم باستدعاء QueryDict من django.http ومن ثم تمرير لها متن الطلب أو البيانات التي بداخله request.body حينها سوف تحصل على بيانات الطلب الذي من نوع PUT ومن ثم جلب البيانات من المفتاح الذي تُريده الذي هو في سؤالك description من دالة get كما في الكود التالي : from django.http import QueryDict def request_put(request): put = QueryDict(request.body) description = put.get('description') ...1 نقطة
-
تتطور علوم الحاسوب بطريقة سريعة ومتزايدة، ويركز الاختصاصيون اليوم على تقنيات التعلم الآلي والتعلم العميق التي تعتمد على برمجيات معينة مثل المكتبات المتطورة في لغة البرمجة بايثون. يسعى الطلاب والباحثون إلى تعلم هذه التقنيات وبناء المشاريع باستخدامها، وبالتالي فإنهم يحتاجون بيئةً برمجيةً متطورة ومواصفات متقدمة ليتمكن النظام من تحمّل عبء الذاكرة الكبيرة ومعالجة البيانات الضخمة. والمشكلة أنه من الصعب تأمين هذه المواصفات العالية في أجهزتهم. ولذلك أطلقت غوغل منصة Google Colab لمساعدة الطلاب والباحثين على التعلم والتغلب على العقبات. في هذا المقال، سنتحدث عن منصة جوجل كولاب Google Colab وأهم استخداماتها وميزاتها، ولماذا هي أداة مهمة للطلاب والمختصين بعلم البيانات. ما هو NoteBook؟ لغات البرمجة هي اللغات المستخدمة لتطوير البرامج والتطبيقات، وتُشكل الوسيط بين اللغة التي يفهمها الإنسان واللغة التي تفهمها الآلة. كل البرامج والتطبيقات التي تعمل على الحواسيب والهواتف المحمولة أُنشئت باستخدام إحدى لغات البرمجة، حيث يبني المطورون التطبيقات برمجيًا ليتمكن أي شخص من استخدامها. عندما يبرمج أحد المطورين نموذجًا لحل مشكلة معينة، سيكون عليه إرفاق النموذج بشرحٍ لطريقة عمله، ومن الصعب القيام بذلك من خلال التعليمات البرمجية فقط، لذلك سيضطر إلى إعداد عرض تقديمي منفصل. لتسهيل عمل المبرمجين صُمم برنامج دفتر الملاحظات NoteBook، الذي يتضمن سطورًا خاصةً بالتعليمات البرمجية، ومساحةً لكتابة النصوص والتعليقات وإضافة الصور والجداول والرسوم البيانية. وتساعد مستندات NoteBook على فهم الشيفرات البرمجية وطريقة عمل البرنامج. يعَد دفتر الملاحظات أو NoteBook مستندًا يمكن من خلاله كتابة التعليمات البرمجية مثل شيفرات لغة بايثون وكتابة النصوص وإضافة الصور، ويمكن تنفيذها وعرض النتائج. يُعد Google Colab نسخةً سحابيةً محسنةً من Jupyter Notebook المخصص لكتابة وتشغيل الشيفرات البرمجية ومستندات Notebook، وذلك من خلال بيئة برمجية متكاملة أو مستعرض ويب. يوفر Google Colab وصولًا مجانيًا إلى وحدات معالجة الرسومات GPU وTPU، والتي تستخدم لبناء نموذج التعلم الآلي أو التعلم العميق. ويُعد Google Colab خيارًا مثاليًا لملايين المستخدمين لأنه مجاني ولا يتطلب سوى امتلاك حساب غوغل، كما أنه لا يحتاج إلى سرعات اتصال عالية. ويأتي مع حزم مُثبتة مسبقًا وجاهزة للاستخدام، بالتالي لن يحتاج المستخدم إلى إعداد البيئة. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن كيفية استخدام Google Colab إذا كنت قد استخدمت منصة Jupyter Notebooks من قبل، فستلاحظ التشابه الكبير بينها وبين منصة Google Colab. تمكّنك منصة Google Colab من كتابة وتنفيذ التعليمات البرمجية المكتوبة بلغة بايثون من خلال متصفحك دون الحاجة إلى تثبيت أي محرر أو برنامج. ويمكن استخدام هذه المنصة بسهولة وربطها بحساب غوغل، وتوفر لك وصولًا مجانيًا إلى وحدات معالجة الرسومات GPU ووحدات المعالجة المركزية TPU. كانت تُستخدم منصة Google Colab في السابق كأداةٍ داخلية لتحليل بيانات غوغل. وأصبحت فيما بعد متاحةً للعامة ومُستخدمةً من قبل عدد كبير من الأشخاص. يستخدم الطلاب والباحثين منصة Google Colab لبناء المشاريع البرمجية التي تتضمن تقنيات التعلم الآلي أو التعلم العميق. وتؤمّن هذه المنصة الموارد اللازمة لتشغيل تجارب علوم البيانات وخاصةً لمن لا يمتلك وحدة معالجة رسومات متطورة في جهازه. تُعَد النسخة المجانية من Google Colab مناسبةً للطلاب وللمبتدئين في علم البيانات، ولكنها غير مناسبة للمشاريع الضخمة والتي تتطلب معالجة كميات كبيرة من البيانات والصور، لذلك أصدرت غوغل في أوائل عام 2020 النسخة المدفوعة Google Colab Pro، والتي تؤمّن نظام معالجة رسومات أكثر سرعةً وذاكرة وصول عشوائي إضافية. وقد قدّم Colab Pro حلًا للعديد من المشكلات التي تواجه مهندسي التعلم الآلي وعلماء البيانات. لا يزال Google Colab Pro حتى الآن (وقت كتابة المقال) غير متوافر في العديد من البلدان، ويقتصر على البلدان التالية: الولايات المتحدة وكندا واليابان والبرازيل وألمانيا وفرنسا والهند والمملكة المتحدة وتايلاند. ماذا يقدم لك Google Colab؟ يسمح Google Colab لملايين الأشخاص بالتعلم وتنفيذ المشاريع بلغة بايثون، واستخدام المكتبات المثبتة مسبقًا، ويقدم حلًا للكثير من التحديات التي تواجههم. من السهل البدء باستخدام Google Colab، ولن تحتاج إلى تثبيت أي أدوات أو برامج، كما أنه لا يتطلب جهاز حاسوب بمواصفات خارقة. وستحتاج فقط إلى متصفح وستظهر واجهة Google Colab بشكل مشابه لواجهة jupyter Notebook. يمكن استخدام وحدة معالجة الرسومات بنقرة واحدة، وتنفيذ الشيفرات البرمجية بسهولة؛ مما يجعله بيئةً مثاليةً لتنفيذ مشاريع التعلم الآلي والتعلم العميق وتحليل البيانات الضخمة. يدعم كولاب لغة البرمجة بايثون، ويسمح لك بتشغيل التعليمات البرمجية في كتل، ويمكنك عرض النتائج والمخرجات الرسومية بسهولة، ولكن تقتصر مدة الجلسة الواحدة على 12 ساعة من الاستخدام المتواصل، وبعد انتهاء الوقت ستنتهي الجلسة. تُحفظ مستندات Google Colab التي تُنشئها على منصة غوغل درايف، بالتالي سيكون من السهل مشاركتها مع عدة أشخاص، ويمكنهم جميعًا العمل على نفس الدفتر في نفس الوقت دون أية مشاكل. توفّر غوغل استخدام وحدة معالجة الرسومات NVIDIA Tesla K80 المجانية. وإذا قمت بوصل Colab بـ Google Drive، ستحصل على 15 غيغابايت من مساحة القرص لتخزين مجموعات البيانات. من سلبيات Google Colab صعوبة اكتشاف الأخطاء في التعليمات البرمجية قبل تشغيلها، ولكن لا تزال هي المنصة الأفضل للاستخدام بفضل الميزات العديدة الموجودة. أما فيما يلي، فسنذكر أهم الميزات المتوفرة في هذه المنصة: محرر لكتابة التعليمات البرمجية باستخدام لغة البرمجة بايثون. إنشاء ومشاركة مستندات Notebook. خدمة سحابية مجانية مع GPU وTPU. حفظ واستيراد المستندات من وإلى خدمة غوغل للتخزين السحابي Google Drive. إمكانية توثيق الشيفرات البرمجية وشرحها وتوضيحها. استيراد قواعد البيانات من مصادر خارجية مثل Kaggle. استيراد مستندات Notebook من GITS. تتواجد العديد من مكتبات علوم البيانات والتعلم الآلي ُمثبتة مسبقًا على منصة كولاب مثل مكتبة Pandas وNumPy وTensorflow وKeras وOpenCV. الفرق بين Jupyter وGoogle Colab؟ من بين أبرز الفروقات بين كل من Jupyter وGoogle Colab، نذكر الآتي: يعمل Jupyter على جهاز حاسوب محلي، أما كولاب فيعمل على خادم غوغل. عند استخدام Jupyter تُحفظ الملفات على القرص الثابت على جهاز الحاسوب، بالمقابل تخزّن الملفات في حساب غوغل درايف عند استخدام غولاب. يستهلك Jupyter ذاكرة الوصول العشوائي RAM ووحدة المعالجة المركزية وأقراص التخزين المثبتة على حاسوبك الشخصي؛ أما Google Colab، فيعتمد على التخزين السحابي، ويمنحك وصولًا إلى ذاكرة وصول عشوائي أعلى، و70 وحدة تخزين على القرص، وقدرة على استخدام وحدة معالجة الرسومات المجانية GPU. يعتمد تشغيل Jupyter على حد ذاكرة النظام على جهازك، أما Google Colab، فيحدد وقت التشغيل بمقدار 12/24 عند استخدام النسخة المجانية، ويمكن أن تحدث انقطاعات أثناء الجلسات. عند استخدام Google Colab لن تضطر إلى تثبيت أي مكتبة لأن معظم المكتبات مثبتة مسبقًا، بينما عند استخدام Jupyter، يجب عليك تثبيت جميع المكتبات المطلوبة حسب حاجتك. يُفضل استخدام Jupyter إذا كان عملك سريًا ويتطلب الخصوصية. وبالمقابل، يُعد Google Colab الخيار الأفضل إذا كان مشروعك يتطلب قدرات تخزين عالية ولا يمكنك شراء جهاز بالمواصفات المطلوبة. ما هو GPU ولماذا نحتاجه للذكاء الاصطناعي؟ صُممت وحدات معالجة الرسومات لتدريب نماذج الذكاء الاصطناعي والتعلم العميق. تضم هذه الوحدات عددًا كبيرًا من النوى التي تسمح بتنفيذ العديد من العمليات المتوازية. البرامج التي تستخدم تقنيات التعلم العميق تحتاج إلى التعامل مع كميات هائلة من البيانات، وتوفر وحدات GPU عرض نطاق ترددي مناسب. تتطلب معالجة البيانات الضخمة استخدام أجهزة متطورة وسريعة. وتكمن التحديات التي ترافق هذا النوع من البيانات في تخزينها ومعالجتها ومشاركتها ونقلها. ولأن البيانات الضخمة حجر الأساس للذكاء الاصطناعي، فإن التعامل معها يشكّل عائقًا للطلاب والباحثين، نتيجة صعوبة توافر الأجهزة ذات المواصفات العالية. الميزة الأساسية التي تقدّمها منصة غوغل كولاب هي توفير وحدات معالجة الرسومات GPU وTPU المجانية، والتي تمكّن المستخدمين من تدريب نماذج التعلم العميق المعقدة مع مجموعات البيانات الضخمة، وقد تستغرق هذه العملية عدة ساعات على الحواسيب العادية. وبالمقابل، هي تستغرق بضعة دقائق باستخدام وحدات معالجة الرسومات المتطورة. يفضل الباحثون استخدام وحدة معالجة الرسومات المدمجة في غوغل كولاب بسبب القوة السحابية المطلقة وسرعة التنفيذ التي تتمتع بها. دورة الذكاء الاصطناعي احترف برمجة الذكاء الاصطناعي AI وتحليل البيانات وتعلم كافة المعلومات التي تحتاجها لبناء نماذج ذكاء اصطناعي متخصصة. اشترك الآن خاتمة أدى التطور في العلم والاقتصاد وتكنولوجيا المعلومات إلى زيادة كمية البيانات الرقمية وأصبح من الصعب التعامل معها بالتقنيات العادية. وازدادت الحاجة إلى وجود أدوات تسمح لنا بتحليل البيانات لاستخدامها في الذكاء الاصطناعي وتطوير تطبيقات التعلم الآلي. إذا كنت ترغب بالدخول إلى عالم البيانات والذكاء الاصطناعي، يجب أن تكون على اطلاع ومعرفة بأهم الأدوات المتوافرة مثل غوغل كولاب، الذي يمنحك فرصةً مثاليةً للتعلم واكتساب الخبرات. اقرأ أيضًا دليل استخدام Google Colab كيفية التعامل مع البيانات في Google Colab1 نقطة
-
الإصدار 1.0.0
10327 تنزيل
تُعد أنظمة التشغيل موضوعًا متقدمًا في العديد من برامج علوم الحاسوب، حيث يتعرف المتعلم على كيفية البرمجة بلغة C بحلول الوقت الذي يتعرف فيه على أنظمة التشغيل، وربما يأخذ المتعلم فصلًا دراسيًا في معمارية الحاسوب Computer Architecture قبل ذلك، فيصبح الهدف من تقديم هذا الموضوع عادةً هو عرض تصميم وتنفيذ أنظمة التشغيل للطلاب مع افتراض ضمني أن بعضهم سيجري بحثًا في هذا المجال، أو يكتب جزءًا من نظام تشغيل. هذا الكتاب مترجم عن الكتاب Think OS لكاتبه آلن داوني Allen B. Downey والذي يعد مسودة أولية لم تكتمل بصورة نهائية بعد إذ طُوّر لفصلٍ دراسي في كلية أولين Olin College يدعى أنظمة البرمجيات Software Systems. لا يفترض هذا الكتاب أنك قد درست معمارية الحاسوب، فيجب أن يمنحك فهمًا أفضل أثناء قراءته عن الحاسوب ومعماريته وكيف يعمل المعالج والذاكرة فيه وكيف تُدار العمليات وتُخزَّن الملفات وما يحدث عند تشغيل البرامج، وما يمكنك القيام به لجعل البرامج تعمل بصورة أفضل وأسرع بوصفك مبرمجًا. يشرح الفصل الأول بعض الاختلافات بين اللغات المُصرَّفة compiled واللغات المُفسَّرة interpreted، مع بعض الأفكار حول كيفية عمل المصرِّفات compilers، ويشرح الفصل الثاني كيف يستخدم نظام التشغيل العمليات لحماية البرامج قيد التشغيل من التداخل مع بعضها البعض. ويشرح الفصل الثالث الذاكرة الوهمية virtual memory وترجمة العناوين، ويتحدث الفصل الرابع عن أنظمة الملفات ومجرى البيانات، ويصف الفصل الخامس كيفية تشفير الأرقام والأحرف والقيم الأخرى، ويشرح أيضًا العامِلات الثنائية bitwise operators. أما الفصل السادس، فيشرح كيفية استخدام إدارة الذاكرة الديناميكية وكيفية عملها، ويدور الفصل السابع حول التخبئة caching وهرمية الذاكرة. ويشرح الفصل الثامن تعدد المهام multitasking والجدولة scheduling. ويدور الفصل التاسع حول خيوط POSIX وكائنات المزامنة mutexes، ويشرح الفصل العاشر المتغيرات الشرطية POSIX ومشكلة المنتج / المستهلك، ويدور الفصل الحادي عشر حول استخدام متغيرات تقييد الوصول POSIX وتطبيقها في لغة C. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «مدخل إلى أنظمة التشغيل»، أو تجدها مسردة بالترتيب التالي: الفصل الأول: مفهوم التصريف Compilation في لغات البرمجة الفصل الثاني: العمليات Processes في أنظمة التشغيل الفصل الثالث: الذاكرة الوهمية Virtual memory في نظام التشغيل الفصل الرابع: فهم الملفات Files وأنظمة الملفات file systems الفصل الخامس: تمثيل الأعداد والنصوص بالبتات وإجراء العمليات على مستوى البت الفصل السادس: إدارة الذاكرة Memory management في لغة C الفصل السابع: فهم عملية التخبئة Caching في معمارية الحاسوب الفصل الثامن: تعدد المهام Multitasking في الحواسيب الفصل التاسع: مفهوم الخيوط Threads في عملية المعالجة الفصل العاشر: المتغيرات الشرطية وحلها مشاكل التزامن بين العمليات في لغة C الفصل الحادي عشر: متغيرات تقييد الوصول Semaphores في لغة البرمجة سي C1 نقطة -
1 نقطة
-
أنت لا تحتاج استخدام webpack على الأقل مباشرة في مشاريعك لأن التكنولوجيات المتوفرة حاليا تجهز كل الاحتياجات لك في الخلفية يمكنك ان تحتاج webpack عندما تريد انشاء مشروع من الصفر و لا يوجد سبب في وقتنا هذا يدفعك لذلك غير تعلم التكنولوجيا في حد ذاتها لكنك حتما ستحتاج webpack اذا كنت تطور أشياء يستخدمها المطورين وكمثال على ذلك عندما طورو react وخرج للعلن قامو بانشاء أداة create react app المطورين الذين طورو الأداة كانو بحاجة ماسة ل webpack لذا الأمر يعتمد فقط على احتياجاتك1 نقطة
-
Webpack عبارة عن مُجمّع ملفات ثابتة (مثل الصور وتنسيقات CSS وغيرها) لتطبيقات JavaScript الحديثة. ويوفر Webpack مجموعة كبيرة من الإعدادات والإضافات التي تسهل هذه العملية، كما يوفر Webpack أيضًا ما يسمى المحملات loaders التي تمكننا من التعامل مع أنواع مختلفة من الملفات وضغطها وتوفيرها في مجلد المشروع النهائي، ونفس الأمر بالنسبة لكود CSS أو SCSS و JavaScript حيث يقوم Webpack بمساعدة babel على سبيل المثال من تحويل كود JavaScript من نسخة حديثة مثل ES6 أو ES7 إلى إصدار أقدم من JavaScript وبالتالي يمكن لمجموعة أكبر من المتصفحات تنفيذ كود JavaScript بدون مشكلة. كما يمكن إستخدام Webpack بملف إعدادات مختلف webpack.config.js لبناء أكثر من نسخة من نفس المشروع، نسخة للتطوير development ونسخة أخرى للنشر production على سبيل المثال. وكل ملخص لما سبق، يقوم Webpack بإستخدام Node.js لعمل الكثير من المهام المعتادة وأتمتتها بسهولة من خلال الكثير من الإضافات plugins والمحملات loaders.1 نقطة
-
1 نقطة