サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
jehupc.exblog.jp
RichCopyとrobocopyを使ってみた で紹介した robocopy ですが、テストモードを使えばフォルダの比較ツールとしても利用できそうです。 フォルダ内のファイル比較ツールはいろいろあるんですが、ネットワーク越しの共有フォルダで数十GBものビジネスファイルの比較となると大抵のフリーのツールでは相当時間がかかるんですよね。 ところが、robocopyはそれらに比べかなり高速なチェックができました。 robocopy で /L オプションを付けるとテストモードとなり、コピーは行わずログだけの表示・出力になります。これでフォルダの差分がチェックできるわけです。 ただ完全なフォルダ比較ツールではないので出力されるログの情報も少ないですが、少なくとも差異があるファイル、タイムスタンプが異なるのかサイズが異なるのかコピー元コピー先どちらにあるのかなどの情報はでます。 例えば3流PGがバック
.NetからOpenOfficeのドキュメントを操作するための方法です。 OpenOfficeには UNO(Universal Network Objects) というAPIが用意されてるのでそれを使って操作できるようです。 (OpenOffice内のマクロも UNO 経由で動いてるっぽいです) UNO を .Net Framework CLI から利用するためのライブラリも用意されています。 まず、.Net から UNO 操作を行うために、OpenOffice SDK を入れます。 今回はここから、3.2の SDK をダウンロードしました。 下記の UNO 操作のライブラリを VisualStudio のプロジェクトフォルダにコピーして、参照設定を行います。 C:\Program Files\OpenOffice.org 3\URE\bin\ cli_uno.dll C:\Program
仮想化のキャパシティプランニングでそのサーバが実際どれくらい転送能力があるのかを測定する必要が出てきました。 (NICやスイッチは1Gbpsなんですが、実測は違いますからね。。) ということで使ってみたツールが Jperfというものもです。(ほんとに費用掛けて評価するならSmartBitsとかIXIAとかを使うこともできるんですが。。) これは Iperf というツールのGUI版みたいです。 (上記リンク先からダウンロードできるのはソースのみです。IperfのWindowsバイナリは Jperf の bin フォルダ内にありました。Linuxで使いたいときは #./configure → #make → #make install ってする必要があります。参考元:ネットワークのスループット測定Linux編(nuttcp、Iperfのインストール)) Javaで書かれてるのでJREが必要です
PHPで多分初めてSQLiteを使おうと思ってます。 SQLiteドライバから直接クエリを投げてもいいんですが、PDO(PHP Data Object)というDBアクセスの抽象化レイヤがあるみたいで、これを使うとどのデータベースを使っているかを気にすることなく使え、DBを移行した際にもさしてソースに変更加えなくていいようです。 (ただし、O/Rマッピングをしてくれるわけではないので、完全な抽象化をしたければCakePHPのようなフレームワークを使った方がいいかもしれません。) DBファイルやテーブルの作成自体は、SQLiteManager を使いました。 なお、PDOを使うにはDBごとにPDOのモジュールがインストールし、php.iniで使うように設定しなければなりません。(まぁ大抵のレンタルサーバはsqlite2のPDOモジュールは入ってると思いますが。。。) まず接続は PDO クラス
以前の記事に書いたように、共有フォルダ上の.Netアプリケーションを動かすには caspol による設定と、(場合によっては)共有フォルダのあるサーバをイントラネットとして定義する必要があります。 本来は、Windows自身が正しくアドレスを解釈して、イントラネット・インターネットを判断すべきなのですが。。 その点ついて、IEやエクスプローラがどのようにゾーンをイントラネット、インターネットと判断してるのかは@IT:検証 IEの自動Proxy設定とセキュリティ・ゾーンが参考になります。 また、MS自身がアドレス形式によってイントラネットがインターネットゾーンとしてしまうことも、MSサポート:FQDN または IP アドレスを使用すると、イントラネット サイトがインターネット サイトとして識別されるにて認めています。 さて、本題ですが、いちいちクライアントPCのインターネットオプションからL
ずいぶん前の記事、cron & シェルスクリプト でバックアップ用のシェルスクリプトを書きました。 設定ファイル(bksrc.dat)にバックアップ元ディレクトリパスと、バックアップ時の接頭ファイル名を定義し、ファイル名に日付を埋め込んでtgzファイルにバックアップするというものでした。 しかし、世代管理の仕組みをいれてなかったので、ずっとバックアップが溜まり続けます。 ということで、古くなったバックアップファイルを削除する処理、そしてエラーがあったらメールを飛ばす処理を追加してみました。 メインのバックアップスクリプト(/root/sh/bkup.sh)は下記のようになります。 #!/bin/sh #このスクリプトのパスを取得 MYPATH=$(cd $(dirname $0);pwd) #世代管理(何日分残すか) DAYAGO="7" #-------バックアップ処理------- #
WEBアプリケーションでは、XSSとSQLインジェクション対策等のセキュリティリスクを軽減するためにサイニタイズが必須です。 (PHPでの一般的なサニタイズ方法は、(PHP)XSSとSQLインジェクション対策を参照) さて、テンプレートエンジンに Smarty を使ってて、表示データをアサインして表示するときにサイニタイズする方法です。(出力時のサイニタイズ) Smartyには、エスケープ処理の機能が実装されており、これを使うことで、HTMLタグを適切にエスケープしてくれます。 使い方はこんな感じです。 ○Smartyテンプレート <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head></head> <body> {
今回下記のように3つのネットワークをルーティングさせる必要がでてきました。 更に、LAN1側のあるサーバに対して、LANからは192系のアドレスでアクセスさせるようにするため、静的NATを定義します。 LAN1 10.10.0.0/24 LAN2 192.168.0.0/24 LAN3 10.0.0.0/24 そこで、ヤマハのRTX1100を使ってルーティングしてみました。 RTXシリーズのルータはリモートアクセスやVPN等多彩な機能を持っている名機みたいです。 実は3流PGは業務系ルータの設定変更するのははじめてだったりします。 設定はTELNETとシリアルコンソールからできます。 しかし、TELNETはIP振ってないことにはアクセス出来ません。 ということで、シリアルポートをもつPCとRTX1100をRS-232 9pinケーブルで接続します。(RS232はクロスケーブルである必要があ
(Linux)CentOSでちょっとトリッキーなNATルータを構築してみたに似たようなネットワークをRTXルータを使って構築することにしました。 上記の記事の時との違いは、ルーターが静的NATだけでなく、IPマスカレード(NAPT)+DHCPの機能を提供します。 また、インターネット側への通信ですが、ネットワークBからはping,http,https,dnsのみ許可すると共に、ネットワークA側への通信(DNS以外)は許可しない設定とします。 静的NAT+IPマスカレードの設定 まずは静的NAT+IPマスカレードの設定ですが、以下のようにしました。 ip routing on ip route default gateway 192.168.0.2 ip lan1 address 192.168.1.1/24 ip lan3 address 192.168.0.1/24 ip lan3 na
(WindowsServer2008R2)GACに.Netアセンブリを登録したいがassemblyフォルダへのドラッグで拒否られる WindowsServer2008 R2 のサーバで、.Net のアセンブリをGACに、C:\Windows\assembly フォルダへのドラッグアンドドロップで登録したかったんですが、結構ハマリました。 (エクスプローラからのGACからのアンインストールも同様だと思います。) 原因はUACです。まぁUAC切ればいいんですが、本番稼働中のRDSサーバのためそうはいきません。 Administratorsグループのユーザで、普通にドラッグアンドドロップすると下記のように怒られます。 アセンブリキャッシュビューア - インストールできませんでした。 アクセスが拒否されました。 Windowsエクスプローラ(explorer.exe)を右クリック→"管理者として実
最近あまりネットワーク関係から離れてたので、基本用語も忘れかけの今日この頃です。 サーバ室とかに置くような基幹ハブはやはり性能や安定性を重視しないといけないわけで。。。 ということで、スイッチングハブ(L2スイッチ)についてちょっと調べてみました。 L2スイッチの種類 まず、よくWEBカタログでスイッチングハブの分類としてよく見かける用語として、「インテリジェント・ハブ」、「スマート・スイッチ」というのがあります。 インテリジェントハブというのはSNMPエージェント機能を持つということを知っていましたが、スマートスイッチというのはあまり聞いたことがありませんでした。 調べてみると、スマートスイッチとはVLANやQoS、認証に対応したスイッチのようです。WEB管理画面を持ってるのもあるようですね。 つまり、機能順的に インテリジェントスイッチ ← スマートスイッチ ← 普通のスイッチ となる
CentOS5上にインストールした Tomcat6 でSSL通信を行うための方法です。 (Linux上へのTomcat6のインストール方法はCentOS5.3 に Tomcat6 を入れてみたで書いています。Tomcat起動停止スクリプトもここで作成したものを使うこととします。) まず SSL 通信に用いる為の鍵をJDK付属の keytool を使って作成します。(LinuxでのJDKのインストール方法は(Linux)Java Web Start補足1[Sun製Javaのインストール。]で書いています。) # cd /usr/java/jdk1.6.0_21/bin # ./keytool -genkey -alias tomcat -keyalg RSA キーストアのパスワードを入力してください: ←キーストアのパスワードを任意で入力 新規パスワードを再入力してください: 姓名を入力して
Linuxのディストリビューションの比較をするために、一台に複数のLinuxをインストールしてみました。 で、ハマったのがブートローダの設定です。 とりあえず、最初にUbuntuの軽量版 EcoLinux10.04 をインストール後、PuppyLinux4.31 を入れ、Ubuntu10.10を入れました。PuppyLinuxのインストールモードは FRUGAL(簡易インストール)です。(ブートローダはEcoLinux付属のGRUBをHDDのMBRに設定しました。) PuppyLinuxインストール後にGRUBのmenu.lstにブートの設定を加えろとあったんで、EcoLinux側の/boot/配下を探したんですが、menu.lstのファイルが見つかりません。 どうやら、Ubunto9.10あたりから、GRUBのバージョンが1.9系(いわゆるGRUB2)に変わったようです。 以前Windo
物理PCのハードディスクを仮想ハードディスク(VHD)に変換するでは、Disk2vhd というP2Vツールがあることを書きました。 たしかにWindows2003やXPはDisk2vhdを使って簡単に仮想環境に移行できたのですが、今回Windows2000のPCを仮想化しようとしてハマりました。 Disk2vhdはWindows2000では動かないのです。 それで、窓の杜で紹介されていた Paragon Go Virtual というP2Vソフトも試してみましたが、実行中に The operation Copy partition needs exclusive access to the volume C: and cannot be completed. というエラーになります。どうやら別アプリがディスクにアクセスしており排他アクセスができないとのことです。 exeを落としたりサービスを
(.Net)DataGridViewでカスタムクラスをバインドした状態でソートを行う。 DataGridViewで、カスタムクラス(独自クラス)のリストをバインドすると、ソートができません。 ソートグリフ(列ヘッダに表示される▽△マーク)も表示されません。 例えば下記のようになカスタムクラスのリストをDataGridViewにバインドするコードがあるとします。(C#) (文字数制限のため今回はハイライトなしです。) public partial class Form1 : Form{ private void Form1_Load(object sender, EventArgs e) { //カスタムクラスのリスト生成 List<TestClass2> lstCls = new List<TestClass2>(); lstCls.Add(new TestClass2("001", "b
会社で、何故かバッファローのLinkStation LS-WXL/R1シリーズを使ってます。 LS-WXL/R1については〈リンクステーション〉 RAID機能搭載 ネットワーク対応HDD |LS-WXL/R1シリーズ、【清水理史の「イニシャルB」】 第380回:高速化され実用性がアップしたRAID 0/1対応NAS バッファロー「LS-WXL/R1シリーズ」 -INTERNET Watchを参考。 信頼性を高めるためにRAID1(ミラーリング)構成で使っていました。 しかし、ある日突然アクセス不能に。。。背面電源スイッチでシャットダウンを試みようとしましたが、シャットダウンが始まる気配が有りません。 バッファローのサポートに電話して、10数分待ってようやくつながったサポート担当者に問い合わせてみました。 ファームウェアが故障したスタンバイモードと、機器の故障のハングアップのどちらかの状態で
メインPCの空きが少なくなってきたので、WESTERN DIGITAL WD20EARSを購入しました。 WD20EARSには、500GB/プラッタx4 の分と667GB/プラッタx3 の物がありますが、もちろん後者(WD20EARS-00MVWB0)のほうです。 ベンチマーク Seagate Barracuda LP 1.5TBモデルをベンチマークしてみたで500GBプラッタのSeagateのHDDのベンチマークを載せていますが、あのデータに今回のWD20EARSを追加してみたいと思います。 (Intel X25-Mをベンチマークしてみたで測定したSSDの結果も反映してみました。) やはり、667GB/プラッタは高速ですね。 回転数では Seagate Barracuda LP ST31500541AS を下回っていると思われるものも、キャッシュサイズ(64MB)とプラッタ密度でカバーし
今まで、例えばジェネリック型のListクラスのFindメソッドなどの述語として用いる部分でしかデリゲートは使っていませんでした。(それらも主に匿名メソッドを使ってきました。匿名メソッドを使った例は、(vb.net)VB.NetではList.Findとかのデリゲートの実装が必要なメソッドは使えない!/a>,(.Net)List.Sortの使い方,(.Net)Stringの仕様にやられた 等を参照。) しかし、よーやくデリゲートを自作するメリットがようやく分かってきました。 (デリゲートとは、メソッドを参照するための型で、変数にメソッドを入れるようなものです。関数ポインタをイメージするといいかもしれません) 例えば下記のような処理があるとします。 private void button1_Click(object sender, EventArgs e){ //共通処理 //このメソッド独特の
今回したいのはLinux使用時にも、LinuxのログオンではActiveDirectoryに登録したユーザ名・パスワード(ドメインユーザ)情報を使いたいということです。 LinuxとActiveDirectoryの認証統合にはパスワードだけの統合とユーザ名も含めた統合とがあります。 前者の場合はLinuxマシン上にActiveDirecotory上に存在するのと同じユーザ名のユーザを作成し、パスワードだけActiveDirectoryのドメインコントローラに問い合わせるというものです。 後者はLinuxマシン上にユーザ情報を持たず、全てActiveDirectoryに問い合わせるというものです。 当然前者はそのLinuxPCを使うと想定されるユーザを前もって登録しないといけないのでメンテナンス性に優れません。 ということで、今回は後者の方法を試してみました。 試したLinuxは Ubunt
レンタルサーバでPHPの内部エンコーディング(mb_internal_encoding)が、作成しているPHPのエンコーディングと異なっていると文字化けになってしまいます。 特に厄介なのが、フォームのデータをPOSTで受け取るときです。 今回レンタルサーバ側のPHPは EUC-JP , 作成中のPHPスクリプト、HTMLは UTF-8 となっています。(UTF8の方が汎用性高いんで。。) 文字化けを防ぐために、PHP側で下記のようにしていました。 header("Content-type: text/html; charset=UTF-8"); mb_language("Japanese"); mb_internal_encoding("UTF-8"); しかし、これでもPOSTデータから受け取った文字列は文字化けしています。 mb_detect_encoding 関数で調べると、やはり
(Linux)ActiveDirectory連携したSambaサーバでWinクライアントからSamba共有フォルダにシングルサインオン (Linux)SambaでActiveDirectoryと連携する で、Linux(CentOS5.5)でSambaサーバを建てたときにパスワードの認証だけActiveDirectoryを使うということをしました。 しかし、この方法だと、WindowsクライアントからSambaサーバを使うユーザを、Linuxにいちいち登録しないといけません。 登録したとしても、Windows端末からSambaにアクセスすると、認証ダイアログボックスが表示されます。 Winbindを使うと、ユーザ情報もADを使えるので毎回Linuxに登録する必要がなくなり、Windows端末からのアクセス時にも、現在ログインしているユーザで認証を自動的に行うので認証ダイアログボックスが表示
シェルスクリプトにおいて、複数のコマンドを連結して処理するときに、「;」「&」「&&」「||」が使えるですんが、それぞれがどのような動きするかまとめてみました。 ;(セミコロン) 前のコマンドが終わり次第、次のコマンドが実行される。(3つ以上のコマンドを連結してOKみたい) #command1 を実行し、実行後 command2 を実行する。 command1 ; command2 &(アンパサンド) ;(セミコロン)は前のコマンドの完了を待っていたが、&は待たない。 #command1 を実行しながら、command2 を実行する。 command1 & command2 && 前のコマンドがうまく終了した(終了ステータスが0)なら、次のコマンドを実行。そうでないなら次のコマンドは実行しない。 #command1 が 0 を返した場合、command2 を実行 command1 && c
PDO経由でSQliteを使おうと思ってます。 Insert文で使う予定なんですが、汎用性を出すために、列名、値それぞれを配列に格納し、名前無ププレースホルダのSQLを生成して、それにbindParamメソッドでパラメータをセットしていきます。 それで当初下記のようにしていました。 /* DBにデータを追加するSQL文 * $tbl:テーブル名 * $clm_ary:列名の配列 * $value_ary:値の配列($clm_aryの要素Noにあったデータを入れること) */ function Add($tbl,$clm_ary,$value_ary){ try { //sql文組立て $sql_part1 = ''; for ($i = 0; $i < count($clm_ary); $i++) { $sql_part1 = $sql_part1 . ' ? '; if( $i < co
LinuxでSubVersionを構築しEclipse Subversive から使うではSubversionの認証としてBasic認証を使ってましたが、Windowsドメインを建てているということで、ActiveDirectoryを使って認証してみました。 環境はApache2.2 , CentOS5.5で、ドメインコントローラはWindowsServer2003です。 SubversionはApacheコンポートネントとして動かしているため、普通のWEBサーバとしての認証でも使えるかと思います。 ActiveDirectoryとの認証方法はいくつかあるようですが、今回はLDAPでの認証を試しました。 (LDAPを使ってもAuthTypeはBasicでないといけないのでパスワードは平文で流れてしまいます。) LDAPでActiveDirectoryの認証情報を使うには、下記のように設定フ
Redhat系Linux CentOS には Logwatch というログ監視ツールが入っており、毎日の結果をCentOS内部の root ユーザにメールの形で送っています。 しかし、いちいちLinuxサーバにログインしてrootのメール見るは鬱陶しいということで、このroot宛てのサーバ内部からのメールをGmailに転送しようというのが今回の要件です。 送信元MTAにはデフォルトの sendmail を使うので、sendmail の設定が必要となります。この設定方法は sendmailからGmailへメールを転送する方法 : カブに乗ったプログラマとSendmailでGmailに転送 - みゃあの主記憶装置 が参考なりました。 以下ほぼコピペですが、一応メモしておきます。 GmailはSMTPにSubmission(ポート587)で、SMTP認証とTLSを使っているので設定が結構厄介です
まず、RTT(往復遅延時間)というのはパケットを送信して受信した側が送信側にACKパケットを送り、送信側でそれを受取るまでの時間です。 ネットワーク疎通テストに使う ping も結果に RTT が表示されますよね。(XP だと下記の time のところです) >ping 10.0.120.1 Reply from 10.0.120.1: bytes=32 time=38ms TTL=54 さて、これとは別にTCPプロトコルにはウィンドウサイズというものがあります。 TCPは確実にパケットが届いたかどうかを確認するため、受信側が送信側にACKパケットを返すわけですが、毎回のパケット一つずつにACKを返すと非常に効率が悪いため、送信側が複数のパケットを送信し、その複数パケットに対してまとめて1回のACKを返すという仕組みをとってます。 この"複数のパケットの単位"がウィンドウサイズになるわけで
netstat -an で現在のセッション情報が見えるわけですが、とある Windows サーバでかなり TIME_WAIT が発生してました。 netstat のステータスで LISTENING が待ちうけ中、ESTABLISHED が通信中(コネクション確立)ってのは知ってたんですが、TIME_WAIT ってのはよくわかってなかったので調べてみました。 ということで、まずTCPでのコネクションの確立と切断処理を@IT:連載 基礎から学ぶWindowsネットワーク 第16回 信頼性のある通信を実現するTCPプロトコル(3)で確認します。 ↑には分かりやすい状態遷移図があるので非常に参考になります。 これを見ると TIME_WAIT というのはコネクションのアクティブクローズ時(自身から切断要求時)に、コネクションしてたのと同じポートが再利用されないための待ち時間のようです。 この待ち時間
本来コピーコマンド cp に -f を付けると強制的に上書きできるはずなんですが、CentOS 5.4 だといちいち上書き確認してきます。 で、調べてみるとどうやらエイリアスが効いてみたいです。 aliasコマンド叩くとこうなりました。 [root@localhost log]# alias alias cp='cp -i' alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' -i のオプションが付いています。これで上書き確認が強制され
ドメインに参加してないPC上で動く.Netアプリケーションから、ドメイン内のファイルサーバにアクセスしたいと言う要件です。 当然.Netアプリケーション内で共有フォルダの認証を行わなくてはなりません。 で、調べるとプログラム上で認証情報(アカウントとパスワード)をセットして、ネットワーク上に共有されたファイルをコピーする - ComponentGeek Articleにどんぴしゃな情報が載ってました。 .Net のクラスライブラリ自体にはそのような機能は提供されてないようなので、Windows API を使うことになるようです。 WNetAddConnection2 というAPIと WNetAddConnection3 というAPIがあるようです。違いは後者は"ネットワーク資源のプロバイダがダイアログボックスのオーナーウィンドウとして利用できるウィンドウのハンドルという1つのパラメータが追
次のページ
このページを最初にブックマークしてみませんか?
『old_3流プログラマのメモ書き』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く