السلام عليكم ورحمه الله وبركاته
هنقوم بعملية فهم الكود بشكل اعمق واشمل
لمدة اسبوع ان شاء الله
قد تم شرح البرنامج فى المشاركة التالية
/index.php?showtopic=243770&view=findpost&p=1210124
لتحميل الكود من الرابط التالى
بالتوفيق ان شاء الله
السلام عليكم ورحمه الله وبركاته
هنقوم بعملية فهم الكود بشكل اعمق واشمل
لمدة اسبوع ان شاء الله
قد تم شرح البرنامج فى المشاركة التالية
/index.php?showtopic=243770&view=findpost&p=1210124
لتحميل الكود من الرابط التالى
بالتوفيق ان شاء الله
أخي محمود أنا لم أقرأ الكود كاملا بعد ولكن مالغرض من استخدام المتغير :
private static final long serialVersionUID = 1L;
تحياتي.
عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..
{ لا ينال العلم مستحٍ ولا مستكبر }
الحمدلله ان فيه حد من الجروب رد
انا بحسب الرسايل وصلتكوا ومحدش شافها
اتفضل
http://www.xyzws.com/Javafaq/what-is-the-serialversionuid-in-java-classes/209
أخي محمود عندي استفسار الاول عن قواعد البيانات يعني صراحة لم افهم الشرح عن الجدولين في قاعدة البيانات وهل تم استخدام mysql
السؤال الثاني عن الـ GUI هل تم تصنيعها فقط من swing ام تم الاستعانة بمكتبات خارجية؟
وشكرا
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
vector_ever كتب:أخي محمود عندي استفسار الاول عن قواعد البيانات يعني صراحة لم افهم الشرح عن الجدولين في قاعدة البيانات وهل تم استخدام mysql
السؤال الثاني عن الـ GUI هل تم تصنيعها فقط من swing ام تم الاستعانة بمكتبات خارجية؟
وشكرا
بسم الله الرحمن الرحيم
بالنسبه لقاعده البيانات فهى MySQL
بالنسبه للجدولين
عندنا جدول خاص بالاميلات Emails تمام والجدول دا عادى جدا
يحتوى على الحقول التاليه
هناك جدول اخر Friend_to_friend
هذا الجدول يحتوى على عمودين الاثنين من نوع INTEGER
العمودين friend_id1 , friend_id2
تمام كدا
الاثنين مع بعض عباره عن مفتاح رئيسى
وكلا منها عباره عن مفتاح فرعى على الemailId الموجود فى الجدول Emails
ليه عملت كدا
لان الاصدقاء الموجدين فى اى برنامج شات مثلا بيكونوا مسجلين فى الخدمه
يعنى مثلا الفيس بوك
علشان توصل لصديق معين ممكن توصل له بالـ Id الخاص بيه
طيب هل ينفع توصل لصديق بدون ان تكون مشترك فى الفيس بوك
هكذا حصلت على الفكره ان انا مسجل فى الشات واعضاء اخرين مسجلين فى الشات
انا املك اصدقاء من الاعضاء المسجلين ومن هنا تأتى فكره الربط
وليكن لنضرب مثال على الاعضاء
جزء مقتبس من جدول الـ Emails
ID Email
1 mahmoudKelany
2 vector_ever
3 3alaa
كما ذكرت مسبقا ان الاصدقاء لى هم اعضاء مسجلين
يعنى انا مثلا الاميل الخاص بى هو mahmoudKelany والرقم الـID الخاص بى هو "1"
لو اردت ان ارتبط مع اصدقاء فالشات فهم فالاخر اعضاء مسجلين
فقومت بفعل الاتى
قولت ان 1 مرتبط مع 2
وان 1 ايضا مرتبط مع 3
فبالتالى الاميل mahmoudkelany مرتبط كصديق مع كلا من vector_ever , 3alaa
فعندما اقوم بعمليه تسجيل دخول
يتم التحقق من ببياناتى عن طريق الاميل وكلمه المرور من جدول الـ Emails
وبعدها ان كانت صحيحه اقوم بالحصول على جميع الارقام المرتبطه معى من جدول friend_to_friend
وبعد ان احصل على جميع الارقام IDs اقوم بالحصول على بياناتهم كامله من الاسم والاميل والبلد والتليفون والنوع من جدول الـ Emails
بالنسبه للسوال الخاص بالـ GUI فقط استخدمت الـ Swing
ستجد لديك package خاصه باكواد الخاصه بذلك وهى com.jkelany.gui.custom
اتمنى ان يكون الشرح واضحا قدر الكفايه
تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 30 يونيو 2011 في 12:02
اسف جداً على التأخر في المشاركة كان ذلك بسبب الامتحانات,
عندي بعض الاقتراحات:
1 لما لا نعمل من خلال SVN حتى يسهل علينا موضوع التطوير
2 هل يوجد UML Diagrams للمشروع -ان وجد - اريد الاطلاع عليهم
--
Mina Fouad كتب:اسف جداً على التأخر في المشاركة كان ذلك بسبب الامتحانات,
عندي بعض الاقتراحات:
1 لما لا نعمل من خلال SVN حتى يسهل علينا موضوع التطوير
2 هل يوجد UML Diagrams للمشروع -ان وجد - اريد الاطلاع عليهم
ولايهمك
حمدلله بالسلامه
وربنا يوفققك يارب
بالنسبه للاقتراح الاول لسه لم نشتغل نشوف ايه اللى هيحصل فى طريقه الكود
بالنسبه للـ UML فهناك UML فقط للرسايل
انما باقى المشروع عباره عن صوره بسيطه توضح كيفيه العمل
يمكن الاطلاع عليها من المشاركه هذه
/index.php?showtopic=243770&st=20&p=1210124entry1210124
بالتوفيق جميعا
بالنسبة لاقتراح الأخ mina الصراحة أني طلبت هكذا أمر من الإدارة هنا
لكن الأمر لم يتم لأسباب إدارية تقنية ليس المكان للتفصيل فيها
على كل اقترح فتح حساب على sourceforge لهكذا أمر
مع التأكيد هنا على أن الشيفرة جميعها ملك الفريق العربي والمطورين العاملين على المشروع
هل يعرف الجميع ماهية SVN؟ على كل هذا مقال كتبته عن الموضوع كلام عن CVS
بالنسبة للشيفرة اطلعت إطلاع مبدئي على الخادم
ووجدت أنه يتم فتح socket لكل مستخدم يسجل دخوله على الخادم
هذا سيؤدي إلى انهاك الذاكرة بعد أقرب فرصة ممكنة
لذا أرى أن نغير الهيكلية الخاصة بالخادم
بحيث يتم إغلاق الاتصال مع الخادم بمجرد الإنتهاء من التواصل معاه
بالطبع يبقى الفيديو والصوت streaming هو النقطة التي تحتاج إلى الكثير من التواصل مع الخادم لذى يبقى الاتصال مفتوح لحد انتهاء المحادثة
فما رأيكم في هذا الكلام؟
تحياتي
علاء الصالحي كتب:بالنسبة للشيفرة اطلعت إطلاع مبدئي على الخادم
ووجدت أنه يتم فتح socket لكل مستخدم يسجل دخوله على الخادم
هذا سيؤدي إلى انهاك الذاكرة بعد أقرب فرصة ممكنة
لذا أرى أن نغير الهيكلية الخاصة بالخادم
بحيث يتم إغلاق الاتصال مع الخادم بمجرد الإنتهاء من التواصل معاه
بالطبع يبقى الفيديو والصوت streaming هو النقطة التي تحتاج إلى الكثير من التواصل مع الخادم لذى يبقى الاتصال مفتوح لحد انتهاء المحادثة
فما رأيكم في هذا الكلام؟
تحياتي
+1
--
علاء الصالحي كتب:بالنسبة لاقتراح الأخ mina الصراحة أني طلبت هكذا أمر من الإدارة هنا
لكن الأمر لم يتم لأسباب إدارية تقنية ليس المكان للتفصيل فيها
على كل اقترح فتح حساب على sourceforge لهكذا أمر
مع التأكيد هنا على أن الشيفرة جميعها ملك الفريق العربي والمطورين العاملين على المشروع
هل يعرف الجميع ماهية SVN؟ على كل هذا مقال كتبته عن الموضوع كلام عن CVS
بالنسبة للشيفرة اطلعت إطلاع مبدئي على الخادم
ووجدت أنه يتم فتح socket لكل مستخدم يسجل دخوله على الخادم
هذا سيؤدي إلى انهاك الذاكرة بعد أقرب فرصة ممكنة
لذا أرى أن نغير الهيكلية الخاصة بالخادم
بحيث يتم إغلاق الاتصال مع الخادم بمجرد الإنتهاء من التواصل معاه
بالطبع يبقى الفيديو والصوت streaming هو النقطة التي تحتاج إلى الكثير من التواصل مع الخادم لذى يبقى الاتصال مفتوح لحد انتهاء المحادثة
فما رأيكم في هذا الكلام؟
تحياتي
ما الاسم المقترح للحساب ؟؟
تقصد قطع الاتصال فى حاله ما كان العميل idel ؟ اى لا يقوم بعمل اى شىء ؟؟؟
ام ماذا تقترح ؟؟
انا اوافققك الرائ ان كان هذا لا يؤثر على النظام العام
يعنى عندما تكون idel وقد تم قطع الاتصال بينى وبينك
ولكن فى الحقيقه انا لم اقم بغلق البرنامج
فعندما يقوم احد الاصدقاء بارسال محادثة الى هل ستصل ؟؟ وكيف تصل وقد تم الغاء الاتصال ؟
اقتباسهل يعرف الجميع ماهية SVN؟ على كل هذا مقال كتبته عن الموضوع كلام عن CVS
شرح وافي ومختصر .. ماقصرت أخي علاء.
< متابع :)
عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..
{ لا ينال العلم مستحٍ ولا مستكبر }
النقطة هنا أن على أن العميل أن يتحول إلى خادم والخادم سيتحول إلى عميل
أقوم أنا بتسجيل الدخول على الخادم فيقوم الخادم بأخذ الـ IP الخاص بي
ثم يقوم العميل بفتح ServerSocket خاص بي
وغندما يريد الخادم التواصل مع العميل يفتح Socket عادية للاتصال به
وكأن الوضع انقلب
بالطبع سيبقى لو أراد العميل نفسه إرسال رسالة للخادم هنا لا نستطيع العمل في هذا الوضع إلا بتجديد الاتصال مع الخادم
سيتواصل بتفح اتصال جديد مع الخادم في الوضع الطبيعي (الموجود حالياً لدى محمود)
هناك حل أقل عدائية هنا
وهو إبقاء الاتصال مفتوح لمدة معينة مادام العميل فعال
وهذا لتخفيف من عملية حجز وتحرير الموارد على الخادم
هل وصلت الفكرة؟
تحياتي
فعلا الفكره وصلت
وهى دى كانت المفروض فكرتى من الاول انى اخد الـ ip والجهازين يشتغلوا pear2pear
لكن نسيت اعمل الموضوع دا فى قاعده البيانات
فلجأت ان يكون كل شىء على السيرفر
لكن اعتقد اننا سنقوم باعاده بناء جزء الـ network كاملا
بالنسبه لل IP
واجهتني مشاكل كتير في التعامل معه
لان عشان اعمل اتصل مابين جهازين مش علي نفس ال subgateway لازم استخدم
static IP
اعتقد انك مش هتاخد الـip بس
وبعدين مش هيكون الـ private ip
هيكون الـ public ip , port اللى مبعوت معاه
ولم ترجع البيانات هترجع على الروتر اللى طلع منه البيانات على الـip , port
وهو يعرف ايه الجهاز المرتبط بيه ذلك الـ port ويبعته ليه
زى ما يكون اجهزه متصله بالشبكه المحليه LAN وليهم getway واحد وهو الروتر
ليه لم احنا التلاته بندخل على جوجل وكل واحد بيبحث على حاجه مختلفه بيرجع لكل واحد
بيانات عن اللى الشىئ اللى دخله مش بتتلخبط البيانات علشان الروتر اللى بيعمل الكلام دا
يعنى الثلاث اجهزه لديهم الـ ips
192.168.1.10
192.168.1.11
192.168.1.12
هذه هى الـ private ips
انما بالنسبه للـ public ip هتلاقيه
41.153.201.120
لكل الاجهزه
يعنى ادخل على الموقع دا وانت تعرف الـ real ip او الـ public ip
ليه استخدمت الIPدا؟؟؟
public static final String CONNECTION_URL = "169.254.234.41";
Alex programmer كتب:ليه استخدمت الIPدا؟؟؟
public static final String CONNECTION_URL = "169.254.234.41";
دا كان ip الشبكة اللى كنت شغال عليها عمليه الtest
كنت فالكليه وعاملين bridge على الويرلس وكان هذا هو الـ ip الخاص بجهازى فى الوقت دا
لانك فى الحاله دى مش بتستخدمه على الـ localhost بتستخدمه على اجهزه مختلفه على LAN
والحمدلله اشتغل وكان فى حاله جيده
لو هتجربه على اجهزه لابد من اغلاق الـ firewall على الجهاز السيرفر لسماحية الوصول لقاعده البيانات
ولابد ان تقوم بعمل mySQL Account لان الـ root لا يقوم بعمليه الاتصال remotely connecting
على فكرا الip دا اتغير اكثر من مره
public static final String CONNECTION_URL = "192.168.1.50"; public static final String CONNECTION_URL = "192.168.137.192";
اول واحد كان على شبكه اخرى عن احد الاصدقاء
والثانى كان على نفس شبكه الكليه لكن طبعا تم اعطائى ip اخر حسب الـ DHCP Server
private void addFriend() {
if (friendTextField.getText() == null || friendTextField.getText().trim().equals("")) {
JOptionPane.showMessageDialog(this, "Missing friend email.");
} else {
new Thread() {
@Override
public void run() {
try {
setEnable(false);
int i = 10;
waiteProgressBar.setStringPainted(true);
waiteProgressBar.setBorderPainted(true);
waiteProgressBar.setString("Waite...");
waiteProgressBar.setIndeterminate(true);
try {
String friendEmail = friendTextField.getText().trim();
if (!friendEmail.toLowerCase().endsWith(EMAIL_SUFFIX)) {
friendEmail += EMAIL_SUFFIX;
}
friendTextField.setText(friendEmail);
while (waiteProgressBar.getValue() != 100) {
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
waiteProgressBar.setValue(i);
Thread.sleep(100);
i += new Random().nextInt(15);
}
if (waiteProgressBar.getValue() == 100) {
LoginFrame.getOutputStream().writeObject(new AddFriendMessage(friendEmail,
LoginFrame.getLoginEmail().getEmailId(), LoginFrame.getLoginEmail().getEmail()));
dispose();
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(getThis(), "Can't reach the server to add your friend.", "Error", JOptionPane.ERROR_MESSAGE);
}
} catch (InterruptedException ex) {
}
}
}.start();
}
}
}بالنسبه لل progress bar ليه عاملها ثريد بيوقفها ثانيه
انا شايف انا ملهاش لازمه و بتضيع وقت عالفاضي
ممكن مثلا تحسب الوقت اللي بياخدو لغايه ما يكونكت او يوصل الريكوست
لان اعتقد لما يكترو اليوزرز اللي عالسيرفر اكيد هيبقي بطئ شويه
بالنسبه لموضوع الThread معمول لعملية الحركه التى تراها امامك
فقط انما عمليه الاتصال تكمن فى الاتصال بعد ان يتم تحميل الBar بالقيمه 100
فعملية الاتصال تتم مباشره لكن البطئ لا يكون فى الاتصال فالسيرفر البطئ هذا موجود لعملية الحركه فى الـBar فقط
وهذا لا يؤثر مطلقا على الاتصال فقط هو عملية جمالية من وجهه نظرى
السلام عليكم ورحمة الله وبركاته
أنا اعتذر جدا على التأخير ولكن اعذرونى كان عندى امتحانات والحمد لله انتهت
انا لم انهى قراءة الكود بعد
ولكن سأقرأه ان شاء الله ولو فى أسئلة سأبديها
وأنا جاهز لأى أمر ان شاء الله أو تكليف
تحيــــاتى
وعليكم السلام ورحمه الله وبركاته
حمدلله بالسلامه :)
يارب تكون امتحانات كانت كويسه وكدا
ومنتظرينك بس اسرع :D
علاء الصالحي كتب:تنبيه على اللغة أخي Alex programmer رجاءاً التزم
تحياتي
اسف جدا اخي علاء
المشكله اني من الاسكندريه لزلك اللغه عندي غير جيده ولكن وعد سوف التزم باللغه
و لحسن الصدفه اسمي ايضا علاء :happy:
Mahmoud Kelany كتب:بالنسبه لموضوع الThread معمول لعملية الحركه التى تراها امامك
فقط انما عمليه الاتصال تكمن فى الاتصال بعد ان يتم تحميل الBar بالقيمه 100
فعملية الاتصال تتم مباشره لكن البطئ لا يكون فى الاتصال فالسيرفر البطئ هذا موجود لعملية الحركه فى الـBar فقط
وهذا لا يؤثر مطلقا على الاتصال فقط هو عملية جمالية من وجهه نظرى
lممكن نقوم باستخدام الthead دا في شئ مفيد لكي يكون له فائده اكتر من الشكل الجمالي فقط
ولكن انا اعتقد ان الاستصال بالسيرفر ممكن ياخد وقت ؟؟؟ :mellow:
في شئ نريد ان نعمله
Conference
بمعني ان اكتر من userيتكلمو مع بعض
Alex programmer كتب:و لحسن الصدفه اسمي ايضا علاء :happy:
lممكن نقوم باستخدام الthead دا في شئ مفيد لكي يكون له فائده اكتر من الشكل الجمالي فقط
ولكن انا اعتقد ان الاستصال بالسيرفر ممكن ياخد وقت ؟؟؟ :mellow:
هههههه تصدق صدفه وحشه ههههه اول مره اعرف ان اسمك علاء :D
ماشى بس خلى بالك انه لفتره الاضافه فقط , طب عندك حل اخر ؟؟؟
بالنسبه للاتصال بالسيرفر مش هياخد وقت اوووى وقت غير ملحوظ
Alex programmer كتب:في شئ نريد ان نعمله
Conference
بمعني ان اكتر من userيتكلمو مع بعض
ان شاء الله هيتعمل طبعا
بس بلاش تكتب بخط كبير يا عم الحاج
الخط الصغير حلوووو
هذا الموضوع مغلق.