たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

プログラミング

デザインパターン

設計様式 上手くいくお決まりのやり方 構造みたいなもの こんな設計パターンだとこんな問題が! しかし、こっちの設計パターンならその問題からおさらばできる!最高!

Ops的思想

運用/operations 「サービスが定義された機能を提供する状態」を作り出し続けること 現在の状態は観測されないかぎり不明: 観測 = 監視 Devに強いエンジニアとOpsに強いエンジニアが各々の視点で共通のコードベースを触るのがベスト

ソフトウェアやサービスの何が重要なのか

ソフトウェア、サービス: ユーザーに使われるもの ユーザーに価値を提供するもの 価値そのものを生む場所、価値を生むことを実現する技術 スーパー黒子 DDDにおけるドメイン: 価値の源泉 ソフトウェア/サービスと金の延べ棒の違い 利用に価値があるのか、存…

Dual-Interface & Adapter (Dual-IA)

Dual-Interface & Adapter 良い分離面設計をするために、各coreがownershipもってinterfaceを定義する. interface間をadapterでつなぐ. どう分割面を設計するか、の指針 (何に基づいて分割するか、は扱わない.) domain - interface <= adapter => 外部API と…

コードフォーマットに関する考え方

前提: 「完全なる唯一の正解」は存在しない 各フォーマットはメリット・デメリットがあるし、その程度はユーザー・環境に依存する ポイント: 統一感のなさが問題を引き起こす 不慣れなフォーマットでひっかかる ひっかかること自体がリソースを食う ひっかか…

プログラミングの依存とうまくやっていく

依存とは 依存 (dependency): 対象の存在を前提とし、対象の変更に影響を受ける状態. couplingとも 依存は悪いものなのか 依存対象を必要とする 対象の存在を前提としている -> 対象が存在していない(?)とそこへ依存した部分が構築できない e.g. 利用する…

ソフトウェアアーキテクチャに関わる記事へのリンク

根源にある考え方 一度に考慮すべき範囲は小さいほど上手くいく KISS原則 その考え方に基づくアプリケーションの構築方針 小さく区切られたブラックボックスを組み合わせて大きいシステムを造る divide-and-conquer/分割統治 link 良い分割の方針 何に基づい…

移譲と関数と高階関数、依存性の注入

委譲 (delegation) 委譲 - Wikipedia ufcpp.net 関数ポインタに似てるけど、methodが所属してるインスタンスの状態もくっついてくるから、その辺は違う 連載:C#入門 第17回 処理を委譲するdelegate(5/5) - @IT eno0514.hatenadiary.jp 型だけ決めて、委…

一度に考慮すべき範囲は小さいほど上手くいく

small is beautiful (UNIX) 考慮範囲は小さいほうが脳みそ楽でうれしい (怠惰) 関心の分離 線引き マイクロサービスアーキテクチャ 正しくない解釈が発生しうる局面 考慮すべき範囲なのもポイント。 広い視野で新しい発想をする、みたいな場面で考慮範囲を最…

入力に対する制約

一般に入力バリデーションと呼ばれるもの。 対象は関数からフォームまで色々広く プログラムは (明示的・暗示的に) 入力に想定範囲を持つ プログラムを書く際、入力には範囲が想定されている。 argAは文字列だとか、英数字だけだとか、intだとか、非ゼロだと…

AtomのFolding/Unfoldingで差をつけろ

折り重なったコードの山々を自由に飛び回りたい。さあFolding/Unfoldingの時間だ 結論 ショートカットとエディタ拡張を使え (以下、コマンドはWindows準拠) atom標準ショートカット folding: Alt + Ctl + [ unfolding: Alt + Ctl + ] fold at specific level…

Atom IDEとは。何ができるのか

Atom IDEとは: Atomエディタを統合開発環境 (Integrated Development Enviroment)のように運用する、という概念 Atomプラグイン群によって実現できる IDE-like UI: atom-ide-ui Language Server support: atom-languageclient 各言語で ide-xxx (e.g. ide-ty…

ssh (secure shell) 入門

SSH (secure shell) とは、外部のコンピュータへ安全にアクセスする方法のこと。 より正確には、安全でないネットワークを介しながら、安全なリモートログインと安全なネットワークサービス (shell操作など) を実現するためのプロトコル。 SSHとは Secure Sh…

関心の分離 −利点とそれを促すアーキテクチャ−

関心の分離 / separation of concerns、SoC 依存関係逆転の原則 / Dependency Inversion Principle 依存ルール 密結合とは 関心が分離しても密結合みたいなケースはありうるか 上位と下位が頭を固くしてる気がする。ブラックボックスでいいんじゃない? inte…

小さく区切られたブラックボックスを組み合わせて大きいシステムを造る

[caller/callee・ブラックボックス・interface] 小さなブラックボックスを組み合わせて大きいシステムを造る calleeが内部でcallerを操作するな、calleeは変数を返すだけにしろ(まさに関数型) [ブラックボックス: 暗示的外部操作をしない] 暗示的に外部を操…

日本語声質変換 (ボイスチェンジ) の先駆者たち

アカデミアは一切フォローできていない。だれかフォローしてくださいお願いします。 バ美肉 選ばれしおじさん達による奇跡の調音。ディープラーニングなんていらなかったんや! ディープラーニングの力で結月ゆかりの声になってみた デモが聞ける日本語VCの…

PhotonAnimatorViewの全て

とは PhotonAnimatorViewとは、Unity Animation を同期させるためのx。 Exit Games社のPhoton Unity Networkingライブラリに含まれている。 デモ動画 何ができて何が出来ない 使い方 AnimatorViewコンポーネントをアタッチ。 PhotonViewで設定をいくつかする…

ブラウザとモジュールとバージョン管理

ブラウザはモジュールを持つか ブラウザとモジュール モジュール化は綺麗で管理しやすく安全なコードを生む。 モジュールは最高だ。 そして今や、ブラウザ(フロントエンド)でもモジュールは使える モジュールは単体で動くのが主たる仕事ではない。 他のモジ…

逆引きRamda.js

Ramda.jsの関数を機能ごとに整理してみた。 日本語のRamda.js記事が少ないのは、なんでなんだろね? 制御構造の抽象化 条件分岐 if系 R.ifElse R.ifElse(condition, onTrue, onFalse) condition関数に基づいてonTrue || onFalse関数を実行. http://ramdajs.c…

システムトレード作成で身につけた技術

非同期とエラー処理 エラーを起こしうる、複数の非同期処理を扱うのがツラミだとよく分かった. 非同期処理の完了タイミングはネットワークによって前後し、エラーで仕切り直す処理が必須になる. うまく処理するための技術として Async/await try-catch (with…

MVPとやら

Minimum Viable Product 思うところがあるのは、コアをminimum viableにするのが大事なんじゃないのってこと 最小限の機能で解決しようとしている問題を解決するプロダクト 地方からの価値生成 • 本当の最小限を絞り込むためのユーザーストーリーマッピング …

JavaScriptのgenerator入門

generatorの概念 generator(という概念)とは、繰り返しを簡単に・見通し良く記述する仕組みである. generatorの利用 generatorを利用することによって 繰り返しオブジェクト(イテレータ)の容易な作製 見通しの良い非同期処理コード記述 が可能になる. gene…

Node.js プロジェクト開始手引き

git init npm init gitは.git directory, npmはpackage.json が命 これさえあればgitとnpmが消えても大丈夫(のはず) でもコード自体が吹き飛ぶと元も子もない. なのでGitHubのプライベートリポジトリをリモート. これで万事オッケー! 復旧したいときはGitHu…

再代入できる世界とできない世界の違い

今、数学の世界にいます x = 1 y = x + 2 yは? => 3 (当然だろ) ----------------------- 今、プログラミングの世界にいます x = 1 x = x + 2 xは? => 3 (当然だね) 相変わらず、プログラミングの世界にいます x = 1 ■■■■ x = x + 2 xは? => …確定しない…

アップロードしたファイルの破損

ネットワークを介してファイルをアップロードする. この時、ファイルは破損しうるのではないか? バックアップのためにアップロードしたのに、壊れてたら何の意味もない! これを防ぐ(破損に備える)ための仕組み色々ある MD5 ハッシュ値によるチェック. MD…

Bluetooth LEを各種OS, マイコンで使う

Windows UWP(Universal Windows Platform)がBLEに対応、さすがU!W!P! また、Bluetooth GATT API で Bluetooth LE デバイスと連携することによって、次のことが可能となります。 * サービス/特性/記述子の探索 * 特性/記述子の値の読み取りと書き込み * 特性…

ESP32の静電容量式touch sensor with esp-idf

ヘッダーファイル github.com 実体(.c) github.com 例1. github.com 例2. github.com ESP32datasheet appendix https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf#page44 自分でドライバー書いちゃいなYo! ドライバーが…

HoloToolkitのシェーダーたち

HoloToolkitにはシェーダーも含まれている. こいつらはなんだ? 解説記事が日英ともに全然ないぞ? では調べるしかあるまい… 現時点での結論 Fast Configurable shaderを使えばええんでない? 以上. 状況 階層は Utilitiesの下. HoloToolkit-Unity/Assets/Ho…

HoloLensでUnityちゃんに歌の口パクしてもらった

HoloLensでキャラクターに口パクさせてみた 歌に合わせた口パクのさせ方 調べる前に私が思っていた素朴なイメージ: 音源に合わせてミクさんの口を引っ張り、パラパラ漫画みたいに編集してく. 技術の進歩は素晴らしいもので… 音源から発音を抜き出す仕組みが…

unity

ぽちぽちしながら3Dアニメーション/ゲームが作れる. 開発言語 事実上、2種類. 哀しきBoo BooというPython likeな言語があった. 2017-02-01現在、deprecatedではない. しかし、消えつつある言語のよう. Documentation Default language for code snippets in …