パーソナルツール
現在位置: ホーム 日々のメモ書き archive 2009 3月

3月

Sub-archives

2009年03月30日

CentOS 5.2 netinst

by TANIGUCHI Takaki — last modified 2009年03月30日 23時57分
Filed Under:

CentOS 5.2 をnetinst をやった。

ミラーの選択ができずに手動でホストとパスを打ち込むのが面倒。

stoneって便利だな

by TANIGUCHI Takaki — last modified 2009年03月30日 23時57分
Filed Under:

ファイアウォールの内側からproxyでごにょごにょするのが楽。

何が楽ってコンパイルが楽。ファイルが2つしかない。適当にやってもなんとかなる。サーバにsshで入れない状況のときにサーバー側から

ssh -R sport:127.0.0.1:dport host

とかやれば転送が効くので stone proxy sport とやる。

Plone 3.2.1-r4移行テスト

by TANIGUCHI Takaki — last modified 2009年03月30日 23時57分
Filed Under:

Plone 3.2.1-r4への移行テストをやってみた。

Plone-2.5.xからの移行。
  • 単にData.fsをコピーしただけだと挙動不審
  • Products/* を全部持ってきたら当然エラーだらけ
  • エラーの出るのを地道に削っていって、skinのエラーを直してゴミとなったtoolを消してとやっていたらどうやら動くように。
  • Productの中身をコピーしてこないとエラーになる。何が問題かは把握できず。
  • 残る問題はQuillsだけ?

2009年03月08日

tailor

by TANIGUCHI Takaki — last modified 2009年03月08日 23時23分
Filed Under:

migrate changesets between version control systems

いろんなSCMを互いに変換するソフト。汎用的に色々対応しているのが利点か。

 tailor --verbose -s git -R  /home/takaki/src/haskell  --subdir oth  > o.tailor
gitからdarcsに変換した。
tailor  --verbose -s svn -R http://svn.plone.org/collective --module Products.Quills --subdir Product
svnからdarcsに変換。

2009年03月06日

オセロのプログラムを書いたときのメモ

by TANIGUCHI Takaki — last modified 2009年03月06日 00時11分
Filed Under:

オセロのプログラムをHaskellで作成。こんな修正したよというメモ。

なかなか作法がわからないからね。

if を使わずガードで表記

-      rowCheck x y cb = 
-          if x < 0 then
-              True
-          else
+      rowCheck x y cb
+          | x == -1 = True
+          | otherwise =

こっちのほうがきれいにかけますね。

List関係いろいろ

リファレンスをながめていて色々できることに気がついた。
-        if and [getPiece x y ob == Empty, length revPos > 0] then
+        if and [getPiece x y ob == Empty, not $ null revPos ] then
単純な話だけどライブラリは使おう。
-    foldl (++) ""  [ob2Line (7-y) ob | y <- [0..7]]
-              ++ "/01234567\n"
+    concat  ([ob2Line (7-y) ob | y <- [0..7]] ++ ["/01234567\n"])
foldlでやっているのが変だった。
+      doReverse piece ob pos = 
+ foldl (\ob p -> (putOnPiece (fst p) (snd p) piece ob)) ob pos
- doReverse piece ob [] = ob
- doReverse piece ob (p:pos) =
- doReverse piece (putOnPiece (fst p) (snd p) piece ob) pos
自分で再帰で書いていたのを工夫したらfoldlでできるようになった。
-    concatMap (\y -> ob2Line (7-y) ob) [0..7] ++ "/01234567\n"
+ concatMap (ob2Line ob) (reverse [0..7]) ++ "/01234567\n"
これもライブラリを使ったほうが自然ですよと。
-    initBoard = 
- Map.fromList [( (p2int 3 4), White), ((p2int 4 4), Black),
- ((p2int 3 3), Black), ((p2int 4 3), White)
- ]
-
+ initBoard =
+ let ob = Map.empty in
+ foldl (\ob p -> putOnPiece (fst (fst p)) (snd (fst p)) (snd p) ob)
+ ob [((3,4), White), ((4,4), Black),
+ ((3,3), Black), ((4,3), White)]
これはちょっと迷うところではあるけれど。

do記法の意味がちょっとわかった

         catch (readIO line :: IO (Int,Int)) 
-                    (\e -> return (e::SomeException) >>
-                           putStr "Input again!: " >>
-                           hFlush stdout >>
-                           readPos)
+                    (\e -> do
+                       return (e::SomeException)
+                       putStr "Input again!: "
+                       hFlush stdout
+                       readPos)
syntax sugar という話。>> がずらずら並ぶときには do を使えば消える

2009年03月03日

スプロケ発注

by TANIGUCHI Takaki — last modified 2009年03月03日 22時41分
Filed Under:

チェーンが飛ぶ飛ぶ。駄目だこりゃ。

真ん中3つがほぼ使えない。どういうギアを入れればいいんだか。ホットスピンでCS-6500 11-21を発注。ついでにフロントのリムも交換。Mavicの安いやつに。シルバーの在庫がないからブラックに…。前後で色が違うってのもなあ…。まあいいか。

あたらしいpamの設定ファイルとpam_ldap

by TANIGUCHI Takaki — last modified 2009年03月03日 22時41分
Filed Under:

libpam-runtimeに入っているpam.d/common-*が変わったのでちょっと設定変更

auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_ldap.so use_first_pass
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so

となった。3行目の部分がデフォルトで追加されているのでこうなる。今までよりsuccessで飛ばす行数が増えた。

pam.conf(5)を読んでいて気付いたがrequiredとかのキーワードは[...]で定義される条件に名前をつけたものになっているわけですね。

git pushでちょっと驚いたこと

by TANIGUCHI Takaki — last modified 2009年03月03日 22時41分
Filed Under:

git pushはgit pullの反対ではない。

cloneしたリポジトリを変更して commit; pushとしてoriginを編集しようとしたら…???変更が反映されていない。あれ、commit失敗しているのかねと git log を見たら入っている。なんだこりゃと思ったが…。git pushしたときに次のようなメッセージが出ていたが…。
warning: updating the currently checked out branch; this may cause confusion,
as the index and working tree do not reflect changes that are now in HEAD.

git pushは gitの管理のところにcommit されるだけでワーキングツリーには反映されない。pushしたけりゃ専用リポジトリを用意しておけということみたい。確かに編集中にpushされてどんどんソースが変更されたら困ると思ってそういう設計にしてあるんだろうね。ちなみにpushされた側で git reset をかけたらきちんと merge(?)されたがそれでいいんだろうか。git diffでは何も出力されずに git diff HEADで出力されるというのも、合っているけどなんかね。

でも、自分のやっているように手元のPCとサーバ上の二箇所で作業するんだけの話だとdarcs使ったほうがいいかもしれない。FAQにはいろいろ工夫すればいいよということを書いてあるが…。

readIOで例外処理

by TANIGUCHI Takaki — last modified 2009年03月03日 22時41分
Filed Under:

パースに失敗してプログラムが落ちるでは意味がないので。

最初はreadを使っていたがreadIOに変更してごにょごにょと次のように。

import IO hiding (catch)
import Control.Exception
import Prelude hiding (catch)
-- ......
readPos :: IO (Int, Int)
readPos  = do
  line <- getLine
  catch (readIO line :: IO (Int,Int))
            (\e -> return (e::SomeException) >>
                   putStr "Input again!: " >>
                   hFlush stdout>>
                   readPos)

てな具合で。だんだんなんでもかんても再帰で処理する脳になってきた。よしよし。


takaki's twitter
焼酎風味の水に500円も取ろうとはどういう店だ。 2010年03月09日 22時53分
ジョブカードなる糞エクセル方眼紙を埋め中。心が折れそうだ。 2010年03月08日 22時16分
Excel方眼紙がOOoで崩れるわけだが。 2010年03月04日 22時49分
嫌味言ってりゃ世の中良くなるわけでもなし 2010年03月04日 22時06分
どう考えても風邪だがタイミングが悪すぎる 2010年03月02日 23時51分
Affiliate