Современному пользователю сложно представить себе взаимодействие с операционной системой без мышки или пальца на экране. Интерфейс однозначно ассоциируется с чем-то графическим и оконным, основанным на пользовательском опыте миллионов людей за несколько десятилетий. Это очень удобно, однако в разработке софта есть ещё удалённые уголки Вселенной, где для решения сложных комплексных задач просто нет готовых решений с графическими интерфейсами. Тут на помощь приходит старая добрая командная строка (Command Line Interface, CLI). Поводом для перевода и публикации этой статьи стал интерес команды Artezio к повышению удобства, читаемости и возможности поддержки CLI в части разработки. В конце концов это такой же интерфейс как и графический, он тоже должен быть удобным. Мы очень надеемся, что эти знания окажутся полезными для читателей блога.
AppSec Lead
Анатомия каналов в Go
Привет, Хабр! Представляю вашему вниманию перевод статьи "Anatomy of Channels in Go" автора Uday Hiwarale.
Что такое каналы?
Канал — это объект связи, с помощью которого горутины обмениваются данными. Технически это конвейер (или труба), откуда можно считывать или помещать данные. То есть одна горутина может отправить данные в канал, а другая — считать помещенные в этот канал данные.
Создание канала
Go для создания канала предоставляет ключевое слово chan. Канал может передавать данные только одного типа, данные других типов через это канал передавать невозможно.
Как я ищу себе сотрудников в команду DevSecOps и AppSec
Привет! Меня зовут Михаил Синельников. Я DevSecOps TeamLead в РСХБ‑Интех. Тружусь в ИТ‑сфере уже 25 лет, немалую часть из которых — на руководящих должностях. Сегодня расскажу, как я ищу специалистов к себе в команду DevSecOps и AppSec, на что обращаю внимание и как общаюсь с соискателями, которые на собеседовании пытаются приукрасить собственные достижения.
Как вырастить солёную пирамидку
Да кому нужна эта обычная скучная соль? Превращаем мелкие белые крупинки в потрясающие пирамидальные кристаллы в домашних условиях.
Создание минимального Docker-контейнера для Go-приложений
Время чтения: 6 минут
Существует множество, как официальных, так и поддерживаемых сообществом контейнеров для различных языков программирования (включая Go). Но эти контейнеры могут быть довольно большими. Давайте сперва сравним стандартные методы создания контейнеров для Go-приложений, а затем я покажу способ создания крайне маленьких статических контейнерезированных Go-приложений
Часть 1: Наше «приложение»
Для тестирования нам потребуется какое-нибудь маленькое приложение. Давайте будем фетчить google.com и выводить размер HTML.
package main
import (
"fmt"
"io/ioutil"
"net/http"
"os"
)
func main() {
resp, err := http.Get("https://google.com")
check(err)
body, err := ioutil.ReadAll(resp.Body)
check(err)
fmt.Println(len(body))
}
func check(err error) {
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}
Если мы запустимся, то получим только какое-то число. У меня вышло около 17К. Я целенаправленно решил использовать SSL, но причину объясню позднее.
10 причин не участвовать в некоторых IT-конференциях
Привет! У нас тут накопился неплохой опыт в плане работы с конференциями со всех точек зрения — как организатора своих собственных событий, так и активного участия в больших регулярных IT-конференций. Собственно, им мы с вами и поделимся.
Наверняка пост будут читать организаторы подобных событий, деврелы, которые так или иначе в них участвуют, разработчики, выступающие там с докладами, да и просто люди, которые хотят послушать доклады, но при этом видят только внешнее положение дел.
Расскажем о самых частых косяках, отбивающих у компаний желание вообще идти на конференции, поговорим про еду на площадке и про жару, и разберём не самые очевидные промахи организаторов. А если вы захотите поделиться в комментах своим опытом и предложениями, будем только рады.
Вдруг нам всем вместе получится сделать мир отечественных IT-событий немного лучше.
Обеспечение безопасности Frontend приложений
Безопасность является важным фактором при создании frontend приложений, поскольку они часто являются отправной точкой для атак. Я решил собрать в одну статью основные меры, которых стоит придерживаться или о которых хотя бы нужно задуматься.
Следуя этим основным мерам безопасности, frontend приложения можно сделать более безопасными и менее уязвимыми для атак. Однако важно помнить, что безопасность - это непрерывный процесс, который должен постоянно контролироваться и улучшаться с течением времени. Меры могут быть комбинированы, а некоторые опущены и не использованы - это определяет контекст проекта. Контекст может не позволять заниматься некоторыми видами безопасности, однако настаивать на этом необходимо и полезно, так как это снижает не только технический уровень уязвимости, но и напрямую влияет на репутационные риски компании.
«Для меня все люди — пользователи». Из регионального сисадмина в UX-дизайнера в Москве
Одна из наших сотрудниц — Валентина Жукова — прошла необычный путь от специалиста по АСОИУ и сисадмина до дизайнера пользовательских интерфейсов. Сейчас у неё своя растущая команда, весьма разносторонний опыт и множество интересных наблюдений. В этом интервью Валя рассказала о том, как подбирает сотрудников, растит их и выявляет лидеров, а также поделилась полезными советами и ресурсами для развития в UX/UI-дизайне.
Как в рутине задач находить время на disrupt
Меня зовут Иван Кесель, я CPO в Домклик, лидер нескольких команд. Давайте поговорим про disrupt. Во-первых, разберёмся, что это за англицизм. Во-вторых, на примере из практики Домклика я покажу, как мы запускаем disrupt-решения. И в-третьих, дам вам десять подробных практических советов, которые нам помогают.
5 млн долларов за строчку кода: подробный разбор сбоя сервисов Datadog
В марте сервисы Datadog не работали более суток. Что пошло не так, как отреагировала команда инженеров, и что можно извлечь из этого инцидента? Это перевод эксклюзивного исследования, которое провел Гергели Орош (Gergely Orosz), консультант mobile.dev, автор нескольких книг по работе с инфраструктурой, в прошлом — инженер в Uber, Skype, Microsoft.
Burp Suite — сканирование веб-приложений на основе JWT
Привет, Хабр! Снова с вами те, кто отчитываются, что в вашем приложении не хватает заголовков безопасности, а именно инженеры по динамическому анализу. В нашей прошлой статье мы описали плагин для OWASP ZAP, упрощающий авторизацию на основе JWT. А сейчас хотим рассказать о том, как настроить подобную магию авторизации в популярном инструменте Burp Suite Pro.
Избранное: ссылки по IT безопасности
Давно хотел написать этот пост с подборкой полезных ссылок, так как очень часто спрашивают подобное (думаю, у многих, кто в этой (да и в других) сфере). Ссылки разбиты на категории.
Обзор площадки для тестирования веб-уязвимостей OWASP Top-10 на примере bWAPP
В этой статье предлагаю читателю ознакомится с уязвимостями веб-приложений (и не только), по классификации OWASP Top-10, и их эксплуатацией на примере bWAPP.
Самый частый шаблон SQL инъекций в РНР — бесполезное экранирование символов
Много веб-приложений и много кода…
В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.
Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
Немного о связываемых переменных (prepared statements)
Если бы мне пришлось писать книгу о том, как создавать немасштабируемые приложения Oracle, первая и единственная ее глава называлась бы «Не используйте связываемые переменные».
Том Кайт, вице-президент Oracle
Недавно на Хабре появилась статья от AlexanderPHP «SQL injection для начинающих. Часть 1». По ее содержимому и комментарием к ней может создаться впечатление, что у многих разработчиков нет понятия, что такое связываемые переменные, зачем ими следует пользоваться и какие преимущества они дают. Попытаюсь в данной статье пролить небольшой свет на данные вопросы.
Эмуляция сетевых проблем с помощью WANem
Чтобы создать тяжелые условия мы нашли и применили специализированный инструмент WANem, о котором я расскажу под катом.
Как подружить Truecrypt loader и Grub 2?
Сегодня я расскажу, как подружить загрузчик от программы шифрования Truecrypt и никсовский загрузчик Grub 2. Такая необходимость может возникнуть (и неотвратимо возникает) при попытке установить рядом на одном жёстком диске ОС Windows, зашифрованную бесплатной программой Truecrypt, и unix-образную операционную систему, например Ubuntu.
Основная проблема заключается в том, что Grub не умеет работать с ключами truecrypt и не может расшифровать виндошный раздел, а truecrypt loader не [всегда] умеет загружать другие операционные системы. Существует два основных подхода к решению задачи.