PDA

View Full Version : حفاظت از سورس



hamed_bostan
یک شنبه 29 بهمن 1385, 08:55 صبح
با سلام خدمت دوستان . نمی دونم از سوال من چه برداشتی مپشه اما من به پطه مشکلی خوردم . من توی یکی از قراردادام با عنوان اینکه شرکت کارفرما می ترسه کد نویس بره و سیستمش بدون پشتیبان بمونه مجبور شدم سورس رو به کارفرما تحویل بدم . اما اصلا دلم نمی خواد کسی تو سورس برنامه من دست ببره و یا در اصل کسی نتونه از سورس من استفاده کنه چون متاسفانه قیمت هایی که بعضی وقتها توی قرارد دادها به کد نویس های بد بخت تجمیل میشه و کد نویس مجبوره بپذیره خیلی کمه حالا دیگه کد نویس بیاد کدش رو هم در اختیار شرکت بذاره تا اونا هم هر طور می خوان سواستفاده کنن . می خوام ببینم کسی راه حل ، ترفند یا چیزی پیش نهاد میده که منونن از کد سواستفاده کنن و یا پیش کسوت ها راه حل منطقی و منصفانه ای واسه این قرارداد ها دارند؟
من پروژه ام asp.net هست با دیتابیس sql server 2000
1- چطور نذارم به کدم کدی اضافه شه .
2- چطور نذارم گسی از کدم سواستفاده کنه؟

ممنون میشم رو این موضوع بحث بشه .
یا حق

reza_rad
یک شنبه 29 بهمن 1385, 09:10 صبح
شما موقع قرارداد تعهد میدید که این سورس رو جای دیگه نفروشید و ...
یعنی اونها می تونن چنین تعهدی از شما بگیرند

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

ضمن اینکه توی قرارداد می تونه پشتیبانی هم مشخص بشه...

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

عین این می مونه که مثلا کسی بره عکاسی عکس بگیره، عکاسی بهش نگاتیو رو نمیده. بلکه میگه هروقت خواستی چاپ کنی دوباره بیا...


البته همه اینها به توافق دو طرف بستگی داره شاید کسی بخواد سورس بده و هیچ مشکلی هم نداشته باشه ولی اگه نخواد هم میشه نداد.

البته من خودم از هواداران OpenSource هستم و در مورد خودم سورس اگه بخوان میدم. ولی هر کسی دست خودشه با کدش چی کار کنه;)

hamed_bostan
یک شنبه 29 بهمن 1385, 13:02 عصر
بهروز جان منم می دونم که قرارداد توافقیه اما بحث سر اینه که توی یه شهر کوچیک مثل جایی که من فعلا هستم قرارداد بزرگشون 5-6 ملیونه و به دلیل اینکه دوستان کد نویس تازه وارد یا ... هم خیلی لطف دارن سورس تو که تحویل یه شرکت شد دیگه خلاصه . برنامه ات رو بر می دارن همه بلایی سرش میارن آخرش هم می گن ما سورس گرفتیم . در صورتی که پشتیبانی و یا غیره با خودته .
شما ها که از بازار کار خبر دارین چرا؟
ضمنا من مثلا می خوام کد یه برنامه ام رو به منظور آموزشی در اختیار کاربرم بدارم ولی نتونن کدم رو دستگاری کنن . یه سایت asp.net یادمه دیدمه کد قابل دیدن بود اما یه dll کنارش بود . واسه خودم هم جالب بود اما اگه حتی یه خط کد به برنامه اضافه می کردی برناه اجرا نمی شد .
کسی می دونه چی باید کرد؟

Behrouz_Rad
یک شنبه 29 بهمن 1385, 14:09 عصر
بهروز جان
ایشون فامیلشون با بنده یکی هست! اسمشون که یکی نیست!

----------------------------------------------------
ضمن تایید صحبت های آقای رضا راد...
عرض شود که زیاد نمیشه روی قرارداد تکیه کرد. توی این مملکت که هر مامان قهر کرده ای ادعای برنامه نویس بودن می کنه و جز خراب کردن بازار کار و ایجاد برنامه هایی در پایین ترین سطح استاندارد کار دیگه ای بلد نیست و با وجود ارباب رجوع هایی که بیشترین کیفیت رو با کمترین قیمت خواهان هستند، همین آب باریکه ای که داری رو بچسب تا همینم از دستت نره!
اگر کسی مرض داره که پروژه ای رو که تو به اون دادی دستکاری کنه و خرابی اون رو تقصیر تو بندازه، تو مسئول رفتارهای نابهنجار دیگران نیستی و حداکثر کاری که میتونی بکنی اینه که اون فرد رو به عنوان یک بیمار روانی خطرناک با درجه ی بحرانی به تیمارستان معرفی کنی!

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

به عنوان مثال خودم رو عرض می کنم؛ فکر نکن که من از تمامی دانش، اطلاعات، مقالات و کدهایی که از من احتمالا دیدی، در کارهایی که انجام میدم استفاده می کنم! خیر! رفتار من کاملا به تعداد شپش های موجود در جیب کارفرما بستگی داره و بس!
پول بیشتر = کیفیت بیشتر.

در مورد عدم توانایی در ویرایش کدها، این یک چیز مطلق نیست و خیلی راحت میشه کدها رو دستکاری کرد.
اون DLL می تونه DLL ای باشه که به عنوان یک Http Module به برنامه معرفی شده باشه. در اینصورت حذف اون از Web.Config اون رو بی اثر می کنه!
و با اگر بخوایم کمی پیچیده تر کار کنیم، می تونیم متدهای کپسوله شده ای رو در یک DLL تعریف کنیم (مثلا کار با داده ها) و در تمامی نقاط برنامه از اون استفاده کنیم.
اینکه چطور میشه که با حذف و اضافه کردن کدها برنامه اجرا نمیشه، یک راه عملیش، بررسی میزان حجم فایل کامپایل شده هست که مسلما با حذف و اضافه کردن دستورات، این میزان حجم تغییر می کنه.
راه دیگه ای به نظر(م) نمیرسه وجود داشته باشه.

موفق باشید.

hamed_bostan
یک شنبه 29 بهمن 1385, 19:06 عصر
بهروز جان شرمنده .خودت که میدونی کد نویسی بعد یه مدت روی چشم آدم اثر می ذاره . بلاخره پیریه و هزار درد و ناتوانی .
بابت راهنماییت هم ممنون اما یه سوال . چطور هجم رو کنترل کنم زمانی که سورس رو به کاربر می دم . خوب طرف راحت می تونه خط کدی رو که این موضوع رو چک می کنه از برنامه حذف کنه ولی خوب نصایح به جایی یود . ضمنا تشگر قبلی رو هم که از اقا رضا می خواستم بکنم و از شما کردم پس می گیرم :لبخند: . آقا رضا ممنون از کمک شما هم .
ولی باز هم پذیرای پیشنهادات دوستان هستیم .

samanes
یک شنبه 29 بهمن 1385, 19:25 عصر
یه جوری‌ می تونی‌ متوجه شی که source تغییر کرده یا نه اونم اینه که بیای hash فایل سورس رو بگیری. hash که می دونید چیه؟؟؟
hash هر چیزی تو دنیا مقدار ثابتیه... اگه یه بیت از کدت تغییر کنه hash نیز کاملا تغییر می کنه. حالا باید یه برنامه بنویسی هر چند وقت یکبار hash سورست رو بگیره و با hash اولیه مقایسه کنه اگه تغییر کرده بود به طور خود کار پاکش کنه.. که به دردسرش نمی ارزه...
برای اینکه hash یک فایل رو بگیری یه سری به codeproject بزن. Dariush Tasdighi رو search کن.
که کد این استاد بزرگ رو دانلود کنی..

Behrouz_Rad
یک شنبه 29 بهمن 1385, 19:39 عصر
خوب طرف راحت می تونه خط کدی رو که این موضوع رو چک می کنه از برنامه حذف کنه

می تونیم متدهای کپسوله شده ای رو در یک DLL تعریف کنیم...
...............

hamed_bostan
دوشنبه 30 بهمن 1385, 01:25 صبح
بابت برداشتن خط کد که hash کار ساز نیست

بابت متد های کپسوله سازی بهروز جان یه کم توضیح بده منظورت چیه .

greenway
دوشنبه 30 بهمن 1385, 08:33 صبح
اصلا دلم نمی خواد کسی تو سورس برنامه من دست ببره و یا در اصل کسی نتونه از سورس من استفاده کنه چون متاسفانه قیمت هایی که بعضی وقتها توی قرارد دادها به کد نویس های بد بخت تجمیل میشه و کد نویس مجبوره بپذیره خیلی کمه حالا دیگه کد نویس بیاد کدش رو هم در اختیار شرکت بذاره تا اونا هم هر طور می خوان سواستفاده کنن .

یک نکته ای هست ، سورسهای شما همیشه قدیمی می شوند و اگر خودتان بخواهید آنها را مجددا بنویسید ، از سورسهای قدیمی استفاده بسیار کمی خواهید کرد. این موضوع به چند عامل بستگی دارد ، مثلا تغییر تکنولوژی ، تغییر مهارت های برنامه نویس ، فراهم شدن الگوریتمهای بهتر ، تغییرات سیستم عامل و .... نتیجه شخصی من این بوده که سورس بدون برنامه نویس هرگز برای شرکت های ایرانی قابل استفاده نیست و سورسهای منتشر شده هم مخصوصا در زمینه Application Programming ، اتوماسیون ها و مشابه آن پس از مدت کوتاهی ارزش اولیه خود را از دست خواهند داد. برای نمونه شش ماه دیگر به سورسی که امروز نگرانش هستید نگاهی بیاندازید. برای پروژه ای که شما مطرح کردید ، استفاده از WebService در چند Mirror مختلف برای قسمتهای حساس کدتون رو به شما توصیه می کنم. در صورتی که پروژه روی اینترنت نیست هیچ راه امنی غیر از قرارداد نگهداری و پشتیبانی نمیشه پیشنهاد کرد. در ضمن یادتون باشه که هزینه نگهداری یک سیستم نرم افزاری همیشه بالاتر از هزینه تولید اون هست ( که برای برنامه نویس این هزینه معمولا به صورت زمان حساب میشه )

hamed_bostan
سه شنبه 01 اسفند 1385, 09:30 صبح
سورسهای شما همیشه قدیمی می شوند و اگر خودتان بخواهید آنها را مجددا بنویسید ، از سورسهای قدیمی استفاده بسیار کمی خواهید کرد.

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


نکته دوم که می خواستم بابتش بحث بشه اگه ممکنه پیش کسوت ها یا کسانی که دارن تو بازار کار کار می کنن یه قیمت متعادلی رو بابت پروژه ها و پشتیبانی اون ها (با سورس و بدون سورس) پیشنهاد بدن . حداقل حتی اگر خیلی هم دقیق نیست آدم یه چیزی دستش میاد .

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

Behrouz_Rad
سه شنبه 01 اسفند 1385, 15:07 عصر
توجه: این مطالب نظرات شخصیه بنده است و به هیچ حزب، گروه و سازمانی وابسته نیست!

برنامه نویس روی زمین نمی مونه!

مبلغ یک پروژه کاملا در وحله ی اول بستگی به جایی داره که کارفرمای پروژه در اونجا زندگی می کنه! (که البته خودت به اون اشاره کردی)
دومین عامل مهم! دولتی یا غیر دولتی بودن پروژست که اگر خیلی خوش شانس باشی که در عنفوان جوانی یک پروژه ی چرب و چیلی دولتی به تورت بخوره، می تونی به ریش خیلی از برنامه نویس ها که میگن برنامه نویسی یعنی عملگی بخندی و مثل من الان در حال دادن آخرین قسط های بانک مسکن باشی...
سومین عامل، رابطه است که یک Direct Link بسیار محکم به دومین عامل اشاره شده داره!
البته رابطه و رفاقت دو کلمه ی کاملا جداست و باید سعی کنی که حتما این جدایی رو حفظ کنی.
کسی که رفیقت شد، انتظارهاش از تو بالا میره و در نتیجه بیشترین فشار رو بهت میاره تا کار رو سریعتر و با مبلغ کمتر انجام بدی!
متاسفانه اینجا جای تعریف کردن خاطرات نیست وگرنه ....
چهارمین عامل، زرنگ بودن خودته و اینکه از نظر سطح IQ در چه رتبه ای قرار داری...
این زرنگ بودن در تمامی موارد می تونه صدق کنه. از نظر برنامه نویسی، از نظر برقراری رابطه و کلهم اجمعین...

برای اینکه در مورد قیمت هم نظری داده باشم، عرض شود که:
مواردی که برخورد کردم و میانگین قیمت در هر سبک برنامه نویسی به شکل زیر بوده:
برنامه نویسی ساعتی: 3000 تا 4500 تومان.
برنامه نویسی جزیی بدون قرار داد: صفحات استاتیک 20 تا 30 تومان. صفحات پویا 60 تومان.
برنامه نویسی پروژه ای: این قسمت اصلا قابل پیش بینی نیست و حداقل چیزی رو میشه اسمش رو پروژه گذاشت که حداقل قیمت اون از 400 هزار تومان شروع بشه!

خواندن مجدد اولین خط این پست خالی از لطف نیست!

موفق باشید.

Pioneers
سه شنبه 01 اسفند 1385, 15:11 عصر
من هم همین مشکل شما رو داشتم...

یه سورس ار تقویم فارسی داشتم که متدهای خودم رو هم گذاشتم داخلش و بعد Dotfuscateش کردم. البته نام متدهای اصلی رو تغییر ندادم. بهشون گفتم این یه dll هستش که از اینترنت گرفتم و قابل تغییر نیست...

شما هم میتونی کارای چک کردن رو تو این فایل انجام بدی. در ضمن متدها رو هم private بذار...

hamed_bostan
چهارشنبه 02 اسفند 1385, 00:30 صبح
ممنون از راهنمایی های دوستان .
ان شالله بتونیم به یه جامعه کاری سالم دست پیدا کنیم.
یا حق