Это охренительно круто! Сходу понятно не всё, но интерполяция это интересно.
Вопрос не совсем по теме, но давно интересовал. А следует ли из гладкости однозначность представления каждого поворота? В общем случае точно нет, а что здесь? В углах 360 == 0, что иногда неудобно. Имеется в виду, например, такая задача: есть анимация вращения колеса, промежуточные кадры интерполируются по клбчевым, но при переходе через 360 мы интерполируем углы 359 и 0, получая резкий скачок на одном кадре. Понятно, что это легко решается на программном уровне, приводя всё в один отрезок, по сути оперируя углом по модулю 360, но всё же решается ли эта проблема более элегантно?
Ваш метод примеряется, только не с кадрами с разных телескопов, а с серией с одного. То есть берём 1000 кадров с одного и того же телескопа в примерно одинаковых условиях и стекируем. Все качественные любительские снимки так и сделаны. Поднять разрешающую способность стекирование позволяет очень слабо, скорее точнее приблизиться к теоретическому максимум телескопа, зато динамический диапазон поднимает многократно. Да и шум снижает. Это позволяет разглядывать очень тусклые объекты.
Хотя для повышения разрешения тоже применяется. Можете погуглить «вебкаминг планет», когда из видео с обычной вебкамеры получают качественные снимки Юпитера, Сатурна, Марса. И там снимают видео, потому что нужны тысячи и тысячи кадров.
P.S. Посмотрите на астрофоруме, там, кажется, кооперировались для совместного стекинга.
материнские платы чаще всего не поддерживают режим AHCI, а значит, режим «профилактики и самообслуживания» (TRIM) не будет работать.
Не правда, не укрепляйте мифы. Наличие AHCI вовсе не обязательно. TRIM — комманда ATA интерфейса, поэтому она может быть переслана контроллером даже в IDE режиме, даже контроллером, который не умеет AHCI. Я заводил TRIM на Win7 на материнке с мостом ICH9(не R). Да, это медленнее, но всёравно гораздо лучше HDD.
Справедливости ради отмечу, что под линуксом GDC действительно сгенерировал 10 мегабайт. Но gdc сейчас во многом отстаёт, вон и версия языка только 2.066.
Свежий LDC сгенерировал 645 килобайт. Много, но я не пытался ничего ужимать. Думаю, что тут как и у Rust пожмётся выкидыванием лишнего.
Не надо бросаться камнями в D, не проверив на хоть сколько-то актуальной версии. На Win7 64-bit с DMD 2.070.0 helloworld занимает 200 килобайт. Без ключей, без конфигов. Если заморочиться размером, то можно не отставать от C. Вот, например, helloworld в 438 байт: http://forum.dlang.org/thread/qcbicxrtmjmwiljsyhdf@forum.dlang.org
с lvalue gcc говорит, что error: call of overloaded 'bar(int&)' is ambiguous
bar(a);
^
Потому что обе сигнатуры — одно и то же для перегрузок. То есть всё работает, но ошибка совсем не информативна.
P.S. Лучше воспользоваться не =delete, а static_assert (false, «lvalue is not supported»);
Божественно. Особенно радует, что это не экран шаблонного кода, а вполне вменяемые 2 строки. Удачно отделяется концепт с условием от определения самого метода. Всё таки даже без концептов С++11 силён.
Долго соображал над конструкцией typename = std::enable_if_t<...>. Я правильно понял, что это просто безымянный аргумент шаблона для using? А то на первый взгляд выглядит как специальный синтаксис.
С тем количеством динамики, которое заложено в JS и, соответственно, в TS, получится медленнее, чем V8. Не вижу потенциала для ускорения. V8 и так компилит всё, что возможно. Можно попробовать с потерей динамики, то есть в рамках абстракций TS, но не уверен, что это будет достаточно понятно, гибко и быстро.
Вот возможность писать плагины к ноде на D не помешала бы. Это и сейчас возможно, просто не удобно, много рутины на стыке C++ и D.
Вам не верят те, кто тоже компилировал свои проекты и сравнивал. Для веба действительно не так заметно, там больше libevent работает, но имеет смысл проводить более чистый эксперимент. В реальном коде будет что оптимизировать, и тогда выбор компилятора будет вносить существенный вклад.
И всё-таки хочется конкретных опций компилятора (inline, O3, nobounds-check вкл или выкл).
P.S. минус не мой, не подумайте.
Меня тоже вначале удивляло процедурно-функциональное API. Но если понять и принять идею, то фобос очень удобен. Особенно это касается диапазонов (ranges), которые однозначно лучше всего, что я видел в других языках. Может быть поначалу и непонятно, зато отличное соотношение удобство/производительность.
Справедливости ради, сейчас все используют ручку, потому что карандаш это небезопасно.Графитовая пыль проводит ток и может оседать в невероятных местах. Так что не зря разрабатывали ручку.
P.S. kekekeks опередил
Простите, а о чём пост? Космонавтика — тема гиктаймса. Просто ссылка на поставщика железок, работающих на марсе? Два абзаца текста, один из которых копипаст с вики, второй про рекламируемую технологию. Очень нехорошо эксплуатировать марсаход для привлечения людей в абсолютно пустую статью.
20-и кратный бинокль это перебор. В качестве обзорного бинокля используют 7 или 10 крат. Даже 10х сильно дрожит в руках и наблюдать сложновато. Важнее увеличения апертура, а точнее диаметр зрачка. Если взять бинокль 20х с апертурой 20, то вы вообще ничего не увидите, так как область обзора ничтожно мала, а линза 20мм собирает слишком мало света. Самое хорошее — 7х или 10х с апертурой 50. Шире 50/7 = 7 миллиметров зрачок глаза нигде не откроется, так что светосила будет максимальная. У меня 10х50, можно различить спутники Юпитера, красиво выглядит луна. Так же это хороший обзорный бинокль в пару к телескопу.
Спасибо за статью, позволю себе немного покритиковать код.
#define LN_ONE 16 // 00010000 клетка закрашена, но линия ч/з нее не проходит. для клеток с числом 1
Перестаньте объявлять константы дефайнами. В С++ есть const, который нормально живёт в неймспейсах, имеет нормальные области видимости и права доступа и вообще является хорошим стилем против плохого препроцессора.
Флаги лучше объявлять через операторы побитовго сдвига или через литералы
Разнообразные объединения флагов лучше писать через побитовое или, например:
const size_t TOP_LEFT = TOP | LEFT;
У вас случай посложнее, но всё равно прослеживается логика. Не зря же написаны эти комментарии с бинарным представлением. Гораздо лучше чтобы вместо объяснений был код с подобным уровнем пояснений.
Самые обыкновенные. 50 км проходит почти любой человек с первого раза, прогрессировать не так сложно. А вот супербатарейки у людей из рекордов: https://ru.wikipedia.org/wiki/Суточный_бег
Налегке с бутылкой воды и минимумом еды. По городу, а не пересечёнке, чтобы можно было в любой момент сойти с маршрута, магазины на всякий случай и тд. По факту больше 74 не ходил, но очень хочется в этом году добиться 100км за сутки.
Очень полезная фича. По Москве очень часто непонятно, как перейти железную дорогу, ТТК, МКАД и тд. Всегда, когда планировал длительные прогулки (50-80 км) это было основной головной болью. Возможно уже на этих выходных попробую на маршруте километров в 50.
Вопрос не совсем по теме, но давно интересовал. А следует ли из гладкости однозначность представления каждого поворота? В общем случае точно нет, а что здесь? В углах 360 == 0, что иногда неудобно. Имеется в виду, например, такая задача: есть анимация вращения колеса, промежуточные кадры интерполируются по клбчевым, но при переходе через 360 мы интерполируем углы 359 и 0, получая резкий скачок на одном кадре. Понятно, что это легко решается на программном уровне, приводя всё в один отрезок, по сути оперируя углом по модулю 360, но всё же решается ли эта проблема более элегантно?
Хотя для повышения разрешения тоже применяется. Можете погуглить «вебкаминг планет», когда из видео с обычной вебкамеры получают качественные снимки Юпитера, Сатурна, Марса. И там снимают видео, потому что нужны тысячи и тысячи кадров.
P.S. Посмотрите на астрофоруме, там, кажется, кооперировались для совместного стекинга.
Не правда, не укрепляйте мифы. Наличие AHCI вовсе не обязательно. TRIM — комманда ATA интерфейса, поэтому она может быть переслана контроллером даже в IDE режиме, даже контроллером, который не умеет AHCI. Я заводил TRIM на Win7 на материнке с мостом ICH9(не R). Да, это медленнее, но всёравно гораздо лучше HDD.
Свежий LDC сгенерировал 645 килобайт. Много, но я не пытался ничего ужимать. Думаю, что тут как и у Rust пожмётся выкидыванием лишнего.
error: call of overloaded 'bar(int&)' is ambiguous
bar(a);
^
Потому что обе сигнатуры — одно и то же для перегрузок. То есть всё работает, но ошибка совсем не информативна.
P.S. Лучше воспользоваться не =delete, а static_assert (false, «lvalue is not supported»);
Долго соображал над конструкцией typename = std::enable_if_t<...>. Я правильно понял, что это просто безымянный аргумент шаблона для using? А то на первый взгляд выглядит как специальный синтаксис.
Вот возможность писать плагины к ноде на D не помешала бы. Это и сейчас возможно, просто не удобно, много рутины на стыке C++ и D.
И всё-таки хочется конкретных опций компилятора (inline, O3, nobounds-check вкл или выкл).
P.S. минус не мой, не подумайте.
P.S. kekekeks опередил
Перестаньте объявлять константы дефайнами. В С++ есть const, который нормально живёт в неймспейсах, имеет нормальные области видимости и права доступа и вообще является хорошим стилем против плохого препроцессора.
Флаги лучше объявлять через операторы побитовго сдвига или через литералы
Разнообразные объединения флагов лучше писать через побитовое или, например:
У вас случай посложнее, но всё равно прослеживается логика. Не зря же написаны эти комментарии с бинарным представлением. Гораздо лучше чтобы вместо объяснений был код с подобным уровнем пояснений.
Модуль в активной разработке, сейчас идёт его интеграция в vibe.d.
Так что прямо сейчас http2 нет, но скоро будет.