Pull to refresh
0
0
Алексей Орленко @aqrln

Разработчик

Send message

Извините, а с чего вы взяли, что в Rust ссылки являются «обёртками в stdlib», а не конструкцией языка?

Проверяем. И получаем нашу запись в истории подключения, но почему то с запятыми. Javascript, WTF?

Ну так понятное дело. history.map(..).reverse() — это массив, а значение textarea.value должно быть строкой. У массивов же метод toString реализован как, грубо говоря, return this.join(',').

Графический стек в опенсорсных юниксах — это, конечно, ужас, но всё же сомневаюсь, что он является хоть сколько-либо приоритетным сценарием использования для разработчиков данной ОС, так как судя по написанным ими тулзам, сами они на винде сидят. Профит для встраеваемых систем очевиден, а вот реально интересно было бы узнать, насколько она подходит на роль серверной ОС: насколько производителен сетевой стек, есть ли что-то для эффективного асинхронного неблокируещего IO вроде epoll в Linux или kqueue в BSD-системах и т.д.
/* irony on */
Кстати да. Хоть здесь можно будет укрыться от Поттеринга.
/* irony off */

По поводу Esc сам изначально был недоволен как пользователь Vim'а, так как идея постоянно промахиваться пальцем мимо сенсорной кнопки как-то не улыбалась, но потом вспомнил, что можно его замаппить на бесполезный Caps Lock, так что это не проблема.

Ну здесь есть принципиальная разница. В Windows-приложениях для комбинаций используются три модификатора (Ctrl, Alt и Shift) и комбинации с F-клавишами нужны довольно. На маках же на одну клавишу-модификатор больше (Command, Ctrl, Option (=Alt) и Shift), что на порядок увеличивает количество возможных комбинаций с алфавитно-цифровыми клавишами, а комбинации с F-клавишами встречаются крайне редко (вплоть до «почти никогда» в исконно маковских приложениях, а не кросплатформенных и портированных).


Ещё забавнее решение Lenovo скопировать поведение F-клавиш у Apple выглядит с учётом того, что хоть на маке медиа-функции нужны значительно чаще, чем F-клавиши, чтобы вернуть им классичесское поведение нужно поставить один чекбокс, до которого можно дойти из любого места системы ровно за три клика мышкой, в то время как на ноуте Lenovo мне в своё время пришлось не просто искать это в настройках BIOS, а и перед этим его обновить, так как в изначальной заводской прошивке такой опции попросту не было.

Собственно да, замыкания там не нужны. Как по мне, JSTP должен использоваться только для сериализации анемичных структур данных и единственное применения для функций там — это небольшие геттеры, буквально формулы от нескольких полей, ни в коем случае не поведение. MarcusAurelius привёл хороший пример, в котором person.birth.date — это обычное поле, а person.age возвращает возраст пользователя в момент вызова. Я вижу мало применений такой технике в прикладном коде, но для пока несуществующих GlobalStorage и JSQL это будет довольно полезная вещь.

1. Намертво привязать всё к этому несуразному языку — это и есть основная идея, хех. NechaiDO в последнем комментарии отлично это описал копипастом одного известного твита.

2. Это не сизифов труд, а кодинг в своё удовольствие. Кто-то собирает марки, а кто-то пилит ради лулзов свои технологии. Если время и деньги на это есть, то кто может это запретить? В конце-концов, «ради лулзов» — это лучшая мотивация, которая существует в этом мире.

3. AST лучше, спору нет, но посколько JavaScript не гомоиконичен, как Lisp или какой-то Rebol, то это противоречит пункту 1. Вообще, идея передавать функции в объекте мне очень не нравится, но если же разделять данные и метаданные, и сначала передавать один раз схему данных, а затем слать лишь чистые значения без имён полей, то тогда это можно по-человечески реализовать. Методы будут передаваться лишь один раз при передаче, фактически, уже класса, и можно позволить себе такую затратную операцию, как парсинг при помощи Esprima, анализ и валидацию AST на предмет разрешённых операций. Остаётся открытым вопрос о времени исполнения, так как г-н Алан Тьюринг в своё время математически обосновал, почему одна программа в общем случае не может узнать, завершится ли другая программа и если да, то за какое время, не выполняя её, но и эта проблема решаема, если разрешено будет лишь ограниченное подмножество операций над полями и всё. Даже не факт, что циклы нужны, а если и да, то можно банально ограничить количество разрешённых итераций.

Почему нет? В отдельном процессе норм.

Считать π в геттере — довольно странное решение, имхо. Да и написано уже выше, что вычислимые поля пока нигде в JSTP не используются, а когда/если это понадобится, это уже отдельный вопрос. Просто теоретически такая возможность заложена и когда будет должным образом реализована, API для всего этого дела останется таким же, как и сейчас. Это ж эксперименты и угар, а не продакшн-реди код, чего вы хотели ¯_(ツ)_/¯

Так потому что age() вызывается уже после runInNewContext, смотрите мой комментарий выше.

Это в случае, если будет что-то вроде (() => { while (true) /* do nothing */ ; })(). А функции с вычислимыми полями, которые вызываются позже, теоретически можно передавать, но на практике это нигде не используется сейчас, а когда будет, то естественно, что всё это будет происходить не таким кустарным способом.

Таймаут должен быть в runInNewContext, и в JSTP он по умолчанию равен тридцати миллисекундам.

Information

Rating
Does not participate
Registered
Activity