Здоровая складская система, написанная на .NET, данные в MS SQL Server. Данные в штатные гриды затягиваются, понятно дело, датасетами. Схема датасета и маппинг на вьюшеньку читается из xsd, лежащего рядом — судя по всему в рукопашную запиленного. И тут же хардкодом подчикивается и допиливается.
Из особо понравившегося: есть функция которая накладывает фильтры на датасет, причем принимает параметрами критерии и фильтр по агрегатам. Критерии эти (фильтр) типа датасет, где каждая строка это кусок предиката, а столбцы суть элементы предиката (оператор, операнды, скобки). Имена столбцов захардкожены, разумеется. "Having" претерпевает аналогично. Чуть поодаль, но не далее пары строк, обычно идет вызов второй функции, которая добавляет к совокупным фильтрам уже строковые ExtraFrom и ExtraWhere.

К вопросу сколько символов выделять под фамилию
Пабло-Диего-Хосе-Франсиско-де-Паула-Хуан-Непомусено-Мария-де-лос-Ремедиос-Киприано-де-ла-Сантисима-Тринидад-Мартир-Патрисио-Клито-Руиз-и-Пикассо

А я думал, только у меня жуйко комменты поломались. Помню, в былые времена очень жуйковчане радовались, когда сделали древовидные комментарии — это ж так удобно на сайте! Но всё. Видимо, сейчас стратегия развития иная. Кто видел стратегию развития Жуйка?! 😱

бот в телеге @ratest_bot умеет отслеживать покупку и ордера на покупку от 10btc на exmo

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

можно было бы сделать предел на который он будет реагировать и хранить где-то подписки, но мне лень

In case when you reset (Administration -> Diagnostics -> Caches -> versionedSettings) or somehow currupt cache of versioned setting — teamcity can fail of applying new versions of settings from repository.

In this case login to TeamCity server host. Navigate to <teamcity_data_dir>\system\caches\versionedSettings\ dir. And find which subdirectry contains settings of you project. Copy files fom .teamcity\ folder of you project repository to this dir to fix the issue

Из-за исправленного бага ra.point.im перешёл на firefox nightly 59.0a1.
Приятно что найтли подхватил существующий профиль фокса со всеми расширениями и настройками.
Буду на найтли пока 59 не забетится/зарелизится.

Дебажу ajax как бог.

Тут чел очень хочет на java програмить. Но он в алгоритмы ещё не очень умеет.
Что бы ему насоветовать? Так чтобы от основ: поиск, сортировка пузырьком, ...
Но так чтобы было понятно — берём эту ide, сюда пишем, так запускаем.

Я как-то бегло нагуглил какие-то книжонки по java. Ни одна мне не понравилась.
Думал ему линк на Кнута дать, чтоб по алгоритмам подтянуть, но там такая скука.

В общем рекоменд, если есть чо.

As a human being, you're multithreaded. You can type with multiple fingers, you can drive and hold a conversation at the same time. The only blocking function we have to deal with is sneezing, where all current activity must be suspended for the duration of the sneeze. That's pretty annoying, especially when you're driving and trying to hold a conversation. You don't want to write code that's sneezy.

@vt залил две ветки с мелкими правками, посмотришь? И такой вопрос, может лучше List<Tag> заменить Set<Tag>? И надо подумать по поводу ArrayList-ов, они неплохо могут тормозить систему.

После #2884467 меня окончательно достал SourceTree, и я поставил GitKraken.
После недели использования:

Что понравилось:
* Сделано для людей.
* Не пугает диалогами с выхлопом консоли.
* Drag'n'drop — в т.ч. легко управлять ветками не переключаясь между ними.
* Squash называется squash.
* Показывает stash'и в дереве.
* Автоматически делает и применяет stash когда нужно.
* Встроенный юзабельный 3-way merge для разрешения конфликтов.
* Можно добавлять в staged изменения построчно. Чуть менее удобно, чем в GitHub Desktop, но всё же.
* Не пушит теги без спросу.
* Интеграция с GitHub и BitBucket.
* Активные блог разработчика и канал на ютубе.

К чему можно придраться:
* TreeView модифицированных файлов свёрнут по умолчанию, что нивелирует его удобство и приходится использовать обычный FullPath.
* Дерево более гнутое, чем могло бы быть — часто изгибает более значительную ветку, отдавая приоритет менее значительной или stash'у. (Похоже, это проявляется на старых ветках, а то, что сделано уже в самом GitKraken — отображается нормально. Странно.)
* Auto-Fetch это хорошо, но было бы неплохо ещё отображать как-то, что он выполняется успешно или же нужно взаимодействие с пользователем (ввести пароль от ssh ключа).
* Сворачивание меток бранчей в дереве коммитов. Если моя ветка и мастер совпадают, то я не могу найти мастер визуально. (Я знаю где он находится или могу выбрать его в левой колонке, просто мелкий раздражающий фактор.)
* Любимый всеми Electron — 300+ МБ оперативной памяти.

Отправил несколько фидбэков — есть удобная форма для этого в программе. Но без платной подписки они могут и в dev/null отправляться, кто знает. Можно было бы, конечно, попробовать Pro Trial активировать и повторить... Ну или в slack заглянуть.

Общее впечатление:
В целом сейчас это лучший из GUI клиентов git под Windows. Заменит мне и GitHub Desktop и SourceTree. Можно рекомендовать всем, в т.ч. хорошим людям™, если Electron и "Free for non-commercial use" не напрягают.

SourceTree — самый фичастый гуй для систем контроля версий под Windows.
Но одна деталь просто вымораживает.
Он внезапно начал достаточно часто обновляться. При этом каждое обновление требует авторизации зачем-то. При этом форма логина сделана по уродски — сначала появляется поле для логина, Next, потом только пароль. (Почему это говно повсюду копируют.) И теперь форма логина по "Use existing account" вообще не грузится. Та-да!

Представьте, что в вазе для цветов налито молоко, а в кувшине – вода с удобрениями. Как привести все в порядок? Надо использовать третью емкость такого же (или большего) объема. Сначала переливаем в нее воду из кувшина (или молоко из вазы, все равно), затем в пустой кувшин переливаем молоко (или в вазу – воду), а затем из третьей емкости переливаем воду в вазу (или, соответственно, молоко в кувшин).