チャアーハン

開発ノートです。/エンベデッドテクニカルエンジニア他/Node.js大好き

チャアーハン

開発ノートです。/エンベデッドテクニカルエンジニア他/Node.js大好き

マガジン

  • node.jsを利用したクローラーと表示サイトの構築

    Node.js + GCP(GAE/etc) + FirebaseAuthでクローリングと収集データ表示サイトを構築します。 試作はherokuにて行いました。 基礎的な知識はN予備校のwebアプリ講座で仕入れました。

最近の記事

node.jsを利用したクローラー作成(56)

日曜日にリリース。色々終わらなかったので、機能を大幅に削った。 主に不具合修正などやった。 service workerのfirebaseログアウト処理の不具合innerHtmlとして動的に生成しているjavascriptコードが正常に評価されてなかった。コード部分は改めてdomを取得してonclick=function()として設定し直した。 bootstrapでレスポンシブ化対応しようとしたけど、デザインがサイト内容にしっくりこなかったため、施策したが、搭載見送り。

    • node.jsを利用したクローラー作成(55) 公開サイト用のロゴ画像作成。 明日はログイン周りの不具合修正と資料整理やる。

      • node.jsを利用したクローラー作成(54)

        色々作業が終了したので、こっちの個人開発を再開するぞ!😤 GAEのホスティングでindex.htmlにCDN効かせる 一番アクセスされるだろう、index.htmlを静的ファイルとして提供して、GAEのCPU時間が使われることを減らす。index.html内で表示情報が変化する部分は、jsonファイルを動的に読み出して対応。バックグラウンドサービスではcronで定期的にjsonファイルを作成する。 GAEで静的ファイルを提供するには、app.yamlファイルへの指定が必

        • Qwicklabsで機械学習を学ぶ(1)

          GoogleのGCP学習サイトQwicklabsが月末まで無料。やろー。 上記の記事がありがたい。 申請したmailアドレスで1つのラボをクリアしないと無料サブスク状態にならなかった。 とりあえず、サイトに慣れるために「GCP の基礎クエストコース」(学習記事のセット)を受講。 まずは「Qwiklabs と Google Cloud Platform の概要」をクリアした。 courseraで基礎講座は一通りやったので特に真新しい情報はなかった…。 このままクエストクリア

        node.jsを利用したクローラー作成(56)

        マガジン

        • node.jsを利用したクローラーと表示サイトの構築
          50本

        記事

          CourseraでGCPの講座やる(終)

          GCPの有料講座が1ヶ月無料とのことなのでよっしゃ~やるぞ! とりあえずArchitecting with Google Cloud Platformの1週目何とかクリア。 ・GCPの各サービスの紹介と簡単な操作 ・コース全体ではインフラとか運用、GCPでのシステム構築寄りの内容 ・実操作の課題があるけど、学習用のGCPアカウントが発行されるのでお金を気にせず実際のCloud Consoleで実行と確認ができるのが大変良かった 動画学習の後にこまめに小テストがある。 使

          CourseraでGCPの講座やる(終)

          node.jsを利用したクローラー作成(53) 古い収集データを自動削除する処理に対応。 ・cloud storageのlifecycle設定でファイル追加時からの経過時間で自動削除する。

          node.jsを利用したクローラー作成(53) 古い収集データを自動削除する処理に対応。 ・cloud storageのlifecycle設定でファイル追加時からの経過時間で自動削除する。

          node.jsを利用したクローラー作成(52)

          若干やる気を失ったけど、部屋掃除しまくったら治る。不思議! クローラーの新設計移行はちょっと時間かかりそうなので一旦保留。 収集済みのデータがちょっとおかしかったので正規化を行った。 やったこと・cheerioで出力したhtmlにて日本語が実体参照文字になっていたデータを全て修正 ・収集済みデータ内の外部リンク、hrefの内容がおかしくなっていたので全データ修正 ・cloud storageの古いbuscketを削除 ・収集済みデータ量が15G超えてたので、cloudsto

          node.jsを利用したクローラー作成(52)

          cheerioでの日本語出力

          cheerioでparseしたデータをhtmlを出力する際には.html()を使うが、デフォルトだと日本語が実体参照文字になってしまう。 .html()の第2引数にdecodeEntities:falseを与えればそのまま出力できる。 こんな感じ。 'use strict';const fs = require('fs').promises;const cheerio = require('cheerio');async function main() { const h

          cheerioでの日本語出力

          node.jsを利用したクローラー作成(51)

          システム構成変更の試作など。 合わせて新規リトライアルゴリズムの実装した。 テストはまだ。CloudFunction用の検証環境も微妙に未整備。 やることは多い😅 新設計ではCloudTasks経由でCloudFunctionを呼び出すが、POST method で呼び出したCloudFunctionのreq.bodyにデータが入ってなくて、中々ハマった。 結局Task作成時に正しくcontent-type設定したら取れるようになった。 こんな感じ。(note用に整形したの

          node.jsを利用したクローラー作成(51)

          node.jsを利用したクローラー作成(50)

          GAEのクローラー不具合の調査を行ったが、結論としては24時間起動しているクローラーはGAEだと(1インスタンス運用の場合)突発的なインスタンス再起動に対処できず、取りこぼしが発生した。そのため、backendのシステムの構成を変更しCloud Scheduler + Cloud Tasks + CloudFunctionsで実現することにする。 まずは、各サービス間の連携とTasksのリトライ処理の検証辺りから作っていく。それらが確認できたら実処理部分を移植していく感じ。

          node.jsを利用したクローラー作成(50)

          node.jsを利用したクローラー作成(49)

          GAEで発生してるエラーの分類と大まかな対処方法の検討。 対策までは出来なかった。タケノコ掘りやったせいで進捗が悪い。 たけのこの刺し身はそんなにうまくもなかった。 その他調べたこと・GAEインスタンスのhealth checkでNG出されて再起動してるのかなと思ったけどhealth checkはflexible環境のみで行われてるっぽい。フーム。 GAEのドキュメント端から読んでくしかないかな。

          node.jsを利用したクローラー作成(49)

          node.jsを利用したクローラー作成(48)

          体調悪くて、寝たり起きたりデータ分析したり。😷 やっとこ分析完了。慣れてないからひどく時間がかかる。 前回修正時のリトライアルゴリズムはわりと上手く行ってた。 あとは性能を上げる修正を検討。検討して設計完了。 実装しようと思ったけど、GAEのエラーログで対処必要な不具合多いことに気づく。そちらを先にやることに…。 データ解析とアルゴリズム変更だけで済むかと思ったけど、思ったよりやることが増えてしまった。 調べたことutf-8のcsvデータをexcelで開くと文字化けする。

          node.jsを利用したクローラー作成(48)

          node.jsを利用したクローラー作成(47)

          GAEでポツポツ発生していた429エラーの対処。 根本的な発生原因がいまいち分からんが、幾つかの処置を決めた。 原因調査1.なんかしらのquotaが上限に達した 1.1 instance当たりの時間辺りのリクエスト最大数に達している 2.instance立ち上がり時にまれによくある 3.リクエストがキュー内に入って10秒以内で処理されない場合に発生 以下の記事を参考。 CGPコンソールで色々調査したが、quotaに引っかかってる感じはない。 また、アクセスが集中しないよ

          node.jsを利用したクローラー作成(47)

          node.jsを利用したクローラー作成(46)

          ゲーム製作一段落ついたので、こっちを再開。 とりあえず開発環境開いたら…未コミットファイル56件…。 これは…ヤバい!😨 せめてコミットしてから次のプロジェクト作業してくれ。 とりあえず見なかったことにしてすべてコミットした…。 …あとで破滅するかも。 クローラー本体側じゃなくて、 表示サイトのほうだからきっと影響は無いはずだ…。たぶん。 やったこと・やることリストを整理、version振り。なんとなくgithub projectの方もメンテ。この進め方は、自分にあってる

          node.jsを利用したクローラー作成(46)

          体調悪し。ゲームの方簡単な更新しただけ。 体調悪いときはしょうがない。 寝よう。

          体調悪し。ゲームの方簡単な更新しただけ。 体調悪いときはしょうがない。 寝よう。

          細かい作業やった。 引き続き4月の方針検討中。

          細かい作業やった。 引き続き4月の方針検討中。