• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

SudaNix

المشرفون
  • عدد المشاركات

    291
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة SudaNix

  1. السلام عليكم.   توجد وظيفة شاغرة (مطور أندرويد) للعمل في شركة برمجيات في الرياض. لمن يرغب بالتفاصيل او التقدم فليراسلني على البريد: ahmadessam[AT]outlook[DOT]com   والأولوية لمن هو مقيم بالرياض أو يملك إقامة قابلة للتحويل.
  2. السلام عليكم ورحمة الله وبركاته،   بحمد الله بدأنا دورة تعلم كيوت ، واكتمل الآن الدرس الأول (مكون من 7 فيدوهات). كيوت - لمن لا يعرف- هي إطار عمل يسمح لك بتطوير تطبيقات متعددة المنصات ذات واجهة رسومية باستخدام لغة سي++ يمكنك استخدام كيوت لتطوير تطبيقات تعمل على ويندوز،لينوكس،ماك. وأيضا يوجد دعم لمنصات الجوال مثل ميجو، سيمبيان، سيلفيش، بلاي بيري 10. ولاحقا سيتم دعم منصة الأندرويد وiOS. وبتعلمك كيوت ستزداد خبرتك وانتاجيتك في لغة سي++. وستتعرف على العديد من المفاهيم التي ربما لم تتعملها او لم تستخدمها في سي++، مثل تطوير الواجهات الرسومية، تطبيقات الشبكات، قواعد البيانات،  JSON/XML files ، Threading ، Event handling, وغيرها من المفاهيم. رابط الدورة/ هنا     في حالة كان لديك اي تساؤل، يمكنك وضع سؤالك على القسم: Cross Platform Libraries بالتوفيق
  3. نتمنى ان نرى مطورين اكثر مع هذا الإصدار. مطوري جافا سكربت ، مرحبا بك في عالم كيوت Hello World ! يمكنك ان تبدأ بكتابة تطبيقاتك بكل سهولة ، نعم كيوت توفر V8 JS Engine ستحتاج الى تعلم لغة بسيطة (QML) لوصف عناصر التطبيق. مطورين سي++ ، كيوت هي سي++ (هل هناك Infrastructure لا تعمل بسي++ :) ) ، لكن على عكس أغلب التقنيات يمكنك استخدام سي++ بجانب ال Exposed language (QML, JS) أو استخدام سي++ فقط مطورين اندرويد، iOS ، Meego/Mer/Sailfish ، BB10 : كيوت5 وصلت وسيتم الدعم لمعظم المنصات في 2013. مصممي فوتوشوب: يمكنكم البدء وتصميم واجهاتكم ومن ثم استخدام اداة خاصة لنقل الطبقات الى كيوت ، بعدها يمكنم العمل من خلال ال Integrated Designer. برنامج Hello World Write One, Compile Everywhere
  4. نعم، في كثير من الأحيان يكون استخدام if..else او switch دلالة على ضعف في تصميم البرنامج. بسبب ان الفئة التي تستخدمها تكون عرضة دائما للتعديل كلما تم اضافة خيار جديد في جملة if او switch، وهذا يخالف مبدأ مهم في تصميم الكائنات Open/closed principle فمثلا لو أن لديك مهمة معينة تقوم بادآئها في حالة كانت قيمة متغير ما هي X ، واذا لم يتحقق ذلك تقوم بتنفيذ مهمة أخرى. class Object { private: int m_task; public: enum { TaskA = 1, TaskB, TaskC }; void doAction() { if ( m_task == TaskA ) { // do action A } else if ( m_task = TaskB ) { // do action B } else if ( m_task == TaskC ) { // do action c } // else ... } }; لاحظ الان كلما أردت اضافة مهمة جديد يجب تعديل الكود السابق واضافتها. وهذا خطأ معروف. الحل هو بفصل المهام الى فئات ، واستبدال المتغير الذي يحمل قيمة الحدث بمؤشر يشير الى الفئة التي ستنفذ الحدث، وبالتالي ستفوض مهمة الدالة doAction وقت التشغيل الى أحد المهام. الحل الصحيح سيكون: class Task { public: virtual void doAction() = 0; }; class TaskA : public Task { public: void doAction() { // ... } }; class TaskB : public Task { public: void doAction() { // ... } }; class TaskC : public Task { public: void doAction() { // ... } }; class Object { private: Task* m_task; // created by ctor or factory class. public: void doAction() { m_task->doAction(); } }; اعتقد ان الشرح قد يبدوا معقدا ، نظرا لانه يصعب شرح الفكرة في مثال وهمي ، لكن كخطوة اولى هي فهم فكرة التصميم وأين تطبق غالبا ، بعد ذلك الكود سيكون بسيط. امثلة على هذا التصميم وهو نمط برمجي معروف يسمى Strategy Pattern : - تحديد طريقة ترتيب عناصر بناء على قيمة او اعدادات معينة او بناء على طلب المستخدم. - تحديد طريقة اطلاق النار لكائن في لعبة. - تحديد طريقة ال Authentication للدخول على موقع (Active Directory, Form, Web Service) - تحديد طريقة التأكد من البيانات Validation بناء على نوع القيم. لاحظ ان جميع الأمثلة تدور حول تعريف النمط ، وهو ان هناك مجموعة من الخوارزميات المفصولة يتم استبدالها وقت التشغيل. اتمنى ان يكون الشرح واضح ، ويمكنني كتابة درس حول الموضوع للتوضيح اكثر. وكاجابة على سؤالك: لا ، تقليل استخدام if..else او switch هو احد فوائد استخدام OOP واتباع أنماط التصميم. لكن هناك فوائد اكثر بكثير. بالتوفيق.
  5. استخدم ++g لعدة اسباب: - يدعم مواصفات سي++ القياسية. - يعمل على عدة منصات ، لا حاجة لدراسة أوامر مترجم جديد واستخدامها. - مفصول عن ال IDE ومحررات النصوص، وبالتالي يمكن استخدام اي محرر (Vim مثلا) ، واي نظام بناء (make مثلا). كخلاصة استخدم البرامج/الحزم التالية في تطبيقات سي++: VIM --- محرر نصوص. ++g --- المترجم. ld --- ال linker وهو يستخدم ضمنيا من g++. make --- نظام البناء git -- ادارة السورس كود boost test --- لكتابة unit test gdb --- ال debugger. بالتوفيق.
  6. سابقا استخدمت حزمة polyglossia لكتابة مستندات عربية. يمكنك الاستفادة منها: https://www.gitorious.org/eqraos/eqraos-doc ستحتاج الى XeLaTeX لترجمتها. بالتوفيق.
  7. وعليكم السلام ورحمة الله وبركاته ،، حقيقة لا أعلم عن النسخة التجارية. في النسخة LGPL يمكن الربط مع static lib ، لكن بنص الرخصة يجب على الأقل توفير ال object files للشفرة وذلك حتى يتمكن المستخدم من إعادة ربط ال object files مع نسخ حديثة من مكتبة كيوت. ستجد في الرابط التالي أحد افضل الكتب العربية عن رخص البرمجيات: http://chefrour.blogspot.com/2012/03/08.html والصورة التالية مقتبسة من الكتاب: وفي صفحة 10 ستجد شرحا عن الرخصة. بالتوفيق ،،
  8. يمكنك ان تكتب برنامج مغلق المصدر باستخدام النسخة المجانية ، ويمكنك بيعه أيضا. هذا لا يخالف نص رخصة LGPL. ما يخالف هو التعديل على شفرة كيوت نفسها وغلقها. في هذه الحالة عليك بالنسخة التجارية. وربما هناك حالة اخرى يجب فيها استخدام النسخة التجارية ، لكني لا استحضر الان جميع تفاصيل الرخصة. بالتوفيق ،
  9. حقيقة لا أدري لماذا تستخدمون النسخة التجارية ! لا فرق بينهم كأدوات تطوير. الموقع الرسمي للحصول على كيوت: http://qt-project.org/downloads ولا أذكر ان كان الل SDK في النسخ الأخيرة يحوي على MinGW او لا. على العموم في نافذة التنصيب اختر custom وتاكد من وضع علامة صح عليه ان كان موجود. كذلك قم بحذف Qt 4.7.x واستخدم آخر نسخة Qt 4.8.x أيضا ربما لن تحتاج الى أدوات سيمبيان وميجو لذا قمت بإزالة الصح منها. بالتوفيق،
  10. وعليكم السلام ورحمة الله وبركاته ،، موقع ديجيا يوفر النسخة التجارية . اما النسخة المجانية ، ستكون على الموقع الرسمي: qt-project.org شكرا للتنبيه.
  11. حاليا كيوت تم بيعها لصالح ديجيا ، وموقعها تحت التحديث ، وما قمت بتحميله هي النسخة التجارية. احذف كل ما قمت بتنصيبه ، وقم بالتحميل من هنا: https://qt-project.org/downloads اختر Offline installer - 1.7 GB في ويندوز. وفي خيارات التنصيب ، اختر custom او ما شابه ، المهم تأكد من استخدام Qt 4.8.X MinGW ، وتأكد من اختيار حزمة MinGW. فقط :)
  12. كما يبدوا أن النسخة تعمل لديك. قم بانشاء مشروع جديد ، مثلا Qt Widget application ، وتأكد من ان مسار المشروع مكتوب باللغة الانجليزية ولا توجد مسافات (ربما كانت هي سبب المشكلة). بالتوفيق ،
  13. بالاستسلام هكذا لن تتعلم شيء. يمكن المشكلة فعلا من jom. وبصراحة لم اتعامل معها ، لاني استخدم كيوت مع MinGW وليس كيوت مع MSVC tools كما تفعل انت. الحل كما ذكر لك الاخوة بتركيب اخر اصدارة من jom. او الحل الثاني - وهو ما انصحك به- تحميل ال SDK ، وعند التنصيب اختر custom وتأكد من تعطيل نسخة كيوت الخاصة ب MSVC وتفعيل نسخة MinGW ، وكذلك تأكد من وضع صح على MinGW tools أيضا قم باختيار نسخة Qt 4.8 ، لا داعي لتركيب 4.7.x هكذا لن تقرأ كلمة jom مجددا :) ، فحزمة MinGW تستخدم أداة make لبناء المشاريع. بالتوفيق ،
  14. جزاك الله خيرا ، امض على بركة الله. ويمكنك حذف هذه المشاركة والمشاركات الجانبية ان أردت اكمال الحديث في هذا الموضوع. بالتوفيق،
  15. استخدمه منذ فترة كمحرر اساسي لتحرير الملفات النصية وكتابة اكواد c++,php,html,js,css. وافضل استخدام gvim في حالة العمل على مشروع ، مع تعطيل الواجهة الرسومية: set guioptions-=m set guioptions-=T واستخدم vim عندما اتواجد على التيرمنال لتحرير سريع فقط. هذه بعض ال plugins التي استخدمها دائما: matchit.vim NERD_tree.vim snipMate.vim supertab.vim surround.vim و استخدم الثيم molokai.vim وهذه صورة قديمة (حوالي سنة تقريبا) توضح gvim
  16. هذه الفيديوهات بالرغم من انها مفيدة ، الا انها لم تخلوا من بعض الاخطاء في المفاهيم. وبشكل عام لا بأس بها لكن يجب الانتباه الى الاخطاء عن طريق مراجعة ملفات توثيق كيوت بعد كل فيديو. بالتوفيق ،،
  17. طالما انك قد حللت المشكلة ما الهدف من عدد الأسطر؟ عموما ضع ما قمت به حتى يتمكن الأعضاء من محاولة تقليصها. بالتوفيق ،
  18. وصلت الى طريق مسدود مع c++

    لا توجد دروس كافية باللغة العربية ، ماهو موجود الان كتب منذ سنوات.. لذلك يجب القراءة باللغة الانجليزية. اقترح عليك كتاب : Introduction to Design Patterns in C++ with Qt (2nd Edition) وفي حالة كان لديك استفسار ، يوجد لديك هذا القسم ، وكذلك موقع كيوت العربي ، وايضا مجموعة مجتمع كيوت العربي على فيسبوك. وهنا رابط كتاب باللغة العربية: http://www.arabteam2000-forum.com/index.php?showtopic=252645 ايضا هذه الفيدوهات مفيدة (مكونة من عدة أجزاء): http://qt-project.org/videos/watch/programming-with-qt-quick-1-5-meet-qt-quick http://qt-project.org/videos/watch/getting-started-a-qt-fast-track-1-4-overview وهناك فكرة لانشاء دورة كيوت في رمضان .. سأقوم بالإعلان عنها في المنتدى في حالة البدء. بالتوفيق ،،
  19. وعليكم السلام ورحمة الله وبركاته ، Qt , QML, Qt Creator راجع: http://qt.nokia.com
  20. قم بفصل تعريف الفئة mybutton الى ملف منفصل ، وليكن تعريف الفئة في .h وتعريف الدوال الخاصة بها في .cpp. والسبب ان الفئة التي قمت بكتابتها تستخدم الماكرو Q_OBJECT، signals, slots، وهذا الماكرو يقوم بالتعامل معه مترجم داخلي في كيوت يسمى Meta Object Compiler (moc) . المخرجات من moc هو ملف سي++ تحمل نفس اسم ملف الرأس وتنتهي ب _moc.cpp. كحل اخر هو تضمين ملف moc مباشرة ، لكن الحل الاول هو الأفضل بكل تأكيد. بالتوفيق ،
  21. ما هى اقسام لغة C++

    اللغة نفسها لا توفر لك كل ما تحتاجه لتطوير تطبيقاتك ، لذلك ستحتاج الى استخدام عدة مكتبات لانجاز المهمة المطلوبة. اول مثال ستدرسه هو عملية الطباعة على الشاشة النصية console باستخدام الكائن cout ، وهذا بدوره يأتي ضمن مكتبة سي++ القياسية. ولكي تستطيع استخدامه يجب عليك جلب كود الإعلان عنه وهو موجود في ملف الرأس iostream : #include <iostream> بهذا الشكل ستنجح عملية الترجمة ، حيث ان المترجم استطاع ان يجد الإعلانات التي يحتاجها (علامة <> تعني ان هذه الملفات موجودة في مكان معروف لدى النظام، لذا لا حاجة بأن تكتب c:\\blabla...etc). ايضا ستجح عملية الربط وانشاء الملف التنفيذي exe ، حيث ان مترجمات سي++ تقوم تلقائيا بالربط مع المكتبة القياسية. لاحقا ان اردت الإستمرار مع سي++ ، ستحتاج الى مكتبات إضافية خلاف المكتبة القياسية حيث انها لا تحوي كل ما تريد ، مثلا في حالة اردت انشاء واجهة رسومية بسيطة ستحتاج الى استخدام اي مكتبة مخصصة لهذا الشي ولتكن Qt : #include <QMessageBox> بنفس المبدأ ، علامة <> تدل على ان المكان معروف وبالتالي لا مشاكل في الترجمة . ولكي تنجح عملية الربط يجب ان تخبر المترجم بذلك . هي اكواد مترجمة ، تم كتابتها لحل مشكلة ما ، وبدلا من ان تقوم بكتابتها مجددا كل ما عليك هو استخدامها . وتوجد العديد من المكتبات ، مثلا مكتبات مخصصة للتعامل مع الشبكات ، او الملفات ، او الواجهات الرسومية او التشفير .... الخ. أعرف ان الشرح غير واضح :lol: وتفضل بطرح اي سؤال. بالتوفيق ،
  22. نعم ، كل ما عليك هو تمرير الشفرة الى مترجم سي++ (g++ غالبا) ومن ثم قراءة النتيجة. وعليك استخدام الفئة QProcess لتشغيل المترجم.
  23. وعليكم السلام ورحمة الله وبركاته ، هذه الفيديو مفيدة ، لكنها تحمل الكثير من الأخطاء. لذلك ان اردت مشاهدتها عليك مراجعة التوثيق بعد كل فيديو. أيضا توجد فيديوهات نوكيا في مؤتمر مطوري كيوت السنوي http://developer.qt.nokia.com/videos بالتوفيق ،