PDA

View Full Version : گفتگو: تجزیه و تحلیل نرم افزار و پیاده سازی ان



Veteran
دوشنبه 25 دی 1391, 19:05 عصر
با سلام خدمت تمامی دوستان عزیز و عرض خسته نباشید به شما عزیزان.

هدف از این تاپیک اینکه در رابطه با نحوه پیاده سازی یک نرم افزار حالا هر نرم افزاری به گفتگو بپردازیم.
البته بنده اطلاعات چندانی ندارم و بیشتر سوال میکنم تا به جواب دادن بپدازم.

اولین چیزی که ذهن بنده رو درگیر کرده نرم افزار هایی مثل مسنجر ها هستند.

یک مسنجر قطعا یک قسمت برای ثبت نام کاربر داره که اطلاعات رو میگیره و اون هارو وارد دیتابیس میکنه
و یک قسمت برای وصل شدن به مسنجر داره که اطاعات مورد نظر رو میگیره و اون هارو در دیتابیس با کوئری جسجو میکنه.اگر بعد از جستجو تعداد رکورد های پیدا شده بیشتر از 0 باشه یعنی همچین کاربری در سیستم وجود داره و کاربر وارد مسنجر میشه!

حالا قسمت بعدی مد نظر بنده لیست دوستان (ADD LIST) هست.
میخواستم نظر دوستان رو در این باره بدونم.

به فرض بنده 10 تا اد لیست دارم.این ادلیست ها قطعا در دیتابیس ذخیره میشن با یک کد یکتا که مخصوص نام کاربری بنده هست.

اما حالا اگر یکی از دوستان بنده به مسنجر وصل بشه در مسنجر من ایدی اون روشن میشه.
حالا این قسمت به چه شکل هست ؟
یعنی ای پی سیستم بنده وقتی متصل میشه در دیتابیس ذخیره میشه و دوست بنده وقتی انلاین میشه
مسنجر دوست من ای پی من رو از دیتابیس میخونه و یک پغام به سیستم بنده در پشت پرده ارسال میشه که فلان کاربر رو روشن کن ؟؟؟؟ :متفکر:

اگر تعداد یوزرها در دیتابیس زیاد بشه به مشکل بر میخوریم :متفکر:

نظر دوستان در این باره چیه :متفکر:

SlowCode
دوشنبه 25 دی 1391, 21:18 عصر
سلام
موضوع نسبتا سختی رو انتخاب کردی ولی فکر کردن روش خوبه.
فکر نکنم مسنجرها با این روش کار کنن، چون اینطوری آنلاین بودن مشخص نمیشه. مگر اینکه وقتی sign out میشی فیلد آی پی رو پاک کنه تا معلوم بشه هستی یا نه.
چون وقتی برنامه میخواد ببینه فلانی آن هست یا نه باید یه معیاری واسه آن بودنش باشه، صرفا با ذخیره آی پی نمیش کاری کرد.
به نظرم مسئله مهم تر اینه که وقتی یکی از دوستات آن شد چطوری باید بفهمی؟ یه تایمر بزاری و همش کوئری بزنی تا ببینی مقدار فیلد کدوم یک از دوستان 1 شده؟؟؟ یا چی؟ چون سرور اگه بخواد به همه اینا جواب بده...:گیج:

دوستان دیگه هم شرکت کنن تا یه چیزی یاد بگیریم.

Veteran
دوشنبه 25 دی 1391, 22:54 عصر
قرار ما کد نویسی نیست.فقط تحلیل مسئله هست.که خیلی میتونه به ما کمک کنه تا پیشرفت کنیم.اصل برنامه نویسی تحلیل مسئله هست.دوستان هر نظری دارن بگن

حمید محمودی
دوشنبه 25 دی 1391, 23:15 عصر
در رابطه با نحوه پیاده سازی یک نرم افزار حالا هر نرم افزاری به گفتگو بپردازیم.
اولین چیزی که ذهن بنده رو درگیر کرده نرم افزار هایی مثل مسنجر ها هستند.
یکی از راه های خوب و تقریبا بی دردسرِ موجود، بررسی نرم افزارهایی هست که قبلا منتشر شده و قابلیت های خوبی داره که میشه با آنالیز کد و/یا طراحی اونها، میشه ایده های خوب گرفت و ایده های ناقص رو هم اصلاح کرد؛ یک سر به سایت هایی که نرم افزارهای OpenSource منتشر میکنند بزنید، و نرم افزارهایی که قصد دارید شبیه سازی کنید رو نگاه کنید....


http://sf.net/directory/os:windows/freshness:recently-updated/?q=Messenger
http://pscode.com/vb/scripts/BrowseCategoryOrSearchResults.asp?lngWId=&txtCriteria=Messenger

پارت هایی از برنامه رو هم میتونید، بصورت های پراکنده بصورت مقاله و/یا سورس در سایت های دیگه پیدا کنید؛

http://www.codeproject.com/search.aspx?q=Messenger&x=0&y=0&sbo=kw

Hashemvp
دوشنبه 25 دی 1391, 23:24 عصر
نیازی ب بررسی مداوم نیست
فقط کافیه توی زمانیکه کاربر مورد نظر انلاین میشه هنگام انلاین شدن ی مقداری مثلا "Online" رو ب سرور بفرسته و اونجا توی سرور بررسی بشه ک چ کسانی این ای دی رو اد کردن.
و این هم باید در نظر بگری ک یاهو ی قسمتی رو داره ک میتونی انلاین بشی و بصورت افلاین بیای بالا یا کلا اولش انلاین بشی و بعدش افلاین کنی و خیلی چیز های دیگه مثل استاتوس و ....
در ضمن توی این مسئله و تحلیل نرم افزار نقش پایگاه داده و طراحی اون و انومالی و هزار تا چیز دیگه هم دخیل هستن
ک هر کدوم نقش مهمی دارن

Veteran
سه شنبه 26 دی 1391, 00:24 صبح
فقط کافیه توی زمانیکه کاربر مورد نظر انلاین میشه هنگام انلاین شدن ی مقداری مثلا "Online" رو ب سرور بفرسته و اونجا توی سرور بررسی بشه ک چ کسانی این ای دی رو اد کردن.
اینم فکره خوبیه :متفکر:
خب پس باید سرور ای پی مارو در هربار وصل شدن ذخیره کنه توی دیتابس و بعد اینکه دوست ما انلاین شد و مقدار به سرور فرستاده شد اونجا به ای پی ما دوباره یک مقدار فرستاده بشه تا در مسنجر ما روشن بشه.
اما اگر به طور ناگهانی برق رفت سرور از کجا میفهمه کاربر دیگه متصل نیست ؟ :متفکر: پس باید دائما کاربر هارو از نظر بودن در شبکه چک کنه ؟ نه ؟
اما به نظر شما کاره سرور رو سنگین نمیکنه ؟
به نظر من ی سری عملیات ها باید در خوده سیستم کاربر انجام بشه:متفکر: همه عملیات اگر بخوایم بدیم به سرور.ترافیک میره بالا :متفکر:

Hashemvp
سه شنبه 26 دی 1391, 08:00 صبح
اما اگر به طور ناگهانی برق رفت سرور از کجا میفهمه کاربر دیگه متصل نیست ؟ :متفکر: پس باید دائما کاربر هارو از نظر بودن در شبکه چک کنه ؟ نه ؟


نه نیازی نیست همچنین کاری بکنه چون اینطوری چیز سرور در میاد
هر چقدر هم این سرور قدرتمند باشه ولی باز هم انجام همچنین کاری ک بصورت دائم بررسی کنه کار جالبی نیست
همونطور ک توی یاهو مسنجر میبینید هر چند دقیقه یکبار بررسی میکنه ب صورت پیش فرض هر 15 دقیقه است ک اگه 15 دقیقه کامپیوتر شما هیچ فعالتی نکنه
دیده باشید روی ای دی میزنه Idle ک توی تنظیمات خوده یاهو مسنجر هم هست ک میتونی مدت زمانشو بیشتر یا کمتر کنی

اگر برق هم بره بهمین شکله من بار ها شده ک برق رفته ولی ای دیم تا نیم ساعت بعدش حتی تا 2 ساعت بعدش انلاین بوده
این تنها در مورد یاهو نیست حتی در مورد باقی مسنجر ها هم بهمین شکله توی اسکایپ و گوگل تالک هم بهمین شکله

هر چند دقیقه یکبار بررسی میکنن نه هر ثانیه



اما به نظر شما کاره سرور رو سنگین نمیکنه ؟

برای مسنجری ک میلیون ها کاربر یا حتی میلیارد ها کاربر وجود داره باید سرور های قدرتمندی هم باشه
ولی هیچ کدوم بصورت دائم بررسی نمیکنه ک انلاین هستی یا افلاین



به نظر من ی سری عملیات ها باید در خوده سیستم کاربر انجام بشه:متفکر: همه عملیات اگر بخوایم بدیم به سرور.ترافیک میره بالا :متفکر:

توی سیستم های کاربر فقط داده ها رد و بدل میشه و نمیشه هیچ وقت ب سیستم کاربر اطمینان کرد و کار درستی هم هست4
توی مکان مناسبی نیست و معیار های دقیق و مطمئنی نداره
مثل پردازش گر قوی مثل مقدار رم و......
ک پردازش هایی رو ب روی سیستم کاربر بندازش
اگه این پردازش های روی سیستم کاربر بیافته ممکنه از محبوبیت اش کاسته بشه
وقتی سرور های بزرگ و قدرتمند هست دیگه نیازی نیست ک این کار ها رو بکنن
سرور های یاهو یا گوگل و امثال اینا اندازه ی شهر هست تقریبا!!!!!!!!!!!!!

m2011kh
سه شنبه 26 دی 1391, 14:23 عصر
درسته این که اختیاری رو به سیستم کاربر بدین اصلا کار مطلوبی نیست.
به هر حال ما در مورد سیستم اون شخص اطلاعی نداریم و ممکنه تداخل زمانی پیش بیاد.و پردازش های ما حافظه Memory کاربر رو اشغال خواهد کرد و مسلما این اتفاق برای کاربر خوب نیست.
هم امنیت برنامه زیر سوال میره.
بهترین کار همینه که در بازه های زمانی مشخص سرور کاربر هاشو چک کنه و موقع Online شدن هر کاربر به ادد لیست های اون هم پیام ارسال کنه و اون ها رو هم مطلع کنه.
MMD

m2011kh
چهارشنبه 27 دی 1391, 19:23 عصر
سلام
نکته بعدی سوال خود من هستش.
مثلا در همین مسنجر یکی از دو کلاینت میخوان بین هم فایل رد و بدل کنن.این رد و بدل باید توسط خود سرور انجام بشه یا این که اطلاعات دو کلاینت به هم داده بشه و اون ها به صورت پشت پرده با هم ارتباط برقرار کرده و فایل رو رد و بدل کرده و سپس ارتباط رو تموم کنن؟؟؟
به هر حال اگه بخوایم ارسال و دریافت فایل رو هم به عهده سرور بزاریم که کار سرور خیلی سنگین میشه.
خوشحال میشم از راهنمایی دوستان بهره مند بشم.
Thanks
MMD

Hashemvp
چهارشنبه 27 دی 1391, 21:35 عصر
سلام

دقیقا انتقال فایل هم ب عهده ی سرور هست
این عمل هم ب این صورت انجام میشه ک ب فرض مثال ی فایل داریم ک حجمش 10 مگابایت هست
مسنجر بر اساس کش از قبل تعیین شده ک این ب عهده طراحان نرم افزار هست
ک بطور مثال ما این 1 کیلو بایت میگیرم
زمانیکه میخواد فایل بین دونفر رد و بدل بشه مسنجر میاد اون فایل رو ب صورت باینری باز میکنی و کیلوبایت معادل بیت از اون فایل در حافظه میبره و داده ها رو همانند زمانیکه متن میخواد ارسال کنه به سرور
انتقال میده ب سرور بعد از دریافت سرور ، سرور اون کیلوبایت رو انتقال میده ب کاربری ک میخواد فایل رو بگیره
این روند همینطور تکرار میشه تا فایل انتقال داده بشه
این وسط هم هر اتفاقی مثل پایین امد سرعت اینترنت و قطع شد و غیره رد و بدل کردن فایل ناتمام ب پایان میرسه
هیچ فایلی توی سرور ب هیچ عنوان ذخیره نمیشه و فقط همین مقدار ک حافظه کش نرم افزار هست در سرور ذخیره میشه و اون هم بعد از انتقال پاک میشه

موفق باشید

Veteran
چهارشنبه 27 دی 1391, 22:46 عصر
به نظر من توی این کار نباید سرور دخالت کنه.چون ترافیک سرور میره بالا.
اما شاید بگین بدونم سرور نمیشه.چون دوتا کاربر به صورت مستقیم نمیتونن باهم ارتباط با قرار کنن.
من ی فیلمی در همین باره داشتم که میمود دوتا سیستم رو بدون ip valid به هم متصل میکرد.
دارم دنبالش میگردم.اگه دیدم.میزارم واستون.

Hashemvp
چهارشنبه 27 دی 1391, 23:06 عصر
دوست عزیز کسی نمیگه نمیشه
میشه ولی برای ی مسنجر قوی بهتره ک 99 درصد کار ها روی سرور انجام بشه بخاطر سهت و اطمینان و امنیت بیشتر

این روشی ک شما میگه ی باگ و راه نفوذ توی مسنجر باز میکنه ک باعث میشه انواع مخرب گر ها از این طریق براحتی ب سیستم دیگری نفوذ پیدا کنن ولی وقتی توی سرور باشه داده چک و بررسی میشه

و اینکه شرکت های بزرگ سرور هاشون قوی هست اگه نباشه پس بهتره کار نکنن

موفق باشید

m2011kh
پنج شنبه 28 دی 1391, 07:59 صبح
من تا حدودی حرف Vetarn رو قبول دارم.
درسته که امنیت برنامه تا حدودی زیر سوال میره ولی اگه ارتباط فایل هم بر عهده سرور باشه کار سرور خیلی سنگین میشه و همینطور طراحی سرور پیچیده تر میشه.
درسته که برنامه کاربر در اختیار ما نیست و امنیتش رو نمیتونیم تضمین کنیم ولی میتونیم رو امنیت کلاینت بیشتر کار کنیم.
MMD

Veteran
پنج شنبه 28 دی 1391, 15:51 عصر
ببینین ما من اقای ایکس میخوایم فایل به هم بدیم.اگر فایل به طور مستقیم به طرق مقابل انتقال داده بشه و سرور دخالتی در این کار نداشته باشه.من فایل رو به طرف مقابل میدم.اگر میخواست که درخواست رو قبول میکنه.و عملیات انتقال شروع میشه.اگر فایل رو نخواست در خواست رو رد میکنه.حالا به نظر شما این چه مشکلی امنیتی داره? به نظر منکه نداره.چون ما در انتقال فایل با سرور کاری نداریم.بعد اینکه دو حالت وجود داره طرف مقابل یا درخواست گرفتن فایل رو قبول میکنه یا نمیکنه.اگر مشکل امنیتی این روش داره لطفا به منم بگین.مسئولیت گرفتن فایل به عهده شخصه.و دیگه سرور هم الکی و بیخود مشغول نمیشه.

Hashemvp
پنج شنبه 28 دی 1391, 21:41 عصر
ببینین ما من اقای ایکس میخوایم فایل به هم بدیم.اگر فایل به طور مستقیم به طرق مقابل انتقال داده بشه و سرور دخالتی در این کار نداشته باشه.من فایل رو به طرف مقابل میدم.اگر میخواست که درخواست رو قبول میکنه.و عملیات انتقال شروع میشه.اگر فایل رو نخواست در خواست رو رد میکنه.حالا به نظر شما این چه مشکلی امنیتی داره? به نظر منکه نداره.چون ما در انتقال فایل با سرور کاری نداریم.بعد اینکه دو حالت وجود داره طرف مقابل یا درخواست گرفتن فایل رو قبول میکنه یا نمیکنه.اگر مشکل امنیتی این روش داره لطفا به منم بگین.مسئولیت گرفتن فایل به عهده شخصه.و دیگه سرور هم الکی و بیخود مشغول نمیشه.

دوست عزیز
امنیت این کار فقط توی همین ظاهری ک شما میگی نیست
کامپونت هایی ک استفاده میشه مثلا همین وینساک اگر تنظیمات درست رو روش اجرا نکنی و الگوریتم های خوبی استفاده نکنی کلی باگ داره و میشه نفوذ کرد
یاهو با این همه مهندس نرم افزاری ک داره تقریبا سالی 3 بار رو صد در صد هک میشه
ویندوز 8 بعد از چند ماه از طریق یکی از نرم افزار های گوگل ک ی برنامه sync فایل هست(اسمشو یادم نمیاد الان) ، باعث راه نفوذ و هک شدن سیستم می شد.
با اینکه از روش قبلی ک خودم گفتم ک اطلاعا ب سرور میره و مستقیم داده ها رد و بدل نمیشن ، و جالب بدونید ک این نفوذ از طریق حالت امن وب https رد و بدل میشد.

زمانیکه ک این رد و بدل از طریق سرور باشه باعث میشه ک داده اول اسکن بشن از طریق انتی ویروس و از این قبیل نرم افزار ها و بعد ب کاربر بعدی داده بشه ک
این تا حدودی سطح امنیت رو بالا میبره.
دیگه شما ببنید وقتی غول هایی مثل یاهو و گوگل نرم افزار ها و وب سایت هاشون راه نفوذ داره با اون سرور های فوق قدرتمند انتظار نداشته باش ک روش مستقیم بدون نفوذ باشه تازه دوبرابر میشه

بجر بحث امنیت بحث سرعت العمل مسنجر هم هست
شما فرض کن رفتی کافی نت
و اون کافی نت ی کامپیوتر سرور داره و باقی وصل شدن بهش(منظورم اینکه همه دستگاه از یک سی پی یو و رم و .... مرکزی استفاده میکنن)
ب طور طبیعی سرعت کمه چون ریموت شده ب دستگاه سرور
حالا فرض کن شما بخوای امنیت کلاینت رو ببری بالا این شامل کد های بیشتر و فعالیت سی پی یو بیشتر و فضای بیشتری برای رم میشه
و این کاربر رو اذیت میکنه.
و خیلی مسائل دیگه

موفق باشید

Veteran
پنج شنبه 28 دی 1391, 22:06 عصر
کامپونت هایی ک استفاده میشه مثلا همین وینساک اگر تنظیمات درست رو روش اجرا نکنی و الگوریتم های خوبی استفاده نکنی کلی باگ داره و میشه نفوذ کرد
ماکه قرار نیست نرم افزار رو بنویسیم اونم با وی بی 6 !

یاهو با این همه مهندس نرم افزاری ک داره تقریبا سالی 3 بار رو صد در صد هک میشه
ویندوز 8 بعد از چند ماه از طریق یکی از نرم افزار های گوگل ک ی برنامه sync فایل هست(اسمشو یادم نمیاد الان) ، باعث راه نفوذ و هک شدن سیستم می شد.
به عقیده بنده این حرف درست نیست چون یاهو داره هک میشه چون فلانی فلان بلا سرش اومده با خودمون رو دست کم بگیریم.

زمانیکه ک این رد و بدل از طریق سرور باشه باعث میشه ک داده اول اسکن بشن از طریق انتی ویروس و از این قبیل نرم افزار ها و بعد ب کاربر بعدی داده بشه ک
این تا حدودی سطح امنیت رو بالا میبره.
خب دیگه کاربر باید روی سیستم انتی ویروس داشته باشه.چرا ما بیایم کار رو دو برابر سنگین کنیم ؟
ما امنیت مسنجر و اطلاعات اون رو در نظر داریم که شامل اطلاعات کاربر هم هست.
اما اینکه ما بیایم فایل رو صرفا به خاطر اینکه کاربر دچار مشکل نشه رو در سرور چک کنیم به نظر من درست نیست.
کاربر خودش باید اطلاعات کافی و نرم افزار های امنیتی روی سیستم داشته باشه.



بجر بحث امنیت بحث سرعت العمل مسنجر هم هست
به نظر بنده همین که فایل رو ببریم به سرور اسکن کنیم و انتقال بدیم به کاربر بعدی سرعت کار افت میکنه.
====
در کل ممنون

Hashemvp
پنج شنبه 28 دی 1391, 22:26 عصر
به عقیده بنده این حرف درست نیست چون یاهو داره هک میشه چون فلانی فلان بلا سرش اومده با خودمون رو دست کم بگیریم.

حرف شما درست منم قبولش داره
ولی باید از تجربه باقی استفاده بهر حال چندین سال هست ک دارن فعالیت میکنن
و حرف های اول رو توی این زمینه میزنن





خب دیگه کاربر باید روی سیستم انتی ویروس داشته باشه.چرا ما بیایم کار رو دو برابر سنگین کنیم ؟
ما امنیت مسنجر و اطلاعات اون رو در نظر داریم که شامل اطلاعات کاربر هم هست.
اما اینکه ما بیایم فایل رو صرفا به خاطر اینکه کاربر دچار مشکل نشه رو در سرور چک کنیم به نظر من درست نیست.
کاربر خودش باید اطلاعات کافی و نرم افزار های امنیتی روی سیستم داشته باشه.


به نظر بنده همین که فایل رو ببریم به سرور اسکن کنیم و انتقال بدیم به کاربر بعدی سرعت کار افت میکنه.
====
در کل ممنون


دوست عزیز همینطور نیست ک شما میگی
اگر اخبار مربوط ب کامپیوتر رو دنبال کرده باشید
الان میدونستید ک ماکروسافت و اپل و حتی گوگل دارن بعضی از محصولات شرکت ادوبی و اوراکل رو کنار میزنن
بخاطر چی؟
بخاطر اینکه توی سال گذشته 30 درصد از نفوذ ها با این سیستم عامل ها و هک شدن ها از طریق نرم افزار ادوب ریدر و فلش پلیر بوده
و بهیمن خاطر ماکروسافت Silverlitgh رو ساخت
و همینطور گوگل WebGl رو ساخت

و 50 درصد نفوذ سیستم ها از طریق جاوا شرکت اراکل بوده

بهمین دلیل هاست ک یک برنامه باید از امنیت بالایی برخوردار باشه

موفق باشید