Top page  1/42
15
2019

Wikipedia翻訳支援ツール Ver1.32

CATEGORY自作ソフト
前回のリリースが5年前のWikipedia翻訳支援ツールですが、使用しているライブラリが古かったため、TLS1.0/1.1の廃止にともないエラーが発生するようになっていました。バージョンアップして再ビルドしたものを公開しましたので、エラーが出ている方はお手数ですがこちらのバージョンにアップデートをお願いします。
Wikipediaでは先週ぐらいからエラー画面が出るようになったようで、旧バージョンですと「行 21、位置 38 にある開始タグ 'img' と終了タグ 'a' が対応していません。」のようなエラーが表示されます。
ライブラリ更新に伴い、XPなど古いOSでは動かなくなったはずですが、さすがにサポート終了からかなり経ちますので、ご了承ください。

ただ、今やMediaWiki公式のコンテンツ翻訳ツールもありますので、そちらへの移行も検討する時期かも…?
(公式のは仮リンク化とかはしてくれないっぽい(?)ですが。)

Tag: Wikipedia .NET

08
2019

マスタデータ実装の考察

CATEGORYDB
ソシャゲのキャラやらアイテムやらみたいなマスタデータの実装についての考察。ググるとベテラン勢によるもっと立派な記事もたくさんあるが、とはいえ毎回悩まされるので、どういう実装パターンがあるとかメリット/デメリットとか書いて自分なりの考えとかをまとめてみる。

なお、タイトルに「実装」と書いているように、運用なども含めてどうあるべきか…みたいな話よりも、サーバーサイドにどうやって実装していくかみたいな観点がメイン。
それとソシャゲを念頭に置いているけど、別にマスタデータを使うのはソシャゲに限らないので、一応それも考慮しつつまとめる。
(ソシャゲみたいに性能要件厳しくない場合は、あまり悩む必要は無いと思うが。)

Tag: プログラミング

30
2019

Laravelのcursorとchunkの違いとバッファクエリの対処法

CATEGORYPHP
Laravelでデータを小分けに取得するcursorchunkについての話。前回の記事でどっちでもいいから使えば的に書いたりと、自分も両者を使い方が違うだけで中身同じでしょとか思ってたんだけど、よくよく調べてみたら結構差分あったのでちょっとまとめる。なおLaravelは6.x。

初めに結論というか、両者の違いを表にまとめる。

cursorchunk
処理単位1件ずつ指定した件数まとめて
戻り値LazyCollectioncallbackでCollection
SQLSELECTを1度だけ実行
(結果を1行ずつ読み込む)
SELECTを複数回実行
(OFFSET/LIMITを使って繰り返し)
with使用不可可能
ソート不問Eloquentモデル: idでORDER BYされる
生クエリ: ORDER BY句必須
データ不整合の可能性
バッファクエリの影響

見てわかる通り、使い方が違うのも勿論だけど、内部的な動作も全く異なるし、お互い何かしら制限を抱えている。なので、実際に使う上では、用途に合わせて使い分ける必要がある。

Tag: PHP Laravel 性能問題

27
2019

Laravelで負荷対策としてやっとくこと

CATEGORYPHP
お仕事で作ってるLaravelアプリがついに負荷試験も終わったので、やったこととか調べたこととかを、忘れないうちに改めて基礎からまとめてみる。Laravelのバージョンは6.x。
なお「Laravelで」と題しているが、「Laravelのここを設定しろ」みたいな話じゃなくて、インデックス貼れだのLaravelに限らずWebアプリなら当然やっとけみたいな話が中心のまとめなのでご注意を。
あと個別の手法の詳細も書いてない。それは必要ならリンク先見たりググったりしてくださいm(__)m

Tag: Laravel PHP プログラミング 性能問題

25
2019

AngularのE2EテストでChromeDriverのバージョンを固定する方法

CATEGORYJavaScript
最近のAngualr (Angular CLI) だと、Protractorを使ったE2Eテストが自動でセットアップされるんだけど、ちょっと前にドライバとブラウザのバージョン不一致で動かなくなってしまったのでその対策をまとめとく。

E2Eテストでは protractor.conf.js に定義されたブラウザが使われる。が、ブラウザそのものは、実行環境に別途自分でインストールする必要がある。なので、普通にアップデートしてるとちょくちょくバージョンが上がる。
ng e2e コマンドでは、テスト前に勝手に webdriver-manager update というコマンドを流してドライバをバージョンアップして追従してくれるので、通常は問題ない。
ところが、何かの拍子に両者のバージョンがずれると、途端にE2Eテストが動かなくなってしまう。
(特にChrome系の場合、ドライバがChromeに合わせて新しくなる一方、CentOS版Chromiumとかは更新が遅くてバージョンがずれる。)

最終的に見つけたのが、以下のようにnpm script内でオプションを指定して自動更新を止め、pree2eとして前処理で指定したバージョンのドライバをインストールさせる手段だった(以下、package.jsonから抜粋)。
"pree2e": "webdriver-manager update --versions.chrome=77.0.3865.40",
"e2e": "ng e2e --webdriver-update=false",
※ 指定するのはブラウザではなくドライバのバージョン。Chromeの場合はChromeDriver

ブラウザを更新するとき、ここも更新しないといけないという手間はあるものの、これでテストを安定させることができた。参考までに。

Tag: Angular