صفحة 1 من 1

دروس للمبرمجين الجدد

مرسل: الأحد 2007.8.19 1:17 pm
بواسطة sunni
أعزائي.

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

وأرجو أن يستفيد كل مبرمج مبتدئ من هذا الموضوع

متغيرات النظام

مرسل: الأحد 2007.8.19 1:50 pm
بواسطة sunni
عند وضع أي نظام معين، يجب ان تكون فكرة إستخدام النظام أكثر شمولية من أن يتم تصميم نظام معين لجهة معينة. فنفس النظام الذي تقوم بعمله، ستجد انه يمكنك أن تبيعه لجهة أخرى غير الجهة التي طلبت تصميمه، بل وقد يغير نفس العميل أو الزبون متطلباته. وما تغيير العملة السودانية ببعيد. فكيف يمكن للمبرمج بأن يأتي بنظام يمكنه أن يلبي الحاجات المتغيرة للعملاء دون المساس بأكواد النظام أو تغييرها؟.

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

حقيقة ان المتغيرات لا محدودة، وتكبر بكبر النظام وإمكانية إستخدامه من جهات مختلفة هيكلياً، وتنفيذيا وجغرافياً. وتنقسم هذه المتغيرات إلى نوعين أساسيين
1. النوع الأول، وهو متغيرات يمكن للنظام جعل الخيار للمشغل أو مدخل البيانات الإختيار بينها عند إدخاله للمعلومات، وتكون فكرة هذه المتغيرات هي وجود قائمة من المعلومات متماثلة ويجب إختيار أحدها فقط. وأفضل مثال لهذا النوع، هو العملة المستخدمة. وهو أبسط أنواع المتغيرات وأوسعها إستخداماً.
2. النوع الثاني، وهو ينقسم إلى نوعين
النوع الثاني (أ). وهو متغير يسهل على النظام في تحديد القيمة والإفتراضية لمجموعة قيم. وبالعودة لمثال العملة، فيمكن وضع الجنية السوداني كعملة إفتراضية، يتعامل معهل النظام تلقائيا طالما لم يطالب المدخل للبيانات بتغييرها.
النوع الثاني (ب)،، وهو هدفنا الأساسي هنا. وهو مجموعة متغيرات توضع في ملف للنظام، يقوم النظام بتحميلها في بداية التشغيل، ووضعها في متغيرات ثابتة في الذاكرة، يرجع لها النظام في مناطق عدة أثناء التشغيل. وقد تكون هذه المتغيرات قابلة للتغير أثناء عمل النظام، أو قد تكون من الواجب وضع قيمة محددة لها في بداية تركيب النظام، ويجب أن لا تتغير حتى لا يختل منطق النظام، وتختل متغيراته.
مثال لذلك هو الرقم التسلسلي للفاتورة مثلاً. فعند وضعك لنظام، يجب أن لا تفكر بأنه على مستخدمى النظام التعامل برقم متسلسل للفاتورة. فقد تحتاج شركة ما أن تستخدم النظام، ويكون لها نظام مسبق لترقيم الفواتير وترغب أن يتبع النظام الجديد نفس المسلسل. فكيف تقوم بذلك
1. ضع متغير أول للجزء الأول من الفاتورة
2. ضع القيم (1= رقم عددي، 2 = حروف)
3. ضع متغيرين ثاني وثالث يحتويان على نفس الشيء (1=رقم، 2=حروف)
4. في أحد جداول القاعدة، قم بعمل 3 حقول، كل منها يمثل جزء من رقم الفاتورة
5. قم بعمل روتين في النظام يقوم بحساب الرقم حسب إختيار الشركة ورغبتها، وحفظ القيم الأخيرة في هذه الحقول الثلاثة لتعريف آخر رقم (لاحظ، التسلسل التلقائي في MS-SQL,ORACLE,MS-ACCESS,DB2) كلها تمكنك من عمل التسلسل تلقائيا، ولكن لا تستطيع ان تقوم به بالمرونة المرغوبة.
عند بدء النظام، أوجد 3 متغيرات، يحفظ كل منها قيمة الجزء الخاص به من رقم الفاتورة، مثلا لو كانت القيم هي كلاآتي
inv_no1 = 2
inv_no2 = 1
inv_no3 = 0
فهذا يعني ان الشركة تعتمد على ان رقم الفاتورة يحتوي على حروف، ثم أرقام (والقيمة الأخيرة = 0 إذا يجب تجاهلها). وبالتالي تقوم بقراءة القيم الأخيرة، وتركيب الرقم كما طلب منك، وتلقائيا، ودون أن تمس البرنامج الأساسي

ولك ان تتخيل،، كم من المتغيرات التي تستطيع تنفيذها؟
أخيراً، الغرض من هذه المتغيرات هي عمل نظام يعتمد على المتغيرات (Fully Parameterized) ولا توجد به متغيرات في داخل الكود الأساسي للبرنامج (No Hard Coding)

أسماء المستخدمين

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

القائمة الرئيسية للبرنامج

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

كجزء من عملية المتغيرات، يتم عمل القائمة أيضا بمتغيرات، إذ يفضل عمل برنامج لمتغيرات القائمة، وكالتالي

أ. تسمية الشاشات والروابط
قم بعمل ملف يحتفظ ببيانات القائمة، بحيث يحفظ هذا الملف الآتي
1. إسم البرنامج (الإفتراضي) أو كود للبرنامج
2. إسم الكود للدرجة التي تسبقه في شجرة القائمة (مثلا للوصول إلى ال Internet Options عليك النقر أولا في ال Tools. ففي هذه الحالة، تحتوي ال Internet Options على كود ال Tools في هذه الخانة
3. إسم البرنامج المراد ربطه بكامل المسار (C:\Mysystem\invoice.exe)
4. تحديد نوع الرابط، هل هو عنوان أساسي، فرعي، برنامج تشغيل، أو تقرير

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

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

رد: دروس للمبرمجين الجدد

مرسل: الخميس 2007.10.11 2:05 pm
بواسطة ماماتي
معلومات جميلة جداً
لي عودة لاحقاً

دمت سالماً ...

رد: دروس للمبرمجين الجدد

مرسل: الخميس 2007.10.18 1:56 pm
بواسطة ايهاب عبدالفتاح
شكرا لكم على هذه المعلومات القيمة .. والتى استفدنا منها كثيراً ..
ولو تكرمنم اسأل عن .. الأرشفة الإلكترونية .. ومن اين أبدأ ان كنت اريد ان اكون (مأرشفاً ) إت صح التعبير .. كما أرجو مدي بكل ماهو ضروري من مواقع وبرامج تساعدني في ذلك .. ومصطلحات .. واكون شاكرا لكم


تحياتي ..
ايهاب