在.ssh/文件夹下添加一个config文件,内容如下:
- macos/ubuntu
1 | Host bitbucket.org |
- centos7
1 | Host bitbucket.org |
- windows
1 | Host bitbucket.org |
其中需要修改1080
端口为自己的代理端口
在.ssh/文件夹下添加一个config文件,内容如下:
1 | Host bitbucket.org |
1 | Host bitbucket.org |
1 | Host bitbucket.org |
其中需要修改1080
端口为自己的代理端口
产品上线,有法国的玩家反馈,卡死在loading界面,还发了视频。第一反应是,这应该是个例,没有理睬。
一周后,发现留存有问题。分析数据后发现,法国地区的用户,留存几乎为0。所以,这里一定有问题。
采用法国地区的账号下载,没有问题。
把游戏中的语言切换成法语,没有问题。
把设备中的语言修改为法语,没有问题.
把设备中的地区修改为法国,问题复现
了。
最后发现在在解析地图的时候,被catch了。提示
1 | 未知的char :. |
刚刚开始以为出现了空格,逐步打印日志,并没有发现多余的空格。其实这里的提示是指,无法解析
.
。
这就无法解释了,地图中采用了浮点数,里面存在大量的.
,为什么会不支持.
的解析呢
查阅资料后,发现这里的float.Parse
具有文化环境。法国地区的表达小数是用,
,而不是.
。举例
1 | 数字: 12.34 |
所以法国地图的解析无法识别.
在项目启动的时候,处理Culture
1 | CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); |
一款产品要上线,先准备苹果审核,但是过程很痛苦
第一次在A账号一次顺利通过审核
因为需要推荐,所以需要转到B账号下,但是规定只有release过的产品才能转账号,所以只能在A账号下删除,B账号再上架
奇迹出现了
第二天,苹果给了一个回复。找不到
STORE
,状态是元素缺失
我们给他们回复,告知他们商店的位置,并截图给他们看
隔了一天,被
Reject
回来,内购测试失败,并附有截图。我们看了截图后明白,审核的时候没有从苹果后台拿到商品列表,导致在内购的时候,价格信息是空的。第一反应,审核的时候网路不好。所以立刻反馈给他们,说明网络问题,再重新审核一次
第二天,还是相同的问题,被打回来。此时注意到所有的内购商品都是
需要开发人员操作
状态。明白了,应该是这个导致的。但是这种也就是在描述中加一个空格,保存一下,所有的商品就变成了等待审核
。所以就再次回复,提示再审核一次
隔了一天,还是被相同的原因打回来了,并在反馈中,提示我们的服务器是否有问题。服务器当然没有问题,自己人都用相同的二进制包(testflight)测试所有的内购项目,每次都没有问题。
我们推荐可能是二级制包导致苹果后台状态错误的原因,所以重新出新的二级制包,重新提交审核(当然对所有内购的产品都测试一遍)
第二天,还是被相同的问题打回。另外的开发人员,发现所有的商品又是
需要开发人员操作
状态,也是简单操作之后,就又变成等待审核
。此时怀疑,我们测试没有问题,苹果人员审核总是拿不到商品,是不是因为我们的商品不是已批准
状态?而对于内购和二级制,苹果是分开来审核。所以之后的操作就是等
又隔了2天,内购商品的状态只是从
等待审核
变成了正在审核
,但是状态又不变化了。我们不想再等了,仔细分析,应该是苹果那边对我们商品状态出出了问题,从而导致那边总拿不到商品列表。
我们给他们写反馈(文字+图片),他们的回复总是通用的,你们的服务器是不是有问题之类的回答。
针对这个问题,我们的结论是商品的状态一定出了问题,且很有可能是苹果后台导致的。有解决中心沟通,总是说不清楚,所以我们想规避它。把商品全部删除,再重新添加新的商品(只是
productID
不同)。这次想把商品先提交审核,等审核过了,再提交二级制(根据内购和二级制包分开来审核的理论)
隔了一天,苹果在内购中反馈说,二进制包没有,需要上传才能审核,并把所有的商品都打回——
需要开发人员操作
。因此,刚刚的理论是错误的,第一次审核的时候,一定要二进制和内购一起审核。等有游戏上线后,之后的内购可以提前审核
。
这次把已经测试好的二进制一起上传,并提交审核。
功夫不负有心人,这次终于审核通过了
项目需要每天都自动编译版本,所以处理了自动化编译的脚本,过程中遇到几个问题。
internal & gradle编译
用gradle总是提示gradle版本不一致,之后直接改用internal
crontab 没有执行
因为crontab路径的问题,需要在shell中处理
Shell路径获取与变量设置
crontab 执行了部分逻辑
因为crontab环境变量问题,导致部分工具找不到,需要执行
source /etc/profile
codesign失败
因为ssh方式连接到编译机器,默认是没有账户的,但是访问钥匙串要求必须有用户身份,所以添加一步输入密码解锁钥匙串。
security unlock-keychain -p "login pwd" ~/Library/Keychains/login.keychain
Xcode: Internal launch error: process launch failed: Unspecified
因为在钥匙链中的证书,选择了”总是信任”,需要改成”系统默认”
No signing certificate “ios Development” found : No “ios Development” signing certificate matching
这种情况,主动在终端中用命令可以执行,但是通过
crontab
执行相同的脚本,就是报上面的错误。主要原因是证书,证书都是在钥匙链中的登录
下,需要复制一份到系统(system)
下。或者在crontab
中,用bash -l
来进入login shell
。
有一台闲置的服务器,用它部署了游戏的test和dev的服务,这些服务依赖memcached
和mysql
服务。
一段时间后,发现访问test和dev服务器很慢,以为是服务挂了呢,ssh连上后进程还在,但是ssh过程很慢,很卡。
在服务器的后台监控发现服务器的CPU和网络带宽特别高。第一感觉是,服务器被人攻击了。
用iftop
命令查看到memcached
的带宽很高且和美国ip的地址有tcp链接
1 | sudo iftop -n -P |
咨询之后,得出来的结论是:Memcached反射DDoS攻击
解决方法:
把11211端口配置防火墙策略,只能内网访问
升级memcached到1.5.6
版本以上
参考资料:
Layabox2.0 中文字需要加入阴影 使用 Laya.GlowFilter
可是某些Label文字在突然出现被拉伸或缩小的情况(现还未查明原因)。
所以CXB提议将出现问题的Label中的文字使用位图字体。
使用为题字体可以解决问题变形的问题,但是需要注意使用位图的Label不能再设置filter,否则文字阴影会加大,也会导致最后的文字出现右侧被截取的现象。
游戏服务器的开启,关闭都是手动操作,着实很麻烦。找了一下工具
这个没有用,感觉不跨平台
这是node.js下的一个工具,支持跨平台。虽然之前没有用过,看了一下quick start,不复杂,比supervisor简单
之前有用过,还比较方便,支持autostart
没有用过
Linux系统自带的,属于系统工具。不夸平台(Mac, Window)下没有
必须说,Nginx太强大了
今天又一个需求,把一个http服务,变成https服务,很容易想到Nginx的反向代理,但是配置好发现,网页是乱码,且出现了很多404错误。
打开浏览器的开发工具,发现404的请求都是走原来的链接,没有走新的https地址。
再进一步分析,是因为http服务中,有一些text/html
和text/css
中,有原http地址。这怎么处理?
查询了一下,发现Nginx已经有这个功能了—ngx_http_sub_module
sub_filter old new
用于设置需要使用说明字符串替换
sub_filter_last_modified on | off
sub_filter_once on | off;
用于设置字符串替换次数,默认只替换一次。如果是off,那么所有匹配到的字符都会被替换;
sub_filter_types
用于指定需要被替换的MIME类型,默认为“text/html”,如果制定为,则为所有的。
1 | server { |
因为项目包体要求,采用DCloud中的wap2app
模块,而广告采用的是穿山甲。整个过程还算顺利。但是最后在编译release
包的时候,出现了crash
1 | 06-04 18:46:38.681 23320 23320 E AndroidRuntime: FATAL EXCEPTION: main |
通过关键信息java.lang.VerifyError
,查阅互联网的一些博客,解决方法有很多,感觉应该是一个简单的问题。我在这个项目
中的表现是
debug包没有问题,release包在部分机器上有问题
release包在android 7.1.1
中crash, 但是在android 9.0
中没有问题
debug和release包的混淆和配置都一样
穿山甲提供的demo在相同的环境下,没有crash
网络中给的此类问题的解决方法:
clean project & delete build finder & rebuild project
clean project and Invalidate Caches/Restart
menu
修改配置
go to “File” > “Settings” > “Build, Execution, Deployment” > “Instant Run”,
uncheck the box “Enable Instant Run…” and click “OK” button
修改proguard
换电脑编译
这个问题的主要意思是类是没有错误但是版本不统一
最会检查到穿山甲中依赖gif
库, 版本为1.2.6
但是DCloud 5plus+
中也依赖这个gif
库, 但是版本为1.2.15
差距很大。
现在这个阶段的解决方法,只能出debug包,静等他们更新依赖库