Задать вопрос
  • Чем отличается VPS Linus от VPS Windows?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    операционной системой, Linux берется для сайта, windows - для Хрумера
    Ответ написан
    Комментировать
  • Чем отличается VPS Linus от VPS Windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    У вас вообще странные вопросы и комментарии.
    Если вы не знаете, что такое Linux, зачем вам VPS на Linux?

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

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

    Или вы думаете, что VPS сам все за вас делает?
    Нет, он нужен только для того, чтобы он был всегда включен и всегда в инете, и при этом не гудел у вас дома.
    Ответ написан
    Комментировать
  • Как установить сертификат на IIS?

    @feeeper Автор вопроса
    ASP.NET Developer
    Все оказалось очень прозаично: данные из письмо (конкретно - SSL сертификат) надо было конвертировать из PEM в PFX сертификат. Например, через https://ssl4less.ru/ssl-tools/convert-certificate.html. Полученный PFX сертификат можно импортировать в IIS.

    PS: Приватный ключ создавался при создании запроса на сертификат
    Ответ написан
    Комментировать
  • Как реализовать импорт местоположений в магазин 1c-битрикс?

    Здравствуйте,
    В теории можно использовать любую структуру файла, только надо написать обработчик, который ее поймет и положит правильно в битрикс.

    Не может быть, что бы без ошибок, они есть 100%, либо в логах сервера, либо в логах битрикса, если включены или надо в одном файлике, включить режим debugg.

    А вообще мало подробностей, ни пример файла, ни версии битрикса , ни описания окружения.
    Ответ написан
    1 комментарий
  • Как реализовать импорт местоположений в магазин 1c-битрикс?

    vasilyev
    @vasilyev
    php, 1c-bitrix
    Можно написать свой парсер этого csv и воспользоваться API. В частности CSaleLocation::Add.
    Ответ написан
    1 комментарий
  • Какой sql запрос выполнится быстрее?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    START TRANSACTION;
    select * from users where id = 54 FOR UPDATE
    //проверка бизнес логики на наличие денег
    update `users` set `balance` = `balance` - 150 where `id` = 54;
    COMMIT;


    Запрос "where `id` = 54 and `balance` >= 150" - опасен.
    Innodb лочит не конкретные записи, а диапазоны индексов - при таком запросе в блокировку будут попадать все записи с балансом >= 150, со всеми вытекающими.
    Ответ написан
    Комментировать
  • Что нужно знать чтобы стать начинающим системным инженером (devops)?

    Singaporian
    @Singaporian
    Статья, которую должен прочитать каждый.

    DevOps - не профессия. Это название культуры доставки кода от разработчика (dev) через тестировщиков и до сисадмина(ops) и обратная связь по этой цепочке.

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

    Профессии, которые отрисуются в процессе построения этой методологии следующие:
    • Build Engineer - инженер, который управляет зависимостями, сборками, конфликтами кода.
    • Release Engineer - инженер, который управляет репозиторием кода (кто куда и по каким правилам мерджится и откуда бренчуется). Пожалуй, это самая сложная задача в больших проектах. Особенно с нестрогим Agile или в Waterfall.
    • Automation Engineer - инженер, который занимается автоматизацией рутинных задач. Обычно деплоймент, автотесты, etc. Все эти buzz-слова типа Docker - его инструментарий.
    • Site Reliability Engineer - инженер, который поддерживает ops (апгрейды, расширение железа)
    • Configuration Manager - непонятная мне специальность. Жуткое порождение HR-специалистов, давящих на громкое название позиции. Можно было бы пойти дальше и назвать специальность ZooKeeper Vice President

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

    Почти всегда все эти роли совмещают один-два человека. Ну это зависит от качества кода.
    Назовем эту компанию BRAE/CM для краткости.
    Задача BRAE/CM состоит в том, чтобы программный код, который выходит из под пера программистов, оставался на контроле программистов и сисадминов одновременно. Программисты, равно как и сисадмины, благодаря DevOps-подходу, имеют возможность и даже обязаны обслуживать код на протяжении всего жизненного цикла от планирования архитектуры до мусорки.
    То есть сисадмины начинают рулить еще до того, как код попадет к ним - на ранних стадиях, а программисты продолжают рулить своими задачами уже после того, как код от них ушел к сисадминам - на поздних стадиях. И все это прозрачно друг для друга и все проблемы и решения ходят туда сюда и не спотыкаются о бюрократия в стиле "ничего не знаю, мы код уже закоммитили, у меня тут свои проблемы, у них сломалось - пусть сами и чинят".

    Так вот эта работа - завершающая стадия системного администратора и начинающая стадия разработчика. Поэтому не бывает Junior BRAE/CM.
    BRAE/CM бывает всегда только Senior в системном администрировании и всегда Junior в программировании.

    Еще один момент. В домашних условиях можно выучить инструменты на базовом уровне. Но не поварившись в одной кастрюле с реальными разработчиками, смысл всей этой кухни не понять. Так что сразу забейте. Но если хотите, могу описать пошаговый длинный путь как стать RE/CM:

    Сразу оговорюсь по языкам.
    У каждого языка свое предназначение. Java чаще используется в корпоративном секторе. Там много серверов и сложные бизнес-приложения. Поэтому Java-мир очень чувствителен к таким понятиям, как "технинческий долг" и "управление процессом разработки". И именно поэтому именно там все основные вакансии DevOps и именно там будет самый интересный опыт.
    Кроме Java, традиционно сильная DevOps-культура у Ruby. Практически все остальные языки не имеют столь развитой и популярной инфраструктуры в в данном контексте и потому вам скорее всего будут неинтересны.
    Другими словами, если в среде разработчиков выбор языка - тема для холивара и эмоций с миллионами сравнительных анализов с противоположными результатами, то для специалистов по DevOps выбор очевиден и прозрачен. Java - это одновременно самые интересные задачи, самый богатый toolset, самый большой выбор вакансий и самые высокие зарплаты.

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

    Итак, что делать:
    1) Почитать книги Head First по Java. Пройти курсы Java на EDX.
    2) Освоить SVN. Есть прекрасные тьюториалы. (GIT освоим позже)
    3) Поставить VirtualBox (не VMWare!!!)
    4) Написать простенькое приложение. Код коммитить в SVN. Собирать его при помощи maven.
    5) Поднять на отдельной виртуалке Jenkins. Он должен брать код приложения на SVN и запускать свой локальный maven для сборки.
    6) Написать модульные тесты (unit tests) своего кода. Пусть maven и их прогоняет.
    7) Поднять где-нибудь Nexus. Усложнить задачу maven, чтобы он теперь складывал все в Nexus. Если maven'у потребуются внешние библиотеки, он тоже не сам должен ходить в интернет, а через Nexus (Central repo).
    8) Настроить на своем десктопе vagrant так, чтобы он с нуля создавал виртуалки VirtualBox.
    9) Создать виртуалку DEV через vagrant. При этом ansible должен на ней что-нибудь настроить (например установить JDK)
    10) Научиться деплоить jar/war из Nexus на виртуалку DEV чем-нибудь. Чем - не посоветую, так как сам работаю с очень сложным IBM uDeploy, а это точно не для новичка. Посмотрите в сторону Rundeck или чего-то такого. Может самим Jenkins'ом задеплойте.
    11) Напишите интеграционные АВТОтесты. На чем хотите (как вариант: Selenium).

    Усложняем систему.
    12) Донастраиваем Jenkins: собирает maven-проект; выкладывает на Nexus; дергает vagrant/ansible для создания виртуалки SIT (system integration test); деплоит приложение на SIT; прогоняет автотесты на SIT; удаляет виртуалку после успешного завершения автотестов.
    13) Прикручиваем SonarQube в Jenkins для статического анализа кода. Исправляем косяки своего кода, согласно полученным от SQ рекомендациям.
    14) Прикручиваем мониторинг Sensu.
    15) Пишем нагрузочные тесты на чем-нибудь. В идеале потрогать два инструмента: jMeter и Gatling.
    16) Как и в 12-м шаге прикручиваем в Jenkins автоматизацию создания виртуалки SLT (Stress/Load test) и прогона на ней тестов. Только уже лоад-тестов(обязательно) и стресс-тестов(опционально) соответственно.
    17) Дописываем в свое приложение какой-нибудь функционал, чтобы использовалась база.
    18) Придется познакомиться с LiquiBase. Деплой SQL руками делать запрещено.
    19) Перейти на Docker (то есть теперь приложение выкладывать не напрямую в ОС, а внутрь докера)

    20) Денек на то, чтобы почитать про Agile, Scrum, Waterfall и прочие организационные порядки.

    А теперь немного уходим в управление проектом:
    21) Поставить Atlassian Jira. Разобраться, чем отличаются Epic, Story, Task, Sub-Task. Создать себе подобной этой структуре фронт работ (делать его не придется, просто нафантазируйте).
    22) Поставить Atlassian Stash и связать его с Jira.
    23) Переехать со своего SVN на GIT, предоставленный Stash'ем.
    24) Пройти Git-тьюториал какой-нибудь. Инструмент очень нетривиальный.
    25) Взять любую таску в работу. При этом в начале работы сделать новый Git branch из тикета Jira.
    26) По завершению работы запустить всю построенную ранее цепочку, но уже для своего брэнча.
    Дайте попробую угадать: вам пришлось скопировать все джобы и переписывать в них ветки?
    27) Сделать джобы нормально. Чтобы одни и те же можно было использовать для любых веток - по аналогии с принципом программирования "reuse code". У Вас будет reuse job :)
    28) Сделать pull request, самому сделать code review и самому себя же за-approve'ить. После этого сделать merge своей ветки в master.
    29) Сделать сборку брэнча автоматической по git-hook (или SCM pool)

    30) А теперь высший пилотаж: к чертям Docker, Copistrano и прочую buzz-word-hipsters-галиматью. Теперь вы с этим знакомы и сможете применить, но пришло время выгрызать этот детский сад калёным железом. Теперь вы доставляете код только как .deb-пакеты. Это значит, что вы:
    a) разбиваете control-файл на несколько пакетов, возможно с lib*,
    b) оверрайдите все ~20 dh_ в файле rules так, чтобы все это соответствовало вашим наработкам в предыдущих пунктах.
    c) раскидываете файлы по .install
    d) самое тяжелое: готовите .preinst, .postinst, .prerm, .postrm файлы СОГЛАСНО ИХ ПРИМЕРАМ .ex, сгенерированным dh_make - то есть с разбиемнием на update/configure/broken-install и что там еще есть. Это означает, что при переустановке, при апгрейде, при даунгрейде, при удалении и при пурдже, у вас будут разные сценарии, каждый из которых должен быть проработан досканально. На этом этапе вы также познакомитесь с понятием "регрессионные тесты".

    Ну как бы базовый вариант вот. Но это далеко не весь инструментарий и путь. Это так, для начала.
    Кроме этого неплохо бы познакомиться с Puppet (это не очень подходит для DevOps, скорее для рядовых админов с кучей серверов, но это очень популярный инструмент ввиду того, что никто не понимает, что такое DevOps и вас скорее всего заставят управлять сотней серверов, вместо релиз инжиниринга). А так же нужно познакомиться с операционными системами NixOS (обязательно) и CentOS/Debian (опционально, но я бы палкой бил тех, кто не знает эти OS). Кроме того, надо базово ориентирваться в PostgreSQL.

    Внимание, важный момент, который должен быть вшит на уровень подсознания у DevOps-ориентированного инженера: вы все время пробуете новые инструменты. Вы всегда будете находить что-то очень отличное. Знаете Nexus как свои пять пальцев и он решает почти все проблемы? Отлично! Теперь выкидываете Nexus и ставите Artifactory. Знаете хорошо CentOS? Круто! Теперь пробуете все это проделать на Windows или Debian. Потому что только когда вы сможете сравнивать инструменты, ваша работа будет ювелирной. А DevOps бывает либо ювелирным, либо он не DevOps. Вы должны быть языко-независимым, платформо-независимым и инструменто-независимым.

    Что будет дальше? Дальше вы начнете работать с микросервисами (сотни одинаковых контейнеров в облаке, которые должны как-то работать друг с другом без ручной конфигурации). Тогда познакомитесь со всякими Consul, ZooKepper и кучей инструментов AWS/OpenStack.
    Ответ написан
    13 комментариев
  • Телеграм бот CURL в чем может быть проблемма?

    @Finalls Автор вопроса
    Да оказывается мтс гады заблокировали....
    с веб браузера через прокси отправлял.
    Добавил прокси и все хорошо.
    Ответ написан
    Комментировать
  • Телеграм бот CURL в чем может быть проблемма?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Блокировка?
    Ответ написан
    Комментировать
  • Почта для домена: gmail vs. яндекс

    @psthv2
    У меня есть действующая доменная почта для гугла и яндекса. Если кратко:
    Google Apps Яндекс
    Платно — бесплатно
    Фильтры плохи — хорошие
    Скорость загрузки низкая — высокая
    Возможность пересылать несколько писем отсутсвует — присутсвует
    Удобство гугл аккаунта как единственного аккаунта — нет такой опции
    Интерграция с гугл диском и гугл докуементами есть — жалкое подобие в виде яндекс диска
    Синхоронизация контактов с телефоном отличная — через жопу
    Интерфейс ногу сломаешь — отличный
    Встроенный календарь отличный — говно
    Возможность встраивать приложение для почты (например плагины для систем управления проектами) прямо в веб-морду gmail — нет таких опций (насколько мне известно).
    Возможность отправлять письма с задержкой с помощью сторонних платных приложений — бесплатная встроенная возможность.
    Возможность создавать любое количество псевдонимов для почты — можно использовать в качестве псевдонима формат типа <номертелефона>yandex.ru
    Приятный интерфейс написания нескольких писем без закрытия основного веб-интерфейса — нет такого интерфейса.
    Нет уведомления получателя по СМС — есть такое уведомление.

    Функциональность Gmail огромна, но во многих местах реализована не шибко юзерфрендли.
    Ответ написан
    2 комментария
  • Как найти ошибки в bitrix, если отображается белый экран?

    murzix
    @murzix
    Я что-то нажал и оно само
    Если битрикс свежий и в папке /bitrix/ есть файл .settings.php, то там можно указать файл для лога ошибок и типы ошибок которые будут туда записываться.

    У меня на локалке настройки такие:
    'exception_handling' => 
      array (
        'value' => 
        array (
          'debug' => true,
          'handled_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE & ~E_DEPRECATED,
          'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_USER_WARNING & ~E_USER_NOTICE & ~E_COMPILE_WARNING,
          'ignore_silence' => true,
          'assertion_throws_exception' => false,
          'assertion_error_type' => 256,
          'log' => array (
            'settings' => array (
              'file' => 'bitrix/modules/error.log',
              'log_size' => 1000000,
            ),
    	  ),
        ),
        'readonly' => true,
      ),
    Ответ написан
    Комментировать
  • Есть ли рисовалка инфраструктуры для веб-проектов?

    antonydevanchi
    @antonydevanchi Автор вопроса
    10 лет в айтишке
    Докину еще красивые варианты:
    1. https://deskle.com
    2. https://www.archimatetool.com
    Ответ написан
    Комментировать
  • Чем куки отличаются от сессии в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нууу давайте разбираться.

    Для начала почитайте про HTTP на той же вики. Досканально знать не нужно, но стоит минимально понимать структуру запросов/ответов, понимать что у запроса и ответа есть заголовки и тело (тела может и не быть, зависит от типа запроса/ответа).

    Так вот. Куки. Куки живут на стороне браузера. Они передаются HTTP заголовком на каждый запрос на сервер (даже если вы за картинками полезли). Есть просто куки, есть http-only куки. Куки могут быть разграничены по хосту и пути. Все это дает нам гибкость и помогает с секьюрностью. В PHP содержимое $_COOKIE предоставляет нам SAPI. Когда PHP получает на обработку запрос, SAPI используемое (php-fpm, cgi, mod_php имеют свои реализации SAPI) в данный момент берет заголовки и тело запроса, парсит их и заполняет все эти суперглобальные массивы типа $_SERVER, $_GET и в том числе и $_COOKIE. Все что прислал нам клиент (что-то что делает запросы это клиент, что-то что их обрабатывает - сервер), а куки шлет нам браузер только те что можно исходя из того куда шлется запрос. Устанавливаются куки заголовком Set-Cookie в ответе, то есть тут больше нужно читать в принципе про HTTP а не про PHP. PHP просто позволяет вам работать с этим добром. Вы можете сэтить куки напрямую работая с заголовками ответа при помощи функции header. Более того, если выставить время жизни куки в 0, то как раз таки они а не сессия будет сбрасываться при закрытии браузера так как тот будет забывать все такие куки.

    Вот... сессии... В PHP сессия обычно это файл. Просто какой-то файл с рандомным именем. Если скажем в php.ini указано session.autostart или делается вызов session_start то создается файл под сессию пользователя (можно переместить в рэдис или мемкэш, свое хранилище и т.д в зависимости от нужд. Так же данные можно шифровать, что по умолчанию и происходит). Этот файл имеет ID, просто какая-то рандомная строка. И если при обработке запроса не нашлась сессия с предыдущего запроса - создается новая.

    И вот мы подошли к самому интересному - как PHP связывает сессию с предыдущего запроса с текущей. И тут все довольно просто - куки. Когда пользователю присваивается сессия, автоматически сэтится http-only (что бы нехорошие люди не могли из js увести нашу сессию) кука, в которую записан идентификатор сессии. В дебагере браузера можете посмотреть есть ли у вас кука PHPSESSID (название можно менять в настройках, да и вообще сессии можно не только через куки связывать, но это уже загоны по секьюрности) когда будете эксперементировать с сессиями.

    Когда запрос обрабатывается SAPI, при наличии session.autostart, перед тем как начинать создавать новую сессию, пых все же смотрит а есть ли у нас кука с идентификатором сессии, проверяет есть ли у него такая, и если есть успокаивается и не создает новую. Поскольку сессия привязывается через куки, то можно выставить время жизни этой самой куки (в php.ini) и таким образом регулировать время жизни сессии.

    Вот... когда использовать куки а когда сессии? Желательно понимать, что чем больше данных в куках (а у них есть лимит к слову) - тем больше данных мы передаем на каждый запрос. То есть это не круто когда что бы получить 1 килобайт данных мы должны в заголовках передать пару килобайт кук. Люди, повернутые на оптимизации, даже картинки хранят на отдельных cookie-less доменах что бы уменьшить количество трафика и пакетов (обычно простенький HTTP запрос влазит в размеры одного TCP пакета). Если вам нужно работать с этими данными из JS на любой странице, например локаль выбранноую пользователем для того что бы применять переводы еще и в JS, то стоит использовать куки. Для всео остального лучше конечно же использовать сессии. Во всяком случае на начальных этапах когда что-то сильно сложное вам делать не придется.
    Ответ написан
    2 комментария
  • Кто проходил удачные дистанционные курсы по Ruby on rails?

    goodprogrammer
    @goodprogrammer
    к. ф.-м. н.
    Альтернатива тинкнетики goodprogrammer.ru/rails-winter-17

    Не менее интенсивная ;)

    Отзывы: rubycourses.ru/courses/161
    Ответ написан
    Комментировать
  • Как избавить Windows 7 от спонтанного пробуждения из спящего режима?

    @SergioBarbery Автор вопроса
    Данный код решил все проблемы
    For /F "tokens=*" %%A in ('powercfg -devicequery wake_from_any') do powercfg -devicedisablewake "%%A"
    Ответ написан
    2 комментария
  • При урезании изображения его размер растет, что не так?

    Adamos
    @Adamos
    Картинка-то с палитрой, а IM переводит ее в RGB, добавляет полутонов при масштабировании - и сохраняет в RGB же. Нужно явно указать ему, что полутона не нужны и надо получить индексированное изображение.
    convert -resize 1400 -strip -dither None -colors 49 maxCompress-H189jMD2.png 1.png
    Ответ написан
    Комментировать
  • Какие плюсы и минусы есть у системы обработок ошибок в Ruby?

    Dem1
    @Dem1 Куратор тега Ruby on Rails
    Ruby on Rails developer
    Ответ написан
    Комментировать
  • Востановить права chmod?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    sudo /lib/ld-linux.so /bin/chmod 755 /bin/chmod

    Или:
    sudo /lib64/ld-linux-x86-64.so.2 /bin/chmod 755 /bin/chmod

    Или:
    sudo /lib/x86_64-linux-gnu/ld-2.19.so /bin/chmod 755 /bin/chmod

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

    engine9
    @engine9
    Разрабатываю интерфейсы и трехмерные презентации.
    Долго. Ёботно. Ручками.
    Можно делать в любом софте. Я делаю в блендере.accda31324ef4dd798d2b28e0a587d14.gif
    Ответ написан
    Комментировать