Search
Write a publication
Pull to refresh
3
0

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

Send message

Непрерывная интеграция и развертывание Docker в GitLab CI

Reading time20 min
Views76K
В этом руководстве рассмотрим вариант настройки непрерывной интеграции и развертывания Flask приложения на Docker Swarm через GitLab CI.

Сначала мы рассмотрим настройку рабочей среды, включая создание серверов для нодов Docker Swarm. Затем создадим простое приложение Flask с Redis и подготовим GitLab CI для непрерывной доставки.
Читать дальше →

Список лучших инструментов для web-анимации

Reading time5 min
Views49K
image

Список лучших инструментов для web-анимации. SVG/CSS/Canvas/DOM анимация + GUI инструменты для генерации кривых Безье и CSS анимации.

Репозиторий: github.com/sergey-pimenov/awesome-web-animation
Страница-каталог: awesome-web-animation.netlify.app

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

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

Читать дальше →

Сборка проектов с GitLab CI: один .gitlab-ci.yml для сотни приложений

Reading time8 min
Views77K


В статье решается задача управления описанием сборки для большого количества однотипных приложений. Чтобы в проекте заработал GitLab CI, нужно в репозиторий добавить файл .gitlab-ci.yml. Но что, если в сотне репозиториев это файл с одинаковым содержимым? Даже если разложить его по репозиториям один раз, то как его потом изменять? А что, если одного .gitlab-ci.yml мало для сборки — нужны Dockerfile или Dappfile, разные скрипты и структура YAML-файлов для Helm? Как обновлять их?

С чего начать решение задачи по сборке сотни однотипных приложений? Конечно же, посмотреть, можно ли GitLab CI указать использовать .gitlab-ci.yml из другого репозитория или компоновать .gitlab-ci.yml из файлов в других репозиториях…
Читать дальше →

Дизайн под iPhone X. Гайдлайны для iOS 11

Reading time11 min
Views169K


Вместе с iOS 11 появился новый iPhone X, айфон с самой большой диагональю экрана, который фактически не имеет границ. 5.8 дюймовый OLED экран даже больше чем экран 5.5 дюймов iPhone 8 Plus, в то время как размер самого корпуса примерно такой же как у iPhone 8. Для дизайнеров это означает большую свободу в макетах.
Читать дальше →

Типичное использование Observable объектов в Angular 4

Reading time5 min
Views79K

Представляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.



Подписка на параметр роутера и мапинг на другой Observable


Задача: При открытии страницы example.com/#/users/42, по userId получить данные пользователя.


Решение: При инициализации компоненты UserDetailsComponent мы подписываемся на параметры роутера. То есть если userId будет меняться — будер срабатывать наша подписка. Используя полученный userId, мы из сервиса userService получаем Observable с данными пользователя.


// UserDetailsComponent

ngOnInit() {
  this.route.params
    .pluck('userId') // получаем userId из параметров
    .switchMap(userId => this.userService.getData(userId))
    .subscribe(user => this.user = user);
}

Читать дальше →

Оптимизация веб-серверов для повышения пропускной способности и уменьшения задержки

Reading time31 min
Views47K


Привет! Меня зовут Макс Матюхин, я работаю в SRV-команде Badoo. Мы в Badoo не только активно пишем посты в свой блог, но и внимательно читаем блоги наших коллег из других компаний. Недавно ребята из Dropbox опубликовали шикарный пост о различных способах оптимизации серверных приложений: начиная с железа и заканчивая уровнем приложения. Его автор – Алексей Иванов – дал огромное количество советов и ссылок на дополнительные источники информации. К сожалению, у Dropbox нет блога на Хабре, поэтому я решил перевести этот пост для наших читателей.

Читать дальше →

67 полезных инструментов, библиотек и ресурсов для экономии времени веб-разработчиков

Reading time4 min
Views43K

В данной статье я не буду вам рассказывать о больших веб-фреймворках, таких как React, Angular, Vue и т.д… не будет в ней и перечня наиболее популярных текстовых редакторов – Atom, VS Code, Sublime… В данной статье я поделюсь с вами инструментами, которые, по моему мнению, могут сделать рабочий процесс веб-разработчиков более простым и быстрым.

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

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

Учим webworkers хорошим манерам

Reading time4 min
Views9.2K
Рано или поздно у каждого кто работал с webworkers возникает ситуация когда код превращается в кашу вроде этого:

main.js
const worker = new Worker('test.worker.js');
worker.onmessage = (data) => {
  if(data.eventName === 'someFuncResult')
    someFunc();
  else if(data.eventName === 'someFunc2Result')
    someFunc2();
};

worker.postMessage({eventName: 'someFunc'});

test.worker.js
self.addEventListener('message', (data) => {
  if(data.eventName === 'someFunc') {
    doSomeFunc();
    self.postMessage('someFuncResult');
  }
  
 if(data.eventName === 'someFunc2') {
    doSomeFunc();
    self.postMessage('someFunc2Result');
  }
})


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

Цели:

— Читаемость кода
— Конкурентные запросы
— Ассинхронные функции
— Прозрачная обработка ошибок
— Возможность отправки промежуточных результатов выполнения процедуры
Читать дальше →

Настраиваем автоматическую сборку проекта Unity3d в Gitlab CI

Reading time6 min
Views14K
Update 17.02.2019 — эта статья устарела. Пользоваться ей в 2019 году не стоит.

Зачем нужна автоматическая сборка проекта никому объяснять не надо.
В случае со сборкой проектов под Unity это особенно актуально, так как средненький проект, например, под WebGL собирается на рабочей машине 5-7 минут, полностью её завешивая.

Не так давно вышла версия Unity под Linux, что дало принципиальную возможность настроить автоматическую сборку при помощи Gitlab CI (которая основана на docker образах).

Я хочу поделиться своим опытом такой настройки.
Читать дальше →

Непрерывная интеграция/внедрение приложения Symfony с помощью docker-compose и GitLab CI

Reading time16 min
Views34K

В статье я поделюсь своим опытом автоматизации всего процесса разработки приложения Symfony с нуля от настройки инфраструктуры до деплоя в production. От development- и до production-окружения для запуска приложения будет использоваться docker-compose, а все процедуры непрерывной интеграции/внедрения будут запускаться через GitLab CI/CD Pipelines в docker-контейнерах.


Подразумевается, что вы знакомы с docker и docker-compose. Если нет или вы не знаете как его установить, я подготовил инструкцию по подготовке локального окружения разработчика. Фактически, для работы над приложением потребуется только Docker, VirtualBox и, опционально, Yarn.

Читать дальше →

Собеседование для фронтенд-разработчика на JavaScript: самые лучшие вопросы

Reading time9 min
Views213K
Недавно мне довелось побывать на встрече участников проекта FreeCodeCamp в Сан-Франциско. Если кто не знает, Free Code Camp — это сообщество, нацеленное на изучение JavaScript и веб-программирования. Там один человек, который готовился к собеседованиям на позицию фронтенд-разработчика, попросил меня подсказать, какие вопросы по JavaScript стоит проработать. Я немного погуглил, но не смог найти подходящего списка вопросов, на который я бы мог дать ссылку и сказать: «Разбери эти вопросы и работа твоя». Некоторые списки были близки к тому, что мне хотелось найти, некоторые выглядели очень уж простыми, но все они были либо неполными, либо содержали вопросы, которые вряд ли кто станет задавать на реальном собеседовании.

image
Читать дальше →

GitLab CI для непрерывной интеграции и доставки в production. Часть 1: наш пайплайн

Reading time6 min
Views154K


Итак, GitLab CI: что можно ещё рассказать о нём? На хабре уже есть статьи про установку, про настройку раннеров, про командное использование, про GitLab Flow. Пожалуй, не хватает описаний того, как используется GitLab CI в реальном проекте, где задействовано несколько команд. А в современном мире разработки ПО это действительно так: ведь есть (как минимум) разработчики, тестировщики, DevOps- и релиз-инженеры. С подобным разделением на команды мы работаем уже несколько лет. В этой статье я расскажу о том, как мы, используя и улучшая возможности GitLab CI, реализовали и применяем в production для коллектива из нескольких команд процессы непрерывной интеграции (CI) и отчасти доставки приложений (CD).
Читать дальше →

OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

Reading time11 min
Views95K


Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья.


Также вы узнаете почему 100% по тестам — не всегда хорошо в реальности.

Читать дальше →

Как понять, что происходит на сервере

Reading time9 min
Views82K


Александр Крижановский ( krizhanovsky, NatSys Lab.)


По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


Читать дальше →

Экзотичные заголовки HTTP

Reading time12 min
Views113K

Привет Хабрахабр! В этой статье будут наглядно продемонстрирован результат применения некоторых важных и экзотичных HTTP заголовков, большинство из которых связаны с безопасностью.
Читать дальше →

Гарвардский курс CS50 «Основы компьютерных наук и искусства программирования»

Reading time3 min
Views56K


Вот уже несколько месяцев специально для JavaRush мы переводим и озвучиваем самый популярный в мире университетский курс о CS50 — «Основы компьютерных наук и искусства программирования» (трейлер). Его уже много лет очно читают для студентов Гарварда и для воспитанников Йельского университета, а в последнее время ещё и заочно для многомиллионной аудитории интернета.
Это перевод самой новой версии курса, который стартовал осенью 2015 года. В курсе 24 лекции и постепенно мы переведём их все. Намедни мы перевели 15-ю лекцию, её вы найдёте под катом в списке всех переведённых на сегодняшний день лекций.

Что вы узнаете, прослушав этот курс:

  • Основы компьютерных наук и программирования;
  • Концепции алгоритмов и алгоритмичности мышления. Какие задачи можно решать с помощью программирования и каким образом;
  • Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка;
  • Основы языка программирования C и Scratch;
  • Основы баз данных и SQL;
  • Веб-разработка: основы CSS, HTML, JavaScript и PHP;
  • Основы подготовки презентации проектов по программированию.

Читать дальше →

Как использовать HTTP заголовки для предупреждения уязвимостей

Reading time7 min
Views124K


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

Безопасность не менее важна, чем содержание или поисковая оптимизация сайта. Тысячи сайтов взламываются из-за ошибок в конфигурации или недостаточной защиты. Если вы владелец сайта или специалист по защите информации, и интересуетесь защитой сайта от кликджекинга, внедрения кода, уязвимостей MIME типов, XSS-атак и т.д., то данная инструкция будет вам полезна.

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

Принимаем электронную почту на Node.js

Reading time5 min
Views35K

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


Тем временем, хвала комьюнити Node.js, появились пакеты, которые позволяют принимать почту без боли и страданий – это smtp-server и mailparser. Давайте я покажу, как в пару десятков строк кода создать свой почтовый сервер с поддержкой SSL шифрования, фильтрацией спама с помощь spamassassin и прочими радостями.

Читать дальше →

Российский хакер научил студентов ИТ-вуза взламывать сеть

Reading time1 min
Views17K
Автор программы Intercepter-NG, называющий себя Ares, показал студентам Университета Иннополис как нужно перехватывать трафик в сети. Видео лекции под катом.

Делаем проект на Node.js с использованием Mongoose, Express, Cluster. Часть 1

Reading time9 min
Views50K

Введение


Добрый день, дорогой %username%! Сегодня мы будем описывать создание каркаса приложение по типу MVC на Node.js с использованием кластеров, Express.js и mongoose.


Задача — поднять сервер который имеет несколько особенностей.


  • Работает в несколько асинхронных потоков.
  • Сессионная информация будет в общей для всех потоков.
  • Поддержка HTTPS.
  • Авторизация.
  • Легко масштабируем.

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

Читать дальше →

Information

Rating
Does not participate
Location
La Tour-de-Peilz, Vaud, Швейцария
Date of birth
Registered
Activity