• Как сделать диаграмму?

    netcrox
    @netcrox
    Всё время женат
    Вычисляй относительную длину шкалы, твой синенький div будет примерно таким:

    .statusbar {
        height: 15px;
        border-radius: 15px;
        background-color: blue;
    }


    Вычисленную относительную длину каждого бара вбивай в инлайновый стиль (все способы подсказывать тут не вижу смысла):

    <div class="statusbar" style="width=15%"></div>
    <div class="statusbar" style="width=65%"></div>
    <div class="statusbar" style="width=98%"></div>
    ...
    <div class="statusbar" style="width=5%"></div>


    Дальше как фантазия подскажет. Я только направление подсказал
    Ответ написан
    Комментировать
  • Добавить переподключение WebSocket?

    netcrox
    @netcrox
    Всё время женат
    Немного дополню и без того правильный ответ aagzip :)

    Действия по оживлению соединения необходимо производить на стороне клиента. Соединение может прерываться в следующих случаях:

    • длительная неактивность вкладки браузера (остановка скрипта)
    • перезагрузка (отключение) сервера
    • проблемы с интернет-соединением


    Вот вариант кода на js:

    let socket;
    let cookieUserId = $.cookie('userId');
    let reconnectAttempts = 0;
    
    const MAX_RECONNECT_ATTEMPTS = 100;
    
    function tryToConnect() {
    
        socket = new WebSocket('wss:// ... /?userId='+cookieUserId); // замените на ваш адрес сервера
        
        socket.onopen = onSocketOpen;
        socket.onmessage = onSocketMessage;
        socket.onclose = onSocketClose;
        socket.onerror = onSocketError;
        
    }
    
    function onSocketOpen(e) {
    
        console.log('Успешное соединение');
        reconnectAttempts = 0; // сбрасываем число попыток при успешном подключении
        ... // ваш код при успешном соединении    
    
    };
    
    function onSocketClose(e) { 
    
        console.log('Соединение закрыто. Попытка повторного подключения');
        
        if (reconnectAttempts < MAX_RECONNECT_ATTEMPTS) {
            setTimeout(() => tryToConnect(), 2000); // повторное подключение через 1 секунду
            reconnectAttempts++;
        } 
        else {
            console.log('Слишком много попыток соединения. Соединение невозможно, попробуйте позже');
        }
    
    }
    
    function onSocketError(e) { 
        console.log('Ошибка соединения');
        ...
    }
    
    function onSocketMessage(e) {
        console.log('You have a new message');
        ...
    }
    
    document.addEventListener('DOMContentLoaded', () => {
        tryToConnect(); // начинаем соединение после загрузки DOM
    });


    Кроме того, для оживления соединения можно слушать окно на активность, примерно так:

    window.onfocus = function(){
    
        console.log('Окно активно');
        
        if (socket.readyState !== 1) { // если за время неактивности окна соединение прервалось
            tryToConnect() // подключаемся заново
        }
        else {
            console.log('Соединение до сих пор активно, повторная попытка не требуется. Статус: ' + socket.readyState)
        }
    
    }


    Надеюсь, помог.
    Ответ написан
    Комментировать
  • Workerman теряет соединения. Как понять почему?

    netcrox
    @netcrox
    Всё время женат
    Поздновато увидел вопрос, но может какому залетному бро пригодится. Стартовать процесс нужно в daemon-mode.

    php server.php start -d
    Ответ написан
    Комментировать
  • 301 редирект с WWW на неWWW в site.ru.conf как реализовать?

    netcrox
    @netcrox Автор вопроса
    Всё время женат
    РАБОЧЕЕ РЕШЕНИЕ

    В итоге понял, с чем всё было связано. Коварный nginx. По наводке dodo512 немного поковырял и получилось следующее:

    Апач (обошлось двумя виртуалхостами):
    <VirtualHost 127.0.0.1:8080>
            ServerName  site.ru
            ServerSignature Off
            RewriteEngine on
            ErrorDocument 404 /?error=404
            ServerAdmin  "info@site.ru"
            ServerAdmin  "info@site.ru"
            AssignUserID site site
            DocumentRoot /SOME_PATH/site/site.ru/www
            CustomLog /var/log/apache2/site.ru.access.log combined
            ErrorLog /var/log/apache2/site.ru.error.log
            ServerSignature On
            Options FollowSymLinks Includes MultiViews ExecCGI
            UseCanonicalName Off
            <IfModule mod_ssl.c>
                    SSLEngine off
            </IfModule>
            <Directory /SOME_PATH/site/site.ru/www>
            Options +ExecCGI
            AllowOverride All
            <IfModule sapi_apache2.c>
                    php_admin_flag engine on
                    php_admin_flag safe_mode off
                    php_admin_value open_basedir "/SOME_PATH/site/site.ru/www/:/tmp"
            </IfModule>
            <IfModule mod_php5.c>
                    php_admin_flag engine on
                    php_admin_flag safe_mode off
                    php_admin_value memory_limit 128M
                    php_admin_value upload_max_filesize 128M
                    php_admin_value post_max_size 32M
                    php_admin_value open_basedir "/SOME_PATH/site/site.ru/www:/tmp"
            </IfModule>
            <IfModule mod_fcgid.c>
                    <Files ~ (\.fcgi)>
                            SetHandler fcgid-script
                            Options +FollowSymLinks +ExecCGI
                    </Files>
            </IfModule>
            </Directory>
    </VirtualHost>
    
    <VirtualHost 127.0.0.1:8080>
            ServerName   www.site.ru
            ServerAlias  *.site.ru
            ServerSignature Off
            RewriteEngine on
    
    		ErrorDocument 404 /?error=404
            ServerAdmin  "info@site.ru"
            ServerAdmin  "info@site.ru"
            AssignUserID site site
            DocumentRoot /SOME_PATH/site/site.ru/www
            VirtualDocumentRoot /SOME_PATH/site/site.ru/%1
            CustomLog /var/log/apache2/site.ru.access.log combined
            ErrorLog /var/log/apache2/site.ru.error.log
            ServerSignature On
            Options FollowSymLinks Includes MultiViews ExecCGI
            UseCanonicalName Off
            <IfModule mod_ssl.c>
                    SSLEngine off
            </IfModule>
            <Directory /SOME_PATH/site/site.ru/www>
            Options +ExecCGI
            AllowOverride All
            <IfModule sapi_apache2.c>
                    php_admin_flag engine on
                    php_admin_flag safe_mode off
                    php_admin_value open_basedir "/SOME_PATH/site/site.ru/www/:/tmp"
            </IfModule>
            <IfModule mod_php5.c>
                    php_admin_flag engine on
                    php_admin_flag safe_mode off
                    php_admin_value memory_limit 128M
                    php_admin_value upload_max_filesize 128M
                    php_admin_value post_max_size 32M
                    php_admin_value open_basedir "/SOME_PATH/site/site.ru/www:/tmp"
            </IfModule>
            <IfModule mod_fcgid.c>
                    <Files ~ (\.fcgi)>
                            SetHandler fcgid-script
                            Options +FollowSymLinks +ExecCGI
                    </Files>
            </IfModule>
            </Directory>
    </VirtualHost>


    NGINX:
    server {
        listen 80;
        server_name www.site.ru;
        return 301 http://site.ru$request_uri;
    }
    server {
            listen 80;
    
            server_name site.ru;
            root /SOME_PATH/site/site.ru/www;
    
            access_log /var/log/nginx/site.ru.access.log;
            error_log /var/log/nginx/site.ru.error.log info;
    
                    error_page 404 = @fallback;
                    location / {
                            proxy_pass http://127.0.0.1:8080;
                            proxy_set_header Host $host;
                            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                            proxy_set_header X-Real-IP $remote_addr;
                    }
                    location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                            access_log /dev/null;
                            error_log /dev/null crit;
                    }
                    location @fallback {
                            proxy_pass http://127.0.0.1:8080;
                            proxy_set_header Host $host;
                            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                            proxy_set_header X-Real-IP $remote_addr;
                    }
    }
    Ответ написан
    Комментировать
  • Из-за чего может не работать move_uploaded_file в PHP?

    netcrox
    @netcrox
    Всё время женат
    Можно еще проверить владельца папки. Если не совпадает с владельцем скрипта — ничего не выйдет.
    Рекурсивно сменить через консоль можно так:

    chown -R пользователь:группа /место/назначения/
    Ответ написан
    Комментировать
  • Какого провайдера для SMS-подтверждений выбрать?

    netcrox
    @netcrox
    Всё время женат
    Три года радостно пользую SMSintel. Удобный PHP-класс и разные хрени для 1с и прочего. Доставка надежная, юзаю на серьезном проекте, жалоб не было. Enjoy!
    Ответ написан
  • Как ИП оказывать услуги без бюрократии?

    netcrox
    @netcrox
    Всё время женат
    Рассмотрим простейший вариант ИП на системе налогообложения УСН-6 без сотрудников:
    1. Обязательные документы при исполнении договора (оферты):
    1.1. Договор (оферта), акцептованный, допустим, фактом оплаты.
    1.2. Счет (квитанция, платежное требование).
    1.3. Акт выполненных работ.

    2. Отчетность:
    2.1. Декларация УСН (бумага или ЭДО) — в ФНС;
    2.2. Книга учета доходов/расходов — в ФНС по требованию или при проверке.

    3. Налоги:
    3.1. ПФР (каждый год разная). Если уплачивать ежеквартально без опозданий, можно на всю сумму (пока так) уменьшать налог УСН (3.2) к уплате.
    3.2. Упрощенка — 6% от суммы учтенных поступлений (а в случае с белой бухгалтерией, необходимо учитывать даже вебмани), уменьшенная на сумму уплаченных взносов в ПФР.

    Сам ИП, бухгалтерию веду и сдаю отчетность в Эльбе.
    Ответ написан
    6 комментариев
  • Можно ли совмещать ИП и ООО для одного и того же интернет-проекта?

    netcrox
    @netcrox
    Всё время женат
    В любом случае, если ИП и учредитель/руководитель ООО являются аффилированными лицами (супругами, родственниками или институтскими друзьями), могут классифицировать как уклонение от уплаты налогов или обнал. Слово "оптимизация налогов" вообще забудьте использовать в налоговой.
    Ответ написан
    Комментировать
  • Нужно ли уплачивать пошлину, если регистрация ИП не прошла с первого раза?

    netcrox
    @netcrox
    Всё время женат
    Квитанция об оплате госпошлины действительна 30 дней. Если Вас отклонили, возвращается весь пакет документов: переделайте и несите снова.
    Ответ написан
    Комментировать
  • Можно ли покупать оборудование в счет налога (ИП)?

    netcrox
    @netcrox
    Всё время женат
    Пример:

    Затраты на оборудование в налоговом периоде: 500000;
    Доход (налогооблагаемая база): 1000000 руб.
    Налоги: (100000 — 500000) * 0,15 = 75000 (без учета остальных взносов, ессно).

    То есть, ты уменьшаешь налогооблагаемую базу, но нужны приходные документы (накладная, или товарный чек). Ну и обоснование того, что купленная тобой доменная печь имеет отношение к разработке сайтов :)
    Ответ написан
    Комментировать
  • Какой ОКВЭД нужен для разработчиков компьютерных игр и софта?

    netcrox
    @netcrox
    Всё время женат
    72.20 — Разработка программного обеспечения и консультирование в этой области
    Эта группировка включает:

    разработку программного обеспечения, готового к использованию: разработку системного программного обеспечения, инструментальных средств, прикладных программ
    разработку индивидуального программного обеспечения и предоставление прочих услуг в области информатики: модификацию и настройку готового программного обеспечения применительно к потребностям заказчика при создании информационных систем и сетей, системный анализ и консультирование по выбору готового программного обеспечения, предоставление услуг по внедрению и сопровождению программного обеспечения
    разработку программного обеспечения для работы с базами данных
    предоставление прочих услуг, связанных с программным обеспечением
    Эта группировка не включает:

    копирование программного обеспечения общего пользования, см. 22.33
    консультирование по программному обеспечению функционирования аппаратных средств, см. 72.10
    Ответ написан
    2 комментария
  • QR коды на квитках в сбербанк?

    netcrox
    @netcrox
    Всё время женат
    Уважаемые коллеги, понимаю, что поздний ответ, но, думаю, многим может пригодиться.

    Формат данной строки регламентируется "Стандартами финансовых операций" — ГОСТ Р 56042-2014 Читать нашел тут

    Сама кодируемая строчка выглядит так:
    ST00011|Name=ООО "Три кита"|PersonalAcc=40702810138250123017|BankName=OAO "БAHК"|BIC=044525225|CorrespAcc=30101810400000000225|PayeelNN=6200098765|LastName=Иванов|FirstName=Иван|MiddleName=Иванович|Purpose=Оплата членского взноса|РауегАddress=г.Рязань ул.Ленина д.10
    кв.15|Sum=100000|Phone=79101234567|SomeNewReq=100


    Подробнее тут
    Ответ написан
    Комментировать