2019.02.27 Wednesday
| カテゴリ:- |
スポンサーサイト
一定期間更新がないため広告を表示しています
| スポンサードリンク | - | - |
★
緑色さんの多目的ブログ みろりえいちぴー(旧) 引っ越し先 みろりHP: https://www.mrrhp.com ★ 2017.06.29 Thursday
| カテゴリ:プログラミング |
Python 波ダッシュ問題レポート
● 「1日1python」の時間です(ただし隔週放送)。みろりhpの記事をpythonで読み込んでいたら、スゲーイヤな問題に咬まれたのでそれについて書く。 なお今回のレポート内容はこのブログだとなんか手に余る感じ。ブログの文字コードがEUC-JPだからだ。今回の内容はUTF-8で書きたいところ。jugemブログは早急に最先端であるUTF-8を導入して頂きたいものだ。これについては随時補足しとく。 ● マジびっくりなことに、 〜と 〜は違う文字だ。前者は「波ダッシュ(WAVE DASH)」といって、後者が「全角チルダ(FULLWIDTH TILDE)」という。 pythonで下記スクリプトを実行してみればそれがわかる。
【補足】一応上のスクリプトではエスケープ? がかかってちゃんと二種類表現されているのでコピペしてpython実行してもFalseは得られるみたい。 見分け方はこう。
上の見分け方を使って判別関数を作っといたぜ。
変換する関数も作ったぜ。てか今回の問題で俺がいちばん必要としたのがこれ。波ダッシュと全角チルダが混在するデータで処理をしようとするとどっかでオカシクなる。文字化けしたり、見た目には同じ文字なのに「違う」って言われたり(冒頭のヤツ)ね。そういう恐れのある文字列は全部以下の関数を通しちまおうぜ。
● この問題に出会ったのは、みろりhpのデータをxmlエクスポートしたときだ。ナゼかこのブログはEUC-JP(波ダッシュしかないほう)で書かれているのに、出力するとUTF-8(どっちもあるほう)になり、しかももともと含まれていた波ダッシュがすべて全角チルダに置き換わる謎仕様だったんだ。それを処理しようとしたらおかしなことになった。そこでこの調査が必要になったわけ。 2017.06.24 Saturday
| カテゴリ:アコギ |
アコギ 山崎まさよし『One more time One more chance』
● 歌はなしのインスト。今月はかなりヘボ。だけれど一月一曲っていうノルマを優先した。 これまでで一番難儀した。左手がむつかしい。半分アルペジオだから押さえの誤魔化しもきかない。歌も試しはしたけれど、とてもそっちの調整まで気が回らなかった。 ● ままよと公開しちまった今回だけれど、実は思い入れのある曲だ。ギターを選んだ理由である、例のむかし一緒に住んでた子であるが、その子のレパートリーの中で俺が一等気に入っていたのがこの『One more time, One more chance』だったのだよ。曲の練習のため山崎まさよしさんの歌を何度か聴いたけれど、俺はあの子の歌のほうが好き。歌を試したものの結局ヤメてインストにしたのも、いくら歌っても記憶の中のあの歌に近づけなかったからってのがある。 ってそんな思い出の曲をヘボで公開してんじゃねーよ。きっといつかリトライするかもわからない。 2017.06.10 Saturday
| カテゴリ:プログラミング |
Python raiseノート
● 「1日1python」の時間です(ただし隔週放送)。ようやく raise を理解したのでまとめるぜ。raise文との出会いはオライリーだった。raiseとは例外を飛ばすものとの事だったけど、そもそも例外って何かわかんねーしassertっていう何か似てるのもあるしで全く理解できなかったのだよな。でも先日プログラマさんの書いたコラムとか読んでて、throwっていう他の言語の構文を知ったことでとうとう理解できた。 ● 例外って何? プログラム実行中に起こる、想定外の現象のこと。ほんでプログラム実行中に起こる想定外っつったらエラーのことだから、まあエラーのことだ。以下のように書き下したらよく分かったよ。
raiseって何? raiseは例外を生み出してひとつ上の階層に投げる呪文だ。いやエラーなんて放っておいても起こるんだから…なんでわざわざ自分で作るわけ!? ってのがオライリー読んだときは疑問で理解ができなかったんだけど、python的にはエラーじゃないけど俺的にはエラーになって欲しいって状況を想定したら理解できた。
感動ついでに自作のExceptionを作ってみる こんなの書いたらできたわ。
「上の階層に投げる」てのはどゆこと? 階層ってのは「関数の呼出元」と「呼ばれた関数」の層のことだ。「呼ばれた関数」側でraiseすると、生み出したExceptionは「呼出元」へ浮かび上がる。俺が浮かび上げるから raise なんだな。他の言語では throw っていう文が使われてるらしいけど、そっちでは「浮かび上げる」じゃなくて「投げる」っていう感覚なんだね。 ちょっと書いてみる。グローバル -> foo -> bar -> baz の順番で階層的に関数を呼び出して、第四階層であるbazでMidoriExceptionをraiseしてみるぜ。
● 「例外」が理解できなかったことについては上述した。いっぽう、raiseが理解できなかった理由は、raiseという言葉が指すものを初見で勘違いしたからだ。つまり、実際は「例外を生んで上の階層に浮かび上げる」ことを指すんだが、俺は「例外を生むこと」自体をraiseだと思っちゃったんだよ。こう、俺にはよくわからないpythonの内部から、Exceptionというものを持ち上げるっていうイメージ。それは間違ってた。「Exceptionというものを持ち上げる」のは Exception()だ。raiseをつけることで初めてそれが上層へ飛び上がる。で、まあそういう勘違いをしてたんだけど、他の言語のthrowっていう言葉だとそういう間違いをしようがないよな。しかも他の言語だと throw new Exception();っていう書き方をしてたんだよ。「新しくExceptionてクラスのインスタンス作ってそれを投げるのね」ってスグわかった。で、pythonだとそういう構文はあるのかな? って考えて、ああ、raiseってこのことだったのか! と思い至れたってわけ。 2017.06.03 Saturday
| カテゴリ:みろりHP |
アーカイブページを作った
● 実験的に、右のサイドバーに過去記事アーカイブスペースを作ってみた。年ごと、またはカテゴリーごとの記事タイトル一覧を見れる。 もともとブログについているカテゴリ表示や年月選択にちと不満があってさ。一度に10件しか表示できないし。いや、10件なのは仕方ないぜ。画像つきの記事を一度に100件とか表示されても挨拶に困っちゃうからな。けどページ送りがかったるいよな。過去記事を閲覧したいときは、タイトル一覧がずらっと全部並んでいるのがやはり正解だろう。実際にマビノギ日記あたりを読んでみたが、ストレスフリーに過去記事を漁ることができたぜ。 ただしでっかい問題があって、これは自動更新ではなくて手動更新なんだよな。だからブログデフォルトのカテゴリ絞りや年月選択も残しておかざるをえない。すると似たような機能がサイドバーに並ぶことになって、ちょいと紛らわしい。だから、実験的な設置。自動更新にできたらいいんだけど。こうやってみんな、レンタルブログからレンタルサーバに引っ越して、ブログプログラムを自前で組むようになっていくのだろうなあ。 ● もちろんアーカイブリストのhtmlはプログラム(python)で自動作成した。あんなもん手作業で作っていられない。
|
+ 閲覧記事
+ 過去記事アーカイブ
年ごと
カテゴリごと
+ 年月選択
+ カテゴリ
+ ブックマーク
+ 最近のコメント
+ アクセスカウンター
全体(since 2010.02.03.)
今日… 昨日… |