CentOS 7でのNginx/PageSpeed Module + PHP-FPM7.1 + MariaDBのインストール (1)

Ubuntu 以外の初のLinuxに挑戦

サーバーを構築するとき、初めは手に慣れていたUbuntuでできるだろうと漠然と思っていたが、あれが思うままには素早く行かなかった。사실 말처럼 우분투는 그렇게 가볍지 않았다.

もちろん、何の問題も検索すれば出るほどのユーザー層はすごく役に立ったし、apt-getを使ったマニュアルが多くあるのも、Ubuntuのおかげであることは否めないところだが、いくつか気に入らないところがないことはなかった。

  • あまりにも多かったアップデート
    • サーバーは構築してから、継続するのが目標に等しい問題だが、サーバーのOSなのに、アップデートを圧迫する傾向がある。
  • 少なくない変数
    • ソフトウェアの多様さもいいところではあるが、Ubuntuでのセッチングは案外、手間がかかるところがあるし、問題の要因につながれるほど、方法はばらばらである。
    • たぶん、ほとんどの原因は自分の未熟さからくると思うので、あれこれ言いながらも、ただ気に入らなかったという感情的な問題ではないとは限れない。
  • aptとapt-getよりyumの方が単純で、便利
    • 一応、コマンドが短いし、分かりやすい。aptとapt-getごとく、ばらばらになってもない。

ApacheよりはNginxは回答なのか

Apacheが普通のサーバー構築に基本になっている傾向だが、Apacheは重たいし、セッチングもあまり簡単ではない。だとして、Nginxの方が軽いとは必ずしもそうとは言えないところもあるし、マルチメディアの性能では大きい違いはないそうだ。慣れているものを使うものだが、configファイルのスタイルが直感的なこともあり、FastCGIが基本として使われるNginxの方が自分にあっていると思った。

그럼 이제부터 서버 셋팅을 시작해보자. 따끈따끈하게 VPS에서 CentOS 7 서버를 만들어낸 상황으로 가정하자.

참고로 본 서버는 Vultr에서 구동되고 있다. 서버 셋팅에 관해서 후일 더 자세하게 적어볼 생각이다. 링크를 누르고 신규 서버를 셋팅하고 금액을 지불하면, 신규 가입자와 글쓴 본인 모두에게 소정의 적립금이 적립된다고 한다.

다음 글에서 이어집니다.

[SCITマスター作文] 2017年11月6日

精神的に問題を抱えているとき、お酒やタバコは役に立つと思いますか。

あらかじめ

  • この主張は論理の展開のために選ばれたもので、自分の考えと一致しているとは言えません。
  • 日本語で書いてから、韓国語に翻訳する順になりました。

作文

私は精神的な問題を抱えている時、お酒やタバコなどは役に立たないと思います。なぜなら、お酒とタバコは依存性があり、結果的には身をお酒とタバコにまかせる状態になるからです。依存したあげくに、自分の体を壊すことになるのは十分予測できます。

たしかに、お酒を飲むと心身ともに楽になるし、タバコを吸うと冷静になり、イライラとストレスの対策にもなると言う人もいますが、あれは普段の方が精神的ストレスなどに弱くなって、感情のコントロールを失った結果に過ぎないという意見もあります。

ですから、私は精神的な問題を抱えている時、お酒やタバコは役に立たないと思います。

感想

助詞一つ間違ったことで済んだのはいいものの、お酒を三回も氵(さんずい)を書かないミスをしたことは恥ずかしいです。

CentOS 7でのGoAccessの設定

書き込み途中なので、翻訳は見込まれています。

概要

GoAccess는 유닉스 계열 시스템의 터미널, 사용자의 브라우저에서 돌아가는 오픈 소스 실시간 웹로그 분석기이자, 상호 작용 뷰어라고 합니다. 터미널 기반 로그 분석기다보니,
SSH 같은 터미널로 접속했을 때, 웹 서버 통계를 빠르게 분석할 수 있는 물건입니다.
터미널 출력 말고도 HTML이나 JSON, CSV로 출력하게 할 수도 있다네요.

背景

nginx의 실시간 통계 기능이 있다는 글을 보고, 그 툴이 나름 잘 만들어졌길래 혹시나 하고 정보를 더 찾아봤습니다.

그리고 알게된 사실은 nginx plus라는 상용 프로젝트에 들어 있는 물건으로 많이 비싸다는 것입니다.

nginx 실시간 현황 확인 페이지 설치에 대해서는 후일 또 올리도록 하겠습니다.

결국 이를 대체할 다른 방법이 없을까 찾아봤는데, GoAccess가 가장 괜찮은 대안 같았습니다.

インストール

cent OS 7 기준…

sudo yum update
sudo yum install goaccess

이걸로 끝.

컴파일을 하고 싶은데 openssl 오류를 뛰어넘지 못해서 빌드에 이르지 못하고 있습니다.

ログ設定

https://github.com/stockrt/nginx2goaccess

オプション

goaccess /var/log/nginx/access.log -o ~/go_report.html --real-time-html

デーモン化

*단순 데몬화는 간단합니다. –daemonize만 붙이면 그 순간부터 백그라운드로 잘 실행됩니다.

그러나 제 경우엔 그것만으로는 부족합니다. 자동 실행되어야 합니다.

1.systemd 관련 설정을 위한 파일 생성

[Unit]
Description=GoAccess Live Log Analyzer

[Service]
Type=simple
ExecStart=goaccess /var/log/nginx/access.log -o ~/go_report.html --real-time-html
ExecStop=/bin/kill -9 ${MAINPID}
PrivateTmp=false

[Install]
WantedBy=multi-user.target

/etc/systemd/system/goaccess.service에 root 권한을 써서 생성합니다.

–daemonize는 불필요합니다. 이 자체가 systemd 데몬으로 구동됩니다.

sudo nano /etc/systemd/system/goaccess.service면 될 듯 합니다.

2. systemctl daemon-reload를 써서 위 정보를 서비스로 읽어들입니다.

3. sudo systemctl start goaccess를 쓰면 정상적으로 시작합니다.

이제 서버에서 go_report.html을 읽어보면 잘 작동하는 것을 볼 수 있습니다.

問題

다만, SSL이 적용된 경우, html 내부에 쓰인 goaccess 구동용 웹소켓 또한 보안으로 암호화되어야 합니다.

아쉽게도 yum에서 손쉽게 설치한 goaccess는 최신 버전인 1.1에서 추가된 openssl 관련 컴파일 옵션이 빠져있습니다.

손수 빌드하셔서 openssl을 포함시켜야 쓸 수 있을 것으로 보입니다.

ちなみに

셋팅 다 해놨더니 불안한 서버 속도를 극복하고자 Cloudflare 캐싱을 활용하게 되었습니다.

접속 경로가 Cloudflare를 경유하게 된 탓에 방문 경로 분석이 무용지물이 되었는데요.

다행히 Google Analytics 스크립트는 영향받지 않으므로 통계 수집에 이상이 없다고 하네요. 그 쪽의 방문자 수 통계를 더 참고해야 할 듯.

역시 본연의 액세스 로그 판단 용도에 맞도록 트래픽이 하드한 파일과 오류 파악에나 신경을 쓰면 되지 싶습니다.

[SCITマスター作文] 2017年10月30日

フレックス制を導入している企業もありますが、この制度について、あなたの考えを述べてください。

あらかじめ

  • この主張は論理の展開のために選ばれたもので、自分の考えと一致しているとは言えません。
  • 日本語で書いてから、韓国語に翻訳する順になりました。

作文

フレックス制を導入している企業が増えているなか、私はまだそのメリットが知られてなくて、まだ多くの会社が導入してないことが残念な事実だと思います。

なぜなら、通勤ラッシュも避けられるし、自分に合う時間を選んで働くことで人それぞれである活動時間に集中していい結果に繋がるからです。私も学校のバイトをしてしていたとき、午後を選んで、通勤時間を避け、ストレスなく働いたことがあります。

たしかに、会社の中で連絡が難しくなるこおはあると思います。しかし、これはメッセンジャーなどの機能を使えば、簡単に対処できます。

ですから、私はフレックス制の導入をより進めた方がいいと思います。

感想

先週の文章の続きのように似ていた経験です。なのに、根拠の辺はあまり進歩が見られません。どこにいても、いつ出勤しても大丈夫になるまで、出世しなきゃ!

プログラミングとは?

人がプログラミング言語にて、命令し、パソコンを起動させる技術

一つ以上の抽象アルゴリズムを特定のプログラミング言語を使い、詳細なパソコンプログラミングとして、実用化する技術を言う。

ソースコード→コンパイラー→マシン語

JAVAの誕生背景

  • 1991年Sun社でジェームズ・ゴスリン(James Arthur Gosling, 1955-)を中心に、家電に使うための言語の作製
  • 特定のCPU

[SCITマスター作文] 2017年10月23日

あなたに今、100万円の余裕があったら、貯金しますか。投資しますか。

あらかじめ

  • この主張は論理の展開のために選ばれたもので、自分の考えと一致しているとは言えません。
  • 日本語で書いてから、韓国語に翻訳する順になりました。

作文

お金の余裕があったら、貯金するか、それとも投資するか、そこに必ず正しいという答えはありません。なのにですが、自分の基準さえあれば、これからどうするかは決められます。そして、私は貯金を5割、投資もまた5割と半分に分けました。

なぜなら、貯金の利点である財産の保障と投資の利点である高い利益、両方を手に取ることができるからです。最近は10年間長引いた不況も終わりが見込まれ、各国ではそれぞれ投資を急いでいるそうです。金利も、韓国ではアメリカのようにこれから上がるし、投資の利益も経済と繋がっているからです。

たしかに、日本はまだゼロ金利であって、投資方法によって、失敗しがちだということもあります。しかし、私も5年ほど前から投資ファンドが1割ぐらいの利益を得たこともあって、常に投資してするからこそ、自分のやり方を身に付けられるとも言えます。

ですから、もし私に100万円ができたら、貯金と投資を半分にしようと思います。

先生の修正コメント

細かい文法の使い方のミスが気になりますね。

感想

曖昧な文章に、曖昧な根拠、曖昧な魅力が宿るものです。せめて、一つに偏って書いたら、読むほうも楽しめる文章になったかな、と思ってみます。

TickCount 研究

物事の始まり

この疑問が出たのは、ただString(あるいはC#などの言語ではstringとも言えます。以下string)とStringBuilder、StringBufferの性能の違いに対する初心者向けの話でした。

stringは実際には読み出し専用であることは、素人以外は大体知っている事実です。immutableと言いますが、変わらないということです。よって、『+』や『concat』をすると、stringはそのたびに、新しいインスタンスをリターンするようになります。

C++では、strcat()で文字列を修正するとき、あらかじめ大きいスペースを割り当てると、速度が飛躍的に上がるといいますが、C#とJavaでは文字列の修正は難しいので、ほかの方法が必要になり、それはMSDNにも出ています。JavaとC#が似ていることは、コピーしたらすぐわかるところですが。

効果はあるのか

それで、その違いはどうやって判りますか。Javaの先生は文字列を作り出し続けるコードを出して、「まぁ、全然変わらないじゃん」と言いましたが、実際に大きい差があることはある程度、コードからも把握できます。

/* string performance in C# */
            string me = "";
            Console.WriteLine("String START");
            var cnt = Environment.TickCount;
            for (int i = 0; i < 100000; i++)
            {
                me += "a";
            }
            Console.WriteLine("Time: "+(Environment.TickCount - cnt).ToString());
            Console.WriteLine("END");
            //Console.WriteLine(me);

            StringBuilder sb = new StringBuilder();
            Console.WriteLine("StringBuilder START");
            cnt = Environment.TickCount;
            for (int i = 0; i < 100000; i++)
            {
                sb.Append("a");
            }
            Console.WriteLine("Time: " + (Environment.TickCount - cnt).ToString());
            Console.WriteLine("END");

C# コード

/* string performance */
        String me = "";
        System.out.println("String START");
        long cnt = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++)
        {
            me += "a";
        }
        System.out.println("Time: "+(System.currentTimeMillis() - cnt));
        System.out.println("END");

        StringBuffer sb = new StringBuffer();
        System.out.println("StringBuffer START");
        System.out.printf("capacity: %d, length: %d\n", sb.capacity(), sb.length());
        cnt = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++)
        {
            sb.append("a");
        }
        System.out.println("Time: " + (System.currentTimeMillis() - cnt));
        System.out.printf("capacity: %d, length: %d\n", sb.capacity(), sb.length());
        System.out.println("END");

Javaコードは次のように結果が出ました。

String START
Time: 7467
END
StringBuffer START
capacity: 16, length: 0
Time: 9
capacity: 294910, length: 200000
END

中途半端なもんではないですね。10万個のStringにつけながら、7秒以上かかりました。一方、 C#は長ければ、5秒以内程度で、コンパイラー最適化のすごさを分かります。StringBufferとStringBuilderも10msを下回り、0msが出る時もありました。刹那と言っても、過言ではありません。

さすがに、Heapをどれほど、使い切ったり、新しいメモリーの割り当てを避けて、有効に扱うのが大切なのか、目に見える実験でした。

浮かび始める疑問

面白いところは、JavaのStringBufferとは違って、C#のStringBuilderの所要時間が0msと出たところです。コード一つでもなく、10万なのに果たしてできるのか?誤差はないのか?気になりました。

早速、Environment.TickCountを疑いました。実はTickCountでコードのパフォーマンスを比較する時代は、マルチプロセッサの到来で、もう過ぎたという意見もあります。コードの後先はあっても、働くタイミングは異なるかも知らないという、スレッドの危険が日常化した時代ですからね。

C#のゆーざーはどういう方法を使っているのでしょうか。

  • Environment.TickCount
  • GetTickCount / GetTickCount64
  • DateTime.Now(UtcNow).Ticks
  • Stopwatch
  • static Stopwatch.GetTimestamp

Environment.TickCount

簡単で、使いやすいのはEnvironment static classのメンバーであるTickCountです。パソコンのアップタイムをミリセカンドで見せるGetTickCount()とはほぼ同じ機能をしていて、余計に符号が付く整数(int)なので、24.9日以上つけっぱなしのパソコンでは問題が発生します。Int32.MaxValueを超えるとInt32.MinValueに戻ってから始めるらしいです。当然、差を求めると、符号が逆になってしまいます。MSDNではInt32.MaxValueとの&(AND)演算で一時解決したようです。(Math.Abs()より早く符号がなくなりますね。)

GetTickCount64

VistaからできたWin32 APIであるGetTickCount64は符号なしlongタイプでリターンします。システムが始まった時間から積み重ねていくミリセカンドの数字を表すには、十分な長さだと言えるでしょう。しかし、本当に遊ばないで、たとえば、節電、ハイバネーションなどなく、起動時間を求めるには、QueryUnbiasedInterruptTimeが必要となります。

DateTime.Now(UtcNow).Ticks

西暦1年1月1日午前零時から、100ナノセカンドで経った時間を表します。うるう秒などはなく、本当の時間とは差が少なくないらしいです。

Stopwatch

Stopwatchはnewキーワードなく、インスタンス化できるStaticメソッドであるStartNew()を使って、時間を図り始め、Stop()を呼び出した後、ElapsedMillisecondsなどのプロパティで経過時間がわかるようになります。

  • IsHighResolutionプロパティは現在パソコンのハードウェアが別のハイレゾ性能カウンター機能があるかどうかを確認できる読み出し専用のブール属性です。今どきのパソコンはほとんどTrueがリターンされるようです。
  • Frequencyプロパティはタイマーのtick周期をリターンします。
    long frequency = Stopwatch.Frequency;
        Console.WriteLine("  Timer frequency in ticks per second = {0}",
            frequency);
        long nanosecPerTick = (1000L*1000L*1000L) / frequency;
        Console.WriteLine("  Timer is accurate within {0} nanoseconds", 
            nanosecPerTick);
    • このようなコードで、Stopwatchの正確度があらわれます。
        Timer frequency in ticks per second = 2343750
        Timer is accurate within 426 nanoseconds

static Stopwatch.GetTimestamp

Stopwatchのインスタンス化後の時間も無駄だとみる一部のユーザーはGetTimestamp static メソッドの性能に注目をしました。

  • ハイレゾ性能カウンターがあるときには、現在値をリターンします。
  • 一般のシステム時計が使われている場合、DateTime.Ticksと同じ結果が出ます。

ベンチマーク

Repeating measurement 3 times in loop of 10,000,000:

Measured: GetTickCount64() [ms]: 228
Measured: Environment.TickCount [ms]: 50
Measured: DateTime.UtcNow.Ticks [ms]: 83
Measured: Stopwatch: .ElapsedMilliseconds [ms]: 856
Measured: static Stopwatch.GetTimestamp [ms]: 476
Measured: Stopwatch+conversion to DateTime [ms]:  811

Measured: GetTickCount64() [ms]: 219
Measured: Environment.TickCount [ms]: 50
Measured: DateTime.UtcNow.Ticks [ms]: 84
Measured: Stopwatch: .ElapsedMilliseconds [ms]: 847
Measured: static Stopwatch.GetTimestamp [ms]: 465
Measured: Stopwatch+conversion to DateTime [ms]:  799

Measured: GetTickCount64() [ms]: 235
Measured: Environment.TickCount [ms]: 51
Measured: DateTime.UtcNow.Ticks [ms]: 84
Measured: Stopwatch: .ElapsedMilliseconds [ms]: 851
Measured: static Stopwatch.GetTimestamp [ms]: 470
Measured: Stopwatch+conversion to DateTime [ms]:  791

Compare that with DateTime.Now.Ticks [ms]: 1150

General Stopwatch information:
- Using high-resolution performance counter for Stopwatch class.
- Stopwatch accuracy- ticks per microsecond (1000 ms): 2.3
 (Max. tick resolution normally is 100 nanoseconds, this is 10 ticks/microsecond.)
- Approximated capacity (maxtime) of TickCount [dd:hh:mm:ss] 25:20:31:23

Done.

シングルスレッドのみ使うように設定したうえ、スレッドの優先順位を高めて、Stopwatchを利用し、1000万会呼び出しにそれぞれかかった時間です。

TickCountが共通的に早いのかと思うと、StopwatchはElapsedMillisecondsの表示のための手順もあるので、 表示をせずに、ただStart()とStop()を繰り返すのにどうかを確認した方がよかったかなと思いました。

ソースの出所: https://stackoverflow.com/questions/243351/environment-tickcount-vs-datetime-now

それで?

GetTickCountは混沌と混沌の歴史です。まさか、20余日パソコンをつけっぱなしにするあほがいるかと思った先人の誤りでしょうね。DWORDとして、符号をなくしてせいぜい40余日です。

普段使うことで問題はなさそうですが、何が長くかかり、メソッドやクラスの特徴さえ知っておけば、長引く作業を後回しもでき、パフォーマンスも向上できると思います。

これからも、気になることはぜひ実験してみないとわからないのが当然だということでしょう。

DAO / VO / DTO

회원 VO를 만들어주세요.

이러한 것은 무엇을 의미하는가?

ex) 게시판: 제목, 내용, 첨부 파일, 날짜 등등이 필드로 선언됨.
생성자, Getter, Setter 등이 포함된 클래스 같은 것.

VO란 Value Object로, 값을 담고 있는 클래스를 말한다.

プログラミングの基礎

プログラムとは

パソコンが汎用的機会になったのは、プログラム(program)のおかげである。プログラムはパソコンのための作業の指示書であり、具体的にはパソコンがある特定の作業をするためのコマンドの集まりだ。コマンドとは、CPUが遂行する基礎的な演算である。

プログラミング言語

  • ソースコード(source code): 希望する作業をテキストで表したもの
  • ソースファィル(source file): ソースコードがファイルに記録されたもの
  • オブジェクトファイル(object file): コンパイラーが機械語に変換して、ファイルにセーブしたもの

[SCITマスター作文] 2017年10月16日

自分が社長になったら、どんな福祉制度を作りますか。どうしてすでか。

あらかじめ

  • この主張は論理の展開のために選ばれたもので、自分の考えと一致しているとは言えません。
  • 日本語で書いてから、韓国語に翻訳する順になりました。

作文

もし、自分が社長になったら、どんな福祉制度を作りたいのか。そう思って会社の側に立ってみました。そうすることで、見方が広まるからです。私が思いついたのは、働く場所を選べる制度です。

なぜなら、場所を変えることが、落ちた集中力を高める一番の方法だからです。そして、想像力も豊かになり、効率も上昇します。上がります。

確かに、社員があちこち散らしては散らばってはどこにいるか分からなくなるからよくないと思われるかも知れませんが、遠隔での連絡は最近では難しいものではありません。

ですから、社員たちが自由に場所を選べる職場になる福祉制度を作りたいと思います。

先生の修正コメント

自分の経験などが入ると最も良いですね。

ex)私もSCマスターで勉強する時、休憩室に移動すると集中できます。

感想

今週から先生が代わり、ちゃんとコメントを付けてくれました。練習して指摘されないように、頑張らないとならないと思いました。

JAVA 연휴 평가 코드

Q1

import java.util.Scanner;

public class Q1 {

/*
 * 정수를 입력하세요: 8
 * 3의 배수도 5의 배수도 아닙니다.
 * 정수를 입력하세요: 3
 * 3의 배수입니다.
 */
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("정수를 입력하세요: ");
		
		int input = sc.nextInt();
		
		boolean is3mul = input % 3 == 0;
		boolean is5mul = input % 5 == 0;
		
		String output = "";
		if(!(is3mul || is5mul)) {
			output = "3의 배수도 5의 배수도 아닙니다.";
		} else {
			output += (is3mul && is5mul ? "3과 " : (is3mul ? "3의 " : ""));
			output += (is5mul ? "5의 " : "");
			output += "배수입니다.";
		}
		
		System.out.println(output);
		sc.close();
	}

}

Q2

import java.util.Scanner;

public class Q2 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("정수1 입력: ");
		int x = sc.nextInt();
		System.out.print("정수2 입력: ");
		int y = sc.nextInt();
		int min = (x < y) ? x : y;
		int max = (x < y) ? y : x;
		
		for(int i = min; i <= max; i++) {
			System.out.print(i+" ");
		}
		sc.close();
	}

}

Q3

class Account {
	private int num;
	private String name;
	private int balance;
	
	public Account(int num, String name) {
		this.num = num;
		this.name = name;
		this.balance = 0;
	}

	public Account(int num, String name, int balance) {
		this.num = num;
		this.name = name;
		this.balance = balance;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getBalance() {
		return balance;
	}
	
	public void deposit(int money) {
		this.balance += money;
	}
	
	public void withdraw(int money) {
		this.balance -= money;
	}
	
	public void print() {
		System.out.printf("번호:%d\t이름:%s\t잔액:%d", this.num, this.name, this.balance);
	}
}

public class Q3 {

	public static void main(String[] args) {
		//기본 생성자로는 객체를 생성할 수 없게 한다. 아래의 코드는 에러가 나야 함.
		//Account ac = new Account();
		
		//계좌번호와 이름을 입력받는 생성자를 정의한다. 이 때 잔액은 0
		Account ac1 = new Account(1, "김철수");
		
		//계좌번호와 이름, 잔액을 모두 입력받는 생성자를 정의한다.
		Account ac2 = new Account(2, "이영희", 10000);
		
		//이름을 리턴하는 메소드를 정의한다. 결과는 "이영희" 출력
		System.out.println(ac2.getName());
		
		//잔액은 변경 불가능. 아래 코드 모두 에러
		//ac2.balance = 1000;
		//ac2.setBalance(1000);
		
		//입금을 하면 잔액이 변경된다. 아래는 잔액 1000원 증가
		ac2.deposit(1000);
		System.out.println(ac2.getBalance()); //11000 출력
		
		//출금을 하면 잔액이 변경된다. 아래는 잔액 2000원 감소
		ac2.withdraw(2000);
		System.out.println(ac2.getBalance());
		
		//print() 메소드를 호출하면 전체 정보가 출력된다.
		//아래는 "번호:2 이름:이영희 잔액:9000"라고 출력된다.
		ac2.print();
	}

}

[SCITマスター作文] 2017年10月2日

同じ収入があるなら、大企業の一員として働くのと、独立して働くのと、どちらがいいですか。どうしてですか。

あらかじめ

  • この主張は論理の展開のために選ばれたもので、自分の考えと一致しているとは言えません。
  • 日本語で書いてから、韓国語に翻訳する順になりました。

作文

私は同じ収入があるなら、大企業の一員として働くよりは、独立して働くのがいいとおもいます。大企業で働く方が、独立して働く方よりよくないこともあるということです。

なぜなら、独立して働いていると仕事の手順や休みなどを自分で決められるからです。

確かに、大企業の方が年金ももらえる収入以外のメリットもあると見られますが、これは個人ではなく、集団の一員として見られている逆説です。

ですから、私は独立して働きながら、自分を縛らない生活を目指します。

感想

シンプルな発表で、スタンディングを仮定していなかったため、すごく単純な構成になってしまいました。書きながら、分量に気を向けて、根拠は緩すぎるところがあります。

短くて、インパクトのある発表とは何か、考え直す必要があります。

感想

同語の繰り返しが多すぎます。読みながらも、恥ずかしかったです。

[SCITマスター作文] 2017年9月25日

職業に高い低いがあるかに対して、私はあると思います。

あらかじめ

この主張は論理の展開のために選ばれたもので、自分の考えと一致しているとは言えません。

作文

職業に高い低いがあるかに対して、私はあると思います。

なぜなら、ある職業の下で世話や嫌な仕事を代わりにする役目を任されることがあるからです。

確かに、仕事は人の労働によるものであり、高い低いと分けることは望ましくありませんが、リアルの世界にはまあまああると見られています。

ですから、仕事をうまくするには、高い低いがあると認識したほうが、心を傷つけずに続けられると思います。

感想

シンプルな発表で、スタンディングを仮定していなかったため、すごく単純な構成になってしまいました。書きながら、分量に気を向けて、根拠は緩すぎるところがあります。

短くて、インパクトのある発表とは何か、考え直す必要があります。

[SCITマスター作文]2017年9月18日

人間関係をよくするには何が一番重要だと思いますか。

意見整理

人間関係をよくするためには、食事を一緒にすることが一番重要です。なぜなら、おなかが満たされたら、場の空気も解けられるからです。確かに、食事が万能の鍵だとは言えないし、大した影響がないかもしれません。

しかし、デートの始まりも食事だと自然に思われますが、同じ理由で友達も、社会での人間関係にも通じるところがあります。

ですから、人間関係をよくするためには、まず食事から始める方がいいと思います。

感想

シンプルな発表で、スタンディングを仮定していなかったため、すごく単純な構成になってしまいました。書きながら、分量に気を向けて、根拠は緩すぎるところがあります。

短くて、インパクトのある発表とは何か、考え直す必要があります。

[SCITマスター作文]2017年9月11日

あなたが就職先を探すとき、何を一番重視しますか。その理由は?

書き込み

私は就職先を探すとき、何より、安定が重要であると思います。そこには三つの理由があって、どれも人生出かけられない大事なことだと思います。

まず、安定は幸福の第一条件です。安定した生活ができないと、残業や早い出勤、不定期給料などの理由で人間として到底暮らせません。十分な睡眠をとって、夜明けに起きなくてもいい仕事が生活のクォリティーを上げられます。

次に、冒険の厳しさです。やりがいとお金はたしかに、大事なことではありますが、その道はとても長くて、険しいと思います。仕事の継続、そのものが難しいほど、安定してないからです。

最期に、安定はほかの条件を満たせるきっかけになります。安定した収入と予測できる時間のおかげで、自分の管理と仕事の昇進も狙えます。

総合診療医 ドクターG 2017年 第10回の韓国語字幕

섬네일

第10回 患者の訴え「熱が出て おなかが痛い」

患者は、母親と妹、祖父の4人で暮らす5歳の男の子。去年、両親が離婚し、父親代わりの祖父と毎日空手の練習をしている。いつもは手がかからないお兄ちゃんなのだが、ある朝、なかなか起きてこないので母親が見に行くと、激しい腹痛で苦しんでいる。熱もある。母親が会社に「休む」と連絡を入れようとしたところ、吐いてしまった。急いでかかりつけの病院へ。すると、総合病院に行ったほうが良いといわれドクターGを紹介された。
【ドクターG】 新潟大学医歯学総合病院 小児科・医師・齋藤昭彦
【ゲスト】 関根勤、安めぐみ

~肺炎球菌性肺炎による胸膜炎(はいえんきゅうきんせいはいえん による きょうまくえん)~
肺炎は、さまざまな菌やウイルスによって引き起こされますが、中でも肺炎球菌と呼ばれる細菌が原因となることが最も多いとされています。肺炎球菌は、主に鼻咽頭(鼻とのどの奥)に住み着いていて、咳やくしゃみで菌が周囲に飛び散り、それを吸い込むことによって感染します。この菌に感染して肺炎を発症すると、激しい咳、痰、発熱、胸の痛みなどの症状が出ます。重篤化して、菌が髄膜炎や血液の中に入り込み、「敗血症」を引き起こすことがあります。0歳から5歳までの小児や、65歳以上の高齢者などの免疫力が弱い人がかかりやすく、予防接種が推奨されています。
今回の症例の5歳男児の患者は、肺炎球菌が気道から肺の内部に感染するルートではなく、何らかの原因で菌が血液中に入り、血流に乗って肺の外側に達するルート(「浸潤(しんじゅん)性肺炎球菌感染症」)で感染したため、咳などの風邪の症状がありませんでした。肺を包む胸膜にまで炎症が及んで「胸膜炎」を引き起こし、その痛みが神経を伝わり、腹痛を引き起こしていました。
抗生物質の効果で来院翌日に解熱。腹痛も治り、1週間後に無事に退院しました。

出所: http://www4.nhk.or.jp/doctorg/196/

注目する単語

  • 嘔吐おうと: 구토
  • 吐気はきけ: 구토감
  • 細菌性腸炎さいきんせいちょうえん: 세균성 장염
  • キャンピロバクター胃腸炎いちょうえん: 캠필로박터 위장염
  • サルモネラ感染症かんせんしょう: 살모넬라 감염증
  • イレウス(Ileus), 腸閉塞ちょうへいそく: 장폐색
  • 虫垂炎ちゅうすいえん: 충수염(맹장염)
  • 腎盂腎炎じんうじんえん: 신우신염
  • レントゲン: X-Ray

感想

子供が痛がるとき、診断を出すのって大変難しいことだと思います。最少は腹痛だから、ただ「何かを間違って食べたのでは」から始め、飼っていたリクガメによる細菌感染まで出て、鶏肉の問題も出ましたが、すべてが遠回りにすぎませんでした。いつものドクターGですね。MCが「リクガメに悪い」と言ったのも当然のことです。

予防接種に打たれたのに、何が入っているか具体的に知っている人はあまりないでしょう。肺炎球菌も一つではないと、今回初めて分かりました。インフルエンザの予防も菌が多様であるため、今年のはやる菌を予測するしかないらしいですしね。幸いに、予防接種で免疫できる菌の種類が増えたものの、時期によって違うかもしれないという発想ができるかというと、なかなか難しいです。まさに、不思議なドクターGです。

画像について

画像は自分て録画したもので、提供できません。原作者の権利が優先します。

2017-06-21 韓国語字幕

総合診療医 ドクターG 2017年 第9回の韓国語字幕

섬네일

第9回 患者の訴え「おなかが張って苦しい」

絵本を中心に扱う書店を経営する58歳の女性。読み聞かせや、被災地に本を送る活動にも力を入れている。最近おなかが張って苦しいと、大学病院の消化器内科を受診。腹水がたまっていることがわかり、検査したところ、腹水からがん細胞が見つかった。「余命3ヶ月」と言われてホスピスを勧められたものの、セカンドオピニオンを受けたいとドクターGの元に・・・。「先生、私、諦めたくないんです!」患者を救うことはできるのか?
【ドクターG】 日本医科大学武蔵小杉病院腫瘍内科 医師・勝俣範之
【ゲスト】 湯山玲子、勝村政信

~原発性腹膜がん(げんぱつせいふくまくがん)~
がんは、最初に発生した場所(原発巣)によって、「肺がん」「胃がん」のように診断されますが、まれに転移したがん(転移巣)はあるものの、どのような検査をしても原発巣が見つからないことがあります。「原発不明がん」です。
「原発不明がん」には、さまざまな種類がありますが、そのうち、女性で腹膜に転移が認められ、腫瘍マーカーCA125が高値を示し、消化器や卵巣などの臓器にがんがないものには、特に「原発性腹膜がん」という病名がつけられています。これまでの臨床データから、卵巣がんと同じ治療が有効なことがわかっています。
症例の患者は、消化器内科・婦人科・泌尿器科などの専門科で診察を受けたものの、原発巣がみつからないために、治療できないと言われていました。臓器別ではなく、がんを総合的に診ることができる腫瘍内科のドクターGによって診断がつき、卵巣がんと同じ抗がん剤治療と、大網(腹膜の一部)、子宮、卵巣の摘出手術を行いました。5年後の現在、がんの再発はなく、元気に仕事をしています。

出所: http://www4.nhk.or.jp/doctorg/196/

注目する単語

  • 結核けっかく: 결핵
  • 腹膜炎ふくまくえん: 복막염
  • クラミジア感染症かんせんしょう: 클라미디아 감염증
  • 卵巣らんそう: 난소
  • 原発巣げんぱつそ: 원발소

感想

今回のドクターGは怖いところがあります。研修医たいがたじろいでしまったと思います。病気があっても知ることができず、余命の宣告を告げられるしかなかった今回の症例に出る医者たちが無能にも見えた番組でした。しかし、韓国では腫瘍内科が大学病院から増えているので、西洋のトレンドを追っていた韓国としては、表面化される前に、自然に溶け込んだと思います。今回の人物は言葉が難しくなかったため、翻訳は順調でした。日本語はがんを漢字で書かないんですが、「癌」は難しくないですね。それでも、医療系でがんというのがほかにないから、楽なところもあると思います。

画像について

画像は自分て録画したもので、提供できません。原作者の権利が優先します。

2017-06-14-総合診療医ドクターG 韓国語の字幕

総合診療医 ドクターG 2017年 第8回の韓国語字幕

サムネイル

6月7日(水)「総合診療医 ドクターG」選 患者の訴え「背中が痛む」

患者は、姑の介護で、心身ともにストレスフルな生活を送っている50歳の女性。1年ほど前から、ときおり背中に刺すような痛みを感じていた。介護疲れか、更年期障害か、それとも何かもっと恐ろしい病気かも…と不安に思っていたところ、ある夜、娘と電話しているときに、突然激しい痛みに襲われた。肩やあご、胸も痛む。驚いて実家に駆け付けた娘とともにドクターGの病院へ。問診を続けていくと…
【ドクターG】 岡山大学病院 医師・片岡仁美
【ゲスト】 早見優、六角精児

~微小血管狭心症(びしょうけっかんきょうしんしょう)~
心臓の微小血管が狭まって、血流が悪くなる病気です。閉経前後の女性でおきることがあります。原因は、動脈硬化を防ぐ作用のある女性ホルモン(エストロゲン)の分泌がへることによるといわれています。症状は、胸や背中の痛みなどで、比較的、安静時に起きることが多いとされています。更年期障害の女性のうち、10人に1人がかかるという調査もあり、心筋梗塞に至ることもあります。
治療は狭心症薬のうち、カルシウム拮抗薬やニコランジルを服用します。

症例の患者は、いろいろな医療機関をまわって、心電図やエコー、CTなどのほか、専門医のもとで心臓カテーテル検査までしましたが、異常がみつかりませんでした。
「微小血管狭心症」を疑ったドクターGが、専門の医師に特別の検査を依頼したことで、確定診断することができました。カルシウム拮抗薬を長期間服用することで、痛みがでることもなく、元気に過ごしています。

出所: http://www4.nhk.or.jp/doctorg/196/

注目する単語

  • 急性心筋梗塞きゅうせいしんきんこうそく: 급성심근경색
  • 狭心症きょうしんしょう: 협심증
  • 冠攣縮性狭心症かんれんしゅくせいきょうしんしょう: 관련축성협심증(변이형 협심증의 일종)
  • 大動脈解離だいどうみゃくかいり: 대동맥해리(대동맥 박리)
  • 心臓しんぞうカテーテル: 관상 동맥 조영술
  • 高安病たかやすびょう, 高安動脈炎たかやすどうみゃくえん: 타카야수 동맥염
  • 自律神経失調症じりつしんけいしっちょうしょう: 자율신경실조증
  • 微小血管びしょうけっかん: 모세혈관

感想

二度目の翻訳になると、手軽久喜子悦単語が増えました。しかし、声が小さいドクターGや、慣れていない単語の登場はまた難問でしたので、繰り返して聞くしかありませんでした。特に、今回の症例はあまり知られていない疾患であったため、監修を担った韓国の専門家もまた驚いたと言いました。

画像について

画像は自分て録画したもので、提供できません。原作者の権利が優先します。

Doctor G-NHK World2017-06-08の韓国語字幕

総合診療医 ドクターG 2017年 第6回の韓国語字幕

サムネイル

第6回 患者の訴え「右胸が痛い」

出版社で子育て雑誌の編集をしている38歳の女性。「右胸が痛い」と、片道2時間もかけてドクターGを訪ねてきた。詳しく問診すると、2年ほど前から、体のあちこちが痛み出したという。最初は右足のすね。そのあと両腕や背中も。その上、最近は目がかすんでモノが二重に見えるという。しかし、いろんな病院を回ったが、どこも悪くないと言われ、検査をしても異常なし…。ドクターGいわく、史上最大の難問!
【ドクターG】 洛和会音羽病院 医師 神谷亨
【ゲスト】 ドリアン助川、壇蜜

~身体症状症(しんたいしょうじょうしょう)~
精神の不安定さが身体の症状として現れる病気です。痛みなどの苦痛を伴う症状や、健康に対する不安にとらわれていることなどが特徴で、物事を悲観的に考え、不安を膨らませるタイプの人に多くみられます。以前は身体表現性障害と呼ばれていました。症状を説明できるような身体的疾患がないにもかかわらず、さまざまな場所の痛みや痺れ、吐き気、喉の違和感などが6か月以上続きます。
身体症状症は、比較的よくある病気で、日本人の成人の5パーセントから7パーセントがこの病気だと考えられています。
治療法は、心理療法、薬物療法、職場や家庭の環境調整などです。しかし、実際に痛みなどの身体的な苦痛があるために、精神的な疾患だということが受け入れられず、ドクターショッピングを繰り返し、なかなか治療に向き合えない人が多くいます。
今回の症例の患者は、2年前の右足のすねにはじまり、右胸、両腕、背中にビリビリとした痛みを感じるようになりました。さらに、半年前、インターネットで調べたことがきっかけで、自分は「多発性硬化症」だと思い込み、「物が二重に見える」「飲み込みにくい」といった多発性硬化症の症状も出るようになりました。自分がある病気だと深く思い込むと、実際にその病気の症状が現れることも、身体症状症の特徴の一つです。ドクターGの診察を受け、患者は自分の病気を正しく理解し、病気は快方に向かっています。

出所: http://www4.nhk.or.jp/doctorg/196/

注目する単語

  • 研修医けんしゅうい: 연수 의사, 한국에서 흔히 수련의, 레지던트로 불림.
  • 帯状疱疹たいじょうほうしん: 대상포진
  • 抗リン脂質抗体症候群こうりんししつこうたいしょうこうぐん: 항인지질항체증후군
  • 糖尿病性とうにょうびょうせいニューロパチー: 당뇨성 신경병증
  • まれ: 드묾

感想

テレビ番組の翻訳は初めてです。病気に関する専門的知識はありませんが、グーグル検索により、日本語と韓国語の単語の対応ができ、その後関連のある知人の助けによって、ある程度は理解できる字幕であると評価されました。

画像について

画像は自分て録画したもので、提供できません。原作者の権利が優先します。

Doctor G-NHK World2017-05-2422-25の韓国語字幕

아종면선곱창국수 阿宗麵線

아종면선곱창국수
阿宗麵線

정보

방문일

2017년 4월 14일 (금)

메뉴

소(小) NT$50 (약 1,850원)
대(大) NT$60 (약 2,250원)

소감

시먼딩 한복판에 자리잡은 이 가게는 손쉽게 찾아갈 수 있습니다.
뿌요샹챠이 한 거랑 안 한 거 같이 주문했는데 여러 사람 협업으로 줄선 사이 뚝딱 담아내는 거라 이게 꼬이면 앞뒤 사람에게 대신 줘야 해서 시간이 걸립니다.
사실 고수향이 그리 강하진 않은 듯 합니다. 나중에 본 팁으로는 흑식초를 조금 더 하면 달고 신 맛이 어우러져 상당히 맛이 좋다고 합니다.
칠리 등 세 가지 소스를 더 넣어 먹을 수 있다지만, 이미 간도 맞고 맛에 빈틈이 없어서 필요한가 의문입니다.
서서 먹는 음식이지만 국물과 면 하나도 아쉽지 않습니다.
중국이나 대만 입맛이 아니어도 어쩐지 진한 육수에 빠져서, 국물까지 들이키고 있을 겁니다.
아쉬운 것은 젓가락이 안 나오고 숟가락만 줘서 국수를 후루룩 들이킬 수 없다는 점입니다. 워낙 가늘고 짧아서 젓가락도 애매해서 그랬을지 모릅니다. 그래도 젓가락이 익숙한 한국인 입장에선 챙겨다니던 젓가락으로 먹는 게 더 좋았네요. 국물은 떠먹다가 그냥 마셔버렸지만요.

「C:\」などであやしいフォルダがドライブルーツから見つかったら…

変なフォルダ

Windows エクスプローラーでの設定で隠されたフォルダを見えるようにした方がいらっしゃったら、
韓国のあるサイトの訪問後、こういう状態になります。

フォルダの名前はまさにあやしいです。

変なファイル

中にはフォルダなみのネーミングセンスをもったファイルが一つあります。
フォトとはいえ、内容はまったくイメージではありませんので、普通には開けません。

変な内容

ヘックスエディターで確認できます。
ここではHxDという無料ツールを使用しました。

そして、問題は解決されました。
AhnLabはV3というワクチンソフトを作った韓国の会社です。

Ransomwareを防ぐための方法だそうです。
ファイルの変異が見つかったら、その行為を起こしたプロセスが退治されるでしょう。

変なアプリ(マジで) 「パソコンウイルスのワクチンか?お前が?」

ま、こういうやつが普段からないほうがパソコンにやさしいのではないか、なんていつも思っています。

プロジェクト相互投票ページの製作完了の報告書

サンプルページへ進む

期間: 平成27年(2015年) 11月 20日 ~ 12月 22日

人数: 1人

目的: ACEグループ活動コンテスト(大学行事)の発表会に参加した五つのチームを平等に相互評価するシステムを作る

 

ACE グループ活動コンテストの評価システム

プロジェクト 完了報告書

2015.12.07

日語日文学科 201131307 イ・ジンベク

gachon

目 次

1. プロジェクトの完了と概要 3

1.1 概要 3

1.2 構成 4

1.3 実行画面 5

1.4 プログラムの仕組み 11

 


プロジェクトの完了と概要


概要

  • プロジェクト名
『 ACE グループ活動コンテストの評価システム 』開発
  • プロジェクトの説明
大学の先進事業により、政府と大学が力を合わせて進めているプロジェクトの一つで、ACEという大学がある。文学部でも様々なプロジェクトが進められている。五つのプロジェクトのなか、最も学生の注目を集めている活動はグループ活動コンテストである。三人程度の学生どうしのグループを組み、東洋文化について調べたことを発表して、相互評価を行い、一緒に水準を上げることができる。しかし、こういった評価システムは計画の中だけでのことであり、実際には紙を使った異論の余地がある方法だった。予想されている混乱を防ぐため、担当教授の意見に合わせた新たなモバイルプロジェクトの企画の必要性が認められた。

当プロジェクトにより、参加者の発表情報を簡単に見せることにして、認証ができた人間にのみ、自分のグループを除く他グループを評価できるようになり、最終的には発表の直後ランキングに表せる。ランキングの一覧から、細かい点数と予想奨学金も見せて、教授からの案内の必要性も下がり、素早く最終結果を分かるようになる。

  • チームの構成
役割 ID 姓名 email etc
すべての企画と開発 201131307 イ・ジンベク [email protected]
  • ロードマップ
企画 コーディング アップロード データの構成 テスト
  • 開発後の感想(開発後記)
このプロジェクトは大変単純な仕組みを持っているが、これに要求されるコードの難易度はあまり低くは感じなかった。まだ使ってみなかったUIフレイムワークのMaterializeとjQueryの技術は慣れてない新しい挑戦だったけど、結果的に成功につながって、とてもスムースに働いていることが分かった。その他、PHPサーバーサイドコードを使って、データベースの制御ができたが、他にデータベースの授業なしに背景知識でやり遂げたものだから、自分でできたという意味があった。振り替えてみれば、最初から最後まで、すべてが挑戦の過程だった。

プログラムの構成

  • 環境の構成図

  • 実行機能
主要機能 詳細機能 使用者
管理者 一般使用者[1]
順序修正 直接入力、ランダム修正
結果の閲覧 プライベートタイトル、奨学金の計算
問い合わせ 学生の認証、部員の発表と概要の表示
評価 並び変えて評価、やり直し
  • 실행환경

サーバーOS: Linux上のホスティングサービス

サーバーIP: 183.***.***.***

サーバー接続URL: http://vote.yeon.me/ (上記住所に変更)

サポートするブラウザ: IE11 以上やChrome、Safari、FirefoxなどHTML5のサポートされているブラウザ

モバイルプラットフォーム: Chrome, Safari, Opera (Android, iOS, Windows Phone[2])

プログラムの起動画面

  • ユーザー認証

イメージ 1 無効IDの入力

イメージ 2 学生のIDがない場合

イメージ 3 ID入力認証画面

  • 평가 화면

イメージ 4 評価ページのヘッド

イメージ 5 評価ページの全体

  • 整列画面 (管理者限定)
    このページは第一ページからの‘ordr’キーワードで接近できる。

イメージ 6 順序の設定ページ。スクリーンでの表示のため、多少大きめの文字を使った。

  • 結果画面 (管理者権限)
    このページは第一ページからの‘rest’ キーワードで接近できる。(参加者には内緒)

イメージ 7 順位だけを見せて、どのグループかは見せない状態 (発表が終わってから、評価参加人数を確認する段階)

イメージ 8 全体結果の公開

プログラムの仕組み

  • ディレクトリの構造とファイル

tree

│ global.php

│ index.php

│ order.php

│ order_ok.php

│ result.php

│ vote.php

│ vote_submit.php

├─css

│ materialize.min.css

│ style.css

├─font

│ ├─material-design-icons

│ │ LICENSE.txt

│ │ Material-Design-Icons.eot

│ │ Material-Design-Icons.svg

│ │ Material-Design-Icons.ttf

│ │ Material-Design-Icons.woff

│ │ Material-Design-Icons.woff2

│ │

│ └─roboto

│ Roboto-Bold.ttf

│ Roboto-Bold.woff

│ Roboto-Bold.woff2

│ Roboto-Light.ttf

│ Roboto-Light.woff

│ Roboto-Light.woff2

│ Roboto-Medium.ttf

│ Roboto-Medium.woff

│ Roboto-Medium.woff2

│ Roboto-Regular.ttf

│ Roboto-Regular.woff

│ Roboto-Regular.woff2

│ Roboto-Thin.ttf

│ Roboto-Thin.woff

│ Roboto-Thin.woff2

├─img

│ hi1.img

│ hi2.img

│ hi3.img

│ hi4.img

└─js

materialize.min.js

Sortable.min.js

フォルダ ファイル名 説明
global.php 実行可能のフラグ
index.php 参加者認証と管理者限定ページへの接続
order.php 発表順の設定
order_ok.php 発表順の反映後index.phpに復帰
result.php 結果ページ
vote.php 評価ページ
vote_submit.php 評価の送信 (Ajax)
css materialize.min.css Google Android Material デザイン
HTML5 CSS フレイムワーク
css style.css スタイルシート
js materialize.min.js Materialize JavaScript
js Sortable.min.js Sortable (タッチスライドで順序変更)ツールのJavaScript

  1. 普通の使用者は参加者、管理者はプロジェクトの発表者でありながら参加者だがら、普段通りに参加もできるようにしなければならない。
  2. Windows Phoneでは[スライドで操作]機能は動作しているものの、スライド状態が継続できない問題があって、スクロールになるバグがあるライブラリなのに、参加者の中では利用者がないので、表面化してなかった。

Desktop Font

起動ファイルのダウンロード

紹介

ウィンドウズ8以上OSから姿を消したダイアログのフォント設定をかわりにしてくれるアプリです。

使用方法

左からインストールされたフォント名を選択して(右上から検索もできます)、対象を選らび、『Apply』を押したら完了になります。

変更事項はリブートしてから、確認してください。

デフォルトフォントは変えないので、上記項目以外は元通りに維持されます。

ところで

MacTypeというアプリを使用すると、さらに文字をスムースに表示できます。

しかし、最新のWindows 10 (RS2)以降では、MacTypeがタスクバーのリフレッシュバグを起こしますので、ご注意ください。

http://code.google.com/p/mactype/