最近、ネットワークプログラミングに興味が出てきたので、その一端に触れるためにHTTPサーバーを実装してみることにしました。有名なサーバーレベルのものは自分では作れるはずもないので、あくまでも自己学習の1つとして簡易的なものを作っていきます。OK」を返すことだけを目標にします。階段を1段ずつ登っていく感じで「楽しくプログラミング」がモットーです(・∀・)実装してみたGoogle先生をはじめとするいろんな情報に頼って実装してみたのがこちら。今後の開発も考えて、コードはGitHubで管理することにしました。0;}解説プログラムの簡単な解説です。ソケットを作る最初に通信のためのソケットを作ります。ソケットというのは通信の口みたいなもので、このソケットを読み書きすることで通信を実現できます。0);ちなみに、第1引数の「AF_INET」はIPv4による接続を表し、第2引数の「SOCK_STREAM」はバイトストリーム形式の通信を表しています。2.ソケットにアドレスを割り当てる作成したソケットにアドレスを割り当てます。「ソケットに名前を付ける」とイメージすればわかりやすいかも。sizeof(addr));割り当てる具体的な情報は、sockaddr_in構造体に定義しておきます。今回はIPv4で8080番ポートを指定しています。アドレスは特に指定しないのでINADDR_ANYです。3.接続を待ち受けるbindしたソケットに対してlistenで接続を待ちます。第2引数は接続待ちキューの最大長ですが、今回は適当に5を指定します。5);4.接続を受け付ける接続要求に対してacceptで受け付けます。acceptの戻り値として接続済みのソケットが返ってきます。&len);このとき、第2引数のclientには接続元のアドレス情報が格納されます。5.データを書き込むacceptで受け取ったソケットに対してデータを書き込みます。OK」を返しています。14);これで、リクエストに対して返事を返すことができます。実際に通信してみた作成したサーバープログラムに対してブラウザからリクエストを送り、そのレスポンスを見てみます。何の実用性もないですが、思った通りに動くと嬉しいですね!わずか50行ほどのソースでサーバープログラムの一端に触れることができました。実用的なものになるように、今後少しずつ手を入れていきたいと思います。作るならiOS/Android両対応がいい!ということで、FlutterというGoogle製のフレームワークを使いました。開発したのは「SaltyStock」というアプリです。長期保有して塩漬け状態になっている株式銘柄を管理するというかなりニッチなアプリです笑。「個人的にこういうのあったらいいな」というものを作ることができたので、概ね満足です。Growiでイントラ向けWikiを立ち上げるチーム開発をしていくうえで、課題の1つになるのが情報共有です。チームの歴史が長いと経験値は溜まっていきますが、それらが情報として整理されていないとメンバー交代時などに大きなコストが発生します。そこで、イントラ向けのナレッジベース(Wiki)を探していたところ、Growiという良さげなOSSを見つけたので、お試し環境を立ち上げてみることにしました。手元の環境はUbuntu18.04ですが、Linuxであれば大体同じような手順になると思います。...この記事を読むLinux2019/8/14カゴヤVPSで自分専用の開発環境を立ち上げてみたどこからでもアクセスできる自分専用の開発環境が欲しい...。そんな願いを叶えるべく、VPSのことを調べていたのですが、いままで「なんか難しそう...」と尻込みしていました。最近は値段も安くて扱いやすいVPSも増えてきたので、この機会に試してみることにしました。いうことで、今回はVPSを契約して最低限の環境を立ち上げるまでの備忘録です。...この記事を読むWindows2019/5/5Windows10で不要なブートエントリを削除するWindowsのブートまわりで少しハマったので覚え書きです。私のメインPCはWindows10とUbuntuのデュアルブートだったのですが、とある事情でUbuntuを削除しWindowsのみの構成に戻すことにしました。ちなみに、デュアルブート時の環境はこんな感じ(だったはず)。元に戻したくなったときのことを考え、別HDD(ドライブB)にUbuntuとGRUBを入れ、GRUB経由でWindowsとUbuntuを立ち上げる形にしていました。プログラミング2018/12/25mmapの下処理にftruncate関数を利用する以前このブログで公開した記事の中に、C言語のmmap関数の使い方についてまとめた記事がありました。pocketsファイルの読み書きにmmapを使ってみるプログラムのループ中でファイルに何かしらのデータを書き込むとき、そのたびにwriteをしていたのではディスクへのI/Oが頻発してしまい、パフォーマンスに影響することがあります。Yoneyamaとある会社でソフトウェアエンジニアをしています。技術的な備忘録を中心にまとめてます。ネタがあれば日記も書きます。