ブックマーク / zenn.dev/tenntenn (5)

  • Goのfmt.Printfの幅と精度は引数で指定できる

    幅と精度とは Goの標準ライブラリであるfmtパッケージでは、fmt.Printf関数やfmt.Sprintf関数など、書式を指定して表示や文字列を生成する関数が提供されています。Go1.19では、バイト列([]byte型)を生成するfmt.Appendf関数も追加されました。 書式の中では、%dや%sのようにverbを指定して、表示方法(文字列の組み立て方)を指定します。%2dや%2.3fのように、幅や精度を指定ができることはCのprintf関数と似た機能なのでよく知ってる方も多いでしょう[1]。 幅と精度を引数で指定する 幅と精度は、実は引数で指定できます。頑張ってfmt.Sprintf("%%%dd", width)のように書式文字列を生成する必要はありません。幅や精度に*と記述すると引数で値を指定できます。 たとえば、幅の場合は次のように書けます。

    Goのfmt.Printfの幅と精度は引数で指定できる
    toshikish
    toshikish 2022/08/28
  • 素のVimでGoのコードを書く

    はじめに 筆者はめんどくさがりなので、社会人になってしばらくするまで、大学の後輩のdotfilesをforkして使っていた。tmuxの設定もそのまま再利用してたので、設定ファイルに何が設定してあるかよく分かっていなかった。 就職するまでは、Emacsを使っていて、それなりに設定ファイルを成長させていた。しかし、就職するころになんとなく使い始めたVimがすっかり手になじみ、今も使い続けている。 Vimの設定も適当にネットから取ってきたものをパッチワークしたもので、自分が書いたといえる設定やスクリプトはほとんどなかった。それでも特に問題はなかったが、なんとなくVimが重くなって気がして、しかし改善方法が分からないので、パソコンを変えたタイミングで、すべてを捨てた。 記事は、筆者が素のVimでどのようにGoのコードを書いているかを説明する記事である。そのため、特に他者に同じ方法を勧める訳ではな

    素のVimでGoのコードを書く
    toshikish
    toshikish 2022/08/20
  • Goにおける型によってSQLインジェクションを防ぐ方法

    はじめに 2022年のセキュリティ・キャンプ全国大会に講師として参加しました。その際に、Goにおける脆弱性への対策はどうなっているのか調べました。この記事では、github.com/google/go-safeweb/safesqlがどのようにSQLインジェクションを防いでるのかについて解説します。 なお、@rungさんの文書を多いに参考にしております。また、セキュリティ・キャンプで用いた資料はこちらから閲覧できます。 SQLインジェクションとは? 独立行政法人情報処理推進機構(IPA)が公開している安全なウェブサイトの作り方を見ると、SQLインジェクションは以下のように説明されています。 データベースと連携したウェブアプリケーションの多くは、利用者からの入力情報を基にSQL文(データベースへの命令文)を組み立てています。ここで、SQL文の組み立て方法に問題がある場合、攻撃によってデータベ

    Goにおける型によってSQLインジェクションを防ぐ方法
    toshikish
    toshikish 2022/08/12
  • GoでオススメのWebフレームワークを聞かれたら

    なぜWebフレームワークが必要とするのか Webフレームワークを使った開発が当たり前であるプログラミング言語はたくさんあります。GoはどちらかというとWebフレームワークはいらないんじゃない?と言われることが多く、そう言われると初学者はいきなり難しいことをさせるなと思うかもしれません。 確かにフレームワークがあることでWebアプリが作りやすくなることがあるかもしれません。テンプレート通りに作れば作りたいものができるという体験はプログラミング言語を学び始めたばかりであれば重要です。フレームワークの枠に収まる開発であれば効果を発揮します。 しかし、「GoでオススメのWebフレームワークはありますか?」って聞かれる場合の多くは、Webアプリはフレームワークがないと開発できない、またはそうするのが当然だと思って質問している場合も多く見かけます。○○env系のツールと同様に、特に理由は無いけどそうい

    GoでオススメのWebフレームワークを聞かれたら
    toshikish
    toshikish 2021/06/26
  • Goでは○○envが不要になった理由(バージョンアップを怠ると損する理由)

    Goでは○○env系のツールは不要 複数バージョンの処理系を混在させるために、○○env系のツールが広く普及している言語はたくさんあります。しかし、すべての言語で必ずしも必要であるわけではないと筆者は考えています。いままで使っていた言語で○○env系のツールを使っていたため、特に深く考えずに他の言語でも利用しているということはあるでしょう。 Goでも○○env系のツールはいくつか存在します。しかし、筆者はGoにおいて複数バージョンのツールチェイン(コンパイラや標準ライブラリ)を混在させる必要があるのは稀でしょう。また、混在させる必要あったとしても公式で方法を提供しているため○○env系のツールは不要です。 むしろ、goenvを使っていてうまく動かない。PATHの設定がうまくいかないなどのトラブルをよく見かけます。(そんな方が検索に引っ掛けてくれることを祈っています)。 Goの後方互換性 G

    Goでは○○envが不要になった理由(バージョンアップを怠ると損する理由)
    toshikish
    toshikish 2021/06/26
  • 1