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

LeshaInc

Пользователи
  • Публикации

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

  • Посещение

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

    68

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


  1. Хочу поблагодарить @@newbie за алмазы, а также @@LeshaInc за такое неуродливое здание для игрового клуба :) Спасибо!

     

    Если предмодерацию снимут (унбан в чате тоже не помешал бы) я его и внутри дострою, а то пока как то не оч выглядит, особенно то как ты попытался скрыть механизм дверей.

    • Нравится 3

  2. Зачем выкладывать 5 строчек на форум? Да еще и бесполезных.  :facepalm:

     

    P.S. Ыерг, ты какой-то странный. Сначала говоришь всем "да это легко", ну так возьми и напиши. Но неееет, ты вместо того что написать например тот же edit с подсветкой синтаксиса начинаешь писать 5 строк на форум. Говоришь одно, а делаешь совсем другое.

    P.P.S. Мало идей? У меня довольно много сложных и хороших идей по программированию. Могу даже поделиться.

    • Нравится 4

  3.  

    instance of Гадить(0xFFA71AB)

     

     

    Хочу посмотреть как ты без всяких либ будешь считать что то типо такого:

    FF0A116 * 71838 + 2215 - (8310 ^ LOX36)

     

    P.S. Хватит гадить в теме. Не нравится - не лезь, обойди стороной. Например, Васе необходима такая либа. Он нашел ее, зашел и попал автоматический к твоему посту, где видит как ты всяческий обливаешь радужными какашками либу. После этого, наш Вася пойдет писать свою либу, которая будет делать то же самое. +1 велик.

    • Нравится 1

  4. Думаю на практике, библиотеку можно свести к функции convert(value: number, to: number). Который будет изредка юзаться для конвертации и вывода результата вычислений в какую-нибудь нужную систему.

    Ибо какая к черту разница как оно там под капотом хранится. Конструкция из строк и таблиц не будет эффективнее примитивного типа number.

     

    С точки зрения же получения удовольствия от написания программы, игры с системами счисления, таблицами и языком Луа - вопросов нет, дело хорошее =)

     

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

    • Нравится 1

  5. В чём смысл вычислений в разных системах счисления, если это по сути одно и тоже? Не понимаю, зачем здесь ООП. В остальном функционал не прибавился.

    • А зачем тогда человечество сделало разные системы счисления? Ведь вычисления те же самые? :facepalm:
    • Без ооп не получить удобных вычислений, таких как a + b, пришлось бы делать что-то вроде

      a = toDec("FF", 16) b = toDec("73", 8) print(fromDec(a + b, 8))
      Ну а теперь сам посуди, что выглядит лучше, первое или второе?

  6. 6iW2aEo.png
     
    §
    ">topart LuaInteger library
    Библиотека для работы с разными системами счисления на чистом Lua.
     
    §">toc Содержание:

    • §">toc Содержание
    • §">about Описание
    • §">doc Документация
      • §">todec toDec
      • §">fromdec fromDec
      • §">custominteger CustomInteger
        • §">customintegerto :to
      • §">hexinteger HexInteger
      • §">octinteger OctInteger
      • §">bininteger BinInteger
      • §">decinteger DecInteger
    • §">get Скачать

    §">about Описание:
    Однажды @qwertyMAN написал библиотеку для работы с числами. Функции она предоставляла довольно нужные, но возможности у нее никакие - нельзя работать с нашими числами (умножать, вычитать, делить, сравнивать и т.д.), да и ООП там никакого и не было. Поэтому я решил написать свою библиотеку с блэкдж.... ООП и арифметикой.
     
    §">doc Документация:

    • §">todec toDec(number: number, number: base) - number: result - переводит одну систему счисления в десятичную. Принимает число, которое будут переводить (обязательно в виде строки, например "FFFFFF") и основание системы счисления из которой переводят (например 16).
      Пример: 
      print(int.toDec("F", 16)) -- 15
      
    • §">fromdec fromDec(number: number, number: base) - string: result - переводит десятичную систему счисления в другую с основанием base (например 16).
      Пример:
      print(int.fromDec(15, 16)) -- F
      
    • §">custominteger class CustomInteger(string: number, number: base) - CustomInteger instance - класс системы счисления. Принимает число в виде строки, и его основание. С объектом мы можем делать любые действия (+, -, /, *, %, ==, >, <, >=, <=, ^)
      • §">customintegerto :to(number: base) - string: result - переводит наш объект в другую систему счисления.
        Пример:
        a = CustomInteger("F", 16)
        print(a:to(10)) -- 15
        
    • §">hexinteger class HexInteger(string: number) - HexInteger instance - ссылка на CustomInteger с основанием 16
    • §">octinteger class OctInteger(string: number) - OctInteger instance - ссылка на CustomInteger с основанием 8
    • §">bininteger class BinInteger(string: number) - BinInteger instance - ссылка на CustomInteger с основанием 2
    • §">decinteger class DecInteger(string: number) - DecInteger instance - ссылка на CustomInteger с основанием 10

    §">get Скачать:

    Ссылка на скачивание: http://pastebin.com/yg487hJ9

    Библиотека написана на moonscript,  поэтому если вы хотите получить moon исходник, напишите мне в личку.

    • Нравится 3

  7. 4eyes

    Библиотека предоставляющая более удобный интерфейс для работы с мостом из мода OpenPeripherals.
     
    Описание
    Данная библиотека имеет очень удобный ООП интерфейс и много возможностей, в том числе мультипользовательность. Мы можем легко создать свой интерфейс, получать доступ к любому пользователю, слушать события и и работать с клавиатурой. Для примера, код простейшей программы:

    -- connect libs
    local eyes = require("4eyes")
    local class = require("30log")
    
    -- create classes
    local Text = class("Text")
    do -- class Test
      function Text:init(surface, x, y, text, color)
        self.x = x
        self.y = y
        self.text = text
        self.color = color
        self.drawer = surface.addText(self.x, self.y, self.text, self.color)
      end
      function Text:event(bg, us, ev)
        print(table.unpack(ev and ev or {}))
      end
    end
    
    -- work with 4eyes
    local bridge = eyes.Bridge()
    bridge:getEvent("glasses_attach"):setPostHandler(function (br, ev)
      print("New user: " .. ev[3])
      local us = br:getUser(ev[3])
      us:addObject("test", Text(us:getSurface(), 5, 5, "Hello", 0xFFFFFF))
      us:renderObjects(br)
    end)
    bridge:pull()
    
    

    Как видите, все очень просто. Создаем объект класса Bridge, настраиваем и запускаем метод pull который начнет слушать все события.
    Сейчас вам может быть не все понятно, например что за PostHandler, и объекты. Об всем этом пойдет далее.
     
    Документация
    Класс Bridge
    Данный класс является самой главной частью библиотеки, именно в нем происходит слушание событий и добавление/хранение/изменение пользователей.

    • :init() - является конструктором объекта, вызывать явно не нужно, он вызывается сам при создании объекта. При создании создает события по умолчанию (описанные классом Event):
      • glasses_attach - добавляет пользователя в таблицу пользователей
      • glasses_detach - удаляет пользователя из таблицы пользователей
      • glasses_capture - начало сессии с клавиатурой, делает поле captured пользователя равным true
      • glasses_release - конец сессии с клавиатурой, делает поле captured пользователя равным false
    • :pull() - запускает главный цикл программы, слушающий сигналы.
    • :addUser(string: name, string: uuid) - добавляет нового пользователя в таблицу пользователей, принимает имя и uuid пользователя.
    • :getUser(string: name) - возвращает пользователя с указанным ником.
    • :removeUser(string: name) - удаляет пользователя с указанным ником из таблицы пользователей.
    • :addEvent(string: name, Event: event) - добавляет нового слушателя, принимает название события и объект класса Event.
    • :getEvent(string: name) - возвращает слушателя с указанным именем.
    • :removeEvent(string: name) - удаляет слушателя с указанным именем.
    • :eachUser(function: func(Bridge: bridge, User: user)) - выполняет функцию для каждого пользователя. Пример:
      bridge:eachUser(function (br, us)
        print(us.name)
      end)
      --[[ 
      пользователи: Маша, Петя, Катя
      stdout:
      Маша
      Петя
      Катя
      --]]
      

    Класс Event
    Данный класс является обработчиком события. Очень прост.

    • :init(function: handler) - является конструктором объекта, вызывать явно не нужно, вызывается сам при создании объекта. Принимает обработчик события, в качестве функции.
    • :setHandler(function: handler) - устанавливает обработчик.
    • :setPostHandler(function: posthandler) - устанавливает пост-обрабочик события. Этот пост-обрабочик будет вызыватся каждый раз после вызовы обработчика.
    • :handle(...) - обрабатывает событие, сначала обработчиком, потом пост-обработчиком. Принимает любые данные, которые будут переданы обработчику и пост-обработчику.

    Класс User

    Класс пользователя. Хранит в себе все объекты пользователя, такие как тексты и геометрические фигуры.

    • ...дописать...

    Скачать

    Для того чтобы поставить библиотеку, скачайте два файла: 30log.lua и 4eyes.lua и разместите их в папке /lib либо /usr/lib

     

    :)


  8. Грузиться будут только те, что используются в программе, вызываемой через среде. 

     

    Ты еще не понял? Вот добавили мы библиотеку - lol = require "lol". Она сразу загружается в оперативную память, сразу выжирает память. Пофиг, когда мы будем вызывать функции либы, она в любом случае будет жрать память

    • Нравится 3

  9. Софист ты, Леша) Хоть ты сам напишешь require, хоть среда за тебя это сделат, какая разница? Но во втором случае тебе не нужно думать о require)

     

    В моей практике были программы которые ели довольно много оперативной памяти компьютера. Но они подгружали совсем немного библиотек. А теперь представь если это немного превратиться в много? Компьютеру просто памяти не хватит


  10. Пардон, package.loaded, перепутал немного)

     

    А по твоему package.loaded - это переменная которая хранится не в оперативной памяти, а в облаке из радужных какашек и пони, в котором бесконечное количество прострнанства?

    Если ты загружаешь все либы, они по твоему не займут никакого места? Фигушки. Они хоть и будут сидеть в package.loaded, но оперативку выжирать все равно будут.

     

    :smile89:

    • Нравится 2

  11. Именно так и происходит: package.preload - это хранилище)

     

    :facepalm:

    package.preload - это хранилище либ, которые получаются не из файла, а из таблицы. Например:

    package.preload["lox"] = {fuck = print, lol = table.insert}
    ...
    lox = require "lox" -- файла lox.lua нету нигде
    lox.print("lox") -- >> lox
    

    :smile14: :smile14: :smile14:


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

     

    А require по твоему маг, он загружает либы, не в оперативную память, а в магическое хранилище розовых пони какающих конфетами, в котором можно хранить сколько хочешь информации. :facepalm:

     

    Например, когда мы пишем в коде:

    local lib = require "lib"
    

    Вызывается файл lib, берется то что возвратил этот файл и кладется в переменную lib. Естественно переменная забирает часть оперативной памяти.

     

     

    Плохой стиль.

     

    Ну если для тебя a.on("func") - плохой стиль, то так тому и быть, твоя функция, не моя.

    • Нравится 3

  13. Что дает эта среда?

    Стандартные библиотеки можно теперь не загружать при помощи require, это обеспечит среда.

     

    Про оперативную память слышали? Нет? :facepalm:

     

     

    Планируемые функции: замена l <name> на local <name> и аналогично для функций.

     

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

    l f main()
      l a = "hello"
      a = a .. "!"
      print(a)
    end
    

    Мне кажется это просто клон моего servercore, из отличий только:

    • off метод. Честно говоря не вижу смысла этому методу, удалить слушателя можно и on'ом.
    • .aa формат
    • Нравится 2

  14. Буду ждать :)

    Еще можно добавить изменение владельца, добавление/удаление юзеров командой, открытие/закрытие двери.

     

    Жди дальше, я начал переписывать программу. Теперь, собственно, будут разные пользователи: админ, модер, юзер, все они находятся в вайтлисте очков, К очкам не сможет подключиться тот, кого нету в вайте. Будет также не такой загроможденный экран - всего одно окошко в котором можно переключать страницы командами $$+ $$-. И очень важно, то, что мы можем установить макрос на эти команды, и переключать страницы со своей клавиатуры.


  15. ЛехеИнцу лишь бы козявку какую-то кинуть в кого-то куда-то, вместо того, чтобы программку писать какую-то=) "Козявочник" он местный просто)))

     

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

    • Нравится 1
×
×
  • Создать...