• Как сделать корпоративный портал с функцией личного кабинета?

    @hail3b
    Тогда моё мнение 50т.р. за разработку ПО, будет лучшим вариантом. Если найдёте вариант дешевле дайте пожалуйста знать.
  • Как сделать корпоративный портал с функцией личного кабинета?

    @hail3b
    Sanes, по закону РФ нарушений нет, раньше была только печать. Так-то проблем нет.
  • Как сделать корпоративный портал с функцией личного кабинета?

    @hail3b
    InnerMight, из опыта скажу проблем будет много, из основных сотрудники будут забывать пароли и будут негодовать. Придется делать всем одинаковый пароль или выдавать на бумажках. В вашем случае рекомендую сделать авторизацию на терминале по пропуску или QR коду 15т.р. оборудование, 50т.р. ПО
  • Как сделать корпоративный портал с функцией личного кабинета?

    @hail3b
    Тогда я бы посоветовал одно из самых популярных ПО для NAS Owncloud с открытым исходным кодом, не нужный функционал можно отключить, интеграция с AD есть, развернуть можно через докер одной строкой https://hub.docker.com/r/owncloud/server/
  • Как автоматически сгенерировать правила для файрвола, для фильтрации сайтов?

    @hail3b Автор вопроса
    АртемЪ, Да это как вариант. Но своё решение в самую последнюю очередь. А если домены добавляются в процессе работы, да это может быть определенной проблемой.
  • Как автоматически сгенерировать правила для файрвола, для фильтрации сайтов?

    @hail3b Автор вопроса
    Wexter, :))) у вас таких нет? у меня есть и не один. В основном это крупные клиенты, где на рабочих местах не квалифицированные сотрудники.
  • Зачем ботов заворачивают во Flask (как пример)?

    @hail3b
    Масштабирование чего?

    Разумеется бота, когда необходимо развернуть на нескольких серверах, по разным причинам. Из-за стоимости, географической привязки и т.п.
    Для мониторинга есть средства как со стороны ОС, так и в самом python.

    Разумеется, а кому то и это излишне и хватает принтов, все зависит от задачи и целей мониторинга.
    Что-то мне подсказывает, что просто запущенный бот вряд-ли будет работать медленнее, чем тот-же бот завернутый во Flask.
    Совсем странное утверждение. Смотрел несколько примеров ботов завернутый в http - это-же ужас какой-то. Они сильно перегружены и захламлены в плане кода. Что-бы добавить какой-то 1 элемент нужно пол кода перерыть. Не совсем похоже на "ускоренное решение проблем".

    Зависит от реализации, но уверяю что по объему кода нельзя судить о производительности.
    Под ускоренным решением проблем, имелось ввиду скорость восстановления работоспособности сервиса в случае проблем с сервером, ну посудите сами если один бот работает на 2-х серверах не зависимо друг от друга.
  • Шаринг ПК экрана на raspberry, как лучше?

    @hail3b Автор вопроса
    sim3x, :)) Спасибо поправил. А по существу?
  • Как взламывают сим-карты?

    @hail3b
    Вы не обратили внимание на еще один момент в моем ответе, зачем устраивать физическую слежку если все можно сделать удаленно одним человеком с меньшими затратами. Также если вы "простой человек" и уверены что дело в телефоне то правильней для вас и вашей психики избавиться от телефона, оставив его к примеру в людном месте либо разместить объявление на публичной площадке и продать, купит тот, кому нужно. Самостоятельно же разбираться в ситуации на мой взгляд не стоит, это сэкономит вам много нервов и личных финансов. Если все таки у вас принцип во всем разобраться то очень рекомендую вам привлечь стороннюю помощь.
  • Как взламывают сим-карты?

    @hail3b
    Уважаемый Марк я готов вам заплатить на два порядка больше, если вы для меня сможете сделать тоже самое
  • Как в Asterisk получить состояние очереди?

    @hail3b Автор вопроса
    Спасибо оно самое
  • Как организовать архив в Exchange 2010?

    @hail3b Автор вопроса
    Максим Забелин: Да это хоть и костыль но реально рабочий вариант, спасибо.
  • Как организовать архив в Exchange 2010?

    @hail3b Автор вопроса
    Максим Забелин: В данный момент у меня создана одна архивная база, подключенная всем пользователям, все письма старше 5 мес. перекидываются в архив.
    Проблема: файл архива изменяется каждый день, каждый день в архив переносятся письма 5 мес. давности, а это накладывает ограничения на диск где лежит архив. Он (диск) должен быть быстрым и отказоустойчивым RAID 5
    Возможное решение: разбивать файлы архива по годам, один файл один год, тогда файлы архива будут статичны и не будут меняться, следовательно уменьшиться требование к диску он должен быть просто быстрым RAID 0 (без отказоустойчивости)
    Такая реализация архивов уменьшит стоимость хранения данных причем как минимум в два раза (за счет: смены RAID 5 на RAID 0, отключения бэкапов) и без ущерба пользователям для них для всех также будет доступен архив за все годы.
    Поскольку это очень простой в реализации функционал (в программной реализации) то я и интересуюсь как это можно сделать в Exchange.
    Если создать несколько архивных баз и каждому пользователю подключить одну из них как вы предлагаете, то все они будут динамичными, что опять потребует использования RAID 5 под них.
  • Как организовать архив в Exchange 2010?

    @hail3b Автор вопроса
    Макс: Можно пару примеров таких систем, пожалуйста.
  • Как организовать архив в Exchange 2010?

    @hail3b Автор вопроса
    Максим спасибо за ответ, в этом случает получиться разбить архив только по пользователям. Один пользователь один архивный файл, а это конечно не устраивает.
  • Составить запрос для получения таблицы рейтинга

    @hail3b
    Да согласен, тогда вот так:
    select *,
        IF(t1.isGuest=1,@c:=@c+1,0) as rate1,
        IF(t1.isGuest=0,@d:=@d+1,0) as rate2,
        @b:=@b+1 as rate
    FROM (
    select 
        temp.userId as userId,
        SUM(CASE WHEN temp.resultGame IS NOT NULL THEN 1 ELSE 0 END) as allGame,
        SUM(CASE WHEN temp.resultGame = 3  THEN 1 ELSE 0 END) as winGame,
        SUM(CASE WHEN temp.resultGame in(2,4,5,6) THEN 1 ELSE 0 END) as drawGame,
        SUM(CASE WHEN temp.resultGame = 1 THEN 1 ELSE 0 END) as loseGame,
        SUM(CASE WHEN temp.resultGame = 0 THEN 1 ELSE 0 END) as startGame,
        SUM(CASE WHEN temp.resultGame=3 AND UNIX_TIMESTAMP(temp.timeStart)>=UNIX_TIMESTAMP(CURDATE()) THEN 1 ELSE 0 END) as countNewWinGame,
        SUM(CASE WHEN temp.resultGame in(2,4,5,6) AND UNIX_TIMESTAMP(temp.timeStart)>=UNIX_TIMESTAMP(CURDATE()) THEN 1 ELSE 0 END) as countNewDrawGame,
        SUM(CASE WHEN UNIX_TIMESTAMP(temp.timeStart)>=UNIX_TIMESTAMP(CURDATE()) AND temp.numberMove>3 THEN 1 ELSE 0 END) as countNewAllGame,
        SUM(temp.timeUser+temp.timeUI) as sumTimeGame,
        MAX(t1.isGuest) isGuest,
        IF(UNIX_TIMESTAMP()-MAX(v3.lastBeacon)<=120,1,0) as online,
        IF(UNIX_TIMESTAMP()-MAX(v3.lastActivity)<=300,1,0) as onlineActive
    from chess_historyui temp        
        LEFT JOIN `user_activity` v3 ON v3.userId=temp.userId and v3.gameVariationId=3
        INNER JOIN `kosynka_users` t1 ON t1.userId=temp.userId
        LEFT JOIN `user_games` t2 ON (t2.userId=temp.userId AND t2.gameVariationId=3)
    GROUP BY temp.userId
    ORDER BY winGame DESC,drawGame DESC, allGame DESC, userId DESC
    ) t1
        JOIN (SELECT @b:=0, @c:=0, @d:=0) t_var ON 1=1
    
  • Составить запрос для получения таблицы рейтинга

    @hail3b
    По оптимизации запроса, то если вынести вложенные запросы выполнение происходит на порядки быстрее [0.0199 сек.]
    select 
    	temp.userId as userId,
    	SUM(CASE WHEN temp.resultGame IS NOT NULL THEN 1 ELSE 0 END) as allGame,
    	SUM(CASE WHEN temp.resultGame = 3  THEN 1 ELSE 0 END) as winGame,
    	SUM(CASE WHEN temp.resultGame in(2,4,5,6) THEN 1 ELSE 0 END) as drawGame,
    	SUM(CASE WHEN temp.resultGame = 1 THEN 1 ELSE 0 END) as loseGame,
    	SUM(CASE WHEN temp.resultGame = 0 THEN 1 ELSE 0 END) as startGame,
    	SUM(CASE WHEN temp.resultGame=3 AND UNIX_TIMESTAMP(temp.timeStart)>=UNIX_TIMESTAMP(CURDATE()) THEN 1 ELSE 0 END) as countNewWinGame,
    	SUM(CASE WHEN temp.resultGame in(2,4,5,6) AND UNIX_TIMESTAMP(temp.timeStart)>=UNIX_TIMESTAMP(CURDATE()) THEN 1 ELSE 0 END) as countNewDrawGame,
    	SUM(CASE WHEN UNIX_TIMESTAMP(temp.timeStart)>=UNIX_TIMESTAMP(CURDATE()) AND temp.numberMove>3 THEN 1 ELSE 0 END) as countNewAllGame,
    	SUM(temp.timeUser+temp.timeUI) as sumTimeGame,
    	IF(UNIX_TIMESTAMP()-MAX(v3.lastBeacon)<=120,1,0) as online,
    	IF(UNIX_TIMESTAMP()-MAX(v3.lastActivity)<=300,1,0) as onlineActive,
        IF(t1.isGuest=1,@c:=@c+1,0) as rate1,
        IF(t1.isGuest=0,@d:=@d+1,0) as rate2,
        @b:=@b+1 as rate
    from chess_historyui temp        
        LEFT JOIN `user_activity` v3 ON v3.userId=temp.userId and v3.gameVariationId=3
        INNER JOIN `kosynka_users` t1 ON t1.userId=temp.userId
        LEFT JOIN `user_games` t2 ON (t2.userId=temp.userId AND t2.gameVariationId=3)
        JOIN (SELECT @b:=0, @c:=0, @d:=0) t_var ON 1=1
    GROUP BY temp.userId
    
  • Составить запрос для получения таблицы рейтинга

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

    Да все верно. Именно это я и показал на примере. Если «первый» выиграл 1 раз, а «второй» сыграл вничью 10 раз и ни разу не выиграл, то по DESC сортировке сначала будет «первый».
    Если нужна именно такая сортировка то ваш запрос более менее оптимальный, не идеальный конечно, есть одинаковые участки сравнения пр:«temp.resultGame in(2,4,5,6)», от которых можно избавиться. От вложенности не избавиться, это нормально.
    Кстати у меня ваш запрос выполняется за 0,5 сек без where, с сортировкой. Если у вас база больше, то однозначно помогут индексы.
  • Составить запрос для получения таблицы рейтинга

    @hail3b
    Если вы хотите оптимизировать запрос, то по мимо структуры нужен еще дамп данных.
    Если вы хотите совет по структуре БД, то для подсчета рейтинга однозначно нужно создать отдельную таблицу, которую по определенному событию её нужно дополнять/обновлять. Если рейтинг необходимо выбирать за определенный период, то в этой таблице можно собирать агрегированные данные для быстрого расчета рейтинга.
  • Составить запрос для получения таблицы рейтинга

    @hail3b
    Какая версия MySql? Добавьте дамп данных таблиц хотя бы по 50 строк.