タグ

Go (golang)に関するnoritadaのブックマーク (15)

  • Go言語のイケてない部分 - ぐるぐる~

    最近色々あって仕事Go言語を使っています。 色々割り切っている言語なので、こんなこと言ってもしゃーないんですが、言語設計はミスってるんじゃなかなぁ、と思わざるを得ない点が多々あります。 使い始めて1か月くらいなので間違ったことを書いているかもしれませんので、何かあれば指摘していただけるとありがたいです。 文ではネガばかり羅列していますが、ランタイムとツール周りは気に入っています。 Goのランタイムを使う、もっと洗練されたAlt Go的なものがあるといいのに(もしくはジェネリクスのったGo2を早くリリースしてほしい)、と思う日々です。 追記: なんか意図とは違った受け取られ方をしている方もいるので追記します。 この記事はあくまで、「Go言語を学ぶにあたって躓いた点」を列挙し、まとめ、理由を考えてみる(教えてもらう)ために書いたものです。 Go言語自体はDisってますが、Go言語ユーザーを

    Go言語のイケてない部分 - ぐるぐる~
  • Go1.20 New Features

    Go1.20 が2023年2月2日にリリースされ、そのリリースノートが公開されています。この記事ではその中から気になったものを抜粋し、いくつかの機能に関しては使用例も載せていきます。 それでは見ていきましょう! spec slice から array への変更が可能になりました。 Go1.17 では slice から array の pointer に変換できる言語仕様が追加されましたが、slice から array に変換するには一度 pointer を経由しなければいけませんでした。Go1.20 からは直接 slice から array に変換できるようになります。 /* slice を要素数4の array に変換する */ x := []int{1, 2, 3, 4} // Go1.20 より前 a1 := *(*[4]int)(x) // Go1.20 以降 a2 := [4]i

    Go1.20 New Features
  • Go Style

    Documents The Style Guide outlines the foundation of Go style at Google. This document is definitive and is used as the basis for the recommendations in Style Decisions and Best Practices. Style Decisions is a more verbose document that summarizes decisions on specific style points and discusses the reasoning behind the decisions where appropriate. These decisions may occasionally change based on

  • hugoの日付書式がクソすぎる(悪いのはgo言語です) - やってみる

    yyyy-MM-dd HH:mm:ssのような書式ではなく2006-01-02 15:04:05である。この数値でなければ正しく表示されない。は? なにこれ? ひどくない? 手順 Go言語をインストールする hugoをインストールする プロジェクト作成&pulpテーマ適用 以下のように設定ファイルを編集する コード 日付の表示形式をyyyy-MM-ddに変更したい。以下のようにする。 config.toml [params] listPageDateFormat = "2006-01-02 15:04:05" singlePageDateFormat = "2006-01-02 15:04:05" 具体的な日時に見えるでしょ? これ、フォーマットなんだぜ……。 ハァ? と思うでよね? ふつうyyyy-MM-dd HH:mm:ssとか%Y-%m-%d %H:%M:%Sとか、そーゆー感じなのに

    hugoの日付書式がクソすぎる(悪いのはgo言語です) - やってみる
  • 米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨

    印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます 米国家安全保障局(NSA)は米国時間11月10日、ソフトウェアのメモリー安全性強化に向けたガイダンスを公開した。同機関はその中で開発者らに対して、ハッカーらによるリモートコード実行(RCE)をはじめとするさまざまな攻撃からコードを保護するために、C#やGoJavaRubySwiftRustといったメモリー安全性の高い言語に移行するよう推奨している。 これらの言語の中では、Javaが企業向けアプリや「Android」アプリの開発で最も幅広く使用されている一方、Swiftは「iOS」アプリの開発環境に取り込まれている点もあって人気プログラミング言語の上位に入っている。また、RustはシステムプログラミングにおいてCやC++の代替とし

    米国家安全保障局、CやC++からメモリー安全性の高いJavaなどへの移行を推奨
  • Devblog of @kdy1

    For context, I'm the creator of the swc project and I previously announced that I would use Go for the new TypeScript type checker. Related: I'm porting tsc to Go Related: Status update of my tsc port I'm announcing two things about the new TypeScript type checker. I'll switch back to the Rust version# I was working on the Rust-based TypeScript type checker before switching to Go. But I decided to

  • Go1.19に採用されたPattern-defeating Quicksortの紹介 - エムスリーテックブログ

    エムスリーエンジニアリンググループ AI機械学習チームでソフトウェアエンジニアをしている中村(po3rin) です。検索とGoが好きです。 最近、Go1.19でsortパッケージのアルゴリズムが一部変更されました。 Pattern-defeating Quicksortが入った時のdiff 1.19リリースノートではPattern-defeating Quicksortが採用されたと紹介があります。実際にsort/zsortfunc.go、sort/zsortinterface.goにそれぞれpdqsort_func、pdqsortという関数があります。 // pdqsort sorts data[a:b]. // The algorithm based on pattern-defeating quicksort(pdqsort), but without the optimizati

    Go1.19に採用されたPattern-defeating Quicksortの紹介 - エムスリーテックブログ
  • Big Sky :: Re: Go言語で画像ファイルか確認してみる

    Go言語で画像ファイルか確認してみる - Qiita Go言語で書かれたサーバーサイドでアップロードされたファイルが画像ファイルか確認する必要があったため今後の備忘録として記載します。 https://qiita.com/tebakane/items/b7a47379659d42364c8d 実は Go にはそれ専用の関数が用意されています。 http package - net/http - Go Packages Package http provides HTTP client and server implementations. Get, Head, Post, and PostFo... https://pkg.go.dev/net/http#DetectContentType バイト列を指定して以下の様に呼び出すだけです。 ct := http.DetectContentTy

    Big Sky :: Re: Go言語で画像ファイルか確認してみる
  • tscをGoに移植 | POSTD

    筆者はTypeScript型チェッカーtscをRustではなく、Goに移植しようと思います。拡張可能なRustプラットフォームSWCの作者の発言としては、奇妙に聞こえるかもしれません。理由を説明したいと思います。 なぜtscを移植するのか TypeScriptの普及が進むにつれて、大規模プロジェクトではあるジレンマに直面しています。型チェックは、ワークフローの中で最も時間がかかるプロセスの一つになっているのです。開発者は、イテレーションのサイクルを遅らせることなく、型安全を保証することを望んでいます。 tsc(TypeScript Compiler)は、型の妥当性をチェックし、コードをJavaScriptにコンパイルします。コードの量が多いほど、コンパイルには時間がかかります。中規模から大規模のTypeScriptプロジェクトでは、このコンパイルに膨大な時間がかかります。開発者はワークフロ

    tscをGoに移植 | POSTD
  • GoのGenericsで差分アルゴリズムを実装してみた

    Go1.18でGenericsが入ったので、昔書いた編集距離(Edit Distance)、LCS(Longest Common Subsequence)、SES(Shortest Edit Script)の計算ができる拙作のdiff実装に適用してみた。 use generics #3 元々はこんな風に文字列(string)にしか適用できなかったが、 diff := gonp.New("abc", "abd") diff.Compose() ed := diff.Editdistance() // 編集距離 is 2 lcs := diff.Lcs()) // lcs is "ab" ses := diff.Ses() // ses is []SesElem{ // {e: 'a', t: Common}, // {e: 'b', t: Common}, // {e: 'c', t: De

    GoのGenericsで差分アルゴリズムを実装してみた
  • プログラミングにおける「納得」と『Goならわかるシステムプログラミング 第2版』 - golden-luckyの日記

    「納得」欲 パソコンやブラウザ、あるいはスマホで使うアプリケーションを作っているとき、自分がやっている「プログラミング」という行為にどこまで「納得」できているでしょうか? 「プログラミングという行為への納得」、ちょっと耳慣れない概念ですよね。実をいうと、さっきこの記事を書き始めたときに思いつきました。プログラムを書いていると、エラーみたいな露骨な躓きがない場合でも、なんかもやもやすることがあります。このもやもや、少なくとも自分は、以下のような側面で一定の「納得」に至っていないことが原因であるような気がしています。 アプリケーションの仕組みをデータ構造やアルゴリズムの言葉で説明しきれるぞ、という側面での「納得」 意図通りの挙動になることに設計レビューやユニットテストや動作検証を通じて確信が持てるぞ、という側面での「納得」 コードがコンピュータやネットワークという物理的な装置の上でどう処理され

    プログラミングにおける「納得」と『Goならわかるシステムプログラミング 第2版』 - golden-luckyの日記
  • 『Goならわかるシステムプログラミング 第2版』の発売を開始しました

    ご来店いただきありがとうございます。 日より『Goならわかるシステムプログラミング 第2版』が販売となりましたのでお知らせいたします。 書は、2017年10月に発行された『Goならわかるシステムプログラミング』の改訂版です。改訂にあたり改めて全体を見直し、加筆修正や古い情報の更新のほか、プロセスの実行に関する説明を中心に構成の見直しをしています。また、コンピュータシステムを扱う際に避けて通れないにもかかわらずまとまった説明があまりないシェルやデバッガに関する解説を追加しています。 なお、第1版を直販サイトでお買い上げいただいた方は、カートに入れてクーポンコード「Go2」を指定することで、第2版を15%オフでお求めいただけます(2022年3月末までを予定)。第1版の購入に利用されたメールアドレスでの購入が必要になります。 PDF(紙書籍にも付いてきます)は日よりダウンロード可能、紙書籍

    『Goならわかるシステムプログラミング 第2版』の発売を開始しました
  • Goに三項演算子が採用されない理由

    Goには「なぜ三項演算子がないの?」という意見を時々見かけます。言語開発側の意見と僕の見解をまとめていきますー。 FAQ その回答はGoのFAQに明瞭に書かれています。 Goに?:演算子がないのはなぜですか? Goには3項テスト操作がありません。 同じ結果を得るには、次を使用できます。 Goに?:がない理由は、言語の設計者が、操作が頻繁に使用されて不可解な複雑な式を作成するのを見ていたためです。 if-else形式は、長くなりますが、間違いなく明確です。 言語に必要な条件制御フロー構造は1つだけです。 ネストを許す GoPythonもif-elseが文であり、式として扱えない方針を採りました。式として扱えないということは、一定の構文でのみ記述が可能ということです。三項演算子はその性質上式として扱えることになります。 式として扱える場合なにが書けるようになるのかというと、各項や条件に式が書

    Goに三項演算子が採用されない理由
  • 【GitHub Actions】Go言語の自動テストからリリースまでを作ってみた - Qiita

    はじめに 今回作成したのはGo言語リポジトリ用ワークフロー。 GitHubに指定されたタグがPushされた時点でテストを実行し問題が無ければ、クロスコンパイルを実施しリリースまで行う。 以下にアップロードしているので利用したい方はこちらからどうぞ。 github-actions-workflows/release_go.yml at master · x-color/github-actions-workflows · GitHub ワークフローの流れは以下となっている。 タグがPushされたことをトリガーにワークフローが起動 依存したモジュールをダウンロード テストを実施 テストに合格した場合、リリースプロセスが始動 ソースコードをzipにまとめリリース クロスコンパイルを実施し、それぞれ生成物をzipにまとめてリリース 以下が実際のworkflowファイル name: Release

    【GitHub Actions】Go言語の自動テストからリリースまでを作ってみた - Qiita
  • Goは本当に1980年代の言語みたいなのか。 - Qiita

    はじめに 2020年8月15日現在、golang.orgのトップページに、The Why of Goという動画が、Featured Videoとして紹介されています。 Goに初めて触れて、ちょうどなぜこうなっている?と思う機会が多かったので、自分なりにまとめてみようと思います。 注: 要約というよりは、気になる部分をピックアップして解釈して文字にしているものなので、総合的な内容は動画を見てください。 Goとは1980年代の言語なのか Goとは1980年代の言語のようだと批判される。糖衣構文、多態、Genericsが使えない、依存性管理が粗末等と批判する人にとってGoは、1980年代以降のプログラミング言語の進化の歴史を無視しているように見えるようだ。 だけど、それらの要素があったら21世紀のプログラミング言語といえるということなのだろうか? このプレゼンテーションでは、そういう疑問をきっか

    Goは本当に1980年代の言語みたいなのか。 - Qiita
  • 1