لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 09/03/24 في كل الموقع
-
السلام عليكم عندي كتبت الامر التالي علي Google localhost:443/phpmyadmin بيظهر الخظاء التالي Bad Request Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please. Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12 Server at www.example.com Port 4433 نقاط
-
السلام عليكم ليه الكود ده مش بيشتغل انا عاوز اشغل الملف ده ملف قاعد بيانات heart = pd.read_sql("Data-Heart-Disease\heart.db") print(heart.head())3 نقاط
-
السلام عليكم، أنا أعمل حالياً على مشروع Fullstack بهدف التعلم، باستخدام تقنيات CSS، JavaScript، PHP، و MySQL. في هذا المشروع، أستخدم أيضاً الـ API ونموذج MVC. سؤالي هو: كيف يمكنني هيكلة هذا المشروع بشكل صحيح؟ بمعنى آخر، كيف ينبغي لي تنظيم ملفات المشروع؟ حالياً، الهيكلية التي أتبعها حاليا هي كالتالي: backend -> app -> Controllers -> Models -> public -> vendor frontend -> index.html -> main.js -> style.css هل تعتبر هذه الهيكلية مناسبة؟ وإذا كانت كذلك، كيف يمكنني تشغيل المشروع محلياً على حاسوبي؟ حالياً، أستخدم سيرفر XAMPP لتشغيل جزء الـ backend، وأداة Live Server في VSCode لتشغيل جزء الـ frontend, لكن يبدو أن هذه الطريقة خاطئة.1 نقطة
-
1 نقطة
-
السلام عليكم ورحمه الله وبركاته محتاج اعمل صندوق تعليقات في مدونه بلوجر بس مينفعش الشخص يعلق غير مره واحده كل 24 ساعه هل دا ممكن1 نقطة
-
كيف يمكنني الحصول على عمل بعد تخرجي من دوره الذكاء الاصطناعي ؟1 نقطة
-
1 نقطة
-
بيظهر خطاء بردو بقول الاتصال غير امن بتظهر الرساله ده اتّصالك غير خاصّ قد تكون هناك محاولات من المهاجمين لسرقة معلوماتك من localhost (مثل كلمات المرور أو الرسائل، أو بيانات بطاقات الائتمان). مزيد من المعلومات حول هذا التحذير1 نقطة
-
1 نقطة
-
لا مشكلة، يمكنك استخدامها وهذا لا يغير من حقيقة أنه يجب أن يكون هنالك برامترين في الدالة read_sql الأول فيه الاستعلام والثاني خاص بالاتصال بقاعدة البيانات الذي عملته بال mysql لذا يمكنك تغيير الاستيرادت لتتوافق مع ما تستخدمه. import pandas as pd import mysql.connector1 نقطة
-
بس انا اسخدم ال mysql-connector والا الsqlite3 الف شكرااا لحضرتك1 نقطة
-
الخطأ يشير إلى أن دالة pd.read_sql() تتطلب وسيطين على الأقل وهما كالتالي: الاستعلام SQL: مثل "SELECT * FROM table_name" الاتصال بقاعدة البيانات: والذي يتم تمريره كوسيط ثان وهو (المتغير con). والسبب في ظهوره أنه إذا كنت قد استدعيت pd.read_sql() بدون تقديم الاتصال أي مثلا إذا كان لديك فقط pd.read_sql("SELECT * FROM table_name") بدون المتغير conn)، سيظهر هذا الخطأ. لهذا وكما أشرت لك سابقا، عدّل السطر المسؤول عن هذه الدالة إلى التالي: heart = pd.read_sql("SELECT * FROM table_name", conn)1 نقطة
-
تمام بس وشكرااا اوي علي المعلوم ده عشان انا كانت بتلغبط بنهم ولكن انا حولت الملف csvالي قاعد بيانات فا بيشغل بقا عشان اشوف الملف فا بيظهر خطاء ده TypeError: read_sql() missing 1 required positional argument: 'con' تمام الف شكرااا لحضرتك والف الشكرااا لحضرتكم1 نقطة
-
يجب أولا أن تقوم باستيراد مكتبة pandas في بداية الكود هكذا: import pandas as pd لكن استخدام pd.read_sql يتطلب منك تحديد الاتصال بقاعدة البيانات لذا يجب عليك استخدام sqlite3 لإنشاء اتصال: import pandas as pd import sqlite3 conn = sqlite3.connect("Data-Heart-Disease/heart.db") heart = pd.read_sql("SELECT * FROM table_name", conn) print(heart.head()) بطبيعة الحال مع استبدال table_name باسم الجدول الصحيح داخل قاعدة البيانات. ويجب أن يكون المسار التالي صحيحا، لاحظ أنك استخدمت علامة \ بشكل عكسي لذا قم بعكسها وعدلها كالتالي: Data-Heart-Disease/heart.db يجب أولا أن تقوم باستيراد مكتبة pandas في بداية الكود هكذا: import pandas as pd لكن استخدام pd.read_sql يتطلب منك تحديد الاتصال بقاعدة البيانات لذا يجب عليك استخدام sqlite3 لإنشاء اتصال: import pandas as pd import sqlite3 conn = sqlite3.connect("Data-Heart-Disease/heart.db") heart = pd.read_sql("SELECT * FROM table_name", conn) print(heart.head()) بطبيعة الحال مع استبدال table_name باسم الجدول الصحيح داخل قاعدة البيانات. ويجب أن يكون المسار التالي صحيحا، لاحظ أنك استخدمت علامة \ بشكل عكسي لذا قم بعكسها وعدلها كالتالي: Data-Heart-Disease/heart.db1 نقطة
-
المشكلة لديك في مسار الملف، حيث يجب إضافة حرف r قبل النص لتحويله إلى سلسلة نصية خام بحيث يتجاهل بايثون علامات الهروب بهذا الشكل: heart = pd.read_sql(r"Data-Heart-Disease\heart.db") print(heart.head()) و أيضا تأكد من أنك تستخدم مكتبة pandas بشكل صحيح وتأكد من وجود قاعدة البيانات heart.db في المسار المحدد.1 نقطة
-
المشكلة في الكود هي أنك تستخدم علامة ال backslash \ في مسار الملف، و في بايثون هذه العلامة تستخدم للهروب من الأحرف الخاصة مثل \n للسطر الجديد، لذلك يمكن أن يسبب ذلك خطأً عند قراءة مسار الملف، قم بتغيير المسار ليستخدم علامتين مائلتين للخلف \\: heart = pd.read_sql("Data-Heart-Disease\\heart.db") print(heart.head()) يمكنك أيضا استخدام العلامة المائلة للأمام / والتي تعمل على كل الأنظمة: heart = pd.read_sql("Data-Heart-Disease/heart.db") print(heart.head())1 نقطة
-
انا حولت الي قاعدة بيانات بس ازي اقدر اقتح قاعد بيانات ده علي MySQL1 نقطة
-
لم افهم طريقة عمل هذا الكود task_priority= task['priority'][1] print(f'task_priority: {task_priority}')1 نقطة
-
هل المعلومات التي يتم ذكرها في الفيديوهات موجودة في ملفات مثلا pdf لكي نراجع منها بعد فترة مثلا بدلا من ان نعيد سماع الفيديوهات مرة اخري1 نقطة
-
مرحبا يحى . حاليا لا يوجد أي تلخيصات أو ملفات للدروس متاحة وذلك للحفاظ على ملكية الدورة وعدم نشر محتواها و سرقتها . والأفضل هو كتابتك لتلك التلخيصات بنفسك وذلك لأن كل شخص تلخيصه وكتابته للأمور أفضل فتستطيع كتابة ملاحظات معينة وتلخيصك حيث سيكون فهمه أسرع حين مراجعته. ولكن يمكنك الإعتماد على موسوعة حسوب كمرجع لك أو الدروس و المقالات في أكاديمية حسوب . ولكن أي ملفات أو أكواد يتم شرحها وكتابتها ستجدها في أول درس من كل مسار حيث ستجد الملفات النهائية الخاصة بالمسار بأكمله موجودة في رابط أسفل الدرس الأول من المسار.1 نقطة
-
يمكنك كتابة برامج لإرسال رسائل البريد الإلكتروني والرسائل النصية القصيرة SMS لإعلامك بالأشياء حتى عندما تكون بعيدًا عن حاسوبك. إذا أجريتَ أتمتةً لمهمة تستغرق بضع ساعات لإنجازها، فلن ترغب في العودة إلى حاسوبك كل بضع دقائق للتحقق من حالة البرنامج، لذا يمكن لبرنامجك إرسال رسالة نصية إلى هاتفك عند الانتهاء فقط، مما يحرّرك من التركيز على أشياء أكثر أهمية عندما تكون بعيدًا عن حاسوبك. إرسال رسائل نصية باستخدام بوابات البريد الإلكتروني لخدمة الرسائل القصيرة SMS تكون الهواتف الذكية في متناول أيدينا أكثر من الحواسيب، لذلك تُعَد الرسائل النصية وسيلةً فورية وموثوقية لإرسال الإشعارات أكثر من البريد الإلكتروني، وتكون الرسائل النصية أقصر، ممّا يزيد من احتمالية أن يتمكّن الشخص من قراءتها. الطريقة الأسهل والأكثر موثوقية لإرسال رسائل نصية هي استخدام بوابة البريد الإلكتروني لخدمة الرسائل القصيرة SMS (أو Short Message Service)، وهذه البوابة هي خادم بريد إلكتروني يُعِدّه مزوّد الهاتف المحمول لتلقي الرسائل النصية عبر البريد الإلكتروني ثم يوجّهها إلى المستلم بوصفها رسالة نصية. يمكنك كتابة برنامج لإرسال رسائل البريد الإلكتروني باستخدام الوحدتين ezgmail أو smtplib، حيث يشكّل كلٌّ من رقم الهاتف وخادم البريد الإلكتروني لشركة الهاتف عنوانَ البريد الإلكتروني للمستلم، وسيكون موضوع ونص Body البريد الإلكتروني هو نص الرسالة النصية، فمثلًا يمكنك إرسال رسالة نصية إلى رقم الهاتف 415-555-1234 الذي يملكه عميل شركة Verizon من خلال إرسال بريد إلكتروني إلى العنوان 4155551234@vtext.com. يمكنك العثور على بوابة البريد الإلكتروني لخدمة الرسائل القصيرة SMS الخاصة بمزوّد الهاتف المحمول من خلال إجراء بحث على الويب عن اسم مزوّد بوابة البريد الإلكتروني لخدمة الرسائل القصيرة، ولكن يوضّح الجدول الآتي هذه البوابات للعديد من مزوّدي الخدمة المشهورين. يمتلك العديد من المزوّدين خوادم بريد إلكتروني منفصلة للرسائل النصية القصيرة، والتي تحدّد أن تحتوي الرسائل على 160 محرفًا، وخوادم أخرى منفصلة لخدمة رسائل الوسائط المتعددة MMS، والتي ليس لها حد أقصى لعدد المحارف. إذا أردتَ إرسال صورة، فيجب استخدام بوابة MMS وإرفاق الملف بالبريد الإلكتروني. إن لم تعرف مزوّد الهاتف المحمول للمستلم، فيمكنك تجربة استخدام موقعٍ للبحث عن شركة الاتصالات، والذي يجب أن يوفّر شركة الاتصالات الخاصة برقم الهاتف، حيث يمكنك العثور على هذه المواقع من خلال البحث في الويب عن مزود الهاتف المحمول لرقمٍ ما. ستتيح لك العديد من هذه المواقع البحث عن الأرقام مجانًا بالرغم من أنها ستفرض عليك رسومًا إذا كنت بحاجة إلى البحث عن مئات أو آلاف أرقام الهواتف من خلال واجهة برمجة التطبيقات الخاصة بها. يوضّح الجدول التالي بوابات البريد الإلكتروني لخدمة الرسائل القصيرة الخاصة بمزوّدي خدمات الهاتف المحمول: مزود الهاتف الخليوي بوابة SMS بوابة MMS AT&T البوابة number@txt.att.net البوابة number@mms.att.net Boost Mobile البوابة number@sms.myboostmobile.com بوابة SMS نفسها Cricket البوابة number@sms.cricketwireless.net البوابة number@mms.cricketwireless.net Google Fi البوابة number@msg.fi.google.com بوابة SMS نفسها Metro PCS البوابة number@mymetropcs.com بوابة SMS نفسها Republic Wireless البوابة number@text.republicwireless.com بوابة SMS نفسها Sprint البوابة number@messaging.sprintpcs.com البوابة number@pm.sprint.com T-Mobile البوابة number@tmomail.net بوابة SMS نفسها U.S. Cellular البوابة number@email.uscc.net البوابة number@mms.uscc.net Verizon البوابة number@vtext.com البوابة number@vzwpix.com Virgin Mobile البوابة number@vmobl.com البوابة number@vmpix.com XFinity Mobile البوابة number@vtext.com البوابة number@mypixmessages.com تُعَد بوابات البريد الإلكتروني لخدمة SMS مجانية وسهلة الاستخدام، ولكن لها بعضٌ من العيوب الرئيسية وهي: لا يوجد أيّ ضمان بأن النص سيصل مباشرةً أو قد لا يصل أبدًا. لا توجد طريقة لمعرفة فشل النص في الوصول. لا توجد طريقة للرد خاصةٌ بمستلم النص. قد تحظرك بوابات SMS إذا أرسلتَ عددًا كبيرًا جدًا من رسائل البريد الإلكتروني، ولا توجد طريقة لمعرفة عدد الرسائل التي ستكون "أكثر من الحد المسموح". لا يعني أن بوابة SMS تسلّم رسالة نصية اليوم أنها ستعمل غدًا. يُعَد إرسال النصوص عبر بوابة SMS مثاليًا عندما تحتاج إلى إرسال رسالة عابرة غير عاجلة، وإذا كنت بحاجة إلى خدمة أكثر موثوقية، فاستخدم خدمة بوابة SMS التي ليست عبر البريد الإلكتروني كما سنوضّح لاحقًا. إرسال رسائل نصية باستخدام خدمة Twilio ستتعلّم في هذا القسم كيفية التسجيل في خدمة Twilio المجانية واستخدام وحدة بايثون الخاصة بها لإرسال رسائل نصية. خدمة Twilio هي خدمة بوابة SMS، مما يعني أنها تسمح لك بإرسال رسائل نصية من برامجك عبر الإنترنت. يحتوي الحساب التجريبي المجاني لخدمة Twilio على كمية محدودة من الرصيد وستكون النصوص مسبوقة بجملة أن النص مُرسَل من حساب Twilio تجريبي "Sent from a Twilio trial account"، ولكن قد تكون هذه الخدمة التجريبية مناسبة لبرامجك الشخصية. ليست خدمة Twilio خدمة بوابة SMS الوحيدة، فإن لم تفضل استخدام Twilio، فيمكنك العثور على خدمات بديلة من خلال البحث عبر الإنترنت عن "free sms" أو "gateway" أو "python sms api" أو حتى "بدائل twilio". ثبّت الوحدة twilio باستخدام الأمر pip install --user --upgrade twilio على نظام ويندوز Windows (أو استخدم الأداة pip3 على نظامي ماك macOS ولينكس Linux) قبل التسجيل للحصول على حساب Twilio. ملاحظة: يُعَد هذا القسم خاصًا بالولايات المتحدة الأمريكية، ولكن تقدم Twilio خدمات الرسائل النصية القصيرة لدول أخرى غير الولايات المتحدة، لذا اطّلع على موقع Twilio الرسمي لمزيد من المعلومات، حيث ستعمل وحدة twilio ودوالها باستخدام الطريقة نفسها خارج الولايات المتحدة الأمريكية. التسجيل للحصول على حساب Twilio انتقل إلى موقع Twilio الرسمي واملأ استمارة التسجيل، ولكن يجب التحقق من رقم الهاتف المحمول الذي تريد إرسال الرسائل النصية إليه بعد التسجيل للحصول على حساب جديد. انتقل إلى صفحة معرّفات المتصل التي جرى التحقق منها Verified Caller IDs وأضِف رقم هاتف يمكنك الوصول إليه، ثم سترسل خدمة Twilio رمزًا إلى هذا الرقم والذي يجب أن تدخله للتحقق منه، حيث يكون هذا التحقق ضروريًا لمنع الأشخاص من استخدام الخدمة لإرسال رسائل نصية غير مرغوب فيها إلى أرقام هواتف عشوائية. ستتمكّن الآن من إرسال رسائل نصية إلى رقم الهاتف باستخدام الوحدة twilio. توفّر خدمة Twilio لحسابك التجريبي رقم هاتف لاستخدامه بوصفه مرسلًا للرسائل النصية، وستحتاج أيضًا معرّف SID ومفتاح الاستيثاق auth token الخاصين بحسابك، إذ يمكنك العثور على هذا المعرّف والمفتاح في صفحة لوحة التحكم Dashboard عندما تسجّل الدخول إلى حسابك على Twilio، حيث تعمل هذه القيم بوصفها اسم مستخدم وكلمة مرور Twilio عند تسجيل الدخول من برنامج بايثون. إرسال رسائل نصية ثبّت الوحدة twilio وسجّل على حساب Twilio، ثم تحقق من رقم هاتفك وسجّل رقم هاتف Twilio، ثم ستحصل على المعرّف SID ومفتاح الاستيثاق الخاصين بحسابك، وستكون أخيرًا جاهزًا لإرسال رسائل نصية لنفسك من سكربتات بايثون الخاصة بك . تُعَد شيفرة بايثون الفعلية بسيطةً إلى حدٍ ما بالمقارنة مع جميع خطوات التسجيل. أدخِل ما يلي في الصدفة التفاعلية أثناء اتصال حاسوبك بالإنترنت، مع استبدال قيم المتغيرات accountSID و authToken و myTwilioNumber و myCellPhone بمعلوماتك الحقيقية: ➊ >>> from twilio.rest import Client >>> accountSID = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' >>> authToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ➋ >>> twilioCli = Client(accountSID, authToken) >>> myTwilioNumber = '+14955551234' >>> myCellPhone = '+14955558888' ➌ >>> message = twilioCli.messages.create(body='Mr. Watson - Come here - I want to see you.', from_=myTwilioNumber, to=myCellPhone) يُفترَض أن تتلقى رسالة نصية بعد لحظات قليلة من كتابة السطر الأخير، وهذه الرسالة النصية هي: "Sent from your Twilio trial account - Mr. Watson - Come here - I want to see you". يجب استيراد الوحدة twilio باستخدام التعليمة from twilio.rest import Client، وليس باستخدام التعليمة import twilio فقط ➊ وفقًا للطريقة التي جرى فيها إعداد هذه الوحدة. خزّن معرّف SID الخاص بحسابك في المتغير accountSID وخزّن مفتاح الاستيثاق الخاص بك في المتغير authToken ثم استدعِ الدالة Client() ومرّر إليها accountSID و authToken. يعيد استدعاء الدالة Client() كائن Client ➋، حيث يحتوي هذا الكائن على السمة Attribute التي هي messages، والتي بدورها تحتوي على التابع create() الذي يمكنك استخدامه لإرسال رسائل نصية، وهو التابع الذي يوجّه خوادم Twilio لإرسال رسالتك النصية. خزّن رقم Twilio ورقم هاتفك المحمول في المتغيرين myTwilioNumber و myCellPhone، ثم استدعِ التابع create() ومرّر إليه وسطاء الكلمات المفتاحية Keyword Arguments التي تحدد نص الرسالة النصية ورقم المرسل (myTwilioNumber) ورقم المستلم (myCellPhone) ➌. يحتوي الكائن Message الذي يعيده التابع create() على معلومات حول الرسالة النصية المُرسَلة. تابع مثال الصدفة التفاعلية من خلال إدخال ما يلي: >>> message.to '+14955558888' >>> message.from_ '+14955551234' >>> message.body 'Mr. Watson - Come here - I want to see you.' يجب أن تحتوي السمات to و from_ و body على رقم هاتفك المحمول ورقم Twilio والرسالة على التوالي. لاحظ أن رقم الهاتف المرسِل موجود في السمة from_ مع شرطة سفلية في النهاية وليس from، لأن الكلمة from هي كلمة مفتاحية في لغة بايثون، إذ لا بد أنك رأيتها مستخدمةً في صيغة تعليمة الاستيراد from modulename import * مثلًا، لذلك لا يمكن استخدامها بوصفها اسمًا للسمة. تابع مثال الصدفة التفاعلية بما يلي: >>> message.status 'queued' >>> message.date_created datetime.datetime(2023, 7, 8, 1, 36, 18) >>> message.date_sent == None True يجب أن تعطي السمة status سلسلة نصية، ويجب أن تعطي السمات date_created و date_sent كائن datetime إذا أُنشِئت وأُرسِلت الرسالة. قد يبدو غريبًا ضبط السمة status على القيمة 'queued' وضبط السمة date_sent على القيمة None عندما تتلقى الرسالة النصية مسبقًا، والسبب في ذلك هو أنك التقطتَ الكائن Message في المتغير message قبل إرسال النص فعليًا. يجب إعادة جلب الكائن Message حتى تتمكّن من رؤية أحدث نسخة من السمتين status و date_sent. تحتوي كل رسالة من رسائل Twilio على معرّف سلسلة نصية SID فريد يمكن استخدامه لجلب آخر تحديث من الكائن Message. تابع مثال الصدفة التفاعلية من خلال إدخال ما يلي: >>> message.sid 'SM09520de7639ba3af137c6fcb7c5f4b51' ➊ >>> updatedMessage = twilioCli.messages.get(message.sid) >>> updatedMessage.status 'delivered' >>> updatedMessage.date_sent datetime.datetime(2023, 7, 8, 1, 36, 18) يعطي إدخال التعليمة message.sid معرّف SID الطويل الخاص بهذه الرسالة، ويمكنك استرداد كائن Message جديد مع أحدث المعلومات من خلال تمرير هذا المعرّف SID إلى التابع get() الخاص بعميل Twilio ➊، حيث تكون السمات status و date_sent صحيحة في كائن Message الجديد. تُضبَط السمة status على إحدى القيم التالية التي يكون نوعها سلسلة نصية: 'queued' أو 'sending' أو 'sent' أو 'delivered' أو 'undelivered' أو 'failed'. ملاحظة: يُعَد استلام الرسائل النصية باستخدام خدمة Twilio أكثر تعقيدًا بعض الشيء من إرسالها، إذ تتطلب خدمة Twilio أن يكون لديك موقع ويب يشغّل تطبيقه الويب، ويُعَد ذلك خارج نطاق هذا المقال. تطبيق عملي: وحدة لإرسال رسائل نصية يُحتمَل أن يكون الشخص الذي سترسل إليه رسائل نصية من برامجك هو أنت، إذ تُعَد الرسائل النصية طريقة رائعة لإرسال إشعارات لنفسك عندما تكون بعيدًا عن حاسوبك. إذا أردتَ أتمتة مهمة مملة باستخدام برنامج يستغرق تشغيله بضع ساعات، فيمكنك جعله يُعلِمكَ برسالةٍ نصية عند الانتهاء، أو قد يكون لديك برنامج مجدول ليعمل خلال فترات زمنية منتظمة ويحتاج إلى الاتصال بك في بعض الأحيان مثل برنامج التحقق من الطقس الذي يرسل إليك رسالة تذكيرية بأن تجلب مظلتك معك. سنوضّح فيما يلي برنامج بايثون صغير يحتوي على الدالة textmyself() التي ترسل رسالة نمرّرها إلى هذه الدالة كوسيط نوعه سلسلة نصية. افتح تبويبًا جديدًا في محرّرك لإنشاء ملف جديد وأدخِل الشيفرة البرمجية التالية، مع وضع معلوماتك الخاصة مكان معرّف SID ومفتاح الاستيثاق الخاصين بالحساب وأرقام الهاتف، واحفظ الملف بالاسم textMyself.py. #! python3 # textMyself.py - تعريف الدالة textmyself() التي ترسل رسالة نصية نمرّرها إليها بوصفها سلسلة نصية # القيم المُحدَّدة مسبقًا: accountSID = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' authToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' myNumber = '+15559998888' twilioNumber = '+15552225678' from twilio.rest import Client ➊ def textmyself(message): ➋ twilioCli = Client(accountSID, authToken) ➌ twilioCli.messages.create(body=message, from_=twilioNumber, to=myNumber) يخزِّن هذا البرنامج معرّف SID ومفتاح الاستيثاق الخاصين بالحساب والرقم المرسِل والرقم المستلِم، ثم يعرّف الدالة textmyself() التي تأخذ وسيطًا ➊، وينشئ كائن Client ➋، ويستدعي التابع create() مع الرسالة التي مرّرتها ➌. إذا أردتَ إتاحة الدالة textmyself() لبرامجك الأخرى، فما عليك سوى وضع الملف textMyself.py في المجلد نفسه الذي يحتوي على سكربت بايثون الخاص بك، وإذا أردتَ أن يرسل أحد برامجك رسالة نصية إليك، فأضِف إليه ما يلي: import textmyself textmyself.textmyself('The boring task is finished.') يجب التسجيل في خدمة Twilio وكتابة الشيفرة البرمجية الخاصة بإرسال الرسائل النصية مرة واحدة فقط، ثم يمكنك إرسال رسالة نصية من أيٍّ من برامجك الأخرى من خلال كتابة سطرين فقط من الشيفرة البرمجية. مشاريع للتدريب حاول كتابة البرامج التي تؤدي المهام التي سنوضّحها فيما يلي لكسب خبرة عملية أكبر من خلال استخدام المعلومات التي حصلتَ عليها من المقال السابق وهذا المقال. برنامج لإرسال رسائل بريد إلكتروني لإنجاز مهمة روتينية عشوائية اكتب برنامجًا يأخذ قائمةً بعناوين البريد الإلكتروني لأشخاص وقائمةً بمهام روتينية يجب تنفيذها ويسند المهام الروتينية للأشخاص عشوائيًا، وأرسل بريدًا إلكترونيًا لكل شخص بالمهام الروتينية المُسنَدة إليه. احتفظ أيضًا بسجل للمهام الروتينية المُسنَدة مسبقًا لكل شخص لتتمكّن من التأكد من أن البرنامج يتجنب إعطاء أيّ شخص المهمة الروتينية نفسها التي أنجزها سابقًا، ويمكنك جدولة البرنامج لتشغيله مرة واحدة في الأسبوع تلقائيًا. إذا مرّرتَ قائمةً إلى الدالة random.choice()، فستعيد عنصرًا مُحدَّدًا عشوائيًا من القائمة. يمكن أن يبدو جزء من شيفرتك البرمجية كما يلي: chores = ['dishes', 'bathroom', 'vacuum', 'walk dog'] randomChore = random.choice(chores) chores.remove(randomChore) # أُنجِزت هذه المهمة الروتينية، لذا يجب إزالتها برنامج للتذكير بإحضار المظلة وضّحنا في مقالٍ سابق كيفية استخدام الوحدة requests لاستخراج البيانات من موقع الطقس، لذا اكتب برنامجًا يعمل قبل أن تستيقظ في الصباح مباشرةً ويتحقق مما إذا كانت السماء تمطر في ذلك اليوم. إذا كانت ستمطر، فاطلب من البرنامج أن يرسل لك رسالة تذكيرية بضرورة إحضار مظلة قبل مغادرة المنزل. برنامج لإلغاء الاشتراك التلقائي اكتب برنامجًا يبحث في حساب بريدك الإلكتروني ليجد جميع روابط إلغاء الاشتراك في جميع رسائل بريدك الإلكتروني، ويفتحها في المتصفح تلقائيًا. يجب على هذا البرنامج أن يسجّل الدخول إلى خادم IMAP الخاص بمزوّد بريدك الإلكتروني، وينزّل جميع رسائل بريدك الإلكتروني، ويمكنك استخدام المكتبة Beautiful Soup التي وضّحناها في مقالٍ سابق للتحقق من النسخة التي فيها كلمة إلغاء الاشتراك Unsubscribe ضمن الوسم link في شيفرة HTML. يمكنك استخدام الدالة webbrowser.open() لفتح جميع هذه الروابط لعناوين URL تلقائيًا في المتصفح بعد الحصول على قائمة بهذه العناوين، ثم يجب المرور على الخطوات الإضافية وإكمالها يدويًا لإلغاء الاشتراك بهذه القوائم، حيث يتضمن ذلك النقر على الرابط للتأكيد في معظم الحالات. يوفّر هذا السكربت عليك الاضطرار إلى المرور على جميع رسائل بريدك الإلكتروني بحثًا عن روابط إلغاء الاشتراك، ويمكنك بعد ذلك إعطاء هذا السكربت إلى أصدقائك حتى يتمكنوا من تشغيله على حسابات بريدهم الإلكتروني، ولكن تأكّد من أن كلمة مرور بريدك الإلكتروني غير مكتوبة في شيفرتك المصدرية. التحكم في حاسوبك من خلال البريد الإلكتروني اكتب برنامجًا يتحقق من حساب البريد الإلكتروني كل 15 دقيقة بحثًا عن أيّ تعليمات ترسلها إليه عبر البريد الإلكتروني وينفّذ تلك التعليمات تلقائيًا. يُعَد BitTorrent مثلًا نظام تنزيل يستخدم تقنية الند للند peer-to-peer، حيث يمكنك تنزيل ملفات الوسائط الكبيرة على حاسوبك المنزلي باستخدام برنامج BitTorrent مجاني مثل البرنامج qBittorrent. إذا أرسلتَ رابط BitTorrent (رابطًا قانونيًا وليس رابط قرصنة) إلى البرنامج عبر البريد الإلكتروني، فسيتحقق البرنامج من بريده الإلكتروني ويعثر على هذه الرسالة ويستخرج الرابط، ثم يشغّل برنامج qBittorrent لبدء تنزيل الملف. يمكنك بهذه الطريقة جعل حاسوبك المنزلي يبدأ التنزيلات أثناء تواجدك بعيدًا عن المنزل، ويمكن الانتهاء من التنزيل (القانوني وغير المقرصن) بحلول وقت عودتك إلى المنزل. وضّحنا في مقالٍ سابق السابق كيفية تشغيل البرامج على حاسوبك باستخدام الدالة subprocess.Popen()، فمثلًا سيؤدي الاستدعاء التالي إلى تشغيل برنامج qBittorrent مع ملف تورنت: qbProcess = subprocess.Popen(['C:\\Program Files (x86)\\qBittorrent\\ qbittorrent.exe', 'shakespeare_complete_works.torrent']) يجب أن يتأكد البرنامج من أن رسائل البريد الإلكتروني تأتي منك، إذ قد ترغب في اشتراط أن تحتوي رسائل البريد الإلكتروني على كلمة مرور، لأنه من السهل إلى حدٍ ما أن يزيّف المخترقون عنوان "من from" في رسائل البريد الإلكتروني. يجب أن يحذف البرنامج رسائل البريد الإلكتروني التي يجدها حتى لا يكرر التعليمات في كل مرة يتحقق فيها من حساب البريد الإلكتروني، واجعل البرنامج أيضًا يرسل لك بريدًا إلكترونيًا أو رسالة تأكيد في كل مرة ينفّذ فيها أمرًا. من الجيد استخدام دوال التسجيل الموضّحة في مقالٍ سابق لكتابة سجل ملف نصي يمكنك التحقق منه في حالة ظهور أخطاء، نظرًا لأنك لن تجلس أمام الحاسوب الذي يشغّل البرنامج. يتمتع برنامج qBittorrent وتطبيقات BitTorrent الأخرى بميزةٍ تمكّنه من الإغلاق تلقائيًا بعد اكتمال التنزيل، حيث وضّحنا في مقالٍ سابق كيف يمكنك تحديد موعد إنهاء التطبيق المُشغَّل باستخدام التابع wait() لكائنات Popen. سيوقِف استدعاء التابع wait() التنفيذ حتى يتوقف البرنامج qBittorrent، ثم يمكن لبرنامجك إرسال بريد إلكتروني أو رسالة نصية إليك لإعلامك باكتمال التنزيل. هناك الكثير من الميزات المحتملة التي يمكنك إضافتها إلى هذا المشروع، ولكن إذا واجهتك مشكلة، فيمكنك تنزيل مثال تطبيق هذا البرنامج من nostarch. الخلاصة تختلف الرسائل النصية عن البريد الإلكتروني بعض الشيء، لأنه هناك حاجة إلى أكثر من مجرد اتصال بالإنترنت لإرسال رسائل نصية قصيرة SMS على عكس البريد الإلكتروني، حيث توفر خدمات مثل خدمة Twilio وحداتٍ تسمح بإرسال رسائل نصية من برامجك. ستتمكّن بعد إجراء عملية الإعداد الأولية من إرسال الرسائل النصية باستخدام سطرين فقط من الشيفرة البرمجية. ستتمكّن باستخدام هذه الوحدات مع مهاراتك الأخرى من برمجة الشروط المُحدَّدة التي بموجبها يجب على برامجك إرسال الإشعارات أو التذكيرات، وبالتالي ستصل برامجك الآن إلى ما هو أبعد من حاسوبك الذي تعمل عليه. ترجمة -وبتصرُّف- للقسم Sending Text Messages من مقال Sending Email and Text Messages لصاحبه Al Sweigart. اقرأ أيضًا المقال السابق: إرسال رسائل البريد الإلكتروني باستخدام لغة بايثون جدولة المهام وتشغيل برامج أخرى باستخدام لغة بايثون قراءة مستندات جداول إكسل باستخدام لغة بايثون Python الكتابة في مستندات إكسل باستخدام لغة بايثون Python1 نقطة
-
و عليكم السلام ال command line هى الاوامر التى ننفذها فى ال termainal او powershell و يمكنك تنفيذ الأوامر بسرعة اكبر من خلالهم، والعمل مع الملفات والمجلدات. فيمكننا تشغيل ملفات ال python باستخدام ال CLI مثل اذا كنا نريد تشغيل ملف test.py: python test.py ويمكنك تمرير المتغيرات الى بايثون من خلال سطر الأوامر باستخدام مكتبة sys أو argparse. مثل اذا اردنا تمرير متغيرات مع تشغيل الملفtest.py: import sys print("1st argument:", sys.argv[1]) print("2nd argument:", sys.argv[2]) و لتشغيل الملف: python test.py arg1 arg2 و يمكننا تثبيت الحزم و المكتبات عن طريقها ايضا مثل: تثبيت المكتبة pandas: pip install pandas # or any library او يمكننا التفاعل مع بايثون مباشرة حيث يمكنك بدء التفاعل مع بايثون في سطر الأوامر بكتابة python أو python3 فقط. هنا يمكنك كتابة أوامر بايثون مباشرة. python ثم كتابة الكود: print("Hello, World!") و ستكون النتيجة المطبوعة فى ال terminal: Hello, World!1 نقطة
-
وعليكم السلام ورحمة الله وبركاته. يعتبر الـ Command Line أو سطر الأوامر هو واجهة نصية تستخدم لإدخال الأوامر إلى نظام التشغيل وتنفيذها وذلك بدلاً من استخدام الواجهة الرسومية حيث كما تعلم فإن معظم العمليات التي تقوم بها في نظام التشغيل يتم عن طريق واجهة رسومية . ولكن ما الفائدة من استخدام سطر الأوامر بدلاً من الواجهة الرسومية . يتميز سطر بقدرته على توفير تحكم مباشر وسريع في العمليات المختلفة داخل النظام. لذلك يعتبر أداة قوية جداً للمبرمجين والمطورين والمستخدمين المتقدمين لنظام التشغيل . ويمكنك الإستفادة من خلاله بالكثير من المهام فمثلاً يمكنك الوصول إلى وظائف النظام المتقدمة التي قد لا تكون متاحة من خلال الواجهة الرسومية والعديد من المهام الأخرى التي تتطلب سطر الأوامر1 نقطة
-
وعليكم السلام ورحمة الله وبركاته. سطر الأوامر (Command Line) هو واجهة نصية تمكنك من التفاعل مع نظام التشغيل من خلال إدخال الأوامر النصية. هو أداة قوية تتيح لك تنفيذ مجموعة واسعة من المهام على جهاز الكمبيوتر الخاص بك، سواء كان يعمل بنظام Windowsأو Linux أو حتى macOS. يمكن الوصول إلى سطر الأوامر من خلال واجهات مختلفة مثل موجه الأوامر (Command Prompt) في Windows أو الPower Shell. والطرفية (Terminal) في Linux و macOS. يمكنك تنفيذ العديد من الأوامر مثل إنشاء وحذف وتعديل الملفات والمجلدات . تثبيت البرامج وتنفيذ الإسكريبتات والعديد من الأمور الكثيرة التي لا يمكن تلخيصها في إجابة واحدة . يمكنك البحث عن الأمر الذي تريد تنفيذه من خلال سطر الأوامر ونوع النظام الخاص بك وستجد الأمر الذي يساعدك في تنفيذ تلك المهمة .1 نقطة
-
ذلك هو منفذ الأوامر CLI أو الطرفية أو التيرمنال terminal أو الصدفة bash فله مسميات كثيرة، ولكل نظام منفذ أوامر خاص به وباسم فريد مثلاً لديك PowerShell في ويندوز. وفي مجال البرمجة أو عند استخدام نظام لينكس، فهو بمثابة أداة التنفيذ لغالبية ما تريد القيام به بمعنى حلقة وصل بينك وبين النظام، فلو تريد تثبيت حزمة يتم الأمر من خلاله ولو تريد تشغيل المشروع فمن خلاله أيضًا. بالإضافة إلى إمكانية إنشاء الملفات والمجلدات وحذفها والتعديل عليها والتنقل بينها وأيضًا تعديل إعدادات النظام من خلاله، بجانب القدرة على أتمتة بعض الأمور من خلال كتابة سكربتات وتنفيذها، أو إدارة الشبكات والكثيرة من الأمور، مما سيزيد من إنتاجيتك لو تعلمت استخدامه. ابحث على اليوتيوب عن أساسيات CLI1 نقطة
-
إذا كان هذا السؤال خاصة بأحد دروس الأكاديمية، في المرات القادمة ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل. إذا كان سؤالك بخصوص html فإن : Global Attributes (السمات العامة): هي سمات يمكن استخدامها مع أي عنصر من عناصر HTML. مثل: class: لتعيين أسماء الفئات للعنصر، مما يمكنك من تطبيق تنسيقات CSS معينة أو استخدام JavaScript. id: لتعيين معرف فريد للعنصر، مما يتيح استهدافه عبر CSS أو JavaScript. style: لتطبيق أنماط CSS مباشرة على العنصر. data- حيث يمكن إستخدام اي سمة من السمات العامة على اي عنصر حيث تشترك تلك العناصر جميعافي هذه السمات. Specific Attributes (السمات الخاصة): هي سمات تتعلق بعناصر HTML معينة ولا يمكن استخدامها مع كل عنصر. مثل: <input> يحتوي على سمات مثل type, value, placeholder ولاتوجد عناصر اخرى تحتوى على تلك السمات. <a> يحتوي على سمات مثل href, target, rel. <img> يحتوي على سمات مثل src, alt, width, height. ومن الممكن ان توجد بعض العناصر التي لها نفس السمات المشتركة ولكنها لا توجد في جميع عناصر HTML.1 نقطة
-
1 نقطة
-
بايثون تفسر الأوامر في وقت التشغيل مما يعني أن الكود يترجم سطر بسطر أثناء التنفيذ، و هذا يضيف طبقة إضافية من العمل بالمقارنة مع لغات تترجم بالكامل قبل التشغيل، كما أنها لغة ديناميكية مما يعني أنها تدعم تغييرات في وقت التشغيل مثل تغيير أنواع المتغيرات، و هذا يتطلب عمليات تحقق إضافية أثناء التشغيل. و اللغات المفسرة مثل بايثون تسهل عملية التطوير لأنها لا تتطلب وقت ترجمة طويل، حيث يمكن للمطورين تجربة الكود بشكل أسرع، و غالبا ما توفر مرونة أكبر في التعامل مع الكود، مثل القدرة على تشغيل الأوامر التفاعلية مباشرة، كما أنه ليس كل التطبيقات تحتاج إلى الأداء العالي الذي توفره اللغات المترجمة، في بعض الأحيان سهولة التطوير والصيانة تكون أكثر أهمية من سرعة التنفيذ، فكل نوع من اللغات له استخداماته ومميزاته بناء على احتياجات المشروع.1 نقطة