Heppoko Binbo Yarou no Newbie Nikki

旧題: へっぽこびんぼう野郎のnewbie日記 #vZkt8fc6J

Mac Chromeでやる夫関連のサイトを読む(MacでAAをきれいに表示する)

はじめに

技術者向けの解説はページ下部にあります。めんどくさくて全部読みたくない技術者の方は下部だけ読んでも大丈夫です。

読むのに必要な前提知識

読者は インストール・ダウンロード・Webサイト などの初歩の用語を知っていることを前提としています。

かなり専門用語を使わないように努力しているつもりですが、詳細に伝えるにあたって専門的な言葉がときどき出ています。ご了承ください。

なんでAAがずれて読めないの(´・ω・`)?

AAがきちんと表示されるためには、

MS Pゴシック

か、それに準ずるフォント(Textarなど)が使っているMacにインストールされている必要があります。

基本的には MS Pゴシック というフォントがインストールされていれば大丈夫だと思います。

フォントというのは、『文字をどのように表現するか』をまとめたルールのことで、いろんな種類のフォントがあります。たとえ同じ文字でもフォントが異なると文字の表現方法が変わるので、文字の見え方が異なります。

フォントが違うと、たとえば同じ (`・ω・´) というデータでも、

フォントの種類 見え方
デフォルト (`・ω・´)
MS Pゴシック (`・ω・´)
Quicksand (`・ω・´)
Bahianita (`・ω・´)

のように、見え方が変わります。

MS Pゴシック というフォントが正しくインストールされていない場合は、コンピュータが

「MS Pゴシックとかいうやつ無いから、無いときに使うやつ(デフォルト)使うわ」

と判定して、デフォルトを使います。

なので、正しくインストールされていない場合は、この表の『デフォルトの見え方』と『MS Pゴシックの見え方』は同じはずです。

なぜ他のフォントではなく MS Pゴシック にしなければいけないかというと、 MS Pゴシック というフォントは、遠い昔、Windowsで使われていたフォントであり、『このフォントを使ってみんな2chを見ている』という前提のもとAAが作られていたからです。

Macには、残念ながら MS Pゴシック がインストールされていません。そのため、別のフォントが使われて、ずれて見えます。

MacMS Pゴシック が入っていない様子

macOS Sierra に組み込まれているフォント - Apple サポート

MS Pゴシックの入手方法について

MS Pゴシックは、マイクロソフトMicroSoft)が作ったものなので、当然ながら著作権が発生しています(なのでMacに入ってないのですが)

MS Pゴシックのフォント自体はたくさんインターネット上に転がっているのですが、基本的に違法アップロードの類のものだと思うので、こちらから入手しないほうがいいと思います。

Windowsを持っていれば、MS Pゴシックのフォントファイルが入っているので、そのファイルをMacに持ってきてクリックするとインストールできます。

よくわからなかったらググってください。

MS Pゴシックをインストールしたのに、AAがずれるサイトがあるんだけど( ・`ω・´)?

ずれないサイト

ほとんどのAAを置いているサイトは「このサイトではMS Pゴシックを使ってね!」というように、サイト上で指定されています。

たとえば↓のサイトでは、サイト側でMS Pゴシック使ってねと指定してあります。こういうサイトはズレないはずです。

やる夫 Wiki | FANDOM powered by Wikia

f:id:haruharu1:20190704130744p:plain

↓こんな感じで指定されています。「フォントは、MonaがあればMona,なければIPAMonaPGothic, IPAMonaPGothicがなければ'MS Pゴシック'を使って」という意味で指定されているようです。(ちょっとなんか指定の仕方がおかしい部分がありますが…)

f:id:haruharu1:20190704130928p:plain

このフォントとかを指定するやつをCSSと言ったりします。

ずれるサイト

ただし↓のサイトでは、ずれます。

サイト上で特にフォントの指定がないので、お使いのブラウザのデフォルトのフォント(既定のフォント)を使用することになります。

f:id:haruharu1:20190704131252p:plain

そういうサイトは、サイト管理者がフォントを指定していないので、こちらでフォントを勝手に指定してあげることにします。

フォントなどを指定できるものを CSS と言ったりするのですが、この『フォントなどを指定できるCSSとかいうやつ』を外部から追加するChrome拡張機能があります。Stylishというやつです。

chrome.google.com

Stylishを使っていい感じに設定するとこんな感じになります。(これでもまだずれてる?シラネ)

f:id:haruharu1:20190704132158p:plain

Stylishの使い方

StylishChromeにインストールすると、Chromeの右上らへんに↓のような感じでインストールされた旨が表示されます。クリックしてください。

f:id:haruharu1:20190704132257p:plain

ここで Create New Style を選んで、新しくCSSを追加します。(↓参照)

f:id:haruharu1:20190704133211p:plain

するとこんな感じ(↓)の画面が出ます。

f:id:haruharu1:20190704133355p:plain

ここに↓のように記入していきます。

f:id:haruharu1:20190704141358p:plain

この緑丸の部分のところで、このStyleの名前をつけてください(別に名前はなんでもいいです)。Enable(利用可能)にチェックボックスが入っていないと利用可能にならないので注意してください。

赤丸の部分には

* {
    font-family: 'MS PGothic', 'MS Pゴシック','MSPゴシック','MSPゴシック','MS Pゴシック' !important;
    line-height:18px !important;
    font-size: 16px !important;
}

というふうに書きます。コピペで大丈夫です。

このページ全体の文字について、MS Pゴシックとか、フォントサイズとか文字の高さとかを指定しています。 !importantとつけているのは、サイト管理者がテキトーな指定をしていても強制的に変更させるためです。(ただし、サイト管理者がより強く強制的に指定している場合は、おそらくこれが効かないので、そういうサイトでは効きません。その際の変更はもうちょっと専門知識が必要になります。)

青丸の部分には「どこのサイトでこのCSSを影響させたいか」を記述していきます。「すべてのサイトでMS Pゴシックを使う」というのはMacユーザーなら嫌なはずなので、変えたほうがいいと思います。

AAを使っているサイトにだけ適用できるように、お好みに設定していきましょう。URLs starting with(訳: ~から始まるURL)http://bhdaa.sakura.ne.jp などと入力すると良いです。追加したい場合は Add を押します。

そんな感じで入力します。

入力が終わったら「Save」してください。

知らなくてもいいけど知っておくといいかも知識

Stylishは、専門的にはCSSをページの最後に追加してくれるツールです(DOMの最後にstyle[CSSを記述するためのHTMLのタグ]を追加しているだけ)

f:id:haruharu1:20190704132431p:plain

まとめ

  • 大前提として、すべての「AAズレ」は「フォントが違う」という部分に起因します。
  • フォントが違うのは「そもそもあなたのPCにフォントがインストールされてない」「サイト管理者がフォントを指定していない」「サイト管理者の設定がクレイジー」のどれかによって生じます。これはWindowsでもMacでも変わりません。
  • 基本的には「インストール+Stylishの変更」で90%以上のAAサイトが問題なく見れるようになるはずです。

厳密には、フォントの違いだけでなく↓のような設定も必要です。

font-size:16px;
line-height:18px;

技術者用

  • AAはMS Pゴシックを使うことを前提として作られてます。
  • なのでMacMS Pゴシックをインストールしてください。これでほぼ直ります。
  • サイト管理者が指定していないサイトにのみCSSを指定してください。指定にはStylishというChrome拡張機能がオススメです。

↓指定方法はこれです。テキトーなのでお好みでアレンジしてください。

* {
    font-family: 'MS PGothic', 'MS Pゴシック','MSPゴシック','MSPゴシック','MS Pゴシック' !important;
    line-height:18px !important;
    font-size: 16px !important;
}

  • おわり

RSpecの `expec(x).to eq y` の構文が謎かったので実装してみた

動機

RubyとかRuby on Railsとかの勉強をしてたらRSpecのところで少しハマったので調べてみた。

実装

class Expect
  def initialize(trying)
    @trying = trying
  end

  def to(wrapper)
    if wrapper.call @trying
      puts 'OK!!'
    else
      puts 'NG!!'
    end
  end
end

def eq expected
  lambda do |x|
    x == expected
  end
end

def expect trying
  Expect.new trying
end

expect(1 + 2).to eq 3
(expect 1 + 2).to(eq(3))

本来の実装方法はわからないけど、普通に高階関数を使っているだけのようだ。DSLだと実装者は大変だけど使う側は考えなくても使えるようになっていて便利だなとおもった。慣習的なイディオムが expect(1 + 2).to eq 3 となっているので、別に違う書き方でもいいのだなとおもった。

(調べたら実際の実装は割とちがうらしいので、そのうち暇ができたら調べてみる)

Pythonと似ているけど、根本的な思想が結構違うのでおもしろい

Mac + Google Chromeで、一度マウスカーソルを合わせるとその後横スクロールバーが消えてくれない問題について

現象

↓こういうの。他の場所をクリックしても横スクロールバーが消えてくれないので、文字が読めなくてうざい。

f:id:haruharu1:20190605142059p:plain f:id:haruharu1:20190605142222p:plain

調べた結果

2019/01にバグとして報告されている様子(ただし2019/06/05 75.0.3770.80 (Official Build) (64-bit) もこの状態)

https://bugs.chromium.org/p/chromium/issues/detail?id=914844#c31

他の場所と絡んでるからすぐに直すのは無理そうだという話。その後は特に音沙汰なし。

https://bugs.chromium.org/p/chromium/issues/detail?id=914844#c52

↓ここがとても参考になった

css - MacOS Chrome horizontal scrollbar not disappearing - Stack Overflow

当面の回避方法

Macのシステム環境設定から変更する。

f:id:haruharu1:20190605143546p:plain

その後、Alwaysにする。日本語版のインターフェースだとどう見えるのかはわからない。

f:id:haruharu1:20190605143635p:plain

そうすると↓みたいな感じになる。デザインは少し変わるけどまぁしょうがないよね(´・ω・`)

f:id:haruharu1:20190605144222p:plain

Webページの開発者さんへ

エンドユーザーへの表示方法は、いまのところ↓の解決方法しかないっぽいです。

css - MacOS Chrome horizontal scrollbar not disappearing - Stack Overflow

GW中に勉強して合格した人に触発されて、ぼくもAWS ソリューションアーキテクト アソシエイト試験に合格してきました

f:id:haruharu1:20190528180135p:plain

点数がわりかし低めなのはご了承ください m(_ _)m

動機

↓のブログを読んで「15日間でいけるのか!」と驚いたので、「AWSの全容をなんとなく把握したいし、客観的に資格として証明されるなら、とりあえず取っとくか」みたいなノリで参考書をポチってテストの日程を予約しました。

参考書も含めて合計2万円ぐらいのスポットでの出費だったので「ちょっと痛いけどまぁいいか」というノリでクリックしました。

budougumi0617.github.io

初期能力

ふだんはサーバサイドエンジニアとしてPythonを使って働いています。でもときどきJSでフロントもやったりしています。

AWSは普段EC2とかELBとかRDSとかS3とかCloudFrontとかLambdaとかを使っているので、セキュリティグループとか基本的なことはわかっているという感じです。

↓関係ありそうな資格とかいろいろ

  • 大学中退(2009)
  • プログラミング始める(2014)
  • ITパスポート合格(2017)
  • 応用情報技術者試験合格(2017)
  • Amazonが主催するデータレイクのハンズオンに出たりしてた

Amazonが主催してるハンズオンは、わかりやすくて資料が神なので、資料だけもらって帰るのでも行く価値があると思います。業務中に行けると勉強もできて給料ももらえて二度おいしいと思います。

スケジュール

5/15 参考書ポチる。試験会場を予約する
5/16 参考書が2冊届く。
・
・
・
5/25 いろいろあって時間が取れなかったので、うなだれながら参考書を読み始める
5/26 昼まで参考書を読む。15時試験開始。合格

勉強方法

直近で受かった人が言うんだから勉強方法を真似しようと思って、上に書いたブログの人のやつを完全にパクりました(すみません)。ちなみに試験場も、横浜に住んでいるので「近いし武蔵小杉でいいや」とパクりました。

ただ全部パクろうと思っていて、結構がんばってたんですが、でも途中で夜になってつかれちゃって、でも時間ないけどねむいって思って全然まにあわなかったので、本当はもっとちゃんと前から勉強しておくべきでした。

↓まずこの本を読みました。

↓それでこれを読みました。

本の所感としては、上の本はかなり概要がすっきり書かれていて読みやすいです。ぼくは、もともとサービスの名前とかは知っていたので「そうだよね」とか「なるへそ」と思いながら読んでいました。知っているものはどんどん確定させていき読み飛ばし、使ったことがないサービスについて重点的に意識を集中するようにしました。かなり得るものは大きかったように思います。ふつうに実務で活きる感じで、逆に「これ知らんのによく使ってたな」というふうに思いました。

下の黒い本は、上の本に比べて細かく書かれていると思います。ただ、上の本をそれなりに理解してないと、なんか章の構成が散らばっているような感じがして若干読みにくいと思いました(個人の感想です)

どちらの本も重要なことはオーバーラップしているので、黒い本は割とサクサク読めました。個人的に、片方より両方読んだほうが絶対いいと思います。

本の難易度は、どちらも「インフラの初歩の初歩ぐらいは知ってるよね」という前提で書かれているので、それが抜けていると、読むのがかなり厳しいんじゃないかなと思います。「HTTPS…?」「ポート…?」「ストレージ…?」「3層アーキテクチャ…?」「スケールアウト…?」という人はたぶん挫折必至です。逆にわかってるとサクサク読めるのではと思います。

ときどき、読みながら「Amazonのサービス名を覚えるのが資格になるってすごいな…冷静に考えると資格って意味不明だな…なぜ自分はAmazonに勤めてもいないのに一生懸命Amazonのサービスを勉強しているのか…」みたいに思ったりしていました。

試験の感想

難しかったです。

「全然簡単に受かる試験じゃないじゃん……」と思いました。

「本の最後に載っていた模擬試験とはなんぞ」というレベルでした。まず問題の文章量が多く、結構ちゃんと考えないとよくわからなくなると思いました。完全に勉強不足でした。黒本についてた模擬試験の問題の2倍解くのに時間がかかりました。

問題の選択肢も「全然関係ないけど操作としては間違ってないやつ」とか「ちょっと違う」とか「関係ありそうでずれたやつ」とかが多くて「なんだよこれ……」って感じになっていました。「答えこれしかないだろ」という問題も無くはなかったけど、基本的には絶望的な不安感の状態で「これだろ。たぶん。だってこっちはおかしいし…いやでも本当におかしいのかな…?」みたいな感じで選んでいました。

「これは終わった落ちた」とか「なんでAWS触ったことないのにちょっと勉強しただけで受かる人が存在するんだおわった騙された」とか「さようならぼくの15,000円」とか思いながら解いていて、最後に結果を見たら「おめでとうございます!」と書かれて合格していました。あぶねえ。

個人的に、せめてもう1日前に勉強しておいてAWSが提供する模擬試験でも受けていれば、もうちょっと違った心持ちで受けることができたのかなと思いました。

実際の運用では選択肢を選ぶわけじゃなくて、自分で選択肢を提示するわけなので、自分が弱いなと思ったDynamoDBとかRoute53とかパフォーマンス関係とかをしっかりやろうかなと思いました。

問題自体はかなり質がよくて、実際にありそうなユースケースが多くあって良かったなと思います。

合格後に本屋に行ってチラ見したんですが、AWS資格の参考書というのはあんまりないらしく、唯一あったのがこのソリューションアーキテクトアソシエイトと、クラウドラクティショナーという感じでした。他のデベロッパーアソシエイトとか受けるのもアリかなと思うんですが、せっかく本があるので、次受けるとしたらクラウドラクティショナーを受けると思います。なんかよくわからないけど割引もあるらしいので使いたいと思っています。

英語の参考書はいっぱいあるのでそっちを読むのもアリかなと思ってるんですが、レビューの点数が低いので、公式を読むのが一番良さそうだという感じもしています。

アドバイス的ななにか

AWSを知らない人はとにかく試験範囲のAWSのサービス名を片っ端から把握していくのが大事だと思います。AWSを触ったことがなくてもインフラをある程度理解している人なら「これはあれでいうこれで、こっちはあれでいうあれ」という具合でアナロジーな感じで対応できるので、名前を覚えるのがめんどくさいぐらいかなと思います。

そのあとは

・運用の優秀性
・セキュリティ
・可用性
・パフォーマンス効率
・コスト最適化

これを意識すればいいと思います。中でも可用性がいちばん大事だと思います。

基本的に「これらを達成するために何するのが正解か?」「それは要件を満たすのか?」ということを聞いてくる問題が多いと思います。ぼくはギリギリで受かったので、詳しくはできる人に聞くとすばらしいと思います。

EastとWestがときどきごっちゃになる

左右盲」というのがTwitterでちょっと話題になっていた。

ぼくの妻は左右盲で、ちょっとしたときに左と右がわからなくなるらしい。よくわからなくなったときに「お箸を持つ方」というふうに考えるんだと。

それで思ったんだけど、ぼくはWestとEastがときどきごちゃごちゃになる。

左右も東西もLeft/Rightも大丈夫なのに、WestとEastになったときだけダメ。

おそらくEastを覚えるときに「西」と対応付けしまったのがことの発端。西の方がなんとなくイーストっぽい。「東」より「西」の方がスッキリしていて「東は重い」というイメージ。

「West」は音的にごちゃごちゃしていて、Eastがスッキリしているので「西=East」みたいになってしまっている。どう考えても「Eastが重い」というふうにはならない。

それで、マリオパーティ2に出てくる「ウェスタンランド」とか、「西部劇=ウェスタン」みたいな感じで、無理矢理「西=West」というふうに関連付けている。

でも問題は、西部劇っていうのは日本の東で起きたことだから「んん?」と一回なる。しかもバック・トゥ・ザ・フューチャーで主人公のマーティが、西部劇の舞台で「クリント・イーストウッド」と名乗ったことから「西=East」という印象もある。逆に、東ときたらEastとなる。これはたぶんワンピースの「イーストブルー」のイメージが一番強い。

逆に「Westが左」みたいに考えると今度は「東が左」みたいになってくる。 アメリカの西にある日本はFar East 太陽がのぼるのはEast みたいに考え込むとカオス。

自分の認知がどうなってるのか非常に謎。

WTH is the complexity of trains in Tokyo? -- How to ride on a train 'fluently' in Tokyo.

I give you introductions to ride on a train in Tokyo. These tips aim to people who wants to live in Tokyo or some places in Japan. Maybe it's overkill if you just come to Japan for sightseeing.

Since I'm a native Japanese speaker and as it is said that many Japanese people are not quite good at speaking in English, my explanation is not so good, either. So if you feel some sentences, phrases, and paragraphs are odd, I would appreciate if you contact me on twitter or comment it in the last section.

Here is my twitter account! -> haᵲuʞaͣeͤͣͤͣru #vZkt8fc6J (@d24d30033e5c469) | Twitter

The Japanese version is here -> わらうなんてぜったいにゆるさないぞ電車ネイティブ(田舎から出てきた人への都内での電車の乗り方Tips) - Heppoko Binbo Yarou no Newbie Nikki (It's not the exactly same version, though.)

Anyway, let's get started to explain.

Tokyo

I don't know your background. So, I'd like to start to explain about trains in Tokyo from basics.

Tokyo has 30 million population, and population density of the central Tokyo is 15,000 people/km2. It means each person can use only 66.6m2(about 8m x 8m area). This is insane, isn't it? We are being jammed into such a narrow spaces whenever we work, study and play. (Actually Tokyo prefecture is not exactly Tokyo itself. When non-Japanese people refer to Tokyo, it's a metropolitan region near Tokyo prefecture. However I use Tokyo as the region in this whole article.)

Japan's economics is basically depended on Tokyo, the most biggest metropolis in Japan. One third of Japan's GDP is yielded by Tokyo, though other 46 prefectures are there. So is the population. Tokyo has one fourth of Japan's population.

Because of such a density, we use not cars, but trains. Cars are not efficient for abnormally many people to move from A to B. Cars are still main transportation means even in Tokyo, but we mainly use trains. 99% of people in Tokyo are forced to use trains. And, sadly, so do you.

How to get on a train is a hard task!

Even native Japanese people can get lost easily, especially in Tokyo. So basically it's difficult to be achieved that without a problem. Keep in mind that it's not appropriate to despise of yourself simply because you failed to ride on quickly. It's not an easy task.

Trains and Train Companies

We ordinarily use trains as commute methods. So basically trains are crowded in the morning and evening on weekdays, especially around 7:00 or 8:00 is the most crowded time, because a lot of companies start to work at 8:00 or 9:00. I highly recommend that you avoid this time unless you must do it. All of the times are of course Japanese Standard Time(JST, UTC+09:00)

Trains are run by varied companies. For examples, JR is the most dominant company in transporting system fields, and other companies cannot be ignored, which names are like Seibu Railway(西武鉄道), Tokyo Metro(東京メトロ), Tokyo Kyuko(東京急行), and so on.

You don't need to memorize these AT FIRST. Unless you plan to live in Tokyo, no need to know. Just note that there are a lot of train companies.

Basically, if you transfer from a train to another train which doesn't belong to the same company, you must buy another ticket to ride on.

Examples:

You want to go from Shinjuku(新宿) station to Haneda Airport(羽田空港) station.

This is you.
-> 😆

At first, you buy a ticket to ride on a train at a ticket counter in Shinjuku station. It has English instructions, so firstly, choose a button to switch languages. You may find "English" or "Language" as a button in the screen of the ticketing machine.
-> 😆🎫

Then you insert it into a ticket gate machine(改札, かいさつ, a Kaisatsu, a turnstile, a ticket barrier, and so on. Sometimes it's referred as "wicket", heh.)
-> 😆<Inserting! 三🎫 [Machine]

After you insert a ticket into the machine, don't forget to pull your ticket from the machine. The machine emits the ticket after examining whether it's valid or not. The ticket will be used when you get down from the train.
-> [Machine]三🎫 😆<Catching!

[Note] If it's invalid, you will hear some error sounds. Don't be panic of that. It has some problems on your ticket. Be sure of the ticket, or ask a station worker.
-> 😢 🎫<Backing三 [Machine]<Error!!!

If your ticket doesn't have any problems, you go on a platform(Japanese people refer as ホーム, which sounds "Home") and then find the proper train on which you ride.
In this case, you may ride on Yamanote line towards Shibuya(Yamanote Sen Shibuya Iki, やまのてせんしぶやいき, 山手線渋谷行き) which is run by JR.
([Note] Shinjuku station run by JR has 16 platforms to ride on, and there are two Yamanote lines. Be careful that both directions are different. So the two Yamanote lines exist. Shinjuku station run by JR means there are other Shinjuku stations run by other companies. Wow.)
-> 🚉[Yamanote Line Train towards Shibuya(渋谷)😆< I rode on!]

You get off at Shinagawa(品川) station to transfer another train. To change the direction, you should go Keikyu line Towards Haneda-Airport(京急線羽田空港行き) which is run by Keihin Kyuko(京浜急行). So you go to a ticket gate machine, and insert your ticket into it, and pull out the ticket again.
-> 😆<Inserting once again! 三🎫 [Machine]

After you get off at Haneda-Aiport station..., you already arrived there!
-> 😆[Haneda-Airport]

I didn't intend that the explanation is so long... but anyway, don't miss the point that you should insert a ticket into the machine several times if you change the lines of the transporting company. Annoying? Me, too.

That is why the followings are very important.

Go buy a Suica or PASMO, alternatives of obsolete paper tickets

No Tokyo-nian buy a ticket in a ticket counter in Tokyo.

We use Suica or PASMO, which are electronic money cards, like these images.

https://www.japan-rail-pass.com/public/files/service-jrp/pasmo_suica-2.jpg

(I cited it from here. https://www.japan-rail-pass.com/common-questions/difference-Pasmo-Suica)

Using Suica or PASMO, you don't have to buy tickets. All you have to do is buy the card and put your money into the card.(Japanese people call "put money" as チャージ(charge); we consider the behavior as well as to charge a car battery.)

Still, you have to top-up(put your money into) the card in a ticketing machine, but you won't be bothered by "Where is my destination in this map!?" or "Which coins are how much!?"

"This map" which I mentioned here is the following map. If you're going to do by a paper ticket, you have to look up a destination out of the following map. Isn't it somewhat crazy job?

f:id:haruharu1:20190511185832p:plain

To buy the cards, you need some money(1,000 yen[nearly equals to 10USD]), but it's quite useful. I assure that.

If you have an iPhone, you have possibility to get Suica app freely. I recommend you check it. If you have an Android, I'm not sure...

Go get an app which explains how to transfer

All Tokyo-nian uses an app to get on a train. You easily get lost if you don't use it, surely.

I found a nice app in App Store and Google Play.

[iPhone] ‎Japan Transit Planner on the App Store

[Android] https://play.google.com/store/apps/details?id=jp.co.jorudan.japantransit&hl=en

Using this app, you don't have to think how you go. Obey the instruction of the app, so the way will be shown up in front of you. It shows up like this. (This is the iPhone version.)

So the internet connection is very important to search for anythings.

Yes, certainly it's so expensive to surf on the internet in foreign countries, but it's worth using in other countries, because you can google anytime.

In Tokyo, some places implement Free Wi-Fi, but not always! Rather, there are almost no-internet places if you do not pay!

Conclusion

So, that's all!

Once you get the app and a card, you won't get lost, ... maybe.

The app is like a consultant. If you get confused, just input the current time, the current station, and the destination. Magically, answers will be displayed. What a kind era today is.

I want to conclude as the followings.

  • There are a lot of train companies, and ticket counters are prepared by each companies. Don't panic.
  • Get Suica or PASMO, then you won't be worried about tickets.
  • Get the App, then you can get a route easily.

Thank you for reading! 😆🍙

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!!