٤‏/٤‏/١٤٢٨ هـ

كرت الشاشة




بعد ملاحظاتي الدقيقة اكتشفت طريقة سهلة لمعرفة هل كرت الشاشة (Display Driver) هل هو يعتمد على السوفتوير او الهاردوير اكثر؟!!

بعض كروت الشاشة تعتمد على البرمجيات اكثر من الهاردوير وهذا معناه استهلاك اكثر لوقت المعالج (CPU) مثال ذالك كروت الشاشة ATI التي تعتمد على البرمجيات اكثر من اعتمادها على الهاردوير . وهي طريقة غير مستحبة. لانها تستهلك من وقت المعالج كما ذكرت.

لتكتشف هل انت تستعمل كرت شاشة جيد. بحيث لا يستهلك من وقت المعالج شيء قم بالتالي

افتح مدير المهام Task Manager واختار صفحة رسم المعالج ثم قم بتحريك مدير المهام يسره ويمنة اذا كان كرت الشاشة جيد سوف لن يرتفع الى 100% من وقت المعالج. اذا كان كرت الشاشة ATI سوف تلاحظ ارتفاعه حتى يصل الى 100%.

xlogic

٢‏/٤‏/١٤٢٨ هـ

العالم ليلاً





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

الافكار الاصيلة


حال منتدياتنا ومدوناتنا التى تختص بتقنية المعلومات يذكرني بمقولة الكاتب الانجليزي ألفريد نورث وايتهد
"أن كل مايقال قد قيل سابقاً!!"

عندما اتجول في الممنتديات والمدونات اكتشف فقر هذه المدونات والمنتديات لافكار الجديدة! واكثر الذي موجود بها انما يكون ترجمة حرفية لمنتديات الاجنبية!!. او تكون الموضوعات جداً سطحية. مثال: كيف تستخدم متصفح الفاير فوكس!!! ههه وهل المتصفح يحتاج اني اضع له موضوع يناقش كيف يُستخدم!!.او كيف تستخدم البرنامج الفلاني!. مع ان البرنامج الفلاني فيه مساعدة كيف تستخدمه!.
وياليت تكون المعلومة تعرض سر من اسرار البرنامج الغير مكتشفة او الغامضة.
سطحية الطرح هو ما افقدني شهيتي لقرائة المنتديات والمدونات.
عدم وجود افكار اصيلة او طرح علمي متعمق لفكرة معينة يجعل القارىء لايتابع هذه المدونات او المنتديات او يتجه لمدونات اجنبية حيث تكتشف افكار جديدة وطرح متعمق لفكرة معينة.
الافكار المدبلجة هذه ليست مقتصرة على المنتديات او المدونات انما لحق المرض ليصيب التلفزيون!. انظر الى ستار اكديمي؟ فكرة مدبلجة 100% لبرنامج فرنسي. ومن سيربح المليون كذالك. وهناك برامج تلفزيونية كثيرة هي صورة مدبلجة لبرامج اجنبية.
لماذا ....هل تفكيرنا لايرقى لابداع! ام تعودنا على ذالك؟

وليس هذا فحسب. وانما نشكوا من التقليد ايضاً. تكتشف ان موضوع مناقش في منتدى معين ونفس الموضوع في منتدى ثاني وثالث و و و.
لماذا تضيع وقتك بكتابة موضوع مكتوب بالفعل ومستهلك؟؟ سؤال وجيه بالفعل.
كذالك االبرامج المدبلجة او المقلدة!. لماذا ابرمج شيء هو بالفعل موجود. ولن اضيف اي شىء جديد؟ مع ان التغير بالديكور فقط!.
ربما ابرمج فكرة بالفعل موجودة ولكن ليس لاستخدام انما التعرف على كيف اعملها لاغير (لتعليم). ولن انشر البرنامج لان البرنامج فكرتة ليست اصيلة.
اعمل البرنامج اذا بالفعل الفكرة اصيلة ولا يوجد برنامج مثيل له. او ربما اعمله اذا كان البرنامج الجديد ينافس البرنامج القديم بادائه ويضيف اشياء غير موجودة بالبرنامج القديم. (تطوير الفكرة).

عدم وجود الافكار!
لماذا لا نستطيع ان نبتكر فكرة اصيلة مثل غوغل؟ او فكرة مثل مجلات الفي بي. لماذا لا نفكر بجديد. ابداء بافكار مبتكرة جديدة.
عندما اريد ان ابرمج لا ابدا بدراسة البرامج الشبية الموجودة! انما اجلس ساعات وبعض الاحيان ايام اعمل شحذ لمخ (عصف المخ) brain storming لفكرة البرنامج وكيف يعمل. ثم اضع كذا طريقة واحاول اختار الافضل. وادرس مشاكلها. واقارن الافكار ثم اقوم بعملها . بعد الانتهاء ربما اطلع على افكار الاخرين . لماذا اعمل هكذا؟ لاني اكتشفت اذا عرفت فكرة ليست بفكرتي اكون دائماً افكر باطار هذه الفكرة ولا استطيع الخروج منها. كانى في دوامة فلا استطيع ان اعطي افكار جديدة .

جرب ان تعملها. لا تفكر بافكار الاخرين انما فكر بفكرتك انت. حتى تستهلك جميع افكارك ثم اطلع على افكار الاخرين.


xlogic

٢٧‏/٣‏/١٤٢٨ هـ

الأيحاء



كنت في العمل،جالس على الكنبة التي امام مكتبي. وهذه لا اجلس عليها الا اذا كنت اريد ان افكر بعمق،

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

بالطبع الصيام!!

فقلت :صح أعتقد ذالك.

ثم قلت له اتشرب شيء قال لا .
فقلت له السؤال مرة ثانية بصورة اخرى، ما المدة بين رمضان والحج؟ فقال شهران تقريبا؟ فضحك. ففهم السؤال الاول.

هذا الشخص اعرفه ذكي ولماح. ولكن لا اعلم لماذا التبس عليه الامر؟ هل طريقة سؤالي ام جلستي اللتى اوحت له ان المشكلة فعلا عويصه؟.


xlogic

T H E P O W E R OF B R A I N



I received an e-mail saying:


fi yuo cna raed tihs, yuo hvae a sgtrane mnid too.Cna yuo raed tihs? Olny 55 plepoe can.

i cdnuolt blveiee taht I cluod aulaclty uesdnatnrd waht I was rdanieg. The phaonmneal pweor of the hmuan mnid, aoccdrnig to a rscheearch at Cmabrigde Uinervtisy, it dseno't mtaetr in waht oerdr the ltteres in a wrod are, the olny iproamtnt tihng is taht the frsit and lsat ltteer be in the rghit pclae. The rset can be a taotl mses and you can sitll raed it whotuit a pboerlm. Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe. Azanmig huh? yaeh and I awlyas tghuhot slpeling was ipmorantt!


xlogic

٢٥‏/٣‏/١٤٢٨ هـ

رجل كاد ان يغير التاريخ


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

هذا الرجل مبدع عصره. وسابق العصر اللذي عاش فيه ب 1700 سنه!!!.


عاش هيرون الاسكندراني Heron of Alexandria في 100 قبل اميلاد وهو يوناني .له اكتشافات كثيرة!. ولكن اعجبها الكرة البخارية؟ هذه كرة من الحديد مثبته على عامودين يمسكانها. وبخرجان من الكورة انبوبان ويتجهان عكس بعضهما. ويملئها بالماء ثم يضعها فوق النار (مرتفعه عن النار).فيخرج البخار من
الفتحتان فتدور الكورة بسرعة بقوة البخار.
ولكن هيرون لم يفكر (او ربما فكر) . كيف يستغلها!. انما كانت مثل اللعبة عنده. فلم يستغلها او يطورها.
وبعد 1700 سنة اكتشف المحرك البخاري الانجليزي توماس سافري Thomas Savery 1650-1715 .
فتسائلت. والبرنامج ايضاً تسائل؟ ماذا لو اكمل هيرون مشروعه واكتشف المحرك البخاري!!!لأختلف التاريخ. واختلفت الحروب. لان المحرك البخاري هو بداية نهضة الصناعة.
ماذا لو....
اتركم لتفكروا. هل سوف يتغير التاريخ؟ وتكون الاسكندرية مهد حضارة اليوم؟.

xlogic

Batman and Superman باتمان وسوبرمان


عندما كنت صغيراً. ايام الدراسة المتوسطة.وهذه الفترة لم تكن هناك اتاري؟ او بلاي ستيشن. او فيديو. فكانت لدي هوايات وواحدة منها هي غرامي بمجلات المصورة ،باتمان وسوبرمان ومجلة طارق . والبرق ولم اعرف ان البرق هو فلاش نفسه الا بعد مشاهدتي لفلم فلاش


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

الناس). بدائوا بالتوا يتعرفوا على سوبرمان وباتمان!. فمن كان تفكيره اسبق؟ نحن ام هؤلاء اللذي بالتوا تعرفوا على هذه الشخصيات والقصص. لقد عرفنا الكريبتون ونحن مراهقين. قبل معظم الناس اللذين بالتوا يعرفوا ماهوا الكريبتون.


ولكن اقول لكم شيء:
هذه المجلات كانت غذاء لمخ. لتنمية الافكار (الخيالية العلمية). ولولا الخيال العلمي لما توصل الانسان الى القمر.
فلا تبخلوا على ابنائكم بمجلات(او افلام او العاب) فيها من الخيال العلمي، فهي تزيده ادراكاُ، وتجعل افكاره متقدمة على اقرانه
وشكرااا


xlogic

٢٣‏/٣‏/١٤٢٨ هـ

The Contaminated Idea الأفكار الملوثة


الأفكار الملوثة The Contaminated Idea

لا تأخذ الأفكار التالية مسلمات!. فهي في اغلبها خاطئة الفهم من اغلب المشتغلين في الحقل المعلوماتي.أو ما طلق عليه المعلومات الملوثة ( The Contaminated Information ).

برامج تستطيع ان تعيد الملفات المحذوف .

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

أولاً دعوني أشرح ولو فكرة بسيطة ماذا يحدث داخل القرص الصلب عندما نحذف ملف.
عندما تحذف ملف ما. فان النظام يقوم بحذف اول حرف من اسم الملف. لنفرض اسمه myFile.txt""
فيصبح " yFile.txt" ، لذالك بياناته الأصلية موجودة على القرص لازالت –وهذا أيضا ينطبق على التهيئة-، وعندما تريد ان تخزن ملف جديد يبدأ النظام ببحث في FAT (File Allocation Table) عن مكان ما لتخزين الملف فيبحث ببداية الأحرف المحذوفة (فاضي). فيقوم بالكتابة إلى هذا الموقع (طبعا هذه فكرة مبسطة). لذالك فان أي معلومات موجودة سابقا سوف يكتب عليها(أي تستبدل) ولن تحصل عليها لو حتى أرسلت قرصك الصلب إلى المصنع لاسترجاع الملف المحذوف (المكتوب عليه).
لذالك جميع البرامج التي تدعي أنها تحصل لك على الملفات المحذوفة يقولون لك قبل أن تركب البرنامج لا تركب البرنامج على القرص اللذي تريد أن تسترجع بياناته.
المقولة الصحيحة: استرجع ملفاتك. مالم تكتب عليها.

برامج اعادة الترجمة Decompilers تستطيع أن تحصل على الكود المصدري (كما كتب).

طبعا فكرة خاطئة. الكود المصدري لبرنامج نقصد به اللغة التي كتب بها ،هذه الفكرة ليس صحيحة 100% وإنما الديكومبايلرز يستطيع أن يعطيك كود قريب مما كتب وليس 100 هو الكود نفسه. يعني لنفرض السورسر(Sourcer) . تحت منصة win32 يسترجع لك الاسمبلي كود من البرنامج التنفيذي،
Machine code-->Assembly Language
واذا اخذنا الاسمبلي كود وحاولنا ان نسترجع منها الكود المصدري لنفرض بالفجوال بيسك. هناك عده احتمالات لنفس لكود لتمثيل الكود المصدري. وهذه هي الاشكالية. عدة احتمالات لنفس الكود الاسمبلي باللغه العالية.
كذالك الكومبايلر يزيل أي اسم متغير ويبدله برقم موقع بالذاكره. يعني عندي متغير اسمه myVar عندما تعمل كومبايل يتحول هذا المتغير الى رقم في الذاكرة (reference) لذالك عندما تطلع على كود السورسر سوف تجد انه متغيرك أصبح اسمه D0000001.
تحت منصة دوت نت الديكومبايلرز يحصل لك على اللغة الوسيطة (IL) وهي بالطبع تختلف عن اللغة التي كتب بها البرنامج. ولا تستطيع ان تأخذها كما هي وتدخلها على vb.net editor لتعمل لها كومبايل!.

لا تضع وحدة في فقرة uses اذا انت لا تستعملها. (دلفي)

كثير من الاخوة المبرمجين بلغة الدلفي يعتقدون ان uses هي شبية ب include في لغة السي وهذا الفهم خاطئ،Uses فقرة تدل على استخدامك لوحدة ليس شرطا تضمينها داخل الملف التنفيذي.
عند عملية الكومبايل،الكومبايلر سوف يحذف الكود الغير مستخدم (smart compiler) . وهو ما يعرف بالمترجم الذكي.
ولإثبات النظرية هذه هناك عدة طرق.
أسهلها وأسرعها هذه:
قم بتضمين وحدة من الوحدات ولكن لا تستدع أي دالة منها. واعمل كومبايل مع شرط Debug ثم اذهب الى الوحدة سوف ترى أن لا توجد نقاط زرق عند كل سطر تعليمة (هذه النقاط معناها انك تستطيع ان تضع نقاط توقف ) . هذه يدل على ان الكومبايلر لم يعمل لها كومبايل داخل ملفك. وهناك عده طرق اخرى لا يسمح الوقت بشرحها.هذا الكلام صحيح إذا كانت الوحدة لا تحتوي على متغيرات عامة (Global variables ) ولا تحتوي على Initialization وFinalization.

تكنلوجيا دوت نت هي تكنلوجيا جديدة .
غير صحيح. دوت نت هي فكرة جافاوية الأصل (Java) . ماكروسوفت أحست أنها دخلت بمشاكل اختلاف الإصدارات لوندوز. وهذه المشكلة سوف تستمر إذا لم تجد لها حل. وحل المشكلة هو باستخدام فكرة الجافا. البرامج المكتوبة بالجافا تستطيع ان تعمل على أي بيئة. لذلك عندما تبرمج تحت منصة دوت نت. لايهم ماهو النظام windows2000 او windows XP او سيرفر اوwindows vista او windows basta(ما ادري ماذا سوف يصدر مستقبلاً من اصدارات ربما وندوز شيش كباب windows Shish Kabab ). لايهم ! مادام انت تملك دوت نت فريم ورك، برنامجك سوف يعمل.

برامج المكتوبة بالغة دوت نت أسرع من البرامج المكتوبة بالغات الأخرى.

أيضا غير صحيح : البرنامج المكتوب بمنصة دوت نت سوف يتكلم أولا إلى دوت نت فريم ورك dot net framework ثم من الدوت نت فريم ورك سوف يذهب الى النظام التشغيلي Operating system
أما البرامج المكتوب بالغات الأخرى مثل VB او C++ او Delphi (Native Language) فهي تتكلم إلى النظام مباشرة.

DotNet programe --> DotNet Framework-->Operation System.
Native program --> Operation System

فمن الاسرع!!!.

برامج مضادات الفيروسات سوف تحميني من الملفات التجسسة.

هذا خلط بمفهوم الملفات التجسسية والفيروسات. الفايروس يحاول ان ينتشر ويدمر المعلومات. اما التجسسية فهو يحاول أن يخفي نفسه بكل ما استطاع ويحاول سرقة بيانات من الكومبيوتر وإرسالها. ولا يحاول تدمير البيانات.
عندي مضادات الفيروسات اذا أنا بأمان من الهكرز!.

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

الهكر يستطيع ان يدخل ويتجسس على كومبيوترك باي لحظة هو يريد اذا عرف الايب بي لجهازك!

غير صحيح: يجب أن يكون كومبيوترك يحتوي على ثغرة أمنية حتى يستطيع الدخول.


عندي جدار ناري إذا أنا بأمان من الهكر!.

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

جدار الناري الملحق بالماكروسوفت ويندوز اكسبي يكفيني .
(هذا جدار اسمه جدار بطيخي).

أول cpu كان بطول 8 بت.

غير صحيح أول cpu كان بطول 4 بت (cpu 4004)وصمم عن طريق شركة يابانية (أنتل لم تقوم بتصميمه) لاستعماله في حاسبة آلية بدل الدوائر الالكترونية التي كانوا يستعملونها. فاخذوا التصميم إلى شركة إنتل لتقوم بتصنيعه . في سنه 1971. (لذالك يقولون المعالج أبوه ياباني وأمه أمريكية)
انظر http://en.wikipedia.org/wiki/Intel_4004

لغة البرمجة X هي أفضل من لغة Y؟

المقارنة بالطريقة هذه غير صحيحة أو غير علمية!.
يجب أن تقول هكذا (قل لي ماذا تريد أقولك أي لغة هي أفضل )

الهاكرز هم نفسهم الكراكرز.

كثير من المشتغلين في حق المعلوماتي يسيئون او يخلطون بين المصطلحين

الهاكرز هم اشخاص يميلون لفهم عميق لإسرار النظام التشغيلي . اكثرهم مبرمجون. يملكون معرفة عالية بالبرمجة وعمل نظام التشغيل. يعرفون هفوات وثغرات بنظام معين وأسباب هذه الثغرات ومتى تحدث. هم في بحث مستمر لمعرفة. ويشاركون معلوماتهم واكتشافاتهم مع الآخرين. ولا يحاولون أذى أبدا مطلقا.
من كتاب Maximum Security: A Hacker's Guide to Protecting Your Internet Site and Network


A hacker is a person intensely interested in the arcane and recondite workings of any computer
operating system. Most often, hackers are programmers. As such, hackers obtain advanced
knowledge of operating systems and programming languages. They may know of holes within
systems and the reasons for such holes. Hackers constantly seek further knowledge, freely share
what they have discovered, and never, ever intentionally damage data.


الكرارك هو من يدخل أو يكسر سلامة النظام مع نية خبيثة. عندما يحصل على دخوله الغير مسموح يقوم بتدمير بيانات النظام الأساسية. مما (ما) يجعل النظام غير قادر على تقديم الخدمة.

A cracker is a person who breaks into or otherwise violates the system integrity of remote
machines, with malicious intent. Crackers, having gained unauthorized access, destroy vital data,
deny legitimate users service, or basically cause problems for their targets. Crackers can easily be
identified because their actions are malicious.


املك اسرع كومبيوتر سرعة المعالج (5GHZ).

سرعة المعالجة وحدها لا تكفي؟ لان السرعة هذه يقوم بها المعالج عندما تتوفر له البيانات. من الذاكرة (memory+harddisk) . فاذا كانت سرعة الذاكرة والقرص الصلب بطيئة أذا المعالج لن يعمل بكامل سرعة.
اتعلم ماهي معضلة الكومبيوتر؟. انها القطع الميكانيكية. مثل القرص الصلب+القرص اللين+القرص المدمج ، هذه المكونات مهما اصبحت سريعة لن تصل سرعة المكونات الالكترونية (Solid State)، لذلك اذا الكومبيوتر لم تكون مكوناته متوافقة (matched up). سرعة المعالج لن تنفع. أفضل الكومبيوترات هو اللذي لا يستعمل مكونات ميكانيكية. (زيادة ذاكرة والتوقف عن استعمال القرص الصلب- احد الحلول).
xlogic

مشكلة الخمسة والعشرون يوماً



عجيباً أمر البرمجة. والأعجب أن تكون مهووس وتبحث عن المثالية في البرمجة.
بعد أن صممت البرنامج وقمت بفحصه وتأكدت أن كل شي يعمل كما هو مصمم عليه....يجب ألا يكون هناك أي شي للصدفة .
99.9% فكرت بكل شيء. ودرست الاحتمالات الممكن حدوثها بالبرنامج واحتطت .
وتلافيت استعمال أي مكون مالم أكون صممته إلا (واحد) ، لان لن أقوم باكتشاف العجلة من جديد،البرنامج صمم على ان يعمل اربع وعشرون ساعة في سبعة ايام ، يعني لاشي أن يوقفه.

وضعت تحت الفحص لمده 14 يوما واكتشفت خطأ ما. ليس من البرنامج ولكن بسبب احد دوال الويندوز. وتلافيت استعمال هذه الدالة.
واستعمال البرنامج بأقصى إمكانياته بتفعيل جميع الخيارات وضعت البرنامج تحت مراقبه برنامج perform اللذي يأتي مع الويندوز لمراقبة أداء الكومبيوتر وموارده. ومراقبة private bytes لبرنامج لاكتشاف أذا كان هناك أي تسرب بالذاكرة memory leak.

جميل ......كل شي يعمل كالساعة. تك تك تك .
وضعته تحت التشغيل الفعلي بعد التأكد من أن كل شيء يعمل كما هو مصمم عليه.

وفي يوم من الأيام اتصل على (احد مستخدمين البرنامج) يخبرني أن البرنامج عمل خروج فجأة. فسألته إذا عمل شي معين قبل أن يتوقف البرنامج. فقال انه لم يكن امامه وإنما اكتشف إن البرنامج لم يكن شغال.
ذهبت الى الموقع. وقمت اولاً بفحص الكومبيوتر. فلم احصل على شيء. لان كل شيء سليم ولا يوجد هناك أي شيء بالنظام نفسه. وفحصت Event Viewer ووجدت رسالة الخطأ رقم 4009 ثم فحصت اللوق ووجدت رساله الخطأ لبرنامج drwtsn وهي C0000025 ، وبدراسه رسالة الخطأ هذه عرفت ان معنها unrecoverable error يعني حتى الويندوز لا تحددها بالشكل السليم. !!
طيب.
قمت بتشغيل البرنامج ورجعت لمكتبي وقمت بتشغيل البرنامج أيضا على احد الكومبيوترات لفحص، وتركته يعمل، يوم، يومان........ثلاثة........25 يوم ، وفجأة اتصل علي المستخدم وقال لي نفس الشيء قد حدث؟ وقمت فألقيت نظره على الكومبيوتر الذي عندي في المكتب حيث وضعت كومبيوتر لفحص البرنامج وقد تفاجأ ت إذا رأيته هو أيضا قد عمل خروج .اممممم اذا ليس السبب من نظام التشغيل. لان النظامان يختلفان (win2000,winXP) ولكن المشترك بينهم هو البرنامج والمدة.!! امممم لماذا 25 يوم بالضبط تقريبا؟!!!!!!
فبحثت بالانترنت إلى أي شي قريب من هذا؟ وهل هذه المشكلة أوالظاهرة لها علاقة بال memory fragmentation . ولكن لا شي أبداً قريب من هذا.
ولكنى متاكد انها ليس من الذاكرة لأني اتخذت احتياطاتي لدرجه لا تتصورون . والمشكلة الأخرى أنها تحتاج 25 يوم لفحص، أي إذا غيرت شي بالبرنامج لفحصه أنت تحتاج إلى 25 يوم لترى النتيجة.
لقد جلست أيام احك راسي واكلم نفسي. كيف يكون الحل، وأين تكمن المشكلة . أريد بداية الخيط .وأنا متأكد إني لا استعمل أي كائن لم اصنعه، إلا واحد وهذا open source كما ذكرت سابقا.
وبدأت احسب 25 يوم ماذا يساوي بالساعات 600 ساعة.
طيب 25 يوم * 24 ساعة *60 دقيقه =36000 دقيقه .
وبالثواني 2160000 ثانيه
ألم تلاحظون شيء غريب؟
أن الأرقام سحريه؟ أي أنها كلها تنتهي بصفر(وانها ارقام معروفه؟ او قد مرت عليك من قبل)
اممممم على ماذا يدل هذا؟ وبدأ المشوار..........قليلا قليلا والتفكير يتصاعد الى القمة وعملية شحذ المخ في اقصاها. وأنا في قمة التركيز تذكرت شيء؟ رقم سحري أخر وهو 49.7 يوم لويندوز؟
نعمممممممممممم.................49.7 / 2= 24.85 وصرخت بقوه اهااااااااااااااااااا
الرقم السحري الاول:
اتعرفون ماهو 49.7 يوم لوندوز.؟ اقول لكم القصة من البداية.
هناك دالة اسمها GetTickCount

وهذه الدالة عندما تناديها ترجع لك رقم (32 بت) يمثل بالملى ثانيه وهو زمن تشغيل الويندوز (او الكومبيوتر بالأحرى) وهذا الرقم يبدأ بالصفر عند تشغيل الويندوز (او الكومبيوتر) وهو يمثل عداد داخل الكومبيوتر(RTC) ، أي أن أقصى حد ممكن تمثله بالرقم 32 بت هو 4294967295
اي 4294967295 م ث وبتحويل هذا الرقم الى أيام يصبح 49.7 يوم وبعد أن يصل العداد إلى أقصى حد له يبدأ من الصفر مره اخرى (أي يصفرReset). ولكن........ما علاقة بين هذا و25 يوم.
كما بينت ان القيمه 25 يوم تمثل نصف العدد 49.7 تقريباً.

أذا هل انا استعمل الدالة هذه (GetTickCount) في البرنامج؟
والاجابة نعم استعملها في دالة تاخير Delay.

الرقم السحري الثاني:
هو 7FFFFFFF
نعم انه الرقم الذي يمثل longint او integer
2147483647..2147483648-
أو بالأحرى نصف الرقم (4294967295) وهو (2147483647)
الم تلاحظوا معي إن الرقم (2147483647) و (2160000)- انظر فوق كيف حصلنا عليه-قريبين من بعض.
عندما يصل العد الى أقصى حد ممكن تمثيله في integer بالموجب هو 2147483647 وهو ما يمثل 7FFFFFFF فأذا زدنا واحد يصبح الرقم 7FFFFFFF+1=80000000
80000000 هذا يمثل الرقم بالسالب =-1
لنفرض ان عندك هذا


Integer
x:=GetTickCount


إذا كانت الويندوز شغال اقل من 25 يوم هذا الرقم موجب!
وعندما تكون الويندوز شغال لمدة أكثر من 25 يوم هذا الرقم بالسالب. اكس سوف تصبح بالسالب.

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




ولكن لأسف لم تنجح؟ والسبب أن استدعاء دالة API ليس مثل استدعاء دالة من داخل برنامجك؟ هذا ما توصلت له. ثم قلت لنفسي سوف أستدعيها من DLL وعملت الدالة داخلDLL ولكن أيضا لم تحدث المشكلة والبرنامج استمر بالعمل طبيعي؟.
بداء الشك يدخل تفكيري.ربما اني أفكر بمشكلة ليست هي الأساس؟. ...والزمن يمر؟ والتقرير يجب أن يرفع بأقرب وقت. ولا أريد أن أضع التقرير بحل ليس أكيد. او ربما يكون خاطئ.
وقلت لنفسي يجب أن احصل على طريقة أخرى افحص بها . يجب ان انقح الويندوز!!! نعم يجب ان اتبع الدالة GetTickCount .
وهنا اعرف أن هناك منقح ويندوز من ماكروسوفت windbg وقمت بتنزيل أخر نسخه وقمت بتذكر كيف استخدمه لان النسخة القديمة command prompt وليس GUI عموما ما هي إلا سويعات والمنقح شغال.
قمت بتشغيل برنامجي تحت المنقح. ثم قمت بتنقيح Kernel32.dll والتي تحتوي على GetTickCount

u kernel32!GetTickCount

هذا الأمر unasm سوف يعرض الاسمبلي كود ومنها اعرف عنوان خروج الدالة وعندها سوف أضع نقطة التوقف
عنوان خروج الدالة هو 7c8092ba
نضع الأمر التالي نقطه توقف

"bp 7c8092ba "reax=@eax+0x7FFFFFF0;reax;g

و g في أخر الأمر هو معناها go أي اشتغل.




هذا الأمر يجعل القيمة المرجعة من الدالة في مسجل eax ما قيمته

Result= 2147483632 + current counter value

أي مجموع GetTickCount الفعلي مع القيمة المضافة.
وانتظرت قليلاً وإذا بالبرنامج يعمل خروج.
فارتسمت على محياي (حلوة هذه محياي) علامات الرضا. (أمس شاهدت فلم عنترة والظاهر انه اثرعلي)

وفحصت drwtsn لوق ووجدت نفس رقم الخطأ . هنا تأكدت من الحل ومن أسباب المشكلة.
فقمت بكتابة التقرير عن المشكلة وأسبابها. وذكرت اسباب المشكلة بالتفصيل مع ذكر ان سببها الرئيسي هو المبرمج بالأساس (أنا) flaw in programming ثم قمت بتصليح الخطأ وهو بسيط تغير قيمة integer إلى cardinal وقمت أيضا بتحسين عمل Delay بحيث لو وصل العد إلى 47.9 لا يدخل في لوب غير منتهي.
نلاحظ من حل المشكلة الأتي:
ليس أن يكون برنامج 100% شغال ولكن هناك ثغرات ربما تحدث بعد وقت معين. لذالك يجب أن تفحص برنامجك بتغير الوقت والتاريخ وكذالك بجعل البرنامج يشتغل أطول مدة ممكنة .
أيضا مهما يكون المبرمج متمكن هناك هفوات ربما يقع فيها اعتى المبرمجين (حلوة هذه أعتى أقولكم أن فلم عنترة اثر علي بجد).
كذالك لاحظت أن الويندوزتتعامل مع Kernel call بطريقة تختلف عن روتين داخل برنامج أو dll خاص.
ارجوا أن تكون هذه المقالة مفيدة.


xlogic

ما البرامج التى تستعملها؟



ما البرامج التي تستعملها والتي تتيح لك أن تعرف مواصفات نافذة أو مراقبة الرسائل بين النوافذ.
Spy++ اللذي يأتي مع ms visual studio أو winSight32 مع دلفي أو برامج أخرى؟ .......
أنا أستعمل برنامج الصراحة لا استغني عنه أبداً...وهو سر من أسرارى اعتبره!. لأنه لا يشكو من أي إشكال! ولا يحتوي على أي اثار جانبية side effect مثل بطيء الجهاز. وفيه مواصفات كثيرة. تفيد المستخدم. انه winspector spy وهو مجاني.
أنصحكم باستعماله. تأخذه مرتان مره صباحاً بعد الإفطار ومره مساءً قبل أن تنام. وبالشفاء إن شاء الله.

xlogic

٢٢‏/٣‏/١٤٢٨ هـ

الرسائل القصيرة


قبل يومين كنت في المؤسسة (يملكها صاحب لي) التى قمت بتصميم البرنامج لهم.
لشراء بعض الاغراض (مؤسسة لبيع مواد البناء) . ورايت احد الموظفين اللذين يعملون فيها معه قائمة طويلة وهذه القائمة من البرنامج. وهي تقرير بشكل datasheet تحتوي على اسم الزبون ورقم تلفونه الجوال ومجموع الفواتير ومجموع الدفعات والرصيد (المتبقي عليه) واخر تاريخ تم دفع الدفعة.
وكان الموظف يتصل عليهم واخبارهم (ويذكرهم) انه عليهم دفعات متاخره. ويجب الحضور لمؤسسة لدفع.
فلمحت لي فكرة؟.
لما لا اقوم بتصميم برنامج يقوم بارسال رسائل نصية ويرسلها لزبائن لتذكير؟...تحتوي على المبلغ المتبقي+اسم الزبون.
اممممم. حقاً انها فكرة جيدة. وبما اني في اجازة لمدة خمسة ايام . وبسرعه ذهبت الى البيت وفتحت الكومبيوتر وبدات اضع الفكرة.
كل اللذي تريده هو ان تتصل بالتلفون . هناك عدة طرق الكيبل. او البلوتوث. اخترت طريقة البلوتوث لانها اسرع وبدات ابرمج بالدلفي .....ومعرفة باوامر AT. وان تتصل بالديتا بيس لاستخراج التقرير ثم تترك الاختيار لمستخدم باختيار الاشخاص اللذي يريد ان يرسل لهم رسائل. عن طريق checkbox ثم ارسل,,,,
xlogic