• Чем отличается программист и инженер-программист?

    @remzalp
    Программер чего попало на чем попало
    Единый квалификационный справочник. Имеет смысл только в организациях с гос. участием, где по разработанной тарифной сетке идёт начисление зарплаты. В коммерции свободы больше, могут обзывать почти как попало (думаю).

    bizlog.ru/eks/eks-1/172.htm
    Требования к квалификации:
    Техник-программист I категории: среднее профессиональное образование и стаж работы в должности техника-программиста II категории не менее 2 лет.
    Техник-программист II категории: среднее профессиональное образование и стаж работы в должности техника-программиста не менее 2 лет.
    Техник-программист: среднее профессиональное образование без предъявления требований к стажу работы.

    bizlog.ru/eks/eks-1/131.htm
    Требования к квалификации:
    Инженер-программист I категории: высшее профессиональное (техническое или инженерно-экономическое) образование и стаж работы в должности инженера-программиста II категории не менее 3 лет.
    Инженер-программист II категории: высшее профессиональное (техническое или инженерно-экономическое) образование и стаж работы в должности инженера-программиста III категории или других инженерно-технических должностях, замещаемых специалистами с высшим профессиональным образованием, не менее 3 лет.
    Инженер-программист III категории: высшее профессиональное (техническое или инженерно-экономическое) образование и опыт работы по специальности, приобретенный в период обучения, или стаж работы на инженерно-технических должностях без квалификационной категории.

    Инженер-программист: высшее профессиональное (техническое или инженерно-экономическое) образование без предъявления требований к стажу работы или среднее профессиональное (техническое или инженерно-экономическое) образование и стаж работы в должности техника I категории не менее 3 лет либо других должностях, замещаемых специалистами со средним профессиональным образованием, не менее 5 лет.

    С остальным - консультант в помощь.
    www.consultant.ru/document/cons_doc_LAW_97378
    Ответ написан
    Комментировать
  • Как часть трафика пустить в обход VPN?

    @remzalp
    Программер чего попало на чем попало
    Если пакеты должны уходить на какой-то конкретный ип, то проще всего добавить маршрут на клиенте (или пушить с впн сервера, если он под вашим контролем).

    В линуксе команда:
    route add -net 192.168.0.0/16 dev eth1

    В винде в командной строке:
    route ADD ИП_КУДА MASK 255.255.255.255 ШЛЮЗ METRIC 1 IF ИНТЕРФЕЙС
    ШЛЮЗ - ип роутера. Можно скомандовать route print до подключения к впн, шлюз в сеть 0.0.0.0 как раз он.
    ИНТЕРФЕЙС - номер интерфеса в выдаче route print
    пример: 1...........................Software Loopback Interface 1

    Можно маршрут в целую подсеть (0-255), подробнее читайте про маску и "адрес сети":
    route ADD 12.34.56.0 MASK 255.255.255.0 ШЛЮЗ METRIC 1 IF ИНТЕРФЕЙС
    Ответ написан
    2 комментария
  • Как скрыть фреймворк DJANGo (csrfmiddlewaretoken)?

    @remzalp
    Программер чего попало на чем попало
    https://github.com/django/django/blob/master/djang...
    подозреваю, что можно
    1. нагло пропатчить файл
    2. породить дочерний класс, в котором токен обозван как надо и использовать уже эту реализацию
    3. заняться монкейпатчингом
    поискать еще в темплэйтах {% csrf_token %} и переопределить нужные шаблоны.
    Ответ написан
    Комментировать
  • Как передать статистику с роутера на сервер?

    @remzalp
    Программер чего попало на чем попало
    1. Убеждаемся, что железка держит протокол SNMP - это самый распространенный протокол получения статистики.
    Тут сразу всякий дешман начинает резко отваливаться
    Если железка есть, SNMP нет, но хочется - убеждаемся, что прошивка OpenWRT или DD-WRT с нужным набором функций под ваше устройство существует.
    Если нет - подарите это барахло нуждающимся и покупайте микротик (круто, но еще почти дешман).

    2. Поднимаем у себя Zabbix или Icinga (или что попало по вкусу), которые вполне успешно умеют SNMP принимать или дёргать со стороны. Еще на управляемых железяках можно настроить SNMP Trap, чтобы при наступлении определённых событий (подключение к порту например) на сервер отсылалось оповещение.

    3. С ограничением доступа - в случае с микротиком вполне реально. В случае с Zyxel Keenetic второго поколения прошивок - тоже. В случае с циской/джунипером и прочими топами совсем легко :).
    У всех перечисленных довольно хорошая командная строка в терминале, поэтому можно редактировать правила на сервере и заливать через командную строку.
    https://natenka.gitbooks.io/pyneng/content/book/15...
    посмотрите эту и соседние главы - пример автоматизации на питоне с управлением толпой устройств.

    Возможно, задача с непонятной формулировкой "ограничение доступа" отлично накладывается на возможности 802.1X

    4. Не упомянутая, но обычно возникающая проблема - если ип у подчиненных железяк будет динамическим - задача найти эту железяку.
    Решений два - каждая железяка использует какой-то из вариантов No-IP (у микротиков из коробки бесплатный)
    или железяки поддерживают впн/опенвпн туннель до сервера, а сервер уже просто через туннели дёргает их по известным локальным (для него) адресам.

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

    99. Путь настоящего изв...ерга
    Пишем для каждой модели скрипт, который логинится с центрального сервера на железку на веб-интерфейс, вытаскивает статистику, складывает в базу.

    100. Для того, чтобы было мало секса - выкиньте сразу непонятные железяки и закупите циски или микротики, или что угодно аналогичной профессиональной крутизны, главное чтобы УМНОЕ И ОДИНАКОВОЕ иначе будет счастье, безграничное счастье, потому что наверняка Вас ждут самые дешманские d-link, tp-link, upvel или еще что-то совсем безымянное.
    Ответ написан
    1 комментарий
  • Xdebug и чёрный ящик (black boxing), возможно ли и как настроить?

    @remzalp
    Программер чего попало на чем попало
    1. https://www.jetbrains.com/help/phpstorm/skipped-pa...
    2. Если нет такого замечательного редактора - посмотрите в Вашей ИДЕ кнопки для перемещения -
    Step OVER - перешагнуть вызов функции - поможет не заходить в лишний код
    Step INTO - шаг с заходом в функцию - заходить в свой код
    Step OUT - выйти из функции - быстро выйти, если так получилось.
    Ответ написан
    1 комментарий
  • Как правильно написать SQL запрос с под-select'ом?

    @remzalp
    Программер чего попало на чем попало
    SELECT task_name, 
      (SELECT image_path FROM uploads 
           WHERE uploads.timestamp = tasks.task_created 
            LIMIT 1) as im_path
    FROM uploads


    Только неудачная идея - реализовывать связь по времени добавления, лучше всё же ссылаться на первичный ключ.
    Ответ написан
    Комментировать
  • Nginx + php-fpm дает 500 запросов/секунду?

    @remzalp
    Программер чего попало на чем попало
    Могут быть виноваты:
    1. Методика тестирования - тестировался совсем пустой index.php или что-то более сложное?
    2. Результаты TOP/IOTOP было бы интересно увидеть, вполне возможно, что тестировалась скорость жесткого диска или перегруженность процессора в случае оверселлинга

    с виду характеристик сервера хватает, а на деле может быть проблема была в коннекте к mysql
    Ответ написан
    5 комментариев
  • Как на одной linux-машине запустить несколько сервисов, но так, чтобы каждый сервис имел уникальный ip?

    @remzalp
    Программер чего попало на чем попало
    увлекаться докером пока рано для ваших потребностей.
    mureevms сказал всё необходимое.
    1. DNS сервер если есть - настроить, если нет - поднять
    2. добавить DNS записи. указывающие на сервисы
    3. Если все сервисы работают только под одним типом вебсервера - не проще там настроить virtual hosts?
    https://httpd.apache.org/docs/current/vhosts/examp...
    https://tomcat.apache.org/tomcat-8.0-doc/virtual-h...
    https://nginx.ru/ru/docs/http/request_processing.html
    4. Но проще с видимой стороны оставить только nginx. Классическая схема Nginx на фронтэнд. остальные за ним. причем слушают (Listen) 127.0.0.1:ПО_ВКУСУ

    Для этого собственно и добавлялся заголовок Host в протокол HTTP...
    Ответ написан
    Комментировать
  • ImportError: No module named site - как это исправить ик заставить ini-файл брать python3 вместо python2?

    @remzalp
    Программер чего попало на чем попало
    [uwsgi]
    plugins-dir = /usr/lib/uwsgi/plugins
    plugin = python3

    Как поставить плагин для вашей системы - смотрите в документации :)

    Как ставил я:
    apt-get install uwsgi-plugin-python3
    Ответ написан
  • Почему тормозит комп?

    @remzalp
    Программер чего попало на чем попало
    Я предлагаю зайти в диспетчер задач и на вкладке "быстродействие" запустить монитор ресурсов.

    Вкладка Диск - длина очереди диска в идеальном состоянии должна колебаться около 0-1, 10 и больше - проблемы с жестким. Плюс посмотрите - не грузит ли кто активным вводом/выводом.

    Вкладка ЦП - кто именно грузит процессор и должен ли он грузить. К примеру один баг в сервисе обновления виндов заставлял его кушать целиком одно ядро процессора.

    Вкладка Память - использование физической памяти - насколько всё хорошо.

    Проверьте драйвера. Точно ли всё правильно и конфликтов нет. В идеале - полная переустановка операционной системы.
    Ответ написан
    5 комментариев
  • Где можно найти шаблоны сайтов на Codeigniter?

    @remzalp
    Программер чего попало на чем попало
    https://github.com/search?utf8=%E2%9C%93&q=codeign...
    держите

    оттуда:
    https://github.com/howframework/CodeIgniter
    https://github.com/sluggyfish/codeigniter

    А вообще, CodeIgniter сделан чрезвычайно понятным, достаточно только полистать его Index.php и то, куда он ссылается.
    Ответ написан
    Комментировать
  • Распечатать массив в файле fwrite?

    @remzalp
    Программер чего попало на чем попало
    Это ж как надо не любить гугл с яндексом...
    mixed print_r ( mixed $expression [, bool $return = false ] )

    fwrite($fp, print_r($val_params, true))
    Ответ написан
  • Как настроить сервер для облочных игр(стриминг)?

    @remzalp
    Программер чего попало на чем попало
    Я очень сильно подозреваю, что
    1. для снижения пинга нужен провайдер поблизости (а это Россия с неконкурентными ценами?)
    2. нужен не простой сервер, а с профессиональным графическим ускорителем (услуга более уникальна, демпинга почти нет)
    3. если внимательно посчитать, покупка нового отдельного компа для игр может оказаться более выгодной.

    Нашел у hostkey GPU сервера. Минимальный в Москве - 13 тысяч, но плюс еще 1600 за win server 2016, у которого уже нормально работает RemoteFX
    За год хватит как раз на неплохой геймерский комп :)
    Ответ написан
    1 комментарий
  • Возможно ли получать HTTP запросы с ардуино по COM порту?

    @remzalp
    Программер чего попало на чем попало
    Поток сознания.

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

    И откуда тут взялся PHP? Есть комп? Ардуина планируется быть подключенной куда? Зачем http по ком порту?

    Ваша ключевая проблема в том, что Вы еще сами не понимаете задачу. После уточнения вопроса уже будут более полезные ответы.
    Ответ написан
    Комментировать
  • Есть ли туториал как настроить интеграцию 1c и сайта используя commerceml?

    @remzalp
    Программер чего попало на чем попало
    v8.1c.ru/edi/edi_stnd/131
    собственно - всё, что нужно - официальный мануал. Плюс бонусом посмотреть единичную выгрузку из 1с для товаров. Этого за глаза, чтобы построить импорт товаров из 1С.

    Использовать со стороны 1С плагин - Сервис / настройки обмена с сайтом.

    Плюс есть готовый парсер:
    https://github.com/zenwalker/php-commerceml

    так что только заставить всё работать вместе
    Ответ написан
    1 комментарий
  • Легко ли создавать свой дизайн на open-cart?

    @remzalp
    Программер чего попало на чем попало
    Менять стандартную можно без проблем.
    Если захочется какие-то дополнительные переменные выводить сверх того, что передаётся в шаблон, придётся уже править файлы контроллеров.
    Ответ написан
    Комментировать
  • Как исправить кодировку сайта в ответ на cURL запрос?

    @remzalp
    Программер чего попало на чем попало
    Собственно Вам удаленный сайт уже и так всё говорит, почему бы не учесть то, что он говорит?

    1. Заглядываем в заголовки HTTP ответа, видим:
    Content-Type:text/html; charset=UTF-8
    2. Заглядываем в контент страницы, видим:
    <meta charset="UTF-8" />
    3. Есть еще один метод подсказать кодировку:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    Решение - смотрим, чего нам говорят, подставляем в качестве параметра для iconv, но не забываем дефолтное значение на всякий случай.
    Вариант решения - если сайтов в ограниченное количество, храните где-то предпочитаемую кодировку.
    Фрагмент на python, реализующий автоматическое декодирование на основании заголовка ответа:
    encoding='utf-8' # кодировка по умолчанию
    tmp = r.headers.get('Content-Type').split('=') #режем по =, что справа - кодировка
    if len(tmp)>1: #если кодировка в заголовке есть - будет 2 элемента
        encoding=tmp[-1] # тогда берём последний
    page = r.content.decode(encoding)


    Итоговый ответ:
    <?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $engine_url );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    ....
    //дополнить этим:
    curl_setopt($ch, CURLOPT_HEADER, 1);
    
    $tmpResult = curl_exec($ch);
    
    $header_size = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
    curl_close($ch);
    
    $tmpHeaders = substr($tmpResult, 0, $header_size);
    $postResult = substr($tmpResult, $header_size);
    
    $headers = array();
    foreach(explode("\n",$tmpHeaders) as $header)
    {
    	$tmp = explode(":",trim($header),2);
    	if (count($tmp)>1)
    	{
    		$headers[strtolower($tmp[0])] = trim(strtolower($tmp[1]));
    	}
    }
    
    $encoding="utf-8"; //default
    if (isset($headers['content-type']))
    {
    	$tmp = explode("=", $headers['content-type']);
    	if (count($tmp)>1) $encoding = $tmp[1];
    }
    if ($encoding != "utf-8") $postResult = iconv($encoding, "UTF-8", $postResult);


    Всё. Получаем расширенный ответ, который содержит заголовки. Вырезаем из него заголовки и режем их в массив, плюс достаём тело ответа.
    Парсим заголовки http, вытаскиваем content-type и из него вытаскиваем кодировку
    Ответ написан
  • Не могу загрузить ПК. Файл normal.mod не найден. Что делать?

    @remzalp
    Программер чего попало на чем попало
    грузиться с диска/флэшки и переустановить grub
    Ответ написан
    Комментировать
  • Как писать удаленно в БД? TCP/FTP?

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

    Вариант 1: прямое соединение по ssh с пробросом портов (тогда БД наружу не торчит) и лить запросами в БД
    Вариант 2: небольшой веб REST сервис поднять на получателе, куда скидывать хоть через wget пакеты, которые будут обрабатываться и литься в БД.

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

    Вариант с веб-сервисом - профдеформация, всю черновую работу в этом случае отдаём стороннему софту, на плечи серверного приложения остаётся только обработать пришедшие данные. Можно и TCP реализовать, не проблема.
    Ответ написан
    Комментировать
  • Как перенести большой объем данных с сервера на сервер?

    @remzalp
    Программер чего попало на чем попало
    tar zcf - tobearchived | ssh user@destination_server_ip 'tar zxf -'
    Жмёт со сжатием в tar, отдаёт поток сжатого по ssh, на той стороне запускается tar и распаковывает.
    В цепочку можно добавить любой архиватор по вкусу.

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

    я так дамп сервака делаю периодически :)
    Ответ написан
    1 комментарий