タグ

Goに関するotori334のブックマーク (12)

  • Goの苦手な領域

    Goの利点を使って実装するコツやノウハウを書くことがコミュニティにとってプラスになると思っているのでそれに専念したいという考えはありますが、Goの苦手な領域にGoを採用してしまってヘイトを溜め込んでしまう事例を見かけたりします。 こういう悲劇の起こる可能性を少しでも減らせたらという思いで、Goの現状の苦手な領域について解説しようと思います。Goを学び始めにこれらの領域に手を出すのは避けましょう。 Cgo is not Go GoCGO連携でC/C++資産を利用することができますが、メモリアロケータの異なる処理系を繋ぐ関係上、お互いに呼び合う際のパラメータや戻り値はほとんどのケースでコピーが必要になります(Cの型でメモリ確保しCの型のまま受け渡しする場合はOK)。なので高頻度に呼び合うような用途には不向きであるというのはSWIGなどのような複数の処理系を連携させる仕組みと同様です。 また、

    Goの苦手な領域
    otori334
    otori334 2021/09/20
  • 1ms 以下のリアルタイムオブジェクト検出/画像処理を目指して Goの配信サーバサイドで通知ぼかしを実装してみたこと - Mirrativ Tech Blog

    こんにちは ハタ です。 今回は以前iOSのクライアントサイドで実装していた通知ぼかし機能をサーバサイド(配信サーバ)上に再実装した事を書きたいなと思います 今回はかなり内容を絞りに絞ったのですが、長くなってしまいました、、 目次機能があったのでつけてみました、読み飛ばして読みやすくなった(?)かもしれません 目次 目次 通知ぼかし機能とは サーバサイド通知ぼかし プロトタイプの実装 苦労の始まり その1 画像処理速度 苦労の始まり その2 データ量 さらなる計算量の削減を求めて さらなる最適化へ Halide の世界へ 簡単な halide の紹介 苦労の始まり その3 いざ リリース リリースその後 We are hiring! 通知ぼかし機能とは 通知ぼかし機能は、ミラティブ上での配信中に写り込んでしまったiOSの通知ダイアログをダイアログの中身を見えないようにぼかし処理をしてあげる

    1ms 以下のリアルタイムオブジェクト検出/画像処理を目指して Goの配信サーバサイドで通知ぼかしを実装してみたこと - Mirrativ Tech Blog
  • GoのAPIが厳格でない訳

    Windows対応の曖昧なAPIを非難する記事 この記事はGoが曖昧に扱うAPIについて非難していて、より厳格に扱うことのメリットを解説しています。 Goのこれらの指摘の挙動が実際にどの様なものかを解説していきます。 無視する挙動 Goの標準ライブラリのAPIはどちらかというとUnix/Posixに寄せていて、一部のWindowsに無い概念に関する処理(ファイルのパーミッション操作など)は黙って無視したりする。 これはUnix/Posix用の実装が同じソースコードのままWindowsでも動作するために必要なダミーです。ここでそのようなダミー実装をアプリケーション作成側の責任にすると実装やテストが大変面倒になってしまう。 逆に、GoではUnix/Posixにあるforkやthreadに関するAPIをサポートしません。特にforkというAPIWindowsには全くない概念であり、互換性を取る

    GoのAPIが厳格でない訳
  • deflate と zlib と gzip の整理 - Qiita

    Wikipedia: https://ja.wikipedia.org/wiki/Deflate Deflate(デフレート)とはLZ77とハフマン符号化を組み合わせた可逆データ圧縮アルゴリズム。 deflate = 圧縮アルゴリズム(LZ77 + ハフマン符号) Golangのパッケージ: https://golang.org/pkg/compress/flate/ Wikipedia: https://ja.wikipedia.org/wiki/Zlib zlibは、データの圧縮および伸張を行うためのフリーのライブラリである。 ヘッダーやフッターなどのデータ形式はRFC 1950 (ZLIB Compressed Data Format Specification)として仕様化されている。 zlib = 圧縮ライブラリ名 兼 ヘッダ/フッタフォーマットの定義 圧縮アルゴリズムは def

    deflate と zlib と gzip の整理 - Qiita
  • SNAKE(EKANS)ランサムウェアの内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社

    ここ数日ホンダがサイバー攻撃を受けたというニュースが世界各国で報じられています。 記事では、一部で関連性が指摘されているVirusTotalにアップロードされたSNAKEランサムウェアの検体(※)について解析を行い、現時点までに判明した内容を簡単ですが共有します。海外ではすでにいくらか情報は出ているものの、日語での解析記事はあまりないと思われるため何かの参考になれば幸いです。 ※ハッシュ値:d4da69e424241c291c173c8b3756639c654432706e7def5025a649730868c4a1 なお弊社では、検体がホンダに対するサイバー攻撃と関連があるかどうかは把握しておらず、記事はあくまで上記ハッシュ値の検体の解析結果に終始している点をご了承ください。 ■検体調査 まず、当該検体は以下の通り、日国内から6/8頃にVirusTotalにアップロードされてい

    SNAKE(EKANS)ランサムウェアの内部構造を紐解く | 技術者ブログ | 三井物産セキュアディレクション株式会社
  • Goでプログラムを終了するときのお作法 - My External Storage

    Goにはいくつかプログラムを終了させる手段が存在する。 プログラムを終了させるときにどれを選べばいいか調べてみた。結論から言うとmain関数内でdeferを使わずos.Exit関数を呼ぶ。 TL;DR Goで意図的にプログラムを終了させることができる処理は次のとおり https://golang.org/pkg/os/#Exit https://golang.org/pkg/builtin/#panic https://golang.org/pkg/runtime/#Goexit main関数内でdeferを使わずos.Exit関数を呼ぶのが一番良いと思う panic関数は終了コードを明示的に決めることができない 一方ですべてのゴルーチンを停止してくれるらしい runtime#Goexit関数をmain関数で呼ぶのは行儀が悪そう Calling Goexit from the main g

    Goでプログラムを終了するときのお作法 - My External Storage
    otori334
    otori334 2021/07/01
  • Goでは○○envが不要になった理由(バージョンアップを怠ると損する理由)

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

    Goでは○○envが不要になった理由(バージョンアップを怠ると損する理由)
    otori334
    otori334 2021/06/26
  • プログラミング言語Go完全入門

    プログラミング言語Go完全入門 @tenntenn プログラミング言語Go完全入門の資料を用いて、Gopher道場の講義を始めていきたいと思います。 スライドはこのURLから閲覧できます。 スライドURL: http://tenn.in/go

    プログラミング言語Go完全入門
    otori334
    otori334 2021/06/22
  • Goでの並行処理を徹底解剖!

    並行処理をうまく使うのは難易度が高めです。 それゆえに、go文とチャネルについて基的な文法書で知った後「並行処理ちゃんとできる!」の段階まで自力でたどり着くのは大変でしょう。 このは、 *「並行処理ってやって何が嬉しいの?」 *「ゴールーチンとかチャネルとかって一体何者?」 *「ゴールーチンやチャネルを使ったうまいコードの書き方が知りたい!」 *「Goランタイムで並行処理をどううまく処理しているか知りたい!」 といった要望にお答えする、「Goでの並行処理」に関連した事柄について網羅的・徹底的に書きまくったものです。

    Goでの並行処理を徹底解剖!
    otori334
    otori334 2021/06/19
  • NikonのカメラをWebカメラにする方法(もちろんマルチOSで) - Zopfcode

    がなかったので、自分で開発した。その後発表された公式アプリやSparkoCamとの差についてはこちらを参照。 tl;dr 最新リリースと動作確認情報(2020/11/26 現在) 類似ソフトウェアとの比較 使い方 経緯 開発 まとめ tl;dr 概観 github.com カメラからライブビュー (LV) を取ってきてOBS経由で仮想カメラにするソフト mtplvcap をGoで書いた PCやスマホからカメラのフォーカス等を制御できるリモコンもある libusbとOBSのおかげで Windows/macOS/Linux 全対応! マジめっちゃ動作確認情報を欲してるので、動いた/動かなかった情報を@puhitakuにガンガン送ってほしい(DM可) 最新リリースと動作確認情報(2020/11/26 現在) Version 1.1.2リリース。 開発者 puhitaku は新しい機種での動作確認

    NikonのカメラをWebカメラにする方法(もちろんマルチOSで) - Zopfcode
  • とほほのGo言語入門 - とほほのWWW入門

    Google が開発したプログラミング言語です。「Go言語」や「Golang」と表記されます。 UNIX、B言語(C言語の元)、UTF-8の開発者ケン・トンプソンや、UNIX、Plan 9、UTF-8の開発者ロブ・パイクによって設計されました。 静的型付け、メモリ安全性、ガベージコレクションを備えるコンパイル言語です。 シンプル、高速、メモリ効率が良い、メモリ破壊が無い、並行処理が得意などの特徴を備えています。 メモリ破壊が無く、並行処理を得意とする、進化したC言語という側面があります。 LinuxMac OS X、WindowsAndroid、iOS で動作します。 おおよそ半年に一度バージョンアップを行っているようです。このページは Go 1.14 をターゲットに記述しています。 Go 1.18 2022年3月15日 速度改善、ジェネリクス、ファジングテストツール、ワークスペースモ

    otori334
    otori334 2020/06/23
  • [ Golang ] Go 言語入門~ Web スクレイピング ~ - H型プログラミング

    スクレイピングとはウェブサイトからデータを取得し、そのデータを自分が欲しい情報に加工することです。 通常ブラウザで見るウェブサイトは、HTML等で書かれたテキストデータをブラウザで読み込んで、見た目に反映させています。スクレイピングでは、HTMLでの文字データを直接取得し、そのデータから、自分の欲しい情報を取得します。 WebAPIとの違い前回のGo入門day2-WebAPIで、WebAPIがありましたが違いは、提供の仕方です。 APIは、サービス運用側から開発者用に公開している機能です。一方で、スクレイピングは公式に提供されていません。 そのため、アクセスしすぎると、法に触れることがありますので、気をつけてください。今回作成したものに関して、自己責任でお願いいたします。 今回の製作物ニュース一覧を取得し、CSVに出力する ニュース一覧を取得し,CSVに出力する今回はAAAの西島さんのニュ

    [ Golang ] Go 言語入門~ Web スクレイピング ~ - H型プログラミング
  • 1