تخطَّ إلى المحتوى
التوثيق

استخدام ShamashCyber

ابدأ من هنا إن كانت هذه جلستك الأولى. كل أمر في هذه الصفحة مكتوب ليُنفَّذ كما هو.

في هذه الصفحة

ما هي ShamashCyber#

ShamashCyber مساحة عمل تطويرية داخل المتصفح. بعد تسجيل الدخول تكون داخل جلسة لينكس تحتوي ملفات مشروعك وطرفية. يمكنك استخدام Git وتشغيل خادم ويب محلي وفتحه عبر عنوان HTTPS.

ليست محررًا يشغّل كودك في مكان آخر، وليست بيئة تعليمية تجريبية. الأوامر التي تكتبها تعمل داخل جلستك.

نقطة الدخول الوحيدة هي workspace.shamashcyber.com. وكل ما عداها في هذا الموقع توثيق.

أول خمس دقائق#

افتح مساحة عمل ثم استخدم الطرفية لتتأكد أين أنت وما الأدوات المتاحة. هذه الفحوص لا تغيّر شيئًا وتختصر عليك المشكلات لاحقًا.

terminal
pwd
whoami
git --version
python3 --version

mkdir -p ~/projects/first-session
cd ~/projects/first-session
إذا لم يُعثر على أمر

هذا يعني أن صورة مساحة العمل لا تتضمن تلك الأداة، ولا يعني أن مساحة العمل معطلة. اسأل من أعدّ الصورة أو استخدم أداة متوفرة.

أين تحفظ عملك#

احفظ المشاريع في مجلد عادي تحت مجلد المنزل، مثل ~/projects. التخزين منفصل عن الجلسة، لذلك إيقاف مساحة العمل لا يحذف تلك الملفات.

terminal
mkdir -p ~/projects/persistence-test
cd ~/projects/persistence-test
date > created.txt
printf 'persistence test\n' >> created.txt
cat created.txt

أوقف مساحة العمل بالطريقة المعتادة ثم شغّلها مجددًا واقرأ الملف. إن كان موجودًا فالاستمرارية تعمل كما هو متوقع.

terminal
cat ~/projects/persistence-test/created.txt
لا تحفظ عملك في /tmp

المجلدات المؤقتة للبيانات المؤقتة. ما تحتاجه الأسبوع القادم مكانه تحت مجلد المنزل، وما لا تحتمل فقدانه مكانه مستودع Git بعيد أيضًا.

أوامر ستستخدمها يوميًا#

الطرفية صدفة لينكس عادية. هذه الأوامر تكفي للتنقل وفحص الملفات في معظم جلسات المختبر.

pwdاطبع المجلد الذي أنت فيه الآن.
ls -laاعرض الملفات، بما فيها المخفية، مع الصلاحيات.
cd ~/projectsانتقل إلى مجلد مشاريعك.
mkdir demoأنشئ مجلدًا باسم demo.
cp -r src destانسخ ملفًا، أو مجلدًا باستخدام -r.
mv old newانقل ملفًا أو أعد تسميته.
cat fileاطبع محتوى ملف.
انتبه لأمر rm

الحذف من الصدفة فوري ولا توجد سلة محذوفات. اقرأ المسار قبل الضغط على Enter، وكن أشد حذرًا عند اجتماع -r و-f.

استخدام Git من مساحة العمل#

السير المعتاد هو استنساخ المستودع، وإنشاء فرع لعملك، ومراجعة ما تغيّر، ثم تسجيل التغيير عندما تكون النتيجة جاهزة.

git
cd ~/projects
git clone <repository-url>
cd <repository-directory>

git switch -c feature/my-work
git status
git add .
git commit -m "finish lab work"
المصادقة

استخدم تسجيل الدخول أو تكامل Git الذي توفره مساحة عملك. لا تلصق رمز وصول في ملف مصدري أو ملف README أو سكربت، لأن هذه الملفات تُسجَّل في المستودع.

كيف تعمل المعاينات#

تطبيقك يعمل داخل مساحة العمل. وعندما يستمع على منفذ، تستطيع مساحة العمل عرضه عبر عنوان HTTPS في متصفحك.

terminal
mkdir -p ~/projects/preview-test
cd ~/projects/preview-test
printf '<!doctype html><meta charset="utf-8"><h1>Preview works</h1>' > index.html
python3 -m http.server 3000 --bind 0.0.0.0
لماذا 0.0.0.0

العملية المرتبطة بـ127.0.0.1 فقط قد لا تكون قابلة للوصول من موجّه المعاينة. استمع على 0.0.0.0 ما لم يوثّق إطار العمل خلاف ذلك.

اترك العملية تعمل، ثم استخدم أداة المنافذ في واجهة مساحة العمل لفتح المنفذ 3000. لا تفتح المنفذ 3000 على جدار حماية الخادم.

مثال بايثون عملي#

يستخدم المكتبة القياسية فقط. يقدّم صفحة واحدة على المنفذ 3000، وهذا يكفي للتأكد من أن المعاينات تعمل من أولها إلى آخرها.

app.py
cat > app.py <<'PY'
from http.server import BaseHTTPRequestHandler, HTTPServer

class Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        body = b"<h1>Hello from ShamashCyber</h1>"
        self.send_response(200)
        self.send_header("Content-Type", "text/html; charset=utf-8")
        self.send_header("Content-Length", str(len(body)))
        self.end_headers()
        self.wfile.write(body)

HTTPServer(("0.0.0.0", 3000), Handler).serve_forever()
PY

python3 app.py

اتركه يعمل ثم افتح المنفذ 3000 من واجهة مساحة العمل.

مثال Node.js عملي#

استخدم هذا إن كان Node.js متوفرًا في مساحة عملك. لا يحتاج أي حزم npm.

server.js
node --version

cat > server.js <<'JS'
const http = require("http");

http.createServer((req, res) => {
  res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
  res.end("<h1>Hello from ShamashCyber</h1>");
}).listen(3000, "0.0.0.0");
JS

node server.js

قراءة عنوان المعاينة#

عنوان المعاينة مبني من جلستك. كل جزء قبل النطاق يشير إلى شيء محدد.

https://3000--main--web-lab--student.shamashcyber.com

  1. المنفذ3000
  2. الفرعmain
  3. مساحة العملweb-lab
  4. المستخدمstudent
لا تخمّن العنوان

جزءا مساحة العمل والمستخدم يأتيان من الجلسة الحقيقية. فتح المنفذ من واجهة مساحة العمل هو الطريقة الموثوقة للحصول على عنوان يعمل.

عندما لا يعمل شيء ما#

معظم مشكلات جلسة المختبر هي واحدة من هذه الخمس.

عنوان المعاينة لا يفتح

تأكد أن العملية ما زالت تعمل وأنها مرتبطة بـ0.0.0.0 لا 127.0.0.1، ثم تأكد أن رقم المنفذ يطابق المنفذ الذي فتحته.

المنفذ مستخدم بالفعل

عملية من تشغيل سابق ما زالت تستمع. اعثر عليها وأوقفها، أو ابدأ على منفذ آخر.

terminal
ss -ltnp | grep 3000
ملفاتي مفقودة بعد إعادة التشغيل

تحقق إن كان العمل تحت /tmp أو مسار مؤقت آخر. الملفات تحت مجلد المنزل يفترض أن تكون موجودة.

الأمر غير موجود

صورة مساحة العمل لا تتضمن تلك الأداة. تأكد بـ--version واستخدم بديلًا مثبتًا بدل افتراض أن الجلسة معطلة.

Git يرفض الدفع

غالبًا مشكلة مصادقة، أو أن الفرع تقدّم على المستودع البعيد. اقرأ نص الخطأ، ثم اجلب التغييرات وادمجها أو أعد الأساس قبل الدفع مجددًا.

terminal
git fetch origin
git status

افتح مساحة عمل وضع شيئًا على منفذ.

أسرع طريقة لفهم المنصة هي تشغيل مشروع صغير من أوله إلى آخره. الدليل يشرح ذلك في خمس دقائق تقريبًا.