19 Oct 2013, 07:28

iPadでデュアルディスプレイを可能にする『AirDisplay 2』にアップデート。速度が50%向上!

いつも常用しているiPadソフト、『AirDisplay』が2にアップデートしていたので、試してみました。

20131019160113.jpg

このソフト、いままでは速度が遅かったり、解像度が途中でおかしくなったり、そもそもたまに接続できなかったりで、常用しているわりにはとてもストレスのたまる子でした。



でも、今回のアップデートで、

  • スピードサクサク(50%の速度向上!)
  • 解像度問題なし
  • 一発で接続可能

最高ですね。詳しいアップデート内容は以下。

クライアントソフト、iPadアプリ共に、デザインも,フラットデザイン時代を狙った、モダンなものになってます。

20131019162121.jpg

ただし、接続先のIPが192.168.1.101になっていることが気に食わない。これは別のIPをすでに割り当てているので、どうしようか。。。

参考までに、モバイルwifiだと、以下のような対処方法が必要。

いつも常用しているiPadソフト、『AirDisplay』が2にアップデートしていたので、試してみました。

20131019160113.jpg

 

このソフト、いままでは速度が遅かったり、解像度が途中でおかしくなったり、そもそもたまに接続できなかったりで、常用しているわりにはとてもストレスのたまる子でした。



でも、今回のアップデートで、

  • スピードサクサク(50%の速度向上!)
  • 解像度問題なし
  • 一発で接続可能

最高ですね。詳しいアップデート内容は以下。

クライアントソフト、iPadアプリ共に、デザインも,フラットデザイン時代を狙った、モダンなものになってます。

20131019162121.jpg

 

ただし、接続先のIPが192.168.1.101になっていることが気に食わない。これは別のIPをすでに割り当てているので、どうしようか。。。

参考までに、モバイルwifiだと、以下のような対処方法が必要。

26 May 2013, 06:38

Cygwinにtreeコマンドをいれるためのメモ

Cygwinにはtreeコマンドがないようです。

いつものことながら手のかかる子( 一一)

ということで、ソースコードからインストールします。

treeソースコードの入手

curl -LO http://mama.indstate.edu/users/ice/tree/src/tree-1.6.0.tgz
tar xzfv tree-1.6.0.tgz
cd tree-1.6.0.tgz

 

treeコンパイル

続いてコンパイルですが、Cygwinの場合、makefileの修正が必要。Cygwinはコメントを外してくださいという箇所がMakefileのなかにあるので、コメントアウトを消します。

# Uncomment for Cygwin:
CFLAGS=-O2 -Wall -fomit-frame-pointer -DCYGWIN
LDFLAGS=-s
TREE_DEST=tree.exe
OBJS+=strverscmp.o

 

あとは、コンパイルしてインストールするだけ。デフォルトでは、/usr/bin配下にインストールされます。

% make && make install
% tree
.
├── CHANGES
├── color.c
├── color.o
├── doc
│ツꀀツꀀ ├── tree.1
│ツꀀツꀀ ├── tree.1.fr
│ツꀀツꀀ └── xml.dtd
├── hash.c
├── hash.o
├── html.c
├── html.o
├── INSTALL
├── LICENSE
├── Makefile
├── Makefile~
├── README
├── strverscmp.c
├── strverscmp.o
├── TODO
├── tree.c
├── tree.exe
├── tree.h
├── tree.o
├── unix.c
├── unix.o
├── xml.c
└── xml.o

1 directory, 26 files

25 May 2013, 12:56

zshは至高の利便性?!Cygwinにzshをインストール&設定した導入方法まとめ

シェルのなかで、至高の利便性を誇ると言われているzshを試してみました。きっかけは、この本を読んだので。作業メモを兼ねて、簡単に使い方を書きます。

 

zshとは

zshとは、シェルの種類のひとつ。Bashやtcshなどの、全てのシェルのいいとこどりをして開発された至高のシェル。”z”というのは、これで” これでシェルは完成で終わりだよ” という意味。

Z Shell – Wikipedia

zsh導入まで

zshインストール方法

Cygwinパッケージに含まれているので、setup.exeかapt-cygで取得します。

$ apt-cyg install zsh
$ zsh --version
zsh 5.0.2 (i686-pc-cygwin)

zshと打ち込むとzshになります。入力のためのコンソールが%になりました。

# zshに切り替える
zsh

zshをログインシェルにする

ログインしたときに、zshが起動するように設定します。

# ログインシェルの確認
% echo $SHELL
/bin/bash

普通はchshを利用するけれども、Cygwinではそれがない!なので、/etc/passwdを直接書き換えます。

% emacs /etc/passwd

# 変更前
tsu-nera:unused:1000:513:U-TSUNEMICHI-VAIO\TSUNEMICHI,S-1-5-21-2209003112-325970183-628590984-1000:/home/TSUNEMICHI:/bin/bash

# 変更後
tsu-nera:unused:1000:513:U-TSUNEMICHI-VAIO\TSUNEMICHI,S-1-5-21-2209003112-325970183-628590984-1000:/home/TSUNEMICHI:/usr/bin/zsh

すると、CygwinやCygtermはみごとzshで起動。しかし、母艦terminalのminttyだけがbashのまま・・・・(´・ω・`)。

いろいろと頑張ること1時間・・・ついにわかった!(・∀・)

ユーザ環境変数で、$SHELLがbashだった。

コントロールパネル – > システム -> システムの詳細設定 -> 環境変数からユーザ環境変数の設定画面へ。/bin/bashをを/usr/bin/zshに変更することで、minttyもzshで起動するようになった(^O^)

.zshrcの作成

.zshrcを作成すると、ログイン時に読み込まれる。$HOMEディレクトリにまずは作成。

touch .zshrc

.zshrcに書く内容は、いろんなサイトを参考に作ってみた。

自分の.zshrcファイルを公開 – 世界中の羊をかき集めて

あと、zsh最強シェル入門の本も参考にした。以下、便利そうなのをつまんで紹介。

screenで端末間のヒストリ機能の共有

zshは強力なヒストリ機能が魅力。特に、screenコマンドを使っていると、端末で実行したコマンドを全て共有したい場合がある。zshならば、端末ごとの共有だってできてしまう。以下2つの設定で有効になる。

## Screenでのコマンド共有用
## シェルを横断して.zshhistoryに記録
setopt inc_append_history
## ヒストリを共有
setopt share_history

他にも、重複排除などの機能もたくさん。

カレントディレクトリの表示

zshを利用すると、コンソール上にカレントディレクトリも表示することができる。もうpwdなんていらないのである。設定は以下。

SnapCrab_NoName_2013-5-24_17-47-24_No-00

# 色有効
autoload -U colors
colors

# 色を定義
local GREEN=$'%{\e[1;32m%}'
local BLUE=$'%{\e[1;34m%}'
local DEFAULT=$'%{\e[1;m%}'

# 通常のプロンプト
PROMPT=$BLUE'[%n]%# '$WHITE
# 右側のプロンプト。ここでカレントディレクトリを出す。
RPROMPT=$GREEN'[%~]'$WHITE
setopt transient_rprompt

グローバルエイリアスの設定

グローバルエイリアスを設定することで、コマンドの任意の場所で展開できるようになる。zshだけの機能。

例えば、ls -l L と入力すると、ls -l | less というように変換される。

alias -g L='| less'
alias -g H='| head'
alias -g T='| tail'
alias -g G='| grep'
alias -g GI='| grep -i'

Cygwinでwindowsパス形式のWaringを抑止する

zshでの操作の途中でこんなエラーが出る。

  MS-DOS style path detected: ./.zshrc\~
  Preferred POSIX equivalent is: ./.zshrc/~
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

これは、CygwinがWindowsパス形式をWaringとするため。コントロールパネル – > システム -> システムの詳細設定 -> 環境変数からシステム環境変数の設定画面へ。

CYGWIN=nodosfilewarningというように、環境変数追加するとよい。

SnapCrab_環境変数_2013-5-22_8-21-18_No-00

gnupack Users Guide – 技術情報

 

他にも便利そうな機能はたくさんあるけれども、とりあえずはこのへんでやめておく。

25 May 2013, 12:45

Cygwinでgit push時にパスワード入力を省略する方法

Cygwinでgit pushするとき、いちいちパスワードをうつのが面倒だ。なにか回避方法がないものか?

普通の(Linux)の場合、$HOME/.netrcに以下を追加すればよいらしい。

machine github.com
login tsu-nera
password ****************

 

ただし、Cygwinではうまくいかず、_netrcという名前にしろとあったり。

これでもうまくイカなかった。しかたがないので、expectコマンドを使って、パスワード入力を自動化した。

追記

名前は.netrcにして、アクセス権限を変更したらうまくいくようになった!!

chmod 600 ~/.netrc

git clone https://ID@HOST/… できない場合の暫定対策 – iWA’s 雑記@はてな出張所

18 May 2013, 21:41

Cygwinにnkfをインストールして文字化け攻略する!

Cygwin上でファイルを開くとたまに文字化けしてて、ほぞを噛む思いをすることがある。こんなときは、Linuxならばnkfコマンドでサクッと変換するのだが、どうやらCygwinにはnkfコマンドが入っていない。apt-cygしても、そのようなパッケージが見つからない。

というわけで、自力でnkfコマンドをインストールしてみました。

Cygiwn上でのnkfインストール方法

Cygwin上でnkfコマンドを利用するには、ソースコードからコンパイルするしかない。まずは、nkfをSourceForgeから取得します。

取得したら解凍してインストール。

$ tar xvfz nkf-2.1.2.tar.gz
$ cd nkf-2.1.2
$ make
$ make install

コレでインストール完了です。

$ which nkf

/usr/local/bin/nkf

nkfの使い方は以下を参照。

Linuxコマンド集 – 【 nkf 】 文字コードを変換する:ITpro

02 May 2013, 12:26

Visual Studioプロジェクトでの版数管理で無視する.gitignoreメモ

Visual Studioをいじりはじめた。いろいろと不明な拡張子がある。gitで版数管理をするためには、.gitignoreを作成する必要があるのだけれども、なにがなんだかわからないので、ちょっと整理。

*.snoについて

プロジェクトディレクトリに*.snoができる。これは、各開発者が IDE に行ったカスタマイズか入っている。不要。

*.userについて

プロジェクトのディレクトリ配下に、.csproj.userや*.vbproj.userができる。

これは、開発者固有のプロジェクト オプション、および参照されるアセンブリを設定するために IDE が使用する任意の参照パスが含まれている。不要。

ipchとsdfについて

これは VS2010からデキるようになった、キャッシュデータベースらしい。けっこう容量を食う。検索やインデックスなどなど、さまざまな情報をあらかじめ蓄えておく役割があるみたい。不要。

その他、ビルドしたときに作成される DebugとReleaseもいらないな。(その中に含まれるexeファイルも)

というわけで、30分くらい調査した結果はこうなった。ベースは、github上のC++の.gitignore。

https://github.com/github/gitignore/blob/master/C%2B%2B.gitignore

もう少し変更するかも。

 

参考

21 Apr 2013, 11:32

githubに新しいリポジトリを作成してローカルのリポジトリをアップロードする

ローカルで書いたコードをGithubに上げる方法を人生のウチでもう3回も調べている気がするので、ここらでメモしておきます。ああ、モノ忘れが激しい。。。

ローカルでgit リポジトリを作成して作業

リポジトリを作成して、いろいろほげほげ作業します。今回は、このリポジトリをgithubで公開したいとする。

$ git init

githubとの間でSSH通信を確立する

githubとローカルPCをつなぐ通信はSSH通信を利用します。なので、まずは鍵を生成。sshがどうもパソコンに入っていな場合は、もってこよう。詳しくは、ここの過去記事を参照のこと。

SSHを使いこなそう!Windows上のCygwinからvmware上のUbuntuにパスワードなしでSSH通信するまでのまとめ | Futurismo

(この記事のせいでローカルで持っていた鍵が紛失したため、githubとの設定を今やり直している。。。(T_T))

鍵を生成します。ここではRSA暗号方式を利用する。パスワードはとりあえずなしで。

$ ssh-keygen -t rsa

.ssh/配下にid_rsa(秘密鍵)と、 id_rsa.pub(公開鍵)が生成される。id_rsa.pubをgithubに登録する。

ブラウザからgithubにアクセスする。

GitHub

ログインして上のツールバーから[Account Setting] > [SSH Keys] > [Add SSH key]を選択する。

github

鍵を入力する画面が現れるので、titleとkeyを入れる。ここでのkeyはid_ras.pubを入れる。

$ cat id_rsa.pub

[Add Key]を押すと、githubアカウントのパスワード入力が求められるので入力して完了。登録が完了すると、登録完了メールが飛んでくる。

github上にリポジトリを作成

githubにローカルと連携したいリポジトリを作成する。ツールバーの[Create Repositry]を選択。リポジトリ名を入力して、詳細の説明を入力。

Public/Privateで公開と非公開を選択できる。

Initialize this repository with a READMEにチェックを入れるとREADME.mdというファイルが作成される。リモートとローカルの連携がややこしくなるので、初めはチェックをいれない。

Add .gitignoreで.gitignoreの選択もできるが、すでにローカルで.gitignoreがあるので、ここではNoneを選択。

ここでは、embedded_testing_with_unity_and_cmockという名前のリポジトリを作成する。[Create Repositry]を選択して作成。

github2

作成すると、クイックセットアップの方法が表示される。

image

ここでは、既存のリポジトリをコマンドラインでgithubにアップロードしたいので、以下を実行する。

$ git remote add origin git@github.com:tsunera/embedded_testing_with_unity_and_cmock.git

このコマンド、によってoriginがこの長いURLであることを覚える。あとは、git pushコマンドで、ローカルリポジトリをgithubにブッシュして完了。

$ git push -u origin master

12 Apr 2013, 03:22

[TopCoder日記] SRM 576, Division 2

久しぶりのTopCoder参戦 & 悲しい惨敗。。。

C++ の vector配列の使い方がわからず苦戦してた。

vector配列は動的配列なので、vec.push_back(hoge);で初期化する必要があったのだった。

Level1の問題は解けたのだが、Eclipse上ではテストは通ったがarena上ではテストが通らず、時間切れとなった。なぜだろう。

Level1 determineHumidity

N個のパーティションで区切られた空間ごとに水滴を垂らす。

水滴の数は、配列intensityで与えられる。水滴は長さLのスポンジによって受け止められる。

スポンジの位置は配列leftEndで与えられる。

スポンジには上から並べられているので、同じ位置の上下でスポンジがあるときは、下のスポンジには水滴はたらされない。

L個のスポンジにそれぞれたらされる水滴の数を求めよ。

 

07 Mar 2013, 14:33

[TopCoder日記] SRM 572, Division 2

今回は、TopCoderに参加前にEclipseCoderからログインできず、かなりあたふたしたが、なんとか登録完了。

安心して、開始時間までジョギングに出かけたら見事に遅刻したorz。

Level 1: EasyHomework

与えられた配列の要素の積の符号を求める問題。与えられた配列をそのまま計算すると桁あふれするので、1/-1に要約するのがポイント。これはチョロかった。

/*
*  TopCoder
*  SRM       : 572
*  Division  : 2
*  Level     : 1
*
*  Created on: 2013/03/07
*      Author: tsu_nera
*/
#include <string>
#include <vector>
using namespace std;

class EasyHomework {

     public: string determineSign(vector<int> A) {

          // Initialization
          int rslt_integer = 1;
          int now_integer = 0;

          // Search
          for (int i = 0; i < (int)A.size(); ++i) {

               if( A[i] == 0 )     return "ZERO";

               now_integer = ( A[i] > 0) ? 1 : -1;
               rslt_integer *= now_integer;
          }

          // Judge
          return ( rslt_integer > 0 ) ? "POSITIVE"
                                        : "NEGATIVE";
     }

};

 

Level2: NextOrPrev

与えられたstart文字列を規則に従ってgoal文字列まで変形する。

変形までにかかる最小コストを求める。

ただし、変形の過程で文字列の中の文字は一意であることが条件。

反例はわかったのだが、そのアルゴリズムがわからなかった。。。挫折。

/*
 *  TopCoder
 *  SRM       : 572
 *  Division  : 2
 *  Level     : 2
 *
 *  Created on: 2013/03/06
 *      Author: tsu_nera
 */
using namespace std;

#define debug(x) cout << #x << " = " << x << endl;
#define size(a) int ((a).size())

class NextOrPrev {

public: int getMinimum( int nextCost, int prevCost, string start, string goal) {

        int cost = 0;
        int distance = 0;

        for(int i = 0; i < size(start); i++) {
               for(int j = 0; j < size(start); j++) {
                      if( ((start[i] - start[j]) * (goal[i] - goal[j]) ) < 0 ) {
                            return -1;
                     }
              }
       }

        for(int i = 0; i < size(start); i++ ) {
              distance = ( goal[i] - start[i] );

               if( distance == 0) continue;

               if( distance > 0 ) {
                     cost += nextCost * distance;
              }
               else {
                     cost -= prevCost * distance;
              }
       }

        return cost;

}

};