GAミント至上主義

コストにうるさいWEBアプリ開発者のブログ。最近はPython, Vue.js, Kubernetesがメイン@株式会社ビズオーシャン。https://github.com/uyamazak/

早速App Engineのmanaged SSLを有効化してみる

Let's Encryptから大きくなったSSL自動化の流れから、いつか来るだろうと思ってたのがついに来た。さっそく有効にした。cloudplatform.googleblog.com既存のプロジェクトはCloud Consoleで設定が必要。簡単だった。証明書は思っていた通りLet's Encrypt発行…

Raspberry Piで既存のコードを利用して複数のLEDチカチカさせたり、ブザーを鳴らしたりする

研究開発という建前で経費でRaspberry pi 3を買った。いろいろ揃えるのが面倒なので下記のセットを購入。kksmart Raspberry Pi 3 Model B ラズベリーパイ 3 モデル B コンプリートスターターキット 16GB (class 10)出版社/メーカー: kksmartメディア: エレク…

pythonのslackbotを使ってJSONを整形するボットを作る

新しく入ってきた人にPythonでSlack上の会話を翻訳するbotを作るにあたり、まずは自分でも作ってみた。yfp5521.hatenablog.com 使ったライブラリはこれ。普通にpipで入れられてすぐ使える。 GitHub - lins05/slackbot: A chat bot for Slack (https://slack.…

新しく入ってきた人にLinux、vim、Dockerなど開発環境を叩き込む1週間

詳しくは本人のブログだけど yfp5521.hatenablog.com 大きめのSlerに1年ちょっといた人がビズオーシャンに入ってきてくれた。 bizocean本体はクラウドではなく、データーセンターにあったり、CentOS6だったりPHPだったり、いろいろと退屈なので、私がoceanus…

scikit-learnを使ってナイーブベイズでお問合せ分類するまでの流れ

bizoceanのお問合せを自動で分類して、定型文で済むやつは送信前に出して、サポートコストの削減とともにユーザーがすぐ問題を解決できるようにしようと思い、まずはナイーブベイズを試してみる。環境は、Dockerで動かしたJupyterと、Python3.6とsklearn等を…

日本語の分かち書きにGoogle Cloud Natural Language APIを使う

日本語の文章を、検索用のデータにしたり、機械学習などする際に必須になる分かち書き。これまではMecabを使ってたけど、インストールが必要になり、辞書も変えたりすると結構大変。そこで、Google Cloud Natural Language APIを使ってみることにした。cloud…

Google Data StudioのためにMySQLのENGINE=MEMORYの調査をした

昨日書いたData Studio(以下DS)の記事で問題になっていたBigQuery(以下BQ)の割り当てエラー解消のため、専用のMySQLを立てることにした。メモリに乗せたテーブルで楽勝やろ、と内心思っていたが、そう簡単にはいかなかった。PostgreSQLではなく、MySQLに…

Google Cloud SQLでクエリーキャッシュを有効化する

Cloud SQL(MySQL)では、デフォルトでクエリ-キャッシュは無効化されており、countを何回たたいても遅いので有効化したかった。ブラウザ上でフラグの追加をするとなぜか出来ないので、コマンドライン上でやる。下記コマンドを実行。再起動が必要なので注意と…

Google Cloud SQLでCSVインポートをコマンドでできない問題

Cloud SQLをデータ分析の一時テーブル的に使おうとしているけど、ブラウザ上のCloud Consoleではうまくいくのに、自分のマシンからgcloudコマンドでやるとエラーが連発する。WEBブラウザ上は下記のような画面で、選択時に必要な権限を付加するとか、CSVなの…

Google Data Studioでbizoceanのセグメント別に会員数を表示

データ活用プロジェクトoceanusの一環で、営業さん等が会員データを手早く、安全に確認できるツールを作った。データを準備をしたのは私だけど、Data Stuidoのレポートを作ったのは私ではない。6月入社のmasui(仮)さんだ。 真ん中に表示されているようなチェ…

BigQuery(Legacy SQL)で年齢を5歳刻みにして取得する

Cloud Datastudioで年代別に処理をする際、下記のように年齢を5刻みのにして出しているのがあって、もっと短くしたくなったのでやってみた。 SELECT case when age>= 10 and age < 15 then '10-14' when age>= 15 and age < 20 then '15-19' when age>= 20 a…

2017/8/16 GCP HTTP Load Balancerがしばらく502を返し続けた問題

朝起きたらoceanusの死活監視のメールがきてた。日本時間で8/16 1:18から4:29。いつものBigQueryが落ちてたのかと思ってログを見たけど、アプリケーション側では目立ったエラーが見当たらなかった。エラー時のレスポンスは502と下記内容。 <html><head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>502 Server Error</title></meta></head></html>…

GCP公式アイコンを使って資料を作る

自社データの収集活用プロジェクトのoceanusで、データスタジオを使い始めたり、複雑になってきたので全体図を書き直した。アイコンや矢印は公式のGoogleスライド形式のアイコンがあったので、そちらからコピーしてGoogle図形描画で作成。普通にコピペで使え…

AWSかGCPか悩んだら時の判断基準は新規か既存か

私の中では下記が一番の判断基準かなと思った。 新規プロジェクトだったらGCP既存プロジェクトだったらAWS 最近はGCPもPostgoreSQLに対応したりしてるけど、すべてのサービスがGoogle内で使う前提なので、種類は限られている。AWSはサービス数を見ればわかる…

会社の研修でシリコンバレー&サンフランシスコ行ってきた 日本ヤバい

株式会社ビズオーシャンで、2017年6月下旬に4泊6日で社長賞?的なシリコンバレー研修に4人+社長で行ってきたので、思ったことなどをメモ。 一言で言うと 日本ヤバい 日程など 4泊6日 日曜日午後に出発して金曜午後に帰ってきた。飛行機は話題のUNITED。帰…

Google Cloud Storageにプロジェクトのディレクトリをまるごとバックアップする

gitはバックアップではないとどこかで聞いたのが印象的で、いつかやろうと思ってたのをやった。たしかにパスワードとか環境変数もろもろはgitに入れていないので、開発サーバーが死んだときは大変面倒なことになってしまう。今のところ、GCPで済ましているの…

Google Clouc Load Balancing+Let's EncryptのSSL証明書更新を完全自動化

先日書いたGoogle App Engineに引き続き、GKEと一緒にメインで使っているGoogle Clouc Load BalancingのSSL証明書更新も完全自動化するスクリプトを書いた。uyamazak.hatenablog.com github.comGAEの方ではやらなかったけど、LBの方は一つの証明書で複数ドメ…

GAEのSSL証明書更新をLet’s Encryptで完全自動化する

追記 2017/7/4 githubにうp github.com 先週は会社の社長賞研修でサンフランシスコ、シリコンバレーに行ってきて書きたいことは山ほどあるけど、忘れてしまいそうな作業メモ。研修中に証明書の期限が切れてしまい、リモートで更新するのが非常にストレスだ…

Google Cloud Pub/SubのPythonクライアントがメモリリークするので調査して解決?

要約 Google Pub/Subクライアントを使い、ずっと動かし続けてたらメモリリークが見つかった 調査したらクライアント自体のバグか仕様だった。そもそも動かし続けるように作られてない multiprocessingのProcessを使い、別プロセスで動かし、メッセージを一定…

Dockerのコンテナ数が増えてきたのでdocker composeを導入した

自社の低予算ビッグデータ基盤oceanusのローカル環境での起動をdocker-composeを使ってできるようにした。GitHub - uyamazak/oceanus: Save all data to Google BigQuery. Fast and row cost using Docker and Kubernetes on GCPこれまでは、それぞれのコン…

新しい技術の習得がつらい人とつらくない人の違いを考える

一応、WEB系エンジニア的な仕事をし始めて9年ぐらいになる。よく周りの人にそういう仕事をしていると話をすると「新しい技術についていくのは大変でしょ?」と言われるし、そういう仕事をしている人の口から聞こえてくることもある。でも個人的には、全然つ…

東銀座でビズオーシャン勉強会参加者募集 Dockerとかビッグデータとか

ビズオーシャンで技術力向上と伝える力の強化のために社外の人も交えた勉強会をやりたいと思っています。希望者はコメントください。 場所 株式会社ビズオーシャン〒104-0045 東京都中央区築地4丁目1−17 銀座大野ビル8階「混ざる」が自己成長の鍵!株式…

Django&Python3で一時ディレクトリだけで複数ファイルのZIP圧縮を済ませる

Djangoでフォームで受け取った複数のファイルを、パスワード付きZIPで固めてmodelに保存したかった。Pythonの標準モジュールzipfileではpass付きを展開はできても、作成はできないのでpyminizipを使う。ファイル名と、中身を別々に渡せれば一時ファイルでも…

mastodonのアップデート時にrails assets:precompileが、Compiling webpacker assets で止まる

フルGCPで運用している社内用インスタンス( http://mstdn.bizocean.co.jp )でオリジナルイラストができたのでアップデートしようとしたら、 Binary found at /mastodon/node_modules/node-sass/vendor/linux_musl-x64-48/binding.node Testing binary Binar…

Google App Engine + Django +Cloud SQLで社内用短縮URLサービスを作った

データ基盤のoceanusで、Google App Engineを使った短縮URLサービスを追加した。脳内でもんもんと設計をし、手を動かし始めてから完成まで3日ぐらい。ソースコードは下記。github.com公開しているけど、短縮URLの作成画面は社内の人間のみで、ログイン必須。…

Mastodonで/public以下の静的ファイルの画像やjs等が表示されない時

GCPで動かしている自社社員用インスタンス( https://mstdn.bizocean.co.jp )のバージョンアップ時にはまった nginx等を使わずrailsのサーバーで画像も返すときは、下記の環境変数を追加する必要があった。 RAILS_SERVE_STATIC_FILES "true" railsのサーバー…

gcloudコマンドで複数の設定の切り替え

いろいろ作ってると、GCPのプロジェクトが増えてきて、切り替えとかが面倒になる。 gcloud init を打つと、設定ファイル(configuration)が出てきて、切り替えと再認証(Switch to and re-initialize existing configuration)は出来るけど、切り替えだけの…

Google Container Engineで自社用Mastodon立てた

いろいろと勉強になりそうなので勢いで立てた。詳細は今度記事にする。Mastodonを構築、運用できてるってだけである程度の技術アピールになる気もするので、エンジニアがいる会社のブランディングなんかにも使えるのではないかと思った。mstdn.bizocean.co.j…

Googleアナリティクス プレミアム(360)のコストが高すぎるなら自分で作ればいい

jsタグを貼るだけで無料で高度なアクセス解析ができるGoogle Analyticsはもはやデファクトスタンダード。でも、個人を特定できるような生ログは無料版では手に入れられず、自社の会員IDと結びつけたり、特定の人の行動を追ったりすることは出来ない。そこで…

2017年4月版 oceanusサーバー構成図

自社で開発・運用しているビッグデータ基盤oceanusがいろいろ変わったので構成図をアップデートした。 前回と比べて一番大きいのはGOPUBサーバーの追加。一人でやってるのに大規模な感じになってきたけど、GKEで動かしているのでデプロイや運用は楽ちん。git…