euphonictechnologies’s diary

Haskell超初心者の日記です。OCamlが好きです。

follow us in feedly

Swift製のオセロエンジンを公開しました

Swift製オセロエンジンです 苦労に苦労を重ねて書いたおかげでとても遅くて弱いエンジンです。まだまだ若輩者です。 これは何か オセロAIとオセロ環境、あとオセロエンジンと喋るプロトコルとそれをコマンドラインで動かすためのアプリケーションです。 gith…

超かんたんなSwift on Linux用のMakefile

あると便利 gist.github.com こんなもので良ければどうぞ。 使い方 $ make # make buildに同等。ビルドします。 # コンパイルオプションで分けたりしてもいいと思います。 # make buildでデバッグ版、make build_releaseでリリース版とか。 $ make update # …

Python Redisでredis.exceptions.ConnectionError: Error 99 connecting to ~~~.com:XXXX. Cannot assign requested address.

が出た 多分大量の接続を作っては切ってを繰り返している。OSがあなたが要らなくなったポートやコネクションを開放するより早くあなたが新しいのを作ろうとしているので足らなくなっている。 対処法 全部おんなじDBへのアクセスならいちいち繋いで切ってを繰…

Linux上でSwift Package Managerを使ってビルドするときに躓いたこと

けっこう茨の道です なんかまだ「初心者でも鼻くそほじりながら日曜日にさらっとね」って感じではないです。なにせコンパイラ、Xcode、Swift Package Manager(以下SPM)すべてが日進月歩でバージョンアップしているのでウェブに書いてあることそのまま試すと…

"iOSアプリとLinuxコマンドラインアプリケーション間でライブラリを共有する"を実践した時のメモ

前回は iOSアプリとLinuxコマンドラインアプリケーションでライブラリを共有するためにSwift Package Managerをつかってライブラリを作ってそれをiOS側ではEmbedded Binariesとして、Linux側では単純にパッケージとしてリンクして使えるようにしてみました。…

iOSアプリとLinuxコマンドラインアプリケーション間でライブラリを共有する

サーバサイドSwiftって全然盛り上がってないですね なんかフロントエンド盛り上がってますがサーバサイドっていまいちそういう感じしませんね。悲しいです。フロントエンドアプリばっかり作ってるとフロントエンド脳になってまうで。 というわけで拙作のオセ…

耳にすっぽり収まるワイヤレスイヤホン「Dot Stereo」を使った!

Dot

前回は開封してみました 前回の記事では開封とか本体の様子とかを見てみました。使ってみたところ非常に満足度が高いので不況のために今回の記事を書くことにしました。Indiegogoで(めっちゃ待ったとはいえ)安く手に入れられたのは非常にラッキーでした。 bl…

耳にすっぽり収まるワイヤレスイヤホン「Dot Stereo」が来た!

Dot

Indiegogoで頼んで幾星霜 あれはクラウドファンディングつって投資なんですよね。で、株主に対するおまけとして商品を送ると。ふるさと納税の言い訳みたいですね。ともあれ楽しみにしていた超小型インナーイヤーヘッドホンDotが来ました。 Dot - World's Sma…

macOS SierraでPicture in Picture使ってYoutubeを観る

macOS Sierraになったよ アップグレード終わりまして、やっぱり新しいOSは大して変わってなくても楽しいね! Picture in Picture とは動画を右上にテレビ番組で言うワイプみたいに表示して作業中も動画みたいとかそういう機能です。 こんな感じです。 オペレ…

Mac用OmniGraffleをタダで使いたい

Mac

OmniGraffle便利です 簡単に見栄えのいいグラフとかダイアグラムが作れるのでとっても便利です。プログラマのプレゼンとかで多用されるタイプの図表が(センスが無い俺みたいな奴でも)きれいにできるのでありがたいソフトです。 ただ最近評価版の使用期限が切…

個人用メモ プログラミングのための圏論参考資料集

この記事は? 筆者が個人的に集めるプログラミングのための圏論の勉強に役立つ参考資料へのリンク等です。随時アップデートしていくことになると思います。 2016/09/08: 今のところは順序もめちゃくちゃで追加したりないものもたくさんあります。 はじめに ブ…

AtCoder Beginner Contest 038 in OCaml

ABC038をOCamlで解いてみました。 なんでOCaml? fetburner.hatenablog.com ここを見ていただければよくわかると思うのですが、OCamlは関数型言語でありながら副作用もimperativeスタイルも使える非常にバランスの取れた実践的な言語です。関数型の記述の簡明…

TopCoder SRM 694 Div2 Hard : UpDownNess

全然解けなかった。頑張って一週間かけて解いてみた。 問題 TopCoder Statistics - Problem Statement 1からNまで数字を並べるとき、並べ終わった列の中のlo-hi-loの出現数を考えます。lo-hi-loとは0<=i<j<kのときに並べ終わった列x中でx[i]<x[j]かつx[j]>x[k]となるような(要は真ん中がこんもりしてる)3つの</j<kのときに並べ終わった列x中でx[i]<x[j]かつx[j]>…

Swift 1.2から2.2でウラシマ状態 - ワーニングを撲滅する

ワーニングはエラーだ 今更かも知れませんがワーニングはエラーです。ワーニングはエラーです。ワーニングはエラーなんです。ワーニングを放置してコミットする意味がわかりません。なのでワーニングを修正していきます。 このエントリは前回のエントリの続…

Swift 1.2から2.2でウラシマ状態 - ビルドできるように修正する

久しぶりにXCodeを起動しました。 昔のプロジェクトをインポートしたところ"最新のswiftに自動で変換しますか?"と余計なお世話をぶちかましてきたのでスルーしてビルドしたところビルドエラーの嵐。後方互換性とか関係ねえからっていうAppleの教えが心に響…

HaskellからSlackにさくっとPOSTする

動機 Haskell用の強化学習クラスタを作っていてさくっとdebug printを確認したいことがあります。そんな時にそのマシンのローカルstdoutに吐いてもしょうがないのでslackにdebug printを吐きたいと思いました。ほったらかして学習させまくってる間スマホでい…

Intellijcoderでツールバーボタンが表示されなくてアリーナに入れない時の対処法

Search Everything (Shift2回) からの"arena" でサーチすると出てくる。

TopCoder SRM 667 Div1 Easy : OrderOfOperations

全然解けなかった。朝起きてもう一回やってみたら解けた。おそらく寝てる間に頑張ったのかな。 方針 bitDPを使う。全ビットのOR和がゴール状態なのでdp[ <ゴール状態> ]が答え。例えば 1110 0100 0010 ならdp[ "0b1110" ] が答え。 更新方法はstateから遷移…

ディスクイメージファイル(dmg)にかけたパスワードをAmazon EC2上でクラックする

パスワードが分からない! 昔アーカイブしたパスワード付きdmgファイルのパスワードがわからなくなってしまいました…。何とかしてクラック、いや、パスワードリカバリをしなければいけません。 おまけに手元にあるのは古いMacbook Airなのであんまりぶんぶん…

Haskell :: 2015年8月現在ghc-modをghc 7.10.2にインストールする

ghc-modは2015年8月現在、cabalでインストール出来ません。 Failed to install ghc-mod with ghc 7.10 & cabal 1.22 · Issue #437 · kazu-yamamoto/ghc-modgithub.com このissueにあるように $ cabal install ghc-mod と普通にインストールすると Language/…

Haskell :: GHCを再インストールでアップグレードする - Mac + Haskell + IntelliJ環境構築

前回の入れ方はなかったことに Haskell - 2015年のMac + Haskell + IntelliJことはじめ、あるいはghcの再インストール - euphonictechnologies’s diaryblog.euphonictech.com この方法はやっぱなしで。再インストール時に若干面倒なことになったので、もう少…

Haskell :: Snap + HerokuでRedisを使う - herokuへデプロイしてRedis Cloudと接続する

前回までのあらすじ 前回はherokuへデプロイする予定のアプリケーションをローカルで作成し、ローカルのRedisと接続してデータの読み書きができることを確認しました。 今回はそのアプリケーションをherokuへデプロイしてRedis Cloudとワークさせるための設…

Haskell :: Snap + HerokuでRedisを使う - ローカルRedisに接続する

前回はSnap + Herokuをデプロイしました Haskell - SnapフレームワークをHeroku上にデプロイして遊ぶ - euphonictechnologies’s diaryblog.euphonictech.com Hello, world!を表示することが出来ました。なので今回はデータベースを使ってみます。 Redisを使…

Haskell - SnapフレームワークをHeroku上にデプロイして遊ぶ

OpenShiftはHaskellに優しかったはずなのですが Haskell + OpenShiftでWarp + HaskellのウェブアプリケーションをPaaS上にデプロイするてはじめ - euphonictechnologies’s diaryblog.euphonictech.com この記事の通りカートリッジってのがあってそれを読み込…

Haskell - 1時間以内に解けなければプログラマ失格となってしまう5つの問題

原問題はこちら Five programming problems every Software Engineer should be able to solve in less than 1 hourblog.svpino.com なんかまたFizzBuzzの匂いがします。5番がすこしだけ篩になりそうな問題です。4番はpermしてconsしてmax取れば良いので簡単…

Haskell オセロ - Zeblaの作者謹製の終盤ソルバをMacで使う

終盤ソルバ 現在オセロは残り40手ぐらいまでは解析が終わっているらしい。出典を探してみたのだけど今すぐに見つからない。それが正しいとすると、残り40手終盤データーベースを搭載したオセロプログラム同士の対戦は24手までさしたところで勝敗が決まる。 …

Haskell オセロ - Small update - Haskellオセロ始めました

Swiftが遅いので Haskellでオセロプログラムを書いて、それをSwiftから呼び出します。一連のghc-iosの実験はそのためのものなのでした。 Haskell - GHC for iOS : 既存のSwiftプロジェクトにHaskellで作った関数をさくっと組み込む - euphonictechnologies’s…

Swift - Swift1.2のコンパイラの最適化

Swiftの言語仕様が新しくなってたのはSwift 1.2というやつだったらしい そうだとは知らずにまた開発者に告知もなく言語仕様を変えやがったのかと思っていました。アップグレードならまあ、仕方ない。 Swift - また言語仕様が変わっていやがる 2015春 - eupho…

Swift - また言語仕様が変わっていやがる 2015春

You have been warned! Swiftは開発途上の言語です というわけで、またSwiftの言語仕様がガラリと変わりまして、さっぱりビルドを通りません。ぱっと見ると17個ものビルドエラー。なーんかC->C++->Ocamlあがりの私としては言語仕様というのはバックワーズコ…

中古のHP Office Jet H470モバイルプリンタをBluetoothアダプタでワイヤレス化する

お金がない ので、高いモバイルプリンタは買えません。なので中古のHP Officejet H470を購入しました。 これ、バッテリがついていて電源は一旦充電すればしばらくコードレスで使えます。ただ、パソコンとの接続はUSBの有線接続。切ない。大きさは高さが手の…

ものすごいメモ - いま注目している論文・技術資料など

かなり個人的なメモです。いま注目している論文や技術資料などです。今読んでるものと後で読むものを混在させています。 Contextual Bandit Taming the Monster: A Fast and Simple Algorithm for Contextual Bandits - Microsoft Research Thomson Sampling…

Haskell - GHC for iOS : 既存のSwiftプロジェクトにHaskellで作った関数をさくっと組み込む

動機 Swiftでそこそこ普通の大きさのアプリケーションを書いてきたのですが、いかんせん遅い。どうも配列とか構造体とかの実装がまだ成熟しておらず、超高速なAIを実装するにはコンパイラの最適化が…とかなんとか書こうと思ったんですが、ぶっちゃけ実行速度…

クールなSwift用ドキュメントジェネレーターjazzyを使った

Swiftにdoxygenが使えない Objective-Cしか対応していないことに気づきました。私は愚か者なので1ヶ月前から触ってないSwiftコードについて何も覚えていないことに気づきました。一生懸命思い出そうとするのですが、思い出せるのは初孫の名前ばかり。なので…

Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、のタッチ操作編

前回までのあらすじ Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、のシェーダコンパイラ編 - euphonictechnologies’s diaryblog.euphonictech.com 今回は やっつけハックですが、タッチに反応するようにしてみます。 完成図 画面をうり…

Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、のシェーダコンパイラ編

前回までのあらすじ Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、の描画の詳細編 - euphonictechnologies’s diary Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、の描画の詳細編 - euphonictechnologies’s diary …

Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、の描画の詳細編

前回は描画の流れを眺めてみました XcodeのOpenGLテンプレートプロジェクトは以下の流れで描画を行うことがわかりました。 画面をクリアする モデルデータからVAOオブジェクトを作り出す モデル描画に使う行列を計算する シェーダプログラムに計算した行列を…

Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、の描画編

前回までのあらすじ Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、の準備 - euphonictechnologies’s diary Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、の準備 - euphonictechnologies’s diary 前回はあらすじ紹…

Haskell - GHC for iOS : OpenGLで3Dグラフィックスを表示してみる、の準備

動機 前回はHaskellで書いたコードをghc-iosでコンパイルして、そのバイナリをObjective-Cで書かれたレイヤから呼び出すことができました。 Haskell - GHC for iOS : iOSアプリをHaskellで開発する - euphonictechnologies’s diary Haskell - GHC for iOS : …

ルンバの修理 - ルンバがベースに戻らない

Symptom - ルンバがベースに戻らない うちのルンバが壊れました。ルンバ560という並行輸入品なのですが、ベースに戻らなくなりました。ベースに戻らないだけだとベースに問題があるか本体の問題かわかりませんが、バーチャルウォールにも反応しなくなり我が…

Haskell - GHC for iOS : cabal-iosをできるようにする

前回までのあらすじ Haskell - GHC for iOS : iOSアプリをHaskellで開発する - euphonictechnologies’s diary Haskell - GHC for iOS : iOSアプリをHaskellで開発する - euphonictechnologies’s diary 前回はデバッグアウトプットに丸を表示するアプリケーシ…

Haskell - メモ: Haskellでモバイルアプリ開発するときに必要そうな話題

Dropboxがマルチプラットフォームでやってること C++によるiOSとAndroidでのクロスプラットフォーム開発:Dropboxの教訓 C++によるiOSとAndroidでのクロスプラットフォーム開発:Dropboxの教訓 クライアントとコアコードを分けるという普通の話。 FFI周りの…

Haskell - GHC for iOS : iOSアプリをHaskellで開発する

ここ数週間ずっとswiftを書いてきたのですが、swiftは 書いていてつまらない 言語仕様がちょっと頭おかしい オフィシャル言語なのにIDEが糞 未来が見えない と、ぶっちゃけ飽きてしまったので、HaskellでiOSアプリを書くという茨の道に行ってみたいと思いま…

Haskell - ghc-modiが新しいcabalで動かない事件

2015/01/22現在、cabal 1.22とghc-modi 5.2.1.2の組み合わせではうまく動きません。 NG BUG: GMEIOException /home/rik/haskell/projects/scotty/dist/setup-config: hGetContents: invalid argument (invalid byte sequence) というエラーが出ます。 簡単な…

Haskell - SDK設定のGHCがおかしくなった時に無理矢理治す方法

IntelliJ 14にアップグレードにした記念で先のエントリのようにGHCを綺麗に入れなおしてみました。するとGHCの場所が当然ですが変わります。すると以前の設定通りの場所にはGHCが当然ないのでビルドできなくなります。 設定を変えればいいじゃないかとおっし…

Haskell - 2015年のMac + Haskell + IntelliJことはじめ、あるいはghcの再インストール

2015-08-09:この記事にはアップグレード版があります Haskell :: GHCを再インストールでアップグレードする - Mac + Haskell + IntelliJ環境構築 - euphonictechnologies’s diaryblog.euphonictech.com この記事の入れ方は今は推奨しません。上記の新しい版…

Swift - 整数型でハマる

Swiftの整数型はSwift Standard Library | Apple Developer Documentationにあるように、符号ありと符号なしの幅指定なしのInt/UIntと幅指定有りのInt32/Int64...などがあります。 こんな感じです。 Type Minimum Value Maximum Value Int8 -128 127 Int16 -…

日本語で読めるコンピュータオセロのAIに関する参考資料

日本語で読めるものに限ってみました Thell - アルゴリズム解説 リバーシソフトウェアThellの開発者によるアルゴリズムの解説。本格的なAIのための情報が非常によくまとまっているのでここをエントリポイントにしてもよいと思う。 Web archive - vsOtha リバ…

Haskellで将棋 - Small update - 探索を劇的に高速化させる方法

もしくは探索を劇的に低速化させる方法。 バックグラウンド 遅延評価パワーとか言って指し手生成部分を手前のマイクロベンチマークで2倍以上低速化させた前々回。 Haskellで将棋 - 指し手生成部を少しずつ改良していく - euphonictechnologies’s diary Haske…

Haskellで将棋 - 探索を遅延評価を駆使した形に置き換える

Haskellのパワーはなんといっても遅延評価。Ocamlから移ってきた私としては一番戸惑うのはその部分で、末尾最適化への気の払い方とかが若干違ってくる気がします。なんというか、foldl'と比べてfoldrなら必要な部分しか評価されないから無限リストも処理でき…

Haskellで将棋 - 指し手生成のスピードテストとHaskellのマイクロベンチマークライブラリ:criterion

前回は指し手生成部分に手を加えてみた。ここにあるよくベンチマークに使われている局面からの指し手生成スピードを測定して、先の変更がどれ位悪影響をもたらしているかを確認しておく必要がある。 当然のことながら一発で計算できるものを分割してリストを…