-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
لحساب تكرار العناصر، يتوجب بناء بنية معطيات تمكننا من عد العناصر، مثل مصفوفة أو Map: يمكن حساب التكرار للعناصر قبل إضافتها للمكدس. #include<bits/stdc++.h> using namespace std; // حساب التكرارات map<int, int> freqMap; // تعريف المكدس stack<int> stack; // حساب التكرارات void push(int x) { // تكرار of x freqMap[x] = freqMap[x] + 1; stack.push(x); } int main() { // إضافة العناصر للمكدس push(4); push(6); push(7); push(6); push(4); push(8); } لطباعة عناصر Map تمر عليهم بحلقة for.. for (auto& t : freqMap) std::cout << t.first << " " << t.second << "\n"; يمكن الإعتماد على الشيفرة السابقة وإضافتها لشيفرة المكدس لديكِ. الطريقة السابقة هي أفضل طريقة لأنه في حال أردنا حساب نفس المنطق بعد إضافة العناصر سيتوجب علينا إفراغ المكدس و إعادة إضافة العناصر له، لأنه كما نعلم أننا نستطيع الوصول للعنصر القمي فقط في المكدس top
- 1 جواب
-
- 1
-
السؤال ينقصه الكثير من التفاصيل. ما هي لغة البرمجية ونوع قاعدة البيانات؟ بشكل عام في الواجهة الأماية يمكن عمل form في HTML يرسل ملف الصورة إلى المخدم ليتم حفظها في قاعدة البيانات، ثم يتم استعراضها عند الطلب. كود HTML لإراسل ملف: <!DOCTYPE html> <html> <body> <!-- | الملف المستقبل للطلبية | طريقة الإرسال POST | هنا خاصية توزيع البيانات على عدة حزم صغيرة لنتمكن من إرسالها --> <form action="upload.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" value="Upload Image" name="submit"> </form> </body> </html> شيفرة PHP: <?php $target_dir = "uploads/"; // استقبال الملف $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); $uploadOk = 1; $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // نتأكد من نوع الملف هل هو صورة if(isset($_POST["submit"])) { $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); if($check !== false) { echo "File is an image - " . $check["mime"] . "."; $uploadOk = 1; } else { echo "File is not an image."; $uploadOk = 0; } } // هل الملف مخزن مسبقا if (file_exists($target_file)) { echo "Sorry, file already exists."; $uploadOk = 0; } // التأكد من حجم الملف if ($_FILES["fileToUpload"]["size"] > 500000) { echo "Sorry, your file is too large."; $uploadOk = 0; } // تحديد نوع اللاحقة المسموحة if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $uploadOk = 0; } // التأكد من إكتمال رفع الملف if ($uploadOk == 0) { echo "Sorry, your file was not uploaded."; // كل شيئ بخير لذلك نخزن الملف } else { if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded."; } else { echo "Sorry, there was an error uploading your file."; } } ?>
-
ليكن لدينا قائمة select نحدد دالة لتتبع التغييرات فيها عند التغيير onchange تقوم هذه الدالة بتغيير الرابط link وهو متغير يخزن الرابط المراد فتحه. ونربط الزر button بحدث تغيير رابط الصفحة من خلال الخاصية location.href <html> <select id="sel" onchange='myFunction()'> <option value="http://www.google.com">google</option> <option value="http://www.w3schools.com">w3s</option> </select> <button onclick='openPage()'>Continue</button> <script> var link = "http://www.google.com"; function myFunction() { link = document.getElementById('sel').value; } function openPage() { window.location.href = link; } </script> </html>
-
يمكن باستخدام الدالة linalg.norm import numpy point1 = numpy.array((a, b, c)) point2 = numpy.array((x, y, z)) dist = numpy.linalg.norm(point1-point2) أو عن طريق dot: temp = point1 - point2 sum_sq = np.dot(temp.T, temp) print(np.sqrt(sum_sq)) هذه هي الطرق للحساب في Euclidean distance
- 2 اجابة
-
- 1
-
تحدث المشكلة بسبب تغير طول القائمة خلال دوران الحلقة مع حذف العناصر المتكرر فعندما يقصر طول القائمة ويصبح أصغر من دليل المحرف o الأخير، لن تصل دليل الحلقة لهذا الدليل ضمن القائمة ما يمنع حذف العنصر. يمكن تطبيق نفس الشيفرة على المثال "oooo" مثلا الذي يحوي 4 محارف صوتية، ونتيجة التنفيذ أنه سيتم حذف فقط محرفين والنتيجة "oo" وعندها دليل الحلقة سيكون أكبر من طول المصفوفة و ستنتهي الحلقة قبل حذف كل المحارف. الحل بتطبيق دالة الاستبدال كما في الإجابة السابقة. أو استعمال الفلتر filter: text = "Hellooo, world! Words!" def removeVowel(text): textlist = list(text.lower()) for char in list('aeiou'): #textlist = [i for i in textlist if i != char] # ممكن هذه الطريقة أيضا textlist = list(filter(lambda a: a != char, textlist)) return "".join(textlist) print(removeVowel(text)) # hll, wrld! wrds!
- 4 اجابة
-
- 2
-
إن الدالة append لاتعيد أي قيمة، نمط الإعادة لها هو NONE والتي يتم تقييمها ل false فقط في هذه الحالة لأنها ليست true وعكس true هو false .. print u.append(1) None => print not None # not None == True True هذه الدالة تعدل على القائمة الأصلية التي تم الاستدعاء عليها، ولا تعيد شيئاً.
- 4 اجابة
-
- 1
-
عندما نفتح CMD يتم تحميل بيئة العمل ومتغيرات بيئة النظام في تلك اللحظة system environment ويتم تثبيت الإصدارات للبرامج، فإذا قمت بأي تعديل وكان CMD قيد التشغيل سيتم عرض البيانات القديمة. أي عليك إغلاق كافة نوافذ cmd قبل تجريب التعديلات. بالنسبة لإدارة إصدارات node يوجد برمجية NVM = node version manager يمكنك تثبيتها لمختلف أنظمة التشغيل ومنها windows وتسمح لك بتثبيت عدة إصدارات لـ node والتنقل بينهم. يمكنك تحميل البرمجية من هذا الرباط: nvm/releases. واتباع التوثيق من هنا: nvm-windows
-
إن كنت تستخدم MacOs Catalina فيمكن اتباع الخطوات التالية: تعديل على الصلاحية sudo chown -R `id -un` /tmp/mongodb-27017.sock تحديد المسار mongod --dbpath /usr/local/var/mongodb ضبط الإعدادات mongod -f /usr/local/etc/mongod.conf //or أو mongod --config /usr/local/etc/mongod.conf ثم تشغيل الخدمة: brew services run mongodb-community
-
يمكن الاعتماد على المؤشر iterator: حيث نقوم ببناء الصنف بطريقة مشابهة للتالي: class Counter(object): # تهيئة العنصر def __init__(self, start, stop): self.start = start self.stop = stop # تعريف المؤشر def __iter__(self): return self # الدالة لجلب العنصر التالي def __next__(self): # next in Python 2 # اختبار الشرط if self.start >= self.stop: raise StopIteration current = self.start * self.start self.start += 1 return current iterator = Counter(a, b) ولجلب العنصر الحالي يمكن إضافة الدالة current التي تعيد start ألمعدلة: def current(self): return self.start وبطريقة أخرى: كما يمكن الاستفادة من مفهوم المولد generator والكلمة المفتاحية yield: def counter(start, stop): for i in range(start, stop): yield i Counter = counter(3, 9)
- 3 اجابة
-
- 2
-
الخطأ ENOSPC يظهر عندما لا تتوفر مساحة على القرص. حاول التنفيذعن طريق هذا الأمر: echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p ثم: // في حال Arch Linux أضف السطر التالي to /etc/sysctl.d/99-sysctl.conf: fs.inotify.max_user_watches=524288 // التنفيذ sysctl --system حاول حذف الملفات المؤقتة مثل temp كما يمكن حذف كاش npm: npm cache clear
- 2 اجابة
-
- 1
-
لايحدث استجابة عند نقر ctrl + c بسبب أن الحدث الخاص بها مختلف وليس exit بل هو SIGINT: //catches ctrl+c event process.on('SIGINT', exitHandler.bind(null, {exit:true})); يمكن أيضا استخادم الأحداث التالية: // catches "kill pid" قتل العملية // nodemon restart SIGUSR1 SIGUSR2 // حدوث استثناء uncaughtException يمكن اختصار جميع الحالات: [`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => { process.on(eventType, cleanUpServer.bind(null, eventType)); })
-
يمكن الإشارة للمؤلف بتعريف الحقل writtenBy أن يكون له مرجعية بهذه الطريقة populate: var bookSchema = new Schema({ title: String, writtenBy: {type: mongoose.Schema.Types.ObjectId, ref: 'Author'}, }); طريقة أخرى بإدراج authorSchema مباشرة في الحقل (نفس المستند) المطلوب باتباع مفهوم Subdocuments: var bookSchema = new Schema({ title: String, writtenBy: authorSchema , });
-
المشكلة هنا تكمن في أن نمط البيانات 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 وتحوله لسلسلة نصية قبل ترميزه على هيئة JSON
- 3 اجابة
-
- 2
-
إن هذه المسألة تصنف مع مسائل Egg Dropping Puzzle | DP (مسألة إسقاط البيضة) حيث يكون لديك عدد من البيوض (عدد محاولات السقوط) و عدد الطوابق التي تختبر منها أعلى طابق يمكن للبيضة تحمل هذا السقوط. أي غن حل المسألة هذه ليست بالبحث الثاني، بل البرمجة الديناميكية. أرجو تعلم هذه التقنية وإعادة محاولة حل المسألة. شرح مبسط للمشكلة: # k بيضة # N طابق # إرجاع أفضل نتيجة في هذه الحالة def dp(K,N): res = 10000 for i in range(1,N+1): res = min(res,رمي البيض على الطابق الأول هذه المرة) return res ولكل رمي، إما أن تنكسر البيضة أو تبقى سليمة: res = min(res,max(dp(K-1,i-1),# كسر عدد البيض -1 dp(K,N-i)# لم ينكسر ) + 1 ) في هذه الحالة يتم حساب جميع الإحتمالات اللممكنة لكل طابق، ثم يكون الجواب بالقيمة الأقل لعدد المحاولات.
-
مشروعك ينقسم لجزئين: رفع التطبيق على متجر تطبيقات مثل Google Play وتكلف حساب مطور ب25$ الاستضافة التي سترفع عليها الفيديوهات والتي سيتصل عليها التطبيق لتحميل البيانات، حيث عليك الاشتراك باستضافة فيها مساحة تخزين كافية لحجم فيديوهاتك. يوجد استضافات خاصة ببث الفيديو تدعى Online Video Host مخصصة لعمل بث فيديو، ومعظمها يحوي مكتبات برمجية للتعامل مع هذه الاستضافات والتي يحتاجها التطبيق SDK = حزمة برمجيات مساعدة للتطوير، ابحث عنهم واعرض الميزات وكلفة الاشتراك بهم.. لمعرفة الكلفة بدقة، تحتاج لشخص يعمل بهذه التقنيات مثلاً مبرمج، ويمكنك أن تحجده على مواقع العمل الحر مثل مستقل وخمسات.
-
عند تشغيل مخدم node كما هو الحال لبقية البرامج يتم تمرير البيانات للعملية process المسؤولة عن تشغيل البرنامج. يتم تخزين البيانات في مصفوفة ضمن: process.argv حيث عند كتابة الأمر البيانات الممرة تكون على شكل مصفوفة: $ node argv.js one two three four five =>>> [ 'node', '/home/avian/argvdemo/argv.js', 'one', 'two', 'three', 'four', 'five' ] للحفاظ على المتغيرات فقط يمكن تنفيذ slice: var myArgs = process.argv.slice(2); console.log('myArgs: ', myArgs); ==>> myArgs: [ 'one', 'two', 'three', 'four', 'five' ] بعدها يمكن الوصول للوسيط الأول ب myArgs[0] myArgs[1] // الثاني
- 3 اجابة
-
- 1
-
هل يمكنك توضيح بنية قاعدة البيانات لديك؟ وإضافة تفاصيل أكثر. ماذا تقصد بالصيغة؟
- 3 اجابة
-
- 1
-
يوجد خوارزمية باستخدام شجرة Trie وهي شجرة متعددة الأولاد و لكل مستوى لها سلف مطابق أي كل عقدة مشتركة بين سلسلتين نصيتين تمثل حرف مشترك بينهما مثلا: aaa aab السلسلتين السابقتين يتم تخزينهم في 4 عقد وهي الجذر a ثم أول ولد a وله ولدين a - b إذا شجرة من 3 مستويات و4 عقد. يمكن تعلمها من موسوعة حسوب: Algorithms/tries - شجرة البادئات وهي أفضل تمثيل للقاموس. root / \ \ t a b | | | h n y | | \ | e s y e / | | i r w | | | r e e | r ويمكن البحث عن Pattern Searching using a Trie of all Suffixes
- 1 جواب
-
- 1
-
يمكن ذلك من خلال تطبيق aggregate: db.collection.aggregate([ {"$group" : { "_id": "$username", "count": { "$sum": 1 } } }, {"$match": {"_id" :{ "$ne" : null } , "count" : {"$gt": 1} } }, {"$project": {"username" : "$_id", "_id" : 0} } ]); سيتم من خلال الاستدعاء السابق جلب جميع المستندات التي تعداد تجميع الخاصية username لها أكبر من 1
-
في حالتك تحتاج لتشفير بسيط حيث تكون مكتبة التشفير من ضمن PHP حيث استخدم الدالة: str_rot13 حيث يمكن إدخال النص و عكسه فيها و سيتم التبديل بينهما <?php echo str_rot13("Hello World"); // -> Uryyb Jbeyq echo "<br>"; echo str_rot13("Uryyb Jbeyq"); // -> Hello World ?> الشخص الذي لديه النص المشفر في حال تطبيقه للدالة سيتم فك التشفير بشكل صحيح.