投稿

2012の投稿を表示しています

LaTeXで楽に余白を設定する

LaTeXではわりと余白を設定するのがめんどくさいです。 なのでLaTeXで計算して簡単に余白を設定できるようにしてみました。 \leftMargin~\bottomMarginに適切な値を設定 してやれば後は計算して設定してくれます。 この一覧のコードの元は 卒論をTeXフォーマットなしから書くためのtips です。参考になりました。 \newdimen\leftMargin \leftMargin = 30truemm \newdimen\rightMargin \rightMargin = 30truemm \newdimen\topMargin \topMargin = 35truemm \newdimen\bottomMargin \bottomMargin = 30truemm %[-------------------------------------- %計算&設定開始 \newdimen \stack \stack = 210truemm %stack = 210 //A4横サイズ \advance\stack by -\the \leftMargin %stack -= leftMargin \advance\stack by -\the \rightMargin %stack -= \rightMar\gin % テキスト幅: 210-(\leftMargin+\rightMargin) \textwidth = \the \stack \fullwidth = \textwidth % ページ全体の幅 \oddsidemargin = \the \leftMargin % 左余白 \addtolength{\oddsidemargin}{-1truein} % 左位置デフォルトから-1inch \topmargin = \the \topMargin % 上余白 \stack = 297truemm %stack = 297//A4横縦サイズ \advance\stack by -\the \topMargin %stack -= lef...

神々しい景色

イメージ
なぜかなにか偉大なものを感じてしまう

イメージ
寒い、ですね。暖かな日差しが待ち遠しいです。

LaTeXにおいて二段組の中で画像とキャプションを挿入する

イメージ
いや…はまりました。multicols環境の中ではフロート環境が使えない→figure環境が使えない→\captionが使えないで色々調べた結果こうなりました。 理工学研究報告書スタイルファイル と TeXでabstractを1段、本文を2段で表示させる を参考にしました。

[C#] コンソールアプリケーションでダイアログをモーダルで表示する

通常だと、コンソールアプリケーションはIWin32Windowを持たないのでダイアログをモーダルで表示できません。だからどうすればいいかって言うと、無ければ作ればいいじゃん。 var hidenWindow = new NativeWindow(); hidenWindow.AssignHandle(Process.GetCurrentProcess().MainWindowHandle); var openDialog = new FolderBrowserDialog(); openDialog.ShowDialog(hidenWindow); こうしてやることでコンソールのほうが操作できなくなって分かりやすくなるかと。

READ PHONE STATEとWRITE_EXTERNAL_STORAGEが勝手に追加される

AndroidManifest.xmlで明示的に求めてないのになぜ権限に android.permission.READ_PHONE_STATE (電話/通話 携帯のステータスとIDの読み取り) android.permission.WRITE_EXTERNAL_STORAGE (SD カードのコンテンツの変更/削除) が追加されるのか以前からずっと不思議でした。これは android:minSdkVersion="3"つまり、Android1.5から使えるようにしていたせい のようです。Android1.5ではこれらの権限がなかったので互換性を保つために自動で追加されてしまいます。 これを回避するためには android:minSdkVersion="4" つまり、Android 1.6から対象にするようにすると自動で追加されません。 ソース: Android Permissionの不思議 Android permissions: Phone Calls: read phone state and identity

2012 蝉

イメージ
もうそろそろ夏も終わりですね。

MSTest で関数の戻り値のprivateなメンバにアクセスする

たとえば次のような場合は自動生成されるクラス(Man_Accessor)によって簡単にアクセスできますよね。 class Man { private int age; } class ManTest { [TestMethod()] void AgeTest() { var man = new Man_Accessor(); Assert.IsTrue(man.age >= 20); } } でも関数やプロパティの戻り値のオブジェクトのprivateなメンバを検査したかったら…? 次のようにすればいいらしいです。 class State { private int StateFlag; public State( int state) { StateFlag = state; } } class Man { public State State { get { return new State(0); } } } class ManTest { [TestMethod()] void AgeTest() { var stateObject = new PrivateObject( new Man().State); var state = new State_Accessor(stateObject); Assert.AreEqual(state.StateFlag, 0); } }

XMLを自動整形するテキストエディタMeryのマクロ

イメージ
MeryのAlapaバージョンで変更されたXML整形機能、今のところ、登録されたタグ(htmlタグ)以外の物が入ってたりすると整形できないようなので登録などをしなくてもいいXMLを整形できるマクロを作りました。そのかわりオプションは全くありません。すべておまかせです。マクロを使うためには.net 4.0の導入が必要です。 ダウンロード こちらからどうぞ[xmlFormatter.zip] マクロの修正 マクロはMeryのとの受け渡しに使っているだけでXMLのフォーマット自体は別途実行ファイルを使っています。そのため、実行には実行ファイルのフルパスを書く必要があります。 (前略) var wsh = new ActiveXObject( "WScript.Shell" ); wsh.Run( "cmd /c D:\\Desktop\\xmlformatter.exe " +tmpFilePath,0, true ); //フォーマット結果の読み込み try { (後略) ここのxmlformatter.exeまでのパスをフルパスで書いてください。\は\\と重ねて書く必要があります。日本語やスペースがあるディレクトリは使うことができません。

管理者権限不要のキーボード配列変更ソフト

イメージ
レジストリを使わない常駐タイプのキーボード配列変更ソフトを作ってみました。レジストリを使わないので終了させたらすぐに元に戻りますし、管理者権限がなくても使い慣れたキー配列でストレスなく作業をすることができます。ダウンロードファイルには常駐用のソフトと設定エディターが含まれています。設定ファイルはXMLファイルなのでテキストエディタで作ることもできます。また常駐ソフトは.NET 2.0以上で稼働するので.NET4.0が入ってなくても安心です。 今回はreadme.txtも含めて全部英語で作ってみました。何となくw UIもエディターは無駄にWPFでリボン使ってみたりしているので(私が楽しい)遊び的な要素が多いです。つまり今回も誰得?俺得!!なわけです。そういうわけでわりとてけとーです。何かありましたら twitter:@kassyi か、コメントまでどうぞ。 ダウンロード こちらからどうぞ[KLC.zip] ソースはこちらから[KLC -src.zip] 制限事項 ・編集&保存しても設定が古いまま→設定ファイルエディターに於いて、プルダウンから選択した後どこか他のセルを選択してドロップダウンが表示されない状態にしてください。ドロップダウンが表示されたままだと確定となっておらず、保存しても編集結果が反映されません。 更新履歴 2012/09/06 設定ファイルの不正を検出しない問題を修正 設定ファイルを読み込んでもプログラムで使われない致命的なバグを修正 ソースを公開

C#でお釣り計算

イメージ
先日ATMでお金を下ろしたら千円札が9枚も出て来まして… ばっきゃろー!5000円ってもんを知らないのかっ!!って思いましてねw 前々から思ってましたけどその日はなんか許せなくて。プログラムにしちゃいました。 ただ、文字列使ったら面白くないじゃないですか。 1234.ToString()[0]とかしたら面白み全く無いですw ってことでアルゴリズム部分に文字列を使うのは禁止ってことで。 問題をまとめると 入力された数値をお釣りとして計算する。 同じ硬貨や紙幣が重なる場合は一つ上の値段の硬貨や紙幣を使うこと。 アルゴリズムに文字列の使用は禁止。 お釣りは無制限にあるものとする(←制限つけようと思ったけどめんどくさくなった 私の解答は ideone.comのこちからから。 もし皆さん回答作ったらコメントでもツイッターでもいいので教えてくれると私が楽しいです←

カスタム404ページ

イメージ
最近 Bloggerでカスタム404ページが作れる ことを知って全部1から作ったんですよ。 こんな感じで。でも実際には記事相当のところにしか表示できないようで当然bodyタグとかそのへんも使えず。外部cssを読み込むためのlinkタグも禁止されていました。幸い1万文字使えたのでstyleタグで直接埋め込みました。スクリプト使っても良かったんですけれども、こっちのほうがまだスマートかなと思いまして。 ということで実際にはこんな感じになりました。だいぶ変わってしまいました。

3次元配列を1次元配列で表現

int hoge[][][]では足りないぐらい大きい三次元配列を確保したい方へ。 C/C++でポインタによる多次元配列を連続したメモリ領域に作成する でもforで回してやる方法が書かれているけどこれだと確保が遅い。この方式のほうがまとまった領域を一気に確保してそのまま使えるので早い。ただアクセスするたびに若干の計算が必要になるけど。微妙ではある。 #include <stdio.h> #include <stdlib.h> #define WIDTH 1000 #define HEIGHT 1000 #define OFFSET(x,y,z) ((WIDTH + HEIGHT * (z)) + ((x) + WIDTH * (y))) int main(){ int *tmp = NULL; tmp = ( int *) malloc( 1000*WIDTH *HEIGHT ); if (tmp == NULL){ exit(1); } tmp[OFFSET(1,1,1)] = 1; printf( "%d" ,tmp[OFFSET(1,1,1)]); free(tmp); return 0; }

変数を一つだけ使って1~100まで足す

「1から100までの和を表示するプログラムを作れ」という問題を鼻で笑う諸君、「但し変数は宣言済の int x 以外は使わないこと」 という条件を付けても鼻で笑っていられるかな? — 自作中毒ぢぢぃ、GATAROさん (@duo6750) 3月 25, 2012 というのを見かけたのでintを16bitと8bitに区切って使って計算してみた。 using System; public class Program { public static void Main() { //0xFFFF00(5050) + 0xFF(100) int x = 100; for (; (x & 0xFF) > 0; x= x & 0xFFFF00 | ((x & 0xFF) -1)) { x = ((x >> 8) + (x & 0xFF)) << 8 | (x & 0xFF); } Console.WriteLine(x>>8); } } 実行結果はこちら/ideone.com

Javaにおいて引数付でスレッドを走らせる

C#なら色々引数を渡す手段を知っているのですがJavaでは引数を持てるAPIが見つかりませんでした。そこで調べてみたところ クラスのフィールドにセットしておけ とのことだったので頑張ってみましたが、うまく行くまで時間がかかってしまったのでブログに投稿しました。 [実行部(使い方)] new Thread( new ParameterizedRunner<Integer>( new Runnable1<Integer>() { @Override public void run(Integer ags) { try { Thread.sleep(ags); } catch (InterruptedException e) {} } }, 1234)).run(); [パラメータを受け取るRunbaleの実装クラス] private class ParameterizedRunner<TArg> implements Runnable{ private Runnable1<TArg> task; private TArg arg; public ParameterizedTRunner(Runnable1<TArg> task,TArg arg){ this .task =task; this .arg = arg; } @Override public void run() { task.run(arg); } } [引数をひとつ受け取って実行するインターフェス] public interface Runnable1<TAgs> { void run(TAgs ags); }

新年おめでとうございます!

新年おめでとうございます。今年もどうぞこんなくだらないブログですがどうぞよろしくお付き合いお願いします。 今年の年賀状は干支は辰ということで燃え上がる雰囲気を想像して こんなもの を作りました。最初は印刷用に作ったものだったのですがブログ用のも作らなきゃと作業していたらこんな感じのまったく違うものが生まれましたw 今年はできるだけアクティブにいろんな人と関わっていろんな経験をする年にしたいと思います。今年も一年がんばりますっ!