• Переход на embedded PostgreSQL в unit-тестах
    +1
    Такая тестовая инфраструктура в hh тоже есть, но здесь же речь шла о запуске unittest'ов, немного другой уровень проблемы.
  • API hh.ru. Быстрый старт
    0
    токен выданный в личном кабинете в dev.hh.ru действует примерно 2 недели. каждые 2 недели или чаще можно получать новый.

    если хочется получить «постоянный токен», нужно зарегистрировать приложение, провести авторизацию приложения (можно вручную, хватит curl'а), затем получить пару access token + refresh token, их можно будет по истечению 2-х недель поменять на новую пару access token + refresh token и так далее.

    ограничение времени жизни access token'а сделано по соображением безопасности.
  • API hh.ru. Быстрый старт
    0
    всё так.
  • Встреча с Евгением Бурмако: макросы в Scala
    +1
    Чтобы было понятно, что не только gricom ждёт записи, я тоже тут отмечусь :) Интересно было бы посмотреть эту или новую запись.
  • FP на Scala: Что такое функтор?
    0
    Схематично ковариантный функтор выглядит следующим образом


    Вероятно тут все же имелся ввиду контравариантный функтор.

    P.S за статью спасибо.
  • Как я научился делать мир лучше в HeadHunter
    +2
    используем git и github.
  • Роскомнадзор заблокировал 7 страниц GitHub
    +1
    У нас на билайн разбанили пару минут назад.
  • Встречайте, IntelliJ IDEA 14 уже здесь
    0
    А также эта опция отсутствует для git. По крайней мере у меня она не появилась.
  • GitHub запустил Developer Program
    +10
    Важное замечание: для участия в программе нужно иметь подписку на любой из платных тарифов GitHub'а.
  • Traits в php 5.4. Разбираем детали реализации
    0
    За прошедшее время полностью перешёл на другие языки программирования. Так что теперь уже врядли. Но домаю найдётся кому подхватить флаг.
  • Google Reader закрывают
    0
    Присоединяюсь к вопросу.

    Очень жаль будет потерять возможность читать новости в прекрасном Reeder для iPad.
  • Встречайте Critic: система инспектирования кода в Opera Software
    0
    Отбой. Разобрались :)

    Ошибка была в том, что мы использовали короткий формат, находясь при этом не в ветке '/r/...', а в исходной, которая послужила основой для неё.

    Спасибо за помощь.

    Кому интересно, шаги должны быть такие:
    git checkout super-fix
    nano bug-code.py
    git add bug-code.py
    git commit
    git push critic super-fix:r/testdev/super-fix
    
  • Встречайте Critic: система инспектирования кода в Opera Software
    0
    Да, так мы уже пробовали, но коммит отклоняется с ошибкой типа:

    error: src refspec r/testdev/super-fix does not match any.
    error: failed to push some refs to 'testdev@example.com:/var/git/sandbox.git'

    Хук на месте, его создал сам critic в своих локальных версиях репозиториев.
  • Встречайте Critic: система инспектирования кода в Opera Software
    +1
    Расскажу про свой опыт и задам пару вопросов. Надеюсь alexeikh мне поможет.

    Мы давно в компании ищем подходящий инструмент для code review (git). Опробовали много всего и gerrit и crew (http://crew-cr.org/) и ещё кучу каких-то поделок. Сейчас пока остановились на встроенном в gitLab (http://gitlabhq.com/), так как GitLab мы используем для всего остального связанного с git.

    В общем, попробовали сегодня развернуть critic.
    Мы для этого сразу выделили отдельную вирт машину в нашем «облаке». На неё взгромоздили ubuntu server 12.04.

    Авторизацию сделали так: установили critic с авторизацией «host» (т.е. на совести Apache), в Apache включили авторизацию через mod_authnz_external + pwauth + authnx_unixgroup.

    Всё это наличиствует в пакетах, настройка ограничивается небольшими модификациями вирт. хоста для Apache, который генерит установщик critic:
    /etc/apache/sites-enables/critic-main
    <VirtualHost *:80>
    ServerAdmin your-mail@example.com
    ServerName host.name.example.com

    #setup unix auth
    AddExternalAuth pwauth /usr/sbin/pwauth
    SetExternalAuthMethod pwauth pipe

    WSGIApplicationGroup %{GLOBAL}
    WSGIProcessGroup critic-main
    WSGIDaemonProcess critic-main processes=2 \
    threads=25 \
    home=/usr/share/critic \
    python-path=/etc/critic/main:/usr/share/critic \
    user=critic \
    group=critic

    WSGIImportScript /usr/share/critic/wsgistartup.py \
    process-group=critic-main \
    application-group=%{GLOBAL}

    WSGIScriptAlias / /usr/share/critic/wsgi.py

    WSGIPassAuthorization Off

    <Directory "/usr/share/critic">
    AuthType Basic
    AuthName critic
    AuthBasicProvider external
    AuthExternal pwauth
    AuthzUnixgroup on
    Require valid-user
    Require group critic
    <[слеш]Directory>

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    ErrorLog /var/log/critic/main/error.log
    CustomLog /var/log/critic/main/access.log combined

    Alias /static-resource/ "/usr/share/critic/resources/"
    <Directory "/usr/share/critic/resources">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    ExpiresActive On
    ExpiresDefault A2592000
    <[слеш]Directory>
    <[слеш]VirtualHost>


    (если кто-то будет брать за основу не забудьте [слеш] заменить на символ, в исходном виде это ломало тег spoiler).

    В итоге в critic попадают тем, кому создали аккаунт на сервере и добавили в группу critic. Этих же прав будет достаточно для push'инга веток на code review.

    Судя по тому, что приложение wsgi'ное позже apache мы возможно заменим чем-то более подходящим.

    Дальше настроили репозитории. Для этого пользователю critic сделали deploy ключ к нужным нам репозиториям в GitLab (технически для управления git там gitolite).

    Репозитории успешно загрузили, отправили тестовый review. Попробовали пописать комментов и issues. Всё в общем и целом не плохо пошло. Возможно нам хотелось бы немного поправить мелочи в интерефейсе и логике. При удачном стечении обстоятельств стоит ожидать от нас Merge Request'ов на GitHub'e.

    Но тут и возникает вопрос: как не бились так и не поняли, как по результатам review поправить код и добавить к review новые комиты? Нужно создать новую ветку? Что-то запушить в /r/user/branch или как?

    Буду благодарен за помощь. Так как чтение всего встоенного Tuturial и FAQ не дали ответа.
  • Питон в коробке – venv в python 3.3
    0
    В OS X, кстати, python тоже вполне неплохо ставиться и через MacPorts. При этом можно держать несколько версий. По факту, я, например, держу 4 штуки. Даже можно менять дефолтную версию (остальные будут вызываться как pythonx.y).

    Наверное можно и через HomeBrew или pythonbrew ставить, но пока это не пробовал.
  • Питон в коробке – venv в python 3.3
    +1
    попробуйте использовать для начала эту статью, но с учётом того, что она 2-х летней давности:
    nichol.as/benchmark-of-python-web-servers
  • Питон в коробке – venv в python 3.3
    0
    Отлично.

    Всё замечание в статью.
  • Питон в коробке – venv в python 3.3
    +3
    Ох. Действительно работает. Проверил на py 2.7 в обычном virtualenv.

    Удивительно, сколько пользуюсь virtualenv, а узнал об этом только сейчас при выходе venv.
    Сейчас внесу коррективы, спасибо.
  • Работа с памятью (и всё же она есть)
    0
    Именно так он и поступает :) За подробностями можно заглянуть в ext/spl/php_spl.c (и поискать php_spl_object_hash), причём базовый хеш намерено рандомизируется в кажом вызове.

    Я таким образом хотел проиллюстрировать, что это один и тот же объект. Можно это понять и через var_dump, но как-то менее наглядно, плюс мне нужно было значение в виде переменной.
  • Работа с памятью (и всё же она есть)
    0
    Уточню, что созданный «чистый» объект будет жить до конца выполнения скрипта и будет всегда использоваться для создания новых объектов. Однако при хотябы каком-нибудь изменении будет создаваться копия, куда уже эти изменения и попадут.

    P.S Что-то по воскресеньям не могу излагать мысли в простом виде: )
  • Работа с памятью (и всё же она есть)
    +4
    Скорее всего потерянные 88 байт – это ещё одна «магическая» оптимизация php.

    При создании объекта, если в нём не было изменений («объект не понадобился») он затем используется, при создания объекта повторно. Звучит запутано, но вот пример:
    $a = new stdClass();
    echo spl_object_hash($a); //000000007843f529000000002ad1ffeb
    unset($a);
    echo spl_object_hash(new stdClass()); //000000007843f529000000002ad1ffeb


    Тоже самое без unset вернёт разные хеши объектов.

    При этом если использовать какой-то класс имеющий конструктор – объект не будет создан повторно (в хе таблице), но будет вызван повторно конструктор.

    Это будет иметь высасаный из пальца сайд эффект в случае если вам зачем-то нужно хеши созданных объектов где-нибудь хранить (зачем я не смог придумать):
    <?php
    class A {
    public function __construct() {
    echo ' [construct] ';
    AllA::addHash(spl_object_hash($this));
    }
    }

    class AllA {
    static protected $_hashes = array();
    static public function addHash($hash) {
    self::$_hashes[] = $hash;
    }

    static public function getHashes() {
    return self::$_hashes;
    }
    }

    echo 'new A: '; $a = new A();
    echo 'a hash: ', spl_object_hash($a), PHP_EOL; //new A: [construct] a hash: 000000001b77b1850000000057548e86
    echo 'unset a', PHP_EOL;
    unset($a);
    echo 'object with no referance hash: ',
    spl_object_hash(new A()), PHP_EOL;
    //object with no referance hash: [construct] 000000001b77b1850000000057548e86

    echo 'All hashes:', PHP_EOL, join(PHP_EOL, AllA::getHashes());
    //здесь будут два одинаковых значения 000000001b77b1850000000057548e86

  • Traits в php 5.4. Разбираем детали реализации
    0
    Нет, нет.

    По второму можно только хаками, например, в каждом типаже объявлять свойство, типа $__trait_[TraitName]. Затем, вытащив массив всех свойств класса, распознать подключённые типажи (это достаточно сделать для каждого класса только один раз). Возможно что-то можно получить рефлексией.

    Типажи скорее всего не для этого создавались, возможно более красивым решением будет иметь соотвествующий каждому типажу интерфейс или запись списка типажей класса в явном виде.
  • Traits в php 5.4. Разбираем детали реализации
    +3
    Спасибо, не нашёл этого ранее. Если я не ошибаюсь документацию по типажам выложили только вчера.

    Теперь можно утвердать наверняка, поведение ожидаемое.
  • Traits в php 5.4. Разбираем детали реализации
    0
    Да, насколько я понимаю разработчики языка именно эту проблему и решали.

    Конечно чистым множественным наследованием это назвать нельзя, т.к. без грязных хаков вызвать метод любого из родителей мы не можем, а сбор конечных методов для класса происходит в момент его инициализации, а не за счёт MRO, как например в python.

    Тем не менее некоторые не сложные задачи, которые можно было бы решить множественным наследованием типажи покрывают.
  • Traits в php 5.4. Разбираем детали реализации
    0
    Такое поведение не является особенностью типажей. Если взять «чистый» класс, внутри метода написать при объявлении переменной static, затем сделать класс наследованный от первого – поведение будет аналогичным, переменная будет инициализирована отдельно в родительском классе и в дочернем.

    Хуже всего, что это поведение, не документировано и на php.net я встречал комментарии, что это ошибка. А что не документировано, может быть изменено в последующем.
  • Traits в php 5.4. Разбираем детали реализации
    +1
    Пожалуй, это будет тема отдельного топика, но не раньше чем через полгода-год, когда я смогу с типажами поработать «в поле».
  • Игра Farmville заставила Mozilla проапдейтить Firefox
    0
    И кажется не только Опера.

    Про Оперу была статья на Хабре — habrahabr.ru/company/opera/blog/56887/, а в новом Сафари в меню Develop есть пункт «Disable Site-specific Hacks».
  • Диктофоны для книги рекордов
    +2
    Это была ирония :)

    Для чего будут использовать Сколково и так понятно. Я это могу оценить по размахам того, как в Зеленограде развивают «нано»-технологии. Офис компании, где я раньше работал занимает сейчас одна из таких «нано»-компаний, размах затеи виден издалека.

    Я из Зеленограда и работаю в местной IT-компании. Что действительно, по-моему мнению, нужно в Зеленограде или любой другой кремневой долине – это дороги, дешёвые офисы, инфраструктура, упрощённые схемы образования юр. лиц, грамотные налоговые льготы и пр. Всё остальное вырастет само, никакого нажима сверху и приглашённых зарубежных менеджеров не нужно.
  • Диктофоны для книги рекордов
    0
    Не спешите. В данный момент «кремневое поле» решено создавать не в Зеленограде или Долгопрудном, в которых уже есть какая-никакая научная база, а в Сколково, где по сути всё нужно делать с нуля.
    www.rb.ru/topstory/business/2010/03/25/082831.html
  • Google App Engine – масштабируемые приложения
    0
    От Александра: Под заголовком «одна секунда» речь идет о фактическом времени выполнения запроса, а не о затраченном процессорном времени. Как и многие вы введены в заблуждение русской версией документации, которая неактуальна. Одновременно с выходом SDK 1.3.3 поменялась система учета параллельных динамических запросов: code.google.com/intl/en/appengine/docs/java/runtime.html#Quotas_and_Limits

    Приложение может обслуживать 500 (и даже больше) запросов при среднем фактическом времени выполнения каждого запроса не более секунды. Сколько при этом процессорного времени будет затрачено — роли не играет.
  • Google App Engine – масштабируемые приложения
    +1
    От Александра: Про технику шардинга в GAE есть отличная статья:
    code.google.com/appengine/articles/sharding_counters.html
  • Google App Engine – масштабируемые приложения
    0
    От Александра: В группы объединяются именно объекты. Обычно они объединяются автоматически, когда между ними появляется отношение зависимости (owned relationship). Про отношения очень хорошо написано в документации: code.google.com/appengine/docs/java/datastore/relationships.html
  • Google App Engine – масштабируемые приложения
    +3
    От Александра: С ссылками на документацию, увы, есть проблемы. Система развивается, выходят новые версии SDK, но документация имеет всего одну версию, которая по-тихому (без каких-либо анонсов) меняется. Например, одновременно с выходом GAE SDK 1.3.3 была изменена система
    масштабирования приложений (1 секунда на обработку запроса). В Change Log об этом не было сказано ни слова, так же как и о том, что изменения кратко изложены в документации.

    Кроме того, часто информация в документации размазана и неполна — знания буквально приходится собирать по крупинкам, регулярно выходя далеко за её рамки. Что-то узнаешь через google groups, что-то приходится проверять с помощью кода. В основном статься собрана как раз из таких знаний. Собрана без картинок и примеров кода. Ну что ж. Учту на будущее.
  • Google App Engine – масштабируемые приложения
    +1
    От Александра: Для обоих. В статье приведены цифры для приложений с включенным биллингом.
  • JetBrains на Sun Tech Days 2010
    0
    Видео записи докладов ожидаются?
    На сайте Sun пока обещают только трансляции трёх потоков.
  • 5 стадий некомпетентности программиста
    +1
    Вероятно, автор (оригинала) опустил 6-ю стадию на которой программист пишет подобную статью: )
  • Допиливаем Django-admin бензопилой. Часть II — WYSIWYG
    +1
    В текущей редакции tinyMce есть стд. плагин paste, который автоматически очищает оформление при вставке из ворда. В том числе по CTRL+C, CTRL+V. Плагин был тотально переработан в версии 3.2.3 и работает вполне неплохо, хотя имеет некоторые проблемы в webkit.
  • Компьютерра закрывается
    +5
    Видно было, что журнал испытывал проблемы с финасами и популярностью. Сначала стало слишком мало рекламы, потом количество страниц уменьшилось с 32 до 28.

    Теперь закрывают. Очень жаль, это единственный бумажный журнал, который я читал.

    Понятно, что в современную эпоху блогов и RSS потоков читать о тех же событиях раз в неделю возможно не так интересно. Для меня журнал был хорош не этим, а своими колумистами и популярными статьями по современной науке, инф. безопасности, медицине, истории, философии, социологии.

    Буду скучать по Киви, Голубицкому, Козловскому, Шепневу, Андрееву и другим. Многие из них наверняка уйдут (или уже ушли) в Компьютерру-онлайн, буду пытаться ловить их там.
  • Мини-обзор или впечатления от покупки — Acer Revo R3600 (двухядерный Atom 330)
    0
    Поддержка нужна в ПО.
  • Мини-обзор или впечатления от покупки — Acer Revo R3600 (двухядерный Atom 330)
    0
    Да, тем более есть потенциальная возможность подключения к HDMI. (Пока не пробовал т.к. у меня вообще телевизора нет ;) )