-
المساهمات
15432 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
403
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
الصورة التي تحاول تحميلها غير موجودة في مسار "/Internal storage/H.png". حاول نقل الصورة إلى مجلد download لديك ثم استخدم المسار التالي: /storage/emulated/0/Download/H.png أي كالتالي: Image=PhotoImage( file = '/storage/emulated/0/Download/H.png') وتأكد من كتابة اسم الصورة بشكل صحيح وأيضًا الصيغة الخاصة بها
-
من الممكن طبعًا، هل الأمر سهل؟ بالتأكيد لا. فسواء أصبح الأمر سهل مع مرور الوقت وزيادة خبرتك أم لا، فعليك إدارة وقتك والتضحية بأمور في سبيل أمور أخرى فلا شيء مجاني يجب البذل والتضحية من أجل الاكتساب والتحصيل، فحتى عند الجلوس مع أصدقائك أنت تضحي بوقتك وبالجلوس مع أناس أخرين للجلوس معهم. نفس الأمر عندما تريد أي شيء عليك أن تعلم أنك ستفقد شيئًا ما في المقابل سواء بشكل دائم أو لفترة من الوقت حسب طبيعة ما تريده. وبالطبع بعد إلإنتهاء من مسار برمجي وزيادة خبرتك يصبح الأمر أسهل بلا شك، وستصبح قادر على فعل المزيد. وتذكر دائمًا قليل دائم خير من كثير منقطع، فلو خصصت ساعة يوميًا لأي شيء بعد مرور سنة ستكون قد خصصت 365 ساعة وستجد نتيجة مختلفة تمامًا جراء ذلك.
- 3 اجابة
-
- 2
-
-
-
عليك نقل العنصر الخاص بعرض swiper-pagination خارج الشرائح ووضعه بداخل العنصر الأب الذي يحمل كلاس m لديك. وسبب المشكلة الأخرى هي أنك لم تقومي بتضمين ملف style.css في ملف index.html عليك تضمينه كالتالي في عنصر head: <link rel="stylesheet" href="style.css" /> أيضًا عليك إختيار العنصر بشكل صحيح فإما كتابة: h2.title أو .title لاحظي أن الكلاس ملصق باسم العنصر ومعنى ذلك إختيار عنصر h2 الذي يحمل كلاس بنفس الاسم.
- 3 اجابة
-
- 1
-
-
أمر طبيعي ولكن. لا أفضل كتابة الكود في دفتر ورقي، بل ما عليك فعله هو كتابة نقاط أو ملاحظات هامة لمراجعتها لاحقًا إذا أردت أو يمكنك فعل ذلك في ملف نصي على حاسوبك. أي إنشاء مجلد لكل دورة وبداخل ذلك المجلد ننشيء مجلد لكل مسار وبداخله مجلدات للدروس والمشاريع والتطبيقات وبذلك يتم تنظيم الأمر وتصل بسهولة لما تريد. أما ما أفضله أنا فهو مشاهدة 4 دروس مثلاً أو درس واحد في حال كان طويل (من الممكن تقسيم الدرس إلى أجزاء ثم التطبيق مرة أخرى في النهاية) ثم فهم الدرس واستيعابه والبحث والقراءة أو مشاهدة فيديو عما أريد توضيح له أو المزيد من الشرح والأمثلة، ثم العودة للدرس والتطبيق أي كتابة نفس الكود الكتبه المدرب بمفردي ومحاولة التغيير به لفهم آلية عمل الكود وما الممكن والغير ممكن أي التعلم من الأخطاء أي عليك كتابة الكود بمفردك مرة أخرى في حال قمت بكتابته مع المدرب وإعادة الخطوات من البداية. ولا تعتمد على ذاكرتك، بل عليك الممارسة العملية من أجل تثبيت ما تعلمته، وبعد الإنتهاء من مسار مثلاً وتنفيذ مشروع عليك تنفيذ مشروع آخر للتطبيق على ما فات خاصًة في مرحلة الأساسيات فهى الأهم. وبعد أن قمت بذلك ستنسى بعض الأشياء والجميع كذلك ولا مشكلة، تستطيع البحث عنها على جوجل وستتمكن من استخدامها مباشرًة وذلك لأنك اعتمدت على الفهم والاستيعاب مع الحفظ أيضًا في البداية ولن تتذكر كل شيء بالتأكيد. وبعد فترة ولتكن أسبوع أو شهر عليك المراجعة من خلال تنفيذ مشروع أو مشاهدة الدروس بشكل سريع ثم تنفيذ مشروع للتطبيق على كل ما تم دراسته، ومن المهم كتابة الكود أثناء المراجعة لا المشاهدة فقط. أي يمكنك أن تنسى طريقة تطبيق المفهوم، لكن لا أن تنسى المفهوم نفسه. وستجد هنا تفصيل:
- 3 اجابة
-
- 2
-
-
-
بالطبع متوفر، لكن عليك تفقد نوعية المشاريع المعروضة ثم تعلم المهارات اللازمة للقيام بها، هل هي تتطلب PHP ولارافل ووردبريس؟ أم هل تتطلب تعلم تقنيات MERN؟ أي المطلوب لغات وتقنيات أخرى؟ تفقد المشاريع الخاصة بالويب واتخذ قرارك على أساس ذلك. نفس الأمر عندما تريد العمل بشركة عليك تفقد الوظائف المتاحة للمتبدئين أو خبرة سنة وما هي المهارات المطلوبة لذلك. بخصوص السعر فسيتيعن عليك خفض سعرك للحصول على أول مشروع في مواقع العمل الحر وبالطبع يجب توافر المهارات اللازمة وأيضًا معرض أعمال يثبت ذلك من اجل الحصول على تقييم جيد، بعد ذلك عليك طرح سعر متوسط بناءًا العروض التي يتم طرحها على المشروع وبعد اكتساب خبرة عليك طرح السعر المناسب لك وللعميل بناءًا على القيمة التي تقدمها له ولكن لا تبالغ. وبخصوص الأسعار تفقد التالي فقد تم توضيح الأمر بالتفصيل: أيها المبرمج، كيف تُسعّر أعمالك؟
-
تقصد بأنظمة التشغيل، نظام ويندوز ولينكس وماك؟ لا تحتاج سوى معرفة نظام التشغيل الذي تشعر بأريحية في التعامل معه والعمل من خلاله في بداية تعلمك للبرمجة فلا تشتت نفسك بأمور ستعيقك بل ركز على تعلم أساسيات البرمجة ثم التخصص في مجال برمجي. بعد ذلك تستطيع تعلم العمل من خلال نظام لينكس لكونه شائع الاستخدام في السيرفرات، في حال كنت ستتعامل مع ذلك. أما عن أهمية تعلم أنظمة التشغيل أي كيف تعمل كمبرمج تكمن في عدة نقاط، منها: يوفر تعلم أنظمة التشغيل نظرة ثاقبة حول كيفية عمل الكمبيوتر من الداخل. يتعلم المبرمج كيف تتواصل مكونات الكمبيوتر مع بعضها البعض وكيف يدير نظام التشغيل الموارد. يمكن للمبرمجين استخدام معرفتهم بأنظمة التشغيل لتحسين أداء البرامج، عن طريق استخدام ميزات نظام التشغيل مثل تعدد المهام وإدارة الذاكرة، وتجنب أو تحسين مشاكل الأداء مثل تسريب الذاكرة وتحسين استجابة التطبيقات. يساعد تعلم أنظمة التشغيل المبرمجين على تطوير مهارات حل المشكلات، ويتعلم المبرمجون كيفية تشخيص وإصلاح المشكلات المتعلقة بنظام التشغيل. وستتعلم ذلك من خلال لغة مثل C++ حيث ستتعلم طريقة إدارة الذاكرة العشوائية وخلافه.
- 3 اجابة
-
- 1
-
-
السؤال خاص بدورة علوم الحاسوب مسار أساسيات البرمجة لغة JavaScript .درس 04. المتغيرات Variables، لذلك أرجو طرح السؤال أسفل الدرس في التعليقات أسفل الفيديو لمساعدتك بشكل أفضل وطرح الأسئلة العامة هنا. والغرض من الدرس هو تشغيل والوصول لكود جافاسكريبت في المتصفح، ولذلك نقوم بإنشاء ملف index.html ونضع به الكود التالي: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <title>أهلاً بك</title> <script src="index.js"></script> </body> </html> ثم ملف جافاسكريبت index.js كالتالي: let personName = 'ahmed'; console.log(personName); وسيتم طباعة ahmed في الكونسول. وفي حال أردت الوصول إلى قيمة من المصفوفة فالـ index الخاص بها يبدأ من 0 ولذلك نطبع العنصر كالتالي: let personName = 'ahmed'; console.log(personName); let students = ['ahmed', 'mohamed', 'mustafa'] console.log(students[1]) سيتم طباعة الاسم الثاني mohamed في المصفوفة لأنني كتبت 1 وليس 0. إليك مجلد المشروع في المرفقات. js-basics.rar
-
لأن بايثون تستخدم عددًا عشريًا مزدوجًا لتمثيل الأعداد العشرية، والأعداد العشرية المزدوجة هي أعداد عشرية تقريبية، مما يعني أنها لا يمكنها تمثيل جميع الأعداد العشرية بدقة. ففي العملية 9 * 0.01 * 10 الناتج يساوي 0.8999999999999999 لأن 0.01 هو رقم عشري مزدوج غير دقيق، وإن كنت تريد الحصول على الناتج الصحيح، فعليك استخدام عدد عشري دقيق، أي: استخدم نوعًا عشريًا دقيقًا، مثل Decimal. import decimal result = decimal.Decimal(9) * decimal.Decimal(0.01) * decimal.Decimal(10) print(result) #0.9000000000000000187350135405 أو تقريب الرقم العشري المزدوج. result = round(9 * 0.01 * 10, 4) print(result) #0.9
- 1 جواب
-
- 1
-
-
كل ما يمكنك فعله هو زيادة المساحة المخصصة للذاكرة العشوائية الوهمية على حاسوبك، حيث إنشاء ملف باسم Paging file، وهو ملف مخفي على محرك الأقراص الثابتة في نظام التشغيل Windows، ويستخدمه الـ Windows لتخزين البيانات التي لا يمكن وضعها في ذاكرة الوصول العشوائي (RAM)، وتسمى تلك العملية بالترحيل، مما يسمح بالتالي: يسمح لـ Windows بتشغيل تطبيقات أو برامج تتطلب أكثر من ذاكرة الوصول العشوائي المتوفرة. يمنع Windows من التوقف عن العمل أو الانهيار بسبب نقص الذاكرة. يساعد في تحسين أداء Windows. قم بالبحث على اليوتيوب عن كيفية زيادة مساحة الرامات للكمبيوتر وستجد نتائج توضح كيفية تفعيل الـ Virtual memory من خلال ملف Pagefile.sys.
- 5 اجابة
-
- 1
-
-
أنت لا تستخدم onTap لتغيير مؤشر الصفحة، وذلك يعمل بشكل جيد عند التنقل للأمام، ولكن عند التنقل للخلف، فإن onTap لا يتم استدعاؤه. ويجب عليك استخدام onTapUp بدلاً من onTap، حيث أن onTapUp يتم استدعاؤه عندما يتم رفع الإصبع عن الزر، بغض النظر عن اتجاه التنقل. class DashboardScreenState extends State<DashboardScreen> { PageController? _pageController; int _pageIndex = 0; late List<Widget> _screens; final GlobalKey<ScaffoldMessengerState> _scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _screens = [ const HomeScreen(), const FavouriteScreen(), const CartScreen(), const MenuScreenNew() ]; } @override Widget build(BuildContext context) { return Scaffold( key: _scaffoldKey, bottomNavigationBar: ConvexAppBar( items: const [ TabItem(icon: Icons.home, title: 'Home'), TabItem(icon: Icons.favorite, title: 'Like'), TabItem(icon: Icons.shopping_basket_rounded, title:'Cart'), TabItem(icon: Icons.person, title: 'Profile'), ], initialActiveIndex: _pageIndex, onTapUp: (int index){ setState(() { _pageIndex = index; }); }, ), body: PageView.builder( controller: _pageController, itemCount: _screens.length, physics: const NeverScrollableScrollPhysics(), itemBuilder: (context, index) { return _screens[_pageIndex]; }, ), ); } } وتستطيع أيضًا استخدام onPageChanged لتغيير مؤشر الصفحة عند التنقل للخلف، لأن onPageChanged يتم استدعاؤه عندما يتغير مؤشر الصفحة، بغض النظر عن اتجاه التنقل.
-
الأسئلة الإختبارية لا يتم الإجابة عليها، من الأفضل تعلم أساسيات ثم محاولة الحل وإليك مصادر: وبخصوص الإختبار فإليك خطوات الحل وليس الحل نفسه: قم بإنشاء ملف .py جديد لبدء البرنامج. إضافة تعليقات في بداية الملف تحتوي على اسمك ورقم هويتك الجامعية كما هو مطلوب. # Your Name # Your University ID 3- بعد ذلك عليك بإنشاء متغيرات لتمثيل معلومات الطلاب وحفظها في قواميس، ويجب أن تكون هناك 3 قواميس لكل طالب، ويجب أن يتضمن كل قاموس المعلومات التالية: الاسم، الهوية، وقائمة بالعلامات في مواد مختلفة. 4- قم بطباعة معلومات أحد الطلاب باستخدام print() واستخدام مؤشرات المفاتيح للوصول إلى القيم المناسبة.
-
في مسار قواعد البيانات في الدورة سيتم شرح لغة SQL وشرح أساسيات التعامل مع قواعد البيانات العلاقية من خلال SQLite. حيث ستتعلم كيف يتم إنشاء قاعدة البيانات والجداول، ثم الإضافة والاستعلام والحذف والمقارنة والجمل الشرطية والعوامل المنطقة والترتيب وتعديل البيانات. وستتعلم كيفية ربط قاعدة البيانات SQLite مع Node.js أي خادم (سيرفر). بعد ذلك يتم شرح التعامل مع قواعد البيانات غير العلاقية NoSQL من خلال MogoDB وnode.js. لذلك أنت لست بحاجة إلى دورة أخرى، ولكن إذا أردت معرفة كيف يتم إنشاء مشاريع فعلية، فعليك إختيار ما بين الدورات التالية: أو وللمزيد من المصادر والشرح عن قواعد البيانات: و في هذا القسم تجد مقالات متنوعة عن قواعد البيانات: مقالات قواعد البيانات و إليك بعض الكتب التي نشرتها الأكاديمية و التي تتعلق بمجال قواعد البيانات: تصميم قواعد البيانات 1.0.0 ملاحظات للعاملين بلغة SQL 1.0.0 الدليل العملي إلى قواعد بيانات PostgreSQL 1.0.0
-
أرجو التعليق أسفل فيديو الدورة لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا. نستخدم الخاصية root في خيارات sendFile() لتحديد الدليل الذي سيتم البحث فيه عن الملف الذي سيتم إرساله، وبدون تلك الخاصية، سيبحث Node.js عن الملف في الدليل الحالي، والذي قد لا يكون هو المكان الذي توجد فيه الملف. و__dirname هي دالة داخلية في Node.js تُرجع اسم الدليل الذي تم تحميل الملف الحالي منه. لذلك ستبحث Node.js عن الملف server.html في الدليل الذي تم تحميل ملف الكود الحالي منه أي ملف جافاسكريبت الذي به الكود. بمعنى آخر فائدة __dirname هي أنها تسمح لتطبيق Node.js بإرجاع الملف server.html بغض النظر عن مكان وجوده في النظام، وذلك مفيد بشكل خاص عند العمل مع تطبيقات متعددة الصفحات أو عند الحاجة إلى إرجاع ملف من دليل مختلف عن الدليل الحالي. وإليك مثال على كيفية استخدام root لتحديد الدليل الذي سيتم البحث فيه عن الملف الذي سيتم إرساله من دليل مختلف: const express = require('express'); const app = express(); app.get('/', (req, res) => { res.sendFile('public/index.html', { root: 'public' }); }); app.listen(3000); هنا نستخدم root: 'public' لتحديد الدليل public كدليل الجذر، مما يعني أن Node.js سيبحث عن الملف index.html في الدليل public.
- 3 اجابة
-
- 1
-
-
تستطيع ذلك من خلال مكتبة TKinter وقد تم توضيح ذلك الأمر من خلال المقالات التالية:
- 2 اجابة
-
- 1
-
-
المشكلة في ملف Fiend.jsx، وأيضًا هناك مشكلة وهي أن خاصية key هي خاصية خاصة تستخدمها React لتتبع وتحديث قوائم المكونات بكفاءة، ولا يمكن استخدام خاصية key كخاصية عادية في المكونات. لذلك تجنب التالي: محاولة الوصول إلى خاصية key في المكون الفرعي. محاولة استخدام خاصية key لشيء آخر غير الغرض المقصود منها. وأرجو تعديل الكود كالتالي من أجل طباعة قيمة friends: const Friend = ({ friendId, name, subtitle, userPicturePath }) => { const dispatch = useDispatch(); const navigate = useNavigate(); const { user } = useSelector((state) => state.user); const token = useSelector((state) => state.token); const friends = useSelector((state) => state.user.friends); console.log(friends) //باقي الكود وكرر نفس الأمر في FriendsList.jsx
-
عند طباعتها في الكونسول تظهر على أنها مصفوفة؟ أرجو إرفاق مجلد المشروع لتفقد المشكلة.
-
ذلك يعني أن friends ليست مصفوفة، هل عند طباعة قيمة friends في الكونسول تظهر على أنها مصفوفة؟
-
دورات حسوب تعتمد على اللغة العربية الفصحى وحتى في شرح المصطلحات الإنجليزية الخاصة بالبرمجة يتم تعريبها وشرحها مع ذكر المصطلحات الإنجليزية في بعض الأحيان، أي أنك لست بحاجة إلى لغة إنجليزية لدراسة أي دورة. بينما إذا أردت أن تطور من مهاراتك في البرمجة فعليك تعلم الإنجليزية حتى تتمكن من الاستماع والقراءة على الأقل، وذلك لأن المستندات وأغلب الشروحات المتقدمة ستجدها بالإنجليزية. وقد تم النقاش هنا بالتفصيل:
-
ما تقصدينه هو حساب عدد مرات الضغط في tkinter والطريقة المباشرة هي استخدام عداد، وتستطيعي إنشاء عداد جديد باستخدام وظيفة IntVar(). from tkinter import * root = Tk() # إنشاء عداد counter = IntVar() counter.set(0) # تحديث العداد عند الضغط على الزر def count(): counter.set(counter.get() + 1) label.config(text=f"عدد مرات الضغط: {counter.get()}") # إنشاء زر button = Button(root, text="ضغط", command=count) button.pack() # إنشاء علامة لعرض عدد مرات الضغط label = Label(root, text="عدد مرات الضغط: 0") label.pack() root.mainloop() حيث يتم إنشاء عداد جديد يسمى counter، ثم تعيين العداد على 0 في البداية، وإنشاء زر جديد يسمى button، بعد ذلك عند الضغط على الزر، يتم تحديث العداد بمقدار 1 وعرض عدد مرات الضغط الحالي على علامة تسمى label.
- 2 اجابة
-
- 1
-
-
هل الجهاز الافتراضي قيد التشغيل، تحقق من ذلك من خلال فتح Android Studio والنقر فوق Run > Run 'app'، وإن كان الجهاز الافتراضي قيد التشغيل، فسترى رسالة تقول "Device is running". وهل Visual Studio Code متصل بالجهاز الافتراضي؟ قم بفتح Visual Studio Code والنقر فوق Terminal > New Terminal ثم، اكتب الأمر التالي في موجه الأوامر: adb devices وإن كان الجهاز الافتراضي متصلًا، فسترى قائمة بالأجهزة المتصلة، بما في ذلك الجهاز الافتراضي. أيضًا عليك التأكد من أن Visual Studio Code لديه الأذونات اللازمة للوصول إلى الجهاز الافتراضي، من خلال فتح Visual Studio Code والنقر فوق File > Preferences > Settings. ثم، ابحث عن "android" في مربع البحث. في قسم "Device Manager"، تأكد من أن الخيار "Use custom device manager" محدد وأن المسار إلى أداة إدارة الأجهزة الافتراضي الصحيح.
-
الطريقة الصحيحة هي كالتالي: 1- إنشاء كائن من خلال دالة وطباعة this function Person(first, last) { this.firstName = first; this.lastName = last; } Person.prototype.print = function() { console.log(this); }; const person = new Person("yousef", "mohamed"); person.print(); فلو قمنا بتعريف دالة print() داخل دالة البناء Person() فذلك يعني أن الكلمة المفتاحية this داخل دالة print() ستشير إلى الدالة الداخلية، وليس إلى مثيل فئة Person (الكائن الجديد). ويجب نقل دالة print() خارج دالة البناء لجعلها متاحة لجميع مثيلات فئة Person، وستشير الكلمة المفتاحية this داخل الدالة إلى مثيل الفئة. ويجب عليك فهم prototype في جافاسكريبت قبل أي شيء وقبل تعلم كيفية إنشاء كلاس، حيث أنه لا يوجد كلاس بالمعنى التقليدي كما في C++ وجافا، أرجو قراءة التالي: 2- إنشاء كلاس من خلال الكلمة المحجوزة class class MyClass { constructor() { this.name = 'yousef' } logThis() { console.log("this:", this); } } const myObject = new MyClass(); myObject.logThis();
-
التسويق الإلكتروني هو عملية الترويج للمنتجات أو الخدمات أو العلامات التجارية عبر الإنترنت ويشمل ذلك استخدام مجموعة متنوعة من القنوات والتقنيات، مثل مواقع الويب والبريد الإلكتروني ووسائل التواصل الاجتماعي والإعلانات المدفوعة. ويتمتع التسويق الإلكتروني بالعديد من الفوائد، منها: إمكانية الوصول إلى جمهور واسع: يمكن للشركات الوصول إلى جمهور عالمي من خلال التسويق الإلكتروني. القياس والتحليل حيث يمكن للشركات قياس نتائج حملاتها التسويقية الإلكترونية بسهولة. التسويق الإلكتروني أكثر فعالية من حيث التكلفة من الأساليب التسويقية التقليدية في كثير من الأحيان. ونستطيع تقسيم التسويق الإلكتروني إلى عدة أقسام رئيسية، منها: التسويق عبر محركات البحث (SEO): يهدف إلى تحسين ترتيب موقع الويب في نتائج البحث الطبيعية. التسويق بالمحتوى (Content Marketing): يركز على إنشاء ونشر محتوى عالي الجودة لجذب العملاء المحتملين. التسويق عبر وسائل التواصل الاجتماعي (Social Media Marketing): يهدف إلى إنشاء علاقات مع العملاء المحتملين من خلال وسائل التواصل الاجتماعي. التسويق بالبريد الإلكتروني (Email Marketing): يهدف إلى بناء علاقات مع العملاء الحاليين والاحتفاظ بهم من خلال البريد الإلكتروني. التسويق المدفوع (Paid Marketing): يشمل الإعلانات المدفوعة على الإنترنت، مثل الإعلانات المصورة والإعلانات النصية والإعلانات الاجتماعية. وأصبح التسويق الإلكتروني من أهم القنوات التسويقية في العالم، ويرجع ذلك إلى زيادة استخدام الإنترنت من قبل الأفراد والشركات، ولذلك، أصبحت الشركات تعتمد بشكل كبير على التسويق الإلكتروني للوصول إلى عملائها المحتملين وتحقيق أهدافها التسويقية. مقالات التسويق والمبيعات
-
هل تقصد برامج المونتاج؟ حاليًا أنصحك بتجربة برنامج clipchamp من مايكروسوفت فهو مجاني وبه ميزة تسجيل الشاشة والكاميرا وعمل مونتاج وميزات أخرى. أيضًا يوجد برامج مونتاج أخرى مثل: Adobe Premiere Pro أحد أكثر برامج المونتاج شيوعًا وقوة، ويوفر مجموعة واسعة من الميزات والأدوات للمستخدمين المحترفين. Final Cut Pro برنامج مونتاج شائع آخر لنظام macOS، ويوفر واجهة سهلة الاستخدام ومجموعة متنوعة من الميزات. DaVinci Resolve برنامج مونتاج مجاني ومفتوح المصدر يوفر مجموعة واسعة من الميزات والأدوات، بما في ذلك تحرير الفيديو والصوت والمؤثرات المرئية. وبالطبع يوجد Camtasia وهو الأسهل في حال أردت عمل شروحات على اليوتيوب.
-
رسالة "401 Unauthorized" تعني أن الطلب لم يتم تصديقه بنجاح عند إرساله إلى الخادم، أي أن الـ JWT (JSON Web Token) الذي تم إرساله مع الطلب غير صالح أو غير موجود. عليك بالتالي: تأكد من أنك قمت بتسجيل الدخول بنجاح وحصلت على JWT الصحيح عند تسجيل الدخول. التأكد من أنك تقوم بإرسال الـ JWT الصحيح مع الطلب، وأنت تقوم بذلك بالفعل في كود العميل باستخدام: "x-auth-token": user?.data?.token وتحقق من أن خادمك يستخدم نفس (JWT_SECRET) الذي تم استخدامه عند إنشاء الـ JWT ويجب أن يكون متطابقًا على الجانبين (الخادم والعميل) حتى يمكن التحقق من الـ JWT بنجاح. وقم بتضمين وسيط الحماية (protect) في مسار الطلب /api/auth/change_password للتحقق من الـ JWT قبل تنفيذ العملية وتأكد من أن الوسيط موجود في سلسلة وسائط التوجيه التي تتعامل مع هذا المسار. أيضًا تحقق من الجزء التالي في الكود: await current_user.save() res.send(res.json({ success: true, data: current_user })) عليك أيضًا إزالة res.json() حيث أن res.send() بالفعل يقوم بإرسال الجواب بصيغة JSON.
- 2 اجابة
-
- 1
-
-
الأمر بحاجة إلى استراتيجية شاملة تستهدف جميع جوانب الشركة، من المهام اليومية إلى البنية التحتية. وتتضمن بعض الاستراتيجيات الشائعة ما يلي: تقليل التكاليف الثابتة مثل الإيجار والمرافق والتأمين، جزءًا كبيرًا من ميزانية الشركة الناشئة، ويمكن تقليل تلك التكاليف من خلال العمل من المنزل، أو إيجار مساحة عمل مشتركة، أو التفاوض على عقود إيجار طويلة الأجل. توظيف المستقلين طريقة فعالة لتجنب تكاليف التوظيف التقليدية، مثل الرواتب والفوائد والاستفادة منهم لأداء مجموعة متنوعة من المهام، بما في ذلك تطوير الويب والتسويق والكتابة. تساعد التكنولوجيا الشركات الناشئة على تبسيط العمليات وزيادة الكفاءة، مما يؤدي إلى خفض التكاليف، وهناك العديد من الأدوات والبرامج المتاحة التي يمكن أن تساعد الشركات الناشئة على تقليل التكاليف، مثل أدوات إدارة المشاريع وبرامج CRM وأدوات التسويق عبر البريد الإلكتروني. التركيز على الأساسيات، مثل تطوير منتج أو خدمة جيدة، وبناء قاعدة عملاء من اجل خفض التكاليف على المدى الطويل من خلال زيادة الإيرادات. وضع في اعتبارك أن خفض التكاليف ليس الهدف النهائي، بل يجب أن يكون هدفك هو إيجاد التوازن بين خفض التكاليف والحفاظ على قدرة الشركة على النمو والازدهار. 7 استراتيجيات فعالة لخفض التكاليف في شركتك الناشئة