Monthly Archives: ژوئن 2018

تجربه کوتاهی به نام زبان go

Tags :

Category : موارد دیگر

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

در بنچ مارک های مختلف زبان Go به عنوان یکی از سریع تربن زبان ها معرفی میشه و این منو خیلی وسوسه کرد که یک روز را برای برسی این زبان اختصاص بدم 

من با node.js کارکردم که این زبان هم بعد زبان Go سرعت خوبی داره اما برنامه نویسی با زبان جاوا اسکریپت زمانی که کد های شما زیاد میشه کمی سخت میشه ( کد ها بسیار تو در تو میشن ) برای همین می خواستم زبان گو را هم مورد برسی قرار بدم

شروع کار با زبان گو انقد ها هم بد نبود کمی ساختار شکنی در زبان دیده میشه برای مثال شما در زبان جاوا برای تعریف یک تابع به این صورت عمل میکنید 

public int getCount(){
 return 0;
}

حالا توی زبان گو 

func getCount() int {
 return 0;
}

خب همین طور که مشاهده میکنید جای int با نام تابع جابه جا شده  😕 و از func برای تعریف تابع استفاده شده 

یکی از چیز هایی که در مرحله بعد روی مخ آدم راه میره این ویژگی زبان Go هست که شما از تمام متغییر هایی که تعریف میکنید باید استفاده کنید یعنی یا یک متغییر را نباید تعریف کنید یا اگر تعریف کردید باید ازش استفاده کنید مگرنه با پیغام خطا مواجه می شوید این ویژگی کمی کار تست کد هارا مشکل میکنه 

اما بخش دیگه ای که کلا نظر من رو درباره زبان گو تغییر داد زمانی بود که می خواستم از جیسون استفاده کنم

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

var get = JSON.parse( json );

get.result.list[0].id

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


آموزش استفاده از دیتابیس در اندروید

در ساخت برنامه های همیشه ممکن است نیاز داشته باشیم یک سری از اطلاعات را ذخیره و بازیابی کنیم در برنامه های اندروید راه حل منطقی استفاده از دیتابیس sqlite است .

در این آموزش نحوه استفاده آسان و سریع از این دیتابیس آموزش داده می شود برای شروع کار ابتدا کتابخانه KDB را که کار آن ساده کردن کار با دیتابیس هست را به پروژه خود اضافه میکنیم 

allprojects {
  repositories { 
   ...
   maven { url 'https://jitpack.io' }
  }
}


dependencies {
          ...
         implementation 'com.google.code.gson:gson:2.2.4'
         implementation 'com.github.parsgit:KDB:1.0.1'
	}

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

KDB.init(MainActivity.this,"db_name");

به جای عبارت db_name می توانید نام دلخواه خود را بنویسید

در مرحله دوم باید جدول های( table )  مورد نظر خود را ایجاد کنیم به مثال زیر توجه کنید

KDB.CreateTableQuery createTableQuery=new KDB.CreateTableQuery();
createTableQuery.Table("users")
                .Column("id").INTEGER().KEY_AUTO().Add()
                .Column("name").TEXT().Add()
                .Column("username").TEXT().NULL_ABLE(false).Add()
                .Column("age").INTEGER().DEFAULT(0).Add()
                .Build();

فرض کنید ما میخواهیم اطلاعات یک سری کاربر را که شامل نام و نام کاربری و سن می باشد را ذخیره کنیم پس با کد بالا جدولی به اسم users ایجاد میکنیم جدول users باید داری ستون هایی با نام های id , name , username , age باشد تا بتوانیم اطلاعات را در انها ذخیره کنیم 

توضیح : در این قسمت از کد

 Column("age").INTEGER().DEFAULT(0).Add

ستون age ( سن ) را ایجاد میکنیم و نوع آن را عدد صحبح ( INTEGER )  و مقدار پیش فرض را صفر در نظر گرفته ایم

تا اینجا ما یک دیتابیس به همراه جداول مربوطه ایجاد کردیم حالا نوبت آن رسیده که اطلاعاتی را در دیتابیس ذخیره کنیم برای ذخیره اطلاعات در sql از دستور INSERT استفاده میکنیم

KDB.query("insert into users (name,username,age) values ('beny','nitrocode.ir',24)") .exec();

// یا به صورت زیر عمل میکنیم

JsonObject values=new JsonObject();
        values.addProperty("name","beny");
        values.addProperty("username","nitrocode.ir");
        values.addProperty("age",24);

        KDB.query("insert into users (name,username,age) values (:name,:username,:age)",values)
                .exec();

با استفاده از کتابخانه KDB می توان مقدار پارامتر ها را به صورت جیسون ابجکت یا ارایه لیست ارسال کرد در قسمت دوم کد بالا ما یک متغیر جیسون آبجک با نام values ایجاد کردیم و مقادیر name , username , age را مقدار دهی کردیم .

روش سوم مقدار دهی پارامتر ها به صورت ارایه لیست هست که من خودم بیشتر از این روش استفاده میکنم در کد زیر می توانید نحوه کار را مشادهد کنید

ArrayList<String> params=new ArrayList<>();
        params.add("myname-test");
        params.add("abcd");
        params.add("24");

        KDB.query("insert into users (name,username,age) values (?,?,?)",params).exec();

در روش سوم باید ترتیب ورود اطلاعات را در نظر داشته باشد

SELECT ( بازیابی اطلاعات ثبت شده )

برای فراخانی اطلاعات از دیتابیس از دستور SELECT استفاده میکنیم چند روش مختلف SELECT را مشاهده کنید

JsonArray result = new JsonArray();

// دریافت تمام اطلاعات ثبت شده در جدول
result = KDB.query(" select * from users ").getJsonArray();

//دریافت اطلاعات یک کاربر بر اساس نام کاربری
ArrayList<String> params=new ArrayList<>();
params.add("nitrocode.ir");

result = KDB.query(" select * from users where username = ? ",params);

// دریافت اطلاعات کاربرانی که سنشان بیشتر از 20 سال است
ArrayList<String> params=new ArrayList<>();
params.add("20");

result = KDB.query(" select * from users where age > ? ",params);


 

UPDATE ( ویرایش اطلاعات )

در این مثال فرض میکنیم اطلاعات کاربری به نام علی در دیتابیس ما وجود دارد

// اطلاعات فرضی کاربر در دیتابیس ما
name      : ali
username  : ali156
age       : 18

که ما می خواهیم سن او را که در دیتابیس 18 ثبت شده به 30 تغییر دهیم

JsonObject values=new JsonObject(); values.addProperty("username","ali156"); values.addProperty("age",30);

KDB.query(" update users set age = :age where  username = :username",values).exec();

با اجرای کد بالا اطلاعات کاربر با نام کاربری ali156 جستجو می شود و سن او به 30 تغییر پیدا می کند

DELETE ( حذف اطلاعات )

ArrayList<String> params=new ArrayList<>();
params.add("ali157");

KDB.query(" delete from users username = ? ").exec();

این کد اطلاعات ali را حذف میکند


جستجوی هوشمند