移动光猫ZXHN F653GV9小米路由器设置外网访问服务器桥接光猫设置Dmz主机花生壳DHCP

输入192.168.1.1

默认超级用户名CMCCAdmin 密码 aDm8H%MdA

如果账号密码不对重置光猫,如果正确跳过重置去新建桥接。

重置前先用光猫背面普通用户登陆记录信息,重置之后要用,不然无法上网。

普通用户登陆->网络->远程管理->LOID认证->记录LOID

状态->网络测信息->记录(VLAN ID)连接名称后面的4位数字ID(我的是1220)

记录好上面的两条数据后可以捅光猫后面的重置按钮,等光猫灯全熄灭后再松手,重置成功。

再用超级默认超级用户名CMCCAdmin 密码 aDm8H%MdA登陆

网络->远程管理->LOID认证->输入记录的LOID->确定

新建桥接

网络->宽带设置->Internet连接->连接名称->选新建连接下面的其它选项->删除

现在就可以新建了,模式里选bridge,VLAN模式选改写(tag),VLAN ID输入记录的4位数字,创建。

光猫桥接成功了,可以去设置路由器了,路由器设置PPPoE连接正常设置DMZ主机就可以。

设置路由器

192.168.31.1,输入账号密码进入小米路由器后台。

常用设置->上网设置->上网方式PPPoE->输入账号密码。(我的账号是手机号@net,密码12345678)

设置好后现在可以正常上网了。

滑到最下面开启ipv6。

设置DMZ

高级设置->端口转发->开启DMZ->输入服务器内网IP。(我设置的192.168.31.171)

网络搜索ip查询,看下是不是公网IP可以访问服务器了。

其它设置

服务器内网IP在DHCP静态IP分配里可以绑定。

花生壳在路由器高级设置->DDNS->添加服务->输入用户名密码->主机名称填花生壳的壳域名->状态检查10->强制更新1

是不是发现花生壳不行,因为只能用ipv6才可以,因为ipv4还是网关地址。

所以如果用花生壳还要去官网设置域名的ipv6,但是要花钱,还是算了,不重启路由器就是了,用自己的域名解析到ipv6地址上。或者http://[ipv6地址]

umijs max React 的代码打包多份再运行react找不到问题

mf-dep____vendor.80125e40.js:263462 Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:

  1. You might have mismatching versions of React and the renderer (such as React DOM)
  2. You might be breaking the Rules of Hooks
  3. You might have more than one copy of React in the same app
    See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.

Uncaught TypeError: Cannot read properties of null (reading ‘useContext’)

根因在某些复杂场景下,React 的代码被打包多份,再运行时产出了多个 React 实例。解法通过 Module Feratation 的 shared 配置来避免多实例的出现。 如果有其他依赖出现多实例的问题,可以通过类似的方式解决。

在config/config.ts文件里加mfsu的配置

mfsu: {
  shared: {
    react: {
      singleton: true,
    },
  },
},

sequelize:如何在include中attributes重命名列

User里的type字段重命名为type,放到account同级属性下

User的attributes给一个空数组,返回数据格式则不带User的数据。

const account = await Account.findByPk(id, {
      attributes: ['id', [Sequelize.col('"User"."type"'), 'type']],
      include: {
        model: User,
        attributes: [],
      },
    });

重命名modal。

account的modal文件里。

Account.hasOne(models.User, {
        as: 'user',
        foreignKey: 'id',
        sourceKey: 'userId',
      });

使用,注意User改成小写user了。

attributes: ['id', 'userId', [Sequelize.col('"user"."type"'), 'type']],
      include: {
        model: User,
        as: 'user',
        attributes: [],
      },

京造 Keychron K10使用说明

自动睡眠

蓝牙模式下,10分钟闲置自动睡眠。如果想禁用睡眠,长按 Fn+S+O 3秒。如果再次长按,则切换回来。(有线模式不会睡眠)

Fn功能键切换

在Windows下,长按 Fn+X+L 3秒,可在功能键和多媒体键之间切换。

在Mac下,F5和F6默认作为多媒体键来调节灯效亮度。长按Fn+K+C 3秒,可在功能键和多媒体键之间切换。(在系统设置>键盘中设置)

查看电量

长按 Fn+B,灭第一、二排,其它全亮,表电量为 30-70%

恢复出厂模式

长按 Fn+J+Z 3秒,恢复出厂模式。蓝牙复位。

作者:吟游诗人卡西瓦 https://www.bilibili.com/read/cv17428316 出处:bilibili

Umi Max 国际化使用

ReactElement内使用

import { FormattedMessage } from '@umijs/max';
<FormattedMessage id="project.tunnel.label" />

函数内使用

import { useIntl } from '@umijs/max';
const AppLayout = ({ children, version }: any) => {
  const intl = useIntl();
  const msg = intl.formatMessage({ id: 'project.menu.draw.index' });
}

外部文件使用

import { getIntl, getLocale } from '@umijs/max';
const intl = getIntl(getLocale());
message.error(intl.formatMessage({ id: error.response.data.message}));

injectIntl还没遇到需要的地方,暂时不了解用法。