プログラム

戻り値だけ異なる関数のオーバーロード

戻り値だけ異なる関数をなんちゃって型推論して解決することができた 約1年越しにほっといた機能を夜中のテンションで作成 元は数値型をIntかFloatかShortなどなど、使っているところから推論したいってのが始まり まだそっちはできてないので何とか考える欠…

ブラウザを作ってみる 2日目

なんとなくタブっぽいものが作れた 実際にはImageButtonを並べているだけ 選択したときのハイライトとか付けたい 画面をキャプチャするタイミングが分からん setPictureListenerとかそれっぽい名前のリスナはObsoluteでござるとか言われるし じゃあ代替の関…

ブラウザを作ってみる

AndroidでWebViewはめ込んだだけのブラウザを作ってみる どうにも思ったようなものがないこんだけイジる低速SIMを使ってるからデフォで外部ファイル(js、css、画像全て)は読み込み不要 タブ化してタブの切り替えは画面下並べる ボタンはメニューとタブを閉じ…

無線&タッチセンサー

無線とタッチセンサー化したくてとりあえずAdafruit Feather 32u4 Bluefruit LEを購入 サンプルいじってBluetoothのキーボードにするのはすぐできた 超簡単(^-^) Amazon.co.jp: Adafruit Feather 32u4 Bluefruit LE: DIY・工具ただ、↑にはピンヘッダついて…

データグローブ試作 その2

手袋の指先にポッケを作りセンサーをぶっさして多少見栄えはよくなった センサーがよくずれるけどなんとかならんもんか・・・ 今はマジックテープで縛って両面テープでくっつけている、でもよくずれるソフト側はC言語ならかじったことあるのでめちゃ簡単に作…

データグローブ試作

曲げセンサーが届いたので早速くっつけてみた センサーに半田付けしてブレッドボードにぶっさす簡単設計 長さが足りなくなるとヤダから、長めのワイヤ付けたら余りまくり 5cmくらいのワイヤのがよかったかしら・・・ 曲げると抵抗値が変わるらしいけど そな…

Arduino買った

こないだ買ったキーボードがいけてない アルファベットはかろうじてブラインドで打てるが記号キーが打てない キーボードのFJのポッチをこんなに探し当てるのが大変なんて・・・ おまけに移動キーがFnとのコンビネーションしかないのだが、IJKLという変態仕様…

ローカルリポジトリをGitHubへ後から上げる方法

毎回よくわからなくなるのでメモ GitHubでリポジトリは作っておく、リモートリポジトリの設定はGUIでやっておく リポジトリ名は.gitって付いているほう https://github.com/zenuas/Roku https://github.com/zenuas/Roku.git git fetch git merge origin/mast…

.NETのジェネリクス解決

.NETのジェネリクス解決が意外とめんどくさい 型にジェネリクスがついている場合と関数にジェネリクスがついている場合がある例えばListなんかは型にジェネリクスがついているのでこんな感じ Dim list = GetType(List(Of )) Dim list_add = list.GetMethod("…

.NETのメソッドが呼べた

.NETのメソッドが呼べるようになった 作っている言語にメソッドなんて概念をつけていないので「型.メソッド(引数)」の並びを「メソッド(型, 引数)」に変えて関数コールするようにした 幸いCILではどっちでも一緒だしねちょっと面倒なのが名前空間 「DateTime…

.NETのコンストラクタが呼べた

.NETのコンストラクタを呼べるようになった 値型でコンストラクタの引数無しはinitobjなの? とりあえずnewobjしか対応してない、DateTimeを引数無しで作成することができへんけどまぁええわ コンストラクタの解決はめんどくさかったのでこんな風にしておい…

.NETの関数が呼べた

.NETの関数が呼べるようになった おかげでprint関数とかをハードコーディングしなくてもmscorlibをロードしておけば System.Console.WriteLineを呼べる感じただ、コンストラクタを呼べるように作ってないので呼べるのはまだクラス関数だけ! メソッドは、、…

WMI Win32_Processorが使えない

最近Windows7→10にした一台でアップデートしたとたんWin32_Processorが使えなくなってた LoadPercentageがずっとnullになる感じ 他のWin10マシンでは問題ないので原因はよくわかんないアップデート後にCPUの使用ログを見たらずっと0%のままなので何事かと思…

配列が書けた

配列が使えるようになった 、、、と言っても要素足したりはまだ、おいおいやっとく要素なしの空配列の型解決が超むずそうだったので未対応 nullを対応する時に一緒に対応を考えよう クラス構文を用意してないけど.NET Frameworkのメソッドは普通に呼べそう …

複数ファイルからのコンパイル

複数ファイルからのコンパイルができた ファイルを1つのNamespaceにする感じ今んとこuseすると相手Namespaceの関数だけを取り込むような動きをする エントリーポイントになるNamespaceしか実行しないから use先のファイルに単に「print(1)」と書いたら動かな…

型解決

複数ファイルからコンパイルすんのに型解決は何パス必要か? お手軽にやるとしたら3パスかなぁ1パス目でstructのプロトタイプ作っておいて 2パス目でsubのプロトタイプ作る 3パス目でinferする減らす方法あるのかも知んないけどこれが一番スッキリ分かりやす…

カリー化 続々

クロージャを実装できた 関数外の変数に手を出している関数をマークして 関数外の変数を一個のframeにまとめる var a = 1 var b = 2 sub f(c: Int) print(a + b + c) f(3)↑これを↓こう変換する var a = 1 var b = 2 sub f_(frame, c: Int) print(frame.a + f…

カリー化 続き

上等カレーに行った 値段高いやろ、エビフライ乗ってるとはいえ1000円って…ルーの味はまんま得正 得正には毎日通ってたのでまず間違いない 得正はカレーうどんなのでスープで多少割ってたかもしれないが、得正の常連であったもんがほぼ違いが感じられないレ…

関数のカリー化

CILでカリー化をする時のメモ 部分適用かな?まぁどっちでもいいや クロージャをCILで実装するのに部分適用でやりたかったらメモ 例えばこんな感じの3引数の関数で先頭の引数をカリー化しちゃう curryなんて関数があった場合 int32 f1(int32 a, int32 b, int…

関数の呼び出し方

関数はどうやって実行できるのか調べてみた 前にも調べたような気がするけど、忘れたのでもう一回 C#でInt->String->Intの関数を呼ぶ場合 delegate int F_dele(String s); static int f(String s) {return(999);} var x = new F_dele(f); Console.Write(x("H…

ラムダ式の定義

こういう感じの「(x, y) => x」C#みたいなラムダ式を加えたら reduce/reduce conflictでおま、と怒られた ちゃんとreduce/reduceの判定できたんだ、このクソパーサジェネレータ・・・LALR(k)にするには今更どーなおしたらいいもんか分からない とりあえず文…

構造体が書けた

構造体が書けた 構造体そのものは簡単だったけど総称型を突っ込んだら内部構造色々変えないとうまくいかず面倒 こっちは当面ほっといて先にクロージャを実装しようかなぁ とりあえずドラゴンクエストビルダーズが発売される前に一通りやっちゃわないとほっと…

if文が書けた

VS2015用に作り直しているコンパイラで、やっとこif文が使えるようになった if文の式部分にはカッコがいらないのに関数呼び出しにはカッコがいるとか ちょっとどやねん

関数宣言

数値と文字列を受け取って数値を返す関数の定義を書くとしたらどう書いたほうがベターか Pascal系とC系のちゃんぽんみたいな構文定義を使っていたけど 関数呼び出しにカッコを使わないパーサを書いたら、なんとなく関数定義にカッコを書くのがダルくなった …

インデント対応パーサ

インデントでなんとなくパースできるのができた やっぱり文法は普通にしてlexでなんとかするのがいいかな %default Node %token<Node> BEGIN END %token<Node> var expr %left '+' '-' %left '*' '/' %% program : void | program stmt stmt : begin block end begin : B</node></node>…

字句解析のつづき

あ、できた a+b* c/ d-e 結果: ((a) + ((b * c) / d)) - e 文法はいじらんで字句解析で次がEOLを受け入れるっぽかったらEOLをぶちこむ EOLを受け入れへんかったら飲み込むって %default Node %token<Node> var expr %left '+' '-' %left '*' '/' %% program : void</node>…

文脈依存字句解析

改行で式が終わるパーサを書きたいけどよく分からない 式の明らか途中なら次行に継続したい なんかの本に状態付き字句解析だか文脈依存字句解析ってのってた気がする…? stmt : expr eol expr : var | expr '+' expr var : VAR eol : {フラグ立てる} EOL {フ…

ぶつぎるな

非常に迷惑なフォーマットがある 文字をutf-8エンコードしてBASE64エンコードしてくれている それはまぁいい 迷惑なのは1行の長さが決まってるとかの理由でBASE64した文字を勝手に切りよる おまけに切ったのは次行の先頭が空白かタブ文字で判断せなならん さ…

本のビューワ その6

大体できたのでGitHubに入れてみた ところがやり方がさっぱりわからない、前やったのに・・・Eclipseで リポジトリビューワー→リモート→リモートの作成 から行って全然でけへんて悩んでたら プロジェクト右クリ→チーム→リモート→プッシュ からいくといけた気…

本のビューワ その5

下のActionBarが透明になった、ヨッシャ、と思ったら なんか下だけ半透明じゃなく完全透明になってる気がする・・・ まぁ前よりましだから良いか <activity android:name="BookViewer" android:uiOptions="splitActionBarWhenNarrow" android:theme="@style/Theme.Holo.Light.WithTranslucentActionBar" /> </activity>

本のビューワ その4

シークバーみたいなんを付けようおもて、いつも出てると邪魔やし ActionBarに配置したろと ほんで画面のどっかタッチした場合だけActionBar出したろとついでに半透明にしたろと、思った結果がこのざま なんで上しか半透明にならんのやー(T-T) protected void…

本のビューワ その3

大体できた 今のところ本棚が固定パスなので、端末ごとにマウント位置ちごてしもてるから 本棚のパスを指定するUIつくらなあかんくさい、めんどい まだページめくりの読み込み中表示してないけど、とりあえずcifsのテストするときに考えよう デバッグ環境や…

拡張子

Javaでファイルパスから拡張子取得する方法で、cのsplitpathとか、.NET系のPathクラスに相当するのがよく分からなかったので 検索したらびびった ほぼ間違っている 大体これ int ext = path.lastIndexOf('.'); path.substring(ext + 1); 違いはまぁせいぜいe…

本のビューワ その2

スクリーンサイズに合わせて拡大縮小と次のページに行くのがなんとなく出来た ついでに縦長の画像は横回転して表示してみたScaleGestureDetectorとかいうのでピンチイン・アウトで拡大縮小やってみたけどちょっと違和感のある動き つか、エミュレータでマル…

本のビューワ

Androidで多分一番使ってるアプリが本のビューワで、PerfectViewerを重宝してたけど これがもう最近よく落ちよる なんかもう落ちだすととまらない感じ 類似のアプリを見ても、あーこの機能PerfectViewerにあったのにないやんってなる 落ちる以外は便利やねん…

再帰しながらyieldする方法

再帰しながらyieldするには、どしたらよかんべか 2文木を左優先でじゅんぐりむっくりアクセスするには・・・ と思って書いてみた なんとなく動いている Public Overridable Iterator Function GetEnumerator() As IEnumerator(Of Node) Implements IEnumerab…

C#のびっくり

ldftnを調べようと思ってとりあえず普段使いもしないくせにC#を書いたら class A { public static void Main() { var f = () => 1 + 2; } } ラムダ式を暗黙的に型指定されたローカル変数に割り当てることはできません と怒られた・・・ なんやと?なんでや!…

Haskellのお勉強 group byしてsum

タプルで1要素目を元にsum(group byするイメージ)してみる こんなデータがあったとする 名前 数 Tarou 10 Hanako 20 Jirou 30 Tarou 40 Hanako 50 Saburou 60 Hanako 70 これをTarouは50、Hanakoは140、Jirouは30、Saburouは60という結果を得たい とりあえず…

Haskellのお勉強 CSV

csvのパーサは状態遷移図こんな感じ で、これをHaskellで書くと、、、むむむ さっぱり分からんとりあえず改行でsplitしてカンマでsplitするのは簡単にかけるけどこれじゃ練習にならない パーサコンビネータ使うと負けな気がする また後日チャレンジするとし…

Haskellのお勉強 文字列の扱い

今日はwcとexprを実装してみた wcは文字数と行数だけ exprは結合規則はめんどいのでやんぴwc main = do contents <- getContents putStr "line_count = " putStrLn $ show $ line_count $ lines contents putStr "char count = " putStrLn $ show $ char_cou…

憂さ晴らし

むしゃくしゃしてやった、デバッグはしていない void bubble_sort(int xs[], int length) { for(int i = 0; i < length - 1; i++) { for(int j = i + 1; j < length; j++) { if(xs[i] > xs[j]) { int t = xs[i]; xs[i] = xs[j]; xs[j] = t; } } } }

Haskellのお勉強 ソート

Haskellでソートを書く ソートと言ってもIO絡まないのですぐできたsort import Data.List main = do contents <- getContents putStr $ unlines $ sort $ lines contents reverse import Data.List main = do contents <- getContents putStr $ unlines $ re…

Haskellのお勉強

Haskellを勉強し直す イマイチよくわかってなくて、特にIOとか文字を数字にする方法とかがヘルプ片手にしないと書けない こりゃたまらん 勉強し直すと言っても、関数型言語の決まって最初のサンプルがなぜかフィボナッチ数の計算だったりする あんなもんクソ…

VB12

Visual Studio 2013のVBでも試してみた 恒例の↓コレをコンパイルするとどうなるか結果、相変わらずこんなil吐いて来た・・・orz=3 .locals init (int32[0...,0...] V_0) ldc.i4 0xfe ldc.i4.s 85 newobj instance void int32[0...,0...]::.ctor(int32, int32…

Visual Studio Express 2012 for Windows Desktop→2013

VS2012で新規PGMつくったの1回しかないので だいぶ前からボチボチ作っているプロジェクトをよっこいしょと開いてみたら ・・・コンパイルエラーがなくなったとたんIDEが落ちよる!ソースファイルの数が80超のまぁまぁおっきいソリューションなので 原因追求す…

CallとCallVirt

ILを書いていてcallとcallvirtの違いが今ひとつ分からない super呼び出しはcallで、他とりあえず全部callでいいんかしらおもたら たまにcallvirtじゃないとエラー吐くなんでだろうと思ってildasmして何も変えずにilasmしたら動く・・・オイ

dlopenの呪い

Exec.createSubprocessはfork/execしてるだけやった Runtime.execってやれば起動できるいうからやってみても無駄 どうやらホンマに標準出力に吐いてるみたい なんやねん、誰が吐いてんねん

AndroidでPythonを動かす方法

SL4AのProcessクラスがやれスレッドだの、Proxyだの、Serviceだので面倒だったのでバッサリ切って使ってみる 前回同様、libs/script.jarを自分のプロジェクトにコピーして、Eclipseでビルドパスに追加 ほんで libs/armeabi/libcom_googlecode_android_script…

chunkedなHTTPリクエスト

普通のPOSTメソッドはこう POST /test.asp HTTP/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 23 key1=value1&key2=value2うん普通だ Content-Typeにマルチパートを指定するとこんな感じ UAがファイル送信するとこんなん吐くよね P…

AndroidでPythonを入れる方法

なんか簡単そうだったのでメモまず、こっからSL4Aのソースをダウンロードしてくる http://code.google.com/p/android-scripting/ ソースはGiHubかな https://github.com/damonkohler/sl4aんで、ここのandroid/script_for_android_template.zipを使う これか…