2020-05-01から1ヶ月間の記事一覧

Vue.jsでJsonと画像をmultipartでPlayframeworkにPOSTする

WebAPIとして動作しているPlayframeworkにmultipartでJsonとファイルデータを送信します。 Vue側の実装 template axiosでPOSTするので、formにはmultipartをつけず、prevent指定でページロードしないように制御する。 <template> <form> <input type="text" v-model="shopMame"> <input @change="changeFile" type="file" name="upfile[]" multiple accept="image/*" /> </form></template>

Playframework 複雑なJsonデータをオブジェクトにmappingまたはForm bind、validateする

WebAPIとして動作しているPlayframeworkのJsonデータのパースについて。 Jsonデータは、 { "shopName":"Let it Ride", "position":{ "lat":35.66530148846749, "lng":139.41634567694945 }, "testArray":[1,2,3,4] } のように入れ子、または配列のデータを含…

Scala Akka Actorモデルについて

Akka Actorとは? Akka ActorはActorに対してメッセージを配信する仕組みを提供する。 messageの送信は非同期で送信され、透過的にキューイングされ、Actor側からはキューメッセージを取り出し同期的に処理を行う。 依存ライブラリ libraryDependencies ++= …

Scala FutureとPromiseについて

Futureは後から結果がわかるといったコンテキスト。スレッドをコンテキストの懸念に抽象化することによって、関数型プログラミングに沿ったコンテキストとしてスレッドを扱うことができる(説明が合ってるかは謎...)。 Futureを使ってみる import scala.concu…

Java Fork/Joinフレームワークについて

今日もN予備校で学習 タイトルはJavaだけどScalaの勉強で必要になったので(^_^;) 記事内のコードはScalaです。 Fork/Join フレームワーク Executorフレームワークでは、スレッドは割り当てられたキューのタスク消化を行った(待機スレッドは他スレッドのタス…

Java Executror フレームワークについて

この本読んでて、非同期処理についてもう少し知ってないと厳しいと感じて、N予備校で勉強した並行処理のことを忘れるのでメモしておく。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScr…

Twitter上のアンチプログラミングスクールの人達を観測していた話し

最近、 Twitter上のプログラミング入門者観察記 | κeenのHappy Hacκing Blog の記事を見て、実は僕も似たようなことをしていた。 僕の場合「入門者」ではなく、「「プログラミングで稼げる」的な発言をするインフルエンサー達を逆に非難したりする人達」を半…

書籍:すごいHaskellたのしく学ぼう!

軽い気持ちでScalaの勉強を始めたんだけど、"モナド"という魔法の言葉が出てきた。 調べれば調べるほどに"モナド"というものが分からなくて(笑)、そんな時に何かのレビューで、「恐らくこの本が一番初心者に分かりやすくモナドの懸念を解説してる」というの…

Scala 関数引数の遅延評価

式評価のskip、実行について 式評価の基準について。 // falseで条件外となるので{println("!!"); true}は評価されない scala> false && { println("!!"); true } res1: Boolean = false // {println("!!"); true}が評価され、式結果はtrueとなる scala> tru…

Scalaインタプリタで依存関係を解決する

この本を進めていて、途中、Eitherの実装の章でコンパイルが通らなくなった。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arguments.currentScript=c.currentScript ||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[])…

Scala 型パラメータ、変位指定と下限境界の勉強

懸念を整理したので、自分なりの理解を記録しておきます。 おもちゃ箱、ToyBoxにおもちゃToyのサブクラス、MiniCarとCharacterCardインスタンスを格納するという実装で考える。 初期実装 型パラメータを使わない各初期実装は以下の通り。ToyBoxにはToyを抽象…

Scala 代数的データ型を扱う

代数的データ型とは? 複数のデータコンストラクタ(Scalaではclassやobject)を取りまとめた型。オブジェクト指向の抽象クラスのような考えに近いと思った。 ただ、オブジェクト指向の抽象は、使い手が何のインスタンスであるか意識しなくて良いのに対して、…

Scala 無名関数と関数合成

無名関数、関数リテラルの定義 Scalaの無名関数、関数リテラルは以下のように記述することで定義できる。 val f = (x:Int, y:Int) => x == y これは引数2つの関数リテラルとなるので、Function2(2は引数2つの意味)のtrait実装の無名クラスの糖衣構文となる。…

書籍:実践Scala入門

自分のScalaの学習の経歴は N予備校のScala講座で学習 コップ本23章まで読んだ Haskellの入門書一冊を終了。型クラスやファンクター、モナドの概念は一応は理解しているつもり。 程度。ただし、学んだ端から忘れていってしまう(笑)ので、もう少し基本的なこ…

書籍:Java/Scalaフレームワーク Play Framework入門

Playframeworkについての入門書は以外とあまり出てなくて、日本語で書かれた出版社から出版された書籍は多分この2冊になると思う。 しかしながら、徹底入門の方は2013年末出版のPlayのバージョンが低い & Javaベースで書かれた本なので、新しいバージョンに…

Playframework pac4jを使用したTwitter、GitHubソーシャルログイン

pac4jとは? pac4jはrubyでのOmniAuthのようなJavaで書かれた横断的なソーシャルログインライブラリ。 pac4j: security for Java https://github.com/pac4j/play-pac4j Scala + Playframeworkでも利用できるので、TwitterとGitHubのソーシャルログインを試し…

Playframework フォームバリデーションと表示整形、ユニットテストについて

バリデーションの定義 Formオブジェクト生成の定義に記述する。 Form{ mapping( "password" -> nonEmptyText.verifying(passwordCheckConstraint), "mail" -> email, "tel" -> nonEmptyText(maxLength = 13, minLength = 10).verifying(error="不正な番号で…

Scala PlayframeworkのController、Actionとは?

PlayframeworkのControllerのメソッド、Action{}とはなんぞや?の整理。 def index() = Action{ implicit request => Ok("Hello World") } 自分なりの解釈なので、間違ってたらごめんなさい。 Actionの定義 Action.scalaのActionBuildertraitのapplyメソッド…

Scala traitの無名クラスmixin

絶対忘れるので書いておく。 traitのメソッドのみ使いたい場合、無名クラスにtrait mixinすれば簡単に利用できる。 このように対象のtraitがあった場合、 trait Job { def p(str:String) = {println(str); str} } ダメなケース。 new Job() traitそのものは…

Haskell AtCoder 自分用コピペ保管場所

すぐコピペして使う用の自分用メモ AtCoder用の標準入力の受け取り -- 整数の入力 a <- readLn --文字列の入力 w <- words <$> getLine [w1, w2] <- words <$> getLine -- スペース区切り整数の入力 n <- map read . words <$> getLine :: IO [Int] [n,m,x] …

Haskell accumulatorがリストとなるfold関数の学習

employment.en-japan.com このページの下のコード部分がすぐに把握できなかったんだけど、整理するとなるほどな。と納得できた。 > foldl plusEach [0] [[1, 11], [1, 11], [3]] [5,15,15,25] 整理 plusEachの定義はページとは違うけど要約するとこんな感じ…

Haskell モナドについての学習

モナド モナドはバインド (>>=)関数をサポートするアプリカティブファンクターの一種。 (>>=)関数の定義。 (>>=) :: (Monad m) => m a -> (a -> m b) -> m b Monadという文脈に包んだ値を、値を取る関数に対して渡す。と読める。 適用例。 ghci> Just 3 >>= …

Haskell モノイドの学習

newtype newtypeはある型を値コンストラクタで包んで新しい型を作成する。 newtypeはdataキーワードの作用ととてもよく似ているが、 1つの値コンストラクタに1つのフィールドのみ定義できる dataより高速に作用する。らしい。 ghci> newtype CharList = Char…

Haskell アプリカティブファンクターの学習

アプリカティブファンクター ファンクターの関数適用 アプリカティブファンクターの前にファンクターの関数適用について。 今まではfmap (*2) [1,2,3]のように引数に値を返す関数(*2)を定義していた。 これを let a = fmap (*) [1,2,3] ghci> :t a a :: Num …

Scala 式結果の変数代入と関数オブジェクトについての学習

変数の遅延評価 lazyキーワードを使用するとその変数にアクセスするまで評価が遅延する。 scala> val date = new java.util.Date date: java.util.Date = Wed May 06 18:59:57 JST 2020 scala> lazy val date = new java.util.Date date: java.util.Date = <lazy> </lazy>…

Haskell RandomパッケージとbyteStringの学習

Randomパッケージのインストール 多分、--libをつけないとexecutableじゃないと怒られる。 $ brew install cabal-install $ cabal update $ cabal install --lib random random関数 random関数はジェネレーターgを受け取り、乱数aとジェネレーターgを返す。 …

Haskell ファイル入出力の学習

ファイルを読む readfile.hs import Control.Monad import Data.Char main = forever $ do l <- getLine putStrLn $ map toUpper l $ ghc --make readfile.hs $ ./readfile < data.txt getContents関数 入力ストリームから文字列を得る関数。入力ストリーム…

Haskell IOアクション入出力の学習

IOアクション IOアクションは実行されると副作用を含む動作を行い結果を返す。結果に返すべきものがない場合、()空のタプル、Unitを返す。 ghci> :t putStrLn putStrLn :: String -> IO () ghci> :t putStrLn "Hello World" putStrLn "Hello World" :: IO ()…

Haskell クラス型とFunctor型クラスを学習する

クラス型 classキーワードを使用して定義する。EqやOrdはクラス型となり、データ型はクラス型を指定することでクラス型のインスタンスとして振舞うことができる。 クラス型はオブジェクト指向言語でいうところのインターフェースのように、インスタンスが持…

Haskell データ型の定義を学習する

データ型を定義する dataキーワードで定義する。 data MyBool = False | True MyBoolというデータ型はTrueまたはFalseの値コンストラクタを受け取る。型名及び、値コンストラクタは大文字から始まる必要がある。 値コンストラクタには引数を与えることができ…