初めてのMac:環境整備

ずっと、Windowsユーザだったが、年末にノートブックとしてMacBook Airを新に購入。以下、ジョブズの熱い思いを感じながら無事に開梱式を済ました後、なんとか一通りきるようにした初期インストールメモ。

【環境】
●MacBook Air: Intel Core i5、13インチ, SSD 256GB
●OS:Yosemite: OSX10.10
・Yosemiteは結構評判悪いので、こわごわ最新のOSXにバージョンアップ。とりあえず、何事もなく動作
●参考書
・「Mac大全 (100%ムックシリーズ)」 ムック – 2014/10/28
 何分Mac初めてなので、基礎中の基礎から簡単に説明されている本書を一通り読んで、環境を整備

【システム環境設定】
●ファンクションキー
・日本語入力の時にいちいちFnキーを押さなくても良いように、以下をチェック
「システム環境設定」→「キーボード」→「F1、F2などのすべてのキーを標準のファンクションとして使用」
●CapsとControlキーの変更
・Emacsを標準エディタとして使うため、「システム環境設定」→「キーボード」→「修飾キー」でCapsとControlキーを交換
●TimeMachine:標準のバックアップ環境
●キーチェーンアクセス
・パスワード管理に標準アプリを利用。秘密メモで独自のパスワードも管理できてとても便利。ただ、Windowsでは当然のごとくつかえないので、仕方なく従来のパスワード付きのExcelファイルも共用。「1Password」という定番クラウドソフトもあるそうだが、しばらくは上記で様子見。

【基本操作方法:Tips】
●右マウスメニューの表示方法:2本指でタップ
●画面全体のスクルール:3本指でスワイプ
●Spotlight:標準のアプリランチャ
・標準ではEmacsのControl−Spaceとバッティングするので、「システム環境設定」→「キーボード」→「ショートカット」→「Spotlight」で起動用のショートカットを変更

【定番ソフトのインストール】
XtraFinder
 Finderがすごく使いやすくなった(Windowsでは以前より QTTabbar をExploreにインストールして使用中)。隠しファイルの表示をさせることも可能。
Chrome
 MacにChromeをインストールしてGoogleアカウントにログインすると、いろんなパスワードがGoogleに記憶されていることがわかり、セキュリティ的に再検討する必要性を改めて認識
AppCleaner:アプリのアンインストールを実施してくれる無料アプリ
 アプリの実行ファイル以外の関連ファイル(ライブラリのApplication Support, Preferencesあたりの関連ファイルは自分で削除する必要あり)を検索して、削除することが可能
●Emacs-24.3.1
Emacs24のインストールと新機能」に紹介されていた MacEmacs JP Emacs24-with-inline-patch バイナリ をインストール。設定は、Linux版のinit.elを元に若干修正。
●その他
・VirtualBox:Macでの無料の仮想環境:Linuxをインストール
・Xcode:開発環境
・SourceTree:Gitフロントエンド
・FreeMind:マインドマップ
・Astah Community: UML設計ツール
・Skype
・Line
・CloverDiary:Mac定番の日記ソフト
・LibreOffice:MS−Officeとの互換性ソフト
 操作性、互換性などの問題で予想以上に難航。iWorksの互換性も踏まえて、MS−Office買うかどうか思案中。


Mac大全 (100%ムックシリーズ)Mac大全 (100%ムックシリーズ)
(2014/10/28)
不明

商品詳細を見る

Windows 8.1でブラウザが繋がらない

今年の夏頃から、Windows 8.1 のマシンで急にThunderbirdでメールが
受信できたり、できなかったりして、プロバイダに相談しても拉致上がらず、
しかたなくWindows Liveメールにメーラを変えてみても、症状はあまり改善されず、
受信できたり、できなかったりの状態が続いていた。

そうこうするうちに、Chromeが不安定になって、挙句の果ては、どのWebにも
アクセスできない症状が発生。Firefoxに変えても、こちらも不安定で、
何度か使っているうちに、最新のChromeもFirefoxもどのWebにもアクセスできない
状態が発生。唯一Internet Explore(IE)だけがまともに動作していたので
しばらく、IEを使っていた(Webにアクセスできないと仕事にもならないので、仕事が
別の理由で進まないことも相まって、結構、ピリピリしていた)。

一番怪しそうなセキュリティソフトのノートンを一時的に停止しても改善されず、
IPV6をオフにしてみても改善されず、半ば諦めムードだったが、偶然、下記のURLで

Windows 8.1 PCでWebブラウザでインターネット接続できない!

同じような現象が報告されていて、ノートンのInternet Securityを再インストール
されたら、もとに戻ったという記事を発見。自分も早々試したところ、今のところ、
全てが元に戻って、メーラもChromeも快適に動作中。

上記情報を公開して頂いた方に感謝するとともに、復活したPCに嬉しさ半分で、
PCの立ち上げを何度も実施したり、ThunderbirdやChrome、Firefoxを
再インストールしたり、調査に費やして無駄にしてしまった時間に少しばかり
腹立たしさを覚えしまった。

自分のネットに対する知識不足は棚に上げていますが、、、(;^^)。

Rubyによる単体テストとカバレッジ計測

Pythonistaの端くれの自分が、初めてRubyスクリプトと単体テストを実施した時のメモ(Rubyについては、何分初心者のなので、間違あるかもしれないですが、ご容赦)。

Railsの人気テストフレームワーク6選!によると、Rubyistの多くはTest::Unitではなく、RSpecをつかっているらしいでの、両方のサンプルを作成してみた。カバレッジはsimplecovを使用(simplecovの情報はほとんどRailsでの例だったが、純粋なRuby環境でも問題なく動作)

RSpecについては、下記に詳細な説明があり、DSLの応用とのこと。

RSpec の概要と、RSpec on Rails (モデル編)

-fdオプションで実行すると、テスト仕様書的な出力も可能で、結構面白い(ただ、他の言語でのテストを考えるとxUnit系のテストの方が導入しやすいかもしれない)。

【環境と参考にさせて頂いたURL】
●Windows 8.1
●Ruby-2.0.0
●rspec(3.0.4)
 gem install rspecで追加。3.0からは、以下のようにshouldではなくexpectを使う必要があるとのこと。

Ruby - RSpecのshouldはもう古い!新しい記法expectを使おう! - Qiita

●simplecov(0.9.0)
 gem install simplecovを以下を参照して追加

Rails/Ruby - テストカバレッジを調べる simplecov

【テスト対象:family.rb】
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
STDOUT.sync = true

class Human
attr_accessor :name
attr_accessor :age
attr_accessor :id
@@id = 0

def initialize(name = '', age = 0)
@id = @@id
@@id += 1
@name = name
@age = age
end

def full_name
@name.capitalize
end
end

class Family < Human
attr_accessor:family

def initialize(name = '', age = 0)
super(name, age)
@family = 'myfamily'
end

def full_name
@name.capitalize + '.' + @family.capitalize
end
end


【Test::Unitによるテスト例:test_family.rb】
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'simplecov' #カバレッジ計測用
SimpleCov.start #カバレッジ計測用

require "test/unit"
require './family' # テストターゲット

class FamilyTest < Test::Unit::TestCase

def setup
@array = Array.new
end

def teardown
# TODO
end

def test_Human
h = Human.new('human1', 20)
@array.push(h)
h = Human.new('human2', 21)
@array.push(h)

assert_equal(@array.size, 2)

@array.clear
end

def test_Family
h = Family.new('taro', 11)
@array.push(h)
h = Family.new('jiro', 10)
@array.push(h)

assert_equal(@array.size, 2)

@array.each do |f|
name = f.full_name
assert_match(/[a-zA-Z]*.Myfamily/, name)
end

@array.clear
end
end


【Test::Unitによるテスト実施例】
$ ruby test_family.rb -v
Run options: -v

# Running tests:

FamilyTest#test_Family = 0.00 s = .
FamilyTest#test_Human = 0.00 s = .


Finished tests in 0.002002s, 999.0010 tests/s, 2997.0030 assertions/s.

2 tests, 6 assertions, 0 failures, 0 errors, 0 skips

ruby -v: ruby 2.0.0p247 (2013-06-27) [x64-mingw32]
Coverage report generated for Unit Tests to c:/home/work/Ruby/unittest/coverage. 42 / 43 LOC (97.67%) covered.


【RSpecによるテスト例:family_rspec.rb】
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'simplecov' #カバレッジ計測用
SimpleCov.start #カバレッジ計測用

require './family' # テストターゲット

describe "Human" do
context "Humanインスタンスを2つ作成した時" do
before do
@array = Array.new

h = Human.new('human1', 20)
@array.push(h)
h = Human.new('human2', 21)
@array.push(h)
end

it "サイズが2であること" do
expect(@array.size).to eq(2)
end
end
end

describe "Family" do
context "Familyインスタンスを2つ作成した時" do
before do
@array = Array.new

h = Family.new('taro', 11)
@array.push(h)
h = Family.new('jiro', 10)
@array.push(h)
end

it "サイズが2であること" do
expect(@array.size).to eq(2)
end

it "ファミリー名Myfamilyが追加されていること" do
@array.each do |f|
name = f.full_name
expect(name).to match /[a-zA-Z]*.Myfamily/
end
end
end
end


【テスト実施例】
$ rspec -fd family_spec.rb 

Human
Humanインスタンスを2つ作成した時
サイズが2であること

Family
Familyインスタンスを2つ作成した時
サイズが2であること
ファミリー名Myfamilyが追加されていること

Finished in 0.003 seconds (files took 0.15326 seconds to load)
3 examples, 0 failures
Coverage report generated for RSpec to c:/home/work/Ruby/rspec/coverage. 19 / 20 LOC (95.0%) covered.

【simplecovによるカバレッジ計測例】
simplecov.png

Pythonの統合開発環境:spyder(2)

Pythonの開発環境でspyder 2.2.5を少し使ってみた。結構よくできているが、残念ながらローカル変数を表示する機能はサポート予定が当面ないようだ(たぶん、デバッグ機能として、pdbの機能をそのまま使っているのが原因ではなかいと思う。近々の2.3や2.4の拡張項目には入っているみたいなので、そのうちサポートされるかもしれないが、、、)。

Python debugging

に記載されているように、pdbでlocals()や__dict__を表示すれば、内容を表示することは可能だが、折角ソースコードデバッガを使っている意味が半減してしまう、、、。

spyder

以前から使っているPyscripterは、下記のように、ローカル変数も表示可能(ソースにマウスをもっていくとポップアップで表示することも可能)で、しばらくはまだ、Pyscripterを使うとするか?

Pyscripter

Python統合開発環境:spyder

Pythonの統合開発環境(IDE)としては、以前からDelphiで記述されているPyScripter(場合によりEmacs+pdb)を使っていたが、PyScripterがここ最近更新されていないこともあり、最近話題(?)のWindows/Linuxでも動作するspyderというPythonで記述されたIDEを試しにインストールしてみた。

spyderが紹介されている記事はデータ解析用の環境としてMatplotlib、IPython、pandas等と一緒に紹介されることが多いようだが、単独のデバッグ環境としても、十分の機能を有するみたい。もう少し試用後、Pyscripterから乗り換えようかしら?

【動作環境】
●Windows 8.1(64bit)
●Python 2.7.2(32ビット)

【構築した環境】
spyder==2.2.5
pywin32==216
ipython==2.0.0
matplotlib==1.2.0
numpy==1.6.2
pyzmq==13.0.0
tornado==3.2


【やったこと】
spyder2.2.5のインストール
Python(x,y)、WinPython、Anaconda等のPython Scientific Distributionsを使えば、簡単にインストールできるようだが、今の自分には少し縁遠いここと、周世にmatplotlib等は使っていたので、個別にインストールする方法を選択。以下の インストーラをダウンロードして インストールを実施。

spyder-2.2.5.win32.exe

●PyQtのインストール
インストールするとPythonディレクトリ/Scriptsにspyder.batがインストールされるので、このバッチファイルを実行すると以下のエラーが発生するため、PyQtをインストール。

RuntimeError: Please check Spyder installation requirements:
PyQt4 4.4+ (or PySide 1.1.1+) is required.


PyQtはpipでのインストールには未対応とのことなので、PyQt4 Download からPyQt4-4.10.4-gpl-Py2.7-Qt4.8.5-x32.exeをダウンロードして、インストール。無事にsypderが起動。

●IPythonのインストール
spyderはIPythonとも連携しているので、IPythonもインストールしてみる。

pip install ipython


を実行してインストール後、sypder.batでsypder起動時にpyzmqがないために起動エラーが発生するため、pip pyzmqでインストールを試みるも、自分のMinGwのgccでは以下のようなコンパイルエラーが発生するため、

In file included from bundled\zeromq\src\err.hpp:40:0,

from bundled\zeromq\src\address.cpp:21:

bundled\zeromq\src\windows.hpp:168:21: fatal error: Mstcpip.h: No such file or directory

compilation terminated.

error: command 'gcc' failed with exit status 1


以下のURLからインストーラをダウンロードしてインストール。

https://pypi.python.org/pypi/pyzmq/13.0.0
 pyzmq-13.0.0.win32-py3.3.msi (md5)


合わせて、IPythonで注目のnotebookを起動する時に必要なtornadoを

pip install tornado


でインストール。無事にIpythonからnotebookも起動できるようになった。
プロフィール

Author:Zaike Yuki
オブジェクト指向、C++/Java、Python、Eclipse、Android、等に興味を持つソフトウェアエンジニア

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる