カテゴリー別アーカイブ: JavaScript

デュアルブートのUbuntuを削除してしまい「grub rescue>」からのWindows Vistaを起動!

今日はヒヤヒヤしっぱなしの一日でした。

Windows Vistaがインストールしてあるノートパソコンに、後からUbuntuをインストールしてデュアルブートで使っていました。
Ubuntuを入れた時に、ブートローダはGRUB2になりました。

パソコンを起動するとGRUB2が起動してOSを選択して使っていました。

GRUB2の動きは、だいたいこんな感じです↓
パソコンを起動させると、MBR(マスターブートレコード)のGRUB2が読み込まれますが、そこでOSの選択ができるわけではありません。
MBRは容量が小さいため、GRUB2はUbuntuがインストールされているパーティションに書き込まれている第1.5ステージに処理を渡します。その後、第2ステージへと処理が引き継がれていきます。

さて今回、私はMBRがGRUB2のまま、Ubuntuを削除してしまったのです!
(※Ubuntuを削除する前にMBRを修復しておくべきだったのです。)

実際に行った内容は、Windows Vistaの再セットアップディスクでパソコン購入時の状態に戻したということです。

再セットアップが終わったーと思ってパソコンが再起動して立ち上がってくるのを待っていると、

grub rescue>

のコンソール画面が。
ネットで調べると、コマンドでUbuntuのパーティションを指定するように設定すれば大丈夫!なんて記事ばかりで。でも無いんです、Ubuntuのパーティションが!
困ったなぁ。と半日ハマって色々調べていると、Windowsのインストールディスから回復コンソールを開いて、MBRの修復ができるらしいと。

どこだー!とインストールディスクを探しますがありません。最近のパソコンってインストールディスクなんて付いてないことが多いんですよね。

どうしようかと思っていると、いい情報を見つけました。
現在、Windowsが提供しているWindows 8 Enterpriseの評価版isoファイルをダウンロードしてDVDに焼く。そのディスクで起動すると回復コンソールが使えて、なんとかMBRが修復できるかもしれないと!

早速やってみました。

ダウンロードして、

焼いて、

ディスクを挿入して起動。

インストールに進まず、回復コンソールを開きます。

image

トラブルシューティングをCLICK。

image

コマンドプロントをクリック。

image

コマンドプロントが開く。
bootrec
とタイプしてエンターキー。

image

コマンドのオプションが表示される。

image

bootrec /FixMbr
とタイプしてエンターキー。
一瞬で処理が終わる。

これでディスクを抜いて再起動すると、無事に再セットアップ中のWindows Vistaが上がってきました。

今回焼いたディスクは、このノートパソコンを使い続ける限り永久保存版ですね。

jQuery.Deferredがよく分かるページ

jqueryを使ってあるプログラムを作っていたら、ajaxの非同期通信が原因でデータの同期がとれなくて困った。

いろいろ調べていると、jquery1.5からDeferredってゆう機能が追加されたようで、こいつが同期というか、並列しちゃう処理とかの順序を管理できたりできるみたい。

この処理が終わってからコレやって。みたいな。非同期だとある処理が終わらないうちに次の処理しちゃってるから。それだと困る時がある。

で、Deferredの概念。難しいです。いろんなページみてもとっつきにくくて諦めそうになりました。が、さすがYahooさん、ええページありました。

爆速でわかるjQuery.Deferred超入門

というページです。

むちゃくちゃわかりやすい。(じっくり読めばね)

おかげで24時間まじでハマっていた問題が解決しようとしています。感謝。

 

jQuery Mobile を使っているサイトでGoogle Adsenseを表示させる方法。

jQuery Mobile を使っているサイトで Google Adsense が上手く表示されない事があります。

これは、 jQuery Mobile が デフォルトで Ajax式のハイパーリンクを有効しているから。

これが Google Adsense に悪さをしています。

Google Adsense は、1つのページに広告は3つまでにしてくださいという規約があります。
それ以上の数を表示しようとすると表示しませんよ、と言っています。

jQuery MobileのAjax式のハイパーリンクは、リンク先のページを非同期通信で読み込み、表示中の文書ツリーに取り込んだ上でページを遷移します。

その、表示中の文書ツリーに取り込んだ時点でバナーの数が3つを超えたら、バナーが表示されない、またはバナーだけが表示されてしまう(ことも環境によりあるらしい)ように見えます。
※詳しくは検証していません。また、Googleの仕様やjQueryの仕様変更によりこの現象は再現されなくなるかもしれません。

で、どうすれば Google Adsense の表示がされるのか。

Ajaxを利用しないハイパーリンクにします。

jQuery Mobaile がページ全体をリフレッシュするような、通常のリンクとして処理するのは次の場合です。

  • リンク先が現在のドメインと異なる
  • 「rel=”external”」属性が指定されたアンカータグ
  • 「data-ajax=”false”」属性が指定されたアンカータグ
  • リンク先ページの表示ウインドウを指定するtarget属性が付加されたアンカータグ

例えば、
<a href="test.html" data-role="button" rel="external">リンク</a>
こうした場合は、クリック時にAjaxは無効になります。

が、こんなものを全てのリンクに設定するのは面倒なので
jQuery、jQuery Mobileをページに読み込んだ後に、
$.mobile.ajaxEnabled = false;
を記述してAjaxを全て無効にしてしまう方法もあります。

[Javascript] onsubmitやonclickで処理を中断させる方法

リンクでonsubmitやonclickでJavascriptの関数を呼び出す時に、
Javascriptによって関数を実行が実行された後に、本来のクリック動作の処理をブラウザが行なってしますのを中断したい時がある。
つまり、onsubmitで呼び出したことだけして欲しい、と。

そうゆう時は

<form onsubmit="a_function();return false" >

のように「return false」を付けてやれば
本来のクリック動作を中断することが出来る!

または、イベントハンドラ関数の中で「return false;」としてfalseの値を返しても良い。

[Javascript]1桁と2桁が混在する変数の数値を2桁にする。

例えば日付のように[0]~[31]のいずれかの数値が入っている変数aがあるとする。
1桁と2桁が混在しているが、全て2桁化したい。

Javascriptでこれを一行でコーディングするとこうなる。


a = ("0" + a).slice(-2);

【解説】
変数に入っている元の数値に関わらず頭に”0″を付ける。
そして下二桁を抜き出す。
例)元の数値が3の場合
3→03→03
例)元の数値が15の場合
15→015→15

レストランが作るこだわりの逸品から会議弁当やピザチェーンまで、出前・宅配の総合グルメサイト『ぐるなびデリバリー』

jQuery 準備編

以下のサイトからスクリプトどDL。

http://jquery.com/

※2010/7/9時点での最新バージョンは1.4.2

MinifiedをDLすれば良い。

Minifiedは、変数名の短縮、コメントや空白の除去によってソースコードをMinify(縮小)したもの。

ソースをじっくり見たいときはUncompressedを見ましょー。

ファイル名を jquery.jsなどとしてサーバにUPしましょー。

htmlのソースでjquery.jpを読み込む。

これで準備は完了。