#сервер #бекенд
Товарищи, вот вам приблуды, чтобы можно было развернуть "локальный" бекенд. Свой джейсон, ручки и все что надо будет. Теперь даже можно свои тестовые приложение реализовать по-божески, ашалеть, почему в мое время не было...
- https://github.com/typicode/json-server
- https://github.com/wiremock/wiremock
- https://youtu.be/n_7UUghLpco
Товарищи, вот вам приблуды, чтобы можно было развернуть "локальный" бекенд. Свой джейсон, ручки и все что надо будет. Теперь даже можно свои тестовые приложение реализовать по-божески, ашалеть, почему в мое время не было...
- https://github.com/typicode/json-server
- https://github.com/wiremock/wiremock
- https://youtu.be/n_7UUghLpco
🔥8🤯2
#arc #память #суета...
С этого хоть кайфаните: https://habr.com/ru/companies/vivid_money/articles/592599/
С этого хоть кайфаните: https://habr.com/ru/companies/vivid_money/articles/592599/
Хабр
Как устроен счетчик ссылок в Swift
Мы в iOS команде Vivid Money стремимся глубже понимать инструменты, которыми пользуемся каждый день. Один из таких – это язык программирования Swift. Он состоит из нескольких частей: компилятора,...
🔥6👍1
#concurrency #async #modern_concurrency
Весьма хорошая реализаяи API клиента, дженерика причем, на async/await + выше вчера про реализацию мок сервера газовал, пробуй!
https://kean.blog/post/new-api-client
Весьма хорошая реализаяи API клиента, дженерика причем, на async/await + выше вчера про реализацию мок сервера газовал, пробуй!
https://kean.blog/post/new-api-client
kean.blog
Web API Client in Swift
Building a modern web API client using Async/Await
🔥4👍1
#sui #кодстайл #ревью
1) Как лучше, все держать в body, побить на сабклассы, или же мини проперти? - Рассказываю. У меня была проблема, что хкод ломался на бади, т.к долго оценивал, перенес на мини переменные, вроде-бы помогло, не помню. В новом хкоде это улучшили кратно, но бтв. Читать легче, представьте, что у вас 300-400 строк и как это ревьюить? Изменять? И так далее. Что выбрать пропертю или сабструктуру? Если это сабструктура и у вас есть
2) Вместо if isMuted != nil. Лучше заюзать @ViewBuilder, т.к всё-равно он внутри используется, плюс достаточно if let isMuted {}, т.к в случае фейла SUI под-копотом газует EmptyView() и ее явно указывать не надо.
1) Как лучше, все держать в body, побить на сабклассы, или же мини проперти? - Рассказываю. У меня была проблема, что хкод ломался на бади, т.к долго оценивал, перенес на мини переменные, вроде-бы помогло, не помню. В новом хкоде это улучшили кратно, но бтв. Читать легче, представьте, что у вас 300-400 строк и как это ревьюить? Изменять? И так далее. Что выбрать пропертю или сабструктуру? Если это сабструктура и у вас есть
EnvironmentObject для той же темы, к примеру, то надо будет его и там заюзать иначе в основном, где указано, менятся будут апирансы, а в сабструктуре - нет. Если это что-то небольшое, и не переиспользуемое, лимит в 400-500 строк файл не превысил, Я делаю пропертю и кайфую. Ибо сделаешь вот так сабструктуру и за ней смотреть еще.2) Вместо if isMuted != nil. Лучше заюзать @ViewBuilder, т.к всё-равно он внутри используется, плюс достаточно if let isMuted {}, т.к в случае фейла SUI под-копотом газует EmptyView() и ее явно указывать не надо.
👍6🔥2
Вдруг кому-то будет полезно, чуть позже отредачу пост)
👍2🔥2
Forwarded from Roman Buzko
2022_02_22_Путеводитель_для_цифровых_кочевников_Buzko_Krasnov.pdf
2.1 MB
В связи со сложившимися обстоятельствами мы решили выложить в открытый доступ наш самый популярный платный продукт "Налоговый путеводитель для цифровых кочевников".
Он посвящен структурированию активов за границей и включает почти 90 страниц полезных материалов по российским налогам и не только.
Он посвящен структурированию активов за границей и включает почти 90 страниц полезных материалов по российским налогам и не только.
🔥11❤🔥2👍2⚡1
Forwarded from Swift Tips
Исчерпывающее руководство по настройке Jenkins под iOS в 2023 году
Подробный гайд по настройке Jenkins под iOS.
👉 Установка зависимостей
👉 Настройка джобов
👉 Настройка вашего Jenkinsfile
👉 Зависающие сборки
👉 Заключение
Оригинал тут: Step-by-Step Jenkins Setup for iOS in 2023 | Ultimate Guide
Читать (Ru)
Подробный гайд по настройке Jenkins под iOS.
👉 Установка зависимостей
👉 Настройка джобов
👉 Настройка вашего Jenkinsfile
👉 Зависающие сборки
👉 Заключение
Оригинал тут: Step-by-Step Jenkins Setup for iOS in 2023 | Ultimate Guide
Читать (Ru)
🔥5👍1🤔1
Скажите, а тема крипты вообще интересна? Стоит кидать? Имею ввиду лекции, книги, статьи, сайты. Никакие не сигналы и етк, т.е сугубообразовательный контент. Без инвест рекомендаций и всего такого самособой. Я просто уже 10 месяцев изучаю, как вернулся с Измира, и вот друг Алексей Измириский, который делал и делает на ReactNative кошельки, он тогда и подсадил, просто вижу много кого интересует эта тема, судя по смс в лс и иногда в чатике. Кидать рекомендательные ссылки по крипте? 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1🔥1
#крипта #обучение #криптобаза #блокчейн
Если что, iOS / Программирование никуда не уходит, так же будет подовляющее большинство про iOS / Программирование. Просто вот смотрю - сегодня
Тем более, если вдруг кто подумает, что Я перегоняю траффик, то любой маркетолог и интернет ответит вам, без UTM меток никак не отследить траффик и тем самым не получить вознаграждение 🙂 Кто не в теме, при помощи UTM меток отслеживают траффик рекламные компании, изучите рекомендации от любих блогеров на ютубе, к примеру, и увидите, что траффик только так и отслеживается. Это сообщение было вводным, чтоб вы понимали, что у меня нет цели нажиться!
Тогда начну рекомендации, с замечательного сайта, который можно засчитать за отправную точку для изучения базы, пробуйте: https://a16zcrypto.com/posts/article/crypto-readings-resources/
Если что, iOS / Программирование никуда не уходит, так же будет подовляющее большинство про iOS / Программирование. Просто вот смотрю - сегодня
Visa провела успешный тест оплаты комиссий за газ в сети Ethereum с помощью кредитной или дебетовой карты. и вижу, что так-то блокчейн, смарт-контракты, криптовалюта и так далее, начинают выходить из тени. И думаю, Я же вот изучаю видео, читаю книги, статьи, а почему - бы не поделиться с ребятами? Повторюсь, не про то как купить монетку и сделать х100, не про то, что сегодня покупаем NFT Хасбуллы и завтра продаем с профитом. Про технологии в первую очередь! Возможно про языки, у меня есть контакты сеньоров Solidity dev`ов из Европы, возможно с ними как - нибудь заворкшопим. Мне просто интересна эта тема, многим людям(судя по опросам) тоже интересна, плюс 2022 год показал, что бывает, если променять личную ответственность на обещания от самых разных банков. Поэтому Я за - полезное самообразование! Тем - более все бесплатно, без сигналов, без обманов, без инвест идей самособой! Глупо вкладывать свои последнии деньги туда, что ты не совсем до конца понимаешь, тем-более.Тем более, если вдруг кто подумает, что Я перегоняю траффик, то любой маркетолог и интернет ответит вам, без UTM меток никак не отследить траффик и тем самым не получить вознаграждение 🙂 Кто не в теме, при помощи UTM меток отслеживают траффик рекламные компании, изучите рекомендации от любих блогеров на ютубе, к примеру, и увидите, что траффик только так и отслеживается. Это сообщение было вводным, чтоб вы понимали, что у меня нет цели нажиться!
Тогда начну рекомендации, с замечательного сайта, который можно засчитать за отправную точку для изучения базы, пробуйте: https://a16zcrypto.com/posts/article/crypto-readings-resources/
👍9❤4🥰3
#solid #обучение
Сложные вещи - простым язык, две небольшие статьи на почитать(добавил их для карточки SOLID так же)
1) Martin Fowler - https://www.martinfowler.com/ieeeSoftware/coupling.pdf
2) Tom Dalling - https://www.tomdalling.com/blog/category/software-design/
Сложные вещи - простым язык, две небольшие статьи на почитать(добавил их для карточки SOLID так же)
1) Martin Fowler - https://www.martinfowler.com/ieeeSoftware/coupling.pdf
2) Tom Dalling - https://www.tomdalling.com/blog/category/software-design/
👍4🔥4❤1
#обучение #собеседования #uikit
В: А можно же у вьюконтроллера viewDidload после инициализации вызвать?
O: Ну смотри, давай думать последоватаельно. viewDidLoad - по сигнатуре обычный метод класса. Вызвать руками 100% можно. По сути нас интересует, реализовали ли Apple внутри UIKit'а ассерт (assertFailure) на это дело. То есть в любом случае если и упадём, то в рантайме.
В: А можно же у вьюконтроллера viewDidload после инициализации вызвать?
O: Ну смотри, давай думать последоватаельно. viewDidLoad - по сигнатуре обычный метод класса. Вызвать руками 100% можно. По сути нас интересует, реализовали ли Apple внутри UIKit'а ассерт (assertFailure) на это дело. То есть в любом случае если и упадём, то в рантайме.
🔥5👍2
#обучение #network #generic #async
В: Всем привет. Посоветуйте, пожалуйста, ресурсы где изучить как правильно создать нетворк сервис, сервисы который будет возвращать апи модель. Смотрю на ютубе, пытаюсь гуглить, и вариаций миллион, а как правильно не понимаю. Что бы были протоколы, что бы по солиду было. Самому не допедрить...
О:
- https://www.youtube.com/watch?v=BP2wv7OjZnA
- https://kean.blog/post/new-api-client
- https://www.kodeco.com/books/real-world-ios-by-tutorials/v1.0
В: Всем привет. Посоветуйте, пожалуйста, ресурсы где изучить как правильно создать нетворк сервис, сервисы который будет возвращать апи модель. Смотрю на ютубе, пытаюсь гуглить, и вариаций миллион, а как правильно не понимаю. Что бы были протоколы, что бы по солиду было. Самому не допедрить...
О:
- https://www.youtube.com/watch?v=BP2wv7OjZnA
- https://kean.blog/post/new-api-client
- https://www.kodeco.com/books/real-world-ios-by-tutorials/v1.0
👍6🔥3❤🔥1
#обучение #пуши
В: https://twitter.com/katleta3000/status/1685735838582272000?s=46
О: https://gist.github.com/katleta3000/6478752b49860553cdb23846992a234f
В: https://twitter.com/katleta3000/status/1685735838582272000?s=46
О: https://gist.github.com/katleta3000/6478752b49860553cdb23846992a234f
Twitter
На днях решал банальную задачку – при входе по пушу в приложение отослать корректно событие в аналитику.
Открыл stackoverflow https://t.co/hSUWn0VDSD и потонул в количестве неправильных, неточных или устаревших ответов.
Поэтому предлагаю свой – можно просто…
Открыл stackoverflow https://t.co/hSUWn0VDSD и потонул в количестве неправильных, неточных или устаревших ответов.
Поэтому предлагаю свой – можно просто…
👍5🔥3
#собеседования #обучение
В: "На собеседовании начинается игра в незнайку: Cделать свой compactMap, сделать свой Optional, спрашивают какие-то невероятные вещи, т.к зачем реализовывать свой compactMap, map, optional и другие кастомные вещи, если можно пообщаться намного продуктивнее: лайвкод приложения, решение многопоточных проблем, пообщаться за system design и так далее." Так вот, что делать когда спрашивают какую-то херню?
О: Поучись в стили манагера уточнять вопросы "Я правильно понимаю, что вы хотите, чтобы я реализовал компапкт мэп, который есть в стандатной библиотеке свифта?". Потом "Что же, экзотичная задача, но да ладно. Давайте в начале определимся с условиями вашей задачи". И так на каждый вопрос... Вообще интонация и дотошность хорошо срабатывают на собесе. В основном ведь эти джентельмены сидят в стиле "я всё знаю, а ты отвечай на вопросы, мхгазь". А если начать уточнять их вопросы, то у них резко зона комфорта исчезает...хе-хе-хе)
В: "На собеседовании начинается игра в незнайку: Cделать свой compactMap, сделать свой Optional, спрашивают какие-то невероятные вещи, т.к зачем реализовывать свой compactMap, map, optional и другие кастомные вещи, если можно пообщаться намного продуктивнее: лайвкод приложения, решение многопоточных проблем, пообщаться за system design и так далее." Так вот, что делать когда спрашивают какую-то херню?
О: Поучись в стили манагера уточнять вопросы "Я правильно понимаю, что вы хотите, чтобы я реализовал компапкт мэп, который есть в стандатной библиотеке свифта?". Потом "Что же, экзотичная задача, но да ладно. Давайте в начале определимся с условиями вашей задачи". И так на каждый вопрос... Вообще интонация и дотошность хорошо срабатывают на собесе. В основном ведь эти джентельмены сидят в стиле "я всё знаю, а ты отвечай на вопросы, мхгазь". А если начать уточнять их вопросы, то у них резко зона комфорта исчезает...хе-хе-хе)
🔥11❤3💯1
#собеседования #обучение #зп
Совет по торговле за ЗП:
Хотел увеличить ЗП по итогу оффера. Похвалил компанию и выделил то, что мне понравилось. Плюс отдельно подсветил уверенность, что я удовлетворю их хотелки.
Сказал, что у меня есть оффер на х + 50к. И попросил облегчить мне муки выбора. (Не обязательно иметь этот оффер, если что)
Ну и последним абзацем укрепил веру в то, что если оффер меня устроит, то я останавливаю поиски и соглашаюсь.
Может быть получилось бы и больше выбить, но мне прям много раз подсветили что XXX RUB максимум по этой вилке.
Совет по торговле за ЗП:
Хотел увеличить ЗП по итогу оффера. Похвалил компанию и выделил то, что мне понравилось. Плюс отдельно подсветил уверенность, что я удовлетворю их хотелки.
Сказал, что у меня есть оффер на х + 50к. И попросил облегчить мне муки выбора. (Не обязательно иметь этот оффер, если что)
Ну и последним абзацем укрепил веру в то, что если оффер меня устроит, то я останавливаю поиски и соглашаюсь.
Может быть получилось бы и больше выбить, но мне прям много раз подсветили что XXX RUB максимум по этой вилке.
✍5🔥2
#uikit #обучение
Недавно была задача добавить гиперссылку в UILabel и оказалось, что атрибутед текст ссылку то принять примет, но вот отображать не отобразит.
Решений оказалось два – менять на UITextView (не вариант) и высчитывать положение гиперссылки через UIGestureRecognizer и переходить по ссылке
Единственная статья которая помогла это эта. Тимур, ты видел в полезное выкладываешь от сюда что-то, мб это полезно будет, решил поделиться.
https://augmentedcode.io/2020/12/20/opening-hyperlinks-in-uilabel-on-ios/
Недавно была задача добавить гиперссылку в UILabel и оказалось, что атрибутед текст ссылку то принять примет, но вот отображать не отобразит.
Решений оказалось два – менять на UITextView (не вариант) и высчитывать положение гиперссылки через UIGestureRecognizer и переходить по ссылке
Единственная статья которая помогла это эта. Тимур, ты видел в полезное выкладываешь от сюда что-то, мб это полезно будет, решил поделиться.
https://augmentedcode.io/2020/12/20/opening-hyperlinks-in-uilabel-on-ios/
👍3❤2
#ментор #обучение
В: У кого-нибудь есть на примете сайт или что-нибудь, где можно ментора найти для мок собеса или типа того по Европе?
O: Learn and grow with help from world-class mentors for free, probuite:
https://adplist.org/
В: У кого-нибудь есть на примете сайт или что-нибудь, где можно ментора найти для мок собеса или типа того по Европе?
O: Learn and grow with help from world-class mentors for free, probuite:
https://adplist.org/
👍2❤🔥1❤1🔥1
#swiftlint
Установил на проект swiflint + swiftformat и хочу написать об этом. В основном хочу пару подводных подсветить, может кому сэкономит время
1) Сначала устанавливаем swiftlint/swiftformat. В гугле есть вся документация, ставим через homebrew + в target скрипты пишем, тут объяснять ничего не надо
2) Сначала ставим скрипт только на swiftlint дабы не сломать проект.
3) Настройки конфигурации находятся в файле .swiftlint в корне проекта (в таргет включать не обязательно), конкретно моменты которые могут сэкономить время:
a) Ищем какой-нибудь yaml файл и ставим его, потом будем под себя править. Вот этот например
b) Смотрим какие выдает ошибки, есть три пути шо делать с этим: фиксим их, отключаем через disabled_rules либо правим параметры, документацию ищем просто гугля название ошибки, на сайте realm написана документация, в примере можете увидеть. Есть еще четвертый путь отключить локально через swiftlint:disable
c) Некоторые правила как я понял по дефолту отключены (почему-то) и нужно их написать в opt_in_rules, конкретно я вносил force_unwrapping и force_try, без этого не работало чето
По идеи на этом моменте swiftlint настроен, идем к свифтформату.
1) Добавляем скрипт как в документации и создаем файл .swiftformat, копируя откуда-нибудь. Например отсюда
2) Главные правила: обязательно сначала кидаем в --exclude то что не нужно форматировать. Скорей всего это Pods/Submodules и т.п
3) Насчет правил: есть вот этот файл где написаны главные правила. Идем по следующей логике, к примеру нужно убирать запятые в ненужных местах, пишем в поиске "comma" и смотрим что выдаст, если кавычки то "brackets" и т.п. Думаю понятна логика
4) Из неочевидного: у некоторых правил есть уникальные аргументы вроде "unnamed-only/before-first" и т.п, а некоторые нужно добавлять в # rules через --enabled шоб заработало. В файле что кинул выше это вынесено в графу Opt-in Rules (disabled by default), видимо из-за этого ну было и было!
5) Be careful: когда swiftformat заработает то у вас будут сотни/тысячи измененных файлов. Поетому аккуратно надо
В принципе основные подводные подсветил на которых потерял пару часов.
Установил на проект swiflint + swiftformat и хочу написать об этом. В основном хочу пару подводных подсветить, может кому сэкономит время
1) Сначала устанавливаем swiftlint/swiftformat. В гугле есть вся документация, ставим через homebrew + в target скрипты пишем, тут объяснять ничего не надо
2) Сначала ставим скрипт только на swiftlint дабы не сломать проект.
3) Настройки конфигурации находятся в файле .swiftlint в корне проекта (в таргет включать не обязательно), конкретно моменты которые могут сэкономить время:
a) Ищем какой-нибудь yaml файл и ставим его, потом будем под себя править. Вот этот например
b) Смотрим какие выдает ошибки, есть три пути шо делать с этим: фиксим их, отключаем через disabled_rules либо правим параметры, документацию ищем просто гугля название ошибки, на сайте realm написана документация, в примере можете увидеть. Есть еще четвертый путь отключить локально через swiftlint:disable
c) Некоторые правила как я понял по дефолту отключены (почему-то) и нужно их написать в opt_in_rules, конкретно я вносил force_unwrapping и force_try, без этого не работало чето
По идеи на этом моменте swiftlint настроен, идем к свифтформату.
1) Добавляем скрипт как в документации и создаем файл .swiftformat, копируя откуда-нибудь. Например отсюда
2) Главные правила: обязательно сначала кидаем в --exclude то что не нужно форматировать. Скорей всего это Pods/Submodules и т.п
3) Насчет правил: есть вот этот файл где написаны главные правила. Идем по следующей логике, к примеру нужно убирать запятые в ненужных местах, пишем в поиске "comma" и смотрим что выдаст, если кавычки то "brackets" и т.п. Думаю понятна логика
4) Из неочевидного: у некоторых правил есть уникальные аргументы вроде "unnamed-only/before-first" и т.п, а некоторые нужно добавлять в # rules через --enabled шоб заработало. В файле что кинул выше это вынесено в графу Opt-in Rules (disabled by default), видимо из-за этого ну было и было!
5) Be careful: когда swiftformat заработает то у вас будут сотни/тысячи измененных файлов. Поетому аккуратно надо
В принципе основные подводные подсветил на которых потерял пару часов.
GitHub
SwiftLint/.swiftlint.yml at main · realm/SwiftLint
A tool to enforce Swift style and conventions. Contribute to realm/SwiftLint development by creating an account on GitHub.
👍7❤3🔥3