Каждый месяц со страниц рубрики «Кодинг» на тебя смотрят самые обычные (просто очень крутые :)) программисты. В свободное от написания статей время они живут обычной кодерской жизнью — программирование по работе, поддержка своего софта, выступления на конференциях, опенсорсные проекты…

В этом месяце мы решили сделать экспериментальную колонку, в которой не один колумнист, а сразу несколько авторов расскажут о том, что им показалось интересным в этом месяце. Мне, кстати, понравилось :).

 

Виталий Худобахшов

Недавно выступил на Java-конференции Joker и разобрал вопросы реального применения функционального программирования и особенности стандартной библиотеки Scala, которые правильно было бы считать ошибками. Очень интересная история с нестандартным порядком аргументов в методе foldLeft, что очень запутывает и не дает каррировать правильно, а также нарушение контракта функтора map(g ? f) = map(g) ? map(f) в случае применения метода map одновременно для ключей и значений словаря (Map). Последний пример в обыденной жизни означает, что Map.map в каком-то не вполне известном порядке схлопывает повторяющиеся ключи, если они возникают во время обработки, а это может приводить к очень большим проблемам. Вообще, функциональные языки и языки со смешанной парадигмой хороши для тех, кто умеет всем этим пользоваться.

 

Deeonis

Удалось поучаствовать в проекте по созданию нового дистрибутива Linux с нуля. Соответственно, существенно расширился бэкграунд системных знаний о Linux, о том, как разные компоненты в этой ОС взаимодействуют друг с другом. Кроме того, пришлось немного пописать софт под этот дистрибутив. В частности, что-то похожее на desktop shell со своим доком и прочими атрибутами. Главной особенностью этого приложения было то, что оно использовало библиотеку XCB для общения с X-сервером. Да-да, не GTK и даже не XLib, а XCB.

Эта библиотека является тонкой C-оберткой над протоколом X11 и его расширениями. Большинство ее кода генерируется из описания протокола в XML. Основной плюс XCB — полная асинхронность, что существенно повышает производительность GUI-приложений, особенно при сетевом запуске. Главный минус — это не GUI-фреймворк. Там нет привычных контролов, таких как кнопки или поля ввода. Все это приходилось рисовать вручную, благо есть библиотека Cairo, которая умеет использовать в качестве бэкенда XCB, что облегчало непосредственно рисование, но не избавляло от написания логики работы контролов. В общем, было весело :).

 

Николай Марков

В моем случае новой идеей, которая поставила все с ног на голову, стало активное использование CLI-инструментов для ad hoc анализа данных прямо в консоли. Нет, Pandas и Numpy в Python — штуки отличные, но простые задачи можно решать быстро и эффективно и без них. GNU Parallel/mawk/sed/csvkit/jq — и гигабайты и даже терабайты данных за какие-то минуты обсчитываются на нескольких ядрах. Я уж молчу про Hadoop и Spark. В общем, азы вспомнить никогда не повредит, будь уверен.

 

Андрей Пахомов

Подметил для себя «новые» веяния в material design. Сначала был «бургер» — когда меню скрывается за иконкой в левом верхнем углу, похожей на фастфуд-продукт. Теперь Google предлагает разработчикам использовать bottom navigation: расположить элементы меню в один ряд внизу экрана так, чтобы они были всегда перед глазами у пользователя. По-моему, мы это уже когда-то видели. Ждем top navigation?

 

Владимир Тимофеев

Недавно прошла новость про перехват ввода данных из андроид-приложений. В уязвимости используется сервис спецвозможностей, поскольку он может, например, читать поля ввода EditText. Эту особенность я уже раскрывал в своей старой статье. Если тебя беспокоит безопасность ввода, рекомендую последовать советам из статьи.

Еще недавно провел небольшое исследование своего проекта «Wi-Fi напоминатель паролей» — возможно ли уменьшить APK-файл и снизить количество методов. Получилось ужать его с трех до двух мегабайт, попутно удалив из него фрагменты. Вот тут описано, как сделать ViewPager на простых классах View. У меня он применяется в двух местах: в основном активити и в обучающем.

Во время своих ковыряний я узнал особенности работы некоторых подключаемых библиотек — главное, как они сами подтягивают лишние зависимости. От этого число методов в приложении увеличивается, а манифест наполняется совсем ненужными разрешениями.

В Gradle мы можем прописать вручную, какие разрешения убрать из итогового манифеста и какие библиотеки отключить принудительно.
После всех оптимизаций, как всегда, желательно хорошенько проверить работоспособность :).

 

Артур Глызин

А я расскажу про Servless-приложение на базе Firebase. Если тебя периодически посещают идеи написать очередное крутое приложение, но ты останавливаешься на этапе написания бэкенда под него, то самое время тебе узнать, что в современном мире мобильной разработки можно обойтись и без собственного сервера. Облачных платформ много, но я рекомендую взглянуть на Firebase, которым с недавнего времени владеет Google.

Хочешь, чтобы пользователи твоего приложения обменивались файлами? Firebase Storage! Нужно внутри приложения организовать чатик или функцию бэкапа? Firebase Database! Нужна авторизация в приложении? Firebase Authentication! С Firebase Notifications тебе даже не нужен сервер для рассылки уведомлений! Check this out.

 

Юрий «yurembo» Язев

За последнее время yurembo примкнул к разработке двух indie-игр. А что? Инди — это романтика, кодинг, арт, смелые идеи, выходящие за рамки продюсеров больших компаний, иногда еда и прочие радости жизни :).

Первый проект разрабатывается длительное время на пресловутом движке Cryengine 3.8. Эту версию уже не поддерживает сама Crytek. Поэтому мы решили перенести имеющиеся наработки на Lumberyard. Причина в том, что Amazon основала Lumberyard на версии 3.8 «плачущего движка». Следовательно, это должно облегчить перенос.

Еще до того, как я присоединился, было решено не переходить на Cryengine 5, поскольку в нем отсутствуют коды для редактора движка World Editor. Дело в том, что в имеющуюся версию (3.8) уже внесено много важных модификаций, которые необходимо сохранить при переходе. А в Lumberyard есть основательная поддержка облака и при необходимости автоматически расширяющаяся облачная инфраструктура, которая поможет не беспокоиться о наращивании ресурсов при увеличении нагрузки.

Вторая игра представляет собой двумерную онлайновую аркаду. Игра разрабатывается на голом энтузиазме, вроде Game Jam. В качестве движка будем юзать мною горячо любимый Torque 2D. Выбор на него пал во многом благодаря тому, что у него есть мощная сетевая подсистема, о чем я неоднократно говорил.

1 комментарий

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Android: Automagic — аналог Tasker с человеческим лицом

В маркете можно найти множество приложений для автоматизации рутинных действий. Наиболее и…