Dev Easy Notes @android_easy_notes Channel on Telegram

Dev Easy Notes

Dev Easy Notes
Лучший underground канал про разработку, JVM и computer science с глупыми шутками и несмешными каламбурами.

По сотрудничеству писать @haroncode
2,423 Subscribers
91 Photos
98 Videos
Last Updated 05.03.2025 22:12

Лучший Underground Канал Про Разработку и Компьютерные Науки: Dev Easy Notes

Углубляясь в мир современного программирования, можно заметить, как важны сообщества и каналы, посвящённые обучению. Одним из таких уникальных ресурсов является канал Dev Easy Notes, который отличается от традиционных обучающих платформ. Этот underground канал не просто делится знаниями о разработке, углублённой теории JVM и компьютерных наук, но и делает это с помощью лёгкого и остроумного юмора. С фокусом на создание непринуждённой атмосферы, Dev Easy Notes стал местом, где разработчики могут учиться, обсуждать идеи и, конечно, смеяться. Не важно, новичок вы или опытный разработчик, здесь каждый найдёт что-то интересное для себя. Узнаем больше о том, что делает этот канал особенным и какие вопросы его аудитория задаёт чаще всего.

Каковы основные темы, обсуждаемые на канале Dev Easy Notes?

Канал Dev Easy Notes охватывает широкий спектр тем, связанных с разработкой программного обеспечения. Основные акценты делаются на Java Virtual Machine (JVM), языках программирования, алгоритмах и структурах данных. Это позволяет зрителям получить комплексные знания и углубиться в специфические области, такие как оптимизация кода и работа с базами данных.

К тому же, Dev Easy Notes включает в себя обсуждение современных технологий и инструментов, что помогает разработчикам быть в курсе последних тенденций в индустрии. Проведение воркшопов и живых сессий также является частью контента канала, что открывает дополнительные возможности для обучения.

Как канал сочетает обучение и юмор?

Одной из уникальных особенностей канала Dev Easy Notes является умение подносить серьёзные темы с элементами юмора. Каждый пост включает не только образовательный контент, но и шутки или каламбуры, которые помогают разрядить атмосферу. Это делает процесс обучения более увлекательным и менее давящим.

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

Кому подходит контент Dev Easy Notes?

Контент канала Dev Easy Notes подходит как профессиональным разработчикам, так и тем, кто только начинает свой путь в мире программирования. Для новичков это место, где они могут получить базовые знания о разработке и различных языках программирования.

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

Как можно связаться с автором канала для сотрудничества?

Если вы заинтересованы в сотрудничестве с Dev Easy Notes, вы можете написать автору канала напрямую через указанный в описании контакт: @haroncode. Этот способ предоставляет возможность обсудить различные аспекты сотрудничества и обмена опытом.

Учитывая активность канала и его популярность, многие ищут способы сотрудничества, будь то совместные проекты, гостьевые лекции или создание контента. Связь с автором — это первый шаг к интересным совместным инициативам.

Как канал Dev Easy Notes влияет на сообщество разработчиков?

Канал Dev Easy Notes значительно вносит вклад в сообщество разработчиков, предоставляя пространство для обмена знаниями и опытом. Он объединяет людей, которые разделяют одну страсть — разработку программного обеспечения и технологии.

Такое взаимодействие помогает создать сообщества вокруг темы программирования, что позволяет участникам развиваться, расширять свои горизонты и находить единомышленников. Через юмор и обучение, Dev Easy Notes помогает сформировать крепкие связи среди разработчиков.

Dev Easy Notes Telegram Channel

Dev Easy Notes - это лучший underground канал про разработку, JVM и computer science с глупыми шутками и несмешными каламбурами. Если вы увлечены программированием, интересуетесь современными технологиями и хотите быть в курсе последних новостей в мире IT, то этот канал для вас. Здесь вы найдете полезные заметки, советы, ссылки на обучающие материалы и многое другое. Канал создан для тех, кто стремится к профессиональному росту в сфере разработки программного обеспечения. Если вы хотите делиться своими знаниями, общаться с единомышленниками и расширять свой кругозор, то присоединяйтесь к нам уже сегодня! Для сотрудничества пишите по контакту @haroncode.

Dev Easy Notes Latest Posts

Post image

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

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

21 Nov, 10:13
1,005
Post image

Смотрите под ноги, дамы и господа, ибо я собираюсь уронить немного мудрости. Когда-то давным-давно я проходил курс по тестированию. Там говорилось о 7 основных принципах тестирования. Один из них называется "Скопление ошибок", который гласит: "Ошибки часто концентрируются в небольшом числе модулей".

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

Однако на практике я постоянно на это натыкаюсь, вот сука, почти каждый раз. Ты делаешь какую-то фичу, в ней обнаруживается баг. Ты лезешь его чинить и по пути обнаруживаешь ещё 3 бага, а если не обнаруживаешь, тебе эти 3-4 бага прилетят от QA в ближайшее время. Ну бывало же у вас такое?

Короче, в чём мудрость: если вам прилетел баг на какую-то часть системы, приглядитесь к ней тщательнее, скорее всего, там ещё бага 3-4 рядом.

20 Nov, 10:28
1,221
Post image

Недавно на работе возник разговор о Double check locking. Напомню если вдруг забыли. Вот представьте у вас тяжелый объект какой-то, который при создании требует кучу или памяти или времени, и вы не хотите его создавать сразу, а лениво когда понадобится. Мы можем конечно просто взять и вынести его в функцию, и потом вызвать в нужный момент:


private var heavy: HeavyObject? = null

fun get():HeabyObject {
if( heavy == null ){
heavy = HeavyObject()
}
return heavy
}



Однако, что если два потока одновременно вызовут эту функцию? Если класс действительно тяжелый, например инициализация LLM это может быть проблемой. Я уже молчу про остальные проблемы с visibility поля и прочими проблемы с многопоточкой. Тоже мне проблема, ну можно же тупо поставить синхронизацию и все, делов то.


private var heavy: HeavyObject? = null

fun get():HeabyObject = synchronized { … }


Ну вот и все, это решает все возможные проблемы. Правда теперь мы каждый раз используем Mutex даже на чтение, не особо эффективно получается.

Чтобы решить эту проблему, придумали подход называемый Double check locking, который используется в Dagger кстати. Суть проста, давай захватывать Mutex только если мы видим что объект еще не проинициализирован.


@Volatile
private var heavy: HeavyObject? = null

fun get(): HeavyObject {
var result: HeavyObject? = heavy
if (result == null) {
synchronized(lock) {
result = heavy
if (result == null) {
result = HeavyObject()
heavy = result
}
}
}
return result!!
}


Ну понимаете да, сначала чекаем на null, затем захватываем Mutex и еще раз чекаем, ведь кто-то мог захватить Mutex раньше и уже проинициализировать поле. Поэтому и double check.

В целом метод рабочий, хоть и не очень изящный. Однако, в фолиантах истории, есть еще один подход, о котором знают лишь единицы, он доступен только самым достойным (душнилам короче).

Есть у JVM одна интересная особенность, все static блоки выполняются thread safe, т.е JVM их автоматически синхронизирует потому как важно гарантировать что этот блок вызовется лишь один раз. Еще фишка static блоков в том, что они вызываются только в момент обращения к классу. Поэтому мы можем использовать эту систему, чтобы сделать ленивую инициализацию:


private object FieldHolder {

val field: HeavyObject = createObject()

private fun createObject(): HeavyObject = HeavyObject()
}

fun get(): HeavyObject {
return FieldHolder.field
}


Не особо верится, что тут действительно ленивая инициализация или что оно thread safe. Ради эксперимента попробуйте сами это проверить)

Главный вопрос тут конечно, почему тот же Dagger не использует данный подход? Вероятно потому, что если на каждую зависимость будет генериться по классу Holder, а огромное количество классов, которые существуют просто для некоторой оптимизации так себе идея.

Однако в своем коде, если хотите выебнуться на МРе можете такое попробовать. Только потом не плачьте, что с вами на обед не хотят идти. Один дурачок проверял, не будут раскрывать его личность....

18 Nov, 06:38
1,606
Post image

После публикации поста, спустя 0.0001 секунду меня обвинили в сексизме. Поэтому приношу свои глубочайшие извинения, разумеется радикальный способ могут использовать и девочки

08 Nov, 10:02
2,279