Thursday, April 24, 2014

برمجة متقدمة سي شارب المعالجة المتوازية المتعددة ثريد C# Multithreading

المعالجة المتوازية المتعددة C# - Multithreading

برمجة متقدمة سي شارب المعالجة المتوازية المتعددة C#  Multithreading
المعالجة المتوازية المتعددة ثريد C#  Multithreading

المعالجة المتوازية المتعددة C#  Multithreading

ماهو  thread   او التمرير او المسار المعاجة المجزئة ؟

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

مميزات المعالجة المتوازية للمسارات او الثريد

  • تقلل من الاستهلاك للمعالج
  • تزيد من كفاءة التطبيق

دورة حياة المعالجة المتعددة المتوازية المسارات Thread Life Cycle

عند استخدام المعالجة المتعددة يتم انشاء كائن من الفئة thread وينتهي الكائن بانتهاء المعالجة.
التالي هو جميع الحالات في دورة المعالجة المتوازية

  • Unstarted State   في هذه الحالة ثم انشاء كائن المعالجة ولكن لم يتم استدعاء الدالة التي تبداء بالثريد او معالجة  المسار.
  •   Ready State  وفي هذه الحالة يتم تجهيز المعالجة للبرنامج ويتم ارساله الى دورة المعالجة للبدء.
  •  Not Runnable State  وفي هذه الحالة تكون الثريد غير قابلة للتشغيل في الحالات التالية
    • ثم استدعاء دالة sleep
    • ثم استدعاء دالة الانتظار wait
    • ثم اغلاق المعالجة بواسطة مشغل المدخل والخارج i/o
  • Dead State   حالة الانهاء يتم استدعاءها عند الانتهاء من تنفيذ البرنامج بالكامل او عند الغاء العملية.

المسار الرئيسي Main Thread

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

مثال على المسار الرئيسي 


using System;
using System.Threading;

namespace MultithreadingApplication
{
    class MainThreadProgram
    {
        static void Main(string[] args)
        {
            Thread th = Thread.CurrentThread;
            th.Name = "MainThread";
            Console.WriteLine("This is {0}", th.Name);
            Console.ReadKey();
        }
    }
}

ناتج المثال.

This is MainThread

إنشاء معالجة متوازية Creating Threads

باستخدام الدالة start نبداء المعالجة المتوازية

using System;
using System.Threading;

namespace MultithreadingApplication
{
    class ThreadCreationProgram
    {
        public static void CallToChildThread()
        {
            Console.WriteLine("Child thread starts");
        }
        
        static void Main(string[] args)
        {
            ThreadStart childref = new ThreadStart(CallToChildThread);
            Console.WriteLine("In Main: Creating the Child thread");
            Thread childThread = new Thread(childref);
            childThread.Start();
            Console.ReadKey();
        }
    }
}

ناتج كود انشاء المعالجة  المتوازية اوالمسارات

In Main: Creating the Child thread
Child thread starts

Managing Threadsإدارة المعالجة المتوازية

 sleep() الدالة تستخدم في ايقاف المعالجة لفترة من الزمن.
using System;
using System.Threading;

namespace MultithreadingApplication
{
    class ThreadCreationProgram
    {
        public static void CallToChildThread()
        {
            Console.WriteLine("Child thread starts");
            // the thread is paused for 5000 milliseconds
            int sleepfor = 5000; 
            Console.WriteLine("Child Thread Paused for {0} seconds", 
                              sleepfor / 1000);
            Thread.Sleep(sleepfor);
            Console.WriteLine("Child thread resumes");
        }
        
        static void Main(string[] args)
        {
            ThreadStart childref = new ThreadStart(CallToChildThread);
            Console.WriteLine("In Main: Creating the Child thread");
            Thread childThread = new Thread(childref);
            childThread.Start();
            Console.ReadKey();
        }
    }
}
ناتج كود معالجة  المسارات اوالثريد
In Main: Creating the Child thread
Child thread starts
Child Thread Paused for 5 seconds
Child thread resumes

انهاء المعالجة المساراتDestroying Threads

Abort() تستخدم الدالة لانهاء المعالجة المتعددة
ThreadAbortException. من خلال القاء اسثتناء

using System;
using System.Threading;

namespace MultithreadingApplication
{
    class ThreadCreationProgram
    {
        public static void CallToChildThread()
        {
            try
            {

                Console.WriteLine("Child thread starts");
                // do some work, like counting to 10
                for (int counter = 0; counter <= 10; counter++)
                {
                    Thread.Sleep(500);
                    Console.WriteLine(counter);
                }
                Console.WriteLine("Child Thread Completed");

            }
            catch (ThreadAbortException e)
            {
                Console.WriteLine("Thread Abort Exception");
            }
            finally
            {
                Console.WriteLine("Couldn't catch the Thread Exception");
            }

        }
        
        static void Main(string[] args)
        {
            ThreadStart childref = new ThreadStart(CallToChildThread);
            Console.WriteLine("In Main: Creating the Child thread");
            Thread childThread = new Thread(childref);
            childThread.Start();
            //stop the main thread for some time
            Thread.Sleep(2000);
            //now abort the child
            Console.WriteLine("In Main: Aborting the Child thread");
            childThread.Abort();
            Console.ReadKey();
        }
    }
}
ناتج كود تدمير المعالجة المتوازية
In Main: Creating the Child thread
Child thread starts
0
1
2
In Main: Aborting the Child thread
Thread Abort Exception
Couldn't catch the Thread Exception 

  


لمتابعتي
تويتر: @aalmahallawi
IT Help Desk,
SEO Arabic Expert ,PHP,C#,ASPX
Al alami st
gaza -jabaliaGaza Strip
Palestine
Email :ahmed.almahallawi@gmail.com
DOB: 05/10/1984
1 comment

Tuesday, April 22, 2014

الحوسبة السحابية - معمارية السحابة المحوسبة Cloud Computing Architecture

معمارية السحابة المحوسبة
Cloud Computing Architecture

معمارية السحابة المحوسبة Cloud Computing Architecture

تتكون معمارية السحابة المحوسبة من عدة مكونات ويممكننا تقسيم هذه المكونات الي قسمين رأسيين.هما
  • معمارية الواجهة  الامامية  Front End.
  • معمارية الواجهة الخلفية Back End.
معمارية السحابة المحوسبة Cloud Computing Architecture
معمارية السحابة المحوسبة Cloud Computing Architecture

معمارية الواجهة  الامامية  Front End.

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

معمارية الواجهة الخلفية Back End.

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

نقاط مهمة جدا

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

Ahmed Ata Almahallawi
Freelancer
IT Help Desk,
SEO experience,PHP,C#,ASPX,SQL
Al alami st
Gaza -jabaliaGaza Strip
Palestine
DOB: 05/10/1984

22/4/2014

No comments

أساسيات قواعد البيانات إنشاء أو بناء قاعدة البيانات SQL CREATE Database

 إنشاء أو بناء قاعدة البيانات 

SQL CREATE Database

أساسيات قواعد البيانات إنشاء أو بناء قاعدة البيانات SQL CREATE Database
 إنشاء أو بناء قاعدة البيانات

جملة إنشاء أو بناء قاعدة البيانات SQL CREATE Database

تستخدم لغة قواعد البيانات البنيوية الامر CREATE DATABASE لانشاء قاعدة بيانات جديدة.

الصيغة العامة لإنشاء أو بناء قاعدة البيانات SQL CREATE Database

CREATE DATABASE DatabaseName;

مثال على  إنشاء أو بناء قاعدة البيانات SQL CREATE Database

SQL> CREATE DATABASE newDB;
في المثال السابق انشأنا قاعدة بيانات جديدة باسم newDB.

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

an check it in the list of databases as follows:
SQL> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| AMROOD             |
| TUTORIALSPOINT     |
| mysql              |
| orig               |
| test               |
| newDB             |
+--------------------+
7 rows in set (0.00 sec)






Ahmed Ata Almahallawi
Freelancer
IT Help Desk,
SEO experience,PHP,C#,ASPX,SQL
Al alami st
Gaza -jabaliaGaza Strip
Palestine
DOB: 05/10/1984

22/4/2014
No comments

Sunday, April 20, 2014

أساسيات البرمجة برمجة المواقع بي اتش بي الجلسات PHP Sessions

الجلسات
 PHP Sessions

ماهي الجلسات PHP Sessions

الجلسات PHP Sessions هي عبارة  عن طريق تجعل البيانات قابلة للوصول اليها من خلال عدة صفحات على مستوى الموقع بالكامل.بمعنى تمنحك الصلاحية للدخول الى  المعلومات على صفحات الويب.
الجلسات PHP Sessions تقوم بانشاء ملف في المجلد - المسار المؤقت على السيرفر حيث يتم تسجيل متغيرات الجلسة فيها وقيمها.وسوف تكون البيانات متوفر لكل الصفحات التي على موقع عند زيارة الصفحات.
مكان ملف الجلسات PHP Sessions المؤقت يتم تحديده من خلال ملف الاعدادات php.ini  في السطر session.save_path
وقبل تحديد المسار يجب التاكد من وجود الملف وصحة مساره.

عند بدء الجلسات PHP Sessions تحدث الخطوات التالية

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


أساسيات البرمجة  برمجة المواقع بي اتش بي الجلسات PHP Sessions


بدء الجلسة في البي اتش بي Starting a PHP Session:

ِالجلسة تبدء عن طريق استدعاء الدالة session_start()  تقوم هذه الدالة بفحص هل الجلسة بدات ام لا في حال لم تبداء تقوم ببدء جلسة جديدة. يفضل استخدام هذه الدالة في بداية ملف  البي اتش بي.
يتم حفظ المتغيرات وقيمها في المصفوفة المساعدة $_SESSION[] ويمكن الوصول الهذه المتغيرات خلال فترة حياة الجلسة.

مثال على الجلسات في البي اتش بي 

في المثال التالي سيتم حفظ المتغيرات الجلسة في counter سنتخدم الدالة  isset()  لفحص هل تم حفظ المتغيرات في المصفوفة المساعدة ام لا.


<?php
   session_start();
   if( isset( $_SESSION['counter'] ) )
   {
      $_SESSION['counter'] += 1;
   }
   else
   {
      $_SESSION['counter'] = 1;
   }
   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
?>
<html>
<head>
<title>بدء الجلسة</title>
</head>
<body>
<?php  echo ( $msg ); ?>
</body>
</html>

إنهاء أو تدمير الجلسة Destroying a PHP Session:

  كما توجد دالة لبدء الجلسة ايضا توجد دالة لانهاء او ازالة او تدمير الجلسة session_destroy() وكذلك توجد دالة لازالة القيمة من المصفوفة المساعدة وهي unset().


<?php
   unset($_SESSION['counter']);
?>


تشغيل بدء الجلسة تلقائيا Turning on Auto Session:

ليس بالضرورة بدء الجلسة عندما ياتي الزائر لموقعك فيمكنك بدء الجلسلة تلقائية بتشغيل بدء الجلسة تلقائيا من خلال ملف الاعدادات php.ini وذلك من خلال تغير القيمة الى واحد في السطرsession.auto_start .

الجلسات بدون كوكيزSessions without cookies:

  يمكن بدء الجلسات بدون كوكيز عندما يكون متصفح المستخدم لا يسمح بحفظ الكوكيز على الجهاز. فالطريقة هنا ارسال معرف الجلسة الى المتصقح باستخدام SID.نستخدم الدالة htmlspecialchars  وهي تستخدم لمنع الهجوم على الموقع باستخدام  xss. 

مثال


<?php
   session_start();

   if (isset($_SESSION['counter'])) {
      $_SESSION['counter'] = 1;
   } else {
      $_SESSION['counter']++;
   }

   $msg = "You have visited this page ".  $_SESSION['counter'];
   $msg .= "in this session.";
   echo ( $msg );?>
<p>
To continue  click following link <br />
<a  href="test.php?<?php echo htmlspecialchars(SID); ?>">aaa</a>
</p>








إذا أعجبك المقال فتابعني وشكرا
تويتر aalmahallawi@


No comments

الحوسبة السحابية - تقنيات السحابة المحوسبة Cloud Computing Technologies

الحوسبة السحابية - تقنيات السحابة المحوسبة
 Cloud Computing Technologies

الحوسبة السحابية - تقنيات السحابة المحوسبة Cloud Computing Technologies

توجد العدد من التقنيات التي تعمل في خلف في منصات تشغيل (ٍServers) السحابة الالكترونية وهى ما تجعل السحابة المحوسبة مرنة وموثوقة وقابل للاستخدام.وهذه التقنيات هي.
  1. الافنراضية Virtualization.
  2. المعمارية الموجهة نحو الخدمات( Service-Oriented Architecture (SOA.
  3. الحوسبة الشبكية  Grid Computing.
  4. الحوسبة الخدمية Utility Computing.

أولا الافتراضية Virtualization

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

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

ثانيا المعمارية الموجهة نحو الخدمات( Service-Oriented Architecture (SOA.

المعمارية الموجهة نحو الخدمات( Service-Oriented Architecture (SOA تساعد على استخدام التطبيقات كخدمة  للتطبيقات الاخرى بغض النظر عن المصنع او نوع المنتج او التقنية.ومع ذلك فانه من الممكن تبادل البيانات مابين المصنعيين بدون الحاجة الى برمجيات اوتغير الخدمة.

المعمارية الموجهة نحو الخدمات( Service-Oriented Architecture (SOA


ثالثا الحوسبة الشبكية  Grid Computing

الحوسبة الشبكية  Grid Computing تشير الى حوسبة موزعة والتي بها عدة حواسيب منتشرة في عدة أماكن متصلة مع بعض لانجاز الهدف المشترك.وهذه الحواسيب غير متجانسة (ليست من نفس المصنع) ومتباعدة جغرافيا.
الحوسبة الشبكية تجزء المهمة المعقدة إلى أجزاء أصغر. ويتم توزيع هذه الأجزاء الصغيرة لوحدات المعالجة المركزية الموجودة داخل الشبكة.
الحوسبة الشبكية  Grid Computing


رابعا الحوسبة الخدمية Utility Computing

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




إذا أعجبك المقال فتابعنا وشكرا
twitter :@aalmahallawi


No comments