2016年4月28日木曜日

WIndows10に何としてもNETFramework3.5がインストールできない現象

 古いバージョンの.NETソフトは、3.5でないと動かなかったりするようだが、windows10には、この3.5が標準では入ってないようで、インストールを求められ、続行を求められるものの、途中でエラーで停止してしまう現象が起きた。
 おそらく、ファイアウオールかプロキシーか、ネットワーク途中の何かかが影響しているのだろうが、ネット検索なども行いながら、原因究明にだいぶ時間を費やしてしまう。古いバージョンのソフトが皆使えないとなると非常に困るからだ。
 結局、ネット上にある情報でいろいろやってみたが、うまくいかず。対処療法になるけれど、NetFrameWork3.5のオンライン版でなく、フルセット版をダウンロードしてなんとかうまくいった。
 このへんは細かいところだけれど、以前のMS社だったら、こういう細かいところまで対処してくれていたような気がする。システムが複雑になったせいもあるのかもしれないが、複雑さへの対応が追いついてない気がする。こういうところにこそ、AI(機械学習)など適用して欲しい。(ビッグーデータが揃わないと無理?まれなエラーは、なかなかビッグデータとは成り得ないか。。。)
*******************
 その後、やはり、NetFramework3.5がインストールできないものがある。WinodowsUpdateもしっかり行わないとだめだという情報もあるので、アップデートしてみる。ところが、できない。
 MS社で、win10用のアップデート修正ツールが出てたので試したら、不具合が解消した。アップデートの修正が必要というのも、ややこしい話です。windows10も、出始めなのでいろいろ不具合がありそうです。

2016年4月23日土曜日

Javascriptでクロージャ

PythonによるWebスクレイピング P154を読んでいたら こんなjavascriptのスクリプトが出てきた。

<script>
var fibonacci=function(){
 var a=1;
 var b=1
 return function(){
  var temp=b;
  b=a+b;
  a=temp;
  return b;
 }
}

var fibInstance=fibonacci();
console.log(fibInstance()+" is in the Fibonacci sequence");
console.log(fibInstance()+" is in the Fibonacci sequence");
console.log(fibInstance()+" is in the Fibonacci sequence");
console.log(fibInstance()+" is in the Fibonacci sequence");
console.log(fibInstance()+" is in the Fibonacci sequence");
</script>


○ 参考までに、プログラミングF# P55にクロージャの例としてこういうのがのっていた。
>let gereratePowerOfFunc baseValue=(fun exponent -> baseValue ** exponent);;
>let powerOfTwo=generatePowerOfFunc 2.0;;
>powerOfTwo 8.0;;
 val it:float =256.0
2.0がどこに保持されているか。。値がスコープ内にあれば、その値を使用でき、またその値も関数によって返されることがある。

P209では、クロージャとは、内部あるいはネストされた関数において、関数に引数を明示的に指定せずとも何らかの値にアクセスできることを表す用語です。...
 >let mult i lst=List.map(fun x->x*i) lst;;
    val mult: int -> int list -> int list
  >mult 10 [1;3;5;7];;
    val it:int list=[10;30;50;70]



 

2016年4月20日水曜日

サブフォルダ含め、画像を一括して縮小し、上書き保存する方法

 共有フォルダデータをバックアップしているが、写真のサイズが大きくなっているため、ハードディスクが満杯になり、そろそろ限界に達している。バックアップ用のハードディスクにあまりお金もかけてられないので、バックアップデータのみ、写真サイズを縮小しようかと考えている。その方法をまとめてみた。

Vixというフリーソフトを用意します。Vectorなどで以前から出ているソフトです。
①処理したい共有フォルダを指定する。
②該当フォルダ以下のサブフォルダも指定するには、
  メニュー>画像>統合変換>出力のタブで、 「変換先対象フォルダ」の「サブフォルダも対象」にチェックを入れます。
③同じ場所に、縮小した写真をリサイズしたいなら、②の出力のタブで、「出力先」で「画像と同じフォルダ」を選択します。
④写真はほぼJPEGだと思われますので、メニュー>画像>統合変換>フォーマットのタブで、「種類」のところはJPEGを選択します。
⑤サイズの指定は、メニュー>画像>統合変換>リサイズのところで、「リサイズを行う」にチェックを入れます。そして、「横幅指定」にチェックを入れて、サイズを指定してください。「800」~「1000」程度でも、Webとか、ちょっとした原稿で利用するには十分でないかと思います。

2016年4月18日月曜日

PythonによるWebスクレイピング

Pythonの実践的プログラミングがとても参考になる本だ。
Nグラムについての説明があった。

2グラムで、何回出現したか カウントするプログラム P116を参考にちょっと試してみた。
input=['abc','test','abc','test','hello','xyz','hello','xyz']
output=dict()
for i in range(len(input)-2+1):
  newNGram = " ".join(input[i:i+2])
  if newNGram in output:
    output[newNGram] += 1
  else:
    output[newNGram] = 1

これを実行すると
outputは {'hello xyz':2 ,'test abc':1 ,'abc test':2,'test hello':1,'xyz hello':1}
という具合になった。
" ".join(input[i:i+2])は、inputから抽出した2語をスペースでつなぐようだ。

2016年4月5日火曜日

Windowsサーバでアクセス制限をバッチファイルで一括処理 Part2

 echo y | cacls d:\test /t /e /g username:f
といった感じのコマンドをエクセルで編集し、txt保存し、拡張子をbatに変えることで
たくさんの処理を一括でやってみた。

いろいろ調べると、さまざまなことができるようだ。
http://www.atmarkit.co.jp/ait/articles/0603/04/news013.html
などを参考にさせていただく。

①/g アクセス権(RやWなど)のみの追加(すべて置換は/p F指定なら/pでもOKか?)
②/e 既存のACLの内容はそのままで、ACLの追加、編集(つけないと、すべて破棄され、それまで設定されたユーザーの設定が消える。/gや/pで指定したACLのみとなる)

③/t フォルダ階層を再帰的にスキャンする
④アクセス制限を削除するには/r usernameと/eを使用する(/eがないとエラーらしい)。
echo y | cacls * /t /e /r username
これで、usernameeへのACLエントリをすべて削除

たとえば、一番上の階層のみ勝手にフォルダやファイルを作成できないようにするためには
たぶん /tをはずし /gでなく /pとして
 echo y | cacls d:\test /e /p username:r
となる。ただ、削除はできるようだ。

******************
 削除とファイルやフォルダの作成禁止にするにはどうするか、Windowsの場合、いろいろ調べたもののこれはという方法が見つからない。意外に簡単な方法があるのかもしれないが。(実際、Linuxなどはchmodを使えばすぐできるのだが、、、)
 苦し紛れに以下のような方法でやってみた。

 testフォルダ以下の全員のフォルダやファイル削除禁止
  icacls e:\test\* /deny everyone:(DE)

  testフォルダ以下への全員のフォルダやファイル作成禁止
 icacls e:\test /deny everyone:(WD)
 icacls e:\test /deny everyone:(AD)

なお、解除するには
 icacls e:\test /remove everyone
 icacls e:\test\* /remove everyone