Перейти к содержимому

Doob

Гуру
  • Публикации

    1 089
  • Зарегистрирован

  • Посещение

  • Победитель дней

    141

Сообщения, опубликованные пользователем Doob


  1. С выпиливанием вайтлиста стало как-то скучно.

     

    В общем имеем код "сжималки" с рабочим названием "Popoff2"

    local data = require('data')
    
    local function compress(str)
    
      local list = ''
    
      for i = 1, #str do
        if string.find(list, string.sub(str, i, i)) == nil then
          list = list .. string.sub(str, i, i)
        end
      end
    
      local lhex = string.format('%x', #str)
    
      for j = 1, 8-#lhex do
        lhex = '0' .. lhex
      end
    
      return data.md5(str) .. data.fromHex(lhex) .. list
    
    end
    

    Суть алгоритма:

    К примеру, закодируем строку 'helloworld' (строка короткая, сжатия нет, зато перебор быстрый)
    Получаем хеш и размер строки в двоичном виде (для примера размер указываем в четырех байтах), в конец добавляем используемые символы
    [FC5E038D38A57032085441E7FE7010B0] [0000000A] [lowerdh] = 24 байта из 10, но это всего-лишь пример (вообще, можно указать количество повторений для каждого символа, тогда на пермутациях можно выиграть очень много времени, а исходные данные предварительно жать через deflate)

     

    Чтобы вернуть исходные данные, надо перебором генерировать из указанных символов последовательность, указанной длинны. Очень неэффективно, но не в этом суть.

     

     

     

    Нужен алгоритм, при помощи которого можно подбирать исходные данные на нескольких устройствах несвязанных во времени и пространстве, т. е. чтобы диапазоны перебора предварительно разбивались на блоки, которые алгоритм будет обрабатывать отдельно.

     

    Какие есть предложения?


  2.  

    Мм... Зачем жить, если жизнь - велик?))

    Где зимуют раки, когда кончается игра?

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


  3. Идея дуба, он так делал, у него есть мини алгоритм для рисования квадратных картинок.

    Всего-лишь идея, начал делать свой пейнт с инструментами и палитрой, сразу в чат начали сыпать объявлениями о создании СуперМегаФотошопов.

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


  4. Давно хотел сделать заливалку с кучей настроек, но пока допиливаю очень сложный алгоритм, вряд-ли между делом выйдет что-то толковое.

     

    2. Чтобы дуб это-же не писал.

     

    С такими условиями я уже на трех проектах забросил постить скрипты.

    Кстати, спасибо за идею обменника через чат, очень удобно получается!))


  5. Иногда надо получить относительные или абсолютные координаты робота или узнать путь, по которому он прошел, чтобы вернуть робота назад.
    Я немного модифицировал стандартную библиотеку робота, теперь можно задавать/удалять/просматривать координаты робота. Нет функции сохранения координат в файл, поэтому после перезагрузки координаты сбросятся, поэтому это делать надо самостоятельно. Так же, нафигация не работает, если управлять роботом, как компонентом (т.е. в обход robot API)
     

    скачать: pastebin get -f Hb32aQeR /lib/robot.lua

     
    Список новых функций:
    robot.getPos() - возвращает текущие координаты, если не заданы, то при первой загрузке библиотеки устанавливаются x, y, z = 0, 0, 0, а направление - север.
    robot.setPos(x, y, z, side) - устанавливает заданные координаты, side задается в формате N/E/S/W (стороны света)
    robot.getPath() - возвращает пройденный путь в виде строки, каждому движению соответсвует одна буква - [F]orward, [В]ack, p, [D]own, [L]eft, [R]ight. (например 'FFFULFFD' - три вперед, один вверх, один влево, два вперед, один вниз)
    robot.setPath(boolean) - активация/деактивация записи маршрута, соответственно true/false

     

    Можно было бы сделать в стиле navigation API с использованием sides API, но это не особо удобно.
     
    Триггер записи маршрута по-умолчаию отключен, для экономии памяти, ибо каждое движение съедает один байт, по-уму надо прикрутить автоматическое сжатие.
     
    Чтобы пройти по пройденному маршруту обратно, надо в начале активировать robot.setPath(true), а в конце запустить примерно такую программку:

     

    local robot = require('robot')
    
    local path = robot.getPath()
    
    local invert = {
      ['F'] = 'back',
      ['B'] = 'forward',
      ['L'] = 'right',
      ['R'] = 'left',
      ['U'] = 'down',
      ['D'] = 'up'
    }
    
    for i = #path, 1, -1 do
      os.execute('go '..invert[string.sub(path, i, i)])
    end
    

     


    Полезно для полностью автономных программ.
    Очень удобно вытаскивать робота-грифера из чужих приватов.

    Утилита, через которую можно проверить и задать координаты: 
    pastebin get nJ5i4qiL /bin/pos.lua
     
    Программа движения сквозь блоки:
    pastebin get X5G4PHnS /bin/goto.lua
    Роботу необходим инструмент для разрушения блоков, для запуска надо указать координаты.

    • Нравится 2

  6. Идею Нео с хешами я пока не понял. Что за хеши? Кто их генерирует? Что с ними делать дальше? Как это связано с фондовой биржей? Можно подробней и с примерами?

     

    Я незнаю, что имел ввиду Нео, но свой взгляд я уже высказал выше. Хеш это энергия+время, т.е. тоже ресурс, хоть и преобразование необратимое. Так как это ресурс, то у него есть некоторая стоимость, которая выясняется в результате торгов и добычи.

    Если их будут генерировать игроки, то нужен какой-то античит, чтобы хеш, сгенерированный на не родном клинете был недействителен в системе.

    А если генерацию производит какой-то центральный орган, то это превращается в очередной админшоп.


  7. Вангую, что это очередной бездонный проЭкт, типа ОпинФорекс, никто в эти фантики играть не будет, если даже его не забросят.

    Интересно мне посмотреть на тех хардкорщиков, которые возьмутся писать сайт-обработчик.

     

    А вот с хешами я бы поиграл, сделать как битки, только по-проще. К примеру вот такой хеш 000000000000000000b699db1c777238d5876b44cef240654c749dd09e1790efSHA256 будет примерно равноценен сундуку изумрудных блоков. В блокчейне имеем историю транзакций, либо ключ генерации хеша, сам хеш и ник последнего владельца, при транзакции просто меняется ник и все. Суть майнинга будет заключаться в получении редкого хеша (чем менее случайная последовательность, тем выше цена). Думаю, это больше подходит для вычислительной мощности ОпенКомпов, чем реалистичные криптовалюты.


  8. У меня странное дежавю, будто эта тема уже поднималась, но так как ее на форуме нет, значит она улетела в ресайклер.

     

    Если по-уму сделать, то это все-равно будет рулетка, а не биржа. Первая же пара нормальных ботов раздавят экономику.

     

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

    А если их будут искать игроки, то кто мне запретит написать брутфорс на ассемблере и при помощи видеокарты подбирать по десятку гигахешей в секунду? Но в общем, да, идея здравая. Если еще и чанклоадерам цены неподъемные сделать, то будет настоящая, почти рандомная экономика.


  9. Рулетку предложил я, даже программу написал. Админы не выразили интереса К рулетке, поэтому я и прикрыл лавочку.

     

    Главное, чтобы игроки выразили интерес.

    Я на одном немецком сервере построил мини-казино, за месяц пришли только два игрока, хотя онлайн 50 человек.

    Было очень весело, стоит посреди поля большая постройка, внутри куча автоматов, я сижу один и играю с компом в покер.


  10. У меня была такая идея, но она так и осталась на бумаге.

     

    Главное меню

    [продать/купить]

    [хранилище]

     

    Меню хранилища

                       [  Игрок         ][  Хранилище    ]

    [название предмета][   количество   ][   количетво   ]

    [iron Ore         ][64         [+][-][128       [+][-]

     

    Меню магазина

                       [   Игрок        ][  Магазин       ]

    [название предмета][количество][цена][количество][цена]

    [Cobblestone      ][1024      ][0.1 ][9999999   ][1   ]

    Клик по предмету вызывает -

     

    Меню операций торговли/хранилища

    [Название предмета]

    [операция][количество][стоимость]

    [ продажа][          ][         ]

    [ покупка][          ][         ]

    Клик по количеству или стоимости вызывает цифровую клавиатуру.

    [1][2][3]

    [4][5][6]

    [7][8][9]

    [<][0][X]


  11. FAQ по OpenOS

    Q: Монитор показывает синий экран, написано no bootable medium found: flie not found, что делать?
    A: К компьютеру не подключен диск с операционной системой, необходимо вставить дискету OpenOS во внешний, либо (если это алмазный компьютер) во внутренний дисковод. Если подключен жесткий диск, то операционную систему можно установить на него, загрузившись с дискеты OpenOS, прописать в консоли install и задать нужный диск цифрой, по завершении установки, будет запрос на перезагрузку - вытаскиваем дискету и вводим в консоли y
    Если есть жесткий диск с установленной операционной системой, то можно подключить его.

    Q: Я запускаю программу, но она не запускается, пишет file not found
    A: Такой программы нет в текущей директории и папке bin, либо неправильно задано название программы. Возможно вы запускаете программу с аргументами и не поставили пробел между названием программы и аргуметами (например mkdirtest/test, а надо было mkdir test/test или mkdir test /test)
    Чтобы посмотреть список файлов в текущей директории введите ls, если необходимого файла нет, можно перейти в другую введя cd название_папки

    Q:Я вставил дискету в дисковод, как мне записать на нее файл?
    A:В терминале вводим cp имя_файла путь_к_дискете

    Q:А как мне узнать путь к дискете?
    A:В терминале вводим df, у нас выводится список доступных файловых систем.
    Если дискета новая, то у нее нет лейбла и в списке будет длинный набор символов, что-то типа этого: f2a725db-d323-3638-1317-fc33d37de611. Для уточнения можно заглянуть в дисковод, на дискете в самом низу будут эти же символы.
    Если у дискеты есть лейбл, то он написан на самой дискете.
    По умолчанию дискета монтируется в папку /mnt/адрес_дискеты, чтобы примонтировать по более короткому пути, воспользуемся программой mount
    Вводим mount адрес_дискеты путь либо mount метка_дискеты путь.
    В качестве адреса используются первые три символа, например mount f2a /disketa
    Путь для точки монтирования задается абсолютный, т. е. в данном примере, чтобы скопировать файл test из текущей директории на дискету вводим в консоли cp test /disketa

    Q:Как задать дискете свой лейбл/метку?
    A:Вводим в терминале label путь_к_дискете метка, либо label -a адрес_дискеты метка
    Например адрес дискеты начинается с f3a и я хочу присвоить ей название 'TEST', тогда я ввожу в терминале label -a f3a TEST

    Q:Команда df выдает диски, которых у меня нет, что это за файловые системы internet и data?
    A:df показывает не только реальные файловые системы, но и точки монтирования, они указаны в последней графе 'Mounted on'
    Некоторые компоненты имеют файловые системы, подключаемые на уровне мода, в них содержатся стандартные программы для работы с этими компонентами.

    Q: Как отформатировать дискету?
    A: Узнаем начало адреса дискеты, заглянув в дисковод. Например адрес начинается с a9b, тогда терминале пишем rm /mnt/a9b/*

    • Нравится 5

  12. @@Doob, раздели пожалуйста на 2 темы... обе закреплю

    Сделал.

     

     

    Я пробовал виртуальную машину. При этом всё во первых начинает жутко лагать из-за недостатка памяти, во вторых разрешение экрана сжимается до самого ужасного какое можно только представить. Не говоря уже о обновлениях оси.

    По этому единственный нормальный вариант повозится и поставить вторую систему параллельно с первой.

     

    P.S. Знаю консольных команд пока что мало, и то не знал бы вовсе если не сидел когда то давно на Ubuntu.

    Первые версии убунты были более-менее, но потом пошло произведение какой-то богатой школоты - поддержки старых устройств нет, дебиановские отваливаются, от этого лаги и глюки. И на лого бубен нарисован, как по мне, лучше дебиан.

×
×
  • Создать...