لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 06/22/21 في كل الموقع
-
ابغا بكج صلاحيات وابغا استخدم BOOTSTAP لان juststreem مافيه بوت ستراب والحل ابغا بكجات صلاحيات2 نقاط
-
لقد لاحظت في التوثيق الرسمي وجود معامل unwind$ ويتم استخدامه بكثرة مع المصفوفات, ولكن عندما قمت بتطبيقه فقد أعطى نفس المستندات بشكل متكرر ولم أتمكن من فهم آلية عمله على المصفوفات. ما وظيفة هذا التابع تحديداً؟ ومتى يجب أن يتم استخدامه في mongodb؟2 نقاط
-
المشكلة هنا تكمن في أن نمط البيانات ObjectId المعرف في mongo غير معرفه عليه عملية التسلسل serialization لذلك عليك تعريف طريقة التحويل الخاصة بك واستخدامها: from bson import ObjectId import json class JSONEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, ObjectId): return str(o) return json.JSONEncoder.default(self, o) res = json.dumps(DBResultMessage, cls=JSONEncoder) حيث أن هذه الدالة ستتعامل بشكل خاص مع النمط ObjectId وتحوله لسلسلة نصية قبل ترميزه على هيئة JSON2 نقاط
-
إذا كانت عدد الأقسام n_splits المبرمجة في الكود أكبر من عدد البيانات الممرة samples لدالة KFold فإنه ينتج هذا النوع من الأخطاء، يمكننا التأكد من ذلك بالرجوع لبرنامج دالة التقسيم، نجد في أحد أجزاء البرنامج الشرط التالي: if self.n_splits > n_samples: raise ValueError( ("Cannot have number of splits n_splits={0} greater" " than the number of samples: {1}.").format(self.n_splits, n_samples)) و يجب عليك ايضاً الإنتباه لحالة تمرير قيمة 1 للتقسيم و التي تنتج الخطأ المعرف في الدالة ايضاً كالتالي: if n_folds <= 1: raise ValueError( "k-fold cross validation requires at least one" " train / test split by setting n_folds=2 or more," " got n_folds={0}.".format(n_folds)) يمكنك الرجوع لكامل البرنامج من هنا.2 نقاط
-
تحتاج تعمل stringfy لل object console.log(JSON.stringify(obj)) أو يمكنك استخدام console.dir مباشرة على ال object console.dir(object) ويوجد أيضا console.table console.table(object)2 نقاط
-
هذا الخطأ قد يظهر معك في أي نوع من أنواع التقسيم الأخرى التي تندرج تحت فكرة KFolds والسبب فيها أنك تحاول تقسيم البيانات لعدد أكبر من حجم العينات التي لديك. لذا فعدد التقسيمات n_splits يجب أن يكون أكبر أو يساوي عدد العينات التي لديك وفي حالتك هو 3. import numpy as np from sklearn.model_selection import RepeatedKFold X = np.array([[3, 32], [2, 9], [15, 8]]) y = np.array([11, 22, 33]) rkf = RepeatedKFold(n_splits=3, n_repeats=4, random_state=44) for train_index, test_index in rkf.split(X): print("TRAIN:", train_index, "TEST:", test_index) X_train, X_test = X[train_index], X[test_index] y_train, y_test = y[train_index], y[test_index]2 نقاط
-
لدي استعلام يقوم بإجراء aggregation على المستندات الموجودة ضمن مجموعة. وأستطيع الحصول على النتيجة وطباعتها باستخدام print: print(resultOfQuery) ولا يوجد أي مشكلة في أي استعلام أقوم بتنفيذه لأنني أحصل على النتيجة وأستطيع طباعتها، لكن إذا حاولت إعادة النتيجة عن طريق return: return resultOfQuery يظهر لدي الخطأ التالي: TypeError: ObjectId('5f4351948e86c20b1d1c0d3c') is not JSON serializable لماذا يظهر هذا الخطأ فقط في return؟ وماهي الطريقة الصحيحة لإعادة النتائج؟1 نقطة
-
لدي مشروع فيه خادم الويب node.js، وضمن هذا المشروع يوجد صفحة تظهر للمستخدم اسماء وأرقام نسخ المكتبات الحالية المستخدمة ضمن المشروع. فهل يوجد طريقة أستطيع من خلالها بالحصول على هذه المعلومات ضمن node مثال: "express": "^4.17.1", "bcryptjs": "^2.4.3", ..... وأيضاً إجراء بعض العمليات مثل العملية npm update بشكل برمجي؟1 نقطة
-
لدي نوعين من schema بشكل منفصل وحاولت الإشارة إلى واحدة منهما ضمن الأخرى كالتالي: var authorSchema = new Schema({ name: String, age: Number, }); var Author = mongoose.model('Auhor') var bookSchema = new Schema({ title: String, writtenBy: Author, }); ولكن لم أحصل على النتيجة الصحيحة، ماهي طريقة الإشارة إلى الschema ضمن أخرى؟ لكي أستطيع الوصول إلى الكاتب من خلال إجراء الاستعلام عن الكتب الموجودة بشكل مشابه للتالي: book.writtenBy.name1 نقطة
-
لقد قمت برفع مشروع node.js على الخادم بنظام التشغيل ubuntu، وقمت بتشغيل الخادم من خلال استخدام pm2. ولكن أرغب بإضافة رابط معيّن route بحيث عندما يتم استقباله من الخادم أن يقوم بإعادة تشغيل الخادم أو إيقافه. فهل من الممكن الوصول إلى pm2 والتحكّم بهذه الأوامر من node.js؟ أو يجب أن أتخلى عن استخدام pm2 وألجأ إلى طريقة أخرى؟1 نقطة
-
لقد قمت بتحميل النسخة الأخيرة من mySQL 8.0 و نسخة node.js. ولكن لا استطيع الاتصال مع قاعدة البيانات. يظهر لي الخطأ التالي: C:\Users\myproject>node app.js C:\Users\myproject\node_modules\mysql\lib\protocol\Parse r.js:80 throw err; // Rethrow non-MySQL errors ^ Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client at Handshake.Sequence._packetToError (C:\Users\myproject\node_modules\mysql\lib\protocol\sequences\Sequence.js:52:14) والكود بسيط فقط اتصال مع قاعدة البيانات: var mysql = require('mysql'); var connection = mysql.createConnection({ host: "localhost", user: "root", password: "", insecureAuth : true }); connection.connect(function(err) { if (err) throw err; console.log("Connected to database!"); }); كيف يمكنني حل المشكلة؟1 نقطة
-
عند تعاملك مع القيم المفقودة في واصفة ما (أو مع feature معينة بشكل عام) يجب أن تنتبه إلى طريقة استبدالك للقيم المفقودة فغالباً يقوم الجميع باستبادال القيم nan مثلاً بقيمة 0 وهذا سوف يسبب خطأ لأنه أصبح لديك هنا نوعين من البيانات، وهذا سينتج خطأ لأن الكلاس LabelEncoder سيتوقع منك String بينما قمت بإعطائه أنواع متعددة من البيانات. حل مشكلتك يكون واحدة من الاثنين: 1.في حال لم تستبدل القيم المفقودة بعد: فاجعل القيمة المعوضة لها بين ""، فمثلاً تريد تعويض nan ب 0. # "" لاحظ أنني وضعتها بين fillna('0') 2.في حال قمت فعلاً بتعويضها ب 0 بدون أن تضعها ضمن "". dataframe["Embarked"] = dataframe["Embarked"].astype(str)1 نقطة
-
يقوم المعامل unwind بتفكيك حقل المصفوفة من مستندات الإدخال لإخراج مستند لكل عُنصر من هذه المصفوفة تطابق هذه المستندات مُستند الإدخال غير أن خاصية المصفوفة ستأخذ عُنصر واحد في كل مرة: مثال فرضاً أنه لديك المستند التالي: [ { title: "this is my title", author: "foo", posted: new Date(), pageViews: 6, tags: [ "foo", "bar", "baz" ] } ] عند إستخدام unwind بهذا الشكل: db.collection.aggregate({ $project: { author: 1, title: 1, tags: 1 } }, { $unwind: "$tags" }) ستكون النتيجة بهذا الشكل: [ { "_id": ObjectId("5a934e000102030405000000"), "author": "foo", "tags": "foo", "title": "this is my title" }, { "_id": ObjectId("5a934e000102030405000000"), "author": "foo", "tags": "bar", "title": "this is my title" }, { "_id": ObjectId("5a934e000102030405000000"), "author": "foo", "tags": "baz", "title": "this is my title" } ] يُمكنك تجربة المثال من: هنا، كان في المصفوفة ثلاث عناصر فأصبح لدينا 3 مستندات و توزعت عناصر المصفوفة على كل مستند في الخاصية tags1 نقطة
-
يفكك $ unwind حقل مصفوفة من مستندات الإدخال لإخراج مستند لكل عنصر في هذه المصفوفة , لنحاول شرح ذلك بمثال { "_id" : 1, "name" : "A", "state": [ "S", "M", "L"] } { "_id" : 2, "name" : "B", "state" : [ ] } { "_id" : 3, "name" : "C", "state": "M" } { "_id" : 4, "name" : "D" } { "_id" : 5, "name" : "F", "state" : null } لو حاولنا استخدام $ unwind على حقل state db.test.aggregate( [ { $unwind: "$state" } ] ) سوف تكون النتيجة كالتالي { "_id" : 1, "item" : "A", "state" : "S" } { "_id" : 1, "item" : "A", "state" : "M" } { "_id" : 1, "item" : "A", "state" : "L" } { "_id" : 3, "item" : "C", "state" : "M" } كما تلاحظ عملية الفك تعيد مستند لكل عنصر في حقل state unwind$ مفيد جدا أثناء إجراء التجميع. يقوم بتقسيم المستندات المعقدة والمتداخلة إلى مستند بسيط قبل إجراء عمليات مختلفة مثل الفرز والبحث وغيرها من الاجراءات1 نقطة
-
1 نقطة
-
كمبرمجين في لغة بايثون نستخدم هذه التعليمة أثناء بناء الكود (Code)، حيث نقوم باستخدامه لينوب عن مقطع برمجي (SubCode) "وليكن A " نريد تركه فارغاً حالياً وتأجيل كتابته إلى وقت آخر. لكن أن نترك المقطع فارغاً هو شيء غير مسموح وينتج عنه خطأ في حال كان ال SubCode هو تابع أو كلاس أو تعبير شرطي أو حلقة، فكما تعلم التعليمة التالية تنتج خطأ إذا لم نعرف شيء ضمن التابع (لايمكن تركه فارغاً) def C(): print("OK") #فارغاً وهذا سينتج خطأ A هنا تركنا التابع def A(): print(5+6) هنا تأتي مهمة التعليمة pass، وعندما يتم تنفيذ هذه التعليمة لايحدث أي شيء ولكن تتجنب أن يتم إيقاف التنفيذ والحصول على error . أي: def C(): print("OK") # هنا لن ينتج خطأ def A(): pass print(5+6) نفس الأمر لو كنت تستخدم حلقة مثلاً: for x in [0, 1, 2]: pass مثال: s = {'d', 'c', 'k', 's'} for v in s: pass # هنا سيمر المترجم على الحلقة ولن يتم تنفيذ أي شيء أي كأنها لاحوي على تعليمات أو في حال قمنا بتعريف Class: class V: pass الخلاصة : نستخدمها عندما نريد تحقيق مقطع برمجي (حلقة أو تابع أو كلاس أو عبارة شرطية ...إلخ) لكن لسبب ما نريد تحقيقها في وقت لاحق، ونرغب بوضعها في الكود فارغة.1 نقطة
-
إن pass في لغة بايثون هي باختصار القيمة null (أو عدم وجود قيمة). بحيث لا يتم تجاهلها من قبل المفسّر ولا تسبب أي خطأ وإنما فقط يتم التعرّف على مكان وجودها. يتم استخدامها على سبيل المثال في حال كنا نريد وضع تابع معيّن ولكن لا نرغب بإضافة أي كود ضمنه، نقوم بكتابة pass للاحتفاظ بمكانه وإضافة أي كود ضمنه في المستقبل. مثال: def addition(num1, num2): pass addition(2, 2) أو عندما نريد تجاهل شرط معيّن مثلاً من شروط if: def display(number): if number is 2: pass else: print ("Number: ", number) display(2) display(3) بحيث عندما يتم الآن تمرير الرقم 2 لن يحدث شيء ولا يوجد أي معالجة له، أما عدى ذلك فسيتم طباعة الرقم.1 نقطة
-
نعم يمكن الاعتماد على برنامج Memsource في الترجمة المتخصصة والعلمية في حال توفر ذاكرة الترجمة تحوي المصطلحات الخاصة بالمجال ويتم إضافتها لمشروع الترجمة والاستعانة بها في عملية الترجمة ومستواه متقدم جدا في هذا المجال نظرا لتعدد الخيارات بالنسبة لإضافة ذاكرات الترجمة أو حتى بناء ذاكرات جديدة من أعمال ترجمة سابقة. بالنسبة لترجمة المدونات والترجمة الآلية نعم تتوفر الترجمة الآلية على برنامج Memsource وتطبيقه الخاص بالهاتف المحمول كما يدعم مواقع الوورد برسWordpress المدونات وصفحات الهبوط إلى عدة لغات.1 نقطة
-
كما وضح وائل في التعليق السابق أنه يمكنك تنفيذ ما تريده من خلال طريقتين سواء ال referencing أو ال subdocument يفضل استخدام الطريقة الثانية لأنها تقوم بإدراج ال authorSchema مباشرة في ال bookSchema فالميزة هنا أنها تحفظ البيانات كاملة في مكان واحد فيساعد على زيادة الأداء وتقليل زمن ال query لأنها لن تبحث في عدة أماكن لذلك يكون من الأفضل استخدام الطريقة الثانية في حالة أن البينات في ال subdocument ليست كبيرة في حالة أن البيانات لا يحدث لها تغيير كثيراً وأيضاً هناك استخدامات تجعل من ال referencing أفضل1 نقطة
-
يمكنك ذلك عبر الموديول: sklearn.feature_selection.SelectFromModel الصيغة: sklearn.feature_selection.SelectFromModel(estimator, max_features=None) الوسيط الأول يعبر عن الموديل الذي تريد أن تستخدمه. الوسيط الثاني يعبر عن أكبر عدد تسمح به من ال features. في المثال التالي سأوضح لك الأمر بسهولة: from sklearn.feature_selection import SelectFromModel from sklearn.datasets import load_breast_cancer from sklearn.ensemble import RandomForestClassifier X = load_breast_cancer().data y = load_breast_cancer().target print(X.shape)# (569,30) #لاستخراج أفضل الميزات RandomForestClassifier هنا سنقوم باستخدام الموديل clf = SelectFromModel(estimator=RandomForestClassifier(n_estimators = 20),max_features = None) #على البيانات fitting عمل # والتحويل بعدها X = clf.fit_transform(X, y) #clf.get_support() print(X.shape) # (569,10)1 نقطة
-
يقوم هذا الصف باختيار أهم ال Features في بياناتك التي تؤثر بقيم ال target اعتماداً على خوارزميتين f_classif أو chi2. يتم استدعاؤه كالتالي: sklearn.feature_selection.SelectKBest ويجب أن نقوم أيضاً باستدعاء خوارزميتي f_classif أو chi2: sklearn.feature_selection.chi2 , f_classif الصيغة: sklearn.feature_selection.SelectKBest(score_func=chi2, k=10) K: افتراضياً 10، يحدد عدد الفيتشرز التي سيحتفظ بها تبعاً لمدى تأثيرها في قيم الخرج، وتقبل عدد صحيح يعبر عن العدد المطلوب، بالإضافة إلى القيمة all التي تستخدم للبحث عن المعلمات (يحتفظ بكل الفيتشرز لكن يستخدم عادةً لمعرفة مدى تأثير كل فيتشر) score_func: تمثل الخوارزمية التي نريد تطبيقها f_classif أو chi2. مثال: # تحميل مايلزم من مكتبات from sklearn.datasets import load_breast_cancer from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 , f_classif # تحميل الداتا data, target = load_breast_cancer(return_X_y=True) # حجمالداتا قبل التطبيق data.shape #(569, 30) fs = SelectKBest(score_func= chi2 ,k='all') data = fs.fit_transform(data,target) # حجمالداتا بعد تطبيق التحويل data.shape #(569, 10) #لكل ميزة score عرض ال #fs.scores_ ولعرض النتيجة التي حققتها كل feature نستخدم الواصفة scores_. ونستخدم التابع get_support لعرض الفيتشرز التي تم الاحتفاظ بها والتي تم استبعاها.1 نقطة
-
جميل أنك اخترت واحدة من حزم مجموعة spatie . تقوم هاته الحزمة بتنفيذ الأمر بوساطة الأدوار عوضا عن مجموعات الصلاحيات , وتختصر بذلك الكثير . قبل الإستعمال تأكدي أنك قد قمت بالخطوات التالية على نحو صحيح : تثبيت الحزمة : composer require spatie/laravel-permission نشر ملفات التهجير و الإعداد : php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" تنفيذ أمر التهجير : php artisan migrate بعد ذلك نحتاج إستعمالها و ضمها للتطبيق على نحو صحيح . سنحتاج إضافة السمة HasRoles لنموذج المستخدم User.php للإستفادة من التوابع التي توفرها هاته السمة : <?php use Illuminate\Foundation\Auth\User as Authenticatable; use Spatie\Permission\Traits\HasRoles; // تضمين السمة class User extends Authenticatable { use HasRoles; // إستعمال السمة // ... } 2. الان ما علينا إلا إنشاء أدوار Roles و أذونات Permissions , بحيث تتم العملية كالتالي : يتم نسب صلاحية معينة إلى دور معين . يتم نسب دور معين إلى مستخدم معين . مثال : نقوم بإنشاء الأذونات التالية : الحذف . الإضافة . التعديل . => نقوم بنسب الأذونات إلى الدور "Manager" . => نقوم بإعطاء المستخدم A الدور Manager . و بالطبع فإنه يمكن كتابة الشيفرة الخاصة بنسب الأذونات للدور و الدور للمستخدم في أي مكان من التطبيق , وليكن متحكما خاصا نسميه AssignRolesController : <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Permission; class AssignRolesController extends Controller { public function init() { # إنشاء دور $role = Role::create(['name' => 'writer']); # إنشاء صلاحية $permission = Permission::create(['name' => 'edit articles']); # عن طريق التابعين التاليين يمكن إعطاء الدور صلاحية معينة أو إعطاء الصلاحية إلى دور # ملاحظة : يكفي إستعمال أحدهما $role->givePermissionTo($permission); $permission->assignRole($role); # إعطاء مستخدم معين الدور $user = App\Models\User::first(); $user->assignRole('writer'); } } الان ما علينا إلا الوصول للتابع init لتنفيذ الأمر و إنشاء الأدوار و الأذونات . بعد ذلك و كخطوة أخيرة سنحتاج لحماية المسارات و المتحكمات . مثال : يجب علينا عدم السماح لمن ليس له صلاحية تعديل المقالات للوصول إلى المتحكم الخاص بتعديل المقالات . سنتسعمل في ذلك مفهوم الطبقات الوسيطة Middlewares , بحيث تتولى عملية التحقق من إمتلاك المستخدم لدور أو صلاحية معينة . و أبسط طريقة لعمل ذلك هي عن طريق المثال التالي : Route::group(['middleware' => ['can:edit articles']], function () { # كل المسارات التي يتم تمريرها هنا ستكون غير قابلة للوصول إلا لمن يمتلك صلاحية تعديل المقالات }); و متى ما حاول المستخدم اللوصول إلى المتحكمات الخاصة بعملية تعديل المقالات سيتم التحقق إن كان يمتلك صلاحية التعديل , و بشكل اخر : سيتم التحقق من أن المستخدم يمتلك دورا من ضمن صلاحياته تعديل المقالات .1 نقطة
-
اشكركم على مساعدتي في طرح ذلك ولاكن اجهل التعامل مع الصلاحيات الارافل كثيرا وحاولت احمل البكج واقف حائره اين اذهب ياليت شرح الفكرة اكثر https://spatie.be/docs/laravel-permission/v4/basic-usage/basic-usage في الصفحة هذه وين احط هذول1 نقطة
-
الطريقة الأخرى لتفادي الوقوع في مشكلة الdefault values لدوال حساب الدقة هو إستدعاء دالة classification_report التي تعمل مع التصنيف الثنائي و المتعدد، و الناتج من هذه الدالة يحتوي على القيم الممكنة الحساب في حالة دوال مثل f1 والتي تكون محسوبة لكل صنف على حدة، بالإضافة لعدد من مقاييس الدقة الأخرى مثل precision و recall و support. from sklearn.metrics import classification_report y_pred = t.predict(x_test) print(classification_report(y_test, y_pred)) في المثال إعلاه تم إستدعاء الدالة classification_report ومن ثم تعريف متغير y_pred ليحتوي على كل القيم المتوقعة من قبل النموذج، أخيراً تم إستدعاء الدالة classification_report والتي تخرج مقاييس الدقة السابق ذكرها بالإضافة لمتوسطات ال macro و weighted (مع العلم أن الmicro لا يظهر إلا في حالة التصنيف المتعدد). يمكنك أيضاً الحصول على قيمة f1 score عن طريق الدالة precision_recall_fscore_support والتي تنتج قيمة f1 score, precision, recall and support، راجع البرنامج التالي: from sklearn.metrics import precision_recall_fscore_support precision_recall_fscore_support(y_test, y_pred, average='macro') مع العلم أن القيمة المتوسطة المحسوبة في الدالة يجب أن تكون إحدي هذه القيم: micro, macro, none, weighted حسب ما هو موضح في الشرح أعلاه.1 نقطة
-
1 نقطة
-
لابد أن تعلم عزيزي أن هنالك طرق مختلفة للتعامل مع القيم المفقودة، منها طريقة تضمين أو توليد بيانات جديدة بإستخدام البيانات الموجودة أصلا. و يمكننا التعامل معها على مستوى عمود واحد (وهي الطريقة التي يوفرها SimpleImputer) فهو أحد طرق التضمين لمتغير واحد Univariate Imputation. يمكن ايضاً للدالة SimpleImputer التعامل مع البيانات الفئوية Categorical Variables، راجع المثال التالي والذي يقوم بإستبدال القيم غير المعرفة nan values بالقيمة الأكثر شيوعاً حسب ما هو موضح في الإستراتيجية strategy. import pandas as pd df = pd.DataFrame([["a", "x"], [np.nan, "y"], ["a", np.nan], ["b", "y"]], dtype="category") imp = SimpleImputer(strategy="most_frequent") print(imp.fit_transform(df)) يمكنك ملاحظة أن القيمة الأكثر شيوعاً في العمود الأول مختلفة عن العمود الثاني، و بالتالي في حال وجود أكثر من قيمة غير معرفة في عمودين مختلفين يتم التعامل مع كل واحد على حدة، فالأول يأخذ قيمة a و يبدلها معم كل قيمة غير معرفة ، أما الثاني فهو يأخذ القيمة y و يبدلها مع كل قيمة غير معرفة.1 نقطة
-
لدي مشروع رئيسي يتصل بقاعدة بيانات mongodb ولكن بضمنه أيضاً أقسام أخرى صغيرة تتعامل مع قواعد بيانات مستقلة عن بعضها. ولكن المشكلة أن mongoose لا يسمح بإجراء أكثر من اتصال مع قواعد البيانات بما أن المودل مبني من خلال إنشاء غرض mongoose واحد. وأيضاً المشكلة الثانية أنه لا يمكنني إنشاء أكثر من نسخة من نفس الغرض mongoose ضمن node js. لقد حاولت استخدام التوابع التالية عند إنشاء الاتصال في mongoose: createConnection() و openSet() ولكن لم يتم حل المشكلة. هل يوجد طريقة معيّنة لحل هذه المشكلة وإجراء أكثر من اتصال مع قواعد بيانات مختلفة ضمن نفس المشروع؟ وهل هنالك أي مكتبات أو إضافات قد تسهّل إدارة هذه الاتصالات؟1 نقطة
-
تتضمن الوحدة النمطية fs طريقة writeFile عالية المستوى يمكنها كتابة البيانات إلى الملفات بشكل غير متزامن. هذا يعني ، كما هو الحال مع الكثير من العمليات في Node.js ، أن الإدخال / الإخراج لا يحظر ، ويصدر حدثًا عند انتهاء العملية. فيما يلي مثال بسيط على رمز كتابة بعض كلمات الأغاني في ملف: // writefile.js const fs = require('fs'); let text = 'text textetxtettettt'; fs.writeFile('text.txt', text, (err) => { if (err) throw err; console.log('text saved!'); }); على عكس أساليب fs.writeFile و fs.writeFileSync عالية المستوى ، يمكنك الاستفادة من المزيد من التحكم عند الكتابة إلى الملفات في Node.js باستخدام طريقة fs.write ذات المستوى المنخفض. تسمح طريقة fs.write بالتحكم الدقيق في الموضع في الملف لبدء الكتابة فيه ، ومخزن مؤقت يمكنك تحديده للكتابة ، بالإضافة إلى أي جزء من المخزن المؤقت تريد كتابته على الملف. // fs_write.js const fs = require('fs'); let path = 'text.txt'; let buffer = new Buffer('qdqdqsdqdqsdqsdqdqsdqdqsdqdqd'); fs.open(path, 'w', function(err, fd) { if (err) { throw 'could not open file: ' + err; } fs.write(fd, buffer, 0, buffer.length, null, function(err) { if (err) throw 'error writing file: ' + err; fs.close(fd, function() { console.log('wrote the file successfully'); }); }); }); عند التعامل مع الملفات الكبيرة بشكل خاص ، أو الملفات التي تأتي في أجزاء ، على سبيل المثال من اتصال الشبكة ، فإن استخدام streams هو الأفضل لكتابة الملفات دفعة واحدة // write_stream.js const fs = require('fs'); let writeStream = fs.createWriteStream('secret.txt'); writeStream.write('aef35ghhjdk74hja83ksnfjk888sfsf', 'base64'); writeStream.on('finish', () => { console.log('wrote all data to file'); }); writeStream.end();1 نقطة
-
الفرق الأساسي بين الدوال هو البارامترات التي يتم استخدامها وبالتالي طريقة عمل كل منها: fs.write(fd, buffer, offset, length, position, callback) في الدالة fs.write يجب عليك انتظار callback حتى يتم تأكيد كتابة buffer على القرص الصلب. أما في الدالة fs.writeFile: fs.writeFile(filename, data, [encoding], callback) يتم كتابة جميع البيانات دفعة واحدة، ولا يمكنك إجراء عمليات كتابة منفصلة عن بعضها ضمن الملف. أما في fs.createWriteStream: fs.createWriteStream(path, [options]) هنا نلاحظ من البارامترات أنه لا يجب أن ننتظر أي callback عند إجراء العملية.1 نقطة
-
1 نقطة
-
تعتبر write, writefile من الدوال low-level access أي هي وسيلة سريعة لكتابة بعض المعلومات على ملف و لكن الفرق بين write , writeFile هو أن writeFile تقوم بفتح و كتابة و أغلاق الملف دون الحاجة الى أستعمال أي أمر أخر أما write فلا تقوم بأغلاق الملف و عليك أغلاقة أما بالنسبة لل fs.createWriteStream بالمقارنة مع السابقات فهي من الدوال الأعلى قدرة على الحفظ بطريقة دقيقة حيث أنها تفتح مجرى stream ليقوم بتدفق المعلومات من الى الملف بشكل طوابير queues و بهذه الطريقة فأن هذه الطريقة تتيح لك كتابة ملفات بحجم أكبر و أدق من الدوال السابقة حيث أن write, weiteFile ليسو عمليين حينما تقوم بكتابة ملفات كبيرة الحجم1 نقطة
-
توفر مكتبة Sklearn الكلاس SimpleImputer للتعامل مع القيم المفقودة، من خلال الموديول impute: sklearn.impute.SimpleImputer الصيغة: sklearn.impute.SimpleImputer(missing_values=nan, strategy='mean', fill_value=None,copy=True) strategy:تعني الطريقة التي سيتم التعامل بها مع القيم المفقودة mean , median , most_frequent , constant. mean سيعوض القيمة المفقودة بال mean للقيم المجاورة. most_frequent سيعوضها بالقيمة الأكثر تكراراً. constant بقيمة ثابتة أنت تحددها. median سيعوضها بال median للقيم المجاورة. copy: فيحال ضبطها على true سيتم إنشاء نسخة من البيانات أي لن يكون التعديل على البيانات الأصلية. missing_values: تحديد القيم التي تعتبرها كقيم مفقودة في بياناتك (مثلاً وجود NAN يعني أن القيمة مفقودة أو 0 مثلاً). ويأخذ القيم : "int, float, str, np.nan or None, default="np.nan fill_value: نستخدم هذا الوسيط في حالة استخدمنا استراتيجية constant حيث نسند له القيمة التي نريد الاستبدال بها. افتراضياً None. نستخدم التابع fit للقيام بعملية ال fitting على الداتا (اكتشاف القيم المفقودة و العمليات اللازمة للتعامل مع القيم المفقودة ) نستخدم التابع transform(data) لتطبيق التحويل (استبدال القيم المفقودة) مثال: #استيراد المكتبات اللازمة import numpy as np from sklearn.impute import SimpleImputer # إنشاء داتا بسيطة بقيمة مفقودة data=[[3, 4], [np.nan, 6]] #SimpleImputer تطبيق الكلاس imp = SimpleImputer(missing_values=np.nan, strategy='constant',fill_value=5) #على البيانات fitting عمل imp.fit(data) # تطبيق التحويل data=imp.transform(data) print(data) ''' [[3. 4.] [5. 6.]] '''1 نقطة
-
يقوم هذا الصف باختيار أهم ال Features في بياناتك التي تؤثر بقيم ال target اعتماداً على خوارزميتين f_classif أو chi2. يتم استدعاؤه كالتالي: sklearn.feature_selection.GenericUnivariateSelect ويجب أن نقوم أيضاً باستدعاء خوارزميتي f_classif أو chi2: sklearn.feature_selection.chi2 , f_classif الصيغة المبسطة للكلاس: GenericUnivariateSelect(score_func= f_classif, mode= 'k_best', param=n) score_func: تمثل الخوارزمية التي نريد تطبيقها f_classif أو chi2. param: تمثل عدد ال features التي نريد أن نحتفظ بها من ال features الكلية الموجودة في بياناتنا، ويأخذ عدد صحيح يمثل العدد المطلوب، فلو وضعنا 40 فهذا يعني أنه سيتم الاحتفاظ ب 40 فيتشرز (الأكثر أهمية من وجهة نظر الخوارزمية) ويتم استبعاد الباقي. mode: يحدد نمط الاختيار ويكون :{‘k_best’, ‘fpr’, ‘fdr’, ‘fwe’}, default="percentile بحيث k_best يختار أفضل k فيتشر (الفيتشرز التي أعطت أعلى k دقة (score))، أما الباقي فيعتمد على تفاصيل إحصائية في اختيار ال n فيتشرز هي ال false positive rate و false discovery rate و family wise error. ولعرض النتيجة التي حققتها كل feature نستخدم الواصفة scores_. ونستخدم التابع get_support لعرض الفيتشرز التي تم الاحتفاظ بها والتي تم استبعاها. مثال: from sklearn.datasets import load_breast_cancer from sklearn.feature_selection import GenericUnivariateSelect from sklearn.feature_selection import chi2 , f_classif data, target = load_breast_cancer(return_X_y=True) data.shape #(569, 30) fs = GenericUnivariateSelect(chi2, mode='k_best', param=15) data = fs.fit_transform(data,target) data.shape #(569, 15) #لكل ميزة score عرض ال #fs.scores_1 نقطة
-
يقوم هذا الصف باختيار أهم ال Features في بياناتك التي تؤثر بقيم ال target اعتماداً على خوارزميتين f_classif أو chi2. يتم استدعاؤه كالتالي: sklearn.feature_selection.SelectPercentile ويجب أن نقوم أيضاً باستدعاء خوارزميتي f_classif أو chi2: sklearn.feature_selection.chi2 , f_classif الصيغة: SelectPercentile(score_func = f_classif , percentile=persentage) score_func: تمثل الخوارزمية التي نريد تطبيقها f_classif أو chi2. percentile: تمثل النسبة المئوية التي نريد اختيارها من الداتا، ويأخذ قيم بين ال 0 و ال 100 فمثلاً لو وضعنا 50 فهذا يعني أنه سيتم اختزال حجم الفيتشرز إلى النصف بحيث تكون ال 50% التي سيتم الاحتفاظ بها أهم الفيتشرز والباقي تستبعد لأنها أقل أهمية (أقل تأثيراً على قيم ال target) من وجهة نظر الخوارزمية. ولعرض النتيجة التي حققتها كل feature نستخدم الواصفة scores_. ونستخدم التابع get_support لعرض الفيتشرز التي تم الاحتفاظ بها والتي تم استبعاها. مثال: from sklearn.datasets import load_breast_cancer from sklearn.feature_selection import SelectPercentile from sklearn.feature_selection import chi2 , f_classif data, target = load_breast_cancer(return_X_y=True) data.shape #(569, 30) fs = SelectPercentile(chi2, percentile=50) data = fs.fit_transform(data,target) data.shape #(569, 15) #لكل ميزة score عرض ال #fs.scores_1 نقطة
-
هذا خطأ عام، وقد يظهر لك عند استخدامك لأي خوارزمية أخرى أوشبكة عصبية ويحدث عند محاولتك قياس كفاءة نموذج باستخدام معيار f1-score مع مسائل التصنيف المتعدد. الخطأ في السطر التالي: f1_score(y_test,t.predict(x_test)) إن مجموعة البيانات الشهيرة MINST تشكل مسألة تصنيف متعدد، لذا لايمكن استخدام معيار f1-score معها كما في الشكل الذي أرفقته. الشكل العام للتابع: f1_score(y_true, y_pred,average='binary') أي افتراضياً يكون ال average تم تعيينه على binary (أي يقيس الكفاءة لمسألة تصنيف ثنائي)، لكن مسألتك هي مسألة تصنيف متعدد وبالتالي لايصلح استخدامه هنا. لحل المشكلة نستخدم أحد المعاملات ['None, 'micro', 'macro', 'weighted]. طبعاً يمكنك استخدام أي منها ولا يعطونك نتائج متفاوتة (غالباً تكون الفروقات بقيم مهملة) وبشكل عام فإن [None, 'micro', 'macro', 'weighted'] يمكنك استخدامها في حالة التصنيف المتعدد والثنائي. الحل: import numpy as np from tensorflow.keras.datasets import mnist from sklearn.linear_model import LogisticRegression from sklearn.pipeline import Pipeline from tensorflow.keras.utils import to_categorical from sklearn.metrics import f1_score,precision_score,recall_score,accuracy_score,log_loss (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train.shape image_size = x_train.shape[1] input_size = image_size * image_size x_train = np.reshape(x_train, [-1, input_size])/ 255 x_test = np.reshape(x_test, [-1, input_size]) / 255 t =LogisticRegression() t.fit(x_train, y_train) f1_score(y_test,t.predict(x_test),average='micro') #0.9258 # أو #f1_score(y_test,t.predict(x_test),average='macro') #0.9247 # أو #f1_score(y_test,t.predict(x_test),average=None) weighted: استخدمها إذا أردت أن تكون قيمة f1 معتمدة على عدد عينات كل صنف أيضاً . macro: تأخذ متوسطات ال f1 لكل كلاس. micro: نفس مبدأ accuracy. None: تعطيك ال f1 لكل فئة .1 نقطة
-
هل يمكن الاعتماد على هذه المنصة في الترجمة العلمية التخصصية والطبيعة؟ أي ما مستوى أداء المنصة بالمنصات الأخرى للترجمة؟ (استفسار غير تخصصي) هل يمكن استخدام المنصة برمجيًا؟ وذلك في المساعدة لترجمة محتويات المدونات (آليًا) أي هل لدى المنصة الإمكانية الفعلية للترجمة الآلية دون تدخل بشري؟1 نقطة
-
يحتاج مديرو المواقع المصممة بنظام إدارة المحتوى ووردبريس، إلى اختبار التغييرات على الموقع دون ظهورها المباشر للزوار. حيث ينعكس إجراء التغييرات على الموقع بعد إطلاقه سلبًا على ثقة الزوار، ولذا يوفِّر نظام الووردبريس عدة آليات لاختبار التغييرات على الموقع دون التأثير على ظهور المحتوى الفعلي للزوار: إنشاء بيئة اختبارية sandbox: تُستخدَم هذه الآلية لاختبار التغييرات المطبقة على قالب الووردبريس وملف التنسيق الخاص به، حيث تسمح بتعديل القالب على الحاسوب دون الإخلال بالموقع الأساسي. وهذه البيئة تُقيِّد خيارات التعديل على الموقع، بحيث لا يمكن التعديل إلا على ملف CSS، أما بقية الإضافات البرمجية والأدوات في الووردبريس، فلا يمكن التعديل عليها، مما يعني أنّ هذه الآلية مخصَّصة فقط لتعديل مظهر صفحات الموقع. إخفاء منطقة الاختبار: حيث يُقيَّد الوصول للموقع المخصَّص لاختبار التغييرات، والموجود على خادم موقع الويب، وهذا يتطلب المعرفة المسبقة بملفي htaccess.، وApache، وتسمح هذه الطريقة بتطبيق التغييرات على الإنترنت مباشرةً دون ظهورها للعامة. تثبيت الووردبريس على الحاسوب: يٌثبَّت الووردبريس وهو في موضع الاختبار، على الحاسوب الشخصي مع إجراء بعض التعديلات، بحيث يُختَبر محليًّا قبل رفعه على خادم الويب. وتسمح هذه الطريقة بالتحكم الكامل بالووردبريس، حيث تُستَخدَم الإضافات البرمجية، وملفات القالب template files، والقوالب themes، ويعاد تصميم كلّ شيء بطريقة تحاكي العمل على الإنترنت، دون اللجوء إلى استخدام عرض الحزمة bandwidth، أو المعاناة من سرعة الإنترنت. ويوجد طريقتان للتثبيت، وهما: تثبيت نسخة جديدة على الحاسوب، أو تثبيت موقع ووردبريس موجود حاليًّا. وسنتطرق لآلية نقل الووردبريس إلى موقع الويب بعد الانتهاء من هاتين الطريقتين. إنشاء بيئة اختبارية يُطلق مصطلح البيئة الاختبارية على الصندوق الرملي الذي يلعب الأطفال بداخله، ويشكّلون القلاع الرملية فيه. بحيث يكمن وجه الشبه بين هذا الصندوق والبيئة الاختبارية، في أنّ كلّ ما يحدث داخل الصندوق لا يؤثِّر أبدًا على الواقع. والبيئة الاختبارية في نظام الووردبريس هي نسخة طبق الأصل من صفحة موجودة فعليًّا، حيث تُحفَظ هذه النسخة على القرص الصلب hard drive، وتطبّق عليها التعديلات لتغيير شكلها الخارجي، دون ظهور هذه التعديلات على الموقع مباشرةً، وتُرفع هذه التغييرات على الموقع بعد التأكّد من ملاءمتها. يستخدِم نظام الووردبريس عدّة ملفّات قالب template files لإنشاء مجموعة عروض views على الموقع. ويوجد عمومًا، قالب لعرض الصفحة الرئيسية، وقالب لعرض منشور مُنفرِد، وقالب لعرض منشورات متعدِّدة. حيث تُستخدَم هذه القوالب الثلاثة في التصنيفات، و صفحات البحث، وصفحات الأرشفة. كما يوجد ملف CSS خاص بكل قالب من القوالب السابقة، وهو مختلِف عن الآخر، لذلك لابد من إضافة الملفات الثلاثة في صندوق الاختبار عند تغيير المظهر العام للموقع، وذلك يتحقق باتباع الخطوات التالية: اختيار القالب theme المراد تعديله، من لوحة التحكم، من ثم اختيار تبويب المظهر Appearance. عرض أحد القوالب التالية: قالب عرض الصفحة الرئيسية. قالب عرض المنشور المنفرِد. قالب عرض المنشورات المتعدِّدة. التوجه إلى المتصفح، واتباع الخطوات التالية: اختيار ملف file، ومن ثم اختيار حفظ باسم save as. تسمية الصفحة المراد حفظها باسم القالب الذي اُختير عرضه في الخطوة الثانية. حفظ ملف الصفحة في المجلد الخاص بالبيئة الاختبارية. نسخ ملف التنسيق style.css الموجود في مجلد القالب theme، إلى المجلد الخاص بالبيئة الاختبارية. فتح الملفات الثلاثة بمحرر نصوص، وإجراء التعديل التالي: <style type="text/css" media="screen> @import url('/wp-content/themes/yourtheme/style.css'); </style> إلى: <link rel="stylesheet" type="text/css" media="screen" href="style.css" /> بعد هذه الخطوة تُنسَخ العناصر المرتبطة بالصفحات، مثل: الأيقونات، وصور الخلفية، وعلامات التنقيط bullets، وغيرها من العناصر، إلى المجلد الخاص بالبيئة الاختبارية، ويمكن الوصول لتلك العناصر من خلال فتح ملف التنسيق CSS، واتباع روابط العناصر الموجودة بداخله، ومن ثم تنزيلها، وحفظها في مجلد فرعي داخل مجلد البيئة الاختبارية، مثل: header { margin:5px; padding:10px; background:url(images/background.jpg).... } لاختبار نجاح العملية تُفتح إحدى الصفحات الموجودة في هذا المجلد بنقرتين لتُُستعرض في المتصفح، فإذا عُرضت العناصر بتناسق كما في الأصل فهذا يعني نجاح العملية، أما إذا عُرضت العناصر بطريقة غير منسقة فهنا يجب التأكد من ربط صفحات التنسيق css. أصبحتَ الآن تمتلك نسخةً خاصّةً للتعديل عليها واختبار التغييرات الخاصة بالمظهر. وتحتاج للبدء باستخدام البيئة، إلى فتح برنامجين، وهما: محرر النصوص لفتح ملف style.css، والمتصفِّح لفتح الصفحة التي ستعمل عليها في العرض (الصفحات الثلاثة التي حُفِظت في البداية). حيث تُطبَّق التغييرات اللازمة على الملف style.css، ومن ثم يُحفَظ الملف، وأخيرًا تُحدّث الصفحة في المتصفح لمشاهدة التغييرات. وتُكرَّر الخطوات السابقة من أجل الصفحتين الباقيتين. نصائح لاستخدام البيئة الاختبارية تحتوي النقاط التالية على بعض النصائح للعمل في البيئة الاختبارية. انسخ الملفات نسخا احتياطيا دوريا انسخ الملفات نسخًا احتياطيًّا إلى مجلد احتياطي قبل أيّ تعديلٍ مهم، أو اضغط المجلد الذي يحوي الملف قبل تعديله، باستخدام برنامج ضغط لملفات بصيغة zip مثلًا. يُعَدّ المجلد المضغوط بمثابة نسخة احتياطية لكامل المجلد الأصلي، وفي حال حصل خلل في الملفات، فمن السهل استرجاع النسخة السليمة. تعقب عناصر HTML في الملف الخاص بالقالب افتح ملف الصفحة المراد تعديلها، في محرر النصوص، وأضف تعليقًا عند بداية ونهاية كلّ عنصر من عناصر لغة HTML، وذلك لتصبح عملية التعديل والتنسيق أكثر دقةً وسهولة. دون الملاحظات يُنصَح بتدوين ملاحظات حول التعديلات المحورية قبل تطبيقها، فإذا حدث خطأ ما بعد تطبيق التعديلات، فيصبح من السهل مراجعة الملفات المُعدَّلة، وفهم طبيعة التعديل. دون الملاحظات داخل الملفات يُنصَح بكتابة ملاحظات وتعليقات أمام كل كود عند تعديله في الملف البرمجي، وذلك لتسهيل فهم التعديل وتتبعه لاحقًا. اجعل التعديلات على مراحل صغيرة نسبيا تصبح عملية استكشاف مكان الخطأ أبطأ وأطول عند تطبيق عدد كبير من التعديلات دفعةً واحدةً، ولهذا يُنصح بتطبيق تعديلات قليلة، ومن ثمّ تفقُّد تأثيرها على الصفحة لضمان نجاحها، ونُكرر هذه العملية من أجل باقي التعديلات. تجنب التعديل على ملف القالب عدل في البداية على ملفات التنسيق فقط ولا تُجري أية تعديلات على ملف الـ HTML، أما إذا كنت تنوي انشاء قالب جديد لإطلاقه للعامة، فيجب عليك عند تعديل ملفات القالب تعديلها بكل دقة وعناية؛ أما إذا كان التعديل فقط لموقعك فعدِّل على الملف في البيئة الاختبارية ثم انقله لملف القالب في النظام. نقل الملفات من البيئة الاختبارية إلى القالب في النظام تُنقَل التغييرات بعد اختبار نجاحها، إلى قالب الووردبريس، وذلك باتباع الخطوات التالية: ارفع ملف style.css المعدَّل إلى مجلد القالب، واستبدل القديم به. ارفع كل الصور والرسوم إلى مجلد القالب، أو إلى مجلد فرعي بداخله. افتح موقعك من المتصفح، إذ ستُطبَّق التعديلات تلقائيًّا. اعكس التعديلات على ملفّات القالب في موقعك المقابلة لأي ملفات تعدلها في البيئة الاختبارية. تثبيت مدونة أخرى ثبِّت نظام الووردبريس مجددًا، وغيّر البادئة في ملف wp-config.php، وهي البادئة التي تبدأ بها أسماء الجداول ضمن قاعدة البيانات table prefix. انتقل إلى الخيارات options، ومن ثم كتابة writing، وبعدها أزل علامة الاختيار من حقل تحديث الخدمات Update Services. لا تخبِر أحدًا بعنوان صفحتك الجديدة. في حال الانتقال من المدونة الجديدة إلى موقع آخر، سيكتشف هذا الموقع عنوان مدونتك بسبب المتصفح، ولتخطي هذه المشكلة، اخرج من موقعك، ثم ادخل لمدونتك الأساسية، ومن ثم انتقل منها إلى الموقع الذي تريده. حيث أن هذه الطريقة فعالة عند اختبار الموقع من متصفحات مختلفة وأشخاص آخرين، بعد الانتهاء من تعديله. إخفاء منطقة الاختبار تُستَخدَم ملفات htaccess. على خادم الويب أباتشي Apache، لإخفاء مجلد الاختبار عن العامة. حيث يخزِّن ملف htaccess. الأوامر، والتنقلات اللازمة عند حدث معيّن، ويمكن استخدام ملف إعدادات أباتشي httpd.conf في الأباتشي، أو أي أداة أخرى، كما يُطبَّق ملف htaccess. فقط على المجلد المراد إخفاءه، حيث سيختفي هو وكل المجلدات الفرعية الموجودة بداخله، مما يسمح لك بتقييد الوصول إلى مجلد مخصص. ويجب التنويه إلى أنّ هذه الطريقة صالحة فقط مع الخوادم التي تدعم ملفات htaccess.، أما في حال عدم تيقّنك من دعم موقعك لهذه الخاصية، تواصل مع شركة الاستضافة، فمن المحتمل أن تكون موجودة ولكنك لا تملك صلاحيات استخدامها، وبالتالي عليك التواصل مع شركة الاستضافة أيضًا. تحتاج عند استخدام ملف htaccess.، إلى إدخال التعليمات الإرشادية للخادم، وإعلامه بآلية التعامل مع الأحداث، ليستطيع من خلالها تقييد ومنع الوصول إلى موقع الاختبار، وذلك بتطبيق خطوات مرتّبة ضمن المجلد أو المكان الذي يحوي تثبيت الووردبريس، كما يأتي: أنشِئ ملفًا فارغًا باستخدام محرر النصوص، وعدّل اسمه ليكون htaccess. تحتاج إلى المعلومات التالية: المسار الكامل للمجلد الذي لا يمكن الوصول له من العامة، فمثلًا المسار http://example.com/public_html/ يمكن الوصول له، أما المسار http://example.com/privatel/ فلا يمكن الوصول له، لذلك ستستخدِم المسار الثاني. اسم المنطقة المحمية secured area، مثل: Enter Password، أو Secure Area، وهذه ليست ضرورية. اكتب في ملف htaccess. ما يلي: AuthUserFile /full/path/of/directory/.htpasswd AuthName "Security Area" AuthType Basic require valid-user وبعدها غيّر كلًا من المسار الكامل للمجلد /full/path/of/directory/، والمنطقة المحمية Security Area، بما يقابلهما في موقعك وِفقًا للملعومتين المذكورتين. احفظ ملف htaccess.، وارفعه إلى المجلد المراد إخفاءه، ويكون هذا مكان تثبيت الووردبريس أو المدونة، مثل: /wordpress/، أو blog. استخدِم لوحة التحكم cPanel، أو البرتوكول Telnet، أو أي أداة أخرى، للوصول للوحة موجه الأوامر command panel الخاصة بالخادم، واذهب إلى المسار المعرف ضمن AuthUserFile. أَدخِل الأمر التالي: htpasswd -c .htpasswd user_name، حيث أن user_name هو اسم المستخدم المصرح له بالوصول. أَدخل كلمة المرور بعد تنفيذ الأمر السابق، وتحقق منها بإدخالها مرةً ثانية. احفظ اسم المستخدِم وكلمة المرور في مكان آمن. احذف كلمة المرور وملف htaccess. عندما يصبح الموقع جاهزًا لإطلاقه للعامة، ويُنصَح بحذف رابط الوصول الافتراضي لخدمة Ping-o-Matic، حيث ستتسبب هذه الخدمة بنشر المنشورات الاختبارية للعامة ولكن دون الوصول للموقع. تثبيت نظام الووردبريس على حاسوبك التثبيت على الماك اتبع التعليمات الموجودة في هذا المقال لإعداد بيئة الخادم المحلي، من أجل اختبار الووردبريس وتطويره على الماك. التثبيت على نظام الويندوز يجب التأكد من صلاحيات الوصول لكل من خادم أباتشي، وMySQL/MariaDB، وphpMyAdmin، وذلك عند البدء بتشغيل نظام الووردبريس. ولتثبيت هذه الأدوات نلجأ إلى برنامج XAMPP، والذي يُثبِّت هذه الأدوات دفعةً واحدة، أي أنّ كل ما نحتاج إليه لتشغيل الووردبريس على الحاسوب هو تثبيت برنامج XAMPP، ومن ثم تشغيله. يوجد إصداران من برنامج XAMPP، إحداهما أساسي Basic والآخر مُخفف Lite، حيث يفي الإصدار المخفف هنا بالغرض. ويتطلب تشغيل الووردبريس على الويندوز، إجراء الخطوات التالية: نزّل برنامج XAMPP وثبّته. يصبح المسار C:/xampplite، أو المسار C:\xampp هو المسار الافتراضي لبرنامج XAMPP بعد تثبيته. شغِّل برنامج XAMPP من المسار: C:/xampplite، أو من المسار C:\xampp. قد تحتاج لإعادة تشغيل الحاسوب لتبدأ خدمات أباتشي بالعمل. أَدخِل الرابط http://localhost/xampp في المتصفح، للدخول إلى الخادم المحلي. اضغط على phpMyAdmin الموجودة في العمود الأيسر تحت الأدوات Tools. سجِّل الدخول على أنك مدير admin. أَدخِل wordpress في حقل إنشاء قاعدة بيانات جديدة Create new database. -أَدخِل utf8 unicode ci في الحقل المجاور للحقل السابق. -اضغط على إنشاء create. فُكّ ضغط الملف الذي يحوي نظام الووردبريس في مجلد htdocs، أي الموجود في المسار c:\xampp\htdocs. افتح من داخل مجلد htdocs، ملف wp-config-sample.php، باستخدام محرّر النصوص. تحتاج إلى تفاصيل الاتصال MySQL settings، وهي كما يأتي: define('DB_NAME', 'wordpress'); // اسم قاعدة البيانات define('DB_USER', 'root'); // اسم المستخدِم لقاعدة البيانات define('DB_PASSWORD', ''); // كلمة المرور لقاعدة البيانات define('DB_HOST', 'localhost'); // اسم الاستضافة المحلية، وغالبًا تترك هكذا احفظ الملف باسم wp-config.php. ثبِّت الملف المعدل، وذلك بالذهاب إلى الرابط. ملاحظة: يبقى الحاسوب الشخصي هو الخادم المستضيف للموقع بعد إنشاءه عليه، وذلك بتوفُّر شرطين أساسيين، وهما: سرعة الإنترنت، وزيادة مستوى حماية الحاسوب. تثبيت موقع ووردبريس موجود حاليا يقدِّم XAMPP تسهيلات تُمكنك من تثبيت الووردبريس على الحاسوب الشخصي، وبهذه الطريقة يصبح من السهل التعديل على الووردبريس الموجود حاليًّا، دون أن تظهر هذه التعديلات لزوار الموقع، حيث ستُطبق التعديلات على النظام المثبَّت على الحاسوب الشخصي، ومن ثم يُرفَع النظام بعد الانتهاء من التعديلات إلى الخادم، وبذلك تصبح التعديلات متاحةً لزوار الموقع. ويتطلب تثبيت ووردبريس الموقع على الحاسوب الشخصي، تحقيق المتطلبات التالية: إمكانيّة الوصول لقاعدة بيانات الخادم. إمكانية تنزيل نسخة ووردبريس على حاسوبك. الإصدار الأساسي من XAMPP الخاص بالويندوز. مساحةً فارغةً لاحتواء المكونات المذكورة في الأعلى. نسخ الووردبريس نسخا احتياطيا نبدأ بعملية النسخ الاحتياطي لنظام الووردبريس، والملفات، وقاعدة البيانات، وبذلك تتكون لدينا نسخة كاملة قد نحتاجها في حال حصول خلل ما. ومن ثم نأخذ نسخةً احتياطيةً من قاعدة البيانات الموجودة على الحاسوب الشخصي، ويجب هنا تطبيق إجراءات احترازية لعدم وصول أيّ شخص إليها. ستكون عملية النسخ الاحتياطي بطيئة، وذلك بسبب وجود قاعدة بيانات افتراضية مرفقة مع الووردبريس، والتي تحتوي على العديد من القراءات الإحصائية، مما يزيد حجم قاعدة البيانات. وأنت لست بحاجة إلى حذف هذه القراءات، ولكنها تُعَدّ فكرةً جيدة. يمكن أخذ نسخة احتياطية من قاعدة البيانات باتباع الخطوات التالية: سجّل دخول إلى PHPMyAdmin على خادم الموقع. اختر قواعد بيانات Databases من واجهة التسجيل الرئيسية. اختر اسم قاعدة البيانات المرتبطة بنظام الووردبريس الخاص بك. اختر تصدير Export من التبويبات الموجودة أعلى الشاشة. ستُعرَض قائمة من جداول قاعدة البيانات الخاصة بموقعك، في الإطار المحيط بأعلى منطقة التصدير. حدِّد الجداول التي تحمل البادئة المخزّنة في ملف wp-config.php، أما في حال كان نظام الووردبريس هو المثبت فقط، فيمكنك استعمال خيار تحديد الكل select all من العمود الأيسر من اللوحة. تأكد من اختيار زرّ SQL. تأكد من تحديد الحقول الموجودة في الجانب الأيمن من اللوحة، وهي: Structure، وAdd AUTO_INCREMENT value، وEnclose table and field names with backquotes، وData. حدِّد زر حفظ باسم Save as file، واترك حقل اسم القالب template name كما هو، واختر لا شيء None من أجل الضغط Compression، ومن ثمّ اضغط على اذهب Go، بعدها ستظهر لك إمكانية حفظ الملف. احفظ الملف على الحاسوب الشخصي، وستستغرق عملية الحفظ هذه بعض الوقت، اعتمادًا على حجم قاعدة البيانات. تنزيل نظام الووردبريس يُستخدم برنامج FTP client لتنزيل نظام الووردبريس على حاسوبك الشخصي. حيث يجب عليك التأكد من وجود جميع ملفات النظام الأساسية، بما فيها index.php، داخل مجلد الجذر أو داخل مجلد الووردبريس، ليُصبح في الحاسوب الشخصي بعد هذه العملية، عنصرين، وهما: نسخة احتياطية واحدة أو أكثر من قاعدة البيانات. كلّ ملفات ومجلدات الووردبريس. وعليك الأخذ بنسخة احتياطية من الملفات وتضعها في مكانٍ آمنٍ على الحاسوب، ومن ثم تبدأ العمل على هذه النسخة في المرحلة التالية. تثبيت XAMPP الأساسي ثبِّت XAMPP على الحاسوب، حيث سيُثبَّت افتراضيًّا على المسار: c:\xampp. اذهب إلى المسار C:\xampp\apache\conf، وافتح بمحرر النصوص، ملف httpd.conf. ستجد في السطر 166 من ملف httpd.conf، التالي: #LoadModule rewrite_module modules/mod_rewrite.so. احذف المحرف #، واحفظ الملف، وهذا يُفعّل mod_rewrite. أنشِئ مجلد داخل المسار C:\xampp\htdocs، حيث سيُخزَّن بداخله ملفات الووردبريس. انقل جميع ملفّات الووردبريس المٌنزَّلة (ليس النسخة الاحتياطية لقاعدة البيانات) إلى المجلد الذي أنُشٍئ في الخطوة السابقة. عدل تفاصيل الاتصال بملف MySql، وذلك كما يأتي: define('DB_NAME', 'wordpress'); // اسم قاعدة البيانات -- made define('DB_USER', 'root'); // اسم المستخدِم لقاعدة البيانات، دعها هكذا -- define('DB_PASSWORD', ''); // كلمة المرور لقاعدة البيانات، دعها فارغة هنا -- define('DB_HOST', 'localhost'); // اسم الاستضافة المحلية، وغالبًا تترك هكذا -- خزّن ملف index.php الرئيسي في مجلد htdocs، أو في مجلد فرعي بداخله، مثل: /htdocs/wordpress/. شغّل برنامج XAMPP، وذلك من خلال النقر على الأيقونة البرتقاليّة، والتي تحمل اسم xampp_start.exe، أو باستخدام برنامج console الموجود في: Program Files\ApacheFriends\XAMPP\XAMPP Control Panel. اضغط على الرابط في الجانب الأيسر من phpMyAdmin. أنشِئ قاعدة بيانات، ويجب أن يتوافق اسمها مع الاسم الموجود في ملف wp-config.php. استيراد النسخة الاحتياطية لملف الـ SQL نحتاج قبل البدء بعملية استيراد ملف الـ SQL، إلى تعديله ليتلائم مع الخادم المحلي، وذلك باتباع الخطوات التالية: نفتح بمحرر النصوص، الملف ذو الامتداد sql.، والخاص بالنسخة الاحتياطية لقاعدة البيانات. نستبدل جميع الروابط القديمة بالروابط الجديدة، مثل: استبدال الرابط القديم: http://example.com/wordpress/ بالرابط الجديد: http://127.0.0.1/wordpress/. نضغط على حفظ (save) وليس على حفظ باسم (save as). تُستَورد قاعدة البيانات بعد تطبيق الخطوات السابقة، باستخدام لوحة myphpadmin الموجودة على الحاسوب، حيث نضغط على اسم قاعدة البيانات، ومن ثم نختار تبويب SQL، بعدها نضغط على Browse، ونختار مكان لتخزين ملفات قاعدة البيانات على الحاسوب، ثم نضغط على GO، وقد تستغرق هذه العملية بعض الوقت. تصبح قاعدة البيانات الخاصة بك عند انتهاء العملية السابقة، جاهزةً ومتصلةً بالنظام. وإذا ظهر أي خطأ، فهذا يعني وجود خلل في عملية النسخ الاحتياطي بأي شكل من الأشكال، أو وجود خللٍ في قاعدة البيانات نفسها، ويجب حفظ ملفات قاعدة البيانات في مكان آمن، وذلك لمنع وصول الآخرين إليها. وإذا سار كل شيء على ما يرام، فيمكنك الدخول إلى مدونتك من الحاسوب الشخصي، وذلك بكتابة http://127.0.0.1/wordpress/index.php في المتصفح، أو اسم المجلد الذي يحوي ملفات الووردبريس. وإذا ظهر الخطأ 404، فتأكد من إدخالك المسار الصحيح لملف index.php، حيث لا يجب وضع htdocs أو xampp بعد http://127.0.0.1/، وإنما فقط اسم المجلد الذي يحوي ذلك الملف. حيث سيظهر الووردبريس على الحاسوب كما لو أنه على الويب، ولست بحاجة هنا إلى استخدام محرر الووردبريس لتعديل الملفات، بل يكفي فقط استخدام محرر النصوص الخاص بك، ومن ثم التعديل كما لو كنت تُعدّل أي ملف آخر، وستظهر التغييرات بعد الانتهاء من التعديل عند تحديث صفحة الويب من المتصفح. ترجمة وبتصرف للمقال Test Driving WordPress من موقع wordpress1 نقطة
-
تُعَدّ ووردبريس منصةً قويّةً للنشر الإلكتروني، حيث تتمتّع بالعديد من المميّزات التي صُمِّمت لجعل تجربتك في النشر على الإنترنت سهلةً، وممتعةً، وجذّابةً قدر الإمكان. ولنا الفخر بأن نقدِّم لك نظامًا لإدارة المحتوى، والذي يتميّز بأنّه حرُّ، وسريعُ، وخفيفُ، ومتوافقُ مع المعايير، إلى جانب احتوائِه على إعدادات وميّزات افتراضيّة يمكن إعادة تخصيصها وفقًا لمتطلّبات المستخدِم. وسنتطرق في القسم التالي لمجموعة من المميّزات الأساسيّة في الووردبريس، وهناك حرفيًّا عشرات الآلاف من الملحَقات أو الإضافات التي توسِّع عمل الووردبريس، وبالتالي يمكننا القول أنّ الوظيفة الفعليّة للووردبريس لا حدود لها تقريبًا. ويمنح الووردبريس الحريّة في التعامل مع الكود المصدريّ الخاصّ به، إما بالزيادة أو التعديل بأيّ طريقةٍ كانت، أو استخدامه لمشاريع تجاريّة دون أيّ رسوم ترخيصٍ على الاستخدام. يتجلّى جمال البرمجيّات الحرّة، ومفتوحة المصدر، في أنّ كلمة حرّة لا تعني مجانيّة السعر فحسب، بل الحريّة في التحكّم، والسيطرة الكاملة. لمحة سريعة أثبت لقد أُثبت أنّ نظام الووردبريس يعمل على تشغيل أكثر من رُبع المواقع التي تُنشَئ حديثًا، وأنّه نظام إدارة المحتوى المختار تقريبًا من قِبَل نصف مليون موقعٍ من المواقع الأكثر شهرةً على الإنترنت، فهو موثوقٌ لدى ناشري المحتوى ذوي الانتشار الواسع أو الضيق، بما في ذلك شبكة سي إن إن CNN، وصحيفة نيويورك تايمز NY Times. حيث يُستخدَم في أكثر من خمسين مليون موقع عالميّ، ولديه ثلاثة عشر عامًا من التاريخ المُثبَت، ولهذا فمن المؤكَّد حصولك على أفضل نظامٍ يؤدّي الوظيفة الموكلة إليه. سهولة الاستخدام تتكوّن التركيبة الأساسيّة للووردبريس من واجهةٍ بسيطةٍ تشبه إلى حدٍّ كبير تلك الواجهات الموجودة في برامج النشر، والتي تعمل على سطح المكتب، والتي تستعملها اليوم، حيث ليس هناك حاجةٌ إلى خبرةٍ في البرمجة، أو إلى خبرةٍ عاليةٍ في الاستخدام، إذ يتَّسِم منحنى عمليّة التعلُّم بالقِصر، ويُقدَّر بمدى إدخال عنوان الموقع وتسجيل الدخول، بعدها سيصبح الموقع جاهزًا لعمليّة النشر. وفي الحقيقة، يمكن لأيّ مستخدِمٍ جديدٍ تعلُّم الأساسيّات دون أيّ جهدٍ في التدريب. وتُعَدّ الواجهات محسَّنةً وسهلة الاستخدام، وهي نتيجة التحسين المستمر لسنوات، بالإضافة إلى أنّها تجمع بين قوّة مايكروسوفت وورد، وسهولة استعمال الآيفون واستخدامه المميَّز. الهدف من إنشائه هو النشر يُسهِّل النظام عمليّة مشاركة المحتوى وجذب القرّاء إلى موقعك، إمّا من خلال نشر المحتوى على وسائل التواصل الاجتماعيّة (مع التأكّد من موافقة موقعك لشروط التنسيق المُثلى، حتّى يظهر في أُولى نتائج البحث بعد النشر مباشَرةً)، أو من خلال توفير نشراتٍ إخباريّةٍ ذات محتوى مُحدَّدٍ للمستخدِم، ليطّلع عليها من خلال برنامج قراءة الأخبار الذي يفضّله، أو من خلال إرساله بالبريد الإلكترونيّ. ومن خلال ما سبق يتّضح أنّ الووردبريس ليس موقع ويبٍ بسيطٍ فقط، بل هو منصّةً لنشر المحتوى، حيث سيكون لديك ما يمكن التعبير عنه مجازًا بمكبّر صوت قويّ لبث رسالتك للعالم، وذلك بمجرّد نقرةٍ واحدةٍ منك. مدعومة من مجتمع تقني يدعم الووردبريس حاضنةً تقنيّةً (مجتمع حيويّ من المستخدِمين التقنيين) حلّت العديد من المشاكل المحوريّة، ونشرت التفاصيل حولها، وحصدت بالإصدار 4.9 وحده أكثر من 160 مليون عمليّة تنزيل من لحظة إطلاقه قَبل عِدّة أشهر. وتحوي بعض المكتبات أكثر من خمسين ألف مُلحقٍ برمجيٍّ (حرٍّ، ومفتوح المصدر)، وقوالب themes تنمو يومًا بعد يوم، وهناك أيضًا مئات من المساهِمين في كلّ إصدار دوريّ. ويهدف مجتمع الووردبريس إلى الإبقاء على حيويّة هذه المنصة ووجودها، وإثبات مدى فعاليّة ونجاح النظام بما أنّه ecosystem، أي يندرج تحته كل ما يتعلق بأطر العمل من مكتبات، وأدوات تطوير، …إلخ. متعدد المواقع يمكن تفعيل خاصيّة تعدُّد المواقع، والتي تستطيع من خلالها تطوير وصيانة مواقع متعدِّدة عبر نظام ووردبريس واحد. حيث سيمكِّن تعدُّد المواقع الافتراضيّة المتعدِّدة، من مشاركة نسخة ووردبريس واحدة، فعند تفعيل خاصيّة تعدّد المواقع فسيُحوَّر نظام الووردبريس الأصليّ لدعم شبكةٍ من المواقع. المحتوى هو الجوهر تسيير العمل بأكمله يدير نظام الووردبريس ويسيّر عمليّة النشر من بدايتها، انطلاقًا من إنشاء المسوّدة الأوليّة، إلى حين الوقت الذي تُقرِّر فيه النشر، وذلك من خلال عدّة ميّزات، منها: مراقبة التهجئة، وقواعد اللغة، والمراجعة. لذا فهو يُغني عن استعمال رسائل البريد الإلكتروني للتعديلات، والإضافات، أو حتى استعمال محرِّرات نصوص ذات تكلفة عالية. منح الموقع الحيوية يعمل كلّ شيء في النظام على جعل الموقع أكثر حيويّةً وفاعليّةً، وذلك من خلال إضافة الصور، والفيديوهات، والموسيقى، والمستندات، والتي بدورها ستولِّد شعورًا بالراحة وأنت داخل نظام الووردبريس، إلى جانب الخواصّ المتعدِّدة، مثل: خاصيّة السحب والإفلات التي تَستخدِم أحدث التقنيات للتأكُّد من وصول ملفّك بأمانٍ إلى صفحة الويب في كلّ عمليّة، ومُستعرِض الوسائط الذي يساعِد في عمليّة حفظ، وترتيب الملفات، والبحث عنها عند الضرورة. حيث يستضيف النظام هذه الملفات التي تلزَم لرفع موقعك. إزالة المشتتات في خضم العديد من المشتّتات على الويب، من: بريدٍ إلكتروني، وتغريدات تويتر، وتحديثات الحالة في المواقع المختلفة، كان لابدّ من بناء هذه المنصة، لكي لا يتشكّل تشتيتٌ إضافيٌّ للمستخدِمين، حيث تختفي عند البدء بتحرير فكرتك، وذلك بهدف التركيز على كيفيّة صياغتها لا كيفيّة نشرها. لن يضيع عملك يعمل نظام الووردبريس على عمليّة الحفظ التلقائيّ أثناء الكتابة، وبالتالي لن تقلق على العمل في حالة تَعطُّل الحاسوب أو ارتكاب أيّ خطأ. هل تريد العودة للنسخة السابقة من عملك؟ لا مشكلة، سيُنشِئ الووردبريس عند كل عمليّة حفظ، نسخةً أو لقطةً snapshot من العمل يمكن استعادتها بأي وقتٍ بنقرة واحدة. السفر عبر الزمن ليس بالمعنى الحقيقي للعنوان، ولكنّه صورةٌ تقريبيّةٌ لما توفِّره الووردبريس، حيث تُتيح لك النشر في الوقت المناسب من خلال النشر في الماضي، أي وضع التاريخ ليبدو وكأنّه نُشر بالماضي، أو جدولة منشور ليُنشَر في وقتٍ ما من المستقبل. انشر من أي مكان أصبح الإنترنت منتشرًا في كلّ مكانٍ حولنا، فلماذا لا تكون عمليّة النشر أيضًا من كل مكان؟ يمكنك متابعة عمليّة النشر والتحكّم من الهاتف بنظام آندرويد، أو نظام آي أو إس iOS الخاص بآبل. أي كلّ شيءٍ في متناول يدك حرفيًّا، وإذا لم ترغب بذلك عن طريق الهاتف، فلا تقلق، إذ يمكنك النشر من خلال البريد الإلكتروني. الحماية بكلمة مرور يمكنك حماية المنشورات بكلمة مرورٍ لحمايتها من العرض أمام الأشخاص غير المخوَّلين، كما يمكنك أيضًا إنشاء منشوراتٍ خاصة لا يمكن استعراضُها إلا من قِبَل مؤلِّفها. منشورات في صفحات متعددة تُقسَّم المنشورات ذات الطابع الطويل إلى عدّة صفحات، لتوفير وقت التمريرعلى القارئ. الحفاظ على المسودات يمكنك حفظ المقالة الغير منتهية، وتحسينها في وقت لاحق، ونشرها عند الانتهاء منها. معاينة المنشورات يمكنك معاينة المقالة قبل نشرها وإخراجها للجمهور، وذلك للتحقُّق من وجود كلّ شيء كما هو مطلوب، ويمكن القيام بهذه العملية في أيّ وقت كان من تحرير المقالة، لأن المعاينة تكون معروضةً فعليًّا. نقاط القوة الثمانية الكامنة في النظام 1- تصميم مناسب لجميع أنواع المحتوى يستحق محتواك الأفضل دائمًا، لذلك يجب أن يتلاءم الموقع مع محتواك، لا أن يتلاءم المحتوى مع الموقع، وهذا ما يوفره نظام الووردبريس، حيث يأتي بنظام قالب كامل full theme system، والذي يجعل التصميم بمنتهى السهولة ابتداءً من المواقع البسيطة، وصولًا إلى البوابة الأكثر تعقيدًا. 2- تنظيم دقيق لا تهم كمية المحتوى إذا لم يتمكن الزوار من العثور عليه، لكن لا داعي للقلق، إذ يعمل نظام الووردبريس على ترتيب المحتوى وفقًا لـ: السنة، والشهر، واليوم، والمؤلف، والفئة (أيَّ طريقة يمكن وصفها)؛ وتُنشَئ أرشيفات قابلة للتصفُّح بآلية ديناميكية لضمان أن كل شيءٍ محدَّث طيلة الوقت. 3- البحث الشامل من خارج النظام أو داخله يمتلك نظام ووردبريس خاصية بحث تُعَدّ الأفضل من نوعها، فكل كلمة تُدخَل في صندوق البحث في أعلى كل صفحة تُعَدّ كلمةً ذات طابع بحثي، أي يمكن البحث بها، وفي حال أراد الزوار البحث من محرك بحث خارجي مثل جوجل، فسيعرض النظام المحتوى الخاص بك بطريقة شاملة مع ضمان أن يكون أول النتائج في كل مرة. 4- حتى عناويين الموقع منسقة في بعض الأحيان عند دخولك لموقع لا يعمل بالووردبريس، وتنظر إلى رابط الصفحة التي دخلتها، فستجد أنّ الرابط عبارة عن أحرف وأرقام مبعثرة، أما في الووردبريس، فيعلم مطورو النظام أنّ الذين يعملون على النظام، ويتصفحون مواقعه بشر وليسوا حواسيب، لذلك تظهر عناوين ذات معنى يمكن قراءتها، وليس عناوين الصفحات في قاعدة البيانات. 5- بشرى للكتاب مستخدمي الويب للنشر من المعلوم أنّ صياغة كلّ ما يُنشر يجب أن تكون متوافقةً مع قواعد الويب، وذلك عن طريق استخدام الأدوات المناسبة. وعلى الرغم من أنّ نظم إدارة المحتوى تُخصِّص وتُحوِّل النصوص لتتلاءم مع قواعد الويب المختلفة، إلّا أنّ بعضها لا يراعي كافة التفاصيل، وهنا تأتي أهميّة نظام الووردبريس على أساس مديرٍ للمحتوى، حيث يُستخدم محرّك خاص لإدارة هذه العمليّة ويدعى محرك التركيب Texturize engine. يتعامل هذا المحرك مع جميع التفاصيل التي أدخلها الكاتب من علامات التنصيص، وعلامات الاقتباس، والرموز الرياضية، وغيرها من الرموز؛ عن طريق تحويلها إلى ما يناسبها من وسوم وكيانات لغة برمجة صفحات الويب HTML. 6- مرحبا بالجميع في ووردبريس من المميزات العظيمة في ووردبريس أنه تُرجم ليتلاءم مع أكثر من 180 لغة حول العالم، لذلك وبأي لغة حول العالم يمكن النشر فورًا، بالإضافة إلى أنّه يمكنك إنشاء موقع بلغتك المحليّة، ويمكنك تغيير لغة الموقع وتعريبِه باستخدام GetText. 7- التحكم الكامل بخصائص الموقع من خلال السحب والإفلات لا تتطلب إدارة موقع الووردبريس تخصص المدير بعلوم الحاسوب، حيث تُدير أدوات التحكّم بالسحب والإفلات كل ما يريده المستخدِم، ابتداءً من القوائم وصولًا إلى الأدوات التفاعلية في كل صفحة وبطريقة بسيطة. 8- صلاحيات متعددة يُنشِىء النظام أدوارًا roles مختلفةً لكل مستخدِم -في حال وجود عدد من المستخدِمين داخل النظام-، ويعطي الصلاحيات المناسبة لكل مستخدِم، تمامًا كما يحدث عند توزيع المهام في الحياة الواقعية، كما يسمح للمستخدِمين الجدد بالتسجيل تلقائيًّا دون تدخُّل من المدير، حيث يُدخِل كل مستخدِم المنشور الذي يريده، ثم يرسله لمدير النظام، ويطّلِع الأخير عليه، ومن ثم يقبله أو يرفضه. خصائص عاينها المستخدمون وأثبتها المحترفون قوة الإبداع يعمل نظام الووردبريس على توفير أدوات كبيرة وبأفكار إبداعية، وعند استخدام هذه الأفكار، فهناك حاجة للقليل فقط من التخصيص لكي تتلاءم مع الاستخدام الخاص بكل مستخدِم. وتتطلب الأنظمة الأخرى لإدارة المحتوى، بذْل المستخدِم لجهد كبير للبحث عن قائمة كبيرة من الإضافات، وتثبيتها، وضبط إعداداتها، للحصول على الميّزات التي يقدِّمها الووردبريس على طبق من ذهب للمستخدِم، ومن الأمثلة على هذه الميزات التي تُعَدّ أساسيةً في الووردبريس: التعليقات، وموجزات الأخبار، والتنقيحات…إلخ. في حين تعتمد الأنظمة الأخرى على مبرمجين لإيجاد تلك الميزات من خلال كتابة الكود الخاص بها من الصفر، وبهذا يتولد سؤال مهم، وهو: لماذا نعيد اختراع العجلة في حين أنه يمكننا الحصول على أفضل عجلة في العالم؟ نظام مفتوح المصدر وشفافية عالية بُنِيَ نظام الووردبريس بتعاونٍ بين خبراء من المطوِّرين المحترِفين، والأكاديميين، والهواة. حيث أُصدِر نظام مفتوح المصدر للجميع، ليبني كل شخص عليه أو يُحسّنه وفقًا لاحتياجاته. ويميز النظام التطوير المتواصل، والذي يُبرز حقيقة أنّ التحديثات دورية، مما يجعله مواكبًا للتطور، وقد أُجرِيَ كل ما سبق دون أي رسوم ترخيص أو كُلفَةٍ مباشرة، وبدعم مهني واسع النطاق من المجتمع الدولي الموجود في كل مكان. إنها بياناتك تُقيِّد بعض أنظمة إدارة المحتوى نوع البيانات التي يمكنك جلبها وتشغيلها على المنصة، في حين يعمل نظام الووردبريس وفق معايير مفتوحة تمكنك من جلب البيانات بأي شكل كان، كما يُوفّر أدوات لجلبها من مصادرها المتعددة. ويمتلك نظام الووردبريس في الوقت الحالي، الأدوات اللازمة لجلب البيانات الخاصة بالمستخدِم من أي نظام إدارة محتوى كان يعمل عليه سابقًا، مثل: b2، وBlogger، وGreymatter، وTextpattern، وMovable Type. وحاليًّا، يُعمَل على زيادة الدعم في المنصة لتستطيع التعامل مع منصات أخرى، مثل: Nucleus، وpMachine. إنه نظامك صُمِّم النظام ليعمل على خادم الويب الخاص بك، أو حتى على السحابة، أو على أي استضافة. ويعطي النظام حق التحكم الكامل بكل شيء، على عكس الأنظمة التجارية أو خدمات الاستضافة من الطرف الثالث، ويمنح هذا شعورًا بالثقة أنه بإمكانك الوصول إلى ما تريده في موقعك وتعديله كما تريد. وعمومًا، يمكنك تثبيت نظام الووردبريس على حاسبك الشخصي أو أي شبكة شركة داخلية. إدارة موقع أو مليون موقع يوفِر النظام تقنية تعدُّد المواقع. هذه الآليّة ذاتها مستخدَمة في أكثر من عشرين مليون موقع على WordPress.com، ومواقع عالميّة، مثل: CNN، وNew York Times. حيث تتيح آلية تعدُّد المواقع للمستخدِمين التحكم الكامل بمواقِعهم الخاصة دون أي قيود أمنية، كما يملك كل موقع قوالب وإضافات خاصة به، ويدير مستخدِميه دون المساس بالمواقع الأخرى في النظام نفسه، إلى جانب تطبيق سياسات نطاق الشبكة والتحديثات الأمنيّة على جميع المواقع دفعةً واحدة، وبنقرة واحدة. إنشاء صفحات ديناميكية لست بحاجة لإعادة بناء صفحاتك بعد كلّ عمليّة إضافة جديدة على موقعك، أو بعد التعديل على موضوعٍ سابق، حيث تتولّد جميع الصفحات في كلّ مرةٍ يطلب فيها المشاهد صفحةً من موقعك، وذلك باستخدام قاعدة بياناتٍ وقوالب، وهذا يعني أنّ تصميم موقعك أو تحديثه، سيكون أسرع ما يمكن، كما سيُوفِّر أكبر مساحةٍ من التخزين. قالب يتحكم بالتصميم يُنشِئ نظام الووردبريس الصفحات تلقائيًّا باستخدام القوالب، ويمكنك التحكم في عرض المحتوى من خلال تعديل القوالب باستخدام المحرر الذي تفضله، أو عن طريق بيئة التطوير المتكاملة IDE، كما يمكنك أيضًا عن طريق المحرر الموجود في النظام بصفة أساسية. وتُسهِّل وسوم القالب Template tags تصميم المحتوى، والمعلومات المعروضة على موقعك، وبالتالي ليس هناك حاجة لتكون خبيرًا وبارعًا بلغة البرمجة PHP لجعل تصميم موقعك مطابِقًا لرؤيتك. نظام متكامل ومحترم لمحتوى آمن ومضمون موقعك هو قلعتك يمتلك نظام الووردبريس ثماني سنوات من الخبرة المتراكمة بإدارة المواقع بثباتٍ وأمان، حيث تُكتشَفت الثغرات بسرعة كبيرة وذلك بفضل مجتمع المستخدِمين الكبير، والتقنيين المهتمين بالنظم مفتوحة المصدر، ثم تُصحَّح تلك الثغرات وتُكتب بما يسمى بالترقيعات patches، ليُرسِلها الفريق الأمني بتحديث يضاف إلى النظام. يأتي نظام الووردبريس بنظام التحديث الأساسي المدمج integrated core-update system، مما يساعد على إطلاق الترقيعات بنقرة زرّ واحدة. ولتحقيق الأمان، يُرشِّح النظام جميع مدخلات المستخدِم، ويُقيّد الوصول لعناوين الويب، ويملك نظامًا متكاملًا لمنح الأذونات، ولا يخزِّن كلمات المرور دون تشفير، وذلك لحمايتها من السرقة. ويستخدِم الووردبريس أكثر من عشرين مليون مستخدِم في WordPress.com، إصدارات اختبار بيتّا Beta test releases قبل إطلاقها رسميًّا، مما يعطي المُستخدِمين الآخرين الثقة بأن النظام مستقر . واجهات برمجة التطبيقات واسعة يعتمد لُبّ النظام على واجهة برمجة تطبيقات API الخاصّة به، والمعروفة باسم "dogfooding"، مما يساعد المطوِّرين على تحوير وتخصيص التطبيق ليتلاءم مع متطلباتهم. ويمكن تعديل العديد من الخصائص الأساسية في الووردبريس من خلال مرشحات filters وخطافات hooks يصنعها المطوِّر. وبالتالي، تمنح هذه الواجهات لووردبريس القدرة على التلاؤم مع النظم الموجودة، وهي ضرورية في البيئات الغنية بـالمداخن stove-pipe، والتي تملك عدة مهام، بحيث يعمل كلّ منها باستقلالية، ويؤدي وظيفةً معينة لحل مشكلة محدَّدة؛ كما تحتوي على بيانات خاصة بالمستخدِمين لا يمكن أن تكون مشتركةً مع أنظمة أخرى مناسب للشركات يُعَدّ أي تحدي قد تواجهه الشركة فرصةً لمعرفة إن واجه شخص آخر هذه المشكلات من قبل، وكتب حلًّا برمجيًّا لها. عُدِّل النظام ليتلاءم مع العديد من البيئات المختلفة، ممّا منحه خياراتٍ واسعة للتعامل مع المؤسَّسات، وتوفير آلية للمصادقة، وإدارة المستخدِمين، والحفاظ على سير العمل بكفاءة، والاحتفاظ بنُسخ احتياطية مجدوَلة؛ وهذه الخيارات هي جزء من الخيارات المتعلقة بالمؤسسات في النظام. التوافق هل أنت بحاجة لربط نظام الووردبريس بنظام آخر؟ يستخدِم نظام الووردبريس تقنيات تسمح للأنظمة المختلفة بالتواصل فيما بينها، مثل: المعايير المفتوحة للغة الترميز الممتدة XML، وXML-RPC. فقد صممت XML-RPC لتكون بسيطة قدر الإمكان، وقادرة على أداء المهام الصعبة والمعقدة في الوقت نفسه. ويدعم النظام أيضًا مجموعةً واسعةً من الواجهات البرمجية، مثل: MovableType، وMetaWeblog API، وBlogger API، بالإضافة إلى أنه بإمكانك استخدام المنصات المبنية على منصات أخرى، مثل: منصّة زيمبت Zempt المبنية على منصة Moveable Type. عملية صيانة بسيطة تُعدّ عمليتي التثبيت والتحديث في نظام الووردبريس من أسهل العمليات على الإطلاق، حيث يمكنك إنهاء التثبيت خلال خمس دقائق وبنقرة واحدة، وستعلم عند استخدامك للنظام أنك تستعمل أفضل وأسهل نظام، وتتساءل لماذا كل البرامج ليست بهذه البساطة. التوافق مع المعايير قطع فريق النظام شوطًا طويلًا للتأكد من توافُق كل الكود البرمجي مع معايير قياسيّة لرابطة شبكة الويب العالمية W3C، وتُعَدّ أهمية ما سبق، ليس التحقق من التوافق مع المتصفحات الحالية فقط، وإنما ليتلاءم مع أدوات الجيل القادم من المتصفحات. أكثر من مجرد مدونة بل أكثر بكثير كل من يقول أنّ نظام الووردبريس عبارة فقط عن منصة تدوين، يؤكِّد تمامًا أنه لم يتابع النمو المتفجر لنظم إدارة المحتوى خلال العامين الماضيين؛ وقوله هذا أشبه بقول أنّ شركة بي إم دبليو BMW مجرد شركة لصناعة المراوح. وفي الواقع أغلب استخدامات الووردبريس لم تكن في التدوين، وبإمكان الووردبريس تحويل حلمك إلى حقيقة، من خلال الدعم الداخلي لأشكال متنوعة من المنشورات، والتحكم بالتصنيفات. انشر افكارك على أوسع نطاق الموجزات يدعم الووردبريس كل من التقنيات: ATOM، وRSS 1.0، وRSS 2.0، وهذه التقنيات مستَعمَلة للحصول على الأخبار والمعلومات من المواقع تلقائيًّا دون الحاجة إلى زيارة المواقع التي استُمِدّت منها هذه المعلومات، حيث تمتلك كل صفحة في موقعك موجزًا يمكن للقُرّاء الاشتراك به، كما تمتلك موجزًا بأحدث المنشورات في المدونة، والتصنيفات، والتعليقات، ولأي شيءٍ تريده. وكلما زادت الخيارات المتاحة للقُرّاء لتتبُّع الأقسام المختلفة من موقعك، كلما كانت عملية نشر أفكارك حول العالم أسهل. وبدعم ووردبريس الكامل لتقنية RSS 2.0 ستتمكن من إضافة المقاطع الصوتية podcasts بسرعة. التواصل بين المواقع يأتي نظام الووردبريس مُجهزًا بأحدث تقنيات الاتصال بين المواقع وهي PingBack، وTrackBack. وكمثال على ذلك، إذا كتب أحمد مقالةً ما، واستضاف محمد هذه المقالة على موقعه، -والتي حصل عليها مثلًا من RSS-، وعلّق شخص ما على تلك المقالة من مدونة محمد، فسيصل تنبيه لأحمد، ليُعلمه بذلك التعليق، وذلك لأنه صاحب المقالة. كما يدعم النظام أداة Ping-O-Matic والتي تعمل على زيادة نسبة ظهور موقعك في محركات البحث. تنمية مجتمع المدونة بناء المجتمع نظام الووردبريس ليس جمعيةً عامة، وإنما يعمل على بناء مجتمعات حول المواقع من خلال التعليقات، والربط باستخدام تقنيتي PingBacks، وTrackBacks اللتان تُستَعملان لربط الأحداث بين المواقع المختلفة، ومساعدتك لتبقى على تواصل مع الجمهور، وتعزيز الصداقات. التعليقات يترك زوار الموقع تعليقاتهم إما من داخل موقعك أو من مواقعهم من خلال تقنيتيّ PingBacks، وTrackBacks، ويمكنك تفعيل أو تعطيل التعليقات لكل منشور. الحماية من الرسائل المزعجة يملك الووردبريس أدوات قويةً لتوفير جدار الحماية، مثل: القائمة السوداء المدمجة integrated blacklist، ومدقِّق البروكسي المفتوح open proxy checker، وذلك لإدارة وحذف التعليقات المزعجة على المدونة. وهناك سلسلة طويلة من الإضافات التي بإمكانها الارتقاء بالمدونة في هذا الجانب. نظام تسجيل كامل للمستخدمين يمتلك الووردبريس نظام تسجيل داخلي للمستخدِمين، حيث يمكنك تفعيله والسماح للمستخدِمين بتعديل ملفاتهم الشخصية، وإضافة تعليقات موثوقة في مدونتك، ويمكنك إيقاف التعليقات أمام المستخدِمين غير المسجَّلين. وهناك ملحقات تحجب المنشورات عن المستخدِمين ذوي المستوى الأدنى في النظام. وسوم لغة HTML المسموح بها ليس كل الأشخاص سيئين، لكن يجب الحذر من أولئك السيّئين في موقعك، وذلك من خلال تحديد وسوم لغة HTML المسموح بها في موقعك. والوسوم الافتراضيّ المسموح بها في الووردبريس خيار عاقل للسماح باستخدام لغة HTML في التعليقات دون المساس بسلامة البيانات أو الاستضافة. الأذونات يوفر النظام مجموعةً من الأدوات الإدارية التي تُبقِي المزعجين والمخرّبين تحت الضبط والمراقبة، حيث تمكنك من إدارة كل مما يأتي: التعليقات قبل نشرها على المدونة. التعليقات التي تحتوي على كلمات ميّنة حُدِّدت مسبقًا. التعليقات التي نُشِرت من عناوين بروتوكول الإنترنت IP addresses محددة سابقًا. التعليقات التي تحتوي على أكثر من العدد المسموح به من الروابط. التنبيهات يُبقِي نظام الووردبريس مديري المدونات على اطلاع دائم بالتعليقات الجديدة، والتعليقات التي تحتاج لإذن، حيث يرسِل التنبيهات إلى البريد الإلكتروني. الترخيص وبيئة التشغيل والفلسفة العامة للنظام الترخيص نظام الووردبريس مرخص تحت رخصة جنو العمومية ذات الإصدار الثاني GPLV2، أو الإصدار الأحدث، والتي تعطي المستخدِم سلسلةً من الحريات، وهي: حرية تشغيل البرنامج لأي هدف كان. حرية دراسة آلية عمل البرنامج، وتحويره لأهداف خاصة. حرية إعادة التوزيع. حرية توزيع نُِسخ من نسختك المعدَّلة من النظام. بيئة التشغيل صُمِّم الووردبريس بلغة PHP إصدار 7.2، أو الإصدار الأحدث، وبقواعد بيانات MySQL إصدار 5.6، أو الإصدار الأحدث، ووحدة إعادة كتابة العناوين mod_rewrite الموجودة في خادم الويب Apache. فلسفة النظام طُوِّر نظام الووردبريس اعتمادًا على مجموعة من المبادئ الثابتة، وهي: الإبداع. التصميم للجميع. يعتمد على القرار المناسب وليس هناك تقيد بالخيارات. نظيف، ومتكامل، وسلس. المحافظة على البساطة. المواعيد النهائية ليست عشوائية. الإنصات للطلبات ذات الجمهور القليل. يمتلك النظام وثيقة الحقوق. ترجمة -وبتصرّف- للمقال WordPress Features من موقع WordPress.org1 نقطة
-
أهلا وسهلا اخي الكريم Malik mmm virtual machine هذا المسطلح يطلق علي نظام التشغيل الذي يعمل بشكل وهمي بمعني يوجد تقنية اسمها Virtualization وهذة التقنية تسمح في تقسيم موارد السيرفرات كمثال يوجد سيرفر هاردوير قوي جدا الكثير من الرامات والهارديسك والبروسيسور قوي جدا تقوم شركة الاستضافة بتثبيت شئ يقوم بتقسيم كل هذة الامكانيات الهائلة من السيرفر الي سيرفرات وهميه ب موارد محددة حسب اختيارهم تقوم انت بطلب سيرفر ب رامات مثلا 8 جيجا و بروسيسور معين و HD 500 جيجا مثلا فتقوم هذة الشركة باستخدام تقنية ال فيرتوليزيشن في تحديد امكانيات حثب التي قمت باختيارها ويقومو بتخصيصها لك كانها سيرفر عباره عن جزء من امكانيات السيرفر الحقيقي ولاكن مخصصة لك يمكنك القرائة اكثر عن هذة التقنية لتوضح لك بشكل افضل يجب ان تقوم باضافة بعض الامور من اجل ان استطيع ان اساعدك ان كنت تريد ان تقوم بتعلم الامور وفعلها بنفسك اما ان كنت تريدني ان اقوم بهذة المهمه بدلا منك ف بامكانك توظيفي عن طريق موقع مستقل1 نقطة