-
المساهمات
847 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Salah Eddin Beriani2
-
يمكنك أخذ الname الخاصة بالملف الذي سيحذف ثم في ال modal يمكنك وضع صندوق ادخال يضع فيه المستخدم اسم الملف المراد حذفه عند انبثاق الmodal واذا تساوى مع الملف الذي أراد حذفه تعمل enable لزر التأكيد هكذا أنت لن تحتاج تعقيد الأمر عليك برمجيا
- 3 اجابة
-
- 1
-
أخي يوجد هذا الموقع يشرح git بواجهة تفاعلية https://learngitbranching.js.org/ وفي يوتيوب يمكنك البحث عن git بالعربية وستجد شروحات بالعربية قد تساعدك
-
في الحقيقة يوجد مثال في التوثيق الرسمي ل mongodb عن كيفية تحقيق المطلوب و هو عن طريق انشاء counter collection db.counters.insert( { _id: "userid", seq: 0 } ) قم بإنشاء دالة getNextSequence تقبل اسم التسلسل. تستخدم الدالة طريقة findAndModify لزيادة قيمة seq وإرجاع هذه القيمة الجديدة: function getNextSequence(name) { var ret = db.counters.findAndModify( { query: { _id: name }, update: { $inc: { seq: 1 } }, new: true } ); return ret.seq; } ثم استخدم الوظيفة getNextSequence أثناء الإدراج db.users.insert( { _id: getNextSequence("userid"), name: "salah" } ) db.users.insert( { _id: getNextSequence("userid"), name: "ahmed" } ) db.users.find() { _id : 1, name : "salah" } { _id : 2, name : "ahmed" }
- 3 اجابة
-
- 1
-
في مجالنا ليس ضروري جدا ان تتبع مسار معين في تلقيك للمعلومات لكن ينصح بعدم الخلط أيضا والمسار التي يتوفر في دورات الأكاديمية منصوح به عادة المتعلم يبدأ ب تلقي معلومات حول الحاسوب وأليات العمل فيه تعلم Html و css تعلم javascript تعلم أليات عمل github بالطبع النقاط فوق تنطبق على مطور ويب وبعدهم انت لن تكون مقيد ويمكنك الاختيار بنفسك
-
تكملة على الاجابات فوق حول ال branch فكما ذكر الاخوة يمكنك انشاء branch أي فرع جديد عن طريق git checkout -b new الأمر فوق ينشأ فرع جديد وينقلك له لاجراء تغييرات مثلا لاظافة خاصية جديد ولما تنتهي من انشاء الخاصية الجديدة وتتأكد أنها تعمل يمكنك يمكنك التنثل الى الفرع الرئيسي master عن طريق git checkout master ثم يمكنك دمج الخاصية الجديدة التي أنشأتها في الفرع الرئيسي master git merge new
- 3 اجابة
-
- 1
-
هذا لأن node لا يدعم es6 syntax بعد ولكن اذا كنت تريد ذلك يمكنك أن تثبت مكتبة esm فهي تفعل لك استخدام es6 في node npm install esm بعدها عدل start script في ملف package.json { "name": "My-app", "version": "1.0.0", "description": "Some Hack", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node -r esm index.js" }, }
-
تحديث المكتبات برمجيا فأنت تحتاج ل npm نفسه مستورد لديك const npm = require('npm'); npm.load({'save': true}, function () { npm.commands.outdated(function (err, rawOutdated) { const outdated = rawOutdated.map(function (module) { return module[1]; }); npm.commands.install(outdated, function(err, d) { }); }); }); يمكنك استبدال save ب save-dev اذا أردت ذلك
-
يمكنك الاشارة الى مستند اخر باستخدام ObjectId const bookSchema = new Schema({ title: String, writtenBy: { type: mongoose.Schema.Types.ObjectId, ref: 'Author' }, }); كما يمكنك الاشارة الى عدة مستندات بجعل الكاءن array يحتوي على مجموعة من الاشارات بافتراض مثلا أن المقال شارك في كتابته عدة كتاب const bookSchema = new Schema({ title: String, writtenBy: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Author' } ], });
-
اظن انها متعلقة بال permission للمجلد اذا كنت تستخدم linux جرب هذه الأوامر على مجلد المشروع sudo chmod -R 755 project/ cd project sudo node server
- 2 اجابة
-
- 1
-
لنفترض انه لديك دالة c++ char const* greet() { return "hello, world"; } يمكن أن تتعرض لبايثون بكتابة غلاف Boost.Python: #include <boost/python.hpp> BOOST_PYTHON_MODULE(hello_ext) { using namespace boost::python; def("greet", greet); } >>> import hello_ext >>> print hello_ext.greet() hello, world
-
توفر الوحدة الأساسية للعملية طريقة سهلة تتيح لك الخروج برمجيًا من برنامج Node.js وهي process.exit. عندما يقوم Node.js بتشغيل هذا الأمر ، يتم إجبار العملية على الإنهاء على الفور. هذا يعني أن أي رد اتصال معلق ، أو أي طلب شبكة لا يزال قيد الإرسال ، أو أي وصول إلى نظام الملفات ، أو عمليات الكتابة إلى stdout أو stderr - سيتم إنهاء كل ذلك بشكل غير لائق على الفور. إذا كان هذا مناسبًا لك ، فيمكنك تمرير عدد صحيح يشير إلى نظام التشغيل لكود الخروج: process.exit(1) رمز الخروج افتراضيًا هو 0 ، مما يعني النجاح. رموز الخروج المختلفة لها معنى مختلف ، والذي قد ترغب في استخدامه في نظامك الخاص لجعل البرنامج يتواصل مع البرامج الأخرى. في كثير من الأحيان مع Node نبدأ الخوادم ، مثل خادم HTTP هذا: const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Hi!') }) app.listen(3000, () => console.log('Server ready')) في هذه الحالة ، تحتاج إلى إرسال إشارة SIGTERM للأمر ، والتعامل مع ذلك باستخدام معالج إشارة العملية: const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Hi!') }) const server = app.listen(3000, () => console.log('Server ready')) process.on('SIGTERM', () => { server.close(() => { console.log('Process terminated') }) }) SIGKILL هي الإشارات التي تخبر العملية بالإنهاء فورًا ، وتتصرف بشكل مماثل مثل process.exit (). يمكنك إرسال هذه الإشارة من داخل البرنامج ، في وظيفة أخرى: process.kill(process.pid, 'SIGTERM')
-
الاحتمال الأول هو تغيير مالك المجلد "/ usr / local / lib / node_modules" لتعيين حساب المستخدم الخاص به. أول شيء هو معرفة اسم المستخدم الخاص بك أولاً. في Linux ، يمكنك رؤية ذلك ببساطة عن طريق تشغيل Terminal. إنه موجود قبل علامة "@" . يمكنك بعد ذلك تغيير اسم مستخدم المجلد باستخدام الأمر "chown". يسمح لك الخيار "-R" بتغيير المستخدم فقط ، دون تحديد المجموعة. sudo chown -R utilisateur /usr/local/lib/node_modules في Linux ، يوجد متغير البيئة "$ USER" ، والذي يتوافق مع المستخدم الحالي. بهذه الطريقة ، يمكنك نسخ الأمر مباشرة إلى جهازك sudo chown -R $USER /usr/local/lib/node_modules . الحل الثاني ، الذي سيؤثر على النظام أقل من تغيير مالك المجلد ، هو إنشاء مجلد جديد في الدليل الرئيسي الخاص بك ، والذي سيحتوي على المكتبات المثبتة مع NPM. قم أولاً بإنشاء الدليل: mkdir ~/.my-modules-npm لكي يستخدم NPM هذا الدليل ، نستخدم الأمر "npm config" ، والذي يسمح لك باسترداد وتغيير تكوين NPM. يجب تعديل متغير "البادئة" للإشارة إلى الدليل الجديد: npm config set prefix '~/.my-modules-npm' لكي يعمل هذا التكوين ، سيكون من الضروري حفظ الدليل في متغير "PATH" في النظام. للقيام بذلك ، افتح الملف "~ / .profile" باستخدام محرر نصي وأضف السطر التالي: export PATH=~/.npm-global/bin:$PATH ثم استخدم الأمر "source" لقراءة الملف وتفسير الأمر : source ~/.profile عليك فقط تثبيت حزمة دون استخدام الأمر "sudo" للتحقق من أنها تعمل: npm install ....
-
يمكنك تنفيذ الاوامر التالية لحل المشكلة $ mysql -u root -p Enter password: (enter your root password) mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'; mysql> FLUSH PRIVILEGES; mysql> quit كما يمكنك أيضا انشاء مستخدم جديد واستخدامه للاتصال CREATE USER 'foo'@'localhost' IDENTIFIED WITH mysql_native_password BY 'bar';
-
اذا قمت باستخدام javascript مسبقا فستعرف انه هناك شئ يطلق عليه typscript والذي يعطي قوة ال typed language ل javascript وذلك يوجد ايضا في python بحكم أن python مشابهة ل javascript فكلاهما ديناميكي حسنا لنرجع لtype hints ولنشرحها بمثال def ceaser(text, key): result = "" for char in text: c = ord(char) enc_char = chr(c + key) result += enc_char return result فوق لدينا دالة تشفير ceaser وهي دالة مشهورة تاخذ string و number للتشفير وترجع string يمكننا تعريف اولا المعطيات بنوعها def ceaser(text:str, key:int): result = "" for char in text: c = ord(char) enc_char = chr(c + key) result += enc_char return result يمكننا تعريف صنف نتيجة الدالة def ceaser(text, key) -> str : result = "" for char in text: c = ord(char) enc_char = chr(c + key) result += enc_char return result كما يمكننا تعريف نوع المتغيرات def ceaser(text, key) -> str : result:str = "" for char in text: c:int = ord(char) enc_char:str = chr(c + key) result += enc_char return result
- 2 اجابة
-
- 1
-
تحتاج تعمل stringfy لل object console.log(JSON.stringify(obj)) أو يمكنك استخدام console.dir مباشرة على ال object console.dir(object) ويوجد أيضا console.table console.table(object)
- 3 اجابة
-
- 2
-
تتضمن الوحدة النمطية 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();
- 3 اجابة
-
- 1
-
حاليا لا أظن ان هناك عملية بسيطة للقيام بذلك ولك يمكنك ذلك عن طريق استخدام شيفرة مشابهة db.coll.find({_id:id}).forEach( function(doc) { const arr = doc.address.localAddresses; const length = arr.length; for (var i = 0; i < length; i++) { if( arr[i]["street"] === 'Ava Revenue-111'){ delete arr[i]["street"]; } } db.coll.save(doc); });
-
دعنا ننظر في الحالتين هنا ل save و indert 1) وجود _id في المستند. 2) عدم وجود _id في المستند. عندما لا يتواجد id في المستند المحفوظ كلاهما يعمل نفس العمل. عند تواجد id هنا يكمن الاختلاف insert هنا ستتحقق من وجود مستند في collection بنفس id اذا تواجد سترجع لك خطأ لتخبرك بذلك E11000 duplicate key error index: أما save فستعمل اتبدال لكامل المستند وتحفضه بنفس ال id المدرجة للحفظ عدا هذا فلا اختلاف كبير بينهما
- 1 جواب
-
- 1
-
هذا طبيعي جدا صحيح انت تعلمت كيفية عمل بعض الأشياء في js ك type و loops و conditions الخ...ولكنك فقط أكملت المرحلة الاولى الأن يجب أن تتدرب وتوضف ما تعلمته لكي تجعل الشيفرة منسقة وتعمل مع بعض والنصيحة العامة هي اذا رأيت شيفرة js وصعب عليك فهمها ارجع الى الأساسيات فانت لم تتعلم بعد اذا رأيت شيفرة js وفهمتها ولكن لا يمكنك كتابة شيفرة مماثلة لوحدك فأنت فقط تحتاج للتدريب على الأساسايت التي تعلمتها
-
لقد اكتشفت مؤخرا مكتبة تجعل ال pagination في mongoose سهل جدا وهي mongoose-paginate-v2 وهذه الشيفرة تلخص الاستخدام const mongoose = require('mongoose'); const mongoosePaginate = require('mongoose-paginate-v2'); const mySchema = new mongoose.Schema({ /* your schema definition */ }); mySchema.plugin(mongoosePaginate); const myModel = mongoose.model('SampleModel', mySchema); myModel.paginate().then({}); // Usage المكتبة هي بمثابة plugin ل mongoose ويمكنك أن تعطي paginate كاءن option و query var query = {}; var options = { select: 'title date author', sort: { date: -1 }, populate: 'author', lean: true, offset: 20, limit: 10, }; Book.paginate(query, options).then(function (result) { // ... });
- 3 اجابة
-
- 3
-
بالنسبة للتشفير و فك التشفير فاللأمر جد بسيط <?php // كلمة السر $plaintext_password = "Password@123"; //تشفيرها $hash = password_hash($plaintext_password, PASSWORD_DEFAULT); // طبعها echo "Generated hash: ".$hash; ?> <?php //كلمة السر التي ادخلها المستخدم $plaintext_password = "Password@123"; // كلمة السر التي شفرناها ونجلبها من مكان التخزين كقاعدة البيانات $hash = "$2y$10$8sA2N5Sx/1zMQv2yrTDAaOFlbGWECrrgB68axL.hBb78NhQdyAqWm"; // نقارن بينهما $verify = password_verify($plaintext_password, $hash); // Print the result depending if they match if ($verify) { echo 'كلمة سر صحيحة'; } else { echo 'كلمة سر خاطئة '; } ?> اذا كنت مبتدئ حاول أن لا تسارع في تعلم أشياء كثيرة أعطي نفسك وقت للاستيعاب وركز على الفهم والتعلم ولا تركز عن السرعة التي تتعلم بها بالتوفيق.