• Как оптимизировать пересечение списка значений MongoDB?

    Tark
    @Tark Автор вопроса
    Pyramid'альный мир
    Мда. Использовался драйвер pymongo версии 2.5.2. Установил последний, 2.6.3, время получения данных сократилось до 3 мс, с пересечением - до 4 мс. Результат считаю удовлетворительным, а вопрос - закрытым. Эх!
    Ответ написан
    Комментировать
  • Какие есть хорошие источники знаний тематики IT?

    @throughtheether
    human after all
    Ответ написан
    Комментировать
  • Как перекодировать русский текст из декомпилированных pyc-файлов?

    alternativshik
    @alternativshik
    в консоли питона print '\xd0\xa1\xd0\xb2\xd1\x8f\xd0\xb7\xd0\xba\xd0\xb0 \xd1\x81\xd0\xbf\xd0\xb5\xd1\x86\xd0\xbc\xd0\xb5\xd0\xb4\xd0\xb3\xd1\x80\xd1\x83\xd0\xbf\xd0\xbf\xd0\xb0-\xd1\x83\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xba'
    Ответ написан
    Комментировать
  • Зачем нужен байт-код?

    afiskon
    @afiskon
    Идея следующая. Берется программа, транслируется в платформонезависимый байткод. Затем под виртуальной машиной этот байткод можно запустить без изменений и под x86 Windows и под x64 Linux. То есть, программу не придется компилировать под каждую платформу отдельно. На самом деле я даже могу не знать о существовании некоторых платформ, на которых мою программу кто-то запустит. Возможно, этих платформ еще даже не существует.

    Кроме того, при обновлении виртуальной машины байткод может быть скомпилирован в более эффективный машинный код. И вообще-то даже на двух процессорах с одной архитектурой могут быть применимы очень разные оптимизации, так что платформ в действительности сильно больше, чем количество архитектур * количество ОС.
    Ответ написан
    1 комментарий
  • Зачем нужен байт-код?

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

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

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

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

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

    @vasiliev
    Есть очень неплохой курс по machine learning от andrew ng, одного из основателей coursera. Курс очень полезен целиком, особенно 10 часть, "Advice for Applying Machine Learning" (там, кстати, обсуждается необходимый объём), а проблеме получения обучающей выборки посвящена эта лекция.
    Ответ написан
    1 комментарий
  • Как начинающие веб-студии и фрилансеры находят заказы на разработку сайтов под ключ?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Пока нет рекоммендаций, портфолио и "связей" - фрилансерские сайты, FFF (friends, fools, family). Особо бойкие и амбициозные могут заняться прямыми продажами, ходите в места скопления ваших потенциальных "клиентов", знакомьтесь, оставляйте визитки и презентации. Создайте что-то полезное (инструмент, сервис) для какой-то локальной ниши и предложите это решение - если оно реально полезно, то у вас начнут покупать, а дальше пойдет кастомизация, поддержка, отдельные решения, рекоммендации и так далее.

    Но точно не холодные звонки - это порожняк. Реклама тоже в основном неэффективна, выбросите деньги на ветер, ускорите наступление банкротства.

    И да, ни в коем случае, ни при каких обстоятельствах не начинайте на начальном этапе вкладывать деньги в офис, мебель, технику и прочее. Trello+Git+почта (или другой, более сложный workflow - на усмотрение), сидите себе по домам, в кафешке с ноутами, на крайняк в коворкинге и работайте, работайте, работайте.
    Ответ написан
    4 комментария
  • Как начинающие веб-студии и фрилансеры находят заказы на разработку сайтов под ключ?

    cissav
    @cissav
    Руководитель Omnidesk.ru
    Для начала займитесь составлением собственного портфолио. Пока у вас не будет примеров выполненных работ, едва ли кто-то захочет связываться с вами. Если нет никаких заказов, придумайте их и выполните так хорошо, как можете. После этого мониторьте заказы на биржах фрилансеров и оставляйте свою кандидатуру. Обязательно наберитесь терпения.

    Если уже готово портфолио, то можете попробовать рекламу. Что касается холодных звонков, то очень сомневаюсь, что они вам помогут.
    Ответ написан
    Комментировать
  • В чем разница импорта библиотек (import *)?

    ptitca_zu
    @ptitca_zu
    Programmer. Reader. Introvert
    Мне очень понравилось разъяснение, которое давалось в курсе на CodeAcademy, если мне память не изменяет. Там было так.

    Вы сидите в комнате и что-то делаете, а коробки (модули) с инструментами (функциями) находятся в другой комнате. Также у вас есть помощник (интерпретатор), который приносит вам коробки и инструменты из другой комнаты. Вы можете попросить его 3-мя способами.

    1. import box
    Принеси мне коробку box, я сам буду брать из нее нужные инструменты

    2. from box import tool
    Принеси мне tool из коробки box, я буду им пользоваться, не залезая в коробку

    3. from box import *
    Принеси мне коробку box и достань из нее все инструменты

    Вообще, в больших проектах лучше использовать 1 (или 2) и стараться избегать 3.
    Ответ написан
    Комментировать
  • Начало пути веб-программиста: с чего начать?

    ptitca_zu
    @ptitca_zu
    Programmer. Reader. Introvert
    Я тоже джуниор. Правда работаю не в вебе (BigData etc), и совершеннолетие мое давно прошло (так уж сложилось, что свой выбор я сделал поздно, но речь не об этом).

    По рабочим нуждам совсем недавно пришлось мне стать веб-программистом первого уровня :) И у меня сложился следующий алгоритм.

    1. Начать следует с вещей, которые к программированию мало относятся, а именно с вопросов: Как вообще устроен интернет? Что такое клиент-сервер? Кто кого на каком порту слушает? Что такое HTTP и как он устроен, какова структура запроса/ответа, коды и т.д.

    2. Дальше имеет смысл все это дело попробовать на практике и поставить на виртуальную машинку какой-нибудь http-сервер, в моем случае nginx, настройте прокси.

    3. Повозитесь потом с backend, Apache, например. Напишите простой скрипт, который будет принимать параметры из GET или PUT и что-нибудь с ними делать. Работает он пусть по fastcgi.

    4. Финальный шаг. Базы данных. выбирайте любую и соедините все вместе, написав CRUD приложение: туду-лист, бюджет или что-нибудь такое.

    На все уйдет дня 2-3 в хорошем темпе. Мне кажется, все это фундаментальные вещи, на которые нужно потратить время, потому что они просветляют :)
    Ответ написан
    3 комментария
  • Начало пути веб-программиста: с чего начать?

    L1Qu0R
    @L1Qu0R
    Веб разработчик
    Для начала смотри в сторону html5 + css3, посмотри видеоуроки, почитай какие-то материалы. Потом поставь себе цель, например, создать какой-нибудь сайт-визитку, попутно изучай javascript, в частности фреймворки jquery или mootools. Как более менее освоишься с версткой, выбери серверный язык программирования: python, php, ruby и повтори ту же процедуру (видеоуроки, материалы, поставь цель).

    И, кстати, зацикливаться на чтении книг не стоит (нет, книги это очень хорошо и читать их надо), так как без практики ничего не добьешься ;)
    Ответ написан
    Комментировать
  • Как правильно написать regexp?

    sets88
    @sets88 Автор вопроса
    В общем решение такое:
    regx = re.compile(r"""_\((['"])((?:(?!\1).)+)\1\)""")

    Благодарю Vintorez за помощь!
    Ответ написан
    Комментировать
  • Как правильно написать doc тест для функции?

    ptitca_zu
    @ptitca_zu Автор вопроса
    Programmer. Reader. Introvert
    Решил следующим образом:

    Тест (кроме import, конечно) пишем в файл модуля сразу после объявления функции. Так:

    def func_name(argument):
        """
        >>> func_name(test_argument)
        test_result
        """
        #Some code
        return result


    В конце дописываем:

    if __name__ == "__main__":
        import doctest
        doctest.testmod()


    И запускаем файл с параметром -v

    python func_name.py -v
    Ответ написан
    Комментировать
  • Какие читать книги по machine learning?

    ptitca_zu
    @ptitca_zu
    Programmer. Reader. Introvert
    Яндекс недавно выложил на Хабре свои лекции по машинному обучению. Начал смотреть – более фундаментальный подход, чем у Эндрю (его курс тоже с интересом прошел).

    Насчет читать, я, например, сразу после курса взялся за building ml systems with Python.

    Очень подробная книга и с языком сразу.
    Ответ написан
    Комментировать
  • Как написать парсер файлов на сайте (Python)?

    maxaon
    @maxaon
    Не идеальный, но вполне работающий паук - Grab. Может ходить по сайтам. искать все что вам надо, включая xPath и RegExp
    Ответ написан
    Комментировать
  • Как написать парсер файлов на сайте (Python)?

    @borgch
    Я использовал регулярные выражения (модуль называется re). А конкретно, сначала получал код страницы:
    from urllib import request
    ...
    html = request.urlopen(your_url).read().decode('utf-8')

    И потом что-нибудь вроде
    filenames = re.findall('\w+\.(?:txt|php|css)', html)

    Это запомнит в filenames все имена файлов (без пробелов), за которыми следует нужное расширение. Если имена файлов лежат в окружении каких-нибудь определённых тегов (например,
    <tag1><div class='filenames'>имя файла.txt</div><br></tag1>
    , то легко с помощью круглых скобок можно выделить ту часть текста, походящего под regexp, который нужен.
    fiilenames = re.findall("<tag1><div class='filenames'>(.*?\.(?:txt|php|css)')</div><br>", html).

    Почитай документацию по данному модулю и сделай по аналогии то, что нужно.
    Ответ написан
    2 комментария
  • Смена направления: из продаж в программисты?

    @lightcaster
    Был в подобной ситуации - 27 лет, перешел из PM/Аналитика в nlp/ml. Главный совет - Do not panic :).

    1) Это препятствие, но оно больше в голове. Просто пробуйте.
    2) Если можете сделать быстро - делайте. Нет - лучше не тратье время.
    3) Вообще не вижу смысла искать в России. Поищите на odesk, укажите небольшой рейт. Кто-нибудь да подвернется.
    4) Не знаю
    5) Готовиться бесполезно imo. Просто постоянно учитесь.
    6) Если вы правда хотите работать в тех областях, что указали - математику. Линейную алгебру, немножко функционального анализа, обязательно теорию вероятностей и статистику. Язык вторичен - вам будет все равно, где матрицы перемножать. Хоть в питоне, хоть в C++. Для nlp лучше python.
    7) Вы уж тут определитесь с направлением сначала.
    Ответ написан
    2 комментария
  • Смена направления: из продаж в программисты?

    stDragon
    @stDragon
    front-end разработчик
    в прошлом году мой преподаватель в универе по PHP сообщил немаловажный факт что в QIP основным верстальщиком является женщина работавшая до этого судьей, а ведь до судьи это какой стаж нужен. Говорил бросила суд и свалила в мир IT.
    Ответ написан
    1 комментарий
  • Можно ли отдать инвайт на Хабр незнакомцу?

    Mezomish
    @Mezomish
    Поддерживаю тех вышеотписавшихся, кто советует отдать в Песочницу: в этом случае существует наглядное подтверждение, что автор будет полезен сообществу.
    Ответ написан
    Комментировать