Для чего нужен этот канал?
📲 Если вы мобильный разработчик (особенно если iOS), то здесь для вас будут полезными истории и подходы к разработке. Возможно что-то окажется интересным или необычным.
Иногда я делюсь новостями, иногда какими-то фреймворками.
⏳ Если вам интересна история IT, то периодически здесь можно найти какие-то факты или может быть вдохновение к реализации своих проектов.
😎 Если вы проект-менеджер или лид разработки, то здесь вы сможете найти опыт код-ревью или какие-то ситуации, которые могли произойти.
А ещё я рассказываю о своих пет-проектах. Некоторые получились неплохими.
О себе: я Виктор Грушевский, iOS-разработчик (создаю приложения с 4 iOS), автор статей для хабра и победитель контестов Telegram.
Оставайтесь, и я обязательно попробую вас заинтересовать.
@iOS Dev
📲 Если вы мобильный разработчик (особенно если iOS), то здесь для вас будут полезными истории и подходы к разработке. Возможно что-то окажется интересным или необычным.
Иногда я делюсь новостями, иногда какими-то фреймворками.
⏳ Если вам интересна история IT, то периодически здесь можно найти какие-то факты или может быть вдохновение к реализации своих проектов.
😎 Если вы проект-менеджер или лид разработки, то здесь вы сможете найти опыт код-ревью или какие-то ситуации, которые могли произойти.
А ещё я рассказываю о своих пет-проектах. Некоторые получились неплохими.
О себе: я Виктор Грушевский, iOS-разработчик (создаю приложения с 4 iOS), автор статей для хабра и победитель контестов Telegram.
Оставайтесь, и я обязательно попробую вас заинтересовать.
@iOS Dev
Скорее всего, многие из вас слышали или даже использовали Texture в своей работе.
Не могу не поделиться кратким описанием, что это и зачем же он используется:
Texture - это фреймворк для iOS, построенный поверх UIKit, который обеспечивает плавность и отзывчивость даже самых сложных пользовательских интерфейсов. Изначально он был создан для создания Paper и сочетается с анимацией pop, основанной на физике, но он также эффективен при использовании UIKit Dynamics и обычных приложений. Совсем недавно он был использован для переработки приложения Pinterest.
Если вы когда-либо сталкивались с ошибками повторного использования ячеек, пытались обеспечить высокую производительность предварительной загрузки данных для страницы или интерфейса в стиле прокрутки или даже просто пытались удержать свое приложение от выпадения слишком большого количества кадров, вы можете извлечь выгоду из интеграции Texture.
https://texturegroup.org/
#iOSDev #iOS #Texture
Не могу не поделиться кратким описанием, что это и зачем же он используется:
Texture - это фреймворк для iOS, построенный поверх UIKit, который обеспечивает плавность и отзывчивость даже самых сложных пользовательских интерфейсов. Изначально он был создан для создания Paper и сочетается с анимацией pop, основанной на физике, но он также эффективен при использовании UIKit Dynamics и обычных приложений. Совсем недавно он был использован для переработки приложения Pinterest.
Если вы когда-либо сталкивались с ошибками повторного использования ячеек, пытались обеспечить высокую производительность предварительной загрузки данных для страницы или интерфейса в стиле прокрутки или даже просто пытались удержать свое приложение от выпадения слишком большого количества кадров, вы можете извлечь выгоду из интеграции Texture.
https://texturegroup.org/
#iOSDev #iOS #Texture
Если вы хотите почитать что-то, что не связано с программированием напрямую, то я бы рекомендовал обратить внимание на книгу от Даниэля Канемана:
"Думай медленно... Решай быстро"
Наши действия и поступки определены нашими мыслями. Но всегда ли мы контролируем наше мышление? Нобелевский лауреат Даниэль Канеман объясняет, почему мы подчас совершаем нерациональные поступки и как мы принимаем неверные решения. У нас имеется две системы мышления. «Медленное» мышление включается, когда мы решаем задачу или выбираем товар в магазине. Обычно нам кажется, что мы уверенно контролируем эти процессы, но не будем забывать, что позади нашего сознания в фоновом режиме постоянно работает «быстрое» мышление – автоматическое, мгновенное и неосознаваемое…
"Думай медленно... Решай быстро"
Наши действия и поступки определены нашими мыслями. Но всегда ли мы контролируем наше мышление? Нобелевский лауреат Даниэль Канеман объясняет, почему мы подчас совершаем нерациональные поступки и как мы принимаем неверные решения. У нас имеется две системы мышления. «Медленное» мышление включается, когда мы решаем задачу или выбираем товар в магазине. Обычно нам кажется, что мы уверенно контролируем эти процессы, но не будем забывать, что позади нашего сознания в фоновом режиме постоянно работает «быстрое» мышление – автоматическое, мгновенное и неосознаваемое…
Супер-краткое сравнение баз данных, которые так или иначе приходилось использовать в работе и пет-проектах.
1. SQLite
Технически определяемая как реляционная система управления базами данных (РСУБД), SQLite является самым популярным в мире механизмом баз данных.
В отличие от плоского файла или иерархической системы, эта база данных iOS хранит данные в таблицах. Органично интегрированная в приложение, SQLite работает как отдельная служба или в фоновом режиме, оставаясь очень легковесной.
Почему именно SQLite?
- Простота внедрения
- Не требуется установка и нулевая конфигурация
- Высокая переносимость и совместимость с iOS и любой платформой - от Windows до macOS, от Linux до Android.
SQLite может связывать несколько языков программирования, включая C++, C#, JavaScript, Objective-C, PHP, Ruby, Java и Python.
2. Realm
Формально являясь MongoDB, Realm представляет собой систему управления объектными базами данных с открытым исходным кодом. С помощью этой объектно-ориентированной базы данных разработчики могут кодировать отношения между объектами. Если SQLite использует базы данных SQL, то Realm использует C++. Новичок на сцене приложений для iOS, Realm составляет сильную конкуренцию специально разработанным для Android и iOS Xamarin и React Native.
Почему именно Realm?
- Он быстрее, по сравнению с SQLite и Core Data.
- Благодаря ценной масштабируемости, Realm может обрабатывать большое количество пользователей и данных.
- Для разработчиков имеется четкая документация, облегчающая процесс разработки.
- У него есть сеть поддержки актрисы Twitter, Github и StackOverflow.
3. Core Data
Спонсируемый Apple, Core Data позволяет сохранять данные приложения для автономного использования, кэшировать временные данные приложения, определять типы и категории данных. Если быть точным, Data Core - это фреймворк персистентности, тип промежуточного программного обеспечения, которое хранит данные в базе данных - он имеет возможность использовать SQLite в качестве базы данных.
Почему именно Core Data
- Использует специфические для Apple языки, такие как Swift и Objective-C.
- Он быстрее SQLite при хранении данных
- Фреймворк имеет встроенные функции, которые сокращают написанный код на 70%
- Данные могут быть организованы в бинарные, XML или SQLite хранилища.
1. SQLite
Технически определяемая как реляционная система управления базами данных (РСУБД), SQLite является самым популярным в мире механизмом баз данных.
В отличие от плоского файла или иерархической системы, эта база данных iOS хранит данные в таблицах. Органично интегрированная в приложение, SQLite работает как отдельная служба или в фоновом режиме, оставаясь очень легковесной.
Почему именно SQLite?
- Простота внедрения
- Не требуется установка и нулевая конфигурация
- Высокая переносимость и совместимость с iOS и любой платформой - от Windows до macOS, от Linux до Android.
SQLite может связывать несколько языков программирования, включая C++, C#, JavaScript, Objective-C, PHP, Ruby, Java и Python.
2. Realm
Формально являясь MongoDB, Realm представляет собой систему управления объектными базами данных с открытым исходным кодом. С помощью этой объектно-ориентированной базы данных разработчики могут кодировать отношения между объектами. Если SQLite использует базы данных SQL, то Realm использует C++. Новичок на сцене приложений для iOS, Realm составляет сильную конкуренцию специально разработанным для Android и iOS Xamarin и React Native.
Почему именно Realm?
- Он быстрее, по сравнению с SQLite и Core Data.
- Благодаря ценной масштабируемости, Realm может обрабатывать большое количество пользователей и данных.
- Для разработчиков имеется четкая документация, облегчающая процесс разработки.
- У него есть сеть поддержки актрисы Twitter, Github и StackOverflow.
3. Core Data
Спонсируемый Apple, Core Data позволяет сохранять данные приложения для автономного использования, кэшировать временные данные приложения, определять типы и категории данных. Если быть точным, Data Core - это фреймворк персистентности, тип промежуточного программного обеспечения, которое хранит данные в базе данных - он имеет возможность использовать SQLite в качестве базы данных.
Почему именно Core Data
- Использует специфические для Apple языки, такие как Swift и Objective-C.
- Он быстрее SQLite при хранении данных
- Фреймворк имеет встроенные функции, которые сокращают написанный код на 70%
- Данные могут быть организованы в бинарные, XML или SQLite хранилища.
Возможно, вы считаете, что столкнулись с выгоранием. Вопрос этот сложный и морально, и физически. Постарался перевести несколько советов, как этого можно избежать:
Посмотрите на количество задач.
Решите, какая из них не является важной, чтобы закончить ее первой. Установите рейтинг для каждой задачи. Проверьте объем воздействия и усилий для каждой задачи. Избавьтесь от того, что не оказывает влияния и требует много усилий. Сосредоточьтесь сначала на тех делах, которые имеют огромное влияние и не требуют больших усилий. Во время работы блокируйте социальные сети и уведомления в браузере.
Постарайтесь сохранять свежесть разума.
Если вы каждый день работаете с одной и той же старой технологией, то ситуация ухудшается, и ваша работа становится однообразной. Конечно, у вас может быть работа, где ваша ответственность не позволяет вам пробовать разные технологии или что-то менять, но вы можете попробовать переключиться. Посвятите 20% своего времени изучению новых технологий или созданию собственного проекта. Пробуйте новые библиотеки, вносите свой вклад в открытый исходный код и выходите за пределы своей зоны комфорта. Это не поможет вам мгновенно, но может окупиться в долгосрочной перспективе. Эта стратегия поможет вам получить лучшую работу или повышение в будущем.
Регулярно делайте перерывы в течение дня.
Сидение по 8-10 часов перед компьютером без перерыва не поможет вам быть продуктивным. Научно доказано, что продуктивность резко снижается после 4 часов сосредоточенной работы. Поэтому разминайтесь каждый час, прогуляйтесь или съешьте что-нибудь. Поговорите с коллегами, спросите, не нужно ли им просмотреть код или помочь с юнит-тестами. Регулярный перерыв может творить чудеса в кодинге, особенно когда вы погружены в отладку проекта. При работе над любым проектом вы можете следовать технике Pomodoro.
Не просто кодируйте. Раз в несколько месяцев делайте перерыв в работе над кодом и отправляйтесь в отпуск. Это одна из самых освежающих вещей, которые вы можете сделать. Проведите время со своей семьей и друзьями. Уделяйте время чтению книг, посещению встреч или конференций, слушайте отраслевые подкасты или пишите собственные технические блоги (как раз этим я сейчас и занимаюсь).
Занимайтесь спортом и высыпайтесь.
Старайтесь делать физические упражнения хотя бы 2-3 раза в неделю или занимайтесь плаванием. Включите в свой рацион здоровую пищу, овощи, орехи и фрукты. Получайте достаточно сна и используйте шумоподавление. Ниже приведены некоторые рекомендации по оптимизации вашего сна:
- Ограничьте потребление кофеина после 14:00
- Уменьшите количество синего света (пользователи Mac, включите ночной режим, пользователи Windows - ночной свет)
- Понизьте температуру в спальне.
- Установите затемненные шторы или используйте маску для глаз.
- В больших проектах всегда следуйте итеративному процессу разработки. Разработайте несколько модулей, скомпилируйте и протестируйте их. Разработайте еще несколько модулей. Не пишите целую огромную программу, не компилируя и не отлаживая ее, а затем пытайтесь заставить ее работать. Это быстрый путь к разочарованию.
Посмотрите на количество задач.
Решите, какая из них не является важной, чтобы закончить ее первой. Установите рейтинг для каждой задачи. Проверьте объем воздействия и усилий для каждой задачи. Избавьтесь от того, что не оказывает влияния и требует много усилий. Сосредоточьтесь сначала на тех делах, которые имеют огромное влияние и не требуют больших усилий. Во время работы блокируйте социальные сети и уведомления в браузере.
Постарайтесь сохранять свежесть разума.
Если вы каждый день работаете с одной и той же старой технологией, то ситуация ухудшается, и ваша работа становится однообразной. Конечно, у вас может быть работа, где ваша ответственность не позволяет вам пробовать разные технологии или что-то менять, но вы можете попробовать переключиться. Посвятите 20% своего времени изучению новых технологий или созданию собственного проекта. Пробуйте новые библиотеки, вносите свой вклад в открытый исходный код и выходите за пределы своей зоны комфорта. Это не поможет вам мгновенно, но может окупиться в долгосрочной перспективе. Эта стратегия поможет вам получить лучшую работу или повышение в будущем.
Регулярно делайте перерывы в течение дня.
Сидение по 8-10 часов перед компьютером без перерыва не поможет вам быть продуктивным. Научно доказано, что продуктивность резко снижается после 4 часов сосредоточенной работы. Поэтому разминайтесь каждый час, прогуляйтесь или съешьте что-нибудь. Поговорите с коллегами, спросите, не нужно ли им просмотреть код или помочь с юнит-тестами. Регулярный перерыв может творить чудеса в кодинге, особенно когда вы погружены в отладку проекта. При работе над любым проектом вы можете следовать технике Pomodoro.
Не просто кодируйте. Раз в несколько месяцев делайте перерыв в работе над кодом и отправляйтесь в отпуск. Это одна из самых освежающих вещей, которые вы можете сделать. Проведите время со своей семьей и друзьями. Уделяйте время чтению книг, посещению встреч или конференций, слушайте отраслевые подкасты или пишите собственные технические блоги (как раз этим я сейчас и занимаюсь).
Занимайтесь спортом и высыпайтесь.
Старайтесь делать физические упражнения хотя бы 2-3 раза в неделю или занимайтесь плаванием. Включите в свой рацион здоровую пищу, овощи, орехи и фрукты. Получайте достаточно сна и используйте шумоподавление. Ниже приведены некоторые рекомендации по оптимизации вашего сна:
- Ограничьте потребление кофеина после 14:00
- Уменьшите количество синего света (пользователи Mac, включите ночной режим, пользователи Windows - ночной свет)
- Понизьте температуру в спальне.
- Установите затемненные шторы или используйте маску для глаз.
- В больших проектах всегда следуйте итеративному процессу разработки. Разработайте несколько модулей, скомпилируйте и протестируйте их. Разработайте еще несколько модулей. Не пишите целую огромную программу, не компилируя и не отлаживая ее, а затем пытайтесь заставить ее работать. Это быстрый путь к разочарованию.
Рубрика #whattosee?
Что, если вы могли бы оставить работу за пределами офиса? Или не думать о бытовых проблемах на работе?
Разделение - сериал об инженере, который подвергся подобной процедуре, а вот хорошо это, или плохо - стараются рассказать сценаристы сериала для Apple.
Секретное сообщение для тех, кто смог: во-первых, вы молодцы, во-вторых, вы знаете, что сделать! Надеюсь, вам понравился квест!
Что, если вы могли бы оставить работу за пределами офиса? Или не думать о бытовых проблемах на работе?
Разделение - сериал об инженере, который подвергся подобной процедуре, а вот хорошо это, или плохо - стараются рассказать сценаристы сериала для Apple.
Магические слова SOLID, DRY, KISS, YAGNI
Освежим знания?
SOLID
S -single responsibility. Принцип единственной ответственности (single responsibility principle). Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче.
O -open–closed. Принцип открытости/закрытости (open-closed principle) «программные сущности должны быть открыты для расширения, но закрыты для модификации».
L -Liskov substitution. Принцип подстановки Лисков (Liskov substitution principle) «объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы»
I -interface segregation. Принцип разделения интерфейса (interface segregation principle) «много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения»
D -dependency inversion. Принцип инверсии зависимостей (dependency inversion principle) «Зависимость на Абстракциях. Нет зависимости на что-то конкретное»
DRY
Don’t repeat yourself
Это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования. Принцип DRY формулируется как: «Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы». Он был сформулирован Энди Хантом (англ.) и Дэйвом Томасом в их книге The Pragmatic Programmer (англ.). Они применяли этот принцип к «схемам баз данных, планам тестирования, сборкам программного обеспечения, даже к документации». Когда принцип DRY применяется успешно, изменение единственного элемента системы не требует внесения изменений в другие, логически не связанные элементы. Те элементы, которые логически связаны, изменяются предсказуемо и единообразно. Помимо использования методов и функций в коде, Томас и Хант считают необходимым использование генераторов кода, автоматических систем компиляции.
KISS
Keep it simple stupid
Этот принцип лучше всего иллюстрируется историей, когда Джонсон вручил команде инженеров-авиаконструкторов набор инструментов, поставив им условие: механик среднего уровня должен суметь отремонтировать реактивный самолёт, который они проектировали, в полевых условиях только с этими инструментами. Таким образом, «stupid» относится к отношению между тем, что всё ломается, и сложностью необходимого для этого ремонта.
YAGNI
You aren't gonna need it
Согласно адептам принципа YAGNI, желание писать код, который не нужен прямо сейчас, но может понадобиться в будущем, приводит к следующим нежелательным последствиям:
- Тратится время, которое было бы затрачено на добавление, тестирование и улучшение необходимой функциональности.
- Новые функции должны быть отлажены, документированы и сопровождаться.
- Новая функциональность ограничивает то, что может быть сделано в будущем, — ненужные новые функции могут впоследствии помешать добавить новые нужные.
- Пока новые функции действительно не нужны, трудно полностью предугадать, что они должны делать, и протестировать их. Если новые функции тщательно не протестированы, они могут неправильно работать, когда впоследствии понадобятся.
- Это приводит к тому, что программное обеспечение становится более сложным (подчас чрезмерно сложным).
- Если вся функциональность не документирована, она может так и остаться неизвестной пользователям, но может создать различные риски для безопасности пользовательской системы.
- Добавление новой функциональности может привести к желанию ещё более новой функциональности, приводя к эффекту «снежного кома».
Освежим знания?
SOLID
S -
O -
L -
I -
D -
DRY
Это принцип разработки программного обеспечения, нацеленный на снижение повторения информации различного рода, особенно в системах со множеством слоёв абстрагирования. Принцип DRY формулируется как: «Каждая часть знания должна иметь единственное, непротиворечивое и авторитетное представление в рамках системы». Он был сформулирован Энди Хантом (англ.) и Дэйвом Томасом в их книге The Pragmatic Programmer (англ.). Они применяли этот принцип к «схемам баз данных, планам тестирования, сборкам программного обеспечения, даже к документации». Когда принцип DRY применяется успешно, изменение единственного элемента системы не требует внесения изменений в другие, логически не связанные элементы. Те элементы, которые логически связаны, изменяются предсказуемо и единообразно. Помимо использования методов и функций в коде, Томас и Хант считают необходимым использование генераторов кода, автоматических систем компиляции.
KISS
Этот принцип лучше всего иллюстрируется историей, когда Джонсон вручил команде инженеров-авиаконструкторов набор инструментов, поставив им условие: механик среднего уровня должен суметь отремонтировать реактивный самолёт, который они проектировали, в полевых условиях только с этими инструментами. Таким образом, «stupid» относится к отношению между тем, что всё ломается, и сложностью необходимого для этого ремонта.
YAGNI
Согласно адептам принципа YAGNI, желание писать код, который не нужен прямо сейчас, но может понадобиться в будущем, приводит к следующим нежелательным последствиям:
- Тратится время, которое было бы затрачено на добавление, тестирование и улучшение необходимой функциональности.
- Новые функции должны быть отлажены, документированы и сопровождаться.
- Новая функциональность ограничивает то, что может быть сделано в будущем, — ненужные новые функции могут впоследствии помешать добавить новые нужные.
- Пока новые функции действительно не нужны, трудно полностью предугадать, что они должны делать, и протестировать их. Если новые функции тщательно не протестированы, они могут неправильно работать, когда впоследствии понадобятся.
- Это приводит к тому, что программное обеспечение становится более сложным (подчас чрезмерно сложным).
- Если вся функциональность не документирована, она может так и остаться неизвестной пользователям, но может создать различные риски для безопасности пользовательской системы.
- Добавление новой функциональности может привести к желанию ещё более новой функциональности, приводя к эффекту «снежного кома».
У Рея Вендерлиха появился раздел на GitHub с бесплатными книгами. Пусть они и не содержат супер-свежую информацию, но вполне могут оказаться полезными.
GitHub
GitHub - kodecocodes/deprecated-books: Kodeco Deprecated Books
Kodeco Deprecated Books. Contribute to kodecocodes/deprecated-books development by creating an account on GitHub.
Рубрика #whattosee?
Лайтовый сериал про то, как в будущем сознание умирающего человека можно будет переселить в цифровой мир. Именно по этому пути идет программист Нэйтан: после смерти в ДТП он переносится в виртуальный мир, где влюбляется в реальную девушку Нору.
Сериал с довольно понятным названием "Загрузка" может оказаться глубже, чем кажется.
Лайтовый сериал про то, как в будущем сознание умирающего человека можно будет переселить в цифровой мир. Именно по этому пути идет программист Нэйтан: после смерти в ДТП он переносится в виртуальный мир, где влюбляется в реальную девушку Нору.
Сериал с довольно понятным названием "Загрузка" может оказаться глубже, чем кажется.
Пустая трата времени или выбор нужного инструмента?
Возможно вы слышали о термине 10x - инженер.
Даже Авраам Линкольн как-то сказал: "Если бы у меня было 8 часов, чтобы срубить дерево, я бы потратил 7, затачивая свой топор."
Также можно сказать о разнице между джуном и сениор-разработчиком. Если джун будет пытаться 8 часов рубить тупым топором, то сениор потратит час на выбор нужной бензопилы и 5 минут, чтобы спилить дерево (отличный пример, кстати).
От себя добавлю - что очень полезно заранее иметь несколько разных инструментов, и тогда никакой лес не будет страшен.
Возможно вы слышали о термине 10x - инженер.
Даже Авраам Линкольн как-то сказал: "Если бы у меня было 8 часов, чтобы срубить дерево, я бы потратил 7, затачивая свой топор."
Также можно сказать о разнице между джуном и сениор-разработчиком. Если джун будет пытаться 8 часов рубить тупым топором, то сениор потратит час на выбор нужной бензопилы и 5 минут, чтобы спилить дерево (отличный пример, кстати).
От себя добавлю - что очень полезно заранее иметь несколько разных инструментов, и тогда никакой лес не будет страшен.
Недавно участвовал в конкурсе Телеграм для улучшения лиц в режиме реального времени (читать - с фронтальной камеры) и решил зафиксировать свой опыт в виде статьи на Medium
Вот здесь она на английском
А вот тут (на хабре) - на русском.
Вот здесь она на английском
А вот тут (на хабре) - на русском.
Написал статью про любопытный подход к код-ревью
https://telegra.ph/Piramida-kod-revyu-03-24
https://telegra.ph/Piramida-kod-revyu-03-24
Telegraph
Пирамида код-ревью
Пирамида код-ревью
К посту выше добавлю - не всегда получается следовать всем принципам, да и код-ревью в командах отличается почти всегда.
Поэтому будет здорово, если за код не будет стыдно, например, спустя год. А в команде - чтобы её новые участники понимали, что происходит здесь вообще и куда они попали.
Поэтому будет здорово, если за код не будет стыдно, например, спустя год. А в команде - чтобы её новые участники понимали, что происходит здесь вообще и куда они попали.
Apple выпустили серию уроков для обучения основам работы в Xcode, SwiftUI и UIKit для создания, цитирую, «привлекательных приложений» для iOS
#iOSDev #обучение
#iOSDev #обучение
Из любопытного: вы знали, что для map() или filter() можно использовать keyPath вместо closure()?
#любопытно #iOSDev
#любопытно #iOSDev