自分用のメモ
ニュースを巡回して、気になるキーワードやわからない単語をメモ。
さくらエディタよいすなー
「JGrepper」OfficeとPDFもGrepできるのはアツイ
「WinSCP」FTPがだめでSSHってどんなケースだろう
→なるほど、FTPは平文でやりとりするからだめなのか。SSL通信にしてたらSSHと一緒かな
SSHもセキュリティの脆弱性があるとな。うーむ、こういうのよくわからん。
C#たんと学ぶ/わりと硬派なソフトウェア開発講座
http://codezine.jp/article/detail/5346
フレームワークをベースに学んでいくとな。
中身はほんとに硬派な模様。あとで読んでみよう
読んでみた。最終ページのC#たんの劣化が残念だ。。。
内容はまじめでした。WCF勉強しようかね
連載:C# 4入門
http://www.atmarkit.co.jp/fdotnet/csharp4/csharp4_04/csharp4_04_01.html
C#は3.0までだったからちょっと置いてけぼり喰ってる。
引数の省略できるようになったとな?VB.NETでも多用してるからうれしいなー
省略時のデフォルト値は呼び出し側に記録されるから、デフォルト値変更時は
呼び出し側も際コンパイルが必要とな。なるほど。
メモリの使用についての言及も勉強になった。微々たる差の気もするが、多用できないのね。
ASP.NET MVC 3のGo-Liveライセンス
http://www.infoq.com/jp/news/2010/10/MVC-3-Beta
“Razor”の紹介 − ASP.NET向け新ビュー・エンジン − @IT
http://www.atmarkit.co.jp/fdotnet/scottgublog/20100714razor/razor.html
Razor:ASP.NETのビューエンジンの1つ
ほかには、SparkやNHamlなど。
かなり使いやすそう見やすそう!!ほかのエンジンも含め勉強してみよう。
「Go Live」ライセンス
ベータ版の製品で開発したアプリケーションを、そのまま実際の本番環境で運用することを許可するライセンス。
ベータ版は実運用で使っちゃだめなんですね。ライセンス関係も疎いですな。。
【元麻布春男の週刊PCホットライン】 次世代CPUが求めるアプリケーションの並列化
http://pc.watch.impress.co.jp/docs/column/hot/20101020_401151.html
Cilk
HPC
InfoQ: Microsoft .NETでの並列プログラミング
http://www.infoq.com/jp/news/2010/10/Parallel-Programming-.NET
メニーコアの時代、並列プログラミングの知識は持っておいたほうがいいかな
既存OOPとの統合アドバイスとかも書いてあるとな
デザインパターンって、勉強になるよね
InfoQ: Scalatra: Sinatraに似たScalaのウェブフレームワーク
http://www.infoq.com/jp/news/2010/10/scalatra
Scala
RubyのフレームワークであるSinatra
ガチガチセッションステートは僕も敬遠したい。HTTPってシンプルなのにややこしくしてどうするよ。
キュー構造をJavaで実装してジェネリック型を理解する (1/3) - @IT
http://www.atmarkit.co.jp/fjava/rensai4/java5eclipse19/java5eclipse19_1.html
こういう修正のステップを踏む形式のレクチャって勉強になるよねー。
以上、自分用のメモ
StandardServer.await: create[8005]
Tomcatをインストール後、サービスを起動しても以下のエラーが出て起動できなかった。
致命的: StandardServer.await: create[8005]:
java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.(ServerSocket.java:185)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:373)
at org.apache.catalina.startup.Catalina.await(Catalina.java:662)
at org.apache.catalina.startup.Catalina.start(Catalina.java:614)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
このエラーは、すでにTomcatサービスが起動している場合に起こるそうだが、サービスをみても確実にTomcatは起動していない!
と思ったら、VMWare ServerがTomcatを使用していた。
VMWare Serverはもう使っていないので、VMWare Serverのサービスを停止したら起動した
サービス名:VMware Server Web Access
System.ArgumentException: 型 'System.Int32' のオブジェクトを型 'System.Decimal' に変換できません。
Reflectionを使って、Decimal型のフィールドにプリミティブな数字をセットできない?!
理由は、Decimalはプリミティブな型ではなく、中間コードでは擬似コードに変換されてるみたいです。
http://kekyo.net/kekyo/MoreDeepDotNET/Reflection/Reflection3.htm
↑参考になりました。ありがとうございます。
Decimal型にキャストしたらいけるのかな。。。
Visual Studio 2010 Express がダウンロードできない
Visual Studio 2010 Expressがリリースされましたね!
http://www.microsoft.com/japan/msdn/vstudio/express/
さっそくインストールしようとしましたが、
Webインストールのリンクをクリックしても、
http://search.microsoft.com/?mkt=en-US
に飛ばされてダウンロードができません。。。
理由は簡単でした。
ブラウザに言語が設定されていない場合、ダウンロードが始まらず
別のページに飛ばされるみたいですね
いやーはまった。
iBATISでNpgsql2.xを使う。
iBATISの設定方法は以下を参考にさせていただきました。
http://d.hatena.ne.jp/gsf_zero1/20070930/p1
まず、以下のDLLの参照追加*1
Npgsql.dll Mono.Security.dll
SqlMap.configに設定を記述する。
<?xml version="1.0" encoding="utf-8"?> <sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!--DBのユーザ命などは、別ファイルから取得するように設定--> <!--SqlMap.config中の${〜〜〜}は、下記ファイルで記述した値に置換されます。--> <properties > <property resource="./setting/properties.config"/> </properties> <settings> <setting useStatementNamespaces="true"/> <setting cacheModelsEnabled="false"/> <setting useReflectionOptimizer="true"/> <setting validateSqlMap="true"/> </settings> <providers resource="${root}\setting\providers.config"/> <database> <provider name="${provider}"/> <dataSource name="${DatasourceName}" connectionString="Server=${server};Port=${port};Database=${Database};User Id=${UserId};Password=${Passwd}"/> </database> <sqlMaps> <!-- ログイン --> <sqlMap resource="${root}\SQL\login.xml" /> </sqlMaps> </sqlMapConfig>
なお、分散トランザクションを使う場合は、connectionStringに"Enlist=true"を記述。
connectionString="Server=${server};Port=5432;Database=${Database};User Id=${UserId};Password=${Passwd};Enlist=true"/>
properties.configを書いておきます。
SqlMap.configの${〜〜〜}を置き換える値を定義しています。
<?xml version="1.0" encoding="utf-8" ?> <settings> <!--共通項目--> <add key="provider" value="PostgreSql2.0.2.0"/> <add key="root" value="C:\MyProject" /> <add key="server" value="localhost"/> <add key="port" value="5432"/> <add key="Database" value="test_db"/> <add key="DatasourceName" value="test_db"/> <add key="UserId" value="test_user" /> <add key="Passwd" value="12345"/> </settings>
providers.configを、下記のようにする。
*2
<?xml version="1.0" encoding="utf-8"?> <providers xmlns="http://ibatis.apache.org/providers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <clear/> <provider name="PostgreSql2.0.2.0" description="PostgreSql, Npgsql provider V2.0.2.0" enabled="true" assemblyName="Npgsql, Version=2.0.2.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" connectionClass="Npgsql.NpgsqlConnection" commandClass="Npgsql.NpgsqlCommand" parameterClass="Npgsql.NpgsqlParameter" parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType" parameterDbTypeProperty="NpgsqlDbType" dataAdapterClass="Npgsql.NpgsqlDataAdapter" commandBuilderClass="Npgsql.NpgsqlCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="true" parameterPrefix=":" allowMARS="true" /> </providers>
以上で完成です。
特定のディレクトリのアクセス権限をプログラムから調べる
フォーム認証とロールのアクセス制御を実装してみたが、
アクセス制御が設定されたページへのリンクなども、リンク先のディレクトリのアクセス制御によって、
表示/非表示を切り替えるようにしたい。
そのための、プログラムから現在のユーザがあるディレクトリへのアクセス権限があるかどうかを調べるコード。
Public Function CheckRoleFromPathForUser(ByVal mapPath As String) As Boolean '指定したディレクトリのweb.configの設定を取得 Dim configuration As System.Configuration.Configuration = _ WebConfigurationManager.OpenWebConfiguration(mapPath) 'アクセス権限のセクション取得 Dim authorizationSection As AuthorizationSection = _ CType(configuration.GetSection("system.web/authorization"), AuthorizationSection) 'ロールのString配列取得 For Each rule As AuthorizationRule In authorizationSection.Rules 'ロールの許可アクションの場合 If rule.Action = AuthorizationRuleAction.Allow And rule.Roles.Count <> 0 Then 'ロールに所属するか否か For Each role As String In rule.Roles If HttpContext.Current.User.IsInRole(role) Then Return True End If Next End If Next Return False End Function
使うときは下のように。
If Not CheckRoleFromPathForUser("~/MyPractice") Then HyperLink1.Visible = False End If