• [РЕШЕНО] Как самому выбирать пакеты для minimal установки Ubuntu?

    Как насчет поставить систему через deboostrap? Оно само выкачает необходимый минимум бинарников и прочего. Если вкратце, то выглядит этот процесс как-то так:

    Выполните
    sudo debootstrap --variant=buildd --arch amd64 precise <куда>

    Потом чрутнитесь туда. Дальше достаточно будет накатить пакет с ядром (linux-image-generic и linux-headers-generic), ну и пакет ubuntu-minimal. Если надо, то еще и загрузчик. Подробности вы можете в любой момент нагуглить.
    Ответ написан
    1 комментарий
  • Какой самый эффективный алгоритм добавления элемента в дерево?

    Ну, например, можно использовать декартовы деревья, если ключи отсортированы, то мы их все за линейное время можем запихнуть. Но, как выше замечено, смысла в этом немного — бинарный поиск всех спасет.
    Ответ написан
    1 комментарий
  • Подскажите компании, которые используют в своих разработках искусственный интеллект?

    На счет ABBYY — неправда, механизмы распознавания текста у этой компании иные.

    Был на одной их лекции, на которой они рассказывали, что пытались раз пять использовать нейронные сети для распознавания текста — все попытки были зафейлены, в результате чего в стенах компании слово «нейрон» и производные от него игнорируются :)
    Ответ написан
    2 комментария
  • Вывод комментариев с иерархической структурой

    Вообще говоря, есть три подхода.

    Первый и самый простой — материализованные пути, это когда мы для каждого комментария храним весь его путь от корня, то есть имеем такую структуру, которая выглядит как-то так:

    1.
    1.1.
    1.2.
    1.2.1.
    1.3
    2.
    2.1.

    Ну и так далее. Для получения всех комментариев в нужном порядке необходимо просто сделать запрос на получение всех комментариев, только отсортированных в лексикографическом порядке по полю, которое содержит этот путь. Если не учитывать время выполнения запроса, то асимптотически это дело будет работать за O(n), где n — количество комментариев.

    Второй подход, чуть посложнее, но выглядящий менее криво — для каждого комментария хранить номер родительского. После того, как мы сделали запрос на получение комментариев, отсортированных по id, мы пробегаем по этим комментариям. Будем строить дерево комментов. Понятно, что если у какого-то комментария есть родитель, то мы его уже добавили в дерево, так как у нас комментарии приходят в отсортированном порядке по их номеру. Поэтому возьмём номер родительского комментария и вставим в список его детей текущий коммент (т. е. что-то типа children[parent_id].insert(node_id)). После такого прохода получим дерево, с которым дальше можем делать что угодно. Получаем асимптотику O(n) при использовании обычных массивов и O(n log n) при использовании ассоциативных массивов, но меньший расход памяти.

    Третий подход — использовать уже указанные выше Nested Sets, но на практике, по-моему, их никто не использует.
    Ответ написан
    2 комментария
  • какой редактор вы используете, верстая на дивах?

    E Text Editor, суперская штука.
    Вспомнил вот даже историю, про то, как он меня выручил. В один прекрасный день что-то стряслось с винтом, и часть файлов благополучно превратилась в кракозябры, в том числе, все мои проекты (да-да, сам виноват, бекапы не держал). Помнится, был жутко расстроен, качал всякие «восстановлялки», не помогло, после чего от горя зашел в E, открыл один из поврежденных файлов, тыкнул «Ctrl+Z», и, как это ни странно, сработало! Вот ведь чудеса случаются ;)
    Ответ написан