Size: a a a

Библиотека программиста

2020 April 02
Библиотека программиста
​​Гайд по виртуальным мирам: AR и VR

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

https://proglib.io/sh/9v8SBI2nYh
источник
Библиотека программиста
7 апреля в 20:00 мск приглашаем на бесплатный пробный вебинар «Секреты динамического программирования» в рамках онлайн-курса «Алгоритмы для разработчиков»: https://otus.pw/pzoN/

Пройдите вступительный тест и поступите в группу с максимальной скидкой: https://otus.pw/oZm0f/

На этом вебинаре мы рассмотрим основные идеи Динамического программирования и применим их для решения олимпиадной задачи.
источник
Библиотека программиста
​​#security #practice

SQL-инъекция

В одном из постов ранее мы рассматривали одну из популярных атак на пользователя под названием XSS-атака. Сегодня давайте рассмотрим уязвимость «внедрение операторов SQL» или SQL-инъекцию, возникающую как следствие недостаточной проверки принятых от пользователя значений, что позволяет модифицировать запросы к базам данных (БД). Несмотря на то, что на сайте была рассмотрена эта тема, стоит остановиться поподробнее на ней.

Итак, вы знаете, что для работы с БД был разработан специальный язык SQL-запросов. В качестве примера, рассмотрим приложение, которое обращается к базе данных со следующим запросом: SELECT name FROM members WHERE name = 'user' AND password ='123456'.

Запрос означает следующее: выбрать (SELECT) поле name из (FROM) таблицы members где (WHERE) значение поля name равно user (name = 'user') и (AND) значение поля password равно 123456 (password ='123456'). Этот запрос вызывает обход таблицы, в результате которого делается сравнение с каждой строкой, и если наше условие является для какой-либо строки истиной, то она попадает в результаты.

При этом значения «user» и «123456» приложение получает от пользователя — например, в рамках страницы входа на сайт. Предположим, что вместо user пользователь ввёл такую строку: user' --.

Тогда запрос к базе данных будет иметь вид: SELECT name FROM members WHERE name = 'user' -- ' AND password ='123456'.

Две чёрточки (--) означают комментарий до конца строки, т.е. всё, что за ними, больше не учитывается. Следовательно, из выражения условия «исчезает» часть  ' AND password ='123456'. Поскольку в комментарии осталась закрывающая кавычка, то она также была введена с именем пользователя, чтобы не сломать синтаксис и не вызвать ошибку, в результате, фактически, к базе данных делался следующий запрос: SELECT name FROM members WHERE name = 'user'.

В нём была нарушена логика работы программы, заложенная разработчиками. Т.е. теперь поиск в таблице производится только по имени. И если имя совпало, то строка попадает в результаты независимо от введённого пароля. Данным примером мы хотели показать вам простоту эксплуатации SQL-инъекции. Более серьезные варианты эксплуатации вы можете посмотреть в лабораториях по ссылке ниже. В реальной ситуации, такая ошибка может быть использована на веб-сайте для входа под учётной записью администратора, для которой достаточно знать только имя, а пароль становится ненужным. Кроме обхода аутентификации, SQL-инъекция используется для извлечения информации из баз данных, вызова отказа в обслуживании (DoS), эксплуатации других уязвимостей и многого другого.

Стоит отметить, что в настоящее время подобные уязвимости встречаются довольного редко в связи с появлением различного рода фреймворков и библиотек, которые предусматривают защиту от SQL-инъекций. В рамках нашего поста был рассмотрен пример SQL-инъекции в реляционной СУБД  MySQL (существуют также Oracle, Microsoft SQL Server, PostgreSQL, MariaDB). А возможны ли NoSQL-инъекции? Да! Redis, MongoDB, memcached — все эти программные продукты относятся к классу нереляционных СУБД. Интерес к перечисленным базам данных в последнее время значительно возрос и ходит миф, что нереляционные СУБД безопасны, так как они не используют SQL и злоумышленник не может провести на них атаки типа SQL-инъекция. Если в систему невозможно внедрить SQL-код, это еще не значит, что она безопасна. NoSQL закрывает одну потенциальную уязвимость, при этом открывая с десяток других, которые позволяют совершать разнообразные вредоносные действия.

Попрактиковаться в эксплуатации SQL-инъекций можно здесь: https://proglib.io/w/6682ab1c
источник
2020 April 03
Библиотека программиста
​​Пошаговая инструкция создания SQL-сервера на Google Cloud Platform

Воспользовались бесплатной годовой подпиской GCP, создали PostgreSQL-сервер (MySQL регистрируется аналогично) и сделали скриншоты, чтобы вы могли оценить, не пробуя без необходимости.

https://proglib.io/sh/hsC8kQyeKx
источник
Библиотека программиста
В мультифункциональной команде, создающей приложение под Kubernetes, разработчику стоит знать основы Kubernetes. Возможности и ограничения Кубернетес диктуют архитектуру приложения. К тому же разработчикам иногда приходится самим деплоить приложение, настраивать мониторинг, вплоть до создания окружений.
Понимание того, как эксплуатируется приложение, превращает разработчика в инженера.

7 апреля стартует цикл из 19 бесплатных вебинаров от Слёрма по основам Kubernetes. Для прохождения достаточно знать Linux.
Вебинары идут 1-2 раза в неделю в 20:00 по Москве.

Регистрация: https://proglib.io/w/cf818dc3
источник
Библиотека программиста
​​Эффективная удалёнка: как продуктивно использовать дистанционную работу

Рассказ о компании, которая повысила производительность, переведя сотрудников на «пижамный» режим, и об обратной стороне долгосрочной удалённой работы.

https://proglib.io/sh/lhjv098ndG
источник
2020 April 04
Библиотека программиста
На данный момент я...
Анонимный опрос
38%
Прохожу онлайн-курс, связанный с разработкой
8%
Прохожу онлайн-курс, не связанный с разработкой
54%
Не прохожу никаких курсов
Проголосовало: 10230
источник
Библиотека программиста
​​#tools

Gifcap

Инструмент позволяет моментально создавать анимированные GIF-файлы из записи экрана. Работает полностью на стороне клиента, используя современные браузерные технологии. Никакие данные не загружаются на чужой сервер. Можно использовать как в браузере (тестировался в Google Chrome), так и запустить локально. За подробностями идем на GitHub 👇.

https://proglib.io/w/486f3c6a
источник
Библиотека программиста
Новый набор на онлайн-курс по администрированию Linux серверов - “Администратор Linux”.

🔥Cдавайте вступительный тест прямо сейчас и успейте поступить в группу со скидкой -20%: https://otus.pw/qmLr/

🔥Научим развертыванию, настройке и обслуживанию высокодоступных и надежных систем, построенных на базе Linux. Курс не для новичков. Для поступления понадобятся базовые знания по сетям и установке Linux на виртуалку.
источник
Библиотека программиста
#fundamental #patterns #cheatsheet

📌 Наблюдатель (англ. Observer) — поведенческий паттерн, создающий механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах.

Можно привести аналогию из жизни: Вы оформили подписку на журнал,  после чего вам больше не нужно ездить в супермаркет и проверять, не вышел ли очередной номер. Вместо этого издательство регулярно присылает новые номера по почте прямо к вам домой сразу после их выхода.
Издательство ведёт список подписчиков и знает, кому какой журнал высылать. Вы можете в любой момент отказаться от подписки, и журнал перестанет вам приходить.

Паттерн Наблюдатель применяется, когда система обладает следующими свойствами:
✔️Существует как минимум один объект, рассылающий сообщения.
✔️Имеется не менее одного получателя сообщений, причём их количество и состав могут изменяться во время работы приложения.
✔️Позволяет избежать сильного зацепления взаимодействующих классов.
источник
2020 April 05
Библиотека программиста
Я смотрю онлайн-курс на платформе
Анонимный опрос
16%
Coursera
16%
Stepik
3%
Skillbox
1%
Skillfactory
2%
OTUS
6%
GeekBrains
2%
Udacity
16%
Udemy
12%
Другая платформа
26%
Не смотрю курсы
Проголосовало: 3638
источник
Библиотека программиста
Какие платформы мы не упомянули, но которые вы используете?
источник
Библиотека программиста
Увлечение vs работа: программисты не обязаны кодить дома

В некоторых корпорациях программисты тратят своё свободное время на написание кода и постоянное обучение. И это неправильно.

https://proglib.io/w/1d8b0166
источник
2020 April 06
Библиотека программиста
​​12 инструментов и сервисов для совместного программирования

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

https://proglib.io/sh/MTaFROW1oS
источник
Библиотека программиста
Почему вы не смотрите курсы? Что вам в них не нравится?
источник
2020 April 07
Библиотека программиста
​​ТОП-15 книг по Python: от новичка до профессионала

Книги по Python (и связанным с ним специальным темам) на русском языке. Расставлены в порядке возрастания сложности, обобщены указанные читателями преимущества и недостатки.

https://proglib.io/sh/mfBpIuJTCh
источник
Библиотека программиста
9 апреля в 17:00 проведем онлайн-трансляцию о нашей магистратуре в МФТИ. Подробно расскажем о процессе набора и сроках поступления, истории кафедры и направлениях (аналитика, машинное обучение, Scala).

Регистрация и подробности по ссылке: https://l.tinkoff.ru/mftionline
источник
Библиотека программиста
#fundamental #patterns #cheatsheet

📌 Состояние (англ. State) — поведенческий паттерн, позволяющий объектам менять поведение в зависимости от своего состояния.

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

Проблема: машину состояний чаще всего реализуют с помощью условных операторов (if/switch), проверяющих текущее состояние объекта. Набор возможных состояний бывает трудно предопределить заранее, поэтому они добавляются в процессе развития программы, что впоследствии может вызвать проблемы.

Решение: создать отдельные классы для каждого состояния, в котором может пребывать объект, а затем вынести туда поведения, соответствующие этим состояниям.

Паттерн применяется, когда:
✔️Есть объект, поведение которого кардинально меняется.
✔️Код класса содержит множество похожих условных операторов.
источник
2020 April 08
Библиотека программиста
​​Как правильно общаться с удаленным сервером через SSH

О правилах безопасного SSH-подключения и способах его улучшения с примерами для систем на основе RHEL/CentOS и Ubuntu.

https://proglib.io/sh/0gQwGSZrpB
источник
2020 April 09
Библиотека программиста
​​Суперменом может стать каждый: разделяем дизайн и данные в React

Забавный рассказ с интерактивными иллюстрациями (и соответствующим кодом) о ментальной модели, которая поможет новичкам в React запомнить, как правильно с ним работать.

https://proglib.io/sh/Az5o9VJyhd
источник