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

الأحد، 30 أكتوبر 2016

أنا وأنت والحمار وفيسبوك


عرض خاص للتيسير على الأصدقاء الكسالى عن ضغط زر الإعجاب بالمنشورات Like وضغط زر المشاركة Share:

أرسلوا لي اسم المستخدم وكلمة السر الخاصة بحساباتكم، وسأتكفل بالقيام بهذه المهمة نيابة عنكم :):):)

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

الفيسبوك يسر لا عسر.. وربنا يقدرنا على فعل الخير.

ملحوظة:

العرض ساري إلى ما شاء الله.. فالعجلة من الصين :):)

 

خلاصة نظام المعلومات


خلاصة نظام المعلومات:
لو شبهنا البيانات بالمادة الخام، فإن:
-      المعلومات هي المنتَج الذي يتم تصنيعه من هذه المادة.
-      ونظام المعلومات هو المصنع الذي تتم فيه هذه العملية.
-      والحاسبات هي الآلات التي تشغل هذا المصنع.
-      والبرامج هي تروس ومحركات آلات هذا المصنع!
-  ومدخلو البيانات القائمون على تشغيل هذه البرامج وإدخال البيانات إليها هم عمال هذا المصنع.
-      والمبرمجون الذين يطورون هذه البرامج هم المهندسون في هذا المصنع.
-      ومدير النظام هو رئيس إدارة هذا المصنع.

 

تدريب:
أكمل الجمل التالية، باختيار الكلمة المناسبة من الكلمات التالية (بيان، معلومة، نظام معلومات):
-      مشروع الحكومة الالكترونية في مصر هو ..........
-      الرقم القومي لأي مواطن في مصر هو .......
-  عدد المواطنين الذين ينتمون إلى شريحة عمرية تقع بين 15 و 30 سنة هو ............

 

من كتاب المبرمج الصغير، للصف الثالث الإعدادي، للتنزيل مجانا:

السبت، 29 أكتوبر 2016

إلقائي لقصيدة ظامئ لارتشافك شعري


هذا هو إلقائي لقصيدة "ظامئٌ لارتشافِكِ شِعري":
 


وقد سبق نشرها مكتوبة هنا:

 

مدير النظام System Administrator


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

من كتاب المبرمج الصغير، للصف الثالث الإعدادي، للتنزيل مجانا:

 

لغز البرسيم


لغز البرسيم!

هل فكرت يوما لماذا الحصان بهذه القوة ولماذا البقرة بهذا الحجم رغم أنها يأكلان يأكلان البرسيم؟

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

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

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

هناك 20 حمض أميني، يمكن استخدامها لإنتاج أعداد لا نهائية من البروتينات، حيث يختلف كل بروتين عن الآخر في نوع الأحماض الأمينية الداخلة في تركيبه، وترتيبها في السلسلة وطول هذه السلسلة.. هذه التفاصيل كلها مكتوبة في الشفرة الوراثية في DNA، وهي التي تعطي الأوامر للخلية بتجميع وترتيب الأحماض الأمينية لإنتاج البروتينات المطلوبة.

باختصار: الأحماض الأمينية هي حروف الأبجدية، التي تكتب بها جمل البروتين.. و DNA هو المؤلف الذي يكتب هذه الجمل.

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

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

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

 

ملحوظة لمصدقي خرافة داروين:

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

كما أن تعقيد العلاقة بين المخلوقات الحية، يؤكد أن تصميم كل نوع يراعي منذ البداية علاقته بباقي الأنواع، وهذا يقول إن (تطور) النوع يجب أن يعي ويراعي تطور باقي الأنواع، وهذا لا يمكن أن يحدث بدون تدخل ذكاء واعٍ، لتصميم نظم بيئية متكاملة!

يقول سبحانه:

(قُلْ أَئِنَّكُمْ لَتَكْفُرُونَ بِالَّذِي خَلَقَ الْأَرْضَ فِي يَوْمَيْنِ وَتَجْعَلُونَ لَهُ أَندَادًا ذَلِكَ رَبُّ الْعَالَمِينَ {9} وَجَعَلَ فِيهَا رَوَاسِيَ مِن فَوْقِهَا وَبَارَكَ فِيهَا وَقَدَّرَ فِيهَا أَقْوَاتَهَا فِي

أَرْبَعَةِ أَيَّامٍ سَوَاء لِّلسَّائِلِينَ).

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

بالمناسبة: يشكك الملاحدة في خلق الأرض في يومين وتقدير أقواتها في أربعة أيام كما ذكر القرآن الكريم، باعتبار أن هذا وقت قصير جدا، ينافي التقديرات الجيولوجية المعروفة.. والحقيقة أن اليوم في القرآن نسبي، فهناك يوم بألف سنة:

(يُدَبِّرُ الْأَمْرَ مِنَ السَّمَاء إِلَى الْأَرْضِ ثُمَّ يَعْرُجُ إِلَيْهِ فِي يَوْمٍ كَانَ مِقْدَارُهُ أَلْفَ سَنَةٍ مِّمَّا تَعُدُّونَ).

وهناك يوم بخمسين ألف سنة:

(تَعْرُجُ الْمَلَائِكَةُ وَالرُّوحُ إِلَيْهِ فِي يَوْمٍ كَانَ مِقْدَارُهُ خَمْسِينَ أَلْفَ سَنَةٍ).

ولا يوجد ما يمنع أن يوجد يوم بمليون سنة، ويوم بمليار سنة، فاليوم في التعريف الفلكي، هو الوقت اللازم لدوران الكوكب حول نفسه.. فيوم الأرض أربع وعشرون ساعة، لكن يوم المشتري 10 ساعات فقط، ويوم نبتون عشرون سنة من سنوات الأرض!!.. فتعريف اليوم مرتبط أصلا بالمنظومة الفلكية التي تنسبه إليها، ويم الأرض لم يكن قد بدأ بعد في قوله تعالى: (خلق الأرض في يومين).

إذن فمقدار الأيام الستة التي خلق الله فيها السماء والأرض هو أمر في علم الله، لكن الملف للنظر أن علماء الجيولوجيا قسموا تاريخ الأرض إلى أربع حقب جيولوجية (ما قبل الكامبري، الباليوزي، الميسوزي، السينوزوي) والقرآن يتكلم عن تقدير أقوات الأرض في أربعة أيام!

 

 

الجمعة، 28 أكتوبر 2016

حفظ نص الاتصال في إعدادات البرنامج


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

لإضافة نص اتصال إلى الإعدادات بطريقة مرئية اتبع الخطوات التالية:
- افتح متصفح المشاريع Solution Explorer، وانقر مرتين بالفأرة فوق العنصر My Project.. سيؤدي هذا إلى فتح نافذة خصائص المشروع.
- اضغط العنصر Settings من الهامش الأيسر لفتح صفحة مصمم الإعدادات كما تعلمنا من قبل.
- في العمود Name اكتب اسم خاصية الإعداد، ولتكن BooksConStr.
- في العمود Type اضغط زر الإسدال، ومن القائمة المنسدلة اختر العنصر الخاص (Connection String).. هذا سيغير نطاق خاصية الإعداد Scope ليصير على مستوى التطبيق Application.
- اضغط الزر الموجود في خانة القيمة Value.. سيعرض لك هذا مربع حوار خصائص الاتصال الذي استخدمناه من قبل لإنشاء اتصال من متصفح الخوادم Server Explorer.. هذا يتيح لك تكوين نص الاتصال بطريقة مرئية سهلة.. حدد مزود البيانات وقاعدة البيانات واختيارات الحماية.. ولو أردت استخدام المزيد من مفاتيح نص الاتصال، فاضغط الزر Advanced.. ستظهر نافذة تعرض خصائص نص الاتصال، وهي نفس الخصائص التي شرحناها في الفئة SqlConnectionStringBuilder.. ويمكنك تغيير القيم الافتراضية لهذه الخصائص، وكل خاصية ستغيرها ستظهر في نص الاتصال الذي سيتم تكوينه.
اضغط OK لإغلاق النافذتين.. سيظهر نص الاتصال الذي تم تكوينه في الخانة Value.
وإذا كنت تحتاج إلى هذا، يمكنك إضافة نصوص اتصال أخرى إلى الإعدادات، بالكتابة في الصفوف التالية، وبهذا تجمع في مكان واحد، كل نصوص الاتصال اللازمة للتعامل مع كل قواعد البيانات والخوادم التي تحتاجها في برنامجك، ما يسهل عليك تعديلها في أي لحظة.
اضغط زر الحفظ من شريط الأدوات لحفظ هذه التغييرات في ملف إعدادات المشروع.
الآن، تم توليد خاصية اسمها BooksConStr في فئة الإعدادات Settings في النطاق My، وتستطيع قراءة قيمتها في أي وقت بمنتهى البساطة.. جرب مثلا:
MsgBox(My.Settings.BooksConStr)
لاحظ أنك لا تستطيع تغيير قيمة الخاصية BooksConStr لأنها معرفة للقراءة فقط، لكن ما زال بوسعك فتح مصمم الإعدادات في أي لحظة لتغيير قيمة نص الاتصال، أو فتح الملف app.config من متصفح المشاريع Solution Explorer، وتحرير قيمة الخاصية BooksConStr التي ستجدها تحت المقطع <connectionStrings>، دون الحاجة إلى تغيير أي كود في برنامجك.

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

 ويمكنك استخدام فئة مقطع نصوص الاتصال ConnectionStringsSection Class لقراءة كل نصوص الاتصال الموجودة في ملف الإعدادات.


من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

الأربعاء، 26 أكتوبر 2016

قومية من عجب


قومية من عجب 

لِناصِرِيِّ الأَرَبْ = قوميّةٌ مِن عَجَبْ

فالروسُ مِن يَثربٍ = والعُجْمُ أهلُ حَلَبْ!

وفي العراقِ تَرَى = للأمرِكانِ نَسَبْ!

صُهيونُ في غزّةٍ = والفُرسُ أصلُ العربْ!

والتُركُ أُسُ البَلا = وأردُغانُ رجبْ!

لا شكَّ في صدقِهمْ = ودَمُ الشهيدِ كَذَبْ!

إن العبيدَ لهمْ = عقليةٌ كالذَّنَبْ

فالحرُّ في عُرفِهمْ = كلبٌ قليلُ الأدبْ

وعلاجُهُ عندَهمْ = إحراقُه كالحَطَبْ

تحيا شعاراتُهم = تحيا جميعُ الخُطبْ

وخريطةٌ قدّسوا = ألقَوْا بها في اللَّهبْ

وطنيّةُ المُشتَرَى = موزونةٌ بالذَّهَبْ!

ومناصبٍ تُفتَدَى = وتذاكرٍ للهَرَبْ

فلنْ تَراهُم هنا = لو جاءَ يومُ الغَضَبْ!

محمد حمدي غانم
26/10/2016

 

ConnectionStringsSection Class


فئة مقطع نصوص الاتصال
ConnectionStringsSection Class 

هذه الفئة موجودة في النطاق System.Configuration، وهي ترث الفئة ConfigurationSection التي تعرفنا عليها في كتاب "من الصفر إلى الاحتراف: برمجة نماذج الويندوز".

ولا جديد في هذه الفئة، سوى امتلاكها للخاصية التالية: 

* نصوص الاتصال ConnectionStrings:
خاصية للقراءة فقط، تعيد مجموعة من النوع ConnectionStringSettingsCollection، التي ترث الفئة ConfigurationElementCollection، وكل عنصر من عناصر هذه المجموعة هو من نوع فئة إعدادات نص الاتصال ConnectionStringSettings Class.

وتتيح لك هذه المجموعة قراءة كل نصوص الاتصال الموجودة في ملف الإعدادات. 

ويمكنك استخدام إحدى وسائل فتح التهيئة OpenxxConfiguration الخاصة بمدير التهيئة ConfigurationManager للحصول على كائن تهيئة Configuration Object يتعامل مع النوع المراد من الإعدادات، ثم استخدام الخاصية ConnectionStrings لكائن التهيئة للحصول على نسخة من الفئة ConnectionStringsSection كالتالي:

Dim Cnfg = ConfigurationManager.OpenMachineConfiguration
Dim CnStrSett = Cnfg.ConnectionStrings
 
من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:
 
 
 
 

نعم زوكبيرج يخدعنا


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

هل يعقل أن أقل من 1% فقط ممن رأوا المنشور هم من تفاعلوا معه؟.. علما بأنهم من بين 2700 شخص سجلوا إعجابهم بالصفحة وهم يعلمون أنها صفحة شعرية، أي أنهم الجمهور المستهدف!.. 6 من 600 من 2700.. هناك شيء غير منطقي على الإطلاق، وأظن أن فيسبوك يستخدم خوارزميات لتقدير عدد من يُعرض لديهم المنشور لكنهم لا يرونه فعليا، ربما في زحمة المنشورات التي تظهر لديهم خاصة مع طريقة فيسبوك في إعطاء الأولوية للأشخاص والصفحات الأكثر متابعة!.. أو أن فيسبوك يُوهمنا بهذه الأرقام، بينما هو يعزل الصفحات، ولا يوصل إلا المنشورات الدعائية المدفوعة!

نفس النتيجة حدثت على صفحتي البرمجية: مشاهدات المنشور 3461 (من بين 8500 متابع للصفحة)، مع تسجيل 3 إعجابات فقط، وحوالي 15 زيارة لرابط المدونة!

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

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

وفي هذا السياق أحب أن أنبهكم إلى بعض المعلومات التي يجمعها عنكم فيسبوك غير بياناتكم ومنشوراتكم وآرائكم ومعارفكم وصوركم:

-      عند تسجيل خروجك وإعادة التسجيل بحساب آخر، ستلاحظ أن فيسبوك بدأ يحتفظ مؤخرا بمعلومات هذه الحسابات بحجة التسهيل عليك للانتقال بينها.. هذه طريقة لكشف أصحاب الهويات المتعددة، وهي مفيدة في تتبعهم استخباريا.. يعني يا حلو: لا تسجل حسابا آخر باسم مستعار وتأخذ راحتك في الكلام فيه، فكل شيء مرصود واسمك مكتوب :)

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

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

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

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

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

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

 

 

الثلاثاء، 25 أكتوبر 2016

ConnectionStringSettings Class


فئة إعدادات نص الاتصال
ConnectionStringSettings Class  

هذه الفئة ترث فئة عنصر التهيئة ConfigurationElement Class، التي تعرفنا عليها في كتاب "من الصفر إلى الاحتراف: برمجة نماذج الويندوز".

ولحدث إنشاء هذه الفئة ثلاث صيغ:

- الأولى بدون معاملات.

- والثانية تستقبل معاملين: اسم خاصية الإعداد التي ستحفظ نص الاتصال، ونص الاتصال نفسه.

- والثالثة تزيد على الصيغة السابقة بمعامل ثالث، يستقبل اسم مزود البيانات Provider الذي سيستخدم نص الاتصال.

وإضافة إلى ما ترثه من الفئة الأم، تمتلك هذه الفئة الخصائص التالية: 

* الاسم Name:
تقرأ أو تغير اسم خاصية الإعداد التي ستحفظ نص الاتصال. 

* نص الاتصال ConnectionString:
تقرأ أو تغير نص الاتصال المحفوظ في خاصية الإعداد. 

* اسم المزود ProviderName:
تقرأ أو تغير اسم مزود البيانات الذي سيستخدم نص الاتصال. 

ويمكنك الحصول على مجموعة إعدادات نصوص الاتصال الخاصة بالتطبيق، باستخدام خاصية مشتركة Shared Property اسمها ConnectionStrings موجودة في الفئة ConfigurationManager كالتالي:

Dim CnStrSett = ConfigurationManager.ConnectionStrings

والمثال التالي يعرض لك كل نصوص الاتصال الموجودة في ملف إعداد التطبيق:

Dim CnStrSett = ConfigurationManager.ConnectionStrings
For Each CnStr As ConnectionStringSettings In CnStrSett
       MsgBox(CnStr.Name)
       MsgBox(CnStr.ProviderName)
       MsgBox(CnStr.ConnectionString)
Next

الاثنين، 24 أكتوبر 2016

اختبار كذب فيسبوك


اختبار كذب فيسبوك

وكم في الفيسِ ضيّعْنا
لأوقاتٍ بلا معنى
فهل (زوكبيرج) يَخدعُنا؟
يَرَى منشورَنا ألفٌ، وهذا الصمتُ لوّعَـنا!
فلا إعجابَ، لا حتّى مشاركةٌ
ولا تعليقَ يُمتعُنا
نكلّم نفسَنا حَمقَى وما مِن غيرِنا معَنا!
فإنْ كنتُم تَرونَ كلامَنا هذا وكانَ البعضُ يَسمعُنا
فضغطُ الرابطِ التالي، بلا ريبٍ سيُقنعُنا:


محمد حمدي غانم
24/10/2016

 

الفرق بين WPF و UWP


س: ما الفرق بين WPF و UWP؟

ج: ظهرت لغة XAML لتستخدم في تصميم واجهات الويندوز في تطبيقات WPF (الحرف اختصار Windows Presentation Foundation) وهي تقنية متقدمة في تصميم الواجهات الرسومية أفضل بكثير من نماذج الويندوز Windows Forms.. لتفاصيل أكثر اقرأ هذا الموضوع:


وتمتاز WPF بأنها تعمل على أي نظام ويندوز يوجد عليه الإصدار المناسب من إطار العمل .Net Framework. هذا يعني أنك تستطيع تشغيلها على ويندوز فيستا، وويندوز اكس بي (مع مراعاة أنهما لا يدعمان بعض إصدارات إطار العمل الأحدث)، ووينددوز 7 و 8 و 10.

وقد أنتجت ميكروسوفت نسخة مخففة من WPF اسمها Silver Light لتستخدم في تصميم مواقع الويب مثل فلاش بلاير، حيث إن سيلفر لايت لا يعتمد على إطار العمل، وإنما يستخدم مكتبة نقالة عابرة لنظم التشغيل، وهي خفيفة الوزن بحيث يستطيع المتصفح تنزيلها من على الإنترنت إن لم تكن متوفرة على جهاز المستخدم (كما يفعل فلاش بلاير).

وما زالت WPF و Silver Light تعملان حتى اليوم، لكن ميكروسوفت لا تبذل جهدا كبيرا لتطويرهما (وإن كانت تحدث WPF لدعم النسخ الأحدث من DirectX).. فما هو السبب يا ترى؟

السبب أن ميكروسوفت قررت إجراء تغييرات ثورية في نظام ويندوز 8 لأنها أرادت أن يعمل ويندوز 8 على أجهزة ويندوز فون، وأن تتم إنشاء تطبيقات له تعمل على الحاسوب الشخصي وأجهزة الهاتف يتم بيعها في Windows Store.. لهذا أنشأت ميكروسوفت نوعا جديدا من المشاريع اسمه Windows Store Application يعمل فقط على ويندوز 8.. ولا يحتاج مبرمج WPF لبذل جهد يذكر للانتقال إلى هذا النوع من المشاريع، فهو يتعامل مع لغة XAML ونفس طرق التصميم والأدوات والفئات بلا فروق تذكر!.. لكن كما ذكرنا: هذا النوع من المشاريع لن يعمل إلا على الأجهزة التي تستخدم ويندوز 8 و 8.1 فقط!

ومع صدور ويندوز 10، غيرت ميكروسوفت الاسم للمرة الثالثة إلى Universal Windows Plateform أو اختصارا UWP لإنشاء تطبيقات تعمل على ويندوز 10 فقط، ولا تعمل على أي ويندوز سابق!.. ومرة أخرى نأكد أنك ما زلت تتعامل مع نفس قدرات WPF لكن في نطاق ويندوز 10 فقط!

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

فلو كنت تريد إنشاء برامج تعمل على سطح المكتب فقط، فعليك استخدام Windows Forms (التي لا جديد فيها منذ عام 2008) أو WPF التي تباطأ تطويرها، لكنها تمنح إمكانيات أكبر من نماذج الويندوز، كما أن الجهد الذي ستبذله في تعلمها سيفيدك عند الانتقال إلى UWP.

أما إذا كنت تستهدف أجهزة محمولة أو أجهزة XBox أو Microsoft HoloLens، فعليك استخدام UWP (وإذا كنت تستهدف أجهزة عليها إصدارات ويندوز 8 أو 8.1 فعليك استخدام Windows Store Apps).

فارق آخر مهم بين WPF و UWP أو WPF تعمل على إطار العمل .NET Framework ولا يدعم .NET Core بينما يمكن استخدام UWP مع دوت نت كور، الذي تهدف ميكروسوفت لجعله عابرا لنظم التشغيل.. لكن هذا لا يعني أن تطبيقات UWP صالحة للعمل على أي نظام تشغيل غير الويندوز.. لا تنس أن اسمها يحتوي على الكلمة Windows أصلا :).. في الحقيقة تستخدم تطبيقات UWP نسخة خاصة من دوت نت كور، تجعلها صالحة للعمل عبر أنواع الأجهزة المختلفة التي تعمل بنظام ويندوز 10.

 

الخلاصة:

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

 

 

صفحة الشاعر