Программирование на Python и Objective-C в Mac OS

Программирование на Python и Objective-C под Mac OS и для iPhone / iPod Touch

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

Содержание

Реклама в Proglib: цены и условия

Рекламные возможности

Мы можем помочь в написании рекламного текста, если у Вас возникнут трудности

~1.6k дневной охват

~1.3k охват 1-й публикации

2.7k подписчиков

Библиотека devops’а

~2.1k дневной охват

~900 охват 1-й публикации

2.4k подписчиков

Библиотека тестировщика

~7.1k дневной охват

~4k охват 1-й публикации

9k подписчиков

Библиотека Go разработчика

~3k дневной охват

~2k охват 1-й публикации

8k подписчиков

Библиотека мобильного разработчика

~10.4k дневной охват

~5k охват 1-й публикации

14k подписчиков

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

~9.2k дневной охват

~4k охват 1-й публикации

15k подписчиков

Библиотека C/C++ разработчика

~4k дневной охват

~2.5k охват 1-й публикации

9k подписчиков

Библиотека пхпшника

~3.1k дневной охват

~1.4k охват 1-й публикации

4.6k подписчиков

Библиотека хакера

~8.1k дневной охват

~3k охват 1-й публикации

15k подписчиков

Библиотека data scientist’а

~15.3k дневной охват

~5k охват 1-й публикации

21k подписчиков

Библиотека джависта

~9.1k дневной охват

~5k охват 1-й публикации

20k подписчиков

Библиотека фронтендера

~15.5k дневной охват

~6k охват 1-й публикации

30k подписчиков

Библиотека питониста

~55.9k дневной охват

~17.7k охват 1-й публикации

119k подписчиков

Книги для программистов

~38.8k дневной охват

~12.4k охват 1-й публикации

79k подписчиков

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

Отзывы о proglib.io; 79 отзывов


Оценка: 5.0 от 15 августа 2019

Отличный сайт, на котором можно узнать многое о программировании, будь то ЯП, архитектура, но и даже математика


Оценка: 4.0 от 13 августа 2019

есть полезная инфа, поисковики заводят туда


Оценка: 5.0 от 12 августа 2019

Полезная инфа для программистов.


Оценка: 5.0 от 10 августа 2019

отличный сайт, много полезных статей и видеоконтента


Оценка: 5.0 от 08 августа 2019

Отличный ресурс на русском языке


Оценка: 5.0 от 07 августа 2019

Превосходные по качеству, подаче материала и актуальности статьи по программированию


Оценка: 5.0 от 05 августа 2019

Отличный сайт. Много нужных статей и книг. Большинство по программированию именно здесь находила и читала


Оценка: 5.0 от 05 августа 2019

интересная база статей! рекомендую тем кто решил зарабатывать на жизнь разработкой!


Оценка: 5.0 от 04 августа 2019

Качественные материалы!


Оценка: 5.0 от 02 августа 2019

Очень большая база полезных статей как для начинающих кодеров, так и для профи. Хороший сайт.


Оценка: 5.0 от 01 августа 2019

Много полезного материала для новичков


Оценка: 5.0 от 31 июля 2019

Интересный сайт для новостей


Оценка: 5.0 от 31 июля 2019

Сайт супер, много полезного.


Оценка: 4.0 от 24 июля 2019

Бывают интересные переводы


Оценка: 5.0 от 24 июля 2019

Сайт то что нада..


Оценка: 1.0 от 22 июля 2019

Может и есть что-то полезное но надо долго искать. Я не нашел


Оценка: 5.0 от 15 июля 2019

Каждый день готов читать статьи. Отличный мотиватор для движения вперёд в IT профессии.


Оценка: 5.0 от 13 июля 2019

Отличный сайт! Много полезной и нужной информации. Рекомендую!


Оценка: 5.0 от 10 июля 2019

Часто читаю этот ресурс, контент годный, правдивость судить не могу, т. к. ещё не достаточно опытен в сфере. А так подается инфа интересно и живо, рекомендую.


Оценка: 5.0 от 10 июля 2019

Нравится этот ресурс, подписан на уведомления, почти все статьи читаю.


Оценка: 4.0 от 09 июля 2019

Можно найти хорошие статьи, где воедино собрано множество полезных ссылок


Оценка: 5.0 от 07 июля 2019

Просто кладезь информации для программистов как начинающих так и опытных


Оценка: 4.0 от 23 июня 2019

Всего понемногу: бывают интересные публикации, бывают вообще «никакие».


Оценка: 2.0 от 23 июня 2019


Оценка: 5.0 от 18 июня 2019

хороший сайт с интересными обзорами на программистские и околокомпьютерные темы


Оценка: 5.0 от 17 июня 2019

Великолепный ресурс!


Оценка: 5.0 от 10 июня 2019

Очень много полезного там для программистов и датасайентистов


Оценка: 5.0 от 07 июня 2019

Обновляется, обозрный, иногда даже интересно


Оценка: 5.0 от 06 июня 2019

много отличных советов для вебмастеров.


Оценка: 5.0 от 05 июня 2019

Отличный сайт как для начинающих, так и для продвинутых программистов


Оценка: 5.0 от 04 июня 2019

Очень много интересной информации


Оценка: 3.0 от 04 июня 2019

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


Оценка: 5.0 от 27 мая 2019

Отличный сайт для программистов.


Оценка: 5.0 от 27 мая 2019

Много интересной информации, а именно книги по программированию


Оценка: 4.0 от 11 мая 2019

Полезные статьи


Оценка: 5.0 от 04 мая 2019

Хороший ресурс, есть много интересных статей


Оценка: 5.0 от 03 мая 2019

Отличный ресурс для разработчиков! Советую всем. Интересные статьи, подборки и не только!


Оценка: 5.0 от 03 мая 2019

Очень полезный сайт. Нашел много нового для себя


Оценка: 4.0 от 02 мая 2019

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


Оценка: 5.0 от 28 апреля 2019

Хороший склад годноты по программированию


Оценка: 5.0 от 28 апреля 2019

Почти каждый день читаю — нужен и понятен на 90%


Оценка: 5.0 от 27 апреля 2019

почитываю иногда, в основном по постам с телеги


Оценка: 5.0 от 27 апреля 2019

Достойный сайт, читаю изредка


Оценка: 4.0 от 24 апреля 2019

Хороший сайт, где иногда могут помочь


Оценка: 5.0 от 23 апреля 2019

Нравится учиться по некоторым их штукам, интересно дают информацию, хоть и ругаются часто на этот ресурс


Оценка: 5.0 от 23 апреля 2019


Оценка: 5.0 от 11 апреля 2019

Хороший ресурс с материалами для ребят из разных слоёв сферы ИТ, ИБ и других


Оценка: 5.0 от 05 апреля 2019

Один из любимых ресурсов. Очень многое можно найти.


Оценка: 5.0 от 02 апреля 2019

Тоже очень хороший сайт по программированию, здесь все есть: и статьи, и задачки с собеседований, и вакансии. Только местами статьи не всегда хорошие поучается, но в остальном очень даже гуд!


Оценка: 5.0 от 01 апреля 2019

Много полезной информации, книг про программирование


Оценка: 4.0 от 31 марта 2019

Классный сайт много полезной информации. Рекомендую!


Оценка: 4.0 от 31 марта 2019

В наличии неплохие статьи, и много полезной информации


Оценка: 5.0 от 31 марта 2019

Очень неплохой портал для программистов. Рецензии на книги, небольшие статьи, новости бы еще и поставил бы 6)


Оценка: 5.0 от 31 марта 2019

Много полезного


Оценка: 5.0 от 28 марта 2019

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


Оценка: 5.0 от 21 марта 2019

хороший сайт для саморазвития в It-сфере


Оценка: 5.0 от 21 марта 2019

Хорошие статьи по ML тематике.


Оценка: 5.0 от 21 марта 2019

Отличный интернет-сервис, где можно найти любые свежие новости, статьи и куча полезной информации по всем темам IT-сферы


Оценка: 5.0 от 20 марта 2019

Нужный сайт, подписан на их контент, где только мог найти


Оценка: 5.0 от 18 марта 2019

разрабатываем друзья всякую х. ню


Оценка: 5.0 от 16 марта 2019


Оценка: 5.0 от 14 марта 2019

куча полезной информации, как для новичков, так и для профессионалов.


Оценка: 5.0 от 13 марта 2019

Классные статьи


Оценка: 5.0 от 13 марта 2019

Достоин внимания


Оценка: 5.0 от 12 марта 2019

Отличный образовательный сайт. Около 70% материала сохраняю в закладках.


Оценка: 5.0 от 09 марта 2019

Класс. Побольше таких.


Оценка: 5.0 от 08 марта 2019

Хорошие статьи регулярно читаю. Особенно по python


Оценка: 4.0 от 08 марта 2019

Интересно иногда заглянуть, но тут в основном для новичков, немного чувствуется рекламная составляющая в постах


Оценка: 5.0 от 03 марта 2019

Полезные статьи для айтишников


Оценка: 5.0 от 03 марта 2019

Хороший сайт для самообучения программированию. А также много статей просто для саморазвития


Оценка: 5.0 от 01 марта 2019

Интересные иде и подсказки. Хороший сайт


Оценка: 4.0 от 25 февраля 2019

Хороший портал — много инфы — но больше поп


Оценка: 5.0 от 25 февраля 2019

Много полезных материалов.


Оценка: 1.0 от 25 февраля 2019

для начинающих слишком мудрённо


Оценка: 5.0 от 21 февраля 2019

Отличный ресурс! Спасибо ребятам!


Оценка: 5.0 от 14 февраля 2019

Занимательный сайт. Интересные статьи. Хороший источник знаний для программистов


Оценка: 5.0 от 07 февраля 2019

Отличный портал с подборкой материалов по программированию. Будет полезен как начинающим, стоящим перед выбором языка для изучения, так и профессиональным программистам.


Оценка: 5.0 от 02 февраля 2019

очень клёвый сайт, советую, рекомендую, я так диплом писала


Оценка: 4.0 от 11 января 2019

Хорошие лёгкие статьи

Proglib.io не работает сегодня только у меня? Статус Proglib.io

Статус сервера

онлайн

Код состояния

200

Время отклика

1.187 sec

Узнайте, работает ли Proglib.io в нормальном режиме или есть проблемы сегодня

Не открывается, не грузится, не доступен, лежит или глючит?

Самые частые проблемы Proglib.io

Не определены.

Что делать, если сайт PROGLIB.IO недоступен?

Если PROGLIB.IO работает, однако вы не можете получить доступ к сайту или отдельной его странице, попробуйте одно из возможных решений:

Кэш браузера.

Чтобы удалить кэш и получить актуальную версию страницы, обновите в браузере страницу с помощью комбинации клавиш Ctrl + F5.

Блокировка доступа к сайту.

Очистите файлы cookie браузера и смените IP-адрес компьютера.

Антивирус и файрвол.
Проверьте, чтобы антивирусные программы (McAfee, Kaspersky Antivirus или аналог) или файрвол, установленные на ваш компьютер — не блокировали доступ к PROGLIB.IO.

DNS-кэш.

Очистите DNS-кэш на вашем компьютере и повторите попытку доступа на сайт.
Смотреть видео-инструкцию  ↓

VPN и альтернативные службы DNS.

VPN: например, мы рекомендуем NordVPN.

Альтернативные DNS: OpenDNS или Google Public DNS.

Плагины браузера.

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

Сбой драйвера микрофона

Быстро проверить микрофон: Тест Микрофона.

Детальный план самообразования в Computer Science за 1,5 года

Сайт proglib.io опубликовал один из возможных планов самообразования в Computer Science за 1,5 года со ссылками на онлайн-курсы и другие образовательные сайты.

При составлении этого плана мы отталкивались от предложенного Siraj Raval пятимесячного интенсива, но постарались подойти более реалистично к срокам прохождения курсов из расчета 8-10 часов в неделю. При большем или меньшем временном ресурсе умножайте приведенные длительности на соответствующий коэффициент.

Любой план субъективен, поэтому задачей этой публикации было не составление идеального плана самообразования в Computer Science, а создание конкретного примера одного из возможных направлений с достаточным числом ссылок на образовательные ресурсы, изучив которые вы будете способны воплотить новые идеи на практике. Очевидно, что независимо от наших рекомендаций вы можете корректировать время и направление развития обучения. Мы постарались учесть разносторонний опыт, накопленный за время существования proglib.io, и там, где это было уместно, дополнили тематические блоки ссылками на наши публикации.

Если вы намерены предварительно продумать курс под себя еще более детализировано, изучите различные соображения по самообразованию на примере американских университетов и ресурса Teach Yourself Computer Science (перевод). Если у вас есть возможность отводить занятиям большее время (по 18-22 часов в неделю), рекомендуем обратить внимание на план Open Source Society University.

Наверняка вы хотите, чтобы самообразование проходило эффективно и с максимальной пользой. Некоторые из читателей, начинающих знакомство с IT, не знают, с чего начать, или, имея некоторые соображения на этот счет, хотели бы узнать, как попасть в IT после 30. Возможно, вы стремитесь скорее стать Junior-разработчиком и начать зарабатывать на программировании. Перед тем, как изложить сам план, рассмотрим некоторые предварительные соображения относительно самообразования в Computer Science, справедливые для различных категорий учеников.

Предварительные соображения

Учитывайте, что обучение – это не зубрежка, а погружение в материал, решение практических задач и интервальные повторения. Чтобы избежать типичных ошибок, изучите советы для обучающихся программированию и как/что читать по программированию. Чтобы эффективно использовать свободное время, в дополнение к приведенным ниже курсам вы можете тренироваться в мобильных приложениях. Если вам по душе игровая форма обучения, обратите внимание на подборку соответствующих ресурсов и статью о 27 сайтах с задачками для оттачивания навыков программирования.

При просмотре видеолекций для экономии времени ускоряйте их в 1.25-2 раза, в особенности в тех местах, где происходит обзор концепций и повторение материала предыдущих занятий. Несмотря на легкость изложения, концентрация новых знаний в этих частях минимальна и рассчитана на то, чтобы освежить знания с учетом больших интервалов между лекциями при традиционном обучении. Если вы проходите урок за уроком, соответствующие нейронные связи будут поддерживаться за счет применения старых знаний в новых уроках. Подход ускорения видео требует некоторой привычки, но позволяет больше времени уделять действительно сложным моментам.

При чтении сопроводительных материалов ведите краткий конспект, дополняя его после каждой смысловой части. Пройдя какую-то из концепций, например, определенный алгоритм, полезно детально объяснить его реальному или воображаемому собеседнику. Это та составляющая, которой обычно сильно не хватает относительно самообразования в Computer Science и не только – фидбэка. Будет отлично, если вы можете найти заинтересованного партнера по занятиям – это не только повысит качество проверки тестовых работ, но также добавит в обучение соревновательный аспект и повысит мотивацию прохождения очередного курса.

По тем же причинам при нескольких вариантах реализации практической части выбирайте курсы с мгновенной обратной связью – те, в которых проверка результата происходит без задержки, например, непосредственно в консоли или по приложенным ответам. Если параллельно с планом вы хотите получать дополнительные знания из книг, иметь что-то вроде «списка книг на лето», в этом поможет подборка десяти лучших книг по Computer Science.

Обязательно пользуйтесь системами контроля версий, такими как GitHub и Gist, чтобы не тратить время на решение однотипных задач и реализовывать попутно с обучением различные проекты, приходящие на ум в процессе прохождения курсов. Тогда профиль GitHub можно будет использовать как портфолио при устройстве на работу.

Учебный план самообразования в Computer Science

Предлагаемый план самообразования в Computer Science разбит на три семестра, в среднем по 26 недель каждый. Первый семестр является фундаментом, в котором закладываются математико-алгоритмические основы компьютерных технологий и получаются представления о программировании.

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

Третий семестр является наиболее субъективной частью этого плана, так как анализ данных и компьютерное зрение часто выносятся за пределы Computer Science. Однако с практической точки зрения владение этими технологиями в рамках Computer Science существенно расширяет навыки специалиста относительно решения современных задач анализа данных. В этом завершающем семестре также рассматриваются распределенные системы и практики разработки.

  1. Первый семестр – математика, алгоритмы и структуры
    1. Гарвардский CS50 (4 недели)
    2. Основы Python (4 недели)
    3. Математика для Computer Science (8 недель)
    4. Структуры данных (6 недель)
    5. Алгоритмы (8 недель)
  2. Второй семестр – интерфейсы взаимодействия
    1. Базы данных (3 недели)
    2. Компьютерные сети (6 недель)
    3. Вэб (5 недель)
    4. Обработка текстов на естественном языке (4 недели)
    5. Мобильные приложения (5 недель)
  3. Третий семестр – анализ и управление данными
    1. Машинное обучение (10 недель)
    2. Компьютерное зрение (6 недель)
    3. Распределенные системы (5 недель)
    4. Практики разработки (4 недели)

1. Первый семестр – математика, алгоритмы и структуры

1.1. Гарвардский обзорный курс CS50 (4 недели)

Чтобы получить общее представление о Computer Science, пройдите курс CS50 Гарвардского университета из 22 лекций, обзор которого мы делали ранее: часть 1, часть 2. В качестве основного языка программирования используется язык С, что хорошо дополнит ваш инструментарий, так как в приведенном плане в этой же роли выступает высокоуровневый язык Python. Этот курс позволит увидеть картину в целом, и, если вы не уверены в выборе, понять, нужно ли вам заниматься Computer Science.

1.2. Основы Python (4 недели)

Язык Python – интерпретируемый объектно-ориентированный язык с динамической типизацией. Этот высокоуровневый язык позволяет быстро освоить основные концепции программирования и начать делать что-то практическое. Automate the Boring Stuff with Python Альберта Свейгарта (книга также есть в нашей библиотеке) – один из лучших учебников по Python с задачами, направленными на облегчение ежедневной рутины. Книгу в вышеуказанном темпе можно пройти за 4 недели, читая и делая задания одной главы в день. Либо можно ориентироваться на объем книги: 600 страниц это соответственно 150 страниц в неделю или 20-25 страниц в день.

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

1.3. Математика для Computer Science (8 недель)

В освоении вопросов математической индукции, теории чисел, теории графов и прочих математических основ самообразования в Computer Science поможет соответствующий курс MIT, состоящий из 25 лекций и 12 контрольных работ. Полный конспект курса состоит из 557 страниц, соответственно в среднем нужно проходить около 10 страниц в день и решать 1-2 контрольные в неделю.

1.4. Структуры данных (6 недель)

Чтобы разбираться в связных списках, очередях, множествах, хэш-таблицах, бинарных деревьях и других структурах данных, пройдите курс университета Сан Диего, в создании которого принял участие Михал Левин, читающий в Школе анализа данных курс «Алгоритмы и структуры данных поиска».

1.5. Алгоритмы (8 недель)

Одним из лучших курсов по алгоритмам является курс MIT 6.006, состоящий из 8 разделов: 24 лекций и 7 подборок задач. Соответственно каждой теме можно уделить одну неделю. В качестве вспомогательно курса по алгоритмам и структурам данных на русском языке вы можете воспользоваться этим видеокурсом. Кроме того, мы подготовили соответствующую подборки книг, веб-сайтов, онлайн-курсов и видеоматериалов.

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

2. Второй семестр – интерфейсы взаимодействия

2.1. Базы данных (3 недели)

Для обучения работе с базами данных пройдите курс Мичиганского университета Using Databases with Python. В качестве базы данных в курсе используется SQLite3. Отточить свои навыки в написании SQL-запросов можно при помощи нескольких сайтов. Если вам потребуется проработать этот вопрос подробнее, воспользуйтесь нашей подборкой материалов для изучения баз данных и SQL.

2.2. Компьютерные сети (6 недель)

Шестинедельный курс от Google, входящий в специализацию Google IT Support Professional Certificate научит вас разбираться в TCP/IP, DNS, DHCP и прочих вещах, на которых строятся компьютерные сети. Если потребуются дополнительные разъяснения на русском, мы подготовили обзор на соответствующий курс.

2.3. Веб-программирование (5 недель)

Гарвардский курс CS50’s Web Programming with Python and JavaScript состоит из 10 лекций и является расширенным подмодулем первого курса (с другим лектором) описываемого плана, рассматривающим основные технологии современного веб-программирования. В течение каждой недели проходите по 2 лекции, отводя по два-три дня под изучение соответствующих технологий.

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

Лучший способ научиться вэб-программированию это создать свой проект. Поэтому параллельно с прохождением указанного курса создайте ресурс, в котором вы будете реализовать возможности рассматриваемых технологий. Множество идей проектов собрано в подборке Just Build Websites.

2.4. Обработка текстов на естественном языке (4 недели)

Одним из интерфейсов взаимодействия человека с миров является язык, на котором человек говорит. Для приобретения навыков в обработке строковых объектов и файлов, написанных на естественном языке, пройдите четырехнедельный курс Мичиганского университета Applied Text Mining in Python.

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

2.5. Мобильные приложения (5 недель)

Для того, чтобы окунуться в разработку мобильных приложений, лучший старт это курс, в котором параллельно объяснениям создается первое приложение (такие курсы есть и для iOS, и для Android).

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

3. Третий семестр – анализ и управление данными

3.1. Машинное обучение (10 недель)

Один из вариантов разобраться в главных особенностях машинного обучения – пройти десятинедельный курс Python for Data Science. Еще один вариант, который мы рассматривали ранее – план от новичка до профи в машинном обучении за 3 месяца, требующий соответственно 12 недель.

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

3.2. Компьютерное зрение (6 недель)

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

3.3. Распределенные системы (5 недель)

Распределенные системы – область с быстро меняющимся инструментарием, поэтому наиболее правильно в этом разделе рекомендовать книгу, рассматривающую фундаментальные особенности этой области. Одна из лучших книг по тематике распределенных систем, не теряющая своей актуальности для самообразования в Computer Science – Распределенные системы. Принципы и парадигмы Таненбаума и ван Стеена. Это довольно объемный труд, требующий чтения порядка 15-20 страниц в день и продумывания вопросов в конце каждой из глав.

3.4. Практики разработки (4 недели)

Курс Миннесотского университета объясняет как происходит совместная работа команды разработчиков, какие процессы и методологии ими используются для создания законченного программного продукта.

После прохождения плана

Наконец, по завершении  или во время прохождения плана приведенного плана самообразования в Computer Science, могут возникнуть вопросы о том, какие еще есть сайты для самообучения и что нужно делать для совершенствования своих навыков. Подпишитесь на подкасты и Youtube-каналы. Если вас увлечет теоретическая сторона Computer Science, просмотрите этот список книг.

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

Библиотека программиста Website stats and valuation

	  Domain Name: PROGLIB.IO
Registry Domain ID: D503300000040426177-LRMS
Registrar WHOIS Server:
Registrar URL: http://www.epag.de
Updated Date: 2020-02-13T14:28:48Z
Creation Date: 2016-12-04T09:20:13Z
Registry Expiry Date: 2020-12-04T09:20:13Z
Registrar Registration Expiration Date:
Registrar: EPAG Domainservices GmbH
Registrar IANA ID: 85
Registrar Abuse Contact Email:
Registrar Abuse Contact Phone:
Reseller:
Domain Status: ok https://icann.org/epp#ok
Registrant Organization: Private Person
Registrant State/Province: Moskovskaya Oblast
Registrant Country: RU
Name Server: PABLO.NS.CLOUDFLARE.COM
Name Server: TIA.NS.CLOUDFLARE.COM
DNSSEC: unsigned

>>> Last update of WHOIS database: 2020-06-16T17:10:48Z <<<

For more information on Whois status codes, please visit https://icann.org/epp

Access to WHOIS information provided by Internet Computer Bureau Ltd. ICB is provided to assist persons in determining the contents of a domain name registration record in the ICB registry database. The data in this record is provided by ICB for informational purposes only, and ICB does not guarantee its accuracy. This service is intended only for query-based access. You agree that you will use this data only for lawful purposes and that, under no circumstances will you use this data to(i) allow, enable, or otherwise support the transmission by e-mail, telephone, facsimile or other electronic means of mass, unsolicited, commercial advertising or solicitations to entities other than the data recipient's own existing customers; or (ii) enable high volume, automated, electronic processes that send queries or data to the systems of Registry Operator, a Registrar, or ICB or its services providers except as reasonably necessary to register domain names or modify existing registrations. UK privacy laws limit the scope of information permitted for certain public access.  Therefore, concerns regarding abusive use of domain registrations in the ICB registry should be directed to either (a) the Registrar of Record as indicated in the WHOIS output, or (b) the ICB anti-abuse department at [email protected].

All rights reserved. ICB reserves the right to modify these terms at any time. By submitting this query, you agree to abide by these policies	  

Loopwerk: Интервью с proglib.io

Недавно я давал интервью российскому ИТ-сайту proglib.io. Поскольку он может быть интересен не говорящим по-русски, вот он в оригинальной английской версии.

Каким был ваш путь к разработке iOS?

В 2009 году я начал работать в местной компании в качестве разработчика Python, где мы создавали веб-сайты для крупных компаний, используя Plone и Django. В 2010 году некоторые клиенты начали просить приложения для iPhone, я проявил крайний интерес к тому, чтобы научиться создавать эти приложения, и это было началом моей карьеры разработчика iOS: мне платили за то, чтобы научиться создавать приложения для iPhone.

К тому времени у меня уже был десятилетний опыт работы в качестве разработчика программного обеспечения. Я начал в 2000 году создавать веб-сайты с помощью HTML и Flash, в 2001 году начал с PHP и JavaScript, а в 2009 году перешел на Python.

Вы начали свой путь к iOS в 2010 году. Насколько сильно изменилось сейчас?

Практически все. Когда я начинал, мы не только все еще использовали Objective-C (который мне действительно очень нравился), но даже ARC еще не существовало. Обернуть мою голову вокруг счетчиков удержания, отбросить вызовы удержания и освобождения до тех пор, пока код не перестанет сбой, было сложно.

Xcode еще не был интегрированным инструментом; Interface Builder был отдельным приложением, поэтому вы могли открывать оба приложения одновременно. Это было очень мило.

Даже «блоков» (замыкания, обработчики завершения) еще не существовало, необязательных элементов не существовало, литералов массивов и словарей не существовало, раскадровок не существовало, список можно продолжать и продолжать.

11 лет — это большой срок. Чему вам пришлось научиться за это время?

Очевидно, мне сначала пришлось изучить Objective-C, UIKit, Foundation и все эти другие фреймворки.Позже мне пришлось изучить Swift, функциональное программирование, реактивное программирование и все новые фреймворки и API, которые Apple представила за эти годы. MVC, MVVM, координаторы, составная архитектура. Обучение никогда не прекращается!

Но больше всего написание приложений для iOS сильно отличается от написания веб-приложения, поэтому изучение правильных шаблонов, таких как делегаты и способы работы с (фоновыми) потоками, было немного сложной кривой обучения.

Apple не была большой компанией в 2010 году. IPhone 4 только что вышел.Почему вы выбрали разработку под iOS?

Я бы не сказал, что они не были крупной компанией в 2010 году. Конечно, сейчас они огромны, но iPhone был огромным хитом с самого первого выпуска. В любом случае, меня не волновал размер Apple, я просто знал с первых же слухов о «телефоне Apple», что он будет отличным. Когда Джобс представил iPhone, я был влюблен и знал, что мне нужен именно такой. Потребовалось, чтобы iPhone 3GS был доступен в Нидерландах.

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

Что вы думаете о Swift и SwiftUI? Вы хотите что-то в них изменить?

Обожаю Swift! Я дождался Swift 3, пока не начал его использовать. В ранних версиях Swift тоже могли быть изменения, я работал над большими сложными приложениями Objective-C, мне очень нравился Objective-C, поэтому я дождался подходящего момента, чтобы начать его использовать.Этот момент наступил в декабре 2016 года; Я только начал работать фрилансером и начал новый проект с нуля, поэтому в тот момент Swift казался очевидным выбором.

SwiftUI, с другой стороны… Мне нравится его концепция, я бы хотел иметь возможность использовать его, но он еще не готов. Я создал побочный проект средней сложности с использованием SwiftUI 1, когда он был только что выпущен, и хотя мне понравилось первоначальное повышение производительности, это быстро превратилось в раздражение, так как я потратил много времени, работая над ошибками и сбоями в самом SwiftUI. .Легкие вещи стали действительно легкими, а сложные — невозможными. Я отказался от этого побочного проекта.

У меня есть надежда, что SwiftUI стал лучше с iOS 15, но если вы не создадите приложение только для iOS 15+, это не имеет значения, насколько оно сейчас хорошо. На самом деле я не думаю, что буду использовать SwiftUI в производственной среде в ближайшие 2–3 года.

Я бы хотел изменить изменения Swift и SwiftUI, чтобы их можно было использовать со старыми версиями iOS. Например, новая поддержка async / await в Swift действительно потрясающая.Но .. только iOS 15+. Мне бы очень хотелось, чтобы Apple нашла способ удалить такие зависимости от самой базовой ОС, чтобы отдельные фреймворки могли обновляться без полного обновления ОС. То же самое и с такими приложениями, как Mail, Weather, Notes и т. Д. Почему они являются частью самой iOS? Если бы они были в App Store, как и любое другое приложение, их можно было бы обновлять чаще, с меньшими проблемами.

Какие ресурсы вы используете для работы и обучения?

https://www.pointfree.co
https: //www.donnywals.com
https://www.hackingwithswift.com

Были ли у вас ошибки и что бы вы посоветовали ребятам из России, которые только начинают разбираться в разработке iOS?

На самом деле это не ошибка, но мне бы хотелось, чтобы я не перешел на подножку FRP немного раньше, чем я. Мне никогда не нравился RxSwift (или ReactiveCocoa во времена Obj-C), он никогда не работал до тех пор, пока я не начал использовать ReactiveKit и Bond еще в 2019 году. Теперь я использую Combine во всех своих приложениях с 2020 года, и я не могу представить, что буду вернуться к старому способу создания приложений.

Если вы только начинаете разработку iOS, совет номер один, который я бы дал, — не перегружаться всеми различными вариантами архитектуры или не желать делать это «идеально» с самого начала. Просто используйте MVC, не волнуйтесь, получите ли вы в итоге массивные контроллеры представления или нет. Используйте раскадровку с переходами, если они вам нравятся, даже не думайте о координаторах. Забудьте о комбинированном и реактивном функциональном программировании. Просто начните с основ и получайте удовольствие! Вы поймете, что не масштабируется, когда начнете создавать более крупные и лучшие приложения, и будете искать решения этих проблем по мере их появления.Но если вы хотите делать все идеально с самого начала, вы просто собираетесь закончить аналитическим параличом и вообще ничего не делать.

Какое будущее у разработки под iOS?

SwiftUI и async / await. Жаль, что будущее для реальных приложений, где вы должны поддерживать старые версии iOS, еще через несколько лет.

Чем вы сейчас занимаетесь и какие у вас планы?

Я работаю над проектом для клиента, в котором я работаю также над приложением iOS и серверным кодом.Я планирую продолжать получать удовольствие как разработчик-фрилансер, принимая проекты, которые меня интересуют.

Мне почти 40 лет, и я не знаю, как долго я хочу оставаться разработчиком, фрилансером или нет. Так что со временем я, возможно, захочу больше сосредоточиться на том, чтобы быть наставником, чем мне действительно нравится заниматься сейчас несколько часов в неделю. Посмотрим!

👨‍🎓️📊 Специалист по данным — 12 шагов от новичка до профессионала

12 шагов для тех, кто хочет построить карьеру в Data Science с нуля. Ниже руководство к действию и россыпь ссылок на полезные ресурсы.

1. Решите, кем вы хотите стать 💭

Область науки о данных бурно развивается. Но наука о данных — это не только нейронные сети , но и классическая статистика и алгоритмы машинного обучения (что более понятно для бизнес-процессов) и в целом все, что связано с анализом, обработкой и представлением информации в цифровом виде.

Пока нельзя сказать, что в Data Science существует четкое разделение труда — это неспециализированная профессия.Грубая аналогия: точно так же, как были чистые ** компьютерные ученые * (компьютерщики и программисты), которые понимали все, что связано с компьютерами, так теперь есть ** Data Scientists * , которые занимаются всем, что связано с данными. Маркер первого движения к специализации труда — сфера онлайн-образования.

Так или иначе, data сайентист работает на пересечении нескольких областей:

  • ▶ ️ Математика (включая линейную алгебру, алгоритмы машинного обучения)

  • ▶ ️ Программирование (e.Икс. Python, R, SQL обычно является минимальным требованием)

  • ▶ ️ Бизнес-задачи (да, помимо компьютерных наук, вы должны понимать, что такое бизнес-процессы и как их можно улучшить)

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

Людям, умеющим пользоваться готовыми алгоритмами, нужно в 50–100–500 раз больше. Кажется, что проблема преподавания информатики и проблема «больше математики или больше инженерии» имеет следующий ответ: вам нужно и то, и другое, но вы должны преподавать математику тщательно отобранному множеству людей, которые осознали себя творцами. , конструкторы новых методов

2.Поднимите математическую базу вверх ➕

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

Stepik предлагает подходящие бесплатные видеокурсы по каждой из областей проверки знаний:

Если иллюстраций, визуализации мало, очень рекомендую взглянуть на замечательный канал 3Blue1Brown . Есть плейлисты по линейной алгебре, анализу, дифференциальным уравнениям.

Кстати, на ** канале Khan Academy ** есть подробный курс из 175 видеороликов по многомерному математическому анализу.

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

3. Научитесь программировать 👨‍💻️

Помимо математики, вам нужно уметь программировать. Обычно в качестве основного языка для аналитиков данных выбирают Python или R.У Степика хорошие курсы на обоих языках, в том числе с упором на анализ данных:

У новичков в Data Science часто возникает вопрос, какой язык выбрать основной — созданный специально для обработки данных R или универсальный Python . Хотя это горячая тема, я лично начал с R (людям в вычислительной биологии он нравится больше), однако теперь я знаю оба языка и настоятельно рекомендую начинать сначала с Python , поскольку переход Python → R более плавный, по сравнению с обратным направлением.

Короче: , если вы планируете карьеру в области науки о данных, я рекомендую вам овладеть обоими языками. Знание концепций и библиотек R позволит вам быть на шаг впереди пользователей, использующих только Python, и наоборот. Вот как об этом пишет аналитик Ирина Голощапова:

Комбинируя в некоторых случаях самые мощные и стабильные библиотеки R и Python, вы можете повысить эффективность вычислений или избежать изобретения велосипедов для реализации любых статистических моделей.
Во-вторых, это увеличение скорости и удобства выполнения проекта, если разные люди в вашей команде (или вы сами) хорошо владеют разными языками. Может помочь разумное сочетание существующих навыков программирования на R и Python.

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

4. Научитесь пользоваться инструментами 🛠️

Одним из самых популярных инструментов для обмена результатами анализа данных являются записные книжки Jupyter:

Блокноты

Jupyter и платформа Jupyter Lab Platform позволяют объединить код, текст в Markdown и формулы в LaTeX, а также тестирование и профилирование в одном документе.Кроме того, вы можете совместно работать над записными книжками с помощью Google Colab или JupyterHub.

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

Кроме того, на GitHub есть много отличных проектов Data Science. Помните, что открытый исходный код — это один из самых простых способов получить необходимый опыт совместной работы и внести свой вклад в общее дело.

По мере прохождения курсов вы, естественно, столкнетесь с другими популярными инструментами. Например, в Python для высокоскоростной обработки массивов данных требуется знание NumPy, для табличного представления данных обычно используются фреймы данных Pandas, для визуализации — MatplotLib или Plotly, готовые классы популярных моделей машинного обучения импортируются из Scikit-learn.

Немногие курсы посвящены этому, но на практике данные обычно хранятся в базах данных — SQL или NoSQL.Для дальнейшей работы вам нужно будет узнать, как с ними общаться:

Для глубокого обучения вам необходимо ознакомиться с фреймворками — TensorFlow или PyTorch. Есть и другие — мы сравнивали их в статье «Напишите свою первую модель генеративной состязательной сети на PyTorch».

5. Пройдите как можно больше курсов по Data Science 🎓

Курсов:

Учебников:

6.Присоединяйтесь к сообществу Open Data Science 👥

Много интересного можно узнать из англоязычных агрегаторов новостей из мира науки о данных:

7. Участвуйте в соревнованиях 🤼

Зарегистрируйтесь на Kaggle. Это не только самая известная платформа для соревнований по машинному обучению с денежными призами, но и большое сообщество с реестром наборов данных, записными книжками Jupyter, мини-курсами и обсуждениями. Участие в рейтинге Kaggle в вашем резюме может дать вам дополнительную оценку вашего собеседования.

8. Изучите конкретные вопросы Data Science 👁️‍🗨️

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

Также обратите внимание на следующие курсы:

YouTube каналов тоже пригодятся:

На YouTube-канале Центра компьютерных наук курсы в специальных разделах удобно организованы в плейлисты:

Не прекращайте учиться.Просмотрите субреддиты верхней и боковой панели, чтобы найти темы, связанные с машинным обучением:

9. В конце каждого курса выполните проект 🏗️

Используйте новые знания в области Data Science, чтобы принести пользу себе и другим. Создайте что-нибудь, что заставит других сказать «вау»! Многие проектные идеи перечислены в ** awesome-ai-usecases , ** 51 toy data problem , ** Practical-pandas-projects **.

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

Множество обсуждений проектных идей можно найти на Quora:

.

Создайте публичный репозиторий на GitHub для каждого проекта. Обновите результаты, поделитесь ими в своем блоге и сообществе. Участвуйте в сторонних проектах, публикуйте свои идеи и мысли. Все это поможет вам составить портфолио и познакомиться с людьми, работающими над смежными задачами.

10. Читайте научные статьи🔬

Основными языками науки о данных являются не Python или R, а английский и язык математики.

Препринты статей опубликованы на сайте ArXiv . Самые полезные разделы для специалистов по данным:

Отследить все публикации просто невозможно. Перечисленные выше ветки Reddit помогут выделить наиболее важные тексты (с тех пор, как автор стал главой отдела ИИ в Tesla, сайт стал чаще ломаться, но это по-прежнему лучший инструмент). Еще есть такой список статей с комментариями и записями вебинаров с YouTube-канала Kaggle с разбором научных статей, связанных с алгоритмами data science.

11. Пройдите стажировку / работу в области Data Science🕴

Data Science — высококонкурентная востребованная профессия. Но даже результаты собеседований превращаются членами сообщества в данные. Есть много списков вопросов для подготовки к собеседованию с дата-сайентистом:

В этом году сложнее, но мы надеемся, что скоро вернутся летние школы и стажировки:

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

12. Поделитесь своим опытом с сообществом 📢

Поделитесь своим проектом или найдите его в сообществе Data Science. Подготовьте доклад и выступите на местной встрече. Начните блог, в котором вы будете делиться своими находками, собственными идеями и репозиториями.

И последнее, но не менее важное: наслаждайтесь тем, как ваши навыки помогают сделать мир лучше!

13.Подробнее

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

https://slidetosubscribe.com/raevskymichail/

Инцидентов для всех | инцидент.io

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

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

Monzo, Cloudflare и Slack — отличные примеры того, как компании делают это хорошо, как с точки зрения их реакции, когда что-то идет не так, но и с точки зрения качества их последующих действий и уроков, которыми они делятся впоследствии.

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

Это замечательно видеть, и это одна из причин, по которой я всегда всем рекомендую вас, ребята. Супер открытый, супер прозрачный, супер круглый! 🤘

— Люк Робертс (@ L337LUKE) 12 августа 2019 г.

Однако исторически такая реакция и выгода ограничивались инцидентами, происходящими в группах разработчиков и разработчиков.

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

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

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

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

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

У нас бывают инциденты во всех сферах бизнеса. Мы просто не называем их инцидентами

Инциденты не ограничиваются только инженерными работами — они происходят в организации постоянно:

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

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

  • Вы дублируете свой процесс управления инцидентами по всему бизнесу. В итоге вы получаете N различных процессов для обработки этих ситуаций, разрозненных в каждой области бизнеса. Если разные части бизнеса хотят сотрудничать в разрешении инцидента (а они это сделают!), Им необходимо изучить N различных процессов для их решения. Без общей ментальной модели того, как решать проблемы, устранение инцидентов занимает больше времени с менее эффективным общением.
  • Невозможно получить единое представление обо всех происшествиях. Распределение процесса управления инцидентами по всему бизнесу означает, что невозможно получить единое представление обо всех инцидентах.Как руководитель, вы хотите, чтобы вы держали руку на пульсе организации, а не только инженерной организации.

У нас больше инцидентов, чем мы думаем. Мы просто не слышим о них.

В компаниях, ориентированных на продукт, принято использовать ярлык «инцидент» только для крупных, видимых извне проблем. Риторика в отрасли не помогает — мы слышим только о «действительно плохих» инцидентах, таких как глобальные сбои в работе S3 или крупный отказ CDN.

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

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

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

  • Текущие инструменты и процессы трудно использовать. В результате вы пропускаете объявление инцидента и отправляете Slack DM кому-нибудь, чтобы напрямую исправить проблему. Ваши проблемы скрыты.
  • Существующие процессы вызывают неправильные сигналы тревоги. Если ваш инструмент для инцидентов вызывает генерального директора или кого-то разбудит, вы не хотите быть тем человеком, который нажал не те кнопки и вызвал панику из-за незначительной проблемы.
  • Люди опасаются, что их обвинят. Люди не хотят бить тревогу, потому что боятся, что их сочтут виновными.

Прошли те времена, когда инциденты происходили только в сфере технологий, и остальная часть организации их не понимала. На столе осталось слишком много ценностей.

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

Наш опыт в Monzo доказал, что использование этого подхода имеет множество преимуществ по сравнению с тем, что было раньше:

Вся ваша команда в одной команде

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

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

В результате ваш ответ станет проще, качественнее и предсказуемее — сделает ваших клиентов более счастливыми .

Практика ведет к совершенству

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

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

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

Единый источник правды для всех данных об инцидентах

Надлежащая система управления инцидентами в масштабах всей организации достаточно гибкая, чтобы моделировать ваш процесс для любого типа инцидента: будь то инженерия, безопасность, эксплуатация или конфиденциальность. Он должен объединять воедино инструменты, существующие в каждой дисциплине — от GitHub до OneTrust, — и помогать им лучше работать вместе, а не разрозненно хранить информацию.

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

Мы верим, что управление инцидентами в масштабах всей организации — это будущее, и это видение того, что мы создаем здесь, в Incident.io.

В настоящее время мы работаем с клиентами, которые думают так же, и уже видим отличные результаты:

  • После инцидента с использованием.io, клиенты видят переход от меньшего количества крупных инцидентов к большему количеству меньших инцидентов. Наши клиенты получают информацию обо всех инцидентах, которые раньше не были заметны. Поскольку наш продукт настолько прост в использовании и разработан для всех, вероятность возникновения инцидента намного ниже. Каждый из этих небольших инцидентов — это шанс повысить квалификацию команды, научиться и совершенствоваться.
  • Многие разные дисциплины используют Incident.io для совместной работы. От проектирования до эксплуатации нас используют как инструмент для более эффективного совместного решения проблем.

Если вы почувствовали какую-либо боль, которую мы описали, или перекликаетесь с нашим взглядом на мир, мы будем рады поболтать. Подпишитесь на @incident_io в Twitter, присоединитесь к нашему Сообществу в Slack или напишите нам по электронной почте [email protected].

proglib.io — urlscan.io

WHOIS для proglib.io

 Доменное имя: PROGLIB.IO
Идентификатор домена реестра: D503300000040426177-LRMS
Сервер WHOIS регистратора:
URL регистратора: http://www.epag.de
Дата обновления: 2021-10-07T14: 05: 44Z
Дата создания: 2016-12-04T09: 20: 13Z
Срок действия реестра: 2022-12-04T09: 20: 13Z
Дата истечения срока регистрации регистратора:
Регистратор: EPAG Domainservices GmbH
IANA ID регистратора: 85
Контактный адрес электронной почты регистратора по вопросам злоупотреблений:
Телефон для связи со злоупотреблениями регистратора:
Торговый посредник:
Статус домена: ok https: // icann.org / epp # нормально
Статус домена: RenewPeriod https://icann.org/epp#renewPeriod
Организация регистранта:
Штат / провинция регистранта:
Страна регистрации: CA
Сервер имен: PABLO.NS.CLOUDFLARE.COM
Сервер имен: TIA.NS.CLOUDFLARE.COM
DNSSEC: без знака

>>> Последнее обновление базы данных WHOIS: 2021-10-11T22: 02: 43Z <<<

Для получения дополнительной информации о кодах статуса Whois посетите https://icann.org/epp.

Доступ к информации WHOIS предоставляется Internet Computer Bureau Ltd.(«ICB») предназначен для оказания помощи лицам в определении содержания регистрационной записи доменного имени в базе данных реестра ICB. Данные в этой записи предоставлены ICB только для информационных целей, и ICB не гарантирует их точность. Эта служба предназначена только для доступа на основе запросов. Вы соглашаетесь с тем, что будете использовать эти данные только в законных целях и ни при каких обстоятельствах не будете использовать эти данные для (i) разрешения, включения или иной поддержки передачи по электронной почте, телефону, факсу или другим электронным средствам массовой информации. , незапрашиваемая коммерческая реклама или навязывание услуг организациям, не являющимся собственными существующими клиентами получателя данных; или (ii) обеспечивать возможность больших объемов автоматизированных электронных процессов, которые отправляют запросы или данные в системы Оператора реестра, Регистратора, ICB или его поставщиков услуг, за исключением случаев, когда это разумно необходимо для регистрации доменных имен или изменения существующих регистраций.Законы Великобритании о конфиденциальности ограничивают объем информации, разрешенной для определенного публичного доступа. Таким образом, опасения по поводу неправомерного использования регистраций доменов в реестре ICB следует направлять либо (а) Регистратору записи, как указано в выходных данных WHOIS, либо (б) в отдел по борьбе со злоупотреблениями ICB по адресу [email protected].

Все права защищены. ICB оставляет за собой право изменять эти условия в любое время. Отправляя этот запрос, вы соглашаетесь соблюдать эти правила.

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

Десять лет nCine

С момента первой фиксации прошло чуть больше десяти лет.

Наличие файла .hgignore показывает, что в то время я использовал Mercurial, более легкий переход на DCVS для кого-то вроде меня, привыкшего к Subversion.

Некоторые вещи уже были и оставались неизменными до сих пор: например, комментарии Doxygen или процесс сборки CMake (мой первый настоящий проект CMake после многих лет SCons).
Вместо этого изменилось многое другое, как и следовало ожидать от проекта с таким долгим сроком службы.

Но что заставило меня упорствовать десять лет над одним и тем же проектом?

Ранние годы

Я издаю программное обеспечение с открытым исходным кодом более 20 лет.

Самой первой была MiniStat, опубликованная на Aminet в 2000 году, очень простая программа для выполнения некоторых статистических вычислений, которую я написал, чтобы применить на практике то, что я узнал после прочтения своего первого курса C.
На тот момент я был пользователем Amiga в течение десяти лет, и даже если я был чрезвычайно увлечен играми и демонстрационной сценой, меня также весьма привлекало системное программирование.

Итак, когда я вскоре стал пользователем Linux, я странно решил поработать над сценарием CGI. Я недавно закончил читать книгу GaPiL о программировании для Linux, и это были дни медленных постоянно активных ADSL-соединений и домашних серверов.
Так родилась Sonda (2002-2003), CGI-скрипт для опросов пользователей, написанный на C и размещенный на домашнем сервере друга. Этот проект был моим первым контактом с SourceForge, с лицензиями, с CVS, а затем с SVN.

Затем вышел Doom 3, и мой интерес снова переключился на игры и блестящую графику.Сначала я присоединился к моему хорошему другу Виваладаву для работы над Mars, Land of No Mercy, пошаговой стратегической игрой с изометрической графикой, а затем я начал экспериментировать с демонстрациями OpenGL.

С GL O.B.S. (2006-2007), мой следующий большой проект, в котором основное внимание было сосредоточено примерно на том же: графика, производительность и инструменты.
Globs был решением для тестирования производительности, основанным на интерфейсе PyGTK, сценарии PHP для сбора результатов пользователей и моих демонстрациях OpenGL в качестве отдельных тестов.

Инструмент даже недолго использовался Phoronix задолго до OpenBenchmarking.org была реальностью.

Позже у меня было время немного отклониться от графики с помощью PacStats (2007-2010): небольшого проекта PyGTK, который извлекал информацию из файла журнала pacman Arch Linux, сохранял ее в базе данных SQLite и визуализировал с помощью Matplotlib.

Наконец, в июле 2009 года я защитил диссертацию по компьютерной графике и был готов присоединиться к игровой индустрии!

Начало

Я год искал работу, безуспешно проводил собеседования по телефону и на месте в Великобритании.Я помню, что подумывал о том, чтобы стать инди-шутером с двумя джойстиками, который я программировал с помощью XNA.

Но потом представилась возможность, и я начал работать в небольшой инди-студии в Италии.

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

Но именно в этот момент родился nCine: на работе я кодировал скучные пользовательские интерфейсы, но дома я мог быть кем захочу, и я хотел быть программистом движка и графики!

Моими первыми двумя рабочими машинами были два очень маленьких и медленных нетбука: сначала Medion E1222, а чуть позже - Lenovo IdeaPad S205.Но у них было все, что мне было нужно: Arch Linux, Qt Creator, GCC, CMake и Doxygen. Тогда это были мои основные инструменты, как и сегодня.

Когда я планировал свою работу, я сознательно решил начать с простого рендеринга: только 2D-спрайты и никаких шейдеров. В то время я больше всего интересовался архитектурой движка, структурами данных, звуковой системой, абстракциями ... всем тем, чем я пренебрегал раньше.

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

Консолидация

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

Две мои работы в Великобритании были связаны с разработкой мобильных устройств и Android, и Android стал для меня важной платформой.

В то время это была самая близкая к консолям консоль, доступная инди-разработчикам: это были времена OUYA, GameStick, Gamepop, MOJO и Android TV приставок, таких как Shield или Fire TV.

Когда я начал работать над nCine, я знал, что однажды хочу выпустить его с открытым исходным кодом, но я считал, что это будет слишком грубо, и всегда откладывал дату.

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

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

Примерно в это время я начал изучать идею создания настоящей игры с помощью nCine. Я составил список 2D-игр, созданных небольшими инди-командами на собственных движках, чтобы мотивировать меня и сохранить мечту.

Сегодняшний день

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

Я начал с работы над новой игрой: пошаговым изометрическим прототипом под кодовым названием ncIsometric , но всего через пару месяцев я застрял с служебным кодом AI и приостановил его.

Вторая, более важная попытка заключалась в том, чтобы сдержать свое обещание и выпустить движок как бесплатное программное обеспечение с открытым исходным кодом. 30 мая 2019 года стало знаменательным днем: исходный код nCine был выпущен на GitHub с лицензией MIT!

Об этом писали и Phoronix, и Game From Scratch, и это первоначальное освещение в прессе быстро увеличило количество звездочетов на GitHub.Звезды продемонстрировали признательность людей и порадовали меня, но мне нужно было испытать его в боевых условиях: смогут ли другие использовать его для создания красивых игр?

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

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

Затем случилось непредвиденное: Джугилус попросил помощи для поддержки nCine в JugiMap, его 2D-уровне и редакторе карт. Инструмент позволяет создавать уровни, анимацию, коллизии и некоторую логику, затем библиотека времени выполнения загружает данные и использует базовый движок для рендеринга всего.

Среда выполнения

JugiMap была отличным способом провести стресс-тестирование nCine и выявить множество ошибок и ограничений, которые, когда они были устранены, сделали его намного более функциональным и надежным!

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

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

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

Говоря об экономических ресурсах, в начале этого года я был награжден Icculus MicroGrant 2020 - небольшая помощь, но большое признание за мои десять лет упорного труда.

Кроме того, теперь, когда мне не так сильно нужны деньги, я мог бы сделать SpookyGhost программным обеспечением с открытым исходным кодом и надеяться, что больше художников это заметят.Именно это я и сделал: недавно я выпустил его на GitHub под лицензией MIT, надеясь, что больше пользователей попробуют его.

Будущее

После всех этих слов, где мы сегодня и куда идем завтра?

Прошло десять лет, но пользовательская база все еще очень скудная и небольшая. Большинство людей, с которыми я общаюсь, просто немного проверит его и в конце концов исчезнет.
Я не могу их винить, проект плохо документирован и не продается, и на нем нет настоящих игр, так зачем им рисковать и быть первыми?

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

Это наше проклятие, программисты движков, всегда думают об основах, а не о готовом продукте.

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

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

Надеюсь, вам понравилось это путешествие, и я надеюсь, что у вас хватит сил продолжать идти еще как минимум десять лет.

выявить нарушения ограничений агента / привратника Open Policy для приложений Kubernetes с помощью Prometheus и Grafana | by Murat Celep

TL; DR: В этом сообщении блога мы говорим о решении, которое дает пользователям платформы краткое представление о том, какие ограничения привратника нарушаются при использовании Prometheus и Grafana.

Энди Кнапп и Мурат Селеп вместе работали над этим сообщением в блоге.

Файлы / скрипты, использованные в этой статье, можно найти здесь: https://github.com/mcelep/opa-scorecard

Командам разработчиков, которые только начинают использовать Kubernetes, может быть немного сложно погрузитесь в это, поскольку Kubernetes - это тихая сложная и большая экосистема (см. ландшафт экосистемы CNCF). Более того, хотя Kubernetes начинает развиваться, он все еще очень активно развивается и продолжает получать новые функции более быстрыми темпами, чем многие другие корпоративные программы.Кроме того, развертывание платформы Kubernetes в остальной части экосистемы компании (аутентификация, авторизация, безопасность, сеть, хранилище) адаптировано специально для каждой компании из-за требований интеграции. Таким образом, даже опытному эксперту по Kubernetes обычно нужно учесть множество вещей, чтобы развернуть приложение таким образом, чтобы оно отвечало требованиям безопасности, отказоустойчивости и производительности. Как вы можете гарантировать, что приложения, работающие в Kubernetes, продолжают соответствовать этим требованиям?

Войдите в OPA / Gatekeeper

Open Policy Agent (OPA) и его таргетинговый компонент Kubernetes Gatekeeper дает вам средства для применения политик в кластерах Kubernetes.Под политиками мы подразумеваем формальное определение правил, передовых практик и поведения, которые вы хотите видеть в кластерах Kubernetes вашей компании. При использовании OPA вы используете для написания политик доменно-ориентированный язык под названием Rego. Поступая так, вы не допускаете неправильного толкования, которое могло бы произойти, если бы вы попытались объяснить политику свободным текстом на внутренней вики-странице вашей компании.

Более того, при использовании гейткипера разные политики могут иметь разные принудительные действия. Могут быть определенные политики, которые обрабатываются как MUST , тогда как другие политики обрабатываются как NICE-TO-HAVE .Политика MUST остановит доступ ресурса Kubernetes в кластер, а политика NICE-TO-HAVE вызовет только предупреждающие сообщения, которые должны быть отмечены пользователями платформы.

В этом сообщении блога мы поговорим о том, как можно:

  • Применить пример политик OPA, так называемые ограничения привратника, к кластерам K8S
  • Выявить метрики prometheus из нарушений ограничений привратника
  • Создать панель мониторинга Grafana для отображения ключа информация о нарушениях

Если вы хотите узнать больше о применении политик в Kubernetes, прочтите эту статью.

Дизайн

Цель созданной нами системы - предоставить разработчикам и пользователям платформы понимание ограничений OPA, которые их приложение может нарушать в заданном пространстве имен. Мы используем Grafana для создания примера панели инструментов. Grafana получает данные, необходимые для создания информационной панели, из Prometheus. Мы написали небольшую программу Go, обозначенную на схеме выше как «Constraint Violation Prometheus Exporter», чтобы запрашивать Kubernetes API о нарушениях ограничений и предоставлять данные в формате Prometheus.Gatekeeper / OPA используется в режиме аудита для нашей настройки, мы не используем возможности Gatekeeper для отказа в ресурсах K8S, которые не соответствуют ожиданиям политики.

Ограничения OPA

У каждой компании свой набор требований к приложениям, работающим в Kubernetes. Возможно, вы слышали о концепции контрольного списка готовности к производству (вкратце, вы хотите создать контрольный список элементов, которые пользователи вашей платформы будут применять перед развертыванием приложения в производственной среде).Вы хотите иметь свой собственный контрольный список готовности к производству на основе Rego, и эти ссылки ниже могут дать вам хорошую отправную точку для создания собственного списка:

Имейте в виду, что вам нужно будет создать политики OPA для вашего производства Контрольный список готовности, и вы, возможно, не сможете охватить все проблемы, которые могут возникнуть в вашем контрольном списке, с помощью OPA / Rego. Цель состоит в том, чтобы сосредоточиться на вещах, которые легко извлечь на основе определений ресурсов Kubernetes, например количество реплик для развертывания K8S.

Для нашего сообщения в блоге мы будем использовать библиотеку-привратник проекта с открытым исходным кодом, которая содержит хороший набор примеров ограничений. Более того, структура проекта весьма полезна в смысле предоставления примера того, как вы можете управлять ограничениями OPA для своей компании: язык Rego, который используется для создания политик OPA, должен быть тщательно протестирован, а в папке src вы можете найти чистый rego файлы и модульные тесты. Наконец, папка библиотеки содержит шаблоны ограничений привратника, созданные из файлов rego в папке src.Кроме того, есть пример ограничения для каждого шаблона вместе с некоторыми целевыми данными, которые могут привести как к положительным, так и к отрицательным результатам для ограничения. Политики на основе Rego могут быть довольно сложными, поэтому, на наш взгляд, необходимо иметь модульные тесты Rego, которые охватывают как счастливые, так и несчастливые пути . Мы рекомендуем продолжить и разветвить этот проект, а также удалить и добавить политики, которые отражают требования вашей компании, следуя общей структуре проекта. При таком подходе вы достигнете соответствия в виде кода, который можно легко применить в различных средах.

Как упоминалось ранее, могут существовать определенные ограничения, которые вы не хотите напрямую применять (ОБЯЗАТЕЛЬНО по сравнению с ПРИЯТНЫМ ИМЕТЬ): например, в кластере разработки вы можете не захотеть принудительно применять > 1 реплики , или, прежде чем применять конкретное ограничение, вы можете дать пользователям платформы достаточно времени для принятия необходимых мер предосторожности (в отличие от немедленной блокировки их изменений). Вы управляете этим поведением с помощью принудительного действия . По умолчанию для параметра icingAction установлено значение deny , что мы бы назвали условием MUST .В нашем примере мы установим все ограничения с условием NICE-TO-HAVE , используя свойство icingAction: dryrun . Это гарантирует, что мы не повлияем напрямую на какую-либо рабочую нагрузку, выполняемую на кластерах K8S (для этого сценария мы также могли бы использовать icingAction: warn ).

Prometheus Exporter

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

Для экспорта / вывода метрик Prometheus мы написали небольшую программу на Golang, которая использует библиотеку prometheus golang. Эта программа использует Kubernetes API для обнаружения всех ограничений, применяемых к кластеру, и экспорта определенных показателей.

Вот пример метрики:

 opa_scorecard_constraint_violations {kind = "K8sAllowedRepos", name = "repo-is-openpolicyagent", violating_kind = "Pod", violating_name = "utils", abuse_namespace = "default", нарушение . используя эти ярлыки позже на панели управления Grafana.

Программа экспорта Prometheus по умолчанию прослушивает TCP-порт 9141 и предоставляет метрики по пути / metrics . Он может работать локально в вашем окне разработки, если у вас есть действующая конфигурация Kubernetes в вашей домашней папке (то есть, если вы можете запустить kubectl и иметь необходимые разрешения). При работе в кластере передается параметр incluster , чтобы он знал, где искать учетные данные кластера. Программа Exporter подключается к Kubernetes API каждые 10 секунд для очистки данных из Kubernetes API.

Мы использовали это сообщение в блоге как основу для кода.

Demo

Давайте продолжим и подготовим наши компоненты, чтобы у нас была панель управления Grafana, чтобы показать нам, какие ограничения были нарушены и как количество нарушений меняется с течением времени.

0) Необходимые инструменты

  • Git: git cli требуется для проверки репо и
  • Kubectl и рабочий кластер K8S
  • Ytt: это очень мощный инструмент для создания шаблонов yaml, в нашей настройке он используется для динамического наложения пара ключ / значение во всех ограничениях.Он похож на Kustomize, он более гибкий, чем Kustomize, и широко используется в некоторых продуктах Tanzu.
  • Kustomize: библиотека-привратник полагается на Kustomize, поэтому она нам тоже нужна.
  • Helm: мы установим Prometheus и Grafana с помощью helm.
  • Необязательно: Docker: Docker не является обязательным, поскольку мы уже публикуем требуемый образ на dockerhub.

1) Обновление подмодуля Git

Запустите git submodule update --init , чтобы загрузить зависимость библиотеки привратника.Эта команда загрузит зависимость библиотеки-привратника в папку библиотека-привратника / библиотека .

2) Установите OPA / Gatekeeper

Если ваш кластер K8S не поставляется с предустановленным Gatekeeper, вы можете использовать его установку, как описано здесь. Если вы знакомы с helm, самый простой способ установки выглядит следующим образом:

 helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts 
helm install gatekeeper / gatekeeper --generate-name

Мы использовали Tanzu Mission Control (TMC) для подготовки тестового кластера Kubernetes, и TMC предоставляет нам кластер с Gatekeeper из коробки, нам не нужно было устанавливать Gatekeeper самостоятельно.

3) Установите пример ограничений гейткипера

Сценарий gatekeeper-library / apply_gatekeeper_constraints.sh использует kustomize для создания шаблонов ограничений, а затем применяет их к вашему кластеру. Поэтому убедитесь, что k8s cli настроен с правильным контекстом. После этого Ytt используется для введения spec.enforcementActionAction: dryrun , чтобы выполнить принудительное действие dryrun.

Запустите сценарий с помощью следующей команды:

 cd gatekeeper-library &&./apply_gatekeeper_constraints.sh 

4) Установите Prometheus Exporter

В папке exporter-go находится исходный код программы, которая экспортирует информацию о нарушениях ограничений в формате данных Prometheus. В этой же папке находится сценарий build_docker.sh, который создает контейнер и помещает его в mcelep / opa_scorecard_exporter. Однако образ контейнера уже общедоступен, поэтому единственное, что вам нужно сделать, это применить ресурсы, которые находятся в папке exporter-k8s-resources.Целевое пространство имен, которое мы выбрали для развертывания ресурсов K8S, - opa-exporter . Ресурсы K8S, которые мы хотим создать, имеют следующие функциональные возможности:

  • clusterrole.yaml и clusterrolebinding.yaml -> Эти ресурсы создают роль кластера для доступа ко всем ресурсам группы constraints.gatekeeper.sh и привязки для that clusterrole
  • deployment.yaml -> Развертывание, которое будет запускать службу образа контейнера mcelep / opa_scorecard_exporter
  • .yaml -> Служба с аннотацией prometheus.io/scrape-slow: "true" , чтобы гарантировать, что эта служба будет захвачена Prometheus.

Чтобы применить эти ресурсы K8S:

 kubectl create namespace opa-exporter && kubectl -n opa-exporter apply -f exporter-k8s-resources 

5) Установите kube-prometheus-stack

Для установки Prometheus & Grafana мы будем использовать диаграмму управления под названием kube-prometheus-stack. Папка kube-prometheus-stack включает файлы, необходимые для этого шага.

Наряду с Prometheus и Grafana мы также хотим установить настраиваемую панель Grafana Dashboard, которая будет отображать полезные метрики о нарушениях ограничений. Файл kube-prometheus-stack / cm-custom-dashboard.yaml содержит конфигурацию панели мониторинга, которую мы хотим установить, обратите внимание на метку grafana_dashboard: "1" в этом файле. Эта метка используется в качестве директивы Grafana для получения содержимого этой ConfigurationMap в качестве источника панели мониторинга. Файл grafana-opa-dashboard.json - это необработанный экспорт JSON из Grafana, и мы использовали содержимое этого файла, чтобы встроить его в конфигурационную карту под ключом opa-dashboard.json .

Сценарий установки kube-prometheus-stack / install.sh создает ConfigMap из файла cm-custom-dashboard.yaml, а затем использует helm для установки диаграммы kube-prometheus-stack в пространство имен prometheus .

Выполните следующую команду для установки Prometheus & Grafana:

 cd kube-prometheus-stack && ./install.sh 

Через несколько секунд все компоненты Prometheus и Grafana должны быть запущены.

6) Войдите в Grafana

Мы не предоставили вход или службу типа : LoadBalancer для нашей установки Grafana, поэтому простой способ получить доступ к нашей панели управления Grafana - использовать переадресацию портов из kubectl.

Выполните следующую команду, чтобы начать сеанс переадресации портов в Grafana:

 kubectl -n prometheus port-forward $ (kubectl -n prometheus get pod -l app.kubernetes.io/name=grafana -o name | cut - d / -f2) 3000: 3000 

Теперь вы можете перейти по следующему URL-адресу: http: // localhost: 3000 в своем браузере, и вы должны увидеть экран приветствия, похожий на снимок экрана ниже.

Имя пользователя / пароль по умолчанию для Grafana на момент написания этой статьи - admin / prom-operator .Если эти учетные данные не работают, вы также можете обнаружить их с помощью следующих команд:

 kubectl -n prometheus получить секреты prometheus-grafana -o jsonpath = '{. Data.admin-user}' | base64 -d 
kubectl -n prometheus получить секреты prometheus-grafana -o jsonpath = '{. data.admin-password}' | base64 -d

После входа в Grafana вы напрямую переходите на панель инструментов OPA через http: // localhost: 3000 / d / YBgRZG6Mz / opa-нарушения? orgId = 1 (или ищите панель инструментов OPA по этой ссылке: http : // локальный: 3000 / панели мониторинга? query = opa).

Ниже приведен снимок экрана созданной нами приборной панели Grafana OPA:

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

7 Основные инструменты для SRE

От проектирования хаоса до мониторинга и не только, SRE полагаются на несколько ключевых типов инструментов для выполнения своей работы.

Освоение концепций, лежащих в основе надежности, является первым шагом на пути к тому, чтобы стать SRE.Но вам также нужны инструменты, чтобы применить эти концепции на практике.

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

Хаос-инжиниринг

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

Хотя инженерия хаоса может показаться чем-то, что, по определению, вы должны проводить в специальной манере, на самом деле существует несколько инструментов, которые помогают SRE выполнять проектирование хаоса систематически и эффективно. Инструменты разработки хаоса позволяют SRE определять эксперименты, которые они хотят проводить в своих системах. Затем инструменты автоматически выполняют эти эксперименты и помогают командам записывать результаты.

Chaos Monkey, инструмент разработки хаоса с открытым исходным кодом, который использует Netflix, является одним из популярных инструментов в этой категории.Другой - Gremlin, который имеет более широкий набор функций и более удобен для пользователя, чем альтернативы с открытым исходным кодом.

Мониторинг и оповещение

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

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

На рынке существуют десятки платформ для мониторинга и оповещения. Например, SRE могут выбрать работу с Datadog, который предлагает как синтетический мониторинг, так и мониторинг реального пользователя в одном пакете.

Наблюдаемость

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

Как и в случае с мониторингом, на рынке существует множество инструментов наблюдения (и многие платформы позиционируют себя как соответствующие обеим категориям). Одним из популярных примеров является Honeycomb, относительно новый инструмент наблюдения, который с самого начала создавался для помощи командам SRE и DevOps в управлении облачными средами.

Инструменты подкачки

Если у вас есть несколько систем мониторинга, у вас также есть несколько источников предупреждений.

Поэтому важно реализовать платформу пейджинга и оповещения, такую ​​как PagerDuty, которая позволяет собирать оповещения от всех ваших инструментов и пересылать их нужным инженерам.Они также помогают управлять графиками дежурства, чтобы вы не беспокоили без надобности неработающих членов команды, и автоматизируют эскалацию предупреждений, что помогает гарантировать, что на каждое предупреждение будет реагировать нужный человек.

SLO management

Как узнать, что ваши показатели надежности соответствуют SLO, которые взяли на себя ваше предприятие?

Если вам нужно управлять лишь несколькими SLA, вы можете оценить производительность SLO вручную. Но когда вы жонглируете десятками или более SLA, каждое с разными SLO, вам нужен инструмент, который автоматизирует процесс сравнения результатов надежности с обязательствами SLO.

Инструменты, удовлетворяющие эту потребность, занимают относительно небольшую, но постоянно растущую нишу. Примером для рассмотрения является Nobl9, который не только измеряет производительность SLO, но также помогает SRE понять влияние различных SLO на бизнес, чтобы они знали, какие из них наиболее важны.

Инфраструктура как код (и все как код)

Инфраструктура как код, или IaC, на данный момент стала почти скучной категорией. Но он также важен для большинства SRE.

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

Большинство облачных провайдеров предлагают инструменты IaC, совместимые с их платформами. Существуют также сторонние решения, такие как Terraform, которые работают с большинством сред.

Кроме того, существуют такие инструменты, как Open Policy Agent или OPA, которые позволяют командам определять любой аспект своей среды или цепочки доставки в виде кода. Такие инструменты, как OPA, сами по себе не являются решениями IaC; они являются частью того, что некоторые аналитики начали называть инструментами «все как код», которые расширяют концепцию IaC для охвата всех уровней и аспектов ИТ-среды.

Если вы SRE, которому нравится определять требования к надежности в виде кода и автоматически применять их в цепочке доставки, вы, как минимум, захотите воспользоваться преимуществами инструментов IaC.И, возможно, стоит также изучить такие решения, как OPA.

Автоматическое реагирование на инциденты

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

Платформы автоматического реагирования на инциденты, такие как Rootly, удовлетворяют этому требованию. Благодаря интеграции с системами мониторинга, автоматическому согласованию предупреждений с нужными командами, оптимизации создания виртуальных боевых комнат и поддержанию постоянной связи всех заинтересованных сторон до решения проблем, платформы реагирования на инциденты гарантируют, что SRE могут быстро и последовательно реагировать, когда что-то ломается.

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

Заключение: создание лучшего набора инструментов SRE

От мониторинга и наблюдения, до управления SLO и т. Д. SRE требует разнообразных инструментов для эффективного выполнения своей работы. Мы предложили несколько надежных инструментов для удовлетворения каждой из этих потребностей, но вы также можете найти множество других отличных инструментов.


.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *