diff --git a/task1/.idea/compiler.xml b/task1/.idea/compiler.xml new file mode 100644 index 0000000..53a5950 --- /dev/null +++ b/task1/.idea/compiler.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task1/.idea/description.html b/task1/.idea/description.html new file mode 100644 index 0000000..cc10d56 --- /dev/null +++ b/task1/.idea/description.html @@ -0,0 +1,2 @@ +Simple JavaFX 2.0 application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided. + \ No newline at end of file diff --git a/task1/.idea/encodings.xml b/task1/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/task1/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/task1/.idea/gradle.xml b/task1/.idea/gradle.xml new file mode 100644 index 0000000..3e3960b --- /dev/null +++ b/task1/.idea/gradle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/task1/.idea/misc.xml b/task1/.idea/misc.xml new file mode 100644 index 0000000..62f90ed --- /dev/null +++ b/task1/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/task1/.idea/modules.xml b/task1/.idea/modules.xml new file mode 100644 index 0000000..511470e --- /dev/null +++ b/task1/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/task1/.idea/uiDesigner.xml b/task1/.idea/uiDesigner.xml new file mode 100644 index 0000000..3b00020 --- /dev/null +++ b/task1/.idea/uiDesigner.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task1/.idea/vcs.xml b/task1/.idea/vcs.xml new file mode 100644 index 0000000..def6a6a --- /dev/null +++ b/task1/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/task1/.idea/workspace.xml b/task1/.idea/workspace.xml new file mode 100644 index 0000000..2ad8d22 --- /dev/null +++ b/task1/.idea/workspace.xml @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1359379246138 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task1/pom.xml b/task1/pom.xml new file mode 100644 index 0000000..7dcb086 --- /dev/null +++ b/task1/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + nniit + task1 + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/task1/src/main/java/sample/Client.java b/task1/src/main/java/sample/Client.java new file mode 100644 index 0000000..e97b887 --- /dev/null +++ b/task1/src/main/java/sample/Client.java @@ -0,0 +1,27 @@ +package sample; + +import java.io.*; +import java.net.*; + +public class Client { + private String message; + private Socket clientSocket; + + public String getMessage() { + return message; + } + + public void startClient(){ + try { + clientSocket = new Socket("127.0.0.1", 8000); + InputStreamReader inputStreamReader = new InputStreamReader(clientSocket.getInputStream()); + BufferedReader reader = new BufferedReader(inputStreamReader); + message = reader.readLine(); + reader.close(); + clientSocket.close(); + } + catch(IOException e){ + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/task1/src/main/java/sample/Controller.java b/task1/src/main/java/sample/Controller.java new file mode 100644 index 0000000..cf4f9f4 --- /dev/null +++ b/task1/src/main/java/sample/Controller.java @@ -0,0 +1,46 @@ +package sample; + +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; + +import java.net.URL; +import java.util.ResourceBundle; +import java.util.Timer; +import java.util.TimerTask; + +public class Controller implements Initializable { + Client client; + + @FXML + private TextField tfTime; + + @FXML + private Button btnConnect; + + private Timer timer; + private TimerTask task; + + @FXML + public void onClickConnect() { + btnConnect.setDisable(true); + timer = new Timer(); + task = new TimerTask() { + public void run() { + Platform.runLater(()->{ + client.startClient(); + tfTime.setText(client.getMessage()); + }); + + } + }; + timer.schedule(task, 0, 1000); + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + client = new Client(); + } +} \ No newline at end of file diff --git a/task1/src/main/java/sample/Main.java b/task1/src/main/java/sample/Main.java new file mode 100644 index 0000000..aa82e2c --- /dev/null +++ b/task1/src/main/java/sample/Main.java @@ -0,0 +1,23 @@ +package sample; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class Main extends Application { + + @Override + public void start(Stage primaryStage) throws Exception{ + Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml")); + primaryStage.setTitle("task1"); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + } + + + public static void main(String[] args) { + launch(args); + } +} \ No newline at end of file diff --git a/task1/src/main/java/sample/Server.java b/task1/src/main/java/sample/Server.java new file mode 100644 index 0000000..5930bb3 --- /dev/null +++ b/task1/src/main/java/sample/Server.java @@ -0,0 +1,31 @@ +package sample; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class Server { + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy 'at' HH:mm:ss"); + + public void startServer() throws IOException { + ServerSocket server = new ServerSocket(8000); + System.out.println("server started"); + + while (true) { + Socket clientSocket = server.accept(); + PrintWriter writer = new PrintWriter(clientSocket.getOutputStream()); + LocalDateTime now = LocalDateTime.now(); + String message = formatter.format(now); + writer.println(message); + writer.close(); + } + } + + public static void main(String[] args) throws IOException { + Server server = new Server(); + server.startServer(); + } + +} \ No newline at end of file diff --git a/task1/src/main/resources/sample.fxml b/task1/src/main/resources/sample.fxml new file mode 100644 index 0000000..a7f5dbc --- /dev/null +++ b/task1/src/main/resources/sample.fxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task1/target/classes/META-INF/task1.kotlin_module b/task1/target/classes/META-INF/task1.kotlin_module new file mode 100644 index 0000000..a49347a Binary files /dev/null and b/task1/target/classes/META-INF/task1.kotlin_module differ diff --git a/task1/target/classes/sample.fxml b/task1/target/classes/sample.fxml new file mode 100644 index 0000000..a7f5dbc --- /dev/null +++ b/task1/target/classes/sample.fxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task1/target/classes/sample/Client.class b/task1/target/classes/sample/Client.class new file mode 100644 index 0000000..277a569 Binary files /dev/null and b/task1/target/classes/sample/Client.class differ diff --git a/task1/target/classes/sample/Controller$1.class b/task1/target/classes/sample/Controller$1.class new file mode 100644 index 0000000..0abd5e3 Binary files /dev/null and b/task1/target/classes/sample/Controller$1.class differ diff --git a/task1/target/classes/sample/Controller.class b/task1/target/classes/sample/Controller.class new file mode 100644 index 0000000..76d635e Binary files /dev/null and b/task1/target/classes/sample/Controller.class differ diff --git a/task1/target/classes/sample/Main.class b/task1/target/classes/sample/Main.class new file mode 100644 index 0000000..2706d16 Binary files /dev/null and b/task1/target/classes/sample/Main.class differ diff --git a/task1/target/classes/sample/Server.class b/task1/target/classes/sample/Server.class new file mode 100644 index 0000000..94a75d6 Binary files /dev/null and b/task1/target/classes/sample/Server.class differ diff --git a/task1/task1.iml b/task1/task1.iml new file mode 100644 index 0000000..c035f0b --- /dev/null +++ b/task1/task1.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/compiler.xml b/task2/.idea/compiler.xml new file mode 100644 index 0000000..931b3ee --- /dev/null +++ b/task2/.idea/compiler.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/description.html b/task2/.idea/description.html new file mode 100644 index 0000000..cc10d56 --- /dev/null +++ b/task2/.idea/description.html @@ -0,0 +1,2 @@ +Simple JavaFX 2.0 application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided. + \ No newline at end of file diff --git a/task2/.idea/encodings.xml b/task2/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/task2/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/task2/.idea/gradle.xml b/task2/.idea/gradle.xml new file mode 100644 index 0000000..3e3960b --- /dev/null +++ b/task2/.idea/gradle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/task2/.idea/misc.xml b/task2/.idea/misc.xml new file mode 100644 index 0000000..62f90ed --- /dev/null +++ b/task2/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/modules.xml b/task2/.idea/modules.xml new file mode 100644 index 0000000..a51395e --- /dev/null +++ b/task2/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/uiDesigner.xml b/task2/.idea/uiDesigner.xml new file mode 100644 index 0000000..3b00020 --- /dev/null +++ b/task2/.idea/uiDesigner.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task2/.idea/vcs.xml b/task2/.idea/vcs.xml new file mode 100644 index 0000000..def6a6a --- /dev/null +++ b/task2/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/task2/.idea/workspace.xml b/task2/.idea/workspace.xml new file mode 100644 index 0000000..6edf01c --- /dev/null +++ b/task2/.idea/workspace.xml @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1359379246138 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/pom.xml b/task2/pom.xml new file mode 100644 index 0000000..b32ec1c --- /dev/null +++ b/task2/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + nniit + task2 + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/task2/src/main/java/sample/Client.java b/task2/src/main/java/sample/Client.java new file mode 100644 index 0000000..43b3ae0 --- /dev/null +++ b/task2/src/main/java/sample/Client.java @@ -0,0 +1,35 @@ +package sample; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.Socket; + +public class Client { + private String aphorism; + private Socket server; + private BufferedReader reader; + private PrintWriter writer; + + public Client() throws IOException { + server = new Socket("127.0.0.1", 8000); + reader = new BufferedReader(new InputStreamReader(server.getInputStream())); + writer = new PrintWriter(server.getOutputStream(), true); + } + + public String getAphorism() { + return aphorism; + } + + public void startClient(String message) throws IOException { + writer.println(message); + if (message.equals("exit")){ + reader.close(); + writer.close(); + server.close(); + } + else{ + aphorism = reader.readLine(); + } + } +} \ No newline at end of file diff --git a/task2/src/main/java/sample/Controller.java b/task2/src/main/java/sample/Controller.java new file mode 100644 index 0000000..d00e572 --- /dev/null +++ b/task2/src/main/java/sample/Controller.java @@ -0,0 +1,37 @@ +package sample; + +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.TextArea; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; + +public class Controller implements Initializable { + Client client; + + @FXML + private TextArea taAphorism; + + @FXML + public void onClickGet() throws IOException { + client.startClient("get"); + taAphorism.setText(client.getAphorism()); + } + + @FXML + public void onClickExit() throws IOException { + client.startClient("exit"); + System.exit(0); + } + + @Override + public void initialize(URL location, ResourceBundle resources) { + try { + client = new Client(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/task2/src/main/java/sample/Main.java b/task2/src/main/java/sample/Main.java new file mode 100644 index 0000000..1b0814e --- /dev/null +++ b/task2/src/main/java/sample/Main.java @@ -0,0 +1,22 @@ +package sample; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class Main extends Application { + + @Override + public void start(Stage primaryStage) throws Exception{ + Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml")); + primaryStage.setTitle("task2"); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + } + + public static void main(String[] args) { + launch(args); + } +} \ No newline at end of file diff --git a/task2/src/main/java/sample/Server.java b/task2/src/main/java/sample/Server.java new file mode 100644 index 0000000..933944d --- /dev/null +++ b/task2/src/main/java/sample/Server.java @@ -0,0 +1,44 @@ +package sample; +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; +import java.util.Random; + +public class Server { + private ArrayList aphorisms = new ArrayList<>(); + + public Server() throws IOException { + String line; + File file = new File("wisdom-utf8.txt"); + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8")); + while ((line = reader.readLine()) != null) { + aphorisms.add(line); + } + reader.close(); + } + + public void startServer() throws IOException { + ServerSocket server = new ServerSocket(8000); + Socket client = server.accept(); + BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream())); + PrintWriter writer = new PrintWriter(client.getOutputStream(), true); + + while (true) { + String input = reader.readLine(); + if (input.equals("exit")) { + break; + } + int i = new Random().nextInt(aphorisms.size()); + writer.println(aphorisms.get(i)); + } + reader.close(); + writer.close(); + client.close(); + } + + public static void main(String[] args) throws IOException { + Server server = new Server(); + server.startServer(); + } +} \ No newline at end of file diff --git a/task2/src/main/resources/sample.fxml b/task2/src/main/resources/sample.fxml new file mode 100644 index 0000000..3a41c50 --- /dev/null +++ b/task2/src/main/resources/sample.fxml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task2/target/classes/sample.fxml b/task2/target/classes/sample.fxml new file mode 100644 index 0000000..3a41c50 --- /dev/null +++ b/task2/target/classes/sample.fxml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task2/target/classes/sample/Client.class b/task2/target/classes/sample/Client.class new file mode 100644 index 0000000..29f3291 Binary files /dev/null and b/task2/target/classes/sample/Client.class differ diff --git a/task2/target/classes/sample/Controller.class b/task2/target/classes/sample/Controller.class new file mode 100644 index 0000000..8b0ae08 Binary files /dev/null and b/task2/target/classes/sample/Controller.class differ diff --git a/task2/target/classes/sample/Main.class b/task2/target/classes/sample/Main.class new file mode 100644 index 0000000..db09760 Binary files /dev/null and b/task2/target/classes/sample/Main.class differ diff --git a/task2/target/classes/sample/Server.class b/task2/target/classes/sample/Server.class new file mode 100644 index 0000000..3dbbc80 Binary files /dev/null and b/task2/target/classes/sample/Server.class differ diff --git a/task2/task2.iml b/task2/task2.iml new file mode 100644 index 0000000..c035f0b --- /dev/null +++ b/task2/task2.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/wisdom-utf8.txt b/task2/wisdom-utf8.txt new file mode 100644 index 0000000..c4c71c5 --- /dev/null +++ b/task2/wisdom-utf8.txt @@ -0,0 +1,164 @@ +Бог - это специальная программа, установленная в душах верующих, а Дьявол - просто вирус в ней. (Сергей Федин) АФОРИЗМ БОГИ РЕЛИГИЯ +Компьютерная игра настолько же хорошо заменяет игру вдвоем, насколько резиновая женщина настоящую. (Сергей Федин) АФОРИЗМ ЖЕНЩИНА ИГРА +Моя любимая порода собак - @. (Сергей Федин) АФОРИЗМ ЖИВОТНЫЕ РАЗНОЕ +Моя родина там, где мой компьютер. (Сергей Федин) +Моя любимая порода собак - @. (Сергей Федин) +Если на улице уже, кажись, закат, значит это восход. (GreeveX) +Настоящий программист всегда выберет путь через 10 граблей, максимально обходя их, 20 рисков, максимально задумываясь о методе реализации(а не о том, что будет если риск не оправдается), нежели согласится выбрать путь саморазрушения и остановке развития через принятие идеи программерски не уважающего себя человека. (GreeveX) +Инженер как врач общается с телом, программист как священник - с душой компьютера, а системный администратор как медсестра - поддерживает стабильное состояние. (Fobos (new_russian_man)) +Пока компьютер еще не научился самостоятельно мыслить, доверять ему можно. (Илья Герчиков) МЫСЛЬ РАЗУМ +Компьютер позволяет решать все те проблемы, которые до появления компьютера не существовали. (Неизвестный автор) +Программист - это не человек, это просто новая форма жизни. (Неизвестный автор) +Если муху с монитора ты сгоняешь мишкой, значит, тебе пора идти домой. (Неизвестный автор) +Трудное детство: Килобайтные игрушки. (Неизвестный автор) +Если мысли не помещаются в голове, заархивируйте их. (Неизвестный автор) +Если ваш компьютер завис: выдерните шнур, выдавите стекло. (Неизвестный автор) +Самый страшный вирус всегда сидит перед компьютером. (Неизвестный автор) +Бог придумал устройство, а сатана - драйвера. (Неизвестный автор) +Прежде чем удалить файл, убедись, что он не твой. (Неизвестный автор) +Если программист в 9-00 утра на работе, значит, он там и ночевал. (Неизвестный автор) +Клавиатуру топтать - это вам не джойстиком баловаться. (Неизвестный автор) +Бог смог сотворить мир всего за 6 дней только потому, что ему не надо решать проблемы совместимости с предыдущими версиями. (Неизвестный автор) +Умный программист всегда сможет занять компьютер дурной работой. (Неизвестный автор) +Ничего так не украшает женщину, как Фотошоп. (Неизвестный автор) +Компьютерщик - это или диагноз, или ориентация. (Неизвестный автор) +Первая заповедь программиста: не знаешь, что делать, делай что-нибудь. (Неизвестный автор) +Умные пользуются компьютером, чтобы сберечь время, а дурные, чтобы его потратить. (Неизвестный автор) +Он разогнал гостей, потом разогнал процессор. (Неизвестный автор) +Вышедшая новая операционная система не требует наличия у вас компьютера. (Неизвестный автор) +Возвращается муж неожиданно из Интернета: (Неизвестный автор) +Если ваша программа работает медленно, значит, вы опередили время. +Господи, не введи в искушение и избавь от Глюкавого. (Неизвестный автор) +Кулер - тоже вертолет, но маленький. (Неизвестный автор) +Жизнь - игра. Задумано плохо, но графика потрясающая. (Неизвестный автор) +Ваши руки ввели идиотскую команду и будут ампутированы. (Неизвестный автор) +Программы без ошибок можно написать двумя способами, но работает - третий. (Алан.Дж.Перлис) +Подумайте, сколько психических сил потрачено на поиски коренного различия между "алгоритмом" и "программой". (Алан.Дж.Перлис) +Когда изучаешь какой-либо вопрос, считаешь, что знаешь его; когда можешь писать о нем, становишься уверенней в своих знаниях; уверенность возрастает, когда можешь научить этому кого-нибудь другого; и совершенно уверен, когда начинаешь программировать. (Алан.Дж.Перлис) +Благодаря своей жизненности программирование всегда испытывает отчаянную потребность в новых штампах: Банальность успокаивает нервы. (Алан.Дж.Перлис) +Обучение детей программированию противоречит современной теории обучения. Разве интересно составлять планы, овладевать дисциплиной в организациии мышления, уделять внимание деталям и учиться быть самокритичным? (Алан.Дж.Перлис) +Нельзя научиться программированию с помощью ручного калькулятора, но можно забыть арифметику. (Алан.Дж.Перлис) +В хорошей системе не может быть слабого языка команд. (Алан.Дж.Перлис) +В программировании средняя наработка на отказ постоянно уменьшается. (Алан.Дж.Перлис) +Мы вот-вот сможем сказать: "Сегодня наша программа доказала теорему ферма". (Алан.Дж.Перлис) +Там, где есть модульность, возможно непонимание: Сокрытие информации предполагает необходимость проверки связи. (Алан.Дж.Перлис) +Отказ от языка ассемблера был яблоком раздора в наших садах эдема: Языки, использование которых приводит к растранжированию машинного времени, греховны. Лиспмашина сегодня позволяет своим программистам отказаться от фигового листка. (Алан.Дж.Перлис) +Машины скорее обнаруживают наличие беспорядка, чем наводят порядок. (Алан.Дж.Перлис) +Если мы верим в структуры данных, мы должны верить и в независимую (и потому одновременную) обработку. Зачем же еще собирать элементы в структуру? Почему мы терпим языки, которые дают нам одно, но не дают другое? (Алан.Дж.Перлис) +Простота только мешает поиску недостижимого. Если существуют афоризмы, должны быть и метаафоризмы. (Алан.Дж.Перлис) +Как только вы поняли, как писать программу, заставьте сделать это кого-нибудь другого. (Алан.Дж.Перлис) +Если в вашей процедуре 10 параметров, вероятно, какой-нибудь пропущен. (Алан.Дж.Перлис) +Афоризмы - это интерфейсы, по которым передается оценка и понимание. (Алан.Дж.Перлис) +Для машин естественные языки не естественны. (Алан.Дж.Перлис) +Лучше, чтобы в 100 функциях использовалась одна структура данных, чем в 10 функциях - 10 структур. (Алан.Дж.Перлис) +Веками индейцы создавали язык знаков, чтобы сообщить друг другу самое интересное. Программисты из разных племен (фортрана, лиспа, алгола, снобола и т.Д.) Могли бы воспользоваться таким языком, который понятен и без классной доски. (Алан.Дж.Перлис) +Не имейте хороших идей, если не хотите отвечать за них. (Алан.Дж.Перлис) +Для дилетанта лучшим пособием по программированию служит "алиса в стране чудес" - только потому, что для него это лучшее пособие по любому предмету. (Алан.Дж.Перлис) +Структурированное программирование потверждает закон исключенного третьего. (Алан.Дж.Перлис) +Все нужно проектировать сверху вниз, за исключением фундамента, с которого нужно начинать. (Алан.Дж.Перлис) +Каждая программа является частью другой программы и редко соответствует ей. (Алан.Дж.Перлис) +Самая важная машина та, что "бушует" у нас в голове и все время ищет нужный ей внешний эмулятор. Стандартизация существующих машин была бы катастрофой, и потому она, вероятно, не произойдет. +Афоризмы кристаллизуют несоответствия. (Алан.Дж.Перлис) +Чтобы понять программу, необходимо отождествить себя и с машиной, и с программой. (Алан.Дж.Перлис) +Когда кто-то говорит: "Мне нужен язык программирования, в котором достаточно только сказать, что мне нужно сделать", - дайте ему леденец. (Алан.Дж.Перлис) +В английском языке любое слово может быть глаголом. Разве могло бы такое быть в языках программирования? (Алан.Дж.Перлис) +Доказательство ценности системы - в ее существовании. (Алан.Дж.Перлис) +Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые моугт избегать ее. Гении ее устраняют. (Алан.Дж.Перлис) +Когда мы поймем машинные системы баз знаний, все будет, как и прежде, с той лишь разницей, что кончики пальцев будут обожжены. (Алан.Дж.Перлис) +Нельзя перейти от неформального к формальному с помощью формальных средств. (Алан.Дж.Перлис) +Программирование заставило дерево зацвести. (Алан.Дж.Перлис) +Появление эвм в домах не изменит ни один из них, но может возродить салуны. (Алан.Дж.Перлис) +Остерегайтесь бочки меда с ложкой дегтя тьюринга, где все возможно, но все интересное слишком сложно. (Алан.Дж.Перлис) +Трудно выделить смысл из строк, но это единственная "монета" связи, на которую мы можем рассчитывать. (Алан.Дж.Перлис) +Иногда мне кажется, что единственным универсумом в программировании является цикл. (Алан.Дж.Перлис) +Некоторые языки программирования допускают изменения, но сопротивляются прогрессу. (Алан.Дж.Перлис) +Легко сделать что-то переменным. Хитрость в том, чтобы измерять продолжительность постоянства. (Алан.Дж.Перлис) +Афоризмы возвращают глубокое семантической значение из базы данных, которая представляет собой процедуру. (Алан.Дж.Перлис) +Работу программистов следует оценивать не по их изобретательности и логике, а по полноте анализа каждой ситуации. (Алан.Дж.Перлис) +Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот. (Алан.Дж.Перлис) +Синтаксический сахар вызывает рак точек с запятой. (Алан.Дж.Перлис) +Часто средства оправдывают цели: Цели порождают метод, а метод выживает, даже когда разрушаются структуры, бывшие ранее целью. (Алан.Дж.Перлис) +Через пять лет у нас будет один суперязык программирования, только мы не можем установить начало этого пятилетнего периода. (Алан.Дж.Перлис) +Продолжительный контакт с машиной превращает математиков в клерков, и наоборот. (Алан.Дж.Перлис) +Все, что мы делаем в программировании - это частный случай чего-то более общего, и зачастую мы осознаем это чересчур быстро. (Алан.Дж.Перлис) +Софтвер находится в постоянном напряжении. Поскольку он символичен, его можно постоянно совершенствовать, но и произвольно изменять. (Алан.Дж.Перлис) +Афоризмы скорее подобны витаминам, чем белку. (Алан.Дж.Перлис) +Функции задерживают связь, структуры данных стимулируют связь. Мораль: Структурируйте данные как можно позднее в процессе программирования. (Алан.Дж.Перлис) +Единственная конструктивная теория, связывающая неврологию и психологию, возникает из исследований софтвера. (Алан.Дж.Перлис) +Если при объяснении вашей программы слушатель начинает кивать головой, его пора будить. (Алан.Дж.Перлис) +Программирование - это неестественный процесс. (Алан.Дж.Перлис) +Когда мы пишем программы, которые "обучают", мы - обучаем, а они - нет. +Афоризмы кристаллизуют несоответствия. (Алан.Дж.Перлис) +Чтобы понять программу, необходимо отождествить себя и с машиной, и с программой. (Алан.Дж.Перлис) +Когда кто-то говорит: "Мне нужен язык программирования, в котором достаточно только сказать, что мне нужно сделать", - дайте ему леденец. (Алан.Дж.Перлис) +В английском языке любое слово может быть глаголом. Разве могло бы такое быть в языках программирования? (Алан.Дж.Перлис) +Доказательство ценности системы - в ее существовании. (Алан.Дж.Перлис) +Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые моугт избегать ее. Гении ее устраняют. (Алан.Дж.Перлис) +Когда мы поймем машинные системы баз знаний, все будет, как и прежде, с той лишь разницей, что кончики пальцев будут обожжены. (Алан.Дж.Перлис) +Нельзя перейти от неформального к формальному с помощью формальных средств. (Алан.Дж.Перлис) +Программирование заставило дерево зацвести. (Алан.Дж.Перлис) +Появление эвм в домах не изменит ни один из них, но может возродить салуны. (Алан.Дж.Перлис) +Остерегайтесь бочки меда с ложкой дегтя тьюринга, где все возможно, но все интересное слишком сложно. (Алан.Дж.Перлис) +Трудно выделить смысл из строк, но это единственная "монета" связи, на которую мы можем рассчитывать. (Алан.Дж.Перлис) +Иногда мне кажется, что единственным универсумом в программировании является цикл. (Алан.Дж.Перлис) +Некоторые языки программирования допускают изменения, но сопротивляются прогрессу. (Алан.Дж.Перлис) +Легко сделать что-то переменным. Хитрость в том, чтобы измерять продолжительность постоянства. (Алан.Дж.Перлис) +Афоризмы возвращают глубокое семантической значение из базы данных, которая представляет собой процедуру. (Алан.Дж.Перлис) +Работу программистов следует оценивать не по их изобретательности и логике, а по полноте анализа каждой ситуации. (Алан.Дж.Перлис) +Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот. (Алан.Дж.Перлис) +Синтаксический сахар вызывает рак точек с запятой. (Алан.Дж.Перлис) +Часто средства оправдывают цели: Цели порождают метод, а метод выживает, даже когда разрушаются структуры, бывшие ранее целью. (Алан.Дж.Перлис) +Через пять лет у нас будет один суперязык программирования, только мы не можем установить начало этого пятилетнего периода. (Алан.Дж.Перлис) +Продолжительный контакт с машиной превращает математиков в клерков, и наоборот. (Алан.Дж.Перлис) +Все, что мы делаем в программировании - это частный случай чего-то более общего, и зачастую мы осознаем это чересчур быстро. (Алан.Дж.Перлис) +Софтвер находится в постоянном напряжении. Поскольку он символичен, его можно постоянно совершенствовать, но и произвольно изменять. (Алан.Дж.Перлис) +Афоризмы скорее подобны витаминам, чем белку. (Алан.Дж.Перлис) +Функции задерживают связь, структуры данных стимулируют связь. Мораль: Структурируйте данные как можно позднее в процессе программирования. (Алан.Дж.Перлис) +Единственная конструктивная теория, связывающая неврологию и психологию, возникает из исследований софтвера. (Алан.Дж.Перлис) +Если при объяснении вашей программы слушатель начинает кивать головой, его пора будить. (Алан.Дж.Перлис) +Программирование - это неестественный процесс. (Алан.Дж.Перлис) +Когда мы пишем программы, которые "обучают", мы - обучаем, а они - нет. +В программных системах зачастую "кто рано встает, того удача ждет". (Алан.Дж.Перлис) +Рекурсия - основа программирования, поскольку она сокращает время написания программы. (Алан.Дж.Перлис) +Если бы мы писали программы с детства, то с годами, возможно, научились бы их читать. (Алан.Дж.Перлис) +Перспективность программиста можно оценить, узнав его мнение о жизнеспособности фортрана. (Алан.Дж.Перлис) +Для систем аналогом пластической операции является введение в управляюший граф ребра, которое создает цикл, а не просто еще одну вершину. (Алан.Дж.Перлис) +Эвм напоминает Лона Чени - это машина с тысячью лиц. +Лон Чени написал детектив "человек с тысячью лиц". (Алан.Дж.Перлис) +Редактирование - это выражение того же, но другими словами. (Алан.Дж.Перлис) +Афоризмы пропускют подробности и выделяют главное: Это превосходная документация высокого уровня. (Алан.Дж.Перлис) +Никогда не кончатся объекты программирования, пока у нас под рукой есть хотя бы одна программа. (Алан.Дж.Перлис) +Одиннадцатая заповедь гласит: "Вычисляй" или "не вычисляй" - я уже не помню. (Алан.Дж.Перлис) +У каждой программы (по крайней мере) два назначения: Что она должна делать и чего не должна. (Алан.Дж.Перлис) +Возможно ли, что программное обеспечение не похоже ни на что другое; что оно создано для того, чтобы от него отказались со временем; что все дело в том, чтобы оно всегда оставалось для нас мыльным пузырем? (Алан.Дж.Перлис) +Как сказал бы уилл роджерс: "В природе нет такой вещи, как свободная переменная". (Алан.Дж.Перлис) +Афоризмы - это макросы, поскольку они выполняются в ходе чтения. (Алан.Дж.Перлис) +Если вы можете представить себе общество, где лакеями будут роботы, вы можете представить все, что угодно. (Алан.Дж.Перлис) +Афоризмы параметризуют нимбы святости. (Алан.Дж.Перлис) +Почему распалась римская империя? Как по-латыни автоматизация конторских работ? (Алан.Дж.Перлис) +Не стоит изучать язык, который не меняет вашего представления о программировании. (Алан.Дж.Перлис) +Не путайте: Машины обрабатывают числа, а не символы. Мы измеряем свое понимание (и контроль) степенью арифметизации деятельности. (Алан.Дж.Перлис) +Язык программирования имеет низкий уровень, если в программах приходится уделять внимание несущественному. (Алан.Дж.Перлис) +Хотя китайцы должны были бы обожать арL, они вкладывают деньги в фортран. (Алан.Дж.Перлис) +Адекватная самораскрутка - явное противоречие. (Алан.Дж.Перлис) +Адаптировать старые программы к новым машинам обычно означает заставить новые машины работать по-старому. (Алан.Дж.Перлис) +Мы всегда хотим сказать в своих программах что-то такое, что на всех известных языках можно сказать только плохо. (Алан.Дж.Перлис) +Подумать только! С помощью сверхбольших интегральных схем мы можем упаковать 100 "эниаков" в 1 кв.См. (Алан.Дж.Перлис) +Реальная графика: Для описания картинки необходимо 10к слов. Но едва ли можно описать какое-либо множество из 10к слов с помощью картинок. (Алан.Дж.Перлис) +Года работы над искусственным интеллектом достаточно, чтобы заставить поверить в бога. (Алан.Дж.Перлис) +В конечном счете каждая программа устаревает, как и рококо, а потом и вовсе умирает. (Алан.Дж.Перлис) +Лисп-программисту известна ценность всего, но неизвестна цена чего бы то ни было. (Алан.Дж.Перлис) +Чисто прикладные языки плохо применимы. (Игра слов аррLIсатIVе и аррLIсавLе). (Алан.Дж.Перлис) +Не слабости, а достоинтсва языка определяют направления его изменений. Увы, язык никогда не сможет избавиться от своего эмбрионального мешка. (Алан.Дж.Перлис) +В программировании превращение очевидного в полезное - это точное определение слова "разочарование". (Алан.Дж.Перлис) +Документация подобна страхованию на неопределенный срок: Она удовлетворяет всех, поскольку почти никто из подписавшихся на нее не зависит от ее преимуществ. (Алан.Дж.Перлис) +Ваять можно научить каждого, но тогда пришлось бы учить микеланджело, как не делать этого. То же самое - с великими программистами. (Алан.Дж.Перлис) +Не стоит писать программу без цикла и структурированной переменной. (Алан.Дж.Перлис) +Всякий раз, когда два программиста встречаются для критического анализа своих программ, они оба молчат. (Алан.Дж.Перлис) +Так много хороших идей исчезает бесследно, попав в пучину семантики. (Алан.Дж.Перлис) +Использование программы для доказательства теоремы о четырех красках не изменит математики. Оно просто покажет, что задача, которая оставалась нерешенной в течении столетия, возможно, не так уж важна для математики. (Алан.Дж.Перлис) +Если ваша машина говорит по-английски, ее, вероятно, сделали в японии. (Алан.Дж.Перлис) +Машина не виновата в том, что уравнения максвелла не подходят для проектирования электромотора. (Алан.Дж.Перлис) +В программировании, как и везде, ошибаться - значит рождаться заново. (Алан.Дж.Перлис) +Кибернетический обмен между человеком, машиной и алгоритмом подобен игре в "музыкальные стулья": Неистовый поиск равновесия всегда оставляет одного из трех неловко стоять. (Алан.Дж.Перлис) +В программировании инварианты эфемерны. (Алан.Дж.Перлис) \ No newline at end of file diff --git a/task3/.idea/artifacts/task3_jar.xml b/task3/.idea/artifacts/task3_jar.xml new file mode 100644 index 0000000..ce6f551 --- /dev/null +++ b/task3/.idea/artifacts/task3_jar.xml @@ -0,0 +1,14 @@ + + + $PROJECT_DIR$/out/artifacts/task3_jar + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/compiler.xml b/task3/.idea/compiler.xml new file mode 100644 index 0000000..06c5322 --- /dev/null +++ b/task3/.idea/compiler.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/description.html b/task3/.idea/description.html new file mode 100644 index 0000000..cc10d56 --- /dev/null +++ b/task3/.idea/description.html @@ -0,0 +1,2 @@ +Simple JavaFX 2.0 application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided. + \ No newline at end of file diff --git a/task3/.idea/encodings.xml b/task3/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/task3/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/task3/.idea/gradle.xml b/task3/.idea/gradle.xml new file mode 100644 index 0000000..3e3960b --- /dev/null +++ b/task3/.idea/gradle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/task3/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml b/task3/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml new file mode 100644 index 0000000..f3f3738 --- /dev/null +++ b/task3/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/libraries/Maven__junit_junit_4_10.xml b/task3/.idea/libraries/Maven__junit_junit_4_10.xml new file mode 100644 index 0000000..ed8bf5f --- /dev/null +++ b/task3/.idea/libraries/Maven__junit_junit_4_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml b/task3/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml new file mode 100644 index 0000000..acdf443 --- /dev/null +++ b/task3/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/misc.xml b/task3/.idea/misc.xml new file mode 100644 index 0000000..62f90ed --- /dev/null +++ b/task3/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/modules.xml b/task3/.idea/modules.xml new file mode 100644 index 0000000..4e31a1a --- /dev/null +++ b/task3/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/uiDesigner.xml b/task3/.idea/uiDesigner.xml new file mode 100644 index 0000000..3b00020 --- /dev/null +++ b/task3/.idea/uiDesigner.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task3/.idea/vcs.xml b/task3/.idea/vcs.xml new file mode 100644 index 0000000..def6a6a --- /dev/null +++ b/task3/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/task3/.idea/workspace.xml b/task3/.idea/workspace.xml new file mode 100644 index 0000000..a3b942d --- /dev/null +++ b/task3/.idea/workspace.xml @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1359379246138 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/META-INF/MANIFEST.MF b/task3/META-INF/MANIFEST.MF new file mode 100644 index 0000000..440fa71 --- /dev/null +++ b/task3/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: sample.Main + diff --git a/task3/out/artifacts/task3_jar/task3.jar b/task3/out/artifacts/task3_jar/task3.jar new file mode 100644 index 0000000..32baed3 Binary files /dev/null and b/task3/out/artifacts/task3_jar/task3.jar differ diff --git a/task3/pom.xml b/task3/pom.xml new file mode 100644 index 0000000..cc031d9 --- /dev/null +++ b/task3/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + nniit + task3 + 1.0-SNAPSHOT + + + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + + + + \ No newline at end of file diff --git a/task3/src/main/java/sample/Client.java b/task3/src/main/java/sample/Client.java new file mode 100644 index 0000000..d5d01cc --- /dev/null +++ b/task3/src/main/java/sample/Client.java @@ -0,0 +1,41 @@ +package sample; +import java.io.*; +import java.net.Socket; + +public class Client{ + private final String ip; + private final int port; + private Socket server; + BufferedReader in; + PrintWriter out; + + public Client(String ip, int port) { + this.ip = ip; + this.port = port; + } + + public void start(int id) { + try { + server = new Socket(ip, port); + out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(server.getOutputStream())), true); + out.println(id); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public String getRemind(){ + String remind=""; + try { + in = new BufferedReader(new InputStreamReader(server.getInputStream())); + remind = in.readLine(); + + } catch (IOException e) + { + e.printStackTrace(); + } + return remind; + } + + +} \ No newline at end of file diff --git a/task3/src/main/java/sample/Controller.java b/task3/src/main/java/sample/Controller.java new file mode 100644 index 0000000..baad81d --- /dev/null +++ b/task3/src/main/java/sample/Controller.java @@ -0,0 +1,61 @@ +package sample; + +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Label; +import java.net.URL; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; +import java.util.ResourceBundle; + +public class Controller implements Initializable{ + @FXML + private Label lbTime; + @FXML + private Label lblRemind; + @FXML + private Label lbId; + private Client client; + private int id; + private DateFormat formatter = new SimpleDateFormat("HH:mm:ss"); + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + + lbId.setStyle("-fx-background-color: OLDLACE"); + lbTime.setStyle("-fx-background-color: OLDLACE"); + lblRemind.setStyle("-fx-background-color: WHITE"); + + id = new Random().nextInt(3) + 1; + //id = 1; + lbId.setText("Ваш ID равен " + id); + client = new Client("127.0.0.1", 8000); + client.start(id); + + new Thread(()->{ + while (true){ + Date date = new Date(); + String time = formatter.format(date); + Platform.runLater(() -> lbTime.setText(time)); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + + new Thread(()->{ + while (true){ + String temp = client.getRemind(); + if(!temp.isEmpty()){ + Platform.runLater(() -> lblRemind.setText(temp)); + } + } + }).start(); + } + +} diff --git a/task3/src/main/java/sample/Main.java b/task3/src/main/java/sample/Main.java new file mode 100644 index 0000000..6e4cc69 --- /dev/null +++ b/task3/src/main/java/sample/Main.java @@ -0,0 +1,21 @@ +package sample; + + import javafx.application.Application; + import javafx.fxml.FXMLLoader; + import javafx.scene.Parent; + import javafx.scene.Scene; + import javafx.stage.Stage; + +public class Main extends Application { + @Override + public void start(Stage primaryStage) throws Exception{ + Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml")); + primaryStage.setTitle("task3"); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + } + + public static void main(String[] args) { + launch(args); + } +} \ No newline at end of file diff --git a/task3/src/main/java/sample/Reminders.java b/task3/src/main/java/sample/Reminders.java new file mode 100644 index 0000000..ce7936c --- /dev/null +++ b/task3/src/main/java/sample/Reminders.java @@ -0,0 +1,20 @@ +package sample; + +public class Reminders { + private String time; + private String reminder; + + public Reminders(String time, String message) { + this.time = time; + this.reminder = message; + } + + public String getTime() { + return time; + } + + public String getReminder() { + return reminder; + } + +} \ No newline at end of file diff --git a/task3/src/main/java/sample/Server.java b/task3/src/main/java/sample/Server.java new file mode 100644 index 0000000..edd8d2a --- /dev/null +++ b/task3/src/main/java/sample/Server.java @@ -0,0 +1,111 @@ +package sample; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +class ServerOne extends Thread{ + private Socket socket; + private PrintWriter out; + private BufferedReader in; + private Map> map = new HashMap<>(); + + public ServerOne(Socket s) throws IOException { + socket = s; + in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + out = new PrintWriter(new BufferedWriter( + new OutputStreamWriter(socket.getOutputStream())), true); + start(); + } + + public void run(){ + try { + int id = Integer.parseInt(in.readLine()); + System.out.println("id: " + id); + parseJSON(); + if (map.containsKey(id)) { + List list = map.get(id); + while(true){ + for (Reminders reminder : list) { + Date date = new Date(); + DateFormat formatter = new SimpleDateFormat("HH:mm"); + String now = formatter.format(date); + if (reminder.getTime().equals(now)) { + //System.out.println(reminder.getReminder()); + out.println(reminder.getReminder()); + } + } + } + } else { + out.println("По id = " + id + " не найдено напоминаний."); + } + } catch (IOException | ParseException e) { + e.printStackTrace(); + } + } + + public void parseJSON() throws IOException, ParseException { + File file = getResourceAsFile("reminders.json"); + JSONParser parser = new JSONParser(); + Object obj = parser.parse(new FileReader(file)); + JSONObject jsonObject = (JSONObject) obj; + JSONArray arrayReminders = (JSONArray) jsonObject.get("reminders"); + for(int i = 0 ; i < arrayReminders.size(); i++){ + JSONObject object = (JSONObject) arrayReminders.get(i); + Long temp = (Long)object.get("id"); + int id = temp.intValue(); + String time = (String) object.get("time"); + String reminder = (String) object.get("reminder"); + List value; + if (map.containsKey((Object)id)) { + value = map.get(id); + } else { + value = new ArrayList<>(); + } + value.add(new Reminders(time, reminder)); + map.put(id, value); + } + } + + public File getResourceAsFile(String name) throws IOException { + InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(name); + if (inputStream == null) { return null; } + File fileTmp = File.createTempFile(String.valueOf(inputStream.hashCode()), ".tmp"); + fileTmp.deleteOnExit(); + FileOutputStream outStream = new FileOutputStream(fileTmp); + byte[] buffer = new byte[512]; + int data; + while ((data = inputStream.read(buffer)) != -1) { + outStream.write(buffer, 0, data); + } + outStream.close(); + return fileTmp; + } +} + +public class Server { + private static final int PORT = 8000; + public static void main(String[] args) throws IOException { + ServerSocket serverSocket = new ServerSocket(PORT); + System.out.println("Мультипоточный сервер стартовал"); + try{ + while(true){ + Socket socket = serverSocket.accept(); + System.out.println("Новое соединение установлено"); + System.out.println("Данные клиента: "+ socket.getInetAddress()); + new ServerOne(socket); + } + } + finally { + serverSocket.close(); + } + } +} \ No newline at end of file diff --git a/task3/src/main/resources/reminders.json b/task3/src/main/resources/reminders.json new file mode 100644 index 0000000..3bdb2f2 --- /dev/null +++ b/task3/src/main/resources/reminders.json @@ -0,0 +1,64 @@ +{ + "reminders": [ + { + "id": 1, + "time": "06:00", + "reminder": "Подъём!" + }, + { + "id": 1, + "time": "07:00", + "reminder": "Разгон облаков, установление хорошей погоды..." + }, + { + "id": 1, + "time": "08:00", + "reminder": "Подвиг" + }, + { + "id": 1, + "time": "16:00", + "reminder": "Война с Англией" + }, + { + "id": 2, + "time": "06:00", + "reminder": "Подъём!" + }, + { + "id": 2, + "time": "07:00", + "reminder": "Разгон облаков, установление хорошей погоды..." + }, + { + "id": 2, + "time": "08:00", + "reminder": "Подвиг" + }, + { + "id": 2, + "time": "16:00", + "reminder": "Война с Англией" + }, + { + "id": 3, + "time": "06:00", + "reminder": "Подъём!" + }, + { + "id": 3, + "time": "07:00", + "reminder": "Разгон облаков, установление хорошей погоды..." + }, + { + "id": 3, + "time": "08:00", + "reminder": "Подвиг" + }, + { + "id": 3, + "time": "16:00", + "reminder": "Война с Англией" + } + ] +} \ No newline at end of file diff --git a/task3/src/main/resources/sample.fxml b/task3/src/main/resources/sample.fxml new file mode 100644 index 0000000..6f13f6c --- /dev/null +++ b/task3/src/main/resources/sample.fxml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + diff --git a/task3/target/classes/META-INF/task3.kotlin_module b/task3/target/classes/META-INF/task3.kotlin_module new file mode 100644 index 0000000..a49347a Binary files /dev/null and b/task3/target/classes/META-INF/task3.kotlin_module differ diff --git a/task3/target/classes/reminders.json b/task3/target/classes/reminders.json new file mode 100644 index 0000000..3bdb2f2 --- /dev/null +++ b/task3/target/classes/reminders.json @@ -0,0 +1,64 @@ +{ + "reminders": [ + { + "id": 1, + "time": "06:00", + "reminder": "Подъём!" + }, + { + "id": 1, + "time": "07:00", + "reminder": "Разгон облаков, установление хорошей погоды..." + }, + { + "id": 1, + "time": "08:00", + "reminder": "Подвиг" + }, + { + "id": 1, + "time": "16:00", + "reminder": "Война с Англией" + }, + { + "id": 2, + "time": "06:00", + "reminder": "Подъём!" + }, + { + "id": 2, + "time": "07:00", + "reminder": "Разгон облаков, установление хорошей погоды..." + }, + { + "id": 2, + "time": "08:00", + "reminder": "Подвиг" + }, + { + "id": 2, + "time": "16:00", + "reminder": "Война с Англией" + }, + { + "id": 3, + "time": "06:00", + "reminder": "Подъём!" + }, + { + "id": 3, + "time": "07:00", + "reminder": "Разгон облаков, установление хорошей погоды..." + }, + { + "id": 3, + "time": "08:00", + "reminder": "Подвиг" + }, + { + "id": 3, + "time": "16:00", + "reminder": "Война с Англией" + } + ] +} \ No newline at end of file diff --git a/task3/target/classes/sample.fxml b/task3/target/classes/sample.fxml new file mode 100644 index 0000000..6f13f6c --- /dev/null +++ b/task3/target/classes/sample.fxml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + diff --git a/task3/target/classes/sample/Client.class b/task3/target/classes/sample/Client.class new file mode 100644 index 0000000..6acc3da Binary files /dev/null and b/task3/target/classes/sample/Client.class differ diff --git a/task3/target/classes/sample/Controller.class b/task3/target/classes/sample/Controller.class new file mode 100644 index 0000000..11c5f79 Binary files /dev/null and b/task3/target/classes/sample/Controller.class differ diff --git a/task3/target/classes/sample/Main.class b/task3/target/classes/sample/Main.class new file mode 100644 index 0000000..885be85 Binary files /dev/null and b/task3/target/classes/sample/Main.class differ diff --git a/task3/target/classes/sample/Reminders.class b/task3/target/classes/sample/Reminders.class new file mode 100644 index 0000000..72ae8aa Binary files /dev/null and b/task3/target/classes/sample/Reminders.class differ diff --git a/task3/target/classes/sample/Server.class b/task3/target/classes/sample/Server.class new file mode 100644 index 0000000..4de6a94 Binary files /dev/null and b/task3/target/classes/sample/Server.class differ diff --git a/task3/target/classes/sample/ServerOne.class b/task3/target/classes/sample/ServerOne.class new file mode 100644 index 0000000..533a479 Binary files /dev/null and b/task3/target/classes/sample/ServerOne.class differ diff --git a/task3/task3.iml b/task3/task3.iml new file mode 100644 index 0000000..5b77749 --- /dev/null +++ b/task3/task3.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/artifacts/task4_jar.xml b/task4/.idea/artifacts/task4_jar.xml new file mode 100644 index 0000000..1232cbc --- /dev/null +++ b/task4/.idea/artifacts/task4_jar.xml @@ -0,0 +1,14 @@ + + + $PROJECT_DIR$/out/artifacts/task4_jar + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/compiler.xml b/task4/.idea/compiler.xml new file mode 100644 index 0000000..3f4c4fa --- /dev/null +++ b/task4/.idea/compiler.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/description.html b/task4/.idea/description.html new file mode 100644 index 0000000..cc10d56 --- /dev/null +++ b/task4/.idea/description.html @@ -0,0 +1,2 @@ +Simple JavaFX 2.0 application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided. + \ No newline at end of file diff --git a/task4/.idea/encodings.xml b/task4/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/task4/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/task4/.idea/gradle.xml b/task4/.idea/gradle.xml new file mode 100644 index 0000000..3e3960b --- /dev/null +++ b/task4/.idea/gradle.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/task4/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml b/task4/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml new file mode 100644 index 0000000..f3f3738 --- /dev/null +++ b/task4/.idea/libraries/Maven__com_googlecode_json_simple_json_simple_1_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/libraries/Maven__junit_junit_4_10.xml b/task4/.idea/libraries/Maven__junit_junit_4_10.xml new file mode 100644 index 0000000..ed8bf5f --- /dev/null +++ b/task4/.idea/libraries/Maven__junit_junit_4_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml b/task4/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml new file mode 100644 index 0000000..acdf443 --- /dev/null +++ b/task4/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/misc.xml b/task4/.idea/misc.xml new file mode 100644 index 0000000..62f90ed --- /dev/null +++ b/task4/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/modules.xml b/task4/.idea/modules.xml new file mode 100644 index 0000000..0656842 --- /dev/null +++ b/task4/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/uiDesigner.xml b/task4/.idea/uiDesigner.xml new file mode 100644 index 0000000..3b00020 --- /dev/null +++ b/task4/.idea/uiDesigner.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task4/.idea/vcs.xml b/task4/.idea/vcs.xml new file mode 100644 index 0000000..def6a6a --- /dev/null +++ b/task4/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/task4/.idea/workspace.xml b/task4/.idea/workspace.xml new file mode 100644 index 0000000..74387c5 --- /dev/null +++ b/task4/.idea/workspace.xml @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1359379246138 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task4/META-INF/MANIFEST.MF b/task4/META-INF/MANIFEST.MF new file mode 100644 index 0000000..440fa71 --- /dev/null +++ b/task4/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: sample.Main + diff --git a/task4/out/artifacts/task4_jar/task4.jar b/task4/out/artifacts/task4_jar/task4.jar new file mode 100644 index 0000000..22227cd Binary files /dev/null and b/task4/out/artifacts/task4_jar/task4.jar differ diff --git a/task4/pom.xml b/task4/pom.xml new file mode 100644 index 0000000..ec76983 --- /dev/null +++ b/task4/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + nniit + task4 + 1.0-SNAPSHOT + + + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + + + \ No newline at end of file diff --git a/task4/src/main/java/sample/Controller.java b/task4/src/main/java/sample/Controller.java new file mode 100644 index 0000000..41fe03a --- /dev/null +++ b/task4/src/main/java/sample/Controller.java @@ -0,0 +1,149 @@ +package sample; +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.Pane; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.*; + +public class Controller { + @FXML + Pane pane; + @FXML + Label label11; + @FXML + Label label12; + @FXML + Label label21; + @FXML + Label label22; + @FXML + Label label31; + @FXML + Label label32; + @FXML + Label label41; + @FXML + Label label42; + @FXML + Label label51; + @FXML + Label label52; + @FXML + Label label61; + @FXML + Label label62; + @FXML + Label label71; + @FXML + Label label72; + @FXML + Label label81; + @FXML + Label label82; + @FXML + Label labelHeading; + + @FXML + public void initialize() throws IOException, ParseException { + + URL whatismyip = new URL("http://checkip.amazonaws.com"); + BufferedReader in = new BufferedReader(new InputStreamReader(whatismyip.openStream())); + String ip = in.readLine(); + in.close(); + + URL url = new URL("https://wttr.in/"+ip+"?format=j1"); + InputStream is = url.openStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); + JSONParser parser = new JSONParser(); + JSONObject objectJSON = (JSONObject) parser.parse(br); + + JSONArray arrayArea = (JSONArray) objectJSON.get("nearest_area"); + JSONObject objectArea = (JSONObject) arrayArea.get(0); + JSONArray arrayCountry = (JSONArray) objectArea.get("country"); + JSONArray arrayAreaName = (JSONArray) objectArea.get("areaName"); + JSONObject objectCountry = (JSONObject) arrayCountry.get(0); + JSONObject objectAreaName = (JSONObject) arrayAreaName.get(0); + String country = (String) objectCountry.get("value"); + String area = (String) objectAreaName.get("value"); + + + JSONArray arrayWeather = (JSONArray) objectJSON.get("weather"); + JSONObject objectWeather = (JSONObject) arrayWeather.get(0); + String date = (String) objectWeather.get("date"); + String mintempC = (String) objectWeather.get("mintempC"); + String maxtempC = (String) objectWeather.get("maxtempC"); + String sunHour = (String) objectWeather.get("sunHour"); + JSONArray arrayHourly = (JSONArray) objectWeather.get("hourly"); + + List time = new ArrayList<>(); + List tempC = new ArrayList<>(); + List weatherDesc = new ArrayList<>(); + + for(int i = 0; i < arrayHourly.size(); i++){ + JSONObject object = (JSONObject) arrayHourly.get(i); + time.add((String)object.get("time")); + tempC.add((String)object.get("tempC")); + JSONArray arrayWeatherDesc = (JSONArray) object.get("weatherDesc"); + JSONObject objectWeatherDesc = (JSONObject) arrayWeatherDesc.get(0); + weatherDesc.add((String)objectWeatherDesc.get("value")); + } + + JSONArray arrayAstronomy = (JSONArray) objectWeather.get("astronomy"); + JSONObject objectAstronomy = (JSONObject) arrayAstronomy.get(0); + String sunrise = (String) objectAstronomy.get("sunrise"); + String sunset = (String) objectAstronomy.get("sunset"); + + label11.setText(" 12:00 AM\n t: "+tempC.get(0)); + label12.setText(weatherDesc.get(0)); + label21.setText(" 03:00 AM\n t: "+tempC.get(1)); + label22.setText(weatherDesc.get(1)); + label31.setText(" 06:00 AM\n t: "+tempC.get(2)); + label32.setText(weatherDesc.get(2)); + label41.setText(" 09:00 AM\n t: "+tempC.get(3)); + label42.setText(weatherDesc.get(3)); + label51.setText(" 12:00 PM\n t: "+tempC.get(4)); + label52.setText(weatherDesc.get(4)); + label61.setText(" 03:00 PM\n t: "+tempC.get(5)); + label62.setText(weatherDesc.get(5)); + label71.setText(" 06:00 PM\n t: "+tempC.get(6)); + label72.setText(weatherDesc.get(6)); + label81.setText(" 09:00 PM\n t: "+tempC.get(7)); + label82.setText(weatherDesc.get(7)); + String heading = "Locate "+country+", "+area+"\n"+date+"\n"+"sunrise: "+sunrise+", sunset: "+sunset+", sun hour: "+sunHour+"\n"+"t min: "+mintempC+", t max: "+maxtempC+"\n"; + + //pane.setStyle("-fx-background-color: WHITE"); + labelHeading.setStyle("-fx-background-color: WHITE"); + //label11.setStyle("-fx-background-color: #69d4f226"); + label11.setStyle("-fx-background-color: WHITE"); + label12.setStyle("-fx-background-color: WHITE"); + label21.setStyle("-fx-background-color: WHITE"); + label22.setStyle("-fx-background-color: WHITE"); + label31.setStyle("-fx-background-color: WHITE"); + label32.setStyle("-fx-background-color: WHITE"); + label41.setStyle("-fx-background-color: WHITE"); + label42.setStyle("-fx-background-color: WHITE"); + label51.setStyle("-fx-background-color: WHITE"); + label52.setStyle("-fx-background-color: WHITE"); + label61.setStyle("-fx-background-color: WHITE"); + label62.setStyle("-fx-background-color: WHITE"); + label71.setStyle("-fx-background-color: WHITE"); + label72.setStyle("-fx-background-color: WHITE"); + label81.setStyle("-fx-background-color: WHITE"); + label82.setStyle("-fx-background-color: WHITE"); + + labelHeading.setText(heading); + + } + + +} \ No newline at end of file diff --git a/task4/src/main/java/sample/Main.java b/task4/src/main/java/sample/Main.java new file mode 100644 index 0000000..55a286b --- /dev/null +++ b/task4/src/main/java/sample/Main.java @@ -0,0 +1,23 @@ +package sample; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class Main extends Application { + + @Override + public void start(Stage primaryStage) throws Exception{ + Parent root = FXMLLoader.load(getClass().getResource("/sample.fxml")); + primaryStage.setTitle("Weather forecast"); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + } + + + public static void main(String[] args) { + launch(args); + } +} diff --git a/task4/src/main/resources/sample.fxml b/task4/src/main/resources/sample.fxml new file mode 100644 index 0000000..5eebcbf --- /dev/null +++ b/task4/src/main/resources/sample.fxml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task4/target/classes/sample.fxml b/task4/target/classes/sample.fxml new file mode 100644 index 0000000..5eebcbf --- /dev/null +++ b/task4/target/classes/sample.fxml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/task4/target/classes/sample/Controller.class b/task4/target/classes/sample/Controller.class new file mode 100644 index 0000000..a1bc584 Binary files /dev/null and b/task4/target/classes/sample/Controller.class differ diff --git a/task4/target/classes/sample/Main.class b/task4/target/classes/sample/Main.class new file mode 100644 index 0000000..d96436c Binary files /dev/null and b/task4/target/classes/sample/Main.class differ diff --git a/task4/task4.iml b/task4/task4.iml new file mode 100644 index 0000000..5b77749 --- /dev/null +++ b/task4/task4.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file