Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
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)
}
Один петух написал мне в три часа ночи с прозьбой помочь с кодом
local socket = require("socket")
local server = socket.bind("*", 5050)
local client = server:accept()
while true do
local line = client:receive()
print(line)
end
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».
> А вообще молодых людей, жующих риглисперминт, можно встретить где угодно:
а ещё есть plsh, ну и что теперь
ты хочешь сказать, что луа будет охуительно быстро работать для каких-то кейсов?
мы как-то сравнивали скриптушню на тупых задачах типа вывода хеллоу ворлд, и lua (судя по time) всех порвал
Ну оно и понятно: lua это тоненькая прослоечка совершенно, которая почти ничего сама не умеет, зато имеет приятный синтаксис и очень легко интегрируется с сями
Профита почти ноль, только проблем со сборкой и отладкой себе добавляешь.
А если ты делаешь песочницу для модов, которыми люди будут делиться друг с другом, то загрузку блобов ты обязан обоссать и сжечь если ты уважаешь своих клиентов. Благо для этого есть опция у load.
Ибо есть реальные эксплойты, которые на хосте произвольный код исполняют. Ассемблерный, да.
Ну а зачем тебе этот гемор с запуском 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 стал чем-то вроде национального языка программирования у себя на родине и используется многими местными компаниями и исследовательскими центрами в самых разных сферах деятельности.
Вообще модель акторов это хорошо и правильно
Ведь ООП же изначально именно про это: есть объекты и есть месседжи между ними
А что ООП превратили в питушню, в том виновата симула и ее детки (кресты, жаба, сисярп)
куот:
Симула традиционно не считается объектно-ориентированным языком в каноническом смысле этого слова, в частности, создатель языка Smalltalk Алан Кэй имел в виду под этим термином семантику акторов, впервые реализованную в языке Плэнер Карла Хьюитта, а не расширение алголоподобных языков «объектной» нотацией
На мировом рынке максимум можно будет продать штук пять компьютеров. Допустим, из четырёх слепили отказоустойчивый кластер. Тогда на роль клиента остаётся единственный компьютер.
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
Заметье, как легко и в тоже время профессионально выглядит код. Сразу видно, что это язык для серьезных людей, а не чичи-гага
так вообще много чего раньше работало: почта, апаче, веб морда к самбе (сват или как-то так) а сейчас никто так не работает кроме ненужностей типа сервера time
3oJIoTou_xyu # 0
guest # 0 ⇈
насколько всё таки код короче и илегантнее на луа
Perevedi_na_PHP # 0 ⇈
guest # 0 ⇈
Perevedi_na_PHP # 0 ⇈
9kymckuu_nemyx # 0 ⇈
MAKAKA # 0 ⇈
какая низкоуровневая параша это ваш пых по сравнению с луа
язык для пердоликов и микрокалькуляторов
3oJIoTou_xyu # 0 ⇈
gost # 0 ⇈
Просто, понятно, удобно. Надо вместо «TCP» использовать «UDP» или «юникс-сокеты»? Просто заменяем «TCPServer» на «UDPServer» или «UnixStreamServer».
guest # 0 ⇈
В луа вон всё красиво и стройно, и udp тамтоже есть
defecate-plusplus # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Хотя гост мог бы и на asyncio переписать
defecate-plusplus # 0 ⇈
MAPTbIwKA # 0 ⇈
Хотя там всё довольно вручную конечно:
* читнул из неблокирующего сокета с таймаутом 0
* получил таймаут
* елднул управление следующей корутине
defecate-plusplus # 0 ⇈
разве вов ещё кому-то нужен?
guest # 0 ⇈
А значит, язык актуален и нужен.
На самом деле много чего можно писать. Хуй вон игрушки на https://love2d.org/ пишет.
А вообще молодых людей, жующих риглисперминт, можно встретить где угодно:
https://pgconf.ru/media/2016/02/19/sergeev_05_02_2016.pdf
Зацени простоту интгерации с сями, кстати. Серьезно. Там есть пример.
defecate-plusplus # 0 ⇈
а ещё есть plsh, ну и что теперь
ты хочешь сказать, что луа будет охуительно быстро работать для каких-то кейсов?
guest # 0 ⇈
Ну оно и понятно: lua это тоненькая прослоечка совершенно, которая почти ничего сама не умеет, зато имеет приятный синтаксис и очень легко интегрируется с сями
defecate-plusplus # 0 ⇈
guest # 0 ⇈
* компилируется вбайт код
* запускает его
* иногда джитит (в случае JS)
Питон умеет результаты компиляции в байткод сохранить в .pyc, луа вон умеет luac.
Но с luac все равно лучше, так как ты не тратишь время на компиляцию в байткод
bormand # 0 ⇈
Эти блобы в отличие от исходника почти никак не верифицируются (раньше с горем-пополам пытались, в последних версиях вообще сдались и забили).
Да и конпеляция скрипта у тебя один раз идёт при загрузке, в критичные места она обычно не попадает.
guest # 0 ⇈
Байткод запустится чуть-чуть быстрее, и реверснуть его будет чуть-чуть сложнее
Допустим, я гейдевка и бандлю с игрой пару скриптов
Чобы мне их не кококококок?
bormand # 0 ⇈
Ну это ж не кресты с шаблонами. Ты картинки дольше будешь грузить, чем эти скрипты запускать.
MAPTbIwKA # 0 ⇈
алсо, зачем не нужно, чтобы школьники туда лазили и чото там правили?
А бинарь они вообще не опознают
bormand # 0 ⇈
Профита почти ноль, только проблем со сборкой и отладкой себе добавляешь.
А если ты делаешь песочницу для модов, которыми люди будут делиться друг с другом, то загрузку блобов ты обязан обоссать и сжечь если ты уважаешь своих клиентов. Благо для этого есть опция у load.
Ибо есть реальные эксплойты, которые на хосте произвольный код исполняют. Ассемблерный, да.
guest # 0 ⇈
bormand # 0 ⇈
Там реально микросекунды - грамматика проще паскалевской, никаких оптимизаций нету.
Я реально не понимаю, что ты пытаешься оптимизнуть. Ты же не будешь грузить скрипты с диска посреди рисования кадра.
guest # 0 ⇈
bormand # 0 ⇈
>> Ты же не будешь грузить скрипты с диска посреди рисования кадра
А они грузят.
3oJIoTou_xyu # 0 ⇈
В основном луа используют как прослойку чтобы не пердолится. И очень чосто и поддержку модинга. Например в факторке полостью весь 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
3oJIoTou_xyu # 0 ⇈
3oJIoTou_xyu # 0 ⇈
https://habr.com/ru/company/oleg-bunin/blog/310690/
https://habr.com/ru/company/mailru/blog/510440/
3oJIoTou_xyu # 0 ⇈
Хотя я сам из потоков пользовался тока таким: https://love2d.org/wiki/love.thread
3oJIoTou_xyu # 0 ⇈
bormand # 0 ⇈
Увы, отдел маркетинга второго клиента пока не нашёл.
guest # 0 ⇈
bormand # 0 ⇈
Особенно если с какой-нибудь джавой сравнить.
guest # 0 ⇈
Вообще модель акторов это хорошо и правильно
Ведь ООП же изначально именно про это: есть объекты и есть месседжи между ними
А что ООП превратили в питушню, в том виновата симула и ее детки (кресты, жаба, сисярп)
куот:
Симула традиционно не считается объектно-ориентированным языком в каноническом смысле этого слова, в частности, создатель языка Smalltalk Алан Кэй имел в виду под этим термином семантику акторов, впервые реализованную в языке Плэнер Карла Хьюитта, а не расширение алголоподобных языков «объектной» нотацией
Пидары испоритли хорошую идею!
я за смаллток, и за руби
CAMypau # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
этого дочтаточно?
guest # 0 ⇈
в гомоиконах нет разницы между данными и кодом, см xslt, tcl
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
bootcamp_dropout # 0 ⇈
guest # 0 ⇈
код представляется не как строка в JS.
А в XSLT и данные и код это XML.
А в TCL код выглядит так
тут "puts 1" это просто строка
bootcamp_dropout # 0 ⇈
перевел пример
если что я не дурака валяю, реально пытался понять в чем разница
bootcamp_dropout # 0 ⇈
Desktop # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
– А у нас не тормозит )))
guest # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
Я не особо глубоко его ковырял, если честно.
Но весьма уважаемый мною руби это наследник smalltalk, lisp и perl
Desktop # 0 ⇈
guest # 0 ⇈
руби очень функциональный, он куда более функционален, чем пайтон, и был таким 20 лет назад, когда мейнстримое говно лямбд не умело
Desktop # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
Мне всё равно)))
Desktop # 0 ⇈
CAMypau # 0 ⇈
MAKAKA # 0 ⇈
MAKAKA # 0 ⇈
MAPTbIwKA # 0 ⇈
Заметье, как легко и в тоже время профессионально выглядит код. Сразу видно, что это язык для серьезных людей, а не чичи-гага
bormand # 0 ⇈
Патрик-матчинг не завезли?
guest # 0 ⇈
Единственный способ проверить тип -- вот так.
Фуенкция, как ты верно уже смекнул, возвращает sequence -- последовательность байт -- в случае успеха, или атом -- код ошибки.
bormand # 0 ⇈
nc -l 5050
defecate-plusplus # 0 ⇈
Desktop # 0 ⇈
Семён Семёныч!
guest # 0 ⇈
telnet localhost 5050
bormand # 0 ⇈
Хм... у телнета сервак что ли инициирует хендшейк? Я думал клиент.
guest # 0 ⇈
Кстати, с помощью inetd я могу написать многопользовательский сервер, а с помощью tcpwrappers безопасный. А с помощью sun rpc.. ну ладно, этооффтоп
Я не понял про хендшейк.
Я думал, там так.
telnet: syn
server: ack
telnet: syn-ack
и пошло-поехало
bormand # 0 ⇈
guest # 0 ⇈
bormand # 0 ⇈
Я так делал простенький REST на рагулярках для сервака, где лень было ставить что-то нормальное.
guest # 0 ⇈
IIIAHXAuCKuu_nemyx # 0