لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 08/03/23 in أجوبة
-
السلام عليكم انا مصرية و بسبب الوضع الإقتصادي حاليا فى طريقة أدفع بالجنيه المصري ولا لازم اللى يبقى على الفيزا دولارات و أسهل طرق الدفع لو سمحتم2 نقاط
-
ما هي الخطوات لتنزيل التطبيق على متجر play وكيفية الربح منه؟؟؟؟؟1 نقطة
-
السلام عليكم اخي الكريم انا اشتغلت على مدونة لمدة سنة ونصف وقدمه على أكثر من عشر مرات على ادسنس ولكن كل مرة يتم فرض المدونة ولدية دومين مدفوع وقالب مدفوع والكثير من المقالات ولا اعرف ماذا افعل اشعر بيأس واريد من حضرتك إذا كنت صاحب خبرة في ادسنس ان تقول لي ما هي المشاكل الموجودة في المدونة رابط المدونة: https://www.moneysite30.com/1 نقطة
-
let Person = function(name,age,job){ this.name=name, this.age=age, this.job=job, this.year=function(){ return 2023-this.age; } } let person = new Person ('Peter',35,'programmer'); console.log(person.year()); Add a method to the person object that calculates their birth year based on their age. ma2bol al7al hek ?1 نقطة
-
اريد ان اعمل في مجال اختبار تطبيقات الويب وخصوصا صائد ثغرات ما هي افضل دوره في اكاديمية حاسوب تؤهلني الي دخول هذا المجال ؟1 نقطة
-
السلام عليكم ورحمة الله وبركاته .. لدي معرفة مسبقة باساسيات الويب وبلغات برمجه اخري لم يتناولها الكورس مثل بايثون وكذلك بعض الادوات التي قد لا تتطرق اليها الدورة (لم اكمل الدورة بعد) ولكن ينقصني الدعم اللازم الذي يمكنني من اتخاذ الخطوة الاولي نحو العمل حبث اني لا اعلم الحد الادني اللازم الذي يمكنني من ذلك حتي لو عن طريق العمل الحر ... فما هو نوع الدعم الذي يمكن لمتخصصي حسوب مساعدتي به اثناء وبعد الدورة وهل يمكن ان اجد الدعم الذي ينقصني من هذه الدورة؟ ثانيا ارجو الافادة من خبراتكم هل يمكن للعمل الحر باساسيات دورة تطوير واجهة المستخدم ان يكون بديلا للعمل التقليدي في شركة من حيث العائد المادي والاستقرار النفسي؟ وشكرا جزيلا1 نقطة
-
السلام عليكم فين الخطاء لو سمحت في الكود ده import pyttsx3 engine = pyttsx3.init() engine.say("hello ali") engine.runAndWait() انا بشغل الكود ده علي Google Colab النتجيه كانت الكود ما شتغلش1 نقطة
-
سلام عليكم شباب. هل هذا الموقع يحتاج لقاعدة بيانات ؟ الموقع عبارة عن صفحة واحدة يعرض سعر الذهب. يتم استيراد الاسعار من مواقع اخرى عن طريق تجريف الويب لحظة بلحظة. ( الموقع يعرض اخر سعر فقط ولا يحفظ الاسعار السابقة ). عند كل تحديث في سعر المواقع الخارجية يتم تحديث السعر داخل الموقع تلقائيا هذا هو عمل الموقع فقط ولا يوجد أي ميزة أخرى1 نقطة
-
وعليكم السلام، في كل دورات الأكاديمية يوجد فريق متكامل يعمل بتنسيق عال على إجابة الطلبة عن تساؤلاتهم التي تطرأ عليهم خلال الدورة، ولمساعدتهم في حل مشاكلهم طوال الدورة. اذ أن أغلب الأسئلة يتم تقديم إجابة لها فور طرحها في مدة زمنية لا تتعدى في الغالب النصف ساعة - قد تأخذ بعض المشاكل المعقدة الأخرى أكثر قليلا. يتم ذلك عن طريق نشر الطالب لتعليق جديد في قسم يظهر أسفل كل فيديو هو قسم "تعليقات الطلبة"، ثم يتم الموافقة على نشر تعليق الطالب فورا ويهتم أحد المدربين النشطين حالا بتقديم إجابة له أو المتابعة معه. هاته هي الفكرة باختصار. تفاصيل: https://support.academy.hsoub.com/how-to-ask-in-courses1 نقطة
-
اطلعت على مدونتك، والغريب أن لديك محتوى طويل وقيم ومنظم والقالب مناسب للتصفح، فهل تلقيت سبب للرفض؟ وسأذكر لك الأسباب التي يتم رفض أي مدونة بسببها: المدونة لديك تحتوي على عدد من المقالات منخفض الجودة أو مسروق أو غير أصلي؟ مثلاً يحتوي أحد المقالات على نص مقتبس مباشرة من مقالة أخرى ولا يتوافق ذلك مع سياسة AdSense، التي تمنع منشئي المحتوى من عرض الإعلانات على محتوى مسروق أو غير أصلي. تحتوي المدونة أيضًا على عدد من القيود التي تجعلها غير مناسبة للإعلانات، مثلاً تحتوي المدونة على قسم "الإعلانات" الذي يتضمن رسالة تحث المستخدمين على إيقاف تشغيل AdBlock، كما تتضمن المدونة عددًا من التعليقات التي تدعو إلى حظر Google AdSense؟ تعاني المدونة أيضًا من عدد من المشكلات المتعلقة بجودة الموقع، أي مثلاً تحتوي المدونة على عدد كبير من الأخطاء النحوية واللغوية، كما أن التصميم ضعيف والمحتوى غير جذاب؟ تتطلب AdSense أن يكون موقعك على الويب نشطًا لمدة 30 يومًا على الأقل ولديه حركة مرور جيدة، وإذا لم يكن موقعك على الويب نشطًا لفترة كافية أو لا يحتوي على حركة مرور كافية، فقد يتم رفضه من AdSense. ولا تسمح AdSense بعرض الإعلانات على المحتوى الذي يعتبر غير لائق، مثل المحتوى الجنسي أو العنيف أو المثير للانزعاج. أيضًا لا تسمح AdSense بعرض الإعلانات على المحتوى الاحتيالي، مثل المحتوى الذي يحاول خداع المستخدمين أو الاحتيال عليهم. بالإضافة إلى أنه لا تسمح AdSense بعرض الإعلانات على المحتوى الذي تم حظر عرضه على AdSense، مثل المحتوى الذي ينتهك حقوق الطبع والنشر أو المحتوى الذي يحرض على العنف أو الكراهية. لا تسمح AdSense بعرض الإعلانات على المحتوى الذي لا يعتبر موثوقًا، مثل المحتوى الذي يحتوي على معلومات خاطئة أو مضللة. لا تسمح AdSense بعرض الإعلانات على المحتوى غير المكتمل، مثل المحتوى الذي لا يحتوي على محتوى كافٍ أو المحتوى الذي لا يحتوي على تصميم جيد.1 نقطة
-
1 نقطة
-
كل تشغيل لغوغل كولاب يتم فيه إنشاء بيئة جديدة، أي أن أي بيانات أو مكتبات تقوم بتنزيلها عليه ستختفي. لا يوجد حل من أجل المكتبات، عليك كل مرة تثبيتها، لا مشكلة في ذلك فهو سريع بالقيام بذلك، بشكل عام لن يأخذ أكثر من دقيقتين مهما كان حجم المكتبات.1 نقطة
-
تمام , شكرا حداا هعمل كد اناشاء الله وكمان انا بثبيت مكتبه علي غوغل كولاب واجي مثلا تاني يوم اشوف المكتبه القهي مش موجود هل فيه حل لحاجه زي كده ؟1 نقطة
-
يمكنك كتابة الكود محلياً ورفعه و تنفيذه على كولاب عندما تتحقق من أن كل شيء يعمل كما هو مطلوب، هذا في حال كنت تكتب كود كبير. أما في حال كان الكود بضعة أسطر أو تجارب مباشرة فطبعاً استعمال كولاب أحسن كونه أسرع، أيضاً عندما تريد تدريب نموذج تستعمل كولاب، و لكن التدريب النهائي و ليس فقط تجريب الكود إن كان يحوي مشاكل أم لا.1 نقطة
-
تما , بس انا الازم استخدم غوغل كولاب عشان انا اختارت اتعلم مجال تحليل البيانات وتعلم الاله ؟ شكراا1 نقطة
-
كما أخبرك قيس، أنت بحاجة إلى محرر أكواد، وفي حال كانت مواصفات الحاسوب لديك ضعيفة، فتستطيع استخدام بيئة عمل Codespaces وهي متاحة من خلال المتصفح من الرابط التالي: https://github.com/codespaces وبها نفس الخواص الخاصة ببرنامج vsocde نسخة سطح المكتب، وبالطبع عليك بتثبيت الإضافات الخاصة ببايثون وهي: https://marketplace.visualstudio.com/items?itemName=ms-python.python وتستطيع فتح التيرمنال (منفذ الأوامر) وتثبيت المكتبات التي تريدها، ولكن أنت بحاجة إلى إنشاء حساب GitHub.1 نقطة
-
صحيح يمكنك استخدام مكتبة pyttsx3 في Google Colab. لكن هناك بعض الخطوات التي يجب اتباعها للتأكد من أن المكتبة تعمل بشكل صحيح. أولاً قم بتثبيت المكتبة في كود Google Colab قبل استخدامها. يمكنك فعل ذلك عن طريق تنفيذ الامر التالي: !pip install pyttsx3 تحقق من أن الصوت قابل للتشغيل على Google Colab. ليست جميع المتصفحات والأجهزة قادرة على تشغيل الصوت في Google Colab. قد تحتاج إلى التحقق من ذلك على جهاز آخر أو استخدام متصفح آخر. الكود الذي قم بارساله صحيحًا ويعمل بشكل جيد عند استخدامه على جهاز محلي. إذا لم تعمل هذه الخطوات يمكن أن يكون المشكلة في قدرة Colab على تشغيل الصوت. في هذه الحالة يمكنك محاولة تشغيل الكود على جهاز محلي للتحقق مما إذا كانت المشكلة في الكود نفسه أم في قدرة المتصفح على تشغيل الصوت.1 نقطة
-
طالما لا تريد حفظ أي معلومات معينة فلا فكرة من وجود قاعدة البيانات، حيث أن قاعدة البيانات تستعمل لحفظ بيانات الموقع. مثلاً لو أردت الحفاظ على الأسعار القديمة لعرض مخططات توضح تغير السعر خلال الفترات الزمنية السابقةـ عندها ستحتاج إلى قاعدة بيانات بحيث يكون فيها تاريخ التحقق من السعر و السعر، عندها يمكنك استعمالها لعرض هذه المخططات. أيضاً في حال أردت أن يكون لديك مستخدمين مثلاً و ترسل لهم إشعارات عند تغير سعر الذهب، عندها تحتاج حتماً إلى قاعدة بيانات لتخزين معلومات المستخدمين لديك.1 نقطة
-
و عليكم السلام، غوغل كولاب ليس بيئة تطوير كود، و بالتالي لا تتوقع وجود هذه الميزات فيه، في حال كنت تريد كتابة كود مع ميزات إضافية مثل ألوان المتغيرات فعليك استعمال vscode أو pycharm أو أي برنامج آخر مماثل. أيضاً يمكنك إنشاء ملف على google colab بالكود الخاص بك و فتحه ضمن غوغل كولاب، عندها سيعطيك ألوانا للمتغيرات مختلفةـ و لكن غير قابلة للتعديل. مثلاً يمكنك كتابة كود معين داخل ملف اسمه test.py و من ثم تنفيذه عن طريق كتابة python /content/test.py1 نقطة
-
الإجابة باختصار هي: لا، لا يفترض أن يمتلك موقع بمثل هاته الوظيفية قاعدة بيانات، قد يكون من الضروري امتلاك واجهة خلفية للقيام بكل منطق التجريف وتنقيح البيانات، ولكن لا يبدوا لقاعدة البيانات هنا أي دور. قد يمكن استعمال قاعدة البيانات مثلا في أرشفة هاته الأسعار وعرضها كتأريخ لاحقا، وبما أنك ذكرت أن الموقع لا يحفظ الأسعار السابقة فهاته الجزئية هي الأخرى مستبعدة.1 نقطة
-
بالطبع بإمكانك استخدام مكتبة pyttsx3 في Google Colab، ولكن يجب عليك أولاً تثبيت المكتبة باستخدام الأمر التالي: !pip install pyttsx3 وبعد تثبيت المكتبة، تستطيع استخدامها في الكود، وكمثال الكود التالي سينطق النص "Hello Ali": import pyttsx3 engine = pyttsx3.init() engine.say("Hello Ali") engine.runAndWait() إذا لم تظهر نتيجة الكود على Google Colab، فتأكد من أنك قد قمت بتشغيل الخلية التي يحتوي عليها الكود، عن طريق النقر على رمز "تشغيل" في أعلى الخلية.1 نقطة
-
الحل صحيح، حيث أنك قمت بإنشاء دالة البناء Person التي تأخذ ثلاثة متغيرات (name, age, job) وتقوم بإنشاء كائن person من النوع Person باستخدام معامل الكلمة الجديدة new. ثم إضافة دالة تحسب السنة الحالية باستخدام العمر وتقوم بطباعة الناتج على الشاشة باستخدام console.log(). وإذا أردت تحسين الكود وتمرير تاريخ الميلاد الفعلي فسيكون كالتالي: let Person = function(name, birthDate, job) { this.name = name; this.birthDate = birthDate; this.job = job; this.year = function() { return 2023 - this.birthDate.getFullYear(); }; this.birthYear = function() { return this.birthDate.getFullYear(); }; }; let birthDate = new Date(1988, 0, 1); // قم بتعديل التاريخ هنا إلى تاريخ الميلاد الفعلي let person = new Person('Peter', birthDate, 'programmer'); console.log(person.year()); console.log(person.birthYear()); حيث قمت بتعديل دالة البناء Person لتأخذ birthDate بدلاً من age. ثم أنشأت كائن birthDate باستخدام new Date() مع تاريخ الميلاد الفعلي، والآن، يمكن للدوال year() و birthYear() استخدام هذا التاريخ لحساب العمر بدقة. ولتحسين الكود مرة أخرى لإضافة السنة الحالية بشكل تلقائي بدلاً من كتابة السنة 2023، نستخدم الدالة Date() بدون تمرير أي قيم للحصول على التاريخ الحالي، ثم استخدامها في حساب العمر وسنة الميلاد. let Person = function(name, birthDate, job) { this.name = name; this.birthDate = birthDate; this.job = job; this.year = function() { const currentYear = new Date().getFullYear(); return currentYear - this.birthDate.getFullYear(); }; this.birthYear = function() { return this.birthDate.getFullYear(); }; }; let birthDate = new Date(1988, 0, 1); // قم بتعديل التاريخ هنا إلى تاريخ الميلاد الفعلي let person = new Person('Peter', birthDate, 'programmer'); console.log(person.year()); console.log(person.birthYear()); حيث يتم الحصول على السنة الحالية تلقائيًا باستخدام new Date().getFullYear() دون تحديد أي تاريخ، وبذلك يتم ضمان دائمًا الحصول على السنة الحالية الصحيحة بغض النظر عن التاريخ الفعلي لتنفيذ البرنامج.1 نقطة
-
1 نقطة
-
جميع المجالات المذكورة مطلوبة في السوق العمل الأوروبي بشكل عام، بما في ذلك ألمانيا. ومع ذلك، يمكن أن يختلف الطلب على هذه المجالات تبعاً للاحتياجات الحالية للشركات والصناعات في كل دولة. في ألمانيا، تلاحظ أن الطلب على Java development عالي، حيث تستخدم العديد من الشركات تكنولوجيا Java في تطوير تطبيقات الأعمال والنظم الكبيرة. مجال mobile development أيضًا طلبه مرتفع في السوق العمل الأوروبي، حيث يزداد الاهتمام بتطوير تطبيقات الهواتف المحمولة والتجارة الإلكترونية المحمولة. بالنسبة لتطوير الذكاء الاصطناعي (AI development)، فإنه أيضًا يعد من المجالات المطلوبة حاليًا، حيث تتطلب العديد من الشركات الأوروبية استخدام تقنيات الذكاء الاصطناعي في تحليل البيانات وتطوير حلول ذكاء اصطناعي للتحديات التي تواجهها. إذا كنت مهتمًا بالعمل في ألمانيا أو غيرها من الدول الأوروبية، يمكن أن يكون لديك فرصة جيدة في أي من هذه المجالات. ومن المهم أيضًا الاطلاع على احتياجات السوق التي تتغير بمرور الوقت ومتابعة تطورات التكنولوجيا لضمان مهاراتك دائمًا محدثة ومناسبة للاحتياجات الحالية في السوق. من المفضل أن تقوم بالبحث عن الشركة التي ترغب في العمل بها وأن تتحقق من التقنيات التي تعتمد عليها هذه الشركة، بهدف تحديد التقنيات التي يجب تعلمها بدقة. بعد أن تقوم بالبحث عن الشركة التي تهتم بالانضمام إليها، يجب أن تركز على دراسة التقنيات التي تستخدمها هذه الشركة بدقة. هذا الاهتمام بالتفاصيل التقنية سيساعدك في فهم تطور الشركة ومدى تقدمها في مجال عملها. كما يمكن أن يساهم هذا البحث الدقيق في تحديد مدى توافق خبراتك ومهاراتك مع متطلبات الشركة، مما يساعدك في تقديم نفسك بطريقة أكثر فعالية أثناء المقابلة الشخصية. علاوة على ذلك، يمكن أن تساعدك معرفة التقنيات التي تستخدمها الشركة في التحضير لأي اختبار تقني قد تطلبه الشركة خلال عملية التوظيف. إذا كانت الشركة تعتمد على تقنيات معينة تتطلب معرفة خاصة، فيمكنك تحضير نفسك مسبقًا وتطوير مهاراتك في تلك التقنيات. وفي النهاية، يعكس البحث الدقيق عن الشركة وتقنياتها إلتزامك واهتمامك الحقيقي بالانضمام إلى فريقها. كما يمكن أن يزيد من فرص نجاحك في الحصول على الوظيفة المرغوبة. لذا، استثمر وقتك في البحث والتحضير بدقة قبل التقدم بطلب العمل.1 نقطة
-
استنادًا إلى اتجاهات سوق العمل الحالية في ألمانيا، فيما يلي تقييمي لأي مجال برمجة هو الأكثر طلبًا لعام 2023: يوجد طلب كبير جدًا على تطوير الذكاء الاصطناعي (AI) ومن المرجح أن يكون المجال الأكثر طلبًا. استثمرت ألمانيا بكثافة في البحث والتطوير في مجال الذكاء الاصطناعي، مع مبادرات رئيسية مثل صناعة 4.0 التي تستخدم الذكاء الاصطناعي. هناك طلب قوي على مهارات الذكاء الاصطناعي في المركبات ذاتية القيادة والروبوتات والخدمات المالية والرعاية الصحية والمزيد. الشركات الكبرى مثل BMW و SAP و Siemens و Bosch توظف جميعها مواهب الذكاء الاصطناعي. يوجد أيضًا طلب كبير جدًا على تطوير الهواتف المحمولة في ألمانيا بسبب انتشار الهواتف الذكية وتطبيقات الجوال. هناك طلب على مطوري Android و iOS في مختلف الصناعات. الشركات الناشئة في التكنولوجيا المالية ومصنعو السيارات يبحثون عن مطوري الجوال. ومع ذلك، فإن الطلب أقل قليلاً من الذكاء الاصطناعي. لا يزال هناك طلب ثابت ومستمر على تطوير Java، خاصة لتطوير الويب الخلفي وتطبيقات الشركات. مهارات Java مطلوبة من قبل أكبر أرباب العمل التقنيين الألمان. ومع ذلك، فإن الطلب غير عالٍ بقدر المجالات المتطورة مثل الذكاء الاصطناعي. لذلك، يمكن القول إن تطوير الذكاء الاصطناعي لديه أعلى طلب والمزيد من فرص العمل للمبرمجين في ألمانيا خلال العام المقبل. تطوير الجوال أيضاً قوي جداً. Java لا تزال تمثل فرصة مستقرة. ولكن الذكاء الاصطناعي يمثل المجال الأكثر توجهاً نحو المستقبل مع طلب كثيف على المواهب.1 نقطة
-
عليك باستيعاب أمر هام وهو، في لغة Python (وأي لغة برمجة أخرى)، تُستخدم المسارات (Paths) للإشارة إلى موقع الملفات أو الدلائل (المجلدات) في نظام الملفات، وهناك نوعان من المسارات التي يمكن استخدامها: المسار النسبي (Relative path) والمسار المطلق (Absolute path). المسار النسبي (Relative path) المسار النسبي هو مسار يُحدد موقع الملف أو المجلد بالنسبة إلى المجلد الحالي الذي يعمل فيه البرنامج، ويعتمد المسار النسبي على العلاقة بين موقع الملف والمجلد الحالي، ولا يشمل المسار النسبي أي جزء من المسار الكامل للمجلد الذي يحتوي عليه الملف. أي لنفرض أن لدينا التالي: المجلد الحالي (Current directory): /home/user/ وملف Python يسمى "script.py" موجود في المجلد /home/user/scripts/ وإن كنت تعمل في المجلد /home/user/ وتحتاج إلى استدعاء الملف "script.py" من داخل المجلد scripts باستخدام المسار النسبي، فسيكون المسار النسبي لهذا الملف هو: "scripts/script.py" أي يتم البحث عن الملف بداخل مجلد المشروع الرئيسي بناءًا على مكان الملف الذي تكتب من خلاله المسار. المسار المطلق (Absolute path) المسار المطلق هو مسار يحدد موقع الملف أو المجلد بشكل كامل من الجذر أو المسار الرئيسي للنظام، يشمل المسار المطلق جميع الدلائل اللازمة للوصول إلى الملف أو المجلد بغض النظر عن المجلد الحالي الذي يعمل فيه البرنامج. ولنفترض أن لدينا التالي: المجلد الرئيسي (Root directory): C:/users/ ويوجد ملف Python يسمى "script.py" موجود في المجلد C:/users/user/scripts وفي تلك الحالة، إن كنت تعمل في أي مكان داخل نظام الملفات وتريد استدعاء الملف "script.py" باستخدام المسار المطلق، فإن المسار المطلق لهذا الملف سيكون: "C:/users/user/scripts/script.py". وأسهل طريقة للحصول على المسار الكامل بدون مشاكل في نظام ويندوز، هي بالضغط على المجلد أو الملف بزر الفأرة الأيمن ثم إختيار copy as path وسيتم نسخ المسار المطلق ويمكنك استخدامه في الكود، كالتالي: وإليك الطريقة الصحيحة لكتابة ذلك في كود بايثون: أولاً نقوم بإنشاء متغير لحفظ المسار كالتالي: file_path = r"C:\users\user\documents\file.txt" من الضروري استخدام الـ "r" قبل علامات التبويب لتجنب تفسيرها على أنها حرف هروب. بعد كتابة المسار المطلق، يمكنك استخدام دالة فتح الملف في Python لفتح الملف. يُفضل استخدام الدالة open() لهذا الغرض، وإليك مثال يوضح كيفية فتح ملف نصي باستخدام المسار المطلق: file_path = r"C:\users\user\documents\file.txt" try: with open(file_path, 'r') as file: content = file.read() print(content) except FileNotFoundError: print("لم يتم العثور على الملف.") except Exception as e: print("حدث خطأ أثناء قراءة الملف:", e) وسيتم فتح الملف بالمسار المطلق file_path وقراءة محتواه، ثم سيتم طباعة محتوى الملف. إذا لم يتم العثور على الملف، سيتم طباعة رسالة تفيد بأن الملف غير موجود. وأي خطأ آخر خلال قراءة الملف سيتم طباعة رسالة تفيد بحدوث خطأ وتوضيح نوع الخطأ. ولمعلوماتك في نظام Linux أو macOS نكتب المسار كالتالي: file_path = "/home/user/documents/file.txt" تحتوي المسارات على شرطات مائلة (/) بدلاً من شرطات عكسية ()، كما هو الحال في نظام Windows، ولذلك لا نستخدم r.1 نقطة
-
صحيح سوف يتم شرح الخوادم وقواعد البيانات في دورة علوم الحاسوب ، كما أن هذه هي مسارات الدورة وبداخل هذه المسارات سوف يتم شرح الخوادم وقواعد البيانات:- مدخل إلى علوم الحاسوب أساسيات البرمجة أنظمة التشغيل ونظام لينكس قواعد البيانات إلى عالم الويب البرمجة كائنية التوجه الخوارزميات وبنى المعطيات أنماط التصميم أساسيات هندسة البرمجيات1 نقطة
-
مرحبا سيف الدين، يمكنك كتابة المسار المطلق هكذا، في البداية عرف متغير myFile ثانيا نستخدم الدالة open لفتح الملف وهيا تأخذ معاملين المسار و سبب فتح الملف مثلا القراءة او إضافة او الكتابة او انشاء، ثالثا ضع المسار الخاص بك داخل اقواس وعلامة تنصيص لا تنسي وضع حرف r قبل علامات التنصيص لأنك سوف تستخدم "\" back slash، myFile = open(r"C:\Users\Desktop\New folder\file_one.text", "r") ضع المسار الخاص بك.1 نقطة
-
هل يتم شرح الخوادم مثل الاباتشي وغيرها , في دورة علوم الحاسب والبروتوكولات الشائعه وطريقة استخدامها ام شرح نظري فقط وايضا قواعد البيانات وطريقه ربطها ب الموقع لانني منذ اكثر من 6 شهور وانا تائه احاول ان ادخل الي هذا المجال وسمعت العديد من الدورات علي اليوتيوب ولكن اشعر بانني لا افهم الكثير ارجو منك افادتي وشكرا لك قيس .1 نقطة
-
هناك العديد من الأمور عليك معرفتها قبل العمل في هذا المجال، أهمها أن تكون على إطلاع و معرفة جيدة بأساسيات الحاسوب، فكثير من المشاكل تحدث بسبب الاعتماد على شيء محدد في حاسوب ما، و لذلك بلا معرفة بأساسيات الحاسوب لن يمكنك اكتشاف الثغرات، لذلك دورة علوم الحاسوب ضرورية في حال لم تكن على إطلاع على محاورها. أيضاً لا يمكن اكتشاف الثغرات في تطبيق ما في حال لم تكن على علم بالتقنيات المستعملة في هذا التطبيق، ولو بشكل بسيط، فلا يمكنك اكتشاف ثغرات في شيء لا تعلم عنه شيئاً، لذلك عليك اختيار إحدى دورات تطبيقات الويب، حسب اللغة التي تريدها. و لكن لا يتم شرح هذا المفهوم بشكل مباشر في الدورات، كما سبق و أخبرتك هذا ضروري حتى تتعرف على تقنيات تطوير الويب. يمكنك الاستفادة من العرض الصيفي لأخذ دورتين في نفس الوقت.1 نقطة
-
معني كده ان صعب اشتغل فورنت اند خصوصان اني بتعلم جديد في مصر1 نقطة
-
@SuppressWarnings("ALL") public class uploadved extends AppCompatActivity implements difroved.ExampleDialogeListener { TextView uploader; RoundedImageView geter; VideoView vedgetr; MediaController mc; File file; String wasfst; String mohtst; String qul; int progstat = 0; int w; int h; TextView shertved; ImageView ext, imgvedto; EditText edtanwan, edtwasf; Spinner spmraddafo; BottomSheetDialog bottomSheetDialog; private RequestQueue rQueue; private static final int SELECT_VIDEO_REQUEST = 0; public Uri videoUri; String displayName; String Path; ExecutorService service; String enwanvido; int fileLength; Context context; String URLphp = "https://elokhtboot.com/okt/Nashr/uploadved.php"; boolean check = true; public Bitmap bitmap; ImageView trimVideo, slowmotion; TextView slowmotiontext; private ProgressBar progressBar; Dialog dila; Uri uritoupload; ////////////////ROTH test ///////////////////// int videoResolution; Uri inputPath ; String outputPath; int width = 576; int height = 1024; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_uploadved); geter = findViewById(R.id.geter); uploader = findViewById(R.id.uploader); vedgetr = findViewById(R.id.vedgetr); mc = new MediaController(uploadved.this); vedgetr.setMediaController(mc); geter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (ContextCompat.checkSelfPermission(uploadved.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { selectVideo(); } else { ActivityCompat.requestPermissions(uploadved.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } } }); uploader.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (videoUri != null) { bottomSheetDialog = new BottomSheetDialog(uploadved.this, R.style.BottomSheetDialogTheme2); View va = LayoutInflater.from(uploadved.this) .inflate(R.layout.veduploadbotorrsheet, uploadved.this.findViewById(R.id.btomCount)); bottomSheetDialog.getBehavior().setState(BottomSheetBehavior.STATE_EXPANDED); v.setMinimumHeight(Resources.getSystem().getDisplayMetrics().heightPixels); shertved = va.findViewById(R.id.shertved); ext = va.findViewById(R.id.ext); imgvedto = va.findViewById(R.id.imgvedto); edtanwan = va.findViewById(R.id.edtanwan); edtwasf = va.findViewById(R.id.edtwasf); spmraddafo = va.findViewById(R.id.spmraddafo); edtanwan.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { enwanvido = edtanwan.getText().toString().trim(); Log.d("enwan", enwanvido); int t = enwanvido.length(); if (t > 1) { t = 1; } if (t > 40) { t = 250; } if (t > 250) { t = 250; } switch (t) { case 0: edtanwan.setBackgroundResource(R.drawable.backwrong); shertved.setVisibility(View.GONE); Toast.makeText(uploadved.this, "يجب اضافة عنوان للفيديو", Toast.LENGTH_SHORT).show(); break; case 1: edtanwan.setBackgroundResource(R.drawable.edenwanved); shertved.setVisibility(View.VISIBLE); shertved.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { uploadvideo(displayName, videoUri); } }); break; case 250: edtanwan.setBackgroundResource(R.drawable.backwrong); shertved.setVisibility(View.GONE); Toast.makeText(uploadved.this, "عدد الاحرف اكثر من اللازم", Toast.LENGTH_SHORT).show(); break; default: edtanwan.setBackgroundResource(R.drawable.edenwanved); shertved.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { uploadvideo(displayName, videoUri); } }); break; } } @Override public void afterTextChanged(Editable s) { } }); edtwasf.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { wasfst = edtwasf.getText().toString().trim(); Log.d("enwan", wasfst); int t = wasfst.length(); if (t > 1) { t = 1; } if (t > 155) { t = 155; } switch (t) { case 0: edtwasf.setBackgroundResource(R.drawable.backwrong); shertved.setVisibility(View.GONE); break; case 1: edtwasf.setBackgroundResource(R.drawable.edenwanved); shertved.setVisibility(View.VISIBLE); shertved.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { uploadvideo(displayName, videoUri); } }); break; case 250: edtwasf.setBackgroundResource(R.drawable.backwrong); shertved.setVisibility(View.GONE); break; default: edtwasf.setBackgroundResource(R.drawable.edenwanved); shertved.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { uploadvideo(displayName, videoUri); ////Here is where the user can click to execute the upload order } }); break; } } @Override public void afterTextChanged(Editable s) { } }); spmraddafo.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { mohtst = parent.getItemAtPosition(position).toString(); } @Override public void onNothingSelected(AdapterView<?> parent) { mohtst = "غير ذلك"; } }); Glide.with(imgvedto).load(videoUri).into(imgvedto); ext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { bottomSheetDialog.dismiss(); } }); bottomSheetDialog.setContentView(va); bottomSheetDialog.show(); } else { Toast.makeText(uploadved.this, "من فضلك قم باختيار فيديو", Toast.LENGTH_SHORT).show(); } } }); }//////////////////////////////////////////////////// // This method converts the video. /////////////////////////////////////////////////// private void selectVideo() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("video/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult( Intent.createChooser(intent, "Select Video"), SELECT_VIDEO_REQUEST); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult( requestCode, permissions, grantResults); // check condition if (requestCode == 1 && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { selectVideo(); } else { Toast.makeText(getApplicationContext(), "Permission Denied !", Toast.LENGTH_SHORT).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 100 && resultCode == RESULT_OK && data != null) { videoUri = data.getData(); displayName = String.valueOf(Calendar.getInstance().getTimeInMillis() + ".mp4"); MediaPlayer mp = MediaPlayer.create(this, videoUri); videoUri = data.getData(); String videoPath = videoUri.getPath(); Log.e("tyyyyy", videoPath); int duration = mp.getDuration(); mp.release(); String durationStr = String.format("%d", TimeUnit.MILLISECONDS.toSeconds(duration) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))); String durationStr2 = String.format("%d", TimeUnit.MILLISECONDS.toMinutes(duration)); outputPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/" + "compressed_video.mp4"; width = 576; height = 1024; file=new File(videoUri.getPath()); String filePath = file.getAbsolutePath().toString(); inputPath=videoUri; Path=filePath; vedgetr.setVideoURI(videoUri); vedgetr.start(); Log.d("tyyyyy",filePath); /* try { resizeVideo(inputPath, outputPath, width, height); //vedgetr.setVideoPath(outputPath); // vedgetr.start(); } catch (IOException e) { throw new RuntimeException(e); }*/ /*String outputPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/" + "compressed_video.mp4"; String path = videoUri.getPath().toString(); MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(this,videoUri); String height = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); Log.e("tyyyyy", "h"+height); String width = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); Log.e("tyyyyy", "w"+width); int w = Integer.parseInt(width); int h = Integer.parseInt(height); int quality = w*h/1024 * 1024/1000; String qul= String.valueOf(quality); Log.e("tyyyyy", qul); // Display the video quality Log.e("tyyyyy", outputPath); file =new File(Path); String inputpath=file.getPath().toString(); String filePath = file.getAbsolutePath().toString(); Log.e("tyyyyy", filePath);*/ try { convert2(); } catch (IOException e) { throw new RuntimeException(e); } } } public void convert2() throws IOException { dila = ProgressDialog.show(uploadved.this, "برجاء الانتظار", "جاري تجهيز الفيديو"); MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(uploadved.this,videoUri); String height = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); Log.e("tyyyyy", "h" + height); String width = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); Log.e("tyyyyy", "w" + width); w = Integer.parseInt(width); h = Integer.parseInt(height); int quality = w * h / 1024 * 1024 / 1000; qul = String.valueOf(quality); Log.e("tyyyyy", qul); retriever.release(); if (h > 1024) { try { File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), displayName + ".mp4"); file.createNewFile(); String outputPath = file.getPath().toString(); Log.d("tyyyyy", "outpath is " + outputPath); retriever.setDataSource(uploadved.this,videoUri); Bitmap bmp = retriever.getFrameAtTime(); int newWidth = 576; int newHeight = 1024; Bitmap resizedBmp = Bitmap.createScaledBitmap(bmp, newWidth, newHeight, true); retriever.release(); // Save the video to the phone MediaMuxer muxer = new MediaMuxer(outputPath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); // Add the video track int videoTrackIndex = muxer.addTrack(MediaFormat.createVideoFormat(outputPath, newWidth, newHeight)); String aduo = String.valueOf(videoTrackIndex); Log.e("tyyyyy", "videoResolution" + "=" + aduo); // Add the audio track int audioTrackIndex = muxer.addTrack(MediaFormat.createAudioFormat(outputPath, 44100, 2)); String adad = String.valueOf(audioTrackIndex); Log.e("tyyyyy", "videoResolution" + "=" + adad); // Start writing to the muxer muxer.start(); // Write the video frames to the muxer ByteBuffer buffer = ByteBuffer.allocateDirect(1024 * 1024); int[] pixels = new int[resizedBmp.getWidth() * resizedBmp.getHeight()]; for (int i = 0; i < resizedBmp.getHeight(); i++) { buffer.clear(); resizedBmp.getPixels(pixels, 0, resizedBmp.getWidth(), 0, i, resizedBmp.getWidth(), resizedBmp.getHeight()); byte[] bytes = new byte[buffer.limit()]; for (int j = 0; j < bytes.length; j++) { bytes[j] = buffer.get(j); } MediaCodec.BufferInfo info = new MediaCodec.BufferInfo(); info.offset = 0; info.size = bytes.length; muxer.writeSampleData(videoTrackIndex, buffer, info); } // Write the audio samples to the muxer short[] samples = new short[resizedBmp.getWidth() * resizedBmp.getHeight()]; int[] intSamples = new int[samples.length]; for (int i = 0; i < resizedBmp.getHeight(); i++) { buffer.clear(); resizedBmp.getPixels(intSamples, 0, resizedBmp.getWidth(), 0, i, resizedBmp.getWidth(), resizedBmp.getHeight()); for (int j = 0; j < samples.length; j++) { buffer.putShort((short) intSamples[j]); } byte[] bytes = buffer.array(); MediaCodec.BufferInfo info = new MediaCodec.BufferInfo(); info.offset = 0; info.size = bytes.length; muxer.writeSampleData(audioTrackIndex, buffer, info); } // Stop writing to the muxer muxer.stop(); muxer.release(); uritoupload = Uri.parse(outputPath); vedgetr.setMediaController(new MediaController(this)); dila.dismiss(); vedgetr.setVideoURI(uritoupload); vedgetr.start(); } catch (IOException e) { Log.e("tyyyyy", "catch" + e.getMessage().toString()); } } else if (w > 576) { try { Bitmap bmp = retriever.getFrameAtTime(); int newWidth = 576; int newHeight = 1024; Bitmap resizedBmp = Bitmap.createScaledBitmap(bmp, newWidth, newHeight, true); retriever.release(); File newVideoFile = new File(Environment.getExternalStorageDirectory(), "new_video.mp4"); // Save the video to the phone MediaMuxer muxer = new MediaMuxer(newVideoFile.getPath(), MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); // Add the video track int videoTrackIndex = muxer.addTrack(MediaFormat.createVideoFormat(newVideoFile.getPath(), newWidth, newHeight)); String aduo = String.valueOf(videoTrackIndex); Log.e("tyyyyy", "videoResolution" + "=" + aduo); // Add the audio track int audioTrackIndex = muxer.addTrack(MediaFormat.createAudioFormat(newVideoFile.getPath(), 44100, 2)); String adad = String.valueOf(videoTrackIndex); Log.e("tyyyyy", "videoResolution" + "=" + adad); // Start writing to the muxer muxer.start(); // Write the video frames to the muxer ByteBuffer buffer = ByteBuffer.allocateDirect(1024 * 1024); int[] pixels = new int[resizedBmp.getWidth() * resizedBmp.getHeight()]; for (int i = 0; i < resizedBmp.getHeight(); i++) { buffer.clear(); resizedBmp.getPixels(pixels, 0, resizedBmp.getWidth(), 0, i, resizedBmp.getWidth(), resizedBmp.getHeight()); byte[] bytes = new byte[buffer.limit()]; for (int j = 0; j < bytes.length; j++) { bytes[j] = buffer.get(j); } MediaCodec.BufferInfo info = new MediaCodec.BufferInfo(); info.offset = 0; info.size = bytes.length; muxer.writeSampleData(videoTrackIndex, buffer, info); } // Write the audio samples to the muxer short[] samples = new short[resizedBmp.getWidth() * resizedBmp.getHeight()]; int[] intSamples = new int[samples.length]; for (int i = 0; i < resizedBmp.getHeight(); i++) { buffer.clear(); resizedBmp.getPixels(intSamples, 0, resizedBmp.getWidth(), 0, i, resizedBmp.getWidth(), resizedBmp.getHeight()); for (int j = 0; j < samples.length; j++) { buffer.putShort((short) intSamples[j]); } byte[] bytes = buffer.array(); MediaCodec.BufferInfo info = new MediaCodec.BufferInfo(); info.offset = 0; info.size = bytes.length; muxer.writeSampleData(audioTrackIndex, buffer, info); } // Stop writing to the muxer muxer.stop(); muxer.release(); uritoupload = Uri.parse(newVideoFile.getPath()); vedgetr.setMediaController(new MediaController(this)); dila.dismiss(); vedgetr.setVideoURI(uritoupload); vedgetr.start(); } catch (IOException e) { Log.e("tyyyyy", "catch" + e.toString()); } } else { vedgetr.setMediaController(new MediaController(this)); dila.dismiss(); vedgetr.start(); } }1 نقطة