All streams
Search
Write a publication
Pull to refresh
40
1.6

Люблю делать UI и офисные приложения

Send message
  1. Объявляешь конкурс: «Надо улучшить перфоманс на 5%, ибо настолько он отстаёт от Си».

  2. Обещаешь 20К.

  3. Все разносят новость, что Rust всего на 5% медленнее Си.

  4. С большой долей вероятности ничего не платишь конкурсантам (ибо сделать это, ИМХО, очень трудно).

  5. Ничего не платишь за рекламу.

  6. ???????

  7. ПРОФИТ!

Грустно, девицы ( Я на его основе делал контекстный автокомплит.

Ожидания:

опытный разработчик сможет провалидировать код от нейросетки и поправить его руками до нормального состояния

Реальность:

заподозрила неладное, когда заметила … случайную ссылку на ChatGPT в библиографии, повторяющиеся опечатки и изображения, показывающие фигуры с дополнительными конечностями

Очень хорошая статья. Ёмко, по делу, и с разбором нюансов. Точно лучше, чем официальная the Book ))

Случилось самое страшное, что может случиться… (Пардон).

Дал DOJ себя выгнать, и всё покатилось, вся наша айти. Не забудем, не простим.

файлы с HTML-шаблоном <template>…</template>

P.S. Иногда полезно вместо <template>…</template> оформлять шаблон как <div class="template">…</div> (.template { display: none; }), чтобы этот шаблон перед инстанцированием можно было гибко настраивать не парся строку (<template>…</template> это просто строка, лишённая всякой семантики), а пользуясь встроенными в браузер средствами доступа (селекторами).

x-avatar[size=lg] {
width: 3.5rem;
height: 3.5rem;
}

А теперь представьте, что этот адаптивный компонент (зависимый от размера шрифта у пользователя за счёт использования rem) надо поместить в неадаптивное окружение (не зависящее от размера шрифта). Чтобы не было такого, что рядом два компонента, и один компонент при увеличении шрифта увеличивается, а второй — нет. А всё спрятано в shadow DOM.

Чтобы решить эту проблему «компонентным» способом, по-хорошему при проектировании компонента вам нужно предусмотреть режим «адаптивный/пиксельный» (или явно, или в форме CSS-переменных). Но в девяти с половиной случаях из 10 это никому не нужно, и поэтому не делается. А в десятом вы приплыли.

И начинаются пляски с инъектированием CSS, либо через аппендинг <style> (что в общем случае невозможно без знания жизненного цикла элемента), либо через new CSSStyleSheet, а там свои подводные приколы. Главное, что только через JS. В то время как если писать неизолированный код, достаточно специально созданного для таких случаев нативного !important.

this.innerHTML = "<h1>Santa's List</h1>…"

Настоящая проблема в том, что HTML не поддерживает полноценную шаблонизацию. И для шаблонизации начинают использовать Джаваскрипт. Один .js-файл можно подключить к двум разным проектам, и не придётся копипастить <h1>Santa's List</h1> в код страницы и туда, и туда. Только вот Джаваскрипт не был предусмотрен для хранения структуры, и вы в придачу получаете кучу проблем. Например, внутри «Santa's List» можно спрятать зловредный код, и скрыть его от показа в редакторе при помощи вот таких техник. Если бы структура задавалась только в файле с разметкой, можно было бы проконтролировать отсутствие в неё скриптов (точки входа ведь известны — атрибуты обработчиков и скриптовый тег). Локализовать (делать локальные версии под разные языки) такой код, особенно если активно используется интерполяция — то ещё удовольствие. И так далее, и так далее.

Лично я для реюзабельности давно пришёл к внешней шаблонизации (раз уж внутреннюю не завезли). То есть, файлы с HTML-шаблоном <template>…</template> идут в комплекте со скриптами и стилями, и подставляются при сборке конкретного проекта. А набор таких файлов при локализации проекта можно как одно целое отдать переводчику.

И это только два примера навскидку!

Я бы сказал, что компоненты в нынешнем виде — вообще плохо продуманная технология, минусы вы соберёте все, а плюсы, которые мог бы дать только компонентный подход, не поддерживаются. Пример такого «плюса»: чисто вспомогательные вещи типа отрисовки рамки выделения можно было бы делать на лету, из onpaint, чтобы не создавать и не модифицировать левые узлы в DOM (во-первых, это ненужная нагрузка на браузер, особенно с учётом уровней перерисовки, во-вторых — это редкий пример, когда императивный код выразительнее, чем декларативный — представьте, какое удовольствие писать инверсную рамку выделения на HTML/CSS). Но этого-то как раз и нельзя.

ищу как правило прямо из адресной строки

Мне этого не понять, извините. Если искать из адресной строки, то каждый введённый URL ведь будет проходить через поисковый сервис, не так ли? А даже если временно и не так, я не хочу разбираться и отслеживать в каждой версии, не стало ли оно, наконец, так. Для ввода URL есть поле ввода URL, для поиска — поле ввода поискового запроса, для браузинга есть нормальный браузер, а не браузерный продукт с подсластителем и загустителем, а для этого браузера есть расширение Context Search, которое выделенный фрагмент отправляет в любой из 12 поисковиков, которыми пользуюсь лично я (Google, Вики, MDN, Urban Dictionary, Forvo, YouTube и так далее). Вводить поисковый запрос руками благодаря этому аддону мне приходится крайне редко.

А кто-нибудь когда-нибудь нажимал эту кнопку? (Кроме как по приколу, типа: «Гугл, как бороться с зависимостью от азартных игр?»)

Нет ни одной причины, по которой машины не смогут заменить людей полностью.

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

Что эти алгоритмы собой представляют — пока неизвестно, хотя прогресс есть. Благодаря настоящим учёным (Докинзу с его меметикой, например), а не LLM'кам.

У нас, видимо, разное понимание «императивщины». Для меня императивщиной было бы, если бы этот код был написан на for'ах и переменных (периодически вижу такое на всяких форумах).

Я вижу, мы с вами начали разговор не с той ноги.

Спасибо за ценные советы начинающему растеру (крастерианцу, или как там это слово читается). Если можете ещё что-то полезное сообщить, буду премного благодарен. Я не знал, что #![allow(non_snake_case)] добавляется один раз на крейт. На SO пишут, что “#![allow(non_snake_case)] in the first line will apply the attribute to the entire file”, соответственно, я и решил, что это необходимо пихать в каждый файл. Рад слышать, что это не так. Я всегда радуюсь торжеству здравого смысла. Конечно, лучше всего было бы вообще не лезть в именование переменных, но если это, по крайней мере, можно отключить глобально, это хорошая новость.

Если вы ещё расскажете, как зафорсить правило brace_style = "AlwaysNextLine" не переходя на ночной канал (сейчас я не знаю таких способов), будет совсем хорошо.

И ещё заодно спрошу, может знаете: почему brace_style = "AlwaysNextLine" не применяется к паттерн-матчингу? После match автоформаттер упорно убирает перенос.

И ещё: какое правило отвечает за

var
    .do1()
    .do2();

? Это форматирование из документации, но форматтер периодически вытягивает запись в одну строку.

Заранее спасибо.

Что за поклёпы? НЕТ там никакого навязанного стиля. Авторы FCL (стандартной библиотеки) просто пишут единообразно, только и всего. Если вы будете писать иначе, чем они, компилятор не будет выдавать вам warning'и «Ты неправильно назвал переменную, что ты себе позволяешь!». И IDE там не построена вокруг встроенного в язык линтера (что в некоторых случаях выливается в буквальную невозможность отредактировать текст), хотя и язык, и IDE писала одна контора. Я такого насилия над кодером не припоминаю со времён ZX Spectrum 48. Очень жаль, что у зумеров нет опыта программирования на нём, а то живо научились бы свободу ценить.

Всю свою жизнь я работал в местах, где трудились умные люди. А умные люди всегда договорятся между собой сами. Любители snake_case с любителями camelCase в том числе. Вариантов мирного сосуществования много, рассказывать тут о них я, извините, не буду. Кто их не видит, обычно трудится в Макдональдсе с его униформой.

Ну так скопировали бы с C#, и не было бы дурацких споров каждый раз.

Вы удобно устроились: ВАМ нравится этот навязанный стиль, и теперь рассказываете другим, как он помогает победить дурацкие споры.

Так и выборы, получается, не нужны. Дурацкие споры какие-то каждый раз. А всё из-за того, что каждый раз находятся некоторые, которые почему-то не согласны.

А я первый раз вижу такой упячный стайлгайд. Поучились бы у Хейлсберга.

Чтобы не было этих дурацких споров, достаточно просто отделить линтер от стандарта языка. Устроили, понимаешь, армию. Всё должно быть покрашено зелёной красочкой и посыпано песком.

как же надоело нытье про отступы

А я буду, буду, буду… гхм… ныть, потому что мне больно и обидно! (ц)

Я, правда, с Питоном дел не имел, зато сейчас вожусь c Растом. Ух, повбывав бы. Чтобы поставить { на новую строку, мне пришлось переходить на nightly-билды (!!!). Да, иначе там никак. А чтобы называть переменные в том стиле, как я сам хочу, нужна директива компилятору в каждом файле (!!!!).

Если бы ещё и отступы навязали, я бы, наверно, просто взял другой язык. Жизнь слишком коротка, чтобы проводить её, злясь перед монитором.

Information

Rating
1,409-th
Location
Россия
Registered
Activity

Specialization

Software Developer, Application Developer
HTML
CSS
JavaScript
Windows API
C++
UI/UX design
Interface development
Product Design
Adobe Photoshop
Designing interfaces