🕊Как оплатить доступ/книгу в условиях санкций?
Меня очень радует, что наше сообщество объединяет русскоязычных разработчиков по всему миру. И довольно часто я получаю вопросы по поводу оплаты доступа или книги из-за рубежа.
💳Ни для кого не секрет, что VISA и MASTECARD ушли👋, и прием международных платажей сейчас приостановлен. Я работаю над решением проблемы, и уже сейчас есть первый рабочий вариант оплаты, даже если вы проживаете за рубежом.
Почитать можно тут
P.S. Прорабатываем и более удобные человечьи варианты оплаты, как это было раньше. Но процесс тяжелый и долгий и для малого бизнеса не всегда подъемный.
Меня очень радует, что наше сообщество объединяет русскоязычных разработчиков по всему миру. И довольно часто я получаю вопросы по поводу оплаты доступа или книги из-за рубежа.
💳Ни для кого не секрет, что VISA и MASTECARD ушли👋, и прием международных платажей сейчас приостановлен. Я работаю над решением проблемы, и уже сейчас есть первый рабочий вариант оплаты, даже если вы проживаете за рубежом.
Почитать можно тут
P.S. Прорабатываем и более удобные человечьи варианты оплаты, как это было раньше. Но процесс тяжелый и долгий и для малого бизнеса не всегда подъемный.
🎁 Стоит ли сейчас изучать Swift?
#новости
Всего полтора года ожидания и вот Европарламент обязал Apple и Google разрешать установку приложений из сторонних магазинов.
Пруфы и пруфы
Сомневаюсь, что функция будет доступна только на территории Евросоюза, скорее всего ждем ruStore, nashStore iOS Edition. А это в некоторой степени защита iOS-разработчиков от влияния санкций. Изучайте Swift и не переживайте))
#новости
Всего полтора года ожидания и вот Европарламент обязал Apple и Google разрешать установку приложений из сторонних магазинов.
Пруфы и пруфы
Сомневаюсь, что функция будет доступна только на территории Евросоюза, скорее всего ждем ruStore, nashStore iOS Edition. А это в некоторой степени защита iOS-разработчиков от влияния санкций. Изучайте Swift и не переживайте))
🕊 Вышел Xcode 14 beta 4.
🦧 Вышли новые бетки iOS, iPadOS, macOS, watchOS, tvOS и HomePod Software. Что нового, можно почитать в официальных Release Notes или тут. Самое интересно - это возможность попробовать новые Live Activities API.
🐸 И вот вам свежие мануалы, как вернуться с macOS Venture обратно на Monterey и с iOS 16 на 15. Если вдруг разочаруетесь.
😱 Кстати больше не подписываются iOS и iPadOS 15.5. Даунгрейт на эту версию не возможен.
🙉 Swift Evolution дополнен «стремным» предложением по добавлению в ядро языка функции move. Частично возвращаем возможность ручного управления памятью =)
🦧 Вышли новые бетки iOS, iPadOS, macOS, watchOS, tvOS и HomePod Software. Что нового, можно почитать в официальных Release Notes или тут. Самое интересно - это возможность попробовать новые Live Activities API.
🐸 И вот вам свежие мануалы, как вернуться с macOS Venture обратно на Monterey и с iOS 16 на 15. Если вдруг разочаруетесь.
😱 Кстати больше не подписываются iOS и iPadOS 15.5. Даунгрейт на эту версию не возможен.
🙉 Swift Evolution дополнен «стремным» предложением по добавлению в ядро языка функции move. Частично возвращаем возможность ручного управления памятью =)
Senior Android Developer, я тебя ищу🕵️♂️
Говорят, что сеньоры притягиваются 😅
Я iOS-разработчик, и в мой дружный коллектив VK Карты нужен Android-разработчик.
Если ты или один из твоих знакомых
🟢 Чувствуешь себя сеньором-помидором и желаешь реализовать весь свой потенциал и не останавливаться в развитии.
🟡 В поисках реально интересной работы. Мы создаем новый и перспективный продукт экосистемы VK
🔵 Хочешь полный пакет ништяков и конкурентную зарплату
👨🏻💻 От себя
Проект и команда реально отличные, большое количество технологий и действительно умных и интересных людей! Нам нужен человек, который хочет и может развиваться ☺️
Пиши мне @dobbywankenoby и я расскажу подробнее.
P.S. И заметь, я не HR, а разработчик в команде, я расскажу, как у нас обстоят дела на самом деле.
Говорят, что сеньоры притягиваются 😅
Я iOS-разработчик, и в мой дружный коллектив VK Карты нужен Android-разработчик.
Если ты или один из твоих знакомых
🟢 Чувствуешь себя сеньором-помидором и желаешь реализовать весь свой потенциал и не останавливаться в развитии.
🟡 В поисках реально интересной работы. Мы создаем новый и перспективный продукт экосистемы VK
🔵 Хочешь полный пакет ништяков и конкурентную зарплату
👨🏻💻 От себя
Проект и команда реально отличные, большое количество технологий и действительно умных и интересных людей! Нам нужен человек, который хочет и может развиваться ☺️
Пиши мне @dobbywankenoby и я расскажу подробнее.
P.S. И заметь, я не HR, а разработчик в команде, я расскажу, как у нас обстоят дела на самом деле.
📕 Принципы разработки программных пакетов
Маттиас Нобак
😎Люблю годное чтиво по архитектурам. В каждой книге находишь уникальный взгляд автора и даже если согласен не со всем, то обязательно возьмешь в работу что-то и для себя, и для товарищей по цеху.
«Принципы разработки» - это тот самый пример годной книги, в которой говорится о SOLID в преломление создания пакетов/библиотек. Пишите и распространяете что-то подобное? Тогда эта книга точно не будет лишней.
Очень важным плюсом являются примеры кода, написанные на псевдокоде(ой, простите, это же PHP 😂) , который позволяет избавиться от всего ненужного, вроде работы с типами данных и сконцентрироваться только на классах/объектах и их взаимосвязях.
⭐️В общем, хоть не со всем я согласен, но книга - мой вам рекомендасьон.⭐️
#книга
Маттиас Нобак
😎Люблю годное чтиво по архитектурам. В каждой книге находишь уникальный взгляд автора и даже если согласен не со всем, то обязательно возьмешь в работу что-то и для себя, и для товарищей по цеху.
«Принципы разработки» - это тот самый пример годной книги, в которой говорится о SOLID в преломление создания пакетов/библиотек. Пишите и распространяете что-то подобное? Тогда эта книга точно не будет лишней.
Очень важным плюсом являются примеры кода, написанные на псевдокоде
⭐️В общем, хоть не со всем я согласен, но книга - мой вам рекомендасьон.⭐️
#книга
Семантическое версионирование - человечья нумерация версий пакетов
Стандартизация - это великолепно. При наличии стандарта от компонента всегда ожидаешь понятно и четкого поведения. Семантическое версионирование - это способ стандартизации указания версии пакета, библиотеки, фреймворка или чего-то, что имеет общедоступный API.
Версия указывается в формате X.Y.Z-STATE.
🔸 X - мажорная/старшая версия пакета. Увеличиваем ее когда в пакете происходят изменения без обратной совместимости, при этом удаляем все deprecate-методы. Изменение X ведет за собой обнуление Y и Z.
🔸 Y - минорная/младшая версия пакета. Увеличиваем, когда в пакете появляется новая функциональность. Придержите коней, и не удаляйте старевшие методы, помечайте их как deprecated, тем самым вы подготовите пользователей к их удалению.
🔸 Z - версия патча. Увеличивайте, выпуская каждый патч, исправляющий ошибки или улучшающий функциональность.
🔸 STATE - опциональная мета-информация о состоянии пакета: alpha, beta, rc и т.д.
Более подробно почитать можно тут и на хабре.
#пишемхорошийкод
Стандартизация - это великолепно. При наличии стандарта от компонента всегда ожидаешь понятно и четкого поведения. Семантическое версионирование - это способ стандартизации указания версии пакета, библиотеки, фреймворка или чего-то, что имеет общедоступный API.
Версия указывается в формате X.Y.Z-STATE.
🔸 X - мажорная/старшая версия пакета. Увеличиваем ее когда в пакете происходят изменения без обратной совместимости, при этом удаляем все deprecate-методы. Изменение X ведет за собой обнуление Y и Z.
🔸 Y - минорная/младшая версия пакета. Увеличиваем, когда в пакете появляется новая функциональность. Придержите коней, и не удаляйте старевшие методы, помечайте их как deprecated, тем самым вы подготовите пользователей к их удалению.
🔸 Z - версия патча. Увеличивайте, выпуская каждый патч, исправляющий ошибки или улучшающий функциональность.
🔸 STATE - опциональная мета-информация о состоянии пакета: alpha, beta, rc и т.д.
Более подробно почитать можно тут и на хабре.
#пишемхорошийкод
Proxyman - дебаггер/снифер запросов, который делает вашу профессию интереснее.
Работа с сетью - это то, что либо уже происходит с тобой, либо ждет тебя в будущем (если ты только обучаешься). А уверенная работа с сетью - это обязательный навык для совершенно любого программиста.
Вот ты изучил API сервера, написал прекрасный код, создал нужные структуры, подписанные на протокол Codable, далее пульнул все это в URLSession и наслаждаешься результатом. Но внезапно что-то пошло не так: то ли запрос неверный, то ли ответ кривой (что более вероятно, твой код конечно же идеален).
И на этом этапе вступает в дело дебаггер сетевых запросов Proxyman, или один из его аналогов: Postman и Charles. Ты смотришь тело запроса и ответа и определяешь, что идет не так, где твой код неверно кодирует JSON. Это очень полезная тулза, которая должна быть наготове у каждого разработчика. Установка и настройка с установкой сертификатов, занимает всего пару минут, а удовольствие от использования не проходит никогда.
Кстати в последнем опросе от Devcrowd Proxyman вошел в топ инструментов разработчика. А узнал о нем в свое время от основателя Coffee&Code Сергея и моего питерского коллеги по VK - Артема. За что им огромное спасибо.
#инструменты
Работа с сетью - это то, что либо уже происходит с тобой, либо ждет тебя в будущем (если ты только обучаешься). А уверенная работа с сетью - это обязательный навык для совершенно любого программиста.
Вот ты изучил API сервера, написал прекрасный код, создал нужные структуры, подписанные на протокол Codable, далее пульнул все это в URLSession и наслаждаешься результатом. Но внезапно что-то пошло не так: то ли запрос неверный, то ли ответ кривой (что более вероятно, твой код конечно же идеален).
И на этом этапе вступает в дело дебаггер сетевых запросов Proxyman, или один из его аналогов: Postman и Charles. Ты смотришь тело запроса и ответа и определяешь, что идет не так, где твой код неверно кодирует JSON. Это очень полезная тулза, которая должна быть наготове у каждого разработчика. Установка и настройка с установкой сертификатов, занимает всего пару минут, а удовольствие от использования не проходит никогда.
Кстати в последнем опросе от Devcrowd Proxyman вошел в топ инструментов разработчика. А узнал о нем в свое время от основателя Coffee&Code Сергея и моего питерского коллеги по VK - Артема. За что им огромное спасибо.
#инструменты
Книга Наука DevOps. Ускоряйся
Сеньор кот-devops представляет вам контент не для мальчика, но мужа. Книга - кладесь знаний для начальника любого уровня и того, кто стремится им стать. О том, как организовать эффективную разработку продукта, ускорить время его доставки до пользователей, внедрить современные методологии разработки, привлечь и увлечь разработчиков.
Самое ценная часть этой книги - ее практическая направленность. Все, о чем говорят авторы - это не просто личный опыт или филосовские умозаключения, это исследования, проводившиеся на протяжении нескольких лет. И пусть книга не 2022 года, но человеческая психология не меняется, а значит и принципы работы с коллективом - тоже.
Самая важная мысль - если разработчик видит результаты своей работы, то работу он делает с удовольствием. Валяние в болоте, постоянные переделки, не позволяющие довести продукт до потребителя - все это отрицательно сказывается на разработчике, продукте и бизнесе в целом.
#книга
Сеньор кот-devops представляет вам контент не для мальчика, но мужа. Книга - кладесь знаний для начальника любого уровня и того, кто стремится им стать. О том, как организовать эффективную разработку продукта, ускорить время его доставки до пользователей, внедрить современные методологии разработки, привлечь и увлечь разработчиков.
Самое ценная часть этой книги - ее практическая направленность. Все, о чем говорят авторы - это не просто личный опыт или филосовские умозаключения, это исследования, проводившиеся на протяжении нескольких лет. И пусть книга не 2022 года, но человеческая психология не меняется, а значит и принципы работы с коллективом - тоже.
Самая важная мысль - если разработчик видит результаты своей работы, то работу он делает с удовольствием. Валяние в болоте, постоянные переделки, не позволяющие довести продукт до потребителя - все это отрицательно сказывается на разработчике, продукте и бизнесе в целом.
#книга
Как вам книга?
Anonymous Poll
12%
Читал. Советую
27%
Обязательно прочту. Я же своего рода начальник
60%
Эти ваши книги - для тех, кто умеет читать.
NEOVIM - идеальный консольный текстовый редактор с максимальным уровнем кастомизации
NeoVim - это форк хорошо известного VIM. И если в вашей жизни есть что-то кроме Xcode или Android Studio, или вы просто любите используете Терминал, то вам стоит попробовать.
Как было сказано в одном из обзоров - увеличение производительности особенно прочувствуют те, кто обладает десятипальцевым способом печати. В этом случае мышка совершенно не нужна (да она и не поддерживается в редакторе), а все операции производятся практически без смещения кистей. То есть вам не нужно постоянно двигать руку с клавиатуры к мышке и обратно. Звучит на самом деле интересно. А в купе с максимальным уровнем кастомизации и возможностями iTerm + Oh My Zsh - NeoVim может стать буквально продолжением ваших пальцев.
Ну а если Vim и так ваш любимый редактор, то просто попробуйте. Установка через Brew, MacPorts или самостоятельная сборка из исходников.
https://github.com/neovim/neovim
#инструменты
NeoVim - это форк хорошо известного VIM. И если в вашей жизни есть что-то кроме Xcode или Android Studio, или вы просто любите используете Терминал, то вам стоит попробовать.
Как было сказано в одном из обзоров - увеличение производительности особенно прочувствуют те, кто обладает десятипальцевым способом печати. В этом случае мышка совершенно не нужна (да она и не поддерживается в редакторе), а все операции производятся практически без смещения кистей. То есть вам не нужно постоянно двигать руку с клавиатуры к мышке и обратно. Звучит на самом деле интересно. А в купе с максимальным уровнем кастомизации и возможностями iTerm + Oh My Zsh - NeoVim может стать буквально продолжением ваших пальцев.
Ну а если Vim и так ваш любимый редактор, то просто попробуйте. Установка через Brew, MacPorts или самостоятельная сборка из исходников.
https://github.com/neovim/neovim
#инструменты
Display Control - синхронное управление яркостью внешнего дисплея и Mac Book
Наверняка всем, кто использует внешний дисплей вместе с ноутбуком, знакома ситуация, когда вечером сел поработать, снизил яркость ноута, а монитор выжигает глаза при показе любого белого изображения. Проблема решается покупкой дорого Apple Display или некоторых моделей LG Ultrafine с поддержкой управления яркостью, но это что-то на бохатом.
Другой вариант - утилита Display Control. Бесплатно и эффективно. Висит в трее, почти не жрет ресурсов, гибко настраивается (может менять даже громкость дисплея) и просто хорошо выполняет свою задачу.
Поменяли яркость ноута кнопочка - вслед за ней поменялась яркость монитора!😉
Это пожалуй одна из самых полезных программулин, найденных мной за предыдущий год.
Скачиваем тут
Кто не любит бесплатное ПО, то есть платные аналоги: Display Buddy и Lunar
😀 UPD. Более свежее приложение от того же автора с пачкей новых функций - Better Display
#инструменты
Наверняка всем, кто использует внешний дисплей вместе с ноутбуком, знакома ситуация, когда вечером сел поработать, снизил яркость ноута, а монитор выжигает глаза при показе любого белого изображения. Проблема решается покупкой дорого Apple Display или некоторых моделей LG Ultrafine с поддержкой управления яркостью, но это что-то на бохатом.
Другой вариант - утилита Display Control. Бесплатно и эффективно. Висит в трее, почти не жрет ресурсов, гибко настраивается (может менять даже громкость дисплея) и просто хорошо выполняет свою задачу.
Поменяли яркость ноута кнопочка - вслед за ней поменялась яркость монитора!
Это пожалуй одна из самых полезных программулин, найденных мной за предыдущий год.
Скачиваем тут
Кто не любит бесплатное ПО, то есть платные аналоги: Display Buddy и Lunar
#инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
@_spi - атрибут для тех, кто пишет фреймворки.
Как вы добиваетесь того, чтобы ваша библиотека содержала и общедоступный, и приватный код? Под приватным я имею ввиду ту часть кода, которая доступна «особым» пользователям библиотеки, например сервисные функции для дебага, не нужные обычному пользователю, или какие-то скрытые функции, которые нужны вам в своем проекте, но не должны быть доступны сторонним пользователям.
Обычно используют следующие варианты решения:
1) «Нет никаких приватных функций, пусть все функции будут общедоступными». Но так вы перегружаете список доступных функций, окно автодополнения и вызываете у пользователя библиотеки вопросы.
2) «Сервисные функции начинаются с _», вроде _enableDebugMode(). Итог как и в пункте 1.
3) Самый радикальный, но наиболее безопасный - выпуск нескольких версий библиотеки, одна со скрытым функционал, и одна только с общедоступным.
Но есть и другой способ - атрибут @_spi, который позволяет скрывать часть функционала вашего фреймворка и делать его доступным только при определенных условиях.
Так например вы можете пометить любые функции, методы, а возможно и свойства (не знаю, не проверял) с помощью @_spi(имя), и данный элемент станет доступным пользователю только если он импортирует библиотеку с помощью конструкции ```@_spi(имя) import ВашаБиблиотека```.
Пример смотрите в картинке ниже поста.
Количество различных имен внутри @_spi атрибута не ограничено. Вы можете делить таким образом функциональность на блоки и передавать пользователям те имена, которые им требуются.
Обратите внимание, что нижнее подчеркивание в названии означает, что атрибут все еще экспериментальный, правда эксперимент затянулся, а сам атрибут довольно активно используется сообществом.
SPI - System Programming Interface. Это тот же API, только «системный» или «сервисный».
Почитать можно тут. Так же обратите внимание на @_spiOnly и @_spi_available по той же ссылке.
Как вы добиваетесь того, чтобы ваша библиотека содержала и общедоступный, и приватный код? Под приватным я имею ввиду ту часть кода, которая доступна «особым» пользователям библиотеки, например сервисные функции для дебага, не нужные обычному пользователю, или какие-то скрытые функции, которые нужны вам в своем проекте, но не должны быть доступны сторонним пользователям.
Обычно используют следующие варианты решения:
1) «Нет никаких приватных функций, пусть все функции будут общедоступными». Но так вы перегружаете список доступных функций, окно автодополнения и вызываете у пользователя библиотеки вопросы.
2) «Сервисные функции начинаются с _», вроде _enableDebugMode(). Итог как и в пункте 1.
3) Самый радикальный, но наиболее безопасный - выпуск нескольких версий библиотеки, одна со скрытым функционал, и одна только с общедоступным.
Но есть и другой способ - атрибут @_spi, который позволяет скрывать часть функционала вашего фреймворка и делать его доступным только при определенных условиях.
Так например вы можете пометить любые функции, методы, а возможно и свойства (не знаю, не проверял) с помощью @_spi(имя), и данный элемент станет доступным пользователю только если он импортирует библиотеку с помощью конструкции ```@_spi(имя) import ВашаБиблиотека```.
Пример смотрите в картинке ниже поста.
Количество различных имен внутри @_spi атрибута не ограничено. Вы можете делить таким образом функциональность на блоки и передавать пользователям те имена, которые им требуются.
Обратите внимание, что нижнее подчеркивание в названии означает, что атрибут все еще экспериментальный, правда эксперимент затянулся, а сам атрибут довольно активно используется сообществом.
SPI - System Programming Interface. Это тот же API, только «системный» или «сервисный».
Почитать можно тут. Так же обратите внимание на @_spiOnly и @_spi_available по той же ссылке.
🎧🎙️Подкаст Кофе и Код с моим участием «ушел на золото».
Получилось интересно, не только и не столько о разработке, сколько о пути к ней, причем не о моем, а о вашем. А еще про то, как писались книги, о работе в ВК, и мысли о том, кому нужно идти в разработку.
Спасибо, что пишите и даете обратную связь по вашим успехам.
https://coffeecodepodcast.mave.digital
Тут ссылки на все доступные подкастерские платформы
Получилось интересно, не только и не столько о разработке, сколько о пути к ней, причем не о моем, а о вашем. А еще про то, как писались книги, о работе в ВК, и мысли о том, кому нужно идти в разработку.
Спасибо, что пишите и даете обратную связь по вашим успехам.
https://coffeecodepodcast.mave.digital
Тут ссылки на все доступные подкастерские платформы
mave · Coffee&Code | Podcast
Подкаст «Coffee&Code | Podcast»
Coffee&Code | Podcast - это подкаст от сообщества мобильных разработчиков, где приглашенные эксперты делятся своим опытом и секретами успеха в мобильной разработке.В каждом эпизоде мы обсуждаем темы, связанные с карьерным ростом и профессиональны
https://github.com/apple/swift-evolution/blob/main/proposals/0380-if-switch-expressions.md
В Swift 5.9 if и switch теперь официально станут выражениями, а значит мы сможем писать, как в Котлине
let result = if …
let result = switch …
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
swift-evolution/proposals/0380-if-switch-expressions.md at main · swiftlang/swift-evolution
This maintains proposals for changes and user-visible enhancements to the Swift Programming Language. - swiftlang/swift-evolution
Неоднозначное поведение, которое воспроизводится в Xcode 14.2, и вероятно/возможно/сомнительно не воспроизводится в Xcode 14.3
Показаны три примера, в каждом из них внутри замыкания происходит обращение к параметру value. Интересно, что ошибку показывает только в первом случае, хотя по логике должен во всех трех.
Теперь чуть подробнее.
1⃣ Пример. Обычная структура с одним аргументом-замыканием в инициализаторе. if let value обращается к локальному для функции value, которое не является опционалом. Все окей, все логично, показана ошибка.
2⃣ Пример. Структура из SwiftUI (из-за чего собственно и произошел затык). HStack с замыканием, но в этом случае ошибки нет, так как value обращается не к локальному для функции параметру, а к опциональному value - свойству самого объекта SomeStruct.
Почему? я хз)
3⃣ Пример. Пришла идея, что проблема может быть связана с использованием resultBuilder, так как замыкание, передаваемое в HStack - это ViewBuilder, который является resultBuilder. Попробовал воспроизвести - воспроизводится. Причина в этом.
Почему? хз) Но интересно.
Please open Telegram to view this post
VIEW IN TELEGRAM
В недавнем обновлении Telegram анонсировал шаринг папок, и я с радостью готов поделиться своим списком ресурсов, которые читаю сам:
🥂 Лучшие ресуры по iOS-разработке.
Каждый из этих каналов и чатов вносит свой импакт в продвижение и популяризацию iOS, и здесь вы можете найти ответы на свои вопросы или узнать что-то новое, прийти на оффлайн-встречу (привет КофеИКод) или просто весело и задорно пообщаться на темы, близкие к IT.
UPD. Если ссылка не открывается, то обновите Telegram
Каждый из этих каналов и чатов вносит свой импакт в продвижение и популяризацию iOS, и здесь вы можете найти ответы на свои вопросы или узнать что-то новое, прийти на оффлайн-встречу (привет КофеИКод) или просто весело и задорно пообщаться на темы, близкие к IT.
UPD. Если ссылка не открывается, то обновите Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
iOS Dev
Victor G invites you to add the folder “iOS Dev”, which includes 15 chats.