golangの日記

Go言語を中心にプログラミングについてのブログ

TypeScript enum の使い方

TypeScript enum の使いかた

TypeScript オブジェクト(連想配列)

TypeScript オブジェクト(連想配列)について

TypeScript jest exportしていない関数・変数のテスト

エクスポートしていない関数・変数 や class のプライベート関数・変数のテスト方法

TypeScript jestを使ったユニットテスト

jestを使ったTypeScriptの単体テスト GitHub * https://github.com/facebook/jest ドキュメント * https://jestjs.io/ja/ 必要なnpmパッケージのインストール $ yarn add --dev typescript jest ts-jest ts-node @types/jest @types/node or $ npm i --save-…

Node.jsでローカルのJSONファイルの読み込み

Node.jsでローカルにあるJSONファイルを読み込むのに fs を使わずに require でも読み込めるという話

Youtube-DLがどのように動画URLを抽出しているのかソースコードを読んでみた

Youtube-DL https://youtube-dl.org/ https://yt-dl.org/ 「YouTube動画ダウンローダーのリポジトリをGitHubが削除、音楽業界団体からの要請に基づき」とのことで、GitHubのyoutube-dlリポジトリには利用できませんとのメッセージが表示してある。どうやらバ…

journalctlコマンドでログ(ジャーナル)の削除

ディスク容量が少なくなってきたので、ログでも削除してみようと確認したところ3.7Gもあった。 (記憶が間違っていなければ Ubuntu 14.04 の頃から削除してない。現在の使ってるバージョンは20.04) 以下のオプションでログのディスク使用量を確認できる。 $ j…

VMWareで多ボタンマウスを機能させる

VMWareで「進む・戻る」などがある多ボタンなマウスを使えるようにする。 検証は Ubuntu 20.04.1 cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"

WSL2の導入

窓の杜の記事 「WSL 2」が「Windows 10 バージョン 1903/1909」でも利用可能に ~Microsoftが旧OSに移植 で Windows10 の更新プログラム「KB4566116」に更新すると WSL2 が使用可能ということで、さっそくWindowsをアップデートしてWSL2を入れてみた(VMWare…

Go言語 httpリクエストでクッキーを使ったログイン

はてなブログにHTTPリクエストでログイン(OAuth認証やBasic認証ではなくクッキーを使ったやつ)

Hack The Box チュートリアルまでやってみた

Hack The Box は、VPNを通してペネトレーションテストができるサービスのようで、アカウントを作成後の最初のチュートリアルではWindowsのサーバーに管理者権限で侵入する体験ができる。

Go言語で関数が同じかどうか比較する

定義した関数やそれを変数に代入したときに同じ関数かどうかの比較

Go言語 Wi-Fi接続確認

Go言語で Windows PC が Wi-Fi 接続されているか確認する。

ゴルーチンを使ってシグナルを受け取ると signal: urgent I/O condition が飛んでくる

Go 1.14 からゴルーチンの切り替えにシグナル(SIGURG)が使われるようになったらしく、Linuxではシグナルを受け取る処理で signal: urgent I/O condition が飛んでくる。 blog.lufia.org

Go言語(golang) 構造体やマップのマージ

構造体やマップをマージするためのGo言語のパッケージ mergo の使い方。

Go言語製タイル型ウィンドウマネージャ Wingo を試してみた

「すべての操作をキーボードのショートカットキーで完結したい」 そういう沼にハマっているので、タイル型のウィンドウマネージャについて調べていたところ、 Go言語で書かれているウィンドウマネージャ Wingo を見つけたので試してみた。

happy hacking keyboard を一年使ってみた感想

HHKB 公式サイト https://happyhackingkb.com/ HHKB のキー配列 https://www.pfu.fujitsu.com/hhkeyboard/leaflet/hairetu.html

Ubuntuキーボードレイアウト変更手順

Ubuntuのキーボードレイアウト変更手順 Ubuntuのバージョン $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

Go言語(golang) テンプレートの使い方

text/template https://golang.org/pkg/text/template/ html/template https://golang.org/pkg/html/template/ text/template と html/template の違いは以下の通り To generate HTML output, see package html/template, which has the same interface as t…

脆弱性スキャンツール Vuls を使ってみた

Go言語で書かれている脆弱性スキャンツール Vuls(バルス) を Ubuntu で試してみた。 vuls https://vuls.io/ja/ https://github.com/future-architect/vuls go-cve-dictionary https://github.com/kotakanbe/go-cve-dictionary CVEデータをNVDやJVNから取得し…

TinyTinyRSS 試してみた

TinyTinyRSS は、オープンソース(tt-rssリポジトリ)で開発されているサーバー型RSSリーター docker-compose で簡単にビルドすことができる。

Go言語製RSSリーダー Miniflux 2 をUbuntuで試してみた

Go言語で書かれているRSSリーダー Miniflux 2 を Ubuntu18.04 にインストールしてみました。 GitHubリポジトリ https://github.com/miniflux/miniflux インストール手順 https://miniflux.app/docs/installation.html

Go言語(golang) net/htmlを使ったHTMLのパース

net/htmlのドキュメントは以下 https://pkg.go.dev/golang.org/x/net/html?tab=doc goquery(goでjQueryライクにHTMLを扱えるパッケージ) https://github.com/PuerkitoBio/goquery https://pkg.go.dev/github.com/PuerkitoBio/goquery?tab=doc 内部的には net…

Go言語(golang) type で定義したスライスのインデックス

typeで実態が何らかのスライス型を定義してインデックスを使いたい。 以下ようにレシーバがポインタだと does not support indexing になる。 package main type A []string func (a A) Get(i int) string { return a[i] } func (a *A) Add(s string) { *a =…

JSONをもとにGo言語の構造体を自動生成できるjson-to-go.js

encoding/jsonでJSONをGo言語の構造体にマッピングするには 当然、そのデータのプロパティ名と値の型を構造体で定義しておく必要がある。 大規模なJSONの場合だとその作業は大変なのでjson-to-goを使って構造体の定義を自動生成する。

CSSのposition:stickyの使い方

CSS

概要: position:sticky を指定した要素の位置から親要素の高さや幅分、その要素を固定(fixed) できる。 JavaScript の scrollイベント を使って要素を固定するという動作を CSS で置き換えられる。

JavaScriptのクラスは無名/匿名クラスにできるし即時newできる

無名クラス let Hello = class { constructor(name) { this.name = name; } hello() { console.log('hello', this.name); } } let h = new Hello('Tanaka'); h.hello(); // hello Tanaka 無名クラスを即時 new する。コンストラクタが呼ばれるだけ。 new cla…

vscode TypeScript インポートのソートを簡易的に阻止する

VSCode で TypeScript を書くと保存したときに自動でフォーマッターが走る。 import の順序がセンシティブな場合はソートしてもらっては困る。 vscode のプラグイン入れてとか npm でライブラリ入れてとか settings.json でとか tslint.json とかじゃなくて、…

TypeScript classで型を限定したオブジェクト

やりたいこと。 TypeScript で型を限定したオブジェクトを作りたい。それにメソッドをつけたい。 ただのクラスはオブジェクトとして扱えない。コンパイルエラー class StringObject {} let o = new StringObject(); o.foo = 'value-1'; // エラー o.bar = 'v…

webpack devtool ソースマップ

ソースマップは TypeScript など、トランスパイル後と前のコードの内容を紐付けしてデバッグしやするするもの。 トランスパイルした後のコードでエラーの場所を示されても、それが元のコードのどの部分なのかが分からないと開発しづらい。 なので、開発中やn…