Viacheslav
Крылатый
@fvnever кроши
Крылатый
Спасибо.
Vasily
Обращайся
Крылатый
Vasiliy
😂😂😂😂😂
Vasiliy
https://www.youtube.com/watch?v=HzbH2UfArp4&feature=share
Iskander
Вопрос к старшим товарищам. Вы бы согласились променять смузи-стартап с bleeding edge технологиями на энтерпрайз-банк с легаси, если вам предложат оклад х2 от текущего?)
Edward
Конечно лол
Doge
Roman
Iskander
Со мной на прошлой неделе связался местный банк, квази-госсектор, предложили должность тимлида и задачу - переписать легаси проект с вебформ и хранимок. Там есть редкие технологии, по которым у меня имеется экспертиза. Своя команда, полный выбор технологии и стека. Но да, строгий рабочий график, бюрократия, отчёты, ну и чтобы понять логику, придется окунуться в вебформы и хранимки
Iskander
Ну и да, оклад очень-очень приятный
Iskander
Хз, стоит ли игра свеч
Iskander
На текущем месте тоже приятно
Iskander
Опять же, сказали, что если команда согласится, то хоть на f#-пе пишите 😉
Vasily
Чтобы работать в банке, надо иметь специфический склад характера
Iskander
Vasily
Например?)
Например, там много людей, уверенных в собственной правоте
Roman
Vasily
Плюс инерция мышления и боязнь проебать бабки
Vasily
Плюс все предельно бюрократизировано
Roman
Vasily
Vasily
Ну и в целом, если это банк, там скорее всего нет культуры разработки
Roman
Vasily
Roman
Iskander
Я так понимаю, это своего рода кот в мешке ?) Может повести и будет возможность решать интересные задачи в банковском секторе, а может не повезти и погрязнуть в бюрократии?)
Anatoly
Iskander
Anatoly
То есть, если они честно помножат на два, то, как минимум, на ближайшие пару лет я схожу. Чтобы решить конкретные задачи
Igor
ха, я вспомнил, как мне один аудитор рассказывал как они в сбере работали, там у них стояли везде камеры и они ходили курить всегда с папками под мышкой, создавали вид бурной деятельности))
Roman
Диёр
Ivan
Roman
@omgszer ты любишь такое
wfs
|> List.map (fun x -> x.storage)
|> List.map (Persistence.getId)
|> filter isSome
|> List.map value
|> List.map (sprintf "wf_id=%s; ")
|> String.Concat
Ayrat
Омойбог нет
Vasily
Выглядит прикольно
Roman
value это своя версия Option.get
Anatoly
Реактивненько
Vladislav
Igor
Doge
Roman
Уже переписал на Seq?
Ща перепишу, хотя не знаю, зачем. Это все равно в конечном счете не изменит общую картину
Ayrat
|> filter isSome
|> List.map value
кстати на choose id заменяется
Roman
Ayrat
но да, ядерный пиздец
Ayrat
кстати
Ayrat
|> List.map (Persistence.getId)
|> filter isSome
|> List.map value
заменяется на
choose Persistence.getId
Ayrat
ну то есть нет смысла писать
map f
choose id
Ayrat
можно сразу choose f
Roman
кстати да
Roman
есть у нас еще такое сокровище:
type UniqueId = { id : Guid }
with
member this.ToShortId = this.ToString() |> shashLock
override this.ToString() = this.id.ToString()
static member TryParse (x: string) : Option<UniqueId> =
try
{id = Guid.Parse x} |> Some
with
| ex -> None
Ayrat
Строго типизированный гуид? Как у вас всё интересно
Ayrat
не, я такие делал, но или через ДУ
Ayrat
или через UMX
Ayrat
до рекордов ни разу не доходил
Roman
Vladislav
Vladislav
ор
Ayrat
зачем?
ну чтобы гуиды одного провайдера данных с другими не перепутать, т.к. в пайплайне были два источника данных вперемешку
Ayrat
а вот у спортрадара гуиды вообще сотни разных видов были
Roman
ааа
Doge
зачем?
Очень удобно типизировать Id, я так и в обычном шарпе делал
Ayrat
типа - это гуид команды, а это игрока, а это гуид матча, И НЕ ПЕРЕПУТАЙ СУКА ГДЕ КАКИЕ
Roman
понял, просто у нас-то везде этот юник айди
Doge
Roman
ну да, у нас нет разделения, что для таких сущностей этот айди, а для других другой тип.
Roman
Везде повсеместно UniqueID
Doge
Roman
я полагаю, это все ради этого метода ToShortId, который просто можно было сделать функцией отдельно стоящей
Roman
или экстеншном
Roman
так, я ща залью одну хуйню, и мне нужна помощь в том, чтобы понять, зачем этот код нужен
Roman
лол, паста даже триггернула антиспам:
https://pastebin.com/Q7iC5hsd
Ayrat