CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: http://kohada.2ch.net/php/)
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
www.perl.org/get.html
Download Latest Stable Source (5.18.2)
▼前スレ
Perlについての質問箱 61箱目
http://toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.2ch.net/test/read.cgi/tech/1385039352/
Perlについての質問箱 63箱目
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2014/02/19(水) 23:36:23.29341デフォルトの名無しさん
2016/07/22(金) 23:38:00.41ID:SRU6z2ZT はいはい。犯罪者予備軍ね。NGにしときますわ。
やりたいことやりたい人は処理系にこだわりはないのにアホか。
コード書けない中学生がVBよりVCと言ってるのと変わらんわ。
やりたいことやりたい人は処理系にこだわりはないのにアホか。
コード書けない中学生がVBよりVCと言ってるのと変わらんわ。
342デフォルトの名無しさん
2016/07/23(土) 01:01:50.42ID:tWjtYIW6 >>340
逆だろ?
PHPが他の言語と一緒だということを証明するために
他の言語でもあるような機能を言う。
PHPは他の言語と同じであることを示すことが、正しい論破の仕方だ。
PHPは「他の言語+αの機能」であるという事実に対して
それと同じものを出すことで、何を論破することになるのか?
逆だろ?
PHPが他の言語と一緒だということを証明するために
他の言語でもあるような機能を言う。
PHPは他の言語と同じであることを示すことが、正しい論破の仕方だ。
PHPは「他の言語+αの機能」であるという事実に対して
それと同じものを出すことで、何を論破することになるのか?
343デフォルトの名無しさん
2016/07/23(土) 02:01:49.49ID:bOUqJlZz そろそろ邪魔くさくなったから消えてほしい
劣等感のかたまりは迷惑関係なく必死で長所をアピールしはじめるってね
適切なスレでやってくれんかね
劣等感のかたまりは迷惑関係なく必死で長所をアピールしはじめるってね
適切なスレでやってくれんかね
344デフォルトの名無しさん
2016/07/23(土) 02:30:45.09ID:Z+5onCph 嫌なら見なければいいのに
他人にあっちいけとか指示する池沼っているよな。
自己中心的な池沼のお手本。
他人にあっちいけとか指示する池沼っているよな。
自己中心的な池沼のお手本。
345デフォルトの名無しさん
2016/07/23(土) 08:35:47.91ID:rC+TU0A1 他プロセスでファイルをopenしているときにそのファイルをrenameしようとすると
renameできないみたいだけどうまくrenameする方法は?
renameできないみたいだけどうまくrenameする方法は?
346デフォルトの名無しさん
2016/07/23(土) 10:06:58.15ID:I+uJVTmO close
347デフォルトの名無しさん
2016/07/23(土) 11:14:44.62ID:rC+TU0A1 >>346
それだとopenとcloseする間にrenameが割り込むとだめ
そこで自分で方法を考えました
まずディレクトリにaccess_kinshi.datというファイルを作ります
このファイルが存在している間は他プロセスでこのディレクトリにあるファイルは全てアクセスできないものとする
そしてディレクトリ内にあるファイルを全てrenameする
そのあとaccess_kinshi.datファイルを削除すればいいということです
それだとopenとcloseする間にrenameが割り込むとだめ
そこで自分で方法を考えました
まずディレクトリにaccess_kinshi.datというファイルを作ります
このファイルが存在している間は他プロセスでこのディレクトリにあるファイルは全てアクセスできないものとする
そしてディレクトリ内にあるファイルを全てrenameする
そのあとaccess_kinshi.datファイルを削除すればいいということです
348デフォルトの名無しさん
2016/07/23(土) 11:20:06.22ID:I+uJVTmO 前提条件が変わってますけど
349デフォルトの名無しさん
2016/07/23(土) 15:21:23.54ID:bOUqJlZz 他のプロセスってなに?
どっちもPerlで自分の作った物なら、ファイルロックでも使うと良い。
自動待機してくれる
どっちもPerlで自分の作った物なら、ファイルロックでも使うと良い。
自動待機してくれる
350デフォルトの名無しさん
2016/07/23(土) 19:27:38.24ID:IQFGkMCr 後方参照で教えていただきたいことがあります。
A 80 90
(空白の部分はタブかスペース)
と書いてあるファイルの80とか90の部分を書き換えたいのです。
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$2$3$4$5/' file で
マッチした部分を参照できるのはわかっているのですが、この場合$3の「80」を「1」にするには
どのような方法をとればよいでしょうか?
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$21$4$5/' file とすると
$21と解釈されるようで結果がA 90となってしまいます。
A 80 90
(空白の部分はタブかスペース)
と書いてあるファイルの80とか90の部分を書き換えたいのです。
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$2$3$4$5/' file で
マッチした部分を参照できるのはわかっているのですが、この場合$3の「80」を「1」にするには
どのような方法をとればよいでしょうか?
perl -pe 's/^([A-Z])(\s+)([0-9]{2})(\s+)([0-9]{2})/$1$21$4$5/' file とすると
$21と解釈されるようで結果がA 90となってしまいます。
351デフォルトの名無しさん
2016/07/23(土) 19:32:51.24ID:sc8oJJPG シェルスクリプトと同じで、{} で変数名を明治する。
/${1}${2}1${4}${5}/
/${1}${2}1${4}${5}/
352デフォルトの名無しさん
2016/07/23(土) 19:41:00.25ID:IQFGkMCr353デフォルトの名無しさん
2016/07/23(土) 20:22:22.12ID:rC+TU0A1 >>349
他プロセスとは同じプログラムを複数で同時実行したやつです
それとファイルロックだとディレクトリにあるファイル1つ1つにロックしなきゃならないので
ディレクトリにあるファイル全てにアクセス禁止するために
アクセス禁止用ファイルを作りました
他プロセスとは同じプログラムを複数で同時実行したやつです
それとファイルロックだとディレクトリにあるファイル1つ1つにロックしなきゃならないので
ディレクトリにあるファイル全てにアクセス禁止するために
アクセス禁止用ファイルを作りました
354デフォルトの名無しさん
2016/07/23(土) 20:22:25.35ID:erGYoQ8z スクリプトを動かすときは、「動きますように」と昭和する。
355デフォルトの名無しさん
2016/07/23(土) 20:41:29.11ID:KzTkH9Ph 自分で考えているというのは大変良いことだと思うけど、聞きたいことがあるなら
環境くらいは書いてくれないと……
それに、使用中のファイルを rename することの何が問題なのかさっぱり解らない。
まず、何をするプログラムなのかを書いた方がいいと思うよ。
環境くらいは書いてくれないと……
それに、使用中のファイルを rename することの何が問題なのかさっぱり解らない。
まず、何をするプログラムなのかを書いた方がいいと思うよ。
356デフォルトの名無しさん
2016/07/23(土) 22:25:30.57ID:rC+TU0A1 a
357デフォルトの名無しさん
2016/07/23(土) 22:36:22.09ID:rC+TU0A1 なんか書き込こもうとするとエラーが出て書き込めないわ
358デフォルトの名無しさん
2016/07/23(土) 22:48:53.55ID:rC+TU0A1 ようするに
てすと1シージーアイ
OPEN(IN、”あああ.DAT”);
すりーぷ(5);
cLOSE(IN);
てすと2シージーアイ
リネーム(”あああ.DAT”、”AAA。DAT”);
これを同時実行してもリネームはできなかったってこと
てすと1シージーアイ
OPEN(IN、”あああ.DAT”);
すりーぷ(5);
cLOSE(IN);
てすと2シージーアイ
リネーム(”あああ.DAT”、”AAA。DAT”);
これを同時実行してもリネームはできなかったってこと
359デフォルトの名無しさん
2016/07/23(土) 22:51:17.71ID:rC+TU0A1 同時実行って言ったけど先にてすと1の方を起動して5秒以内にてすと2を起動です
360デフォルトの名無しさん
2016/07/23(土) 23:18:44.54ID:eYAwBGPh 他のプロセスが開いているファイルを、更新できるわけないだろ
2つのプロセスで、ファイル共有できるのは、read & read、の組み合わせだけ。
read & write, write & read, write & write は、共有できない
2つのプロセスで、ファイル共有できるのは、read & read、の組み合わせだけ。
read & write, write & read, write & write は、共有できない
361デフォルトの名無しさん
2016/07/23(土) 23:40:01.25ID:sc8oJJPG >他のプロセスが開いているファイルを、更新できるわけないだろ
何を前提に話してんだ?
更新出来るから、ファイルロックなぞの方法が開発されたんじゃねーの?
$ for i in 1 2 3 4 5 ; do
> perl -le 'open my $f, q{>>}, q{foo.txt} ; print $f q{foo} ; sleep 2' &
> done
$ cat foo.txt
foo
foo
foo
foo
foo
何を前提に話してんだ?
更新出来るから、ファイルロックなぞの方法が開発されたんじゃねーの?
$ for i in 1 2 3 4 5 ; do
> perl -le 'open my $f, q{>>}, q{foo.txt} ; print $f q{foo} ; sleep 2' &
> done
$ cat foo.txt
foo
foo
foo
foo
foo
362デフォルトの名無しさん
2016/07/23(土) 23:51:16.68ID:tWjtYIW6363デフォルトの名無しさん
2016/07/23(土) 23:55:37.22ID:sc8oJJPG364デフォルトの名無しさん
2016/07/24(日) 00:40:44.17ID:9mJaMPLw 更新できるのは、同一プロセス内のマルチスレッドだろ
だから、マルチスレッド・プログラミングは難しい
だから、マルチスレッド・プログラミングは難しい
365デフォルトの名無しさん
2016/07/24(日) 01:05:08.31ID:IyAH6Xir ファイイルロックのモードは2より5のノンブロッキングの方が軽いですか?
366デフォルトの名無しさん
2016/07/24(日) 01:16:29.25ID:p8SJSbCV367デフォルトの名無しさん
2016/07/24(日) 02:10:22.95ID:8SIezcUV 上の2行は頭いいように見えたが
下の2行でホントに頭が悪い人だと思った。
誹謗癖はやめようね。嫌われるよ。というかすでに嫌われてると思うけど。
下の2行でホントに頭が悪い人だと思った。
誹謗癖はやめようね。嫌われるよ。というかすでに嫌われてると思うけど。
368デフォルトの名無しさん
2016/07/24(日) 02:12:06.72ID:p8SJSbCV >>367
正しいのか間違っているのかをいえよ。
正しいのか間違っているのかをいえよ。
369デフォルトの名無しさん
2016/07/24(日) 03:52:51.83ID:9mJaMPLw ノンブロッキングは、Node.js などが並行処理で、リクエストを受け付ける場合に使う。
こういうのは、プロ中のプロが使うもので、プログラムも順序通りには進まないから、
プログラミングが極めて難しい(イベントドリブン)
初心者は、ブロッキングを使え。
プログラムは一本道で、順序通りに進む
こういうのは、プロ中のプロが使うもので、プログラムも順序通りには進まないから、
プログラミングが極めて難しい(イベントドリブン)
初心者は、ブロッキングを使え。
プログラムは一本道で、順序通りに進む
370デフォルトの名無しさん
2016/07/24(日) 04:07:39.30ID:p8SJSbCV ※ただしマルチタスクOSじゃない場合に限る
371355
2016/07/24(日) 10:28:35.84ID:K5Ja97DP >>358
少なくとも Linux では問題なく rename できるよ。
rename できないというのはシステムコールのマニュアルに書いてあるの?
テストのやり方に問題は無かったの? こんなふうに同期させた方がいいと思うんだけど。
https://ideone.com/639PgP
少なくとも Linux では問題なく rename できるよ。
rename できないというのはシステムコールのマニュアルに書いてあるの?
テストのやり方に問題は無かったの? こんなふうに同期させた方がいいと思うんだけど。
https://ideone.com/639PgP
372デフォルトの名無しさん
2016/07/24(日) 22:44:38.60ID:IyAH6Xir このようにflockをネストするのは問題ありますか?
open(IN, "< $datafile");
flock(IN, 1);
open(IN2, "< $datafile2");
flock(IN2, 1);
close(IN2);
close(IN);
open(IN, "< $datafile");
flock(IN, 1);
open(IN2, "< $datafile2");
flock(IN2, 1);
close(IN2);
close(IN);
373デフォルトの名無しさん
2016/07/25(月) 18:20:04.46ID:tVy4ghQr >>371
windows環境だけどopen中のファイルのrenameはできなかった
例えばtestディレクトリがあって、プロセスAでtestディレクトリにあるファイルのrenameやファイルの作成、
プロセスBでtestディレクトリを削除するとした場合
testディレクトリにファイルが残っているとrmdirが成功しないのでtestディレクトリを削除できない
unlinkでtestディレクトリのファイルを全て削除してからtestディレクトリを削除しようとしても
その間にプロセスAでファイルが作成された場合ディレクトリを削除できない
だからディレクトリそのものをロックしたいっていうこと
windows環境だけどopen中のファイルのrenameはできなかった
例えばtestディレクトリがあって、プロセスAでtestディレクトリにあるファイルのrenameやファイルの作成、
プロセスBでtestディレクトリを削除するとした場合
testディレクトリにファイルが残っているとrmdirが成功しないのでtestディレクトリを削除できない
unlinkでtestディレクトリのファイルを全て削除してからtestディレクトリを削除しようとしても
その間にプロセスAでファイルが作成された場合ディレクトリを削除できない
だからディレクトリそのものをロックしたいっていうこと
374デフォルトの名無しさん
2016/07/26(火) 08:16:09.27ID:Yl3q3y9J >>372
問題ない
問題ない
375デフォルトの名無しさん
2016/07/26(火) 13:18:10.17ID:0CGOQrnU >>373
そういうことを先に書いてくれないと……
そうか、Windows ではできないのか……
プロセスAの処理が終わるまでプロセスBを待たせておきたいということなら
普通に mkdir でどうでしょう。可搬性も高い排他制御の定番です。
そういうことを先に書いてくれないと……
そうか、Windows ではできないのか……
プロセスAの処理が終わるまでプロセスBを待たせておきたいということなら
普通に mkdir でどうでしょう。可搬性も高い排他制御の定番です。
376デフォルトの名無しさん
2016/07/26(火) 13:54:47.54ID:M5KaPrwS377デフォルトの名無しさん
2016/07/26(火) 18:01:31.91ID:0CGOQrnU 何が目的でそのための何をしている状況なのかというのがいまだに理解できないんだけど、
そもそもそんな状況にしないやり方を考えた方がいいのかもしれない。
どうしても排他制御が必要なら例えばデータベースを使うというのは Windows でも出きると思う。
Windows のことは知らないからこれ以上はお役に立てそうに無い。
そもそもそんな状況にしないやり方を考えた方がいいのかもしれない。
どうしても排他制御が必要なら例えばデータベースを使うというのは Windows でも出きると思う。
Windows のことは知らないからこれ以上はお役に立てそうに無い。
378デフォルトの名無しさん
2016/07/27(水) 02:23:44.17ID:8IadtePG 簡単に言うとディレクトリをmkdirで削除したいけど
削除しようとしている間にディレクトリ内にファイルを作られるとmkdirできなくて削除できないので
ディレクトリ内にファイル作成もディレクトリ内のファイル読み込みも禁止にしたかったってこと
削除しようとしている間にディレクトリ内にファイルを作られるとmkdirできなくて削除できないので
ディレクトリ内にファイル作成もディレクトリ内のファイル読み込みも禁止にしたかったってこと
379デフォルトの名無しさん
2016/07/27(水) 02:26:13.90ID:8IadtePG mkdirじゃなくてrmdirだ
380デフォルトの名無しさん
2016/07/27(水) 08:10:16.74ID:yPkdt5ig 任意のプロセスがアクセスできるディレクトリを削除したいという要求自体が間違っている
381デフォルトの名無しさん
2016/07/27(水) 08:32:01.24ID:8IadtePG >>380
bbsディレクトリの中に各掲示板ごとのディレクトリがあって、さらにその中にログファイルや掲示板設定ファイルがある
削除したい掲示板は各掲示板のディレクトリごとに削除するしかないのでどうしても任意のプロセスがアクセスできる
ディレクトリを削除するしかない
test1掲示板の場合
ファイルはbbs/test1/logfile.datとbbs/test1/settei.datがあって
掲示板を削除する場合はまずこの2つのファイルを削除してtest1ディレクトリを削除するということです
bbsディレクトリの中に各掲示板ごとのディレクトリがあって、さらにその中にログファイルや掲示板設定ファイルがある
削除したい掲示板は各掲示板のディレクトリごとに削除するしかないのでどうしても任意のプロセスがアクセスできる
ディレクトリを削除するしかない
test1掲示板の場合
ファイルはbbs/test1/logfile.datとbbs/test1/settei.datがあって
掲示板を削除する場合はまずこの2つのファイルを削除してtest1ディレクトリを削除するということです
382デフォルトの名無しさん
2016/07/27(水) 09:49:12.77ID:uNHlpX2c その掲示板とやらのディレクトリは本当に、自分のプロセスだけでなく任意のプロセスからもアクセスできるのか?
であれば、ディレクトリのパーミッションが間違っている。自分のプロセス以外のアクセスを禁止せよ。
自分のプロセスしかアクセスできない前提であれば、好きなように自分で排他制御を行えばよい。例えば>>375のように。
であれば、ディレクトリのパーミッションが間違っている。自分のプロセス以外のアクセスを禁止せよ。
自分のプロセスしかアクセスできない前提であれば、好きなように自分で排他制御を行えばよい。例えば>>375のように。
383デフォルトの名無しさん
2016/07/27(水) 15:57:37.43ID:8IadtePG >>382
普通の掲示板やで
普通掲示板は誰でも観覧と書き込みができるので任意のプロセスからでも読み書きできる
それとディレクトリの削除はブラウザからperlで書いたcgiを起動して削除するので
パーミッションでのオーナーとかの判別はできないんや
普通の掲示板やで
普通掲示板は誰でも観覧と書き込みができるので任意のプロセスからでも読み書きできる
それとディレクトリの削除はブラウザからperlで書いたcgiを起動して削除するので
パーミッションでのオーナーとかの判別はできないんや
384デフォルトの名無しさん
2016/07/27(水) 16:17:33.22ID:uNHlpX2c 掲示板のcgiが動いてるプロセスは掲示板を閲覧しているユーザとは関係なかろうが。
これ以上はperlの話ではなく、そのcgi固有の話だ。
ここでやる話ではない。
これ以上はperlの話ではなく、そのcgi固有の話だ。
ここでやる話ではない。
385デフォルトの名無しさん
2016/07/29(金) 21:21:45.34ID:kdSSWeOo my(@aaa);
@aaa = sort {$b <=> $a} @aaa;
このとき$a,$bをmy($a,$b)やlocal($a,$b);と宣言するとエラーになります
$a,$bはどのように宣言すればいいんですか?
@aaa = sort {$b <=> $a} @aaa;
このとき$a,$bをmy($a,$b)やlocal($a,$b);と宣言するとエラーになります
$a,$bはどのように宣言すればいいんですか?
386デフォルトの名無しさん
2016/07/29(金) 22:20:02.88ID:lqBNaMPB aとbはあらかじめ用意された特殊変数。
特殊変数は全部グローバル変数
特殊変数は全部グローバル変数
387デフォルトの名無しさん
2016/07/30(土) 00:48:59.27ID:pBzYHnSl388デフォルトの名無しさん
2016/07/30(土) 08:47:55.59ID:k05zeajW 1:投稿ファイルをロックして書き込み
2:投稿数ファイルをロックして書き込み
1の排他ロックが成功して2の排他ロックが失敗してタイムアウトになり書き込みできなかった場合
投稿数が実際の投稿より少なくなりが整合性がとれなくなる
この場合下記のようにまとめてロックするのが普通?
まとめ排他ロック
1の処理
2の処理
ロック解除
2:投稿数ファイルをロックして書き込み
1の排他ロックが成功して2の排他ロックが失敗してタイムアウトになり書き込みできなかった場合
投稿数が実際の投稿より少なくなりが整合性がとれなくなる
この場合下記のようにまとめてロックするのが普通?
まとめ排他ロック
1の処理
2の処理
ロック解除
389デフォルトの名無しさん
2016/07/30(土) 09:56:42.41ID:0Jkia02i390デフォルトの名無しさん
2016/07/31(日) 09:21:12.12ID:9W15s1XM 1:投稿ファイルをロック
2:投稿数ファイルをロック
3:投稿ファイルを書き込み
4:投稿数ファイルを書き込み
5:投稿ファイルをアンロック
6:投稿数ファイルをアンロック
2:投稿数ファイルをロック
3:投稿ファイルを書き込み
4:投稿数ファイルを書き込み
5:投稿ファイルをアンロック
6:投稿数ファイルをアンロック
391デフォルトの名無しさん
2016/07/31(日) 14:54:33.71ID:V3GimjB6 PostgreSQLのTIMESTAMP形式の文字列を秒数(Perlのtime関数で取得したような状態)に直す関数教えて
392デフォルトの名無しさん
2016/08/02(火) 23:49:48.17ID:C1WIu1+e use DateTime::Format::Pg;
print DateTime::Format::Pg->parse_datetime( '2016-08-21 23:50:01' )->epoch;
print DateTime::Format::Pg->parse_datetime( '2016-08-21 23:50:01' )->epoch;
393デフォルトの名無しさん
2016/08/05(金) 00:01:27.27ID:RLQt/Rjs >>390
それだとロックの間に隙間ができる
それだとロックの間に隙間ができる
394デフォルトの名無しさん
2016/08/05(金) 00:02:57.68ID:RLQt/Rjs 実行時間が0.15秒から0.2秒のperlスクリプトは重い部類ですか?
395デフォルトの名無しさん
2016/08/05(金) 00:22:53.93ID:/+BaQz+x396デフォルトの名無しさん
2016/08/05(金) 09:40:54.31ID:rvcc+G4N 1:投稿数ファイルをロック
2:投稿数ファイルを書き込み
3:投稿数ファイルをアンロック
4:投稿ファイルをロック
5:投稿ファイルを書き込み
6:投稿ファイルをアンロック
じゃだめなのかな。
2:投稿数ファイルを書き込み
3:投稿数ファイルをアンロック
4:投稿ファイルをロック
5:投稿ファイルを書き込み
6:投稿ファイルをアンロック
じゃだめなのかな。
397デフォルトの名無しさん
2016/08/05(金) 09:49:56.50ID:iMQ1FKDS それ投稿数と投稿が連動してないやん
ロック
必要な書き込み全部
ロック解除
が普通
ロック
必要な書き込み全部
ロック解除
が普通
398デフォルトの名無しさん
2016/08/05(金) 17:58:59.50ID:rvcc+G4N それは「普通」というより「手抜き」だね。最初はそれでいいと思うけど。
399デフォルトの名無しさん
2016/08/05(金) 21:06:28.92ID:n2C4Ao5J400デフォルトの名無しさん
2016/08/05(金) 21:06:53.73ID:n2C4Ao5J >>396
だめ。それはバグ。
だめ。それはバグ。
401デフォルトの名無しさん
2016/08/06(土) 00:52:14.83ID:aSfsFG4F402デフォルトの名無しさん
2016/08/06(土) 07:58:04.15ID:nmoqGXlF (書き込み時)
1:まとめロックようファイルを作る
2:まとめロック用ファイルを排他ロックする
3:投稿ファイルにを投稿を書き込む
4:投稿数ファイルに投稿数を書き込む
5:まとめロックの解除
(観覧時)
1:まとめロック用ファイルを共有ロックする
2:投稿ファイルを読み込んで表示する
3;投稿数ファイルを読み込んで表示する
4:まとめロックを解除
これが正しい
1:まとめロックようファイルを作る
2:まとめロック用ファイルを排他ロックする
3:投稿ファイルにを投稿を書き込む
4:投稿数ファイルに投稿数を書き込む
5:まとめロックの解除
(観覧時)
1:まとめロック用ファイルを共有ロックする
2:投稿ファイルを読み込んで表示する
3;投稿数ファイルを読み込んで表示する
4:まとめロックを解除
これが正しい
403デフォルトの名無しさん
2016/08/09(火) 01:43:06.25ID:s2zPwIrc >>393
何のために数字が振ってあるのか分かる?
何のために数字が振ってあるのか分かる?
404デフォルトの名無しさん
2016/08/09(火) 02:52:34.66ID:d2ilw35z なんのため?
プロセス間の整合を取るのにプロセス内の順序は全く意味ない数字と思うけど。
うーん、なんのためだろ?教えてくれないかな?
プロセス間の整合を取るのにプロセス内の順序は全く意味ない数字と思うけど。
うーん、なんのためだろ?教えてくれないかな?
405デフォルトの名無しさん
2016/08/09(火) 22:13:03.27ID:zWs+JfAu > プロセス内の順序は全く意味ない数字と思うけど。
え? 順番を入れ替えても同じなると思ってるの?
例えば5 → 1 → 4 → 3 → 2 → 6 の順番で
実行しても同じ結果になると?
ロックの話以前に、あんたが何が言いたいのかわからない
え? 順番を入れ替えても同じなると思ってるの?
例えば5 → 1 → 4 → 3 → 2 → 6 の順番で
実行しても同じ結果になると?
ロックの話以前に、あんたが何が言いたいのかわからない
406デフォルトの名無しさん
2016/08/09(火) 23:09:59.97ID:d2ilw35z んでなんのため?
あと関係ない話しかしてないようだけど、同じになるって情報はどこから?
そしてその話になんの意味があると思い込んでますか?
あと関係ない話しかしてないようだけど、同じになるって情報はどこから?
そしてその話になんの意味があると思い込んでますか?
407デフォルトの名無しさん
2016/08/09(火) 23:36:26.59ID:zWs+JfAu > んでなんのため?
順番が重要だからだろ。
順番が重要だからだろ。
408デフォルトの名無しさん
2016/08/09(火) 23:38:43.66ID:zWs+JfAu >>390が書いてあることは正しくて、
この順番通りの処理をすると不整合が起きない。
重要なのは書き込みを行う前に書き込むファイルすべてを
ロックするということ。最初にまとめて行う。
こうすることでロックの間に処理が割り込まれず
正しく書き込むことができる。
この順番通りの処理をすると不整合が起きない。
重要なのは書き込みを行う前に書き込むファイルすべてを
ロックするということ。最初にまとめて行う。
こうすることでロックの間に処理が割り込まれず
正しく書き込むことができる。
409デフォルトの名無しさん
2016/08/09(火) 23:45:04.85ID:d2ilw35z ここまで正しい回答が何度も出てるのに、そのあとから間違った回答を自身満々にするのもすごいと思う
ロックは常にプロセス間の整合のみ取るべし
ロックは常にプロセス間の整合のみ取るべし
410デフォルトの名無しさん
2016/08/09(火) 23:54:26.10ID:d2ilw35z ごめん。外部仕様としてはこの場合正しかった。
内部的にはやってはいけないお手本のような無意味なロックがされてて、それで勘違いした。すまんかった。
内部的にはやってはいけないお手本のような無意味なロックがされてて、それで勘違いした。すまんかった。
411デフォルトの名無しさん
2016/08/10(水) 08:11:51.04ID:UJ0StgLg いいってことよ
412デフォルトの名無しさん
2016/08/13(土) 09:19:35.74ID:Y2Ng1HRN 確かにロックはプロセス間通信の一種で使う技術も同じか
こうゆうのはスクリプトをプログラムと思ってる人と、プログラムの基礎的な部分から学んだ人とでは差が出そうだね
こうゆうのはスクリプトをプログラムと思ってる人と、プログラムの基礎的な部分から学んだ人とでは差が出そうだね
413デフォルトの名無しさん
2016/08/22(月) 20:05:32.69ID:2GCPiaHi windows7で文字化けファイル名を取得するとショートファイルで得られるようですが、
ロングファイルのビットの並びをそのまま得たいです。
指定して得るにはどうすれば良いでしょうか?
ちなみにDOSなどでのコマンドは知っています。
ロングファイルのビットの並びをそのまま得たいです。
指定して得るにはどうすれば良いでしょうか?
ちなみにDOSなどでのコマンドは知っています。
414デフォルトの名無しさん
2016/08/22(月) 23:45:40.07ID:vzm1zF9k `dir /b *.*`
次スレのテンプレに追加するから
次スレのテンプレに追加するから
415デフォルトの名無しさん
2016/08/23(火) 00:01:48.07ID:GgtizVRn コマンドじゃなくてPerlでどうにかしたいのだけど
416デフォルトの名無しさん
2016/08/23(火) 02:38:12.51ID:a3VZWpnc バッククォートの意味が分からないのかな
417デフォルトの名無しさん
2016/08/23(火) 07:59:22.61ID:GgtizVRn コマンドだろ
418デフォルトの名無しさん
2016/08/23(火) 22:48:28.92ID:evJ0lXFt my @file = split(/\n/,`dir /b *.* 2>NUL`);
# あとは夏休みの宿題、な
# あとは夏休みの宿題、な
419デフォルトの名無しさん
2016/08/24(水) 08:59:06.43ID:hHpNATWD すまん、回答してるつもりだろうけど、頭悪い人に用はないんだ。
わざわざ何度も書いてる様だが、一番最初に(も)言った通りコマンド使うやりかたはできるから。
あと全レス会話の繋がりもなく、堂々と好き勝手なこと書く人間もしんどい。
わざわざ何度も書いてる様だが、一番最初に(も)言った通りコマンド使うやりかたはできるから。
あと全レス会話の繋がりもなく、堂々と好き勝手なこと書く人間もしんどい。
420デフォルトの名無しさん
2016/08/24(水) 20:30:09.76ID:fxHMMLTZ いや、君の記述能力が頭悪いんだよ。
流行の言葉で言うとコミュ力やプレゼン力がない。
コマンド知ってますなんて言い方じゃ伝わらない。
少しは自分の不徳を省みたらどうか。
流行の言葉で言うとコミュ力やプレゼン力がない。
コマンド知ってますなんて言い方じゃ伝わらない。
少しは自分の不徳を省みたらどうか。
421デフォルトの名無しさん
2016/08/24(水) 20:38:10.41ID:W4vM/rXO 再現出来る環境無いんだけどWin32::GetLongPathNameはどうかな
422デフォルトの名無しさん
2016/08/24(水) 20:59:49.53ID:jqqoh+mK これは知ってるかい?→ <*>
423デフォルトの名無しさん
2016/08/24(水) 23:20:14.12ID:hHpNATWD424デフォルトの名無しさん
2016/08/24(水) 23:31:21.73ID:jqqoh+mK425デフォルトの名無しさん
2016/08/29(月) 17:11:38.79ID:x3G6j3++ どうでもいいけど特殊な環境じゃなくてwindows標準の仕様かと
426デフォルトの名無しさん
2016/08/29(月) 21:33:30.70ID:NQxKIK4Q 文字化けが問題なんだろうね
427デフォルトの名無しさん
2016/08/29(月) 21:40:22.45ID:x3G6j3++ なぜ化けるのか、と言う話だ
CP932とunicodeが混在してる場合はどうすりゃいいですかって話じゃね
CP932とunicodeが混在してる場合はどうすりゃいいですかって話じゃね
428デフォルトの名無しさん
2016/09/01(木) 19:27:50.30ID:vCLh7LOG ココ参考にして ttp://hirobanex.net/article/2015/03/1425807814
こういう呼び出ししても
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)
Can't locate object method "insert_on_duplicate" via package "Teng::QueryBuilder"
で呼べないんだけどどうしたらいい?
こういう呼び出ししても
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)
Can't locate object method "insert_on_duplicate" via package "Teng::QueryBuilder"
で呼べないんだけどどうしたらいい?
429デフォルトの名無しさん
2016/09/01(木) 19:29:20.37ID:vCLh7LOG ちなみに
__PACKAGE__->load_plugin('+SQL::Maker::Plugin::InsertOnDuplicate');
でもダメ
__PACKAGE__->load_plugin('+SQL::Maker::Plugin::InsertOnDuplicate');
でもダメ
430デフォルトの名無しさん
2016/09/01(木) 20:39:24.43ID:0j1lNnbm ブログ記事じゃなくてPOD読めよ
431デフォルトの名無しさん
2016/09/01(木) 22:35:57.18ID:vCLh7LOG PODに別パッケージから plugin生やす方法なんて書いてないでしょ
432デフォルトの名無しさん
2016/09/03(土) 20:53:36.76ID:pSsdJ5JF マジレスするなら、
別の方法で呼べるか試してみる
何が起こっているのか調べてみる
ってところか。
別の方法で呼べるか試してみる
何が起こっているのか調べてみる
ってところか。
433デフォルトの名無しさん
2016/09/09(金) 12:53:46.35ID:JRjUoSNq 何を調べたらいいのかわからんので手が付かない
434デフォルトの名無しさん
2016/09/09(金) 13:05:29.57ID:JRjUoSNq はっきりしてるのはhirobanexのとおりに書いてもエラーで動かない事
それも $teng->->execute なんていうタイポレベルの話じゃなく
根本的にどこか間違ってるけど、どこだかわからんということ
$teng->sql_builder ってSQL::Makerを継承した状態でnewされてるんじゃないの?
Teng::QueryBuilder = SQL::Maker だから
これで動くんじゃないの?
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)
それも $teng->->execute なんていうタイポレベルの話じゃなく
根本的にどこか間違ってるけど、どこだかわからんということ
$teng->sql_builder ってSQL::Makerを継承した状態でnewされてるんじゃないの?
Teng::QueryBuilder = SQL::Maker だから
これで動くんじゃないの?
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)
435デフォルトの名無しさん
2016/09/09(金) 16:12:29.13ID:yxgmGddx もう直接コード読めよ
436デフォルトの名無しさん
2016/09/09(金) 16:58:05.37ID:yxgmGddx $teng->sql_builderでTeng::QueryBuilderのオブジェクトが帰ってくる
これはほぼSQL::Makerを継承しただけなのでSQL::Maker::load_pluginを読むとどうやらクラスメソッドとして書かれている
実際SQL::MakerのPODにも継承したクラスでクラスメソッドとして呼び出す例が書かれている
つまり $teng->sql_builder->load_plugin('foo') という書き方はオブジェクトから呼び出してるので間違い(おそらくTeng::QueryBuilder=HASH(0x000000)みたいなところに生えてる)
Teng::QueryBuilder->load_plugin('foo') とするか ref($teng->sql_builder)->load_plugin('foo') とするか
もしくはブログの例にもある通り独自のQueryBuilderクラスを用意するか
>>429
この__PACKAGE__はどこに書いたんや?__PACKAGE__の意味わかってる?
これはほぼSQL::Makerを継承しただけなのでSQL::Maker::load_pluginを読むとどうやらクラスメソッドとして書かれている
実際SQL::MakerのPODにも継承したクラスでクラスメソッドとして呼び出す例が書かれている
つまり $teng->sql_builder->load_plugin('foo') という書き方はオブジェクトから呼び出してるので間違い(おそらくTeng::QueryBuilder=HASH(0x000000)みたいなところに生えてる)
Teng::QueryBuilder->load_plugin('foo') とするか ref($teng->sql_builder)->load_plugin('foo') とするか
もしくはブログの例にもある通り独自のQueryBuilderクラスを用意するか
>>429
この__PACKAGE__はどこに書いたんや?__PACKAGE__の意味わかってる?
437デフォルトの名無しさん
2016/09/09(金) 17:40:55.04ID:iPoh5J1m もう、馬鹿過ぎて哀れだ。実際にやりたいことは
*SQL::Maker::insert_on_duplicate = \&SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate;
ってことでしょ? もうこれでいいでしょ。POD すら読まないんじゃ助けようがないよ。
*SQL::Maker::insert_on_duplicate = \&SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate;
ってことでしょ? もうこれでいいでしょ。POD すら読まないんじゃ助けようがないよ。
438437
2016/09/10(土) 11:47:34.76ID:VYsCJTGt ごめん、言い過ぎた。とりあえず、正解が分らない段階で俺ならどうするかを書くよ。
まず、何をしているのかを POD で確認する。
POD では load_plugin についてはクラスメソッドとして使う例だけが書かれている。
ここで「おかしい」と思わなければならない。
オブジェクトメソッドとして使えないとは書かれていないのでソースコードを読む。
%INC を見ればソースコードの場所は分かる。
load_plugin は予想以上にシンプルだった。これで解決。
解決しなかった場合。
まず、SQL::Maker::Plugin::InsertOnDuplicate を明示的に use する。それで間違いなく呼べる。
SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate( $teng->sql_builder)
あるいは
$teng->sql_builder->SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate
好きな方でいい。これでうまくいくなら load_plugin で何かが間違っている。
デバッガを使うか、load_plugin を差し替えて動作を詳しく調べる。
まず、何をしているのかを POD で確認する。
POD では load_plugin についてはクラスメソッドとして使う例だけが書かれている。
ここで「おかしい」と思わなければならない。
オブジェクトメソッドとして使えないとは書かれていないのでソースコードを読む。
%INC を見ればソースコードの場所は分かる。
load_plugin は予想以上にシンプルだった。これで解決。
解決しなかった場合。
まず、SQL::Maker::Plugin::InsertOnDuplicate を明示的に use する。それで間違いなく呼べる。
SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate( $teng->sql_builder)
あるいは
$teng->sql_builder->SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate
好きな方でいい。これでうまくいくなら load_plugin で何かが間違っている。
デバッガを使うか、load_plugin を差し替えて動作を詳しく調べる。
439デフォルトの名無しさん
2016/09/10(土) 18:20:16.29ID:1M4Sozo+ Tengを使うのかどうか自分で選べるのなら、自分が理解していないものを使わないという選択肢がある。
他の人が選んでしかも使わなければならないという状況なら、選んだ人にどう使うのかを聞くといい。
他の人が選んでしかも使わなければならないという状況なら、選んだ人にどう使うのかを聞くといい。
440デフォルトの名無しさん
2016/09/10(土) 19:19:33.59ID:7Wlp4jMr 多分ブログ書いた人やその人に教えた人はTeng本体と混ざって勘違いしたんだろうな
Teng自体はインスタンスからもロードできるから
Teng自体はインスタンスからもロードできるから
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- パラドゲーやってる人に聞きたい総理の発言がそのまま国家意思になるって中世かよ [279479878]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 風呂入らないと下半身温まらない
- かしこいワンコっていうVtuberの子知ってる?
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
