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

لوحة المتصدرين

  1. Wael Aljamal

    Wael Aljamal

    الأعضاء


    • نقاط

      4

    • المساهمات

      6975


  2. محمود سامي حسين

    • نقاط

      3

    • المساهمات

      155


  3. مسعود زاهي

    مسعود زاهي

    الأعضاء


    • نقاط

      3

    • المساهمات

      646


  4. Hassan Hedr

    Hassan Hedr

    الأعضاء


    • نقاط

      3

    • المساهمات

      2851


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 02/24/22 في كل الموقع

  1. هل هناك ما أخطأت به في هذا المثال وهل هذا فقط هو مصطلح الPolymorphism ؟ <?php /* - Polymorphism أو الواجهات interfaces مصطلح في البرمجة كائنية التوجة بمعني متعدد الأوجة - مثال الريموت كنترول يقوم بنفس الوظيفة في كلا من التلفزيون والريسيفر - يتم التصريح عنة بأستخدام الكلمة المحجوزة interface - ويتم أستخدامة داخل الاصناف بأستخدام الكلمة المحجوزة implemnts */ /*بفرض أن لديك جهاز تليفزيون وريسيفر في منزلك و الواجهة تمثل الريموت كنترول */ interface remotecontrol{ //يمكن حذف هذه الطرق methods ولن يحدث اي خطأ public function channel_1(); public function channel_2(); public function channel_3(); public function channel_4(); public function power_on(); public function power_off(); } // الصنف الأول : ريموت الريسيفر class reciver_remote implements remotecontrol{ //لا يمكن حذف هذه الطرق لانه مصرح عنها في الواجهة والا سوف يحدث خطأ public function channel_1(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الأولي "; } public function channel_2(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الثانية "; } public function channel_3(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الثالثة "; } public function channel_4(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الرابعة "; } public function power_on(){ echo "تم تشغيل الرسيفر "; } public function power_off(){ echo "تم أغلاق الريسيفر"; } } // الصنف الثاني : ريموت التيلفزيون class tv_remote implements remotecontrol{ public function channel_1(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الأولي "; } public function channel_2(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الثانية "; } public function channel_3(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الثالثة "; } public function channel_4(){ echo "تم تغيير القناة بنجاح أنت تشاهد الأن القناة الرابعة "; } public function power_on(){ echo "تم تشغيل التيلفزيون "; } public function power_off(){ echo "تم أغلاق التيلفزيون"; } } # الأن للتصريح عن كائنات جديدة وتستطيع تعديلها كما تريد $reciver_remote = new reciver_remote(); $reciver_remote->channel_1(); $reciver_remote->channel_2(); $reciver_remote->channel_3(); $reciver_remote->channel_4(); $reciver_remote->power_on(); $reciver_remote->power_off(); $tv_remote = new tv_remote(); $tv_remote->channel_1(); $tv_remote->channel_2(); $tv_remote->channel_3(); $tv_remote->channel_4(); $tv_remote->power_on(); $tv_remote->power_off(); //لطباعة الكائنات var_dump($reciver_remote,$tv_remote);
    2 نقاط
  2. سنتحدث في هذا المقال عن مفهوم العلاقات بين جداول قاعدة البيانات، وما أنواع هذه العلاقات وكيف تتمثل وما هو أثرها على العمل. ما هي العلاقات بين الجداول عند إنشاء جداول في قاعدة البيانات، فإن الظاهر لنا أننا نقوم ببناء جداول منفصلة وغير مترابطة، ولكننا في الواقع العملي نحتاج لربط هذه الكيانات المنفصلة بحيث تُبنَى علاقات تحكم البيانات الموجودة في هذه الجداول، وتحكم طريقة التعامل مع هذه البيانات. تنشَأ العلاقة بين جدوليْن عندما يُربط عمودان فيهما مع بعضهما عن طريق وجود قيود مطبقة على العمودين، بحيث يكون قيد المفتاح الرئيسي على عمود في الجدول “الأب” وقيد المفتاح الأجنبي على العمود في الجدول “الابن”، وعادة يكون اسم العمودين واحدًا في كلا الجدولين. مثلا، لحفظ عناوين الأشخاص نستطيع إنشاء جدول باسم Address ونربطه بجدول الأشخاص Persons بعلاقة تحكم البيانات الموجودة في الجدولين، بحيث يكون لكل شخص في الجدول Persons عنوان واحد مرتبط به في الجدول Address. يُربَط الجدولان عن طريق عمود باسم Person_Id في كلا الجدولين. مثال آخر، لو أردنا أن نتابع عملية استعارة الكتب في مكتبة، فإننا سننشئ جدولًا باسم Borrowed_Books (كُتُب مُعارة) ونربطها بالجدول Persons عن طريق العمود Person_Id. يستطيع الشخص الواحد - في هذا النوع من الربط - أن يستعير أكثر من كتاب. في هذا المثال، لو أننا حفظنا بيانات الأشخاص والكتب المستعارة في جدول واحد، ستظهر لنا مشكلة تكرار البيانات Data Redundancy لأننا سنكرّر بيانات الشخص لكل كتاب يستعيره. ماذا نستفيد من بناء العلاقات بين الجداول؟ التخلص من مشكلة تكرار البيانات عن طريق فصلها وحفظها في أكثر من جدول، فمشكلة تكرار البيانات هي عدو مستخدمي قواعد البيانات ومسؤوليها، لأنها تتسبب بزيادة حجم قاعدة البيانات بقدر كبير وبسرعة، وترفع السرعات المطلوبة لتنفيذ الاستعلامات، وتجعل من موضوع صيانة قاعدة البيانات كابوسا مقلقا. الحفاظ على دقة وسلامة البيانات في قاعدة البيانات، فمع وجود العلاقات بين الجداول، سوف تضمن مثلا عدم وجود كتاب مُعار ليس له شخص استعاره، أو عنوان وهمي ليس له صاحب، وقس على ذلك العديد من الأمثلة. استخراج البيانات من أكثر من جدول بكفاءة وسرعة عن طريق بناء جمل ربط استعلامية تطلب المعلومات من أعمدة مختلفة في جداول مختلفة، وإخراج النتيجة بطريقة مفيدة ومرتبة. أنواع العلاقات توجد أربعة أنواع من العلاقات بين الجداول كالتالي: علاقة واحد إلى واحد (One-to-One). علاقة واحد إلى كثير أو علاقة كثير إلى واحد (One-to-Many / Many-to-One). علاقة كثير إلى كثير (Many-to-Many). علاقة المرجعية الذاتية (Self Referencing). علاقة واحد إلى واحد لنفترض أن الجدول Persons لديه البنية والبيانات التالية: Person_ID First_Name Last_Name Age Address 101 Ibrahim Mohammed 31 12 Main St, Doha 102 Mohammed Khaled 25 Gaza, Middle Center نستطيع أن نضع بيانات العنوان في جدول منفصل ونسميه Address وتكون بنية الجدوليْن كالتالي. الجدول Persons: Person_ID First_Name Last_Name Age Address_Id 101 Ibrahim Mohammed 31 1 102 Mohammed Khaled 25 2 الجدول Address: Address_ID Address 1 12 Main St, Doha 2 Gaza, Middle Center لاحظ أنه أصبح لدينا عمود بنفس الاسم Address_Id في كلا الجدولين. لبناء العلاقة بين الجدولين، طبّقنا قيد المفتاح الأجنبي على العمود Address_Id في الجدول Persons بحيث يأخذ قيمه من العمود Address_Id في الجدول Address والمطبق عليه قيد المفتاح الرئيسي. أصبحت لدينا الآن علاقة بين الجدولين، وفي حال كان كل عنوان في الجدول Address يقترن فقط بشخص واحد في الجدول Persons فعندها نسمي هذه العلاقة واحدًا إلى واحد. يجب التنويه إلى أن هذا النوع من العلاقات غير مستخدم كثيرا، فالجدول الأول الذي يحتوي العنوان وبيانات الشخص يفي بالغرض في أغلب الأحيان. نستطيع تمثيل العلاقة بالشكل التالي: لاحظ أن وجود العلاقة اختياري، فمن الممكن أن يكون لدينا سجل في الجدول Persons دون عنوان له في الجدول Address وهذا مرتبط بعدم تطبيق قيد القيمة غير الفارغة على العمود Address_Id. في حال طُبِّق قيد غير القيمة غير الفارغة على العمود، فهنا تصبح العلاقة واجبة بين الجدولين، ولا يمكن أن نُنْشئ سجلًّا في الجدول Persons إلا بإدخال قيمة موجودة للعمود Address_Id وهو في مثالنا هذا غير منقطي نوعا ما. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن علاقة واحد إلى كثير أو علاقة كثير إلى واحد هذا النوع من العلاقات هو الشائع بين أنواع العلاقات بين الجداول في قاعدة البيانات، لوجود تطبيقات كثيرة عليه، فمثلا: الطالب (واحد) يستطيع أن يدرس أكثر من مساق (كثير). الطبيب يعالج ويتابع حالة مريض واحد أو أكثر. طلبية الشراء تحتوي على أكثر من عنصر. الشخص يستعير أكثر من كتاب. وقس على ذلك العديد من الأمثلة. لنفترض وجود جدول للزبناء Customers بالهيكلية التالية: Customer_ID Customer_Name 1 Ibrahim Mohammed 2 Mohammed Ahmed نستطيع ربط جدول الزبناء السابق بجدولٍ للطلبيات Orders بعلاقة واحد إلى كثير، لتعبر العلاقة عن الطلبيات التي قام بها العملاء وقيمة كل طلبية وتاريخها. يمكن أن تكون هيكلية الجدول Orders كالتالي: Order_ID Customer_ID Order_Date Order_Value 997 101 1/5/2017 100 998 102 21/4/2016 150 999 101 21/4/2015 1500 تسمح هذه العلاقة للعميل بأن يطلُب طلبيةً أو أكثر، ويمكن ألا تكون له أية طلبية. ولكنّ كل طلبية في الجدول Orders ستكون تابعة لعميل واحد. ونستطيع تمثيل هذه العلاقة بالشكل التالي: علاقة كثير إلى كثير في علاقة كثير إلى واحد، تكون العلاقة مبنية على أن يكون أحد أطرافها “واحدًا”، مثل طالب واحد، عميل واحد، طلبية واحدة، وفي الطرف الثاني “كثير”. نحتاج أحيانا أن يكون طرفا العلاقة كثيرين. فمثلا، قد تكون لدينا طلبية تحتوي أكثر من عنصر، ونفس العنصر يكون متواجدًا في أكثر من طلبية. في هذه الحالة نحتاج لوجود جدول إضافي لبناء العلاقة، فمثلا تكون هيكلية جدول Orders كالتالي: Order_ID Customer_ID Order_Date Order_Value 997 101 1/5/2017 100 998 102 21/4/2016 150 999 101 21/4/2015 1500 وهيكلية جدول Items كالتالي: Item_Id Item_Name Item_Description 201 Hard Disk 1 1 Tera SSD Hard 202 Mouse Microsoft Optical Mouse 203 LCD 42 42” LCD نستطيع بناء علاقة كثير إلى كثير بين الجدولين السابقين بإضافة جدول ثالث يحلّ مكان الرابط وغرضه الوحيد هو بناء هذا النوع من العلاقات. نطلق عليه مثلا الاسم Orders_Items، ويكون بالهيكلية التالية: Order_Id Item_Id 997 201 997 202 999 201 999 202 999 203 998 203 يمثّل الشكل التالي علاقة كثير إلى كثير كما تظهر في الجدول Orders_Items: علاقة المرجعية الذاتية يُبنى هذا النوع من العلاقات عندما نريد أن نبني علاقة بين جدول ونفس الجدول، وأوضح مثال على هذا النوع من العلاقات هو جدول الموظفين الذي يحتوي على عمود رقم الموظف المسؤول، حيث يمكن ربط كل موظف بموظف آخر (مدير أو مسؤول) من نفس الجدول. فمثلا، لو كان لدينا جدول باسم Employees خاص بحفظ بيانات الموظفين، ستكون هيكليته على النحو التالي لتطبيق علاقة مرجعية ذاتية عليه: Employee_ID Employee_Name Manager_Id 100 Ibrahim Elbouhissi 101 Khaled Saber 100 102 Yasmeen Hadi 100 103 Duaa Yousef 101 104 Sami Saber بعلاقة المرجعية الذاتية، من الممكن أن يكون للموظف مسؤولًا أو لا يكون، ومن الممكن أن يكون الموظف مسؤولا عن موظف أو أكثر، ويمكن تمثيل العلاقة بالشكل التالي.
    1 نقطة
  3. طرحنا في مقالنا الأول من سلسلتنا حول أدوات الترجمة الحاسوبية بعنوان "أدوات الترجمة بمعونة الحاسوب (Cat tools): بوابة الترجمة العصرية" بعض المفاهيم الأساسية ودواعي وامتيازات استثمار أدوات CAT في عملك. سنتناول في مقالنا الثاني هذا أحد أبرز برامج CAT في السوق الحالية وهو برنامج memoQ مستفيضين في ميّزات هذا البرنامج وما يقدّمه من الخيارات والإضافات التي جعلته في الصدارة، مع مقارنة موجزة بينه وبين عمالقة برامج الترجمة الحاسوبية Memsource و SDL Trados Studio. أما الشطر الثاني من المقال فسنسلّط الضوء فيه على الأنواع المتوفّرة من البرنامج مع النسخ المجانية المُتاحة وكيفية تنزيلها وتثبيتها على حاسوبك الشخصي. نبذة مختصرة عن البرنامج يندرج برنامج memoQ تحت خانة البرامج المدفوعة مغلقة المصدر (proprietary - closed source)؛ أي أنها بعكس البرامج مفتوحة المصدر تكون مخصّصة للعميل بحدّ ذاته ولا يشترك فيها مع مستخدمين آخرين، مثل برنامج omegaT المجانيّ، فهو أحد الأمثلة عن برامج CAT مفتوحة المصدر. الشركة التي أطلق البرنامج هي شركة "memoQ Translation Technologies" الهنغارية عام 2006، وهو أولى المنتجات التي قدّمتها الشركة بعد تأسيسها. يتضمّن البرنامج عدّة إصدارات منها: إصدار Translator Pro edition وإصدار Project Manager edition واللذين يعملان على أنظمة تشغيل الويندوز فقط، بالإضافة إلى خدمة memoQ server السحابيّة والتي تقدّم حلولًا واعدة إن كنت بصدد إنشاء شركة خاص بك للترجمة أو مشروع ترجمة ذا نطاق واسع ويشمل العديد من المترجمين واللغات من مختلف أنحاء العالم. تقدّم الشركة نسخة مجانيّة لمدّة 45 يوم من إصدار Translator Pro edition غير محدودة الفعاليّة، أي يمكنك استخدام جميع ميّزات البرنامج دون قيود محدّدة. كما تقدّم الشركة العديد من الخدمات والعروض المميّزة للشركات والمؤسسات وحتى الجامعات والطلّاب، وسنتناول هذه الخدمات لاحقًا في مقالنا. ميزات برنامج memoQ في هرم المنافسة يتمتّع برنامج memoQ بمجمل الميزات المطلوبة من أي برنامج ترجمة حاسوبي، ويمكننا إجمال أبرز الميّزات التي يقدّمها لنا برنامج memoQ في النقاط التالية: قاعدة مصطلحات مرنة يقدّم برنامج memoQ ميزة رائعة فيما يتعلّق بترجمة المصطلحات، وتتمثّل بإمكانية استيراد ترجمات المصطلحات آليًّا من مختلف المصادر دون الحاجة إلى إضافتها يدويًّا. على سبيل إن كان لديك جدول إكسل يتضمّن ترجمة مصطلحات ذات صلة بعملك الحالي، بإمكانك بخطوة بسيطة استيراد كافة المصطلحات وسيُخزّنها برنامج memoQ مباشرةً في قاعدة المصطلحات لديه. حتى وإن لم يكن لديك سوى نص صرف بالترجمة فيمكن للبرنامج تخمين المصطلحات وتخزينها وضبطها في قاعدته. بالإضافة إلى أن برنامج memoQ يُحدّد المصطلحات التي تترجمها آنيًّا ويعرض الترجمات المُتاحة لهذه المصطلحات، بحيث يمكنك قَبول هذه الاقتراحات أو رفضها وإضافة ترجمة جديدة والتي ستُخزّن في قاعدة البيانات هي أيضًا. ينبّهك البرنامج أيضًا عند ترجمة مصطلح بعيدًا عن الترجمة التي اعتمدها سابقًا ويوفّر لك إمكانية استبدال كافّة الترجمات السابقة للمصطلح في كافّة المستندات التي عملت عليها إلى الترجمة الجديدة، وهذه ميزة رائعة لتوفير الوقت وضمان دقّة العمل. شمولية ذاكرة الترجمة يقدّم برنامج memoQ -مثل غيره من برامج CAT- ميّزة ذاكرة الترجمة، بحيث لا تضطر إلى ترجمة ذات العبارة مرارًا وتكرارًا؛ إذ يحلل البرنامج كل العبارات في ملف العمل ويحدد المتشابه منها مع الجمل التي ترجمتها سابقًا مع نسبة التشابه، ليس هذا وحسب وإنما يحفظ البرنامج سياق كل الجمل المتشابه في اللغتين الأصلية والمُستهدفة بالإضافة إلى معلومات أخرى مثل اسم الملف الذي تضمّن العبارات المتشابهة والمؤلف وتاريخ إنشاءه، بحيث يمكنك مقارنة السياق الذي وردت فيه العبارة المتكررة سابقًا ومقارنته بالسياق الحالي واستنتاج الترجمة الأنسب لها. كما ويمكنك البحث في الكلمات والتعابير المخزّنة في ذاكرة الترجمة، حيث سيُقدّم لك البرنامج جميع المواطن الذي تُرجمت فيه العبارة سابقًا، بالإضافة إلى تخمين المكان المناسب لوضع هذه الكلمات أو العبارات في النص المُترجم الحالي. الإحصائيّات المتنوّعة إحدى أكثر الأدوات المفيدة في برامج CAT المتقدّمة هي ميّزة إحصاء العمل، وبرنامج memoQ يتميّز بأسلوبه الفريد والواضح في عرض الكلمات والعبارات المتشابهة بين النص المُستهدف وذاكرة الترجمة الحالية ومدى التشابه فيما بينها، كما يوفّر إمكانية تحديد نسبة التشابه بين عدّة ملفّات إن كنت بصدد العمل على أكثر من ملف واحد، وهذا يمكّنك من تقدير مقدار الجُهد الذي سوف تبذله لإنجاز العمل. الميزة التشاركية يمكنك باستخدام الإصدار الفردي الأبسط memoQ translator pro العمل على قاعدة بيانات واحدة ومشاركتها مع أي فرد أو مؤسسة تستخدم البرنامج أو تعتمد على الإصدار السحابي على سيرفر memoQ، بضغطات بسيطة يمكنك قَبول عروض الترجمة من أي مُستخدم لبرنامج memoQ. بإمكانك أيضًا العمل مع العملاء الذين يعتمدون منصّات ترجمة أخرى، فبرنامج memoQ يقبل معظم الملفّات من أدوات الترجمة المعروفة حول العالم. موازنة بين عمالقة برامج CAT الثلاث لقد ذكرنا سابقًا بأن سوق أدوات CAT تسيطر عليه بعض البرامج المميّزة، التي وفّرت لعملائها طيفًا واسعًا من المزايا والخدمات والدعم الفني المتواصل، وهو ما جعلها تتصدّر قائمة أشهر أدوات الترجمة السحابية في العالم. سنستعرض فيما يلي مقارنة بين برنامج memoQ ومنافسيه الشرسين Memsource وSDL Trados Studio. السعر تبلغ كلفة الاشتراك السنوي لإصدار translator pro مع الدعم الكامل في برنامج memoQ حوالي 750$، في حين تصل كلفة الاشتراك السنوي لبرنامج SDL إصدار freelancer حوالي 545$ للجهاز الواحد، وفي حالة الرغبة بتثبيت البرنامج على جهازين تصل التكلفة إلى 670$. يوفّر برنامج Memsource اشتراكًا مجانيًّا دائمًا ولكن محدود بملفّين على الأكثر يصل حجم كل ملف إلى 10 ميغابايت، ومقيّد بألف مشروع فقط. في حين تبلغ قيمة الاشتراك الشهري للإصدار الكامل حوالي 27$ وما يُقارب 340$ للسنة. اللغات المدعومة وإمكانيّة الوصول يدعم memoQ ما عدده 10 لغات من بينها اللغة العربية، وبالمثل فإن برنامج SDL يدعم 9 لغات، في حين برنامج Memsource يدعم 18 لغة. إصدار memoQ التقليدي يجب تنصيبه على جهاز واحد والعمل على هذا الجهاز تحديدًا، بالتالي إن أردت العمل خارجة مكتب عملك ستضطر إلى ترجمة الملفات بدون الاستعانة بالبرنامج، ولكن مع ذلك يمكنك استيراد الجمل التي ترجمتها خارج البرنامج إلى ذاكرة الترجمة بسهولة. بالمقابل يوفّر لك برنامج SDL إمكانية تنصيب البرنامج على أكثر من حاسب واحد، بالتالي يمكنك نقل مشروع عملك بين جهازين والعمل على المشروع ضمن البرنامج نفسه وعبر قاعدة البيانات ذاتها. في يتميّز برنامج Memsource بأنه سحابي ويعتمد على الانترنت، بمعنى آخر كل ما تحتاجه هو متصفح واتصال بالإنترنت لكي تعمل، سيّئته الأساسية هي أنه لا يمكنك العمل بدون وجود اتصال بالإنترنت. صيغ الملفات المدعومة والواجهة التفاعلية يدعم كل من برنامجي memoQ وSDL طيفًا واسعًا من الملفّات تشمل جميع امتدادت ملفّات الأوفيس (PPT وdoc وxlsx وغيرها) وملفات المتصفحّات، مثل html، والعديد من الامتدادات الأخرى. يدعم برنامج Memsource قاعدة ملفات أقل من نظيريه لكنّها ما زالت كافية لمعظم المستخدمين. للتنويه: تدعم البرامج الثلاث صيغة pdf، ولكن لكون ملفات pdf مهيّئة لكي تُعرف على جميع الأجهزة بالشكل نفسه، فإنها تكون غير قابلة للتحرير في معظم الأحيان، ومع ذلك فإن برنامجي memoQ وSDL قادرين على استيراد هذه الملفات ولكن النتيجة قد لا تكون مرضية دائمًا، لذلك من الأفضل تحويل ملفات البي دي اف أولًا إلى صيغة الوورد ومن ثم فتحها ضمن البرنامج؟ المشاركة والتخزين السحابي كما ذكرنا سابقًا، يُقدّم برنامج Memsource بيئة عمل سحابيّة بالكامل، يمكنك من خلالها الترجمة مع مجموعة وتحديث ذاكرة الترجمة آنيًّا، وتُحدّثُ تطوّرات العمل لحظة بلحظة. بالمقابل يقدّم memoQ خدمة مشابهة وهي خدمة memoQ Server، تُتيح هذه الخدمة للشركات إنشاء قاعدة بيانات موّحدة تستطيع من خلالها خدمة عملاء وتوظيف مترجمين في آنٍ معًا، بحيث يمكن للمُترجم الولوج إلى قاعدة البيانات التي توفرها له الشركة والاستعانة بها في مشروع الترجمة، وبعد انتهاء العمل بإمكانك رفع العمل إلى memoQ server الخاص بالشبكة. قدّمت شركة SDL Trados عام 2019 خدمة مشابهة لخدمة memoQ sERVER، حيث أتاحت للشركات الاشتراك بخدمة سحابية مركزيّة، لكنّها ليست آنيّة كما في برنامج Memsource بل تعتمد على إعداد مشاريع ترجمة وتعيين مترجمين يعملون عليها من خلال برنامج SDL Trados freelancer معتمدين على ذاكرة ترجمة توفّرها الخدمة وبإمكانكم كما في خدمة memoQ Server رفع العمل إلى السيرفر مباشرةً؟ النسخة المجانية يقدّم برنامج memoQ نسخة مجانية غير مقيّدة لمدة 45 يوم، وبعد انتهاء المدّة سيكون البرنامج غير ذا فائدة تُذكر باستثناء بعض الأدوات المحدودة جدًا. بشكلٍ مشابه يقدّم SDL Trados نسخة مجانية لمدة 30 يوم تنتهي بتوقّف كامل لجميع أدوات وميزات البرنامج. برنامج Memsource يوفّر نسخة مجانيّة بكامل الإعدادات لمدّة شهر أيضًا تتوقّف مع انقضائه تلقائيًّا. أنواع النسخ المتوفرة من برنامج memoQ وأيها تختار هناك إصدارين رئيسيين لبرنامج memoQ وهما: memoQ translator pro وmemoQ server. كلا الإصدارين يتضمّان جميع مزايا البرنامج بدون محدوديات أو قيود، غير أن الإصدار الأولي فردي، ولا يتضمّن قاعدة بيانات مُخزّنة سحابيًّا بالتالي هو مناسب أكثر إن كنت تعمل مترجمًا حرًّا وتريد تطوير استراتيجيات عملك وتحصيل فرص عمل أكبر. في حين أن الإصدار السحابي مناسب أكثر للمؤسسات والمشاريع الكبيرة التي تتضمّن أعمال ترجمة معقّدة، بحيث يقدم لها البرنامج قاعدة بيانات مركزية مشتركة لجميع العاملين على المشروع، وهذا يوفّر بيئة عمل متناغمة وتواصل أسرع وتنظيم أكبر للعمل. من جهة أخرى هناك العديد من الخدمات والعروض التي توفّرها الشركة للمؤسسات الربحية وغير الربحية بما فيها الجامعات والمؤسسات التعليمية، من الأمثلة على هذه الخدمات: خدمة memoQ الأكاديمية للجامعات والطلّاب: وهي من الخدمات المميّزة التي تقدّمها الشركة لدعم القطّاع التعليمي، حيث توفّر الشركة إصدار memoQ translator pro بحسم حوالي 85% من سعر الحزمة السنوية للطلّاب المتعلّمين أو المتخرّجين حديثًا من الجامعات المُعتمدة من قبل الشركة مع إمكانية التواصل على بريد الشركة academic@memoQ.com في حال لم تكن الجامعة مُدرجة في القائمة السابقة. بالإضافة إلى توفيرها حزمًا غير محدودة من كلا الإصدارين التقليدي والسحابي مجانًّا للجامعات والمؤسسات التعليمية الرسميّة حول العالم، ويمكنك تصفّح آليّة التقديم عبر صفحة الشركة. برنامج الشركاء: تُقدّم الشركة من خلال هذا البرنامج حسومات كبيرة للشركات المُعتمدة في جميع الدول، بالإضافة إلى دورات مجانيّة. لذلك إن كنت بصدد إنشاء شركة خاصذة للترجمة فقد تفكّر في المشاركة في هذا برنامج الشركاء. خطوات تنزيل النسخة المجانية من برنامج memoQ كما ذكرنا فإن برنامج memoQ يُقدّم بإصدارٍ مجاني هو translator pro لمدة 45 يوم بدون أي قيود على الاستخدام، ويمكنك تنزيل نسخة مجانية وتفعيلها بهذه الخطوات البسيطة: بعد زيارة الموقع الرسمي لبرنامج memoQ انقر على خيار "Products" ثم "memoQ translator pro". بعدها ستطلب نسختك المجانية عبر النقر على أيقونة "Start trial" ثم اختيار "Dowload" ثم تنزيل إصدار "memoQ translator pro" بعد تنزيل البرنامج سنبدأ عملية التنصيب وهي بسيطة وما عليك إلا اتّباع الإرشادات. بعد اكتمال عملية التنصيب وفتح البرنامج ستظهر لك رسالة الخطأ الموضّحة في الصورة. لا تشير الرسالة إلى أي خلل ولكنها تستعرض أنك لم تشترك بعد الرخصة المجانية غير أن خطوة الحصول على الرخصة المجانية ستكون بعدها مباشرةً. لذا سنتجاهلها ونضغط على OK. بعدها ستظهر لك نافذة للحصولة على الحزمة المجانية الخاصة بك، سنتابع من خلال الإرشادات وعند الوصول إلى النافذة التالية سنختار الخيار الأول كما في الصورة. ثم ستظهر نافذة جديدة ستطلب منك إدخال بعض البيانات الخاصة بك. بعد اكتمال إدخال البيانات ستظهر لك نافذة تؤكد نجاحك في الحصول على النسخة المجانية بإمكانك الآن الدخول إلى التطبيق خاتمة سنحصل بعد إكمالنا هذه الخطوات على برنامج memoQ مثبّتًّا وجاهزًا للعمل. سوف نستطلع في المقال القادم أبرز الأدوات وخطوات العمل على الإصدار المجاني memoQ translator pro، وسوف نستعرض كذلك أهم ميّزات البرنامج وكيفية استثمارها لتحسين الترجمة وتسريع وتيرة العمل بكفاءة. اقرأ أيضًا أشهر أدوات الترجمة بمساعدة الحاسوب CAT Tools أدوات الترجمة الضرورية لعمل المترجمين المستقلين لماذا ينبغي عليك استخدام برامج الترجمة بمساعدة الحاسوب CAT tools
    1 نقطة
  4. السلام عليكم ورحمت الله و بركاتة.. بقالي 4 شهور مش عارف ادخول لموقع فريبيك غيرت اكثر من متصافح انترنت وبرضو نفس المشكلة ممكن لو حد يقدر يساعدني يعرفني المشكلة ف ايي..
    1 نقطة
  5. ما الطريقة الصحيحة لربط جدول للعناصر مع ثلاث جداول للتقسيمات كالاتى: جدول العناصر item item (item_id, item_name) جداول التصنيفات category, sub- category 1, sub-category 2 category(category_id, category_name) sub-category1(sub-category1_id, sub-category1_name) sub-category2(sub-category2_id, sub-category2_name) بحيث أستطيع ان استدعي اسفل العنصر أسماء كل جداول التقسيمات التابعة له
    1 نقطة
  6. مرحبا اعمل على تطوير صفحة لكن اواجه مشكلة في الصفحة في القسم الاول كما هو مرفق في الصورة عند تصغير حجم الشاشة ليصبح بقياس 1199 ومادون ذلك تظهر مسافة جانبية على يسار الصفحة حاولت ازالتها بعدة طرق لكن لم ينجح ذلك فحجمها يتقلص فقط
    1 نقطة
  7. أرجو إرفاق الشيفرة لنستطيع المساعدة، و إرفاقها مع السؤال في المرة القادمة
    1 نقطة
  8. السلام عليكم. أريد السؤال عن تشغيل سيرفر apache لويندوز 7 نسخة 32بت. لم أجد على الإنترنت أي نسخة لتشغيل apache بلغة php الاصدار الثامن على نسخة 32بت. وأريده للضرورة القصوى. فهل بإمكاني تشغيل سيرفر apache على ويندوز 32بت؟ وإن لم يكن ممكن. فهل يمكن تحويل الويندوز الى 64بت بدلا من 32؟ ما الخطوات اللازمة. وشكرا
    1 نقطة
  9. غير متوفر ب 64 بت مع php 8 الأفضل عمل Formant وتنصيب نظام متوافق.
    1 نقطة
  10. ولكن انا حابب apache الكامل بكامل مميزاته ك phpmyadmin والautorun للphp و mysql اثناء البدء ف التشغيل.
    1 نقطة
  11. لدي نموذجان Models بالشكل التالي: class Category(models.Model): user = models.OneToOneField(User) # ... class Subcategory(models.Model): user = models.OneToOneField(User) # ... وأحاول الآن التأكد مما إذا كان المستخدم الواحد لديه Category أو Subcategory، وقمت بكتابة الكود التالي: if (request.user.category != None) or (request.user.subcategory != None): # ... else: # ... لكن يظهر لدي الخطأ التالي: Category matching query does not exist. كيف يمكنني التحقق من الخاصية Category أو Subcategory لدى المستخدم في جانغو Django؟
    1 نقطة
  12. سأدخل الي دورة تطوير تطبيقات باستخدام لغة بايثون وعندي مشكلة أنني لا أعرف الدوال لم أدرسهم في مسيريتي الدراسية هل سأوجاه مشاكل مع هذه الدورة أو لا مع تقديم بعض النصائح. شكرا لمن يتفهم الوضع و يجيب بطريقة احترافية و مباشرة و شكرا
    1 نقطة
  13. انت كده ربطت جدول الـ item مع جداول التصنيفات الثلاث.. لماذا لم تربط جداول التصنيفات الثلاث مع بعضها البعض بحيث يتفرع عن التصنيف الرئيسي (category) تصنيفان تابعان هما (sub-category1 & sub-category2) عشان لما اضيف الـ item تبع تصنيف فرعي اعرف أوصل للأب والأب الأكبر ؟ تقصد اني محتاج 3 جداول وسيطة زيادة على الجداول اللى انا ذكرت اسمائها فى السؤال الاول؟
    1 نقطة
  14. السلام عليكم أردت تحديد بعض الصور بواسطة querySelector وقمت بتحويلها الى array ولكن عد طبع indexOf يقوم دوما بطبه الرقم -1 شيفرة HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" /> <link rel="stylesheet" href="style.css" /> </head> <body> <div class="container"> <div class="row"> <div class="box"> <div class="img"> <img src="imgs/dish-1.png" alt="" /> </div> <div class="cap"> <h2>item</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> </div> </div> <div class="box"> <div class="img"> <img src="imgs/dish-2.png" alt="" /> </div> <div class="cap"> <h2>item</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> </div> </div> <div class="box"> <div class="img"> <img src="imgs/dish-3.png" alt="" /> </div> <div class="cap"> <h2>item</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> </div> </div> <div class="box"> <div class="img"> <img src="imgs/dish-4.png" alt="" /> </div> <div class="cap"> <h2>item</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> </div> </div> <div class="box"> <div class="img"> <img src="imgs/dish-5.png" alt="" /> </div> <div class="cap"> <h2>item</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> </div> </div> <div class="box"> <div class="img"> <img src="imgs/dish-6.png" alt="" /> </div> <div class="cap"> <h2>item</h2> <p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> </div> </div> </div> </div> <div class="selected-box"> <div class="selected-img"> <i class="far fa-arrow-alt-circle-left left"></i> <i class="far fa-times-circle times"></i> <i class="far fa-arrow-alt-circle-right right"></i> </div> </div> <script src="main.js"></script> </body> </html> شيفرة جافاسكريبت for (i=0;i<imgList.length ; i++){ imgList[i].addEventListener('click', function(e){ var n = imgList.indexOf(e.target) console.log(n) }) }
    1 نقطة
  15. يرجى إرفاق كل من شيفرة جافاسكريبت وشيفرة HTML للمستند الذي تقوم بمحاولة التطبيق عليه
    1 نقطة
  16. اريد ان اضيف مسافة بعد الرقم الدولي في اضافة intlTelInput : var phone_number = window.intlTelInput(document.querySelector("#phone"), { separateDialCode: true, preferredCountries:["sa","kw", "ae" , "dz", "iq", "ma", "bh","ye", "qa", "eg", "jo", "sy", "lb","ly" ,"tn","om","ps"], hiddenInput: "full", formatOnDisplay: true, utilsScript:"/js/utils.js" }); $(document).on('click' , '.button' ,function() { var phoneNumber = phone_number.getNumber(); console.log(phoneNumber) })
    1 نقطة
  17. السلام عليكم ورحمة الله وبركاته لقد سجلة في الموقع ودفعت المملغ في علوم الحاسوب وخصم المبلغ واريد ان ادخل الدوره مش قادر ارجو منكم المساعده والتواصل معي وشكرا
    1 نقطة
  18. ايه الفرق فsequelize بين اني اجيب الassosiaction كانها property زي user.getPosts() وبين اني اكتب include ؟
    1 نقطة
  19. عند عمل مشروع بإستخدام فلاسك Flask أو جانغو Django، يُنصح في كل مكان بالاحتفاظ بالمفاتيح السرية Secret Keys في ملف منفصل عن إعدادات التطبيق. أيضًا، يجب ألا يتم رفع الملف الذي يحتوي على المفاتيح السرية مثل SECRET_KEY إلى GitHub أو أي مكان آخر. لكن عند نشر المشروع على خادم حقيقي Production Server، سأحتاج إلى الوصول إلى المفاتيح السرية بالتأكيد لكي يعمل الموقع بشكل سليم، وهذا يعني أنه يجب رفع الملف الخاص بالمفاتيح السرية إلى الخادم، إذا كان الأمر كذلك، كيف أحمي المفاتيح السرية في مرحلة الإنتاج Production؟
    1 نقطة
  20. قمت بحل المشكلة عن طريق تحميل الإعلان في كل نشاط قبلي لكل نشاط أريد إظهار الإعلان فيه...
    1 نقطة
  21. Polymorphism أو تعددية الأوجه تعني أنه يمكن معاملة الكائن بأشكال مختلفة، في مثالك الصنفين tv_remote و reciver_remote يمكن معاملتهما كصنف من النوع remotecontrol، يمكن تضمين تعددية الأوجه بطريقتين: تعريف شكل الكائن ضمن واجهة interface يضمنها كل صنف بطريقته الخاصة (وهي الطريقة المستخدمة في مثالك) تعريف شكل الكائن ضمن صنف أب، والوراثة منه في الصنف الابن،وسيعامل الصنف الابن على أنه من نفس نوع الصنف الأب يمكنك القراءة أكثر عن البرمجة كائنية التوجه ضمن المقالات التالية:
    1 نقطة
  22. السام عليكم ورحمه الله وبركاتة . ما الفرق بين الأصناف المجردة والنهائية في لغة abstract & final php ؟ مرفق مثال للتوضيح يرجي شرح الفرق بالكود . <?php /* -الأصناف المجردة || الأصناف النهائية - abstract classes || final classes - مثال أختبار الأجهزة داخل مصنع أبل للتاكد من عملها بشكل جيد */ // أختبار الأجهزة داخل مصنع أبل مثلا abstract class appleFactory{ abstract public function test_memory(); abstract public function test_screan(); abstract public function test_sound(); } //أختبار جهاز أيفون 6 class iphone6 extends appleFactory{ public function test_memory(){ echo 'memory has been tested okey' . ":)"; } public function test_screan(){ echo 'screan has been tested okey' . ":)"; } public function test_sound(){ echo 'sound has been tested okey' . ":)"; } } // أختبار جهاز أيفون 7 class iphone7 extends appleFactory{ public function test_memory(){ echo 'memory has been tested okey' . ":)"; } public function test_screan(){ echo 'screan has been tested okey' . ":)"; } public function test_sound(){ echo 'sound has been tested okey' . ":)"; } } $iphon6 = new iphone6(); var_dump($iphone6); $iphon7 = new iphone7(); var_dump($iphone7); // أختبار الأجهزة داخل مصنع أبل مثلا final class appleFactory2{ final public function test_memory_1(); final public function test_screan_1(); final public function test_sound_1(); } //أختبار جهاز أيفون 12 class iphone12 extends appleFactory2{ public function test_memory_1(){ echo 'memory has been tested okey' . ":)"; } public function test_screan_1(){ echo 'screan has been tested okey' . ":)"; } public function test_sound_1(){ echo 'sound has been tested okey' . ":)"; } } // أختبار جهاز أيفون 8 class iphone8 extends appleFactory2{ public function test_memory_1(){ echo 'memory has been tested okey' . ":)"; } public function test_screan_1(){ echo 'screan has been tested okey' . ":)"; } public function test_sound_1(){ echo 'sound has been tested okey' . ":)"; } } $iphon12 = new iphone6(); var_dump($iphone12); $iphon8 = new iphone7(); var_dump($iphone8); ?>
    1 نقطة
  23. لا يمكن المقارنة بينهما بشكل مباشر لان لكل منهما وظيفة: الصنف المجرد abstract: هو صنف يعتبر قالبًا يمكن للأصناف الأخرى استخدامه وسترث تلك الأصناف منه كل التوابع والمتغيرات المعرفة داخله، ولا يمكن انشاء كائن من الأصناف المجردة الكلمة المحجوزة final: يمكن تعريف صنف كصنف نهائي final أو تابع ما كتابع نهائي عند تعريف صنف بذلك هذا يدل أن ذلك الصنف لا يمكن لأي صنف آخر أي يرثه <?php final class FinalClass { ... } class ChildClass extends FinalClass { } // final سينتج خطأ لا يمكن الوراثة من صنف ?> عند تعريف تابع كتابع نهائي لا يمكن للأصناف التي ترث ذلك التابع أن تعيد تعريف التابع نفسه ضمنها بما يعرف ب Overriding <?php class BaseClass { final public function finalMetod() { ... } } class ChildClass extends BaseClass { public function finalMetod() { // إعادة تعريف للتابع الموروث ... } } // final سينتج خطأ لا يمكن إعادة تعريف تابع ?>
    1 نقطة
  24. السلام عليكم.. اواجه مشكلة مع اضافة intl-tel-input مشكلتي هي ان intlTelInput يتطلب queryselector العنصر الذي يحوي ال id المتواجد داخل queryselector لم اقم بوضعه من البداية في صفحة html و انما سأقوم بحقنه بعد ان يتم المستخدم بعض الخطوات ، لكن يظهرلي هذا الخطأ و الذي مفاده انه لايوجد id بهذا الاسم (لانني لم اقم بحقن العنصر بعد): intlTelInput.min.js:7 Uncaught TypeError: Cannot read properties of null (reading 'getAttribute') at new c (intlTelInput.min.js:7:10123) at intlTelInput.min.js:8:1579 at ajaxer.js:4:27 هذه الشيفرة الخاصة ب intlTelInput: var phone_number = window.intlTelInput(document.querySelector("#phone"), { separateDialCode: true, preferredCountries:["sa","kw", "ae" , "dz", "iq", "ma", "bh","ye", "qa", "eg", "jo", "sy", "lb","ly" ,"tn","om","ps"], hiddenInput: "full", utilsScript:"/js/utils.js" }); window.iti = phone_number; function getValue(){ var number = phone_number.getNumber(); alert(number); } اي حلول ؟ شكرا .
    1 نقطة
  25. للحصول على الرابط الذي أتى منه العميل في flask يُمكنك إستخدام: referrer = request.headers.get("Referer") أو باستخدام الإختصار: referrer = request.referrer
    1 نقطة
  26. request.POST هو عبارة عن قاموس (dictionary) في بايثون أي هو عبارة عن مجاميع غير مرتبة من الأزواج (مفتاح: قيمة) مع إشتراط كون المفاتيح ذات قيم فريدة أي غير مُكَرَّرة. إستعمالٌك ل request.POST['KEY'] قدْ يُثير الخطأ KeyError في حالة عدم تواجد المفتاح KEY في القاموس. أما إستعمالُك ل request.POST.get('KEY') لا يُثير الخطأ وإنما يقوم بإرجاع القيمة None في حالة عدم تواجد المفتاح في القاموس. بالإضافة إلى أن استعمال get يُتيح لك خاصية إضافية وهي إرجاع قيمة إفتراضية في حالة عدم تواجد المفتاح في القاموس. مثلاً: >>> value = request.POST.get('KEY') >>> print(value) None >>> value = request.POST.get('KEY', 'القيمة الإفتراضية') >>> print(value) 'القيمة الإفتراضية' لمزيد من المعلومات عن القواميس يُمكنك زيارة موسوعة حسوب. كما يُمكنك قراءة بعض المقالات الموجودة في أكاديمية حسوب:
    1 نقطة
  27. الفرق بين السطرين هو الآتي : السطر الأول : request.POST.get('KEY') سيقوم بإرجاع القيمة None إذا لم يكن المفتاح أو الكلمة المطلوب إستدعاؤها غير متوفره فهو سطر يقصد به أجلب تلك القيمه فإذا لم تكن متواجده فسيرجع بالرد None فهو مثل تماماً try , except try: x = request.POST['key'] except KeyError: x = None أما السطر الثاني : request.POST['KEY'] سيعطي خطأ Error بمجرد عدم تواجد المفتاح أو القيمة المطلوب إيجادها
    1 نقطة
  28. يُمكنك إشتخدام المُدَقق RegexValidator للتحقق من طول القيمة قبل حفظها في قاعدة البيانات مع مُراعاة أن الرقم الموضوع في العبارة النمطية '^.{10}$' هو نفسه قيمة max_length: from django.core.validators import RegexValidator #قم باستدعاء المُدقق class MyModel(models.Model): """ قم بإضافة المدقق إلى الحقل وقم باستبدال 10 بالطول الذي تُريده """ national_number = models.CharField('National Number', max_length=10, validators=[RegexValidator(regex='^.{10}$', message='يجب أن يكون طول القيمة يُساوي 10', code='nomatch')]) كما يُمكنك إستخدام المُدقق MinLengthValidator مع مُراعاة أن القيمة المُمَرَّرَةُ له هي نفسها قيمة max_length: from django.core.validators import MinLengthValidator #قم باستدعاء المُدقق class MyModel(models.Model): """ قم بإضافة المدقق إلى الحقل وقم باستبدال 10 بالطول الذي تُريده """ national_number = models.CharField('National Number', max_length=10, validators=[MinLengthValidator(10)])
    1 نقطة
  29. حسناً، في هذه الحالة و نمط البيات int لا يتسع لعدد كبير من الخانات، لذلك نحفظ الرقم على شكل سلسلة نصية أو مصفوفة، حيث نقوم بالمرور على عناصر المصفوفة مثلا، و نقوم بإسناد قيمة عشوائية لكل عنصر فيها، فيتم تمثيل العدد على عناصر المصفوفة. أو تشكيل عدد عشوائي و إضافته لسلسة نصية، نفس المنطق. import java.util.Random; Random rand = new Random(); int arr[] = new int[111]; int y = rand.nextInt(9); // 0-8 y = y + 1; // => 1-9 arr[0] = y; for (int i=1;i <100;i++) { arr[i] = rand.nextInt(10); // 0-9 }
    1 نقطة
  30. هناك 3 أنواع من طرق التعامل مع Forms في Django الطريقة الأولى : هي ال class الذي يُكتب في ملف forms.py و الذي يرث من forms.ModelForm بالإضافة لكتابة اسم النموذج Model الذي تريد تحويلة إلى Forms وذلك بعد إستدعاؤه و هذا النوع هدفه الأول هو تحويل النماذج models إلى forms بدلاً من كتابتها من جديد مثال : from django import forms from .models import Volunteering class VolunteeringForm(forms.ModelForm): class Meta : model = Volunteering fields = ['name' , 'phone' , 'email' , 'national_id' , 'address'] labels = { 'name' : ('Name | الأسم'), 'phone' : ('Phone | الهاتف'), 'email' : ('Email | البريد الإلكتروني'), 'national_id' : ('National ID | الرقم القومي'), 'address' : ('Address | العنوان'), } الطريقة الثانية : هي إنشاء Forms خاصة عن طريق class يرث من forms.Form بشكل مباشر على سبيل المثال : from django import forms class VolunteerForm(forms.Form): name = forms.CharField(max_length=100) phone = forms.IntegerField() email = forms.EmailField() national_id = forms.CharField(max_length = 14) address = forms.CharField(max_length=200) الطريقة الثالثه و هي لا ترتبط بملف forms.py او models.py و إنما إنشاء نماذج خاصة في ملف الـ HTML Template و إستقبال البيانات من تلك النماذج على ملف views.py عن طريق كتابة الأمر ذلك على سبيل المثال تريد استقبال بيانات ذلك النموذج من ملف HTML <form action="/your-name/" method="post"> <label for="your_name">Your name: </label> <input id="your_name" type="text" name="your_name" value="{{ current_name }}"> <input type="submit" value="OK"> </form> في تلك الحاله يجب إستخدام الأمر التالي في ملف views.py من أجل إستقبال البيانات من نموذج HTML عن طريق الأمر cleaned_data.get name = form.cleaned_data['name']
    1 نقطة
  31. يمكنك تثبيت قيمة الحقل عن طريق : from django.core.exceptions import ValidationError def validate_length(value,length=6): if len(str(value))!=length: raise ValidationError(u'%s is not the correct length' % value) from django.db import models class MyModel(models.Model): constraint_length_charField = models.CharField(validators=[validate_length] , max_length = 6) حيثُ أن تم تثبيت القيمه في داله و من ثم استدعاؤها في النموذج model الخاص بك من أجل التحقق منها و قد تلاحظ انه قد تم كتابة الأمر max_length مجدداً و ذلك حتى لا تحدث مشكله عن كتابة الأمرين python manage.py makemigrations / python manage.py migrate أي يجب تحديد قيمة الحقل في كلاً من : length في الداله المطلوب التحقق منها و max_length في الحقل
    1 نقطة
  32. يُعَد برنامج MemoQ أحد أهم برامج الترجمة بمساعدة الحاسوب، والتي ذاع صيتها في الآونة الأخيرة مع زيادة الحاجة إلى الترجمة وزيادة التنافس بين الإنسان والآلة، وقد أدرجت الكثير من الجامعات حول العالم أدوات الترجمة بمساعدة الحسوب CAT Tools ضمن المقرر الدراسي لطلبة اللغات والترجمة. شرحنا في مقال واجهة وقوائم برنامج memoQ، لذا سوف نتحدث في هذا المقال حول بعض الأدوات والخصائص المميزة في memoQ. إمكانية التحكم في الموارد المختلفة يعتمد عمل البرنامج على الموارد المختلفة، لذا يمكن تقسيم الموارد في برنامج memoQ إلى نوعين، أما الأول فهو موارد ثقيلة تتمثل في قواعد المصطلحات وذاكرات الترجمة، وأما النوع الثاني فهو الموارد الخفيفة مثل إعدادات ضمان الجودة اللغوية وإعدادات بحث الويب وقوالب المشروع واختصارات لوحة المفاتيح، وكذلك إعدادات استبدال الخط وغيرها الكثير من الموارد الثانوية. الوصول إلى الموارد والتحكم بها يمكن الوصول إلى جميع الموارد الموجودة داخل البرنامج عبر خيار Resource Console من قائمة Resource الموجودة في القائمة الرئيسية لبرنامج memoQ والموجودة في أعلى يسار الشاشة كما هو موضح في الصورة. ذاكرة الترجمة Translation Memories تعمل ذاكرة الترجمة كمخزن للترجمات التي يضيفها المترجم، ليستعيدها في حال ورود ترجمة مشابهة أو مطابقة للترجمات السابقة، ويمكن للمترجم إنشاء العديد من ذاكرات الترجمة بحسب أزواج اللغات التي يتعامل معها في المشاريع التي يعمل عليها. يجب على المترجم أن يخصص ذاكرة ترجمة أو أكثر لكل مشروع يعمل عليه لكي تعمل هذه الذاكرة بصورة صحيحة، فعلى سبيل المثال، إن كان يعمل على مشروع لغته المصدر هي اللغة الإنجليزية، واللغة العربية هي لغة الهدف، فيجب عليه أن يخصص ذاكرة ترجمة لتحفظ ما يُترجَم إلى لغة الهدف، وتتيح له الخيارات الموجودة في الصورة بالأعلى إمكانية إضافة ذاكرة ترجمة أو تعديلها أو حذفها أو استيراد ذاكرة ترجمة جديدة موجودة على حاسوبه، كما تتيح له إمكانية تصدير هذه الذاكرة إلى مكان ما داخل جهازه الخاص. قاعدة المصطلحات Term Bases تعمل قاعدة المصطلحات كمخزن للمصطلحات التي يحفظها المترجم، ليستعيدها في حال ورود مصطلح مشابه أو مطابق لترجمة سابقة، ويمكن للمترجم البحث عن هذه المصطلحات فيما بعد من خلال Lookup Term الموجودة في قائمة الوصول السريع Quick Access، ويجب عليه أن يخصص قاعدة بيانات لكل مشروع يعمل عليه حتى يتسنى له حفظ المصطلحات التي يريدها، وتتيح له الخيارات الموجودة في النافذة إمكانية إنشاء قاعدة مصطلحات جديدة وإمكانية تعديلها أو استيرادها أو تصديرها لملف خارج البرنامج، وكذلك إمكانية حذفها، وتوضح الصورة بالأسفل نافذة استيراد قاعدة مصطلحات من جهاز الحاسوب. باقي الموارد مستندات LiveDocs: تعمل هذه المستندات على حفظ الترجمات كمستندات أحادية أو ثنائية اللغة، وهي مخزن للمستندات الضخمة، كما تتيح للمترجم إمكانية استيراد هذه المستندات أو تصديرها أو إنشاء مستندات جديدة. قاعدة بيانات Muses: تُعَد مخزنًا للكلمات المُتنبَأة، وهي عبارة عن قاعدة بيانات إحصائية، وتتيح للمترجم إمكانية إنشاء عدد لا محدود منها، والجدير بالذكر أنه يجب ربطها بذاكرة الترجمة لتتمكن من العمل بصورة صحيحة. قواعد الترجمة التلقائية Auto-translation rules: تعمل هذه القواعد على تحويل بعض النصوص من لغة المصدر إلى لغة الهدف تلقائيًا، وذلك لاحتوائها على قاعدة بيانات حسابية، إذ يمكنها تحويل جزء من النص مثل العملات والتواريخ وغيرها. قائمة التصحيح التلقائي AutoCorrect :Lists تُستعمل للتصحيح التلقائي للنص أثناء الكتابة، وتُساعد على الكتابة بصورة سريعة وخاصةً في التعبيرات الطويلة. قائمة ما هو غير قابل للترجمة Non-translatable Lists: وهي قائمة تُنشأ لتستوعب الأسماء والاختصارات التي لا تقبل الترجمة. قائمة التجاهل Ignore Lists: يوضع في هذه قائمة الكلمات المتجاهَلة أثناء التدقيق الإملائي، وقد لا تكون هذه الكلمات بحاجة إلى تدقيق، ولكن البرنامج يُظهر أنها مكتوبة بطريقة خاطئة، مما يجعلنا بحاجة إلى هذه القائمة. قواعد التجزئة Segmentation :rules هي قواعد تحتوي على آلية تقسيم المستند إلى شرائح، إذ يلتزم البرنامج بطريقة التقسيم المختارة في هذه القواعد حسب كل لغة. تكوينات عامل التصفية Filter :Configurations تحتوي هذه النافذة على كيفية تكوين المستندات التي تُترجم، كما أنها تقسم النصوص إلى قسمين، فالقسم الأول هو النصوص التي تحتاج إلى ترجمة، وأما القسم الثاني فهو النصوص التي لا تحتاج إلى ترجمة. قواعد مسار التصدير Export Path Rules: يتمكن البرنامج عبر هذه القواعد من تحديد المكان الذي ستصدر الترجمة النهائية إليه، ويعرض نتائج مقترحة لأماكن قد تود تصدير الملفات إليها. إعدادات ضمان الجودة QA Settings: يمكن للبرنامج عبر هذه الإعدادات أن يحدد ما هو بحاجة لفحص الجودة. إعدادات ذاكرة الترجمة TM Settings: يحدد البرنامج عن طريقها كيفية الحصول على مطابقات الترجمة من ذاكرة الترجمة حتى وإن كانت نسبة التطابق بسيطة. إعدادات LiveDocs: يحدد البرنامج كيفية الحصول على المطابقات من مجموعة مستندات LiveDocs حتى وإن كانت نسبة التطابق ضئيلة. قائمة الكلمات المتوقفة Stop word :Lists تُنشأ هذه القائمة لتستوعب المصطلحات التي لا تريد ترجمتها، مثل التي تبدأ بـ (ال) التعريف. اختصارات لوحة المفاتيح Keyboard Shortcuts: تسمح هذه الخاصية للمترجمين بإنشاء اختصارات خاصة بهم، والتي يمكن أن يستخدمونها داخل البرنامج بعد إضافتها. إعدادات بحث الويب Web Search Settings: يتمكن المترجمون عبرها من تمكين استخدام محركات البحث المختلفة عبر الإنترنت وذلك بعد إضافتها. إعدادات ضمان الجودة اللغوية LQA :Settings تسمح للمحررين بإضافة التعديلات والملاحظات إلى المستندات، كما تسمح لهم بتصنيف الترجمات. تقسيم الخطوط Font :Substitutions يمكن للبرنامج من خلالها تحديد الخطوط المناسبة في لغة الهدف. قوالب المشروع Project :Templates تساعدك على إنشاء مشروعك بالطريقة التي تناسبك، إذ تحتوي على أوامر نصية تحدد طبيعة المشروع. قواعد الترجمة الآلية MT Settings: يمكن الاتصال من خلالها بقواعد وبرامج ترجمة آلية تساعدك على الترجمة. توفير الإحصائيات يعمل برنامج memoQ على توفير الإحصائيات للمستخدم حول المستندات التي يترجمها، ويمكن الحصول على هذه الإحصائيات من خلال قائمة Documents من نافذة Statistics، وتفيد هذه الإحصائيات في تقدير الوقت اللازم للترجمة وتحديد المدة الكافية لإنجاز المشروع. إضافة ذاكرات ترجمة وقواعد مصطلحات خارجية يتيح برنامج memoQ للمستخدمين إمكانية إضافة ذاكرات ترجمة وقواعد مصطلحات من موارد خارجية متصلة بالإنترنت لتسهل على المترجمين سير عملية الترجمة وتوفر الوقت والجهد، وذلك عبر قائمة Options في قائمة memoQ الرئيسية للبرنامج. إمكانية ترجمة الصور داخل المستندات يتيح برنامج memoQ للمستخدمين إمكانية ترجمة الصور عبر تفريغ الكتابة الموجودة فيها في نص ومن ثم ترجمته، ولكي يتسنى لك ترجمة الصور الموجودة في الملفات بصورة سليمة، عليك أن تستورد الملف من خيار Import with Options، ومن ثم اختيار Import embedded Images، ومن ثم يجب نسخ الكتابة الموجودة فيها من خلال أداة Transcribe Images من قائمة Documents، ومن ثم ترجمتها بالطريقة الاعتيادية. الكتابة المقترَحة Predictive Typing يوفر برنامج memoQ ميزة الكتابة المقترَحة، إذ يقترح البرنامج كلمات في خلية لغة الهدف المحددة، ويمكن للمترجم إكمال الكلمة حسب ما يريد، ويمكن الحصول على الاقتراحات عبر أداة Translation Settings من قائمة Translation. إمكانية التحكم في الخط في لغة الهدف يتيح البرنامج للمستخدمين ميزة التحكم بالخطوط داخل نص لغة الهدف، فيمكن كتابة الخط بالنمط الثخين أو الخط المائل أو حتى المسطّر، كما يمكن تصغير الخط وتكبيره، أي مثل برنامج مايكروسوفت وورد Microsoft word تمامًا، ويمكن الوصول إلى هذه الميزة عبر أداة Format من قائمة Quick Access. في الختام ظهر برنامج memoQ كأحد برامج الترجمة بمساعدة الحاسوب، وقد لاقى انتشارًا واسعًا بين المترجمين لامتلاكه العديد من المزايا، وما زالت تسعى الشركة المطورة لإضافة المزيد من التحديثات بناءً على احتياجات المترجمين لمزيد من الميزات الحديثة ولزيادة التنافس بين الترجمة البشرية والترجمة الآلية. اقرأ أيضًا إنشاء مشروع جديد وخطوات الترجمة الأولى في برنامج memoQ أدوات إضافية وخصائص مفيدة عليك أن تعرفها في برنامج memoQ دليل استخدام برنامج memoQ تطبيق عملي لترجمة مقالة من الويكيبيديا باستخدام برنامج MemoQ
    1 نقطة
  33. قوم بإنشاء circle class تحتوي على الدوال التالية: 1- Constructor (__init__) تقبل نصف القطر كمدخل 2- getArea() و التي تقوم بعرض مساحة الدائرة : PI * نصف القطر * نصف القطر 3- getDiameter() و التي تقوم بعرض قيمة القطر كامل 4- getCircumference() و التي تقوم بعرض محيط الدائرة: 2*PI*نصف القطر 5- getInfo() تقوم بعرض مساحة و قطر و محيط الدائرة
    1 نقطة
  34. أرجو أن تبدأ بكتابة البرنامج و سنساعدك إن حصل معك أخطاء.
    1 نقطة
  35. كيف يمكن إنشاء "نموذج" و"سكربت" خاص برفع الملفّات في "PHP"؟ و كيف يتم وضع قيود على الرفع؟
    1 نقطة
×
×
  • أضف...