寒くなってきました。

年の瀬となり、寒くなってきました。
仕事から帰ってきて冷え切った家の中が心に身にしみます。
うまいラーメンでも食いたいと思います。

ところでiPadの2019年版は出るんですかね。
ApplePencil2に対応してほしい。(Proほどの機能はいらない)
最近、何となくタブレットを結構買っちゃってる(ガジェット沼へ)ので、ものすごくiPadが欲しいです……。
いやiPadProも予約しかないし。2018年版も個人的にはすごくいいと思うんですが、店舗に在庫が全然なくって、さらに入荷未定と聞いて予約するのは気が引けました。新しいやつ出るんですかねぇ。出るといいなぁ……。

でもAmazonのFireタブレットはめっちゃコスパいいですね。セールになるととっても安いから、結構雑に扱えちゃうところがいいですね。
ウチでも、何も装備なしで運用してます。
Androidのデバッグ機としても動かしてみたいと思ってるんですが、動くんでしょうか。ちゃんと調べておかなければなりませんね。
いやあスマホとは違って大きいのって何となく得しているような気がします。そんな気がします。
しかし、Wi-fiのルーターが貧弱なのでたくさんWi-fi飛ばすとめっちゃ通信速度遅くなるのがネックですねぇ。買い替えちゃおうかなぁ……。

どうなることやら……。

Lisp勉強2

メリークリスマス、皆さん。
今日はリストをちょこっと勉強して、繰り返しをちょこっと勉強します。

(1 2 3 4 ore ore2)
コンな感じで線形のリストを定義できるらしい。これ自体では使えない。

(first (list 1 2 3))
最初の要素を取り出すそう。つまり1と表示される。

(rest (list 1 2 3))
こっちは、rest、つまり残りを出す。つまり最初以外のリストを作って返却する。
結果は、(2 3)

(nth 2 (list 1 11 111 1111))
nth関数は、n個目を吐き出す関数、1つめにn個目、2つ目にlistを与えればよい。
返却は、111ですね。

(quote (a b c))
quote関数はlistを生成する関数ですが、いつものリストと違って中が展開されないそうだ。
つまり、ここでのaとbとcは変数として展開はされずに、a b cといった文字列で返却される。
結果は (A B C)。
大文字、小文字は無視された。

(cons 10 (quote (a b c)))
consは、リストに要素を追加する命令。1つ目の引数に追加する要素を書く、そして、2つめの引数にリスト本体を渡してあげる。
そうすると、(10 a b c)と表示される。先頭(という概念があるのかは知らないが)に追加される。

()
空のリストはNILになる。それだけ。

(length (quote (a b c)))
これを使うと、リストの長さを取得できる。いたって普通な感じだ。

繰り返し:
(dotimes (n 3) (format t "~a" n))
3回繰り返す。012って出る。
dotimesが繰り返し命令だな。変数の宣言っぽく3っていう風にやる。
ふ~ん、一応何となく分かってきた感じだ、

(format t "~a" n)
ここで、表示している。
~aっていうのがprintfの%dみたいなやつらしい。
なるほど

dolistっていうのもあって、こっちはfor-eachを書けるらしい。使い方はほぼ同じだ。
変数で3って入れてたところに、リストを与えればいいらしい。

力尽きたので、今日はこれにて。
いい夜を。
続く。

スキンサイトのデザインをアップデートしました

スキンサイトのデザインをアップデートしました
表題がすべてを語っています。

デザインを変えたといいましても、それを生成する部分にもかなりの変更を入れました。
coreの部分はphpで書かれているんですけれど、そこの部分にも手をかなり入れました。やばいです。
3年ぶりぐらいにコード見たけどかなり不安になるようなコードばっかり書いてますね。当時の自分……。

cssも青基調のデザインから白系に戻しました。
何となく最近のgoogleなんかをちょっと見た目を参考にしました。ヘッダーが付いてくるタイプでヘッダーの中に検索ボックス埋め込んじゃうタイプ。
※Google翻訳なんかもUI結構変わってて驚きましたが。
続きを読む “スキンサイトのデザインをアップデートしました”

Lisp勉強1

今まで手続き型言語とか、オブジェクト指向の奴ばっかり扱ってきたので、関数型言語とかよくわからん。
古典的にLispを勉強してみようと思った。
プログラムは日々圧倒的成長が必要なのだ。(しらんけど)

Ubuntuでやってます。
まずは適当にLisp Commonパッケージをインストール
処理系の違いはよく分からん。
sudo apt-get install sbcl

sbclの対話の奴でやってみる。
公式っぽいところのチュートリアルみつつ
(format t "Hello World")
へ~、文字列型扱えるんだ。

続いて、関数を見る。
まずは四則演算
(+ 1 2)
ポーランド記法だ。おそらく(関数名 引数…)って感じだろう。

続きを読む “Lisp勉強1”

phpでちょっと考えた話

大乱闘スマッシュブラザーズ、私もやりたい。
そんなこんなで金曜日になりました。

ところで、Noto’sSkinsのサイトを現在せっせと更新中なわけですが、phpのバージョンを変更することにしました。
サーバーの都合上、5.6から、念願の(?)7.1に変えました(テスト環境を)。
そしたら、エラーが出ましたね。

どうやらphp7以降ではいろいろな字句解析とかもいろいろなところで変更が入ったらしくって、結構エラーが出ちゃいました。私自身、phpを書くのが得意というわけではなく残念なphpのコードを書いていたのが、原因なのですが……。

countでエラーが出ました。
どうやら、7より前のcount(array)関数では、引数の型が変数ならば何でもよかったようで、配列以外の型だと自動的に0を返してくれるようだったのですが、7からでは取れる引数が、配列のみになったようです。

なるほど……、phpの型って結構ガバガバで怖いと思いました。

その代わり、phpにはis_array(value)という関数があってそれで、配列か判定できるようなので、それを使ったりいらないところを消したりしました。
動きました。よかったです。

phpでは、比較演算子の等価(==)がガバガバなことで有名ですね。
奥が深い……ネットワーク関連ももうちょっと勉強したいと思えます。
あとRubyも使ってみたい。Ruby on Rails、ぜひやってみたい。今の流行は何なんでしょうか、割と知らないので今度調べてみます。

普段IDE使ってC#やらJava書いているとこういうところで困りますね……。
それでは。

いつの間にか12月だけれど。

いつの間にか12月だけれど。
本当に早い……

もうすぐスキンサイトのウェブデザインを全体的に変更しようと考えてます。

OrangeNBTは進捗はない。というか最近Minecraftやってませんね。
いろいろな人の記事を見ると、なんかすごく新機能が追加されているようですね。
私の知らないMinecraftの世界になっていることでしょう……。

最近の悩みなんですけど、なんか1%になってもスマホがなかなか放電できない。効率よくなんか電気を使う方法ないんだろうか。いろいろ面倒くさい。

毎日なんかネタを作って投稿しないとブログって続かないですよね。けっこう大変だなぁ……。
まあこのブログは記録用みたいなところもあるので、問題はないんですけどね。

ナユタン星からの物体Z買った。

ナユタン星からの物体Z買った。

いやぁいい曲ですね。僕の中でこの人の曲を聞いてボカロ熱が再発してしまった私です。

初回限定版に入っているhalo(vocal:ナユタン星人)めっちゃエモいですね。

やっぱり……歌詞……知りたいですよね。

とりあえず僕が聞きとってみた感じを乗っけておきますね。

/////////////////
言葉をなんこかもしゃべっても
この星には僕一人しかいないから

あなたに伝えたいこととかいくつもあったんだ

でもそのの世界は一つも思い出せないの

くらくら暗い(街/宇宙)の光
きょうもみていくよ
だれもそこにいないけど

※わくわにてとちたてとのくおちに

視点前方赤いです
生命はいないも(ん/の)です
それでもいうんだよ
halohalo

いつまでも思い出す
私とあったのおぼえてます
すべてきみが
みつけてよhalohalo

なくさないようにしなくちゃ
あなたとの思い出は轟き前のこと
わかんなくなってしまうよ
伝えたいことが伝えたいままな
つたわれないからあがくけど

※もまみひとりだききたえことわなあ

視点前方赤いです
生命はいないもんです
それでも言わせてhalohalo

いつまでも思い出す
このままじゃないのです
答えてだけ教えてよ
halohalo

何回だってずっと

そんな I love you story
/////////////////

注)正しい歌詞ではありません
聞き取れてないところもかなりあります。

全然聞き取れねえな。
やっぱりこの人の歌詞ゆえに、物語になっているのは確定でしょう。
しかし、※で書いた部分がさっぱりわかりません。ナユタン星人特有の無意味言葉の可能性も考えてもいいと思います。

皆さんも他のナユタン星人さんの曲を気に入ったなら買うといいですよ。

それでは、もう9月ですね。
学生の皆さんは夏休みは楽しめましたかね。
気合い入れて頑張ります。

いろいろ発表するべきこともたくさん残っています。

OrangeNBT 更新等 08/01

もう8月だぞ……、いいのか?

追加
BlockDataFixerを追加しました。

修正
DenseArrayワールドがバグる
Schematic、IdとMetadata逆だった。
なんかJsonのシリアライズバグってた

OrangeNBT20180801

ワールドSaveするときは現状ではちゃんとデータバージョン入れてください。
多分1.12のワールドでやるとバグるかもしれんので、1.12の時はちゃんと、1400番台の番号を入れとくように。
後で治します。というかセーブの引数廃止予定。

1.12から1.13の変換は対応しないことにしました。仕様です。せっかくなのでゲームを起動してあげてください。

注意!!!!!BlockDataFixerはだいたいの変換をサポートします。辞書に収録されているやつしか変換できません!!!
たまに変換バグるのも許してください。
正しい変換はMinecraftゲーム本体で変換することを推奨。

BlockDataFixer.GetNewBlock();だったかな。

辞書の量が大きいのでクラスを読み込むと一気にメモリ使用量増えるかもしれません。すまん。

OrangeNBT 更新等 07/26

厳しい戦いだった……

・なんかめっちゃ追加された。
・ワールド恐らく読み書きできます。SetBlock(); GetBlock();を使って下さい。
・1.13の辞書が追加されました。(BlockIdは)ないです。

これから直すとこ
・BlockSetの需要めっちゃ高いのにインスタンス生成しにくい。

まだまだ不安定な気がするのでバンバンフィードバックを頼むぜ!
OrangeNBT20180726

Commit情報

パレット方式闇すぎる……めっちゃ圧縮されたデータフォーマットになりました。(洗練されているとは言っていない。
プログラムからは正直扱いにくい希ガス。
long型(64bit)を最大限利用するために、パレットの大きさ(チャンクセクション内のブロックの種類)が16までだったら、4bitで保存されている。ゆえに1つのlong型に16ブロックの情報が書き込めるってわけ。まあ、まだ4bitならまだいいんですが、5bitになると、頭おかしい。longの配列に保存されるため、2つの変数をまたぐ。?????めんどくさすぎた。おかげでbit処理が結構うまくなったと思います(白目)。でもまだ不具合ありそう。

Heightmapはまだ知らん。解析終わるまで待とう。
フェンスや階段みたいなブロックは、水につかるフラグみたいなプロパティ値で管理されている。metadataが16までない状態だと明らかに無理だったもんね。仕方ないね。ワールドのロードが遅くなるのは仕方ないと思います。

ついでにバイオームの配列もbyte型からint型になったのでめっちゃ増やせる。ブロックも理論状めっちゃ追加できる。すげえな。やっぱり。

dllのサイズがめっちゃ大きくなったのは1.13の辞書のせいです。ごめんなさい