2019年1月

ubuntu新建用户并允许SSH登录

新建用户,如果不是root加sudo
useradd yourusername -m -s /bin/bash
passwd yourusername

添加sudo权限,修改group文件:
sudo vim /etc/group
分别在adm和sudo行之后加上新建的用户名(yourusername)
生成id_rsa
ssh-keygen -t rsa (注意路径一般是/home/yourusername)
生成了.pub文件,把.pub的内容添加到authorized_keys
在新建的用户目录下/home/yourusername,
设置.ssh的权限为700(如果不设置可能会包ssh密钥登录 所选的用户密钥未在远程主机上注册)
设置.ssh下所有的文件权限为600
上面所有步骤完成了
把id_rsa这个文件下载下来,这个就是ssh登录需要用到的key

ubuntu修改系统时区和jvm时区

比喻我希望服务器是西太平洋时间
tzselect
在弹出框依次选择 Pacific Ocean > US 。。。
cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
再次查看date -R 就可以看到系统时间已经更改过来了
但是JVM的时间依然没有更改,重启也没用
运行dpkg-reconfigure tzdata
依次选择 US > Pacific Ocean
重启java程序即可
另外,如果修改时间的时间:
1.  安装ntpdate工具

sudo apt-get install ntpdate

2.  设置系统时间与网络时间同步

ntpdate cn.pool.ntp.org

3.  将系统时间写入硬件时间

sudo hwclock --systohc

cn.pool.ntp.org是位于中国的公共NTP服务器,用来同步你的时间。如果第2部出错,请输入

service ntp stop

canSubscribeBotAsync返回false无法弹出订阅框的问题

facebook从1月19号之后,不在默认订阅召回机器人,需要用户授权之后才可以继续发送。
步骤为:
1:修改fbapp-config.json
增加
"bot":{
"subscription_type":"OPT_IN_PUBLIC"
}
完整如下:

{
  "instant_games": {
    "platform_version": "RICH_GAMEPLAY",
    "navigation_menu_version": "NAV_BAR",
    "bot":{
        "subscription_type":"OPT_IN_PUBLIC"
    },
    "custom_update_templates": {
      "play_turn": {
        "example": "Edgar played their move"
      }
    }
  }
}

2:提示用户授权的代码

FBInstant.player.canSubscribeBotAsync().then(
    (cansubscribe) => {
        cc.log(cansubscribe);
        if (cansubscribe) {
           
            FBInstant.player.subscribeBotAsync().then(
                function () {
                    
                    cc.log('Player is subscribed to the bot');
                }
            ).catch(function (e) {
                
                cc.log(e);
            });
        } else {
           
        }
    }
).catch(function (e) {
   
    cc.log(e);
});

官方book描述为:https://www.facebook.com/fbgaminghome/blog/important-game-bots-update

Intanst games 召回无法统计原来的问题

通过facebook的messenger发送召回消息,在payload添加自定义数据,在通过FBInstant.getEntryPointData()无法得到数据的问题,原因有两个:
1:传入的payload的序列化json不对

{
    "messaging_type": "UPDATE",
    "recipient": {
        "id": "1866014103525700"
    },
    "message": {
        "attachment": {
            "type": "template",
            "payload": {
                "template_type": "generic",
                "elements": [
                    {
                        "title": "Paly",
                        "image_url": "https://koi-ciika.comck.png",
                        "buttons": [
                            {
                                "type": "game_play",
                                "title": "Play",
                                "payload": "{\"key\":\"zzzz\"}"
                            }
                        ]
                    }
                ]
            }
        }
    }
}

上面这个是能正常发送的,下面的写法均是错误的:
"payload": "{"key":"zzzz"}"
"payload": {"key":"zzzz"}
"payload": {key:zzzz}

2:FBInstant.getEntryPointData()无法得到数据
需要确认FBInstant.getEntryPointData()是在 FBInstant.startGameAsync() 之后调用