タグ

ブックマーク / qiita.com (145)

  • 【Go】公式ツール "eg" を使って効率的にGoのコードをリファクタリングする - Qiita

    はじめに こんにちは、ken です。お仕事では Go をよく書きます。 最近、Go の公式パッケージであるgolang.org/x/toolsを眺めていたら、なにやら有用そうなパッケージを見つけたので今回はそれについて書こうと思います。 それはegというリファクタリングツールです。 eg とは eg は、例ベースで Go コードをリファクタリングするためのツールです。このツールを使用することで、特定のコードパターンを別のコードに置き換えることができ、効率的にリファクタリングが行えます。 先ほど貼った公式ドキュメントに詳しい説明があるかと思いきや The eg command performs example-based refactoring. For documentation, run the command, or see Help in golang.org/x/tools/ref

    【Go】公式ツール "eg" を使って効率的にGoのコードをリファクタリングする - Qiita
  • ドキュメントを書かないことは「負債を生む」ということ - Qiita

    記事の要約 ドキュメントを書かない事は、企業やチームの「負債」になる ドキュメントを書かない事は、自身の学びや振り返りの「機会損失」になる そういう文化が根付く前に、負の連鎖を断ち切ろう! はじめに 世の中のプロジェクトには、ドキュメントが足りていない、と感じています。 でも残念な事に、ドキュメントをどうしても書きたい人は「ほとんどいない」と思います。 その一方で「ドキュメントを書いた方が良い」という事は、 何となく分かっている人も多いと思います。 やりたくない事をやらなければならないのは、嫌ですよね。 そんな気持ちは分かりますが、これを機に一度改めてみませんか。 何故なら、ドキュメントを書かない事はチームに「負債」を生むからです。 勤め人ならば少なからず一度でも、体験した事があると思います。 「どうして必要な過去の資料が無いんだ」って。 あるはずの歴史の一端がソースコードからしか分から

    ドキュメントを書かないことは「負債を生む」ということ - Qiita
  • 混沌を極めるWindowsのssh-agent事情 - Qiita

    どうしてこうなった。 何の話? WindowsでのSSH-AGENTとSSHの話です。 この記事での用語: SSHとssh, SSH-AGENTとssh-agent この記事では、SSH-AGENTと書いたときにはカテゴリとしてのSSHエージェントを意味します。 ssh-agentと書いたときには、実行プログラムとしてのssh-agentコマンドを意味します。 同様に、SSHと書いたときにはカテゴリとしてのSSHクライアントを意味します。 sshと書いたときには、実行プログラムとしてのsshコマンドを意味します。 SSH-AGENTって? SSH-AGENTは、秘密鍵での署名を代行1してくれるツールです。 SSH-AGENT に秘密鍵をロードしてしまえば、あとはパスワード(パスフレーズ)入力なしでSSH認証できる agent forward機能を使うことで、SSHした先でさらにSSHすると

    混沌を極めるWindowsのssh-agent事情 - Qiita
  • Go TemplateでCコンパイラを実装する【ELVM】 - Qiita

    TL; DR ELVM のバックエンドにGo text/template(以下「Go Template」、処理系はGomplate)を追加 C言語(8cc) -> ELVM IR -> Go Template にコンパイル 8ccの8cc実装をコンパイルすればGo Templateで8ccコンパイラがつくれる!(セルフホスト) はじめに ご存じの通り Go Templateはチューリング完全1なので、任意の処理を実装可能です。 といっても brainf*ck だけでは華が無いので、今回は C言語のソースコードをGo Template上で実行します。 過去の ネタ 記事 Go Templateでプログラミングをする方法については過去の記事をご覧ください。 ELVMとは? ELVMは、以下の仕組みで言語を別言語に変換するコンパイラ(トランスパイラ?)2です。名前の通り、Esolang版のLLV

    Go TemplateでCコンパイラを実装する【ELVM】 - Qiita
    lufiabb
    lufiabb 2024/04/26
  • 難しいのは見た目だけ!?Haskellのモナドの「たった2つのルール」を簡単に理解する! - Qiita

    この記事は Wantedly Advent Calendar 25日目の記事です。 最終日です!気合いが入りますね!! Introduction 今回は Haskell のモナドの話をしたいと思います。 Haskell を学び始めた時、誰もが一度は経験するのが「モナドって何だ?」という疑問です。「Haskell モナド」で検索してみても、圏論を絡めた小難しい説明ばかりが出てきて、よく分からない事が往々にしてあります。 ところが、実は「Haskell におけるモナド」を理解する為に、圏論のモナドを理解する必要はありません。何故なら、「Haskell においてモナドである」為に必要なのは、「たった2つのルールを満たす事」だけだからです! この記事では、「モナドとは何か」を簡単に説明したいと思います!! Haskell におけるモナドとは? Haskell におけるモナドとは、誤解を恐れずに言え

    難しいのは見た目だけ!?Haskellのモナドの「たった2つのルール」を簡単に理解する! - Qiita
  • C で関数に * や & を付けられる件の説明 - Qiita

    規格として C11 (n1570) を参照する。 注意: 途中に入れた図が崩れるようなら、半角・全角比が 1:2 になるようなフォントを使って閲覧してください。 現象 wandbox で実行 ソース: ( &printf)(" &printf = %p\n", &printf); printf (" printf = %p\n", printf); ( *printf)(" *printf = %p\n", *printf); ( **printf)(" **printf = %p\n", **printf); (***printf)("***printf = %p\n", ***printf); この現象を解説する。 関数呼び出し まず、関数呼び出しについての規定を見る。 The expression that denotes the called function shall have

    C で関数に * や & を付けられる件の説明 - Qiita
    lufiabb
    lufiabb 2024/03/04
  • WebAuthn/Passkeyでの生体認証の対応状況 - Qiita

    GitHub について パスキーとセキュリティキーの両方があるが、同じキーを両方に登録することはできない。 セキュリティキーとして登録した既存のキーはパスキーに移動できるが、逆はできない。 パスワード入力の代わりとしてパスキー認証を使用できる。 Microsoft について Windows PC でなくとも「Windows PC の使用」から生体認証を登録可能 「セキュリティキー認証」にはQRコードの読み取りによる認証も含んでいる なぜか Safari では生体認証やセキュリティキーが使用できない どうやらユーザーエージェントによって対応の可否を決めているようで、 Firefox や Chromium にUAを偽装すれば登録/使用ができる。OSを Windows に偽装する必要はない。 上表で ▲ を付けたのはこれが理由。 最近は Microsoft Authenticator がデフォル

    WebAuthn/Passkeyでの生体認証の対応状況 - Qiita
  • GoでBOMを考慮したio.Readerを扱う - Qiita

    GoでBOM付きのUTF-8ファイルを扱う必要があったので、その時に知ったテクニックを共有したいと思います。 具体的に言えば、Excelでファイル形式を「CSV UTF-8 (コンマ区切り) (.csv)」として保存した際のCSVファイルを扱った時の話です。 (Excelや少し前のメモ帳などでUTF-8としてファイルを保存すると、BOM付きのUTF-8ファイルになります。1) BOM(Byte Order Mark)とは BOM(Byte Order Mark)というのは、Unicode系の符号化方式(UTF-8やUTF-16など)の場合に、どの符号化方式であるかが分かるように先頭に付ける数バイトのデータのことです。 より詳しい説明についてはWikipediaのバイト順マークのページなどに譲ります。 このBOMというのはテキストデータの一部ではないので、プログラムで処理する時には、BOMと

    GoでBOMを考慮したio.Readerを扱う - Qiita
  • 中途入社や部署異動で来た新メンバーを活躍しづらくするアンチパターン - Qiita

    1. はじめに ソフトウェア開発のチームに、新しいメンバーが入ってくることはよくあります。 以前に新卒社員がチーム入ってきた場合の育成方法を紹介しました(こちら)。 今回は、新卒社員ではなく、他の会社から中途入社か同じ会社の部署異動で来る新メンバーの話です。 (エンジニアが数百人などで規模が大きい会社の場合、部署が違うと仕事のやり方が全く変わる場合があるので、今回は中途入社と他の部署からの異動を同じように「新メンバー」として扱います) 会社や部署が変わると仕事のやり方が大きく変わるため、仕事のやり方に戸惑うことが多いと思います。 稿では、そのような「新メンバー」を活躍しづらくしてしまうアンチパターンとその対策を紹介します。 2. 中途入社や部署異動で来た新メンバーが適応することの困難さを理解する 中途入社や部署異動で来た新メンバーが組織に適応することは、新卒社員のそれとは別の難しさがあり

    中途入社や部署異動で来た新メンバーを活躍しづらくするアンチパターン - Qiita
  • Goでintが32ビットか64ビットか調べる方法 - Qiita

    Goではintのサイズはアーキテクチャによって異なり、32ビットか64ビットのどちらかということになっている。32ビットのx86では32ビットだし、x86-64では64ビットだ。ときどきビット演算などでintのサイズがどちらなのかを知りたいことがある。そういうときにはどうすればいいだろうか? 結論から先に言うと次の式を使うとintSizeはアーキテクチャに応じて32か64のどちらかになる。 uintとintは最上位ビットが符号ビットとみなされるかどうかという違いがあるだけで、同じサイズであることが保証されている。uint(0)は型なしの定数0をuintに型変換しているので、その値は32ビットか64ビットのどちらかの符号なし整数0になる。^は単項演算子のXORなので、ビットが反転されて、^uint(0)は32ビットか64ビットのすべてのビットが1の値ということになる。これを63ビット右にシフ

    Goでintが32ビットか64ビットか調べる方法 - Qiita
    lufiabb
    lufiabb 2023/09/22
  • awkが新しくなる!? 本家AwkがUnicode (UTF-8)とCSV対応に! - Qiita

    はじめに 2023年、長い時を経て awk がとうとう Unicode (UTF-8) と CSV に対応しました 🎉🎉🎉 awk で日語がうまく扱えない(場合がある)、Excel が出力する CSV ファイルが扱えない(場合がある)、といった問題が解決に向けて一歩に進みます。 去年、家 awk (One True Awk, nawk) に Unicode サポートが Brian Kernighan の手によって追加されたと話題になった(参照)ことを覚えているでしょうか? Brian Kernighan が誰だか知らない方がいるかもしれないので説明すると、オリジナルの awk の開発者の一人で awk の頭文字、Alfred Aho、Peter Weinberger、Brian Kernighan の一人です。通称「K&R」の「プログラミング言語C」や「プログラミング言語AWK」

    awkが新しくなる!? 本家AwkがUnicode (UTF-8)とCSV対応に! - Qiita
  • 難解言語 Malbolge は HelloWorld に「2 年」かかった - Qiita

    TL; DR こちらが難解プログラミング言語 Malbolge で HelloWorld を行うプログラムになります。プログラムとはいったい・・・ (=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm Malbolge Malbolge は 1998 年 Ben Olmstead により開発された難解プログラミング言語です。オリジナルのホームページはとっくに消滅していますが、幸いにもアーカイブは残っていました。 Malbolge は難解プログラミング言語の中でも特に難解であること自体を目的に開発された、文字通り地獄みたいな言語です。 Malbolge was truly created with the i

    難解言語 Malbolge は HelloWorld に「2 年」かかった - Qiita
    lufiabb
    lufiabb 2023/08/28
  • 悪名高きスワイプ広告を解析する - Qiita

    この記事の概要 ユーザーから嫌われている広告の1つに「スワイプ広告」というものがある。 誤タップをしやすいことが理由だが、あまりにもこの広告だけ誤タップするため調べたところ 実は誤タップしたように見せかけて意図的に広告先に遷移させる広告であるということがわかった。 スワイプ広告とは、左右にスワイプすると画像がついてくるタイプの広告である。 スワイプ広告とは スワイプ広告とは、主にアフィリエイトサイトで見られる広告形式の一つである。 ユーザーは指で画面上の広告を左右にスワイプすることで、広告画像を切り替えることができる。 スワイプによるインタラクティブ性を活かし、複数のメッセージやメディアを使い、魅力的な広告体験を提供することが特徴である。 なぜ悪名高いのか しかし、スワイプ広告はユーザーから嫌われている。その理由は、誤タップを誘発しやすいからである。 誤って広告をタップして画面が遷移してし

    悪名高きスワイプ広告を解析する - Qiita
  • ソルト付きハッシュのソルトはどこに保存するのが一般的か - Qiita

    pictBLandとpictSQUAREに対する不正アクセスがあり、パスワードがソルトなしのMD5ハッシュで保存されていたことが話題になっています。 2023年8月16日に外部のフォーラムにpictSQUAREより窃取した情報と主張するデータ販売の取引を持ち掛ける投稿が行われた(中略)パスワードはMD5によるハッシュ化は行われているもののソルト付与は行われていなかったため、単純なパスワードが使用されていた29万4512件は元の文字列が判明していると投稿。(それ以外の26万8172件はまだMD5ハッシュ化されたままと説明。) 不正アクセスによるpictBLand、pictSQUAREの情報流出の可能性についてまとめてみた - piyolog より引用 これに関連してMD5ハッシュやソルトに関するツイート(post)を観察したところ、どうもソルトの理解が間違っている方が多いような気がしました。

    ソルト付きハッシュのソルトはどこに保存するのが一般的か - Qiita
  • TypeScript 4.1 の Template Literal Types がやばい - Qiita

    TS 4.1 の Template Literal Types を使うと、文字列を解釈して型定義ができる。文字列は変数化でき、テンプレートリテラルで埋め込める。 type Hello = 'Hello' type World = 'World' // Template Literal を埋め込める type HelloWorld = `${Hello}, ${World}` // => type 'Hello, World' // 引数に取ることもできる type Concat<T extends string, S extends string> = `${T}, ${S}` type HelloWorld = Concat<'Hello', 'World'> // => type 'Hello, World'

    TypeScript 4.1 の Template Literal Types がやばい - Qiita
  • [翻訳] 端末の神秘を解き明かす - Qiita

    原文 The TTY demystified http://www.linusakesson.net/programming/tty/ 翻訳 TTYサブシステムはLinuxおよびUNIX一般の設計において中心的な位置を占めます。しかし、不幸なことにその重要性はしばしば見過ごされ、良い入門記事を見つけづらくなっています。それでも、LinuxにおけるTTYの基礎知識は開発者やパワーユーザーにとって不可欠です。 これから見ていくシステムはあまりエレガントではありません。TTYシステムはユーザーから見るととても便利ですが、実際は特殊ケースが多く、入り組んでいます。なぜこうなっているのかを理解するには、歴史を紐解く必要があります。 歴史 1869年、株価表示器が発明されました。株価表示器は、タイプライター、長いワイヤーのペア、表示用紙テーププリンタから構成される電気機械で、遠く離れた場所にリアルタイ

    [翻訳] 端末の神秘を解き明かす - Qiita
  • ネットワークに基づく分散型SNS一覧(damus, nostr, Bluesky, AT Protocol, Mastodon, Misskey, Threads, ActivityPub ...) - Qiita

    ネットワークに基づく分散型SNS一覧(damus, nostr, Bluesky, AT Protocol, Mastodon, Misskey, Threads, ActivityPub ...)mastodonmisskeythreadsnostrBluesky はじめに Twitterの動乱に巻き込まれ、移住先に選ばれつつある Threads が5日で1億人を突破した今日このごろ、皆様いかがお過ごしでしょうか。 Alt Twitterとしての各種サービスに注目が集まりつつありますが、それらに関しての解説記事も乱立しており、一方で、その正確性や内容には必ずしも正確ではないものもあります。 プロトコルとアプリとサービスの区別がついていなかったり、相互接続できないものが接続できると宣伝されていたり、その逆もあります。 記事では、特にネットワークに基づいて、各種SNSを分類して説明します。

    ネットワークに基づく分散型SNS一覧(damus, nostr, Bluesky, AT Protocol, Mastodon, Misskey, Threads, ActivityPub ...) - Qiita
  • React 18に備えるにはどうすればいいの? 5分で理解する - Qiita

    React 18はReactの次期メジャーバージョンで、2021年の6月にalpha版が、11月にbeta版が出ました。また、Next.js 12でもReact 18のサポートが実験的機能として追加されました。React 18の足音がだんだんと我々に近づき、アーリーアダプターではない皆さんの視界にもいよいよReact 18が入ってきたところです。 特に、React 18ではServer-Side Rendering (SSR) のストリーミングサポートが追加されます。現在ReactでSSRを行いたい人の強い味方としてNext.jsが存在しているわけですが、Next.js 12でもReact 18を通してストリーミングの恩恵を受けることができます(Next.jsではSSR Streamingと呼んでいるようです)。また、厳密にはReact 18とは別ですが、React Server Comp

    React 18に備えるにはどうすればいいの? 5分で理解する - Qiita
  • みんなが幸せになれるPullRequestの作り方を考えてみた - Qiita

    前提として Pull Requestの運用方法など、各プロジェクトによって方針が定められているところもあるかと思います。 その上、この記事ではあくまで筆者の考えを殴り書きしているだけのものですので、基的にはプロジェクトの方針に沿った運用を行い、この記事は参考程度にしていただくのが良いかと思います。 概要 昨今の開発では、GitHubを利用される方が大半だと思われます。 その中でも、ほとんどの人が利用している機能として「Pull Request」が挙げられます。 Pull Requestは「実装者が実装した機能・コードの品質をレビュワーがチェックする工程」であり、「実装者とレビュワーのコミュニケーションを取る場」となります。 Pull Requestも万能ではなく、そもそもレビューも実装も人間が行う(2023年時点だとまだ人間がやってる)ので、確認漏れや認識のずれが発生してしまうこともチラ

    みんなが幸せになれるPullRequestの作り方を考えてみた - Qiita
  • 0.0.0.0にはアクセスしないこと - Qiita

    はじめに この記事は2019年4月時点で調べたものをベースにしています。将来的に変わるかもしれません。 tl;dr 0.0.0.0を宛先に使うのは誤り ただしOSによっては 127.0.0.1 に到達するので支障がなかったりする 想定読者 0.0.0.0と127.0.0.1の違いをすぐに答えられない人が対象です。 ネットワークな人はわかっていることだと思うのでブラウザバックしてもらって構いません。 強い人は間違えているところコメントください。 環境 Ubuntu 16.04を利用します。 $ uname -a Linux parallels-vm 4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 簡単な例 Webの文脈ではWebサーバのQu

    0.0.0.0にはアクセスしないこと - Qiita