Ссылка: Полезные вебинары от ThoughtWorks

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

Нередко можно увидеть Нила Форда или Мартина Фаулера с их докладами и последних исследованиях.

Из последнего — я рассказываю о том какие есть способы организации кода. Начиная от MVC как архитектурный паттерн, или вернее сказать антипаттерн, и, заканчивая, Clean Architecture от Uncle Bob.

Чего нельзя сделать в Gatling

Не так давно потратил порядочное время, чтобы подходящий инструмент для нагрузочного тестирования в рабочем проекте. Прежде мы использовали JMeter, но с ним довольно тяжело писать кастомную логику, которая иногда бывает при проведении нагрузочных тестов (приготовить данные хитрым образом и тому подобное). С этой целью я и полез в интернеты за инфой. Мы отобрали несколько вариантов и в конце концов остановились на инструменте под названием Gatling. Вот его основные фичи:

  • Умеет стрелять по мишени
  • Строит подробные отчеты
  • Рисует красивые графики
  • Легко интегрируется в сборку
  • Достаточно богатый и годный DSL (хоть и на Scala)
  • Это всё-таки код (будет преимуществом для тех, кто устал программировать на XML)

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

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

Ссылка: Знаете ли вы из чего состоит ваше приложение?

Задумывались ли вы когда-нибудь из чего состоит ваше приложение? Из каких библиотек? Видели ли вы их исходный код? Каждый раз, когда я смотрел на граф зависимостей, то понимал, что  фактически мы ничего не контролируем. Миллионы строк библиотечного кода. Что лежит во всех этих библиотеках? Нет ли там чего “интересного”? И действительно, иногда в них можно что-то найти. Чтобы подпитать своего внутреннего параноика рекомендуем к прочтению Рассказ о том, как я ворую номера кредиток и пароли у посетителей ваших сайтов

Обмен реестрами в финансовых системах

registy

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

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

Пару слов о Content Discovery

Небольшая заметка о таком явлении как content discovery. В очередной раз наткнулся на такую проблему в одном из проектов и решил написать об этом. Пост будет бесполезен тем, кто в курсе как проводится аудит безопасности, но для меня, как для разработчика ПО в свое время эта штука стала откровением.

В информационной безопасности content discovery называют технику поиска скрытых ресурсов, преимущественно в web-приложениях. Впервые я столкнулся с таким явлением несколько лет назад, когда ко мне обратились знакомые и сказали, что у них стали пропадать клиенты. Это была небольшая компания, у них был отдел продаж и маленький одностраничный веб-сайт, где потенциальные клиенты оставляли свой номер телефона. Затем менеджеры отдела продаж перезванивали клиенту и совершали сделку. Так вот, с какого-то момента клиенты, пришедшие на сайт оказывались обработаны конкурентами до того, как им позвонит менеджер. Поначалу подозревали сотрудников, но затем я решил взглянуть на исходный код сайта. Выяснилось, что по урлу /clients (или что-то такое, точно не помню) без всякой аутентификации были доступны клиенты оставившие заявку за несколько часов. Этот урл дергался CRMкой и новые клиенты перекидывались в базу CRM. 

На тот момент мне было непонятно, как можно было обнаружить этот путь на сайте, ведь он нигде не фигурировал — ни в sitemap.xml, ни в robots.txt ни где либо ещё. Про content discovery  я ничего не знал, поэтому немного подумал и забил(к тому же проблема оказалась решена). Как оказалось есть способы поиска таких скрытых ресурсов. Давайте посмотрим что можно спрятать и как это можно найти.

 

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

IT Эмиграция в Сингапур. Часть 2: Сложно ли переехать?

IT Эмиграция в Сингапур. Часть 2: Сложно ли переехать?

IT Эмиграция в Сингапур. Часть 1: Зачем?

Условно говоря, для Senior Developer получение работы и процесс переезда не должны вызвать серьезных затруднений. Почему именно для Senior? Потому что каждая компания имеет квоты на иностранных сотрудников. Чем больше местных трудоустроено, тем больше можно нанять иностранцев. Таким образом, многие берегут квоты для ценных специалистов. По моему опыту специалист становится ценным для компании, чтобы на него потратили квоту, будучи именно Senior’ом. Бывают и исключения, и бизнес некоторых компаний заключается в найме джуниоров и перепродаже их как Сеньоров, но я с этим не сталкивался лично.

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

IT Эмиграция в Сингапур. Часть 1: Зачем?

IT Эмиграция в Сингапур. Часть 1: Зачем?

Введение

Меня зовут Сергей и я разработчик. В середине 2019 года мы всей семьей переехали в Сингапур. Мы — это я, жена и 2е детей дошкольного возраста. На мой взгляд, все истории о переезде стоит читать, представляя бэкграунд автора, чтобы соотнести его со своим опытом. 

Итак, 8 лет опыта коммерческой разработки, начинал на PHP, после того как понял что язык меня ограничивает в моих задачах, перешел на Java, и следом на Kotlin. Разрабатывал всякие и разные системы, и сложные на государство и высоконагруженные на телеком компании и на банки. Так или иначе 5 лет поработал team lead’ом. В Сингапур переехал в Thoughtworks как Senior Consultant.

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

Как я попал в ThoughtWorks или образцовое интервью

Thoughtworks people

Не кажется ли вам странным то, что когда вы собираетесь поменять место работы и возникает необходимость пройти интервью, то в первую очередь вы думаете «надо подготовиться к интервью». Прорешать задачи на HackerRank, почитать Crack the coding interview, зазубрить как устроен ArrayList и чем она отличается от LinkedList. Ах да, еще сортировки спросить могут, и явно будет непрофессионально сказать, что quick sort скорее всего будет лучшим выбором.
Но постойте, вы ведь программируете 8 часов в день, решаете интересные и нетривиальные задачи, и на новом месте работы будете делать плюс-минус тоже самое. Но тем не менее, чтобы пройти интервью необходимо как-то дополнительно готовиться, даже не оттачивать ежедневные навыки, а выучить то, что вам не понадобилось ни на текущем месте работы, ни вряд ли понадобиться на следующем. На ваши возражения о том, computer science у нас в крови, и разбуди нас посреди ночи мы обязаны написать с закрытыми глазами на наволочке обход дерева в ширину даже не приходя в сознание, я отвечу, что если я буду устраиваться в цирк, и моим главным трюком будет именно это — то пожалуй да, я согласен. Нужно этот навык проверить.

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

Скрипты и песочницы в JVM

Довольно распространенная ситуация, когда приложение требует кастомизации, но это невозможно выполнить одними только настройками, а модификация исходного кода затруднительна или же отсутствует возможность обновления с необходимой частотой. Примером такой проблемы может быть, к примеру, вычисление комиссии по сложным правилам или же формирование кастомного запроса в биллинг на основе профиля абонента и тому подобное. В этом случае можно воспользоваться Java Scripting API (JSR-223) и выразить логику через изменяемые в рантайме скрипты. Более того, при наличии вменяемого DSL или API, полномочия изменения и настройки скриптов можно переложить на админов, аналитиков и тд. В этом посте мы бы хотели рассказать об эволюции одного приложения, которое активно использует скриптинг в своей работе — с чего начинали и к чему это привело.

 

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