الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فرصه قراءة الكود الخاص بالبرنامج

مغلق
بدأه Mahmoud Kelany في 28 يونيو 2011 · 37 رد · 4,129 مشاهدة · في قسم المشاريع الجماعية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

هنقوم بعملية فهم الكود بشكل اعمق واشمل

لمدة اسبوع ان شاء الله

قد تم شرح البرنامج فى المشاركة التالية

/index.php?showtopic=243770&view=findpost&p=1210124

لتحميل الكود من الرابط التالى

JKelany Chat Code

JKelanyChat Presentation

بالتوفيق ان شاء الله

Software Developer
Mahmoudkelany.com


 

#2

أخي محمود أنا لم أقرأ الكود كاملا بعد ولكن مالغرض من استخدام المتغير :

private static final long serialVersionUID = 1L;

تحياتي.

عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..

{ لا ينال العلم مستحٍ ولا مستكبر }

#4

أخي محمود عندي استفسار الاول عن قواعد البيانات يعني صراحة لم افهم الشرح عن الجدولين في قاعدة البيانات وهل تم استخدام mysql

السؤال الثاني عن الـ GUI هل تم تصنيعها فقط من swing ام تم الاستعانة بمكتبات خارجية؟

وشكرا

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#5
vector_ever كتب:

أخي محمود عندي استفسار الاول عن قواعد البيانات يعني صراحة لم افهم الشرح عن الجدولين في قاعدة البيانات وهل تم استخدام mysql

السؤال الثاني عن الـ GUI هل تم تصنيعها فقط من swing ام تم الاستعانة بمكتبات خارجية؟

وشكرا

بسم الله الرحمن الرحيم

بالنسبه لقاعده البيانات فهى MySQL

بالنسبه للجدولين

عندنا جدول خاص بالاميلات Emails تمام والجدول دا عادى جدا

يحتوى على الحقول التاليه

post-217802-091114600 1309423794_thumb.p

هناك جدول اخر 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

اتمنى ان يكون الشرح واضحا قدر الكفايه

المرفقات
emaileTable.png

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 30 يونيو 2011 في 12:02

Software Developer
Mahmoudkelany.com


 

#6

اسف جداً على التأخر في المشاركة كان ذلك بسبب الامتحانات,

عندي بعض الاقتراحات:

1 لما لا نعمل من خلال SVN حتى يسهل علينا موضوع التطوير

2 هل يوجد UML Diagrams للمشروع -ان وجد - اريد الاطلاع عليهم

--

Mina Fouad

Computer & Systems Engineering Dpt.

Faculty of Engineering

Alexandria University

#7
Mina Fouad كتب:

اسف جداً على التأخر في المشاركة كان ذلك بسبب الامتحانات,

عندي بعض الاقتراحات:

1 لما لا نعمل من خلال SVN حتى يسهل علينا موضوع التطوير

2 هل يوجد UML Diagrams للمشروع -ان وجد - اريد الاطلاع عليهم

ولايهمك

حمدلله بالسلامه

وربنا يوفققك يارب

بالنسبه للاقتراح الاول لسه لم نشتغل نشوف ايه اللى هيحصل فى طريقه الكود

بالنسبه للـ UML فهناك UML فقط للرسايل

انما باقى المشروع عباره عن صوره بسيطه توضح كيفيه العمل

يمكن الاطلاع عليها من المشاركه هذه

/index.php?showtopic=243770&st=20&p=1210124entry1210124

بالتوفيق جميعا

Software Developer
Mahmoudkelany.com


 

#8

بالنسبة لاقتراح الأخ mina الصراحة أني طلبت هكذا أمر من الإدارة هنا

لكن الأمر لم يتم لأسباب إدارية تقنية ليس المكان للتفصيل فيها

على كل اقترح فتح حساب على sourceforge لهكذا أمر

مع التأكيد هنا على أن الشيفرة جميعها ملك الفريق العربي والمطورين العاملين على المشروع

هل يعرف الجميع ماهية SVN؟ على كل هذا مقال كتبته عن الموضوع كلام عن CVS

بالنسبة للشيفرة اطلعت إطلاع مبدئي على الخادم

ووجدت أنه يتم فتح socket لكل مستخدم يسجل دخوله على الخادم

هذا سيؤدي إلى انهاك الذاكرة بعد أقرب فرصة ممكنة

لذا أرى أن نغير الهيكلية الخاصة بالخادم

بحيث يتم إغلاق الاتصال مع الخادم بمجرد الإنتهاء من التواصل معاه

بالطبع يبقى الفيديو والصوت streaming هو النقطة التي تحتاج إلى الكثير من التواصل مع الخادم لذى يبقى الاتصال مفتوح لحد انتهاء المحادثة

فما رأيكم في هذا الكلام؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#9
علاء الصالحي كتب:

بالنسبة للشيفرة اطلعت إطلاع مبدئي على الخادم

ووجدت أنه يتم فتح socket لكل مستخدم يسجل دخوله على الخادم

هذا سيؤدي إلى انهاك الذاكرة بعد أقرب فرصة ممكنة

لذا أرى أن نغير الهيكلية الخاصة بالخادم

بحيث يتم إغلاق الاتصال مع الخادم بمجرد الإنتهاء من التواصل معاه

بالطبع يبقى الفيديو والصوت streaming هو النقطة التي تحتاج إلى الكثير من التواصل مع الخادم لذى يبقى الاتصال مفتوح لحد انتهاء المحادثة

فما رأيكم في هذا الكلام؟

تحياتي

+1

--

Mina Fouad

Computer & Systems Engineering Dpt.

Faculty of Engineering

Alexandria University

#10
علاء الصالحي كتب:

بالنسبة لاقتراح الأخ mina الصراحة أني طلبت هكذا أمر من الإدارة هنا

لكن الأمر لم يتم لأسباب إدارية تقنية ليس المكان للتفصيل فيها

على كل اقترح فتح حساب على sourceforge لهكذا أمر

مع التأكيد هنا على أن الشيفرة جميعها ملك الفريق العربي والمطورين العاملين على المشروع

هل يعرف الجميع ماهية SVN؟ على كل هذا مقال كتبته عن الموضوع كلام عن CVS

بالنسبة للشيفرة اطلعت إطلاع مبدئي على الخادم

ووجدت أنه يتم فتح socket لكل مستخدم يسجل دخوله على الخادم

هذا سيؤدي إلى انهاك الذاكرة بعد أقرب فرصة ممكنة

لذا أرى أن نغير الهيكلية الخاصة بالخادم

بحيث يتم إغلاق الاتصال مع الخادم بمجرد الإنتهاء من التواصل معاه

بالطبع يبقى الفيديو والصوت streaming هو النقطة التي تحتاج إلى الكثير من التواصل مع الخادم لذى يبقى الاتصال مفتوح لحد انتهاء المحادثة

فما رأيكم في هذا الكلام؟

تحياتي

ما الاسم المقترح للحساب ؟؟

تقصد قطع الاتصال فى حاله ما كان العميل idel ؟ اى لا يقوم بعمل اى شىء ؟؟؟

ام ماذا تقترح ؟؟

انا اوافققك الرائ ان كان هذا لا يؤثر على النظام العام

يعنى عندما تكون idel وقد تم قطع الاتصال بينى وبينك

ولكن فى الحقيقه انا لم اقم بغلق البرنامج

فعندما يقوم احد الاصدقاء بارسال محادثة الى هل ستصل ؟؟ وكيف تصل وقد تم الغاء الاتصال ؟

Software Developer
Mahmoudkelany.com


 

#11
اقتباس

هل يعرف الجميع ماهية SVN؟ على كل هذا مقال كتبته عن الموضوع كلام عن CVS

شرح وافي ومختصر .. ماقصرت أخي علاء.

< متابع :)

عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..

{ لا ينال العلم مستحٍ ولا مستكبر }

#12

النقطة هنا أن على أن العميل أن يتحول إلى خادم والخادم سيتحول إلى عميل

أقوم أنا بتسجيل الدخول على الخادم فيقوم الخادم بأخذ الـ IP الخاص بي

ثم يقوم العميل بفتح ServerSocket خاص بي

وغندما يريد الخادم التواصل مع العميل يفتح Socket عادية للاتصال به

وكأن الوضع انقلب

بالطبع سيبقى لو أراد العميل نفسه إرسال رسالة للخادم هنا لا نستطيع العمل في هذا الوضع إلا بتجديد الاتصال مع الخادم

سيتواصل بتفح اتصال جديد مع الخادم في الوضع الطبيعي (الموجود حالياً لدى محمود)

هناك حل أقل عدائية هنا

وهو إبقاء الاتصال مفتوح لمدة معينة مادام العميل فعال

وهذا لتخفيف من عملية حجز وتحرير الموارد على الخادم

هل وصلت الفكرة؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13

فعلا الفكره وصلت

وهى دى كانت المفروض فكرتى من الاول انى اخد الـ ip والجهازين يشتغلوا pear2pear

لكن نسيت اعمل الموضوع دا فى قاعده البيانات

فلجأت ان يكون كل شىء على السيرفر

لكن اعتقد اننا سنقوم باعاده بناء جزء الـ network كاملا

Software Developer
Mahmoudkelany.com


 

#14

بالنسبه لل IP

واجهتني مشاكل كتير في التعامل معه

لان عشان اعمل اتصل مابين جهازين مش علي نفس ال subgateway لازم استخدم

static IP

#15

اعتقد انك مش هتاخد الـ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

http://www.whatismyrealip.com/

Software Developer
Mahmoudkelany.com


 

#16

ليه استخدمت الIPدا؟؟؟

 public static final String CONNECTION_URL = "169.254.234.41";
#17
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

Software Developer
Mahmoudkelany.com


 

#18
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 ليه عاملها ثريد بيوقفها ثانيه

انا شايف انا ملهاش لازمه و بتضيع وقت عالفاضي

ممكن مثلا تحسب الوقت اللي بياخدو لغايه ما يكونكت او يوصل الريكوست

لان اعتقد لما يكترو اليوزرز اللي عالسيرفر اكيد هيبقي بطئ شويه

#19

تنبيه على اللغة أخي Alex programmer رجاءاً التزم

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#20

بالنسبه لموضوع الThread معمول لعملية الحركه التى تراها امامك

فقط انما عمليه الاتصال تكمن فى الاتصال بعد ان يتم تحميل الBar بالقيمه 100

فعملية الاتصال تتم مباشره لكن البطئ لا يكون فى الاتصال فالسيرفر البطئ هذا موجود لعملية الحركه فى الـBar فقط

وهذا لا يؤثر مطلقا على الاتصال فقط هو عملية جمالية من وجهه نظرى

Software Developer
Mahmoudkelany.com


 

#21

السلام عليكم ورحمة الله وبركاته

أنا اعتذر جدا على التأخير ولكن اعذرونى كان عندى امتحانات والحمد لله انتهت

انا لم انهى قراءة الكود بعد

ولكن سأقرأه ان شاء الله ولو فى أسئلة سأبديها

وأنا جاهز لأى أمر ان شاء الله أو تكليف

تحيــــاتى

1
#22

وعليكم السلام ورحمه الله وبركاته

حمدلله بالسلامه :)

يارب تكون امتحانات كانت كويسه وكدا

ومنتظرينك بس اسرع :D

Software Developer
Mahmoudkelany.com


 

#23
علاء الصالحي كتب:

تنبيه على اللغة أخي Alex programmer رجاءاً التزم

تحياتي

اسف جدا اخي علاء

المشكله اني من الاسكندريه لزلك اللغه عندي غير جيده ولكن وعد سوف التزم باللغه

و لحسن الصدفه اسمي ايضا علاء :happy:

Mahmoud Kelany كتب:

بالنسبه لموضوع الThread معمول لعملية الحركه التى تراها امامك

فقط انما عمليه الاتصال تكمن فى الاتصال بعد ان يتم تحميل الBar بالقيمه 100

فعملية الاتصال تتم مباشره لكن البطئ لا يكون فى الاتصال فالسيرفر البطئ هذا موجود لعملية الحركه فى الـBar فقط

وهذا لا يؤثر مطلقا على الاتصال فقط هو عملية جمالية من وجهه نظرى

lممكن نقوم باستخدام الthead دا في شئ مفيد لكي يكون له فائده اكتر من الشكل الجمالي فقط

ولكن انا اعتقد ان الاستصال بالسيرفر ممكن ياخد وقت ؟؟؟ :mellow:

#24

في شئ نريد ان نعمله

Conference

بمعني ان اكتر من userيتكلمو مع بعض

#25
Alex programmer كتب:

و لحسن الصدفه اسمي ايضا علاء :happy:

lممكن نقوم باستخدام الthead دا في شئ مفيد لكي يكون له فائده اكتر من الشكل الجمالي فقط

ولكن انا اعتقد ان الاستصال بالسيرفر ممكن ياخد وقت ؟؟؟ :mellow:

هههههه تصدق صدفه وحشه ههههه اول مره اعرف ان اسمك علاء :D

ماشى بس خلى بالك انه لفتره الاضافه فقط , طب عندك حل اخر ؟؟؟

بالنسبه للاتصال بالسيرفر مش هياخد وقت اوووى وقت غير ملحوظ

Alex programmer كتب:

في شئ نريد ان نعمله

Conference

بمعني ان اكتر من userيتكلمو مع بعض

ان شاء الله هيتعمل طبعا

بس بلاش تكتب بخط كبير يا عم الحاج

الخط الصغير حلوووو

Software Developer
Mahmoudkelany.com


 

هذا الموضوع مغلق.

مواضيع مشابهة