Blog

  • Настройка Eclipse: изменение шрифтов и горячих клавиш

    Начал учиться разрабатывать под Android на Eclipse, который кстати поставил под Mac OS X. И кстати, для этого дела нужно ставить не первый попавшийся Eclipse, а именно Eclipse Helios, что я к сожалению узнал только по опыту. Eclipse меня мало радовал после привычного XCode.

    По умолчанию настройки Eclipse не такие крутые, как хотелось бы: код в Eclipse пишется шрифтом 11(!), а брейкпоинты ставятся через Cmd+Shift+B по умолчанию(попробуйте так пальцы разместить на клавиатуре – у Вас мизинец начнет болеть через 5 минут). К счастью, Eclipse гибкий и легко настраивается.

    Изменение шрифта

    Сначала я думал, что для изменения шрифтов нужно закачать где-то тему и импортировать ее. При этом темы других разработчиков, которые я нашел, мне не нравились. Я хотел просто увеличить размер шрифта с 11 на что-нибудь получше. Оказалось, что есть одна настройка, которая изменяет размер шрифта во всем коде.

    Итак, нажимаем Eclipse -> Настройки (или Cmd + ,). Далее раскрываем General и раскрываем Appearance. Нажимаем Colors and Fonts. Затем справа раскрываем список Basic и выделяем элемент Text Font:

    Редактируем через кнопку Edit…. Лично я увеличил размер до 20. И теперь у меня Java код выглядит так:

    Изменение горячих клавиш

    Это существенно сэкономит Вам время и сбережет Ваши пальцы от нажатия плохих сочетаний. Чтобы изменить горячую клавишу, нужно по аналогии выбрать Keys(отмечено красным на первом рисунке, который можно увеличить, просто щелкнув по нему) Далее поменять, скажем, Shift+Cmd+B на Alt+B для брейкпоинтов. И кстати, здесь же можно узнать, какие сочетания клавиш можно использовать для других функций.

    Просмотр горячих клавиш
    Горячие клавиши как заклинания. Нужно знать их сочетания, но не всегда помнишь их, поэтому в Eclipse есть маленькая фишечка. Нажмите в любом месте Cmd+Shift+L и вы получите список горячих клавиш. Чтобы закрыть этот список просто щелкните на любое место в среде разработки или нажмите Esc. Повторное нажатие этого сочетания при открытом списке приведет Вас сразу к настройкам горячих клавиш, что тоже удобно. Выглядит это так:

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

  • Изменение вводного приглашения Терминала в Mac OS X

    Уберем все лишнее в приглашении в Терминале (aka Bash), оставив только путь к текущей папке. Параметр PS1 отвечает за вводное приглашение Bash, PS2 – за приглашение во время ввода дополнительных параметров.

    Открываем Терминал и открываем скрипт bash_profile в редакторе Vim:

    $ vim ~/.bash_profile
    

    Нажимаем клавишу “i”, чтобы войти в режим Insert.

    Вводим

    PS1='\w $'
    

    Рассмотрим список допустимых параметров:

    Параметр – Значение
    \a an ASCII bell character (07)
    \d дата в формате »День_недели, Месяц, Число».
    \e an ASCII escape character (033)
    \h имя хоста до первой точки.
    \H имя хоста
    \j количество задач, работающих в шелле в настоящее время
    \l название терминала
    \n переход на новую строку
    \r возврат каретки на начало строки
    \s название шелла (будет выведено, например, «bash»
    \t время в 24-часовом формате (ЧЧ: MM: СС)
    \T время в 12-часовом формате (ЧЧ: ММ: СС)
    \@ время в 12-часовом формате (AM/PM)
    \u имя активного пользователя
    \v номер версии bash
    \V номер версии bash, номер релиза, номер патча
    \w текущая директория (будет выведено в формате /path/to/work_dir_name)
    \W имя текущей директории (будет выведено в формате «dir_name\»)
    \! номер команды в истории
    \# системный номер команды
    \$ if the effective UID is 0, a #, otherwise a $
    \\ обратный слэш
    \[ начало последовательности непечатаемых символов (см. примеры в разделе «Цвета и стилизация».
    \] конец последовательности символов
    $ ( ) внешняя комманда

    Нажимаем Esc и пишем :wq, чтобы сохранить и выйти.

    Перезапускаем скрипт bash_profile командой:

    source ~/.bash_profile
    

    Готово!

  • Работа с Subversion в Mac OS X

    Здесь я опишу основы работы с SubVersion в Mac OS X, начиная от создания репозитория и заканчивая редактированием и обновлением версий.

    Subversion (также известная как «SVN») — свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet Inc.

    Модель работы
    Subversion — централизованная система (в отличие от распределённых систем, таких как Git или Mercurial), то есть данные хранятся в едином хранилище. Хранилище может располагаться на локальном диске или на сетевом сервере.
    Работа в Subversion мало отличается от работы в других централизованных системах управления версиями. Клиенты копируют файлы из хранилища, создавая локальные рабочие копии, затем вносят изменения в рабочие копии и фиксируют эти изменения в хранилище. Несколько клиентов могут одновременно обращаться к хранилищу. Для совместной работы над файлами в Subversion преимущественно используется модель копирование — изменение — слияние. Кроме того, для файлов, не допускающих слияние (различные бинарные форматы файлов), можно использовать модель блокирование — изменение — разблокирование.
    При сохранении новых версий используется дельта-компрессия: система находит отличия новой версии от предыдущей и записывает только их, избегая дублирования данных.

    Приемы работы
    Открываем Терминал. Перейдем в корневую папку для данного пользователя:

    $ cd ~/ 
    

    С помощью следующей команды можно узнать путь к этой и любой другой папке:

    $ pwd
    

    Создаем репозиторий в корневой папке:

    $ svnadmin create SVNrep
    

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

    $ svn import /Users/UserName/Desktop/ProjectName
      file:///Users/UserName/SVNrep/ -m "Initial import"
    

    Здесь после -m идет комментарий. После import идет путь к папке проекта, затем путь к репозиторию. Обратите внимание, что нужно указать еще слово file в начале пути к репозиторию. В данном случае в репозитории SVNrep будет все, что есть внутри ProjectName. Проверить это можно, перейдя к папке SVNrep и используя команду ls с параметром a1, который ознчает, что будет показано все, включая скрытые папки и файлы:

    $ cd ~/SVNrep
    $ ls -a1
    

    Не удивляйтесь, что кроме Ваших файлов, есть еще куча других, в том числе папка .svn во всех вложенных папках – это служебные файлы svn, которые нужны для того, чтобы каждый раз не указывать путь к репозиторию в дальнейшем. Если Вы хотите изъять теперь из репозитория копию проекта без этих файлов и создать безопасную для Web копию, через которую нельзя воздействовать на репозиторий, введите следующую команду:

    $ svn export file:///Users/UserName/SVNrep/
     /Users/UserName/Desktop/ProjectNameWebSafe
    

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

    Для того, чтобы создать рабочую копию репозитория SVN, введите команду:

    $ svn checkout file:///Users/UserName/SVNrep/
     /Users/UserName/Desktop/ProjectNameCopy
    

    Рабочая копия в отличие от Web Safe копии позволяет сохранять изменения, созданные в рабочей копии, в репозитории.

    Предположим теперь, что наш репозиторий находится на сервере где-то.
    Копируем наш проект(первую версию) с локального компьютера в репозиторий на сервере:

    $ svn import /Users/UserName/Desktop/ProjectName  
    http://HostName/svn/ProjectRepositoryName/ -m "Initial import"
    

    Теперь создаем рабочую копию у себя с сервера:

    $ svn checkout http://HostName/svn/ProjectName/
     /Users/UserName/Desktop/WorkProjectFolder
    

    Предположим мы что-то изменили в рабочей копии. Создали что-то новое, дописали что-то и хотим посмотреть на разницу между рабочей копией и репозиторием на сервере. Для этого переходим в папку проекта в Терминале и используем команду status:

    $cd /Users/UserName/Desktop/WorkProjectFolder/
    $ svn status
    

    Если Вы увидите, например, такой текст:

    M test.txt
    

    это означает, что файл test.txt был модифицирован (“M” = Modified). Добавление, удаление и переименовывание объектов необходимо осуществлять специальными командами.

    Теперь нужно сделать Commit произведенных в рабочей копии изменений, чтобы они отразились на сервере в репозитории:

    $ svn commit -m "Added and removed some test files"
    

    После добавления, удаления и переименовывания нужно также делать commit.

    Предположим, что пока вы работали с рабочей копией, кто-то успел добавить новые файлы в Ваш проект. Чтобы обновить рабочую копию, нужно использовать команду update. Здесь пример с результатом update, как пример – восстановлена фотография.

    $ svn update
    Restored 'Medicine/Снимок экрана 2011-12-02 в 17.42.18.png'
    At revision 11.
    

    Чтобы просмотреть все Revisions, используем команду log. При этом отображается число строк измененных и комментарии:

    $ svn log
    

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

    $ svn diff -r 1
    

    Если Вы захотите откатиться к предыдущей версии (любой), делаем update, но только указываем еще номер Revision (версии):

    $ svn update -r 1
    

    Этот update подействует на весь проект. Но если вы хотите проапдейтить определенный файл, нужно его указать:

    $ svn update test.txt -r 1
    

    Добавление файлов производится вручную. Недостаточно просто создать новый файл в рабочей копии и сделать commit. Нужно его еще добавить в репозиторий. Например, создаем сначала папку в нашем проекте под названием TestFolder. Затем нужно ее прописать в SVN и сделать commit, чтобы она появилась в репозитории на сервере:

    $ svn add TestFolder 
    A         TestFolder
    $ svn commit -m "added new folder TestFolder"
    Adding         TestFolder
    Committed revision 12.
    

    Аналогично производится удаление:

    $ svn delete test2.txt
    $ svn commit -m "deleted file"
    

    И переименовывание:

    $ svn move oldfilename newfilename
    $ svn commit -m "moved file"
    

    Удаление и переименовывание не нужно делать в Finder. Эти команды сами удаляют и переименовывают как в рабочей копии, так и в репозитории.

    Если возникает конфликт при commit’е, нужно сначала сделать update, а затем commit. При этом SVN строчка за строчкой сам добавляет недостающие строки в Вашу копию.

    $ svn commit -m "Some change by Michael"
    Sending test.txt
    svn: Commit failed (details follow):
    svn: Out of date: '/test/test.txt' in transaction '3-1'
    

    Если SVN не справляется с этим, то он создает копии файлов в Вашей рабочей копии проекта:

    test.txt.mine
    test.txt.r2
    test.txt.r3
    

    Для удобства можно использовать графический интерфейс в SVN, например, программу SCToolbarButton.

    Ссылки для изучения:

    http://www.rubyrobot.org/tutorial/subversion-with-mac-os-x – хорошая статья на эту же тему на английском языке

  • Размещение программного кода в WordPress

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

    1. Используем плагин WP-Syntax.

    После его установки код в тексте блога можно выделять тегами

    <pre lang="LANGUAGE" line="1"> и </pre>
    

    2. Используем другой плагин, который все делает не только аккуратно и чисто, но и использует цвета, как в XCode, например – WP-SynHighlight.

    Пользуемся им так, только без единички:

    [codesyntax1 lang="LANGUAGE"] и [/codesyntax1]
    

    В обоих вариантах вместо “LANGUAGE” подставляется любой язык, который есть в списке GeSHi. Для добавления кода HTML, нужно заменять теги на “&lt” и “&gt” + ; в конце этих последовательностей.

    Данный пост написан с использованием WP-Syntax, к примеру.
    А вот этот с использованием WP-SynHighlight.

  • SVN в Mac OS X с графическим интерфейсом (GUI)


    Для Windows существует программа Tortoise SVN, которая позволяет работать с SVN без командной строки. Аналогом такой программы для Mac OS X является программа SCPlugin, которую можно скачать отсюда : http://scplugin.tigris.org


    Но мало ее скачать и установить, нужно еще понять, как ей пользоваться. Для этого, конечно, можно прочитать инструкцию, которая прилагается к ней. Но пользователи обычно сразу лезут в папку Программы и пытаются ее запустить. Данная программа в этом плане необычная. Это плагин к Finder. Чтобы начать ей пользоваться, перетащите программу SCToolbarButton на панель инструментов Finder и отпустите. Плагин таким образом разместится в панели инструментов. После этого выделите репозиторий SVN и нажмите на эту кнопку. Можете теперь выполнять команды.

  • Исправление ошибки SVN: Could not use external editor to fetch log message

    Англоязычная статья, из которой было взято данное решение:
    http://www.antbrown.com/web-development/svn-could-not-use-external-editor-to-fetch-log-message/

    Рассмотрим для начала причину этой ошибки. Заключается она в том, что Вы использовали к примеру, svn commit без параметров, что привело к тому, что SVN захотел запустить текстовый редактор по умолчанию, чтобы Вы могли ввести описание перед выполнением команды, но SVN не обнаружил его и выдал рассматриваемую ошибку.

    Чтобы решить данную проблему, нужно открыть файл bash_profile, который по сути является скриптом, вызываемым при каждом запуске Bash. Bash – это одна из наиболее популярных современных разновидностей командной оболочки UNIX. Здесь подробное введение в Bash.

    Открываем Терминал и вводим

    vim ~/.bash_profile
    

    Vim (сокр. от Vi Improved, произносится «вим») — свободный режимный текстовый редактор, созданный на основе более старого vi. Ныне это один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, и созданным благодаря этому расширениям и надстройкам. Ссылка для дальнейшего изучения: Викиучебник по Vim. Тильда ~ означает корневую папку данного пользователя. На клавиатуре MacBook Pro она находится слева от буквы Z, вводить ее нужно через Shift и английскую раскладку.

    Далее нажимаем “а”, чтобы войти в режим INSERT и пишем в Vim:

    export SVN_EDITOR="/usr/bin/vim"
    

    Чтобы выйти из Vim нажмите Esc, а затем, согласно справочнику комманд редактора Vim, нужно ввести :wq, что означает write and quit.

    Таким образом, мы сделали редактор Vim редактором SVN по умолчанию. Теперь мы это можем проверить. Для этого нужно перезапустить Терминал или вручную перезапустить bash_profile, после чего посмотреть значение соответствующей переменной окружения:

    source ~/.bash_profile
    echo $SVN_EDITOR
    

    Согласно справочнику комманд Терминала Mac OS X, команда source выполняет инструкции, находящиеся в указанном файле. То есть мы по сути вручную запустили скрипт bash_profile, который обычно запускается при запуске Терминала.

    Смотрим на переменную окружения. Если редактор Vim установлен, то все, при неправильном запуске команд SVN ошибка должна исчезнуть. Вам будет предложен Vim для ввода текстового описания команды SVN.

    Справочные ссылки:

    Подробное введение в Bash
    Викиучебник по Vim
    Справочник комманд редактора Vim
    Справочник комманд Терминала Mac OS X

  • Автозапуск программ в Mac OS X

    Для того, чтобы изменить настройки автозапуска программ в Mac OS X откройте Системные Настройки, а затем Учетные записи. На рисунке выделено красным.

    Откройте вклдадку Объекты входа для своей учетной записи.

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

  • Как создать скриншот с симулятора iPad или iPhone?

    Удивительно, но лично я раньше не знал, что есть такая функция и каждый раз создавал скриншоты с девайсов. Но тут мне пришлось столкнуться с тем, что Apple стали теперь требовать скриншоты также и для iPad для всех приложений, а у меня нет iPadа пока. Возникла задача создать скриншот с симулятора. Но обычный метод с Shift+Cmd+4 -> Пробел также не помог, так как размер симулятора iPad меньше, чем реальное устройство и изображение не получается нужных размеров и при увеличении – нужного разрешения. К счастью, решение нашлось, и теперь я всегда буду создавать скриншоты именно так.

    1. Нажмите Правка в группе Меню – там увидите специальную кнопку для создания скриншота с симулятора. Либо используйте горячую клавишу Ctrl+Cmd+C.
    2. Откройте программу Просмотр и нажмите Cmd+N для создания нового файла из буфера обмена.

    Сохраненный файл имеет размер 780х1024 (в случае iPad), как раз подходящий в качестве скриншота для iTunes Store.

  • Об использовании NSError

    Зачастую пользуешься функциями, которые возвращают параметр NSError *error в виде &error. Я не мог никак понять, как же пользоваться этим, пока не перечитал несколько постов на эту тему.

    Оказывается, для того, чтобы проверить, есть ли вообще error, прежде чем выводить, нужно при инициализации задать еще nil для него. А для того, чтобы проверить error на наличие достаточно просто писать if(error). Это возможно благодаря особенностям класса NSError.

    <br />
    NSError *error = nil;<br />
    NSString *urlString = [NSString stringWithFormat:@”http://yandex.ru”];<br />
        NSLog(@”Eval urlString=%@”, urlString);<br />
        NSURL *url = [NSURL URLWithString:urlString];<br />
        NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];</p>
    <p>    [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response<br />
            error:&error];</p>
    <p>    if (error) {<br />
            NSString *rusErrorMsg = NoServerConnectionMsg;<br />
            msg = [NSString stringWithFormat:@”Ошибка:%@”, rusErrorMsg];<br />
            [appDelegate showResultViewWithText:msg fromView:self.view withSpeed:ResultViewSpeed];<br />
            return;<br />
        }<br />
    

  • Wi-Fi точка доступа из MacBook

    Я пользуюсь MacBook уже около года, но только недавно узнал о том, что он может также служить точкой доступа Wi-Fi(aka HotSpot). Но есть одно ограничение: сам MacBook должен быть подключен к сети через провод, а не Wi-Fi.

    Поначалу я пытался настроить точку доступа по одной англоязычной инструкции, но после того, как у меня не получилось, я сделал поиск еще раз и нашел решение в одном из комментариев к посту в LiveJournal.

    Итак, расскажу здесь подробнее об алгоритме.

    • Заходим в Настройки->Общий доступ
    • Выбираем Общий интернет, ставим галочку на AirPort и нажимаем Настройки AirPort. Если галочка на Общем интернете уже стоит, ее нужно убрать, чтобы можно было редактировать AirPort.
    • Редактируем настройки AirPort как показано на рисунке.
    • Теперь ставим галочку на Общий интернет и нажимаем в появившемся окне Включить
    • Вверху справа на рабочем столе должна измениться иконка, как показано на рисунке.
    • Теперь настраиваем, например, iPhone: выбираем в настройках нужный WiFi – просто выделяем его среди найденных и вводим пароль. Все должно установиться автоматически.
    • Готово!