• Подходы к версионированию изменений БД
    0

    Дополню пару слов про третий вариант.
    Мы используем https://github.com/db-migrate/node-db-migrate. Это аналог упомянутых инструментов на node.js. Умеет работать из коробки с mysql, postgresql, sqlite3 и mongodb.


    Из плюсов:


    • Миграции можно писать как в js файлах используя ORM, так и в sql файлах
    • Есть scopes. То есть можно сделать несколько областей (dev, prod, test) и раскидать все миграции по соответствующим скоупам. Это дает возможность в каждом окружении запускать только необходимые миграции.

    Из минусов:


    • нет pre- и post- скриптов. Но это не так критично.

    В итоге, у нас работа построена следующим образом:


    • Мы активно используем хранимки, в коде приложений нет никаких запросов, только вызов хранимок.
    • Всё, что касается БД (и структуру и хранимки) разрабатывают программисты БД.
    • Каждый разработчик БД внося изменения в структуру базы, сам пишет небольшую миграцию (это довольно удобно, у db-migrate есть cli, который подготавливает для вас костяк, остаётся только заполнить 2 sql файла с миграцией вверх и вниз)
    • У нас 2 репозитория касательно БД: в одном живёт вся структура с нуля, статические справочники и все хранимки (по одному файлу на каждую сущность, будь то таблица, вьюха, хранимка и прочее), в другом живут только миграции.
    • Дальше у нас руками написан небольшой шелл скриптик, который подготавливает оба варианта развертывания базы для продакшн.
    • В итоге, если БД разворачивается с нуля — используется один скрипт, если же происходит обновление существующей БД, то накатываются только отсутствующие миграции и перенакатываются хранимки (ну просто потому что хранимки завязаны на структуру таблиц и нет смысла их держать в миграциях, а проще после накатить актуальные сразу, которые точно будут консистентны со структурой)

    Как-то так, если вкратце.

  • Топ инструментов разработки для PostgreSQL
    –1
    Вот это да!!! Охренеть! Прям открыли глаза на такие полезные инструменты! А то мужики-то все напрямую в бинарных файлах базы всё правят и не знают про /* Подставить любой из вышеперечисленных инструментов */
    Простите, не сдержался :) Понедельник — день тяжелый!)
  • PHP-Дайджест № 98 – интересные новости, материалы и инструменты (28 ноября – 11 декабря 2016)
    +4
    Кстати, про Symfony Workflow Component Алексей Медведев делал доклад на девятой встрече SymfoniacsMSK! Вот видео
  • RAML 1.0: обзор нововведений
    0
    Народ, а покажите какие-нибудь реальные примеры API, описанных в RAML? И сгенерированные html'ки тоже было бы интересно увидеть.
    И Самый главный вопрос: как поддерживать актуальность RAML-спецификаций и кода, который этот самый API реализует? Насколько я понял, надо только ручками после изменений апишки править RAML…
  • [Москва] Встреча с разработчиками Kotlin
    +2
    Ну а для тех, кто хочет послушать про Котлин уже сейчас, буквально на днях я записал SDCast с Андреем Бреславом: https://sdcast.ksdaemon.ru/2016/03/sdcast-41/ :)
  • Строим сервисы на базе Nginx и Tarantool
    +1
    Кстати, про Tarantool, почему LUA, новый вид апп-серверов на базе nginx и tarantool'а и прочее мы общались с Костей Осиповым у меня в SDCast'е #20: sdcast.ksdaemon.ru/2015/03/sdcast-20
  • Почему одного AJAX недостаточно: протокол WAMP
    +1
    В Ratchet используется WAMP v1. Он уже считается устаревшим. Для v2, как верно заметил pronskiy надо юзать Thruway
  • Почему одного AJAX недостаточно: протокол WAMP
    +1
    Ну коли пошла такая пьянка, скажу про 3 моих реализации WAMP'а:
    • Wapmy.js — JS клиент для браузера
    • Wiola — Роутер на Lua на базе Nginx
    • Loowy — клиент на LUA

    А еще есть слайды с моего выступления на MoscowJS: «Пара слов про WAMP».
    Вдруг кому-то пригодится.
  • Документирование программ
    +2
    Честно говоря, вообще не согласен. У меня есть опыт перевода разного рода документации на маркдаун. При чем тех людей, которые никогда не были программистами. И они вполне себе освоились. И уж это точно проще, чем писать тэги html.
    Если интересно, вот моя заметка по этому поводу: Вы все еще пишете ТЗ в Word? — Тогда мы идем к Вам!
  • Документирование программ
    –2
    Да, как-то много очень неприятных ляпов в заметке. Это расстраивает.
  • Идея для подарка коллегам: кружка веб-разработчика
    +3
    Кажется это баловство… Но студентам-стажерам можно подарить, как стимул и шпаргалку два-в-одном
  • Плюсы и минусы работы в сфере IT, если ты девушка
    +7
    АА!!! Книжка про FreeBSD!!! У меня есть такая! :)
  • SDCast. Подкаст о разработке ПО и его окрестностях
    0
    Спасибо! Да, есть мысли и эту тему затронуть.
  • SDCast. Подкаст о разработке ПО и его окрестностях
    0
    Спасибо, приятно.
  • Жизненный цикл задач в Redmine для небольшой группы разработки. Наш опыт и полезные советы
    +1
    Кстати, вопрос: как вы учитываете вопрос временных трудозатрат? Одно дело, это оценка времени выполнения задачи постановщиком (менеджером, или ведущим разработчиком), другое — что скажет конечный исполнитель? И опять же, очень хочется понимать, сколько реально времени тратится на те или иные задачи, чтобы накапливать статистику и в дальнейшем иметь возможность пользоваться ей для более точных (адекватных) прогнозов. Есть возможность указывать временные трудозатраты прям в коммит-сообщениях, но даже это программисты нифига не делают. Да, можно требовать принудительно проставления, но это тоже не всегда верно/нужно…
  • Жизненный цикл задач в Redmine для небольшой группы разработки. Наш опыт и полезные советы
    0
    Интересная и познавательная статья. Мы тоже используем у себя связку redmine+gitlab, но несколько с другим подходом. Кому интересно, подробнее можно прочитать вот тут: blog.ksdaemon.ru/2014/02/v-poiskakh-optimalnykh-sredstv-soprovozhdeniya-razrabotki-chast-tretya-schaste-blizko/

    Понравилась идея с «Как проверить». Но у нас основополагающий документ — это ТЗ. И соответственно, тестировщики проверяют продукт на соответствие ТЗ. И если это не так — то или правится ТЗ под существующие реалии, либо правится софт, чтобы соответствовал ТЗ. Кстати, именно по ТЗ, тестировщики пишут тест-кейсы, которые так же фигурируют в задачах/багах.
  • Называем узлы сети: где черпать вдохновение?
    +7
    В продакшне — конечно же строго: serv1, gw2, db3 и т.д.
    А для разработческого небольшого зоопарка, конечно же творчески.
    У меня вот, например, серверы называются именами птиц/прочих летающих тварей: falcon, hawk, firefly, eagle и т.д. Скажешь, что БД на firefly'е и всем сразу все понятно.
  • Разработка для Microsoft SQL Server: Unix way
    0
    Клёвая идея! Надо будет поиграться на досуге.
  • Приглашаем на Moscow JavaScript Meetup 26 июня
    –1
    Те, кто ни разу не был, но очень хочет, могут перейти по указанной ссылке и прочитать что там написано ;)
  • PL/SQL решение для работы с Веб-Службами
    0
    Забавненько, а почему бы и нет. Хотя вообще для таких целей вероятнее всего нужен какой-ньть BPEL/SOA, на котором строится бизнес-логика.
  • Кидхак Prehistorik 2: анлочим уровни
    +4
    А я раньше просто брал playtools и делал себе FF жизней и играл. Кстати, у меня на даче еще жива моя 80386SX4, и там стоит Prehistorik 1 & 2 и еще куча легендарных игрушек, типа Golden Axe и я иногда их запускаю :)
  • Быстрое создание виртуальных хостов Apache при помощи bash скрипта
    +3
    cp default_site_skeleton.conf my_brand_new_site.conf
    vim my_brand_new_site.conf
    :%s/skel_site_name/new_site_name/g
    :wq
    service httpd restart
    не вариант?)
  • Наш опыт оптимизации nginx для раздачи видео-контента
    +6
    Я чего-то не понял: вся статья про то, как увеличить размер буфера в nginx?
  • Карты для всех, даром
    0
    Всячески плюсую за то, что нашлись и желание и силы все это реализовать и поддерживать. Здорово!
  • Наглядное представление активности коммитов SVN в терминале
    0
    Что-то вы такое странное говорите… Во-первых, в гите есть submodules и subtree, если вы имеете в виду возможность работать с поддеревом одного большого проекта, как с отдельным компонентом, собственно для этого они и были придуманы. Во-вторых, если у вас и вправду бАльшое дерево, то переключение между ветками в SVN/CVS — это просто мука, долго и медленно. Впрочем, это вполне очевидные недостатки… Да и вообще, я не нашел ни одного плюса у svn по сравнению с git/hg. Но это, как говорится, уже совсем другая история. :)
  • Наглядное представление активности коммитов SVN в терминале
    +4
    А что, кто-то еще юзает svn?))

    П.С. Ладно-ладно. Это была шутка. Понятно что есть куча легаси-кода и народу просто лень переводить все на git/hg. Но в любом случае, ни разу не было потребности увидеть активность коммитов в терминале…
  • Возвращаем старый Web Inspector в Safari 6
    0
    да :( у меня тоже отвалилось…
  • Возвращаем старый Web Inspector в Safari 6
    0
    Мда… Видимо сильно устал в пятницу вечером… Накосячил где-то… Заломился сейчас на домашний комп, вернул все как положено, сделал все еще раз — все получилось. Извиняюсь за беспокойство.
  • Возвращаем старый Web Inspector в Safari 6
    0
    Файлики скопированы в /System/Library/PrivateFrameworks/WebInspector.framework/Versions/Current/Resources/
    В /System/Library/PrivateFrameworks/WebInspector.framework/Versions/A/Resources/ все старое.
    Вопрос: там что-то является ссылкой? A или Current кто-то на кого ведет?
  • Возвращаем старый Web Inspector в Safari 6
    0
    Попробую еще разок с чистого листа ручками.
  • Возвращаем старый Web Inspector в Safari 6
    0
    Если запускать через ваш инсталлер — вообще ничего не меняется.
    До:
    [11:12] cmd#:5002
    kostik@kostik: ~> ls /System/Library/PrivateFrameworks/WebInspector.framework/Versions/A/Resources/
    Images/		Main.css	Main.js		ca.lproj/	da.lproj/	el.lproj/	es.lproj/	fr.lproj/	hr.lproj/	it.lproj/	ko.lproj/	no.lproj/	pt.lproj/	ro.lproj/	sk.lproj/	th.lproj/	uk.lproj/	zh_CN.lproj/
    Info.plist	Main.html	ar.lproj/	cs.lproj/	de.lproj/	en.lproj/	fi.lproj/	he.lproj/	hu.lproj/	ja.lproj/	nl.lproj/	pl.lproj/	pt_PT.lproj/	ru.lproj/	sv.lproj/	tr.lproj/	version.plist	zh_TW.lproj/
    

    После:
    [11:55] cmd#:5003
    kostik@kostik: ~> ls /System/Library/PrivateFrameworks/WebInspector.framework/Versions/A/Resources/
    Images/		Main.css	Main.js		ca.lproj/	da.lproj/	el.lproj/	es.lproj/	fr.lproj/	hr.lproj/	it.lproj/	ko.lproj/	no.lproj/	pt.lproj/	ro.lproj/	sk.lproj/	th.lproj/	uk.lproj/	zh_CN.lproj/
    Info.plist	Main.html	ar.lproj/	cs.lproj/	de.lproj/	en.lproj/	fi.lproj/	he.lproj/	hu.lproj/	ja.lproj/	nl.lproj/	pl.lproj/	pt_PT.lproj/	ru.lproj/	sv.lproj/	tr.lproj/	version.plist	zh_TW.lproj/
    

  • Возвращаем старый Web Inspector в Safari 6
    0
    Да собсно ничего не происходит — как открывался новый инспектор, так и открывается.
  • Возвращаем старый Web Inspector в Safari 6
    0
    А у меня вот что-то не заработало :( пробовал и через инсталлер и руками. Макось 10.8.2/Сафари 6.0.2…
  • Возвращаем старый Web Inspector в Safari 6
    0
    АААА!!! Как я ждал такого решения! Самому докопаться времени так и не нашлось. Спасибо огромное!!!
  • Как подобрать SSL-сертификат
    +1
    боятся хабраэффекта )))
  • Проверь свой T-SQL код!
    +2
    В Тоаде есть такая штука как PL/SQL Code Analysis. Там тоже показываются ошибки, предложения и замечания.
    Вот видео про эту фичу.
    + В самом оракле 11g есть такая штука как PL/Scope. С помощью нее можно изучать код на предмет определения используемых переменных, местах вызовов и зависимостей. Подробнее можно прочитать у xtender, тут.
  • Проверь свой T-SQL код!
    0
    Отлично! Знаю про такие штуки для оракла, а для мс-скуля как-то не встречал. Спасибо за инфу.
  • Документальный фильм «Тим Кук. Гениальный руководитель легендарной компании»
    0
    Посмотрел с удовольствием! Было интересно и любопытно. Спасибо!
  • Как Вы храните закладки сайтов?
    +1
    Нуу вы наверное не знаете о такой штуке как «Duplicate bookmarks remover» у них ;) очень помогает. У меня много папок и иногда забываешь и добавляешь одну закладку в несколько папок — а этот сервис позволяет легко их задетектить и удалить лишнее.
  • Как Вы храните закладки сайтов?
    +6
    А вот я уже сто лет как пользуюсь XMarks. Конечно здорово, что возможности синхронизации сейчас есть в каждом уважающем себя браузере, но я, как веб-разработчик, пользуюсь разными браузерами, и мне просто удобно когда во всех браузерах у меня одинаковые закладки. Это порой экономит время на переход в основной браузер и открытие закладки там. Какой браузер сейчас под рукой — в том и можно вот прям сейчас все посмотреть, добавить. Это удобно.