nkkkunのブックマーク (90)

  • 意味の違いがわかる? タスクとプロセスとスレッド (1/4)

    「マルチタスク」という言葉を目にしたことのない人は、ASCII.jp読者にはまずいないだろう。また、最近ではあまり聞かないが、「タスク」と似たような用語に「ジョブ」がある。そのため、かつては「マルチジョブ」といった表現がされていたこともある。さらに似たような用語として「プロセス」もあり、やはり「マルチプロセス」という用語がある。また、マルチタスクと同じ意味で使われる言葉に、「マルチプログラミング」というものもある。 いずれも意味としては、「複数のアプリケーションを同時に実行できること」を示しているが、どうしてこんなに複数の用語があるのだろう? 理由のひとつは、かつてコンピューターメーカーがOSを作ってたときに、それぞれのメーカーで異なる用語を使っていたことにある。あるメーカーは、アプリケーションを実行することを「タスクを起動」と言い、別のメーカーでは「ジョブを起動」と呼んだわけだ。 今回は

    意味の違いがわかる? タスクとプロセスとスレッド (1/4)
    nkkkun
    nkkkun 2021/06/27
    “タスクとプロセスとスレッド”の違いについて
  • 【Go入門】関数と可変長引数

    Go言語の関数の定義を扱いましたが、予め定義した数だけの引数を扱っていました。 では、その引数に任意の数だけ渡すとなるとどうなるでしょうか。 関数でこの任意の数の引数を扱って定義するものを、可変長引数(Variadic parameter)といいます。 ここでは、この可変長引数についてみていきましょう。

    【Go入門】関数と可変長引数
    nkkkun
    nkkkun 2021/06/24
    Goの可変長引数について
  • Go言語初心者が失敗しがち/間違えがちなこと5選 - Workship MAGAZINE(ワークシップマガジン)

    シンプルで分かりやすい言語仕様が特徴の、Go言語(Golang)。 軽快な実行速度や書きやすい並列処理、さまざまなOSに対応したクロスコンパイルなど、魅力的な機能を多く揃えている近年注目のプログラミング言語です。 Go言語は他の静的型付き言語と比べて学習コストが低く、いくつかの間違いやすい点を抑えれば扱いやすいでしょう。 今回はGo言語の失敗しがち/間違えがちなことを5つピックアップしました。 1. 変数名と型の宣言で、順序を間違えがち JavaC++、C#などの代表的な静的型付き言語では、型と変数の宣言は「型 + 変数」という順序で行われることが多いです。 一方のGo言語は、「変数 + 型」という順序で宣言を行います。 var string str // 間違い(エラー:undefined: str) var str string // 正しい変数宣言 func output(stri

    Go言語初心者が失敗しがち/間違えがちなこと5選 - Workship MAGAZINE(ワークシップマガジン)
    nkkkun
    nkkkun 2021/06/14
    rune型について
  • Go のインターフェイスの使用 - Training

    11 分 Go のインターフェイスは、他の型の動作を表すために使用されるデータの一種です。 インターフェイスは、オブジェクトが満たす必要があるブループリントやコントラクトに似ています。 インターフェイスを使用すると、コード ベースの柔軟性と適応性が高まります。これは、特定の実装に関連付けられていないコードを記述するためです。 このため、プログラムの機能をすばやく拡張することができます。 このモジュールでは、その理由について理解できます。 他のプログラミング言語のインターフェイスとは異なり、Go のインターフェイスは暗黙的に満たされます。 Go では、インターフェイスを実装するためのキーワードは提供されません。 そのため、他のプログラミング言語のインターフェイスに慣れているユーザーが Go を初めて使用する場合、この考え方はわかりにくいかもしれません。 このモジュールでは、複数の例を使用して

    Go のインターフェイスの使用 - Training
    nkkkun
    nkkkun 2021/06/14
    インターフェースの解説
  • [golang]Interfaceのオススメの使い方 | セルフノート

    こんにちは。KOUKIです。 とある企業でWeb系のエンジニアをしています。開発言語はGo言語です。 「Go言語によるInterfaceのオススメの使い方」について紹介したいと思います。 「Interfaceは名前だけ聞いたことあるけど、あんま使わないな」と思ったそこのあなた!一つの参考例をご紹介できると思います。 Interfaceの基礎については、以下の記事を参考にしてください!

    [golang]Interfaceのオススメの使い方 | セルフノート
    nkkkun
    nkkkun 2021/06/12
    わかりやすいinterfaceのメリット
  • 【Linuxの基礎知識】ディレクトリ構造とファイルシステムについて!

    ディレクトリ構造の違いを理解する WindowsPCに慣れた方であれば、まずPCを立ち上げて何らかのファイルを操作したいとき、Cドライブがあって、場合によっては内蔵のDドライブがあり、外付けしているHDDのEドライブがあり…と、そのようなイメージで使用していることでしょう。 Linuxの場合は、Windowsとはかなり事情が異なり、すべてのディレクトリとファイルがルートディレクトリ配下に置かれることになります。UNIX系OSは、「FHS(Filesystem Hierarchy Standard)」というファイルシステムの階層標準が定められているのです。 Linuxファイルシステムの階層標準 「FHS」は、Linux(などのUNIX系OS)の標準的なディレクトリ構成を定めた標準仕様です。

    【Linuxの基礎知識】ディレクトリ構造とファイルシステムについて!
    nkkkun
    nkkkun 2021/06/11
    Linuxファイルの基礎
  • イケてるエンジニアになろうシリーズ 〜メモリとプロセスとスレッド編〜 - もろず blog

    最近はとても便利なプラットフォームがいっぱいあって、 詳細な中身を意識しなくても簡単に使えるという素晴らしい時代ですが、 深くまで突っ込んで考えないといけない場面が たまーーーーーーーに でてきます その時になって初めて、 誰かが用意してくれた快適な環境を使っていただけで自分では何も解決できない という現実を叩きつけられるわけです 大げさに言いましたすみません ちょっと前に仕事でサーバーのパフォーマンス調査をする機会があり、 その中で "プロセス" と "スレッド" って一体何が違うの!? って疑問にぶち当たりました わかるような、わからないような 何となくわかったつもりになっている事でもそろそろちゃんと理解して、 今日からイケてるエンジニアになりましょう この記事では 1. マルチタスクOSとプロセス 2. メモリの役割 3. 物理アドレスと仮想アドレス空間 4. プロセスがメモリに保持

    イケてるエンジニアになろうシリーズ 〜メモリとプロセスとスレッド編〜 - もろず blog
    nkkkun
    nkkkun 2021/06/10
    Linuxの仕組みについて
  • イケてるエンジニアになろうシリーズ 〜メモリとプロセスとスレッド編〜 - もろず blog

    最近はとても便利なプラットフォームがいっぱいあって、 詳細な中身を意識しなくても簡単に使えるという素晴らしい時代ですが、 深くまで突っ込んで考えないといけない場面が たまーーーーーーーに でてきます その時になって初めて、 誰かが用意してくれた快適な環境を使っていただけで自分では何も解決できない という現実を叩きつけられるわけです 大げさに言いましたすみません ちょっと前に仕事でサーバーのパフォーマンス調査をする機会があり、 その中で "プロセス" と "スレッド" って一体何が違うの!? って疑問にぶち当たりました わかるような、わからないような 何となくわかったつもりになっている事でもそろそろちゃんと理解して、 今日からイケてるエンジニアになりましょう この記事では 1. マルチタスクOSとプロセス 2. メモリの役割 3. 物理アドレスと仮想アドレス空間 4. プロセスがメモリに保持

    イケてるエンジニアになろうシリーズ 〜メモリとプロセスとスレッド編〜 - もろず blog
    nkkkun
    nkkkun 2021/06/10
    Linuxの仕組みについて
  • プログラマの採用面接で聞かれる、データ構造とアルゴリズムに関する50以上の質問 | POSTD

    情報科学科の卒業生やプログラマの中には、UberやNetflixのような新興企業や、 AmazonMicrosoftGoogle のような大企業や、InfosysやLuxsoftのようなサービスを基とする企業で、プログラミング、コーディング、ソフトウェア開発の仕事に就きたいと考える人が大勢います。しかし、実際にそういった企業で面接を受ける場合、大半の人が プログラミングに関してどのような質問をされるか 見当もつきません。 この記事では、 新卒生からプログラマになって1〜2年までの 経験値が異なる人たち向けに、それぞれの プログラミングの面接でよく聞かれる質問 をいくつか紹介していきます。 コーディングの面接では、主に データ構造とアルゴリズムに基づいた質問 がされますが、 一時変数を使わずにどのように2つの整数をスワップするのか 、というような論理的な質問もされるでしょう。

    プログラマの採用面接で聞かれる、データ構造とアルゴリズムに関する50以上の質問 | POSTD
    nkkkun
    nkkkun 2021/06/06
    アルゴリズムについての質問
  • DATA-DOG/go-sqlmockを使ってGormDBをmockする

    mockを作成 sql-mockはsqlmock.New()という関数を持っており、 そちらを利用するとテスト関数に渡すDBと振る舞いを定義出来るmockを返してくれます。 さらに今回Gormを使用したいので、そのDBに対してgorm用のコネクションを作成しておきます。 僕はPostgreSQLを利用していたので、PostgreSQL用のコネクションを生成します。 func GetNewDbMock() (*gorm.DB, sqlmock.Sqlmock, error) { db, mock, err := sqlmock.New() if err != nil { return nil, mock, err } gormDB, err := gorm.Open( postgres.New( postgres.Config{ Conn: db, }), &gorm.Config{}) i

    DATA-DOG/go-sqlmockを使ってGormDBをmockする
    nkkkun
    nkkkun 2021/06/02
    “GormDBをmock”
  • nosuke.me

    This domain may be for sale!

    nkkkun
    nkkkun 2021/06/02
    Goのsql-mockについて
  • まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro

    第0回 あらためてRuby入門 まつもとゆきひろ氏自身による「Ruby入門」をお届けします。日経Linuxの連載開始前の特別企画(2005年4月号)として,Rubyが他のスクリプト言語やオブジェクト指向言語とどこが違うのか,なぜ便利なのかを中心に解説してもらったものです。 ● 基と他言語との違い ● 実装とRuby誕生の秘密 第1回 プログラミングとオブジェクト指向の関係 プログラマを目指す人々の中にも,「オブジェクト指向は難しい」とか,「なかなか分からない」という印象を持つ方が多いようです。そこで,Rubyを題材にオブジェクト指向という考え方について説明していきます。 ● その1 ● その2 ● その3 第2回 抽象データと継承 オブジェクト指向プログラミングを構成する3原則のうち,前回は「ポリモーフィズム」を学びました。今回はオブジェクト指向の歴史を復習した後,残りの「データ抽象」と

    まつもと直伝 プログラミングのオキテ---目次 - まつもと直伝 プログラミングのオキテ:ITpro
    nkkkun
    nkkkun 2021/05/24
    まつもとさんの記事 あとで読む
  • 今までにGoでよく聞かれた質問とその参考リンク - ぷらすのブログ

    こんにちは、@p1assです。 最近研修で Go を書いていて、その際にいくつか質問をされるのですが、聞いてみると前にも答えたような質問が多かったので、これを機にブログに参考リンクをまとめようと思います。 質問された際にすぐ答えられない質問も数多くあり、調べたり教えてもらったりすることで様々なことを再発見できました。 この記事では、質問に対する回答をできるだけ公式に近い文章を引用する形で書き記します。私個人の考えは別の段落になるようにして、事実と意見を区別するように心がけています。 なにか誤りを見つけた際は GitHub で PR を投げていただけると助かります。 言語仕様 関数の引数は値渡しか参照渡しか? Go はすべて値渡し (pass by value) です。 ポインタの場合は、ポインタそのものがコピーされポインタの指し示す先の値はコピーされません。 Go の多値返却はタプルか?

    今までにGoでよく聞かれた質問とその参考リンク - ぷらすのブログ
    nkkkun
    nkkkun 2021/05/24
    よくあるGoの疑問
  • テスト駆動開発でGO言語を学びましょう | テスト駆動開発でGO言語を学びましょう

    **テスト駆動開発(TDD)で基礎を身につけましょう。**GoはTDDを学習するのに適した言語です。なぜなら、学習するのが簡単な言語であり、テストが組み込まれているからです。

    テスト駆動開発でGO言語を学びましょう | テスト駆動開発でGO言語を学びましょう
    nkkkun
    nkkkun 2021/05/14
    Goのテストの様々なパターン
  • リクルートテクノロジーズ エンジニアコース新人研修の内容を公開します!(2020年度版) | Recruit Tech Blog

    こんにちは! リクルートテクノロジーズでセキュリティエンジニアとして活動している、藤原 巧です。 毎年恒例となっており、大きな反響をいただいている、エンジニアコースの新人研修の内容を紹介させていただきます。 研修の概要 リクルートテクノロジーズでは、新卒採用の新人向けに3ヶ月間の技術研修を行っています。この技術研修では大きく分けて2つのコースが設けられています。 1. プログラミングやWebサービスの構造の基礎を体系的に学び、その後一人につき、ひとつのスマホサイトを企画からリリースまで行うコース 2. 一定以上のプログラミングスキルと開発系経験がある新人に向けた、実際の開発で必要となる様々な技術要素をより深く学び、その後実際のサービスでチーム開発にてOJTを行うコース 今回公開するのは 2. で使用した資料です。 この技術研修は、そのほとんどの部分を内製で実施しています。 この研修の最大の

    リクルートテクノロジーズ エンジニアコース新人研修の内容を公開します!(2020年度版) | Recruit Tech Blog
    nkkkun
    nkkkun 2021/05/11
    エンジニアとしての学びの姿勢がわかる
  • GoにおけるDI - morikuni blog

    Go4 Advent Calendar 2017 12日目の記事です。 昨日(12/11)はgolang.tokyo #11でLTをしてきました。 LTは時間の都合上「DIコンテナを使わないDI」というタイトルでしたが、この記事では「GoにおけるDI」をテーマに、もう少し広い範囲のことを書きます。 DIとは? DIはDependency Injection(依存性の注入)の略称で、ある処理に必要なオブジェクト(や関数)を外部から注入(指定)できるようにする実装パターンです。 依存するオブジェクトを注入すること自体を指す場合もあります。 基的には依存するオブジェクトをInterfaceとして定義し、Interfaceにのみ依存させることで、実装を入れ替えられるようにするというものです。 なぜDIするか? DIする利点として挙げられるのは主に次の2点です。 ユニットテストが書きやすくなる オ

    GoにおけるDI - morikuni blog
    nkkkun
    nkkkun 2021/05/11
    golangでDIのいろいろなパターンがわかる
  • Goで無限ループのテストの書き方がわかんなかった

    nkkkun
    nkkkun 2021/05/10
    go mock でループのテストの方法
  • リポジトリとDAOの違い

    リポジトリとDAOは似ていますが、どこか違いがありそうです。リポジトリとDAOはどちらもアプリケーションコードとデータストアの間に位置します。リポジトリとDAOの違いはどこにあるのか、参考文献からそれぞれの目的を調べてみます。また具体的にリポジトリとDAOをどう使い分けられそうかを考えてみます。 リポジトリはドメインオブジェクトのコレクション A Repository mediates between the domain and data mapping layers, acting like an in-memory domain object collection. – P of EAA: Repository リポジトリはエンタープライズアプリケーションアーキテクチャパターンにおいて次のように説明されています。リポジトリはドメインとデータマッピングレイヤをとりなして、インメモリなド

    nkkkun
    nkkkun 2021/05/08
    リポジトリの役割について
  • 【Go + レイヤードアーキテクチャー】DDDを意識してWeb APIを実装してみる

    更新(2019年10月30日)初回投稿から3ヶ月経ちました。 この3ヶ月で新しく得た知見を基に、内容を一部アップデートしました。 今回やることGoのディレクトリ構成についていろいろと調べる中で、 こちらの資料 がとても分かりやすかったので、 今回はこちらを参考にGoでWeb APIを作っていきたいと思います。 加えて、プロジェクトでは、DDD と レイヤードアーキテクチャー を取り入れます。 (内容はほぼレイヤードアーキテクチャになってしまいましたが…) DDD については、「DDD を Go とレイヤードアーキテクチャでやるなら、こんな感じかな?」という個人の見解レベルです。 パッケージ構成の参考になれば幸いです。 (ですので、ドメインモデルは重度のドメイン貧血症に陥っていますw) 釣りタイトルみたいになっちゃっててすみません🧝‍♀️ 環境MacOS Mojave 10.14.6Go

    nkkkun
    nkkkun 2021/05/07
    アーキティクチャ ーに置けるinterfaceの役割について
  • Go言語のスタックとヒープ

    GoCon 2013 Autumn で「Go言語のスタックとヒープ」という発表をしました。 資料はこちら: http://goo.gl/s6at62 スライドだけでは分かりにくい部分もあるので、ブロク記事として以下にも記しておきます。(この記事を読めば、スライドは読まなくてOKなはず) スタックとヒープについて 実行時に動的にメモリを確保する領域として、スタックとヒープがある。 スタックメモリは関数のコールスタックを格納していて、ローカル変数、引数、戻り値もここに置かれる。 スタックのPushとPopは高速なので、オブジェクトをスタックメモリに確保するコストは小さい。ただし関数を抜けてスタックがPopされると解放されるので、関数の寿命を超えてオブジェクトは生存できない。 一方のヒープメモリは、コールスタックとは関係ないので、関数スコープに縛られずにオブジェクトを確保しておける。ただし空き領

    Go言語のスタックとヒープ
    nkkkun
    nkkkun 2021/05/04
    Goのスタックとヒープについて