2013年6月17日月曜日

Oracle スキーマ内のオブジェクトの全コンパイル

Oracle内スキーマの、全オブジェクトをコンパイルするコマンド。

begin
  UTL_RECOMP.RECOMP_SERIAL('TARGET_SCHEMA_NAME'); 
  --TARGET_SCHEMA_NAME is compile target schema name 
end;



2013年6月6日木曜日

ASP.NET MVC4でSignalRを使用する

ASP.NET MVC4でSignalRを使ってみた。

空のプロジェクトで作成するとどうにもうまく動かないので、基本のサイトで作成してから余分なパッケージやファイルをがさがさ削るという方法で、一番シンプルな形に落ち付けた。

https://github.com/icoxfog417/SignalRonMVC4

Appharborでのデプロイも検証済みなので、無料でサービス公開も可能です。

http://signalronmvc4.apphb.com/



プロキシサーバー下でのGitの設定

プロキシサーバー内でGitの設定を行う場合、http.proxyを設定します。

git config --global http.proxy proxy.host:8080

認証がある場合は、ユーザーID:パスワードを先頭に追加し、@で区切る

git config --global user:password@http.proxy proxy.host:8080


ん?パスワードに@があってうまくいかん!という場合は@をURLエンコードした値(%40)を使用する。
例えば、ユーザーID = user パスワード=p@sswordである場合、以下のように設定する。

git config --global user:p%40ssword@http.proxy proxy.host:8080

設定値は git config --global --list で確認可能。

2013年4月30日火曜日

DOSバッチでの曜日計算 ツェラーの公式

DOSバッチで、日曜の夜だけ特定処理を実行させたいなど、曜日判定を行いたい場合に使用


REM 今日の曜日の算出(ツェラーの公式)


set /A YYYY=%DATE:~0,4% * 1
set /A MM=%DATE:~5,2% * 1
set /A DD=%DATE:~8,2% * 1
echo Today : %YYYY% %MM% %DD%

if %MM% LEQ 2 (
set /A YYYY=%YYYY% - 1
set /A MM=%MM% + 12
)

set /A YOBI=(%YYYY% + %YYYY% / 4 - %YYYY% / 100 + %YYYY% / 400 + (13 * %MM% + 8) / 5 + %DD%) %% 7

if %YOBI% == 0 echo 日
if %YOBI% == 1 echo 月
if %YOBI% == 2 echo 火
if %YOBI% == 3 echo 水
if %YOBI% == 4 echo 木
if %YOBI% == 5 echo 金
if %YOBI% == 6 echo 土

  (参考)http://ja.wikipedia.org/wiki/%E3%83%84%E3%82%A7%E3%83%A9%E3%83%BC%E3%81%AE%E5%85%AC%E5%BC%8F

2013年3月3日日曜日

JavaScript で Decimal 型を実現する

JavaScriptでは数値が全てfloatなので、単純な計算でも結構誤差が出て困ることになる。
検索してもこれといった解決策がなかったので、jasmine入門がてら簡単なクラスを作成した。

<GitHubリポジトリ>
https://github.com/icoxfog417/simple_decimal

よくも悪くも単純であります。


2013年1月13日日曜日

GitHub リポジトリ内のソースコードの検索を行う

GitHubのリポジトリであのメソッドの定義を確認したい、ということが少なからずあるが、標準の検索で引っかからず仕方なくfork/cloneする・・・めんどくさい!と思ったことはないだろうか。

そんなときに仕えるのがAdvanced Searchのオプション。リポジトリ内のソースは以下のように検索できる。

repo:lift/framework  AddUserMenusAfter
例:Liftフレームワーク内のAddIserMenusAfterの定義を検索

repo:ユーザー名/リポジトリ名 検索キーワード で検索ができる。上記の例をそのまま検索窓に入れるときちんと検索されるはず(なぜか何個も引っかかるが・・・)。

これ以外にもいくつか使えるオプションがあり、それは こちら 参照(使えんオプションが多いのは気のせい?)。

これでわざわざローカルに落とす手間が省けます。

<参考>
Search code inside a Github project


2013年1月11日金曜日

TryAndError Appharbor でEntityDataModelを使用する

AppharborでEntityDataModelを使用する際にはまったポイントについてつらつらと書いていきます。

1.DateTime型を使ったらエラーで怒られる
これはAppharborとは関係ないが、モデルでDatetime型の項目を使用していると登録時に「Datetime2 データ型から datetime データ型への変換の結果、範囲外の値になりました」というエラーが出る

原因はよくわからんが、Nullを許可するDatetime?型だとこれを回避できるらしい(VB.NETだとNullable)。

2.DBが最新でないみたいなエラーが起きる
モデルを変更後、マイグレーションをしていないとこのエラーが起こる。

The model backing the 'YourContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).

マイグレーションの方法は こちら 参考。EntityDataModelインストール済みなら以下のコマンドを打てばいい。

Add-Migration マイグレーション名
Update-Database 


3.本番であるAppharborと開発環境でConnectionStringを変えたい
これにはWeb.Release.Configを使用する。デフォルトで作成されているので中身を見れば記入方法は分かるが、Release環境時にWeb.Configの値を置き換えることが可能。

 <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" 
  xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>

ポイントは青字部分で、これでWeb.Config上のnameが一致するものを置き換えてくれる。


4.テストプロジェクトがあるがデプロイ時自動で走るのでこれをやめたい
Appharborへデプロイする際は、テストプロジェクトがあるときそれが実行される。これはこれでいいのだが、DBへアクセスするテストがある場合有難迷惑なのでデプロイ時テストプロジェクトをはずしたいことがある。

こうしたときは、既存のソリューションファイル(.sln)をコピーし Appharbor.sln というファイルを作成し、これを編集しテストプロジェクトを除外する。

Appharbor上では、Appharbor.slnがあればそちらが優先される。


5.ProviderManifestTokenから文字列が返されませんでしたエラーが出る
EntityDataModelはデフォルトでデータベースの作りかえを行うが、普通Appharbor上で使用するDBのアドオンでそんなこと許されるわけないので、DBの作り返しを行わないよう、Global.aspxのApplication_Start でInitializorの設定を行う。

Database.SetInitializer<YourContext>(new CreateDatabaseIfNotExists<YourContext>());

CreateDatabaseIfNotExistsが肝。あとは、ConnectionString aliasにconnectionStringのnameを設定しておく。

とりあえずこれで解決した。こちらのサポートのやり取りを参照。



まだ追記するかもしれないが、とりあえずこれくらいか・・・。こういうところはさくっと行ってほしいんだがな~