Как стать автором
Обновить
0
0
Shmasser @Shmasser

Пользователь

Отправить сообщение

Как мы ускоряли сборку Android-приложения из двух миллионов строк кода

Время на прочтение 18 мин
Количество просмотров 15K

Всем привет! Наверняка каждый Android-разработчик хоть раз сталкивался с проблемой скорости сборки своего проекта. После нехороших слов в адрес кодогенерации, покупок более мощного железа, многочисленных попыток распилить проект на небольшие параллельно собираемые модули и прохождений всех стадий торга мы продолжаем искать решение этой проблемы. К счастью, за годы развития и в Gradle, и Android Gradle Plugin (AGP) появилось много полезных штук для ускорения сборки, о которых я расскажу дальше.


Несмотря на шутку в адрес многомодульности, это действительно полезный подход, но для большого проекта с богатой историей модуляризация может быть очень сложным процессом. Поэтому пока давайте посмотрим, что можно сделать без больших болей на уровне Gradle и AGP.


Я расскажу на примере мобильного Яндекс Браузера. У нас было ~150 Gradle-модулей, ~2 млн LoC на Java/Kotlin, десяток Gradle-плагинов, тысячи строк кода в buildSrc и лёгкая дрожь от вопроса, сколько ещё может переварить билд-система. Не скажу, что это всё было категорически необходимо, но к написанным строчкам кода надо проявлять уважение.

Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 19

«Хакинтош» – стоит ли игра свеч?

Время на прочтение 4 мин
Количество просмотров 351K
imageХочу поделиться своим мнением и опытом относительно работы Mac OS X на обычном PC компьютере. Может кому-то этот топик будет интересен или полезен.

Я разработчик ПО для Mac OS X и iOS. И я обожаю технику и ПО от Apple (но я не являюсь ярым фанатом). За свою жизнь у меня побывало много гаджетов от Apple: PowerBook G4, MacBook, iMac, MacBook Pro, iPhone, iPad и пр.

Техника для меня лишь инструмент достижения целей. В данный момент времени на работе я использую iMac (Core i5), в личных целях: обычный стационарный PC, ноутбук Lenovo, телефон на Android и iPad.

Недавно мне для работы дома понадобился очень мощный компьютер с Mac OS X. По характеристикам из техники Apple подходили лишь топовый iMac (с Core i7-2600 3,4 ГГц) и Mac Pro. Оба стоят просто запредельные деньги — более 100 тыс. рублей. Я психологически не был готов потратить такие деньги на компьютер. Ограничил бюджет суммой 55 тыс. рублей и решил собрать «Хакинтош». Я немного слежу за тематикой «Хакинтош» и имею четкое представление, что «там и как».

Читать дальше →
Всего голосов 330: ↑239 и ↓91 +148
Комментарии 331

Google Статистика поиска — Посмотрите, что ищут люди по всему миру (на 39 языках)

Время на прочтение 2 мин
Количество просмотров 90K
Статистика поиска Google позволяет сравнивать объемы поисковых запросов по различным регионам, категориям, временным рамкам и веб-службам.

Приведенные ниже примеры иллюстрируют некоторые способы использования Статистики поиска Google. Независимо от того, представляете ли вы рекламное агентство, небольшую компанию, международную корпорацию или исследовательский центр, с помощью Статистики поиска вы сможете оценить интерес к требуемым поисковым запросам.
image

Читать дальше →
Всего голосов 36: ↑31 и ↓5 +26
Комментарии 34

Все вебморды в одной. virtualhost и proxy_pass в nginx для дома.

Время на прочтение 4 мин
Количество просмотров 4K
В этой статье я хотел бы поделиться опытом, как организовать доступ к Web-интерфейсам различных домашних качалок через один единственный проброшеный наружу порт. Делать будем под винду (на Win32 порту nginx), но точно также можно сделать под unix.

Где это может понадобиться? Очень простой пример, состоящий из двух условий:
— У меня дома стоит СТРИМ, который блокирует входящий 80 порт
— У меня на работе открыты наружу только порты 443, 80, 5190.
— Как итог: я могу достучаться домой только к 2 сервисам, один из которых у меня SSH, и один остается свободным. Задача сводится к тому, чтобы завернуть все WEB-морды в один сайт, ибо замучался я с SSH-туннелингом. Универсального интерфейса, конечно же, не получится, так что их надо логически разделить.
Читать дальше →
Всего голосов 33: ↑27 и ↓6 +21
Комментарии 18

Вардрайвинг, сбор информации о беспроводных сетях

Время на прочтение 4 мин
Количество просмотров 21K
Сбор информации о беспроводных сетях или wardriving (в зависимости от способа передвижения, это может быть и warwalking, и warflying, и, как было продемонстрировано на BlackHat 2008 — warbalooning) занятие очень увлекательное и при этом предоставляющее богатые статистические данные об уровне защищености беспроводных сетей по городу.

Читать дальше
Всего голосов 22: ↑20 и ↓2 +18
Комментарии 14

Перенос сайта на новый домен

Время на прочтение 3 мин
Количество просмотров 1.8K
Склейка домена обычно происходит при необходимости переехать с одного домена на другой, например, при покупке нового более красивого адреса или попадания в бан одной из поисковых систем старого. Иногда же клеят в корыстных целях чтобы получить чужой тИЦ/PR, но сейчас о первом случае.

Хотелось бы сразу оговориться, что склейка домена занятие не трудоёмкое само по себе, но довольно нервотрепательное и долгое. И, на мой взгляд, без особой надобности её не стоит делать, ибо будут потери посещаемости.

Самым же неправильным методом переноса сайта на новый домен с минимальной потерей посетителей, на мой взгляд, будет следующий:
Читать дальше →
Всего голосов 62: ↑52 и ↓10 +42
Комментарии 16

18 неожиданностей при чтении исходного кода jQuery

Время на прочтение 4 мин
Количество просмотров 56K
Перевод статьи «18 Surprises From Reading jQuery's Source Code», David Aragon.

Я люблю jQuery, и хотя я считаю себя продвинутым JavaScript разработчиком, я никогда, до сих пор, не читал исходники jQuery с начала и до конца. Вот несколько вещей, которые я при этом узнал:
Читать дальше →
Всего голосов 113: ↑101 и ↓12 +89
Комментарии 37

Memory management в ядре Linux. Семинар в Яндексе

Время на прочтение 4 мин
Количество просмотров 65K
Привет! Меня зовут Роман Гущин. В Яндексе я занимаюсь ядром Linux. Некторое время назад я провел для системных администраторов семинар, посвященный общему описанию подсистемы управления памятью в Linux, а также некоторым проблемам, с которыми мы сталкивались, и методам их решения. Большая часть информации описывает «ванильное» ядро Linux (3.10), но некоторая часть специфична для ядра, использующегося в Яндексе. Вполне возможно, семинар окажется интересен не только системным администраторам, но и всем, кто хочет узнать, как в Linux устроена работа с памятью.



Основные темы, затронутые на семинаре:
  • Задачи и компоненты подсистемы управления памятью;
  • Аппаратные возможности платформы x86_64;
  • Как описывается в ядре физическая и виртуальная память;
  • API подсистемы управления памятью;
  • Высвобождение ранее занятой памяти;
  • Инструменты мониторинга;
  • Memory Cgroups;
  • Compaction — дефрагментация физической памяти.

Под катом вы найдете более подробный план доклада с раскрытием основных понятий и принципов.
Читать дальше →
Всего голосов 113: ↑107 и ↓6 +101
Комментарии 15

Хроники LinguaLeo: как мы сделали «Диалоги на английском» с Node.js и DynamoDB

Время на прочтение 5 мин
Количество просмотров 37K


Пользователи LinguaLeo начинают изучать английский язык в Джунглях — хранилище тысяч материалов разного уровня сложности, формата и тематик; шаг за шагом учатся слышать и понимать речь носителей языка и расширять словарный запас. Кому нужна грамматика — идут в Курсы. Словарный запас пополняется не только из Джунглей, при добавлении незнакомых слов в Личный словарь, но и с помощью подготовленных Наборов слов, доступных для индивидуального изучения. В разделе Общение можно вести Диалоги на английском, чтобы практиковать язык с другими пользователями LinguaLeo в режиме real-time, выбирая темы для общения. Общение только на английском!

Для создания Диалогов на английском мы использовали Node.js, DynamoDB (все на AWS). Сейчас поделимся нашим опытом.
Читать дальше →
Всего голосов 107: ↑96 и ↓11 +85
Комментарии 81

Как найти девушку за 250 микросекунд

Время на прочтение 4 мин
Количество просмотров 89K
В отличие от Европы и Америки в России к сайтам знакомств преобладает осторожное отношение. Однако, надежда нажать на волшебную кнопочку и найти себе любовь не гаснет в сердцах многих. И мы должны эту надежду оправдывать. Конечно, сразу найти идеально подходящую “половинку” мы не обещаем, но предложить десятки, сотни или в отдельных случаях тысячи вариантов, отвечающих именно вашим запросам, просто обязаны. Что и делаем, причем очень быстро.

Средний поиск по базе из 11 миллионов анкет, имеющих от 4 до 30 параметров каждая, занимает у нас в среднем 3.5 милисекунды. И при этом кроме поиска демон-серчер «Мамбы» выполняет следующие, в том числе не вполне традиционные задачи:
  • для каждой конкретной анкеты выдает ее место в поиске (каждый пользователь, заходя в свою анкету, видит сообщение «Вы находитесь на N месте в поиске»)
  • выдает конкретную анкету из списка по первичному ключу
  • производит непосредственный поиск анкеты по заданным параметрам

Несмотря на то, что наш поиск с самого начала разрабатывался собственными силами, время от времени возникали мысли использовать что-то уже известное, обкатанное и гарантированно эффективное. Ну, а если мы задумываемся о поиске, первым в голову приходит Sphinx.
Читать дальше →
Всего голосов 99: ↑82 и ↓17 +65
Комментарии 140

Как стать миллионером в AppStore или немного формул про продвижение и продажи. Часть 1

Время на прочтение 5 мин
Количество просмотров 105K

Схема успеха



Джон, мы потеряли два листа математических выкладок! Что делать?
Как обычно, Билл… напиши: «отсюда с очевидностью следует…»


image

Чтобы прочитать некраткую сопроводительную записку к схеме – добро пожаловать под кат.

Читать дальше →
Всего голосов 130: ↑119 и ↓11 +108
Комментарии 35

Bootstrap 2.0 – HTML+CSS+JS UI фреймворк

Время на прочтение 1 мин
Количество просмотров 60K

Вышла новая версия офигительного UI фреймворка от Twitter — Bootstrap 2.0 Для тех кто не в курсе что это, настоятельно рекомендую ознакомиться. Этот набор позволяет создавать отличные шаблоны сайтов за считанные часы (проверено на собственном опыте) на основе готовых элементов и экономить килотонны нервов на адаптации кода под разные браузеры.

Особенности Bootstrap:
  • Полный набор компонентов в виде стилей и анимаций поведения для элементов интерфейса
  • Поддержка возможностей HTML5, CSS3 (но при этом работает и в IE7!)
  • Поддержка идеологии 940-пиксельной сетки
  • Поддержка идеологии fluid-grid
  • Кросплатформенность — наборы стилей для десктопных и мобильных браузеров
  • Возможность кастомизации и добавления собственных стилей
  • Возможность добавлять jQuery плагины

Мастхэв для верстальщиков и проектировщиков интерфейсов!
Всего голосов 200: ↑186 и ↓14 +172
Комментарии 65

50 советов для разработки безупречного дизайна iOS приложения

Время на прочтение 12 мин
Количество просмотров 57K
Привожу перевод статьи Ника Карсона. В статье собраны вместе, как мне кажется, основные правила построения интерфейса для iOS приложений.

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

2. Ориентируйтесь на устройство при создании приложений: учтите не только размер экрана, но и где и когда устройство используется. Больше всего iPad используется для развлечений между 8-11 часами вечера, перед сном, тогда как iPhone — в очереди на автобус или в кофейне. Учтите различные сценарии использования при разработке приложений – включая и то, как далеко устройство расположено от лица пользователя.

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

4. Разработка программ для мобильных телефонов или планшетов значительно отличается от разработки веб-приложений и даже приложений для стандартного рабочего стола, — каждый элемент занимает на экране определенное место, и это правило необходимо неукоснительно соблюдать. Рассматривайте это скорее как преимущество, чем ограничение: фиксированные шаблоны помогут лучше контролировать размер и расположение каждого элемента, видимого пользователю.

5. При адаптации приложения к экранам различных размеров, помните, что при значительном его изменении – например, от iPhone к iPad – способ использования устройства также изменится. Если размеры ограничены, используйте основные функции приложения, при их увеличении – можно включить любые дополнительные функции, которые не вошли в более сжатую версию, так как у вас появляется возможность обыграть дополнительное пространство.

За остальными 45-ю — добро пожаловать подкат.
Читать дальше →
Всего голосов 74: ↑62 и ↓12 +50
Комментарии 23

Изучение иностранных языков: живые учителя или интернет?

Время на прочтение 4 мин
Количество просмотров 74K


— Феденька, ты очень интеллигентный мальчик, ты мне очень нравишься, но Я БУДУ СТАВИТЬ ДВА В ГОДУ!!! — визжала моя школьная учительница по французскому и делала примерно такое лицо.

Моя школьная учительница по английскому языку делала другое лицо:
Читать дальше →
Всего голосов 282: ↑232 и ↓50 +182
Комментарии 366

Таир-3С + Конвертер К-1. Бесконечность Nikon

Время на прочтение 3 мин
Количество просмотров 18K
В этой статье пойдет речь скорее не об объективе Таир-3С, а о том как
переделать телеконвертер К-1, чтобы была бесконечность на системе Nikon.


Таир-3С, К-1 МС, КП-42\Н

Была у меня идея использовать советские объективы с резьбой М42 и телеконвертером К-1 МС с резьбовым соединением М42 на фотокамере Nikon в связке с переходником КП-42\Н.

Вопрос стоял так: Как переделать телеконвертер, чтобы была бесконечность?
Кому интересно как это можно сделать, добро пожаловать под кат
Всего голосов 79: ↑67 и ↓12 +55
Комментарии 61

Секреты JDK

Время на прочтение 4 мин
Количество просмотров 25K

Про Unsafe в Java не слышал только ленивый, однако это не единственный магический класс в Sun/Oracle JDK, стирающий границы Java платформы и открывающий тропинки, не нанесенные на карту публичного API. Я расскажу про некоторые из них, принесшие пользу в реальных проектах. Но помните: недокументированные возможности лишают ваше приложение переносимости на другие Java платформы и, кроме того, являются потенциальным источником нетривиальных ошибок. Я даже зря написал слово «приложение». Лучше сказать, что описанные ниже классы вовсе не годятся для приложений! Скорее, они представляют интерес лишь для системного ПО и для любознательных программистов, т.е. для вас :)
Читать дальше →
Всего голосов 129: ↑127 и ↓2 +125
Комментарии 30

Версионная миграция структуры БД: от теории к практике

Время на прочтение 3 мин
Количество просмотров 12K
В топике рассматривается еще одна простая система версионирования структуры БД, а также ИМХО, почему нам не подходят другие.
Читать дальше →
Всего голосов 31: ↑25 и ↓6 +19
Комментарии 68

Версионная миграция структуры базы данных: основные подходы

Время на прочтение 15 мин
Количество просмотров 134K
Проблемы контроля версий баз данных и миграций между версиями уже не раз поднимались как на Хабре (1, 2, 3 и др.), так и в Интернете (преимущественно, англоязычном).

В первом разделе этой статьи я рассматриваю основные проблемы, которые возникают в командах программистов при внесении любых изменений в структуру базы данных. Во втором разделе я попытался выделить основные общие подходы к тому, в каком виде изменения структуры базы данных можно хранить и поддерживать в процессе разработки.
Читать дальше →
Всего голосов 89: ↑87 и ↓2 +85
Комментарии 83

Что, если «Оскары» вручались бы сайтам?

Время на прочтение 10 мин
Количество просмотров 3K
Многие из нас пользуются глобальной сетью для покупки билетов или поиска информации о фильмах. Сайты, продавая билеты и развлекая посетителей, помогают сбору кассы и формированию общественного мнения. Тем не менее, разработчики сайтов не получают никакого признания. Не является ли это немного несправедливо в эпоху Интернета — не получать ни бита славы за онлайн-презентации фильмов?

image

Большинство современных киносайтов сделаны во Flash’е, даже если это совсем не оправдано. При создании сайтов часто не соблюдаются стандарты и требования по переходу со сплэш-страниц и доступу к контенту. Разработчики позволяют себе такую роскошь, как пренебрежение общими принципами и юзабилити-стандартами, поскольку основная задача — привлечь внимание к фильму и помочь его раскрутить. Предположим, однако, что эти разработчики получили своих «Оскаров», «Медведей» и «Пальмовые ветви». Не будет ли это мощным стимулом к созданию ярких и удобных сайтов?

Под катом долгая церемония вручения с большим количеством картинок.
Всего голосов 142: ↑110 и ↓32 +78
Комментарии 32

uTorrent на страже online просмотра

Время на прочтение 2 мин
Количество просмотров 94K


Порой есть необходимость узнать качество видеоматериала, еще до его скачивания(сэмплы есть не всегда, да и скриншот не дает реальной картины) или просто быстро начать просмотр серии сериала, фильма, которые вдруг захотелось посмотреть в данный момент. В любимом клиенте utorrent, функция stream добавленная в alpha версии работает отвратительно. Для TorrentStream необходимо устанавливать специальный софт и смотреть в браузере. А как быть тем, кто любит «маленький» utorrent, хочет начать смотреть видео уже в момент его скачивания, не хочет загружать ничего лишнего и сторонник просмотра в полноценном видеоплеере?
Выход есть...
Всего голосов 101: ↑95 и ↓6 +89
Комментарии 72

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность