Pull to refresh
46
spiritedflow@spiritedflow

User

Send message

[]const u8 не имеет нуля в конце. Передаёшь в C-функцию напрямую - UB. Надо .ptr и убедиться что строка null-terminated.

Ну тут немного недоразобрались. Вот тут наглядно про сентинелы:

другими словами можно использовать или просто указатель на null-terminated строку ( [*:0]u8 = @ptrCast(...) ) или, если длина известна, сделать null-terminated slice ( [:0]u8 = @ptrCast(data[0..len]) ), здесь len не должен учитывать последний 0.

Все же легчайший интероп с C - фишка зига. Было бы странно, если бы там не было бы аналога базового char*

В Rust - за доли секунд

Знатно набросил. Если написали на зиге в comptime майнер, это ваше дело. Но в бенчах отключайте его, а то не все поймут шутку.

У меня в проекте как-то было ровно 0 (ноль) определений типов (т.е. всё dynamic). Компилятор периодически говорил - а вот так нельзя, т.е. вычислял из кода и находит ошибки.

В тайпскрипте так можно?

PS: не то, чтоб я принципиально типы не писал - просто на тех версиях проверку типов уже сделали, а вот синтаксис для их описания еще нет. Не знаю как сейчас там.

Понял как spinel угрожает Crystal. Но при чем здесь Elixir? Ведь он связан с руби разве что тем, что создатель любит руби и местами использовал те же ключевые слова в новом языке.

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

И тут внезапно на хабре из-за рубежа "уууу, участников форума насторожили два момента" ... "ооо, может быть проверкой, выходит ли пользователь в интернет «напрямую» или через VPN/прокси" ... "Не пользоваться MAX".

PS: название домена "онемэ" тоже хорошее.

Отлично! Спасибо!

Зря не написал про бонус разработчику от докера - теперь не нужно вводить эти ненужные пароли чтоб получить рута на хосте (docker run -it -v /:/mnt/root debian). Очень удобно /s

Подавился чаем на словах "великий русский писатель Акунин".

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

но SSH‑сервер в Phoenix по умолчанию не принимает запросы из внешних сетей.

В Фениксе нет работающего ssh сервера. Вообще. Ни для локальных ни для внешних соединений.

Чтоб он там появился, надо залезть в исходники и написать немного НОВОГО кода для запуска этого сервера и его первичной конфигурации.

Это все равно что найти уязвимость в каком-нить npm пакете, который никак не используется и не запускается в NextJS, а потом рассказывать что этот фреймворк "по-умолчанию не принимает запросы из внешних сетей".

Конечно. А бесплатное у нас, что? Правильно, сыр.

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

Никогда такого не было, и вот опять.

Сначала миллионы человек собирают приватную информацию в одно место, а потом удивляются, что вся она продается за одну банковскую транзакцию. Вот так вот. Удобное место для общения, оказывается, не менее удобно и для покупателя чужих данных. Да и не чужие они уже. Люди сами передают все права в соглашениях.

А есть же федиверс, самохостинг. Интернет так-то вообще начинался как p2p сеть, которую фиг "купишь" или "сломаешь". Но что-то пошло не так

ramalama:

╰─➤  ramalama pull smollm2
...
╰─➤  ramalama run smollm2
🦭 > Hello bro! Can I help you?
Yes, I can help you with something. Do you have any specific questions about the English language or a particular area you'd like to explore?

Она также дает API, работает в контейнере и пробрасывает туда GPU.

Но, в отличие от докера, который сплошная дыра в безопасности, ramalama использует podman. А значит не требует рутового демона, работает из под пользователя, и прекрасно интегрируется в пользовательский systemd как тут описано: https://github.com/containers/ramalama/blob/main/docs/ramalama-serve.1.md#generate-quadlet-service-off-of-huggingface-granite-model

python/Go/что-то еще с нормальной поддержкой в копании...

Ну "поддержка в копании" у Erlang-а на недостижимом для python/go уровне. Там можно в приложение зайти как по SSH на сервер, и, не останавливая приложение (даже работающий прод), изучать, как оно работает, смотреть "процессы", смотреть их состояние, трейсить RPC между ними и любые функции в них. И на лету править код...

ИМХО через чур функциональный

И не просто так. Те, кто пытался повторить архитектуру Erlang-а на императивных языках (на том же go есть несколько попыток создать OTP, на java были) с сожалением обнаруживали, что с виду OTP создать можно, но гарантий OTP оно не дает. Оказывается гарантии стоят на обязательной иммутабельности, а язык с обязательной иммутабельностью - функциональный по-определению.

и каждый раз глядя на это люди говорят, а давайте лучше перепишем

Возможно они так говорят не потому что go/python лучше для задачи, а потому что им лень разбираться с Erlang.

Как вообще Erlang и тем более Elixir оказались в этой статье. Последний же не просто не на дороге вниз, он пока только набирает комьюнити.

Годная площадка, и, внезапно, годная первая серия. На последней схватке так даже Ghost in the Shell вспомнился.

Но, как и сказали, нам очень интересен ваш протест. Держите в курсе.

Слышал про atomvm - там вроде как сделали BEAM для микроконтроллеров, без прослойки в виде операционки. Но я там не нашел ничего про hard realtime.

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

тот же liveview или phoenix стоят того

А знаешь в чем вся прелесть liveview?

Такое можно сделать только в stateful бекенде, потому что liveview - это актуальная копия клиентского DOM-а, но на стороне сервера. Т.е. в бекенде есть код, который держит эту копию, на стороне бекенда же рендерится новая версия DOM-а, когда обновляются данные, на стороне бекенда считается разница, и бекенд отправляет разницу в вебсокет клиенту. Т.е. это типичный SPA, как Angular, React и прочие, но backend-side.

И это масштабируется. А ведь нельзя так просто взять и отмасштабировать stateful бекенд.

Чтоб отмасштабировать stateful бекенд (на обычном языке), надо или сделать его stateless и вынести состояние во внешнюю базу (как делают все), но тогда на каждое обновление и клик по сути надо делать SQL запросы (как минимум update), что уже латенси и лютый бред (для SPA). Или терять весь DOM, если клиент вдруг внезапно переподсоединится к другой ноде в кластере.

И уже никак нельзя допускать рестарта пода от к8s. Потому что если куб или докер рестартанул stateful бекенд, который в памяти держит копии DOM-а для 100500 клиентов, то все эти клиенты внезапно потеряли всю свою навигацию и откатились в home page.

Liveview - он снаружи обманчиво простой, но если попробовать его повторить на другом языке, то внезапно начинаешь понимать зачем нужно дерево супервизоров а не просто кубернетис, зачем нужна изоляция ошибок, почему нужны иммутабельные данные (а значит и функциональный подход), и вообще вылезает огромная куча проблем и откровений, после которых начинаешь по другому смотреть на Erlang/Elixir а также BEAM и OTP.

На питоне да, а вот про поддержку XLA в ноде я что-то не слышал. Хотя всегда можно из ноды вызвать питон с JAX.

Но раз мы дружно вычеркнули CPU-bound задачи из недостатков на практике, то наверное и тезиса для спора нет.

И поэтому, когда я читаю, что в CPU-bound задачах эликсир показывает себя на уровне интерпретируемых языков, то у меня возникает вопрос - а зачем мне его тогда брать?

Вот это zigler - https://github.com/E-xyza/zigler Он позволяет вставлять zig код прямо в elixir код. Даже не отдельным файлом. Скорость этой функции должна быть на уровне компилируемых языков.

Вот это rustler - https://github.com/rusterlium/rustler Надо писать в отдельном файлике, но зато это уже точно скорость и гарантии раста. Кстати эта либа широко используется в продакшине.

А вот это Nx - https://github.com/elixir-nx/nx Можно писать математику прямо на эликсире, которая потом автоматически скомпилируется под CUDA или ROCm. Другими словами можно, не выходя из эликсир кода, сделать тензор на 100500 килобайт и посчитать какой нить softmax на 10 тысячах GPU ядер моей Nvidia RTX 4090 за считанные микросекунды, за которые и rust и C на 6-ти CPU даже "мама" сказать не успеют.

Проблемы с CPU-bound задачами в эликсире есть только у:

  • тех, кому религия запрещает смешивать языки в проектах

  • тех, кто соревнуется в бесполезных бенчмарках

  • тех, кто по бесполезным бенчмаркам делает выводы.

1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity