arm1.ru

Шпаргалка по хакинтошу

event Sep 30, 2013 at 16:00

Буду записывать сюда пометки что делать с разнымми проблемами с хакинтошем. Пока что это касается 10.8.5

kernel extensions in backtrace org.apple.driver.applertc(1.5)
установить из Multibeast "AppleACPIPlatform rollback"

Если при загрузке системы не работают USB-мышка и USB-клавиатура - то, как ни странно, это связано со звуком. В /System/Library/Extentions удалить HDAEnabler1.kext и через Multibeast поставить дрова на звук (в моём случае ALC887 с DSTD, current).

Удалить файл можно или в single mode (загрузка с ключом -s) или подключившись через удалённый рабочий стол.

При обновлении до Mavericks в Multibeast 6-й версии по-умолчанию GraphicsEnabler=No, поэтому чёрный экран после загрузки. Нужно ставить на Yes.

Один вечер с сотовой связью от Ростелеком

event Aug 6, 2013 at 00:06

Ростелеком SIM-карта

1 августа Ростелеком запустили сотовую связь в Питере. Сегодня купил симку поиграться.

Плитка сайта на стартовом экране Windows 8

event Jul 29, 2013 at 22:27

Windows 8 Pinned Site

В Windows 8 в плиточном интерфейсе есть возможность закрепить ярлык на стартовый экран в виде плитки.

Определение ориентации фото на PHP через EXIF

event Jul 26, 2013 at 17:21

Шпаргалка.

Вертикальные фотографии, снятые в портретном режиме на Android и iPhone сохраняются как горизонтальные, но в EXIF пишется ориентация фото.

Если вывести значение команды:

$exif = exif_read_data( $existingFilePath, 0, true);

То увидим среди значений массива:

array
(
...
    [IFD0] => Array
    (
        [Make] => Sony
        [Model] => LT25i
        [Orientation] => 6
        [XResolution] => 72/1
        [YResolution] => 72/1
        [ResolutionUnit] => 2
        [Software] => 9.1.A.1.145_58_f100
        [DateTime] => 2013:07:26 17:00:01
        [YCbCrPositioning] => 1
        [Exif_IFD_Pointer] => 214
        [GPS_IFD_Pointer] => 626
    )
...
)

В данном случае это значит, что при показе этой фотографии - отображающее его приложение должно повернуть на 90 градусов фото, т.к. фото в портретной ориентации.

Чтобы при заливке картинок на сервер и изменении их (создание уменьшенной копии, создание превьюшки) не было косяков, можно определять такие фотки кодом:

<?php
imagecopyresampled( $resultImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

$exif = exif_read_data( $existingFilePath, 0, true);
if( false === empty( $exif['IFD0']['Orientation'] ) ) {
    switch( $exif['IFD0']['Orientation'] ) {
        case 8:
            $resultImage = imagerotate( $resultImage, 90, 0 );
            break;
        case 3:
            $resultImage = imagerotate( $resultImage,180,0);
            break;
        case 6:
            $resultImage = imagerotate( $resultImage,-90,0);
            break;
    }
}

Что интересно - Windows Phone сохраняет фотографию в портретной ориентации как вертикальное изображение.

Создание ssh-алиасов для терминала в Mac OS X

event Jul 24, 2013 at 01:54

Шпаргалка.

Всё то же самое, что и в Linux, только в макоси нет команды ssh-copy-id. Чтобы она появилась:

brew install ssh-copy-id

Дальше всё как в Linux'е:

Чтобы коннектиться к хосту 192.168.1.2 не через ssh root@192.168.1.2, а ssh myhost делаем следующее:

Создаем файл ~/.ssh/config, а в нем пишем:

Host myhost
HostName 192.168.1.2
User root
Port 22

Далее, чтобы не вводить каждый раз заново пароль, генерируем наши ключи

ssh-keygen -t rsa 

И копируем публичный ключ на сервер

ssh-copy-id myhost

Обновление ключей:

ssh-add ~/.ssh/id_rsa

Samui in 4 minutes

event Jul 23, 2013 at 01:26

Когда был на Самуи снял видео - полный круг по острову. Около 50 км. Ускорил до 4 минут. Вот такое вот получилось :)

Отлавливание остановки карты в Google Maps SDK для iOS

event Jul 9, 2013 at 02:36

Дополнение вот к этому посту. Там я указал в проблемах, что в гуглокартах реализовано только событие mapView: didChangeCameraPosition:, которое срабатывает на каждый чих карты, даже если палец ещё не оторван от экрана. Если вести медленно пальцем по карте, а на карте должны появляться какие-то метки, которые получаются извне http-запросами, то оно умудряется отправлять по 10-15 запросов в секунду. Это, конечно же, неприемлимо, особенно в условиях мобильного интернета.

Но с этим можно справиться своими средствами, а точнее с помощью UIPanGestureRecognizer.

Код-шпаргалка:

// где-то в коде проекта
panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(mapDidChange:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];

// GoogleMapsView это гуглокарта, класс GMSMapView
GoogleMapsView.gestureRecognizers = @[panRecognizer];

//.. метод, реагирующий на отпускание касания
-(void)mapDidChange:(UIPanGestureRecognizer *)pan {
    if ( panRecognizer.state == UIGestureRecognizerStateBegan ) {
        // ничего не делать, но можно и что-нибудь делать
    }
    if ( panRecognizer.state == UIGestureRecognizerStateEnded ) {
        // палец отпущен, можно делать то, что нужно, например:
        [self sendMapRequest];
    }
}

Всё, навешивается тач на гуглокарту. Когда палец отпущен - делаем действия. Теоретически этим можно даже заменить метод mapView: didChangeCameraPosition: если нужно.