Операции
19,225 2:02 | ➔ | 0.10000000000000007 ħ |
19,225 2:02 | 🡰 | -0.1 ħ |
19,226 2:02 | 0.1 ħ | ➔ | #t-130001 | (+0.1 ḥ ⇌ Mindey) |
Идея состоит в том, что каждый поток имеет кольцевой буфер, когда сокет принимается, сообщение помещается в кольцевой буфер, и поток начинает прослушивать этого пользователя.
Все остальные потоки уведомляются обо всех пользователях, поэтому они также могут отображать данные для них.
Это эффективно, поскольку поток может обслуживать тысячи миллионов соединений, а потоков несколько.
Одной из проблем, которая является общей для многопоточности, является обслуживание одного из нескольких видов событий из одного потока. Я полагаюсь на тот факт, что опрашиваю кольцевой буфер и epoll.
The idea is that each thread has a ringbuffer, when a socket is accepted, a message is put on the ringbuffer and the thread begins listening to that user.
All the other threads are notified of all the users so they can also echo data to them.
This is efficient as a thread can serve thousands-millions of connections and there are multiple threads.
One problem, which is a generic problem for multithreading is servicing one of multiple kinds of events from one thread. I rely on the fact I am polling a ringbuffer and epoll.
Моя бродячая установка использует постоянные диски и использует ansible для развертывания cronjob и сценария синхронизации. Он настраивается файлом YAML. Я также установил psycopg2 и нашел документацию о том, как получить таблицы в базе данных в Postgres. Теперь осталось написать алгоритм синхронизации.
Моя проблема заключается в том, чтобы определить, какая сторона является выигрышной копией.
Когда одна сторона изменяет данные, должен быть другой хэш, и измененные строки обнаруживаются. Эту часть я понимаю.
Проблема заключается в том, чтобы определить, какая сторона является последним изменением и какая сторона должна победить. Возможно, мне придется ввести столбец версии.
Если бы у меня было последнее обновленное поле метки времени, я мог бы его использовать. Или столбец версии, но я специально стараюсь не добавлять новые столбцы в схему. Это означает, что это намного сложнее.
My vagrant setup uses persistent disks and uses ansible to deploy the cronjob and sync script. It is configured by YAML file. I've also installed psycopg2 and I found documentation on how to retrieve the tables in a database in Postgres. It's just a matter of writing the sync algorithm now.
My problem is detecting which side is the winning copy.
When one side changes the data there shall be a different hash and the changed rows are detected. This part I understand.
The problem is detecting which side is the latest change and which side should win. I might need to introduce a version column.
If I had a last updated timestamp field I could use that. Or a version column but I am expressly trying to avoid introducing new columns to the schema. It means it's a lot harder.
Теперь профили на доменах с языком по умолчанию отображаются с вопросами и контентом только на выбранном в данный момент языке (или на всех, если включено «Полъязычие»), за исключением доменов, у которых нет языка по умолчанию.
Now, it the profiles on domains with default language, appear with questions and content only in the currently selected language (or all, if "Panlingual" is switched on), except for the domains that have no default language.
Ниже приведено описание того, как работает регистрация и связь с пользователем. Кроме того, как часть контента из разговоров с пользователями можно сделать частью общедоступного профиля или профиля сообщества.
The below is a description, of how does the registering and contacting a user works. Also, how some of the content from conversations with users can be made a part of public or community profile.
Прямо сейчас удобнее дать кому-то ссылку на свой профиль Infinity и ожидать, что им будет удобно просмотреть свои идеи и проекты и начать взаимодействовать.
Right now, it is more convenient to give someone a link to one's Infinity profile, and expect them to have comfort to review one's ideas and projects, and start interacting.
⬜️ необходимо сопоставить документ JSON с числами, чтобы «идентификатор документа 0 hobbies[0].name=sam» стал 0@0.0=sam, что позволяет эффективно выполнять поиск, сканируя диапазон ключей между числами. ⬜️нужно написать код, чтобы превратить числа обратно в имена полей ⬜️необходимо интегрировать оптимизатор пространства ключей, так как мы переупорядочиваем числа для повышения эффективности объединения списков, например, document 0 = {"hobbies":{("name": "God"),{"name": "databases"), {" имя": "компьютеры")}) хобби может быть 0, имя может быть 1, и у нас есть 3 элемента списка 0, 1, 2, мы хотим, чтобы все индексы списка одного и того же типа были смежными в итераторе сортировки, поэтому мы переворачиваем их до конца, поэтому 0@0[1]="Бог" становится 0@1.0, 0@1.1 0@1.2 ⬜️ необходимо создать ключевые значения для того, что используется для соединений SQL ⬜️ необходимо создать документ, определяющий соединения, которые люди ожидают выполнить в документе JSON.
⬜️ need to map a JSON document to numbers so "document id 0 hobbies[0].name=sam" becomes 0@0.1=sam" this allows for efficient retrievals by scanning a range of keys between numbers. ⬜️need to write code to turn numbers back into field names ⬜️need to integrate keyspace optimiser, as we reorder numbers for efficiency of joins across lists for example document 0 = {"hobbies":{("name": "God"),{"name": "databases"), {"name": "computers")}) hobbies might be 0, name might be 1 and we have 3 list items 0, 1, 2 we want all list indexes of the same kind to be adjacent in the sort iterator, so we flip them to the end so 0@0[1]="God" becomes 0@1.0, 0@1.1 0@1.2 ⬜️ need to create keyvalues for what is used for SQL joins ⬜️ need to create a document which defines the joins that people expect to do on a JSON document
У меня есть 3 машины, каждая с 1 диском, который обеспечивает хранилище Диск отображается как один большой диск с хранилищем со всех машин.
I have 3 machines each with 1 drive that provides storage The drive is exposed as one large drive with storage from all the machines
Я не загружал ключи, но мог бы. Это просто тестовые ключи.
Я работаю над использованием бродячих постоянных томов виртуального бокса. Это означает, что я могу иметь диск для хранения, связанный с каждой виртуальной машиной.
I haven't uploaded the keys, but I might. They're just test keys.
I am working on using the virtualbox+vagrant persistent volumes. This means I can have a storage disk associated with each VM.
Я потратил на это несколько часов.
Если бы это применялось ко всем циклам программ, мы могли бы иметь еще более эффективные программы.
I spent a few hours on this.
If this was applied to all looping of programs, we could have even more efficient programs.
Перепишите код Python на Java, чтобы можно было использовать настоящую многопоточность. Реализовать потоки запуска цикла, которые неоднократно пытаются выполнить N-й продукт, соответствующий этому номеру потока.
Rewrite Python code in Java so true multithreading can be used Implement loop runner threads that repeatedly try execute Nth product that matches that thread number
A. Выберите подходящую систему для управления ИНВЕНТАРЕМ. Мне нужны СПИСКИ: 1- Компоненты 2- Материалы 3- Продукты 4- Упаковочные материалы 5- Упаковочные решения 6- Компоненты ATO (Сборка на заказ) 7- Информационный файл производства
B. Определите ВСЕ мои СПИСКИ:
A. Choose a suitable system for INVENTORY management.
I need LISTS of:
1- Components
2- Materials
3- Products
4- Packaging materials
5- Packaging solutions
6- ATO-components (Assemble-to-order)
7- Production info file
8- Raw MAterials resources (nu)
9- Empty spots of land dumps (nu)
10- Drivers of trucks that are independent (nu)
B. Define ALL my LISTS:
Communities
Locations
Routes
Distribution centers and supermarkets
ПРЕВРАТИТЕ МОЮ СИСТЕМУ В КОПИРОВАТЬ-ЛЕВО.
ПОЭТОМУ Я СОЗДАЮ СИСТЕМУ, КОТОРАЯ Я ПРЕДСТАВЛЯЮ ЛУЧШЕЙ ДЛЯ МОЕГО ОБЩЕСТВЕННОГО БРЕНДА, И СДЕЛАЮ ВСЕ ЕЕ КОПИРОВАЛЬНЫМИ.
ЭТО ЕДИНСТВЕННЫЙ ПУТЬ К СВОБОДЕ, ПО МОЕМУ МНЕНИЮ.
КОММЕНТАРИИ ПРИВЕТСТВУЮТСЯ.
TURN MY SYSTEM TO COPY-LEFT.
SO I BUILD THE SYSTEM THAT I IMAGINE IS BEST FOR MY COMMUNITY-BASED BRAND, AND I MAKE IT ALL COPY-LEFT.
THIS IS THE ONLY WAY TO FREEDOM IN MY OPINION.
COMMENTS ARE WELCOME.
два часа Я вполне доволен тем, что создал. Я думаю, что API мог бы быть лучше. Или реализация ожидания результатов могла бы быть лучше. Расчет, чтобы увидеть, есть ли какие-либо новые результаты, является дорогостоящим из-за вложенных циклов. Я думаю, что это можно было бы сделать лучше. В идеале вложенные циклы должны содержать всего несколько инструкций и дополнений divmod. В противном случае они должны доминировать в используемых характеристиках.
2 hours I am fairly happy with what I created. I think the API could be better. Or the implementation of waiting for results could be better. The calculation to see if there are any new results is expensive due to nested loops. I think this could be done better. Ideally nested loops should only take a few divmod instructions and additions. Otherwise they shall dominate performance used.
2-4 часа Не могу вспомнить, когда начал
Я получаю повторяющиеся записи.
Родительский цикл выглядит так:
для письма буквами: для числа в цифрах:
для символа в символах:
Затем я пытаюсь расширить его с помощью нового параллельного цикла внутри внутреннего цикла.
Но каждая итерация будет выглядеть одинаково! Это не эквивалентно этому:
для письма буквами: для числа в цифрах:
для символа в символах:
для вложенных кодов: для эмодзи во вложенных: печать (вложенный эмодзи с буквенным номером)
Мне нужен какой-то способ расширить цикл через произвольное количество циклов, например, дерево циклов.
2-4 hours I cannot remember when I began
I get duplicate entries.
The parent loop looks this:
for letter in letters: for number in numbers: for symbol in symbols:
Then I try extend it with a new concurrent loop inside the innerloop.
But each iteration would look the same! It's not equivalent to this:
for letter in letters: for number in numbers: for symbol in symbols: for nested in codes: for emoji in nested: print(letter + number + symbol + nested + emoji)
I need some way of extending the loop through an arbitrary number of loops, like a tree of loops.