لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/29/20 في كل الموقع
-
مرحباً @Dee Alo معك وسيم الحبش , مهندس برمجيات من جامعة دمشق . تخصص هندسة البرمجيات يكون على الأغلب 5 سنين : السنة الأولى و الثانية : تركز على الرياضيات والتحليل العددي بشكل عام مع تعلم أساسيات البرمجة مثل (( المتغيرات , التوابع , المؤشرات , الصفوف والكائنات …. )) , وهناك مواد عن الخورازميات وكلها تحوي مشاريع و وظائف غالباً يتم تنفيذها في ال console (الشاشة السوداء )) بدون أي تصميم , أي فقط تهتم بالتنفيذ والفهم دون أهمية عرض البيانات وهناك عدة مواد متفرقة مثل الفيزياء والكهرباء والعربي والإنكليزي وأساسيات الحاسوب . السنة الثالثة : نبدأ بها بمشاريع فعلية , مثل مشروع باستخدام ال OpenGl أو ال Unity أو ال Matlap حيث يكون الخرج هو لعبة صغيرة أو محاكاة لفكرة فيزيائية وعلى ما أذكر كان أيضاً هناك مشروع بلغة الجافا وكذلك مشروع ويب فيه Front End و Back End. وأيضاً نتعمق في هذه السنة بموضوع الخوارزميات و نأخذ أساسيات هندسة البرمجيات (( خطوات التخطيط لمشروع - ال use case - sequential و غيرها … )) . ومن المواد الموجودة أيضاً تعلّم لغة ال Assembly وتعلم البرمجة التفرعية وأساسيات قواعد البيانات . وهناك مشروع (( يسمى مشروع 1 )) في هذه السنة , تقدمين فيه فكرة وتناقشين الدكاترة بها . السنة الرابعة : وهي سنة الاختصاص حيث تختارين أحد الأمور التالية (( شبكات - برمجيات - ذكاء صنعي )) , وسأتحدث هنا عن البرمجيات , حيث نتعمق جداً بهندسة البرمجيات و أنواع نماذج المشاريع (( Agile - الحلزوني - الشلالي الخ )) و كيفية إدارتها وإدارة المخاطر , كما نبحث في أساسيات الاقتصاد و هناك مادة مهمة في Design Patterns , أيضاً نتحدث عن ال Database والفهرسة والتعليمات المعقدة . وهناك مشروع (( يسمى مشروع 2 )) في هذه السنة , تقدمين فيه فكرة وتناقشين الدكاترة بها وهو أعقد من المشروع 1 بحيث يجب أن تناقشي أحد المصطلحات المهمة ضمن عالم البرمجة (( مثل Block chain أو غيرها )) . هناك مادة صعبة جداً و مهمة تتحدث عن ال compiler وآلية عمله , و يكون في نهايتها مشروع ل compiler من برمجتك . السنة الخامسة : وفيها مشروع التخرج ,وبعض المواد المهمة مثل هندسة نظم المعلومات , هندسة المعلومات و استرجاعها (( مادة جميلة نتحدث عن Google وخوارزمياته في تخزين البيانات وفهرستها )) و مواد أخرى . أخيراً : تحتاجين قبل دخولك للفرع التأكد من فهمك لبعض مفاهيم الرياضيات (( المصفوفات , المتتاليات , التكامل , الاشتقاق …. )) , و أن يكون عندك إلمام بمبادئ الحاسوب , ولا بأس بالاطلاع على أساسيات البرمجة بلغة ال c++ أو الجافا والويب لأنها ستساعدك كثيراً . بالنسبة للحاسوب فأظن أن المواصفات التالي يمكن أن تساعدك : Hard SSD بأي مساحة كانت . Ram 6 أو أكثر . كرت الشاشة لا يهم كثيراً ولكن لا بأس أن يكون قوياً و خصوصاً عند التعامل مع البرامج الخاص بالألعاب . معالج Core i5 أو أكثر و حاولي أن يكون الجيل هو السابع أو أكثر . تحياتي .2 نقاط
-
وعليكم السلام ورحمة الله تعالى، مجال البرمجة محال جدًا واسع ويجب في البداية تحديد هدفك من هذا المجال، لماذا تريد أن تختص بهذا المجال. دراسة هندسة البرمجيات في الوقت الحالي هي من أفضل الهندسات على المستوى العالمي وعليها زيادة طلب مستمر من قبل الطلاب ومن قبل شركات البرمجة. سوف تتعلمين الكثير من لغات البرمجة في الجامعة والكثير من المواد الغير مهمة بالنسبة لك، لهذا قبل دخولك هذا المجال يجب عليك تحديد هدفك من هذا المجال. هل تريدي أن تصبحي مبرمجة تطبيقات موبايل وصفحات ويب، إن كان كذلك فعليك دراسة لغات HTML و CSS و JavaScript والتي تستخدم لتطوير الواجهات الأمامية التي تشاهديها الآن أمامك في الصفحة، ومن ثم يمكنك تطوير مهارتك لدراسة تطوير الواجهات الخلفية من خلال PHP أو Ruby أو Node.js أو الكثير من اللغات وأطر العمل التي تستخدم لبرمجة الواجهات الخلفية، والتي تضمن جداول قواعد البيانات ومعلومات المستخدمين للموقع. أما بالنسبة لتطبيقات الموبايلات فيمكنك دراسة لغات عدة أسهلها Fluter والتي توفر لك بناء تطبيقات جيدة يمكن استخدامها على IOS و Android. أما إن كنت ترغبين في دراسة هندسة البرمجيات لمجالات ضخمة كجمع المعلومات الكبيرة Big data وتعليم الآلة وغيرها من المجالات الواسعة فإنت بحاجة إلى لغات أكثر قوة مثل Python و ++C. لهذا كمبتدئة أنصحك في تحديد هدفك من دراسة هندسة البرمجية ومن ثم السعي ورأه. كما أنك لايجب عليك فقط الاعتماد على مقررات الجامعة. حيث أن معظم الجامعات تستخدم غالبًا مناهج قديمة لم يعد معتمد عليها في وقتنا الحالي. لذلك عليك دائما تطوير نفسك من خلال متابعة دورات برمجية في مجالك وقرأة كتب عن المجال الذي ترغبين بالتخصص به. أنصحك من الآن بالقراءة كثيرًا عن مجال البرمجة وماهي البرمجة وذلك لكي تستطيع تحديد هدفك من هذا التخصص. وكبداية أنصحك بقراءة هذا المقال من الرابط هنا. أما عن مواصفات الجهاز التي سوف تحتاجينها لدراسة هذا المجال، فلست بحاجة لمواصفات عالية جدًا، جهاز متوسط المواصفات يكفيكي لدراسة هذا المجال. ذاكرة ٨ جيجا، هارد ssd و معالج core i5 كافي لكتابة تطبيقات بشكل مريح. أتمنى لك التوفيق.2 نقاط
-
مرحبًا @Omar Khalifa، يعتمد هذا الأمر على العمل الذي تريد أن تعمل به، مثلًا إن كنت تريد برمجة تطبيقات React native و IOS فأنصحك بشراء ماك بوك، وذلك لسهولة تعامل الماك بوك مع هذه اللغات، حيث أنك عند بناء تطبيقات بلغة IOS و React native للأيفون لن تحتاج إلى محاكي Viewr حيث يؤمن لك الماك بوك بيئة عمل سهلة لهذه التطبيقات. أما إن كان هدفك هو فقط برمجة مواقع الويب واطبيقات Flutter بسيطة فيمكنك ذلك من خلال أي جهاز تريد ويندوز أو لينوكس أو حتى ماك، ولن تكون بحاجة إلى مواصفات عالية للحاسب، حيث أنه يكفيك ذاكر 8 جيجا و معالج جيل عاشر core i5. أما إذا كنت ترغب ببناء تطبيقات باستخدام لغة #C فيجب عليك إستخدام ويندوز وذلك ﻷن Microsoft هي الداعم الأساسي لهذه اللغة لذلك سوف تجد فيها سهولة عند استخدامها من قبل ويندوز. أكرر يعود هذا الأمر إلى طبيعة العمل والهدف من شرائك لهذا الحاسوب. أتمنى لك التوفيق..2 نقاط
-
سيشرح هذا الفصل بعض الاستخدامات الأساسية للتشفير وكيف يمكنه المساهمة بحماية بياناتك التي تريد نقلها عبر الشبكة إلى أماكن أخرى. هناك مواضيع متفرقة عن التشفير في مختلف أجزاء هذه السلسلة لطبيعة كون التشفير تقنيةً مستخدمة في الكثير من تقنيات علوم الحاسوب، لكننا سنشرح هنا بعض الأساليب التي تعتمد على التشفير بصورة أساسية. مفاتيح التشفير هناك الكثير من العلوم الفرعية المنضوية تحت مبدأ التشفير، لكننا نريد الحديث الآن عمّا يعرف بالمفاتيح (Keys). هناك حاجة ملحّة للكثير من الناس لتشفير الرسائل والملفّات المتبادلة بينهم مثلًا، لكنهم بحاجة إلى طريقةً تسمح للمُرسِل أن يُرسل البيانات المشفّرة إلى المتلقّي ويتمكّن المتلقّي وحده فقط من إلغاء تشفيرها للوصول إلى البيانات الحقيقية. وهذه مشكلة على الإنترنت لأنّ البيانات تمرّ عبر مزوّد خدمة الإنترنت (ISP) وقد ترفعها مثلًا على خدمات شركات مثل جوجل وواتساب وفيس بوك وغيرها، وبالتالي قد تطّلع عليها أكثر من جهة، ولهذا لا نريد مثلًا إرسال كلمة مرور كلّ مرّة مع الملفّ المشفّر للمتلقّي لأنّ هذا يعني أنّ كل الأطراف المتمكنة من الشبكة سيكون لها وصولٌ كذلك إلى محتويات الملفّ (فهي لديها وصول إلى كلمة المرور كذلك). نشأت بسبب هذه الحاجة ما تعرف بمفاتيح التشفير الشخصية، وهما زوجان من المفاتيح المرتبطة ببعضها، واحدٌ منهما يسمّى المفتاح العام (Public Key) والثاني هو المفتاح الخاصّ (Private Key) وهما مرتبطان ببعضهما البعض دونًا عن غيرهما من المفاتيح. يمكن للمرء أن يمتلك العديد من المفاتيح إن أراد. بفضل علم التعمية (Cryptography) ومبادئ التشفير القائمة على رياضياتٍ دقيقة فإنّه يمكن لأيّ شخص أن يقوم بتشفير رسالة إلكترونية مثلًا وفق المفتاح العام لشخصٍ معيّن، لكن لا يمكن سوى للشخص الذي يمتلك المفتاح الخاصّ المرتبط بذاك المفتاح العام أن يقوم بإلغاء تشفير تلك الرسالة. وبالتالي إذا أراد أحدهم مراسلتك مثلًا برسالة بريدية مشفّرة، فكل ما عليه فعله هو البحث عن مفتاحك العام على الشبكة (حيث أنّه منشور للكل على عكس المفتاح الخاصّ) واستخدامه لتشفير الرسالة ثمّ إرسالها إليك، ببساطة. وستتمكن أنت فقط من إلغاء تشفير الرسالة عبر مفتاحك الخاصّ الشخصي بك والمرتبط بالمفتاح العام الذي شُفّرت الرسالة به. وللمزيد من الحماية، فإنّ مفتاحك الخاصّ محمي بكلمة مرور تحددها أنت وبالتالي لا يمكن حتّى مع امتلاك المفتاح الخاصّ من طرف الآخرين أن يستخدموه ضدّك ليكسروا تشفير ملفّاتك ورسائلك (ولكن بالطبع هذا لا يعني أنّه يمكنك مشاركة المفتاح الخاصّ مع الناس لأنّه هناك طرق لكسر كلمات المرور مثل القوّة الغاشمة Bruteforce التي شرحناها مسبقًا وغيرها). ومن المهم أن تحتفظ بكلمة المرور هذه وتتذكّرها طوال الوقت، كما من المهم أن تكون كلمة مرورٍ قوية كما سنشرح في فصل "كلمات المرور" في هذه السلسلة. وهذا لأنّك ستحتاج كلمة المرور في كلّ مرّة تريد فيها استخدام المفاتيح. إن فقدت كلمة المرور فحينها ستفقد كلّ بياناتك المشفّرة ولن تتمكن من استرجاعها. والآن لن تتمكن أيّ جهة بما فيها مزوّد خدمة الإنترنت أو الشركة الموفّرة للمنصّة الإلكترونية ولا أي طرف آخر سواك أنت (والمُرسِل بالطبع) من معرفة محتوى الرسائل والملفّات عبر هذه الطريقة، لأنّك أنت فقط من يمتلك المفتاح الخاصّ (تذكّر أنّ المفتاح الخاصّ لا يُشارك مع أي شخصٍ آخر بتاتًا ولا حتّى المُرسِل). تُستخدم مفاتيح التشفير في الكثير من الأنظمة المختلفة في علوم الحاسوب وهي من أبرز الطُرق لحماية البيانات، وتستخدمها الكثير من البرامج لتشفير الملفّات أو الرسائل الإلكترونية أو البيانات الأخرى بصورة عامّة. وتُستخدم هذه المفاتيح الشخصية لأكثر من التشفير، فيُمكن استخدامها من أجل ما يسمّى بالتوقيع الرقمي (Digital Signature)، وهو كما التوقيع الحقيقي للإنسان، ضمانٌ أنّ الملفّ أو الرسالة الإلكترونية هي من طرف ذاك الشخص بالفعل لكن دون تشفير الملفّ أو الرسالة. وهذا مهم لأنّه في الكثير من الأحيان قد يحتاج الناس لطريقةٍ لضمان موثوقية هذه الملفّات لكن لا يريدون تشفيرها. فيمكن أن تحاول بعض الجهات انتحال شخصية مستخدمٍ ما مثلًا ولن يكون لديك ضمانٌ من أنّ الملفّ الذي حمّلته هو من ذاك الشخص بالفعل وليس من طرفٍ مشبوه ينتحل شخصيته (مثل تحميل أحد توزيعات لينكس، قد يقوم أحد المخترقين باختراق موقع التوزيعة ووضع رابط تحميل لملفّ خبيث بدلًا من التوزيعة الأصلية ولن تتمكن من معرفة ذلك دون أن تتحقق من التوقيع الرقمي للملفّ، ومعظم المستخدمين لا يقومون بذلك للأسف). هناك بالطبع معايير مختلفة (Standards) لطريقة بناء هذه المفاتيح وتشفيرها ومشاركتها وتخزينها، أبرزها هو المبدأ المفتوح OpenPGP. وهنالك العديد من المكتبات البرمجية (Software Libraries) التي توفّر أدوات التشفير الحقيقية لتشفير البيانات والملفّات وفق تلك المعايير، أبرزها GnuPG وهي مكتبة حرّة ومجانية ومفتوحة المصدر ومن أكثر المكتبات استخدامًا على الإطلاق في مجال الأمان الرقمي. يُمكنك إنشاء مفاتيح التشفير الخاصّة بك (المفتاح العام والخاصّ) من داخل نظام التشغيل الحالي الذي تستعمله، ولهذا تختلف الطريقة بناءً على ذلك النظام. يمكنك إنشاء زوجيّ المفاتيح على نظام لينكس وmacOS عبر الأمر التالي: gpg --full-generate-key سيسألك برنامج gpg بضعة أسئلة مثل: نوع خوارزمية التشفير المُرادة، مثل RSA أو DSA وغيرها. الخيار الافتراضي هو "RSA and RSA" وكلّ ما عليك فعله هو الضغط على Enter للمتابعة. طول مفتاح التشفير المُراد. لا حاجة للتفكير الطويل هنا بل فقط اختر الإعدادات الافتراضية حاليًا (3072) واضغط Enter. مدّة صلاحية المفتاح. هل تريد أن تنفذ صلاحية هذا المفتاح بعد وقتٍ معيّن، وبالتالي كلّ شيءٍ شُفّر أو وُقّع عبره لن يكون قابلًا للتأكّد من صحّته أو إلغاء تشفيره بعد انتهاء الوقت المعيّن؟ إن كان الجواب لا، فحينها اضغط Enter (الخيار الافتراضي) لجعل المفتاح غير محدود الصلاحية. قد يطلب منك gpg تأكيدًا للخطوة السابقة. اكتب y (اختصارًا لـyes). سيسألك gpg كذلك عن اسمك وبريدك وتعليقٍ قصير حول المفتاح. سيعرض لك gpg معلومات المفتاح بصورتها النهائية. إن لم يكن لديك تغيير تريد إجراءه فحينها اكتب O (اختصارًا لـOkay). أخيرًا، سيُطلب منك إدخال كلمة مرورٍ لحماية مفاتيح التشفير. ستجد المفتاح العام والمفتاح الخاصّ في ملفّين منفصلين في المسار .gnupg داخل مجلّد المنزل الخاصّ بك. تذكّر أنّه يجب ألّا تشارك المفتاح الخاصّ مع أي شخصٍ بتاتًا، كما تذكّر أنّه عليك حفظه في مكانٍ آمن لا يصل إليه أحدٌ سواك، هو وكلمة المرور (يمكنك مثلًا وضعهم داخل فلاشة USB ورميها في مكانٍ آمن في منزلك). نستحسن ألّا تحاول العبث بالملفّات داخل مجلّد .gnupg بنفسك، لكن يمكنك تصدير المفاتيح وإدارتها واستيرادها عبر الأمر gpg نفسه من سطر الأوامر. ويمكنك البحث عنه على الإنترنت للمزيد من المعلومات أو رؤية التوثيق الكامل له عبر: gpg --help أمّا بالنسبة لأنظمة ويندوز، فالعملية سهلة بفضل برنامج Gpg4Win، وهو برنامجٌ مفتوح المصدر ومجاني. كلّ ما عليك فعله هو تحميل البرنامج وتثبيته. تأكّد من تفعيلك للخيارات التالية أثناء تثبيته: ستجد برنامجًا اسمه Kelopatra على نظامك بعد التثبيت، وهو الواجهة الرسومية لمكتبة GnuPG على أنظمة ويندوز. اضغط على "New Key Pair" كما في الصورة لإنشاء زوجيّ مفاتيح جديدة: ثمّ أدخل اسمك وبريدك الإلكتروني: واضغط كذلك على "Advanced Settings". ستصل بعدها إلى النافذة التالية، أزل علامة الصحّ من جانب "Valid until" لكي تجعل المفتاح بلا تاريخ صلاحية محدد (لا ينتهي): وأخيرًا، أدخل كلمة المرور التي تريدها: وهذه هي العملية ببساطة! يمكنك الآن تصدير المفاتيح أو حفظها أو عمل ما تشاء بها. يُمكنك استخدام المفتاحين لاستقبال وإرسال البيانات المشفّرة بمجرّد أن تنشئهما مع مختلف البرامج والأدوات. يمكنك إنشاء عدة مفاتيح كذلك بناءً على كلّ نوع من الاستخدامات التي تريدها (مثلًا واحد للرسائل الإلكترونية والآخر للملفّات المشفّرة… إلخ). تبادل رسائل البريد الإلكتروني المشفرة والموقعة تدعم معظم خدمات البريد الإلكتروني تشفير الرسائل البريدية بين المستخدمين. لكن لتبادل الرسائل الإلكترونية بينك وبين مستخدمٍ آخر فعليكما أنتما الاثنان أن تمتلكا المفاتيح العامّة (Public Keys) الخاصّة بالآخر، وهذا لتشفير الرسائل بصيغةٍ تمكّن الطرف الآخر وحده من فكّ تشفيرها. يمكنكما تبادل المفاتيح العامّة عبر أي وسيلة اتصال أو حتّى نشرها على الإنترنت بأريحية. تختلف طريقة إعدادها بناءً على الخدمة التي تستعملها، لكن بصورة عامّة، عليك تثبيت ما يُعرف ببرنامج بريد الإلكتروني المحلّي (Email Client) على جهازك، ثمّ ربطه بخدمة البريد الإلكتروني التي تستعملها، ثمّ تفعيل ميّزة تشفير الرسائل وإضافة مفاتيحك العامّة والخاصّة إلى البرنامج ليستخدمها. وبما أنّه هناك العشرات من خدمات البريد الإلكتروني المختلفة بالإضافة إلى العشرات من البرامج المحلّية لإدارة البريد الإلكتروني وعلى مختلف أنظمة التشغيل، فإننا لن نشرح العملية بالتفصيل في هذه السلسلة ونترك المُستخدم ليختار خدمته وبرنامجه اللذين يناسبانه. لكننا نُشير إلى بضعة أمور: حتّى مع استخدام التشفير فإنّه ما يزال بإمكان مزوّد خدمة البريد الإلكتروني، و(ربّما) مزوّد خدمة الإنترنت بالإضافة إلى أطرافٍ ثالثة (3rd-party) أن تعرف عنوان الرسائل الإلكترونية، بالإضافة إلى العنوان المُرسِل والعنوان المُستقبِل. أي أنّ التشفير لا يشمل هذه الحقول الثلاثة، ولذلك لا تضع شيئًا مهمًا فيها واعلم أنّ الغير قد يطّلعون عليها. لا تستخدم معظم - إن لم يكن كلّ - برامج إدارة البريد الإلكتروني المحلّية التشفير بصورة افتراضية؛ أيّ أنّ إضافة المفاتيح واستيرادها إلى البرنامج لا يكفي. عليك التأكّد بالضبط أنّ الرسالة الحالية التي تريد إرسالها ستكون مشفّرة. قد يكون في بعض البرامج خياراتٌ لتشفير كلّ الرسائل افتراضيًا، لكن عليك التحقق من ذلك بنفسك. وبالطبع، عليك إضافة المفاتيح العامّة للشخص الذي تُريد مُراسلته قبل التمكّن من إرسال رسالة بريدية مشفّرة إليه (سيقوم هو بتصديرها لك ثمّ تقوم أنت باستيرادها من داخل البرنامج أو النظام، وكذا بالنسبة لك). يُمكنك توقيع الرسالة رقميًا (Digital Signing) بنفسك وعبر مفتاحك الخاصّ دون الحاجة لشيءٍ من أحد، لكن من أجل التشفير فعليك امتلاك المفتاح العامّ للطرف الآخر وعليه أن يمتلك هو كذلك مفتاحك العام. هل يجب عليك تشفير كلّ الرسائل أم فقط الحساسة والمهمّة منها؟ يعتمد هذا على مدى درجة عامل الخطورة (Threat Factor) الذي أنت محاطٌ به، وإلى أيّ مدىٍ تريد تأمين نفسك وضدّ من. بخصوص رسائل البريد الإلكتروني الموقّعة فالمفترض أنّ البرنامج الذي تستعمله سيعرض لك في "ترويسة الرسالة" (Message Headers) ما إذا كانت موقّعة بصورة صحيحة وموثوقة من الطرف الآخر الذي استقبلتَ الرسالة منه أم لا. تبادل الملفّات المشفّرة يُمكنك تشفير الملفّات وتبادلها مع الآخرين باستخدام المفاتيح العامّة والخاصّة تمامًا كما الرسائل البريدية الإلكترونية. إن كنت تخطط لمشاركة الملفّ مع شخصٍ معيّن فقط فحينها ستحتاج كذلك إلى مفتاحه العام، وستستخدم مفتاحه العام لتشفير الملفّ ثمّ يمكنك إرساله إليه عبر أي وسيط، وسيقوم هو باستخدام مفتاحه الخاصّ لإلغاء تشفير الملفّ. وهو سيكرر نفس العملية بالنسبة إليك؛ سيأخذ مفتاحك العام ويستخدمه لتشفير الملفّ، ثمّ يُرسله لك عبر أي وسيط. وستستخدم أنت مفتاحك الخاصّ لإلغاء تشفير الملفّ وقراءة محتوياته. يمكنك القيام بالعملية السابقة على أنظمة لينكس وmacOS عبر الأمر gpg. طبّق الأمر التالي أوّلًا لتصدير مفتاحك العامّ (ولا تنس استبدال بريدك الإلكتروني): gpg --armor --export your@email.com > mypublickey.asc ويمكنك الآن إرسال ملفّ mypublickey.asc إلى الشخص الآخر عبر أيّ وسيط ليستعمله هو في تشفير الملفّات والرسائل التي يريد إرسالها إليك. إذا كنتَ تريد أنت أن تُرسل إليه ملفًّا مشفّرًا فعليك حينها استيراد مفتاحه العام عبر الأمر التالي (بعد أن تحصل على الملفّ منه): gpg --import otherpublickey.asc وبعدها، طبّق الأمر التالي لتشفير الملف المطلوب وفق المفتاح العام لذاك الشخص (لا تنسى استبدال البريد الإلكتروني هذه المرّة ببريده الإلكتروني هو): gpg --recipient otherparty@email.com --encrypt requested_filename.txt وهكذا صار الملفّ مشفّرًا ويُمكنك إرساله إليه (ستجده باسم requested_filename.txt.gpg في نفس المسار). ويمكنه هو إلغاء تشفير الملفّات عبر الأمر التالي ثمّ كتابة كلمة المرور الخاصّة بالمفتاح الخاصّ: gpg --decrypt requested_filename.txt.gpg > unencrypted.txt وستجد أنّ الملفّ قد فُكَّ تشفيره في نفس المسار وصار قابلًا للقراءة (لا تنسى استبدال لاحقة الملفّات باللاحقة المناسبة مثل .mp4 أو .png بناءً على نوع المحتوى، استخدمنا .txt كمجرّد مثال). يمكنك استخدام برنامج Gpg4Win السابق على أنظمة ويندوز للقيام بنفس العملية. فقط استورد المفتاح العام للشخص المُراد التعامل معه ثمّ اضغط على "Sign/Encrypt" وحدد الملفّ المطلوب تشفيره: ثمّ اختر اسم الشخص الذي تريد تشفير الملفّ وفق مفتاحه العام. يمكنك كذلك توقيع الملفّ رقميًا أو حمايته بكلمة مرور إضافية أن أردت ذلك: بعدها يمكنك إرسال الملفّ ومشاركته كيفما تشاء. تشفير خدمات التخزين السحابية إنّك غالبًا ما تستخدم خدمات المزامنة السحابية مثل Google Drive وDropbox وغيرها، لكن هل تعلم أنّه يمكنك كذلك تشفير كلّ ملفّاتك عليها؟ في النهاية هي مجرّد ملفّات، ويمكنك تطبيق نفس العملية السابقة عليها جميعها وبالتالي حمايتها من الآخرين حتّى لو وصلوا إليها بطريقةٍ ما. إننا نستحسن استخدام برنامج Cryptomator لهذه العملية. وهو برنامجٌ مجاني ومفتوح المصدر، ويدعم تشفير كامل الملفّات وحمايتها بكلمات المرور. إننا ندعم استخدام هذا البرنامج لأنّه قد تُحقِّقَ منه ومن أمانه عبر باحثين أمنيين مستقلين (Independent 3rd-party Security Audit) ويستخدم تشفير AES بمفاتيح بطول 256-بت بصورة افتراضية، وبالتالي هو آمن للاستخدام، هذا فوق كونه مجانيًا ومفتوح المصدر ويعمل على كلّ أنظمة تشغيل الحواسيب والهواتف الشهيرة (ويندوز وماك ولينكس وأندرويد وiOS)، كما أنّه يدعم معظم - إن لم يكن كلّ - خدمات التخزين السحابية. يقوم البرنامج بإنشاء "خزنة آمنة (Vault)" داخل مساحتك على خدمة المزامنة السحابية، وهذه الخزنة مشفّرة ومحمية بكلمة مرور (بما في ذلك اسمها!)، وكلّ ما عليك فعله هو تثبيت البرنامج ثمّ وضع ملفّاتك التي تريد حمايتها داخل تلك الخزنة، ببساطة. ختاما التشفير تقنية قوية جدًا لحماية البيانات والملفّات والرسائل، ومن المنصوح جدًا استخدامها في تبادل البيانات الحساسة بين مختلف الأطراف. لكن لا تنسى أنّه حتّى أقوى التقنيات مثل التشفير قد تكون قابلةً للكسر إمّا بسبب كلمات المرور الضعيفة أو بسبب البرمجيات المُستعملة في التشفير، وليس بالضرورة أن تكون خوارزمية أو تقنية التشفير نفسها بها خلل أو ثغرة أمنية. والتشفير واحدٌ من التقنيات التي تنتهي فاعليتها تمامًا عند وجود هكذا ثغرات في البرمجيات التي تولّده أو تستعمله، ولهذا إن كنت تستخدم التشفير في مكانٍ ما على جهازك فحينها عليك التأكّد من أنّ كل برمجياتك وأدواتك محدثّة إلى آخر إصدار، وأنّها لا تحوي أي ثغراتٍ أو مشاكل أمنية معروفة (يمكنك التحقق من ذلك من مواقع أخبار الأمان الرقمي، سنشير إليها في نهاية هذه السلسلة)، وإلّا فأنت تخاطر بكامل ملفّاتك وبياناتك ورسائلك جملةً واحدة. اقرأ أيضًا المقال التالي: كلمات المرور: كيفية حفظها واستعمالها في العالم الرقمي المقال السابق: النسخ الاحتياطي وحفظ البيانات في العالم الرقمي النسخة الكاملة من كتاب دليل الأمان الرقمي1 نقطة
-
export default { name: 'App', data(){ return{ api_key:'3ca0fefe1a2c1c266becc07b83e3b893' } } اريد ان افهم مادور هذا الكود api_key:'3ca0fefe1a2c1c266becc07b83e3b893'1 نقطة
-
السلام عليكم يستخدم xcode لإنشاء برمجيات ios و ليس من الضروري استخدام xcode لإنشاء برمجيات ios يمكنك انشاءها عن طريق xamarin على بيئة ويندوز مثلا إذا اردت إستخدام xcode فسوف تحتاج الى جهاز ماك او عن طريق virtual machine داخل نظام الويندوز اندرويد ستوديو هو فقط لتطبيقات أندرويد و ليس لـ React Native CLI React Native CLI اكثر شمول و يقوم ببرمجة المنصات المختلفة ويندوز و ويب و اندرويد و ios على ماك فقط لذلك استخدامه على ويندوز سيكون بطريقة غير مباشرة ولكن في النهاية نعم يمكن استخدامه على جهاز كمبيوتر ليس من تصنيع ابل يمكنك استخدامه في انشاء تطبيقات ios مستقله بحد ذاتها او emulator لن تحتاجه من اجل React Native CLI على حسب سوق العمل و حسب توجهك اذا كان توجهك الى الكثير من تطبيقات ios نعم ستحتاج الى تعلم الكثير و بالطبع يمكنك البدايه بدونهم بالتوفيق ....1 نقطة
-
يفترض وجود دالة أو قيمة توقف عملهم، لكنه غير موجود. فالحل هو رسم أو حذف العنصر بشكل كامل (وحذف العنصر أفضل لتقليل مكونات العرض على الشاشة) (screen) و شجرة الواجهات widget tree, flutter. الطريقة الأولى بسيطة أيضا متحول بولياني مسؤول عن العرض و نغير قيمته بالاعتماد على تغيير الحالة state. بشكل عام وكتفكير مبرمج، استخدم الطريقة التي تعمل طالما أنها تعمل (لا داعِ لتغييرها) وهذا المنطق الذي قمت بشرحه بسيط وفعال ويمكنك تطبيقه لأي عنصر آخر. أما الطريقة : Navigator.pop(context); فأظن أنها تقوم بإضافة طبقة أعلى الشاشة (نظام المكدس) ثم يتم التخلص منها. الطريقة الأولى تعطي تحكم أفضل. اختر ما يناسبك بالتوفيق1 نقطة
-
مرحبا، إن طريقة إنهاء عمل ProgressIndicator (متابع التقدم) هو عبارة عن إزالته من العرض بشكل كامل. يتم ذلك من خلال تحديث الحالة الذي يقوم بإعادة رسم عناصر الواجهة (وسيمون التحديث مع عدم تضمين هذا العنصر) فسيتم إخفائه. الحل: نعرف متحول خاص بعرض ProgressIndicator (متابع التقدم) مثلا: متحول يدل على التحميل: bool isLoading = false; وتابعين للتحكم به والربط مع العرض: العرض و الإخفاء تتم بتعديل الحالة.. void show() { setState(() => isLoading = true); } تغيير الحالة void dismiss() { setState(() => isLoading = false); } وعند رسم العناصر ضمن سياق الشيفرة البرمجية الطبيعية نفحص قيمة المتحول وعندها إما نرسم ProgressIndicator أو لا. child: isLoading? Center( child: CircularProgressIndicator(), ), : null // عنصر فارغ عند أي تغيير في الحالة state سيتم إعادة رسم الواجهة وفحص المتحول isLoading وعليه سيتقرر رسم متابع التقدم أو لا. بالتوفيق1 نقطة
-
السلام عليكم، انا طالبة ثانوي بحثت عن تخصصات كثيرة في مجال التقنية لأن هذا ما أميل له، ووجدت تخصص هندسة البرمجيات قرأت عنه كثيراً ولكنني اجد صعوبة في وجود متخصصين في هذا التخصص وأعتقد ان هذا المكان هو الانسب إذا تخصصت هندسة برمجيات، كيف ستكون طبيعة المواد؟ ماذا أحتاج؟ أي جهاز احتاج للبرمجة؟ أي معلومات خبيرين فيها اتمنى إعلامي بها1 نقطة
-
السلام عليكم يا شباب انا جديد بالاكادميه انا من دوره واجهات المستخدم لكن عندما دخلت اكتشفت ان هناك اكثر من كورس غير واجهات المستخدم هل هاده الزاميه ام اختياريه ارجو الرد1 نقطة
-
لا، فالأرشيف يحتوي على النسخ الأقدم للدورات أي أنها تستخدم تقنيات قديمة، و بمجرد تحديث الدورات و استخدام تقنيات حديثة أفضل فأنت لست بحاجة إلى تعلم التقنيات الأقدم.1 نقطة
-
مرحبا @Hafsa Aly يشير هذا الكود إلى API، والـ APı API هو اختصار لواجهة برمجة التطبيقات، وهو وسيط برمجي يسمح لتطبيقين بالتحدث مع بعضهما البعض. في كل مرة تستخدم فيها تطبيقًا مثل Facebook، أو ترسل رسالة فورية، أو تتحقق من الطقس على هاتفك، فأنت تستخدم واجهة برمجة تطبيقات. في هذا الكود تقوم أنت بسحب جداول البيانات الخاصة بهذا الـ API ومن ثم يمكنك استخدم هذه الجداول في موقعك الخاص. حيث توفر خدمة الـ API جداول database جاهزة يمكنك استخدامها في موقعك وإضافة الخصائص التي تريدها عليها.1 نقطة
-
مرحباً @Hafsa Aly من شكل الكود يبدو أنه أحد ال component التي تستخدمينها ضمن الكود الخاص بك , وهي بساطة اسمها App وترجع داتا api_key , لا أدري بالضبط ما معناها ولكن أظن أنها مستخدمة للتواصل مع أحد الأطراف أو الخدمات الخارجية والتي تحتاج هذا ال key ليتم التواصل بشكل صحيح والتعرف على تطبيقك و تحقيق المطلوب . أو ربما هو كود مطلوب للتعامل مع ال Back end الخاص بموقعك , ليتحقق من أن الطلبات (requests) تأتي من المكان الصحيح . بالمناسبة آنسة حفصة , حبذا لو تغيرين عنوان السؤال إلى شيء معبّر أكثر عن المشكلة . تحياتي .1 نقطة
-
وعليكم السلام ورحمة الله وبركاته @dragon دورة واجهات المستخدم تبدأ معك من الصفر إلى حد الاحتراف , يمكنك عند الوصول لمعرفة ال HTML , CSS , JS بناء أول موقع الكتروني خاص فيك بالفعل بدون الحاجة لإتمام الدورة , ولكن بالطبع عند إكمال الدورة ستطبق أمثلة على الذي تعلمته بالإضافة لتعلم أدوات توفر عليك الوقت والجهد بشكل كبير ( مثل Gulp وغيرها ) , فيمكننا القول أن الضروري جداً والذي لا غنى عنه هو HTML , CSS , JS و بعض التطبيقات عليها والباقي هو تطوير لمهاراتك و لإمكانك المنافسة والدخول في سوق العمل . تحياتي .1 نقطة
-
إذا كنت تقصد دورات أكثر من دورة تطوير واجهات الستخدم فلا هي ليست الزامية. فبشرائك لأحد دورات أكاديمية حسوب سيتم إعطاءك الوصول للمسار الأول من جميع دورات الأكاديمية، و هذا حتى نساعد الطلاب في تعلم أساسيات المجالات الأخرى إذا أحبوا ذلك و نمهد لهم الطريق في التعمق فيها أكثر. أيضًا في بعض الحالات باشتراكك في دورة ما قد تحتاج لأساسيات تم شرحها في دورة أخرى و بذلك ستجدها متاحة لك، أمّا في حالتك فلا يوجد ما تحتاجه قبل أن تبدأ في هذه الدورة إلا إذا كنت مبتدأ تمامًا و ليس لديك أي خلفية سابقة أنصحك بأن تطلع على المسار الأول من دورة أساسيات علوم الحاسوب حتى تتعلم أساسيات البرمجة و التفكير المنطقي و الخوارزميات. إذا كان استفسارك بخصوص أمر آخر أرجو منك التوضيح أكثر حتى أتمكن من مساعدتك شكرًا لك.1 نقطة
-
مرحبا، المشكلة تكمن في حزمة المطور JDK الخاصة بلغة Kotlin. تأكد من تحميلك لمكتبات اللغة و إضافتها لبيئة النظام windows environment path. هي موجودة ضمن المشروع ولكن تأكد من الربط بشكل صحيح. و استدعاء المكتبات ضمن الشيفرة البرمجية لديك. مثلا مكتبة التعامل مع النصوص مطلوبة، ومكتبة اخرى خاصة بلغة جافا. وإن آخر سطر لا يؤدي لطباعة اي شيئ، استخدم دالة الطباعة. حاول تجريب شيفرة برمجية من الانترنت من التوثيق الرسمي، حيث تكون مكتوبة بشكل صحيح مع تضمين المكتبات اللازمة. نفذ الخطوات و اخبرنا في حال وجود مشكلة. => ربط حزمة المطورين الخاصة بكوتلن ضمن إكليبس : تثبيت المسار لـ kotlin plugin settings in eclipse (path: Window -> preferences -> Kotlin -> Compiler -> JDK Home) و تأكد من تضمين الحزمة ضمن المشروع بالشكل الصحيح: file -> project structure -> edit sdk بالتوفيق1 نقطة
-
مرحبا، كيف قمت بجلب بيانات المتحول user$ قد تكون المشكلة فيها. كما أن عبارة SQL لديك ليست بأفضل كفائة لأنك لا تعيد من الاستعلام ماتريده بالضبط، إن تعديل المدرب سمير مناسب لحالتك. أرجو منك إطلاعنا على باقي الأجزاء كما ذكرت لتحديد المشكلة، شكرا لك.1 نقطة
-
مرحباً محمود، أظن أنك تستخدم PDO، بما أنك تريد الإستعلام عن عدد السجلات التي تم تخزينها في اليوم الحالي فلم لا تستخدم الدالة count التابعة للغة sql بالشكل التالي: <?php $checkLog = $conn->prepare("SELECT count(id) FROM logs WHERE DATE(date) = CURDATE() AND user = ?"); // prepare the query $checkLog->execute([$SUI]); $rowCount = $checkLog->fetchColumn(); // جلب عدد الصفوف // عمل الشرط المناسب حسب عدد الصفوف if($rowCount < 5) { echo "Still Yes"; }else{ echo "done today"; } المفروض إذا كان عدد الصفوف أصغر من 5 يتحقق الشرط و بالتالي يطبع عبارة still yes لكن إن كان أكبر من أو يُساوي 5 يطبع done today، بالتوفيق.1 نقطة
-
السلام عليكم أحبائي .. انا مستقل جديد على منصة مستقل .. عندي خبرة في مجال التصميم الغرافيكي و الرسوميات اردت ان اسئل هل فعلا هناك أمل في الحصول على دخل محترم من منصة مستقل ام لا لانني رأيت الكثير من المستقلين مسجلين من سنوات 2018 و 2017 و دخلهم الكامل من الموقع لا يتجاوز 500 .. 700 دولار ( يعني حوالي 25 دولار في الشهر ) قليل جدا مقارنة بالعمل و تقديم العروض كل يوم .. بالرغم من تقييمهم العالي1 نقطة
-
union هي أحد بنى المعطيات في لغة C وهي مماثلة تمامًا للهياكل Structure وتعرّف بنفس الطريقة التي يعرّف بها الـ struct union car{ char name[50]; int price; };وكذلك المتغيرات من نوع union تُنشأ بشكل مماثل للمتغيرات من نوع struct union car{ char name[50]; int price; }c1, c2, *c3; OR; union car{ char name[50]; int price; }; -------Inside Function----------- union car c1, c2, *c3;الفرق بين union و struct هو في تخصيص الذاكرة بينهما فمقدار الذاكرة المطلوبة لتخزين متغير من نوع struct هو مجموع حجم الذاكرة لجميع الأعضاء members في المتغير struct، بينما الذاكرة المطلوبة لتخزين متغير من نوع union هو مقدار الذاكرة المطلوبة لأكبر عنصر في المتغير union. المثال التالي يوضح بشكل كبير الفرق بين حجم الذاكرة المطلوبة لتخزين متغير struct وحجم الذاكرة المطلوبة لتخزين متغير union: #include <stdio.h> union job { //defining a union char name[32]; float salary; int worker_no; }u; struct job1 { char name[32]; float salary; int worker_no; }s; int main(){ printf("size of union = %d",sizeof(u)); printf("\nsize of structure = %d", sizeof(s)); return 0; }النتيجة: size of union = 32 size of structure = 40حجم الذاكرة المطلوبة للمتغير struct في المثال أعلاه: حجم الذاكر المطلوبة للمتغير union في المثال أعلاه: ما الفرق بين union و struct في C؟1 نقطة
-
هل الـ Affiliate Marketing مربح فعلا؟ قرأت فى أحدى المواقع عن أشخاص يربحوا الأف الدولارات شهريا؛ فهل هذا حقيقى؟ وماهو عملهم بالضبط؟ أرجو توضيح الصورة بشكل أكبر ولو أمكن ذكر بعض الإسماء لخبراء فى هذه المجال. شكراً1 نقطة