• Опыт использования вертикальной мыши или спасаемся от туннельного синдрома
    0
    2 дня назад пришёл сей девайс…
    Первый день был странный… Было не привычно… Коллеги периодически то восхищались то ржали… Ладонь довольно сильно грелась при длительном использовании (ибо как-то не проветривается вообще)… Рука сначала тянется взять сверху и только в последний момент вспоминаю, что надо повернуть… Во второй половине дня немного наловчился, но попадать по мелким кнопкам на экране не очень легко…

    Вечером забрал мышу домой… (Давно не играл в контру… Лет 5 наверно… Но купил CS:Source на стимовской распродаже и грех не опробовать… тем более под линухой и без вайнов) Играть необычно и на много удобнее чем обычной мышью… первые минут 10 есть ощущение, что держишь ствол в руке… Потом правда особо не обращаешь внимание на манипулятор… После игры появилось ощущение, что она стала удобнее… Но всё-же позиционировать курсор пока ещё сложновато… Особенно когда надо попасть в мелкие(~10px) объекты на экране…

    2 день… Пришёл на работу… Схватился за мышь… Ощущение, что «свое родное»… Держать реально приятно… Обычная мышь уже немного напрягает… ну не хочется руку ворочать на 90 градусов… Коллеги интересуются удобно ли мне… Один из коллег ляпнул, что можно попробовать купить себе :)

    Ещё через пару дней (наверно) начну нормально попадать в совсем мелкие объекты… Задумываюсь о покупке 2 такой домой… Покупал на работу… но решил и на выходные домой взять… Уж очень затягивает :)

    vvzvlad, спасибо за обзор сего грызуна… Очень рад, что приобрёл :) Кстати брал проводную ибо к радио у меня какое-то необоснованное недоверие… Но шнур мягкий не доставляет неудобств и не разрядится в самый ответственный момент…
  • Стоит ли смотреть в сторону PHP тому, кто решился только со второй попытки научиться прилично программировать?
    +7
    1. IDE PHP Storm

    2. толку от MVC, PHP, IoC и т.д. нет, если вы не научитесь мыслить объектно-ориентированно.

    начать можно, впрочем, с двух статей.
    они
    wiki.agiledev.ru/doku.php?id=ooad:dependency_injection
    wiki.agiledev.ru/doku.php?id=ooad:manage_dependencies_in_php_code

    также изучите принципы SOLID. лучше на примерах с презентациями
    ссылки можете взять из моего плана (я читаю иногда лекцию своим, набросал план)
    docs.google.com/document/d/1mUigVpqtQ-ZtQfN5fW1qOzQsoKRsf3t0xyz9At8dHLA/edit

    принципы ООП и правильное мышление одинаковы для любого языка. пусть сколько угодно усераются фанаты одного языка, не любящие PHP/Java/C++/подставьте другой язык, если они — дубы, то им ничто не поможет.

    правильные алгоритмы не зависят от языка. ООП не зависит от языка. умение писать в функциональном стиле тоже не зависит от языка.

    и только долбоебизм от него зависит — если вы не владеете виртуозно хотя бы двумя языками разного плана (к примеру, системный C и Perl под веб), в вас 99% рано или поздно проснется фанатизм к своему единственному языку и ненависть к одному или нескольким.

    но я отвлекся. в общем, почитайте статьи, которые я прислал,
    потом посмотрите, как устроены внутри нормальные фреймворки — Yii, а также орм-ка Doctrine и т.д.

    как увидите, что начнете понимать такие вещи, как
    — у этого класса одна ответственность, а вот у этого две и он поэтому кривой
    — так, в этом проекте классы называются Model, однако автор-мудло вместе с высокоуровневой логикой здесь всунул SQL-запрос (детали реализации), нарушение IoC и просто перемешивание архитектурных слоев
    — ага, вот тут применили паттерн Стратегия. он реализует IoC, что, свою очередь, уменьшает количество A<->B зависимостей и приближает к ациклическому направленному графу зависимостей систему, что для ее устойчивости очень хорошо
    и т.д.

    тогда считайте, что левелап произошел
  • Сервис просмотра захабренных картинок
    +16
    Особо и нечего рассказывать. Скрипт парсит несколько страниц ленты хабра, чтобы захватить указанное количество дней. Далее парсит каждую публикацию, извлекает комментарии в отдельные объект в базе данных. Дале другой скрипт бежит по сохранённым комментариям, выдирает картинки и скачивает их, помечает анимированные gif-картинки, чтобы впоследствии выводить их без обычного механизма изменения размеров. Сам сайт сделан на базе django, ajax функционал на базе jquery и fancybox. Сайт кэшируется в memcached. RSS реализован средствами django. Кнопки публикации в социальные сети вставлены ручками. Сам парсинг работает на базе библиотеки grab(обёртка над pycurl + xml). Ресайзинг картинок через django-плагин sorl.thumbnail, который в свою очередь использует PIL. Статика раздаётся через nginx, динамика работет внутри uwsgi-процесса, который контролируется supervisor демоном. В качестве базы данных использован postgres. Работает всё на выделенном сервере от hetzner.de DNS-сервер на бесплатном сервере sitelutions.com Для анализ трафика используется яндекс-метрика. Репозиторий — mercurial.