Pull to refresh
69
0
Владимир @Googolplex

Software engineer

Send message

Logitech Cordless TrackMan Optical, о да, сколько я с ним времени провел...


Недавно в связи с переустройством рабочего места решил заново купить трекбол, нашел вот такой:


Картинка

trackball


Это видимо идейный наследник HUGE трекбола который упоминали выше. Я попробовал и HUGE тоже, но не почувствовал у него сильных преимуществ над DEFT PRO, но у последнего зато три способа подключения — через приемник, через bluetooth и проводом. Приемник и bluetooth переключаются рычажком на самом трекболе, что очень удобно для переключения между личным и рабочим ноутбуком.


Сам трекбол довольно удобный (хотя почему-то мне кажется что годы назад Trackman Optical был удобнее :)), но я, по советам в интернете, поменял ему стандартные подшипники из "искусственного рубина" на керамические, из оксида циркония. Шар сразу стал крутиться лучше, и что интересно, он перестал плохо вращаться из-за грязи! Не знаю как это работает, но чистить его стало нужно гораздо реже, разве что из гигиенических соображений.

Я очень далек от фронтенда и просто мимопроходил, но вот эта библиотека: https://crank.js.org/guides/getting-started очень напоминает ваши фракталы :)

> 185к для семьи из 3 — это граница выживания

Яхз, может у нас нетипичный случай, но мы со 130к, в Купертино, с маленьким ребенком (садик) не то что не выживали, но наоборот, получалось копить.
UTF-16 не является кодировкой с постоянным размером «символа». Например, популярные сейчас эмодзи всегда будут занимать в тексте 4 байта а не 2. Поэтому c UTF-16, точно так же как и с UTF-8, нельзя «вырезать, вставлять, сравнивать части строки» с помощью байтовых индексов.
Самая жесть это когда «service» произносят как «сервАйс», брр

Отступы будут автоматически убираться. Почитайте JEP по этой фиче — он довольно короткий и простой. Мне уже попадались случаи где функциональность из него была бы удобнее того, что сейчас сырые строки в котлине предоставляют.

Смена пароля с периодом кстати признана многими специалистами по безопасности бессмысленной и вредной:
https://www.schneier.com/blog/archives/2016/08/frequent_passwo.html
https://www.sans.org/security-awareness-training/blog/time-password-expiration-die
https://cryptosmith.com/password-sanity/exp-harmful/

Пожалуй, самое заметное ограничение с записями в том, что нельзя объявлять собственные поля. Что в свою очередь означает, что нельзя сделать "ленивые" свойства, по аналогии с lazy val в Scala или by lazy в Kotlin. И в скале, и в котлине я регулярно пользуюсь этими фичами, очень жаль что в джаве эквивалент с записями сделать не получится :(

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

кстати, почему Optional.of() бросает NPE если на входе null?

Потому что Optional<T> сделан как обертка над нуллабельным полем типа T, соответственно отличить пустой Optional от Optional.of(null) нет возможности. Наверное в теории можно было бы сделать так чтобы Optional.of(null) возвращал пустой Optional, но вероятно для дополнительной null-безопасности решили этого не делать.

около 35% налоги

Где вы 35% налогов нашли? Даже с большей суммы выходит в районе 27%, и то это с запасом, в следущем году IRS с гарантией что-то вернет.


Но 120к в bay area действительно может быть маловато, особенно с детьми.

Вообще хз, когда мы с женой ходим в кафе и прочие публичные места здесь в США, к нам обоим регулярно обращаются как "guys". Слегка режет слух до сих пор, но похоже это все-таки нормальное обращение к группе со смешанным полом.

Облака облаками, а приложения для мобильников у BofA совершенно отвратные, да и личный кабинет на сайте тоже.

Характерная особенность англоязычной публицистики ¯\(ツ)

Ответ в задаче про стримы неправильный.


Скрытый текст
public Set<String> findLengthyMelodiesNew(List<Album> albums) {
    return albums.stream()
        .flatMap(album -> album.getMelodies())
        .filter(melody -> melody.getLength() > 120)
        .map(melody -> melody.getName())
        .collect(toSet());
}

Если при рефакторинге классы не менялись так, чтобы getMelodies() возвращал Stream, то этот код не скомпилируется, т.к. flatMap() требует чтобы функция возвращала Stream, а здесь она вернет List или другую коллекцию. Про правки класса в условии задачи ничего нет, да и вообще — возвращать стримы из геттеров это мягко говоря не самая распространённая практика. Тест же утверждает что правильный ответ — скомпилируется и будет работать.


Более того, getMelodies() не мог изначально возвращать Stream т.к. в первом куске кода результат getMelodies() используется в for, что не скомпилируется для стримов (они не Iterable => нельзя foreach).


Чтобы скомпилировалось, нужно явно вызвать stream() на результате getMelodies():


        .flatMap(album -> album.getMelodies().stream())

Git это по факту блокчейн и есть :) по крайней мере, структура данных (Merkle tree) одна и та же.


И конкретно в гите можно править историю. Более того, если копия репозитория только одна (или все копии доступны для прямого контроля), это можно сделать не оставляя следов вообще.

США — очень плохой пример для сравнения в плане количества бумаг при подаче налоговой декларации.


В РФ мне приходилось один раз отправить форму 3-НДФЛ, и там все ее заполнение обошлось несколькими кликами в личном кабинете.


В США мы отправляем две формы tax return, для федерального и для местного, и в каждой по много листов и под-форм с отдельными номерами. А если посмотреть сколько их там всего возможных, то волосы дыбом встанут.


Я не знаю ничего насчет различий и преимуществ/недостатков бюрократии в двух странах конкретно для юрлиц, но что касается конкретно деклараций для НДФЛ, с этим в РФ гораздо проще.

Мне кажется, что zetroot имел в виду, что аббревиатура SQL расшифровывается как Structured Query Language, а не как Simple Query Language. Что есть абсолютная правда, см. например https://en.wikipedia.org/wiki/SQL

В оболочке fish, которой не надо было следовать легаси-интерфейсам, этот механизм первоначальной настройки шелла работает, имхо, гораздо логичнее и понятнее. В fish всегда, вне зависимости от того, login это шелл или interactive, читается один и тот же набор конфигов (~/.config/fish/config.fish, /etc/fish/config.fish, /usr/share/fish/config.fish). Если есть необходимость разделять конфигурацию шеллов, можно проверить тип оболочки с помощью команд status --is-login и status --is-interactive:


if status --is-login
    for f in ~/config/fish/login.d/*.fish
        source $f
    end
end

for f in ~/config/fish/init.d/*.fish
    source $f
end

if status --is-interactive
    for f in ~/config/fish/interactive.d/*.fish
        source $f
    end
end

Information

Rating
Does not participate
Location
Santa Clara, California, США
Date of birth
Registered
Activity