ぶろぐめんどくさい

技術系の記事と漫画レビューが入り混じった混沌

ラズベリーパイの固定IP覚え書き(ネットに繋がらない場合)

ラズパイを固定IPにするには以下の設定をする。

sudo nano /etc/network/interfaces

iface eth0 inet static
address 192.168.1.*
netmask 255.255.255.0
gateway 192.168.1.1

ラズパイを固定IPにしたらネットに繋がらなくなった。 (apt-getでエラーを吐く、Webページが表示されない)

原因は2つ。

まずひとつ目は、gatewayが正しく設定されていなかったから。 正しいgatewayはラズパイに直結しているルータのプライベートIPである。

二つ目は、DNSサーバの設定がうまくいっていないから。 DNSを設定するには/etc/resolv.confにIPアドレスを追加する。

sudo nano /etc/resolv.conf

nameserver *.*.*.*

resolv.confは再起動のときに追加した内容が削除されることがある。 解決するにはinterfacesにDNSIPアドレスを設定すればいい。

sudo nano /etc/network/interfaces

dns-nameserver *.*.*.*

ということで時間を潰すことのないようにしたいものです。

「乙嫁語り」のパリヤさんがにんまり不器用可愛い

乙嫁語り」8巻読みました 相変わらずの緻密な書き込みに圧倒されます。

8巻の主役は「まだあわてあわてあわわわわわ」と言い出しそうなこの女の子。 名前はパリヤさん。

f:id:be116:20161102214444p:plain:w300

8巻を読んで感動しました。 なにに感動したかって? パリヤさんの可愛さにですよ。

パリヤさんはね人付き合いが苦手なんです。 なかなか自分をうまく出せないのです。 赤面に沈黙を貫いた挙句、言っちゃいけないことも言っちゃう、良く言えば「本音」をぶつける、悪く言えば「面倒な」な女の子でした。 もっと明確に言えばツンデレな女の子でした。

乙嫁語り」の舞台では、年頃の女の子を「嫁入り」に出すのが風習です。 お年頃のパリヤさんも「嫁入り」の準備を進めていました。 しかし、この地方の殿方には「ツンデレ」の良さがわからなかったのか、 パリヤさんは「嫁入り」を断られ続けるのです。 そんなパリヤさんも「女は強気の方がいい」というわかってるな感を出す男の子とようやく巡り合うのですが、 主人公を巡って起こった民族間紛争(6巻参照)により嫁入り道具の大半が焼失してしまうという不幸に見舞われます。

長い年月をかけて準備してきた嫁入り道具。 もう一度準備が整うまで早くても2、3年は必要だそうで。 一度「自分は結婚できないんですよ、そういう星の下に」的な一悶着もありながら、パリヤさん一同は「嫁入り」の準備に取り掛かります。

パリヤさん達の民族は刺繍にこだわりがあり、皆さん刺繍の入った華やかな衣装を着ています。 嫁入りの際には刺繍を入れた布製品をたくさん用意する習わしがあるようで、その準備が大変だとか。

パリヤさんは刺繍が苦手。パン作りは得意だけど刺繍は苦手。 族長の指導のもと、嫁入り修行の始まりです。 「誰かを思って縫いなさい」 族長からの言葉を聞いて刺繍に取り組むパリヤさん。 誰を思って縫ったのか。 答えは聞くまでもありませんが、「あれれーまったく検討もつかないな―」という方のためにここで大ヒント。

f:id:be116:20161102222943p:plain:w300

恋する乙女の顔ですよ、こいつぁ…。

ついにあらわになったパリヤさんの女子力。 その後のパリヤさんはひと針ごとに「未来のお婿さん」のことを思い浮かべるのでした 。

f:id:be116:20161102223219p:plain:w300

にやにやがとまらないよパリヤさん!!!

f:id:be116:20161102223611p:plain:w300

笑顔が不器用すぎるよパリヤさん!!!

私、わかりました。 女の子の可愛さは笑顔にあったんですね。

乙嫁語りが面白かったし可愛かった(雑記)

乙嫁語り読んでたら悶絶したので今度記事にします。 パリヤさん可愛いほんとかわいい。 にやにやするパリヤさんを見てこっちがにやにやするんです。

今ちょうどゼミ用の進捗報告のスライド作ってるんですけどなんかあれ、駄目ですね。 一部のスライドを英語で書いてみて思ったんですが、満足感が全然違う。 適当なこと書いてても「はわぁすごい綺麗…」てなりますね。はわぁとかは言わないですけどね。

というわけで乙嫁語り9巻が待ち遠しいなーといった次第。

訳あって、各文字の出現回数を測定するプログラム(C)を書いた。

訳あって、各文字の出現回数を測定するプログラムをC言語で書きました。

(こういう処理ってどういう名前がついてるなの…? word countであってるなの…?)

プログラムを書くにあたって、二通りに場合分けをしました。 一つは0回以上出現した文字だけを測定して出力する場合、 もう一つは任意の文字だけを測定する場合。

まずは0回以上登場した文字だけを測定して出力するプログラム。

#include <stdio.h>
#include <math.h>

int main()
{
  size_t size = pow(2, 8); // 1byte = 2^8bit
  int word_counts[size];
  char c;
  int i;

  // 初期化
  for (i=0; i<size; i++) {
    word_counts[i] = 0;
  }

  // 文字数をカウント
  while(scanf("%c", &c)!=EOF) {
    if (c == '\n') continue; // 改行は無視
    if (c == ' ') continue; // スペースは無視
    word_counts[c]++;
  }

  // カウントが1以上の文字のみ出力(文字 カウント)
  for(i=0; i<size; i++) {
    if(word_counts[i]==0) continue;
    printf("%c %d\n", (char)i, word_counts[i]);
  }

  return 1;
}

次に任意の文字の出現回数を測定するプログラム。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *template = "abcdefghijklmnopqrstuvwxyg0123456789"

int main()
{
  size_t size = strlen(template); // templateの文字数
  int word_counts[size];
  char c;
  char *str;
  int i;
  int index;
  
  // 初期化
  for (i=0; i<size; i++) {
    word_counts[i] = 0;
  }

  // 文字数をカウント
  while(scanf("%c", &c)!=EOF) {
    str = strchr(template, c);
    if(str==NULL) continue; // cで指定した文字が見つからなかったら次の文字へ
    index = size - strlen(str);
    word_counts[index]++;
  }

  // templateとword_countsを対応付けて出力(文字 カウント)
  for(i=0; i<size; i++) {
    printf("%c %d\n", template[i], word_counts[i]);
  }

  return 1;
}

前者は後者よりもメモリを多く使う代わりに高速。

後者は前者よりも遅いが、使用するメモリ領域が少ない。

bash on ubuntu on windowsでmysql.connectorのインストール

以下のページからmysql-connector-python~.debを入手。

MySQL :: Download Connector/Python

ダウンロードしたディレクトリに移動して 次のコマンドでインストール。

dpkg -i mysql-connector-python~.deb

これでmysql.connectorがimportできるようになります。

購入早々パスコードを忘れてiPad Proが文鎮化した話

まえがき

iPad Pro買いました。いやあ、便利ですねえ。今まで7インチのタブレットを使っていたのですが、それに比べて画面が大きく、とりわけApple Pencileの使い心地が最高です。約9万円の出費の価値がありました。いつかレビューでも書こうかと思うのですが、その前に。iPadProが文鎮化した話をしましょう。

文鎮化の経緯

iPad Proが文鎮化したのは今朝の出来事です。 今朝は、大学(院)生の夏休み特有の長時間睡眠からほとんど昼近くに起床しました。就寝前に弄っていたため手近にあったiPad Proで時間を確認しようとホームボタンを押したところ充電が切れていました。iPadがなければ生活できない」と思ったような思わなかったようなでもどっちでもいいのですが、とにかくすぐにiPadにケーブルを繋いで充電しました。そろそろバッテリーも溜まった頃だろうとiPadの電源を入れます。『スライドしてください』と書かれたロック画面が表示されます。Touch Idというホームボタンに指を置くだけでロックが解除されるという素晴らしい機能、要は指紋認証なのですが、それを利用する便利さの虜になっていた私は、ボタンを押せばバナナが出てくることを知った猿のようにホームボタンに指をおきます。するとパスコード入力画面が現れました。

『再起動後にはパスコードを入力してください』なるほどなるほど、そういう仕組みになっているのか、はーん。私の記憶はあやふやでした。パスコードってなんだったっけ。そもそも、パスコードの設定とかしたっけ? とりあえず、おそらくこれだろうといった文字列を入力してみました。テキストエリアが「それは違うよ!」と左右に揺れます。入力ミスかな? もう一度入力してみます。「それは違うよ!」彼は左右に首を振ります。これは違う、じゃあこっちだろう! と今度は別の文字列を入力してみます。これでどうだ「それは違うよ!」

詰んだ、と思いました。他に思いつくパスコードがなかったからです。それでも諦める訳にはいきませんでしたから、入力ミスであることに希望を託し何度かそれらの文字列を試してみます。ついに、『1分間、ご使用のiPadは使えません。』という表示が出ました。一分後、もう一度ロック解除を試みます。『5分間、ご使用のiPadは使えません』駄目です。解除できません。5分後、もう一度挑戦します。『15分間』もう駄目だぁ…おしまいだあ…。

パスコードの入力を諦めた私は、どうすればロック画面の解除ができるのか探し始めました。まず、パスコードを確認する方法や変更する方法がないことがわかりました。次に、iPadを出荷状態に初期化する方法にたどり着きます。これをしてしまうとiPadに入っていたデータは消えてしまいますが、ロック画面をパスコード無しで突破するには他に方法はないようです。アプリを入れ直さないと行けないといったことは面倒に思いましたが、幸い、購入して1週間も経過していないので、iPadには消えて困るようなデータはなく、iPadを初期化することにしました。

iPadの初期化

iPadを初期化する方法は2つありました。一つ目はiCloudからインターネット経由でiPadを初期化する方法。二つ目はPCにケーブルを繋いでiTunesを使用してiPadを初期化する方法。iCloudを利用する利点はPCがなくてもどうにかなることと、Webで操作できるため面倒な手順を踏まなくても良いことです。私ははじめiCloudを使う方法を行うつもりでした。結果を言うとこの方法は今回の場合には使えませんでした。iPadがネットにつながっていなかったからです。機能まではWifiの設定もしてネットを使っていたのですが、どうやら再起動後のiPadはロックを解除しない限りWifiが使えないようです。なんだ、じゃあiTunes使うか。ということになりました。

そもそもですが、私のPCにはiTunesが入っていませんでしたので、iTunesのインストールから始めました。インストールが終了、iTunesを開きます。iPadを初期化する項目が何処かにあるだろうと画面上を探してみます。あれ、どこにもない。もう一度よく調べてみると、どうやらiPadの初期化のためには、まず、iPad側から手順を踏む必要があるようです。iPadiPhoneに搭載されているiOSには初期化のためのリカバリーモードというものがあって、音量を下げるボタンと電源ボタンを押しながら再起動をすることでそれに入れるそうな。試しに再起動してみます。いつものロック画面が表示されました。もう一度よく調べます。iPhoneの場合だと先程の手順でリカバリーモードに入れるそうですが、iPadの場合は違うようです。iPadにおいてのリカバリーモードに入る方法は、電源ボタンを押しながらホームボタンを押し続ける、だそうです。これか、と思いながら試してみます。お、画面が違うぞ! 無事、リカバリーモードに入ることができました。

iPadリカバリーモードに入ったことで、iTunesiPadの復元を促すダイアログが表示されます。何も考えず、復元を選択し、規約に同意しました。すると復元のためのデータをダウンロードといった画面に切り替わりました。これで安心、と思いきや、すぐに不明なエラー(-31)が発生したといったダイアログが表示されました。やばい。これはやばい。ネットで調べます。それっぽい解決策を書いたページはどこにもありません。これはやばい。やばい。語彙が少なくなってきましたが、困ったときは、とりあえず、再起動。これで解決するかどうかは不安でしたがそれ以外に方法がありませんでした。迅速かつちょっぱやな再起動。SSDの恩恵を感じました。ここであることに気づきます。あ、そういえば、XAMPP、起動したまんまだった。iTunesを開きます。iPadのケーブルを繋ぎ直し、復元のダイアログが表示されます。復元押して、同意して、…今度はエラーがでません。やったー! 原因、明らかにこいつでした。

というわけで無事ダウンロードまで行き着き、77分というダウンロード時間に驚きながらもiPadの初期化はなんとか終えることができました。ここまで長かった…。 一度は寝たきりだったiPad Proも今では元気にお庭を走り回っています。めでたし、めでたし。

<<今回、思ったこと>>

パスコード、ちゃんと設定してたなぁ…