DEVGRU

プログラミングと競馬予想について書きます

neologdn が使えない (Python 3.8では)ので unicodedata.normalize() を使ったが、やっぱり使えた話

データの名寄せに必要な正規化で同僚から neologdn を進められて使おうとしたが、 Python 3.8 に対応していなくて、 unicodedata.normalize() で事足りたけど、3日前に対応していたお話です。 広告 (adsbygoogle = window.adsbygoogle || []).push({}); ユ…

pytest と unittest.mock を使って標準出力のテストを書けなかった話

今回は、標準出力に文字列を出力する実装に対して pytest でテストを書く必要があり、 unittest.mock と Python のライブラリリファレンスにかかれていた方法を組み合わせたら見事にハマったお話です。 広告 (adsbygoogle = window.adsbygoogle || []).push(…

JavaScript の正規表現リテラルの評価タイミングとパフォーマンス

正規表現リテラルと正規表現オブジェクトの評価について、誤解していたのでメモ。 広告 (adsbygoogle = window.adsbygoogle || []).push({}); 以下の2つのJavaScriptコードを実行した際のパフォーマンスを考える。 regexp-literal.js for (let i = 0; i < 10…

Re: 愛すべきAngularとのお別れ。2,3年後を見据えReactにリプレイスする話

note.com 上記の記事について、現職では主に Angular を使っている立場(※ 社内ではReactのプロダクトも複数あります)でこの記事についての感想を述べます。 広告 (adsbygoogle = window.adsbygoogle || []).push({}); 理由はAngularを書ける(or書きたい)…

ウェブサービスエラーハンドリング指針

これはなにか 現職の社内でこのテーマで書いたが、そちらは社内プロダクトの情報も混じっているので、同じテーマでブログ向けにいちから書き直してみる。 ちょっと長いが、ウェブサービスを運用するならきちんと抑えておきたい。 課題 SPA + HTTP API(概ねR…

私的開発環境改善計画 Ver. 2021-2

前の記事で開発環境を確認したので、次は改善を考えていく。 team-6.hatenablog.jp 広告 (adsbygoogle = window.adsbygoogle || []).push({}); エディタ Visual Studio Code から変える気はしばらくないので、これをどう便利にしていくか考える。 設定の同期…

私的開発環境 Ver. 2021-2

個人・仕事の開発環境をそろそろ見つめ直そうと思ったので、現状を整理する。 広告 (adsbygoogle = window.adsbygoogle || []).push({}); ハードウェア・OS 個人も仕事もMacBook なので、 OSはmacOS縛り。 仕事の方はまだ Big Sur にアップグレードできてい…

エンジニア採用のお知らせ

現職ではプロダクト拡充のため、ソフトウェアエンジニアの採用を行っております。 転職をお考えの方、または興味のある方は、@blog_devgru までDMください。 現職のWantedlyのページとかんたんな紹介をお送りします1。 業務分野 国内医療系スタートアップ 雇…

(訂正あり) Serverless Framework で TypeScript を使うときは、aws-nodejs-typescript を使わずに serverless-plugin-typescript を使おう

(訂正) 書いたはいいが、 よくよく確認したら repository の last commit が2年前と全くメンテナンスされてない状態だったので、 こちらのほうがむしろ推奨されない方法となっていました。 なにかの参考になるかもしれないので、記事は残しておきます。 不…

(お詫びと訂正)Android版COCOAがバグった理由

2021/02/06 21時35分 追記 参照したGoogleの資料が古く、現在はAppleと同じ仕様になっております。 先日報じられた不具合の原因はこちらのIssueと思われます。 訂正が遅くなり申し訳ありません。 調べたらそれっぽいのがわかったのでメモ。 広告 (adsbygoogl…

Ubuntu 20.04 (on Google Cloud Platform Compute Engine) で GPU サポートが有効な LightGBM をビルドする

サーバを作り直すときに調べたのでメモがてら。 公式に書き方は載っているが、記述が古いので掲題に特化した方法を載せる。 lightgbm.readthedocs.io 前提として、Compute Engine で GPU が有効なインスタンスがあり、そこに pyenv でPython 3.8.6がインスト…

Google Cloud Platform Compute Engine の VM インスタンスにSSHでつなぐ

BigQuery を使っている縁(?)から、計算用のインスタンスもGoogle Cloud Platform (GCP) を使っている。 具体的には、 AI Platform の Notebook インスタンスを立てているのだが、これは結局 Compute Engine の VM インスタンスに Jupyter Lab をプリイン…

競馬予想に使っているサービス・ライブラリ 2020/11

ここ1年はほとんど変わっていないですが、今現在の機械学習による競馬予想で使っているサービスやライブラリについて情報を残しておきたいと思います。 どちらかというと、なぜそれを使っているのかを考え直したり、あわよくばコメントを貰って改善に役立て…

機械学習による競馬予想を再開している

2019/1頃に機械学習による競馬予想をしていて、副業との兼ね合いでちょっと中断したりしていたけど、 色々余裕が出てきたので再開しています。 回収率が100%を超えたので、先週から実際に投票するフェーズに入っていたのですが、 勝ち負けはこんな感じです。…

明日の日付をPython3で出力するワンライナー

競馬予想のためにJRDBからファイルをダウンロードする際、今日明日の日付のデータを削除しないと古いデータが混ざる問題があったのでメモ。 最初は date コマンドでやっていたがGNU拡張だったようで、macOSのBSD dateではうまくいかないためPython3で再実装…

Angular と RxJS のための情報サイトを作り始めた

「Angular のための RxJS」 というサイトを作っています(まだコンテンツしょぼい)。 ここ数年、業務でAngularを書いていて知見がだいぶ溜まってきたのと、業務委託のサービスもAngular移行して更に知見が増える速度が加速したので、 どこかにアウトプット…

社内の認識合わせのために技術的負債を一文で定義してみた

社内では品質管理の名目で技術的負債の解消をミッションの1つとしているが、着手して一番最初に躓いたのは技術的負債とリファクタリングの認識が全く合わないことだった。 リファクタリングについては「リファクタリング」と「レガシーコード改善ガイド」に…

18年使ったEmacsを離れたあとVisual Studio Codeを2週間で辞めてNeovimを使う話

最近の仕事のパフォーマンス下げている要因の1つがエディタ使用時のフラストレーションで、 その解決のために10代から使っていたEmacsからついに離れた。 ただ、Visual Studio Codeを使い始め、強力なコーディング支援機能には感動すら覚えたものの、 細々と…

WebDriverIO で 複数のモディファイアキーを押して離すコード

プロジェクトで Ctrl + Alt + Shift + X を押す機能のE2Eテストを書くときに困ったのでメモ。 (adsbygoogle = window.adsbygoogle || []).push({}); キーイベントを送るには keys() を使う。そこまでは変わらない。 webdriver.io しかし、素直に browser.key…

Angular + Sentry でやたらとUpdateが走る現象を解決する

Angular + Sentry 環境でやたらと Update (ツリーの更新)が走る現象を指摘されたところ、 微妙な問題があったので解決した。 (adsbygoogle = window.adsbygoogle || []).push({}); どうやら zone.js と Sentry の Breadcrumb の両方で console.log() を置…

Angular + Sentry で、 ErrorHandler から console.log() を呼び出すときの落とし穴

あんまりないと思うのだが、Angular と Sentry (Ravenではなく) を同時に使っているとき、ErrorHandler で Sentry にエラーを送ると同時に console.log() にエラー内容を出したいことがあるかもしれない(うちのプロジェクトではなぜかある)。 しかし、その…

大きなテキストファイルをSCPするときは-Cをつけると速い

機械学習用のEC2インスタンスにファイル転送する際、大きなJSONファイルをSCPすると非常に時間がかかっていた。 しかし、オプション1つつけるだけでかなり早くなった。 (adsbygoogle = window.adsbygoogle || []).push({}); つけたオプションは -C。以下の…

AWS EC2の深層学習用インスタンスのJupyter Notebookでtqdmを使えるようにする

機械学習で非常に時間のかかる処理をするとき、AWS の EC2 インスタンスを立ててその上で実行している。 AMIは深層学習用のインスタンスを用いている。 aws.amazon.com Jupyter Notebookもプリインされている。 また、時間のかかる処理を可視化するのに便利…

Pandas で 日付の入っているカラムを年でフィルタする

競馬情報で特定の年以降のレースを絞り込むときの便利な書き方がわかったので紹介する。 (adsbygoogle = window.adsbygoogle || []).push({}); dateカラム(datetime型)が2019年以降のデータを選ぶには、ストレートにするとこのような感じになる。 impo…

Emacs + counsel/ivy + smart-hungry-delete でハマった

最近 Emacs の環境を更新して、helm から counsel/ivy に移行、またsmart-hungry-deleteも導入した。 ただ、なぜか C-x C-f でファイル一覧が出たときに上のパスに行けない(Backspaceが効かない)現象に遭遇した。 (adsbygoogle = window.adsbygoogle || []…

競馬予想を始めた

まだ仮想通貨の取引の痛手が残っていて株取引はできていない(SBIに口座を開設しただけ…)。 それはさておき、最近興味があったが応用先のない機械学習の知識がついに役に立つ分野が見つかった。競馬だ。 無料で手に入る多数のパラメータがあり、結果がはっ…

raven-js はもう使わないほうがいい

仕事で Sentry を使っているが、 そのライブラリ raven-js はもう死んでいるという話。 (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-7132367542454356", enable_page_level_ads: true }); github.com ここを見ると、以下の…

Python と pypetteer で某所から株価を無料で取得する

結局、仮想通貨は逃げるタイミングが遅れてとんでもない負債を私に残していったので、 ボラリティは低いが安定している株取引を粛々とすることにした。 (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-7132367542454356", enab…

HTTPS化しました。

本BlogをHTTPS化しました。 (すっかり忘れていた) もし見られなくなっている記事などありましたらご連絡ください。

note で Botのコードを記事にして売ってみた

BTC・FXのトレード関係の情報をnoteで売るのが流行っている(というかドテンくん)ので、 ちょっとやってみました。 note.mu (adsbygoogle = window.adsbygoogle || []).push({}); 前2記事の画面表示機能+Bot機能で900円です。 Botは1コインあたり5000円買っ…