「趣味」カテゴリーアーカイブ

DELL venue8 pro がwindows10 201709 (fall creators update) へのアップデートで失敗

windows update に降ってきたので、何も考えずに venue 8 pro をアップデートさせたら、アップデートに失敗して起動しなくなった。

一応、USBメディアを作って再度インストールしてみるのと、それでも失敗したら回復パーティションから復帰させるという手段はある。

そろそろ買い替え時かなぁと思っていたものなので、実際やるかどうかは微妙かも。そうはいっても、似たようなサイズのSIMカードがさせるまともな windows10 タブレットで選べるものがほぼなさそうなので、Androidタブレットで買い替えることになるかも。微妙。

============

とりあえずは、起動時の青い画面(修復オプションとか)を無理やり出して、アップデート前の状態に戻したところ。早晩またアップデートの通知が来るので、どうしようかなぁ、と思っているところ。待っていても何も改善しそうにないところが悩ましい。

============

復旧して使っていたら、再度アップデートがかかり、今度はうまくいきました。何だったのか。

久々に3DSをやってる

久々に3DSのゲームをがっつりやってる。

ドラゴンクエスト11と、誕生日割引で購入したファイアーエムブレムechoes。

DQ11はまぁ、なんか隠しボス倒す前に全員レベル99まで上がって、鍛冶はまだまだ作ってないのが多いけど、まあわざわざやっても仕方ないので、それで終わり。

FEechoesは、1週目は普通にノーマルカジュアルで6章までクリア。
2週目はハードクラシックでファイアーエムブレムと電撃作戦を同時取得でクリア。なんかめちゃくちゃきつかったけど、ヌイババ館で30ターン以上かけても電撃作戦取れたので、ターン数的には割と余裕があるのかもしれないが、基本的にはレベル上げ出来なくて相当つらかった。

主人公の周りに集まって食事をしたり、限られた武器を物交換で使いまわしたり、5章のラスボスは最後は運任せで回避してなんとかなったり、という感じ。

今は3週目でDLCを使いまくっていろいろ遊んでいる感じ。まぁ、そのうちディープストレンジジャーニーが出たら買うから、それまでの話。

女神転生といえば真女神転生4finalもだいぶ遅ればせながら遊んだんだった。レベル100以上上がったり、HPが1000を軽く超えられたりしてやればどこまででもやれそうだが、まぁ、一通りエンディングを見たし、魔人装備もそろえたので、これ以上はもういいかなーというところ。最終的には仲魔いなくてもよくなる気がする。

CentOS7で、 anacron をはじめとした cron のメール通知を全て抑止し、内容をsyslogに出力するようにする

CentOS7で、あまりにも anacron に書いたスクリプト ( /etc/cron.weekly/ 以下のスクリプトとか) の出力がローカルのメールにたまっていた。普段はローカルのメールなんか読まないので、さすがに対応した。
続きを読む CentOS7で、 anacron をはじめとした cron のメール通知を全て抑止し、内容をsyslogに出力するようにする

メタプログラミングRuby第2版を読んだ

前の版のメタプログラミングRubyは読んでいたが、Ruby1.8時代の本なので、人におススメするには今となっては少し古いなぁと思っていたところ、タイムリーな感じで第2版を見つけたので読んでみた。

内容自体は第1版で読んでいたり、その後、実際に使っていたものだったので、個人的には難しくは感じなかったが、まぁまぁ読みやすくまとまっているかな、という感じ。
続きを読む メタプログラミングRuby第2版を読んだ

btrfs ファイルシステムをほかのデバイスにコピーする。

サーバのbtrfsボリュームのバックアップ用ドライブを新しくしたが、バックアップ用ドライブもbtrfsで用意すると、初回データコピーとかが楽という話。

ネタは https://wiki.archlinuxjp.org/index.php/Btrfs に書いてあるが、読み込み専用サブボリュームはどうやって作るんだっけ、と毎度調べているような気がするので、メモ。
続きを読む btrfs ファイルシステムをほかのデバイスにコピーする。

sonyreader prs-t3s が買えなくなってしまったようだ。

sony reader をもう一台買い足そうと思って調べたりしていたところ、先々月くらい?からもうsony storeでも出荷終了で、変えなくなってしまったようだ。
もう中古でしか買えなくなってしまったようで、結構残念。ちょっと悔しいな。

reader storeで結構買っちゃったので、いまさらほかのものに乗り換えるのもなんだし、物理キーがついてるやつとなると、あまり選択肢がない。
うーん。これからどうしようか悩む。

btrfsでCentOS7のルートディレクトリにしていたUSBメモリが壊れた。。。。

以前から調子が悪く、だましだまし使っていたCentOS7のルートディレクトリを入れていたUSBメモリがついに壊れた。

昨日btrfsが急にreadonlyでのマウントになっていた。

ログを見たりしたが、原因がわかるはずもなく、とりあえずカーネルが新しければなんとかなるかもしれんと思って、fedora23のモノにさしてみて、btrfs checkしてみたら、3つのスナップショットのツリーが壊れているようだったので、そのスナップショットを削除してみようとしたところ、削除できず(正確には30分ほど待ってもなんとも反応がなかった)。

もうこれはUSBメモリが壊れたんだろうなあと踏んで、USBメモリのファイルシステムを消したうえでchkflshで確認してみたところ、最後まで読み込めずにエラーで終了。その後、USBメモリはどうやっても認識させられなくなってしまった。(あ~あ)

もうしょうがないので、別のUSBメモリを用意して、ファイルシステムを作成。バックアップから復旧して、grub2-install やら kernel の reinstall やら grub2-mkconfig やらをして、復旧させた。

この別のUSBメモリというのも、windows8でReadyBoost用に使っていたものなので、耐久性にはおそらく難があって、また近々似たようなことが起こるかもしれない。
続きを読む btrfsでCentOS7のルートディレクトリにしていたUSBメモリが壊れた。。。。

SONY READER PRS-T3Sの画面が壊れた。。。

先日 sony reader を持ち歩いていたところ、画面が正常に更新されなくなってしまい、画像のようにスクリーン上側が切れてしまったようになってしまった。。。

これはたぶんスクリーンが壊れてしまったのだと判断して、いろいろ探してみると、iFixitの記事があった。

現在代替品を買うのも大変な状況で、仕方ないのでこれを真似してみるべくhttp://www.aliexpress.com/でスクリーンを注文した。送料込み3900円くらい。

中国の問屋か何かに直接発注できる楽天みたいな感じのサイトだったけど、今は到着するのを待っているところ。ちゃんと届くのだろうか、、、。

sony reader のスクリーンが正常に更新されない画像

codeiq @riverplus さんの「コード・トライアスロン2」問題をrubyで解いた

作題者によるまとめはhttp://togetter.com/li/971415から。
問題解説はhttps://codeiq.jp/magazine/2016/05/40858/から。

問題の概要はこちら。

■ 1 ■
四角形ABCDについて、∠ABD=a,∠CBD=b,∠ACB=c,∠ACD=d とおきます。
∠ADB を求めることを考えましょう。
さて、a,b,c,d の値(単位は度)に対し、∠ADB の値(単位は度)を 10^6 倍したものの整数部分を F(a,b,c,d) と定義します。
F(a,b,c,d) を求めるプログラムを書いてください。

■ 2 ■
自然数 n に対し、次の性質をもつ自然数 d の総和を G(n) と定義します。
  n を d で割った余りが 1 に等しい。
G(n) を求めるプログラムを書いてください。

■ 3 ■
先頭にゼロを持たない自然数であって、逆から読んでも同じ数になる数を回文数と呼びます。
自然数 m に対し、m 以下の回文数の総和を H(m) と定義します。
例えば、H(20)=56 です。20 以下の自然数では 1~9 と 11 が回文数だからです。

H(m) を求めるプログラムを書いてください。

■ 問 ■
標準入力から、半角空白区切りで自然数 a,b,c,d(a+b+c < 180 かつ b+c+d < 180)が与えられます。
標準出力に H( G( F( a,b,c,d ) ) ) の値を出力してください。

rubyで書いて提出した回答は下記の通り。

最初に提出したものでは f の計算で数値誤差があって間違った。この手の話は久々。
下のコードでは、切り捨て前に十分小さい値として0.00001をたしている。
この手の問題は整角四角形問題というらしい。学生の頃、三角関数なしでどうやって解くんだと悩んだ記憶がある。

h の計算では、1ケタの数は別に足しておいてから、11 から順に、回文数をひたすら小さい方から生成して順にたしているだけ。数値を文字列にしてひっくり返して足して、、と、手抜きだけど通ったのでまぁいいや、という感じ。

# 正弦定理で等しい辺の長さを探してごにょごにょいじると計算できる。
def f(_a,_b,_c,_d)
  include Math
  a=_a*PI/180
  b=_b*PI/180
  c=_c*PI/180
  d=_d*PI/180
  s=sin(b)*sin(d)*sin(a+b+c)/sin(a)/sin(c)/sin(b+c+d)
  ret = atan(sin(b+c)/(s+cos(b+c)))/PI*180*(10**6) + 0.00001
  ret < 0 ? (180000000 + ret).to_i : ret.to_i
end
# ナイーブに全通り1からnまで探索すると時間切れなので、少し工夫。
# n=(n-1)/d * d + 1 なので、nをdで割った余りが1のときは、
# (n-1)/dで割った余りも1になる。
# これを使って、1 から sqrt(n)までしか探索しない。
# また、nをdで割った余りが1でないときは、d*i(i>1)で割った余りも
# 1でないということを利用して、判断する回数を減らす。
def g(n)
  res=n-1
  max=Math.sqrt(n).to_i
  arr=Array.new(1+max, false)
  (2..max).each{|d|
    next if arr[d]
    if n%d == 1
      res+=d+(n-1)/d
    else
      (1..(max/d)).each{|i| arr[d*i] = true }
    end
  }
  res
end
# 回文数を小さい方から全通り生成して、mより小さければ結果に足す。
def h(m)
  i=1
  tmp=-1
  len = m.to_s.length
  if len == 1 # 1桁のときは別処理。
    return (1..m).reduce(&:+)
  else
    res=45
  end
  while tmp != res
    tmp=res
    str=i.to_s
    if str.length * 2 == len
      wk=(str+str.reverse).to_i
      res+=wk if wk < = m
    else
      ([""] + %w(0 1 2 3 4 5 6 7 8 9)).each{|sp|
        wk=(str+sp+str.reverse).to_i
        res+=wk if wk <= m
      }
    end
    i+=1
  end
  res
end

a,b,c,d=gets.chomp.split.map(&:to_i)
puts h(g(f(a,b,c,d)))

CentOS7 で logwatch の出力を抑制

CentOS7 で logwatch を導入したが、毎日メールが送られてきてつらいので、メールの出力を抑制してみた。

毎日メールを送る原因になっているのは以下の二つ。

  • postfix
  • zz-disk_space

というわけで、それぞれ /etc 以下にファイルを作って対策した。
続きを読む CentOS7 で logwatch の出力を抑制

CentOS7 の btrfs 領域でチェックサムエラーが出始めたので、ファイルを復旧して暫定対策した話

https://ttandai.info/archives/1894に書いた通り、btrfsではfsckしなくていいよ、ということだが、1か月ほど使ってから btrfs scrub したら、checksum error が /var/log/messages の中にいくつも出てきたので、とりあえず不良ファイルをバックアップから戻したあと、 logwatch の導入と btrfs scrub の定期実行で対策した話。

続きを読む CentOS7 の btrfs 領域でチェックサムエラーが出始めたので、ファイルを復旧して暫定対策した話

codeiq @riverplus さんの「ディビジョン・ナイン問題」をrubyとschemeで解いた

回答まとめはこちら

問題は下記。

1 から 4 の数字を使って作る n 桁の整数のうち、9 の倍数となるものの個数を F(n) と定義します。例えば、F(1) = F(2) = 0、F(3) = 10、F(4) = 40 となることが確かめられます。

標準入力から、自然数 n(1 ≦ n ≦ 20)が与えられます。標準出力に F(n) の値を出力するプログラムを書いてください。

1111…から4444…まで全通り生成して数えていては終わらないので、9の剰余で分類します。すなわち、1から4の数字を使って作るn桁の数字のうち、9で割ったあまりがrになるものの個数をF(n,r) とすると、
 \displaystyle F(n+1,r) = \sum^4_{i=1}F(n,r-i)
の漸化式になります。

これをrubyで計算し、F(n,0)を出力するコードが下記。Hashの引数が9で割ったあまりになっています。

n=gets.to_i
h={}
h[1]=h[2]=h[3]=h[4]=1
(1...n).each{|m|
  tmp=Hash.new{|h,k| h[k]=0 }
  h.each{|k,v|
    (1..4).each{|i|
      tmp[(i+k)%9]+=v
    }
  }
  h=tmp
}
puts h[0]

最近始めたschemeで書いたのはこちら、末尾再帰といえば聞こえはいいけど、ループを再帰にして、状態を関数の引数で覚えている、というだけ。もっとスマートに書けると思うんだけど、引数10個くらいだしまぁいいよね、ということで。

(use-modules (ice-9 rdelim))
(define (solve i a0 a1 a2 a3 a4 a5 a6 a7 a8)
    (if (= i 1)
        a0
        (+ (solve (- i 1)
                  (+ a5 a6 a7 a8)
                  (+ a6 a7 a8 a0)
                  (+ a7 a8 a0 a1)
                  (+ a8 a0 a1 a2)
                  (+ a0 a1 a2 a3)
                  (+ a1 a2 a3 a4)
                  (+ a2 a3 a4 a5)
                  (+ a3 a4 a5 a6)
                  (+ a4 a5 a6 a7)))))
(display (solve (string->number (read-line)) 0 1 1 1 1 0 0 0 0))
(newline)

なんかふつふつとやる気がでてきたので、ドメインとってブログのアドレス変えた。

なんかうりゃーっとやる気が出てきたので、サーバ業者が提供していた今までのドメインをやめて、新しくドメインとってWordPressのアドレスを変えてみた。

WordPress内部のアドレスを変えるのは、基本は「設定→一般」の設定項目でアドレスを変えるだけで、WordPress的には全く問題なくできる。
今までのサイトの方からは、一応301で新しい方にリダイレクトするようにしておいて、検索エンジン対策をしておく。(.htaccess で Redirect permanent な感じ)
(同じファイルを見るようにすれば手間はかからないが、新しい方のサイトがなかなかインデックスされないというはめになってしまうと考えた。)

WordPress自体はポータブルにできているようで、ディレクトリごとmvしてしまってもそのまま動いてくれたので、ありがたい。
あとは、いろいろなところのアドレスを直せばおしまい。よそからリンクしてもらってくれていたところは、この機会に直してもらおうかなぁ。
いまだにgooブログの方にちょこちょこと飛んでくる分があるので、なかなかgooブログをたためない、、、

CentOS7 の mailx コマンドで、外部のSMTPサーバを経由してメール送信

以前、sheevaplug のeximを使って、外部のSMTPサーバ経由でsendmailコマンドでメール送信する方法を記事にしたが、(https://ttandai.info/archives/758
CentOS7で同じことを実現する方法を探っていたら、結構前から、普通のmailコマンド(heirloom mailx になっている)のオプションで、普通に外部のSMTPサーバ経由でメール送信できるようになっていたので、メモを残しておく。(まぁ、このことに気付いたのは1年以上前なのだけれども、わざわざ記事にはしていなかった。最近これを扱う機会があったので、まぁ一応残しておく。)

この方法は root 権限なしでも可能なので、設定変更できないサーバ上でメール送信する際にも便利です。

続きを読む CentOS7 の mailx コマンドで、外部のSMTPサーバを経由してメール送信

edXを始めた

最近ゲームやら漫画やらも飽きてきたので、edXを始めた。
とりあえず、schemeでプログラミングのやつ(How to Code: Systematic Program Design)と、Open government のやつ。

始めはcouseraとか見たけど、無料ではenrollできない感じだったのでパス。
gaccoは、self-pasedなやつがパッと見た感じではなさそうだからなんだか面倒。
edXは、東大とか京大でも何かコースを出していたりするみたいだね。ふーん。たぶんとらないけど。

始めてみると、いろいろと視野が広がる気がして割と楽しい、が、いまさら社会科学系の論文を英語で読むのはちとつらいかなぁ。あとは、英語の発音がアメリカ英語じゃない場合があって、字幕をみないと混乱する。