Лидеры
Популярный контент
Показан контент с высокой репутацией 30.03.2019 во всех областях
-
1 баллАдминистрация благодарит всех форумчан, кто проголосовал и принял участие в обсуждении. Темный вариант морды сайта закину в воскресенье. Темная тема и верстка тютелька в тютелька будет, только темной, светлая типа аппл, темная типа самсунг. На этом тема себя исчерпала. Рисунки и идеи для сайта и дальнейшего оформления контента, а именно доп. страниц сайта присылайте в ЛС(добавлю в конфу: Alex, Doob) Статические страницы нужно полностью переделать и оформить более современно как-то.
-
1 балл
-
1 баллПо этой теме уже существует отлаженный софт, успешно используемый многими игроками. Однако на днях я заметил забавную особенность местных видеокарт, позволяющую выставлять разрешение большее, нежели получаемое через gpu.maxResolution(). К примеру, если maxResolution для видеокарты третьего уровня вернет числа 160 и 50, то никто не мешает установить разрешение, скажем, в 20x158 пикселей. При этом при проверке валидности устанавливаемого разрешения соблюдается два правила: Результирующее разрешение по числу пикселей не должно превышать результат умножения чисел, возвращаемых maxResolution. То есть для T3 GPU не более 160 * 50 = 8000. Каждый параметр разрешения, будь то ширина или высота, не должен численно превышать значение возвращаемой ширины. То есть для T3 GPU не более 160. Не знаю, баг это или фича, однако подобное грех не использовать в своих целях. К примеру, старая версия программы при вертикально-удлиненном расположении мониторов позволяла выставить разрешение лишь в 30х50 (1500 пикселей в итоге), заполняя тем самым "черные полосы". В то же время обновленная софтина, учитывающая описанные выше особенности, выдает 69x114 (7866 пикселей), максимально приближаясь к предельной отметке в 8000: Согласитесь, лишние пиксели на дороге не валяются, и, думаю, кому-то будет интересно узнать про реализацию подобного софта. Прежде всего нам требуется определить точную пропорцию мультиблочного монитора: то, как относится его ширина к высоте. Взглянем на текстуру блока: она явно состоит из мелких "квадратиков" в количестве 16 штук, причем лицевая часть монитора имеет рамку толщиной в 2 "квадратика" с каждой стороны: Эти "квадратики" мы и будем использовать для расчета пропорции, так как они позволяют идеально точно получить размеры отображающей части монитора в игровом мире. А размеры "в квадратиках" можно посчитать по формуле: число_блоков_монитора * 16 - 4 Следовательно, пропорция монитора будет считается следующим образом: local gpu = component.gpu local screen = component.proxy(gpu.getScreen()) local blockCountByWidth, blockCountByHeight = component.screen.getAspectRatio() local proportion = (blockCountByWidth * 16 - 4) / (blockCountByHeight * 16 - 4) Также не забываем, что высота каждого псевдографического пикселя при отображении в 2 раза больше его ширины, поэтому формула пропорции слегка меняется. Заодно произведем некоторые сокращения, чтобы избавиться от лишних математических операций. Все три варианта эквивалентны: local proportion = 2 * (blockCountByWidth * 16 - 4) / (blockCountByHeight * 16 - 4) local proportion = (blockCountByWidth * 16 - 4) / (blockCountByHeight * 8 - 2) local proportion = (blockCountByWidth * 2 - 0.5) / (blockCountByHeight - 0.25) После вычисления пропорции монитора можно приступить к написанию программной логики. Для начала получим максимальное разрешение видеокарты: local maxWidth, maxHeight = gpu.maxResolution() Обладая этими данными, а также взглянув на условия, описанные в начале поста, мы можем составить систему неравенств для получения итогового идеального разрешения: Помним также, что ширину мы вполне можем выразить через высоту и пропорцию монитора: width = proportion * height Подставим этот вариант в систему: Оставим высоту в левой части неравенств: Подставляем имеющиеся переменные в каждое неравенство, рисуем числовую прямую и выбираем высоту, удовлетворяющую условиям неравенства для конкретного случая. Разумеется, в программировании никаких числовых прямых нет, зато есть любимые math.min() и math.max(): local height = math.min( maxWidth / proportion, maxWidth, math.sqrt(maxWidth * maxHeight / proportion) ) -- Выражаем ширину через пропорцию local width = height * proportion Все. Разумеется, полученные значения ширины и высоты нужно округлить в меньшую сторону, дабы не кормить видеокарту дробями. Заодно добавим поддержку масштабирования, чтобы выставлять половинное или, скажем, четвертичное от идеального разрешение. Сократив код, избавившись от лишних переменных, мы получаем следующее: local component = require("component") -- Получаем масштаб в качестве первого аргумента скрипта и корректируем его значение local scale = tonumber(select(1, ...) or 1) if not scale or scale > 1 then scale = 1 elseif scale < 0.1 then scale = 0.1 end local gpu = component.gpu local blockCountByWidth, blockCountByHeight = component.proxy(gpu.getScreen()).getAspectRatio() local maxWidth, maxHeight = gpu.maxResolution() local proportion = (blockCountByWidth * 2 - 0.5) / (blockCountByHeight - 0.25) local height = scale * math.min( maxWidth / proportion, maxWidth, math.sqrt(maxWidth * maxHeight / proportion) ) -- Выставляем полученное разрешение gpu.setResolution(math.floor(height * proportion), math.floor(height)) Надеюсь, это микро-знание кому-то было полезно. Лично я очень доволен, что могу наконец запилить графонистый интерфейс для контроля реакторов на вертикальных мониках без осваивания профессии "глиномес", да и соответствующая либа для автопобора разрешения в оське пригодится.
-
1 балл--код 94 байта: C=component::R::C.proxy(C.list('od')()).open(7)E={computer.pullSignal()}load(E[9]or'')()goto R Позволяет удаленно выполнять программы на любых устройствах в которые вставлен EEPROM с этим кодом Здесь: вся тема Здесь: подробный разбор кода с комментариями P.s. Писал давно, возможно требуется модификация. Оставляю в качестве примера.
-
1 баллКоманда для установки: pastebin run z7S75BBP Чтобы запустить программу после того, как инсталлер загрузит все необходимые компоненты, используйте /MineCode/MineCode.lua или /MineCode/MineCode.lua open <путь к файлу> О программе: Честно говоря, первый раз увидев дефолтный редактор опенкомпов, у меня задергался левый глаз. Поэтому, недолго думая, мы с товарищами решили написать полноценную среду разработки, заточенную под удобство использования и максимальное быстродействие. Итак, первое и самое главное на мой взгляд - это подсветка Lua-синтаксиса. Теперь кодер может хотя бы визуально отличать одну часть кода от другой без напряжения зрения. Все цвета являются настраиваемыми, их можно изменять под локальный "вкус и цвет" пользователя. Имеется возможность отключения подсветки при помощи кнопки "◌" если вы играете на низкопроизводительном сервере. Второе в моем субъективном списке "полезности" - это запуск приложений в реальном времени, не отрываясь от процесса их написания. Просто нажимаете на кнопку "▷" и получаете результат: Третья полезность среды разработки - это автоматическое дополнение вводимой информации по аналогии с технологией IntelliSense. Кроме того, все вводимые скобки и кавычки будут также автоматически дополняться их "закрывающими" эквивалентами, с удалением это также работает. Для экономии памяти и увеличения производительности обе фичи можно отключить: При возникновении любой ошибки в вашем приложении MineCode IDE автоматически вернет вас к разработке, выдав подробный стек ошибки и подсветив ошибочную строку: Четвертая наиболее полезная функция - это отладчик. Он позволяет вам выставлять так называемые "брейкпоинты" путем нажатия на кнопку "*" и узнавать, какое значение принимает та или иная переменная в исполняемом скрипте. После каждого "брейкпоинта" выполнение программы может быть продолжено или приостановлено: Пятая фича программы - это возможность полноценного выделения и копипастинга, которого так не хватает в стандартном редакторе OpenOS: Выделенные участки кода можно комментировать, табулировать и детабулировать - все как во "взрослых" редакторах кода. Чтобы выделить слово, достаточно кликнуть по нему дважды. Также имеется удобный инструмент для работы с вводимым цветом в шестнадцатеричном формате. Выделяете его - выбираете соответствующую опцию контекстного меню и получаете результат: Разумеется, мы также реализовали виджет поиска по коду с возможностью переключения чувствительности к регистру: Среди прочих функций стоит отметить удобное древо навигации по файловой системе, возможность загрузки файла из интернета, возможность смены цвета и стиля курсора, возможность отключения всех панелей инструментов, возможность быстрой навигации по различным критериям, возможности изменения разрешения экрана, наличие всевозможных клавиатурных шорткатов и ссылок на них в соответствующих пунктах меню. Также отдельно хотелось бы отметить всех людей, так или иначе принимавших участие в разработке и отладке программы: Вся программа целиком и полностью работает на интерфейсной библиотеке GUI и библиотеке тройной буферизации. Исходный код доступен на GitHub: Библиотека DoubleBuffering Библиотека GUI Библиотека Windows MineCode IDE Напоследок скажу, что, разумеется, куда удобнее и практичнее редактировать большие файлы напрямую в предпочтительном для вас редакторе кода, однако при отсутствии возможности прямой заливки файлов на сервер и для экономии времени MineCode IDE становится незаменимым инструментом для разработки простого ПО.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
