Segment@tion fault
1.53K subscribers
290 photos
17 videos
236 links
Тим-менеджмент, Devops, Python, Rust, JS, Linux, IoT, электрика, все над чем работаю, иногда матом
Download Telegram
У нас в модулях lib.ts
А у них в крейтах - index .rs
Закончим с ерундой по самому TypeScript и разберем Deno внутри. Кто не в курсе, Deno - это альтернативный серверный рантайм для JS, от того же автора, что и нода.

Поскольку Deno несколько лет назад перешли на Rust, движком можно легко играться в собственных интересах. Основные крейты, которые вам понадобятся - deno-core и (возможно) deno-ast.

С deno-core вы получаете примерно голый Rusty V8 JS engine, но в гораздо более девелопер-френдли обертке. У вас, само собой ничего нет, даже console (всё это дает deno-std в самом Deno), но сам рантайм уже полностью готов к использованию.

Главный краеугольный камень любого JS-рантайма - это модули. deno-core дает для этого трейт ModuleLoader, который довольно легко имплементировать и самому решать где, как и зачем брать модули и куда их хранить. И когда вы загружаете в рантайм главный модуль, и когда один модуль импортирует другой, рантайм будет вызывать вашу impl ModuleLoader, чтобы она отдала ему исходник.

Гибкость позволяет вытворять с модулями примерно всё, что пожелается. Например, стандартный префикс Deno для модулей npmjs: import { ... } from "npm:somelib" вы можете поменять на "mycompany:somelib" и разрешить юзерам грузить модули с вашего собственного хранилища. Попутно кешируя их локально или нет - это уже дело ваше.

На этом можно было бы остановиться, но нельзя не упомянуть deno-ast. Как уже понятно из названия - это парсер от команды Deno, который умеет в CJS, TypeScript, React JSX, а также умеет делать некоторые оптимизации. Поэтому вы можете легко разрешить юзерам использовать и эти языки в своих скриптах и сервисах, просто пропуская код модуля через функции крейта и получая готовый JS на выходе. Строкой или токенами.

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

JavaScript, как язык - ужасен, вы все знаете сотни анекдотов про сложения строк и чисел и поведение this, не буду повторяться. А TypeScript и всё прочее будущее естественно везде и всегда будут наследовать все косяки и упоротую легасню родителя.

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

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

Тоесть если TLDR: JS - урод, но у него очень и очень много денег. Поэтому он пережил и переживёт еще многих. И если сегодня ставить, например, на питон или жс, я выберу жс чисто из меркантильных интересов.
Что делать с спам-ботами в комментах?
Anonymous Poll
48%
Оставить, они веселые
27%
Забанить, надоели
25%
Там есть боты???
После месяца JS/TS целый день кодил на крестах.

Никогда не думал, что буду так рад крестам. Как родным.
У Rust весьма продвинутый FFI. Вот что происходит, если вы вызвали foreign function на крестах, а она выкатила крестовый exception:

fatal runtime error: Rust cannot catch foreign exceptions


И никто никуда в корки не падает. Культурно намекают и уходят в safe panic.
Пощупал что нового в крестах за те 10 лет, когда мы к счастью не виделись. Как и ожидал, ничего полезного нет.

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

Реальность 2025: два ПЛК на Typescript в докере общаются между собой через Redis

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

Когда твоя звуковуха едет на Ибицу, а ты - нет.
Чешский университет VŠE отменяет со следующего года бакалаврские работы - профессора не могут определить, человек их писал или ИИ.

Вместо письменных работ студенты будут делать большие практические проекты с небольшими отчётами.

Я свои дипломы так и делал. Практическую часть я, а теорию требовали на 100+ страниц. ИИ тогда не было, поэтому писала живая девочка.
Наши будни:

- ты чего такую кривую функцию написал? вот так и вот так не работает. ChatGPT писал?
- эм да, а откуда знаешь?
- он мне тоже такую же кривую написал
Если ваша работа кажется вам бесполезной, вспомните что кто-то собирает пакеты cargo и rustc для Debian.
У нас банки стали требовать кроме пароля и 2FA еще и дату рождения. При том, что 99% проблем у клиентов - это скам. И естественно клиент введет и пароль, и 2FA, и дату, и девичью фамилию своей кошки.

Театр безопасности добрался и до IT. Встречайте.
Полиция Чехии расследует дело о мошенничестве. Мужчина в Tinder думал, что общается со Скарлетт Йохансон, а оказалось это был GPT-бот. Который развёл несчастного более чем на 10 тысяч евро.

Давайте, вводите обязательное 2FA дальше. Пароли, дигипасы, отпечаток пальца.
ОбычныйСовременныйDevops:

- у вас веб глючит, если nginx поставить впереди. Ругается, что invalid ip address
- покажите nginx.conf
-...
- а зачем вы proxy_set_header X-Real-IP \$remote_addr с экранированием написали?
- у нас так всегда работало
- хорошо, зайдём по-другому. откуда вы этот конфиг скопировали?
- из bash-скрипта...
Ровно 30 лет назад я начал свою карьеру в IT. И сразу со стартапа - это был порт игрушки с УКНЦ на Spectrum, которую я успешно продал в виде целой одной копии на местную станцию "Юный техник".

Юбилей!
У не-монтажников частый вопрос, что значит это загадочное 6v5.

Ответ прост - в реальной жизни на разъёмах часто экономят место и единица измерения едет на место точки/запятой.

6v5 = 6.5v. и так далее.
Основная проблема с Linux и usb mass storage не в том что usb кривой сам по себе, а mass storage контроллеры особенно. А в том, что по-умолчанию при жестких ресетах контроллера Linux тут же радостно присваивает диску новую букву.

И если у вас там с диска подключен LUKS, а потом еще не дай бог подмаплен какойнить взрослый FS с пулами, то вся эта конструкция будет весело висеть, аж до ребута кнопкой. Почему в ядре выбрали для надругательств именно USB - история умалчивает. На практике я не раз ошибочно дергал не тот SATA/SAS из карманов, и при быстрой вставке обратно можно почти всегда отделаться легким испугом.
Мое любимое обращение в суппорт:

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

и его подвид

- у нас упала фича Х в проде, мы ничего не делали, ребут не помог
- вы ставили апдейты?
- нет не ставили
- вы ставили апдейты
- эм... да. но мы на них не думали