サッカーボールには、正5角形と正6角形が使われています。 それぞれいくつ使われているのかを考えてみましょう。
オイラーの定理
多面体では次の等式が成り立つ。
頂点の数 – 辺の数 + 面の数 = 2
定理自体の証明は オイラーの多面体定理を考える に記述しました。
これを利用して、 5角形 の数 と 6角形 の数 を計算します。 ( サッカーボールと正多面体 ではオイラーの定理を使わずに計算しました。 )
計算
5角形の数を \( m \) , 6角形の数を \( n \) とします。
サッカーボールは、1つの頂点に3つの図形の点が重なっているため サッカーボール全体で 頂点の数は \(\frac{5m + 6n}{3}\) 。 変の数は \(\frac{5m + 6n}{2}\) 、 面の数は \(m + n\) 。
オイラーの定理より、次の式が成り立つ。
$$ \frac{5m + 6n}{3} – \frac{5m + 6n}{2} + m + n = 2 $$
この等式を簡単にすると
$$ m = 12 . $$
サッカーボールを見ると、 5角形 の周りには 6角形 は5つあり、 6角形 は必ず 3つ の 5角形 に接している。 これより
$$ n = \frac{5 m}{3} = \frac{5 \times 12}{3} = 20 . $$
以上より、 5角形 と 6角形 はそれぞれ 12, 20個 あることがわかる。
デカルトの定理を使っても、同じように計算することができます。 デカルトの定理は 多面体 デカルトの定理を証明する に書きました。
補足
C60 のフラーレンもサッカーボールの形です。 せっかくなので頂点の数が 60 になるのか確かめてみましょう。
$$ \frac{5m + 6n}{3} = \frac{5 \times 12 + 6 \times 20}{3} = 60 . $$
参考
オイラーの定理は下の本にも載っています。 レベル的には中学生向けの ハンドブックです。 私も使っていました。
よく使うコードのメモです。
Excel などで、あるフォルダ以下のファイル一覧を出力したいときに使うコードです。 言語は VBA です。
VBA は オブジェクト指向的 に書くこともできるのですが、 急遽必要だったので、「とりあえず動けばいい!」というスタイルで作りました。
プログラムの流れ
シート上のボタンをクリックします。
フォルダ選択ダイアログを表示します。
選択されたフォルダ以下のファイルを再帰的にリストにします。
リストになったファイル一覧を、フォーム(またはシート)に出力します。
やること
モジュールを作成して、次の関数を作成します。
ファイル一覧を取得する
フォルダ選択ダイアログを処理する
結果を出力するダイアログを作る。
シートにボタンを作ってクリックしたときの処理を追加する。
続きを読む VBA: ファイルの一覧を再帰的に出力する →
私が開発サーバ内のファイルをローカルマシンで簡単に編集・保存できるようにした方法を紹介します。 ついでにそれ以外の方法も紹介します。
経緯
私の転職した会社では、開発サーバの中で開発を行うというスタイルでした。 黒い画面の Unix系 サーバ、 エディタは vim しかない、外部に接続できないからツールがほしければ WinSCP でコピー。
ローカルマシンで開発環境を構築するにも、いろんなチームが開発した多様なライブラリがないと動かないようになっていたため、ローカルマシンの環境を構築するのは困難な状況でした。 ファイアウォールの接続制限なんかもあって。
そこで思い付いたのが、ローカルマシンからリモートのファイルを直接編集することでした。 ローカルマシンなら外部に接続できるから、ローカルのリッチなエディタでやっていこうと。
ここからは、リモートのファイルを(擬似的に)直接編集できるエディタを紹介していきます。
インストールすれば編集可能になるエディタ
まずは、インストールさえすれば編集可能になるエディタを紹介します。 プラグインなどの追加インストールは不要です。
NetBeans
IDE なら簡単にできるんじゃないかと思って トライしてみたのが NetBeans です。実際のところ、とても簡単に思い通りのことができました。
保存時に自動でリモートマシンに保存してくれます。シンタックスチェックもやってくれます。
既存のリモートマシンのファイルを元にプロジェクトを作成して進めていくこともできますし、新たにプロジェクトを作ってそこからリモートマシンにアップロードすることもできます。
やりかたは、 NetBeans のページで紹介されていますので、そちらをご覧ください。
参考: NetBeans IDEを使用するリモートWebサーバーへのPHPアプリケーションのデプロイ
Komodo Edit
Edit, Preference と進むと、 リモートサーバの設定があります。 そちらから設定することで リモートファイル の編集が可能になります。
参考: Komodo Editをとりあえず使ってみるための基本的な設定 (リンク切れ: http://shimz.me/blog/editor/148)
gedit
設定によってできるようになります。
参考: Use Gedit as Remote File Editor via FTP and SSH (Ubuntu) (リンク切れ: http://thecodecentral.com/2010/04/02/use-gedit-as-remote-file-editor-via-ftp-and-ssh-ubuntu)
プラグインなどをインストールすることで編集可能になるエディタ
ここから下は 別途プラグインなどのインストールをすることで、リモートファイルが編集可能になるエディタです。
Sublime Text 2
SFTP というプラグインを使えばリモートファイルを編集できます。
参考: Sublime text SFTPをつかってリモートファイルをローカルで快適に編集
rsub というプラグインを使うことでもリモートファイルを編集できます。 ただ、サーバ側でもインストール作業が発生します。
参考: リモートサーバー上のファイルをローカルのSublime Text 2で編集する (削除されました)
gVim
Windows マシン から、 PuTTY と連携して scp を使えるようにしようとしましたが、あえなく失敗。リモートマシンからファイルの一覧すら取得できませんでした。やり方を紹介しているサイトは多いのですが。
興味のある方は是非。
参考: vimからSSH/SCP接続してみる
会社で groonga を使うことになりました。 groonga でないと取得できないデータがあったんです。
groonga も含め 全文検索エンジンを使うのは初めてだったので、 公式ドキュメントを見ながら探っていきました。 データベースで使用する SQL と groonga のクエリを比較してみると次のようになりました。 もともと別物なので参考程度に見ていただければと思います。
SELECT
データを取得するときは、 Database でも groonga でも SELECT
を使います。 でも、構文の構成はだいぶ違います。 groonga では、次のような命令になります。
select -- table Site -- query title : @ test -- output_columns _id , _score , title -- sortby - _score , _id
簡単に比較すると次の表のようになります。
Database
groonga
表示カラム
(select
の後ろに羅列)
––output_columns
テーブル
from
––table
検索条件
where
––filter
, ––query
, ––match_column
, ––scorer
順序指定
order by
––sortby
オフセット
offset
––offset
件数指定
limit
––limit
グループ化
group by
––drilldown
(drilldown したときの件数指定などは下の説明を参照)
論理演算子
and
, or
&&
, ||
補足説明
––output_columns
検索結果に表示するカラムを指定する。カンマで区切ることにより、複数カラムを指定できる。
select -- table Site -- output_columns column1 , column2
––query
全文検索を行う。
select -- table Site -- query title : @ this
title カラムについて 文字列 “this” の全文検索を行う。
––match_columns, ––query
検索結果に含めるカラムを指定する。複数指定もできる。
select -- table Site -- match_columns title -- query this
––query
と一緒に使い、 title カラムについて 文字列 “this” の全文検索を行う。
––filter
条件を指定する。 javascript など のように、 “==
”, “<=
“, “>
” などを使うことができる。 AND, OR は &&
, ||
で表現できる。
select -- table Site -- filter "_id <= 1" -- output_columns _id , _key
––drilldown
バージョン4.0.1 の資料を見るかぎり、 drilldown に指定したそれぞれのカラムについてグループ化した結果が表示される。 column_1 と column_2 を指定していれば、 column_1 だけでグループ化した結果と、 column_2 でグループ化した結果が続けて表示される。 ORDER BY column_1, column_2
のようなことはできない。
drilldown の結果に対する件数指定(オフセットなど)は下記のように、 通常の ––sortby
, ––offset
, ––limit
の頭に drilldown
をつけて指定する。 drilldown した結果だけがほしければ、 ––limit
に 0
を指定して出てくる通常カラムを制限する。
select -- table Site -- limit 0 -- drilldown country -- drilldown_sortby _nsubrecs -- drilldown _ limit 2 -- drilldown _ offset 2
特殊カラム
カラム名
説明
_id
検索時に groonga が割り当てるID。
_key
主キーを格納するカラム。
_score
(Oracle DB でいう ROWNUM
のような) 検索結果に含まれる仮想カラム。全文検索の条件に合致するレコードほど高い数値が入る。
_nsubrecs
drilldown
を使った場合に、 drilldown した結果件数が格納されるカラム。 SELECT COUNT(1) FROM …
に似ている。
python のスクリプト(.py) を作って、スクリプト内で自分自身のファイル名を種痘する場合のお話です。
abc.py ファイル を実行した場合に、 abc.log のようなログファイルを作る際に使えます。
ここからは、次のようにしてモジュールを読み込む必要があります。
ディレクトリを除いたファイル名
ディレクトリに対してこれを実行すると、ディレクトリ名が取得できます。
ファイル名(拡張子なし)
path . splitext ( path . basename ( __file__ ) ) [ 0 ]
“.” で文字列を区切ってリストにします。 “a.b.c” のように “.” が2つ以上ある場合は 最後の “.” で区切って (“a.b”, “c”) を返します。
path.basename(__file__)[0] をファイルの存在するディレクトリで実行した場合も同じ結果になります。 (crontab などで実行すると思わぬ結果になります。 “a/b.py” が (“a/b”, “.py”) になります。)
ディレクトリ
絶対パス
path . abspath ( path . dirname ( __file__ ) )
上の相対パスを path.abspath
で絶対パスにしています。
投稿ナビゲーション
A Life Summary of an Gypsy