yoshikit1996’s diary

日々勉強したことの備忘録です。

2018-01-01から1年間の記事一覧

React Nativeのメモ

アプリの初期化 # アプリの雛形を作成 expo init SampleApp # アプリを起動 cd SampleApp expo start # テストの追加 yarn add --dev jest # Redux yarn add redux yarn add react-redux # 画面遷移 yarn add react-navigation # flow yarn add --dev flow-b…

はじめてAkkaを学んだ感想

「Akka実践バイブル」の1~2章を読んだ感想について書きます。 Fluxと似ている Akkaの第一印象は「Fluxと似ている」です。私の思ったことを図示すると、↓こんな感じになります。

React Nativeにaws-amplifyをインポートしたらSyntaxErrorでハマった

create-react-native-appでアプリを作成し、aws-amplifyをインポートし、テストすると、下記のようなエラーが発生します。 import Amplify from 'aws-amplify'; import aws_exports from './aws-exports'; ● Test suite failed to run /???/???/node_modules…

トレイトのwithとextendsの使い分け

withとextendsの使い分けがややこしいと思うのでメモ。 文法的な使いわけ クラス定義時にミックスインする場合、extendsした後にwithを使う。 インスタンス生成時にトレイトをミックスインする場合、withを使う。 object Main extends App{ // クラス定義時…

Scalaでクイックソート

Scalaで3通りのクイックソートを実装してみました。 object QuickSort extends App { val nums = List(32, 23, 10, 1, -100, 3, 999) { // 9行: ふつうの実装 def quickSort(nums: List[Int]): List[Int] = { if (nums.isEmpty) List() else { val left = nu…

Scalaアンチパターン

過去に自分が書いたScalaコードのアンチパターンをまとめました。 定数名が大文字 Scalaでは定数名はパスカルケースで書きます。 // ダメ val MAX = 100 val MIN = 1 val HOGE_HOGE = "hogehoge" // 良い val Max = 100 val Min = 1 val HogeHoge = "hogehog…

IdeaでSBTプロジェクトをシンタックスハイライトする

plugins.sbtに↓を付け加えて、gen-ideaコマンドを打てば完了。 addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")sbt gen-ideaGitHub - mpeltonen/sbt-idea: A simple-build-tool (sbt) plugin/processor for creating IntelliJ IDEA project fi…

Javaのstaticメソッドに相当するもの

Javaのstaticメソッドは、Scalaのコンパニオンオブジェクトのメソッドに相当すると思う。Javaでstaticメソッドを使う場合、こんな↓感じだが、 public class Main { public static void main(String[] args) throws Exception { for(int i = 0; i < 10; i++){…

case classの性質

case classには、下記のような性質があります。 ボイラープレートが減る apply, unapply, equals, canEqual, hashCode, toString, copyメソッドが自動生成される。 不変データを扱うのに適している コンストラクタのパラメータが勝手にvalになる。クラスを作…

カリー化と部分適用の関係

カリー化 カーリー化とは、 カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと…

共変(covariant)と反変(contravariant)

Scalaのプログラムで[+A]とか[-A]というやつが出てきますが、これは変位指定アノテーションと言います。次のプログラムにおいて、BがAを継承しているときに右辺を左辺に代入することができます。これを共変と言います。 val myClass: MyClass[A] = new MyCla…

Scalaのメソッドの括弧()と副作用

括弧を付けずに関数定義して、呼び出しで括弧をつけるとエラーになります。 def f() = println("Hello") // 括弧をつける def g = println("World") // 括弧をつけない f() f // g() // error: Unit does not take parameters g 作法として、副作用がある関…

Scalaの文字列結合のパフォーマンス

はじめに Scalaで StringBuilderによる文字列結合 foldLeftと+演算子による文字列結合 を実装して、パフォーマンスを比較してみました。 実行環境はpaiza.ioです。この記事は、下記記事に影響を受けて、作りました。 qiita.com 実装・実行時間 StringBuilder…

関数の末尾の値とブロック式

関数の末尾の式 Scalaの関数では末尾で評価された式が返却値になります。 object Main extends App{ println(add(2, 8)) def add(x :Int, y :Int) :Int = { 1 + 2 + 3 "hoge" x + y } } 結果は、"hoge"と表示されます。 ブロック式 中括弧{}で構成された式を…

Scalaで遅延評価されているかどうか確かめる

Scalaでは中括弧を使って次のようなプログラムを記述することができます。 object Main extends App{ val x = println("hoge"); } 中括弧{}の中は即座に評価されるので、次のような標準出力が得られます。 hogelazyキーワードを付け足すと次のようになります…

はじめてのOption型とEither型(Scala)

Option型 Option型とは有効な値(Some)なのか無効な値(None)なのか呼び出し元に委ねるラッパーです。 object Main extends App{ println(divide(10, 0)) println(divide(10, 2)) def divide(x :Int, y :Int): Option[Double] = { if(y == 0) None else Some(x…

Clojure(Lisp?)のmapについて

map関数はリストの各要素に対して関数fを適用します. (map f lis) また,引数としてリストを複数とることができます. (map f lis1 lis2) このとき,関数fは次のような順番で適用されます. lis1の0番目の要素,lis2の0番目の要素 lis1の1番目の要素,lis2…

HaskellでCSVファイルを読み込む

HaskellでCSVファイルを読み込むプログラムを書いてみました. ソースコード -- CsvReader.hs module CsvReader where import Text.Parsec csvStruct = endBy line eol line = sepBy cell $ char ',' cell = many $ noneOf ",\n" eol = char '\n' parseCSV :…

主成分分析とカーネル主成分分析

主成分分析 主成分分析とは,複数の特徴を 複数の特徴を「主成分」という特徴にまとめる方法であり,これにより次元圧縮をすることができる. 主成分分析のやり方 主成分解析では,分散が大きい方向にデータを射影して,主成分を生成する. カーネル主成分分…

デスクトップをカスタマイズする(Xfce4,Arch Linux)

デスクトップ背景をArchLinuxの壁紙に設定する archlinux-wallpaperをインストールすると、/usr/share/archlinux/wallpaper/に壁紙がダウンロードされる。 そして、デスクトップを右クリックして、「Desktop Settings...」を選択し、壁紙を設定する。 pacman…

ArchLinuxの初期設定

UbuntuからArchLinuxに移行するのつづき設定に使用するコマンドを~/.xprofileに記述すると、Xユーザーセッションの初めにコマンドを実行することができるらしいです。 便利なアプリをいろいろインストール pacman -S xfce4-goodies vim bash-completion ユー…

UbuntuからArchLinuxに移行する

普段、私はUbuntuを使用しているのですが、動作が重さが気になったので、ArchLinuxに移行してみました。 インストール環境 ThinkPad X240と容量250GBぐらいのSSD インストール準備 Arch Linuxのisoファイルをダウンロード Arch Linux - Release: 2018.06.01 …

ホテリング理論で異常検知

ホテリング理論によって外れ値を検知する方法について説明します.ホテリング理論による外れ値検知とは, 各データに対する異常度を算出し,異常度が閾値を超えたら外れ値とみなすという方法です.以下に,ホテリング理論によって外れ値検知を行うアルゴリズ…

DSPとSSP

DSP DSPは、プログラマティックに広告代理店や広告主に広告在庫*1を購入するためのゲートウェイを、提供します。したがって、DSPと広告主の関係について次のようなことが言えます。 広告主は、DSPを用いて、広告在庫に対する入札を行う。 DSPは、広告主に対…

アドテクノロジーの基本的な概念

このページでは、広告に関する基本的な概念について説明したいと思います。 クッキー トラッキング クッキーのダメな点 トラッキングピクセル バナー広告 広告サーバー 広告ネットワーク 広告エクスチェンジ クッキー アドテクにおいて、クッキーは2種類に…

ubuntuで辞書アプリGoldenDictを使用する

セットアップ方法 ubuntuソフトウェアセンターでGoldenDictをインストールする。 辞書ファイルをダウンロード英和辞典: Babylon English-Japanese Dictionary - Babylon英英辞典: Big dictionaries(私は英英辞典はOxford Advanced Learner's Dictionary 8th …