現在編集中ファイルをバックアップするemeditorマクロ
マクロ第二段です。現在編集中ファイルを保存してそのコピーを同フォルダに作成します。
サンプルソースほぼ引用なので、この場で公開するに留めておきます。
このマクロの発展案として、一定数たまったら別の保管用フォルダに移動する処理を入れたりしようかと考えています。
(function(){ var $d = document; var $s = $d.selection; try{ var org = $d.FullName; $d.Save(org); var bk = org + "_" + new Date().getTime() + ".bk"; var fso = new ActiveXObject( "Scripting.FileSystemObject" ); fso.CopyFile(org, bk); }catch(e){ alert("バックアップに失敗(" + e.message + ")"); } })();
選択範囲の指定列に連番をInsertするemeditorマクロ
EmEditor既存機能で「番号の挿入」が存在しますが、
自分の思っているのとすこし違っていたので、欲しかった動きをするマクロを組んでみました。
公式サイトに登録させてもらいましたので、下記URLから取得できます。
ジェネリックな各種リストをスレッドセーフに扱う
その1
System.Collections.ICollectionインターフェイスにキャストすることで、SyncRootにアクセス可能。これでlockを行うことができる。
//こんな感じ var list = new List<String>(); lock (((System.Collections.ICollection)list).SyncRoot) { list.Add("アイテム1"); }
ExpresswebのSQLServerでメンバシップ機能を使用する
web.config設定について
ビルド別に使用DBを分けたい場合(例えば、デバッグ時はローカルの*.MDFを使用。本番環境はホスティング先SQLServerを使用する。)
Web.Release.configにホスティング先SQLServerへの接続文字列設定を書くことで切り分けができる。
<?xml version="1.0" encoding="utf-8"?> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <connectionStrings> <add name="<設定名>" connectionString="Server=<サーバー名>;Database=<DB名>;Uid=<ユーザー>;Password=<パスワード>;" providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" /> </connectionStrings> </configuration>
ExpresswebでSQLServerCe4を使用する
- VisualStudio2010 Pro SP1
- ASP.NET MVC 3 Webアプリケーション
- ターゲットフレームワークは.NET4
- ADO.NET Entity Data Model
で確認
はじめに
SQLServerは3つまでしかDBを作成することができない。これは嬉しくないのでSQLServerCompact4を使うことにした。
インメモリデータベースを使うのは初めてで、現状はホスティング先で使用可能であることを確認しただけなので、
これから先色々SQLServerCe4に起因する事象が発生すると思われる。
Web.config
コネクション文字列
*sdfを作成してテーブル作成、それを使用してモデル作成しただけなのでVSによる自動生成されたものを使用している。
<configuration> <connectionStrings> <add name="Database1Entities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=|DataDirectory|\Database1.sdf"" providerName="System.Data.EntityClient" /> </connectionStrings> ... </configuration>
アセンブリバージョン指定
こんな感じで指定する。
<configuration> ... <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" /> <bindingRedirect oldVersion="4.0.0.0" newVersion="4.0.0.1" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
SQLServerCe4アセンブリファイルの配置
Expresswebにはインストールされていないようなので、アセンブリファイル一式もアップロードしてやる必要がある。
<SQLServerCe4のインストールフォルダ>/private フォルダ以下すべてのファイルをMVCプロジェクトのbinフォルダにコピーする。
ファイルのプロパティ(ビルドアクション,ディレクトリにコピー)は特に変更していない。
配置後作業
アプリケーションデプロイ後jに *sdfのパーミッション設定を行う必要がある。
ブラウザからsdfファイルへアクセスはできなさそうなので、とりあえずはこれでよしとする。
TrueCryptでマウント時にフォルダ共有したい
マウント時に行う処理を指定するといったことが、TrueCryptではできなさそうなので、
バッチファイルを作成し、それを実行させることで対応した。
マウント&共有フォルダ作成
<...>は各自環境に置換してください。
cd <ボリュームファイルのフォルダ> "<TrueCrypt.exeフルパス>" /v <ボリュームファイル> /l D\ /a /p "<パスワード>" /q net share <共有名>=<共有フォルダパス> /grant:everyone,full
アンマウント
アンマウントすると共有解除されるっぽい。
"<TrueCrypt.exeフルパス>" /d D /q