サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
画力アップ
www.ymotongpoo.com
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 Goにおける文字列、バイト、ルーンと文字 Strings, bytes, runes and characters in Go By Rob Pike はじめに 1つ前の記事 では、その実装の背後にある機能を解説する例とともに、Goにおいてスライスがどのように動作するかを説明しました。 その知識を前提として、この記事ではGoにおける文字列について話します。 まず最初に、文字列はブログの記事にしては簡単すぎるように見えるかもしれませんが、上手に使うには文字列の動作を理解するだけでなく、 バイト、文字、ルーンの違いについても理解し、UnicodeとUTF-8の違いについても理解し、文字列と文字列リテラルの違いについても理解し、 その他多くの細かな違
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 Go 2にむけて Toward Go 2 by Russ Cox はじめに (この文章は本日行われた Gophercon 2017 での私の発表の書き起こしで、Goコミュニティ全体にGo 2のための議論や計画をする中での支援を求めるものです。 動画が公開されたらこちらにリンクする予定です。) Rob Pike、Robert Griesemer、そしてKen Thompsonが新しいプログラミング言語について数日議論を重ねた後、2007年9月25日にRobが「Go」という名前を提案しました。 翌年、Ian Lance Taylorと私がチームに参加し、5人で2つのコンパイラと標準ライブラリを開発し、その成果が2009年11月10日のオープンソース
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 定数 Constants by Rob Pike はじめに Goは、数値型を混合して操作することを許さない静的型付け言語です。 flaot64 を int に 足せませんし、さらに言えば int32 を int を足すこともできません。しかし、 1e6*time.Second や math.Exp(1) あるいは 1<<('\t'+2.0) と書くことは許されています。Goでは、定数は変数と違って、 通常の数字と同様に振る舞います。この記事では、なぜそうなっているのか、そしてそれが何を意味するのかを 説明します。 背景: C言語 Go言語を考え始めた初期の頃、C言語やその系譜の言語が数値型をまぜこぜに使うことを許していることで起きている多くの問
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 Goの並行パターン:コンテキスト Go Concurrency Pattern: Context by Sameer Ajmani はじめに Goで書かれたサーバでは、サーバに来たリクエストはそれぞれそれ自身のゴルーチンで処理されます。 リクエストハンドラはしばしばデータベースやRPCサービスといったバックエンドにアクセスするために追加でゴルーチンを起動します。 リクエストの処理を行っているゴルーチンは、通常エンドユーザのアイデンティティや認可トークン、リクエストの期限などリクエスト固有の値へのアクセス権が必要です。 リクエストがキャンセルされたりタイムアウトした場合には、システムがそれらのゴルーチンが使っていたリソースを再度要求することができ
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 Goでの文字列の正規化 Text normalization in Go by By Marcel van Lohuizen はじめに 先の記事では、Goでの文字列、バイト、文字について説明していました。 私は go.text レポジトリ(訳注:現在は golang.org/x/text パッケージ群、以下原文で go.text の部分は置き換える。)で多言語文字列処理向けの様々なパッケージの開発に関わってきました。 これらのパッケージのいくつかは別のブログポストに譲って、この記事では go.text/unicode/norm (訳注:現在は golang.org/x/text/unicode/norm)に焦点を当てたいと思います。 このパッケ
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 配列、スライス(と文字列):'append'の動作原理 (Arrays, slices (and strings): The mechanics of 'append') 配列、スライス(と文字列):’append’の動作原理 Arrays, slices (and strings): The mechanics of ‘append’ By Rob Pike はじめに 手続き型プログラミング言語において共通した機能のひとつに配列という概念があります。配列は単純に見えて、言語に追加する際には 答えなければならない多くの設問にこたえなければいけません。たとえば次のようなものです。 固定長なのか、可変長なのか 長さは型に含めるのか 多次元配列はどの
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 パッケージ名 Package names By Sameer Ajmani 序文 Goのコードはパッケージの形で整理されています。同一パッケージ内では、どのような識別子(名前)も 参照することが可能ですが、そのパッケージを利用する場合は、パッケージが外部に公開している型、関数、 定数、変数しか参照できません。パッケージの参照元は常に接頭辞としてパッケージ名を付ける必要があります。 例えば、 foo.Bar はインポートしている foo というパッケージ内の Bar という公開された名前を 参照しています。 良いパッケージ名はコードをより良いものにします。パッケージ名は、その中身の文脈を教えてくれ、参照元で 利用しているパッケージの目的と使用方法
The Go Blogの日本語訳を公開しています。修正は https://github.com/ymotongpoo/goblog-ja/ まで。 エラーは値 Errors are values by Rob Pike Goプログラマ、特にまだGoに不慣れな開発者に共通する議論の話題といえば、エラー処理の方法でしょう。 議論が次のようなコードの連続になることを嘆く結論に至ることがしばしばあります。 if err != nil { return err } 先日、確認できるすべてのオープンソースプロジェクトをスキャンしてみたところ、このスニペットは 先のような開発者が信じているほどではなく、せいぜい1ページに1つか2つ現れる程度であることがわかりました。 それでもなお、いつも次のイディオムをタイプしなければいけないと強く信じているのであれば、 それは何かが間違っていますし、明らかに問題の対象
言語タグは一般的に言語コード(上記での“en”, “cmn”, “zh”, “nl”, “az”)が来た後に付加的な文字に関する副タグ(“-Arab”)や 地域に関する副タグ(“-US”, “-BE”, “-419”)、変数の副タグ(オックスフォード英語大辞典でのスペルのための “-oxendict”)、あるいは 拡張副タグ(電話帳順のための “-u-co-phonebk”)が続きます。 もっとも一般的な形式は副タグが省略された形、たとえば “az-Latn-AZ” であれば “az” です。 言語タグがもっとも使われる場所は、システムがサポートしている言語の一覧からユーザーが好みの言語を選択するときでしょう。 たとえば、(アフリカーンス語が選択できない場合に)アフリカーンス語を望んでいるユーザーに対しシステムはオランダ語を表示するという決定をする場合です。 このような対応は言語間の包含性
20.1. 悪から善へ¶ スーパバイザは、OTPのうち、あなたが使うようになるものとして、最も役に立つものです。 先の エラーとプロセス と 並列アプリケーションを設計する の章で基本的なスーパバイザについて見てきました。 これらを、エラーが起きたときにおかしなプロセスを再起動するだけでソフトウェアを稼働し続ける方法として、スーパバイザに触れました。 もうちょっと詳細に言うと、私たちが書いたスーパバイザはワーカプロセスを立ち上げて、それにリンクを張って、プロセスがいつ死んだかを知るために process_flag(trap_exit, true) で終了シグナルを捕捉して、死んだワーカプロセスを再起動します。 この動作は再起動を望んでいる場合はいいのですが、かなり間抜けな動作でもあります。 たとえば、リモコンをつかってテレビを点ける場合を想像してみましょう。 最初上手く点かなかった場合、ち
12. 並列性へのヒッチハイク・ガイド¶ 流行遅れとなった21世紀の初頭の未知の僻地のはるか向こうに人知の欠片があった。 この人知の部分集合の中には、まったく重要でない小さな原理がありますが、たとえばフォン・ノイマン型アーキテクチャhああまりにも原始的すぎて、まだ逆ポーランド記法計算機のほうがずっといいアイデアとして認識されています。 この原理には問題があります。あるいはありました。それはこのような問題です:その原理を勉強している大抵の人間はとても長い時間を並行ソフトウェアを書くことに費やすことにうんざりしています。 この問題には多くの解決策が提案されていますが、ほとんどがロックやMutexなどと呼ばれる小さな理論の数々を扱うことに終始しています。 これらの理論は、全体として並列性を必要とする論理の各小さい部品ではなかったので追加されました。 そしてまだ問題は残っています。多くの人は知識が
26. バケツいっぱいのソケット¶ これまで、Erlang自身で面白いことをしてきましたが、かろうじて外の世界とのやり取りを、あちこちのテキストファイルの読み書きだけでは行なっていました。 ローカルでのやり取りも面白いですが、そろそろ外へ飛び出して、外の世界とのやり取りを始めてみましょう。 この章では、ソケットを使った3つのコンポーネントを扱います。IOリスト、UDPソケット、TCPソケットの3つです。 IOリストは話題としては極端に複雑なものではありません。単純に、ソケットや他のErlangドライバ越しに送る文字列を効率的に作る賢い方法というだけです。 26.1. IOリスト¶ このガイドの始めの方で、テキストを扱う際には、文字列(整数のリスト)かバイナリ(データを保持しているバイナリデータ)のどちらも使えるという話をしました。 たとえば「Hello World」という文字列をネットワー
16.1. それはOpen Telecom Platformだ!¶ OTPというのはOpen Telecom Platformの略です。今となってはもうテレコムとは関係ないのですが。(テレコムアプリケーションの性質に関して言いたいことはあるのですが、いまはやめときましょう) Erlangの偉大さの半分が並列と分散によるものだとしたら、もう半分はエラー処理の能力から来るものです。 そうしたときにOTPフレームワークはやはり全体の半分に関わっています。 前の章では、言語の組み込み関数(リンク、モニター、タイムアウト、終了の捕捉など)を使ってどのように並列アプリケーションを書くかについて、よくある方法の例をいくつか見てきました。 やるべき事の順番、競合条件をどのように避けるか、プロセスはいつでも死ぬ可能性があることを常に意識するなど、ところどころでいくつか「わかった」ことがありました。 ホットコ
翻訳について¶ このドキュメントは、Learn you some Erlang for great good! (http://learnyousomeerlang.com/) を著者の許可の下、日本語訳したものです。ドキュメントのランセンスはCreative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported、ソースコードのライセンスは修正BSDです。
33.1. PLTは最高のサンドイッチ¶ 型(あるいはそれを欠いています) で、Dialyzerという、Erlangの型エラーを検知するツールを紹介しました。 この翔では、Dialyzerに完全に焦点を当てて、実際にErlangでの型エラーの検知を行う方法やその他の矛盾を検知するためのDialyzerの使い方を紹介します。 なぜDialyzerが作られたかを見ていくことから始めて、その次にその指針となる原則は何か、そして型に関連するエラーを検知する性能、最後にその使い方の例を紹介します。 Dialyzerは、Erlangコードを解析するときに非常に効率的なツールです。 Dialyzerはあらゆる種類の矛盾、例えば1度も実行されないコードを検知するために使われますが、主な用途はErlangコードベース内の型エラーの検知に関することです。 多くを見る前に、DialyzerのPersistent
このページを最初にブックマークしてみませんか?
『ymotongpoo (Yoshi Yamaguchi)』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く