【自作】 プログラミング 【してみた】

b85af321 anonymous 2011-07-22 07:30
特定の処理が成功するまで繰り返し実行させたいんだけど、
どんな風に書けば良いのだろう?

無限ループ内で処理して成功したらbreak?
5870a5b2 anonymous 2011-07-22 08:22
プログラミング力ゼロの俺が察するにbreakとかwhileとか例外処理とか。
例外処理はエラー処理の場合だけか?
6a5ae38d anonymous 2011-07-22 08:30
>>5870a5b2
try
{
  #処理内容
}catch{
  #↑の処理を再び実行したい。
  #再びエラーならもう一度・・・。
}
と、ここまで書いた時にふと気がついた。
一体どうやって成功するまで処理を繰り返すようにするのかと。
4167ab76 anonymous 2011-07-22 14:46
>>b85af321

特定の処理を行った結果をboolで返す関数を作って、それをwhileで回す。

while(true) {
  if (特定の処理()) {
    break;
  }
}

処理の内容にもよるけど引数が動的に変わる場合は再帰をつかったりする。

function 特定の処理を成功するまでやる() {
  if (特定の処理) {
    return true;
  }
  return 特定の処理を成功するまでやる();
}
944b35be anonymous 2011-07-22 14:51
>>6a5ae38d

Rubyならretryがある。
http://www.mapee.jp/ruby/retrybegin.html

でも「成功するまで繰り返す」場合の「失敗」は「例外」ではないから、
try-catchで実装するのはあまりよくない。
e3c84876 anonymous 2011-07-24 17:44
linuxのstatコマンドで -c %f hogehoge としたときの出力結果がやっと理解できた。

出力結果は ディレクトリ(通常)41ed ファイル 81edや81a4
これを10進数表現にしても 16877 33261 33188 とわけわかんない。
8進数表現で理解できた。40755 100755 100644
man 2 stat によると 0100000はregular file、0040000はdirectoryとのこと。
755や644はパーミッションで馴染みある数値。

8進数変換はbcコマンドでやったよ。
echo "obase=8;ibase=16; 41ED;81ED;81A4" | bc
88a6e33a anonymous 2011-07-25 02:01
>>e3c84876
シェルスクリプトでがんばれるってすごい。
自分はすぐにコードを書いてしまう。
上でやってる16進からの8進数変換だったら

$ ruby -e 'p ARGV[0].hex.to_s(8)' '41ed'

とか。
2dd9f933 anonymous 2011-07-25 13:54
俺がプログラムを書くとメモリーが直ぐに不足する。
メモリーの使い方が無茶苦茶なんだろうけど、如何にして削減すれば良いのだろうか。
f00d606b anonymous 2011-07-25 14:26
>>2dd9f933
オブジェクトの使い方を間違っているとか
テンポラリに書き出すべき一時情報を
オンメモリで保持しすぎとか、
最初から無茶なアルゴリズムで回してるとか
いろいろ考えられるよ。
adbb7fc3 anonymous 2011-07-25 21:56
いっぺんC言語でメモリ管理の何たるかを叩き込まれてきたほうがいいんじゃないか?
29da95a1 anonymous 2011-08-24 18:55 1314179721.zip (1KB)
Wikipediaシステム辞書生成スクリプト(wiki2dic.zip)

・はじめに
  Perlを完璧にマスターしている人向けです
  全て自己責任でお願いします
・ファイル構成
  wiki2dic.pl
  README.txt (このファイル)
  jawiki-latest-abstract.xml (別途入手してください)
・使い方
  1) perl wiki2dic.pl > userdic.txt
  2) MS-IMEで辞書ツールを開く
  3) ファイル>新規作成
     【重要】既存の辞書を破壊しないようにしましょう
  4) ツール>テキストファイルからの登録(6~12時間くらい)
  5) ツール>システム辞書の作成(6~12時間くらい)
  6) MS-IMEのプロパティを開く
  7) 辞書/学習タブを選択
  8) システム辞書 追加
・履歴
  2011/05/17 WikipediaからMS-IME用の辞書作ったら最強じゃね?と思いつく
  2011/05/19 完成
  2011/07/15 2chで公開
  2011/08/17 辞書登録する単語を日本語のみに絞る
55e12034 anonymous 2011-08-24 19:04
・とにかくパワフル。約2万5千語を網羅。
・人名、地名、作品名、専門用語の一発変換が強み。
・最初は誤変換(同じ読みでの優先順位が定まってないから)が多いけど、
 ある程度学習させれば気にならなくなる。
・せっかく作ったので現在布教中
b01eb616 anonymous 2011-08-24 19:07
・ビルド済みの辞書(MS-IME用)は以下のサイトからダウンロードできます。
 http://www.arkhamsoft.jp/
a23674b5 anonymous 2011-08-26 01:24
>>55e12034
linuxなんで関係ないけど、頑張れ。とperlユーザから応援してみる。
ea619786 anonymous 2011-08-30 14:11
JunkUtil紹介ページ
http://www.arkhamsoft.jp/junkutil/

暇なのでJavaのプロジェクトを立ち上げてみた。
Jakarta Commonsと役割が被ってるかもしれないが気にしない方向で。

2011/08/30
・NullUtilの関数名をnvlに変更
・LzList#grep, LzList#ungrep, StringUtil#match を追加
・README.txtを同梱
・修正BSDライセンスを適用
・WEBにサンプルプログラムを掲載
7797351e anonymous 2011-09-03 19:20
JunkUtilをSourceForgeに登録しました。
当面はソースコードのバージョン管理はせずに、
リリースだけしていく感じになるかと思います。

http://sourceforge.jp/projects/junkutil/
79f105bd anonymous 2011-09-13 22:30
MtGのカード名翻訳機(Java版)できたよー。

http://www.arkhamsoft.jp/download/MtgTransfer_ver1.3.zip

ローカルで「英→《日/英》」「日→《日/英》」の変換ができて、
「《日/英》→英」への逆変換もできるすぐれものです。
マジックのデッキリストの管理や、投稿前のちょっとした一手間に、
または英語デッキレシピの某ソフトへのインポートなどにお使いください。

運営さんの協力で「カードリストの更新」機能もあるので、
イニストラードが出ても万全です。
c917de8e anonymous 2011-09-22 23:03
http://sourceforge.jp/projects/junkutil/releases/
2011/09/23 1.0.7 安定版
・equalsOnSortのバグを修正
・メソッド名の一貫性の確保
 ・StringUtil#urlEncodeを非推奨、かわりにStringUtil#encodeURLを使うこと
 ・StringUtil#urlDecodeを非推奨、かわりにStringUtil#decodeURLを使うこと
・第一次安定化計画に基づく、安定版をリリース
39ef9535 anonymous 2011-09-22 23:38
>>c917de8e
新しいスレ立てちゃえば?
0c9771a9 anonymous 2011-09-25 18:09
>>39ef9535
2chプログラム技術板にスレ立てすることを考えたのですが、
忍法帖のレベルが足りないと怒られてしまいました……。

もしお邪魔でなければ、新月でのスレ立てを検討してみます。
73dead53 anonymous 2011-09-25 18:32
>>0c9771a9
いくらでもどうぞ
邪魔な人は取得しないだけだし
ec55a1f7 anonymous 2011-09-25 19:39
>>73dead53
別のゲートウェイ経由で立ててみました。
a7b11588 anonymous 2011-11-03 01:18 1320250715.txt (4KB)
バージョン管理ソフトsubversionのラッパー
http://www.blisted.org/blog/bin/svn

http://code.google.com/p/sv-subversion/
風味にしたもの。後、initとかも付けてみた。createしてimportしてcheckoutしてpropsetしてcommitするだけだけど。
scottさんのtabulate要ります。
e7ebcc77 anonymous 2011-12-13 19:41 1323772869.txt (2KB)
rss2chをパクったもの。
feedparser.pyとweb.pyが要ります。現時点での開発最新版を使いました。
Janeとかに http://localhost:8080/localhost:8000/gateway.cgi/rss/dummyname
という感じで登録すれば見れます。書けません。>>1 しかありません。
(レスアンカーの一部くらいは何とかしたいけど……)。
htmlタグの除去がかなりいい加減なので今のところ朔のRSSでしか使えないと思います。
一時的にキャッシュしますが、その時間はハードコーディングしてあります。ごめんね。
8be77acf anonymous 2011-12-13 20:32 1323775939.txt (3KB)
>>e7ebcc77
致命的なバグが2つも。>>e7ebcc77はなかったことにしてください。
b1108b1f anonymous 2011-12-17 21:16 1324124189.txt (4KB)
>>8be77acf
いろいろ修正。キャッシュにはshelve使うことにしました。一番楽なので。
後、ライセンスの明記を忘れてました。二条項BSDライセンスで。
c4fa384a anonymous 2011-12-18 16:57
Pythonを始める人への日本語情報集
http://d.hatena.ne.jp/doloopwhile/20111215/1323961291
489683bb anonymous 2011-12-18 18:59
>>b1108b1f
うー使い方がよくわからない。。常駐させてproxy的に使うの?
8411e8ae anonymous 2011-12-19 19:22
>>1004c1ea
テスト
1004c1ea anonymous 2011-12-19 19:27
>>489683bb
そうです。8080ポートを使うhttpサーバとして機能します。
pythonとwebpyとfeedparser.pyが必要です。
開発環境はcygwinですが、特に変なことはしていないつもりなのでWin32版Pythonでも動くと思います。
75706d51 anonymous 2011-12-20 21:28
>>1004c1ea
動かしてみたのですが
>Janeとかに http://localhost:8080/localhost:8000/gateway.cgi/rss/dummyname

ここの dummyname って何を入れればいいんですか?
cb1c433f anonymous 2011-12-21 22:01
>>75706d51
なんでもいいです。2chブラウザによってはdummyname部分を読んでいるらしいので適当に。
c7a142d1 anonymous 2011-12-23 20:44
>>cb1c433f
http://localhost:8080/ で見ると、Hello worldが返ってきて
動いている事を確認できているのですが、
http://127.0.0.1:8080/127.0.0.1:8000/gateway.cgi/rss/
とすると、空白ページになります。

saku側のアクセスログが出ていないので、saku側へうまくリクエストを
出せていないみたいですが、これはうちの環境なのかなぁ。

2bc84876 anonymous 2011-12-23 21:35
クリスマスプレゼント!
「みんなのPython Webアプリ編」のPDFを無料公開します!
だそうですよ。
http://coreblog.org/ats/minpy-web-is-now-free-to-read

9357285e anonymous 2011-12-23 23:13
>>c7a142d1
dummynameはなんでもいいのでつけてください。
http://127.0.0.1:8080/127.0.0.1:8000/gateway.cgi/rss/sakurss/
など。

これはrss2chを真似た結果なんですが、朔の場合/rss/で終わるので朔以外のRSSに対応していない今はいらないですね。
5b5239dc anonymous 2011-12-24 17:53
>>9357285e
いろいろありがとうございました。
おかげさまで無事に動作しました!

0.0.0.0:8080でbindしちゃうのでアドレスが
指定できたりするといいな~なんて思います。

うちの環境を書いておきますね。
o debian 6.0.3
o Python 2.6.6
  - web.py     0.34
  - feedparser 4.1
o saku-3.11.0
o jd4linux svn:3982
f1fe77ff anonymous 2011-12-25 14:15
>>5b5239dc
引数に 127.0.0.1:7777 のように指定して起動すれば
bindするアドレスとポートを自由に設定できるのですね。
失礼しました~
f4938cf1 anonymous 2011-12-25 15:04
>>b1108b1f
書き込み時間がGMTになっていませんか?
localtime()を追加すればいいとおもうんですが
書き方が・・・ ><
959261dc anonymous 2011-12-27 20:40
>>f4938cf1
仕様というなの手抜きです。
def conv_dat(self, entry, rss):

date = time.strftime("%Y/%m/%d %H:%M:%S (%a)", entry["updated_parsed"])
が問題部分です。単に日本時間にするだけなら9時間足せばいいのですが、ロケールに合わせる方法がわからなかったので暫定的にそのままにしました。



あれ、もしかして time.timezone 足せばいいのか……?
36eb7fed 959261dc 2011-12-27 20:57
>>959261dc
調べたところcalendarモジュールを使うといいようです。
import calendar
date = time.strftime("%Y/%m/%d %H:%M:%S (%a)", time.localtime(calndar.timegm(entry["updated_parsed"])))
でしょうか。
e13b09f4 959261dc 2011-12-27 20:59
>>36eb7fed
calndarってなんだ。calendarです。いわゆるたいぽ。
c7f15487 anonymous 2011-12-29 13:45
秘密でゴソゴソ

#!/usr/bin/ruby

require 'net/http'

http = Net::HTTP.new('bilivideo.com')

# SPAM
res = http.post('/admin.cgi', 'cmd=fdel&file=thread_5350414D')
s = res.body.scan(/^<input.*sid.*value=\"([a-z0-9]+)/)
res = http.post('/admin.cgi', "cmd=xfdel&sid=#{s}&file=thread_5350414D")

# 自作PC
res = http.post('/admin.cgi', 'cmd=fdel&file=thread_E887AAE4BD9C5043')
s = res.body.scan(/^<input.*sid.*value=\"([a-z0-9]+)/)
res = http.post('/admin.cgi', "cmd=xfdel&sid=#{s}&file=thread_E887AAE4BD9C5043")

# 雑談しながらリンクを貼るスレ
res = http.post('/admin.cgi', 'cmd=fdel&file=thread_E99B91E8AB87E38197E381AAE3818CE38289E383AAE383B3E382AFE38292E8B2BCE3828BE382B9E383AC')
s = res.body.scan(/^<input.*sid.*value=\"([a-z0-9]+)/)
res = http.post('/admin.cgi', "cmd=xfdel&sid=#{s}&file=thread_E99B91E8AB87E38197E381AAE3818CE38289E383AAE383B3E382AFE38292E8B2BCE3828BE382B9E383AC")

さて、どうするかな…
addd06a5 anonymous 2011-12-29 13:48
>>c7f15487
最後 & で切れてるけど、1行です。
56e715fa anonymous 2011-12-29 14:32
>>c7f15487
こいつをcronで廻せばいいのかな?w
ぐっじょぶ
ba433b93 anonymous 2011-12-29 21:16
>>56e715fa
まあほどほどでおねがいします
8044476c anonymous 2011-12-29 22:14
>>c7f15487
せっかくいろいろ裏工作したのに、全部消えてるじゃないかー!(涙
b42915d8 anonymous 2011-12-31 01:41
>>8044476c
定期的にすべてのスレを削除すれば確実かと。
c4cd917a anonymous 2011-12-31 02:17
>>b42915d8
いや、キャッシュ保持してほしいからいろいろ読ませてた。
b91c6e73 anonymous 2012-02-22 18:33
>>491360c8
1年4ヶ月くらい前の cursesライブラリでpauseコマンド にバグがあった。
3行くらいしかなくてもバグるもんなんだなー。

mainの中の initscr();getch();endwin();return 0;
が正しくは initscr();nocbreak();getch();endwin();return 0;
さらにいえば、newterm(NULL,stdin,stdout);nocbreak();getch();endwin();return 0; でリダイレクト不要。
2cb87f90 anonymous 2012-06-28 17:53
cursesライブラリを使わない、超簡易ページャみたいなの。coreutilsの範囲内コマンドしか使ってないつもり。
 
#!/bin/sh

MAXLINE=30
MORE="--more--"

CAT="cat"
WC="wc"
EXPR="expr"
SEQ="seq"
HEAD="head"
TAIL="tail"

FILE="$1"

LINE=`$CAT $FILE | $WC -l`
COUNT=`$EXPR $LINE / $MAXLINE + 1`

for i in `$SEQ $COUNT`; do
    CURRENT=`$EXPR $i \* $MAXLINE`
    $HEAD -$CURRENT $FILE | $TAIL -$MAXLINE
    echo $MORE
    read j
done

2バイト文字をうまくfoldする方法があれば教えてください。
1753a8e4 anonymous 2012-06-28 19:08
>>2cb87f90
思いついてこんなの書いてみたけど、めっちゃ動作が重い。あたりまえだけど。cmpやnkfもつかってるしだめだめだねー。
trapしてるからbash専用? そうでもないのかな?

#!/bin/sh

MAXLINE=63
MAXLENGTH=159
MORE="--more--"
ORIG="/tmp/ep.orig.$$"
SAVE="/tmp/ep.save.$$"
TMP="/tmp/ep.tmp.$$"
OUT="/tmp/ep.out.$$"
NULL="/dev/null"

CAT="cat"
WC="wc"
EXPR="expr"
HEAD="head"
TAIL="tail"
CMP="cmp"
NKF="nkf"

FILE="$1"

trap "rm -f $ORIG $SAVE $TMP $OUT; exit" 1 2 3 15

cp $FILE $ORIG
COUNT=0
LINE=0
$CAT $NULL > $SAVE
$CAT $NULL > $OUT
while ! $CMP -s $ORIG $SAVE; do
    COUNT=`$EXPR $COUNT + 1`
    $HEAD -$COUNT $FILE | $TAIL -1 > $TMP
    LENGTH=`$CAT $TMP | $NKF -e | $WC -c`
    LENGTH=`$EXPR $LENGTH / $MAXLENGTH + 1`
    LINE=`$EXPR $LINE + $LENGTH`
    $CAT $TMP >> $SAVE
    $CAT $TMP >> $OUT
    if test $LINE -ge $MAXLINE; then
        $CAT $OUT
        echo $MORE
        $CAT $NULL > $OUT
        LINE=0
        read q
    fi
done

$CAT $OUT

rm -f $ORIG $SAVE $TMP $OUT

Top of this page. |

limit: 15360KB

(【自作】 プログラミング 【してみた】/51/0.0MB)

Powered by shinGETsu.