Pull to refresh
4
0
Send message

Интересно, для чего потребовался отдельно CPU при наличии FPGA. Почему не софт-ядро?

K — может быть "ARSINE".

Пишем большой проект. Все сторонние библиотеки четко делятся на три категории:
1) кандидаты на добавление в стандартную библиотеку,
2) те, в которые нам приходится контрибьютить,
3) непригодные к использованию вообще.
Мы выработали правило: не бери стороннюю библиотеку, если не готов посылать в нее пулл-реквесты.

Кавычки внутри кавычек? Если так, то это где-то еще баг, и решать надо не таким способом. serde не дает дополнительных кавычек (точно знаю, у нас в продакшн он как раз на JSON). Если речь о скобках, не о кавычках, так там #[flatten] ставится. Чуть попозже внимательно проверю, откуда что идет, при беглом прочтении не вижу.

Есть тесная связь между квалификацией программиста и тем, на каких языках он любит работать. Как правило, если программист хорошо владеет только одним языком, это хреновый программист. Если же программист владеет несколькими языками, то среди этих языков C# окажется, скорее всего, не лучшим. Нет, он неплох, но при выборе между C# и F#, или C# или Clojure, или C# или Rust и т.д. C# займет второе место. Соответственно, причин выбрать именно C# обычно бывают две: программист не владеет лучшим языком или менеджер не позволяет выбирать язык. В обеих ситуациях речь идет не о программисте высшей квалификации.

Веские причины хорошему программисту писать на C# или любом другом не лучшем языке: пишется плагин к чужой системе, подчиненные программиста в масштабном проекте не знают других языков. Оба случая в статистике незаметны.
C++ проиграет, если на Rust писать чисто. Потому что на ту игру со ссылками, которая нормальна в Rust с его borrow checker, ни один программист C++ в здравом уме не решится и будет копировать строки.

Сравнение Rust и Swift более чем корректно, потому что это очень похожие по синтаксису языки. Компилятор Swift мог бы быть таким же быстрым, как Rust, если бы его разработчики не халтурили.

Дерайвить дефолт можно для всех типов, которые имеют impl Default, а это почти все типы стандартной библиотеки. В том числе все коллекции, которые могут быть пустыми.

Eще в таких же случаях методы типа .and_then() могут быть полезны. Или возврат ошибки из функции через оператор "?" с переносом обработки ошибок на уровень выше.

При чтении файла можно выкинуть всю возню с буферизацией и написать буквально так:
`for byte in BufReader(file).bytes()`.

Вместо `Option::None` можно писать просто `None`, так как это имя всегда импортировано. Аннотация типа в той же строке не нужна, Rust сам выведет. Вообще этот цикл лучше переписать как-то так:
`let dr = di.phones.iter().map(|p| res.index_by_phone.get(p)).any(Option::is_some);`

Тот же прием лучше использовать для итерирования по байтам: поскольку все непустые ветки завершаются одним и тем же `push()`, то имеет смысл профильтровать итератор, а потом вызвать `collect()`. Иногда такой подход повышает скорость, так как при заранее известном размере итератора вектор не будет переаллоцироваться.

Еще во многих местах лишний match на String, так как `val_to_str()` уже содержит точно то же самое. Вместо `to_string()` почти везде можно писать `into()`. В целом, кажется, я могу раза в два сократить написанное тут. И это даже если не вспоминать, что крейт `serde` содержит готовую работу с JSON, и вообще всю программу можно свести к одному вызову `from_str()`, если добавить `#[derive(Deserialize)]` к структурам. По скорости это будет очень быстро, Deserialize не делает лишних копирований и прочего.

Для переделки со строк на ссылки скорее всего достаточно просто сменить тип поля в структурах: сложная игра со временами жизни тут не требуется, достаточно просто формально это время объявить.
«Некрасивость» кода на Rust в приведенном примере возникла исключительно из-за стиля написания. Например, обработку ошибки при открытии файла на Rust можно было написать в точности таким же `if let`, как на Swift. То же самое относится и к match в проверках на None. И еще много таких мест есть. Кажется, если поправить их все, код на Rust будет даже более красивым.
Реагирует этот прибор на три вещи: (1) температура, (2) градиент температуры от освещения прибора Солнцем и (3) изменения атмосферного давления и влажности даже сквозь пробку, поскольку через большинство пробок таки идет диффузия. Третье исключается, если ампулу не затыкать и не заклеивать, а отпаять горелкой.
Да, Smirholo. У него самодельная поливочная установка. Возможно, уже не одна. Он сенсибилизирует под 633 и под 532. Пленку предлагается зажимать между двух стекол, сам он в основном с пленкой работает.
Важна не точность позиционирования при съемке, а точность при воспроизведении. Снять можно с любых углов. Потом надо просто спроецировать под точно такими же углами. Для небольших объектов это делают камерой, едущей по рельсу. Для крупных можно снять видео как попало (с дрона, напримрер), а потом на компьютере вычислить точную траекторию движения камеры и воспроизвести.

А еще можно делать голограмму не с реального объекта, а с 3d-рендера или с масштабной модели. Я видел интересные голограммы с сюжетом, построенным из игрушек, с человечками из «лего» и т.д.
Там тишина с тех пор, как скончался Воробьев. Сначала это был форум у самого Воробьева на holography.ru, потом переехал к Colin Kaminski, потом некоторое время его я модерировал, потом там возникли терки из-за авторских прав, форум несколько раз закрывали, переносили… Любительская голография держалась на самом Воробьеве и магазине на ВВЦ, где всегда можно было купить ПФГ-03м, можно было и по почте заказать одну коробку. Потом студию на ВВЦ разгромили, раму установки пришлось резать болгаркой (!), чтобы вынести, потом скончался сам Сергей Петрович. И после этого осталось несколько человек, которые все равно друг друга знают и в форуме не очень-то нуждаются. Причем один из них сам поливает пластинки и пленку, в т.ч. под зеленый, у него и купить можно.
Можно же не 6x6 заказывать, а размер побольше, или половину мелких, половину крупных. Там уже в лазер упирается. Экспозиция растет пропорционально площади пластинки, а с лазерами мощностью выше единиц мВт много неудачных результатов: они обычно не одномодовые. Но на какие-нибудь 9x12 должно все еще хватать. На holowiki.org/forum может желающие найдутся?
Город делается, но не с натуры. Голограмму можно синтезировать по большому количеству фотографий или по 3d-модели, если на фотопластинку последовательно экспонировать кадры, снятые с разных ракурсов. «Geola» продает установки, работающие на этом принципе, и даже делает голограммы мультяшных персонажей.

Портрет делается с натуры импульсным лазером. Тот, что был раньше на ВВЦ, давал 1 Дж 10 нс 532 нм и использовался для записи на ВРП-М с латенсификацией. Потом гелий-неоновым это копировалось на ПФГ-03М.
Пять квадратных метров — это 50 коробок пластинок 6x6, не так и много, можно коллективный заказ организовать. Судя по всему, «Микрон» стал поливать по требованию. Есть покупатель — поливают партию, нет покупателя — не выпускают. У них и в хорошие времена поливы были весьма разные, покойный Сергей Петрович это отмечал.
Проверил, она благополучно перекочевала в таблицу «Electrical characteristics» в ревизии 2015-го года. Чувствительность 0.45 A/W верна. Чувствительность 865 неких (µA/W)/cm^2 — обратите внимание на единицы измерения, они бредовые. Имелось в виду, конечно, µA/(W/cm^2), и при вычислениях допущена та же ошибка. Следует не делить, а умножать на площадь, правильное значение 2.34 µA/(W/cm^2).
Если для измерения экспозиции использовать OPT101P, то осторожно: в даташите там есть ошибка, одна из цифр чувствительности дана неправильно (авторы умножение с делением спутали). Остальные цифры и график верные, поэтому по ним ошибочная легко выявляется и исправляется. Будьте внимательны и перепроверяйте формулы.
12 ...
21

Information

Rating
Does not participate
Registered
Activity