情報学部大学生のダラダラ日記

β日記

機械学習や日記っぽいものを書きます

【Django】Djangoでbootstrapのテンプレートを使う方法

はじめに

 好きなテンプレートをダウンロードしてコピペはいおっけー!とはいかないのです。

今回使ったテンプレートはhttps://templatemag.com/minimal-bootstrap-template/です。

やり方

 まず、お好きなテンプレートをダウンロードして解凍します。静的ファイルなのでまずプロジェクト内にstaticというフォルダを作り、そこに中身のフォルダ(css,js,lib)などをコピペしてください。

 また、この時点でsetting.pyに

STATIC_URL = '/static/'

とない場合は足してください。

templateフォルダにテンプレートをダウンロードした時のindex.htmlなどを入れ、URLおよびビューを設定してからアクセスしてもまだcssが反映されておらず、以下のようになると思います。

f:id:Parco1021:20191111171207p:plain

 はじめに1行目に

{% load static %}

を記述し、staticフォルダを読み込むように宣言?します。そして

<link href="css/style.css" rel="stylesheet">

<link href="{% static 'css/style.css' %}" rel="stylesheet">

とすることでstaticフォルダからの相対パスを指定し、cssなどを読み込みます。すると

f:id:Parco1021:20191111171036p:plain

さいごに

 今までbootstrapのテンプレートを使ったことがなく、使い方もlaravelやrailsでの使い方ばかり見受けられたので(使い方はほぼ一緒)、メモで残します。テンプレート初めて使ったんですけどいいですね、バエます。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

自動運転に潜む怖さ(論文紹介①Adversarial examples in the physical world)

はじめに

 先日、UberのAI車が死亡事故を起こすという痛ましいニュースが流れました。

news.yahoo.co.jp

 この事故は「歩行者は歩道にいる」というシステム設計から起こった事故ですが、例えばAI車が読み込む標識などに誰かが細工をして「とまれ」を別の標識に認識させるようにしてしまったらどうなるでしょうか?結果は目に見えていると思います。今回はそこに関連する論文を紹介します。 

今回読んだ論文について簡単に

  • タイトル:Adversarial examples in the physical world
  • 発行年:2017(ICLR)
  • 著者:Alexey Kurakin,Ian Goodfellow,Samy Bengio
  • URL:https://arxiv.org/abs/1607.02533

Adversarial Examplesについての先行研究

 まず、Adversarial Examplesについて一言で説明すると、「画像にノイズを加えてモデルに誤った出力をさせてしまう」ことです。

f:id:Parco1021:20191109212451p:plain引用元:Goodfellow et al. (2014)

  元々のモデルの出力は57.7%でパンダとなっています。そこに真ん中の図のようなノイズを加えることでモデルの出力が99.3%でgibbon(テナガザル)となります。このように人間にとって見た目に差がなくても機械学習システムの出力を誤らせてしまうようなモデルに対する脆弱性攻撃のことをAdversarial Examplesといいます。

 機械学習、特にニューラルネットワークにおけるモデルは、モデルへの入力時の微弱な変化に対してとても弱いことがわかっています。また、モデルを複数用意しAdversarial Examplesの実験を行った場合、あるモデルが誤った出力をする時はそのほかのモデルも誤った出力をする可能性が高いことが示されています。

新規性

 上で挙げた先行研究は攻撃が全てコンピュータ内で為されていることを前提にしています。しかし実際に私達が機械学習システムを用いる時は声をSiriなどに入力したり、顔認証でスマートフォンをアンロックしたりなど実世界であることが多いです。今回の論文は特にカメラを通じた画像の認証におけるAdversarial Examplesの生成および実験を行っています。

実験で用いられたAdversarial Examplesの生成方法

 まずは変数の定義を説明します。

  • {\displaystyle X }…入力画像。3次元ベクトルであり、ピクセルの値は[0,255]の整数値
  • {\displaystyle y_{true} }…入力{\displaystyle X }の正しいクラス
  • {\displaystyle J(X,y) }…損失関数
  • {\displaystyle Clip_{\{X,ε\}}X'(x,y,z)=min⁡\{255,X(x,y,z)+ε,max⁡\{0,X(x,y,z)-ε,X'(x,y,z)\}\}} ピクセルが[0,255]の範囲外にならないようにクリッピングする処理

変数の定義がされたので今回の論文で用いられた手法を3つ説明します。

Fast Method

 上でも示したGoodfellow et al. (2014)による手法です。

{\displaystyle X^{adv}=X+εsign(∇_X J(X,y_{true} )) }

ざっくり式の説明をすると{\displaystyle ∇_X J(X,y_{true} ) }によって勾配ベクトルを求め、符号を求めるsign関数に引数として渡します。それが正ならば正の方向、負ならば負の方向(=正解クラスの遠ざける方向)へノイズを加え、より正解から遠ざける方法です。εは変数です。

Basic Iterative Method

 Fast Method を繰り返し行う方法です。

{\displaystyle X^{adv}_{N+1}=Clip_{X,ε}\{X^{adv}_N+αsign(∇_X J(X^{adv}_N,y_{true} ))\}}

 繰り返し行うのでピクセルの値が範囲外とならないようにクリッピングを行っています。

Iterative Least-Likely Class Method

{\displaystyle y_{LL}=argmin\{p(y|X)\} }

{\displaystyle X^{adv}_{N+1}=Clip_{X,ε}\{X^{adv}_N-αsign(∇_X J(X^{adv}_N,y_{LL} ))\}}

 Basic Iterative Methodと符号と損失関数の引数が違いますね。yLLはモデルが出力するクラスのうち、最も確率の低いものを示します。なのでこの方法は最も"あり得ない"クラスに寄せています。

εの決定

 先ほどの数式におけるεを決定するための実験です。

f:id:Parco1021:20191109235316p:plain引用元:Alexey Kurakin et al.

εが8を超えたあたりから滑らかになりますね。また、誤認率はl.l方法が最も高いです。

f:id:Parco1021:20191110000319p:plain引用元:Alexey Kurakin et al.

 上の画像を観てもわかる通り、εが8でも人間の目からはノイズが加わっていることはわからないと思います。 

実験の方法

 実験の方法はまず、画像を印刷します(a)。そして印刷した画像を携帯電話のカメラで写真を撮り(b)、自動でトリミングしたもの(c)をモデルへ入力します。

f:id:Parco1021:20191110001702p:plain引用元:Alexey Kurakin et al.

 以上のように入力は完了しました。また、本実験では

①Average case

②Prefiltered case…あらかじめ画像をフィルタリングし、元のモデルの出力を0か1かになるようにする

の2ケースが用意されていますが、②は考えずに①のみ結果を示します。

f:id:Parco1021:20191110003217p:plain引用元:Alexey Kurakin et al.

 Photosがカメラで撮った画像であり、Source imagesが元の画像です。Adv. imagesがノイズ込みの画像。

 表を見ると、例えばfast method のε=16の時、カメラを介すると誤認率がtop-1だとおよそ2/3、top-5だと1/3となっておりかなり低くなっています。元の画像においてはl.l.方法がAdversarial Examplesの誤認率が高く、fast methodが最も低いです。しかし、カメラを通じると、fast methodが最も誤認率が高くなっています。つまりカメラを介する場合とそうでない場合とでAdversarial Examplesの作成方法の優劣が変わっています。

さいごに

 今回は、僕達の身近なケースであるカメラを通じたAdversarial Examplesの論文を読みました。機械学習もセキュリティも初心者なのですが先輩や先生に教えていただきながらなんとか読み切ることができました。内容としてはとても興味深いものであり読んでいて楽しかったです。

 カメラを介するケースとそうでないケースで攻撃側の優劣が異なるということは防御側もテストをコンピュータ上で行うのではなく、カメラを介さなければいけないということであり、これもいたちごっこになっているそうです。

参考文献

 

 おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

"コレ"に登録するだけでブログの収益が増える…かも?

はじめに

 タイトルであんなふうに書きましたが実際の収益に影響するかどうかはブロガーさん次第です。貴方は商品のリンクを貼る時、Amazonのリンクを貼っていますか?それとも楽天のリンクを貼っていますか?あるいは両方貼っていますか?自分はAmazonを使っているけどユーザーさんは楽天しか使っていないかもしれない。そんなことを考えなくても良いのがもしもアフィリエイトです。既に使っている人も多いと思いますが…。

もしもアフィリエイトについて

 では、もしもアフィリエイトを使うと何が嬉しいのか早速結論に移ります。

 例えば上のように1つの商品辺りにAmazon楽天及びYahooショッピングの3つのリンクを貼ることができます。

使い方

 まず、以下のリンクにアクセスして会員登録を済ませてください。 

https://af.moshimo.com/

サイトの登録などを済ませてから「サイトの運営」→「かんたんリンク」を選択します。

f:id:Parco1021:20191108162713p:plain

おそらく、デフォルトだとAmazonとの連携ができていないので申請をしてから数日待ってください。僕は4、5日かかりました。

 連携がとれているのを確認してから商品を選択するとjavascriptのコードが生成されるのでそれをコピペするだけです。とても簡単なのでまだやっていない方は早めの登録をお勧めします。

 

 

 

 おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

(個人的)ONE PIECEのOPランキング

はじめに

 2つ足で歩く前からワンピースが好きな自分が個人的に好きなアニメのOPのTOP5を発表したいと思います。もう一度言います。

個人的

ランキングであり、僕個人の歌の好みや好きな話のイメージなどが顕著に表れているので〇〇がないなんてファンじゃない!などの断定はやめてください。ファンです。ランキング外でも当然好きな歌はたくさんあります。

OPリスト(2019年11月現在)

animateさんがリストを挙げてくださっているので引用します。(歌手名)「(歌名)」となっています。

きただにひろしウィーアー!
Folder5「Believe」
ザ・ベイビースターズ「ヒカリヘ」
Bon-Bon BlancoBON VOYAGE!
BOYSTYLE「ココロのちず」
D-51「BRAND NEW WORLD」
7人の麦わら海賊団「ウィーアー! ~7人の麦わら海賊団篇~」
タッキー&翼Crazy Rainbow
5050「Jungle P」
東方神起ウィーアー! ~10周年Ver.~」
東方神起「Share The World」
矢口真里とストローハット「風をさがして」
The ROOTLESS「One day」
安室奈美恵「Fight Together」
きただにひろしウィーゴー!
新里宏太「HANDS UP !」
AAA「Wake up!」
GENERATIONS from EXILE TRIBE「Hard Knock Days」
氣志團きただにひろし「ウィーキャン!」
安室奈美恵「Hope」
V6「Super Powers」
きただにひろしOVER THE TOP

 では早速第5位から

第5位

The ROOTLESS「One day」

One day

One day

  • provided courtesy of iTunes

  頂上戦争あたりの歌ですね。あまりワンピのことを知らないような人でもこの歌は知っているので知名度としてはウィーアー並だと思います。僕個人としてもとてもいい歌だと思います。頂上戦争編があまり好きではないので5位です。

 

第4位

 ザ・ベイビースターズ「ヒカリヘ」

ヒカリへ

ヒカリへ

  • provided courtesy of iTunes

  アラバスタ編の終盤から空島編の中盤までのOPだったイメージです。アラバスタ終盤でバチバチにロビンが敵描写されているにも関わらず、このヒカリヘにてメリー号に自然に乗っているという伝説のネタバレ曲でもあります。ゆったりとした声がいいですね。

 

第3位

5050「Jungle P」

Jungle P

Jungle P

  • 50/50
  • J-Pop
  • ¥250
  • provided courtesy of iTunes

 エニエスロビー編終盤からスリラーバーク編序盤までの歌です。特にイメージに残っているのはアニオリであるドンアッチーノ編で流れていたことですね。ドンアッチーノ編は正直嫌いなのですが、そのマイナスのイメージよりも歌の好みが勝っているので3位です。

 

第2位

Folder5「Believe」

Believe (第48-115話OP)

Believe (第48-115話OP)

  • Recitativo
  • アニメ
  • ¥153
  • provided courtesy of iTunes

  アーロンさんあたりの話です。ファンの間でもとても人気のある歌であり、僕の幼馴染の友達はこの歌が一番好きだと言っていました。テンポがよく好きな歌です。

 

第1位

 安室奈美恵「Hope」

Hope

Hope

  • provided courtesy of iTunes

  WCI編です。あまり"ワンピースっぽく"ない歌なのですが、王道JPOPが大好きです。あと、WCI編が僕的に一番好きです。なぜこの歌が好きなのか言語化できませんがまあヨシ!

番外編

 (本当はBON VOYAGEが一番好きなんだけどitunesにようわからんカバーしかなく、良さが伝わらないと判断したので今回は外しました。本家は御自身で探してください。なので個人的順位はそれぞれ+1したものです。)

BON VOYAGE! (From

BON VOYAGE! (From "ワンピース")

  • 小川美加
  • アニメ
  • ¥150
  • provided courtesy of iTunes

さいごに

 itunesアフィリエイトを使いたかったので今回は個人の好みでしかないワンピースOPランキングを作ってみました。先にも述べている通り、他にもいい歌ばかりなので是非良ければ聞いてみてください。EDにも映画にも大好きな歌が多くあるので後日別途EDと映画の主題歌ランキングを作ります。

 

 おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

好きな漫画「金色のガッシュ(ベル)!!」

はじめに

 今週のお題「好きな漫画」ということで、ワンピースと並ぶほど好きな漫画である金色のガッシュを紹介します。

(動画を貼っていたらアフィリエイトさんに怒られてしまったので再掲です。)

金色のガッシュについて

 この漫画は2001年頃から2008年頃まで週刊少年サンデーにて連載されていました。僕がちょうど小学生中学年あたりまでです。僕自身初めて親にお願いして買ってもらった単行本なのでかなり思い入れがあります。少年野球があったのでリアルタイムである日曜9時からのアニメは観ることができませんでしたがビデオをレンタルしたりして全て観ました。ガッシュ系統の名前をSwitchの名前にすると同世代の人達から「あーーー懐かしい!」などと言われるのでうれしいです。

 内容は自分でまとめるのは難しいのでWikiを引用します。王道なバトル漫画だと思います。

俗に言うバトルロイヤルであり、魔物たちは魔界の王を目指して最後の1人になるまで戦い合う。脱落の判断は基本的に魔物の本で判断され、魔物の本が燃えたり燃やされた場合、王になる権利が剥奪され、魔界に強制送還される。また、魔物は自分の本と波長のあった人間(「パートナー」や「本の持ち主」とも呼ぶ)が、本に心の力を込めて呪文を読むことでしか「」を使用できない。そのため、魔物の本は最重要アイテムであり、王になる上で魔物は本を守り、本を読めるパートナーを探し出して戦いに協力を求めることが最重要作業となる。

魔物やパートナーが自分の本を自分で燃やして棄権することはできず、逆に言えば自身の術で直接本を燃やして自滅することはない。本を燃やす以外にも、魔物が死ぬと脱落したと判断されるようだが、最終的に明確に死を描かれた魔物がいないため、魔物が死ぬとどうなるかは不明。

引用元:Wilipedia

 

 魔物だの呪文だのの単語を聞くと物騒な漫画のように思われますが、実際は下のような少年漫画っぽいイラストです。

  小さい子がガッシュでアニメ版での声優はチョッパーやコナンの光彦で有名な大谷育江さんです。

この漫画の魅力

 まずはギャグシーンと戦闘シーン、感動シーンが次々とやってくることです。戦闘シーンだと思ったら急にギャグシーンになったり、戦闘後に魔物が消えてしまう時には感動シーンになったりします。そのようなギャップばかりの漫画でもすんなり違和感なく読むことができるのは作者さんのセンスだと思います。人間ギャップ大好きだからね。


@金色のガッシュ!!27巻,雷句誠

f:id:Parco1021:20191103174114p:plain

上の2人が同じ漫画のキャラなの…ってなりますよね。ビッグ・ボインとかどのような発想で生まれたのかすごい気になります。 このようにキャラやシーンのギャップが多いのが第一の魅力です。

 次の魅力は音楽の良さです。カサブタガッシュを知らない人でも知っているのではないでしょうか。あと個人的なおすすめは「僕はここにいる」や僕のカラオケの十八番である「チチをもげ」、「ベリーメロン~私の心をつかんだ良いメロン~」です。また、僕が一番好きな曲は優しい風です。曲なので歌詞はないのですが、とてもいい曲です。是非聴いてみてください。どの曲もiTunesにはないのでCDのリンクを貼ります。

 他にも呪文が少年心をくすぐるようなものだったり呪文の語呂の良さだったり多くの魅力がありますが、キリがないのでここでやめます。

さいごに

 不慣れなもので上手くまとまらずすみません。今回は僕の好きな漫画であり、かなり思い入れのある「金色のガッシュ!!」を紹介しました。全33巻(完全版だと16巻)とそこまで長くないのでもしよろしければご覧になってください。原作と少しストーリーが異なり、日常シーンが多めなアニメもおすすめです。

おわり。 

 

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Django】DjangoでBootstrap4を導入する

はじめに

 これは自分用のメモです(定期)。なんか色々なサイト回っていたらよくわからなくなってしまったので自分用に残します。

導入

django-bootstrapというパッケージがあるのでそれを今回僕は使います。

pip install django-bootstrap4

 パッケージをインストールしたらsettings.pyを以下のように変更します。



    

    #~~中略

    

    INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'manager',

    'bootstrap4',   #追加

]



     #~~中略

TEMPLATES = [

    {

        'BACKEND': 'django.template.backends.django.DjangoTemplates',

        'DIRS': [

            os.path.join(BASE_DIR,'templates'),

        ],

        'APP_DIRS': True,

        'OPTIONS': {

            'context_processors': [

                'django.template.context_processors.debug',

                'django.template.context_processors.request',

                'django.contrib.auth.context_processors.auth',

                'django.contrib.messages.context_processors.messages',

            ],

            'builtins': [

                'bootstrap4.templatetags.bootstrap4',   #追加

            ],

        },

    },

]

次に、templateでのbootstrapの呼び方は

{% bootstrap_css %}

とするだけです。僕はなぜか{{%  %}}としてしまっていて

Could not parse the remainder: '% bootstrap_css %' from '% bootstrap_css %'

というエラーが出ました。理解が浅いがゆえのミスです。

あとは通常通りにclass指定すればbootstrapを使うことができます。

さいごに

 パッケージを使う人や直接ダウンロードしてstaticフォルダに入れる人がいらっしゃったりしていてどれを参考にしたら良いかわかりませんでした。中には混合させたQiitaも存在したので気を付けたいと思いました。

 

参考

www.techpit.jp

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Django】migrationしてもNo such columns ~

はじめに

 自分用のメモとして残しておきます。論理的な解決とはなっていないのでご容赦ください。

エラーと解決方法

 Djangoにおいてmodels.pyを書いて

python manage.py makemigration

↓↓

python manage.py migration

してからDBにinsertしようとしたら…

No such columns ~

??????カラムがない?????

migrationsディレクトリを確認したところきちんとmigtationファイルも作成されており、migrateも為されていることが確認できる。こんな時は一旦やり直すべしなのでmigrationファイルを消去して再度makemigrations→migrateしてみます。

No such columns ~

????????????カラムがないとのことなのでadminでテーブルの中身を確認してみる。admin.pyを以下のようにします。

from django.contrib import admin
from .models import DBname

admin.site.register(DBname)

そして/adminにアクセスし、ログインします。ユーザ名、パスワードなどを設定していない場合は

python manage.py createsuperuser

としてからユーザを作成してください。そして作成したテーブルを確認したところ、テーブルは存在していたのですが、カラムが存在していませんでした。原因はわからないのでもう少し大元からやり直してみます。db.sqlite3というファイルを削除し、またmigrationファイルおよびmigrateした後のファイルも削除する。そして再度makemagrationからのmigrateし、プログラムを動かすと想定通り動きました。

さいごに

 わけのわからないエラーでも英語の文献が多かったので自分用のメモとして残しておきます。まだ全然扱いなれていないけどLaravelに比べてDjangoは少しクセが強いな~って印象です。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

釣りに行ったら超危険な殺人魚が釣れたので食べる

はじめに

 前回ボウズだったのでリベンジということで朝5時に出発して釣りに行ってきました。今回も赤イソメで餌釣りです。

 

f:id:Parco1021:20191028154200j:image

前回↓↓

parco1021.hatenablog.com

釣果

 今回はボウズにならずに済みました!!!!釣果です!

f:id:Parco1021:20191028154323j:image

  • ダツ1匹
  • カワハギ1匹
  • ベラ3匹
  • キス10匹
  • フグたくさん

 

 

…嘘です。実際は↓↓です。

f:id:Parco1021:20191028154310j:image

  • ダツ1匹
  • カワハギ1匹
  • ベラ3匹
  • キス10匹
  • フグたくさん

流れが速かったり釣り場所が他の方に取られていたりなど思っていたよりも釣れませんでした。サビキでやっていた方はサバを釣りまくっていたので作戦負けです。キスは近くの魚屋さんで10匹400円弱で買いました。また、ベラは小さくてリリースサイズですが、釣れた時に針を飲んでいてどうしようもなかったのでいただきます。

やはりこの中で目立つ魚は「ダツ」でしょう。これは実際に餌釣りで釣ったわけではなく友達のジグと僕の仕掛けが絡まってごちゃごちゃしている時に僕の仕掛けに引っかかっていました。その時の画像です。イソメが写っているので虫等苦手な方は注意してください。

f:id:Parco1021:20191028184633j:image

 

御覧の通り尖った顎が特徴です。この魚による事故で命を落としている方が多くいるほどの危険魚です。

ダツについて

https://www.zukan-bouz.com/public_image/Fish/359/Thumb630/datu.jpg

引用元:https://www.zukan-bouz.com/syu/%E3%83%80%E3%83%84

捕食の際は小魚の鱗で反射した光に敏感に反応し、突進する性質がある。暗夜にダツが生息する海域にライトを照らすとダツが激しく突進してきてヒトの体に突き刺さることがあるので夜間の潜水は特に注意が必要である。実際にダツが人体に刺さって死傷する事故も発生しており、沖縄県の漁師には鮫と同じくらいに危険視されている。

参照元:Wikipedia

 いや、怖すぎ…。例えば夜釣りをしている時にヘッドライトをつけたまま海面を覗くとダツが餌と勘違いして猛スピードで突っ込んでくるような事例もあったらしいです。僕の仕掛けに引っかかったのは友達のジグに反応し突っ込んできたからだと思われます。実際釣りの時もジグなどで釣れることが多いそうです。気をつけよ。

クッキング

 せっかくダツも釣れたので食べてみようと思います。味はそこまで美味ではないらしいですが、刺身や唐揚げ、塩焼きで食べられているそうです。今回はキスも釣った(?)ので友達と話し合い、例のごとく唐揚げと天ぷらと塩焼きにして食べようと思います。

塩焼き

  • キス3匹
  • ダツ1匹

唐揚げ

  • キス2匹
  • ベラ3匹
  • カワハギ1匹

天ぷら

  • キス7匹

 

f:id:Parco1021:20191028154340j:image

キスは安定に美味しく、カワハギ、ベラの唐揚げもとても美味しかったです。肝心のダツですが調べたままって感じでした。特別美味しいわけでもなく決して味が悪いわけでもなく…って感じです。魚をつまみに飲むビールは美味しさの極みでこれのために釣りに行ってると言っても過言ではありません。

缶の蓋を取るとウド〇木さんに見えるそうです。

f:id:Parco1021:20191028154349j:image

さいごに

 今回も釣りに行った記事を書きました。日頃PCでカタカタしているのでこういった自然に触れることは息抜きにいいですね。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

夜釣りに行って晩御飯をゲットしてきた

釣りに行ってきた

 暇だったので友達と夜釣りに行ってきました。寒くなってきて夜釣りだったのでメバルカサゴなどの磯ものが釣れたらいいな~~~~~~と思っていきました。しかし、近くに磯ものが釣れるような場所がないので適当なところで釣りをしようという風になりました。そして晩御飯でそいつらを食ってやろうという予定です。

 とりあえず何か連れればいいのでボウズのがれのSサイズで青イソメで餌釣りしました。青イソメは噛んでくるので嫌いです。

ささめ針(SASAME) X-002 ボウズのがれ投釣リ S

ささめ針(SASAME) X-002 ボウズのがれ投釣リ S

 

  風が思っていたよりも強く、寒かったし久しぶりの夜釣りで視界不良にも慣れていなくて2時間ほどで撤収しました。でも夜釣りはお空お綺麗で良かったですわ。

 

f:id:Parco1021:20191026204822j:imagef:id:Parco1021:20191026204833j:image

インスタ映え

 

釣果

今日釣りに行った結果、晩御飯をゲットしました。

f:id:Parco1021:20191026204812j:image

ボウズのがれとは(哲学)

 

さいごに

 今回は"ブログらしい"ことを書こうと思って書きました。以上、「夜釣りに行ったら何も釣れず、マクドナルドで晩飯をゲットしたお話」でした。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Python】Fortnite tracker APIを使って現在のストア情報を取得する

はじめに

 前回の記事ではアップデートが為されていないライブラリを使ったため本来望んだような動作がされなかった。なので今回は普通にAPIを使う。今回はコードと結果のみの記事になります。基本的なAPIのイントロダクションは前回の記事の通りなのでそちらをみてください。↓↓

parco1021.hatenablog.com

また、公式ドキュメントは以下です。

fortnitetracker.com

コードと結果

import requests

key = 'API KEY'
URL = 'https://api.fortnitetracker.com/v1/store'

headers = {'TRN-Api-Key' : key}
r = requests.get(URL, headers = headers)
list_result = eval(r.text)
print(list_result)

https://tracker.gg/developers/docs/authentication

↑にある通り、headersとしてTRN-Api-Key: API KEYを渡すことで認証を通します。

結果は長くなってしまうのでスクショで失礼します。

f:id:Parco1021:20191026144001p:plain

長ったらしくて中身が見えないので出力をlist_result[0]とします。

 

結果

{'imageUrl': 'https://cdn.thetrackernetwork.com/cdn/fortnite/45E212219_large.png', 'manifestId': 12219, 'name': 'Chaos Agent', 'rarity': 'Epic', 'storeCategory': 'BRWeeklyStorefront', 'vBucks': 1500}
  • ImageUrl:商品の画像リンク
  • manifestId:商品ID??
  • name:商品名
  • rarity:商品のレアリティ
  • storeCategory:商品のカテゴリー(Emoteなど)だと思ったんですけど全部BRDailyStorefronとなっているのでわからないです。
  •  vBucks:値段

さいごに

 今回はFortnite tracker APIを使って結果の表示だけさせてみました。日本語の文献が見当たらなく、APIの扱いにも慣れていないので少し苦労しました。誰かのお役に立てれば幸いです。ストア以外にも個人の戦績なども見ることができるようなので公式ドキュメントを参照して頑張ってください。

 

参考

qiita.com

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Python】fortnite-pythonライブラリを使ってみた

はじめに

 再びなにかAPIを叩きたくなったので調べていたらFortnite APIなるものを見つけ、なんとライブラリがあるらしいのでそれを触ってみました。公式ドキュメントは以下なので観てください。このブログはドキュメント通りに触ります。

https://pypi.org/project/fortnite-python/

イントロ

 まず、 http://fortnitetracker.com/にアクセスし、アカウント登録をします。

f:id:Parco1021:20191024150829p:plain

  次にサポート>APIから、Manage or Create API Keysを選択します。

f:id:Parco1021:20191024151213p:plain

Create applicationからApp name(アプリの名前)、Description(アプリの説明)、Contact Email(Eメール)を適当に入力するとApp Keyが生成されるのでこれをメモしておきます。

実装

pip install fortnite-python

とし、ライブラリをインストールします。使用例を以下にしめします。

from fortnite_python import Fortnite
from fortnite_python.domain import Platform
from fortnite_python.domain import Mode

fortnite = Fortnite('API KEY')
player = fortnite.player('Player name',Platform.GAMEPAD)

stats = player.get_stats(Mode.SQUAD)
print(stats.kills)
print(stats.top1)

 

  コード中のAPI KEYとPlayer nameは先ほどメモしたAPI KEYと自分のプレイヤー名を入力します。fortnite.player()の第二引数としてPlatformを指定してください。デフォルトではPCとなっています。僕はSwitchでやっているのでGAMEPADとします。そしてplayer.get_stats()の引数としてゲームモードを指定します。今回はSQUADとします。

そして出力としてキル数とビクロイの数を出力させます。

2476
210

 正しく(?)出力されました。他にもストアの状況などが見られそうなので試してみようとしました。しかし、ソースを見るとstoreクラスにおける変数宣言がされていないのでできそうにないです。次にチャレンジを出力させ、確認すると「フェイタルフィールドで~」みたいなチャレンジがあったので?????となりました。既にフェイタルはないのに…。再度公式ドキュメントを確認すると

f:id:Parco1021:20191024154632p:plain

いや2019年2月のバージョンかい!!!!!!!アプデとまっとるやないかい!!!!!!!!!

おわりに

 ということで今回はFortnite-pythonライブラリを触ってみました。色々便利ですけど普通にAPIを叩かないといけなさそうです。使い方も公式ページにのっているのでやります。というかやりました。後日載せます。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

チームラボのサマーインターンシップに参加してきた

はじめに

 チームラボ株式会社さんで2019年サマーインターンシップにWebアプリエンジニアとして参加してきました。自分自身こういった体験談が見つからなくて緊張したので自分なりの体験談として残しておきます。

参加したきっかけ

 正直なところ、自分とは縁のない企業さんだと思っていたのでインターンへ応募すらしようと思っていませんでした。しかし、Wantedlyでスカウトをいただき、それならと応募しました。

選考のフロー

 ES→面接→Webテストという流れでした。面接ではガチガチの人間性を問うような質問はなく、雑談のような感じで「最近どう?」「いい感じっす」みたいな感じでやっていたら終わっていました。正直マナーは全くなっていなかったと思います。自分としても受かるとは思っていなかったので全く緊張せず話すことができました。面接が終わった後、あまりにも自分の面接マナーがなっていなかったので確実にダメだろうなとおもったのですが、後日合格通知と事前課題の案内が届きました。

事前課題

 事前課題は検索WebアプリケーションをRest APIで実装し、実際にHerokuなどを用いてデプロイまでするような課題でした。時期も時期で期末テストやレポートの締切直前でどう考えても間に合わなさそうなので期限の延期を申請したら快く受け入れてくださいました。期限を延ばしていただいたにも関わらず、フレームワークを使わずPHPのみでコーディングしたためセキュリティの懸念もありローカルで動くものしかできず、できたところまでを提出しました。その時に自分の無力さを改めて感じ萎えてしまい、人事の方に「自分のような全然技術がない人でもこのまま参加していいのでしょうか」などと聞いてしまったのですが、「現段階での技術はあまり求めていないのでこのインターンスキルアップしてくれればいいですよ」と返してくださり、とても気が楽になりました。なんであんなこと聞いたんだろ恥ずかしすぎる。

インターンシップの概要

 概要はこの通りです。自分が参加したのは第四タームです。

・9/17~9/27 8日間

・家からホテルまでの交通費支給

・ホテル手配

・時給1000円

・10時~19時(昼休憩1時間)

インターンシップ中やっていたこと

 僕はWebアプリエンジニア(PHP)に所属したのですが、チームが合わせて7人おり、日ごろからアルバイトなどでガンガン実装をしているような人は実際の業務に携わっており、そうでない人や業務をやらない選択をした人は与えられた課題をこなし、最終課題としてイン〇タのようなものを実装しました。僕は当然後者です。

 そしてインターンシップ中は毎日チームの人やメンターさんと一緒にランチに行っていました。他にもホテル暮らしだったので毎日毎食外食で太りました。東京はメシがうめえ!

f:id:Parco1021:20191015142150j:imagef:id:Parco1021:20191015142155j:imagef:id:Parco1021:20191015142503j:image

 

 一週目の金曜日にインターン参加者みんなとチームラボボーダレスへ行きました。初めて行ったのですが、平日であるにも関わらずとても混んでいました。作品は言葉にできないほど綺麗な物が多く、今でも鮮明に記憶に残っています。

f:id:Parco1021:20191015142227j:image

 そして2週目になり、いよいよ最終課題を間に合わせなければならなくなりました。僕自身、開発が初めてだったのでDB設計やルーティング、URL設計などが甘々なままAPIの実装にうつってしまい、それをメンターさんに言及していただいたのでまずはそこから始めました。やはり後から直すのがめんどくさくなったり、DBが冗長になってしまったりするからだろうと思いました。そして画面仕様書通りにAPIを作成しました。今回プログラミングではほぼ躓かなかったです。そしてフロントをcssで実装し、初めて使うHerokuに戸惑いつつもなんとかデプロイまでもっていくことができました。作品自体は公開してもいいそうなのでリンクを貼っておきます。

http://ingra.herokuapp.com/home

 OSはWindowsを使ったのですが、インターン生でWindows使ってたのまじめに僕しかいなかったと思います。みんなMac…。開発環境はDockerで言語はPHP(Laravel)、DBはPostgresそしてHerokuを用いてデプロイしました。

インターンシップの参加者

 東北から九州まで多くの地域から参加者がいました。日頃からアルバイトでコードを書いていたり、趣味で開発をしている人がいたりなどとても優秀な人が多くいました。大学で何を勉強しているのかや日頃どんなことをしているのかを聞くとみなさんとても詳細に教えてくださり、お話を聞くだけでも楽しかったです。

苦労したこと

 何しろ初めてのことが多すぎてそこが大変でした。Dockerを使ったこともなかったですしHerokuも初めて使いました。特にWindowsでDockerの環境構築する時、セッション切れのファイルがあったりコンテナが謎に立ち上がらなかったりMacの人は資料通りにやれば3時間ほどで終わったものを僕は資料通りにやってもうまくいかず、1日半使ってやっと環境構築しました。メンターさんにはとても助けていただきました。

最後に

 本当はもっと書きたいことがあった気がするんですけど思い出せないのでここで締めます。作ったWebアプリは別にコード公開してもいいよ~とのことだったのでまた後々コード公開はしませんが、機能の実装方法などを書きたいと思います。周りの学生も皆レベルが高く、そして現場のプロに教えていただき、勉強させてもらう立場でありながらお給料も交通費も宿泊先も用意してくださったチームラボさんには感謝しかありません。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Python】Pythonでセンター試験数学ⅡBを解こうとしたら2時間かけて5点しか取れなかった

はじめに

 あれ?Pythonでセンターの問題解けるんじゃねって思ったので挑戦しました。

問題は以下の大学入試センターさんが提示してくださっている問題のうち、僕が受験したH29年度のものを引用します。

https://www.dnc.ac.jp/center/kakomondai.html

解いてみる

f:id:Parco1021:20191019230656p:plain

 問題自体は簡単です。ア~エは倍角の公式使うだけでオは②を2乗するだけです。しかし、タイトルの通り、この二問に二時間かけたうえにこれ以上は厳しいと断念しました。

 初めに試みたことはsympyという記号計算に強いモジュールに頼ることです。数学の問題をPythonで解こうとしたことがないのでわからなかったのですが、sympyを使えば倍角の公式などを用いて手で解くようにできると思っていました。しかしそんなうまくいかず、手動で倍角の公式を定義しなければなりませんでした。以下にコードを示します。

import sympy as sy
import math as m

exp1 = 2*a**2 - 1 - x
exp2 = 2*b**2 - 1 - y
cosa = sy.solve(exp1,a**2)
cosb = sy.solve(exp2,b**2)
result = cosa[0] + cosb[0]
c = result.subs(x,(4-15*y)/15)
print(c)  #あいうえ

d_shi = -2
d_bo = m.sqrt(15)
print(int(d_shi**2))   #お
print(int(d_bo**2))

・出力

17/15
4
15

…苦しかったです。

 コードの説明をします。

x…cos2α

y…cos2β

a…cosα

b…cosβ

です。まず、別で倍角の公式を定義しなければならないのでします。そして変数cosaにsolve()を用いることでa^2=の式に直し、代入します。つまりcosaは(cosα)^2となります。そして両辺を足します。変数resultは求めたい(cosα)^2+(cosβ)^2であり、cos2α/2 + cos2β/2 + 1です。ここからcos2α + cos2β = 4/15を使いたいのでsubs()を用いてcos2α = - cos2β + 4/15を代入します。ここでプログラムにおいて4/15 - yとせず、(4-15y)/15とした理由はこうしないと出力が小数となってしまうからです。なんででしょうかね。とりあえずこれで強引ですがア~エまで出力できました。オはそのままやりました。

さいごに

 今回はとても強引に数学の問題をPythonで解いてみました。苦労した点はまず倍角の公式を強引に定義してよいものか、何かないのか考えることです。結局強引に定義しましたが…。あとは上にも書いた通り素直に代入すると出力が小数となってしまったことです。無理矢理小数を分数に直すライブラリはあるのですが、当然思ったような分数にならなかったのでそれは諦めました。今回やるに至り以下のサイトを参照したのですが実際に自分でやるとどのように解けばよいのか全くわからなくなりました。悔しいので時間を見つけて関数以外のベクトルや数列にも挑戦したいと思いました。

https://qiita.com/massa142/items/b224a07c1b33e9a39cd8

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

僕がタメ口を使われてムカつく人は僕がタメ口を使われてムカつく人

はじめに

 まずはタメ口とは何かわからない方に以下を示します。

 タメ口タメぐち)とは、相手を対等として扱った話し方である。 親しい人同士での話し方。 これを指す名称は学者間でも定まっておらず、ため口の用語がその隙を埋めてきた。 特に年長者に対して対等の話し方をすることだと、ある辞書には掲載されているが、実際のある調査では仲間同士の言葉だという認識が過半数を占めている。
引用元:Wikipedia

  実生活においての対等とは人間としてのという意味ではなく、単純に年齢であったり職場の先輩後輩であったりすることなどを指すと思います。いい意味でも悪い意味でも日本人っぽい概念です。

 また、Wikiにもあるように、タメ口の定義は人それぞれであり各々の価値観で変化します。ゆえにこの後に書かれることもあくまで筆者の価値観の上でのものなので噛みつかないでください。僕も"理解できない"とは思いますが、否定的な意味はありません。あくまで僕の中では敬語は年上の方に使うものとしてとらえています。職場の先輩とかはまだ働いたことないのでわかりません。周りに合わせます。僕は割と親にそういったところで厳しく教育されたので気にします。他の人の例を挙げるとたとえ年下であることが双方認知されていてもそこまで仲良くないとタメ口を使っていらっしゃる人がいたりします。こういったところは本当に人によってわかれます。

敬語が"使えない"人

 高校までは周りにそういった人はいなかったので意識したことがなかったのですが、大学に入ったり、オンラインゲームでネットの人との交流が増えると敬語を使うことができない人が一定数いることに気が付きました。驚いたのと同じぐらいそういった人に興味が湧きました。大学に入学するまでで敬語を使う機会がなかったのでしょうか。部活の先輩には?先生には??考えれば考えるほどわからなくなりました。"使わない"人ならばこの人達は仲が良いんだなと捉えますが、そうでもなく無差別にタメ口をまき散らしている人、つまり敬語が"使えない"人を見ると心配になります。互いに年齢も知らないのに初手タメ口だと僕は第一印象悪いです。

僕がタメ口を使われてムカつく人

 僕は自分が敬語を使われない分には構わないです。しかしその中でも違和感を覚える数少ない人は上に挙げたような敬語が"使えない"人であることに最近気が付きました。敬語が使える人がタメ口を使うことのギャップで距離感が近くなるなどのメリットもあったりします。当人が意識しているかはわかりませんが、言葉遣いの立ち回りがとても上手な人がいて尊敬しています。やはり、タメ口を使われてムカつく人は僕が苦手な敬語が"使えない"ような人なので僕がタメ口を使われてムカつく人は僕がタメ口を使われてムカつく人です。

 さいごに

 はじめにも言いましたが、タメ口は定義が価値観によるものが多く一概にどれが正しいくどれが間違っていると言うことができないと思います。しかし、簡単な敬語が使えないというのはさすがに今の日本ではまずいと思うので使えるようにしましょう。書いているうちに自分の考えがわからなくなったのでここで終わります。ありがとうございました。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

【Python】OpenWeather APIを叩いてお天気データを取得する

はじめに

 なにかAPIを叩きたい気分(?)だったので特にクセのないOpenWeatherが提供している無料APIを触ってみました。

API keysの取得

 兎にも角にもAPI keyを取得しないと始まらないので取得します。OpenWeatherへアクセスし、Sign upからユーザ登録をします。そしてログイン状態のページからAPI keysを選択すると以下のようにAPI keyが取得できます。これをメモします。

f:id:Parco1021:20191012183139p:plain

これでOpenWeather APIを利用する準備ができました。

OpenWeather APIについて

 以下の内容は全てOpenWeatherの公式ドキュメントに載っています。以下全て{apikey}は先ほど取得したキーに置換してください。

 

まずは、都市名を指定する方法です。

http://api.openweathermap.org/data/2.5/weather?q={city_name}&APPID={apikey}

{city_name}を表示させたい都市名にします(Londonなど)。そしてアクセスするだけで表示されると思います。

 

次は、都市idを指定する方法です。

http://api.openweathermap.org/data/2.5/weather?id={cid}&APPID={apikey}

都市id?となると思いますが、当然公式の方でサンプルが公開されています。

 

次は、緯度経度を指定する方法です。

http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&APPID={apikey}

latが緯度(latitude)でlonが経度(longitude)です。

 

最後は、郵便番号(zip code)を指定する方法です。

http://api.openweathermap.org/data/2.5/weather?zip={zip code}&APPID={apikey}

zip codeを指定した後に国を指定した方がいいかもです。(?zip=1111111,JP&APP~~~)

 

このAPIのレスポンスはデフォルトでJSON形式となっています。なのでそのまま使用します。

 

プログラム

今回は一例として都市名を指定します。

他の場合でも大きな差はないのでやってみてください。

import requests

import json



city = "Tokyo"

API_KEY = "{apikey}"

url = "http://api.openweathermap.org/data/2.5/weather?units=metric&q={q}&APPID={key}"



url1 = url.format(q = city, key = API_KEY)

response = requests.get(url1)

data = response.json()

jsontext = json.dumps(data,indent=4)

print(jsontext)

 

 ・出力

{

    "coord": {

        "lon": 139.76,

        "lat": 35.68

    },

    "weather": [

        {

            "id": 521,

            "main": "Rain",

            "description": "shower rain",

            "icon": "09n"

        },

        {

            "id": 701,

            "main": "Mist",

            "description": "mist",

            "icon": "50n"

        }

    ],

    "base": "stations",

    "main": {

        "temp": 23.31,

        "pressure": 969,

        "humidity": 100,

        "temp_min": 21.67,

        "temp_max": 25

    },

    "visibility": 2000,

    "wind": {

        "speed": 32.9,

        "deg": 170,

        "gust": 43.2

    },

    "clouds": {

        "all": 75

    },

    "dt": 1570883396,

    "sys": {

        "type": 1,

        "id": 8074,

        "country": "JP",

        "sunrise": 1570826639,

        "sunset": 1570867858

    },

    "timezone": 32400,

    "id": 1850147,

    "name": "Tokyo",

    "cod": 200

}

 各パラメータの意味は以下の通りです。公式ドキュメントからの引用

f:id:Parco1021:20191012214258p:plain

そこまで難しい単語ないので大体わかると思います。ここから適宜必要なデータを出力すればいいです。urlを出力させて、別でアクセスしても当然結果は出力されます。FirefoxだとJSON見やすくなるの知らなかったです。

f:id:Parco1021:20191012214520p:plain

 気圧めちゃくちゃ低い(pressure)し、風速めちゃくちゃ早く(wind.speed)てなんかすごいです。台風19号の影響ですね。

さいごに

 今回は無料版(アクセス数の制限アリ)を使いましたが、無料でこのようなAPIが使えるのはすごいと思いました。特に天気などは複数回取得せず、数時間に一度取得してDBに保存しておけば再度APIを叩く必要もないので無料版のまま使用できます。

 WebAPIは使っててそれっぽくなるし楽しいのでこれからも色々触れてぶっ叩きたいとおもいます。

参考文献

無料天気予報APIのOpenWeatherMapを使ってみる - Qiita

OpenWeatherMap API v2.5から天気を取得する - Qiita

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村 PVアクセスランキング にほんブログ村

スポンサーリンク