-
المساهمات
13224 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
365
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
ما هي اللغة التي تنوي استخدامها؟ أتوقع أنها جافاسكريبت، أولاً عليك إنشاء ملف google sheet جديد، انتقل إلى موقع Google Drive واضغط على الزر "إنشاء". ثم، حدد "جدول بيانات". بعد إنشاء الملف، قم بمنح الإذن للتطبيق بالوصول إليه، من خلال: افتح الملف. انقر على "مشاركة". أضف عنوان URL للتطبيق في مربع "الأشخاص الذين يمكنهم الوصول إلى هذا الملف". حدد "المحررين". انقر على "حفظ". الخطوة التالية هي استخدم نموذج HTML لجمع بيانات الموظفين، مثل الاسم، والعنوان، ورقم الهاتف، والبريد الإلكتروني، وما إلى ذلك، كالتالي: <form action="" method="post"> <input type="text" name="name" placeholder="الاسم"> <input type="text" name="address" placeholder="العنوان"> <input type="text" name="phone" placeholder="رقم الهاتف"> <input type="email" name="email" placeholder="البريد الإلكتروني"> <input type="submit" value="حفظ"> </form> بعد ذلك، عليك استخدم التعليمات البرمجية في JavaScript لربط النموذج بملف google sheet، من خلال مكتبة للتعامل مع الـ API الخاص بـ google sheet مثل مكتبة google-spreadsheet. وستجد شرح للمكتبة من خلال المستند الرسمي هنا: https://theoephraim.github.io/node-google-spreadsheet/#/
- 3 اجابة
-
- 1
-
هل السؤال خاص بأحد الدورات، أرجو التعليق أسفل فيديو الدورة إذا كان كذلك، وطرح الأسئلة العامة هنا لمساعدتك بشكل أفضل.
-
أولاً لا يلزمك أي شهادة للعمل في مجال البرمجة، وبالطبع الشهادة الجامعية تعطي ميزة إضافية لك، لكن الأهم هي مهاراتك وما تستطيع فعله ومعرض أعمالك، لكن بالطبع هناك بعض الشركات تشترط الحصول على شهادة في علوم الحاسوب CS، وستجد تفصيل عن ذلك هنا: وبخصوص دراسة الدورات التي اشتركت بها، فهو أمر جيد الإطلاع على كافة المجالات، ففي حال اشتراكك في جميع الدورات، فأنت تقصد التالي: دورة علوم الحاسوب دورة إدارة تطوير المنتجات دورة تطوير واجهات المستخدم دورة تطوير التطبيقات باستخدام لغة Python دورة تطوير التطبيقات باستخدام لغة JavaScript دورة تطوير تطبيقات الويب باستخدام لغة PHP دورة تطوير تطبيقات الويب باستخدام لغة Ruby ولنبدأ بالأمر بشكل ممنهج وتدريجي، ما أنت بحاجة إلى التركيز عليه حاليًا هو دراسة دورة علوم الحاسوب لتأسيسك في مجال البرمجة، وبعد الإنتهاء ستتمكن من تحديد المجال الذي تريد دراسته من خلال الدورات الأخرى. وستجد في وصف كل دورة ما الذي ستتعلمه وأيضًا ما الفئة التي تم إعداد الدورة لها أي الأشخاص المناسبين للدورة، وستتمكن من فهم ما يتم ذكره في وصف الدورة بعد دراستك لدورة علوم الحاسوب.
- 7 اجابة
-
- 1
-
الدورات في أكاديمية حسوب موجهة بشكل نحو مجال البرمجة، لذلك ستجدي دورات خاصة بالواجهة الأمامية والواجهة الخلفية بمختلف اللغات وأيضًا مجالات أخرى. لكن بخصوص مجال الإعلام والإخراج، فلا يتوفر ذلك بالأكاديمية، ويمكنك البحث على اليوتيوب عن "دورة في الإخراج" وستجدي بعض النتائج، ونفس الأمر بالنسبة للمونتاج، وتفقدي قوائم التشغيل للقنوات التي تجديها جيدة.
-
أولاً، تحتاجين إلى إنشاء تطبيق Apple Pay في Apple Developer Center، وللقيام بذلك: انتقلي إلى Apple Developer Center وقومي بتسجيل الدخول إلى حسابك. انقري على Certificates, Identifiers & Profiles. انقري على Identifiers. انقري على Create Identifier. حددي Apple Pay. أدخلي اسمًا فريدًا لتطبيقك. حددي نوع الدفع الذي تريدين دعمه. . انقري على Create. بعد ذلك عليك إضافة ملف تعريف Apple Pay إلى مشروع Django: قومي بتنزيل ملف تعريف Apple Pay الخاص بك من Apple Developer Center. انقلي ملف تعريف Apple Pay إلى دليل مشروع Django الخاص بك. قومي بإضافة المسار إلى ملف تعريف Apple Pay في ملف تكوين Django الخاص بك. أخيرًا، تحتاجين إلى إضافة رمز لمعالجة المدفوعات باستخدام Apple Pay. ومن أسهل الطرق استخدام stripe في مشروعك لدعم الدفع عن طريق آبل باي، وهناك مكتبة خاصة بجانغو باسم dj-stripe وتختلف في أنها توفر التالي: توافق مع API Stripe بشكل كامل، مما يتيح لك الوصول إلى جميع ميزات Stripe. توفر نماذج Django مسبقة التنفيذ لحفظ تفاصيل المدفوعات. توفر أيضًا أدوات واجهة المستخدم التي تجعل من السهل عرض وإدارة المدفوعات. ويمكنك البحث عن
-
الأسئلة الإختبارية لا يتم حلها بشكل مباشر، ولكن يمكنك إرشادك لخطوات الحل، وأيضًا في حال توفير الكود يمكن مساعدتك لحل أية مشاكل تواجهك. وإليك الخطوات الرئيسية لإنشاء الصنف "Personne" في لغة Python على إفتراض أن بايثون هو المطلوب استخدامها: تعريف الصنف (Class) من خلال استخدم الكلمة المفتاحية "class" لتعريف الصنف، واسم الصنف هو "Personne". إنشاء المُنشئ (Constructor) بواسطة استخدم دالة __init__ لإنشاء المُنشئ، وقم بتمرير المتغيرات الرئيسية كمعلمات للمُنشئ (مثل الرقم، الاسم الأول، الاسم الأخير، العمر)، ثم داخل المُنشئ، قم بتخزين هذه المتغيرات كخصائص (attributes) للصنف. إنشاء واستخدام الوظائف (Methods)، أي إنشاء وظائف لأداء العمليات المطلوبة (مثل العرض وحساب سنة الميلاد)، وتعريف وظائف get_age و set_age للوصول والتعيين للعمر. بعد تعريف الصنف، يمكنك إنشاء كائنات (objects) من الصنف واستخدام الوظائف المعرفة. تعريف الأصناف في بايثون
-
هل تظهر لك تلك الرسالة على موقع الأكاديمية فقط أم على بعض المواقع الأخرى؟ وأيضًا هل تظهر لك على المتصفح في هاتفك المحمول؟ وعامًة رسالة "Human Verification" تعني أن الموقع يشك في أن الوصول إليه يتم بواسطة برنامج أو سكربت أو روبوت بدلاً من شخص حقيقي. لذلك قم أولاً بحذف الملفات المؤقتة للمتصفح من خلال الضغط على CTRL + SHIFT + DELETE وستظهر لك نافذة اختر منها all time ثم اختر cached images and filesثم اضغط على clear data. وربما قد يتم حل المشكلة من خلال إعادة تشغيل الراوتر لديك والحصول على ip جديد، وأيضًا تسجل الخروج ثم تسجيل الدخول مرة أخرى في الأكاديمية، ثم إعادة تشغيل الحاسوب إن استمرت المشكلة. وربما هناك إضافة في المتصفح لديك تسبب مشكلة حاول تعطيل الإضافات واحدة تلو الأخرى وتفقد هل اختفت الرسالة أم لا، أو استخدام متصفح آخر مؤقتًا.
-
أنت بحاجة إلى تعلم أساسيات علوم الحاسوب ومن خلالها ستتعلم التفكير المنطقي، لكن قبل ذلك من الأفضل مشاهدة الفيديو التالي: ثم التالي: ثم قم بالبحث على اليوتيوب عن كورس "cs50" وستجد دورة رائعة مقدمة من Abdelrahman Gamal. بعد ذلك عليك التعمق في لغة البرمجة الأولى لك، ثم تتجه لحل المسائل البرمجية على موقع مثل Codewars. وأيصًا يوجد في أكاديمية حسوب دورة علوم الحاسوب، وبها يتم شرح التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب
-
الأمر يطول شرحه، لكن يمكنك إنشاء موقع دردشة بالطبع، حاول البحث عن Realtime chat app using Django في جوجل وستجد شروحات أجنبية توضح لك بناء المشروع من الصفر، حيث ستحتاج إلى مشاهدة شرح يصل إلى 3 ساعات وربما أكثر، لذلك عليك تقسيم المشروع إلى أجزاء تبعًا للشرح كما لو أنه دورة لتتعلم بشكل صحيح. فبالإضافة إلى إطار العمل جانغو ستقوم باستخدام تقنيات مثل WebSocket من خلال إضافة Django Channels من أجل توفير ميزة المحادثة في الوقت الفعلي real−time أي إنشاء قناه مفتوحة بين اطراف المحادثة.
-
دورة علوم الحاسوب تم إعدادها بشكل خاص لكي يتم تأهيلك لتعلم البرمجة، ففي البداية ستتعلم التفكير المنطقي في البرمجة وطريقة كتابة خوارزمية أو خطوات كتابة البرنامج قبل كتابة الكود أي التفكير أولاً، ثم تطبيق الأمر من خلال سكراتش لكون المنصة بسيطة وتوفر لك التعرف على المفاهيم البرمجية بطريقة ممتعة مثل حلقات التكرار والجمل الشرطية والمتغيرات وغيرها. ولا مشكلة إذا أردت تخطي ذلك المسار حاليًا وتعلم أساسيات بايثون وجافاسكريبت والتطبيق عليها من خلال البحث عن مشاريع للمبتدئين على اليوتيوب ثم التعلم منها، ثم العودة لدراسة الدورة من البداية وتعلم سكراتش. وستتعلم الكثير من مسار سكراتش فلا تستعجل على إنهاءه، وأيضًا عند التقدم للإختبار في نهاية الدورة، سيتم سؤالك في كامل الدورة وليس جزء منها فقط.
-
الفكرة من استخدام الـ middleware هو إضافة وظيفة res.cookie() إلى response object، حيث أن وظيفة res.cookie() تستخدم لإنشاء ملفات تعريف الارتباط وإرسالها إلى العميل. ويتكون الكود من دالة واحدة تسمى cookies()، وتستقبل تلك الدالة دالة أخرى كمعامل، والتي ستصبح middleware الرئيسي، وترجع الدالة cookies() middleware الجديد، والذي يضيف وظيفة res.cookie() إلى response object. أي أن: const cookies = (handler) => (req, res) => { ... }: هو تعريف لدالة (cookies) وتقوم بقبول معامل واحد (handler)، وتلك الدالة تُستدعى مع معامل واحد آخر (من نوع req و res) عندما تُستدعى داخل تطبيق Node.js. الدالة تعيد دالة أخرى. وفي السطر التالي: res.cookie = (name, value, options) => cookie(res, name, value, options): تم إنشاء خاصية جديدة cookie داخل كائن الاستجابة (res)، وتلك الخاصية تمكنك من تعيين قيمة كوكيز جديدة باستخدام res.cookie(name, value, options). والسطر التالي: return handler(req, res): يتم استدعاء الدالة handler الممررة كمعامل إلى الدالة الأصلية cookies باستخدام handler(req, res)، مما يعني أن أي وظيفة أخرى تقوم باستدعاء cookies كمعالج ستتلقى معاملي req و res وستتمكن من استخدام res.cookie لتعيين قيمة كوكيز. وتستطيع تعيين كوكيز جديدة داخل معالج الطلب كما يلي: import cookies from './cookies'; const requestHandler = (req, res) => { // تعيين قيمة كوكيز باستخدام res.cookie res.cookie('user', 'Montaser', { maxAge: 3600000 }); // الرد على الطلب العادي res.send('Hello, World!'); }; // استخدام middleware لمعالج الطلب const app = express(); app.use(cookies); app.get('/', requestHandler); app.listen(3000, () => { console.log('Server is running on port 3000'); });
- 1 جواب
-
- 1
-
أرفق مجلد المشروع لتفقد المشكلة، وتأكد من أن الدوال likeImage و unLikeImage تعمل بشكل صحيح وأنها تقوم بإرسال الطلبات بشكل صحيح من خلال إضافة console.log للتحقق من تنفيذ الدوال كالتالي: const likeImage = async (id) => { if (!user) { navigate("/login"); return; } try { const response = await axios.put(`/api/images/like/${id}`, like, { headers: { "Content-Type": "application/json", "x-auth-token": user.data.token, }, }); console.log("Response from likeImage:", response.data); // سيتم تسجيل الاستجابة في وحدة التحكم setLike(response.data); } catch (err) { setError(err.response.data.msg); } }; const unLikeImage = async (id) => { if (!user) { navigate("/login"); return; } try { const response = await axios.put(`/api/images/unlike/${id}`, like, { headers: { "Content-Type": "application/json", "x-auth-token": user.data.token, }, }); console.log("Response from unLikeImage:", response.data); // سيتم تسجيل الاستجابة في وحدة التحكم setLike(response.data); } catch (err) { setError(err.response.data.msg); } };
- 1 جواب
-
- 1
-
أنت تريد تعلم ووردبريس لكي تصبح مطور ووردبريس، أم تريد تعلمه لإنشاء موقع خاص بك فقط؟ على ما يبدوا أنك تريد أن تصبح مطور ووردبريس محترف، ولذلك عليك أولاً تعلم لغة PHP حيث أنها اللغة التي تم بها تطوير ووردبريس وستحتاجها لإنشاء وتطوير قالب الموقع، أو التعديل على قوالب جاهزة وإضافة ميزات للموقع بشكل مخصص أي بدون إضافات. وستجد في أكاديمية حسوب دورةخاصة بذلك: وسيتم شرح ووردبريس أيضًا في الدورة. أما إن أردت مصادر مجانية فستجدها هنا: ما هي أفضل الكورسات المتاحة لتعلم الووردبريس في المحتوى العربي
-
أرجو التعليق أسفل فيديو الدورة في التعليقات لمساعدتك، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة.
-
الأسئلة الإختبارية لا يتم الإجابة عليها بشكل مباشر، في حال قمت بتوفير الكود يمكن مساعدتك، وحاليًا إليك الخطوات لإرشادك للحل. قم بإنشاء ملف C++ جديد بامتداد .cpp باستخدام محرر الأكواد مثل Visual Studio Code. تضمين مكتبات البرمجة الضرورية في البرنامج، وفي برنامجك ستحتاج إلى مكتبة iostream لإجراء عمليات إدخال وإخراج. قم بكتابة دالة main التي هي نقطة البداية لبرنامجك. حفظ الملف بامتداد .cpp، مثل "program.cpp". قم بتجميع البرنامج باستخدام مترجم C++ المناسب، وتستطيع استخدام g++ في نظام Linux أو MinGW في نظام Windows. تشغيل البرنامج وإدخال رقم صحيح للاختبار، وستظهر النتائج على الشاشة وفقًا للشروط التي وضعتها في البرنامج.
-
عليك تصحيح التالي: تصحيح الاستيراد"nump" إلى "numpy". تحتاج إلى إنشاء النص (text) قبل تحديد الدالة update، أي قم بنقل السطر الذي ينشئ النص إلى الجزء العلوي من الكود. استخدم ax.clear() بدلاً من تعيين بيانات الأشكال الصغيرة إلى [] داخل الدالة update. لتحقيق تكرار الرسم البياني، قم بتعيين repeat=True بدلاً من repeat="true". والكود بعد التصحيح هو التالي: import matplotlib.pyplot as plt import numpy as np from matplotlib.animation import FuncAnimation fig, ax = plt.subplots() fig.set_facecolor('black') ax.set_aspect('equal') t = np.linspace(0, 2 * np.pi, 1000) x = 16 * np.sin(t) ** 3 y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t) heart_line, = ax.plot(x, y, color='pink', linewidth=3) small_hearts = [] for i in range(12): small_heart, = ax.plot([], [], color='pink', linewidth=0.5) small_hearts.append(small_heart) text = ax.text(0, -5, "", color='pink', fontsize=20, ha='center') def update(i): ax.clear() ax.set_xlim(-35, 35) ax.set_ylim(-35, 35) ax.axis('off') text.set_text("RAHEEB") angles = np.linspace(0, 2 * np.pi, len(small_hearts)) radius = 20 small_x = radius * np.sin(angles + i * 0.1) small_y = radius * np.cos(angles + i * 0.1) for small_heart, small_x_val, small_y_val in zip(small_hearts, small_x, small_y): small_heart.set_data(x + small_x_val, y + small_y_val) animation = FuncAnimation(fig, update, frames=100, interval=50, repeat=True) plt.show()
-
بالطبع تستطيعي استخدام Angular framework مع Razor pages، حيث ستحققي استفادة من قوة كلا الإطارين وذلك لأن Angular هو إطار عمل قوي للواجهة الأمامية، بينما Razor pages هو إطار عمل قوي للواجهة الخلفية، ومن خلال الجمع بين الاثنين، يمكنك إنشاء تطبيقات ويب غنية وتفاعلية.يمكن أن يساعدك Angular في إنشاء تطبيقات ويب قابلة للتوسع بسهولة. ولإضافة Angular framework إلى Razor pages، عليك القيام بالتالي: تثبيت حزمة Angular إلى مشروعك. يمكنك القيام بذلك باستخدام NuGet. إضافة Angular إلى ملف _Layout.cshtml. إنشاء مجلد جديد يسمى "app" في جذر مشروعك. إنشاء ملفات Angular في هذا المجلد. تضمين ملفات Angular في صفحاتك باستخدام Razor partial views. مثال على كيفية إضافة Angular إلى Razor pages: @page @inject IHttpClientFactory HttpClientFactory <html ng-app="app"> <head> <base href="/"> <link href="~/css/app.css" rel="stylesheet"> <script src="~/js/angular.js"></script> <script src="~/js/app.js"></script> </head> <body> <div id="app"></div> </body> </html> والكود السابق يقوم بإضافة Angular إلى ملف _Layout.cshtml، وأيضًا يجب إنشاء مجلد جديد يسمى "app" في جذر المشروع، ويحتوي هذا المجلد على ملفات Angular الخاصة بنا، مثل app.component.ts و app.component.html. ولعرض ملفات Angular في الصفحات، نستخدم Razor partial views. أي لو ترغبين في عرض ملف Angular يسمى "my-component.component.html" في الصفحة، فسنقوم بإنشاء ملف Razor partial view يسمى "my-component.cshtml"، وفي هذا الملف، سنقوم ببساطة بتضمين ملف Angular: @partial "my-component.component.html"
- 3 اجابة
-
- 1
-
أرجو أن ترفق مجلد المشروع لتفقد المشكلة.
-
هل المقصود هو إنشاء slider؟ أي كالتالي: في حال كان ذلك المقصود، فهناك مكتبات جاهزة مثل Swiper وsplide وSlick وGlide. ويمكنك تنفيذ ذلك من خلال HTML, CSS, JS أيضًا من الصفر، وإليك مثال بسيط: HTML: <div id="menu"> <div id="nav"> <div id="prev"> <i class="fa-solid fa-chevron-left"></i> </div> <div id="next"> <i class="fa-solid fa-chevron-right"></i> </div> </div> <ul id="cards"> <li id="box1" class="list"> </li> <li id="box2" class="list"> </li> <li id="box3" class="list"> </li> <li id="box4" class="list"> </li> <li id="box5" class="list"> </li> </ul> CSS body{ background: #aeaeae; } .list{ width: 20rem; height: 20rem; background: #e5e5e5; display: inline-block; text-align: center; border-radius: 5%; position: relative; overflow: hidden; margin: 7rem 2rem 0 2rem; cursor: pointer; } #menu { position: relative; width: 90%; height: 26rem; top: 1rem; background-color: rgb(241, 241, 241); margin: 0 7rem 0 5rem; border-radius: 5rem; } #cards { width: 80%; overflow: hidden; white-space: nowrap; display: block; list-style: none; padding: 0; position: relative; left: 10%; bottom: 60px; } .list p{ width: 300px hidden; } #prev { display: inline-block; position: absolute; left: 2%; cursor: pointer; font-size: 60px; z-index: 1; width: 50px; height: 50px; } #next { display: inline-block; position: absolute; right: 2%; cursor: pointer; font-size: 60px; z-index: 1; width: 50px; height: 50px; } #prev, #next{ margin-top: 11rem; color: #aaaaaa; } @media (max-width: 1026px) { #menu { width: 95%; height: 22rem; top: 0.5rem; margin: 0 2% 0 2%; } .list{ width: 17rem; height: 17rem; background: #e5e5e5; display: inline-block; text-align: center; border-radius: 5%; position: relative; overflow: hidden; margin: 6rem 1rem 0 1rem; } #prev, #next{ margin-top: 9.5rem; } } JS document.getElementById('prev').addEventListener('click', function() { const cards = document.getElementById('cards'); cards.scrollLeft -= 500; cards.style.transition = 'scrollLeft 0.5s ease-in-out'; }); document.getElementById('next').addEventListener('click', function() { const cards = document.getElementById('cards'); cards.scrollLeft += 500; cards.style.transition = 'scrollLeft 0.5s ease-in-out'; });
-
تستطيع استخدام بيئة لاراجون أو Xampp والأسهل هي بيئة لاراجون، يمكنك تحميلها من هنا: https://github.com/leokhoa/laragon/releases/download/6.0.0/laragon-wamp.exe بعد التحميل والتثبيت وفتح البرنامج، ستجد زر باسم Start اضغط عليه لتشغيل سيرفر أباتشي وقاعدة البيانات، ثم اضغط على زر Root لفتح الملف الذي ستضع به مجلد المشروع حيث يتم التعرف على أكواد PHP الموجودة في ذلك الملف وتشغيلها من خلال سيرفر أباتشي. بعد ذلك عليك إنشاء قاعدة بيانات من خلال الضغط على زر Database وإنشاء قاعدة بيانات بنفس الاسم الذي في المشروع، وهي قاعدة بيانات MySQL، وفي حال كان المشروع يستخدم قاعدة بيانات أخرى فاستخدمها لا مشكلة. بعد ذلك عليك الضغط بزر الفأرة الأيمن على واجهة البرنامج ثم لاراجون ثم اختر www وهو مجلد الجذر الذي به المشاريع، وستظهر لك قائمة بالمشاريع به اضغط على اسم المشروع وسيتم فتحه في المتصفح.
-
أرجو منك التعليق أسفل فيديو الدورة لتفقد الإصدار المناسب لك ومساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة. علي أي حال من الأفضل استخدام الإصدار 14 في المشروع الذي يعمل عليه المدرب، ثم استخدام الإصدار 16 أو 18 في باقي المشاريع التي تعمل عليها. الإصدار 14: https://nodejs.org/dist/v14.17.3/node-v14.17.3-x64.msi الإصدار 18: https://nodejs.org/dist/v18.17.0/node-v18.17.0-x64.msi
-
سبب المشكلة هو أنك لم تمنح التطبيق الإذن للوصول إلى التخزين الخارجي، ويتطلب تطبيقك إذن القراءة من التخزين الخارجي لتحميل الموسيقى من جهازك. حاول تعديل الكود لطلب الإذن من المستخدم عند بدء تشغيل التطبيق كالتالي: import 'package:permission_handler/permission_handler.dart'; void main() { // ... // Request permission to access external storage Permission.storage.request().then((permissionStatus) { if (permissionStatus == PermissionStatus.granted) { // Permission granted } else { // Permission denied } }); // ... } وسيتم عرض رسالة منبثقة للمستخدم يطلب منه منح الإذن، فإن وافق المستخدم، فسيتمكن التطبيق من الوصول إلى التخزين الخارجي. أو بدلاً من ذلك تستطيع إضافة إذن القراءة من التخزين الخارجي إلى ملف AndroidManifest.xml، حيث سيؤدي ذلك إلى منح التطبيق الإذن تلقائيًا عند تثبيته. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-
معنى ذلك، أن كود الخصم متوفر للمستخدمين الجدد أي الإشتراكات الجديدة وليس الحسابات الحالية، وفي حال كان الأمر عكس ذلك تستطيع التأكد من خلال التحدث لمركز المساعدة في أكاديمية حسوب وتوضيح كود الخصم لهم وسيتم إخبارك بتفاصيله.