Широко известен кейс open source проекта SQLite, где из-за избытка низкоквалифицированной бесплатной рабочей силы, обеспечиваемой большим количеством желающих поработать над известным проектом, эта рабочая сила утилизируется армейским способом, то есть написанием бесполезных юнит-тестов
Откуда у вас эта информация?
SQLite is open-source but it is not open-contribution. All the code in SQLite is written by a small team of experts. The project does not accept "pull requests" or patches from anonymous passers-by on the internet.
In order to keep SQLite completely free and unencumbered by copyright, the project does not accept patches. If you would like to make a suggested change, and include a patch as a proof-of-concept, that would be great. However please do not be offended if we rewrite your patch from scratch.
DHT — это здорово, но я вижу тут другую проблему: количество участников должно быть достаточно большим, чтобы обеспечить безопасность системы. Но на старте проекта при недостаточной популярности, естественно, участников мало, и это весьма ограничивает развитие. Т.е. получается замкнутый круг.
Я предполагаю, что DHT используется только для поиска участников. Можете раскрыть мысль про проблемы с безопасностью и замкнутый круг?
И, кстати, я не увидел внятного описания криптографии. Ее нет вообще, или я не нашел в их Вики? Подскажите ссылку, если она есть.
Не подскажу — я ее сам не видел.
Как я понимаю работу jami:
При создании аккаунта генерируется пара ключей (допустим rsa).
Для поиска участников используется что-то типа трекеров для торрентов.
При добавлении контакта происходит обмен ключами.
Далее используется end2end шифрование.
Торфон делает похожие вещи, только вместо dht используются onion сервисы и трафик "блуждает" через промежуточные узлы.
Можете, как автор, сравнить ваш продукт с https://jami.net/?
Обычно, все p2p звонилки и чаты имеют одну проблему — невозможность позвонить или отправить сообщение, если абонент оффлайн. Как у вас с этим?
Есть разные способы, как можно достигать консистентности в таких случаях, но самым распространненым являются очереди — вы добавляете в одной транзакции данные и запись в отдельную таблицу — очередь на обновление сервиса. Поскольку это транзакция на одном сервере, то она либо пройдет целиком, либо не пройдет вовсе. Соответственно, даже если обновить данные в сервисе сразу не удалось, в конечном итоге данные будут согласованы.
Не уловил вашей мысли. Можете "на пальцах" объяснить?
Лично у меня докер периодически не может убить/остановить один или несколько контейнеров. Спасает только перезагрузка хоста.
Волосы у меня начали шевелиться когда докер начал раздавать одинаковый IP-адрес нескольким контейнерам. Например, у меня 2 контейнера: public_web и private_web. Докер дал им одинаковый IP и когда я зашел на public_web, то увидел private_web — в этот момент доверие к докеру было утеряно безвозвратно.
Статья описывает такое поведение.
Т.е. может возникнуть ситуация, когда вставка не работает потому, что автоинкремент дошел до максимума, хотя в таблице всего пара записей.
Попробуем sqlite.
1000 ключей по 10 000 значений = 10 000 000 записей, размер значения ~100 байт:
CSV GENERATION:
real 2m4.618s
user 1m51.416s
sys 0m12.280s
CSV IMPORT:
real 0m33.533s
user 0m21.216s
sys 0m2.640s
INDEX CREATION:
real 0m6.253s
user 0m4.420s
sys 0m1.036s
#!/bin/bash
keys=1000
values=10000
size=100
data=$(tr -dc 'a-z' < /dev/urandom | head -c $size)
csv_file=test.csv
db_file=test.db
rm $csv_file $db_file
echo CSV GENERATION:
echo key,value > $csv_file
time for k in $(seq $keys); do
for v in $(seq $values); do
echo $k.key,$k.$v.$data
done
done >> $csv_file
echo
echo CSV IMPORT:
time echo -e ".mode csv\n.import $csv_file kv" | sqlite3 $db_file
echo
echo INDEX CREATION:
time sqlite3 $db_file 'create index ikey on kv (key)'
Размер csv — 1.1 Gb
Размер базы с индексом — 1.4 Gb
Мне кажется, что хешировать номер — это пыль в глаза, т.к. пространство телефонных номеров очень мало.
Т.е. они могут гордо заявлять, что номер не передается, но при этом на бэкенде мапить хеш обратно в номер.
Я, ради интереса загуглил список украинских операторов, взял свой далеко не топовый ноут, расчехлил пхп (!) и посчитал md5 всех номеров.
Вот никак не найду подходящий вариант для случая, когда у меня виртуальная машина, которую я мог бы раздать условно кому угодно и при их загрузке они бы просто подключались к моему кластеру по VPN, забирали задачи из очереди и выполняли свою работу.
Там же, вроде, Identicon используется. Разве нет?
Откуда у вас эта информация?
https://www.sqlite.org/hirely.html
https://www.sqlite.org/copyright.html
Посмотрим кто коммитит в тесты:
Это все коммитеры тестов за 19 лет разработки.
Ранее назывался SFLphone, а потом GNU Ring.
Я предполагаю, что DHT используется только для поиска участников. Можете раскрыть мысль про проблемы с безопасностью и замкнутый круг?
Не подскажу — я ее сам не видел.
Как я понимаю работу jami:
Торфон делает похожие вещи, только вместо dht используются onion сервисы и трафик "блуждает" через промежуточные узлы.
Но это только мои фантазии на тему.
Можете, как автор, сравнить ваш продукт с https://jami.net/?
Обычно, все p2p звонилки и чаты имеют одну проблему — невозможность позвонить или отправить сообщение, если абонент оффлайн. Как у вас с этим?
Спасибо.
Спасибо за статью.
Не уловил вашей мысли. Можете "на пальцах" объяснить?
Чувствую боль автора.
Лично у меня докер периодически не может убить/остановить один или несколько контейнеров. Спасает только перезагрузка хоста.
Волосы у меня начали шевелиться когда докер начал раздавать одинаковый IP-адрес нескольким контейнерам. Например, у меня 2 контейнера: public_web и private_web. Докер дал им одинаковый IP и когда я зашел на public_web, то увидел private_web — в этот момент доверие к докеру было утеряно безвозвратно.
https://github.com/moby/moby/issues/22334
https://github.com/moby/moby/issues/11199
https://github.com/moby/moby/issues/10096
https://github.com/moby/moby/issues/19086
https://github.com/moby/moby/issues/18535
Вроде бы, мигрируют на прометей+графана.
Т.е. может возникнуть ситуация, когда вставка не работает потому, что автоинкремент дошел до максимума, хотя в таблице всего пара записей.
1000 ключей по 10 000 значений = 10 000 000 записей, размер значения ~100 байт:
Размер csv — 1.1 Gb
Размер базы с индексом — 1.4 Gb
Т.е. они могут гордо заявлять, что номер не передается, но при этом на бэкенде мапить хеш обратно в номер.
Я, ради интереса загуглил список украинских операторов, взял свой далеко не топовый ноут, расчехлил пхп (!) и посчитал md5 всех номеров.
Заняло это 38 секунд.
На чем в итоге остановились?
Я вот, html экранирую так:
Заведем еще один тег?
Мне лично, более по душе пришлось.
ideone.com/59CyJK