Как стать автором
Обновить
-19
0

Пользователь

Отправить сообщение

Самый лучший в мире курс по Машинному обучению — Алгоритмы Машинного обучения с нуля

Время на прочтение 1 мин
Количество просмотров 19K

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

Курс бесплатный: https://stepik.org/course/68260/promo

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 10

Полное руководство по модулю asyncio в Python. Часть 4

Время на прочтение 12 мин
Количество просмотров 14K

Сегодня, в четвёртой части (перваявтораятретья) перевода учебного руководства по модулю asyncio в Python, представляем вашему вниманию разделы оригинала №8 и 9.

Читать далее
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 0

RabbitMQ: терминология и базовые сущности

Время на прочтение 8 мин
Количество просмотров 61K

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

Алексей Барабанов, IT-директор «Хлебница» и спикер курса «RabbitMQ для админов и разработчиков», подготовил конспект, который поможет понять терминологию и базовые сущности RabbitMQ.

Читать далее
Всего голосов 41: ↑39 и ↓2 +37
Комментарии 5

Как использовать CSS ::before и ::after для создания пользовательских анимаций и переходов

Время на прочтение 8 мин
Количество просмотров 56K

Как сделать плавный анимированный переход на сайте без использования специальных библиотек? Урок использования псевдоэлементов CSS для создания эффектов: от анимированной кнопки до карточки профиля. Подходит новичкам.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 3

Книга «Осваиваем Kubernetes. Оркестрация контейнерных архитектур»

Время на прочтение 7 мин
Количество просмотров 10K
image Привет, Хаброжители! Мы недавно издали книгу по Kubernetes версии 1.10. В посте рассмотрен отрывок «Сетевые решения для Kubernetes»

Организация сети — обширная тема. Существует множество способов настроить сеть с подключением устройств, подов и контейнеров. Kubernetes вас в этом не ограничивает. Все, что предписывает данная платформа, — это высокоуровневая сетевая модель с плоским адресным пространством для подов. В рамках этого пространства можно реализовать множество хороших решений с разными возможностями и для разного окружения. В этом разделе рассмотрим некоторые из них и попытаемся понять, каким образом они укладываются в сетевую модель Kubernetes.
Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 10

Антипаттерны Vim

Время на прочтение 4 мин
Количество просмотров 21K
Когда вы находитесь в состоянии потока, Vim серьёзно ускоряет редактирование, будь то написание кода, поэзии или прозы. Но поскольку кривая обучения слишком крута для текстового редактора, то очень легко сохранить вредные привычки с тех времён, когда вы только осваивали редактор. Vim настолько ускоряет работу, что искоренить эти привычки особенно трудно, ведь их можно даже не заметить. Но это того стоит. Перечислю некоторые из наиболее распространённых антипаттернов.
Читать дальше →
Всего голосов 35: ↑33 и ↓2 +31
Комментарии 55

Courier: миграция Dropbox на gRPC

Время на прочтение 16 мин
Количество просмотров 8K


Примечание переводчика


Большинство современных программных продуктов не являются монолитными, а состоят из множества частей, которые взаимодействуют друг с другом. При таком положении дел необходимо, чтобы общение взаимодействующих частей системы происходило на одном языке (притом что сами эти части могут быть написаны на разных языках программирования и выполняться на разных машинах). Упростить решение этой задачи помогает gRPC — open-source-фреймворк от Google, выпущенный в 2015 году. Он решает сразу ряд проблем, позволяя:

  • использовать язык Protocol Buffers для описания взаимодействия сервисов;
  • генерировать программный код на основании описанного протокола для 11 разных языков как для клиентской части, так и для серверной;
  • реализовать авторизацию между взаимодействующими компонентами;
  • использовать как синхронное, так и асинхронное взаимодействие.

gRPC показался мне довольно интересным фреймворком, и мне было интересно узнать про реальный опыт компании Dropbox по построению системы на его основе. В статье есть масса деталей, связанных с использованием шифрования, построением надёжной, наблюдаемой и производительной системы, процессом миграции со старого RPC-решения на новое.

Дисклеймер
Оригинальная статья не содержит описания gRPC, и некоторые моменты могут показаться вам непонятными. Если вы не знакомы с gRPC или другими подобными фреймворками (например, Apache Thrift), рекомендую предварительно ознакомиться с основными идеями (достаточно будет прочитать две небольшие статьи с официального сайта: «What is gRPC?» и «gRPC Concepts»).

Спасибо Алексею Иванову aka SaveTheRbtz за написание оригинальной статьи и помощь с переводом трудных мест.
Читать дальше →
Всего голосов 47: ↑47 и ↓0 +47
Комментарии 0

Техника безопасности при работе с PostgreSQL

Время на прочтение 7 мин
Количество просмотров 27K
Так получилось, что я начал работать с PostgreSQL три года назад и за это время умудрился методично собрать все возможные грабли, которые можно вообразить. И сказать по правде, если бы была возможность поделиться с собой трехлетней давности нынешним горьким опытом, моя жизнь была бы куда проще и нервные клетки целее. Именно поэтому я решил написать абсолютно субъективную статью со сводом правил, которых придерживаюсь при разработке на PostgreSQL. Возможно, кому-то эта статья поможет обойти собранные мной грабли (и наступить на другие, ха-ха!).


Читать дальше →
Всего голосов 75: ↑71 и ↓4 +67
Комментарии 43

Лекции Технопарка: мастер-класс Алексея Рыбака «Про то, что я бы хотел, чтобы мне рассказали, пока я учился»

Время на прочтение 25 мин
Количество просмотров 47K
Сегодня мы начинаем серию публикаций новых мастер-классов Технопарка. И первая из них — мастер-класс Алексея Рыбака на свободную тему, в котором он поделился со студентами соображениями о том, чем работа в реальной жизни отличается от учебы. Видео смотрите на нашем сайте, а адаптированную расшифровку — ниже.

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

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


Читать дальше →
Всего голосов 66: ↑61 и ↓5 +56
Комментарии 15

8 успешных людей делятся опытом: как найти ментора?

Время на прочтение 3 мин
Количество просмотров 46K
Грамотный наставник играет большую роль в пути к успеху. Но как найти ментора, как вести себя с ним? Об этом рассказывают бывший госсекретарь США, основатели нескольких успешных стартапов и один из лучших авторов New York Times.

1. Речь о человеке, не о должности


«Для меня наставничество жизненно необходимо. Я приписываю большую часть своего успеха тому, что у меня было много отличных менторов, людей, к которым я могла придти и у которых могла спросить совета», — пишет Алекса фон Тобель, основатель и глава сервиса для финансового планирования LearnVest.com. Алекса отмечает, что важны знания и личные качества наставника: если ваш ментор не думает наперёд или же не самый честный человек, то он сам станет проблемой.

image
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Комментарии 12

«Прозрачный» Squid с фильтрацией HTTPS ресурсов без подмены сертификатов (x86)

Время на прочтение 9 мин
Количество просмотров 254K
Не секрет, что в больших конторах тема фильтрации Интернета довольно актуальная. С этой задачей справляется немало программных и аппаратных решений. Но в настоящее время все те сайты, которые мы резали ранее, работают по протоколу HTTPS, т.е. порт 443. Как известно, данный протокол проследить, прослушать и т. п., невозможно. А любой кеширующий фильтрующий прокси-сервер, редиректор и т. п. фильтрует только HTTP, т.е. порт 80. Как же резать Вконтакте, Одноклассники, iphide.info и многие другие подобные сайты? Как блокировать доступ к личной почте в организации, если использование оной запрещено порядками в организации? Да, можно фильтровать по IP адресам, но они частенько меняются, да и на многих ресурсах несколько IP адресов. Блокировать их на уровне файрвола как-то совсем не православное решение, и не совсем удобное.

И вот, совсем недавно, мне один товарищ рассказал, что он поднимает у себя в конторе кеширующий прокси с фильтрацией HTTPS, меня это заинтересовало.
Читать дальше →
Всего голосов 29: ↑26 и ↓3 +23
Комментарии 140

Ежедневная работа с Git

Время на прочтение 40 мин
Количество просмотров 873K
Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
  • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
  • будет ли менеджер и заказчик удовлетворён этим процессом?
  • будет ли легко работать разработчикам?
  • смогут ли новички быстро включиться в процесс?
  • можно ли процесс относительно легко и быстро изменить?


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

Далее очень много букв случайным образом превратились в пост.
Всего голосов 200: ↑194 и ↓6 +188
Комментарии 44

Банальные (но действенные) способы для поддерживания баланса между работой и личной жизнью

Время на прочтение 2 мин
Количество просмотров 8.2K


Эти способы добавят вам годы жизни и наполнят их (годы) этой самой (настоящей) жизнью!

1) Научитесь говорить «нет».


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

2) По возможности оставляйте работу в офисе.


В современном мире, в котором электронная почта и рабочая документация находятся в одном клике от вас, не так-то легко бывает отдохнуть и полностью отвлечься от работы в конце трудового дня. Но отдыхать от работы в свое свободное время просто необходимо – это поможет вам восстановить силы и сохранить ясность ума.
Читать дальше →
Всего голосов 18: ↑12 и ↓6 +6
Комментарии 0

Персональные данные: насколько реально попасть под проверку Роскомнадзора?

Время на прочтение 9 мин
Количество просмотров 33K


Из всех часто задаваемых вопросов на тему хранения, обработки и защиты персональных данных по частоте возникновения уверенно лидирует следующий: «Может кто-нибудь адекватно пояснить, как распространяется сей ФЗ на обычную фирму, которая имеет локальную инсталляцию 1С и считает зарплату?». А распространяется он одинаково на все организации, обрабатывающие персональные данные, независимо от их размера (даже ИП, который ведет в 1С расчеты с наемными работниками). Естественно, небольшая (и даже средняя) компания в здравом уме и трезвой памяти задастся вопросом: «А стоит ли овчинка выделки?»
Читать дальше →
Всего голосов 22: ↑16 и ↓6 +10
Комментарии 30

Обзор процесса разработки программного обеспечения

Время на прочтение 13 мин
Количество просмотров 187K

Введение


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

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

Проекты, над которыми я работаю, чаще всего связаны с разработкой заказного или инвестиционного программного обеспечения. Также мне приходилось работать с встроенным ПО и программами, ориентированными на выпуск «хитов» (что, с лёгкой руки Джоэля Спольски, я называю далее игровым ПО, хотя на самом деле некоторые игровые проекты ближе к инвестиционным).

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

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

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

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

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

Другая сторона наших заказных проектов – высокие требования к функциональности. Это и высокая нагрузка на все системы, и большая географическая распределённость, и высокие требования к точности вычислений при очень ограниченных временных рамках. Часто в наших проектах появляются элементы исследовательской работы и творческого поиска, направленного на решение нетривиальных проектных задач. Иногда нам приходится комбинировать в рамках одного процесса разработки разные методологии, например, вставляя в общий процесс, близкий к RUP, один или несколько этапов почти чистого scrum, порождая что-то вроде проекта в проекте. Это позволяет нам сохранять невысокий уровень вовлеченности пользователей, связанный с природой проекта, с гибкостью разработки в условиях высокой неопределённости требований. В этом плане для меня важен именно подготовительный этап, во время которого можно выбрать необходимую методологию и выстроить оптимальный процесс разработки. Один из примеров применения гибкой методологии я описал в статье «Применение agile при разработке проекта для государственного заказчика».

В качестве примера работы над инвестиционным проектом я могу привести разработку комплексной системы безопасности, которую мы создавали как «коробочный» продукт. Под моим руководством было выпущено последовательно четыре версии этой системы, пользователями которой стали самые разные коммерческие и государственные организации, включая мэрию Москвы, АФК «Система», банки, бизнес-центры и, конечно, наш собственный офис. Первая версия была не очень успешной, но у нас была стратегия развития, которая позволила нам успешно захватить рынок и пережить сложные времена кризиса. Опыт работы над этим и ещё несколькими инвестиционными проектами тоже был учтён при формировании используемого мной процесса разработки.

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

Важно понимать, что переход процесса от одного этапа к другому не имеет чёткой границы. Как правило, работы следующего этапа начинаются по мере выполнения 80-90% работ по предыдущему этапу. Особенно это касается разработки требований, когда в ряде случаев снятие неопределённости происходит лишь к концу проекта. Безусловно, наличие такой неопределённости в проекте является существенным риском и должно находиться под постоянным контролем.
Читать дальше →
Всего голосов 19: ↑13 и ↓6 +7
Комментарии 45

Systemd за пять минут

Время на прочтение 4 мин
Количество просмотров 618K
Наша компания занимается администрированием веб-серверов на базе CentOS. Довольно часто наши клиенты используют веб-приложения на базе python, ruby или java. Для автозапуска подобных приложений есть готовые шаблоны для написания стартап-скриптов. Но прогресс не стоит на месте, вышел уже второй релиз CentOS 7 и, следуя старой традиции «не ставить dot-zero релизы на продакшен», мы начинаем предлагать клиентам сервера на базе CentOS 7.1 (1503).

В CentOS7, так же как и в его родителе RHEL7, используется systemd — менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации и много всего прочего.

image

Огромный монстр с множеством возможностей, гибкими настройками и мегабайтами документации…

Но что делать, если стоит задача быстро-быстро, вот прямо вчера, сделать автозапуск некоего сервиса?
Давайте выжмем из документации минимально необходимый набор информации для создания простых старт-стоп скриптов.
Знакомство с systemd
Всего голосов 70: ↑66 и ↓4 +62
Комментарии 58

Работаете дома? 6 способов поддержания сосредоточенности и продуктивности

Время на прочтение 3 мин
Количество просмотров 13K
image

Работа из дома может потребовать серьёзной адаптации в привычках. Может возникнуть ощущение круглосуточного труда – и так каждый день. При таком режиме грань между работой и личной жизнью стирается. В этой статье Emily Cassel, расскажет, как при работе из дома не потерять вдохновение, сосредоточенность и продуктивность.
Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 4

Создан открытый аналог Siri — Sirius, доступный по лицензии BSD

Время на прочтение 1 мин
Количество просмотров 17K


Группа Clarity Lab, находящаяся в университете Мичигана, предлагает решение с открытым исходным кодом для персонального компьютерного помощника. Их программа распознаёт голос и ищет ответы на запросы, точно как делают Siri от Apple, Google Now от Google, и аналогичные решения от Microsoft и Amazon. Проект под названием Sirius умеет даже больше, чем его аналоги – например, ему можно предоставить картинку и задать по ней вопрос.

Проект спонсируют Google, DARPA, американские военные и Национальный научный фонд США. Он распространяется по лицензии BSD, что означает полную открытость и бесплатность для всех желающих. Значит, любые стартапы смогут реализовать такую функциональность в своих проектах и устройствах.
Читать дальше →
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 12

Сайт с нуля на полном стеке БЭМ-технологий. Методология Яндекса

Время на прочтение 29 мин
Количество просмотров 107K
На прошлой неделе BBC рассказала, что для новой версии главной страницы использовала методологию БЭМ, созданную в Яндексе. По такому случаю мы решили поднять материалы мастер-класса «Разрабатываем сайт с нуля на полном стеке БЭМ-технологий» и рассказать вам, как начать использовать полный стек БЭМ-технологий в своих проектах.

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



В статье мы расскажем, в чём преимущество вёрстки независимыми блоками и что такое уровни переопределения, познакомимся с готовыми библиотеками блоков и инструментами для автоматизации сборки. Покажем, как разные инструменты — например, autoprefixer, css-препроцессор Stylus или модульная система YModules — упрощают жизнь разработчика и создают по-настоящему удобную платформу, если встроить их в процесс разработки по БЭМ.

На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JavaScript. Отдельно остановимся на декларативных шаблонах BEMHTML и BEMTREE, которые позволяют преобразовывать данные в БЭМ-дерево, описанное в формате BEMJSON и, затем в HTML. Рассмотрим в деталях, как написать серверную часть приложения по БЭМ-методологии.
Читать дальше →
Всего голосов 96: ↑79 и ↓17 +62
Комментарии 37

9 способов ускорить фриланс

Время на прочтение 3 мин
Количество просмотров 13K
image

Удивительно, что большинство из нас попросту не замечает, как экстенсивно занимается фрилансом. То, на что можно тратить всего несколько минут, мы тратим достаточно много времени. Давайте я отсыплю вам советов, ускорю работу в интернете и, возможно, некоторые из вас начнут зарабатывать больше, работая меньше.
Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Комментарии 3

Информация

В рейтинге
Не участвует
Откуда
Оренбург, Оренбургская обл., Россия
Зарегистрирован
Активность