All streams
Search
Write a publication
Pull to refresh
4
0.3
Send message

Мне вот как-то проще проводом. С любого компа, просто подключаешь телефон и видишь его как обычную флешку. Безо всяких дополнительных программ. Хоть виндовый комп, хоть линуксовый. Хоть есть интернет, хоть нет его.

В Android на провод тоже не очень удобно полагаться - как обычную флешку (usb mass storage) без рута запретили где-то 12 лет назад. USB 3.0 или быстрее по gsmarena стоит лишь в 10% новых смартфонов. Syncthing или KDE Connect в локалке оказывается практичнее, облако не обязательно.

Ну побайтовые копирования в другой тип и правда "не очень определены"

Описание std::bit_cast это просто более явно проговаривает.

По-моему, получилось так, что только в [bit.cast] описывают некоторые правила, которые на самом деле должны быть общими (охватывать и самописный memcpy), должны быть быть в разделе о представлении типов, как было в C (ссылка на ту же страницу, п. 5-6, upd: и 8? "unspecified which representation is used").

Спасибо за ответ. Меня привлекло, что даже выступающий на конференции может здесь засомневаться.

Раздел с тем пунктом описывает требования к представлению типов. И, внезапно, в отличие от аналогичного места в C, разрешает копирование* в символьный буфер и обратно && копирование* в объекты того же типа.

  • Это уже разрешено, потому что разрешён доступ** через char.

  • Зачем тогда повторное разрешение? Можно усомниться - потому что иные действия (побайтовое копирование в другой тип)... не очень определены? И некоторый бардак в стандарте может подкрепить эти сомнения - bit_cast так же избегает ссылок на другие разделы, словно аналогичные эффекты у стандартного и/или самописного memcpy не определены (курсив в скобках чуть подкрепляет и эти сомнения):

    • "Padding bits of the result are unspecified" - дублирует "Padding bits have unspecified value" из примечания (но примечания не нормативны)

    • "if there is no value of the object’s type corresponding to the value representation..." (дублирующей фразы не нахожу)

  • Или через эти разрешения хотели лишь запретить побайтовое копирование в случае нетривиально копируемых типов? Тогда пригодилось бы очередное "The intent is that...". Хотя бы.

* побайтовое копирование объектов тривиально копируемых типов, точнее говоря.
** с тем новым термином "type-accessible" (+ссылка на стандарт вместо cppreference).

-----
Это ж какая языко-юридическая практика нужна. И standardese на уровне носителя языка.

-----
Что ещё касается union, Страуструп говорит, что каламбуры только через его труп категорически против легализации существующей практики.

Есть очевидные UB: ... type-puning через union

О, моя любимая мозоль. В C этот приём разрешён, потеря гарантий на уровне C на самом деле неочевидна. Оптимизации, ради которых могли пожертвовать гарантиями, тоже неочевидны. Если так решили упростить текст стандарта, то... это тоже неочевидно. То, что замена на memcpy избавляет от UB - по духу стандарта снова неочевидно, соответствующий пункт стандарта избегает описания memcpy между разными типами (T* вместо T1* и T2*), это замечал один из докладчиков на CppCon.

Воспользоваться гипотетическими оптимизациями из-за масштаба "трагедии" нельзя, можно пройтись по гитхабу:language:C++ /(?-i)union/. По-хорошему UB в нынешнем виде должен вызываться лишь новым атрибутом типа [[assume_no_punning]] специально для реализаций tagged union'ов. Обратная совместимость сохраняется. Можно учитывать новое правило только в новом коде. Исчезает нездоровая и отнимающая у всех время ситуация, когда стандарт не описывает поведение компиляторов, и когда отдельные энтузиасты пытаются вычерпать море (такой type punning везде, и в браузере тоже).

И может случиться то самое, что как бы чего не вышло! И о чём мы? Если есть технический запрет (ещё подумал - запретить протокол file:///), то говорить не о чем. Если его нет, то всё равно спасибо, от разговоров об этом надзирательстве вместо инфобеза поглупеть можно.

файлы/скрипты и прочее запрещено ... и - особенно! - исполнять на рабочем компе.

Э-э-э, так работает браузер. Если браузер можно, то надсмотрщика всё устроит.

---

Я бы сказал, что она может по возможностям потягаться с Obsidian, но не такая модная. Видно и объективные факторы (фрагментация: легаси-TiddlyWiki Classic и TiddlyWiki5; слишком много вынесено в плагины или предлагается для доработки напильником), и субъективные (культ цеттелькастена прошёл мимо неё).

Нет же, она самодостаточна - один локальный файл. И два в одном... как самораспаковывающийся архив - он и архив, и разархиватор. А здесь - html-файл с кучей джаваскрипта, в котором и вики-страницы, и скрипты, реализующие вики-движок.

Тяжёлое медиа из-за такой архитектуры внутрь (оно будет в base64) лучше не класть, но можно ссылаться на лежащее рядом (как в markdown).

На джаваскрипте, очевидно. Ну, её надо умудриться запретить - надо будет запретить загружать страницы в браузере. Или джаваскрипт. Или браузеры вообще.

Что остаётся?

Есть TiddlyWiki — вики-движок + сама вики (в роли личной базы знаний как тут) в виде одного html-файла. В самом простом варианте использования нужен только браузер, файл обновляется через "сохранение страницы" в браузере.

Почти все могут, столько звёзд сошлось: нужный инструмент утёк, утёк в общий доступ, утёк бесплатно и к нему создали инструкцию. Но терабайтный Optane за - сейчас - $146 должен быть и с доставкой выгоднее.

И надо прочувствовать момент: Optane был неудачен своей около-DRAM-ной ценой на обоих поколениях 3D XPoint (видимо, она не масштабируется как флеш-память). По задержкам это память из будущего, но в прошлом её портила цена, а в будущем на горизонте аналогов пока нет. SLC в 983 ZET и SZ1735 хуже (да и это тоже прошлое), SLC/MLC под брендом XL-FLASH хуже (это настоящее/будущее, из наиболее доступного видно Kioxia FL6 на ebay), а развитие протоколов здесь не поможет (от него только throughput: последовательные скорости и глубокие очереди).

Если не расставаться с ерундой* про pSLC и надёжность одного диска, то можно ещё попробовать аудиофилов окучить обрадовать. Сначала Sony продавала улучшающие звучание карты памяти, потом один форумчанин сумел запустить идею о pSLC с той же магией.

* "The vast majority of drive failures happen well before their P/E cycle limit is reached" - doi:10.1109/TDSC.2021.3131571; "Most of the [failed] devices have not used more than 1% of the PE cycles" - A Study of SSD Reliability in Large Scale Enterprise Storage Deployments.

*Занудно* умничанье - это не демагогия. Назвать одноплатником - ошибка, она раз 10 в статье встречается. Назвать компьютером - допустимо, но зачем, если "плата с микроконтроллером" - привычнее и точнее.

Процессор общего назначения - внутри микроконтроллера. На мнение отдельной Foundation плевать, но если не плевать - она эти же основы в своей книжке повторяет. "Microcontrollers ... are computers stripped back to their bare essentials", "type of computer, but it’s not the only type", "CPU: 32-bit dual-core ARM...".

Память, CPU, ввод-вывод есть. В традиционном широком смысле микроконтроллеры - это компьютеры. А сужать смысл можно сколько угодно (What's a Computer?). Но за одноплатным компьютером закрепился другой смысл, да.

"Протереть" SSD получится ещё как, спросите у владельцев видеорегистраторов 4К.

Это должна быть история из серии "Logitech бесплатно меняет мышку в n-ый раз", потому что добраться до гарантийного ресурса, храня видео неделю или дольше (речь ведь не об автомобильных регистраторах? в них SSD не поставить), тяжело - придётся найти SSD с особо низким гарантийным ресурсом. Например, у BX500 4TB на QLC-памяти он 1000 TBW. Это 250 перезаписей всего или 0.23 перезаписей в день (DWPD) в течение 3 гарантийных лет. 1 перезапись в 4 дня. Но можно найти хуже - WD Green SN350 2TB, 1 перезапись в 22 дня.

Но будет из серии "я меняю термопасту 4 раза в год" или "торренты убивают жёсткие диски" - "SSD 100% протёрся, с чего ему ещё умирать?".

Переделать(перепрошить) самому не проблема

Об этом не хотелось говорить, чтобы остаться в контексте первого коммента о производителях, так-то ещё у eMMC есть какой-то более официальный путь перевода в pSLC.

Вообще, у "непонятного" по ссылке цена соответствует теоретическому трёхкратному удорожанию. И у него был китайский аналог (Phison E18, низкая цена, [1][2][3][4]). Правда, он не покидал пределы Китая и "китайнет" слишком огорожен, чтобы разбираться дальше.

P3006R1 говорит, что UB в такой конструкции сейчас есть:

alignas(T) std::byte storage[sizeof(T)];
::new (&storage) T();
// ...
T *ptr_ = reinterpret_cast<T*>(&storage);  // UB

Он ссылается на понятие pointer-interconvertible (появилось в P0137R1). На всё это ведут комменты на stackoverflow.

Если шутят, что программирование на Rust - это борьба с компилятором, то надо шутить, что программирование на C++ - это борьба с оптимизатором (который в рамках стандарта может действовать по принципу "вижу UB - не вижу препятствий").

Оптаны, да, хорошая вещь, только доставка обойдётся в треть цены минимум.

Так у pSLC была/будет та же проблема - несколько моделей под Chia существует, но до нас не доезжали (что-то непонятное до сих пор продаётся).

Для майнинга не нужна надёжность, только ресурс (можно считать одним из аспектов надёжности или совсем другим свойством). А если смотреть ещё глубже, ресурс - для окупаемости, которая достигнется скорее с чем-то незамысловатым (списанные Micron MAX?), чем с новыми pSLC SSD.

Видеонаблюдением сильно "протереть" SSD вроде же никак не получится. SLC обретает смысл при >3 перезаписях в день, то есть видео придётся хранить меньше 8 часов. Если хранить хотя бы неделю, то уже будет QLC подходить.

Да и наверное можно в холодильник положить

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

Та же табличка из JESD218 (Table D.1 — Expected retention (weeks)) примерно удваивает retention при уменьшении температуры хранения на каждые 5 градусов.

upd: то есть +20°C -> -20°C даёт улучшение примерно в 2^8 раз. Всё ниже +25°C - это экстраполяция за пределы таблицы, но с сухим выключенным SSD ничего странного не должно случиться.

Поправлю себя: "(b) ... для лучшего выравнивания износа" и можно добавить (a.2) перемещать данные только по результатам ручного чтения, без автоматических фоновых проверок (пользователь запускает чтение всего диска, контроллер замечает проблемы).

Было бы интересно если бы кто-нибудь разбирающийся рассказал.

На реддите упоминают Phison SmartRefresh, в котором есть "RTMS guarantees that the entire drive is scanned entirely in a specific period (e.g., once every week)".

И упоминают похожий StaticDataRefresh у Silicon Motion. В одном месте написано, что он работает как (а.2) ("monitor the error bit levels at each read operation"), в другом - как (a) ("automatically scans cells at a temperature-dependent rate").

NewMaxx, который там известен постами про SSD, пишет, что есть "разумные основания ожидать" автоматического перемещения от современных SSD и что он в каких-то прошлых постах разбирал StaticDataRefresh.

По таймеру (ну, "periodic refresh feature") - это то, как Samsung со второго раза исправил проблему в 840 EVO / 840.

Но на самом деле нет, в "опциях для продвинутых пользователей" спрятан имеется -outfile. Ну, в работе с видео незаменимые двоичные конвейеры бывают.

Это ещё и покупателю невыгодно. Три TLC SSD стоят как один pSLC. Отказаться от диска с бэкапом, от диска с зеркалом и в итоге потерять всё, скажем, из-за бага в прошивке? Так что ли его надо использовать? А если с бэкапами порядок, отказоустойчивость нужная есть, но душа просит чего-то ещё, то куда тут дешевизну приткнуть?

Да и на самом деле душа просит только поворчать. Вот за океаном в рамках бесконечной распродажи оптейна есть предложение даже покруче, чем pSLC SSD.

Information

Rating
2,471-st
Registered
Activity