diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..bc6093b Binary files /dev/null and b/.DS_Store differ diff --git a/task1/.DS_Store b/task1/.DS_Store new file mode 100644 index 0000000..0758c7e Binary files /dev/null and b/task1/.DS_Store differ diff --git a/task1/.idea/artifacts/task1_jar.xml b/task1/.idea/artifacts/task1_jar.xml new file mode 100644 index 0000000..032dfea --- /dev/null +++ b/task1/.idea/artifacts/task1_jar.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/out/artifacts/task1_jar + + + + + \ No newline at end of file diff --git a/task1/.idea/compiler.xml b/task1/.idea/compiler.xml new file mode 100644 index 0000000..93374a5 --- /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..6af4c51 --- /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..1b53c78 --- /dev/null +++ b/task1/.idea/workspace.xml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1359379246138 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/main/java/ClientServer/Server.java + 35 + + + file://$PROJECT_DIR$/src/main/java/sample/Controller.java + 91 + + + + + \ No newline at end of file diff --git a/task1/out/artifacts/task1_jar/task1.jar b/task1/out/artifacts/task1_jar/task1.jar new file mode 100644 index 0000000..08fbb34 Binary files /dev/null and b/task1/out/artifacts/task1_jar/task1.jar differ diff --git a/task1/pom.xml b/task1/pom.xml new file mode 100644 index 0000000..8b7d3ab --- /dev/null +++ b/task1/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + niit + task1 + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/task1/src/.DS_Store b/task1/src/.DS_Store new file mode 100644 index 0000000..3e7c033 Binary files /dev/null and b/task1/src/.DS_Store differ diff --git a/task1/src/main/.DS_Store b/task1/src/main/.DS_Store new file mode 100644 index 0000000..e891ffe Binary files /dev/null and b/task1/src/main/.DS_Store differ diff --git a/task1/src/main/java/.DS_Store b/task1/src/main/java/.DS_Store new file mode 100644 index 0000000..6f68be9 Binary files /dev/null and b/task1/src/main/java/.DS_Store differ diff --git a/task1/src/main/java/ClientServer/Client.java b/task1/src/main/java/ClientServer/Client.java new file mode 100644 index 0000000..3325ff2 --- /dev/null +++ b/task1/src/main/java/ClientServer/Client.java @@ -0,0 +1,31 @@ +package ClientServer; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.Socket; + +public class Client { + private String host; + private int port; + private Socket server = null; + + public Client(String host, int port) { + this.host = host; + this.port = port; + } + + public void connectClient (){ + try { + server = new Socket(host,port); + } catch (IOException e) { + e.printStackTrace(); + } + } + public String getTime() throws IOException { + BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream())); + String time; + time= in.readLine(); + return time; + } +} diff --git a/task1/src/main/java/ClientServer/Server.java b/task1/src/main/java/ClientServer/Server.java new file mode 100644 index 0000000..7371432 --- /dev/null +++ b/task1/src/main/java/ClientServer/Server.java @@ -0,0 +1,51 @@ +package ClientServer; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Date; + +public class Server { + private int serversocket; + private ServerSocket server = null; + private Socket client = null; + private PrintWriter out; + + public Server(int serversocket) { + this.serversocket = serversocket; + } + + public void createServer () throws IOException, InterruptedException { + try { + server = new ServerSocket(serversocket); + } catch (IOException e) { + System.out.println("Ошибка связывания с портом"+ serversocket); + System.exit(-1); + } + try { + System.out.print("Ждем соединения\n"); + client = server.accept(); + System.out.println("Клиент подключился\n"); + } catch (IOException e) { + System.out.println("Не могу установить соединение\n"); + System.exit(-1); + } + out = new PrintWriter(client.getOutputStream(),true); + while (true) { + out.println(sendTime()); + Thread.sleep(1000); + } + } + + private String sendTime(){ + Date date = new Date(); + return date.toString(); + } + + public void disconnect() throws IOException { + out.close(); + server.close(); + client.close(); + } +} diff --git a/task1/src/main/java/sample/Controller.java b/task1/src/main/java/sample/Controller.java new file mode 100644 index 0000000..b1938c0 --- /dev/null +++ b/task1/src/main/java/sample/Controller.java @@ -0,0 +1,94 @@ +package sample; + +import ClientServer.Client; +import ClientServer.Server; +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.Timer; +import java.util.TimerTask; + +public class Controller implements Initializable { + + @FXML + private Button btConnect; + @FXML + private TextField tfIP; + @FXML + private TextField tfPort; + @FXML + private Label lbTime; + @FXML + private Button btDisConnect; + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + tfIP.setText("127.0.0.1"); + tfPort.setText("1235"); + } + private Client client = null; + private Timer t; + private TimerTask task; + private Timer t1; + private TimerTask task1; + + private Server server = null; + + @FXML + public void connect(){ + new Thread(()->{ + server = new Server(Integer.parseInt(tfPort.getText())); + try { + server.createServer(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }).start(); + t=new Timer(); + task = new TimerTask() { + @Override public void run() { + Platform.runLater(new Runnable() { + @Override + public void run() { + client = new Client (tfIP.getText(),Integer.parseInt(tfPort.getText())); + client.connectClient(); + } + }); + } + }; + t.schedule(task,200); + t1=new Timer(); + task1 = new TimerTask() { + @Override public void run() { + Platform.runLater(new Runnable() { + @Override + public void run() { + try { + lbTime.setText(client.getTime()); + } catch (IOException e) { + e.printStackTrace(); + } + } + }); + } + }; + t1.schedule(task1,300,1000); + } + + @FXML + public void disconnect() throws IOException { + task.cancel(); + task1.cancel(); + server.disconnect(); + lbTime.setText("Disconnect"); + } +} diff --git a/task1/src/main/java/sample/Main.java b/task1/src/main/java/sample/Main.java new file mode 100644 index 0000000..6cd2571 --- /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("Time"); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + } + + + public static void main(String[] args) { + launch(args); + } +} diff --git a/task1/src/main/resources/META-INF/MANIFEST.MF b/task1/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..1f6226f --- /dev/null +++ b/task1/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: sample.Main + diff --git a/task1/src/main/resources/sample.fxml b/task1/src/main/resources/sample.fxml new file mode 100644 index 0000000..c86e9cf --- /dev/null +++ b/task1/src/main/resources/sample.fxml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + diff --git a/task1/target/classes/ClientServer/Client.class b/task1/target/classes/ClientServer/Client.class new file mode 100644 index 0000000..9273654 Binary files /dev/null and b/task1/target/classes/ClientServer/Client.class differ diff --git a/task1/target/classes/ClientServer/Server.class b/task1/target/classes/ClientServer/Server.class new file mode 100644 index 0000000..c3d0fc2 Binary files /dev/null and b/task1/target/classes/ClientServer/Server.class differ diff --git a/task1/target/classes/META-INF/MANIFEST.MF b/task1/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..1f6226f --- /dev/null +++ b/task1/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: sample.Main + diff --git a/task1/target/classes/sample.fxml b/task1/target/classes/sample.fxml new file mode 100644 index 0000000..c86e9cf --- /dev/null +++ b/task1/target/classes/sample.fxml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + diff --git a/task1/target/classes/sample/Controller$1$1.class b/task1/target/classes/sample/Controller$1$1.class new file mode 100644 index 0000000..c13c576 Binary files /dev/null and b/task1/target/classes/sample/Controller$1$1.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..5624d18 Binary files /dev/null and b/task1/target/classes/sample/Controller$1.class differ diff --git a/task1/target/classes/sample/Controller$2$1.class b/task1/target/classes/sample/Controller$2$1.class new file mode 100644 index 0000000..a73aa0d Binary files /dev/null and b/task1/target/classes/sample/Controller$2$1.class differ diff --git a/task1/target/classes/sample/Controller$2.class b/task1/target/classes/sample/Controller$2.class new file mode 100644 index 0000000..6357125 Binary files /dev/null and b/task1/target/classes/sample/Controller$2.class differ diff --git a/task1/target/classes/sample/Controller.class b/task1/target/classes/sample/Controller.class new file mode 100644 index 0000000..af43085 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..3b206b9 Binary files /dev/null and b/task1/target/classes/sample/Main.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/.DS_Store b/task2/.DS_Store new file mode 100644 index 0000000..b1324d6 Binary files /dev/null and b/task2/.DS_Store differ diff --git a/task2/.idea/compiler.xml b/task2/.idea/compiler.xml new file mode 100644 index 0000000..fae43b4 --- /dev/null +++ b/task2/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/misc.xml b/task2/.idea/misc.xml new file mode 100644 index 0000000..d24ea8e --- /dev/null +++ b/task2/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/task2/.idea/workspace.xml b/task2/.idea/workspace.xml new file mode 100644 index 0000000..905c4df --- /dev/null +++ b/task2/.idea/workspace.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1593764704340 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task2/pom.xml b/task2/pom.xml new file mode 100644 index 0000000..ff51cec --- /dev/null +++ b/task2/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + org.example + task2 + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/task2/src/.DS_Store b/task2/src/.DS_Store new file mode 100644 index 0000000..9ed6bbb Binary files /dev/null and b/task2/src/.DS_Store differ diff --git a/task2/src/main/.DS_Store b/task2/src/main/.DS_Store new file mode 100644 index 0000000..a0c8561 Binary files /dev/null and b/task2/src/main/.DS_Store differ diff --git a/task2/src/main/java/Client.java b/task2/src/main/java/Client.java new file mode 100644 index 0000000..c94f3b8 --- /dev/null +++ b/task2/src/main/java/Client.java @@ -0,0 +1,28 @@ +import java.io.*; +import java.net.*; + +public class Client { + public static void main(String[] args) throws IOException { + System.out.println("Клиент стартовал"); + Socket server = null; + + if (args.length==0) { + System.out.println("Использование: java Client hostname"); + System.exit(-1); + } + + System.out.println("Соединяемся с сервером "+args[0]); + + server = new Socket(args[0],1234); + BufferedReader in = new BufferedReader( + new InputStreamReader(server.getInputStream())); + + + String fserver; + + while (true) { + fserver = in.readLine(); + System.out.println(fserver); + } + } +} \ No newline at end of file diff --git a/task2/src/main/java/Server.java b/task2/src/main/java/Server.java new file mode 100644 index 0000000..047ea01 --- /dev/null +++ b/task2/src/main/java/Server.java @@ -0,0 +1,29 @@ +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class Server { + static final int PORT = 1234; + + public static void main(String[] args) throws IOException { + ServerSocket s = new ServerSocket(PORT); + System.out.println("Мультипоточный сервер стартовал"); + try { + while (true) { + Socket socket = s.accept(); + try { + System.out.println("Новое соединение установлено"); + System.out.println("Данные клиента: "+ + socket.getInetAddress()); + new ServerOne(socket); + } + catch (IOException e) { + socket.close(); + } + } + } + finally { + s.close(); + } + } +} \ No newline at end of file diff --git a/task2/src/main/java/ServerOne.java b/task2/src/main/java/ServerOne.java new file mode 100644 index 0000000..745b98e --- /dev/null +++ b/task2/src/main/java/ServerOne.java @@ -0,0 +1,51 @@ +import java.io.*; +import java.net.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Date; +import java.util.List; +import java.util.Random; + +class ServerOne extends Thread { + private Socket socket; + private PrintWriter out; + private List lines=null; + + + public ServerOne(Socket s) throws IOException { + socket = s; + try { + URL resource = getClass().getResource("/wisdom.txt"); + this.lines = Files.readAllLines(Paths.get(resource.toURI())); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); + start(); + } + + public void run() { + try { + while (true) { + Date date = new Date(); + Random ran = new Random(date.getTime()); + int min = 0; + int max = lines.size()-1; + int diff = max - min; + int i = ran.nextInt(diff + 1) + min; + out.println(lines.get(i)); + out.println("\n"); + Thread.sleep(2000); + } + }catch (InterruptedException e) { + e.printStackTrace(); + } finally { + try { + socket.close(); + } + catch (IOException e) { + System.err.println("Сокет не закрыт"); + } + } + } +} \ No newline at end of file diff --git a/task2/src/main/resources/wisdom.txt b/task2/src/main/resources/wisdom.txt new file mode 100644 index 0000000..17b9ab2 --- /dev/null +++ b/task2/src/main/resources/wisdom.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/task2/target/classes/Client.class b/task2/target/classes/Client.class new file mode 100644 index 0000000..ec6aba8 Binary files /dev/null and b/task2/target/classes/Client.class differ diff --git a/task2/target/classes/Server.class b/task2/target/classes/Server.class new file mode 100644 index 0000000..81fabcc Binary files /dev/null and b/task2/target/classes/Server.class differ diff --git a/task2/target/classes/ServerOne.class b/task2/target/classes/ServerOne.class new file mode 100644 index 0000000..6d03c7d Binary files /dev/null and b/task2/target/classes/ServerOne.class differ diff --git a/task2/target/classes/wisdom.txt b/task2/target/classes/wisdom.txt new file mode 100644 index 0000000..17b9ab2 --- /dev/null +++ b/task2/target/classes/wisdom.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/task2/task2.iml b/task2/task2.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/task2/task2.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/task3/.DS_Store b/task3/.DS_Store new file mode 100644 index 0000000..ac418a3 Binary files /dev/null and b/task3/.DS_Store differ diff --git a/task3/.idea/compiler.xml b/task3/.idea/compiler.xml new file mode 100644 index 0000000..28e243d --- /dev/null +++ b/task3/.idea/compiler.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..d24ea8e --- /dev/null +++ b/task3/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/task3/.idea/workspace.xml b/task3/.idea/workspace.xml new file mode 100644 index 0000000..e5ff7f4 --- /dev/null +++ b/task3/.idea/workspace.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1593841832048 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/task3/pom.xml b/task3/pom.xml new file mode 100644 index 0000000..a6435cf --- /dev/null +++ b/task3/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + org.example + task3 + 1.0-SNAPSHOT + + + org.json + json + 20180130 + + + org.decimal4j + decimal4j + 1.0.3 + + + commons-io + commons-io + 2.6 + + + junit + junit + 4.13 + test + + + + \ No newline at end of file diff --git a/task3/src/.DS_Store b/task3/src/.DS_Store new file mode 100644 index 0000000..3e7c033 Binary files /dev/null and b/task3/src/.DS_Store differ diff --git a/task3/src/main/.DS_Store b/task3/src/main/.DS_Store new file mode 100644 index 0000000..e891ffe Binary files /dev/null and b/task3/src/main/.DS_Store differ diff --git a/task3/src/main/java/Client.java b/task3/src/main/java/Client.java new file mode 100644 index 0000000..1669e42 --- /dev/null +++ b/task3/src/main/java/Client.java @@ -0,0 +1,28 @@ +import java.io.*; +import java.net.*; + +public class Client { + public static void main(String[] args) throws IOException { + System.out.println("Клиент стартовал"); + Socket server = null; + + if (args.length==0) { + System.out.println("Использование: java Client hostname"); + System.exit(-1); + } + + System.out.println("Соединяемся с сервером "+args[0]); + + server = new Socket(args[0],1235); + BufferedReader in = new BufferedReader( + new InputStreamReader(server.getInputStream())); + + + String fserver; + + while (true) { + fserver = in.readLine(); + System.out.println(fserver); + } + } +} \ No newline at end of file diff --git a/task3/src/main/java/Server.java b/task3/src/main/java/Server.java new file mode 100644 index 0000000..6d002ab --- /dev/null +++ b/task3/src/main/java/Server.java @@ -0,0 +1,68 @@ +import com.sun.tools.javac.Main; +import org.apache.commons.io.IOUtils; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.*; + +public class Server { + static final int PORT = 1235; + static Map Client = new HashMap<>(); + + + public static void main(String[] args) throws IOException { + ServerSocket s = new ServerSocket(PORT); + System.out.println("Мультипоточный сервер стартовал"); + + + new Thread(()->{ + while (true){ + try { + InputStream resource = Main.class.getClassLoader().getResourceAsStream("massage.json"); + String content = IOUtils.toString(resource, StandardCharsets.UTF_8); + JSONArray clients = new JSONArray(content); + for (int j = 0; j < clients.length(); j++) { + JSONObject client = clients.getJSONObject(j); + if (!Client.containsKey(client.getInt("id"))) + break; + Socket sok = Client.get(client.getInt("id")); + PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sok.getOutputStream())), true); + JSONArray massages = client.getJSONArray("notes"); + for (int k = 0; k < massages.length(); k++) { + JSONObject massage = massages.getJSONObject(k); + String time = new SimpleDateFormat("HH:mm").format(Calendar.getInstance().getTime()); + if (massage.getString("time").equals(time)){ + out.println(massage.getString("note")); + } + try { + Thread.sleep(60000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + }).start(); + + int i = 1; + try { + while (true) { + Socket socket = s.accept(); + Client.put(i++,socket); + System.out.println("Новое соединение установлено"); + System.out.println("Данные клиента: "+ socket.getInetAddress()); + } + } + finally { + s.close(); + } + } +} \ No newline at end of file diff --git a/task3/src/main/resources/massage.json b/task3/src/main/resources/massage.json new file mode 100644 index 0000000..923cf4c --- /dev/null +++ b/task3/src/main/resources/massage.json @@ -0,0 +1,36 @@ +[ + { + "id": 1, + "notes": [ + { + "time": "11:29", + "note": "Hello" + }, + { + "time": "11:30", + "note": "Hello" + }, + { + "time": "11:32", + "note": "Hello" + } + ] + }, + { + "id": 2, + "notes": [ + { + "time": "11:30", + "note": "Hello2" + }, + { + "time": "11:31", + "note": "Hello2" + }, + { + "time": "11:33", + "note": "Hello2" + } + ] + } +] \ No newline at end of file diff --git a/task3/target/classes/Client.class b/task3/target/classes/Client.class new file mode 100644 index 0000000..e8714d1 Binary files /dev/null and b/task3/target/classes/Client.class differ 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/Server.class b/task3/target/classes/Server.class new file mode 100644 index 0000000..628ede8 Binary files /dev/null and b/task3/target/classes/Server.class differ diff --git a/task3/target/classes/massage.json b/task3/target/classes/massage.json new file mode 100644 index 0000000..923cf4c --- /dev/null +++ b/task3/target/classes/massage.json @@ -0,0 +1,36 @@ +[ + { + "id": 1, + "notes": [ + { + "time": "11:29", + "note": "Hello" + }, + { + "time": "11:30", + "note": "Hello" + }, + { + "time": "11:32", + "note": "Hello" + } + ] + }, + { + "id": 2, + "notes": [ + { + "time": "11:30", + "note": "Hello2" + }, + { + "time": "11:31", + "note": "Hello2" + }, + { + "time": "11:33", + "note": "Hello2" + } + ] + } +] \ No newline at end of file diff --git a/task3/task3.iml b/task3/task3.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/task3/task3.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/task4/.DS_Store b/task4/.DS_Store new file mode 100644 index 0000000..a11b2e8 Binary files /dev/null and b/task4/.DS_Store differ diff --git a/task4/.idea/compiler.xml b/task4/.idea/compiler.xml new file mode 100644 index 0000000..73f5ede --- /dev/null +++ b/task4/.idea/compiler.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..d24ea8e --- /dev/null +++ b/task4/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/task4/.idea/workspace.xml b/task4/.idea/workspace.xml new file mode 100644 index 0000000..89b4904 --- /dev/null +++ b/task4/.idea/workspace.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1593772003334 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + file://$PROJECT_DIR$/src/main/java/Client.java + 26 + + + + + \ No newline at end of file diff --git a/task4/pom.xml b/task4/pom.xml new file mode 100644 index 0000000..f1127d7 --- /dev/null +++ b/task4/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + org.example + task4 + 1.0-SNAPSHOT + + + + org.jsoup + jsoup + 1.13.1 + + + + \ No newline at end of file diff --git a/task4/src/.DS_Store b/task4/src/.DS_Store new file mode 100644 index 0000000..3e7c033 Binary files /dev/null and b/task4/src/.DS_Store differ diff --git a/task4/src/main/.DS_Store b/task4/src/main/.DS_Store new file mode 100644 index 0000000..e891ffe Binary files /dev/null and b/task4/src/main/.DS_Store differ diff --git a/task4/src/main/java/Client.java b/task4/src/main/java/Client.java new file mode 100644 index 0000000..4a25013 --- /dev/null +++ b/task4/src/main/java/Client.java @@ -0,0 +1,43 @@ +import java.io.*; +import java.net.*; + +public class Client { + public static void main(String[] args) throws IOException { + System.out.println("Клиент стартовал"); + Socket server = null; + + if (args.length==0) { + System.out.println("Использование: java Client hostname"); + System.exit(-1); + } + + System.out.println("Соединяемся с сервером "+args[0]); + + server = new Socket(args[0],1235); + BufferedReader in = new BufferedReader( + new InputStreamReader(server.getInputStream())); + PrintWriter out = + new PrintWriter(server.getOutputStream()); + BufferedReader inu = + new BufferedReader(new InputStreamReader(System.in)); + + String fserver; + + while (true) { + String fuser = inu.readLine(); + out.println(fuser); + out.flush(); + while ((fserver = in.readLine())!= null) + System.out.println(fserver); + if (fuser.equalsIgnoreCase("close")) + break; + if (fuser.equalsIgnoreCase("exit")) + break; + } +/* + out.close(); + in.close(); + inu.close(); + server.close();*/ + } +} \ No newline at end of file diff --git a/task4/src/main/java/Server.java b/task4/src/main/java/Server.java new file mode 100644 index 0000000..401501b --- /dev/null +++ b/task4/src/main/java/Server.java @@ -0,0 +1,29 @@ +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class Server { + static final int PORT = 1235; + + public static void main(String[] args) throws IOException { + ServerSocket s = new ServerSocket(PORT); + System.out.println("Мультипоточный сервер стартовал"); + try { + while (true) { + Socket socket = s.accept(); + try { + System.out.println("Новое соединение установлено"); + System.out.println("Данные клиента: "+ + socket.getInetAddress()); + new ServerOne(socket); + } + catch (IOException e) { + socket.close(); + } + } + } + finally { + s.close(); + } + } +} \ No newline at end of file diff --git a/task4/src/main/java/ServerOne.java b/task4/src/main/java/ServerOne.java new file mode 100644 index 0000000..80388be --- /dev/null +++ b/task4/src/main/java/ServerOne.java @@ -0,0 +1,67 @@ +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.io.*; +import java.net.*; + + +class ServerOne extends Thread { + private Socket socket; + private BufferedReader in; + private PrintWriter out; + private Elements Valuet; + private Document doc; + + + // Информация с сайта центрального банка + private void Getinformation() { + try { + doc = Jsoup.connect("https://www.cbr.ru/currency_base/daily/").get(); + Elements table = doc.getElementsByTag("tbody"); + Element ourtable = table.get(0); + Valuet = ourtable.children(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + 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 { + while (true) { + String str = in.readLine(); + if (str.equals("END")) + break; + if (str.equalsIgnoreCase("valuet")){ + Getinformation(); + for (Element el: Valuet){ + out.println(el.text()); + out.println("\n"); + } + } + System.out.println("Получено: " + str); + out.println(str); + } + System.out.println("Соединение закрыто"); + } + catch (IOException e) { + System.err.println("Ошибка чтения/записи"); + } + finally { + try { + socket.close(); + } + catch (IOException e) { + System.err.println("Сокет не закрыт"); + } + } + } +} \ No newline at end of file diff --git a/task4/target/classes/Client.class b/task4/target/classes/Client.class new file mode 100644 index 0000000..25f2a94 Binary files /dev/null and b/task4/target/classes/Client.class differ diff --git a/task4/target/classes/META-INF/task4.kotlin_module b/task4/target/classes/META-INF/task4.kotlin_module new file mode 100644 index 0000000..a49347a Binary files /dev/null and b/task4/target/classes/META-INF/task4.kotlin_module differ diff --git a/task4/target/classes/Server.class b/task4/target/classes/Server.class new file mode 100644 index 0000000..ceb263b Binary files /dev/null and b/task4/target/classes/Server.class differ diff --git a/task4/target/classes/ServerOne.class b/task4/target/classes/ServerOne.class new file mode 100644 index 0000000..d5cd2e6 Binary files /dev/null and b/task4/target/classes/ServerOne.class differ diff --git a/task4/task4.iml b/task4/task4.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/task4/task4.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file