へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)! #vZkt8fc6J

Resolving "OSError: cannot write mode P as JPEG" Completely.

In this article, I'm going to talk about the following error. I assume this error is mainly related to Python but maybe it can be applied to other cases.

OSError: cannot write mode P as JPEG

This error originally comes from Pillow, a python package and PIL fork. In my case, this error was reported on Sentry, an error monitoring and reporting tool.

Reproduction

I could replay causing the error according to the following step.

1. You should prepare an 8-bit PNG file. I think it's not in trouble if you download from a website, unless you make it public.
2. Just change the extension name of the filename. It means if you download the PNG file, possibly it has ".png" So you should change the extension to ".jpg" intentionally.
3. Execute im.save() using this file.
4. "OSError: cannot write mode P as JPEG" happened.

Causation

An 8-bit PNG file is referred as P mode in Concepts — Pillow (PIL Fork) 3.1.2 documentation

However, JPEG format doesn't support this P mode, using 256 color palette. Neither Pillow nor PIL does. This is probably a specification of JPEG (I didn't search this in detail.)

That is why, the error occurred.

So I think the main reason this happened is a lack of some implementation which checks incoming data is valid or not. (Technically, it's just our case.)

Resolution

You can find codes easily and apply it if you only want to avoid this error.

python - Getting "cannot write mode P as JPEG" while operating on JPG image - Stack Overflow

OR

Caught IOError while rendering: cannot write mode P as JPEG · Issue #95 · SmileyChris/easy-thumbnails · GitHub

are convenient references.

This might work. However this way causes another trouble such as all files become RGB formatted files.

I belive the Image.format in the reference satisfies for this problem. Once you get an Image instance by doing Image.open() or whatever, you easily get the format.

Image Module — Pillow (PIL Fork) 3.1.2 documentation

This is like the following.

>> im.format
"PNG"

In my case, I thought this is the best solution, though it still has a problem that its format and extension don't match.

def im_save_cleanly(im, filepath):
    if im.format == 'PNG':
        im.save(filepath, 'PNG')
    else:
        im.save(filepath)

im_save_cleanly(im, 'foo/bar.jpg')

Now, that's all!!

Twitterから日本語を排除し英語だけを使うようにして2年が経ったので効果とかを書いてみる

f:id:haruharu1:20190406061357p:plain

契機

2017/03頃から、Twitterをほぼ英語だけでつぶやくことにしました。(たまにリプライなどで日本語を使うことや、日本語のツイートをリツイートすることはあります。最近ではルーンファクトリー5の情報とか)

英語圏の情報だけに集中したかったからです。

それとTwitterを特に目的意識無くずっと眺めていたので、英語にすれば英語を読むんじゃね?と思って日本語を排除することにしました。これはそこそこ機能しました。

ちなみにそれ以前も実は完全に日本語だったわけではなくて、日本語でつぶやきつつ英語でもつぶやくという共存状態でした。

それで、2017/03に日本語をタイムラインに流してくる人(主に日本人全員)をリムりました。有名人だからとか知り合いだからとか関係なくリムりました。200人ぐらいフォロー数を減らしたと思います。フォロワー数もとても減りました。

ただゼロになったかというとそうではなくて、一応今もタイムラインに日本語が極稀に流れてくることがあります。日本語の底力を感じます。

ちなみに日本人だけじゃなくて、やたらスペイン語を使う人、やたらアラビア語を押してくる人とかもその都度リムりました。数回ぐらいならいいですが、頻繁にやられるとリムってました。

方針として、たまに人からフォローされるんですが、そのときにプロフィールを見て、ほとんど英語ばかり使う人だったらフォロー返しするという戦略をとっています。一度フォローして日本語など英語以外が頻繁に(1ヶ月に何度も)流れてきたらリムるようにしています。

失礼を承知でいうと、感覚的に日本語をタイムラインに流す人は「よくTwitterで何かの宣伝ばかりしている人」というような感じです。

負の効果

日本のプログラマ文化に疎くなります。今日本で何が流行ってて、何が主流とか、そういう情報が一切入ってきません。なのでときどきはてブを覗きに行ってました。

また、日本のコミュニティと断絶を感じるようになりました。かといって別に英語圏のコミュニティに入るわけでもなく、単にアウトサイダーみたいな感じになってました。わろた。

こうして海外の情報にも日本の情報にもそれほど詳しくない人になりました。

フォロワーさんからリツイートやいいねされるぐらいと、外国人の人とたまに会話するしかTwitter上でコミュニケーションがないので、ときどき日本語でツイートしては削除していました(意思の弱さよ)

正の効果

ちょっとだけ英語が上手になりました。ただそれはTwitterだけの効果だったわけではないと思っています。

タイムラインに流れてくる英語を自然と読んだり、記事へ飛んでたりするので、英文に慣れたというのはちょっとだけあります。

でも相変わらず読めないものも多いです。特に文化に密接に絡んでいるものは、背景が全然わからないので文は読みとれていても「ハァ?」となることが多いです。アメリカの有名人について知ってないと笑えないツイートとかがあるのでそういうのは最近「何言ってんだコイツ」とスルーしています。あと見たことのない単語が毎日出てくるので、割と辞書を引いています。

あとは海外でフォローした方がいい人というのがなんとなくわかるようになりました。

正直英語はそこまで効果を実感してないですが、なんとなく綺麗に英語を書けるようになったのかなという印象はあります。

それから日本でぎゃーぎゃー言われていても英語圏の方では話題にもされてないとか、海外のテロ情報が日本では話題にされてないとかあるので、比較的どちらの文化も冷静に見ることができるような気がしています。

感想

あんまり人にはオススメしたくないです。

日本人をリムったのは失策でした(そしてフォロワーの人ごめんなさい)

誰をフォローしていたのか全然覚えてないし、日本人コミュニティでの立ち位置を失った感じがします。日本の情報が入ってこないので、どこで何のカンファレンスが開かれているとかそういう情報は会社の人経由でしか知れません。情弱になってしまいました。

その代わりシドニーシリコンバレーで開催される勉強会やカンファレンスの情報は入ってきます。わろた。

やるべきだったのはリムるのではなく、単にアカウントを分けることだったと思います。一応去年日本語専用アカウントを作って分けたんですが、長年にわたって英語アカウントを使っていたので、日本語でつぶやくという習慣が損なわれていました。だから日本語アカウントの方はほぼ使ってなくて、だいたい月に1回ツイートするペースです(直近は3ヶ月使ってない)

言語を混ぜないというのは正解で、混ぜると機能しないと思います。複数の言語を使う人はアカウントはわけたほうがいいと思います(GitHubのように、活動する場所によって言語が違うのならわけなくてもいいけど)

自分の中では、日本語へ後戻りできなくするためにリムったので、日本人コミュニティからちょっと離れてしまったのは痛手だったけど、一応英語だけにしたのは最善手ではなくても好手だったのかなと思っています。

そんな感じでした。

電車での席確保で必死になってしまう理由について、知らない人にもわかりやすいように解説してみた

ラッシュの間立ち続けるのと座れるのでは疲労度が根本的に全く違う ―― 都市圏電車通勤の人の声

ラッシュ時に立ち続けるのはしんどい

電車の車両の定員は、あの狭い空間でだいたい140人程度となっている。ラッシュ時にはそこに300人以上が乗る。それが15両ほどあるので、1つの電車に4500人程度が乗っている計算になる。

↓簡単にいうとここに300人が乗る(厳密には違うけど)

http://www.uraken.net/rail/chiho/chihoku/cr75f.JPG

日本を走る鉄道車両図鑑 - 日本の旅・鉄道見聞録 から引用

300人という人数は多いので、人間の頭では微妙に想像しにくい。

中学校や高校でいうなら、最近は30人クラスなので10個のクラス分の人数であることを想像すると、わかりやすくなると思う。

1学年5学級程度の規模の学校の2学年分の人数が押し込められていることになる。

卒業式の在校生練習などを思い出してほしい。あの人数が、この車両1つに入るのだ。狂気としか形容しようがない。

ともかく、狭い車両に300人が乗るということはつらいことだ。まず人間と人間がギュウギュウ詰めで体が痛い。衛生的にヤバそうな人とも接触しなければならない。

そういう状況に300人がなっている。

なのでみんなストレスが異常なことになっている。

こうしたストレスをみんな理性ギリギリのところで抑えている。だから、みんな人を思いやる余裕などない。

そういう状況で、ドカドカ入ってこられたり、ぎゃあぎゃあ騒がれたり、喧嘩が勃発したり、イヤフォンから音漏れがあったり、電話しているやつがいたりして、ストレスはさらに強化される。そういう状況が、1時間、2時間と続く。さらに帰りの電車もある。

これが毎日続くのだ。20日×12でだいたい240日続くのだ。

そしてこう思う。「もうダメだ」と。

しかし人間は、そんな絶望的な状況で活路を見出す。

席に座ることができるエリート

電車には座席が多くある。多くと言っても、だいたい36人程度分しかないが、ともかく座ることができる。300人中36人だけが、座ることを許される。

座れることはそんなに嬉しいのか?もちろん嬉しいにきまっている。

ひとたび座れると、その恩恵は凄まじいものだ。第一に、まず人と接触しなくてもよい。全く見知ってもいないし、わけのわからない、人生において少しも関わらないであろう謎の人たちとの接触を、しなくてもよいのである。

また、座れることによって自分のスペースを確保できる。そのスペースは立っている人の3倍ほどになる。本も気にせず読めるし、スマホを触っていても「迷惑だな。殺すぞ!」と思われない。立っていて死にそうになっている人を横目に、自分は優雅に通勤・通学できるのである。

「席に座れる」ということは、立つことに比べてそれだけ価値が高いのである。

だから必死になる。

「席に座れる」ような場所に住むためには、家賃をたくさん払え

席を確保するための仁義なき戦いは、実は住む家を決める前から決まっている。混雑率が異常な路線周辺の家々は、全然混雑していない家々の家賃と比べて圧倒的に安いのである。

もちろん会社の出社時刻にもよるので、10時に出勤していいようなところだと、混雑する路線でもそうした仁義なき戦いとは無縁でいられる(ただし帰りは除く)

基本的に「ラッシュ時に席確保に必死になるなんてあさましい」という人は、そうした混雑とは無縁でいる。

そういう人は、席に座れるという価値を低く見積もっている。「全く座れない×長時間×毎日」を解消するために、生活レベルが下がってもいいから家賃の高い場所に住んだり、給料は下がってでもいいから東京を出て地方都市に住む人々もいる。

だから、根本的に電車の混雑というのは社会問題である。個人の力で脱出できるとはいえ、それには金がかかる。

言い方は悪いがラッシュが「現代の奴隷船」というのは本当にその通りだとしか言いようがないのである。

それでも席取りの必死さは確かに気持ち悪い

もちろん、席の確保に必死になる様子は見ていて気持ちのいいものではない。

「人間あそこまで落ちたら終わりだ」というような奪い方もある。「妊婦?乗るな!邪魔だ!死ね!」「犬を乗せるな!邪魔だ!帰れ!(盲導犬)」と言う人は犯罪的なレベルで下劣だ。

こういう人たちを擁護する気持ちは一切ない。ただし「妊婦が邪魔」「犬が邪魔」と心の隅でふと思ってしまう気持ちはわからなくもない。

解決方法?

会社にわざわざ通わずに仕事ができるリモートワーク(テレワークともいうらしい)や、出社時間をフレックスタイム制にする方法がある。政府は推進しているけど、そこまで機能しているとは思えない。

学校にしたって何も絶対8時からやらなければいけないわけではない。

もちろん解決するためにはいろいろな問題が山積みだったりする。「うちの会社でそういうのは原理的に絶対無理!」ということもある。

とにかく「席取りごときに必死」という、貴族的立ち位置から単に罵倒するのでは、「自分はそれとは無関係だとする優位性」を示しているだけに過ぎない。

そうではなく、「席取りに必死にならなければいけない都市社会」という問題がただ目の前に堂々と立っており、日本の社会を蹂躙しているだけであるという認識が、ぼくたちには必要なのだと思う。

Macで最近取ったスクショをHTMLimgタグとかにして使う簡単なスクリプト

ぼくはデスクトップに出力されるのでこんなかんじ。 scsho.sh とかいう名前は適当。Macのデフォルトで screencapture というコマンドがあるのでそれだけ注意する。

scsho.sh

f=$(ls ~/Desktop/ | grep "Screen Shot" | tail -n 1)
echo $f
echo "<img src=\"$f\">" | pbcopy
$ sh scsho.sh

これでペタペタできるので便利

「プログラマの三大美徳」とかいうのは基本的に時代遅れで、間違っていて、おかしい

プログラマの三大美徳というのは次の3つだと、Perlを作った人が言ったけど、これを言葉そのままに捉えると全然違うことになる。

・怠惰(Laziness)
・短気(Impatience)
・傲慢(Hubris)

ぼくはこれは間違っていて、次の3つの方がより正しいと思う。

・勤勉
・根気
・責任感

☓怠惰 ○勤勉

ここで言う怠惰というのは「効率をよくするために努力することをいとわない」ということらしいけど、そういうのは「怠惰」という言葉から読み取れない。実際プログラミングでも Lazy は遅延評価の場合に使われる英単語なので、 Laziness がいい場面もあれば良くない場面もある。だいたい「効率をよくするために努力すること」は「怠惰」ではないし、「効率が悪いまま思考せずに続けること」が「努力」でもない。むしろ後者のほうがよほど怠惰であると思う。

こういった考え方はたぶん昔にはそんなにありふれていなかったからだろうけど、今この時代に「怠惰」が大切だと言われてもピンとこない。

昔は「横着すること」と「工夫すること」と「発明すること」と「効率化すること」についてそれほど分別がついていなかったのだと思う。「やりたくないからそういうことするんでしょ」という発想が多くを占めていたと思う。それがいつ頃からか「効率的にできるのにそれを避けて愚鈍な"努力"を続けるのはダメ」というような思想が世の中にだいぶ根付いてきた。それを逆に利用されて「努力なんてバカバカしい」というような風潮もあるけど、怠惰という言葉は、どちらかというとこの風潮に似合う。

昔の話はともかく、勤勉さが重要なのはプログラマでも変わらず、たとえばバグ1つ取るにしても正確に調べてから直すのと「なんとなくここを直せば直るかも」という予測のままに直すのでは全然違う。ここでは前者が「勤勉」で、後者の方が「怠惰」だと思う。

また、良いプログラマになるには仕事以外でも何かしらにコミットすることは不可欠だと思う。それはたとえ楽しみながらやっていても絶対に「怠惰」ではない。

この「怠惰」というのは「ただ勤勉でありさえすればよい」に対して警鐘を鳴らしたものであると思う。なので怠惰という言葉に惑わされるべきではないはずだ。

もちろん「ただ長い間働くこと」は「勤勉」ではないと思う。

☓短気 ○根気

プログラマは短気ではいけない。基本的に根気が要求される。

根気というと「つらいことをじっと耐え忍ぶ」という意味に聞こえてしまうけど、耐えるのではなく、前進しながらあるいは戦いながらやり続けることであって、「つらいことを耐えてさえいればよい・無抵抗であればよい」という意味ではない。

この言葉があげられたときは「処理速度やリソースが余っているのにそのまま放置することへの怒り」というふうに説明されていたらしいけど、それはどちらかというとMOTTAINAIの精神であり、勤勉の範疇に入るように思う。

ただ「短気」と言っただけでは「怒りっぽい人がプログラマに向いている」のように誤解されかねない。別に短気だからプログラマの美徳を備えているとは思わない。どちらかというと根気の方がよほど大切である。

実際「根本的に複雑な問題」を解く場合、根気(それとリソース)が無ければ解くことはできない。短気と根気は両立することもあるけど、間違いなく根気の方が的確な判断をするのに貢献すると思う。

☓傲慢 ○責任感

傲慢とは、ここでは品質にかける自尊心を言うようだが、それは傲慢ではなくて「プライドをかけて責任を持つ」ということに近い。傲慢という言葉によって「実力もないのに驕り高ぶること」が良いように見えてしまう。

実力に見合った自信は別に傲慢ではない。むしろ傲慢による弊害の方が大きい。プライドばかり持っていても困る。いわゆるそれは責任感というやつで、絶対にバグを出さないという精神だと思う。

おわりに

三大美徳の、コアな精神については特に否定しようと思わないけど、それぞれの命名に以前から不満を持っていた。

どうもその中身よりも、目を引く3つのフレーズが独り歩きしていて、

あたかも本当に「怠惰で短気で傲慢であること」が正当化されているように聞こえるからだ。「プログラマだから怠惰なのは仕方ない」とか「プログラマだから短気なのは仕方ない」とか、そういうふうに持っていかれかねない。それは全然、コアな精神とはかけ離れている。実際、リーナスさんも最近普通の意味での短気さと傲慢さを反省したらしく、時代が変わったことを感じる。

3つのフレーズは、たとえば「人生には次の3つが大切だ」と言っておいて

・アイス
・クッキー
・ケーキ
・氷は大切だ。
・優しい心を持った人(クッキー)は大切だ。
・ときどき人生にケーキのような楽しみを取り入れることは大切だ。

のようにするのと同じで、ただキャッチーなだけで、ニュース記事なんかによくある釣りタイトルとも同じだと思う。

ラリーさんはたぶんここまで世界的にこの発言が広まると思ってなかっただろうし、あくまで7つの大罪からとった3つを使った世間に対する皮肉のつもりだったのだろう(憶測)

ただぼくとしては「プログラマの三大美徳である怠惰と短気と傲慢を持った人」というのは、全然怠惰でも短気でも傲慢でもないと思う。だいたいなんでも「この3つが大事」とか言ってアナロジーしようと思えばできる。

偉そうなこと言ってぼくは全然美徳とかないけど、とりあえず不満があったのでこんな記事を書いてみた。

まあ「勤勉!根気!責任感!」と言っても流行らないんだろうけど……

追記(2019/03/13)

なんかご本人も「努力、忍耐、謙遜」と表裏一体だよ!みたいなことを言ってたようだ。わろた。

https://www.oreilly.co.jp/BOOK/osp/OpenSource_Web_Version/chapter10/chapter10.html

新宿駅のわかりやすい説明をしようと試みてみた 〜新宿駅はダンジョンなんかじゃないんだ〜

序文

ネット上では「新宿駅はダンジョン」のように必要以上に恐れられてネタ化されていますが、実際のところ新宿駅でうろちょろするのはそこまで難しくありません。コツさえつかめばそうそう迷子になることはないはずです。

新宿駅は、 JR新宿駅 を中心に衛星写真を使って見ていき、最後に別の会社の路線について学習すると効率的だと思います。

また、そもそも電車の乗り方がよくわからない人は↓の記事もご覧ください。

わらうなんてぜったいにゆるさないぞ電車ネイティブ(田舎から出てきた人への都内での電車の乗り方Tips) - へっぽこびんぼう野郎のnewbie日記

構成

この記事の構成は次のようになっています。

Lv1 東京における新宿の位置からJR新宿駅を把握する
Lv2 JR新宿駅を上から見てJR新宿駅のホームを把握する
Lv3 JR新宿駅から方角を把握する
Lv4 JR新宿駅を上から見て新宿駅周辺のエリアを把握する
Lv5 高低差でみるJR新宿駅
Lv6 JR新宿駅以外の駅を把握する
まとめ

Lv1 東京における新宿の位置からJR新宿駅を把握する

まずはこちらの山手線概略図をご覧ください。

f:id:haruharu1:20190223200525p:plain

新宿駅は、概略図の左側(つまり西側)にあります。山手線は、東京23区を大きく一周する路線です。

実際には山手線はもっと縦に細長いのですが、今回はあまり気にしなくてもいいです。「左にあるぞ」ということだけ知ってください。

そして次に実際のJR新宿駅衛星写真をご覧ください。

f:id:haruharu1:20190223200659p:plain

衛星写真を見ると、JR新宿駅の線路が南北に貫いている(この図では上下に貫いています)ことがわかります。JR新宿駅には、東西(左右)に貫いている線路はありません。南北だけです。また、JR新宿駅は一般的な駅と比べてかなり大きいです。

次に、

f:id:haruharu1:20190223202705p:plain

このオレンジ色のものが甲州街道(こうしゅうかいどう)と呼ばれる道路です。昔からある道で、東京都中央区日本橋(銀座の近く)から山梨県を横断して長野県まで到達する道路です。いろいろ歴史があるみたいですが、とりあえず今回は「JR新宿駅の南側に甲州街道と呼ばれるデカい道路がある」ということを覚えればよいです。

「JR新宿はデカイ・線路が南北を貫いている・南側に甲州街道がある」の3つが今後の説明の基礎になります。

Lv2 JR新宿駅を上から見てJR新宿駅のホームを把握する

JR新宿駅を拡大していくとおもしろいことがわかります。

f:id:haruharu1:20190223203048p:plain

もうちょっと拡大してみます。

f:id:haruharu1:20190223203107p:plain

何がおもしろいかというと、「線路と同様にホームもすべて南北に貫いている」ということです。

当たり前のようですが、これを頭に入れておくと

・渋谷駅から山手線で新宿駅についたのなら、電車の進行方向の左側が西
・池袋駅から埼京線で新宿駅についたのなら、電車の進行方向の左側は東

とかそういったことが把握できるということです。

f:id:haruharu1:20190223203533p:plain

f:id:haruharu1:20190223204136p:plain

これがわからないと方角がわからなくてJR新宿駅に着いた瞬間に迷います。わかっていると特に迷うことなく方角を意識して行動可能です。

Lv3 JR新宿駅から方角を把握する

方角がわかることのメリットはそれだけではありません。JR新宿駅のホームが南北になっていることがわかるとエリアもおのずとわかってきます。

JR新宿駅の構内を表しているこの地図を見てください。ごちゃごちゃしていますが、文字は気にしないでください。この地図は上側を北にするために回転させています。

注目してほしいのは、青色で描かれているホームの部分です(水色ではなくて青色)

このホームというのは、さっき衛星写真で見たホームと同じです。

f:id:haruharu1:20190223204922p:plain

上側(北側)に水色の2本の通路(北通路・中央通路)があり、下側(南側)に赤色の通路が2本あります。4本の通路は、どれも東西に貫いています。(ちなみにこういった広い通路のことを コンコース と言ったりします。豆知識!)

これがわかると、JR新宿駅に着きさえすれば、東とか西とかそういうのは思いのままに移動することができます。

つまり、渋谷駅から山手線で新宿駅についたら、地図を意識しつつ左側に行けば西口に出ることができます。これだけでJR新宿駅で迷う確率はほとんど0になります。

Lv4 JR新宿駅を上から見て新宿駅周辺のエリアを把握する

JR新宿駅を上から見てエリアに分けるとこんな感じになります。 (繁華街) とか書いてあるのは完全にぼくの偏見で、だいたいのイメージです。なので西側にも繁華街はあったりしますが、そういう感じです。北側はないです。

f:id:haruharu1:20190223211058p:plain

詳しく分けるとこんなかんじです。新宿駅についてちょっと詳しい人は、こんな感じで理解していることが多いと思います。ぼくの偏見なので「ちょっと違うんじゃない?」ってこともあると思います。

f:id:haruharu1:20190223212343p:plain

JR新宿駅の出口は↓のような感じになっているので、行きたい場所に応じて移動するといい感じに目的地にたどりつけます。北口はありません。カタカナの出口というのは「サザンテラス口」とかそういうのです。

f:id:haruharu1:20190223230854p:plain

Lv5 高低差でみるJR新宿駅

JR新宿駅の高低差が、新宿をわかりにくくしているひとつの原因ではないかと思っています。

東と西とで、なんとなく雰囲気が違うので、今どこにいるのかわかりにくくなってしまいます。これは高低差があることを知ると混乱しなくなると思います。

JR新宿駅は、南側に行くほど高くなり、北側や東側は低いです。なので、東側の繁華街からJR新宿駅東南口に移動しようとすると階段をのぼることになります。

f:id:haruharu1:20190223232239p:plain

f:id:haruharu1:20190223231706p:plain

また、この高低差から、西側は地上と地下が明確に別れています。JR新宿駅の西側の改札を出ると、地上ではなく地下に出ます。

Lv6 JR新宿駅以外の駅を把握する

今までJR新宿駅をみてきましたが、JR新宿駅の支配している範囲が相当広いので、他の駅に関しては意図的に省いて説明してきました。

なので他の駅の位置を説明します。

まずわかりやすいものから。これらは全部、新宿が終点です。路線たちが新宿に集まっている様子が窺えます。全部ほぼ地上を走っているので、比較的わかりやすいです。

f:id:haruharu1:20190223234613p:plain

東京メトロや都営、それと京王新線のものがこれです。正直こっちはよく乗る人しか把握できてないんじゃないかと思います。きっとこれがダンジョンと言われる多くの原因を作っているはずです。

f:id:haruharu1:20190224000127p:plain

まとめ

基本的にどこにいても方角さえ意識することができれば怖いものはあまりないです。あとは抜け道(というか最短経路)があったりとかいろいろあるんですが、そういうの言っていくとキリがないので省きます。

ただし新宿駅のどこどこのお店に行きたいとかは、スマホなどでどのへんにあるか調べてから行かないとたどり着けないので、どこの方角のどこの階層にあるかを立体的に把握する必要があります。

そんな感じです。初心者向けの説明なので、地下の説明がないのとかはご愛嬌ということで。

とりあえず方角さえわかればなんとかなります。方角がわからなくなると迷います。

いまさらUbuntu15.04を18.04にアップグレードした話

追記

最近は apt-get ではなくて apt を使うそうなので、apt-getとしているところはaptとした方がいいと思います(・ω・)

経緯

家でひさしぶりにLinuxを触ろうとしてUbuntuを立ち上げた。それで sudo apt-get install などをしていたら、エラーが出ていた。

sudo apt-get update としたら、リポジトリ404 Not Found になっていて見つからなかったので、びっくりして調べたらサポートが終了していた。そりゃもう4年も前ですもんね。そして自分がインストールしていたものが 15.04 だったことにびっくりした。当時の最新版を入れたかったらしい。

アップグレード

それで sudo do-release-upgrade -d とすると、 新しくリリースされたものはありません と言われた。そ、そんなわけがあるかーー!

どうもサポートが切れたことによっていろいろなことができなくなっていたようだ。わろた。

そこで、 /etc/apt/sources.listvivid (15.04の意味) となっているところを xenial (16.04 LTS) にかえてみた。いきなり 18.04 に上げるのは「15.04から18.04に上げるやつとかそんないないだろうからエラーとか出たらめんどくさいし……」と思ったので躊躇した。 16.04 のEnd of Lifeが2021年4月までということもあってリポジトリが残っていたので 16.04 にした。一度 16.04 にあげさえすれば、たぶん正規の方法で 18.04 まで上げられると思うという思いもあった。

それでファイルを変更したあと

$ sudo apt-get update
$ sudo apt-get dist-upgrade

などをすることに。うまく動いている。さすがLTS!なんともないぜ!

dist-upgrade の様子を見ていると、さまざまなものが上書き展開されていてとてもおもしろい。これがここ4年でのソフトウェアの更新かと思うとこみあげてくるものがある。ただ長かったので途中で飽きた。稀にyesno聞いてくるのでよく読んでyを選択。

ものすごく時間がかかった後、バージョンが上がったことを確認してPCを再起動。そのままアップグレードを続行して不具合とか出たらやってらんねえので再起動して16.04で普段使われているだろうプロセスたちを立ち上げるたかった。

その後 sudo do-release-upgrade -d をして、 bionic (18.04 LTS)にさらにアップグレード。正直あまり 16.04 を経由した意味はなかったかもしれないと思っているけど、うまくいったからそう思っているだけかもしれない。

16.04→18.0415.04→16.04 よりも早くインストールなどが終わった。

18.04はUIなども変わっていて新鮮な気持ちだ。

おわりに

ともかくLinuxを雑に触れる環境がまた整ったので、これでカーネルモジュールなど作って遊びたいと思う。あとメモリもCPUもしょぼいので、そのうち換装したい。CPU高いなぁ