タグ

2017年4月23日のブックマーク (11件)

  • Network byte order

    Network byte order, big endian と littel endian 普段何も意識せずに使っている 4バイト整数の int 型ですが、 例えば int x = 0x7f000001 がどのようにメモリに格納されているか ご存じでしょうか? この変数xのアドレスを無理矢理キャスト変換して このxがあるメモリ領域を char 型の配列で見てみましょう。 unsinged int x = 0x7f000001; unsigned char* ptr = (unsinged char*) &x; printf("%02x,%02x,%02x,%02x\n", ptr[0], ptr[1], ptr[2], ptr[3] ); あなたのマシンではどのような結果が得られたでしょう。以下のようになりましたか? 7f,00,00,01 それとも以下のようになりましたか? 01,00

  • 第6回 UNIXプログラミングの勘所(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはJapanizeやText::MicroTemplateなどで有名な奥一穂さんで、テーマはUNIXプログラミングです。 はじめに 「正しいプログラム」を書くために必要な知識とはなんでしょうか。テストが正しく実行されることは、正しいプログラムであるための必要条件に過ぎません。プログラミングにおいてはプログラミング言語だけでなく、OSの動作やデータベース、ネットワークプロトコルなど、さまざまな知識が必要になります。 PerlはもともとUNIX系のOS(LinuxやFreeBSD、Mac OS XなどのOSを稿では以下UNIXと総称します)の上で処理を行うためのスクリプト言語として開発され、今日でもPerlプログラムの多くはUNIX上で実行されています。しかし、「⁠Perlでプログラミング」と言った場合はともすれば

    第6回 UNIXプログラミングの勘所(1) | gihyo.jp
    komlow
    komlow 2017/04/23
  • echoサーバーを書いてみたときのメモ その1 ソケットAPIとTCP - bati11 の 日記

    echoサーバーを書いた日の日記。 Head First C の11章を参考に、クライアントから文字列を受け取り、受け取った文字列をそのままクライアントへ返すechoサーバーを作る。echo サーバーは30000ポートを使用することにする。途中疑問に思ったところは主にUNIXネットワークプログラミングで調べた。 UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI 作者: W.リチャードスティーヴンス,W.Richard Stevens,篠田陽一出版社/メーカー: ピアソンエデュケーション発売日: 1999/07メディア: 単行購入: 8人 クリック: 151回この商品を含むブログ (35件) を見る Head First C ―頭とからだで覚えるCの基 作者: David Griffiths,Dawn Griffiths,中田秀基,木下哲也出版社/メー

    echoサーバーを書いてみたときのメモ その1 ソケットAPIとTCP - bati11 の 日記
  • Haskell から見た node.js - あどけない話

    誤訳 以前、「サーバサイドJavaScriptのNode.js、最初はCやHaskellを検討し失敗。開発者ライアン・ダール氏へのインタビュー」という記事が twitter で話題になっていました。 ―― なぜJavaScriptを選んだのでしょう? ダール氏 実は最初は違いました。最初はC、Lua、Haskellなどで失敗していました。そんなときV8(Chromeが採用しているJavaScriptエンジン)に気がついて、やろうとしていることに対してJavaScriptが完璧な言語だと突然ひらめいたのです。 ただでさえ、Haskell は遅いと誤解されているのに、このような悪意さえ感じらえる訳だと、さらに誤解が深まりそうです。原文にはこう書かれています。 Dahl: Originally I didn’t. I had several failed private projects doi

    Haskell から見た node.js - あどけない話
  • 最速TCPサーバーの件でちょっと分からないこと(解決) - kuenishi's blog

    epoll + fork 版サーバーは、予想通り thread 版を大きく 突き放すスコアをたたき出し、しかもまだCPU使用率には余力が残っていました。CPUを使い切れて いないのは、多分実験機のNICの Broadcom BCM5754 が複数コアに割り込みを分散する機能を もっていないためで、NICを増やしたり割り込み分散機能のあるNICを使えばもっと 差が広がると思います。 @mathaneさんはepoll+forkが最速になるだろうと予想していて、結果も予想通りになっているわけですが。Linuxカーネルからみるとネイティブスレッドもふつうのプロセスと同様にLWPと1:1対応しているわけでfork版とコンテキストスイッチのオーバーヘッドはそう変わらないはずだ。むしろ別プロセスをコンテキストスイッチする方が仮想メモリ空間の切り替えの分だけ重そうだから、僕の知識の範囲ではthread版の

    最速TCPサーバーの件でちょっと分からないこと(解決) - kuenishi's blog
    komlow
    komlow 2017/04/23
  • TCPサーバーの非同期処理はけっきょくどの手法がいいのか? - Qiita

    昔Unix系システムではselect()でIO処理を非同期にして、ファイルディスクリプタの状態に変化があった場合のみ処理を行うことができた。これはメモリやサーバーリソースが極端に少なかった時代に有効な手法だった(らしい)。90年代後半、00年代前半にはマルチスレッドが主流になり、サーバーサイドではAcceptして受け入れたクライアントのソケットをスレッドに渡して送受信を行うことでコネクションの多重化を行った。(もちろん目的に応じて非同期も活躍していた) 00年代後半からC10K問題が騒がれ、node.jsやnginxが登場した。大量のスレッドを生成してリソースやメモリを消費する方法よりも、再びソケットをノンブロッキングにしてディスクリプタの状態を監視する非同期処理が注目されるようになる。そして最近ではjavascript promise、RX、Reactive Extensionなどクライ

    TCPサーバーの非同期処理はけっきょくどの手法がいいのか? - Qiita
    komlow
    komlow 2017/04/23
  • epoll を使った echo サーバ - odz buffer

    自分用メモ。epoll & Non-Blocking IO による echo サーバの例。 使い方のテスト以上のものではないので、そのままではいろいろまずい。epoll_create や socket で取得した file descriptor を close してなかったり。まねしないように。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/socket.h> #include <sys/types.h> #include <sys/epoll.h> #include <netinet/in.h> #define SERVER_PORT 10007 #define MAX_EVENTS 10 #define BAC

    epoll を使った echo サーバ - odz buffer
  • mixi Engineers’ Blog » Linux Programming、epollの話

    お久しぶりです、初めての日の夏に圧倒されているトールマエサカです。 今日はLinuxにおけるネットワークプログラミング関連のネタです。分散データベースサーバの開発過程で最近よくLinuxのepollというイベントハンドリング機能を使っています。これがまた優秀な機能なので紹介します。 このContextでいうイベントハンドラーはサーバがクライエントのリクエストを処理するためのメカニズムです。イベントの感知と通知は大雑把にいうと以下の三つの処理で構成されています: 一つもしくは複数のディスクリプタを監視 ディスクリプタの準備が整うまでハチ公のごとくひたすら待ち続ける 準備が整ったディスクリプタの通知 アプリケーションでの実装は一昔までselect(2)、もしくはpoll(2)というシステムコールで行われていました。二つとも役目は同じですがselect(2)の場合、kernelをいじらない限り

    mixi Engineers’ Blog » Linux Programming、epollの話
  • 「おすすめの牛刀」決定版!家庭用からプロ・料理人用まで人気の包丁ブランドを紹介 - Life with Knife

    ー 期間限定!Amazonセール ー 早い者勝ち日限りのタイムセール Check!人気の包丁が半額も! ー 楽天ポイント最大50%バック ー 期間限定楽天スーパーディール 「牛刀(ぎゅうとう)」という言葉もだいぶ浸透してきたでしょうか。基的に牛刀は料理人が使うプロ用の包丁ですが、最近では家庭用でも牛刀を探している人が多く感じます。 実際、このサイトにも多くの人が「牛刀 おすすめ」のようなキーワードで検索する人達が訪れてくれています。 ここでは、おすすめの「牛刀」について詳しく解説していきます。 ※一般的な家庭の万能包丁「三徳包丁」については下の記事が詳しいです。包丁初心者の方はまずこちらから。 関連記事まず有名6ブランドをチェック!初心者向けのおすすめ人気包丁ブランド 牛刀って何? 牛刀の典型的な例を挙げてみましょう。まず、藤次郎の牛刀です。 そして、こちらが藤次郎の三徳包丁。 違いが

    「おすすめの牛刀」決定版!家庭用からプロ・料理人用まで人気の包丁ブランドを紹介 - Life with Knife
  • AWS Lambdaにおける「ステートレス」なキャッシュ利用 - エンタープライズギークス (Enterprise Geeks)

    AWS Lambda は、AWSが提供するイベントドリブンなプログラム実行環境であり、昨今ではサーバーレスアーキテクチャの実現手段として注目を集めている。 AWSの公式ドキュメントによると、AWS Lambda の関数はステートレスな実装にする必要がある。一方でステートレスな実装を追求すると、外部サーバからのデータ取得処理が増え、結果として処理パフォーマンスが悪化することが多い。 稿では、データの性質に応じたAWS Lambda での状態保持(キャッシュ利用)の可否について考察し、キャッシュに関する実装や運用の一例を示す。 1. Lambda 関数に求められる「ステートレス」の意味 AWSの公式ドキュメンテーションによると、AWS Lambdaの関数は、ステートレスな実装にする必要がある。 コードは必ず「ステートレス」なスタイルで書く必要があります。 ~中略~ 関数をステートレスにするこ

    AWS Lambdaにおける「ステートレス」なキャッシュ利用 - エンタープライズギークス (Enterprise Geeks)
  • Linuxのschedのpriorityとリアルタイムシステムについて - Qiita

    はじめに Linuxでいわゆるリアルタイムシステムを指向するときはsched(7)のpriority値を意識することになるが、個人的にいつもpriorityの値を相対的にしか見られず、絶対的にかつどっちが上・下かについてわからなくなってしまうので、そんな自分のためにメモ書きしておくことにした・・・つもりが、なにか途中から趣旨を間違えた記事になってしまった。当は「priority一覧表」がほしかっただけだったのに... なお、Linux-4.10くらい、procps-ng-3.3.12くらい、util-linux-2.29.2くらいを見ています。 schedのpolicyとpriority値 Linuxでは、ユーザプログラム・kernelスレッド問わず、タスクにsched policyを設定できる。下記の上3つがいわゆるリアルタイムスケジューリング、下3つがいわゆるタイムシェアスケジューリ

    Linuxのschedのpriorityとリアルタイムシステムについて - Qiita