冲顶大会等答题类游戏快速答题程序 - 提供决策结果

silenceper 发表了文章 • 4 个评论 • 440 次浏览 • 2018-01-12 02:28 • 来自相关话题

参考之前跳一跳外挂的的思路,也整了这么一个东西: 查看全部

参考之前跳一跳外挂的的思路,也整了这么一个东西:
https://github.com/silenceper/qanswer


通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。


快速答题


《冲顶大会》,《百万英雄》等答题类游戏答题神器,顺利吃鸡!


通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。


题目


分析结果:


结果


结果说明:




  • 结果数:通过题目+答案的搜索形式在搜索引擎中的结果数量



  • 答案出现频率:通过搜索题目,答案在第一页结果中出现的频率


结果并不是100%的,只给出一个参考值,还需用户自己判断。理论上可支持多款APP,只需要修改config.yml中的题目和答案的截取位置即可。


具体安装使用可在github中查看:


https://github.com/silenceper/qanswer/

基于go+vue实现的golang每日新闻数据浏览与检索平台

mikemintang 发表了文章 • 6 个评论 • 1072 次浏览 • 2018-01-09 16:58 • 来自相关话题

介绍

gonews是基于go+vue实现的golang每日新闻浏览与检索平台

介绍


gonews是基于go+vue实现的golang每日新闻浏览与检索平台



项目截图


gonews


部署



  • 获取新闻数据


git clone https://github.com/gocn/news /data/news


  • 获取源码


go get -u github.com/mikemintang/gonews


  • 解析数据


nohup gonews -d /data/news > /data/log/gonews.log 2>&1 


  • 启动Api


nohup gonews -a api -p 8017 > /data/log/gonews.log 2>&1 &


  • 前端部署


cd $GOPATH/src/github.com/mikemintang/gonews/web
npm install
npm run build


  • Nginx配置


server {
listen 80;
server_name gonews.idoubi.cc;
index index.html index.htm index.php;
root /data/go/src/mikemintang/gonews/web;

location /api {
rewrite ^.+api/?(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8017;
}
}


  • Shell脚本


#!/bin/sh

cd /data/news
git pull origin master
nohup gonews -d /data/news/ > /data/log/gonews.log 2>&1


  • 定时任务


crontab -e
*/10 * * * * /bin/sh /data/shell/cache_news.sh

用到的技术


golang包



  • github.com/go-redis/redis

  • encoding/json

  • flag

  • net/http

  • net/url

  • strconv

  • sync

  • crypto/md5

  • fmt

  • io

  • io/ioutil

  • net/url

  • os

  • path/filepath

  • regexp

  • strconv

  • strings

  • time


npm包



  • vue

  • vuex

  • vue-router

  • axios

  • moment

  • mockjs


欢迎提交Pull Request

模仿Java Stream API 操作数组/切片

singlethread 回复了问题 • 4 人关注 • 6 个回复 • 454 次浏览 • 2018-01-08 14:00 • 来自相关话题

packetbeat必须要结合elasticsearch或者logstash来用吗?能单独使用吗

tkk 回复了问题 • 3 人关注 • 1 个回复 • 332 次浏览 • 2018-01-06 17:23 • 来自相关话题

分享一个收集 Nginx 日志的 Exporter

smallfish1 发表了文章 • 0 个评论 • 229 次浏览 • 2018-01-04 21:21 • 来自相关话题

目的: 滚动收集 Nginx 日志并生成 Prometheus 采样数据。

功能:

  1. 动态配置 Nginx 日志格式
  2. Metric 支持静态和动态的 LabelSet
  3. 支持同时收集... 查看全部

目的: 滚动收集 Nginx 日志并生成 Prometheus 采样数据。


功能:



  1. 动态配置 Nginx 日志格式

  2. Metric 支持静态和动态的 LabelSet

  3. 支持同时收集多个日志


它能做什么:



  1. 统计任意 API 请求数,以及请求错误数。

  2. 任意 API 请求时长 95 值。

  3. 任意 API 请求包的大小 95值。


地址: https://github.com/songjiayang/nginx-log-exporter


欢迎大家试用和 PR

写了个腾讯云短信的 Go SDK

qichengzx 发表了文章 • 2 个评论 • 308 次浏览 • 2018-01-04 09:55 • 来自相关话题

写了个腾讯云短信的 Go 版本 SDK,尽可能完整的覆盖了目前所有功能,其中几个需要回调处理的还没做。

前前后后改了3次,最终完成了当前的版本,也是为了将构造请求尽可能的简化和方便。

第一次尝试写 SDK ,学到了很多,还有一... 查看全部

写了个腾讯云短信的 Go 版本 SDK,尽可能完整的覆盖了目前所有功能,其中几个需要回调处理的还没做。


前前后后改了3次,最终完成了当前的版本,也是为了将构造请求尽可能的简化和方便。


第一次尝试写 SDK ,学到了很多,还有一些地方做的不够好,感觉代码组织地也太啰嗦。


希望大家提出宝贵意见和建议。


附上GitHub地址:https://github.com/qichengzx/qcloudsms_go

Golang实现的全自动玩微信跳一跳游戏

sundyli 回复了问题 • 3 人关注 • 2 个回复 • 1849 次浏览 • 2017-12-30 21:14 • 来自相关话题

一个比较完整的 Vim debug workflow

SpaceVim 发表了文章 • 0 个评论 • 313 次浏览 • 2017-12-14 22:40 • 来自相关话题

SpaceVim Layers: debug


原文: http://spacevim.org/layers/debug/


Description


This layer provide a debug workflow for SpaceVim. All of the function is based on vim-vebugger.


Install


To use this configuration layer, add call SpaceVim#layers#load('debug') to your custom configuration file.


Key bindings























































Key Binding Description
SPC d l launching debugger
SPC d c Continue the execution
SPC d b Toggle a breakpoint for the current line
SPC d B Clear all breakpoints
SPC d o step over
SPC d i step into functions
SPC d O step out of current function
SPC d e s Evaluate and print the selected text
SPC d e e Evaluate the <cword> under the cursor
SPC d e S Execute the selected text
SPC d k Terminates the debugger

Debug Transient State


key bindings is too long? use SPC d . to open the debug transient state:


Debug Transient State

我用golang重写了2300+star的开源node项目.

nilman 发表了文章 • 8 个评论 • 896 次浏览 • 2017-12-13 22:50 • 来自相关话题

我很早前用node写了这开源项目:p2pspider,因为网络流量非常巨大,再加上v8有内存限制,我不得不每隔6小... 查看全部

我很早前用node写了这开源项目:p2pspider,因为网络流量非常巨大,再加上v8有内存限制,我不得不每隔6小时重启,而且cpu占用非常之高,16核的cpu,都差不多占满了,内存也是占用极其高。


在后期维护过程中,因为javascript的原因,发现极其难以维护,让我产生了用静态语言重写的念头。在研究了一些各种主流编程语言,最后选择了golang。 选它主要看中三点:1,语法极其简单;2,goroutine;3,运行速度极其快。


花了十几天左右,就重写完成,一运行,在同样工作效率的情况下,golang版本的p2pspider的综合消耗,远远低于node版,只有node的10%,这很出乎我的意料,毕竟是第一次写golang程序,很可能写得很粗糙。


由于对golang不是很熟,中间踩了很多坑,在此不表了。总之,golang是个很赞的编程语言。

RobotGo v0.47.0 发布, Go 桌面自动化, 移除 libpng 等依赖

veni 回复了问题 • 2 人关注 • 2 个回复 • 562 次浏览 • 2017-12-13 20:29 • 来自相关话题

使用base64Captcha Package快速创建golang RESTful图形验证服务

jjjjerk 发表了文章 • 3 个评论 • 314 次浏览 • 2017-12-13 12:00 • 来自相关话题

为什么base64图片 for RESTful 服务

  Data URIs 支持大部分浏览器,IE8之后也支持.
  小图片使用base64响应对于RESTful服务来说更便捷

CSS ... 查看全部

为什么base64图片 for RESTful 服务


  Data URIs 支持大部分浏览器,IE8之后也支持.
小图片使用base64响应对于RESTful服务来说更便捷

CSS Image 嵌入base64图片


div.image {
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...);
}

HTML 嵌入base64图片img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..."


godoc文档


在线Demo Playground Powered by Vuejs+elementUI+Axios


Playground


快速开始


安装golang包


go get -u github.com/mojocn/base64Captcha

使用golang搭建API服务


package main

import (
"encoding/json"
"fmt"
"github.com/mojocn/base64Captcha"
"log"
"net/http"
"strconv"
)

// base64Captcha verify http handler
// golang 比较图像验证码 返回json
func captchaVerifyHandle(w http.ResponseWriter, r *http.Request) {
//接收客户端发送来的请求参数
r.ParseForm()
formData := r.Form
captchaId := formData.Get("captchaId")
captchaDigits := formData.Get("captchaDigits")

//比较图像验证码
verifyResult := base64Captcha.VerifyCaptcha(captchaId, captchaDigits)

//设置json响应
w.Header().Set("Content-Type", "application/json; charset=utf-8")
body := map[string]interface{}{"code": "error", "data": "验证失败", "msg": "captcha failed", "debug": formData}
if verifyResult {
body = map[string]interface{}{"code": "success", "data": "验证通过", "msg": "captcha verified", "debug": formData}
}
json.NewEncoder(w).Encode(body)
}

// base64Captcha create http handler
// 接收idKey字符串 返回base64 Data URIs 图像验证码json
func generateCaptchaHandler(w http.ResponseWriter, r *http.Request) {
//接收客户端发送来的请求参数

r.ParseForm()
formData := r.Form
//图像验证码的idKey 客户端返回.如果使用到传统web服务,idKey服务器生成设置cookie里面
captchaId := formData.Get("captchaId")
//下面的参数都是图像验证码的外观参数,可以不设置条用base64Captcha.GenerateCaptchaPngBase64StringDefault(captchaId)也可以
DotCount, _ := strconv.Atoi(formData.Get("DotCount"))
MaxSkew, _ := strconv.ParseFloat(formData.Get("MaxSkew"), 64)
PngWidth, _ := strconv.Atoi(formData.Get("PngWidth"))
PngHeight, _ := strconv.Atoi(formData.Get("PngHeight"))
DefaultLen, _ := strconv.Atoi(formData.Get("DefaultLen"))

//利用base64Captcha,创建base64图像验证码
base64Png := base64Captcha.GenerateCaptchaPngBase64String(captchaId, PngWidth, PngHeight, DotCount, DefaultLen, MaxSkew)
//你也可以是用默认参数 生成图像验证码
//base64Png := captcha.GenerateCaptchaPngBase64StringDefault(captchaId)

//设置json响应

w.Header().Set("Content-Type", "application/json; charset=utf-8")
body := map[string]interface{}{"code": 1, "data": base64Png, "msg": "success", "debug": formData}
json.NewEncoder(w).Encode(body)
}

//启动golang net/http 服务器
func main() {
//serve Vuejs+ElementUI+Axios Web Application
http.Handle("/", http.FileServer(http.Dir("./static")))
//api for create captcha
http.HandleFunc("/api/getCaptcha", generateCaptchaHandler)
//api for verify captcha
http.HandleFunc("/api/verifyCaptcha", captchaVerifyHandle)

fmt.Println("Server is at localhost:777")
if err := http.ListenAndServe(":777", nil); err != nil {
log.Fatal(err)
}
}

base64Captcha package 主要方法



  • 自定参数返回验证码base64png 返回base64 Data URIs
    func GenerateCaptchaPngBase64String(identifier string, pngWidth, pngHeight, DotCount, digitsLen int, maxSkew float64) string


  • 使用默认配置 返回base64 Data URIs,默认参数 width=240 height=70 dot-count=20 digits-len=6 skew-factor=0.7
    func GenerateCaptchaPngBase64StringDefault(identifier string) string



  • 比较返回的数字图像验证码的正确性
    func VerifyCaptcha(identifier, digits string) bool

  • 参数随机的idKey
    func RandomId() string


  • 更详细文档请查看godoc


    运行demo代码


    cd $GOPATH/src/github.com/mojocn/captcha/examples
    go run main.go


    访问 http://localhost:777


    golang-demo nginx 反向代理配置 captcha.mojotv.cn.config


    server {
    listen 80;
    server_name captcha.mojotv.cn;
    charset utf-8;

    location / {
    try_files /_not_exists_ @backend;
    }
    location @backend {
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:777;
    }
    access_log /home/wwwlogs/captcha.mojotv.cn.log;
    }



如果觉得这教程有用请访问GitHub 提Issue Star Fork

go超级时间轮timewheel(一路向前)github.com/anjieych/timewheel

Anjie 发表了文章 • 0 个评论 • 372 次浏览 • 2017-12-12 20:03 • 来自相关话题

go超级时间轮timewheel(一路向前)github.com/anjieych/timewheel

有传统时间轮的影子,但又超出传统时间轮:

  1. 非“盘/环”形结构: 一路向前,永... 查看全部

go超级时间轮timewheel(一路向前)github.com/anjieych/timewheel


有传统时间轮的影子,但又超出传统时间轮:



  1. 非“盘/环”形结构:
    一路向前,永不回头,每tick一次,移除一个slot;每个slot中的entity 触发OnExpired来处理到期(或过期)事件;

  2. 超级时间轮:
    他是一个轮或者轮的集合,因为他可以同时处理不同实现了Entity的业务,每个业务有各自OnExpired定义,只要可以遵循相同的时间刻度Interval就可以放入同一个轮来统一计时触发。
    最后,优点或缺点可以作者交流。


[========]


package main

import (
"fmt"
"github.com/anjieych/timewheel"
"time"
)

func main() {
tw := timewheel.NewTimewheel("tw-example", time.Second)
tw.Start()
tick := time.NewTicker(3 * time.Second)
for {
d := &Data{
eid: time.Now().UnixNano(),
data: <-tick.C,
}
d.SetSlotId(tw.Add(d, 5*time.Second))
}
}
// Data must implements timewheel.Entity
type Data struct {
eid int64
slotId int
data interface{}
}

func (d *Data) SetEId(eId int64) {
d.eid = eId
}
func (d *Data) GetEId() (eId int64) {
return d.eid
}
func (d *Data) SetSlotId(slotId int) {
d.slotId = slotId
}
func (d *Data) GetSlotId() (slotId int) {
return d.slotId
}
func (d *Data) OnExpired() {
fmt.Printf("%s\t OnExpired :{slotId: %d\t,eid: %d\t,data: %s}\n", time.Now(), d.GetSlotId(), d.GetEId(), d.data)
}

LiteIDE X33.1 发布,Go 语言开发工具

visualfc 发表了文章 • 3 个评论 • 354 次浏览 • 2017-12-12 08:44 • 来自相关话题

Go 语言开发工具 LiteIDE X33.1 正式发布。 新版本对菜单进行调整和规范,新增了工具菜单,编辑菜单保持可见,重命名了部分工具窗口。 修复了编辑器内查找功能的全文替换错误, 对快速打开文件操作 ( ctrl+p / command+p ) 改... 查看全部

Go 语言开发工具 LiteIDE X33.1 正式发布。 新版本对菜单进行调整和规范,新增了工具菜单,编辑菜单保持可见,重命名了部分工具窗口。 修复了编辑器内查找功能的全文替换错误, 对快速打开文件操作 ( ctrl+p / command+p ) 改用线程方式重新实现,新增了快速打开命令功能 ( ctrl+shift+p / command+shift+p ),集成了 gomodifytags 并提供GUI界面实现对结构体 Tags 的快速增删功能。


LiteIDE X33.1 使用 go1.10beta1 编译, 支持 Go1.9 / Go1.10beta1 或者更低的 Go 版本。


Links





2017.12.12 Ver X33.1



  • LiteEditor

    • support quick open command

    • support gomodifytags

    • fix libpng warning on qt5 build


  • LiteApp

    • add tools menu for quick open actions

    • standard and rename tool window title

    • enable edit menu anytime, fix edit menu disable on editor lost focus.

    • fix editor load large file bad_alloc recover


  • LiteEnv

    • add select env to tools menu


  • LiteEditor

    • check and not open large file

    • fix edit hide edit sub menu 'setup' on macos


  • LiteFind

    • fix find editor replace all wrap around* GolangEdit

    • Integrated gomodifytags and gui tools support gomodifytags all options


  • QuickOpen

    • add quick open command action (ctrl+shift+p/command+shift+p)

    • quickopenfiles use thread for fast and cancel

    • fix quickopenfile cancel loading for esc or liteapp quit


fx 已经支持 Go, Node, Python, Ruby, Java, PHP, Julia 这些语言了

回复

metrue 发起了问题 • 1 人关注 • 0 个回复 • 510 次浏览 • 2017-12-08 12:33 • 来自相关话题

(开源)基于vue, react, node.js, go开发的微商城(含微信小程序)

zhaoyun4122 回复了问题 • 8 人关注 • 5 个回复 • 2417 次浏览 • 2017-12-07 09:22 • 来自相关话题