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

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

Отправить сообщение

Еще бы и курсоры полноразмерные.

Здорово вы всё расписали, больше бы таких комментариев на Хабре!

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

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

На Node.js вообще без импортов (или require) вряд ли получится, потому что здесь стандартная библиотека на модулях (в отличии от браузеров).

Если используется TS, то импорты нужны еще и для передачи типов. Так что если даже сама зависимость инжектируется, все еще нужно в модуль пробросить ее тип (иначе зачем TS?), для этого тоже нужен import.

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

Чем эту фигню из рекламы покупать лучше уж сделать кондей на водопроводной воде как тут например:

Фрустрация от программирования? Нет, не слышал. Чем сложнее задача - тем больше кайф, когда ее наконец удается решить. Попутно узнаешь много нового, развиваешься, учишься решать проблемы. Для меня все остальное не работает - деньги, признание - это все второстепенно (хотя важно и приятно), по сравнению с кайфом от победы над задачей. Так что никаких фрустраций - только азарт и желание доказать себе, что ты можешь победить и на этот раз!

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

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

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

В 2021 думаю имеет смысл в начале любой подобной статьи оставлять рекомендации поискать в начале API ресурса, который планируется парсить и как можно это сделать, если на апи нет открытой документации. Во многих случаях это оказывается удобнее и экономичнее чем парсить html.

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

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

Самая большая и серьезная проблема у Nest.js это то, что по умолчанию под капотом у него все тот же «любимый» всеми Express.js
И несмотря на то, что все это обмазано архитектурным сахаром, копни чуть глубже — и опять вляпался в Express.
Думаю стоило об этом упомянуть в статье.
ps. да-да platform-agnostic — я в курсе, но скажите по-честному, часто ли для новых проектов на nest.js будут выбирать что-то отличное от дефолтных настроек?
И мне решительно непонятно, почему они не взяли уже готовые проекты Кадыр Хана, почти не уступавшие по характеристикам другим аналогам?


Я думаю, что к им просто к тому времени просто не выгодно было с экономической точки зрения. Атомная экономика просчитывается на десятилетия вперед, и если они понимают, что постройка такого предприятия не будет экономически эффективной, то и смысла нет начинать.

Привет, спасибо за статью! У меня вопрос - а как сохранять результат обучения?

Какая-то слишком радужная статья. У меня не такой позитивный опыт с датасферой.

Во-первых очень часто вылазили ошибки такие: Execute error: Servant g1.1 not allocated: Internal Error. Абсолютно неинформативно - ты ждешь несколько минут пока запустится ячейка, потом раз - и эта ошибка. Причем это не ошибка в коде, потому что через какое-то время все работает на этой же ячейке.

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

Для решения второй проблемы придумана возможность создавать свое окружение при помощи Docker. Пишешь прямо в проекте свой Dockerfile со своими зависимостями, билдишь его и ставишь использовать по умолчанию. Интерфейс очень своеобразный - надо писать код dockerfile прямо в проекте, жать на кнопку Build и молиться что все соберется как надо.

Может не собраться. В таком случае думаете можно отредактировать файл и запустить снова? Нет - редактировать нельзя, надо клонировать конфигурацию (у нее при этом на конце появляется посфикс "- clone") и редактировать-билдить заново.

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

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

То, что при сборке нельзя выбрать на каком виде инстансов будет производится сборка тоже нельзя - только на c1.4. Это особенно доставляет, потому что некоторые пакеты при сборке проверяют конфигурацию системы и не ставят модули для cuda, если не видят в системе GPU. Мне пришлось патчить установщик Deepspeed чтобы отключить эту проверку, а я тот еще питонист, так что это заняло немного дохрена времени.

Кстати, если вы думаете, что сможете при сборке забрать файлы из проекта (в моем случае патченый DeepSpeed), удачи вам с этим - я так и не нашел как это провернуть, пришлось их куда-то выкладывать, откуда можно потом curlом скачивать в процессе сборки образа.

"Что же ты там такое запускал" - недоуменно спросите вы?

А я просто хотел запустить сберовский ruGPT3XL_generation.ipynb.

"Ну и что же в итоге, получилось?"

Да получилось, но сколько времени и нервов я на это потратил - вам лучше не знать

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

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

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

Это в теории. А на практике обычно:

1 Заходишь на хабр, чтобы дописать статью...

1а Смотришь, что новенького

1б "Я не буду это читать, только гляну коменты"

1в Обнаруживаешь, что на хабре опять кто-то не прав

1г Пытаешься доказать, что он не прав

1д Тебе доказывают с пруфами, что не прав ты

1е Тебя бомбит

2 Закрываешь хабр. Смотришь на время, уже пора спать...

Ого, уже больше года прошло, и вот первый комментарий ))

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

А давайте я сделаю канал, где буду снимать, как я пытаюсь писать статью на хабр каждый день по 3-4 часа? Будете такое смотреть?

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

Информация

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