• الإعلانات

    • فيصل الحربي

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

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

Khaled Alshaya

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

    2,052
  • تاريخ الانضمام

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

مشاركه بواسطة Khaled Alshaya


  1. شكراً جزيلاً, ربما يكون المؤتمر الأفضل في العالم حول ++C :cool:

    فقط ملاحظة بسيطة, ++C الجديدة تم نشرها بشكل رسمي من قبل ISO قبل بضعة شهور.

    إضافة أخرى, أعتقد أن Herb Sutter قائد حقيقي لـ ++C في Microsoft. قبل فترة مر موضوع دعم VCpp لـ C++11, و كيف أنه متأخر من ناحية اللغة و متقدم ناحية المكتبات مما خلق مشاكل كثيرة مقارنة بـ GCC الذي تقدم على الجميع في طرح الميزات الجديدة تقريباً 90% من اللغة. الذي أضافه Herb في هذا المؤتمر هو أن Microsoft لن تلتزم بجداولها الزمنية بخصوص Visual Studio و سيتم تحديث VCpp في فترات أقصر لدعم الميزات أولاً بأول. و هذا شيء رائع سيعيد VCpp للريادة على منصة Windows.

    3

  2. هل هناك مثال على مشكلة يمكن تقسيمها ومشكلة لا يمكن تقسيمها

    لو أن لديك مجموعة من الناس, و تريد تقسيمهم إلى مجموعات بحيث أن عناصر أي مجموعة ليس لها علاقة بالمجموعة الأخرى على الإطلاق. هذا قد يستعمل في الـ Social Networks لتقسيم الأعضاء إلى unique subsets. هذا الأمر يمكن حله بالتوازي على CUDA أو على supercomputer بسهولة, بينما لا يوجد حل يمكن أن تصفه بأنه efficiently distributed. في النهاية map/reduce اخترعت لبناء distributed supercomputers, لأن كم البيانات هائل بحيث أنه لا يوجد supercomputer واحد حقاً يمكنه معالجة هذا الكم من البيانات.

    مثلاً سأقوم بتطوير تطبيق ويب مثل twitter يخزن الحالات status و يبحث عنها .. أعرف جيداً عمل هذا من خلال Relational ، ولكن كيف سيتغير الوضع مع Hadoop .

    بالطبع لو كنت صاحب Twitter :P فسيكون لديك أكثر من خادم! عندما تريد تلخيص المعلومات كلها أو جزء كبير منها, لن تستطيع جمعها في مكان واحد للعمل عليها, و ستضطر لتلخيص المعلومات محلياً ثم جمع النتائج, هذه هي map/reduce ليست سحراً و لا شعوذة, الفكرة أنه لو كان لديك 20000 خادم هل يستغلها الـ framework حقاً, أم أنك تقوم بإهدار مواردك في عمليات الاتصال الغير لازمة على افتراض أن الخوارزمية التي تعمل محلياً هي أفضل ما وصلت إليه؟

    1

  3. شكراً أخ عبدالله على الموضوع, درس رائع على الواقف :)

    ربما هو تحدث عن.. عدم ملائمة ال RDBMS ... الحاجه لنظام ملفات خاص (كما مع جوجل)

    جوجل تستخدم نظام ملفات خاص لتطبيقاتها الموزعة لكي تحصل على أعلى أداء مقابل كل قرش يدفعونه في هذه الأجهزة. الفكرة من وراء Hadoop هي نفس الفكرة من وراء نظام الـ map/reduce المستخدم في جوجل. الفكرة نفسها سهلة بمجرد أن تفهم الأساسيات و لكن هناك الكثير من القرارات "الهندسية" للـ framework التي ستعقد المسألة لو لم تفهم الأساس.

    ببساطة Map/Reduce عبارة عن دالة يتم تطبيقها على مصفوفة من المتغيرات(قد يكون كل متغير مجموعة من العناصر) و هذا هو الـmapping. ثم يتم تطبيق عملية اختزال للحصول على المطلوب, و عملية الاختزال عبارة عن دالة أخرى تطبق على نواتج الـ mapping و هذا ما يقصد به الـ reduce. خذ مثلاً, لو أن لديك مليون صفحة. و كان لديك عشرة أجهزة, و كل ما تريده هو معرفة تكرار كل كلمة موجودة في تلك الصفحات. سيكون لديك الدالة التالية افتراضاً:

    hashtable<string, int> count_words(Page page);

    الآن هذه الدالة ستعمل على العشرة أجهزة, بحيث أن كل جهاز يعد ما استطاع من الكلمات في الصفحات التي تصل إليه. هذا هو الـ mapping, أي قمنا بعمل mapping من الصفحات إلى عدد الكلمات فيها. الخطوة التالية, هي اختزال تلك المعلومات لأنها ما زالت مجزأة, بحيث أن لدينا عملية أخرى و هي جمع الـ hashtables التي لدينا مع بعضها البعض reduction:

    hashtable<string, int> combine_hashtables
    (hashtable<string, int> first, hashtable<string, int> second);

    ربما يقوم كل جهاز بطلب الـ hashtable الخاص بالجهاز الذي يليه, و هكذا حتى تتم العملية و نحصل على hashtable يحوي تكرار المليون صفحة التي وزعت على الأجهزة.

    في النهاية, إذا استخدمت framework فأنت تكتب الـ mapping function و الـ reduction function و تترك الباقي(تقريباً) للـ framework لكي يوزع العمل بالشكل الأفضل.

    الآن عندما تنزل من عالم الأحلام و النظريات, فإنك تحتاج إلى Framework لنقل البيانات, و لنقل الكود و جدولة توزيع المهام scheduling و fault tolerance و هذا ما توفره هذه الـ framework. فكرة الـ map/reduce كلها يمكن تلخيصها في التالي إذا أردت أن تكون دقيقاً:

    mimetex.cgi?F(X) = \sum_{i=0}^\infty {f(

    قواعد البيانات العلائقية, قد تستخدم في الأجهزة كـ implementation detail و لكن لا تعتقد أبداً أن المشكلة فعلاً في تعلم إحدى تلك الـ frameworks لكي تصل إلى النجوم. المشكلة كلها في إمكانية حل المسألة التي لديك بحيث أن المشكلة يمكن أن تجزأ إلى أجزاء أصغر منفصلة عن بعضها "يمكن جمع النتائج فيما بعد", و الباقي أمور روتينية!!! عندما تكون أجزاء المشكلة تعتمد على أجزاء أخرى أي هناك dependency فإنك لن تستفيد أي شيء من وراء الـ map/reduce و ستحتاج لشراء supercomputer لحل المشكلة :blush:

    9

  4. أخي قم باستخدام ThreadPool و دالة الـ Response التي تجيب على كل Request ثم عند وصول أي Packet جديدة قم بعمل submit للـ request في دالة الـ response في الـ ThreadPool. إنشاء Thread لكل طلب جديد هي عملية غير مجدية, و ليست طريقة جدية فعلاً لأن معالجة الطلب و إرسال الرد قد يكون أبسط من إنشاء Thread و إنهائها في كل مرة.

    الطريقة الأفضل هي باستخدام Asynchronous Sockets و عندها يصبح من السهل جداً استخدام العدد الذي تحبذه من الـ threads. و لكن سيختلف تصميم البرنامج جذرياً.

    تحياتي..

    1

  5. الله يحييك أخي عيسى,

    ففي تونس مثلاً/ عندما اشعل البوعزيزي النار في نفسة، ماذا كانت حال الشبكات الاجتماعية وقتها؟

    الشبكات الاجتماعية مستخدمة في السياسة قبل الثورات العربية, و أكبر دليل هو استخدامها في حملة Obama بشكل كبير. بالنسبة لتونس فحسب معلوماتي المتواضعة نسبة الثقافة مرتفعة في هذا البلد الجميل, لذلك كان من الطبيعي أن تكون وسيلة الاتصال الأنجع في تلك الحالة هي الشبكات الاجتماعية. و لاحظ أن YouTube برأيي الشخصي أكثر تأثيراً من Facebook. الناظر بدقة للموضوع يجد أن Facebook أحاطته هالة من الخرافات أن كل شيء يتم عليه, بينما الحقيقة أن Facebook كان عبارة عن وسيلة نشر للفيديوهات :) بينما تنظيم المظاهرات كان عفوياً عندما تتحدث عن بداية الثورات, أما ما تلا ذلك فربما تم تنظيمه عبر مجموعات Facebook.

    بالنسبة لمصر, فانقطاع الخدمة خلال جمعة الغضب دليل على أن التنظيم لم يكن عبر الشبكات الاجتماعية بالدرجة الأولى, إنما هي لحظة غضب فعلاً!

    الحالة الأكثر تقدماً برأيي هي سوريا, لأن الشبكات الاجتماعية هي الوسيلة الوحيدة للتواصل الفعلي. ربما تكون الثورة الوحيدة التي اعتمدت على الشبكات الاجتماعية بشكل رئيسي, و حتى الشرارة الحقيقية كانت من درعا و هي لحظة الانفجار و لم تكن منظمة عبر الشبكات الاجتماعية رغم أن أول المظاهرات في حمص و دمشق كانت فعلاً منظمة عن طريق الشبكات الاجتماعية. مرة أخرى, يوم 18 ابريل في حمص خرجت حمص و ضواحيها ربما أكثر من مليوني شخص و كانت عبارة عن تشييع جنائز بالمئات التقت في وسط حمص. هذه أيضاً لم يتم تنظيمها عبر الشبكات الاجتماعية, و تعتبر أكبر مظاهرة في حمص كلها قبل تقطيع أوصالها بالحواجز و القناصين قطع الله أوصال فشار الفسد.

    كذلك هل لعبت الشبكات الاجتماعية ادواراً مختلفة لكل بلد؟

    بالتأكيد, في سوريا كان الاعتماد شبه كلي على الشبكات الاجتماعية, و بدرجة أقل في مصر و تونس و تليها اليمن و ليبيا.

    بالنسبة للارقام هل فعلاً هناك فقط 17 مليون مستخدم عربي للشبكات الاجتماعية؟

    العدد في ازدياد رهيب, و لكن الاحصائية حديثة لعام 2011. و لكن لا استغرب تضاعف العدد مع بداية 2012.

    سؤال غبي/ لماذا لاتقطع الانترنت وتريح مخك انت يامصر او سوريا او ليبيا؟

    في سوريا يستخدم الثريا بشكل كبير في تحميل المقاطع خصوصاً في المناطق المنكوبة. في المكان الذي ولدت فيه مثلاً, قطعت الكهرباء و الماء لأيام عديدة متواصلة. أصلاً أصبحت العادة أن تأتي الكهرباء و المياه نادراً في حمص, خصوصاً عندما تتحدث عن مناطق مثل باب عمرو.

    تحياتي...

    1

  6. لا أعتقد أبداً أن الشبكات الاجتماعية كانت سبباً في التغيرات السياسية الحاصلة, بل على العكس كانت زيادة استخدامها نتيجة لهذه التغيرات الطارئة في وقت قصير. كانت في الزمان و المكان المناسبين باختصار! في الحقيقة أنها استخدمت كوسيلة اتصال أساسية أو ثانوية, على حسب ضبط الحكومات لسياسة الوصول! أتفق مع M.B.O في هذه الأمر, و كنت قد كتبت وريقات حول الموضوع لمن يهمه الأمر حول تاريخ و تطور الشبكات الاجتماعية في العالم العربي. هذه مسودة وليست نسخة نهائية, و لكن صالحة للقراءة. خلصت في النهاية إلى التالي:

    CONCLUSION

    Social networks are becoming main-stream in the Arab world. The number of internet users is increasing, hence the number of social networks users. Social networks are used as a main or an alternative channel of communication for personal communication, business relationships or political campaigns. The issue of privacy is an important obstacle that can’t be solved without real attention from users. Technological challenges are still in the way, but the advancement in architectures is alleviating these challenges. Although there are many social networks now days, Facebook, YouTube and Twitter are the most popular in the Arab world. It is expected that the introduction of broadband connections in the poor parts of the Arab world, would allow more users will join social networks.

    هناك قطعة عن التأثر و التأثير على السياسة:

    POLITICS AND FREEDOM OF SPEECH

    The “Arab Spring”, revolutions, has brought the attention of millions of Arab citizens to the viable benefits of social networks as an alternative communication channel and in some cases as the only mean of communication. Social networking in general, is considered the tool of choice for promoting freedom of speech and human rights in the Arab world and in Egypt especially which is ranked fourth with respect to the number of users on Facebook (Kim, Jeong and Lee).Tal Al-Mallouhi is a 19 years old female who was arrested at the age of 15 because of her writings on Facebook about the lack of freedom of speech and the dictatorship of Bashar Al-Asad in Syria (Ghannam). In the USA social networks has been used in more advanced ways as in the case of promoting election campaign. For example, Obama’s campaign for presidency used social networks to a large extent and it has been shown to be an effective way of promotion (Kim, Jeong and Lee). The nature of social networks allows users to generate content that can spread quickly across the world, unlike traditional media where the control is not in the hand of consumers in addition to the low or no cost of generating content on these networks.

    جانب آخر مثير للاهتمام, و هو أن العلاقة بين ثقة المستخدمين عند إعطاء معلوماتهم, و القابلية لمقابلة الشخص الآخر في الحقيقة متضادان! بمعنى أن المستخدمين يضعون بيانات حقيقية أكثر في Facebook و لكن مستخدمو MySpace يتقابلون أكثر في الحقيقة, و السبب هو أنه عند حصول مشكلة تكون المشكلة أصغر في حالة MySpace لأن هناك معلومات أقل عن الشخص و بالتالي خوف أقل من المشاكل و إمكانية التتبع!!!

    أود سماع آراء من لديهم وقت حول الورقة, من فضلكم بالطبع...

    The History and Evolution of Social Networking in the Arab World.pdf

    4

  7. بصراحة S2 إبداع, و أندرويد برأيي هو المستقبل, خصوصاً مع بزوغ فجر النسخة الرابعة التي ستوحد النسخة الثانية الموجهة للـ smart phones و النسخة الثالثة الموجهة للـ tablets. أكثر من أكرهه حول جميع الـ smart phones هو البطارية!

    البدء في برمجة Android سهل جداً مقارنة بالبدء في برمجة أي نظام آخر(برأيي). اللغة Java و هي لغة مشهورة جداً حتى العبدلله يتقن ما تيسر منها. المكتبات مكتوبة بشكل جيد و التوثيق ممتاز. لا أدري إن كانت MSDN تتفوق في هذه النقطة. يمكنك استخدام بيئة التطوير Eclipse و لكنني فضلت تعلم البداية باستخدام أدوات الـ framework الأساسية, و هي منظمة جداً برأيي.

    0

  8. هل هناك تطبيقات عملية ( تجارية ) على هذه النظرية ام انها لا زالت في طور البحث و دراسة ؟؟

    عزيزي, الحوسبة الكمية لم ترى النور بعد حتى في الأبحاث. الموضوع ينقسم إلى نظرية الحوسبة الاحتمالية(و هذه نوع منفصل من البرمجة المتوازية, لا تشابه البرمجة المتوازية الكلاسيكية!). و هناك تطبيق هذه النظريات على الذرات و مطابقة احتمالية وجود الالكترون في حيز ما من الذرة و إمكانية تحوير ذلك الاحتمال. دع عنك التطبيق, فالنماذج الموجودة تشابه أن يكون لديك حاسوب كل ذاكرته 8 بت أو في هذه الحدود!!! حتى بالنسبة للجزء النظري, كما يقولون الـ dirty work بالنسبة للرياضيات التي ستجعل تطبيق الأمر ممكنا لم يبدأ بعد بشكل حقيقي.

    كيف سيكون التمثل المقابل في كيوبت ؟

    لكي تفهم الموضوع, كما في الحوسبة الكلاسيكية, يمكنني أن أخبرك من ناحية رياضية و يمكن أن تنظر للأمر من ناحية هندسية. من الناحية الرياضية, فلو تصورنا أن لدينا ثلاث بتات, فإنه في الحوسبة الكلاسيكية, هذه الثلاث بتات تكون عنصراً في مجموعة مكونة من ثمانية عناصر:

    S = { 000,
    001,
    010,
    011,
    100,
    101,
    110,
    111 }

    في حالة الحوسبة الاحتمالية فإن كل عنصر في تلك المجموعة يعطى احتمالية. بالتالي فإن الثلاث بتات قادرة على تمثيل ((كل)) الاحتمالات. الخوارزمية تعمل على جميع العناصر للوصول إلى النتيجة المطلوبة و إعطاء الاحتمال الأكبر لأحد العناصر داخل تلك المجموعة. هذا يعني تغيراً جذرياً في الخوارزميات لأن الخوارزميات لم تعد تعتمد على "حالة" و إنما تعمل على احتمال كون الثلاث بتات في حالة معينة, و اختيار حالة من تلك الحالات observed state على أنها ناتج الخوارزمية. هندسياً, يمكنك التفكير على أننا نريد تغيير الـ configuration للالكترونات في الحاسوب الكمي :)

    عموماً, كلامي غير دقيق لأنني حقيقة لم استطع فهم الموضوع أكثر من ذلك, و يكفيني شرف المحاولة خصوصاً عندما تعرف أنك تحتاج إلى أن تكون نينجا في الرياضيات لكي تفهم أبسط الخوارزميات و كيف يمكن تطبيقها على حاسوب كمي :blush:

    تحياتي...

    3

  9. يعني أستطيع استخدام asio في هذا الموضوع بدون أي مشاكل مستقبلا؟

    ماهي المشاكل التي تتوقع حدوثها؟

    يبقى عليك كتابة منطق البرنامج, و باعتقادي أنك ستحتاج لمكتبات عديدة بالإضافة إلى asio مثل Boost.Serialization إذا كنت تقوم RPC مبسط. ماهو بالضبط البروتوكول الذي يقبع فوق tcp(هل ستستخدم udp أصلاً؟!). هناك مكتبات في Boost ستسهل عليك كثيراً في هذا المجال, و لكن اطرح وظيفة التطبيق ربما يكون هناك مكتبات مساعدة لوظيفة البرنامج و ربما بشكل عام للمهام الأساسية.

    0

  10. الـ defacto بالنسبة للـ transportation layer في عالم ++C هي asio. و هي تدعم إنشاء اتصالات مشفرة باستخدام OpenSSL حسبما أذكر. المكتبة اتفق على أنها المكتبة القياسية القادمة للـ sockets و لكنها defacto حالياً.

    0

  11. أخي العزيز, الموضوع لا يمكن الحديث عنه بهذه البساطة. لأن تمدد النظام يمكن أن يكون طولياً و يمكن أن يكون عرضياً. التمدد على مستوى النظام نفسه في الغالب سيكون اتوماتيكياً بمجرد إضافة موارد جديدة. المعضلة هي استغلال الموارد المضافة بشكل كامل أو قريب ذلك. يمكنك تخيل وجود وحدات حسابية متصلة ببعضها البعض. فإذا قمت بإضافة معالج جديد فهذا تمدد طولي في نفس الوحدة الحسابية, في التمدد العرضي يتم إضافة وحدات حسابية جديدة.

    الطريقة المثلى للتمدد الطولي, هي ببناء asynchronous system بحيث يكون هناك piping أو إذا كان نظاماً ضخماً كفاية ستجد أن هناك نظام مستقل يرتب عملية تدفق البيانات. التمدد العرضي, يكون بأن تصمم النظام حسب معالجة البيانات, بمعنى أنك تحدد تدفق البيانات Data Flow. ثم تقوم بإسناد الوحدات الحسابية و تكوين نظم تابعة للنظام الأساسي في كل node بحيث تقوم بمعالجة البيانات.

    هذه الفكرة كـ best practice. و لكن ستجد الكثير من التصاميم و كل نظام و له احتياجات و متطلبات خاصة. Google أحد الأمثلة التي تتبع التصميم الذي تكلمنا عنه. و لكنهم تخطوا المبادئ بشكل واضح فلديهم نظام ملفات خاص لهذا النظام!!!!!!!

    عندما تخرج من التمدد الطولي shared memory, إلى التمدد العرضي distributed memory فستحتاج للتفكير في وسائل نقل البيانات, و الطريقة المثلى للتواصل بين الوحدات الحسابية, و هذا موضوع لوحده!

    تحياتي...

    3

  12. عزيزي, الـ Intrinsic هي دوال موجودة في المترجم نفسه(و ليس في المكتبات). بمعنى أن المترجم سيقوم بتحليل الكود و إدراج قالب يقوم بتحويره ليحصل على أفضل نتائج. الفرق بينها و بين الدوال, أن المترجم لا يتدخل في تحوير كود المكتبة للحصول على أفضل نتائج, أي أن تحليل الدوال مثله مثل تحليل برنامجك. بالنسبة للـ inline فهي مشابهة في النتيجة, و لكن كما قلنا عملية الـ inlining هي عملية عمياء, بينما الـ Intrinsic عبارة عن دوال يتم تطبيقها بتحليل الـ context للكود الذي يناديها. عموماً, لا تشغل بالك إلا إذا كان لديك حاجة مخصوصة لها مثل استخدام SSE أو أن أحد دوال مكتبات C لا يعطي نتائج مرجوة. الـ Intrinsics قليلة جداً مقارنة بدوال مكتبة C, و في الغالب عبارة عن مجموعة أساسية من الدوال.

    0

  13. شكراً لجميع المشاركين حتى الآن, نود أن نرى المزيد :)

    جميل أستاذ خالد، لكن لطالما تسائلت - في نفسي- عنك أنت نفسك وعينك، فلم لمْ تبدأ بنفسك

    أولاً أنا لست أستاذاً, ثانياً ماذا تريد أن تعرف عن طالب فاشل :lol: أود سماع الذين يعملون, و لا ضرر أيضاً من سماع الذين في طور الدراسة مثلي(طالت و هي قصيرة بالنسبة لي!).

    اتمني العمل على شاشتان لان ذلك سيوفر كثيييييرا من الوقت ولكنه غير متوفر للأسف.

    صدقني لن تندم مهما صرفت على الأمر حتى لو من جيبك, لا أتذكر كيف كانت حياتي قبل أن أستقر على جهازي الحالي. دائماً ما أجد الأمور معقدة بشاشة واحدة, و أتمنى تجريب ثلاث شاشات متساوية في الحجم, أفكر في شراء ثلاث شاشات مقاس 21 و لكن في المستقبل إن شاء الله.

    post-89451-059071700 1322087257_thumb.jp

    1

  14. السلام عليكم و رحمة الله و بركاته....

    منذ زمن طويل لم نشاهد استفتاءً عاماً في المنتدى. شاركونا خبراتكم و أدواتكم المفضلة سواء في العمل أو في أوقات الفراغ. لا تضع بيانات عن مكان عملك, مجرد وصف بسيط لعملك أنت, و دورك في العمل. بالنسبة للهواية, فنرحب بأي روابط لمشاريعك الخارجية و وصفك لبيئات التطوير التي تحب العمل عليها. الاستفتاء ليس فقط على لغات البرمجة, و لكن على جميع جوانب البيئة, مثلاً ماهو نظامك و كم شاشة تستخدم, و ماهية التطبيقات التي تنتجها في العمل أو كهواية و ماذا عن محررك المفضل, و عن لغات البرمجة المستخدمة, و ماهي الأدوات المساعدة التي استخدمتها مثل الـ Source Control و خلافه مما لا يتسع تعداده. شاركنا المعرفة :)

    5

  15. فقط للإضافة, Stroustrup اطلع على كود Photoshop و هذا رأيه!

    Q: Please name the coolest and lamest programs ever written in C++, and say what worked or didn't work about them.

    First, what is a program to most people is a complete system, not code. Second, there is not concept of 100% pure C++. C++ was designed to provide part of systems writing in a variety of languages, so other languages play parts of the systems I mention: Google – can you even remember the world before Google? (it was only about 5 years ago). What I like about it is its performance under severe resource constraints. There are also some really neat parallel and distributed algorithms. The first browsers – can you imagine the world without the web? (it was only about 10 years ago). Other programs that I find “cool” are examples of embedded systems code: the scene analysis and autonomous driving systems of the mars rovers, a fuel injection control for a huge marine engine. There is also some really cool code in Photoshop’s image processing and user interfaces. Again, what I like from a code perspective is the way these programs are structured to be reliable and responsive under pretty harsh resource constraints. Some of Photoshop’s ways of managing internal complexity (e.g. GUI layout and access from image processing algorithms to the pixel data) are just beautiful.

    0

  16. بالعكس يعتبر عبئا علي بسعر الترخيص المرتفع والمميزات التي لا أرغب بها.. بينما جمب يؤدي الغرض ومجاني.

    صحيح GIMP مجاني و هذه ميزة بالفعل. و لكن بالنسبة لغنى المميزات في Photoshop, فتذكر أن أي مستخدم يستخدم 20% فقط من الميزات الموجودة في أي برنامج, و لكن الـ 20% دائماً ما تكون مختلفة :)

    0