豊満な脳みそ←わがままブレーン

ただただ、暗号文をつくりたいがため・・・・・・ 専用の復号プログラムとパスナンバーが9つあれば読めるブログ。さもなければ、ある程度正確に暗号化の仕組みを理解したうえで、総当たり(brute attack)で最大約6,631,300,125,000,000通りの試行が解読に必要です。

小さな思いつきをほとんど手間取らずに実現できるのがコーディングのいいところ。

積み重ねていくと巨大な恩恵に浴することになる。

日々の充実がそれを証明している。

 

問:

「クラスでグループワークをやらせよう。」そんなことがよくある。

グループワークにもいろんな方法があるけれど、グループ分けを教師側の裁量として、しかもランダムにグループを作る場合、

一瞬でそれができたらいいよね・・

 

答:

やってみた。

いつも通りめんどくさいから全部説明しない。

手短にいうと実用性を目指して作ってあるくせに、

立派に一般性のある関数を作った。

(例えば、50人のクラスで1グループを最大40人にするとかいった無茶な設定を与えても、

偏りのない適切な落としどころを見つけられるとか。)

さらにグループ分けをcsvで出力できるように作ってみた。

 

本物の実行例を掲げるわけにはいかないので、テスト版のコードとその実行例を以下に。

 

コード:

f:id:DWJEqxs2G0:20171019221258p:plain

 

 

実行例:

f:id:DWJEqxs2G0:20171019215434p:plain

 

 

そして、確かにランダムだ:

f:id:DWJEqxs2G0:20171019221505p:plain

8BCGHHGDA9ST9378BD8G8BDC88BDAAHEDA98c&c#dBCGGAHCA98BBHG9DDDBACB9A

 

2101 19 22 12 2 27 68 6 58
2017年10月11日17時7分

 

 

 

f:id:DWJEqxs2G0:20171011173857p:plain

wuqponqrpuqqrponqqw>J>M?oounvsopnpoprrponqquQPoYUstvvnporsttnqrqrnqqwswtqnqoutvroqrtpnqqwwrwntpruonp@!z'@u2"[d[z2"@v2"[Z[z2"@w2"[g[z&!

 

3201 19 9 19 9 53 29 22 45
2017年10月10日22時20分

 

 

もう一つの革新的技術。

rightquestion.org

 

この数週間、気分は細野さんの曲。"Pleocene"

youtu.be

ジャンゴ

ウェブアプリの作り方を一からお勉強中

django-marcador - Basic Django Tutorial

 

 

これがBGM。最高です。

youtu.be

100本ノック 第65〜68問目

・・現在もっと大事ないくつかの作業が忙しくて、数日さぼってしまった。

 

言語処理100本ノック 2015 の65〜68問目

 

この4問は要求が単純なので、せいぜい1時間程度の所要時間でクリア。

 

65. MongoDBの検索
MongoDBのインタラクティブシェルを用いて,"Queen"というアーティストに関する情報を取得せよ.さらに,これと同様の処理を行うプログラムを実装せよ.

 

答:

(MongoDB インタラクティブシェル上)

db.artists.find({name:"Queen"}).pretty( )

 

(Pythonのコマンド)

f:id:DWJEqxs2G0:20171006182143p:plain

 

 

 

66. 検索件数の取得
MongoDBのインタラクティブシェルを用いて,活動場所が「Japan」となっているアーティスト数を求めよ.

 

答:

db.artists.count({"area":"Japan"})

 

(活動場所が「Japan」となっているアーティスト数は22821。これが正確な数字。LevelDBの同じ趣旨の操作では答えが異なる。この問題を現在調査中で、Redis等、他のKVSとして機能するソフトを検討している。)

 

 

 

67. 複数のドキュメントの取得
特定の(指定した)別名を持つアーティストを検索せよ.

 

解答例:

db.artists.findOne({"aliases.name":"Project Object"})

出力された検索結果は:

f:id:DWJEqxs2G0:20171006182736p:plain

 

独り言ですが、この検索対象はフランク・ザッパ亡き後のアレです。

 

 

 

68. ソート
"dance"というタグを付与されたアーティストの中でレーティングの投票数が多いアーティスト・トップ10を求めよ.

 

答:

db.artists.find({"tags.value":"dance"}).sort({"rating.value":-1}).limit(10)

 

 

参考にしたサイト:

MongoDB超入門 - Qiita

Mongo Shell 徹底入門 基礎編 - Qiita

[MongoDB] findで深い階層のフィールドを指定して取得する - 物欲にまみれたにしふなばし

 

100本ノック 第64問目

(正解にやっとこさ辿り着いた。[2017/09/30 12:18])

 

言語処理100本ノック 2015 の64問目

 

64. MongoDBの構築
アーティスト情報(artist.json.gz)をデータベースに登録せよ.
さらに,次のフィールドでインデックスを作成せよ: name, aliases.name, tags.value, rating.value

 

 

試行錯誤:

ここまでの100本ノックの問題で、日を跨いだことはなかった。この問題は危うく断念して翌日に持ち越しかけたけれども、性格上それは無理で。64問目は今までの設問の中で一番調べものをしたかもしれない。これからもっと増えるだろうけど(汗)

 

最初に遭遇したのがプロセスのタイムアウト。その原因は:

 

encoding with 'idna' codec failed (UnicodeError: label empty or too long)

 

URI(Uniform Resource Identifier)の文字列を'IDNA'でバイト列にエンコーディングする際、Python上で"too long"と叱られてしまう。確かに最初に試していた文字列が長大で。

 

試行錯誤の末に、ここに助けられた:

PyMongo 3.5.1 Documentation — PyMongo 3.5.1 documentation

ここの<Authentication Examples>という項目を読んで解決にたどり着いた。

 

(結局、日を改めて問題と答えを照らし合わせてみると、問題文を正確に理解していなかったことがわかった。ついに日を跨がされたね。)

さらに問題は"insert_one( )"をイテレータで操作するとあまりにも時間がかかることが発覚したこと。もっともこの解決は簡単で、"insert_many( )"に切り替えて、長大なリストを一発放り込めば良いのだった。

そして、インデックスを作るという点が最大の誤解で、これをやり直しする必要があった。

 

答:

「アーティスト情報(artist.json.gz)をデータベースに登録せよ.」

f:id:DWJEqxs2G0:20170930122400p:plain

 

 

MongoDBをシェルで開いてデータベースの中身を一部表示させると:

 

f:id:DWJEqxs2G0:20170930122533p:plain

 

成功している・・

 

さらに、答:

「さらに,次のフィールドでインデックスを作成せよ: name, aliases.name, tags.value, rating.value

f:id:DWJEqxs2G0:20170930122639p:plain

 

インデックスを登録する際に"sparse"(まばら)を"True"としておくのがポイント。

 

指定したインデックスを使っていくつか検索してみると:

 

f:id:DWJEqxs2G0:20170930122804p:plain

 

f:id:DWJEqxs2G0:20170930122831p:plain

 

 

MongoDMにログインしてモニターを見ながら操作の進行を視覚化できるのが楽しかった。

f:id:DWJEqxs2G0:20170930123701p:plain

 

 

お世話になったページ:

Tutorial — PyMongo 3.5.1 documentation

Indexes — MongoDB Manual 3.4

Compound Indexes — MongoDB Manual 3.4

mongo Shell Quick Reference — MongoDB Manual 3.4

476w4477w6477459z6x54779x4yz6569xw64xz65587yz6z95w477wx477y5477ww54x975677x47744476w44779x6z76x86z654779x477x5477y985976477wwwx965477zw6ww6x47878zx8466y967477w9477yw47875569566z54667wy6x68654786x477y7478y7478z5477zy8x8655wz4x477w94786zywz56568y9wz8654786x477y7558wx878655z6yz88865544w755x4x6^J08I5zw4997y7476w4y7x66477w`B`E_xz66z6z95z6

 

 

1021 23 17 13 8 18 78 69 63
2017年9月28日13時47分

 

ある偉い方(私と同じ性別)に押し倒されて激しくキスされるという夢。全然悪い気がしなくて友情を感じた。

 

昔、「誰でもいいからキスしたい、男でも女でもどっちでもいい」と歌う曲を作って音源にしたことがある。

 

昨日、作業の合間に頭を切り替えるためだけに作ったのが「turning cube」というプログラム。

列と行の数が一緒の整数の並びを回転させるだけのプログラム。

f:id:DWJEqxs2G0:20170928135205p:plain

 

 

実行例1:

 

f:id:DWJEqxs2G0:20170928135423p:plain

 

 

実行例2:

 

f:id:DWJEqxs2G0:20170928135450p:plain

 

 

実行例3:

 

f:id:DWJEqxs2G0:20170928135507p:plain