Умпутун
👤 SpeakerAppearances Over Time
Podcast Appearances
Здесь можно написать такой шопинг-карт, который будет не только шопинг-карт удалять, а что угодно удалять, правильно? У нас же дженерики есть. Чего будем останавливаться только на этом?
Здесь можно написать такой шопинг-карт, который будет не только шопинг-карт удалять, а что угодно удалять, правильно? У нас же дженерики есть. Чего будем останавливаться только на этом?
У меня был недавно, Леха, почти то же самое, что и рассказываешь. У меня есть система, которая занимается тем, что достает файлы из определенного места, потом их как-то парсит, как-то обрабатывает, какие-то результаты куда-то пишет. Ну, как мы все пишем, правильно? JSON-ы перекладываем. Но в моем случае там не JSON-ы, а real-time файлы.
У меня был недавно, Леха, почти то же самое, что и рассказываешь. У меня есть система, которая занимается тем, что достает файлы из определенного места, потом их как-то парсит, как-то обрабатывает, какие-то результаты куда-то пишет. Ну, как мы все пишем, правильно? JSON-ы перекладываем. Но в моем случае там не JSON-ы, а real-time файлы.
И вот появилась необходимость системы, которая умела обрабатывать опции. Это такой очень специальный вид данных, которых много, которые тяжелые. А у них появился новый вид данных, который типа состояние вот этих опций на конец дня. То есть если обработка опций это инкрементальные маленькие файлы, которые там обложены абсолютно оптимально всем на свете, то вот этот файл конца дня, он типа CSV.
И вот появилась необходимость системы, которая умела обрабатывать опции. Это такой очень специальный вид данных, которых много, которые тяжелые. А у них появился новый вид данных, который типа состояние вот этих опций на конец дня. То есть если обработка опций это инкрементальные маленькие файлы, которые там обложены абсолютно оптимально всем на свете, то вот этот файл конца дня, он типа CSV.
И его там 2 мегабайта размером. Его достал 2 мегабайта, 2 миллиона айтемов внутри. То есть фигня вопрос. Он больше, чем 2 мегабайта по размеру. И вот я начал думать, как же его к этой системе прикрутить. Она типа все это делать уже умеет. Она умеет взять данные, она умеет эти данные засунуть в какой-то парсер, она умеет из этого парсера достать и буферизированно записать в Mongo.
И его там 2 мегабайта размером. Его достал 2 мегабайта, 2 миллиона айтемов внутри. То есть фигня вопрос. Он больше, чем 2 мегабайта по размеру. И вот я начал думать, как же его к этой системе прикрутить. Она типа все это делать уже умеет. Она умеет взять данные, она умеет эти данные засунуть в какой-то парсер, она умеет из этого парсера достать и буферизированно записать в Mongo.
Думал-думал, написал прототип, мне вообще не понравилось. То есть я немножко сделал более вот этот код-дженерик, который умел все остальное делать. И он стал и это уметь делать. Но мне так это не понравилось, что я просто в этом же проекте написал другой CMD, то есть другой бинарник делается, который использует те же самые базовые.
Думал-думал, написал прототип, мне вообще не понравилось. То есть я немножко сделал более вот этот код-дженерик, который умел все остальное делать. И он стал и это уметь делать. Но мне так это не понравилось, что я просто в этом же проекте написал другой CMD, то есть другой бинарник делается, который использует те же самые базовые.
Файл трансфер, он же один и тот же остался, по SFTP по-любому одинаково получаешь. В S3 одинаково кладешь, правильно, ему-то все равно, что ты кладешь. Просто вокруг этого написал новый бинарник, который просто для этого специально запускается, живет в одной и той же кодовой базе, но по сути ничего с логикой предыдущего решения общего не имеет.
Файл трансфер, он же один и тот же остался, по SFTP по-любому одинаково получаешь. В S3 одинаково кладешь, правильно, ему-то все равно, что ты кладешь. Просто вокруг этого написал новый бинарник, который просто для этого специально запускается, живет в одной и той же кодовой базе, но по сути ничего с логикой предыдущего решения общего не имеет.
Или у тебя прям две разные функции? Ну, не-не, SFTP это как бы, ну, package, internal package для всего этого хозяйства, да. Внутри у этого самого кода такой мини-монорепа получился для двух проектов, которые примерно про одни данные, но делают это разными двумя бинарниками.
Или у тебя прям две разные функции? Ну, не-не, SFTP это как бы, ну, package, internal package для всего этого хозяйства, да. Внутри у этого самого кода такой мини-монорепа получился для двух проектов, которые примерно про одни данные, но делают это разными двумя бинарниками.
Я уже научился бороться. Я напишу в этом случае, если мне надо было HTTP файл-трансфер, и написал бы его внутри вот этого нового пакета, который я сделал. Внутри этого нового модуля, который под модуль того модуля. И нормально будет. Не парит меня то, что это не дженерик решения будет. То есть ты хочешь сказать, что я Дзен еще не познал, да? Нет, ты еще молодой. Ты мало еще с Го живешь.
Я уже научился бороться. Я напишу в этом случае, если мне надо было HTTP файл-трансфер, и написал бы его внутри вот этого нового пакета, который я сделал. Внутри этого нового модуля, который под модуль того модуля. И нормально будет. Не парит меня то, что это не дженерик решения будет. То есть ты хочешь сказать, что я Дзен еще не познал, да? Нет, ты еще молодой. Ты мало еще с Го живешь.
А потом, ты представляешь, как потом? Ты подумай о будущем. Вот пришел ты через 7 лет на этот код смотреть. И ты не борешься через вот эти ифов, которые, ну, так или иначе все это в вифы упрется, правильно? Такая стейт-машина ифами сделана или свитчами, или еще чем-то. А вот если мне параметр передали вот такое, действую вот так, а у тебя этого всего нет.
А потом, ты представляешь, как потом? Ты подумай о будущем. Вот пришел ты через 7 лет на этот код смотреть. И ты не борешься через вот эти ифов, которые, ну, так или иначе все это в вифы упрется, правильно? Такая стейт-машина ифами сделана или свитчами, или еще чем-то. А вот если мне параметр передали вот такое, действую вот так, а у тебя этого всего нет.
У тебя вообще другая логическая флоу для другого логических процесса. Это совершенно прекрасно. Я как человек, который возвращается в свой код десятилетней давности, тебе скажу, что это абсолютно прекрасно, когда не надо думать о том, а почему, собственно, здесь происходит вот такая странная развилка.
У тебя вообще другая логическая флоу для другого логических процесса. Это совершенно прекрасно. Я как человек, который возвращается в свой код десятилетней давности, тебе скажу, что это абсолютно прекрасно, когда не надо думать о том, а почему, собственно, здесь происходит вот такая странная развилка.