iovxw

Ubuntu 安装 Budgie Desktop

类似ChromeOS的桌面环境

介绍什么的就懒得重复了

自己百度吧

直接扔命令

        sudo add-apt-repository ppa:sukso96100/budgie-desktop
        sudo apt-get update
        sudo apt-get install budgie-desktop

Atom配置Golang开发环境

没有自动补全硬伤

先扔一个效果图

Atom我就不介绍了,自己去看WIKI吧

ubuntu快速安装:

sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get update && sudo apt-get install atom

MAC可以直接从官网下载

其他系统就自己编译吧

因为和Github结合的很好,然后速度较快,比较适合项目的小修改&提交,和不喜欢大型IDE的人

未配置的界面很像Sublime Text,上图是我修改主题和配色后的

言归正传。Atom自带Golang插件,但是调试和格式化没有(自动补全就别想了)

然后我在官方Packages里找到了Go的插件,叫做Go Plus

Github地址:https://github.com/joefitzgerald/go-plus

作者的演示:

https://camo.githubusercontent.com/dfd447388f9d6506dcdd19e6c5c431bf4211e673/687474703a2f2f636c2e6c792f696d6167652f3339327a324c3066304534312f676f2d706c75732d6578616d706c652e676966

安装的方法也很简单,File -> Preferences... -> Packages

然后在搜索框内输入go plus回车等一会就会出现了

点击Install安装

有可能会出错,重试一遍就行了

然后点击Settings进行设置

勾选自己需要的功能

然后填入Go的安装目录和工作目录就行了

如果要使用LintVet的话

还需要

go get github.com/golang/lint/golint

go get code.google.com/p/go.tools/cmd/vet

主题和配色也都可以在Preferences里更换&下载

开始玩吧!

好久没更新了啊

顺便给博客添加搜索功能

谁说静态博客就不能用搜索的?

好吧其实就是用了下搜索引擎的site搜索功能

可以看见右边测栏里已经多出来了一个搜索框

不过貌似百度没有收录这个博客= =

所以没法用什么的很正常

在页面内添加

<form id="search" class="search" role="search">
        <input class="form-control" placeholder="搜索" name="q" type="text">
</form>

然后在js里添加

(function(){
	$(document).on('submit', '#search.search', function(){
		var q = $(this).find('[name=q]').val();
		if($.trim(q) !== ''){
			var host = window.location.hostname;
			var url = 'http://www.baidu.com/s?wd=' + 'site:' + host + " " + $.trim(q);
			window.open(url, "_blank");
		}
		return false;
	});
})();

http://www.baidu.com/s?wd=可以替换成任意支持site搜索的搜索引擎地址


PS: 这是 jQuery 版本,写成原生的也不难这里就不废话了

Golang IntelliJ IDEA

换了个IDE玩

LiteIDE用了好久,觉得有些地方不是很符合要求

于是又去试了几个Golang的编辑器

发现IntelliJ IDEA还挺顺手的

各种IDE该有的功能都有了(这不废话么)

配合Golang的插件我认为应该是最好用的Go IDE了

当然缺点就是CPU占用略高

1.1Ghz的渣本有点发热


CPU已经撑不住了


鼠标放到右侧滚轮条可以预览相应的代码


提示功能


自动补全

不知道什么时候能有个中文语言包呢

开始折腾OpenGL

生命在于折腾啊。生命不息,折腾不止。

嗯,准备写一个类似Mineccraft的游戏

基本设定已经弄好了

不过目测是个大坑

希望到时候别弃坑吧

求有经验的人帮忙啊……

下面是go-gl的example源码

顺便测试一下代码高亮

  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "github.com/go-gl/gl"
  6. glfw "github.com/go-gl/glfw3"
  7. "image"
  8. "image/png"
  9. "io"
  10. "os"
  11. )
  12. const (
  13. Title = "Spinning Gopher"
  14. Width = 640
  15. Height = 480
  16. )
  17. var (
  18. texture gl.Texture
  19. rotx, roty float32
  20. ambient []float32 = []float32{0.5, 0.5, 0.5, 1}
  21. diffuse []float32 = []float32{1, 1, 1, 1}
  22. lightpos []float32 = []float32{-5, 5, 10, 0}
  23. )
  24. func errorCallback(err glfw.ErrorCode, desc string) {
  25. fmt.Printf("%v: %v\n", err, desc)
  26. }
  27. func main() {
  28. glfw.SetErrorCallback(errorCallback)
  29. if !glfw.Init() {
  30. panic("Can't init glfw!")
  31. }
  32. defer glfw.Terminate()
  33. window, err := glfw.CreateWindow(Width, Height, Title, nil, nil)
  34. if err != nil {
  35. panic(err)
  36. }
  37. window.MakeContextCurrent()
  38. glfw.SwapInterval(1)
  39. gl.Init()
  40. if err := initScene(); err != nil {
  41. fmt.Fprintf(os.Stderr, "init: %s\n", err)
  42. return
  43. }
  44. defer destroyScene()
  45. for !window.ShouldClose() {
  46. drawScene()
  47. window.SwapBuffers()
  48. glfw.PollEvents()
  49. }
  50. }
  51. func createTexture(r io.Reader) (gl.Texture, error) {
  52. img, err := png.Decode(r)
  53. if err != nil {
  54. return gl.Texture(0), err
  55. }
  56. rgbaImg, ok := img.(*image.NRGBA)
  57. if !ok {
  58. return gl.Texture(0), errors.New("texture must be an NRGBA image")
  59. }
  60. textureId := gl.GenTexture()
  61. textureId.Bind(gl.TEXTURE_2D)
  62. gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
  63. gl.TexParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
  64. // flip image: first pixel is lower left corner
  65. imgWidth, imgHeight := img.Bounds().Dx(), img.Bounds().Dy()
  66. data := make([]byte, imgWidth*imgHeight*4)
  67. lineLen := imgWidth * 4
  68. dest := len(data) - lineLen
  69. for src := 0; src < len(rgbaImg.Pix); src += rgbaImg.Stride {
  70. copy(data[dest:dest+lineLen], rgbaImg.Pix[src:src+rgbaImg.Stride])
  71. dest -= lineLen
  72. }
  73. gl.TexImage2D(gl.TEXTURE_2D, 0, 4, imgWidth, imgHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, data)
  74. return textureId, nil
  75. }
  76. func initScene() (err error) {
  77. gl.Enable(gl.TEXTURE_2D)
  78. gl.Enable(gl.DEPTH_TEST)
  79. gl.Enable(gl.LIGHTING)
  80. gl.ClearColor(0.5, 0.5, 0.5, 0.0)
  81. gl.ClearDepth(1)
  82. gl.DepthFunc(gl.LEQUAL)
  83. gl.Lightfv(gl.LIGHT0, gl.AMBIENT, ambient)
  84. gl.Lightfv(gl.LIGHT0, gl.DIFFUSE, diffuse)
  85. gl.Lightfv(gl.LIGHT0, gl.POSITION, lightpos)
  86. gl.Enable(gl.LIGHT0)
  87. gl.Viewport(0, 0, Width, Height)
  88. gl.MatrixMode(gl.PROJECTION)
  89. gl.LoadIdentity()
  90. gl.Frustum(-1, 1, -1, 1, 1.0, 10.0)
  91. gl.MatrixMode(gl.MODELVIEW)
  92. gl.LoadIdentity()
  93. goph, err := os.Open("gopher.png")
  94. if err != nil {
  95. panic(err)
  96. }
  97. defer goph.Close()
  98. texture, err = createTexture(goph)
  99. return
  100. }
  101. func destroyScene() {
  102. texture.Delete()
  103. }
  104. func drawScene() {
  105. gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
  106. gl.MatrixMode(gl.MODELVIEW)
  107. gl.LoadIdentity()
  108. gl.Translatef(0, 0, -3.0)
  109. gl.Rotatef(rotx, 1, 0, 0)
  110. gl.Rotatef(roty, 0, 1, 0)
  111. rotx += 0.5
  112. roty += 0.1
  113. texture.Bind(gl.TEXTURE_2D)
  114. gl.Color4f(1, 1, 1, 1)
  115. gl.Begin(gl.QUADS)
  116. gl.Normal3f(0, 0, 1)
  117. gl.TexCoord2f(0, 0)
  118. gl.Vertex3f(-1, -1, 1)
  119. gl.TexCoord2f(1, 0)
  120. gl.Vertex3f(1, -1, 1)
  121. gl.TexCoord2f(1, 1)
  122. gl.Vertex3f(1, 1, 1)
  123. gl.TexCoord2f(0, 1)
  124. gl.Vertex3f(-1, 1, 1)
  125. gl.Normal3f(0, 0, -1)
  126. gl.TexCoord2f(1, 0)
  127. gl.Vertex3f(-1, -1, -1)
  128. gl.TexCoord2f(1, 1)
  129. gl.Vertex3f(-1, 1, -1)
  130. gl.TexCoord2f(0, 1)
  131. gl.Vertex3f(1, 1, -1)
  132. gl.TexCoord2f(0, 0)
  133. gl.Vertex3f(1, -1, -1)
  134. gl.Normal3f(0, 1, 0)
  135. gl.TexCoord2f(0, 1)
  136. gl.Vertex3f(-1, 1, -1)
  137. gl.TexCoord2f(0, 0)
  138. gl.Vertex3f(-1, 1, 1)
  139. gl.TexCoord2f(1, 0)
  140. gl.Vertex3f(1, 1, 1)
  141. gl.TexCoord2f(1, 1)
  142. gl.Vertex3f(1, 1, -1)
  143. gl.Normal3f(0, -1, 0)
  144. gl.TexCoord2f(1, 1)
  145. gl.Vertex3f(-1, -1, -1)
  146. gl.TexCoord2f(0, 1)
  147. gl.Vertex3f(1, -1, -1)
  148. gl.TexCoord2f(0, 0)
  149. gl.Vertex3f(1, -1, 1)
  150. gl.TexCoord2f(1, 0)
  151. gl.Vertex3f(-1, -1, 1)
  152. gl.Normal3f(1, 0, 0)
  153. gl.TexCoord2f(1, 0)
  154. gl.Vertex3f(1, -1, -1)
  155. gl.TexCoord2f(1, 1)
  156. gl.Vertex3f(1, 1, -1)
  157. gl.TexCoord2f(0, 1)
  158. gl.Vertex3f(1, 1, 1)
  159. gl.TexCoord2f(0, 0)
  160. gl.Vertex3f(1, -1, 1)
  161. gl.Normal3f(-1, 0, 0)
  162. gl.TexCoord2f(0, 0)
  163. gl.Vertex3f(-1, -1, -1)
  164. gl.TexCoord2f(1, 0)
  165. gl.Vertex3f(-1, -1, 1)
  166. gl.TexCoord2f(1, 1)
  167. gl.Vertex3f(-1, 1, 1)
  168. gl.TexCoord2f(0, 1)
  169. gl.Vertex3f(-1, 1, -1)
  170. gl.End()
  171. }

博客优化完成

因为某些原因,优化博客访问速度

因为某些众所周知的原因,谷歌访问不稳定,而这个博客本身的字体是用的谷歌的API,所以打开死慢= =

于是刚刚把整个css和字体都下载到了本地,访问速度应该会提升

希望Github别不稳定啊……不然就真挂了

Go语言GLFW3库的安装

编译&&安装GLFW3

因为想要写一个小游戏玩玩,然后需要安装GLFW3

于是写了这么一个教程备用

首先,安装需要的lib库

sudo apt-get install libxrandr-dev libxi-dev

当然已经安装过的就不用了,不过反正也不会重复安装,忘记的话就运行一遍试试吧

下载GLFW源码

http://www.glfw.org

编译

cmake -DBUILD_SHARED_LIBS=ON

cmake_install.cmake

打开cmake_install.cmake,修改SET(CMAKE_INSTALL_PREFIX "/usr/local")SET(CMAKE_INSTALL_PREFIX "/usr")

然后make+sudo make install

go get -u github.com/go-gl/glfw3

======END======

让XP继续接受更新

通过修改注册表来让XP继续接受更新

Betanews看到了让XP继续更新的方法

大体过程如下:

1.新建一个文件扩展名为.reg的文件(例如updates.reg

2.用文本编辑器打开

3.修改内容为

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\WPA\PosReady]
"Installed"=dword:00000001

4.保存,然后双击它

现在打开更新管理器就会发现有新的更新可用了

这个的原理是欺骗Windows Update,让它把你的电脑识别为Windows Embedded POSReady 2009

而Windows Embedded POSReady 2009的支持日期一直到2019年4月9日

当然这不是最好的解决办法,要想一直有免费升级的话,还是去用Linux吧

最起码你不用再担心系统是不是安全了

Github Page自定义404页面

404呦

想给博客自定义一个404页面,毕竟老用Github默认的也不太好

于是乎上网翻了一下,发现貌似没中文介绍

然后在Github Page官方帮助找到了

很简单

只需要在根目录新建一个404.html即可

当然有个前提,就是你必须要先绑定独立域名,不然会出错的

至于怎么绑定……还是百度吧,也很简单……

手机版搞定!

弄好了博客的手机版

我是图

如图,把浏览器缩放到手机大小就可以预览了