88 "flag"
99 "fmt"
1010 "io/ioutil"
11- "log"
1211 "net/http"
1312 "net/url"
1413 "os"
@@ -19,6 +18,15 @@ import (
1918 "time"
2019)
2120
21+ func fatal (err error ) {
22+ fmt .Println (err )
23+ os .Exit (1 )
24+ }
25+
26+ func fatalf (format string , err error ) {
27+ fmt .Printf (format , err )
28+ }
29+
2230const (
2331 dataFileSuffix = ".data"
2432 dataCandidateFileSuffix = ".candidate.data"
@@ -57,8 +65,8 @@ type Config struct {
5765 Hour int `json:"hour"`
5866 Minute int `json:"minute"`
5967 Gender int `json:"gender"`
60- FirstNameKeyWords string `json:"first_name_key_words"`
6168 MinCandidateScore int `json:"min_candidate_score"`
69+ FirstNameKeyWords string `json:"first_name_key_words"`
6270}
6371
6472func buildNameTestUrlPrefix () {
@@ -89,7 +97,7 @@ func getNameScore(firstName string) (int, error) {
8997
9098 scoreStr := content [:index ]
9199 score , err := strconv .Atoi (scoreStr )
92- log .Printf ("name score: %s = %d" , firstName , score )
100+ fmt .Printf ("name score: %s%s = %d\n " , config . LastName , firstName , score )
93101 return score , err
94102
95103}
@@ -147,11 +155,11 @@ func statCalculate(score *NameScore, name string) {
147155func writeScoreData () {
148156 bt , err := json .Marshal (scoreDB )
149157 if err != nil {
150- log . Fatalf ("marshal err: %v" , err )
158+ fatalf ("marshal err: %v\n " , err )
151159 }
152160 err = ioutil .WriteFile (* configFile + dataFileSuffix , bt , 0666 )
153161 if err != nil {
154- log . Fatalf ("write score file error: %v" , err )
162+ fatalf ("write score file error: %v\n " , err )
155163 }
156164}
157165
@@ -164,11 +172,11 @@ func printCandidates() {
164172func writeCandidateData () {
165173 bt , err := json .Marshal (candidates )
166174 if err != nil {
167- log . Fatalf ("marshal err: %v" , err )
175+ fatalf ("marshal err: %v\n " , err )
168176 }
169177 err = ioutil .WriteFile (* configFile + dataCandidateFileSuffix , bt , 0666 )
170178 if err != nil {
171- log . Fatalf ("write candidate file error: %v" , err )
179+ fatalf ("write candidate file error: %v\n " , err )
172180 }
173181}
174182
@@ -215,7 +223,7 @@ func oneFirstNameScoring(parent *NameScore, firstName rune) error {
215223
216224func twoFirstNameLoopScoring () error {
217225 for i := 0 ; i < len (keyWords ); i ++ {
218- for j := 1 ; j < len (keyWords ); j ++ {
226+ for j := 0 ; j < len (keyWords ); j ++ {
219227 firstName1 := keyWords [i ]
220228 firstName2 := keyWords [j ]
221229
@@ -254,11 +262,14 @@ func addToTree(nameScore *NameScore, score int, firstName ...rune) {
254262 parent .More = make (map [rune ]* NameScore , 2 )
255263 }
256264 name := firstName [i ]
257- if _ , ok := parent .More [name ]; ok {
265+ if child , ok := parent .More [name ]; ok {
266+ parent = child
258267 continue
259268 }
260269 if i < size - 1 {
261- parent .More [name ] = newScore (0 )
270+ child := newScore (0 )
271+ parent .More [name ] = child
272+ parent = child
262273 continue
263274 }
264275 parent .More [name ] = newScore (score )
@@ -304,7 +315,7 @@ var (
304315func loopScoring () {
305316 defer func () {
306317 if err := recover (); err != nil {
307- log .Printf ("namer error: %v" , err )
318+ fmt .Printf ("namer error: %v\n " , err )
308319 }
309320 finishChan <- 1
310321 }()
@@ -328,7 +339,7 @@ func printTop10() {
328339func startCandidate () {
329340 defer func () {
330341 if err := recover (); err != nil {
331- log .Printf ("candidate error: %v" , err )
342+ fmt .Printf ("candidate error: %v\n " , err )
332343 }
333344 finishChan <- 1
334345 }()
@@ -374,7 +385,7 @@ func startCandidate() {
374385func main () {
375386 err := parseConfig ()
376387 if err != nil {
377- log . Fatal (err )
388+ fatal (err )
378389 }
379390
380391 go loopScoring ()
@@ -384,9 +395,9 @@ func main() {
384395
385396 select {
386397 case sig := <- signalChan :
387- log .Printf ("receive stop signal: %s" , sig )
398+ fmt .Printf ("receive stop signal: %s\n " , sig )
388399 case <- finishChan :
389- log .Println ("scoring finish" )
400+ fmt .Println ("scoring finish" )
390401 }
391402
392403 writeScoreData ()
@@ -397,9 +408,9 @@ func main() {
397408
398409 select {
399410 case sig := <- signalChan :
400- log .Printf ("receive stop signal: %s" , sig )
411+ fmt .Printf ("receive stop signal: %s\n " , sig )
401412 case <- finishChan :
402- log .Println ("candidate finish" )
413+ fmt .Println ("candidate finish" )
403414 }
404415
405416 writeScoreData ()
0 commit comments