2010-02-16

この期に及んでEmacs + sql-XXXが便利

DBMS のフロントエンドって何使ってますか? phpMyAdmin ? いやいや、やっぱりね、ターミナルから離れたくないんですよ。

自分の場合は普段 PostgreSQL なので psql を使っているのですが、いつも日本語に関してはなんとなくごまかしながら作業していました。よくやるのは

screen の :encoding を DBMS の encoding に合わせる

という方法で、これで日本語の表示に関しては問題ないのですが、Terminal.app を使っていると日本語を含む文字列を shell 上で扱う際に若干問題があったりします。1今まではこの環境で直接日本語を検索しないようにしていたのですが、今回ちょっとした日本語検索の作業を行うことになって、困ったことになりました。

  • Terminal.app + psql では編集してくり返し作業を行う際に日本語が乱れる
  • pgAdmin III では日本語をまともに入力できない

以前は DBMS の作業のためだけに eclipse を入れていたりしました。くやしいですが CSV ダウンロードなどの機能を持った GUI のツールが便利なのは認めます。でもやっぱセットアップが面倒で、可搬性が高くないし高負荷で地球に優しくないなぁとも思うわけで。

そこで思い出したのが Emacs の sql-postgres. え、eclipse 使うのと違わない? まぁまぁ。

21世紀ですよ。Emacs くらい許してください。

まぁ要するに Emacs の中から psql を呼ぶんですが、こうなると screen の :encoding で合わせる技は却って面倒になります。screen の encoding と emacs の terminal-encoding が合わなくなる可能性が出てきます。えぇ、データが euc-jp とか化石な環境の場合は、ですが。

少し悩みましたが、マニュアルを読んでいたらあっけなく解決2

\encoding utf-8; だけでよかった3

なんだそういうことか。よーしもう一度整理しよう。

  1. Emacs + sql-XXX4 でコマンドラインツールを呼び出して DBMS サーバに接続する
  2. \encoding 使っているクライアントのエンコーディング;
  3. shell 上の生 psql5 と違って Emacs 上なので日本語の編集も問題なし
  4. Emacs なので M-/ でいろいろ補完できる。これが素の psql より断然便利。
    • 履歴を戻るときは shell-mode と同じで M-p

という、予想外に強力な環境ができあがった。なんだー、みんなそりゃ Emacs から出ないで作業するわけだよー。

これで一安心。

  1. より細かく言うと Terminal.app 2.0.2 + zsh 4.3.x + screen 4.00.03 辺り 

  2. 今までどれだけまともに使っていなかったか! 

  3. Terminal.app を UTF-8 で使っているから 

  4. 各種DB用に揃っている 

  5. しつこいけど Postgres の場合 

About

例によって個人のなんちゃらです

Recent Posts

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Document SVG AsciiDoc Pandoc DocBook Develop Jekyll macOS Node.js Vite Heroku Transformer AI Data Cloud Wasm