ブックマーク / songmu.jp (14)

  • MacBook Proに復活したSDカードスロットでタイムマシンバックアップする | おそらくはそれさえも平凡な日々

    M1 ProのMacBook Pro '14を買いました。ちょうど業務PCとして買えるタイミングだったのでラッキーだった。多少トラブルはありますが、それも含めて楽しんでいます。 SDカードスロットが復活したことも話題でしたが、正直要らんなと思っていました。しかし @yamaz さんの以下のツイートを見て、確かにTime Machine運用するのは面白いかもしれない、と思ってやってみた。 なんでなんで!?みなさん、Timemachineのディスクは外付けのSDカードじゃないの?? https://t.co/YTj4QNixNm — 最速配信研究会 山崎大輔 (@yamaz) October 18, 2021 これまでTime Machineは自宅のQNAPに取っていたのだが、正直Time Machineが役に立ったことは全く無い割にはメンテナンスコストがかかっていたので微妙に思っていた。正直

    MacBook Proに復活したSDカードスロットでタイムマシンバックアップする | おそらくはそれさえも平凡な日々
    delphinus35
    delphinus35 2021/12/02
    バックアップってコストかかるし要らないな〜なんて思ってると痛い目見るんですよ……昨日のやらかしアドベントカレンダーでも言ってたでしょ?
  • Let's Encryptのルート証明書切替周り(完結編) | おそらくはそれさえも平凡な日々

    tl;dr 驚くべきハックにより旧Androidも引き続き証明書エラーなくサイトを閲覧できそうです いよいよ5/4に標準の証明書チェーンが切り替わります 前回までのおさらい Android7.1以前でLet's Encrypt証明書のサイトが見られなくなる Let's Encryptの証明書切替周りその後 Let's Encryptはルート証明書を自身(ISRG)の認証局のルート証明書(ISRG Root X1)に切り替えようとしています。現在は、IdenTrustのルート証明書(DST Root CA X3)が使われています。 正確に言うと、ISRGは新しい認証局なのでそのルート証明書の普及率も当然低く、中間証明書はIdenTrustのルート証明書でクロスサインされており、それが標準で使われています。標準がDSTになっているだけで、ISRGのルート証明書のチェーンの証明書も指定すれば今で

    Let's Encryptのルート証明書切替周り(完結編) | おそらくはそれさえも平凡な日々
    delphinus35
    delphinus35 2021/04/30
    これはすごーい。よく思いついたな。
  • Android7.1以前でLet's Encrypt証明書のサイトが見られなくなる | おそらくはそれさえも平凡な日々

    追記: その後の動きについて書きました → Let's Encryptの証明書切替周りその後 このサイトはLet's Encryptで証明書発行しているのでタイトルの件が気になったのだが、どうもあまり話題になっていない。恥ずかしながらSSL周り詳しいわけじゃないので、誤っているかも知れない。識者の意見を求む。 Let's Encryptが使われているサイトがAndroid7.1以前のバージョンで今年の9月29日以降見られなくなる可能性がある 延命策は用意されそうだが、それも来年の9月29日まで Let's Encryptのルート証明書切り替え計画に起因している Let's Encryptのルート証明書の変更 Let's Encryptはルート証明書を自身(ISRG)の認証局のルート証明書(ISRG Root X1)に切り替えようとしている。現在は、IdenTrustのルート証明書(DST

    Android7.1以前でLet's Encrypt証明書のサイトが見られなくなる | おそらくはそれさえも平凡な日々
    delphinus35
    delphinus35 2020/08/07
    強行されたらGoogleの検索結果にも影響出そう。何割かの端末で表示できないサイトを上位に置けないし……
  • 最近のGo Modulesプラクティス ~ ghqユーザーの場合も添えて | おそらくはそれさえも平凡な日々

    最近Go Modulesを使っていて、だいたいプラクティスが定まってきたのでまとめてみる。 個人的な結論 Go Modulesは積極的に使っていけばいい 幾つか課題はある $GOPATH から出る必要もない $GO111MODULE を適宜設定すればよい どうせ次のGo 1.13からはどこに置こうが関係なくなる 2つのモード $GOPATH/src にプロジェクトを置いていると、今(Go 1.12)の標準動作はGOPATHモードになる。これは、$GOPATH/src 以下からサードパーティパッケージを読み込むこれまでのGoと同様の動作になるということ。 それ以外の場所では go mod コマンドを使ってGo Modulesを利用することができる。これをmodule-awareモードという。go.mod と go.sum を使って依存ライブラリを管理する方式になる。これらのファイルはgo m

    最近のGo Modulesプラクティス ~ ghqユーザーの場合も添えて | おそらくはそれさえも平凡な日々
    delphinus35
    delphinus35 2019/03/28
    Ghq使い続ければよさそう。なんとなくそのまま使ってたけど問題なさそうだ。
  • ghqを使っていても(使っていなくても)goimportsを爆速にする | おそらくはそれさえも平凡な日々

    「ghqを使ったローカルリポジトリの統一的・効率的な管理について」というエントリで書かれているように、 ghq.root と $GOPATH/src を一緒にする運用で長年やってきて、goimports が遅いことに少し困っていたのだが、以下でめちゃくちゃ快適になった。 .goimportsignore を使う goimports-update-ignore で自動生成をする 最新の dragon-imports を使う どれくらい快適になったかというと、エディタの保存時に goimports を気兼ねなく実行させられるようになったくらい。以下解説。 .goimportsignoreを使う 最近の goimports には $GOPATH/src/.goimportsignore という除外リスト機能がある。ここにインポート対象外にしたいディレクトリを $GOPATH/src 以下の相対パ

  • GoでSingletonぽいことを実現する、とある方法 | おそらくはそれさえも平凡な日々

    ちなみに今回のコードはそれほど実用性はありません。ここまで頑張って、シングルトンぽいことを実現する必要性は感じられないからです。サンプルコードはこちら。 https://www.github.com/Songmu/go-sandbox/ Goでシングルトンを実現する方法として以下の様なコードが良く見られます。 package singleton import "sync" type singleton struct{ } var ( instance *singleton once sync.Once ) func GetInstance() *singleton{ once.Do(func() { instance = &singleton{} }) return instance } このコードのグッドポイントとしては、 sync.Once を使っていること。以下のように素朴に nil

    GoでSingletonぽいことを実現する、とある方法 | おそらくはそれさえも平凡な日々
  • Goツールのリリースにおけるバージョニングについて | おそらくはそれさえも平凡な日々

    Goのツールをリリースする時、個人的には以下のような手順を踏んでいる。もちろんスクリプトで一撃でできるようにはしている。今回は1.の話。セマンティックバージョニングの話は出てきません。 versionをbumpする CHANGELOGを更新する 1,2での変更をgitに反映してタグを打つ ビルドする ビルドをアップロードする versionは -ldflags を使って動的に埋め込む方法があるが、最近は明示的にソースコードに書いた方が良いと思うようになってそうしている。 理由としては、ユーザーが go get/build で実行ファイルを取得した場合でもバージョンは表示されて欲しいというのが一つ。 -ldflags で実行ファイルに色々な値を埋めることはできますが、基原則として、それらを埋めてない状態でもちゃんと実行ファイルが正常に動くようにすることを意識した方が良い。 もう一つの理由と

    Goツールのリリースにおけるバージョニングについて | おそらくはそれさえも平凡な日々
  • `ghg` で GitHub Releasesから適切な実行ファイルを統一的に取得する | おそらくはそれさえも平凡な日々

    https://github.com/Songmu/ghg tl;dr % ghg get motemen/ghq とかやれば、GitHub Releasesに上がった最新の実行ファイルを取得できる。 % $(ghg bin)/ghq とかで実行可能。 $(ghg bin) を $PATH に追加してもよい。 % ghg get Songmu/ghch@v0.0.1 とかでバージョン指定も可能。 Goで書いたツールを提供する場合、クロスビルドしたものを GitHub Releasesに上げるのが定番となっています。 なぜ、 go get ではないのかというと go get の場合以下のような問題があるからです。 go get するにはGoの環境が必要 安定版ではなく、開発中の最新をビルドしてしまう ビルド情報などをバイナリに埋め込めない ただし、GitHub Releasesに上げる

    `ghg` で GitHub Releasesから適切な実行ファイルを統一的に取得する | おそらくはそれさえも平凡な日々
    delphinus35
    delphinus35 2016/07/06
    素晴らしい。今までreleasesページから手でURLコピペしてたのでスゴイだるかった。
  • kv2jsonというコマンドラインでJSONを組み立てるためのツール作った | おそらくはそれさえも平凡な日々

    https://github.com/Songmu/App-KV2JSON 近年Web APIはJSONで投げるものも多いわけですが、コマンドラインとかシェルスクリプトからcurlでそれを叩こうとした時に手でJSONを書いたりするのが面倒臭かったりするのでkv2jsonというユーティリリティを書いた。 % kv2json hoge=fuga {"hoge":"fuga"} と言った感じです。多少複雑な使いかたもできるので、そのあたりはSYNOPSISを見てもらえればと思います。 導入は、 % cpanm App::KV2JSON でも入りますが、https://raw.githubusercontent.com/Songmu/App-KV2JSON/master/kv2jsonとかにfatpackした一枚岩のやつがあるのでそれを直接使うのも良いと思います。 パイプ経由でも値を渡せるので %

    kv2jsonというコマンドラインでJSONを組み立てるためのツール作った | おそらくはそれさえも平凡な日々
  • cpan-ghq is awesome! | おそらくはそれさえも平凡な日々

    以下のエントリーを読んで、ghqとgem-src的なことがPerlでもやりたいなーと思ってたらあんちぽさんに煽られたので書いた。ザクっと書いたら結構動いていて便利。 ghqを使ったローカルリポジトリの統一的・効率的な管理について ニートのひとに便利モジュールを作ってもらおう! — あんちぽくん (@kentaro) 2014, 6月 6 インストール 事前に、ghqをインストールしておく必要があります。あと色々cpanm前提です。 % cpanm App::CPANGhq したら、cpan-ghqというコマンドが入ります。 使い方 % cpan-ghq Module::Name すると、そのモジュールのリポジトリが、ghqを使ってcloneされます。 % cpan-ghq --cpanfile とかすると、cpanfileを読みにいって、その中のrequiresなモジュールを一括でclon

    cpan-ghq is awesome! | おそらくはそれさえも平凡な日々
  • DBI->connectの第4引数の内容は設定ファイルに書かないほうが良い | おそらくはそれさえも平凡な日々

    Perlでデータベースに接続する場合は以下の様な感じになります。どんなORMなりラッパーなりもDBIを利用しているモジュールは内部的にはこういうことをしているわけです。 DBI->connect($dsn, $user, $password, { mysql_enable_utf8 => 1, RaiseError => 1, PrintError => 0, ShowErrorStatement => 1, AutoInactiveDestroy => 1, }); 第1〜第3引数は環境によって差異があるので設定ファイルに情報を持たせると思います。ただ、それにつられて第4引数も設定ファイルに書いてしまうのが散見されますが、これは良くない。 第4引数の値はプロジェクトでは固定に決まっているので、設定ファイルによって自由度を持たせる必要性が全く無いというかむしろ悪。この人の環境ではテストに通

    DBI->connectの第4引数の内容は設定ファイルに書かないほうが良い | おそらくはそれさえも平凡な日々
  • おそらくはそれさえも平凡な日々: CPANモジュールのパッケージングの歴史

    最近同僚が次々とCPAN Authorになってて良い流れだなーとか思っています。 ただ、CPANへのモジュールの上げ方がわからないとか、M::Iを使えばいいのか M::Bを使えばいいのか、それらがそもそも何やってるのか分からないという話も 聞くので、僕自身もその辺の知識を整理してアップデートしました。 とりあえず、今はModule::Buildを使っておけば良いんじゃないかと 思っていますが、そこに至る歴史的経緯をまとめてみます。 大体、以下に書いてあることに加えて、最近の動きを書いています。 Module::Build:MakeMakerの後継者を目指して PerlでCPAN形式のモジュールを配布する場合は、Makefile.PLなりBuild.PLなりを モジュール作者が用意して、それがインストールに必要なファイル類を自動生成 するという流れになっています。 既存の雛形を使うと色々ファ

  • おそらくはそれさえも平凡な日々: awkの代わりにperlを使おう

    perlのコマンドラインオプションには-aってのがあります。これはawkモードです。perl --help見るとautosplit modeとか書いてありますが。 perlは-pや-nオプションを渡す事によってファイルを一行づつ処理してくれますが、その時に-aオプションを渡すと@F配列にフィールドの情報を自動的に入れてくれます。 フィールドのセパレータはデフォルトではスペースですが、-Fオプションで指定可能です。 カンマ区切りのテキストの、最初のフィールドだけを表示したい場合は以下の様な感じ。 % cat test.txt server1,1343363124,30,/video.php server2,1343363110,20,/profile.php server3,1343363115,7,/login.php server1,1343363105,8,/profile.php %

  • おそらくはそれさえも平凡な日々: Akamaiが想像以上に物凄かった件 in Akamai勉強会

    続きというか、お詫びを書きました。 文章を多少修正しました。技術的な点は色々誤りがあると思いますので、あまり信用しないでください。詳しくはgeekpageさんがじきに書いてくださるはずです。 入口にあった、Akamaiサーバーがリアルタイムに捌いているトラフィックを可視化した地球儀が映ったモニターアメリカが早朝なのでトラフィックは850Gbpsと少な目(笑) それでもアメリカのバーの長さは凄い やすゆきさんという方が、Blogでひっそりと告知していたのが、IT勉強会カレンダーに載っていて、それを目ざとく見つけて行ってきた次第。募集枠5人とかだったので、焦って申し込んだら、実際そんなに募集は来なかったみたいで意外。僕なんか「Akamai」って書いてあっただけで飛びついたのに。内輪に近いノリだったてのもあると思うけど、案外「Akamai」には訴求力が無いのかね。まあ、インターネットの裏の支配

  • 1