数列が収束する必要十分条件を証明します。 (ここで証明するのは Cauchyの判定法ではありません。)
まずは収束の定義の確認です。
定義
数列 ( {alpha _n } ) が実数 ( alpha ) に収束するとは、 任意の正の実数 ( varepsilon ) に対応して 自然数 ( n_0 ( varepsilon ) ) が定まって次を満たすことをいう。
[ n > n_0 (varepsilon) Rightarrow | alpha _n – alpha | < varepsilon ]
数列 ( { alpha _n } ) が ( alpha ) に 収束する必要十分条件は次のようになります。
続きを読む 証明: 数列が収束する必要十分条件 →
AngularJS と Rails の form_for を組み合わせて使ってみました。 何より厄介なのは action 属性 が 自動でついてしまうことです。
環境
- Rails 4.1.8
- Ruby 2.2.2
- AngularJS 1.4.7
- Ubuntu 15.04
状況
Rails の form_for を使うと、 Rails が action 属性 から すべて 設定してくれます。 もちろん、 form タグ の属性を 追加することもできます。 ただし AngularJS を使う上では問題がありました。
問題になるのは次のコードです。
|
|
<%=form_for(@user, html: {'data-ng-submit': 'mainCtrl.create()', novalidate: :novalidate, name: 'createForm'}) do |f|%> <%=f.label :name%> <%=f.text_field :name, required: :required, 'data-ng-model': 'user.name'%> <button>submit</button> <%end%> |
このコードでは、 ボタンをクリックすると AngularJS による処理が実行された後で 本来の form の処理が実行されます。
AngularJS は、 action 属性 がないときは 本来の form の処理を行わないのですが、 Rails で action 属性 が自動でつけられている以上どうしようもありません。 いや、 action 属性 を消す方法があるのかもしれませんが、 私は見つけることができませんでした。
解決法
form タグ に onsubmit="return false;" を付け加えます。
|
|
<%=form_for(@user, html: {'data-ng-submit': 'mainCtrl.create()', novalidate: :novalidate, name: 'createForm', onsubmit: "return false;"}) do |f|%> <%=f.label :name%> <%=f.text_field :name, required: :required, 'data-ng-model': 'user.name'%> <button>submit</button> <%end%> |
button タグ で type="button" とすると、 ボタンクリック時はどうにか二重処理を防げますが、 入力欄で Enter を押されたときは防げません。
また AngularJS: How to prevent form submission after click on button? に記載されているような方法もありますが、 javascript として 他のところで使えないので、 上に書いたやり方の方がきれいに見えます。
無限小数になる有理数は循環小数になることを証明します。 無限小数になる有理数というのは、 有理数になる小数の中で有限小数でないものになります。
割り算の操作をよく観察すればわかりそうなものですが、 感覚的なものを証明としてしっかり書いてみます。
感覚
たとえば 89 を 13 で小数の位まで順次割った場合、 余りは次のようになります。
\begin{eqnarray*}
89 \div 13 & = & 6 \; \textrm{余り} 11 \\
110 \div 13 & = & 8 \; \textrm{余り} 6 \\
60 \div 13 & = & 4 \; \textrm{余り} 8 \\
80 \div 13 & = & 6 \; \textrm{余り} 2 \\
20 \div 13 & = & 1 \; \textrm{余り} 7 \\
70 \div 13 & = & 6 \; \textrm{余り} 5 \\
50 \div 13 & = & 3 \; \textrm{余り} 11 \\
110 \div 13 & = & 8 \; \textrm{余り} 6
\end{eqnarray*}
7 回目 の割り算で 1 回目 と同じ余りが出てきました。 13 で 割った時の余りの数は 1 から 12 の 12 種類しかありませんから、 13 回 割り算をやっても割り切れなかったら どこかで同じ余りが出ていて循環小数になることがわかります。
続きを読む 証明: 無限小数になる有理数は循環小数 →
有理数の定義は既知とします。 有理数でない実数を無理数といいます。
ここでは \( \sqrt{2} \) が無理数であることを証明します。
続きを読む 証明: \( \sqrt{2} \) は無理数 →
Perl でメールを送信する方法を紹介します。 私はこの仕組みを、サーバの状態を必要な時にメールで通知するスクリプトなどで利用しています。 (参考: Perl の経験皆無の私が作ったサーバ監視スクリプト)
環境
スクリプトを実行するコンピュータ
今回は2種類の環境でやってみました。
ケース2
- EC2 Amazon Linux 2015.03
- Perl 5.16.3
SMTPサーバ
- EC2 Amazon Linux 2015.03
- Postfix
コード
一番単純なサンプルコードを掲載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
#!/usr/bin/perl use strict; use utf8; use warnings; use Digest::MD5; use Authen::SASL; use Net::SMTP; my $header = "From: from@sample.com"; $header .= "nTo: to@sample.com"; $header .= "nSubject: subject"; $header .= "nMIME-Version: 1.0"; $header .= "nContent-Type: text/plain; charset=UTF-8"; $header .= "nContent-Transfer-Encoding: Base64n"; $smtp = Net::SMTP->new('mail.sample.com', Port => 587); $smtp->auth('user@sample.com', 'password'); $smtp->mail('from@sample.com'); $smtp->to('to@sample.com'); $smtp->data(); $smtp->datasend($header); $smtp->datasend("n"); $smtp->datasend('message body'); $smtp->quit; |
パスワード認証をしない場合は、 Digest::MD5 も Authen::SASL も必要ありません。 もちろん auth と書いてある行も不要です。 しかし今回は CRAM-MD5 でパスワード認証をしているので、 モジュールが必要になります。 Net::SMTP の auth メソッド が Authen::SASL を利用し、 Authen::SASL の中で Digest::MD5 が利用されるという流れです。
Authen::SASL が入ってないと auth を実行しても認証がおこなわれません。 Digest::MD5 が入っていないと、 Error: No SASL mechanism found
と表示されます。
パスワードの認証方式は 自動で判別されています。 認証サーバで Digest-MD5 が有効であれば CRAM-MD5 よりも Digest-MD5 を優先的に使います。
そして、認証をするにはインストールしなければならないパッケージがあります。
- Ubuntu の場合
- libdigest-hmac-perl
- libauthen-sasl-perl
- Amazon Linux の場合
Amazon Linux の場合、 MD5 のモジュールが入っているパッケージ perl-Digest-MD5 はあらかじめインストールされています。
perl は最初からインストールされていることが多く、 Net::SMTP モジュール は最初から使えるのですが、 認証するとなると別途インストールが必要になります。
A Life Summary of an Gypsy