Pull to refresh
51
0
Денис Глазков @denisskin

Разработчик

Send message
ок… есть еще кое-какие идеи для улучшения этой имплементации…
да. все верно, черт возьми! очень похоже на то.
эмм… а мне казалось, в «стандартной» имплементации и реализован стандартный алгоритм. там просто вместо «классического» рекурсивного вызова организован собственный стек вызовов и добавлено исключение для случая, когда элементов меньше 7. реализация с рекурсивным вызовом функции, уверен, будет работать медленнее, особенно с ростом количества данных.
но Вы безусловно правы в том что необходимо сравнивать с другими методами сортировки, плюс на различных типах данных.
угу. не учел. заголовок получился весьма тривиальный.
количество перестановок – О(N)
количество чтений тоже – O(N) (сравнений как таковых тут нет)
памяти О(1)

можно было бы написать Метод сортировки за линейное время )) но увы, это не всегда так.
за ссылку спасибо! до этого даже не знал про такой метод
Честно говоря, не гуглил когда называл. Надо было хоть как-то назвать. Вот и решил назвать примерно также пафосно как quick-sort -)
нет. оно всегда равно 256
не могу точно сказать. не знаю.

знаю одну отличную либу на Си от tony2001, которая реализует и бенчит разные методы сортировки:
github.com/tony2001/sort
Да – принцип очень похож (как и во всех поразрядных сортировках).
Данный алгоритм – это скорее конкретная реализация. Есть, однако, и принципиальные отличия. Например, в radix дополнительно используется output-массив, равный по длине исходному массиву. т.е. алгоритм отъедает О(N) памяти. У нас же используется только исходный массив и перестановка элементов происходит по-месту (in-place).

Для radix sort явно не указано, как сортировать данные внутри каждой корзины.

В текущей реализации есть еще одна особенность – запоминается первый и последний номер корзины, для последующей расстановки границ корзин.
в будущем, возможно, ДА. можно будет )

В недалеких планах доработать клиентскую логику так чтобы она работала, как серверная нода и обслуживала хотя бы один сегмент данных.
Клиенты, даже те которые находятся за NATом, будут коннектиться к серверным нодам, сообщать им о себе, какие сегменты они обслуживают, реплицировать данные, и по запросу сервера возвращать их. Планируется что данные на клиенте будут храниться в IndexedDB, который позволяет выделить пространство даже в несколько гигобайт.

Однако, надо иметь ввиду что при подобной схеме хранения, доступ к данным будет происходить с чуть большими задержками по времени.
да. идея есть. это как раз о чем я и писал в статье. потенциально функционал сети можно расширять новыми типами стореджей.
например сторедж, через который будут раздаваться подписчикам медийные потоки (скажем, через WebRTC).

или например, сторедж, который хранит файлы лишь временно — своего рода кеш файлов. один пользователь залил файл, его скачали остальные, через какое-то время файл удалился.

или сторедж который на диске вообще ничего не хранит, а является своего рода огромным мемкешом. очень будет полезен для передачи каких-то второстепенных данных: онлайн/не онлайн, различных статусов, например, «Юзер печатает вам сообщение...»
тут скорее надо думать о чем-то таком как Proof-of-Capacity-per-Second
мало того, что вы храните данные, важно что вы их еще и раздаете.
Да. такая система бы подстегнула активнее участников устанавливать ноды и раздавать контент.
далее децентрализованный аналог Википедии, которую порой пугают прикрыть… )
Тут лежат мои ECDSA + ГОСТ 2001/2012 и sha2, на сях.
Иван, я вижу, что ты — отличный спец в криптографии. Не хотел бы ты принять участие в развитии проекта?
В частности у меня есть некоторые сомнения в функциях кодирования, декодирования данных на клиенте ассиметричным алгоритом. Поскольку я не нашел готовых либ на JavaScript, пришлось писать их самому:
github.com/basenetwork/client-js/blob/master/lib/base/Certificate.js#L122-L156
— тут уж извини, только JavaScript, ибо это браузерная логика и Си-шные либы там сложно использовать.
Нафик слать инвайты почтой, когда тот же токс пашет просто так, из коробки?
Чтобы использовать сеть не нужны инвайты. Любой (анонимно) может взять и оставить комментарий на сайте. Например, test.base.network/chat
Инвайт нужен исключительно для регистрации пользователями новых доменов. Это система ограничения бесконтрольной регистрации доменов. Считается что gmail-аккаунтов ограниченное число и изначально (исключительно для представления начальной версии сети) было принято решение ограничить регистрацию доменных имен инвайтами высылаемыми на gmail. на каждый адрес один инвайт.
В будущем для регистраций доменов могут использоваться и другие ограничители.
В чём отличия от других схожих технологий файлообмена?

Ну, это же не система файлообмена. это система с динамическим контентом. Сайт в base.network — это же не набор статических файлов. это же система с динамически генерируемым контентом. В этом и основное отличие. Что на базе системы можно строить динамические сайты, с произвольным функционалом, собственные мобильные приложения, и даже соц.сети не уступающие своим централизованным аналогам.
Не думаю что для мусорных данных нужен правильный хэш.

На сервере каждый хеш проверяется на валидность.
Тут лежат мои ECDSA + ГОСТ 2001/2012 и sha2, на сях.
Просто добавляешь include… и вызываешь нужное. Примеры как вызывать в seltest() функциях.
Это все классно. Написать на Си небольшую либу, работающую с криптографией. Но если говорить о серверной ноде, которая, по-мимо работы с криптографией, должна еще работать и как веб-сервер, реализовывать все тонкости http-протокола, работать с базой, осуществлять в фоне постоянные репликации с такими же нодами, держать с клиентами SSE-соединения и бог знает еще чего делать, то для простоты разработки, возможно, стоит использовать высокоуровневый язык, который как раз для этого и предназначен? В принципе, GO не сильно уступает по скорости выполнения, также компилируемый, со статической типизацией и пр.
Есть Tox, и неожиданно он у меня и в портах на фре и в миранде плагином, и на винде тоже клиент есть.
Есть libutp у битторента, не уверен что её в изначальном виде целиком встраивают, но дёргать куски из сишного кода куда либо ещё проще.

В данном случае речь идет о клиенте. Клиентские либы сейчас вообще написаны на JavaScript, поскольку клиентом является обычный браузер, других клиентов пока нет. Но планируются…
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity