JIRA SD+JETI: Request Number in the Email “From” Field

The vast majority of our clients continue to interact with the support team through the email channel. By default, JIRA looks for the request ID in the subject and headers of the message. So, if a message contains in its subject something like “[SD-123456] Please help me”, JIRA will look for a request #SD-123456 and put the message body in this request.

Sometimes the strategy by default in JIRA SD doesn’t help to mitigate duplicate requests

Seems like this strategy has some flaws and doesn’t prevent from creating new requests on the same matter.

In my past experience, I had been using Wrike for managing teamwork. In Wrike, you receive messages from an email address of special format like support+123456@domain.com. So, if you reply to support+123456@domain.com, your message will be easily sorted to request #123456 preventing any mistakes.

In this article, I’m explaining how to make it work in the same manner in JIRA.

Formatting reply-address for email notifications of JIRA SD helps with the following:

1. Avoid sorting mistakes: placing a comment in a wrong request, opening duplicate reqeusts

2. Comments of non-customers will be correctly sorted, still preventing them from disclosing other comments in a request.

3. Service Desk agents can easily forward any message to this special address if they want just attach to it a bunch of files from a client. Great for those who interacts with SD from a smartphone.


Mail Server Configuration

Basically, you have to configure support for Address Tags in your mail server. I used this article as an instruction: https://www.stevejenkins.com/blog/2011/03/how-to-use-address-tagging-usertagexample-com-with-postfix/

Most of the documentation says that you just need to set Postfix’s$recipient_delimiter variable to the (set of) character(s) you want to use as a delimiter, like recipient_delimiter = +. That’s fine if you’re just using local delivery. But when you use Dovecot’s LDA (or other LDA), you should also modify how it’s called in master.cf.


JIRA Configuration

Setup Incoming Mail Server:

Pay attention: We use Email This Issue add-on as a handler

Create a Mail Handler in JIRA Email This Issue

Create a new Field Context in JIRA Email This Issue

If there are digits in the recipient field of an email, then treat it as a request ID

Create a context to make JIRA send notifications from a specially formatted email address:

So, the FROM address will be like “jiratest+123456@infinet.ru”

Since version the add-on JIRA Email This Issue is able to use a reg-exp rules in the Email Address Exclusion Field. Why it is useful? When your customers send a message to your specially-formatted address “support+123456@domain.com”, JETI will create a new user with username “support+123456@domain.com”. While there is no harm in it, still I prefer to keep my user database clean of fake users.

Deny JETI to create users for each request

Test it!

  • Send a message to support+123456@domain.com, where 123456 is ID of an existing issue. Your comment should be placed in the request.
  • Send a message to support+123456@domain.com, where 123456 is ID non-existent. A new request should be created.
  • Send a message to support+123456@domain.com from a customer who is not a participant of request #123456. A comment should be added to this request, but from a default user which was configured in JETI.

Добавления новых цветов для раскраски ячеек в таблицах Atlassian Confluence

Нас очень расстраивало, что в Конфле всего пять цветов для раскраски ячеек таблиц. Просьба об этом направлена в Атлассиан в 2012 году –  и лишь в ноябре они выпустили анонс, что выкатят в ближайшие полгода фичу с новыми цветами.

Мы решили не ждать полгода, потому что там три строчки поменять.


  • Скачай файлы atlassian-editor-6.0.5.jar и confluence-editor-6.0.5.jar из /opt/atlassian/confluence/confluence/WEB-INF/atlassian-bundled-plugins  (имя файла будет отличаться в зависимости от вашей версии конфлы, размещение папки будет зависеть от того, куда вы её установили)
  • Открываешь архиватором файл atlassian-editor-6.0.5.jar и достаёшь файл atlassian-editor-6.0.5\css\editor-toolbar-split-buttons.less
  • В него нужно добавить:
#table-highlight-group.highlight-orange .highlight-indicator,#table-highlight-group .table-highlight-picker a.highlight-orange{background-color:#ffd3b6}
#table-highlight-group.highlight-violet .highlight-indicator,#table-highlight-group .table-highlight-picker a.highlight-violet{background-color:#deddfa}
#table-highlight-group.highlight-brown .highlight-indicator,#table-highlight-group .table-highlight-picker a.highlight-brown{background-color:#bd8e68}
#table-highlight-group.highlight-pink .highlight-indicator,#table-highlight-group .table-highlight-picker a.highlight-pink{background-color:#997a8d}
#table-highlight-group.highlight-hotred .highlight-indicator,#table-highlight-group .table-highlight-picker a.highlight-hotred{background-color:#f96161}
#table-highlight-group.highlight-hotgreen .highlight-indicator,#table-highlight-group .table-highlight-picker a.highlight-hotgreen{background-color:#61f961}
  • Достаём файл confluence-editor-6.0.5\tinymce3\plugins\customtoolbar\table-toolbar.js и в нём меняем
    var colourClasses = ["grey", "red", "green", "blue", "yellow", ""];
    var removeColour = [false, false, false, false, false, true];

    var colourClasses = ["grey", "red", "green", "blue", "yellow", "orange","violet", "brown","pink","hotred", "hotgreen", ""];
    var removeColour = [false, false, false, false, false,false, false,false,false, false,false, true];

    Достаём файл confluence-editor-6.0.5\tinymce3\plugins\customtoolbar\table-toolbar-min.js
    заменяем на
    C=[false, false, false, false, false,false, false,false,false, false,false, true];c.each(["grey", "red", "green", "blue", "yellow", "orange","violet", "brown","pink","hotred", "hotgreen", ""]

Теперь эти извлечённые файлы обратно кладём в jar-архивы с помощью архиватора.

Удаляй кэш-папку /var/atlassian/application-data/confluence/plugins-osgi-cache

Закачивай изменённые jar-файлы обратно на сервер.
Запускай Confluence
Затем в General Configuration в админке, выбираем раздел Stylesheet и добавляем в него
table.confluenceTable th.confluenceTh.highlight-orange,
table.confluenceTable th.confluenceTh.highlight-orange>p,
table.confluenceTable td.confluenceTd.highlight-orange,
table.confluenceTable td.confluenceTd.highlight-orange>p {
table.confluenceTable th.confluenceTh.highlight-violet,
table.confluenceTable th.confluenceTh.highlight-violet>p,
table.confluenceTable td.confluenceTd.highlight-violet,
table.confluenceTable td.confluenceTd.highlight-violet>p {
table.confluenceTable th.confluenceTh.highlight-brown,
table.confluenceTable th.confluenceTh.highlight-brown>p,
table.confluenceTable td.confluenceTd.highlight-brown,
table.confluenceTable td.confluenceTd.highlight-brown>p {
table.confluenceTable th.confluenceTh.highlight-pink,
table.confluenceTable th.confluenceTh.highlight-pink>p,
table.confluenceTable td.confluenceTd.highlight-pink,
table.confluenceTable td.confluenceTd.highlight-pink>p {
table.confluenceTable th.confluenceTh.highlight-hotred,
table.confluenceTable th.confluenceTh.highlight-hotred>p,
table.confluenceTable td.confluenceTd.highlight-hotred,
table.confluenceTable td.confluenceTd.highlight-hotred>p {
table.confluenceTable th.confluenceTh.highlight-hotgreen,
table.confluenceTable th.confluenceTh.highlight-hotgreen>p,
table.confluenceTable td.confluenceTd.highlight-hotgreen,
table.confluenceTable td.confluenceTd.highlight-hotgreen>p {

Всё, проверяем, на всякий случай можно сбросить кэш браузера.

Добавление событий в Team Calendar из странички в Atlassian Confluence

Допустим, вы купили себе Confluence и используете его для планирования совещаний. Потом вы захотели иметь календарь всех совещаний, и чтобы он напоминал сотрудникам о них. И купили Team Calendar.

Теперь, чтобы запланировать совещание, вам нужно сначала создать страничку в Confluence, а потом руками завести совещание в Team Calendar.

На данный момент, нет готовой интеграции для автоматического создания событий из страничек, и REST API не опубликован.

Continue reading Добавление событий в Team Calendar из странички в Atlassian Confluence

Мой инстаграм

Анна Васильевна после прочтения книги Пелевина про лампу Мафусаила, чекистов и масонов, высказала свое мнение: Пелевин словно многосерийная компьютерная игра стиснут в системе координат, одна ось которой названа именем древнеегипетского бога мудрости Тот, а на другой оси отмечена актуальность графики, что есть ключевое мерило качества современного развлекательного гейм (с буквой “м”, что важно) продукта. Самой важной для читателя будет та книга Пелевина, что он прочитал в юности. Потому недостаточно сидеть в точке “Пелевин — Тот”, а необходимо следить и за тем, чтобы графика была на уровне, тогда текст зайдёт продвинутым школьникам, желающим глянцевым томиком отгородиться от так называемых обычных детей. Как сонная сентябрьская муха Пелевин пытается выбрать ось, чтобы зацепиться за неё лапками и отдохнуть, тогда как лучшие его вещи родились всё–таки в полёте. #пелевин #чтение

О Камю

Вообще, я думал, что всякие такие Камю или там Буковски — это книжки для гуманитаров, которые только и делают, что сидят на ступенях университета и читают эти свои Камю, Прусты или Джойсы.

А стал читать я его в университете, потому что предполагалось тусоваться в компании жостких гуманитариев. И я обдумывал такую миниатюру, как в апогее вечера я вдруг вскакиваю и говорю “Вот вы думаете, что все технари тупые и из книжек читают только мануалы! А вот я — осилил Камю!” и даже бы процитировал бы абзац.

И на следующий день в их твиттерах появись бы записи “живьём видела технаря, который не только мог говорить, но ещё и вызубрил для нас Камю!”

С такой мыслью я закачал свой телефон этим Камю, а потом читал и рыдал, читал и рыдал, право слово.

Вот мой любимый эпизод (целиком — http://www.lib.ru/INPROZ/KAMU/padenie)

Меня в тот раз обогнал мотоциклист, маленький, сухонький человечек в очках и в брюках гольф. Обогнал и остановился как раз передо мной, выехав на красный свет. Мотоциклист выключил мотор, а мотор вдруг заело, и он тщетно пытался запустить его.

Зажегся зеленый свет, я с обычной моей учтивостью деликатно прошу мотоциклиста: “Подвиньте, пожалуйста, свою машину, дайте проехать”. А этот маленький человечек разнервничался, бьется над своим заглохшим мотором.
И отвечает мне по всем правилам парижской вежливости, чтобы я убирался ко всем чертям.

Я настаиваю все так же деликатно, но уже с ноткой нетерпения в голосе. Тотчас же я услыхал в ответ, что меня надо вздрючить как следует. А позади уже раздаются нетерпеливые гудки. Тогда я твердым тоном прошу мотоциклиста держать себя прилично и учесть, что он мешает уличному движению.

Раздражительный человечек, несомненно придя в отчаяние от злостного упрямства своего мотора, сообщил мне, что если я желаю “схлопотать по морде”, то он с большим удовольствием надает мне оплеух. Такой цинизм возмутил меня, и я вылез из машины, намереваясь надрать грубияну уши. Я отнюдь не считал себя трусом (мало ли что мнишь о себе), я был на голову выше своего противника, моя мускулатура всегда превосходно служила мне.

Мне и теперь еще кажется, что трепку, скорее всего, задал бы я, а не этот поскребыш. Но едва я вылез на мостовую, тотчас собралась толпа, из нее вышел какой–то тип, бросился ко мне и заявил, что я последний негодяй и что он не позволит мне ударить человека, который не может слезть с мотоцикла и, следовательно, находится в невыгодном для себя положении.

Я повернулся к этому мушкетеру, но, по правде сказать, даже и не увидел его. Едва я повернул голову, как мотоцикл затрещал во всю мочь, а мотоциклист изо всей силы дал мне по уху. Не успел я сообразить, что произошло, как он умчался. Растерявшись, я машинально двинулся к д’Артаньяну, но тут начался отчаянный концерт — за моей машиной уже выстроилась вереница автомобилей.

Снова зажегся зеленый свет. И тогда я, все еще растерянный, вместо того чтобы оттаскать дурака, набросившегося на меня, покорно забрался в машину и поехал, а дурак послал мне вдогонку: “Что, съел?” — и я все еще помню об этом оскорблении.
конец цитаты.

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

В отвратительном настроении пребываешь в этот период, а эпизод постоянно перед глазами стоит.

Матрасный пузырь

Внезапно на сайте Psychology Today ознакомился с материалом “Чего это так много матрасных магазинов в США?”

Статья принесла мне массу, как это сейчас говорится, инсайтов. В связи с чем, рекомендую и вам почитать, чтобы тоже получить свою порцию, как это сейчас говорится, инсайтов. В двух словах, самые интересные идеи:

  1. Матрасных магазинов в США примерно как Старбаксов. А Старбаксов – 12 тысяч штук.
  2. Продуктовые магазины делают около 5% прибыли. Матрасная мафия зарабатывает 40-50% на дешёвых матрасах, и до 900% на люксовых (те, которые 3000$ стоят)
  3. Матрасники открывают свои магазины рядом друг с другом, создавая агломерации матрасных магазинов. Это интересный момент – они не ищут районы, где нет конкурентов, а, наоборот, идут туда, где конкурентов много. Потому что покупателю удобнее поехать в “матрасный район” и походить по разным магазинам. Таким образом, увеличивается трафик желающих заиметь матрас!
  4. Американцы не любят покупать матрасы онлайн.
  5. Производители матрасов запаковывают свой товар под десятками различных брендов, под каждую розничную сеть отдельно. Ты приходишь в магазин, находишь там устраивающий тебя “Суперматрас-1000”, идёшь в другой магазин, чтобы сравнить цену, и обнаруживаешь, что в других магазинах “Суперматрас-1000” не продаётся. Ну ладно, в Суперматрасе-1000 был гелевый поролон с двойной памятью, а у вас есть гелевый поролон с двойной памятью? Нет, у нас есть матрасы с Осанкопедическим сеном, а также Смарт-климат-пенопластовые.
  6. Когда американцы женятся, они покупают гигантский матрас. Потом, когда разводятся, покупают ещё два односпальных. Похоже, матрасная мафия заинтересована в росте разводов!

Музыка как стартап, или почему iTunes — зло

Это перепост моей статьи с habrahabr.ru

Меня зовут Василий Густелёв, я один из авторов проекта «Музыка Невидимых Людей». Когда нашу музыку не взяли ни на один лейбл, мы создали свой собственный. Выпуская по десятку релизов в год, быстро начинаешь что-то понимать. Оказывается, музыкантам многому можно учиться у стартаперов, а релиз на iTunes — самое распоследнее, чем следует заниматься независимому артисту.

Послушайте нашу музыку, пока читаете

Вообще, если ты независимый музыкант, то размещение на iTunes будет стоить тебе денег. К примеру, на Tunecore цена размещения альбома составляет 30$ за первый год и 50$ за каждый последующий. Но при этом 100% прибыли музыкант забирает себе. Просто выложить свой каталожик сочинённого за долгие годы выходит весьма накладно.
Поэтому, как только мы нашли людей, которые организовали нам публикацию за 30% роялти — мы сразу же открыли лейбл и всем своим знакомым музыкантам предложили вывалить в сеть содержимое архивов. Нехитрая математика подсказывает, что этот вариант выгодней, если доходы с альбома не превышают 160$ в год.

Страшная тайна вот в чём: за четыре года работы лейбла с айтюнса мы лишь один раз вывели четыре тысячи рублей. В остальном релизы зарабатывают в пределах пятисот рублей в год. Площадки вроде Bandcamp дают значительно более серьёзные суммы! И, глядя на все эти отчёты, я хочу с уверенностью вам заявить: единственная польза от айтюнса для независимого музыканта — показывать в баре подружкам, что вы действительно музыкант. Назовём это репутационным моментом. Если девушки в барах и так доверяют вашему статусу как музыканта, лучше вообще не размещать музыку на iTunes.

Давайте посмотрим на деятельность инди-группы, как на стартап. Вы выпускаете товар — музыкальные композиции. И некоторые из вас на основе этого товара оказывают услугу «живая музыкальная программа». Как же нам обеспечить постоянный рост продаж? Я уверен, что основной стратегией инди-музыканта должен быть сбор базы подписчиков. База подписчиков — это ключевой ресурс, и он является главным показателем успешности группы.

Что такое база подписчиков? Это список любых контактов людей, которым нравится ваша музыка, и получив сообщение от вас, они его не выкинут в спам. Мы собираем следующую инфу: имя, телефон, емэйл, адрес в соц сетях и город.

Как пользоваться базой подписчиков?
Когда у вас выходит новая музыка — вы сообщаете это всей базе. Хорошо бы уметь проверять, что сообщение доставлено.
Когда у вас анонсирован концерт — вы выбираете из базы подписчиков с нужного города и сообщаете им.
Если у вас собрана хорошая коллекция контактов, вы сможете обеспечивать определенное количество продаж билетов, и орги будут обожать вас за это. В небольших клубах орги сами не имеют базы своих регулярных посетителей!

Как собирать базу подписчиков в онлайне? Напишу наши идеи:
1. Очевидный путь — это соц сети. Знакомимся через ЛС с людьми, которые вступили в ваш паблик/встречу или лайкали музыку, и если они идут на контакт — заносим в список.
2. Даём скачивать музыку бесплатно, если оставляют свой email. На сайте bandcamp эта функциональность имеется по-умолчанию!
3. Устраиваем онлайн конкурсы, в которых можно поучаствовать оставив свои контакты.

Как собрать базу подписчиков в оффлайне?
На самом деле, никто из моих знакомых музыкантов не собирает списки подписчиков в оффлайне, а только процеживают вступивших во встречи. Между тем, люди, которые подняли свою пятую точку с дивана и пришли к вам на концерт — это самая лояльная аудитория. Если им вкатил концерт, они ваши полностью. В первую очередь, именно они должны составлять основу вашей базы. Ищите способы собрать их контакты! Вот несколько идей:
1. Просто раздавайте на входе анкету, в которой будут вопросы типа «какая песня больше понравилась», и конечно контактные данные. Потом не забудьте прислать им письмо с благодарностью!
2. Давайте скидку на мерч если заполняют анкету
3. Разыгрывайте призы среди тех, кто заполнил анкету
4. Собирайте контакты под предлогом, что пришлете фотки с концерта
5. Если записываете концерт, предлагайте оставить контакты желающим получить запись раньше всех

Если вы сделали концерт и не собрали там новых подписчиков — я вообще не понимаю, зачем вы делали концерт.

Почему айтюнс — зло?
Потому что вы не знаете, кто слушает вашу музыку. Какие-то анонимные люди за полрубля послушали ваши треки, и от этого ни денег ни удовольствия. Очень сложно на айтюнсе попасть в какой-то плейлист или хит-парад, чтобы с вами познакомилась какая-то новая аудитория. Инди-музыка маловероятно попадёт в рекомендации. Вы лежите там на дальней полке, и вас будут слушать только те люди, которых вы направили туда сами. При этом, айтюнс кучу денег забирает себе!
Теперь сравните с bandcamp: вы знаете почту каждого, кто скачал вашу музыку. Вы тут же получаете бабки с каждой продажи, и пропорция там весьма честна. И вы можете продавать мерч через ту же платформу.

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

Бонус-трек: как принимать деньги на бендкемпе?
Меня часто спрашивают, как принимать бабло на бендкемпе. Проблема в том, что бендкемп не принимает оплату в рублях, а на территории нашей страны запрещено продавать что-то в валюте. Paypal очень строго выполняет законы, и запрещает гражданам РФ продавать музыку за валюту. Выход очень прост: обмануть Paypal и сделать вид, что вы европейцы. В Европе гражданам можно продавать их музыку за любую валюту. Конкретно мы сделали так: наш партнёр живёт в Бельгии, у него там есть местная пластиковая карта, к которой он привязал Paypal. Именно этот аккаунт он привязал к Bandcamp. Иностранцы просто рассчитываются в валюте, а если покупку совершает русский, то никакого нарушения не происходит: он покупает как-бы из-за рубежа. Потом мы эти деньги как-нибудь переводим себе.
Главная проблема в том, что у обычных русских людей не всегда есть paypal 🙁 И ваши русские фанаты могут затрудниться купить вашу музыку. Обсудим это в следующий раз.

Все наши альбомы можно скачивать бесплатно, указав емэйл: потому что база подписчиков ценней долларов. Здесь стоит вновь вернуться к аналогии со стартапами. Вспомните: множество стартапов типа дропбокса довольно долго давали свой сервис полностью бесплатно, пока не накопили миллионную базу подписчиков. Вы должны действовать точно также, друзья!

Резюмирую: собирайте базу подписчиков, пользуйтесь bandcamp или подобными сервисами, айтюнс — зло.

Творческих вам успехов!

P.S. буквально завтра Музыка Невидимых Людей начинает запись нового альбома.

Управление рок-группой

Это репост моей статьи с habrahabr.ru

Меня зовут Василий Густелёв, я один из авторов проекта «Музыка Невидимых Людей». Я хочу рассказать вам о способах управления, которые я применял во время создания нашего нового альбома. Вы не найдете в статье никаких ноу-хау, скорее это пример использования популярных методик.


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

Идея начала рождаться после просмотра видео, где господа играют в каком-то ангаре:

Уточняя требования к помещению, мы сошлись на том, что нам важны высокие потолки и большая площадь комнат. Пришла мысль, что можно поискать коттедж со вторым светом, в нём можно жить и творить, как это делали Led Zeppelin в своём Bron Yr Aur. И как только эта мысль к нам пришла, она больше не давала нам покоя, настолько она была прекрасна.

Стали искать такой коттедж, и вдруг на нас вышел директор строительной фирмы и предложил отличный вариант: два дома с черновой отделкой, которые у него плохо продаются. Электричество, вода и туалет есть, остальное мы достанем.

Опытный звукорежиссёр у нас наличествует в составе группы.
Проблему с оборудованием частично решали обращаясь к руководству музыкальных магазинов и репетиционных баз. Часть очень дорого оборудования нашлась просто у знакомых: многие мужчины в детстве мечтали быть рок-музыкантами, затем они стали директорами бизнеса и на вырученные деньги купили себе дорогой винтажный усилитель, в надежде когда-нибудь в свободное время на нём играть. В итоге, он обычно украшает комнату этого мужчины.


Имеются два рядом стоящих коттеджа в черновой отделке. В распоряжении — две недели июля. Необходимо записать музыкальный альбом из десяти песен.

Подготовка к работе
Для управления задачами я использую Wrike. Сначала задачи накидываются лаконично, образуя укрупнённый план:

  • Музыкальное оборудование
  • Дополнительное оборудование
  • Мебель
  • Бытовые вещи
  • Список личных вещей для участников группы
  • Организовать интернет в студии
  • Въезд и установка
  • Сочинить музыку
  • Записать музыку
  • Обеспечить условия проживания
  • Сбор и выезд

Затем все задачи необходимо детализировать до мелочей. Я применяю такой способ: закрываю глаза и начинаю представлять один из рабочих процессов, проговаривая его вслух. Пример:
Я захожу в студию. Беру бас-гитару. Подключаю её шнуром в процессор, затем ещё одним шнуром в микшерский пульт. Процессор подключен в электрическую розетку.
В результате такого осмысления становится понятно, что должно быть из оборудования.

Другой пример:
Я утром просыпаюсь и иду умываться, затем туалет, затем завтрак, затем репетиция, затем обед, затем работаем в интернете, затем запись, затем ужин, затем я ложусь спать.
Обдумывая каждый процесс, мы понимаем, что у нас возникает процесс дежурства на кухне, закупки и хранения продуктов, определенная мебель. Размышляя дальше, становится понятно, что можно прикинуть список продуктов и закупать их не в деревне, где находится дом, а ездить в магазин подешевле. Так как холодильника нет, разумно разделить запасы на портящиеся и непортящиеся, и так далее.

Просто оставлю здесь несколько записок, наверняка пригодятся:

Завтрак — каша со сгущёнкой, яйца вареные, бутерброды, чай
Обед — суп типа мясо+макароны или картошка, салат типа огурцы+помидоры
Ужин — рис\гречка\макароны\картошка + курица\тушенка

Минимальный рацион на 12 человек на 1 день
Каша на завтрак — 1 упаковка (килограмм)
Сгущенки для каши 1-2 банки
Тушенки — 3 банки
Макарон 3 пачки
Увелка рис — 3 коробки
В обед — палка колбасы, 2 консервы, 1 паштет
Чай, Кофе, Сахар

Личные вещи участников:
Спальник\Надувной матрас\раскладушка\туристическая пенка
КЛМН: кружка-ложка-миска-нож
Зубная щётка, зубная паста, туалетная бумага, влажные салфетки, прочие интимные вещи
Полотенце, мочалка, гель для душа
Футболки, трусы, носки
Зарядник для мобилы

В результате мы получили проектную документацию, степень проработки которой позволяла надеяться, что нам не придётся потом из деревни ехать срочно в город за каким-нибудь переходником. Дальше всё по методичке: на задачу назначается ответственный с контрольными сроками, куратор проекта регулярно обзванивает ответственных для обновления статуса проекта, все всё забывают, всё происходит в последний момент, героически и превозмогая мы заселяемся и разворачиваемся.

Творческий процесс

Процесс работы над каждой песней состоит из следующих этапов:

  • IDEA Задумка — автор определяет гармонию, ритм, набрасывает мелодию, ищет необычные детали, которые вместе составят идею и настроение песни;
  • PROP Общая композиция — идея отрабатывается на репетиции с музыкантами и обрастает деталями, обнаруживаются слабые места;
  • TEXT Сочинение текста — не обязательно в этом порядке, текст может быть создан заранее. Тем не менее, в этом месте всегда происходит «притирка» текста к треку или наоборот;
  • VOX Вокальная линия — создаётся общая задумка вокальной партии, возможно без деталей;
  • DESIGN Аранжировка — композиция превращается в задание для музыкантов. Автор должен понятным образом объяснить, как в итоге играть;
  • DRAFT Черновая запись — по аранжировке делается черновая запись, которая передается вокалисту для репетиций.
  • После этого трек может снова пройти через пункты 4-5-6, если в нем будут обнаружены недостатки;
  • REC Чистовая запись минуса. Если на этапе DRAFT получился достойный вариант, который всех устраивает, группа может сразу же записаться вчистую;
  • VREC Запись вокала;
  • AREC Запись дополнительных партий — перкуссия, синтезаторы, соло-инструменты.



  • Тексты пишет выделенный человек, занимается этим целый день. Еще один участник группы может писать тексты.
  • Продюсируют треки три человека, но одновременно могут работать только два: один человек работает с группой. Продюсеры работают в отдельном помещении, в наушниках, никому не мешают.
  • Группа одна, записывается и репетирует полным составом, поэтому может работать только над одним треком в момент времени.
  • Звукорежиссёр один, может работать не более 14 часов в сутки. Без него невозможна чистовая запись, но возможны репетиции и черновая запись.
  • Вокалистка одна, может работать только с 11 до 21, не может работать больше трёх часов подряд.
  • Студия одна, и в один момент времени в ней работает один процесс. Этот ресурс является бутылочным горлышком всего процесса. Если бы мы смогли сделать несколько студий, экономия времени составила бы около 30%

Задача была построить работу так, чтобы студия не простаивала никогда. Наибольшая ответственность здесь ложится на продюсеров, которые должны обеспечить на каждый день задание для музыкантов. Я разбил рабочий день на двухчасовые слоты и составил план работы.


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

Конечно, в процессах творчества есть свои риски: песня может не сочиняться, у вокалистки может не петь голос, у басиста может не получаться партия. Гигантскую роль в этом сыграла обстановка и атмосфера. Дом, в котором мы работали, находится между кладбищем и аэропортом (поэтому, видимо, и были проблемы с его продажей). Мы переживали, что гул самолётов будет нам портить партии, однако этого не случилось. Наоборот, низко садящиеся самолёты создавали своё волшебное настроение.

Очень помогло, что мы фактически могли работать круглосуточно. Например, днём работает вокалистка, вечером мы репетируем песню, ночью барабанщик колдует над своей установкой. Представьте в какой атмосфере сочинялись барабанные партии: ночью, пока все спали, он работал один в пустом доме, за забором которого находится кладбище.

Что получилось

Этот альбом для нас теперь прочно связан с восхитительным опытом и потрясающим восторгом от процесса. Все участники с большой теплотой вспоминают этот проект: деревенскую тишину, самолёты, умиротворение, круглосуточное занятие любимым делом.

Прошедшей весной мы закончили сведение и сейчас работаем над выпуском альбома.

Как распространять альбом?

Многие начинающие музыканты не имеют чёткого представления, как распространить получившийся альбом, и рассылают его во все площадки одновременно: на iTunes, Rutracker, Bandcamp и даже выкладывают на Dropbox. Я бы хотел посвятить этому отдельную статью, а сейчас расскажу лишь вкратце.
Самая важная метрика для нас — это количество контактных данных людей из вашей аудитории. Важнее получить электропочту вашего слушателя, чем его доллар через айтюнс. Поэтому для размещения музыки я использую Bandcamp: человек может скачать нашу музыку, указав в поле «Цена» значение 0$, но электропочту оставить он обязан. На эту почту он получит уведомления о наших концертах и новых релизах.

Далее, наша задача собирать аудиторию в сообществах (например, в социальных сетях) и направлять этот трафик на сайт с релизом. Когда вы освоите работу с этим одним потоком слушателей, тогда уже можно будет предпринимать усилия по направлению потока слушателей на iTunes (потому что слушателям с Айфоном он удобен) или Google Play (он удобен андроидоманам).

О Музыке Невидимых Людей:

FCC уточнит понятие “высокоскоростной интернет”

Federal Communications Commission хочет заставить американских провайдеров перестань называть их поганые тормозные услуги “высокоскоростным интернетом”. Сейчас broadband-ом считается всё, что быстрее 4 Мбит\с. Новая формулировка предполагает обозначить минимальную планку в 10 Мбит\с или даже 25 Мбит\с.

Я, конечно, был дико удивлён ситуацией: оказывается Comcast продаёт 25 Мбит\с за 40$, AT&T называет тариф в 18 Мбит\с за 45$ гордым названием MAX PLUS.


Любопытствующие могут взглянуть на NetIndex, кроме того Akamai выпускает открытые отчёты о развитии интернета.

По исследованию Akamai, Россия находится на 24 месте со средней скоростью 7,4 Мбит\с на юзера и годовым ростом в 34%.aaa1

Я, конечно, был уверен, что раз США является родиной интернета – значит все скорости там. Однако же, все скорости в Европе и богатых странах Азии. Вот какие модные тренды случились в конце 2013 года:

  • Французский провайдер Illiad запустил тариф в 1 Гбит\с за 35 Евро. Зацените, кстати, какие у них приставки используются – с 3G повторителем, который раздаёт на квартиру мобильную сеть. При этом Франция пока уступает России по средней скорости доступа.
  • В Швейцарии Swisscom открыл подключение к 1 Гбит\с за 115$.
  • Финское правительство анонсировало строительство подводной оптики до Германии к 2015 году.
  • В крупных городах России гигабит стоит в районе 30-40$, например вот Питер.
  • В США ценник на гигабит начинается от 35$ в Спрингфилде (где Симпсоны живут) и может доходить до 270$ в Айове.


Как DHT в торрентах кладёт центральный роутер (и как побороть это)

Имеется средняя сетка на несколько тысяч абонентов, которая обслуживается центральным сервером на FreeBSD с сервисом NAT-трансляций. И есть лёгкий способ это всё дело категорически поставить на колени.

Суть проблемы

Проблема происходит так: сеть работает стабильно, без предпосылок к аварии. Внезапно процессор на NAT-сервере резко улетает в полку под 100%, отказывает в обслуживании и не пускает в свою консоль. Если отключаем исходящий трафик (внутреннюю сеть) – проблема не решается, если отключаем входящий трафик (аплинк), то процессор моментально расслабляется. Через 30-40 минут вся симптоматика проходит и не воспроизводится.

То, что сервер не отвечает в момент проблемы, существенно затрудняет диагностирование. Коммутатор на аплинке не показывает никакого аномального роста трафика: PPS и скорость потока в норме.

Поиск причин

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

Итак, в какой-то момент нам повезло и проблема продлилась больше, чем 30 минут. Я отключил от сети всех абонентов и стал выводить районами. Довольно быстро локализовал абонента, который провоцировал вредный трафик. Действительно, сервер прекрасно справлялся с тремя тысячами абонентов, но один единственный клиент укладывал его на лопатки.

Конфигурация NAT у нас самая обычная:

ipfw nat $NUM_NAT config igb0 ip $WHITE_IP
ipfw add nat tablearg ip from any to table(2) in recv vlan158
ipfw add nat tablearg ip from table(1) to any out xmit vlan158
ipfw table 1 add 1001
ipfw table 2 add 1001 

Таблица 1 содержит соответствие внутренних адресов и номеров NAT instance, таблица 2 содержит соответствие внешних адресов и номеров NAT instance.

Соответственно, чтобы найти источник вредного трафика, я очистил таблицу 2, а затем стал постепенно возвращать в нее записи, наблюдая в соседнем окне за показаниями TOP -SHP. Когда вредный абонент получает интернет, пару минут всё работает нормально, затем нагрузка начинает стремительно расти примерно по проценту в секунду. В этот момент я отключил абонента от сети, вернул всем клиентам сервис и приготовился к экспериментам.

Первым делом записываем трафик абонента в файл:

tcpdump -w bad.traf host

В таком случае tcpdump сохраняет трафик в PCAP-формате, который можно потом воспроизвести либо через tcpdump -r, либо открыть в wireshark, либо подсунуть в генератор трафика, который воспроизведёт трафик в реальные пакеты, что может быть полезно на тестовом стенде.

Затем я открыл файл в wireshark и изучил статистику.
11Трафик, как я и говорил, небольшой: два с половиной мегабита, около тысячи пакетов в секунду. Сделаем выборку статистики по источникам трафика:
11Итак, мы видим огромное количество источников трафика, с которыми наш клиент обменялся менее чем десятью пакетами. И более половины всех пакетов составляют SYN-запросы на установление соединения на порт 6881. В них-то и кроется вся проблема.

Выясняется, что клиентская машина активно участвует в DHT-сети с помощью одного из популярных торрент-клиентов. И другие участники сети активно ломятся к нашему клиенту за обновлением хэш-ключей. За 200 секунд устанавливается 110 000 соединений, большую часть из которых клиент не успевает обработать и оставляет без ответа.

На уровне оборудования это выглядит так: для каждого запроса создаётся новая NAT-трансляция. Т.к. клиентская машина не отвечает на эти запросы в силу загруженности, соединение остаётся полуоткрытым и получает таймаут в 300 секунд согласно предустановкам IPFW.

Через некоторое время часть трансляций устаревает, и NAT instance начинает активно заниматься двумя делами: уничтожением устаревших трансляций и созданием новых. Так как реализация libalias не предполагает размещение NAT Instance в отдельном ядре при большом количестве nat-конфигураций, нагрузка распределяется на все ядра.

Как бороться

1. Как оказалось, без явного указания флага deny_in в конфигурации NAT, входящий пакет будет обработан, даже если это соединение не было инициировано клиентом.  Исходный код libalias можно посмотреть в /usr/src/sys/netinet/libalias/, он хорошо документирован и понятен. Если никто из клиентов не просил соединения с хостом, а пакет всё равно пришёл, libalias будет выяснять, кто последний общался с этим хостом или кто последний принимал сообщения на этот порт. Этот клиент и получит пакет.
Первое, что надо сделать – это повесить deny_in на все NAT instance, где не требуется обрабатывать входящие соединения

2. Если отключить входящие соединения нельзя, можно их  ограничить по скорости.
Один SYN-пакет 62 байт или 496 бит. Значит очередь в 10 килобит\с позволит создавать 20 трансляций в секунду или 6 000 трансляций за 300 секунд (время nat-таймаута для полуоткрытой сессии ) что приемлемо для нашей конфигурации и не нарушит нормального сервиса для клиента.

ipfw pipe 666 config bw 30Kbit/s queue 2 mask dst-ip 0xffffffff
ipfw add 11 pipe 666 tcp from any to “table(72)” dst-port 6881 in recv vlan158 tcpflags syn

Экспериментально можно подобрать оптимальную ёмкость пайпа для ограничения вообще всех syn-пакетов клиенту, что защитит от syn-флуда на любой порт.

3. Ряд коллег решают эту проблему закрытием трафика по порту 6881:
ipfw add 11 deny tcp from any to “table(72)” dst-port 6881 in recv vlan158

Я же считаю, что это сомнительное решение: в таком случае syn-flood на любой другой порт положит сервер.

4. Ограничивать максимальное количество трансляций одному клиенту.
К сожалению, libalias не имеет такой настройки и количество трансляций ограничено лишь оперативной памятью. Но  при острой необходимости сделать соответствующий патч будет не сложно: созданием трансляций занимается процедура AddLink в файле /usr/src/sys/netinet/libalias/alias_db.c. В первых строчках этой процедуры можно добавить примерно такой код:
int tot = la->icmpLinkCount + la->udpLinkCount +
(la->sctpLinkCount>>1) + /* sctp counts half associations */
la->tcpLinkCount + la->pptpLinkCount +
la->protoLinkCount + la->fragmentIdLinkCount +
if (tot > 30000) // где 30 000 – это максимальное количество трансляций для одного NAT Instance
fprintf(stderr, ” maximum number of translations exceeded\n”);
return (NULL);

Если вы еще не сделали этого, рекомендую добавить в конфигурацию NAT директиву log, что позволит собирать статистику по количеству NAT-трансляций в системе.
Сделать это в командной строке можно будет так:
ipfw nat show | awk ‘{print $12;}’ | awk -F= ‘{print $2;}’ | sort -g

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