TGViewer
Channel Public Channel
замогильный уровень разработки

замогильный уровень разработки

@funeral_driven_development

https://defcon.social/@igor_nevis
Subscribers
45
Photos
117
Videos
30
Links
44

Showing posts older than #26 · Back to latest

Older Posts 20 shown
Post #25 187
👻 Пока по гошке скучно привыкаю к синтаксису(в кодварс), расскажу как на текущем проекте происходит переезд функционала на отдельный сервис(опыт распила монолита в вакансиях).
Главная задача плавный переезд, что в данном случае означает возможность увеличивать количество данных юзеров которые будут обрабатываться на сервисе. Т.е. запустили сервис и решили попробывать что случится если мы 10 процентов юзеров переведом втуда, и так далее увеличивая до 100 полностью переехав.
🦴 Как бы пресетап, CQRS паттерн, не обазательно, но удобно одна точка входа/выхода по сути команду которая раньше записывала/апдейтила в базу переделываем на месседж в кафку(либо пост запрос как пример) который прочитает наш сервис.
🦴 Flipper - наш главный гем который дает на функционал включения/выключения фич и их процентов
🦴 Redis - тоже можно и другую базу, просто пример реализации с редисом

💀
Начинаем с Flipper,
 
Flipper.enable(:new_feature)
- для простоты пишем это в консоле, у нас появляется функионал
 Flipper.enabled?(:new_feature) 
- где так же вторым аргументом можно передать юзера, а так же
 enable_percentage_of_actors 
где вторым аргументом процент который мы хотим установить. Соответсвенно в кодовой базе это будет выглядеть как добавление ифов с
  Flipper.enabled?  
где в елсе будет старый функционал, а в ифе новый
💀

Мы делаем 2 способа отправки данных из монолита в сервис:
- непосредственно в том месте где логика текущего функционала, там где у нас commad или query, к сожелению у меня например не все так гладко добавляли не только в одном месте(команда/кверя), но в процессе можно отрефакторить "контрабандой" - потом будем на перформансе хвастаться. Так как у нас какойто процент юзеров, то для новых это тоже актуально Flipper будет для каждого 10 нового юзера делать enable наш фича флаг.
-второе место это джоба которая сразу отправит нам 10 процентов юзеров и так далее пока не перевезем всех.
💀подробнее про второе место, а именно джобу

actor = OpenStruct.new(flipper_id: “User;#{user_id}")
return if FeatureFlag.disabled?(:feature_flag, actor)

этот кусочек кода будет практически одинаковым для новых юзеров и для джобы
Но в джобе нам нужно запомнить данные которые уже отправились, потому что мы еще не раз ее запустим из-за того что запускаем по частям 10-20-30 и тд процентов юзеров(любых других данных), тут пригодится кэш
  Rails.cache.write("#{user_id}_specific_key", user_id, expires_in: 90.days 

и добавляем в джобу еще один иф
  

return if Rails.cache.fetch(“#{user_id}_specific_key”).present? 

после проверки Flipper.
Альтернативных гемов не встречал, мы его так же юзаем для любого другого нового функционала на монолите только для 100 процентов, таким образом если что то пошло не так можно не откатывать релиз а просто выключить в админке. Ну и так же АБ тестирование тоже с ним происходит, там уже тоже учитываются проценты.
  • 🔥 2
  • ⚡ 1
Post #24 394
☠️ сложна вырубай!
за 3 выходных закончил тур оф го, еще некоторые моменты посмотрю на ютубе поспрашиваю гугол и чат гпт, добавлю в ноуш интересные вещи, как например ссылка на github с простыми примерами.
Дальше попрактикуюсь в кодварс(до синего) и литкоде(на изи уровне), недолго, но надо привыкнуть к синтаксису уж очень другой чем в руби. Могли заметить в ноушне в списке ресурсов книгу from ruby to go так вот пока хз нужна ли она, неуверен нужен ли просто "транслейт". Пожалуй придумаю "субъективный" рейтинг "ресурсов" ноушн.
  • 🔥 4
Post #23
замогильный уровень разработки pinned «📌 безпроигрышная подписка - я пытаюсь свичнутьс в го вы получаете либо что надо учить/делать для успешного го собеса либо что не надо. Roadmap - тут сделаю ноушн который будет редактироваться по мере успешности/безуспешности собесов, там будут ресурсы для…»
Post #22 421
📌 безпроигрышная подписка - я пытаюсь свичнутьс в го вы получаете либо что надо учить/делать для успешного го собеса либо что не надо. Roadmap - тут сделаю ноушн который будет редактироваться по мере успешности/безуспешности собесов, там будут ресурсы для изучения и вопросы с собесов, если совсем попрет будут собесы записывать.
knocknevis on Notion GO LANG ROADMAP | Notion Made with Notion, the all-in-one connected workspace with publishing capabilities.
  • 🔥 5
Post #21 316
Пиздуем в гошку - да там больше вакансий, когда собесы хз, конечно чем быстрее тем лучше сначала но выходим из vim новогоднего запоя.
Наклевывается один как раз руби+го но там долго отвечает хр. Энивей я сторонник того что собесов должно быть дохуя, а не точечных "сопроводительных писем" и другого дрочева, так что надеюсь получится хотябы 3-4 в неделю.
  • 🔥 1
Post #19 236
литкод не пригодился, чел начал вещать на румынском попросил на инглиш вышло "сомнительн но окей"(с).
Ссылка на хакерранк. Задача вернуть среднее значение одного поля из жсон респонса, по поиску из двух полей. Потом добавить(либо сразу предусмотреть если умны) пагинацию в зависимости что пришло в ответ(тотал_пейджес). Пресетап метод getPulse(diagnosisName, doctorId) вернуть инт, по ссылке поймете что за поля. Можно гуглить задавать тупые вопросы и тд
Доп вопросы уже не по задаче но близко:
что делать если пагинацию применить нельзя а клиент хочу все и сразу, перевел в тему сервисов и предложил заюзать джобу которая клиенту(сервису) будет постом слать все что он просил сразу либо по частям в боди запихнется все.
авторизация для паблик айпи как бы сделал и юзал бы сторонние либы, сикрет_кей в хедере и проверка на милдваре плюс сделал бы сам без либ сказал даже сессий по факту нет хули там юзать.
вопрос про тенант апи, что должно делать мидлваре, вот тут незнаю потому что не работал - сказал что первый параметр строки может помогать с базой данных и мидлвара "готовит" базу либо данные из базы для работы, например у вас есть dickpick.com вы выросли и стало eu.dickpick.com us.dickpick.com и тд первый параметр(это не параметр я хз как правильно назвать) урла может быть частью уник_ид дикпиков а значит eu.dickpick.com будет работать только с eu_uuid юзерами либо в базе eu.
  • 🌭 1
Post #18 182
Сегодня в выходной день 🤡 прошелся по задачам тут https://seanprashad.com/leetcode-patterns/ , поставив фильтр oracle. В надежде что в понедельник попадутся те же. Гугл говорит еще возможны варианты написать контроллер или экшн, завтра посмотрю детали что может быть. Хотел выразить крайнее негодование этих алгосов, как говориться — знания в стол, последний год собесы по руби где просили алгосы 1, это будет второй.
Leetcode Patterns A curated list of LeetCode questions grouped by pattern to help you ace coding interviews.
Post #17 174
15 день адвент оф коде
https://adventofcode.com/2023/day/15
на вход просто через запятую символы по 2-3
задача
Determine the ASCII code for the current character of the string.
Increase the current value by the ASCII code you just determined.
Set the current value to itself multiplied by 17.
Set the current value to the remainder of dividing itself by 256.

ну все проходимся по каждой стринге предварительно вход разделив запятыми и применяем эти манипуляции.
Post #16 136
так как уровень адвент оф кода поднялся дымом из трубы крематория дахау, мой уровень не тянет сложность задач. Но мне шепнули что сегодня в честь сотоны легкая задача, вечером будет.
А в понедельник меня ждет обсер на собесе с алгосиками, тоже разберу(порешаю за 4 часа вместо 20 минут) в скором времени после.
  • 🔥 1
Post #14 137
сразу день 8
https://adventofcode.com/2023/day/8
вкратце смотрим скриншот ниже
LR - это лево право в задаче таких овер 100 могут быть в любом порядке. да логично это шаги налево направо
а ходить будем по структуре ниже, соответственно L это выбор варианта первый в скобочках R это выбор варианта второго в скобочках
стартуем с ААА заканчиваем ZZZ посчитать шаги, если LR шаги закончились идем с по кругу с первого
собственное решение в самой задаче, делаем хеш из структуры в условии ключ это значение до равно а значения ключа это массив того что в скобочках
циклом бежим по хешу, с переменной которая инкрементируется каждый круг цикла выходим когда нашли zzz
Post #13 106
адвент оф код не будет ловите хуергу
Post #12 111
In the above example, card 1 has five winning numbers (41, 48, 83, 86, and 17) and eight numbers you have (83, 86, 6, 31, 17, 9, 48, and 53). Of the numbers you have, four of them (48, 83, 17, and 86) are winning numbers! That means card 1 is worth 8 points (1 for the first match, then doubled three times for each of the three matches after the first).

Card 2 has two winning numbers (32 and 61), so it is worth 2 points.
Card 3 has two winning numbers (1 and 21), so it is worth 2 points.
Card 4 has one winning number (84), so it is worth 1 point.
Card 5 has no winning numbers, so it is worth no points.
Card 6 has no winning numbers, so it is worth no points.
Post #11 100
внезапно поттэрн мэтчинг в четвертом дне(круге ада)
мое любимое, пока легко
в след посте будет картинка все поймете сама задача побуждает так поступить
есть такая строка "41 48 83 86 17 | 83 86 6 31 17 9 48 53" - суть как в лотто, достать 41, 48, 83, 86, 17 которые и слева и справа
*head, "|", *tail или как говорят программисты * хуй, "|", *жопа или как говорят бадибилдеры *жопа, "|", *бутылка
ну вообщем гуглите паттерн матчинг пиздатая тема потому что пытаюсь в прод тулить каждый месяц и все реджектят
ладно к задаче
у нас получается head это "41 48 83 86 17" и  tail это "83 86 6 31 17 9 48 53", ну собственно в руби это делается (head & tail) противоположность вычитанию массивов, tail- (tail-head) то же самое. Скорей всего логическое И есть в других языках тоже. Далее по условию надо посчитать сколько очков набрали с одной такой строки(их снова дофига) очки это число фибоначи со второй итерации, обычно оно идет 1 1 2 3 5 8, мы первую не считаем и получается 5 совпадений это 8 очков реализуйте это с помощью чат гпт никогда вам фибоначи больше не надо будет считать.
Если спросят на собесах реализовать спросите "нахуй вы мне звоните" не стоит туда идти.
ну собсна все день легкий поэтому даже сделаль.
Post #10 87
в рабочие рот ебал это делать, до следующих выходных если не нальют, а если нальют то до березня
Post #9 131
Post #8 125
третий день 1 задача (и последняя)
сложно описать требования лучше зайдите https://adventofcode.com/2023/day/3
вкратце, ниже будет картинка - числа в зачет те которые соседтсвуют с символами кроме точек(в том числе вверх вниз и по диагонали)
из картинки ниже это все кроме 58 и 114
остальные надо сложить.
кстати у каждого свой набор исходных данных в ответ принимается только сумма, данные это примерно как на картинке только примерно 150 строк по 150 сабстрингов ну вы поняли не хочу что путались символы из условия с символами вообще.
=======================================================================
предусловие от меня стринга это массив сабстрингов каждый это 1 элемент, если в вашем языке не так соболезную
так вот если учесть предусловие у нас получается матрица 150 на 150(примерно), и мы можем найти "координаты" индексы спецсимволов
далее по часовой или по обратному направлению как хотите, ходим по соседним координатам в поисках цифр
но записываем только координаты первых цифр! на "внутреннем"(тот который индекс в строке) индексе идите назад пока не закончатся цифры и последний индекс на котором начинается наше число записываем
второе предусловие от меня(руби) при приведении строки в число у нас выводится первое число игнорируя последующие символы и цифры.
либо гугли самый сильный регулярка которая ловит первые цифры, даже если в строке их несколько вы будете знать координаты начала.
ну и все считаем сумму тушим джопу
  • 😱 1
Post #7 87
второй день 1 задача
https://adventofcode.com/2023/day/2
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green

снова задрачить регулярки хотя я погорячился с задрачить отделить цифры от букв так назовем.
надо просуммировать номера игор(game) но не все
а вот условие если blue < 14, green < 13, red < 12
т.е. в примере 3 и 4 не катит, суммируем 1 2 5
регулярка которая ищет паттерн цифра + пробел + цвет и отдает цифру

```/(\d+) blue/ ```
записываем в переменную
проверяем что влазим в 14/13/12 соответственно,
если влазим
/Game (\d*)/
аналогичная регулярка для игор
Post #6 83
програмисты чат делают
  • 🔥 2
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →