• Git. Коммиты на сервер?

    @mithraen
    1. Создать на сервере репозиторий:
    $ ssh servername
    $ git init-db --bare myreponame

    2. Сделать клон репозитория локально:
    $ git clone servername:myreponame

    3. Сделать так, чтобы по push в серверный репозиторий автоматически синхронизировался рабочий каталог:
    $ ssh servername
    $ cd myreponame/hooks
    $ cat > update
    #!/bin/sh -e
    refname="$1"
    oldrev="$2"
    newrev="$3"

    gitdir=`pwd`

    if [ "$refname" = «refs/heads/master» ]; then
    tmpdir=`mktemp -d`
    cd "$tmpdir"
    git \
    --git-dir="$gitdir" \
    archive --format=tar "$newrev" | tar x
    rsync -a --delete-after "$tmpdir/" /var/www/что-там-надо/
    rm -rf "$tmpdir"
    fi

    exit 0

    4. Не забыть сделать этот скрипт исполняемым:
    $ chmod +x update

    5. Делаем первый коммит: на локальной машине заходим в репозиторий и делаем:
    $ touch test
    $ git add test
    $ git commit -m 'test' test
    $ git push

    6. Проверяем что у нас получилось в рабочем каталоге, радуемся жизни
    Ответ написан
    4 комментария
  • Книга по программированию, оказавшая наибольшее влияние

    @fllln
    Code Complete, на 1/6 части суши также известная как Совершенный Код.
    Ответ написан
    Комментировать
  • Какая IDE для Ruby?

    @mpetrunin
    VIM + плагины: habrahabr.ru/blogs/ruby/68013/
    Ответ написан
    Комментировать
  • ИП: как вы ведёте бухгалтерию?

    @mitrych
    У меня был опыт работы с оффлайновой бухгалтерской конторой. Очень плохие воспоминания. Обычно, тариф зависит от количества операций в месяц. У ИП (если он не розничной торговлей занимается) их совсем немного. Поэтому таким конторам не особенно интересно заниматься бухгалтерией ИП. У них большая текучка кадров, низкая квалификация сотрудников. Как то раз мне четыре раза платежку они оформляли неправильно.

    В наше время с оффлайн конторой для бухгалтерии рекомендую не связываться. Это дополнительные проблемы.

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

    e-kontur.ru не видел ни разу. Да и смотреть пока не хочется — мое.дело вполне устраивает.
    Ответ написан
    3 комментария
  • Как сделать плавное перемещение?

    homm
    @homm
    В код сильно не вникал, бью наугад:
    Возможно вы говорите об изинге (easing).
    Если представить время от начала анимации до конца как промежуток от 0 до 1, а начальное положение объекта (или другое свойство) и конечное тоже как промежуток от 0 до 1, то функцией изинга называют функцию, дающую в соответствие каждой точке первого промежутка точку второго.

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

    Чтобы придать анимации более плавный вид, нужно имитировать ускорение. В JQuery функция изинга по-умолчанию имеет вид (упрощенно):
    function swing(t) {
    	return (-Math.cos(p*Math.PI)/2) + 0.5;
    }
    

    Т.е. используется синусоидальная зависимость.

    Вот примеры того, как работают другие функции изинга, подключаемые сторонним плагином и не входящие в состав jquery:
    www.lemonsanver.com/jQuery/easingAnimationPlugin.html

    Для того, чтобы воспользоваться таким-же методом работы где-бы то ни было, нужно организовать процесс следующим образом:
    1) При старте анимации известна её продолжительность и записывается время старта анимации
    2) также известно конечное значение анимируемого параметра (или нескольких), записывается их начальное значение.
    3) Периодически вызывается функция анимации (таймер, или цикл). Из текущего времени, времени начала анимации и требуемой продолжительности она находит время t — число от 0 до 1.
    4) t передается в в функцию изинга
    5) Из полученного значения и данных о начальных и конечных значений параметров высчитываются текущие значение.
    6) Пункт 3) повторяется, пока время анимации не истечет.
    Ответ написан
    2 комментария
  • Способ присваивания переменным дефолтных значений?

    Bonch
    @Bonch
    Лично мне более приятен второй вариант:

    argument = argument || 'value';


    Жалко, что в JS нельзя сделать так (как в Ruby):

    argument ||= 'value';
    Ответ написан
    1 комментарий
  • Объясните, зачем нужны документо-ориентированные БД (MongoDB)?

    mocksoul
    @mocksoul
    Смысл ряляционных баз когда то был лишь в том, чтобы дать ответ на _любой_ вопрос за _любой_ промежуток времени. Т.е. например есть какая-то бд в компании и надо сделать какой-нибудь отчёт.

    В интернет-приложениях все несколько по иному. Чаще всего запросы к БД одинаковые за редким исключением (поиск). BigTable и прочие завязываются на этот принцип, создавая индекс на нужные запросы при изменении данных асинхронно.

    Таким образом, после изменения данных сразу обновляются и индексы для нужных запросов. В SQL индексы тоже есть, но они на более низком уровне.

    MongoDB строит индексы автоматически при первом запросе. Посему это очень похоже на схему lang <-> memcache <-> sql. Но на порядок быстрее, т.к. сам mongodb быстрее чем memcached (я сам сие не проверял ещё и верю с трудом, но все в один голос твердят что это так).

    Второй бонус — более простая репликация. В частности, у того же mongodb концепция master-slave и шардов находится в самом сердце.

    Третий бонус — map/reduce для обработки данных. Выполняются на встроенном языке (у mongodb это spidermonkey, т.е. яваскрипт).

    В общем и целом изначально написанное на mongodb приложение будет теоретически быстрее чем SQL вариант. По крайней мере с быстрой реализацией, наподобие MongoDB.
    Ответ написан
    2 комментария
  • Где найти стандарт работы getElementById?

    Логично предположить, что из-за того, что предполагается, что в документе все id уникальные, то при поиске по id найдя его поиск прекращается. Смысл перебирать элементы дальше, если по стандарту второго такого быть не может.
    Ответ написан
    Комментировать
  • Поиск MySQL, как?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Ответ написан
    Комментировать