カテゴリー別アーカイブ: IT

ソフトウェア開発や、使ってみたアプリケーションやガジェット等、ITに関係したもの。

system関数とpopen関数を適当に選んではいけない

CやC++で、プログラムから他のコマンドを実行する方法はいくつかあると思います。

それらの内、system関数やpopen関数を使うのが、とりわけ簡単かと思いますが、これらを適当に選んではいけない、という事態に遭遇したので、せっかくなのでsystem関数とpopen関数の違いや選び方とかを交えながらブログのエントリにしておきます。

まず、system()とpopen()の違いを簡単に言うと、コマンドを実行する際、標準入力に書き込んだり標準出力への出力を利用したりしたい場合はpopen()を、ただ実行すれば良いだけなら、system()を使うべきです。

標準入力/出力が使える、という機能が増えているだけなら、いつでもpopenでもいいじゃないか!と思いきや、そこに罠(!?)があったのです!

続きを読む


独りLTしました! – 「TeamGeekを読んで」

友達と一緒に開催している読書会の懇親会の中で、TeamGeekを別の読書会で読み終えたよ、ということを話したところ、LTしてよ!という話になりました。

ちょうどLTとかやってみたかったので、LTらしくかる~くスライドにまとめて、次の読書会の懇親会の時に、皆酔っ払ってる中、独りLTしてみました。

(ただ、LT=Lightning Talksと複数形で、短いセッションが複数あるのがホントだと思うので、独りLTってのは矛盾してるかも。。)


発表後に頂いたコメントをもとにちょっと修正しましたが、せっかくなのでSlideshareに上げました!

 


CheetSheetを表示

アプリ作りました! – CheetSheet

Emacsやviなどのエディタを使い始める時、同じコマンドを何度も検索しちゃうこと、ありませんか?

CheetSheetは、カンニングペーパーをイメージしたアプリケーションで、何度も検索しちゃうようなことをメモしておくのに向いています。

ショートカットキー一つで、表示・非表示を切り替えられます。
また、表示する内容はマークダウン記法で記述することができます。

例えばEmacsを使っている時や、マークダウン記法で記述している時に…

emacsとマークダウン記法
emacsとマークダウン記法

パッと表示して、コマンドやショートカットキーを確認して

CheetSheetを表示
CheetSheetを表示

パッと消して、また元のアプリに戻れます。

一つのコマンドを覚えたら、新しいコマンドをCheetSheetに記載する、としていけば、色々なコマンドをすぐに覚えられるかもしれませんよ!

ダウンロードはこちら CheetSheet.zip から!

また、今後バージョンアップとかしたら、こちらにまとめて記載していくつもりです。


第2回Jolt Awards読書会 に参加してきました

第1回は、JAWS DAYSとかぶってて参加できなかったため、今回が初参戦です。

今回は、Team Geek ―Googleのギークたちはいかにしてチームを作るのかの3章と4章を皆で読んでいきました。

単純に本を読むだけなら一人で読んだほうが早いのだろうけど、色々な人と一緒に読むと、各自のバックボーンから感じ方が違うので、色々な感想が聞けたり面白いディスカッションが出来て良いですな。

そんな色々なディスカッションや、本(今回の範囲の3章と4章)を読んだ感想をつらつらと。。

続きを読む


vagrantでネットワークに繋がらなくなった

ある日、vagrantなcentOSにSinatraを入れようと、vagrant sshした状態からgem installを行ったところ、

ERROR: Could not find a valid gem 'sinatra' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - no such name (https://rubygems.org/latest_specs.4.8.gz)

てな表示が出て、インストールできませんでした。

色々試してたら、そもそもネットワークに繋がっていない模様。pingもwgetも通らんかったので。。

でも、ホストのPCは普通にネットワークにつながってる。。

こういう時は再起動だ!というわけで、一旦exitして、vagrant reloadして、もう一度vagrant sshしたら、ちゃんと繋がるようになりました。

ちゃんと原因追わなかったけど、なんだったんだろ。。。

 


pthread_createで作ったスレッドからクラスのメンバ関数を呼ぶ

C++で、pthread_createで作ったスレッドから、クラスのstaticではないメンバ関数を呼びます。

 


pthreadCallMethod.cpp

 

実行結果

$ g++ pthreadCallMethod.cpp -o pthreadCallMethod -lpthread
$ ./pthreadCallMethod.exe
Called successfully, number = 5

 


C++でファイルやフォルダが存在するかどうかを確認する

C/C++で、ファイルやフォルダが存在するかどうかを、stat関数の戻り値を用いて確認します



checkExist.cpp

実行結果:

$ g++ checkExist.cpp -o checkExist
$ touch file
$ mkdir directory
$ ./checkExist
0
0
-1