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

Ahmed Sadek Elamine Touahria

الأعضاء
  • المساهمات

    510
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    5

كل منشورات العضو Ahmed Sadek Elamine Touahria

  1. يُرجى توضيح كامل للكود حتى يمكننا تفحص المشكلة
  2. الخطأ يوضح أن المتغير sheet غير معرف وهذا واضح ، ﻷنك تقوم بإستدعاءه من دالة أخرى . لتصحيح الخطأ قم بإرجاع المتغير في الدالة openFile بهذا الشكل def openFile(): filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*"))) wb = load_workbook(filepath) sheet = wb.active return sheet ثم في الدالة الثانية def a(): sheet = openFile() # استرجاع المتغير abc=sheet.cell(row=9,column=4).value print(abc)
  3. GB و GB ، وحدات قياس السعة والذاكرة يجب أن تكون قد واجهت بالفعل الرموز GB أو GB ، إما في بيئتك المهنية ، على عبوة مفتاح USB الخاص بك على سبيل المثال ، أو حتى في المنزل ، على الصندوق.من القرص الصلب الخارجي أو كمبيوتر محمول. المصورون أيضًا على دراية بهذه النقوش التي يتم عرضها غالبًا على ملصق بطاقة SD الخاصة بأجهزتهم. لكن ماذا يعني هذان الحرفان؟ في عالم الحوسبة ، يرمز GB إلى "جيجابايت" ، أو ما يعادل مليار بايت. GB تعني غيغا بايت ، حرفيا مليار بايت. وحدات البايت والثماني وحدات قياس تستخدم لتقييم الذاكرة أو سعة التخزين للأجهزة الرقمية. الثماني بتات هي الترجمة الفرنسية للمصطلح الإنجليزي "بايت". لذلك فإن GB و Go اختصارات تعني نفس الشيء تمامًا!
  4. هناك علاقة واحد لكثير بين الموعد والطبيب أو بما تُسمى Foreingkey class Booking(models.Model): doctor = models.ForeignKey(Doctor,on_delete=models.CASCADE) # هنا تكون العلاقة ثم يمكنك الإستعلام عن جدول المواعيد حسب العيادة views.py def bookings(request,id): doctor = Doctor.objects.get(id=id) bookings = Booking.objects.filter(doctor=doctor) #جلب المواعيد حسب العيادة او الطبيب
  5. يقوم تطبيق Text to Speech بتحويل النص المكتوب على الشاشة إلى كلام كما لو كنت قد كتبت "Hello World" على الشاشة وعندما تضغط على الزر سيتحدث "Hello World". تُستخدم ميزة تحويل النص إلى كلام بشكل شائع كميزة إمكانية الوصول لمساعدة الأشخاص الذين يواجهون صعوبة في قراءة النص على الشاشة ، ولكنها أيضًا مناسبة لأولئك الذين يرغبون في قراءتها أيضًا. لقد أصبحت هذه الميزة ميزة شائعة جدًا ومفيدة للمستخدمين. الخطوة الأولى: إنشاء مشروع جديد الخطوة الثانية: العمل مع ملف activity_main.xml انتقل إلىapp -> res -> layout -> activity_main.xml وقم بتعيين تخطيط التطبيق. في هذا الملف ، أضف EditText لإدخال النص من المستخدم ، زر ، لذلك عندما ينقر المستخدم على الزر ، يتم تحويله إلى كلام وعرض نص لعرض نص Hsoub. يوجد أدناه الكود الكامل لملف activity_main.xml. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_margin="30dp" tools:context=".MainActivity"> <!--To add text in the app--> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/Text" android:layout_marginBottom="20dp" android:hint="Enter Any Sentence" android:gravity="center" android:textSize="16dp"/> <!--when you press this button it will convert text into speech--> <Button android:layout_width="wrap_content" android:id="@+id/btnText" android:layout_height="wrap_content" android:text="Click Here" android:layout_gravity="center"/> <!--To display the name of Hsoub --> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="70dp" android:gravity="center_horizontal" android:text="Hsoub" android:textColor="@android:color/holo_green_dark" android:textSize="36sp" /> </LinearLayout> الخطوة 3: العمل مع ملف MainActivity.java انتقل إلى التطبيق -> java -> com.example.GFG (اسم الحزمة) -> قسم MainActivity.java. انضم الآن إلى Button و Edittext إلى كود Java وتضاف التعليقات داخل الكود لفهم الكود بسهولة. يوجد أدناه الكود الكامل لملف MainActivity.java. import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.view.View; import android.widget.Button; import android.widget.EditText; import java.util.Locale; public class MainActivity extends AppCompatActivity { EditText Text; Button btnText; TextToSpeech textToSpeech; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Text = findViewById(R.id.Text); btnText = findViewById(R.id.btnText); // إنشاء كائن textToSpeech وإضافة ميزات إليه textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { @Override public void onInit(int i) { // إذا لم يتم العثور على خطأ ، فسيتم تشغيله فقط if(i!=TextToSpeech.ERROR){ // لاختيار لغة الكلام textToSpeech.setLanguage(Locale.UK); } } }); // مضيفا OnClickListener btnText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { textToSpeech.speak(Text.getText().toString(),TextToSpeech.QUEUE_FLUSH,null); } }); } }
  6. تُستخدم الوظيفة exit () لإنهاء تنفيذ البرنامج والعودة إلى نظام التشغيل. يخرج رمز الإرجاع "0" من البرنامج بدون أي رسالة خطأ ، لكن الرموز الأخرى تشير إلى أن النظام يمكنه معالجة رسائل الخطأ. الكتابة العامة void exit(int return_code); مثال توضيحي #include <stdlib.h> #include <stdio.h> int main() { char choice; choice = getchar(); if(choice=='Q') //Q عند كتابة الحرف { exit(0); //سيتم الخروج من البرنامج } else { printf("Forget Code"); //أعد المحاولة } return 0; }
  7. نحيطك علما بأن في أكاديمية حسوب لانقوم بالإجابة على الأسئلة الإمتحانية ، بل نساعد على حل المشاكل البرمجية . لذلك انصحك ان تقوم بالمحاولة على حل هذا السؤال وإن وجدت مشكل يمكنك إرفاقه هنا حتى يمكننا مساعدتك
  8. مرحبا جبر ، في الحقيقة لا يوجد مسار معين لتعلم git و github لدى أكادمية حسوب ولكن يمكنك الإطلاع على مقالات الأكاديمية والتي بدورها ستساعدك بدون شك حول هذا الموضوع ستجد المزيد من هنا
  9. لا يمكن هذا ، حاولي الإجابة على هذا السؤال ثم إذا ظهر أي مشكل يمكنكي طرحه هنا .
  10. هذا حل بسيط بلغة بايثون def function(a, b): a = str(a) # نحول الرقم إلى سلسلسة نصية حتى نضيف اليها ارقام بجانبها for i in range(b): # نقوم بعمل حلقة تكرارية حسب العدد الثاني a +="0" # نضيف العدد صفر من اليمين return a[::-1] # ثم نرجع سلسة معكوسة حتى نحقق المطلوب print(function(1,5))
  11. اضبط مساحة المحتوى لحقل النص وقم بلف padding لأن نوع الإدخال الخاص به هو Widget TextField( decoration: InputDecoration( contentPadding: EdgeInsets.only(top: 20), // التحكم في البادينغ للنص isDense: true, hintText: "Email", prefixIcon: Padding( padding: EdgeInsets.only(top: 15), // التحكم في موقع الأيقونة child: Icon(Icons.help_outline), ), );
  12. const في سياق Flutter يوصى باستخدام مُنشئ ثابت كلما أمكن ذلك عند إنشاء عناصر واجهة مستخدم Flutter. السبب هو زيادة الأداء ، حيث يمكن لـ Flutter حفظ بعض الحسابات من خلال فهم أنه يمكن إعادة استخدام هذه الأداة من إعادة رسم سابقة في الحالية ، لأنها قيمة ثابتة. فيما يلي مقال مثير جدًا للاهتمام بقلم Crizant Lai يحلل تأثير أداء استخدام عنصر واجهة مستخدم مع أو بدون مُنشئ ثابت. أثناء الاختبار ، سأُنشئ شاشتين لعرض الشعار المتحرك ، تستخدم إحداهما المُنشئ الثابت لعنصر واجهة مستخدم الصورة: const Image( width: 100, height: 100, image: AssetImage('assets/logo.png'), ) والآخر بدون كلمة const. يتم تغليف الشعار داخل عنصر واجهة مستخدم AnimatedPositioned ، ويتم تحديث موضعه مرة واحدة في الثانية. ثم نقوم بتشغيل التطبيق باستخدام علامة --profile ، وفحص علامة التبويب "الأداء" و "الذاكرة" في Dart DevTools. استنتاج يمكننا أن نرى أنه باستخدام مُنشئ ثابت ، يكون معدل الإطارات في الثانية أعلى بنسبة 8.4٪ ، واستخدام الذاكرة أقل بنسبة 20٪ تقريبًا ، في حالة 1000 شعار. على الرغم من أن الأرقام كبيرة جدًا ، إلا أن "النعومة" التي لاحظتها أثناء الاختبار متشابهة جدًا. كما أنه من غير الواقعي وجود 1000 عنصر واجهة مستخدم في الشاشة. بالنسبة إلى التطبيق المتوسط ، لن يكون هناك سوى العشرات من الأدوات المصغّرة في كل شاشة ، ولا يحتوي سوى جزء منها على مُنشئ ثابت. إذا كنت حقًا بحاجة إلى تقديم مثل هذا العدد الكبير من الكائنات ، فمن الأفضل استخدام Canvas بدلاً من ذلك.
  13. من جانب السيرفر فإن MQTT هي من أقوى تقنيات الوقت الفعلي والتي تعتمد عليها أغلب شركات العالم مثل أمازون وجوجل وغيرها . حيث توفر أداء عالي وتكلفة أقل والكثير من الميزات
  14. Flutter Google Map مع تتبع الموقع المباشر - أسلوب أوبر الإعداد الأولي تأكد من إعداد بيئتك وفقًا لذلك لتمكين تتبع الموقع على كل من IOS و Android باتباع الخطوات الواردة في README الخاص بالحزمة فيما يتعلق بملف بيان Android و iOS Info.plist. بمجرد الإعداد ، تبدو التبعيات مثل .... dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2 flutter_polyline_points: ^1.0.0 google_maps_flutter: ^2.1.7 location: ^4.4.0 ... خريطة جوجل 🗺 قم بإنشاء StatefulWidget يسمى OrderTrackingPage مع فئة الحالة المقابلة ، حيث قمت باستيراد الحزم المطلوبة بالإضافة إلى بعض المصدر الثابت وموقع الوجهة import 'dart:async'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class OrderTrackingPage extends StatefulWidget { const OrderTrackingPage({Key? key}) : super(key: key); @override State<OrderTrackingPage> createState() => OrderTrackingPageState(); } class OrderTrackingPageState extends State<OrderTrackingPage> { final Completer<GoogleMapController> _controller = Completer(); static const LatLng sourceLocation = LatLng(37.33500926, -122.03272188); static const LatLng destination = LatLng(37.33429383, -122.06600055); @override Widget build(BuildContext context) { return Scaffold( body: ... GoogleMap widget will be here ..., ); } } أنشئ أداة GoogleMap وعيّن موقع الكاميرا الأولي على موقع المصدر. تحتاج الخريطة إلى التكبير قليلاً ، لذا اضبطها على 13.5. نحتاج إلى علامة / دبوس لفهم الموقع الدقيق. تحديد علامة وتعيين موضعها إلى موقع المصدر. للوجهة ، أضف علامة / دبوس آخر. GoogleMap( initialCameraPosition: const CameraPosition( target: sourceLocation, zoom: 13.5, ), markers: { const Marker( markerId: MarkerId("source"), position: sourceLocation, ), const Marker( markerId: MarkerId("destination"), position: destination, ), }, onMapCreated: (mapController) { _controller.complete(mapController); }, ), رسم اتجاه الطريق 〰 الشيء التالي الذي أريد القيام به هو رسم خط من الوجهة إلى المصدر. قم بإنشاء قائمة فارغة تسمى polylineCoordinates. قم بإنشاء مثيل من PolylinePoints ووظيفة غير متزامنة تسمى getPolyPoints. تقوم طريقة getRouteBetweenCoordinates بإرجاع قائمة النقاط متعددة الخطوط. كانت مواقع مفتاح Google API والمصدر والوجهة مطلوبة. إذا لم تكن النقاط فارغة ، نقوم بتخزينها في إحداثيات متعددة الخطوط. List<LatLng> polylineCoordinates = []; void getPolyPoints() async { PolylinePoints polylinePoints = PolylinePoints(); PolylineResult result = await polylinePoints.getRouteBetweenCoordinates( google_api_key, // Your Google Map Key PointLatLng(sourceLocation.latitude, sourceLocation.longitude), PointLatLng(destination.latitude, destination.longitude), ); if (result.points.isNotEmpty) { result.points.forEach( (PointLatLng point) => polylineCoordinates.add( LatLng(point.latitude, point.longitude), ), ); setState(() {}); } } على initState استدعاء getPolyPoints @override void initState() { getPolyPoints(); super.initState(); } العودة إلى أداة GoogleMap ، حدد الخطوط المتعددة. GoogleMap( ... polylines: { Polyline( polylineId: const PolylineId("route"), points: polylineCoordinates, color: const Color(0xFF7B61FF), width: 6, ), }, ), تحديثات الموقع في الوقت الحقيقي على الخريطة 🔴 نصل الآن إلى الجزء الأكثر إثارة ، نحن بحاجة إلى موقع الجهاز. إنشاء متغير nullable يسمى currentLocation. ثم تقوم دالة تسمى getCurrentLocation، Inside، بإنشاء مثيل للموقع. بمجرد أن نحصل على الموقع ، قم بتعيين الموقع الحالي ليكون مساويًا للموقع. عند تغيير الموقع ، قم بتحديث الموقع الحالي. اجعلها مرئية للخريطة المسماة setState. LocationData? currentLocation; void getCurrentLocation() async { Location location = Location(); location.getLocation().then( (location) { currentLocation = location; }, ); GoogleMapController googleMapController = await _controller.future; location.onLocationChanged.listen( (newLoc) { currentLocation = newLoc; googleMapController.animateCamera( CameraUpdate.newCameraPosition( CameraPosition( zoom: 13.5, target: LatLng( newLoc.latitude!, newLoc.longitude!, ), ), ), ); setState(() {}); }, ); } تأكد من استدعاء getCurrentLocation على initState. void initState() { getPolyPoints(); getCurrentLocation(); super.initState(); } إذا كان CurrentLocation فارغًا ، فسيتم عرض نص التحميل. أيضًا ، أضف علامة / دبوسًا آخر للموقع الحالي بالإضافة إلى تغيير موضع الكاميرا الأولي إلى الموقع الحالي. body: currentLocation == null ? const Center(child: Text("Loading")) : GoogleMap( initialCameraPosition: CameraPosition( target: LatLng( currentLocation!.latitude!, currentLocation!.longitude!), zoom: 13.5, ), markers: { Marker( markerId: const MarkerId("currentLocation"), position: LatLng( currentLocation!.latitude!, currentLocation!.longitude!), ), const Marker( markerId: MarkerId("source"), position: sourceLocation, ), const Marker( markerId: MarkerId("destination"), position: destination, ), }, onMapCreated: (mapController) { _controller.complete(mapController); }, polylines: { Polyline( polylineId: const PolylineId("route"), points: polylineCoordinates, color: const Color(0xFF7B61FF), width: 6, ), }, ),
  15. السيلينيوم هو أداة قوية للتحكم في متصفح الويب من خلال البرنامج. إنه وظيفي لجميع المتصفحات ، ويعمل على جميع أنظمة التشغيل الرئيسية ونصوصه مكتوبة بلغات مختلفة مثل Python و Java و C # وما إلى ذلك ، وسنعمل مع Python. سيساعدك إتقان السيلينيوم على أتمتة مهامك اليومية مثل التحكم في تغريداتك وإرسال الرسائل النصية على Whatsapp وحتى مجرد استخدام googling دون فتح متصفح فعليًا في 15 إلى 30 سطرًا فقط من كود Python. حدود الأتمتة لا حصر لها مع السيلينيوم. 1.1 روابط السيلينيوم في بايثون توفر روابط Selenium Python واجهة برمجة تطبيقات ملائمة للوصول إلى برنامج Selenium Web Driver مثل Firefox و Chrome وما إلى ذلك. تثبيت Selenium Pip install Selenium يتطلب السيلينيوم برنامج تشغيل ويب للتفاعل مع المتصفح المختار. برامج تشغيل الويب عبارة عن حزمة للتفاعل مع مستعرض الويب. يتفاعل مع متصفح الويب أو خادم ويب بعيد من خلال بروتوكول سلكي مشترك بين الجميع. يمكنك التحقق من وتثبيت برامج تشغيل الويب من اختيارك للمتصفح. Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads Firefox: https://github.com/mozilla/geckodriver/releases Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/ للمزيد عن هذه الحزمة https://selenium-python.readthedocs.io/
  16. أولا يجب فهم ألية عمل Null Safety . Null Safety بسيطة يعني أن المتغير لا يمكن أن يحتوي على قيمة "خالية" ما لم تتم تهيئته مع قيمة خالية لهذا المتغير. مع الأمان الفارغ ، سيتم الآن عرض جميع أخطاء عدم الرجوع في وقت التشغيل في وقت الترجمة. String name = null ; // هذا يعني أن اسم المتغير له قيمة فارغة. مبدأ Null Safety غير قابلة للإلغاء افتراضيًا: بشكل افتراضي ، لا تكون متغيرات Dart قابلة للإلغاء ما لم تحدد صراحة أنها يمكن أن تكون خالية. هذا لأن الخيار non-null كان إلى حد بعيد الخيار الأكثر شيوعًا في أبحاث API. قابل للتبني بشكل متزايد: الهجرة إلى الأمان الفارغ أمر متروك لك تمامًا. يمكنك اختيار ما تريد ترحيله إلى أمان فارغ ومتى. يمكنك الترحيل بشكل تدريجي ، والجمع بين الكود الفارغ والآمن غير الخالي في نفس المشروع. صوت كامل: نتيجة لسلامة Dart الخالية من الصوت ، يمكن إجراء تحسينات على المترجم. إذا قرر نظام النوع أن شيئًا ما ليس فارغًا ، فلا يمكن أن يكون فارغًا. يؤدي الأمان الفارغ إلى عدد أقل من الأخطاء وثنائيات أصغر وتنفيذ أسرع بمجرد ترحيل مشروعك بالكامل وتبعياته إلى أمان فارغ. أنواع Null String? carName; // initialized to null by default int? marks = 36; // initialized to non-null marks = null; // can be re-assigned to null عامل التأكيد (!) استخدم عامل التوكيد الفارغ (!) لجعل Dart يتعامل مع تعبير nullable على أنه غير قابل للإلغاء إذا كنت متأكدًا من أنه ليس فارغًا. int? someValue = 30; int data = someValue!; // هذا صالح لأن القيمة غير قابلة للإلغاء الكلمة الرئيسية المتأخرة Late Keyword نظرًا لأننا نعلم أن جميع المتغيرات غير خالية افتراضيًا ، يمكننا استخدام إما؟ عامل التشغيل أو الكلمة الأساسية المتأخرة. String? carName; // using ? operator late String bikeName; // using "late" keyword اذن حاول تغيير اسناد المتغير en_or_dis الى القيمة false أو true bool en_or_dis = false;
  17. نعم يمكن ذلك ، عبر استعمال نفس المشروع للواجهة الخلفية وهذه خطوات عمل مشروع html & css & js & firebase الخطوة 1: أولاً ، سننشئ مشروعًا على Firebase لربط صفحة الويب الثابتة الخاصة بنا. قم بزيارة صفحة Firebase لتكوين مشروعك. قم بزيارة موقع الويب وانقر فوق الزر عند إضافة مشروع كما هو موضح أدناه. الخطوة 2: أعط اسمًا لمشروعك وانقر على زر متابعة. الخطوة 3: الآن انقر فوق الزر "متابعة". الخطوة 4: اختر الآن الحساب الافتراضي لـ Firebase وانقر على زر إنشاء مشروع. الخطوة 5: الآن تم إنشاء مشروعك الخطوة السادسة: انقر الآن على الرمز الثالث وهو زر الويب (</>). الخطوة 7: أعط اسمًا مستعارًا لمشروع الويب الخاص بك وانقر على زر تسجيل التطبيق. الخطوة 8: الآن سترى تكوين التطبيق الخاص بك مثل هذا. انسخ هذا الرمز في مكان ما حيث سنستخدمه لاحقًا. الخطوة 9: انقر فوق Realtime Database كما هو موضح أدناه. الخطوة 10: الآن انقر فوق الزر "إنشاء قاعدة بيانات". الخطوة 11: الآن انقر فوق وضع الاختبار ثم انقر فوق الزر تمكين. الخطوة 12: تنشيط تخزين Firebase. انقر فوق زر التخزين في اليسار وانقر فوق البدء. بعد ذلك سيظهر هذا المربع. انقر فوق التالي. ثم انقر فوق تم. إعداد مشروع: الآن قم بإنشاء ملف HTML وانسخ كود البرنامج النصي الذي نسخته في الخطوة 8. الملف التالي هو مجرد عينة لك لفهم كيفية تكوين مشروعك.
  18. هذا بسيط ، فقط في جدول User نقوم بإضافة يما يُسمى بالأدوار أو roles . أي نضيف حقول من نوع boolean حتى نتحقق من صلاحية المستخدم . مثال : لو نفترض أن هناك دور للمدير ، سنقوم بإضافة field نسميها is_admin . وهكذا سيمكننا أن نتحقق من الأدوار باستخدام الشرط if في الواجهة ونقوم بعرض حسب الدور والصلاحية
  19. الخطوة 1: إنشاء مشروع Android Studio جديد قم بإنشاء مشروع استوديو android لنشاط فارغ. الخطوة 2: إضافة تبعية إلى المشروع في هذه المناقشة ، سنستخدم درج التنقل في Material Design . لذا أضف تبعية تصميم المواد التالية إلى ملف Gradle على مستوى التطبيق. implementation 'com.google.android.material:material:1.3.0-alpha03' ارجع إلى الصورة التالية إذا لم تتمكن من تحديد موقع ملف Gradle على مستوى التطبيق الذي يستدعي التبعية (ضمن عرض التسلسل الهرمي للمشروع). بعد استدعاء التبعية ، انقر على زر "Sync Now". تأكد من اتصال النظام بالشبكة حتى يقوم Android Studio بتنزيل الملفات المطلوبة. الخطوة 3: إنشاء قائمة في مجلد القائمة قم بإنشاء مجلد القائمة تحت مجلد res. لتنفيذ القائمة. الرجوع إلى الفيديو التالي لإنشاء التخطيط لتنفيذ القائمة. وهذا فيديو توضيحي للخطوة استدعاء التعليمات البرمجية التالية في navigation_menu.xml XML <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:ignore="HardcodedText"> <item android:id="@+id/nav_account" android:title="My Account" /> <item android:id="@+id/nav_settings" android:title="Settings" /> <item android:id="@+id/nav_logout" android:title="Logout" /> </menu> الخطوة 4: العمل مع ملف activity_main.xml قم باستدعاء الكود التالي في activity_main.xml لإعداد الأشياء الأساسية المطلوبة لدرج التنقل. XML <?xml version="1.0" encoding="utf-8"?> <!-- the root view must be the DrawerLayout --> <androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/my_drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" tools:ignore="HardcodedText"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="128dp" android:gravity="center" android:text="أكاديمية حسوب" android:textSize="18sp" /> </LinearLayout> <!-- this the navigation view which draws and shows the navigation drawer --> <!-- include the menu created in the menu folder --> <com.google.android.material.navigation.NavigationView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:menu="@menu/navigation_menu" /> </androidx.drawerlayout.widget.DrawerLayout> شيء واحد يجب ملاحظته هو أن رمز درج القائمة لا يزال غير ظاهر على شريط الإجراءات. نحتاج إلى تعيين الرمز ووظائفه المفتوحة والإغلاق برمجيًا. الخطوة 5: قم بتضمين سلاسل Open Close في سلسلة string.xml قم باستدعاء الكود التالي في ملف app / res / القيم / strings.xml. XML <resources> <string name="app_name">Navigation Drawer</string> <!-- للتبديل بين زر فتح الإغلاق لدرج التنقل --> <string name="nav_open">Open</string> <string name="nav_close">Close</string> </resources> الخطوة 6: العمل مع ملف MainActivity قم باستدعاء الكود التالي في ملف MainActivity لإظهار رمز القائمة على شريط الإجراءات وتنفيذ وظيفة الفتح والإغلاق لدرج التنقل. تمت إضافة التعليقات داخل الكود من أجل فهم أفضل. import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AppCompatActivity; import androidx.drawerlayout.widget.DrawerLayout; import android.os.Bundle; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { public DrawerLayout drawerLayout; public ActionBarDrawerToggle actionBarDrawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // مثيل تخطيط الدرج لتبديل رمز القائمة لفتحه // الدرج وزر الرجوع لإغلاق الدرج drawerLayout = findViewById(R.id.my_drawer_layout); actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.nav_open, R.string.nav_close); // تمرير مفتاح التبديل فتح وإغلاق لمستمع تخطيط الدرج // لتبديل الزر drawerLayout.addDrawerListener(actionBarDrawerToggle); actionBarDrawerToggle.syncState(); // لجعل رمز درج التنقل يظهر دائمًا على شريط الإجراءات getSupportActionBar().setDisplayHomeAsUpEnabled(true); } // تجاوز onOptionsItemSelected () // وظيفة للتنفيذ // العنصر انقر فوق رد الاتصال المستمع // لفتح وإغلاق التنقل // الدرج عند النقر على الأيقونة @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (actionBarDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } }
  20. يمكنك تجربة الكود التالي Sub test() Dim PopulationSelect As Range Set PopulationSelect = Application.InputBox("حدد نطاق البحث ", Type:=8) RandSample = Int(PopulationSelect.Rows.Count * Rnd + 1) PopulationSelect.Rows(RandSample).EntireRow.Select End Sub حيث يقوم بالبحث العشوائي حسب نطاق البحث المدخل
  21. نعم يمكنك عمل واجهة خلفية لتطبيقك ، بعد تعلم php يتعين عليك تعلم rest api حتى تستطيع توزيع البيانات للجهات الخارجية كتطبيقات الهاتف وتطبيقات الويب الحديثة وغيرها . لا يمكن حساب مدة تعلم php ، يعتمد على مدى استعابك وجهدك
  22. نعم يمكنك تخصيص أكواد bootstrap كما تشاء ، جرب هذا الكود وتأكد من أنك تستعمل النسخة 5 من bootstrap <nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container-fluid"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarTogglerDemo01"> <a class="navbar-brand" href="#">LOGO</a> <form class="d-flex"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success" type="submit">Search</button> </form> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Link</a> </li> <li class="nav-item"> <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a> </li> </ul> </div> </div> </nav>
  23. يمكنك استخدام أي إطار عمل للخلفية مع Flutter. الواجهة الأمامية والخلفية كلاهما مستقلان عن بعضهما البعض. الشيء الوحيد الذي تحتاجه الواجهة الخلفية هو البيانات لمعالجتها والواجهة الأمامية لإظهار البيانات في شكلها المناسب. أنت قادر على تطوير واجهات برمجة تطبيقات الراحة على الواجهة الخلفية ، ما هي إلا استجابة في شكل json الذي يتم إرساله إلى الواجهة الأمامية وتحويل الواجهة الأمامية json إلى شكلها المناسب. وأشهر اطر العمل في الواجهة الخلفية هي django مبنية على لغة بايثون laravel مبنية على لغة php node js مبنية على لغة javascript flask مبنية على لغة بايثون
  24. في الحقيقة إن لغة التجميع تحتوي على عدة طرق لعمل المدخلات والمخرجات ، يمكنك تصفحها عبر هذا الرابط .MODEL SMALL .STACK 100H .DATA .CODE MAIN PROC MOV AH,1 ;إدخال INT 21H ;call INTERRUPT MOV DL,AL MOV AH,2 ;إخراج INT 21H ;call INTERRUPT MAIN ENDP END MAIN يمكنكي تحويل كود c الى assembly من خلال هذا الرابط
×
×
  • أضف...