-
المساهمات
3552 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
34
إجابات الأسئلة
-
إجابة سمير عبود سؤال في ما الفرق بين الرصيد المتاح و الرصيد القابل للسحب ؟ كانت الإجابة المقبولة
مرحباً ...
الرصيد المُتاح هو الرصيد الذي يُمكنك إستخدامه لفتح مشاريع جديدة في مُستقل
أما الرصيد القابل السحب فهو المبلغ المتبقي من الأرباح التي حققتها في مستقل و يمكنك سحبها .
بالتوفيق
-
إجابة سمير عبود سؤال في طلب التواصل خارج منصة العمل كانت الإجابة المقبولة
مرحباً ...
حتى تحافظ المنصة على حقوق الطرفين تمنع التواصل خارج المنصة فإذا ما حدث خلاف بين الطرفين يُمكن الرجوع إلى صفحة نقاش المشروع و تسوية الخلاف. لذلك تجنب قدر المستطاع التواصل مع العميل خارج المنصة حتى تضمن حقوقك
-
إجابة سمير عبود سؤال في كيفية ترجمة النصوص التي تأتي من قاعدة البيانات للغة العربية كانت الإجابة المقبولة
مرحباً مروان ...
الفكرة أنك تقوم بتخزين الخانة التي تريد ترجمتها بأكثر من لغة في قاعدة البيانات مثلا name_ar و name_en بحيث في الخانة name_ar تُخزن الإسم باللغة العربية و في الخانة name_en تُخزن الإسم باللغة الإنجليزية و عندما تريد أن تعرض البيانات يُمكنك عرض الإسم حسب لغة المُستخدم .
الفكرة الثانية أنك مثلا تريد عمل ترجمة لجدول users فتقوم بجعل كافة البيانات التي تحتمل ترجمة في جدول ثاني و تُسميه user_translations بحيث الجدول الأول يحتوي على البيانات التي لا تحتاج ترجمة و الجدول الثاني يحتوي على البيانات التي تحتاج ترجمة بحيث تربط الجدولين معاً بعلاقة 1 لأكثر يعني صف واحد من جدول users يكون له صف أو أكثر من جدول user_translations مثلا نريد ترجمة خانة إسمها name سيكون جدول user_translations يحتوي على الخانات التالية:
id user_id name locale الخانة locale سنُخزن فيها لغة الصف فمثلا لو كنا نريد اللغتين العربية و الإنجليزية سيكون لكل صف من الجدول الأساسي صفين من الجدول الثاني صف يتم تخزين فيه الإسم باللغة العربية و تكون الخانة locale تحتوي على ar و صف يتم تخزين فيه الإسم باللغة الإنجليزية و تكون الخانة locale تحتوي على en
بالتوفيق
-
إجابة سمير عبود سؤال في حساب مجموع و معدل عناصر مصفوفة عددية بلغة c++ كانت الإجابة المقبولة
مرحبا عباس ...
يُمكنك كتابة البرنامج بلغة c++ بهذا الشكل :
#include <iostream> using namespace std; // دالة لقراءة عناصر مصفوفة من المُستخدم void readArray(int arr[], int n) { for (int i = 0; i < n; ++i) { cout << "Enter El[" << i << "]: " << endl; cin >> arr[i]; } } // دالة لطباعة عناصر مصفوفة void printArray(int arr[], int n) { for (int i = 0; i < n; ++i) { printf("%d ", arr[i]); } } // دالة لجمع عناصر مصفوفة عددية int sum(int arr[], int n) { int sum = 0; for (int i = 0; i < n; ++i) { sum += arr[i]; } return sum; } // دالة لحساب معدل عناصر مصفوفة عددية float avg(int arr[], int n) { return (float) sum(arr, n) / n; } int main() { // تعريف متغير سنُخزن فيه طول المصفوفة int n; cout << "Enter n: " << endl; // طباعة رسالة للمستخدم تخبره بإدخال طول المصفوفة cin >> n; // تخزين العدد المُدخل من طرف المُستخدم في المتغير n int array[n]; // تعريف مصفوفة عددية طولها هو العدد الذي أدخله المُستخدم readArray(array, n); // قراءة عناصر المصفوفة printArray(array, n); // طباعة عناصر المصفوفة cout << "\nSum = " << sum(array, n) << endl; // طباعة المجموع cout << "Moy = " << avg(array, n); // طباعة المُعدل } يُمكنك تجربة البرنامج من خلال هذا الرابط
بالتوفيق
-
إجابة سمير عبود سؤال في مشكلة فى برمجة زر البحث JAVA كانت الإجابة المقبولة
مرحباً أحمد ..
الخطأ في الدالة fillToJTable لأن الشرط :
if("select ".equals(SPart)) { strSelect = tableNameOrStatment; } else { strSelect = "select * from " + tableNameOrStatment; } لا يتحقق و بماأن الشرط لا يتحقق فإنه يدخل في البلوك else و بالتالي يُصبح الإستعلام خاطئ بهذا الشكل :
select * from select * from store و هذا مايشير إليه الخطأ الخاص ب syntax لغة sql .
لماذا لا يتحقق الشرط لأنك تستخدم الدالة substring بطريقة لا تُحقق الشرط دعنا نفهم ما مفهوم الدالة هذه الدالة تقوم بإقتطاع جزء من سلسلة محارف نصية بحيث تستقبل معاملين الأول ضروري و الثاني إختياري بحيث المعامل الأول هو بداية الإقتطاع و الحرف الخاص بهذا المعامل يدخل في الإقتطاع أما المُعامل الثاني فلا يدخل في الإقتطاع بمعنى لو حددنا المعاملين 0 و 1 فسيتم إقتطاع حرف واحد فقط و ليس حرفين لذلك و على هذا الأساس يجب إستخدام المعامل 0 و 7 مع الدالة substring حتى يتحقق الشرط لأن السلسلة : "select " تحتوي على 7 محارف نصية و معامل الحرف الآخير هو 6 بهذا الشكل :
String SPart = tableNameOrSelectStatment.substring(0,7).toLowerCase(); بالتوفيق
-
إجابة سمير عبود سؤال في كيفية جعل صور بصيغة HTML تظهر بجوارها نفس الصور بصورة تظهر محتوياتها بصيغة SVG ? كانت الإجابة المقبولة
مرحباً أحمد ..
يُمكنك إستخدام هذه ال extension : إضغط هنا و قم بتحميل ما يُناسب النظام الذي تستخدمه سواء 64 أو 32 فإن كان النظام 64 تقوم بتحميل هذا الملف svg_see_x64.exe وإن كان 32 تقوم بتحميل هذا الملف svg_see_x86.exe بعد التحميل ستقوم بتنصيبه كأي برنامج و هنا طريقة التحميل و التنصيب
بعد التنصيب بشكل صحيح ستظهر الأيقونات بهذا الشكل:
تأكد من أن طريقة العرض تكون medium أو large أو extra large
بالتوفيق
-
إجابة سمير عبود سؤال في كيفية الحصول علي اول عمل في تطوير الويب علي موقع فري لانسر؟ كانت الإجابة المقبولة
مرحباً محمد ...
للحصول على أول عمل في مواقع العمل الحر ليس فقط فريلانسر بل جميع المنصات التي توفر هذه الخدمة عليك ب:
إختيار مجال واحد و تطوير نفسك في هذا المجال بناء معرض أعمالك في هذا المجال حتى تُبين للعملاء أنه لديك خبرة و تكسب ثقتهم التواجد بكثرة على منصات العمل الحر و تقديم العروض على المشاريع لحظة نزولها على المنصة أولاً بأول لأن العميل ليس لديه وقت لمشاهدة جميع العروض و إذا لم تقدم عرضك في البداية لن يراه العميل لأن المنافسة شديدة. قد يشاهد العميل عرضك و يريد التواصل معك فإذا لم يجد حسابك نشط في ذلك الوقت سيتواصل مع غيرك لا تتصنع في تقديم العروض. حاول إقناع العميل بأنك قادر على تنفيذ المشروع و لا تُقدم عروض على مشاريع ليست لديك قُدرة على تنفيذها عليك بالصبر لأن هذه المرحلة تحتاج صبر كبير وأخيراً فالمسألة مسألة أرزاق قد تحصل على أول عمل بدون أي جهد و قد تبذل جهد كبير و لن تحصل على عمل. عليك بوضع عرض في المتوسط. فلا تُخفض السعر كثيراً و لا ترفعه كثيراً عند الحصول على أول عمل لك عليك كسب العميل و إذا طلب منك تعديلات لن تحتاج منك وقت كثير فقم بعملها . و إذا استطعت تقديم بعض الخدمات الإضافية مجانا فهذا جيد و سيُعجب العميل إضافة إلى أن أي عمل مُستقبلي لهذا العميل سيكون عن طريقك كُن لطيفا في تعاملك مع صاحب المشروع هذه بعض من النصائح و هناك العديد من المقالات في الأكاديمية لو قرأت بعضها فستستفيد جدا: إضغط هنا
أيضا أدعوك لمشاهدة هذه السلسلة فستجد فيها بعض النصائح المٌفيدة لك: إضغط هنا
بالتوفيق
-
إجابة سمير عبود سؤال في برمجة لوحة تسجيل دخول كانت الإجابة المقبولة
مرحباً أخي ...
لعمل نظام تسجيل الدخول نقوم أولا بإنشاء جدول للمستخدمين ثم نقوم بعمل صفحة و لتكن مثلا login_pdo.php
<?php session_start(); $host = "localhost"; $username = "root"; $password = ""; $database = "testing"; $message = ""; try { $connect = new PDO("mysql:host=$host; dbname=$database", $username, $password); $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if(isset($_POST["login"])) { if(empty($_POST["username"]) || empty($_POST["password"])) // في حالة عدم إدخال البيانات { $message = '<label>All fields are required</label>'; } else { $query = "SELECT * FROM users WHERE username = :username AND password = :password"; $statement = $connect->prepare($query); $statement->execute( array( 'username' => $_POST["username"], 'password' => $_POST["password"] ) ); $count = $statement->rowCount(); if($count > 0) // إذا وجدنا البيانات مسجلة في جدول المستخدمين { $_SESSION["username"] = $_POST["username"]; // نحفظ إسم المستخدم ضمن الجلسة header("location:dashboard.php"); // ونقوم بتحويل المستخدم إلى لوحة التحكم } else { $message = '<label>Wrong Data</label>'; // في حالة عدم وجود البيانات نرجع الرسالة } } } } catch(PDOException $error) { $message = $error->getMessage(); // في حالة حدوث خطأ في الإتصال مع قاعدة البيانات } ?> ملف dashboard.php يكون بهذا الشكل :
<?php session_start(); if(isset($_SESSION["username"])) // بمعنى إذا كان إسم المستخدم موجود في الجلسة هذا يعني أن هناك مستخدم قام بتسجيل الدخول { echo '<h3>Login Success, Welcome - '.$_SESSION["username"].'</h3>'; // رسالة ترحيبية فقط echo '<br /><br /><a href="logout.php">Logout</a>'; // رابط لتسجيل الخروج } else // في حالة عدم وجود شخص مسجل دخوله نمنع الوصول إلى لوحة التحكم { header("location:login_pdo.php"); // نقوم بتحويل المستخدم إلى صفحة تسجيل الدخول } ?> و ملف ال logout.php يكون بهذا الشكل
<?php session_start(); session_destroy(); // تحطيم الجلسة header("location:login_pdo.php"); // التحويل إلى صفحة تسجيل الدخول ?> و هذا نظام بسيط لتسجيل الدخول أرفقت لك الملفات.
login_pdo.zip
بالتوفيق
-
إجابة سمير عبود سؤال في مشكل عرض فديو من ملف خارجي php كانت الإجابة المقبولة
مرحباً @Sid Ahmed4
أكواد عرض مقطع الفيديو ليست بها أخطاء فلعرض فيديو نستعمل وسم video بالشكل التالي مثلا :
<video width="320" height="240" controls> <source src="video_src.mp4" type="video/mp4"> Your browser does not support the video tag. </video> لكن أظن أنك أخطأت في الشرط فلمقارنة سلسلتين نصيتين نستعمل "==" و ليس "=" أو نستعمل الدالة strcmp بهذا الشكل :
<?php $ipath = pathinfo($value['pofl'], PATHINFO_EXTENSION); if ($ipath == 'jpg'){ // أكواد العرض في حالة اللاحقة jpg }elseif ($ipath == 'mp4') { // أكواد العرض في حالة اللاحقة mp4 } أو
<?php $ipath = pathinfo($value['pofl'], PATHINFO_EXTENSION); if (strcmp($ipath, "jpg") == 0){ // أكواد العرض في حالة اللاحقة jpg }elseif (strcmp($ipath, "mp4") == 0) { // أكواد العرض في حالة اللاحقة mp4 } تأكد جيداً من مسار الفيديو "src" الذي تريد عرضه.
بالتوفيق
-
إجابة سمير عبود سؤال في حالياً أتعلم جافا سكربت ولكن أواجه صعوبة في التطبيق كانت الإجابة المقبولة
مرحباً عبد العزيز ..
لا شك أن لغة الجافا سكربت لغة عميقة و مجالاتها عديدة و إحترافها ليس شيئاً سهلاً. قناة الزيرو قناة غنية و محتواها مفيد جداً و دورات الجافا سكربت التي يقدمها الأخ أسامة إبتداءً من أساسيات اللغة إلى DOM ثم ال BOM كافية للبناء المعرفي للغة لكن تطبيق المفاهيم و دمجها مع بعض لحل المشاكل أو التمارين التي تواجهك هذه مهارة أخرى تكتسبها مع الوقت لأن كل شخص و كيف يُفكر و المشكلة لديها عدة حلول برمجية أي هناك عدة طرق للوصول إلى الحل . في بداية الأمر قد لا يستطيع الشخص توظيف ما تعلمه من مفاهيم لحل مشكلة ما و هذا شيء طبيعي لكن بالممارسة أكثر و رؤية حلول كثيرة و بالبحث سيُكون الشخص هذه المهارة . ما عليك فعلهه هو
مشاهدة الدروس و التطبيق عليها . إبحث عن مشاكل. لحلها تحتاج فقط المفاهيم التي درستها و ليس مفاهيم متقدمة لم تدرسها بعد حاول توظيف ما تعلمته لحل هذه المشاكل إن لم تستطع حلها بنفسك إبحث عن كيفية توظيف ما تعلمته مثلا لحل هذه المشكلة لا تشاهد الحل مباشرة بعد القيام بهذه المراحل إذا لم تجد حل أو لم تستطع إيجاد كيفية الحل قم بمشاهدة الحل لأن هذا الشيء سيُعلمك و مستواك سيتطور أكثر بعد تعلم أساسيات اللغة و ال DOM بالإضافة إلى ال BOM و التطبيق عليها إنتقل إلى تعلم الإصدارات الحديثة من جافاسكربت es6 و مافوق و ستجد قائمة لها في قناة الزيرو و بعدها إنتقل إلى البرمجة الكائنية أو غرضية التوجه بلغة الجافا سكريبت و بهذا تكون قد قطعت شوطا كبيراً
يُنصح كثيرا بتعلم مكتبة jQuery قبل تعلم es6 و أخيراً أنصحك بتعلم أحد أطر عمل اللغة ك
React.js Vue.js Angular بالتوفيق
-
إجابة سمير عبود سؤال في تكبير صفحة الانترنت عند النقر على زر التكبير، وتصغيرها بالنقر على الزر تصغير zoom in and zoom out Buttons كانت الإجابة المقبولة
مرحباً محمد ..
يمكنك عمل هذا عن طريق إضافة 3 أزرار بهذا الشكل مثلاً
<a class="btn zoom"><i class="fas fa-search-plus"></i></a> <a class="btn zoom-out"><i class="fas fa-search-minus"></i></a> <a class="btn zoom-init"><i class="fas fa-recycle"></i></a> <!-- إضافة بوكس لرؤية نتيجة التكبير و التصغيير --> <div class="box"> <h3>Title</h3> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras a ligula dictum, elementum arcu quis, scelerisque lacus. Donec ut semper nunc, sed ultricies velit. Donec id malesuada metus </p> </div> يُرجى إضافة مكتبة fontawesome من أجل الأيقونات بعدها إضافة بعض التنسيقات للعناصر بهذا الشكل مثلاً
body { margin: 30px; } .box { background: linear-gradient(25deg, #3a6186, #89253e); color: white; font-size: 25px; padding: 40px; width: 50%; margin: auto; } .btn { width: 30px; height: 30px; background: #FFF; border: 1px solid #005bac; border-radius: 50%; color: #005bac; padding: 15px 10px 5px; position: fixed; text-align: center; transition: all 0.3s ease; } .btn:hover { background: #eef; } .zoom { bottom: 190px; } .zoom-out { bottom: 120px; } .zoom-init { bottom: 50px; } و الآن نأتي إلى إستعمال جافاسكربت عند الضغط على الأزرار نقوم بالتكبير والتصغير إعتماداً على خاصية الCss أي: "zoom"
var zoom = 1; $('.zoom').on('click', function(){ zoom += 0.1; $('body').css('zoom', zoom); }); $('.zoom-init').on('click', function(){ zoom = 1; $('body').css('zoom', zoom); }); $('.zoom-out').on('click', function(){ zoom -= 0.1; $('body').css('zoom', zoom); }); لقد قمت بإستعمال مكتبة جيكويري بإمكانك تجربة الأكواد على codepen من خلال هذا الرابط: إضغط هنا
بالتوفيق
-
إجابة سمير عبود سؤال في كيفية تحديث بيانات sharedPreferences كانت الإجابة المقبولة
مرحباً مروان ..
لم أفهم بشكل جيد لكن بطبيعة الحال سيظهر لك هذا الخطأ لأن الدالة أو الإقتران createSession ينتظر منك تمرير 3 parameters و أنت قمت بتمرير parameter واحد فقط و الحل إما تمرير كافة القيم بجلبها من sharedPreferences و تمريرها إلى الدالة و تغيير فقط قيمة الإسم أو إنشاء دالة جديدة ب parameter واحد بهذا الشكل :
public void createSession(String name){ editor.putString(NAME, name); editor.apply(); } و قُم بإستعمالها.
بالتوفيق
-
إجابة سمير عبود سؤال في كيف ممكن اكتب كود SharedPreferences التالي بشكل مختصر كانت الإجابة المقبولة
مرحبا مروان
أنا لم أفهم جيداً ما الذي تريد عمله لكن حالياً أنت قمت بإضافة listener للحقل الأول فقط فإذا تغير هذا الحقل يتم حفظ القيمة الجديدة بأكثر من key و عند عملية الجلب ستكون القيمة نفسها في كل الحقول
إذا كنت تريد حفظ البيانات كلها لكل الحقول يجب إضافة أكثر من listener أي لكل حقل أو يمكنك إضافة زر لحفظ كل البيانات يعني عند الضغط على الزر تجلب بيانات الحقول و تقوم بحفظها في ال SharedPreferences وإضافة زر آخر لجلب البيانات ووضعها في الحقول وسيتم جلب البيانات المخزنة في SharedPreferences
يمكنك الإستعانة بهذا الفيديو الذي يشرح عن كيفية خزن و جلب البيانات في الهاتف بإستعمال SharedPreferences
إذا لم يكن هذا ما تريد رجاءً إشرح جيداً و سنُساعدك
بالتوفيق
-
إجابة سمير عبود سؤال في لغه السي بلس بلس كانت الإجابة المقبولة
مرحباً ..
يمكنك عمل البرنامج بهذه الطريقة بلغة c++
#include <iostream> using namespace std; // تعريف الكلاس class Name_pairs { // تعريف خصائص الكلاس public: int size; string *names; int *age; // constructor public: Name_pairs(int size) { cout <<"Constructor is called" <<endl; this->size = size; this->names = new string[size]; this->age = new int [size]; } // destructor public: ~Name_pairs() { cout <<"\nDestructor is called" <<endl; delete []names; delete []age; } // تعريف الميثود المسؤولة عن قراءة الأسماء void read_names() { for (int i = 0; i < this->size; i++) { cout << "Enter name " << (i+1) << ": "<<endl; cin >> this->names[i]; } } // تعريف الميثود المسؤولة عن قراءة الأعمار void read_ages() { for (int i = 0; i < this->size; i++) { cout << "Enter age " << (i+1) << ": "<<endl; cin >> this->age[i]; } } // طباعة السجلات void print() { for (int i = 0; i < this->size; i++) { cout << "record " << (i+1) << ": (" << this->names[i] << ", " << this->age[i] << ")"<<endl; } } // selection sort (select the min) void sort() { int i, min, j, tmp_age; string tmp_name; for(i = 0; i < this->size - 1; i++) { min = i; for (j = i; j < this->size; j++) if(this->names[j][0] < this->names[min][0]) min = j; tmp_name = this->names[i]; this->names[i] = this->names[min]; this->names[min] = tmp_name; tmp_age = this->age[i]; this->age[i] = this->age[min]; this->age[min] = tmp_age; } } }; int main() { // create instance from Name_paires class Name_pairs obj(5); obj.read_names(); // read names obj.read_ages(); // read ages cout << "\nRecords Before Sorting: " << endl; obj.print(); // print records before sorting obj.sort(); // call sort method cout << "\nRecords After Sorting: " << endl; obj.print(); // print records after sorting } و عند إدخال الأسماء المطلوبة أي:
Baraa, Ahmed, Emad, Diaa, and Chloe و الأعمار التالية: 20, 21, 22, 23, 24
ستظهر النتيجة بهذا الشكل
يمكنك تجربة البرنامج من خلال هذا الرابط
ملاحظة و نصيحة: إذا كنت في مجال البرمجة فمن الأحسن أن تجرب حل المشكلة و كتابة البرنامج بنفسك حتى تتعلم و إذا واجهتك مشكلة أو تريد الإستفسار عن شيء قم بطرحه هنا وكتابته باللغة العربية و ستجد من يساعدك أما بكتابتك لنص تمرين أو مشكلة مباشرة نسخ لصق فلن تجد المساعدة
بالتوفيق
-
إجابة سمير عبود سؤال في عملية تتلقى مصفوفة أحادية الأبعاد لأعداد صحيحة، تعيد true إذا كان مجموع كل حدين الموجودين بأماكن مضادة متساوي كانت الإجابة المقبولة
مرحباً ..
يمكنك عمل البرنامج بهذه الطريقة
using System; public class Program { public static void Main() { // تعريف متغير من نوع مصفوفة int[] myNum = {2, 7, 5, 7, 2}; // إستعمال الميثود Console.WriteLine(isSameSum(myNum)); } // تعريف الميثود المسؤولة عن الفحص private static bool isSameSum(int[] array) { bool stop = true; int n = array.Length; int i = 0; int j = 0; while(stop && i < n) { j = 0; while(stop && j < n) { // هذا الشرط من أجل المكانين المضادين if (i <j && i == n - j - 1) { // يجب تغيير هذا الشرط بما يتناسب معك if(array[i] != array[j]) { stop = false; } } j++; } i++; } return stop; } } يمكنك تجربة البرنامج من خلال هذا الرابط
بالتوفيق
-
إجابة سمير عبود سؤال في عند محاولة حذف سجل معين يتم حذف جميع السجلات في mysql كانت الإجابة المقبولة
لا يتم الحذف الآن لأن الإستعلام كان خاطئاً لكن الآن هو صحيح بقي جزء كود الفولي و يجب تغيير إقتران الحذف للشكل التالي
// إقتران الحذف private void Deletefavaorit(String markte_id, String UserIdSessin) { String i_upd_url = "http://=========/end/delete.php"; // رابط ملف الحذف StringRequest strreq = new StringRequest(Request.Method.POST,i_upd_url, new Response.Listener<String>() { @Override public void onResponse(String Response) { Toast.makeText(getActivity(), Response , Toast.LENGTH_LONG).show(); Log.i(TAG, "ResponseTest"+Response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError e) { e.printStackTrace(); } }){ @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String,String> params = new HashMap<String,String>(); params.put("markte_id", markte_id); params.put("UserIdSessin", UserIdSessin); return params; } }; RequestQueue requestQueue = (RequestQueue) Volley.newRequestQueue(getActivity()); requestQueue.add(strreq); } لا تنسى تضمين الكلاسات المستعملة و عند إستعمال الإقتران مرر له كل من markte_id و UserIdSessin على شكل string
جرب و أخبرني بالنتيجة
-
إجابة سمير عبود سؤال في كيف احفظ بيانات العميل في تطبيق سطح المكتب كانت الإجابة المقبولة
مرحبا صالح ..
نقوم بحفظ البيانات بإستعمال قاعدة بيانات مربوطة مع البرنامج بغض النظر عن نوع قاعدة البيانات يمكننا من خلال الكود عمل نُسخ لقاعدة البيانات (backup) و تتم هذه العملية بشكل دوري مثلا يوميا أو كل ساعتين .. و بهذا الشكل نستطيع إستعادة البيانات من آخر نسخة تم حفظها إذا حدث أي خلل في البيانات
و هناك أدوات و مكتبات في لغة جافا تقوم بهذه العمل يمكنك البحث عنها و إستعمالها
بالتوفيق
-
إجابة سمير عبود سؤال في اكتب بلغه c++ كانت الإجابة المقبولة
مرحبا وليد ...
لم أفهم جيدا ماذا تقصد لكن بإمكان عمل برنامج يقوم بتحويل عدد من الأيام إلى أسابيع و عدد الأيام المتبقية بهذا الشكل
#include <iostream> using namespace std; int main() { // تعريف المتغيرات int days_num = 185, // عدد الأيام الإجمالي weeks, // هنا سنقوم بتخزين عدد الأسابيع remaining_days; // عدد الأيام المتبقية weeks = days_num / 7; // حساب عدد الأسابيع remaining_days = days_num % 7; // حساب عدد الأيام المتبقية // في حالة وجود أيام متبقية نعرض عدد الأسابيع و عدد الأيام if (remaining_days > 0) cout << days_num << " days = " << weeks << " weeks and " << remaining_days << " days."; // في حالة عدم وجود أيام متبقية نعرض عدد الأسابيع فقط else cout << days_num << " days = " << weeks << " weeks."; } و عند تنفيذ البرنامج يكون الناتج بهذا الشكل
يمكنك تجربة البرنامج من هنا
-
إجابة سمير عبود سؤال في هل اتعلم المزيد من لغة XML ام أركز أكثر على الجافا و اعتمد على برنامج أندرويد ستوديو فى تصميم الواجهة ؟؟ كانت الإجابة المقبولة
مرحبا
لا شك أن منصة أندرويد ستوديو أفضل في تطوير تطبيقات الأندرويد لأنها تساعد المطورين كثيرا في عملهم
بالنسبة للسؤال هل أستعمل layout editor لبناء الواجهات عن طريق drag and drop أو أكتب أكواد XML بنفسي بالنسبة لي أحب أن أكتب الكود بنفسي و لا أحب إستعمال drag and drop لأن كتابة أكواد ال XML سيكسبك خبرة أكثر و يعطيك الحرية الكاملة
أنصحك بذلك و عندما تتعود بإمكانك استعمال هذه الأدوات لكن ستبقى بحاجة أحيانا للتعديل بنفسك على الكود
-
إجابة سمير عبود سؤال في كيف اعرف نوع السيرفر و نظام التشغيل كانت الإجابة المقبولة
مرحبا
يجب عليك معرفة ذلك قبل الإشتراك معهم و يجب عليك دراسة الإختيارات و ماهو أفضل خيار بالنسبة لتطبيقك او مشروعك
هناك عدة أنواع من الاستضافات
Shared Web Hosting Cloud Based Web Hosting VPS او Virtual Private Server Dedicated Web Server .... معظمها تدعم لغة بايثون لأن شركات الإستضافات تطمح لكسب و إستقطاب أكبر عدد من الزبائن لذلك توفر معظم لغات البرمجة لذلك عليك أن تدرس أفضل خيار و بعدها تقوم بالإشتراك
ليس عليك تثبيت أي شيئ لأن مهمة صيانة السيرفر تقع على شركة الاستضافة أنت عليك الإهتمام بمشروعك و كتابة كود سليم نظيف خالي من الأخطاء و الثغرات و ستجد وسائل و أدوات مثبتة مسبقا في الاستضافة تساعدك في عملك
-
إجابة سمير عبود سؤال في جافا أم ريأكت نيتيف كانت الإجابة المقبولة
مرحبا @Ahmed Sawy
بالنسبة لسؤالك هل أستعمل جافا أو رئاكت نتيف لبرمجة و بناء تطبيقات موبايل هذا يعتمد على المبرمج و يتغير من شخص لآخر و من مشروع لآخر
إذا كان المشروع يعتمد و بدرجة كبيرة على محسسات و مستشعرات الهاتف و التعامل مع android native APIs و التواصل معها بشكل كبير فالأحسن إعتماد لغة جافا أو كوتلن لكن إن كان المشروع عبارة عن متجر فيه سلة مشتريات أو تطبيق إخباري أو مثلا تطبيق يعرض أشياء فرئاكت نتيف سيكون خيار جيد جافا أو كوتلن تسمح لك ببناء تطبيقات كبيرة التعقيد و الوصول إلى native apis يكون أسهل رئاكت نتيف مبنية على أساس رئاكت فريموورك التي تستعمل لغة جافاسكربت لذلك فبناء التطبيقات يكون بإستخدام رئاكت نتيف أسرع منه عند إستخدام جافا أو كوتلن إذا كنت مطور ويب و تحسن إستخدام تقنيات الويب بما فيها لغة الجافاسكربت فمن الأحسن التوجه نحو الرئاكت نتيف لكن إن كنت مطور جافا و تحسن التعامل مع لغة الجافا فمن الأحسن التوجه لبناء تطبيقات موبايل بلغة جافا ملاحظة إذا كان لديك خبرة مسبقة في التعامل مع أندرويد بإستخدام جافا أو كوتلن فليس هناك أي داع للتحويل الى رئاكت نتيف و من الأحسن كسب أكبر خبرة ممكنة فيما أنت فيه كلا من بناء تطبيقات أندرويد بإستخدام جافا أو كوتلن و رئاكت نتيف مطلوبين و بكثرة رئاكت نتيف سهلة التعلم مقارنة بجافا أو كوتلن لأن جافا تحتاج معرفة مسبقة بالبرمجة الكائنية التوجه و تعلمها سيحتاج منك مدة أكبر من تعلم رئاكت نتيف رئاكت نتيف cross platform فريم وورك من خلالها تنتج تطبيق للمنصتين ( أندرويد و iOS ) بكود واحد هذا لا يعني أنك لن تحتاج الى جافا أو كوتلن أو سويفت في بعض الحالات تحتاج الى إضافات باللغات النتيف تذكر أن أيا منهما ليس جيدًا ولا أحدًا منهما يعتبر سيئًا. يعتمد ذلك على المطور ومتطلباته
-
إجابة سمير عبود سؤال في كيف احمي تحميل الصور من برمجيات خبيثه كانت الإجابة المقبولة
مرحبا
أنا أستخدم إطار العمل laravel الخاص بلغة php و عند عملية التحقق من صورة أستعمل الكود التالي
<?php // .... public function store(Request $request) { $request->validate([ 'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048' ]); // .... } هذا بإستعمال validation image الموجودة في الإطار
لكن لارافيل يتيح لنا إنشاء custom validation خاص بنا بهذا الشكل مثلا
<?php Validator::extend('is_png',function($attribute, $value, $params, $validator) { $image = base64_decode($value); $f = finfo_open(); $result = finfo_buffer($f, $image, FILEINFO_MIME_TYPE); return $result == 'image/png'; }); و بعدها يمكننا استعماله بهذا الشكل
<?php // .... public function store(Request $request) { $request->validate([ 'image' => 'required|is_png' ]); // .... } ستجد أشياء مماثلة لما تبحث عنه باللغة التي تريدها لأن مطورين اللغة يطورون بإستمرار على اللغة و يضيفون أشياء جديدة
بالتوفيق
-
إجابة سمير عبود سؤال في أرجو المساعدة بحل سؤال بلغة ++C كانت الإجابة المقبولة
مرحبا
البرنامج يشمل كيفية جعل الدالة virtual pure و ذلك بإضافة الكلمة virtual في تعريف الدالة في الكلاس الأب
فإن كنت تريد جعل الدالة عادية فقط ستحذف الكلمة virtual من تعريف الدالة و في هذه الحالة سيتم إستعمال الدالة الموجودة في الكلاس الأب أما في حالة عندما تكون الدالة virtual يتم إستعمال الدالة الموجودة في الكلاس الإبن أي Derived
-
إجابة سمير عبود سؤال في برامج باستخدام نيت بينز كانت الإجابة المقبولة
مرحبا
لغة جافا متشعبة كثيرا يمكنك إستعمالها لبناء console application و يمكنك أيضا إستخدامها في برمجة GUI أي Graphical User Interface باستخدام مكتبة swing أو عن طريق JavaFX
يمكنك أيضا ربط التطبيق بإستخدام قاعدة بيانات بحيث تستطيع حفظ و تعديل و قراءة و حذف البيانات مثلا يمكنك بناء برنامج للمخازن و العملاء و الموردين و المنتجات و ما إلى ذلك
يمكنك أيضا إستعمال لغة جافا لبناء مواقع و تطبيقات ويب عن طريق أطر العمل الخاصة بها و أشهرها Spring boot
جافا أيضا يتم إستعمالها لبرمجة تطبيقات الأندرويد عبر منصة أندرويد ستوديو
تدخل جافا أيضا في الشبكات و البرمجيات المدمجة
كما تلاحظ فهي متعددة الإستخدام و المجالات
فقط حدد المجال الذي تريد تعلمه و ابحث عنه في اليوتيوب (إن كنت تريد شيء مجاني) أو بإمكانك الحصول على دورة مدفوعة من Udemy
نصيحتي لك لا تنتظر من شخص أن يعلمك كل شيء ضع فكرة أو برنامج في رأسك و حاول أن تقوم بتنفيذها و أبدأ أولا بفكرة بسيطة ثم قم بتوسيعها
على سبيل المثال أنت الآن تعلمت أساسيات لغة جافا لنقل أنك فكرت في الفكرة التالية :
بناء برنامج بسيط عند تشغيله يعرضلك نافذة عبارة عن نافذة لتسجيل الدخول
أنت الآن تملك فقط أساسيات لغة جافا
قم بعمل Java console application تقوم بالتالي : تطلب من المستخدم : اسم المستخدم عندما يقوم المستخدم بإدخاله تقوم بحفظه في متغير ثم تطلب منه كلمة السر و تقوم بحفظها في متغير جديد بعدها تقوم بالبحث عن المدخلات في جدول users يحتوي على بيانات مستخدمين قمت بتعريفها مسبقا إن وجدت المدخلات ضمن الجدول تعرضله رسالة أنه تم تسجيل الدخول إذا وجدت العكس تعرضله رسالة أخرى و لتكن أن البيانات التي أدخلتها غير موجودة ...
لاحظ أن هذا البرنامج بسيط و لن تحتاج فيه غير أساسيات لغة الجافا و سيتم تنفيذه عبر الكونسول لكنه سيرسخ لك المعلومات و الأساسيات التي تعلمتها
2. بعدها تعلم مكتبة swing أو JavaFX ستمكنك من بناء نوافذ و إضافة أزرار الى النافذة و عدد من الأدوات الخاصة بالتفاعل مع ال user
بعد تعلمها قم بتوسيع الفكرة أعلاه و قم ببناء واجهة لتسجيل الدخول
3. أنت الآن فقط تستعمل جداول لغة جافا قم بتعلم قواعد البيانات و كيفية دمجها مع البرامج و عند تعلمها قم بتوسيع الفكرة أعلاه لربط الواجهة بقاعدة بيانات
و هكذا أنت في كل مرة تزيد من معلوماتك و تكتسب خبرة بتطبيقها
أنا فقط أعطيتك مثال عن فكرة بسيطة بإمكانك تصور فكرة غيرها مناسبة لك لكن حاول أن تكون الفكرة في بادئ الأمر بسيطة حتى تستطيع تنفيذها
و بالتوفيق
-
إجابة سمير عبود سؤال في لغه السي بلس بلس كانت الإجابة المقبولة
مرحباً بك،
البرنامج المطلوب يتمحور حول البرمجة الكائنية التوجه او ( OOP Object-oriented programming) بلغة سي بلس بلس و يشمل على مفهوم الكلاس و الوراثة (inheritance) إضافة الى إعادة التعريف أو ما يسمى بال overriding
الكلاس الأساسي إسمه Base و يحتوي على حقلين ثابتين أحدهما من النوع string و الآخر من نوع integer و يكون الوصول إليهما من النوع الخاص (private) إضافة إلى دالتين getters لجلب قيمة هاتين الحقلين و دالة ثالثة لطباعة القيم و أيضا دالة ال constructor
أما الجزء الثاني فينص على كتابة كلاس إسمه Derived يرث الكلاس الأول و يحتوي على حقل من نوع string و يكون الوصول إليه من النوع الخاص (private) إضافة إلى دالة getter لجلب قيمته و يقوم بإعادة تعريف الدالة get_info و أيضا يحتوي على دالة ال constructor
و هذا مثال بسيط للتطبيق
// Example program #include <iostream> using namespace std; class Base { private: const string name; private: const int age; public: Base(string name_val, int age_val) : name(name_val), age(age_val) {} string get_name() { return this->name; } int get_age() { return this->age; } string get_info() { return "The name is " + this->name + " and the age is " + std::to_string(this->age) + "."; } }; class Derived : public Base { private: string type; public: Derived(string name, int age, string type) : Base(name, age) { this->type = type; } string get_type() { return this->type; } string get_info() { return "The name is: " + this->get_name() + "\nThe age is: " + std::to_string(this->get_age()) + "\nThe Type is: " + this->type; } }; int main() { Base b1("Samir Abboud", 24); cout << "Base Info: " << b1.get_info(); Derived d1("Manar", 29, "manager"); cout << "\nDerived Info: \n" << d1.get_info(); return 0; } يمكنك أيضا تصفح أكواد التطبيق و تجربته أونلاين من هنا
كما يمكنك كتابة أكواد c++ و مشاركتها أونلاين من هنا
بالتوفيق