• Apple Cinema vs Dell UltraSharp U2711?

    @kmike
    Dell матовый, мониторы от Apple глянцевые. Именно как монитор imho Dell лучше (и к тому же дешевле).

    У Apple Thunderbolt Display есть зарядка для макбуков, firewire (которого нет у эйров и некоторых прошек) и ethernet — это не только монитор, но и док-станция. Имеет смысл его выбрать, а не Dell, если глянцевость не напрягает и нужны функции док-станции.

    P.S. странно, что дизайн dell катастрофой называете, по-моему так вполне приятный — у эппл, конечно, дизайн лучше, но тут хоть без выпендрежа и наворотов обошлось, все по минимуму (а не как у других производителей: чего только не встретишь — то формы какие-то кривые, то лампочка яркая в глаз бьет зачем-то, то обод блестящий).
    Ответ написан
    4 комментария
  • Air 13" или pro 15"?

    @kmike
    Эйр + хороший внешний монитор будет стоить примерно как аналогичный по скорости MBP 13 + ssd (т.к. без ssd MBP сильно тормознее эйра будет), но без внешнего монитора. Это при том, что корпус MPB так и останется корпусом MBP, и экран у эйра лучше (imho значительно лучше, чем у прошек — на прошках можно выключенный экран как зеркало использовать, на эйрах нет).

    MBP имеет смысл брать только если обязательно именно сейчас нужно 8Гб памяти или обязательно именно сейчас нужно 4 ядра (это если 15шка), или хочется фильмы на харде хранить.

    Мне для разработки (Pycharm) 4гигов сейчас хватает (метров 500 свободно обычно, да и в крайних случаях, когда что-то в своп лезет, это не так чувствуется, ибо SSD). 4 ядра бы не помешали, но переплачивать за это в 2 раза и терять мобильность не хочется. Перестанет хватать — эйр продать не проблема, а там глядишь и новое что-то выйдет.
    Ответ написан
    Комментировать
  • Выбор города на сайте?

    @kmike
    Сделать различия в url'е для разного контента, единственное правильно решение, хоть с поисковыми ботами, хоть без.

    Даже если бот просканирует все объявления, то ссылки в поисковой выдаче все равно неправильные будут, т.к. у человека и по-другому город определиться может.

    Смысл делать все больше и больше полурабочих костылей (захотите потом кеширование? возможность скопировать ссылку? кнопку «назад» при переходе между городами?), лучше причину устранить.
    Ответ написан
    Комментировать
  • Сравнение скриншотов?

    @kmike
    Можно сюда глянуть: pdiff.sourceforge.net/
    Ответ написан
    Комментировать
  • В чём граница между библиотекой и фреймворком?

    @kmike
    Вопрос теоретический, это смотря кто что под фреймворком и библиотекой понимает.

    Можно так разграничить: фреймворк вызывает ваш код, библиотека используется вашим кодом. У фреймворка — «хуки», куда можно вписывать свою логику, библиотека — набор инструменов.

    ООП тут не при чем совершенно)
    Ответ написан
    Комментировать
  • Поиск повернутых объектов?

    @kmike
    Как-то так делал (через питоний биндинг к OpenCV):

    def how_to_make_horizontal(contour):
        """ Returns rotate center and angle that would make contour horizontal """
        rect = cv.BoundingRect(contour)
        box = cv.MinAreaRect2(contour)
    
        x, y, w, h = rect
        p1, p2, angle = box
        if angle > 45:
            angle -= 90
        if angle < -45:
            angle += 90
        rotate_center = x+w/2, y+h/2
        return angle, rotate_center
    


    Но у меня в задаче из растра предварительно контур удавалось получить, обработав изображение через cv.MorphologyEx с кастомным ядром (чтоб избавиться от дефектов — закрыть разрывы и тд) и натравив cv.FindContours. Вроде можно просто взять все точки и передать их в cv.MinAreaRect, не знаю. См.

    opencv.willowgarage.com/documentation/cpp/imgproc_structural_analysis_and_shape_descriptors.html#cv-minarearect
    Ответ написан
    Комментировать
  • Вопросы по Django

    @kmike
    Насчет 3 — рекомендую профили привязывать через OneToOneField или AutoOneToOneField: это довольно прозрачная и простая схема (в отличие от наследования), к профилям можно получать доступ через user.profile1 и тд, + выбирать одним запросом что нужно и когда нужно через select_related (опять таки, никаких неявных запросов, как с наследованием). Причем get_profile() и AUTH_PROFILE_MODEL (или как его) непонятно даже и зачем использовать, скорее незачем.
    Ответ написан
    1 комментарий
  • Что приоритетнее для студента: олимпиады или работа/свой проект?

    @kmike
    И то, и то, все успеете. Времени в вузе дофига было, насколько помню, особенно если в игрушки не играть, потом времени поменьше будет.
    Ответ написан
    Комментировать
  • На каких объемах данных реляционные БД перестают работать?

    @kmike
    При таких объемах и структуре данных может что-то вроде RRDtool исползовать, или whisper какой-нибудь?
    Ответ написан
    Комментировать
  • Где найти java фрилансера для небольшой доработки простой open-source библиотеки?

    @kmike
    Можно попробовать с автором библиотечки связаться и попросить его самого.
    Ответ написан
    3 комментария
  • IDE для HTML/CSS/JavaScript

    @kmike
    JetBrains хорошие редакторы js/html/css в свои IDE встраивает, javascript в PyCharm (по крайней мере год назад) был лучше, чем в Eclipse с любыми плагинами. Все пункты кроме первого выполняются; насчет бесплатности — есть бесплатные лицензии для open source.
    Ответ написан
    3 комментария
  • Хочу монитор: Dell U2311H vs LG IPS231P-BN vs LG IPS236V-PN vs ... ?

    @kmike
    Уж не знаю, полезная ли информация будет, т.к. за LG не сидел, но Dell 2311 — хороший (небо и земля по сравнению, например, с самсунгом на pva, в пользу делла).
    Ответ написан
    Комментировать
  • ORM и изменения объекта в разных местах кода?

    @kmike
    Еще подумайте, вам точно нужна сущность «Account»? По сути же, насколько я понял, это просто кэш, чтоб из транзакций баланс не пересчитывать каждый раз. Вот и относитесь к ней, как к кэшу — те же подходы к инвалидации и тд. Может, даже пересчитывать каждый раз суммы на счете окажется ok, вы точно в это упираетесь по скорости?

    Ну и, конечно, точка обновления счета должна быть одна: или какая-то явная функция, или по созданию Transaction пересчитывать значение в Account, или (imho плохо) по изменению Account создавать Transaction.

    select_for_update есть в транке джанги. Для атомарного увеличения поля можно использовать F-объект (но лучше все пересчитывать целиком, опять же imho).
    Ответ написан
  • Как завершить начатый проект?

    @kmike
    Можно попробовать делать менее глобальные, более сфокусированные проекты. Что-то придумали — не бросайтесь делать сразу, хорошенько подумайте, безжалостно выкиньте 90% из того, что хотели сделать — оставшиеся 10%, самую суть, довести до реализации будет проще (т.к. цель ясна и осязаема) и полезнее (скорее всего, много нового узнаете о своей изначальной идее).
    Ответ написан
    Комментировать
  • Apache + nodejs

    @kmike
    Апач перед node.js ставить — глупость, т.к. на каждое соединение будет висеть тред, а смысл тогда в node.js.

    nginx всем хорош, но не умеет проксировать вебсокеты — node.js, я подозреваю, для реалтайма?

    Можно или HAProxy попробовать (воткнуть его перед всеми), или так и оставить node.js висящим на другом порту (например, если он используется для realtime-штук, и с ним общается только js, а html-странички отдаются чем-то другим — пользователям на этот адрес ходить и не нужно).
    Ответ написан
    2 комментария
  • Насколько сейчас актуальна поддержка браузеров без поддержки Javascript

    @kmike
    Люди, отключающие js, знают на что идут, это их сознательный выбор, я бы за них не переживал. Вопрос тут в другом — в надежности и скорости.

    1. В первые мгновения js нет ни у кого. JavaScript ведь загружают в конце страницы, чтобы контент был доступен раньше, и пока файлы не загрузятся, js у пользователя не работает. Поэтому сайт, работающий без js, будет доступен пользователю раньше. А если соединение медленное, или какая-то ошибка сети, то сайт, не работающий без js, не будет работать у пользователя совсем. Альтернатива — помещать js наверх, хотя как это поможет. Сайты, поддерживающие людей без js, позволяют получить содержание страницы раньше => работают быстрее.

    2. Ошибка в js-файле может привести к тому, что сайт станет недоступен. Это замечание кажется довольно очевидным, но ему часто придают неоправданно мало значения. Если js сжимается в 1 файл, чтоб он грузился быстрее, то при ошибке в одном из скриптов весь оставшийся js тоже не выполнится.

    Проблемы с сетью, какой-то js-файл не загрузился — сайт не работает.
    Забыли запятую — сайт не работает для всех пользователей IE.
    Забыли отладочный console.log — сайт не работает, если отладочные инструменты не установлены и не включены (Firefox, Safari, Internet Explorer).
    Ну и т.д. Сторонний js от рекламодателей, который нельзя контролировать, может сломать сайт.

    Можно, конечно, сказать, что нужно писать код без ошибок. Но такого кода не бывает. Проблема тут в архитектуре, веб работает не так. Недавно, к примеру, Lifehacker и Gizmodo были полностью недоступны продолжительное время именно из-за ошибки в js. Можно вот тут еще почитать: isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs

    В большинстве случаев предоставить альтернативу без js совсем не сложно ведь — пишем просто unobtrusive js. Если это кому-то важно, то для таких страниц и тесты писать проще.
    Ответ написан
    3 комментария
  • как запустить pyquery с python 3.1?

    @kmike
    Все так, 90-95% пакетов под python3 сейчас не работают. Пока практичнее 2й питон использовать, он не сильно хуже 3го (большинство фич в 2.7 есть), а инфраструктура гораздо богаче. Еще как минимум год-два третьей версии, думаю, нужно будет, чтобы стать мейнстримом.
    Ответ написан
    Комментировать
  • Realtime-фреймворк для веб-приложений?

    @kmike
    Что значит «умеет работать с каналами»? Это обычно достигается ведь через какое-то стороннее хранилище, нет? Чтобы при перезапуске/обновлении кода все очереди/сообщения не слетали. Для того же redis под node.js чуть ли не лучший драйвер из асинхронных, и там pubsub есть. Эти «каналы» просто можно по-разному реализовывать, поэтому совсем необязательно плюс, когда что-то такое прямо в фреймворк пихают. Если же просто через общую память реализовывать, там никаких «сторонних приблуд» не нужно, задача элементарной кажется: храним массивчики с подписчиками каналов, когда нужно — всем шлем по сообщению.
    Ответ написан
  • Debian автозагрузка команды?

    @kmike
    Без рута — можно в crontab добавить, там вместо дат можно @reboot указать. Не будет нормального управления последовательностью запуска и т.д., но для многих целей это решение подходит.
    Ответ написан
    Комментировать
  • Scrapy - Python

    @kmike
    Может там ограничение стоит не на кол-во запросов в минуту или секунду, а на кол-во запросов в час, например.
    Ответ написан