「英数」キーで英語入力「かな」キーで日本語入力開始に設定すると非常に捗る
家ではMac、仕事でWinなので統一したかった。
以下の記事を見て全力で同意。
カテゴリ: MacPeople , Apple APPLE 2013年12月04日21時00分 Macの英数/かな切り替えに慣れたらWinの「半角/全角」が不便|Mac
でも、仕事では英語版のHHKB使っているので「ESC」で英語、「CTRL+SHIFT+SPACE」で日本語。
非常に便利。
時々ESC押しすぎてダイアログボックスを勝手に閉じるのが玉にキズw
Redmine 2.3.2 -> 2.4.1へのアップデート
Mercurial に変更し、ほぼ最初からインストールし直した
以下の手順通りにインストールすると bundleでエラー発生
Redmine 2.4をCentOS 6.4にインストールする手順
# bundle install --without development test
You cannot specify the same gem twice with different version requirements.
You specified: capybara (~> 2.1.0) and capybara (~> 2.0.0)
意味がぜんぜんわからない・・・
色々調査していると、以前のプラグインが原因だった。
git管理しておらず面倒だったのでアップデートせずに、以下のプラグインを除去。
redmine_theme_changer
redmine_hudson
やっと実行可能になった
その後、httpd を起動時に警告発生
httpd を起動中: WARNING: The 'RailsFrameworkSpawnerIdleTime' option is obsolete.
Please use 'PassengerMaxPreloaderIdleTime' instead.
[ OK ]
passenger の conf ファイルを変更
# vim /etc/httpd/conf.d/passenger.conf
以下の行を削除
RailsFrameworkSpawnerIdleTime 0
これでようやく終了
疲れました。
intの桁数計算の処理時間
intの桁数を求める方法は色々あれど、
どれが一番高速なのかずっと気になっていたため計算してみた。
3つの手法で計算
- log10の対数を使う
- 10での除算回数
- charへ変換してstrlen
結果
500万回ループして求めた測定結果
2<1<<3 の順で高速
- 1はなにげに高速。2の2.7倍くらいの処理時間
- 2が一番高速
- 3は論外、面倒な上遅い。2の15倍位。
結論
最終的に簡潔に記述できるlog10で良さそう。一番良い結果の2.744倍程度だが一番簡潔。
本当に高速を求めることはそうそうないと思われる。(1回の変換時間は約70nsec)
組み込みなどで制限がある場合、math.hをinclude することでサイズ肥大化が気になるときに10除算回数を選択する感じ
log10で計算するともっと時間がかかると思ってたので以外だった。
10で除算するときに、500万回int定義する時間が掛かったのもあるだろうけど。
プログラム
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#define LOOP_NUM 5000000
int digit_calc_log10(int);
int digit_calc_division10(int);
int digit_calc_strlen(int);
void function_loop(int (*p_function)(int));
int main(void){
// 処理 Log10 ()
function_loop(digit_calc_log10);
// 処理 /10
function_loop(digit_calc_division10);
// 処理 strlen
function_loop(digit_calc_strlen);
return 0;
}
// 桁数をLog10で計算
int digit_calc_log10(int value){
return log10(value) + 1;
}
// 桁数を10の除算で計算
int digit_calc_division10(int value){
int digit = 0;
while(value) {
value /= 10;
digit++;
}
return digit;
}
// 桁数をcharの長さで計算
int digit_calc_strlen(int value){
char c_value[100];
sprintf(c_value, "%d", value);
return strlen(c_value);
}
// LOOP_NUM回p_function関数を繰り返す
void function_loop(int (*p_function)(int)) {
clock_t start, end;
start = clock();
int digit;
int value;
for(value=1; value<LOOP_NUM; value++ ){
digit = p_function(value);
// printf("%d:%d\n", value, digit);
}
end = clock();
printf( "処理時間:%d[ms]\n", end - start );
}
実行結果
処理時間:343[ms]
処理時間:125[ms]
処理時間:1684[ms]
環境
CPU: Core 2 Quad Q9650 3.00GHz
モードレスなメッセージボックス表示
モーダルダイアログ : OKボタンを押す事により次の処理を行うダイアログ
モードレスダイアログ : OKボタンを押さずとも裏で処理が動いているダイアログ
これをメッセージボックスに当てはめると以下になる。
モーダルはそのままなので簡単
MessageBox.show("test");
モードレスはスレッドを作成する必要あり
using System.Threading;
new Thread(new ThreadStart(delegate
{
MessageBox.Show("test");
})).Start();
参考
Create a Modeless Messagebox - stackoverflow
追記:
(.NET Framework 4以降ならTaskを使う。ついでにラムダ式も使用)
using System.Threading.Tasks;
Task.Factory.StartNew(() =>
MessageBox.Show("test")
);
ThreadとTaskの違いは以下を参照
[雑記] スレッド プールとタスク - ++C++; // 未確認飛行C
BATファイルでパスワード付きのWindows共有フォルダにアクセスする方法
自動化厨のための忘備録
共有フォルダを利用する流れ
- ユーザー名とパスワードを使い共有フォルダへ接続
- 共有フォルダで削除やコピーなどの作業
- 共有フォルダの切断
対応コマンド(括弧内は任意)
- net use (共有フォルダへのパス) (PASSWORD) /user:(USERNAME) /Y
/Y : 確認なしで接続 - (サーバー上で適当に処理 hogehoge)
- net use (共有フォルダの場所) /delete
記述例(パス付き共有サーバーに日時のディレクトリを作成)
@echo off
setlocal
rem ------ 定義 ------
set SERVER_PATH=\\test_server
set USERNAME=admin
set PASSWORD=admin_pass
rem 日時取得(時間が1桁の場合は空白になるため0で置換)
set time2=%time: =0%
set yyyyMMdd_hhmm=%date:~0,4%%date:~5,2%%date:~8,2%_%time2:~0,2%%time2:~3,2%
set DIRNAME=%yyyyMMdd_hhmm%
rem ------ 処理 ------
rem 1. 接続
net use %SERVER_PATH% %PASSWORD% /user:%USERNAME% /Y
rem 2. 処理
mkdir %SERVER_PATH%\%DIRNAME%
rem 3. 切断
net use %SERVER_PATH% /delete
簡単処理ならこれでOK
もし、GitとかJenkinsを利用しているならばBATファイル実行に失敗する不可解な現象があることに注意(このWindowsのバグで実装が2日は遅れた)
改行コード LF で日本語を含むバッチファイルの動作がおかしい件
Windows 7ですら発生したので、根は深そう。
解決策として全部半角英数字で記述。