週記くらい

  • Profile

Monthly Archives: April 2008

Starbug1 0.3.1-beta

Posted on 2008/04/26 by smeghead

プロジェクトホームページ: http://starbug1.sourceforge.jp/

sourceforge.jp: http://sourceforge.jp/projects/starbug1

開発しているBTS(バグトラッキングシステム)の Starbug1 0.3.1-betaをリリースします。

主な修正点は以下です。

  • チケット詳細ページのHTMLタイトルを、「#id 件名」に変更した。
  • チケット一括登録作成した。
  • チケット登録時に、返信専用属性のチェックを行なってしまう問題を修正した。
  • RSS用のlinkタグを追加した。
  • httpsの場合の対応、サーバのポート番号がデフォルト以外の場合の対応をした。
  • キーワード検索で、複数語を条件にして検索できるようにした。半角スペースで区切って複数の単語を指定して検索する。
  • チケット検索でキーワード検索が一番上にくるように検索条件の順番を変更した。

今回、チケット一括登録の機能が結構大きな変更なので、バージョンを 0.2 系から 0.3 系にしました。

チケット一括登録機能について

複数のチケットを一括で登録できるようになったので、タスク管理など計画を立てた時点でチケットの内容が決定しているような場合、使い易くなると思います。

チケット一括登録機能の使い方について、簡単に書いておきます。

  • 複数のチケットの情報を、CSV形式で準備する。(これは、ガントプロジェクトなどの別のツールなどを使うと簡単です。また、ガントプロジェクトで出力した内容をExcelで編集することも簡単です。)
ガントプロジェクトでのCSV出力
2029,"    基本設計",08/06/12,08/06/26,10,0,"","山田","",
2099,"    詳細設計",08/06/26,08/07/02,4,0,"","岩城","",
Excelで、Starbug1用にデータを成形する。日付の項目のフォーマット変更。状態カラムを追加。
2029,"基本設計",2008-06-12,2008-06-26,10,0,"","山田","","新規"
2099,"詳細設計",2008-06-26,2008-07-02,4,0,"","岩城","","新規"
  • Starbug1でチケット一括登録ページを開く。
  • CSVの内容をページ内のテキストエリアに貼り付けて、解析ボタンを押す。
  • チケット一括登録確認ページで、CSVの各カラムをどの項目として登録するかを選択する。(不要なカラムは、無視することができます)
    • 2番目のカラムを「件名」と設定する。
    • 3番目のカラムを「開始日」と設定する。(管理ツールで開始日という項目が追加されていることを前提とします)
    • 4番目のカラムを「終了日」と設定する。(管理ツールで終了日という項目が追加されていることを前提とします)
    • 8番目のカラムを「担当者」と設定する。(管理ツールで担当者という項目が追加されていることを前提とします)
    • 10番目のカラムを「状態」と設定する。
  • 登録ボタンを押す。

以上で、複数のチケットを一括で登録することができます。


この機能は、まだ作成したばかりなので、バグがあると思います。この機能以外でも何かあったら、連絡いただけると嬉しいです。

Posted in starbug1 | Leave a comment |

flex & bison 実験中

Posted on 2008/04/21 by smeghead

Starbug1の新機能であるチケットの一括登録の情報を、csvで入力を受けることを考えていたんですが、” のエスケープやら改行入りデータとかを考えると滅入ってきたので、flex bison で CSVパーサを作ってみようかと思いました。実験中なのでいつにも増して信憑性の無い情報となっています。間違いがわかったら、修正していきます。

http://www.linux.or.jp/JF/JFdocs/Lex-YACC-HOWTO-4.html を参考にさせて貰いました。

csvlex.l

%{
#include <stdio.h>
#include "csvparser.tab.h"
%}
%%
\"        return QUOTE;
[^,"\n]*  yylval=strdup(yytext); return WORD;
,         return SEP;
\n        return LINESEP;
%%

csvparser.y

%{
#define YYSTYPE char *
#include <stdio.h>
#include <ctype.h>
int yylex(void);
int yyerror(const char *s);
int yyparse(void);
int yywrap(void);
%}
%token QUOTE WORD SEP LINESEP
%%
csv:    /* 空 */
        | fields
;
fields: field | fields field
field: SEP
     | LINESEP
     | WORD SEP      { printf ("\t%s\n", $1); }
     | WORD LINESEP      { printf ("\t%s\n", $1); }
     | QUOTE WORD QUOTE SEP  { printf ("\t%s\n", $2); }
     | QUOTE WORD QUOTE LINESEP { printf ("\t%s\n", $2); }
;
%%
main()
{
yyparse();
}
yyerror(const char *s)
{
printf("ERROR: %s\n", s);
}
int yywrap()
{
return 1;
}

コンパイル

$ flex csvlex.l
$ bison -d csvparser.y
$ gcc lex.yy.c csvparser.tab.c
csvlex.l: In function `yylex':
csvlex.l:8: warning: assignment makes integer from pointer without a cast

警告出てる。

実行

$ ./a.exe
"abc",def
abc
def
あいいう,え,お,幹事
あいいう
え
お
幹事
あいう,"jak","ごりら"
あいう
jak
ごりら

この方向で合ってるのかな?

Posted in bison, flex, starbug1 | Leave a comment |

Vine Linux 4.2

Posted on 2008/04/20 by smeghead

ようやく、OS入れ替えをする決心がついた。なにせ、現在のOSは、VineLinux2.6。化石のようなOSです。

で、次は、Debianにしようかと思ってはいたんですが、一番楽な選択肢に流れてVineにすることにしました。バックアップもそこそこに入れ替えちゃおうとしてます。(元々/homeは別パーテーション区切ってあるから、そこはそのままで)

今日のうちに、新OSからの書き込みが無かったら失敗ということです…

追記(Vine Linex4.2からの書き込み)

無事インストールが完了しました!!!!!

これで、現在のLinuxユーザの仲間入りです。

Linuxのインストールも簡単になったもんだなー。(しみじみ)フォントも綺麗だし、X周りで、はまらないし。Firefoxが最初から入ってるし。もう、以前のようにLinuxで遊ぶという感覚は味わえないな。そうゆう意味では、Linux OSの開発者達の努力は、称賛ものです。涙無しには語れませんね。

しかし、このAnthyというinputmethodは、疲れるので、skkinputを入れねば。。。

Posted in linux | 2 Comments |

Starbug1 チケット一括登録機能

Posted on 2008/04/19 by smeghead

久しぶりに、大きな機能追加をしています。この機能は、Starbug1をタスク管理ツールとして便利に使うための機能です。


プロジェクト管理において、管理したいタスクの数は結構な数になってしまいます。タスク定義の粒度にも因りますが、一つの開発プロジェクトで 100件を越えるタスクに分割するのも普通のことだと思います。ガントプロジェクトなどのプロジェクト管理ツールなどで、工程を定義した後、工程一つ一つを、Starbug1のチケット登録画面から登録していくのは、地獄の作業になってしまいます。


この問題を解決するために、CSV形式で複数のチケットを一括で登録できるインターフェースを付けることを決めました。

ガントプロジェクトというプロジェクト管理ツールは、CSV形式でタスクを出力することができます。他のプロジェクト管理ツールでも、CSV形式の出力を行なえる物は多いと思います。

比較的柔軟に登録できるようにインターフェースを作ってるので、入力形式の準備が大変ということにはならないのではないかと、考えてます。とは言え、まだ、CVSリポジトリ上で、ごにょごにょしてる状態なので、完成はまだ先になります。

Posted in starbug1 | Leave a comment |

pythonのOOP インスタンス変数の継承

Posted on 2008/04/14 by smeghead

大きな勘違いでした。追記までは、間違いです。追記部分参照

はまった。(cygwin python2.5.1)

いろいろ試してた現時点での結論は「pythonでは、コンストラクタを省略して継承したら、インスタンス変数は継承されなくなる」なんだけど、本当にそうゆうものなんだろうか?

#! /usr/bin/python
# -*- coding: cp932 -*-
class Tag(object):
def __init__(self, children = [], attrs = {}):
self.children = children
def addChild(self, child):
self.children.append(child)
class Html(Tag):
pass
html1 = Html()
html2 = Html()
html1.addChild("child of html1")    # Htmlのクラス変数へappendされてしまう。
html2.addChild("child of html2")    # Htmlのクラス変数へappendされてしまう。
print html1.children
# => ['child of html1', 'child of html2'] ..........  orz.
print html2.children
# => ['child of html1', 'child of html2'] ..........  orz.

思ったことなど

  • pythonのクラスのインスタンス変数はコンストラクタなどでアクセスした時に作られるらしい。
  • しかも、Html()が呼ばれたときに実行される Tag.__init__ も Htmlクラスのメソッドとしては実行されないみたい。
  • だから、コンストラクタを省略して継承してもインスタンス変数は、引き継がれない。
  • ↓のように、明示的にコンストラクタを作って、インスタンス変数にしたい変数を作って初期化してあげないとインスタンス変数ができない。インスタンス変数ができないとクラス変数になってしまう。(あまり良くわかってないかも)
class Html(Tag):
def __init__(self, children = [], attrs = {}):
self.children = children
  • これじゃ、全然嬉しくない。というか、これが本当ならpythonで真面目にOOPするのは辛い気がするんですが、何か大きな勘違いをしてるような気もしてます。

python の oop のいい入門ページって無いですかね。。。

追記 大きな勘違いでした。

速攻で、コメントを貰いました。ありがとうございます。

重要な警告: デフォルト値は 1 度だけしか評価されません。デフォルト値がリストや辞書のような変更可能なオブジェクトの時にはその影響がでます。例えば以下の関数は、後に続く関数呼び出しで関数に渡されている引数を累積します:

def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
このコードは、
[1]
[1, 2]
[1, 2, 3]
を出力します。
後続の関数呼び出しでデフォルト値を共有したくなければ、代わりに以下のように関数を書くことができます:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
4.7.1 デフォルトの引数値

まさに、これでした。

何気なしに使ってみたデフォルト引数の機能で、重要な警告がありました。デフォルト引数の値が、変更可能なオブジェクトの場合、そのまま使っちゃだめということを教えていただきました。

修正版

#! /usr/bin/python
# -*- coding: cp932 -*-
class Tag(object):
def __init__(self, children = None, attrs = None):
if children is None:
children = []
self.children = children
def addChild(self, child):
self.children.append(child)
class Html(Tag):
pass
html1 = Html()
html2 = Html()
html1.addChild("child of html1")    # ちゃんとhtml1のインスタンスに追加されるようになった。
html2.addChild("child of html2")    # ちゃんとhtml2のインスタンスに追加されるようになった。
print html1.children
# => ['child of html1']
print html2.children
# => ['child of html2']
Posted in python | 2 Comments |
Next Page »

Pages

  • Profile

Archives

  • March 2018
  • May 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • April 2014
  • November 2013
  • October 2013
  • July 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • July 2006

Categories

  • android (35)
  • apache (1)
  • bison (1)
  • BTS (18)
  • c# (23)
  • cgi (1)
  • chrome (9)
  • chromeextention (18)
  • clclcl (9)
  • clojure (13)
  • cloudbug1 (2)
  • css (4)
  • cygwin (7)
  • C言語 (21)
  • dart (1)
  • dotnet (11)
    • vb.net (2)
  • e-hash.jp (1)
  • eclipse (2)
  • emacs (10)
  • excel (1)
  • flex (1)
  • framework (11)
  • free (92)
  • gae (4)
  • gcc (4)
  • gimmehash.in (1)
  • glipper (3)
  • golang (7)
  • howm (1)
  • html (3)
  • ikushipe (1)
  • java (47)
  • JavaScript (28)
  • linux (16)
  • lisp (92)
  • lua (34)
  • luatinycgi (2)
  • mba (1)
  • Meadow (4)
  • memo (1)
  • music (5)
  • mysql (1)
  • neta (5)
  • O/Rマッピングツール (4)
  • obj-c (6)
  • OOP (6)
  • oracle (1)
  • perl (48)
  • php (38)
    • CakePHP2 (2)
  • PostgreSQL (8)
  • PowerShell (1)
  • putty (1)
  • python (14)
  • redmine (2)
  • ruby (7)
  • s3 (1)
  • sakura (5)
  • screen (1)
  • Selenium (1)
  • SF (1)
  • SKK (4)
  • slime (6)
  • sql (8)
  • sqlite3 (4)
  • starbug1 (179)
  • tthttpd (3)
  • twitter (7)
  • ubuntu (14)
  • Uncategorized (4)
  • unix (14)
  • unkode-mania (5)
  • vba (3)
  • vim (24)
  • w3m (1)
  • Windows (16)
  • wordpress (1)
  • zsh (6)
  • 愚痴 (1)

WordPress

  • Log in
  • WordPress

Subscribe

  • Entries (RSS)
  • Comments (RSS)

Pages

  • Profile

Archives

  • March 2018
  • May 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • April 2014
  • November 2013
  • October 2013
  • July 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • March 2012
  • February 2012
  • January 2012
  • December 2011
  • November 2011
  • October 2011
  • September 2011
  • August 2011
  • July 2011
  • June 2011
  • May 2011
  • April 2011
  • March 2011
  • February 2011
  • January 2011
  • December 2010
  • November 2010
  • October 2010
  • September 2010
  • August 2010
  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • April 2007
  • March 2007
  • February 2007
  • January 2007
  • December 2006
  • July 2006

Categories

  • android (35)
  • apache (1)
  • bison (1)
  • BTS (18)
  • c# (23)
  • cgi (1)
  • chrome (9)
  • chromeextention (18)
  • clclcl (9)
  • clojure (13)
  • cloudbug1 (2)
  • css (4)
  • cygwin (7)
  • C言語 (21)
  • dart (1)
  • dotnet (11)
    • vb.net (2)
  • e-hash.jp (1)
  • eclipse (2)
  • emacs (10)
  • excel (1)
  • flex (1)
  • framework (11)
  • free (92)
  • gae (4)
  • gcc (4)
  • gimmehash.in (1)
  • glipper (3)
  • golang (7)
  • howm (1)
  • html (3)
  • ikushipe (1)
  • java (47)
  • JavaScript (28)
  • linux (16)
  • lisp (92)
  • lua (34)
  • luatinycgi (2)
  • mba (1)
  • Meadow (4)
  • memo (1)
  • music (5)
  • mysql (1)
  • neta (5)
  • O/Rマッピングツール (4)
  • obj-c (6)
  • OOP (6)
  • oracle (1)
  • perl (48)
  • php (38)
    • CakePHP2 (2)
  • PostgreSQL (8)
  • PowerShell (1)
  • putty (1)
  • python (14)
  • redmine (2)
  • ruby (7)
  • s3 (1)
  • sakura (5)
  • screen (1)
  • Selenium (1)
  • SF (1)
  • SKK (4)
  • slime (6)
  • sql (8)
  • sqlite3 (4)
  • starbug1 (179)
  • tthttpd (3)
  • twitter (7)
  • ubuntu (14)
  • Uncategorized (4)
  • unix (14)
  • unkode-mania (5)
  • vba (3)
  • vim (24)
  • w3m (1)
  • Windows (16)
  • wordpress (1)
  • zsh (6)
  • 愚痴 (1)

WordPress

  • Log in
  • WordPress

CyberChimps WordPress Themes

© 週記くらい@やーづ

With Google+ plugin by Geoff Janes