Сужу со своей колокольни - чем дальше, тем более любые запросы подобного рода воспринимаю как вымогательство отдать просто так главную ликвидную валюту современного пользователя: внимание и личное время. Лучшее, что могут получить от меня такие приложения - dismiss диалога. Самым настойчивым не ленюсь ходить в стор и писать все, что думаю об этом с соответствующей оценкой.
Надеюсь, что это вымрет когда-нибудь. Должна быть автоматически подсчитываемая сторами метрика что-то вроде функции от количества активных пользователей и времени сеанса и типа того.
Еще пример использования extension types - замена т.н Sentinel в том случае, если нужно обнулять поле класса при copyWith. Есть разные способы, раньше я делал объекты-врапперы, сейчас работаю через extension types
extension type const CWValue<T extends Object>._((T?, Type) _value) implements Object {
const CWValue(T? value) : this._((value, T));
static T? resolve<T extends Object>(CWValue<T>? v, T? originalValue) => v == null ? originalValue : v._value.$1;
T? get value => _value.$1; // ignore: avoid-renaming-representation-getters
}
class MyClass {
final int? a;
MyClass({
required this.a,
});
MyClass copyWith({
CWValue<int>? a,
}) {
return MyClass(
a: CWValue.resolve(a, this.a),
);
}
}
final a = MyClass(a: 100)
final b = a.copyWith(a: CWValue(200))
final b = a.copyWith(a: CWValue(null))
А как можно применить enum в случае, когда бекенд (например), возвращает строковые нефиксированные идентификаторы для своих сущностей? Какие-нибудь base58 или UUID? Для сколь нибудь сложного приложения таких типов идентификаторов будут десятки и даже сотни. Если их всех выражать через String, то вероятность спутать один архитектурно несовместимый тип с другим где-то в глубинах приложения (например UserID с LocationID или UserGroupID) стремится к единице. Понятно, что все это можно отловить тестами и все такое (когда-нибудь). Мне предпочтительнее такая организация работы при которой подобные опечатки отлавливаются линтером мгновенно и без моего участия.
Для меня ET это аналог type branding в TypeScript и в этом смысле используется чрезвычайно широко. Это исключительно полезная штука в делегировании поиска ошибок компилятору. Все примитивные идентификаторы в виде строк или чисел я оборачиваю в ЕТ для того, чтобы никогда не спутать между собой при передаче в методы, создании дженериков и вообще везде. Раньше для этого не ленился делать классы-обертки
Копирование объекта через alt + drag хорошо бы иметь
Форма (размер) стрелок (line ending) хотелось бы иметь разные в ассортименте
Наконечник особо жирной линии вторгается в пространство объекта, а должен лишь соединять (прикасаться). То есть хочется быть более умного масштабирования. Надеюсь, понятно объяснил
У всех этих досок есть один недостаток - нет таблиц, в том смысле что нет сущностей, чтобы объединяли несколько объектов и у каждого был бы свой набор connection/anchor point. В случае таблиц - у каждой строки была бы своя привязка для соединительных линий. Имея такую доску можно рисовать простые ER диаграммы
Использовать клавиатуру ноутбука (особенно расположенную под углом) - верный способ поиметь проблем со здоровьем.
Стол нужен с выемкой или внешними подлокотниками
Как в принципе можно использовать сегодня мониторы с разрешением меньше чем 4к - вообще не понимаю. Это какие-то запредельные бедность или неуважение к себе. Ну разве что рилсы смотреть, как там кто-то высказался
Смотрю на фото и представляю как много попыток и поз было сделано для того, чтобы передать стратегичность взгляда, устремленность в будущее и, естественно, мимолетную случайность кадра.
А есть возможность посмотреть на результат, в источниках и/или готовом приложении? Без этого непросто увязать в голове два утверждения о том, что 90% кода сгенерировано и что 20-80% UI нужно переписать. Что в итоге-то получилось?
Стол 140x80 (глубина ГОРАЗДО важнее длины) и лоток для кабеля обошлись мне в 7000 + 1000 рублей с доставкой в пару дней; Качество, как минимум не хуже. Дополнительно купил два подставки под локоть - то есть по факту глубина стола 90+см.
Свой стол имеет смысл делать только со своими специфическими требованиями, как минимум с вырезом под локти. Впрочем, если вы работаете так, как на фото показан ноутбук - то есть на ноутбучной клавиатуре, под наклоном, то в остальном здоровье беречь не имеет смысла.
Что мне категорически не нравится в текущем Обсидиане:
Странный рендеринг маркдауна. Результат не должен зависеть от форматирования оригинального маркдаун-файла, например, наличия пустых строк между параграфами и прочими сущностями. Чтобы все выглядело прилично в Обсидиане, надо исходный документ подстраивать, в том числе и убирать лишние строки между сущностями. В результате исходный документ md выглядит отвратительно. Так-то оно норм, если работать только через Обсидиан, но мне хочется избежать этого вендор-лока (и суть Обсидиана по мысли разрабов в том, чтобы избежать такой зависимости). Попытка решить вопрос через кастомный css мне не удалась - там спроектировано и понаверчено внутри в лучших традициях опенсорса (извините).
Если Обсидиан - это база знаний, то должна быть отличной работа с аттачментами. Аттачменты - это не только картинки и PDF, но и конфиги готовые, бинарники, все что угодно. Не нужно на все иметь просмотрщик, но хотя бы открывать для редактирования в текстовом виде какие-то избранные расширения и не запускать в стороннем приложении-то можно было сделать? Вообще не понимаю, как это могло быть не сделано в принципе.
Что мне не хватает в Markdown и есть в AsciiDoc? Тут долго можно писать, AsciiDoc богатейший формат (и выглядит естественнее и проще MD). Конкретно мне не хватает:
Сложных таблиц (включая вложенные), описанных максимально естественно, а не как в MD;
Комментариев, невидимых в рендеринге. Некоторые модули управляются через конструкции в комментариях, например мне так удобно отключать проверку синтаксиса для каких-то экзотических слов.
Управления изображениями (например: несколько в ряд, регулирование размеров).
Прагмы и макроподстановки на уровне документа, включая стили, дополнительные модули рендеринга, шорткаты для всяких там URL
Цвета для текста. Не всегда достаточно ==highlight==
Да, к сожалению, маркдаун захватил все. Он прост, но очень примитивен, мне лично его возможностей не хватает. Обсидиан к тому же имеет собственные представления о рендеринге страниц и результат ну так себе (какой бы кастомный css я не применял) + нельзя без дополнительных страданий хранить рядом тексты и аттачменты. Так что я в конце концов ушел на VS Code.
Вряд ли достаточно заменить compute на Isolate. Запуск изолята на каждый чих довольно дорогое удовольствие. Лучше иметь один общий изолят для фоновых вычислений и отдавать туда задачи, прямо на сайте флаттера в начальных гайдах есть готовый код
Я лично отказался от Rive как только увидел что он добавляет что-то около 40мб (точнее не помню) к бинарнику. Должен же быть какой-то предел всей этой инфляции.
С некоторым трепетом прочитал вашу статью. Скажите пожалуйста, в вашей организации есть открытые или архивные вакансии Flutter на HH.ру или подобных ресурсах? Если да, то не могли бы вы поделиться ссылкой? Можно в личку. Мне бы это сильно помогло откалибровать самооценку собственных умений и опыта работы, есть ощущение что я несколько оторвался от реальности. Спасибо
Да, для Даны был отдельный контракт на поставку в штатной комплектации, а вообще WiFile выходил в составе т.н. Companion CD (диск с набором популярных программ, вкладывался в коробку с устройством) в каких-то последних моделях от Palm — типа Tungsten T5 и др. Подробности уже выветрились из памяти, конечно
Сужу со своей колокольни - чем дальше, тем более любые запросы подобного рода воспринимаю как вымогательство отдать просто так главную ликвидную валюту современного пользователя: внимание и личное время. Лучшее, что могут получить от меня такие приложения - dismiss диалога. Самым настойчивым не ленюсь ходить в стор и писать все, что думаю об этом с соответствующей оценкой.
Надеюсь, что это вымрет когда-нибудь. Должна быть автоматически подсчитываемая сторами метрика что-то вроде функции от количества активных пользователей и времени сеанса и типа того.
Еще пример использования extension types - замена т.н Sentinel в том случае, если нужно обнулять поле класса при copyWith. Есть разные способы, раньше я делал объекты-врапперы, сейчас работаю через extension types
А как можно применить enum в случае, когда бекенд (например), возвращает строковые нефиксированные идентификаторы для своих сущностей? Какие-нибудь base58 или UUID? Для сколь нибудь сложного приложения таких типов идентификаторов будут десятки и даже сотни. Если их всех выражать через String, то вероятность спутать один архитектурно несовместимый тип с другим где-то в глубинах приложения (например UserID с LocationID или UserGroupID) стремится к единице. Понятно, что все это можно отловить тестами и все такое (когда-нибудь). Мне предпочтительнее такая организация работы при которой подобные опечатки отлавливаются линтером мгновенно и без моего участия.
Для меня ET это аналог type branding в TypeScript и в этом смысле используется чрезвычайно широко. Это исключительно полезная штука в делегировании поиска ошибок компилятору. Все примитивные идентификаторы в виде строк или чисел я оборачиваю в ЕТ для того, чтобы никогда не спутать между собой при передаче в методы, создании дженериков и вообще везде. Раньше для этого не ленился делать классы-обертки
Несколько соображений, если позволите:
Копирование объекта через alt + drag хорошо бы иметь
Форма (размер) стрелок (line ending) хотелось бы иметь разные в ассортименте
Наконечник особо жирной линии вторгается в пространство объекта, а должен лишь соединять (прикасаться). То есть хочется быть более умного масштабирования. Надеюсь, понятно объяснил
У всех этих досок есть один недостаток - нет таблиц, в том смысле что нет сущностей, чтобы объединяли несколько объектов и у каждого был бы свой набор connection/anchor point. В случае таблиц - у каждой строки была бы своя привязка для соединительных линий. Имея такую доску можно рисовать простые ER диаграммы
Спасибо!
Использовать клавиатуру ноутбука (особенно расположенную под углом) - верный способ поиметь проблем со здоровьем.
Стол нужен с выемкой или внешними подлокотниками
Как в принципе можно использовать сегодня мониторы с разрешением меньше чем 4к - вообще не понимаю. Это какие-то запредельные бедность или неуважение к себе. Ну разве что рилсы смотреть, как там кто-то высказался
Смотрю на фото и представляю как много попыток и поз было сделано для того, чтобы передать стратегичность взгляда, устремленность в будущее и, естественно, мимолетную случайность кадра.
Понял, спасибо
А есть возможность посмотреть на результат, в источниках и/или готовом приложении? Без этого непросто увязать в голове два утверждения о том, что 90% кода сгенерировано и что 20-80% UI нужно переписать. Что в итоге-то получилось?
Стол 140x80 (глубина ГОРАЗДО важнее длины) и лоток для кабеля обошлись мне в 7000 + 1000 рублей с доставкой в пару дней; Качество, как минимум не хуже. Дополнительно купил два подставки под локоть - то есть по факту глубина стола 90+см.
Свой стол имеет смысл делать только со своими специфическими требованиями, как минимум с вырезом под локти. Впрочем, если вы работаете так, как на фото показан ноутбук - то есть на ноутбучной клавиатуре, под наклоном, то в остальном здоровье беречь не имеет смысла.
Попробую без скриншотов, так опишу.
Что мне категорически не нравится в текущем Обсидиане:
Странный рендеринг маркдауна. Результат не должен зависеть от форматирования оригинального маркдаун-файла, например, наличия пустых строк между параграфами и прочими сущностями. Чтобы все выглядело прилично в Обсидиане, надо исходный документ подстраивать, в том числе и убирать лишние строки между сущностями. В результате исходный документ md выглядит отвратительно. Так-то оно норм, если работать только через Обсидиан, но мне хочется избежать этого вендор-лока (и суть Обсидиана по мысли разрабов в том, чтобы избежать такой зависимости). Попытка решить вопрос через кастомный css мне не удалась - там спроектировано и понаверчено внутри в лучших традициях опенсорса (извините).
Если Обсидиан - это база знаний, то должна быть отличной работа с аттачментами. Аттачменты - это не только картинки и PDF, но и конфиги готовые, бинарники, все что угодно. Не нужно на все иметь просмотрщик, но хотя бы открывать для редактирования в текстовом виде какие-то избранные расширения и не запускать в стороннем приложении-то можно было сделать? Вообще не понимаю, как это могло быть не сделано в принципе.
Что мне не хватает в Markdown и есть в AsciiDoc? Тут долго можно писать, AsciiDoc богатейший формат (и выглядит естественнее и проще MD). Конкретно мне не хватает:
Сложных таблиц (включая вложенные), описанных максимально естественно, а не как в MD;
Комментариев, невидимых в рендеринге. Некоторые модули управляются через конструкции в комментариях, например мне так удобно отключать проверку синтаксиса для каких-то экзотических слов.
Управления изображениями (например: несколько в ряд, регулирование размеров).
Прагмы и макроподстановки на уровне документа, включая стили, дополнительные модули рендеринга, шорткаты для всяких там URL
Цвета для текста. Не всегда достаточно ==highlight==
Ну как-то так.
Да, к сожалению, маркдаун захватил все. Он прост, но очень примитивен, мне лично его возможностей не хватает. Обсидиан к тому же имеет собственные представления о рендеринге страниц и результат ну так себе (какой бы кастомный css я не применял) + нельзя без дополнительных страданий хранить рядом тексты и аттачменты. Так что я в конце концов ушел на VS Code.
Obsidian был бы совсем хорош, если бы базировался не на Markdown, а на AsciiDoc.
Для тех, кого это волнует - можно указать таймзону для git. Например, вот так можно установить UTC для всей активности (а заодно писать лог команд):
И работать только через этот скрипт. Рецепт для macOS и unix-like. Как это сделать в Windows - не знаю, скорее всего примерно так же.
Вряд ли достаточно заменить compute на Isolate. Запуск изолята на каждый чих довольно дорогое удовольствие. Лучше иметь один общий изолят для фоновых вычислений и отдавать туда задачи, прямо на сайте флаттера в начальных гайдах есть готовый код
Я лично отказался от Rive как только увидел что он добавляет что-то около 40мб (точнее не помню) к бинарнику. Должен же быть какой-то предел всей этой инфляции.
С некоторым трепетом прочитал вашу статью. Скажите пожалуйста, в вашей организации есть открытые или архивные вакансии Flutter на HH.ру или подобных ресурсах? Если да, то не могли бы вы поделиться ссылкой? Можно в личку. Мне бы это сильно помогло откалибровать самооценку собственных умений и опыта работы, есть ощущение что я несколько оторвался от реальности. Спасибо