Библиотека Aurora

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

  • Простите за нескромный вопрос - но чем это облегчает работу? Как по мне так наоборот усложняет ) Использование аргументов на кирилице ваще нечто )) Эдакие екселевские суперфункции с божественным синтаксисом понятным толкьо избранным. В остальном хз даже, самые примитивные функции js просто переименованы .... зачем? ) Мб в дальнейшем конечно вытечет в какой то полезный фреймворк но пока что мне не понятно

  • @qwaros во-первых, где вы увидели функции на кириллице?

    Во-вторых, щас объясню на пальцах чем именно упрощает.

    Откройте engine.js и посмотрите любую функцию. Чать из них завязана на api баса, но даже если брать их, то мы должны будем писать в коде, например:

    	eval('var regexp_result = native("regexp", "first", JSON.stringify({text: content,regexp:"'+ regexp +'"}))')
    	if(regexp_result.length == 0){regexp_result = []}else{regexp_result = JSON.parse(regexp_result)}
    	var result = regexp_result.pop()
    	if(typeof(VAR_TV_0) == 'undefined' || !VAR_TV_0){VAR_TV_0 = ""}
    	var result = regexp_result[0]
    	if(typeof(result) == 'undefined' || !result){var result = ""}
    	if(regexp_result.length == 0){var result = VAR_TV_0}
    	return result
    

    Чтобы получить первое вхождение регулярки.

    Но если мы используем библиотеку, то в коде нам достаточно только вызвать одну функцию и передать ей регулярку и текст, вот так:

    var first = are.first(regexp,content)
    

    Эту функцию реально запомнить и просто вызвать.

    Да, подавляющее меньшинство функций завязаны на простые функции js и простые api баса, но посмотрите объект als. Это пример моего отношения к простым функциям js - сложный функционал, который писать муторно, я заменил на свой API, а вот простые функции указал в справочнике в примечании, чтобы даже новички могли пользоваться ими, а не моим API, попутно изучая JS.

    В общем, вместо страницы кода, используя эту библиотеку, можно получить два-три "абзаца", если можно так выразиться. К этому и стремлюсь - ускорение и упрощение программирования.

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

  • @pragmatik
    Опытным пользователям этот модуль конечно никчему. А вот новичкам что бы пользоваться блоками - нормально. Но есть проблемы в еффективности. У вас много функций, которые просто внутри себя вызывают ОДНУ другую. Какой смысл этого копипаста кода? Вы в свои визуальные блоки можете вставлять первозданные функции.

  • @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
    Создать кнопку типа инициализация модуля, которая просто добавит все функции. Написать в мане что для начала работы нцжно инициализировать первым блоком в скрипте.
    Но нужно проверить будет ли работать адекватно

  • 1 Votes
    12 Posts
    915 Views
  • 14 Votes
    4 Posts
    1357 Views
  • 8 Votes
    4 Posts
    1008 Views
  • 2 Votes
    2 Posts
    783 Views
  • 8 Votes
    7 Posts
    3223 Views