3DプリンタとITとプリキュアのブログ

大学でプログラミングに出会って、ズブズブにハマってしまった情報系学生の書くブログです。

C言語で画像→アスキーアートコンバータを作る

C言語での画像ファイルの取り扱いをやってみたかったので、指定した画像ファイルを自動でアスキーアートに変換して、標準出力に吐くプログラムを作ってみました。

github.com

続きを読む

LaTeXで図表が変なところに飛んで鬱陶しいときの対処法

LaTeXで文書を作っているときに、図表がコードで書いた位置とは全然違うところに飛んで鬱陶しいので、なんとかならないものかと思っていたら、なんとかなりました。

続きを読む

Cしか書けない人のためのPython

実質Cしか書けなかった僕が、Pythonをふんわり書けるようになったので、Cしか書けない人がPythonを勉強したいときに見ると良いエントリを書きます。

ただし僕はPython初心者なので、間違っていたり不適切な部分がある可能性が高いので、注意してください。

ちなみにPython 2.7です。

 

続きを読む

stderrとstdoutについてのあれこれ

printf("hello world")とfprintf(stdout,"hello world")が同じことをしてるのはよく知ってると思います。

じゃあfprintf(stderr,"hello world")との違いは?って聞くと、多分「標準出力と標準エラー出力だから出力先が違う」みたいなこと言われるんですけど、どっちみちディスプレイに出力されるんだから、せいぜい可読性を上げるくらいの意味しかなのかなって思ってたら、ちゃんと使い途がありました。

なにが違うのか

まず1番違うのはリダイレクションやパイプを使った場合で、

(gist)

$ gcc -o hoge hoge.c

$ ./hoge >fuga

うちゅうの

$ cat fuga

ほうそくが みだれる

こんな感じでエラー出力はストレートにリダイレクションすることができません。

エラー出力もリダイレクションされてしまうとエラーメッセージの意味を成さないからですね(多分)

エラー出力をリダイレクション

よく「エラー出力は出力先を変更できない」みたいな記事を読みますが、普通にエラー出力もリダイレクションできます。

$ ./hoge 2>fuga

ほうそくが みだれる

$ cat fuga

うちゅうの

2>[ファイル名]でstderrの出力先を変更できます。

エラー出力と標準出力を合わせてリダイレクションしたい場合はこうします。

$ cat ./hoge >fuga 2>&1 $ cat fuga うちゅうの ほうそくが みだれる

crontabでよくやるけど椅子を投げられるやつ。出力先に/dev/nullを指定すれば出力を捨てられます。

こんな感じでstdoutとstderrでは結構扱いが異なります。 ちなみにC言語ではfreopen()を使えばリダイレクションせずに出力先を変更することもできます。

cronでジョブを実行するときにハマったこと

個人的にcronでジョブを実行するときにつまづいたポイントをまとめました。

cron便利だけど、難解。

 

続きを読む