• Комфортная работа с Android Studio
    0
    Еще две опции в Windows о которых не все знают «Enable write caching on the device»/«Turn off Windows write-cache buffer flushing on the device».
    Они должны влиять на производительность записи на диск, но на сколько сильно, я не проверял.
    Включать опции можно только если у ПК есть ИБП (батарея).
  • Intel Neural Compute Stick. Искусственный разум на флешке — 2
    0
    Вполне себе полезный «ускоритель» для IoT устройств. Практический пример — позволяет распознавать объекты в видео потоке в режиме реального времени на Raspberry Pi 3.
    Но я бы не стал его рассматривать как устройство для PC.
  • Как с треском провалить миграцию с Java на Kotlin в Android приложении
    –1
    И в чем же безопасность проявляется? Ну возьмем например класс Movie из второго рисунка. Чем тривиальный геттер безопаснее public final поля?
  • Как с треском провалить миграцию с Java на Kotlin в Android приложении
    0
    А мне вот интересно зачем тривиальные геттеры/сеттеры?
  • «Сделайте мне как у Apple». Худшие тренды Mobile World Congress 2018
    0
    Именно переходники возможно и бывают, но например в HTC U11 «переходник» имеет прошивку (телефон предложил обновить когда первый раз его подключил), так что в этом конкретном случае похоже это звуковая карта.
  • «Сделайте мне как у Apple». Худшие тренды Mobile World Congress 2018
    0
    Переходники такие есть — например AudioQuest DragonFly ;)
    Но если бы мне предложили перенести этот «переходник» внутрь телефона (например в мой текущий HTC U11), за счет утолщения на 0.5мм или уменьшения батареи на 10%, я бы согласился.
  • Тренажёр интуиции (ТИН-2)
    +1
    А вот интересно было бы увидеть глобальную статистику по большому количеству участников.
  • Telegram проводит еще один раунд ICO
    0
    Крылья, ноги мессенджеры, блокчейн-платформы. Просто удивительно как это находит поддержку у инвесторов, когда существуют проекты по запуску автомобилей в космос, разработке и улучшению энергосберегающих технологий и т.д. (почему эти проекты не проводят ICO отдельный вопрос).
  • Фотография еды на iPhone X
    0
    На фотографиях с солнцем оно «выгоревшее» — так как не хватает динамического диапазона. Это именно то, что мешает любоваться фотографиями и не позволит например распечатать фотографию на стену (если бы такая фотография вышла из фотоаппарата, то я бы сказал, что это брак).
    Так что все остается более менее как и было — фотки с телефон для социальных сетей, для чего-то большего нужен фотоаппарат.
  • Честное сравнение камеры телефона и зеркального фотоаппарата
    0
    Еще одно фото на Sony с параметрами f/16 1/20 iso10000:
    image
    Оригинал
  • Честное сравнение камеры телефона и зеркального фотоаппарата
    0
    Добавлю ка я пару своих фотографий сделанных только что дома на HTC U11 (одна из лучших камер 26.2mm эквивалент f/1.7) в режиме RAW и Sony a7II + FE 28f2 в режиме RAW:
    HTC:
    image
    image
    image
    Sony:
    image
    image
    image

    От комментариев воздержусь.
    Оригиналы: Sony, HTC
  • Распознавание жестов движений на Android используя Tensorflow
    0
    Такая уж модель. Зачем оно нужно в общем коротко освещено здесь
  • Держите мобильные телефоны подальше от тела, не кладите в карман и не спите вместе. Новые советы медиков-технофобов
    +1
    Потому что сила излучения зависит от квадрата расстояния.
  • Позвоночник гика, или Матрас, на котором мы спим, не менее важен, чем кресло, в котором мы работаем
    0
    Несколько лет спал на достаточно мягком безпружинном матрасе и такой-же подушке. На первый взгляд ощущения не плохие, но со временем усугубились проблемы шеи и поясницы.
    Теперь купил самый жесткий наматрасник из кокосовой койры и замечаю некоторые улучшения в пояснице. По ощущениям тоже очень не плохо.
    Так-что иногда полезнее просто твердое покрытие без всяких эффектов памяти и остального «маркетинга».
    На очереди замена подушки.
  • AGM X2: самый навороченный защищенный смартфон на рынке
    0
    — Everybody needs guns to protect themselves
    — Protection from what? Ze Germans?
  • Где в России майнить хорошо: результаты одного исследования
    +1
    Так-же заметил эту фразу.
    Бенефициары в данном случае те, кто успел купить монеты раньше и дешевле.
  • На что способна камера Motion Eye в смартфоне Sony Xperia XZ1
    0
    Ничего не имею против хороших камер в смартфонах, но как может широкоугольная камера позиционироваться и рекламироваться как камера для портретов/сэлфи? Это риторический вопрос.
  • Dagger 2. Subcomponents. Best practice
    0
    В реальной жизни нету понятия синглтон — у каждой вещи (объекта) должен быть владелец. И в разработке будет намного лучше если выбросить этот антипаттерн из головы.
    Я понимаю если целью использования Dagger является облегчение тестирование, но не уловил сути использования его в статье.
  • Я являюсь причиной появления венгерской нотации в Android
    0
    Все эти lpsz рождались когда не было никакой подсветки синтаксиса и такая нотация была вполне оправдана. Позже контекстная подсветка появилась в Visual Assist для Visual Studio. Позже был Resharper с опцией «highlight usage». А еще позже появился Android. Насколько помню даже тогда Eclipse имел подсветку синтаксиса и наверняка умел отличить локальную переменную от поля класса. Ну если не имел, то NetBeans и Intellij Idea уж точно имели, так что не было никакой необходимости тащить этот костыть в Android.
  • Kotlin для Android: упрощаем работу со слабыми ссылками в асинхронных вызовах
    0
    Интересные примеры работы со слабыми ссылками, но нужно отметить принципиально неправильный подход в реализации и использовании API. Activity должна отменять любые (сетевые) операции после своего завершения. Если следовать этому правилу, то не будет необходимости в использовании слабых ссылок.
    Правда при таком подходе будут отменятся также операции при изменении конфигурации, но это уже другая тема.
  • Полный кадр 35мм. Мини-обзор камеры со сменной оптикой Sony a7II
    0
    Обладаю такой камерой. Для путешествий использую вместе с объективом SONY SEL28F20 Выходит очень легкая и компактная система.
    Также эта тушка очень интересна наличием неплохих систем подсказок для ручной фокусировки и возможностью нацепить через переходник практически любой старый мануальный объектив. Например такой:
  • Clean Recycler Adapter. Часть 1
    0
    О — даже один минус есть. Т.е. кто-то предпочел-бы чтоб этого комментария здесь не было.
    Хорошо если этот кто-то хоть что-то сделал для развития общества.
  • Clean Recycler Adapter. Часть 1
    0
    Там есть некоторые ошибки, но я думаю не составит труда их исправить тому кто надумает использовать :)
  • Clean Recycler Adapter. Часть 1
    0
    Я попробовал развить идею и вот что вышло:
    Класс CleanAdapter
    public class CleanAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    	private final AdapterTypesMap typesMap = new AdapterTypesMap();
    
    	private List itemList; // TODO
    
    	public CleanAdapter() {
    		// Здесь компилятор следит чтоб ViewHolder соответствовал классу данных. Т.е. передача AdVo.class, ProgressViewHolder.class вызовет ошибку компиляции
    		typesMap.putItem(R.layout.cell_progress, R.layout.cell_progress, ProgressVo.class, ProgressViewHolder.class);
    		typesMap.putItem(R.layout.cell_ad, R.layout.cell_ad, AdVo.class, AdViewHolder.class);
    		typesMap.putItem(R.layout.cell_user, R.layout.cell_user, UserVo.class, UserViewHolder.class);
    	}
    
    	@Override
    	public int getItemCount() {
    		return itemList.size();
    	}
    
    	@Override
    	public int getItemViewType(int position) {
    		return typesMap.getItemViewType(itemList.get(position));
    	}
    
    	@Override
    	public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    		return typesMap.createViewHolder(parent, viewType);
    	}
    
    	@Override
    	public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    		typesMap.bindViewHolder(holder, itemList.get(position));
    	}
    }
    



    Класс AdapterTypesMap
    public class AdapterTypesMap {
    	private final Map<Integer /* view type */, AdapterItemType> viewTypesMap = new HashMap<>();
    	private final Map<Class /* adapter list item class */, AdapterItemType> listItemTypesMap = new HashMap<>();
    
    	public <T, V extends ViewHolderBase<T>> void putItem(int viewType, int resourceId, Class<T> dataItemClass, Class<V> viewHolderClass) {
    		AdapterItemType adapterItemType = new AdapterItemType(viewType, resourceId, viewHolderClass);
    		listItemTypesMap.put(dataItemClass, adapterItemType);
    		viewTypesMap.put(viewType, adapterItemType);
    	}
    
    	public int getItemViewType(Object obj) {
    		return listItemTypesMap.get(obj).getViewType();
    	}
    
    	public RecyclerView.ViewHolder createViewHolder(ViewGroup parent, int viewType) {
    		return viewTypesMap.get(viewType).createViewHolder(parent);
    	}
    
    	public void bindViewHolder(RecyclerView.ViewHolder holder, Object obj) {
    		listItemTypesMap.get(obj).bind(holder, obj);
    	}
    }
    



    Интерфейс IAdapterItemType
    public interface IAdapterItemType {
    	int getViewType();
    	RecyclerView.ViewHolder createViewHolder(ViewGroup parent);
    	void bind(RecyclerView.ViewHolder holder, Object item);
    }
    



    Реализация AdapterItemType
    public class AdapterItemType<T extends ViewHolderBase> implements IAdapterItemType {
    	private final Class<T> viewHolderClass;
    	private final int viewType;
    	private final int resourceId;
    
    	public AdapterItemType(int viewType, int resourceId, Class<T> viewHolderClass) {
    		this.viewHolderClass = viewHolderClass;
    		this.viewType = viewType;
    		this.resourceId = resourceId;
    	}
    
    	@Override
    	public int getViewType() {
    		return viewType;
    	}
    
    	@Override
    	public ViewHolderBase createViewHolder(ViewGroup parent) {
    		try {
    			View view = LayoutInflater.from(parent.getContext()).inflate(resourceId, parent, false);
    			// здесь не обойтись без рефлексии
    			return viewHolderClass.getConstructor(View.class).newInstance(view);
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
    
    	@Override
    	public void bind(RecyclerView.ViewHolder holder, Object item) {
    		ViewHolderBase holder2 = (ViewHolderBase) holder;
    		holder2.bind(item);
    	}
    }
    



    Базовый клас ViewHolderBase
    public abstract class ViewHolderBase<T> extends RecyclerView.ViewHolder {
    	public ViewHolderBase(View itemView) {
    		super(itemView);
    	}
    
    	public abstract void bind(T item);
    }
    



    И по одному наследнику классу ViewHolderBase для соответствующих классов данных. Типа такого:
    public class UserViewHolder extends ViewHolderBase<UserVo> {
    	public UserViewHolder(View itemView) {
    		super(itemView);
    	}
    
    	@Override
    	public void bind(UserVo item) {
    		// TODO
    	}
    }
    


  • Clean Recycler Adapter. Часть 1
    0
    Еще один очевидный метод (и правильный с точки зрения ООП) это дать возможность элементу «обработать» себя самому.
    Но это потребует расширения всех классов данных определенным интерфейсом, что может быть не очень удобным.
    Рассмотренный метод мне нравится больше.
  • 10 лучших подарков для поклонника Sony
    0
    Я бы еще вспомнил наушники Sony h.ear on MDR-100AAP
  • Leaf Browser Alpha — браузер с древовидными вкладками
    +2
    Хорошая новость. Использую закладки сбоку еще со времен Оперы и не понимаю как может быть по другому особенно на широкоформатных мониторах.
    Важно понять что это «правильная» фича так же как например то что темные темы для приложений лучше светлых (они выглядят лучше и что более важно меньше влияют на зрение) и признать что прежний подход был ошибочным.
    Кто-то понимает это быстрее, кто-то медленее, но это нормально.
  • Стабилизация экрана в Android
    0
    Вы правы в том, что изображение все таки не стоит на месте. В этом плане алгоритм требует доработки.
    Здесь требуется разработка очень точной инерциальной системы позиционирования.
    Вот здесь например обсуждение: http://stackoverflow.com/questions/7829097/android-accelerometer-accuracy-inertial-navigation

    Насчет скорости реакции — она зависит от частоты опроса датчика, задержки между-процессного взаимодействия и задержки обновления UI. Основной параметр все таки частота опроса датчика — и она задана как SENSOR_DELAY_FASTEST, что должно давать 100 Гц.
    Здесь также есть возможности для улучшений путем переноса реализации алгоритма из отдельного приложения в драйвер датчика.

    Какая реальная задержка — нужно еще подумать как это можно измерить.
  • Стабилизация экрана в Android
    +1
    Ощутимой разницы я не заметил.
  • Графический интерфейс пользователя как отражение реального мира: тени и подъем элементов
    +1
    Интерфейс был бы намного более отзывчивый если б Андроид поддерживал hover жесты. Тогда понять нажимается ли элемент можно было бы просто приблизив палец.
    А ведь Sony давно реализовала такой тач скрин (технология Floating Touch).
  • Еще возитесь с отладкой?
    +3
    "Любая проблема проектирования может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев" в действии.
  • Удаление Facebook может увеличить срок работы смартфона на 20%
    0
    Нету ничего удивительного в том, что Facebook ест много ресурсов. Посмотрите сколько там сервисов:
    image
    Хотя для полноты картины смотреть нужно также на сервисы Google:
  • Синхронизация в Android приложениях. Часть первая
    0
    Избежать ошибки «Activity to be started with KEY_INTENT must share Authenticator's signatures» можно если в манифесте аутентикактора в XML указать android:customTokens=«true». Интересен другой вопрос — как работать с AccountManager из бекграунд-сервиса (в частности как вызвать метод getAuthTokenByFeatures так чтоб он показал логин активити при необходимости)? Похоже без хаков с dummy активини не вийдет.
    (наверное ответ достоин награды Necromancer :D )
  • Расширение возможностей штатной аудиосистемы автомобиля на примере Mercedes W203
    0
    Я перепробовал несколько блутуз модулей из алиекспресс для автомобиля и остановился на этом store3.sure-electronics.com/aa-ab41136-1681
    Он выдает наилучшее качество. Наихудшее качество, которое невозможно слушать, и не понимаю как это можно продавать, выдает Belkin CarAudio Connect AUX with Bluetooth.
    Остальные DIY модули заметно шумят.
  • Что меня раздражает в MacBook
    0
    Все правильно автор написал — он сравнил функционал Mac OS с другими системами и указал на вещи, которые в Mac OS реализованы хуже. То, что они там такие изначально ничего не значит в контексте сравнения.
    Среди Windows/MacOS/Linux MacOS для меня стоит на последнем месте так как пользоваться «их» клавиатурой невозможно после стандартной клавиатуры. Хотите поиграть в закрытый клуб — получите (пишу из-под Ubuntu, MacMini валяется сбоку выключенным).
  • Основные законы создания команд разработчиков
    +4
    На картинке неплохая команда. Но что насчет этой команды?
    image
  • 14 возможностей ReSharper по навигации и редактированию
    0
    Подозреваю на момент публикации комментария не все в порядке было с хабракатом.
    Сейчас комментарий понятно больше не актуальный.
  • Модифицируем плеер Vanilla Music под Android
    +1
    Я так понимаю задача MyTask — отложенное выполнение кода (изменение громкости). Если так, то это ужасное решение и антипаттерн.
    Один из вариантов правильного решения — использовать Handler.
    Почему так — ну тут лучше самому почитать больше о многопоточности.
  • Адаптации сложных приложений под Material Design: подход от Aviary
    +3
    Отличный пример того как можно испоганить иконку. Теперь она не передает оригинальной идеи так как объектив теперь не узнается. К тому же тень меняет Z порядок.
    Все остальное нравится. Разве что сделал бы приложение более полноэкранным (заезжающим под статус бар и под навигейшн бар).
  • Наша Service и опасна и трудна или некоторые аспекты выживания служб в Android
    0
    Так это делается проще — нужно просто закрыть приложение кнопкой Back.