d خليل سليم – الصفحة 26 – مدونة الفريق

الكاتب: خليل سليم

  • خيارات إعداد البريد الإلكتروني لموقع

    بصفتي مطور مواقع بالدرجة الأولى، يتطلب مني دائما أن أقوم بإعداد خدمة البريد لمواقع إلكترونية أقوم ببرمجيتها ليكون بمقدور الشركة أو الشخص إنشاء بريد باسم الشركة مثل : info@aaaaa.com وهنا الخيارات المتاحة

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

    الخيارات المدفوعة متعددة، لكثرة الشركات التي تقدم خدمة استضافة البريد الالكتروني على النطاق ( الدومين )، وتتمايز الشركات فيها بينها، مثلا في مساحة البريد الإلكتروني، الحماية،  التصفية (الفلترة)… إلخ
    المشكلة في الخيارات المدفوعة هي تكلفتها المرتفعة نسبيا، فمثلا : متوسط أسعار إنشاء بريد إلكتروني واحد هي 5 دولار شهريا، أي سنويا 60 دولار، ولو أرادت الشركة إنشاء 10 حسابات بريد إلكتروني سيتوجب عليها دفع ما يزيد عن 500 دولار سنويا لاستضافة الايميلات.
    وفي نفس الوقت تكون الشركة قد دفعت ثمن الاستضافة العادية لموقعها مبلغ لا تزيد عن 150 دولار سنوي ( أتكلم عن أي موقع متوسط )، وحينما تخبر العميل بأنه يتوجب عليه أن يدفع 500 دولار كي يحصل على خدمة بريد فاخر  ( أغلب مزاياه لن يستخدمها أبدا )، فيتعجب منك لأن تكلفة البرمجة طوال العمر أقل من 1000 دولار، والحديث يطول.
    أما عن الشركات وأفضلها، كلها ممتازة لأنه في حالة الدفع الكل يتنافس، وصراحة لم أجرب أي منها في بيئة فعلية لمدة طويلة، تستحق أن أقوم بتقييمها.

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

    الآن لكي لا نطيل، ندخل في القسم الأهم ، وهو الخيار المجاني.

    أغلب شركات الاستضافة تقدم لك خدمة البريد الإلكتروني مجانا على نفس الاستضافة، حيث تقوم بالولوج إلى لوحة تحكم الاستضافة وإنشاء الحساب الإلكتروني، وتعطيك خيار الدخول إليه إما عبر برامج البريد الإلكتروني Email Clients  أو عن طريق صفحة ويب مثل mail.aaaaa.com.
    وهو خيار تعتمده الكثير من المواقع ولكن له  ما عليه هذا الخيار .
    العيوب
    1- مرتبط بالاستضافة: أي أن العميل إذا أراد بعد فترة تغيير شركة الاستضافة لأي سبب كان، فإنه سيخسر الحسابات ومحتواها ، وعليه أن يقوم بإنشاء حسابات من جديد، والمشكلة ليست بالحساب، بل في محتوى البريد السابق الذي خسره، وهو لا يقدر بثمن، صحيح أن هنالك خيارات نقل الرسائل Migration، ولكن أغلب الشركات لا تقدمه، أيضا يمكن إتباع حل هنا وهو استخدام برامج البريد الالكتروني Email Clients والتي تقدم خدمة حفظ الرسائل حتى لو تم تغيير الحساب، وأشهرها Microsoft Outlook & Mozilla ThunderBird ، ولا عجب أن الشركات الرسمية تصر على استخدام برنامج الأوتلووك

    2- مرتبط بالاستضافة: أي في حالة أن الاستضافة تعطلت، أو حث بها اختراق، أو تحديث صيانة، أو تم إغلاق منفذ …. إلخ، فإن خدمة البريد ستتوقف كليا، وما أسوأ أن يقوم شخص أو شركة بإرسال بريد لك ولا يصلك، أو تصلهم رسالة بفشل إرسال البريد.

    3- المشاكل الأمنية: حيث هنالك قاعدة في مجال الشبكات والسيرفرات وهي One Machine, One Service  ، أي جهاز واحد تعمل عليه خدمة واحدة فقط، مثلا كان في خادم IIS ثغرة، فتم اختراق السيرفر، فطبيعي ستضرر كل الخدمات الأخرى مثل خدمة البريد المستضافة على السيرفر، لذلك يفضل دائما أن تكون كل خدمة مستضافة على سيرفر خاص.

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

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

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

    وهنا يجب أن أعقب أن مشكلة إعداد حسابات البريد الإلكتروني وتكاليفها كانت قديما لا شيء، بسبب أن كبرى الشركات مثل مايكروسوفت وجوجل كانت تقدم هذه الخدمة مجانا، فمثلا مايكروسوفت كانت تقدم خدمة إنشاء حسابات لغاية 500 حساب ( عدد مهول ) وكل حساب لديه مساحة تزيد عن 3 جيجا، وأمست 7 جيجا لاحقا، ويمكن للمستخدمين الوصول إلى حسابهم كأنه حساب هوتميل تقليدي ، من خلال موقع الهوتميل أو الأوتلوك ، ولا أخفيكم أن بريد الشركة وحساباتها كانت على هذه الخدمة ، ولدي بريدي الخاص khalil@developers.ps .
    ثم بدأت الشركات بالطمع، فقامت جوجل بجعل الخدمة مدفوعة، ومن ثم مايكروسوفت، وهو عار عليهم بكل معاني العار، ويتوجب علينا قبل نهاية العام أن نجد شركة أخرى، بل حتى أن مايكروسوفت وفرت خدمة بديلة مدفوعة ( 5 دولار شهريا لحساب الواحد ) ولم توفر أداة لنقل الحسابات والرسائل من الخدمة القديمة ( تخلف واضح ).

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

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

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

  • إنشاء ملفات DOC & DOCX & PDF برمجيا في ASP.NET

    لا شك أنك في عملك المباشر مع مواقع ويب متوسطة إلى كبيرة أو في تطبيقات سطح مكتب، أن تتعرض لمشكلة إنشاء مستندات، مثلا شهادة أو فاتورة أو تقرير، ولا شك أن نوع الملف الهدف بالتأكيد سيكون إما وورد Microsoft Word  أو أكروبات Adobe PDF.

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

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

    السؤال إذا ما هي حلول إنشاء ملفات وورد برمجيا ( أو التعديل ) ، شرط أن تكون هذه الطريقة مجانية
    الإجابة هنالك عدة حلول سأعرض أفضلها هنا
    أفضل وأسهل هذه الحلول هو استخدام مكتبة DocX وهي مكتبة مفتوحة المصدر موجودة على موقع CodePlex ، عبر هذا الرابط http://docx.codeplex.com
    يتوافر في الرابط نفسه  رابط لمدونة تضع أمثلة وحلول يمكن الاستفادة منها.
    هذه المكتبة توفر دالة بحث واستبدال، وهي المطلوبة لحل مشكلتنا، وقد هداني الله لهذا الحل بعد مدة لا بأس بها من المعاناة، حيث تقوم بعمل شهادة محترمة بالوورد، ووضع مكان الاسم أي اسم مثلا XName  ومكان اسم الدورة XCourse ، وتقوم باستبدال الاسم برمجيا وتوتة توتة توتة ، خلصت الحدوتة.

    ويا فرحة ما تمت هنالك مشكلة، وهي تصدير الملف إلى PDF ، هذه المكتبة لا تعطيك هذا الخيار، فقط هي تتيح لك إنشاء وتعديل ملفات الوورد.

    لا تقلق هنالك حل حيث تتواجد مكتبة Microsoft.Office.Interop.Word المتواجدة في حزمة مايكروسوفت أوفيس عند تنصيبهاـ وهي تتيح لك القيام بهذه الخطوة.
    نعلم أن الوورد فعليا له مكتبات تقوم بعمله، وهنالك واجهة تستدعي هذه المكتبات، ومكتبتنا هذه من المكتبات الأساسية ( هي الوورد نفسه ) ، تمكنك من فتح ملف الوورد برمجيا وحفظه باسم ، واختيار الامتداد الذي تريده، مثلا PDF أو HTML أو RTL ، وهذه ميزة رائعة.
    تجد هذه المكتبة متوافرة عند إضافة Referece  وتجد العديد من الشروحات حولها.

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

    ما طرأ فوق بحد ذاته مشكلة، فأنت غالبا لن تستطيع الوصول للسيرفر، لأنك تكون تملك استضافة عادية، وهنا يجب البحث عن حلول، قد تخبرني بأنك تملك سيرفر، ولكن العميل غالبا يشتري استضافته بنفسه، أو سيرفره بنفسه، ولا تريد دخول دوامة معه.
    إحدى الحلول الأخرى هو استخدام مكتبة Open XML SDK المجانية التي تقدمها مايكروسوفت نفسها، إلا أن هذه المكتبة للأسف لا تتيح لك تصدير إلى PDF ، فقط تتيح لك إنشاء ملفات doc & docx ، وهو للأسف أمر ليس جيد في حق مايكروسوفت.

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

  • تحويل النصوص إلى HTML صحيحة ومرتبة

    تحويل النصوص إلى HTML صحيحة ومرتبة
    كثيرا ما تكتب نصوصا عادية وتكون مرتبة في ملف نصي – على سبيل المثال – وتريد أن
    تستخدمها في الموقع كما تم ترتيبها ، ولكن تتفاجأ بأن النص لا يكون منسق لأنه ليس
    HTML ، بل نص عادي ، وهنا تقول لو لدي طريقة لتحول هذه النصوص إلى وسوم HTML مرتبة
    ، الحل هنا مع هذه المكتبة مكتبة MarkdownSharp تحويل النصوص إلى html  ،
    ويمكنك تحميل المصدر البرمجي أيضا من هنا مكتبة MarkdownSharp تحويل النصوص إلى html

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

    قم بعمل صفحة وضع بها 2 صناديق نصية ، و أداة عنوان واحدة وزر

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

    
    Dim m As New MarkdownSharp.Markdown(True)
    Me.TextBox2.Text = m.Transform(Me.TextBox1.Text)
    Me.Label1.Text = Me.TextBox2.Text

    ستكون المخرجات في الصندوق النصي جاهزة لتستخدمها ، وفي أداة العنوان المثال
    للمشاهدة

    هذا مثال مباشر ، ولكن بدون أداة العنوان 
    مثال مباشر على التحويل

  • طريقة نقل بيانات من ملف Excel إلى قاعدة البيانات



    لنفترض أن لديك بيانات مخزنة في ملف إكسل وتريد نقلها إلى قاعدة البيانات …الطريقة سهلة وبسيطة

    1- ليكن ملف الإكسل التالي هو الملف الذي تريد نقل بياناته إلى قاعدة البيانات

    2- يجب في البداية أن تقوم بالاتصال بملف الإكسل لقراءة بياناته وتخزينها في Data Table   وسيكون بالطريقة التالية :

     

    Dim strConn As String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath("../db/Book1.xls") & ";" & _ "Extended Properties=Excel 8.0;"
    Dim myCommand As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn)
    Dim dt As DataTable = New DataTable()
    myCommand.Fill(dt)

    ولا تنسى أن تستورد مجال الأسماء Imports System.Data.OleDb  

    وأيضا يجب أن تضع $ بعد اسم صفحة الإكسل وهي هنا sheet1 وذلك لأنها ليست اسم جدول

    3- الآن سيتم نقل بيانات الإكسل من ال Data Table التي تم تخزينها فيها إلى الجدول الخاص بها في قاعدة البيانات ولنفترض أنه باسم Users:

    Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("connstr").ConnectionString)
    Dim cmd As SqlCommand = conn.CreateCommand
    conn.Open()
    For i As Integer = 0 To dt.Rows.Count – 1
    cmd.CommandText = "insert into Users (userid,username) values(@userid,@username)"
    cmd.Parameters.AddWithValue("@userid", dt.Rows(i)("userid"))
    cmd.Parameters.AddWithValue("@username", dt.Rows(i)("username"))
    cmd.ExecuteNonQuery()
    cmd.Parameters.Clear()
    Next
    conn.Close()
    End Using
     

    وهكذا نكون قد انتهينا

  • بعض تصاميم المواقع المتجاوبة الجميلة

    استكمالا لففرة منير بركات حول تصميم الويب التفاعلي Responsive Web Desigen أضع لكم بعض المواقع الجميلة والجذابة

    أو بالأحرى ، بعض المواقع التي ستصدمك

    25 Beautiful Responsive Web Design Examples for Inspiration

    30 Example

    60 Examples of Responsive Website Design

    60+ Creative Examples of Responsive Web Design

    24 Excellent Examples of Responsive Web Design

  • هل انتهيت من برمجة موقعك ب ASP.NET وتريد فحص قبل نشره ؟

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

    الإجابة من هذا الموقع
    http://webdevchecklist.com/asp.net/

    فكرة الموقع بسيطة ، وبالتأكيد ستعجبك وستعرف كيف تستخدمه

    بالتوفيق لكم

  • CheckBoxList Validation


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

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

    قم باستدعاء الأداة في قائمة الأدوات ، ثم  اسحب الأداة واستخدمها كأي أداة
    تحقق عادية
    بالتوفيق للجميع

  • حفظ WindowsForm  في صورة وطباعتها

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

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

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

    Code

    Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height) ‘ تحديد أبعاد الشاشة
    Dim screenCut As New Bitmap(Width, Height) ‘ تحديد أبعاد الصورة حسب أبعاد الفورم
    Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(screenCut) 
    g.CopyFromScreen(New Point(Location.X, Location.Y), New Point(0, 0), ScreenSize) ‘ حفظ الشاشة وتخزينها حسب بداية الفورم
    screenCut.Save("C:\mainimg.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) ‘ حفظ الصورة

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

    Code

    Dim source As Image = Bitmap.FromFile("C:\screenCut .jpg")
    Using dest As New Bitmap(source, (source.Width + source.Width), (source.Height + source.Height))
    dest.Save("c:\newimg.jpg")
    End Using

    حيث يتم جلب الصورة الأولى وثمن ثم مضاعفة أبعادها بجمعها لنفسها مرة أخرى وذلك مثل الضرب في 2، ويمكن إضافة أي تمدد للصورة وذلك بالضرب في الرقم الذي ترغب به ، فمثلا أبعاد الصورة 300*300 ونحن نريدها 450*450 ، وهنا يجب ضرب الطول ب1.5 وكذلك العرض بنفس القيمة وهكذا.
    وما قمنا به هو نسخ الشاشة، ومن ثم اقتطاع النموذج منها، ومن ثم التحكم في أبعاد الصورة

    وفق الله الجميع

  • إضافة جافاسكريبت في حدث النقر على وسم كائن

    العنوان يبدو ملخبط نوعا ما، ولكن للتوضيح، لديك  كائن فلاش embed أو غيره، وتريد
    إضافة تعليمة جافا سكريبت في حدث النقر على الفلاش، مثلا فتح نافذة جديدة، هنالك خدعة
    بسيطة لعمل هذا الأمر وهي كالتالي:
    1- بعض المتصفحات لن تدعم الحدث onclick لذلك سنستخدم الحدث : onmousedown
    2- يجب وضع الخاصية wmode إلى transparent والخاصية allowscriptaccess إلى true

    وهذا مثال على ذلك

        <div onmousedown="javascript:window.open('http://www.tkfithat.com/Details.aspx?depid=166');"
    style="text-align: center; vertical-align: middle"> <embed wmode="transparent" allowfullscreen="false"
    allowscriptaccess="always" height="136" type="application/x-shockwave-flash"
    pluginspage="http://www.macromedia.com/go/getflashplayer" width="300"
    src="http://www.3orod.com/ImagesStore/AdsMedia/201102161044541826936843.swf"
    quality="high" wmode="transparent" />
    </div>

     

    وهنا قمت بجعل الكود يفتح صفحة جديدة عند النقر على كائن الفلاش، وهذا الفكرة الأساسية
    ، تستطيع الاستزادة مثلا بتخصيص نفس هذه الخصائص للوسم <object> هنا وضعت الوسم
    <embed> على سبيل المثال.

  • أفضل طريقة لتعلم لغة برمجة واحترافها

    أتعرف …أعتقد أنه عند قراءتك للعنوان …. للوهلة الأولى سيتبدى في ذهنك السؤال التالي: هل فعلا هناك طريقة جيدة ومثالية لتعلم لغة برمجة وأيضا احترافها؟؟

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

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

    الآن أخبرني :

    إن كان لديك الرغبة في تعلم أمر معين في الحياة…مثل تعلم اللغة الإنجليزية أو قيادة السيارة أو تصليح الأجهزة الكهربائية وغيرها…ماذا تفعل ؟؟

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

    إذا…أنت تعرف الطريقة التي بها يمكنك تعلم لغة برمجة واحترافها….فتعلم لغة برمجة ستكون بنفس الطريقة التي تتعلم بها أي أمر آخر في حياتك.

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

    الآن لديك اللغة التي تريد تعلمها ولديك الرغبة القوية لذلك وأنا أؤكد على الرغبة كثيرا لأنه بدونها لن تكمل مشوارك في التعلم

    ستقوم بعد ذلك بقراءة كتب لتعلم قواعد اللغة ولا تقم بالقراءة كأنك تقرأ قصة أو مجلة للتسلية ولكن يجب عليك القراءة وتطبيق ما تقرأه بالموازنة فما نقرأه ننساه بسرعة ولكن ما نطبقه عمليا يظل محفورا في أذهاننا

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

    Dim x as integer

    ويتم كتابة نفس الأمر بلغة السي شارب بهذه الطريقة

    Int x;

    والأمر متشابه عند باقي لغات البرمجة وقس هذا الأمر على غيرها من الأوامر البرمجية..

    من هنا نستنتج أنك بتعلم لغة برمجة …تستطيع الانتقال بسهولة إلى أي لغة أخرى

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

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

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

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

    وأروع أمر هو بدون أدنى شك رؤيتك لنجاحك بعد تعبك وجهدك الذي استمر وقتا طويلا…ستغمرك السعادة والفرح عند انتهاءك من برنامج قد أخذ منك وقتا وجهدا كبيرا

    ترى أنت تتساءل لماذا أتكلم بهذه الثقة الكبيرة وكأنني مررت بهذه التجربة…أقول لك نعم..

    أنا أتكلم من تجربتي الشخصية التي مررت بها …وإلى الآن أتعلم أمورا جديدة في حياتي…فنحن مهما تعلمنا ستظل أمورا كثيرة لا نعرفها وسنظل نتعلم إلى الأبد.

    ومن يريد التعلم يبدأ من اليوم ولا يؤجل ذلك للغد وتمنياتي بالتوفيق لكل من سيبدأ باكرا