All streams
Search
Write a publication
Pull to refresh
40
1.5

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

Send message

Редактор статей Хабра скушал 10 гиг. Нашёл процесс firefox.exe, убил. Было немного итераций (может, десяток или два) «отредактировал — сохранил в черновики».

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

В качестве проверки на человека надо сначала найти человека (для причинения вреда)? Рекурсивная какая-то капча.

P.S. Первоначально мой комментарий содержал не одну, а две причины считать это неудачными примерами. От одной я отказался сразу же, отредактировав комментарий через минуту. Видимо, Хабр успел отправить уведомление с первоначальным текстом комментария.

От второй причины («алгоритм сработает на “a” и “o”») я не отказываюсь.

Зачем, интересно, вам потребовалась фраза про «неудачный пример»?

Повторяю:

Алгоритм сработает на “a” и “o”

Разработчики Wine, на вас теперь вся надежда.

Naïve и Moët не самые удачные примеры. Алгоритм сработает на “a” и “o”.

Но есть простое английское слово pâté. И его можно записать четырьмя кодепоинтами (второй — ʟᴀᴛɪɴ ꜱᴍᴀʟʟ ʟᴇᴛᴛᴇʀ ᴀ ᴡɪᴛʜ ᴄɪʀᴄᴜᴍꜰʟᴇx, U+00E2, четвёртый — ʟᴀᴛɪɴ ꜱᴍᴀʟʟ ʟᴇᴛᴛᴇʀ ᴇ ᴡɪᴛʜ ᴀᴄᴜᴛᴇ, U+00E9). И на нём функция скажет: «Бдзынь!», а мы скажем: «Вот то-то же».

Не ко мне вопрос, но, например, Photoshop CS6 (периодически смотрю его статус на WINE и вижу непофикшенные моменты). Или Visual Studio. У VS и кросс-платформенного Visual Studio Code общего только название. Добиться одинакового поведения от редактора кода VS Code не удалось, сколько я не бился.

Когда хочешь поставить плюс в карму и видишь, что уже поставил плюс в карму раньше.

Надо будет на на пару старых железяк накатить.

Непуганный прост. Я пуганный, я читаю:

будут удалены данные или контент, связанные с заблокированной учётной записью Microsoft

и думаю, относится ли это к данным, созданным локально под богомерзкой онлайновой учёткой. Не зря же они «Мой компьютер» переименовали.

забросить повыше и потом откорректировать до орбиты

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

Ну, под Андроид есть webview, а остальное можно так же, как на писи. В смысле, бизнес-логику, интеграцию и IO пишем на нативной джаве (в особо замороченных случаях — на плюсах через NDK). Правда, сделан этот webview пре-по-хаб-ней-ше. Если сравнивать с Internet Explorer, например.Там webview (WebBrowser Control) позволял через COM оседлать весь DOM. Получать доступ к списку узлов и свойств, через нативный колбек-интерфейс подписаться на любой DOM event и т.д. А в Андроиде мне пришлось городить чудовищные костыли.

Я подозреваю, это было сделано специально, как раз чтобы побудить программистов использовать ихнюю «свою дефолтную технологию». К счастью, в наши дни можно сбандлить приложение с настроенным движком. И даже есть выбор между двумя известными и одним шустрым ))

а как стилизуют интерфейсы "нативщики"?

Да я сам нативщик. В смысле, я не тащу абсолютно всё в Электрон, чтоб оно зверски тормозило. Бизнес-логику, интеграцию с ОС, файловый IO — всё это я пишу на C++, а в будущем планирую писать на Rust'е.

Но UI — строго на HTML/CSS. А как иначе? Всякие WAI ARIA, поддержку контрастности, механизмы для 100% поддержки клавиатуры (например, стилизации :focus-visible и перенаправление клавиатурных ивентов), адаптивность и т.д. — самому с нуля писать? Да ну нафиг. Как сказал тот же гуру (опять же, в моём пересказе, в соответствии с тем, как я его понял): если вы сегодня делаете UI не на HTML, то вы или миритесь с крайней ограниченностью вашего UI-бэкенда, или пишете свою гордую, ни с чем не совместимую реализацию HTML ;)

Он в одного написал движок браузера с сотнями миллионов юзеров. Для меня достаточно, чтобы считать его гуру. И насколько я понял, для него «позиционирование (то, которое имеет position, отличное от static)» и «модели раскладки» — это всё конкурирующие способы представления. А ему приходится их все поддерживать, поэтому он и называет эту ситуацию бардаком.

В комментарии, вроде, постановка задачи исчерпывающе объяснена. Есть двухмерная структура, и поэтому она grid. Но по одному из измерений (в данном случае, по ширине) нужно поведение как у флекс-контейнера с flex: 0 1 @basis; (флекс-элементами являются колонки).

Я не нашёл, как такое поведение задаётся напрямую, пришлось городить вышеприведённый костыль. Если вы знаете как, подскажите. Я всегда рад заменить костыль родными встроенными средствами, если вдруг оказывается, что я их проглядел. А если нет, это пример того, что каждая модель что-то умеет лучше других. И придётся и дальше смешивать их все, если только не появится 15-я по счёту модель, которая точно будет лучше и универсальнее.

// Generates a fluid grid, emulating flex behavior with
// flex-basis: @cell-size, flex-grow: 0 and flex-shrink: 1.
.fluid-grid(@cell-size, @gap, @column-count)
{
	display: grid;
	width: min(100%, (@column-count * @cell-size + (@column-count - 1) * @gap));
	grid-template-columns: repeat(@column-count, 1fr);
	// By default, both gaps are equal. Override row gap in-place, if needed.
	gap: @gap;
}

Если кто-то знает способ лучше, подскажите.

С первого взгляда на Model M в детстве я понял, как должна выглядеть настоящая клавиатура: бежевая, ибо стильно, с крестиком стрелок, чтобы играть, с 6-блоком для удобства редактирования текста и numpad'ом для работы с числами. С тех пор только такие и юзаю (потомков с мультимедиа-кнопками, конечно).

Часто я встречаю, что разработчики используют свойство flex-direction и gap. У меня всегда в голове вопрос: «Зачем?».

Чтобы подчеркнуть одномерность. Код ведь читают в первую очередь люди, а уже потом — браузеры.

А вообще, как сказал один гуру разработки браузеров, страшный бардак у нас в CSS — несколько конкурирующих моделей позиционирования свалены в кучу.

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

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