農園

Something is missing.

夏休み(8~9月)

SecHack

SecHackに行ってきた,福岡です. 今回はハッカソンだったので,過去の論文を元にB-APT: Bayesian Anti-Phishing Toolbarフィッシングサイト判定機みたいなものを作成した.

github.com

インターン

何箇所か行ってきた. Ruby on RailsとReactとScala機械学習とUnityをやってました.あとDDD+CAとか...

私がやったことがここにも書いてあります.

data.gunosy.io

学会発表

db-event.jpn.org

WebDB Forumで口頭発表とポスター発表をした.賞を貰ったので嬉しかった.

今後

英語の勉強ですね?

DDD+CA メモ

クリーンアーキテクチャ

Interface層|Adapter層|UseCase層|Entity層

クリーンアーキテクチャ(The Clean Architecture翻訳)

依存関係逆転の原則(Scalaでの実装例)

qiita.com

DDD

ユビキタス言語

専門家とエンジニアの共通言語

ドメインモデル

ユビキタス言語の動きや関係をモデル化したもの

ドメイン

捉えたい領域,世界

モデル

システムに関わる様々な実態とそれらの関係を説明するシステムの概念モデル

  • 実装の核心
  • 言語の基盤
  • 蒸留された知識

エンティティ

一意に定まるIDのようなものを持つもの,ライフサイクルを管理する必要がある

値オブジェクト

ドメインの何かを定量化したもの

リポジトリ

エンティティの永続化,取得の責務を持つ

集約

  • エンティティと値オブジェクトをまとめるもの
  • 周囲に境界を定義する
  • 各集約に対してルートとなるエンティティを選び,境界の内部へのアクセスはそのルートを経由する

サービス

ドメインにおけるプロセスや変換処理がエンティティや値オブジェクトの自然な責務でない場合サービスと出来る. ユビキタス言語の一つである必要があり,状態を持たせてはいけない.

記念カキコ

github.com

OSS童貞を卒業出来て嬉しい(冠詞が抜けている)

Pixiv人気東方カップリングをグラフにしてみました

目的

ベストパートナー部門投票結果 と実際の人気って一致してるのかよって思ったからです

方法

pixivで「東方」と検索して出てきたイラストから最新20000件から、投票対象を2つ持つデータを収集してキャラクターをノード、出現した回数をエッジとしてグラフを作成しました。

結果

f:id:kajyuuen:20170422130210p:plain

こちら第十三回東方プロジェクト ベストパートナー部門投票結果とそのトップ10に色を付けてみたグラフです…

順位 名前
1 博麗 霊夢と霧雨 魔理沙
2 宇佐見 蓮子とマエリベリー・ハーン
3 霧雨 魔理沙アリス・マーガトロイド
4 十六夜 咲夜とレミリア・スカーレット
5 古明地 さとりと古明地 こいし
6 レミリア・スカーレットフランドール・スカーレット
7 紅 美鈴と十六夜 咲夜
8 魂魄 妖夢西行幽々子
9 上白沢 慧音と藤原 妹紅
10 蓬莱山 輝夜と藤原 妹紅

f:id:kajyuuen:20170422130130p:plain

なんとなく近くにいる感じしますね。以上です。

ソースコード

pythonはあんまり使わないから汚くても許して亭許して

カーリルのAPIラッパーを作ったよ〜

github.com

calil.jp

calilってgemがあったことを知らんかったから

require 'calil'

なのにgem名calilenで無茶苦茶

DockerとRailsのメモ

Docker

Linux向けのコンテナ技術。

https://docs.docker.com/compose/railsを元に以下の文章を作成

Dockerfile

イメージの構築を行うファイル。イメージ作成に関する命令を全て記載する必要がある。

命令の詳細はhttps://docs.docker.com/engine/reference/builder

Docker Machineとは

WindowsMac OSでDockerの実行環境を構築する機能。VirtualBoxを使う。

$ docker-machine create --driver virtualbox <マシン名>

ドライバーがvirtualboxの<マシン名>を作成する

$ docker-machine ls

マシンの一覧を表示する

$ docker-machine env <マシン名> 

<マシン名>に関する環境変数の確認

$ eval "$(docker-machine env <マシン名>)"

環境変数のセット

Docker Composeとは

複数のコンテナからなるサービスの構築を自動化する機能

Rails on Docker

DBコンテナとWebコンテナのみの簡単な設定だけど、詰まったのでメモ

Docker

Dockerfile:

FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp

docker-compose.yml:

version: '2'
services:
  <DBコンテナ名>:
    image: postgres
  <WEBコンテナ名>:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

Railsを入れる準備

Gemfile:

source 'https://rubygems.org'

gem 'rails', '5.0.0.1'

Gemfile.lock:

$ touch Gemfile.lock

Dockerfileのビルド

rails newをする

$ docker-compose run <WEBコンテナ名> rails new . --force --database=postgresql --skip-bundle

docker-compose.ymlを通じDocker imageを作る。

$ docker-compose build

Railsの設定

database.ymlにhost名を記載する。

config/database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development: &development
  <<: *default
  database: app_development
  username: postgres
  host: <DBコンテナ名>

test:
  <<: *development
  database: app_test

DBの構築

$ docker-compose run web rake db:create

サービス用のコンテナの構築と起動

docker-compose up

DBコンテナのあれそれが出たあとにWebコンテナが立ち上がる

web_1  | * Listening on tcp://0.0.0.0:3000

http://0.0.0.0:3000にアクセスすると嬉しい

ファイルをpdfに変換する

a2ps -B --line-numbers=1 ファイル名 -o out.ps 
ps2pdf -sPAPERSIZE=a4 out.ps out.pdf

これ毎回忘れるけどシェルスクリプト書くほどでもない気がする