Я художник, я программист все в одном флаконе
это наверное самая визуально интересная моя работа
https://play.google.com/store/apps/details?id=com....

Полезняки по докеру, OSX и частично linux
https://github.com/istarkov/docker

Почему я понемногу забил на angular и свалил на reactjs + immutablejs + flux
https://github.com/istarkov/docker/blob/master/rea...

Cчитаю что Джон Кармак лучший программист всех времен и народов.

Основная работа связана с BigData и различными алгоритмами по обработке и получению информации.
Контакты

Достижения

Все достижения (12)

Наибольший вклад в теги

Все теги (96)

Лучшие ответы пользователя

Все ответы (155)
  • Какой встраиваемый язык выбрать: Lua или Python?

    icelaba
    @icelaba
    Знаю и умею всё
    lua а именно ее разновидность luajit имеет особенность которая выделяет luajit из всех скриптовых языков, а именно "халявное" взаимодействие с C чз ffi, не надо конвертить Cшные структуры - можно читать напрямую без потерь на конверсию во внутренние типы скриптового языка.
    luajit - очень очень быстрый, у меня на части задач он выдает производительность равную C шному коду

    Сама по себе lua если выкинуть парсер и как следствие использовать прекомпилированный lua код, очень мало увеличит размер вашего приложения - в случае android не больше чем на 50кб (там правда apk это zip)

    Собственно я использую luajit именно по причине ffi
    и невероятной скорости.

    Недостаток lua - меня коробят конструкции if then end do :-) - но только в эстетическом плане, сам по себе язык очень мощный и имеет все что надо - тупели, клозуры и тп :-)
    Ответ написан
    Комментировать
  • Что почитать об алгоритмах нормализации слов?

    icelaba
    @icelaba
    Знаю и умею всё
    Для русского языка есть несколько вариантов часть из них только получение базовой формы, часть выдает помимо базовой формы еще и какая это часть речи:
    По пунктам от самого простого к сложному, и я не в курсе работают ли эти инструменты под windows, сам я использую osx и linux

    1) Инструменты стеммеры - stemmer, обрезают слово выдирая из него по некоторым правилам то что они принимают за - окончания, суффиксы, приставки.
    Лично мне очень нравится стеммер для русского языка из пакета https://github.com/NaturalNode/natural
    Тут простой код для понимания как работает стеммер https://github.com/NaturalNode/natural/blob/master...
    Достоинства стеммеров: очень быстрые, подходят для предварительного анализа в 100% случаев
    Недостатки: базовая словоформа периодами весьма далека от реальной базовой словоформы

    ==========================================================
    2) использовать aspell - линуксовый пакет для проверки орфографии
    пример echo ехала криса на велосипеде | aspell -a -d russian --sug-mode=ultra
    вывод:

    + ехать
    & криса 13 6: киса, риса, ириса, краса
    *
    + велосипед

    Достоинства: большой набор словарей, можно добавлять свои, есть suggestion mode - выдает похожие слова на слова написанные с ошибкой и/или отсутствующие в словаре см выше & криса 13 6: киса, риса, ириса, краса
    Недостатки: медленный, не говорит какая часть речи

    ======================================================
    3) Лучший в номинации TreeTagger www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/#Linux

    пример: echo 'баба сеяла горох' | cmd/tree-tagger-russian
    вывод:
    баба Ncfsny
    сеяла Vmis-sfa-e
    горох Ncmsan

    разшифровка записей вида Ncfsny тут corpus.leeds.ac.uk/mocky/msd-ru.html
    то есть помимо того какая это часть речи и базовой словоформы эта штука еще и выдает кучу дополнительной информации - от падежей и до ....
    Достоинства: великолепен!, определяет часть речи даже если не имеет слова в словаре
    Недостатки: части речи то он определяет а вот с базовой словоформой невсегда, приходится использовать в паре с aspell или стеммером. Самый медленный.

    ========================================================
    Есть еще какие то продукты от яндекса https://company.yandex.ru/technologies/mystem/
    я не пользовался.

    Удачи!
    Ответ написан
    Комментировать
  • Как спрятать пути JS?

    icelaba
    @icelaba
    Знаю и умею всё
    Нет смысла прятать, достаточно открыть developer tools в хроме, вкладку network и итоговый путь будет виден.
    Откуда инициирован запрос тоже.
    Ответ написан
    Комментировать
  • Как написать алгоритм спирали?

    icelaba
    @icelaba
    Знаю и умею всё
    Заходите сюда
    ru.wikipedia.org/wiki/%D0%90%D1%80%D1%85%D0%B8%D0%...

    Если спираль устраивает
    записываете r = k*phi
    x = r*cos(phi)
    y = r*sin(phi)

    предположим точек N
    for(i=0;i!=N;++i){
    phi =i*some_const;
    r = k*i;
    x = r*cos(phi)
    y = r*sin(phi)
    draw(x,y, "что вы тут хотите рисовать")
    }
    константы
    k some_const подбираете сами
    Ответ написан
    Комментировать
  • Зачем нужен байт-код?

    icelaba
    @icelaba
    Знаю и умею всё
    Особенность многих jit компиляторов в том что они умеют оптимизировать код на лету, используя статистику выполнения программы,
    например hotpath оптимизация считает количество попаданий в ту или иную часть программы, и генерит машинный код только для кусков кода где программа реально часто выполняется.
    Что это дает: за счет этого jit оптимизатор может разместить куски часто выполняющегося машинного кода очень близко друг к другу - так что они все целиком будут умещаться например в кэше процессора, и да - jit компилятор порой за счет этого обгоняет прекомпилированный машинный код.

    Есть еще куча оптимизаций например касающаяся языков которые поддерживают closures, как показывает практика большинство клозур используются в коде с одинаковыми переменными окружения, что позволяет не выполнять кучу работы по сохранению окружения и тп - а просто заинлайнить клозуру - другое дело что на этапе компиляции понять это невозможно, а вот на этапе выполнения сохранить hash окружения и если он не меняется то инлайнить код - легко

    Есть еще куча подобных оптимизаций которые реально помогают динамическим языкам работать почти наравне по скорости с С на некоторых задачах, яркий пример luajit

    И до кучи динамические языки зачастую невозможно заранее перенести в native код чтобы сам этот код не прератился в некорый интерпретатор байткода, вот хорошо про это написано:
    stackoverflow.com/questions/15626611/can-regular-j...

    (c# кстати нединамический поэтому для него насколько я помню была какая то тулзень для прекомпиляции в native код - но я уже лет сто ;-) не писал на c# поэтому точно не помню)
    Ответ написан
    4 комментария

Лучшие вопросы пользователя

Все вопросы (2)