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

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

@funeral_driven_development

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

Showing posts older than #47 · Back to latest

Older Posts 17 shown
Post #46 109
♿️♿️♿️ это я врываюсь в рынок вакансий golang, надоело выдумывать петпроект, буду проходить собесы (как будто позовут, наивный)
💩1. Экскримент один - юзаем бесплатный аи ноушна посмотрим как вообще реагируют на такое резюме
Перетекание из руби в гошку на последнем проекте
💩2. Эксримент два - врываемся и на djinni и на линкедине, на линкедине поменял последнее место работы на чисто бекенд, чуствую поменяю на голенг. 
💩3. Эксримент три - я смогу настроить обс, вот бы найти АИ который в видео на лицо клоуна поставит 🤡
П.С. Перерыв связан с внезапной смены работы на руби, не рискнул сидеть без работы пока не найду гошку поэтому проходил испыталку (успешно).
  • 🔥 5
  • 😱 1
Post #45 139
♿️ночной высер♿️
расскажу о паттерне FAN IN FAN OUT
🧬🧬🧬
Начну с примера, и небольшое вступление:
Тащемто не хватило мне фантазии на развитие бота, решил сделать системы аля AI на своих данных. Подробнее об архитектуре расскажу позже(во время рефакторинга).
Мне понадобилось сохранять данные в векторной базе данных, выбор пал(зря) на Qdrant. Для сохранения данных нам надо перевести слова в вектора, и сохранить в базе где потом по векторам и будет найден текст(в идеале текст в "синтезируется" той самой чатГПТ моделью). Тут есть ограничение, слова(текст) в вектор "превращается" с помощью другой модели, у которой ограничение на 92 слова/вектора, так как текст может быть супер большим мы будем использовать КАЛКАРЕНСИ с паттерном FAN OUT, а потому сделаем FAN IN. С помощью ГОРУТИН мы запустим текст/92 слова запросов в модель - это и будет часть FAN OUT, из текста(потока данных) делаем несколько потоков

for _, chunk := range chunks {
wg.Add(1)
go func(n []string) {
defer wg.Done()

embeddings, err := es.CreateEmbedding(chunk)
if err != nil {
return
}
embeddingsFloat32 := make([][]float32, len(embeddings))
for i, emb := range embeddings {
embeddingsFloat32[i] = make([]float32, len(emb))
for j, val := range emb {
embeddingsFloat32[i][j] = float32(val)
}
}

results <- vectorWithPayload{
vector: embeddingsFloat32,
payload: strings.Join(chunk, " "),
}

}(chunk)
}

Для имплементации паттерна нам нужен пакет sync и WaitGroup(из прошлых постов) и гоурутины
Создаем канал с данными в который будем записывать все результаты наших гоурутин
Проходимся циклом по кускам текста/данных и каждая гоурутина записыват в канал данные которые получила из апи модели + я добавляю оригинальный текст/кусок текста что бы сопоставлять в будущем в поиске по векторам что же они нашли.
Когда канал будет готов, мы делаем FAN IN - проходимся по каналу(в некоторой степени это массив) и записываем в базу наши данные.
👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻👻
П.C. у меня испыталка на сруби новый проект, поэтому редко посты, надеюсь в след месяце пойду по собесам по гошке.🤌
  • ⚡ 3
  • 😱 2
  • 🤯 1
Post #44 174
🐳 ВНЕЗАПНО 🐳
🐋спасибо что не отписались i'm really appreciate it 🐋
Были дела, внезапно привалило собесов по руби, сами писали, ради тренировок не отказывал + мелкие проблемы с оформлением в йувропке побегал по юристам и банкам(и продолжаю).
🍀🍀🍀🍀🍀
Ладно относительно гошки, на работе тоже решили двигаться в сторону гошки поэтому в свои статьи высеры на медиуме добавил ссылку на наш мега продающий лендинг.  Собственно сама статья - вот после тг бота решил всетаки поковырять веб, и там применять остальные паттерны гошки выдумывать нафига они в телеграм боте мне лень. В вебе больше примеров что можно будет под себя подстроить. Вероятно дальше будет так же много текста на высере в медиуме(может еще куда зарегится) и короткаяа сводка в тг - верю что интернет проситтуция принесет мне офферы наивный да Когда на собесы по гошке, не скажу думаю уже можно, но рутины много - еще поковыряю.
П.С. какойто набор антипаттернов волка в конце получился поидее можно ходить на собесы уже, просто все стало получше, но мелкие проблемки(рутина) появились и мотивации на гошку почти нету.
Medium Go lang minimal web app setup Echo + Air + Docker + Htmx
  • 🔥 4
  • ⚡ 2
  • 🌭 1
Post #43 187
🐳хотел высраться в понеделньик, но сгорела джопа на работе + какието проблемы с интернетом я два дня легаси говно не мог в докере запустить в итоге обновил докер + ночью наладился инторнет 🐳
HERE WE GO гошные фичи которые потыкал
🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟🤟
🐝 context 🐝
как говорится - хз загугли
- давайте начнем с общего представления о канкаренси в го, в отличии от руби "гыгы-гага 5 тредов тыкать базу запустим будет быстро" (да знаю что еще есть акторы, файберы, ну кому они нужны, камон).
Пример вы делаете 3 походов вкудато сразу, будь то апи или базка или очередь, но вам в зависимости от того где вам сразу ответят надо отменить остальное, или просто не тыкать слишком часто апишку. Контекст позволяет остановить выполнение кода, при каких либо условиях. Создаете контекст, передаете его в функцию/горутину с аргументом тайм либо с аргументом кенсел, если отмена вызывается из вне. Выглядит все очевидно, правда примеры во многих туториалах с селектом(об этом позже в других постах) может ввести в заблуждение представьте что селекта вообще нет, там он для наглядности. Есть некие правила от чего вкуда контекст наследуется, из background все остальные, а так же можно передавать значения, но не желательно.
🛎WaitGroup(sync)🛎
не помню что там еще в sync пакете, рассмотрим WaitGroup
- может применяться в противоположной логике, для аналогии транзакции в activ record, но не только касается бд
Пример, все теже 3 похода вкудато даже 3 вызова гоурутины которые считают что то тоже подходят в этом примере.
WaitGroup это счетчик операций(завершенных!) - создаете счетчик waitgroup.Add(3)
каждый вызов/поход дергаем через гоурутину это делается просто добавлением go перед вызовом функции и внутри добавляем waitgroup.Done(), значит что наша программа будет ждать пока счетчик не станет 3 и мы гарантированно соберем все данные.

📤 сегодня-завтра все будет в гитхабе, я делаю не правильно - мне надо это все потыкать для собесов, всмысле антипатерны и ворст практис.
  • 🔥 3
  • ❤‍🔥 1
Post #42 169
🤡ADHD Moment 🤡
Начнем пост цытаты
Место джаваскрипта в браузере либо на параше

так вот я рот того шатал "красить" кнопки в телеграм боте, трисет от любой ЮИ параши даже если она в виде инлайн кнопок телеграма. Была у меня идея, в этом проклятом пет проекте, для последующей реализации которой нужны были кнопки ну, я что то разогнался что аж пришлось редис подключать, вроде чемто позанимался, но опять же оверал скилы подключить/настроить ничего связанного канкаренси нету.
♿️Чет жалко стало времени высрал статью на медиуме буду ХРам тыкать, распечатаю и в вебку листики буду кидать а потом еще бабки привалят(нет) за контент, я кстати не разбирался еще наверно надо както настраивать, а то никакой карты с двух сторон фоткать не просили. Ну если я еще раз сверну в статьи на медиуме придется разбираться где конпка ЗП. THE ARTICLE - там кстати английский адвансед, читайте и офигевайте.
🪘TLDR для тех у кого болит голова и лишних фейспалмов лучше избежать
- кнопка имеет 2 аргумента, ее лейбл и ее "дата"
- если под датой вы подразумеваете что то что можно назвать текстом или хотя бы предложением то оно туда не влезет(лимит 64кб)
- прикручивает редис, запихивием в ключ айди чата + чето уникальное типа слова хотя можно и обойтись
- в велью ключа запихиваем вашу дату, как у меня для кнопок типа вперед назад разделяйте большой текст какимто символом "|"
- ну все достаем из редиса данные а разделенным символом делаем слайс что бы высрать конкретный кусок текста. Т.к. у нас next/prev кнопки то так же пихаем в дату текущую страницу и общее количество страниц, а так же "лейбл" в плане куда двигатся и какой элемент массива показать.
🧬 - опа нашлась.
В заключении
Обещаю в следующий высер уместить НАКОНЕЦТО что то гоферское, попытаюсь добавить channels, goroutine и waitgroup идея есть осталось реализовать.
Я кстати context уже заюзал, но это больше копипаста как прикрутить редис, а просто пересказывать теорию не хочу поэтому в другой раз.
  • 🔥 2
  • ⚡ 1
Post #40 149
🟥🟨
🟩🟦
Обсер у майрософта
на самом деле шансы были больше чем ожидал
в итоге было три этапа
1️⃣ - теория по ООП, первый вопрос различия полиморфизма в рантайме и компайл тайме 🤡 тут можно было выйти из собеса сразу
далее по классам и наследованию полегче. А потом задача симулятор футбола, ну такое надо много рассказывать там нет решения.
2️⃣ - бихейворал, дедуля индус про опыт спрашивал.Ему недостаточно сложно было в моих расскааах. Кароч надо не просто по STAR рассказыать а именно с обсером и как я выплыл, потому что он в конце такой "ты рассказываешь как будто просто делал то потом то потом это" линейность как бы, а ему хотелось что бы я незнал, а потом узнал. Как-то так.
3️⃣ - наконец DSA первая задача middle linked list так как я рубист чуваку было пофиг что я там пишу просил объяснять. Потом имплементировать класс wordDictionary, где можно добавлять и искать слово, а так же слово с пропущенными буквами. Один из методов через дерево, вот на нем и призошел пук среньк, чат гпт кстати знает как деревом решить.
  • 🔥 5
Post #39 149
♻️Здарова потенциальные гошники.♻️
Таки пойду 20 числа в майкрософт собесится.
План записать, и порешать на троечку алгосики.
Будет 1 бехейворал и 2 техникал, все по 45 минут и между ними 15 минут на поорать от безысходности.
Список дали как готовиться да, на данный момет утвердили первое и третье возможно второе(первое техникал) будет в другой день 🤡
🐳По гошке все прекрасно, нашел индуса которы за канкаренси патерны поясняет добавлю в ноушн. С тренировочным проектом надо что то делать, ноль поводов использовать канкаренси, надо что то с очередью придумать после собеса в майкрософт, займусь усердней - пора уже на го собесы ходить.
  • 🔥 6
Post #38 157
📌Опять хочется вспомнить, from ruby to go книгу. А именно - я нашел ей замену, встречайте:
github.com/samber/lo

кто трогал javascript знают такю либу как lodash вот в гошке тоже самое, кто трогал руби поймет очередной раз насколько же руби удобный что в других языках одни из самых популярных библиотек/пакетов. И гошный LO построен на дженериках, поэтому мне он попался я углублялся еще в них, мне кажется что эта либа покроет 90%  в дженериках в проекте, хотя очевидно надо делать что то сложнее тг бота.
📌Кстати о проекте отрефакторил слегка бота, но добавил кнопок их еще не настраивал, на след выхи попробую залить(но это не точно) кудато бесплатно будет тг бот который ищет по urban dictionary.
📌20 числа 3 часа алгосиков + поведение в майкрософт, я оценил шансы и подумал надо поковырять литкод (можно на любом языке будет писать)
вот вам ссылка на самые популярные задачи с тегами компаний которые спрашивают там буду тренироваться.
seanprashad.com/leetcode-patterns/

Поэтому до 20 числа постов о гошке будет мало, всетаки интересно попробовать фаанг стайл собесы.
  • 🔥 2
Post #37 148
Generics: 🚾♿️🅿️
Alright так как мы идем из руби, я сталкнулся с этим явлением впервые, и что не мало важно в видосах озона этого нету.
Суть в кратце это функции которые могут работать с разными типами, но так же этот функционал может использоваться для объяления кастомных типов.
Синтаксически это выглядит так - после названия функции и перед аргументами в квадратных скобочках пишем возможные типы

func printValue[T int32](value T) {
fmt.Println(value)
}

Далее написаное будет касаться букв/слов в квадратных скобочках
В примере выше мы явно указали только один тип, как будто могли и без дженерика обойтись.
📌Можно добавить еще один через пайп оператор [ T int32 | int16 ] таким образом мы можем принимать любой из двух типов.
📌Что бы не писать все возможные комбинации, в стд либ есть пакет который предлагает пресеты типов, например [ T Integer ] в котором все инты соответственно.
📌Если мы создали кастом тип, который является по сути наследником стандартного типа, то для включения его в список допустимых типов используется синтаксис тильды [ T ~int32 ]
📌И самое сложное однако часто встречающееся так как добавили синтаксический сахар шугаринг хуюгаринг(с) Когда функция принимает слайс(массив)
мож определить как [ U ~[]T, T any ] что значит наш генерик будет принимать массивы с любыми типами внутри.
По последнему пункту я не уверен в корректности объяснения на ноушн добавлю ссылки про генерики, и продублирую тут.

medium.com/the-godev-corner/go-generics-everything-you-need-to-know-52dd3796d8a1#143b
benjiv.com/golang-generics-introduction
youtu.be/Pa_e9EeCdy8?si=e_DJaIMRdNa8jk-z

🔝🔝🔝🔝🔝🔝🔝🔝
  • 🤯 3
Post #36 105
Продолжение:
Объясню суть:
🪑 фишка го в паралельных вычислениях
🪑 нахаляву пет-проекты/боты и тд это работа с апишками.
🪑 а на какой черт мне паралелить запросы к апи если ботлнек это запросы к айпи, т.е. бесплатные апишки и так ставят ограничения никакой скорости не будет по причине рейтлимита на них.
♠ удачно выбраная апи урбан дикшонари(в предыдущем посте ссылка) отдает несколько вариантов слова(термина), можно складывать их "паралельно" в один текст и отправлять в апишку tldr да такая тоже есть.
  • 🔥 3
Post #33 106
🤖Эксклюзив(нет)
Задачки с майкрософт теста на долбаеба(если не пройдешь то и не позовут дальше), дается два часа тест, не копируется, вырезал, страдал. На самом деле легкие, третья просто необычная может на уровень медиум литкода тянет хотя тут еще субъективное ощущение от перевода и просто долгого понимания что требуется. 

🦴Обновил ноушн добавил ссылки на задачки которые должны быть ближе к реалиям. Будем пробовать.
🦴Учится устал, потому что криво записаны видосы озоновского торрента, и только третий с практикой аля воркшоп.
🦴Думаю что го-фичевского добавить в бота/проект.
  • 🔥 4
Post #32 124
💀Сразу говорю я делаю не правильно так делать нельзя (с) 💀
Начинаю практиковать гошку, почти калька с видео ozon (в ноушне есть ссылка). Сделал хуже чеем в видео, потому что как раз почитаю 100 ошибок 0 помощи.
Это бот у которого можно спросить по команде search + какоето слово что значит это слово, бот ходит на urban dictionary.
В планах удачно отрефакторить и поменять/добавить другую апишку, нужно что то где уместно будет использовать корутины возможно это 2+ разные апишки по одной тематики. Потом подумаю куда бы его задеплоить диджитал оушн поидее базка мне не нужна может найдется бесплатный сервак либо за подъемные 100 баксов. Кто знает еще варианты захостить дешего бота пишите.
https://github.com/igorrize/go_bot
GitHub GitHub - igorrize/go_bot Contribute to igorrize/go_bot development by creating an account on GitHub.
  • 🔥 2
  • ⚡ 1
Post #29 132
🤡Здраствуйте🤡
Хотел записать, записал, звук себя вышел в окно, поэтому вырезал два кусочка ХР о вакансии.
Что не вырезал скажу текстом.
Уже на скрининге достает меня вопросами про DSA, -📌оцени свой уровень алогосиков от 1 до влада тена.
-📌как часто юзаешь в работае DSA: хер знает что тут ответить, думаю коррелирует со следующим вопросом "а как сильно ты самостоятельный и делаешь ли проекты с нуля" проекты подразумавется фича или сервис. Конечно в повседнемном багафиксе эти алгосики или структуры в плане подумать ты используешь примерно редко. Но если можешь запилить фичу с нуля то там и поттерны и структуры и алгосики.
Саммари аудио если впадлу слушать:
-2 часа на кодилити то что на скрине, срок неделя
-созвон с ХР забронькать следующие этапы
-3 часа на алгосики с тремя командами(они ищут в три команды)
-4й час behavioral/cluture fit - нет не угадали growth mindset
возможно это для владов тенов, подразумевается проверка мотивации и способностей выучить си шарп.
  • 🔥 2
Post #28 138
🦴🦴🦴Высру 3 мысли в одном посте: 🦴🦴🦴
📕Книга from Ruby to golang не рекомендую, крайне не рекомендую. Я уже писал что разочаровался, с тех пор я ее дочитал, затрагивает наверное 20% языка и по сути она похожа просто на переводчик с руби на го. Построена она по принципу так в руби а так в го. Последняя глава это интерфейсы. Еще треть книги это список терминов(общих), если кто то свичуется с руби в го читайте захлебом за пол дня и не парьтесь или выкиньте ее.
📗Не буду говорить что я стремлюсь к сверхпродуктивности, идеально конечно 95% практики + видосы/статьи которые должны быть краткой выжимкой с книг, как будто это сэкономит время (и что бы курьер выносил мусор 🗿). Так вот я это к тому что книга нужна, бывает лень решать задачи, внимательно смотреть видосы, обычной работой мозг устал и книга это компромис аля "не можешь бижать - ползи". И я нашел следующую, чутье подсказывает должна зайти 100 ошибок Go и как их избежать. Во-первых я похожее читал в руби оч зашло, во-вторых как минимум 100 примеров кода будет а значит книга ближе к практике. Краткое ревью сделаю как дочитаю, хотелось бы что бы я уже эти ошибки допускал не в кодварсах/литкодах а в какойто приближенной к проектам практике.
🐳 Вчера помагал товарищу-вкатышу с серваком, на его курсах кратко проходятся по деплою/линуксу. В голову пришел диджитал оушн, и внезапно сейчас там суперлегко деплоить. Думаю написать, что то а гошке, однозначно апи, а что будет делать буду думать. В идеале конечно найти террабайты данных и пытаться гоурутинами элегантно их доставать, но можно начать с простого - прокси для другой апишки.
  • 🔥 5
Post #27 122
Утром был микро скрининг, пока еще на руби вакансия мутная часто описание меняли. Из примечательного мадам ХРЕН(как удачно т9 исправил) даже задавала вопросы по руби. А потом внезапно — «мы против если сотрудник будет совмещать еще одну работу» и в конце «можете ли дать три номера менеджеров с прошлой работы если попросим». Вообщем какой вывод мадам хр в тренде держите на чеку. 🐺
P.S. По гошке осваиваюсь хз че написать, пока что.
  • 😱 3
Post #26 164
пришел спам на почту работа в конаде ап ту 114к юсд 🇨🇦
один из пунктов звучит так
High-traffic production environment, which sees the team ship code 7 times per day (on average)!

это какойто занебесный уровень продуктивности или когда менеджер волчара 🤡
  • 👻 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 →