Android 47: HTTP Status Codes (HTTP Status Kodları)

  1. İnformational (İnformasiya xarakterli status kodlar)
    • 100 Continue (Sorğunun uğurlu olduğu də davam edilə biləcəyini bildirir)
    • 101 Switching Protocol (Server aldığı “protokol dəyişdirmə” istəyini yerinə yetirəcəyini bildirir)
  2. Success (Uğurlu sorğu bildirən status kodları)
    • *200 OK (Sorğu uğurla tamamlanmış və nəticə qaytarılmışdır)
    • *201 Created (Sorğu uğurla tamamlanmış və nəticədə yeni mənbə yaradılmışdır)
    • 202 Accepted (Server sorğunu qəbul edib lakin hələ yerinə yetirməyib)
    • 203 Non Authoritative İnformation (Soru uğurludur lakin başqa mənbədən nəticə qaytarılır)
    • *204 No Content (Soruğu uğurludur amma nəticə yoxdur)
  3. Redirection (Yöndərilən sorğuları bildirən status kodalrı)
    • 300 Multiple Choices (Serverdə sorğuya uyğun bir çox variant olduğunu göstərir)
    • 301 Moved Permonetly (Bir mənbənin həmşəlik başqa ünvana köçürüldüyünü və həmin yeni ünvana yönləndirildiyini bildirir)
    • 302 Moved Temporalily (Bir mənbənin müvəqqəti olaraq başqa ünvana köçdüyünü bildirir, ilkin ünvanın dəyişmədiyini bildirir)
    • 303 See Other (Fərqli bir mənbəyə GET sorğusunun göndərilməsi lazım olduğunu bildirir)
    • *304 Non Modified (İstənilən mənbədə əvvəlkindən fərqli yeni bir informasiyanın olmadığını bildirir və informasiya göndərilmir)
  4. Client Error (Göndərilən sorğu xətasını bildirən status kodları)
    • *400 Bad request (Sorğu səhv göndərilib)
    • *401 Unoutharized (Sorğu üçün profilə ehtiyac var)
    • 402 Payment Request (Ödənişə ehtiyac var)
    • *403 Forbidden (Mənbənin qadağan olunduğunu bildirir)
    • *404 Not found (Sorğu göndərilən ünvanın tapılmadığını bildirir)
    • *409 Conflict (Sorğu daxilində ziddiyət var)
    • 410 Gone (Mənbə yoxdur)
  5. Server Error (Server xətalarını bildirən status kodalrı)
    • *500 İnternal Server Error (Serverdə bir problem yarandı və sorğu cavablandırılmadı)
    • 505 HTTP Version not supported (HTTP Protokol versiyası dəstəklənmir)

 

* (ulduz) işarəsi “TOP-10” sorğuları göstərir

Qeyd: Azərbaycan dilində olan yazıların (Hətta türkcə), çox böyük bir hissəsi tərcümə, kopyadır. Ona görə də özünüzü ingiliscə oxumağa öyrəşdirməyiniz, ingilis dili öyrənməyiniz xahiş olunur.

Bu yazını yazarkən tərcümə, kömək aldığım linklər aşağıdakılardır:
1. https://www.mediaclick.com.tr/blog/http-server-durum-hata-kodlari-ve-anlamlari
2. https://www.restapitutorial.com/httpstatuscodes.html

Advertisements

OOP Java 22: Stack

Stack “Data structure” (Verilənlər strukturu) olub aşağıdakı formada extent/implement münasibətində olur:

(Şəklin mənbəsi)

Stack deyərkən last-in-ferst-out (sonuncu daxil olan ilk çıxar) başa düşülməlidir. Bunu da biz aşağıdakı şəkildə rahatlıqla görə bilərik:

(Şəklin mənbəsi)

Stack-in list yaradarkən aşağıdakı formada kodlardan istifadə edə bilərsiniz:

Stack<Integer> stackInteger = new Stack<>();
Stack<String> stackString = new Stack<>();

Stack-in əsas 5 metodu vardır:

  • boolean isEmpty(); – Stack listimizin boş olub olmadığını yoxlayır.
  • void push(Object item); – Stack-imizə yeni elemet əlavə edir.
  • Object peek(); – Stack listimizin sonuncu elemetini qaytarır.
  • Object pop(); – Stack listimizin sonuncu elemetini qaytarır və onu silir.
  • int search(Object item); – hansısa bir elementin stackdə varsa index-sini (yerini) qaytarır.

Gəlin bir ədəd nümunəylə məsələni yekunlaşdıraq:

import java.util.Stack;

public class Main {
	public static void main(String[] args) {
		Stack<Integer> stack = new Stack<>();
		System.out.println("Empty: " + stack);
		System.out.println("Empty: " + stack.isEmpty());
		
		stack.push(1001);
		
		System.out.println("Empty: " + stack);
		System.out.println("Empty: " + stack.isEmpty());

		stack.push(1002); 
		stack.push(1003);
		stack.push(1001);
		
		System.out.println("Non-Empty stack : "  + stack);
        System.out.println("Non-Empty stack: Pop Operation : "  + stack.pop());
        System.out.println("Non-Empty stack : After Pop Operation : "  + stack);
        System.out.println("Non-Empty stack : search() Operation : "  + stack.search(1002));
        System.out.println("Non-Empty stack : "  + stack.isEmpty());
	}
}

Android 46: Intentlə obyekt ötürmək

Xatırlayırsınızsa 27-ci yazımızda inentdən söz açmış, ardınca intent vasitəsiylə məlumat ötürmüş, almışdıq. Bu səfər isə intent vasitəsiylə obyekt ötürməyə çalışacağıq.

Gəlin “IntentObject” adında bir layihə başladaq, ardınca Student adlı sinif yaradaq. Bu bizim şagird üçün formalaşdırdığımız modelimiz olacaq. Daxilində şagiridn adı, soyadı, yaşı, oxuduğu sinif olacaq. Burada yaşı integer, digərləri String formada saxlanılacaq. Hamısı “private” olaraq qorunacaq, getter və setter (inkapsulasiya) istifadə ediləcək. Bura qədər olan hissəni özünüz həll edin. İndiyə qədər çox işləmişik. Bunu belə rahatlıqla edə bilmirsinizsə, bir problem var. Dostlar. Ciddən problem var. Yalandan üzdən oxuyub keçməyin. Nəyisə siz özünüz etməyi bacarmalısınız. Normal materialı bitirdik, xırdaçılıqlara keçirik. Siz artıq harasa staj üçün müraciət etmək yaşınızdasız, böyümək vaxtıdı. Bir iki aya iş üçün müraciət edəcəyik. Bərabər open source layihələr üzərində işləyəcəyik. Məni tək qoyacaqsınız? Olmaz helə. Hadi hadi. Yuxardakı linklərə keçid et bir də bax. Özün qurmağa çalış. Qura bilmirsən, araşdır, yenidən oxu, qur. Sonra sil. Heç bir yerə baxmadan yenidən qur. Sonra gəl yazının davamını oxu. Belə də, bəyənmirsən, boşdu, bu sayta göz at burdan öyrən. Əsas odu öyrən. Lap bilirsənsə, sən də yaz, izah etməyə çalış, blogunun linkini rəy yerinə qeyd et biz də gələk oxuyaq, biz də səndən öyrənək. Hamı hər şeyi bilir – ifadəsi doğru deyil. Mən “a”-nı bilirəm, sən “c”-ni, başqa biri “a”-nı məndən yaxşı bilir, “c”-ni səndən zəif. Yazsın, mən ondan “a”-nı öyrənim, sən də yaz ki, səndən “c”-ni öyrənsin. Söhbət açılmışkən, bu yaxınlarda kodrea komandası fəaliyyətə başladı, mediumdan tutmuş youtube-a qədər. Axtarış edin, tapın, onlardan öyrənin (mən də onarın materiallarını oxuyuram).

Qayıdaq mövzumuza. Burada Student sinfimiz Serializable sinfini implements etməlidir. Etdirin.

Burda diyanıb keçirik dizayna. Burada SecondActivity adlı activity yaradın. Xml-ində bir textView olsun (id vermək yadddan çıxamasın). Activity-də textView-i tanıdın (findViewById). Ardınca MainActivity-ə keçək. Onun xml səhifəsində bunlar olacaq: 4 ədəd editText, 4 ədəd textView, 1 ədəd Button. MainActivity-də isə editText və buttonları tanıdın. Yadınızdadı buttona klikləyərkən ediləcəklər proseslərini necə yazırdıq? Bilmirsizsə linkə klikləyib baxın. Həmin prosesi yerinə yetirdikdən sonra (Tamam, tamam kömək edim, setOnclickListener, ordanda new View.OnClickListener) Student sinfimizin obyektini yaradaq, editText-lərimizdəki məlumatları bir-bir obyektimizə ötürək. (Kodların hamısı sonda sizindir, özünüz etməyə çalışın.)

İndi intent yaradırıq. Ardınca putExtra ilə obyektimizi ötürürük, startActivity(intent)- yaddan çıxmasın. Bu hissə hazır. Keçirik SeconActivity-nin içinə. İntent yaradıb getIntent() edirik. İndi gələk əsas məsələyə. Normalda informasiya ötürəndə (ibtidai tip və ya String) necə idi? Onun üçün getExtra edirdik. Lakin indi getSerializableExtra() metodunu işlədcəyik. Ad tanış gəldi? Student sinfinə hansı sinfi implement etmişdik, bir bax gör? Aha, o. Əla.

Bir ədəd Student sinfinin obyektini təyin edək, intentin metodundan aldığımız obyekti buna mənimsədək (Student-ə casting edərək). Sonrada bunu ötürək textView-ə. Tadam: Bitdi.

Xeyir, bir ədəd String qaytaran toString() – metodu yazın SecondActivity daxilinə. İçdədə mətniniz ekranda necə görünsün, onu yazın. Və artıq bitdi.

Bu yazıdan da bu qədər. Kodlara burdan baxa bilərsiniz. Uğur ola!

 

 

Android 45: REST və SOAP

Əvvəl gəlin “REST nədir?” və “SOAP nədir?” suallarına qısa cavab verək, sonra aralarındakı fərqə baxarıq.

REST nədir?

REST (REpresentational State Transfer – Nümunə Status Transferi) HTTP ilə asan və sürətli şəkildə client-server əlaqəsi qura bildiyimiz strukturdur. REST üçün URL adresləri üzərindən əlaqələr qurulur, hər bir metod url adresi üzərindən fərqli olur. REST XML və ya JSON-dan istifadə edir (məlumat ötürmək üçün). Əsas da JSON-dan istifadə edilir. Çünki çox sürətli və azhəcimli olduğu üçün. [1]

SOAP nədir?

SOAP (Simple Object Access Protocol – Sadə Obyektə Giriş Protokolu) ən sadə formada internet üzərində az miqdarda məlumatları köçürmə protokoludur. SOAP mesajları XML formatında olub əsasən HTTP (Hyper Text Transfer Protocol) protokolundan (bəzən də TCP/IP) istifadə edilərək göndərilir. Burada diqqət edilməsi vacib olan nöqtələrdən biri SOAP bizi sadəcə XML formatından istifadə etməyə məcbur edir. [2]

REST və SOAP arasındakı fərqlər:

REST SOAP-dan daha sürətli və yüngüldür. [4] REST-i öyrənmək SOAP-a nəzərən daha sürətli və rahatdır. REST kiçik informasiyalar üçün istifadə edilir, SOAP böyük məlaumatlar üçün (Bu hissə necə də GET və POST-a oxşadı). [3] REST, SOAPdan daha az bant genişliyi və resurs tələb edir. [5]

Mənbələr:

[1] https://youtu.be/FlkGlHZZLTQ
[2] http://www.erenguvercin.com/2013/05/soap-ve-rest-mimarilerine-genel-baks.html
[3] http://kodkosesi.blogspot.com/2014/01/rest-vs-soap.html
[4] http://www.ateam-oracle.com/performance-study-rest-vs-soap-for-mobile-applications/
[5] https://www.javatpoint.com/soap-vs-rest-web-services
[6] https://blog.westmonroepartners.com/mobile-web-services-jsonrest-vs-xmlsoap/
[7] https://javapapers.com/web-service/rest-vs-soap/
[8] https://www.youtube.com/watch?v=pJxYARgvn7U
[9] https://stackoverflow.com/questions/6929180/rest-and-soap-webservice-in-android
[10] https://www.captechconsulting.com/blogs/soap-vs-rest-for-mobile-services

Android 44: Android Permissions

Android Permissions – deyərkən android tədbiqetmələrində istifadəçi tərəfindən verilən müəyyən icazələr nəzərdə tutulur. Misal üçün Düzəltdiyiniz tədbiqetməyə internet əlaqəsi lazımdırsa istifadəçidən internet istifadəsi üçün icazə almalısınız. Bunlara User-Permission deyilir, yəni istifadəçi icazələri.

Bu icazələr normal və təhlükəli olmaqla iki yerə ayrılır.

İnternte istifadəsi, Bluetooth istifadəsi, Alarm, Time zone (saat qurşağı) və bu kimi icazələr normal dərəcəli icazələrdi.

Kameradan istifadə, yaddaşdan istifadə, kalendardan istifadə, sms göndərmək və ya oxumaq kimi icazələr isə təhlükəli icazələr sayılır.

Təhlükəli deyərkən “Şəxsi məlumatların qorunması” baxımından təhlükəli. Bu kateoqriyalara buradan göz ata bilərsiniz.

Yaxşı, bu icazələri hara əlavə edəcəyik bəs? Əlbətdəki AndroidManifest səhifəmizə. Aşaıdakı şəkilə baxaq (şəklin mənbəsi):

<uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.RECORD_AUDIO"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.WAKE_LOCK"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Əlavə olaraq bubu yazıya göz ata, bu videonu izləyə bilərsiniz.

Android 43: ActionBar və ToolBar

Əslində yazının adına baxıb axtardığınız informasiyanı bu yazıda görməyəcəyiniz üçün üzr istəyirəm. Bu ümumiyyətlə yazı deyil.

ActionBar:

ToolBar ActionBar-ın biaz daha üstün versiyasıdır deyə bilərik. Material Design ilə (Android API 21, Android 5.0) ilə gəlib.

Bu mövzu haqqında geniş mənbələr var, əvvəl türkc sonra ingiliscə olmaqla linklər aşağıda:

[1] https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-201/action-bar-eklemek
[2] http://www.androidevreni.com/material-design-toolbar-kullanimi/
[3] https://canaltinova.com/blog/gule-gule-action-bar-hosgeldin-toolbar/
[4] https://blog.xamarin.com/android-tips-hello-toolbar-goodbye-action-bar/
[5] https://www.appcelerator.com/blog/2013/09/using-androids-actionbar/

[6] https://youtu.be/kmUGLURRPkI

Android 42: GET və POST

Bu yazımızdan etibarən, bir neçə yazı sırf bir-birinə oxşar 2 şeyin fərqləri üzərində olacaq. Bu yazımızda GET və POST əmirlərinin fərqinə baxacağıq.

Arasında fərqə baxmadan əvvəl deyək ki, GET və POST əmirləri SQL üçün olan əmirlərdir. Hər ikisi HTTP “request” metodlarıdır.

GET

  • Əlfəcin istifadə etmək mümkündür (Seçilmişlərə əlavə etmək)
  • Keş yaddaşda saxlanıla bilər
  • Browser tarixində qalır.
  • Həsass (çox vacib) məlumatlar üçün istifadə edilməməlidir.
  • 255 simvolluq bir uzunluq məhdudiyyəti var və ASCII cədvəlinə uyğun olmalıdır.
  • Sadəcə məluamt almaq üçün istifadə edilir

POST

  • Seçilmişlərə əlavə edilmir
  • Browser tarixində qalmır
  • Vacib məlumatlar üçün istifadə edilə bilər
  • 32000 simvola qədər uzadıla bilər, ASCII cədvəlinə uyğun olmasa da olar, yəni 0-1 kimi binary formada da ola bilər

Bir qədər qısa oldu amma aşağıdakı mənbələrər göz ataraq bu mövzu haqqında daha dərinləməsinə informasiya əldə edə bilərsiniz (edin)

[1] http://www.bahadirakin.com/get-ve-post-metodlari-ve-java/
[2] http://www.includekarabuk.com/kategoriler/genel/GET-ile-POST-Arasindaki-Fark.php
[3] https://www.w3schools.com/tags/ref_httpmethods.asp
[4] https://www.diffen.com/difference/GET-vs-POST-HTTP-Requests
[5] https://stackoverflow.com/questions/3477333/what-is-the-difference-between-post-and-get