Показываем индикатор загрузки файла в Finder

Ты наверное замечал, что при загрузке файлов, например в Chrome, в Finder рядом с файлом показывается некий круговой индикатор загрузки.

Отображение индикактора загрузки файла в Finder

Для этого используется специальный атрибут файла com.apple.progress.fractionCompleted, а также есть небольшая (но неочевидная) хитрость: нужно выставить дату создания файла равной 1984-01-24 08:00:00 +0000 а соотвественно, чтобы скрыть индикатор вернуть файлу актуальную дату и убрать атрибут.

Читать далее →

Программное добавление папки в «Избранное» в Finder

Возникла специфическая задача: добавить программно папку в раздел «Избранное» на боковой панели Finder в macOS. Эта и другая подобная информация хранится в *.sfl файлах, в ~/Library/Application Support/com.apple.sharedfilelist/. Работать с ними напрямую не получится, для этого существует системная утилита sfltool.

Читать далее →

Установка и использование языка Swift на Ubuntu 16.04

Некоторое время язык Swift был доступен только для операционной системы OS X, в составе среды разработки Xcode, но недавно на официальном сайте стали доступны сборки и для последних версий Ubuntu. Практической пользы от такого шага не очень много: большинство библиотек так и не были портированы, и разрабатывать для iOS на альтернативных платформах всё еще невозможно. Хотя существует призрачная возможность писать серверный код на том же языке, что и код приложения, но пока инструментарий развит слабо, использование языка от Apple на Ubuntu будет представлять скорее академический интерес. С другой стороны, доступного функционала хватит, чтобы изучить основы языка и писать несложные консольные утилиты, не приобретая дорогостоящие устройства, что может оказаться для многих плюсом.

Читать далее →

Принудительное обновление provisioning profile в Xcode 8.3

После обновления в Xсode 8.3 исчезло окно управления provisioning profile проекта. Им было удобно пользоваться для принудительного удаления и скачивания профайлов. Например, когда добавляешь на Developer Portal новые устройства для ad-hoc установки, профайл в Xcode обновляется далеко не сразу и не всегда. Чтобы решить эту проблему, можно было зайти в настройки аккаунта, открыть окно управления профайлами и сертификатами, нажать правой кнопкой мыши на профайле, выбрать «Move to trash», после чего заново скачивался новый.

Читать далее →

Статический анализ кода при помощи SwiftLint

SwiftLint — это статический анализатор Swift-кода, разработанный компанией Realm, который проверяет его на соответствие стилю и соглашениям принятым в сообществе разработчиков. Главным образом он базируется на Swift style guide от Github. Почему это важно? Наличие соглашений и стандартов всегда лучше их отсутствия: код написанный в едином стиле, проще читать при командной разработке, а также косвенно анализаторы кода способны улучшить и стабильность приложения, так как распознают заведомо плохие практики. Начинающим изучать Swift разбор ошибок и предупреждений анализатора поможет разобраться в особенностях языка, а также избежать использования устаревших конструкций, которые могли быть скопированы с сайтов вроде Stack Overflow.

Читать далее →

Управляем сторонними библиотеками с CocoaPods

CocoaPods — менеджер пакетов, сделанный по образу и подобию RubyGems, позволяющий легко скачивать и подключать сторонние библиотеки к Swift и Objective-C проектам.

Читать далее →

Исправляем неработающий под Linux тачпад на Asus X550LN

Уже почти год моим основным компьютером является ноутбук Asus X550LN. За это время я неоднократно менял на нем операционные системы, даже пытался жить на Windows, но все время возвращался к излюбленным мной Debian-based дистрибутивам Linux. К сожалению, в 2015 году проблемы с поддержкой аппаратного обеспечения под альтернативными ОС никак не заканчиваются. Так, практически на всех испробованных мной дистрибутивах, не работает тачпад. Проблема проявляется следующим образом: при касании тачпада, в зависимости от дистрибутива, либо не происходит ничего, либо курсор двигается, но невозможно совершить клик, либо же система намертво зависает.

Читать далее →

Восстанавливаем файлы, удаленные в прошлых коммитах в Git

Сегодня передо мной встала довольно простая, но интересная задача: восстановить несколько файлов в репозитории Git, которые были удалены некоторое время назад в разных коммитах. Задача простая, потому что решение легко найти в соотвествующих ответах на Stack Overflow. Мне лишь осталось слегка адаптировать приведенные примеры команд для своих нужд.

Читать далее →

Модули Metasploit

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

Читать далее →

Музей Эрарта, 2014 год

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

Арт-объект Придавленный

Жизнь действительно во многом похожа на тетрис. Каждый день в нас летят десятки обстоятельств и сотни событий, которые непременно должны быть состыкованы и скомпенсированы. Стоит на секунду замешкаться, как тут же оказываешься один на один с огромной блестящей буквой L, которая, нарушая привычный уклад, сменяет спокойную размеренность будней огромным нагромождением плохо состыкованных фигур. Какое-то время ты ещё пытаешься судорожно раскидывать фигуры по игровому полю. Иногда это даже получается, но чаще просто видишь, как тебя заваливает, и расписавшись в собственном бессилии, начинаешь новую партию. Этот придавленный манекен чётко фиксирует душевное состояние между падением последней фигуры с непременным «game over» и следующей игрой. Мастерство игрока определяется тем, сколько раз он смог начать заново, но всех ждёт один конец.

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

Читать далее →