Roman
супер специфично
Alexander
свой blockchain с proof-of-stake и proof-of-work
Alexander
ну DSL из которого делать си код - явление частое, и DSL в целом
Vladislav
Vladislav
Ага, вот этот.
Vladislav
(Правда не знаю про PoW, вроде PoS)
Alexander
ну я могу ошибаться
Alexander
у меня ж память дырявая
Alexander
у Касперского сишный код для защиты всякого софта (и свое ядро или патчи, для защищенных систем)
Alexander
но тут опять же есть люди, которые расскажут гораздо подробнее точнее и интереснее
Alexander
ладно все хватит мне делать вид, что болит голова, работать пора
Зигохистоморфный
кана
Ну там такое себе наверное, первый опыт:
https://github.com/kana-sama/tournament/blob/master/src/Tournament.hs
кана
Вот задача:
As a gaming website we want to implement a tournament service with a feature called "Back a friend".
Each player holds certain amount of bonus points. Website funds its players with bonus points based on all kind of activity. Bonus points can traded to goods and represent value like real money.
One of the social products class is a social tournament. This is a competition between players in a multi-player game like poker, bingo, etc)
Entering a tournament requires a player to deposit certain amount of entry fee in bonus points. If a player has not enough point he can ask other players to back him and get a part the prize in case of a win.
In case of multiple backers, they submit equal part of the deposit and share the winning money in the same ration.
From a technical side, the following API service with 5 endpoints should be implemented
#1 Take and fund player account
GET /take?playerId=P1&points=300 takes 300 points from player P1 account
GET /fund?playerId=P2&points=300 funds (add to balance) player P2 with 300 points. If no player exist should create new player with given amount of points
#2 Announce tournament specifying the entry deposit
GET /announceTournament?tournamentId=1&deposit=1000
#3 Join player into a tournament and is he backed by a set of backers
GET /joinTournament?tournamentId=1&playerId=P1&backerId=P2&backerId=P3
Backing is not mandatory and a player can be play on his own money
#4 Result tournament winners and prizes
POST /resultTournament with body in JSON format
{"tournamentId": "1", "winners": [{"playerId": "P1", "prize": 500}]}
#5 Player balance
GET /balance?playerId=P1
Example response: {"playerId": "P1", "balance": 456.00}
#6 Reset DB.
GET /reset
Should reset DB to initial state
Full use case example:
Prepare initial balances
GET /fund?playerId=P1&points=300
GET /fund?playerId=P2&points=300
GET /fund?playerId=P3&points=300
GET /fund?playerId=P4&points=500
GET /fund?playerId=P5&points=1000
Tournament deposit is 1000 points
GET /announceTournament?tournamentId=1&deposit=1000
P5 joins on his own
GET /joinTournament?tournamentId=1&playerId=P5
P1 joins backed by P2, P3, P4
GET /joinTournament?tournamentId=1&playerId=P1&backerId=P2&backerId=P3&backerId=P4
All of them P1, P2, P3, P4 contribute 250 points each.
P1 wins the tournament and his prize is 2000. P2 P3 P4 they all get 25% of the prize.
POST /resultTournament with a POST
{"winners": [{"playerId": "P1", "prize": 2000}]}
After tournament result is processed the balances for players must be as specified below
P1, P2, P3 - 550
P4 - 750
P5 - 0
Implementation must guarantee that
no player balance ever goes below zero
no point is lost due to service outage
Endpoints 1-4 must return HTTP status codes only like 2xx, 4xx, 5xx
Endpoints 5 must return json document in the format on the example above
Your solution must be delivered as a source code on github / bitbucket and a docker compose script (use 1 free repository at hub.docker.com to deploy container image)
You can use whatever programming language and any open source data storage.
Feel free to ask for details.
Mikhail
Все вакасии по haskell начинаются с "A minimum of 2-3 years of Haskell development experience", а если у тебя его нет, то как быть
Dmitry
много людей хотят писать на хаскелле и собрать небольшую команду проблем нет
Dmitry
набрать человек сто и устроить новый ЕПАМ но на хаскелле - да, сложно
Dmitry
наверное. не пробовал
Dmitry
в любом случае, это всего лишь +1 язык программирования. никто ж не устраивает драм когда нужно выучить SQL или там свифт
Dmitry
но на практике никто не берет любого индуса, а устраивают длительные мозговыносящие собеседования и дают задачи
Alexander
ну вон у @voidlizard и @jagajaga надо спрашивать, у них наверно самые большие команды
Alexander
не считая банков
Dmitry
на фоне всего этого язык это мелочь, кмк
Alexander
но людей из банков тут нет
Alexander
в S&C команды по 50 человек хаскелистов, но это другой мир
Alexander
а вот такого не надо :P
Alexander
ещё задемпингуете, и з/п понижать будут
Alexander
только не рассказывай им, что в haskell take 1 . sort будет иметь линейную или логарифмическую сложность в зависимости от имлементации sort =)
Alexander
а то набегут
Arseniy
Зигохистоморфный
ха-ха https://www.kickstarter.com/projects/andanthor/scalaquest-a-game-to-learn-scala
Cheese
Cheese
0 опыта по трудовой книжке, но хорошего знания
Roman
Cheese
да, меня же наняли
Cheese
и многих других
Cheese
опыт можно набрать на петпроджектах
Alexander
А что вам интересно?
ну вон вопрос был как жизнь с большой командной, у нас то людей чуть меньше
Arseniy
Misha
Дружный коллектив :)
где-то читал, что типа все хаскелисты считают себя шибко умными и частенько тянут на себя одеяло, и это дескать не очень круто для командной работы
Misha
и никто не хочет писать бойлерплейт, даже когда надо
Dmitry
50 человек тянут одеяло в разные стороны, epic
Dmitry
я бы сказал так, что любой русскоязычный считает себя самым умным, особенно - если он программист
Евгений
Хорошо натянуто будет зато
Евгений
Любой любой считает себя самым умным
Arseniy
Misha
круто
Misha
с другой стороны, наверное и правда чаще умные, чем наоборот
Alexander
@Vladimir_Sentsov просто обычно вакансии на haskell нужно искать не в hh.ru и т.п.
Alexander
чтобы получить максимальный отзыв людей проще написать в community, т.к. тогда отклик будет гораздо выше
Alexander
поэтому гораздо проще написать в twitter, gitter, telegram
Alexander
ещё и reddit или angel.co
Alexander
все равно не все хацкелисты читают hh.ru и т.п. а эти ресурсы все же читают
Aragaer
из перечисленного только про твиттер и телеграм слышал
Alexander
https://gitter.im/ruHaskell/forall , не слышать reddit это странно
Aragaer
а, на гиттере тоже регался.
Aragaer
про реддит иногда слышу, но до сих пор не понял, что это и о чем
Евгений
Да, поясните за реддит. Вдвойне непонятно как там работу искать, он же не русскоязычный
Donat
Разве там нет англоязычного сабреддита? Когда последний раз смотрел был.
Arseniy
Евгений
Это причина в 2017? :/
Ну тип странно искать работу в ресурсе, где вероятность найти работодателя в твоём регионе меньше сотой доли процента
Arseniy
Нынче большинство работодателей имеют remote вакансии.
Alexander
там есть русский сабреддит, но там 1.5 вакансий было
Alexander
сейчас on-site вакансии это скорее исключение
Евгений
Arseniy
Arseniy
Извините, не удержался.
Евгений
Тип кто-то кроме школьников и глубоких замкадышей ещё ведётся на это в 2017'ом? Не, серьёзно
Vladislav
remote /= freelance
Arseniy
Евгений
Ну один хуй, ты сидишь дома без трудовых прав
Arseniy
У меня все сотрудники remote, ни одного фрилансера.
Евгений
Монополист ли покупатель твоего продукта или нет как-то похуй
Vladislav
"трудовые права" это для той категории людей, которые при устройстве на работу заранее уже думают, как и с кем судиться будут? (права отстаивать, что уж там)
с дураками не связываться надо и все
Kirill
Евгений
Arseniy
Евгений
Не одобряю нетрудовые доходы, не люблю рабовладельцев и спекулянтов.
Когда-то в 60'ые это было нормой, а теперь ПОСТЫДНО.