Артём Рыбин | Мэйби
250 subscribers
134 photos
32 videos
51 links
Привет, это Артём Рыбин — CIO буше.

Рассказываю о жизни в айти, немножко про Go и жизни после созвонов.

Автор ютуб-канала maybe https://www.youtube.com/@maybe_digital
Download Telegram
Media is too big
VIEW IN TELEGRAM
И что меня ждало далее

Я не совсем понимал, куда я еду, и как это будет выглядеть, поэтому все, что я видел далее, было неожиданно.

Лагерь - топ. Я вернулся в свое детство, когда сам просил родителей отправить меня в подобный. Правда, там не было компьютеров, телефонов и направленность лагеря была в спорт, но это не суть.

Очень крутой и молодой коллектив ребят организаторов, я рад знакомству с каждым. Теплая, дружелюбная атмосфера. Все рассказали, показали, накормили и успокоили. Наверно, от части, это также помогло хорошо выступить.

Ну и само выступление вызвало бурю эмоций. Очень приятно видеть в глазах ребят рвение. Я видел, как они слушали, делали какие-то пометки и в конце задали большое количество вопросов. Им хотелось слышать как можно больше реальных историй, ведь они драйвят больше всего. Ну и без интересных каверзных вопросов тоже мы не обошлись 😅 Подарил мерча самым активным ребятам за крутые вопросы.

Это был незаменимый опыт. Лично для себя могу сделать вывод, что выступать мне нравится. Я не могу объективно оценить свое выступление, но уже сейчас скажу, что это только начало.
🔥8😍2
Я считаю, надо это отметить
😁7🔥4🤣1
Интервальное слияние

Основные применения метода интервального слияния:
- Задачи, связанные с расписаниями, временными промежутками и любыми задачами, требующими объединения пересекающихся или смежных интервалов
- Также оптимизации и упрощения работы с временными данными, такими как управление ресурсами, планирование задач и обработка временных интервалов

Алгоритм:
1. Сначала сортируем интервалы по начальным значениям.
2. Затем начиная с первого интервала и перебираем все остальные интервалы.
3. Если текущий интервал пересекается с предыдущим, объединяем их в один интервал.
4. Если текущий интервал не пересекается с предыдущим, добавляем предыдущий интервал к результирующему списку и продолжаем сравнивать текущий интервал с последующими.

Временная сложность:
* Сортировка интервалов: O(n log n), где n - количество интервалов. Это связано с тем, что перед объединением интервалов необходимо отсортировать их по начальным точкам.
* Объединение интервалов: O(n), после сортировки интервалы объединяются за линейное время.

Таким образом, общая временная сложность алгоритма интервального слияния составляет O(n log n), где n - количество интервалов.

Пространственная сложность:
Пространственная сложность зависит от того, какие структуры данных используются для хранения интервалов и промежуточных результатов. Обычно это может быть O(n) дополнительной памяти для хранения отсортированных интервалов и результата их слияния.

Пример задачи: Объединить пересекающиеся временные интервалы.
type Interval struct {
      Start int
      End   int
}
 
func merge(intervals []Interval) []Interval {
      if len(intervals) <= 1 {
            return intervals
      }
 
      // Сортировка интервалов по начальному значению
      sort.Slice(intervals, func(i, j int) bool {
            return intervals[i].Start < intervals[j].Start
      })
 
      merged := make([]Interval, 0)
      current := intervals[0]
 
      for i := 1; i < len(intervals); i++ {
            if intervals[i].Start <= current.End {
                  // Если текущий интервал пересекается с предыдущим, объединяем их
                  current.End = max(current.End, intervals[i].End)
            } else {
                  // Если текущий интервал не пересекается с предыдущим, добавляем предыдущий к результирующему списку
                  merged = append(merged, current)
                  current = intervals[i]
            }
      }
 
      merged = append(merged, current)
 
      return merged
}

#ПовторяемАлгосы
❤1👨‍💻1
Как я попал в это ваше IT

Шамистан запустил прикольную волну, которую подхватил Олег и сделал пост на ту же тему (ставь ему огонек, если интересно почитать, что было дальше), которая привлекла и меня.

Я не из тех, кто рассказывает, что занимался совсем другим, учился на гуманитария и вот в один прекрасный день решил стать программистом.

Первый комп

Первый комп у меня появился в 1 классе, тогда мне привез его отец из Японии. Откровенно говоря, что с ним делать не знал даже он, а я и подавно. На него была накатана Windows 95 и были несколько игр, в которые мне быстро надоедало играть, и я начинал шерстить все значки и папки в поисках чего-то интересного. Потом один наш знакомый поставил на него 98-е окна, стало чуть интереснее. Тогда мне показали Word, сказали, что надо учиться печатать. Появилась возможность ставить хоть какие-то игры, которые были у друзей. Но в скором времени он перестал все тянуть из-за железа, и я начал искать способы, чтобы его раскачивать. Менялся видеокартами, что-то разбирал/собирал, короче, делал все, чтобы вдохнуть в него жизнь. Не вышло.

Первые шаги в код

Следующий комп появился в классе 6-7, я тогда слабо соображал в железе, выбор делал еще один наш знакомый, который почему-то решил, что встроенная видеокарта — это вообще кайф, просто надо чуть больше оперативки купить, и все будет летать. Спойлер: ничего не летало. С этим компом я долго возился. Игры не шли на нем совсем, кроме каких-то онлайн, например, Lineage II… Этой штуке я отдал несколько лет жизни, пока её тянул мой комп.

Именно в этот момент проснулся интерес к коду и внутренностям. Затем я начал поднимать собственные сервера для CS 1.6, делал сайты на ucoz для клана в контре, сервера для L2 со своими настройками, узнал, что такое Joomla. Золотые были времена. Кстати, в это же время были ArtMoney, CheMax, все возможные софты для автокача, короче — как вы поняли, это все я активно использовал, ахахаха)) Где-то приходилось разобраться, как это работает, что-то поправить и так далее. В общем, делал не столько для процесса заработка в игре, а ради спортивного интереса.

Точка невозврата

Далее ничего необычного, в школе чинил компы всем одноклассникам. Научился ставить винду (ZverCD — ван лав), править BIOS на базовом уровне и вот это вот все. В школе сдал ЕГЭ по информатике — то еще было приключение, потому что информатику преподавал физик, который ничего не знал в компах. Универ по специальности, закончил бакалавриат, параллельно делал несколько сайтов под заказ и работал в воспитательном отделе.

Вот я выпустился из универа, вот мой красный диплом по направлению «Прикладная информатика», а дальше что? А дальше — работы по специальности нет. Я работал то звукорежиссером, то DJ, то аниматором и параллельно получал степень магистра.
И только после того, как я переехал в Питер, я начал работать по специальности. Сначала в одной веб-студии, из которой уволили через месяц, а затем просто по различным компаниям. Пока не дошел до того, что мы имеем сейчас.

Да, последний абзац получился пустоват, но в канале, я думаю, будет еще много инфы, которая заполнит пробелы.

P.S. Пока писал этот пост, разблокировал воспоминания, ставь лайк если у тебя также. А я картинки прикреплю для большего эффекта, потому что фотки вряд ли найду.
🔥7👍1
Солнце почти село, а на канале нет нового поста

Это не просто говорящий заголовок, а сообщение от друга мне в личку сегодня. Первая мысль - точно, надо же что-то написать. А писать-то и нечего. Отсюда вопрос - а как часто вообще вести эту активность? Писать посты, придумывать темы.

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

И вот сижу я, размышляю, решения пока не нашел. Может, кто подскажет тут? Всё-таки в канале уже 31 человек, и некоторые даже иногда что-то комментируют.

Как часто на ваш взгляд надо делать посты? Есть ли темы, которые вам особенно интересны?
Audio
Вернулся в зал

Через месяц закончится абонемент и лучшего момента уже не будет.

Два года назад я стабильно ходил 3 раза в неделю, занимался с тренером, пил BCAA, креатин, протеин, а потом началось... Сначала закончился абонемент, и не было возможности его купить, потом появился новый абонемент, но вместе с ним и сложности в работе, из-за которых времени ни на что не оставалось.

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

Цель: вернуться к стабильному режиму тренировок.

Ставь огонек, если хочешь или уже занимаешься спортом.

#цель #новыеПривычки
🔥7🌚1
Слышали, как шутят программисты?

Да, зрелище так себе, но мы стараемся, правда. Мы не виноваты, что приходится сначала сказать шутку, а потом объяснить, где надо смеяться.

Вся суть наших шуток сводится к сарказму, техническим терминам и безудержному количеству мемов.. Мемы - это база. Я очень много общаюсь мемами и прикольными видосами.

Делает это меня веселым человеком? Нет.
Нравится мне это? Очень.
Буду ли я продолжать так делать? Вот тут вопрос…

В универе я играл в КВН, и хотя моя «карьера» в юморе дальше университета не пошла, я запомнил одну важную фразу: «Шутка - это неожиданность». А сейчас даже думать не надо, кинул смешную картинку, сказал «Чиназес» и все, все посмеялись.

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

#ХабМыслей #МоментДляРазмышлений
🤪3🌭1
Артём Рыбин | Мэйби pinned «Вот он, долгожданный (мной) вводный пост, который я наконец-то придумал. Меня зовут Артем, я опытный backend-разработчик и уже более 6 лет занимаюсь коммерческой web-разработкой. За это время я успел поработать в крупных компаниях со сложной архитектурой…»
This media is not supported in your browser
VIEW IN TELEGRAM
Цикличная сортировка

Основные применения метода цикличной сортировки:
- Ограниченные ресурсы - когда массивы или структуры данных хранятся на устройствах с ограниченными ресурсами.
- Частично отсортированные данные - в таких сценариях временная сложность может быть значительно снижена, поскольку многие элементы могут оказаться уже на своих местах.
- Ограниченные ресурсы - циклическая сортировка выполняется без использования дополнительной памяти.

Алгоритм:
1.    Для каждого элемента массива ищем правильную позицию для вставки этого элемента.
2.    Когда мы находим правильную позицию, проверяем, не находимся ли мы уже в начале цикла. Если да, завершаем текущий цикл.
3.    Вставляем элемент на правильную позицию.
4.    Переходим к следующему элементу и повторяем процесс.
5.    Повторяем процесс до тех пор, пока не отсортируем все элементы.

Пример задачи: Отсортировать массив целых чисел с использованием цикличной сортировки.
 
package main
 
import "fmt"
 
func cycleSort(arr []int) {
      length := len(arr)
 
      for cycleStart := 0; cycleStart < length-1; cycleStart++ {
            item := arr[cycleStart]
            pos := cycleStart
 
            // Находим правильную позицию для текущего элемента
            for i := cycleStart + 1; i < length; i++ {
                  if arr[i] < item {
                        pos++
                  }
            }
 
            // Если текущая позиция совпадает с началом цикла, значит, элемент уже на своем месте
            if pos == cycleStart {
                  continue
            }
 
            // Пропускаем дубликаты
            for item == arr[pos] {
                  pos++
            }
 
            // Перемещаем элемент на его правильную позицию
            if pos != cycleStart {
                  item, arr[pos] = arr[pos], item
            }
 
            // Перемещаем оставшиеся элементы в текущий цикл
            for pos != cycleStart {
                  pos = cycleStart
                  for i := cycleStart + 1; i < length; i++ {
                        if arr[i] < item {
                              pos++
                        }
                  }
 
                  for item == arr[pos] {
                        pos++
                  }
 
                  if item != arr[pos] {
                        item, arr[pos] = arr[pos], item
                  }
            }
      }
}


#ПовторяемАлгосы
Алгосы не нужны

Я этот заголовок уже везде где только можно вижу. Если хочется увидеть горящую жопу программистов, можно вкинуть такое сообщение в любой из их чатов.

Я считаю, что они нужны. И сегодня я обсуждал это с коллегой, который просто растоптал меня своим аргументом 😅

Для того чтобы попасть в один желтый банк, я проходил 4 этапа собеседования. Мы успели алгосы порешать, пройти архитектурную секцию, скриминг и программирование. А что получил на выходе ? Переписываем простенький легаси php на новый фреймворк.

Вот от такого и действительно немного подгорает. Все компании начали пихать эту алгос секцию, отсеивать кандидатов. А для чего ? Для того, чтобы у них скилловые ребята делали подобные задачи?

Хочу, чтобы уровень вопросов соответствовал тому, чем ты будешь заниматься на этом месте.

Жиза?
💯5🔥2
Media is too big
VIEW IN TELEGRAM
Я снова в телеке

Новое видео - подкаст с Олегом Козыревым, Go-разработчиком, автором курсов и актером. Его можно считать отправной точкой в создании этого канала.

Это была крутая беседа с огромным количеством полезной информации и инсайтов. Уже этих слов достаточно для того чтоб пойти и глянуть этот подкаст!

Но если подробнее то мы обсудили:
- Зачем нужен личный бренд Олегу?
- Минусы личного бренда для айтишника.
- Как найти первую аудиторию?
- Что значит качественный контент?
- Про контент план и теневой бан от ютуба
- Где больше денег – разработка или курсы?

И как обычно говорят блогеры - не забудьте поставить лайк и подписаться

YouTube: https://go.kotelov.com/youtube_podcast_ep49
Mave: https://go.kotelov.com/mave_podcast_ep49

#подкаст
🔥8❤3🍾3
Сегодня буду вещать о том как проходить собеседования. Тема доклада - «Грокаем технические собеседования (чит-коды на прохождение)» звучит? Мне кажется - топ. Поговорим что ждут от кандидатов, зачем нужна самопрезентация и немного советов дам из своего опыта.

Сейчас мчу в самый прикольный, на мой взгляд, офис ВК и это не Зингер.
🔥3
Пока я жду фотки, чтобы рассказать, как прошло выступление сегодня (спойлер - кайфово), расскажу, что полезного для себя я сделал за прошлую неделю.

Я разместил свое резюме на нескольких площадках для менторов и получил первые обращения. Провел с ними вводные созвоны и сделал несколько выводов:

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

- Я не хочу помогать людям в накрутке опыта. Да, в 2019 году при поиске работы я приписал себе лишние полгода опыта в студии, в которой работал всего месяц. Но это был первый и последний раз. Сразу поясню — накрутку не осуждаю, мне в целом плевать, кто что пишет в резюме, если он способен выполнять задачи в полной мере.

- Люди хотят изучать Go. Это не новость, иначе не было бы кучи курсов на эту тему. Если выделять основные причины, почему, то это:
* Деньги
* Надоел текущий язык программирования
* Go очень популярен

Но интересно то, что большая часть запросов приходит именно по переходу из PHP в Go.

В голове возникла мысль: может всё-таки стоит сделать какой-то контент на тему перехода из PHP в Go? Беглый поиск по YouTube показал, что подобные видео есть, но лично для себя я не нашел ни одного, который бы зацепил.

В общем, я поселил эту мысль в голове и буду её развивать. А теперь ещё и рассказал её вам, и ваши реакции на этот пост будут приближать меня к её реализации.
👍7❤3🔥1
Грокаем технические собеседования

А вот и фоточки подъехали. Исходя из комментариев под прошлым постом и количества пришедших людей на канал, делаю вывод, что всё прошло кайфово.

Самая крутая часть доклада — интерактив. На начальной стадии подготовки материала организаторы предложили добавить его и разбавить выступление. И, как говорит великий, это было не просто смело… Рецепт простой: берём человека из зала, сажаем напротив и проводим mock-собеседование в лайт формате, а затем разбираем все ошибки, которые возникали в процессе. Материал на примерах запоминается лучше — это факт. Также рассказал, как обстоят дела в реальном мире отбора IT-кандидатов, и дал немного советов.

Откровенно говоря, сначала немного растерялся на сцене, но постарался быстро взять себя в руки и контролировать речь. Особенно стало проще после того, как начал общаться с залом. В общем, нужно больше практики, поэтому ставлю цель выступать как можно чаще.

Скоро будут несколько конференций для Go-разработчиков, на которых я хочу выступить, поэтому пойду искать материал и подавать заявки. А вы пока лайк поставьте, если не посту, так фотографу, он же старался.

#цель #выступление
❤10🍓3🔥2