28 заметок с тегом

macos

Позднее Ctrl + ↑

Переподсоединялка вайфая

Переподсоединение (25.92КиБ)

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

В общем, сделал себе на «Баше» утилиту переподключающую вайфай при пропадании пингов до 8.8.8.8 (это ДНС «Гугла»). Сегодня уже целый день её использую, так гораздо комфортнее.

Блокировка экрана на «Маке» из Си

Как-то я программировал на Си под «Мак» блокировку жестом перед датчиком освещения. Сегодня показывал его коллегам, оказалось ничего не работает — метод, который я использовал для вызова экрана блокировки перестал принимать на вход NULL. Тогда как в интернетах только этот способ везде и упоминается:

CGSCreateLoginSession(NULL);
// теперь выдаёт
// Assertion failed: (sid != NULL), function CGSCreateLoginSession, file Services/Connection/CGSSession.c, line 418.

Возможно в «Эль-Капитане» (последней версии «МакОСи») что-то поменялось — функция CGSCreateLoginSession считается недокументированной, никакой информации о ней мне найти не удалось.

В общем, покапался я в заголовочных файлах, подбором и интуицией родил код, который блокирует экран и под «Эль-Капитаном», заодно и утилиту свою поправил:

// получаем словарик с атрибутами текущей сессии
CFDictionaryRef dict = CGSCopyCurrentSessionDictionary();
// выбираем из него идентификатор текущей сессии, получаем его в виде int
CFNumberRef number = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("kCGSSessionIDKey"));
CGSSessionID currentSession;
CFNumberGetValue(number, kCFNumberIntType, &currentSession);
// блокируем текущую сессию
CGSCreateLoginSession(&currentSession);

Обновлённая версия лежит там же — на «Гитхабе».

«Эль-Капитан»

Никогда в жизни не ставил бета-версию «МакОСи», но пришлось. Я уже писал в твитере, что «Йосемити», текущая версия — худшее, что случалось с «Маками». Тормоза и глюки — это я понимаю, но пять минорных версий подряд не мочь исправить проблему с вай-фаем — это неимоверные перебор. Последнее обновление только ухудшило ситуацию — домашняя сеть 5 ГГц отваливается минут через 10, приходится переключаться на 2,4.

В общем, поставил себе третью бету «Эль-Капитана», пока полёт нормальный. Тормоза ушли, глюков не видно, с вай-фаем если всё и не идеально, то уж точно стало гораздо лучше. Если у кого-то схожие проблемы, крайне рекомендую перейти на бету.

 13 комментариев    17   2015   mac   macos

Tcl/tk и Retina

О, оказывается, можно «ретинизировать» интерпретатор Тикля — сделать так, чтобы программы на этом языке хорошо смотрелись на маковской ретине (см. скриншот).

Ретинизированный Тикль (24.29КиБ)

Для этого нужно скачать программу Retinizer и бросить в неё Wish.app, который находится в /System/Library/Frameworks/Tk.framework/Versions/Current/Resources/

Говорящие часы

Часы (53.96КиБ)

Вот очень правильная настройка есть в «Маке» (немногие её включают, а зря!) — компьютер может произносить текущее время каждый час, полчаса или четверть часа. Пользуюсь ей давно, помогает быть продуктивнее в работе.

Во-первых, помогает ориентироваться в собственной скорости (уже 11 часов, а я так мало сделал!), во-вторых, позволяет выйти из состояния «залипания» — когда мысли распозлись, взгляд расфокусировался.

По кнопке «Настроить голос…» открывается меню, в котором можно выбрать русский голос, если это требуется.

Если у вас «Мак», рекомендую включить эту настройку!

 8 комментариев    44   2015   macos

Русские имена на «Маке» после разархивации ZIP

Я вчера скачал несколько десятков зип-архивов, внутри которых тысячи файлов с русскими именами. Скачивал через браузер «Сафари» и этот поганец, как у него водится, услужливо мне их распаковал после скачивания. У меня время от времени вылетает из головы эта особенность, в общем, я получил кучу папок и файлов, которые выглядят вот так:

Кракозябры (17.71КиБ)

Эта давнишняя проблема «Мака», проистекающая из родовой травмы зип-архивов — этот архиватор родился ещё во времена ДОСа и для совместимости сохраняет русские имена ещё в той, ДОСовской кодировке. Правда, лет 15 назад я ковырял формат и увидел, что в каких-то метаданных лежит оригинальное имя, но должно быть «Мак» про это поле ничего не знает.

Как бы там ни было, в конце индикатора прогресса я увидел кучу файлов с нечитаемыми именами. Ничего готового я быстро не нашёл, поэтому сварганил небольшой скрипт на «баше», который восстанавливает русские имена разархивированного зип-архива.

Способ употребления такой: складываете всё испорченное в какую-либо папку и запускаете внутри fixzip. В процессе «ремонта» он будет показывать на экране восстановленные имена. Два раза запускать нельзя — имена снова будут испорчены.

Как ускорить Yosemite

«Йосе́мити» — худшая по стабильности операционка Эпл из всех, которые я когда-либо видел, в ней столько всего сломано, что я начинаю думать, что службу контроля качества Эпл должны уволить в полном составе. Она же, возможно, худшая по скорости. Даже на моей свежайшей «прошке», купленной взамен прошлой, умершей от чая, она тормозит.

Я почитал в сети советы бывалых по ускорению её работы, кое-что применил сам, делюсь.

Во-первых, надо отключить полупрозрачность. Это даёт существенный прирост к отзывчивости системы, особенно при работе с двумя мониторами. Отключается она в системных настройках → «Универсальный доступ» → «Уменьшить прозрачность».

Уменьшить прозрачность (62.29КиБ)

Во-вторых, рекомендуют отключить экран виджетов. Говорят, на него тратится порядочно ресурсов системы. Опять «Системные настройки» → «Mission Control» → в списке «Dashboard» надо выбрать «Выкл.».

Dashboard (92.69КиБ)

В-третьих, и это частый совет в таких ситуациях, нужно сбросить данные System Management Controller (SMC). Для этого нужно выключить ноутбук, зажать на десять секунд клавиши левого «шифта», «альт», «контрол» и кнопку питания, после чего включить ноут обратно.

В-четвертых, так же нужно сбросить PRAM. Для этого, опять же, нужно выключить ноутбук, включить его и зажать «комманд», «альт» и клавиши «P» и «R» до тех пор, пока не загрузится операционная система.

 29 комментариев    44   2014   macos

Удаляем раскладку «США» («U.S. English») из Mac OS X 10.9 («Maverick»)

Как стало известно ещё на этапе появления ранних сборок «Маверика», раскладка «США» не удаляется из неё способом, который описал Артём Поликарпов (а я написал скрипт, автоматизирующий этот процесс).

Зато читатели в комментариях к скрипту указали на другой, очень несложный способ сделать то же.

Напомню в чём проблема. Лично я использую для работе на «Маке» раскладку Бирмана. Во-первых, с ней гораздо удобнее вводить типографику, во-вторых, это виндовая раскладка, поэтому, если приходится пересаживаться за компьютер с Виндой, у меня не возникает дискомфорта. Я считаю это важно.

После установки раскладки Бирмана, раскладок становится три: русская Бирмана, английская Бирмана и системная — «США». Последняя явно лишняя, но система удалить её не позволяет. Её удаётся удалить только в обмен на установку любой другой системной раскладки.

Но есть баг, спасибо ему, что он существует.

Нужно поставить японскую раскладку «котоэри», потому удалить раскладку «США», потом «котоэри». В системе останутся только две раскладки Бирмана.

 28 комментариев    1052   2013   macos

Уходим с телефоном, «МакБук» выключается

Причина, по которой я засел за Пайтон и стал изучать как из него работать с Bluetooth в том, что мне очень хотелось сделать следующую вещь: как только я покидаю рабочее место, мой ноутбук блокируется.

Идея выглядела просто: надо посмотреть присутствует ли в эфире мой смартфон, если нету, значит я куда-то ушёл (я без смартфона не хожу). Я сначала это на «Баше» сделал и всё даже работало, но случилось неожиданное: Mac OS время от времени стала падать с серым экраном смерти. Тогда я взял в руки Пайтон. Я даже запрограммировал сканирование эфира, но выяснилась неприятная штука — через какое-то время моя «Нокия» автоматически выключала видимость устройства и никакими уговорами не удалось убедить её этого не делать. Пришлось делать проверку соединением со смартфоном (не знаю как это сажает батарею, не успел ещё проверить).

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

Шаг №1.

Нужно узнать так называемый «адрес» вашего устройства и привязать его к компьютеру. Тут ничего сложного нет, заходим в настройки «Блютуз» на «Маке» (они находятся в «Системных настройках»), привязываем его как обычно и переписываем себе 12 букв, разделённых минусами, это и есть адрес:

Настройки Bluetooth (80.68КиБ)

Шаг №2.

С этого шага потребуется уметь пользоваться терминалом. Создаём запускаемый файл /usr/local/bin/bt-lock следующего содержания:

#!/usr/bin/python

import objc
import sys
from subprocess import call

objc.loadBundle('IOBluetooth', globals(), bundle_path=u'/System/Library/Frameworks/IOBluetooth.framework')

def CheckDevice(address):
    dev = IOBluetoothDevice.withAddressString_(address)

    if dev.isConnected():
        return True

    conn = dev.openConnection()

    if conn == -536870185: # Bluetooth is off
        return True

    if conn == 0:
        dev.closeConnection()
        return True

    return False


cmdtorun=(r'/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession', r'-suspend')

try:
    if not CheckDevice(sys.argv[1]):
        call(cmdtorun)
except IndexError:
    print("Usage: bt-lock <device address>")

В скобках замечу, чтобы сделать файл запускаемым нужно в терминале выполнить следующую команду: chmod a+x /usr/local/bin/bt-lock.

Шаг 3.

Создаём файл ~/Library/LaunchAgents/ru.bolknote.Bluetooth-lock.crontab.plist с таким вот содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ru.bolknote.Bluetooth-lock.crontab</string>

  <key>Program</key>
  <string>/usr/local/bin/bt-lock</string>

  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/bt-lock</string>
    <string>а̲д̲р̲е̲с̲ ̲в̲а̲ш̲е̲г̲о̲ ̲у̲с̲т̲р̲о̲й̲с̲т̲в̲а̲</string>
  </array>

  <key>Nice</key>
  <integer>20</integer>

  <key>StartInterval</key>
  <integer>30</integer>

  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

И выполняем в терминале команду «launchctl load ru.bolknote.Bluetooth-lock.crontab.plist». Это всё.

Чтобы отключить всю эту марахайку, достаточно выполнить в терминале команду «launchctl unload ru.bolknote.Bluetooth-lock.crontab.plist» или выключить Bluetooth на ноуте.

Решение только для «Мака», как работать из Пайтона с Блютузом под другие операционные системы, я не знаю.

Превращение маковской флешки в полноценную

Как, наверное, многие знают, при покупке ноута «МакБук», в коробке лежит не компакт-диск (как это бывает с ноутами других фирм), а флешка, на которую записана операционная система (в комментариях читатели подсказали, что сейчас уже флешку не кладут). Флешка очень симпатичная, но, к сожалению, использовать её для своих нужд не получается — при подсоединению к компьютеру она монтируется как виртуальный сидиром и записать на неё ничего не получается.

Флешка для Мака (78.10КиБ)

Оказывается, есть способ превратить её в полноценную, перезаписываемую флешку! Для этого, правда, понадобится компьютер с Виндой или хотя бы виртуальная машина. В моём случае это был старенький ноут с нужной операционкой. Винда вам нужна, чтобы запустить утилиту sm32Xtest, которая и вразумит ваш «сидиром».

После запуска, если утилита не нашла вставленную флешку, нужно нажать «F5», в этом случае, произойдёт скан всех ЮСБи-устройств и в одной из строчек появится надпись «Ready», у меня это оказался порт №1, как видно на скриншоте:

Утилита нашла флешку (37.50КиБ)

Если эта операция выполнилась успешно, надо нажать клавишу пробела и дождаться выполнения всех оставшихся операций. Если всё прошло хорошо, в строке статус сменится на «Pass», а справа появится большая надпись «OK»:

Всё прошло хорошо (45.09КиБ)

После этого можно флешку извлекать (не забудьте извлечь её безопасно). У меня получилась флешка в 8ГБ:

Новоиспечённая флешка (76.29КиБ)
 11 комментариев    31   2013   macos
Ранее Ctrl + ↓