歩いたら休め

If the implementation is easy to explain, it may be a good idea.

【Django】GAEでとりあえずアプリケーションを立ち上げる

久しぶりに会社でWEBアプリケーションを書くことになりそうです。レポーティング用アプリケーションで凝ったシステムは必要ない(はず)なので、分析担当のメンバーも理解しやすいPython(Django)を選ぼうと思っています。 ひとまず、こちらのチュートリア…

【メモ】Githubの草を剥がさずにリポジトリを移行(結合)した

git

Rustの練習用にいくつかリポジトリを作って書き捨てのプログラムを書いていたのですが、あまり「〇〇-test」とかリポジトリが乱立してるのは見栄えがいいものではありません。 というわけでこんなディレクトリ構成で一つのリポジトリで管理し、過去のリポジ…

【GB】複数スプライトのキャラクターを動かす

こちらの実装を元にしていますが、「複数スプライトを利用していること(それをなんちゃってオブジェクト指向で隠蔽していること)」「斜め移動に対応していること」が工夫した点です。 github.com こんな感じのコードを実装しています。 const unsigned cha…

【GB】TODO:: C言語の関数内での構造体への値のセットについて調べる

gbdkでのプログラミング中、次のようなコードを書いていたところ、「 Player_init 関数内では player->x などに50がセットしたつもりなのに、main 関数に戻ると0という値になる」という事象が発生しました。 typedef struct _Player { UBYTE i, x, y; } Play…

【GB】C言語でオブジェクト指向風のプログラミングを試してみる

『C言語によるオブジェクト指向プログラミング入門』を参考に、以下のようなコードを書いています。「第一引数に構造体を与える関数を用意してあげれば、オブジェクト指向っぽくプログラミングできるだろう」という発想です。 ポリモルフィズム的なのを考え…

【雑記】組み込み機器のC言語プログラミングと、最近読んだ本

今日はいろいろやりたいことあった(掃除とか)んですが、結局カフェでプログラミングの本とか読んでしてしまっていました。 組み込み機器のC言語プログラミング kiito.hatenablog.com まず、ゲームボーイ上の実装の参考になるかと思って『組み込み開発の実…

【GB】gbdkで割り込み処理を実装しました

ボタンを押すたびにカウントアップする実装です。 github.com といっても大したことはなく、CPUにボタン押下時の割り込み処理が存在するので、そのときに実行する関数を指定しているだけです。 私は今までOSが存在しない低レイヤーのプログラミングをしたこ…

【GB】ゲームボーイでライフゲームを実装しました

ゲームボーイソフトを作成の練習のために、gbdkを使ってライフゲームを実装しました。 例えば今後は以下のようなことがしたいと考えています。 NES(ファミコン)向けに作成されたmmlファイルを、GBソフトに変換(トランスコンパイル?)して再生したい いろい…

【Python】クラス内のプライベート変数の名前解決方法についての調査

モジュールの外からアクセスするクラス( from sample import SampleClass )のために、以下のようなモジュール内のprivateな関数に利用するコードを書いていました。 # sample.py class SampleClass(object): def public_method(self): __private_function() …

【Rust】Rustで数値計算プロジェクトを試す その11

振動子の減衰系で、rulinalgの練習も兼ねて実装してみました。この場合のケースならいちいちクロージャ使う必要はなかったですね。 kiito.hatenablog.com 若干ハマった点としては、 rulinalg::vector::Vector<f64> * f64 は実行されるものの、 f64 * rulinalg::ve</f64>…

【Rust】Rustの行列計算ライブラリについて調べる

この間までLotka-Volterraの方程式をRustで解いて勉強していましたが、そろそろPythonの numpy.ndarray のような行列計算を楽にする機構が欲しくなります。 もちろん、実際のソースコードで使われているライブラリ(crate)が良いです(メンテナンスされておら…

【Rust】Rustで数値計算プロジェクトを試す その10

中間目標であったLotka-Volterraの方程式がシミュレーションで解けました。 shimaphoto03.com use gnuplot::{Figure, Caption, Color}; const A: f64 = 0.01; const B: f64 = 0.05; const C: f64 = 0.0001; const X0: f64 = 1000.0; const Y0: f64 = 100.0; …

【Rust】Rustで数値計算プロジェクトを試す その9

以前のコードを改造して、 x と v それぞれで微分方程式を指定できるようにしました。クロージャ便利ですね。 use gnuplot::{Figure, Caption, Color}; const K: f64 = 1.0; const M: f64 = 1.0; const A: f64 = 2.0; const X0: f64 = 0.0; const V0: f64 = …

【Rust】Rustで数値計算プロジェクトを試す その8

昨日のやつから、関数の中で x と y を += するように変更すれば、多少コードがスッキリするんじゃないかと思ってやってみました。 ミュータブルな参照で渡して、参照を外して…って感じなので書きづらい。多分間違った道に来たと思うので引き返します。 stac…

【Rust】Rustで数値計算プロジェクトを試す その7

クロージャを渡す実装をしました。 t の引数は結局使ってないので削除しました。 doc.rust-jp.rs の記法はトレイト境界というもので、これが無いと以下のようなエラーが出るのですが、 error[E0277]: the size for values of type `(dyn std::ops::Fn(f64, f…

【Rust】Rustで数値計算プロジェクトを試す その6

ひとまず、Rust習得の第二の中間目標として「Lotka-Volterra方程式を4次のRunge-Kutta法で近似計算する」ことを置いてみます。いきなり2重振り子を計算するのは、極座標とかラグランジアンみたいな概念が必要っぽくて、「大学時代に触れた覚えがあるけど急に…

【Rust】Rustで数値計算プロジェクトを試す その5

昨日の件を友達に話したところ、crate側がRustのバージョンに対応してなかった可能性が高いようです。 これってちょっと見てみたけど、crate側の実装の問題な気がする。gnuplotのラッパーの方使ったら出力できた。 https://www.mathgram.xyz/entry/rust/gd …

【Rust】Rustで数値計算プロジェクトを試す その4

昨日の続きで、Rustのcratesを利用してサインカーブをプロットしたいのですが、エラーが出てしまっています。gitconfigは、以前source treeを利用していた際のものが残っていただけだったので、ちゃんと設定し直しました。 エラー箇所を確認するためのシンプ…

【Rust】Rustで数値計算プロジェクトを試す その3

数値計算のプロジェクトでは、結局グラフの形式で出力することも多いと思います。csvで出力して古き良きgnuplotでもいいんですが、Pythonのmatplotlibみたいなのが無いか調べます。 pure Rustのこちらのライブラリを試してみます。 github.com しかし、こち…

【Rust】Rustで数値計算プロジェクトを試す その2

前回のあらすじ: 「Rustで数値計算(二重振り子)して結果をアニメーションで表示したい!」と思っています。クソ記事量産してる感もあるんですが、以前チュートリアルをしていて「どこまで自分が分かっていて、どこから先分かってないのか分からない」みた…

【Rust】Rustで数値計算プロジェクトを試す その1

これから伸びていって「今はPython(numpy)でやっているような数値計算もRustで、高速に抽象的に書けるようになるんじゃないかな」と思っています。 github.com 今まで何度かトライしたものの、「お前まだチュートリアルやってるのかよ」ってプログラミング友…

【メモ】「書かれていないこと」に注目する

私には英語圏出身の友達が何人かいるんですが、何を言ってるのか分からないときがあります。大抵プログラマーかアニメ・オタクなのですが、できるだけ自分の意見をしっかり(そしてなるべく建設的に)表明する能力や、時折日本人の私から見ると言動にカウン…

【本】イケてないソフトウェアエンジニアのための『リサーチの技法』

我々ソフトウェアエンジニアは、日々自分なりに新しい技術動向を調べて、それをまとめて適切な分野に投資していく必要があります。 それでなくても、あの新しいライブラリやプログラミング言語が良いとかいう話から、日々の業務で同僚はなんだかよくわからな…

【本】 『組織化の社会心理学』を読みました

『コミュニケーション学がわかるブックガイド』で気になった本で読んだものです。他にも『誰のためのデザイン?』とかも読みました。こちらはプログラマー関連でも有名ですね。 気になったアイデアとしてはこれくらい。ちゃんと読めばいろいろな示唆が得られ…

【Python】pyppeteerでのクローリング時に別ドメインのCSSを読み込む

pyppeteerを使ってクローリングする際、「JSを実行して値を取り出す」ため、セキュリティのための制限にひっかかることが割とあるようです。 私の場合、CSSの情報を取り出す際に、以下の問題に引っかかりました。 > document.styleSheets[0].cssRules VM5262…

【本】『わざ言語―感覚の共有を通しての「学び」へ』を読みました

年末なので本ばかり読んでます。普段と違う環境だと本に逃げてしまうので、なんとかプログラミングに集中する方法も見つけたいです。 わざ言語―感覚の共有を通しての「学び」へ作者: 生田久美子,北村勝朗出版社/メーカー: 慶應義塾大学出版会発売日: 2011/03…

【本】ソフトウェアエンジニアのための「アサーション入門」

…ってタイトルで書こうと思ったんですが、だいたいこのサイトに書いてある通りの内容ですね。 el.jibun.atmarkit.co.jp アサーションと言っても、assert文を使った契約的プログラミングの話ではなく、この間の『コミュニケーション学がわかるブックガイド』…

【Python】asyncioの代替ライブラリtrioを調べてみた

この記事はPython その2 Advent Calendar 2018の遅れてきた15日目の記事です。 最近、クローリング用のプログラムのasyncioを使った並行処理のプログラミングをしており、「asyncioのベストプラクティス」という趣旨の記事を書こうと思っていたのですが、自…

【本】『コミュニケーション学がわかるブックガイド』で気になった本

これ読みました。けっこう面白い本も紹介されていたので、これから学んでいこうと思った本のアタックリストをメモしておきます。 コミュニケーション学がわかるブックガイド作者: 東京経済大学コミュニケーション学部出版社/メーカー: エヌティティ出版発売…

【Python】pyppeteerの非同期処理をこんな実装で行おうと思ってるんですが、どう思います?

pyppeteerで非同期でクローリングする実装をしていて、エラー時に自動でbrowserとpageを開き直してリトライ…って考えてたんですが、あまりにリトライ処理が煩雑になるので 毎回処理したい固定長のurlのリストを受け取る レスポンスはrequests-htmlのものが便…