• Как оптимально выстроить хранение данных?

    @zuart Автор вопроса
    ... уже и не знаю, нуп, похоже ...
    В общем путем потраченных нервов и проб пересмотрели схему работы с базой. В каких-то моментах стало хуже, в чем-то лучше. Но по итогу разнесли все данные на несколько таблиц.
    - одна общая с "итоговыми" данными и все выборки на чтение работают по ней
    - три таблицы промежуточных данных, с которыми работают на редактирование и какие-то специфические выборки
    - одна таблица сервисного формата, с ней в принципе работает только автоматизация
    - ну и немного триггеров и хранимых, которые собственно и реализуют атомарную логику работы с данными

    В принципе получилось оптимально и по работе с данными, и по ресурсоемкости... Вопрос считаю закрытым =)
    Ответ написан
    Комментировать
  • Почему скрипт написанный на Bash отказывается работать?

    @zuart
    ... уже и не знаю, нуп, похоже ...
    Попробуйте решить проблему "в лоб", с башем это очень часто помогает понять причину - просто копипастом (с учетом переменных, само собой) выполнять в консоли все операции и проверять результат. Это только с виду кажется, что сложно и долго - а по факту будет быстрее, чем дождаться, когда кто-то другой это сделает, к тому же такой код, который "дебажить" стоит в виртуалке как минимум, мало кому захочется проверять...
    На какой-то из команд поймаете проблему и поймете как ее решать.
    Ответ написан
  • Непонятные метаморфозы с использованием памяти сервисом NodeJS?

    @zuart Автор вопроса
    ... уже и не знаю, нуп, похоже ...
    Курение мануалов привели к подробному изучению принципов работы очистки памяти от мусора и т.п. ерунды. Дальше ряд оптимизаций кода, вырезки и путь к уточнению проблемы - часть устранены, остались только проблемы "утечки" в модуле WS...
    Ответ написан
    Комментировать
  • Почему setInterval кушает больше проца чем setTimeout?

    @zuart Автор вопроса
    ... уже и не знаю, нуп, похоже ...
    После обновления не знаю какого по счету NODE наткнулся на старые тестовые скрипты, которыми эмулировал проблему. Решил повторить тесты - проблема не воспроизводится. Видимо "корень зла" был в конкретной версии...
    Ответ написан
    Комментировать
  • Как быть, если клиент после сделанной мной работы заплатил деньги и через некоторое время требует дополнить сайт и при этом не хочет платить деньги?

    @zuart
    ... уже и не знаю, нуп, похоже ...
    Скажу отчасти то, что сказали выше, но с небольшим отступлением:
    1. Никогда не стоит срываться и что-то там возвращать и удалять то, что сделали. Вам платят не за нечто "материальное", которое можно взять в руки, а платят в первую очередь за ВРЕМЯ и НЕРВЫ, которые вы тратите на работу, а вот это никто не вернет, даже короткое ощущение "эйфории, что типа вот я забрал то, что сделал"...
    2. Никогда не выходите на конфликт с даже самым вредным заказчиком. Оговорили условия "на берегу", получили четкий список работ, за которые получите деньги. Все "вот у нас есть сейчас такой материал, а потом появится еще и надо будет добавить" обсуждаете в формате "ок, тогда сумма с текущим материалом такая, если хотите потом моими силами добавить - сумма вот такая... или пока делаем по такой цене, а потом за отдельную плату добавлю то, что скажете". И все - баста... не нравится - пусть ищут другого исполнителя....
    3. Снова не выходите на конфликт уже после рассчета. И уж тем более не стоит мстить... Поначалу может показаться, что эти поведение "терпилы", однако мой жизненный опыт показал, что заработанная репутация достойного исполнителя передается по "сарафанному радио" и приводит клиентов лучше рекламы. И часто даже по истечение нескольких лет мне звонят старые клиенты и просят выполнить что-то по сайтам, переводят оплату заранее, с нужными доступами никаких проблем не возникает, т.к. просто знают - что я уважаю в первую очередь себя и не опускаюсь до "да я тебе жизнь испоганю"...
    Ответ написан
    Комментировать
  • Почему может не подниматься IPSec туннель после ребута?

    @zuart Автор вопроса
    ... уже и не знаю, нуп, похоже ...
    Дополнение. В процессе курения мануалов встречал в настройках служебные значения типа %any и %opportunistic - это в некотором роде навело на вопрос. Если нужно будет добавлять еще сервера, то на основном узле после изменения настроек придется рестартить ipsec, а это разрыв всех открытых соединений... Могут ли помочь в данном случае эти ключевики? Чтобы не требовалось настраивать и добавлять блоки в ipsec.conf, а только добавить в ipsec.secrets строку и воспользоваться директивой ipsec reload ?

    Добавлено
    Покурил несколько разных мануалов, в том числе оригинальный ман по конфигу IPSec + небольшой скрипт с крон-запуском каждую минуту - проверяет статус соединения, и если статус не "connected" и не "connecting", рестартит IPSec...
    Все работает как нужно, по крайней мере меня все устраивает...
    Ответ написан
    Комментировать
  • Как лучше распараллелить вычисления php?

    @zuart
    ... уже и не знаю, нуп, похоже ...
    Что по мне, так зря вы так думаете по теме кеширования в памяти... Кешировать ведь можно не только конечный результат, отправляемый юзеру, но и эти часто изменяющиеся данные.
    Тот процесс, который постоянно изменяет данные в базе ведь может их не только в БД писать, но и в кеше сразу обновлять (мемкеш/редис/etc.). И для выдачи результата не базу постоянно трясти, а брать их из кеша - это быстро.

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

    Ну а если не поможет, тогда уже думать над распараллеливанием потоков и т.д.
    Ответ написан
    3 комментария
  • Кастомизация десктопного Linux?

    @zuart
    ... уже и не знаю, нуп, похоже ...
    Как вариант, просто предположение, насколько сложно и возможно не могу сказать, но думаю, что "сделать можно все" =)
    Посмотрите в сторону т.н. LiveCD и способах его "сборки" - что если приготовить и кастомизировать одну машину, с нее собрать "LiveCD" и уже его размножить на машины (хорошо бы еще и запретить его изменение, как на CD/DVD носителях, тогда все глюки/вирусы/взломы решаются кнопкой "reset")...
    Ответ написан
    Комментировать
  • Как подписаться на события REDIS?

    @zuart Автор вопроса
    ... уже и не знаю, нуп, похоже ...
    В общем пришлось оптимизировать свой велосипед, но связать его с редисом как с дублирующим хранилищем...
    В процессе работы "велосипед" дублирует все операции по созданию/удалению записей в редис, а в случае падения или рестарта, он из редиса загружает сначала весь "дамп данных" с учетом поступающих изменений в процессе инициализации из редиса.
    Стало поустойчивее и нагрузку поболее держит без риска потери быстрых данных. Скорее всего, это инвалид на костылях, но узким местом сейчас стал только сетевой интерфейс и канал до клиентов, если клиент слишком много хочет читать реалтайм, то канал к этому клиенту должен быть настолько толстым, чтобы данные прокачивались без потерь и задержек, иначе пока данные дойдут, могут стать просто неактуальными =)

    Всем спасибо за поддержку и подсказки!
    Ответ написан
    Комментировать