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

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

  1. Wael Aljamal

    Wael Aljamal

    الأعضاء


    • نقاط

      21

    • المساهمات

      6975


  2. Ali Haidar Ahmad

    Ali Haidar Ahmad

    الأعضاء


    • نقاط

      5

    • المساهمات

      1068


  3. Adam Ebrahim

    Adam Ebrahim

    الأعضاء


    • نقاط

      4

    • المساهمات

      165


  4. Flutter Dev

    Flutter Dev

    الأعضاء


    • نقاط

      3

    • المساهمات

      787


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

المحتوى الأعلى تقييمًا في 05/28/21 في كل الموقع

  1. لدي حلقة تكرار وفي داخل هذه الحلقة يتم طباعة نص معين، لكن المشكلة أن دالة print تقوم بطباعة النصوص أسفل بعضها البعض وأنا أريد أن يتم طباعة كل النصوص في نفس السطر. for i in range(10): print(i) """ Output: 0 1 2 4 5 6 7 8 9 أريد أن يتم الطباعة كالتالي: 0123456789 """ كيف أقوم بطباعة الأرقام بجانب بعضها البعض؟
    2 نقاط
  2. الإصدار 1.2.0

    21043 تنزيل

    انتشر مصطلح العمل الحر في الآونة الأخير انتشار النار في الهشيم، وسبب ذلك جائحة كوفيد-19 التي ضربت العالم فقلبت الموازين، فالآن وبعد إلزام الدول للشعوب بالبقاء في المنازل وفرض قيود على نمط الحياة وحتى أسلوب العمل من أجل الحد من انتشار الوباء، تعرّف أغلب الناس طوعًا أو كرهًا إلى أسلوب العمل المستقل والعمل عن بعد من المنزل، واضطر كثير منهم إلى دخول سوق الإنترنت ليقدموا خدماتهم بشكل مستقل بعد إنهاء عقودهم مع شركاتهم بسبب تقليل الشركات لنفقاتها، وحتى الذي استمروا في عملهم ووظيفتهم اضطروا إلى تبني أسلوب العمل من المنزل إذ رأينا الكثير من الشركات التي أغلقت مقراتها ونقلها إلى أسلوب العمل عن بعد وهنا وجد الموظفون أنفسهم أمام نمط عمل غريب لم يعتادوه من قبل! وبات الكثير يسأل عن كيفية الدخول إلى هذا سوق العمل الحر وكيفية تبني أسلوب العمل من المنزل ويسألنا عن تجاربنا ومن أين يبدؤون وماذا يفعلون، لذا وجب علينا تقديم المساعدة والإجابات الوافية ومدُّ يَد العون لتوفر مرجع شامل يهدي الوافدين إلى ويرشد السالكين على طريق العمل الحر ونمط العمل عن بعد من المنزل، فكان هذا الكتاب! يبدأ الكتاب في أول فصل له بشرح مفهوم ثقافة العمل الحر والعمل عن بعد من المنزل واختلافهما عن العمل التقليدي كما يعرض واقع العالم العربي من العمل المستقل، ثم ينتقل في الفصل الثاني إلى التحدث عن سوق العمل الحر وعرض مجالاته وكيفية الدخول إليه. ينتقل الكتاب بعدها في الفصول التالية إلى شرح المهارات الواجب على كل عامل مستقل أن يمتلكها حتى يصبح عاملًا مميزًا له مكانته المرموقة في السوق ليتهافت أصحاب المشاريع على تسليمه العمل كلما برز اسمه بين العاملين في السوق، فيعرِّج على التسويق الذاتي ثم ينتقل إلى شرح كيفية إدارة المشروع من الناحية الفنية والمالية والتعامل مع العملاء أصحاب المشاريع وكيفية حل أي خلافات قد تطرأ. لم ننسَ أهمية صحة العامل المستقل والعامل عن بعد من منزله، فخصَّصنا فصلين نتحدث في أولهما عن المواضيع المتعلقة بالصحة النفسية والجسدية على حد سواء، بالإضافة إلى عرض أهم التحديات التي قد تواجه العامل من المنزل مثل الإجازات وإدارة الوقت وكيفية التعامل معها. عرجَّنا بعد ذلك في الفصل الذي يليه على الأمور المتعلقة ببيئة العمل، تلك البيئة التي سيمضي العامل البعيد فيها جل وقته، فعرضنا كيفية بناء بيئة العمل المريحة المثلى وتنظيمها وكيفية فصل بيئة العمل عن بيئة المنزل والأهل الملاصقة لها. تحدثنا عن التعهيد الخارجي في فصل كامل وهو مفهوم قد يلزم العامل المستقل لاحقًا لتوسيع عمله أو إنجاز مهام خارج اختصاصه، ثم انتقلنا في الفصل الأخير إلى التحدث عن أهم منصات العمل الحر العربية بمختلف أنواعها وكيفية إنشاء حسابات عليها لتطبيق كل ما تعلمناه سابقًا في الكتاب ودخول السوق من أوسع مداخله. يمكنك قراءة فصول هذا الكتاب مباشرةً على شكل مقالات، الموسومة بوسم «دليل العامل المستقل»، وإليك العناوين: مدخل إلى ثقافة العمل الحر الدخول إلى سوق العمل الحر على الإنترنت كيفية التسويق الذاتي في العمل الحر الإدارة الفنية للمشروع للعامل المستقل فن التعامل مع العملاء في العمل المستقل العناية بالصحة الجسدية والنفسية للعامل المستقل العناية ببيئة عمل العامل المستقل الإدارة المالية في العمل الحر ما يلزم العامل المستقل معرفته عن التعهيد الخارجي تعرف على منصات العمل الحر والعمل عن بعد
    1 نقطة
  3. كيف أقوم بضرب مجموعة من القاوائم للحصول على كل الإحتمالات الممكنة الناتجة عن ضرب هذه القوائم، على سبيل المثال لدي القائمة التالية: sections = [ [1, 2, 3], [4, 5], [6, 7] ] كيف أحصل على مجموعة من القائم كالتالي: [ [1, 4, 6], [1, 4, 7], [1, 5, 6], [1, 5, 7], [2, 4, 6], [2, 4, 7], [2, 5, 6], [2, 5, 7], [3, 4, 6], [3, 4, 7], [3, 5, 6], [3, 5, 7] ]
    1 نقطة
  4. يُمكنك إستخدام المكتبة التالية: natsort فبعد تثبيتها يُمكنك إستخدامها بالشكل التالي: from natsort import os_sorted x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] print(os_sorted(x)) و الخرج سيكون كالتالي: ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13'] كما أنه بإمكانك إنشاء دالة تقوم بما تريد بإستعمال التعابير النمطية و دوال lambda كالتالي: import re def natural_sort(l): convert = lambda text: int(text) if text.isdigit() else text.lower() alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] return sorted(l, key = alphanum_key) x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9'] print(natural_sort(x)) و ستحصل على نفس النتيجة أيضاً.
    1 نقطة
  5. يمكننا استخدام المكتبة natsort المطلوبة فهي تقوم باستخدام الفرز الطبيعي لترتيب العناصر. # تضمين المكتة from natsort import natsorted, ns # تعريف المصفوفة x = ['Item10', 'item2', 'Item9', 'item3'] # استدعاء الدالة x = natsorted(x, key=lambda k: k.lower()) #1 # طباعة النتيجة print(x) # ['item2', 'item3', 'Item9', 'Item10'] ######################################### natsorted(x, alg=ns.IGNORECASE) #2 إما نقوم بتحويل جميع الحروف للشكل الصغير lower case أو نمرر وسيط لتجاهل حالة الأحرف: ربما تحتاج لتثبيت المكتبة: pip install natsort
    1 نقطة
  6. توجد الكثير من البرامج التي تستخدم الـ multi threading، في الغالب يتم إستعماله للأجزاء التي تحتاج وقت طويل لإتمامها مثل معالجة وتعديل الصور في برامج مثل الـ Photoshop ولكي لا تتجمد واجهة التطبيق أثناء القيام بمثل هذه المهام يتم إستعمال الـ multi threading، ومن أمثلة التطبيقات التي تستعمل الـ multi threading أيضًا: برامج تحرير النصوص Text Editors مثل برامج Microsoft Office كل أنواع الألعاب تستعمل هذا الأمر بكثرة خصوصًا الألعاب من نوع FPS shooters خوادم الويب مثل Apache و Nginx متصفحات الويب مثل Google Chrome و Microsoft Edge برامج معالجة الصور والفيديوهات مثل Adobe After Effect و Adobe Photoshop برامج الرسم ثلاثي الأبعاد مثل Blender و Cinema 4D برامج الهندسة المعمارية مثل Autodesk AutoCAD
    1 نقطة
  7. كيف يمكنني إستدعاء ملف Python من خلال مسار الملف الكامل؟ مثلًا لدي ملف في المسار التالي: C:\Users\Adam\OneDrive\Desktop\script.py كيف يمكنني إستدعاء هذا الملف كما نفعل بإستخدام جملة import ، لاحظ أن الملف يمكن أن يكون في أي مكان في القرص الصلب.
    1 نقطة
  8. ffff.ino اريد عند كل مقدار زياده يتاخر 40 ثانيه ولكن تظل سريعه ولا تتباطئ حيث انني اقوم بذلك من اجل حاجز القطار الذي يمنع عبور السيارات باستخدام servo motor
    1 نقطة
  9. هل يمكنك من فضلك مشاركة الشيفرة؟
    1 نقطة
  10. نستخدم المسالك (البرمجة التفرعية) عندما نستطيع تقسيم البرنامج لمشاكل بسيطة و نسند كل مهمة جزئية لمسلك ما. تطبيق عملية مجموع على عناصر سطر في مصفوفة ثائية الأبعاد لكل مسلك ثم نقوم بجمع النواتج. عندما نريد تستدعاء دالة بمجموعة من القيم المختلفة، نقوم باستدعاء مسلك بتحديد قيم للوسطاء فكل مسلك يحسب خيار مختلف. عندما نريد معالجة الصور وتطبيق الفلاتر معالجة الفيديو العملات المشفرة
    1 نقطة
  11. @Wael Aljamal كل الشكر لك اخي تم حل المشكلتين بفضل الله وفضلك وهذا الكود كامل للفائده: Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { print("Handling a background message: ${message.messageId}"); } class ShowNotifications { static FirebaseMessaging messaging = FirebaseMessaging.instance; static void showNotification(String title, String body) async { await _demoNotification(title, body); } static int i = 0; static Future<void> _demoNotification(String title, String body) async { Random random = new Random(); int randomNumber = random.nextInt(10); var androidPlatformChannelSpecifics = AndroidNotificationDetails( 'channel_ID', 'channel name', 'channel description', importance: Importance.max, playSound: true, showProgress: true, priority: Priority.high, ticker: 'test ticker'); var iOSChannelSpecifics = IOSNotificationDetails(); var platformChannelSpecifics = NotificationDetails( android: androidPlatformChannelSpecifics, iOS: iOSChannelSpecifics); await flutterLocalNotificationsPlugin .show(randomNumber, title, body, platformChannelSpecifics, payload: 'test'); } static FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); static void initialization(){ var initializationSettingsAndroid = new AndroidInitializationSettings('@mipmap/ic_launcher'); var initializationSettingsIOS = new IOSInitializationSettings(); var initializationSettings = new InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsIOS); flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: onSelectNotification); } static Future onSelectNotification(String payload) async { showDialog( // context: context, builder: (_) { return new AlertDialog( title: Text("PayLoad"), content: Text("Payload : $payload"), ); }, ); } static notification() async { await Firebase.initializeApp();messaging = FirebaseMessaging.instance; FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); NotificationSettings settings = await messaging.requestPermission( alert: true, badge: true, provisional: false, sound: true, ); if (settings.authorizationStatus == AuthorizationStatus.authorized) { print('User granted permission'); FirebaseMessaging.onMessage.listen((RemoteMessage message) { print('Message title: ${message.notification?.title}, body: ${message.notification?.body}, data: ${message.data}'); // Parse the message received PushNotification notification = PushNotification( title: message.notification?.title, body: message.notification?.body, dataTitle: message.data['title'], dataBody: message.data['body'], ); // showNotification(data['title'], data['notification']['body']); if(i%2==0) { showNotification( notification.title, notification.body); }; i++; }); } else { print('User declined or has not accepted permission'); } } }
    1 نقطة
  12. ما معنى ال localhost في RMI ؟
    1 نقطة
  13. localhost تشير للعنوان المحلي وهي كلمتين local host وهي اختصار عن كتابة عنوان IP الذي يشير لنفس جهاز الحاسوب: localhost = 127.0.0.1 مثلا عندما نريد تشغيل مخدم محلي على حاسوبنا فسوف نستطيع الدخول إليه من local host أو IP السابق. في RMI نقوم بضبط عنوان المخدم باستخدام إحدى القيمتين: java.rmi.server.hostname=localhost java.rmi.server.hostname=127.0.0.1 تستخدم من المطورين عند العمل على أجهزتهم قبل وضع عنوان IP للمخدم الحقيقي
    1 نقطة
  14. قبل رفع تطبيقات الويب على سيرفر موصول بشكل دائم بالشبكة ليحصل في النهاية على اسم نطاق مثلاً مثل hsoub.com ، يتم تجريب وتطوير هذه التطبيقات في بيئة محلية معتبرين أن الجهاز نفسه هو سرفر وزبون في نفس الوقت. localhost هو السرفر المحلي الذي نقوم بتجاربنا عليه مبدئياً قبل طرح المنتج البرمجي ليكون قيد التنفيذ الفعلي في سرفر نظامي.
    1 نقطة
  15. channel_id تعمل على تجميع الإشعارات مثل سنحاول إبقائها ثابتة لعلى مستوى التطبيق ونغير id في الدالة show فقط: static Future<void> _demoNotification(String title, String body) async { Random random = new Random(); int randomNumber = random.nextInt(100); var androidPlatformChannelSpecifics = AndroidNotificationDetails( 'channel_ID', 'channel name', 'channel description', importance: Importance.max, playSound: true, // sound: 'sound', // sound: true, // setAsGroupSummary: true, showProgress: true, priority: Priority.high, ticker: 'test ticker'); var iOSChannelSpecifics = IOSNotificationDetails(); var platformChannelSpecifics = NotificationDetails( android: androidPlatformChannelSpecifics, iOS: iOSChannelSpecifics); await flutterLocalNotificationsPlugin .show(randomNumber, title, body, platformChannelSpecifics, payload: 'test'); } _________ إن لم تحل المشكلة تأكد من قاعدة البيانات لديك هل يتم تكرار الإشعار في البيانات..
    1 نقطة
  16. هل يصل إشعارين متطابقين في نفس اللحظة؟
    1 نقطة
  17. لنفس الاشعار يكون له channel_id نفس القيمة نمررها في الحقلين نفس النمط أيضا.
    1 نقطة
  18. ربما لأن parse لا يستطيع تحويل date of today المتغير لديك لقيمة رقمية. حاول استخدام المثال الذي أدرجته أنا في التعليق الأول هذه بشكل كامل كقيمة عددية.
    1 نقطة
  19. يمكنك إستدعاء هذه الحزمة itertools.product و هي متاحة في بايثون من إصدار 2.6 import itertools sections = [ [1, 2, 3], [4, 5], [6, 7] ] for element in itertools.product(*sections): print(element) وهذا الكود مشابه للكود السابق for element in itertools.product([1, 2, 3], [4, 5], [6, 7]): print(element)
    1 نقطة
  20. عفوا علينا تعديل هذه أيضا: await flutterLocalNotificationsPlugin .show(0, title, body, platformChannelSpecifics, payload: 'test'); استبدل الرقم 0 يتم تجميع الإشعارات حسب channel_id التي يتم تمريرها في الدالة التالية. لذلك وجب بناء قناة للإشعارات و توجيه الإشعار الجديد لها.
    1 نقطة
  21. اهلا بيك اخي الكريم قمت بتجربه بشكل التالي ووضع الوقت وتاريخ وثواني حتى يتم الفرق ولكن مع الاسف المشكله ما زالت مستمره static Future<void> _demoNotification(String title, String body) async { //String DataOfToday; var date = new DateTime.now().toString(); var dateParse = DateTime.parse(date); var formattedDate = "${dateParse.day}-${dateParse.month}-${dateParse.year}"; // DataOfToday = formattedDate.toString(); var androidPlatformChannelSpecifics = AndroidNotificationDetails( //'channel_ID', 'channel name', 'channel description', formattedDate, 'channel name', 'channel description', importance: Importance.max, playSound: true, showProgress: true, priority: Priority.high, ticker: 'test ticker'); var iOSChannelSpecifics = IOSNotificationDetails(); var platformChannelSpecifics = NotificationDetails( android: androidPlatformChannelSpecifics, iOS: iOSChannelSpecifics); await flutterLocalNotificationsPlugin .show(0, title, body, platformChannelSpecifics, payload: 'test'); }
    1 نقطة
  22. حاول إعطاء رقم فريد لكل إشعار، مثل المعرف الخاص به لا تجعله نص ثابت لأنه سوف يتم استبدال الإشعار الحالي بالإشعار الجديد الذي له نفس المعرًف. حاول وضع قيمة متغيرة مثل نص متغير أو قيمة الوقت الفعلي أو قيمة عشوائية وهذا سيعمل على الحفاظ على كل الإشعارات. AndroidNotificationDetails( 'channel_ID', 'channel name', 'channel description', importance: Importance.max, playSound: true, // sound: 'sound', // sound: true, showProgress: true, priority: Priority.high, ticker: 'test ticker'); تحديدا channel_ID. ضع مكانة رقم عشوائي مثلا: import 'dart:math'; main() { var rng = new Random(); rng.nextInt(100); } أو عداد في البرنامج أو قيمة الوقت. new DateTime.now().microsecondsSinceEpoch مكان channel_ID
    1 نقطة
  23. اهلا بيك اخي الكريم شاكر لك مساعدتك الكود اصبح كالتالي في النهاية وهو يعمل بشكل ممتاز / قمت بتجربه حتى الان على نظام الاندرويد بنسبه الى نظام IOS ساقوم بتجربته لاحقا باذن الله ولو كان فيه تعديل ساقوم بتحديثه هنا وستكمال الموضوع: Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { print("Handling a background message: ${message.messageId}"); } class ShowNotifications { static FirebaseMessaging messaging = FirebaseMessaging.instance; static void showNotification(String title, String body) async { await _demoNotification(title, body); } static Future<void> _demoNotification(String title, String body) async { var androidPlatformChannelSpecifics = AndroidNotificationDetails( 'channel_ID', 'channel name', 'channel description', importance: Importance.max, playSound: true, // sound: 'sound', // sound: true, showProgress: true, priority: Priority.high, ticker: 'test ticker'); var iOSChannelSpecifics = IOSNotificationDetails(); var platformChannelSpecifics = NotificationDetails( android: androidPlatformChannelSpecifics, iOS: iOSChannelSpecifics); await flutterLocalNotificationsPlugin .show(0, title, body, platformChannelSpecifics, payload: 'test'); } static FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); static void initialization(){ var initializationSettingsAndroid = new AndroidInitializationSettings('@mipmap/ic_launcher'); var initializationSettingsIOS = new IOSInitializationSettings(); var initializationSettings = new InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsIOS); flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin(); flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: onSelectNotification); } static Future onSelectNotification(String payload) async { showDialog( // context: context, builder: (_) { return new AlertDialog( title: Text("PayLoad"), content: Text("Payload : $payload"), ); }, ); } static notification() async { await Firebase.initializeApp();messaging = FirebaseMessaging.instance; FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); NotificationSettings settings = await messaging.requestPermission( alert: true, badge: true, provisional: false, sound: true, ); if (settings.authorizationStatus == AuthorizationStatus.authorized) { print('User granted permission'); FirebaseMessaging.onMessage.listen((RemoteMessage message) { // Parse the message received PushNotification notification = PushNotification( title: message.notification?.title, body: message.notification?.body, dataTitle: message.data['title'], dataBody: message.data['body'], ); showNotification( notification.title, notification.body); }); } else { print('User declined or has not accepted permission'); } } }
    1 نقطة
  24. مثال عن ال Serialization في جافا؟ مع توضيح المفهوم
    1 نقطة
  25. plt.scatter(X[0, :], X[1, :], c=Y.reshape(X[0,:].shape), s=40, cmap=plt.cm.Spectral); #or plt.scatter(X[0, :], X[1, :], c=Y.reshape(X[1,:].shape), s=40, cmap=plt.cm.Spectral); #or plt.scatter(X[0, :], X[1, :], c=Y.reshape(X.shape[0]), s=40, cmap=plt.cm.Spectral); #or plt.scatter(X[0, :], X[1, :], c=Y.reshape(X.shape[1]), s=40, cmap=plt.cm.Spectral); - plt.scatter هو تابع يأخذ مصفوفتين كدخل، الأولى تمثل المحور السيني والثانية تمثل المحور العيني وتمثلهم كنقط بالمستوي الاحداثي. - هذه النقط يمكن أن تلونها باستخدام الخرائط اللونية. - cmap هي خريطة لونية وكل لون فيها له index. -كل نقطة سوف تأخذ لون من الخريطة cmap هذا اللون سوف يكون بناءان على قيمة c مثلاً إذا كانت c=0 هذا يعني أن النقطة ستأخذ اللون المقابل لل index=0 وهكذا .. - لدينا 400 نقطة حسب X لذا يجب أن نسند ل c أربعمئة قيمة، هذه القيم سوف تؤخذ من Y لذا يجب ضبط أبعاد المصفوفة Y بحيث تكون بنفس أبعاد [:,0]X أو X[1,:].
    1 نقطة
  26. بالنسبة لتشغيل الإشعارات في وضع تشغيل التطبيق أي بحالة Foreground Notifications يوجد طريقة مختلفة لتشغيلها. لاحظ في الشيفرة لديك، قمت بعمل دالة للتعامل مع Background Notifications وهي: FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); أمالتشغيل الإشعارت بالواجهة تاكد من اتباع التوثيق: notifications/#foreground-notifications حيث يعمل على الدالة: setForegroundNotificationPresentationOptions مثال المكتبة: firebase_messaging/example من التوثيق. مثال منشور على gitHub يمكنك تجربته و التأكد من ذلك: firebase_messaging/example. في حال وجدت حلاً للمشكلة أرجو مشاركته ليستفاد الآخرون وشكرا لك تعديل، أرجو مشاركة نوع نظام التشغيل الذي تعمل عليه لاختلاف المشاكل بين أندرويد و IOS مثالا اختلاف طريقة الوصول للإشعارت في أندرويد: ["notification"]["title"] في IOS: ["aps"]["alert"]["title"]. _____ حل آخر كان بسبب عدم تحديد أيقونة التطبيق في: android drawable file contains the launcher_icon وجود أيقونة استعراض الإشعار لتعمل في الواجهة الأمامية
    1 نقطة
  27. self تشير لنفس الكائن ويتم إضافتها للوصول الى بيانات نفس الكائن وهذه أمثلة للتوضيح أكثر إذا استخدمنا الكود خاصتك بدون تمرير self class MyClass: def myMethod(name): self.name = name فلن يحصل أي خطأ وايضا عند إنشاء كائن من هذا الصنف test = MyClass() فلن يحصل أي خطأ ولكن عندما نقوم بإستدعاء name من هذا الكائن test.name('ali') هنا ستظهر لك مشكلة بأن الكائن test ليس لديه name ، لماذا؟ لأنها عند إستدعاء أي دالة على الكائن وتمرير self فإنه في الخلفية يتم تمرير هذا الكائن تلقائياً والآن الدالة التي تم إستدعائها لديها الوصول الى هذا الكائن class MyClass: def myMethod(self, name): self.name = name والآن عند إستخدام هذا الكود فإن الدالة myMethod عند إستدعائها سيتم تمرير هذا الكائن تلقائياً والآن لديها الوصول الى هذا الكائن
    1 نقطة
  28. هل قمت بإلغاء تثبيت التطبيق وفتحه و عملت FCM بدون طلب إذن المستخدم؟ لقد تم استبدال بعض الدوال من المكتبة و أصبحت deprecated يمكنك التأكد من الرابط: firebase.messaging.Messaging#requestpermission الصلاحيات: messaging/permissions
    1 نقطة
  29. لتحقيق ال Serialization نستخدم الكلاس ObjectOutputStream لإنشاء نسخة من الكائن الموجود في الذاكرة و وضعها في ملف . يجب القيام بالخطوات التالية : 1 - الكائن الذي تريد حفظ حالته يجب أن يكون في الأساس محققا للواجهة Serializable . ( ملاحظة الواجهة Serializable هي واجهة معرفة في الجافا ولاتحوي أي طرائق ومن اجل تحقيقها يجب كتابة تعليمة الاستيراد للصفوف import java.io.Serializable ). 2 - إنشاء ملف إمتداده ser بواسطة الكلاس FileOutputStream. 3 - تجهيز كائن من الكلاس ObjectOutputStream الذي يستخدم لكتابة حالة الكائن في الملف . 4 - نسخ حالة الكائن الموجود في الذاكرة في هذا الملف بواسطة الدالة writeObject() . 5 - عند الإنتهاء من عملية النسخ نقوم بقطع كل إتصال قمنا بإجرائه مع هذا الملف . مثال : ليكن لدينا كلاس يعبر عن طالب حقوله الاسم والرقم والمطلوب القيام ب Serialization. import java.io.Serializable; public class Student implements Serializable { String name; int id; public Student(String name,int id){ this.name=name; this.id=id; } public void printInformation(){ System.out.println("name: "+name+" id: "+id); } } الان في main سوف نعرض باقي خطوات السلسة : import java.io.FileOutputStream; import java.io.ObjectOutputStream; public class Session2 { public static void main(String[] args) { Student st=new Student("Alel",1); try { FileOutputStream fs = new FileOutputStream("teat.ser"); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(st); os.close(); } catch(Exception ex) { ex.printStackTrace(); } } } عند تنفيذ الخطوات السابقة ينشأ ملف بالاسم test.ser
    1 نقطة
  30. Serialization: التسلسل هو عملية ترجمة بنية بيانات أو حالة كائن إلى تنسيق يمكن تخزينه أو نقله وإعادة بنائه لاحقًا. في جافا يمكننا تحويل أي بنية معطيات لسلسلة من البايتات، ممت يمكننا من لإرسال البيانات ضمن قنوات الاتصال عبر الشبكة أو تخزين ونقل المعطيات، ونرسلها لحاسوب آخر ثم نقوم بعكس العملية للحصول على البيانات الأصلية. يستعمل التسلسل عادة مع الأغراض لنقل بياناتها. طريقة البرمجة، على صنف الغرض الذي نريد عمل Serialization له أن يحقق الواجهة Serializable: class Muclass implements Serializable { ... } وتضمين المكتبة: import java.io.Serializable; والمكتبتبني التاليتين مثلا في حال أردنا كتابة الغرض في ملف: import java.io.ObjectInputStream; import java.io.ObjectOutputStream; ومثال على دالة تقوم بعمل Serialization وتكتب البيانات في ملف: private static void writeObject(Serializable shoe) throws IOException { ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(new File("obj.ser"))); oos.writeObject(shoe); oos.close(); } ولقراءة الغرض: private static Object readObject() throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream( new FileInputStream(new File("obj.ser"))); Object obj = ois.readObject(); return obj; } مثال كامل من توثيق w3resources: w3resource.com/java-serialization. ليكن لدينا صنف عامل يحقق الواجهة:Serializable public class Employee implements java.io.Serializable { public String name; public String address; public transient int SSN; public int number; public void mailCheck() { System.out.println("Mailing a check to " + name + " " + address); } } ولدينا الصنف التالي الذي قوم باختبار عمل السلسلة للكائن من الصنف السابق: import java.io.*; public class MySerialize { public static void main(String [] args) { Employee e = new Employee(); e.name = "my name"; e.address = "syria, damascus"; e.SSN = 1; e.number = 100; try { FileOutputStream fileOut = new FileOutputStream("/serilas/employee.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(e); out.close(); fileOut.close(); System.out.printf("Serialized data is saved in serilas/employee.ser"); } catch (IOException i) { i.printStackTrace(); } } } ولإعادة البيانات من الملف نعمل De-serialize: import java.io.*; public class MyDeserialize { public static void main(String [] args) { Employee e = null; try { FileInputStream fileIn = new FileInputStream("/serilas/employee.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); e = (Employee) in.readObject(); in.close(); fileIn.close(); } catch (IOException i) { i.printStackTrace(); return; } catch (ClassNotFoundException c) { System.out.println("Employee class not found"); c.printStackTrace(); return; } System.out.println("Deserialized Employee..."); System.out.println("Name: " + e.name); System.out.println("Address: " + e.address); System.out.println("SSN: " + e.SSN); System.out.println("Number: " + e.number); } }
    1 نقطة
  31. يمكنك إضافة المهارات التي تملكها ويمكنك العمل بها بدقة. حاول جعل معرض أعمالك مميزا، في حال كانت التصاميم جميلة ضعها وإلا اكتب شرحا عما قمت به إن كان مثلا برمجة bach-end قدم عروضك على المشاريع المناسبة لك، وإقرأ متطلبات المشروع بدقة وتجنب المشاريع المبهمة.. اكتب عرضا مميزا، قم بالترحيب بصاحب المشروع ثم اذكر مهاراتك ثم حاول إقناعه بتوظيفك بطريقتك الخاصة مهتما للتفاصيل التي هو ذكرها في شرح تفاصيل المشروع إن كنت مبتدءاً حدد سعرا مناسبا ومنافساً على الأقل حتى تكتسب بعض التقييم عندها ضع عرضا يناسب خبراتك و متطلبات المشروع. وآخر جزء مهم قبل التوظيف هو نقاس المشروع، حاول التواجد متصلا بالانترنت وتابع الموقع باستمرار و حاول الرد على صاحب المشروع بأقرب فرصة.
    1 نقطة
  32. بما أن الرقم الوطني له خصائصص يمكننا بناء التعبير المنتظم وفقها مثلا: مثال للبحث عن نص ثابت و محدد: expr = '056' ثم وضعها هكذا: import re text = 'Hello my Jawwal number is 056' expr = '056' match = re.findall(expr, text) print(match) # => ['056'] الآن حاولي تعديل الشيفرة، حيث سنعمل على جعل القسم الآخر من الرقم الوطني عبارة عن أرقام بعدد محدد: [0-9]* # عدد لانهائي من الأرقام وممكن 0 [0-9]+ # عدد لانهائي من الأرقام ولكن على الأقل رقم واحد [0-9]X # X عدد لانهائي من الأرقام وعددهم [0-9]2 [0-9]7 [0-9]X... حاولي دمج القسم الثابت و يتبعه القسم المتغير والمحاولة. علما أن: [0-9] # ستعطي رقم واحد ضمن المجال
    1 نقطة
  33. كلا ليس عليك أن تكون مصمم بمعنى الكلمة، لكن الواجهات الأمامية هي واجهة الموقع و يجب أن تلبي حاجة المستخدم و تحقق معايير جمالية مقبولة. أرى أن الاختلاف كبير بين الصورة التي طلبها و التصميم الذي قدمته له، كان يمكنك عمل مجهود أكبر و محاولة الوصول لتصميم يكون مشابه لما طلبه على أقل تقدير. يتم ذلك من خلال تصفح العديد من المواقع المختلفة، ومحاولة فهم تقسيم الصفحة و كيفية تشكيل المكونات و تناسق الألوان.. هذا ما يطلق عليه اسم التغذية البصرية، أي بعد أن تنظر للموقع تعمل بمخيلتك على فهم التنسيقات و تحليل الموقع و التفكير كيف يمكنك الاستفادة مما رأيته في عملك الجديد. نعم يوجد ابحث عن free psd websites templates - كما يمكنك بالطبع تقليد مواقع أخرى. حاول اختيار نماذج أعمال أصعب قليلا من مستواك الحقيقي و تحوي تعقيدات أكبر وسوف تتطور بالتأكيد.
    1 نقطة
  34. هل يمكنك أن ترسل لي شاشة الكونسل بعد أمر dart pub outdated --mode=null-safety
    1 نقطة
  35. تحدث مشكلة circular import عندما تتضارب الاعتماديات، أي وجود ملف لدينا في مشروعنا بنفس اسم المكتبة لذلك لحل المشكلة أرجو تغيير اسم الملف requests لديك. يمكنك التأكد من الملف المضمن بتنفيذ الشيفرة: print dir(requests) في حال أن الاستدعاء يعمل مع المكتبة requests وليس الملف الخاص بمشروعك، سيظهر التالي: ['ConnectionError', 'HTTPError', 'Request', 'RequestException', 'Response', 'Session', 'Timeout', 'TooManyRedirects', 'URLRequired', '__author__', '__build__', '__builtins__', '__copyright__', '__doc__', '__file__', '__license__', '__name__', '__package__', '__path__', '__title__', '__version__', '_oauth', 'api', 'auth', 'certs', 'codes', 'compat', 'cookies', 'defaults', 'delete', 'exceptions', 'get', 'head', 'hooks', 'models', 'options', 'packages', 'patch', 'post', 'put', 'request', 'safe_mode', 'session', 'sessions', 'status_codes', 'structures', 'utils'] جميع دوال المكتبة. ___________________ عند التضمين باستخدام: import requests نستعمل requests.get أما: from requests import * نستعمل get لأنه تم تضمين جميع فضاء العيبنة في الطريقة الثانية فيمكن استخدام get مباشرة.
    1 نقطة
  36. سبب هذا أن is تتأكد أن طرفي المقارنة يشيران لنفس الغرض في الذاكرة وإن بايثون لتحسين الأداء تقوم بعمل caches integer objects للأعداد الصحيحة الصغيرة: -5 .. 256 معتمدةً على نموذج التصميم singleton أي جميع الأعداد الصحيحة ضمن ذلك المجال التي لها نفس القيمة ستشير لنفس الغرص فيكون نتيجة تقييم is تعطي true أما في الأعداد الكبيرة ستقوم بايثون بتوليد غرض مستقل لكل متغير/قيمة.
    1 نقطة
  37. إن تعريف المتغيرات/الخواص في الصنف مباشرة يجعل هذه الخاصية مشاركة بين جميع الأغراض من هذا الصنف أي shared لتجنب المشاكل، نقوم بإسناد الخواص من خلال دالة البناءـ حيث يتم إسنادها عن طريف الكلمة المفتاحية self التي ترتبط بالغرض الفريد المنشأ من الصنف و ليس بالصنف نفسه: class MyClass: def __init__(self): self.list = [] ليصبح المثال: class MyClass: def __init__(self): self.lst = [] student = MyClass() teacher = MyClass() student.lst.append(1) student.lst.append(2) teacher.lst.append(3) teacher.lst.append(4) print(student.lst) # Output: [1, 2] print(teacher.lst) # Output: [3, 4]
    1 نقطة
  38. class MyClass: def __init__(self): self.lst = [] بايثون تقدم نوعين لل attributes هما : class attributes and instance attributes. ال class attributes تشبه كثيراً ال static attributes في جافا و c++ فهي تتشارك نفس القيمة مع كل ال object التي تؤخذ من هذا الصف، ويتم تعريف ال class attributes في بايثون تماماً كما قمت أنت بتعريف المتغير الذي سميته lst لذا فكانت القيم هي نفسها. أما ال instance attributes فهي متغير ينتمي إلى object واحد فقط أي أن كل متغير تعرفه ك instance attributes سوف تكون قيمه منفصلة في كل object تأخذه من هذا الصف ، ويتم تعريف ال instance attributes تماماً كما عرفتها لك أنا أي ضمن التابع init
    1 نقطة
  39. # GRADED FUNCTION: forward_propagation_with_dropout def forward_propagation_with_dropout(X, parameters, keep_prob=0.5): np.random.seed(1) # retrieve parameters W1 = parameters["W1"] b1 = parameters["b1"] W2 = parameters["W2"] b2 = parameters["b2"] W3 = parameters["W3"] b3 = parameters["b3"] # LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SIGMOID Z1 = np.dot(W1, X) + b1 A1 = relu(Z1) ### START CODE HERE ### (approx. 4 lines) D1 = np.random.rand(A1.shape[0], A1.shape[1]) # A1 تعريف مصفوفة بقيم عشوائية بين الصفر والواحد وبنفس أبعاد المصفوفة D1 = D1 < keep_prob A1 = A1 * D1 A1 = A1 / keep_prob ### END CODE HERE ### Z2 = np.dot(W2, A1) + b2 A2 = relu(Z2) ### START CODE HERE ### (approx. 4 lines) D2 = np.random.rand(A2.shape[0], A2.shape[1]) D2 = D2 < keep_prob A2 = A2 * D2 A2 = A2 / keep_prob ### END CODE HERE ### Z3 = np.dot(W3, A2) + b3 A3 = sigmoid(Z3) cache = (Z1, D1, A1, W1, b1, Z2, D2, A2, W2, b2, Z3, A3, W3, b3) return A3, cache نعرف مصفوفة بقيم عشوائية بنفس أبعاد المصفوفة A ثم تحويل قيم المصفوفة D1 إلى 0 أو 1 حسب الشرط ( إذا كانت القيمة الأولى في المصفوفة D1 مثلاً 0.2 وهي أقل من العتبة (keep_prob = 0.5) أي سيكون الشرط محقق (D1<keep_porb) وسيقوم بتحويل القيمة إلى 1 , والعكس صحيح وسيقوم بتحويل القيمة إلى 0 ثم ضرب المصفوفة A1 بـ D1 بعد تعديل قيمها إلى 0,1 ثم تقسيم قيم المصفوفة A1 على العتبة....
    1 نقطة
  40. يمكننا عمل slice للقائمة الأولى ما يعمل على نسخ القيم لعناصرها بدون أخدهم بالمرجع: old_list = [1,2,3] new_list = old_list[:] new_list[0] = 0 print (new_list) # [0, 2, 3] print (old_list) # [1, 2, 3] ستعيد هذه الطريقة قائمة جديدة غير مرتبطة بالأولى
    1 نقطة
  41. يمكننا المرور على القوائم بالطريقة التراجعية وهي خوارزيمة تقوم على استدعاء نفسها عدة مرات، حيث لكل عنصر سوف نختبر هل هو عنصر وحيد؟ إن كان عنصر وحيد نضيفه للقائمة النهائية (خرج الخوارزمية) وإن كان قائمة نقوم باستدعاء عودي/تراجعي لهذه القامة الفرعية: def flatten(nested_list): if len(nested_list) == 0: return nested_list if isinstance(nested_list[0], list): return flatten(nested_list[0]) + flatten(nested_list[1:]) return nested_list[:1] + flatten(nested_list[1:]) print(flatten([[1, 2, 3, 4], [5, 6, 7], [8, 9], 10])) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] isinstance يختبر هل الوسيط الأول من النوع المساوي للوسيط الثاني وعليه نحدد هل العنصر الحالي هو قائمة أو لا.
    1 نقطة
  42. يمكنك استخدام المكتبة itertools بالشكل التالي: import itertools anylist = [[1,2,3],4,5,[7],[8,9]] merged = list(itertools.chain(*anylist)) وبشكل مشابه أيضاً استخدام itertools.chain.from_iterable: merged = list(itertools.chain.from_iterable(list2d)) وبشكل يدوي، يمكنك البحث عن مصطلع flat ضمن المصفوفات في بايثون، فيمكنك إجراء السابق بنفس الطريقة من خلال: newList = [item for childList in t for item in childList] والتي تماثل: newList = [] for childList in t: for item in childList: newList.append(item)
    1 نقطة
  43. السبب في ذلك هو أن إشارة = في بايثون لا تقوم بالنسخ، وإنما تقوم بإنشاء ما يدعى binding بين المتغيّرين. لذلك يجب عليك استخدام التالي: arr2 = arr1.copy() مثال: from numpy import * arr1 = array([2, 6, 9, 4]) arr2 = arr1.copy() # إجراء تعديل على أي مصفوفة منهما arr1[1] = 7 وهو ما يدعى ب deep copy.
    1 نقطة
  44. بالطبع يبدو الأمر صعبًا في البداية بسبب المنافسة بين المستقلين خصوصًا إن لم يكن لديك أي أعمال سابقة لتعرضها في معرض أعمالك، وسيكون حسابك بلا أي تقييمات سابقة بالطبع، بينما المستقلين الآخرين لديهم العديد من الأعمال والتقييمات المرتفعة، إذا لماذا سيقوم العميل بإختيارك أنت بدلًا من المستقلين الآخرين؟ وللإجابة على هذا السؤال يجب أن تقدم للعميل شيء يوضح له خبرتك في المجال، عليك أن تقوم بعمل بعض المشاريع الخاصة بنفسك تظهر فيها أقصى ما تستطيع الوصول إليه من إبداع ومجهود، ولا يجب أن تقوم بعمل العشرات من الأعمال يكفي 5 أعمال بسيطة وليست معقدة للغاية، يمكنك تصفح المشاريع المطلوبة على مستقل أو خمسات وقم تنفيذها بنفسك (بدون التقديم على العمل)، ثم قم بإضافة المشروع إلى معرض أعمالك، وبالتالي تكون قمت بعمل معرض أعمال والتدرب على مشاريع حقيقية. بعد ذلك دع معرض أعمالك يتحدث عنك، عندما تقوم بالتقديم على عمل جديد لا ترفع من تكلفة المشروع، وقم بكتابة عرض عمل منسق وإحترافي، أعرض على العميل أن تقوم بعمل بعض الأمور الأضافية التي قد تفيده، فقط أمور بسيطة مثل تصميم صفحة بسيطة إضافية، أو إختيار ألوان متناسقة أكثر .. إلخ، وتذكر أن الهدف في البداية هو الحصول على تقييم عالي وليس أن تتحصل على مبلغ مالي أكبر، ومع الوقت سيمكنك أن تقوم بتكبير معرض أعمال يحتوي على أعمال إحترافية وسيكون لديك تقييمات عالية، وسيمكنك المنافسة على المشاريع. عليك أيضًا أن تتابع مدونة خمسات ومستقل حيث يتم نشر تدوينات ستساعدك كثيرًا في العمل الحر، وإختيار العملاء وكيفية التعامل معهم بشكل سليم.
    1 نقطة
  45. اتاسف في التاخر في الرد يا اخي, افادة الناس ليس ازعاجا مشاركة افكاري ليس مضيعة للوقت ونحن نكمل بعضنا البعض والتوفيق يا اخي الكريم !
    1 نقطة
×
×
  • أضف...