• Шпаргалка с командами Docker

    • Translation
    Прим. перев.: Неделю назад Aymen El Amri, руководящий компанией eralabs и создавший обучающий курс «Безболезненный Docker», опубликовал свой Docker Cheat Sheet — шпаргалку по основным командам Docker. Git-репозиторий этого документа на GitHub уже набрал 1000+ stars и несколько сторонних контрибьюторов, что подтвердило его актуальность и пользу.



    Представленные здесь команды описаны минимально (с акцентом на читаемость как есть) и включают в себя установку Docker, работу с реестрами и репозиториями, контейнерами, образами, сетью, Docker Swarm. Ниже представлен перевод шпаргалки в её состоянии на 2 сентября с дополнениями из комментариев ниже.
    Читать дальше →
  • IP-телефония. Виды VoIP устройств, обзор плюсов-минусов. Что выбрать?

      По данным исследований DISCOVERY Research Group среднегодовой темп роста IP-телефонии в России составляет 30%. Предположительно рынок IP-телефонии в России к 2021 году вырастет до 14,2 млрд. Как видите, рост довольно серьезный.


      С развитием услуг IP-телефонии растет и рынок VoIP оборудования. И для каждой компании важно, чтобы оборудование было удобным в использовании и работало стабильно.


      Статья рассказывает о том, какие виды конечного VoIP оборудования существуют, плюсы-минусы каждого вида, и какие более стабильны в работе. Информация из статьи поможет компаниям, системным администраторам, руководителям, директорам и другим пользователям, кто решил подключить себе IP-телефонию, выбрать для себя правильную категорию VoIP оборудования.


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

      Читать дальше →
    • Реализация аудиоконференций в Telegram + Asterisk



        В предыдущей статье я описывал реализацию выбора пользователем места жительства при регистрации в моем telegram боте, который я создавал вдохновившись идеей «Телефонного эфира». В этой же статье я опишу интеграцию бота с Asterisk .
        Читать дальше →
      • Шпаргалки по безопасности: Nodejs



          Довольно много уже было сказано о популярности NodeJS. Рост количества приложений очевиден – NodeJS довольно прост в освоении, имеет огромное количество библиотек, а также динамично развивающуюся экосистему.

          Мы подготовили рекомендации для NodeJS разработчиков, основываясь на OWASP Cheat Sheets, которые помогут вам предусмотреть проблемы с безопасностью при разработке приложений.

          Рекомендации к безопасности NodeJS приложений можно разделить на следующие категории:

          • Безопасность при разработке приложения;
          • Безопасность сервера;
          • Безопасность платформы;

          Читать дальше →
          • +15
          • 9.1k
          • 2
        • Перевод стандарта ASVS 4.0. Часть 1

          • Translation

          Это первая статья из серии переводов стандарта Application Security Verification Standard 4.0, который был разработан OWASP в 2019 году. Стандарт состоит из 14 групп требований для программного обеспечения. Первая группа (V1) содержит в себе требования к архитектуре и моделированию угроз для основных функций ПО, таких как, аутентификация, управления сеансами, контроль доступа и др. Последующие группы расширяют список требований для каждой из функций.

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

          Читать далее
        • Психология читабельности кода

          • Translation
          Всё, что написано ниже, ни разу не претендует на абсолютную истину, но всё же представляет собой некоторую модель, помогающую лично мне находить способы писать немного лучший код.

          Каждый программист старается писать хороший код. Читабельность — один из главных признаков такого кода. О ней написано достаточно много книг, но всё же в теме есть пробелы. Например, те самые книги сфокусированы больше на советах КАК написать читабельный код, а не на причинах того, почему один код является хорошо читабельным, а другой — нет. Книга говорит нам «используйте подходящие названия переменных» — но что делает одно название более подходящим, чем другое? Работает ли это для всех примеров подобного кода? Работает ли это для всех программистов, которым попадётся на глаза этот код? Как раз о последнем я и хотел бы поговорить чуть детальнее. Давайте погрузимся немного в человеческую психику. Наш мозг — главный наш инструмент, хорошо бы изучить специфику его работы.
          Читать дальше →
        • Юнит-тестирование для чайников

          • Tutorial
          Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



          То что вы делаете, называется интеграционным тестированием. Современные приложения достаточно сложны и содержат множество зависимостей. Интеграционное тестирование проверяет, что несколько компонентов системы работают вместе правильно.

          Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

          We need to go deeper
        • Случайное распределение урона в RPG

          • Translation
          image

          Для вычисления урона от атаки в таких настольных ролевых играх, как Dungeons & Dragons, используются броски урона. Это логично для игры, чей процесс основан на бросках кубиков. Во многих компьютерных RPG урон и другие атрибуты (сила, очки магии, ловкость и т.д.) вычисляются по похожей системе.

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

          1. Простые корректировки — среднее значение и дисперсия
          2. Добавление асимметрии — отбрасывание результатов или добавление критических попаданий
          3. Полная свобода в настройке случайных чисел, неограниченная возможностями кубиков
          Читать дальше →
        • Создание 3D-шахмат в Unity

          • Translation
          • Tutorial
          image

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

          В этом туториале мы создадим 3D-игру в шахматы на Unity. В процессе вы узнаете. как реализовать следующее:

          • Как выбирать перемещаемую фигуру
          • Как определять разрешённые ходы
          • Как менять игроков
          • Как распознавать состояние победы

          К конце этого туториала мы создадим многофункциональную игру в шахматы, которую можно будет использовать как основу для разработки других настольных игр.
          Читать дальше →
          • +21
          • 18.3k
          • 5
        • 40 «глупых» вопросов о CRM

            Все, кто работают с клиентами, жаждущими купить ПО, хоть раз да слышали фразу «А можно глупый вопрос?». Как правило далее следует вполне адекватная речь, просто человек стесняется простых вопросов. А стесняться не нужно — ведь каждый из нас не может знать абсолютно всё. На то и есть профессионалы в разных сферах, чтобы разъяснять даже то, что им самим кажется очевидным.

            Мы собрали 40 самых распространённых вопросов о CRM-системах и решили разом на них ответить. Конечно, мы не безумные оптимисты, чтобы полагать, что после этого поток иссякнет. Да и нет такой цели. Но если вы не знали и боялись спросить — читайте, сохраняйте, пользуйтесь. Только вопрос-ответ, никакой лирики.


            Читать дальше →
          • 11 лучших шрифтов для программирования

            • Translation
            Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

            Я ранжировал шрифты по следующим показателям:

            • Насколько различимы схожие символы, такие как 0O, 1lI.
            • Легко ли читается шрифт (ширина строк, ширина/высота символов).
            • И мои личные предпочтения!

            Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.
            Читать дальше →
          • Глупые часы не такие уж глупые


              ДО и ПОСЛЕ — почувствуй разницу

              Почти год назад я писал про придуманные мной часы.
              Закончилась та статья такой фразой: “Теперь в моих планах, когда ничто меня не торопит, сделать устройство более технологичным и решить пару вопросов, всплывших во время создания первой модели”. Как говорится — не прошло и года.

              Самые первые часы, в итоге, перекочевали в комнату сына, т.к. они создают мягкое, уютное освещение и ему не страшно спать. А мне как раз этот свет мешал. И сейчас в моей спальне стоят часы версии 2.0 под кодовым названием LUMO. И они уже чуть поумнее.

              Так как у меня появилась микроочередь из желающих такие часы себе, мне пришлось подумать, как их улучшить, одновременно упростив их изготовление и сборку, а также снизив себестоимость.
              Читать дальше →
            • Исследуем вопрос наказаний 2.0

                Этот материал будет полезен в первую очередь тем, кто много занимался программированием и вдруг внезапно стал вынужден заниматься управлением проектами и людьми. С год назад я рассказал про наказания на конференции, а солнышки из Битрикса сделали текстовую версию для #habr. К сожалению, потеряв в точности, четкости и правильности акцентов. За год материала добавилось. В конце — чеклист для ленивых :)

                Итак. Если вы не садист или моральный урод, а ваши сотрудники — не мазохисты, то сомневаюсь, что кому-то из вас наказания доставляют удовольствие. Мне — нет.
                image
                Читать дальше →
              • Как работает реляционная БД

                • Translation
                • Tutorial
                Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

                На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
                Читать дальше →
              • PostgreSQL: аналитика для DBA

                  Многие пользователи СУБД PostgreSQL знают, что сервер во время своей работы собирает разнообразную статистику, но не все знают, что ее полезно анализировать и как ее извлекать для этого. В этом небольшом тулките собраны несколько полезных запросов, дающих некоторое представление о том, как использовать это «скрытое знание», которое постоянно копится. Эти запросы можно использовать для мониторинга состояния PostgreSQL (ручного или с помощью плагинов для систем мониторинга вроде Nagios, Cacti или Zabbix), для поиска узких мест в работе сервера и многих других подобных задач. Помните, что это лишь верхушка айсберга; в документации можно найти описания нескольких десятков системных представлений, которые также могут быть полезны администратору PostgreSQL.
                  Читать дальше →
                • HighLoad++ — это блюдо, которое подают высоконагруженным



                    Пожалуй главным отличием конференции разработчиков высоконагруженных систем HighLoad++ от многих других является отсутствие скрытых целей. За нами не стоит ни одного лица или организации, которая бы навязывала правила игры или занималась хантингом на мероприятии, типа:
                    • Крупной компании
                    • Толстосума-спонсора
                    • Государственных структур

                    Уже долгие годы HighLoad++ остается событием, которое одни разработчики организуют для других разработчиков.

                    Девять лет назад мы приняли для себя несколько строгих правил, которым стараемся неукоснительно следовать. Не будем перечислять их все — для этого еще придёт время, назовем лишь основные.
                    Читать дальше →
                  • Правильный дизайн API: что такое «один», «много», «нуль» и «ничто»

                    • Translation
                    Здравствуйте, наши постоянные и эпизодические читатели.

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

                    Приятного чтения
                    Читать дальше →
                    • +11
                    • 18.3k
                    • 6
                  • Сборщик почты (делаем простые вещи сложно)

                    В качестве предисловия


                    Наверное, многие из вас в своей практике сталкивались с задачей сбора почты с ряда ящиков. Зачем это может быть нужно? Наверное, потому что это универсальный механизм обмена данными между системами. Множество библиотек под любые языки, реализующих SMTP, POP3, IMAP, готовые решения по реализации стэка сообщений (как я сложно назвал почтовый ящик...) и т.д.

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

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

                             foreach (var mailbox in mailboxes)
                                    using (var client = new Pop3Client())
                                    {
                                        client.Connect(Hostname, Port, false);
                                        client.Authenticate(User, Password);
                    
                                        var count = client.GetMessageCount();
                                        for (var i = 0; i < count; i++)
                                        {
                                            Mail = client.GetMessage(i + 1);
                                            var cat = SortMail(Mail);
                                            DoSomething(Mail, cat);
                                        }
                                    }
                    

                    Читать дальше →
                    • +10
                    • 21.3k
                    • 5
                  • Готовим Sublime Text 2 для front-end

                      Ни для одного опытного программиста или верстальщика не секрет, что настроенная под себя среда разработки (не в смысле IDE, а в более общем) — жизненная необходимость. Было время, когда я делал очередную верстку в практически голом Notepad++ на единственном мониторе, поочередно открывая Photoshop, браузер и редактор. Сегодня, в эпоху «автоматизации всего», мне сложно представить, как вообще можно было так работать.

                      Sublime Text 2 — популярный расширяемый кроссплатформенный текстовый редактор, для которого написано множество плагинов если и не на все случаи жизни, то на многие. В этом посте я попытаюсь рассказать как из этого конструктора сложить удобный инструмент front-end разработчика для работы с HTML, CSS и JavaScript.
                      Читать дальше →
                    • Как найти работу в Германии


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