Category: it

2016-01

чего особенного в предоплате?

интересно вот стало.

почему есть сервисы, которые берут предоплату (например, с доменами и "традиционными" хостингами много таких), и сервисы которые не берут, и пишут что legally не могут? (многие cloud storage, в частности).

в чем разница? нагуглить пока не удалось
2016-01

moves is shutting down :/

Блин блин блин! Moves ( https://moves-app.com/ ) закрывается.

Это была одна из самых важных заплаток к моей дырявой памяти :(

Какие еще есть *персональные* location/activity tracker'ы?
Обязательно API, желательно какой-то умный постпроцесс "ходил"/"ездил"/"тусил"/"спал", и нормальные ToS. Или придется теперь самому писать?

This entry was originally posted at https://wizzard.dreamwidth.org/492389.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

Как писать на C в 2018

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

В общем, откладываем в сторону gcc, clang и всю эту прочую тормозную братию.

Берем TCC (Tiny C Compiler) от Fabrice Bellard, под винду это choco install tinycc, под другие ОС, наверное, где-то так же, и любой file watcher, я взял nodemon, т.к. он был под рукой уже. Делаем 2 файла:
test.cmd: 
tcc -run app.c < test_input.txt

watch.cmd:
nodemon -e * -w . --exec test.cmd

И любимый текстовый редактор, у меня и Sublime и VS открыты были, благо, в студии сейчас не нужно создавать проекты, можно просто Open Folder.

Вуаля, полсекунды после Ctrl-S, и уже можно смотреть результаты теста. Если оно упало, или если повисло - на следующем сохранении nodemon прибьет child-процессы и перезапустит заново. Большинство хедеров у tcc прямо в дистрибутиве, но в целом даже свалка из Windows SDK собирается и показывает окошко с кнопкой менее чем за секунду.

Жаль, что мне такой пайплайн не пришел в голову в свое время в универе. Прям очень удобно. Век живи, век учись.

This entry was originally posted at https://wizzard.dreamwidth.org/488771.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

про макулатуру

Самый длинный договор, который я лично подписывал, содержал 50 с чем-то страниц legalese мелким шрифтом.

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

То есть, хм, сами тексты вполне себе структурированы и читабельны. Но вот их количество...
У меня пока что эстимэйт в миллионы страниц, но может быть там и больше...

Короче, очень занятная задача для information retrieval и natural language processing, да :)

This entry was originally posted at http://wizzard.dreamwidth.org/484130.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

LISP: возрождение

...точнее, почему у LISP и multistage programming в целом есть хорошие шансы полноценно войти на арену в недалеком будущем.

Все читали чудесное "How it feels to learn JS in 2016"? (на русском, на английском)

Так вот, если присмотреться, экосистема Javascript проходит во многом через те же проблемы, которые в свое время тормознули экосистему Lisp'a:

1) нужда поддерживать похожие, но разные платформы сделала transpiling, макросы и прочие AST трансформеры нормой жизни,

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

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

Единственный нюанс будет в том, что это вряд ли будет Common Lisp, R7RS или какой там еще у нас есть стабильный feature-complete LISP стандарт. Гораздо больше мне верится в бутстрап от лиспов, в которых fexpr-семантика не испорчена premature optimization (Kernel, PicoLisp и подобное) - они банально проще и единообразнее, а производительности, как показывает тот же TypeScript, сейчас вполне хватает на компиляторы-поверх-интерпретаторов.

This entry was originally posted at http://wizzard.dreamwidth.org/476441.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

про микрокернелы и linux

ну или просто про микрокернелы.

http://blog.darknedgy.net/technology/2016/01/01/0/ вот тут есть чудесный разбор заблуждений на тему микрокернелов, а еще там довольно неплохо проиллюстрировано, как много этих заблуждений посеяно Торвальдсом.

это к вопросу о том, почему я считаю, что Linux очень сильно навредил развитию ядер операционных систем (да и операционных систем в целом, чего уж там).

This entry was originally posted at http://wizzard.dreamwidth.org/466077.html. It has comment count unavailable comments. Please comment there using OpenID.
photo25

Единственная надежная кнопка (репост)

Оригинал взят у tonsky в Единственная надежная кнопка
Одна из причин, почему смартфон — прибор для гораздо более широкой аудитории, чем традиционный ПК — надежно работающие кнопки. Что бы ни происходило, в каком бы состоянии ни находились телефон, приложение, соединение с интернетом, блютусом и USB, в одно нажатие вы всегда можете выключить телефон, и вы всегда можете «вернуться на базу» — некое хорошо знакомое стартовое состояние, домашний экран. Ключевые слова «надежно» и «в любой момент». Что бы ни происходило, как бы плохо ни было написано приложение, в какую бы непридвиденную комбинацию внешних условий оно ни попало, телефон гарантирует вам работу двух этих кнопок.

В то же время на ПК даже самая надежная кнопка, даже в идеальных тепличных условиях, нет-нет да и выдаст что-то неожиданное. Иногда запускает приложение, а иногда (как известно, в самый неподходящий момент) показывает окно с обновлениями, подсказками, скажет, что потеряло каталог, не хватает прав или еще что-то. Иногда закрывает приложение, а иногда просит сохранить файлы, согласиться с потерей табов, ответить, надо ли перезапускать при старте. _Внутри_ компьютера нет ни одной надежно работающей кнопки. Единственно надежно работающая кнопка на компьютере — это Reset. Возможно, именно сквозная ненадежность всего и вся разработала у людей страх компьютеров.

Естественно, если спросить ПК-программиста, то ничего странного в этой ситуации нет, для него это более чем нормально. Подозреваю, эта культура идет от старых представлений об искусственном интеллекте, диалоге человека и машины как равных. Предполагается, что человек спокойно сидит, сосредоточен только на диалоге и полностостью вложил все свои ресурсы на извлечение из беседы результата. Это очень удобно, потому что спокойно можно свалить на человека часть работы, а ошибки и сложности списать на его недостаточную тренированность или вовлеченность (пресловутое «юзеры тупые!»). Мы, как программисты, глубоко впитали эту модель взаимодействия, и, на мой взгляд, недостаточно часто пытаемся ее отрефлексировать.

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

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

И тем не менее, пришли смартфоны, и внезапно оказалось, что программисты вполне могут решить все эти проблемы сами: приложение гарантировано закрывается, ничего никогда не спрашивает, все всегда сохраняет и открывает _само_, да еще и само обновляет нужные себе ресурсы, включая код. Оказалось, дело было не в тупых пользователях, а в ленивых программистах. Дальше будет больше.

Мораль очень простая: всегда ставьте человека на первое место, а компьютер на второе, третье, четвертое. Человек нажал «Выход» — надо выходить, как бы ни хотелось с ним именно в данный момент поговорить.

2016-01

Гит говно

Во, у меня есть свежее репро того, что гит говно :)

Значит, берем папку с тестами к JS транслятору (25к файлов, из них половина заигнорена), передвигаем на уровень выше, коммитим.

Mercurial: 15 секунд
Github for Windows: (гуй ушел в себя еще до нажатия "коммит", пришлось прибить)
Git консольный (msysgit, как я понимаю): уже 10 25 минут как ушел в себя и ничего не происходит. Ест 5% процессора, 92 мб RAM, и всё. Что с ним сделать?

EDIT: Мне стало интересно. Ну что, даже SVN за три минуты закоммитил такой дифф, не говоря уже о всяких Fossil, "а батарейки Дюраселл продолжают работать и работать!"

Пойду что ли Darcs скачаю, про него говорят, он медленный... :-D

EDIT2: Ура, он смог! 40 минут молчания, потом тонна сообщений "LF will be replaced by CRLF", вуаля, готово. Прогрессбар? Не, не слышали.
EDIT3: При этом git mv тех же файлов - меньше секунды. Okay.jpg

This entry was originally posted at http://wizzard.dreamwidth.org/418147.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

Про лагокомпенсацию, CRDT и эксперименты Либета

Что такое эксперимент Либета: в большинстве экспериментов у человека время принятия решения типа 0.1 сек, но EEG датчик на башке показывает, что сигнал появляется ДО того, как человек сам поймет, что он собирается сделать.

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

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

Так вот, есть контроллер такой, читающий ЭЭГ, OCZ NIA называется - у меня он был. Ощущение отрицательной латенси вызывает просто охуение. Я этого никогда в жизни не забуду, "аватар в игре предсказывает мои действия"

В то время я даже намерял, там чуть ли не 700 мс запаса, т.е. ты собираешься выстрелить за 700 мс до того как ты выстрелил. Очень хорошо если за 300, это считается "внезапно". Поэтому лагокомпенсаторы возможны. Но во всяких шутерах они в лучшем случае линейно экстраполируют... Ну и 50-100 мс это предел, иначе игроки не могут отличить читера от человека, у которого просто лагает.

А сегодня я увидел мультиплеерный мод для kerbal space program. Там лагокомпенсатор асинхронный, он записывает действия игроков и проигрывает тех, кто в будущем для тех, кто в прошлом, а тех кто в прошлом симулирует, как будто они ничего не делали, и при коллизиях переигрывает.

В KSP по понятным причинам по-другому нельзя, с тайм варпом и космическими скоростями-то :)

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

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

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

Да, в общем виде это AI-полная задача (надо предсказать противника, который живой человек, и данных про него в системе обьективно не хватает), но для вероятностного ее подвида весьма поможет датамайнинг по базе данных старых реплеев.

Кто еще не понял - в условиях современного интернета, его лагов и интерактивщины про это также в той или иной форме приходится думать ВСЕМ дизайнерам UI, другой вопрос, что параллелей с геймдевом они почему-то не проводят.

This entry was originally posted at http://wizzard.dreamwidth.org/416483.html. It has comment count unavailable comments. Please comment there using OpenID.
2016-01

Нет слов, одни выражения

Появилось у меня давеча подозрение, что у меня малварь в сети поселилась. Ну это не то чтобы супер-неожиданно, виндовая сетка, туча машин и VM в разных локациях забриджена по L2, то-сё. Я хоть винду админить умею, но и особых иллюзий не испытываю - zero-day были, есть и будут.

Вижу лаги DNS резолва, лаги TCP коннектов - плавали, знаем. Потом и Гугл сказал, капчу свою показал. Ладно, вырубаем машины по одной, клонируем, выдерживаем три дня чтоб базы у антивируса обновились, сканируем. Нихуя. Сканил, сканил, врубал-вырубал, забил.

И вот, нашёл. Нашел случайно, игрался с nginx'ом и увидел СТРАННЫЕ запросы. С еще более странным source IP. Ну то есть нет такого IP в моей сетке!

Короче, да, есть малварь. Живёт в нескольких роутерах, куда спускаются хвосты VPN-ки. Апдейтов прошивок нет. Ну охуеть теперь, радость на новый год от Cisco и D-Link.

На секьюрити это не то чтобы повлияло, все важные места ходят в инет через отдельный VPN, но осадочек остался. Даже непонятно что делать, блин.

This entry was originally posted at http://wizzard.dreamwidth.org/411415.html. It has comment count unavailable comments. Please comment there using OpenID.