2022年4月5日火曜日

Tensorflowの環境構築

2日くらいトライしてうまくいかなかったけど、やっとインストールできたっぽいので成功体験をメモ。

オフィシャルのビルドを入れようとしてみたり、Python10でやってみようとしてみたり、いろいろ試して正解にたどり着けなかったけど、やっとエラーのないインストールまでたどり着けた。Python9になっちゃったけれども。

環境

OS

  • OS: Windows11 
  • HOME Version 21H2
  • OSビルド 22000.556
  • CPU Ryzen 7 3800X

CUDA

  • cuda_11.5.2_496.13_windows.exe
  • cudnn_8.3.3.40_windows.exe

コンパイラ

  • VisualStudio2019 CommunityEdition

Python

  • python-3.9.12-amd64.exe

作業

pipのバージョン


PS > pip3.9 -V
pip 22.0.4 from D:\Python39\lib\site-packages\pip (python 3.9)

Visual Studioのインストール先


PS > (gcm cl).Definition
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\cl.exe
PS > cl
Microsoft(R) C/C++ Optimizing Compiler Version 19.29.30141 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

使い方: cl [ オプション... ] ファイル名... [ /link リンク オプション... ]
PS >
   
2019も2022もインストールしてたんだけども、なぜか2019を使うつもりがbuild中に2022を参照してしまってコケるという状況になったのでいったん2022はアンインストールして実施。 パスは通してなかったんだけどなあ。

環境変数


PS > $ENV:CUDA_PATH
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5
PS > $ENV:CUDA_PATH_V11_5
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.5
PS > $ENV:CUDNN_PATH
C:\Program Files\NVIDIA\CUDNN\v8.3

インストール

    
PS > pip3.9 install -U tensorflow tf-models-official tf_slim tensorflow_datasets tensorflow-hub
Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com
Collecting tensorflow
  Downloading tensorflow-2.8.0-cp39-cp39-win_amd64.whl (438.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 438.0/438.0 MB 11.5 MB/s eta 0:00:00
Collecting tf-models-official
  Downloading tf_models_official-2.8.0-py2.py3-none-any.whl (2.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 11.6 MB/s eta 0:00:00
(略)
Collecting zipp>=0.5
  Downloading zipp-3.8.0-py3-none-any.whl (5.4 kB)
Collecting oauthlib>=3.0.0
  Downloading oauthlib-3.2.0-py3-none-any.whl (151 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 151.5/151.5 KB 9.4 MB/s eta 0:00:00
Using legacy 'setup.py install' for kaggle, since package 'wheel' is not installed.
Using legacy 'setup.py install' for py-cpuinfo, since package 'wheel' is not installed.
Using legacy 'setup.py install' for termcolor, since package 'wheel' is not installed.
Using legacy 'setup.py install' for promise, since package 'wheel' is not installed.
Using legacy 'setup.py install' for seqeval, since package 'wheel' is not installed.
Building wheels for collected packages: pycocotools
  Building wheel for pycocotools (pyproject.toml) ... done
  Created wheel for pycocotools: filename=pycocotools-2.0.4-cp39-cp39-win_amd64.whl size=75362 sha256=a7184aac234ded768bcf755542bfd26076d3f2d974a3b7a79b5403e294b48a59
  Stored in directory: C:\Users\xxxxx\AppData\Local\Temp\pip-ephem-wheel-cache-c_z095n_\wheels\7e\b0\8e\f2c3593944ead79f5146d057d1310ee6d7b60d30b826779846
Successfully built pycocotools
Installing collected packages: tf-estimator-nightly, text-unidecode, termcolor, tensorboard-plugin-wit, tabulate, sentencepiece, pywin32, pytz, pyasn1, py-cpuinfo, libclang, keras, gin-config, flatbuffers, certifi, zipp, wrapt, wheel, werkzeug, urllib3, uritemplate, typing-extensions, typeguard, threadpoolctl, tensorflow-io-gcs-filesystem, tensorboard-data-server, six, rsa, regex, pyyaml, python-slugify, pyparsing, pyasn1-modules, psutil, protobuf, portalocker, Pillow, oauthlib, numpy, kiwisolver, joblib, idna, gast, fonttools, dill, Cython, cycler, colorama, charset-normalizer, cachetools, tqdm, tensorflow-hub, tensorflow-addons, scipy, sacrebleu, requests, python-dateutil, promise, packaging, opt-einsum, opencv-python-headless, keras-preprocessing, importlib-metadata, httplib2, h5py, grpcio, googleapis-common-protos, google-pasta, google-auth, dm-tree, astunparse, absl-py, tf_slim, tensorflow-model-optimization, tensorflow-metadata, scikit-learn, requests-oauthlib, pandas, oauth2client, matplotlib, markdown, kaggle, google-auth-httplib2, google-api-core, tensorflow_datasets, seqeval, pycocotools, google-auth-oauthlib, google-api-python-client, tensorboard, tensorflow, tensorflow-text, tf-models-official
  Running setup.py install for termcolor ... done
  Running setup.py install for py-cpuinfo ... done
  Running setup.py install for promise ... done
  Running setup.py install for kaggle ... done
  Running setup.py install for seqeval ... done
Successfully installed Cython-0.29.28 Pillow-9.1.0 absl-py-1.0.0 astunparse-1.6.3 cachetools-5.0.0 certifi-2021.10.8 charset-normalizer-2.0.12 colorama-0.4.4 cycler-0.11.0 dill-0.3.4 dm-tree-0.1.6 flatbuffers-2.0 fonttools-4.31.2 gast-0.5.3 gin-config-0.5.0 google-api-core-2.7.1 google-api-python-client-2.42.0 google-auth-2.6.2 google-auth-httplib2-0.1.0 google-auth-oauthlib-0.4.6 google-pasta-0.2.0 googleapis-common-protos-1.56.0 grpcio-1.44.0 h5py-3.6.0 httplib2-0.20.4 idna-3.3 importlib-metadata-4.11.3 joblib-1.1.0 kaggle-1.5.12 keras-2.8.0 keras-preprocessing-1.1.2 kiwisolver-1.4.2 libclang-13.0.0 markdown-3.3.6 matplotlib-3.5.1 numpy-1.22.3 oauth2client-4.1.3 oauthlib-3.2.0 opencv-python-headless-4.5.5.64 opt-einsum-3.3.0 packaging-21.3 pandas-1.4.2 portalocker-2.4.0 promise-2.3 protobuf-3.20.0 psutil-5.9.0 py-cpuinfo-8.0.0 pyasn1-0.4.8 pyasn1-modules-0.2.8 pycocotools-2.0.4 pyparsing-3.0.7 python-dateutil-2.8.2 python-slugify-6.1.1 pytz-2022.1 pywin32-303 pyyaml-5.4.1 regex-2022.3.15 requests-2.27.1 requests-oauthlib-1.3.1 rsa-4.8 sacrebleu-2.0.0 scikit-learn-1.0.2 scipy-1.8.0 sentencepiece-0.1.96 seqeval-1.2.2 six-1.16.0 tabulate-0.8.9 tensorboard-2.8.0 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.1 tensorflow-2.8.0 tensorflow-addons-0.16.1 tensorflow-hub-0.12.0 tensorflow-io-gcs-filesystem-0.24.0 tensorflow-metadata-1.7.0 tensorflow-model-optimization-0.7.2 tensorflow-text-2.8.1 tensorflow_datasets-4.5.2 termcolor-1.1.0 text-unidecode-1.3 tf-estimator-nightly-2.8.0.dev2021122109 tf-models-official-2.8.0 tf_slim-1.1.0 threadpoolctl-3.1.0 tqdm-4.64.0 typeguard-2.13.3 typing-extensions-4.1.1 uritemplate-4.1.1 urllib3-1.26.9 werkzeug-2.1.1 wheel-0.37.1 wrapt-1.14.0 zipp-3.8.0

確認

その1


PS > pip3.9 show tensorflow
Name: tensorflow
Version: 2.8.0
Summary: TensorFlow is an open source machine learning framework for everyone.
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: packages@tensorflow.org
License: Apache 2.0
Location: d:\python39\lib\site-packages
Requires: absl-py, astunparse, flatbuffers, gast, google-pasta, grpcio, h5py, keras, keras-preprocessing, libclang, numpy, opt-einsum, protobuf, setuptools, six, tensorboard, tensorflow-io-gcs-filesystem, termcolor, tf-estimator-nightly, typing-extensions, wrapt
Required-by: tensorflow-text, tf-models-official
PS >

その2

GPU認識しているっぽい

PS > python
Python 3.9.12 (tags/v3.9.12:b28265d, Mar 23 2022, 23:52:46) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from tensorflow.python.client import device_lib
>>> print(device_lib.list_local_devices())
2022-04-05 13:30:42.907512: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-04-05 13:30:44.780237: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /device:GPU:0 with 5982 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 2070 SUPER, pci bus id: 0000:0a:00.0, compute capability: 7.5
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 3318044804479267032
xla_global_id: -1
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 6273040384
locality {
  bus_id: 1
  links {
  }
}
incarnation: 9777597053771455120
physical_device_desc: "device: 0, name: NVIDIA GeForce RTX 2070 SUPER, pci bus id: 0000:0a:00.0, compute capability: 7.5"
xla_global_id: 416903419
]
>>>

2022年1月21日金曜日

React.jsでSVGを扱うことについて調べた

どうやらSVGはcomponentとして扱うことができて
import {ReactComponent as SvgImage} from './hoge.svg'
と書けるらしい。 また、イベントハンドラをくっつけるには
const App = () => {
  const ret =  requestAWSOfferIndex()
  return (
    <>
        < ReactLogo onClick={() => console.log("click")}/>
    </>
  );
}
こう書けるらしい。そしてcomponentはpropsにも使えるので複数のSVGをイベントを付けて操作することも同じcomponentでできそう。
 ReactDOM.render(
		<DrawComponent svg={<SvgImage someProps="SvgA" />}></DrawComponent>,
 	document.getElementById('container')
 );

複数(多数)のAssetとする場合はどうしようかな。 Typescriptでやろうと思うとeval()(transpile())でコードを生成できるかな。 をみるとコンポーネントの対応表をつくって処理した方がよさそうだけど数が多いと管理がやだなぁ。  
components = {
foo: FooComponent,
bar: BarComponent
    };

2022年1月8日土曜日

JetBrainsのライセンスを継続した

朝起きたらライセンスの更新のお知らせがきてた。
Thank you for staying with JetBrains. We appreciate your trust!
って離脱する人も多いのかなってちょっと深読み。 VSCodeとかエディタも人気だしね。 ワタクシはVSCodeもvimもメモ帳もIntelliJ IDEA(とその仲間)も使う。 チュートリアルをやってみるような用途だったりコードスニペットを確認してみるような目的だといちいちプロジェクトという概念で始めないといけないようなIDEは起動すら面倒って思うし。

Fleet とかZedとかも公開を楽しみにしてる。

 

2018年1月23日火曜日

2018年

きがつけば2018年
いや気が付いてたけども。

新しい会社にも慣れ始めた(いまさら)

老人的には世の中の環境がだいぶかわっちゃったなぁ。
仕事はAWSばっかりだし。Linuxばっかりだし。DBはMySQLばっかりだし。

この先FreeBSDやSolarisを仕事で使うことはあるのかしら。

あ、Pythonがメジャーになったことは嬉しい。

2014年6月18日水曜日

force.comで開発アカウントを取得

どこでもできる開発環境が欲しくてforce.comへアカウント登録を行った。
ぜんぶ、ずっと無料ってすごいね。
https://developer.salesforce.com/signup
へアクセスしてアカウント登録


 アカウント作ったとたんにこんなメンテのお知らせが出てちょっとあせった。
最初のアクセスでパスワードの変更や、忘れたとき用の質問を決める
すごくりっぱな管理画面に到達できた。


さて開発環境を。


2014年1月27日月曜日

IntelliJ IDEA13+Haxe3の環境

Windows7の環境でHaxeの環境を作りたくてさまよった記録。

Haxe取得

オフィシャルページでDownloadリンクから取得
Windows Installerを利用。

C:\HaxeToolkit\に展開される
インストールされたのを確認したら、
haxelib install createjs
で、createjsを入れる。
インストールは(うちの環境では) C:\HaxeToolkit\haxe\std\createjs に入るようなので、確認。





IntelliJ IDEAの設定

IDEAでの設定は下記のようにライブラリを参照できるようにする。







2013年10月18日金曜日

RAID-Zのボリュームを作成する

oi151でDISKの認識までは終わったので引き続きRAIDZのボリュームを作成する。
Diskの確認
$ sudo format
Password:
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c3t0d0 <ATA-WDCWD1600AAJS-6-3E03 cyl 19454 alt 2 hd 255 sec 63>
          /pci@0,0/pci103c,304a@1f,2/disk@0,0
       1. c4t513d0 <ATA-TOSHIBA DT01ACA2-ABB0-1.82TB>
          /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0/disk@201,0
       2. c4t545d0 <ATA-TOSHIBA DT01ACA2-ABB0-1.82TB>
          /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0/disk@221,0
       3. c4t577d0 <ATA-TOSHIBA DT01ACA2-ABB0-1.82TB>
          /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0/disk@241,0
Specify disk (enter its number): q
`q' is not an integer.
Specify disk (enter its number): ^C

poolの作成
$ sudo zpool create -f datapool raidz1 c4t513d0 c4t545d0 c4t577d0
ちょー寡黙。UNIX的か。
$ sudo zpool list
NAME       SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
datapool  5.44T  1.12M  5.44T         -     0%  1.00x  ONLINE  -
rpool      149G  4.03G   145G         -     2%  1.00x  ONLINE  -
状態確認
$ sudo zpool status
Password:
  pool: datapool
 state: ONLINE
  scan: none requested
config:
        NAME          STATE     READ WRITE CKSUM
        datapool      ONLINE       0     0     0
          raidz1-0    ONLINE       0     0     0
            c4t513d0  ONLINE       0     0     0
            c4t545d0  ONLINE       0     0     0
            c4t577d0  ONLINE       0     0     0
errors: No known data errors
  pool: rpool
 state: ONLINE
  scan: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c3t0d0s0  ONLINE       0     0     0
errors: No known data errors 
マウントポイント確認
$ sudo zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
datapool                   703K  3.56T   192K  /datapool
rpool                     4.89G   142G    45K  /rpool
rpool/ROOT                2.96G   142G    31K  legacy
rpool/ROOT/openindiana    2.96G   142G  2.91G  /
rpool/dump                 955M   142G   955M  -
rpool/export               960K   142G    32K  /export
rpool/export/home          928K   142G    32K  /export/home
rpool/export/home/xxxx   896K   142G   896K  /export/home/xxxx
rpool/swap                1015M   143G   135M  -
ファイルシステムをつくる
$ sudo zfs create datapool/documents
$ sudo zfs create datapool/pictures
マウントポイントを設定
$ sudo zfs set mountpoint=/export_documents  datapool/documents
$ sudo zfs set mountpoint=/export_pictures  datapool/pictures
実験的にdedupを有効にして利用してみる。
$ sudo zfs set dedup=on datapool
重たかったらメモリかってこよっと。

2013年10月17日木曜日

OpenIndiana 151a8の導入

ヤフオクでhpの8100 Eliteを安価に落としてこれたので、OpenIndiana を入れて使う事に。
DisplayDriverはVESAでないとうまく認識しなかったけど、すんなりインストールも終わってあっけない感じ。
ドライバ探してきたい部分もあるんだけど、我慢したらいいだけなのでとりあえず後回し。

そしてRAIDZでファイルサーバで使いたいよねー。って感じでヨドバシでHDD TOWER4を購入してeSATAとして使おうと計画。そして同時にHDDを購入。
4つHDDを入れてもよかったんだけど3つだけTOSHIBAの2TBのDISKを購入して入れておいた。
eSATAカードはコントローラーは何が認識するのかな・・・って人柱になることを多少覚悟しつつもAsmediaは認識しているという情報を目にした記憶を頼ってAREAのTWIN TURBO HYBRID TYPE Bを試しに購入してきた。

どきどきしつつも電源を入れてみると・・・あっさり。
あとはRAIDZにするだけだな・・・
Oct 17 02:06:32 namikoro  SATA device detected at port 1:0
Oct 17 02:06:32 namikoro sata: [ID 663010 kern.info] /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0 :
Oct 17 02:06:32 namikoro sata: [ID 792367 kern.info]    SATA disk device at port 1:0
Oct 17 02:06:32 namikoro sata: [ID 846691 kern.info]    model TOSHIBA DT01ACA200
Oct 17 02:06:32 namikoro sata: [ID 693010 kern.info]    firmware MX4OABB0
Oct 17 02:06:32 namikoro sata: [ID 163988 kern.info]    serial number            73MS7SXXX
Oct 17 02:06:32 namikoro sata: [ID 594940 kern.info]    supported features:
Oct 17 02:06:32 namikoro sata: [ID 981177 kern.info]     48-bit LBA, DMA, Native Command Queueing, SMART, SMART self-test
Oct 17 02:06:32 namikoro sata: [ID 996592 kern.info]    SATA Gen3 signaling speed (6.0Gbps)
Oct 17 02:06:32 namikoro sata: [ID 349649 kern.info]    Supported queue depth 32
Oct 17 02:06:32 namikoro sata: [ID 349649 kern.info]    capacity = 3907029168 sectors
Oct 17 02:06:32 namikoro sata: [ID 801593 kern.warning] WARNING: /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0:
Oct 17 02:06:32 namikoro  SATA device detected at port 1:1
Oct 17 02:06:32 namikoro sata: [ID 663010 kern.info] /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0 :
Oct 17 02:06:32 namikoro sata: [ID 792367 kern.info]    SATA disk device at port 1:1
Oct 17 02:06:32 namikoro sata: [ID 846691 kern.info]    model TOSHIBA DT01ACA200
Oct 17 02:06:32 namikoro sata: [ID 693010 kern.info]    firmware MX4OABB0
Oct 17 02:06:32 namikoro sata: [ID 163988 kern.info]    serial number            73VUDHXXX
Oct 17 02:06:32 namikoro sata: [ID 594940 kern.info]    supported features:
Oct 17 02:06:32 namikoro sata: [ID 981177 kern.info]     48-bit LBA, DMA, Native Command Queueing, SMART, SMART self-test
Oct 17 02:06:32 namikoro sata: [ID 996592 kern.info]    SATA Gen3 signaling speed (6.0Gbps)
Oct 17 02:06:32 namikoro sata: [ID 349649 kern.info]    Supported queue depth 32
Oct 17 02:06:32 namikoro sata: [ID 349649 kern.info]    capacity = 3907029168 sectors
Oct 17 02:06:32 namikoro sata: [ID 801593 kern.warning] WARNING: /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0:
Oct 17 02:06:32 namikoro  SATA device detected at port 1:2
Oct 17 02:06:32 namikoro sata: [ID 663010 kern.info] /pci@0,0/pci8086,3b4a@1c,4/pci1b21,1060@0 :
Oct 17 02:06:32 namikoro sata: [ID 792367 kern.info]    SATA disk device at port 1:2
Oct 17 02:06:32 namikoro sata: [ID 846691 kern.info]    model TOSHIBA DT01ACA200
Oct 17 02:06:32 namikoro sata: [ID 693010 kern.info]    firmware MX4OABB0
Oct 17 02:06:32 namikoro sata: [ID 163988 kern.info]    serial number            73UU45XXX
Oct 17 02:06:32 namikoro sata: [ID 594940 kern.info]    supported features:
Oct 17 02:06:32 namikoro sata: [ID 981177 kern.info]     48-bit LBA, DMA, Native Command Queueing, SMART, SMART self-test
Oct 17 02:06:32 namikoro sata: [ID 996592 kern.info]    SATA Gen3 signaling speed (6.0Gbps)
Oct 17 02:06:32 namikoro sata: [ID 349649 kern.info]    Supported queue depth 32
Oct 17 02:06:32 namikoro sata: [ID 349649 kern.info]    capacity = 3907029168 sectors

念のために次回起動時にboot -r(もしくは touch /reconfigure )でデバイスの再構築をしておく。

2013年9月27日金曜日

/sbin/ip

ipコマンドってifconfigの代わりくらいに感じてたけどmanしてみたら
NOTE
       This program is obsolete!  For replacement check ip addr and ip link.  For statistics use ip -s link.
ばっちり古いってかかれてた。
年寄りやだねw

2013年6月27日木曜日

Android Studioをインストール

Android Studio
Android Studioをダウンロードしてインストールしてみた。
Xperia Aを買っちゃったしね。

PyCharmを使ってる俺には凄く見慣れた構成のIDE。
まだちっとも使い込んでもないけど、ソースに赤い波線が付いてるのはエラーって認識なんだろうなあ。ちゃんとエミュレータで実行できるんだけどなんでだろう・・・

2013年6月26日水曜日

きつねさんでもわかるLLVM

気になってたLLVMの本買ってきた。 表紙は甘口だけど、中は挿絵が多いわけでもないわけで。

いい機会なのでちゃんと勉強してみよう。

2013年2月17日日曜日

BeautifulSoup4で遊んでみた

mac portでsearchしてるとbs4っていうのを見かけたので、なんだろ?って 思ったら、互換性も若干無くなってversion4になってたのね。 
使い方を調べて、ついでにとあるCD買ったページで結局何枚買ったかソートするコードを書いてみた。
ちょーいいかげんなコードだけど、こんなのでも簡単にかけた。
import re

if __name__ == "__main__":
    from bs4 import BeautifulSoup
    f = open('5th-cd.html', 'r')

    soup = BeautifulSoup(f)
    soup.unicode
    part_tr = soup.find('table', attrs={'summary': u'ご注文商品'})

    part_tr2 = part_tr.find_parent().find_parent().find_parent()
    events = []
    for num, cd in zip(part_tr2.find_all('th', recursive=True), part_tr2.find_all('td', recursive=True)):
        if re.search(u'点', unicode(num.text)):
            try:
                artist, title1, title2, title3, event_day, event_hall, event_sch, member, extra = cd.text.strip().split()
                event_day = event_day.strip(u'※')
            except ValueError:
                continue   #数があわないのは商品でない
            cd_amount = num.text.strip().strip(u'点')
            try:
                events.append(u"%s, %s, %s, %s, %s" % (event_day, event_sch, member, event_hall, cd_amount))
            except IndexError:
                continue        # 商品以外もテーブルで抜くので一致しないことがある
            except NameError:
                continue
            del cd_amount

    events.sort()
    for event in events:
        print event

2012年12月20日木曜日

Juniper Networks Warrior: A Guide to the Rise of Juniper Networks Implementations

12/3にアマゾンで注文してた本だけど、やっと届いた。 あまり目を通してないけど、QFXとかMXとかの話はあんまり使う場所が想像つかないや。 読んでる分にはおもしろいけど。 junosの本はあんまりないからそれだけでも価値があるんだけど。

2012年11月16日金曜日

Windows8にPDFありのsphinx環境

Windows8(64bit)でsphinx環境をごそごそと。
WindowsバイナリのPython2.7 64bitとTexLiveとの組み合わせとでやってみてたんだけど、俺の環境ではすんなりといかなかった。 なので、Cygwin版のpython2.6とCygwin版のTeXliveを使ってみた。
patch付きのsphinxもSphinx-Users.jpのLaTeX経由でのPDF作成でインストールはばっちり。
結果はOK!最初っからこれでいけばよかった。 ただし最初は
make latexpdfja
ってやったら
vfork: resource temporarily unavailable
こんなエラーになったのであせった。 Google先生に問い合わせたら、 焦らずに 管理者でashを起動して
 /bin/rebaseall
を実行しなさいとな。本当にあら不思議。日本語付きのpdfも作成できました!
$ make latexpdfja
sphinx-build -b latex -d _build/doctrees   . _build/latex
Running Sphinx v1.1.3
loading translations [ja]... done
loading pickled environment... done
building [latex]: all documents
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
processing test.tex... index
resolving references...
writing... done
copying TeX support files... done
build succeeded.
  :
Output written on test.dvi (7 pages, 3788 bytes).
Transcript written on test.log.
for f in *.dvi; do dvipdfmx $f; done
test.dvi -> test.pdf
[1][2][3
** WARNING ** Object @page.i already defined.
][4
** WARNING ** Object @page.ii already defined.
][5][6][7]
12214 bytes written
make[1]: ディレクトリ `/home/yunoki/doc/_build/latex' から出ます
pdflatex finished; the PDF files are in _build/latex.

yunoki@white ~/doc
これはありがたい。 使ってみよう。

2012年11月15日木曜日

下書き保存機能

bloggerの下書き機能って便利。

だけど、下書きばっかりたまっちゃってどうしよう状態になっちゃった(笑)
旬を逃したものもあるしなあ・・・


2012年11月14日水曜日

Apache Tika1.2を軽く試す

Apache Tikaが1.2になって使いやすくなったという話を目にしたので試してみた。
ダウンロードはオフィシャルサイトからjarを持ってきた。

コマンドラインで使ってみる。
コマンドラインオプションはこっちhttp://tika.apache.org/1.2/gettingstarted.htmlにある。
$ java -jar tika-app-1.2.jar
Googleでファイルタイプを指定していろんなファイルを収集。
いっぱい試す。

・WORDドキュメント
http://psgsv.gsi.go.jp/koukyou/public/seihinsiyou/data/kani_siyou.doc
○○市都市計画基図作成

業務委託製品仕様書
2012年2月10日

○○市都市整備部都市計画課

TEL:000-000-0000

FAX:000-000-0000

�
目次

31. 概覧 �
31.1. 地理空間データ製品仕様書の作成情報 �
31.2. 目的 �
31.3. 空間範囲 �
31.4. 時間範囲 �
31.5. 引用規格 �
31.6. 用語と定義 �

少し化けてるものがあるけどなんだろう。

パワポ
http://www2.econ.osaka-u.ac.jp/~dony/mm7.ppt
[yunoki@localhost tika]$ java -jar tika-app-1.2.jar -T mm7.ppt
製品ライフサイクルとマーケティング戦略製品ライフサイクルの存在の意味
売上  低調 コスト  顧客1人につき高コスト 利益  マイナス 顧客  イノベーター 競合他社  ほとんどなし
導入期のマーケティング戦略
目的  製品認知と製品使用の促進 製品  基本製品の提供 価格  コストプラス方式 流通  選択的流通の構築 広告  初期採用者と小売業への製品認知の促進 販売促進  大規模な製品使用の促進
導入期におけるマーケティングミックス
売上  急速に上昇 コスト  顧客1人につき平均的コスト 利益  上昇 顧客  初期採用者 競合他社  増加
成長期のマーケティング戦略
目的  市場シェアの最大化 製品  製品拡張、サービスと保証の提供 価格  市場浸透価格 流通  開放的流通の構築 広告  マス市場における認知と関心の喚起 販売促進  縮小して大量の消費者需要を利用
成長を維持するには
成熟期
成熟期の特性
売上  ピーク コスト  顧客1人につき低コスト 利益  高利益 顧客  追随者 競合他社  安定から減少
成熟期のマーケティング戦略
成熟期の3つ期間
市場の修正
製品の修正
マーケティング・ミックスの修正
価格 値下げ、特別割引、数量割引、早期購買割引など 流通 販売店での製品サポートとディスプレイの拡大、販売店の拡大など 広告 広告費、広告のメッセージ、コピー、メディア、タイミングなど 販売促進 クーポン、リベート、保証、ギフト、コンテストなど
衰退期
衰退期の特性
売上  減少 コスト  顧客1人につき低コスト 利益  減少 顧客  遅滞者 競合他社  減少
衰退期のマーケティング戦略
目的  支出の減少とブランドの収穫 製品  弱いモデルの段階的除去 価格  値下げ 流通  選択的流通への回帰 広告  中核となるロイヤル・ユーザーをターゲットに 販売促進  最小レベルまで縮小
製品ライフサイクルへの批判
http://web.canon.jp/about/library/pdf/canon_factbook.pdf そしてPDFのうまく行かないパターンを発見。
うーむ。
元のPDFがhoge-RKSJ-hogeってことで、やっぱりSHIFT JISが苦手なのかしら。
PDFBoxを要調査かな。

2012年10月6日土曜日

otrs3.1をCentOS6で導入テスト(インストール)

otrsが3.1になってる事に気が付いたので久々にotrsを触ってみる。
まあドキュメント読んだらだれでもできるくらいのわかりやすさなんだけど。
# yum -y install perl-DBD-MySQL mysql-server perl perl-libwww-perl perl-Net-DNS perl-IO-Socket-SSL perl-XML-Parser perl-TimeDate gd gd-devel vixie-cron procmail httpd-devel
確か、予期に計らってくれるとおもったけど一応/etc/my.cnfはutf8にしたりinnodbにしておいてみたり。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=utf8
default-storage-engine=INNODB

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set=utf8
mysqlの起動
# /etc/init.d/mysqld start
MySQL データベースを初期化中:  WARNING: The host 'otrs' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...

(中略)

Please report any problems with the /usr/bin/mysqlbug script!

                                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]
#
ここまでが準備。
ダウンロードしておいたotrsをインストール。
# yum install ./otrs-3.1.10-01.noarch.rpm 
(略)
Dependencies Resolved

====================================================================================
 Package              Arch      Version             Repository                 Size
====================================================================================
Installing:
 otrs                 noarch    3.1.10-01           /otrs-3.1.10-01.noarch     80 M
Installing for dependencies:
 mod_perl             x86_64    2.0.4-10.el6        base                      3.2 M
 perl-BSD-Resource    x86_64    1.29.03-3.el6       base                       35 k

Transaction Summary
====================================================================================
Install       3 Package(s)

Total size: 83 M
Total download size: 3.2 M
Installed size: 86 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): mod_perl-2.0.4-10.el6.x86_64.rpm                      | 3.2 MB     00:10     
(2/2): perl-BSD-Resource-1.29.03-3.el6.x86_64.rpm            |  35 kB     00:00     
------------------------------------------------------------------------------------
Total                                               290 kB/s | 3.2 MB     00:11     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : perl-BSD-Resource-1.29.03-3.el6.x86_64                           1/3 
  Installing : mod_perl-2.0.4-10.el6.x86_64                                     2/3 
  Installing : otrs-3.1.10-01.noarch                                            3/3 
Check OTRS user ... otrs added.
hostname: 不明なホスト

Next steps: 

[httpd services]
 Restart httpd 'service httpd restart'

[install the OTRS database]
 Make sure your database server is running.
 Use a web browser and open this link:
 http:///otrs/installer.pl

[OTRS services]
 Start OTRS 'service otrs start' (service otrs {start|stop|status|restart).

((enjoy))

 Your OTRS Team

  Verifying  : perl-BSD-Resource-1.29.03-3.el6.x86_64                           1/3 
  Verifying  : mod_perl-2.0.4-10.el6.x86_64                                     2/3 
  Verifying  : otrs-3.1.10-01.noarch                                            3/3 

Installed:
  otrs.noarch 0:3.1.10-01                                                           

Dependency Installed:
  mod_perl.x86_64 0:2.0.4-10.el6      perl-BSD-Resource.x86_64 0:1.29.03-3.el6     

Complete!
# 
ブラウザ経由でインストーラを実行。。。なのだけどドキュメント通りにちゃんとselinuxを無効にしておかないと謎のエラーで500になっちゃう。
っていうか、なっちゃった。

2012年9月4日火曜日

mod_securityでWebのメソッド制限

アプリケーションサーバと連携をしているApacheだとメソッドの制限がWebとAPでそれぞれ別になるっていう事がある。
それぞれで設定するのは面倒だし、アプリケーションサーバが変わるたびに調査をしないといけないので、Apacheのみでやる事を検討してみた。
どうやら、mod_securityはそういった事もできるみたい。
CentOSだとepelに入っているので、yumでインストール。
WAFは仕事で使う場合、特に稼働中のサービスだったりすると影響が怖いのでせっかくのデフォルトのルールもいったん消す。

# cd /etc/httpd/modsecurity.d
# mv base_rules base_rules.bak
# mkdir base_rules

ルールを新しく作成。
# Accept only commonly used request methods
SecRule REQUEST_METHOD "!@rx ^(?:GET|HEAD|POST)$" \ "phase:1,t:none,deny,msg:'Only standard request methods allowed',logdata:%{REQUEST_METHOD}"
これでいつでもOPTIONSでもDELETEもしらないメソッドもマッチすると落としてくれるみたい。
$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
OPTIONS / HTTP/1.1
HOST: localhost

HTTP/1.1 403 Forbidden
Date: Mon, 03 Sep 2012 18:46:14 GMT
Server: Apache
Last-Modified: Mon, 03 Sep 2012 17:10:29 GMT
ETag: "40a61-1200-4c8cf37fd9f7e"
Accept-Ranges: bytes
Content-Length: 4608
Connection: close
Content-Type: text/html; charset=UTF-8

OPTIONSもへんな結果でない。
$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
aaaaaaaaaaaaa /example/ HTTP/1.1
HOST: localhost.localdomain

HTTP/1.1 403 Forbidden
Date: Mon, 03 Sep 2012 19:13:13 GMT
Server: Apache
Last-Modified: Mon, 03 Sep 2012 17:10:29 GMT
ETag: "40a61-1200-4c8cf37fd9f7e"
Accept-Ranges: bytes
Content-Length: 4608
Connection: close
Content-Type: text/html; charset=UTF-8

よし。
$ telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
DELETE /example/ HTTP/1.1
HOST: localhost

HTTP/1.1 403 Forbidden
Date: Mon, 03 Sep 2012 19:14:34 GMT
Server: Apache
Last-Modified: Mon, 03 Sep 2012 17:10:29 GMT
ETag: "40a61-1200-4c8cf37fd9f7e"
Accept-Ranges: bytes
Content-Length: 4608
Connection: close
Content-Type: text/html; charset=UTF-8

満足ぢゃ!

2012年8月25日土曜日

何年かぶりにMFCの復習をしてみる(Windowつくって中になんか書く)

Visual Studio2012が公開されて、Professional版も3ヶ月は無料で使える(評価目的だけど)そうなのでインストールしてみた。
せっかくのProfessional版だと、MFCが使えるのでひさびさにいじりはじめてみた。
所有しているのは古い書籍ばっかりだし、近年のMFCなんてさっぱり触ってないのでとっかかりもよくわからないや。
昔のざっくりした印象だと、ちょっと遊ぶにはOnDraw()に書いたらだいたいおっけーって印象なので、本を片手にやってみる。
void CEx03aView::OnDraw(CDC* pDC)
{
    pDC -> TextOutW(0, 0, CString("Hello World"));
}


こんなサンプルでも動くと楽しい。 昔のサンプルはcharだったけど、TextOut()がTextOutW()でCStringじゃないとエラーになるのは厳格になったってことかな。まあ、ざっくりでもなんとかなるのが、インテリセンスのありがたさ。
void CEx03aView::OnDraw(CDC* pDC)
{
    pDC -> TextOut(0, 0, "Hello World");
}
ひきつづき、
void CEx03aView::OnDraw(CDC* pDC)
{
 pDC -> TextOutW(0, 0, CString("Hello World"));
 pDC -> SelectStockObject(GRAY_BRUSH);
 pDC -> Ellipse(CRect(0, 20, 100, 120));
}

おお!いい感じ。こんな簡単な話なら大歓迎。 って、思ったけど座標系の話はやっぱ面倒だなあ。
すげー面倒って思い出してきた。