Обновить
2
0

Пользователь

Отправить сообщение

Сужу со своей колокольни - чем дальше, тем более любые запросы подобного рода воспринимаю как вымогательство отдать просто так главную ликвидную валюту современного пользователя: внимание и личное время. Лучшее, что могут получить от меня такие приложения - 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+см.

Свой стол имеет смысл делать только со своими специфическими требованиями, как минимум с вырезом под локти. Впрочем, если вы работаете так, как на фото показан ноутбук - то есть на ноутбучной клавиатуре, под наклоном, то в остальном здоровье беречь не имеет смысла.

Попробую без скриншотов, так опишу.

Что мне категорически не нравится в текущем Обсидиане:

  1. Странный рендеринг маркдауна. Результат не должен зависеть от форматирования оригинального маркдаун-файла, например, наличия пустых строк между параграфами и прочими сущностями. Чтобы все выглядело прилично в Обсидиане, надо исходный документ подстраивать, в том числе и убирать лишние строки между сущностями. В результате исходный документ md выглядит отвратительно. Так-то оно норм, если работать только через Обсидиан, но мне хочется избежать этого вендор-лока (и суть Обсидиана по мысли разрабов в том, чтобы избежать такой зависимости). Попытка решить вопрос через кастомный css мне не удалась - там спроектировано и понаверчено внутри в лучших традициях опенсорса (извините).

  2. Если Обсидиан - это база знаний, то должна быть отличной работа с аттачментами. Аттачменты - это не только картинки и PDF, но и конфиги готовые, бинарники, все что угодно. Не нужно на все иметь просмотрщик, но хотя бы открывать для редактирования в текстовом виде какие-то избранные расширения и не запускать в стороннем приложении-то можно было сделать? Вообще не понимаю, как это могло быть не сделано в принципе.

Что мне не хватает в Markdown и есть в AsciiDoc? Тут долго можно писать, AsciiDoc богатейший формат (и выглядит естественнее и проще MD). Конкретно мне не хватает:

  • Сложных таблиц (включая вложенные), описанных максимально естественно, а не как в MD;

  • Комментариев, невидимых в рендеринге. Некоторые модули управляются через конструкции в комментариях, например мне так удобно отключать проверку синтаксиса для каких-то экзотических слов.

  • Управления изображениями (например: несколько в ряд, регулирование размеров).

  • Прагмы и макроподстановки на уровне документа, включая стили, дополнительные модули рендеринга, шорткаты для всяких там URL

  • Цвета для текста. Не всегда достаточно ==highlight==

Ну как-то так.

Да, к сожалению, маркдаун захватил все. Он прост, но очень примитивен, мне лично его возможностей не хватает. Обсидиан к тому же имеет собственные представления о рендеринге страниц и результат ну так себе (какой бы кастомный css я не применял) + нельзя без дополнительных страданий хранить рядом тексты и аттачменты. Так что я в конце концов ушел на VS Code.

Obsidian был бы совсем хорош, если бы базировался не на Markdown, а на AsciiDoc.

Для тех, кого это волнует - можно указать таймзону для git. Например, вот так можно установить UTC для всей активности (а заодно писать лог команд):

#!/bin/bash

LOG=..... path to your log file.txt

timestamp=$(date +'%Y-%m-%d %H:%M:%S %Z')

# quote the arguments if necessary
args_string=$(printf "%q " "$@")
echo -e "$timestamp: git $args_string\n" >> "$LOG"


# Check if the file has 1500+ lines, truncate it to 1000
if [ $(wc -l < "$LOG") -ge 1500 ]; then
    tail -n 1000 "$LOG" > "$LOG.tmp" && mv "$LOG.tmp" "$LOG"
fi

export TZ="UTC"

/usr/bin/git "$@"

И работать только через этот скрипт. Рецепт для macOS и unix-like. Как это сделать в Windows - не знаю, скорее всего примерно так же.

Вряд ли достаточно заменить compute на Isolate. Запуск изолята на каждый чих довольно дорогое удовольствие. Лучше иметь один общий изолят для фоновых вычислений и отдавать туда задачи, прямо на сайте флаттера в начальных гайдах есть готовый код

Я лично отказался от Rive как только увидел что он добавляет что-то около 40мб (точнее не помню) к бинарнику. Должен же быть какой-то предел всей этой инфляции.

С некоторым трепетом прочитал вашу статью. Скажите пожалуйста, в вашей организации есть открытые или архивные вакансии Flutter на HH.ру или подобных ресурсах? Если да, то не могли бы вы поделиться ссылкой? Можно в личку. Мне бы это сильно помогло откалибровать самооценку собственных умений и опыта работы, есть ощущение что я несколько оторвался от реальности. Спасибо

Да, для Даны был отдельный контракт на поставку в штатной комплектации, а вообще WiFile выходил в составе т.н. Companion CD (диск с набором популярных программ, вкладывался в коробку с устройством) в каких-то последних моделях от Palm — типа Tungsten T5 и др. Подробности уже выветрились из памяти, конечно
К большому моему сожалению я уже мало что помню о PalmOS.
Спасибо за статью! Как разработчику WiFile (в девичестве SMBMate) мне было очень приятно ) Эх, были времена…

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность