Перейти к содержимому

Записи с тегами ‘macosx’

31
Май

Web-разработка с использованием nginx, php-fpm, node.js на Mac OS X.

nginxКак известно, в комплекте с Mac OS X идет веб-сервер apache и php. Но как быть, если мы хотим использовать node.js, да не просто как отдельный сервер, висящий на отдельном порту, а иметь возможность проксировать http-запросы как к нему, так и к php. Небольшая инструкция по замене штатного httpd/php-module на связку nginx+php-fpm+node.js ниже.

ПодробнееRead more

27
Авг

Задвоенные приложения в меню «open with» в MacOS Finder

Всем привет!
Давно я что-то не писал в блог. Вот небольшая заметка для тех, у кого список приложений «Open with» в Finder содержит кучу хлама в виде кучи старых версий программ и/или вообще программы, которых на маке уже нет.
Лечится это одной магической командочкой в терминале. Вот она (обратные слеши в конце написаны просто для переноса строк, а так, командочка одна):

ПодробнееRead more

22
Фев

Git sugar for ur bash

Решил написать небольшую заметку о том, как сделать работу с git’ом из консоли немного удобнее и приятнее.
Хочу осветить 3 небольших момента:

  • Украшаем приглашение командной строки, чтобы сразу было видно в какой ветке находимся.
  • Автодополнение веток и тэгов при работе в консоли.
  • Настройка алиасов git.

Отображение текущей ветки в приглашении.

Не знаю, кому как, а я привык работать с git из консоли. Поэтому у меня всегда открыт шелл с директорией проекта. И порой забываешь, в какой ты сейчас ветке находишься, и надо писать git status, чтобы это увидеть. Крайне удобно было бы сразу видеть текущую ветку, да и вообще статус рабочей директории. Без проблем! Все что нужно, это немного подправить свой .bash_profile|.bashrc. Меняем приглашение шелла слендующим образом:

После этого надо или перезайти в консоль или просто применить новые изменения:

Теперь наша консоль будет выглядеть вот так:

Так как Syntax Highlighter все раскрасил по своему, то вот скриншотик как это выглядит на самом деле.

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

Автодополнение веток и тэгов.

Такс, текущую ветку в шелле мы уже видим. Но ведь довольно часто приходится переключаться на другие ветки или тэги. Было бы крайне удобно, если бы шелл подсказывал названия веток так же как и имена директорий и команд. В OS X токого по умолчанию нет. Бинарные пакеты с git’ом ставят только сам git. В Убунтах, кажется, автодополнение есть сразу. Но тем не менее, всем кому это актуально, вот как это легко сделать:

Все. После этого по табу у вас будут дополнятся ветки и тэги, как локальные так и удаленные.

Настройка алиасов.

Ну и последний маленький кусочек оптимизации работы с git — настройка алиасов. Программисты — вообще народ ленивый, собственно именно по этому они пишут программы, а не делают все руками 🙂 И мне вот каждый раз набирать git checkout или git commit очень длинно и лень. Благо в git есть замечательные алиасы. Добавляем в свой gitconfig алиасы на свой вкус. У меня например забиты вот такие:

После этого достаточно написать в консоли git logpg и гит превратит это в git log —pretty=format:\»%h — %an: %s\» —graph

Ну вот и все. Если кому интересно, вот мой bash_profile на гитхабе.

16
Янв

Выполнение произвольного скрипта при старте системы Mac OS X

Всем привет! У меня на работе давно есть потребность в статических маршрутах, отличных от маршрута по умолчанию. Но писать каждый раз в консоли sudo route add 10.1.1.1/24 192.168.24.222 после входа как-то напрягает, да и просто банально лень делать это каждый раз. В данном случае, прописывание маршрута — это частная задача. В общем случае это сводится к выполнению произвольного скрипта. Однако есть решение, пусть и не очень простое, но все-таки!

ПодробнееRead more

9
Ноя

Hint: Включение отладочного меню в Safari@MacOSX

Всем привет!
Наткнулся тут в одной презентации про веб-разработку в webkit-based браузерах на возможность включения дополнительного меню откладки в Safari. Включил. Там есть много интересного! Если вы не знали, то вот как это можно быстро сделать. Открываем консоль и меняем один параметр Safari

Вот как выглядит это меню.

17
Окт

Сборка PHP 5.3.x под MacOS X 10.6 с поддержкой iconv

Тот, кто заходил/читал мой блог раньше, скажет: «Кажется, я уже это видел». И будет прав. Давным давно я уже писал пост о том, как скомпилить php на MacOS X с поддержкой oracle, iconv и прочих библиотек. Но время идет, уже давно вышли новые версии и php и macosx, а проблема все остается нерешенной, правда пути ее решения несколько изменились.
Не буду рассказывать как включить поддержку Oracle в php, про это вы можете прочитать в моем старом посте:
Настройка Apache+PHP+MsSQL+Oracle на Mac OS X Leopard
, лучше расскажу как решить эту надоевшую уже проблему сборки php 5.3.[5678] с поддержкой iconv.

ПодробнееRead more

17
Окт

Makefile – missing separator. Stop.

После очередного апдейта безопасности MacOS X у меня в очередной раз слетел пых с ораклом. Во время шаманств при сборке пыха из сырцов, дабы скомпилить его с поддержкой iconv & oci8 столкнулся с вот такой проблемой:

Возникло это после ручной правки Makefile. Чего в обычной жизни делать не требуется. Но при сборке php под mac os x это неотъемлемый шаг. Если вы столкнулись с такой же проблемой, то знайте, что лечится она очень просто — надо использовать табы вместо пробелов там где требуются отступы. Так что просто внимательно следите за тем, что меняете. Меняйте только сами команды, а не отступы.

4
Май

MySQL и регистро-зависимость имен в MacOS X

Всем привет.
Столкнулся тут на днях со следующей проблемкой. Я работаю на Mac OS X, и поэтому все необходимое для разработки ПО у меня стоит на моем компе, тот же Апач, Пых (они вообще идут из коробки) ну и Майскуль.
Так вот, решил я для одного нового проекта заюзать MySQL Workbench. Это такая утилита, в которой можно построить UML-схему базы данных, все красиво разрисовать и потом слить эту структуру в конечную БД, так же есть Reverse Engineering. В общем, первое сливание текущей структуры из БД прошло гладко, а вот первая же заливка изменений в БД уже не получилась. Не смотря на то, что Workbench честно показывал изменения, после накатывания аптейта, он все равно продолжал считать, что все структуры разные. Дело в том, что я люблю называть таблицы красивыми именами, отражающими действительность, с заглавными буквами, разве что в дополнение к CamelCase стилю еще разделяю слова символом подчеркивания. Так вот после долгих изучений и изысканий обнаружилось, что установки по умолчанию в MySQL Server на Mac OS, не очень подходят для моего случая.

Как известно, в MySQL, база данных соответствует определенной директории на сервере, и каждая таблица хранится в виде файла (или нескольких в зависимости от движка). Поэтому регистро-чувствительность ОС играет немаловажную роль в обработке регистро-чувствительности при разрешении имен в базе данных. Это означает, что если ваш сервер на винде, то ему пофиг на регистр, в *nix-подобных системах же наоборот, регистр имеет значение, за исключением Mac OS, которая вроде как юникс, а файловая система там HFS+, которая не очень чувствительна к регистру.

В MySQL сервере есть 2 системных переменные которые имеют отношение к регистру имен, это lower_case_file_system и lower_case_table_names. Первая переменная отражает регистрочувствительность файловой системы, где расположено хранилище, оно может принимать всего два значения: OFF — фс чувствительная к регистру и ON — не чувствительна.
Вторая переменная, lower_case_table_names, отражает механизм, как происходит сравнение имен и способ их хранения. 0 означает, что имена сохраняются в том виде, в котором были заданы и сравнение чувствительно к регистру. При значении 1, имена таблиц хранятся в нижнем регистре и сравнение не чувствительно к регистру. В случае 2, имена хранятся как есть, но сравнение происходит в нижнем регистре.

По умолчанию эти переменные принимают вот такие значения на Mac OS X:

И вот такие на *nix (проверил на Linux/FreeBSD)

 

Если почитать описание этих переменных на сайте mysql (тут), то там написаны замечательные рекомендации по выставлению правильных параметров переменной lower_case_table_names. Если лень читать, то основная мысль: если вы используете InnoDB как основной движок, то поставьте везде этот параметр в 1.
Самый простой способ — это прописать эту переменную в файле конфигурации my.cnf в секцию [mysqld] и рестартануть Mysql сервер.

В общем-то я не открыл ничего нового, все это можно найти в офф. документации на сайте, статья: Identifier Case Sensitivity дает более развернутое описание этой ситуации. Рекомендую прочитать.
Вот и все!

24
Ноя

Включаем GrowlMail после апдейта 10.6.4 -> 10.6.5

Всем салют!
Все маководы наверняка знают и используют такую замечательную вещь как Growl (это сервис нотификации обо всем и вся). У него есть замечательный плагин GrowlMail, который позволяет Mail.app отправлять в Growl уведомления о новых письмах. Я его использую, и мне нравится. НО. С этим плагином есть одна маленькая проблемка: каждый раз после апдейта Mail.app, которое происходит почти каждый раз при апдейте системы, Mail при запуске ругается на то, что этот плагин не совместим с этой версией Mail и отключает его. Собственно именно по этой причине разработчики Growl исключили этот плагин из поставки Growl и выделили его в отдельный проект. И вот, всем пользователям, каждый раз при апдейте системы, приходится ждать пока какой-нибудь хороший человек сделает новую сборку плагина. Но в этот раз, что-то никто не торопится обновлять плагин, а без него как-то грустно.
Но решение есть! И довольно-таки простое.
ПодробнееRead more

16
Июл

Автодополнение команд после sudo в bash

Возможно кому-то это конечно покажется очевидным и само собой разумеещимся, но вот я раньше этого не знал. Собственно о чем речь, спросите вы?

Постановка задачи:

Сделать автодополнение команд в баше после sudo, а так же возможность выполнения алиасов так же после sudo.

А в чем собственно проблема спросите вы? — Да ни в чем, если вам это не нужно, однако мне, живущему на Mac OS X, периодически приходится выполнять некоторые команды из под рута. А для этого как ни сложно догадаться, используется команда sudo. А поскольку Линуксоид я еще тот, то мне уже давным давно лень писать команды полностью, ведь есть TAB 🙂 Но по умолчанию автодополнение после написания sudo не работает.

Проблема номер два: это то что, после sudo так же не работают алиасы. Вот пример: у меня есть некоторое количество алиасов, среди них alias ll=’ls -l’. Вот что будет если вы попробуете выполнить:

> sudo ll

Password:
sudo: ll: command not found