Search
Write a publication
Pull to refresh
1
0
zelenin @zelenin

Разработчик

Send message

Вышел PostgreSQL 10

Reading time2 min
Views52K

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


Итак, что же нового в этой версии PostgreSQL?


Во-первых, изменилось само версионирование. До "десятки" мы наблюдали множество минорных версий 9.x, которые выходили примерно раз в год и при этом вносили серьезные, далеко не минорные изменения. Поэтому с версии 10 было принято решение сделать нумерацию 10, 11, 12 и т.д. Кстати, MySQL, похоже пошел по тому же пути, прыгнул с 5.7 на 8.0


Ладно, это всё мелочи, перейдем к существу вопроса

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

Переосмысление drag&drop

Reading time7 min
Views24K

Берем что-то всем давно известное и делаем это удобным и красивым


image
Представляем вашему вниманию react-beautiful-dnd

Функция перетаскивания (drag&drop) — это интуитивный способ перемещения и переупорядочивания элементов. В Atlassian недавно выпустили react-beautiful-dnd, которая делает перетаскивание (drag&drop) внутри списков в вебе красивыми, естественными и доступными.

Cоздатели «Вконтакте» и Telegram подали иск на 100 млн рублей на экс-сотрудника за разглашение конфиденциальных данных

Reading time6 min
Views54K

Павел Дуров

Вчера Антон Розенберг, который говорит о себе, как о бывшем заместителе технического директора «Вконтакте» и экс-директоре особых направлений в Telegram, рассказал о крупном конфликте с Павлом и Николаем Дуровыми. По словам Розенберга, братья уволили его из Telegram, а теперь пытаются взыскать с него 100 миллионов рублей якобы за разглашение коммерческой тайны.

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

Что такое dinghy или как ускорить docker

Reading time4 min
Views8.4K


Однажды я заглянул на Хабр, чтобы посмотреть как разработчики используют динги (dinghy) и вообще ускоряют работу докера на маке. На моё удивление по запросу динги я нашёл ровно ноль статей. Было бы нечестно не упомянуть, что тот же запрос вывел 4 комментария. С другой стороны этот факт не изменил картины в целом.

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

  • Производительность докера на osx
  • Запуск нескольких контейнеров, которые работают на порте 80

Под катом более подробное описание вышеперечисленных проблем, а так же способы их решения.
Читать дальше →

Генерация родословного дерева на основе данных Wikipedia

Reading time22 min
Views6.6K
В этой статье я хочу показать, как с помощью фреймворка Selenium Webdriver можно, исходя из данных Wikipedia, составить генеалогическое древо заданной персоны (например, легендарного основателя первой династии русских правителей Рюрика).

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

О факторе случая при игре в «Монополию»

Reading time9 min
Views12K
Команда Everyday Tools, как и многие другие, любит время от времени по пятницам поиграть в старые-добрые настолки. Для некоторых даже есть конспиративные названия. Вот сидят, допустим, контент-менеджеры и говорят друг другу: «А не потренировать ли нам навыки подбора ключевых слов?» — и достают, поросята, игру «Капитан Очевидность».



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

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

Продвинутое конфигурирование Docker Compose (перевод)

Reading time5 min
Views163K
Docker Compose обладает целым рядом нетривиальных способов применения, которые мы рассмотрим в этой заметке. Это очередной перевод статьи, которую мы разбирали при подготовке материалов нашего курса Python для Web-разработки.



Контроль порядка запуска


Docker Compose запускает контейнеры в порядке зависимостей, используя опцию depends_on, чтобы указывать, когда запускается сервис. Для определения порядка запуска Compose применяет depends_on, links, volumes_from и network_mode: «service: ...».

Если контейнер должен дождаться состояния “ready” другого контейнера, можно использовать инструменты wait-for-it или dockerize. Они будут проверять хосты и порты до тех пор, пока TCP соединение не будет подтверждено. Для включения принудительного ожидания в композицию необходимо добавить entrypoint:

version: '2'

services:
    web:
        build: .
        ports:
            - "80:8000"
        depends_on:
            - db
        entrypoint: "./wait-for-it.sh db:5432"
    db:
        image: postgres

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

Архитектурная пирамида приложения

Reading time8 min
Views21K
Программирование — достаточно молодая область знаний, однако, в ней уже существуют базовые принципы «хорошего кода», рассматриваемые большинством разработчиков как аксиомы. Все слышали о SOLID, KISS, YAGNI и других трех- или четырех- буквенных аббревиатурах, делающих ваш код чище. Эти принципы влияют на архитектуру вашего приложения, но помимо них существуют архитектурные стили, методологии, фреймворки и много чего еще.

Разбираясь со всем этим по отдельности, меня заинтересовал вопрос — как они взаимосвязаны? Пытаясь выстроить иерархию и вдохновившись небезызвестной пирамидой Маслоу, я построил свою пирамиду «архитектуры приложения».

О том, что из этого вышло — читайте под катом.
Войти в пирамиду

Статистика по базовым операционным системам в образах на Docker Hub

Reading time3 min
Views14K


Американская компания Anchore, созданная основателем Ansible Inc., с помощью своего сервиса Anchore Navigator, предназначенного для исследования контейнерных образов, проанализировала Docker Hub и ответила на следующие вопросы:

  1. Какие операционные системы используются больше всего?
  2. Как выбор ОС менялся на протяжении времени?
  3. Отличаются ли паттерны их использования для официальных и публичных образов?
Читать дальше →

Ожидание длиной в 15 лет. Nginx Application Server

Reading time5 min
Views59K
Начиная с момента появления Nginx в 2004 году, мы все задавались вопросом: когда же на nginx можно будет запускать приложения? Мы запускали PHP в php-fpm и на апаче, запускали Python через uWSGI, иногда жили с Apache, а если нам нужны были разные версии PHP — жили с зоопарком из FPM-ов.

image

Только что на конференции NginxConf в Портленде Nginx, Inc. объявил о запуске Nginx Application Platform. ITSumma тестировала один из его компонентов, собственно сам Application Server под названием Nginx Unit с закрытой версии. В этом посте мы расскажем о том, как выглядит Nginx Unit, и как на нем запускать приложения.
Читать дальше →

VK by design

Reading time6 min
Views38K


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

Fedora Linux запрещен к распространению на территории Крыма (и временно поломали DNS)

Reading time3 min
Views66K
image

Внезапно. Fedora Linux — достаточно популярный дистрибутив, разрабатываемый Fedora Project. Его часто называют unstable версией Red Hat Enterprise Linux. 5 сентября, было обновлено экспортного соглашение, в котором был добавлен пункт запрещающий экспорт дистрибутива на территорию республики Крым.
Читать дальше →

Корпоративное общение в Telegram. Переход с WhatsApp на полном ходу

Reading time2 min
Views8.2K
Компания занимается оптовыми и розничными продажами. Штат ~300 человек. Множество отделов с чрезвычайно разнообразной спецификой работы:

  • Офисные менеджеры
  • Менеджеры по продажам
  • Региональные представители
  • Кладовщики
  • Водители
  • Монтажники
  • И т.д.

Из программного обеспечения:

  • 1С УТ
  • Битрикс24
  • WhatsApp
  • Немного GoogleDocs

Почему возникла идея перейти на Telegram?
Читать дальше →

Пишем GraphQL API сервер на Yii2 с клиентом на Polymer + Apollo. Часть 1. Сервер

Reading time12 min
Views20K
Часть 1. Сервер
Часть 2. Клиент
Часть 3. Мутации
Часть 4. Валидация. Выводы

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

Изначально статья предполагала лишь описание отличительных особенностей GraphQL и RESTful API, с которыми мы столкнулись на практике, но в итоге она вылилась в объемный туториал на несколько частей.
Читать дальше →

Go, go, go… Первые впечатления

Reading time5 min
Views24K

Вечер буднего дня, как же не заняться написанием статьи-заметки. В которой хочу поделиться впечатлениями о знакомстве с Go. Все что написано ниже, субъективное мнение автора. Данная статья будет полезна тем кто хочет сесть за изучение Go и окажется мало полезной для разработчиков на на нем.

Go, go, go...

Четыре типажа программистов

Reading time17 min
Views217K

Привет.


Я впервые пишу в поток об управлении и найме персонала. Речь пойдет об одном из способов классифицировать ваших будущих или действующих программистов. Мой основной тезис: все разработчики, грубо говоря, делятся на 4 больших типажа и каждому из этих типажей есть своя область применения. Попытка направить неправильный типаж на решение неподходящих для него задач ведет к провалу (неэффективная работа, или сотрудник покидает команду). Хотите знать почему так — добро пожаловать под кат. Приготовьтесь, текста много.

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

DDD на практике. Проектирование списка желаний

Reading time19 min
Views59K

В интернете довольно много разрозненного материала по DDD. Если не считать синей книги, то в основном это короткие статьи с теорией, надёрганной из этой же книги, и которая мало пересекается с практикой. Возможно, конечно, что я просто плохо искал, но мне давно хотелось найти какой-нибудь цельный пример, что называется, «от и до». И я решил такой пример создать на Symfony 3 и VueJS. Сразу хочу сказать, что я изучаю DDD недавно, поэтому взял довольно простую предметную область — список желаний (wish list).

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

EntityFramework: (анти)паттерн Repository

Reading time15 min
Views118K
Repository Pattern
Репозиторий является посредником между слоем доступа к данным и доменным слоем,
работая как in-memory коллекция доменных обектов. Клиенты создают декларативные
описания запросов и передают их в репозиторий для выполнения.
  — свободный перевод Мартина Фаулера

EntityFraemwork предоставляет нам готовую реализацию паттернов Repository: DbSet<T> и UnitOfWork: DbContext. Но мне часто приходится видеть, как коллеги используют в своих проектах собственную реализацию репозиториев поверх существующих в EntityFraemwork.


Чаще всего используется один из двух подходов:


  1. Generic Repository как попытка абстрагироваться от конкретного ORM.
  2. Repository как набор запросов к выбранной таблице БД (паттерн DAO).

И каждый из этих подходов содержит недостатки.

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

Заблуждения Clean Architecture

Reading time15 min
Views448K
Превращаем круги в блоки

­­ 


На первый взгляд, Clean Architecture – довольно простой набор рекомендаций к построению приложений. Но и я, и многие мои коллеги, сильные разработчики, осознали эту архитектуру не сразу. А в последнее время в чатах и интернете я вижу всё больше ошибочных представлений, связанных с ней. Этой статьёй я хочу помочь сообществу лучше понять Clean Architecture и избавиться от распространенных заблуждений.

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

Information

Rating
8,414-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity