Minu Java blogi

Vaata eelmist teemat Vaata järgmist teemat Go down

Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 08.02.19 0:02

Tere!

Otsustasin hiljuti, et aitab edasilükkamisest, lollitamisest, teesklemisest, jobutamisest, tobutamisest, molutamisest, lojutamisest ja kõigest muust sellisest ning tegin tõsiselt algust programmeerimise õppimisega.

Esimeseks keeleks valisin endale välja Java.
Märgin ära, et eelnev programmeerimise kogemus oli mul vägagi nullilähedane. Natuke näppinud siit-sealt, aga millegi konkreetsega kunagi hakkama pole saanud, seega võib öelda, et alustasin nullist. Ehk siis seda võib teha igaüks.

Kust alustada?!
Ega siin ei olegi mingit kunsti. Kirjutasin Googlesse "Java tutorial" ja vajutasin Enterit.
Olles natuke sirvinud, avastasin selle video ning hakkasin seda vaatama. Juba pärast 30 sekundit näis video autor erakordselt põhjalik ja hea seletaja. Rullisin pisut alla poole ja avastasin, et käesolev video on ainult üks osa täielikust versioonist. Mõtlesin veidi ja otsustasin, et mis seal ikka, kõik või mitte midagi, ja ostsin täisversiooni ära. Parim otsus. Täisversiooniga saab 6 tundi videomaterjali, kõik näidatud programmid Java failidena ja lisaks kogu kompott ühe suure .pdf failina. Ja kuna videot on pidevalt edititud, et see oleks kompaktsem - ära on lõigatud igasugused "errr, mmmm" kohad ja isegi natuke pikemad pausikohad, siis on sinna 6 tunni sisse ära mahutatud 40 tundi reaalset õppematerjali. 50 eurot ei ole sellise asja eest küll mingi raha.

Hakkab pihta!
Järgmisel päeval oli mul kõik materjal alla laetud ning oli aeg alustada. Tegin endale kangema kohvi, avasin esimese video ja teekond võis alata. Olin esialgu otsustanud, et vaatan videomaterjali otsast lõpuni ilma ise midagi tegemata ning alles siis teiskordse vaatamise ajal üritan ise midagi kaasa teha. Arvasin, et sedasi saan juba täismõõtmelise pildi silme ette ja on parem ise tegema hakata. Nii kaua ma vastu pidada ei suutnud. Pärast kolmandat tundi videot hakkasid käed sügelema ja tahtsin juba midagi lahedat ära teha. Niisiis võtsingi ette oma tühja projekti ja hakkasin midagi välja nuputama.
minu esimene programm:

Kood:
package day2;

import java.util.Arrays;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

public class talkBot {
 public static void main(String[] args) {
 String[] puuviljad = {"Banaan", "Őun", "Apelsin", "Pirn", "Ananass", "Kirss", "Ploom", "Mango"};
 String[] autod = {"BMW"};
 String[] loomad = {"Hobune", "Kass", "Koer", "Ahv", "Kaelkirjak", "Elevant", "Jőehobu"};
 //System.out.println(Arrays.toString(puuviljad));
 Scanner trükk = new Scanner(System.in);
 System.out.println("Tere! Mina olen WW-bot, mis sinu nimi on?");
 String Nimi = trükk.nextLine();
 String korrasNimi = Nimi.substring(0, 1).toUpperCase() + Nimi.substring(1);
 System.out.println("Tere, "+korrasNimi+". Mängime ühte mängu.");
 
  try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) {
  e.printStackTrace(); }
 
 System.out.println("...");
 try {
 TimeUnit.SECONDS.sleep(2);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Loe tähelepanelikult:");
 try {
 TimeUnit.SECONDS.sleep(2);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Mina ütlen sulle ühe suvalise nimisőna ning sina pead kolmest grupist valima őige, kuhu see sőna kuulub.");
 try {
 TimeUnit.SECONDS.sleep(3);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Arusaadav? Vajuta Enterit, kui oled valmis.");
 trükk.nextLine();
 System.out.println("Tubli, "+ korrasNimi + ", me hakkame juba teineteist mőistma!");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Nii! Kas BANAAN on:");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("1) AUTO,");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("2) PUUVILI");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("3) VŐI LOOM?");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("");
 System.out.println("Vastamiseks trüki sisse őige vastuse number ja vajuta Enterit.");
 
 int valik = trükk.nextInt();
 if (valik == 1) {
 System.out.println("Sinu pakkumine on, et banaan on auto!");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Kontrollime vastust...");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 boolean sisaldab = Arrays.stream(autod).anyMatch("Banaan"::equals);
 if(sisaldab == true) {
 System.out.println("Őige vastus! Banaan on tőesti auto!");
 }else {
 System.out.println("Paraku on see vale vastus. Banaan ei ole auto.");
 }
 }else if (valik == 2) {
 System.out.println("Ja läheb lukku vastus, et banaan on puuvili!");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Kontrollime vastust...");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 boolean sisaldab = Arrays.stream(puuviljad).anyMatch("Banaan"::equals);
 if(sisaldab == true) {
 System.out.println("Őige vastus! Banaan on puuvili, liigume edasi!");
 }else {
 System.out.println("Banaan on küll puuvili, ütle Egertile et ta oma koodi korda teeks.");
 }
 }else if (valik == 3) {
 System.out.println("Sinu pakkumine on, et banaan on loom!");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Kontrollime vastust...");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 boolean sisaldab = Arrays.stream(loomad).anyMatch("Banaan"::equals);
 if(sisaldab == true) {
 System.out.println("Täpselt nii, banaan on tőepoolest loom!");
 }else {
 System.out.println("Banaan ei ole ju loom. Miks sa raiskad mu aega?");
 }

 }
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("");
 System.out.println("");
 System.out.println("Liigume edasi järgmise küsimuse juurde, mis kőlab nii");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Kas Opel on:");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("1) AUTO,");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("2) PUUVILI");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("3) VŐI LINN");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("");
 System.out.println("Nagu eelminegi kord, trüki oma vastus numbrina ja vajuta Enterit.");
 
 int valikKaks = trükk.nextInt();
 if (valikKaks == 1) {
 System.out.println("Sinu pakkumine on, et Opel on auto!");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Kontrollime vastust...");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 boolean sisaldab = Arrays.stream(autod).anyMatch("Opel"::equals);
 if(sisaldab == true) {
 System.out.println("Őige vastus! Opel on tőesti auto!");
 }else {
 System.out.println("Vale vastus. Opel ei ole ju auto, sa tead seda küll.");
 }
 }else if (valikKaks == 2) {
 System.out.println("Nagu näha, siis sa arvad, et Opel on puuvili...");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("No olgu, vaatame...");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 boolean sisaldab = Arrays.stream(puuviljad).anyMatch("Opel"::equals);
 if(sisaldab == true) {
 System.out.println("Őige vastus! Opel on tőesti mingil moel puuvili... Liigume edasi.");
 }else {
 System.out.println("Oi, milline üllatus. Opel ei olegi puuvili. Uskumatu.");
 }
 }else if (valikKaks == 3) {
 System.out.println("Vaatame, kas maailmas on mőni linn nimega Opel!");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 System.out.println("Otsin tervest maailmast...");
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 boolean sisaldab = Arrays.stream(loomad).anyMatch("Opel"::equals);
 if(sisaldab == true) {
 System.out.println("Mina ei tea, vőib-olla kuskil on, aga mina pole kuulnud.");
 }else {
 System.out.println("Mina ei tea, vőib-olla kuskil on, aga mina pole kuulnud.");
 }

 }
 trükk.close();
 System.out.println("Head aega.");
}
Lihtsalt lahti seletatult küsib see programm inimeselt küsimuse, siis kontrollib, kas vastus kuulub sinna gruppi, kuhu inimene arvas seda kuuluvat ning annab vastava vastuse (kas õige või vale).
Pärast teise küsimuse programmeerimist tundsin ennast juba nende funktsioonidega üsna koduselt ja otsustasin selle peale rohkem mitte aega kulutada.
Kokku kulus selle programmi kirjutamiseks ca 3-4 tundi.
esimese programmi rework:

Kood:
package botRework;

import java.util.Arrays;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

public class BotRework{
 public static void main(String[] args) {
 

 String[] fruit = {"Banana", "Apple", "Orange", "Pear", "Pineapple", "Cherry", "Mango"};
 String[] cars = {"BMW"};
 String[] animals = {"Horse", "Cat", "Dog", "Monkey", "Giraffe", "Elephant", "Hippo"};
 
 Scanner input = new Scanner(System.in);
 
 System.out.println("Welcome! My name is WW-bot, what is your name?");
 String nextInput = input.nextLine();
 String name = nextInput;
 String correctName = name.substring(0, 1).toUpperCase() + name.substring(1);
 System.out.println("Alright, "+correctName+ " let us play a game!");
 sleepSec();
 System.out.println("");
 System.out.println("Pay attention:");
 sleepSec();
 System.out.println("I am going to give you a random word.");
 sleepSec();
 System.out.println("And you are going to decide where it belongs.");
 sleepSec();
 System.out.println("Alright? Press Enter if you are ready to play.");
 input.nextLine();
 System.out.println("Good job, "+correctName+", we are already beginning to understand eachother!");
 sleepSec();
 System.out.println("Okay, here we go! Your first word is: BANANA!");
 System.out.println("1) CAR,");
 System.out.println("2) FRUIT");
 System.out.println("3) ANIMAL");
 System.out.println("");
 System.out.println("Press the corresponding number on your keyboard.");
 
 int option = input.nextInt();
 if (option == 1) {
 System.out.println("You think that a banana is a car!");
 System.out.println("Checking...");
 sleepSec();
 boolean includes = Arrays.stream(cars).anyMatch("banana"::equals);
 if(includes) {
 System.out.println("That is correct! Banana = car.");
 }else {
 System.out.println("Unfortunately that is incorrect.");
 }
 }else if (option == 2) {
 System.out.println("Your answer is fruit!");
 System.out.println("Checking...");
 sleepSec();
 boolean includes = Arrays.stream(fruit).anyMatch("banana"::equals);
 if(includes) {
 System.out.println("And that is a correct answer!");
 }else {
 System.out.println("Yes, it is a fruit. This code is broken.");
 }
 }else{
 System.out.println("You think a banana is an animal...");
 System.out.println("Checking your answer...");
 sleepSec();
 boolean includes = Arrays.stream(animals).anyMatch("banana"::equals);
 if(includes) {
 System.out.println("No way.");
 }else {
 System.out.println("Nope.");
 }

 }
 System.out.println("");
 System.out.println("");
 System.out.println("Moving on to the next word.");
 System.out.println("And the word is: OPEL!");
 System.out.println("1) CAR,");
 System.out.println("2) FRUIT");
 System.out.println("3) CITY");
 System.out.println("");
 System.out.println("As earlier, respond with a press of the correct key.");
 
 int secondOption = input.nextInt();
 if (secondOption == 1) {
 System.out.println("You say car");
 System.out.println("I check");
 boolean includes = Arrays.stream(cars).anyMatch("Opel"::equals);
 if(includes) {
 System.out.println("Correct");
 }else {
 System.out.println("No correct");
 }
 }else if (secondOption == 2) {
 System.out.println("I is robot");
 System.out.println("You is human");
 boolean includes = Arrays.stream(fruit).anyMatch("Opel"::equals);
 if(includes) {
 System.out.println("I do what you say");
 }else {
 System.out.println("Because I is robot");
 }
 }else{
 System.out.println("I never ask");
 System.out.println("And neither do you");
 boolean includes = Arrays.stream(animals).anyMatch("Opel"::equals);
 if(includes) {
 System.out.println("I just do");
 }else {
 System.out.println("Whatever you say");
 }

 }
 input.close();
 int bigInt = 1;
 while(bigInt < 1000) {
 System.out.println("Byeeee.");
 sleepSec();
 }
 }
 
 static void sleepSec(){
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 }
}

Päev pole veel läbi!
Kuna minuga paralleelselt tegeleb ka üks teine inimene Linuxi ja serverihalduse õppimisega ning ta sai just täna serveri püsti ja andis mulle ligipääsu, siis esimene mõte mis mul pähe tuli, oli see, et vaja on sisselogimissüsteemi, et server oleks praeguseks ajaks parooli taga.
Niisiis tegingi taaskord oma Eclipse'i(Java programmi kirjutamise tööriist) lahti ning hakkasin pihta.
Seekord olin juba kõvasti enesekindlam, teadsin juba enne alustamist, mida ma tegema pean ning sellega sain üsna kiiresti ühele poole.
Sisselogimisprogramm:

Kood:
package login;

import java.util.Scanner;

public class login {

 public static void main(String[] args) {
 
 String sisestaKasutajatunnus = "Sisesta kasutajatunnus.";
 String sisestaParool = "Sisesta parool.";
 
 String kasutajaNimi = "Kasutajatunnus";
 String parool = "Parool";
 
 boolean őigeKasutajatunnus = false;
 boolean őigeParool = false;
 
 Scanner trükk = new Scanner(System.in);
 
 while(!őigeKasutajatunnus) {
 System.out.println(sisestaKasutajatunnus);
 String sisestatudKasutajanimi = trükk.nextLine();
 if (sisestatudKasutajanimi.equals(kasutajaNimi)) {
 őigeKasutajatunnus = true;
 System.out.println("Őige kasutajatunnus.");
 }else {
 őigeKasutajatunnus = false;
 System.out.println("Vale kasutajatunnus. Proovi uuesti.");
 }

 }
 
 while(!őigeParool) {
 System.out.println(sisestaParool);
 String sisestatudParool = trükk.nextLine();
 if (sisestatudParool.equals(parool)) {
 őigeParool = true;
 System.out.println("Őige. Tere tulemast mittemillegisse... Veel.");
 }else {
 őigeParool = false;
 System.out.println("Vale parool. Proovi uuesti.");
 }

 }
 
 trükk.close();

 }

}
Väga lihtne. Kasutajatunnus ja parool on määratud ning programm peab ainult kindlaks tegema, kas kasutaja sisestatud andmed on õigete asjadega vastavuses või ei ole. See projekt on veel poolik - järgmine etapp on selle programmi reaalne kuvamine veebis (praegu töötab see ainuilt konsoolis).

Tänaseks vist aitab. Käes on kesköö ja homme on vaja tööle minna.


Viimati muutis seda Ekux (09.02.19 23:35). Kokku muudetud 6 korda
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 09.02.19 3:17


Kell on 3 öösel.
Töölt jõudsin koju umbes kell 18 ehk siis nüüdseks olen umbes 8 tundi järjest tegelenud nende asjade harjutamisega, mis eile õpitud sai.
Videomaterjali täna edasi pole vaadanud, homme (või noh, täna) kavatsen kõik lõpuni vaadata.

Täna lihtsalt proovisin erinevaid funktsioone ja põhirõhku panin sellele, et mu kood näeks hea välja ja seda oleks lihtne lugeda.
arvutamismäng:

Kood:
package anagram;

import java.util.Random;
import java.util.Scanner;

public class anagram {

 public static void main(String[] args) {
 
 Scanner trükk = new Scanner(System.in);
 
 int[] singleDigit = {1, 2, 3, 4, 5, 6, 7, 8, 9};
 int[] doubleDigit = {11, 23, 49, 19, 29, 92, 14, 65, 93, 94, 81};
 int[] tripleDigit = {111, 922, 849, 103, 829, 192, 452, 920, 010, 848, 320, 394, 593, 291, 492, 582, 672};
 
 System.out.println("Tere tulemast mängima arvutamismängu!");
 System.out.println("");
 System.out.println("Kui arvutamine välja arvata, siis on see mäng väga lihtne!");
 System.out.println("Nimelt mina esitan sulle tehte ja sina pead lihtsalt õigesti vastama.");
 System.out.println("");
 System.out.println("");
 System.out.println("Valmis? Vali, kas soovid mängida 1-, 2- või 3-kohaliste arvudega.");
 System.out.println("Trüki sisse vastav number.");
 
 
    int randSingle1 = new Random().nextInt(singleDigit.length);
    int randSingle2 = new Random().nextInt(singleDigit.length);
    int randSingle3 = new Random().nextInt(singleDigit.length);
    int randDouble1 = new Random().nextInt(doubleDigit.length);
    int randDouble2 = new Random().nextInt(doubleDigit.length);
    int randDouble3 = new Random().nextInt(doubleDigit.length);
    int randTriple1 = new Random().nextInt(tripleDigit.length);
    int randTriple2 = new Random().nextInt(tripleDigit.length);
    int randTriple3 = new Random().nextInt(tripleDigit.length);
    
    int punktid = 0;
 
 int valik = trükk.nextInt();
 if(valik == 1) {
 System.out.println("Otsustasid mängida ühekohaliste arvudega. Hakkame pihta!");
 System.out.println("Sinu tehe on järgmine: "+singleDigit[randSingle1]+"+"+singleDigit[randSingle2]);
 System.out.println("Sisesta vastus:");
 int õigeVastus = singleDigit[randSingle1]+singleDigit[randSingle2];
 int vastus = trükk.nextInt();
 if(vastus == õigeVastus) {
 System.out.println("Tubli! Õige vastus, said ühe punkti juurde.");
 punktid++;
 System.out.println("Liigume edasi järgmise tehte juurde.");
 System.out.println("Sul on hetkel "+punktid+" punkti.");
 }else {
 System.out.println("Paraku vastasid valesti.");
 punktid--;
 System.out.println("Liigume edasi järgmise tehte juurde.");
 System.out.println("Sul on hetkel "+punktid+" punkti.");
 }
 System.out.println("Siit tuleb teine tehe: "+singleDigit[randSingle1]+"+"+singleDigit[randSingle2]+"-"+singleDigit[randSingle3]);
 System.out.println("Sisesta vastus:");
 int õigeVastus2 = singleDigit[randSingle1]+singleDigit[randSingle2]-singleDigit[randSingle3];
 int vastus2 = trükk.nextInt();
 if(vastus2 == õigeVastus2) {
 System.out.println("Hea töö! Õige vastus, üks punkt juures!");
 punktid++;
 System.out.println("Sul on nüüd "+punktid+" punkti.");
 System.out.println("Liigume järgmise tehte juurde.");
 }else {
 System.out.println("Ouch! Vale vastus.");
 punktid--;
 System.out.println("Sul on "+punktid+" punkti.");
 System.out.println("Võtame järgmise tehte ette.");
 }
 }else if(valik == 2) {
 System.out.println("Valisid mängu kahekohaliste arvudega. Mäng alaku!");
 }else {
 System.out.println("Mängime kolmekohaliste arvudega!");
 }
 
 trükk.close();
 }

}
Olles teise tehtega ühele poole saanud tundsin, et midagi uut ma selle programmiga enam ei õpi vaid oleks lihtsalt mõttetu enesekordamine (kuna kõiki neid if/else statemente saan ma niikuinii ka edaspidi piisavalt uuesti ja uuesti korrata), seega otsustasin pigem tänaseks lõpetada ja homseks õppimiseks korralikult välja puhata.

PS. Ei, ma ei kirjutanud seda programmi 8 tundi  :lol:
Selle peale kulus ehk 40 minutit kuni tunnike. Mitte rohkem.

Veebi koha pealt nii palju, et uurisin täna natuke ja otsustasin, et kõige pealt tahaksin Java natuke rohkem käppa saada ja alles siis järgmist suuremat sammu teha. Ei taha endale segadust tekitada. Lisaks ei oleks veebiäppi loomise teadmistest niikuinii mingit kasu kui ma reaalselt Javaga midagi korralikku valmis ehitada ei oska.


Viimati muutis seda Ekux (09.02.19 23:11). Kokku muudetud 1 kord
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 09.02.19 17:26

Today was a good day!

Kell on alles 17 ja võin täie kindlusega öelda, et saagu nüüd edasi, mis saab,
aga tänane päev läheb kirja kui üks produktiivsematest laupäevadest mu elus.

Ärkasin kell 8 (mingil imekombel, magama läksin eile ju teadagi, mis kell).
Ilma pikema molutamise, jobutamise, tobutamise, lojutamise ja muu selliseta tegin omale ühe natuke liiga kange kohvi, rabasin läpaka ja asusin õppima.
Lõunaks olid kõik videod läbi vaadatud ja ka lisaks veel natuke kordamist tehtud (skippisin kõik videod veel uuesti läbi, otsides kohti, mis olid arusaamatuks jäänud).

Pärast seda otsustasin, et on aeg võtta kätte projekt, millele ma olen alati mõelnud, et tahaks ise kunagi päris oma teha.
Instant message programm:

SERVER:
Kood:
package chatServer;

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Server extends JFrame{
 
 private ServerSocket server;
 private Socket ühendus;
 private ObjectOutputStream välja;
 private ObjectInputStream sisse;
 private JTextArea jutukas;
 private JTextField lahter;
 
 public Server() {
 super("WW-chat");
 lahter = new JTextField();
 Font minuFont = new Font("Montserrat", Font.PLAIN, 30);
 lahter.setFont(minuFont);
 lahter.setEditable(false);
 lahter.addActionListener(
 new ActionListener() {
 public void actionPerformed(ActionEvent event) {
 saadaSõnum(event.getActionCommand());
 lahter.setText("");
 }
 }
 
 );
 
 add(lahter, BorderLayout.SOUTH);
 jutukas = new JTextArea();
 jutukas.setFont(minuFont);
 add(new JScrollPane(jutukas));
 setSize(1000, 500);
 setVisible(true);
 }
 
 /*
 * SERVERI TÖÖTAMINE
 */
 
 public void käivitaServer() {
 try {
 server = new ServerSocket(7777, 2);
 while(true) {
 try {
 ootaÜhendust();
 looSide();
 jutukasAktiivne();
 }catch(EOFException eofException) {
 kuvaSõnum("/nServer läks katki.");
 }finally {
 endEks();
 }
 }
 }catch(IOException ioException) {
 ioException.printStackTrace();
 }
 }
 
 //ÜHENDUSE SAAVUTAMINE
 
 private void ootaÜhendust() throws IOException{
 kuvaSõnum("\nOotan ühendust... \n");
 ühendus = server.accept();
 kuvaSõnum("Ühendus loodud.");
 }
 
 //ANDMEVAHETUSE LOOMINE
 private void looSide() throws IOException{
 välja = new ObjectOutputStream(ühendus.getOutputStream());
 välja.flush();
 sisse = new ObjectInputStream(ühendus.getInputStream());
 kuvaSõnum("\nAndmeside loodud. \n");
 }
 
 //JUTUKAS
 
 private void jutukasAktiivne() throws IOException{
 String sõnum = "Jutukas aktiivne!";
 saadaSõnum(sõnum);
 trükk(true);
 do {
 try {
 sõnum = (String) sisse.readObject();
 kuvaSõnum("\n" + sõnum);
 }catch(ClassNotFoundException classNotFoundException) {
 kuvaSõnum("\nMidagi jäi saamata.");
 }
 }while(!sõnum.equals("SERVER: KINNI"));
 }
 
 //ÜHENDUSE LÕPETAMINE
 
 private void endEks() {
 kuvaSõnum("\nÜhenduse lõpetamine... \n");
 trükk(false);
 try {
 välja.close();
 sisse.close();
 ühendus.close();
 }catch(IOException ioException) {
 ioException.printStackTrace();
 }
 }
 
 //KIRJA SAATMINE SERVERIST CLIENTILE
 
 private void saadaSõnum(String sõnum) {
 try {
 välja.writeObject("SERVER: "+ sõnum);
 välja.flush();
 kuvaSõnum("\nSERVER: "+ sõnum);
 }catch(IOException ioException) {
 jutukas.append("\nEI ÕNNESTU!");
 }
 }
 
 //JUTUKA REFRESH
 
 private void kuvaSõnum(final String text) {
 SwingUtilities.invokeLater(
 new Runnable() {
 public void run() {
 jutukas.append(text);
 }
 }
 );
 }
 
 //KIRJUTAMISE AKTIVEERIMINE
 
 private void trükk(final boolean tof) {
 SwingUtilities.invokeLater(
 new Runnable() {
 public void run() {
 lahter.setEditable(tof);
 }
 }
 );
 }
 
}
CLIENT:
Kood:
package chatClient;

import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Client extends JFrame {
 
 private Socket ühendus;
 private String IP;
 private ObjectOutputStream välja;
 private ObjectInputStream sisse;
 private JTextArea jutukas;
 private JTextField lahter;
 private String sõnum = "";
 
 public Client(String host) {
 super("WWChat client");
 IP = host;
 lahter = new JTextField();
 Font minuFont = new Font("Montserrat", Font.PLAIN, 30);
 lahter.setFont(minuFont);
 lahter.setEditable(false);
 lahter.addActionListener(
 new ActionListener() {
 public void actionPerformed(ActionEvent event) {
 saadaSõnum(event.getActionCommand());
 lahter.setText("");
 }
 }
 );
 add(lahter, BorderLayout.SOUTH);
 jutukas = new JTextArea();
 jutukas.setFont(minuFont);
 add(new JScrollPane(jutukas), BorderLayout.CENTER);
 setSize(1000,500);
 setVisible(true);
 }
 
 //ÜHENDAMINE SERVERIGA
 
 public void käivitaClient() {
 try {
 ühendaServeriga();
 looSide();
 jutukasAktiivne();
 }catch(EOFException eofException) {
 kuvaSõnum("\n Client läks minema.");
 }catch(IOException ioException) {
 ioException.printStackTrace();
 }finally {
 endEks();
 }
 }
 
 private void ühendaServeriga() throws IOException{
 kuvaSõnum("\nÜhenduse loomine...\n");
 ühendus = new Socket(InetAddress.getByName(IP), 7777);
 kuvaSõnum("Ühendus loodud!\n");
 }
 
 //ANDMEVAHETUSE LOOMINE
 
 private void looSide() throws IOException{
 välja = new ObjectOutputStream(ühendus.getOutputStream());
 välja.flush();
 sisse = new ObjectInputStream(ühendus.getInputStream());
 }
 
 //JUTUKAS
 
 private void jutukasAktiivne() throws IOException{
 trükk(true);
 do {
 try {
 sõnum = (String) sisse.readObject();
 kuvaSõnum("\n"+ sõnum);
 }catch(ClassNotFoundException classNotFoundException) {
 kuvaSõnum("Kirja ei saanud kuvada.");
 }
 
 }while(!sõnum.equals("CLIENT: KINNI"));
 }
 
 //ÜHENDUSE KATKESTAMINE
 
 private void endEks() {
 kuvaSõnum("\nKatkestan ühenduse.");
 trükk(false);
 try {
 välja.close();
 sisse.close();
 ühendus.close();
 }catch(IOException ioException) {
 ioException.printStackTrace();
 }
 }
 
 //KIRJA SAATMINE SERVERILE
 
 private void saadaSõnum(String sõnum) {
 try {
 välja.writeObject("CLIENT: "+sõnum);
 välja.flush();
 kuvaSõnum("\nCLIENT: "+sõnum);
 }catch(IOException ioException) {
 jutukas.append("\n Kirja ei õnnestunud saata.");
 }
 }
 
 //KIRJA KUVAMINE
 
 private void kuvaSõnum(final String m) {
 SwingUtilities.invokeLater(
 new Runnable() {
 public void run() {
 jutukas.append(m);
 }
 }
 );
 }
 
 //KIRJUTAMISE ÕIGUS
 
 private void trükk(final boolean tof) {
 SwingUtilities.invokeLater(
 new Runnable() {
 public void run() {
 lahter.setEditable(tof);
 }
 }
 );
 }

}
Programmi eesmärk on pakkuda võimalust kahel inimesel omavahel vestelda kindla teadmisega, et nende vestlust ei näe mitte keegi kolmas ja ei saa ka mitte kunagi nägema, sest programmi sulgemisel kaob toimunud vestlusest viimanegi jälg ning mitte mingit logimist ei toimu.

Minu Java blogi Giphy
( video tegin palju pikema, aga GIFiks convertimisega läheb enamus kaduma   :/ )

Olen põnevil, et seda maailma veelgi edasi avastada ja uusi põnevaid projekte ette võtta.

Serveri ja clienti programmide loomise peale kulus kokku ca 5 tundi.


Viimati muutis seda Ekux (09.02.19 23:11). Kokku muudetud 1 kord
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 09.02.19 23:11

Väike update.

Pea on ideedest tühi, aga käekesed ikka sügelevad, nii et otsustasin oma esimesele programmile väikese reworki teha :P

Ühest käest selle pärast, et lihtsalt halb oli vaadata seda koodi ja teisest käest hakkab mulle nüüdseks Java syntax tasapisi käe sisse kuluma, nii et on paras aeg algust teha inglise keelele üle minekuga (siiani olen kõik võimalikud asjad eesti keelseks teinud, et oleks endal pärast oma koodi vaadates lihtsam aru saada ja seeläbi õppimisprotsessi kiirendada).
esimese programmi rework:

Kood:
package botRework;

import java.util.Arrays;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

public class BotRework{
 public static void main(String[] args) {
 

 String[] fruit = {"Banana", "Apple", "Orange", "Pear", "Pineapple", "Cherry", "Mango"};
 String[] cars = {"BMW"};
 String[] animals = {"Horse", "Cat", "Dog", "Monkey", "Giraffe", "Elephant", "Hippo"};
 
 Scanner input = new Scanner(System.in);
 
 System.out.println("Welcome! My name is WW-bot, what is your name?");
 String nextInput = input.nextLine();
 String name = nextInput;
 String correctName = name.substring(0, 1).toUpperCase() + name.substring(1);
 System.out.println("Alright, "+correctName+ " let us play a game!");
 sleepSec();
 System.out.println("");
 System.out.println("Pay attention:");
 sleepSec();
 System.out.println("I am going to give you a random word.");
 sleepSec();
 System.out.println("And you are going to decide where it belongs.");
 sleepSec();
 System.out.println("Alright? Press Enter if you are ready to play.");
 input.nextLine();
 System.out.println("Good job, "+correctName+", we are already beginning to understand eachother!");
 sleepSec();
 System.out.println("Okay, here we go! Your first word is: BANANA!");
 System.out.println("1) CAR,");
 System.out.println("2) FRUIT");
 System.out.println("3) ANIMAL");
 System.out.println("");
 System.out.println("Press the corresponding number on your keyboard.");
 
 int option = input.nextInt();
 if (option == 1) {
 System.out.println("You think that a banana is a car!");
 System.out.println("Checking...");
 sleepSec();
 boolean includes = Arrays.stream(cars).anyMatch("banana"::equals);
 if(includes) {
 System.out.println("That is correct! Banana = car.");
 }else {
 System.out.println("Unfortunately that is incorrect.");
 }
 }else if (option == 2) {
 System.out.println("Your answer is fruit!");
 System.out.println("Checking...");
 sleepSec();
 boolean includes = Arrays.stream(fruit).anyMatch("banana"::equals);
 if(includes) {
 System.out.println("And that is a correct answer!");
 }else {
 System.out.println("Yes, it is a fruit. This code is broken.");
 }
 }else{
 System.out.println("You think a banana is an animal...");
 System.out.println("Checking your answer...");
 sleepSec();
 boolean includes = Arrays.stream(animals).anyMatch("banana"::equals);
 if(includes) {
 System.out.println("No way.");
 }else {
 System.out.println("Nope.");
 }

 }
 System.out.println("");
 System.out.println("");
 System.out.println("Moving on to the next word.");
 System.out.println("And the word is: OPEL!");
 System.out.println("1) CAR,");
 System.out.println("2) FRUIT");
 System.out.println("3) CITY");
 System.out.println("");
 System.out.println("As earlier, respond with a press of the correct key.");
 
 int secondOption = input.nextInt();
 if (secondOption == 1) {
 System.out.println("You say car");
 System.out.println("I check");
 boolean includes = Arrays.stream(cars).anyMatch("Opel"::equals);
 if(includes) {
 System.out.println("Correct");
 }else {
 System.out.println("No correct");
 }
 }else if (secondOption == 2) {
 System.out.println("I is robot");
 System.out.println("You is human");
 boolean includes = Arrays.stream(fruit).anyMatch("Opel"::equals);
 if(includes) {
 System.out.println("I do what you say");
 }else {
 System.out.println("Because I is robot");
 }
 }else{
 System.out.println("I never ask");
 System.out.println("And neither do you");
 boolean includes = Arrays.stream(animals).anyMatch("Opel"::equals);
 if(includes) {
 System.out.println("I just do");
 }else {
 System.out.println("Whatever you say");
 }

 }
 input.close();
 int bigInt = 1;
 while(bigInt < 1000) {
 System.out.println("Byeeee.");
 sleepSec();
 }
 }
 
 static void sleepSec(){
 try {
 TimeUnit.SECONDS.sleep(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 }
}
Pilvik
Pilvik
Postitusi : 3378
Maine : 518
Liitus : 11/11/2012
Vaata kasutaja profiili

PostitaminePilvik on 12.02.19 1:04

Jälgin huviga kuhu jõuad omadega. :)
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 12.02.19 21:48

Ikka veel lapsekingades... :)

databaas:

Kood:
package regLogin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class Database {
    private static final String DATABASE_DRIVER = "com.mysql.jdbc.Driver";
    private static final String DATABASE_URL = "jdbc:mysql://minuserver:3306/javadata";
    private static final String USERNAME = "javadata";
    private static final String PASSWORD = "LiigaKergeParool123";

    private Connection connection;
    private Properties properties;

    private Properties getProperties() {
        if (properties == null) {
            properties = new Properties();
            properties.setProperty("user", USERNAME);
            properties.setProperty("password", PASSWORD);
        }
        return properties;
    }

    public Connection connect() {
        if (connection == null) {
            try {
                Class.forName(DATABASE_DRIVER);
                connection = DriverManager.getConnection(DATABASE_URL, getProperties());
            } catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            }
        }
        return connection;
    }

    public void disconnect() {
        if (connection != null) {
            try {
                connection.close();
                connection = null;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Viimased 2 päeva olengi ninapidi teoorias istunud ja üritanud sõrmega rida ajada, kuidas Java ja MySQL omavahel suhtlevad.
Järgmises projektis on kindlasti plaanis seda ka realiseerida.

Stay tuned...
Rare Skillzz
Rare Skillzz

Postitusi : 455
Maine : 66
Liitus : 01/04/2016
Vaata kasutaja profiili

PostitamineRare Skillzz on 13.02.19 16:43

Edu, jälgin mis edasi saab.
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 17.02.19 1:39

Hurraa! Järjekordsest koerast on üle ronitud :roll:

Tegus nädal seljataga ning viimaks ometi võin öelda, et olen nullist valmis teinud ühe registreerimissüsteemi, mis noh... Toimib.
Toimib ta küll tõesti ainult konsoolis, aga sellest hoolimata reaalne ühendus ja andmevahetus databaasiga on olemas, seega on mul põhjust rõõmustada :)

Järgmisena siis sisselogimissüsteem, mis on eeldatavasti kõvasti lihtsam kui registreerimissüsteem, aga eks näis, praegu oskan ainult poolt aimata sellest, mis ma seal tegelikult tegema pean, et asi töötaks.

registreerimissüsteem:

Kood:
package reg;

import java.sql.*;
import java.util.Scanner;

public class Reg {
   // JDBC driver name and stuff
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/OleKavalValiFaval";

   //  Database stuff
   static final String USER = "OleKavalValiFaval";
   static final String PASS = "OleKavalValiFaval";
  
   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   Scanner Scanner = new Scanner(System.in);
  
  
   try {
   Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection(DB_URL, USER, PASS);
   stmt = conn.createStatement();
   }catch(SQLException se) {
   System.out.println("Unable to connect to the database.");
   }catch(Exception e) {
   System.out.println("Driver class error.");
   }  
  
   String getStuff = "SELECT id, username FROM users";
   try {
   ResultSet resultStuff = stmt.executeQuery(getStuff);
   int maxID = 0;
   boolean alreadyExists = false;
  
   System.out.println("Please type in your desired username.");
   String desiredUser = Scanner.nextLine();
   while(resultStuff.next()) {
   maxID++;
   String existingUser = resultStuff.getString("username");
   if(desiredUser.contentEquals(existingUser)) {
   alreadyExists = true;
   }
   }
   if(!alreadyExists) {
   System.out.println("Awesome! The username "+ desiredUser + " is available and it's all yours now!");
   System.out.println("Please type in your desired password.");
   String desiredPass = Scanner.nextLine();
   System.out.println("Please repeat your desired password.");
   String repeatedPass = Scanner.nextLine();
   if(desiredPass.equals(repeatedPass)) {
   System.out.println("Great job! Now for the final step, please insert your email address.");
   String desiredEmail = Scanner.nextLine();
   if(desiredEmail.contains("@")) {
   String sql = "INSERT INTO users " +
   "VALUES (" + (maxID+1) +", " + "'" + desiredUser + "', " + "'"+desiredPass+"', " + "'" + desiredEmail + "')";
   stmt.executeUpdate(sql);
   System.out.println("Perfection! Your account is created.");
   System.out.println("Your username: " + desiredUser);
   System.out.println("Your password: " + desiredPass);
   System.out.println("Your email: " + desiredEmail);
   }else {
   System.out.println("That is not a valid email address.");
   }
   }else {
   System.out.println("Your passwords did not match!");
   }
   }else {
   System.out.println("This username is already in use.");
   }
   System.out.println(maxID);
   }catch(SQLException se) {
   System.out.println("Unable to execute database query (getStuff).");
   }
   Scanner.close();
}
}

Skripti loomiseks kulus ca 4 tundi.

Olen täiesti veendunud, et tegemist ei ole kaugeltki perfektse asjaga, nii et kogenumad sellid, kes siin silma peal hoiavad - igasugune tagasiside on teret
4Headulnud! :)

Suur tänu kõigile, kes huvi tunnevad!
Täna on minu esimesest päris-sammust programmeerimise suunas möödas ca 2 nädalat ja see on olnud üks äärmiselt põnev aeg.

Kuu aja möödudes selle teema loomisest on mul teile varuks ka pisike üllatus, mis peaks meeldima nii lihtsalt-huvi-pärast-jälgijatele kui ka neile, kes kunagi soovivad ise sama rada alustada ja seda blogi teejuhina otsustavad kasutada  :roll:
Rare Skillzz
Rare Skillzz

Postitusi : 455
Maine : 66
Liitus : 01/04/2016
Vaata kasutaja profiili

PostitamineRare Skillzz on 17.02.19 12:29

@Ekux kirjutas:
Hurraa! Järjekordsest koerast on üle ronitud :roll:

Tegus nädal seljataga ning viimaks ometi võin öelda, et olen nullist valmis teinud ühe registreerimissüsteemi, mis noh... Toimib.
Toimib ta küll tõesti ainult konsoolis, aga sellest hoolimata reaalne ühendus ja andmevahetus databaasiga on olemas, seega on mul põhjust rõõmustada :)

Järgmisena siis sisselogimissüsteem, mis on eeldatavasti kõvasti lihtsam kui registreerimissüsteem, aga eks näis, praegu oskan ainult poolt aimata sellest, mis ma seal tegelikult tegema pean, et asi töötaks.

registreerimissüsteem:

Kood:
package reg;

import java.sql.*;
import java.util.Scanner;

public class Reg {
   // JDBC driver name and stuff
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/OleKavalValiFaval";

   //  Database stuff
   static final String USER = "OleKavalValiFaval";
   static final String PASS = "OleKavalValiFaval";
  
   public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   Scanner Scanner = new Scanner(System.in);
  
  
   try {
   Class.forName("com.mysql.jdbc.Driver");
   conn = DriverManager.getConnection(DB_URL, USER, PASS);
   stmt = conn.createStatement();
   }catch(SQLException se) {
   System.out.println("Unable to connect to the database.");
   }catch(Exception e) {
   System.out.println("Driver class error.");
   }  
  
   String getStuff = "SELECT id, username FROM users";
   try {
   ResultSet resultStuff = stmt.executeQuery(getStuff);
   int maxID = 0;
   boolean alreadyExists = false;
  
   System.out.println("Please type in your desired username.");
   String desiredUser = Scanner.nextLine();
   while(resultStuff.next()) {
   maxID++;
   String existingUser = resultStuff.getString("username");
   if(desiredUser.contentEquals(existingUser)) {
   alreadyExists = true;
   }
   }
   if(!alreadyExists) {
   System.out.println("Awesome! The username "+ desiredUser + " is available and it's all yours now!");
   System.out.println("Please type in your desired password.");
   String desiredPass = Scanner.nextLine();
   System.out.println("Please repeat your desired password.");
   String repeatedPass = Scanner.nextLine();
   if(desiredPass.equals(repeatedPass)) {
   System.out.println("Great job! Now for the final step, please insert your email address.");
   String desiredEmail = Scanner.nextLine();
   if(desiredEmail.contains("@")) {
   String sql = "INSERT INTO users " +
   "VALUES (" + (maxID+1) +", " + "'" + desiredUser + "', " + "'"+desiredPass+"', " + "'" + desiredEmail + "')";
   stmt.executeUpdate(sql);
   System.out.println("Perfection! Your account is created.");
   System.out.println("Your username: " + desiredUser);
   System.out.println("Your password: " + desiredPass);
   System.out.println("Your email: " + desiredEmail);
   }else {
   System.out.println("That is not a valid email address.");
   }
   }else {
   System.out.println("Your passwords did not match!");
   }
   }else {
   System.out.println("This username is already in use.");
   }
   System.out.println(maxID);
   }catch(SQLException se) {
   System.out.println("Unable to execute database query (getStuff).");
   }
   Scanner.close();
}
}

Skripti loomiseks kulus ca 4 tundi.

Olen täiesti veendunud, et tegemist ei ole kaugeltki perfektse asjaga, nii et kogenumad sellid, kes siin silma peal hoiavad - igasugune tagasiside on teret
4Headulnud! :)

Suur tänu kõigile, kes huvi tunnevad!
Täna on minu esimesest päris-sammust programmeerimise suunas möödas ca 2 nädalat ja see on olnud üks äärmiselt põnev aeg.

Kuu aja möödudes selle teema loomisest on mul teile varuks ka pisike üllatus, mis peaks meeldima nii lihtsalt-huvi-pärast-jälgijatele kui ka neile, kes kunagi soovivad ise sama rada alustada ja seda blogi teejuhina otsustavad kasutada  :roll:

Minu arust üsna hästi välja tulnud script, aga saab ka ilmselt paremini, ning lühidamalt.
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 17.02.19 15:12


Minu Java blogi 7ZBYhI8
lihtsalt :):

Kood:
public static void main(String[] args) {
 String javaBB = "Ole kaval, vali Faval!";
 boolean Registered = false;
 System.out.println("If you like Faval, please consider registering.");
 boolean likeUs;
 if(likeUs) {
 pleaseRegister();
 justClickHere();
 }else {
 beOurGuest();
 }

 }

@Rare Skillzz kirjutas:Minu arust üsna hästi välja tulnud script, aga saab ka ilmselt paremini, ning lühidamalt.
Täpsusta palun?
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 24.02.19 10:35

-


Viimati muutis seda Ekux (30.07.19 15:08). Kokku muudetud 1 kord
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 26.03.19 0:42

Juurte juurde tagasi!



Tekkis vähe pikem vahe sisse jah, erinevatel põhjustel, mida ma siin kõiki üles loetlema ei hakka, aga üheks näiteks võin tuua, et selle kuu lõpus lõppeb mul ka praegune tööleping ning sellest tulenevalt on elus päris palju muutusi juba olnud ja ka veel tulemas.

Teemasse nii palju, et see on täiesti ilma igasuguse kahtluseta minu jaoks kõige huvitavam ja arendavam projekt, millega ma seni tegelenud olen ja ma tahan sellega veel palju põnevat korda saata.
Eks näis :)
Ken.
Ken.

Postitusi : 128
Maine : 8
Liitus : 02/01/2019
Vaata kasutaja profiili

PostitamineKen. on 23.07.19 16:10

Tegeled veel?
Kui jah, siis tuult tiibadesse!
Ekux
Ekux
Komeet
Postitusi : 472
Maine : 107
Liitus : 25/08/2016
Vaata kasutaja profiili

PostitamineEkux on 30.07.19 15:05

Paraku jäin liiga palju kõrvalistele teguritele lootma ja sisuliselt jäin pika ninaga ning olin sunnitud mitte nälgasuremise eesmärgil muu elukutse valima.
Selle kõrvalt aga enam arvutis istumiseks aega ei ole.

Ei kahetse. Ega ka virise. Lihtsalt teadmiseks nendele, keda huvitas see teema.

Võib lukku panna kthxbye.
Sponsored content

PostitamineSponsored content

Vaata eelmist teemat Vaata järgmist teemat Tagasi üles

Soovid reklaamidest vabaneda?

Selleks logi sisse või tee endale kasutaja.

Liitu foorumiga

Tee endale kasutaja ning osale aruteludes.


Tee uus kasutaja

Logi sisse

Omad foorumis juba kasutajat? Logi sisse.


Logi sisse

 
Permissions in this forum:
Sa ei saa vastata siinsetele teemadele