t_wの輪郭

Feedlyでフォローするボタン
jsJavaScriptJavaScriptランタイム
NodeGuiNext.jspuppeteerあれ『Cloudflare Workers それは Frontend / Node.js が CDN Edge Side まで拡張されるもの』Node.js APIExpressEJSデライト外部検索通類をデプロイしたあれクロールを途中から再開できるようにしたデライトクローラデライト外部検索通類 構成概要図デライト外部検索通類デライトでクローラーを回す『大規模なデータをJSON.stringifyとBlobを使って保存しようとしたら,ブラウザがエラーを出すときの対処法』一部機能をNode.jsからD言語に移行するnode_modulesJSON.stringifyに大きいオブジェクトを渡すと、JSONに変換してくれないNode.jsのBufferの比較『今年のうちに対応したい、Node.jsのBufferに潜む危険性』あれnode-fetchNode.jsのunittestライブラリAmplifyでNode.js 20を使う方法AmplifyでNext.js 14をビルドする方法WebContainerあれ2022年12月3日日記『Node.jsデザインパターン』got (https://github.com/sindresorhus/got)Passport.js『Node.jsでTwitterAPIのリクエストトークンを取得』『[Node.js] PM2を用いて本番環境でNodeJSアプリを動かす』iSH ShellでNode.jsをソースコードからビルドしてインストールあれ12時間経ちましたがiPad mini 6でのnode.jsのビルドが終わりません『Build Node.js from Source』『Node.jsでSitemap.xml(XML)を返すだけ』『【2023年4月版】Ubuntu に node.js と npm を入れたい(バージョン管理も)』あれPassport.js の基本的な利用方法 (Node.js & Express)『how much time do you cost to build nodejs?』『【Node.js Express】WebSocketを使ってみる( 全クライアントに一斉送信)』『nodemailerを使ってメール認証でのサインアップをNode.js express.jsで実装する。』nodejsで開発/本番の設定を切り替える『Node.js — Monday, July 8, 2024 Security Releases』Nodemailer『BunはNodeより速いのか? Misskeyで検証 | gihyo.jp』『node v22.7.x で TypeScript をそのまま実行する』nodejs-whisperRails vs Node.jsgetCallSite()『Node.jsで実行中の処理の行番号や関数名を取得する方法 令和最新版(Node.js v22.9.0以降のgetCallSite) - await wakeUp();』enableCompileCache()

あれ

2022/12/4 0:21:00

ブログのシステムをdenoに移行してみる。node modulesがなくせるらしいので。


Windowsにdenoをインストールした


denoでpostgresql serverに接続できん


import pg from 'npm:pg';して、deno run --allow-net --allow-readで実行したら行けたわ


new JSDOM('<html></html>');で以下のエラーになってしまう
error: Uncaught Error: Not implemented: isContext


import { DOMParser, Element } from "https://deno.land/x/deno_dom/deno-dom-wasm.ts";で行けたわ


const doc = new DOMParser().parseFromString(
    `<a href="https://example.com">link</a>`,
    "text/html",
);
console.log(doc.querySelector("a").href);
console.log(doc.querySelector("a").textContent);
undefined
link

え~~~~~~~~~~~~~


const doc = new DOMParser().parseFromString(
    `<a href="https://example.com">link</a>`,
    "text/html",
);
console.log(doc.querySelector("a").href);
console.log(doc.querySelector("a").getAttribute("href"));
console.log(doc.querySelector("a").textContent);
undefined
https://example.com
link

解決したけどやや不本意


ガチャガチャ触ってたらnode.jsで動かしてたクローラーがdenoで動くようになりました🎉


サーバーの方でもクローラーがdenoで動くようになりました🎉
node.jsを動かすpm2っていうのがあるんだけど、pm2を使ってdenoも動かすことができた

2022年12月3日日記

2022/12/4 0:05:00

 丸一日、iSH ShellにDenoをインストールするためのビルドに費やした。結果的にうまくいかなかった。そのうちリベンジしたい。
 一旦、iPadでウェブアプリ開発するのは諦めかも。
 AWS Cloud9も試したが、あまり使い心地が良くなかった。『iPadだけでCloud9開発環境を構築してみた話』に詳しい辛みが載っている。


 『t_wの輪郭』Node.jsからDenoに乗せ換える作業を始めた。手始めに、dlt_crawler.jsをDenoで動くようにした。
 サーバーサイドでdenoをどうやって動かすかだがPM2Denoを使えるらしいので、そのようにした。

未成功

ビルドで使うアレをインストールする
apk add make gcc g++

ディレクトリを移動 → tmp使わない方が良いかも
cd /tmp

versionを選んでGithubからレポジトリをダウンロード → solving deltasで止まってしまう
git clone --depth 1 --branch v18.12.1 https://github.com/nodejs/node

versionを選んでNode.jsのサイトからソースコードをダウンロード
wget https://nodejs.org/dist/v18.12.1/node-v18.12.1.tar.gz

ソースコードのtar.gzを解凍
tar -xf node-v18.12.1.tar.gz

tar.gzファイルを削除
rm node-v18.12.1.tar.gz

nodeのディレクトリに入る
cd node-v18.12.1

何やってるかよく知らないやつ
./configure

ビルド → 12時間待っても終わらないのでここであきらめてしまって止まっている
make -j4

ビルドしたbinaryをインストール(configureの設定を変更しなければ、/usr/local/bin/に送られるらしい)
make install

あれ

2022/12/3 6:06:00

 iPad mini 6iSH Shell上でNode.jsをビルドしようとしてる。
 apk add nodejsでNode.jsを入れると、npmの実行時にエラーが発生するので、「じゃあソースからビルドして入れてみようや」となったのだった。

 Node.jsをビルドしても無理だったらDenoをインストール(もしくはビルド)してみる。

あれ

2022/10/25 19:25:00

 User-Agentを一般のコンピュータに偽装してクロールする輩が来て気になったのだが、私が動かしてるデライトをクロールするクローラdlt_crawler.js)のUser-Agentは何になってるんだろう。Node.jsgotを使っているので、gotになっているはず……?

 Node.jsgotを使った際のUser-Agentgot (https://github.com/sindresorhus/got)となっていた。実際にサーバにgotを通してアクセスし、アクセスログを確認した

 gotのレポジトリでuser-agentと検索してみると、headersという引数でUser-Agentを設定できそうだ。

headers: {
'user-agent': undefined
}

 とりあえず、dlt_crawler.js by t_w(https://towasys.com/)としておこう。こちらUser-Agentが反映されていることをサーバにアクセスして確認済みだ。

 コードは以下のようになった。

response = await got(url, {
    headers: {
        'user-agent': 'dlt_crawler.js by t_w(https://towasys.com/)'
    } 
});


 というかrobot.txtをガン無視しているのでお行儀が悪い気がしてきた。さらっと調べたらデライトにrobot.txtは設定されていないっぽい……?じゃあいいか……いいのか?

2023年11月19日日記getStaticPropsgetServerSidePropsrevalidateするServerActionあれあれ2023年11月14日日記あれNext.jsで環境変数を使ってIP制限onnxに変換して量子化するコマンド『Next.js × AWS App Runner × AWS AppSyncで進めるクライアントファーストのWEB開発』Next.jsでサーバーレスSentence Embedding🦜️🔗 LangChain Next.js Starter Template2023年11月24日日記ServerSidePropsunstable_cacheServer Actionsあれあれ2023年11月17日日記next/headersNext.jsではStatic Generation(SSG)が推奨されているNext.jsで作りたいものNext.js Conf 2022AmplifyでNext.js 14をビルドする方法AmplifyへNext.js 14をデプロイするときに『unhandledRejection ReferenceError: Headers is not defined』と出るときの対策AWS AmplifyでGo言語とNext.jsから成るアプリをビルドするアレ『Implementing Web Sockets with Next.js and API Routes: A Guide | by Saad Iqbal Chaudhry | May, 2024 | Medium』RDB+Next.jsでSQLをリアクティブな感じで使う『Next.jsのSSRF脆弱性 CVE-2024-34351』import "server-only";あれ『[Next.js] 開発中のページを開発環境でのみ表示し、本番環境のビルドには含めないようにする』あれApp RouterNext.jsとAmplifyでcognitoの認証を実装『Let's create a next.js app with bun』『Next.js公式のMDXプラグインで、Markdownでページを作る機能を試してみた』Next.jsをAWS Amplifyで動かす『How can I cache something inside a variable in NextJS?』DevelopersIOがNuxt.jsからNext.jsに移行「2024年7月1日のリニューアルに伴い、フレームワークはNuxtからNextに変更されました。」Taint API『React Server Components の疑問を解き明かす - Speaker Deck』『Next.jsの考え方』『技術選定の失敗 2年間を振り返る TypeScript,Hono,Nest.js,React,GraphQL』『Next.js のページ遷移を全力で止める - Speaker Deck』あれNext.js 15『Docker + Next.jsにおける通常のMulti-Stage Buildとstandaloneのイメージサイズを比較する | For』output: 'standalone'『Next.jsのスタンドアロンモードでビルドしたイメージを Cloud Run へデプロイする』『Next.jsと比較しながらHotwireを理解するサイト: "Hotwire for Frontend Developers"』『Next.js App Router セキュリティ - Speaker Deck』あれNext.jsでDuckDBを使うときにnode-pre-gypでエラーになるときは、next.config.*のserverExternalPackagesにduckdbを追加すると直るserverExternalPackages『Next.jsの4つのキャッシュメカニズムについて』

Nodemailer

2022/4/22 9:47:00

Nodemailer is a module for Node.js applications to allow easy as cake email sending. The project got started back in 2010 when there was no sane option to send email messages, today it is the solution most Node.js users turn to by default.

【Node.js】Expressのreq.protocolが常にhttpになってしまう問題app.enable('trust proxy')trust proxyapp.enableあれあれあれ『時代はDeno、node_modulesとおさらばだ、Denoでexpressサーバーを立ち上げる』あれres.renderDeno 1.28.3ではExpressは動かない機能があるExpressでキャッシュを無効化する方法あれ『Node.jsでSitemap.xml(XML)を返すだけ』『【Express】静的HTMLファイルの表示(res.sendFile()、express.static())』Passport.js の基本的な利用方法 (Node.js & Express)express-ws『ExpressでWebSocketを使う方法』『【Node.js Express】WebSocketを使ってみる( 全クライアントに一斉送信)』express.staticres.sendFile『nodemailerを使ってメール認証でのサインアップをNode.js express.jsで実装する。』

デライト外部検索通類AWSデプロイした。↓のリンクから利用できる
http://ec2-52-193-108-6.ap-northeast-1.compute.amazonaws.com:8080/
 
デライトクローラが取得した1万9千の輪郭から検索できる

  • 1秒未満で検索が完了する
  • 10個までしか検索結果が表示されない
    • ページャー未実装
  • 検索結果に重複がある
    • 重複を削除する処理が未実装
  • 見た目が悪い
    • CSS未実装
      • node.jsで直接HTMLを吐き出しているため、複雑なフロントエンドを作るのは手間がかかる
        • テンプレートエンジンなどに乗り換えたい
  • 検索結果の並びがクロールされた順番になっている
    • ページランクで並び変える機能が未実装

あれ

2020/9/24 23:41:00

コマンドラインからデライトを検索できるところまでは来た
検索が一瞬で終わる
連想配列から単語をキーとしてURLを取ってくるだけなので早い
ただ、検索結果にURLしか表示されない
デライトクローラをメタデータだけでなくページ内の内容も保存するように改変する

デライトクローラの再開時に、ファイルに保存したメタデータを読み込むようにした
これでクロールを途中から再開できる
現時点では全メタデータを読み込む
メタデータの増加に合わせて、処理時間と消費メモリーが線形に増加する想定だ
こいつが膨大なデータを集めるまえに、よりかしこい処理方式を実装しなければならない

puppeteerデライト外部検索通類をデプロイしたあれクロールを途中から再開できるようにしたデライトクローラデライト外部検索通類 構成概要図デライト外部検索通類puppeteerでクロールする様子Windows停止するpuppeteer途中で止まるデライトの生HTMLファイル容量実現性検証ページメタ情報の容量野良クローラの推定容量『大規模なデータをJSON.stringifyとBlobを使って保存しようとしたら,ブラウザがエラーを出すときの対処法』一部機能をNode.jsからD言語に移行するクローラで得られるページ数ページのメタ情報だけを保存メタ情報入門自作検索エンジン桁数を一個減らしたいJSON.stringifyに大きいオブジェクトを渡すと、JSONに変換してくれない全輪郭の表題推定容量WSL2あれdockerだとpuppeteerがいい感じに動いているWSL2のalpine上でpuppeteerが動かない検索エンジンをブラウザエクステンションで実装するアイデア
手書きデータの画像化octpepper『ヘッドレスブラウザ+Puppeteerが使える「Cloudflare Workers Browser Rendering API」がオープンベータに』デライト外部検索通類をデプロイしたあれクロールを途中から再開できるようにしたデライト外部検索通類 構成概要図デライト外部検索通類デライトでクローラーを回すpuppeteerでクロールする様子Windows停止するあれconvert-svg-to-pngあれdockerだとpuppeteerがいい感じに動いているPuppeteerのようなブラウザ自動操作ツールをサーバ上で動かせばScrapboxへの書き込みを自動化できる。ただし、自分だけが使えるサービスになる。一旦はそれでいいかな。 公開されたサービスにして、広く利用してもらいたい気持ちがある。あれ