تصحیح ویدئو های گذشته ( مهم و فوری )
از آنجاییکه سرفصل ها تا حد زیادی کامل شده است، قرار است پس از عرضه ویدئو های جدید، تمامی ویدئو های قبلی که دچار مشکل بوده اند به نوعی ویرایش شود تا اثری کم عیب بجا بماند. لذا به همیاری شما دوستان گل نیاز دارم.
روش همیاری
چنانچه در ویدئو ها معایبی از جمله دسته زیر دیدید، لطفاً نام و زمان آن ویدئو را ارسال نمایید. لازم به ذکر است که تاریخ انقضای این تاپیک حداکثر تا 14 مرداد 93 خواهد بود و از 14 ام مرداد ویدئو های تصحیح شده، آپلود خواهند شد.
معایب قابل گزارش
- خطاهای مفهومی ( مثل اشتباه در خصوص نوشته شدن Stackoverflow با اسکریپت PHP )
- ناقص بودن ویدئو ( خاتمه بی سر و ته یک ویدئو یا بخش )
- صدای زنگ تلفن، صدای دوره گرد کوچه! و ...
- و هر آن چیز دیگری که جزء دسته پایین نباشد ...
معایبی که گزارش ندهید بهتر است
- صدایی که ناشی از گرفتگی گلو یا بینی است ( من سینوزیت مضمن دارم و قابل درمان نیست ! ) :) همیشه در ویدئو ها سعی شده، قبل از ضبط از مقدار فراوانی دکونژستان استفاده شود بلکه احتناق برطرف شود!!!
- خطاهای گفتاری در گویش زبان ( مثل آندروید و اندروید ) که خیلی اثری در منطق و مفهوم ندارد. English دوستان ببخشند.
تغییراتی که در ویدئو ها اعمال خواهد شد
- تصحیح معایب گزارش شده از سوی شما
- تصحیح کل فایل صدا بگونه ای که صدا Normalize نشود و به این ترتیب در قسمت های سکوت صدا، نویز ها و صدای نفس کشیدن از ویدئو حفظ خواهد شد و رنجش گوش دادن به صدای ناخراش بنده را کمتر می کند.
- تغییر Watermark ویدئو ها به طرحی گویا تر و واضح تر.
روش گزارش
برای گزارش لطفاً شماره ویدئو + زمان و علت را در قسمت نظر ( فقط نظر ) درج نمایید. مثل:
ویدئو 11 قسمت 2 زمان 12:02 تا 12:05 علت: یه چیزی
یا
ویدئو 11 قسمت 2 زمان 01:05:45 علت: یه چیزی
به امید ویدئو های با کیفیت بهتر - بهنام آقاجانی
مثل اینکه منم ید طولایی در خطایابی پیدا کردم
مورد بعدی اینکه: ویدیو 7 قسمت 1 (پروژه تبدیل واحد).
در آخر این فیلم روش ساده تری را برای انجام پروژه پیشنهاد میکنید که متاسفانه کد را نوشتید ولی اجرا نکردید و اجرا هم نمی شود (خطا دارد)
سورس پروژه خودتان را هم دیدم اونجا هم مشکل داشت
دوستانی که میتونن لطف کنند و خطای این سورس را رفع کنند
package com.uncocoder.course.app.unit_converter;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class DistanceActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.distance);
final EditText edtMm = (EditText) findViewById(R.id.edtMm);
final EditText edtCm = (EditText) findViewById(R.id.edtCm);
final EditText edtM = (EditText) findViewById(R.id.edtM);
final EditText edtKm = (EditText) findViewById(R.id.edtKm);
Button btnConvert = (Button) findViewById(R.id.btnConvert);
btnConvert.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
double mm = 0;
if (edtMm.getText().toString().length() > 0) {
mm = Double.parseDouble(edtMm.getText().toString());
}
if (edtCm.getText().toString().length() > 0) {
mm = Double.parseDouble(edtMm.getText().toString()) * 10.0;
}
if (edtM.getText().toString().length() > 0) {
mm = Double.parseDouble(edtMm.getText().toString()) * 1000.0;
}
if (edtKm.getText().toString().length() > 0) {
mm = Double.parseDouble(edtMm.getText().toString()) * 1000000.0;
}
edtMm.setText("" + mm);
edtCm.setText("" + (mm * 0.1));
edtM.setText("" + (mm * 0.001));
edtKm.setText("" + (mm * 0.000001));
}
});
}
}
پیشنهاد کلیشه ای: استاد لطفا همه پروژه هایی که می نویسید حتما تست کنید تا از صحت آن مطمئن شویم
با تشکر
dvd#2
ویدئوی 02-15 زمان 19:53 تا 45:37
اشاره گر موس ثابت بوده و پیگیری آموزش رو سخت میکنه واسه من مخصوصاً زمانی که داخل layout دارین ظاهر کنترل ها رو تنظیم میکنید یعنی 26:16 ثانیه کیفیت آموزش خرابه میشه
با سلام
ویدئو 21 قسمت 2 زمان 20:04 تا 20:35 علت: در لایبرری ها زمانی که با ریسورس سروکار داشته باشیم باید از لایبرری اندروید استفاده کنیم و زمانی که فقط با کد محض سروکار داریم باید از لایبرری جاوا استفاده کنیم!! شما هردو رو فرمودید اندروید!
شرمنده که دیرتر از زمان گفته شده فرستادم.
ممنون از توجه شما
استا د من اولین بارم هست که برنامه نویسی می کنم ولی با این وجود با آموزش های شما خیلی خوب پیش رفتم یه مشکلی که هست این که شما گفتین بدونه هیچ تجربه برنامه نویسی می تونید یاد بگیرید استاد شما تو ی ویدیویه رایگان تو حلقه for درست مفهوم
mynumber % index == 0 رو نرسونیدن من که مبتدی هستم یه خورده واسم مشکله گرفتنش میشه یه خورده بیشتر توضیح بدین که چی باید مقدارش 0 بشه مقدار باقی مونده از کجا گرفته میشه که باید توی این شرط 0 بشه // توی زمان : 00:01:36 چک کنید این جا رو میگم
اونجا که در مورد آی دی ای صحبت میشه و نصب جی دی کی فقط به نسخه 32 بیت اشاره می کنید . که باعث شد من یک ماه به اشتباه بیفتم و از ایکلیپس اندروید استفاده کردم و بعضی کارها مثل ویرایش قسمت یو آی به سختی انجام دادم . لازم به ذکر همین اکلیپس روی نسخه 64 بیتی نصب میشه
سلام
میخواستم یه پرسش جدید ایجاد کنم، اما دیدم چه جایی بهتر از اینجا؟
در حال حاضر بخش 1 انقدر قدیمی شده که عملا توضیحات استاد تبدیل شده به blah blah blah (معذرت میخوام اینجوری گفتم، چیز دیگه ای به ذهنم نرسید)
مورد اول که از همه مهمتره، ویدیوی اندروید بنویسم، تمام اطلاعاتش غلط شده! میگم غلط شده، چون خیلی از زمان ضبطش میگذره. همه اش در مورد اندروید 2 و این که سهمش چقدر زیاده و جایگاهش کجاست صحبت شده و.....
مورد دوم -البته من در این مورد متخصص نیستم -محیط برنامه نویسی- موقع تماشا آدم احساس میکنه در گذشته پرسه میزنه. به هرحال اندروید استودیو الان کامل شده و تقریبا مشکلی نداره، کاربرهایی که تازه میخوان یاد بگیرند بهتره مستقیم برن سراغ اون، نه ابزار چندسال پیش که داره منسوخ میشه.
چون این موارد اولین ویدیوها هستند، کارآموز احساس بدی بهش دست میده و احساس میکنه این آموزش ها از دور خارج شدن. ویدیوهای بعدی چون تخصصی هستند و در طول زمان اصول ثابت مونده، یا برنامه نویسی جاوا تغییری نکرده ایرادی ندارند، اما اولین ویدیوها تصور بدی به وجود میاره.
در قسمت اين همه پروژه! پروژه تقويم جلالى فقط نتيجه رو تو Logcat نمايش ميدين و 50 درصد ديگش كه UI هست رو راجبش حرفى نزديد و ويديو تموم شد و به سراغ پروژه بعد رفتين!
با سلام
از آنجاییکه کاربران زیادی در مورد دشواری و ازجمله در مقدمه خود جناب آقاجانی در مورد List view اشاره های شده است بنظر بنده بهتر است مثال های بیشتری برای تغییر و استفاده از سورس تولید شده درج شود
سلام و خسته نباشید
تا قسمت پنج فیلم های اموزشی دیدم
یه پیشنهاد دارم برای درک بیشتر مطالب توسط مخاطب
البته با توجه اینکه اکثر کاربر های ویژه و خودم تازه با برنامه نویسی اشنا شدن این توصیه میکنم چون هیچ ضمیه قبلی ندارند و فکر و تصور این می کنند برنامه نویسی یک شبه و فقط با تکیه بر یک منبع است و کلا ره صد ساله یک شبه رفتن منظورم هست
به نظرم :
در مباحث به ویژه قسمت های ابتدای اموزش توضیحات بیشتر کنیم مثلا بعضی چیزا ها که جناب مهندس می فرماید نگران نباشید و بعدا کاملا واستون جا می افته و فعلا از روش رد بشید کاربر در همون مطالب که واضح هستن را هم گیج می شود و وقتی این مسئله هم با ان مواجه میشود بیشتر بیشتر گیج می شود چون ضمینه قبلی ندارد دانش برنامه نویسی
من پیشنهادم اینه همون علامت سوال های و بخش های که فهمیدن ان را به زمان بعد موکول می شود داخل همان ویدیو توضیحات کمی بیشتر بدهیم
و فکر میکنم یه قسمت های رو با شی گرایی اموزش داده شده و یه قسمت ها با کد نویسی من فکر میکنم اول با شی گرایی و یا همون Drop انجام بگیره بعدش که یه تصور ذهنی ایجاد شد که کی و کجا مشخص شده بیایم و با کدنویسی همون قسمت انجام بدهیم
امید وارم منظورم رسانده باشم
با سپاس از جناب مهندس اقاجانی عزیز و زحمت کش
با سلام
امروز تمامی آموزشهای اندروید رو تموم کردم. می خواستم از جناب آقاجانی تشکر کنم، آموزشهاشون بسیار خوب بود و نسبت سایر آموزشهای اندروید که قبلا دیده بودم، توضحیات جامعتر و دید کارآمد تری به کدنویسی دارن.
مطلب دیگری رو هم می خواستم بگم، البتنه مطمئن نیستم که این صفحه مربوط به همین موضوع است یا خیر. در آموزش پایانی مربوط به Parse Json و گرفتن اطلاعات از وب سرویس اشتباه کوچکی رخ داده، که البته فکر می کنم بخاطر import کردن و استفاده از پروژه قبلی این مطلب فراموش شده. کد زیر مربوط به آخرین فایل 07 - Using JSON Format in Project هست که در کلاس Recycler و Main Activity فراموش شده:
private void populatePersonsUsingWebservice() {
ModuleWebservice webservice = new ModuleWebservice();
ArrayList<NameValuePair> pairs = new ArrayList<>();
pairs.add(new BasicNameValuePair("count", "50"));
pairs.add(new BasicNameValuePair("gender", "male"));
pairs.add(new BasicNameValuePair("type", "contact"));
webservice
.url("https://ware.uncox.com/api/profile/generate")
.inputArguments(pairs)
.enableCache(false)
.listener(new ModuleWebservice.Listener() {
@Override
public void onSuccess(String data) {
try {
JSONArray profiles = new JSONObject(data).getJSONObject("feeds").getJSONArray("profiles");
for (int i=0; i<profiles.length(); i++) {
JSONObject profile = profiles.getJSONObject(i);
PersonStruct person = new PersonStruct();
person.firstname = profile.getString("firstname");
person.lastname = profile.getString("lastname");
person.gender = profile.getString("gender");
person.email = profile.getString("email");
person.imageUrl = profile.getString("imageUrl");
String imageId = person.imageUrl.replace("//ware.uncox.com/asset/profile/male/", "").replace(".jpg", "");
person.imageId = Integer.parseInt(imageId);
dbHelper.insert("person", new String[]{"firstname","lastname","gender","email"}, new Object[] {person.firstname ,person.lastname,person.gender,person.email});
personList.add(person);
adapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
و دومی هم که مربوط به RecyclerView هست:
public void onBindViewHolder(ViewHolder holder, int position) {
PersonStruct item = list.get(position);
holder.txt_name.setText(item.firstname + " " + item.lastname);
holder.txt_email.setText(item.email);
Drawable image = AssetImageReader.getImage("male/male_" + item.imageId + ".jpg");
holder.img_profile.setImageDrawable(image);
}
همینطور که می بینید، در قسمت RecyclerView نیاز بر این بود که String یا Url آدرس عکس در لیست نمایش داده بشه ولی هنوز از فولدر Assests داره تغذیه می شه. من کد رو کمی تغییر دادم و پایین گذاشتم:
public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
PersonStructure item = list.get(position);
holder.name.setText(item.firstname + " " + item.lastname);
holder.family.setText(item.email);
Drawable image = AssetHelper.getImage("male/male" + item.imageId + ".jpg");
holder.photo.setImageDrawable(image);
Picasso.get().load(item.imageUrl).fit().into(holder.photo); // دو خط بالا حذف شده و این خط اضافه شده
}
و در MainActivity هم این یک تغییر کوچیک داده شده:
try {
JSONArray profiles = new JSONObject(data).getJSONObject("feeds").getJSONArray("profiles");
for (int i=0; i<profiles.length(); i++) {
JSONObject profile = profiles.getJSONObject(i);
PersonStruct person = new PersonStruct();
person.firstname = profile.getString("firstname");
person.lastname = profile.getString("lastname");
person.gender = profile.getString("gender");
person.email = profile.getString("email");
person.imageUrl = profile.getString("imageUrl");
String imageId = person.imageUrl.replace("//ware.uncox.com/asset/profile/male/", "").replace(".jpg", "");
person.imageId = Integer.parseInt(imageId);
person.imageUrl = "https:" + profile.getString("imageUrl"); // در این بخش هم نیازی به گرفتن لینک به صورت استرنیگ نبود و تغییر کوچکی داده شد
dbHelper.insert("person", new String[]{"firstname","lastname","gender","email"}, new Object[] {person.firstname ,person.lastname,person.gender,person.email});
personList.add(person);
adapter.notifyDataSetChanged();
}
لطفا جناب آقاجانی اصلاحتی که لازم می دونن رو حداقل در سورسی که همراه ویدیو هست، اعمال کنند.
با تشکر.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .