Изображение из пакета приложения в WebView, React Native, Android

Если вам потребуется отобразить статичный контент в WebView в Android приложении, сделанном на React Native, и при этом использовать в HTML контенте изображения, хранящиеся локально в пакете приложения, то вы можете настроить WebView так, чтобы его source содержал в baseUrl указание на file:///android_asset/тогда в итоге вы сможете отобразить тег img со значением src="./image.png", где image.png – это имя файла изображения, изображение при этом необходимо поместить в папке android/app/src/main/assets. Конечно, вы можете использовать более глубокие пути до папок и файлов и более сложную иерархию каталогов.

iPhone X

Я один обратил внимание на странное устройство экрана в новом iPhone X? Что за второй слой матрицы дисплея, обращенный внутрь?

Источник

Если судить по снимкам iFixit, то так и есть — матрица загнута в нижней части, только не столь красочно, как в ролике это выглядит: 1, 2

JavaScript

Немножко юмора
const a = 0
const b = undefined
const c = 1 / 'a'
console.log(isNaN(a), a, typeof a)
console.log(isNaN(b), b, typeof b)
console.log(isNaN(c), c, typeof c)

Консоль:
false 0 "number"
true undefined "undefined"
true NaN "number"

То есть Not a Number имеет тип number! 🙈

И бонусом весёлое видео:

P.S. Не стоит воспринимать эту запись слишком серьёзно.

Хакинтош за 50 тысяч рублей

С недавних пор я работаю за новым MacBook Pro 15″ c процессором Core i7 на 8 потоков – этому я несказанно рад. Но вот чему не рад – это моему домашнему Mac mini 11 года выпуска, в котором стоит старенький Core i5 c 4 потоками. Хоть я и сделал в минике Fusion Drive, добавив SSD на 120 гигабайт, а так же впихнув в него максимум оперативной памяти, доведя её объем до сопоставимых с новым ноутбуком 16 гигабайт, всё равно по главному качеству – производительности – домашний компьютер теперь отстает от рабочего в 3 раза! Этот контраст несколько печалит, так как такое разительное отличие в работе крайне заметно. Миник на фоне ноутбука стал казаться «тормозом», хотя раньше меня он более-менее устраивал.
В связи с этим решил посмотреть, что можно предпринять, чтобы изменить такое положение вещей, так как брать ноутбук с работы не вариант и домашний компьютер надо обновлять. В конце концов ему уже 6 лет!

Читать далее Хакинтош за 50 тысяч рублей

Быстрая отправка сообщений в мессенджеры

Бывает, надо сделать кнопку «Поделиться» для определенного мессенджера. Самый быстрый способ — это url-схемы. Можно просто вызвать [[UIApplication sharedApplication] openURL:url];  для правильно сконфигурированной ссылки и установленный на телефоне мессенджер примет переданный текст для дальнейшей обработки.

Сейчас покажу, как это сделать для WhatsApp, Viber и Telegram. Читать далее Быстрая отправка сообщений в мессенджеры

Live Rendering и локализация

Есть в Xcode отличная возможность сразу в интерфейсе Interface Builder видеть итоговый результат отрисовки отличных от стандартных компонентов. Например, вы можете сделать свою кнопку с обводкой, добавив три свойства:

Значения этим свойствам можно буден назначить в панели инспектора при редактировании xib или storyboard, а при правильной реализации класса эти изменения тут же отобразятся на вашей кнопке. Подробнее прочитать можно тут, тут и в официальной документации.

Я же хочу поделиться результатом компиляции нескольких идей относительно локализации объектов, находящихся в xib или storyboard.

Читать далее Live Rendering и локализация

Ускоряем Xcode с помощью RAM disk

В операционной системе macOS есть возможность создать виртуальный диск, логический раздел, который будет находиться целиком в оперативной памяти. Иногда его удобно использовать, если вам требуется временное высокоскоростное хранилище для ваших файлов, с которыми вы работаете в данный момент. Например, в случае с Xcode это может быть место, где должны находиться файлы Derived Data.

Для начала запустите Терминал и из под sudo выполните команду:

Она создаст в оперативной памяти диск HFS+ размером в один гигабайт и примонтирует его. Теперь его можно указать как ‘/Volumes/ramdisk’ в настройках Xcode ➝ Preferences ➝ Locations ➝ Derived Data ➝ выбрать ‘Custom’ ➝ вписать ‘/Volumes/ramdisk’. Всё! Для большей уверенности можете переоткрыть проект или рабочее пространство вашего приложения. Вы заметите заметное ускорение работы с проектом, особенно при сборке и компиляции.

ВНИМАНИЕ: все данные будут удалены после размонтирования виртуального диска!!! Недопустимо хранить на нём важные данные и файлы!

Лично у меня при сборке проекта с обычными настройками (Fusion Drive 120GB SSD + 500GB HDD) на всё уходит 165 секунд, а при использовании RAM disk всего 72 секунды. Прирост скорости в 2,3 раза.

Изменение визуальных свойств существующих объектов через протокол UIAppearance

Уже довольно давно, начиная с iOS 5, у программистов появился удобный механизм стилизации внешнего вида компонентов интерфейсов – UIAppearance.

Например, вот так легко установить белый цвет для кнопок и заголовка на всех UINavigationBar и наследниках:

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

который применит указанные параметры только к тем элементам, что вложены в объекты соответствующих классов.
Пример из документации:

И всё работает замечательно, до того момента, когда в дело вступает один нюанс, описанный в документации:

NOTE
iOS applies appearance changes when a view enters a window, it doesn’t change the appearance of a view that’s already in a window. To change the appearance of a view that’s currently in a window, remove the view from the view hierarchy and then put it back.

Как это свойство влияет на подход к использованию данных методов?

Читать далее Изменение визуальных свойств существующих объектов через протокол UIAppearance