<< | Index | >>
Log (oddbd console)
WARNING: nonstandard use of \' in a string literal
LINE 3: AND search_term = 'fraxiparine multi, 9\'500 u.i. an...
^
HINT: Use '' to write quotes in strings, or use the escape string syntax (E'...').
/usr/lib64/ruby/site_ruby/1.8/odba/cache.rb:324: [BUG] Segmentation fault
ruby 1.8.6 (2009-06-08) [x86_64-linux]
Abgebrochen
bin/admin
masa@masa ~/ywesee/oddb.org $ bin/admin ch.oddb> Updater.new(self).update_package_trade_status_by_swissindex -> connection closed
Note
New Process
Updated src/plugin/swissindex.rb#update_package_trade_status
def update_package_trade_status
out_of_trade_true_list = []
out_of_trade_false_list = []
update_pharmacode_list = []
log = open('/home/masa/work/result_update_swissindex_log.dat', 'w')
count = 1
start_time = Time.now
@app.each_package do |pack|
SWISSINDEX_PHARMA_SERVER.session do |swissindex|
if item = swissindex.search(pack.barcode.to_s)
# not change flag
# but just save the list
out_of_trade_false_list << pack
# check pharmacode
if pack.pharmacode and pharmacode = item[:phar]
update_pharmacode_list << [pack, pharmacode]
end
else
out_of_trade_true_list << pack
end
sleep(0.05)
end
estimate = (Time.now - start_time) * @app.package_count / count
log.print count " / ", @app.package_count, "\t", pack.barcode, "\t estimate: ", "%.2f" % (estimate/60), " [m] ", "%.2f" % (estimate/60/60), " [h]\n"
count += 1
end
log.close
# for debug
open('/home/masa/work/result_update_swissindex_package_trade_status.dat', 'w') do |out|
out.print "out_of_trade true list\n"
out.print out_of_trade_true_list.map{|x| x.barcode}.join("\n"), "\n"
out.print "\n"
out.print "out_of_trade false list\n"
out.print out_of_trade_false_list.map{|x| x.barcode}.join("\n"), "\n"
out.print "\n"
out.print "updte_pharmacode_list\n"
out.print update_pharmacode_list.map{|x, y| x.barcode.to_s + ", " + y.to_s}.join("\n"), "\n"
end
#
# change flag
#
#out_of_trade_true_list << @app.package('883519')
#out_of_trade_false_list << @app.package('883519')
open('/home/masa/work/result_update_swissindex_out_of_trade_true.dat', 'w') do |out|
out_of_trade_true_list.each do |pack|
unless pack.out_of_trade
@app.update(pack.pointer, {:out_of_trade => true}, :refdata)
out.print pack.barcode, "\n"
end
end
end
open('/home/masa/work/result_update_swissindex_out_of_trade_false.dat', 'w') do |out|
out_of_trade_false_list.each do |pack|
if pack.out_of_trade
@app.update(pack.pointer, {:out_of_trade => false, :refdata_override => false}, :refdata)
out.print pack.barcode, "\n"
end
end
end
#
# update pharmacode
#
open('/home/masa/work/result_update_swissindex_pharmacode.dat', 'w') do |out|
update_pharmacode_list.each do |pack, pharmacode|
@app.update(pack.pointer, {:pharmacode => pharmacode}, :bag)
out.print pack.barcode, "\t", pharmacode, "\n"
end
end
end
Note
Run
masa@masa ~/ywesee/oddb.org $ bin/admin ch.oddb> Updater.new(self).update_package_trade_status_by_swissindex
Add a process
Updated src/plugin/swissindex.rb#update_package_trade_status
def update_package_trade_status
out_of_trade_true_list = []
out_of_trade_false_list = []
update_pharmacode_list = []
delete_pharmacode_list = []
log = open('/home/masa/work/result_update_swissindex_log.dat', 'w')
count = 1
start_time = Time.now
@app.each_package do |pack|
SWISSINDEX_PHARMA_SERVER.session do |swissindex|
if item = swissindex.search(pack.barcode.to_s)
# not change flag
# but just save the list
out_of_trade_false_list << pack
# check pharmacode
if !pack.pharmacode and pharmacode = item[:phar]
update_pharmacode_list << [pack, pharmacode]
end
else
out_of_trade_true_list << pack
# check pharmacode
if pack.pharmacode
delete_pharmacode_list << pack
end
end
sleep(0.05)
end
estimate = (Time.now - start_time) * @app.package_count / count
log.print count, " / ", @app.package_count, "\t", pack.barcode, "\t estimate: ", "%.2f" % (estimate/60), " [m] ", "%.2f" % (estimate/60/60), " [h]"
rest = estimate - (Time.now - start_time)
log.print "in: ", "%.2f" % (rest/60), " [m] ", "%.2f" % (rest/60/60), " [h]\n"
count += 1
end
log.close
# for debug
open('/home/masa/work/result_update_swissindex_package_trade_status.dat', 'w') do |out|
out.print "out_of_trade true list\n"
out.print out_of_trade_true_list.map{|x| x.barcode}.join("\n"), "\n"
out.print "\n"
out.print "out_of_trade false list\n"
out.print out_of_trade_false_list.map{|x| x.barcode}.join("\n"), "\n"
out.print "\n"
out.print "updte_pharmacode_list\n"
out.print update_pharmacode_list.map{|x, y| x.barcode.to_s + ", " + y.to_s}.join("\n"), "\n"
out.print "\n"
out.print "delete_pharmacode_list\n"
out.print delete_pharmacode_list.map{|x| x.barcode}.join("\n"), "\n"
end
#
# change flag
#
#out_of_trade_true_list << @app.package('883519')
#out_of_trade_false_list << @app.package('883519')
open('/home/masa/work/result_update_swissindex_out_of_trade_true.dat', 'w') do |out|
out_of_trade_true_list.each do |pack|
unless pack.out_of_trade
@app.update(pack.pointer, {:out_of_trade => true}, :refdata)
out.print pack.barcode, "\n"
end
end
end
open('/home/masa/work/result_update_swissindex_out_of_trade_false.dat', 'w') do |out|
out_of_trade_false_list.each do |pack|
if pack.out_of_trade
@app.update(pack.pointer, {:out_of_trade => false, :refdata_override => false}, :refdata)
out.print pack.barcode, "\n"
end
end
end
#
# update pharmacode
#
open('/home/masa/work/result_update_swissindex_pharmacode.dat', 'w') do |out|
out.print "update_pharmacode\n"
update_pharmacode_list.each do |pack, pharmacode|
@app.update(pack.pointer, {:pharmacode => pharmacode}, :bag)
out.print pack.barcode, "\t", pharmacode, "\n"
end
out.print "\ndelete_pharmacode\n"
delete_pharmacode_list.each do |pack|
@app.update(pack.pointer, {:pharmacode => nil}, :bag)
out.print pack.barcode, "\t", pharmacode, "\n"
end
end
end
Note
total_iteration = 100 start_time = Time.now total_iteration.times do |i| sleep rand elapsed_time = Time.now - start_time estimate_time = elapsed_time * total_iteration / (i+1) print i, "\tEstimate time: ", "%.2f" % estimate_time, " [s]\n" end end_time = Time.now print "Actual time: ", end_time - start_time, " [s]\n"
Result
how to make a graph from the data above
gnuplot make_graph.20110506.txt

Note