powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сделал платформу с задачками, зацените :)
17 сообщений из 17, страница 1 из 1
Сделал платформу с задачками, зацените :)
    #39303434
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил тут склепать платформу с задачками по программированию, но отличную от существующих.

http://frocate.com/

Обычно в онлайн платформах есть 2 варианта тестов по программированию: либо multiple choice вопросы, либо олимпиадные задачки. Вот я решил предложить альтернативу и делать более реалистичные задачки, типа как домашнее задание до/после собеседования бывает - некие более менее реалистичные требования и возможность использовать любые библиотеки.

Пока задачки предполагалось использовать для тренировки/обучения и как вариант тестового задания в рамках собеседования.

Собственно задачка пока готова только одна - написать приложение, которое принимает http запросы и дергает third-party сервис. Тема - денежные переводы. Подразумевается, что у нас есть legacy сервис, который позволяет изменять баланс счета, а нам нужно сделать сервис, который обернет такой АПИ в некоторое подобие транзакций и сможет делать retry/rollback.

В минимальном варианте можно сделать часа за 2, оптимальный вариант может занять часов 15. Плюс, если конкретно такого типа задачки никогда не делали, то смело умножайте время на 5 :)

Платформа пока еле работает, поэтому ошибки могут быть..

Любой фидбек приветствуется - от общих мыслей насчет осмысленности такого подхода, до найденных косяков и даже (!!!) собственно попыток решить задачку :)

Let's roll!
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39303442
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
че то я сомневаюсь в целесообразности этой затеи, ведь те кто уже может-умеет делать такое, то врядли будут себя на это растрачивать, а те кто не умеет, врядли будут браться. разумеется, это только имхо :)
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39303461
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174че то я сомневаюсь в целесообразности этой затеи, ведь те кто уже может-умеет делать такое, то врядли будут себя на это растрачивать, а те кто не умеет, врядли будут браться. разумеется, это только имхо :)

Любое имхо пригодится :)

Сомнения понятны и вполне обоснованы, поэтому думаю стоит добавить небольшое пояснение на этот счет.

Я предполагал 2 юз кейса:

1. Начинающие (кто еще не работал программистом или работает недавно) порой спрашивают "как бы понять - я разрабатывать то умею/возьмут меня на работу или надо что-то срочно подтягивать?". Вот задачки, которые в итоге вам автоматически выдают результат в каком-то виде в этом случае помогают, решил задачку - можешь писать код, нет вопросов, не решил или как-то неожиданно много времени заняло - можно разобраться почему.

2. В рамках трудоустройства порой дают "домашнее задание" написать какую-то программку. Хотят посмотреть как человек пишет код. Проблема в том, что кандидат код прислал, там несколько тестов есть, но не на все кейсы, непонятно - программа вообще насколько работает. Да и составлять такие задания не всегда легко - можно сочинить слишком простую/сложную/непоказательную задачку. В общем база таких задачек не помешает.
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39303502
uid unique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rrrrrrrr,

Вопрос по обработке ошибок - имеет ли смысл выносить на траспортный уровень (http) сообщения типа NOT_ENOUGH_MONEY?

Получается обработчик бизнес логики завязан на транспортную ошибку http 400. Может быть имеет смысл оставить на http уровне все что относиться к низкому уровню http (сервису капут, запрос неправильный или не туда, упало все и тд) а NOT_ENOUGH_MONEY вернуть в http 200 в виде поля json объекта?

{
result: ERROR
code: 123
message: NOT_ENOUGH_MONEY
}

Сегодня это http запрос с параметрами, завтра это будет веб сервис, потом это будет веб сервис с аутентикацией по сертификату и обработка ошибки бизнес уровня потащится в обработчик транспортного уровня. Или новая ошибка появится и придется модуль с транспортом переписывать. Или боже упаси один транспортный модуль в разных бизнес задачах в одной NOT ENOUGH MONEY а в другой NOT ENOUGH PEOPLE. Или это сторонний http клиент. И junit тяжелее делать когда транспорт слит с бизнес логикой.

В случае возврата ошибки уровня бизнес логики в 200 response code в виде объекта расширение функционала будет проще и без разницы какой транспорт. Хоть на MQ Series переноси - вопрос 5 минут.
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39303503
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне нравится! добавьте русскую версию - потянутся школьники из РФ )
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39303749
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uid uniquerrrrrrrr,

Вопрос по обработке ошибок - имеет ли смысл выносить на траспортный уровень (http) сообщения типа NOT_ENOUGH_MONEY?

В случае возврата ошибки уровня бизнес логики в 200 response code в виде объекта расширение функционала будет проще и без разницы какой транспорт. Хоть на MQ Series переноси - вопрос 5 минут.

Хороший поинт, спасибо, поправлю на днях, правда немного в другом виде, наверное.

Конкретно в данном случае я не думаю, что http коды смешивают бизнес-логику и транспорт, ведь логично вынести транспорт в отдельный класс и дергать

Status performDebitOperation()

Которая будет возвращать enum с NOT_ENOUGH_MONEY и другими ошибками. То есть, например, класс-транспорт будет мапить http code + header value на Status.

Другое дело, что наличие кода 400 в условии никакие доп. скиллы не проверяет, но добавляет немного работы, что не является целью задачки, а значит этот момент действительно можно убрать и всегда возвращать 200. Я упустил этот момент изначально.

Насчет json все хитро. Я думал делать задачку близкую к реальности, грубо говоря завтра будешь писать настоящий код, который twitter вызывает и он вернет json, значит в задачке тоже неплохо бы json. Однако в задачке мы билдим jar-with-dependencies, а значит json библиотеку нужно паковать, что увеличивает размер бинарника. Хотелось бы чтобы он не стал огромным, тогда его можно сохранять на память, вместе с результатами билда :)

Конкретно json-парсер наверное не занимает много места и его можно добавить, но возможно достаточно просто возвращать значение enum в теле запроса? Всем проще.
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39303798
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304061
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rrrrrrrr,

красиво и понятно
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304084
uid unique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rrrrrrrrКонкретно json-парсер наверное не занимает много места и его можно добавить, но возможно достаточно просто возвращать значение enum в теле запроса? Всем проще.
Можно и так и сяк, путей много но желательно упростить отладку, уменьшить дублирование кода и делать отдельные хорошо отлаженные модили с повторным использованием. Отладка кода (и создание тестов) упрощается - за транспорт отвечает внешняя библиотека или отдельный отлаженный модуль, проверка нужна только для бизнес логики.

При выполнении задачи у меня мысли о том не как написать а как расширять и поддерживать в будущем (работать с support division, объяснить как добыть нужную информацию, как понять в чем проблема так как у меня может не быть доступа к системе заказчика) и расширять текищий функционал с минимумом переделок и хорошим покрытием тестами, желательйо чтоб новый код не ломал сильно старые тесты (рефакторинг с умеренными усилиями и расходом времени). К примеру, у меня на проектах счет на тесты удет на сотни (больше 500+) частъ из них интеграционные и медленные, сборка проекта может делаться полчаса если врубать все тесты и если из за добавки кода придется тесты переделывать, то процесс затянется значит нужно новое (бизнес логика) накладывать наверх работающего базиса (транспорт). Сделал базис, отладил и не трогай его.

PS json парсеры простые и их масса, можно добавить gson или jackson с примером кода и dependency блоком в условие.
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304087
uid unique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон за опечатки, клавиатура фонетическая, путаю буквы.
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304173
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно подробнее? Что использовали для создания?
Мне нравится оформление и навигация просто :)
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304196
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicА можно подробнее? Что использовали для создания?
Мне нравится оформление и навигация просто :)
Bootstrap же
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304331
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczNixicА можно подробнее? Что использовали для создания?
Мне нравится оформление и навигация просто :)
Bootstrap же

Да, это конечно же bootstrap (использованный в стиле my first webapp). В остальном все тоже стандартно: jetty, docker, jsp.
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304337
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Герой дняrrrrrrrr,

красиво и понятно

Спасибо, стараемся :)

Пока начальный фидбек такой, что все хотят симпатичную картинку и низкий порог вхождения. Поэтому в ближайшее время разнообразим описание задачки картинками, спрячем большие объемы текста в требованиях под кат, чтобы не отпугивать пользователей и немного доработаем формат результата - там будут более подробные описания кейсов и референсные значения для BAD/GOOD/EXCELLENT результатов, чтобы легче было понять чего от вас хотят.
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304346
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uid uniqueОтладка кода (и создание тестов) упрощается - за транспорт отвечает внешняя библиотека или отдельный отлаженный модуль, проверка нужна только для бизнес логики.


Да мне кажется нет разницы. Вот берете вы http библиотеку, какой-нибудь Unirest например, вы можете ее дергать прям из кода - Unirest.get() и прям тут же парсить респонс с кодами, хедерами и json-контентом, а можете обернуть в отдельный класс и дергать BalanceServiceHttpImpl.performDebit(), который скроет все эти штуки. Замокали его для юнит тестов и нет разницы какой транспорт.

uid uniqueПри выполнении задачи у меня мысли о том не как написать а как расширять и поддерживать в будущем (работать с support division, объяснить как добыть нужную информацию, как понять в чем проблема так как у меня может не быть доступа к системе заказчика) и расширять текищий функционал с минимумом переделок и хорошим покрытием тестами, желательйо чтоб новый код не ломал сильно старые тесты (рефакторинг с умеренными усилиями и расходом времени).


Я думаю это слишком out of scope, хотя имхо, в этой конкретной задачке подобные моменты должны несильно влиять на код: базовая модульность всегда пригодится, а продвинутые вещи типа сложной системы мониторинга, ведения истории операции, автодетекта перформанс проблем тут не требуются (мне кажется их вообще нельзя проверить на проекте длинной меньше месяца).
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39304364
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор как понять в чем проблема так как у меня может не быть доступа к системе заказчика
))))
...
Рейтинг: 0 / 0
Сделал платформу с задачками, зацените :)
    #39328312
rrrrrrrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Между тем - новая задачка и немного обновленный UI по части результатов. Кто еще не успел попробовать - вперед :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сделал платформу с задачками, зацените :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]