This media is not supported in your browser
VIEW IN TELEGRAM
Осваиваем скроллинг в SwiftUI: реализация кастомной прокрутки
SwiftUI предоставляет несколько способов реализации прокрутки. Среди них
В этой статье мы рассмотрим, как с помощью
Основы пользовательской пагинации
Чтобы создать пользовательскую пагинацию, нужно:
1. Отслеживать положение прокрутки.
2. Определять текущую страницу.
3. Позволять пользователю переходить между страницами.
4. Синхронизировать состояние прокрутки с внешними элементами управления.
Используемые инструменты
- ScrollView — для создания прокручиваемого содержимого.
- GeometryReader — для отслеживания положения каждого элемента.
- PreferenceKey — для передачи геометрической информации.
- ScrollViewReader — для управления прокруткой программно.
Шаг за шагом
1. Определение структуры данных: мы создаём массив элементов, которые будут отображаться на страницах.
2. Создание кастомного ключа предпочтений: используем
3. Измерение положения: с помощью
4. Отслеживание текущей страницы: в родительском представлении собираем значения всех элементов и вычисляем, какая страница сейчас видна.
5. Прокрутка к странице: используем
6. Синхронизация с пользовательским интерфейсом: добавляем внешний индикатор текущей страницы и управление перелистыванием.
Пример кода
В статье представлен полный пример реализации горизонтального скролла с настраиваемой пагинацией. Также рассматривается подход к реализации вертикальной прокрутки с теми же принципами.
Заключение
Хотя стандартный
https://fatbobman.com/en/posts/mastering-swiftui-scrolling-implementing-custom-paging/
#ios
👉 @developer_mobila
SwiftUI предоставляет несколько способов реализации прокрутки. Среди них
TabView
с PageTabViewStyle
— самый простой способ добиться пагинации. Однако, если нам нужно больше контроля над логикой прокрутки и внешним видом интерфейса, мы можем использовать ScrollView
и реализовать собственную пагинацию.В этой статье мы рассмотрим, как с помощью
ScrollViewReader
, GeometryReader
и PreferenceKey
реализовать настраиваемую разбивку на страницы в SwiftUI. Мы также рассмотрим ключевые аспекты взаимодействия с прокруткой, включая определение текущей страницы, анимацию прокрутки и плавную синхронизацию с пользовательским интерфейсом.Основы пользовательской пагинации
Чтобы создать пользовательскую пагинацию, нужно:
1. Отслеживать положение прокрутки.
2. Определять текущую страницу.
3. Позволять пользователю переходить между страницами.
4. Синхронизировать состояние прокрутки с внешними элементами управления.
Используемые инструменты
- ScrollView — для создания прокручиваемого содержимого.
- GeometryReader — для отслеживания положения каждого элемента.
- PreferenceKey — для передачи геометрической информации.
- ScrollViewReader — для управления прокруткой программно.
Шаг за шагом
1. Определение структуры данных: мы создаём массив элементов, которые будут отображаться на страницах.
2. Создание кастомного ключа предпочтений: используем
PreferenceKey
, чтобы передавать информацию о положении представлений родителю.3. Измерение положения: с помощью
GeometryReader
внутри каждого элемента мы определяем его смещение относительно корневого окна.4. Отслеживание текущей страницы: в родительском представлении собираем значения всех элементов и вычисляем, какая страница сейчас видна.
5. Прокрутка к странице: используем
ScrollViewReader
для анимации переходов между страницами при изменении состояния.6. Синхронизация с пользовательским интерфейсом: добавляем внешний индикатор текущей страницы и управление перелистыванием.
Пример кода
В статье представлен полный пример реализации горизонтального скролла с настраиваемой пагинацией. Также рассматривается подход к реализации вертикальной прокрутки с теми же принципами.
Заключение
Хотя стандартный
TabView
с пагинацией прост в использовании, он ограничен в настройках. Реализация собственной пагинации через ScrollView
и сопутствующие инструменты SwiftUI даёт нам полный контроль над поведением интерфейса и взаимодействием с пользователем.https://fatbobman.com/en/posts/mastering-swiftui-scrolling-implementing-custom-paging/
#ios
👉 @developer_mobila
Media is too big
VIEW IN TELEGRAM
Мок собеседование Android разработчика в Контур: архитектура и кодинг приложения
Собеседование на позицию Middle Android Developer в формате разработчик приложения: архитектуру, написания кода и ответы на теоретические вопросы
0:00 Вступление
0:35 Знакомство с экспертом
1:34 Про формат собеседования
3:18 Знакомство с кандидатом
6:15 Обсуждение технического задания
22:28 Выбор стека и архитектура
49:23 Обратная связь по архитектуре
50:25 Проектирование БД
1:02:16 Общее описание решения
1:05:22 Лайвкодинг + вопросы
1:54:50 Блиц по Android
2:00:49 Обсуждение собеседований
2:03:05 Финал собеседования
2:04:39 Обратная связь
2:06:18 Ответы на вопросы
источник
#Android
👉 @developer_mobila
Собеседование на позицию Middle Android Developer в формате разработчик приложения: архитектуру, написания кода и ответы на теоретические вопросы
0:00 Вступление
0:35 Знакомство с экспертом
1:34 Про формат собеседования
3:18 Знакомство с кандидатом
6:15 Обсуждение технического задания
22:28 Выбор стека и архитектура
49:23 Обратная связь по архитектуре
50:25 Проектирование БД
1:02:16 Общее описание решения
1:05:22 Лайвкодинг + вопросы
1:54:50 Блиц по Android
2:00:49 Обсуждение собеседований
2:03:05 Финал собеседования
2:04:39 Обратная связь
2:06:18 Ответы на вопросы
источник
#Android
👉 @developer_mobila
💻Хотите научиться писать эффективные сетевые клиенты для iOS и разобраться в том, какие технологии лучше выбрать для SwiftUI?
📖На открытом вебинаре 22 апреля в 20:00 мск мы подробно разберем архитектуру приложений на SwiftUI и выбор сетевого клиента: что лучше — Alamofire, Moya или нативное решение? Мы также покажем, как интегрировать эти технологии с Combine и async-await.
📊Умение работать с сетевыми клиентами под SwiftUI — ключевой навык для iOS-разработчика.
👉Регистрируйтесь прямо сейчас и получите скидку на большое обучение «iOS Developer. Professional» по промокоду IOSPRO4: https://vk.cc/cKVghj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📖На открытом вебинаре 22 апреля в 20:00 мск мы подробно разберем архитектуру приложений на SwiftUI и выбор сетевого клиента: что лучше — Alamofire, Moya или нативное решение? Мы также покажем, как интегрировать эти технологии с Combine и async-await.
📊Умение работать с сетевыми клиентами под SwiftUI — ключевой навык для iOS-разработчика.
👉Регистрируйтесь прямо сейчас и получите скидку на большое обучение «iOS Developer. Professional» по промокоду IOSPRO4: https://vk.cc/cKVghj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🧑🎨 В статье подробно описывается процесс создания эффекта шлифованного металла в Jetpack Compose с использованием градиентов и слоев.
Кратко о содержании:
• Кольца: Создание концентрических кругов с помощью радиального градиента и случайного распределения прозрачных и темных полос для имитации металлической текстуры.
• Блики: Добавление бликов с использованием sweep-градиента, который можно вращать для создания эффекта движения света.
• Анимация: Реализация вращения бликов с учетом ориентации устройства или пользовательских событий.
• Обрезка: Использование clipPath для обрезки градиентов по заданной форме, предотвращая визуальные артефакты при вращении.
• Дополнительные детали: Добавление фаски с помощью градиентной рамки для усиления реалистичности металлического эффекта.
https://www.sinasamaki.com/brushed-metal-ui-in-jetpack-compose/
#Android
👉 @developer_mobila
Кратко о содержании:
• Кольца: Создание концентрических кругов с помощью радиального градиента и случайного распределения прозрачных и темных полос для имитации металлической текстуры.
• Блики: Добавление бликов с использованием sweep-градиента, который можно вращать для создания эффекта движения света.
• Анимация: Реализация вращения бликов с учетом ориентации устройства или пользовательских событий.
• Обрезка: Использование clipPath для обрезки градиентов по заданной форме, предотвращая визуальные артефакты при вращении.
• Дополнительные детали: Добавление фаски с помощью градиентной рамки для усиления реалистичности металлического эффекта.
https://www.sinasamaki.com/brushed-metal-ui-in-jetpack-compose/
#Android
👉 @developer_mobila
Взаимодействие с Table View в SwiftUI
Когда нужно показать список данных, особенно длинный список, использование
В этом посте мы рассмотрим, как сделать строки
Проблема
Когда вы используете
Вот простой пример использования
В этом примере строки будут отображаться, но никакого выбора пользователя не будет.
Решение
Чтобы добавить возможность выбора строк, вы должны предоставить
Вот обновленная версия примера:
Теперь пользователь сможет кликать по строкам и выбирать их. Переменная
Если вы хотите разрешить множественный выбор, вместо одного
И затем передавать биндинг
Реакция на выбор
Чтобы реагировать на выбор пользователя, вы можете использовать
Вывод
Хотя
https://www.createwithswift.com/enabling-interaction-with-table-view-in-swiftui/
#ios
👉 @developer_mobila
Когда нужно показать список данных, особенно длинный список, использование
Table
в SwiftUI — отличный выбор. Однако иногда вы можете заметить, что при использовании Table
базовое взаимодействие с ним не совсем такое, какое хотелось бы. Например, строка таблицы может не казаться кликабельной или не обрабатывать события выбора так, как вы ожидали.В этом посте мы рассмотрим, как сделать строки
Table
в SwiftUI интерактивными и реагирующими на пользовательские действия.Проблема
Когда вы используете
Table
в SwiftUI, вы можете ожидать, что строки будут интерактивными и позволят пользователю выбирать их. Однако по умолчанию, особенно на macOS, строки могут выглядеть пассивно: клики по ним не обрабатываются так, как хотелось бы, и события выбора не происходят.Вот простой пример использования
Table
:
struct Person: Identifiable {
var id = UUID()
var name: String
var age: Int
}
struct ContentView: View {
var people = [
Person(name: "Alice", age: 30),
Person(name: "Bob", age: 25)
]
var body: some View {
Table(people) {
TableColumn("Name", value: \.name)
TableColumn("Age", value: \.age)
}
}
}
В этом примере строки будут отображаться, но никакого выбора пользователя не будет.
Решение
Чтобы добавить возможность выбора строк, вы должны предоставить
selection
биндинг для Table
. Таким образом Table
будет знать, какие строки выбраны.Вот обновленная версия примера:
struct ContentView: View {
@State private var selectedPerson: Person.ID?
var people = [
Person(name: "Alice", age: 30),
Person(name: "Bob", age: 25)
]
var body: some View {
Table(people, selection: $selectedPerson) {
TableColumn("Name", value: \.name)
TableColumn("Age", value: \.age)
}
}
}
Теперь пользователь сможет кликать по строкам и выбирать их. Переменная
selectedPerson
будет содержать идентификатор выбранного элемента.Если вы хотите разрешить множественный выбор, вместо одного
ID
вы можете использовать Set<ID>
:
@State private var selectedPeople = Set<Person.ID>()
И затем передавать биндинг
selection: $selectedPeople
.Реакция на выбор
Чтобы реагировать на выбор пользователя, вы можете использовать
onChange
модификатор:
.onChange(of: selectedPerson) { newSelection in
if let selected = newSelection {
print("Выбран человек с ID: \(selected)")
}
}
Вывод
Хотя
Table
в SwiftUI изначально может не выглядеть полностью интерактивным, добавление биндинга для selection
позволяет легко улучшить взаимодействие пользователя. Это делает строки таблицы кликабельными и позволяет обрабатывать выбор данных.https://www.createwithswift.com/enabling-interaction-with-table-view-in-swiftui/
#ios
👉 @developer_mobila
Forwarded from Яндекс
Подписывайтесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я создал персональную систему компонентов для iOS-приложений
Создание множества iOS-приложений привело меня к интересному наблюдению. Несмотря на схожую функциональность между проектами, каждый раз я заново создавал одни и те же элементы интерфейса: кнопки, карточки, списки, модальные окна и прочее. Это приводило к дублированию кода и замедляло разработку. Поэтому я решил создать персональную библиотеку компонентов, которую можно использовать в любом проекте.
Зачем мне понадобилась такая система?
Причины были простыми:
* Повторное использование кода
* Быстрый запуск MVP
* Единый визуальный стиль
* Простота поддержки
Система позволила мне сократить время разработки новых приложений и ускорить прототипирование.
Как я начал
Всё началось с анализа моих предыдущих проектов. Я выписал повторяющиеся элементы и разбил их по категориям:
* Кнопки
* Ячейки таблиц
* Навигационные элементы
* Модальные окна
* Формы
Затем я создал отдельный фреймворк на Swift — MireComponents, который можно подключать к любому проекту через Swift Package Manager.
Архитектура
Я структурировал компоненты следующим образом:
*
*
*
*
Каждый компонент строится по принципу модульности и легко настраивается под нужды проекта.
Пример: Кнопка
Таким образом, я могу создать кнопку всего одной строкой:
Использование
В каждом новом проекте я просто добавляю зависимость на
Создание собственной системы компонентов — отличное вложение времени, особенно если вы разрабатываете несколько приложений с нуля. Это снижает количество багов, ускоряет разработку и делает код чище.
https://medium.com/@mireabot/how-i-created-a-personal-component-design-system-for-ios-apps-d3f9be6f426c
#ios
👉 @developer_mobila
Создание множества iOS-приложений привело меня к интересному наблюдению. Несмотря на схожую функциональность между проектами, каждый раз я заново создавал одни и те же элементы интерфейса: кнопки, карточки, списки, модальные окна и прочее. Это приводило к дублированию кода и замедляло разработку. Поэтому я решил создать персональную библиотеку компонентов, которую можно использовать в любом проекте.
Зачем мне понадобилась такая система?
Причины были простыми:
* Повторное использование кода
* Быстрый запуск MVP
* Единый визуальный стиль
* Простота поддержки
Система позволила мне сократить время разработки новых приложений и ускорить прототипирование.
Как я начал
Всё началось с анализа моих предыдущих проектов. Я выписал повторяющиеся элементы и разбил их по категориям:
* Кнопки
* Ячейки таблиц
* Навигационные элементы
* Модальные окна
* Формы
Затем я создал отдельный фреймворк на Swift — MireComponents, который можно подключать к любому проекту через Swift Package Manager.
Архитектура
Я структурировал компоненты следующим образом:
*
UIComponents/
: визуальные элементы с минимальной логикой*
ViewModels/
: логика взаимодействия и состояния*
Themes/
: цвета, шрифты и отступы*
Helpers/
: утилиты и расширенияКаждый компонент строится по принципу модульности и легко настраивается под нужды проекта.
Пример: Кнопка
public final class MCButton: UIButton {
public init(title: String, style: MCButtonStyle) {
super.init(frame: .zero)
setup(title: title, style: style)
}
private func setup(title: String, style: MCButtonStyle) {
setTitle(title, for: .normal)
backgroundColor = style.backgroundColor
layer.cornerRadius = style.cornerRadius
// Прочие стили...
}
}
Таким образом, я могу создать кнопку всего одной строкой:
let button = MCButton(title: "Продолжить", style: .primary)
Использование
В каждом новом проекте я просто добавляю зависимость на
MireComponents
и начинаю сборку интерфейса. Это упрощает работу и сохраняет единообразие.Создание собственной системы компонентов — отличное вложение времени, особенно если вы разрабатываете несколько приложений с нуля. Это снижает количество багов, ускоряет разработку и делает код чище.
https://medium.com/@mireabot/how-i-created-a-personal-component-design-system-for-ios-apps-d3f9be6f426c
#ios
👉 @developer_mobila
Изучаем основы Android XR
В этом лабораторной работе вы улучшите базовое одноэкранное приложение, чтобы обеспечить захватывающий пользовательский опыт на Android XR.
Кодлаб от Google по разработке для Android XR. В этом лабораторной работе вы улучшите базовое одноэкранное приложение, чтобы обеспечить захватывающий пользовательский опыт на Android XR.
Что вы узнаете:
🔹 Уникальные пользовательские возможности, которые дает форм-фактор XR.
🔹 Основы адаптации приложений к работе на гарнитуре Android XR с помощью композабл элементов, предоставляемых библиотекой Jetpack Compose XR.
🔹 Как использовать элементы пользовательского интерфейса, предоставляемые библиотекой Compose XR.
🔹 Где можно узнать больше о создании приложений для Android XR.
https://developer.android.com/codelabs/xr-fundamentals-part-1#0
#Android
👉 @developer_mobila
В этом лабораторной работе вы улучшите базовое одноэкранное приложение, чтобы обеспечить захватывающий пользовательский опыт на Android XR.
Кодлаб от Google по разработке для Android XR. В этом лабораторной работе вы улучшите базовое одноэкранное приложение, чтобы обеспечить захватывающий пользовательский опыт на Android XR.
Что вы узнаете:
https://developer.android.com/codelabs/xr-fundamentals-part-1#0
#Android
👉 @developer_mobila
Please open Telegram to view this post
VIEW IN TELEGRAM
Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода 📢
13 мая в 20:00 МСК в OTUS пройдёт открытый вебинар «DI и жизненный цикл модулей во Flutter на yx_scope».
Что разберём
— yx_scope vs Kiwi, Injector, Auto Injector, Scope — когда и почему выигрывает первое решение
— Безопасное DI на этапе компиляции — без глобальных синглтонов
— Гибкий lifecycle — как избежать утечек памяти при навигации
— Интеграция yx_scope в многомодульный интернет‑магазин (live‑код)
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex. 23 года опыта: full‑stack (Flutter/Python/Kotlin/Go/C++), DevOps, системное администрирование. Контрибьютор ReOpenLDAP, автор серий вебинаров по Kubernetes и кроссплатформенной разработке, приглашённый преподаватель в ИТМО.
Кому будет полезно
— Flutter‑инженерам, которые ищут чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим проекты с десятками экранов и активной навигацией
— Тем, кто хочет ускорить релизы, сохраняя контроль над памятью и зависимостями
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов так, чтобы память оставалась под контролем
— Масштабировать фичи, не переписывая DI‑слой
Участие бесплатное. Мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
13 мая в 20:00 МСК в OTUS пройдёт открытый вебинар «DI и жизненный цикл модулей во Flutter на yx_scope».
Что разберём
— yx_scope vs Kiwi, Injector, Auto Injector, Scope — когда и почему выигрывает первое решение
— Безопасное DI на этапе компиляции — без глобальных синглтонов
— Гибкий lifecycle — как избежать утечек памяти при навигации
— Интеграция yx_scope в многомодульный интернет‑магазин (live‑код)
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex. 23 года опыта: full‑stack (Flutter/Python/Kotlin/Go/C++), DevOps, системное администрирование. Контрибьютор ReOpenLDAP, автор серий вебинаров по Kubernetes и кроссплатформенной разработке, приглашённый преподаватель в ИТМО.
Кому будет полезно
— Flutter‑инженерам, которые ищут чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим проекты с десятками экранов и активной навигацией
— Тем, кто хочет ускорить релизы, сохраняя контроль над памятью и зависимостями
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов так, чтобы память оставалась под контролем
— Масштабировать фичи, не переписывая DI‑слой
Участие бесплатное. Мест ограничено — бронируйте прямо сейчас.
→ Регистрируйтесь
Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
Поддержка webextensions под Андроид
Сегодня я хочу представить очередную свою работу, точнее рабочий черновик. Да, я в курсе — дураку полработы не показывают, но так и на хабре то не дураки сидят. Итак, сегодня я расскажу как перенес поддержку webextensions в chromium под Андроид, что работает а что не работает, как пользоваться тем что работает и когда будет работать то что не работает.
https://habr.com/ru/articles/882640/
#Android
👉 @developer_mobila
Сегодня я хочу представить очередную свою работу, точнее рабочий черновик. Да, я в курсе — дураку полработы не показывают, но так и на хабре то не дураки сидят. Итак, сегодня я расскажу как перенес поддержку webextensions в chromium под Андроид, что работает а что не работает, как пользоваться тем что работает и когда будет работать то что не работает.
https://habr.com/ru/articles/882640/
#Android
👉 @developer_mobila
🚀 Подборка Telegram каналов для программистов
Системное администрирование, DevOps 📌
https://www.tg-me.com/bash_srv Bash Советы
https://www.tg-me.com/win_sysadmin Системный Администратор Windows
https://www.tg-me.com/sysadmin_girl Девочка Сисадмин
https://www.tg-me.com/srv_admin_linux Админские угодья
https://www.tg-me.com/linux_srv Типичный Сисадмин
https://www.tg-me.com/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://www.tg-me.com/linux_odmin Linux: Системный администратор
https://www.tg-me.com/devops_star DevOps Star (Звезда Девопса)
https://www.tg-me.com/i_linux Системный администратор
https://www.tg-me.com/linuxchmod Linux
https://www.tg-me.com/sys_adminos Системный Администратор
https://www.tg-me.com/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://www.tg-me.com/sysadminof Книги для админов, полезные материалы
https://www.tg-me.com/i_odmin Все для системного администратора
https://www.tg-me.com/i_odmin_book Библиотека Системного Администратора
https://www.tg-me.com/i_odmin_chat Чат системных администраторов
https://www.tg-me.com/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://www.tg-me.com/sysadminoff Новости Линукс Linux
1C разработка 📌
https://www.tg-me.com/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://www.tg-me.com/DevLab1C 1С:Предприятие 8
https://www.tg-me.com/razrab_1C 1C Разработчик
https://www.tg-me.com/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://www.tg-me.com/rabota1C_rus Вакансии для программистов 1С
Программирование C++📌
https://www.tg-me.com/cpp_lib Библиотека C/C++ разработчика
https://www.tg-me.com/cpp_knigi Книги для программистов C/C++
https://www.tg-me.com/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://www.tg-me.com/pythonofff Python академия.
https://www.tg-me.com/BookPython Библиотека Python разработчика
https://www.tg-me.com/python_real Python подборки на русском и английском
https://www.tg-me.com/python_360 Книги по Python
Java разработка 📌
https://www.tg-me.com/BookJava Библиотека Java разработчика
https://www.tg-me.com/java_360 Книги по Java Rus
https://www.tg-me.com/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://www.tg-me.com/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://www.tg-me.com/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://www.tg-me.com/developer_mobila Мобильная разработка
https://www.tg-me.com/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://www.tg-me.com/frontend_1 Подборки для frontend разработчиков
https://www.tg-me.com/frontend_sovet Frontend советы, примеры и практика!
https://www.tg-me.com/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://www.tg-me.com/game_devv Все о разработке игр
Библиотеки 📌
https://www.tg-me.com/book_for_dev Книги для программистов Rus
https://www.tg-me.com/programmist_of Книги по программированию
https://www.tg-me.com/proglb Библиотека программиста
https://www.tg-me.com/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://www.tg-me.com/bigdata_1 Big Data, Machine Learning
Программирование 📌
https://www.tg-me.com/bookflow Лекции, видеоуроки, доклады с IT конференций
https://www.tg-me.com/rust_lib Полезный контент по программированию на Rust
https://www.tg-me.com/golang_lib Библиотека Go (Golang) разработчика
https://www.tg-me.com/itmozg Программисты, дизайнеры, новости из мира IT
https://www.tg-me.com/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://www.tg-me.com/nodejs_lib Подборки по Node js и все что с ним связано
https://www.tg-me.com/ruby_lib Библиотека Ruby программиста
https://www.tg-me.com/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
https://www.tg-me.com/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://www.tg-me.com/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://www.tg-me.com/thehaking Канал о кибербезопасности
https://www.tg-me.com/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://www.tg-me.com/ux_web Статьи, книги для дизайнеров
Математика 📌
https://www.tg-me.com/Pomatematike Канал по математике
https://www.tg-me.com/phis_mat Обучающие видео, книги по Физике и Математике
https://www.tg-me.com/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
https://www.tg-me.com/Excel_lifehack
https://www.tg-me.com/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://www.tg-me.com/sysadmin_rabota Системный Администратор
https://www.tg-me.com/progjob Вакансии в IT
Системное администрирование, DevOps 📌
https://www.tg-me.com/bash_srv Bash Советы
https://www.tg-me.com/win_sysadmin Системный Администратор Windows
https://www.tg-me.com/sysadmin_girl Девочка Сисадмин
https://www.tg-me.com/srv_admin_linux Админские угодья
https://www.tg-me.com/linux_srv Типичный Сисадмин
https://www.tg-me.com/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://www.tg-me.com/linux_odmin Linux: Системный администратор
https://www.tg-me.com/devops_star DevOps Star (Звезда Девопса)
https://www.tg-me.com/i_linux Системный администратор
https://www.tg-me.com/linuxchmod Linux
https://www.tg-me.com/sys_adminos Системный Администратор
https://www.tg-me.com/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://www.tg-me.com/sysadminof Книги для админов, полезные материалы
https://www.tg-me.com/i_odmin Все для системного администратора
https://www.tg-me.com/i_odmin_book Библиотека Системного Администратора
https://www.tg-me.com/i_odmin_chat Чат системных администраторов
https://www.tg-me.com/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://www.tg-me.com/sysadminoff Новости Линукс Linux
1C разработка 📌
https://www.tg-me.com/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://www.tg-me.com/DevLab1C 1С:Предприятие 8
https://www.tg-me.com/razrab_1C 1C Разработчик
https://www.tg-me.com/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://www.tg-me.com/rabota1C_rus Вакансии для программистов 1С
Программирование C++📌
https://www.tg-me.com/cpp_lib Библиотека C/C++ разработчика
https://www.tg-me.com/cpp_knigi Книги для программистов C/C++
https://www.tg-me.com/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://www.tg-me.com/pythonofff Python академия.
https://www.tg-me.com/BookPython Библиотека Python разработчика
https://www.tg-me.com/python_real Python подборки на русском и английском
https://www.tg-me.com/python_360 Книги по Python
Java разработка 📌
https://www.tg-me.com/BookJava Библиотека Java разработчика
https://www.tg-me.com/java_360 Книги по Java Rus
https://www.tg-me.com/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://www.tg-me.com/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://www.tg-me.com/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://www.tg-me.com/developer_mobila Мобильная разработка
https://www.tg-me.com/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://www.tg-me.com/frontend_1 Подборки для frontend разработчиков
https://www.tg-me.com/frontend_sovet Frontend советы, примеры и практика!
https://www.tg-me.com/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://www.tg-me.com/game_devv Все о разработке игр
Библиотеки 📌
https://www.tg-me.com/book_for_dev Книги для программистов Rus
https://www.tg-me.com/programmist_of Книги по программированию
https://www.tg-me.com/proglb Библиотека программиста
https://www.tg-me.com/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://www.tg-me.com/bigdata_1 Big Data, Machine Learning
Программирование 📌
https://www.tg-me.com/bookflow Лекции, видеоуроки, доклады с IT конференций
https://www.tg-me.com/rust_lib Полезный контент по программированию на Rust
https://www.tg-me.com/golang_lib Библиотека Go (Golang) разработчика
https://www.tg-me.com/itmozg Программисты, дизайнеры, новости из мира IT
https://www.tg-me.com/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://www.tg-me.com/nodejs_lib Подборки по Node js и все что с ним связано
https://www.tg-me.com/ruby_lib Библиотека Ruby программиста
https://www.tg-me.com/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
https://www.tg-me.com/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://www.tg-me.com/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://www.tg-me.com/thehaking Канал о кибербезопасности
https://www.tg-me.com/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
https://www.tg-me.com/ux_web Статьи, книги для дизайнеров
Математика 📌
https://www.tg-me.com/Pomatematike Канал по математике
https://www.tg-me.com/phis_mat Обучающие видео, книги по Физике и Математике
https://www.tg-me.com/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
https://www.tg-me.com/Excel_lifehack
https://www.tg-me.com/mir_teh Мир технологий (Technology World)
Вакансии 📌
https://www.tg-me.com/sysadmin_rabota Системный Администратор
https://www.tg-me.com/progjob Вакансии в IT
Telegram
Bash Советы
🚀 Секреты и советы по Bash
🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале.
🔹 Автоматизация, скрипты и оптимизация работы в Linux.
🔹 Стать мастером Bash легко – просто подпишись!
💻 Прокачивай терминал вместе с нами! 👇
🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале.
🔹 Автоматизация, скрипты и оптимизация работы в Linux.
🔹 Стать мастером Bash легко – просто подпишись!
💻 Прокачивай терминал вместе с нами! 👇
Дивный мир мобильной разработки и трудности Open Source
Когда я впервые решил создать свой open-source проект, мне казалось, что главное – это хорошая идея и рабочий код. Я взялся за разработку библиотеки для сетевых клиентов и UI-компонентов, вложил в неё два года работы и, наконец, выложил на GitHub. Но вместо успеха меня ждал холодный душ – библиотека получила всего 10 звёздочек.
Тогда я осознал ключевую проблему open-source: одна только идея не работает. Если проект плохо оформлен – его никто не найдёт. Документация и описание – не менее важны, чем сам код. В следующем проекте я учёл ошибки. Когда правильно оформил проект, он начал находить аудиторию, получать звёзды и фидбек от разработчиков.
https://habr.com/ru/companies/oleg-bunin/articles/906952/
#ios
👉 @developer_mobila
Когда я впервые решил создать свой open-source проект, мне казалось, что главное – это хорошая идея и рабочий код. Я взялся за разработку библиотеки для сетевых клиентов и UI-компонентов, вложил в неё два года работы и, наконец, выложил на GitHub. Но вместо успеха меня ждал холодный душ – библиотека получила всего 10 звёздочек.
Тогда я осознал ключевую проблему open-source: одна только идея не работает. Если проект плохо оформлен – его никто не найдёт. Документация и описание – не менее важны, чем сам код. В следующем проекте я учёл ошибки. Когда правильно оформил проект, он начал находить аудиторию, получать звёзды и фидбек от разработчиков.
https://habr.com/ru/companies/oleg-bunin/articles/906952/
#ios
👉 @developer_mobila
Автообновление через GitHub releases с помощью Hilt и Retrofit в Android
Вдохновившись обновлением Telegram без маркета приложений я захотел сделать на одном из своих пет-проектов что-то подобное. Первой мыслью было - найти этот код в исходниках Telegram, но т.к. скорее всего у них обновление скачивается с серверов, я решил не играть в лотерею и не тратить время на раскопки в Java-коде, потому что я хотел сделать так, чтобы можно было скачивать с GitHub-releases.
https://habr.com/ru/articles/839008/
#Android
👉 @developer_mobila
Вдохновившись обновлением Telegram без маркета приложений я захотел сделать на одном из своих пет-проектов что-то подобное. Первой мыслью было - найти этот код в исходниках Telegram, но т.к. скорее всего у них обновление скачивается с серверов, я решил не играть в лотерею и не тратить время на раскопки в Java-коде, потому что я хотел сделать так, чтобы можно было скачивать с GitHub-releases.
https://habr.com/ru/articles/839008/
#Android
👉 @developer_mobila
Осталось 2 дня до вебинара! Успейте зарегистрироваться ⌛️
Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода
🗓 13 мая, 20:00 МСК — открытый вебинар OTUS
Коротко о программе
— yx_scope vs Kiwi / Injector / Auto Injector / Scope — покажем, где выигрывает yx_scope
— Безопасное DI на этапе компиляции, никаких глобальных синглтонов
— Гибкий lifecycle: как избежать утечек памяти при навигации
— Live-код: интегрируем yx_scope в многомодульный интернет-магазин
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта full-stack и DevOps.
Кому зайдёт
— Flutter-инженерам, ищущим чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим большие проекты с активной навигацией
— Всем, кто хочет ускорить релизы и держать память под контролем
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов без утечек
— Масштабировать фичи без переписывания DI-слоя
Участие бесплатное, мест всё меньше.
→ Регистрируйтесь сейчас
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Управляем зависимостями и lifecycle во Flutter: yx_scope без генерации кода
🗓 13 мая, 20:00 МСК — открытый вебинар OTUS
Коротко о программе
— yx_scope vs Kiwi / Injector / Auto Injector / Scope — покажем, где выигрывает yx_scope
— Безопасное DI на этапе компиляции, никаких глобальных синглтонов
— Гибкий lifecycle: как избежать утечек памяти при навигации
— Live-код: интегрируем yx_scope в многомодульный интернет-магазин
Спикер — Дмитрий Золотов, Flutter + Kotlin Developer в Yandex, 23 года опыта full-stack и DevOps.
Кому зайдёт
— Flutter-инженерам, ищущим чистую архитектуру без лишнего codegen
— Разработчикам, поддерживающим большие проекты с активной навигацией
— Всем, кто хочет ускорить релизы и держать память под контролем
После вебинара вы сможете
— Внедрять зависимости без шаблонов и ловить ошибки до запуска
— Управлять жизненным циклом компонентов без утечек
— Масштабировать фичи без переписывания DI-слоя
Участие бесплатное, мест всё меньше.
→ Регистрируйтесь сейчас
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Автоматизация сборки и релиза Android-приложений через GitHub Actions
Полный разбор GitHub Actions Workflow для сборки, подписи и релиза Android-приложений.
В продолжение моей статье про обновление Android-приложений через Github releases, я решил автоматизировать еще одну часть этого рутинного процесса, а именно, сборку и релиз. При написании статьи руководствовался этой статьей, но немного поменял подход, а именно: не включаю в данный процесс файлы проекта, потому что, я думаю, это является более гибким подходом, позволяющим переносить workflow между проектами без изменений файлов самого проекта.
https://habr.com/ru/articles/881196/
#Android
👉 @developer_mobila
Полный разбор GitHub Actions Workflow для сборки, подписи и релиза Android-приложений.
В продолжение моей статье про обновление Android-приложений через Github releases, я решил автоматизировать еще одну часть этого рутинного процесса, а именно, сборку и релиз. При написании статьи руководствовался этой статьей, но немного поменял подход, а именно: не включаю в данный процесс файлы проекта, потому что, я думаю, это является более гибким подходом, позволяющим переносить workflow между проектами без изменений файлов самого проекта.
https://habr.com/ru/articles/881196/
#Android
👉 @developer_mobila