yikegaya’s blog

仕事関連(Webエンジニア)と資産運用について書いてます

「Goならわかるシステムプログラミング」の17章を読んだ(Go言語とコンテナ)

コンテナ 仮想化は、使いたいサービスだけでなくOSも含めてまるごと動かすことが前提の仕組みです。そのため、たとえばゲストOSとホストOSが同じLinuxであればカーネルやシステムのデーモンを重複してロードすることになり、無駄にメモリを消費してしまいま…

「Goならわかるシステムプログラミング」の16章を読んだ(時間と時刻)

OSが使う時間の仕組みは歴史的経緯などもあって少し複雑な構成をしており、たくさんの種類のタイマーやカウンターがあります。 リアルタイムクロック(RTC) システムクロック タイムスタンプカウンター(TSC) 各種タイマーデバイス 時間に関するシステムコ…

「Goならわかるシステムプログラミング」の15章を読んだ(Go言語のメモリ管理)

「Goならわかるシステムプログラミング」を前章に続いて気になったところ抜粋+コード写経しつつ、15章を読んだ 物理メモリと仮想メモリ 今、メモリが8GBのマシンがあり、そのうちの1GBをOSが消費しているとします。 残り7GBを使って、1GBずつのメモリを消費…

「Goならわかるシステムプログラミング」の14章を読んだ(並行・並列処理の 手法と設計のパターン)

並行・並列処理の手法のパターン まず、複数のコアを使って重い処理・ブロックする処理を効率よくさばく方法につ いて、Go言語に限らない一般的な基礎知識を解説しておきます。 並行・並列処理の実現手法には、おおまかに区分すると、マルチプロセス、イベン…

「Goならわかるシステムプログラミング」の13章を読んだ(並列処理)

複数の仕事を行うことを表す言葉には並行(Concurrent)と並列(Parallel)の2つがあります。 並行:CPU数、コア数の限界を超えて複数の仕事を同時に行う ほんの少し前まで、コンピューターに搭載されているCPUはコア数が1つしかないものが普通でした。その…

「Goならわかるシステムプログラミング」の12章を読んだ(シグナルによるプロセス間の通信)

シグナルには、大きく2つの用途があります。 プロセス間通信:カーネルが仲介して、あるプロセスから、別のプロセスに対してシグナルを送ることができる。自分自身に対してシグナルを送ることも可能 ソフトウェア割り込み:システムで発生したイベントは、シ…

「Goならわかるシステムプログラミング」の11章を読んだ(プロセスの役割と Go言語による操作)

前章に続いて写経しつつ「Goならわかるシステムプログラミング」の11章を読む。 現在起動中のプログラムの絶対パスを表示 package main import ( "fmt" "os" ) func main() { path, _ := os.Executable() fmt.Printf(" 実行ファイル名 : %s\n", os.Args[0]) …

「Goならわかるシステムプログラミング」の10章を読んだ(ファイルシステムの最深部 を扱うGo言語の関数)

前章に続いて「Goならわかるシステムプログラミング」の10章を写経しつつ読んだ。 ファイルの変更監視 開発言語や環境によらず、プログラムでファイルを監視する方法には、次の2種類があります。 監視したいファイルを OS 側に通知しておいて、変更があった…

「Goならわかるシステムプログラミング」の9章を読んだ(ファイルシステムの基礎と Go言語の標準パッケージ)

「Goならわかるシステムプログラミング」の9章(ファイルシステムの基礎と Go言語の標準パッケージ)を写経しつつ読んだのでメモ。 ファイルシステムとは コンピューターにはさまざまなストレージが接続されています。ハードディスクやSSD、取り外し可能なSDカ…

「Goならわかるシステムプログラミング」の8章を読んだ(Unixドメインソケット)

「Goならわかるシステムプログラミング」の8章を読んだ。8章はUnixドメインソケットについて。 TCPとUDPによるソケット通信は、外部のネットワークにつながるインタフェースに接続します。 これに対し、Unixドメインソケットでは外部インタフェースへの接続…

「Goならわかるシステムプログラミング」の7章を読んだ(UDP)

引き続き「Goならわかるシステムプログラミング」の7章を写経しつつ読んでみる。 前章はTCPだったけどこの章はUDP。TCPより機能が少なくシンプルなプロトコル UDPはTCPと同じトランスポート層プロトコルですが、TCPと違ってコネクションレスであり、誰とつな…

「Goならわかるシステムプログラミング」の6章を読んだ(TCPソケット通信)

6章 ソケット通信について 6章からソケット通信についての内容で6章はTCP。前章までに比べてサンプルコード多め。 写経して動作確認しながら読んでみた。 ソケットとは プロセス間通信の一種です。ソケットが他のプロセス間通信と少し違うのは、アドレスとポ…

「Goならわかるシステムプログラミング」の4章、5章を読んだ

「Goならわかるシステムプログラミング」の4章を読んだのでメモ。4章はチャネル、5章はシステムコールについて 4章 チャネルとは何か 本文から引用 ソフトウェアの世界には、キュー(queue)と呼ばれるデータ構造があります。 キューは、最初に投入したデー…

「Goならわかるシステムプログラミング」を読み始めた

「Goならわかるシステムプログラミング」読み始めた。とりあえず1-3章まで読んだのでメモ。 Goならわかるシステムプログラミング(PDF版のみ) – 技術書出版と販売のラムダノート Kindleで欲しかったんだけどなかったんで公式サイトからPDF形式を購入してみ…

GoとGraphQLでカレンダーアプリのサーバサイドを実装した

Vue.jsで作ったカレンダーアプリのバックエンドをGoとGraphQLで実装してみた。 github.com 以前に個人開発でGo、gorm、ginを使ってRESTのAPIサーバを作ったことがありkonnkaimoORマッパーにはgormを使ったので前回との差分はGraphQLくらい。 github.com Goで…

Vue.jsでカレンダー作ってみた

Vue.jsでカレンダーライブラリを使わず自作のカレンダーを作り始めてみた。create-nuxt-appでプロジェクト作って、とりあえず 月単位で日付表示 月選択 まで実装できたので実装内容書いてみる。 見た目 ソースコード全体 GitHub - ikeyu0806/vue-calendar: V…

LPICレベル2に合格した

9月の末にLPICの201試験受けたけど続けて202試験も受けてきた。で、合格できたのでこれでレベル2に認定された。 201試験受けた時の感想 https://ikeyu0806.hatenablog.com/entry/2020/09/27/105729 202試験の内容 DNS DNSの基本 BINDの基本設定 ゾーンファ…

「改訂2版 みんなのGo言語」読んだ

「改訂2版 みんなのGo言語」をざっと読んでみた。 初版が2019年8月発売でその時点での最新のGo言語事情がまとまった本。今2020年の12月なんで1年経ってるけどまあそこまで今の状況と解離してないはず。 改訂2版 みんなのGo言語作者:松木 雅幸,mattn,藤原 俊…

SQLのカウントで地味にハマったこと

SQLで論理削除されていない件数を一行で出そうとしたら軽くハマったのでメモ。DBはpostgresql。 論理削除フラグはdelfというカラムで0なら削除されていない。1なら削除済みと判別している。 別にgroup byかwhereでカラム指定すればいいんじゃと思うけどgroup…

AWS EKSの講座受けてみたが複雑なので内容整理

この間UdemyでMac上にminikubeの環境を構築してkubenetesを学ぶ講座を受けたが、その続きでローカルではなくAWS EKS上で本番運用っぽく動かしてみる講座があったので受講してみた。 米シリコンバレーエンジニア監修!AWS EKS KubernetesハンズオンBest Pract…

Rails+Postgresql環境でauto incrementなカラムを作る

Rails+Postgresql環境で主キーではないauto increment(Postgresqlではsequenceというらしい)な属性をもつカラムを作る必要があってやり方迷った。で、結局こうした。 Migration内でで使えそうなRailsのAPIが見つからなかったので(こんなことそんなにやる…

wheneverからsidekiq実行

Railsアプリでwhenever(cron使って良い感じにバッチのスケジューリングをしてくれるgem)からsidekiq(redisを使った非同期処理を提供してくれるgem)のワーカー実行したかったんだけど単純に{ワーカークラス}.perform_syncをschedule.rbからなぜか実行でき…

S3に保存した画像のサービス内での扱い

S3に保存した画像画像にいろいろ情報つけて扱う実装で考えたこと。 例えばこの画像はプロフィール画像用でこれはメモ用、とかの属性つける場合どうしたら良いんだろ。RailsとReactで作ったWebサービスで使う想定。 S3の仕組みでオブジェクトにjsonでメタデー…

Reactで動画をキャプチャしてDBに保存する

Reactでビデオ要素をキャプチャしてDBに保存する実装のメモ。 サーバサイドは/api/internal/register_imageのエンドポイントを作ってbinary型のカラムに保存できるようにしておく フロント側の実装 video要素をcanvasに描画してそのままrequestで送れる。 co…

作業効率を高めるために役立つこと

作業効率を上げるためにやってることメモ 環境変数に開発中のプロジェクトのパスを設定してすぐcdできるようにする bashrcにgitのaliasを設定 bundle execとかよく使うコマンドもaliasにする 設定ファイルをgithubで管理する(dotfile) historyコマンドの上…

LPICの201試験受けてきた(合格)

LPICの201試験受けてきた。で、合格できた。 LPICレベル1の更新期限前にレベル2取得するか迷ってたけど、業務でインフラの知識もう少し欲しいな。。と思う場面が最近ちょくちょくあってせっかくなんで勉強してみた。 201試験の内容 参考書の目次より キャ…

kubenetes触ってみた(Mac上で動くとこまで)

kubenetes調べて軽く動かしてみたのでメモ。 Dockerfile、docker-composeは作れる くらいのところから kubenetesの基本的なリソースは理解 ローカル環境でWebサービス動かせる というくらいまでは到達できたと思われ。 そもそもkubenetesはなんなのか とりあ…

Nuxt.js触ってみた

Nuxt.js(Vue.jsベースのフロントエンドフレームワーク)が気になったので軽く触ってみた。 ググって調べてもいまいち物足りなかったのでUdemyのセールで講座買って受講してみた。セールなら安いし4時間で終わるので気軽にできてよい感じ。ただライブラリの…

Typescript+Next.js+Goで作ったサービスが大体できてきた

ポートフォリオとしてフロントエンドをTypescript+Next.js、バックエンドをGolangで作っていた映画情報を取得、レビューできるWebサービスの基本機能の実装が大体できてきた。映画情報の取得にはTMDBのAPIを使用している。 基本機能はできたもののやりたい…

Vuexの勉強をしてみる

vue.js入門の7章のタスク管理アプリケーションを写経しながらVuexの勉強をしてみる Vue.js入門 基礎から実践アプリケーション開発まで作者:川口 和也,喜多 啓介,野田 陽平,手島 拓也,片山 真也技術評論社Amazon App.vueのtemplate部分 ここはVuexを使わない…