「コード」カテゴリーアーカイブ

リモートのファイルをローカルで直接編集する方法


私が開発サーバ内のファイルをローカルマシンで簡単に編集・保存できるようにした方法を紹介します。 ついでにそれ以外の方法も紹介します。

経緯

私の転職した会社では、開発サーバの中で開発を行うというスタイルでした。 黒い画面の Unix系 サーバ、 エディタは vim しかない、外部に接続できないからツールがほしければ WinSCP でコピー。

ローカルマシンで開発環境を構築するにも、いろんなチームが開発した多様なライブラリがないと動かないようになっていたため、ローカルマシンの環境を構築するのは困難な状況でした。 ファイアウォールの接続制限なんかもあって。

そこで思い付いたのが、ローカルマシンからリモートのファイルを直接編集することでした。 ローカルマシンなら外部に接続できるから、ローカルのリッチなエディタでやっていこうと。

ここからは、リモートのファイルを(擬似的に)直接編集できるエディタを紹介していきます。

インストールすれば編集可能になるエディタ

まずは、インストールさえすれば編集可能になるエディタを紹介します。 プラグインなどの追加インストールは不要です。

NetBeans

IDE なら簡単にできるんじゃないかと思って トライしてみたのが NetBeans です。実際のところ、とても簡単に思い通りのことができました。

保存時に自動でリモートマシンに保存してくれます。シンタックスチェックもやってくれます。

既存のリモートマシンのファイルを元にプロジェクトを作成して進めていくこともできますし、新たにプロジェクトを作ってそこからリモートマシンにアップロードすることもできます。

やりかたは、 NetBeans のページで紹介されていますので、そちらをご覧ください。

参考: NetBeans IDEを使用するリモートWebサーバーへのPHPアプリケーションのデプロイ

Komodo Edit

Edit, Preference と進むと、 リモートサーバの設定があります。 そちらから設定することで リモートファイル の編集が可能になります。

参考: Komodo Editをとりあえず使ってみるための基本的な設定

gedit

設定によってできるようになります。

参考: Use Gedit as Remote File Editor via FTP and SSH (Ubuntu)

プラグインなどをインストールすることで編集可能になるエディタ

ここから下は 別途プラグインなどのインストールをすることで、リモートファイルが編集可能になるエディタです。

Eclipse

プラグインを使うと NetBeans と同じようなことができます。 プラグインは General Purpose Tool – Dynamic Languages Toolkit -Remote Development Support 。

参考: Eclipse Keplerで仮想環境上(リモート上)のファイルを編集する。

Sublime Text 2

SFTP というプラグインを使えばリモートファイルを編集できます。

参考: Sublime text SFTPをつかってリモートファイルをローカルで快適に編集

rsub というプラグインを使うことでもリモートファイルを編集できます。 ただ、サーバ側でもインストール作業が発生します。

参考: リモートサーバー上のファイルをローカルのSublime Text 2で編集する (削除されました)

Notepad++

NppFTP というプラグインを使って、リモートファイルを編集できます。

参考: Notepad++のFTPプラグイン「NppFTP」の設定方法

geany

geany はサポートしていません! ……が、 gnome だったら fuse を使えば ローカルマシンのようにリモートファイルを扱えるそうです。 これだと、 geany でなくても gnome なら どんな エディタ 使っても OK ですね。

参考: Does Geany support editing files remotely through FTP or SSH?

gVim

Windows マシン から、 PuTTY と連携して scp を使えるようにしようとしましたが、あえなく失敗。リモートマシンからファイルの一覧すら取得できませんでした。やり方を紹介しているサイトは多いのですが。

興味のある方は是非。

参考: vimからSSH/SCP接続してみる


初めての groonga – SQL と比較する


会社で groonga を使うことになりました。 groonga でないと取得できないデータがあったんです。

groonga も含め 全文検索エンジンを使うのは初めてだったので、 公式ドキュメントを見ながら探っていきました。 データベースで使用する SQL と groonga のクエリを比較してみると次のようになりました。 もともと別物なので参考程度に見ていただければと思います。

SELECT

データを取得するときは、 Database でも groonga でも SELECT を使います。 でも、構文の構成はだいぶ違います。 groonga では、次のような命令になります。

簡単に比較すると次の表のようになります。

Database groonga
表示カラム (select の後ろに羅列) ––output_columns
テーブル from ––table
検索条件 where ––filter, ––query, ––match_column, ––scorer
順序指定 order by ––sortby
オフセット offset ––offset
件数指定 limit ––limit
グループ化 group by ––drilldown (drilldown したときの件数指定などは下の説明を参照)
論理演算子 and, or &&, ||

補足説明

––output_columns

検索結果に表示するカラムを指定する。カンマで区切ることにより、複数カラムを指定できる。

––query

全文検索を行う。

title カラムについて 文字列 “this” の全文検索を行う。

––match_columns, ––query

検索結果に含めるカラムを指定する。複数指定もできる。

––query と一緒に使い、 title カラムについて 文字列 “this” の全文検索を行う。

––filter

条件を指定する。 javascript など のように、 “==”, “<=“, “>” などを使うことができる。 AND, OR は &&, || で表現できる。

––drilldown

バージョン4.0.1 の資料を見るかぎり、 drilldown に指定したそれぞれのカラムについてグループ化した結果が表示される。 column_1 と column_2 を指定していれば、 column_1 だけでグループ化した結果と、 column_2 でグループ化した結果が続けて表示される。 ORDER BY column_1, column_2 のようなことはできない。

drilldown の結果に対する件数指定(オフセットなど)は下記のように、 通常の ––sortby, ––offset, ––limit の頭に drilldown をつけて指定する。 drilldown した結果だけがほしければ、 ––limit0 を指定して出てくる通常カラムを制限する。

特殊カラム

カラム名 説明
_id 検索時に groonga が割り当てるID。
_key 主キーを格納するカラム。
_score (Oracle DB でいう ROWNUM のような) 検索結果に含まれる仮想カラム。全文検索の条件に合致するレコードほど高い数値が入る。
_nsubrecs drilldown を使った場合に、 drilldown した結果件数が格納されるカラム。 SELECT COUNT(1) FROM … に似ている。

Python で自分自身のファイル・ディレクトリ名を取得する


python のスクリプト(.py) を作って、スクリプト内で自分自身のファイル名を種痘する場合のお話です。

abc.py ファイル を実行した場合に、 abc.log のようなログファイルを作る際に使えます。

カレントディレクトリを起点にしたファイル名

ここからは、次のようにしてモジュールを読み込む必要があります。

ディレクトリを除いたファイル名

ディレクトリに対してこれを実行すると、ディレクトリ名が取得できます。

ファイル名(拡張子なし)

“.” で文字列を区切ってリストにします。 “a.b.c” のように “.” が2つ以上ある場合は 最後の “.” で区切って (“a.b”, “c”) を返します。

path.basename(__file__)[0] をファイルの存在するディレクトリで実行した場合も同じ結果になります。 (crontab などで実行すると思わぬ結果になります。 “a/b.py” が (“a/b”, “.py”) になります。)

絶対パス

ディレクトリ

相対パス

絶対パス

上の相対パスを path.abspath で絶対パスにしています。


rails で sitemap を作成する gem


Rubyサイトマップ を作成する gem を紹介します。

sitemap_generator

sitemap_generator を使うと、サイトマップが簡単に作成できます。 Ruby だけでも使えます……が、ここでは Rails の上で私が使用した方法を紹介します。

使用方法

環境は次の通りです。

  • Ruby 2.0.0p451
  • Rails 4.1.0
  • sitemap_generator 5.0.2
  1. Gemfilesitemap_generator を 追加して bundle install します。
  2. rake sitemap:install を実行します。 config/sitemap.rb というファイルが作成されます。
    • このファイルに記述したサイトマップ生成スクリプトは rake sitemap:refresh によって更新されます。
    • config/sitemap.rb が作成される他は特になにも起こりません。 sitemap_generatortasks.rb を覗いてみるとよくわかります。
  3. sitemap.rb を編集します。
    • デフォルトでは ルート(“/”)へのサイトマップが3つ作成されます。 それら3つは changefreq が異なりますが、いらないので削除します。 コード内に SitemapGenerator::Sitemap.include_root = false を記述します。
    • SitemapGenerator::Sitemap.create_index = true を記述して、サイトマップのリストを作成します。
    • サイトマップの作成をpingで通知します。 Google と Bing に届くように設定します。 Yahoo! は Google と検索エンジンが同じであるため Yahoo! の設定は必要ありません。
    • lastmod, priority, changefreq などを出力したくない場合には、それぞれの値に nil を設定します。
    • rake sitemap:refresh が実効されるように、 crontab に記述します。

javascript でテーブルをソートする方法


javascript を使ってテーブルをソートすることになった。ドットインストールを見ると複数項目でソートする方法まで載っている・・・が、これを一般化してどんなテーブルでもソートできるようにするにはどうするか考えてみた。公開されているライブラリもあるんですけどね。

続きを読む javascript でテーブルをソートする方法