オープンソースcURLの作者、某大企業から「24時間以内にこの質問に答えるように」との無礼なメールを受け取る コマンドラインからさまざまなプロトコルでデータ転送を実行できる「curl」コマンド(以下cURL)は、多くのITエンジニアにとって欠かせない、非常に便利なツールです。 cURLはオープンソースで開発されているソフトウェアです。先日その作者であるDaniel Stenberg氏に、某大企業からオープンソースを全く理解していないとみられる大変無礼なメールが届いたとして話題になっています。 If you are a multi billion dollar company and are concerned about log4j, why not just email OSS authors you never paid anything and demand a response f
はじめに curl とは対話シェルやシェルスクリプトから HTTP 通信を行うのによく使われるコマンドです。あらゆる環境(100 種類の OS)で動作し、macOS や Windows には標準でインストールされています。商用サポートもあり、互換性は非常に重視され、何年経っても同じ書き方で動きます。非常に長く使われており(1998 年生まれの 27 歳1)、そして古い情報もたくさんあります。この記事ではそういった古い情報を、より簡単で新しい curl コマンドの使い方にアップデートします。最初に結論を書いておくと、 もう -X POST -H "Content-Type: applicatoin/json" なんて書かなくていいですよ。 (記事を読まない人のためのリンク) この記事を書くにあたって以下の記事を参考にしています。この記事が書かれたのは 2015 年、現在はそれから 10 年後
その他 OS の方は GitHub のrelease ページから DL することができます。 使い方 tv はミニマムな CLI として作ったのでテーブル表示の機能とそれに付随したオプションのみを提供しています。 配列になっている JSON をテーブル表示する キーを指定することでそのキーを使ってソートできる いくつかのスタイルでテーブルを表示できる 以上が主の機能です。 Table 表示 ユースケースとして JSON が帰ってくる API を想定します。 API の例として jsonplaceholder を利用します。 今回は https://jsonplaceholder.typicode.com/users を使います。 この API は以下のようなデータが返ってきます。 $ curl -s https://jsonplaceholder.typicode.com/users [
Web 開発者は HTTP レスポンスをよく見る。 以前 CDN を導入する際に、キャッシュがヒットしているかどうか、どこのエッジがキャッシュを返しているかを確認するためにヘッダをよく見ていた。また、ヘッダだけではなく、TTFB といったレスポンスタイムも気にしている。とにかく HTTP レスポンスをよく見る。 HTTP レスポンスを確認する3つの方法 Chrome さえあれば DevTools を見て一目瞭然である。 とはいえ、コマンドラインで確認したい時がしばしばある。 GUI を操作するよりも手軽である。 その場合はcurlコマンドを叩けばよい。 これでプロトコル、ステータス、ヘッダが分かる。 また、レスポンスタイムを測りたければ、その名もttfb.shというcurlをラップしたコマンドラインツールがある。 https://github.com/jaygooby/ttfb.sh この
はじめに 今作業しているマシンが、インターネットへ通信するときに、送信元IPアドレスが何になるか知りたいときはないでしょうか。 そんなときに私が使っているのが、https://ifconfig.io/ というサービスです。 以下の特徴があります。 curl ifconfig.io で単純に IPアドレスだけ返ってくる JSON に対応 IPv6 に対応 http / https 両対応 個人的に覚えやすいアドレス(主にこの理由で使っています) 使い方 ブラウザで https://ifconfig.io を開くと大体の使い方が分かります。 サクッと curl ifconfig.io 単純に IP アドレスだけ知りたときは curl ifconfig.io を実行します。一番良く使います。 $ curl ifconfig.io 203.0.113.1 IPv6 での通信の場合は、IPv6 アド
コマンドラインツールのcurlを用いてHTTPによる通信のパフォーマンスを調べる方法を考えていこうと思います。 curlとは curlはURLを用いてデータをやりとりするためのコマンドラインツールもしくはライブラリです。 コマンドラインツールとしてはcurl、ライブラリとしてはlibcurlがあります。 HTTPだけではなくFTPやSMTPなど様々なプロトコルに対応しています。 自分は主にCLIからHTTPリクエストを送りたい時などに使っています。 使ってみたい方は以下の方法でインストールできると思います brew install curl apt install curl --write-outを使ってパフォーマンス測定 curlには様々なオプションが用意されていますが、今回、主に用いるのはこの-w, --write-outオプションです。 このオプションは指定したフォーマットを用いてコ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 普段何気に使っているPostman。最近まで「手軽にGUIで疎通を試せて、設定を共有できてべんり〜」くらいで使っていました。 けどふと「実はもっと便利な機能があるのでは?」と思って調べてみたところ、色々出てきたのでせっかくなのでシェアしたいと思います。 たまたまですがちょうど10選! 地味に便利な機能10選 VSCode拡張 PostmanにはVSCode拡張機能があります。 インストールするだけで、VSCodeのサイドバーから利用可能です。 日本語設定 日本人なので日本語で使いたい。 右上の歯車→Settingsから以下の通り選択する
はい、どーも!CX事業本部の吉田です。 今日 Twitterをいつものように見てたところ、以下のようなツイートが流れてきました。 BRAVIAはガッツリAPIあるな。いいこと聞いた。 "はじめに | BRAVIA Professional Display Knowledge Center" https://t.co/0ngvvFMIrM — moyashi (@hitoriblog) August 21, 2020 ちょっと見た感じ、法人向け製品のみに実装されてるのかな?と・・・ ちょうど我が家のテレビもBRAVIA(KJ-55X8550G)だったので、試しにそのIPを叩いてみると、nginxのレスポンスが返ってくるではありませんか。 多分REST APIで叩けそうだぞ!ということで試してみました。 前準備 まずはテレビ側を準備します。 テレビのホーム画面から設定に入ります。機種によってこ
はじめに スタートアップ等において新しいプロダクトを始める時は、負債が無い代わりに何もありません。 そういった時に、ソフトウェアの品質を担保するための CI のセットアップが、初期から重要になってきます。 GitHub を使用している場合は、GitHub Actions を使用されることが殆どだと思うので、そちらを前提に進めていきたいと思います。 1. rhysd/actionlint 様々なエンジニアが action を追加したり、編集したりするようになった時、全員が正しい書き方で書いていくことは難しいです。 また、それを 1 人の GitHub Actions Expert がレビューしていくのは大変で、属人化してしまっているので、避ける方が望ましいです。 以下をコピペすれば、使用できます。 name: Actionlint on: push: branches: [ main ] p
2021年12月に、さまざまなプログラムに使われているJavaのログ出力ライブラリ「Log4j」にリモートコード実行のゼロデイ脆弱(ぜいじゃく)性「Log4Shell」があることが発覚し、世界中のIT産業が対応に追われました。そんな問題に対し、フォーチュン500に選出されるような大企業から対応方法を教えるよう要請を受けたオープンソース開発者が、相手企業と交わしたメールを公開しています。 LogJ4 Security Inquiry – Response Required | daniel.haxx.se https://daniel.haxx.se/blog/2022/01/24/logj4-security-inquiry-response-required/ さまざまなプロトコルを用いてデータを送受信するのに使われるオープンソースソフトウェア「cURL」の開発者のダニエル・ステンバーグ
What’s Hurl? Hurl is a command line tool that runs HTTP requests defined in a simple plain text format. It can chain requests, capture values and evaluate queries on headers and body response. Hurl is very versatile: it can be used for both fetching data and testing HTTP sessions. Hurl makes it easy to work with HTML content, REST / SOAP / GraphQL APIs, or any other XML / JSON based APIs. # Get ho
Docker Desktopが一定条件で有償化*1されるので、脱Docker Desktopしてみた。 意外とそんなにハマることもなく環境構築に成功して、Docker Desktopを使っていた時代とほぼ変わらない開発体験が得られました。 Limaを選んだ理由 lima コマンドを打つだけでデフォルトのVM(Ubuntu)のシェルに入れる(もしくはlimaの後ろに付加した文字列がそのままコマンドになる) 標準設定でホストとネットワークを共有する(dockerでportをexportしたらlocalhost:1234でアクセスできる) --net=host が使える 標準設定でMacのホームディレクトリがVMにマウントされてる(嫌だったら設定変えられる, sshfsでマウントされてるだけ) 環境 M1 Mac Book Pro Intelでもいけるはず Lima側の構築 これがDocker
バックエンドエンジニアの taisa です。テックタッチでは API Gateway として、AWS の API Gateway ではなく、クラウドでもオンプレでも使えるオープンソースの Kong Gateway を利用しています。この記事では Kong Gateway とは何か、なぜ使うのか、どうやって使うのか、を簡単にまとめてみました。 Kong Gatewayとは なぜ Kong Gateway を使うのか Kong Gateway をインストールできる環境 Kong Gateway の特徴 Kong Gateway の概念と機能 Kong Gateway のドキュメント Mac + DB Less(YML)環境で動かしてみる 構成 下準備 Kong をセットアップする kong.yml にサービスとルーティング情報を記述する Rate-Limit プラグインを利用する プロキシキャ
こんにちは、極予測やりとりAI というプロダクトの開発責任者をしている しゅん(@MxShun)です。 ある日、cURL は成功し Go HTTP リクエストは失敗する事象に遭遇しました。そのとき調査して分かった原因と仕様を共有します。 目次 事象の詳細 事象の原因 仕様1. HTTP/2 ではヘッダーは小文字のみ許容される 仕様2. Go HTTP/1.1 ではヘッダーは MIME 正規化される まとめ 事象の詳細 HTTP リクエストヘッダー X-Api-Key 値で認証するサーバと通信をしており、サーバのリアーキテクチャに伴う外部結合テスト中に当事象に遭遇しました。 まず疎通確認のため Go アプリケーションのコンテナ内から cURL でリクエストしてみたところ、200 OK が返ってきました。 curl -v \ > -H 'X-Api-Key: xxx' \ > -d '...'
Today we're releasing Connect, a slim framework for building browser and gRPC-compatible HTTP APIs. Connect is production-ready — focused, simple, and debuggable — and it's fully compatible with gRPC clients and servers. If you're frustrated by the complexity and instability of today's gRPC libraries, we think you'll find Connect a breath of fresh air. connect-go is available now under an Apache 2
AWS Fargateを利用することが最近多く、コンテナ間の名前解決にはECS Service Discoveryをよく利用しています。ECS Service Discoveryは平たく言えばRoute53を利用してコンテナ間の名前解決できる仕組みです。 ふと手元に見るとローカルでコンテナ起動しているときはコンテナ間の名前解決をどこで行っているのか?を今まで気にしたことがありませんでした。気にしたことがなかったことに気づけたことは幸いです。手を動かして確認してみましょう。 まとめ Dockerはコンテナ間名前解決に利用できるService Discovery機能がある コンテナが指定するDNSサーバはループバック用のアドレス範囲にある127.0.0.11 ユーザ定義のネットワークを使用している場合に限り利用できる機能 デフォルトのネットワーク(bridge)はService Discove
https://github.com/Songmu/gotesplit gotesplitというかなり便利なツールを書いた。Goのテストをいい感じのサブセットに分割して、それを実行するものです。このアプローチで、社内のテストを15分から3分くらいまでに短縮しました。 これを使えばCI環境での高速なテストの並列実行を簡単に実現できます。 実例 CircleCIやGitHub Actions上で簡単に導入できます。 CircleCIの場合 parallelism: 5 docker: - image: golang:1.15.3 steps: - checkout - run: command: | curl -sfL raw.githubusercontent.com/Songmu/gotesplit/main/install.sh | sh -s bin/gotesplit ./... -
TL;DR: Instead of redirecting API calls from HTTP to HTTPS, make the failure visible. Either disable the HTTP interface altogether, or return a clear HTTP error response and revoke API keys sent over the unencrypted connection. Unfortunately, many well-known API providers don't currently do so. Updates 2024-05-24: Added the Google Bug Hunter Team response to the report that the VirusTotal API resp
Windows 10には、マイクロソフトが実装したcurl.exeコマンドが同梱されている。公開されているソースを元に作られた公式のcURLとはバージョンなどが異なっている Windows 10には、2018年のWindows 10 Ver.1803(RS3)からcurl.exeコマンドが標準で付属している。curl(カール)は、cURLの意味で、URLを使って指定するプロトコルを実行するコマンドラインツールである(以後記事中ではcURLをオリジナルの表記として使う)。 curlは1990年代後半に開発が始められ、当初はUnix(SunOS)上で、名前もhttpgetだった。開発が進むとともに、複数のプロトコルをサポートするなどして「cURL」となったのは1998年で、この頃にLinuxにも移植されたようだ。 Windows 10に付属しているのは、cURLの仕様からMicrosoftが作
TextDB A simple way to share small amounts of data Let's name your data 813d6f00-f502-42ca-b7dc-f894a60220b5 Update your data with curl -d "hello world" -H "content-type: text/plain" https://textdb.dev/api/data/813d6f00-f502-42ca-b7dc-f894a60220b5 Access your data with curl https://textdb.dev/api/data/813d6f00-f502-42ca-b7dc-f894a60220b5 Or view it with live updates at https://textdb.dev/data/813d
Push notifications made easyntfy (pronounced notify) is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer, and/or using a REST API. It's infinitely flexible, and 100% free software.
curl’s official birthday was March 20, 1998. That was the day the first ever tarball was made available that could build a tool named curl. I put it together and I called it curl 4.0 since I kept the version numbering from the previous names I had used for the tool. Or rather, I bumped it up from 3.12 which was the last version I used under the previous name: urlget. Of course curl wasn’t created
はじめに HTTPのバージョンと仕様について、個々最近の動きについて整理しておこうかと思います。 HTTPには幾つかのバージョンが有り、現在HTTP/1.1とHTTP/2が広く利用されており、HTTP/3も徐々に使われだしています。 バージョンが異なっていても、クライアントからHTTPリクエストを送り、サーバがHTTPレスポンスを返すのは変わりません。HTTPメッセージをどのようなフォーマットで送るかはバージョンによって異なりますが、HTTPメッセージが持つ意味は変わりません。 意味(セマンティクス)とは、GETリクエストやPOSTリクエスト、ステータスコード、ヘッダがどういった意味を持つかということです。 バージョンと、セマンティクスの歴史的遷移は下記のとおりです。 HTTP/1.1とセマンティクス HTTPは最初0.9から始まり、HTTP/1.0、HTTP/1.1と進んできました。 H
rsyncによる大容量ファイルの転送やDBのバックアップ・リストアなど、たびたび非常に時間がかかるタスクをCLIで実行するシーンがあります。 通常そういった場合は末尾に&を付加(セッションが切れても中断されないようにnohupとセットで使うことも多い)してバックグラウンドで動作させるのが一般的かと思います。 ただ、そのまま使うとログや実行時間、リターンコードなどの採取が面倒であり、いささか一覧性に欠けます。 そんな中、そのようなユースケースに適したPueueという管理ツールが登場しました。 Pueueとは Pueueとは、長時間のCLIタスクに特化したOSSの管理ツールです。 最近はstarshipやnushellといったRust製のツールが勢いを増していますが、例によってPueueもRustによって記述されています。 Pueueの特徴としては、次の通りです。 リッチなUI: バックグラウ
DockerDesktopの特定条件下における利用が有料化しますね。 そこで今回はDockerDesktopを使っている GUIのコンテナ管理機能を必要としない方 DockerDesktopのインストールが楽だからとりあえず使っていた方 host.docker.internalでホストOSのIPを引ける機能は不要な方 2021-10-15に追記しました。 向けにWindowsにおいてDockerDesktopから、WSL2上のみで動くDockerする方法を書いてみました。 前提条件 この記事の内容は以下の条件で検証されました。 OS Windows 10 WSL2ディストリビューション - Ubuntu 20.04 DockerDesktop - インストール済み 1. 下準備 まずはすでに動いているDockerDesktopを止めましょう。 Windows側でDocker Desktop
こんにちは、SSTでWeb脆弱性診断用のツール(スキャンツール)開発をしている坂本(Twitter, GitHub)です。 社内で診断ツールやプロキシを開発していることもあり、通信関連のトラブル相談を受けることがあります。 その中で「そもそも HTTP(S) Proxyを設定するとはどういうことか?」を解説する機会が何度かありましたので、これを機にエンジニアブログで紹介したいと思います。 当ブログの読者としてはWebエンジニアや情報セキュリティ関係者が多いと思います。 そうした方であれば「Proxyを設定する」経験がある方もいらっしゃるでしょう。 では「Proxyを設定する」とはどういうことか、ご存知でしょうか? 本記事ではその疑問について、Wiresharkを用いたパケットレベルの観察を元に解説します。 パケット観察1: HTTP Proxy ON/OFF curlコマンドでHTTPリク
Windows 10およびWindows 11上のLinux環境「WSL」をこれから始める読者のための、インストール方法やバックアップ方法をまとめて解説する。また、Windows 11上のWSLで新規サポートされた外部ドライブのマウント方法も合わせて紹介しよう。 「Windows 10」や「Windows 11」上でLinuxの実行環境を構築可能とする「Windows Subsystem for Linux(WSL)」が着々と更新されている。WSLは、Windows 10 Fall Creators Update(バージョン1709)から正式版が利用可能となり、その後、May 2020 Update(バージョン2004)では、Linuxとの互換性を高めた「WSL 2」が提供された(WSL 2については、Windows 10 The Latest「前バージョンから大幅に性能向上した新Linu
大きくは外部ストレージサービス利用と、アプリケーションにバンドルしてしまう方式と2つにわかれます。バンドルはデータだけ更新ができないデメリットはありますが、お手軽です。Lambdaはレイヤーを使えば実行プログラムに対して後から追加とかできますが、容量制限が厳しめです。 オブジェクトストレージは比較的お手軽ですが、読み込みしたいライブラリがローカルのファイルシステム前提の場合は使えません。サーバーレスの方式によっては、一度ローカルのファイルシステムに書き出してから利用とかも可能ではありますが、Cloud Runでは8GB(ただし、おそらくtmpfsで書けば書くほどメモリを消費)、Lambdaでは500MBと容量に制限があります。 より巨大な学習済みデータを扱う場合はマネージドNFSサービス系のものを使うのが最終形でしょう。ファイルのサイズ制限もほぼ限界値ですし、ローカルファイルになるのでどん
はじめに 2023年12月に「cURLの"--cacert"オプション利用時の挙動がmacOSとLinuxで異なる」という内容のissueが立ち、2024年3月にcURLの開発者であるDaniel Stenberg氏が「THE APPLE CURL SECURITY INCIDENT 12604」というタイトルで記事を公開しました。 この記事では本件に関する詳細の説明と検証、また独自の掘り下げを行い、macOS版cURLとオリジナルのcURLの違いについて解説します。ただし、本件は明らかになっていない部分が多くあるため、本記事には推測や仮説が含まれます。ご了承ください。 --cacertオプションにおけるmacOSのcURLとオリジナルのcURLの違い まずはDaniel Stenberg氏の記事で述べられた内容を元に、"--cacert"オプションにおけるmacOS版cURLとオリジナル
[NEW] Amazon CloudFrontでStaging Distributionを使ったContinuous Deployment(継続的デプロイ)がサポートされました! 柔軟なDistributionの設定変更が難しかったCloudFrontで継続的デプロイがサポートされました。ステージング用Distributionを作成し一定量のリクエストを割り振って動作確認をしたあと、本番環境に昇格させるデプロイが行えます! はじめに 清水です。AWSのCDNサービスであるAmazon CloudFrontにContinuous Deployment(継続的デプロイ)機能がやってきました!本日(日本時間2022/11/19、現地時間2022/11/18)AWS Blogsにポストされたアップデートについてお届けします!! Use CloudFront continuous deploymen
Goのライブラリを提供している場合、Goの最新の安定バージョンでテストしたくなることがあるでしょう。具体的にはマイナーバージョンの直近2バージョン、今だと1.18と1.17です。GitHub Actions定義への記述は以下のようになるでしょう。 jobs: test: runs-on: ubuntu-latest strategy: matrix: go-version: ['1.17', '1.18'] steps: - uses: actions/setup-go@v3 with: go-version: ${{ matrix.go-version }} - run: go test ./... しかしこのようにベタに書いてしまうと、Goのバージョンが上がったときにチマチマ上げるのが地味にめんどくさい。なのでこれを動的に生成したい。 これは事前にGoの安定バージョン一覧を取得するjo
「(わりと)任意」、と書きましたが実際には AppleScript をサポートしている Application が対象で、基本的に AppleScript で取得できる情報については全て取得できるはずです。現状では read のみ実装しています。 ソースコードはこちら 使い方 実行中の Google Chrome に対して incognito の window で開いている tab の title と url が欲しい、という query を実行してみている例です。 npx で試す とりあえずサクッと試す場合は npx jxa-graphql server <appPath> で試せます。curl でも良いですし Apollo Sandbox の Explorer などを使っても良いでしょう。 $ npx jxa-graphql serve /Applications/Google\ Ch
プロジェクト間で必要とされる node.js のバージョンが違うことはままあり、そのために皆さん nvm や nodebrew などのツールを使っておられることだろうと思います。 今回それ系統で Volta というツールを知ったので紹介いたします。 Volta - The Hassle-Free JavaScript Tool Manager Volta の特徴 セットアップが比較的簡単 Rust製で速いらしい 実行する node のバージョンなどをプロジェクトのディレクトリに入るだけで自動で切り替えてくれる npm や yarn でグローバルインストールした時も、どのディレクトリでインストールされたかを自動で記録するため、コマンドラインから直接コマンドを実行できつつもプロジェクト毎に違うバージョンを使うことができる node だけでなく npm や yarn もプロジェクト毎に固定できる
はじめに こんにちは。 リンクアンドモチベーション SREの篠原です。 普段アプリケーションの開発をしていると、何かしらに繋がらなくて困るといった場面は少なくないと思います。 立ち上げたはずのwebアプリにアクセスできない アプリとDBが疎通できない 〇〇のサーバにSSHできない 現在SREとして、そして過去インフラエンジニア/システム管理者としての経験もある筆者がこのような時にどうやって調査し解決しているかを紹介します。 特に若手の開発者やインフラエンジニアの方々に参考になれば幸いです。 (あくまで個人の考えのため、もしより良い方法などありましたらぜひコメントで教えてください!) L4レベルで疎通できるか確認 役に立つコマンド nc telnet curl OSI参照モデルにおけるL4、トランスポート層での通信ができるかどうかをまず確認します。 誤解を恐れずにいうと具体的にはIPアドレス
はじめに 参考 Stargz 概要 詳細 HTTP Range 互換性 Stargzまとめ eStargz 概要 最適化 TOC, TOCEntry Footer Stargz Snapshotter eStargzまとめ 実験 トークン取得 インデックス取得 マニフェスト取得 Footer取得 TOC取得 ファイル取得 実験まとめ 余談 応用例 自作ライブラリ 計測 まとめ はじめに コンテナイメージのlazy pullingが各ツールで利用可能になりつつあるようです。以下は stargz-snapshotter のメンテナである @TokunagaKohei さんによるブログです。 medium.com lazy pullingが何かを簡単に説明しておくと、コンテナイメージ全体を最初にpullせずにコンテナ実行後に必要なファイルのみを遅延でpullするものです。docker runしよ
この記事は新野淳一氏のブログ「Publickey」に掲載された「オープンソースcURLの作者、某大企業から「24時間以内にこの質問に答えるように」との無礼なメールを受け取る」(2022年1月26日掲載)を、ITmedia NEWS編集部で一部編集し、転載したものです。 コマンドラインからさまざまなプロトコルでデータ転送を実行できる「curl」コマンド(以下cURL)は、多くのITエンジニアにとって欠かせない、非常に便利なツールです。 cURLはオープンソースで開発されているソフトウェアです。先日その作者であるDaniel Stenberg氏に、某大企業からオープンソースを全く理解していないとみられる大変無礼なメールが届いたとして話題になっています。 メールの宛名となっている「Haxx」は、cURLのトップスポンサーとして名前が掲載されている開発者の集まりです。 メールの送信元となる会社名や
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く