趣味記録

自転車、本、PCなど色々

djangoチュートリアル その2

先生!migrateとmakemigrationsの違いがわかりません。

それはそれとして
ForeignKey & ManyToManyFieldの使い方

class Tag(models.Model):
    tag_name = models.CharField(max_length=128)

class Article(models.Model):
    tag = models.ManyToManyField(Tag)
    title = models.TextField(default='タイトルを入力して下さい')
    body = models.TextField()

class Comment(models.Model):
    article = models.ForeignKey(Article, on_delete=models.CASCADE)
    comment = models.TextField()

こういうmodelがあったとする。

article = Artiicle.objects.get(pk=1)
comment = Comment.objects.get(pk=1)
tag = Tag.objects.get(pk=1)

#articleにひも付けされたtag を取得
article.tag.all() #なんかドキュメントを見る限りだとtagsにする必要があるけどtagでできる。なぜ?

#逆にtagからarticleを取得
tag.article_set.all()

#articlにつけられたcommentを取得
article.comment_set.all()

#逆にcommentからarticleを取得
comment.article

django チュートリアル その1

確認したらdjangoのバージョンが古かったのでpipでアップデートできないかなと
色々いじってみたけど俺の知識じゃ綺麗に解決できなかったので公式ドキュメントかどっかにあった再インストールする方法でアップデートした

$ pip uninstall django
$ pip install django

今思ったけど

pip install django -U

で行けたかもしれん。mezzanineはdjango2.0をサポートしてるのかどうか不安。

djangは2.0になってurl関数がpath関数に置き換わったようで

url(r'^(?P<変数名>正規表現)', ......)

とやっていたのが

path('<変数型:変数名>')

になったらしい。正規表現でできたような文字数指定とかはできないっぽい?よくわからん。re_path関数がdjango1.xでのurl関数と同じ働きをするみたいなので、詳細にurlを指定したかったらこっちを使えってことかな?。
変数型で使えるのが以下

Path converters

The following path converters are available by default:

str - Matches any non-empty string, excluding the path separator, '/'. This is the default if a converter isn't included in the expression.
int - Matches zero or any positive integer. Returns an int.
slug - Matches any slug string consisting of ASCII letters or numbers, plus the hyphen and underscore characters. For example, building-your-1st-django-site.
uuid - Matches a formatted UUID. To prevent multiple URLs from mapping to the same page, dashes must be included and letters must be lowercase. For example, 075194d3-6885-417e-a8a8-6c931e272f00. Returns a UUID instance.
path - Matches any non-empty string, including the path separator, '/'. This allows you to match against a complete URL path rather than just a segment of a URL path as with str.

簡単に翻訳すると

str - 空でないすべての文字列にマッチ。ただし「 / 」を除く。
int - 0 か自然数にマッチ。
slug - ASCIIの文字と数字, ハイフン, アンダースコアからなる文字列にマッチ。例:building-your-1st-django-site
uuid - uuidにマッチする。複数のURLが同じページを指定しないようにdashを含み、小文字でなければならない。*1
例:075194d3-6885-417e-a8a8-6c931e272f00
UUIDインスタンスを返す。
path - 「/」を含んだ空でない文字列にマッチする。strを使った区切りがあるURL指定ではなく完全に自分でURLを指定できる。

strとslugの違いがわかんね。slugのほうが制約がきつい?まぁとりあえずstrとint使っとけばいいと思います。あと自分でintとかslugみたいな変数型(path converterというらしい)を作ることもできるっぽい。詳しくは下記
参照

URL ディスパッチャ | Django documentation | Django

*1:dashはハイフンに似た記号らしい

github_学習記録

これからやったことちょこちょこまとめていこうと思う。
絶対わかる!github入門みたいなのは全然情報がなかったので下のサイトがとても参考になった。
今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説 - エンジニアHub|若手Webエンジニアのキャリアを考える!
githubを勉強した。けどまだ良くわかってない

$git push origin master

のoriginってなんだよ
地味に困ったのがvimで、escキーでコマンドを受け付けるようになるのが最初はわかんなかった。

伊藤計劃トリビュート の感想

 伊藤計劃ファンとしてはかなり満足度高かった。

 公正的戦闘規範

 通勤電車でスマホで書いた小説を電子書籍で自己出版したところ人気作家になった藤井さんの短編。やっぱり中国出てきた。ミリタリSFはアメリカ、次点でヨーロッパが主役になってるような感じがするがこれは中国が舞台。ディストピア萌としては中国の人権を放り捨てて、マイノリティをどんどん弾圧していく政策はなかなかにツボ。伊藤計劃はテクノロジーと人間の意識の関係を主に描いていたので、この短編集も意識を主題にしたものが多いのだが、これはもっぱら戦争のテクノロジーに焦点を当てている。虐殺器官について、「SF的なイコンを出来る限り排除して、現在の延長にあり得る未来」を書いたと伊藤計劃氏はどこか(ソラリスのインタビューだったかな?)で語っていたと思うけど、そういう意味でとても伊藤計劃っぽい。しっかしよくこんな設定思いつくよなと。ドローンを戦争に活用という話はいろいろ聞くが、まだ発展途上で方向性がよく定まっていない中、こういう話を考えられたのは本当に尊敬する。オチはとても好み。すべてを知った主人公が現実を受け入れて達観した感じ(これを表すいい単語ってないのだろうか。ニヒル?)で行動するのっていいよね。

仮想の在り処

 これはとても哲学的。ひたすら演算によって作られた人格と現実(あるいは主人公)との関係を描いている。バイナリ計算によってレスポンスを変化させるAIと、同じく脳のイオン伝達によって出力された人格に違いはないのかもしれなくて、そこになにか違いを求めようとすると(多分boy's surfaceでこんなような言い回しがあったと思うが)「意識を司る天使の召命」にいきつくのかもしれない。

 士郎正宗が義肢を拡張して義体を生み出したように、綾野八音はこの作品では意識までも機械に置き換えた新しい存在として描かれている。どこまで置き換えたら(置き換えなかったら)人間なのかというもはや問い続けられすぎてみんな答えなんてないことが薄々わかっている問いをまたもや掘り起こしてくれる。このあたりが主題になっている小説はみんな答えが欲しいんじゃなくて思考遊びを楽しんでるんだろうと思うし、その点で言えばこの短編はかなり面白い。

 この短編を貫くどこか悲しげな雰囲気を生み出しているのは生きている姉を再現(再ではないが)しているはずの仮想人格がそのまま姉の墓標となっていることで、更に言えば主人公を含めた家族全員がそれを意識していつつ直視していないことだと思う。

南十字星

  正直これはあまり好きじゃなかった。なんかラノベっぽいんだよなー。多分この短編が三人称だということが一因なんだと思うが、どうにも好きになれない。あと設定もあんまり合わない。自己相がどことなく中世ファンタジーの魔法っぽいというか。せっかく民族が消滅した世界っていうおもしろそうな設定なんだからもっと(それこそ仮想の在り処のように)民族について考察してくれてたら俺好みだったかも知れない。

未明の晩餐

 これは異色。まさか「伊藤計劃」トリビュートでグルメ小説がでてくるとは思わなかった。舞台の、拡大の末荒廃した東京駅というのはなんだか「横浜駅SF」っぽいなと思ったり。グルメ小説で伊藤計劃をトリビュートするってどうなんだと最初は疑わしかったがちゃんとトリビュートできてて感心した。ただ自分は料理なんて全然できないので調理の描写が全然実感できなかった。

にんげんのくに

 えーこれはよくわからん。オチっぽいオチもなかったし。実在した民族を元に書いたということだが、一読した限りじゃあまり小説にする意義もわからなかったので普通にノンフィクションのドキュメンタリーでいいのではと思った。

ノット・ワンダフル・ワールズ

ネタバレ注意

  いいね。とても良い。トリビュートというか計劃ファンへのサービスとしてはこれが一番出来てたと思う。

「この都市が、我々の生が、死者へのトリビュートだ」

テールは物語を遺した。計画を遺した。今の世界は、彼の遺した計画。

ココらへんなんかはあからさまだけどちょっとニヤッとしてしまう。

 テーマは進化。結構前に「利己的な遺伝子」を読んだんだけど、この短編のように、その知識が色んなところで出てくるのでびっくりしている。進化とは自由になることで、進化の目的とは「一人勝ちすること」だとこの短編では言っているが、生物多様性が環境を混沌にしてるんじゃなくて、逆に多様性がなければ、つまりその環境を構成している種が少なければ、その環境は崩壊してしまう。っていうのをどっかで読んだ気がする。

 eニューロはSFチックなガジェットとして描かれているけど、現代でもスマホとかが同じような役割を果たしつつあると思う。今はまだスマホは取り出さないと見られないからやたらと選択肢を提示したりはしてこないけど、ウェアラブルバイスが普及したらeニューロのように生活に入り込んでくるのかなー。

 オチはまさかの二段構えで、驚かされたし面白かった。AIが意識を持ったという設定だが実際問題どこまでの複雑性を獲得したらコンピュータが意識を持つようになるのだろうか。「意識を持っている」か否かを判定するには意識の定義がはっきりしていないといけないわけだがこんなのはできないので「コンピュータは意識をもつのか」という問いに応えることはできないことになる。

 

フランケンシュタイン三原則

 これは「屍者の帝国に真っ向から喧嘩を売ってる」ってどっかで読んだけどまさにそう。俺だったらこんだけ面白いものをかけるんだぞ、という主張に見えるぐらいおもしろい。ハーモニーの影をちらちら見せているせいで妄想が膨らんで仕方ない。これはハーモニーの後、アポカリプスが起こった世界なのか・・・とかね。

 あとこの短編では言及されてないけど、沖田総司は女体化されたりイケメン化されたり可哀想だと思う。なぜみんな沖田総司の顔をそんなに変えたがるんだ!別に剣豪がイケメンでも美女でもなくたっていいだろうが!そんなに改変ばっかするのは沖田総司への侮辱だぞ!

 話をもどして、屍者の帝国では屍者技術がサイエンスではなくファンタジーのような雰囲気で扱われていて、あまりしっくりこないなぁと思ったけど、この短編では屍者技術という生命への冒涜(この言い方があまり好みじゃないのは同意してもらえると思う)を人間の尊厳である魂にうまく結びつけていてとてもおもしろいと思った。

 この中で訴えられている「人類は永遠の反復と模倣の中で生きている」という主張はSFということを抜きにしてもとても重大な意味を持ったセリフだとおもう。未知に囲まれて精一杯生きていた幼少期と現在とを比べると、生活に占める「反復」の割合がどんどん増えていっているのではないか。

 ちょっと笑ってしまったのが

「いつからこの国の公僕は無辜の市民に銃を向けるようになったんだ」

「わかっとるだろ、建国以来さ。」

ってとこ。 

 あと終わり方なんかいいよね。まぁ最後の一文はあんまり意味分かんないんだけどかっこいいからおk。そういえば著者名の伴名練というのはハンナ・アーレントからとったのだろうか。

怠惰の大罪

 これも面白い。でもせめて終わらせてくれ・・・。公正的戦闘規範と同じように、科学技術が戦争に与える影響を主に描いていて、また歴史改変SFとしても楽しめた。キューバなんて全く縁がないし、ここで登場するキューバは架空の国だけど、あるいはこういう国もあったかも知れないと思うと興味深かった。

 疲れてきたのでこの辺で終わる。今回の記事はポエム感強かったかも知れない。

ubuntuでus配列のワイヤレスキーボードを使う時の備忘録

f:id:arark:20180719224455p:plain

f:id:arark:20180719224955p:plain

これ

入力メソッドタブの上下は変えても良い

内、既存のキーボードレイアウトは両者とも既定でも日本語でも英語でもいいが記号の位置が変わるっぽい?。けど全角の時は。、「」ぐらいしか記号打たないのでいい感じのを選ぶ。

 

全体の設定=>入力メソッドのオンオフのZenkakuhannkakuはsuper+spaceでも変わんなかった。

 

とにかくトライ&エラーでやったので仕組みはよくわからん

 

親指シフトはどうすればいいんだ!!!!!

PyQを一通りやったのでその感想

 遠い遠い昔「PyQ」をやるといいつつなんの進捗も書いてなかったんですが、実はやってました。

 progateとか他のオンライン教材もあるらしいですけど、やったことないんでそこら辺との比較はできません。でもprogateをちらっと見たところ、pyqの方がnumpy, pandas, 機械学習, webサービスなどなどかなり実務的で、深いところまで扱ってる印象でした。progateはその代わり色々な言語があるのでpyq終わったらやってみようと思います。

 感想としてはとにかく楽でした。自分で何やるか考えなくて良いのがすごく楽。問題集みたいに次々やること提示してくれるのでただ勉強すればいいというのがよろしい。あと、書籍だと本とにらめっこしながらポチポチコードを打ち込むと思うんですが、pyqだと同じ画面上にあるので写経がはかどります。

 特に嬉しかったのが、演習問題が充実していること。普通自分でやってると演習やろうとしても問題をつくるのがめんどくさくてなかなかやろうとしないと思うんですが、pyqは問題つくってあるので演習をやるだけで済みます。準備も後片付けも不要。いいね!

 勉強履歴とかも向こうで管理してくれてるので今週やってないなーとか頑張ったなーとか振り返れてモチベ上がります。

 俺はやっと基本コース(といってもかなりボリュームあるけど)終わったので、次のコースやってみようと思います。

新世界より の感想

 長いよ。読むの大変だったよ。

 調べたところSFが読みたい!を受賞してるしSFに分類されるというので買ってみたがあんまりSFじゃなかった。どっちかというとリアルよりのファンタジーな気が。まあ四畳半神話大系をSFに分類することもあるみたいだしとやかく言うまい。

 この本には呪力というまぁ有り体にいえば魔法が出てくるわけだが、この魔法が出現したあとの世界を論理的に描いているという点でとても画期的。以前から魔法を扱った作品に出会うたび思ってたんだが、そんなに民衆に力あったら争い起こりまくりだよねってこと。魔法があるのに世界の大体が平和で、主人公たちは概ね平和な土地を旅する(もちろんイベントに巻き込まれたりはするが)ってのがどうも違和感があった。マギでもハガレンでもなろう小説でもいいけど、まぁ平和。現代日本に魔法をぱっと出現させて、時代を巻き戻しただけ(ひどい言い方だが)みたいな設定が多くてどうも気になってた。もし魔法が古代からあるとすれば、神の怒りで雷を説明していたように、身の回りにあるあらゆる現象を魔法で説明するのが当たり前だっただろうし、その帰結として神かなんかの超越者への信仰が、俺達からすればありえないぐらい強くなったとしても不思議じゃない。信仰を強めた人たちが何らかのきっかけで争いを始めれば収拾がつかなくなることも当たり前だと思う。だから上で上げたような設定の作品に対して(好きだけど)どことなく違和感を持っていた。

 その点「新世界より」は徹底的に考察してて新鮮。大衆一人ひとりが人を殺せるような力を持ってたらこうなるといのを納得できる形で示してくれた。まぁだからといって今後出版される魔法を扱った作品はしっかり考証をするべきだとか言うつもりはない(そもそも俺が言ったところでどうにもならないし)。まぁ面白ければいいよね。結局創作なんだし。

 で、「新世界より」は世界観はしっかりしていたが内容は別。やっぱり合わねえ。こんだけ小説合わないのばっか読んでるともうなんか落ち込んでくるよね。あ、そうだこの感覚はマルドゥックシリーズを読んでる時にも味わった。前の記事で書いたとおり俺は想像力が著しく低いせいか小説でアクションを書かれても面白く感じられない質なので、ずっと惰性で読んでる感じがした。ちょっと待てよ。(おそらく)エンタメ小説の最高峰である「新世界より」すら面白く感じられないとすれば俺はもはや読める小説なんてないのではないだろうか。これからはもうアクションとかミステリとかSFとか設定とか関係ないノンフィクション小説を読むしかないのだろうか。どうすっかなー