来自 Стой под стрелой (@nikitonsky_pub) 的最新 Telegram 贴文

Стой под стрелой Telegram 帖子

Стой под стрелой
Ведет @nikitonsky. Рекламы нет
10,776 订阅者
17 张照片
最后更新于 11.03.2025 07:48

Стой под стрелой 在 Telegram 上分享的最新内容

Стой под стрелой

29 Jan, 10:54

8,977

Бесит, когда автокомплит включен во время набора. Сидишь, никого не трогаешь, пишешь себе «pri», а оно радостно: «privet»? «pribor»? «prihod»? И твой же код рядом заслоняет. А ты, может, на него смотрел, может, в соседней строчке, которую заслонили, ответ и кроется.

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

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

В конце концов, просто неприятно, когда на экране что-то появляется и исчезает постоянно.

Конечно, нет никакого смысла дописывать сорокабуквенное «priority_interface_factory_adapter», т.е. автокомплит иногда нужен. Но строго по моей команде, на отдельной кнопке, а не автоматом.
Стой под стрелой

28 Jan, 14:02

8,397

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

Например, битовые маски. Это вроде бы целое число (инт), но для него не имеют смысла операции сложения-вычитания-умножения-деления, зато имеют смысл побитовые И и ИЛИ. Можно сказать, что это хак от бедности, что их запихнули в обычные инты.

Или массивы vs таплы. Вроде и то и то линейная последовательность, индексированная. Но одно произвольной длины, а другое фиксированной, в одном позиция ничего не значит, а в другом значит все. Хотя оба часто представлены одним и тем же типом — массивом, будет ошибкой звать всякие конкатенации, вставку и удаление элементов на таплах, так же, как и хардкодить доступ по фиксированному индексу в массиве. Питон вроде отличился тем, что официально разделил массивы и таплы (зачем — не спрашивайте).

Долгое время в Джаваскрипте не было мапы, и люди ошибочно использовали для этого объекты. Хотя это тоже две принципиально разные вещи — одно это произвольного размера словарь с однотипными ключами-значениями, а другое — фиксированная структура, где поля известны заранее, а тип значения зависит от поля. Разница примерно как между массивами и таплами, только индексирование не числами, а строками. От непонимания этой разницы вылазили всякие баги, когда нельзя создать пользователя с именем constructor, потому что это зарезервированное поле в объекте. Ну, сейчас-то никто не использует объекты как мапы, конечно, 10 лет уже как прошло.

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

Недавно мне показали еще одно тонкое различие, которое я не раньше не понимал: закомменченный код и поясняющий комментарий. Понятно, в большинстве языков комментарий один: //. Иногда делают различие для многострочного и однострочного, но семантического различия не делают. А оно есть! Я или хочу что-то пояснить, и тогда коммент должен быть ярко подсвечен (как в моей теме Alabaster), или наоборот, временно выключить какой-то код, и тогда его надо наоборот, засерять (делать сереньким). А если вид комментариев один, то нам придется или подсвечивать нерабочий код, или засерять важные пояснения.

В целом общий тип для разных целей это окей. Я не вижу, например, что Питон что-то выиграл от разделения массивов и таплов. Как говорил Алан Перлис, лучше иметь 100 функций над одним типом данных чем по 10 функций на каждый из 10 типов. Мало ли — ситуации разные бывают, иногда и по полям объекта приходится пробежаться в цикле.

Но что хочу подметить — это когда люди не понимают этой неявной разницы и используют _не те_ операции на _не тех_ объектах. Ну а что, поверхностно они тоже подходят (типы сходятся). Типа как положить мапу user id → user в {} в Джаваскрипте. Или взять второе и третье поле из тапла с помощью .drop(1).

Не надо так.
Стой под стрелой

27 Jan, 10:07

8,118

Последняя вещь про новый Дум и я перестану его мусолить. В трейлере есть момент, когда тебе говорят: «Наконец-то мы дадим тебе поуправлять 30-этажным роботом и мочить 30-этажных демонов. Масштаб просто невероятный». Смотришь видеоряд и никакого масштаба не видишь. Почему?

Тут налицо принципиальное непонимание, откуда берется эффект масштаба. Чтобы что-то ощущалось большим, все остальное должно быть маленьким. Скажем, если бы ты в титане топтал маленьких демонов — это был бы масштаб. Или если бы ты остался своего размера, а на тебя полез 30-этажный демон. Это тоже масштаб.

А если вы все пропорционально увеличили, то это не масштаб, а просто Олег сеттинг отмасштабировал.
Стой под стрелой

26 Jan, 13:18

8,758

Смотрю сейчас сериал про американаских юристов, года где-то 2010-го. И они там иногда разговаривают по телефону, им поступает второй звонок, и они такие: ща, погоди, у меня другая линия. И переключаются.

И вот этого я не понимаю. Я знаю, что есть такое явление, как putting on hold (в основном из того идиотско сдизайненного экрана айфона, ну и из кино немножко). Но блин: есть два человека, с одним ты уже разговариваешь, а второй только делает попытку контакта. Уделить внимание ты можешь только одному. Кого выберешь?

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

Но юристы всегда выбирают ответить на второй звонок. В чем смысл? Не понимаю.

(На месте чувака, который позвонил первым, я бы поступил так: повесил трубку и позвонил снова. Тогда моему собеседнику придется кинуть второго чувака и снова переключиться на меня, как будто я третий)
Стой под стрелой

24 Jan, 15:05

9,398

2/2

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

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

А, а еще Думгай в Этернале собирает листочки. Листочки, блин! Из книги! По уровню непопадания в легенду примерно как God of War, который двигает бочки, чтобы решить какой-то там пазл.

Сюжет. В первом было ровно столько сюжета, сколько нужно. Он был функциональным, он был обозначен пунктиром и давал достаточно информации, чтобы объяснить, зачем тебе идти из А в Б, и ни капли больше.

Мой любимый момент, когда с Думгаем пытаются поговорить по скайпу и что-то там ему объяснить, а он просто разъебывает терминал, достает дробовик и идет дальше. Вот это уровень сюжета и аттитьюда, который нам нужен.

В сиквеле решили поиграть в ворлд-билдинг, одновременно добавив кучу лишнего и сильно его углупив. Тут опять сложно объяснить: казалось бы, чего я парюсь, это же Дум, сюжет _должен_ быть тупым. Но он не такой тупой, чтобы было смешно, и не самоиронично-тупой, он тупо-пафосный в самом скучном, унылом смысле. Рыцари-культисты-параллельные вселенные-инопланетяне-духи-волк, все пыхтят и пыжатся, включения и сопереживания при этом ноль, и фана тоже ноль.

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

А, ладно, вспомнил. Этернал удивил меня тем, что в нем Думгай бьет стариков. Я честно даже растерялся, что мне думать-то по этому поводу? Прям подходит к пенсионеру беззащитному и отрывает ему голову. Предполагается, что это ээээ... круто?

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

Сравните с 2016, где твоя жопа висит на волоске каждую секунду игры. Это вообще другой уровень включения и ставок.

Логика. Твое оружие хранится у тебя на базе, только тебе его не дают. Да, ты открываешь анлоки на базе, которую сам же и построил, а что? Просто иначе игра бы совсем сломалась.

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

В общем, Дум 2016 для меня лично где-то на уровне Халф-лайфа. Ты лазишь по клевой научной станции и стройкам, вещи похожи на себя, глобальная катастрофа подана через личную историю. Даже костюмчик надо сначала найти. Отдельный респект за то, что они взяли максимально абсурдные вводные (демоны вторгаются на Марс — почему? — потому что Ад красный и Марс тоже красный), минимальный дизайн (на демона в оригинальном думе приходилось меньше пикселей, чем на современную фавиконку сайта) и сделали что-то более чем внятное.

Ну а Дум Этернал это просто средняя игра.
Стой под стрелой

24 Jan, 15:05

7,002

Анонс нового Дума (Темные Века) хороший повод поговорить про века светлые (2016) и пестрые (Eternal).

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

Дизайн уровней. Смотрел интервью с создателями 2016, где они говорят: «У нас было правило: если рисуешь на стене в коридоре трубу, она должна что-нибудь соединять». То есть декорации как-то правдоподобно продумывались, зачем они тут и почему. И это чувствуется! Даже несмотря на всю абсурдность происходящего (демоны, марс, сайфай база) оно все логично соединялось: корпусы, двери, мостики, все это можно представить что было зачем-то нужно. Что ты попадаешь в какое-то помещение, у которого раньше был один смысл: например, лаборатория, вот тут люди исследовали что-то, или раскопки, вот тут кран, он копал, а вот машина, которая грунт отвозила. А потом пришли демоны и это помещение, кхм, переосмыслили.

Вот. А в Этернале подход сменился. Трудно, говорят, было все продумывать, и мы забили. Теперь уровни просто делаются по «чтобы было круто» или «чтобы было удобно играть». Платформы в рандомных местах, лестницы шириной в футбольное поле, двери, которые никуда не ведут. Дошло до парадоксального: действие перенесли на Землю, но это не дало эффекта узнавания! Родной земной город выглядит менее правдоподобно, чем космическая станция на Марсе! Поезда не похожи на поезда, небоскребы на небоскребы, храмы строят из железа, грузовые поезда нефункциональны, торговые районы включают энергетическую подстанцию и токсичное подземелье, а у демонов есть фабрики.

Кто-нибудь скажет: да чего ты, это же Дум! Не парься, это и не должно иметь смысла. Главное чтобы стрелять было весело! А я парюсь. Почему, собственно, не должно? Мне жаль этих людей.

Тут же можно сделать колбек на ИИ: Этернал это то, что сгенерила бы нейросеть на основе Дума 2016. All style, no substance, внешние признаки есть, внутренней логики нет.

Тактильность. Первый Дум был супер тактильный. Все, что ты делаешь, происходило в реальном мире: оружие ты подбирал с пола (да, прям анимацией, из рук мертвого товарища вырывал), двери раздвигал руками, кнопки нажимал пальцем, черепа раскалывал одной левой. Все это реально происходило, а не как обычно в играх, где ты подходишь, нажимаешь E и дверь сама открывается, «как будто нажал». Это именно что было анимировано, мега-кайфово выглядело и ощущалось. Сверху это все щедро присыпано environmental storytelling.

В Этернале это все заменили на обычные Quake-3 style иконки: просто проходишь через цветное голографическое изображение повер-апа и у тебя в инвентаре бампается циферка. Абстрактно, бездушно. Иконка секрета — это светящийся в воздухе знак вопроса. Как будто модель не прогрузилась. Печалька.

Враги. Отдельно хочу отметить Импов из 2016: пока все остальные враги как бы просто расположены по уровню и немного перемещаются, Импы уровнем по-настоящему пользуются: лазят везде, позиционируют себя, как бы «ощущают» уровень и пользуются им. Это чуть более глубокий уровень интеграции, и помещение перестает ощущаться просто декорацией.

Визуальный дизайн в Этернале all over the place. Пестрит, не сочетается, не пугает. Если визуально 2016 это Диабла 2, то Этернал — это Диабла 3.

Камера. Первый Дум был сделан на 100% без склеек и от первого лица. И это решение, это стиль, это работало на погружение. Ты буквально сливался с персонажем. А уж какие там были смерти от первого лица! Они даже в трейлер, если я правильно помню, вставили, как тебя потихоньку ест Revenant, а ты на это смотришь из шлема. Умирает не персонаж на экране, умираешь ты сам. Вот уж шок контент так шок контент! В хорошем смысле.

1/2
Стой под стрелой

23 Jan, 15:09

9,105

Самое унылое, что вы можете сделать с текстом/подкастом/видосом/продуктом/контентом в интернете — это сгенерить ИИ обложку.

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

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

Нарисуйте обложку от руки. Нарисуйте на вайтборде. Сфотайте что-то по теме и под рукой. Напишите просто шрифтом на цветном фоне. Склейте из найденных в интернете картинок. Не делайте обложку вообще. Что угодно будет лучше, чем уродливое ИИ-говно, которое заметно за километр.

ИИ обложки — очень сильный сигнал «автору пофиг». Это современная версия фоток с фотостоков, только некрасивая.
Стой под стрелой

22 Jan, 13:10

8,154

Ну и пока мы говорим про дизайн. Если у тебя есть блок текста/кода и ты выделяешь несколько строчек, между прямоугольниками выделения не должно быть щелей. Из них дует
Стой под стрелой

21 Jan, 13:46

9,731

Самый печальный дизайнерский тренд времени — выделения скругленными прямоугольниками.

Началось это с Большого Сюра, версии макОС 2020-го года. Раньше было как? Выпадающее меню, например — это список строчек в прямоугольнике, когда наводишь на строчку — она подкрашивается синим от края до края. А стало как? Стала подкрашиваться не до края, образуя как бы синий прямоугольник внутри большого серого прямоугольника самого меню.

И ЭТО НЕКРАСИВО.

Сорян, логических аргументов не будет. Да, это вкусовщина. Да, миру пофиг, все дружно прыгнули делать как Эпл. Теперь и в списках выбранный элемент выделяется рамочкой вместо того, чтобы подкрасить фон. И табы (UISegmentedControl) теперь живут внутри такой как бы шахты-прямоугольника, внутри которой с отступами живет еще один прямоугольник выделения. Фигма, например, взяла свой минималистичный интерфейс, поместила каждый элемент в дополнительный скругленный прямоугольник и пытается продать это как инновационный UI3. Модно же!

Сложно точно сказать, что мне не нравится. Во-первых, шумит. Типа, раньше контейнер был списком входящих в него элементов и только, а теперь вокруг них появилась как бы коробочка, которую видно и про которую приходится думать. Во-вторых, когда скругленные прямоугольники соприкасаются (например, активный и ховер), образуется некрасивая «жопка» в месте скруглений. В-третьих, таким выделениям нужен воздух, причем не только активному, надо резервировать и соседям. Это раздувает интерфейс.

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

20 Jan, 11:34

9,629

Телеграм сделал, что смахивание видео не закрывает его, а переводит в режим картинка-в-картинке, и это повод поговорить про режим картинка-в-картинке.

Во-первых, что с названием? Оно раздражает какой-то своей особой дебильностью. Давайте тогда пульт от телевизора называть «кнопки на палке», редактор кода — «буквы в окошке», а ноутбук — «книга на коленках».

Во-вторых, я всегда думал, что PiP какая-то бумерская штука со времен, когда телек был один на всю квартиру, и папа хотел смотреть футбол, а остальная семья — мультики. То есть для нескольких людей я еще могу понять, но зачем это может быть нужно на телефоне, в который по определению смотришь ты один? К тому же видос закрывает добрую половину экрана, так что делать что-то еще проблематично. Получается, PiP на телефоне эта такая непрактичная вещь для тех, кто хочет не просто тупить в телефон, а ТУПИТЬ БЫСТРЕЕ.

Но он есть также и на десктопе. Какое-то время назад PiP добавили в Safari, а чуть позже и в Firefox. Теперь любой видос можно открыть в специальном маленьком окошечке, которое будет показываться поверх остальных.

Что тут не так? Я слышал, что есть люди, которые любят во время работы включить какой-нибудь бубнеж в фоне, так вот это как раз для них?

Тут мне не нравится реализация. Во-первых, нафига отдельный режим? Вроде бы у нас уже есть абстракция, чтобы вынести какой-то кусок информации в прямоугольник и поставить его в нужное место экрана. Это окна. Это ровно то, зачем они изначально придумывались. Это БУКВАЛЬНО идея многооконного интерфейса.

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

Да, оно зависает поверх других окон, и это удобно (для этой фичи), но тут у меня другой вопрос, я им мучаюсь уже лет десять. Почему я не могу на уровне оконного менеджера закрепить произвольное окно поверх других? Вроде бы удобная и логичная фича, АПИ для этого есть (и всегда было). Почему это можно сделать программно, но нельзя сделать из интерфейса? В конце концов, это же МОЙ компьютер.

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

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

Кстати, в Ютубе на десктопе есть еще понятие «мини-плеера». Это как бы тоже «PiP», только на джаваскрипте. Поэтому переходить на другие сайты нельзя, вынести окно нельзя, в общем, классическое современное «мы сделали то же самое, но хуже». Зачем это может быть нужно людям, которые умеют открывать больше одной вкладки, я ума не приложу. Но хэй, программистам в Гугле надо что-то делать, не сайт же оптимизировать, в конце концов.