タグ

goとOSに関するslay-tのブックマーク (17)

  • 改めて見直すGoの特徴

    極力Goならではな特徴をいくつか挙げていく。 依存解決が必要最低限で互換性を考慮しつつ決定的 モジュール単位で依存をダウンロード。コンパイル対象はサブパッケージ単位。 依存の明示方法はコードに埋め込まれ、かつ未参照のインポートはコンパイルエラー。 つまり動作するコードのすべては正確な依存ツリーが明示されていて余計な依存は引き込まれない。 そして持ち前のコンパイルの速さを含め、相当深い依存ツリーでも依存解決にかかる時間は既知の処理系の中でも最速レベル。(唯一勝てるのはプリビルドバイナリが配布されている場合くらい) また、コンパイルやリンクに必要な処理量そのものが比較的少ないため、開発環境負荷も小さい。 かなり巨大なプロジェクトであってもメモリ8GBで困るようなことが無い。つまり、CI環境の維持にもローコストで済む。 ライブラリの提供側では後方互換性が破壊されるような変更はV1->V2というよ

    改めて見直すGoの特徴
  • Go 1.16のembedとchiとSingle Page Application | フューチャー技術ブログ

    シングルページアプリケーションは、一つのHTMLファイルであらゆるページを表現します。history APIを使ってそのようなページが実際にあるかのように振る舞います。 一方で、画面がリロードされたとき、メールでSNSでシェアされたときにその該当ページをきちんと再現するためには、サーバー側でハンドリングを行う必要があります。具体的には、存在しないページがリクエストされたら、アプリケーションのルートとなるHTMLファイルの内容をそのURLから配信するというものです。 https://angular.jp/guide/deployment#server-configuration それにより、どのURLでもJavaScriptが動作し、そのURLで表示すべきコンテンツが表示されます。もし想定していないパスの場合は、ウェブサーバーではなく、JavaScriptがエラーを出します。 Goでウェブサ

    Go 1.16のembedとchiとSingle Page Application | フューチャー技術ブログ
  • Go1.16からのio/ioutilパッケージ | フューチャー技術ブログ

    こんにちは、TIGの辻です。Go 1.16連載の3記事目です。 Go1.16でアップデートがあった io/ioutil パッケージが "deprecated" になる話題のまとめです。 サマリ Go1.16から io/ioutil パッケージの機能が os と io パッケージに移行した これから新しく実装するコードは io や os パッケージの新しい関数を使うことが推奨される io/ioutil パッケージが "deprecated" になるが "deprecated" といっても将来壊れる、ということではない 既存のコードは動作し続ける go fix コマンドは未対応 内容Go1.16から io/ioutil パッケージに含まれる関数が "deprecated" になります。関連するプロポーザルは #40025 と #42026 です。Package names で良くないパッケージ

    Go1.16からのio/ioutilパッケージ | フューチャー技術ブログ
  • 【Go言語】自作コンテナ沼。スクラッチでミニDockerを作ろう - カミナシ エンジニアブログ

    初めまして。株式会社カミナシPMの@gtongy1です。 Dockerというツール。SRE, Backend, Frontendどの領域のエンジニアも馴染みのあるツールではないでしょうか。 コンテナを利用することにより、インフラの環境を一つの空間に梱包し、その内部で柔軟に様々な環境を作ることが出来ます。 コンテナの実体とはなんなのでしょう? 叡智が詰め込まれたそんな一つの宝箱のように見えます。 「 コンテナ作ってみたくなりませんか? 」 僕と同じように知的好奇心をくすぐられたそこのあなた!コンテナ沼の一歩目を一緒に踏み出してみましょう! 検証環境 Ubuntu 18.04 golang 1.15 Dockerの機能おさらい docs.docker.com まず、ドキュメント内を読み進めてDockerに対する知識を整理します。 DockerDocker daemonを基幹とし、その呼び出し

    【Go言語】自作コンテナ沼。スクラッチでミニDockerを作ろう - カミナシ エンジニアブログ
  • Go 製 UI ツールキット Fyne で始めるクロスプラットフォーム GUI アプリケーション開発 · Yutaka 🍊 Kato

    こうやって分類すると、fyne というのはいったい何者なのだと思いませんか? そう思ったわたしは実際に試用してみて気に入り、社内で使う簡単な GUI アプリの開発に採用、ほんの一瞬で目的通りのアプリを実際に作れてしまいました。 作ったアプリはのちほど紹介しますが、まずは基的な使い方と多くの人が遭遇するであろうハマりポイントをいくつか紹介したいと思います。 ただし、現状 GoGUI 領域はまだまだ発展途上です。Fyne においてもデータバインディングやアニメーション機能が未提供だったりと GUI ツールキットとしては大穴があいているのも事実。限界を承知の上で、過度に期待せずに読んでいただけたらと思います。 はじめかた 既に Go 言語の開発環境は整っている前提で始めたいと思います。整っていない方は Getting Started してください。 では早速コードから。”Hello, w

    Go 製 UI ツールキット Fyne で始めるクロスプラットフォーム GUI アプリケーション開発 · Yutaka 🍊 Kato
  • Big Sky :: os/signal に NotifyContext が入った。

    Go のアプリケーションを作っていると、シグナルの受信に伴い処理を中断したり再起動する処理を実装する事が多い。これまでは signal.Notify でシグナルをキャッチし、別途 context.WithCancel で作成したコンテキストを自ら cancel する処理を書かなければならなかった。Go の tip に入ったコミットにより、これが幾分改善される様になった。 package main import ( "context" "fmt" "os" "os/signal" "time" ) func main() { ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) defer stop() select { case <-time.After(time.Second): fmt.Println

    Big Sky :: os/signal に NotifyContext が入った。
  • Go 1.15 リリースノート 日本語訳 - Qiita

    この記事は https://golang.org/doc/go1.15 を日語訳したものです. 前のバージョンはこちら: Go 1.14 リリースノート 日語訳. 次のバージョンはこちら: Go 1.16 リリースノート 日語訳. Go 1.15 の紹介 最新の Go リリース、バージョン 1.15 は、Go 1.14 から6か月後に届きます. その変更点のほとんどは、ツールチェーン、ランタイム、およびライブラリの実装になります. いつものように、このリリースは Go 1 の互換性の約束を守っています. 私たちは、ほとんどすべての Go プログラムが以前と同じようにコンパイルし実行し続けれると予想しています. Go 1.15 には、リンカの大幅な改良、多 CPU コア数での小さなオブジェクトの割り当ての改善、X.509 CommonName の廃止が含まれています. GOPROXY

    Go 1.15 リリースノート 日本語訳 - Qiita
  • File System Interfaces for Go — Draft Design

    Russ Cox Rob Pike July 2020 This is a Draft Design, not a formal Go proposal, because it describes a potential large change, with integration changes needed in multiple packages in the standard library as well potentially in third-party packages. The goal of circulating this draft design is to collect feedback to shape an intended eventual proposal. We are using this change to experiment with new

  • Flavio Copes

    Here are a few of the things I do: BOOTCAMP. Once a year I organize a coding bootcamp to teach you how to build modern Web Applications (next edition Q1 2024). SOLO LAB. I run this course and community to help you start a solopreneur business on the Internet (next edition someday in 2024). BOOKS. I wrote 16 coding ebooks you can download for free on JS Python C PHP etc etc etc. BLOG. I wrote 1600+

    Flavio Copes
  • Chrome OS搭載の新型Chromebook「Pixelbook Go」が登場

    Googleが開催中の新製品発表会「Made by Google ‘19」の中で、Chrome OS搭載の新型Chromebook「Pixelbook Go」を発表しました。価格は649ドル(約7万円)からです。 An ultra-thin, lightweight laptop that's made to move | Pixelbook Go - YouTube 続いて登場したのは…… 新型ChromebookのPixelbook Go。 ボディカラーは3色。 Pixelbook Goのデザインやカラーがよくわかるムービーも公開されています。 A Thin and Lightweight Laptop with a Distinctive Style | Pixelbook Go - YouTube 握りやすいように、体底面には溝がついています。金属仕上げのボディはアルミニウムより

    Chrome OS搭載の新型Chromebook「Pixelbook Go」が登場
  • Goの任意のLoggerをログローテート対応できるreplaceablewriter | おそらくはそれさえも平凡な日々

    https://github.com/Songmu/replaceablewriter 表題の通りですが、io.Writer をラップして io.WriteCloser として振る舞い、その内部に保持した io.Writer を差し替え可能にするライブラリを書いた。 例えば、Goの標準logをログローテートしたい場合には以下のようにします。 f, _ := os.OpenFile("20191001.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) w := replaceablewriter.New(f) log.SetOutput(w) // 翌日になったら差し替える f2, _ := os.OpenFile("20191002.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) w.Repl

    Goの任意のLoggerをログローテート対応できるreplaceablewriter | おそらくはそれさえも平凡な日々
  • Goでファイルの存在確認 - Plan 9とGo言語のブログ

    Goでファイルの存在確認について、インターネットではos.Statの戻り値がエラーかどうかを判定する方法が紹介されていますけれど、os.Statはファイルが存在する場合でもエラーを返すことがあるため、この方法では正しく判定できないケースが存在します。また、複数プロセスが同じファイルにアクセスする場合は、os.Statの直後で、別のプロセスによってファイルが作成されたり削除されたりするかもしれません。正確に存在確認する場合は、存在確認した後に行う処理によっていくつかパターンがありますが、基は、事前に存在を確認するのではなく、意図しない場合にエラーとなるようなフラグを立てておいて、OSのシステムコールが返したエラーを判定することになります。 Cなどでは、Unix系OSと異なり、Windowsは別の関数とフラグを、Plan 9は別のフラグを使いますが、Go標準パッケージのsyscallはその辺

    Goでファイルの存在確認 - Plan 9とGo言語のブログ
  • Go言語: CSVを色分け表示するフィルタ「csvu」を作った|TechRacho by BPS株式会社

    CSVを色分けするだけのコマンド作ってみたhttps://t.co/7CaNaZBrW3 #golang pic.twitter.com/MfeoKQYzyN — OreKanegon (@hachi8833) December 26, 2018 csvuコマンド rainbow_csvというVim向けのプラグインを見かけて、これをCLIでパイプで使いたくなってきました。 ちゃんと探してませんが、ネットにはありそうでなかったっぽいので、帰りの電車が着くまでの間にGo言語でざざっと書いてしまいました。 リポジトリ: hachi8833/csvu 何のひねりもない、Hello Worldに毛が生えたようなツールです。ネーミングも脊髄反射です。 package main import ( "encoding/csv" "fmt" "github.com/logrusorgru/aurora" "

    Go言語: CSVを色分け表示するフィルタ「csvu」を作った|TechRacho by BPS株式会社
  • Goで書けるタスクランナーMageが快適すぎて捗る - Qiita

    Goを始めてからずっと Robo や Task といったYAMLベースのものでビルドタスクを書いていたのですが、プロジェクトが増えてきて限界を感じました。 YAMLベースと言ってもタスクの記述部はあくまでもただのシェルであり、せいぜい「Makefileよりは読みやすいよね」程度。シェルへの依存度が高いと、どうしてもこういう問題が目立ってきます。 環境依存で「動きません」って他のメンバーに言われがち。MacLinuxで date コマンドのオプションが違うとかよくある。かといってビルド用のDockerイメージを作るほどではまだない grep sed 等で正規表現の魔術的な操作が増えると、一見何やってるのか分からなくなりがち エラー処理が雑になりがち。パイプの途中のエラー拾うとかしんどい 遅い。並行処理書くのもしんどい 個別のタスクをライブラリ化してインポートしたいけど、決まったやり方がない

    Goで書けるタスクランナーMageが快適すぎて捗る - Qiita
  • Go言語で知るプロセス(1)

    オペレーティングシステムが実行ファイルを読み込んで実行するには、そのためのリソース(メモリやCPUなど)を用意しなければなりません。 そのようなリソースをまとめたプログラムの実行単位がプロセスです。 プロセスは、オペレーティングシステムが実行ファイルを読み込んで実行するときに新しく作られます。 コンピュータシステムの低レイヤをGo言語で覗いてみるこの連載では、今回から数回に分けてプロセスを見ていきます。 今回の記事で扱うのは次の内容です。 Go言語から見たプロセス プロセスの入出力 プロセスの情報にアクセスする外部ライブラリ OSから見たプロセス これまでの連載で登場したプロセス プロセスはコンピュータシステムの中心となる概念なので、その存在をまったく無視してシステムに関するプログラムを書くことはできません。 そのため、これまでの連載記事でも、プロセスに関連する情報は小出しにしてきました。

    Go言語で知るプロセス(1)
  • Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。

    いまや高速パターン検索といえばag(The Silver Searcher)ですが、検索対象がUTF-8のテキストを前提としているため、EUC-JPやShift-JISといったファイルを検索するのに課題があります。 これまで、それらの日語文字セットを検索できるようにするため、色々とagの改造、公開を行っていました。 ag(The Silver Searcher)でEUC-JP/Shift-JISのファイルも検索できるようにしてみた 日語圏特化型ag -白金- の配備が完了しました しかし、特定の国の文字コードだけに特化した修正というのをmasterに取り込んでもらうわけにもいかず、派生ブランチとして追随するのも、やはり面倒… そこで年始にGo言語を触ったのをきっかけに、Go言語でパターン検索ツールをつくってみました。 せっかくなのでポストagを目指して、プラチナサーチャー(The Pl

    Go言語でag(The Silver Searcher)ライクな高速検索ツールをつくった。EUC-JP/Shift-JISも検索できマス。
  • Go言語のOS X上でのGDBデバッグ環境構築 - unknownplace.org

    Go言語は gdbでのデバッグがサポートされている のだが、OS X でそれを使おうとしたらいろいろ罠にはまったのでここに記しておく。 (このエントリ執筆時の手元の環境は OS X 10.9(.0) Mavericks + Xcode 5.0.1) 罠一覧 OS X 付属のgdbが古い Xcode 5.0.1のclangだとgdbのビルドがこける ビルドするgdbpython2にリンクさせないとGo付属のruntime-gdb.pyが動かない[1] ビルドしたgdbにコード署名をしないと他プロセスをアタッチできない OS X 付属のgdbが古い Goのコードをgdbでデバッグするには、gdb 7.1以上が必要ということだが、OS X (Xcode?) 付属のgdbは古くて使えない。 手元のバージョンは GNU gdb 6.3.50-20050815 (Apple version gdb-

  • 1