BUFFALO NAS Navigator2 ノートPC一台でのデータ救出

BUFFALO NAS Navigator2を使ってましたが、ファームウェアの故障とかで
使えなくなりました。

ハードディスク自体は故障していないので、データを救出しようとしたのですが
Navigator2はディスクのフォーマット形式がXFSなのでWindowsからは見ることができません。

以下、タイトル通り一台のノートPC(Windows7)で、XFSのフォーマットされたディスクから
データを救出する手順を備忘録として残しておきます。

◆必要なハードウェア
1.Windowsパソコン(当然だがデスクトップでも可)
2.SATA→USBの変換アダプタ

◆必要なOS、ソフトウェア
1.VirtualBox(仮想化ソフトウェア)・・・これについてはインストール済みとする
2.KNOPPIX(Linux OS)


◆Windows上での作業
1.KNOPPIXをダウンロードする。 http://www.rcis.aist.go.jp/project/knoppix/

2.NASから取り出したハードディスクをUSBに接続する。

3.VirtualBoxに新規の仮想マシンとしてKNOPPIXを登録する。

4.VirtualBoxの仮想マシンを右クリック -「設定」-「USB」を選択し、USB接続しているハードディスクを追加する。

5.ホストOS上に共有フォルダを作成する。

6.VirtualBoxでKNOPPIXを起動する。

◆KNOPPIX上での作業
1.左下のメニュー?ボタン-「システムツール」-「ディスク・ユーティリティ」を起動する。

2.「ディスク・ユーティリティ」画面の「マルチィヂィスクデバイス」内に
NASから取り出したハードディスクが表示されていることを確認する。

3.ハードディスクを選択し、「(ハードディスク名)を開始」を押下し
下の「ディスクをマウント」ボタンを押下する。

4.左下のメニュー?ボタン-「実行」を選択し、実行したいコマンドに「Konqueror」を入力する。

5.Konqueror上で「Network Folders」を選択する。

6.「Samba Shares」を選択する。

7.上のURL?入力欄に、接続先として
smb://(ファイルサーバのIPアドレスorホスト名)/(共有フォルダ名)を入力する。

8.NASのハードディスクから、Konquerorにフォルダをドラッグし、コピーを行う。

以上です。

ASP.NET MVC - フィルタでの認証後に任意の画面に遷移する

ASP.NET MVCには、コントローラやアクションに追加することで認証を行う
Authorizeフィルタが用意されています。

Authorizeフィルタを使用すると、認証されていないユーザーの場合はLogOn画面に遷移し
ログオンするとHome画面に遷移します。

認証が必要なページがある場合、フィルタにて認証を必須として、認証後は任意のページに
遷移させたいことが多いと思います。

以下、Authorizeフィルタの機能を拡張し、認証後に任意のページに遷移させるソースの説明です。
ASP.NET MVC 4 で実装しましたが、以前のバージョンのMVCでも使えると思います。

◆画面の流れ
1.Home画面
MvcCustomFilter_Home1

右上に「Maintain」リンクを追加しました。
このリンクをクリック時に認証を行い、ログオンしていないユーザーの場合はLogOn画面をします。

2.LogOn画面
MvcCustomFilter_LogOn

テンプレートにて作成されるLogOn画面です。
Maintainリンクより遷移した場合、ログオン後にMaintain画面に遷移するようにします。

3.Maintain画面
MvcCustomFilter_Maintain
「Maintain」と言いながら、何の変哲もない画面です(苦笑)。
まあ、例ということで・・・。


◆ソースコード
1.HomeController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcAuthentication.Util;

namespace MvcAuthentication.Controllers
{
public class HomeController : Controller
{
(中略)

[Authorize]
public ActionResult About()
{
ViewBag.Message = "Your quintessential app description page.";

return View();
}

(中略)

[CustomAuthorize(Roles = "Administrators")]
public ActionResult Maintain()
{
ViewBag.Message = "Site maintenance page.";

return View();
}
}
}

テンプレート作成時に作られるHomeControllers.csに、Maintainアクションを追加しました。
Home画面のリンククリック時に、このアクションが呼び出されます。
Maintainアクションには、今回独自に実装したCustomAuthorizeフィルタを追加しています。


2.CustomAuthorizeAttribute

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcAuthentication.Util
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true,
AllowMultiple = true)]
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
filterContext.HttpContext.Session.Add("LogOnReturnUrl",
filterContext.HttpContext.Request.RawUrl);
base.OnAuthorization(filterContext);
}

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return base.AuthorizeCore(httpContext);
}
}
}

デフォルトのAuthorizeフィルタの実装であるAuthorizeAttributeクラスを継承し
CustomAuthorizeAttributeクラスを作成しました。

フィルタ、というよりは属性のクラス名は「属性名 + Attribute」となります。
今回のフィルタは「CustomAuthorize」なので、クラス名は「CustomAuthorizeAttribute」です。

AuthorizeAttributeクラス内の認証用メソッドであるOnAuthorization()をオーバーライドし
遷移元画面のURLをセッションにセットしています。

その後はデフォルトの動きと踏襲するため、AuthorizeAttributeクラスのOnAuthorization()を
呼び出しています。


3.AccountController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using MvcAuthentication.Models;

namespace MvcAuthentication.Controllers
{

[Authorize]
public class AccountController : Controller
{

//
// GET: /Account/LogOn

[AllowAnonymous]
public ActionResult LogOn()
{
ViewBag.ReturnUrl = Session["LogOnReturnUrl"].ToString();
return ContextDependentView();
}

(中略)

//
// POST: /Account/LogOn

[AllowAnonymous]
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
if(Session["LogOnReturnUrl"].ToString() != string.Empty)
{
Session["LogOnReturnUrl"] = string.Empty;
}
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}

// If we got this far, something failed, redisplay form
return View(model);
}

(中略)
}
}

テンプレート作成時に作られるAccountControllers.csに2箇所追加しました。

1つ目は、最初のLogOn()アクション内の
ViewBag.ReturnUrl = Session["LogOnReturnUrl"].ToString();
です。
セッションより取得した遷移先のURLをViewBagに設定します。

2つ目は、LogOn(LogOnModel model, string returnUrl) アクション内の

if(Session["LogOnReturnUrl"].ToString() != string.Empty)
{
Session["LogOnReturnUrl"] = string.Empty;
}

です。
returnUrlで指定されたURLに遷移する直前にセッション内のURLをクリアします。

これら以外はデフォルトのロジックで、returnUrlがある場合はそこに遷移するようになっています。
後はLogOn時に、returnUrlに遷移先のURLが渡るようにするだけです。


4.LogOn.cshtml

(中略)
@using (Html.BeginForm((string)ViewBag.FormAction, "Account", FormMethod.Post)) {
<fieldset>
<legend>Log On Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</li>
<li>
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" })
</li>
@Html.Hidden("returnUrl", (string)ViewBag.ReturnUrl)
</ol>
<input type="submit" value="Log On" title="Log On" />
</fieldset>
<p>
@Html.ActionLink("Register", "Register") if you don't have an account.
</p>
}

これもテンプレート作成時に作られるLogOn.cshtmlです。
遷移先のURLをLogOnアクションに渡すため、以下の記述でHiddenにURLをセットしています。

@Html.Hidden("returnUrl", (string)ViewBag.ReturnUrl)



以上です。
実際の開発ではログオン画面などは独自に作るとは思いますが、コントローラ内で
ログオン後の遷移先を指定したくない場合などに参考にしてください。

最後に、今回参考にしたサイトのURLを載せておきます。
ASP.NET MVC RedirectUrl on Login

F#の環境構築

F#に遅ればせながら手を出してみました。
きっかけは、以下の記事です。
F#で初めての関数型プログラミング

この記事での環境はコンソールベースですが、VisualStudio上でデバッグ実行して
ステップイン等をしたいという方もいると思います。
有償版のVisualStudio2010のユーザーは問題ないのですが、Express版の場合は
自分で実行環境を構築しないといけません。
まあ、ググればすぐに出てくるし、非常に簡単ですが・・・。

ということで、VisualStudio 2010 ExpressでのF#の環境構築からデバッグ実行するまでの手順です。

◆インストール
1.Visual Studio 2010 shell integrated mode
Microsoft Visual Studio 2010 Shell (Integrated) 再頒布可能パッケージ
をリンクからダウンロードしてインストールします。

2.F#本体
F# をリンクからダウンロードしてインストールします。
.msiの方が楽でいいでしょう。

◆プロジェクトの作成からデバッグ実行まで
1.Visual Studio 2010 を起動。
2.「ファイル」-「新規作成」で「新しいプロジェクト」ウィンドウを開く。
3.「F# Application」を選択し、C#などと同じやり方でプロジェクトを作成する。
FSharp_createProject
4.あとはC#などと同様の手順で、開始、ブレークポイントの設定などができます。

以上です。


RailsInstallerでのアップデート

つい先日、RailsInstallerを使用してRoRの環境を作ったばかりでしたが
またバージョンアップしていました。

RailsInstaller より最新版をダウンロードし、単純に起動したのですが、バージョンアップできませんでした。
一度、インストール済みのRoR関連のものを削除してからでないとバージョンアップできないようです。

以下、Windows7でRailsInstallerを使い、バージョンアップする手順です。

1.「プログラムと機能」よりRailsInstallerを選択し、アンインストール。
2.Pathより、RailsInstaller関連をパスを削除する。
3.RailsInstallerによりインストールされたフォルダ(デフォルトはC:\RailsInstaller)を削除する。
4.自分はここでOSを再起動。
5.新しく取得したRailsInstallerを起動し、あとはウィザードに従う。
6.「rails -v」「ruby -v」などをコマンドプロンプトで叩き、バージョンを確認する。

Ruby on Rails GuidesはRails 3.2を対象としているので、これから始めたい人は参考にしてみてください。

以上です。

「Ruby on Rails 3.0 日記」をやってみた

Ruby on Railsに興味を持ち、まずは「写経」ということで Ruby on Rails 3.0 日記 を写経してみました。
以下にサイトとRoRについての感想などを、自分のための備忘録を兼ねて書きます。


◆サイトとRoRについての感想
Ruby on Rails 3.0 日記 についてですが
・Rails3を使用したデータベースへのCRUD
・モデル、ビュー、コントローラの作成
・bundleによるインストール
等を一通り網羅しており、日本語で、サクっとRoRを体験してみるのにいいサイトだと思います。

Railsのコマンドにてテーブルやモデル、ビューが作成できることは、既にPlay frameworkで経験しているので
そんなに驚きは無いですが、重要なポイントだと思います。
(まあ、Play frameworkの方がRailsの影響を受けているのですが・・・)

またRubyの言語としての感想ですが、現代的なオブジェクト指向のプログラムを書くのに
非常に書きやすいという印象を持ちました。
例えばクラス内のメンバ変数の定義を、変数名に@を付ける事で可能なことなどです。


◆ビヘイビア駆動開発
サイト内で『データ構造を決める前にユーザーインターフェースを実装すべしという考え方は
Outside-In と呼ばれ、「ビヘイビア駆動開発」の大原則の1つです。
外側(ユーザーインターフェース)から先に作った方が「要求仕様」に沿った
自然な設計を持つアプリケーションに仕上がりやすい、と考えられています』と書かれていました。
RoRとは直接関係はないですが、アジャイルに開発を進めていく上では大切な考え方だと思います。


◆自分の環境に合わせて変更した点
少し前(2010年)に書かれたサイトであるため、自分の環境に合わせて変更して写経して箇所がありました。
自分の環境は、Ruby 1.9.2、Rails 3.1.1で以前の記事で構築した環境です。

1.publicフォルダ
アプリフォルダ/publicをアプリフォルダ/app/assetsに読み替え。

2.jquery-ujsの追加インストール
ページネーションを使うのにjquery-ujsをインストールする必要がありました。
手順としては、
・Gemfileに「gem 'jquery-rails', '>= 1.0.12'」を追加
・コマンドプロンプトで「bundle install」を実行
となります。


以上です。次はhttp://guides.rubyonrails.org/の写経かな。
プロフィール

Author:UnderSourceCode
都内で働くプログラマ。主に業務系のアプリ開発をやってます。


本を読むだけでは理解できず、
手を動かす(プログラムを組む)ことで理解する
不器用なプログラマです(^_^;)


転職活動中です。
アジャイル開発に興味ありです。



このサイトは管理人が理解する過程で書いたプログラムを
主に置いていこうかと思います。
どなたかの参考程度になればよいかと・・・。

最新記事
最新コメント
最新トラックバック
カテゴリ
メールフォーム

名前:
メール:
件名:
本文:

検索フォーム
RSSリンクの表示
リンク
Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード