Pull to refresh
97
0
Send message

Там же, вроде, Identicon используется. Разве нет?

Широко известен кейс 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.

https://www.sqlite.org/hirely.html


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.

https://www.sqlite.org/copyright.html


Посмотрим кто коммитит в тесты:


$ fossil time -p test/ -n 0 | grep -Po '\(user: \K\S+' | sort | uniq -c | sort -nr
   4710 drh
   2608 dan
    912 danielk1977
    244 mistachkin
     77 shaneh
     44 shane
     31 shess
      9 adam
      3 aswift
      2 tpoindex
      2 rdc
      2 pweilbacher
      2 dougcurrie
      2 dan)
      1 peter
      1 mihailim
      1 kwel
      1 icculus
      1 chw

Это все коммитеры тестов за 19 лет разработки.

Хм, я впервые слышу об этом проекте.

Ранее назывался SFLphone, а потом GNU Ring.


DHT — это здорово, но я вижу тут другую проблему: количество участников должно быть достаточно большим, чтобы обеспечить безопасность системы. Но на старте проекта при недостаточной популярности, естественно, участников мало, и это весьма ограничивает развитие. Т.е. получается замкнутый круг.

Я предполагаю, что DHT используется только для поиска участников. Можете раскрыть мысль про проблемы с безопасностью и замкнутый круг?


И, кстати, я не увидел внятного описания криптографии. Ее нет вообще, или я не нашел в их Вики? Подскажите ссылку, если она есть.

Не подскажу — я ее сам не видел.


Как я понимаю работу jami:


  • При создании аккаунта генерируется пара ключей (допустим rsa).
  • Для поиска участников используется что-то типа трекеров для торрентов.
  • При добавлении контакта происходит обмен ключами.
  • Далее используется end2end шифрование.

Торфон делает похожие вещи, только вместо 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

Википедия использовала ганглию https://ganglia.wikimedia.org/latest/
Вроде бы, мигрируют на прометей+графана.
Статья описывает такое поведение.
Т.е. может возникнуть ситуация, когда вставка не работает потому, что автоинкремент дошел до максимума, хотя в таблице всего пара записей.
Вряд ли. Покажите схему.
Попробуем 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 всех номеров.

<?php

$country = '+380';
$carriers = [68, 67, 98, 96, 97, 50, 95, 99, 66, 63, 93];

foreach ($carriers as $cr) {
    for ($num = 1000001; $num <= 9999999; $num++) {
        hash('md5', $country.$cr.$num);
    }
}


Заняло это 38 секунд.
Вот никак не найду подходящий вариант для случая, когда у меня виртуальная машина, которую я мог бы раздать условно кому угодно и при их загрузке они бы просто подключались к моему кластеру по VPN, забирали задачи из очереди и выполняли свою работу.

На чем в итоге остановились?
Какой-то «оператор частного случая» получается.
Я вот, html экранирую так:

htmlspecialchars($str, ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE, 'UTF-8');

Заведем еще один тег?
Тем, что можно сразу пользоваться. Просто хорошо настроено из коробки. Хоткеи удобные и простые.
Мне лично, более по душе пришлось.
Удобнее. Посмотрите видео на сайте.
Перешел с чистого tmux на byobu и всем советую.
RLY?

var top_secret_info = txtencode('hello', 'qqqqq');
print(txtdecode(top_secret_info, 'xxxxx')); // hello

ideone.com/59CyJK

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity