Hatena::ブログ(Diary)

since 2010

日記の検索

記事一覧&カテゴリー 
2017年度の目標 2017年度前半の反省
別館 別別館

2018-02-02

2017年度後半ふりかえり

| 18:04 |  2017年度後半ふりかえりを含むブックマーク

@180202 Fri

目標

http://d.hatena.ne.jp/ksnt/20170128#1488269824

結果と考察

メインの目標

(目標) 勉強を控えて研究と開発をする

(結果)

1.勉強

わりと勉強が多かったかもしれない.勉強の内容はビジネスのことがわりと増えた.Private equityやVenture Capital,ビジネスモデル等全く知らなかったけれど知っておいた方が良さそうなことを学んだ.あとは英語でのインタビュー対策.英語圏だと特別何か違うのかというとそういうわけではないっぽい.CVの書き方等違うことは確かにあるけれどどういうことを伝える必要があるのかといったことは変わらないようす.

目標として某オンライン講義を100講義終えてみるということを目標に掲げてみたが,それは達成できた.5〜6年くらい(途中で丸1年くらい活動休止あり)やってみたが,ずいぶんと楽しかった.

2.研究

何かをするときに論文にあたるというのはもはや習慣になってはいるが論文を書くことは習慣にはなっていないので危機感を感じる.*1

対策としては論文を書くことがモチベーションとなるような状況を作ってみるのが良いのではないかと思案中.

3.開発

なかなか手をつけられなかった.開発というかデータ解析もしばらく手をつけていなくて久々にPandasを触ると全然書けなくて危機感を感じている.


研究&勉強

1.研究

閉店中.無理やりにでも研究発表をする機会を作っていくのがよいかも.

2.勉強

先に書いた通り.実践的なこととしてはビジネスよりのこととインタビュー対策の勉強.あとは数学とCS.個人的な興味としては政治学(社会思想?)について少し学んでみた.


反省

もう何年も感じていはいるが,消費的な勉強に走りがちなのでなんとかしなければいけない.とにかく量をやってみて質はあとからという感じでやっていたが,量をこなせることは分かったので質を大切にしたい.しっかりと時間をかけて生産的なことをすることを中心にしたいので,環境を落ち着かせることを目標にする.

追記)海外に進出できそうな雰囲気は少し出てきた.

アーカイブ

http://d.hatena.ne.jp/ksnt/20170620#1500495387

http://d.hatena.ne.jp/ksnt/20161106#1481037695

http://d.hatena.ne.jp/ksnt/20160707

http://d.hatena.ne.jp/ksnt/20160101#1451886062

http://d.hatena.ne.jp/ksnt/20150711#1439298849

http://d.hatena.ne.jp/ksnt/20140628#1406532775

*1:研究をしたり論文を書くことが仕事ではないのでこれはこれで良いのだが.

トラックバック - http://d.hatena.ne.jp/ksnt/20180202

2018-01-07

プロセスとスレッド

| 03:19 |  プロセスとスレッドを含むブックマーク

@180126 Fri

いざ訊かれて違いが答えられない程度に知らなかったと偉そうにふんぞり返っていたがちゃんと本を読んだらそもそも全く分かっていなかったのでメモ.これまた学部生のときに買った本を引っ張りだしてきた.


プロセスとスレッド

A.プロセス

Single UNIX Specification, Version2とその全身のVersion1では”1つまたは複数のスレッドが実行されるアドレス空間と,これらのスレッドに必要なシステムリソース”のことをプロセスと定義する.換言すると,プロセスとは実行中の1つのプログラムのことをいう.

Linux等のマルチタスクオペレーティングシステムでは多くのプログラムを同時に実行でき,実行中のプログラムの各インスタンスが1つのプロセスを構成する.

User AとUser Bがそれぞれ別のファイルで異なる文字列をgrepで検索する場合を考える.プログラム実行中に使われているプロセスは以下のようになる.

f:id:ksnt:20180127023840j:image:h500

grepコマンドによって実行されるコードはディスクファイルに格納されている.Linuxのプロセスはプログラムコードを保持するために使われているメモリ領域に対しては書き込みを行わないのでプログラムコードは読み取り専用としてメモリにロードされる.図のようにプログラムコードを安全に共有している.

Linuxや一部のUNIXでは/procディレクトリに一連の特別な”ファイル”が置かれている.ここを見ると実行中のプロセスの中身を覗くことができる.実際に見てみると次のようになっていた.

user@machine:/proc$ ls
1      12328  16993  2100  2834  3195  3765  9400         loadavg
10     12354  170    2136  2845  32    377   955          locks
1017   12439  17006  2137  2849  3202  379   968          mdstat
1019   12475  17008  214   2865  3208  38    acpi         meminfo
......


B.スレッド

1つのプログラムの中に複数の実行の流れがあるときにそのひとつひとつをスレッドと呼ぶ.換言すると,スレッド=プロセス内の制御の流れのこと.

スレッドを利用することにはメリットとデメリットがある.

メリット

1.同時に2つのことを実行しているように見せかけたいとき(ex.文書の編集中にリアルタイムでも字数をカウントする)に1つのスレッドでユーザーからの入力を処理して編集作業を実行しもうひとつのスレッドで文字数が格納された変数を絶えず更新する,といったことができる.

2.入力を受け取り計算して結果を出力するというタイプのアプリケーションではこれらの一連の処理を3つの独立したスレッドとして実行することでパフォーマンスを改善することができることがある

3. 一般的にスレッドの切り替えに必要なオペレーティングシステムの作業量はプロセスを切り替えるよるうもはるかに少なくなる.

デメリット

1.設計を慎重に行う必要がある.不用意な変数の共有によるエラーがおこることがある.

2.マルチスレッドプログラムのデバッグはシングルスレッドプログラムのデバッグよりはるかに難しい

3.大規模な計算処理を2つに分けてそれぞれを別のスレッドとして実行するプログラムの場合は実行しなければならないCPUサイクルの数は変わらないのでシングルプロセッサシステム上では処理時間は必ずしも短縮されない.

感想

並列処理やリアルタイム処理について勉強したときに学んだことの基礎にあるっぽい内容なので勉強してみてよかった.が,よくよく考えたらイマイチよく分からない.「制御の流れ」とは何だろうか.

あと,実際にコードを書いてみないとよく分からないので参考にした本の該当箇所を詳しく読んでみようとおもう.


参考

Linuxプログラミング―例題で学ぶUNIXプログラミング環境のすべて

トラックバック - http://d.hatena.ne.jp/ksnt/20180107

2018-01-06

雑感

| 04:22 |  雑感を含むブックマーク

@180125 Thu

何か行動をしてみると大抵学びがあるので結果はどうあれめちゃくちゃ楽しいらしいことに気づく.特にいつも自分が取るパターンとは違う行動を取るとストレスは大きいが得られるものも大きい.やはり自分の外の世界にもっと目を向けて生きていった方が楽しくてお得なのかもしれない.自分の関心だけに閉じこもっているとどうしても見慣れた景色ばかりで嫌になってしまうので.そろそろ落ち着かなければいけないとか思っていたけれど,無茶をしすぎて命を取られてしまわない程度にはまだまだ無茶をしてもよいのかもしれない.

トラックバック - http://d.hatena.ne.jp/ksnt/20180106

2018-01-05

MyISAMとInnoDB

| 03:54 |  MyISAMとInnoDBを含むブックマーク

@180125 Thu

※「」内は1つめの参考サイトからの転載です

知らなかったのでメモ.

MySQLのストレージエンジンには代表的なものとしてMyISAMやInnoDBといったものがある.「ストレージエンジンを指定せずにテーブルを作成するとMyISAMが選択され」るらしい.

これに関しては特に関心もないが参考リンク先の記事を読めばそれぞれの特徴が分かるらしい(2つ目のはてなブログの記事は面白いので読ませていただきました).具体的に手を動かさないと私にはさっぱり分からない.

参考

https://thinkit.co.jp/free/article/0608/1/2/

http://shindolog.hatenablog.com/entry/2015/04/01/185703

トラックバック - http://d.hatena.ne.jp/ksnt/20180105

2018-01-04

RAID(Redundant Array of Inexpensive Disks)

| 03:40 |  RAID(Redundant Array of Inexpensive Disks)を含むブックマーク

@180125 Thu

RAIDという言葉とそれが便利アイテムだということは知っていたがそもそも一般的に何のために存在しているの知らなかったのでメモ.

RAIDについて + 感想

※「」内は参考サイト(富士通)からの引用

参考先のサイトによると「RAIDとは、Redundant Array of Inexpensive Disks(リダンダント・アレイ・オブ・インエクスペンシブ・ディスクズ)の略で、データを複数のハードディスク(磁気ディスク装置)に分散することで、性能と耐障害性を同時に確保するための技術」を言うらしい.まあ,なんとなくわかる.

また,「ハードディスクには2つの課題があります。1つはディスク回転という機械的な動作を伴うため、CPUやメモリに比べると処理速度が遅くなること。もう一つは振動や衝撃、駆動部分の故障など物理的破損により、蓄積しているデータがすべて失われる可能性があるということです。 」ということらしい.これも分かる.

さらに,「そこで考えられたのが、RAIDという技術です。RAIDとは内部に複数のハードディスク(HDD)を搭載(冗長構成)することです。 RAIDには、ハードディスクへのデータの割り振り方やデータの冗長化の方法によって、いくつかのレベルに分類定義されています。」.ふむ.なんとなくはわかるけど本当にそのやり方で”常に”処理速度がはやくなるのかしら.結局ディスク上のデータを見つけるための時間はそれほど変わらないのではなかろうか.

また,「ハードディスクの故障によるデータ損失の心配があれば、データを2台のディスクに同時に書き込み(ミラーリング)、一方のディスクが故障したときに、もう一方のディスクに自動的に切り替わってデータを処理する方法もあります」とのこと.これはそりゃあそうだ.

つまりはスピードアップと信頼性の向上のために使われるらしい.某社で見た仮想化技術を使っていろんなサーバーを立てて処理を捌いていたのは普通の使い方ではないっぽいしそもそもRAIDとは呼ばれないのかもしれない.


参考

http://www.fujitsu.com/jp/products/computing/storage/lib-f/tech/beginner/raid/

トラックバック - http://d.hatena.ne.jp/ksnt/20180104