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

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

  1. محمد أحمد العيل

    • نقاط

      9

    • المساهمات

      308


  2. عبد الوهاب بومعراف

    • نقاط

      3

    • المساهمات

      1163


  3. Ahmed Voca

    Ahmed Voca

    الأعضاء


    • نقاط

      3

    • المساهمات

      3


  4. علي الرماحي4

    علي الرماحي4

    الأعضاء


    • نقاط

      2

    • المساهمات

      3


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

المحتوى الأعلى تقييمًا في 01/02/25 في كل الموقع

  1. انا حاب ابدا في مجال البرمجة بسبب عدم توفر شخص في شركتنا يفهم في مجال البرمجة الشي الوحيد اللي بيخليني اتعلم هو ادارة السيرفرات و الداتا بيز وهذا المجال من وين ابدا وكيف اتعلم المجال اللي ابغاه بدون اتعلم اشياء ما بتفيديني بشغلي مثل برمجة المواقع او تطبيقات الاندرويد وماشابه
    3 نقاط
  2. ان اردت بناء متجر الكتروني يسمح للمستخدمين باضافة متاجر فرعية فيه او اضافة منتجاتهم الخاصة فما هي الطريقة التي يجب تتبعها لكي يستطيع المستخدم تلقي أمواله بشكل مباشر؟ ان افترضنا ان إيطار العمل هو django على سبيل المثال.
    2 نقاط
  3. ^^^^^^ Target kernel_snapshot_program failed: Exception FAILURE: Build failed with an exception. * Where: Script 'C:\flutter\packages\flutter_tools\gradle\src\main\groovy\flutter.groovy' line: 1685 *
    1 نقطة
  4. السلام عليكم هو اي الفرق مابين الCoxPHFitter و الKaplanMeierFitter و الlogrank_test في مكتبه الlifelines ؟
    1 نقطة
  5. كيفية عمل المشاريع وهل حل اختبار كل فيديو بيتعرض هنا وكيف
    1 نقطة
  6. أنا لسه بادء وعرفت أن فيه معرض اعمال فا أنا مش عارف إبداء ازاي في رفع أعمالي فا ياريت معلش توضيح بالتفصيل عشان التعب مايروحش ع الفاضل يعني اول درس عمل الاختبار بس مش عارف ارفعه فين أو اعمل ايه
    1 نقطة
  7. السلام عليكم ورحمه الله وبركاته احبتي الكرام كيف الفكره لاستخراج الربح للصنف المباع import sys import os import sqlite3 from PyQt5.QtWidgets import ( QDialog, QLabel, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QCompleter, QListView, QHeaderView ) from PyQt5.QtGui import QFont, QStandardItemModel, QStandardItem, QBrush, QColor from PyQt5.QtCore import Qt sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) from database_connection import connect_to_db # استيراد الدالة للاتصال بقاعدة البيانات class ItemMovementUI(QDialog): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("حركة الأصناف") self.setGeometry(100, 100, 1300, 600) self.setWindowModality(Qt.WindowModality.ApplicationModal) layout = QVBoxLayout() self.title_label = QLabel("حركة الأصناف") self.title_label.setFont(QFont("Amiri", 24, QFont.Weight.Bold)) self.title_label.setStyleSheet("color: #2e8b57;") layout.addWidget(self.title_label) self.item_number_label = QLabel("أدخل رقم الصنف:") self.item_number_label.setFont(QFont("Amiri", 12)) self.item_number_input = QLineEdit() self.item_number_input.setFixedSize(400, 30) self.item_number_input.setFont(QFont("Amiri", 12)) self.completer = QCompleter() self.completer.setCaseSensitivity(Qt.CaseSensitivity.CaseInsensitive) self.suggestion_view = QListView() self.suggestion_view.setFont(QFont("Aljazeera", 12)) self.completer.setPopup(self.suggestion_view) self.item_number_input.setCompleter(self.completer) self.search_button = QPushButton("بحث") self.search_button.setFixedSize(100, 40) self.search_button.setFont(QFont("Amiri", 14)) self.search_button.clicked.connect(self.search_item_movements) input_layout = QHBoxLayout() input_layout.addWidget(self.item_number_label) input_layout.addWidget(self.item_number_input) input_layout.addWidget(self.search_button) layout.addLayout(input_layout) self.table = QTableWidget() self.table.setColumnCount(11) self.table.setHorizontalHeaderLabels([ "رقم الفاتورة", "Serial فاتورة", "نوع الفاتورة", "رقم الصنف", "اسم الصنف", "الوصف", "السعر مع الضريبة للحبة", "الكمية", "الرصيد الحالي", "المجموع", "تاريخ الحركة" ]) self.table.setRowHeight(0, 40) for row in range(1, 100): self.table.setRowHeight(row, 30) self.table.setFixedSize(1300, 400) self.table.setFont(QFont("Amiri", 12)) self.table.setColumnWidth(2, 150) self.table.setColumnWidth(3, 200) self.table.setColumnWidth(4, 80) self.table.setColumnWidth(6, 150) self.table.setStyleSheet(""" QTableWidget { background-color: #f0f0f0; border: 1px solid #ccc; alternate-background-color: #e0e0e0; } QTableWidget::item { padding: 5px; } QHeaderView::section { background-color: #2e8b57; color: white; font-size: 14px; padding: 5px; } """) self.table.horizontalHeader().setStretchLastSection(True) layout.addWidget(self.table) layout.addWidget(QLabel("المجاميع الشهرية:")) self.monthly_totals_table = QTableWidget() self.monthly_totals_table.setRowCount(1) self.monthly_totals_table.setColumnCount(12) self.monthly_totals_table.setHorizontalHeaderLabels([ 'ش1', 'ش2', 'ش3', 'ش4', 'ش5', 'ش6', 'ش7', 'ش8', 'ش9', 'ش10', 'ش11', 'ش12' ]) self.monthly_totals_table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) self.monthly_totals_table.setRowHeight(0, 30) self.monthly_totals_table.setFixedHeight(60) layout.addWidget(self.monthly_totals_table) self.setLayout(layout) self.load_item_suggestions() def load_item_suggestions(self): connection = connect_to_db() cursor = connection.cursor() cursor.execute("SELECT item_number, item_name, description FROM items") items = cursor.fetchall() model = QStandardItemModel() for item_number, item_name, description in items: description_text = description if description else "لا يوجد" suggestion_text = f"{item_number} - {item_name} - {description_text}" model.appendRow(QStandardItem(suggestion_text)) self.completer.setModel(model) connection.close() def search_item_movements(self): item_number = self.item_number_input.text().split(" - ")[0].strip() if not item_number: return connection = connect_to_db() cursor = connection.cursor() # جلب الرصيد الابتدائي والسعر الابتدائي للشراء من جدول الأصناف cursor.execute("SELECT initial_stock, initial_buying_price FROM items WHERE item_number = ?", (item_number,)) item_row = cursor.fetchone() initial_stock = item_row[0] if item_row else 0 initial_buying_price = item_row[1] if item_row else 0 # حساب السعر مع الضريبة للحبة لصف "أول المدة" price_with_vat_initial = initial_buying_price + (initial_buying_price * 0.15) # حساب المجموع لصف "أول المدة" total_initial = price_with_vat_initial * initial_stock query = """ SELECT invoices.invoice_number, invoices.serialfatwra, invoices.description, invoices.invoice_type, invoice_details.item_number, invoice_details.item_name, invoice_details.quantity, invoice_details.sub_total_after_vat, invoice_details.Auto_Date FROM invoice_details INNER JOIN invoices ON invoice_details.invoice_number = invoices.invoice_number WHERE invoice_details.item_number = ? ORDER BY invoice_details.Auto_Date ASC """ cursor.execute(query, (item_number,)) rows = cursor.fetchall() self.table.setRowCount(len(rows) + 1) # تعبئة صف "أول المدة" initial_item = QTableWidgetItem("أول المدة") initial_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) self.table.setItem(0, 2, initial_item) initial_balance_item = QTableWidgetItem(f"{int(initial_stock)}") initial_balance_item.setBackground(QColor("#add8e6")) initial_balance_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) self.table.setItem(0, 8, initial_balance_item) # الكمية في صف "أول المدة" تساوي المخزون الابتدائي self.table.setItem(0, 7, QTableWidgetItem(f"{int(initial_stock)}")) # السعر مع الضريبة للحبة في صف "أول المدة" price_item = QTableWidgetItem(f"{price_with_vat_initial:.2f}") price_item.setForeground(QBrush(QColor("green" if price_with_vat_initial >= 0 else "red"))) self.table.setItem(0, 6, price_item) # المجموع في صف "أول المدة" total_item = QTableWidgetItem(f"{total_initial:.2f}") total_item.setForeground(QBrush(QColor("green" if total_initial >= 0 else "red"))) self.table.setItem(0, 9, total_item) current_balance = initial_stock # تعبئة باقي الصفوف for row_idx, row_data in enumerate(rows, start=1): invoice_number, serialfatwra, description, invoice_type, item_number, item_name, quantity, sub_total_after_vat, auto_date = row_data if invoice_type == 'مبيعات': quantity = -quantity current_balance += quantity # حساب السعر مع الضريبة للحبة price_per_unit_with_vat = sub_total_after_vat / quantity if quantity != 0 else 0 # حساب المجموع total_amount = price_per_unit_with_vat * quantity self.table.setItem(row_idx, 0, QTableWidgetItem(str(invoice_number))) self.table.setItem(row_idx, 1, QTableWidgetItem(serialfatwra or "لا يوجد")) self.table.setItem(row_idx, 2, QTableWidgetItem(invoice_type)) self.table.setItem(row_idx, 3, QTableWidgetItem(str(item_number))) self.table.setItem(row_idx, 4, QTableWidgetItem(item_name)) self.table.setItem(row_idx, 5, QTableWidgetItem(description or "لا يوجد")) price_item = QTableWidgetItem(f"{price_per_unit_with_vat:.2f}") price_item.setForeground(QBrush(QColor("green" if price_per_unit_with_vat >= 0 else "red"))) self.table.setItem(row_idx, 6, price_item) self.table.setItem(row_idx, 7, QTableWidgetItem(str(quantity))) balance_item = QTableWidgetItem(f"{int(current_balance)}") balance_item.setBackground(QColor("#add8e6")) balance_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) self.table.setItem(row_idx, 8, balance_item) total_item = QTableWidgetItem(f"{total_amount:.2f}") total_item.setForeground(QBrush(QColor("green" if total_amount >= 0 else "red"))) self.table.setItem(row_idx, 9, total_item) self.table.setItem(row_idx, 10, QTableWidgetItem(auto_date)) for col in range(11): self.table.item(row_idx, col).setTextAlignment(Qt.AlignmentFlag.AlignCenter) self.update_monthly_totals(item_number, connection) connection.close() def update_monthly_totals(self, item_number, connection): cursor = connection.cursor() query = """ SELECT strftime('%m', i.date) AS month, SUM(d.quantity) as total_quantity FROM invoice_details d JOIN invoices i ON d.invoice_number = i.invoice_number WHERE i.invoice_type = 'مبيعات' AND d.item_number = ? AND strftime('%Y', i.date) = strftime('%Y', 'now') GROUP BY month """ cursor.execute(query, (item_number,)) results = cursor.fetchall() quarterly_colors = [ QColor("#ffcccc"), # الربع الأول QColor("#ccffcc"), # الربع الثاني QColor("#ccccff"), # الربع الثالث QColor("#ffffcc") # الربع الرابع ] for month in range(12): item = QTableWidgetItem("0") item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) quarter_index = month // 3 item.setBackground(quarterly_colors[quarter_index]) self.monthly_totals_table.setItem(0, month, item) for result in results: month = int(result[0]) - 1 total_quantity = result[1] item = QTableWidgetItem(str(total_quantity)) item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) quarter_index = month // 3 item.setBackground(quarterly_colors[quarter_index]) self.monthly_totals_table.setItem(0, month, item) cursor.close()
    1 نقطة
  8. وعليكم السلام ورحمة الله تعالى وبركاته، الفكرة تعتمد على إضافة الربح في الجدول الحالي كما يلي في جدول invoice_details ستحتاج الكمية المباعة (quantity)، سعر البيع (selling_price) ثم سعر الشراء (buying_price) ويجب أن تعدل query الاستعلام لجلب أسعار البيع والشراء من خلال إضافة عمود "الربح" في جدول عرض البيانات وعند فاتورة المبيعات فقط نحسب: الربح = الكمية × (سعر البيع - سعر الشراء) وفي نهاية الجدول تقوم بجمع كل أرباح المبيعات وتعرض إجمالي الربح للصنف.
    1 نقطة
  9. الى الان قمت بااكمال موضوع البحث والتخطيط في اساسيات تطوير المنتجات وحاب اعرف رايكم ان كان الجدول واضح ومفهوم. للعلم ان قمت بكتابته عن طريق بحث بسيط على قوقل بلي ومن خلال تجارب مع اغلب البرامج وان الجدول كمثال غير مكتمل لا اكثر.. علما ان المثال عن تطبيق توصيل الطعام لعدم وجود منافسيين بدلاء في بلدي بالرغم من ان السوق كبير وليس فيه الكثير من المنافسيين جدول المنافسين https://ana.hsoub.com/app/notes/97feba21-7820-43e0-ac95-23031f378041 جدول مقارنة الميزات https://ana.hsoub.com/app/notes/5111c58c-c56a-484f-9bb7-2490fa862bcd
    1 نقطة
  10. لقد قمت بالإطلاع على الجداول وهي ممتازة ومفهومة وتوضح الفروقات بين المميزات التي يقدمها المنافسين لك وقد قمت بتوضيح أغلب الخصائص التي تميز مشروع تطبيق توصيل الطعام . وأيضا وضعت الخصائص التي يجب أن تميز مشروعك للتغلب على المنافسين . ولكن يفضل أيضا في الجدول توضيح مدى إنتشار المنافسين وعدد المستخدمين لكل منافس وحصة كل منافس من سوق توصيل الطلبات لمعرفة من الذي يجب عليك التركيز على منافسته وما مهي حصتك المتوقعة من الدخول في هذا المجال. ويرجى إذا كان هذا السؤال والبحث خاص بدرس من دروس دورة إدارة المنتجات أن تقوم بوضع إجابتك أسفل الدرس حيث ستجد صندوق للتعليقات أسفل الدرس كما هنا . حيث هنا هو قسم الأسئلة العامة ولا نقوم بالإجابة على اسئلة الدورات هنا وذلك لمساعدتك بشكل أفضل.
    1 نقطة
  11. اسف لم اضع خصوصية الجداول لتكون عامه تم التصحيح والمفترض ان تكون شغاله الان
    1 نقطة
  12. يجب عليك استخدام بوابة دفع تدعم الحسابات الفرعية مثل Stripe Connect أو PayPal Adaptive Payments، و يمكنك تصميم النظام بحيث ينشئ حساب دفع لكل مستخدم عند التسجيل أو إنشاء متجر فرعي، مع ربطه بواجهة API لبوابة الدفع، و عند قيام عميل بشراء منتج، يتم توجيه الأموال مباشرة إلى الحساب الخاص بمالك المتجر، مع إمكانية خصم عمولة للمنصة عبر إعداد "Application Fee" أو نسبة مئوية من الدفع. و أيضا في Django ستحتاج إلى إعداد نماذج مخصصة للمستخدمين، حيث يرتبط كل منتج بمتجر فرعي وكل متجر بمستخدم، كما يجب عليك إعداد منطق العمل للتعامل مع عمليات الدفع باستخدام مكتبة مثل Stripe، حيث يمكنك إنشاء حسابات فرعية للمستخدمين وإدارة عمليات الدفع وتحويل الأموال، و أيضا تأكد من إضافة واجهة مستخدم تسمح للمستخدمين بإعداد حساباتهم المالية وعرض تقارير المدفوعات والمبيعات.
    1 نقطة
  13. بالنسبة إلى الروابط التي أشرت إليها يبدو أنها غير صالحة ولا تعمل لذا لا يمكن الاطلاع عليها حاليا، ولكن بناء على وصفك فإن فكرة إعداد جدول حول تطبيق توصيل الطعام تعد خطوة جيدة خاصة في ظل غياب منافسين بارزين في السوق المحلي فإذا كان الجدول يبرز الميزات الأساسية للتطبيق والفرص الموجودة في السوق مع مقارنة بسيطة بالخدمات المتوفرة فهو بداية موفقة مع الرغم من أنه يمكن التحسين أكثر لذا تأكد من تضمين بيانات واضحة حول كيفية تلبية احتياجات المستخدمين، والتحديات المحتملة، والخطط لتجاوزها.
    1 نقطة
  14. يمكنك استخدام بوابة دفع تدعم Split Payments مثل Stripe Connect أو PayPal for Marketplaces عبر إنشاء نموذج لتخزين معلومات الدفع الخاصة بالمستخدم مثل حساب Stripe أو PayPal ثم توفير واجهة لتسجيل وربط الحسابات عبر API الخاص ببوابة الدفع. وعند إتمام عملية الشراء تستخدم ميزة Transfer API أو Payouts API لتقسيم المدفوعات بينك وبين البائعين مباشرة مع التأكد من الامتثال للقوانين المحلية والضرائب وتوفير لوحة تحكم للمستخدم لإدارة أرباحه وسحبها بسهولة.
    1 نقطة
  15. يجب التنبيه أوّلًا أنّ أمر adduser يوجد في التّوزيعات الدّبيانيّة فقط. في حال كتابة سكربتات عابرة للتّوزيعات يجب استخدام useradd بدلًا منه. يوفّر أمر adduser سهولة أكبر من useradd فهو يجمع وظائف أوامر عدّة معًا. مثلًا الأمر التّالي: adduser usernameيؤدّي الوظائف التّاليّة: إنشاء اسم مستخدم باسم usernameإنشاء مجلَّد شخصيّ للمستخدِمإنشاء مجموعة بنفس الاسم وإضافة المستخدم إليها.طلب كلمة سرّ من المستخدمطلب معلومات إضافيّة اختيّاريّة من المستخدم يمكن لأمر useradd تأديّة الكثير من هذه المهامّ، لكنّه يحتاج لخيّارات إضافيّة. بعض المهامّ السّابقة يحتاج تنفيذ أوامر أخرى: للحصول على نفس الوظائف السّابقة يجب تنفيذ الأوامر التّاليّة: useradd -m -U username passwd username chfn username إضافةً لذلك يتأكّد الأمر adduser من أنّ معرّفات المستخدمين تتبع سيّاسة دبيان بهذا الخصوص.
    1 نقطة
  16. أوّلًا الخادمان وسيطان Proxy، أيّ أنّ الخادوم في كلتا الحالتيْن يؤدّي وظيفة لحاسوب آخر. يوجد نوعان من الخواديم الوسيطة: خادوم وسيط لإعادة التّوجيه Forwarding proxy server: ويُطلَق عليه عادةً خاجوم وسيط دون ذكر إعادة التّوجيه. من جهة يوجد العميل (A) وفي الجهة الأخرى يوجد الخادوم (C) الّذي يُريد العميل الوصول إليه، والخادوم الوسيط بينهما (B). يتّصل A ب B لكي يصِل إلى C. في حالة وسيط لإعادة التّوجيه فإنّ العميل A يجب أن يُعدَّ للاتّصال بالخادوم الوسيط B ويطلُب منه الاتّصال ب C وإرسال نتيجة الطّلب إليه. يُستخدَم هذا النّوع من الوسطاء كثيرًا في المؤسّسات لمنع الموظّفين من زيارة مواقع محدّدة. كما يُستخدَم لتجاوز الحظر أيضًا (موقع ممنوع في الدّولة X، تستخدم خادومًا وسيطًا في دولة Y لا تمنع هذا الموقع لتجاوز الحظر).خادوم وسيط عكسيّ Reverse proxy server: يوجد لدينا نفس المخطَّط في الحالة السّابقة: من جهة يوجد العميل (A) وفي الجهة الأخرى يوجد الخادوم (C) الّذي يُريد العميل الوصول إليه، والخادوم الوسيط بينهما (B). لكن الفرق هنا أنّ العميل A لا يحسّ بوجود C، بالنّسبة له يوجد فقط B (الخادوم الوسيط). يُرسل العميل طلباته إلى الخادوم الوسيط (دون أن يكون على علم بأنّ هذا الخادوم وسيط) الّذي يُحيلها إلى الخادوم C؛ ثمّ يُعيد الخادوم الوسيط إرسال الإجابة على الطّلب إلى العميل بعد تلقّيها من الخادوم C. تُستخدَم الخواديم الوسيطة العكسيّة للوصول إلى خواديم موجودة خلف جدار ناريّ أو لتوزيع الحمل بين خواديم عديدة.
    1 نقطة
  17. يتمّ التفرق بين كل طلب وآخر بناءً على الـ header، فكل طلب يملك header خاصّ به، لاحظ معي المثال التّالي ولاحظ رقم الـ IP: ping hsoub.com Reply from 91.121.222.121: bytes=32 time=158ms TTL=48 عند طلب هذا العنوان في المتصفّح: $ curl 91.121.222.121 –I HTTP/1.1 302 Found Date: Sat, 06 Jun 2015 21:24:32 GMT Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.3.3 Location: http://blog.ishtarate.com/ Connection: close Content-Type: text/html; charset=UTF-8 ستجد أنّ هذا IP عند وضعه في المُتصفّح سيفتح لك موقع آخر وهو مُدوّنة "اشتريت"، ولكن عند تحديد header مُحدّد ستجد أنّ النتائج مُختلفة، كما في المثال التّالي: $ curl 91.121.222.121 -I -H "host: hsoub.com" HTTP/1.1 301 Moved Permanently Date: Sat, 06 Jun 2015 21:29:01 GMT Server: Apache/2.2.15 (CentOS) Location: http://www.hsoub.com/ Connection: close Content-Type: text/html; charset=iso-8859-1 إذا في المثال الأوّل يُمكن القول أنّ موقع اشتريت هو الخادم الافتراضي لهذا السيرفر، ولكن عند طلب الـ IP بـ header مُعيّن ستكون النتائج مُطابقة للهيدر المطلوب، إذا نفس الأي بي سيقوم بفتح موقعين مُختلفين وبدون أي مشاكل.
    1 نقطة
  18. يمرّ الطّلب بعدّة مراحل: - ترجمة اسم النّطاق إلى عنوان IP - يُرسل العميل (المتصفّح مثلا) طلبًا إلى عنوان IP الخادوم الّذي يوجد عليه الموقع. - يستخدم خادوم ويب Apache مستضيفات افتراضيّة، كلّ مستضيف افتراضيّ يُمكن أن يكون موقعا. في طلب HTTP يوجد ما يُعرف بالتّرويسات Headers والّتي تتضمّن معلومات عن الطّلب، منها المستضيف Host (اسم النّطاق مثلا) ومعرّف المورد URI (الصّفحة المطلوبة) وغيرها. يستخدِم خادوم الويب هذه المعلومات لمعرفة الموقع المطلوب ثمّ يمرّر الطّلب إلى المستضيف الافتراضيّ الّذي يتولّى الموقع. توجد آليّة مشابهة على خادوم ويب Nginx. راجع المقالين التّاليين: كيفية ضبط المستضيفات الافتراضية في خادوم وب Apache على أوبنتو 14.04 فهم آلية عمل خوارزميّة الاختيار في كُتل Server لإعدادات خادوم Nginx والسّؤال التّالي: استضافة عدة نطاقات بنفس IP على Nginx
    1 نقطة
  19. نعم يُمكن ذلك عبر ضبط إعدادات كتلة Server. المثال التّالي يُقدّم خطوطًا عامّة لهذا الإعداد: server { listen 80; server_name www.domain1.com; root /var/www/domain1; } server { listen 80; server_name www.domain2.com; root /var/www/domain2; } توجد ملفّات الموقع www.domain1.com في المجلّد var/www/domain1/، أمّا الموقع www.domain2.com فتوجد ملفّاته في المجلّد var/www/domain2/. عند طلب الموقع www.domain.com فإنّ Nginx يختار كتلة Server الأولى لتتولّى التّعامل مع الطّلب، بالنّسبة لwww.domain2.com فإنّ الاختيّار يقع على الكتلة الثّانيّة. للمزيد راجع هذا المقال
    1 نقطة
  20. الأمر التّالي يحذف الحزم الأساسيّة ومتعلقاتها: sudo apt-get purge mysql-server apache2 php5 يكفي في أغلب الحالات تنفيذ الأمر السّابق للحصول على خادوم "نظيف" من حزم LAMP.
    1 نقطة
  21. تُضبط إعدادات DNS في خادوم أوبنتو بالتّعديل على الملفّ etc/network/interfaces/. يُشبه محتوى هذا الملفّ ما يلي: # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.X.X netmask 255.255.255.0 gateway 192.168.X.X dns-nameservers X.X.X.X تحدّد التّعليمة الأخيرة عناوين خواديم DNS الّتي يستخدمها نظام التّشغيل. تُمكن كتابة أكثر من خادوم DNS بالفصل بين عناوين IP بمسافة: dns-nameservers X.X.X.X Y.Y.Y.Y أضف عنوان خادوم DNS التّابع للشّبكة في هذه التّعليمة، مع العلم أنّ نظام التّشغيل يُرسل الطّلب للخواديم حسب ترتيب عناوينها.
    1 نقطة
  22. يوجد سجلّ عمليّات أداة apt في المسار: /var/log/apt/history.logبالنسبة لسجلّ الحزم المثبَّتة عن طريق dpkg فهو موجودة في المسار: /var/log/dpkg.log
    1 نقطة
  23. يُمكن استخدام أمر wget: wget --mirror -p --convert-links -P ./directory urlحيثُ url رابط الموقع. الخيّار mirror-- لتفعيل التّصوير المرآوي Mirroring.الخيّار p- لتنزيل الملفّات الضّروريّة لعرض صفحات الويب.الخيّار convert-links لتحويل الرّوابط إلى روابط محليّة يُمكن تصفّحها دون الحاجة للاتّصال بالموقع الأصلي.الخيّار P- لتحديد المجلّّد الّذي نحفظ فيه الموقع ومتعلّقاته.
    1 نقطة
  24. يؤدّي أمر rename هذه المهمّة. على افتراض أنّك موجود في المجلّد حيثُ توجد الملفّات: rename 's/DGACT/DGIC/' DGACT*حرف s للدّلالة على أنّنا نريد استبدال عبارة مكان أخرى (Substitution)، وDGACT العبارة المُبدَلة، وDGIC العبارة المُبدَل بها؛ ثمّ أخيرًا الملفّات الّتي نُريد تطبيق الأمر عليها، وهي في حالتنا جميع الملفّات الّتي تبدأ بDGACT.
    1 نقطة
×
×
  • أضف...