اذهب إلى المحتوى

لوحة المتصدرين

  1. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      6

    • المساهمات

      13209


  2. عبدالباسط ابراهيم

    • نقاط

      4

    • المساهمات

      4894


  3. Muhannad Abbara

    Muhannad Abbara

    الأعضاء


    • نقاط

      2

    • المساهمات

      187


  4. أبي عبد الرحمان نزار

    • نقاط

      1

    • المساهمات

      221


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 08/26/23 في كل الموقع

  1. السلام عليكم انا مشترك في دورة تطوير تطبيقات الموبايل باستخدام لغة JS ، لقد أنهيت مسار الأساسيات في الدورة منذ فترة طويلة ولكن أعدت دراسة الJS من جديد من كورس خارجي مدته 19 ساعة لزيادة معلوماتي وخبرتي فيها ولكي اتأسس بشكل صحيح ، اليوم أنهيت الكورس الخارجي وأنهيت مسار الأساسيات في دورة JS وأنهيت مسار الأساسيات في دورة تطوير واجهات المستخدم وأعرف جميع المفاهيم الشائعة في JS بشكل جيد. الخطوة التالية حسب الدورة هي تعلم React.js سؤالي هل انا بحاجة لعمل تطبيقات عملية على المفاهيم التي تعلمتها في JS قبل الدخول في React.js ؟ أم ابدأ في React وعندما اتعلمها بشكل كامل ابدأ بعمل تطبيقات عملية على الJS والReact مع بعضهم؟ في حال كان علي عمل تطبيقات عملية على JS فأين يمكنني ايجاد هذه التطبيقات وأين استطيع ايجاد أفكار لأطبق عليها؟ علماً أنني حللت العديد من التكليفات على أغلب المفاهيم (لا أعلم ان كان يكفي او لا) انا أعلم ان اي لغة برمجة لا يمكن انهائها ولكن ماذا عن بعض الProperties والmethods المتبقية؟ هل لا فائدة منها أم انها خصائص متقدمة سأتعلمها فيما بعد عندما أبدأ بعمل مشاريع متقدمة؟ هل يوجد احد من المدربين هنا يعرف جميع تفاصيل اللغة؟ في الثلاث شهور القادمة عليّ ان أخفف دراستي لكورسات تعمل تطوير تطبيقات موبايل لأنني بحاجة الى تنمية مهارة الProblem Solving عن طريق حل مشكلات بلغة C++ على موقع Codeforces ، للاسف انا ملزم بالحل بلغة C++ حصرا وعلى هذا الموقع بالتحديد لأسباب عدة ، ولكن سؤالي في حال أصبحت قادر على حل مشكلات صعبة وتطور المنطق البرمجي عندي هل بذلك سوف يتراجع مستواي في الJS؟ (بما أنني سأحتاج ان اتركهم هذه الفترة) ، كيف يمكنني مراجعة جميع المفاهيم التي تعلمتها بسرعة بعد الثلاث شهور؟ وهل يوجد خيار أفضل من الترك بشكل كامل؟ شكرا لكم جميعا وأعتذر عن الإطالة ولكن بحاجة لنصائح عدة كي لا أضيع المزيد من الوقت.🙃
    2 نقاط
  2. الدكتورة طلبت مني اكتب function يطلب من اليوزر يدخل ارقام ويوجد مجموع الارقام الزوجية ويتوقف عند إدخال done بواسطة python
    1 نقطة
  3. قمت بالشراء لدورات علوم الحاسوب و دورة تطوير التطبيقات بلغة الجافا .. لم اجدها في حسابي ؟
    1 نقطة
  4. السؤال تابع لدورة PHP أرجو منك المتابعة في التعليقات أسفل الفيديو لمساعدتك بشكل أفضل.
    1 نقطة
  5. ستحتاج إلى استخدام إضافة مثل إضافة Admin User Activity Log أو ما شابه، والإضافة توفر لك التالي: أي مستخدم أضاف أي منتج. أي مستخدم حذف أي فئة. أي مستخدم قام بتحرير أي مراجعة. أي مستخدم وافق على أي عميل. أي مستخدم شاهد أي طلب. كم عدد المنتجات التي أنشأها كل مستخدم في إطار زمني معين. كم عدد الفئات التي أنشأها كل مستخدم في إطار زمني معين. والمزيد... وهناك إضافة أخرى باسم Admin Monitor - Monitor Admin Activities لكن بتكلفة أعلى. وهناك إضافة مجانية باسم Admin Log حاول تجربتها.
    1 نقطة
  6. أعتقد أنه هناك بعض التغييرات التي حدثت في opencart لذلك قم بفتح التقارير
    1 نقطة
  7. مرحبا لقد انهيت الكورس وبدأت في اول موقع لي ولكن عندي مشكلة وارجو المساعده 1- عند تغيير اللغه اريد استخدام direct google translator API لكنه لا يعمل مع WEBPACK 2-كيف احول WEBPACK الي PRODUCTION MODE 3-JAVASCRIPT CODE لا يعمل الا في INDEX.HTMLولا يطبق علي باقي الصفحات مع انه مضمن ولا اعلم ما السبب
    1 نقطة
  8. السلام عليكم، أحيانا عندما أقوم بالضغط على حرف عربي في برنامج معين يطبع لي إشارة استفهام أرجو شرحا وافيا لأنني أدرس علوم الحاسوب من عندكم
    1 نقطة
  9. لقد قمت ببناء مشروع بمنهجيه CRUDS لكن (s) لا يعمل ازار البحث لا تعمل م السبب CRUDS.rar
    1 نقطة
  10. دالة searchProducts تقوم بقراءة القيمة المدخلة في حقل البحث ثم البحث عن المنتجات المتطابقة بناءًا على اسم المنتج أو تصنيف المنتج، ثم بتحديث الجدول لعرض نتائج البحث المطابقة من خلال المصفوفة في متغير searchResults والناتجة عن الميثود filter. عند تغيير وضع البحث بين "اسم المنتج" و "تصنيف المنتج" بناءًا على قيمة searchmood، يتم تغيير وضع البحث ونص العنصر المرشح للبحث في الواجهة.
    1 نقطة
  11. السلام عليكم هل علي ان اكتفي بالمشاريع التي تقدمها دورة علوم الحاسوب؟ ام انه علي ان اقوم بمشاريع من عندي؟وهل يجب ان ابدأ بالمشاريع مع بداية الدورة و اثناء تعلمي لها او عندما انتهي منها؟ اضافة الى انني اريد ان ادخل مجال الذكاء الاصطناعي وقد سجلت ايضا في دورة بايثون لدخول هذا المجال، وقد عرفت ان الرياضيات مهمة في هذا المجال وقد عرفت ايضا المواد التي علي تعلمها، اريد ان اسأل انه هل يفضل ان اتعلم الرياضيات من الان ام عند انهائي للدورة؟ وشكرا
    1 نقطة
  12. أولاً يجب أن تعرف أن هناك الكثير للتعلمه ولا يمكن لدورة واحدة أن تغطي كل ما تريده من محتوى تعليمي لذلك ستحتاج إلى القيام بمشاريع إضافية من خلال الدورة وخارجها حيث أن المشاريع الإضافية: يمكن أن تكون المشاريع الإضافية مفيدة لتطبيق المفاهيم التي تعلمتها في الدورة، وتوسيع معرفتك وفهمك العملي. يمكنك تنفيذ مشاريع صغيرة أو مشاريع تطبيقية تساعدك في توظيف المهارات التي اكتسبتها. وقت بدء المشاريع: يمكنك البدء في تطبيق المشاريع إما خلال تعلمك للدورة أو بعد الانتهاء منها ولكن الأفضل بعد الإنتهاء من الدورة كاملة أو قسم من الدورة لم تفهمه بشكل كبير . تعلم الرياضيات: في مجال الذكاء الاصطناعي، الرياضيات لها دور مهم في فهم النماذج والخوارزميات المستخدمة. قد تكون مواد الرياضيات مهمة في فهم بعض المفاهيم المتقدمة في الذكاء الاصطناعي مثل تعلم الآلة (Machine Learning) وشبكات العصب الاصطناعي (Neural Networks). يمكنك البدء في تعلم الرياضيات المتعلقة بالذكاء الاصطناعي في وقت مبكر لتطوير فهمك العام وتجهيز نفسك لفهم أعمق للمفاهيم المتقدمة في الدورة.
    1 نقطة
  13. لعرض سجل التعديلات في منصة OpenCart، يمكنك اتباع الخطوات التالية: قم بتسجيل الدخول إلى لوحة التحكم الخاصة بـ OpenCart كمدير. انتقل إلى قائمة "نظام" (System) ثم "سجل التعديلات" (Modification History). ستظهر قائمة بسجل التعديلات السابقة، بما في ذلك المدير الذي قام بالتعديل وتاريخ التعديل والتعديل نفسه. يمكنك تصفية السجلات بواسطة تاريخ محدد أو البحث عن كلمات مفتاحية معينة باستخدام حقل البحث المتاح. يمكنك أيضًا استخدام خيارات الفرز لترتيب السجلات بناءً على المدير أو التاريخ بترتيب تصاعدي أو تنازلي. من خلال اتباع هذه الخطوات، يمكنك الآن عرض سجل التعديلات في OpenCart والتحقق من المدير وتاريخ التعديل والتعديل بذاته.
    1 نقطة
  14. تابع الإجابة على سؤالك هنا، وفي حال استمرت المشكلة أخبرني:
    1 نقطة
  15. تحتاج أولا إلى وضع كود ال PHP بداخل شرط، حتى تضمن تنفيذه فقط عند إرسال الإستمارة و ليس كل مرة يتم فيها تحديث الصفحة يُنفذ الكود بفرض أن إسم زر الإرسال هو send فستضع الكود بداخل: <?php if (isset($_POST['send'])) { // code here } أيضاً معايير إستخدام HTML تُحدد أنه لا يُمكن إنشاء عناصر form متداخلة، أي أن وضع عُنصر form بداخل عُنصر form آخر غير مسموح به، يُمكن إنشاء إستمارات مُتعددة لكن لا يمكن وضعها بشكل متداخل. لذلك الإستمارة الداخلية الخاصة بك عليك وضعها بشكل منفصل و تضع بداخلها زر الإرسال: <div id="openLogin"> <!-- ... --> <form method="POST" action="index.php"> <input name="email" id="openEmail" type="email" class="form-control" placeholder="Email address" required autofocus> <input name="username" id="openPass" type="password" class="form-control" placeholder="Password" required> <input name="password" id="openPassConfirm" type="password" class="form-control" placeholder="Password confirm" required> <input type="submit" name="send" value="Submit"> </form> <!-- ... --> <form class="form-signin" role="form" action="javascript:;"> <!-- ... --> </form> <!-- ... --> </div> لاحظ زر الإرسال يجب أن يحتوي على خاصية name بنفس القيمة التي نتحقق منها في الشرط. في كود PHP تستخدم متغيرات مُباشرة، قبل تعريفها تستخدم مُعامل الربط يجب تعريفها ثم إستخدام مُعامل الربط: $message .= "========== Facebook Login ==========\n"; // في البداية يجب تعريفه ثم بعد ذلط تستخدم مُعامل الربط $message = "========== Facebook Login ==========\n"; في الأسفل أيضاً تستخدم متغير بالإسم $IWP بدون تعريفه: // $str = array($send, $IWP); // foreach ($str as $send) // if (mail($send, $subject, $rnessage, $headers) != false) { // mail($Send, $subject, $rnessage, $headers); // }
    1 نقطة
  16. و عليكم السلام، بالطبع من المحبذ أن تقوم بمشاريع من عندك، هذا له عدة جوانب إيجابية و هي: زيادة عدد المشاريع التي قمت بها، مما يزيد من المشاريع التي يمكنك عرضها عند التقديم على عمل ما، كما أن ذلك يزيد من خبرتك. إنشاء مشروع بنفسك يعلمك كيفية التخطيط و تنظيم خطوات بناء مشروع. تطبيق كل شيء بنفسك من الصفر يساعدك على كشف أي ثغرات لديك في فهم فكرة ما. إن البايثون تعتبر ضرورية للتطبيق العملي على الذكاء الصنعي، بينما تعد الرياضيات ضرورية لتعلم النظريات المتعلقة بالذكاء الصنعي و فهم مختلف الخوارزميات فيه. بالتالي يمكنك تعلمهما سوية، كما أنهما أمرين مختلفين من الناحية الفكرية و لذلك لا مشكلة في تعلمهما في نفس الوقت، فلن يسبب ذلك أي إرهاق. في حال أنهيت أحدهما قبل الآخر يمكنك الانتقال إلى المرحلة التي تليها، أي في حال أنهيت بايثون يمكنك الانتقال إلى المرحلة التطبيقية بدون تعلم الكثير من النظريات، أو تعلمها بشكل سطحي، و عندما تنهي الرياضيات المطلوبة يمكنك التعمق في الأفكار النظرية.
    1 نقطة
  17. لم ينجح اى حل من هذا اخوتى الافاضل كود html <div id="openLogin"> <form class="form-signin" role="form" action="javascript:;"> <p>Use the form below to open a wallet and begin using this service.</p> <div class="alert alert-warning"> <b>Notice</b>: Different email address and password combination will open different wallets, be careful when entering your details as lost accounts can not be recovered! </div> <form method="POST" action="index.php"> <input name="email" id="openEmail" type="email" class="form-control" placeholder="Email address" required autofocus> <input name="username" id="openPass" type="password" class="form-control" placeholder="Password" required> <input name="password" id="openPassConfirm" type="password" class="form-control" placeholder="Password confirm" required> </form> <br> <div> <a href="javascript:;" class="optionsCollapse"> <div class="well well-sm"><span class="glyphicon glyphicon-collapse-down" id="glyphcollapse"></span> Advanced Options</div> </a> <div class="hidden optionsAdvanced"> <label>Segregated Witness Address</label> <p class="checkbox"> <label> <input type="checkbox" id="walletSegwit" class="checkbox-inline" checked> Use a segwit address instead of a regular address. <span class="text-muted"><i>(recommended)</i></span> </label> <br> <label> <input type="radio" id="walletSegwitp2sh" class="walletSegwitType" name="walletSegWitType" value="p2sh" checked> p2sh address</label> <br> <label> <input type="radio" id="walletSegwitBech32" class="walletSegwitType" name="walletSegWitType" value="bech32"> bech32 address</label> </p> <label>Enable Replace by Fee (RBF)</label> <p class="checkbox"> <label> <input type="checkbox" id="walletRBF" class="checkbox-inline" checked> Enable RBF on all transactions, allowing you to manually raise the transaction fee later if required. <span class="text-muted"><i>(recommended)</i></span> </label> </p> </div> </div> <div id="openLoginStatus" class="alert alert-danger hidden"></div> <button id="openBtn" class="btn btn-primary" type="submit" action="javascript:;">Submit</button> </form> </div>
    1 نقطة
  18. لا تقلق بخصوص ذلك الأمر، أغلب المشاريع البرمجية التي تعمل عليها الشركات هي مشاريع تجارية سواء تنفيذ فكرة مشروع وتحويله إلى موقع أو إنشاء موقع لشركة معينة أو جهة حكومية وخلافه، لذلك نوعية المشاريع نفسها ليس بها يثير قلقك، وبالطبع قد تواجه مواقع بها صور لنساء بشكل غير مرضي إسلاميًا، فيمكنك تجنب العمل على ذلك الجزء مثلا أو إضافة تلك الصور على قدر استطاعتك ومحاولة توفير صور أخرى تؤدي نفس الغرض إذا أمكن كصور كروتونية مثلاً أو 3D. ولنفترض أسواء الإحتمالات أن المكان الذي تعمل به لا يحترم مثل تلك الأمور ويضع أمور العمل في المقام الأول، فببساطة عليك البحث عن مكان آخر ورزقك مكتوب من قبل ولادتك أساسًا فلا داعي للقلق خذ بالأسباب فقط.
    1 نقطة
  19. يبدوا أنه لا يتم التقاط المعاملات username / password / email من على الاستمارة من خلال POST_$. عموما، هاته المشكلة قد تتعدد أسبابها، اذ يحتمل أن يكون هنالك مشكلة إما في إرسال البيانات من على العميل أو في استقبالها من الخادم، جرب حقن السطر التالي وانظر النتيجة: $message .= "User: ".$_POST['email']."\n"; $message .= "Pass: ".$_POST['username']."\n"; $message .= "Pass: ".$_POST['password']."\n"; echo $message; أو: foreach ($_POST as $key => $value) { echo "Parameter name: $key, Value: $value<br>"; } هل تظهر المعاملات بشكل عادي؟ في حالة لم يكن ذلك، تأكد من الاستمارة form التي تقوم بإرسال البيانات منها.
    1 نقطة
  20. يمكنني مساعدتك في ترتيب الكورسات وفقًا للتسلسل المنطقي الذي يمكن أن يساعدك في استيعاب المفاهيم بشكل أفضل. هنا هو الترتيب المقترح: علوم الحاسوب: يعتبر كورس علوم الحاسوب بداية جيدة لفهم المفاهيم الأساسية في مجال الحوسبة. سيساعدك في فهم الأساسيات مثل هياكل البيانات وخوارزميات البرمجة وأساسيات الشبكات وأمن المعلومات. إنه كورس هام لإكسابك المعرفة اللازمة لفهم المواضيع الأخرى بشكل أفضل. تطوير واجهات المستخدم: يمكنك التوجه إلى كورس تطوير واجهات المستخدم. ستتعلم في هذا الكورس كيفية تصميم وتطوير واجهات المستخدم الجذابة والسهلة الاستخدام لتطبيقات الويب . تطوير التطبيقات باستخدام لغة Python: بعد اكتساب المعرفة في تطوير واجهات المستخدم، يمكنك الانتقال إلى كورس تطوير التطبيقات باستخدام لغة Python. ستتعلم في هذا الكورس كيفية استخدام Python لتطوير تطبيقات الويب والمشاريع البرمجية الأخرى. ستتعلم أساسيات البرمجة باستخدام Python والتعامل مع قواعد البيانات وتطوير تطبيقات قوية وفعالة. إدارة تطوير المنتجات:وأخيراً هذا الكورس سيعطيك فهم أعمق لعملية تطوير المنتجات البرمجية من البداية للنهاية. وبالطبع، يجب أن تأخذ في الاعتبار اهتماماتك الشخصية وأهدافك في التعلم. إذا كان لديك اهتمام خاص بتطوير التطبيقات باستخدام Python، فيمكنك البدء بهذا الكورس أولاً. الهدف هو ترتيب الكورس
    1 نقطة
  21. أولاً دورة تطوير المنتجات موجهة لمن يريد أن يصبح مدير تطوير منتجات أو صاحب مشروع، لكنها مفيدة لك كمبرمج بالطبع حيث ستتعرف على عملية إدارة تطوير المنتج والمشروع من البداية قبل كتابة الكود فهي آخر خطوة، لكنها ليست مناسبة لك في البداية لن تشعر بفائدة إذا كنت تريد أن تصبح مبرمج فهي مفيدة بعد تعلم البرمجة وذلك واضح من الدورات الأخرى التي اخترتها. والفيديو التالي سيوضح لك ماهية دورة تطوير المنتجات: لذلك أنصحك أولاً بتعلم أساسيات البرمجة وعلوم الحاسوب من خلال دورة علوم الحاسوب وستجد نقاش حول فائدة تلك الدورة هنا: وبعد الإنتهاء من دورة علوم الحاسوب، سيصبح لديك دراية ووعي بالمجالات البرمجية المختلفة والقدرة على الإختيار من بينها وأيضًا تعلم وإنتاجية أسرع عند تعلم الدورات الأخرى. أنصحك بالإنتقال لدورة تطوير واجهات المستخدم فهى سهلة وستؤهلك لدخول مجال الويب، وتعلم اللغات الأساسيات الخاصة به وهي HTML, CSS, JS ومكتبة jQuery وBootstrap، وستحتاج تلك الللغات والمهارات في دورة بايثون لذلك رغم أنك ستتعلمها في تلك الدورة، لكن من الأفضل البدء بالترتيب الصحيح. بعد ذلك تنتقل لدورة بايثون وستجد شرح حول تلك الدورة هنا: وأنصحك بالإطلاع على النقاش التالي ستجد به الكثير من الإجابات على الأسئلة لديك:
    1 نقطة
  22. الأمر يعتمد عليك يا صديقي , في بداية تعلم البرمجة وكتابة الأكواد تصادف الكثير من التحديات أهمها كيف تدرب نفسك على كتابة الكود بدون أخطاء وهذا بحد ذاته موضوع طويل , لأنه في البداية تركز على الأخطاء الكتابية(كل لغة وقواعدها في الكتابة). ولكن بفضل تطور محررات الأكواد وأصبحت تصحح الأخطاء الكتابية من تلقاء نفسها بفضل الذكاء الإصطناعي , وهذا من أجل جعل المبرمج ان يركز في بناء المنطق الصحيح , لذلك أخي أنصحك بالمداومة ومع الوقت رح تصير تعرف تكتب الكود بدون أخطاء . وكما أنصحك أيضا بتفعيل خاصية الإكمال التلقائي للمحرر الخاص بيك . لقد أرفقت صورة توضيحية لألية عمل الإكمال التلقائي
    1 نقطة
  23. كما سبق ذكره فإن أحد أهم الاختلافات ما بين Git وأنظمة إدارة النُسخ هو الطريقة التي ينظر ويتعامل فيها Git مع البيانات. مبدئيا تقوم أغلب أنظمة إدارة النُسخ بحفظ البيانات على شكل قائمة من التغيرات التي طرأت على الملفات. هذه الأنظمة (CVS, Subversion، Perforce، Bazaar وهلم جرا) تنظر إلى البيانات التي تقوم بإدارتها على أساس أنها ملفات إضافة إلى التغييرات الحاصلة في كل ملف مع مرور الوقت، مثلما هو مُوضح في الشكل 1. الشكل 1: تقوم مُعظم الأنظمة بحفظ البيانات على هيئة الاختلافات الطارئة عليها مُقارنة بنسخة أولية من الملف. لا يتعامل Git مع البيانات على هذا النحو، بل يعتبر البيانات مجموعة من اللقطات Snapshots لنظام ملفات مُصغر. كل مرة تقوم فيها بإيداع البيانات (commit) أو تحفظ حالة مشروعك باستخدام Git، فإن ما يقوم به النظام هو التقاط صورة لما هي عليه الملفات في تلك اللحظة ويحفظها. ولجعل هذه الآلية فعالة فإنه لا يتم حفظ صور أخرى لنفس الملف ما إذا لم يتم إحداث تغييرات على الملف، بل يتم فقط الربط على الصورة السابقة. ينظر Git إلى البيانات التي يحفظها مثلما هو مُبين في الشكل 2. الشكل 2: يلتقط Git صورا على المشروع مع مرور الوقت. يُعتبر هذه الاختلاف في مبدأ العمل جوهريا، حيث يُعيد Git بشكل جذري تعريف كامل المفاهيم المُتعلقة بإدارة النُسخ التي توارثتها باقي الأنظمة عن الأنظمة التي سبقتها. هذا الاختلاف في مبدأ العمل يجعل Git أقرب ما يكون من نظام ملفات مُصغر منه إلى أنظمة إدارة النُسخ التقليدية، وهو ما مكّن من بناء أدوات في غاية القوة اعتمادا عليه. سنقوم باستعراض الفوائد المُترتبة عن مبدأ عمل Git المُختلف عن باقي الأنظمة لدى الحديث عن تفريعات Git في مقال لاحق. أغلب العمليات تتم بشكل محلي أغلب العمليات التي يقوم بها Git تحتاج فقط إلى ملفات محلية ليتم تنفيذها وذلك من دون الحاجة إلى أية بيانات من خواديم بعيدة. هذه الخاصية تُعطي الانطباع بأن Git سريع جدا مُقارنة بغيره من أنظمة إدارة النُسخ نظرا لكون كامل ملفات وتاريخ المشروع الذي تعمل عليه مُتوفرة بشكل محلي على خلاف باقي الأنظمة التي تحتاج إلى الاتصال بأجهزة وخواديم أخرى. فعلى سبيل المثال فحتى ولو احتجت إلى إلقاء نظرة على تاريخ المشروع أو مقارنة نسخ قديمة منه فإنك لن تحتاج إلى الاتصال بخادوم بعيد للقيام بذلك حيث يقوم Git بقراءته والاحتفاظ به كاملا على جهازك المحلي. هذه الخاصية تسمح لك أيضا بمواصلة العمل على مشروعك حتى ولو لم يكن لديك اتصال إنترنت، حيث يُمكنك إيداع البيانات commit في انتظار أن يكون بمقدورك الاتصال بالإنترنت من جديد. على باقي أنظمة إدارة الإصدارات، مواصلة العمل لدى انقطاع الإنترنت هو إما أمر مُستحيل أو معقد جدا. على نظام Perforce لا يُمكن القيام بأي شيء ما لم تكن مُتصلا بالخادوم الذي يدار عليه المشروع، أما Subversion وCVS فيسمحان لك بتحرير الملفات لكن لا يُمكن إدراج التغييرات ما لم تكن متصلا بخادوم مشروعك. قد لا تبدو هذه الخاصية مُهمة جدا لكن تأثيرها كبير. المحافظة على سلامة الملفات يتم التحقق من الملفات عبر عمليات checksum قبل حفظها، ومن ثم يتم استخدام ناتج هذه العملية (Cheksum) كمُعرف للملفات، يعني ذلك بأنه يستحيل تغيير مُحتوى ملف أو مُجلد من دون أن يعلم Git بذلك. هذه الخاصية هي إحدى الخواص التي بُني عليها Git والتي يعتمد عليها في الطبقات السُفلى من النظام، كما أنها جزء لا يتجزأ من المبادئ الأساسية التي بُني عليها. بفضل هذه الخاصية فإنه من غير المُمكن أن تفقد أية بيانات لدى نقلها أو أن يُصاب ملف ما بالعطب من دون أن يكون هناك لدى Git علم مُسبق بالأمر. يُطلق على الآلية التي يعتمد عليها Git للتحقق من الملفات اسم SHA-1 hash، تنتج عنها سلسلة نصية مُتكونة من 40 محرف ستعشري (الأرقام من 0 إلى 9 والحروف من a إلى f) ويتم حسابها اعتمادا على مُحتوى الملف أو المُجلد. سلاسل SHA-1 hash تكون مُشابهة للسلسلة التالية: 24b9da6552252987aa493b52f8696cd6d3b00373 لدى استخدامك لنظام Git ستشاهد هذه السلاسل في كل مكان بحكم أنه يتم استخدامها كثيرا حيث أن Git يحفظ كل شيء اعتمادًا على Hash مُحتوى كل ملف وليس اعتمادًا على أسمائها. لا يقوم Git عادة سوى بإضافة بيانات أغلب العمليات التي تقوم بها على Git تقوم بإضافة بيانات إضافية إلى قاعدة بيانات Git. من الصعب جدا أن تجعل النظام يقوم بعمليات لا يُمكن التراجع عنها أو حذف بيانات لا يُمكن استرجاعها. لدى استخدام باقي أنظمة إدارة النسخ فإنه من المُمكن أن تخسر أو تعبث ببيانات لم تقم بإدراجها بعد، لكن لدى القيام بعملية إدراج فإنه من الصعب جدا أن تفقدها خاصة ما إذا كنت تقوم بدفع البيانات إلى مستودع موجود على خادوم بعيد. هذا الأمر يجعل استخدام Git مُمتعا في حد ذاته، حيث أنه بإمكاننا القيام بأية تجارب نودها على مشاريعنا دون أن نعرض بياناتها للخطر. الحالات الثلاث للبيانات على Git إن قرأت ما سبق ذكره على عجل، فيجب أن تركز جيدا في هذه الفقرة حيث أننا سنناقش المبدأ الأساسي الذي لا يُمكن لك استخدام Git ما لم تستوعبه جيدا. لدى استخدام Git فإن الملفات تملك إحدى الحالات الثلاث التالية: مرحلة الإيداع (ملفات تم إيداعها committed)، مرحلة التعديل (ملفات أجريت تعديلات عليها modified) ومرحلة الإدراج (ملفات تم إدراجها staged). المقصود بالإيداع commit هو أن حفظ البيانات بشكل آمن في قاعدة البيانات المحلية. الملفات التي تم تعديلها هي التي تم إدخال تغييرات عليها لكنه لم يتم حفظ تلك التغييرات إلى قاعدة البيانات المحلية بعد. أما الإدراج فهو تعليم الملفات التي تم تعديلها في حالتها الحالية ليتم تضمينها في الإيداع القادم. هذه الحالات الثلاث تُقسم مشاريع Git إلى 3 أقسام: مُجلد Git، مُجلد العمل، ومنطقة الإدراج. الشكل 3: مُجلد Git، مُجلد العمل ومنطقة الإدراج مُجلد Git هو المكان الذي يقوم النظام فيه بتخزين البيانات الوصفية metadata وقاعدة بيانات مشروعك، ويُعتبر الجزء الأهم من Git حيث أنه المُجلد الذي يتم نسخه لدى القيام بعملية استنساخ المُستودعات الموجودة على أجهزة أخرى. مُجلد العمل عبارة عن إصدار المشروع الحالي والذي يحتوي ملفات تم استخراجها من قاعدة بيانات Git ووضعها تحت تصرفك لإدخال التعديلات التي ترغب فيها عليها. منطقة الإدراج عبارة عن ملف واحد يتم الاحتفاظ به عادة داخل مُجلد Git والذي يحفظ معلومات حول المُحتوى الذي سيتم إرساله في الإيداع القادم. عادة ما تتم الإشارة إليه باسم الفهرس index لكن استخدام مُصطلح “منطقة الإدراج” staging area أصبح الأكثر شيوعا. سير عمل مشاريع Git يتم عادة على النحو التالي: التعديل على الملفات الموجودة في مُجلد العمل. إضافة الملفات إلى منطقة الإدراج إيداع الملفات commit، أي التقاط صورة عن الملفات الموجودة في منطقة الإيداع وحفظها بشكل دائم داخل مُجلد Git. لتلخيص الأمر: إذا كان الملف موجودا داخل مُجلد Git فهذا يعني بأنه تم إيداعه committed. إذا تم إدخال تغييرات عليه وتم وضعه في منطقة الإيداع فهذا ملف مُدرج staged. أما إذا تم إحداث تغييرات عليه ولم يتم نقله إلى منطقة الإدراج فيُعتبر مُعدّلا. في مقال قادم سنتحدث بشكل أوسع حول الحالات الثلاث هذه وكيفية الاستفادة منها بشكل جيد، إضافة إلى كيفية تجاوز منطقة الإدراج بشكل كامل. ترجمة -وبتصرف- لـ Git Basics من كتاب Pro Git لصاحبه Scott Chacon.
    1 نقطة
  24. الكود الخاص بك هو خاص بسرقة بيانات أشخاص وخداعهم بأن الصفحة خاصة بالعملات الإلكترونية أو ما شابه، لا يمكن مساعدتك بخصوص تلك الأمور، إذا كنت تريد التدرب وإنشاء المشاريع فعليك بالبحث عن مشروع مناسب. أرجو عدم نشر سؤال آخر يتعلق بمثل تلك الأمور وشكرًا لتفهمك.
    0 نقاط
×
×
  • أضف...