Media is too big
VIEW IN TELEGRAM
Ну и немного о грустном, пришло понимание, что в молодежную тусовку меня уже не позовут, да и сам я не пойду. Смотря на списк артистов, я понимал, что для меня большая часть ноунеймы. Все эти фрешмены уже не для меня))
Поэтому очень крутым завершением вчера был концерт Леонида Агутина, на который мы пошли вечером. На нем, конечно, было гораздо больше эмоций, которые задавал всего 1 человек на сцене. И черт возьми, я хочу выглядеть также, как он в свои 55 лет… Какие бы слова я тут не написал, вы все равно не прочувствуете весь спектр эмоций, поэтому просто посмотрите несколько видео, которые я добавил в пост.
А я пока погнал на второй день феста
Поэтому очень крутым завершением вчера был концерт Леонида Агутина, на который мы пошли вечером. На нем, конечно, было гораздо больше эмоций, которые задавал всего 1 человек на сцене. И черт возьми, я хочу выглядеть также, как он в свои 55 лет… Какие бы слова я тут не написал, вы все равно не прочувствуете весь спектр эмоций, поэтому просто посмотрите несколько видео, которые я добавил в пост.
А я пока погнал на второй день феста
🤣6💘3❤1
Второй день феста тоже позади. Это были очень активные выходные, но пора работать. Решил с утра повторить несколько паттернов решения алгоритмов, чтобы привести голову в тонус.
- Метод двух указателей
- Нахождение цикла
Задачи на эти темы встречаются во многих компаниях, лично я встречал их на собеседованиях в Авито, Озон и ВБ. Вообще, алгоритмические секции сейчас внедряют везде, где только можно, даже если тебе по факту это никак не пригодится в дальнейшем в твоей работе. Кстати, недавно узнал, что задачи на эту тему встречаются в ЕГЭ (24-я задача вроде), так что какой-то школьник может написать код, а ты нет😅
Сказать, что «алгосы не нужны» - я не могу и даже более того, не поддерживаю это мнение. Даже если не брать во внимание то, что рано или поздно вы все равно будете думать, как оптимальнее обойти массив, найти пару элементов и так далее, то как минимум - это отличный способ немного потренировать мозги, а как максимум вы просто подготовите себя к собеседованиям.
Пока все это писал, решил, что буду раз в несколько дней повторять паттерны решения и транслировать сюда
- Метод двух указателей
- Нахождение цикла
Задачи на эти темы встречаются во многих компаниях, лично я встречал их на собеседованиях в Авито, Озон и ВБ. Вообще, алгоритмические секции сейчас внедряют везде, где только можно, даже если тебе по факту это никак не пригодится в дальнейшем в твоей работе. Кстати, недавно узнал, что задачи на эту тему встречаются в ЕГЭ (24-я задача вроде), так что какой-то школьник может написать код, а ты нет😅
Сказать, что «алгосы не нужны» - я не могу и даже более того, не поддерживаю это мнение. Даже если не брать во внимание то, что рано или поздно вы все равно будете думать, как оптимальнее обойти массив, найти пару элементов и так далее, то как минимум - это отличный способ немного потренировать мозги, а как максимум вы просто подготовите себя к собеседованиям.
Пока все это писал, решил, что буду раз в несколько дней повторять паттерны решения и транслировать сюда
🏆3🙏2❤1
Метод двух указателей.
Основные применения метода двух указателей:
1. Поиск пары: поиск пары элементов в массиве, списке или строке, удовлетворяющих определенному условию.
2. Поиск подотрезка: Поиск подотрезка в массиве или строке, удовлетворяющего определенным условиям (например, сумма элементов, равная определенному значению).
3. Удаление дубликатов: Удаление дубликатов из отсортированного или неотсортированного массива или списка.
Алгоритм:
1. Инициализируем указатели. Например, один указывает на начало массива или списка (left), а другой на конец (right).
2. Пишем цикл поиска. Используем цикл для выполнения условий задачи, перемещая указатели в зависимости от результата проверки.
3. Определяем условия и действия. В зависимости от условий может потребоваться сравнение элементов, их обмен или какие-то другие операции с указателями.
4. Получаем результат. Алгоритм завершается, когда один из указателей достигает определенного положения (например, они встретились или прошли друг друга).
Пример задачи: Найти пару элементов в отсортированном массиве, сумма которых равна заданной цели.
Основные применения метода двух указателей:
1. Поиск пары: поиск пары элементов в массиве, списке или строке, удовлетворяющих определенному условию.
2. Поиск подотрезка: Поиск подотрезка в массиве или строке, удовлетворяющего определенным условиям (например, сумма элементов, равная определенному значению).
3. Удаление дубликатов: Удаление дубликатов из отсортированного или неотсортированного массива или списка.
Алгоритм:
1. Инициализируем указатели. Например, один указывает на начало массива или списка (left), а другой на конец (right).
2. Пишем цикл поиска. Используем цикл для выполнения условий задачи, перемещая указатели в зависимости от результата проверки.
3. Определяем условия и действия. В зависимости от условий может потребоваться сравнение элементов, их обмен или какие-то другие операции с указателями.
4. Получаем результат. Алгоритм завершается, когда один из указателей достигает определенного положения (например, они встретились или прошли друг друга).
Пример задачи: Найти пару элементов в отсортированном массиве, сумма которых равна заданной цели.
func twoSum(nums []int, target int) []int {
left, right := 0, len(nums)-1
for left < right {
sum := nums[left] + nums[right]
if sum == target {
return []int{left, right}
} else if sum < target {
left++
} else {
right--
}
}
return nil // Если пара не найдена
}👍2🤓2❤1
Метод нахождение цикла
Основные применения метода нахождение цикла:
1. Обнаружение циклов в графах или связанных структурах.
2. Проверка корректности данных.
Алгоритм:
1. Инициализируем два указателя. Медленный указатель (slow) и быстрый указатель (fast).
2. Начинаем обход списка. Медленный указатель перемещается на один шаг за раз, а быстрый указатель - на два шага за раз.
3. Выставляем условие. Если цикл существует в списке, рано или поздно быстрый указатель догонит медленный указатель внутри цикла.
4. Получаем результат. Как только быстрый и медленный указатели встретятся внутри цикла, мы знаем, что цикл существует.
Пример задачи: Проверить список на наличие цикла.
#ПовторяемАлгосы
Основные применения метода нахождение цикла:
1. Обнаружение циклов в графах или связанных структурах.
2. Проверка корректности данных.
Алгоритм:
1. Инициализируем два указателя. Медленный указатель (slow) и быстрый указатель (fast).
2. Начинаем обход списка. Медленный указатель перемещается на один шаг за раз, а быстрый указатель - на два шага за раз.
3. Выставляем условие. Если цикл существует в списке, рано или поздно быстрый указатель догонит медленный указатель внутри цикла.
4. Получаем результат. Как только быстрый и медленный указатели встретятся внутри цикла, мы знаем, что цикл существует.
Пример задачи: Проверить список на наличие цикла.
type ListNode struct {
Value int
Next *ListNode
}
func hasCycle(head *ListNode) bool {
if head == nil {
return false
}
slow := head
fast := head.Next
for fast != nil && fast.Next != nil {
if slow == fast {
return true // Цикл обнаружен
}
slow = slow.Next // Шаг fast
fast = fast.Next.Next // Шаг slow
}
return false // Цикл не найден
}#ПовторяемАлгосы
❤1🔥1
Я в телеке.
Меня иногда можно увидеть на YouTube! За время съемок я успел пообщаться с большим количеством крутых людей — от белых хакеров до product-owners сети кондитерских "Буше" и основателя HTML Academy. Кстати, для "Буше" мы разработали приложение, которое получило несколько наград. Но об этом проекте расскажу подробнее чуть позже.
У меня большие планы на видеоформат, ну и на текстовый контент, конечно. Видео — это не только про контент, но еще и про эмоции. Обсудить какой-то вопрос на подкасте с человеком, поговорить про боль, которая его окружает, узнать его мнение на тот или иной вопрос — это кайф.
Я не хочу делать только учебный канал. Хочу делиться всем, что окружает меня в моменте, поэтому тут будут технические аспекты и личные инсайты, которые помогают в карьере. Чтобы находясь здесь, можно было найти не только что-то полезное и интересное, но и вдохновляющее
Меня иногда можно увидеть на YouTube! За время съемок я успел пообщаться с большим количеством крутых людей — от белых хакеров до product-owners сети кондитерских "Буше" и основателя HTML Academy. Кстати, для "Буше" мы разработали приложение, которое получило несколько наград. Но об этом проекте расскажу подробнее чуть позже.
У меня большие планы на видеоформат, ну и на текстовый контент, конечно. Видео — это не только про контент, но еще и про эмоции. Обсудить какой-то вопрос на подкасте с человеком, поговорить про боль, которая его окружает, узнать его мнение на тот или иной вопрос — это кайф.
Я не хочу делать только учебный канал. Хочу делиться всем, что окружает меня в моменте, поэтому тут будут технические аспекты и личные инсайты, которые помогают в карьере. Чтобы находясь здесь, можно было найти не только что-то полезное и интересное, но и вдохновляющее
🔥5❤2🥰1
Я x Буше x Kotelov
Это был крутой кейс для портфолио, о котором уже писали и не один раз, который получили награды и залетел в топ 10 приложений на Workspace Digital Awards 2024. На проекте я был ведущим разработчиком и teamlead-ом. В первый раз попробовал себя в роли управленца и, честно говоря, мне не очень понравилось. Есть определенные сложности в работе, которые мы, кстати, обсуждали вместе с Женей Антоновым на подкасте. У него есть крутой канал, на который, я считаю, стоит подписаться, если тебе интересно руководить командой.
Но с другой стороны, это был отличный опыт разработки для общепита, к тому же для меня он был первым. Построение архитектуры, формирование инфраструктуры, написание кодовой базы - все делалось с нуля. Ограничения были только со стороны заказчика на определенный стек, поскольку они не хотели плодить зоопарк технологий, что я, собственно, поддерживаю.
К сожалению, технические аспекты раскрыть не могу. Но зато могу поделиться общим впечатлением.
Построение архитектуры
Для того чтобы что-то делать, надо понять, что именно надо делать. Сначала я собрал всю информацию, что у нас есть от заказчика, так называемые функциональные требования: каталог, возможность заказа, push-оповещения и так далее. Попытался накидать черновик схемы взаимодействий. Затем начал описывать все компоненты, которые будут у нас в системе и как они будут общаться друг с другом.
После этого настал черед посмотреть на нефункциональные требования - DAU, availability, количество пользователей и так далее. В схему добавились новые компоненты, что-то из текущих изменилось для обеспечения функциональности, отслеживания ошибок и мониторинга показателей. Необходимо помнить о том, что мы ориентируемся на бизнес, а ему важны цифры - мы должны их предоставить.
Пишем код
Если вы думаете, что написать backend для мобильного приложения, которое обслуживает 300к+ пользователей без багов, просто - это не так. Есть множество моментов, которые сложно учесть, нюансы, которые будут у каждого бизнеса свои, и много других подводных камней. Чтобы этого избежать, приходится очень часто созваниваться и встречаться с бизнесом. Проводить множество тестов. Я как-то раз поехал в "Буше" и в реальном времени делал заказ через бета-версию приложения, чтобы отладить работу.
Запуск приложения
Наступает тот самый момент перед запуском, тебя наполняет множество эмоций, но они быстро исчезают. Весь запуск состоит в том, что ты, условно, просто нажимаешь кнопку «опубликовать» и потом начинаешь долго и мучительно смотреть логи, метрики, получать сообщения из техподдержки и моментально править все, что только возможно. Никакого шампанского, фейерверков и танцев до утра - в общем, совсем не весело.
Небольшим итогом, могу сказать, что это было круто! Конечно, глупо отрицать, что иногда хотелось это все бросить, были моменты, которые раздражали и в целом сложностей было достаточно. Но я рад, что был на этом проекте.
Это был крутой кейс для портфолио, о котором уже писали и не один раз, который получили награды и залетел в топ 10 приложений на Workspace Digital Awards 2024. На проекте я был ведущим разработчиком и teamlead-ом. В первый раз попробовал себя в роли управленца и, честно говоря, мне не очень понравилось. Есть определенные сложности в работе, которые мы, кстати, обсуждали вместе с Женей Антоновым на подкасте. У него есть крутой канал, на который, я считаю, стоит подписаться, если тебе интересно руководить командой.
Но с другой стороны, это был отличный опыт разработки для общепита, к тому же для меня он был первым. Построение архитектуры, формирование инфраструктуры, написание кодовой базы - все делалось с нуля. Ограничения были только со стороны заказчика на определенный стек, поскольку они не хотели плодить зоопарк технологий, что я, собственно, поддерживаю.
К сожалению, технические аспекты раскрыть не могу. Но зато могу поделиться общим впечатлением.
Построение архитектуры
Для того чтобы что-то делать, надо понять, что именно надо делать. Сначала я собрал всю информацию, что у нас есть от заказчика, так называемые функциональные требования: каталог, возможность заказа, push-оповещения и так далее. Попытался накидать черновик схемы взаимодействий. Затем начал описывать все компоненты, которые будут у нас в системе и как они будут общаться друг с другом.
После этого настал черед посмотреть на нефункциональные требования - DAU, availability, количество пользователей и так далее. В схему добавились новые компоненты, что-то из текущих изменилось для обеспечения функциональности, отслеживания ошибок и мониторинга показателей. Необходимо помнить о том, что мы ориентируемся на бизнес, а ему важны цифры - мы должны их предоставить.
Пишем код
Если вы думаете, что написать backend для мобильного приложения, которое обслуживает 300к+ пользователей без багов, просто - это не так. Есть множество моментов, которые сложно учесть, нюансы, которые будут у каждого бизнеса свои, и много других подводных камней. Чтобы этого избежать, приходится очень часто созваниваться и встречаться с бизнесом. Проводить множество тестов. Я как-то раз поехал в "Буше" и в реальном времени делал заказ через бета-версию приложения, чтобы отладить работу.
Запуск приложения
Наступает тот самый момент перед запуском, тебя наполняет множество эмоций, но они быстро исчезают. Весь запуск состоит в том, что ты, условно, просто нажимаешь кнопку «опубликовать» и потом начинаешь долго и мучительно смотреть логи, метрики, получать сообщения из техподдержки и моментально править все, что только возможно. Никакого шампанского, фейерверков и танцев до утра - в общем, совсем не весело.
Небольшим итогом, могу сказать, что это было круто! Конечно, глупо отрицать, что иногда хотелось это все бросить, были моменты, которые раздражали и в целом сложностей было достаточно. Но я рад, что был на этом проекте.
🔥3🍾3❤2💔1
Начнем день с повторения алгоритмов и сегодня у нас в гостях.
Циклическая сортировка
Основные применения метода циклической сортировки:
- когда требуется минимизировать количество операций записи.
- когда необходимо выполнить сортировку "на месте", минимизируя использование дополнительной памяти.
Алгоритм:
1. Для каждого элемента массива ищем правильную позицию для вставки этого элемента.
2. Когда мы находим правильную позицию, проверяем, не находимся ли мы уже в начале цикла. Если да, завершаем текущий цикл.
3. Вставляем элемент на правильную позицию.
4. Переходим к следующему элементу и повторяем процесс.
5. Повторяем процесс до тех пор, пока не отсортируем все элементы.
По памяти - O(1), по времени - O(n^2)
Пример задачи: Отсортировать массив целых чисел с использованием циклической сортировки.
#ПовторяемАлгосы
Циклическая сортировка
Основные применения метода циклической сортировки:
- когда требуется минимизировать количество операций записи.
- когда необходимо выполнить сортировку "на месте", минимизируя использование дополнительной памяти.
Алгоритм:
1. Для каждого элемента массива ищем правильную позицию для вставки этого элемента.
2. Когда мы находим правильную позицию, проверяем, не находимся ли мы уже в начале цикла. Если да, завершаем текущий цикл.
3. Вставляем элемент на правильную позицию.
4. Переходим к следующему элементу и повторяем процесс.
5. Повторяем процесс до тех пор, пока не отсортируем все элементы.
По памяти - O(1), по времени - O(n^2)
Пример задачи: Отсортировать массив целых чисел с использованием циклической сортировки.
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
}
}
}
}#ПовторяемАлгосы
🙏1🌚1
Творчество или логика
Задумался о том, что со временем в работе программиста так называемая логика побеждает творчество в решении вопросов. В самом начале пути ты больше экспериментируешь, проявляешь смекалку, «креативишь» — если можно так сказать. Тебя вдохновляет сам процесс того, что ты создаешь что-то новое (возможно, только для тебя), будь то игра, скрипт или какой-то сайт — в это время творчество и логика работают в команде и помогают тебе находить необычные решения.
Но со временем, когда мы набираемся опыта, работаем над коммерческими проектами, читаем и пишем код, на первый план выходит логика. Появляются строгие архитектурные стандарты, требования по безопасности, оптимизации и поддерживаемости кода. Мы становимся более дисциплинированными и структурированными, следуем проверенным методологиям и паттернам.
Думаю, еще не малую роль сыграли AI… Но оставлю эту мысль на другой пост, а пока просто вкину пример: Copilot, который подсказывает вам «правильный» вариант кода, уже подумал за вас и заставляет вас думать над тем, что написал он, вместо того, чтобы просто проявить фантазию.
Конечно, я не говорю о том, что творчество и креатив исчезают. Они скорее видоизменяются, и творчество теперь проявляется в поиске оптимальных решений, которые соответствуют текущим требованиям. То есть, мы строим архитектуру, которую можно масштабировать, или пишем код, который легко поддерживать — в этом тоже есть своего рода творчество, но оно немного другое.
Но, блин, иногда хочется, да и в целом, я считаю, что надо возвращаться в то время, когда всё казалось проще и свободнее. Заводить pet-проекты, пробовать различные технологии, которые никогда не добавят в вашу инфраструктуру, соглашаться на какие-то сторонние проекты или помогать друзьям и просто кайфовать от процесса. Я уверен, что именно в таком процессе и рождаются гениальные идеи!
Этот канал я могу также назвать попыткой проявить творчество и размять мозг. И это оказалось совсем не просто. У меня нет четкого понимания для чего я его сделал и к чему иду, интересно это аудитории или нет, но подстраиваться под тренды, рекламу или еще что-либо я не хочу. Основная идея - нет идеи, нет логики, только творчество.
#ХабМыслей #МоментДляРазмышлений
Задумался о том, что со временем в работе программиста так называемая логика побеждает творчество в решении вопросов. В самом начале пути ты больше экспериментируешь, проявляешь смекалку, «креативишь» — если можно так сказать. Тебя вдохновляет сам процесс того, что ты создаешь что-то новое (возможно, только для тебя), будь то игра, скрипт или какой-то сайт — в это время творчество и логика работают в команде и помогают тебе находить необычные решения.
Но со временем, когда мы набираемся опыта, работаем над коммерческими проектами, читаем и пишем код, на первый план выходит логика. Появляются строгие архитектурные стандарты, требования по безопасности, оптимизации и поддерживаемости кода. Мы становимся более дисциплинированными и структурированными, следуем проверенным методологиям и паттернам.
Думаю, еще не малую роль сыграли AI… Но оставлю эту мысль на другой пост, а пока просто вкину пример: Copilot, который подсказывает вам «правильный» вариант кода, уже подумал за вас и заставляет вас думать над тем, что написал он, вместо того, чтобы просто проявить фантазию.
Конечно, я не говорю о том, что творчество и креатив исчезают. Они скорее видоизменяются, и творчество теперь проявляется в поиске оптимальных решений, которые соответствуют текущим требованиям. То есть, мы строим архитектуру, которую можно масштабировать, или пишем код, который легко поддерживать — в этом тоже есть своего рода творчество, но оно немного другое.
Но, блин, иногда хочется, да и в целом, я считаю, что надо возвращаться в то время, когда всё казалось проще и свободнее. Заводить pet-проекты, пробовать различные технологии, которые никогда не добавят в вашу инфраструктуру, соглашаться на какие-то сторонние проекты или помогать друзьям и просто кайфовать от процесса. Я уверен, что именно в таком процессе и рождаются гениальные идеи!
Этот канал я могу также назвать попыткой проявить творчество и размять мозг. И это оказалось совсем не просто. У меня нет четкого понимания для чего я его сделал и к чему иду, интересно это аудитории или нет, но подстраиваться под тренды, рекламу или еще что-либо я не хочу. Основная идея - нет идеи, нет логики, только творчество.
#ХабМыслей #МоментДляРазмышлений
🔥2👍1👏1
Небольшой ретрит на выходные
Уехать на природу на пару дней без связи и интернета — в этом есть что-то привлекательное. Не буду говорить, что подобные практики полезны, типа перезагружается мозг, очищаются мысли и все такое. Просто хочу сказать, что это было кайфово.
Я на два дня в целом забыл о существовании телефона, и, честно говоря, он мне даже не был нужен. Периодически возникали мысли о работе, но они очень быстро уходили.
Перезагрузился ли я?
Не заметил такого.
Нашел ли я смысл жизни?
Нет. Но для меня просто отдохнуть — это уже достижение.
Придумал план, как привести сюда миллион подписчиков?
К сожалению, тоже нет.
Важно то, что эти два дня напомнили мне о важности баланса между работой и отдыхом. Да, возможно, я не привез домой новых идей и планов на миллион, но я вернулся с чувством внутреннего покоя и свежей энергии.
Ну и из полезного:
* Поймал рыбу (1 штука)
* Готовил два дня на костре
* Закончил текст для конференции на завтра
#хабМыслей #МоментДляРазмышлений
Уехать на природу на пару дней без связи и интернета — в этом есть что-то привлекательное. Не буду говорить, что подобные практики полезны, типа перезагружается мозг, очищаются мысли и все такое. Просто хочу сказать, что это было кайфово.
Я на два дня в целом забыл о существовании телефона, и, честно говоря, он мне даже не был нужен. Периодически возникали мысли о работе, но они очень быстро уходили.
Перезагрузился ли я?
Не заметил такого.
Нашел ли я смысл жизни?
Нет. Но для меня просто отдохнуть — это уже достижение.
Придумал план, как привести сюда миллион подписчиков?
К сожалению, тоже нет.
Важно то, что эти два дня напомнили мне о важности баланса между работой и отдыхом. Да, возможно, я не привез домой новых идей и планов на миллион, но я вернулся с чувством внутреннего покоя и свежей энергии.
Ну и из полезного:
* Поймал рыбу (1 штука)
* Готовил два дня на костре
* Закончил текст для конференции на завтра
#хабМыслей #МоментДляРазмышлений
🔥4
Это были долгие два дня
Понедельник итак день тяжелый, так еще и весь день не мог нормально сконцентрироваться на задачах и привести мысли в порядок.
Я готовил текст на выступление, пересматривал презентацию, выбирал шмотки, и все это между рабочими тасками.
Ну а вечером я уже сидел в поезде до Москвы. А там в 6 утра я пересел в поезд на Кострому. Финалом было такси, которое увезло меня за город на одну базу отдыха. Дорога не особо приятная, но таков путь.
Я не умею делать прогревы, да и сил особо не осталось, просто хочу сказать, что весь этот путь был проделан ради того, чтобы выступить на летней школе программирования для крутых ребят, победителей олимпиад по информатике/математике
Понедельник итак день тяжелый, так еще и весь день не мог нормально сконцентрироваться на задачах и привести мысли в порядок.
Я готовил текст на выступление, пересматривал презентацию, выбирал шмотки, и все это между рабочими тасками.
Ну а вечером я уже сидел в поезде до Москвы. А там в 6 утра я пересел в поезд на Кострому. Финалом было такси, которое увезло меня за город на одну базу отдыха. Дорога не особо приятная, но таков путь.
Я не умею делать прогревы, да и сил особо не осталось, просто хочу сказать, что весь этот путь был проделан ради того, чтобы выступить на летней школе программирования для крутых ребят, победителей олимпиад по информатике/математике
🤩4👾1
Media is too big
VIEW IN TELEGRAM
И что меня ждало далее
Я не совсем понимал, куда я еду, и как это будет выглядеть, поэтому все, что я видел далее, было неожиданно.
Лагерь - топ. Я вернулся в свое детство, когда сам просил родителей отправить меня в подобный. Правда, там не было компьютеров, телефонов и направленность лагеря была в спорт, но это не суть.
Очень крутой и молодой коллектив ребят организаторов, я рад знакомству с каждым. Теплая, дружелюбная атмосфера. Все рассказали, показали, накормили и успокоили. Наверно, от части, это также помогло хорошо выступить.
Ну и само выступление вызвало бурю эмоций. Очень приятно видеть в глазах ребят рвение. Я видел, как они слушали, делали какие-то пометки и в конце задали большое количество вопросов. Им хотелось слышать как можно больше реальных историй, ведь они драйвят больше всего. Ну и без интересных каверзных вопросов тоже мы не обошлись 😅 Подарил мерча самым активным ребятам за крутые вопросы.
Это был незаменимый опыт. Лично для себя могу сделать вывод, что выступать мне нравится. Я не могу объективно оценить свое выступление, но уже сейчас скажу, что это только начало.
Я не совсем понимал, куда я еду, и как это будет выглядеть, поэтому все, что я видел далее, было неожиданно.
Лагерь - топ. Я вернулся в свое детство, когда сам просил родителей отправить меня в подобный. Правда, там не было компьютеров, телефонов и направленность лагеря была в спорт, но это не суть.
Очень крутой и молодой коллектив ребят организаторов, я рад знакомству с каждым. Теплая, дружелюбная атмосфера. Все рассказали, показали, накормили и успокоили. Наверно, от части, это также помогло хорошо выступить.
Ну и само выступление вызвало бурю эмоций. Очень приятно видеть в глазах ребят рвение. Я видел, как они слушали, делали какие-то пометки и в конце задали большое количество вопросов. Им хотелось слышать как можно больше реальных историй, ведь они драйвят больше всего. Ну и без интересных каверзных вопросов тоже мы не обошлись 😅 Подарил мерча самым активным ребятам за крутые вопросы.
Это был незаменимый опыт. Лично для себя могу сделать вывод, что выступать мне нравится. Я не могу объективно оценить свое выступление, но уже сейчас скажу, что это только начало.
🔥8😍2
Интервальное слияние
Основные применения метода интервального слияния:
- Задачи, связанные с расписаниями, временными промежутками и любыми задачами, требующими объединения пересекающихся или смежных интервалов
- Также оптимизации и упрощения работы с временными данными, такими как управление ресурсами, планирование задач и обработка временных интервалов
Алгоритм:
1. Сначала сортируем интервалы по начальным значениям.
2. Затем начиная с первого интервала и перебираем все остальные интервалы.
3. Если текущий интервал пересекается с предыдущим, объединяем их в один интервал.
4. Если текущий интервал не пересекается с предыдущим, добавляем предыдущий интервал к результирующему списку и продолжаем сравнивать текущий интервал с последующими.
Временная сложность:
* Сортировка интервалов: O(n log n), где n - количество интервалов. Это связано с тем, что перед объединением интервалов необходимо отсортировать их по начальным точкам.
* Объединение интервалов: O(n), после сортировки интервалы объединяются за линейное время.
Таким образом, общая временная сложность алгоритма интервального слияния составляет O(n log n), где n - количество интервалов.
Пространственная сложность:
Пространственная сложность зависит от того, какие структуры данных используются для хранения интервалов и промежуточных результатов. Обычно это может быть O(n) дополнительной памяти для хранения отсортированных интервалов и результата их слияния.
Пример задачи: Объединить пересекающиеся временные интервалы.
#ПовторяемАлгосы
Основные применения метода интервального слияния:
- Задачи, связанные с расписаниями, временными промежутками и любыми задачами, требующими объединения пересекающихся или смежных интервалов
- Также оптимизации и упрощения работы с временными данными, такими как управление ресурсами, планирование задач и обработка временных интервалов
Алгоритм:
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. Пока писал этот пост, разблокировал воспоминания, ставь лайк если у тебя также. А я картинки прикреплю для большего эффекта, потому что фотки вряд ли найду.
Шамистан запустил прикольную волну, которую подхватил Олег и сделал пост на ту же тему (ставь ему огонек, если интересно почитать, что было дальше), которая привлекла и меня.
Я не из тех, кто рассказывает, что занимался совсем другим, учился на гуманитария и вот в один прекрасный день решил стать программистом.
Первый комп
Первый комп у меня появился в 1 классе, тогда мне привез его отец из Японии. Откровенно говоря, что с ним делать не знал даже он, а я и подавно. На него была накатана Windows 95 и были несколько игр, в которые мне быстро надоедало играть, и я начинал шерстить все значки и папки в поисках чего-то интересного. Потом один наш знакомый поставил на него 98-е окна, стало чуть интереснее. Тогда мне показали Word, сказали, что надо учиться печатать. Появилась возможность ставить хоть какие-то игры, которые были у друзей. Но в скором времени он перестал все тянуть из-за железа, и я начал искать способы, чтобы его раскачивать. Менялся видеокартами, что-то разбирал/собирал, короче, делал все, чтобы вдохнуть в него жизнь. Не вышло.
Первые шаги в код
Следующий комп появился в классе 6-7, я тогда слабо соображал в железе, выбор делал еще один наш знакомый, который почему-то решил, что встроенная видеокарта — это вообще кайф, просто надо чуть больше оперативки купить, и все будет летать. Спойлер: ничего не летало. С этим компом я долго возился. Игры не шли на нем совсем, кроме каких-то онлайн, например, Lineage II… Этой штуке я отдал несколько лет жизни, пока её тянул мой комп.
Именно в этот момент проснулся интерес к коду и внутренностям. Затем я начал поднимать собственные сервера для CS 1.6, делал сайты на ucoz для клана в контре, сервера для L2 со своими настройками, узнал, что такое Joomla. Золотые были времена. Кстати, в это же время были ArtMoney, CheMax, все возможные софты для автокача, короче — как вы поняли, это все я активно использовал, ахахаха)) Где-то приходилось разобраться, как это работает, что-то поправить и так далее. В общем, делал не столько для процесса заработка в игре, а ради спортивного интереса.
Точка невозврата
Далее ничего необычного, в школе чинил компы всем одноклассникам. Научился ставить винду (ZverCD — ван лав), править BIOS на базовом уровне и вот это вот все. В школе сдал ЕГЭ по информатике — то еще было приключение, потому что информатику преподавал физик, который ничего не знал в компах. Универ по специальности, закончил бакалавриат, параллельно делал несколько сайтов под заказ и работал в воспитательном отделе.
Вот я выпустился из универа, вот мой красный диплом по направлению «Прикладная информатика», а дальше что? А дальше — работы по специальности нет. Я работал то звукорежиссером, то DJ, то аниматором и параллельно получал степень магистра.
И только после того, как я переехал в Питер, я начал работать по специальности. Сначала в одной веб-студии, из которой уволили через месяц, а затем просто по различным компаниям. Пока не дошел до того, что мы имеем сейчас.
Да, последний абзац получился пустоват, но в канале, я думаю, будет еще много инфы, которая заполнит пробелы.
P.S. Пока писал этот пост, разблокировал воспоминания, ставь лайк если у тебя также. А я картинки прикреплю для большего эффекта, потому что фотки вряд ли найду.
🔥7👍1