Как стать автором
Обновить
180
0.1
Валентин @GlukKazan

Программист, Администратор БД

Отправить сообщение

Удивлен, что в статье не упоминается наиболее известный в нашей стране клон сокобана для NES/Famicom – «Склад №18» Александра Чудова.

Прелесть артиклей как раз в том, что они явно размечают тему и рему. И не нужно запоминать правила и особенно — исключения из них: что хочешь сделать темой — то и делаешь.
A boy entered the room. В комнату вошел мальчик.
The boy entered a room. Мальчик вошел в комнату.

Сказано «the room» — значит подразумевается, что понятно, что это за комната. Даже если это первое предложение текста.
В любой не понятно ситуации с гитом смотрю в Git Flight Rules
Что тоже не отменяет возможность мультивселенной
image

Для любителей космических рейнджеров — в этот квест можно поиграть здесь отдельно от игры https://vasiliy0.gitlab.io/#Amnesia

НЛО прилетело и опубликовало эту надпись здесь
> Проведём маленький эксперимент, если Вы не против — мне любопытно чего такого я не знаю на фундаментальном уровне, из того, что преподают в ВУЗах в качестве базы.

Ну я вот писал программу по нескольким курсам, один из основных — «Алгоритмы и структуры данных», вот база (не все, особенно и последнего семестра, нужно знать и доказывать, но основные свойства полезно знать).

Вот примерный список, я надеюсь, он после обкатки скорректируется. Общий объем 225 часов (чисто лекции, практика Python-C-C++ идет отдельными часами).

Поиск в массиве
1.1 Линейный поиск
1.2 Двоичный поиск
1.3 Троичный поиск
1.4 Интерполяционный поиск
Структуры данных
1.5 Массив
1.6 Стек
1.7 Очередь, двусторонняя очередь
1.8 Словарь
1.9 Хеш-таблица

Сортировки, анализ алгоритмов
2.1 Bubble sort (пузырьковая сортировка)
2.2 Merge sort (сортировка слиянием)
2.3 Quick sort (быстрая сортировка)
2.4 Bucket sort (блочная сортировка)
2.5 Heap sort (пирамидальная сортировка)
2.6 Insertion sort (сортировка вставками)
2.7 Counting sort (сортировка подсчетом)
2.8 Radix sort (порязрядная сортировка)
2.9 Timsort и другие гибридные алгоритмы сортировки

Рекурсия, математическая индукция
3.1 Хвостовая рекурсия
3.2 Обратная польская запись
3.3 Числа Каталана
3.4 Вычисление биномиальных коэффициентов
3.5 Метод градиентного спуска
3.6 Метод сопряженных градиентов
3.7 Принцип динамического программирования
3.8 Метод ветвей и границ
3.9 Методы Gradient boosting
3.10 Алгоритм Кадана
3.11 Поиск методом золотого сечения
3.12 Производящие функции
3.13 Запаздывающие генераторы Фибоначчи
3.14 Memoization
3.15 Корекурсия
3.16 Задача 3-SAT
3.17 Алгоритм фрактального сжатия
Структуры данных (рекурсивные)
3.18 Список
3.19 Дерево
3.20 Граф

Строки
4.1 Z-функция
4.2 Алгоритм Кнута-Морриса-Пратта
4.3 Алгоритм Ахо-Корасик
4.4 Алгоритм Бойера-Мура
4.5 Алгоритм Бойера-Мура-Хорспула
4.6 Сходство Джаро-Винклера
4.7 Расстояние Левенштейна, алгоритм Укконена
4.8 Расстояние Дамерау-Левенштейна
4.9 Алгоритм Карпа-Миллера-Розенберга
4.10 Алгоритм Каркайнена-Сандерса
4.11 Алгоритм Арикавы-Аримуты-Касаи-Ли-Парка
4.12 Алгоритм Ву-Менбера
4.13 Алгоритм Ландау-Вишкена
4.14 Алгоритм Майерса
Структуры
4.15 Префиксное дерево
4.16 Суффиксный массив
4.17 Суффиксное дерево

Порядковые статистики, потоковые алгоритмы
5.1 Алгоритм BFPRT
5.2 Алгоритм Манро-Патерсона
5.3 Алгоритм Канна-Гринвальда
5.4 Алгоритм большинства голосов Бойера-Мура
5.5 Алгоритм Lossy Count

Деревья
6.1 Эйлеров обход дерева, DFS, BFS
6.2 Двоичное дерево поиска
6.3 Декартово дерево
6.4 Красно-черное дерево
6.5 АВЛ-дерево, дерево Фибоначчи
6.6 Splay tree (расширяющееся дерево)
6.7 B, B+, B* дерево, 2-3 дерево
6.8 PQ-дерево
6.9 Дерево отрезков
6.10 Дерево Фенвика
6.11 Алгоритм двоичного подъема (задача LCA)
6.12 Алгоритм Фарах-Колтона и Бендера (RMQ, LCA)
6.13 Sqrt-декомпозиция
6.14 Центроидная декомпозиция
6.15 Heavy-light декомпозиция
6.16 Фибоначчиева куча
6.17 Куча, 2-3 куча
6.18 Очередь с приоритетами
6.19 Множество
6.20 Система непересекающихся множеств
6.21 Лес непересекающихся множеств
6.20 Ассоциативный массив

Графы
7.1 Обход в ширину (BFS)
7.2 Обход в глубину (DFS)
7.3 Топологическая сортировка
7.4 Алгоритм Munagala-Ranade
7.5 Алгоритм Mehlhorn-Meyer
7.6 Задача о динамической связности
7.7 Алгоритм поиска точек сочленения графа
7.8 Алгоритм поиска мостов графа
7.9 Алгоритм Косараю
7.10 Алгоритм Тарьяна
7.11 Задача 2-SAT
7.11 Алгоритм Брона-Кербоша
7.12 Конденсация графа
7.13 Раскраска графа
7.14 Задача о назначениях
7.15 Венгерский алгоритм
7.16 Алгоритм Ульмана
Структуры
7.17 Матрица смежности
7.18 Матрица достижимости
7.19 Матрица сильной связности
7.20 Матрица Лапласа
7.21 Матрица Инцидентности
7.22 Список смежности
7.23 Список ребер

Графы: циклы
8.1 Алгоритм поиска Эйлерова цикла
8.2 Алгоритм поиска Эйлерова пути
8.3 Алгоритм поиска Гамильтонова цикла
8.3 Алгоритм поиска Гамильтонова пути
8.4 Задача Коммивояжера

Графы: остовное дерево
9.1 Теорема Кирхгофа
9.2 Теорема Кэли о числе деревьев, код Прюфера
9.3 Лемма о безопасном (минимальном) ребре
9.4 Алгоритм Краскала
9.5 Алгоритм Примы
9.6 Алгоритм Борувки
9.7 Задача устранения петель в сети Ethernet (STP)
9.8 Задача Штейнера

Графы: кратчайший путь
10.1 Алгоритм Дейкстры
10.2 Алгоритм Best-First
10.3 Алгоритм A*
10.4 Алгоритм Левита
10.5 Алгоритм Беллмана-Форда
10.6 Алгоритм Флойда-Уоршелла
10.7 Алгоритм ALT
10.8 Алгоритм Reach-based pruning

Графы: потоки в сетях
11.1 Алгоритм Форда-Фалкерсона
11.2 Алгоритм Эдмонса-Карпа (алгоритм Диница)
11.3 Алгоритм поиска потока минимальной стоимости
11.4 Сети Петри
11.5 Алгоритм проверки графа на двудольность
11.6 Алгоритм раскраски двудольного графа
11.7 Алгоритм Хопкрофта-Карпа
11.8 Венгерский алгоритм
11.9 Blossom алгоритм (алгоритм Эдмондса)
11.10 Алгоритм Штор-Вагнера

Геометрия
12.1 Метод Гаусса
12.2 Поиск точек в прямоугольнике
12.3 Алгоритм Бентли-Оттмана
12.4 Алгоритм Грэхема
12.5 Алгоритм Джарвиса
12.6 Алгоритм Чана
12.7 Алгоритм Киркпатрика
12.8 Метод трассировки луча
12.9 Метод суммирования углов
12.10 Диаграмма Вороного и триангуляция Делоне
12.11 Алгоритм Форчуна
12.12 Рекурсивное построение диаграммы Вороного
12.13 SLERP
Структуры
12.13 R, R+, R* дерево
12.14 K-мерное дерево
12.15 BSP, VP дерево
12.16 Дерево покрытий

Персистентные структуры
13.1 Метод копирования пути
13.2 Метод толстых узлов
Структуры
13.3 Персистентный стек
13.4 Персистентная очередь
13.5 Персистентное дерево

Консенсус в сетях
14.1 Алгоритм Paxos
14.2 Задача Византийских генералов
14.3 Кворум
14.4 CAP-теорема
14.5 PACELC-теорема
14.6 Королевский алгоритм
14.7 Алгоритм Zyzzyva
Структуры
14.8 Blockchain

Целочисленное программирование
15.1 Каноническая форма, сложность решения
15.2 Алгоритмы полного перебора
15.3 Алгоритм Нарайаны
15.4 Задача о ранце
15.5 Алгоритм Meet-in-the-Middle
15.6 Задача раскроя
15.7 Метод обратного поиска
15.8 Задача планирования производства
15.9 Задача оптимизации телекоммуникационных сетей
15.10 Метод секущих плоскостей, алгоритм Гомори
15.11 Алгоритм Альфа-Бета отсечений
15.12 Жадные алгоритмы
15.13 Матроиды, алгоритм Радо-Эдмонса

Быстрые вычисления
16.1 Умножение Карацубы
16.2 Алгоритм Шенхаге-Штрассена
16.3 Алгоритмы возведения числа в степень
16.4 Алгоритмы возведения в степень числа по модулю
16.5 Алгоритм Кули-Тьюки
16.6 Алгоритм Штрассена

Факторизация
17.1 Алгоритм Евклида (НОД)
17.2 Алгоритм факторизации Ферма
17.3 Метод квадратичных форм Шенкса
17.4 Ро-алгоритм Полларда
17.5 Метод квадратичного решета
17.6 Общий метод решета числового поля
17.7 Факторизация с помощью эллиптических кривых
17.8 Тест Агравала-Каяла-Саксены
17.9 Алгоритм Берлекэмпа

Дискретное логарифмирование
18.1 Алгоритм Гельфонда-Шенкса
18.2 Алгоритм COS

Обработка очередей
18.1 Семейство алгоритмов Round-robin
18.2 Алгоритм EDF
18.3 Алгоритм SRTF
18.4 Алгоритм Fixed-priority pre-emptive scheduling
18.5 Задача составления расписания (JSP, OSSP)
18.6 CFS планировщик
18.7 BFS планировщик

Кеширование
19.1 T-дерево
19.2 Алгоритм Белади
19.3 FIFO, LIFO кеширование
19.4 LRU, PLRU кеширование
19.5 MRU кеширование
19.6 RR кеширование
19.7 LFU кеширование
19.8 MQ кеширование
19.9 ARC кеширование

Рандомизированные алгоритмы
20.1 Метод Монте-Карло
20.2 Поиск наименьшего набора ребер, разрезающего циклы
20.3 Муравьиный алгоритм
20.4 Алгоритм Каргера
20.5 Изоморфизм графов (алгоритм Blum-Kanan)
20.6 Rapidly exploring random tree
20.7 Тасование Фишера-Йетса
20.8 Алгоритм Karloff–Zwick

Вероятностные тесты на простоту
21.1 Тест Ферма
21.2 Тест Миллера-Рабина
21.1 Тест Бейли-Померанца-Селфриджа-Уогстаффа

Вебграфы
22.1 Модель Болобаша-Альберта
22.2 Модель Болобаша-Риордана
22.3 Модель Бакли-Остгус
22.4 Модель копирования
22.5 PageRank, Google matrix
Структуры
22.1 MapReduce
22.2 Apache GiGraph
22.3 Pregel

Хеширование
23.1 Двойное хеширование
23.2 Фильтр Блума
23.3 Count-min sketch
23.4 Универсальное хеширование
23.5 SWIFFT
23.6 MD5
23.7 SHA-2
23.8 SHA-3 (Keccak)
23.9 Дерево Меркла
23.10 Подпись Меркла
23.11 Хеш-функции, учитывающие близость (LSH)
23.12 Хеширование на основе расстояния Хэмминга
23.13 MinHash
23.14 SimHash
23.15 Поиск ближайшего соседа c помощью LSH

** При этом стоит учесть что запланированы еще курсы по Теории графов, Дискретной математике, Экстремальным задачам, Машинному обучению, Теории сложности и пр.пр.пр. Т.е. это просто фундаментальный курс по алгоритмам и структурам данных, который является точкой отсчета для всего остального (ну как курс по Математическому анализу).

*** Это несколько больше чем я сам знаю, так что это еще и мой план для себя подтянуть неизвестные/забытые темы. Обсудив его с коллегами, на предмет кто будет читать мы пришли к выводу, что мы все были бы рады и сейчас прослушать такой курс.
Более подробная версия карты из статьи (пояснено, что скрывается за стрелочками):image

Вспомнилась прекрасная серия от Kyle Kingsbury (aka Aphyr): Reversing the technical interview, Hexing the technical interview и Typing the technical interview. Крайне рекомендую к прочтению всем у кого с английским более-менее.

Здесь описано гораздо проще:
http://tesera.ru/article/Ultimate_Tic-Tac-Toe/
Поясню с чем мы столкнулись на примере.

На Oracle запрос выглядел вот так:
SELECT EVENT_ID, EVENT_TYPE 
FROM EVENT
WHERE EVENT_DATE < :eventDate AND ROWNUM = 1 FOR UPDATE SKIP LOCKED

Для Postgres мы переписали его вот так:
SELECT EVENT_ID, EVENT_TYPE 
FROM EVENT
WHERE EVENT_DATE < :eventDate FOR UPDATE SKIP LOCKED LIMIT 1

И поняли, что получили нереально большую просадку по производительности.
При этом количество записей, которые попадали под условие EVENT_DATE < :eventDate было небольшим — десятки.

Посмотрели план запроса:
postgres@demo:5432 (demo-service) # explain (analyze,buffers) 
SELECT EVENT_ID, EVENT_TYPE FROM EVENT WHERE EVENT_DATE < now() + '30 day' limit 100;
                                    QUERY PLAN                                                           
-----------------------------------------------------------------------------------------------
Limit  (cost=0.00..59.53 rows=100 width=18) (actual time=0.022..0.817 rows=100 loops=1)
   Buffers: shared hit=20
   ->  Seq Scan on event  (cost=0.00..154329.33 rows=559239 width=18) (actual time=0.022..0.807 rows=100 loops=1)

Индекс по EVENT_DATE есть, но видно, что Postgres его не использует и выполняется Seq Scan.

Лечение заключается в прямом указании Postgres на использование нужного индекса путем добавления сортировки, которая не требуется с точки зрения бизнес-логики клиента:
SELECT EVENT_ID, EVENT_TYPE
FROM EVENT
WHERE EVENT_DATE < $1 order by EVENT_DATE FOR UPDATE SKIP LOCKED limit 1

В итоге получаем Index Scan:
postgres@demo:5432 (demo-service) # explain (analyze,buffers)
SELECT EVENT_ID, EVENT_TYPE FROM EVENT WHERE EVENT_DATE < now() + '30 day' order by EVENT_DATE limit 100;
                                     QUERY PLAN                                                                              
-----------------------------------------------------------------------------------------------
Limit  (cost=0.44..87.03 rows=100 width=26) (actual time=0.061..183.099 rows=100 loops=1)
   Buffers: shared hit=28 read=89
   I/O Timings: read=182.489
   ->  Index Scan using event_idx1 on event  (cost=0.44..205111.55 rows=559239 width=26) (actual time=0.060..183.057 rows=100 loops=1)
         Index Cond: (event_date < (now() + '30 days'::interval))
         Buffers: shared hit=28 read=89
         I/O Timings: read=182.489
Planning time: 0.301 ms
Execution time: 183.175 ms
Что можете сказать об PixelJunk Shooter?
Игры давно не играю, но эта, основанная на физике, заставила пройти до конца.

И это «из свежей»?!
Половина — старье, вторая половина — нечитаемый самиздат с альтернативными попаданцами.

Справедливости ради: Ибатуллин — очень хорош, большая редкость в современной русской фантастике, но очень-очень вторичен, любители фантастики найдут в нем столько ушей иностранных писателей, что ппц; Юдковский — совершенно шедеврален, без преувеличений.
Из более-менее современного и читаемого русского — цикл рассказов Кетополис, если бы писал один автор и запала хватило бы на роман — получилось бы не хуже мьевильского Нью-Кробюзона! Но… Замаха на рубль, а удара на пятак, но сильно выше средне-серого уровня заполонивших все альтернативных попаданцев с командирскими башенками.

Из более-менее свежего (открывает свой список на goodreads): Уоттс — Эхопраксия, не думаю, что нуждается в комментариях; Энн Леки — Слуги меча, продолжение успешного и хорошо принятого Слуг правосудия; Абрахам в соавторстве — Пожар сиболы, продолжение отличного цикла космооперы, Рейнольдс — Префект, продолжение еще более масштабной космооперы, но на этот раз более локальное; Лю Цисинь — Темный лес, продолжение Задачи трех тел; Гибсон — Нулевое досье, свежак, только из печки, продолжение цикла Синий муравей; Робинсон — Красный марс, производсвтвенный роман про освоение и терраформирование Марса, грядут продолжения.

И это просто навскидку, хорошей фантастики за последнее время много вышло и много еще в планах, я просто не лазил в свой список для отслеживания новинок.

Дискляймер для копирастов: все ссылки даны для ознакомления, скачивать книги на этом варианте Флибусты — нельзя, файлов книг там физически нет.
1. Разность между двумя часовыми поясами будет оставаться постоянной.
Подвижки часовых поясов в России за последние годы
2. Хорошо, отставляя в сторону исторические курьёзы, разность между двумя часовыми поясами не изменится в будущем.
И они еще могут быть
3. Изменение разности между часовыми поясами будет происходить с выдачей множества предварительных оповещений.
Мне кажется, в примерах не нуждается. И так понятно, что — всяко бывает.
4. Переход на летнее время происходит каждый год в одно и то же время.
СССР переводился, вроде, с воскресенья на понедельник. Сейчас — на выходных.
5. Переход на летнее время происходит в каждом часовом поясе в одно и то же время.
Аналогично.
6. При переходе на летнее время всегда происходит сдвиг на один час.
Недавний перевод часов в России — часть областей уехала на иное количество часов.
7. Количество дней в месяце составляет 28, 29, 30 или 31.
1582 год. У католиков в октябре после 4-го числа сразу настало 15-е.
8. День месяца всегда изменяется последовательно с N на N+1 или на 1 без какого-либо разрыва.
См. предыдущий пункт
9. В каждый момент времени используется только одна календарная система.
Мусульмане и ряд восточных стран одновременно могут пользоваться несколькими календарями.
10. Високосный год имеет место в каждый год, который делится на 4.
1900-й и 2100-й года — невисокосные.
11. Невисокосный год никогда не имеет 29 февраля.
С этим сложности. Я не знаю контрпримеров.
12. Легко сосчитать количество часов и минут, прошедших с какого-то определённого момента времени.
Взять, например, переход Швеции на григорианский календарь. Там мозг сломать можно уже на описании — даже не расчете…
13. Один и тот же месяц содержит одно и то же число дней везде!
Переход на григорианский был различен в разных странах.
14. Время в Unix измеряется только в секундах.
Видимо, имеется в виду, что «реальное» время во время добавления високосной секунды составляет две секунды, когда в Unix фиксируется только одна секунда (соответственно, это может быть чревато для промобъектов, вычисления скорости и так далее).
15. Время в Unix представляет собой количество секунд, начиная с 01 января 1970 года.
Високосные секунды отбрасываются.
16. Субботе всегда предшествует пятница.
Переход через линию перемены дат (ЛПД) в полночь позволит попасть в субботу из четверга. Ну или из субботы.
17. Соседние часовые пояса различаются не более чем на один час (другими словами: мы не должны проверять, что происходит с авиационной электроникой при пролёте над линией перемены даты).
ЛПД
18. Два разных часовых пояса различаются на целое число получасовок.
Непал и Индия. Отличие — 15 минут.
19. Ладно, на целое число четвертей часа.
Не знаю контрпримера
20. Ладно, на секунды, но это будет существенная разница, если мы не учитываем переход на летнее время.
Не знаю контрпримера
21. Если вы создаёте два объекта даты прямо рядом друг с другом, то они будут представлять одно и то же время (фантастический генератор Гейзенберга).
Не понял сути.
22. Можно подождать, когда часы покажут точно ЧЧ: ММ: СС с дискретизацией один раз в секунду.
При високосной секунде часы могут не показать 23:59:60
23. Если процесс идёт «n» секунд, а затем завершается, то приблизительно «n» секунд прошло на системных часах к моменту завершения.
Високосная секунда.
Или в момент перевода часов.
24. Неделя начинается в понедельник.
США — в воскресенье.
25. День начинается утром.
Не знаю контрпримеров.
26. Праздники занимают целое число полных суток.
Не знаю контрпримеров.
27. Выходные дни состоят из субботы и воскресенья.
Переносы выходных дней из-за праздников.
28. Можно установить общий порядок формирования временных меток, который будет полезен за пределами вашей системы.
Не понял сути.
29. Смещение местного времени (относительно универсального синхронизированного времени (UTC)) не изменится в течение рабочего дня.
Перенос часовых поясов круглосуточного производства.
30. Thread.sleep(1000) приостанавливает выполнение на 1000 миллисекунд.
Високосная секунда.
31. Thread.sleep(1000) приостанавливает выполнение на время >= 1000 миллисекунд.
Не знаю контрпримера.
32. Каждая минута содержит 60 секунд.
Високосная секунда
33. Метки времени всегда продвигаются монотонно.
Високосная секунда
34. Среднее время по Гринвичу (GMT) и универсальное синхронизированное время (UTC) представляют один и тот же часовой пояс.
Не знаю контрпримера
35. Великобритания использует среднее время по Гринвичу (GMT).
Перешли на UTC по причине неравномерности GMT из-за неравномерности вращения Земли.
36. Время всегда идёт вперёд.
Физически — не знаю контрпримера. Но местное при пересечении ЛПД может идти и вспять…
37. Разность между текущим моментом времени и моментом времени, отстоящим на одну неделю, всегда равна 7 * 86400 секунд.
Високосная секунда
38. Разность двух меток времени является точной мерой времени, прошедшего между ними.
Високосная секунда
39. 24:12:34 — неправильное время.
Не знаю контрпримера.
40. Каждое целое число теоретически может означать год.
Не понял смысла фразы.
Может, имеется в виду, что минус триллион не имеет смысла в нашей Вселенной?
Нулевой год используется астрономами.
41. При выводе на дисплей даты и времени показываемое время имеет ту же самую вторую часть, что и время, хранимое в памяти.
Не понял, что есть вторая часть. Возможно, имеется в виду сегмент секунд или их доли?
42. Или тот же год.
На время отрисовки (ненулевое) может прийтись новый год.
43. Но, по крайней мере, разность между показываемым и хранимым годом не превышает 2.
Не знаю контрпримеров.
44. Если данные находятся в правильном формате ГГГГ-ММ-ДД, то год содержит четыре цифры.
382-12-01 — первое декабря 382-го года, очевидно, либо должно иметь фильтр на ввод, требующий вбивать 0382, либо обрабатывать и такие варианты.
45. Если происходит слияние двух дат путём заимствования месяца из первой, а дня и/или года — из второй, то дата получается правильной.
Сливаем 20 февраля и 31 января. 31 февраля, мне кажется, еще не случалось.
46. Но это будет работать, только если оба года — високосные.
Аналогично.
47. Если взять опубликованный алгоритм, описанный спецификацией W3C, для добавления некоторой продолжительности к датам, то он будет работать во всех случаях.
Не знаю контрпримера.
48. Стандартная библиотека поддерживает отрицательные годы и годы, превышающие 10000.
Не готов прокомментировать.
49. Часовые пояса всегда различаются на целый час.
Непал-Индия.
50. При преобразовании метки времени, имеющей точность в миллисекундах, во время, имеющее точность в секундах, можно спокойно не учитывать составляющие в миллисекундах.
Не готов комментировать.
51. Можно не учитывать составляющую в миллисекундах, если она менее 0,5.
Не готов комментировать.
52. Год, представленный в виде двух цифр, должен быть в диапазоне 1900-2099.
А может и не быть. И как трактовать 42? Это 1942 или 2042?
53. При синтаксическом анализе времени, даты можно читать числа последовательно (символ за символом) без необходимости возвращаться назад.
Не готов комментировать.
54. При распечатке времени, даты можно писать числа последовательно (символ за символом) без необходимости возвращаться назад.
Не готов комментировать.
55. У вас никогда не будет необходимости выполнять синтаксический анализ примерно такого формата ---12Z или P12Y34M56DT78H90M12.345S.
Не готов комментировать.
56. Имеется только 24 часовых пояса.
Больше. Даже если не учитывать получасовые и четвертьчасовые извращения, а также (не)переход на зимнее, часовых поясов есть от -12:00 до +14:00.
57. Часовые пояса всегда различаются на целое число часов относительно универсального синхронизированного времени (UTC).
Индия-Непал
58. Переход на летнее время везде начинается/заканчивается в один и тот же день.
Не знаю контрпримеров.
59. Переход на летнее время всегда представляет собой сдвиг на 1 час вперёд.
Подвижки поясов в России.
60. Считывание часов клиента и сравнение с UTC является хорошим способом определить часовой пояс клиента.
Не учитывает летнее-зимнее время, да к тому же клиент может иметь непереведенные часы (например, пребывать в командировке в другом часовом поясе).
61. Программно-реализованный стек будет / не будет пытаться автоматически настроиться на часовой пояс / переход на летнее время.
Не готов комментировать.
62. Моя программа используется только внутри предприятия / локально, поэтому мне не надо беспокоиться о часовых поясах.
Ну, если подвижки времени вообще ни на что не влияют, то в ряде очень отдельных случаев — возможно.
Но полагаться на это по умолчанию — не стоит.
63. Мой программно-реализованный стек будет обрабатывать это без необходимости какого-либо моего вмешательства.
Не готов комментировать.
64. Я могу легко сохранить список часовых поясов сам.
После чего опять произойдет нормотворческий зуд у какого-нибудь политика…
65. Все измерения времени на данных часах будут происходить в одной и той же системе отсчёта.
В сильно специальных условиях — возможно. Но надо проверять.
66. Тот факт, что основанная на дате функция сейчас работает, означает, что она будет работать при любой дате.
Даже на 2100-02-31?
67. Год содержит 365 или 366 дней.
Куча календарей, где это может быть не так. Мусульманский, например.
68. За каждой календарной датой располагается последовательно дальнейшая без пропуска.
Переход католиков на григорианский календарь.
69. Приведённая дата и/или показание часов однозначно идентифицируют уникальный момент времени.
Сильно зависит от контекста (см. переходы с юлианского на григорианский).
70. Високосные годы имеют место каждые 4 года.
После 2096-го високосным будет только 2104-й.
71. Зная область/район, можно определить их часовой пояс.
Новосибирск (до 1958-го года) располагался сразу в двух часовых поясах.
72. Зная населённый пункт, можно определить его часовой пояс.
Аналогично.
73. Время идёт с одинаковой скоростью на вершине горы и в самой нижней части долины.
Ну в общем — наверное, синхронизированные атомные часы могут показать разницу.
74. Один час равен следующему во всех системах отсчёта времени.
Високосная секунда.
75. Можно рассчитать, когда будут добавлены високосные секунды.
Не готов комментировать. Вообще этим занимается Международная служба вращения Земли. Есть ли у них надежный алгоритм расчета — не в курсе.
76. Точность типа данных, возвращаемых функцией getCurrentTime(), является той же, что и точность этой функции.
Не готов комментировать
77. Два последовательных вызова функции getCurrentTime() вернут различающиеся результаты.
Високосная секунда?
78. Второй из двух последовательных вызовов функции getCurrentTime() вернёт большее значение.
Високосная секунда?
79. Данное программное обеспечение никогда не будет работать на космическом корабле, облетающем чёрную дыру.
А вот это можно запихать в лицензионное соглашение!
Оффтоп, конечно, но добавлю
НЛО прилетело и опубликовало эту надпись здесь
Как то очень жиденько. Наивные попытки пересказать JMM на пальцах только запутывают людей.
Если уж на то пошло, то лучше читать какие то более целостные источники. Например Шипилёв грамотно фиксирует и переносит свои знания в «матрицу» — JMM pragmatics by @shipilev
А за живым общением всегда можно приехать на Joker или JPoint. Тем более, что все это на просторах родной страны :)
Вот здесь много статей по шейдерам
У этого же автора и книги есть. Они немного староваты, но последняя все еще полезна.
1

Информация

В рейтинге
2 935-й
Откуда
Казань, Татарстан, Россия
Дата рождения
Зарегистрирован
Активность