Pull to refresh
14
0

Java Developer

Send message

PowerMock (+Mockito): новый взгляд на unit-тестирование

Reading time6 min
Views63K
image
Качественный код невозможен без тестов. А качественные тесты — без моков. В создании моков нам давно помогают различные полезные библиотечки, наподобие EasyMock или Mockito. В своей практике я использую Mockito, как самое гибкое, красивое и функциональное средство. Но, к сожалению, Mockito тоже не стал серебрянной пулей. Ограничением всегда являлись final классы, private поля и методы, static методы и многое другое. И приходилось выбирать: или красивый дизайн, или качественное покрытие тестами. Меня, как приверженца красивой архитектуры и качественных тестов, такой расклад не устраивал. И вот совсем недавно я наткнулся на замечательную библиотечку — PowerMock, которая удовлетворила практически все мои запросы. За исключением одного, но об этом позже.

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

[ libGDX ] Пишем полноценную игру под Android. Часть 1

Reading time8 min
Views115K
Здравствуйте! Я решил попробовать себя на поприще game-dev'а и заодно рассказать и показать как это было. Вторая часть здесь.

Игра представляет собой экран, на котором расположены созвездия. Каждая звезда этого созвездия имеет свой цвет (нота). Например, ноту «До» обычно представляют красным цветом, а «Ми» — желтым. Вот что получится в итоге:

image

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

Писать будем, используя фреймворк libGDX. Мне он больше всех понравился, как новичку в этом деле. Да и информации по нему я нашел больше. Итак, приступим.
Читать дальше →
Total votes 44: ↑38 and ↓6+32
Comments20

Browser Fingerprint – анонимная идентификация браузеров

Reading time14 min
Views214K


Валентин Васильев (Machinio.com)


Что же такое Browser Fingerprint? Или идентификация браузеров. Очень простая формулировка — это присвоение идентификатора браузеру. Формулировка простая, но идея очень сложная и интересная. Для чего она используется? Для чего мы хотим присвоить браузеру идентификатор?


  • Мы хотим учитывать наших пользователей. Мы хотим знать, пришел ли пользователь к нам первый раз, пришел он во второй раз или в третий. Если пользователь пришел во второй раз, мы хотим знать, на какие страницы он заходил, что он до этого делал. С анонимными пользователями это невозможно. Если у вас есть система учета записей, пользователь логинится, мы все про него знаем — мы знаем его учетную запись, его персональные данные, мы можем привязать любые действия к этому пользователю. Здесь все просто. В случае с анонимными пользователями все становится гораздо сложнее.
Total votes 75: ↑54 and ↓21+33
Comments167

Всё про налоги для IT-фрилансеров. Налоговая нагрузка ИП на разных режимах. Часть 3

Reading time4 min
Views20K


Это третья, заключительная часть из цикла. В предыдущей статье мы подробно рассказали об УСН, патенте и налоге для самозанятых. В этой части рассчитаем налоговую нагрузку для ИП с доходом 100, 200 или 300 тыс. руб. в месяц на разных режимах.


Также вы можете зарегистрироваться в онлайн-бухгалтерии 1С: БизнесСтарт и самостоятельно поиграться с цифрами в калькуляторе, чтобы посмотреть какой режим выгоднее для вас.

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

Как перейти на gRPC, сохранив REST

Reading time8 min
Views91K

Многие знакомы с gRPC — открытым RPC-фреймворком от Google, который поддерживает 10 языков и активно используется внутри Google, Netflix, Kubernetes, Docker и многими другими. Если вы пишете микросервисы, gRPC предоставляет массу преимуществ перед традиционным подходом REST+JSON, но на существующих проектах часто переход не так просто осуществить из-за наличия уже использующихся REST-клиентов, которые невозможно обновить за раз. Нередко общаясь на тему gRPC можно услышать "да, мы у нас в компании тоже смотрим на gRPC, но всё никак не попробуем".


Что ж, этой проблеме есть хорошее решение под названием grpc-rest-gateway, которое занимается именно этим — автогенерацией REST-gRPC прокси с поддержкой всех основных преимуществ gRPC плюс поддержка Swagger. В этой статье я покажу на примере как это выглядит и работает, и, надеюсь, это поможет и вам перейти на gRPC, не теряя существующие REST-клиенты.


Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments16

90 новых фич (и API) в JDK 11

Reading time15 min
Views70K

Привет, Хабр! Представляю вашему вниманию перевод статьи «90 New Features (and APIs) in JDK 11» от автора Simon Ritter.



Новый шестимесячный релизный цикл JDK для многих означает, что некоторые ещё даже не выяснили, какие новые функции в JDK 10, а на пороге уже JDK 11. В одном из ранних блогов (англ.), были перечислены все 109 новых фич и API, которые удалось найти в JDK 10. Поэтому для JDK 11 было решено поступить аналогично. Тем не менее, был выбран другой формат. Этот пост будет поделён на два раздела: новые фичи, которые доступны разработчикам (публичный API) и всё остальное. Таким образом, если вас интересует только то, что непосредственно повлияет на вашу разработку, вы можете пропустить вторую часть.


Общее число изменений, которое удалось подсчитать, получилось равным 90 (это JEP плюс новые классы и методы, исключая отдельные методы для HTTP-клиента и Flight Recorder) (прим. переводчика: Java Flight Recorder (JFR) был одним из коммерческих дополнений от Оракла встроенным в JDK, но начиная с Java 11, благодаря JEP 328, был передан в опенсорс). Хоть и в JDK 11 удалось найти на одиннадцать изменений меньше, чем в JDK 10, считаю, что справедливо сказать, что в JDK 11 добавлено больше функциональных возможностей, однозначно на уровне JVM.

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

Логи фронтенд-разработчика Хабра: рефакторим и рефлексируем

Reading time9 min
Views15K


Мне всегда было интересно, как устроен Хабр изнутри, как построен workflow, как выстроены коммуникации, какие применяются стандарты и как тут вообще пишут код. К счастью, такая возможность у меня появилась, ведь недавно я стал частью хабракоманды. На примере небольшого рефакторинга мобильной версии попробую ответить на вопрос: каково это — работать тут фронтом. В программе: Node, Vue, Vuex и SSR под соусом из заметок о личном опыте в Хабре.
Читать дальше →
Total votes 80: ↑78 and ↓2+76
Comments33

CPU Load: когда начинать волноваться?

Reading time5 min
Views225K
Данная заметка является переводом статьи из блога компании Scout. В статье дается простое и наглядное объяснение такого понятия, как load average. Статья ориентирована на начинающих Linux-администраторов, но, возможно, будет полезна и более опытным админам. Заинтересовавшимся добро пожаловать под кат.
Читать дальше →
Total votes 152: ↑143 and ↓9+134
Comments87

Lombok возвращает величие Java

Reading time11 min
Views134K


Мы в Grubhub почти во всём бэкенде используем Java. Это проверенный язык, который за последние 20 лет доказал свою скорость и надёжность. Но с годами возраст «старичка» всё-таки начал сказываться.

Java — один из самых популярных языков JVM, но не единственный. В последние годы конкуренцию ему составляют Scala, Clojure и Kotlin, которые обеспечивают новую функциональность и оптимизированные функции языка. Короче говоря, они позволяют делать больше с более лаконичным кодом.
Читать дальше →
Total votes 37: ↑31 and ↓6+25
Comments29

Частицы РМ2.5: что это, откуда и почему об этом все говорят

Reading time12 min
Views383K
Приветствуем всех в блоге компании Тион! Мы продолжаем рассказывать об «угрозах с воздуха». На этот раз речь пойдет о мелкодисперсных частицах РМ2.5. Сегодня о них говорят все: экологи, врачи, СМИ. Почему бы не поговорить и нам.



В своей самой первой статье на Geektimes мы писали про НЕРА фильтр, который очищает воздух от этих РМ2.5. А теперь, наконец-то, расскажем, что это за частицы, откуда они берутся и почему они вредят не только дыхательной, но и кровеносной системе. Готовы к долгому чтению?
Поехали!
Total votes 22: ↑20 and ↓2+18
Comments67

Закон о самозанятых. Информация к размышлению

Reading time9 min
Views54K
Уже давно на Хабре в обсуждениях упоминают новый закон о самозанятых. Информации пока мало, но всё-таки решила написать на основе той информации, которая есть — Закон, заключения профильных комитетов, ответы на сайте ФНС.

К IT услугам закон применяется, особенностей для IT нет.

Пакет законов по введению нового налога для самозанятых граждан подписан и вступает в силу с 1 января 2019 года. Появился новый спецрежим и новый налог, Федеральный закон от 27.11.2018 № 422-ФЗ «О проведении эксперимента по установлению специального налогового режима „Налог на профессиональный доход“ в городе федерального значения Москве, в Московской и Калужской областях, а также в Республике Татарстан (Татарстан)»

Остался месяц до вступления в силу закона, есть время немного разобраться.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments232

Легальный вывод средств с Upwork в РФ

Reading time8 min
Views66K
На Хабре уже написано достаточно много статьей по теме, в частности:


В ответ на повторяющиеся просьбы написать статью, в которой:

  • разбросанные по разным статьям крупицы будут собранны в единое целое
  • всевозможные противоречия будут устранены
  • все сведения будут иметь актуальный характер
  • будут учтены пожелания такие как «а можно с картинками? :)»

родилось следующее руководство.
Total votes 78: ↑70 and ↓8+62
Comments383

Обзор самых интересных докладов Joker 2018: версия EastBanc Technologies

Reading time6 min
Views3.8K
Привет, хабровчане! В этом посте хотим поделиться своими впечатлениями от конференции для Java-разработчиков Joker 2018, что из услышанного нам запомнилось больше всего.

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



Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments3

Joker 2018: невозможное возможно

Reading time7 min
Views8.6K
19-20 октября 2018 года в Санкт-Петербурге прошло долгожданное Java-мероприятие второй половины года — конференция Joker 2018. Подробности, впечатления, детали — всё дальше.


Читать дальше →
Total votes 40: ↑38 and ↓2+36
Comments9

Исследование: Java самый популярный язык в облаке — кто и почему его использует

Reading time3 min
Views11K
Некоммерческая организация Cloud Foundry Foundation (CFF) в конце лета опубликовала рейтинг самых востребованных языков программирования для корпоративных облачных разработок. Согласно их исследованию, лидером стал Java.

Под катом расскажем почему и как его используют ИТ-компании и другие организации.

Читать дальше →
Total votes 29: ↑22 and ↓7+15
Comments4

Антипаттерны тестирования ПО

Reading time31 min
Views90K

Введение


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

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

Терминология


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


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

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

Continuous Delivery в Яндексе. Как разогнать свой цикл разработки, используя только Open Source решения

Reading time8 min
Views58K
Перед тестированием всегда стояли и стоят две задачи – помочь команде поддерживать высокий уровень качества разработки и делать это, не задерживая весь процесс. И это справедливо не только для наших проектов в Яндексе, где мы работаем над очень большим количеством сервисов. Часто основная задача и вовсе формулируется как увеличение скорости тестирования при сохранении должного уровня качества. Скорость процесса разработки, приверженность ценностям частых и быстрых релизов – это основополагающие факторы для успеха любого продукта. У команды больше возможностей маневра, команда быстрее находит и исправляет ошибки, быстрее получает фидбек. Как же ускоряться, не теряя качества, как достичь дзена непрерывной доставки изменений?



Сегодня мы покажем, что Continuous Delivery — это просто и весело! А пользу от него можно получить, встроив его даже частично. Мы в тестировании Яндекса уже несколько лет используем подобный подход для наших библиотек с открытым исходным кодом — Allure Framework или Yandex QATools. Процесс прост, значительно масштабируем и может применяться как для огромных команд из одного человека, так и для маленьких командочек из десятков человек. А самое главное — весь инструментарий доступен в Open Source!

Кстати, до 30 сентября можно подать заявку и поступить в нашу Школу автоматизации процессов разработки в Питере. Обучение в ней бесплатное и будет состоять не только из курса лекций — обязательным этапом станет командная работа над учебным проектом.

А теперь вернёмся к теме. Представьте картину: уютное рабочее место, вы пишете код, добавляете юнит-тесты и отправляете изменения в систему контроля версий, а через пару часов они «выезжают» на боевые сервера. И все при этом работает.
Читать дальше →
Total votes 85: ↑82 and ↓3+79
Comments25

Сопротивления автоматизации тестирования

Reading time9 min
Views12K

Несмотря на то, что технологии модульного тестирования существуют уже 30 лет (в 1989 году Кент Бек написал статью “Simple Smalltalk Testing: With Patterns”), тем не менее не все программисты владеют этой технологией и не все компании сделали автоматическое тестирование частью своей корпоративной культуры. Даже несмотря на очевидные преимущества автоматического тестирования, все равно поведенческое сопротивление достаточно сильное. Кто пробовал внедрять автоматические тесты, тот знает, что всегда найдется какая-то причина, почему это не удалось сделать.


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


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

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments115

Где и как разработчики оценивают своих работодателей? Сервисы оценки компаний в ИТ-индустрии

Reading time4 min
Views12K
Вчера мы запустили на «Моем круге» новый сервис оценки компаний — с его помощью можно узнать, как сотрудники оценивают своих работодателей по разным критериям. А в сегодняшнем обзоре покажем несколько аналогичных сервисов, чтобы сравнить с нашим. Если знаете другие хорошие примеры, дайте знать в комментариях!


Читать дальше →
Total votes 32: ↑27 and ↓5+22
Comments10

Лучшие работодатели в ИТ: первые результаты сервиса оценок на «Моем круге»

Reading time8 min
Views30K
Мы запускаем новый сервис оценок компаний на «Моём круге». В первой части нашего анонса мы рассказали, как устроен сервис, каковы его правила, как считаются оценки. В другой нашей публикации мы показали, чем он отличается от зарубежных аналогов.

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

Для начала, давайте взглянем на картину в целом. Мы обратили внимание, что чем меньше компания по числу сотрудников, тем выше оценки ей ставят. Поэтому, сравнивать компании друг с другом по оценкам имеет смысл как минимум в своей «весовой» группе.


Читать дальше →
Total votes 49: ↑43 and ↓6+37
Comments93

Information

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