skip to main | skip to sidebar
Показаны сообщения с ярлыком разработка. Показать все сообщения
Показаны сообщения с ярлыком разработка. Показать все сообщения

пятница, 7 ноября 2008 г.

А не попробовать ли emacs?

Я давно уже плююсь на монстроподобные эклипсы и убогие блокноты. Я понимаю, что научиться работать с vim или emacs - значит потратить много времени. Но сколько я трачу времени на элементарные действия в обычном редакторе? Мне кажется, намного больше. Поэтому я наконец решился и... поставил emacs. Вот мои первые впечатления.

Трудно. Очень трудно. Особенно, если учесть, что я не обладаю десятипальцевым слепым методом набора. Но как приятно, что больше не надо никуда тянуть руки! Они просто стоят на своих местах и работают. А emacs... Он просто выполняет свою работу. Тихо и незаметно, без лишних рюшечек.

$ emacs --version
GNU Emacs 22.2.1

Прежде всего я внимательно изучил туториал, доступный в меню Help, и постарался в дальнейшем следовать всем его рекомендациям. В частности, пользоваться ключами управления курсором вместо специальных кнопок на клавиатуре. Непривычно, но ведь если хочешь что-то изменить, то нужно к чему-то привыкать! :-)

Русский текст отображался превосходно только в справке, но вот вводиться с клавиатуры никак не хотел - одни квадратики, и открываемые файлы в кодировке utf8 отображались неверно. Решить проблему удалось путем размещения в файле настроек ~/.emacs следующих команд.

Включаем правильный шрифт - это самое главное. Вы можете модифицировать эту строку на свой вкус, если понимаете, о чем идет речь ;-) Кстати, помню была иксовая утилитка для выбора шрифта в таком формате. Кто-нибудь подскажет как ее зовут? (Как верно подметили в комментариях, ее зовут xfontsel)

(set-default-font "-*-fixed-medium-r-normal-*-16-*-*-*-*-*-koi8-r")

Ставим все что можно в utf. Не уверен, что это нужно, но в ходе раскопок интернета у меня в конфиге образовался такой блок.

(set-language-environment "Russian")
(set-terminal-coding-system 'utf-8)
(set-clipboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

Настаиваем работу с буфером обмена, чтобы вставлялся нормальный русский текст, а не крокозяблики.

(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))

Если что-то не работает - обратите внимание на сообщения об ошибках (меню Buffers -> Messages). Возможно у вас просто нет подходящего русифицированного шрифта.

После некоторого времени работы с русским текстом надоело переключать раскладку, чтобы переместить курсор или выполнить другую команду. Потому что в русской раскладке ключи не работают. Решение оказалось совершенно элементарным: нужно пользоваться встроенной в emacs переключалкой (C-\). Тоже довольно непривычно, и поначалу сильно путался. Но ведь никто не обещал, что счастье настанет сразу ;-)

При работе с emacs вы можете в один прекрасный момент обнаружить отсутствие руководства (manual). Это связано с тем, что Дебиан заботится о вашей свободе. Свобода свободой, но я, видимо, еще не до конца понял, почему мне не стоит устанавливать себе на компьютер руководство emacs. Поэтому я его таки поставил:

$ sudo apt-get install emacs22-common-non-dfsg

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

'C-x (' - начать запись;
'C-x )' - закончить запись;
'C-x e' - воспроизвести;
'C-u 10 C-x e' - повторить 10 раз.

Думаю, для начала этого хватит. А дальше - в мануал. Там есть еще много интересных возможностей.

Для работы с php (к сожалени, приходится :-) я скачал свежий php-mode, т.к. имеющийся в репозитории старый и немного глючный.
http://php-mode.sourceforge.net/
Чтобы включить его, нужно распаковать файл .el в папку, доступную emacs. Например, /usr/share/emacs/site-lisp
Затем в файле настроек добавляем:

;; php mode
(require 'php-mode)

Небольшие поправки для автоформатирования, чтобы отступы расставлялись так, как я привык это делать:

;; abbrev-mode
(add-hook 'php-mode-hook
'(lambda ()
(define-abbrev php-mode-abbrev-table "ex" "extends")
(c-set-style "cc-mode")
(c-set-offset 'arglist-close 0)))

А также небольшой набор моих предпочтений:
- отступ по табулции только если курсор в начале строки;
- отображение позиции курсора в строке;
- отступ символами табуляции;
- отображение размера окна;
- ширина табуляции - 4 символа.

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(c-tab-always-indent nil)
'(column-number-mode t)
'(indent-tabs-mode t)
'(size-indication-mode t)
'(tab-width 4))

Теперь, к сожалению, становится неудобно набирать текст везде, кроме emacs. В этом, наверное, и кроется ответ на вопрос, зачем емакс стал операционной системой :-) Буквально через несколько дней использования emacs я стал искать какой-нибудь способ сделать так, чтобы все поля ввода во всех приложениях реагировали на управляющие комбинации клавишь emacs. Но я так и не нашел решения. Люди, помогите! :-)


Прошел месяц с начала написания этой заметки. Сегодня я решил сдуть с нее пыль и таки опубликовать :-) Хочу вам сказать, что эксперемент по переходу на емакс завершился успешно. По крайней мере я свободно использую все его базовые функции. Пользоваться другими редакторами нет никакого желания. Ни в одном редакторе я не видел настолько интеллектуальную обработку вводимого текста и такую гибкость настроек. И это при том, что я пока очень поверхностно знаком с его возможностями.

Вначале статьи я писал, что не владею слепым десятипальцевым методом набора. Это неправда. Уже неправда. Emacs научил меня набирать вслепую. Правда, несколько лет назад я пытался пройти курс "Соло на клавиатуре". Но все, что осталось от тех уроков - осведомленность о том, как правильно держать руки над клавиатурой. Хотя, все же, это было очень важно. Так что советую почитать хотя бы первые уроки этого тренажера.

Ну и напоследок, почему я выбрал именно emacs а не vim. Мне симпотичны оба эти редактора. Я долго рылся в инете и читал разные сравнительные статьи и флуд на эту тему. И отдал предпочтение emacs, потому что:
1. Более полноценный на мой взгляд графический интерфейс.
2. Давно хотел научиться играть на пианино :-D В общем, мне больше понравилась идея удерживать контролы и альты, чем переключаться между режимами редактирования.
3. Модульность и расширяемость. Мне показалось, что здесь все-таки больше гибкости, чем в vim, но я могу ошибаться.
4. Ричарда Столлмен :-) Мне нравится его скурпулезная фанатичность, поэтому я склонен доверять его выбору, как авторитетному.

И все же, если вы собрались перейти на более продвинутый редактор, я советую Вам лично изучить emacs и vim или им подобные, и сделать свой выбор самостоятельно. Ваши предпочтения и цели могут сильно отличаться от моих. Единственное, чего я не советую, так это пользоваться "блокнотами" с громкими названиями IDE ;-)

вторник, 4 ноября 2008 г.

MySQL Workbench: пробуем новую альфу

Несмотря на обилие софта под Linux, линуксоиды все-таки иногда страдают из-за отсутствия каких-либо программ для решения определенных задач. Может, это проблема в большинстве своем касается новоиспеченных линуксоидов. Может, и программы эти не нужны, потому что являются говнопрограммами для говнорешения несуществующих (небудуповторяться)проблем. Но что, если крепко укоренившийся виндоюзерный менталитет хочет такую программу? А если того требует работа? Возможно, стоит поменять работу :) Но сегодня я решил попользоваться сырыми поделками.

Год назад я проводил поиски программы для рисования так называемых диаграмм отношений сущностей базы данных (ER-диаграммы). И, конечно же, хотелось рисовать не просто отношения между сущностями, но и сразу же создавать физическую модель данных, и по возможности автоматически строить базу данных на основе модели. Таких программ нашлось немало. В том числе и под Linux. Вот только все они были платными. Единственная бесплатная программа, которую я нашел и которой пользовался с переменным успехом - это DBDesigner. Однако, разработка этого продукта была оставлена много-много лет назад, причем на этапе некой незавершенности и глючности продукта. Была еще одна бесплатная альтернатива: MySQL Workbench. Но она была настолько ранней альфой (по крайней мере для Linux), что оставалась совершенно непригодной к использованию. Приходилось использовать DBDesigner и молиться на MySQL Workbench :-) И вот, 7-го октября сего года вышла новая альфа (версия 5.1.3)! Так попробуем же ее на вкус и посмотрим, можно ли ей уже пользоваться. Об этом я расскажу немного ниже, а сначала - об установке.

Во-первых, во избежание путаницы, я бы посоветовал снести ранее установленные версии mysql-workbench, если у Вас такие имеются.

Затем ставим одну гугловскую либу ctemplate, которая нужна вожделенному продукту. Качаем ее с гуглакода:

http://code.google.com/p/google-ctemplate/downloads/list

И ставим:

sudo dpkg -i libctemplate0_0.91-1_i386.deb

Что радует - так это то, что специально для нас с вами были заготовлены пакеты deb. Добавляем репозиторий в /etc/apt/sources.list

deb ftp://ftp.mysql.com/pub/mysql/download/gui-tools/ubuntu/ binary/
deb-src ftp://ftp.mysql.com/pub/mysql/download/gui-tools/ubuntu/ source/

Обновляем локальные списки пакетов

$ sudo apt-get update

И устанавливаем Workbench

$ sudo apt-get install mysql-workbench

А теперь пробуем запустить

$ /usr/bin/mysql-workbench

Не запускается? Говорит "The GRT environment for the Workbench could not be
initialized. Please verify your installation."
?

Тогда перед запуском сбросьте локаль:

$ unset LANG
$ unset LC_ALL

Теперь должно запуститься.

Ну-с, теперь посмотрим. По сравнению с предыдущей альфа-версией под линукс, интерфейс заметно обновился. Видать, таки что-то сделали :)

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

Первое что огорчило - перестал работать импорт из предшественника этой славной программы: DBDesigner'а. Есть импорт из SQL-скрипта, однако, похоже, он просто занимается симуляцией деятельности. Зато работает экспорт в SQL. Правда, после экспорта последняя добавленная мною связь раздвоилась. И ни одна из них не удаляется. А после попытки удалить внешний ключ количество связей стало три. Размножаются не по дням. Вообще говоря, складывается такое ощущение, что связи между таблицами живут какой-то своей отдельной жизнью, т.к. они остаются даже после вырезания таблиц и не поддаются никакому контролю. Только красиво мигают синеньким и красненьким.

Дальше эксперементировать не захотелось. За год разработки программа научилась добавлять связи, но что-либо сделать с ними после этого нереально. И продуктом по-прежнему невозможно пользоваться. Но зато как красиво подсвечиваются элементы диаграммы! ;)

Насколько я слышал, созданием MySQL Workbench руководит автор преславутого DBDesigner. Не знаю, может поэтому он такой глючный и никак не выйдет из альфа-версии. Интересно было бы узнать, работает ли сие чудо под Windows. А пока - ждать?... Или может самому написать? :) Или встать на путь истинный и обойтись без этих ненужных рисовалок? Жду ваших советов. А сейчас... Хм... Попробую, пожалуй, OpenOffice Draw :))
Автор: Raa 2 коммент.
Ярлыки:
Подписаться на: Комментарии (Atom)
 

AltStyle によって変換されたページ (->オリジナル) /