Получи случайную криптовалюту за регистрацию!

Войти в ойти

Логотип телеграм канала @v0iti — Войти в ойти В
Логотип телеграм канала @v0iti — Войти в ойти
Адрес канала: @v0iti
Категории: Технологии
Язык: Русский
Количество подписчиков: 36
Описание канала:

Войти в ойти - это канал о программировании и it :-) Я постараюсь разбавлять новости и интересные мне заметки о программировании информацией про айти для новичков.
Скорее всего получится упор на GoLang и PHP, так как это мои основные ЯП.
Автор: @s_romko

Рейтинги и Отзывы

4.00

3 отзыва

Оценить канал v0iti и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

1

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения

2023-01-14 18:54:11 Субботний вечер, самое то рассказать про классную книгу, которую я использовал как пособие по подготовке к собеседованию system design. Как я ранее и говорил, данная часть собеседования - это по сути монолог и поток ваших мыслей, что делать, как и почему.
https://telegra.ph/System-Design-Podgotovka-k-slozhnomu-intervyu-01-14-2

#interview
11 views15:54
Открыть/Комментировать
2023-01-13 12:31:05 Считаю важно каждый день что-то новое читать или разбирать - это позволяет быть в тонусе и постоянно по чуть-чуть расширять свой кругозор, обогощать теоритическую базу и просто не забывать буквы
Сегодня я почитал про open source проекты и как можно к ним присоединиться, честно всегда хотел попробовать сделать что-то полезное для OS, но не решался, скорее всего из-за все того же синдрома самозванца... Но когда-нибудь я точно осмелюсь и попробую запилить какой-нибудь полезный код в open source библиотеку или программу А пока предлагаю и вам ознакомиться со списком того, чем может помочь почти каждый

https://habr.com/ru/post/710386/

#open_source
11 viewsedited  09:31
Открыть/Комментировать
2023-01-12 21:57:37 Классная статья про прохождение секции алгоритмы на собесах. Помню читал её ещё когда готовился к собеседованию - зашло и помогло :) Делюсь и с вами.

https://habr.com/ru/company/avito/blog/662922/

#interview
12 views18:57
Открыть/Комментировать
2023-01-12 14:48:34
Если рассуждать дальше о состоянии гонки, то кажется, что если у вас приложение имеет места с конкурентным доступом к данным, то для отслеживания деградации в этих местах стоит включить флаг -race для части тестов. Если прикинуть, то тесты это самое оптимальное место, где можно отслеживать состояние гонки, так как:
- в тесте мы можем подготовить какие-то сложные, пограничные случаи;
- мы не будем бояться сломать сложные, для отладки и ручного тестирования, места программы;
- продовое приложение не будет потреблять ресурсы на это дело.

Из пирамиды тестирования, думаю, такую практику можно применять к интеграционным тестам и функциональным. Но есть одно "но", данные для тестов должны быть приближенными к реальным и реально запускать функционал с конкурентным доступом к данным, иначе ничего не поймаем и не обретем уверенность :)

#go
13 views11:48
Открыть/Комментировать
2023-01-12 10:00:04 Вчера мы уже обсуждали состояние гонки. Давайте попробуем лучше понять как работает детектор состояния гонки. Итак, состояние гонки (race conditions) - ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Данная ошибка сложна для поиска, так как может возникать не всегда, а только при определенных условиях.

Начиная с версии 1.1 в Golang есть встроенный инструмент для поиска состояния гонки в приложении. Детектор гонки основан на библиотеке времени выполнения (runtime library) C/C++ ThreadSanitizer, которая использовалась для обнаружения многих ошибок во внутренней кодовой базе Google и в Chromium. Детектор гонки запускается, когда мы передаем флаг -race, тогда компилятор обрабатывает все обращения к памяти с помощью кода, который записывает, когда и как был осуществлен доступ к памяти. Библиотека времени выполнения отслеживает несинхронизированные обращения к общим переменным и в случае обнаружения проблем выдает предупреждение. В предупрждении будут зафиксированы все проблемные ситуации, каждая будет начинаться со слов WARNING: DATA RACE.

Как уже было ранее продемонстрированно запустить детектор состояния гонки очень просто, необходимо просто указать флаг -race:

go test -race app
go run -race app.go
go build -race app


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

Можно еще почитать на wiki https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B5_%D0%B3%D0%BE%D0%BD%D0%BA%D0%B8

#go
11 views07:00
Открыть/Комментировать
2023-01-11 17:47:23 Честно, пока трудно самому представить задачи, где это потребуется, но в целом идея выделения памяти, в которой не работает сборщик мусора - это интересно. Как минимум в некоторых кейсах может улучшить производительность.
https://habr.com/ru/company/otus/blog/710124/

#go
12 views14:47
Открыть/Комментировать
2023-01-11 11:10:14 Продолжаем осваивать Go, сразу скажу, я не хочу из канала сделать набор уроков с четкой структурой, наоборот, что сам применяю или тестирую - об этом и пишу )

Итак, сегодня я попробовал написать программу, которая в горутинах увеличивает счетчик при помощи пакета atomic. Atomic - это пакет содержащий функции для атомарных операций. Атомарная операция - это операция, выполняемая за один шаг относительно других горутин. Мы избегаем состояния гонки и можем безопасно изменять переменную. Код:


package main

import (
"fmt"
"sync"
"sync/atomic"
)

type atomCounter struct {
counter int64
}

func (a *atomCounter) value() int64 {
return atomic.LoadInt64(&a.counter)
}

func (a *atomCounter) add(value int64) {
atomic.AddInt64(&a.counter, value)
}

func main() {
var wg sync.WaitGroup
var counter atomCounter
for i := 0; i < 100; i++ {
wg.Add(1)
go func(counter *atomCounter) {
defer wg.Done()
for j := 0; j < 10; j++ {
counter.add(5)
}
}(&counter)
}
wg.Wait()
fmt.Println(counter.value())
}


Мы определили структуру и два метода. Первый для получения текущего значения счетчика, второй для увеличения счетчика на заданную величину. Далее создаем 100 горутин и в цикле каждой увеличиваем счетчик на 5. Дожидаемся выполнения и выводим результат. Мы получим следующий результат: 5000. Чтобы убедиться, что наш счетчик с atomic корректно работает, попробуем заменить строчку counter.add(5) на арифметическую counter.counter += 5, в результате получим, например, 4970. Почему, например? Потому что результат будет не постоянным из-за состояния гонки, убедиться в наличии состояния гонки можно так:

go run -race atomic.go

Результат:

WARNING: DATA RACE

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

#go
13 viewsedited  08:10
Открыть/Комментировать
2023-01-10 14:03:37 Отличная статья guide по настройке и офрмлению GitHub репозитория для open-source библиотеки. Не обращайте внимания, что в заголовке информация про фронтенд разработчика - данный гайд применим к любым языкам программирования и it направлениям! В общем рекомендую добавлять в избранное и когда у вас появится желание сделать open-source библиотеку, вы будете знать, где найти чек-лист и гайд

https://habr.com/ru/company/inDrive/blog/706662/

#open_source #guide
16 views11:03
Открыть/Комментировать
2023-01-10 12:19:28 Ого, сегодня отмечает день рождения Дональд Кнут! Автор "Искусство программирования", помню когда только начинал свой путь в IT, была шутка (а может и нет), что если вы осилили и поняли труды Дональда Кнута, то добро пожаловать в Google. Помню открывал его книги...я не смог осилить, но это я ленивый и не образованный, а не книги плохие В общем долгих лет Дональду!

Согласно вики "На январь 2013 года Кнут занимал 37-е место в списке самых цитируемых авторов в области информатики согласно проекту CiteSeer."

Обложка третьего издания первого тома книги содержит цитату Билла Гейтса: «Если вы считаете себя действительно хорошим программистом…, прочитайте „Искусство программирования“ (Кнута)… Если вы сможете прочесть весь этот труд, то вам определённо следует отправить мне резюме».

Вот тут можно почитать еще интересных фактов из его жизни https://22century.ru/popular-science-publications/donald-knuth
16 viewsedited  09:19
Открыть/Комментировать
2023-01-10 09:27:55 Если вы хотите войти в ойти, то будьте готовы к работе удаленно. Это с виду кажется, что дома работать намного проще, но на самом деле все может оказаться наоборот. Почему? Все просто, работая дома, вы самостоятельно должны следить за своей продуктивностью, сами садиться за комп и не отвлекаться на домашние дела и семью, даже когда ребенок бегает вокруг

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

Я на удаленке работаю уже около 15 лет, я бы даже сказал по-другому, я в офисе не работал в принципе, если не считать командировки И скажу честно, иногда было очень тяжело и заставлять себя и находить мотивацию и перестать распыляться на все. Чему я стараюсь придерживаться:
- вставать в одно и то же время
- утром делать самые сложные задачи, так как я начинаю работать раньше официальных созвонов - я успеваю многое сделать до них
- договориться с семьей - это получилось, стараются не отвлекать по пустякам
- планировать задачи на день - то есть я с вечера примерно понимаю, что надо успеть за следующий день, какие встречи и раскидать все по рабочему дню. Раньше тут помогали различные туду листы, сейчас, видимо, с опытом в них уже нет острой необходимости.

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

https://habr.com/ru/post/709462/

#tip
16 views06:27
Открыть/Комментировать