إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

التزامن البرمجي (عندما يتعشى الفلاسفة)

تقليص
X
تقليص

  • التزامن البرمجي (عندما يتعشى الفلاسفة)

    بسم الله الرحمن الرحيم

    السلام عليكم ورحمته الله تعالى وبركاته , موضوعنا اليوم هو موضوع شيق ومثير للاهتمام وامل من الله عز وجل ان ينال اعجابكم وان يكون مفيدا قدر الامكان

    ادا كنت من محبي Graph theory فلابد وانك قد سمعت بخوارزمية Dijkstra وربما قد تعرف او لاتعرف انها سميت بهدا الاسم تيمنا بمكتشفها Edsger Dijkstra شخصيا لم اكن اعرف دلك ومازاد دهشتي هو كمية اسهامات هدا الشخص في علم الحاسوب ففي الحقيقة يعتبر Edsger Dijkstra واحدا من رواد هدا المجال وفي سنة 1965 قام Dijkstra بطرح امتحان لتلاميده حيث احتوى هدا الامتحان على سؤال يتعلق بكيفية جعل حواسيب تتزامن في الكتابة على قرص تسجيل خارجي دون ان يحدث خلل (حينها كان قد حل مشكل التزامن البرمجي) من بعد دلك قام Tony Hoare باعادة صياغة السؤال في مايعرف بمسالة عشاء الفلاسفة.

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



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


    بالطبع وقبل ان نتطرق الى المشكل الرئيسي هناك عدة اسئلة اخرى مثلا هل هده السباكتي لديدة ام لا , بكم اشتروها وهل هدا كل ماعندهم يعني الا يوجد خبز

    (هدا بالطبع كان فاصلا لكي نرتاح فيه و نترك فرصة لتفكير )


    حل هده المسالة قد لا يكون بديها كما تعتقدون فمثلا ادا اقترحنا هده الاستراتيجية

    عندما تشعر بالجوع احمل الشوكة التي توجد بيمينك او يسارك (ولكن يجب ان يكون هناك نظام اما ابدا باليسرى دائما او باليمنى دائما) وانتظر الى ان تصبح الشوكة الاخرى جاهزة عند توفر دلك قم بالاكل ثم ضع الشوكتان ربما قد تعتقدون ان هدا حل للمشكل ولكن لا فلو افترضنا مثلا ان كل الفلاسفة احسوا بالجوع في نفس الوقت فكلهم سوف يحمل شوكة وعندما يريد اخد الشوكة الاخرى فانه سوف تكون قد اخدت من قبل احد الفلاسفة والنتيجة النهائية هي كل فيلسوف يحمل شوكة وينتظر وبما ان استراتيجيتنا تقتضي انتظار الشوكة الاخرى فاننا سوف ننتظر الى ما لانهاية مما سوف يؤدي الى توقف كل شيئ هده الحالة تعرف ب deadlock او القفل الميت , ايضا وفي حالة ادا كان هناك فلاسفة ياكلون كثيرا ويفكرون قليلا (هدا سوف يحصل ادا انضممت اليهم للطاولة ) فان هؤلاء الفلاسفة سوف يستغلون في معظم الوقت الشوكات وبالتالي لن يتيحوا للفلاسفة الاخرين فرصة للاكل وهدا راجع الى انهم ياكلون بشكل مستمر وهدا مايعرف ب starvation او المجاعة لان الفلاسفة الدي هم ضحية لتفكيرهم لن ياكلوا ابدا ويقابل هدا المثال في الامر الواقع حواسيب اسرع او معالجات اسرع (هؤلاء هم الفلاسفة الدين ياكلون كثيرا)

    يمكن فرض قاعدة تنص على انه بعد حمل الشوكة انتظار مدة معينة وادا لم تتوفر الشوكة الاخرى وضع الشوكة التي سبق حملها والمحاولة بعد مدة معينة اخرى المشكلة هنا انه يمكن اعتبار نفس المشكل السابق (كل فيلسوف سوف يحمل شوكة في نفس الوقت) وبالتالي فان كل الفلاسفة سوف يحاولون ويحاولون الى ما لانهاية وهدا ما بعرف ب livelock اي القفل الحي وهدا راجع الى ان النظام في حركة مستمرة ولكن دون معنى

    هناك طريقة لحل مشكلة lock ودلك كالتالي سوف نقول لاربع فلاسفة ان يحملوا دائما الشوكة اليمنى ثم بعد دلك الشوكة اليسرى وسوف نقول للفيلسوف الخامس ان يقوم بالعكس اي ان يبدا باليسرى ثم اليمنى يمكنك تخيل الان نوع الحركة الدائرية التي اعطيناها لطاولة العشاء والتي ستضمن عدم وجود اي قفل ولكنها لن تحل لنا مسالة المجاعة او starvaition لانه يمكن دائما ان يكون هناك فيلسوف او عدة فلاسفة لا تتاح لهم ابدا فرصة الاكل.

    بما ان هؤلاء الفلاسفة يتصرفون بطريقة صبيانية فانه من البديهي التفكير في جعل شخص اخر يراقب هده العملية حيث سوف يقوم بدور شرطي المرور كلما اراد فيلسوف الاكل فهو سوف يقوم بطلب من هدا المراقب السماح له بدلك حيث انه عندما يريد فيلسوف ما الاكل فسوف يطلب من هدا الشخص السماح له بدلك وهنا حتى ولو طلب عدة فلاسفة الاكل في نفس الوقت فان المراقب لن يلبي الا طلب واحدا سواءا بشكل عشوائي او على حسب ترتيب معين وسوف يكون الامر كالتالي : سوف يطلب فيلسوف من المراقب الاكل حينها سوف يتوقف المراقب عن اخد اي طلبات وسوف ينتظر الى ان يقوم الفيلسوف الدي طلب ان ياكل ان يحمل الشوكتين وبمجرد ان يحمل الشوكتين فهو سوف يعود الى تلقي الطلبات من بقية الفلاسفة , هدا الحل هو مايعرف بحل ال Arbitrator او الحكم وهو يعتمد مبدا mutex او ما يعرف ب Mutual exclusion ورغم ان ترجمتها في موقع ويكيبديا هي استبعاد التشارك او إقصاء التشارك الا انني ارى ان الترجمة الافضل قد تكون هي التنازل المشترك لانه حسب فهمي فان كل فيلسوف يتنازل عن حقه في الاكل بطريقته الخاصة ويفوض مع الاخرين حكما لكي يقوم بتنظيم هده العملية لهم , رغما انكم قد تعتقدون للوهلة ان هدا الحل الدي قدم من Dijkstra لا يحتوي على خلل الا انه رغم كونه صحيحا الا انه ناقص فلو فرضنا مثلا ان لدينا خمس فلاسفة من A الى E وخمس شوكات مرقمة من 1 الى 5 على طاولة مستديرة وقام الفيلسوف A بطلب من الحكم الاكل فان الحكم سوف ينتظره الى ان يحمل الشوكة 1 و 2 (لاننا افترضانا طاولة مستديرة وترتيب الفلاسفة وترتيب الشوكات هو ترتيب اتجاه عقارب الساعة وافترضنا اننا نحمل الشوكة اليمنى ثم اليسرى) الان سوف يقوم الفيلسوف E بطلب الاكل وسوف يقوم الحكم بانتظاره الى ان يحمل كلاتا الشوكتين وبما ان الشوكة رقم 5 التي توجد على يمينه متاحة فسوف يحملها وفي هده الاثناء فالحكم مشغول بالفيلسوف E وينتظره ان يحمل الشوكة رقم 1 لانها الشوكة التي على يساره الان لو اراد الفيلسوف C ان يتناول طعامه فلن يستطيع دلك لان الحكم يتنظر الى ان يتاكد ان الفيلسوف E قد حمل شوكته اليسرى والتي لن تصبح متاحة الا ادا انتهى الفيلسوف A من تناول طعامه في هده الاثناء لا يوجد هناك سبب يمنع الفيلسوف C من تناول طعامه لان كلتا الشوكتين امامه متاحة ولكنه حكم عليه بالانتظار لان الحكم مشغول بطلب شخص اخر

    مايعاب على الطريقة السابقة هو كون الحكم لايعرف عدد الشوكات التي يجب تشاركهما فلو كانت لديه فكرة عن هدا العدد لما قام بصب مجمل تركيزه على شخص واحد فقط فلو كان يعرف انه لا تزال هناك امكانية لتناول السباكتي لشخص اخر لما قام بهدا الفعل , ادن لو استطعنا اقتراح طريقة تاخد بعين الاعتبار عدد المصادر (الشوكات) المتاحة و تاخد بعين الاعتبار مشاكل كل الطرق الاخرى فربما قد نجد حلا لهدا المشكل وننتهي من عشاء هؤلاء الفلاسفة , وبالفعل توجد هناك طريقة فعالة نوعا ما وهي تسمى بتقنية Semaphore هده التقنية ولكي تكون فعالة فيجب ان تكون مطبقة على كل من المستوى البرمجي والالكتروني (لحسن الحظ المعالجات لها هده الامكانية)

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

    ادا احس الفيلسوف A بالجوع فهو سوف يخبر الحكم الرئيسي انه جائع هدا الحكم سوف يرى هل هناك امكانية لشخص ان ياكل ودلك بالتاكد من عدد الشوكات المتاحة فمثلا ادا طلب الشخص الثاني ان ياكل فيجب ان يكون هناك على الاقل شوكتان متاحتان وادا كانت هناك امكانية فان الحكم الرئيسي سوف يسمح للفيلسوف الدي طلب ان ياكل ان يعلق لافتة انا اجائع وادا لم تكن هناك امكانية فهو سوف يطلب من الفيلسوف الانتظار الى ان تصبح هناك امكانية وكما قلنا فانه لو كانت هناك امكانية للاكل فان الفيلسوف سوف يعلق لافتة انا جائع مما سيجعل الحكم المكلف بهدا الفيلسوف (في الحقيقة الحكم مكلف بالشوكة اي المصادر ولكنني اخترت هدا النهج لانه اسهل) يتولى امره , هدا الحكم سوف يرى هل توجد هناك شوكتان امام الفيلسوف المكلف به ادا وجدهما فهو سوف يقوم بتغير لافتته من انا جائع الى انا اكل وسوف يحمل كلاتا الشوكتين في يديه لكي يتاكد ان لا يحملها حكم اخر ثم سيقوم باخبار الحكم الرئيسي ان عدد الشوكات المستعملة قد زاد مما سيعطي فكرة للحكم الرئيسي عن عدد الشوكات المتبقية ثم سوف يسمح للفيلسوف بان ياكل ومن بعد ان ينتهي الفيلسوف من الاكل فسوف يضع الشوكتين ويخبر الحكم الرئيسي بدلك ودلك لكي يقوم هدا الاخير بتحديث معلوماته حول عدد الشوكات المتاح وكما ترون فاننا تجنبنا مشكل الطريقة السابقة ودلك بتخصيص حكم لكل شخص

    قد تعتقدون ان المشكل الدي ناقشناه مشكل تافه ولا معنى له حينها سوف تكون ابعد من الحقيقة بالاف السنين الضوئية فالتزامن البرمجي او مايعرف ايضا ب Concurrency هو واحد من اهم اكتشافات البشرية فلولاه ماكنت لتستطيع ان تقرا هد المقال وتحمل ملفا في نفس الوقت وماكنت ستفتح اكثر من tab في متصفحك وما وما .... وكل هدا بفضل الله سبحانه وتعالى ان سخر لنا اناسا بحثوا وسالو وتوصولوا الى حلول ولولاهم لكانت التكنولوجيا وقفت في الالة الحاسبة

    في يومنا هدا الحواسيب اصبحت دات قوة خارقة واصبحنا نسمع عن حواسيب دات 8 او 10 معالجات ومفهوم thread او الخيط كما سمي في ويكيبيدبا اصبح من المبادئ الاساسية في علم الحاسوب وهو ببساطة يعني القدرة على تقسيم القوة الحاسوبية للحاسوب للعمل على نفس المشكل فمثلا لو افترضنا اننا في متاهة واردنا اكتشافها فالافضل لنا ان ننقسم وكل واحد يبحث بشكل منفرد في قسمه الخاصة من المتاهة بدلا من ان نكتشفها معا (رغم انني افضل الحل الاخير لانه في الافلام كلما انقسم الابطال الا وانتهى بهم الامر في مصيبة ) نفس الامر ينطبق على الحاسوب فكل معالج سوف يعمل بشكل منفرد (يمكننا فعل دلك حتى ولو كان هناك معالج واحد ولكن افضل ان تفهم هكدا وربما ساتطرق للفرق في موضوع اخر) ولكن عادة ما يملكون نفس المصادر وبالتالي لا بد من تقسيم هده المصارد بشكل يسمح بالكفائة الافضل

    من بين اللغات البرمجية التي لم اعرها اي اهتمام هي لغة Go وهي لغة تم تطويرها من طرف Google واتدكر اني كنت اعتقد انها لغة لا يمكن ان تنافس لغات دات صيت وتاريخ مثلا ك C و C++ و Java و .. ولكنني مؤخرا قمت بقراءة كتاب عنها واندهشت من مدى سهولتها وتوجهها التطبيقي والغير اكاديمي فهي لغة صممت لكي تكون صديقة للمبرمج وليس العكس والاجمل من دلك انها لغة صممت خصيصا لتعامل مع Multithreading فعلى غرار اللغات الاخرى فانت لست في حاجة الى مكتبة خاصة لكي تقدم لك هده الوظيفة ففي الحقيقة Go لها كلمة خاصة لجعل دالة تعمل ك thread هده الكلمة هي : تشووووووووووووووووووويق go نعم هده هي الكلمة فادا اردت ان تنفد دالة بشكل مستقل فكل ما عليك فعله هو كتابة go متبوعا باسم الدالة والاجمل من دلك ان معظم اللغات البرمجية تقدم مكتبات او في حالة go قنوات تسمح بضمان التزامن البرمجي بين threads




    فيما يلي سوف اقدم لكم برنامج يحاكي مسالة عشاء الفلاسفة ولانني دقت درعا بمشالكهم فانني لن ادعو الى 3 فلاسفة وبالطبع المبدا يبقى نفسه

    كود PHP:
    package main

    import 
    (
        
    "fmt"
        "math/rand"
        "time"
    )

    type philo struct {
        
    Name                    string
        ID                      int
        RightForkId
    LeftForkId int
    }

    func (p philoeat() {
        
    := 1
        
    for == {
            if 
    fk[p.ID%3] == && fk[(p.ID+1)%3] == {
                
    fk[p.ID%3] = 1
                fk
    [(p.ID+1)%3] = 1
                fmt
    .Printf("Philosopher : %s is eating\n"p.Name)
                
    time.Sleep(time.Duration(rand.Int63n(1000)) * time.Millisecond)
                
    fk[p.ID%3] = 0
                fk
    [(p.ID+1)%3] = 0
                t 
    2
            
    } else {
                
    fmt.Printf("Philosopher : %s is hungry\n"p.Name)
            }
        }
    }
    func (p philothink() {
        
    fmt.Printf("Philosopher : %s is thinking\n"p.Name)
        
    time.Sleep(time.Duration(rand.Int63n(1000)) * time.Millisecond)
    }

    func (p philolive() {
        
    := 1
        
    for == {
            
    p.think()
            
    p.eat()
        }
    }

    var 
    fk [3]int

    func main
    () {
        var 
    Ph [3]philo
        
    var input string

        Ph
    [0] = philo{"A"012}
        
    Ph[1] = philo{"B"123}
        
    Ph[2] = philo{"C"231}
        for 
    _:= range Ph {
            
    go p.live()
        }
        
    fmt.Scanln(&input)

    لم استعمل مبدا semaphore ولكنني فقط قمت بمحاكات هده المسالة فكل فيلسوف يفكر ثم يحاول الاكل واد لم يجد شوكة متاحة فسوف يحاول مرة اخرى الى مالانهاية ربما ادا لم اتكاسل قد اطر حلا يتضمن semaphore
    ويبقى السؤال الاهم ترى كيف كانت نتائج الامتحان الدي طرحه Dijkstra على تلاميده

    اخيرا اتمنى ان يكون الموضوع قد نال اعجابكم فلقد حاولت جاهدا جعله مختصرا (رغم انني لم اتطرق الى كل الطرق) وفي المتناول لانه موضوع صعب نوعا ما فادا احسستم بانه صعب فهدا من قلة فهمي وان كنت قد اخطات فهدا من غبائي وجهلي واما ان كان سهلا لديدا (يبدوا انني بدات احس بالجوع ) مفيدا فهدا من فضل الله وتوفيقه.
      لا يمكن إضافة تعليقات.

    التصانيف

    تقليص

    Latest Articles

    تقليص

    • تجربة تثبيت توزيعة ديبيان بجانب ويندوز بدون usb او cd
      أحمد غريب
      التجربة تمت على VirtualBox النظام ويندوز اكسبي قرص صلب واحد قسمين c و d

      التجربة قسمين القسم الاول تجهيز ملف iso دبيان لعملية الاقلاع لايف من الهاردسك والقسم الثاني عملية الثتبيت تحتاج الى اتصال بالانترنت
      و استخدمت برنامج UltraISO لعمل virtual cd drive لملف iso

      1- نسخ ملف iso دبيان داخل القرص C
      2- تركيب الملف iso كقرص وهمي "mount"
      3- فتح debian-lnstaller loader ثم نكست نكست نكست

      4- حذف كل ما يوجد في ملف grup.cfg موجود في C داخل في مجلد win32-loader

      ثم اضافة مايلي
      كود:
      menuentry 'debian-live-8-amd64-gnome-desktop' {
          set isofile='/debian-live-8.6.0-amd64-gnome-desktop.iso'
          loopback loop $isofile
          linux (loop)/live/vmlinuz boot=live config fromiso=/dev/sda1/$isofile
          initrd (loop)/live/initrd.img
      }
      استبدال initrd.gz موجود في داخل win32-loade التحميل من الرابط
      http://ftp.nl.debian.org/debian/dists/testing/main/installer-amd64/current/images/hd-media/
      بعد ...
      27-11-2016, 03:08 PM
    • عداد الإستغفار
      مبتدى في للينكس
      السلام عليكم ورحمة الله و بركاته

      شرح فكرة السكربت:

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


      شرح إعداد السكربت:

      1. قم بفتح مجلد Home وقم بإنشاء مجلد بإسم counter

      2. في داخل المجلد counter قم بإنشاء ملف نصي بإسم Counter.java , ثم قم بنسخ السكربت التالية و ضعه في داخل الملف ثم قم بالحفظ



      :
      package counter; import java.awt.BorderLayout; import java.awt.Event; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.SwingConstants; public class Counter extends JFrame { private static String fileName = System.getProperty("user.dir") + "/counter/count.txt"; public Counter() { this.setTitle("Counter"); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack(); this.setSize(150, 150); this.setVisible(true); } public static void main(String[] args) { Counter obj = new Counter(); int count = 0; try { try { try { String countString = readFile(fileName, StandardCharsets.UTF_8).trim(); count = (int) Integer.parseInt(countString); } catch (Exception e) { outResult(fileName, String.valueOf(count)); } finally { if (count
      ...
      23-11-2016, 02:11 AM
    • سكربت بايثون لتسهيل تثبيت بعض الأشياء في فيدورا
      yucef
      بسم الله الرحمن الرحيم
      السلام عليكم ورحمة الله وبركاته




      قمت بعمل سكربت بايثون لتسهل تثبيت بعض الأشياء لفيدورا ,طريقة تنزيل وتشغيل السكربت مشروحة في هذا الرابط .

      https://github.com/yucefsourani/arfedy

      ...
      23-11-2016, 02:09 AM
    • إعادة تسمية الملفات باستخدام rename
      OtmanGX
      لينكس على السّريع : إعادة تسمية الملفات باستخدام rename


      تذكير بالموضوع السابق : إعادة تسمية الملفات باستخدام mv

      كما في المرة السابقة سنتحدث اليوم عن إعادة تسمية مجموعة من الملفات لكن باستخدام أداة أخرى وهي rename ؛ بحيث أنّنا لن نضطر لاستعمال حلقات التكرار والأمر مشابه نوعا ما لما يقوم به الأمرsed ، لكن الأداة rename تستخدم التعابير النظامية perlexpr لكننا سنذكر فقط التعابير النظامية المشتركة بين الاثنين .
      بعض خصائص الأمر :
      n, –no-act- : يوصى باستخدام هذه الخاصية كثيرا ، فمن خلالها يتم إظهار التغييرات التي ستتم بدون إجراء أي تعديل
      f, –force : الكتابة على الملفات بدون أدنى تحذير
      v, –verbose – : تفعيل وضع verbose ليتم إظهار التغييرات الجارية
      ويكون الشكل العام للأمر كالتالي :

      :
      rename [option] 's/old-name/new-name/' file
      باستبدال file بالملفات التي تود تغيير أسمائها
      كمثال أوّلي مثلا نريد استبدال المسافات الفارغة المتواجدة في أسماء الملفات أو المجلدات بالرمز _ :

      المثال 1 :
      :
      rename 's/ /_/g' *
      g ليتم الاستبدال في أكثر من موضع إن وجد
      الآن سنقوم كالعادة بإنشاء مجلد نقوم فيه بأمثلتنا
      ...
      23-11-2016, 02:05 AM
    • المراقبة العالمية ! Global surveillance
      عبدالرحمـن محمد
      السلام عليكم ورحمة الله

      مقدمة :
      في يونيو 2013، سرَّب إدوارد سنودين، وهو عميل متعاقد مع وكالة الأمن القومي، مستندات تّصِف بريسم "ومجموعة برامج أخري" بأنه برنامج يتيح مراقبة معمقة للاتصالات الحية والمعلومات المخزنة. ويمكن من استهداف أي عميل لشركة منخرطة في برنامج بريسم، في حال كان هذا العميل يسكن خارج الولايات المتحدة، أو كان مواطنًا أمريكيًا له اتصالات تتضمن محتويات وِب خاصة بأشخاص خارج الولايات المتحدة. البيانات التي يقال أن بريسم يمكِّن من الحصول عليها تتضمن، رسائل البريد الإلكتروني، ومحادثات الفيديو والصوت، والصور، والاتصالات الصوتية ببرتوكول الإنترنت، وعمليات نقل الملفات، وإخطارات الولوج وتفاصيل الشبكات الاجتماعية.
      كشفت الوثائق المسرّبة أن NSA كانت قادرة على الدخول مباشرة إلى الخوادم الخاصة لكل من
      ...
      23-11-2016, 02:04 AM
    • اضافة مستخدم لينيكس جديد و استعمال نفس اسم الحساب لMySQL و قاعدة بيانات بإسمه ايضًا.
      superlinux
      طبعًا هذه استعملها لفتح حساب جديد لشخص يريد ان يستعمل مجلده المنزل (او home directory بالانجليزي) لحفظ موقع الويب خاصته. يعني هذه طريقة ارجو تكون خفيفة ظريفة لإدارة الخادم عليكم. و هكذا ابدؤوا بيع المواقع عالسريع.

      انا استعمل دبيان 8.0 جسي هنا.

      قبل أي شيء, لتوظيف المجلدات المنزل كلها لتكون محافظ لصفحات ويب لكل مستخدم. نفعّل الوحدة userdir:
      :
      a2enmod userdir
      بس على شان تفهم كيف تحفظ الامر السابق: a2 = apache2 web server , enmod =enable module
      هناك الكثير من الاوامر تخص خادم الويب اباتشي تبدأ بــ a2 .

      ثم حرر بأي محرر نصي مثل vi او pico ملف اعدادات الاباتشي:

      :
      vi /etc/apache2/apache2.conf
      ضع في آخر سطر في الملف على سطر مستقل لوحده ما يلي:
      :
      UserDir public
      UserDir disable root
      الكلمة public_html هو اسم مجلد موجود في المجلد المنزل مباشرة. بمعنى لو كان عندك اسم مستخدم اسمه saleem (سليم) , لازم سليم يضع موقعه على الخادم داخل مسار القرص /home/saleem/public_html/ . و التعل...
      23-11-2016, 02:03 AM
    يعمل...
    X