Доп инфо: со Scala из коробки, похоже, не заработает (нужен Annotation Processing), с Kotlin судя по всему, должно работать, буду рад, если кто-нибудь проверит и отпишется
Именно это и было в голове, когда делал. TODO в коде стараюсь не писать, по простой причине: если у команды нет привычки смотреть их в IDE — их не видно, поэтому сразу завожу таску в тасктрекере, а вот всякие «переделать немного» и подобные решил сделать на компайл уровне.
К тому же, IDEA наглядно показывает ворнинги при сборке с текстом и возможностью перейти к месту возникновения, единственное, когда класс с ворнингом скомпилирован, то при сборке без очистки IDE ворнинг не покажет, но это логично, на мой взгляд.
Скриншот
И еще: советую проверить ваш CI, возможно он поддерживает обработку ворнингов от javac (для Jenkins есть плагины), можно делать различные хуки. В любом случае, текст ворнинга начинается с "@Warning", можно настроить его парсинг и прерывать сборку master ветки, если она содержит ворнинги, например (тоже очень полезно, имхо).
1) Пользователь сворачивает приложение
2) Ваш Runnable добавляется в очередь после выполнения асинхронной задачи
3) Пользователь запускает другие приложения и всё такое
4) Android выгружает ваш процесс из памяти, чтобы дать её другим приложениям и ваша очередь никуда не сохраняется
5) Пользователь разворачивает ваше приложение
6) Очередь Runnable пуста, то что вы хотели выполнить не выполнится
Сериалы на нем не смотрю, сейчас открыл — да, полоски по бокам. Но вот фильмы в основном как раз в 21:9 снимают, смотрел Хоббита Пустошь Смауга — великолепно.
Основной аргумент — много места по горизонтали, если ваш рабочий процесс его требует — берите не задумываясь, будет отличным подарком на НГ.
Например мне при Android разработке часто нужно видеть превью верстаемого Ui, влезает отлично: Project View (файлы, папки), код, превью
1) Проблемы со сборкой, каждому разработчику нужно держать синхронизированное состояние сабмодулей
2) Нет четкого понимания, какая версия сабмодуля требуется для сборки данной версии основного проекта
3) Тяжело делать checkout к старым коммитам проекта, чтобы найти причину бага/фичи, если код связан с кодом из сабмодуля (придется понять к какому коммиту чекаутить сабмодуль, а что если сабмодулей много?)
4) Сбока завязана на исходники сабмодулей, а это значит их нужно компилировать (в случае с php и другой интерпритарщиной не так критично), а это время, а время сборки критично важно для юнит-тестирования и вот этого всего.
5) В какой-то момент вы начнете смешивать разработку проекта и сабмодулей, но может и нет. Энивей, когда модули толком не знают друг про друга, имеют свою семантическую версионированность и для вас это по-сути разные проекты, разрабатывать их становится проще, быстрее и правильнее во всех смыслах.
6) Эта вечная херня с git submodule update, а еще --recursive, а еще… и т.д… Каждый раз, когда вы это делаете (особенно, если команда больше 1 человека), вы не находите это неправильным?
7) Кто добавит?
И если я реализую базовую функцию, то я могу вносить изменения одновременно во все три модуля.
Прямо пункт 5.
Как перевести всё на нормальные зависимости в php? Я без понятия — в Java: Gradle, Maven, у вас видимо Composer.
Оффтопик: Я наверное задам нубский вопрос (не особо игрок), ответьте пожалуйста, кто знает.
Геймпад Xbox One или от Xbox 360 обеспечит плавный поворот колес при управлении машинами в играх (GTA 4, в будущем GTA 5) и плавный газ/торможение?
Или надо покупать руль с педалями?
Спасибо!
P.S. судя по описанию структур данных (хорошо быть разработчиком :D), «курки» передают 0-255 значений (газ/тормоз?), + много вариантов у «джойстиков» (поворот руля?)
Воу. Такого я не ловил. Интересно, у NotNull на хабре отключены email-уведомления?
Хотя, судя по исключению, вы не указали путь к артефакту для какой-то штуки, странно, что TeamCity это проглотил.
Артефакт — это результат сборки, например вы собираете jar, вот ваш jar и есть артефакт, это общий термин, применяется во всех CI системах.
Сколько раз джиру видел — тормозит всегда, я реально не понимаю как им это удается, такое ощущение, что в обработчике запросов есть Thread.sleep() на секунд 30.
По вашему кейсу всё легко:
1) Очистить папку — есть такая галочка, но прям на крайняк можно шеллом сделать git clean -f
2) Сделать чекаут из гита — собственно, это и делается при срабатывании триггера, достаточно настроить VCS в проекте TeamCity
3) Запустить ant — есть поддержка ant на уровне build stepов, можно просто как шелл скрипт вызвать
4) Скопировать и scp + ssh -> шелл скрипт как build step самое простое решение
Когда Jira открывает таски по 30 секунд, а Youtrack делает это за полсекунды, никаких вопросов «кто кого превосходит» как-то не возникает
Честно говоря, я не использую Surfingbird, поэтому возможно ваше решение хорошо работает, но, скажем, в приложениях для твиттера, вк и других социалок, пользователь с большой вероятностью вообще никогда больше не вернётся к проскролленному контенту, так зачем грузить (батарейка, трафик, сторадж) ненужное?
Проголосовал: но всё таки Youtrack не какой-нибудь uservoice, для многих разработчиков моветон — писать комментарии +1, я вот идя с целью проголосовать, далеко не сразу нашел эту кнопку.
Меня всегда удивляет, что многие приложения, которые периодически обновляют контент в фоновом режиме, не имеют настройки «загружать картинки в фоновом режиме» (с разделением на мобильную сеть и wifi).
А то открываешь в метро, контент есть, но соединение плохое и картинки приходится либо долго ждать, либо пропускать вовсе. Тут приоритизация не особо поможет :(
На Android большинство библиотек для загрузки картинок ставят на паузу загрузку картинки если View переиспользуется, чтобы не мешать загрузке новой.
1) Сертификат проверяется не на уровне ОС, а на уровне процесса приложения, это может делать HTTP клиент из SDK или альтернативная реализация. Но это не суть.
2) Отсутствие проверок — вы можете отключить проверку сертификатов в HTTP клиенте, который используете. К сожалению, это довольно распространенная практика среди разработчиков, связано с тем, что часто тестовый сервер имеет самоподписанный сертификат и все такое прочее, что, естественно, не должно быть причиной.
3) Про вшитые в ОС сертификаты:
Есть два варианта генерации сертификата: вы можете получить сертификат у Доверенного центра сертификации или сгенерировать сертификат самостоятельно, например, через OpenSSL.
Суть Доверенных центров в том, их «корневые» сертификаты вшиты в ОС и эта информация обновляется в апдейтах вашей ОС.
В сертификате который вам пришел для https есть информация о том, каким доверенным центром он выдан. Когда HTTP клиент устанавливает https коннект, он по умолчанию попросит у ОС проверить, а правда ли данный сертификат выдан этим доверенным центром и все такое.
4) Так вот, как провести MITM:
Если сертификат выдан доверенным центром, то вариант только один — у проводящего атаку должен быть доступ к приватной части одного из вшитых в ОС корневых сертификатов, тогда можно сгенерировать свой сертификат и сделать так, чтобы MITM прокси отдавало свой сертификат клиентам вместо оригинального, и данный сертификат пройдет проверку, вот и все.
Проблема доверенных центров в том, что в вашей ОС установлено 200-300 корневых сертификатов доверенных центров, нередко, туда попадают сертификаты целых правительств, проверьте на своем девайсе, скорее всего, найдете сертификат правительства Китая, Японии, США и прочих стран/организаций.
Так вот, чтобы провести MITM на сертификат, выданный доверенным центром, вам достаточно быть в списке вшитых в ОС доверенных центров, далее уже ничего не спасет клиента.
А вот провести MITM на запинненный сертификат гоораздо сложнее, так как проверка подлинности не связана с доверенными центрами и выполняется чисто логикой приложения.
Надеюсь, я доступно объяснил. Могу, конечно, в чем то ошибаться, но в общих деталях всё должно быть верно, многое сам узнал из Security доклада на MobileCamp.
К тому же, IDEA наглядно показывает ворнинги при сборке с текстом и возможностью перейти к месту возникновения, единственное, когда класс с ворнингом скомпилирован, то при сборке без очистки IDE ворнинг не покажет, но это логично, на мой взгляд.
И еще: советую проверить ваш CI, возможно он поддерживает обработку ворнингов от javac (для Jenkins есть плагины), можно делать различные хуки. В любом случае, текст ворнинга начинается с "@Warning", можно настроить его парсинг и прерывать сборку master ветки, если она содержит ворнинги, например (тоже очень полезно, имхо).
2) Ваш Runnable добавляется в очередь после выполнения асинхронной задачи
3) Пользователь запускает другие приложения и всё такое
4) Android выгружает ваш процесс из памяти, чтобы дать её другим приложениям и ваша очередь никуда не сохраняется
5) Пользователь разворачивает ваше приложение
6) Очередь Runnable пуста, то что вы хотели выполнить не выполнится
Основной аргумент — много места по горизонтали, если ваш рабочий процесс его требует — берите не задумываясь, будет отличным подарком на НГ.
Например мне при Android разработке часто нужно видеть превью верстаемого Ui, влезает отлично: Project View (файлы, папки), код, превью
Я себе взял LG 25UM65, IPS матрица, 21:9, для разработки идеально, советую брать, на него пока не сильно подняли цены
1) Проблемы со сборкой, каждому разработчику нужно держать синхронизированное состояние сабмодулей
2) Нет четкого понимания, какая версия сабмодуля требуется для сборки данной версии основного проекта
3) Тяжело делать checkout к старым коммитам проекта, чтобы найти причину бага/фичи, если код связан с кодом из сабмодуля (придется понять к какому коммиту чекаутить сабмодуль, а что если сабмодулей много?)
4) Сбока завязана на исходники сабмодулей, а это значит их нужно компилировать (в случае с php и другой интерпритарщиной не так критично), а это время, а время сборки критично важно для юнит-тестирования и вот этого всего.
5) В какой-то момент вы начнете смешивать разработку проекта и сабмодулей, но может и нет. Энивей, когда модули толком не знают друг про друга, имеют свою семантическую версионированность и для вас это по-сути разные проекты, разрабатывать их становится проще, быстрее и правильнее во всех смыслах.
6) Эта вечная херня с git submodule update, а еще --recursive, а еще… и т.д… Каждый раз, когда вы это делаете (особенно, если команда больше 1 человека), вы не находите это неправильным?
7) Кто добавит?
Прямо пункт 5.
Как перевести всё на нормальные зависимости в php? Я без понятия — в Java: Gradle, Maven, у вас видимо Composer.
Геймпад Xbox One или от Xbox 360 обеспечит плавный поворот колес при управлении машинами в играх (GTA 4, в будущем GTA 5) и плавный газ/торможение?
Или надо покупать руль с педалями?
Спасибо!
P.S. судя по описанию структур данных (хорошо быть разработчиком :D), «курки» передают 0-255 значений (газ/тормоз?), + много вариантов у «джойстиков» (поворот руля?)
Хотя, судя по исключению, вы не указали путь к артефакту для какой-то штуки, странно, что TeamCity это проглотил.
Артефакт — это результат сборки, например вы собираете jar, вот ваш jar и есть артефакт, это общий термин, применяется во всех CI системах.
Сколько раз джиру видел — тормозит всегда, я реально не понимаю как им это удается, такое ощущение, что в обработчике запросов есть Thread.sleep() на секунд 30.
По вашему кейсу всё легко:
1) Очистить папку — есть такая галочка, но прям на крайняк можно шеллом сделать git clean -f
2) Сделать чекаут из гита — собственно, это и делается при срабатывании триггера, достаточно настроить VCS в проекте TeamCity
3) Запустить ant — есть поддержка ant на уровне build stepов, можно просто как шелл скрипт вызвать
4) Скопировать и scp + ssh -> шелл скрипт как build step самое простое решение
Когда Jira открывает таски по 30 секунд, а Youtrack делает это за полсекунды, никаких вопросов «кто кого превосходит» как-то не возникает
Честно говоря, я не использую Surfingbird, поэтому возможно ваше решение хорошо работает, но, скажем, в приложениях для твиттера, вк и других социалок, пользователь с большой вероятностью вообще никогда больше не вернётся к проскролленному контенту, так зачем грузить (батарейка, трафик, сторадж) ненужное?
Просто посмотрите на количество скачиваний в месяц Android Lint Plugin для Jenkins: wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin
P.S. пойду попрошу github добавить голосование за issues, там этого не хватает
А то открываешь в метро, контент есть, но соединение плохое и картинки приходится либо долго ждать, либо пропускать вовсе. Тут приоритизация не особо поможет :(
На Android большинство библиотек для загрузки картинок ставят на паузу загрузку картинки если View переиспользуется, чтобы не мешать загрузке новой.
Вы можете добавить поддержку анализа файлов Android Lint?
Думаю, многие будут рады.
1) Сертификат проверяется не на уровне ОС, а на уровне процесса приложения, это может делать HTTP клиент из SDK или альтернативная реализация. Но это не суть.
2) Отсутствие проверок — вы можете отключить проверку сертификатов в HTTP клиенте, который используете. К сожалению, это довольно распространенная практика среди разработчиков, связано с тем, что часто тестовый сервер имеет самоподписанный сертификат и все такое прочее, что, естественно, не должно быть причиной.
3) Про вшитые в ОС сертификаты:
Есть два варианта генерации сертификата: вы можете получить сертификат у Доверенного центра сертификации или сгенерировать сертификат самостоятельно, например, через OpenSSL.
Суть Доверенных центров в том, их «корневые» сертификаты вшиты в ОС и эта информация обновляется в апдейтах вашей ОС.
В сертификате который вам пришел для https есть информация о том, каким доверенным центром он выдан. Когда HTTP клиент устанавливает https коннект, он по умолчанию попросит у ОС проверить, а правда ли данный сертификат выдан этим доверенным центром и все такое.
4) Так вот, как провести MITM:
Если сертификат выдан доверенным центром, то вариант только один — у проводящего атаку должен быть доступ к приватной части одного из вшитых в ОС корневых сертификатов, тогда можно сгенерировать свой сертификат и сделать так, чтобы MITM прокси отдавало свой сертификат клиентам вместо оригинального, и данный сертификат пройдет проверку, вот и все.
Проблема доверенных центров в том, что в вашей ОС установлено 200-300 корневых сертификатов доверенных центров, нередко, туда попадают сертификаты целых правительств, проверьте на своем девайсе, скорее всего, найдете сертификат правительства Китая, Японии, США и прочих стран/организаций.
Так вот, чтобы провести MITM на сертификат, выданный доверенным центром, вам достаточно быть в списке вшитых в ОС доверенных центров, далее уже ничего не спасет клиента.
А вот провести MITM на запинненный сертификат гоораздо сложнее, так как проверка подлинности не связана с доверенными центрами и выполняется чисто логикой приложения.
Надеюсь, я доступно объяснил. Могу, конечно, в чем то ошибаться, но в общих деталях всё должно быть верно, многое сам узнал из Security доклада на MobileCamp.