Archive

Archive for January, 2011

Syntax highlighting for golang

January 29th, 2011 No comments

在网上搜到Allister SanchezSyntaxHighlighter写了个高亮显示的扩展, js代码如下:

shBrushGo.js

SyntaxHighlighter.brushes.Go = function()
{
	// Copyright 2010 Sanchez, Allister Levi

	var declaration_type_words = 'struct func interface map chan package import type const var';

	var control_words = 'goto break continue if else switch default case for range go select return fallthrough defer';

	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },			// one line comments
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// strings
		{ regex: new RegExp(this.getKeywords(declaration_type_words), 'gm'),		css: 'color2 bold' },
		{ regex: new RegExp(this.getKeywords(control_words), 'gm'),		css: 'keyword bold' }
		];
};

SyntaxHighlighter.brushes.Go.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Go.aliases	= ['go', 'golang'];

把这段js代码放到 wp-content/plugins/syntax-highlighter-mt/scripts 目录下, 并修改文件syntax-highlighter-mt/stxhighlightmt.php文件在文中增加:

      'xml xhtml xslt html    $x/scripts/shBrushXml.js',
      'go golang    $x/scripts/shBrushGo.js'

修改完后,在的博客里面可以这样使用:

package main
import "fmt"
func main() {
    fmt.Printf("yoohoo!")
}

显示效果如下:

package main
import "fmt"
func main() {
    fmt.Printf("yoohoo!")
}

参考: http://hackgolang.blogspot.com/2010/05/syntax-highlighting-for-golang.html

Bian Jiang
– EOF–

使用Go读取网页信息

January 29th, 2011 3 comments

打算用Go写个抓取网页的工具,就看了一下HTTP包, 简单的写了两个例子.
格式化后的代码参考: https://gist.github.com/801826

update: 由于新版本对log, http.header包做了调整, 更新代码
log.Exit –> log.Fatal
req.Header = map[string]string{} –> req.Header = map[string][]string{}

1. 直接使用http.Get取得信息

package main

import (
   "log"
   "io/ioutil"
   "http"
)

func main() {
   res, _, err := http.Get("http://bbs.golang-china.org/")
   if err != nil {
      log.Fatal(err)
   }
   defer res.Body.Close()

   body, _ := ioutil.ReadAll(res.Body)
   log.Println(string(body))
}

2. 自己定义HTTP的头信息

package main

import (
	"log"
	"http"
	"net"
	"io/ioutil"
)

func main() {

	url, err := http.ParseURL("http://bbs.golang-china.org/")

	if err != nil {
		log.Fatal(err)
	}

	tcpConn, err := net.Dial("tcp", "", url.Host + ":80")

	if err != nil {
		log.Fatal(err)
	}

	clientConn := http.NewClientConn(tcpConn, nil)

	var req http.Request
	req.URL = url
	req.Method = "GET"
	req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Chrome/9.0.570.0 Safari/534.11"
	req.Header = map[string][]string{}
	req.Header.Add("Connection", "keep-alive")

	err = clientConn.Write(&req)
	if err != nil {
		log.Fatal(err)
	}
	resp, err := clientConn.Read(&req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()		
		
	log.Println("Http Response: " + resp.Status)
	body, _ := ioutil.ReadAll(resp.Body)
	
	log.Println(string(body))
}

Categories: golang, Tech.Notes Tags: , , ,

Go语言开发工具 LiteIDE

January 19th, 2011 1 comment


LiteIDE 是Go语言的开发工具,采用QT开发的,支持Linux和Windows。

LiteIDE有插件管理,如果你愿意的话,可以自己给它开发插件。

目前目前版本0.1.8, 支持:
* UTF8文件加载和保存
* 语法高亮
* 项目管理
* 项目编译和运行
* 单文件的编译和运行
* gopromake自动编译工具
* 错误信息提示

GolangIDE is golang developer ide, based for liteide.

Features:

* UTF8 file load and save
* Syntax Highliter
* Project Manager
* Project Build and run
* No project, file build and run
* gopromake auto build tools
* build error can jump to source line

Download:

http://code.google.com/p/golangide/downloads/list

Source:

http://code.google.com/p/liteide/source/checkout

Update logs:
* 0.1.8 go ast view plugin, tool goastview.
* 0.1.6 build on win32/linux64bit; auto env lookup.
* 0.1.5 build error can jump to source line
* 0.1.2 gopromake file parser use goroutines
* 0.1.0 first release

From: https://groups.google.com/group/golang-nuts/browse_thread/thread/76e8670dd00c080a#

Categories: golang, OpenSource Tags: , , , , ,