Библиотека Aurora

Делитесь приложениями
  • @drprime всё потому, что библиотека изначально разрабатывалась под задачу полного ухода от визуальных блоков (за исключением if-else и некоторых циклов). Можно, конечно, написать визуальные блоки, но лично я предпочитаю делать всё,что только возможно, в коде. Кому интересно - пусть переделывают библиотеку под экшены.

    А по поводу вложенных функций - я не думаю, что это сильно нагружает проект, функции простые и выполняют несложные действия. Вложенность у меня тоже небольшая, хотя в блоках encode и decode нужно подключение внешней библиотеки CryptoJs - ещё плюс 48 килобайт кода к каждому потоку (что в общем-то тоже немного). Разве что алгоритмы более сложные, возможно что всякие действия по кодированию-декодированию хорошо загрузят процессор. А у меня особо сложных действий вроде нет.

  • @pragmatik Тут вопрос в другом. А какой тогда смысл человеку запоминать функции Вашего модуля, если можно просто запомнить функции js и bas?
    Я беглым взглядом насчитал 20 функций, которые просто копируют другие функции.

    Но, я понимаю что Вами проделана большая работа.
    Дам пару советов по оптимизации кода, это на будущее поможет Вам писать код лучше.

    • Убрать все eval(). Кокой смысл от них?
    • Оптимизировать возврат функции. У вас много ненужных промежуточных переменных.
      Например
    asf.thread = function(){
        var thread_index = thread_number(); 
    return String(thread_index)
    }
    

    Лучше будет так

    asf.thread = function(){
    return thread_number().toString()
    }
    
    • Убрать непонятные символы в функциях
      Например
    ahc.getheader = function(header){
    	_switch_http_client_main()
    	http_client_header('"'+header+'"')
    }
    

    Нужно так

    ahc.getheader = function(header){
    	_switch_http_client_main()
    	http_client_header(header)
    }
    

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

    agf.tmp_asynch = function(string){
        _if(true, function(){
        _template('"' + string + '"')!
        VAR_TMP = _spintax(_result()).replace("BASASYNC","\)\!")})!
    }
    agf.tmp = function(string){
        agf.tmp_asynch(string)
        var result = VAR_TMP
        var result = result.slice(1)
        var result = result.substring(0, result.length - 1)
        return result
    }
    

    Вот у вас 2 функции.
    В первой Вы скопировали в нее ненужный асинхронный _if()!
    Во второй Вы вызываете асинхронную функцию неправильно.
    То что она работает - случайность.
    Хотя 2 этих функции можно заменить одной

    agf.tmp = function(string){
        return _spintax(string)
    }
    
  • @drprime said in Библиотека Aurora:

    Но, я понимаю что Вами проделана большая работа.
    Дам пару советов по оптимизации кода, это на будущее поможет Вам писать код лучше.

    Убрать все eval(). Кокой смысл от них?
    Оптимизировать возврат функции. У вас много ненужных промежуточных переменных.
    Например

    Да, на счёт оптимизации возвратов я полностью согласен. Где успел, сделал return правильно, но в некоторых копипастил из старого кода, ещё не просматривая.
    Со _spintax - просто не знал как это работает, потому заменил на костыль в виде этих двух функций. В следующем релизе сделаю так.
    А вот с eval дело другое. Eval у меня только там, где без него не работает, по крайней мере в блоках кода. Хотя, я,если честно, те же самые функции без eval в библиотеке не тестил. В следующем релизе их переберу, если заработает без eval, оптимизирую.

  • @drprime said in Библиотека Aurora:

    А какой тогда смысл человеку запоминать функции Вашего модуля, если можно просто запомнить функции js и bas?

    Кстати, не призываю никого заменять знания js и BAS занием моей библиотеки. Напротив, лучше, если человек уже выучит js и api BASa и после, как и я, задумается об оптимизации кода. На вопрос "зачем" отвечу вашим же примером кода в таком случае:

    Чтобы не писать (или не копипастить) код

    _switch_http_client_main()
    http_client_header(header)
    

    А быстро ввести то, что запомнить проще:

    ahc.getheader(header)
    

    Согласитесь, даже agf.tmp() написать быстрее и проще, чем return _spintax(). Несмотря на то, что редактор кода произошёл от IDE-шки, писать длинный код в нём не так удобно, а уж серьёзные большие функции и подавно. Но сам редактор отличный, напрягает только отсутствие тёмного скина.

  • @pragmatik чтобы получить первое вхождение регулярки можно не прибегать к методам древних шаманов а заюзать простой match() с выборкой [0] из результата... нарпимер

    var find = "my text for regex".match(/regex/i); 
    alert(find[0]) // выведет "regex"
    

    Имхо тоже реально запомнить ну или загуглить если лень запоминать

    В целом хз )) Буду наблюдать за развитием, начинание безусловно хорошее :)

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

  • Кстати @Pragmatik если ты научиш свою либу хранить кастомные сиппеты и вставлять их нажатием парой кликов это будет просто огонь )) я б только из за этого ее юзал постоянно :D

  • @qwaros said in Библиотека Aurora:

    Кстати @Pragmatik если ты научиш свою либу хранить кастомные сиппеты и вставлять их нажатием парой кликов это будет просто огонь )) я б только из за этого ее юзал постоянно :D

    Код в редакторе кода пишется вручную, так как у редактора движок от какой-то IDE, похоже на visual studio code или на phpstorm. В эту сторону можно копать, если узнать какой именно движок используется, к нему при любом раскладе можно писать расширения. Но и то это довольно сложно будет. Потому я и делаю вместо сниппетов функции, их можно легко копипастить из справочника.

  • Пример использования библиотеки:

    // Читаю из ресурса proxy прокси
    VAR_PROXY = asf.res("proxy")
    // Устанавливаю прокси на http-клиент
    ahc.proxy(VAR_PROXY)
    // Проверяю, установились ли прокси
    _switch_http_client_main()
    http_client_get2("https://2ip.ru/",{method:("GET"),headers:("")})!
    var content = ahc.content()
    var regexp = "<big[\\s\\S]+\?>([\\s\\S]+?\)</big>"
    var check = are.check(regexp,content)
    if (check){
        alg.name('Проверка прокси', 'HTTP-прокси успешно установлен***success')
    }else{alg.name('Проверка прокси', 'HTTP-прокси не установлен!***error')}
    
  • @usertrue said in Библиотека Aurora:

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

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

  • @pragmatik код из enjine.js поместить первым блоком в скрипте

  • @drprime можно, но если юзер захочет не всю библиотеку (чтобы не нагружать потоки), а только свои использованные функции?

  • @pragmatik Дак когда используется библиотека, то в нее не принито лезть. Когда я подключаю моудь например fs в node, томне как правило из его наверное полсиотни функций надо как правило максимум 3.

  • @pragmatik да залить в архив с движком модуль вера не позволяет? ))))

  • @qwaros это и делаю. Только вот если другой юзер будет компиллировать, ему ж надо то же самое делать. Надо мануал по использованию написать в следующей версии. Не все в курсе как библиотеки добавлять.

  • @pragmatik
    Можешь убрать все из engine.js
    Создать кнопку типа инициализация модуля, которая просто добавит все функции. Написать в мане что для начала работы нцжно инициализировать первым блоком в скрипте.
    Но нужно проверить будет ли работать адекватно

  • @pragmatik said in Библиотека Aurora:

    @qwaros это и делаю. Только вот если другой юзер будет компиллировать, ему ж надо то же самое делать. Надо мануал по использованию написать в следующей версии. Не все в курсе как библиотеки добавлять.

    Не бросай, развивай и глядиш добавят в офф сборку :)

  • @drprime said in Библиотека Aurora:

    Можешь убрать все из engine.js
    Создать кнопку типа инициализация модуля, которая просто добавит все функции. Написать в мане что для начала работы нцжно инициализировать первым блоком в скрипте.
    Но нужно проверить будет ли работать адекватно

    Поэкспериментирую на досуге) Спасибо.

  • @qwaros said in Библиотека Aurora:

    Не бросай, развивай и глядиш добавят в офф сборку :)

    Рад что верите в проект, однако для оффициальной сборки пока сыровато. Но забрасывать я не намерен, может быть, через несколько версий все сложные действия БАС уже будут вызываться библиотекой, а несложные задокументирую.

  • @qwaros Да, пожалуй.. надо это идея

  • 1 Votes
    12 Posts
    916 Views
  • 14 Votes
    4 Posts
    1357 Views
  • 8 Votes
    4 Posts
    1008 Views
  • 2 Votes
    2 Posts
    783 Views
  • 6 Votes
    10 Posts
    2027 Views