テック-その他

Docker PHPにcomposerからライブラリ を入れようとしたらハマった話し。

composer自体はサクっと入る Dockerfile FROM php:7.3-fpm COPY --from=composer:latest /usr/bin/composer /usr/bin/composer ライブラリ を入れる $ docker image build . $ docker container run -d <imageID> $ docker exec -it <containerID> bash $ composer require <package> とする</package></containerid></imageid>…

Docker上のjupyterでselenium.webdriver.Chromeを動かす

seleniumとchromedriverのインストール $ apt install -y chromium-browser $ apt-get install chromium-chromedriver $ pip install -U selenium ダメなケース from selenium import webdriver browser = webdriver.Chrome() browser.get('https://...') イ…

MediatorとObserverの違い

復習したのでメモ。 Mediator mediatorは状態が変更された時にmediator自身に変更を通知するオブジェクトを返す。 実装のイメージ。コンパイルは通らない。 class mData{ Mediator mediator; change(){ mediator.notify(); } } class Mediator { mData mData…

深さ優先探索の探索順配列モデルの生成

お勉強がてら書いてみた。 こういう数値リストを [5, 20, 22, 35, 64, 71] 組み合わせごとの探索順のツリーにする。 言語はvar_dumpが綺麗なPHPで。

DDD 各役割のメモ書き

DDDの各コンポーネントの役割のメモ書き。 Entity アプリケーション上で登録や変更が行われるような情報を指す。アプリケーションから一意に識別できる必要がある。RDBの行データのようなイメージ。 exp. User, Order, Product ValueObject Entityを構成する…

ValueObjectについてのメモ書き

ValueObjectとは? クラスプロパティにプリミティブ型ではなくオブジェクトとして定義する。 class User{ int volume; // プリミティブ型 Volume volume; // ValueObject } メリット整理 型安全、null安全、値安全を構築しやすい コンストラクタでフィルター…

浮動少数と丸め誤差

floatやdouble型をloopカウンタや終了条件にすると意図したループ回数にはならない時もあるので注意。 丸め誤差 限られたビット数で浮動小数点数を表現した時、実際の値と近似した値で誤差が出る。 float f1, f2; f1 = 0.1f; f2 = 0.100000001f; printf( " %…

B木の構造の整理

ノードページの構造 ページバッファに整列済みのデータを配置 { 40 } { 40, 63 } { 24, 40, 63 } { 24, 40, 58, 63 } ページの分割 バッファが溢れた時、ページの分割を行う。 { 24, (+ 31), 40, 58, 63 } ┏ {40} ┓ { 24, 31} {58, 63 } さらにデータを追加 …

2分木のノード削除

binary treeのノード削除 削除対象のノードの子が左右両方にある場合、削除後、親要素にどちらの要素をぶら下げれば良いか? 10 5 15 2 6 17 1 3 というツリーがあった場合、ノード5を削除した場合、どういうツリーになるか?という話し。 答え:子左要素の最…

AVL木の平衡原理

AVL木の平衡原理 AVL木とは どのノードから見ても左右の子ノードの深さの差が1以内のツリー構造を指す。以下はAVL木を保つ為の考え方。 1重回転 例えばこんなbinary treeがあった場合、ノード10から子孫ノードを辿った場合、子孫の高さが2階層以上の差がある…

僕は再帰が書けない

最近、かなーり古いアルゴリズム本でアルゴリズムの復習をしたりしている。 やっぱ再帰は苦手だな〜。という愚痴。 以下はC言語で、要素数4つのint配列、{0, 0, 0, 0}の要素の合計値が1以上4以下になる場合の配列の組み合わせを示したもの。 中々理解出来な…

大規模な運用に備えて:マイクロアーキテクチャ(終)

下流サービスの機能不全 各サービスは接続する下流サービスが止まった場合、または機能低下を起こした場合、どういった振る舞いをするかを常に考えておく。 タイムアウトを設けて、一定時間以上応答がない場合は例外処理をするのが一般的だけど、タイムアウ…

PHPで実装したソケットサーバにUnity C#から接続する

ちょっとした同期オンラインを試してみたかったので書いてみました。 PHPでソケットサーバーを立てる Unityからsocket通信するプログラム試したくて、socket-server立てるのに久しぶりにPHP書いてる。PHP便利!— Fumiya Ichikawa (@LET__IT__RIDE) December …

readlineのバージョンが上がってたでござるの巻き

ちょっと必要があってpsqlを使おうとしたら... $ heroku pg:psql --> Connecting to postgresql-round-81223 dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib Referenced from: /usr/local/bin/psql Reason: image not foun な…

Swift WKWebView、JSを利用したネイティブアプリ内で完結させるスクレイピング

サーバを持ちたくなくてネイティブアプリ側で外部サイトのHTMLをスクレイピング完結したい場合。 WKWebViewでページ取得するのが手取り早い。要はWKWebViewが読み込んだHTMLをスクレイピングしてしまおうという作戦。 ちなみに実験的に検証しただけなのでsto…

Mac Keynoteでテキストにアウトラインをつける

対象のテキストを選択して、 フォーマット - テキスト - スタイル - 歯車アイコンから ちなみに明るい色でシャドウをつけると文字が光っているように見える。 これは、ぼかし30、オフセット0、不透明度100で黄色っぽい色でシャドウを入れた例。

個人開発アプリ リリース後2ヶ月経過の記録

7月の頭にいくつかのAndroidアプリをリリースして、約2ヶ月が経過した。 www.letitride.jp 経過記録 で、どういった状況になっているかというと、ゲーム系RSSアンテナ情報アプリがやはり強い。 FF14、DQX、モンハン、ゲーム総合の4つが伸びた。 強い、といっ…

JavaScript ローカルストレージの保存と参照

ブラウザは接続先のドメインごとにWebストレージ領域を割り当てられる。ストレージにはkey,valueの形式で保存可能。 ブラウザが変わればストレージ領域も変わる。 (そういったコードを書かない限り)サーバに送信しない。サーバから操作できない。がCookieと…

Rails Model.to_jsonでデータを加工して吐き出す

例えばDBに,AAA,BBB,CCCのように先頭のカンマが不要なデータが入っていて、対象をトリムしてjson出力したい場合などなど。 Model側でtrimするメソッドを定義 インスタンスメソッドで加工したいカラムに対してメソッドを定義する class FooModel < Applicatio…

Ruby アメブロのRSSから画像を取得する

アメブロのimage情報はsummaryの中に<img>として配置されている。 また、ブログ文中で使用されている絵文字も画像として取り扱われているので、私の場合、幅高さが150px以下の画像(多分、実サイズは96px)は認識しない画像として定義した。 画像サイズの取得は先日…

Rails 主キー以外での特定カラムのアソシエーション

例えば、こういったテーブルがあった時、 hoges foos id id title hoge last_foo no hogesはfoosをhas_manyで持つ関係とする。 通常はこういうfoosを指定すれば、foos.hogeに対してリレーションを貼れるんだけど、 has_many :foos last_fooカラムでfoosの特…

Rails カラムの削除と追加

作業メモ。 TEXT型からINT型に変換したい時はchange_columnしようとしても精度が合わず失敗する場合がある。 Caused by: PG::DatatypeMismatch: ERROR: 列"typo_column"は型bigintには自動的に型変換できません HINT: 必要に応じて"USING typo_column::bigin…

Ruby gem twitterでTwitterAPIアクセスする

gem twitteを利用するとTwitterのAPIに簡単にアクセスできる。予め、consumer keyとaccess tokenの各keyを取得しているものとする。 gem 各APIキーをハードコードするとキーが漏洩してしまうので、.envに記載できるようdotenv-railsも併せて導入しておく gem…

個人開発者向け無料でできるお手軽twitterマーケティング術

必要なもの twitterアカウント。出来れば、ボット臭くない本垢。 準備 twitterで予め認知してほしいアプリのLPやストアページ、またはWebサービスなどのURLをつぶやいておく。 ◯◯のアプリを公開しています。とても頑張って作りました。良かったら使って下さ…

Ruby オブジェクトまたはクラスに指定したメソッドがあるか調べる

これいつも忘れるので記録しておく。メタデータからオブジェクトが定義される時にいつも困る。 オブジェクト obj.respond_to?(:method_name) クラス ClassName.method_defined?(:method_name) private method 使うことはあまり無いと思うが、privateなメソッ…

Rails カラム名でエラーとカラム名称変更

エラー Railsのカラム名にtypeという名称を使用していると以下のようなエラーが出る /app/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.2.1/lib/active_record/inheritance.rb:226:in `rescue in find_sti_class': The single-table inheritance mechani…

Ruby FeedjiraとNokogiriでRSSフィードの画像情報を取得する

RSSフィードによってはimage情報が取得できないものもあるだが、大体のRSSはFeedjiraが解析したcontentの中に情報が含まれる。 Gemfile gem 'feedjira' gem 'nokogiri' $ bundle install を済ませておく。 RSSの解析 とても簡単。 rss = Feedjira::Feed.fetc…