أهم أقسام المدونة

الصفحات

الأربعاء، 29 يونيو 2016

ارتحال غريب


أَوْجَفَ القلبُ مِن خريفِ مَغيبِ
حينما ذاقَ من دموعِ حبيبي
هكذا الحبُّ: لحظةٌ لحظتانِ في رُبى الفرحِ..
فارتحالُ غريبِ!

محمد حمدي، 2016

 

التحكم في خادم سيكويل سيرفر


التحكم في خادم سيكويل:

يمكنك إيقاف خادم سيكويل عن العمل وإعادة تشغيله في أي وقت، وذلك باستخدام مدير تهيئة خادم سيكويل SQL Server Configuration Manager.. لفتح هذا البرنامج، اضغط:

Start\Programs\Microsoft SQL Server\
Configuration Tools\ SQL Server Configuration Manager
وفي النافذة التي ستظهر لك، اضغط العنصر SQL Server Services من الشجرة الموجودة على اليسار.

 سيعرض هذا ثلاث خدمات من خدمات سيكويل سيرفر، ما يهمنا منها هي خدمة سيكويل سيرفر نفسها SQL Server (SQLExpress).. لو ضغطت هذه الخدمة بزر الفأرة الأيمن، فستعرض لك القائمة الموضعية الأوامر التي تتيح لك إيقاف Stop أو تشغيل Start أو إعادة تشغيل Restart خادم سيكويل.. وعليك أن تنتبه إلى أن إيقاف هذا الخادم سيمنعك من التعامل مع أي قاعدة بيانات موجودة عليه، لهذا عليك أن تتأكد أنه يعمل قبل أن تحاول الاتصال به من أي برنامج خارجي.. لاحظ أيضا أن حالة الخادم تظل ثابتة (متوقفا كان أم يعمل) عند إغلاق الحاسب وإعادة تشغيله.. لهذا إن كنت أوقفته على سبيل التجريب، فلا تنسَ إعادة تشغيله مجددا، واتركه يعمل في سلام J.

 

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


 

السبت، 25 يونيو 2016

أنتظرك


 
لا شيءَ يَشغلُني، ما زلتُ أنتظرُكْ = لا أنتوي عملا، كما يَرَى نظرُكْ!

وها هنا قاعدٌ في ظلِّ سوسنةٍ = إنْ شئتِني أقبلي عِندي سَخَا مطرُكْ!

إنشاء العلاقات في سيكويل سيرفر


إنشاء العلاقات في سيكويل سيرفر:

في متصفح الكائنات Object Explorer أسدل عناصر قاعدة بيانات الكتب Books، وبزر الفأرة الأيمن اضغط "مخططات قاعدة البيانات" Database Diagrams، ومن القائمة الموضعية اضغط الأمر New Database Diagram.. سيؤدي هذا إلى عرض نافذة اختيار الجداول التي ستستخدمها في رسم المخطط.. حدد جدولا أو أكثر بالفأرة، ثم اضغط الزر Add لإضافتها إلى صفحة المخطط، ثم اضغط Close لإغلاق النافذة والانتقال إلى صفحة المخطط.. هذه النافذة تشبه نافذة إنشاء العلاقات في آكسيس، ولكنها تمنحك ميزات إضافية، فبإمكانك تغيير أسماء أعمدة أي جدول بمجرد ضغطها وتحريرها في هذا المخطط، كما يمكنك ضغط أي حقل بزر الفأرة الأيمن وضغط الأمر Set Primary Key من القائمة الموضعية لجعل هذا الحقل مفتاحا أساسيا.
 
وفي الوضع الطبيعي، يعرض المستطيل الممثل لكل جدول أسماء أعمدته، لكنك تستطيع أن تعرض أيضا تفاصيل كل عمود (اسمه، ونوع بياناته، والسماح بتركه فارغا)، وذلك بضغط مستطيل الجدول بزر الفأرة الأيمن لعرض القائمة الموضعية، ثم ضغط القائمة الفرعية Table View، وضغط الأمر Standered.. كما يمكنك اختيار طرق عرض أخرى، كأن تختار عرض المفاتيح الأساسية الموجودة في الجدول فقط Keys، أو اختيار عرض اسم الجدول فقط Name Only، بل يمكنك تصميم طريقة عرض خاصة بك Custom.. مبدئيا ستعرض هذه الطريقة تفاصيل الجدول الأساسية، ولكن يمكنك إضافة أية تفاصيل أخرى بضغط الزر Modify Custom، واستخدام النافذة التي ستظهر لنقل التفاصيل التي تريد عرضها من القائمة اليسرى إلى القائمة اليمنى، وذلك بضغط الزر < .

 
وكما ترى في الصورة أعلاه، فقد

مكر الأنوثة


مكرُ الأنوثة 

رمضانُ رقّقَ قلبَها = شوقًا يُهذِّبُ حبَّها

عَذْبا كنهرٍ قد جَرَى = بالدفءِ يَروِي صَـبَّها

فالهجرُ فتّتَ صخرَها = والشوقُ أَوهَى لُبَّها

صارتْ تَحِنُّ لِحبِّنا = بالوصْـلِ تدعو ربَّها

إن تَبْـقَ دومًا هكذا = كأسَ الحنانِ أَصُبَّها

حتّى وإن هي تَدَّعِي = سأظلُّ أعشقُ كِذْبَها

مكرُ الأنوثةِ قاتلٌ = وبه تَنالُ طِلابَها

أمّا العنادُ بغلظةٍ = عنّي لَيُغلِقُ بابَها

ما هابَ حُرٌّ غِلظةُ = أمّا الأنوثةُ هابَها

فالضَّعفُ حينًا حكمةٌ = لينًا عَشِقْتُ إهابَها

ما للكرامةِ والهَوَى = إن أَسبَلَتْ أهدابَها؟

وبشوقِها في مَرّةٍ = لي فتَّحَتْ أبوابَها؟

وإلى لقاءٍ نَشتهِي = لي زيّـنتْ أثوابَها؟

أَتُرَى يُذِلُّ شعورَها = إن أسعدَتْ مَحبوبَها؟

رسمَتْ هوايَ بقلبِها = وعلى اليدينِ خضابَها؟

وترنّحتْ في أضلعى = لِتُذيقَني أعنابَها؟

وتوحّدتْ أحلامُنا = قلبي غدا محرابَها؟

ماذا سيحدثُ حينَها؟ = لقد انتظرتُ جوابَها

هل لي سيَركعُ قلبُها؟ = أم سوفَ تَظلِمُ حبَّها؟ 

                                       محمد حمدي غانم
25/6/2016

طرد إلى ألمانيا


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


الخميس، 23 يونيو 2016

ما زلت أنتظر


همساتٌ لامرأةٍ ما
(73) 

ما زلتُ أنتظرُ = أن يَطلُعَ القمرُ

ظمآنُ لم يَروِني = في ليلِها السَّمَرُ

جوعانُ لم يُهدني = في خدِّها الثَّمرُ

يا ويلَ مَنْ رامَها = في ضِحكها الخطرُ

مِن سَهْمِ أهدابِها = لم يَنفَعِ الحَذَرُ

مَن صادفوا ضِحْكَها = أشجاهُمُ الَوتَرُ

محمد حمدي غانم، 2015

 

ملاحظات على تعريف أنواع الأعمدة

ملاحظات على تعريف أنواع الأعمدة في سيكويل سيرفر:

-  عند استخدام أكثر من عمود مرن (ينتهي بقوسين بينهما طوله مثل varchar(n))، يجب ألا يزيد الطول الإجمالي لكل أعمدة الصف (السجل ككل) عن 8000 Byte، وإلا حدث خطأ.. ولتجاوز هذا الحجم المحدود للسجل، عليك استخدام المتغيرات Text وnText و image أو المتغيرات الجديدة التي ظهرت في سيكويل سيرفر 2005، وهي تحمل نفس أسماء المتغيرات محددة الطول، لكنها تنتهي بالقيمة القصوى (Max)، فهي تتيح لك التعامل مع بيانات يتجاوز طولها 2 مليار وحدة ثنائية Byte.. كما تتيح لك إمكانيات جديدة في كتابة وقراءة البيانات بطريقة تتابعية Sequential، كما سنرى لاحقا.

-  يجب حفظ الحروف العربية في حقول من أنواع تبدأ بالحرف n (مثل nText)، فلو حفظتها في حقل من نوع عادي (مثل text) فستفقدها، حيث ستتحول إلى علامات استفهام.

-  لجعل أحد الحقول يحمل ترقيما تلقائيا لكل صف، اختر له نوعا رقميا مناسبا، وفي الجزء السفلي من النافذة اضغط العلامة + المجاورة للعنصر Identity Specification لإسدال خصائصه، واجعل للخاصية (Is Identity) القيمة Yes لجعل الحقل معرفا متفردا.. هذا سيغير قيمة كل من الخاصيتين "معدل الزيادة" Identity Increment و"بذرة الزيادة" Identity Seed إلى القيمة 1.. ولو أردت أن تبدأ الترقيم التلقائي من العدد 100 مثلا، فضع في الخاصية Identity Seed القيمة 100.. ولو أردت أن يزيد ترقيم كل حقل عن السابق له بمقدار 3، فضع في الخاصية Identity Increment القيمة 3.

-  لجعل الحقل مفتاحا أساسيا، اضغط الهامش الأيسر المجاور له بزر الفأرة الأيمن، ومن القائمة الموضعية اضغط الأمر Set Primary Key.. ولو أردت أن تتراجع عن جعل الحقل مفتاحا أساسيا، فاضغطه بزر الفأرة الأيمن مجددا، ومن القائمة الموضعية اضغط الأمر Remove Primary Key.

 

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


 
 

الأربعاء، 22 يونيو 2016

ابتسامة بدر


ابتسامةُ بدر 

هذي ابتسامةُ بدرِ = أم فتنةٌ؟.. لا أدري!

ما القلبُ يأمنُ منها = عيناكِ طعنُ الغدرِ

منذ التقائكِ أمسى = متململا في صدري

نبضاتُه أسئلةٌ = في ليلةٍ كالشهرِ

مسترسلا في لومي = بالشوقِ حتى الفجرِ

هل كنتَ ترجو عومًا = يا غارقا في بحرِ؟

حسنُ العذارى فخٌّ = متسربلٌ بالسحرِ

تَعويذةٌ عيناها = مفعولُها كالخمرِ

ووقعتَ فيها غِرًّا = ألقيتَنا في الجمرِ

أغوتكَ رقّةُ طبعٍ = طعمُ الأنوثةِ مُغري

ما ذقتَ منها شيئا = إلا ارتفافَةَ عطرِ

والآنَ ذُبنا شوقًا = قد ضاقَ عنها صبري

عجِّلْ بنا نلقاها = نَحضُنْ عبيرَ الزهرِ

فغدًا إذن يا قلبي = نَسعَى لهذا الأمرِ

أغدًا غدًا نلقاها؟ = ليتَ الثواني تجري

لكنّ هذا ليلٌ = يَمضي بطولِ الدهرِ!

أَ لِمَا نُعاني رَقَّتْ = أم أنها لا تدري؟ 

محمد حمدي غانم
20/6/2016

أنواع خاصة من البيانات في سيكويل سيرفر


أنواع خاصة من البيانات في سيكويل سيرفر:
 

sql_variant:
متغير عام يقبل باقي أنواع البيانات (الأرقام والنصوص)، ولا يستثنى من هذا إلا الأنواع التالية: text, ntext, timestamp, varchar(MAX)
وهذا النوع مرن، يحفظ البيانات في المساحة المناسبة لنوعها وحجمها، بحد أقصى 8000 بايت، إضافة إلى 16 بايت تحدد نوع البيانات المحفوظة.
ولا توجد أي ضرورة عملية لاستخدام عمود من هذا النوع، فوجود عمود واحد يحتوي على جميع أنواع البيانات، أمر سيكون مربكا، لأنك لن تفهم معنى قيمة كل صف!  

uniqueidentifier:
معرف عام متفرد GUID وهو عدد سداسي عشري Hexadecimal غير قابل للتكرار، يتم حفظه في 16 بايت. 

Timestamp:
طابع الوقت: مصفوفة من 8 خانات كل منها من النوع Byte يتم إنتاج قيم خاناتها بحيث تكون المصفوفة متفردة عبر كل الجدول، لاستخدامها في تمييز النسخ المحدّثة من كل صف Version-Stamping. 

Udt:
نوع خاص يعرفه المستخدم User-Defined Type. 

Structured:
نوع خاص للبيانات المركبة في صورة جدول Table-valued، وسنتعرف عليه لاحقا. 

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

 

الثلاثاء، 21 يونيو 2016

استبداد


استبداد 

أُعاقبُها.. أُدلّلُها
أدلّلُها.. أعاقبُها!
أنا حرٌّ بسلطاني على رَيحانِ عينيها
أُباعدُها أُقرّبُها
أُبعثرُها أُرتّبُها
وآكلُها وأشربُها
وذا لو كانَ يُعجبُها! 

وأَرسُمُها بأحلامي كما أَهوَى
أثلثُّها أربُّعها
أُدوّرُها أُكوّرُها،
أُسطّحُها أُكعبُها
أنا فنانُ إبداعي
ولو أحببتُ أَشطبُها! 

وأُنشئُها كما أَهوَى
وأَصهَرُها وأَسبكُها
أنا برهانُ هندستي
على عشقي أُقولبُها
وإمّا غيرتي تَطغَي
ففي قلبي أعلّبُها! 

ولو ملّتْ أُفاجئُها
ولو حزِنَتْ أداعبُها
ولو غضِبَتْ أصالحُها
ولو بَعُدَتْ أُراقبُها
ولو جرَحَتْ أحاسيسي بأشواقي أُعاتبُها
أنا كخبيرِها النفسيِّ في صدري أُطبّبُها 

ولو شطَّتْ بلا مأوَى،
بلا ريبٍ أُواكبُها
وأُضحِي شمسَ ذِكراها
فتَتبعُني كواكبُها
وحين تقولُ "تكرهُني"
بلا ريبٍ أُكذّبُها
فلي مِن حبِّها عهدٌ،
ولي وحدي عواقبُها
لها في التيهِ بُوصَلتي
وفي بحري مراكبُها
أنا عنوانُ رحلتِها
وجُغرافيُّ بهجتِها
ومَشرِقُها ومَغرِبُها 

ستُضحي لي كما أَهوَى
على مَثَلي أُصوِّبُها
أنا أستاذُ برمجةٍ
على ذَوقي أُحَوسِبُها
وأَطبعُها بأفكاري
وفي عقلي أُسَطِّبُها 

فما يُغني تَمرّدُها؟
لها عشقي يُهذِّبُها
ولو بعنادِها أَمْـلَتْ
بأشواقي أعذّبُها
أنا حرٌ بِطُغياني على جنّاتِ خدّيها
ببُستاني كما أَهوَى لوَرداتي أُشذّبُها
وذا لو كانَ يُعجبُها! 
محمد حمدي غانم
19/6/2016

 

أنواع البيانات الثنائية في سيكويل سيرفر


أنواع البيانات الثنائية في سيكويل سيرفر:

إذا أردت بيانات ثنائية Binary Data في أحد الأعمدة التي تنشئها في جداول سيكويل سيرفر، فاجعل له أحد الأنواع التالية:                           

binary(n):
بيانات ثنائية ثابتة الطول، طولها n بشرط ألا تزيد قيمة n عن 8000 Bytes.. لو اخترت n = 50 مثلا، وحفظت في إحدى الخانات بيانات تقل عن 50 وحدة، فسيتم إكمال الباقي بالعدم Null (الحرف رقم 0 في ترميز ASCII).. ويتم حفظ هذه البيانات في n+4 Bytes.

varbinary(n):
بيانات ثنائية مرنة متغيرة الطول، بحد أقصى 8000 بايت.. ولو حفظت بيانات طولها أقل من n، لا يتم إكمال الطول الناقص بأي شيء. 

Varbinary(MAX):
هذه الصيغة حالة خاصة من النوع السابق، وهي تجعل الحقل يستوعب بيانات يصل حجمها إلى 2^31 -1 بايت.. وفي هذه الحالة يكون حجم الحقل = عدد الوحدات المكتوبة فيه + 2. 

image:
بيانات ثنائية مرنة متغيرة الطول، يمكن أن تصل إلى حوالي 2 مليار وحدة ثنائية (تحديدا 2^31 -1 Bytes).

من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:
http://mhmdhmdy.blogspot.com.eg/2016/02/blog-post_28.html

الأحد، 19 يونيو 2016

أنا هائم فيك حتى السحور


أنا هائمٌ فيكِ حتّى السحورِ 

أنا صائمٌ عنكِ
كالماءِ والشَّهدِ
والعطرِ والوَردِ
والثَّغرِ والخدِّ
والغِيدِ والحُورِ
أنا صامتٌ عنكِ حتى الفطورِ
وما يَفعلُ الشِّعرُ حتّى السحورِ
يَصومُ الكلامُ مِن السِّحرِ عنكِ
ولا يُشبِعُ القلبَ نَجواه منكِ
ألا تَسمعينَ لذا النبضِ يَحكي
جميلَ التناجي؟
أما قالَ في لهفةٍ أنتِ تاجي؟
ومن لوعةٍ شوقُهُ غيرُ ناجي
فوانيسُ عينيكِ أطفالُ لَهوِي
إليها بشوقي الفراشاتُ تَهوي
أسجّلُ في راحتيكِ احتجاجي
أما زلتِ يا أنتِ ليلَ احتياجي؟
وإنّكِ نَجمي وفَجري ونوري؟
إذن فاسألي عنكِ ضِحْـكَ البدورِ
وآهةَ وجدي
ويا ريمُ رِفقا
فعيناكِ إفطارُ مَن هامَ شوقا
وتاقَ من القيظِ في العشقِ يُسقَى
من الماءِ والشَّهدِ
والعطرِ والوَردِ
والثَّغرِ والخدِّ
والغِيدِ والحُورِ
أتدرينَ أنّكِ غِيدي وحُوري؟
أنا هائمٌ فيكِ حتّى السحورِ
فيا مِنحةً مِن خيالِ غروري
أعيدي إلى القلبِ بعضَ السرورِ 

محمد حمدي غانم
17/6/2016

 

 

أنواع النصوص في سيكويل سيرفر


أنواع النصوص في سيكويل سيرفر:

إذا أردت حفظ نص في أحد الأعمدة التي تنشئها في جداول سيكويل سيرفر، فاجعل له أحد الأنواع التالية:

 

 

char(n):

نص ثابت الطول يتكون من عدد n من الحروف، يتم حفظه في مساحة n Bytes (لأن كل حرف يستهلك 1 بايت).. لاحظ أن هذا النوع لا يدعم الكود الموسع Unicode، لهذا ستكون الحروف المسموح بكتابتها هي فقط الحروف المتاحة على الخادم Server الذي توجد عليه قاعدة البيانات.. انتبه لهذا جيدا، لأنك في المشاريع الحقيقية قد تضع قاعدة البيانات على خادم في دولة أجنبية، وبالتالي لن يدعم اللغة العربية.

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

 

varchar(n):

مشابه للنوع char في كل شيء إلا في أمر واحد، وهو أنه يمثل نصا مرنا متغير الطول لا يقبل الحروف الموسعة، وأقصى عدد يقبله من الحروف هو n (الحد الأقصى لقيمة n هو 8000 حرف).. والقيمة الافتراضية لطول النص في هذا النوع هي 50 حرفا، وفي هذه الحالة لو حاولت كتابة نص طوله 51 حرفا فسيرفض سيكويل سيرفر ذلك، بينما لو كتبت نصا طوله 8 حروف فسيتم حفظه فعلا في 8 بايت، ولن يتم إكماله بمسافات.. واضح أن هذا يوفر مساحة التخزين، ويعطيك مرونة في حالة تفاوت أطوال النصوص التي ستدخلها في العمود.

 

varchar(MAX):

هذه الصيغة حالة خاصة من النوع السابق، وهي تجعل الحقل يستوعب نصا ضخما يصل إلى حجمه إلى 2^31 -1 حرفا.. وفي هذه الحالة يكون حجم الحقل = عدد حروف النص المكتوب فيه + 2.

ولا يمكن استخدام عمود من هذا النوع كمفتاح Key للجدول أو كمفتاح في أحد الفهارس Indexes.

 

text:

مشابه للنوع varchar في كل شيء، إلا أنه يسمح بحفظ نص مرن متغير الطول يمكن أن يصل إلى أكثر من 2 مليار حرف (تحديدا 2^31 -1 حرف).. وأيضا لا يقبل هذا النوع حروف الكود الموسع Unicode.

 

xml:

مشابه للنوع السابق، لكنه يتيح لك تخزين صفحات XML أو أجزاء منها في خانات العمود.

 

nchar(n):

نص ثابت الطول طوله n  (ويتم إكمال الحروف الناقصة بإضافة مسافات)، وهو يدعم الحروف الموسعة Unicode، لهذا يتم حفظ كل حرف في 2 Bytes، لهذا فإن أقصى عدد مسموح به من الحروف في هذا النوع هو 4000 حرف.. هذا النوع مناسب للغة العربية.

 

:nvarchar(n)

نص مرن متغير الطول يدعم الحروف الموسعة Unicode، بحد أقصى 4000 حرف.. هذا النوع مناسب للغة العربية.

 

nvarchar(MAX):

هذه الصيغة حالة خاصة من النوع السابق، وهي تجعل الحقل يستوعب نصا ضخما يصل حجمه إلى 2^31 -1 بايت.. وفي هذه الحالة يكون حجم الحقل
= 2×
عدد حروف النص المكتوب فيه + 2.

 

ntext:

نص مرن متغير الطول يدعم الحروف الموسعة Unicode، بحد أقصى حوالي مليار حرف (تحديدا 2^30 -1 حرف).. هذا النوع مناسب للغة العربية.

 

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