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

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

0,9
Рейтинг
2
Подписчики
Отправить сообщение
Не понял преимуществ в задании пути как свойств объекта

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
на мой взгляд язык очень достойный получился, жаль что микрософт его решила прикопать...

Спасибо огромное за статью! Как же мне не хватало такого материала, когда сам разбирался с tsconfig!

Тут просится редьюсер. Например так:
const flat = (input) =>
  Array.isArray(input)
    ? input
    : Object.values(input).reduce((acc, item) => [...acc, ...flat(item)], [])

const sendMail = (email) => console.log(`Send to: ${email}`)

flat(companyEmailAddresses).forEach((email) => sendMail(email))

Кроме того, 67 плат в партии на самом деле оказались полностью работоспособны и не требовали ремонта.


Можно было остальные выкинуть и было бы 67 плат меньше чем за фунт каждая. Уже неплохо ))

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

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

Это немного не то. Тут рефлексы.

В 2017 году крупнейшим проектом распределённых вычислений стал Bitcoin, обогнав Folding@Home.

Сравнивать майнинг биткоинов с научными вычислениями как минимум некорректно. Конечно если кто-нибудь не придумает, как свести эти вычисления к расчетам хэш-сумм…

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

Информация

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