Size: a a a

2020 October 27

Н

Никита 🙃 in Javanese Talk
Походу баг девайса самого. Даже на самсунге за 100 баксов не лагает, а на лыже со снапом 825 - лагает
источник
2020 November 09

70574 айбек in Javanese Talk
ЗДравствуйте, при созданий АРК файла выходить такая ошибка: Unsupported record version Unknown-158.27. В чем может быть проблема? Подскажите плиз.
источник

QH

Quantum Harmonizer in Javanese Talk
70574 айбек
ЗДравствуйте, при созданий АРК файла выходить такая ошибка: Unsupported record version Unknown-158.27. В чем может быть проблема? Подскажите плиз.
источник

70574 айбек in Javanese Talk
Спасибо
источник
2020 November 30

NK

ID:0 in Javanese Talk
Пара слов о гонках в обзёрваблах

Property в @kotlin_lychee — это аналог Property в JavaFX или BehaviorSubject в RxJava: можно читать значение, подписываться на изменения и отписываться от них, а в MutableValue можно присваивать новое значение.

В принципе понятно, какие гонки бывают в многопоточном окружении, поэтому расскажу только об однопоточных гонках.
Когда значение проперти меняется, об этом должны узнать все подписчики. А значит, проперти в цикле вызывает коллбэки с чужеродным кодом. Который вполне может:
• присвоить проперти новое значение. Тут примитивная реализация уйдёт в рекурсию, разнесёт всем новое значение, а потом вернётся по стеку и продолжит разносить старое значение. В Lychee же проперти хоть и сразу меняет значение, но уведомляет строго в порядке очереди;
• отписаться. Примитивная реализация может хранить подписчиков в COWArraySet, чтобы не вылетало ConcurrentModificationException, но этого мало: нельзя уведомлять отписавшихся, нужно удалять сразу;
• добавлять новых подписчиков. У проперти всегда можно считать свежее значение, которое будет более актуальным, чем то, которое мы доставляем прямо сейчас. Поэтому подписчики ставятся в очередь и не получают несвежие значения.

Тут нужно добавить, что проперти «холодные» и «ленивые». Например,
val nProp = propertyOf(0)
val facProp = nProp.map(::factorial)
repeat(100500) { nProp.value = it }
Функция factorial вызовется ноль раз, ведь никто не подписан на facProp и не запрашивал значение. То есть проперти всегда знает, смотрят ли на него или можно расслабиться.

Теперь к делу. Я запилил LazyView — эдакий ViewStub для вёрстки из кода:
addView(
 lazyView(visibleProp) {
   mySuperHeavyView()
 }
)
Дальше происходит следующее:
• пользователь, нажимая кнопку, присваивает true в какое-то проперти;
visibleProp зависит от него через серию всяких map и тоже становится true (а мы прямо сейчас уведомляем подписчиков об изменении);
LazyView выпиливается из контейнера, отписывается от visibleProp, создаёт superHeavyView и подписывает его на ту же visibleProp;
* кнопка отваливается, все последующие клики бесполезны. Правда, можно отправить экран в бэкстек и вернуться на него, тогда всё оживёт.
И что это было?!
1. Я ошибся, когда разрабатывал механизм уведомления, решив, что если мы сейчас уведомляем, значит, на нас хоть кто-то подписан. Звучит логично, но нет: можно же отписаться прямо в процессе уведомления. А потом подписать кого-нибудь ещё. Состояние «на меня смотрят» всё же может меняться.
2. Исправил, завалил другой тест: в одной из реализаций проперти я позабыл, что подписчики бывают не только «нормальные», но и ждущие в очереди. Поэтому, если кто-то отписывается, но отсутствует в списке «нормальных», нужно проверить ещё и очередь.
Коммит для любителей пожёстче · Релиз · Тред в Твиттере на английском
источник
2020 December 07

A

Alexey in Javanese Talk
Привет, как использовать DiffUtil.ItemCallback<T> ?
С обычным DiffUtil.Callback() все понятно DiffUtil.calculateDiff(diffCallBack).dispatchUpdatesTo(this)
источник
2020 December 15

NK

ID:0 in Javanese Talk
Переслано от Алексей Долгушев...
Финансовая математика для IT-инженеров

- Сколько нужно денег, чтобы жить на проценты?
- Как устроены опционы?
- Как ускорить расчёт доходности облигации в 1000 раз одной строкой кода?

IT-инженеры сталкиваются с вопросами из финансовой математики по-разному: из любопытства, при управлении личными финансами, по работе.

Многие интересные темы сложно найти за пределами академических источников. Мы считаем это не вполне справедливым.

Так появился наш проект. Мы сделали сайт, где собираем материалы, которые доступно рассказывают о нашем увлечении — финансовой математике.

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

Заходите на сайт, смотрите подборку видео и статей.

Если знаете полезные материалы по теме, которых пока нет на сайте — предлагайте! Самые интересные обязательно опубликуем.

Надеемся, вместе мы сможем сделать финансовую математику чуть более доступной для IT-инженеров

https://finmath4it.ru/
источник
2020 December 17

WR

William Roder in Javanese Talk
источник
2021 January 08

G

Guess in Javanese Talk
I'm proud because I've gained more then what I've lost in trading that's why I'll forever be thankful to you Mr lauren zhang
https://t.me/joinchat/UiflDmBQzUMP6C1C
источник
2021 January 14

NK

ID:0 in Javanese Talk
Нашёл изящный способ упасть, если в стриме окажутся дубликаты.
источник
2021 January 15

NK

ID:0 in Javanese Talk
Строки, символы и Юникод

Периодически паршу (парсю?) всякие тексты и возникает желание собрать качественный материал на тему строк и символов.

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky: обзор на Юникод без привязки к каким-либо языкам программирования.

Storing UTF-8 Encoded Text with Strings from Rust Book: как Юникод представлен в Расте, чем байты отличаются от кодпоинтов или символов и что такое кластеры графем.

Так, мы же тут про Джаву. В 1995 казалось, что 65 536 символов хватит всем, поэтому был выбран UTF-16, в котором char — два байта, а .charAt работает за константное время. Но количество символов в Юникоде уже перевалило за миллион, а это чуть больше, чем 65к, поэтому не все символы вмещаются в два байта. В итоге char содержит обман в своём названии, так как может оказаться половинкой длинного символа («суррогатной пары»), .length() иногда привирает, а за константное время можно получить только немного самообмана.

Настоящий кодпоинт помещается в int. В классе Character у большинства методов есть оверлоады для char и int.
Настоящее итерирование символов можно подсмотреть в ретрофите, например.
У CharSequence есть метод .codePoints(), который возвращает IntStream. Так, количество кодпоинтов можно посчитать за линейное время, вызвав .codePoints().count().

Ну а для работы с кластерами графем есть BreakIterator.getCharacterInstance. Уж он-то не только не станет разрывать кодпоинты, но и не будет отковыривать от букв ударения, а от смайлов — модификаторы и джоинеры.
источник
2021 January 23

NK

ID:0 in Javanese Talk
Небезызвестный и замечательный Тагир Валеев показал, как, добавив один метод и статически заимпортировав его, можно сделать в джаве читабельный for по диапазону:
for (int i : range(0, 10)) {
Он упомянул, что переменная i финальная в теле цикла, её нельзя случайно перезаписать и можно безнаказанно захватывать.
От себя добавлю, что это круче, чем IntStream.range(0, 10).forEach(, потому что здесь продолжают работать continue и break.
источник
2021 February 04

Н

Никита 🙃 in Javanese Talk
Миш, а ты не думал линки прописывать англоязычные? А то когда шаришь они первращаются в огромный набор символов:
https://javanese.online/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_JVM-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/
источник

QH

Quantum Harmonizer in Javanese Talk
Никита 🙃
Миш, а ты не думал линки прописывать англоязычные? А то когда шаришь они первращаются в огромный набор символов:
https://javanese.online/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_JVM-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/
Думал. Даже хотел отдельный домен купить — типа javanese.link. Но потом просто забил ;) плюс в телеге стало можно текст превращать в ссылку
источник

Н

Никита 🙃 in Javanese Talk
Quantum Harmonizer
Думал. Даже хотел отдельный домен купить — типа javanese.link. Но потом просто забил ;) плюс в телеге стало можно текст превращать в ссылку
В телеге-то да)
источник
2021 February 07

NK

ID:0 in Javanese Talk
Всем привет, в следующий четверг, 11 февраля, в 18:00 по МСК будет очередная сессия вопросов и ответов с крайне популярным человеком в Android и не только разработке, а именно Михаилом @Harmonizr

Ссылка на стрим - https://youtu.be/KR99EpB58_Q

Михаил является создателем канала @javanese_online и админом чатов @android_ru, @kotlin_lang и многих других.

На этой сессии мы узнаём побольше о нем и как это быть админом крупнейших каналов ру пространства

Некоторые факты о Михаиле:
- на текущем проекте нет ни одного XML layout
- использует MVVM и датабайндинг без помощи гугла
- передаёт аргументы во фрагменты через конструктор
- нет вышки. Никакой
- смотрит доклады Шипилёва с удовольствием и интересом
- прошёл в Яндекс без знания алгоритмов
- пишет свой индикатор для вьюпейджера быстрее, чем нагугливает подходящий
- генерирует 9-патчи на рантайме

Бей в колокольчик, чтобы не пропустить
источник

ИЗ

Иван Зиновьев... in Javanese Talk
ID:0
Всем привет, в следующий четверг, 11 февраля, в 18:00 по МСК будет очередная сессия вопросов и ответов с крайне популярным человеком в Android и не только разработке, а именно Михаилом @Harmonizr

Ссылка на стрим - https://youtu.be/KR99EpB58_Q

Михаил является создателем канала @javanese_online и админом чатов @android_ru, @kotlin_lang и многих других.

На этой сессии мы узнаём побольше о нем и как это быть админом крупнейших каналов ру пространства

Некоторые факты о Михаиле:
- на текущем проекте нет ни одного XML layout
- использует MVVM и датабайндинг без помощи гугла
- передаёт аргументы во фрагменты через конструктор
- нет вышки. Никакой
- смотрит доклады Шипилёва с удовольствием и интересом
- прошёл в Яндекс без знания алгоритмов
- пишет свой индикатор для вьюпейджера быстрее, чем нагугливает подходящий
- генерирует 9-патчи на рантайме

Бей в колокольчик, чтобы не пропустить
Топ контент, ждём-с.
Удачи, @Harmonizr
источник

QH

Quantum Harmonizer in Javanese Talk
Иван Зиновьев
Топ контент, ждём-с.
Удачи, @Harmonizr
спасибо)
источник

ES

Egor Sigolaev in Javanese Talk
ID:0
Всем привет, в следующий четверг, 11 февраля, в 18:00 по МСК будет очередная сессия вопросов и ответов с крайне популярным человеком в Android и не только разработке, а именно Михаилом @Harmonizr

Ссылка на стрим - https://youtu.be/KR99EpB58_Q

Михаил является создателем канала @javanese_online и админом чатов @android_ru, @kotlin_lang и многих других.

На этой сессии мы узнаём побольше о нем и как это быть админом крупнейших каналов ру пространства

Некоторые факты о Михаиле:
- на текущем проекте нет ни одного XML layout
- использует MVVM и датабайндинг без помощи гугла
- передаёт аргументы во фрагменты через конструктор
- нет вышки. Никакой
- смотрит доклады Шипилёва с удовольствием и интересом
- прошёл в Яндекс без знания алгоритмов
- пишет свой индикатор для вьюпейджера быстрее, чем нагугливает подходящий
- генерирует 9-патчи на рантайме

Бей в колокольчик, чтобы не пропустить
О, Михо, классный человек, стартанул академку spb на ютубе, но чего то не пошло дальше(
источник

I

Ivansuper in Javanese Talk
ID:0
Всем привет, в следующий четверг, 11 февраля, в 18:00 по МСК будет очередная сессия вопросов и ответов с крайне популярным человеком в Android и не только разработке, а именно Михаилом @Harmonizr

Ссылка на стрим - https://youtu.be/KR99EpB58_Q

Михаил является создателем канала @javanese_online и админом чатов @android_ru, @kotlin_lang и многих других.

На этой сессии мы узнаём побольше о нем и как это быть админом крупнейших каналов ру пространства

Некоторые факты о Михаиле:
- на текущем проекте нет ни одного XML layout
- использует MVVM и датабайндинг без помощи гугла
- передаёт аргументы во фрагменты через конструктор
- нет вышки. Никакой
- смотрит доклады Шипилёва с удовольствием и интересом
- прошёл в Яндекс без знания алгоритмов
- пишет свой индикатор для вьюпейджера быстрее, чем нагугливает подходящий
- генерирует 9-патчи на рантайме

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