Vodič za Ruby on Rails
⚡ Pametni sažetak
Vodič za Ruby on Rails predstavlja web framework otvorenog koda napisan u Rubyju koji pokreće Airbnb, GitHub i Shopify. Vodič pokriva instalaciju na Windows, Mac i Linux, Rails generatori, usmjeravanje, prikazi, ActiveRecord, validacije i otklanjanje pogrešaka.

Što je Ruby?
Rubin je visokorazinski, interpretirani, objektno orijentirani programski jezik. To je dinamičan jezik otvorenog koda s velikom zajednicom iza sebe. Ruby je dizajniran za jednostavnost i produktivnost. Potiče pisanje softverskog koda koji je na prvom mjestu čovjek, a na drugom računalu. Yukihiro Matsumoto stvorio je Ruby u Japanu 1995. godine.
Što je Rails?
Šine je razvojni okvir napisan u Rubyju za izradu web aplikacija. Izrađen je kao temelj Basecamp aplikacije, a zatim je objavljen kao softver otvorenog koda 2004. godine. Rails nudi mnoge ugrađene standardne značajke i funkcionalnosti, što ga čini prikladnim izborom za MVP prototipove.ping i brzi razvoj proizvoda.
Rails je stvorio David Heinemeier Hansson, popularno poznat kao DHH. To je jedan od najutjecajnijih i najpopularnijih alata za izradu web aplikacija. Koriste ga velike stranice poput Airbnb-a, GitHuba i Shopifyja.
Zašto Rails?
Prije instaliranja alata, korisno je razumjeti zašto Rails ostaje popularan izbor za brodoveping brze web aplikacije.
- Rails je pakiran kao Ruby gem i možete ga koristiti za izgradnju širokog spektra aplikacija.
- Omogućuje vam izradu redovnih web aplikacija, web-mjesta za e-trgovinu, sustava za upravljanje sadržajem i još mnogo toga.
- Rails je full-stack framework koji uključuje sve što vam je potrebno za izradu web aplikacije vođene bazom podataka koristeći Model-View-Controller (MVC) obrazac.
- Svi slojevi su dizajnirani da besprijekorno rade zajedno, tako da Rails projekti obično trebaju manje linija koda od ekvivalentnih projekata u drugim frameworkima.
Kako preuzeti i instalirati Ruby na Windows
Postupak instalacije ovisi o vašem operativnom sustavu. Sljedeći odjeljci pokrivaju instaliranje Rubyja na Windows, Mac i Linux.
Korak 1) Preuzmite Rubyinstaller.
Najlakši način da instalirate Ruby na svoj Windows računalo je putem Ruby Installera, dostupnog na https://rubyinstaller.org/.
Nakon preuzimanja, pokrenite instalacijski program.
Korak 2) Kliknite na preuzeti instalacijski program.
Double-kliknite na preuzetu instalacijsku datoteku, na primjer rubyinstaller-2.4.1-2-x64.exe.
Korak 3) Prihvatite licencu.
Odaberite radio gumb "Prihvaćam licencu" i kliknite gumb "Dalje". Trebali biste vidjeti donji zaslon.
Korak 4) Označite prva dva potvrdna okvira.
Označite prva dva potvrdna okvira za lakše pokretanje Ruby skripti.
Kliknite gumb "Instaliraj" za početak instalacije. Nakon završetka trebali biste vidjeti donji zaslon.
Korak 5) Kliknite Finish.
Ne poništavajte odabir opcije koja instalira MSYS2. Kliknite "Završi" za dovršetak instalacije. Otvara se prozor naredbenog retka kao što je prikazano dolje.
Korak 6) Instalirajte MSYS2.
Ovaj korak instalira MSYS2, platformu za izgradnju koja sadrži upravitelj paketa za jednostavnu instalaciju paketa na Windows.
Pritisnite Enter za instalaciju svih komponenti jer su sve potrebne za nesmetano razvojno okruženje Ruby on Rails na Windows.
Instaliranje tračnica
Trebali biste imati instaliran Ruby iz prethodnog odjeljka. Zatim instalirajte Rails. Rails možete instalirati pomoću paketa iz RailsInstaller, ali paket često ne isporučuje najnoviju verziju svake potrebne ovisnosti.
Ako već imate instaliran najnoviji Ruby i osnovne RubyGemove i proširenja, jednostavno pokrenite sljedeću naredbu u naredbenom retku da biste instalirali Rails na svoj sustav: gem install rails.
Također ćete morati instalirati Node.js ako ga već nemate, jer neke biblioteke o kojima Rails ovisi zahtijevaju JavaIzvršavanje skripte radi ispravno. Nabavite čvor na https://nodejs.org.
Uobičajeniji i poželjniji pristup Windows je koristiti Windows Podsustav za Linux. Pruža GNU/Linux okruženje s alatima naredbenog retka, uslužnim programima i uobičajenim aplikacijama izravno unutar Windows.
Instaliranje Rubyja na Mac
Na vašem Macu već je unaprijed instaliran Ruby. Međutim, unaprijed instalirana verzija je često zastarjela, pa biste trebali instalirati noviju verziju.
Najlakši način za to je korištenje upravitelja paketa kao što je HomebrewMožda ćete prvo morati instalirati Homebrew pokretanjem donje naredbe u Terminalu.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Ovo će prikazati upozorenje i zatražiti od vas da unesete lozinku. Unesite lozinku za Mac (znakovi se ne prikazuju dok tipkate) i pritisnite Enter kada završite. Zatim pokrenite ovu Homebrew naredbu za instalaciju Rubyja na Mac.
brew install ruby
Zatim pokrenite ovu naredbu:
echo 'export PATH="/usr/local/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile
Ovim se nova instalacija Rubyja postavlja kao zadani Ruby na vašem sustavu umjesto unaprijed instaliranog Rubyja.
Da biste potvrdili da je instalacija uspješna, pokrenite sljedeće u Terminalu:
ruby --version
Ovo ispisuje broj verzije Rubyja koju ste instalirali. Izlaz izgleda otprilike ovako:
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-darwin18]
Instaliranje Rubyja na Ubuntu (Linux)
Najlakši način za instaliranje Rubyja na Ubuntu je putem upravitelja paketa apt. Pokrenite sljedeće naredbe u Terminalu da biste instalirali najnoviji Ruby iz Ubuntu spremišta.
- sudo apt ažuriranje – Ovo ažurira zadane postavke Ubuntu spremišta.
- sudo apt instaliraj ruby-full – Ovim se preuzima i instalira najnoviji Ruby.
Za potvrdu instalacije pokrenite ruby-verzijaOvo ispisuje verziju Rubyja koju ste instalirali.
Instaliranje Rails na Ubuntu (Linux)
Slijedite dolje navedene korake za instalaciju Railsa na vaše Linux računalo.
Korak 1) Ažurirajte svoj gem manager pokretanjem ažuriranje dragulja – sustav u Terminalu ili naredbenom retku.
Korak 2) trčanje šine za ugradnju dragulja kako biste instalirali najnoviju verziju Railsa na svoje računalo.
Korak 3) Instalirajte bundler gem za jednostavno upravljanje ovisnostima gemova Rails aplikacije. Pokrenite. paket za instalaciju gem programa.
Dva principa tračnica
Rails slijedi osnovne principe dizajna softvera i potiče vas da ih i vi koristite.
Dva najčešća su:
- Ne ponavljaj se (DRY) – to vodi do konciznog, konzistentnog i održivog koda.
- Konvencija nad konfiguracijom – Rails je unaprijed konfiguriran s razumnim zadanim postavkama koje odgovaraju većini uobičajenih upotreba. To ubrzava razvoj aplikacija i ostavlja vam manje koda za održavanje.
Rails – Strukture projektnih datoteka
S instaliranim Railsom na vašem sustavu, izradite Rails aplikaciju. Sljedeći odjeljci vode kroz primjer Ruby on Railsa izradom aplikacije s popisom obaveza. Pokrenite sljedeću naredbu u svom terminalu za izradu aplikacije:
rails new todo_app
Ova naredba stvara direktorij pod nazivom aplikacija_za_todo u trenutnom direktoriju s osnovnom strukturom mapa Rails web aplikacije, kao što je prikazano dolje.
Evo glavnih direktorija generiranih za projekt:
aplikacija – grupira poddirektorije za UI/layout (prikazi i pomoćni programi), kontroler (datoteke kontrolera) i modele (poslovna/aplikacijska logika).
aplikacija/kontroleri – pohranjuje datoteke kontrolera koje Rails koristi za obradu zahtjeva klijenta.
aplikacija/imovina – sadrži statičke datoteke potrebne za prednji dio aplikacije, grupirane po vrsti: JavaScript datoteke, slike i stilske tablice.
aplikacija/pomagači – sadrži pomoćne funkcije koje održavaju model aplikacije, prikaz i logiku kontrolera fokusiranima, malima i preglednima.
aplikacija/modeli – sadrži datoteke koje modeliraju bazu podataka vaše aplikacije. Klase modela uvelike olakšavaju rad s bazom podataka.
aplikacija/prikazi – sadrži datoteke predložaka/izgleda s kojima korisnik vaše aplikacije komunicira. Predlošci kombiniraju HTML s podacima iz baze podataka.
kanta – sadrži Rails skripte koje pokreću vašu aplikaciju. Također može uključivati i druge skripte koje koristite za postavljanje i nadogradnju aplikacije.
config – sadrži konfiguracijske datoteke kao što su baza podataka.yml, okruženje.rb, rute.rbitd., koje vaša aplikacija treba za pokretanje.
db – sadrži datoteke i skripte koje se koriste za upravljanje bazom podataka vaše aplikacije.
Pomoć – sadrži proširene module za vašu aplikaciju.
klada – sadrži datoteke zapisnika kao što su server.log, development.log, test.log i production.log, koristi se za otklanjanje pogrešaka ili praćenje vaše aplikacije.
javni – sadrži statičke datoteke i kompilirane resurse, kao što su HTML datoteke, JavaDatoteke skripti, slike i stilski listovi.
test – sadrži testne datoteke koje pišete za testiranje funkcionalnosti vaše aplikacije.
tmp – sadrži privremene datoteke poput predmemorije i pid datoteka.
prodavač – sadrži biblioteke trećih strana.
Gemfile – specificira osnovne zahtjeve za gemove za pokretanje vaše web aplikacije. Gemove možete grupirati u razvojne, testne ili produkcijske, a Rails će znati kada uključiti svaki gem.
Gemfile.lock – za razliku od Gemfile-a, koji eksplicitno navodi geme koje želite u svojoj aplikaciji, Gemfile.lock dodatno sadrži i druge gemeove o kojima ovise oni navedeni u Gemfile-u. Oni se automatski instaliraju kako bi se zadovoljile ovisnosti.
Readme.md – koristite ovu datoteku za dijeljenje bitnih detalja o vašoj aplikaciji, kao što su što aplikacija radi i kako je instalirati i pokrenuti.
Rakefile – sadrži razne definicije rake zadataka koje pomažu u automatizaciji svakodnevnih administrativnih zadataka vaše aplikacije.
config.ru – konfiguracijska datoteka Racka koja pruža sučelje web poslužitelju za pokretanje vaše aplikacije.
Promijenite direktorij u aplikacija_za_todo imenik Rails generiran i pokrenut Rails poslužitelj za pokretanje aplikacije. Tip localhost: 3000 u adresnoj traci vašeg web preglednika. Ako je sve prošlo u redu, trebali biste vidjeti donji zaslon.
Ovo je zadana početna stranica vaše aplikacije. Promijenit ćete je u kasnijem odjeljku ovog vodiča za Ruby on Rails. Poslužitelj možete zaustaviti pritiskom na Ctrl + C.
Rails – Generiranje naredbi
Naredba Rails generate koristi predloške za stvaranje mnogih korisnih stvari u vašoj aplikaciji. Ovi generatori štede puno vremena.
Pišu standardni kod koji je potreban za rad vaše web aplikacije. Pokrenite. tračnice generiraju samostalno u naredbenom retku ili Terminalu kako biste vidjeli popis dostupnih generatora, kao što je prikazano dolje.
Možete i trčati tračnice generiraju da biste vidjeli opis što naredba radi. Navodi praktične opcije i primjer korištenja. Donja slika prikazuje rezultat pokretanja kontroler generiranja tračnica.
Pomoću naredbe rails generate scaffold automatski stvorite model, prikaz i kontroler za aplikaciju s popisom zadataka koju izrađujete. Pokrenite sljedeće u svom terminalu (provjerite jeste li još uvijek u aplikacija_za_todo imenik):
rails generate scaffold todo_list title:string description:text
Ovo stvara potpuno CRUD (Stvaranje, Čitanje, Ažuriranje, Brisanje) web sučelje za tablicu TodoLists.
Još jedna korisna naredba koju treba znati je tračnice uništavajuTo preokreće što god tračnice generiraju radi.
Tračnice – Usmjeravanje
Rails sustav usmjeravanja, nazvan Rails router, obrađuje sve dolazne zahtjeve vašoj web aplikaciji. Ispituje URL svakog zahtjeva i mapira ga na akciju kontrolera odgovornu za njegovu obradu, koristeći sintaksu navedenu u datoteci ruta (config/routes.rb).
Datoteka ruta kontrolira svaki URL aspekt vaše web aplikacije. Rails koristi RESTful dizajn temeljen na REST arhitektonskom stilu, koji pruža mapuping između HTTP glagola i zahtjeva URLs na akcije kontrolera.
Datoteka s rutama generirana je kad ste trčali nove tračnice ranije. Nastavljajući s Todo aplikacijom koju izrađujete, pokrenite sljedeće:
rails db:migrate
Provjerite jeste li još uvijek u korijenu aplikacije ( aplikacija_za_todo imenik).
Ponovno pokrenite poslužitelj s Rails poslužitelj, Tip http://localhost:3000/todo_lists/ u pregledniku i pritisnite Enter. Trebali biste dobiti natrag web stranicu poput one dolje.
Ovo je prikaz popisa zadataka koji je generirala naredba scaffold, a njime upravlja TodoListsController. indeks action.
Dodajte popis obaveza klikom na "Novi popis obaveza" na stranici. Trebali biste vidjeti donji zaslon.
Obavijest URL Sada je http://localhost:3000/todo_lists/newOvo je stranica za izradu novog popisa obaveza, a njime upravlja TodoListsController. novi metoda.
Unesite naslov i opis svoje liste obaveza u obrazac i kliknite "Izradi listu obaveza". URL treba promijeniti u http://localhost:3000/todo_lists/1, kako je prikazano dolje.
Ovo je stranica za prikaz popisa obaveza, kojom upravlja TodoListsController predstava metoda. Ako se vratite na http://localhost:3000/todo_lists/, sada biste trebali vidjeti zaslon ispod s dodanim novim popisom obaveza.
Rails je uspio mapirati svaki zahtjev na odgovarajuću TodoListsController akciju koristeći definiciju rute u config/routes.rb.
Ako pogledate ovu datoteku, vidjet ćete samo jedan redak resursi: popis_zadaća, što je Railsov zadani način pisanja RESTful ruta. Ovaj jedan redak stvara sedam ruta, sve mapiraneping kontroleru TodoLists.
Po konvenciji, svaka akcija kontrolera mapira se na određenu CRUD (Stvaranje, Čitanje, Ažuriranje, Brisanje) operaciju u bazi podataka.
trčanje željezničke rute u naredbenom retku kako biste vidjeli različite rute dostupne u vašoj aplikaciji. Donja slika prikazuje izlaz pokretanja željezničke rute.
Tračnice – Pogledi
Sloj prikaza jedna je od komponenti MVC paradigme i odgovoran je za generiranje HTML odgovora za svaki zahtjev vašoj aplikaciji. Rails prema zadanim postavkama koristi ERB (Embedded Ruby), što je moćan sustav predložaka za Ruby.
ERB olakšava pisanje i održavanje predložaka kombinirajući običan tekst s Ruby kodom za zamjenu varijabli i kontrolu toka. ERB predložak koristi .html.erb produženje.
Uglavnom ćete koristiti dva markera, od kojih svaki uzrokuje obradu i rukovanje ugrađenim kodom na određeni način.
Oznaka sa znakom jednakosti <%= %> označava da je ugrađeni kod izraz i da rezultat koda treba zamijeniti u izlaz kada se predložak iscrta.
Druga oznaka bez znaka jednakosti <% %> označava rendereru da rezultat koda ne treba zamijeniti ili ispisati u izlazu.
Svaki kontroler u vašoj Rails aplikaciji ima odgovarajući poddirektorij u aplikacija/prikazi, a svaka akcija u kontroleru ima odgovarajući .html.erb datoteku u tom poddirektoriju.
Pogledati aplikacija/prikazi aplikacije Todo koju izrađujete. Pronaći ćete poddirektorij pod nazivom popisi_doo-ova koji sadrži .html.erb datoteke s nazivima koji odgovaraju radnjama u TodoLists kontroler.
Tračnice – ActiveRecord, Active Record Pattern i ORM
ActiveRecord je Rubyjeva implementacija obrasca Active Record. U ovom obrascu, klasa predstavlja tablicu baze podataka, a instanca klase predstavlja redak u toj tablici.
ActiveRecord se obično naziva ORM (mapa relacijskih objekata).ping) sloj, tehnika koja vam omogućuje upravljanje bazom podataka pomoću jezika s kojim se najviše razumijete. Neovisna je o bazi podataka, tako da možete jednostavno prelaziti između baza podataka - na primjer, SQLite, MySQL, PostgreSQL, SQL Server ili Oracle — koristeći isti kod i logiku.
Na primjer, da biste dobili niz koji sadrži svaki popis obaveza u vašoj aplikaciji, ne morate pisati kod koji otvara vezu, pokreće SQL SELECT upit i pretvara rezultat.
Samo tipkaš TodoList.all, a ActiveRecord vraća niz ispunjen TodoList objektima koje možete koristiti kako želite.
Sve što trebate učiniti je postaviti konfiguraciju u config/database.yml, a ActiveRecord rješava razlike između sustava baza podataka. Kada prelazite s jedne baze podataka na drugu, ne morate prepisivati svoj kod.
Vi se usredotočujete na logiku aplikacije, a ActiveRecord se brine o detaljima niske razine povezivanja s vašom bazom podataka. Koristi konvencije imenovanja za mapiranje modela u tablice baze podataka.
Rails pretvara imena klasa vašeg modela u množinu kako bi pronašao odgovarajuću tablicu baze podataka. Dakle, za klasu TodoListActiveRecord koristi tablicu baze podataka pod nazivom popisi_doo-ova.
Tračnice – Migracije
Rails migracija je skripta koju koristite za razvoj baze podataka vaše aplikacije. Koristi se za postavljanje ili promjenu baze podataka bez ručnog pisanja SQL-a.
Koristi Ruby za definiranje promjena u shemi baze podataka i omogućuje korištenje kontrole verzija kako bi vaša baza podataka bila sinkronizirana u različitim okruženjima.
Rails migracije koriste Rubyjev jezik specifičan za domenu (DSL). To djeluje kao ABStraci omogućuje korištenje ili promjenu vašeg mehanizma baze podataka na temelju vaših zahtjeva.
Migracije se mogu dijeliti sa svima koji rade na aplikaciji, a mogu se i vratiti kako bi se poništile promjene. Ovo je snažan sigurnosni mehanizam, tako da se ne morate brinuti o trajnoj šteti na vašoj bazi podataka.
Tračnice – asocijacije ActiveRecord
Veza između dva ActiveRecord modela poznata je kao asocijacija. Asocijacije znatno olakšavaju izvođenje operacija na povezanim zapisima u vašem kodu. Postoje četiri uobičajene kategorije.
Jedan na jedan: zapis sadrži točno jednu instancu drugog modela. Dobar primjer je korisnički profil - korisnik ima samo jedan profil. Koristi ima_jedan ključne riječi.
Jedan prema mnogima: najčešća asocijacija - jedan model ima nula ili više instanci drugog modela. Koristite ima_mnogo ključna riječ za označavanje ove asocijacije.
Mnogi prema mnogima: malo kompliciranije. ActiveRecord nudi dva načina za rješavanje toga: ima_i_pripada_mnogima i ima_mnogo :kroz, što vam daje pristup modelu spajanja definiranom u zasebnoj tablici.
Polimorfni od jedan do mnogo: naprednija asocijacija u Railsu. Definira model koji može pripadati mnogim različitim modelima na jednoj asocijaciji.
Tračnice – ActiveRecord Validations
Validacija pomaže u osiguravanju točnosti podataka jer je rad s lošim podacima rizičan i može koštati vaše poslovanje novca.
Validacija također pruža dodatni sloj sigurnosti od zlonamjernih korisnika koji pokušavaju umetnuti štetne podatke u vašu bazu podataka. Rails nudi čist API za pomoć pri validaciji u ActiveRecordu koji održavaju vašu bazu podataka čistom, sigurnom i bez grešaka.
ActiveRecord validacije se izvode na objektima modela prije spremanja u bazu podataka, što ih čini pouzdanijima i slijedi najbolju praksu.
Sljedeće ActiveRecord metode pokreću validacije kada se pozovu na objektima modela: stvaraj, stvaraj!, spremaj, spremaj!, ažuriraj i ažuriraj!Verzije s praskom (stvori!, spremi! i ažuriraj!) podiže iznimku ako je zapis nevažeći, dok verzije koje nisu bang vraćaju false.
Najčešći pomagači za validaciju ActiveRecorda su:
- Potvrda: Potvrđuje da dva polja imaju istu vrijednost, na primjer lozinka i potvrda lozinke. Koristi se zajedno s pomoćnikom za provjeru prisutnosti.
- Prisutnost: provjerava da polje nije prazno.
- Jedinstvenost: osigurava jedinstvenu vrijednost za polje, na primjer korisničko ime.
- Dužina: nameće ograničenje na duljinu znakova u polju.
Također možete stvoriti vlastitu prilagođenu validaciju pomoću potvrditi metodu i prosljeđivanjem naziva prilagođene metode validacije.
Provjerite model pogreške objekt kako biste saznali zašto validacija nije uspjela. To vam daje sve što vam je potrebno da vaša aplikacija bude ograničenija i sigurnija, dopuštajući samo valjane podatke u vašu bazu podataka.
Tračnice – ActionController
Rails kontroler središte je vaše web aplikacije. Olakšava i koordinira komunikaciju između korisnika, modela i pogleda.
Vaše klase kontrolera nasljeđuju od Application Controller, koji sadrži kod koji se može pokrenuti u svim ostalim kontrolerima i koji pak nasljeđuje od KontrolerAkcija::Baza.
Kontroler vašoj aplikaciji pruža sljedeće:
- Usmjerava vanjske zahtjeve prema internim akcijama.
- Upravlja keširanjem, poboljšavajući performanse vaše aplikacije.
- Upravlja pomoćnim metodama koje proširuju mogućnosti predloška prikaza, a također upravlja korisničkim sesijama, pružajući korisnicima glatko iskustvo.
Tračnice – Konfiguracije
Komponente poput inicijalizatora, resursa, generatora i middlewarea možete konfigurirati pomoću inicijalizatora Rails aplikacije i konfiguracijskih datoteka u config direktorij. Datoteke poput config/application.rb, config/environments/development.rbi config/environments/test.rb se ovdje koriste. Također možete dodati prilagođene postavke za svoju aplikaciju.
Tračnice – otklanjanje pogrešaka
Dok gradite svoju aplikaciju, morat ćete otklanjati greške u kodu. Rails to olakšava pomoću žao mi je gem. Sesiju otklanjanja pogrešaka možete pokrenuti postavljanjem ključne riječi žao mi je bilo gdje u kodu vaše aplikacije.
Ovo privremeno zaustavlja izvršavanje u tom trenutku. byebug gem nudi nekoliko naredbi. Najkorisnije su:
- Sljedeći: prelazi na sljedeći redak koda, preskačeping sve metode koje poziva trenutna linija.
- korak: slično sljedeći, ali prelazi u svaku pozvanu metodu.
- pauza: zaustavlja izvršavanje koda.
- i dalje: nastavlja izvršavanje koda.
Dostupni su i drugi dragulji za otklanjanje pogrešaka, kao što su zaviritiSvi nude sličnu funkcionalnost s malo drugačijom sintaksom. Gemovi za otklanjanje pogrešaka ne bi se trebali koristiti u produkciji jer predstavljaju rizik za vašu aplikaciju i loše iskustvo za vaše korisnike.
Datoteke zapisnika mogu se pregledati radi pogrešaka u produkciji i s njima se postupati u skladu s tim. Također biste trebali slijediti pristup razvoja vođenog testiranjem (TDD) prilikom izrade aplikacije kako biste osigurali da sve dobro funkcionira prije implementacije u produkciju.













