Adsenseリンクユニット

2013年5月26日日曜日

リバウンドしてしまうのはなぜ|苦労が水の泡に・・・

ダイエットに成功して後に、リバウンドして元に戻ってしまった経験がありませんか。

実は私もその独りでして、1年程前からダイエットに挑戦し、-10Kgのダイエットに成功しました。ところが、最近になって体重が増加し半分程リバウンドしてしまったのです。

原因は明らかで、ストレスによるドカ食いによるものです。私が行なっていたダイエットは、糖質制限ダイエットなので、主食である米やパンをなるべく控えていました。

ケーキなどの甘いものは厳禁なのですが、ついつい手を付けてしまったのです。好物であるチョコレートに歯止めがかからず…^^;

また、ストレスが増えるとお酒の量も増えがちですよね。ツマミにお菓子ををいっしょに食べていては3度の食事に気を使っていても本末転倒ですね。

ストレスの元を断つのが、一番ですが、なかなか難しいものです。そこで、好きな運動をしてストレスを解消するのが、最もよい策だと今は考えています。


さて、リバウンドの本質的な原因は2つあると言われます。

ホメオタシスによる停滞期

ダイエットを始めると順調に体重が減っていたのに、ある時期になるとやっていることは同じなのに中々減らない時期に遭遇します。いわゆる「停滞期」と呼ばれる時期です。

この現状がなぜ起こるのかと言うと、体の機能に「ホメオタシス」と呼ばれる仕組みがあり、体の中に少量のエネルギーしか入ってこない場合に、エネルギー消費を押さえて体の機能を維持しようとします。

ダイエット中にホメオタシスが働くと、エネルギー消費量が減少するため、体重が減らなくなってしまうのです。

そして、ダイエットを中断する時が、ホメオタシスによるエネルギー消費抑制される「停滞期」の場合は、ダイエットを止めた後も、ホメオタシスが機能し続けてしまうのです。

その結果、食事量を元に戻してもエネルギー消費が元に戻っていない(減少している)ため、リバウンドしてしまうのです。

ホメオタシスを働かせないようにするには

ホメオタシスは、1ヶ月に5%以上体重を減少させてしまうと、最大限に働いてしまうことが分かっています。短期間に体重を落とさずに1ヶ月に5%以内に留めるのが体の仕組みに合ったペースなんですね。

レプチンと満腹感の関係とは

レプチン」とは、脂肪細胞に脂肪が吸収されると分泌され、脳にある満腹中枢を刺激する物質です。ダイエットでレプチンの分泌量も減少します。ダイエットを止めても、レプチンの減少が直ぐに適正に戻るわけでなく、1ヶ月程の期間を要します。その間は、食事量を通常に戻したとしても、通常字の満腹感を得られないのです。その結果、食べ過ぎてしまい、リバウンドの原因となっています。

レプチンの分泌を減らすには

レプチンの分泌量が元に戻るのに1ヶ月掛かるわけですから、停滞期に突入しても1ヶ月は継続してから止めるようにします。そうすることで、レプチンの分泌量は適正に戻っているため、満腹感が得られないことによる食べ過ぎを防ぐことができます。







2013年5月25日土曜日

Google Adsense × Seesaa|先頭の記事下のみにAdsense広告を表示する方法

Google Adsenseの広告ユニットをSeesaaブログに配置する際に、自由形式のブログパーツを使ってサイドバー、ヘッダ、フッターに配置することは比較的簡単に行えます。

ただし、効果が高いと言われている記事下に配置する場合に、Google Adsenseの広告ユニット数の上限が3つまでであることを考慮する必要が出てきます。単純に記事下にAdsenseタグを貼り付けると1ページ内に複数の記事を表示した場合、全ての記事下に広告ユニットが表示されてしまい、上限を超えてしまいます。

そこで、複数記事の中で先頭記事の記事下にだけ広告ユニットを表示する方法をご紹介します。

2013年5月17日金曜日

ボタン2度押しを防止するプログラミング技術

今日は、ボタンを連打した際に、ボタンイベントが何度も発生して困ったことはありませんか。
画面系のプログラミングを行なっていると必ずボタン2度押し対策をしなければいけないシュチュエーションに遭遇します。

具体的には、新規登録画面を作るとします。新規登録のボタンを実装した場合に、登録ボタンの処理が連続で2度動作してしまうと、データが2重に登録されてしまうことになります。これは致命的なエラーですよね。

なぜ、このような現象が起こるのか。画面系のプログラミングに慣れていない方は、疑問に思うかもしれません。このような現象を引き起こす原因は、画面系のプラグラムが、イベント駆動型と言われるイベントを元に動く仕組みをベースに動作しているからなのです。

ボタンを押すと、ボタンクリックイベントが発生します。ボタンを連打するとどうなるかというと、ボタンクリックイベントが何度も発生し、イベントを管理するイベントプールと言われる場所に溜まっていきます。溜まったイベントは、溜まった順番に順次処理されていきます。

画面プログラミングでは、イベントに対して実際に行いたい業務処理を実装します。今回の場合は、画面入力情報でデータを新規登録する処理を実装します。ところが、困ったことに、新規登録のボタンイベントが何度も繰り返されると、同一内容のデータが何度も登録されてしまう現象が起こってしまい致命的な問題となります。

ボタン連打によるイベントの連続動作は、何も考慮せずボタンクリックイベントを単純に実装しただけでは、必ずといっていい程同じ問題に遭遇することでしょう。

この問題を解決する方法は、2種類あります。第一の方法は、最初のボタンクリックイベント処理中に発生したイベントの処理をスキップさせる方法です。第二の方法は、ボタンクリックイベント処理が終了する際に、それまでに溜まったイベントをイベントプールから捨ててしまい、イベントそのものを発生させないようにする方法です。


ボタンイベント処理中に発生したボタンイベント処理をスキップする方法


サンプルソースです。

Private buttonProcessing As Boolean

Public Sub New()
    AddHandler System.Windows.Forms.Application.Idle, AddressOf Application_Idle
End Sub

Private Sub Application_Idle(ByVal sender As ObjectByVal e As System.EventArgs)
    Me.buttonProcessing = False
End Sub

Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
    ' クリック処理中は処理を抜ける
    If Me.buttonProcessing = True Then
        Return
    End If

    Me.buttonProcessing = True

    ' Click イベント処理
End Sub

-参照サイト「IYouryellable」より-

ポイントを解説しますね。三行目のAddHandlerしているイベントがミソです。System.Windows.Forms.Application.Idleと書かれていますね。このイベントは、アプリケーションが処理を完了し、アイドル状態に入ろうとすると発生します。
つまり、ボタンクリックイベントが全て完了して処理するイベントがなくったタイミングに発生するイベントになります。

ボタンクリックイベントで、二重処理を防ぐフラグをONにし、ボタン連打で発生した不要なボタンクリックイベントが動作した際に、イベント処理の先頭でReturnし処理をスキップさせます。このフラグをOFFにするタイミングは、溜まったイベントがなくなったアイドル状態に突入したタイミングで発生するSystem.Windows.Forms.Application.IdleイベントでOFFにします。


フラグ変数を定義する必要があるので、フラグだらけになるのを嫌う方は、第二に方法があります。フラグによる判定は、実装が分り易いので好きな方は第一の手法で全く問題ありません。


イベント終了直前に、溜まった不要のイベントを捨ててしまう方法


サンプルソースです。
Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
    MyBase.OnClick(e)

    Dim msg As MSG
    While PeekMessage(msg, 000, PM_REMOVE)
        Select Case msg.msg
            Case WM_PAINT
                DispatchMessage(msg)
        End Select
    End While
End Sub
-参照サイト「IYouryellable」より-

非常にスッキリとした実装ですね。ボタンイベント処理が終了した後処理として、画面描画であるペイントイベント以外のイベントを捨てる処理を記述しています。

描画イベント以外のイベントを捨ててしまうと問題がある場合は、そのイベントもDispatchMessageさせてあげます。


どちらの方法でも良いと思います。オブジェクト指向に慣れている方は、当たり前に考えることですが、このような共通的に必要な動作は、各画面のイベント毎で実装してはいけません。

ボタンクラスを派生させた共通ボタン部品を作成し、共通ボタン部品の中で上記のどちらかの手法で実装を行うのが美しいですね。

同じ記述をソースの至ることろに散在させずに、共通化も考えましょう。

スポンサードリンク