热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编译BatteryHistorian源码踩坑记录.

难顶啊,为什么做个事情就不能顺顺利利的完成呢?总有一些幺蛾子.可能有小伙伴就好奇了,明明我Docker已经整好了,为什么还弄自行编译的活呢?话接上篇.0.前言-Docker容器报

难顶啊,为什么做个事情就不能顺顺利利的完成呢?
总有一些幺蛾子.


可能有小伙伴就好奇了,
明明我Docker已经整好了,为什么还弄自行编译的活呢?
话接上篇.


0.前言-Docker容器报错.




1. 配置环境&下载源码.

官方教程
需要的准备工作;


  • JAVA,配置好环境变量.
  • Python 2.7,配置好环境变量.注意一定要是2.7
  • Go,配置好环境变量(GOROOT,GOPATH).

OK,准备好了以后,安装官方教程.


Next, download the Battery Historian code and its dependencies:
$ go get -d -u github.com/google/battery-historian/…


下载失败
还是太年轻,我特么就知道事情不可能这么顺利.

搜索引擎,关键字走起.
于是我找到了这个:
https://github.com/golang/lint/issues/288

Go下载包失败
很相似对不对,只不过别人是下载golint,我是下载battery-historian.
然后我看到了这个:
解决办法
在GOPATH路径下面创建 /src/golang.org/x 路径,然后直接使用git clone下载.
那么我可用直接魔改一下 官方的这个下载 battery-historian的命令,改成
git clone https://github.com/google/battery-historian
修改命令下载
我特么不禁要为我自己的机智点个赞.点赞




2.运行battery-historian

运行失败
参考这个解决办法:
找不到protobuf
科学上网,
尝试过clone github官方的源码,但是发现会卡住.
使用这篇博客内的国内托管的地址,很顺利下载完.
在GOROOT的路径内创建文件夹,放进去,
再次运行go run setup.go
安装setup.go内的代码,下载3个依赖.
继续报错
下载的closure-library 报错…
直接手动clone吧.
closure-library地址




3.运行battery-historian

go run cmd/battery-historian/battery-historian.go

很顺利的运行起来了,默认端口是 9999.
打开浏览器输入localhost:9999
看到熟悉的页面,
选择文件bugreport.zip
emmm…还是选择文件不了,没有submit按钮.
报错信息
全局搜索 historian-optimized.js 没有.
打开battery-historian的主目录,打开 setup.go
historian-optimized.js
发现这个文件是output出来的,地址是在 battery-historian\compiled内,
打开historian-optimized.js搜索报错的关键字,
发现代码是:

d3.scaleOrdinal().domain([0,1,2,3,4])

而不是

d3.scale.ordinal().domain([0,1,2,3,4])

找了下d3这个库,然后找到V3和V4版本的差异.
D3 V3 与V4的变化
d3
果然就是d3的问题, 也就是


setup.go生成的historian-optimized.js是v4版本的,但是执行打开端口运行的battery-historian.go的是v3版本.2个版本不一致导致.

但是怎么解决这个问题呢?
直到我找到这个pull记录.
pull记录
pull记录
很好奇的是不知道为什么我最新clone下来的设置的还是V4.
按照这个pull的改动,找到这个base.html
将里面的4.9.1 -> 3.5.17
重新运行setup.go生成historian-optimized.js文件,再重新运行battery-historian.go

上传图片,终于有submit按钮了.


这真有你的啊,Google!


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
author-avatar
亦惜缘2
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有