Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Самое подробное сравнение аутстаффинга и классического рекрутинга в закрытии IT позиций
Photo by RUT MIIT on Unsplash Всем привет! Меня зовут Руслан Гафуров. Я редактор проекта «Такова Реальность. IT». В этой статье вы найдете самое подробное сравнение (в цифрах) между двумя способами...
#вакансия #удалённо #parttime #преподаватель
Вакансия: преподаватель онлайн-курса Kotlin Backend Developer. Professional
Образовательная платформа OTUS расширяет команду экспертов (уже более 600 человек) и ищет опытных бэкенд-разработчиков на Kotlin, которым интересно делиться опытом.
Преподавательский опыт не обязателен — методист научит вас всему необходимому.
Обязанности:
- подготовиться к занятиям (темы на выбор, материалы предоставляются);
- преподавать онлайн, уделяя большое внимание практике. Так вы сможете структурировать опыт, развить навык публичных выступлений и обратной связи.
Условия:
✅ гибкий график, легко совмещать с основной работой, занятия в вечернее время;
✅ оплата от 4000 до 6000 руб. за 1,5 часа занятия;
✅ бонусы: доступ к курсам OTUS, нетворкинг, развитие личного бренда, воркшопы и конференции.
Обсудить подробнее: @yu_grin 🦉
Вакансия: преподаватель онлайн-курса Kotlin Backend Developer. Professional
Образовательная платформа OTUS расширяет команду экспертов (уже более 600 человек) и ищет опытных бэкенд-разработчиков на Kotlin, которым интересно делиться опытом.
Преподавательский опыт не обязателен — методист научит вас всему необходимому.
Обязанности:
- подготовиться к занятиям (темы на выбор, материалы предоставляются);
- преподавать онлайн, уделяя большое внимание практике. Так вы сможете структурировать опыт, развить навык публичных выступлений и обратной связи.
Условия:
✅ гибкий график, легко совмещать с основной работой, занятия в вечернее время;
✅ оплата от 4000 до 6000 руб. за 1,5 часа занятия;
✅ бонусы: доступ к курсам OTUS, нетворкинг, развитие личного бренда, воркшопы и конференции.
Обсудить подробнее: @yu_grin 🦉
Паттерны проектирования на языке Kotlin
Читать...
Читать...
Хабр
Паттерны проектирования на языке Kotlin (часть 1)
Паттерны проектирования - проверенные временем решения общих задач в программировании. Они разделяются на три категории: Порождающие (Creational) Структурные (Structural) Поведенческие (Behavioral) В...
Гайд по реализации паттерна Composite в Kotlin с sealed-классами и корутинами
Читать...
Читать...
Хабр
Гайд по реализации паттерна Composite в Kotlin с sealed-классами и корутинами
Привет, Хабр! Сегодня рассмотрим, как реализовать паттерн Composite в Kotlin с помощью sealed-классов и корутин . Если у вас есть сложная система с кучей объектов — простых и составных — и вы хотите...
Пишем Android приложение для фильтрации спам-звонков
Читать...
Читать...
Хабр
Пишем Android приложение для фильтрации спам-звонков
Всем привет! Меня зовут Иван Чечиков . В этой статье я расскажу о своем пет-проекте - Android приложении, которое может идентифицировать нежелательные входящие звонки. Информация, представленная...
Погружение в мир Lint'a в Android-проекте (часть 2)
Читать...
Читать...
Хабр
Погружение в мир Lint'a в Android-проекте (часть 2)
Продолжим рассматривать различные нюансы статического анализа с помощью Lint. Опираться будем на предыдущую статью . С момента её публикации прошло много времени, за которое вышло несколько значимых...
Серия вебинаров по серверной разработке на Kotlin. Продолжение
Статья рассказывает о новой версии популярной среды разработки от JetBrains — IntelliJ IDEA. В ней описываются нововведения, которые призваны сделать работу программистов более удобной и эффективной.
Читать...
Статья рассказывает о новой версии популярной среды разработки от JetBrains — IntelliJ IDEA. В ней описываются нововведения, которые призваны сделать работу программистов более удобной и эффективной.
Читать...
Хабр
Серия вебинаров по серверной разработке на Kotlin. Продолжение
Мы продолжаем серию вебинаров о разработке серверных приложений на Kotlin (на английском языке). С 18 февраля по 18 марта пройдут четыре вебинара, на которых мы вместе с вами рассмотрим прикладную...
Forwarded from Kotlin Multiplatform Broadcast
Есть ли функции на Server Driven UI (SDUI, он же BDUI) в вашем приложении?
Anonymous Poll
34%
Да
51%
Нет
7%
Не знаю
1%
Не занимаюсь разработкой
8%
Не участвую в опросе
A/B-тестирование в Android-разработке: гайд для middle+ разрабов
Читать...
Читать...
Хабр
A/B-тестирование в Android-разработке: гайд для middle+ разрабов
A/B-тестирование — это не только инструмент для продуктовых команд. Это суперспособность и для Android-разработчиков. В этой статье рассказываю, как опытные инженеры могут проектировать, реализовывать...
Forwarded from Kotlin Multiplatform Broadcast
Media is too big
VIEW IN TELEGRAM
0:00 Вступление
0:30 Positional Destructing (есть)
1:09 Named-based destructing (новая)
1:51 Nullability: Safety and ergonomics
3:00 Error class/object (новая)
4:07 Must-use Return Values (новая)
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
👩💻 Ktorm — минималистичный ORM для Kotlin-разработчиков. Этот фреймворк предлагает принципиально иной подход к работе с базами данных: вместо сложных конфигураций и магии аннотаций здесь чистый Kotlin-код с типизированным SQL DSL.
При этом фреймворк не абстрагируется от SQL, а аккуратно его дополняет: вы всегда видите, какой запрос будет выполнен, но пишете его на понятном Kotlin. Встроенная поддержка пагинации, агрегаций и транзакций делает Ktorm готовым к использованию в production.
@KotlinSenior #kotlin
При этом фреймворк не абстрагируется от SQL, а аккуратно его дополняет: вы всегда видите, какой запрос будет выполнен, но пишете его на понятном Kotlin. Встроенная поддержка пагинации, агрегаций и транзакций делает Ktorm готовым к использованию в production.
@KotlinSenior #kotlin
👩💻 kotlin-math — набор API в Kotlin, предназначенных для упрощения выполнения математических операций, связанных с графикой!
🌟 Эти API в основном моделируются по аналогии с GLSL (OpenGL Shading Language), что облегчает перенос кода в шейдеры и обратно. Предоставляемые типы данных предназначены для использования в качестве значимых типов, а большинство API представлены в виде функций верхнего уровня, а не методов.
🔐 Лицензия: Apache-2.0
🌟 Эти API в основном моделируются по аналогии с GLSL (OpenGL Shading Language), что облегчает перенос кода в шейдеры и обратно. Предоставляемые типы данных предназначены для использования в качестве значимых типов, а большинство API представлены в виде функций верхнего уровня, а не методов.
🔐 Лицензия: Apache-2.0
Допускали ли вы баги (креши, некорректное поведение и прочее) по причине игнорирования возвращаемого значения в функции?
Anonymous Poll
33%
Да
36%
Нет
8%
Затрудняюсь ответить
22%
Не участвую в опросе
💻 Vico — создание диаграмм и графиков на Kotlin
Vico — это легкая расширяемая библиотека Kotlin для создания диаграмм.
Библиотека совместима как с Jetpack Compose, так и с системой представлений, при этом 2 её основных модуля — compose и views, — являются независимыми.
🖥 GitHub
🟡 Wiki
@KotlinSenior #kotlin
dependencies {
implementation(libs.vico.compose)
implementation(libs.vico.compose.m2)
implementation(libs.vico.compose.m3)
implementation(libs.vico.core)
implementation(libs.vico.views)
}
Vico — это легкая расширяемая библиотека Kotlin для создания диаграмм.
Библиотека совместима как с Jetpack Compose, так и с системой представлений, при этом 2 её основных модуля — compose и views, — являются независимыми.
🖥 GitHub
🟡 Wiki
@KotlinSenior #kotlin
Что такое мульти-декларации (destructuring declarations)?
Мульти-декларации (destructuring declarations или деструктуризирующее присваивание) — это способ извлечения значений из объекта и присвоения их сразу нескольким переменным. В Kotlin этот механизм поддерживается с помощью оператора распаковки (destructuring operator) — componentN(), где N — номер компонента.
При создании data класса Kotlin автоматически создает функции componentN() для каждого свойства класса, где N — номер позиции переменной в конструкторе. Функции componentN() возвращают значения свойств в порядке их объявления в конструкторе. Это позволяет использовать мульти-декларации для распаковки значений свойств и присваивания их отдельным переменным.
Например, если у нас есть data класс Person с двумя свойствами name и age, мы можем использовать мульти-декларации, чтобы извлечь эти свойства и присвоить их двум переменным:
Мульти-декларации также могут быть использованы с массивами и другими коллекциями:
Мульти-декларации (destructuring declarations или деструктуризирующее присваивание) — это способ извлечения значений из объекта и присвоения их сразу нескольким переменным. В Kotlin этот механизм поддерживается с помощью оператора распаковки (destructuring operator) — componentN(), где N — номер компонента.
При создании data класса Kotlin автоматически создает функции componentN() для каждого свойства класса, где N — номер позиции переменной в конструкторе. Функции componentN() возвращают значения свойств в порядке их объявления в конструкторе. Это позволяет использовать мульти-декларации для распаковки значений свойств и присваивания их отдельным переменным.
Например, если у нас есть data класс Person с двумя свойствами name и age, мы можем использовать мульти-декларации, чтобы извлечь эти свойства и присвоить их двум переменным:
data class Person(val name: String, val age: Int)
val person = Person("Alice", 29)
val (name, age) = person
println(name) // Alice
println(age) // 29
Также можно использовать мульти-декларации в циклах, чтобы итерироваться по спискам объектов и распаковывать значения свойств:
val people = listOf(Person("Alice", 30), Person("Bob", 40))
for ((name, age) in people) {
println("$name is $age years old")
}
// Alice is 30 years old
// Bob is 40 years old
Мульти-декларации также могут быть использованы с массивами и другими коллекциями:
val list = listOf("apple", "banana", "orange")
val (first, second, third) = list
println(first) // apple
println(second) // banana
println(third) // orange
гиф-дринк-ап-НН.gif
33.8 MB
Есть вариант на 27 августа — DrinkUp от Авито для backend-разработчиков в Нижнем Новгороде ☄️
Встречаемся в 19:00 в DKRT space, чтобы в формате дискуссий обсудить:
➡️ как правильно структурировать проекты;
➡️ кому и как проще вкатиться в Go и почему он такой странный;
➡️ как LLM помогает разработчикам.
Остальные темы раскрывать не будем — можете посмотреть их по ссылке! Там же, кстати, и регистрация на ивент.
Встречаемся в 19:00 в DKRT space, чтобы в формате дискуссий обсудить:
➡️ как правильно структурировать проекты;
➡️ кому и как проще вкатиться в Go и почему он такой странный;
➡️ как LLM помогает разработчикам.
Остальные темы раскрывать не будем — можете посмотреть их по ссылке! Там же, кстати, и регистрация на ивент.
readline4k - Kotlin/Native библиотека для разработки консольных интерактивных приложений для Desktop
#kotlin #native #cli
val history = "history.txt" // Filesystem path to the history file.
// Configure the LineEditor.
val config = LineEditorConfig(
maxHistorySize = 100,
completionType = CompletionType.LIST,
// See the documentation for more options.
)
// Create a new LineEditor instance.
val editor = SimpleLineEditor(
linePrefix = "> ",
config = config,
).also { editor ->
// Set up the completer and highlighter.
editor
// Provides file completion (optional).
.withCompleter(SimpleFileCompleter())
// Provides color highlighting (optional).
.withHighlighter(SimpleHighlighter())
// Load the history from the disk (throws LineEditorError if it fails).
editor.loadHistory(history).getOrThrow()
}
println("Welcome to the LineEditor example!")
println("Press Ctrl+C to exit")
while (true) {
// Read a line from the user.
editor.readLine()
.onFailure { err ->
// err is a LineEditorError
println(err.message)
break
}
.onSuccess { line ->
// We can also add the line to the history
// automatically by setting autoAddHistory = true in the config.
editor.addHistoryEntry(line)
println(line)
}
}
// Save the history to disk.
editor.saveHistory(history)
#kotlin #native #cli