GO解析PHP通过PHPCGI进行渲染

alalmn 发表了文章 • 0 个评论 • 183 次浏览 • 2017-06-10 15:06 • 来自相关话题

GO解析PHP通过PHPCGI 因为手上有别的事情这个项目就放这了 有兴趣的小伙伴大家子看吧 我QQ:29295842 GIT地址:查看全部

GO解析PHP通过PHPCGI
因为手上有别的事情这个项目就放这了
有兴趣的小伙伴大家子看吧
我QQ:29295842
GIT地址:https://github.com/webxscan/gophp/tree/master/gophp
GIT地址:https://github.com/webxscan/gophp/tree/master/gophp
GIT地址:https://github.com/webxscan/gophp/tree/master/gophp


golangPHPcgi GOphp--GO解析PHP源码并实现一个miniPHP服务起器


by


golang php cgi github:https://github.com/webxscan/gophp
BLOG: http://blog.csdn.net/webxscan/
BY:斗转星移 QQ:29295842


软件目的


实现一个本地PHP解析器,不用使用阿帕奇或者IIS。
这样就可以实现很多自定义扩展。
软件目前写了4天,还有很多不完美的地方还希望大家予以纠正。

RobotGo v0.44.0 发布,Go 桌面自动化

回复

veni 发起了问题 • 1 人关注 • 0 个回复 • 325 次浏览 • 2017-05-29 00:03 • 来自相关话题

Golang开源项目-GoScience,可以下载Scihub学术论文的代理服务器

wwdyy 发表了文章 • 0 个评论 • 208 次浏览 • 2017-05-28 19:50 • 来自相关话题

Github地址:https://github.com/GreatDanton/GoScience




  Sci-Hub 由 22 岁的哈萨克斯坦女孩 Alexandra Elbakyan 创建,为打破阻碍学术交流的「付费墙」,她结合自己的计算机技术,同时联合一些盗版网站建立了 Sci-Hub。Elbakyan 通过科研工作者自愿提供的帐号,从各大学的图书馆盗取了近 5000 万份资源,并将这些资源免费分享。


  Sci-Hub 的使用者中,有部分是本身拥有免费获取论文渠道的用户,但他们依旧会习惯性地使用 Sci-Hub,这其中重要原因在于其便利。


  打开 Sci-Hub 网站,用户只需输入文章的 DOI 或标题,就有可能找到全文。而且收录的文章绝大部分是曾被发表过的学术文章,而且数据库体量还在不断扩大:当有人搜索一篇还没有录入的文章时,Sci-Hub 就会盗版一份,并将其加入自己的文献库中。




  GoScience是Go中写的代理服务器,用于从Scihub下载学术论文,特别适用于您的机构/工作场所阻止了Scihub的访问,但您仍然需要访问科学文章。

分享一个小工具 Boast:如何从服务端跟踪所有 HTTP 请求,并方便回放?

dcb9 发表了文章 • 0 个评论 • 363 次浏览 • 2017-03-31 16:17 • 来自相关话题

原文链接:http://blog.phpor.me/note/2017/03/31/track-and-replay-http-request.html
客户端工程师:“xxx 接口坏了,我的程序都没动过”,后端经常会收到这样的质问,但是我们现在如何重现这个问题?有以下几种情况:


一、后端测试了一下发现没有问题


“我这里测试了是好的啊”,就只能让客户端工程师再操作一遍,亲眼看到错误之后就肯定是有问题了,就得去找问题,这时候这台手机,以及这台手机里面的数据都非常重要,因为这些数据可以让 Bug 重现。


二、测试了也有问题


这时候后端就去修改程序了,但是每一次的测试是否有问题都需要在客户端中操作,有时候的操作非常的复杂,在这上面花的时间会比较多。最后使了各种神通才终于找到问题,原来是这个用户的某某数据有异常才会出现这种情况。


以上这种情况屡见不鲜,最麻烦的点就在于,每次都要以出现 Bug 的相同参数去请求,有时候你知道这些请求的参数,可以把它们放到 Postman 这种工具里面,但大部分时候你并不知道它对应的参数 (token)


如果我们可以在服务端跟踪所有的请求:接口地址,Header,Body,后端返回的 Header、Body,这样我们就能查到对应的请求参数和返回值,可以直接填到 Postman 里面,要是还能一键重新请求就好了,因为我们不想修改请求的参数,只是想再以相同的参数请求一遍,这样我们来调试对应的程序。


正好以前用过 ngrok,发现它有一个非常好的 debug 界面,可以达到以上的要求,但现在不需要它的内网穿透功能,于是只能自己写一个程序,只包含以下功能:



  • 记录接口所有的 Request 和 Response

  • 可以一键重新请求某个 Request


基本工作原理


HTTP 客户端                   Boast                       Web 服务器
| GET http://localhost:8080/ | 记录请求并进行反向代理 | Response 200 OK
| ---------------------------> | --------------------------> | ------┐
| | | |
| | 记录返回信息并转发给客户端 | <----┘
| <--------------------------- | <-------------------------- |

┌----------------------------------------------------------------------------┐
| url: http://localhost:8081 |
| ---------------------------------------------------------------------------|
| All Transactions ┌ - - - - - - - - - - - - - - - - - - - - - - - ┐ |
| ---------------------- | time: 10 hours ago Client: 127.0.0.1 | |
| |GET / 200 OK 100 ms | | | |
| ---------------------- | Request [ Replay ] | |
| | - - - - - - - - - - - - | |
| | GET http://localhost/ HTTP/1.1 | |
| | User-Agent: curl/7.51.0 | |
| | Accept: */* | |
| | | |
| | Response | |
| | - - - - - - - - - - - - | |
| | HTTP/1.1 200 OK | |
| | X-Server: HTTPLab | |
| | Date: Thu, 02 Mar 2017 02:25:27 GMT | |
| | Content-Length: 13 | |
| | Content-Type: text/plain; charset=utf-8 | |
| | | |
| | Hello, World | |
| └ - - - - - - - - - - - - - - - - - - - - - - - ┘ |
| |
└----------------------------------------------------------------------------┘

最近正在学习 Go,正好拿它来完成这个小程序,取名为 Boast 为了让我们在重现 Bug 上更为主动和方便,以及更快地修复,好多花点时间来造轮子!


Boast 项目地址


Go 和前端都是现学现卖,欢迎大家拍砖。

beego1.8的文档还没更新么?

回复

kaixinmao 发起了问题 • 1 人关注 • 0 个回复 • 488 次浏览 • 2017-03-23 10:31 • 来自相关话题

72行实现个简单的MapReduce

回复

myml 发起了问题 • 2 人关注 • 0 个回复 • 498 次浏览 • 2017-02-28 15:30 • 来自相关话题

FFToast:GitHub中最强大的iOS Notification和AlertView框架,没有之一!

imlifengfeng 发表了文章 • 0 个评论 • 294 次浏览 • 2017-02-27 00:03 • 来自相关话题


GitHub地址:https://github.com/imlifengfeng/FFToast


中文使用说明


FFToast是一个非常强大的iOS message notifications和AlertView扩展。它可以很容易实现从屏幕顶部、屏幕底部和屏幕中间弹出一个通知。你可以很容易的自定义弹出的View.


要求



  • 支持iOS 8或更高版本

  • 支持ARC


特点



  • 简单易用

  • 可以很容易自定义


安装


CocoaPods


要使用CocoaPods安装FFToast,请将其集成到您现有的Podfile中,或创建一个新的Podfile:


target 'MyApp' do
pod 'FFToast'
end

然后 pod install.


手动


将FFToast文件夹添加到项目中


使用方法


#import <FFToast/FFToast.h>

你可以通过调用下面的方法创建一个显示在顶部的默认效果的消息通知:


/**
创建并显示一个Toast

@param title 标题
@param message 消息内容
@param iconImage 消息icon,toastType不为FFToastTypeDefault时iconImage为空仍然会有相应icon
@param duration 显示时长
*/
+ (void)showToastWithTitle:(NSString *)title message:(NSString *)message iconImage:(UIImage*)iconImage duration:(NSTimeInterval)duration toastType:(FFToastType)toastType;

其中的toastType:


typedef NS_ENUM(NSInteger, FFToastType) {

//灰色背景、无图标
FFToastTypeDefault = 0,
//绿色背景+成功图标
FFToastTypeSuccess = 1,
//红色背景+错误图标
FFToastTypeError = 2,
//橙色背景+警告图标
FFToastTypeWarning = 3,
//灰蓝色背景+信息图标
FFToastTypeInfo = 4,

};

例如:


[FFToast showToastWithTitle:@"标题" message:@"消息内容......." iconImage:[UIImage imageNamed:@"test"] duration:3 toastType:FFToastTypeDefault];

标题(title)、消息内容(message)、图标(iconImage)均可以为nil,FFToast会根据具体的内容进行自适应。


如果想在状态栏下方、屏幕下方或者屏幕中间显示消息通知,可以通过设置一些属性实现。
设置显示位置:


typedef NS_ENUM(NSInteger, FFToastPosition) {

//显示在屏幕顶部
FFToastPositionDefault = 0,
//显示在状态栏下方
FFToastPositionBelowStatusBar = 1,
//显示在状态栏下方+圆角+左右边距
FFToastPositionBelowStatusBarWithFillet = 2,
//显示在屏幕底部
FFToastPositionBottom = 3,
//显示在屏幕底部+圆角
FFToastPositionBottomWithFillet = 4,
//显示在屏幕中间
FFToastPositionCentre = 5,
//显示在屏幕中间+圆角
FFToastPositionCentreWithFillet = 6

};

其他的一些属性:


//背景颜色
@property (strong, nonatomic) UIColor* toastBackgroundColor;
//Toast标题文字颜色
@property (strong, nonatomic) UIColor* titleTextColor;
//Toast内容文字颜色
@property (strong, nonatomic) UIColor* messageTextColor;

//Toast标题文字字体
@property (strong, nonatomic) UIFont* titleFont;
//Toast文字字体
@property (strong, nonatomic) UIFont* messageFont;

//Toast View圆角
@property(assign,nonatomic)CGFloat toastCornerRadius;
//Toast View透明度
@property(assign,nonatomic)CGFloat toastAlpha;

//Toast显示时长
@property(assign,nonatomic)NSTimeInterval duration;
//Toast消失动画是否启用
@property(assign,nonatomic)BOOL dismissToastAnimated;

//Toast显示位置
@property (assign, nonatomic) FFToastPosition toastPosition;
//Toast显示类型
@property (assign, nonatomic) FFToastType toastType;

//是否自动隐藏,autoDismiss、enableDismissBtn、dismissBtnImage三个属性仅对从屏幕中间弹出的Toast有效
@property(assign,nonatomic)BOOL autoDismiss;
//是否在右上角显示隐藏按钮
@property(assign,nonatomic)BOOL enableDismissBtn;
//隐藏按钮的图标
@property (strong, nonatomic) UIImage* dismissBtnImage;

设置完属性后,就可以调用下面方法将其显示出来:


/**
显示一个Toast
*/
- (void)show;

或者:


/**
显示一个Toast

@param handler Toast点击回调
*/
- (void)show:(handler)handler;

例如:


FFToast *toast = [[FFToast alloc]initToastWithTitle:@"标题" message:@"消息内容......." iconImage:[UIImage imageNamed:@"fftoast_info"]];
toast.toastPosition = FFToastPositionBelowStatusBarWithFillet;
toast.toastBackgroundColor = [UIColor colorWithRed:75.f/255.f green:107.f/255.f blue:122.f/255.f alpha:1.f];
[toast show:^{
//点击消息通知时调用
}];//[toast show];

如果你想自定义一个从中间弹出的Toast,可以调用下面的方法:


/**
在中间显示一个自定义Toast

@param customToastView 自定义的ToastView
@param autoDismiss 是否自动隐藏
@param duration 显示时长(autoDismiss = NO时该参数将无效)
@param enableDismissBtn 是否显示隐藏按钮
@param dismissBtnImage 隐藏按钮图片(enableDismissBtn = NO时该参数将无效)
@return Toast
*/
- (instancetype)initCentreToastWithView:(UIView *)customToastView autoDismiss:(BOOL)autoDismiss duration:(NSTimeInterval)duration enableDismissBtn:(BOOL)enableDismissBtn dismissBtnImage:(UIImage*)dismissBtnImage;

你在自定义从中间弹出的Toast时,你可以将上面的参数autoDismiss和参数enableDismissBtn设为NO。然后在你自定义的View中自己在合适的位置添加一个关闭按钮。
关闭从中间弹出的Toast,可以调用下面的方法:


/**
隐藏一个Toast
*/
- (void)dismissCentreToast;

顶部、底部弹出的Toast不可自定义View,但是对于iconImage、Title、message均可以根据需要设置并且可以为nil,最终Toast会根据具体的内容进行自适应。


隐藏消息通知:
默认3秒后自动消失,向上滑动弹出的消息通知它也会消失。


关于


作者:
imlifengfeng

微博:
@imlifengfeng


许可


该项目在 MIT 许可协议下使用. 有关详细信息,请参阅 LICENSE .

一些用golang开发的存储项目

回复

lei 发起了问题 • 1 人关注 • 0 个回复 • 519 次浏览 • 2017-02-21 11:57 • 来自相关话题

处理文件上传的工具包 - fuh

lyric 发表了文章 • 0 个评论 • 324 次浏览 • 2017-02-19 11:17 • 来自相关话题

处理文件上传的工具包 - fuh

在平时web开发过程中,总会遇到处理文件上传的场景,每次的处理方式都是以业务为导向进行处理。现在作者就把这一... 查看全部

处理文件上传的工具包 - fuh


在平时web开发过程中,总会遇到处理文件上传的场景,每次的处理方式都是以业务为导向进行处理。现在作者就把这一块单独抽离出来,做成了一个简单的工具包。主要特点是:



  • 支持自定义文件存储

  • 支持自定义文件名

  • 支持自定义文件大小限制


引入简单,方便,欢迎来拍砖!谢谢!


$ go get github.com/LyricTian/fuh

package main

import (
"encoding/json"
"net/http"

"github.com/LyricTian/fuh"
)

func main() {
http.HandleFunc("/fileupload", func(w http.ResponseWriter, r *http.Request) {
finfo, err := fuh.Upload(r, "file", nil, nil)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
json.NewEncoder(w).Encode(finfo)
})

http.ListenAndServe(":8080", nil)
}

gmcache一个用go写的分布式缓存,类似memcached

stirlingx 发表了文章 • 0 个评论 • 483 次浏览 • 2017-01-19 16:01 • 来自相关话题

主要是用来练手的,欢迎大家仍砖头

  • 使用ectd做服务发现
  • broker作为代理服务器,对client的请求做转发,用一致性hash算法对key映射到后端gmcache。

项目地... 查看全部

主要是用来练手的,欢迎大家仍砖头



  • 使用ectd做服务发现

  • broker作为代理服务器,对client的请求做转发,用一致性hash算法对key映射到后端gmcache。


项目地址:


https://github.com/liyue201/gmcache


Gmcache


A distributed key/value memory cache written in go.


Features



  • Light weight

  • Pure golang

  • Supports set,get and delete

  • Supports grpc and http protocols

  • Scalable architecture


Architecture


gmcache-cluster

beegoapix - beego api extension

luffyke 发表了文章 • 0 个评论 • 350 次浏览 • 2017-01-18 15:43 • 来自相关话题

简介

beegoapix是一个beego API开发框架,用于快速开发API服务。

安装

go get github.com/lu... 			查看全部
					

简介


beegoapix是一个beego API开发框架,用于快速开发API服务。


安装


go get github.com/luffyke/beegoapix

功能



  1. 统一API请求处理和返回(v0.1)

  2. 统一日志处理(v0.1)

  3. 异常控制(v0.1)

  4. API版本控制(v0.2)

  5. API权限控制(v0.2)

  6. 组合接口

  7. 接口缓存

  8. 自定义请求


示例


首先确保安装beego和bee工具。


新建Api项目


bee api hello

编辑router.go,添加api路由


package routers

import (
"hello/controllers"
"github.com/luffyke/beegoapix"
)

func init() {
beegoapix.Router()
// add your business path mapping
beegoapix.RegController("app", controllers.AppController{})
}

实现业务controller


package controllers

import (
"github.com/luffyke/beegoapix/api"

"github.com/astaxie/beego/logs"
)

type AppController struct {
}

func (this *AppController) CheckVersion(request api.ApiRequest) (response api.ApiResponse) {
logs.Debug(request.Id)
logs.Debug(request.Data["versionCode"])
response.Data = make(map[string]interface{})
response.Data["versionName"] = "version name 1.0"
return response
}

运行服务


bee run

测试请求


http://localhost:8080/v1/app/check-version

请求示例


{
"id":"12345678",
"sign":"abc",
"client":{
"caller":"app",
"os":"android",
"ver":"1.0",
"platform":"android",
"ch":"offical",
"ex":{
"imei":"1a2b3c"
}
},
"page":{
"page":1,
"size":10
},
"user":{
"uid":"123",
"sid":"abc"
},
"data":{
"versionCode":"v1.0.0"
}
}

返回

{
"state": {
"code": 0,
"msg": ""
},
"data": {
"versionName": "version name 1.0"
}
}

Android 示例


参考项目 beegoapix-android-demo

go-workerpool 支持每分钟百万并发的抽象原型

qianguozheng 发表了文章 • 0 个评论 • 345 次浏览 • 2017-01-14 23:15 • 来自相关话题

使用 Golang 实现了一个简单的消费者模式, 主要解决每分钟百万请求的问题。

基本原理:建立固定的工作线程去缓冲池中取数据处理。以此来控制固定时间内处理的请求数

源码地址

查看全部

使用 Golang 实现了一个简单的消费者模式, 主要解决每分钟百万请求的问题。


基本原理:建立固定的工作线程去缓冲池中取数据处理。以此来控制固定时间内处理的请求数


源码地址


https://github.com/qianguozheng/go-workerpool.git


用途



  1. 控制goroutine的数目

  2. 简练模型


实际使用场景及灵感来源


http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/

Gitea 发布 1.0.1版本

lunny 发表了文章 • 0 个评论 • 383 次浏览 • 2017-01-05 22:52 • 来自相关话题

很高兴的宣布我们今天发布了Bug修订版 Gitea v1.0.1。这个版本我们合并了 查看全部

很高兴的宣布我们今天发布了Bug修订版 Gitea v1.0.1。这个版本我们合并了 9 个提交请求。你可以从 下载页面 下载二进制文件,注意选择适合你的平台。更多详细安装信息请参见 安装向导.


变更日志



  • BUGFIXES

    • Fixed localized MIN_PASSWORD_LENGTH #501

    • Fixed 500 error on organization delete #507

    • Ignore empty wiki repo on migrate #544

    • Proper check access for forking #563

    • Fix SSH domain on installer #506

    • Fix missing data rows on admin UI #580

    • Do not delete tags with releases by default #579

    • Fix missing session config data on admin UI #578

    • Properly show the version within footer on the UI #593


数人云Mesos调度器Swan v0.2最新功能演示

数人云 发表了文章 • 0 个评论 • 289 次浏览 • 2016-12-29 11:00 • 来自相关话题

数人云Mesos调度器Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。小数带来了Swan v0.2的新版本,添加了很多新功能,工程师为了... 查看全部

数人云Mesos调度器Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。小数带来了Swan v0.2的新版本,添加了很多新功能,工程师为了大家更好地了解Swan的新功能,为大家提供了录屏,欢迎收看!


腾讯地址:
https://v.qq.com/x/page/p0358dzspz5.html


Fork me on GitHub!
https://github.com/Dataman-Cloud/swan


关于数人云Mesos调度器Swan


Swan是基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。

【goxel】Go 版的 axel 小工具

山羊wayne 发表了文章 • 0 个评论 • 372 次浏览 • 2016-12-20 14:21 • 来自相关话题

之前练手写的一个小工具 goxel,类似于 axel,如果你感觉对你有用或者还不错,不要吝啬你的 Star 哈,当然有任何问题或者改进也请告诉我... 查看全部

之前练手写的一个小工具 goxel,类似于 axel,如果你感觉对你有用或者还不错,不要吝啬你的 Star 哈,当然有任何问题或者改进也请告诉我。


goxel




Description


goxel like axel tool

Installation


$ go get github.com/WayneZhouChina/goxel

Usage


goxel [options...] <url>

Options:
-n Numbers of blocks to run(must).
-H Add header string.
-v More status information.
-o Specify local output file(must).
-h Help information.
-V Version information.
-cpus Number of used cpu cores(Default is current machine cores).

Example:


goxel -n 10 -o outfile http://xxx.com