يبدو أن كل موقع إلكتروني يُطالبنا بالتوقف عن استخدام كلمات المرور. ويُطلب منا استخدام بديل يُسمى " مفاتيح المرور" . قد يكون هذا الأمر مُقلقًا بعض الشيء إذا كنت مُعتادًا على كلمات المرور ولا تفهم تمامًا هذه المفاتيح الغامضة.
تزعم بعض المواقع الإلكترونية أن مفاتيح المرور أكثر أمانًا أو أكثر ملاءمة أو ما شابه ذلك من مزايا. صحيح أن مفاتيح المرور قد تكون أكثر أمانًا من كلمات المرور، وقد تكون بالفعل أكثر ملاءمة، لكن هذه ليست الحقيقة كاملة. فمفاتيح المرور ليست مصممة لمنح الأولوية لمصالحك. وكما هو الحال مع حصان طروادة، تبدو مفاتيح المرور أنيقة ظاهريًا، لكنها تخفي في طياتها ما يثير القلق.
الأمر المهم الذي يجب معرفته هو أنه على عكس أي نوع آخر من بيانات اعتماد تسجيل الدخول، لا تملك سيطرة كاملة على كلمات المرور الخاصة بك . فمع كلمات المرور، يمكنك اختيار مكان تدوينها؛ ومع تطبيقات المصادقة، يمكنك تحديد أيها تستخدم (فهي قابلة للتبديل إلى حد كبير)؛ ومع مفاتيح الأمان المادية، يمكنك إعطاؤها لزميلك إذا كنت تثق به تمامًا. لكن مع كلمات المرور، تأتي آلية خفية تسمح للمواقع التي تستخدمها عليها بتقليص قدرتك تدريجيًا على التصرف بها كما تشاء واستخدامها مع الأجهزة والبرامج التي تفضلها.
سأشرح كيف يمكن ذلك لاحقًا، ولكن دعونا أولاً نلقي نظرة على من يريد منك استخدام مفاتيح المرور.
مفاتيح المرور هي اختراع تحالف FIDO ، وهو عبارة عن اتحاد يضم عددًا من المصالح المتنافسة المختلفة - شركات التكنولوجيا الكبرى، وشركات التكنولوجيا الصغيرة، والحكومات الوطنية، ووكالات الاستخبارات، والبنوك، والمؤسسات العامة المختلفة، وحتى عدد قليل من المنظمات غير الربحية مثل Mozilla - والذين يتفقون جميعًا على أن مفاتيح المرور هي قضية جيدة وعادلة.
لكل عضو في تحالف FIDO مصالحه الخاصة. تسعى شركات التكنولوجيا الكبرى إلى إدخال بعض الإزعاجات البسيطة إلى حياتنا لزيادة مبيعات الإعلانات. وترغب وكالات الاستخبارات في تتبع كل شخص في العالم. وتسعى البنوك إلى التحرر من المسؤولية القانونية. أما شركات التكنولوجيا الصغيرة، فتبحث عن حلول رخيصة لتقليل التزاماتها. وتريد موزيلا تجنب خوض معركة شرسة في أي قضية. لا أدعي أن أيًا من هذه الدوافع سيئة، لكن من اللافت للنظر عدم وجود أي جماعات مناصرة للمستهلكين ضمن أعضاء تحالف FIDO. (يتناقض هذا مع، على سبيل المثال، اتحاد شبكة الويب العالمية ( W3C )، المنظمة التي تحدد المعايير المستخدمة على الإنترنت. فإلى جانب الشركات الأعضاء المعتادة، يضم الاتحاد جماعات المصلحة العامة، والجامعات، وتيم بيرنرز لي، عالم الحاسوب البريطاني الذي اخترع شبكة الويب العالمية عام 1989. بصراحة، لو انضم غاندالف نفسه إلى W3C، ما كان غريبًا). أما فيما يتعلق بتحالف FIDO، فلا يوجد فيه من يدافع بقوة عن مصالح المستخدم.
المزيد
مسار التقنية
الاثنين، 19 أكتوبر 2026
الخميس، 24 سبتمبر 2026
ما هي شجرة B-tree؟
تلعب شجرة B (B-tree) دوراً جوهرياً في العديد من البرمجيات، ولا سيما أنظمة إدارة قواعد البيانات (DBMS). إذ تعتمد أنظمة مثل MySQL وPostgres وMongoDB وDynamo وغيرها الكثير على أشجار B لإجراء عمليات بحث فعالة عن البيانات باستخدام الفهارس (indexes). وبحلول نهاية هذا المقال، ستكون قد تعرفت على آلية عمل أشجار B وأشجار +B، وسبب استخدام قواعد البيانات لها في بناء الفهارس، ولماذا قد يكون استخدام مُعرِّف فريد عالمياً (UUID) كمفتاح أساسي (primary key) فكرةً غير موفقة. كما ستتاح لك فرصة التفاعل مع رسوم متحركة توضيحية لهياكل البيانات التي نناقشها؛ لذا استعد لاستخدام الأزرار والتفاعل معها.
يوفر علم الحاسوب مجموعة واسعة من هياكل البيانات التي يمكن الاختيار من بينها لتخزين البيانات والبحث فيها وإدارتها على الحاسوب. وتُعد شجرة B إحدى هذه الهياكل، وهي شائعة الاستخدام في تطبيقات قواعد البيانات. تقوم أشجار B بتخزين أزواج من البيانات -تُعرف باسم "المفاتيح" و"القيم"- فيما يسميه المبرمجون "هيكلاً شجرياً"؛ ورغم هذه التسمية، فإن الشكل الفعلي لهذا الهيكل يشبه إلى حد كبير نظام الجذور النباتية.
ستجد أدناه العنصر التفاعلي الأول في هذه التدوينة؛ حيث يتيح لك هذا العنصر تصور هيكلية شجرة B ومراقبة ما يحدث عند إضافة أزواج من المفاتيح والقيم، أو عند تغيير عدد هذه الأزواج في كل عقدة (node). جرب ذلك بنفسك من خلال النقر على زر "إضافة" (Add) أو "إضافة عشوائية" (Add random) بضع مرات، وحاول تكوين فهم بديهي لآلية عملها قبل أن ننتقل إلى التفاصيل.
تتكون شجرة B (B-tree) من عُقد (تُمثَّل بالمستطيلات) ومؤشرات للأبناء (الخطوط التي تربط بين العُقد). نُطلق على العقدة الموجودة في أعلى الشجرة اسم "العقدة الجذرية" (root node)، وعلى العقد الموجودة في المستوى الأدنى اسم "العقد الورقية" (leaf nodes)، بينما تُسمى بقية العقد "العقد الداخلية" (internal nodes). قد يختلف التعريف الدقيق لشجرة B باختلاف المصدر، ولكن التعريف التالي يُعد تعريفاً نموذجياً وشائعاً:
شجرة B من الرتبة K هي بنية شجرية تتمتع بالخصائص التالية:
تُخزّن كل عقدة في الشجرة N من أزواج "المفتاح/القيمة"، حيث تكون قيمة N أكبر من 1 وأقل من أو تساوي K.
تحتوي كل عقدة داخلية على N/2 على الأقل من أزواج "المفتاح/القيمة" (والعقدة الداخلية هي العقدة التي لا تُعد ورقة ولا جذراً).
يكون لكل عقدة N+1 من العُقد الأبناء.
تحتوي العقدة الجذرية على قيمة واحدة على الأقل وعقدتين ابنتين، ما لم تكن هي العقدة الوحيدة في الشجرة.
تقع جميع العُقد الورقية في المستوى نفسه.
الأحد، 13 سبتمبر 2026
القوائم المترابطة المتضمنة (Intrusive linked lists)
القوائم المتصلة المتداخلة (Intrusive linked lists) هي نوع من القوائم المتصلة التي تكون فيها روابط الربط مُضمَّنةً داخل البنية نفسها التي يجري ربطها.
في التنفيذ المعتاد للقائمة المترابطة، تحتوي عقدة القائمة على مؤشر بيانات يشير إلى البيانات المترابطة، ومؤشر "التالي" (next pointer) يشير إلى العقدة التالية في القائمة.
في تنفيذ القائمة المتصلة المتداخلة (intrusive linked list)، تحتوي عقدة القائمة على مؤشر يشير إلى العقدة التالية، ولكنها لا تحتوي على مؤشر للبيانات؛ وذلك لأن القائمة تكون مضمّنةً داخل الكائن المرتبط نفسه.
تكون عقدة القائمة (list node) مضمّنة داخل الكائن الذي يحتويها.تشير عقدة القائمة هذه إلى عقدة قائمة أخرى مضمّنة في الكائن المرتبط (linked object).
يتم حساب العنوان الأساسي للكائن المرتبط عن طريق طرح قيمة الإزاحة (offset) الخاصة بعضو القائمة من عنوان الذاكرة الخاص بكائن القائمة المرتبطة.
بعد كل هذه العمليات الحسابية على المؤشرات، ربما تتساءل: لماذا قد يلجأ أي شخص عاقل إلى استخدام قائمة مرتبطة "متداخلة" (intrusive linked list) بدلاً من القائمة المرتبطة العادية؟
لماذا نستخدم القوائم المرتبطة المتداخلة؟
هناك سببان رئيسيان لتفضيل القوائم المتداخلة على القوائم المرتبطة غير المتداخلة (non-intrusive):
- عدد أقل من عمليات تخصيص الذاكرة.
- انخفاض معدل "اضطراب الذاكرة المخبئية" (cache thrashing).
كما تعاني القوائم المرتبطة المتداخلة بشكل أقل من مشكلة اضطراب الذاكرة المخبئية؛ فالتنقل عبر عقدة قائمة غير متداخلة يتطلب الوصول إلى محتوى العقدة (dereferencing) ثم الوصول إلى بيانات القائمة، بينما تتطلب القوائم المتداخلة الوصول فقط إلى عقدة القائمة التالية.
قبل استعراض كيفية إدارة العمليات (processes) باستخدام القوائم المرتبطة في نظام Linux، يجب عليك فهم القوائم المرتبطة المزدوجة (doubly linked lists) والقوائم المرتبطة الدائرية (circular linked lists).
حسناً، سأبني محرر النصوص الخاص بي!
لقد لاقت عبارة "لم يعودوا يصنعون برامج مثل Sublime Text" صدىً واسعاً لدى الكثيرين؛ فمعظم البرمجيات هذه الأيام رديئة المستوى. وهذا دفعني للتفكير: أنا أيضاً أجيد صنع برمجيات رديئة!
لماذا لا أقوم ببناء محرر نصوص خاص بي؟يعتمد محرر VS Code على Monaco Editor، وهو عبارة عن كابوس من تداخل عناصر `<div>` بشكل فوضوي. لقد تأخرت في الانضمام إلى ركب مستخدمي VS Code لأن جهاز Mac الخاص بي (بمعالج Intel) كان بطيئاً للغاية لسنوات، وقد حُلت هذه المشكلة عندما اشتريت جهازاً بمعالج Apple Silicon. وإذا كان هذا هو المعيار السائد، فهذا يعني أن لدي مجالاً واسعاً لارتكاب الأخطاء.
Canvas
تعتمد تجربتي الأولى على عرض كل شيء داخل عنصر `<canvas>`.
معدل الإطارات (FPS): 55
قد لا تلاحظ ذلك، لكن المعالج (CPU) يبذل جهداً كبيراً لعرض تلك الصورة بمعدل يتراوح بين 60 و120 إطاراً في الثانية. وتُعد قلة التفاعل مشكلة واضحة بالنسبة لمحرر نصوص.
أعددت قائمة بالميزات "الحد الأدنى القابل للتطبيق" (MVP) وقمت بتنفيذها:
النقر لتحديد موقع مؤشر النص
استخدام مفاتيح الأسهم لتحريك المؤشر
تمييز السطر الحالي
الكتابة لإدخال النص
رسوم متحركة جذابة للمؤشر
العرض التوضيحي التالي تفاعلي؛ جرب النقر والكتابة.
معدل الإطارات (FPS): 55
قبل أن تنتقدني بشأن اختصارات Vim: اصمت، فلدّي مشكلات أكثر إلحاحاً. لا يوفر لي عنصر Canvas أي ميزات جاهزة؛ ومن بين الميزات المرغوبة التي أفتقدها:
تحديد النص
سجل التراجع والإعادة (Undo/Redo)
لصق نصوص متعددة الأسطر
التمرير عند تجاوز المحتوى للمساحة المتاحة (Overflow scrolling)
تُعد هذه النقطة الأخيرة بالغة الأهمية؛ فالحياة أقصر من أن أقضيها في برمجة أشرطة تمرير مرنة (elastic scrollbars) مخصصة. لذا قررت اللجوء لحيلة برمجية واستخدام خاصية التمرير الأصلية للمتصفح على عنصر مخفي: حيث يتم ضبط حجم عنصر `<div>` ليتطابق مع أبعاد النص في الـ Canvas، ويُستخدم موضع التمرير لحساب إزاحة العرض (render offsets) داخل الـ Canvas.
البرمجة فن
عندما بدأتُ البرمجة، كان يومي بأكمله يتمحور حول التطوير؛ أستيقظ، وأكتب الكود، ثم أخلد للنوم. هكذا كان حالي يوماً تلو الآخر. كانت دائرتي الاجتماعية بأكملها تتألف من أشخاص يمارسون البرمجة أيضاً، وكنت أدرس أطر العمل (frameworks) والمكتبات البرمجية ولغات برمجة متنوعة.
لقد دخلت مجال التطوير لأنني كنت مفتوناً بفكرة أنني أستطيع إنشاء برامج جديدة بمجرد كتابة الكود. كان كل ما علي فعله هو تعلم البرمجة لأتمكن من بناء أي شيء؛ فإذا تعلمت PHP، أمكنني بناء تطبيقات للجانب الخلفي (back-end)، وإذا تعلمت HTML وCSS، أمكنني بناء مواقع إلكترونية.
كان بإمكاني اختيار ما أريد إنشاءه، وتعلم التقنيات اللازمة لذلك، ثم البدء في البناء. تفتح بيئة التطوير المتكاملة (IDE)، وتنشئ مشروعاً جديداً، وتبنيه من الصفر. تختار الأنماط والمكتبات وأطر العمل، وتقرأ التوثيق الفني وتغوص في الكود المصدري. تندمج في العملية لدرجة أنك لا تشعر بمرور الأيام بسرعة. ومع مرور الوقت، تطور أسلوبك الخاص في البرمجة.
لقد كتبت الكود واستمتعت بذلك، لكنه لم يكن نوع العمل الذي أردت القيام به لبقية حياتي. كنت أفضل عملية "الابتكار" أو إنشاء شيء جديد على عملية كتابة الكود بحد ذاتها. أحببت البدء من الصفر -بمجرد فكرة- لإنشاء منتج يستخدمه الناس فعلياً؛ ولهذا السبب عملت حصرياً في الشركات الناشئة ولم أعمل قط في الشركات الكبرى.
لطالما حلمت بالتقدم في مساري المهني -لأصبح قائد فريق أو مديراً، أو أتولى دوراً لا يتضمن كتابة الكود. وكلما توفر شخص آخر لكتابة الكود، كنت أنتقل من البرمجة إلى المهام الإدارية. لم يكن يهمّني ما إذا كنت أكتب الكود بنفسي أو أوكله للآخرين.
ورغم أنني دخلت مجال التطوير بدافع الاهتمام بابتكار الأشياء، إلا أنني لاحقاً أصبحت أمارسه لمجرد الحصول على مقابل مادي؛ فقد كان الأمر بالنسبة لي مجرد وظيفة. وحتى عندما كنت أكتب الكود في وقت فراغي، كنت أستخدم ذلك النهج لبناء شركاتي الناشئة الخاصة التي خططت لجني المال منها. لقد كانت كتابة الكود وجني المال أمرين لا ينفصلان؛ ومع مرور الوقت، أصبح الدخل الناتج عن المشاريع هو المحور الأساسي، بدلاً من مجرد الرغبة في إنشاء المشاريع. ولكن هناك نوع آخر من الأشخاص؛ إنهم المبرمجون الحقيقيون الذين يكتبون الأكواد البرمجية بغض النظر عن العائد المادي. فهم يكتبون الكود لمجرد أنهم لا يستطيعون التوقف عن ذلك، ولا يكترثون لحجم المال الذي قد يجنونه منه؛ إذ قد يعملون على مشاريع مفتوحة المصدر لن تدرّ عليهم أي دخل على الإطلاق.
إنهم يستمتعون بكتابة الكود، وحل تحديات التطوير، والتصميم، واستنباط المنطق البرمجي، وإصلاح الأخطاء، وفهم النظام بأكمله؛ فهم يستمتعون بالعملية ذاتها، ولن يتنازلوا أبداً عن هذا الدور لصالح وكلاء الذكاء الاصطناعي.
لقد دخلت مجال التطوير لأنني كنت مفتوناً بفكرة أنني أستطيع إنشاء برامج جديدة بمجرد كتابة الكود. كان كل ما علي فعله هو تعلم البرمجة لأتمكن من بناء أي شيء؛ فإذا تعلمت PHP، أمكنني بناء تطبيقات للجانب الخلفي (back-end)، وإذا تعلمت HTML وCSS، أمكنني بناء مواقع إلكترونية.
كان بإمكاني اختيار ما أريد إنشاءه، وتعلم التقنيات اللازمة لذلك، ثم البدء في البناء. تفتح بيئة التطوير المتكاملة (IDE)، وتنشئ مشروعاً جديداً، وتبنيه من الصفر. تختار الأنماط والمكتبات وأطر العمل، وتقرأ التوثيق الفني وتغوص في الكود المصدري. تندمج في العملية لدرجة أنك لا تشعر بمرور الأيام بسرعة. ومع مرور الوقت، تطور أسلوبك الخاص في البرمجة.
لقد كتبت الكود واستمتعت بذلك، لكنه لم يكن نوع العمل الذي أردت القيام به لبقية حياتي. كنت أفضل عملية "الابتكار" أو إنشاء شيء جديد على عملية كتابة الكود بحد ذاتها. أحببت البدء من الصفر -بمجرد فكرة- لإنشاء منتج يستخدمه الناس فعلياً؛ ولهذا السبب عملت حصرياً في الشركات الناشئة ولم أعمل قط في الشركات الكبرى.
لطالما حلمت بالتقدم في مساري المهني -لأصبح قائد فريق أو مديراً، أو أتولى دوراً لا يتضمن كتابة الكود. وكلما توفر شخص آخر لكتابة الكود، كنت أنتقل من البرمجة إلى المهام الإدارية. لم يكن يهمّني ما إذا كنت أكتب الكود بنفسي أو أوكله للآخرين.
ورغم أنني دخلت مجال التطوير بدافع الاهتمام بابتكار الأشياء، إلا أنني لاحقاً أصبحت أمارسه لمجرد الحصول على مقابل مادي؛ فقد كان الأمر بالنسبة لي مجرد وظيفة. وحتى عندما كنت أكتب الكود في وقت فراغي، كنت أستخدم ذلك النهج لبناء شركاتي الناشئة الخاصة التي خططت لجني المال منها. لقد كانت كتابة الكود وجني المال أمرين لا ينفصلان؛ ومع مرور الوقت، أصبح الدخل الناتج عن المشاريع هو المحور الأساسي، بدلاً من مجرد الرغبة في إنشاء المشاريع. ولكن هناك نوع آخر من الأشخاص؛ إنهم المبرمجون الحقيقيون الذين يكتبون الأكواد البرمجية بغض النظر عن العائد المادي. فهم يكتبون الكود لمجرد أنهم لا يستطيعون التوقف عن ذلك، ولا يكترثون لحجم المال الذي قد يجنونه منه؛ إذ قد يعملون على مشاريع مفتوحة المصدر لن تدرّ عليهم أي دخل على الإطلاق.
إنهم يستمتعون بكتابة الكود، وحل تحديات التطوير، والتصميم، واستنباط المنطق البرمجي، وإصلاح الأخطاء، وفهم النظام بأكمله؛ فهم يستمتعون بالعملية ذاتها، ولن يتنازلوا أبداً عن هذا الدور لصالح وكلاء الذكاء الاصطناعي.
أنا أحب تأسيس الشركات الناشئة، وهم يحبون كتابة الكود. بالنسبة لي، يُعد بناء المشاريع وسيلةً لكسب المال، أما بالنسبة لهم، فالبرمجة فنّ.
لهذا السبب، فإن كل ما أطرحه من حجج حول دور الذكاء الاصطناعي في مساعدتي على بناء المشاريع لا يعني شيئاً لهؤلاء الفنانين الحقيقيين؛ فهم ليسوا بحاجة إلى الذكاء الاصطناعي لمساعدتهم في أي شيء.
لهذا السبب، فإن كل ما أطرحه من حجج حول دور الذكاء الاصطناعي في مساعدتي على بناء المشاريع لا يعني شيئاً لهؤلاء الفنانين الحقيقيين؛ فهم ليسوا بحاجة إلى الذكاء الاصطناعي لمساعدتهم في أي شيء.
Bitap: خوارزميتي المفضلة لمطابقة السلاسل النصية
تتمثل إحدى المسائل الكلاسيكية في العثور على أول ظهور لنمط (Pattern) معين، ولنرمز له بـ P، داخل سلسلة نصية (String)، ولنرمز لها بـ T. وتوجد خوارزميات كلاسيكية متنوعة لحل هذه المسألة بكفاءة، مثل خوارزميات "بوير-مور" (Boyer-Moore) و"كنوث-موريس-برات" (Knuth-Morris-Pratt) و"تو-واي" (Two-Way). أود في هذا المقال استعراض خوارزمية أقل شهرة، وهي خوارزمية "بيتاب" (Bitap) -أو ما يُعرف بـ "شيفت-آند" (Shift-And)- التي تعمل بكفاءة عندما يكون النمط P قصيراً نسبياً (أي أن طوله يقل عن عرض "كلمة الآلة" أو machine word). ورغم ما لهذه الخوارزمية من قيود، إلا أنني أفضلها كثيراً؛ فهي بسيطة الفهم والتطبيق، وتتمتع بكفاءة عالية نسبياً عند التعامل مع السلاسل النصية القصيرة، كما أنها توظف العمليات المنطقية على مستوى البتات (bit operations) بأسلوب أنيق ومميز.
ولإثبات أن هذه الخوارزمية تتسم بالبساطة المفاهيمية المذكورة، سأحاول استنباطها تدريجياً، بدءاً من أبسط خوارزميات مطابقة السلاسل النصية وأكثرها بدائية.
تحويل الخوارزمية البسيطة (الساذجة) إلى خوارزمية تدفق (Streaming)
لنفرض الآن قيداً إضافياً يدفعنا لتعديل الخوارزمية قليلاً: بدلاً من الحصول على جميع محارف النص $T$ دفعة واحدة، لنفترض أنها تُقدَّم الآن على شكل تدفق بيانات، بحيث يصل محرف واحد في كل مرة (ربما يكون النص $T$ طويلاً جداً ولا نرغب في تحميل كامل محتوياته في الذاكرة دفعة واحدة).
الخوارزمية البسيطة المذكورة أعلاه لا تعمل بنظام التدفق؛ فهي تحتاج إلى قراءة ما يصل إلى $m = \text{len}(P)$ من المحارف المتقدمة (أي التي تلي الموقع الحالي) في النص $T$ لاكتشاف مطابقة للنمط $P$. فكيف يمكننا تكييفها بحيث تجري تمريرة واحدة فقط عبر البيانات؟
بعد قليل من التفكير، نتوصل إلى الصيغة التالية المعدلة من خوارزمية البحث الشامل (brute-force). بدلاً من محاولة اكتشاف وجود النمط $P$ فوراً عن طريق القراءة المسبقة في النص $T$ بدءاً من كل موقع $i=0, \dots$، يمكننا الاحتفاظ بمجموعة من المطابقات "قيد التنفيذ" أثناء مسح النص $T$. من الناحية المفاهيمية، تتكون المطابقة قيد التنفيذ من بادئة (prefix) النمط $P$ التي طُوبقت بالفعل قبل الموقع الحالي، بالإضافة إلى اللاحقة (suffix) المتبقية التي لم تُطابق بعد. وعند قراءة محرف جديد $c$ في النص $T$، نقوم بتقديم المطابقات التي تنتظر هذا المحرف $c$، ونلغي (أو ننهي) بقية المطابقات. وإذا وصلت أي من المطابقات النشطة إلى نهاية النمط $P$، نكون قد أتممنا المهمة.
سحابة في زجاجة: جعل الاستضافة الذاتية متاحة للجميع
موقع Cloud in a Bottle هو مشروع مفتوح المصدر (مُرخّص بنظام AGPL-3.0) يُقدّم نظام تشغيل مبسط لسحابتك الشخصية (Personal Cloud).
الهدف الرئيسي منه هو تمكينك من استضافة تطبيقاتك وبياناتك بنفسك بسهولة دون الحاجة للرابط المباشر أو التعقيدات التقنية، وهو بمثابة متجر تطبيقات خاص بك يُدار بنقرة واحدة على خوادم أو أجهزة تملكها وتحتكُم بها.
أهم الميزات والخصائص
كتالوج تطبيقات جاهز: يحتوي على تطبيقات مفتوحة المصدر مشهورة ومجهزة للتثبيت بنقرة واحدة مثل:
Nextcloud: لتخزين الملفات والمزامنة والتقويمات.
Jellyfin: لتشغيل البث المباشر للأفلام، الموسيقى، والوسائط.
VaultWarden: لإدارة كلمة المرور (بديل Bitwarden).
Pi-hole: لحظر الإعلانات والبرمجيات الخبيثة على مستوى الشبكة.
SearXNG: محرك بحث محلي يحافظ على الخصوصية.
Open WebUI: واجهة تشبه ChatGPT للتعامل مع الذكاء الاصطناعي المحلي.
استضافة تطبيقاتك الخاصة: أي برنامج يعتمد على تقنية الحاويات (Docker Containers) أو مشروع قمت ببرمجته، يمكنك رفعه وربطه بسهولة عبر حساب GitHub الخاص بك ليتم تشغيله وإعطاؤه عنوان ويب خاضع للتحكم.
الخصوصية والأمان: تعمل جميع التطبيقات داخل بيئات معزولة (Security Sandboxes) برصيد أدنى من الصلاحيات.
ملكية البيانات: يتم حفظ جميع بيانات التطبيقات في مجلد واحد على قرص خادمك، مما يسهل عملية النسخ الاحتياطي (Backup) ونقل البيانات دون قيود أو احتكار من الشركات (No Lock-in).
خيارات الاستضافة والتسغيل
على أجهزتك الشخصية (مجاناً): تشغيل النظام على جهاز كمبيوتر قديم، أو كمبيوتر محمول، أو Raspberry Pi.
على خادم افتراضي خاص (BYO VPS): استئجار خادم خاص بك من أي شركة مثل (Hetzner, DigitalOcean, Linode) وتثبيت النظام عليه.
خدمة مُدارة بالكامل (مدفوعة): الاشتراك عبر مطوري المشروع (Imbue) للحصول على خادم جاهز مع عنوان IP ونطاق (Domain) جاهز (تبدأ من 5$ شهرياً).
كيف تستفيد منه؟
الاستغناء عن الخدمات السحابية المدفوعة: يمكنك استبدال Google Drive أو OneDrive باستخدام Nextcloud، واستبدال Spotify/Netflix باستخدام Jellyfin أو Navidrome، واستبدال 1Password بـ VaultWarden.
إطلاق وتجربة مشروعاتك الشخصية: إذا كنت مبرمجاً أو تطور تطبيقات باستمرار، يتيح لك الموقع نشر تطبيقاتك وتجربتها على نطاق خاص (my-app.your-domain.com) بسهولة.
حماية الخصوصية: حظر الإعلانات والتتبع على كافة أجهزة منزلك عبر تشغيل Pi-hole وتصفح الإنترنت بأمان عبر SearXNG.
تشغيل نماذج الذكاء الاصطناعي محلياً: الاستفادة من Open WebUI لتشغيل نماذج ذكاء اصطناعي دون إرسال بياناتك لشركات خارجية.
الهدف الرئيسي منه هو تمكينك من استضافة تطبيقاتك وبياناتك بنفسك بسهولة دون الحاجة للرابط المباشر أو التعقيدات التقنية، وهو بمثابة متجر تطبيقات خاص بك يُدار بنقرة واحدة على خوادم أو أجهزة تملكها وتحتكُم بها.
أهم الميزات والخصائص
كتالوج تطبيقات جاهز: يحتوي على تطبيقات مفتوحة المصدر مشهورة ومجهزة للتثبيت بنقرة واحدة مثل:
Nextcloud: لتخزين الملفات والمزامنة والتقويمات.
Jellyfin: لتشغيل البث المباشر للأفلام، الموسيقى، والوسائط.
VaultWarden: لإدارة كلمة المرور (بديل Bitwarden).
Pi-hole: لحظر الإعلانات والبرمجيات الخبيثة على مستوى الشبكة.
SearXNG: محرك بحث محلي يحافظ على الخصوصية.
Open WebUI: واجهة تشبه ChatGPT للتعامل مع الذكاء الاصطناعي المحلي.
استضافة تطبيقاتك الخاصة: أي برنامج يعتمد على تقنية الحاويات (Docker Containers) أو مشروع قمت ببرمجته، يمكنك رفعه وربطه بسهولة عبر حساب GitHub الخاص بك ليتم تشغيله وإعطاؤه عنوان ويب خاضع للتحكم.
الخصوصية والأمان: تعمل جميع التطبيقات داخل بيئات معزولة (Security Sandboxes) برصيد أدنى من الصلاحيات.
ملكية البيانات: يتم حفظ جميع بيانات التطبيقات في مجلد واحد على قرص خادمك، مما يسهل عملية النسخ الاحتياطي (Backup) ونقل البيانات دون قيود أو احتكار من الشركات (No Lock-in).
خيارات الاستضافة والتسغيل
على أجهزتك الشخصية (مجاناً): تشغيل النظام على جهاز كمبيوتر قديم، أو كمبيوتر محمول، أو Raspberry Pi.
على خادم افتراضي خاص (BYO VPS): استئجار خادم خاص بك من أي شركة مثل (Hetzner, DigitalOcean, Linode) وتثبيت النظام عليه.
خدمة مُدارة بالكامل (مدفوعة): الاشتراك عبر مطوري المشروع (Imbue) للحصول على خادم جاهز مع عنوان IP ونطاق (Domain) جاهز (تبدأ من 5$ شهرياً).
كيف تستفيد منه؟
الاستغناء عن الخدمات السحابية المدفوعة: يمكنك استبدال Google Drive أو OneDrive باستخدام Nextcloud، واستبدال Spotify/Netflix باستخدام Jellyfin أو Navidrome، واستبدال 1Password بـ VaultWarden.
إطلاق وتجربة مشروعاتك الشخصية: إذا كنت مبرمجاً أو تطور تطبيقات باستمرار، يتيح لك الموقع نشر تطبيقاتك وتجربتها على نطاق خاص (my-app.your-domain.com) بسهولة.
حماية الخصوصية: حظر الإعلانات والتتبع على كافة أجهزة منزلك عبر تشغيل Pi-hole وتصفح الإنترنت بأمان عبر SearXNG.
تشغيل نماذج الذكاء الاصطناعي محلياً: الاستفادة من Open WebUI لتشغيل نماذج ذكاء اصطناعي دون إرسال بياناتك لشركات خارجية.
الاشتراك في:
الرسائل (Atom)
مفاتيح المرور فخ. لا تستخدمها.
يبدو أن كل موقع إلكتروني يُطالبنا بالتوقف عن استخدام كلمات المرور. ويُطلب منا استخدام بديل يُسمى " مفاتيح المرور" . قد يكون هذا ال...
-
تلعب شجرة B (B-tree) دوراً جوهرياً في العديد من البرمجيات، ولا سيما أنظمة إدارة قواعد البيانات (DBMS). إذ تعتمد أنظمة مثل MySQL وPostgres وM...
-
في مثل هذا الوقت من العام الماضي، نشرت مجلة نيويورك تايمز عددًا خاصًا عن الذكاء الاصطناعي، بمقدمة بعنوان "الجميع يستخدم الذكاء الاصطناع...
-
إنها فكرة بسيطة حقًا، وهي التجريد الأمثل لمستقبل الإنترنت. قد تتعطل عناوين IP فجأةً ودون سابق إنذار، وهذا خارج عن سيطرة جهازك. أما المفاتيح،...





