読者です 読者をやめる 読者になる 読者になる

フラミナル

日常のわからないを書きなぐります

SOAPとRESTを一から調べてみた

API

https

インフラ屋には馴染みが薄いかもしれませんが、界隈でよく耳にするバズワード(もう古いですが)です。 きになるので調べてみました。

正直調べる過程でわからないことが多く、かつ技術的に広がりが大きすぎるため、調べきることができませんでした。

情報としては不完全ですが、とりあえず技術的な記事をポストすることを大事にしていきたいと思いますので、今回はこのままあげさせていただきます。

続きを読む

デッサン4日目

デッサン

今日のお題はこちら。

f:id:lirlia:20161010110214j:image

 

書いた絵はこちら。

f:id:lirlia:20161010105808j:image

 

昨日より陰影を濃くし、メリハリをつけました。成長をちょっと感じます。

 

ただまたまだ課題は山積みです。

 

反省点
・縦横比がおかしい
・コップの影を作ってる横線が浅い
・影が横に広がりすぎ
・コップの右下が薄すぎ

 

 

デッサンをはじめて3日経ちました

デッサン

1日1枚ぐらい書いてます。

 

2日目はこんな感じ、ましになった気がします。

f:id:lirlia:20161008161505j:image

 

3日目はこちら。すこしましになってきた??

f:id:lirlia:20161008161526j:image

 

いろいろ大事なことを学んでます。

・大きく書くこと(最低10×10cm)

・質感によって鉛筆の立て方を変えること

・円筒形は底がカーブになってること

 

最初は左上だったのを、右のほうにしつつあります。なかなか難しい。

f:id:lirlia:20161008161736j:image

デッサンをはじめました

デッサン

絵が描けるようになりたい!

 

そんなことを上手い人に相談したら、デッサンをするといいよ!といわれデッサンを始めることにしました。

 

机の上にあったコップを書いてみました。今このレベル。

f:id:lirlia:20161008161143j:image

 

ちょっと教えてもらって、濃淡をつけました。進化したよ!!

f:id:lirlia:20161008161229j:image

 

これから少しづつやってきましょう。

ITエンジニアが英語の記事をスラスラ読むために必要なこと

英語

こんな記事書いてますが、ぼくは読めません。

でも、読みたいなと思っているのでググって調べた情報をまとめておきます。

 

SEとして興味がある分野の最新情報に目を光らせないといけないのですが、そのほとんどは英語で書かれています。

 

ぼく自身、英語がダメなので英語の記事を読む際には辞書機能がかかせません。

 

ただ、いつまでも辞書や翻訳に頼っていると、読むスピードもスキルもつかなさそうなのでいい方法はないかと調べました。(単語・文法を覚えるのは最低限必要そう)

 

頭の中を変える

英語を読むときにこんなことはありませんか?

・頭の中で英語を発音している

・頭のなかで翻訳しながら読む

 

どうやら、日本語の頭で英語を理解しようとすると変換に時間がかかるそうです。

 

参考になりそうな情報など

 

Nginxが早い理由について調べた(基礎)

nginx

こんばんは、ぎんです。

 

記事を読んでいて出てきたこの説明が意味不明すぎたので、今回はNginxについて調べてみることにします。

 

Nginxが大量のリクエストでも同時に高速処理できるのは、イベント駆動方式を採用しているためです。

 

Webサーバーのように同時に複数の処理を行うには、ディスクやネットワークといったI/Oの多重化が必要になります。I/O多重化の実装には「select」や「poll」といったシステムコールが従来使われています。

 

引用:これから始める人のためのNginx(1):高速・軽量・高機能……Nginxの基礎知識 (1/2) - @IT

 

色々調べた結果を書きますが、間違っていたら教えていただけると助かります。

 

 

イベント駆動方式について

まずは、イベント駆動方式についてです。

 

これネットで調べるとプログラミングのイベント駆動式(イベントドリブン)の話がたくさん出てくるので1回忘れます。(ロジック的には同じです) 

 

イベント駆動型の反対が、フロー制御型とかいうのも忘れます。

 

ApacheとNginxの比較をすると分かりやすいです。

これらのWebサーバの方式には以下の3つがあります。

  1. マルチプロセスモデル(Apache)
  2. マルチスレッドモデル(Apache)
  3. イベント駆動型モデル (Apche・Nginx)

 

1.2の説明については以下の資料に記載されています。

 

マルチ◯◯モデルは、Apacheがずっと使ってきたモデルですがC10K問題と呼ばれる、サーバへのクライアントアクセス数に起因する問題のため、問題視されています。

TheC10kProblem - 「C10K問題」(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のこと

 

そこでNginxではイベント駆動型モデルを採用しています。

 

イベント駆動型モデルとは、クライアントのアクセスをイベントとして扱い、それをきっかけにプロセス内で処理を開始することです。

 

その他のモデルとの大きな違いは「1プロセス1スレッド」であるということです。そのためクライアント数が増加してもプロセス数は増えないため、Apacheのモデルと比較してメモリを削減できます。

 

 

I/Oの多重化について

さて、イベント駆動式についてはわかりました。では次に1プロセスでどうやって、多数のクライアントからのアクセスをさばいているのかを確認します。

 

Webサーバーのように同時に複数の処理を行うには、ディスクやネットワークといったI/Oの多重化が必要になります。I/O多重化の実装には「select」や「poll」といったシステムコールが従来使われています。

 

同期IOを使用した場合、1台のクライアントからのアクセスだけでプロセスが専有されてしまうため、複数のクライアントへのレスポンスを返すことができません。

 

これを回避するために以下の方法があります。

  • マルチプロセス(Apache)
  • マルチスレッド(Apahce)
  • 非同期I/O
  • I/Oの多重化(Apache、Niginx)

 

I/Oの同期、非同期についてはこちらを参照

 

そして、このI/Oの多重化を実現するためのシステムコール「select, poll, epoll, kqueue」があるそうです。

 

システムコール「select, poll, epoll」について

 

プログラムで複数のファイルディスクリプタを監視し、 一つ以上のファイルディスクリプタがある種の I/O 操作の 「ready (準備ができた)」状態 (例えば、読み込み可能になった状態) になるまで待つことができる。

 

詳しくはこちらのサイトで解説されています。

select, poll, epollにはそれぞれ特徴がありますが、使用して早いのはLinux2.6から採用された「epoll」です。

 

select、pollの場合

プロセスがselectを発行する際に、ファイルディスクリプタセットと呼ばれる複数のファイルディスクリプタをまとめたリストをカーネルに渡します。

 

カーネルはリストを読み込み、それぞれのファイルディスクリプタの状態を確認しリストを更新します。(リストに含まれているディスクリプタの数だけループする)その後、処理が終わった後カーネルがリストを返却し、状態がreadyになったファイルディスクリプタの処理をプロセスが進めます。

 

この処理だと、ファイルディスクリプタの数だけループが発生するため処理に時間がかかります。

 

epollの場合

epollでは指定のファイルディスクリプタの状態をカーネルに問い合わせるだけです。そのため高速な処理が可能となります。

※カーネルがディスクリプタの状態を管理している

 

まとめ

Nginxでは、多数のクライアントからの接続をきっかけに仕事が始まります。その仕事はI/Oが発生すると、別の処理に飛び新しい仕事をはじめます。

 

I/Oの管理は、epollによって行われI/Oが終了した処理はクライアントへ返却されます。 

 

 

xfs_freezeのmanを翻訳してみた

Linux man

f:id:lirlia:20050304222058j:plain

xfs_freezeのmanを翻訳してみた

xfs_freeze(8)                           System Manager's Manual                           xfs_freeze(8)

NAME
       xfs_freeze - suspend access to an XFS filesystem
       xfs_freeze - XFSファイルシステムへの、アクセス停止

SYNOPSIS
       xfs_freeze [ -f | -u ] mount-point
       xfs_freeze -V

DESCRIPTION
       xfs_freeze suspends and resumes access to an XFS filesystem (see xfs(5)).
       xfs_freezeは、XFSファイルシステム上のアクセスを停止し、再開する。(詳細はxfs(5)を参照)

       xfs_freeze halts new access to the filesystem and creates a stable image on disk.  xfs_freeze is
       intended to be used with volume managers and hardware RAID devices that support the creation  of
       snapshots.
        xfs_freezeはファイルシステムへの新しいアクセスを停止し、ディスクのステーブル(静止した)イメージを作成する。
        xfs_freezeは、スナップショットの作成がサポートされたボリュームマネージャやハードウェアRAIDデバイスと一緒に
        使用されるコマンドである。

       The  mount-point argument is the pathname of the directory where the filesystem is mounted.  The
       filesystem must be mounted to be frozen (see mount(8)).
       マウントポイントの記法は、ファイルシステムがマウントされているパス名かディレクトリ名となる。 
       固定(freeze)したいファイルシステムは必ず、マウントされていなければならない。

       The -f flag requests the specified XFS filesystem to be frozen  from  new  modifications.   When
       this  is selected, all ongoing transactions in the filesystem are allowed to complete, new write
       system calls are halted, other calls which modify the filesystem are halted, and all dirty data,
       metadata,  and  log  information  are  written  to disk.  Any process attempting to write to the
       frozen filesystem will block waiting for the filesystem to be unfrozen.
       -fフラグはXFSファイルシステムへ、停止状態を要求する(フリーズさせる)。 このオプションが選択された時には、
       選択されたファイルシステム内のすべての実行中のトランザクションは実行完了を許可される。 新しいWriteの
       システムコールは終了される。ファイルシステムを変更する他のシステムコールも同様に終了される。 そして、
       すべてのメタデータや汚れたデータ、ログ情報はディスクに書き込まれる。 停止(freeze)中のファイルシステムに
       書き込みをトライしているプロセスは、ファイルシステムの固定が解除されるまでwrite処理がブロックされる。

       Note that even after freezing, the on-disk filesystem can contain information on files that  are
       still  in  the  process  of unlinking.  These files will not be unlinked until the filesystem is
       unfrozen or a clean mount of the snapshot is complete.
       フリーズ後も、ディスクのファイルシステムは、プロセスと切り離されたファイルの情報を持つことが出来る。 
       これらのファイルはファイルシステムが停止解除(unfreeze)されるか、スナップショットが完了しマウント状態が
       綺麗になるまで解除されない。 

       The -u flag is used to un-freeze the filesystem and allow operations to continue.  Any  filesys‐
       tem modifications that were blocked by the freeze are unblocked and allowed to complete.
       -uフラグは、ファイルシステムの固定解除(unfreeze)と操作の継続許可に用いられる。 
       freezeコマンドにてブロックされたファイルシステムの変更が解除される。

       The -V flag prints the version number and exits.
       -Vフラグは、バージョン情報を表示し、終了する。

       Unless -V is specified, one of -f or -u must be supplied to xfs_freeze.
       -Vフラグを指定しないのであれば、xfs_freezeコマンド実行時に-fフラグまたは-uフラグの内必ず1つを選択する必要がある。

NOTES
       A  copy  of  a  frozen  XFS  filesystem will usually have the same universally unique identifier
       (UUID) as the original, and thus may be prevented from being  mounted.   The  XFS  nouuid  mount
       option can be used to circumvent this issue.
       固定(freeze)されたXFSファイルシステムのコピーは、普遍的に一意なUUIDをもっており、マウントから保護する。
       この問題を回避するため、XFS nouuid マウント オプションが使用できる。

       In Linux kernel version 2.6.29, the interface which XFS uses to freeze and unfreeze was elevated
       to the VFS, so that this tool can now be used on many other Linux filesystems.
       Linuxカーネルバージョン2.6.29では、XFSが使用するfreezeとunfreezeのインターフェースは、 VFSに昇格した。
       現在では、xfs_freezeコマンドはLinuxの他のファイルシステム(VFSを使用する)でも使用することが出来る。

SEE ALSO
       xfs(5), lvm(8), mount(8).

                                                                                          xfs_freeze(8)