LGBTQのシンボル

2012年12月21日金曜日

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 -= leftMargin
\advance\stack by -\the \bottomMargin   %stack -=  \rightMargin 

% テキスト高さ: 297-(\topMargin+\bottomMargin)
\textheight=\the\stack
\headheight=0mm
\headsep=0mm
\addtolength{\topmargin}{-1truein}     % 上位置デフォルトから-1inch


\stack = 0mm
%計算&設定終了
%-----------------------------------------]

※\newdimenは寸法型の変数を宣言するためのコマンドです。

2012年12月9日日曜日

神々しい景色


なぜかなにか偉大なものを感じてしまう

2012年12月1日土曜日


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

2012年10月21日日曜日

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



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

続きを読む »

2012年9月30日日曜日

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

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

こうしてやることでコンソールのほうが操作できなくなって分かりやすくなるかと。

2012年9月16日日曜日

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から対象にするようにすると自動で追加されません。


ソース:

2012年9月5日水曜日

2012 蝉

もうそろそろ夏も終わりですね。


2012年8月28日火曜日

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);
    }
}

2012年8月7日火曜日

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までのパスをフルパスで書いてください。\は\\と重ねて書く必要があります。日本語やスペースがあるディレクトリは使うことができません。

2012年8月4日土曜日

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


レジストリを使わない常駐タイプのキーボード配列変更ソフトを作ってみました。レジストリを使わないので終了させたらすぐに元に戻りますし、管理者権限がなくても使い慣れたキー配列でストレスなく作業をすることができます。ダウンロードファイルには常駐用のソフトと設定エディターが含まれています。設定ファイルはXMLファイルなのでテキストエディタで作ることもできます。また常駐ソフトは.NET 2.0以上で稼働するので.NET4.0が入ってなくても安心です。

今回はreadme.txtも含めて全部英語で作ってみました。何となくw UIもエディターは無駄にWPFでリボン使ってみたりしているので(私が楽しい)遊び的な要素が多いです。つまり今回も誰得?俺得!!なわけです。そういうわけでわりとてけとーです。何かありましたらtwitter:@kassyiか、コメントまでどうぞ。

ダウンロード

こちらからどうぞ[KLC.zip]

ソースはこちらから[KLC -src.zip]

制限事項

・編集&保存しても設定が古いまま→設定ファイルエディターに於いて、プルダウンから選択した後どこか他のセルを選択してドロップダウンが表示されない状態にしてください。ドロップダウンが表示されたままだと確定となっておらず、保存しても編集結果が反映されません。

更新履歴

2012/09/06
  • 設定ファイルの不正を検出しない問題を修正
  • 設定ファイルを読み込んでもプログラムで使われない致命的なバグを修正
  • ソースを公開

2012年6月7日木曜日

C#でお釣り計算


先日ATMでお金を下ろしたら千円札が9枚も出て来まして…
ばっきゃろー!5000円ってもんを知らないのかっ!!って思いましてねw
前々から思ってましたけどその日はなんか許せなくて。プログラムにしちゃいました。

ただ、文字列使ったら面白くないじゃないですか。
1234.ToString()[0]とかしたら面白み全く無いですw
ってことでアルゴリズム部分に文字列を使うのは禁止ってことで。

問題をまとめると

  • 入力された数値をお釣りとして計算する。
  • 同じ硬貨や紙幣が重なる場合は一つ上の値段の硬貨や紙幣を使うこと。
  • アルゴリズムに文字列の使用は禁止。
  • お釣りは無制限にあるものとする(←制限つけようと思ったけどめんどくさくなった


私の解答はideone.comのこちからから。

もし皆さん回答作ったらコメントでもツイッターでもいいので教えてくれると私が楽しいです←

2012年5月6日日曜日

カスタム404ページ

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

2012年5月4日金曜日

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;
}

2012年3月28日水曜日

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

というのを見かけたので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

2012年1月15日日曜日

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);
}

2012年1月1日日曜日

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

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