Обновить
22
Михаил Соколов@debagger

Инженер и программист

0,1
Рейтинг
2
Подписчики
Отправить сообщение
Мне почему-то вспомнился анекдот, который заканчивается словами «Наверно что-то не так с консерваторией». На мой взгляд перелом произошел, когда частный бизнес понял, что для развития ему нужна наука и там появились деньги не только государственные, но и частный капитал. Вот в этот момент туда устремились ребята, для которых важно не «удовлетворять собственное любопытство за счет государства», а делать карьеру и получать гранты, а для этого нужна результативность любой ценой.
я могу спать немного спокойнее, зная о том, что переменные в моём проекте не могут совершенно неожиданно менять свои типы.

Я вот не могу спать спокойно, потому что теперь у меня куча забот чтобы правильно все это хозяйство типизировать.
Когда сидишь и разбираешься, почему tsc выдает ошибку там, где все правильно и на js код в этом месте работает без проблем, иногда очень жалко времени.
Как хранение в JSON убережет от сложения строк?
Стоит выбирать транспорт (если уж брать аналогию с транспортом), который довезет тебя до пункта назначения оптимальным образом и без особых проблем в пути. И да — иногда это может быть велосипед.
На мой взгляд мидлвары появились как раз потому что их было вот так вот просто реализовать. Ну а потом, как говорится, понеслось, и вот — все как в тумане, а потом вдруг оказывается, что мы потеряли контроль на реквестом из респонсом и любой из 100500 разработчиков, которые приложили руку к созданию мидлваров, взятых в наш проект из сомнительных репозиториев, которые не обновлялись с 2017 года, может сделать, пусть ненароком, практически все что угодно с данным до того, как они доберутся к тому месту в программе, которое мы контролируем. И словив проблему, мы будем дебажить до рези в глазах эти цепочки вызовов мидлвар в попытке понять, что происходит.
Лично мне эта фраза говорит о том, что, вероятнее всего, учитывая контекст, Ноду они знают, просто не сильно хорошо.


Все правильно, если знаешь яваскрипт, то в каком-то смысле знаешь ноду. А яваскрипт они судя по всему знали, раз у них в стеке был англяр.
Я думаю самое главное зло, это сама концепция цепочки middleware и то, что мидлвары вообще могут что-то менять в реквесте. Что, на мой взгляд могло бы сделать эту концепцию немного более приемлемой:
1. Концепция контекста. Сам реквест readonly, если надо передать что-то дальше по цепочке — для этого есть объект контекста.
2. Мидлвара может добавлять свою информацию в контекст, и может читать то, что добавлено другими мидлварами, которые установлены для нее в зависимостях, что приводит нас к следующему пункту.
3. Должна быть реализована система зависимостей, т. е. например, авторизация может зависеть от аутентификации, а аутентификация от мидлвары, которая вытаскивает Auth token из реквеста.

Если бы изначально такое было сделано в экспрессе, было бы сейчас значительно меньше проблем.
Тема вейпа не раскрыта. Сколько я минут жизни я теряю от одной затяжки? Может я уже умер? Как посчитать?
А это идея для стартапа! Если вы понимаете о чем я.
Не понял преимуществ в задании пути как свойств объекта

path.join классная штука, всегда ей пользуйтесь при работе путями )). Но вот в чем дело, эта ваша строка кода:
path.join(__dirname, 'node_modules/fstb/package.json')

у нее нет продолжения. Ибо join вернет строку, а вам то надо работать с файлом. И теперь надо эту строку передать каким-то образом в метод из fs.


const package_json_path = path.join(__dirname, 'node_modules/fstb/package.json');
fs.stat(package_json_path, (err, stat) => console.log(stat.size));

//либо (ну так вообще никто никогда не делает, да?):
fs.stat(path.join(__dirname, 'node_modules/fstb/package.json'), (err, stat) => console.log(stat.size))


А вот этот код:
FSPath(__dirname)["node_modules"]["fstb"]["package.json"]

он может быть завершен как инструкция что надо сделать с файлом.
Вот так, например:
FSPath(__dirname)["node_modules"]["fstb"]["package.json"]()
.asFile().stat().then((stat => console.log(stat.size)))

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

Если вам не нравится вариант заменить сегменты на свойства, можно написать вот так:
FSPath(__dirname)["node_modules/fstb/package.json"]


Кстати, подали мне идею, сделаю, чтобы можно было вообще писать вот так:
FSPath(__dirname, "node_modules/fstb/package.json")

Так что спасибо за критику.

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


Тут да, есть такое дело, я про этот недостаток писал в конце.

Так же, странно видеть атрибуты read и write, лучше либо переименовать на более очевидное, либо сделать их методами. Почему бы сразу не сделать readLineByLine() и writeText()?


Тут есть ряд причин, почему сделано именно так:
Во-первых, если их сделать методами, то будет путаница, потому что у модуля fs есть методы read и write будет с ними путаница.
Во-вторых хотелось разгрузить подсказку от портянки методов. Когнитивная нагрузка, помните? Если все, что можно делать с файлами в один список положить получится длинная портянка, пусть даже и структурированная по префиксам названий методов как вы предлагаете, так что нет, не вижу смысла делать, так как вы предлагаете. Думал об этом довольно долго, но в итоге решил сделать как есть сейчас.
Сначала хотел написать, что неудобно будет смотреть на экранчик «в поле» если точка, с которой меряешь неудобно расположена, например глубоко в недрах прибора, который надо чинить. Потом дошло, что для таких случаев есть приложение для смартфона. В общем, круто, так держать! Прикидывали, сколько такой девайс будет стоить?
Меня всегда удивляет, когда сравнивают ИИ и человеческий разум. На минуточку, чтобы получился «естественный интеллект» понадобились сотни тысяч поколений работы генетического алгоритма с огромными популяциями, где каждый агент в популяции имеет сложность, которая и не снилась современной вычислительной технике. Чтобы сформировать сознание человеку нужно 20 лет непрерывного 24/7 обучения на бесконечно разнообразном датасете, который есть реальный мир.
Прямо сейчас обучается почти 8 млрд. агентов, нейронная сеть каждого из которых многократно сложнее, чем все, что может дать современный датасайнс. Это ответ эволюции на «комбинаторный взрыв».
Меня знатно бомбит, когда кто-то критикует современные достижения в области ИИ. Голосовые ассистенты ошибаются? GPT-3 несет бред? Автопилот теслы попал в аварию? Пару десятков лет ничего этого не было вообще.
Я просто в восторге от того, чего удалось достичь за последние годы в области ИИ! И с каждым годом этот восторг только растет. То, что можно просто задать вопрос смартфону голосом и получить ответ, это так естественно, но расскажи об этом мне, 15-летнему школьнику, который потратил 2 недели, пытаясь обучить Dragon Dictate распознавать мой голос (безуспешно), и я тогда бы не поверил.
Для меня это просто невероятно круто, что все это появилось при моей жизни, я и с восторгом и замиранием сердца смотрю в будущее не в силах представить, что же будет дальше!
Я все собирался найти и перечитать повнимательнее вашу предыдущую статью, а вы оказывается уже фреймворк запилили. Поставил вам лайки и звездочки везде, где смог, ибо «во-первых, это красиво»!!!
ленивцы не в счет

Еще как в счет. Помню в детстве читал книгу Джеральда Даррела, так там был эпизод, как у него сбежал ленивец из клетки и каких трудов стоило его обратно упихать…
Выход из приложения с помощью process.exit() тоже можно предотвратить, подменив обработчик porcess.exit на свой. Это конечно грязный хак и в общем случае так делать не стоит, но в некоторых ситациях может пригодится и, если уж говорить о способах предотвращения выхода из программы, стоило бы об этом упомянуть. Можно использовать, например, в случае, если таким образом действует модуль, на поведение которого мы не можем повлиять другим способом.
Очевидно же: надо натренировать сеть, которая будет цензурировать GPT-3…
Язык запросов чем-то напоминает LINQ дотнетовский.
Спасибо! Очень хорошая статья, четко и по делу.
Было бы интересно сделать это без прослойки в виде стороннего сервиса…

Я до сих пор поддерживаю несколько проектов на vb.net
на мой взгляд язык очень достойный получился, жаль что микрософт его решила прикопать...

Информация

В рейтинге
3 953-й
Откуда
Новоуральск (Свердловская обл.), Свердловская обл., Россия
Дата рождения
Зарегистрирован
Активность