إشترك معنا ليصلك جديد الموقع

بريدك الإلكترونى فى أمان معنا

16‏/09‏/2012

وادي التقنية: All items

وادي التقنية
إطلاق ألفا من اللعبة الاستراتيجية 0 A.D.
Sep 8th 2012, 10:48

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


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


Facebook Google Plus Twitter
إطلاق أوبن سوز 12.2
Sep 8th 2012, 09:31

بعد تأخر شهرين تقريبا عن الموعد الرسمي، انطلقت النسخة 12.2 من توزيعة أوبن سوز، النسخة الجديدة أتت محملة بالعديد من المميزات، ولعل أهمها هو السرعة، فهذه النسخة جاءت بنواة لينكس 3.4 التي جاءت بتسريع لطبقة التخزين أثناء عملة نقل الملفات الضخمة، و مكتبة glibc 2.15 التي حملت تحسينات كبيرة لأنظمة 64 بت، بالإضافة إلى تسريع عملية الإقلاع بواسطة اعتماد systemd الجديد.


من الأشياء الجديدة هو اعتماد نسخة XOrg 1.12 التي أتت بدعم اللمس المتعدد و التوزيع متعدد المقاعد، بالإضافة إلى كدي 4.8.4 و آخر مستجدات البرمجيات الحرة.
للاطلاع على جميع المميزات من هنا، ولتنزيل هذه الإصدارة من هنا.


Facebook Google Plus Twitter
مسابقة عرب نت للمبرمجين
Sep 4th 2012, 10:45

يسرنا الإعلان عن انطلاق مسابقة عرب نت للمبرمجين وهي سلسلة من المسابقات للمطورين ستقام في كل من بيروت، وعمّان، والرياض،و دبي والقاهرة. تهدف هذه المسابقات إلى تحديد أفضل المطورين في البلاد العربية لتقدم لهم فرصة الحصول على جوائز نقدية قيّمة وفرصة تمثيل بلادهم في تحدِ عرب نت الكبير للمبرمجين، والذي سيقام خلال قمة عرب نت الرقمية 2013.

ستتم مكافئة الرابحين في هذه المسابقات بما يصل إلى خمسة آلاف دولار أمريكي من جوائز نقدية، وتذكرة طائرة وإقامة في بيروت للمشارك في تحدِ عرب نت الكبير للمبرمجين، ولكن بالإضافة الجوائز المالية، ستوفر هذه المسابقات بيئة رائعة للمطورين العرب المميزين للتعرف على بعضهم البعض وإنشاء مجتمعات للمطورين في مدينتهم، وستكون بمثابة فرصة رائعة للمطورين للتقدم في حياتهم المهنية. لا تفوّت هذه الفرصة التي ستكون في مدينتك قريبًا!

يمكنك التسجيل للاشتراك بشكل مجاني من هنا ويمكنك إيجاد المزيد من المعلومات عن المسابقة من هنا .

 المصدر: عرب نت


Facebook Google Plus Twitter
من البيتات إلى الذرات : الإنتاج المشترك الثورة الصناعية الثالثة
Sep 2nd 2012, 19:36

ملاحظة : هذا المقال هي ترجمة قمت بها لمقال أجنبي مع إضافة معلومة إضافية في النهاية و إضافة الروابط و الصور طالما هي باذن من صاحب المقال و هي تحت رخصة مشاع الإبداع CC .

 

عنوان المقال

من البيتات إلى الذرات : الإنتاج المشترك الثورة الصناعية الثالثة

 

المقال

نيويورك عام 1964 .  لقاء عالمي بكامل المعدات ، و نحو 50 مليون شخص يقومون برحلة لمشاهدة ما هو المستقبل  . المعروضات في المعرض  تشكل قائمة طويلة من مجموعات من المنتوجات الاستهلاكية  ، من الأقلام حتى البرادات و السيارات .
واحدة من أغرب المنتوجات  صاحبها صانع صغير إيطالي يسمى Olivetti  تسمى programma 101 ، قد كان إبداع الفريق الصغير هذا هو  تطور كبير في التصنيع .

 

general electricقامت بشراء هذا المنتج بعد فترة قريبة من ظهوره لأول مرة  ، و اليوم هذه التقنية البسيطة تعرف على مستوى واسع بأول حاسوب مكتبي تجاري . لم تكن سوى 3 سنين حتى دخل موديل Hewlwtt Packard 9100A

 


من خمسين سنة من ذلك الحين ، الصناعة شهدت انفجار كبير لا يشبه أي شيء منذ الثورة الصناعية الأولى . صندوق ثقيل كان يوضع في مختبرات الأبحاث و الآن هو جهاز محمول  يوضع في جيوب الملايين على مدى العالم ، الانفجار هذا جزء منه يعود بفضل تطور العتاد ، و لكن بالحقيقة هو البرمجيات المعقدة المتنامبة و التي و صفها Marc Andreeson  إنها عملية أكل العالم ، و هذا يتجلى في المملكة الرقمية التي يعتمد عليها العالم . حيث بكتابة كود ما مبدع ، يستطيع عالمو الحاسب أن يغيروا الطريقة التي نعيش فيها حياتنا .
أن هذا الإبداع غير قابل للإنكار و الذي حدث في أرض الأصفار و الواحدات (0و1) .


نحن نرى تأثيرات متبقية و تطويرات على المملكة الفيزيائية ، و لكن بكلام عام ، العالم من حولنا لا يبدو مختلف كثيراً عن الذي كان قبل ثورة الحواسيب .
و قد وجد Peter Thiel هذا محبطاً ،فقد كان شعار شركته "أردنا سيارات طائرة ، عوضاً عنها حصلنا على 140 محرف " يتكلم في هذه الفكرة ، بأن الأشياء خارج الفضاء المحلي لصناعة الحواسيب لا تتحرك بسرعة .

الاقتصادي Tyler Cowen كتب كتاب بهذا الموضوع  معلناً أنه الركود العظيم و لكن هل هذا صحيح ؟ هل هواتفنا الذكية و الحواسيب اللوحية شغلتنا عن الحقيقة المرة و التي هي أنه ربما نحن لسنا أفضل مما كنا عليه من نصف قرن مضى ؟ أم أننا بالحقيقة نحن في نقطة الوصول للثورة الصناعية القادمة ؟

على مايبدو أننا في آخر خيار ، حيث أن الإبداع بالعالم الرقمي عالم " البيتات " بدأ يتمدد  إلى العالم الفيزيائي عالم " الذرات " . الشكر في ذلك للعالم الغني من الويب و التكنولوجيا التي ينخفض تكلفتها بشكل سريع . إن اقتصاد جديد يولد من "الأسفل-للأعلى" باستخدام التصنيع الشخصي المبتكر و هذا الاقتصاد في صعود .
إن حالة التصميمات الفنية ، و المقدرات القابلة للتكييف ، و الأدوات الحديثة سوف تقود لذلك ، و بالتالي ستكون الثورة الصناعية الثالثة ستكون شخصية و تعاونية .

ظواهر مبكرة من الاقتصاد الجديد هذا تُرى في منصات التمويل المشاع مثل Kickstarter و Indiegogo هذه المواقع تسمح لمنشئ العمل أن يجعل عملية جلب المنتجات للسوق أمر أكثر كفاءة بإعطاء الكمية المناسبة حيث أن طلبات الزبائن تتحكم كعامل أساسي لبناء الفكرة . باستخدام النماذج المسبقة و مكان بيع خارجي يمكن لهاوي/لهاوية يجرب في الكراج أن يبدأ ببيع آلاف الزبائن المتحمسين ، دون الحاجة لتكلفة إضافية . حالة كمثال في تلك المواقع :  Pebble Smartwatch جمعت 10 ملايين دولار بنموذج بلاستيكي و فيديو لمدة ثلاث دقائق يشرح مميزات المنتج ، فريق هذا المنتج سوية استطاعوا إطلاق 80 آلاف نسخة و العدد في ازدياد . هذه المواقع شكلت مصدر يقدم للناس حول العالم ميزانية موزعة لأحلامهم بمجرد ضغطات قليلة .


إذا كان التمويل المشاع هو الضوء لثورة العتاد ، فإن المصدر المشاع هو الظل ، و كذلك تصميم البرامج  هي أكثر قوة عندما تكون تعاونية ، فإن تجارب العتاد بشكل مشابه تكتسب القوة عندما تكون عصارة الذكاء الجمعي .
كما يقول  Bill Joy المؤسس المشارك Sun Microsystem " بغض النظر من أنت ، معظم الأشخاص الأذكياء يعملون لآخرين "
و هذه الديناميكيات مترسخة في مجتمع ناشئ لسيارات محلية ، حيث أكثر من 30 ألف محب للسيارات قاموا بتصميم و هندسة و بناء سيارة من الصفر ، الرئيس التنفيذي و المؤسس Jay Rogers أطلق على ذلك "الإنتاج المشترك"  و هذا المصطلح يمحو الخط بين الشركة و المستهلك .
طالما أن أدمغة يزداد دخولها على الإنترنيت و يستمر الازدياد ، فإن المجالات التي يمكن للمشاع أن ينشئها لا يحدها إلا الخيال البشري .

مع التقاء التمويل المشاع و المصدر المشاع ، بجانب ازدهار الطباعة ثلاثية الأبعاد ، إن التصنيع يصل إلى عصر جديد ، و الصناعات خارج الحدود سوف تتعرض للتشويش .
إن ثورة الحواسب قامت بدمقرطة الإعلام و الاتصالات ، و الثورة الصناعية القادمة سوف تقوم بدمقرطة البقية .


العتاد  يستمر في التزايد أسياً بالسعر و الأداء مع مزيد من التحصين لإمكانيات البرمجيات .
أصحاب أعمال أفراد  قد مُلّكوا إمكانية التغلب على مؤسسات خارقة حيث سيكون الإنتاج المشترك هو خط التجميع الحديث ، إنها ظاهرة حيث ليس فقط المجتمعات تتعاون و إنما أيضاً المنصات و التكنولوجيا تعمل معاً من أجل أن "تصنع" بطريقة لم تحدث من قبل ، و هذه الخلاصة قد ركز عليها برنامج Autodesk's free app 123D ، التي تسمح لك بأن تأخذ صورة لغرض فيزيائي و من ثم بكبسة زر تعدلها و تطبعها عبر طابعتك ثلاثية الأبعاد .

 

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

هذه كانت المقالة و سأضيف جزء صغير و هو توضيح لوضع الدول العربية من هذه الثورة الجديدة .
ماذا تتوقع أني سأقول ؟ تتوقع أني سأقول الدول العربية متخلفة لم تدخلها هذه المفاهيم بعد و سأردف بذلك التمنيات الدائمة على الجهات المختصة و الجامعات بالتنبه لهذا الأمر ، أليس هذا ما ظننته ؟

و لكن  أخطأت للأسف على العكس ، الدول العربية الحمد لله أخذت خطوات كبيرة في هذا المجال و لكنك أصبت في أنها ليس الجهات الحكومية- التي جاءت عليها العديد من الثورات في الربيع العربي- من قامت بذلك ، و سأوضح ذلك في بعض الدول التي بدأت بالفعل الاهتمام بالمفاهيم التي وردت في المقال و ذلك من خلال تواصلي و متابعتي لهم :

 


Facebook Google Plus Twitter
الإعلان عن Samsung Galaxy Note II
Sep 1st 2012, 07:56

طرحت Samsung أمس في الحدث الخاص الذي أقامته ضمن معرض IFA 2012 في برلين الجيل الثاني من جهازها الشهير Galaxy Note. لكن ما الجديد الذي يقدمه Galaxy Note II؟ يقدم الجهاز تحسينات عتادية ملحوظة وخاصةً من حيث المعالج والذاكرة، لكنه يقدم أيضاً تحديثات برمجية هامة يمكن أن نعتبر بأنها تفوق من حيث الأهمية التحديثات العتادية.

 المواصفات العتادية:

  • معالج رباعي النواة بتردد 1.6 غيغاهرتز من نوع Exynos 4412
  • 2 غيغابايت ذاكرة RAM
  • شاشة بقياس 5.5 إنش وبدقة 720×1280 بيكسل من نوع Super AMOLED HD
  • بطارية بسعة 3100 ميلي أمبير
  • سماكة 9.4 ميليمتر
  • متوفر بالسعات 16، 32، و64 غيغابايت
  • فتحة microSD حتى 64 غيغابايت
  • يتوفر بنسختين تدعمان شبكات الجيل الثالث والرابع
  • متوفر باللونين (الأبيض الرخامي) و (رمادي التيتانيوم) كما أطلقت عليهما سامسونج
  • أندرويد 4.1
  • كاميرا خلفية بدقة 8 ميغابيكسل وأمامية بدقة 1.9 ميغابيكسل

المصدر: أردوريد. ننصح بإكمال قراءة التغطية من هنا.


Facebook Google Plus Twitter
إطلاق Lazarus 1.0
Sep 1st 2012, 07:39

بعد سنوات من التطوير المستمر والعمل الدؤوب على نسخة 0.9، أعلن فريق تطوير مشروع Lazarus عن وصولهم لمعلم مهم في مسيرة التطوير عبر وصولهم لنسخة 1.0 من بيئة التطوير المرئية لنسخة باسكل الحرة. لازورس هي بيئة تطويرية متكاملة لتطوير السريع للتطبيقات مستوحاة من بيئة Delphi IDE متعددة المنصات وتدعم عدة معماريات.


يمكن عن طريق لازورس إنشاء تطبيقات سطح مكتب قائمة بذاتهاذات ملف تنفيذي واحد لا يحتاج أية اعتماديات أو مكتبات خارجية، وتتحلى في مظهرها بالسِمة الأصلية في النظام، أيضا لـ لازورس مكونات مدمجة للتعامل مع مختلف قواعد البيانات، الشبكات، إنشاء رسوم بيانية، المدخلات والمخرجات.

ولعل من الميزات الملفتة هي إمكانية استيراد مشروع Delphi إلى لازورس بدون أو بأدنى التغييرات والاستفادة من تعددية المنصات، حيث تم العمل مؤخرا على تحسين التوافقية مع Delphi.

لـ لازورس محرر رسومي يسمح بالهيكلة والتصميم السريع للتطبيقات، ومحرر آخر كتابي لبنائها، تمحيصها، وإصدارها.

المصدر: المجلة التقنية، بتصرف


Facebook Google Plus Twitter
مشروع صندوق الحرية يطلق أول نسخة من برمجياته
Aug 30th 2012, 16:45

أعلن مشروع صندوق الحرية إطلاق النسخة 0.1 من برمجياته والتي تأتي بتصور واضحة لمستقبل التطوير.

انطلق المشروع في بداية عام 2011 -بعد أن قرر نظام مبارك في مصر إيقاف الإنترنت- بهدف تصميم وتطوير جهاز يقوم باحتياجات التواصل الشبكي للمستخدم بأسلوب سهل يركزعلى حماية الخصوصية وتأمين الحرية.


Facebook Google Plus Twitter
مقدمةٌ عن البرمجة الكائنية object oriented programming OOP
Aug 29th 2012, 02:57

الشرح التالي هو تعديلٌ غير كبير لشرحٍ كنتُ قد كتبتُه لمجموعةٍ من زملائي في كلية الهندسة (في السنة قبل الأخيرة لنا فيها)، أشرح فيه نمط البرمجة المسمي بالبرمجة المَقُودة بالكائنات object oriented programming أو اختصاراً (البرمجة الكائنية). و قد وجدتُه بعد كل تلك الفترة التي نسيتُه فيها بسيطاً و ربما جيداً، فقلتُ أضعُه للناس ليستفيدوا منه. و ربما أقوم في المستقبل بإذن الله تعالي بتكملته و/أو التعديل فيه.


ماهية البرمجة الكائنية:

لكي نفهم ماهية و خصائص نمط البرمجة الكائنية oop paradigm يجب علينا أن نتفهم المثال التالي:

فلنفترض أننا نريد كتابة برنامجٍ يقوم بإنشاء خَمس حساباتٍ لخمسة أشخاصٍ في خمس شركاتٍ مختلفة، و يقوم بحساب مستحقاتهم المالية لدي كل شركةٍ بعد مرور ثلاث سنوات بمعرفة نسبة الربح السنوي المُعتادة من رأس المال. مع ملاحظة أن الكود سيكون بنمط البرمجة العادي (أي بدون استخدام الأصناف classes و الكائنات objects).


بملاحظة البرنامج السابق سوف نري أننا لتمثيل كل حسابٍ من الحسابات المالية استخدمنا متغيرين من نوع double:
الأول لتمثيل النقود التي يحتويها الحساب account
الثاني لتمثيل نسبة الربح profit
و تم تكرار هذا مع كل حسابٍ من الحسابات المالية، بالطبع مع تغيير أسماء المتغيرات للتمييز بينها.
إذاً فالسؤال المنطقي الآن: هل يمكنني كمبرمجٍ أن أختصر كل ذلك الكود ما دام الكثير منه مكرراً بالفعل ؟

و الجواب: نعم، و هذا هو نمط البرمجة الكائنية.
فكل ما نفعله في البرمجة الكائنية أننا نضم الكود الذي يُشكل مع بعضه وحدةً بنائيةً متكاملة (سواء أكانت متغيرات أم دوال) و نضعها في مكانٍ واحدٍ و نُطلق عليها إسماً مُعيناً، ثم نكتفي بعد ذلك بأن نأمر جهاز الحاسب بصنع نسخةٍ من ذلك الكود و نُطلق علي تلك النسخة إسماً خاصاً بها.
و بالتطبيق علي المثال السابق نري أن التقسيم الأَوَّلي لما سنحصل عليه سيكون كالتالي:

يمكن أن نُطلق علي الكود السابق إسم caccount اختصاراً لـcompany account و هو اسمٌ معبرٌ جداً عن وظيفته.

و في البرنامج الأساسي سنكتفي بطلب نسخ الكود caccount خمس مرات من مترجم اللغة بأسماء account1 account2  account3  account4  account5.


فماذا سيفعل الحاسوب بعد حجز أماكن لتلك الكائنات في الذاكرة ؟
سوف يقوم بعمل ما يلي تقريباً:




و بداخل كل وحدةٍ من الوحدات المحجوزة تُوجد المتغيرات الموجودة في الكود المُكرر الذي كتبناه من قبل و وضعناه جانباً.
و حينما نكتب في البرنامج:
account1.account
فإننا نعني المتغير account الذي هو من نوع double و المحجوز للنسخة المُسماة account1.
و هكذا مع:
account2.account
و غيرها.

و لو أردنا أن ننفذ دالة علي النسخة account1 بحيث تعملُ باستخدام متغيراتها الخاصة فإننا نكتب الكود التالي:
account1.methodname();
مثال:
account1.newaccount();

إلي الآن و الأمر مفهوم: يوجد لدينا كود مكرر في البرنامج فقمنا بكتابته مرةً واحدةً و أطلقنا عليه اسماً مُعيناً، ثم صنعنا منه ما نريد من نسخ.
و لكن هل هذا كل شيء ؟

لا.
فماذا لو أنني أردتُ إعطاء قيم ابتدائية للمتغيرات الموجودة داخل النسخ الجديدة في نفس سطر تعريف كل نسخةٍ منها، كيف يمكنني فعل هذا ؟
و ماذا لو أنني أردتُ منع الوصول المباشر للمتغيرات داخل النسخ، مثل الأمر:
account1.account = 1000;
و أردتُ أن تكون هذه المتغيرات متاحةً فقط للدوال الموجودة معها في الكود المُكرر فقط ؟
إلي آخر تلك الأسئلة التي تُوضح إجاباتُها خصائصَ نمط البرمجة الكائني.


سوف نقوم بتوضيح إجابات تلك الأسئلة فيما يلي، و لكن أولاً سوف نقوم بشرح المُصطلح العلمي المقابل لبعض الكلمات التي ذكرناها من قبل أثناء الشرح:




و لنجب الآن عن الأسئلة التي سبق و طرحناها.
أما كيفية إعطاء حقول البيانات قيماً ابتدائية في نفس جملة التعريف فيتم عن طريق ما يُسمي بالمُشَيِّد constructor، و هو دالةٌ لها نفس اسم الصنف class بدون أي نوعٍ من المُخرجات (ليس حتي void).
و ينقسم المُشَيِّد إلي نوعين:
- المُشَيِّد الافتراضي default constructor
- المُشَيِّد ذو المُدخَلات parameterized constructor

و هذا هو المثال السابق بالكامل (مع إضافة مُشَيِّداتٍ من ذوات المُدخَلات):

و يقوم البرنامج بحجز مكانٍ في الذاكرة للكائن الجديد ثم تنفيذ المُشَيِّد الافتراضي لو كتبنا ما يلي:
caccount account1 = new caccount();
و لاحظ عدم وجود قيم بين قوسي المُشَيِّد المُستدعَي.
بينما يقوم البرنامج بحجز مكان الذاكرة ثم تنفيذ المُشَيِّد ذي المُدخلات لو كتبنا ما يلي:
caccount account1 = new caccount(100, 1.0);
و لاحظ وجود قيمٍ بين قوسي المُشَيِّد المُستدعَي. و في هذه الحالة يكون:
account2.account = 100
account2.profit = 0.1

أما منع الوصول المٌباشر لحقول البيانات فيكون ببساطة بإعطائها الخاصية private عند تعريفها، مثل:
private double account;

و لو أننا قمنا بتعريف كل حقول البيانات الموجودة في الصنف و أعطيناها الخاصية private فسنجد أننا وصلنا إلي جعل الصنف أشبه بالكبسولة؛ حيث لا يُمكن الوصول لحقول البيانات إلا من خلال الدوال الموجودة في الصنف، و هو ما يُعرف بالكبسلة encapsulation.

و كذلك ينطبق مفهوم الكبسلة علي كود الدوال الموجودة داخل الصنف، حيث لا يُمكن للمستخدم في البرنامج النهائي أن يُغير من ذلك الكود، بل هو مجرد مستخدمٍ له فقط.

أين تتم كتابة الأكواد:

في هذه المرحلة نكون قد وصلنا إلي تصورٍ جيدٍ لمفهوم البرمجة الكائنية oop و كيفية الاستفادة منها في تصغير حجم البرنامج و حماية حقول البيانات من تدخل المستخدم النهائي، و لكننا حتي الآن لا ندري أين تتم كتابة كود الصنف الفرعي و أين سنكتب الكود الذي سيستخدم هذا الصنف ؟
و هذه نقطةٌ هامةٌ للغاية تختلف فيها لغات البرمجة؛ ففي لغة الـ++C مثلاً سوف نجد أننا سوف نستخدم ملفات الـheader files (أو ملفات التَرْويسَة ) لكي نكتب فيها كود الـصنف و يكون لها الامتداد (h.)، و سيكون علينا أن نكتب الكود بنفس طريقة الـ++C التي تشترط كتابة مُلخص الصنف specification ثم بعد ذلك يأتي كوده التفصيلي (أو ما يُسمي بالبناء implementation).
و كذلك فإنه يمكننا أن نكتب التلخيص في ملف ترويسة و البناء داخل ملف آخر له الامتداد cpp. مع كتابة الجملة التالية في بداية هذا الملف الجديد:
#include "caccount.h";
لجعل المُترجم يفهم أن الملفين مرتبطان ببعضهما البعض.
هذا بالنسبة للـ++C، أما في حالة الـjava فيمكننا كتابة كود الصنف في نفس ملف البرنامج الأصلي، أو في ملفٍ مستقل لكن بحيث:
يشتمل كل ملفٍ مستقلٍ علي صنفٍ واحدٍ فقط يماثله في الاسم، و بإمكاننا كتابة أصنافٍ أخري داخل ذلك الصنف الواحد.
يكون امتداد الملف المستقل(java.)

مفهوم الوراثة inheritance و علاقته بمبدأ إعادة الاستخدام:

بعد الانتهاء من كتابة برنامجٍ ضخم بنمط البرمجة الكائنية سوف نجد أنه قد تم كتابة عددٍ كبيرٍ من الأصناف المُستقلة التي سهلت علينا العمل و أسرعته بمعدلاتٍ فائقة.
لكن السؤال الحيوي هنا: هل يمكنني الاستفادة منها بصورةٍ أكبر ؟

بالطبع نعم؛ حيث يمكنني إعادة استخدام reuse هذه التصنيفات الموجودة عندي في كتابة برامجي الجديدة دون الحاجة إلي إعادة كتابة كودها مرةً أخري أي أنني أصنع مكتبتي الخاصة بي، تماماً كالمكتبات القياسية للغات البرمجة، حيث أن الأصناف التي نستخدمها في برامجنا التي نكتبها بتلك اللغات ليست إلا أكواداً قام بكتابتها متخصصون في شركة البرمجيات و أراحونا من عناء كتابتها منذ البداية.
و علي سبيل المثال لو أنني احتجتُ للصنف caccount أثناء كتابتي لبرنامجٍ جديدٍ بلغة الـ++C فسوف أقوم فقط بضمه للبرنامج بالعبارة:
#include "caccount.h";

و بذلك يمكنني استخدامه بمنتهي الحرية.

لكن ماذا لو أردتُ استعمال هذا الصنف مع إحداث بعض التغييرات فيه (كتابة حقول بياناتٍ إضافية، أو كتابة دوالٍ إضافية، أو حتي تعديل أكواد دوالٍ موجودةٍ من قبل) مع الاحتفاظ بهيكل و مكونات الصنف الأساسي كما هي، فما العمل ؟
الحل هنا يكمنُ في مفهوم الوراثة؛ فحينما أُخبر اللغة أنني أريد كتابة تصنيفٍ جديدٍ فلنفترض أنه new_caccount يرث الصنف caccount فإنه يكون مفهوماً لديها أن الصنف الجديد يحتوي علي كل حقول البيانات و الدوال التي يحتويها الصنف القديم مع وجود إمكانية التعديل كما سبق و شرحنا.
و تختلف اللغات فيما بينها في مدي و كيفية الوراثة: أهي وراثة متعددة multiple inheritance بما يعني أن الصنف الواحد يمكنه وراثة عددٍ غير محدودٍ من التصنيفات الأخري كما في الـ++C و الـeiffel، أم هي وراثة أُحادية أي أن الصنف لا يمكنه وراثة أكثر من صنفٍ واحدٍ فقط كما في لغات الـjava و الـ#C. و ربما نتحدث عن هذا بالتفصيل في شروحاتٍ قادمةٍ بإذن الله تعالي.

إلي هنا نكون قد أنهينا المفاهيم الأساسية في عالم البرمجة الكائنية، و لكن أشياء كثيرة للغاية ما زالت تنتظر و لكنها تتأثر بماهية اللغة التي سنبرمج بها، لذلك ستكون هذه الأشياء في الـ++C مختلفة الشكل و الخصائص عنها في الـjava و عنهما في الـ#C.
و منها:
- الواجهات interfaces
- الهياكل structs
- التعدادات enumerations
- الوسائط delegates
- الاحداث و تعهد الأحداث events and events handling
و غيرهن.


Facebook Google Plus Twitter
بين الـawt و الـswing
Aug 27th 2012, 12:50

كنتُ قد قلتُ من قبل في واحدةٍ من تدويناتي أن هناك تنبيهات لأخطاء زمن تنفيذ runtime errors تظهر أثناء تجربة برنامجي الذي أعمل عليه حالياً في بيئة الـJVM، و ذلك بشكلٍ لا يمكن توقعه ! و قد ظننتُ ساعتها أن هذا ناتجٌ عن مشاكل في نظام التشغيل عندي (كتخمينٍ مبدئي) و قد تبين لي الآن  خطأ هذا الظن.
و كذا فقد كانت هناك مشاكل تواجهني بخصوص اللغة العربية في واجهة المشروع، حيث أن في البرنامج توجد تلك النافذة frame التي يوجد بها صندوق نصوص textarea يقوم بالتفاعل مع المستخدم بعرض نتائج له و أخذ مُدخلاتٍ عند اللزوم بما يُماثل محاكيات سطر الأوامر   command line emulators، و قابلتني مشكلة اتجاه النص في صندوق النصوص لأن الاتجاه الافتراضي كان من اليسار لليمين، و كان من اللازم تغيير ذلك بتغيير إعدادت صندوق النصوص ليُناسب اللغة العربية التي تُعرض بها الرسائل.

و هنا ظهرت المشاكل الغريبة: فقد جربتُ حلين هما استخدام:


ثم بعد ذلك استخدام:


و لكنهما لم يعملا مطلقاً !
و حينما بحثتُ علي الشبكة عن مثيلٍ لهذه المشاكل الغريبة وجدتُ أن أحدهم قام بالإبلاغ عن هذه المشكلة علي موقع sun، و كان الرد عليه أنها مشاكل تتعلق بمكتبة awt التي "لا تعمل" فيها دالة applyComponentOrientation  أصلاً  لعدم وجود كودٍ لها في الصنف textarea !
يعني أن الدالة مجرد حبرٍ علي ورق !
بل الأنكي أن الرد أكمل أنه ليست هناك نية لإصلاح هذا الأمر الآن !
و قد نصح صاحبُ الرد السائلَ أن يستخدم مكتبة swing بدلاً من الـawt في عمله.
و كالعادة لم "أُكذِّب خبراً" و انطلقتُ لأجرب هذا الحل الجديد، فقمتُ بعمل نسخةٍ احتياطيةٍ من عملي الأخير حتي لا أُجازف به عند عمل التغييرات الجديدة التي ربما تكون جذرية.
ثم قمتُ بحذف صندوق نصوص مكتبة awt و أدرجتُ صندوق نصوص swing، و الجيد هنا أن مكونات الواجهة API التي استعملتُها مع صندوق نصوص awt كانت موجودةً بأكملها في صندوق نصوص swing (و لا أدري هل الواجهتان متماثلتان بالكامل أم لا) و بالتالي لم أحتج لتغيير أي شيءٍ في الأكواد نهائياً (بعد جعل اسم الصندوق الجديد مماثلاً لاسم الصندوق المحذوف بالطبع).

و حينما اختبرتُ البرنامج وجدته قد تلافي مشكلة اتجاه النصوص بنجاحٍ و الحمد لله تعالي، و الرائع أن تلك الاستثناءات التي تحدثتُ عنها من قبل أصبحت أقل بكثيرٍ جداً عما كانت عليه قبلاً، بما يعني أن السبب الرئيس وراء ظهورها هو استخدام الـawt، أو علي الأقل استخدامها مع الـswing في نفس المشروع (و إن كنتُ أُرَجِّح الظن الأول)، و حينما قللتُ الاعتماد علي الـawt قلت المشاكل بالتوافق.

بعد ذلك واجهتني مشكلةٌ أخري هي أنه: عند كتابة نصٍ كبير الحجم في صندوق النصوص الجديد لا يتم عرض آخر الأسطر التي تم كتابتها، بل تظل الأسطر الأولي هي التي في المقدمة، و لرؤية الأسطر الأخيرة يحتاج المستخدم لاستخدام عمود الإزاحة scrollbar يدوياً و هو أمرٌ غير عملي لمثل هذه البرامج، فاحتجتُ إلي كودٍ لجعل الانزلاق يتم تلقائياً و وجدتُه بالفعل بحمد الله تعالي، و بعد تعديلٍ بسيط أصبح كما يلي:



و بالفعل عمل مُحاكي سطر الأوامر بشكلٍ جيد، و إن كان أثقل في العمل من النسخة التي كانت تعمل بالـawt بشكلٍ طفيف.

تذكرتُ بعد هذه الحكاية أن مكتبة الـawt كانت هي المكتبة المُعتمدة للواجهات الرسومية gui قديماً، و لكنها كانت مرتبطةً بأنظمة التشغيل بشكلٍ مُبالغٍ فيه و لذا كثُرت الأغلاط bugs فيها لدرجة أنهم وجدوا أنه من الأفضل الاستغناء عنها و عمل بديلٍ لها غير مرتبطٍ بنفس الدرجة بأنظمة التشغيل هو الـswing.
هذه الأشياء كنتُ قد علمتُها منذ زمنٍ طويل و لم أتذكرها إلا بعد ما مررتُ بالتجربة التي شرحتُها في المقال، و كان تذكرها في وقتٍ سابقٍ سيجنبني كل تلك الحيرة التر مررتُ بها. لكن الحمد لله علي الخبرة التي أجنيها من المشاكل التي أقابلها.


Facebook Google Plus Twitter
سامسونج تخسر معركتها القضائية أمام أبل
Aug 25th 2012, 08:01

أصدرت محكمة أمريكية اليوم حكمها النهائي في قضية اعتُبرت من أكبر القضايا القانونية المتعلقة ببراءات الاختراع على الإطلاق. القضية طبعاً بين الخصمين التقليديين سامسونج وآبل حيث تدعي كل منهما بأن الأخرى تنتهك براءات اختراعها المتعلقة بهواتفها المحمولة وحواسبها اللوحية.



بعد معركة قضائية طويلة وجدت المحكمة بأن سامسونج تنتهك بالفعل براءات اختراع آبل في 21 هاتف من هواتفها التي تعمل بنظام أندرويد، لكنها قالت بأن سلسلة Galaxy Tab للحواسب اللوحية لا تنتهك براءات اختراع آبل في جهاز الآيباد. ونتيجةً لذلك فرضت المحكمة على سامسونج دفع غرامة لآبل بلغت 1,051,855,000 (مليار وواحد وخمسون مليوناً وثمانمائة وخمسٌ وخمسون ألف دولار أمريكي) من أصل 2.75 مليار كانت آبل تطالب بها. لكن في النهاية ما يزال المبلغ الذي يتوجب على سامسونج دفعه ضخماً.

في المقابل، برّأت المحكمة آبل من انتهاك براءات اختراع سامسونج. وبالتالي حققت آبل نصراً كاملاً في القضية.

يُذكر بأنه من المتوقع قيام سامسونج باستئناف الحكم سعياً منها لتخفيض مبلغ الغرامة على أقل تقدير.

 

المصدر: أردرويد


Facebook Google Plus Twitter
You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions

شارك هذه التدوينة وتابعنا على صفحاتنا الرسمية
ادعم الموضوع →
أو انشره →

0 التعليقات:

إرسال تعليق

المشاركات الشائعة

متتبعون المدونة

يتم التشغيل بواسطة Blogger.