Pull to refresh
12
0
Кирин Евгений @ikirin

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

Send message
Каждый, кто был на Хабре больше одного раза, знает о наших сервисах для профессионалов — Мой круг и Фрилансим. Первый помогает найти друг друга потенциальным работодателям и соискателям вакансий, второй — фрилансерам и заказчикам. Часто с помощью этих сервисов иностранный работодатель или заказчик ищет специалистов в России — порядка 30% пользователей Моего Круга и Фрилансим не из нашей страны. И неудивительно — российские айтишники востребованы за рубежом, и гонорары им переводят неплохие, в валюте. А вот как легализовать эти совершенно законно заработанные деньги — не всегда понятно даже тем, от кого профессия требует каждый день решать сложнейшие задачи. Как правильно оформить валютные платежи и какие налоги при этом заплатить — помогают разобраться эксперты банка Точка.
Подробности — под катом
Total votes 45: ↑43 and ↓2+41
Comments125

DDD, Hexagonal, Onion, Clean, CQRS… как я собрал всё это вместе

Reading time14 min
Views99K


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

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

С тех пор я всегда чувствовал, что мне нужно восстановить «потерянное» время и узнать как можно больше, как можно быстрее. Поэтому я стал немного увлекаться экспериментами, много читать и писать, уделяя особое внимание дизайну и архитектуре программного обеспечения. Вот почему я пишу эти статьи, чтобы помочь себе в обучении.
Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments14

Сколько зарабатывает Хабр + инструкция как узнать сколько зарабатывают другие компании

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

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

image
Читать дальше →
Total votes 103: ↑100 and ↓3+97
Comments66

Балансировка HTTP(S) трафика

Reading time12 min
Views29K
Добрый день, %username%. Меня зовут Антон Резников, я работаю над проектом Облако Mail.Ru Сегодня я хочу рассказать о технологиях балансировки трафика, проиллюстрировав историей о развитии социальной сети. Все персонажи выдуманы, а совпадения почти случайны. Статья обзорная, составлена по следам доклада на Highload Junior 2017. Некоторые вещи могут показаться элементарными, но опыт проведения собеседований показывает, что это не совсем так. Кое-что будет спорным, не без этого.

Если интересно, добро пожаловать под кат.
Читать дальше →
Total votes 79: ↑79 and ↓0+79
Comments18

Domain-Driven Design: тактическое проектирование. Часть 2

Reading time16 min
Views79K


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

Для реализации конкретного ограниченного контекста используется ряд более низкоуровневых тактических шаблонов, которые имеют технический характер, то есть эти шаблоны используются для решения технических задач. Такими шаблонами являются: сущность, объект-значение, службы предметной области, события, модули, агрегаты, фабрики и хранилища. Именно о них пойдет речь в этой статье.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments27

Личный опыт: как ИТ-специалисту переехать на работу в США, надеясь только на себя

Reading time7 min
Views68K


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

Мой опыт не вписывается в эту схему и потому, как мне кажется, может оказаться полезным для других ИТ-специалистов — я переехал в США по визе O1, которая лишена некоторых недостатков традиционной американской рабочей визы.

Сразу оговорюсь, что этот способ миграции предполагает достаточно серьезные денежные траты, месяцы на подготовку документов, а также наличие общей жизненной активности. Но при всем этом, данный способ предполагает, что гораздо больше зависит от самого соискателя, а не от везения.
Читать дальше →
Total votes 63: ↑55 and ↓8+47
Comments43

Этот SVG всегда показывает сегодняшнюю дату

Reading time2 min
Views30K
Для своей странички с контактными данными нужна была стандартная иконка календаря, чтобы люди просматривали мой ежедневник. Такие иконки почти всегда делают наподобие бумажного календаря. Но мне стало интересно, можно ли сделать календарь чуть полезнее, если добавить динамическую иконку.

И вот он, SVG-календарь, который всегда показывает сегодняшнюю дату:


Фоновое изображение сделано на основе иконки Twitter TweMoji Calendar — CC-BY

Поддержка текста в SVG слегка неудобная, так что позвольте объяснить, как я это сделал.
Читать дальше →
Total votes 85: ↑80 and ↓5+75
Comments57

Объект в футляре или Optional в Java 8 и Java 9. Часть 2: «Как это делается в Java 8»

Reading time16 min
Views29K
Объект в футляре
Классу Optional посвящено немало статей и tutorials, в том числе этот и этот на Хабре.
Большинство из них рассказывают как вызываются методы этого класса. Я в этом tutorial делаю упор на то зачем, почему, в каких случаях можно (а скорее даже нужно) применять тот или иной метод класса. Я думаю, это очень важно, ибо как показал опрос после первой статьи этого tutorial, далеко не все Java — программисты вошли во вкус использования всей мощи методов этого класса.
Для лучшего объяснения методов класса я буду использовать более сложные и наглядные примеры, чем в большинстве других tutotials — кофеварку, фильтрационную установку, миксер и т.д.
Это вторая статья серии, посвящённая использованию класса Optional при обработке объектов с динамической структурой. В первой статье было рассказано о способах избежания NullPointerException в ситуациях, когда вы не можете или не хотите использовать Optional.
В этой статье мы рассмотрим все методы класса в том виде, как их предоставляет Java 8. Расширения класса в Java 9 рассмотрены в третьей статье этой серии. Четвертая статья посвящена необходимому (с точки зрения автора) дополнению к этому классу.
Ну а в пятой статье я рассказываю о том, где внутри класса следует применять Optional, подвожу итоги и дарю каждому читателю, дочитавшему серию до конца, ценный подарок.
Читать дальше →
Total votes 25: ↑18 and ↓7+11
Comments43

Путь запроса по внутренностям Spring Security

Reading time15 min
Views88K
Большинство разработчиков имеет только примерное представление о том что происходит внутри Spring Security, что опасно и может привести к появлению уязвимостей.

В этой статье шаг за шагом пройдемся по пути http запроса, что поможет с пониманием настраивать и решать проблемы Spring Security.

image

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments7

Истории успеха Kubernetes в production. Часть 5: цифровой банк Monzo

Reading time7 min
Views9.5K


Цикл историй успеха Kubernetes продолжается рассказом о британском банке-стартапе Monzo. Эту молодую компанию относят к категории «challenger banks» (да, это уже термин из Oxford Dictionary), т.е. таких небольших банков, которые бросают вызов крупной и давно сложившейся финансовой индустрии. Это становится возможным благодаря активному и повсеместному использованию современных информационных технологий в самой своей основе, т.е. отказу от операций в традиционном формате в пользу электронных аналогов, позволяющих качественно снизить расходы (банки с таким подходом ещё называют «digital-only»). Пример Monzo, созданного всего 2 года назад, интересен тем, что в достижении великих целей ему помогают платформа Kubernetes, язык Go и другие современные Open Source-продукты, хорошо знакомые DevOps-инженерам и не только.
Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments8

Обработка ошибок в формате JSON со Spring Boot

Reading time5 min
Views35K
Часто при работе с микросервисами, построенными с помощью технологии Spring Boot, можно видеть стандартный вывод ошибок подобный этому:

{
    "timestamp": 1510417124782,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "com.netflix.hystrix.exception.HystrixRuntimeException",
    "message": "ApplicationRepository#save(Application) failed and no fallback available.",
    "path": "/application"
}

Такой вывод может быть излишним и ненужным клиентам вашего сервиса. Если вы хотите упростить жизнь сторонним сервисам в случае ошибки, то как раз об этом и пойдет речь в данном посте.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments6

20 приёмов работы в командной строке Linux, которые сэкономят уйму времени

Reading time9 min
Views233K
Тема полезных приёмов работы в терминале Linux неисчерпаема. Казалось бы — всё устроено очень просто: приглашение оболочки, да введённые с клавиатуры команды. Однако, в этой простоте кроется бездна неочевидных, но полезных возможностей. Именно поэтому мы регулярно публикуем материалы, посвящённые особенностям работы в командной строке Linux. В частности, сегодня это будет перевод статьи, автор которой увлечён экономией времени через повышение продуктивности труда.



Если вас интересует работа в командной строке Linux — вот некоторые из наших материалов на эту тему:

Читать дальше →
Total votes 82: ↑46 and ↓36+10
Comments87

Что «под капотом» у LinkedList?

Reading time5 min
Views130K
Добрый день, хабрачитатели!

Как работает ArrayList, вполне понятно. Есть много статей по этому поводу, часть из них иллюстрированы замечательными картинками, так что даже новичкам становится сразу все ясно. К лучшим статьям на эту тему я отношу «Структуры данных в картинках. ArrayList», написанную tarzan82.

Этот же автор описывает принципы работы LinkedList, однако часть данных устарела еще с выходом Java 7, поэтому попытка детально разобраться, что происходит внутри этой коллекции, по рисункам tarzan82 уже сложно. Да и в других источниках я не встретила понятных картинок, потому и возникла идея написать эту статью.
Читать дальше →
Total votes 22: ↑16 and ↓6+10
Comments45

Налоги на IT-бизнес в России

Reading time11 min
Views21K
Привет, Хабр! Продолжаю публикацию своей книги о юридических аспектах IT-бизнеса. Сегодня — про налоги и смежные вопросы. Учитывая, что в России налоговая система слабо дифференцирована по видам бизнеса, материал вполне подойдет и для «обычного», то есть нетехнологического предпринимательства.



Книга «Закон стартапа»:

  1. Стартапер vs. предприниматель
  2. Выбираем форму
  3. Регистрация
  4. Корпоративное управление
    Как юридически строится компания
  5. Текущая работа
    Договоры и как они работают
    Как проверить партнера по открытым источникам
  6. Налоги
    Что платит IT-бизнес в России?
  7. Государственная поддержка
  8. Цикл стартапа
    Как (в общем) работает венчурное инвестирование
  9. Венчурные сделки
  10. Венчурные фонды
  11. Интеллектуальная собственность
  12. Офшоры и ВЭД
    Преимущества и подводные камни офшоров

Читать дальше →
Total votes 30: ↑24 and ↓6+18
Comments44

Как ООО заплатить в 133 раза меньше налогов

Reading time9 min
Views81K

Тема, которую сегодня хотелось бы осветить, довольно сложная и объёмная, поэтому пришлось потрудиться, чтобы представить её в более-менее наглядном и понятном виде. Те, кто доберётся до конца статьи, узнают ответ на вопрос в заголовке. Поверьте, там так оно и есть.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments12

Собеседование на программиста в Amazon

Reading time7 min
Views126K

Представляю вашему вниманию перевод своей статьи Amazon software engineer interview, изначально опубликованной на английском на sobit.me.


Amazon - We Pioneer


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


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


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

Читать дальше →
Total votes 71: ↑62 and ↓9+53
Comments258

Сколько зарабатывает программист в Москве по мнению ФНС

Reading time3 min
Views84K

сколько зарабатывает программист


5 000 000 рублей в год или 417 000 рублей в месяц зарабатывает московский предприниматель, оказывающий услуги по разработке компьютерных программ и баз данных. Если же он ещё и компьютеры ремонтирует, то его доход удваивается и достигает заветной круглой цифры в 10 000 000 рублей. Такие суммы потенциально возможного годового дохода IT-специалиста приводятся в законе г. Москвы от 31.10.2012 № 53 «О патентной системе налогообложения».
Читать дальше →
Total votes 41: ↑39 and ↓2+37
Comments175

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

Reading time8 min
Views114K
Юникод — это очень большой и сложный мир, ведь стандарт позволяет ни много ни мало представлять и работать в компьютере со всеми основными письменностями мира. Некоторые системы письма существуют уже более тысячи лет, причём многие из них развивались почти независимо друг от друга в разных уголках мира. Люди так много всего придумали и оно зачастую настолько непохоже друг на друга, что объединить всё это в единый стандарт было крайне непростой и амбициозной задачей.

Чтобы по-настоящему разобраться с Юникодом нужно хотя бы поверхностно представлять себе особенности всех письменностей, с которыми позволяет работать стандарт. Но так ли это нужно каждому разработчику? Мы скажем, что нет. Для использования Юникода в большинстве повседневных задач, достаточно владеть разумным минимумом сведений, а дальше углубляться в стандарт по мере необходимости.

В статье мы расскажем об основных принципах Юникода и осветим те важные практические вопросы, с которыми разработчики непременно столкнутся в своей повседневной работе.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments52

Логирование Git revision в Java с помощью Maven

Reading time5 min
Views17K
Наша компания перешла с mercurial на Git, после чего мне пришлось разобраться как у нас до этого выводилась в лог информация о развертывающейся ветки и переписать это под git. Возможно, кто-то в будущем столкнется с такой же проблемой, так как Git набирает популярность и многие компании мигрируют на него.

Моя цель показать Вам, как с помощью нескольких maven plugin-ов можно сделать вывод в лог Вашей java программы названия ветки и хэш коммита из Git. Это полезно при анализе логов, если у Вас давно не было деплоя и история Вашего инструмента CI затерлась.
Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments12

Первые 10 минут на сервере

Reading time8 min
Views59K

Азбука безопасности Ubuntu


«Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров.

Каждое утро я проверяю почтовые уведомления logwatch и получаю основательное удовольствие, наблюдая несколько сотен (иногда тысяч) безуспешных попыток получить доступ. (Многие довольно прозаичны — попытки авторизоваться как root с паролем 1234 снова и снова). Приведённая здесь общая методика подходит для серверов Debian/Ubuntu, которые лично мы предпочитаем всем остальным. Они обычно служат только хостами для контейнеров Docker, но принципы те же.

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

Примечание: Эта справка создана как базовая азбука. Её следует расширить и дополнить в соответствие с вашими потребностями.
Читать дальше →
Total votes 54: ↑40 and ↓14+26
Comments55

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity