diff --git a/misc/at.go b/misc/at.go deleted file mode 100644 index 4121058..0000000 --- a/misc/at.go +++ /dev/null @@ -1,14 +0,0 @@ -package main -import ( - `fmt` - `github.com/nsf/termbox-go` -) - -func main() { - fore := termbox.ColorGreen | termbox.AttrUnderline - fmt.Printf("f: %08b\n", fore) - fore = termbox.ColorGreen | termbox.AttrUnderline | termbox.AttrReverse - fmt.Printf("f: %08b\n", fore) - fore &= ^termbox.AttrReverse - fmt.Printf("f: %08b\n", fore) -} diff --git a/misc/dj.go b/misc/dj.go deleted file mode 100644 index 0840def..0000000 --- a/misc/dj.go +++ /dev/null @@ -1,413 +0,0 @@ -// Copyright (c) 2013 by Michael Dvorkin. All Rights Reserved. -//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -package main -import ( - "fmt" - "bytes" - "regexp" - "strings" - "text/template" -) -type Market struct { - Dow map[string]string - Nasdaq map[string]string - Sp500 map[string]string - Advances map[string]string - Declines map[string]string - Unchanged map[string]string - Highs map[string]string - Lows map[string]string -} -//----------------------------------------------------------------------------- -func main() { - html := ` -... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SymbolLastChange
Dow -15,300.34Up 75.65 (0.50%)
Nasdaq3,504.26Up 19.43 (0.56%)
S&P 5001,652.32Up 11.86 (0.72%)
10-Yr Bond2.63% - Down 0.02
NYSE Volume3,490,723,250.00
Nasdaq Volume...1,594,900,625.00
-
-Indices: US - World | Most Actives -
- - -

Advances & Declines

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 NYSENASDAQ
Advances2,992 - (72%) - 1,445 - (57%) -
Declines1,040 - (25%) - 950 - (38%) -
Unchanged113 - (3%) - 128 - (5%) -
Up Vol*2,582 - (74%) - 950 - (60%) -
Down Vol*863 - (25%) - 625 - (39%) -
Unch. Vol*46 - (1%) - 20 - (1%) -
New Hi's350314
New Lo's11719
-... - - - - - - -` - -html = ` -... -
NYSELASTCHANGE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SymbolLastChange
Dow15,464.30Up 3.38 (0.02%)
Nasdaq3,600.08 0.00 (0.00%)
S&P 5001,680.19Up 5.17 (0.31%)
10-Yr Bond2.60% - Up 0.03
NYSE Volume3,315,714,000.00
Nasdaq Volume...1,578,376,875.00
-
-Indices: US - World | Most Actives -
-
- -

Advances & Declines

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 NYSENASDAQ
Advances1,962 - (48%) - 1,322 - (53%) -
Declines2,029 - (49%) - 1,068 - (43%) -
Unchanged126 - (3%) - 115 - (5%) -
Up Vol*1,822 - (55%) - 918 - (58%) -
Down Vol*1,417 - (43%) - 636 - (40%) -
Unch. Vol*76 - (2%) - 24 - (2%) -
New Hi's355337
New Lo's11014
-
-
-*in millions
- -
-
-
-

Most Actives

-
- - - -... -` - start := strings.Index(html, `
` - const some = `<.+?` - const space = `\s*` - const color = `#([08c]{6});">\s*` - const price = `([\d\.,]+)` - const percent = `\(([\d\.,%]+)\)` - - regex := []string{ - "(Dow)", any, price, some, color, price, some, percent, any, - "(Nasdaq)", any, price, some, color, price, some, percent, any, - "(S&P 500)", any, price, some, color, price, some, percent, any, - "(Advances)", any, price, space, percent, any, price, space, percent, any, - "(Declines)", any, price, space, percent, any, price, space, percent, any, - "(Unchanged)", any, price, space, percent, any, price, space, percent, any, - "(New Hi's)", any, price, any, price, any, - "(New Lo's)", any, price, any, price, any, - } - - re := regexp.MustCompile(strings.Join(regex, "")) - matches := re.FindAllStringSubmatch(html, -1) - - if len(matches) > 0 { - fmt.Printf("%d matches\n", len(matches[0])) - for i, str := range matches[0][1:] { - fmt.Printf("%d) [%s]\n", i, str) - } - } else { - println("No matches") - } -return - m := Market{ - Dow: make(map[string]string), - Nasdaq: make(map[string]string), - Sp500: make(map[string]string), - Advances: make(map[string]string), - Declines: make(map[string]string), - Unchanged: make(map[string]string), - Highs: make(map[string]string), - Lows: make(map[string]string), - } - m.Dow[`name`] = matches[0][1] - m.Dow[`latest`] = matches[0][2] - m.Dow[`change`] = matches[0][4] - if matches[0][3] == "Up" { - m.Dow[`change`] = "+" + matches[0][4] - m.Dow[`percent`] = "+" + matches[0][5] - } else { - m.Dow[`change`] = "-" + matches[0][4] - m.Dow[`percent`] = "-" + matches[0][5] - } - - m.Nasdaq[`name`] = matches[0][6] - m.Nasdaq[`latest`] = matches[0][7] - if matches[0][8] == "Up" { - m.Nasdaq[`change`] = "+" + matches[0][9] - m.Nasdaq[`percent`] = "+" + matches[0][10] - } else { - m.Nasdaq[`change`] = "-" + matches[0][9] - m.Nasdaq[`percent`] = "-" + matches[0][10] - } - - m.Sp500[`name`] = matches[0][11] - m.Sp500[`latest`] = matches[0][12] - if matches[0][13] == "Up" { - m.Sp500[`change`] = "+" + matches[0][14] - m.Sp500[`percent`] = "+" + matches[0][15] - } else { - m.Sp500[`change`] = "-" + matches[0][14] - m.Sp500[`percent`] = "-" + matches[0][15] - } - - m.Advances[`name`] = matches[0][16] - m.Advances[`nyse`] = matches[0][17] - m.Advances[`nysep`] = matches[0][18] - m.Advances[`nasdaq`] = matches[0][19] - m.Advances[`nasdaqp`] = matches[0][20] - - m.Declines[`name`] = matches[0][21] - m.Declines[`nyse`] = matches[0][22] - m.Declines[`nysep`] = matches[0][23] - m.Declines[`nasdaq`] = matches[0][24] - m.Declines[`nasdaqp`] = matches[0][25] - - m.Unchanged[`name`] = matches[0][26] - m.Unchanged[`nyse`] = matches[0][27] - m.Unchanged[`nysep`] = matches[0][28] - m.Unchanged[`nasdaq`] = matches[0][29] - m.Unchanged[`nasdaqp`] = matches[0][30] - - m.Highs[`name`] = matches[0][31] - m.Highs[`nyse`] = matches[0][32] - m.Highs[`nasdaq`] = matches[0][33] - m.Lows[`name`] = matches[0][34] - m.Lows[`nyse`] = matches[0][35] - m.Lows[`nasdaq`] = matches[0][36] - fmt.Printf("%q\n", m) - println(Format(m)) -} - -//----------------------------------------------------------------------------- -func Format(m Market) string { - markup := `{{.Dow.name}}: {{.Dow.change}} ({{.Dow.percent}}) at {{.Dow.latest}}, ` - markup += `{{.Sp500.name}}: {{.Sp500.change}} ({{.Sp500.percent}}) at {{.Sp500.latest}}, ` - markup += `{{.Nasdaq.name}}: {{.Nasdaq.change}} ({{.Nasdaq.percent}}) at {{.Nasdaq.latest}}` - markup += "\n" - markup += `{{.Advances.name}}: {{.Advances.nyse}} ({{.Advances.nysep}}) on NYSE and {{.Advances.nasdaq}} ({{.Advances.nasdaqp}}) on Nasdaq. ` - markup += `{{.Declines.name}}: {{.Declines.nyse}} ({{.Declines.nysep}}) on NYSE and {{.Declines.nasdaq}} ({{.Declines.nasdaqp}}) on Nasdaq` - markup += "\n" - markup += `New highs: {{.Highs.nyse}} on NYSE and {{.Highs.nasdaq}} on Nasdaq. ` - markup += `New lows: {{.Lows.nyse}} on NYSE and {{.Lows.nasdaq}} on Nasdaq.` - template, err := template.New("screen").Parse(markup) - if err != nil { - panic(err) - } - - buffer := new(bytes.Buffer) - err = template.Execute(buffer, m) - if err != nil { - panic(err) - } - - return buffer.String() -} diff --git a/misc/google_finance.go b/misc/google_finance.go deleted file mode 100644 index d3faf2f..0000000 --- a/misc/google_finance.go +++ /dev/null @@ -1,156 +0,0 @@ -// Copyright (c) 2013 by Michael Dvorkin. All Rights Reserved. -//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// -// +build ignore - -package mop - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - "strings" - "time" -) - -const real_time_url = "http://finance.google.com/finance/info?client=ig&q=" - -// const body = ` -// // [ -// { -// "id": "22144" -// ,"t" : "AAPL" -// ,"e" : "NASDAQ" -// ,"l" : "393.78" -// ,"l_cur" : "393.78" -// ,"s": "2" -// ,"ltt":"4:00PM EDT" -// ,"lt" : "Jun 27, 4:00PM EDT" -// ,"c" : "-4.29" -// ,"cp" : "-1.08" -// ,"ccol" : "chr" -// ,"el": "393.40" -// ,"el_cur": "393.40" -// ,"elt" : "Jun 27, 5:04PM EDT" -// ,"ec" : "-0.38" -// ,"ecp" : "-0.10" -// ,"eccol" : "chr" -// ,"div" : "3.05" -// ,"yld" : "3.10" -// } -// ,{ -// "id": "353353" -// ,"t" : "ATVI" -// ,"e" : "NASDAQ" -// ,"l" : "13.55" -// ,"l_cur" : "13.55" -// ,"s": "0" -// ,"ltt":"3:59PM EDT" -// ,"lt" : "Jun 21, 3:59PM EDT" -// ,"c" : "-0.33" -// ,"cp" : "-2.38" -// ,"ccol" : "chr" -// } -// ,{ -// "id": "17154" -// ,"t" : "HPQ" -// ,"e" : "NYSE" -// ,"l" : "24.15" -// ,"l_cur" : "24.15" -// ,"s": "0" -// ,"ltt":"4:01PM EDT" -// ,"lt" : "Jun 21, 4:01PM EDT" -// ,"c" : "0.57" -// ,"cp" : "2.31" -// ,"ccol" : "chr" -// } -// ,{ -// "id": "18241" -// ,"t" : "IBM" -// ,"e" : "NYSE" -// ,"l" : "195.46" -// ,"l_cur" : "195.46" -// ,"s": "0" -// ,"ltt":"4:02PM EDT" -// ,"lt" : "Jun 21, 4:02PM EDT" -// ,"c" : "-1.89" -// ,"cp" : "-0.96" -// ,"ccol" : "chr" -// } -// ]` - -type Message struct { - Ticker string `json:"t"` - Exchange string `json:"e"` - LastTrade string `json:"l"` - CurrentPrice string `json:"l_cur"` - LastTradeTime string `json:"ltt"` - LastTradeDateTime string `json:"lt"` - Change string `json:"c"` - ChangePercent string `json:"cp"` - ExLastTrade string `json:"el"` - ExCurrentPrice string `json:"el_cur"` - ExLastTradeDateTime string `json:"elt"` - ExChange string `json:"ec"` - ExChangePercent string `json:"ecp"` - Dividend string `json:"div"` - Yield string `json:"yld"` -} - -var message []Message - -func (m *Message) Color() string { - if strings.Index(m.Change, "-") == -1 { - return "" - } else { - return "" - } -} - -//----------------------------------------------------------------------------- -func Quote(ticker string) []Message { - if len(message) > 0 && time.Now().Second()%5 != 0 { // Fetch quotes every 5 seconds. - return message - } - - // Send the request. - response, err := http.Get(real_time_url + ticker) - if err != nil { - panic(err) - } - - // Fetch response and get its body. - defer response.Body.Close() - body, err := ioutil.ReadAll(response.Body) - - // Parse JSON. - err = json.Unmarshal(sanitize(body), &message) - - // Parse JSON. - // err := json.Unmarshal(sanitize([]byte(body)), &message) - if err != nil { - panic(err) - } - - return message -} - -//----------------------------------------------------------------------------- -func sanitize(ascii []byte) []byte { - return bytes.Replace(ascii, []byte{'/'}, []byte{}, -1) -} - -// func sanitize(str string) string { -// r := strings.NewReplacer("//", "", "[", "", "]", "") -// fmt.Printf("%s\n", []byte(r.Replace(str))) -// return r.Replace(str) -// } -// -// func main() { -// -// message := Quote("coh,atvi,hpq,ibm,xxx") -// for _,m := range message { -// fmt.Printf("%s, %s, %s\n", m.Ticker, m.LastTrade, m.Change) -// } -// } diff --git a/misc/in.go b/misc/in.go deleted file mode 100644 index cfda811..0000000 --- a/misc/in.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2013 by Michael Dvorkin. All Rights Reserved. -//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -package main -import ( - `fmt` - `reflect` -) - -type Formatter struct { - entity interface{} -} - -type Dog struct { - name string -} - -func (self *Formatter) Initialize(e interface{}) *Formatter { - self.entity = e - fmt.Printf("[%v]\n", reflect.TypeOf(e).String()) - return self -} - -func main() { - str := `hello` - f1 := new(Formatter).Initialize(str) - dog := new(Dog) - dog.name = `Google` - f2 := new(Formatter).Initialize(dog) - - fmt.Printf("[%v] [%v]\n", f1, f2) -} diff --git a/misc/js.go b/misc/js.go deleted file mode 100644 index 9fa7628..0000000 --- a/misc/js.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2013 by Michael Dvorkin. All Rights Reserved. -//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -package main -import ( - "fmt" - "encoding/json" -) - -type Config struct { - MarketRefreshRate int - QuotesRefreshRate int - Tickers []string - SortBy string - SortOrder string -} - -func main() { - var cfg Config - cfg.MarketRefreshRate = 1 - cfg.QuotesRefreshRate = 1 - cfg.Tickers = []string{ "AAPL", "ALU", "HPQ", "IBM" } - cfg.SortBy = "Ticker" - cfg.SortOrder = "Desc" - fmt.Printf("%+v\n", cfg) - blob, err := json.Marshal(cfg) - if err != nil { - panic(err) - } - fmt.Printf("%q\n", blob) - - var cfg2 Config - err = json.Unmarshal(blob, &cfg2) - if err != nil { - panic(err) - } - fmt.Printf("%+v\n", cfg2) -}