Totoro
-
Публикации
1 950 -
Зарегистрирован
-
Посещение
-
Победитель дней
289
Сообщения, опубликованные пользователем Totoro
-
-
43 минуты назад, ECS сказал:И только попробуй, @moderator, сказать что-нибудь насчет рекламы сторонних сервисов, смешно уже
Но реклама же.... Okay...
-
1
-
-
52 минуты назад, Ingr сказал:я не предлагал строить карьеру программистом Делфи. Я говорил что зная Делфи найти работу будет не сложнее чем на большинстве других языков.
Ну просто это актуально только если ты уже знаешь Делфи, и тебе нужно найти работу.
А начинать изучение программирования с Делфи - мне кажется - не самая лучшая идея.
Это как запрыгнуть в списанный тепловоз стоящий на запасных путях. Там может быть комфортно, но далеко ты уже не уедешь.
52 минуты назад, Ingr сказал:ну 13 место на фоне таких языков как Ruby (16), Lua (28), Scala (29), Rust (37) выглядит не так уж и совсем плохо.
Руби - такой же уходящий язык как и Делфи.
Луа - это очень нишевый скриптовый язык, который не все любят, почему-то.
Scala - тоже язык который занял очень маленькую нишу - в основном интерпрайз / биг дата. В этой области 90% занято Java, и Scala удержалась за счет того, что под нее, на пике популярности, было создано несколько очень крутых фреймворков.
ну а
Rust - это новый язык, который только набирает темпы. У него довольно много конкуренции - тот же Go, поддерживаемый со спины корпорацией Google.
Rust пользуется популярностью у программистов, и я думаю будет постепенно подниматься в рейтинге. (В этом году он занял Тор-1 позицию как "самый любимый язык" в опросе StackOverflow.)
Delphi - это язык который держится в топе за счет большого объема кода, который был на нем написан в годы его расцвета.
Но как несложно заметить, позиции он постепенно теряет.
Основной плюс Делфи, который обычно называют - очень быстрая и удобная разработка десктопных приложений - стал относительно неактуален в последние годы, а больше нигде особенно Делфи не применим, так как есть конкуренты, которые делают это лучше и быстрее.
В том же опросе от StackOverflow он попал в топ языков, которых программисты "боятся". Наряду с Visual Basic, Assembler, Perl, Cobol (и, почему-то, C и Lua =)).
Какого черта в топе делает Visual Basic.NET - я вот не понимаю. Наверное черное шаманство Microsoft играет какую-то роль в этом загадочном факте.
-
4
-
-
39 минут назад, Avevad сказал:Можно ли в чистой Lua (ну или той которая используется в OC) сделать так чтобы две функции выполнялись ДЕЙСТВИТЕЛЬНО одновременно?
Нет.
В OpenComputers для этого надо использовать два отдельных компьютера.
В реальном мире эффективнее всего запустить два потока в основной программе (например на Си) и запустить интерпретатор Луа в каждом из этих потоков (хотя не вижу в этом особого смысла).
-
1
-
-
1 час назад, Ingr сказал:при желании найти работу по программированию на Delphi тоже не проблема. Так что в этом плане Паскль не особо уступает другим современным языкам
Не соглашусь с последней фразой.
Паскаль (и Делфи в частности) очень давно и очень сильно уступают современным языкам.
Нового программного обеспечения на них не разрабатывается, либо разрабатывается единицы, и основная масса вакансий - это поддержка какого-нибудь жуткого легаси.
Немного не та ниша, в которой имеет смысл строить карьеру в 2018 году.
Если глянуть на рейтинг TIOBE например, видно что Делфи быстро теряет позиции. Пик популярности приходился на 2001 год, и давно прошел.
В общем, я не вижу ни одной причины выбрать Делфи, а не, скажем, Java / C#.
-
1
-
-
Я в принципе начинал изучать программирование как раз с Turbo C.
Вполне реальный старт.
Нужна конечно некоторая усидчивость, чтобы внимательно вкуривать во все низкоуровневые концепты.
На Луа стартовать тупо проще.
-
Паскаль хорош для "акачемического" изучения. Чисто освоить основные приемы программирования, понятия и конструкции.
Но я бы не стал сейчас уже возиться с Паскалем.
Для первоначального изучения Lua очень хорош. В нем нет ничего лишнего, начать легко. Но в тоже время есть достаточно глубины, чтобы долго было не скучно.
Есть много возможностей для наглядного программирования, с получением осязаемого результата: можно писать под OpenComputers, можно делать игры на Love2D, и так далее.
В США в некоторых школах использовали Python.
С ним будет сложнее разобраться в плане "как установить, как применить", особенно на Windows. Но в плане синтаксиса он хорош. И подходит для изучения.
Можно писать игрушки на Pygame, или Renpy (например).
Плюс это реальный промышленный язык, на который потом можно найти хорошо оплачиваемую работу.
Имеет смысл посмотреть и в сторону Java, (imho). Язык достаточно простой, сразу знакомит с парадигмой ООП. Применений - огромное количество. От модов к тому же Minecraft, до создания веб-приложений и приложений под Android.
Игры тоже можно делать - на LibGDX или сразу на LWJGL (на котором сделан Minecraft, кстати).
Опять таки, это промышленный язык с большим количеством вакансий.
И есть куда расти в нише JVM - можно изучить Scala, например.
Для любителей хардкора можно глянуть на Rust. Мне кажется это лучший вариант, если вас тянет на низкоуровневое программирование. Кривая обучения покруче, чем у большинства других языков, но опять таки - ничего сверхестественного.
Язык активно развивается, уже имеет промышленное применение, и дальше будет больше.
Если чувствуется влечение к вебу - надо курить JS. Он немного нелогичный, и с крайне запутанной инфраструктурой, но базовый уровень изучить несложно.
А применить JS сейчас можно почти везде. И в вебе, и на десктопе, и на мобилках.
Опять таки - промышленный язык, и в будущем легко будет найти работу.
Ну вот кажется и все основные языки, на которые имеет смысл обратить внимание, выбирая, что бы такого изучить.
-
1
-
-
Ну и не стоит забывать про всякие фреймворки типа этого:
На JS можно писать почти где угодно, если есть желание.
-
JavaScript можно использовать везде, где есть виртуальная машина JS. Например в игровом движке Unity.
-
4 часа назад, BrightYC сказал:Он же обновил её, под спойлером скрин есть.
А, точно. Но это я просто на Ленина намекал.
-
1
-
-
И цвета надо не зелено-желтые - а красно-желтые.
-
24.11.2018 в 16:38, DANCHEKk сказал:Люди, хелпуйте. Со всем тут вродь разобрался, но. модельки нахожу, но не VoxelShop, не Goxel, не MagicaVoxel не открывают их, ну то ладно, как то косо криво я конвертировал в .obj и открываю в гокселе, сохраняю в .vox и через конвертор дальше в .3dm. Вот беда. А модели то очень большие все, ничего по этому поводу найти не могу. Как уменьшать разрешение модели ?
Какой исходный формат моделей?
Вообще, мне кажется, оптимальный способ - это отмасштабировать исходную модель, в первоначальном формате (или в формате *.obj).
Для этого нужен обычный 3D редактор - Blender, 3D Max, Cinema 4D, Maya - что-то такое.
А уже потом конвертировать.
-
4 часа назад, Asior сказал:хранить информацию по всем операциям на внешнем сервере (пастебин или вовсе свой сервак поднять).
Тебе ведь все равно придется какой-то доступ к данным организовывать.
А если компьютер с таким доступом скомпрометирован - то злоумышленник точно так же как и ты сможет добраться дл инфы.
Единственный плюс - это возможность отрубить доступ к информации постфактум - уже после обнаружения взлома.
Но если хакер более менее соображает - первое что он сделает это сольёт информацию.
Так что, главной задачей все равно остается защита основного компа.
-
9 минут назад, eu_tomat сказал:Но это, во-первых, после восстановления системы, а во-вторых, мы не знаем, насколько хитёр злоумышленник. Он может отключить этот дамп до того, как добавит себя пользователем. Тут важнее не дать пользователям попасть в shell или иным образом исполнять произвольный код.
Ну OpenOS в принципе можно кастомизировать настолько, что добавить никого и ничего не получится. Я думаю.
Но чтобы отключить следящие скрипты, надо знать что они там есть. Висящий в памяти листенер ты наверное фиг заметишь. И мест куда можно встроить код существует очень много.
-
Можно добавить на компьютер фоновую программу, которая будет регистрировать всех добавляющихся пользователей и дампить лог по сети, или на диск, или на дискету.
-
4 минуты назад, LoliFox сказал:Комната с компутером закрыта так что с роботом не варинт. + дискет не обнаружено и сам системник вообще в другом помещении закрыт совсех сторон булыгой. взаимодействовать могли только в монитором.. в коде самой программы накакова доступа кому либо нету. похоже никогда не узнаем кто это делает( а главное как?)))
Загадочная история.
Но кто это делает легко же узнать. Он свой ник добавляет в users. Или он другого кого-то ставит?
-
А есть возможность подослать робота или дрона, чтобы он положил в этот комп дискету?
А на дискете - вирус с автораном.
-
2 минуты назад, LoliFox сказал:а как этот человек или группа лиц могли получить доступ к компу без клавиатуры? + там небыли вписаны пользователи через useradd так как комп публичный и все им пользуются
А что за компьютер? Там нет возможности удаленного выполнения кода, или какой-нибудь экранной клавиатуры?
У злоумышленника не было возможности воткнуть свою клавиатуру, или вставить дискету, или что-нибудь в этом роде?
-
К сожалению, если кто-то впишет себя и выпишет хозяина - тут будет сложно сделать что-то без помощи админа или без переустановки компьютера.
Список пользователей компьютера хранится модом OpenComputers в оперативной памяти, и сохраняется в сейв мира на сервере, в виде NBT тега.
-
1
-
-
41 минуту назад, cyber01 сказал:теоретически можно просто перебрать все каналы (с учетом вариантов - теоретически) и читать чужой канал?
256 байт - это 256 раз по 256 значений.
Это
.
Я думаю будет достаточно нелегко перебрать их все. Учитывая, подписаться можно на любой совершенно ID (сервер не скажет тебе сколько на этом канале клиентов),
и сообщения могут идти не постоянно, а, скажем раз в две минуты, надо будет не только подписаться на канал, но и подождать немного.
Если тратить на каждый канал по две минуты, это будет
лет на полный перебор.
"
Чтобы придать всему проекту более традиционный вид, можно разбить ID на два поля - 56 байт логин и 200 байт пароль.
Но согласись что это будет по сути то же самое. Каждый канал будет определяться уникальной комбинацией "логин + пароль", то есть теми же 256 байтами.
Я решил не усложнять.
Для публичного канала можно взять например ID "Evil-Reactor".
Для приватного канала - ID "you will never guess this ID".
И будет работать вполне хорошо.
А еще надо учитывать, что ID не имеет ограничения по допустимым символам. Можно взять любые значения байтов, от 0 до 255.
Например так:
local id = string.char(1, 0, 0, 0, 0, 0, 200, 200, 200, 13, 14, 64, 89)
ID из 13 байт. Причем часть вообще "непечатные".
-
3
-
1
-
2
-
-
Помните мост Рида?
Ну так вот. Я тут изучаю Rust на досуге, и пишу мини проекты. Так и получился у меня...
Stem
Это интернет мост для OpenComputers.
Что такое мост
Для тех кто не знает что такое мост, и для чего он нужен:
мост дает примерно такие же возможности как и linked карта. Он позволяет связать между собой компьютеры OpenComputers, где бы они не находились. Только мост реализует это через интернет карту.
Однако по сравнению с linked картой есть один очень крутой плюс. Вы можете подключиться к своему OpenComputers компу не только с другого OpenComputers компа из Майнкрафта, но и из реального мира. Например с телефона. Или с вашего домашнего компьютера.
Отличие от моста Рида
Я немного по другому подошел к архитектуре проекта.
Вместо попарного соединения, Stem реализует систему каналов.
Работает это очень просто. Вы можете:
1) послать сообщение в канал X
2) подписаться на сообщения из канала X
Количество подписчиков не ограничено. Количество клиентов которые могут посылать сообщения в канал тоже не ограничено.
ID канала (по которому происходит подписка и отправка сообщений) служит заодно и паролем к нему.
Поэтому если вы хотите создать публично доступный канал - просто опубликуйте его ID.
А если хотите создать свой, приватный, канал - просто возьмите ID подлиннее и никому его не открывайте.
ID - это последовательность любых байт длиной до 256. Число комбинаций (256 в степени 256) это огромное число, так что уникальных ключей хватит надолго.
Пример
local event = require('event') -- подключаем STEM local stem = require('stem') -- присоединяемся к серверу STEM local server = stem.connect('stem.fomalhaut.me') -- просим сервер присылать нам сообщения с канала 'my-channel-id' server:subscribe('my-channel-id') -- слушаем эвент 'stem_message' в цикле while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...или регистрируем листенер event.listen('stem_message', function(_, channel_id, message) print(channel_id, message) end) -- мы можем посылать сообщение в канал -- (причем не обязательно быть подписанным на этот канал -- достаточно просто его ID) server:send('my-channel-id', 'hello there') -- просим сервер перестать присылать сообщение с канала server:unsubscribe('my-channel-id') -- полностью отключаемся от сервера STEM server:disconnect()
Одновременно можно работать с несколькими серверами Stem и с любым количеством каналов.
Библиотека stem.lua
Библиотечку можно скачать напрямую по этой ссылке: https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua
Либо установить через HPM:
hpm install stem
Подробная документация по командам библиотеки находится здесь.
Сервер STEM
Дефолтный сервер STEM запущен у меня на VPS по адресу: https://stem.fomalhaut.me/
Можете смело его использовать. Единственное, что это тестовый сервер пока. Может пропадать или менять протокол.
Новости постараюсь писать сюда.
Исходный код проекта находится тут: https://gitlab.com/UnicornFreedom/stem
Вы можете скомпилировать его под свою систему и запустить где угодно.
Настраивается сервер файлом stem.toml в корневой папке.
Дефолтный конфиг может выглядеть так:
[tcp] host = '127.0.0.1' port = 5733 [web] host = '127.0.0.1' port = 5780 [general] ping_interval = 60
Чтобы получить полностью свой отдельный и независимый сервер STEM, достаточно будет просто запустить бинарник, получившийся после компиляции.
Не забудьте также положить в папку с бинарником папки static и templates. Они нужны для веб-интерфейса.
Сервер мультипоточный, и очень производительный. Должен тянуть довольно большие объемы трафика. Но точных бенчмарков я не проводил. Если есть желающие - пишите в IRC, скооперируемся и померяем. 😃
Для того чтобы видеть логи сервера, используйте переменную окружения RUST_LOG. Например чтобы включить полное отображение всех логов:
$ RUST_LOG=stem ./stemВеб-интерфейс
Если перейти по ссылке на сервер STEM то вы увидите... веб-интерфейс.
Веб интерфейс показывает счетчик активных каналов и сессий (клиентских подключений).
Кроме того, он дает возможность подключиться к любому каналу STEM и поучаствовать в приеме-передаче сообщений прямо через сайт. Единственное ограничение - как ID канала, так и контент сообщений ограничивается тем, что можно закодировать в UTF-8.
Ну вот и все
Мост в принципе уже полностью работоспособен.
Все идеи, пожелания, отчеты о багах пишите сюда, либо на issue трекер в репозитории.
Если кто-нибудь хочет помочь с написанием клиента STEM на своём любимом языке программирования - обращайтесь ко мне в ЛС, IRC или пишите в этой теме. Написать клиент несложно - для примера можно глянуть на код библиотеки для OpenComputers. Она состоит всего из 150 строк кода.
Enjoy! 😃
-
13
-
2
-
-
8 минут назад, NEO сказал:Спасибо.
Не за что.
-
Кстати, вспомнил еще один способ.
Раз уж программа использует главный redstone component, то можно просто переназначить главный компонент на другой адрес.
Это можно сделать либо программно, либо с использованием программки primary, которая есть в OpenOS.
Использовать так: primary redstone <адрес компонента>.
Адрес можно скопировать анализатором, если я правильно помню.
-
1
-
-
В идеале такое изнутри программы делается. Потому что если программа тупо использует "главный" редстоун компонент - она и будет его использовать. А тебе надо обращаться к компоненту по адресу.
-
11 часов назад, eu_tomat сказал:Только сейчас заметил, что человек спрашивал с двух разных аккаунтов. Что это было?
Палево мультиакка. )
Кстати, учитывая что сервера у нас больше нет, мультиакки все еще под запретом? Или уже пофигу.

Не ясность в простейшей программе (Too long without yielding).
в Разные (отсортировать)
Опубликовано:
Программы на OpenComputers должны иногда переключаться на всякие свои внутренние задачи.
Но пока твоя программа единовластно занимает поток выполнения - это невозможно. Отсюда ошибка "Too long without yielding" - то есть "Слишком долго без передачи управления".
Чтобы позволить системе компьютера заниматься своими делами, необходимо добавить либо event.pull, либо os.sleep.
Причем достаточно слипа на 0 секунд:
Добавь это в любое место цикла - и проблема решится.