1. Java / Говнокод #27044

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    var io = java.io
    var BufferedReader = io.BufferedReader
    var BufferedWriter = io.BufferedWriter
    var InputStreamReader = io.InputStreamReader
    var OutputStreamWriter = io.OutputStreamWriter
    
    var Socket = java.net.Socket
    var socket = new Socket("localhost", 5050)
    var input = new BufferedReader(new InputStreamReader(socket.getInputStream()))
    var output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    
    while(true){
      var data = input.readLine()
      console.log(data)
    }

    Один петух написал мне в три часа ночи с прозьбой помочь с кодом

    Запостил: digitalEugene, 21 Октября 2020

    Комментарии (85) RSS

    • переведи на lua
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • Доброе утро.
          Ответить
          • показать все, что скрытоvanished
            Ответить
          • Добрый день!
            <?php
            
            $socket = socket_create(AF_INET, SOCK_STREAM,  SOL_TCP);
            socket_bind($socket, 'localhost', 5050);
            socket_listen($socket);
            $resource = socket_accept($socket);
            while(true) {
              $line = socket_read($resource, 80, PHP_NORMAL_READ); // останавливаться на \r, \n и на 80 символах
              echo $line, PHP_EOL;
            }
            Ответить
            • >AF_INET, SOCK_STREAM, SOL_TCP
              какая низкоуровневая параша это ваш пых по сравнению с луа

              язык для пердоликов и микрокалькуляторов
              Ответить
        • Как же охуенно.
          Ответить
        • А я за «Python».
          import socketserver
          
          
          class Handler(socketserver.StreamRequestHandler):
              def handle(self):
                  while True:
                      print(self.rfile.readline())
          
          
          with socketserver.TCPServer(('127.0.0.1', 5050), Handler) as server:
              server.handle_request()

          Просто, понятно, удобно. Надо вместо «TCP» использовать «UDP» или «юникс-сокеты»? Просто заменяем «TCPServer» на «UDPServer» или «UnixStreamServer».
          Ответить
          • показать все, что скрытоvanished
            Ответить
            • почему вы все переписываете кот на однопоточный одноразовый сервер для единственного клиента?
              Ответить
              • хватит всем
                Ответить
              • показать все, что скрытоvanished
                Ответить
                • гост мог бы и на boost::asio уже переписать
                  Ответить
                  • Хуй подсказывает вон, что и в луа есть кокорутины.

                    Хотя там всё довольно вручную конечно:
                    * читнул из неблокирующего сокета с таймаутом 0
                    * получил таймаут
                    * елднул управление следующей корутине
                    Ответить
                    • луа это же поебень, на которой аддоны к ворлд оф варкрафт писались
                      разве вов ещё кому-то нужен?
                      Ответить
                      • показать все, что скрытоvanished
                        Ответить
                        • > А вообще молодых людей, жующих риглисперминт, можно встретить где угодно:
                          а ещё есть plsh, ну и что теперь
                          ты хочешь сказать, что луа будет охуительно быстро работать для каких-то кейсов?
                          Ответить
                          • показать все, что скрытоvanished
                            Ответить
                            • Pre-compiling does not imply faster execution because in Lua chunks are always compiled into bytecodes before being executed.
                              Ответить
                              • показать все, что скрытоvanished
                                Ответить
                                • luac нинужен, особенно если ты недоверенный код собрался запускать, что в играх довольно часто.

                                  Эти блобы в отличие от исходника почти никак не верифицируются (раньше с горем-пополам пытались, в последних версиях вообще сдались и забили).

                                  Да и конпеляция скрипта у тебя один раз идёт при загрузке, в критичные места она обычно не попадает.
                                  Ответить
                                  • показать все, что скрытоvanished
                                    Ответить
                                    • > запустится чуть-чуть быстрее

                                      Ну это ж не кресты с шаблонами. Ты картинки дольше будешь грузить, чем эти скрипты запускать.
                                      Ответить
                                      • курочка по зернышку

                                        алсо, зачем не нужно, чтобы школьники туда лазили и чото там правили?
                                        А бинарь они вообще не опознают
                                        Ответить
                                    • > Чобы мне их не кококококок?

                                      Профита почти ноль, только проблем со сборкой и отладкой себе добавляешь.

                                      А если ты делаешь песочницу для модов, которыми люди будут делиться друг с другом, то загрузку блобов ты обязан обоссать и сжечь если ты уважаешь своих клиентов. Благо для этого есть опция у load.

                                      Ибо есть реальные эксплойты, которые на хосте произвольный код исполняют. Ассемблерный, да.
                                      Ответить
                                      • показать все, что скрытоvanished
                                        Ответить
                                        • Ну а зачем тебе этот гемор с запуском luac? Его придётся в систему сборки добавлять, самому дебажить игру неудобно будет, придётся постоянно переключаться между текстовыми и бинарными сборками.

                                          Там реально микросекунды - грамматика проще паскалевской, никаких оптимизаций нету.

                                          Я реально не понимаю, что ты пытаешься оптимизнуть. Ты же не будешь грузить скрипты с диска посреди рисования кадра.
                                          Ответить
                            • Да так и есть.
                              В основном луа используют как прослойку чтобы не пердолится. И очень чосто и поддержку модинга. Например в факторке полостью весь base описан на lua. В Eu4 и в Ck2 Для различных параметров цвета, границ, времени. Например тут: https://docs.cryengine.com/display/SDKDOC4/Script+Usage
                              И вообще нет смысла обсуждать когда этот скриптовый язык победил именно в этой сфере.

                              Ещё Lua использовали в таких играх, как Crysis, King’s of Bounty, Warhammer, Аллоды онлайн, CS, Сталкер, Ведьмак, Sim City, Far Cry, Civilization V и.т.д.

                              Ещё на Lua часто пишутся плагины для nmap, wireshark, nginx или боты для Telegram. А ещё Википедия планирует использовать Lua для встраивания в MediaWiki

                              Lua также используется в обсерваториях, занимающихся исследованиями в области астрофизики и крупных университетах по всему миру (например, в Берлинском Техническом Университете). Также Lua стал чем-то вроде национального языка программирования у себя на родине и используется многими местными компаниями и исследовательскими центрами в самых разных сферах деятельности.

                              спиздил от сюда: https://learn-code.ru/yazyki-programmirovaniya/lua
                              Ответить
                      • В игре где есть "чики-брики и в дамки" юзается.
                        Ответить
                      • Mail.ru нужен. Только сам Mail.ru не нужен.
                        https://habr.com/ru/company/oleg-bunin/blog/310690/
                        https://habr.com/ru/company/mailru/blog/510440/
                        Ответить
                    • Нехочешь пердолится. Ставишь библу на потоки.
                      Хотя я сам из потоков пользовался тока таким: https://love2d.org/wiki/love.thread
                      Ответить
              • https://www.lua.org/pil/9.4.html
                Ответить
              • Сейчас придёт Снаут и перепишет этот код на многопоточный распределённый отказоустойчивый кластер для единственного клиента.

                Увы, отдел маркетинга второго клиента пока не нашёл.
                Ответить
          • А я за руби
            require 'socket'
            
            s = TCPSocket.new 'localhost', 5050
            
            while line = s.gets
              puts line
            end
            
            s.close
            Ответить
            • А я за перл
              use warnings FATAL => 'all';
              use strict;
              use IO::Socket;
              
              my $sock = IO::Socket::INET->new(
                  LocalAddr => '127.0.0.1',
                  LocalPort => 5051,
                  Proto     => 'tcp');
              my $client = $sock->accept();
              while (1) {
                  my $data;
                  $client->recv($data, 1024);
                  printf $data;
              }
              Ответить
          • Конечно же я за Эйфорию.
            include std/socket.e as s
            
            sequence socket = s:create(s:AF_INET, s:SOCK_STREAM, 0)
            s:bind(socket, "0.0.0.0", 5050)
            s:listen(socket, 2)
            sequence client = s:accept(socket)
            puts(1, "Connected\n" & client[2])
            
            while 1 do
               object data = s:receive(client[1])
               if atom(data) then
            		if data = 0 then 
                                puts(1, "Client disconnected\n")
                            else 
                               printf(2, "Error: %d", data)
                            end if 
                            exit
               end if
               puts(1, data)
            end while


            Заметье, как легко и в тоже время профессионально выглядит код. Сразу видно, что это язык для серьезных людей, а не чичи-гага
            Ответить
        • Переписал на nc, проверь.

          nc -l 5050
          Ответить
    • Поэтому ты в пол пятого принёс это сюда?
      Ответить

    Добавить комментарий