Если не смущает ранний доступ, я работаю над созданием идеальной программы для заметок и списка задач, посмотреть и попробовать можно тут heaplist.app (win/linux), пользоваться ей можно уже вполне комфортно, но многое еще надо добавить.
очень странно работают "посты", еле удалось опубликовать, только когда было около 400 свободных символов ошибка исчезла (такое ощушение, что считают байты, а не символы), кроме того в ошибке указано, что должно быть максимум 1500 символов, а счетчик редактора говорит 1600
Reverse можно использовать и в сложных ключах, например поместим важные заметки в начало и отсортируем их по возрастанию заголовков для одинаковых групп важности:
Конечно, в некоторых случаях можно просто инвертировать значение, так в приведенном примере, использование !k.important даст тот же результат, но инвертирование не всегда возможно (например, строки). Что касается производительности, я проверил оба метода и не обнаружил никакой разницы. На сортировку булевых значений, оба метода тратят одинаковое время.
использую sqlx в своем приложении как основу для моей ORM, не сказал бы, что sqlx идеальна из плюсов: позволила мне быстро написать мой ORM, поддержка async, из минусов: были проблемы с использованием трейтов для соединений (пришлось отказаться, использую конкретные типы), проверка запросов при компиляции - звучит красиво, на практике больше похоже на "костыль на костыле" с кучей ограничений, не могу использовать WAL в sqlite (мой баг репорт https://github.com/launchbadge/sqlx/issues/2249)
принимается, но как вы сами заметили будет предупреждение компилятора, что есть неиспользованная переменная, так что пропустить эту ошибку будет не так-то просто
другой вариант: можно использовать алиас, если нужна компактность:
use NextStep as S;
match next_step {
S::TurnLeft => println!("turn left"),
S::TurnRight => println!("turn right"),
}
офтопик, мне нравиться как матчинг по енумам реализован в Zig, там варианты можно начинать с точки, хотя не уверен, что подобное можно реализовать в Rust:
не, не то, ни одна из программ для заметок, которые я пробовал мне не подошла.
не знаю поместится ли весь ответ в коммен, но поехали. я люблю делать кучу небольших заметок/задач (отсюда "heap" в названии "heaplist"), обычно запись это предложение или просто слово, иногда блок текста, сейчас у меня в базе 9000 заметок, хочу еще перенести туда все закладки это будет еще +10000, я не встречал еще не одной программы, которая позволяла бы удобно с этим работать.
как правило эти программы работатют по принципу "сначала структурируй потом записывай", а я хочу "сначала записать, а потом структурировать", например может быть задача на выполнение, но после исследования она преврашается в заметку с кучей полезной информации.
так как заметок очень много, должен быть хороший поиск с ранжированием, программа должна уметь "забывать" и "вспоминать" записи, т.е. не надо показывать неактуальные старые записи, но должна быть возможность их найти при необходимости.
ну и хочется кучу различных мелочей, которые делают работу с программой удобней, например при поиске "enter" открывает первую запись в списке найденных
нее, в жанр мемуаров еще не готов переходить, если коротко, то фрилансер, программист, сейчас работаю над своей идеальной программой для заметок, пробую писать статьи на хабр
Хм, заставили призадуматься, действительно u128 кодированное в base58 тоже помещается в 22 символа. В свою защиту скажу base62 проще, более однозначный алфавит. Ну а если идти по пути уменьшения алфавита, тогда можно использовать base57, тоже будет 22 символа. Спасибо подумаю над этим.
не совсем понял насчет "убрать аллокацию", можно убрать инициализацию вектора это да, будет немного быстрее, если вы имеете ввиду передавать в функцию буфер для заполнения, то можно, но не подойдет для моего случая
Если набирать с экрана то лучше убрать не однозначные символы O0o 1liI B8, если по телефону то независимым от больших и маленьких букв сделать. А вот для выделения курсором можно unicode использовать база резко увеличиться :)
да, есть в планах использование двух типов идентификаторов, глобально уникальные как описано в статье, а также локально уникальные, например, 5-ти символьные base32 строки (см. Crockford's Base32)
А для чего вам скорость или весь текст состоит из идентификаторов? Или это по тестам оказалось самым узким местом?
ради эстетики, слишком уж медленно было и хорошо поддается оптимизации
Не все так плохо. Bitcoin использует Proof-of-Work для майнинга, при этом выполняются интенсивные вычисления затрачивающие большое количество энергии, но это не единственный подход. Существует также Proof-of-Stake при котором для майнинга необходимо владеть монетами и быть онлайн.
Пример PoS монет — Peercoin, в будущем переход на PoS планируется для Ethereum.
Интересно как они смотрят на стандартизацию зарядных станций, чтобы можно было заряжать машину любого производителя. Будет очень странно, если каждый производитель будет вынужден развивать сеть зарядных станций в дополнение к выпуску автомобиля.
На сайте производителя все же говорится о разработке электролита из твердого полимера, с которым в том числе можно использовать и аноды из металлического лития.
Согласен, немного похоже на историю со смарт-контрактами DAO (ethereum). Тогда тоже коины увели ничего особо не взламывая, а используя лишь сам смарт-контракт.
Если не смущает ранний доступ, я работаю над созданием идеальной программы для заметок и списка задач, посмотреть и попробовать можно тут heaplist.app (win/linux), пользоваться ей можно уже вполне комфортно, но многое еще надо добавить.
очень странно работают "посты", еле удалось опубликовать, только когда было около 400 свободных символов ошибка исчезла (такое ощушение, что считают байты, а не символы), кроме того в ошибке указано, что должно быть максимум 1500 символов, а счетчик редактора говорит 1600
Reverse
можно использовать и в сложных ключах, например поместим важные заметки в начало и отсортируем их по возрастанию заголовков для одинаковых групп важности:Конечно, в некоторых случаях можно просто инвертировать значение, так в приведенном примере, использование
!k.important
даст тот же результат, но инвертирование не всегда возможно (например, строки). Что касается производительности, я проверил оба метода и не обнаружил никакой разницы. На сортировку булевых значений, оба метода тратят одинаковое время.использую
sqlx
в своем приложении как основу для моей ORM, не сказал бы, чтоsqlx
идеальна из плюсов: позволила мне быстро написать мой ORM, поддержкаasync
, из минусов: были проблемы с использованием трейтов для соединений (пришлось отказаться, использую конкретные типы), проверка запросов при компиляции - звучит красиво, на практике больше похоже на "костыль на костыле" с кучей ограничений, не могу использовать WAL в sqlite (мой баг репорт https://github.com/launchbadge/sqlx/issues/2249)в будущем буду переходить на
rusqlite
принимается, но как вы сами заметили будет предупреждение компилятора, что есть неиспользованная переменная, так что пропустить эту ошибку будет не так-то просто
другой вариант: можно использовать алиас, если нужна компактность:
офтопик, мне нравиться как матчинг по енумам реализован в Zig, там варианты можно начинать с точки, хотя не уверен, что подобное можно реализовать в Rust:
https://godbolt.org/z/Kaf8nMTaW
.
@bodyawmа по поводу камер можете что-нибудь сказать? легко ли использовать камеру из старого мобильника?
не, не то, ни одна из программ для заметок, которые я пробовал мне не подошла.
не знаю поместится ли весь ответ в коммен, но поехали. я люблю делать кучу небольших заметок/задач (отсюда "heap" в названии "heaplist"), обычно запись это предложение или просто слово, иногда блок текста, сейчас у меня в базе 9000 заметок, хочу еще перенести туда все закладки это будет еще +10000, я не встречал еще не одной программы, которая позволяла бы удобно с этим работать.
как правило эти программы работатют по принципу "сначала структурируй потом записывай", а я хочу "сначала записать, а потом структурировать", например может быть задача на выполнение, но после исследования она преврашается в заметку с кучей полезной информации.
так как заметок очень много, должен быть хороший поиск с ранжированием, программа должна уметь "забывать" и "вспоминать" записи, т.е. не надо показывать неактуальные старые записи, но должна быть возможность их найти при необходимости.
ну и хочется кучу различных мелочей, которые делают работу с программой удобней, например при поиске "enter" открывает первую запись в списке найденных
нее, в жанр мемуаров еще не готов переходить, если коротко, то фрилансер, программист, сейчас работаю над своей идеальной программой для заметок, пробую писать статьи на хабр
хочу еще написать третью статью в цикле: "Векторизация кодировки используя Zig", будет интересно?
да, все бенчмарки были в релиз-билде, как описано в статье оптимизация выполена за счет перехода от деления 128-битных чисел к делению 64-битных
fastdiv еще не пробовал, потестирую, спасибо
Хм, заставили призадуматься, действительно u128 кодированное в base58 тоже помещается в 22 символа. В свою защиту скажу base62 проще, более однозначный алфавит. Ну а если идти по пути уменьшения алфавита, тогда можно использовать base57, тоже будет 22 символа. Спасибо подумаю над этим.
не знаю можно ли здесь оставлять ссылки на свои проекты, но все есть в профиле, называется heaplist.app
не совсем понял насчет "убрать аллокацию", можно убрать инициализацию вектора это да, будет немного быстрее, если вы имеете ввиду передавать в функцию буфер для заполнения, то можно, но не подойдет для моего случая
да, есть в планах использование двух типов идентификаторов, глобально уникальные как описано в статье, а также локально уникальные, например, 5-ти символьные base32 строки (см. Crockford's Base32)
ради эстетики, слишком уж медленно было и хорошо поддается оптимизации
Пример PoS монет — Peercoin, в будущем переход на PoS планируется для Ethereum.
К слову вот эти обещают именно литий-металлические аккумуляторы http://www.solidenergysystems.com/