SSブログ

JavaScriptで "Cubic Hermite Spline補間関数" を作りました。 [プログラミング]

現在も制作中の、インタラクティヴ ディジタル アート作品の為に、JavaScript三次補間関数を作成致しました。
この関数に補間対象の1次元のデータ配列と拡大倍率の値を渡すと、 " 三次Hermite スプライン補間法 " (Cubic Hermite Spline Interpolator / キュービック エルミート スプライン補間法)でデータの内挿を行い、渡された値の間を滑らかに繋ぐ新たな値を生成して、1次元の新たなデータ配列を返却します。

Cubic Hermite Spline Interpolation_SS_(2016_08_01)_1_Cropped_1 黒い背景に水色の角ばった線と橙色の滑らかな曲線が重なりあったグラフとして描かれている。左上には白く光る丸とそこから緑色の曲線が放射されている模様が描かれている。
https://c1.staticflickr.com/9/8752/28065573983_d53a4c160a_o.png
これはグラフをHTML5のCanvas要素内に描画した際のスクリーンショット画像です。
水色の角ばった線が与えたデータを表しております。
橙色の曲線が補間されたデータを表しております。
与えたデータの点を通り、滑らかな曲線を描いております。
このグラフのデータの補間による拡大倍率は12倍です。

オーヴァーシュートとアンダーシュートが出ますので、値域に関しては適切な処理が必要です。

->->
[2016年8月2日追記]
" 三次Hermite スプライン補間関数 " のオプションを追加致しました。
与えられたデータ配列の最初の要素の値と最後の要素の値が滑らかに繋がり、循環するように指定出来ます。
Cubic Hermite Spline Interpolation_SS_(2016_08_02)_1_Cropped_1 黒い背景に青緑色のぐにゃぐにゃに歪んだ滑らかな曲線の円3つ描かれている。右上の歪んだ円の中央には白く光る丸が描かれ、そこから放射状に青色と紫色のリボンの様な曲線が伸びている模様が描かれている。
https://c1.staticflickr.com/9/8654/28701035475_245787f389_o.png
このスクリーンショット画像に描かれている歪んだ円環は、乱数による一様なノイズを複数回、スケールを変えながら滑らかにデータ補間しつつ合成して行ったものを円形に繋いだ曲線です。
円の始点と終点が滑らかに繋がるようにする為に、データ補間のオプションで、ノイズの最初のデータの値と最後のデータの値が循環するように指定したものです。
<-<-
->->
[2017年5月22日追記]
データを循環させる場合の繋げ方が適切でなかったので修正致しました。
データの最初と最後が補間により滑らかに繋がります。
<-<-

私のこのプログラムは行列計算などにはしていないので処理速度は速くはない筈ですが、綺麗に補間出来ます。
また、このコードはもしかすると間違っているかもしれません。

私のブログ記事: とても美しいディジタル アートになりました。
http://crater.blog.so-net.ne.jp/2016-07-26

私のブログ記事: HTML5のCamvasと "JavaScript" で音声処理と画像描画。
http://crater.blog.so-net.ne.jp/2016-06-30

私のブログ記事: "JavaScript" で音と画像を生成するプログラムのソースコード。
http://crater.blog.so-net.ne.jp/2016-06-30-1

この関数の作成の為にWikipediaなどを参照させて頂きました。

"Wikipedia" (English)の "Cubic Hermite spline" のページのURL:
https://en.wikipedia.org/wiki/Cubic_Hermite_spline

以下に自作のソース コードを掲載致します。
自己責任の上で御自由にお使い下さいませ。
当ソース コードには間違いがあるかもしれません。
もし当ソース コードを使用した事による如何なる問題につきましても、私は責任を取る事が出来ません。
御了承下さいませ。

引数は、以下のものと致します。

dataArray:
補間対象の1次元データ配列。

dataArrayLength:
データ配列の最初の要素から数えての補間対象とするデータの要素数。
dataArray[0]からdataArray[15]までを対象とする場合、16という数値を渡す。

scaleFactor:
拡大倍率。
8倍に拡大したい場合、8という数値を渡す。

isDataLoop:
データの最初と最後を循環させる場合、trueを渡し、循環させない場合、falseを渡す。

// 三次Hermite スプライン補間関数を関数式により定義する。
var cubicHermiteSplineInterpolation = function( dataArray, dataArrayLength, scaleFactor, isDataLoop )
{
 var interpolatedDataArray = [];
 var startingTangent = 0;
 var endingTangent = 0;

 if( isDataLoop === true )
 // データを循環させる場合は以下の処理を行う。
 {
  // データの要素を1つ分だけ後ろへ移動する。
  var i = dataArrayLength;
  for( ; i > 0; i-- )
  {
   dataArray[i] = dataArray[i - 1];
  }

  dataArray[0] = dataArray[dataArrayLength]; // 元のデータの最後の要素の値を先頭の要素に複製する。
  dataArray[dataArrayLength + 1] = dataArray[1]; // 元のデータの最初の要素の値を最後の要素の1つ後に複製する。
  dataArray[dataArrayLength + 2] = dataArray[2]; // 元のデータの最初から2番目の要素の値を最後の要素の2つ後に複製する。
  dataArray[dataArrayLength + 3] = dataArray[3]; // 元のデータの最初から3番目の要素の値を最後の要素の3つ後に複製する。

  var j = 0;
  var k = 0;
  for( i = 1; i < dataArrayLength + 2; i++ )
  {
   // 区間の正接の計算を行う。
   startingTangent = 0.5 * (dataArray[i + 1] - dataArray[i - 1]);
   endingTangent = 0.5 * (dataArray[i + 2] - dataArray[i]);

   // 内挿を行う。
   for( j = 0; j < scaleFactor; j++, k++ )
   {
    var x = j / scaleFactor;
    interpolatedDataArray[k] =
     ((1 + 2 * x) * (1 - x) * (1 - x)) * dataArray[i]
     + (x * (1 - x) * (1 - x)) * startingTangent
     + (x * x * (3 - 2 * x)) * dataArray[i + 1]
     + (x * x * (x - 1)) * endingTangent;
   }
  }

  // 最後部の不要になった要素を削除する。
  for( i = dataArrayLength * scaleFactor; i < (dataArrayLength + 1) * scaleFactor; i++ )
  {
   interpolatedDataArray.pop();
  }

  // 返却される配列の要素数は、 'dataArrayLength * scaleFactor' となる。
 }else
 // データを循環させない場合は以下の処理を行う。
 {
  var i = 0;
  var j = 0;
  var k = 0;
  for( ; i < dataArrayLength - 1; i++ )
  {
   if( i === 0 )
   // 最初の区間の設定を行う。
   {
    startingTangent = (dataArray[i + 1] - dataArray[i]);
    endingTangent = 0.5 * (dataArray[i + 2] - dataArray[i]);
   }else if( i === dataArrayLength - 2 )
   // 最後の区間の設定を行う。
   {
    startingTangent = 0.5 * (dataArray[i + 1] - dataArray[i - 1]);
    endingTangent = (dataArray[i + 1] - dataArray[i]);
   }else
   // 最初と最後以外の区間の設定を行う。
   {
    startingTangent = 0.5 * (dataArray[i + 1] - dataArray[i - 1]);
    endingTangent = 0.5 * (dataArray[i + 2] - dataArray[i]);
   }

   // 内挿を行う。
   for( j = 0; j < scaleFactor; j++, k++ )
   {
    var x = j / scaleFactor;
    interpolatedDataArray[k] =
     ((1 + 2 * x) * (1 - x) * (1 - x)) * dataArray[i]
     + (x * (1 - x) * (1 - x)) * startingTangent
     + (x * x * (3 - 2 * x)) * dataArray[i + 1]
     + (x * x * (x - 1)) * endingTangent;
   }
  }
  interpolatedDataArray[(dataArrayLength - 1) * scaleFactor] = dataArray[dataArrayLength - 1]; // 最後の要素の値を代入する。

  // 返却される配列の要素数は、 '(dataArrayLength - 1) * scaleFactor + 1' となる。
 }
 return( interpolatedDataArray ); // 補間された新たな1次元のデータ配列を返却する。
};

Ubuntu 16.04.1 LTSにアップグレードしました。 [PC]

遂に、2016年7月28日に最新の長期サポート版(Long Term Support)のUbuntuである、Ubuntu 16.04 LTS (Xenial Xerus)のポイント リリース、 " Ubuntu 16.04.1 LTS" のアップグレード通知が有効化されました。

私は29日にUbuntu 14.04 LTSからUbuntu 16.04.1 LTSへアップグレード致しました。

しかしながら、色々と特殊な環境にしてしまっていた私の自作PCでは、アップグレードは問題無くは出来ませんでした。
因みに私のPCのハードウェアについては次のページをご覧下さい。

ブログ記事: 自作PCの構成
http://crater.blog.so-net.ne.jp/2014-11-18

私は既にLinux カーネルをヴァージョン 4.2.0に変更してありました。
また、アップグレード前のNvidia GeForce GTX750のドライヴァーは " Graphics Drivers Team " というPPA (Personal Package Archive)のオープンソース ドライヴァーを利用させて頂いておりました。

まず、私はアップグレード通知のダイアログ ウィンドウからアップグレードしようとして " 今すぐアップグレードする " ボタンを押したのですが、ウィンドウが閉じるだけで何も起こりませんでした。

次にGUI アプリケーション ソフトウェアの " ソフトウェアの更新 " でアップデートを全て済ませた後、同ソフトウェアのアップグレード ボタンを押したのですが、やはり何も始まりませんでした。

そこで " 端末 " を開き、以下のコマンドにてアップグレードを実行致しました。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo do-release-upgrade

これで無事、Ubuntu 16.04.1 LTSへのアップグレードが開始されました。

アップグレード完了までには1時間以上は掛かりました。
私の場合は途中で " ttf-mscorefonts " という、マイクロソフト社提供のTTF (True Type Font)のEULA (End User Lisence Agreement / 末端利用者向け使用許諾契約書)が表示されましたが、私はこれを使用しないので拒否して先に進めました。
他にも何度か " Yes / No " の問い掛けがございましたので、定期的に画面を確認しながら待ちました。

途中で、 " Secure Boot " (セキュア ブート)に関係する、 " shim-signed " というパッケージに関して、以下の様な内容のメッセージが表示されました。

->->
" UEFI Secure Boot " が有効(Enable)になっている。UEFI Secure Bootはサードパーティ (Third-party)製ドライヴァーの使用と互換性が無い。
UEFI Secure Bootを無効にするとサードパーティ製ドライヴァーを使用出来る。
UEFI Secure Bootを安全に無効にする為に、まずは使い捨てのパスワードを設定し、再起動後にそのパスワードで利用者の確認をする必要がある。
パスワードが認証されればUEFI Secure Bootは無効になり、サードパーティ製ドライヴァーを使用出来るようになるが、これを行わないとサードパーティ製ドライヴァーは利用出来ない。
<-<-

実はアップグレード前に行ったアップデートの際に " shim-signed " の処理中にGUI アプリケーション ソフトウェアの " ソフトウェアの更新 " がフリーズしてしまい、仕方無くPCを再起動した後に、 " 端末 " を開き、 " sudo dpkg --configure -a " で未設定のパッケージの再設定を実行したところ、上記メッセージが表示されたのですが、パスワードの設定をせずに済ませてしまいました。
その後、Ubuntu 16.04.1 LTSへのアップグレード時に再び同メッセージが表れた次第です。

ところで、 " shim-signed " というパッケージは、説明によると、 " Secure Boot chain-loading bootloader (Microsoft-signed binary) " であるとの事です。
以下、私の認識ですが、多分に間違っているかもしれません。
" UEFI Secure Boot " はUEFI対応のWindows OSがインストールされたPCについて、Microsoft社など信用されているところが署名したブート ローダーやカーネル、ドライヴァー プログラムだけが使用出来るようにする為の仕組みであるようです。
Windows OSとUbuntu OSが共にインストールされたデュアル ブート環境などでは、Ubuntu提供元のCanonicalが署名したり、またはMicrosoft社に署名をして貰ったり、有効なディジタル キーをCanonicalが購入したり、有効なディジタル キーのあるブート ローダー コードを使用したりする事でUEFI Secure Bootが有効の状態でUbuntuとサードパーティ製ドライヴァーが動作するようにしていたようです。
ここで、DKMSが問題となります。
DKMS (Dynamic Kernel Module Support)はカーネル ソース ツリーの外部にあるソースのLinux カーネル モジュールを自動的に生成する為の仕組みだそうです。
DKMS モジュールは新しいカーネルがインストールされた時に所有者のマシン上でコンパイルされ、リビルドされる為、これにはCanonicalなどは署名出来ません。
Ubuntu16.04 LTSからはUEFI Secure Bootに関して、ファームウェア、ブート ローダー、OS カーネル、カーネル モジュール、デヴァイス ドライヴァーなどの安全性の検証に以前より厳格な要求をするようになったようです。
その為、UEFI Secure Bootを無効にしないとサードパーティ製ドライヴァーが動作しない場合があるようです。

私の環境で問題になったのは、 " Nvidia Graphics Driver " でした。
私はUEFI Secure Bootを無効にする為に8桁から16桁の使い捨てのパスワードを設定し、アップグレードを続行致しました。

アップグレードを完了する為に再起動を促すメッセージが表れたので、PCを再起動致しました。
そして、UEFI Secure Bootを無効にする為の使い捨てパスワードを確認する画面が表示されました。
パスワードの何番目かの文字を入力せよとの指示があり、これを入力する操作が何度か繰り返された後、確認が出来たとの表示がございました。そして起動プロセスが進みました。
ところが、ここで問題が発生致しました。
" ログイン ループ " です。
起動時のGUIのログイン画面で、端末のパスワードを入力しても、一瞬画面が黒くなった後、直ぐに元のログイン画面に戻ってしまいます。
何度パスワードを入力してもログイン画面に戻される状態です。
今回直面したログイン ループではゲスト ユーザーに切り替えてもログイン出来ませんでした。
ゲスト ユーザーでログイン出来る場合は、ユーザー設定が壊れている事が原因ですので、ユーザー設定を修復しますが、今回の原因は異なるようです。

ログイン画面の解像度が低くなってぼやけた低解像度な画面になってしまっていた事から、やはりNvidiaのヴィデオ カードのグラフィックス ドライヴァー関係の問題であろうと思いました。
" Ctrl + F1 " キーでCUI仮想コンソールのTTY1にログインして別のグラフィックス ドライヴァーをインストールして再起動するなどしてみたのですが改善致しませんでした。
どうやら正しくUEFI Secure Bootを無効化出来なかった事が原因なようですので、これを無効化する事に致しました。
但し、Windows OSがプリインストールされたメーカー製PCはこれを無効化出来ない場合があるようです。
また、Windows 10などとUbuntu 16.04をデュアルブートしたい場合も、UEFI Secure Bootの無効化をWindows OSが許さない為、これも出来ません。
私は自作PCでUbuntu 16.04 LTS単体での使用ですので、UEFIの設定でこれを無効化出来ます。

PC起動時に " Esc, F2, Del " などのキーを押してUEFI (リッチなBIOS)の設定画面を表示させ、そこからUEFI Secure Bootを無効に致します。
私はAsusのマザーボードを使用しているので、 " Boot " タブの " Secure Boot " の項目の " OS Type " の項目を " Windows UEFI mode " から " Other OS " にし、 " Boot " タブの " CSM (Compatibility Support Module) " を " Enabled " にしてから設定を保存して起動致しました。

すると今度は画面の解像度が正常になり、ログイン パスワードを入力すると正しくログイン出来ました。
只、初回の起動には少々時間が掛かりました。

待ちに待ったUbuntu16.04.1ですが、見た目の変化はスクロール ボックスが変わった事やテキスト エディターの " gedit " のボタンやメニューが変わった事位しかまだ分かりません。

USB オーディオ インターフェイスの " CREATIVE USB Sound Blaster Digital Music Premium HD " の光ディジタル出力から音声が正常に出力出来ておりますし、不具合は今のところ全くございません。

過去のブログ記事: Ubuntu LinuxとUSB Sound Blaster Digital Music Premium HDで音を出せた。録音出来た。
http://crater.blog.so-net.ne.jp/2014-09-18-1

アップグレード時に無効にされたPPAも有効化致しました。

これから数年間はこの環境でPCを使用出来そうです。

ところで、UEFI Secure Bootを無効化しない場合は、サードパーティー製のドライヴァーなどが使用出来ない場合がある訳ですが、これは困る人も居るのではないかと思います。

->->
[同日追記]
Ubuntu 16.04.1にアップグレード後、私の環境では、新たにインストールされた " Ubuntu Software " というソフトウェア管理ツールが起動しないようです。暫く経てばバグの修正が行われるでしょうが、それまでは従来の " Ubuntu ソフトウェア センター " を使用する必要がありそうです。
<-<-

最新版の "YaCy ver. 1.90" は "Java 8" が必要です。 [P2P検索エンジン YaCy]

P2P通信技術を用いた分散型の検索エンジンである " YaCy " のメイン リリースの最新版である、 " YaCy 1.90 " がリリースされました。
この最新版では、今まで公式ウェブサイトで配布されていた " ver. 1.82 " と比較して非常に多くの改良が施されております。
機能の向上と速度の向上が幅広く行われました。

過去に古いヴァージョンを使用して不充分だと感じた方も、最新版ではこれならば利用出来ると感じるかもしれません。

最新版である " ver. 1.90 " は " Java 8 " で動作致しますので、PCに " Oracle JDK 8 " , " Oracle JRE 8 " , " OpenJDK 8 " , " OpenJRE 8 " の何れもインストールされていない場合はこれをインストールします。
因みに、JDK (Java Development Kit)は開発環境込みのもので、JRE (Java Runtime Enviroment)はプログラムの実行のみ可能なものです。

->->
[後日追記]
YaCy ver. 1.90はその後修正され、 " Java 7 " でも動作するようになっております。
<-<-

私はUbuntu PCを利用しておりますので、Oracle Java互換の " OpenJRE 8 " を使用させて頂いております。

Ubuntu 14.04 LTSのメイン リポジトリーは " OpenJRE 7 " までの対応で、 " OpenJRE 8 " はUbuntu 14.10以降でメイン リポジトリーに登録されております。

Ubuntu 14.04で " OpenJRE 8 " をインストールするにはPPAを利用致します。インストールは次の様に行います。

まず、ラウンチャーの " コンピューターとオンラインリソースを検索 " のアプリケーション一覧から " 端末 " を選択するか、或いは " Ctrl + Alt + T " を押して " 端末 " を開きます。
そして次のコマンドを入力致します。
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jre

管理者パスワードを入力して " Enter キー " を押すとインストールが始まります。
途中で " Do you want to continue? [Y/n] " と出たら、インストールを続けたい場合は " y " と入力して " Enter キー " を押すとインストールが続行されます。もしも中止したい場合は " n " と入力して " Enter キー " を押して下さい。
インストールが終わったら、次のコマンドでOpenJRE 8が正しくインストールされた事を確認します。
java -version


また、Ubuntu 14.04にて古いヴァージョンの " OpenJRE 7 " が既にインストールしてあり、 " OpenJRE 7 " が不要な場合は削除して下さい。
古いヴァージョンも使い続けたい場合は、 " OpenJRE 8 " をインストールした後で、 " 端末 " で次のコマンドを入力して使用するヴァージョンを切り替えて下さい。
sudo update-alternatives --config java

利用可能なヴァージョンが表示されるので、使用したいヴァージョンの番号を入力して " Enter " キーを押します。

参照させて頂いたウェブサイト:
"CUBE SUGAR STORAGE" の記事 "Ubuntu で使用する Java のバージョンを切り替える" のURL:
http://momijiame.tumblr.com/post/70771860020/ubuntu-で使用する-java-のバージョンを切り替える

情報を参照させて頂いた事に心より感謝致しております。

YaCyを利用する事で、国家や企業によるインターネットの検閲、不正、不当なフィルタリングを防ぐ事が可能です。
但し、通信自体を匿名化するものではございませんので、その目的の為には他のシステムを組み合わせる必要がございます。

以下は暫く前のヴァージョンのYaCyのスクリーンショット画像です。
YaCy_SS_(2015_06_25)_1_Edited_1 分散型インターネット検索エンジン "YaCy" のスクリーンショット画像。検索結果の一覧が表示されている。
https://c1.staticflickr.com/1/751/22190971565_8a57afc081_o.png

"YaCy" の公式ウェブサイトのURL:
http://yacy.net/en/index.html

YaCyの導入の仕方やアップデートの仕方等につきましては以前の私の記事を御覧下さい。

[ブログ記事]
分散型検索エンジン "YaCy" が正式に日本語化されました。
http://crater.blog.so-net.ne.jp/2016-02-25

検索エンジン "YaCy" は実用性充分です。
http://crater.blog.so-net.ne.jp/2015-10-15

分散型検索エンジン YaCy の導入解説
http://crater.blog.so-net.ne.jp/2015-07-21

分散型検索エンジン YaCy のアップデート
http://crater.blog.so-net.ne.jp/2015-06-25

分散型検索エンジンYaCyについての解説動画
http://crater.blog.so-net.ne.jp/2015-03-22

Ubuntu PCでYaCy検索エンジンの為のポート開放の設定
http://crater.blog.so-net.ne.jp/2014-11-06


" YaCy " の開発用GitHub ページのURL:
https://github.com/yacy/yacy_search_server

HTML5のCamvasと "JavaScript" で音声処理と画像描画。 [HTML5 インタラクティヴ アート]


Canvas Area.

If you want to play music, please select your music files (or symbolic links, aliases, shortcuts).

Please select the type of visual effect from the following.




Please select the type of sound source from the following.


Note: Guitar sound is generated from physically based simulation in real-time.
Please select the mode of playing from the following.




Please select the octave number from the following.
Key assignment.
(z):c (s):cs (x):d (d):ds (c):e (v):f (g):fs (b):g (h):gs (n):a (j):as (m):b (,):c
(q):c (2):cs (w):d (3):ds (e):e (r):f (5):fs (t):g (6):gs (y):a (7):as (u):b (i):c
(Shift): Increase or decrease one octave.


このHTML ページ内で " JavaScript " を実行します。
音と視覚効果を生成してみます。

遊びで " JavaScript " でインタラクティヴ アートのプログラムを書いてみたので、 " Canvas Play / Stop " ボタンを押して、キャンヴァス上を沢山クリック / タップしてみて下さい。
下の方は30[Hz]位からの強烈な重低音が出ます。最高の重低音、最強の重低音でサブウーファーが部屋を揺らします。
また、オプションでキーボードのキーを押してピアノのように音楽を演奏することも出来ます。
オクターヴの移動も可能です。
更に、お持ちの音楽ファイルを複数選択して再生させ、スペクトラム アナライザーのヴィジュアライザーを表示させる事も出来ます。 この際、音楽ファイルへのリンク、ショートカット、エイリアスを選択する事も可能ですので、プレイリストのように利用可能です。 尚、一部の古いブラウザーでは音が出なかったり動作しなかったりすると思います。
もしも何か問題が生じても私は責任を取れませんので御了承下さいませ。
もしこのWeb アプリに御興味を持たれましたら、どこかでこれを紹介して下さい。

[このプログラムについて]
" HTML5 " の " Canvas " 要素を利用して画面に画像を表示しております。
このプログラムのコードは全てブログ記事のHTML文書内に記述したものであり、作成するに当たってテキスト エディターとウェブ ブラウザー以外は何も使用しておりません。 追加のライブラリーなどは一切必要無く、純粋にHTML5対応ブラウザーだけで動作致します。
この作品がもし、どなたかがプログラミングの学習、勉強を始めるきっかけになったら嬉しいです。
音に関しては、 " Web Audio API " を利用して、独自の関数で波形を作って鳴らしております。
解説とソースコードは次のページで掲載させて頂きます。

私のブログ記事: 自作の " HTML5 インタラクティヴ アート " の説明。
http://crater.blog.so-net.ne.jp/2017-05-25

イギリスのEU離脱決定で株価暴落。 [日常]

イギリスが、遂に " EU " (European Union / 欧州連合)を離脱する決定をしてしまいました。

"Bloomberg" の記事 "英がEU離脱へ、国民投票で賛成多数-欧州の戦後秩序破綻" のURL:
https://www.bloomberg.co.jp/news/articles/2016-06-24/O97H356S972D01

イギリスで2016年6月23日にEUを離脱するか残留するかを決める国民投票が実施されました。
そして日本時間の24日の午前11時過ぎにEU離脱を求める票が過半数を超える事がほぼ確実と伝えられ、午後、正式に離脱が確定致しました。
EU離脱派はEUが決める基準に従う事を拒否し、また、仕事を奪われるとしてEU域内からの移民の受け入れを拒否する方針であるようです。
世界の金融取引の中心地であるロンドンを首都に持つイギリスがEUを抜ければ、EU全体にとって大きな損失となる筈です。
そして、イギリスに追随してEUを脱退する国が続出する事が懸念されております。
そうなれば " ドミノ離脱 " となり、 " EU崩壊の危機 " ともなりえます。
EU加盟国とイギリスとの貿易、金融取引に於いて障壁が作られ、経済に負の影響が出る可能性が高いものと思われます。
また、イギリス国内に於いてはEU残留を希望する国民が半数近く居た事から、今後、離脱を支持した人々と残留を希望していた人々との軋轢や摩擦が避けられません。イギリスの国政は揉める事になるでしょう。
スコットランド独立機運も高まるかもしれません。
そして、日本がイギリスへ既に投資している企業の数や金額が非常に大きい事から、日本の企業の業績にも悪影響が出る事が懸念されます。
EUが機能不全に陥った場合、 " 北大西洋条約機構 " (NATO)の運営にも悪影響が出かねません。
そうなれば、ロシアや中国がここぞとばかりに旧ソ連構成国、東欧諸国や東アジア諸国、日本に対して軍事的、経済的圧力を増して来るかもしれません。

イギリスのEU離脱確実が伝えられた時から直ぐにイギリスの通貨であるポンドの為替相場は暴落しております。
これは当然です。
ドル-円相場は1ドル100円を割り、99円02銭まで円高が進みました。
日本の証券取引市場に於いては、大阪取引所で日経平均先物が急落して取引が一時停止致しました。
日経平均株価は瞬く間に前日比1,300円以上暴落し、4か月振りに15,000円を割り、その後も回復せず終値は前日比で1,286円33銭値下がりしての14,952円02銭となり、年初来安値を更新、2014年10月21日以来凡そ1年8か月振りの安値となりました。
この下落幅は何と2000年4月17日(IT バブル期)以来であり、下落率も東日本大震災発生時以来だそうです。

この後のニューヨーク市場の結果次第では、日本の株式市場は週明けから悲惨な状態になりそうです。

尚、イギリスのEU脱退の手続きが完了するのは2年後となるそうです。

"Bloomberg" の記事 "日本株記録ずくめの急落、日経平均下げ幅16年ぶり-英EU離脱派勝利" のURL:
https://www.bloomberg.co.jp/news/articles/2016-06-23/O98XBO6JTSEI01

->->
[翌日追記]
" ニューズウィーク日本版 " にEUとイギリスの関係、離脱支持派の誤った認識について書かれた記事がございました。

"ニューズウィーク日本版" の記事 "EU離脱なら失業と新自由主義がやってくる" のURL:
http://www.newsweekjapan.jp/stories/world/2016/06/eu-26.php


日本時間の24日の夜から取り引きが始まったニューヨーク株式市場ではダウ工業株30種平均株価が終値で610ドル32セントも下落したそうです。
この下げ幅も2011年8月以来の大きさだそうです。

"NHKニュース" の記事 "英 “EU離脱”勝利 世界経済に動揺広がる" のURL:
http://www3.nhk.or.jp/news/html/20160625/k10010571521000.html


" イギリス離脱ショック " が原因でたった一日の間に世界の株式市場で何と " 215兆円 " が失われてしまったとの事です。

"AFPBB News" の記事 "世界の株式市場、215兆円失う 英EU離脱派勝利で株安" のURL:
http://www.afpbb.com/articles/-/3091738
<-<-

ブログ ページ内にソース コードを表示する簡単で軽量な方法。 [ブログのページ内にソース コードを掲載する方法]

私も今までSo-net ブログ内にプログラムのソース コードスクリプト設定ファイルの記述コマンド等を簡単に表示させたくて色々な方法を試しました。
ソースを整形済みテキストとして表示する " <pre> " タグを使用した場合、文字の大きさと文字列の長さ、ページの横幅によってはページ外にはみ出してしまい、読めなくなってしまいます。
そこで以前は次のようにしてコードを表示させておりました。

[以前の方法]
<ol class="codelist">
<li class="tab0 even"><code>xxxxxxxx</code></li>
<li class="tab1 odd"><code>xxxx        xxxx</code></li>
<li class="tab0 even"><code>        xxxxxxxx</code></li>
<li class="tab1 odd"><code>xxxxxxxx</code></li>
</ol>

" xxxxxxxx " の部分に実際のコードを書きます。

[以前の方法の実際の表示]
  1. xxxxxxxx
  2. xxxx xxxx
  3. xxxxxxxx
  4. xxxxxxxx


しかしこの方法では記述に手間が掛かり過ぎ、HTML ソースも見辛くなってしまいます。
その上、インデントやスペースが正しく反映されません
また、コマンド リストに於いては行番号は無い方が良いと思いました。
そして、長い文字列を折り返さずにスクロールさせたいと思いました。

ブログの品質に拘る方は " syntaxhighlighter " や " Highlight.js " 等を使用していることでしょう。

私はもっと簡潔に、簡素な方法を探しました。
そして次のブログで紹介されている方法を採用することに致しました。

"sgryjp" 様のブログ "sgryjp.log" の記事 "ブログのソースコード記載段落だけ横スクロール可能に@iPhoneブラウザ" のURL:
http://sgry.jp/blog/2013/03/17/762/

[今回の表示方法]
まず、下準備を致します。
自分のSo-net ブログの " 管理ページ " から " デザイン " タブを開き、 " テンプレート管理 " を選択し、使用しているテンプレートの " 編集 " を選択します。
" スタイルシート編集 " 画面でCSSの最後に次のコードを追加致しました。

/* Code Block */
div.codeblock {
overflow-x: auto;
border: solid 1px #888888;
background-color: #dddddd
}
div.codeblock > table {
border-collapse: collapse;
border-spacing: 0;
margin: 0;
padding: 0;
}
div.codeblock > table td {
border: none;
margin: 0;
padding: 0;
}
div.codeblock > table td pre {
border: none;
margin: 0;
padding: 0;
}


これでブログ内にコードを表示させるスタイル設定が出来たので、実際にコードを表示させる際には次の様にして記述致します。

<div class="codeblock"><table><tr><td><pre>
<code>xxxxxxxx
xxxx        xxxx
        xxxxxxxx
xxxxxxxx</code>
</pre></td></tr></table></div>


[今回の方法の実際の表示]
xxxxxxxx
xxxx        xxxx
        xxxxxxxx
xxxxxxxx


灰色の背景と黒枠の中にコードが表示されております。
インデントとスペースが正しく反映されております。
行番号はございません。

また、文字列が長い際には自動的にスクロール ボックスが表れて横スクロールが出来ます。

[文字列が長い場合の記述例]
<div class="codeblock"><table><tr><td><pre>
<code>xxxxxxxx
aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb
yyyyyyyy        zzzzzzzz        yyyyyyyy        zzzzzzzz        yyyyyyyy        zzzzzzzz        yyyyyyyy        zzzzzzzz
xxxxxxxx</code>
</pre></td></tr></table></div>


[文字列が長い場合の実際の表示]
xxxxxxxx
aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb        aaaaaaaa        bbbbbbbb
yyyyyyyy        zzzzzzzz        yyyyyyyy        zzzzzzzz        yyyyyyyy        zzzzzzzz        yyyyyyyy        zzzzzzzz
xxxxxxxx



Ubuntu PCでBlu-ray / DVD ドライヴがマウント出来ない問題の解決。 [PC]

私がDebian系のLinux ディストリビューションであるUbuntu 14.04 LTSのOSを自作PCにインストールした後暫くの間はBlu-ray / DVD ドライヴは正常に機能しておりました。
DVDの読み込みも書き込みも正常に出来ていたのです。
ところがいつからか、もしかしたらLinux カーネルをアップデートしてからなのかもしれませんが、PCの起動時にBlu-ray / DVD ドライヴのアクセス ランプが短い間だけ点灯して消灯、そしてまた点灯という動作を繰り返すようになりました。
アクセス ランプが点灯している間だけは光学ドライヴが動作している機械的な音が聞こえます。

PCが起動しようとしている間に何回かこれを繰り返していて、PCが起動するまでの時間が長くなりました。
PCが起動完了するまでにこれが収まる事もあれば、起動してから暫く時間が経つまで「ガコッ、ココッ」と音が鳴っている場合もありました。

私はBlu-ray / DVD ドライヴが故障したのだと思い、新品に買い替えましたが、全く症状は改善しませんでした。
勿論、SATA ケーブルの交換や挿すポートの変更は試してあります。

そして今年、2016年の2月にはBlu-ray / DVD ドライヴの起動に失敗し続ける状態のままPCが起動しなくなってしまいました。
この時、HDD アクセス ランプの方も点灯と消灯を繰り返しておりました。

私の過去のブログ記事:
PCが起動しません。
http://crater.blog.so-net.ne.jp/2016-02-20

この時私はLinux カーネルを変更してみたりしたものの改善しなかったので、マザーボードが故障したのだと考え、マザーボードを交換致しました。
この際、それまでのものと同じCPU ソケットを搭載した高品質なマザーボードは既に販売が終わってしまっており、安価な低品質のマザーボードを買わざるを得ませんでした。この新しいマザーボードは酷いコイル鳴きがあり、実に煩わしく思います。
マザーボードを交換したところPCは起動するようになったものの、依然としてBlu-ray / DVD ドライヴが稀に正常に起動しないことがございました。

そしてDVDを挿入してトレイを閉じてもDVD ドライヴがマウントされません。
Linux カーネルをヴァージョン 4.2.0にアップデートしても直りませんでした。

この度、設定ファイルに設定を書き込む事でこの問題を解消し、正常に起動、マウントされるように致しました。

方法は日本語サイトを含め様々なウェブサイトに書かれているのですが、ここでも書き留めておきたいと思います。

[解決方法]
まず、 " /media/ " のディレクトリーに " cdrom " が無いので " 端末 " から次のように " mkdir " コマンドでこれを作成致します。
sudo mkdir /media/cdrom


次にテキスト エディターの " gedit " を次のようにして管理者権限で起動致します。(勿論 " 端末 " 上で " vi " コマンドで書き込んでも構いません。)
sudo gedit


" /etc/fstab " の設定ファイルを管理者権限で起動した " gedit " で開いて最後に次の行を追加して保存致します。
/dev/sr0    /media/cdrom   udf,iso9660 user,noauto,exec,utf8   0   0


後はPCを再起動したらBlu-ray / DVD ドライヴは正常にマウントされ、DVDも正常に読み込めるようになりました。

尚、原因はUbuntuのバグなのかもしれません。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。