آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مسابقه کد نویسی شماره 1 : 4000 امتیاز پاداش برای این کلاس

uncocoder  10 سال پیش  7 سال پیش
+32 0

به یک جواب کامل و بدون نقص 4000 امتیاز اهدا میشه ( هدف امتیاز نیست بلکه افزایش دانش دوستان از جمله خود نویسنده کلاس است و امتیاز بهانه )

شرایط مسابقه را در پایینتر بخونید.

 

سوژه مسابقه

یک کلاس کامل برای ارتباط به وب سرویس با امکانات زیر:

  • ارسال درخواست با پارامترهای دلخواه به سرور ( راهنمایی: ارسال JSON مفید است ). 300 امتیاز
  • تعبیه یک onReceiveListener که پس از دریافت پاسخ فراخوانی شود. 200 امتیاز
  • سورس کد سمت سرور ( می تواند ساده و کار راه انداز باشد، اما باید باشد ) 200 امتیاز
  • ذخیره کردن پاسخ سرور ( Cache کردن پاسخ ) و بازیابی آن. 1300 امتیاز
  • Cache دارای زمان Expire باشد و اگر از لحظه ذخیره آن مدت قابل تنظیمی گذشته بود، معتبر نباشد و دوباره از اینترنت درخواست شود. 500 امتیاز
  • استفاده از Builder Design Pattern برای تعریف متدها ، تنظیمات و ... 1000 امتیاز
  • تمیز بودن کد بر اساس Sun Java Convention & Naming و اصولی بودن ساختار 500 امتیاز

 

شرایط و نحوه مسابقه

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

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

پیشنهاد، انتقاد و ... از این مسابقه را، فقط و فقط در قسمت نظر همین سئوال ( نه جواب ها ) و نه درج جواب جدید، ثبت کنید.

+1 0
سلام این کارتون عالیه. ولی ما که هنوز به اون مرحله نرسیدیم. اما از این کار حمایت میکنیم. (10 سال پیش)
+2 0
خیلی عالیه عالی!!!! ممنون این کار ها ضامن بقاست (10 سال پیش)
0 0
استاد اگه اینجا جواب ها درج بشه که ممکنه بقیه کپی کنن یا یه قسمت کار خلاقانه ای باشه که طرف 2 ساعت روش فکر کرده تا بهش رسیده واینجا بذاره بقیه با 30 ثانیه بهش میرسن! جوابها براتون ایمیل بشه بهتر نیست؟ (10 سال پیش)
0 0
ضمن حمایت از نظر جناب sadeghbarout ، استاد یعنی یه کلاس جاوا واقعا؟ برنامه اندروید نه؟ (10 سال پیش)
0 0
ساختار Listener رو پیدا نکردم ، یادمه استاد یه جایی توضیح میداد ، میگفت ببینید دقیقا مثل alertdialog و.. ، چیزی یه الان میخوام ساختار تعریف listener هست یا اینکه استاد دقیقا کجا توضیح دادن یادمه تو لیست ویو یه اشاره ای کردن ولی هرچی گشتم پیدا نکردم:| (10 سال پیش)
0 0
استاد منظورتون از این عبارت چیه دقیقا؟"ذخیره کردن پاسخ سرور ( Cache کردن پاسخ ) و بازیابی آن." . یعنی اگه این مقادیرو یه بار قبلا فرستاده بود ، بدون فرستادن دوباره مقادیر به سرور ، جواب قبلی سرور رو برگردونه؟ میشه این قسمتو به صورت خلاقانه نوشت یا حتما باید از خاصیت cache خود کلاسهای اندروید استفاده کرد؟ (10 سال پیش)
0 0
صادق جان چیزی گه تو ذهن منه همون یه فیلد تایم هست ، که اگه از الان مثلا 10 ثانیه گذشته بود دوباره بگیر وگرنه جواب موجود در دیتابیس رو برگردون -- یادت میاد استاد بیلدر و listener رو کجا توضیح دادند ؟ :| (10 سال پیش)
0 0
builder رو که یادم نیست توضیح داده باشن ولی listener رو که توی همون مبحث interface ها توضیح دادن بخش 3-8. اگه تو مباحث استاد builder رو پیدا کردی یه خبری هم به ما بده ;) (10 سال پیش)
0 0
ما که فعلا جا موندیم :( (10 سال پیش)
0 0
در خصوص ایده موافق هستم، به ایمیل که نمیشه ارسال کرد چون خیلی برای من چک کردنش سخته. پس یک قانون جدید می ذاریم. هنوز دارم بهش فکر می کنم، شما فعلاً کد ها رو بنویسید، بزودی میگم چی کار کنیم. (10 سال پیش)
+1 0
در خصوص جاوا بودن، بله دقیقاً جاوا است. هیچ ربطی هم به اندروید ندارد. پس سعی کنید کلاسی مستقل از پکیج ها اندروید بنویسید. اما کلاسهایی که می تونن نتایج رو نشون میدن، می تونه اندرویدی هم باشه. اما کلاس اصلی مستقل از اندروید است. (10 سال پیش)
0 0
شما می تونید نتیجه وب سرویس رو به همراه زمان دریافتش در فایلی ذخیره کنید و از روش دوباره بازیابی کنید. این میشه همون Cache (10 سال پیش)
0 0
استاد هیچکدوم از نظرات این تاپیک تو پیامهای من نیومد ، هرچند من ، مشترگ هستم :| (10 سال پیش)
0 0
MAH230 هیچ کس جانمونده ، اول این که محدودیت زمانی نداره ، دوم من هم هنوز شروع نکردم ، فقط یه نگاهی انداختم (10 سال پیش)
0 0
با تشکر از شما استاد گرامی......خیلی ایده جالبی هست.....فقط لطفا محدودیت زمانی نزارید چون واقعا بعضی ها وقت آزادشون کمه (10 سال پیش)
0 0
در مورد دوم ذکر شده دیگه "هیچ مدت زمانی برای این کار در نظر گرفته نشده و هر کس می تواند سورس خود را در هر زمانی ارسال کند." (10 سال پیش)
0 0
استاد حالا که دارید بهش فکر میکنید و میگید با ایمیل سخته ، یه صفحه توی سایت درست کنید که فقط هرکس بتونه جواب خودش رو ببینه و ویرایش کنه وفقط شما بتونید همه پاسخ ها رو ببینید. میدونم ممکنه براتون یکم وقت گیر باشه همچین چیزی به سایت اضافه کنید ولی ظاهرا این آخرین مسابقه تون نیست. پس فکر کنم ارزششو داره. (10 سال پیش)
0 0
خیلی خیلی عالیه فقط موجب از بین رفتن تمام اعتماد به نفسم شد :( (10 سال پیش)
+3 0
یادش بخیر اون موقع چِقَدَر خنگ بودم نتونستم این کلاس ساده رو بنویسم :| گذشت زمان چه ها که نمیکنه، امیدورام تو سایت جدید بازم از اینا داشته باشیم تا یک سال بعدش بیام یه همیچین کامنتی رو بنویسم D: (9 سال پیش)
0 0
دوستان جواب این مسابقه رو استاد تو کدوم آموزش گفته؟ میخوام ببینم json رو چطور فرستادن (9 سال پیش)
+2 0
آموزش ماژول وب سرویس رو مطالعه کنید ، جز قسمت های جدید در آموزش ها هست. (9 سال پیش)
0 0
یه سوال! الان با وجود کتابخانه ای مثل volley آیا نیازی به نوشتن همچین ماژولی هست ؟ آیا خیلی از کارهایی که استاد تو آموزش وب سرویس گفتن، رو این کتابخونه برا ما هندل نمیکنه ؟! (مثل onResponse و onErrorResponse و setRetryPolicy و ... ) (7 سال پیش)
+1 0
تا زمانی که می شود کد خودمون رو بنویسیم و به بهترین نحو کار کنه، هیچ نیازی به نصب کتابخانه نیست. توجه داشته باشیم که در برنامه نویسی آماتور و غیر حرفه ای ( و ماژول بندی ) ، استفاده از کتابخانه اولین گزینه و نوشتن آن توسط برنامه نویس آخرین گزینه است. اما در برنامه نویسی حرفه ای و اصولی نوشتن کد توسط برنامه نویسی بهترین شیوه و استفاده از کتابخانه ها آخرین گزینه ( و راه ناچاری ) است. البته گاهاً مشاهده می شود برخی برنامه نویسان به ظاهر حرفه ای برعکس این موضوع را اعتقاد دارند. (7 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
مجتبی یگانه  10 سال پیش
+5 0

دیدم دوستان با دیزاین پترن بیلدر مشکل دارن گفتم یکم راهنمایی شون کنم ، البته از یکم بیشتره ، تقریبا 1000 امتیاز :)) 

فقط یک کلاس جاواست ، به اندروید ربطی نداره ، 

new java project > 
create a new class in defaultpackage "WebService.java"

حالا سورس زیر رو past کنید تو کلاس و پکیح رو run as java application کنید و کنسول رو ببینید 

اساتید اگر درست پیدا نکردم اطلاع بدید :)

class Runner {

    public static void main(String args[]) {
        WebService myWebService = new WebService.Builder()
                .SetFirstName("Mojtaba")
                .SetLastName("Yeganeh")
                .build();
        System.out.print(myWebService.toString());
    }
}


public class WebService {

    private String FirstName;
    private String LastName;


    private WebService(Builder builder) {
        this.FirstName = builder.FirstName;
        this.LastName = builder.LastName;
    }


    @Override
    public String toString() {
        return FirstName + " " + LastName;
    }


    public static class Builder {

        private String FirstName;
        private String LastName;


        public Builder SetFirstName(String InputFirstName) {
            this.FirstName = InputFirstName;
            return this;
        }


        public Builder SetLastName(String InputLastName) {
            this.LastName = InputLastName;
            return this;
        }


        public WebService build() {
            return new WebService(this);
        }
    }

}
0 0
من تو اینترنت گشتم و تقریبا همچین ساختاری نوشتم ولی نمیدونم چرا موقع usage یه خطای خاصی میداد( بدون اینکه compile) کنم) و هیچ راه fix ی هم ارائه نمیداد! حالا امشب باید دوباره تستش کنم. ولی کاش اینجا نمیذاشتی کد رو.فوقش راهنمایی متنی میکردی . بابا ناسلامتی مسابقه است . اگه من نتونم با سرچ و تست کردن به جواب برسم خوب حقمم نیست امتیازی بگیرم. (10 سال پیش)
0 0
صادق جان من تک خور نیستم :| ، مفت چنگتون :) ، اگه شما میخواید خودت دنبالش بری ، لزومی نداره سورس من رو ببینی ، ولی خوب من گذاشتیم که بقیه هم انگیزه داشته باشن ، ولی موضوع اینه این سورس کامل نیست ، جای کار داره (10 سال پیش)
0 0
والا منم تک خور نیستم ولی بحث یادگیری با بحث مسابقه 2 چیز جداست. اگه تک خور بودم اصلا توی این فروم فعالیتی نمیکردم و اگه چیزی رو بلد بودم به کسی نمیگفتم ولی میبینی که اگه چیزی بلد باشم از کسی دریغ نمیکنم. ولی مسابقه یعنی اینکه ببینیم کی چندمرده حلاجه؟ کی چقدر چیز یاد گرفته. وگرنه من مخلص بچه ها هم هستم. (10 سال پیش)
0 0
"چنانچه نیاز به راهنمایی یا سرنخ بود، مجاز است زیر جواب خودتان بپرسید، راهنمایی خواهم کرد. نمره منفی هم ندارد." من بیشتر رو حساب این حرف استاد بود که این رو گذاشتم ، اینم مثل اینه که من که تاپیک بسازم و بگم نحوه ی کار دیزاین پترن بیلدر ، و از نظر خودم مشکلی نداره ، اگر استاد صلاح ندونستن پاکش میکنم :| ، گفتم هدف من انگیزه ی بیشتر برای ادامه ی کار بود ، چون از نظرات معلومه که خیلی ها میگن ما تو این سطح نیستیم ، بلد نیستم ، شروع نکردم ، بعدا و ... ! ، به هرحال ممنون که وقت میزارید ، من خودم خیلی چیزا از شما یاد گرفتم ، تشکر (10 سال پیش)
0 0
از نظر من سرنخ یا راهنمایی همون توضیحات میشه نه کد گذاشتن ولی هرجور مایلی.ولش کنیم دیگه کشش ندیم. سرت سلامت ;) . منم از شما ممنونم که تو این فروم وقت گذاشتی و میذاری و مشخصا منم از شما خیلی چیزا یاد گرفتم و بخاطرش ممنونم :) (10 سال پیش)
پاسخ به سوال 
sadeghbarout  10 سال پیش
0 0

استاد من کلاسو نوشتم. ولي در قالب 3 فايل جاوا شده. 

کاملا با پکيج هاي java نوشته شده . با قابليت cache کردن و بازيابي آن و داراي زمان expire براي cache. داراي ساختار built pattern و قابليت ارسال namedValue ،JSON و String.

البته چون نميشه از پکيج  org.json استفاده کرد پس نميشه يه شي JSON ارسال کرد و تنها راه ، ارسال يه String ه که متنش يه JSON باشه . اگه اين مد نظرتون نيست لطفا  پکيجي از جاوا که توش شي JSON داره معرفي کنيد.

درضمن يه onRecieveListener هم نوشتم براش (البته ناقصه) ولي نميدونم همون چيزي هست که مد نظرتونه يا نه. لطفا در این باره راهنماییم کنید.

حالا براتون ايميلش کردم . اگه بعدا تصميم گرفتيد که بايد اينجا يا هرجاي ديگه بذارمش هم ، چشم. 

ممنون

پاسخ به سوال 
uncocoder  10 سال پیش
+11 0

امتیاز مسابقه تخصیص داده شد.

بزودی آموزش کلاس وب سرویس بصورت ویدئویی تدوین می شود.

تا قبل از این موضوع چنانچه کد را نوشته اید، به ایمیل بنده ارسال کنید.

برای برگزاری مسابقات بیشتر، و بستر سازی سایت باید فکر بیشتری بکنم که البته در این شرایط تعداد شرکت کنندگان در مسابقه نباید دو نفر! باشه.

0 0
بسیار ایده جالب و موجب پیشرفتی هستش. اما برای امثال بنده که فعلا در سطح مبتدی هستند کمی سخت هست (امیدوارم با مشاهده ویدئوها به سطحی مطلوب جهت شرکت در مسابقات بعدی برسم.محرک خوبی برای ارتقا سطح دانش هست) (10 سال پیش)
0 0
خسته نباشید استاد این آموزش که فرمودید در تدوین های سری جدید که براش تاپیک زده شده هست؟ (10 سال پیش)
0 0
بله، پاسخ مسابقه رو در سری جدید تدوین به شکل ویدئو ارائه می دم. (10 سال پیش)
0 0
ممنون استاد عزیز (10 سال پیش)
پاسخ به سوال 
حجت   10 سال پیش
0 0

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

این بدرد میخوره که بفرستم یا نه؟

 لازم به ذکر است که یکسری اطلاعات رو برای ورود به برنامه از هاست دریافت میکنه.

 

+1 0
چون باید شرایط مسابقه برای همه یکسان باشه فکر نکنم ! (10 سال پیش)
پاسخ به سوال 
ebham33  8 سال پیش
+1 0

با سلام

من  ماژول وب سرویس توسط استاد رو دیدم یه نکته و مشکل اساسی از دید من که تو کدها بود عرض کنم اگه برداشتم اشتباهه اصلاحش کنید.

استاد در کلاس تست تاریخ انقاضی کش را بصورت ثانیه می دهد.(نه میلی ثانیه).

  .cacheExpireTime(30)

در کلاس وب سرویس هم به همان صورت ذخیره میکند.

  outputStream.writeLong(when);

ولی زمانی که فراخونی میکند زمان هم اکنون را بصورت میلی ثانیه خوانده و زمان کش را بصورت میلی ثانیه مقایسه می کند اما مقدار when که خوانده می شود همچنان بر اساس ثانیه هست نه میلی ثانیه.

cacheExpireTime*1000  میشود میلی ثانیه، now بصورت میلی ثانیه خوانده میشود . اما when بصورت ثانیه می باشد.

 long when = inputStream.readLong();
            long now = System.currentTimeMillis();
            if (now - when > cacheExpireTime * 1000) {
                new File(cacheDir + "/cache.dat").delete();
                return null;
            }
+1 0
اگر تو منظور اشتباهی هست اصلاحش کنید چون بنظرم کد مربوط به تاریخ انقضای کش درست نیست. (8 سال پیش)
+1 0
cacheExpireTime مربوط به زمان باطل شدن کش هست که در کلاس مربوطه تبدیل به میلی ثانیه شده همونطور که اشاره کردید when زمان ایجاد کش هست که از ابتدا توسط جاوا با دستور System.currentTimemillies به میلی ثانیه گرفته شده و خطایی در کد استاد وجود ندارد ، اگر یکبار دیگر با دقت بیشتر ویدئو را مطالعه کنید متوجه مسئله خواهید شد . (8 سال پیش)
0 0
متشکرم درست است ویدیو را کامل مشاهده نکرده بودم بعد از تماشا به اشتباه خودم پی بردم بازم ممنونم (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .