Use null.Time values in a golang template - go
I'm using gopkg.in/guregu/null.v4 to get some data from a Postgres DB and the results are coming back fine, and I can put them into json format and the world is happy... however, I'm trying to email the results using a template and have hit a problem.
The structure is (partially)
type DataQuery struct {
Date null.Time `json:"DateTime"`
....
The template is
{{define "plainBody"}}
Hi,
Here are the results for the check run for today.
The number of rows returned is {{.Rows}}
The data is
{{ range .Data}}
{{.Date}}
{{end}}
{{end}}
And the results of running that template are
Hi,
Here are the results for the check run for today.
The number of rows returned is 57
The data is
{{2021-09-13 00:00:00 +0000 +0000 true}}
{{2021-08-16 00:00:00 +0000 +0000 true}}
{{2021-09-19 00:00:00 +0000 +0000 true}}
{{2021-09-18 00:00:00 +0000 +0000 true}}
I tried using {{.Date.EncodeText}} and ended up with
[50 48 50 49 45 48 57 45 49 51 84 48 48 58 48 48 58 48 48 90]
[50 48 50 49 45 48 56 45 49 54 84 48 48 58 48 48 58 48 48 90]
[50 48 50 49 45 48 57 45 49 57 84 48 48 58 48 48 58 48 48 90]
For the datetime fields (which might be a []byte of the strings but I'm not sure.
If I use {{Date.Value}} I get
2021-09-13 00:00:00 +0000 +0000
The other field types (string, int, float) all work fine with
{{Variable.ValueOrZero}}
I think I'm close.. but can't quite crack it for the date time fields
First, you are using html/template which provides context-sensitive escaping, that's why you're seeing those + sequences. If you want text output, use text/template instead. For details, see Template unnecessarily escaping `<` to `<` but not `>`
Next, null.Time is not just a simple time.Time value, it wraps other fields too (whether the time is valid). When simply outputting it, that valid field will also be rendered (the true texts in your output).
You may render only its Time field: {{.Date.Time}}.
With these changes output will be for example:
Hi,
Here are the results for the check run for today.
The number of rows returned is 2
The data is
2021-09-20 12:10:00 +0000 UTC
2021-10-11 13:50:00 +0000 UTC
Try it on the Go Playground.
Related
How to decode/parse response data sent by the socket.io HTTP long-polling protocoll
I will give you some information first! I am currently trying to decode the server data socket.io sends as response to the client (when using Http long-polling) as I am trying to intercept the communication. I don't have access to the client-side socket instance. Though I would like to be able to have the same JSON data the client-socket instance would end up with! The content type of the socket.io responses is: 'application/octet-stream' Calling Response.body() on the Response object returns the following Buffer: <Buffer 00 01 02 08 ff 34 32 5b 22 75 70 64 61 74 65 55 73 65 72 73 52 6f 6f 6d 22 2c 7b 22 72 6f 6f 6d 22 3a 22 48 65 69 6c 69 67 74 75 6d 22 2c 22 75 73 65 ... 83 more bytes> Calling Response.text() on the Response object returns the following string: ☺☻�42["updateUsersRoom",{"room":"Heiligtum","userid":13132,"imgthumb":"thumb_ffkqOEBwQXbf_pngfindcomrealisticspiderwebpngpng.png"}] Now you might think that Response.text() looks okay-ish, however it is very 'inconsistent'. There are these random "broken" characters like '☺☻�42' every here and there and sometimes it even sends mutliple messages per response. What I've tried is using the decode methods of both socket.io-parser and engine.io- parser, trying to feed it the data Request.body() returned. However it always returns: { type: 'error', data: 'parser error' } I tried digging through the engine.io source code as well, trying to find out how they handle responses but I simply can't get it to work. This might require some deeper knowledge about socket.io, but I hope somebody can help me! Thank you in advance.
What solution should I use to generate a list of all possible alphabetic combinaisons?
I want to generate a list of all the possible combinations of the following characters with a minimum length of 3 characters and a maximum length of 12 characters. abcdefghijklmnopqrstuvwxyz1234567890_ I though of using PHP to do so this but this operation requires too much memory. What would be the best tool to achieve this?
It would be better if you set a limit on each run; For example all possibilities with 5 characters in one run, and all with 7 in another. And write a code to send the output after each run to a text file so you have all the possibilities and That would take less memory. example with numbers in python: # 1 2 3 4 5 6 7 8 9 0 listx=[1,2,3,4,5,6,7,8,9,0] #one letter for i in listx: print(i) #two letters for i in listx: for j in listx: print(f"{i}{j}") and it goes on and on... output=> 1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16 17 18 19 10 21 22 23 24 25 26 27 28 29 20 31 32 33 34 35 36 37 38 39 30 41 42 43 44 45 46 47 48 49 40 51 52 53 54 55 56 57 58 59 50 61 62 63 64 65 66 67 68 69 60 71 72 73 74 75 76 77 78 79 70 81 82 83 84 85 86 87 88 89 80 91 92 93 94 95 96 97 98 99 90 01 02 03 04 05 06 07 08 09 00
In python, there is a function itertools.product which returns the combinations you want for a fixed number of characters. You can call it repeatedly to get each number of characters between 3 and 12. def get_combinations(charset, begin, end): result = [] for i in range(begin, end+1): result.extend(''.join(p) for p in itertools.product(charset, repeat=i)) return result print(get_combinations('abcdefghijklmnopqrstuvwxyz0123456789_', 3, 5)) # ['aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag', 'aah', 'aai', 'aaj', 'aak', 'aal', 'aam', 'aan', 'aao', 'aap', 'aaq', 'aar', 'aas', 'aat', 'aau', 'aav', 'aaw', 'aax', 'aay', 'aaz', 'aa0', 'aa1', 'aa2', 'aa3', 'aa4', 'aa5', 'aa6', 'aa7', 'aa8', 'aa9', 'aa_', 'aba', 'abb', 'abc', 'abd', 'abe', 'abf', 'abg', 'abh', 'abi', 'abj', 'abk', 'abl', 'abm', 'abn', 'abo', 'abp', 'abq', 'abr', 'abs', 'abt', 'abu', 'abv', 'abw', 'abx', 'aby', 'abz', 'ab0', 'ab1', 'ab2', 'ab3', 'ab4', 'ab5', 'ab6', 'ab7', 'ab8', 'ab9', 'ab_', 'aca', 'acb', 'acc', 'acd', 'ace', 'acf', 'acg', 'ach', 'aci', 'acj', 'ack', 'acl', 'acm', 'acn', 'aco', 'acp', 'acq', 'acr', 'acs', 'act', 'acu', 'acv', 'acw', 'acx', 'acy', 'acz', 'ac0', 'ac1', 'ac2', 'ac3', 'ac4', 'ac5', 'ac6', 'ac7', 'ac8', 'ac9', 'ac_', 'ada', 'adb', 'adc', 'add', 'ade', 'adf', 'adg', 'adh', 'adi', 'adj', 'adk', 'adl', 'adm', 'adn', 'ado', 'adp', 'adq', 'adr', 'ads', 'adt', 'adu', 'adv', 'adw', 'adx', 'ady', 'adz', 'ad0', 'ad1', 'ad2', 'ad3', 'ad4', 'ad5', 'ad6', 'ad7', 'ad8', 'ad9', 'ad_', 'aea', 'aeb', 'aec', 'aed', 'aee', 'aef', 'aeg', ..., '__o0', '__o1', '__o2', '__o3', '__o4', '__o5', '__o6', '__o7', '__o8', '__o9', '__o_', '__pa', '__pb', '__pc', '__pd', '__pe', '__pf', '__pg', '__ph', '__pi', '__pj', '__pk', '__pl', '__pm', '__pn', '__po', '__pp', '__pq', '__pr', '__ps', '__pt', '__pu', '__pv', '__pw', '__px', '__py', '__pz', '__p0', '__p1', '__p2', '__p3', '__p4', '__p5', '__p6', '__p7', '__p8', '__p9', '__p_', '__qa', '__qb', '__qc', '__qd', '__qe', '__qf', '__qg', '__qh', '__qi', '__qj', '__qk', '__ql', '__qm', '__qn', '__qo', '__qp', '__qq', '__qr', '__qs', '__qt', '__qu', '__qv', '__qw', '__qx', '__qy', '__qz', '__q0', '__q1', '__q2', '__q3', '__q4', '__q5', '__q6', '__q7', '__q8', '__q9', '__q_', '__ra', '__rb', '__rc', '__rd', '__re', '__rf', '__rg', '__rh', '__ri', '__rj', '__rk', '__rl', '__rm', '__rn', '__ro', '__rp', '__rq', '__rr', '__rs', '__rt', '__ru', '__rv', '__rw', '__rx', '__ry', '__rz', '__r0', '__r1', '__r2', '__r3', '__r4', '__r5', '__r6', '__r7', '__r8', '__r9', '__r_', '__sa', '__sb', '__sc', '__sd', '__se', '__sf', '__sg', '__sh', '__si', '__sj', '__sk', '__sl', '__sm', '__sn', '__so', '__sp', '__sq', '__sr', '__ss', '__st', '__su', '__sv', '__sw', '__sx', '__sy', '__sz', '__s0', '__s1', '__s2', '__s3', '__s4', '__s5', '__s6', '__s7', '__s8', '__s9', '__s_', '__ta', '__tb', '__tc', '__td', '__te', '__tf', '__tg', '__th', '__ti', '__tj', '__tk', '__tl', '__tm', '__tn', '__to', '__tp', '__tq', '__tr', '__ts', '__tt', '__tu', '__tv', '__tw', '__tx', '__ty', '__tz', '__t0', '__t1', '__t2', '__t3', '__t4', '__t5', '__t6', '__t7', '__t8', '__t9', '__t_', '__ua', '__ub', '__uc', '__ud', '__ue', '__uf', '__ug', '__uh', '__ui', '__uj', '__uk', '__ul', '__um', '__un', '__uo', '__up', '__uq', '__ur', '__us', '__ut', '__uu', '__uv', '__uw', '__ux', '__uy', '__uz', '__u0', '__u1', '__u2', '__u3', '__u4', '__u5', '__u6', '__u7', '__u8', '__u9', '__u_', '__va', '__vb', '__vc', '__vd', '__ve', '__vf', '__vg', '__vh', '__vi', '__vj', '__vk', '__vl', '__vm', '__vn', '__vo', '__vp', '__vq', '__vr', '__vs', '__vt', '__vu', '__vv', '__vw', '__vx', '__vy', '__vz', '__v0', '__v1', '__v2', '__v3', '__v4', '__v5', '__v6', '__v7', '__v8', '__v9', '__v_', '__wa', '__wb', '__wc', '__wd', '__we', '__wf', '__wg', '__wh', '__wi', '__wj', '__wk', '__wl', '__wm', '__wn', '__wo', '__wp', '__wq', '__wr', '__ws', '__wt', '__wu', '__wv', '__ww', '__wx', '__wy', '__wz', '__w0', '__w1', '__w2', '__w3', '__w4', '__w5', '__w6', '__w7', '__w8', '__w9', '__w_', '__xa', '__xb', '__xc', '__xd', '__xe', '__xf', '__xg', '__xh', '__xi', '__xj', '__xk', '__xl', '__xm', '__xn', '__xo', '__xp', '__xq', '__xr', '__xs', '__xt', '__xu', '__xv', '__xw', '__xx', '__xy', '__xz', '__x0', '__x1', '__x2', '__x3', '__x4', '__x5', '__x6', '__x7', '__x8', '__x9', '__x_', '__ya', '__yb', '__yc', '__yd', '__ye', '__yf', '__yg', '__yh', '__yi', '__yj', '__yk', '__yl', '__ym', '__yn', '__yo', '__yp', '__yq', '__yr', '__ys', '__yt', '__yu', '__yv', '__yw', '__yx', '__yy', '__yz', '__y0', '__y1', '__y2', '__y3', '__y4', '__y5', '__y6', '__y7', '__y8', '__y9', '__y_', '__za', '__zb', '__zc', '__zd', '__ze', '__zf', '__zg', '__zh', '__zi', '__zj', '__zk', '__zl', '__zm', '__zn', '__zo', '__zp', '__zq', '__zr', '__zs', '__zt', '__zu', '__zv', '__zw', '__zx', '__zy', '__zz', '__z0', '__z1', '__z2', '__z3', '__z4', '__z5', '__z6', '__z7', '__z8', '__z9', '__z_', '__0a', '__0b', '__0c', '__0d', '__0e', '__0f', '__0g', '__0h', '__0i', '__0j', '__0k', '__0l', '__0m', '__0n', '__0o', '__0p', '__0q', '__0r', '__0s', '__0t', '__0u', '__0v', '__0w', '__0x', '__0y', '__0z', '__00', '__01', '__02', '__03', '__04', '__05', '__06', '__07', '__08', '__09', '__0_', '__1a', '__1b', '__1c', '__1d', '__1e', '__1f', '__1g', '__1h', '__1i', '__1j', '__1k', '__1l', '__1m', '__1n', '__1o', '__1p', '__1q', '__1r', '__1s', '__1t', '__1u', '__1v', '__1w', '__1x', '__1y', '__1z', '__10', '__11', '__12', '__13', '__14', '__15', '__16', '__17', '__18', '__19', '__1_', '__2a', '__2b', '__2c', '__2d', '__2e', '__2f', '__2g', '__2h', '__2i', '__2j', '__2k', '__2l', '__2m', '__2n', '__2o', '__2p', '__2q', '__2r', '__2s', '__2t', '__2u', '__2v', '__2w', '__2x', '__2y', '__2z', '__20', '__21', '__22', '__23', '__24', '__25', '__26', '__27', '__28', '__29', '__2_', '__3a', '__3b', '__3c', '__3d', '__3e', '__3f', '__3g', '__3h', '__3i', '__3j', '__3k', '__3l', '__3m', '__3n', '__3o', '__3p', '__3q', '__3r', '__3s', '__3t', '__3u', '__3v', '__3w', '__3x', '__3y', '__3z', '__30', '__31', '__32', '__33', '__34', '__35', '__36', '__37', '__38', '__39', '__3_', '__4a', '__4b', '__4c', '__4d', '__4e', '__4f', '__4g', '__4h', '__4i', '__4j', '__4k', '__4l', '__4m', '__4n', '__4o', '__4p', '__4q', '__4r', '__4s', '__4t', '__4u', '__4v', '__4w', '__4x', '__4y', '__4z', '__40', '__41', '__42', '__43', '__44', '__45', '__46', '__47', '__48', '__49', '__4_', '__5a', '__5b', '__5c', '__5d', '__5e', '__5f', '__5g', '__5h', '__5i', '__5j', '__5k', '__5l', '__5m', '__5n', '__5o', '__5p', '__5q', '__5r', '__5s', '__5t', '__5u', '__5v', '__5w', '__5x', '__5y', '__5z', '__50', '__51', '__52', '__53', '__54', '__55', '__56', '__57', '__58', '__59', '__5_', '__6a', '__6b', '__6c', '__6d', '__6e', '__6f', '__6g', '__6h', '__6i', '__6j', '__6k', '__6l', '__6m', '__6n', '__6o', '__6p', '__6q', '__6r', '__6s', '__6t', '__6u', '__6v', '__6w', '__6x', '__6y', '__6z', '__60', '__61', '__62', '__63', '__64', '__65', '__66', '__67', '__68', '__69', '__6_', '__7a', '__7b', '__7c', '__7d', '__7e', '__7f', '__7g', '__7h', '__7i', '__7j', '__7k', '__7l', '__7m', '__7n', '__7o', '__7p', '__7q', '__7r', '__7s', '__7t', '__7u', '__7v', '__7w', '__7x', '__7y', '__7z', '__70', '__71', '__72', '__73', '__74', '__75', '__76', '__77', '__78', '__79', '__7_', '__8a', '__8b', '__8c', '__8d', '__8e', '__8f', '__8g', '__8h', '__8i', '__8j', '__8k', '__8l', '__8m', '__8n', '__8o', '__8p', '__8q', '__8r', '__8s', '__8t', '__8u', '__8v', '__8w', '__8x', '__8y', '__8z', '__80', '__81', '__82', '__83', '__84', '__85', '__86', '__87', '__88', '__89', '__8_', '__9a', '__9b', '__9c', '__9d', '__9e', '__9f', '__9g', '__9h', '__9i', '__9j', '__9k', '__9l', '__9m', '__9n', '__9o', '__9p', '__9q', '__9r', '__9s', '__9t', '__9u', '__9v', '__9w', '__9x', '__9y', '__9z', '__90', '__91', '__92', '__93', '__94', '__95', '__96', '__97', '__98', '__99', '__9_', '___a', '___b', '___c', '___d', '___e', '___f', '___g', '___h', '___i', '___j', '___k', '___l', '___m', '___n', '___o', '___p', '___q', '___r', '___s', '___t', '___u', '___v', '___w', '___x', '___y', '___z', '___0', '___1', '___2', '___3', '___4', '___5', '___6', '___7', '___8', '___9', '____'] Note how I called the function with parameters 3 and 5 instead of 3 and 12. With parameters 3 and 5, the number of combinations is already 71268771. Over 71 millions. With parameters 3 and 12, the number of combinations would be 6765811783780034854. That's 6.8 * 10**18. This is nearly one thousand million times the number of humans on Earth.
getting extra bytes 82 00 in pc/sc response
I am trying to read data from sony felica card using pc/sc transparent session and transceive data object. The response I am getting is for a read without encryption command is c0 03 00 90 00 92 01 00 96 02 00 00 97 82 00 + Data But according to the protocol, the response should be c0 03 00 90 00 92 01 00 96 02 00 00 97 + Data I am unable to figure out the last 82 00 appended in the response from the card. Now when I try to authenticate with the card I get c0 03 01 6F 01 90 00 which is a error in pc/sc. I want to resolve these extra bytes 82 00 which I believe will solve the issue with all the commands which require authentication and encryption.
The response data is BER-TLV encoded (see PC/SC 2.02, Part 3). In BER-TLV encoding there are several possibilities to encode tag 0x97 with two octets of data 0xD0D1, e.g.: 97|02|D0D1 -- short form (see parsed) 97|8102|D0D1 -- long form with one octet with length (see parsed) 97|820002|D0D1 -- long form with two octets with length (see parsed) 97|83000002|D0D1 -- long form with three octets with length (see parsed) ... Your reader is using two octets for sending the length of ICC Response data object (which is perfectly valid). You should parse the response properly...Good luck! PS: The above means, that the Data part of your truncated responses still contains one extra byte with the response length (i.e. Len|Data)
Calculation of application speedup using gnuplot and awk
Here's the problem: Speedup formula: S(p) = T(1)/T(p) = (avg time for one process / avg time for p processes) There are 5 logs, from which one wants to extract the information. cg.B.1.log contains the execution times for one process, so we do the calculation of the average time to obtain T(1). The other log files contain the execution times for 2, 4, 8 and 16 processes. Averages of those times must also be calculated, since they are T(p). Here's the code that calculates the averages: tavg(n) = "awk 'BEGIN { FS = \"[ \\t]*=[ \\t]*\" } /Time in seconds/ { s += $2; c++ } /Total processes/ { if (! CP) CP = $2 } END { print s/c }' cg.B.".n.".log ".(n == 1 ? ">" : ">>")." tavg.dat;" And the code that calculates the speedup: system "awk 'NR==1{n=$0} {print n/$0}' tavg.dat > speedup.dat;" How do I combine those two commands so that the output 'speedup.dat' is produced directly without using file tavg.dat? Here are the contents of files, the structure of all log files is identical. I attached only the first two executions for abbreviation purposes. cg.B.1.log -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- Start in 16:45:15--25/12/2014 NAS Parallel Benchmarks 3.3 -- CG Benchmark Size: 75000 Iterations: 75 Number of active processes: 1 Number of nonzeroes per row: 13 Eigenvalue shift: .600E+02 iteration ||r|| zeta 1 0.30354859861452E-12 59.9994751578754 2 0.11186435488267E-14 21.7627846142536 3 0.11312258511928E-14 22.2876617043224 4 0.11222160585284E-14 22.5230738188346 5 0.11244234177219E-14 22.6275390653892 6 0.11330434819384E-14 22.6740259189533 7 0.11334259623050E-14 22.6949056826251 8 0.11374839313647E-14 22.7044023166872 9 0.11424877443039E-14 22.7087834345620 10 0.11329475190566E-14 22.7108351397177 11 0.11337364093482E-14 22.7118107121341 12 0.11379928308864E-14 22.7122816240971 13 0.11369453681794E-14 22.7125122663243 14 0.11430390337015E-14 22.7126268007594 15 0.11400318886400E-14 22.7126844161819 16 0.11352091331197E-14 22.7127137461755 17 0.11350923439124E-14 22.7127288402000 18 0.11475378864565E-14 22.7127366848296 19 0.11366777929028E-14 22.7127407981217 20 0.11274243312504E-14 22.7127429721364 21 0.11353930792856E-14 22.7127441294025 22 0.11299685800278E-14 22.7127447493900 23 0.11296405041170E-14 22.7127450834533 24 0.11381975597887E-14 22.7127452643881 25 0.11328127301663E-14 22.7127453628451 26 0.11367332658939E-14 22.7127454166517 27 0.11283372178605E-14 22.7127454461696 28 0.11384734158863E-14 22.7127454624211 29 0.11394011989719E-14 22.7127454713974 30 0.11354294067640E-14 22.7127454763703 31 0.11412988029103E-14 22.7127454791343 32 0.11358088407717E-14 22.7127454806740 33 0.11263266152515E-14 22.7127454815316 34 0.11275183080286E-14 22.7127454820131 35 0.11328306951409E-14 22.7127454822840 36 0.11357880314891E-14 22.7127454824349 37 0.11332687790488E-14 22.7127454825202 38 0.11324108818137E-14 22.7127454825684 39 0.11365065523777E-14 22.7127454825967 40 0.11361185361321E-14 22.7127454826116 41 0.11276519820716E-14 22.7127454826202 42 0.11317183424878E-14 22.7127454826253 43 0.11236007481770E-14 22.7127454826276 44 0.11304065564684E-14 22.7127454826296 45 0.11287791356431E-14 22.7127454826310 46 0.11297028000133E-14 22.7127454826310 47 0.11281236869666E-14 22.7127454826314 48 0.11277254075548E-14 22.7127454826317 49 0.11320327289847E-14 22.7127454826309 50 0.11287655285563E-14 22.7127454826321 51 0.11230503422400E-14 22.7127454826324 52 0.11292089094944E-14 22.7127454826313 53 0.11366728396408E-14 22.7127454826315 54 0.11222618466968E-14 22.7127454826310 55 0.11278193276516E-14 22.7127454826315 56 0.11244624896030E-14 22.7127454826316 57 0.11264508872685E-14 22.7127454826318 58 0.11255583774760E-14 22.7127454826314 59 0.11227129146723E-14 22.7127454826314 60 0.11189480800173E-14 22.7127454826318 61 0.11163241472678E-14 22.7127454826315 62 0.11278839424218E-14 22.7127454826318 63 0.11226804133008E-14 22.7127454826313 64 0.11222456601361E-14 22.7127454826317 65 0.11270879524310E-14 22.7127454826308 66 0.11303771390006E-14 22.7127454826319 67 0.11240101357287E-14 22.7127454826319 68 0.11240278884391E-14 22.7127454826321 69 0.11207748067718E-14 22.7127454826317 70 0.11178755187571E-14 22.7127454826327 71 0.11195935245649E-14 22.7127454826313 72 0.11260715126337E-14 22.7127454826322 73 0.11281677964997E-14 22.7127454826316 74 0.11162340034815E-14 22.7127454826318 75 0.11208709203921E-14 22.7127454826310 Benchmark completed VERIFICATION SUCCESSFUL Zeta is 0.2271274548263E+02 Error is 0.3128387698896E-15 CG Benchmark Completed. Class = B Size = 75000 Iterations = 75 Time in seconds = 88.72 Total processes = 1 Compiled procs = 1 Mop/s total = 616.64 Mop/s/process = 616.64 Operation type = floating point Verification = SUCCESSFUL Version = 3.3 Compile date = 25 Dec 2014 Compile options: MPIF77 = mpif77 FLINK = $(MPIF77) FMPI_LIB = -L/usr/lib/openmpi/lib -lmpi -lopen-rte -lo... FMPI_INC = -I/usr/lib/openmpi/include -I/usr/lib/openm... FFLAGS = -O FLINKFLAGS = -O RAND = randi8 Please send the results of this run to: NPB Development Team Internet: npb#nas.nasa.gov If email is not available, send this to: MS T27A-1 NASA Ames Research Center Moffett Field, CA 94035-1000 Fax: 650-604-3957 Finish in 16:46:46--25/12/2014 -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- Start in 17:03:13--25/12/2014 NAS Parallel Benchmarks 3.3 -- CG Benchmark Size: 75000 Iterations: 75 Number of active processes: 1 Number of nonzeroes per row: 13 Eigenvalue shift: .600E+02 iteration ||r|| zeta 1 0.30354859861452E-12 59.9994751578754 2 0.11186435488267E-14 21.7627846142536 3 0.11312258511928E-14 22.2876617043224 4 0.11222160585284E-14 22.5230738188346 5 0.11244234177219E-14 22.6275390653892 6 0.11330434819384E-14 22.6740259189533 7 0.11334259623050E-14 22.6949056826251 8 0.11374839313647E-14 22.7044023166872 9 0.11424877443039E-14 22.7087834345620 10 0.11329475190566E-14 22.7108351397177 11 0.11337364093482E-14 22.7118107121341 12 0.11379928308864E-14 22.7122816240971 13 0.11369453681794E-14 22.7125122663243 14 0.11430390337015E-14 22.7126268007594 15 0.11400318886400E-14 22.7126844161819 16 0.11352091331197E-14 22.7127137461755 17 0.11350923439124E-14 22.7127288402000 18 0.11475378864565E-14 22.7127366848296 19 0.11366777929028E-14 22.7127407981217 20 0.11274243312504E-14 22.7127429721364 21 0.11353930792856E-14 22.7127441294025 22 0.11299685800278E-14 22.7127447493900 23 0.11296405041170E-14 22.7127450834533 24 0.11381975597887E-14 22.7127452643881 25 0.11328127301663E-14 22.7127453628451 26 0.11367332658939E-14 22.7127454166517 27 0.11283372178605E-14 22.7127454461696 28 0.11384734158863E-14 22.7127454624211 29 0.11394011989719E-14 22.7127454713974 30 0.11354294067640E-14 22.7127454763703 31 0.11412988029103E-14 22.7127454791343 32 0.11358088407717E-14 22.7127454806740 33 0.11263266152515E-14 22.7127454815316 34 0.11275183080286E-14 22.7127454820131 35 0.11328306951409E-14 22.7127454822840 36 0.11357880314891E-14 22.7127454824349 37 0.11332687790488E-14 22.7127454825202 38 0.11324108818137E-14 22.7127454825684 39 0.11365065523777E-14 22.7127454825967 40 0.11361185361321E-14 22.7127454826116 41 0.11276519820716E-14 22.7127454826202 42 0.11317183424878E-14 22.7127454826253 43 0.11236007481770E-14 22.7127454826276 44 0.11304065564684E-14 22.7127454826296 45 0.11287791356431E-14 22.7127454826310 46 0.11297028000133E-14 22.7127454826310 47 0.11281236869666E-14 22.7127454826314 48 0.11277254075548E-14 22.7127454826317 49 0.11320327289847E-14 22.7127454826309 50 0.11287655285563E-14 22.7127454826321 51 0.11230503422400E-14 22.7127454826324 52 0.11292089094944E-14 22.7127454826313 53 0.11366728396408E-14 22.7127454826315 54 0.11222618466968E-14 22.7127454826310 55 0.11278193276516E-14 22.7127454826315 56 0.11244624896030E-14 22.7127454826316 57 0.11264508872685E-14 22.7127454826318 58 0.11255583774760E-14 22.7127454826314 59 0.11227129146723E-14 22.7127454826314 60 0.11189480800173E-14 22.7127454826318 61 0.11163241472678E-14 22.7127454826315 62 0.11278839424218E-14 22.7127454826318 63 0.11226804133008E-14 22.7127454826313 64 0.11222456601361E-14 22.7127454826317 65 0.11270879524310E-14 22.7127454826308 66 0.11303771390006E-14 22.7127454826319 67 0.11240101357287E-14 22.7127454826319 68 0.11240278884391E-14 22.7127454826321 69 0.11207748067718E-14 22.7127454826317 70 0.11178755187571E-14 22.7127454826327 71 0.11195935245649E-14 22.7127454826313 72 0.11260715126337E-14 22.7127454826322 73 0.11281677964997E-14 22.7127454826316 74 0.11162340034815E-14 22.7127454826318 75 0.11208709203921E-14 22.7127454826310 Benchmark completed VERIFICATION SUCCESSFUL Zeta is 0.2271274548263E+02 Error is 0.3128387698896E-15 CG Benchmark Completed. Class = B Size = 75000 Iterations = 75 Time in seconds = 87.47 Total processes = 1 Compiled procs = 1 Mop/s total = 625.43 Mop/s/process = 625.43 Operation type = floating point Verification = SUCCESSFUL Version = 3.3 Compile date = 25 Dec 2014 Compile options: MPIF77 = mpif77 FLINK = $(MPIF77) FMPI_LIB = -L/usr/lib/openmpi/lib -lmpi -lopen-rte -lo... FMPI_INC = -I/usr/lib/openmpi/include -I/usr/lib/openm... FFLAGS = -O FLINKFLAGS = -O RAND = randi8 Please send the results of this run to: NPB Development Team Internet: npb#nas.nasa.gov If email is not available, send this to: MS T27A-1 NASA Ames Research Center Moffett Field, CA 94035-1000 Fax: 650-604-3957 Finish in 17:04:43--25/12/2014 -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/- tavg.dat 88.3055 45.1482 37.7202 37.4035 53.777 speedup.dat 1 1.9559 2.34107 2.36089 1.64207
You can do it all in one awk script that processes all the log files: #!/usr/bin/awk -f BEGIN { FS="=" } lfname != FILENAME { lfname = FILENAME; split(FILENAME, a, "."); fnum=a[3] } /Time in seconds/ { tsecs[fnum] += $2; tcnt[fnum]++ } /Total processes/ { cp[fnum] = int($2) } END { tavg1 = tsecs[1]/tcnt[1] for( k in tsecs ) { tavgk = tsecs[k]/tcnt[k] if( tavgk > 0 ) { print k OFS cp[k] OFS tavgk OFS tavg1/tavgk } } } If you put that in a file called awk.script and make it executable with chmod +x awk.script you can run it in bash like: ./awk.script cg.B.*.log If you're using GNU awk, the output will be ordered( extra steps may be needed to ensure the output is ordered using other awk flavors ). Where I generated a 2nd and 3rd file, the output is like: 1 1 88.095 1 2 2 68.095 1.29371 3 4 49.595 1.77629 where the unnamed columns are like: file number, # processes, avg per file, speedup. You could get just the speedups by changing the print in the END block to be like print tavg1/tavgk. Here's a breakdown of the script: Use a simpler field separator in BEGIN lfname != FILENAME - parse out file number from the filename as fnum but only when the FILENAME changes. /Time in seconds/ - store the values in tsecs and tcnt arrays with an fnum key. Use int() function to strip whitespace from processes value. /Total processes/ - store the process in the cp array with an fnum key END - Calculate the average for fnum 1 as tavg1, loop through the keys in tsecs and calculate the average by fnum key as tavgk. When tavgk > 0 print the output as described above.
You have figured out all the difficult parts already. You don't need the tavg.dat file at all. Create your tavg(n) function directly as a system call: tavg(n) = system("awk 'BEGIN { FS = \"[ \\t]*=[ \\t]*\" } \ /Time in seconds/ { s += $2; c++ } /Total processes/ { \ if (! CP) CP = $2 } END { print s/c }' cg.B.".n.".log") And a speedup(n) function as speedup(n)=tavg(n)/tavg(1) Now you can set print to write to a file: set print "speedup.dat" do for [i=1:5] { print speedup(i) } unset print
Arcgis field calculations, get last dits of number
I want get 2 last digits of numbers, this digits also can be string not int Cell: 29501864,071879 17906796,472795 17038547,962973 182638877,306748 101159098,3431 183391558,187717 VB script function: Right(CStr( [tracts.Shape_Area] ),2) What I get: 94 47 32 48 31 17 What I want get 79 95 73 48 31 17 What is wrong in my function ?
This code is correct: Right(CStr( [Shape_Area] ),2) When you import a FeatureClass in a geodatabase, the Shape_Area created as a Double field that can have many decimal places! (By default 8 decimal places) But in Attribute Table, you can see 6 decimal places by default. To see all the decimal places of your numbers try this: CStr( [Shape_Area] )