Обновить
2

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

2
Подписчики
Отправить сообщение

Удивительный поворот. Разве речь идет о том, заставляет ли меня кто-то брать ответственность за написанные мною слова? Или что я отказываюсь от них и, соответственно, веду себя неприлично? Мы начали с того, что я попросил вас ответить на два вопроса. Просто два конкретных вопроса, максимально (как мне казалось) построенных так, чтобы избежать перехода на личности. Пока что получить ответ мне не удалось. Давайте попробуем еще раз:

1. Что такое "скоропостижные по своей ошибочности выводы". Мне казалось, что я неплохо знаю русский язык, но тут, возможно, есть чему научиться новому, буду благодарен за разъяснения.
2. В чем суть статистики? Применительно к моему первоначальному комментарию, если возможно.

Не совсем. Я задал два конкретных вопроса и ответов не получил, к сожалению.

Перенос на "конкретность" от среднего, непонимание несуществования "среднего файла", отсутствие мыслительного процесса с моей стороны, упрощенная парадигма мироустройства - позвольте воспринять все это как некие утверждения и положения, мало имеющие ко мне отношение.

Могу я попросить вас объяснить мне, что такое "скоропостижные по своей ошибочности выводы" и какие ошибки в сути науки статистики этот кто-то мог совершить, вычислив среднее значение из двух данных чисел?

10 038 файлов и 541 856 строк Objective-C. 

То есть в среднем файл 50 строк весьма многословного Obj-C. При том, что это браузер, вещь максимально приближенная к земле, а не какой-нибудь рафинированный энтерпрайз. Кто-то явно спал с томиком Боба Мартина под подушкой.

И еще фару сотруднику на лоб, а то простаивает поди. Ну и еще спринт добавить может быть, а то ишь чо. Зарплату поднимать не будем, само собой, он и так не утруждается.

Справедливости говоря, все или почти все эти 8000 тестов тесты были сгенерированы трудолюбивым ИИ. Качество таких тестов, обычно, так себе. Проверить, что 2x2=4. Ну разве что менеджеру отчитаться о проценте покрытия.

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

Информация

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