to post messages and comments.

← All posts tagged dev

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.

После #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" вообще не грузится. Та-да!

Когда, наконец, в Vivaldi встроили dev tools в основное окно, в Опере dev tools стали вести себя непредсказуемо — могут открыться как в боковой панели, так и в отдельном окне. И я не вижу переключателя.
Также не вижу переключателя для тестирования мобильной вёрстки.

Есть один репозиторий...

$ git push origin <branch>
...
Counting objects: 25, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (23/23), done.
Writing objects: 100% (25/25), 4.02 KiB | 0 bytes/s, done.
Total 25 (delta 13), reused 0 (delta 0)
_

Курсор мигает, команда не завершается, больше ничего не происходит. Разумеется, чего не запушилось.

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

$ git push origin <branch>
...
Total 0 (delta 0), reused 0 (delta 0)
_

С тем же безуспешным результатом.

Изучены
stackoverflow.com
stackoverflow.com
stackoverflow.com
stackoverflow.com
reddit.com

Испробовано:
* push -u;
* разные версии git и разные гуи;
* запуск на другом ПК через другого провайдера;
* манипуляции с MTU;
* что-то ещё.

Не испробовано:
* sudo chown -R git.git /srv/git/ на сервере. Но если это, видимо, только у меня не работает, то маловероятно, что проблема с правами?

Если не найду причину, останется только патчи по почте слать.

Точка с запятой нужна?


Я тут узнал про этот холивар.
JS — ленивый язык для ленивых людей. Настолько, что им лень в C-style языке ставить C-style разделители выражений.

Меня больше всего удивляет, что кто-то вообще это говно — Automatic semicolon insertion — придумал.
Как результат внедрения такого лексического препроцессора, то что написано, то что подразумевалось и то что выполнится на самом деле — это три большие разницы, вместо хотя бы двух. Теперь, выбирая сторону холивара, просто приходится выбирать сорт граблей, по которым в любом случае ходить.

Если я предпочитаю использовать т-с-з, по аналогии с другими языками и потому что явное лучше неявного, то ASI мне только палки в колёса иногда вставляет, делая внешне нормальный код нерабочим (неявные вещи случаются независимо от моей воли).

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

Вот эта "фича" регулярок в JS очень огорчает.
Можно было бы легко выбирать параметры из url'ов. Но нет, захватывается только то, что попало в последний проход, т.е. в данном случае только тот параметр, который стоит крайним справа.

regex101.com — на примере можно пощёлкать языки и увидеть, что попадает в результаты.

В JS остаётся только выгребать все параметры массивом и уже из него брать нужное.

Наткнулся на Git from the inside out (текст), понравилось.

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

Также захотелось увидеть что-то подобное про Mercurial. Видео не нашёл, и в процессе поиска вспомнил, что Меркуриал не задуман так, чтобы выставлять детали имплементации. Но если очень хочется, то официальная wiki — это наиболее содержательный источник информации. Начать удобнее всего оказалось с Mercurial for Git users и далее следовать по ссылкам на термины. В разделе Developer Info — Internals оказалось не густо.

На SO упоминаются статьи Behind the scenes и Towards a Better SCM: Revlog and Mercurial (гуглибельно, я не знаю нормальной ссылки), но они не слишком содержательны, по крайней мере на том уровне, на котором я хотел удовлетворить своё любопытство.

Одна деталь:
Аналогом команды git cat-file для просмотра внутренних бинарных файлов в Mercurial является подмножество команд hg debug*. Полный список дебажных команд удобнее получить через hg help debug.

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

youtube.com
Обнаружив, что для 3DO таки существует уже более чем достаточно хороший эмулятор, решил вспомнить молодость и, быть может, даже перепройти что-нибудь...
В процессе блуждания по ром-сайтам, наткнулся на это. Казалось бы, какой смысл выкладывать и, тем более, смотреть прохождение клона Wolfenstein 3D?

Но есть нюанс, который в корне меняет дело. Прохождение записывают два бывших сотрудника Studio 3DO, один из которых был разработчиком этой самой игры 20 лет назад. Блуждание по коридорам составляет практически только фон и тему для разговора в этом своеобразном подкасте на тему геймдева в те времена. Это офигенно, короче.
Очень любопытно смотреть на игры, в которые ты когда-то играл, но с точки зрения людей, которые видят в первую очередь то, как они создавались...

По Monster Manor суммарно 10 видео, ну и по другим играм с 3DO видео продолжают записывать.