[ubuntu]lsの色
めも。
lsの色の設定は環境変数LS_COLORSで確認できます。
$ echo $LS_COLORS rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
コロンでつなげています。
rs=0など、ファイルの種類によって指定しているものと、
*.zip=01;31など、拡張子によって指定しているものがあります。
右辺の数字はエスケープシーケンスで、色やBOLDなどを指定します。
例えば、上記*.zip=01;31は明るい赤。確かに、zipファイルはそうなってます。
以下のリンク先にまとめられています。
rsなどのファイルの種類もあります。
http://www.ayu.ics.keio.ac.jp/~mukai/tips/ls.html
[scala]ツールチップで画像を表示
AsanFileBrowser で画像ファイルのときにはその画像をツールチップで表示できないか試してみました。
できました。
override def getToolTipText(event:MouseEvent):String = { // マウス位置から、ファイルを特定 val file = ... // もし画像ファイルなら if (...) { <html><img src={file.toURI.toString} /></html>.toString } else { file.getName // そうでないならファイル名を表示 } }
ツールチップにはHTMLが使えるのですが、それをXMLで作って、最後に文字列にしてます。
アイコンなど、小さい画像を想定しています。
大きい画像は縮小するなどの工夫が必要でしょう。
pp(PrettyPrinter;整形)
ScalaはXMLを言語レベルでサポートしているが、出力する際には
以下のPrettyPrinterを使うと、いい感じに出力してくれる。
import scala.xml.PrettyPrinter val xml:Node = ... // この場合、横80文字に収まるように、インデント=2で整形する。 val text = new PrettyPrinter(80, 2).format(xml) println(text)
この、PrettyPrinterだけど、最初にその単語を聞いたのはVDMだった。
pp
この単語。
どちらかというと企業側のオブジェクト指向陣営ではなく、研究側の関数型陣営の文化ではないだろうか?
上記をちょっとスタイルを変えてみた
import java.awt.image.BufferedImage import java.lang.reflect.Modifier._ /** 画像のタイプを文字列で返す。ex.Some("TYPE_4BYTE_ABGR") */ def getImageTypeName(image:BufferedImage):Option[String] = // BufferedImageの宣言フィールドを取得する。 classOf[BufferedImage].getDeclaredFields. // 定数フィールドのみを通す filter {_.getModifiers == (PUBLIC | STATIC | FINAL)}. // その値か? find {_.get(image) == image.getType}. // あれば、それを名前で返す map {_.getName}
波カッコが1行で済めばイイ感じになるけれど、複数行になると扱いに困ります。
どういうスタイルがいいんだろ?
まぁ、「もっと他人のソースを読め!」ということだろう。
上記をもう少し関数型っぽくしてみました。
import java.awt.image.BufferedImage import java.lang.reflect.Modifier._ /** 画像のタイプを文字列で返す。ex.Some("TYPE_4BYTE_ABGR") */ def getImageTypeName(image:BufferedImage):Option[String] = { // BufferedImageの宣言フィールドを取得する。 classOf[BufferedImage].getDeclaredFields.filter{ // 定数フィールドのみを通す _.getModifiers == (PUBLIC | STATIC | FINAL) }.find{ // その値か? _.get(image) == image.getType }.map{ // あれば、それを名前で返す _.getName } }
あまりやりすぎると、デバッグしにくくなり、未来の自分も理解に苦しんだりするんです。
ある程度「息つぎ」がある方が私好みです。
[scala]画像のタイプを文字列で返す。
BufferedImageのgetType()だと、6などの数値で返しますが、
そうではなく、"TYPE_4BYTE_ABGR"などの文字列が欲しかったので作りました。
やっていることは簡単。
Javaのリフレクションを使ってます。
BufferedImageの定数フィールドのうち、該当する値のフィールドを探しています。
最後にその名前を取得して返します。
import java.awt.image.BufferedImage import java.lang.reflect.Modifier /** 画像のタイプを文字列で返す。ex.Some("TYPE_4BYTE_ABGR") */ def getImageTypeName(image:BufferedImage):Option[String] = { // BufferedImageの定数フィールドを取得する。 val flds = classOf[BufferedImage].getDeclaredFields.filter{ f => f.getModifiers == (Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL) } flds.find{f => f.get(image) == image.getType} match { case Some(f) => Some(f.getName) case None => None } }
吉原由香里vs内田修平 ヒカルの碁の梅沢由香里先生
http://www.youtube.com/watch?v=gcnBLej9xKk&feature=related
これはスゴイ!
最初は由香里先生なので観ていたけれど、
解説の人がわかりやすく、お互いの手の意味、心理がよくわかる。
そして、最後の鬼手。
しびれたー。