Кальянная программистов
202 subscribers
105 photos
14 videos
2 files
75 links
Сообщество прогеров из кальянки. 🇷🇺🇺🇸
Нежным не входить‼️ @programmers_hookah_chat
@shinkevichdev
Download Telegram
Кальянная программистов
Руслан кстати этот код порефакторил с помощью богомерзких великолепных Монад 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

Слышал кто про Талеба?
[ENGLISH]
Наткнулся на этого чувака “when your friend is a salesman” и не могу перестать смеяться 🤣

Я теперь понимаю что чувствуют некоторые мои друзья при общении со мной🙈

@netWorkStorm @sdaaaaaaasad «Отлично, понял тебя! А что ты имеешь в виду под словом Мышление

Does that sound about right?
О чем я в сторис говорил - в общем я попал на особоый такой маркетплейс авито по услугам для рекрутеров.

Название не даю, тк я возможно систему сломал чтобы туда попасть.

Бомжам криптанам не надо облегчать жизнь.

Зацените ребят, вот так рекрутеры заходят на эту биржу и смотрят кого им кому можно продать и почем.

Куплю фронтендера синьора за 10% + печеньки.


PS ну а я ща пойду это исследовать чтобы себе работу искать
😁5🌚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 разраба для одной конторы и попросил чекнуть. Я решил сделаем в формате стрима онлайн код ревью.


Что?
Стрим с онлайне код ревью тестового задания Go бекенд.

Когда?
Суббота 3 мая 23:00 МСК GMT+3

Сколько?
Не оч долго, самое тестовое небольшое. А дальше афретпати для желающих, открытый микрофон все как мы любим. Классический микро-стрим.

Где?
Здесь, в телеге.

Че по крысам? 🐀
Крысы приветствуются, как и хомяки и прочие твари.

Зачем?
Потому что надо.

СТРИМ СУББОТА 23:00 МСК GMT+3
СТРИМ СУББОТА 23:00 МСК GMT+3
СТРИМ СУББОТА 23:00 МСК GMT+3


Придешь? 👇
51👍1
Live stream scheduled for
Live stream finished (13 hours)
Кальянная программистов
Live stream finished (13 hours)
Всем салат пацаны! Wasap?

Отличный микрострим, по классике.

Я записал первый час - где мы делали код ревью.
Спасибо легендам @expatponevole @netWorkStorm @t1mqa_go @dsadasdasdasdasdsadsa за поддержание стрима когда я ушел кушать и спать

Куда выкладывать запись разбора тестового?
🔥6👍1
С большим опозданием - с Днём Победы друзья! 🇷🇺
15🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Чет по турции заскучал🥲
🔥6😎2
Я тут два месяца назад потерял левый наушник от аппл-аирподсов и страдал с одним (правым).
Сегодня наконец доехал до центра и докупил второй (missing).
Грац ми, че.
(Не теряйте наушники посоны)
🫡5
- здарова, как кальянка?
- да норм, но я ща пока на сигах
- а че по поиску работы как?
- ищу путь к сектору 8
😭
👍4
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

Пацаны, кто шарит как такое волчарить? Ну там Шеринг экрана или как - это чуть ли не первый тех ПРЕ собес за последнее время кхе, мне нужна помощь нашего коммьюнити.

Вопросы такие:
- это делается шерингом экранов или за такое детектируют?
- кто из наших литкод любит подрочить?

Сорян за пуш уведомление, но это важно
6