Excel(Google スプレッドシート)でランク付け
A | B | C | D | |
---|---|---|---|---|
1 | 名前 | 年齢 | 点数 | |
2 | John | 23 | 87 | |
3 | Paul | 22 | 87 | |
4 | George | 24 | 78 | |
5 | Ringo | 22 | 90 |
こんな表があって、以下の条件で順位付したい場合
- 点数が低い
- 点数が同じである場合、年齢が低い
RANK関数だと条件は一つしか付けられないので点数が同じだった場合の年齢順が考慮できない。
そんなときはSUMPRODUCT関数を使うと便利。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/sumproduct.htm
正直良くわからないけどこれで良いらしい。
=SUMPRODUCT(($C$2:$C$5<$C2) + (($C$2:$C$5=$C2) * ($D$2:$D$5<$D2)) + 1
($C$2:$C$5<$C2)は自分より点数が低いもの。
($C$2:$C$5=$C2) * ($D$2:$D$5<$D2)は自分と点数が一緒"かつ"年齢が低いもの。(*はAND条件)
それを「+」でOR条件としてくっつける。
これをD列に埋めてオートフィルしてやればD列に順位がでる。
Googleスプレッドシートで使う場合は一点注意。
おまじないが必要だそう。
http://d.hatena.ne.jp/emmie714/20090904/1252026152
=ARRAYFOMURA(SUMPRODUCT(($C$2:$C$5<$C2) + (($C$2:$C$5=$C2) * ($D$2:$D$5<$D2))) + 1
確かにこれでうまく行った。
Selenium2(2)
後続処理を止める
画面遷移を行う場合など、次画面の表示完了まで後続処理を止めたい場合
// フレーム内部が表示されるまで最大10秒待ち final long before = new Date().getTime() + 10000; (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { // 次の画面のタイトルが出たら処理続行 return d.getTitle().toLowerCase().startsWith("タイトル"); } });
フレーム間の移動
フレームのある画面でフレーム間を移動したい場合
// nameが"MENU"のフレームへ移動 driver.switchTo().frame("MENU"); // idが"top"のフレームへ移動 driver.switchTo().frame(By.id("top")); // 最初のフレームへ戻る driver.switchTo().defaultContent();
ポップアップ
ポップアップを開いてポップアップ画面へコントロールを移す場合
// 現在操作しているWindow IDを控える。 String currentWindowId = driver.getWindowHandle(); // ポップアップ表示 driver.findElement(By.linkText("ポップアップ表示")).click(); // ポップアップ表示まで待機 (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { // ポップアップが表示されるとWindowHandlesのサイズが増える return d.getWindowHandles().size() > 1; } }); // 増えたウィンドウIDを取得する。 String newWindowId = null; for (String id : driver.getWindowHandles()) { if (!id.equals(currentWindowId)) { newWindowId = id; } } // ウィンドウ切り替え WebDriver newWindowDriver = driver.switchTo().window(newWindowId);
参考
http://www.storklab.com/seleniumhq.org/docs/03_webdriver.html
http://d.hatena.ne.jp/kencharos/20111027/1319719613
Selenium2
Webブラウザでのテストを自動化するツールのSelenium2。
昔使ったことがあるような気がするが、再度挑戦。
環境
Eclipse3.4
JRE 1.6.04
Sastruts
インストール
EclipseでJavaプロジェクトを作成する。
Downloads - selenium - Browser automation framework - Google Project Hostingからselenium-java-xxx.xx.zipをダウンロードし、解凍して内部のselenium-java-xxx.xx.jarとlibs配下のファイルを全てプロジェクトにインポート。
今回はIEを使いたいのでIEDriverを配置する。
上記リンクからIEDriverServerの最新版を取得し、任意の場所に配置する。(今回はC直下)
これで準備は完了
動かしてみる
新規クラスを作成する。(今回はExample)
public class Example { // IEDriverの配置先を設定 private static final String IE_DRIVER_PATH = "C:\\IEDriverServer.exe"; public static void main(String[] args) { // IEDriverの配置先を指定 System.setProperty("webdriver.ie.driver", IE_DRIVER_PATH); // IEDriverのインスタンスを生成 WebDriver driver = new InternetExplorerDriver(); // Webページを表示 driver.get("http://localhost:8080/hoge"); // 要素を名前で検索 WebElement user = driver.findElement(By.name("user")); WebElement password = driver.findElement(By.name("password")); // ログイン情報を設定 user.clear(); user.sendKeys("hoge"); password.sendKeys("hogepass"); // Submit user.submit(); } }
これを実行するとIEが起動し、自動的にログインフォームにユーザ名とパスワードを入力してsubmitを行う。
とりあえずここまでで起動は確認できた。
ubuntu-server12.0.4にtomcat7
前回に引き続きsolrのための準備。
ubuntu-server12.0.4にtomcat7インストール
またしてもShinya’s Daily Reportさんを参考に
http://d.hatena.ne.jp/absj31/20120930/1349007029
早速インストール
$ sudo apt-cache search tomcat7
上記コマンドでリストアップされた全部をインストール
$ sudo apt-get install -y libtomcat7-java tomcat7 tomcat7-admin tomcat7-common tomcat7-docs tomcat7-examples tomcat7-user
起動確認
$ sudo /etc/init.d/tomcat7 start * Starting Tomcat servlet engine tomcat7
ブラウザでlocalhost:8080アクセス
停止
$ sudo /etc/init.d/tomcat7 stop * Stopping Tomcat servlet engine tomcat7
ubuntu-server12.0.4にoracle java7
solrを試すための環境準備
ubuntu-server12.0.4にOracle java7インストール。
こちらを参考
http://d.hatena.ne.jp/absj31/20120925/1348692705
リポジトリ追加
$ sudo add-apt-repository ppa:webupd8team/java
ここでcommand not foundが出たら以下のコマンドを実行してから再チャレンジ
$ sudo aptitude install python-software-properties
パッケージリストの更新
$ sudo aptitude update
java7インストール
$ sudo aptitude install oracle-java7-installer
ライセンスに関する問いが出るのでYESとかOKとか。
確認
$ java -version java version "1.7.0_17" Java(TM) SE Runtime Environment (build 1.7.0_17-b02) Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode)
【読書メモ】情報は一冊のノートにまとめなさい
著者:奥野宣之 ジャーナリスト出身の文筆家
所要時間:60分
概要
情報はA6サイズのノートで一元管理するという方法。
一元管理する理由
複数のノート(仕事ノート、アイデアノート…etc)で管理すると
- どこに何が書いてあったか忘れる
- 分別が複雑(面倒)で破綻する
だからA6ノートに全てぶち込む。
資料やレシート等も糊付けしてとにかく一元管理。
A6サイズである理由
- 一般的に使われるA4の用紙を四つ折りして貼れる
- 文庫本、ハガキと同じぐらいのサイズで、持ち運べるぎりぎりのサイズ
- どこでも購入できる(100円ノート)
検索
全部ぶち込んだら日付/カテゴリ/サマリで検索を作成。
例) 130325…企画 紫色のカレーを売るには
PCで管理すると全文検索できる。
アイデアに関するテクニック
- ブレスト
- 発送カード
- マインドマップ等
本を読んで
情報を一元管理することの意味、意義については共感。
ただ、A6のノートにまとめることについては共感できない。
2009年に書かれた本なので当時はスマートフォンのスペックも低く、ノートのほうが良かったのかもしれないが、今だったらスマートフォンで管理するのが良いかと思う。
Evernoteで管理すればWordだろうがExcelだろうが、PDF、JPGなんでも取り込める。
さらには検索機能がとても優れている。
紙に書く速度に比べたらスマートフォンへの入力は遅いかもしれないが、管理・検索についてはスマートフォンの方が早くて高機能。
ということで、コンセプトだけ頂いてEvernoteで一元管理を行なってみようかと思う。
Amazonマーケットプレイスで1円 + 350円(配送料)だったので概ね満足。