RccHD
Пользователи-
Публикации
142 -
Зарегистрирован
-
Посещение
-
Победитель дней
13
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя RccHD
-
А я взял и сделал за 3 дня :P
-
Как определить "графическую" ширину пикселя? Например "х" имеет ширину 1, а какой-нибудь иероглиф -- ширину 2
-
Реализовал часть функций оконного менеджера. Реализовал переключение окон
-
Эти змейки почти идеально подходят для тестирования моего оконного менеджера. Так как в них использованы самые разные функции (gpu, term, event)
-
Это что за программы? Есть пример? Я привык, что всегда нужно pullSignal писать в программе, чтобы она работала
-
Есть пример рабочей реализации? Чтобы две-три программы работали, рисовали графику. Я бы посмотрел исходники
-
Вот я как раз этим и занимаюсь. Я для грандиозности утверждаю что 'пишу новую офигенную операционку', на самом деле это называется 'дорабатываю/переписываю OpenOS' Отсюда и полная совместимость программ на OpenOS с моей операционкой
-
Вы тут обсуждаете локальные переменные, а лучше бы помогли найти подводные камни идеи запуска нескольких приложений
-
Вот еще интересный, красочный пример. Запустил две змейки на одном компе: Проблема только в том, что обе змейки реагируют на нажатия клавиш, но эта проблема легко решаемая P.S. Программу "змейка" я скачал с форума и запустил в своей ОС без каких-либо доработок
-
Приведи пример такой коллизии. Я пока не придумал ни одного
-
Осталось только сделать так, чтобы программа реагировала на события клавиатуры и мыши только тогда, когда мы переключились на нее. Ну, это легко, вроде бы
-
Реализована возможность запуска нескольких программ одновременно!!! В этом примере каждая программа запущена в отдельном окне 10х10 символов. Это 2 одинаковых программы. Эта программа будучи запущенной в "одиночном" режиме занимает все окно: Примечание: в скиншоты попал мой терминал(фиолетовая область). Я криворукий и мне лень переделывать Программы запущены в эмуляторе, так что они работают намного быстрее. Пока еще не тестил в майне
-
Всегда считал, что переменные(они же указатели на объекты) не могут занимать много памяти... Хотя бы потому что исходники библиотек OpenOS прямо-таки напичканы переменными. Может дело все-таки не в таких мелочных деталях как переменные, а в самой реализации? function buffer:readLine(chop, timeout) self.timeout = timeout or (computer.uptime() + self.readTimeout) local start = 1 while true do local buf = self.bufferRead local i = buf:find("[\r\n]", start) local c = i and buf:sub(i,i) local is_cr = c == "\r" if i and (not is_cr or i < #buf) then local n = buf:sub(i+1,i+1) if is_cr and n == "\n" then c = c .. n end local result = buf:sub(1, i - 1) .. (chop and "" or c) self.bufferRead = buf:sub(i + #c) return result else start = #self.bufferRead - (is_cr and 1 or 0) local result, reason = readChunk(self) if not result then if reason then return nil, reason else -- eof result = #self.bufferRead > 0 and self.bufferRead or nil self.bufferRead = "" return result end end end end end
-
По поводу моей субъективной оценки твоего кода: Я вот такие вещи вообще видеть не могу, это вообще не по-человечески так писать: changes[buffer.currentFrame[index]] = changes[buffer.currentFrame[index]] or {} changes[buffer.currentFrame[index]][buffer.currentFrame[indexPlus1]] = changes[buffer.currentFrame[index]][buffer.currentFrame[indexPlus1]] or {} table.insert(changes[buffer.currentFrame[index]][buffer.currentFrame[indexPlus1]], x) table.insert(changes[buffer.currentFrame[index]][buffer.currentFrame[indexPlus1]], y) table.insert(changes[buffer.currentFrame[index]][buffer.currentFrame[indexPlus1]], table.concat(sameCharArray)) Когда я вижу подобный код, я начинаю думать: 1) У автора этого кода паническая боязнь переменных(или он проспорил кому-то) 2) Автор думает, что любая созданная переменная занимает гигабайты в оперативке, поэтому их не использует 3) У автора Крутой Продвинутый Текстовый Редактор ™, который позволяет написать "buffer.currentFrame[index]" сразу в трех местах Так как я не фанат различных навороченных редакторов текстовых редакторов и не боюсь переменных и знака "=", я бы написал этот код вот так: local el0 = buffer.currentFrame[index], el1 = buffer.currentFrame[indexPlus1] changes[el0] = changes[el0] or {} changes[el0][el1] = changes[el0][el1] or {} table.insert(changes[el0][el1], x) table.insert(changes[el0][el1], y) table.insert(changes[el0][el1], table.concat(sameCharArray)) По поводу нагрузки на ЦПУ: писать "buffer.currentFrame[index]" плохо так как система будет каждый раз выполняет следующие действия: 1) получает значение переменной "buffer" 2) получает поле "currentFrame" объекта "buffer" 3) получает поле "index" объекта "buffer.currentFrame" А если хранить это значение в переменной, то будет одно действие: 1) получает значение переменной "el0"
-
Во, первых это ты сам решил что "все программы придется адаптировать", я такого не писал Я постараюсь написать такую ОС, на которой можно будет запустить большинство программ без доработки
-
Надеюсь, что мне не надоест разрабатывать эту OC, иначе будет еще одна R.I.P операционка Планирую закончить разработку максимум через месяц. По истечении этого времени, я либо выложу готовый результат/альфа-версию, либо забью на разработку P.S. я школьнег и мне кроме написания OC еще учиться надо
-
Чтобы бы там не говорил Fingercomp по поводу написания своих ОС, я таки пишу свою ОС Планы такие: 1) разработать операционку с многозадачностью на основе OpenOS с полной совместимостью 2) запуск нескольких программ одновременно(в том числе графических) 3) возможность разбивки экрана на прямоугольные зоны для предоставления программам доступа к этим зонам(программы не будут рисовать графику вне предоставленной зоны) 4) буферизация графики с ускорением отрисовки (как у ECS). Я не стал брать либу от ECS потому что она использует другие либы того же автора и потому что реализована эта библиотека довольно коряво в плане стиля написания кода(мое личное мнение). В общем, я переписал либу ECS с нуля под нужды операционки, кол-во кода сократилось в 5 раз. Все программы написанные на моей OC будут иметь "графическое ускорение" по умолчанию. Пункты 2 и 3 фактически уже закончены(по-крайней мере мне так кажется) Буферизация(пункт 4) работает прекрасно, отрисовка графики в некоторых случаях может быть в 3-15 раз быстрее(относительно gpu api) Также планируется написать несколько очень простых программ для демонстрации возможностей ОС В частности, хочу реализовать ОЧЕНЬ сильно урезанную реализацию моего любимого оконного менеджера xmonad Важно: все OpenOS-программы можно будет запустить на моей OC
-
Хочу предложить вариант серверной Было бы круто если бы был такой улей-серверная(админский приват около спавна). В этом улье стоял бы чанклоадер, а сама серверная была бы оформлена в виде большого футуристичного здания с комнатами внутри(я бы сделал стеклянные перегородки между комнатами). Игроки могли бы за тугрики арендовать комнатку в серверной. Круто то, что игроки-кодеры могли бы собираться в одном здании, сделанном специально для них. Главное правило пользования серверной: в ней можно ставить только компы и декор. блоки Чтобы никто не ставил там лагучие механизмы-печки. Я считаю, что такая серверная способствовала бы появлению разных публичных сетей и онлайн-сервисов на сервере Почему просто не купить чанклоадер? Ну потому, что на него игроку придется копить довольно долго(> недели, вроде бы) А вторая причина -- это возможная нагрузка на сервер. Ведь если 10 игроков держат свои онлайн-сервисы, то они в сумме грузят аж 10 чанков В случае с серверной все проще, грузится 1 чанк
- 97 ответов
-
каждый понимает по-своему Вы считаете, что нужно все методы наследовать, а я считаю что не обязательно наследовать именно все методы. Лучше выборочно
-
Я имел в виду, что реализовывать singleton в Lua не нужно
-
Ну и как вы бы реализовали singleton?
-
С чего вы взяли что мне оно не нравится? Оно скорее вам не нравится, так как там нет public static protected friendly Нет, потому что в моей реализации нет наследования в том виде, к которому вы привыкли. В моей реализации можно выборочно наследовать конкретные методы Чего ж вы так не любите Lua, что стандартные области видимости языка вам кажутся костылями? Те, кто пишут на C++ и Java пусть используют private и protected и т.п. В таком языке как Lua private и protected выглядят просто по-извращенски Представьте себе, что есть объекты Rect, Triangle и Line. У всех этих объектов может быть общий метод Rotate(x, y, z, angle), который будет унаследован у Figure_prototype.Rotate В Lua это не нужно. Если коротко, то вот так local myClass = Class({ __init__ = function(self, x) self.x = x end, strange_method = function(self, y) local myObj = self.__new__(y) myObj.desc = "Объект типа myClass" return myObj end })
-
А в чем собственно проблема? Вот так это делается: local customClass = function(...) local obj = BaseClass(...) obj.SOME_CONSTANT = 42 return obj end
-
Хорошая идея. Наверное так и сделаю
-
АХ, ДА, СОВСЕМ ЗАБЫЛ Если вдруг у кого-то возник вопрос "а где private? а где public? а где local private protected?", то вот вам реализация ваших любимых private и public 1. public (публичные параметры, которые доступны другим классам) указываются в функции __init__ . То есть в конструкторе класса(все очень просто) 2. private (в моей библиотеке не реализованы области видимости для "приватных" параметров, но зато такие области видимости реализованы в Lua) Это намек на то, что не нужно усложнять код, а вместо этого стоит использовать уже реализованные области видимости языка Lua Для этого нужно обернуть код класса в do..end, таким образом создав для этого класса изолированную область видимости Пример: local Class = require("class") local myObject do local secretString = "это приватная меременная без всяких заморочек" myObject = Class({ -- класс без конструктора publicString = "а это публичная переменная!!!" }) end -- Создание экземпляра класса myObject local obj = myObject() print(obj.publicString) -- Выведет "а это публичная переменная!!!" print(obj.secretString) -- выведет "nil", так как это приватная переменная класса 3. А любителям всяких там "local private protected friendly" и прочих извращенских протектед-статиков (привет Java и C++) я ничего не могу предложить. Так как я не решился реализовывать настолько извращенские вещи, хотя бы потому что я не мазохист и никогда не стану это использовать на практике Лично мне простых public и private хватает Надеюсь я не задел ни чьи религиозные чувства!
