Совсем недавно мы опубликовали статью про особенности и проблемы популярного мобильного фреймворка Xamarin. Сегодня же мы продолжим рассказ и сосредоточимся на нюансах библиотеки Xamarin.Forms. Под катом вас ждёт история о том, какие грабли поджидают решившего сделать кроссплатформенный UI.
Контур
Делаем сервисы для бизнеса
Сначала показывать
Xamarin и Xamarin.Forms – кактус в шоколаде. Часть 1
9 мин
22KТуториал
Мы в Контур.Эльбе обожаем мобильные приложения. У нас уже был опыт написания приложения под iOS, а также разработки и дальнейшей поддержки приложения под Android. В этом году мы вновь выпустили версию под iOS, но на этот раз на базе Xamarin и Xamarin.Forms, и нам не терпится поделиться опытом. Пока что мы успели рассмотреть разработку только под iOS, но впечатлений уже море, да и про Android пару слов однозначно скажем.
+15
QCTF Starter: компьютерная безопасность на четверых или как мы сделали турнир для новичков в 19 городах одновременно
5 мин
9.4KUPD: ссылка на онлайн-турнир online.qctf.ru
CTF-соревнования знакомы многим, ещё больше людей о них хотя бы раз слышали. Про них тут хорошо написано. Чтобы участвовать в серьёзных CTF-турнирах нужна неслабая подготовка, но мало кто знает, как и где её получить. Мы решили исправить это, а именно — провести массовые соревнования по компьютерной безопасности для новичков. И назвали их QCTF Starter. Возможно, для участников это станет первой ступенькой на пути к профессиональным CTF-турнирам.
QCTF Starter прошёл вчера на площадках по всей стране, а с понедельника (10:00 по МСК) мы запустим онлайн-версию по мотивам соревнования для тех, кто не смог присоединиться к нам в оффлайне. Ссылка появится на сайте прямо перед стартом тура. Мы обязательно напомним вам о начале игры, если вы оставите тут свои координаты. На онлайн-зеркало приглашаем всех желающих.
В этом году нам удалось сделать почти невозможное: собрать 208 команд в 19 городах на 22 площадках. Одна даже находилась за пределами России, в Минске. Но мы неумолимы и надеемся, что в следующем году площадок станет ещё больше.
Благодаря энтузиастам, согласившимся взять на себя организацию соревнований в своих городах, мы смогли набрать такое большое количество команд (QCTF Starter стал самым большим очным CTF-соревнованием, когда-либо проводившимся в России). Как нам это удалось и что получилось в итоге, читайте под катом.
(Фото сделано участником соревнования QCTF Starter в Екатеринбурге)
CTF-соревнования знакомы многим, ещё больше людей о них хотя бы раз слышали. Про них тут хорошо написано. Чтобы участвовать в серьёзных CTF-турнирах нужна неслабая подготовка, но мало кто знает, как и где её получить. Мы решили исправить это, а именно — провести массовые соревнования по компьютерной безопасности для новичков. И назвали их QCTF Starter. Возможно, для участников это станет первой ступенькой на пути к профессиональным CTF-турнирам.
QCTF Starter прошёл вчера на площадках по всей стране, а с понедельника (10:00 по МСК) мы запустим онлайн-версию по мотивам соревнования для тех, кто не смог присоединиться к нам в оффлайне. Ссылка появится на сайте прямо перед стартом тура. Мы обязательно напомним вам о начале игры, если вы оставите тут свои координаты. На онлайн-зеркало приглашаем всех желающих.
В этом году нам удалось сделать почти невозможное: собрать 208 команд в 19 городах на 22 площадках. Одна даже находилась за пределами России, в Минске. Но мы неумолимы и надеемся, что в следующем году площадок станет ещё больше.
Благодаря энтузиастам, согласившимся взять на себя организацию соревнований в своих городах, мы смогли набрать такое большое количество команд (QCTF Starter стал самым большим очным CTF-соревнованием, когда-либо проводившимся в России). Как нам это удалось и что получилось в итоге, читайте под катом.
(Фото сделано участником соревнования QCTF Starter в Екатеринбурге)
+11
Долгая дорога в App Store, или как потратить 43 дня на премодерацию приложения
14 мин
25KТуториал
В прошлом году мы рассказывали про разработку приложения Контур.Эльба под Android (причем неоднократно). Реализовав в нем все задуманное, мы принялись за разработку версии под iOS, которая недавно появилась в App Store. Пост про разработку с использованием Xamarin.Forms будет позже, а пока сосредоточимся на, казалось бы, банальном вопросе: выкладывание приложения в App Store и общение с модераторами.
Начнём с выводов, которые мы получили в процессе общения с модераторами Apple:
Представляем лог общения с модераторами с неожиданными поворотами, расследованиями, тотальным непониманием, но со счастливым завершением сюжетной арки.
Начнём с выводов, которые мы получили в процессе общения с модераторами Apple:
- следует внимательно перечитывать App Store Review Guidelines: рекомендации меняются, и то что вчера было разрешено, сегодня могут уже запретить;
- модераторы Apple не всегда внимательно изучают приложение и могут пропустить контент внутри;
- нужно внимательно читать ответы модераторов;
- решение после проверки может не соответствовать правилам App Store. Пример в тексте ниже: требование подключения in app purchase для приложения без поддержки платных фич;
- в непонятных ситуациях лучше сразу написать апелляцию, чтобы не тратить неделю на ожидание ответа. Если ответ не устраивает или непонятен – новые апелляции;
- модерация может занять много времени: минимум 8 дней, из которых 7 дней – ожидание в очереди на проверку.
Представляем лог общения с модераторами с неожиданными поворотами, расследованиями, тотальным непониманием, но со счастливым завершением сюжетной арки.
+14
Заказчики из-за границы: как сделать всё легально
5 мин
80KИз-за падающего курса рубля многие фрилансеры уже давно работают на зарубежных клиентов. Среди них не все желают сотрудничать с обычными физлицами: крупные заказчики требуют оформлять контракт и оплачивать работы в иностранной валюте. Чтобы охватить новый рынок, придётся зарегистрироваться как предприниматель и соблюдать серьезное валютное законодательство. Обо всех этих правилах мы постарались рассказать понятными словами.
+14
Зачем давать гранты преподавателям, когда нужны разработчики
4 мин
4.5KИТ-компании часто тратят деньги на развитие сегмента и вкладываются в будущих сотрудников. На это много причин: говорят об обязательствах лидеров отрасли, развитии местного профессионального сообщества, социальной ответственности и бла-бла-бла. На деле всё прозаичнее: хочешь хорошего специалиста — воспитай сам. Не быстро, зато надежно. Мы — такая социально-ориентированная компания с земными интересами. Будущих программистов и разработчиков у нас помогают готовить Образовательные программы. Как все устроено и чем именно занимается отдел, рассказывать не буду — это тема отдельного поста. Поделюсь опытом работы над одним из проектов направления — грантовой программой для преподавателей.
+12
Быстрая и удобная генерация IL
14 мин
21KЯ много раз сталкивался с задачей динамической генерации кода (например, при написании эффективного сериализатора или компилятора DSL). Это можно делать разными способами, какой из них лучший – дискуссия для отдельной статьи. По ряду причин я предпочитаю Reflection.Emit и CIL (Common Intermediate Language) и расскажу, с какими проблемами пришлось столкнуться на этом пути, а также об их решении: умной обертке над ILGenerator – GroboIL из библиотеки Graceful Emit.
Хочу отметить при этом, что иногда встречаются ситуации, когда у нас нет большого выбора: например, при написании сериализатора необходимо иметь доступ к приватным полям, и приходится использовать IL. Кстати, известный сериализатор protobuf-net содержит несколько сотен IL-инструкций.
Если вы ни разу не сталкивались с использованием IL-кода, то статья может показаться сложной для понимания, поскольку содержит много примеров кода с использованием IL. Для получения базовых знаний рекомендую прочитать статью Introduction to IL Assembly Language.
Хочу отметить при этом, что иногда встречаются ситуации, когда у нас нет большого выбора: например, при написании сериализатора необходимо иметь доступ к приватным полям, и приходится использовать IL. Кстати, известный сериализатор protobuf-net содержит несколько сотен IL-инструкций.
Если вы ни разу не сталкивались с использованием IL-кода, то статья может показаться сложной для понимания, поскольку содержит много примеров кода с использованием IL. Для получения базовых знаний рекомендую прочитать статью Introduction to IL Assembly Language.
+26
Почему я не преподаю SOLID и «принцип устранения зависимостей»
5 мин
65KПеревод
Статья 1. Почему я не преподаю SOLID
Если вы разговариваете с кем-то, кому небезразлично качество кода, уже достаточно скоро в разговоре всплывёт SOLID — аббревиатура, помогающая разработчикам запомнить пять важных принципов объектно-ориентированного программирования:
SOLID полезен. Его разработали знатоки в нашей области. Он помогает людям рассуждать о дизайне. Помогает создавать системы, устойчивые к изменениям.
Раньше SOLID был краеугольным камнем моего набора средств проектирования. Я делал все возможное, чтобы сделать мой код как можно более SOLID. Я учил других поступать так же.
Сегодня SOLID остается для меня важным, но я больше не пытаюсь сделать мой код SOLID. Я редко упоминаю его, когда говорю про дизайн. И тем более я не учу пользоваться им разработчиков, которым хочется почерпнуть хорошие дизайнерские методы проектирования. Он больше не находится у меня под рукой в моем «ящике для инструментов». Он лежит в пыльной коробке на чердаке. Я храню его, потому что он важен, но редко им пользуюсь.
+37
QR-код Шредингера: когда монохромный рисунок «оживет»?
3 мин
4.2KQR-код очень интересный предмет: даже если он есть, его как бы нет… Он имеет непростую историю распространения в нашей стране. С одной стороны, несколько лет назад черно-белые значки активно начали расползаться по всевозможным поверхностям – от упаковок до зданий, ими обзавелись даже особо прогрессивные музеи, чтобы привлечь молодую аудиторию и добавить долю интерактива в приобщение к прекрасному.
Мы на своем проекте ощутили, насколько непопулярен «удобный» значок даже у молодого поколения. О том, как мы собственным опытом подтвердили гипотезу, что это скорее украшение и хороший тон, чем полезное дополнение, читайте под катом.
Мы на своем проекте ощутили, насколько непопулярен «удобный» значок даже у молодого поколения. О том, как мы собственным опытом подтвердили гипотезу, что это скорее украшение и хороший тон, чем полезное дополнение, читайте под катом.
+7
Несерьезный пост
1 мин
4.1K1 апреля не только день шуток и смеха, но еще и день рождения нашей справочно-правовой системы для бухгалтера "Норматив". Однажды мы решили собрать коллекцию странных законов со всего мира и поместить их в рубрику «Юмор в законе», которую может видеть каждый пользователь нашего веб-сервиса. Набралось больше 200 законов. Топ-10 необычных, по нашему мнению, норм публикуем сегодня для вас. Пусть в нашей жизни будет больше позитивных эмоций и поменьше невыполнимых законов:
+6
«Шуба-дуба в лифте» идет в народ или как за 1 000 руб. снять видео и за 3 дня собрать 50 000 просмотров
2 мин
4.5KНевозможно угадать, станет ли видеоролик вирусным. Это решает случай и удачное стечение обстоятельств. Так что основной нашей задачей было «заразить» хорошим настроением прекрасную половину компании, а уж потом – «распространиться» в интернете. Получилось и то, и другое. Этим опытом мы хотим с вами поделиться.
Позитив + сюрприз + естественные эмоции. Именно такова формула хорошего поздравительного ролика, на наш взгляд. Несколько мозговых штурмов и вот, накануне 8 марта, один из пассажирских лифтов в нашем офисном здании превращается в камерный концертный зал. Ничего не подозревающая женщина заходит утром в лифт, а там… Впрочем, смотрите сами!
Позитив + сюрприз + естественные эмоции. Именно такова формула хорошего поздравительного ролика, на наш взгляд. Несколько мозговых штурмов и вот, накануне 8 марта, один из пассажирских лифтов в нашем офисном здании превращается в камерный концертный зал. Ничего не подозревающая женщина заходит утром в лифт, а там… Впрочем, смотрите сами!
+9
Как рассказать школьникам о разработчиках?
1 мин
4.6KIT-компании, и мы в том числе, запускают и развивают образовательные проекты для студентов вузов — будущих разработчиков и прочих it-шников. Этим уже никого не удивишь.
После погружения в студенческую среду мы решили, что надо увеличивать область воздействия и двигаться к истокам — в школы. Расширять, так сказать, воронку продаж. Этим мы и занимаемся уже два года, а недавно, волей случая, подключились к созданию профориентационного мультика. И да, акцент сместился на школьников не только у нас.
Компания Парамульт снимает для школьников мультики про современные профессии. А в Контуре знают, как и зачем становятся разработчиками. Соединив нашикристаллы знания, мы начали делать мотивирующий мультик про профессию разработчика.
Опустим подробности обсуждений и подготовки — сейчас готов аниматик. Это такой недомультик, который уже можно смотреть и предлагать правки.
Всем любопытствующим — добро пожаловать под кат.
После погружения в студенческую среду мы решили, что надо увеличивать область воздействия и двигаться к истокам — в школы. Расширять, так сказать, воронку продаж. Этим мы и занимаемся уже два года, а недавно, волей случая, подключились к созданию профориентационного мультика. И да, акцент сместился на школьников не только у нас.
Компания Парамульт снимает для школьников мультики про современные профессии. А в Контуре знают, как и зачем становятся разработчиками. Соединив наши
Опустим подробности обсуждений и подготовки — сейчас готов аниматик. Это такой недомультик, который уже можно смотреть и предлагать правки.
Всем любопытствующим — добро пожаловать под кат.
+13
Поющий лифт
1 мин
6.9KМы не нашли на «Мегамозге» специальной рубрики для поздравлений. Наш пост необычный. С одной стороны, он поздравительный, с другой – про вирусные ролики и интернет-маркетинг.
Буквально два дня назад мы организовали необычное поздравление для сотрудниц нашего офиса и сняли все это скрытыми камерами:
Буквально два дня назад мы организовали необычное поздравление для сотрудниц нашего офиса и сняли все это скрытыми камерами:
+16
Шоу накрутчиков голосов в интернете. Третий сезон
3 мин
12KВот уже три года подряд наша компания, СКБ Контур, проводит для владельцев малого и среднего бизнеса конкурс с соответствующим названием «Я Бизнесмен». Основной этап конкурса проходит, само собой, в интернете. Из года в год его правила слегка корректируются, но в целом неизменны и достаточно просты: необходимо иметь официально зарегистрированный бизнес, снять о нем короткий видеоролик, выложить на странице конкурса и набрать максимум голосов.
Чтобы поставить «лайк» за тот или иной ролик, нужно оставить в форме голосования номер своего мобильного телефона. На него придет СМС с уникальным кодом, с помощью которого можно оставить один голос. С одного номера за время конкурса можно отправить только пять СМС-сообщений.
Сумма призов в основных номинациях конкурса довольно внушительна. Наверное, поэтому непременно находятся участники, готовые ради победы использовать не совсем честные способы для получения голосов. Несмотря на все наши предупреждения, накрутчиков становится больше, а их методы – более технологичными и изящными.
За три года мы смогли составить рейтинг самых популярных методов получения голосов (честных и нечестных). Надеемся, кому-то наша статья поможет сделать конкурсы с голосованием более прозрачными, ну а накрутчикам – определенные выводы.
+16
Simple container
18 мин
11KДа-да, вы все правильно поняли, это статья об еще одном велосипеде — о моем Dependency Injection (DI) контейнере. За окном уже 2015-ый год, и самых разных контейнеров на любой вкус и цвет полным полно. Зачем может понадобиться еще один?
Во-первых, он может просто образоваться сам собой! Мы в Эльбе довольно долго использовали этот контейнер, и некоторые из описываемых в статье идей (Factory Injection, Generics Inferring, Configurators) изначально были реализованы поверх него через публичное API.
Во-вторых, для большого проекта DI-контейнер — существенная часть инфраструктуры, во многом определяющая организацию кода. Простой, гибкий и легко модифицируемый контейнер часто позволяет найти элегантное решение специфической проблемы, избежать связности отдельных компонент, многословного и шаблонного прикладного кода. При решении конкретной задачи можно вывести некоторый паттерн, реализовать его на уровне контейнера и затем повторно использовать в других задачах.
В-третьих, DI-контейнер — относительно простая штука. Он очень хорошо поддается разработке в режиме TDD, за счет чего делать его становится весело и приятно.
Эта статья — не введение в DI. На эту тему есть много других прекрасных публикаций, в том числе и на Хабре. Скорее здесь собран набор рецептов приготовления DI так, чтобы получившееся блюдо было вкусным, но не острым. Если у вас DI-контейнер в продакшене или вы написали свой собственный самый лучший контейнер, то здесь отличное место для холиваров о том, чей контейнер круче!
Во-первых, он может просто образоваться сам собой! Мы в Эльбе довольно долго использовали этот контейнер, и некоторые из описываемых в статье идей (Factory Injection, Generics Inferring, Configurators) изначально были реализованы поверх него через публичное API.
Во-вторых, для большого проекта DI-контейнер — существенная часть инфраструктуры, во многом определяющая организацию кода. Простой, гибкий и легко модифицируемый контейнер часто позволяет найти элегантное решение специфической проблемы, избежать связности отдельных компонент, многословного и шаблонного прикладного кода. При решении конкретной задачи можно вывести некоторый паттерн, реализовать его на уровне контейнера и затем повторно использовать в других задачах.
В-третьих, DI-контейнер — относительно простая штука. Он очень хорошо поддается разработке в режиме TDD, за счет чего делать его становится весело и приятно.
Эта статья — не введение в DI. На эту тему есть много других прекрасных публикаций, в том числе и на Хабре. Скорее здесь собран набор рецептов приготовления DI так, чтобы получившееся блюдо было вкусным, но не острым. Если у вас DI-контейнер в продакшене или вы написали свой собственный самый лучший контейнер, то здесь отличное место для холиваров о том, чей контейнер круче!
+10
И ИТ, и ИП: рассказываем, где небольшому бизнесу взять денег на развитие
2 мин
7.8KУ вас есть свой бизнес? Тогда мы хотим, чтобы вы знали: до 27 января 2015 года можно принять участие в конкурсе «Я Бизнесмен» и при помощи собственного мозга и креатива выиграть разные полезные штуки и 300 000 или 200 000. Рублей, а не долларов, но тоже неплохо в свете текущей экономической ситуации.
Почему мы хотим рассказать о конкурсе именно здесь? Как минимум, айтишники – люди с мозгами. Тот, кто смог запустить свой ИТ-стартап и реализовать на практике идею, сможет интересно рассказать о своем бизнесе.
Именно это и требуется – снять о своем деле ролик с помощью любой техники. Главное, уложиться в 3 минуты, а владельцу бизнеса хотя бы раз показаться в кадре.
Почему мы хотим рассказать о конкурсе именно здесь? Как минимум, айтишники – люди с мозгами. Тот, кто смог запустить свой ИТ-стартап и реализовать на практике идею, сможет интересно рассказать о своем бизнесе.
Именно это и требуется – снять о своем деле ролик с помощью любой техники. Главное, уложиться в 3 минуты, а владельцу бизнеса хотя бы раз показаться в кадре.
+2
Как работать с валютными счетами?
4 мин
118K Скачущий курс рубля никого не оставил равнодушным. Бум валютных операций подвигнул нас пристально рассмотреть все особенности валютного законодательства.
С зарубежными партнерами расчет чаще всего происходит в иностранной валюте. Чтобы оплатить заказ или получить доход от покупателя в валюте необходимо иметь валютный счет.
С зарубежными партнерами расчет чаще всего происходит в иностранной валюте. Чтобы оплатить заказ или получить доход от покупателя в валюте необходимо иметь валютный счет.
+35
Делаем собственную индикацию о входящем звонке
4 мин
47KТуториал
После последнего поста о нашем Android-приложении у некоторых читателей статьи возник вопрос, как именно показать собственную информационную плашку во время звонка? Ну что же, сегодня мы ответим на этот вопрос.
+19
Что делать, если у банка отозвали лицензию?
5 мин
108KТуториал
В последнее время всё чаще появляются новости о том, что Центробанк отозвал лицензию у какого-нибудь банка. Иногда это происходит внезапно и неожиданно, а бывает, что до этого в интернете уже проскальзывал слух. Когда нужно верить плохим новостям и бежать менять банк и, самое главное, что делать, если вы остались без банка — не будем тянуть с лиричными вступлениями и расскажем прямо сейчас.
+62
Экспортируем комментарии и оценки из Google Play для анализа
3 мин
10KТуториал
Не все знают, но в Google Play существует вполне легальная возможность выгрузить все комментарии и оценки к своему приложению в отдельный CSV-файл, после чего заняться каким-нибудь анализом, не доступном из гугловской системы. Но делается это с помощью внешней утилиты gsutil, написанной на Python’е. Так что в этом посте будет небольшая инструкция по тому, как это сделать.
+12