اذهب إلى المحتوى

لوحة المتصدرين

  1. محمد صقر3

    محمد صقر3

    الأعضاء


    • نقاط

      3

    • المساهمات

      47


  2. Adnane Kadri

    Adnane Kadri

    الأعضاء


    • نقاط

      2

    • المساهمات

      4970


  3. Wael Aljamal

    Wael Aljamal

    الأعضاء


    • نقاط

      2

    • المساهمات

      6975


  4. جوزيف ناثان

    جوزيف ناثان

    الأعضاء


    • نقاط

      2

    • المساهمات

      46


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 05/02/21 in أجوبة

  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']);
    2 نقاط
  2. هل يحق للعميل في موقع مستقل استلام السورس كود بعد انتهاء التنفيذ ولا يقتصر انتهاء المشروع بـ تسطيب المشورع فقط مثل موقع تجاري ؟
    1 نقطة
  3. كيف يمكننا أن نمر على عناصر صفّين بالتوازي، مثلًا : foo = (1, 2, 3) bar = (4, 5, 6) for (f, b) in some_iterator(foo, bar): print("f: ", f, "; b: ", b) هل يوجد طريقة مختصرة أكثر! الخرج المتوقع هكذا: f: 1; b: 4 f: 2; b: 5 f: 3; b: 6
    1 نقطة
  4. لنفرض لدي اطار البيانات التالي df = pd.DataFrame([[1, 2, 'March'],[5, 6, 'Dec'],[3, 4, 'April']], columns=['a','b','m']) يكون الخرج a b m 0 1 2 March 1 5 6 Dec 2 3 4 April اردت ترتيب الصفوف حسب الشهر كيف يمكنني ذلك a b m 0 1 2 March 2 3 4 April 1 5 6 Dec
    1 نقطة
  5. هل يمكن تغيير الدومين والاستضافة من موقع الى موقع اخر
    1 نقطة
  6. ما هي فكرة البرومو كود كالعمل كخصومات في التطبيقات التجارية كتطبيقات التوصيل او الشراء
    1 نقطة
  7. كما ترى اسم الدورة تطوير واجهات المستخدم لذا هي لتطوير الواجهة فقط Frontend أما بخصوص تطوير الخلفية Backend فلديك عدة دورات أخرى من حسوب والدورات هي دورة تطوير التطبيقات بإستخدام JavaScript دورة تطوير تطبيقات الويب بإستخدام لغة PHP دورة تطوير تطبيقات الويب بإستخدام لغة Ruby دورتي PHP و Ruby هي خاصة بتطوير الخلفية فقط بإستخدام إحدى اللغتين لكن دورة تطوير التطبيقات بإستخدام JavaScript هي دورة أوسع بكثير ومسارات الدورة كالآتي أساسيات لغة JavaScript أساسيات مكتبة React.js أساسيات بيئة Node.js تطوير تطبيق جوال باستخدام React Native تطوير تطبيق محادثة شبيه بتطبيق WhatsApp تطوير تطبيق سطح مكتب باستخدام Electron.js بلغة واحدة وهي JavaScript ستتعلم تطوير الواجهات بإستخدام مكتبة فيسبوك الشهيرة React.js وأيضا تطوير تطبيقات الخلفية بإستخدام Node.js وأيضا تطوير تطبيقات الهواتف الذكية لنظامي الأندرويد والآيفون بإستخدام React Native وأيضا تطوير تطبيقات سطح المكتب للوندوز والماك واللينوكس بإستخدام Electron.js ، ومن أشهر البرامج الذي تم بنائه بإستخدام Electron.js برنامج VS Code كل هذا بلغة برمجة واحدة وهي JavaScript أما بخصوص كيفية الربط ، فالربط يكون بإستخدام مايسمى بال API
    1 نقطة
  8. مرحبا عمر، نحن نهتم بالتعلم و التطبيق أكثر من الوقت الذي نقضيه في التعلم لأنه علينا تنمية مهاراتنا و إن التعلم غير محدود وكل يوم سوف تكتشف مواضيع جديدة و طرق أفضل لتصميم الصفحات و كتابة تعليمات بطريقة سليمة أكثر، وحل المشكلات البرمجية المتنوعة. يمكنك ملاحظة أن مطوري التقنيات يضيفون تحديثات كل فترة و هذا يتطلب منا دوما الإطلاع عليها و فهمها و محاولة الاستفادة منها لتحسين تطبيقاتنا، لذلك أنصحك بتغيير مفهوم حصر التعلم بمدة معينة لإنهاء موضوع ما فهي لاتحتسب هكذا. لنحاول حساب مدة تقديرة لوقت التعلم بحدود الدورة. إن الدورة توفر تقريبا 50 ساعة فيديو، وهذا الوقت ستقضيه فقط في المشاهدة على الأقل. حسنا، لكل ساعة فيديو سوف تقضي تقريبا ضعف الوقت أي ساعتين للتطبيق و مراجعة الدروس ثم فتح مواقع مختلفة و محاولة التوسع في بعض الأفكار و المفاهيم التي تكون جديدة بالنسبة لك لتجميع أكبر قدر متنوع من الأفكار لها. ستعترضك بعض المشاكل أثناء التعلم، والمشروع لا يعمل مثلا، سوف تطرح أسئلة و يجيبك المدربون و تحاول تعديل الشيفرات البرمجية لديك، أيضا هذا يأخذ بعض الوقت. بعد إنهاء مشاهدة الدورة، سوف تقوم بالتحضير للامتحان ومراجعة سريعة لكل شئ تعلمته… ومن ثم تقديم الامتحان. كمحصلة، ستحتاج ل 200 ساعة تعلٌّم يتم تقسيمها كما تريده أنت بتخصيص أيام أو ساعات للدراسة.. أي ستقضي بين ثلاثة لأربعة أشهر، واكرر نريد فهم كل المعلومات و التطبيق عليها لضمان الاستفادة منها. أتمنى لك التوفيق
    1 نقطة
  9. الوقت نسبي بمعني يعتمد علي الوقت اللي مخصص للدراسه وكمان علي الشخص وطريقة تفكيره وإذا كان لديه سابق معرفه عن مجال الدراسه وهكذا ما في وقت محدد لكل الناس تختلف من شخص لأخر
    1 نقطة
  10. تحديث : يمكنك أيضا إضافة الevents المتعلقة بالخيارات المنشئة بعد إضافتها . مثال : function setListeners(){ document.querySelectorAll('select#products option').addEventListener('click' ,function(){ // }); } ومن ثم إنشاء الأحداث بعد إنشاء العناصر : function getProducts(target) { let getProducts = new XMLHttpRequest(); getProducts.open('GET', '/invoices/getProducts/' + target); getProducts.onload = function() { if (this.readyState === 4 && this.status === 200) { // succes let products = JSON.parse(this.responseText); products.forEach(function(item) { let option = document.createElement('option'), text = document.createTextNode(item['product_name']); option.appendChild(text); option.value = item['id']; productsSelect.appendChild(option); }); setListeners(); // إستدعاء الدالة } else { alert('لقد حدث خطأ غير متوقع'); } } getProducts.send(); }
    1 نقطة
  11. الفكرة أخي الكريم أن الأوبشن الجديدة لن يتم الإستماع إليها لأن ال DOM تم تحميلها بالفعل ولذلك يجب علينا أن نجعل الجافا إسكربت تقوم بالإستماع لأي شئ جديد عن طريق أكتر من حل : $(document).delegate('#section', 'change', function (e) { // write your code here }); أو عن طريق دالة ال on $(document).on('change', '#section', function() { // write your code here });
    1 نقطة
  12. اهلا بك اخي الكريم تحيه طيبه لك طريقتك صحيحه 100%100 ولكن المشكله ان الموقع هذا حتى عشان تحصل على الاسعار ب USD يحتاج اشتراك يعني توجد قيود على الامر ولكن بعد البحث وجدت موقع جميل يقدم هذا الخدمه ممكن استعماله في بداية الامر وبعدها التفكير في شراء احد الحزم من الموقع هذا او موقع مختلف على حسب الرغبه https://free.currconv.com/ هذا اسم الموقع وهو يقدم الخدمه من 2013 تقريبا بشكل مجاني مع وجود الاشتركات لو رغب المستخدم للحصول على خدمه افضل انا قمت بتخلي عن الفكره في الوقت الحالي قمت بعملها بطريقه مختلفه كسعر ثابت فقط بعمله واحده
    1 نقطة
  13. توجد شركة agara يمكنك قراءة التوثيق الخاص بها من هنا , تقريباً هي أفضل شركة تقدم خدمات live Streaming. بعد الاشتراك في هذه الخدمة يمكنك تضمين مكتبة agora_rtc_engine داخل مشروعك يمكنك إيجاد المكتبة من هنا. في ملف pubspec.yaml تضع التالي agora_rtc_engine: ^3.3.3 ثم تقوم بتنفيذ الأمر التالي flutter pub get بعد الاشتراك ستجد APPI_ID, TOKEN حيث في ملف main.dart ستقوم بوضع كليهما بهذا الشكل const APP_ID = ''; const Token = ''; ثم تقوم بتعريف ملف main.dart بهذا الشكل import 'dart:async'; import 'package:agora_rtc_engine/rtc_engine.dart'; import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Live Stream', theme: ThemeData( primarySwatch: Colors.blue, ), home: homePage(), ); } } ثم تقوم بتعريف homePage بهذا الشكل class homePage extends StatefulWidget { @override State<StatefulWidget> createState() => IndexState(); } class IndexState extends State<homePage> { final _channelController = TextEditingController(); bool _validateError = false; ClientRole _role = ClientRole.Broadcaster; @override void dispose() { // dispose input controller _channelController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Agora Flutter QuickStart'), ), body: Center( child: Container( padding: const EdgeInsets.symmetric(horizontal: 20), height: 400, child: Column( children: <Widget>[ Row( children: <Widget>[ Expanded( child: TextField( controller: _channelController, decoration: InputDecoration( errorText: _validateError ? 'Channel name is mandatory' : null, border: UnderlineInputBorder( borderSide: BorderSide(width: 1), ), hintText: 'Channel name', ), )) ], ), Column( children: [ ListTile( title: Text(ClientRole.Broadcaster.toString()), leading: Radio( value: ClientRole.Broadcaster, groupValue: _role, onChanged: (ClientRole value) { setState(() { _role = value; }); }, ), ), ListTile( title: Text(ClientRole.Audience.toString()), leading: Radio( value: ClientRole.Audience, groupValue: _role, onChanged: (ClientRole value) { setState(() { _role = value; }); }, ), ) ], ), Padding( padding: const EdgeInsets.symmetric(vertical: 20), child: Row( children: <Widget>[ Expanded( child: RaisedButton( onPressed: joinStream, child: Text('Join'), color: Colors.green, textColor: Colors.black, ), ) ], ), ) ], ), ), ), ); } /// زر الانضمام إلى البث Future<void> joinStream() async { setState(() { _channelController.text.isEmpty ? _validateError = true : _validateError = false; }); if (_channelController.text.isNotEmpty) { // انتظر إذن الكاميرا والميكروفون await _handleCameraAndMic(); // أدخل صفحة البث المباشر وانضم إلى القناة باستخدام اسم القناة والدور المحدد في صفحة تسجيل الدخول await Navigator.push( context, MaterialPageRoute( builder: (context) => CallPage( channelName: _channelController.text, role: _role, ), ), ); } } // لتفعيل الكاميرا و المايكرفون Future<void> _handleCameraAndMic() async { await PermissionHandler().requestPermissions( [PermissionGroup.camera, PermissionGroup.microphone], ); } } كود صفحة البث , يوجد شرح مضمن بداخله للدوال class livePage extends StatefulWidget { final String channelName; final ClientRole role; const livePage({Key key, this.channelName, this.role}) : super(key: key); @override _livePageState createState() => _livePageState(); } class _livePageState extends State<CallPage> { final _users = <int>[]; final _infoStrings = <String>[]; bool muted = false; RtcEngine _engine; @override void dispose() { _users.clear(); _engine.leaveChannel(); _engine.destroy(); super.dispose(); } @override void initState() { super.initState(); initialize(); } Future<void> initialize() async { if (APP_ID.isEmpty) { setState(() { _infoStrings.add( 'مفقود ، يرجى تقديم APP_ID الخاص بك في', ); _infoStrings.add('Agora Engine is not starting'); }); return; } await _initAgoraRtcEngine(); _addAgoraEventHandlers(); /// Join channel await _engine.joinChannel(Token, widget.channelName, null, 0); } // تخطيط شريط الأدوات Widget _toolbar() { if (widget.role == ClientRole.Audience) return Container(); return Container( alignment: Alignment.bottomCenter, padding: const EdgeInsets.symmetric(vertical: 48), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ RawMaterialButton( onPressed: _onToggleMute, child: Icon( muted ? Icons.mic_off : Icons.mic, color: muted ? Colors.white : Colors.blueAccent, size: 20.0, ), shape: CircleBorder(), elevation: 2.0, fillColor: muted ? Colors.blueAccent : Colors.white, padding: const EdgeInsets.all(12.0), ), RawMaterialButton( onPressed: () => _onCallEnd(context), child: Icon( Icons.call_end, color: Colors.white, size: 35.0, ), shape: CircleBorder(), elevation: 2.0, fillColor: Colors.redAccent, padding: const EdgeInsets.all(15.0), ), RawMaterialButton( onPressed: _onSwitchCamera, child: Icon( Icons.switch_camera, color: Colors.blueAccent, size: 20.0, ), shape: CircleBorder(), elevation: 2.0, fillColor: Colors.white, padding: const EdgeInsets.all(12.0), ) ], ), ); } Future<void> _initAgoraRtcEngine() async { RtcEngineConfig config = RtcEngineConfig(APP_ID); _engine = await RtcEngine.createWithConfig(config); await _engine.setChannelProfile(ChannelProfile.LiveBroadcasting); await _engine.setClientRole(widget.role); } void _addAgoraEventHandlers() { _engine.setEventHandler(RtcEngineEventHandler(error: (code) { setState(() { final info = 'onError: $code'; _infoStrings.add(info); }); }, joinChannelSuccess: (channel, uid, elapsed) { setState(() { final info = 'onJoinChannel: $channel, uid: $uid'; _infoStrings.add(info); }); }, leaveChannel: (stats) { setState(() { _infoStrings.add('onLeaveChannel'); _users.clear(); }); }, userJoined: (uid, elapsed) { setState(() { final info = 'userJoined: $uid'; _infoStrings.add(info); _users.add(uid); }); }, userOffline: (uid, elapsed) { setState(() { final info = 'userOffline: $uid'; _infoStrings.add(info); _users.remove(uid); }); })); } /// تخطيط شريط الأدوات Widget _toolbar() { if (widget.role == ClientRole.Audience) return Container(); return Container( alignment: Alignment.bottomCenter, padding: const EdgeInsets.symmetric(vertical: 48), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ RawMaterialButton( onPressed: _onToggleMute, child: Icon( muted ? Icons.mic_off : Icons.mic, color: muted ? Colors.white : Colors.blueAccent, size: 20.0, ), shape: CircleBorder(), elevation: 2.0, fillColor: muted ? Colors.blueAccent : Colors.white, padding: const EdgeInsets.all(12.0), ), RawMaterialButton( onPressed: () => _onCallEnd(context), child: Icon( Icons.call_end, color: Colors.white, size: 35.0, ), shape: CircleBorder(), elevation: 2.0, fillColor: Colors.redAccent, padding: const EdgeInsets.all(15.0), ), RawMaterialButton( onPressed: _onSwitchCamera, child: Icon( Icons.switch_camera, color: Colors.blueAccent, size: 20.0, ), shape: CircleBorder(), elevation: 2.0, fillColor: Colors.white, padding: const EdgeInsets.all(12.0), ) ], ), ); } // لوحة معلومات لعرض السجلات Widget _panel() { return Container( padding: const EdgeInsets.symmetric(vertical: 48), alignment: Alignment.bottomCenter, child: FractionallySizedBox( heightFactor: 0.5, child: Container( padding: const EdgeInsets.symmetric(vertical: 48), child: ListView.builder( reverse: true, itemCount: _infoStrings.length, itemBuilder: (BuildContext context, int index) { if (_infoStrings.isEmpty) { return null; } return Padding( padding: const EdgeInsets.symmetric( vertical: 3, horizontal: 10, ), child: Row( mainAxisSize: MainAxisSize.min, children: [ Flexible( child: Container( padding: const EdgeInsets.symmetric( vertical: 2, horizontal: 5, ), decoration: BoxDecoration( color: Colors.yellowAccent, borderRadius: BorderRadius.circular(5), ), child: Text( _infoStrings[index], style: TextStyle(color: Colors.blueGrey), ), ), ) ], ), ); }, ), ), ), ); } // وقف البث المباشر void _onCallEnd(BuildContext context) { Navigator.pop(context); } /// صامت void _onToggleMute() { setState(() { muted = !muted; }); _engine.muteLocalAudioStream(muted); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Agora Flutter QuickStart'), ), backgroundColor: Colors.black, body: Center( child: Stack( children: <Widget>[ _panel(), _toolbar(), ], ), ), ); } } هذه الأكواد مجرد أمثلة يمكنك مراجعة توثيق agora من هنا فكل شيء مشروح بشكلٍ مفصل لكيفية تضمين المكتبة و الاشتراك في الخدمة.
    1 نقطة
  14. بشكل عام . فكرة الكوبونات , قسائم الشراء و البرومو كودس هي أشياء يتم تقديمها للعملاء كحافز للشراء , وقد تكون خصم نسب مئوية معينة ,خصم مبلغ معين ثابت أو حتى الشحن و التوصيل المجاني و ربما أفكار أخرى . أما إن كنت تقصد الكوبونات كمفهوم برمجي فيمكن معاملتها كغيرها من المفاهيم و من ثم إستعمالها في عمليات حساب سعر المنتج و الدفع . مثال عملي عن الإستعمال : قم بإنشاء جدول كوبونات بقاعدة البيانات يحوي الأعمدة : coupon_code // معبرا عن كود الكوبون coupon_type // معبرا عن نوع الكوبون coupon_amount // معبرا عن مقدار الخصم بحيث ينحصر نوع الكوبون في الأنواع الثلاثة الممثلة بأرقام 1,2,3,على التوالي , بـ : 1 => fixed_card_amount // مبلغ خصم ثابت 2 => percentage_off // خصم نسبة مئوية 3 => free_shipping // شحن مجاني 2. في نموذج إدخال كود الكوبون بصفحة الدفع قم بالتحقق من وجود كوبون يحمل نفس الكود المدرج أو لا . 3. إن كان نعم يمكنك تحديد نوع و مقدار الكوبون . 4. و من ثم عمل العملية الحسابية لحساب السعر الجديد و إظهاره للمستخدم . (طبعا يجب أخذ الحيطة و إدراج إحتمال التلاعب بالسعر و التصرف وفق ذلك , مثال :تخزين السعر في الباك اند بعد إدخال كود كوبون أكثر أمانا ) . طبعا هذا هو الشكل الأبسط للعملية , و هي وصفية بحتة يمكنك تطبيقها باللغة التي تبرمج وفقها . كما يمكنك إضافة الكثير من المميزات مثل : كوبون للمسجلين حديثا فقط , كوبون بتاريخ إنتهاء صلاحية , كوبون بعدد منتهي للإستعمال .. إلخ .
    1 نقطة
  15. سنحاول القيام بهذه الخطوات: 1. اولا نقوم بالذهاب الى edit ثم Preferences ثم General 2. ثم نقوم باختيار interface و نفوم باختيار None في الثلاث خيارات 3. نقوم باختيار File handling ثم نقوم باختيار Never Save في Image Previews 4. في Memory Usage تقوم باختيار 70% من الرامات التي لديك و في History & cache نقوم بالضغط على Tall and Thin و في History States نختار 10 و Cache Levels 2 و في Cache Tile Size 128k 5. في Graphics Processor Setting نقو باختيار Advanced Settings و في Drawing Mode نختار Basic 6. نقوم باختيار Type ثم Front Preview Size و نقوم باختيار None أرجو التأكد من أن أداء الجهاز على أفضل أداء High Performance ربما المعالج لديك من الفئة U فيكون أدائه أفضل عند وصل الكهرباء. بشكل عام، يفضل تحديث القرص الصلب وشراء SSD لأنه أسرع بكثير من القرص الحالي (على الأغلب HDD)
    1 نقطة
  16. اولا شاهد مسلاسلات انمى كتيير .. حلل المشاهد .. ومن كل مشهد حدد اتجاه الكاميرا من اين ومن اين اخده المخرج ... جمع كل المشاهد واتجاهات الكاميرات ورتبهم ثم احفظهم وحاول تطبيقهم على اى فديو بدون مونتاج (حمله من على النت) ثم استخدم اى برنامج من برامج المونتاج لتنفيذ الكادرات واجاهات الكاميرا...
    1 نقطة
  17. عليك أنّ تدرك أنّه لا يوجد ما يُسمى "أفضل طريقة"، الطرق كثيرة وعليك اكتشاف الطريقة الّتي تُناسبك، ولكن بعد تعلّم الأساسيات، سواء بقراءة الكتب أو مُتابعة دورة ما، عليك مُتابعة التعلّم بالتطبيق العمليّ، وهو ما يُسمى Learn by doing.عندما يكون لديك هدف في تعلّم البرمجة، مثلًا لديك فكرة تطبيق أوفكرة موقع وتريد تطبيقها، سيكون ذلك حافزًا قويًا جدًا لك للمُتابعة.اللغة الإنكليزية لا مَفر منها خصوصًا في المرحلة المتوسطة والمُتقدمة، وليس من المُفترض أنّ تكون "بلبلًا" كل ما عليك أنّ تعرفه هو الأساسيات والباقي ترجمة -الجميع يفعل ذلك على الأقل في البداية-فأنت لا تقرأ كتابًا أدبيًا، والكتب التقنيّة أسهل بكثير.أبتعد عن المُقارنات بين لغات البرمجة ولا تلتفت إليها أبدًا، وعندما تقرأ عنوان "لغة x بطيئة" فهذا إشارة لك لكي تُغلق الموضوع على الفور، وضع في بالك أنّه عندما تتعلّم أي لغة فأنت تتعلم أساسيات باقي اللغات، وعليه اختر اللغة الّتي تُناسب رغبتك وميولك.النقطة الأخيرة وهي أهم نقطة في رأي، في مرحلة ما خلال تعلمك وبعد تعلّم الأساسيات، سوف تصل إلى نقطة تظن بها أنّ البرمجة أمرًا صعبًا وهو مجال ليس لك، هذه المرحلة بالذات إنّ تجاوزتها فاعتبر نفسك مُبرمجًا.
    1 نقطة
×
×
  • أضف...