• Отследить пополнение Bitcoin кошелька?

    @rPman
    Кошелек - это набор адресов для пополнения, их список у тебя должен быть (в этом и есть смысл работы), смотришь среди входов и выходов транзакции на твои адреса, и соответственно вычитаешь или плюсуешь баланс.

    bitcoin-core умеет это делать, если добавить требуемые адреса в кошелек (можно даже только публичные адреса), тогда баланс можно запросить rpc запросом

    p.s. есть ключ командной строки ноды, позволяющей запускать пользовательское приложение на каждый новый блок, и даже появление транзакции кошелька в мемпуле, кажется -notify.
    Там еще добавили новый протокол, ZeroMQ
    Ответ написан
    4 комментария
  • Отследить пополнение Bitcoin кошелька?

    @belanenko
    Обратите внимание на протокол ElectrumX, а конкретно на его метод get_balance
    https://electrumx.readthedocs.io/en/latest/protoco...

    Нода ElectrumX весит пару сотен мегабайтов, и предоставляет удобный интерфейс взаимодействия, чекнуть лист транз для кошелька, посмотреть баланс и тп.
    Ответ написан
    Комментировать
  • Минимальная версия Ubuntu Server 18.04?

    @pfg21
    ex-турист
    зачем удалять чтото ??
    если можно взять минимал версию и доустановить только то что нужно.
    https://help.ubuntu.com/community/Installation/Min...

    обрезку пакетов я бы посоветовал начать с установки aptitude.
    в нем в интерактивной консольке удобно прогуляться по списку пакетов и разобраться что нужно, а что нет.
    если нужны - оставить, если не нужны - удалить.
    если непонятно, что за пакет, нужен он али нет - то отметить его как поставленный автоматически. если не будет пакетов, зависящих от него, то он автоматически удалится из системы.
    Ответ написан
    Комментировать
  • Минимальная версия Ubuntu Server 18.04?

    @res2001
    Developer, ex-admin
    также необходимо удалить/отключить все лишние сервисы/логгирование для того, чтобы сохранить работоспособность и не убить USB флешку.

    Логирование отключать не стоит. Можно сделать диск в памяти и смонтировать его в /var/log, тогда флэшка останется не тронутой. Разберитесь с настройками syslogd и уменьшите до минимума потребляемое логами дисковое пространство.
    Так же, видимо, нужно поступить и с /tmp и возможно с чем-нибудь еще.
    Размер дисков в памяти выясните опытным путем.
    Из того что можно отключить - GUI однозначно, это значительно облегчит дистрибутив.
    Ответ написан
    2 комментария
  • Вложенные шаблоны Golang?

    Резолвинг блоков выполняется в момент парсинга шаблонов, а не в момент их выполнения. У вас всё парсится в один объект, поэтому применяется тот блок, который парсился последним.
    Вот здесь один из вариантов, как парсить в разные объекты *Template, чтобы организовать лэйауты.
    https://hackernoon.com/golang-template-2-template-...

    Но лучше воспользоваться готовыми решениями для gin, например https://github.com/foolin/gin-template
    Ответ написан
    Комментировать
  • Система личных сообщений (шардинг)?

    @rPman
    Не пытайтесь сделать что то мегаоптимальное сразу, это как выше сказали сложно... но можно подойти к вопросу творчески.

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

    Во вторых, разделяйте оперативную и архивную информацию, для чатов это окно сообщений, видимое пользователям по умолчанию при открытии чата (не все же вы загружаете, всегда это происходит порциями), но не делайте правило переноса между этими группами как аксиому, пусть это будет некий системный процесс, который на основе нагрузки и статистики перемещает данные. Если ограничить пользователей по редактированию и удалению старых сообщений, то возможно использовать разные подходы по хранению оперативной и архивной информации, разные технологии индексации или даже самого хранения, в т.ч. оптимизации по буферизации... грубо говоря хранить readonly архивные данные можно где угодно, ведь для доступа к ним не требуется синхронизация и блокировки.

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

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

    p.s. массовые рассылки от проекта или партнеров (не кривитесь, все это хотят делать) не делайте обычными чатами, а то будут получаться странные выверты с мегадублированием информации и огромной нагрузкой в момент их проведения, пусть это будет отдельная сущность (остальное разрулите в интерфейсе). С другой стороны, если вам нужна обратная связь, в тот момент, когда пользователь вдруг решает ответить в такой недочат - конвертировать его в обычный.
    Ответ написан
    Комментировать
  • Система личных сообщений (шардинг)?

    @boss_lexa
    находил такой вариант: ключ шардинга для чата = отсортированный список из 2ух id пользователей

    много полезного
    highload.guide/blog

    о шардинге https://www.youtube.com/watch?v=URHoFbn4rt8
    шардинг в Badoo https://www.youtube.com/watch?v=ZGAHlGfW1yw
    Техн директор topface о шардинге и не только https://spb-borodin.livejournal.com/

    шардинг в etsy
    https://www.slideshare.net/jgoulah/the-etsy-shard-...
    https://www.slideshare.net/jgoulah/the-shard-revis...
    Ответ написан
    1 комментарий
  • Масштабирование web-сервиса на арендованных выделенных серверах с администрированием от хостера?

    @maxtm
    Make money, not job
    Самый простой и дешевый способ переезда на горизонтальное масштабирование:

    1. Сессии переезжают в Memcache, который находится на отдельном сервере
    2. БД переезжает на отдельный сервер
    3. Хранилище файлов, как бы это было не удивительно, тоже переезжает на отдельный сервак
    4. Поднимается front нода, которая проксирует все запросы к backend нодам. Обычно это просто Nginx
    5. Поднимаете Х нод полностью идентичных между собой с вашим софтом, но без БД, кэша, filestorage'а, используются ранее поднятые ноды для бд, кэша, файлов.
    6. Весь трафик идет на front-ноду, которая балансирует трафик между вашим backend-нодами.
    7. Все ноды работают с единой базой, с единым кэшом, единым filestorage'ем.
    8. Нагрузка распределяется среди всеми нодами равномерно, вы счастливы.

    Как результат, вы сможете добавлять сколь угодно backend серверов для разграничения нагрузки.

    Обычно проблемы бывают с БД, и тогда приходится балансировать / шардить саму базу. Если проблема в этом, пишите, подскажем :)
    Ответ написан
    Комментировать
  • Система личных сообщений (шардинг)?

    @stul5tul
    Описано аж целых 2 архитектуры системы личных сообщений VKontakte - старая и новая Как переписать с нуля базу данных личных сообщений...
    5 триллионов сообщений
    2 миллиарда сообщений в сутки
    Ответ написан
    Комментировать
  • Привязка пользователя к IP-адресу?

    Jump
    @Jump
    Системный администратор со стажем.
    Может ли мобильное устройство (Android/iOS) одновременно иметь два адреса IPv4/IPv6 ?
    У любого хоста может быть сотни и тысячи IP адресов, с одного IP адреса может выходить в сеть сотни и тысячи хостов.

    Если пользователю доступно одновременно IPv4 и IPv6 адреса, то какой будет использоваться по умолчанию?
    Настройки маршрутизации.

    Привязка пользователя к IP-адресу/браузеру нужна для генерации ключа
    Надо понимать что у одного пользователя IP адрес может изменяться несколько раз в течении дня, и один IP адрес может быть у тысячи пользователей.
    Ответ написан
    Комментировать
  • Привязка пользователя к IP-адресу?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    1. Может и больше. Зависит от количества интерфейсов (не забываем, что кроме физических интерфейсов есть еще виртуальные в случае VPN)
    2. Зависит от настроек интерфейсов. При прочих равных, один из интерфейсов всегда должен быть более приоритетным. Плюс маршрутизация.
    3. Например myip.ru, если интересен внешний IP, или посмотреть настройки интерфейсов - там выводится.

    P.S. Привязка по IP - обычно дополнительная безопасность.
    Ответ написан
    2 комментария
  • Шардинг MySQL и поиск по шардам?

    art1z
    @art1z
    Программист-многостаночник в EffectiveSoft
    Шардинг имеет смысл именно когда данные чаще всего достаются из одного шарда. Картинки, например, или статистика по различным серверам/сервисам. Юзера, как основаная сущность приложения, должны физически лежать в одной базе. И даже теоретически макс возможные 6 млрд пользователей в базе займут пару терабайт, что для мускула не проблема - https://habrahabr.ru/post/64851/
    Ответ написан
    4 комментария
  • Шардинг MySQL и поиск по шардам?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Классический вопрос из серии XY Problem.
    Вместо того чтобы писать "я не знаю что мне надо, но вообразил что мне нужен шардинг, поэтому расскажите как им пользоваться" надо писать "масштабирование мне требуется по такой-то причине и с такими-то условиями. подскажите наилучший вариант".

    И тогда тебе подскажут ответ, в порядке частоты причин, по которым задают этот вопрос:

    1. Нет, бояться миллиона записей не надо. Mysql потянет во много раз больше.
    2. Сделать репликацию мастер-слейв, с нужным количеством слейвов.
    3. Возможно, под какие-то условия подойдет и шардинг.

    Update.
    Как и ожидалось, все свелось к п.1.
    Ответ написан
    6 комментариев
  • Проблема с SWAP?

    piromanlynx
    @piromanlynx
    Системный администратор в Perfect Solutions
    Вот в вашем выводе free видно:
    total        used        free      shared  buff/cache   available
    Mem:            988         292         135          38         561         617

    Что имеются всякие кеши и они отъели место. Скорее всего FS на сервере ext4 и она умеет кешировать и делает это.
    Если после
    # echo 3 > /proc/sys/vm/drop_caches
    У вас освободится памяти раза в 2 больше чем свопа, то можно будет сделать вот так:
    # swapoff -a && swapon -a
    И если в итоге все прокатило - значит дело ровно в том что у Вас много мелких файлов которые файловая система кеширует.
    Оптимизировать в данном случае нужно php (обычно беды из за него), включить и настроить opcache например...
    Ответ написан
    5 комментариев
  • Socket.io + Express.js?

    Fragster
    @Fragster
    помогло? отметь решением!
    можно в рамках одного приложения (чтобы не терять модель бд и прочее) сделать два воркера https://nodejs.org/api/cluster.html - один под express, другой под socket, если уж там все начнет тормозить, а ядер много. Хотя на самом деле вряд ли будет тормозить, если использовать только асинхронные методы.

    Ну, или два приложения и один+ модуль вынесенный в отдельный репозиторий с общими вещами - моделью и т.п. тогда можно эти два приложения разнести по разным серверам.
    Ответ написан
    Комментировать
  • Как правильно спроектировать базу?

    @Renius
    дурак восторженный
    Если я правильно понял вашу проблему:
    1) вы хотите форму заполнения характеристик товара, когда форма соотвествует категории товара
    2) вы хотите форму демонстрации товара в виде соотвествущем категории
    тогда:
    product
    • category_id #/categories_ids/habtm как угодно
    • has_many specifications
    • has_many categories
    categories
    structure#
    hash: { 
    title: 'вес', measure: 'кг', ....
    title: 'CPU', mesure: 'false' #вроде вы будете писать характеристику? просто строкой
    title: 'люк', behavior: radio_button, values: %w(есть нет)
    # ипт, можно любым образом организовать

    Тоесть структуру данных категории товара можно(я бы) хранить в самой категории.
    С таким видом категории вы будете знать, как строить форму и как показывать з товар.

    specification
    • product_id
    • title #вес
    • measure #кг
    • value # 100
    • behavior: integer #/string/radio/checkox etc как угодно
    specification
    • roduct_id
    • title: люк
    • measure
    • value: true
    • behavior: radio/checkbox итп
    Ответ написан
    Комментировать
  • Как правильно спроектировать базу?

    @chronic86
    Ruby on Rails junior
    computers.gif
    картинка нагло стырена с www.sql-tutorial.ru
    что то вроде этого вам подойдет....
    делать одну большую таблицу? это не ваш случай так как будет много пустых полей.. например для автомобиля будут пустые поля в столбцах RAM и т.д.
    Ответ написан
    Комментировать
  • Как правильно спроектировать базу?

    @ComodoHacker
    Я бы создал одну таблицу для общих атрибутов и дополнительные для уникальных атрибутов каждой категории.

    Модель EAV не подойдет, потому что вам скорее всего нужно будет реализовать сложные фильтры по атрибутам. В модели EAV это будет сложно, да и работать будет небыстро.
    Ответ написан
    Комментировать