Получи случайную криптовалюту за регистрацию!

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

Логотип телеграм канала @nikitonsky_pub — Стой под стрелой С
Логотип телеграм канала @nikitonsky_pub — Стой под стрелой
Адрес канала: @nikitonsky_pub
Категории: Новости и СМИ
Язык: Русский
Количество подписчиков: 9.12K
Описание канала:

Ведет @nikitonsky. Рекламы нет

Рейтинги и Отзывы

2.00

3 отзыва

Оценить канал nikitonsky_pub и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

1

3 звезд

0

2 звезд

0

1 звезд

2


Последние сообщения 6

2022-05-17 14:39:47 Когда-то в достаточно позднем возрасте (какой-то там курс универа) на уроке истории наш историк (который вообще был клевый мужик и понимал, что учить истории программистов гиблое дело, поэтому учил нас жизни больше) вскользь сказал «ну вот зима, зиму я не люблю».

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

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

Зима, конечно, никуда не денется от того, любишь ты ее или нет. Как и школа, или родной город. Но признаться себе, что –30 на улице это неудобно, что учителя бывают и мудаки, что город может быть уныл и странно любить его только за то, что ты в нем родился, что любая страна, даже родная может оказаться мордором, что родители не самые умные и сильные люди на свете и так далее — первый шаг к исправлению ситуации.
4.3K viewsNikita Prokopov, 11:39
Открыть/Комментировать
2022-05-16 15:49:54 В комментариях про git мне заметили, что поскольку git fetch устаревает сразу же после вывода результата на экран (а на самом деле чуть раньше) (и на самом деле все терминальные утилиты так работают, это вообще-то модель терминала), то нет никакого смысла делать его чаще или в фоне: устаревшая на одну миллисекунду информация все равно что устаревшая на три дня. «С точки зрения формальной модели» (не мои слова).

Что конечно же полный бред. Потому что человек не работает по теории. Человеку важна практика. Человек не будет выливать воду из чайника, чтобы «перейти к шагу 1».

Это вообще одно из главных откровений, которые со временем понимаешь про компьютеры. Что они не про красивую математику вообще, а про очень некрасивую и вполне приземленную инженерию. Сто процентов работы программиста — оптимизировать ту самую константу +C, которая в теории никому вообще не интересна.

Начинающие программисты часто не задумываются о стоимости того, что они делают. Научили их делать SQL-запрос? Давайте сделаем по запросу на пост, например, чтобы достать имя автора. Теоретически результат эквивалентен, на практике же страница грузится пять минут вместо одной десятой секунды. Опять же, с точки зрения теории разницы нет, а с точки зрения практики пользователь вас уже давно закрыл. Потому что ну сколько можно?

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

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

И вот эта вот возможность думать, что «я сейчас напишу, что мне нужно, а компьютер/компилятор/база там разберутся, как оно должно работать» — халява исключительно за счет огромного, идиотски большого избытка хардверных ресурсов для тех простых задач, которые программисты сегодня решают. Задачи уже давно не усложняются, снижается только порог входа для программистов.
3.6K viewsNikita Prokopov, 12:49
Открыть/Комментировать
2022-05-14 15:08:35 В комменты опять пришел человек, запуганный JavaScript. Я сокрушался, что в JS нет нормального синхронного персистентного хранилища (localStorage маленький, IndexedDB асинхронный), на что мне заметили: но там же большие данные можно хранить, мегабайты.

Целые мегабайты, представляете? В представлениях JavaScript-еров это какие-то особенно большие объемы, потому что в JS все привыкли что все крайне медленно и далеко от реальной производительности компьютера.

Но давайте посчитаем. Macbook SSD показывает 2.8 Гб/с на чтения файла в 4 Mb, ~23 Мб на один 120 Hz кадр. Каждый кадр можно читать с диска 23 Мб новых данных и НИКТО не заметит, можно делать это на UI треде и еще анимации плавные успевать крутить.

А если на количество обращений оптимизировать, то например можно читать по 256 Кб, будет 4000 чтений в секунду, или 33 чтения за кадр. Это очень интерактивные скорости, нафига там асинхронщина?

Да, я тоже помню времена, когда в компьютерах стояли магнитные hdd-диски. Шуршит — значит думает. Взял ноут со стола — все диски запарковались, все встало на паузу. Но даже я, дед, готов уже признать, что эти времена давно прошли.

Но как же, ведь диск может быть занят другими программами — говорят мне. А что, CPU/память занята быть не может?

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

Если для вас компьютеры == то, что может браузер, у меня для вас плохие новости — вы отстали от реальных возможностей ПК лет на десять. Не то чтобы на десктопе все прям выжимают компы на 110%, но по крайней мере тебе ничто там не мешает, если захочется.

А браузер — это непрерывная борьба, потому что без борьбы человек не может. Даже если это борьба с гирями, которые он сам себе к ногам привязал.
4.8K viewsNikita Prokopov, edited  12:08
Открыть/Комментировать
2022-05-13 16:25:41 В истории программирования много раз брали на лозунги шаблон Everything is a X:

- Everything is a string (TCL)
- Everything is a list (Lisp)
- Everything is a file (Unix)
- Everything is an object (OOP)
- Everything is a function (FP)

И знаете что? Каждый раз эта абстрация протекала сразу с момента ее создания. Медленно/неудобно/все равно нужно различать и т.п.

Когда нам в школе рассказывали про «everything is a file» я очень удивлялся: очевидно же, что, например, с сокетом, или с процессом, или с принтером ты хочешь делать совсем не те операции, что с файлом. Оказалось, что имеелось в виду, что в виде файла доступна какая-то ненужная тривиальщина типа пида процесса, я для нормальной работы есть нормальные специальные методы, которые не притворяются, что «все есть файл». И чего было заморачиваться, спрашивается?

Есть мнение, что и в будущем next big thing которая выберет своим лозунгом Everything is X окажется такой же дырявой еще на этапе создания. Потому что мир разный, работает по-разному и хотят от разных вещей разного. Засовывать круглое в квадратное так же логично, как носить кастрюлю в качестве головного убора. А притворяться, что это еще и удобно — ну это только программисты так могут.

Nothing is everything, короче.
3.5K viewsNikita Prokopov, 13:25
Открыть/Комментировать
2022-05-12 13:38:40 У Wayland когда-то прочитал классный слоган: Every frame is perfect. Родился он, кажется, от каких-то древних линуксовых проблем с tearing и flickering, но ничто не мешает нам использовать его в более широком смысле.

Ну, короче, в хорошо сделанной системе разработчик должен отвечать за каждый кадр. Вот буквально за каждый.

Например, у вас есть относительно прямолинейный сценарий, но прощелкивая его вы видите какую-то ерунду. На маке есть панель System Updates, и там можно нажать кнопку Update now.

Как должно быть в идеале? Кнопка блокируется, появляется какой-то прогресс-бар, совершается апдейт (или перезагрузка), появлятся надпись «апдейт выполнен».

Вместо этого в реальности кнопка несколько раз блокируется и разблокируется, появляются и исчезают странные надписи «компьютер будет обновлен сегодня ночью», «апдейтов нет» (до того как апдейт выполнится) и снова есть и т.д.

Что это означает? Что программа победила программиста. Человек, который это писал, завяз в сложности системы, давно потерял контроль над происходящим и чинил в режиме «заплаток», лишь бы отстали.

Что делать? Ну в первую очередь нужен конечно человек, которого это волнует. Если всем пофиг, то программы естественным образом скатываются в режим «делают черт знает что, мы за это не отвечаем». Почему Маки раньше ценили за интерфейс? Да потому что Джобс лично садился, запускал и критиковал все что видел.

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

Это все относится и к паразитным кадрам, и к криво поставленным контролам. Хорошо написанный код и выглядит хорошо, и работает предсказуемо. Сложный и запутанный или выглядит как попало, или развалится при первом случае.
4.4K viewsNikita Prokopov, 10:38
Открыть/Комментировать
2022-05-11 17:24:19 Об интерфейс гита кто только ноги не вытирал, но все-таки каждый раз, когда вбиваю git status и он пишет Your branch is up to date with 'origin/master' меня нехило так корежит.

Корежит, потому что up to date здесь не значит, что у вас самая свежая версия. Up to date значит, что ваша локальная версия совпадает с вашей же локальной версией. Зачем? Почему? Кому это может быть интересно?

Ну и отдельно концепция “remote” бранчей, которые даже называются “origin”, но на самом деле просто еще одна локальная ветка, которая вообще ничего не гарантирует и к ремоуту имеет такое же отношение, как и условный master2.

У меня честно нет версий, в какой ситуации кому-то может быть интересен статус одной локальной ветки относительно другой и неинтересен статус настоящего ремоута.

Но, как я и говорил, ругать git за нелогичность или неудобство — как бить калеку.
4.8K viewsNikita Prokopov, edited  14:24
Открыть/Комментировать
2022-05-09 19:16:47 Самая бестолковая фича в редакторах кода — миникарта (minimap). Выглядит убого, понять ничего не помогает, но все делают.

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

Зато на примере миникарты видно, как делаются современные продукты. Кто-то один ее придумал и тут же растащили все остальные. Причем включили по-умолчанию. Фича есть? Есть. Похвататься надо? Надо. Люди пользуются? Конечно пользуются (потому что не знают, как отключить, но этого статистика же не покажет). Продолжаем пихать ее всем и каждому!
6.1K viewsNikita Prokopov, 16:16
Открыть/Комментировать
2022-05-06 15:28:20 Коллега altmind удивляется в Твиттере, что так мало людей говорят о проблемах второго Халф-лайфа. Как хвалить так каждый горазд, а как ругать так никого.

Я, как любитель нестандартных мнений, спешу присоединиться. Превосходство первой Халвы над второй я объясняю просто: лазить по секретной научной лаборатории куда интереснее, чем по бедному восточно-европейскому городу.

Тут, правда, может еще бэкграунд сыграть — мы-то в этом выросли. Обшарапанные стены, грязные подъезды, серые дома, выбитые окна это просто наша среда обитания, норма. А для зажиточных американцев это может работать как экзотика — кто их там знает. Но все равно, научная станция >>> жилой квартал, ну как ни крути.

Что касается геймплея, то его там нет. Half-life 2 это так или иначе затяжной туториал, где тебе долго объясняют, что от тебя хотят и как это работает, а как только ты разобрался и вроде бы можешь начать играть, переключаются на что-то другое.

Движок хороший, впрочем: Counter Strike, Garry’s Mod, Team Fortress 2, Portal, Left 4 Dead. И физика, кажется, в HL2 одной из первых появилась (о чем, собственно, почти вся игра, с гравити-то пушкой).

Ждем третью часть.
8.3K viewsNikita Prokopov, 12:28
Открыть/Комментировать
2022-05-05 16:51:28 Чего я никогда не понимал, так это как работает ипотека. Типа, вот я смотрю квартиру в Берлине, в соседнем доме. €485 000, 75 m², 2 комнаты. И допустим я хочу взять ее в ипотеку. Но даже без всяких процентов, даже на 15 лет это будет €2700 в месяц. Это какие-то безумные цифры, нет?

Средний айтишник тут получает €60000-€70000 в год, это примерно €3000-€4000 на руки в месяц. Как это вообще работает? Я, конечно, побольше получаю, но даже для меня €2700 в месяц это огромная сумма.

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

А еще с ипотекой я не смогу ни переехать, ни уйти в отпуск/сабатикал, если задолбаюсь (прецеденты были). Это история на 15 лет, в течение которых ты не можешь пошевелиться. 15 лет для меня более-менее вся оставшаяся активная жизнь. Единственная радость что к пенсии ты сможешь перестать платить за квартиру, ну так я могу просто сейчас еще одну полную арендную плату откладывать и мне потом еще хватит на 15 лет. И даже таким образом я треть стоимости квартиры сэкономлю. Потому что снимаю я, например, такую же площадь но в 3 раза дешевле чем вышло бы по ипотеке.

В России, наверное, попроще, но не понимаю я все равно. В каком-то подкасте Андрей Смирнов, кажется, молодой по сравнению со мной программист рассказывал, что закрыл две ипотеки, на каждую по два года, причем, как я понял, в Москве. Смотрю сейчас Циан, совсем базовые квартиры от 15 миллионов, за два года это по 600к/месяц. Мне в Джетбрейнсе платили 300к с 15 годами опыта, причем это в 2019 уже было, а он еще раньше ипотеку брал, то есть зарплаты тогда были еще меньше, так?

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

Как люди это делают вообще? Я реально не понимаю, надо либо бизнес на 500 человек иметь, либо наследство, а работяги обычные, они как такое проворачивают? Или я все правильно понял и в ипотеках нет вообще никакого смысла?

UPD: По итогу дискуссии выработался следующий рецепт:

— Начинать желательно 20-летним
— Брать сразу на 30-40 лет вперед
— Желательно работать в США в ФААНГЕ сразу после выпуска
— Иметь стартовую квартиру в наследство от бабушки
— Иметь супруга/партнера-айтишника
— Купить сначала что-то по-дешевле, выплатить, купить по-дороже
— Жить не там где хочется, а там где дешево
— Не выплачивать по истечении срока
— Система рассчитана на то, что большинство людей не будут покупать

Всем спасибо, действительно, стало понятнее
3.8K viewsNikita Prokopov, edited  13:51
Открыть/Комментировать
2022-05-03 14:33:50 В прошлый раз когда я писал про Database for Life мне скинули видео “RubyConf 2018 - Building a Memex (with Ruby!) by Andrew Louis”. И знаете что? Впервые за долгое время я почувствовал что вот оно, то, что компьютеры должны делать. А не вот это все.

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

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

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

В-третьих, очень хорошо показывает, на что способны современные компьютеры, если захотят. Он говорит, что импортирует десятки тысяч data points в день. Я не услышал, на сколько его база растет, скажем, за год, но подозреваю, что единицы гигабайт? С современными дисками это ничто. Не нужен никакой гигантский датацентр размером с библиотеку, все это можно делать прямо в кармане.

При этом поиск по этим гигантским массивам, которые, еще раз, всю жизнь человека представляют! занимает секунду-две (насколько я понял, он там графы обходит, для запроса по таблицам непозволительно медленно, конечно. Плюс full text match часто). То есть современный компьютер может открывать пустой текстовый чат несколько секунд, а может сделать сложный иерархический запрос по всей жизни человека в сравнимое время. Заставляет задуматься, да?

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

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

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

Короче, мужику огромный респект, проект вызывает огромную зависть, но делать я ничего подобного не буду, конечно. Но желание что-то запилить пробуждает на раз-два.
3.6K viewsNikita Prokopov, 11:33
Открыть/Комментировать