Posts Tagged ‘Java’

ملحوظة صغيرة

2010/01/16
يبدو أن مبرمج ملف الـjavascript في موقع نقابة المهندسين كان متعبا أثناء برمجته و يتضح ذلك من خلال الرسالة المستخدمة للتأكد من وصول التنفيذ إلى سطر أو كتلة ما، لاحظ معي الـ واااااااع 😀 :

if (ss.readyState==4){
//alert("waaaaaaa3");

طبعا من الجيد في مختلف لغات البرمجة استخدام فكرة طباعة عبارة (أو إظهار رسالة) معينة في كتلة أو مقطع للتأكد من دخول التنفيذ إليها.
بالنسبة لي أقوم عادة بطباعة 0 ثم 1 ثم … في المنطقة التي أشك بسير التنفيذ فيها فمثلا ليكن كود الجافا التالي:
try{
ResultSet rs =...
System.out.println("0");
if(rs.next()){
System.out.println("1");
if(rs.getString(1) != null){
System.out.println("2");
...
}else{
System.out.println("3");
...
}
}else{
System.out.println("4");
...
}
}catch(SQLException e){
...
}

و ذلك طبعا أثناء العمل و ليس تبقى في التطبيق النهائي.

Advertisements

State Pattern

2009/05/05

أي، مرحبا
اليوم كان عندي تقديم جزء* من محاضرة في هندسة البرمجيات، كنت سأتحدث عن النموذج State و هذا ما حصل.

هنا PDF (صفحتين) و هنا مثال Java

مختصر جدا، لكن هذا رأيي (مختصر مفيد).


* استغرقت 7 دقائق تقريبا

Install XAMPP, Java, Python3.0 On Linux

2009/05/02

XAMPP
الحصول على آخر إصدار من XAMPP الخاص بنظام التشغيل لينكس، حاليا هو هذا.
فك ضغط الملف إلى المسار /opt:

sudo tar xvfz xampp-linux-1.7.1.tar.gz -C /opt

فقط.
لتشغيل XAMPP:

/opt/lampp/lampp start

و ملفاتك سوف يجب أن تضعها في المسار /opt/lampp/htdocs
ملحوظة: قد يظهر أن سيرفر آخر يعمل، و لذلك تحتاج لإغلاق هذا الأخير، يمكن استخدام التعليمة ps -A لاستعراض العمليات تمهيدا لإنهاء العملية التي نبغي.
المزيد هنا حول XAMPP.

Java

sudo apt-get install sun-java6-jdk

Python3.0

sudo apt-get install build-essential libncursesw5-dev libreadline5-dev libssl-dev libgdbm-dev libbz2-dev libc6-dev libsqlite3-dev tk-dev g++ gcc
wget http://www.python.org/ftp/python/3.0/Python-3.0.tgz
tar xvzf Python-3.0.tgz
cd Python-3.0/
./configure
make
sudo make install

فكر تعاودي

2008/12/22

غالبا ما يتم التنقل من موضوع لآخر عند وجود أشخاص يتحادثون(شخص واحد على الأقل) يحدث هذا التحول في موضوع الحديث بسبب ورود فكرة تحوي من الأهمية، في رأي أحد المتحادثين على الأقل، ما يفوق أهمية الموضوع الحالي فما إن ترد تلك الفكرة حتى ينتقل إليها، أحيانا يكون الموضوع الجديد محدودا فينتهي الحديث حوله خلال مدة قصيرة ثم يعود الموضوع السابق، و أحيانا يولّد هذا الموضوع بدوره موضوعا آخرا … و هذا ما يسبب في الأوقات القادمة قول أحدهم : وين كنّا ؟؟ متسائلا.
أما كيف تأتي هذه المواضيع رغم “عدم علاقتها” (كما يبدو) ،في بادئ الأمر، بالموضوع الحالي فسأتحدث عن فكرتين، أو بالأصح عن شخصين، الأول هو من قام بتغيير الموضوع و الثاني لاحظَ نقطة تغير الموضوع و يفضل أن يملك تفكيرا تعاوديا جيدا:
بالنسبة لمن قام بتغيير الموضوع فهو عرضت له كلمة أو عبارة أو ربما مشهد أو صوت أو رائحة أو … ضمن موضوعي هذا قد لا علاقة هناك للروائح أو المناظر باحتمال كبير، المهم أن شيئا ما حدث و قد ذكّره هذا الشيء بموضوع أو شخص أو لنقل شيئا آخر بعيدا كل البعد عن الموضوع من وجهة نظر شخص لا يعني له الموضوعان ما يعنياه بالنسبة لمن غيّر الموضوع، هنا أوقف هذا الشخص سير الحديث بالموضوع الحالي و انتقل للموضوع الجديد عندما أتيحت له الفرصة لهذا الفعل (بعض الناس يقطعون حديثك بشكل غبي و البعض ينتظرك لتنهي الحديث و هناك من يهمّ بمقاطعتك فيدرك أنه ارتكب حمقا فيتراجع و هنا تدرك بأن لا أهمية للاستمرار [طويلا] بالموضوع الحالي و أن من المستحسن ترك المجال لهذا المقاطع ليبدأ بموضوعه).
إذن، ما يهمنا حاليا هو أن شيئا ما استدعى شيئا آخر، الشيئان من النظر بشكل عام لا علاقة لهما، إلا أن هناك علاقة لولاها لما استدعى أحدهما الآخر، مما يقودنا إلى فكرة هامة ألا و هي أن هناك ترابط بين الأفكار في ذاكرتنا و أن لهذا الترابط كبير الأهمية لبقاء هذه الأفكار فالفكرة التي لا يبقى أفكار ترتبط بها تفنى أغلب الظن (كما أظن)، لاحظ أنه في لغات البرمجة، و لتكن لغة جافا، أننا غير مضطرين لتدمير الكائنات عندما ننتهي من استخدامها، هناك من يقوم بذلك ولا أريد أن أدخل بالتفاصيل فقط ما أريد أن أذكره هو أن في اللغة شيئا ما مهمته تدمير الكائنات عندما ننتهي من استخدامها، أما كيف يعرف بأننا انتهينا من استخدامها فهذا شبيه بالفكرة التي في ذاكرتنا و التي لم تعد أية فكرة أخرى ترتبط بها (هناك الكثير من الأحداث التي تتلاشى من ذاكرتنا لعدم ارتباطها بأحداث أخرى، مثلا عندما تشتري كيلو موز من دكان …).
هناك متانة في تلك الأفكار التي تحاكي في تحقيقها تصميم الإنسان أو بشكل أعم، ما خلقه الله.

أنتقل للشخص الآخر، ذلك الذي لاحظ أن الآخر غيّر مسار تفكيره بشكل مثير للدهشة! ، كأن تكون تتحدث مع زميل لك حول إحدى المواد في الجامعة و أنتما أمام مكتبة فيقول لك في منتصف حديثك بأن السرطان منتشر بشكل مخيف هذه الأيام ! (سأذكر هذا المثال بعد قليل).
هذا الشخص عندما لاحظ تبدل الحديث حاول أن يعرف ما الذي دعا الآخر ليغير حديثه، عمليا هو يحاول أن يجد ذلك الرابط بين الموضوعين، و هنا قد يفلح و قد لا يفلح و ذلك يعود لعدة عوامل منها أو أهمها هو وجود مواضيع في ذاكرة الآخر ،تشكل مرحلة من مراحل الارتباط بين الموضوعين، لا يعرفها و لم ينجح في تخمينها.
فكيف يحاول معرفة الارتباط ؟ مبدئيا يبحث عن شيء مرتبط بالموضوعين فإن وجد ذلك الشيء فهذا يدل على ارتباط مباشر بين الموضوعين أما إن لم يجده فيحاول (و دون أن يقصد ربما) أن يجد موضوعا ثالثا يربط الموضوعين بمعنى أن هناك ارتباط بين الموضوع الثالث و كل من الموضوعين الآخرين، علما أن لا علاقة لهما ببعضهما دونه، أيضا قد يفلح و … إلى أن يتعب أو يعرف و هذا حسب قوة دماغه.
العودية أو الاستدعاء الذاتي هو مفهوم رياضي يطبّق برمجيا يقول: إن بإمكان تابع أن يستدعي ذاته ضمن ذاته، مثلا لنأخذ مثالا بسيطا رياضيا قبل أن آخذ مثالا حياتيا:
قوة العدد x من الدرجة n تساوي قوة العدد x من الدرجة n-1 مضروبا بـ x، لاحظ بأن عبارة “قوة العدد” وردت في تعريف عبارة “قوة العدد”، و هكذا فإن :

xn = xn-1*x
xn-1 = xn-2*x
xn-2 = xn-3*x

أي

xn = ((((...xn-(n-1))*x)*x)*x)*...x

و هذا ما نعبر عنه بأسلوب آخر عن تعريف xn بقولنا هي x*x*x… عدد n من المرات.

مثال حياتي: كم سعر 5 كيلو من البطاطا ؟ هو سعر 4 كيلو + سعر 1 كيلو، طيب و ما سعر الـ 4 كيلو ؟ هو سعر 3 كيلو + سعر 1 كيلو ، و ما سعر الـ 3 كيلو ؟ هو سعر 2 كيلو + سعر كيلو، و ما سعر 2 كيلو ؟ هو سعر 1 كيلو + سعر 1 كيلو. بعد هذا لن نسأل كم سعر الكيلو إذ أن هناك قيمة أولى يتم التراجع عوديا عند الوصول إليها.
نقوم بتنفيذ الأسلوب التعادي دون أن نفكر بذلك، مثلا قد يحدث أنه كم عمر يوسف؟ فيجيب الآخر بأن يوسف أكبر من زينة بـ 3 سنوات، فيُسأل: كم عمر زينة ؟ 22 سنة فيستنتج السائل بأن يوسف عمره 25 سنة، و قد لا يرغب بمعرفة عمر يوسف بعد أن تصل سلسلة الارتباطات بين أعمار آخرين حدا مملاً.

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

الموضوع بكليته هو رأيي أو لأقل هو ما أظنه أنه. الأفكار كثيرة… أكتفي هنا