windowsXP ショートカット

今回は自分が便利だな〜と思ったものとか、日ごろよく使っているショートカットを書いてみた。
他にも「コレすげぇぜ!」というあなただけが知っているショートカットがありましたら、教えてください。

ブラウザで便利なのを、紹介


  • CTRL+E
    • googleとか設定している検索サイトで検索するフォームに行く
  • CTRL+F
    • ページ内検索をするフォームに行く
  • ALT+D, CTRL+L
    • URLを入力するところに行く

大体のブラウザで使えるから便利^o^/

何となく使える子達、紹介

  • ALT+F4
    • 選択中のアプリを終了させる。
      • 連打しているとウィンドウズ終了しますか?になる。
  • ALT+PrintScreen
    • 選択中のアプリのスクリーンショットが撮れる。
      • ペイントアプリとかにCTRL+Vとかでペーストすべし。
  • ファイルを選択してF2
    • 名前を変更出来る。
  • windowsキー+R
    • ファイル名を指定して実行のダイアログが出せる
  • windowsキー+L
    • アカウントにパスワードを設定している場合スクリーンロック
  • windowsキー+D
    • デスクトップの表示
      • 何もかまわずに再度押すと、押す前の状態に戻る。
        • 何か押していると戻らない。
  • windowsキー+E

イタズラに使えそうな子達?、紹介

  • ファイルを選択してF2、ALT+0160
    • ファイル名を半角空白文字にする事が出来る
      • あとは、プロパティを選んで、アイコンの変更から白い部分をクリックするとなかなか見つけられないファイルorフォルダの完成
    • ASCIIコードを流しているだけです。ALT+0255とするとyの頭にチョンチョンがついたような文字になります。

ま、所詮すぐ見つかるし、日本だと全角の空白があるんだけどね(笑

オマケ

泣ける(↑の実行結果は↓の続きへ)

続きを読む

IronRuby 2回目 Hello GUI

『.NETでRuby開発を体験してみよう』を見ながらやってみた。(@ITの記事)
C#/VB開発者向けにも書かれているらしいので、Rubyを触っている時間が長い人向けに少しだけ書き直した。
結果は同じ。

require 'mscorlib'
require 'System.Windows.Forms'
require 'System.Drawing'

class RubyForm < System::Windows::Forms::Form

  def initialize
    self.text = "Windows Form on IronRuby"
    btn = System::Windows::Forms::Button.new
    btn.location = System::Drawing::Point.new(50, 50)
    btn.text = "Click Me!"

    btn.click{|sender, e|
      System::Windows::Forms::MessageBox.show("Hello World!")
    }
    
    controls.add(btn)
  end

end

System::Windows::Forms::Application.run(RubyForm.new) 
  • self.textに日本語を指定するのは記事の通りダメっぽい。
  • initializeがrunすると呼ばれるっぽい。
  • ボタンオブジェクトを作って、イベントを登録していって、ラストにcontrolsにaddするらしい
    • イベントの登録はブロックを渡せばいいだけっぽいので、移動させた。
  • ブロックの中のsenderやeをputs inspectで覗いたら以下だった
System.Windows.Forms.Button, Text: Click Me!
System.Windows.Forms.MouseEventArgs
    • textはウィンドウの帯部分に出るものと思ったけど、実は名前か??
    • eはイベントっぽいね。

とりあえず、System::Windows::Formus::Application.RunにSystem::Windows::Forms::Formクラスを渡せばいいらしい!!

なんとなく、tkに似てるな〜と思った。

眠くなってきたので、コードをまじめに追うのは後日。
この日記の修正もその際に!!

オマケ

インストールディレクトリにあるファイルを開いてみた

続きを読む

IronRubyにも入門してみた

久しぶりに更新
IronRubyはRuby1.8.6をターゲットにMSさんが作ってみたそうで、少し前に1.0が出たところ。
SilverLightや.NETが叩けるらしい。
詳しくは知らない。

注意:IronRubyの基本(入門)が知りたくて、このページに辿り付いた方へ
IronRuby公式サイトのチュートリアルをご覧下さい。
ただし、上記チュートリアルはInternetExplorer8, FireFox3.6.3では上手く動作しませんでした。Safari4, Opera10.53では上手く動作しましたので、同じ様に「動作しないぞ?」となった方はブラウザを変えてお試しください。
以上、注意書きでした。(2010/5/25 記述)

まとめ

  • IronRuby公式からIronRubyインストーラをDLしてきてクリックしていくだけ
    • この際.NET4.0をインストールしていないならば、IronRubyのDownloadの項目から辿れるのでインストールしておく
      • ただし、インストール後、OS再起動が必要となる
  • 一般的なRubyirbコマンドはir
  • 一般的なRubyrubyコマンドはir
インストール作業

IronRuby公式のDownloadからダウンロードしてきて、インストールディレクトリ以外はぽちぽちと押しただけの簡単なお仕事です。


・・・次は何をすればいいの?


コマンドプロンプトでとりあえずirを叩いてみると・・・

To run this appliction, you first must install one of the following versions of the .NET Framework v4.0.30319
Contact your application publisher for instructions about obtaining the appropriate version of the .NET Framework.

HAHA。日本語でOK!!

というわけで、MSから.NETFramework4のインストールを始めてみた。

・・・はて。なぜか、インストールディレクトリの選択もなくインストールが始まった予感。
・・・OSの再起動だと?!MS爆発汁!!



どうもこんばんは。
久しぶりの更新という事でIronRubyにも手をだしてみました。
インストールまではしているので、さっそくコマンドプロンプトからirを叩いてみます。

C:\>ir
IronRuby 1.0.0.0 on .NET 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.

>>> 5.times do puts "go to the hell !!" end
go to the hell !!
go to the hell !!
go to the hell !!
go to the hell !!
go to the hell !!
=> 5
>>>exit

ぁ。上手く地獄に逝けそうですね。
ちなみにファイル指定する場合もirなのかもしれませんね。

puts "hello"

上記をカレントディレクトリにhello.rbと保存しておいて

C:\>ir hello.rb
hello

行けてそう。

オマケ

Ruby 2.0 modeだと・・・!?

続きを読む

Hello Worldを難読化させたい。1回目

風邪こじらせて死んでました。
Rubyの事は絶対触れないと決めていたのですが、なかなか更新できなくなるので、この縛りは止めます。
今回はリハビリ&気晴らしです。

Hello World

以下を読み難くしたいです。

print 'Hello World'
適当にやってみた
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100].each{|i|
  print '%c'.send('%', i)
}
  • 文字を数字に直しただけです。

眠いので続きは明日。


追記:2010/04/05

続きを読む

erlang 第6回 リスト内包表記

リスト内包表記

  • map等を使わずにリストを作り出す方法
  • [ F(X) || X <- List]と書く

簡単に使ってみる。

1> List = [1,4,6,8,19,20.0].
[1,4,6,8,19,20.0]
2> [X * 2 || X <- List].
[2,8,12,16,38,40.0]
3> List2 = [{hoge, 23}, {hoge, 50} | List].
[{hoge,23},{hoge,50},1,4,6,8,19,20.0]
4> [X * 10 || {hoge, X} <- List2].
[230,500]

[ F(X) || X <- List]は一般化すると[ 式 || 限定子1, 限定子2, ...]となる

  • 限定子:qualifier
    • ジェネレータもしくはフィルタが指定できる
    • X <- Listがジェネレータ
5> [X * 10 || {hoge, X} <- List2, X > 300].

6> [X * 10 || {hoge, X} <- List2, X > 30].
[500]
7> [X * 10 || {hoge, X} <- List2, X > 30, X < 60].
[500]
8> [X * 10 || {hoge, X} <- List2, X > 30, X < 40].

おぉ〜これは読みやすい。
今回は少なめ。ビル酔いでしんどいので。
spawn遠いなぁ・・・共有ETSテーブルとか、共有DETSテーブルとか、wktkするのに。

オマケ

この時に作ったcalculationを使ってみた。

続きを読む

erlang 第5回 fun, 高階関数

少しテンパっていたので、お勉強も滞っていました。
今回から、第何回なのかを書いてみました。
というわけで、第5回です。

fun

  • 無名関数

さっそく簡単に書いてみる

1> TAX = fun(X) -> 1.05 * X end.
#Fun
2> TAX(1000).
1050.0
3> TAX(10, 30).
 ** exception error: interpreted function with arity 1 called with two arguments
  • 今の消費税を計算する関数
  • funはendで終わる
  • 引数の数を間違えるとエラーになる
  • funを返す関数や引数に取る関数の事を高階関数と呼ぶ

ここが肝らしい

funを引数に持つ

4> List = [100, 98, 298].
[100,98,298]
5> lists:map(TAX, List).
[105.0,102.9,312.90000000000003]
  • よく使うらしい標準ライブラリのlists:map
  • 他にはlists:filter等をよく使うらしい
    • lists:filter(fun, list)とした時
      • listの要素でfunを処理し、trueになるもののリストを返す

しかし、5行目の子。そうだよね。普段、数値演算系のプログラム組んでないから忘れかけてた(汗
精度(でしたよね?)には注意しましょう。
1.05を2進数で表現するには、ビットが無限に必要で、仕方なくある程度で丸めて、それに掛け算をした結果、桁があふれて・・・的なのだったハズです。(間違っている場合は、ご指摘ヨロシクです。話がそれるので、詳しく知りたい場合はggr)
1.5にしておけば・・・いやいやそんな消費税嫌。

funを返す関数

  • デバッグが難しくなりやすいため、一般的には使われるケースが低めらしい
1> Gkbr = fun(Tax) -> (fun(X) -> Tax * X end) end.
#Fun
2> Now = Gkbr(1.05).
#Fun
3> Future = Gkbr(1.5).
#Fun
4> Now(100).
105.0
5> Future(100).
150.0
  • 消費税を気軽に変更する処理

泣けるなぁ・・・。


spawnとか使いたいなぁ・・・。
冷静に振り返ると桁落ちだらけだな。

erlang モジュール

見事な3日坊主。
予想通り。
前回書いた話ですが、数字は自動で入るから以下で良いんですね。

 *[タグ1][タグ2]タイトル

そもそも、「保存する」ボタンの横の空白フォームはシカトで良かったっぽい。

モジュール

前置き
  • 全ての関数が属する
  • erlという拡張子のファイルに入れておく
  • コンパイル後のファイルの拡張子はbeam
やってみた
  • calculation.erl
-module(calculation).
-export([calc/1]).
calc({add, ARG1, ARG2}) -> ARG1 + ARG2;
calc({sub, ARG1, ARG2}) -> ARG1 - ARG2.
  • calc関数は2節
    • つなぎ目はセミコロン
  • 各節には、ヘッドとボディがある
  • パターンは関数定義の順に照合される
    • ヘッドそれぞれと照合し、マッチすればボディが実行される

上記コードをコンパイルして使う

1> c(calculation).
{ok,calculation}
2> calculation:calc({add, 5, 9}).
14
3> calculation:calc({sub, 10, 200}).
 -190
  • c(calculation)でcalculation.erlファイルをコンパイルしている
    • 一個上のフォルダに置いている場合等は適宜変更
      • 例:c("../calculation")
気持ち複雑なコードにしてみた
-module(calculation).
-export([calc/1]).
calc({sum, ARG1}) ->
  if
    (ARG1 == 0) ->
      0;
    true ->
      ARG1 + calc({sum, ARG1 - 1})
  end.
  • if文は、ガードがtrueになるまでガードの評価を繰り返す
    • 上記例では、「ARG1 == 0」「true」がガード
  • if文のガードは、少なくとも1つはtrueに評価されなければ、例外が起きる
    • 最後のガードをtrueにしている事が多い
  • "="ではなくて、ガードの場合は"=="
    • "="は照合。"=="は比較
      • erlangにおける"=="は整数or浮動少数の比較の場合のみにしか使う事がなく、コードで出てきたら疑う場所
        • "=:="を使う事が多い。というかそれさえ使っていればイイ
  • ガードはtrueかfalseを返さなければならないので、照合はダメだと思われる
    • この辺りは、そのうち詳しく見る

正直、めっさハマった。(笑

moduleアノテーション

-module(calculation)
  • モジュール宣言
  • calculationのようにアトムの必要がある
  • ファイル最初に記述する必要がある

exportアノテーション

-export([calc/1])
  • モジュール外から呼ぶために必要
  • [calc/1]の1をアリティと言う
    • 要するに引数の数
    • erlangでは慣例的に補助関数に用いるものを同名、異なるアリティにする
    • 補助関数の例は、その内出ると思うので、今回は気にしない
  • 複数書く場合は以下
-export([calc/1, hoge/2])
    • この時、hoge/1は外部から呼べない

今後も、ゆるゆると書いていきます。
というわけで、皆様も色々( `д´)†~~~beamしてみてください。

おまけ

今日のコンパイルエラー

続きを読む