2014年7月19日土曜日

Ubuntu 12.04 LTS に NetBeans IDE 8.0 をインストールする

1.NetBeans IDE のダウンロード

下記 URL から NetBeans IDE をダウンロードします。

NetBeans IDE 8.0 ダウンロード

https://netbeans.org/downloads/index.html

2.NetBeans IDE 8.0 のインストール

コンソールでダウンロードした NetBeans のあるフォルダに移動し、下記コマンドを実行します。

bash netbeans-8.0-linux.sh

インストーラーの GUI が表示されるので、開発言語などを選択してインストールを進めます。

2014年7月10日木曜日

dpkg コマンドでファイルの所属パッケージを確認する

lamp の apache2 がどこにインストールされているかを確認したくて調べたところ、
dpkg コマンドでパッケージの情報確認ができました。

dpkg -s apache2


【 dpkg 】 debパッケージのインストール・アンインストールを行う
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230747/

Wikipedia - dpkg
http://ja.wikipedia.org/wiki/Dpkg

2014年7月8日火曜日

cp コマンドでファイルのコピー

ファイルのコピーには cp コマンドを利用します。

cp index.html index2.html


【 cp 】 ファイルやディレクトリをコピーする
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230734/

2014年7月5日土曜日

PC に VM 環境を作るなら Portable-VirtualBox

Windows 上に Linux(Lubuntu)を入れようと思い、ポータブル VM 環境を作れるか調べたところVirtualBox portable を見つけました。

Portable-VirtualBox
http://www.vbox.me/

以前 Vista を入れていた PC に Ubuntu を入れて使っていましたが、Ubuntu を扱うには少し非力すぎました。でも Linux を使いたい・・・ということでメイン PC の VM として Lubuntu を入れることにします!

2014年7月4日金曜日

jQuery.ajax メソッドで ASP.NET ポストバックを行う


jQuery の ajax メソッドを利用して ASP.NET のサーバーサイドメソッドを呼び出してみましょう。

ASP.NET のサーバーサイドイベントの定義では public と static 修飾子を付け、WebMethod 属性も設定しておきます。WebMethod 属性は初めて使いました(^_^;) MSDN を見たところ、ajax 通信で利用される属性のようです。非同期通信でサーバーサイドイベントを呼び出しているので、サーバーサイドでページの再生成を行わないため static にしておいて一度生成したメソッドを使い続けるのかなと思います。

クライアントサイド
$(function () {
    $("#button1").click(function () {
        $.ajax({
            type: "POST",
            url: "Default.aspx/ajaxMethod",
            contentType: "application/json; charset=utf-8",
            data: "{'val1':'23', 'val2' : '35'}",
            success: function (result) {
                console.log(result.d);
            }
        });
    });
});
...
<input id="button1" type="button" value="button" />
サーバーサイド
[WebMethod]
public static int ajaxMethod(int val1, int val2)
{
    Debug.WriteLine("ajaxMethod");

    return val1 + val2;
}


参考になったリンクたち

連載ASP.NET AJAXを理解する 第2回 ASP.NET AJAXを使いこなす
http://www.atmarkit.co.jp/fdotnet/aspnetajax/aspnetajax02/aspnetajax02_04.html

WebMethodAttribute クラス
http://msdn.microsoft.com/ja-jp/library/system.web.services.webmethodattribute%28v=vs.100%29.aspx

WebMethod 属性を使用する
http://msdn.microsoft.com/ja-jp/library/byxd99hx%28v=vs.90%29.aspx

jQuery.ajax() For ASP.NET Developers
http://sett.ociweb.com/sett/settJun2013.html

ASP.Net Ajax and Postback
http://stackoverflow.com/questions/20367995/asp-net-ajax-and-postback

2014年7月3日木曜日

Ubuntu 12.04 LTS に LAMP 環境を構築

NetBeans のウェブサイトにある、「Linux UbuntuでのPHP開発環境の構成」を参考に PHP 開発環境を構築していきます。

Linux UbuntuでのPHP開発環境の構成
https://netbeans.org/kb/docs/php/configure-php-environment-ubuntu_ja.html

LAMP 環境を構築しようと下記コマンドを入力したところ、「tasksel コマンドが見つかりません」というメッセージが出ましたので、早速 tasksel をインストールしました。

sudo tasksel install lamp-server
sudo tasksel: コマンドが見つかりません

下記コマンドで tasksel のインストールします。

sudo apt-get install tasksel

tasksel のインストールが終わったら、再度下記コマンドで LAMP をインストールします。

sudo tasksel install lamp-server 


LAMP のインストールが終了したら、アプリケーションのバージョンを確認していきます。mysql のバージョン確認は大文字の V を引数にしました。

apache2 -v
php -v
mysql -V

2014年7月2日水曜日

Ubuntu 12.04 LTS に Java7 をインストール

Ubuntu 12.04 に Java7 をインストールしました。
下記ブログを参考にさせてもらいました。あ~ら簡単にインストールが完了。

Ubuntu 12.04にOracle Java 7を簡単にインストールした。 
http://radi0ant.hatenablog.com/entry/2012/05/04/035243


1.下記コマンドで Java をインストールします。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer

2.インストールできているかを確認します。
$ java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) Client VM (build 24.60-b09, mixed mode)
$ javac -version
javac 1.7.0_60

2014年7月1日火曜日

Ubuntu 12.04 LTS に Snipping Tool の Shutter をインストール

Windows7 から提供されているスクリーンショットを撮る SnippingTool と同じようなツールが Ubuntu にもありました。

Shutter for Ubuntu similar to Windows Snipping Tool
http://www.onlyubuntu.com/2014/01/shutter-for-ubuntu-similar-to-windows-snipping-tool.html

インストールコマンド
sudo apt-get install shutter

2014年6月27日金曜日

jQuery eq によるエレメントの取得

複数のエレメントが存在する中から特定のものを取得する際には eq() メソッドが便利です。
例えば複数のボタンタグから2番目の要素を取得し、背景色を変更する場合下記のように記述します。
eq の引数は 0 スタートのインデクサを指定します。

Script
$(function () {
    // 2つ目のボタンの背景色と前景色を変更
    $("input:button").eq(1).css({"background-color":"navy", "color":"white"});
});

HTML
<input type="button" value="button" />
<input type="button" value="button" />
<input type="button" value="button" />
<input type="button" value="button" />
<input type="button" value="button" /> 


実行結果

2014年6月26日木曜日

jQuery nth-child による子エレメント取得

jQuery の nth-child を利用してエレメント内に含まれる子エレメントを取得する方法です。

構文:
$(".selector:nth-child(index/even/odd/equation)")


nth-child では引数にインデックス、奇数、偶数、等間隔で子エレメントを取得することができますが、ここでは簡単にインデックス指定の例を紹介します。
例えば HTML Table があり、1列目の全エレメントを取得する場合、$("table tbody tr td:nth-child(1)") となります。

$(function () {
    $("#button1").click(function () {
        // 1列目全てのセルにテキストを追加
        $("table tbody tr td:nth-child(1)").append("<span> - 1st!</span>");
    })
});

もう少し条件を複雑にして、2列目1行目のセルのみを取得する場合、nth-child を tr と td それぞれに指定します。
$(function () {
    $("#button1").click(function () {
        // 2列目1行目のセルにテキストを追加
        $("table tbody tr:nth-child(1) td:nth-child(2)").append("<span> - target!</span>");
    })
});

例として使う HTML Table のレイアウト
<table style="width:300px; border-style:solid;" border="1">
    <tr>
        <td>1-1</td>
        <td>1-2</td>
    </tr>
    <tr>
        <td>2-1</td>
        <td>2-2</td>
    </tr>
    <tr>
        <td>3-1</td>
        <td>3-2</td>
    </tr>
</table>
<input id="button1" type="button" value="click" />


:nth-child() Selector
http://api.jquery.com/nth-child-selector/

2014年6月25日水曜日

ASP.NET FindControl で テンプレート内のコントロールを探し出す


ASP.NET のテンプレート機能では、サーバーサイドコントロールの定義を1つ用意しておくことで生成するデータ件数分コントロールを生成してくれます。繰り返し表示されるテーブルのレコードにユーザーコントロールを埋め込んだりするのにとても便利です。例えばこんな感じで TextBox を Repeater の ItemTemplate に1つ用意しておけば、バインドデータの件数分 TextBox を生成してくれます。

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:TextBox ID="TextBox1" runat="server" Text="<%# Container.DataItem %>"></asp:TextBox>
    </ItemTemplate>
</asp:Repeater>

データをバインドすると、TextBox が繰り返し表示されます。
protected void Page_Load(object sender, EventArgs e)
{
    List<string> values = new List<string>();

    values.Add("アイ");
    values.Add("マイ");
    values.Add("ミー");
    values.Add("マイン");

    this.Repeater1.DataSource = values;
    this.Repeater1.DataBind();
}




ただ、テンプレート内に表示されるコントロールのうち、特定のものにアクセスする際に困ることがあります。例えば、特定の TextBox にフォーカスを設定するシナリオを考えてみましょう。単独の TextBox コントロールのようにサーバーサイドで単純に TextBox1.Focus() と指定することができません。そもそもこの例では TextBox1 を元に生成されたコントロールが4つもあります!
利用するテンプレートよってはサーバーサイドで Intellisense が出て、動きそうな雰囲気のものもありますが、テンプレートに配置されているサーバーサイドコントロールはこのように ASPX 設計時の ID 指定では到達することができません。実際に生成された HTML を見るとより分かるのですが、TextBox1 を元に生成された input エレメント達はそれぞれホストコントロール(ここでは Repeater)の ID と テンプレートコントロール(TextBox)の ID を組み合わせた一意の値が割り当てられています。

<input name="Repeater1$ctl00$TextBox1" type="text" value="アイ" id="Repeater1_TextBox1_0" /><br />

<input name="Repeater1$ctl01$TextBox1" type="text" value="マイ" id="Repeater1_TextBox1_1" /><br />

<input name="Repeater1$ctl02$TextBox1" type="text" value="ミー" id="Repeater1_TextBox1_2" /><br />

<input name="Repeater1$ctl03$TextBox1" type="text" value="マイン" id="Repeater1_TextBox1_3" /><br />

直接 TextBox1 を ID 指定して TextBox にアクセスできないのですが、ASP.NET のテンプレートが提供している FindControl メソッドを利用することでこの ID の差異を吸収してテンプレート内のコントロールを設計時の ID で指定して取得することができます。

protected void Button1_Click(object sender, EventArgs e)
    {
        foreach(RepeaterItem item in this.Repeater1.Items)
        {
            TextBox tbox = item.FindControl("TextBox1") as TextBox;

            if (tbox != null)
            {
                Debug.WriteLine(item.ItemIndex + 1 + " つ目の値: " + tbox.Text);

                if (item.ItemIndex == 1)
                {
                    tbox.Focus();
                }
            }
        }
    }

2014年6月23日月曜日

コードビハインドの Focus メソッドと WebForm_AutoFocus メソッド

ASP.NET のコードビハインドで下記コードを呼び出すと、出力結果の TextBox にはフォーカスが設定されています。

protected void Page_Load(object sender, EventArgs e)
{
    this.TextBox1.Focus();
}


これはサーバーサイドでフォーカスを直接当てているのではなく、次の工程を経ているようです。

1.サーバーサイドでフォーカスを行うための JavaScript を生成
2.クライアントサイドで JavaScript を読み込み
3.JavaScript の呼び出し


出力されている HTML を見てみると、WebForm_AutoFocus メソッドが ASP.NET によって自動生成されています。
<script type="text/javascript">
//<![CDATA[
WebForm_AutoFocus('TextBox1');//]]>
</script>

WebForm_AutoFocus は ASP.NET が生成する axd の中に記述がありました。確かにこの中を読むと引数で渡されたコントロールにフォーカスを設定しています。

function WebForm_AutoFocus(focusId) {
    var targetControl;
    if (__nonMSDOMBrowser) {
        targetControl = document.getElementById(focusId);
    }
    else {
        targetControl = document.all[focusId];
    }
    var focused = targetControl;
    if (targetControl && (!WebForm_CanFocus(targetControl)) ) {
        focused = WebForm_FindFirstFocusableChild(targetControl);
    }
    if (focused) {
        try {
            focused.focus();
            if (__nonMSDOMBrowser) {
                focused.scrollIntoView(false);
            }
            if (window.__smartNav) {
                window.__smartNav.ae = focused.id;
            }
        }
        catch (e) {
        }
    }
}

Client-Side Enhancements in ASP.NET 2.0
http://aspnet.4guysfromrolla.com/articles/111506-1.aspx

2014年6月22日日曜日

Epson PC の NumLock が初期状態で ON になっている場合の対策

Epson の PC(Endeavor)を購入したのですが、何かと使いにくいことが多いですね。キーボードが押しにくかったり、ハードウェア側で Wifi の ON OFF 切り替えができなかったり・・・。
NumLock に関しても、初動時に ON になってたり、OFF になってたりと動作が不安定です。そこでレジストリから起動時の NumLock の状態を OFF にする方法を調べました。


HKEY_USERS\.DEFAULT\Control Panel\Keyboard を開いて、InitialKeyboardIndicators を探します。





2147483648 → 0 に変更することでデフォルトで NumLock が OFF になります。逆にデフォルトで NumLock を ON にしたい場合は 2 を割り当てます。