Hatena::ブログ(Diary)

Marginalia

2017-08-15

行列式の展開



を x で展開すると



となるというのがよくわからない…
 
線形という構造へ―次元を超えて (大人のための数学) p.114

2017-08-14

RubyGem 'Salamander' がようやく動いたよ

RubyGem 'Salamander' が動かないよ - Marginalia
RubyGem の Turtle グラフィックスライブラリの使い方がわからないかったのだが、ようやく動き始めた。

例えばこんな感じ。
20170814205801

require 'bundler/setup'
require 'salamander'
include Salamander
include Salamander::Drawing

screen = Salamander.setup(410, 410)

Actor.draw(screen) do
  color :cyan
  circle 200
  color :green
  circle 150
  color :red
  circle 100
  color :magenta
  circle 50
end
screen.redraw

while true
  event = SDL.WaitEvent
  break if event.type == SDL::QUIT
end

 
こんなのは。
20170814205310

require 'bundler/setup'
require 'salamander'
require 'salamander/support/radians'
include Salamander
include Salamander::Drawing::Shapes

screen = Salamander.setup(300, 300)

Actor.draw(screen) do
  4.times do
    [:red, :green, :cyan, :magenta, :blue].each do |c|
      color c
      star 15, 100
      turn 18.degrees
    end
  end
end
screen.redraw

while true
  event = SDL.WaitEvent
  break if event.type == SDL::QUIT
end

 
こんなのも。
20170814215718

require 'bundler/setup'
require 'salamander'
include Salamander
include Salamander::Drawing

class Actor
  def grid(width, height, cells)
    origin = position
    
    (cells - 1).times do
      turn :right
      move height / cells.to_f
      turn :left
      line width
      turn :around
      move width
      turn :around
    end
    move_to *origin
    turn :right
    
    (cells - 1).times do
      turn :left
      move width / cells.to_f
      turn :right
      line height
      turn :around
      move height
      turn :around
    end
    move_to *origin
    turn :left
  end

  def main(screen)
    move_to 0, 0
    face :east
    grid screen.w, screen.h, 5
  end
end


canvas = Salamander.setup(300, 300)
Actor.new(canvas).main(canvas.surface)
canvas.redraw

while true
  event = SDL.WaitEvent
  break if event.type == SDL::QUIT
end

 
以上はここにある samples を手直しして頑張って走るようにしたもの。一生懸命にソースコードを読んでやりましたよ。自分には相当にわかりにくかった。実力のある人ならともかく、複雑に require したり include しなければならないのがまるで暗号を解くような感じ。ソースを読まないと使えないって、初心者に対してやさしくないですね。

degree メソッドを使うのに require 'salamander/support/radians' しないといけないなんて、そんなのわかるかっての。

2017-08-11

ダイアリーのテーマ・デザインのスペルミス修正

ダイアリーのテーマ・デザインの「最小限度にシンプルで目にやさしい」ですが、スタイルシートCSS)にミスがありました。
 

h3 a.sectioncategory {
    color: #5f9a41;
}

であるべきところが、中括弧を閉じる「}」が落ちていて、

h3 a.sectioncategory {
    color: #5f9a41;

となっています。よって、これ以降の CSS が無効になっています。

修正は、[管理]→[デザイン]→[デザイン編集]→[スタイルシート] の部分を上のように修正して下さい。

なお、公開デザインの方は既に修正してあります。

失礼いたしました。

2017-08-06

apt で google の更新に失敗する + 「破損パッケージ」

Linux Mint 18.2 でパッケージのアップデートに失敗します。

署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: http://dl.google.com/linux/chrome/deb stable Release: 
公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 6494C6D6997C215Ehttp://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg 
の取得に失敗しました  公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 6494C6D6997C215Eいくつかのインデックスファイルのダウンロードに失敗しました。
これらは無視されるか、古いものが代わりに使われます。

これは例えばここなどにあるとおり、

$ wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

OK なようです。

しかしこれでシステムをアップデートしようとすると、

システム上に 1 個の破損パッケージがあります!

それを特定するために"破損"フィルタを使用してください。

というエラーがでます。「"破損"フィルタ」というのがよくわからないが、Synaptic の「カスタムフィルタ」の「破損」を適用すると vlc が壊れているようである。ここで「破損パッケージの修復」というのがあるので実行。すると「依存問題の修復に成功しました」とあるのでいいかなという感じ。で、「適用」を選択すると

E: /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb: '/usr/bin/rvlc' を上書きしようとしています。これはパッケージ vlc-nox 2.2.2-5ubuntu0.16.04.3 にも存在します

というエラーが出て意味不明。

なので、もういちどコマンドライン

$ sudo apt-get -f install

をすると

.../vlc-bin_2.2.6-3~xenial1_amd64.deb を展開する準備をしています ...
vlc-bin (2.2.6-3~xenial1) を展開しています...
dpkg: アーカイブ /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/bin/rvlc' を上書きしようとしています。これはパッケージ vlc-nox 2.2.2-5ubuntu0.16.04.3 にも存在します
dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました
処理中にエラーが発生しました:
 /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

でダメ。
 

$ sudo aptitude install vlc-bin

.../vlc-bin_2.2.6-3~xenial1_amd64.deb を展開する準備をしています ...
vlc-bin (2.2.6-3~xenial1) を展開しています...
dpkg: アーカイブ /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/bin/rvlc' を上書きしようとしています。これはパッケージ vlc-nox 2.2.2-5ubuntu0.16.04.3 にも存在します
dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました
処理中にエラーが発生しました:
 /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Failed to perform requested operation on package.  Trying to recover:
dpkg: 依存関係の問題により vlc の設定ができません:
 vlc は以下に依存 (depends) します: vlc-bin (= 2.2.6-3~xenial1) ...しかし:
  パッケージ vlc-bin はまだインストールされていません。

dpkg: パッケージ vlc の処理中にエラーが発生しました (--configure):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 vlc

となってダメ。これで詰みました。もう少し情報が出てくるのを待つしかないみたい。

 

続き

再チャレンジ。

vlc-bin, vlc-nox あたりが問題源だとわかったので、次のコマンドを実行。

$ dpkg -s vlc-bin
Package: vlc-bin
Status: install ok not-installed
Priority: optional
Section: video
Architecture: amd64

$ dpkg -s vlc-nox
Package: vlc-nox
Status: deinstall ok installed
Priority: optional
Section: video
Installed-Size: 9266
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Source: vlc
Version: 2.2.2-5ubuntu0.16.04.3
Provides: mp3-decoder
Depends: liba52-0.7.4, ...

 
なるほど、vlc-noxdeinstall すればいいと。しかし deinstall って何だということで、$ man dpkg を実行。すると

 deinstall
              The package is selected for  deinstallation  (i.e.  we  want  to
              remove all files, except configuration files).

とある。コンフィグファイル以外は消せと。さらに見てみると

ACTIONS
       -r, --remove package...|-a|--pending
              Remove  an  installed  package.  This  removes everything except
              conffiles, which may avoid having to reconfigure the package  if
              it  is reinstalled later (conffiles are configuration files that
              are listed in the DEBIAN/conffiles  control  file).   If  -a  or
              --pending  is given instead of a package name, then all packages
              unpacked, but marked to be removed in file /var/lib/dpkg/status,
              are removed.

              Removing of a package consists of the following steps:

              1. Run prerm script

              2. Remove the installed files

              3. Run postrm script

どうやらこれのようだ。

なので

$ sudo dpkg -r vlc-nox
(データベースを読み込んでいます ... 現在 873604 個のファイルとディレクトリがインストールされています。)
vlc-nox (2.2.2-5ubuntu0.16.04.3) を削除しています ...
man-db (2.7.5-1) のトリガを処理しています ...

うまくいったっぽい。で、

$ sudo apt-get -f install

をしたら vlc-bin がインストールされた。これで OK!

あとは $ sudo apt-get upgrade でおしまい。


※参考
apt-getによる依存関係の解決方法

2017-08-03

無題

国道22号線沿いにて車中から。いっぱい開いた穴は消音用なのだろうか。