teruroom's diary

ほぼ 8歳602ヶ月‏ の てるるーむ のプログラミングダイアリー

object コレクション001 {
    def main(args:Array[String])={
        val 不変リスト1 = List(1)
        val 不変リスト2 = 2 :: 不変リスト1
        println(不変リスト2)
        val リスト1 = List( "スカラ" )
        println( リスト1(0) )
        val リスト= ""
        val リスト3 = "スカラ" :: リスト2
        val リスト4 = "じゃば" :: リスト3
        println( "リスト4=" + リスト4 )
        val マップ = Map[ String, Int ]("スカラ"->1, "じゃば"->2, "ルビー"->3 )
        println( "スカラ = " + マップ( "スカラ" ) + " , ルビー = " + マップ( "ルビー" ) )
        val タプル型1 = ( "スカラ", 10 )
        val タプル型2:Tuple2[String, Int] = ( "じゃば", 20 )
        print(タプル型1); println(タプル型2)
        val タプル型3 = ( "スカラ", 20, 70, 300 )
        println( "タプル型3 = " + タプル型3._1 + " , " + タプル型3._3)
  }
}

【実行結果】

List(2,1)
スカラ
リスト4=List(じゃば, スカラ)
スカラ = 1 , ルビー = 3
(スカラ,10)(じゃば,20)
タプル型3 = スカラ , 70

 ScalaのコードをEclipse風味で色付け装飾したのですが。うまくいきません。「 val リスト= ""」の部分は実際には「val リスト = Nil」なのです。しかし、「Nil」にはてなキーワードのリンクアンカーが勝手につきます。しかも、アンカーがそのままHTML表示されてしまいます。なぜなら、ソースコード部分部は「pre」タグで囲まれているからです。

 ちなみに使ったツールは「SyntaxHighlighter」です 。このツールでうまくソースコードを色づけ出来たと喜んだのも束の間です。

 う~ん。しかし、困りましたね。なんとかならないでしょうか?。

パターンマッチング

 ここのところScalaをさわっています。ずいぶん前にRubyを触った時にはずいぶん苦労した思い出があります。それもそのはず。Rubyは僕が長らく親しんできた静的言語ではなく、パーフェクトな動的言語なのです。

 で、Scalaはどうかというと、ベースがJVMで動く。つまりJavaバイトコードに最終的に変換されて動くのです。なので、Javaと同じ静的言語なんですよね。だから、取っ付きがとてもいい。

 しかも、ScalaJavaの様にマシン依存のプリミティブ型を持つ不完全なオブジェクト指向ではありません。言語仕様で定義されるすべてがオブジェクトなのです。つまりパーフェクトなオブジェクト指向言語なのです。その上、関数型プログラミングという新しいパラダイムの言語仕様を取り入れている。

 なので、動的言語であるRubyほど柔軟ではありませんが、Javaに比べればかなり柔軟なプログラミングが可能です。パターンマッチングもその一つ。かなり柔軟です。

 定数「誰か」をAny型としておいてあいまいなまま宣言できます。そして、この定数にどんな型が定義されてもそれをパターンマッチングできます。しかも、case文も柔軟で、case文にif文を絡めてフィルタリング出来てしまいます。なんて簡潔にわかりやすくプログラムが書けるのでしょうか。ちょっと感動です。

object パターンマッチング {
  def main(args: Array[ String] ){
    val 数字 = 777
    数字 match {
      case 111 => println( "数字 は 111 です" )
      case 777 => println( "数字 は 777 です" )
      case _ => println( "数字 は 111 または 777 以外の数字です" )
    }
    val 誰か:Any = "荻野香音"
    val 年齢 = 誰か match {
      case i:Int => println( "誰か = " + i.toString() ); 1
      case s:String => println( "誰か = " + s ); 11
      case _ => println( "その他" ); -1
    }
    println( "年齢 = " + 年齢 +" 才")
    //パターンガード
    val 値段:Any = 70
    val 評価 = 値段 match {
      case i:Int if i >= 1000 => println( "値段は 1000円 以上です" ); "1000円以上"
      case _ => println( "値段は 1000円以下です" ); "1000円以下"
    }
    println( "評価 = " + 評価 )
  }
}

【実行結果】

数字 は 777 です
誰か = 荻野香音
年齢 = 11 才
値段は 1000円以下です
評価 = 1000円以下

【覚書】Play Flamework を Scala IDE で使う方法

ここではWindows8.1 Professional 64ビットにScala IDEをインストールします。インストールしたScala IDEScalaの代表的なフレームワークであるPlay Flameworkを使える様にします。

  1. Scala IDE」を利用出来るようにします
    • 「Scala IDE」のWebサイトにアクセスします
    • <Download IDE>ボタンを押下します

      f:id:teruroom:20150211234947p:plain

    • 「Download IDE」でインストールするPCのリンクアンカーをクリックします*1

    f:id:teruroom:20150211235212p:plain

    • ダウンロードされたZIP圧縮ファイルを解凍します

    【例】scala-SDK-4.0.0-vfinal-2.11-win32.win32.x86_64.zipというファイルがダウンロードされます。f:id:teruroom:20150212000222p:plain

    • 解凍すると「eclipse」というフォルダがありますので、これを適当なフォルダに置きます。

    【例】ここではCドライブ直下の「Dev」フォルダの下に「ScalaSDKeclipse」という名前に変えて保管します。f:id:teruroom:20150212000947p:plain

  2. Scala IDE」を日本語化します

(1)以下のページにアクセスし、日本語化プラグインをダウンロードしましょう。

Pleiades - Eclipse プラグイン日本語化プラグイン

(2)このページの「最新版(履歴)」というリンクアンカーをクリックします

f:id:teruroom:20150223010612p:plain

(3)公開SubVersionのページが表示されます。このページの「pliades.zip」リンクアンカーをクリックするとダウンロード出来ます。

f:id:teruroom:20150223010732p:plain

(4)ダウンロードした「pliades.zip」を解凍しましょう

  • 以下、続きます。今日はもう眠いので寝ます。続きままた後日に書きます。

*1:「Download IDE」の横に今アクセスしているPCのOSとCPUのビット長が表示されています。下記の例では「Windows - 64bit」と表示されています

RTMPExplorer(RTMPdump)のダウンロード・使い方

 RTMPExploreというインターネットのストリーミング動画をローカルにダウンロードするツールがある。これはなかなか使えるツールだ。淡々と動画を落とし続けてくれる。黒いDOS画面ベースでダウンロードの状態を確認出来る。結構軽いのでダウンロードしながら別の作業をすることも可能だ。

 僕はこれを有料会員で利用しているpigooオンデマンドで利用している。AKIBAカルチャーズ劇場のライブ動画のアーカイブ配信があまりにもとろくて使い物にならない。具体的にはしょっちゅう読み込み中の状態になり動画再生がとまるのだ。

 でもpigooオンデマンドにはダウンロード機能が無い。DMM.comのオンデマンドアーカイブにはダウンロード機能があるのだが、なぜかpigooオンデマンドにはこれが無い。

 そこで、僕はこのRTMPExploreを使ってpigooオンデマンドをダウンロードし、FLVファイルとして再生している。再生は、Windows Media Player Classicの後継動画プレイヤーMPC-BEを使っている。

 これでpigooオンデマンドのAKIBAカルチャーズ劇場のライブ動画のアーカイブをローカル動画として普通に見ることが出来る様になった。

 使い方は以下のページに詳しくのっているので参考になると思う。

RTMPExplorer(RTMPdump)のダウンロード・使い方

PowerPoint2010で「編集する」ボタンをキーボードショートカットで押下する方法

  1. [esc]キー を押下
  2. [ctrl]+[Tab]キー を押下
  3. [Tab]キー を押下
  4. [Enter]キー を押下

僕が調べたところこれだけの操作を経ないとキーボードだけであのイエローの「編集する」ボタンを押下することは出来ない。 ちなみに、Excel2010ならばこの手順が2ステップになる。しかし、2ステップでもショートカットというにはあまりにも手順として面倒。それならいっそのことキーボードから右手を離して、マウスを1クリックした方がマシ。ということになるかもしれない。

  1. [F2]キーを押下
  2. ダイアログが表示されたら[Alt]+[E]キー を押下

文字列の先頭からある文字列まで全て削除する

^.+?ある文字

^ 行頭
. 何か一文字
+ 直前の表現の1回以上の繰り返し
? 最短一致


【変更前】

<input id="settings_zoom_factor" name="settings[zoom_factor]" type="text"  value="20">

正規表現

^.+?value="

【変更後】

20">