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

回复

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

【七牛云】Android OpenGL 开发工程师(上海)

回复

招聘应聘七小牛来招聘 发起了问题 • 1 人关注 • 0 个回复 • 927 次浏览 • 2017-03-21 22:19 • 来自相关话题

【七牛云】Android OpenGL 开发工程师(上海)

招聘应聘七小牛来招聘 发表了文章 • 0 个评论 • 451 次浏览 • 2017-03-21 22:16 • 来自相关话题

岗位职责

  1. 参与 Android 图像处理算法的研究和开发

任职要求

  1. 良好的数据结构和算法以及数学基础, 良好的工程素养以及关于 Paper, IETF RFC 与 O... 查看全部

岗位职责



  1. 参与 Android 图像处理算法的研究和开发


任职要求



  1. 良好的数据结构和算法以及数学基础, 良好的工程素养以及关于 Paper, IETF RFC 与 Open Source 的基本阅读与理解能力

  2. 精通 C/C++/Java 编程语言, 熟悉 JNI 机制, 熟悉 NDK 编程, 熟悉汇编

  3. 熟练掌握 OpenGL ES 绘制方法, 深入理解 OpenGL ES 渲染优化策略, 了解 shader 技术

  4. 精通 OpenGL 开发并熟悉 Android GUI 渲染显示机制, 具备在 Android 系统上做过显示系统移植经验优先

  5. 熟练掌握多线程编程, 善于利用各种资源优化代码

  6. 热爱图形图像技术研发工作, 喜欢创新挑战, 自我驱动能力强, 具备良好的沟通能力和团队协作精神





  • 薪资:13k-26k

  • 工作地点:上海上海浦东新区亮秀路112号Y1座310室

  • 投递邮箱:xiamengru@qiniu.com

Beego框架多点登陆只留最后一个,Session有关问题

回复

有问必答jsharkc 发起了问题 • 1 人关注 • 0 个回复 • 1016 次浏览 • 2017-03-20 21:04 • 来自相关话题

orm初探

文章分享elvin5 发表了文章 • 0 个评论 • 443 次浏览 • 2017-03-20 11:52 • 来自相关话题

只是研究一下orm是怎么事情而已矣

package main

import (
    "database/sql"
    "fmt"
    "log"
   ... 			查看全部
					

只是研究一下orm是怎么事情而已矣


package main

import (
"database/sql"
"fmt"
"log"
"reflect"
"strconv"

_ "github.com/go-sql-driver/mysql"
)

var db *sql.DB

func init() {
log.SetFlags(log.Lshortfile)
var err error
db, err = sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/test?charset=utf8mb4")
if nil != err {
log.Fatal(err)
}

db.SetMaxOpenConns(150)
db.SetMaxIdleConns(100)
err = db.Ping()
if nil != err {
log.Fatal(err)
}
}

func main() {
res, err := Query()
if nil != err {
log.Println(err)
return
}
var t T2
err = GetOne(res[0], &t)
if nil != err {
log.Println(err)
return
}
log.Printf("%+v",t)
}

type T2 struct {
Id int `json:"id" db:"id"`
Name string `json:"name" db:"name"`
Ct string `json:"ct" db:"ct"`
UpdatedAt string `json:"updated_at" db:"updated_at"`
Bt byte `json:"bt" db:"bt"`
}

func Query() ([]map[string]string, error) {
rows, err := db.Query("SELECT * FROM t2")
if nil != err {
log.Println(err)
return nil, err
}

columns, _ := rows.Columns()
scanArgs := make([]interface{}, len(columns))
values := make([]interface{}, len(columns))
for j := range values {
scanArgs[j] = &values[j]
}

record := make([]map[string]string, 0)
for rows.Next() {
//将行数据保存到record字典
err = rows.Scan(scanArgs...)
m := map[string]string{}
for i, col := range values {
if col != nil {
m[columns[i]] = string(col.([]byte))
}
}

record = append(record, m)
}

fmt.Printf("%+v\n", record)

return record, nil
}

func GetOne(m map[string]string, v interface{}) error {
tp := reflect.TypeOf(v)
val := reflect.ValueOf(v)

length := tp.Elem().NumField()
for i := 0; i < length; i++ {
dbTag := tp.Elem().Field(i).Tag.Get("db")
if "" == dbTag || "-" == dbTag {
continue
}

val2, ok := m[dbTag]
if !ok {
continue
}

switch tp.Elem().Field(i).Type.Kind() {
case reflect.String:
val.Elem().Field(i).SetString(val2)
case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16:
val3, err := strconv.ParseInt(val2, 10, 64)
if nil != err {
log.Println(err)
continue
}
val.Elem().Field(i).SetInt(val3)
case reflect.Float32, reflect.Float64:
case reflect.Bool:
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
default:
}
}

return nil
}

Go之旅-Switch

文章分享frankphper 发表了文章 • 0 个评论 • 510 次浏览 • 2017-03-15 22:51 • 来自相关话题

Go之旅-Switch

switch支持初始化语句,注意要用分号结束。后跟条件表达式,如果省略条件表达式,默认为true。不需要显示执行break语句,case执行完毕后自动终端。多个匹配条件,其中一个条件符合即可。case执行中断后,... 查看全部

Go之旅-Switch


switch支持初始化语句,注意要用分号结束。后跟条件表达式,如果省略条件表达式,默认为true。不需要显示执行break语句,case执行完毕后自动终端。多个匹配条件,其中一个条件符合即可。case执行中断后,如果需要继续执行下一个case块的内容,在下一个case块结尾执行fallthrough并且可以在fallthrough前使用break语句阻止。但不继续继续后续case块。


package main

import (
"fmt"
)

func main() {
// 简单声明几个变量
a, b, c, d := 1, 2, 3, 4
switch x := 2; x { // switch支持初始化语句,注意要用分号结束。后跟条件表达式,如果省略条件表达式,默认为true。
case a:
fmt.Println("a")
// break // 不需要显示执行break语句,case执行完毕后自动终端。
case a, b: // 多个匹配条件,其中一个条件符合即可。
fmt.Println("b")
fallthrough // case执行中断后,如果需要继续执行下一个case块的内容,在下一个case块结尾执行fallthrough并且可以在fallthrough前使用break语句阻止。但不继续继续后续case块。
case c:
fmt.Println("c")
case d:
fmt.Println("d")
case 5:
fmt.Println("e")
//case 5, 6: // 支持常量,但不能出现重复常量
// fmt.Println("f")
default:
fmt.Println("x") // 只有全部匹配失败后,才会执行default块。
}
}

redis pool 设置多少合适

回复

有问必答kakashi 发起了问题 • 3 人关注 • 0 个回复 • 1240 次浏览 • 2017-03-14 15:19 • 来自相关话题

【北京 - 三里屯】招聘服务器端资深工程师,目前主PHP副Golang

招聘应聘suilongfei 发表了文章 • 0 个评论 • 661 次浏览 • 2017-03-09 20:25 • 来自相关话题

岗位职责:

1、独立完成功能的设计和开发工作;

2、对APP API系统逐步进行优化和改造;

3、与产品部门进行沟通并完善产品;

4、根据需求进行后台功能的设计和开发;

5、对API项... 查看全部

岗位职责:


1、独立完成功能的设计和开发工作;


2、对APP API系统逐步进行优化和改造;


3、与产品部门进行沟通并完善产品;


4、根据需求进行后台功能的设计和开发;


5、对API项目的整体规划给出自己的意见和建议。


6、参与公司基础服务功能开发


任职要求:


1、计算机、通讯类、数学等相关专业,有5年及以上PHP开发经验;


2、熟练掌握MySQL数据库;


3、熟悉Redis、memcache,Mongodb等数据库;


4、熟悉Linux以及常规Shell操作;


5、有高并发和大数据量处理经验;


6、熟悉golang,有一年以上开发经验以上,加分;


7、有Docker环境工作经验的,加分;


8、善于与他人沟通、合作,具有团队精神,及分析和解决问题的能力,良好的自学能力;


9、能够独立担任开发工作的设计、开发和上线。


薪资范围:20 - 35K/月 + 各种补助 + 月度奖金 + 年终奖等等


有意向者可发送简历至:suilongfei#ifensi.com


公司为明星娱乐方向的互联网公司,工作环境良好,技术团队氛围积极向上

关于scan

回复

有问必答lifesohard 发起了问题 • 1 人关注 • 0 个回复 • 657 次浏览 • 2017-03-08 16:45 • 来自相关话题

beego orm 支持存储过程的调用么?

回复

有问必答andy 发起了问题 • 1 人关注 • 0 个回复 • 1029 次浏览 • 2017-03-05 20:15 • 来自相关话题

用docker-machine创建Docker Swarm集群

文章分享myml 发表了文章 • 0 个评论 • 554 次浏览 • 2017-03-02 17:57 • 来自相关话题

参考文档 Install and Create a Docker Swarm


安装


要先安装virtualboxDocker Machine,Docker Machine 是一个简化Docker安装的命令行工具,在非linux系统用docker的同学应该用过。


加速


dockerHub访问比较慢,docker-machine执行create时加上--engine-registry-mirror参数来进行加速,例如docker-machine create -d virtualbox --engine-registry-mirror=https://3cd767jz.mirror.aliyuncs.com local


获取Token


已有docker环境
执行docker run swarm create来从dockerHub获取一个全球唯一的token


没有docker环境
执行docker-machine create -d virtualbox local创建一个docker环境


执行eval $(docker-machine env local) 进入刚创建的local,


再执行docker run swarm create获取token,
很简单吧。machine还有其它一些实用功能,可以自行查看文档


创建master


执行docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://$token swarm-master
$token请替换成上一步骤拿到的token


创建节点


创建节点和创建master类似,只是把--swarm-master参数去掉,名字改下。


执行docker-machine create -d virtualbox --swarm --swarm-discovery token://$token swarm-node-0


再创建一个docker-machine create -d virtualbox --swarm --swarm-discovery token://$token swarm-node-1
执行docker-machine ls可以看到


swarm-master   * (swarm)   virtualbox   Running   tcp://192.168.99.100:2376   swarm-master (master)   v17.03.0-ce   
swarm-node-0 - virtualbox Running tcp://192.168.99.101:2376 swarm-master v17.03.0-ce
swarm-node-0 - virtualbox Running tcp://192.168.99.102:2376 swarm-master v17.03.0-ce

执行eval $(docker-machine env --swarm swarm-master) !注意这里加上了--swarm参数,进入master,执行docker info可以看到集群信息

一个诡异的问题

回复

有问必答songtianyi 发起了问题 • 1 人关注 • 0 个回复 • 769 次浏览 • 2017-03-01 16:01 • 来自相关话题

72行实现个简单的MapReduce

回复

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

beego xsrf cookie数据必须设置有效期吗?

回复

有问必答onn 发起了问题 • 1 人关注 • 0 个回复 • 1222 次浏览 • 2017-02-28 11:14 • 来自相关话题

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

开源程序imlifengfeng 发表了文章 • 0 个评论 • 512 次浏览 • 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 .