Pull to refresh
3
Karma
0
Rating
Александр Червинский @Tellamonid

Энтерпрайз-разработчик

  • Followers
  • Following

Как реляционная СУБД делает JOIN?

В настоящих реляционках у Nested loops обычно сложность O(N). Допустим мы соединяем таблицу orders и таблицу customers, и передаем список order_id. Пусть у нас достаточно большие таблицы, но не гигантские. Тогда нам на каждый order_id надо затратить три логических чтения блоков индекса (его высота), и одно логическое чтение блока таблицы. Потом столько же для customer_id, который мы взяли в таблице orders. Итого 8 логических чтений. А если нам на вход дали 100 order_id, то у нас будет 800 логических чтений. Строго линейная зависимость.

«Почему Kotlin хуже, чем Java?»

У вас на картинке Джава и Котлин подписаны наоборот: Джава же более древняя, а Котлин — молодёжь.

Загадка отсутствия дефолтного приложения «Калькулятор» на iPad и поиск его замены

У меня уже давно установлен PCalc Lite. Рекламы там нет, возможностей калькулятора мне хватает.

Часть 1. Логирование событий в Oracle PL/SQL

Мы используем Logger, который рекомендовал Том Кайт. Единственное что, мы секционировали таблицу по дням, и чистим с помощью дропа партиций, а не с помощью удаления строк. То есть мы сделали изменения относительно оригинала, но они минимальные.

Из плюсов:

  • эта штука поддерживает переключение, например, с уровня info на уровень debug на лету;

  • при использовании log_error в эксепшен-блоке, в лог автоматом вставится стек трейс, то есть нам достаточно только словами описать, что у нас не получилось сделать, а остальное за нас сделает логгер;

  • если мы в начале процедуры положили входные параметры в специальную коллекцию, то в случае log_error мы их тоже увидим.

Но главный плюс, конечно, в том, что мы не стали тратить время на написание собственного логгера на pl/sql.

Бюджетный дачный интернет

У меня стоит Mikrotik LHG LTE kit, летом выдаёт до 90 мегабит/с на скачивание, и около 30 на отдачу, зимой похуже (бывает 20–30 мегабит/с на скачивание) причем я не очень понимаю, с чем это связано.
Но главное, я там вообще ничего не настраивал. Его надо просто воткнуть в вайфай-роутер, и всё работает. Я только время от времени смотрю показатели вроде SINR в Микротиковском веб юае, и то ради интереса.

Как можно (правильно) прокрастинировать, чтобы повысить свою продуктивность

По ссылке про Серену Вильямс написано, что она как-то утром не успела выпить эспрессо, и проиграла сет. Потом между сетами выпила-таки эспрессо, и выиграла матч. Это как-то совсем не то же самое, что «Серена Уильямс всегда пьет эспрессо, прежде чем вернуться на корт»

Как я людей на типы делил

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

Почему я по-прежнему пользуюсь RSS

Пользуюсь Newsify. Несколько раз пробовал перейти на InoReader, как на популярный, но мне там неудобно отмечать статьи как прочитанные.

Физкультура для программиста, есть ли хороший выход?

Согласен с предыдущими комментаторами, что сильно зависит от вида занятий. Я лично видел людей, которым не особо нравились силовые тренировки и кардио, но которые чуть ли не светились после занятия по спортивной/силовой йоге.

Проверь свои клеммники

Очень похоже, что подделка – на настоящих с торца есть зеленая надпись Wago. На ютюбе есть сравнения, и там показано, насколько тоньше пластина в подделке.

Интересные факты про некоторые старые игровые картриджи

У меня был LandStalker с возможностью сохранения для Sega MegaDrive 2, всё работало.

Flame-графики: «огонь» из всех движков

промахнулся веткой, ответил в общий тред случайно

Flame-графики: «огонь» из всех движков

Сразу скажу, что мой ответ не для флейма, я просто постараюсь объяснить свою позицию. Я с большим уважением отношусь и к SJK Алексея, и к вашему, Андрей, async-профайлеру.


В SJK мне нравится, во-первых, вывод в html+js, он намного удобнее svg. Он, например, позволяет выделить фрейм, и он подсветится в нескольких стек трейсах, и выдаст суммарную частоту, с которой этот фрейм встречался. И это мне действительно было полезно в работе, когда, например, в сумме по трём стэкам один фрейм встречался с частотой в 77%.


А во вторых, я профилирую энтерпрайз-приложения, которые находятся в зелёной зоне кривой Шипилёва, то есть мне нет никакой необходимости ни в нативных стеках, ни в том, чтобы профайлер был лишён проблемы safepoint bias. Обычно мои перформанс-слонопотамы отнимают 60-80% работы программы. Их с любым профайлером будет видно, просто мне нравятся флейм-графы за их наглядность.

Flame-графики: «огонь» из всех движков

Я часто пользуюсь SJK для снятия флейм-графов с джава-приложений. У неё есть несколько достоинств:


  • не обязательно прописывать дополнительные флаги для приложения, то есть можно снимать прямо на проде;
  • не нужен перл-скрипт для получения svg, всё уже есть внутри;
  • кроме svg, она умеет выдавать html+js, в котором можно динамически включать-выключать потоки, или, например, посмотреть более крупно только тот стек вызовов, который нас интересует.

Из недостатков можно отметить, что стек не будет включать нативные вызовы ОС (зеленая часть на графиках в статье), но для моих задач возможностей SJK было более чем достаточно.

10 приёмов работы с Oracle

Про dynamic sampling, я думаю, стоит сказать, что он работает только на фазе hard parse. Как и «подсматривание параметров», оно же bind peeking. И это довольно сильно ограничивает его полезность. Потому что если запрос уже разобран, и есть план выполнения в кэше, никакого динамического сэмплирования не случится.

Передовой опыт тестирования в Java

Хорошая статья. Только для того, чтобы убрать «лишний» код в виде конструкторов необязательно переходить на Котлин. Достаточно использовать Ломбок.

«В карантин нагрузка выросла в 5 раз, но мы были готовы». Как Lingualeo переехал на PostgreSQL с 23 млн юзеров

Мы используем Flyway (правда для Оракла), можно использовать Liquibase.
И там, и там, есть repeatable миграции. Во Флайвее это те, что начинаются с буквы R. А в Liquibase это делается через атрибут runOnChange.

Основы правил проектирования базы данных

Ну я к тому, что если хочется нормализации, то можно ввести сущность «роль на проекте», и к ней уже прилинковать скиллы.
А если есть желание автоматически раскладывать из какого-нибудь hh.ru по табличкам, то там будет прямо набор скиллов у человека. Или набор скиллов у человека на конкретном проекте. То есть схема в обоих случаях будет другая.

Основы правил проектирования базы данных

Я думаю, что скиллы неправильно так привязывать к проекту. Потому что, например, в одном и том же проекте могут работать специалисты по фронтенду, бэкэнду, и, например, девопсу. Это не говоря уже о тестировщиках и аналитиках. И скиллы у всех этих групп будут разные.

(Не)рушимые законы крутого кода: Law of Demeter (с примерами на TypeScript)

Мне больше нравится другое определение Закона Деметры – через пример.
Когда вы хотите что-то купить, надо дать деньги, а не, например, кошелёк, из которого можно взять деньги.
То есть в методы надо передавать минимально, только то, что им нужно, а не какой-то объект-контейнер, из которого это что-то можно достать.

1

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity