Pull to refresh
42
0
Кирилл Бубочкин @ookami_kb

Software Developer

Send message

Союз защиты гражданских свобод и присяжные пришли к выводу, что у двух полицейских, отдавших приказ о рейде, не было оснований выбрать дом Джонсон в качестве цели. Каждый из офицеров должен выплатить примерно по $1,25 млн.

Приложение никто не обвиняет (ну кроме кликбейтного заголовка).

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

А one-click-unsubscribe – это на тот случай, когда пользователю вообще пофиг на все письма от вашего сервиса – он жмет эту кнопку, почтовый сервис посылает запрос, вы перестаете его спамить. Это как предупредительный выстрел, потому что в следующем письме пользователь нажмет "Это спам".

Компиляция из разных источников + предыдущий опыт рассылок + здравый смысл.

Гарантий, конечно, не даю, но это всё-таки чуть больше, чем просто предположение.

Никак, антиспам не на это реагирует. В письме просто специальный заголовок, который понимают почтовые клиенты и отображают кнопку "Отписаться". Гугл спарсит ссылку в этом заголовке и отправит туда POST-запрос, ему важно, чтобы в ответ вернулся 200/202.

А вот если вы нажмете кнопку "Это спам", тогда уже гугл возьмет эту рассылку на заметку.

Проблема в том, что и НЕкачественный контент также лезет за пейволл.

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

за последние годы он стал тормозить гораздо меньше и работает в целом нормально

Ничего, это пофиксили. Сейчас на смену Teams Classic идет новый Microsoft Teams, так там сломали даже то, что в старом работало (камера регулярно отваливается, шаринг десктопа так и не завелся у меня). Тормозит меньше, да, видимо потому, что ничего толком не работает.

Это точно правильнее, потому что не будет всяких лишних addPostFrameCallback, setState и Row. Да и сложного там, в общем-то, ничего нет: https://dartpad.dev/?id=6ac06fb364d4b3a11e1de920a5a38a87

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

Через кастомный RenderObject.

Конечно, лучше если "вдруг война", а все голодные, сонные и уставшие. Зато взлетка надраена, и трава в зеленый выкрашена.

На данный момент анонимный обратный вызов является устоявшейся традицией, и все остальное кажется странным.

Колбэк несет в себе полезную информацию другим разработчикам: становится гораздо понятнее, зачем именно здесь нужен setState().

Как раз, чтобы не гадать, был ли он вызван "как талисман на удачу", или его забыли удалить после рефакторинга, или он действительно делает что-то полезное, помещайте туда причину вызова, такой формат сразу всё объясняет:

setState(() {
  _value = newValue;
});

Поэтому в документации и пишут:

Generally it is recommended that the setState method only be used to wrap the actual changes to the state, not any computation that might be associated with the change.

И поэтому в DCM есть правило в тему.

Минутка занудства. Функционал – это функция, заданная на произвольном множестве и имеющая числовую область значений. С точки зрения грамотности, уж лучше "фича" – поскольку буквальный перевод не передает нужны смысла, калька (тем более, такая устоявшаяся, тем более, в статье, рассчитанной на программистов) лучше, чем неправильное слово.

Три года для дарта и три года для котлина сейчас – это две большие разницы. Но конкретно в вашем случае, я подозреваю, что корень проблемы в чем-то другом, миксить всегда можно было только миксины и классы.

Есть, смотрите период полувыведения вещества.

  1. Общее количество – обычно count или qty. Порядковый номер – index, может еще position.

  2. Или shops, или shopList. Просто shop для массива – имхо, вводит в заблуждение. shops[i] не выглядит странно – это, по сути, "первый из магазинов", "второй из магазинов", вполне органично.

7 – это чистая вкусовщина, линтер можно на оба варианта настроить.

Так var и не является динамическим типом – это же полнейший бред.

Снова побрюзжу. Плохой перевод не очень хорошей статьи.

По переводу. Кроме просто криво построенных фраз, местами вы будто вообще не понимаете, о чем идет речь.

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

Нет. Ограничения идут вниз (по дереву), размеры идут вверх (по дереву).

Не забывайте убирать корневые виджеты в безопасное место.

Нет. Не забывайте оборачивать корневые виджеты в SafeArea.

Возможно, вначале скорость работы покажется вам не слишком высокой,

Нет. Возможно, поначалу увеличение производительности может показаться незначительным...

И т.д.

По статье. Это какая-то смесь из личных предпочтений автора (а ля "используйте всегда относительные импорты"), подсказок линтера (don't explicitly initialize variables to null), неправильных примеров (первый же пример не скомпилируется, там пропущен late у `Future<int> future;` – если статья рассчитана на новичков, то это важно), откровенной ерунды (Try not to use of await keywords inside the bloc).

Серьезно, читайте официальную документацию. Она у флаттера превосходная, и там есть лучшие практики, объяснения, примеры, советы по оформлению кода – и всё это из первых рук.

Он лишь указал что апка медленная из-за 1000+ запросов при загрузке таймлайна.

Ну так и ему на это просто ответили, что это неправда.

А что в этом нейтрального? Если, например, компанию, в которой я сейчас работаю, кто-то купит и на весь твиттер заявит, что мобильное приложение писали криворукие дебилы, я не должен воспринимать это как личное оскорбление меня и моей команды? Ну, может и не должен. Но, скорее всего, восприму.

Хотя бы так. А вот волна комментариев в твиттере на тему "да как он посмел такое начальству говорить, должен был молчать в тряпочку" меня несколько удивила. Похоже, концепция "я – начальник, ты – дурак" не только в совке была популярна.

1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity

Specialization

Mobile Application Developer
Lead
Flutter
Dart
Kotlin
Development of mobile applications
Android development
iOS development
SWIFT