Steal Your Heart (Radio Mix)

今回、Spotify からご紹介するEDM は「Steal Your Heart (Radio Mix) /BRKLYN,  Feat. Lenachka」です。

2015年発表ですが、Spotify でストリーミングしているRadio Mix の静かに始まるイントロの方が耳に馴染みます。(Amazon.com からダウンロードできるOriginal Mix もアゲていてイイですが・・・。)歌詞も切なさが溢れていて心に響きますね。

VAIO の電源コネクタ

7年落ちのVAIO ですが、何かの拍子に電源アダプターのコードに足を引っ掛けてから電源コネクタ―の接触が悪くなり、バッテリーが充電されなくなってしまいました。

アダプターをコネクターに付けても以下の状態。

物理的にコネクターが壊れたのか、アダプターの故障なのか切り分けのため、新品のアダプターをAmazon.co.jp で注文。接続するも症状の改善はなりませんでした。

今度はバッテリーの寿命なのか、コネクターの物理的な故障なのか切り分けるため、バッテリーを外してアダプターを付けて電源ボタンを押しましたが起動しませんでした。

やはりコネクターの物理的な故障のようです。しかし快適なキータッチの1600×900 のワイドなディスプレイに慣れ親しんだ愛機を簡単に諦められません。ここは分解してコネクターがどうなってるのか調べてみました。今回はYouTube の動画を参考にしました。

アダプター、バッテリーを外して、背面のビスをすべて外します。以前、SSD 交換の際には何本かビスを失くしてしまったので今回は、背面カバーにセロハンテープで張り付けておきました。

本体側面の端子部分を眺めると、[有線LANポート][電源コネクタ][ディスプレイヒンジ固定金具][ディスプレイヒンジ]と並んでいます。それらの部品を覆うように電源端子に接続されている金具があります。分解、組み立てを2回やってみてコネクターの接触を確かめたところ、どうやら固定金具同士の接触不良のようです。金具を折り曲げたりビスを強く締めてみたりしましたが、ダメでどうしても隙間ができるようです。それならと、アルミホイルを噛ませてみたところイイ感じに固定できているようです。

ネジを元に戻してバッテリー、アダプターを付け直しして電源ボタンから起動。

コネクターの接触不良が改善されて、電源アダプターから正常に通電されるようになり、不具合が直りました。

かかった費用は、プラスの No.1 精密ドライバー、315円でした。分解、修理はすべて自己責任でお願いします。

VirtualBox エクステンションPack

Oracle のVirtualBox のダウンロードページから、(2017年7月24日現在

VirtualBox 5.1.24 Oracle VM VirtualBox Extension Pack

をダウンロードして、[ファイル]-[環境設定]-[拡張機能] とポイントし、ダウンロードしたExtension Pack を選択しインストールします。

ゲストOSでもUSB機器が使えるようになりました。

参考URL:

http://vboxmania.net/content/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%91%E3%83%83%E3%82%AF%E3%81%AE%E5%B0%8E%E5%85%A5

LibreOffice calc のマクロボタン

MS オフィス互換のLibreOffice calc ですが、MS Excel で書いた時刻表示のプロシージャを読み込むか、試みに実行してみました。

まず、セル”A1″=GETDATE() とユーザー定義関数を入力します。
[ツール]-[マクロ]-[マクロの管理]-[LibreOffice Basic…]から当該ブックの[standard]をクリックして[新規作成] で以下のプロシージャをコピペします。

Option VBASupport 1
Function GetDate() As Date
Application.Calculation = xlCalculationAutomatic
Application.Volatile
GetDate = Now()
End Function

Sub clock()
Dim counter As Long, crntAdd As String
Worksheets("sheet1").Activate
Worksheets("sheet1").Range("A1").Select

crntAdd = ActiveCell.address

Do Until crntAdd <> "$A$1"
If counter Mod 1000 = 0 Then
counter = 0
Worksheets("sheet1").Range("A1").Calculate
crntAdd = ActiveCell.address
DoEvents
End If
counter = counter + 1
Loop

End Sub

Private Sub フォーム_click()
Call clock
End Sub

[表示]-[ツールバー]-[フォームコントロール]から[コントロールツールバー]をポイントして「ツールバー」から「デザインモード」にします。

[フォーム]の挿入ボタンをクリックするとコントロールフォームが表示されます。(ちなみにボタンの名前変更は、右クリック→コントロール→全般タブ→タイトルから変えられます。)

「プッシュボタン」と書かれた[フォーム]を右クリックして[コントロール]から[イベント]-[実行時] の[…]をクリックして「アクションの割り当て」から「マクロセレクター」で[フォーム_click]マクロを割り当てます。

「デザインモード」を終了して名前を付けてブックを保存。[プッシュボタン]フォームをクリックすると時計が動きました。
難点は、MS Excel のthisworkbook.Activate が使えないことや、Workbook_Open という名前のプロシージャを作ると動作せず「マクロセレクター」から登録することなど不自由を感じました。
参考URL:

http://calibreblo.blogspot.jp/2011/05/blog-post.html

VirtualBox GuestAdditions のインストール

VirtualBox のコンソールとホストOS(Windows10)の間でクリップボードを共有するため、GuestAdditions のインストールをしました。メニューバーの[デバイス]-[Guest Additions CDイメージの挿入] するとデスクトップにデバイスが表示されます。

# yum -y install make gcc kernel-devel
# mount /dev/sr0 /media/
# cd /media/VBOXADDITIONS-*
# ./VBoxLinuxAdditions.run

後は同じくメニューバーの[デバイス]-[クリップボードの共有]-[双方向]をチェックすると、コンソールとホストOS(Windows10)の間でコピペができるようになりました。

プログラムのバグ修正

過去のエントリーのJavaScriptの連立一次方程式の解の分数表示のバグの件でしばらく放置状態だったことをお詫び申し上げます。詳細は以下の通りで、

分数の表示

分子と分母の絶対値をとってからユークリッド互除法で最大公約数を求めて、分母がプラスかマイナスかで条件分岐して、分母と最大公約数が等しいとき(分母=1のとき非表示)、分母と最大公約数が等しくないときを、解(x とy)でそれぞれで条件分岐して、分母にマイナスがあれば符号変換するフローに考え違いがあった模様。(ちょっと考えれば自明だったんですけどね。

[pmath]z=ad-bc<0[/pmath]のとき

[pmath]x=-{dp-bq}/{delim{|}{ad-bc}{|}}[/pmath]

[pmath]y=-{aq-cp}/{delim{|}{ad-bc}{|}}[/pmath]

var x1= d1*p1-b1*q1, y1 = a1*q1-c1*p1, z1 = a1*d1-b1*c1, x2 = Math.abs(x1), y2 = Math.abs(y1), z2 = Math.abs(z1);

if(z1 > 0) {
 if(gcdmemo(x2,z2) == z2) {
  document.getElementById('x').innerHTML = "x = " + x1/gcdmemo(x2,z1);
  if(gcdmemo(y2,z2) == z2) {
   document.getElementById('y').innerHTML = "y = " + y1/gcdmemo(y2,z1);
  }
  else {
   document.getElementById('y').innerHTML = "y = " + y1/gcdmemo(y2,z1) + "/" + z1/gcdmemo(y2,z1) + " = " + y1/z1;
  }
 }
 else {
  document.getElementById('x').innerHTML = "x = " + x1/gcdmemo(x2,z1) + "/" + z1/gcdmemo(x2,z1) + " = " + x1/z1;
  if(gcdmemo(y2,z2) == z2) {
   document.getElementById('y').innerHTML = "y = " + y1/gcdmemo(y2,z1);
  }
  else {
   document.getElementById('y').innerHTML = "y = " + y1/gcdmemo(y2,z1) + "/" + z1/gcdmemo(y2,z1) + " = " + y1/z1;
  }
 }
}
else {
 if(gcdmemo(x2,z2) == z2) {
  document.getElementById('x').innerHTML = "x = " + (-1)*x1/gcdmemo(x2,z2);
  if(gcdmemo(y2,z2) == z2) {
   document.getElementById('y').innerHTML = "y = " + (-1)*y1/gcdmemo(y2,z2);
  }
  else {
   document.getElementById('y').innerHTML = "y = " + (-1)*y1/gcdmemo(y2,z2) + "/" + z2/gcdmemo(y2,z2) + " = " + y1/z1;
  }
 }
 else {
  document.getElementById('x').innerHTML = "x = " + (-1)*x1/gcdmemo(x2,z2) + "/" + z2/gcdmemo(x2,z2) + " = " + x1/z1;
  if(gcdmemo(y2,z2) == z2) {
   document.getElementById('y').innerHTML = "y = " + (-1)*y1/gcdmemo(y2,z2);
  }
  else {
   document.getElementById('y').innerHTML = "y = " + (-1)*y1/gcdmemo(y2,z2) + "/" + z2/gcdmemo(y2,z2) + " = " + y1/z1;
  }
 }
}

CentOS7 LibreOffice

CentOS7.3 でGNOMEデスクトップに付いてくるオフィスアプリ、LibreOffice。

Calc, Writer, Draw, Impress と表計算、ワープロ、図形描画、プレゼンテーションの機能を持ったMS オフィス互換ソフトのひとつを触ってみました。

プログラムはJava で動くとのことで、表計算のcalc から[ツール]-[マクロ]-[マクロの管理]-[Libre Office Basic…] とポイントして当該ブックの[Standard]から[新規作成] をクリック。

プロシージャの先頭に、「Option VBASupport 1」と入力して試みに、Range(“A1”) = “Hello World” を「F5」キーで走らせると実行できました。

サーバーからGUI でオフィスを触る機会はないと思いますがLinux でも表計算、ワープロが使えるという発見でした。(セキュリティ的には好ましくありませんが・・・。

参考URL:

LibreOfficeマクロ入門講座 最低限知っておきたいこと

LibreOfficeでVBAを使う方法。1行おまじないを書くだけ!

CentOS7 新規ボリューム追加

VirtualBox のCentOS7 にXウィンドウズをインストールしようとしたら容量が足りず検索したところ、[設定]-[ストレージ]から新規ストレージの追加ができるようなので試みました。

が、しかしOSインストール時にパーティションを「標準パーティション」、「ext4」で作ってしまったので論理ボリューム拡張できずここで詰みました。CentOS7 のデフォルトは「xfs」だったのですね。CentOS7以前のresize2fs コマンドが通らずエラーが出るのでハマりました。xfs_growfs コマンドを通すためフォーマットも「LVM」、「xfs」でOSインストールからやり直しです。(うわぁ~ん

改めてOS再インストール後、新規ボリューム作成。

[コントローラー: SATA] を選択すると下のアイコンから追加ボタンが現れるのでウィザードから[新規追加]していきます。[ハードディスクのファイルタイプ] は私の場合、[VDI] で作ったので[VDI] にチェックして次へ。

[仮想ハードディスクファイル] に適当な名前を付けて容量を8GB と多めに取りました。[作成] ボタンをクリックしてOSを起動します。

# ll /dev/sd*

とコマンドするとストレージに/dev/sdb が追加されていることが確認できます。

これから新規ディスクにパーティションを作って論理ボリューム拡張して容量を増やしていきます。まず、fdisk /dev/sdb から。

# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x31600b47.
コマンド (m でヘルプ):

プロンプトで p と打つとパーティションが確認できます。はい、何もありませんね。

コマンド (m でヘルプ): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x31600b47

デバイス ブート 始点 終点 ブロック Id システム

コマンド (m でヘルプ):

新しくパーティションを作成していきますのでプロンプト n と打ちます。

コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):

Primary かextended か聞かれるのでprimary の p です。

Select (default p): p
パーティション番号 (1-4, default 1): 1

パーティション番号は、1 と入力します。次にセクター番号を設定します。開始を2048 、終了を16777215 とします。

最初 sector (2048-16777215, 初期値 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, 初期値 16777215): 16777215
Partition 1 of type Linux and of size 8 GiB is set

コマンド (m でヘルプ):

再び、p で確認すると/dev/sdb1 が作られていることが確認できます。

コマンド (m でヘルプ): p

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x31600b47

デバイス ブート 始点 終点 ブロック Id システム
/dev/sdb1 2048 16777215 8387584 83 Linux

コマンド (m でヘルプ):

プロンプトから t でパーティションの種類(8e)を選択します。

コマンド (m でヘルプ): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

プロンプトから w で設定を書き込みます。

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。

ここからpvcreate コマンドで物理ボリューム作成、vgextend コマンドからボリュームグループ拡張、lvextend コマンドから論理ボリューム拡張して、

xfs_growfs /dev/cl/root でルートディレクトリを拡張していきます。

df でルートの使用率を見ると、36%から16%に空き容量が増えました。