home ホーム search 検索 -  login ログイン  | help ヘルプ

find 検索

1201 - 1210 / 1320    [|<]  [|<]  [<]  121  122  123  124  125  126  127  128  129  130   [>]  [>|][>|]
タイトル/名前 更新者 更新日
日記/2009/01/05/ExcelVBAでUserFormをリサイズ可能にする方法 msakamoto-sf 2009-01-05 15:24:57
日記/2009/01/05/Samba,Winbind,LDAPによる認証統合メモ msakamoto-sf 2009-01-05 13:36:24
日記/2009/01/04/OSSのWebメーラを探した。 msakamoto-sf 2009-01-04 21:37:52
日記/2008/12/29/過去のPukiWikiコンテンツ、ようやく移転終了。 msakamoto-sf 2008-12-29 19:25:37
日記/2008/12/29/MS Team Foundation Server 2008 メモ msakamoto-sf 2008-12-29 19:17:56
Perl/codepiece/my_and_locals1 msakamoto-sf 2008-12-29 17:44:54
Perl/codepiece/setuid03 msakamoto-sf 2008-12-29 17:26:42
Perl/codepiece/setuid02 msakamoto-sf 2008-12-29 17:21:51
Perl/codepiece/setuid01 msakamoto-sf 2008-12-29 17:20:04
Perl/codepiece/manupilate_INC_by_FindBin msakamoto-sf 2008-12-28 23:06:26
ソート項目 / ソート順     1ページ 件ずつ表示

日記/2009/01/05/ExcelVBAでUserFormをリサイズ可能にする方法  

所有者: msakamoto-sf    作成日: 2009-01-05 15:07:01
カテゴリ: Windows 

お手伝いで調査を頼まれて、無事見つかったのでメモ。

ExcelのVBAでUserFormを表示しているのだけれど、リサイズできなくて困ってるとのこと。
→Win32APIで解決。

・「エクセルでフォームを自在に作る方法」
http://questionbox.jp.msn.com/qa1258692.html

・「【36270】画面サイズ変更を実現させるには?」
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=36270;id=excel

・「UserForm Resize」
http://www.xtremevbtalk.com/archive/index.php/t-196301.html

基本的な流れは、

  1. FindWindow()/GetActiveWindow()でUserFormのウインドウハンドルを取得。
  2. GetWindowLong(hWnd, GWL_STYLE)でウインドウのスタイルを取得。
  3. 上で取得した値に、WS_THICKFRAMEをORしてSetWindowLongする。

ここまでできれば、UserForm_Resize()のイベントハンドラで色々好きなように調整できるようになります。
なおAPIを呼ぶタイミングは・・・

  • Initializeイベント:FindWindowでウインドウのCaptionから取得。
  • Activateイベント:GetActiveWindowで取得。

という使い分けになります。


プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2009-01-05 15:24:57
md5:eef741c01b3349da61dababe3ef18e95
sha1:b40653505fb016a6204fcab9b9602d300da1f11a

日記/2009/01/05/Samba,Winbind,LDAPによる認証統合メモ  

所有者: msakamoto-sf    作成日: 2009-01-05 13:29:16
カテゴリ: LDAP Samba Windows 

・「Samba が動作する Linux マシンを Windows ドメインに参加させる方法」
http://www.miraclelinux.com/technet/document/samba/samba0011.html

・「Samba 3.0の全貌 改訂版[前編]」
http://www.atmarkit.co.jp/flinux/special/samba3b/samba01.html

・「Samba 3.0の全貌 改訂版[後編]」
http://www.atmarkit.co.jp/flinux/special/samba3b/samba04.html

・「Samba3.0+OpenLDAP+Winbindでファイルサーバ」
http://wind-master.dip.jp/soft-info/item/32/catid/11

・「連載 Active DirectoryとLinuxの認証を統合しよう」
http://gihyo.jp/admin/serial/01/ad-linux

Samba2.2とかの時代だと、winbindでLinux認証をWindowsのADにつなげるところまではOKだけどLinux側のuid/gidが自動生成されちゃうのでNFSとかでディレクトリを共有してる場合とかで複数のUnixマシンが動いている場合は困る。
Samba3.0の時代になり、winbindで認証されたユーザ情報をLDAPに格納できるようになった。これにより、上記のようなケースでもuid/gidをLDAPで一元管理できるため問題なくなる・・・という理解。
ただしWindwos側のクライアントアクセスライセンス(CAL)については、winbindを動かすLinux用に必要だし、さらにLinuxを経由してログインしてくるエンドのデバイスについても必要なので注意・・・という理解。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-01-05 13:36:24
md5:6a6c7ec764eeb7f74c738a361af43a9d
sha1:28dfbcff3a1cd29ab29f60e171bf111f8403d63c

日記/2009/01/04/OSSのWebメーラを探した。  

所有者: msakamoto-sf    作成日: 2009-01-04 21:08:44
カテゴリ:

会社で使うかもなのでWebメーラを適当に探す・・・が、オープンソースとなると探すのが難しいかも。

有名なのはこの位かな?
まだGoogleで軽く探った位なので、海外製とかにも目を向ければもっとあるかも。

しかしWebメーラで気になるのはSPAM検出とか排除機能。学習機能とかどうなんだろうか。

ソフトハウスとかで人を外に出すのが主体の会社の場合、メンバーって方々にばらばらに散ってしまう。会社のメールサーバに現場からアクセスできないケースが圧倒的に多い。現場によっては客先のシステムでアカウントを貰える場合もあるけど、それはあくまでもお客との連絡だけで、会社との連絡用には使えない場合もある。
となるとメンバーが帰宅後家から・・・となるのだけれど、それはそれで情報漏洩が怖い。

というわけで、メールデータはあくまでもサーバ上でクライアントには・・・まぁ、残らないという建前で、SSLで暗号化されていてWebブラウザがあればOKということでWebメーラ良いなぁという次第。
客先のPCからアクセスする事を考慮すると、VPNなど特殊なソフトは使えない。

もうここまで追いつめられたら、昔よろしく電話と郵送で良いじゃん?と放り出したくもなる。
印刷物には透かしでナンバリングしておいて、会社側で送った先とナンバーを控えておけば、万一流出した場合も(印刷物自体が流出して、コピーなどからナンバーを確認できれば)どこから流出したのか分かるし。
そもそも客先のPCから自社のメールボックスの中身を覗くこと自体がグレーゾーンな気がする。現場によっては普通に禁止なのではなかろうか。

となると、あれだ。WindowsMobileでPCメールの使える携帯電話を、現場毎に最低1台貸与すれば?あるいはHTTPSとCookieの使えるブラウザを搭載した携帯電話とか。機種が限定されちゃうと思うけど。
Excelシートとかで各人の入力が必要な勤怠表などのようなものについては、印刷したのを各人の自宅に郵送し、記入後返送するか手渡し。
そうすれば一切自宅や客先のPCを弄る必要もないし、Officeを一々自宅PCに入れる必要もない。かさむとすれば切手代だけど、60人規模とすれば毎月 \80 x 2(往復) x 60人 = \9,600 かかるけど、下手にWebメールだのVPNだの構築して情報漏洩のリスクを取るよりはマシ、という考えだって有りでしょ。

あと内容によってはそもそもメールで各人に送る必要のない内容だってあるし。忘年会や研修のお知らせなどはポータルサイトのようなものに載せればOKだろうし・・・つまり、個人情報が含まれないような内容とか。
ふにゃ。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-01-04 21:37:52
md5:7fdb2d7a5a7c3787027d6de1bf11af82
sha1:48a653e969a7f638ea639624ff4237d40542778f

日記/2008/12/29/過去のPukiWikiコンテンツ、ようやく移転終了。  

所有者: msakamoto-sf    作成日: 2008-12-29 19:19:01
カテゴリ:

このドメイン(www.glamenv-septzen.net)で2005-2007年にかけて、PukiWikiで書いた記事とかがあったのだけれど、一通り移転が完了した。

今となってはどうでも良いような記事はばっさり削除した。memoriesやPokoX周りがそれで、全部まとめて黒歴史という事で思い出だけ書いておいた。

さて・・・このほかに、1,000エントリほど2002年位から書きためていた日記がある。次はこっちだけど・・・さすがに1,000エントリ全部移転するのはあまりにも手間だし、やっぱり今となっては意味のない記事もかなり多い。大半が愚痴だし。
なのでそちらについては、技術的な部分を優先して移そうかな、と考えている。特にEmacsやvim、bashのメモとかは今でも自分の役には立つ筈なので、移しておきたい。
しかしPHPの話題についてはどうしようかな・・・。2002-2004年頃のPHPの技術を載せてもしゃーないしな・・・。

まぁその辺含めてぼちぼち続けます。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-12-29 19:25:37
md5:ec1c6f3bc2e6e1c50779c6e0d402bbe6
sha1:7f28037ac2617ebe809d207686913e67bafe6b8f

日記/2008/12/29/MS Team Foundation Server 2008 メモ  

所有者: msakamoto-sf    作成日: 2008-12-29 19:07:48
カテゴリ: Windows システム開発 

高額な分、かなり高機能なプロジェクト管理システム "Team Foundation Server 2008" の紹介や導入、機能の詳細とかが書かれてる。

日頃はTortoiseSVN使ってたり、現場によってはVSSだったりで、VSSの場合のフラストレーションが凄まじいのだけれど・・・現場の方針によってはフリーソフトの類が使えなかったりして、CVS/SVN系にメンバーを引きずり込むチャンスが見えなかった。
が、MS製品であればサポート有りということで説得力もあるし、何より記事を読んだ感じ、ソースコードのバージョン管理については変更セットをサポートしたりとかなりオープンソース系のバージョン管理システムに近づいている。しかもただバージョン管理するだけではなく、自動ビルドやプロジェクト管理などTracの機能にプラスαした感じ。

これで値段さえもう少し・・・ならなぁ。あの値段を見ると、その分人件費に充ててSVN+Trac的にオープンソースの組み合わせでシステム組んでもドッコイドッコイな感じ。

とはいえ、オープンソース「しか」知らないというのも不公平だなと感じていたので、有り難い情報としてメモ。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-12-29 19:17:56
md5:4742684b15780949fe66d20bd79da980
sha1:9338188b4bff9bc52db729c4faf85ef7cb1690dc

Perl/codepiece/my_and_locals1  

所有者: msakamoto-sf    作成日: 2007-03-15 17:34:43
カテゴリ: Perl 

"Effective Perl"(Joseph N.Hall/Randal L.Schwartz, 吉川邦夫訳, アスキー出版局)にmyとlocalの説明が載っていたので、改めで実際に動かし、確認する。

(全て表示する)
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-12-29 17:44:54
md5:fa5ed0cb37c8e7d61556996f02c5d6d2
sha1:0ff55a5a11f74cfbfb7dc385343814be71e2f917

Perl/codepiece/setuid03  

所有者: msakamoto-sf    作成日: 2007-04-15 17:25:05
カテゴリ: Perl 

Perl/codepiece/setuid02 ではコマンドライン引数の汚染除去を試みた。
今回は、ファイルから読み取った値の汚染除去を試みる。

perlsec( http://perldoc.perl.org/perlsec.html )にあるとおり、Taintモードが有効な場合、Perlプログラムの"外部"から取得される変数は基本的に汚染されていると見なされる。perlsecに上げられているものとして以下が汚染されたものと見なされる。

  • コマンドライン引数
  • ファイルから読み取った値
  • サブシェル起動から読み取った値
  • 環境変数(%ENV)
  • readdir(), readlink(), shmread() の値、msgrcv() で取得したメッセージ

これらの値を使って以下の操作を行う場合、致命的なエラーが発生する。

  • サブシェルに引数として渡して起動する
  • ファイル・ディレクトリの名前として使用して、ファイル・ディレクトリ操作を行う

但し、Perl5.8.8のperlsecによると、以下の場合はTaintチェックは行われない。

  • print, syswrite の引数
  • Symbolic methods and symbolic sub references (? ... 調査不足)

以下のコードピースで、ファイルから読み取った値の汚染除去を試みる。

  • コードピース(setuserid3.pl)
#!/usr/bin/perl -T
use strict;
use warnings;

my $fn = shift or die "usage: $0 conffile\n";
my $re_filename = qr|[0-9A-Za-z_,\-\./]+|;
die "$fn is not untained." unless $fn =~ /^($re_filename)$/;
$fn = $1;

open FH, "<$fn" or die "open failure. $!\n";
# 引数で渡されたファイル(conffile)から、出力先のファイル名を取得する。
#
# conffileは、出力先のファイル名が一行で記述されているテキストファイルとする。
# 例:
# /tmp/hoge.txt<NL><EOF>
#
my $outfile = <FH>;
close FH;

# remove new line
chomp $outfile;
$fn = $outfile;

# 汚染除去を行う。
die "$fn is not secure." unless $fn =~ /^($re_filename)$/;
$fn = $1;
open FH, ">$fn" || die "open failure. $!\n";
print FH "$outfile\n";
print FH "REAL_USER_ID(UID) = $<\n";
print FH "EFFECTIVE_USER_ID(EUID) = $>\n";
print FH "REAL_GROUP_ID(GID) = $(\n";
print FH "EFFECTIVE_GROUP_ID(EGID) = $)\n";
close FH;

例えば上記コードピースで、出力ファイル名をキメ打ちにした場合も、正常に終了する。

print FH "$outfile\n";

上記コードが有るにもかかわらず正常に終了するのは、printが汚染チェックを行わないからである。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-12-29 17:26:42
md5:085c0243e9294c25deaa26bf97d96c02
sha1:3a7b3d4a0aad6ecbbc14ee4ad3cf3cab686df7cb

Perl/codepiece/setuid02  

所有者: msakamoto-sf    作成日: 2007-04-14 17:20:59
カテゴリ: Perl 

引き続き、setuidを攻略する。コマンドラインからの引数の汚染除去を行う手法を試みてみる。

基本的に、正規表現マッチにより取り出した値を利用すれば良いようである。

  • コードピース(setuserid2.pl)
#!/usr/bin/perl -T
use strict;
use warnings;
if(@ARGV < 2) {
	die "usage: $0 touch_file_name example_integer\n";
}
# コマンドラインからファイル名を取得
my $fn = shift;
# コマンドラインから文字列結合用の値を取得
my $num = shift;

# ファイル名マッチの正規表現で、汚染を除去する。
# ここでは単に一般的なUNIXファイル名であれば良しとしているが、
# 実際はディレクトリなどもっと厳しくする必要がある。
my $re_filename = qr|[0-9A-Za-z_,\-\./]+|;
die "$fn is not untained." unless $fn =~ /^($re_filename)$/;
$fn = $1;

open FH, ">$fn" || die "open failure. $!\n";
print FH "REAL_USER_ID(UID) = $<\n";
print FH "EFFECTIVE_USER_ID(EUID) = $>\n";
print FH "REAL_GROUP_ID(GID) = $(\n";
print FH "EFFECTIVE_GROUP_ID(EGID) = $)\n";
close FH;

# ファイル名に文字列結合する為の整数値を汚染除去する。
my $re_number = qr|[0-9\-\.]+|;
die "$num is not unsecure." unless $num =~ /^($re_number)$/;
$num = $1;

# 上記汚染除去を行っておかないと、続くopenで、
# Insecure dependency in open while running setuid at ...
# が発生する。
$fn .= "_$num";
open FH, ">$fn" || die "open failure. $!\n";
print FH "$fn\n";
print FH "$num\n";
close FH;
  • 実行結果
(user1)$ chmod ug+s setuserid2.pl
(user1)$ ls -l setuserid2.pl
-rwsr-sr-x  ... user1 ... setuserid2.pl*
(user1)$ su user2
Password:
(user2)$ ./setuserid.pl /tmp/hoge 256
→
(user2)$ cd /tmp; ls -l
-rw-r--r--  ... user1 ... hoge.tmp
-rw-r--r--  ... user1 ... hoge.tmp_256

(user2)$ more /tmp/hoge.tmp
REAL_USER_ID(UID) = 600
EFFECTIVE_USER_ID(EUID) = 500
REAL_GROUP_ID(GID) = 600 600
EFFECTIVE_GROUP_ID(EGID) = 500 600
→ user1 が 500, user2 が 600

(user2)$ more /tmp/hoge.tmp_256
/tmp/hoge.tmp_256
256

このように、正規表現でマッチした結果から再取得することで、Perlから見れば「明示的なユーザーチェックにより汚染を除去できた」とされ、コマンドライン引数をファイル名に使用することが可能となることを確認できた。

ただ、上記リンクの http://harapeko.asablo.jp/blog/2007/01/29/1148931 にもあるように、 むやみやたらと安易なREGEXPによる汚染除去を行うのではなく、本当にその引数が必要なのか?といった、設計自体の見直しも忘れない 方が良いらしい。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-12-29 17:21:51
md5:a00debae6bd0cccae58341e245832d71
sha1:1adfa9d6186b8eef2e9cdb24433f854e5af9c22f

Perl/codepiece/setuid01  

所有者: msakamoto-sf    作成日: 2007-04-03 17:18:57
カテゴリ: Perl 

setuidされたPerlについての調査を行った。

kernelレベルではまたどうもややこしくなるようである。ここでは、単純にTaintモードの確認を行う。

  • コードピース(setuserid.pl)
#!/usr/bin/perl -T
use strict;
use warnings;

#my $fn = sprintf("/tmp/%ld.tmp", time);
my $fn = shift || die "usage: $0 touch_file_name\n";
print $fn, "\n";

open FH, ">$fn" || die "open failure. $!\n";

print FH "REAL_USER_ID(UID) = $<\n";
print FH "EFFECTIVE_USER_ID(EUID) = $>\n";
print FH "REAL_GROUP_ID(GID) = $(\n";
print FH "EFFECTIVE_GROUP_ID(EGID) = $)\n";

close FH;
  • 実行結果
$ chmod u+s setuserid.pl
$ chmod g+s setuserid.pl
$ ls -l setuserid.pl
-rwsr-sr-x  ... setuserid.pl*
$ su xxxxx(別のユーザ)
$ ./setuserid.pl /tmp/hoge
Insecure dependency in open while running setuid at /.../setuserid.pl line xx.

perlsecにあるとおり、引数から渡されてきたものをそのままファイル名としてopen私用とすると、汚染されていると見なされ、上記のようなエラーになる。これを回避するには、正規表現をバイパスさせる手法がperlsecに挙げられている。

ここでは、ファイル名をtimeの秒数で生成するようにしてみる。

#my $fn = sprintf("/tmp/%ld.tmp", time);
my $fn = shift || die "usage: $0 touch_file_name\n";
→
my $fn = sprintf("/tmp/%ld.tmp", time);
#my $fn = shift || die "usage: $0 touch_file_name\n";
実行結果
$ su xxxxx(別のユーザ)
$ ./setuserid.pl
/tmp/1175567398.tmp
$ more /tmp/1175567398.tmp
REAL_USER_ID(UID) = 600
EFFECTIVE_USER_ID(EUID) = 500
REAL_GROUP_ID(GID) = 600 600
EFFECTIVE_GROUP_ID(EGID) = 500 600

とりあえず今回はここまで。setuid、難しい・・・。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-12-29 17:20:04
md5:473373bc63092913c67e4123b767e30a
sha1:6d8ab58052c5a521bb9633f1d32d5822dc7a557c

Perl/codepiece/manupilate_INC_by_FindBin  

所有者: msakamoto-sf    作成日: 2007-08-31 23:04:38
カテゴリ: Perl 

  • まずは動作確認。 FindBin01.pl
#!/usr/bin/perl
use strict;
use warnings;
use FindBin qw($Bin $Script $RealBin $RealScript);

print "Bin = ", $Bin, "\n";
print "Script = ", $Script, "\n";
print "RealBin = ", $RealBin, "\n";
print "RealScript = ", $RealScript, "\n";
  • 出力
$ perl FindBin01.pl
Bin = C:/in_vitro/perl/core_modules
Script = FindBin01.pl
RealBin = C:/in_vitro/perl/core_modules
RealScript = FindBin01.pl

実際にuse libを操作してみる。

  • use される test::Hoge パッケージ:./sample/lib/test/Hoge.pm
package test::Hoge;
use strict;
use warnings;
our $message = "Hello, test::Hoge!";
  • ./sample/FindBin02.pl
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;
use FindBin;
use lib File::Spec->catdir($FindBin::Bin, "lib");

use test::Hoge;

print $test::Hoge::message, "\n";
  • 出力
$ perl ./sample/FindBin02.pl
Hello, test::Hoge!
  • ポイント:FindBinを使うと、PHPでのrealpath(dirname(__FILE__))や、basename(__FILE__) と同等な出力を取得できる。
  • 実際に、そこからの相対パスを用いる場合、File::Spec->catdir()でシステムに合わせたパス文字列を生成し、設定している。
  • いずれもPerlのコアモジュールであるのが有り難い。

*1: CPANの方のページからソースを見てみると、require 5.000; という記述がある。

プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2008-12-28 23:06:26
md5:8a20d9b68ab447ac7d2557adfd00c08a
sha1:6c5e4c90cc139f3375b3f93319ae61d6ae74910d