タグ

ブックマーク / efcl.info (12)

  • Kagi Searchをメインの検索エンジンとして使っている

    最近はGoogleではなくKagi Searchをメインの検索エンジンとして使っています。 Kagi Searchは$108/year($10/month)の有料の検索エンジンです。 広告モデルではない検索エンジンなので、有料のサブスクリプションモデルとなっています。 Plan Types | Kagi’s Docs いくつかプランがあり、検索し放題のProfessionalプランが$10/monthです Ultimate Plan ($25/month)だと外部のOpenAIのGPT 4とかClaude 3との連携とかも入ってきます 月に1-2万回ぐらいは検索することを考えると、 (108 / (10000 * 12)) * 150 で大体1検索が0.1円ぐらいのイメージですが、こちらもKagiのLLM機能は利用できるので、実質もう少しコスパは良いと思います。 検索ソースにはGoogle

    Kagi Searchをメインの検索エンジンとして使っている
    asyst
    asyst 2024/03/15
  • 転職時に無職になる手続きをインターネットでする

    転職する際に空白期間がない場合は会社側で手続きがほとんど終わりますが、一旦無職を挟んで転職する場合は、保険証、年金、iDeCoなどの手続きが必要になります。 今回の転職活動にあたって、 この手続きをするのに市役所やプリンターを使いたくないので、インターネットだけで完結できるかにトライしました。 Open Job Letterを公開しました | Web Scratch 手続きの前提条件 会社や個人によって前提が異なるので、ここでは次の前提で記事を書いています。 会社員: 厚生年金 保険証: [ITS]関東ITソフトウェア健康保険組合 iDeCo: 個人型確定拠出年金 退職して次の会社が決まってない場合は、保険証や年金などの手続きが必要になります。 保険証: 国民健康保険か任意継続かは好きな方で 今回は任意継続を選択 年金: 厚生年金から国民年金第1号へ切り替える iDeCo: 「加入者被保険

    転職時に無職になる手続きをインターネットでする
    asyst
    asyst 2023/12/24
  • Google DomainsからCloudflare registrarにドメインとメールを移管した

    Google DomainsがSquarespaceに買収されるので、持っているドメインとカスタムドメインのメールアドレスをCloudflare Registrarに移管した。 Cloudflare Registrar · Cloudflare Registrar docs 基的にはCloudflare Registrarに表示される手順でやっておけば、問題は起きなかったので、よくできてると思った。 次のような手順で順番に移管していたので、移管時のメモ。 手順 Google Domainsの移行準備 Cloudflareのname serverを使うように移行する ドメインの移管 メールの転送設定 Google Domainsの移行準備 移管する前に、Google Domainに登録しているドメインの設定を変更しておく。 それぞれONになってると移管時に問題が発生する。 DNSSECを無

    Google DomainsからCloudflare registrarにドメインとメールを移管した
    asyst
    asyst 2023/10/01
  • [JavaScript] URLを文字列結合で組み立てないために、url-cheatsheetを作った

    [JavaScript] URLを文字列結合で組み立てないために、url-cheatsheetを作った URLを文字列結合で組み立てると色々問題が起きやすいので、それを避けるためにURL APIやURLSearchParams APIでURLを組み立てるパターンをまとめたチートシートを作りました。 azu/url-cheatsheet: URL manipulation cheatsheet for JavaScript URLにユーザーが入力した文字列を含めるときはencodeURIComponentでエスケープする URLはプレーンな文字列ではなく構造化された文字列(文字の並びに意味がある文字列)として扱わないと、さまざまな問題を抱えやすいです。 たとえば、次のように文字列結合でURLを組み立てるとパストラバーサルの問題があります。 name に ../../adminのような文字列が

    [JavaScript] URLを文字列結合で組み立てないために、url-cheatsheetを作った
    asyst
    asyst 2022/12/16
  • 音声入力でメモを書けるウェブアプリを書いた、x-callbackを使ったアプリケーション連携

    voicodという音声入力でメモを書けるシンプルなウェブアプリケーションを書きました。 音声入力でメモができるシンプルなアプリケーションを書きました。https://t.co/EHSKnNKNaL x-callbackを使ってショートカット.app 等と連携すれば、入力内容をNotionに保存したりできます。 Note: SpeechRecognitionに対応したブラウザ(ChromeやSafari)が必要 Source: https://t.co/NnzXVjlGnF pic.twitter.com/yzoA3VIzzl — azu (@azu_re) February 10, 2022 SpeechRecognitionというウェブブラウザで音声認識をするAPIを使っているので、このAPIに対応しているブラウザが必要になります。 具体的にはGoogle ChromeやSafariなど

    音声入力でメモを書けるウェブアプリを書いた、x-callbackを使ったアプリケーション連携
    asyst
    asyst 2022/02/11
  • 電子ペーパを使ったダッシュボードを設置した

    Likebook Mars 7.8(電子ペーパ) + Dashbling + Fully Kiosk Browserで、電子ペーパを使ったダッシュボードを作って動かすようにしたメモです。 電子ペーパーのダッシュボードを壁に設置した。 likebook mars + Fully kiosk Browser + dashbling. 結局材料みつけられなかったので、 余ってたエレコムのケーブル結束クリップで貼り付けた。 壁にマスキングテープ⇨梱包テープ⇨結束クリップで固定してるので簡単に剥がせる。 pic.twitter.com/LpLARCP3at — azu (@azu_re) February 2, 2021 最近Likebook Marsをあまり使ってなかったので物理的?なダッシュボードとして使うことにしてみました。 きっかけはDashblingの作者がKindleを使ったダッシュボー

    電子ペーパを使ったダッシュボードを設置した
    asyst
    asyst 2021/09/27
  • 見ているサイト上に露出している機密情報(APIトークン、IPアドレスなど)を見つけるブラウザ拡張を作りました

    見ているサイト上に露出している機密情報(APIトークン、IPアドレスなど)を見つけるブラウザ拡張を作りました SecretlintというAPIトークンなどの機密情報がファイル内に含まれているかをチェックできるツールを書いています。 Secretlintはコマンドラインツールとして動くので、主にCIやGitのpre-commit hookを利用して、リポジトリに機密情報が入るのを防止できます。 SecretlintAPIトークンや秘密鍵などのコミットを防止する | Web Scratch 一方で、実際のウェブサービスなどは機密情報がファイルにハードコードされているわけではなく(Secrelint自体がこういうハードコードを防ぐツールです)、環境変数やDatabaseに保存していると思います。 このような場合にも、コードのミスなどによって公開するべきではない情報(秘密鍵、APIトークン、Sl

    見ているサイト上に露出している機密情報(APIトークン、IPアドレスなど)を見つけるブラウザ拡張を作りました
    asyst
    asyst 2021/08/20
  • GitHubで管理する個人向けブックマークシステムを書いた

    GitHubにブックマークをコミットして管理できるはてなブックマークみたいなブックマークシステムを書きました。 詳しいモチベーションなどについては次のスライドで発表しています。 スライド: ブックマーク管理システム: 動くアプリをとにかく早く安く作ろう はてなブックマークのAPIが2019/5/31ぐらいエラーを返すようになって困ったので自分用のブックマークの仕組みを突貫で作りました。 (はてなブックマーク APIは2019/6/3には直ってました。) 逆にじっくり開発していくアプリについては次のスライドで話しています。 スライド: 考えながらクライアントサイドのウェブアプリケーションを作る話 azu/asocial-bookmark: Personal Bookmark System. socialじゃないのでasocial bookmarkです。 特に運用の費用的なコストはゼロにしたか

    GitHubで管理する個人向けブックマークシステムを書いた
    asyst
    asyst 2019/06/06
  • ページ上でずっと動いているsetTimeout、setInterval、requestAnimationFrameを見つけてパフォーマンス改善する

    ページ上でずっと動いているsetTimeout、setInterval、requestAnimationFrameを見つけてパフォーマンス改善する 複雑なウェブアプリケーションになってくると、1つのページで複数のTimerなどを回すことがあります。 例えば、Twitterのようなアプリならば、ポーリングで更新するためにsetInvervalのようなタイマーを回します。 また、ゲームなどCanvasで描画を行うアプリケーションならば、メインループをrequestAnimationFrameで回します。 このように色々なタイマー系がありますが、アプリが多機能になっていくと色々なタイマーが同時に動くようになっていきます。 特に問題がなりやすいのが表示中だけタイマーを回すコンポーネントです。 よくあるのが次のようなmount時にtimerを開始して、unmount時にtimerを停止するコンポーネ

    ページ上でずっと動いているsetTimeout、setInterval、requestAnimationFrameを見つけてパフォーマンス改善する
    asyst
    asyst 2017/12/07
  • kuromoji.jsで形態素解析した結果とテキストの関係をビジュアライズする

    azu/text-map-kuromoji: テキストを形態素解析した結果とテキストの関係をビジュアライズするエディタというツールを作った話。 くだけた表現を高精度に解析するための正規化ルール自動生成手法という論文誌では、「ヵゎぃぃ」,「ゎた Uゎ」みたいな普通の形態素解析では未知語として検出されるものをどうやって正規化していくかという話が書かれていました。 これを読んでいて面白かったのは形態素解析をした結果の未知語となった部分と穴埋め的にパターンを作って、そのパターンにマッチする同じようなテキストを探すというアプローチでした。 プログラミング言語と違って、大抵の自然言語パーサはパース失敗ではなく、単なる未知な言葉として検出されます。 また、その未知な言葉は常に増えていて、さきほどのくだけた表現を高精度に解析するための正規化ルール自動生成手法によると手動では登録できない増加量らしいです。

    kuromoji.jsで形態素解析した結果とテキストの関係をビジュアライズする
    asyst
    asyst 2017/10/20
  • JavaScript Plugin Architectureというプラグイン設計について学ぶ無料の電子書籍を書いた

    JavaScript Plugin ArchitectureというJavaScriptのプラグイン設計についての電子書籍を書きました。 この書籍はJavaScriptのライブラリやツールにおけるプラグインアーキテクチャについて見ていく事を目的としたものです。 以下の形式で読むことができます。 Web版 PDF形式 ePub形式 Mobi形式 GitHub上にソースコードも公開されているでので直接Markdownファイルを読むこともできます。 MarkdownよりはWeb版の方が見やすいのでそちらをオススメします。 Twitterのハッシュタグは#js_plugin_book 更新情報はRSSやリリースノートから見ることができます。 v1.0.0 最初に書くと決めたプラグインアーキテクチャが揃ったので1.0.0としてリリースしました。 JavaScript Promiseのの時と同じく、継

    JavaScript Plugin Architectureというプラグイン設計について学ぶ無料の電子書籍を書いた
    asyst
    asyst 2016/06/07
  • JavaScript ASTを始める最初の一歩

    何かJavaScriptのソースコードを機械的にチェックするためのツールを作りたいという場合に、JavaScriptのASTというものを触る必要が出てくると思います。 この記事では、その取っ掛かりとなる案内を簡単にまとめたものです。 ASTとは AST(Abstract Syntax Tree)はコードをパースした抽象構文木のこと。 JavaScriptの場合はJavaScriptオブジェクト(JSON)として表現されます。 コード: { "range": [ 0, 10 ], "type": "Program", "body": [ { "range": [ 0, 10 ], "type": "VariableDeclaration", "declarations": [ { "range": [ 4, 9 ], "type": "VariableDeclarator", "id": {

    JavaScript ASTを始める最初の一歩
    asyst
    asyst 2016/03/06
  • 1