Евгений
на крайняк, если лень резолвить, то можно принять ремоут версию и свои файлы добавить еще раз
Евгений
потому что обычно не добавляешь за раз типа там 20 файлов которые лежат в разных местах
Bulat
на начальных этапах разработки сэкономит время немножко
Alexander
Пацаны, вечер в хату, раз уж зашла речь о бестпрактиках. Как правильно нужно логи приложухи вести чтоб потом смотреть исполнение? Причем не события чтоб по ним воронку переходов потэкранам строить, а логи именно функций. В firebase куданить пихать? Как я видел - делается какой нить класс аналитики, куда оборачиваются вызовы разных сервисов аналитических в функции, и потом методы его везде вызываются.
Alexander
Может вопрос тупой но чувствую что есть пробел в знаниях))
Евгений
сложно как-то.
в плане это тебе самому надо, типа ты это на досуге почитывать будешь и анализировать или аналитикам, которые втыкают в поведение юзера?
Alexander
для себя
Евгений
а ты уверен что будешь разгребать потом эти логи?))
Alexander
а вот хз
Alexander
потому и хочу узнать как правильно))))
Евгений
крешлитики имхо достаточно
Евгений
случился креш — получил лог, пофиксил
Евгений
а куда там юзер пошел — не пох ли? )
Евгений
всё равно поведение ты не поменяешь, тк не ты продакт оунер
Anton
Платформа да та же
Anton
Так шо ничо он не унаследовал
Anton
Anton
Swift classes are Objective-C classes, even when they don't subclass NSObject. In that case, they subclass SwiftObject which is a new root class that conforms to the NSObject protocol
Anton
https://www.mikeash.com/pyblog/friday-qa-2014-07-18-exploring-swift-memory-layout.html
Bulat
Кошмар
Bulat
Ну и вопросы О_о
Bulat
А можно ли в Xcode создавать свои темплейты приложений? Ну типа как при создании проекта "Single view application". Чтобы сразу например добавлялись заготовки какие-то свои
Bulat
Здорово, спасибо!
Bogdan
Подскажите пожалуйста статейку про лучшие практики работы Xcode + Git
Как тулзу использовать Xcode боль и унижения, я использую Tower, но подойдет и любой гит клиент. В гитигнор обязательно добавлять все, что не писали сами (generamba templates, pods, carthage builds etc). Сторибоарды и ксибы достаточно хорошо мерджатся, т.к. это по сути xml, хотя со сторибоардами я в большой команде не работал, так что мб там конфликты и есть. .pbxproj дело тонкое. С одной стороны, ты можешь добавить весь .xcodeproj в гитигнор и каждый разработчик будет настраивать его сам, а гит будет использоваться только для файлов проекта, этот вариант более легкий для мерджинга, т.к. мастеру не придется думать, что на что заменять, подходит, если команда большая, а мастер репозитория занимается только код-ревью. С другой стороны, если команда из 2-х\3-х людей, которые сами обрабатывают свои мердж реквесты, то проблем не возникнет, т.к. каждый знает, что он менял и как именно должен выглядеть его проект после изменений.
Bogdan
Хотя, вполне возможно, что решение исключить проект из гита, не самое лучшое, сейчас посмотрел в гитигнор аламофайр, так там все по дефолту и похоже легко мерджат проект. Сам лично сталкивался с тем, что в проекте было 8 человек, а реквесты обрабатывал только я, после первого геммороя с мерджингом проекта я просто исключил проект из репозитория и каждый разраб строил свой без особых проблем, в репозитории лежала только первая версия проекта с первоначальными настройками
Ilkhom
что при мерже автоматически сохраняются изменения из обоих веток
я всегда так настраиваю проект, очень удобно, как там и написано всеравно в .pbproj пишутса файлы которые в проекте, добавленные/удаленные, лучше чтобы все эти изменения были у всех синхронизированы, ато получится так что у один будет видеть файл а другие в команде нет.
Ilkhom
хкод + гит имхо в ранних стадиях подходит, но когда дело дойдет до более сложных манипуляций то без GUI не обойтись
Anton
Anton
Надо её в постбилд шаг положить
Anton
Она выдаёт файлам в pbxproj айдишники получше - хеши от относительного пути к файлу
Anton
Anton
Anton
Есть консольная программа tig - с ней поудобнее
Antontsue
не сказал бы я что обычный. проходил много, такое спрашивают редко - скорее всего из разряда как вы читаете чужой говнокод и смиряетесь с тем что то тут то там мы срезали на поворотах, изза чего таких касяков у нас очень много
Anton
Для конфликтов можно opendiff использовать
Antontsue
Anton
Antontsue
порог вхождения снизился
Antontsue
и подобные вырвиглазные практики уходят в прошлое
Anton
Можно посмотреть вопросы у Рамблера на иос позицию - там все ещё хардкор
Antontsue
у меня кореш там тимлидом работает)
Antontsue
а он совсем не хардкорный
Anton
Хм
Anton
Ну может скрывает :)
Anton
Или я нагло вру и это был Яндекс :)
Anton
Сайт у Рамблере на Вайпере похоже
Anton
Чёрный экран и Активити индикатор крутится уже 20 секунд :)))))
Anton
Ага вот, это Яндекс
Anton
https://yandex.ru/jobs/vacancies/dev/mobile_objc_dev/
Anton
Там ниже вопросы
Antontsue
-1, имеющего тип int16_t
Antontsue
ffff
Antontsue
(n & (n - 1)) != 0 - когда n четное?
Antontsue
nsmutablearray? я бы хранил в непрерывной области памяти, понятно по сложностям
Antontsue
nsmutabledictionary - хешмап очевидно
Antontsue
5 задачку лень делать, хотя интересно как можно такое на 2 потока разбить
Ilkhom
Antontsue
👍
там еще git flow есть, можно не изобретать велосипед
Anton
Помню была там задача n&(n-1) и вопрос что это и зачем. Я тогда по приколу решил их вопросы поотвечать. Так вот вариант "обнуление младшего установленного бита в целом числе" не проканал. Даже не знаю о чем они там думают.
Antontsue
Antontsue
Например 0-1
Anton
Нет, я все правильно написал :)
Anton
Младшая часть числа в двоичном виде делает так:
10000 &
011111
-------
00000
^ младший бит обнулился, а старшая часть числа остаётся неизменной, тк n&n == n
Antontsue
это ты из 1 вычел 2
Antontsue
10000 &
00000
-------
00000
Antontsue
00000 &
111111
-------
00000
Antontsue
да действительно
Antontsue
получается просто что n > 1, если не смотреть на отрицательные
Anton
Antontsue
это то что при нечетном (1) тоже 0 получатеся
Antontsue
я ща зарулем, вечером перед сном еще подумаю
Antontsue
вообще люблю такие задачки
Anton
101101000 &
1011001111
-----------
101100000
Самый младший из установленных в 1 битов обнулился. Сравнение с нулем проверят что в числе был не один установленный бит, а несколько.
Antontsue
верно
Antontsue
получается не 0
Antontsue
!= 1 && != 0?
Antontsue
скорее всего тебя завернули потмучто ответ был слишком абстрактный