部分安卓机默认字体大小改变导致webview内rem计算错误

function adapt(){ var d = window.document.createElement('div'); d.style.width = '1rem'; d.style.display = "none"; var head = window.document.getElementsByTagName('head')[0]; head.appendChild(d); var defaultFontSize = parseFloat(window.getComputedStyle(d, null).getPropertyValue('width')); return defaultFontSize }; 获取实际根字体大小后再计算比例差值 pxOneRem = pxOneRem * 16 / adapt(); docEl.style.fontSize = pxOneRem + 'px' ... read more

我,不同意

不同意 ... read more

五子棋小游戏

看到一个帖子说腾讯前端的面试题是让写一个五子棋小游戏 实现胜负判断,并给出赢棋提示。 任意一方赢棋,锁定棋盘。 尽可能考虑游戏的扩展性,界面可用 DOM/ Canvas 实现,并且切换实现方式代价最小。 实现悔棋和撤销悔棋功能。 人机对战部分可选。 挺有意思的,尝试自己写一个。 代码:https://github.com/chairuosen/my-five demo:http://demo.ruosen.io/my-five/dist/ 思路 首先,要求渲染层可替换,那么逻辑代码就一定要高度抽象,仅对数据操作,然后每一次变动由数据渲染出画面,应该对外提供一个五子棋类,提供api查询棋盘状态,和下棋,撤销,重置等动作。然后可以注册update事件监听来更新渲染。 类 棋子: 状态[未分配,黑,白] 重置方法 因为要点击空白部分来放置棋子,与其判断点击位置来放置棋子数据,不如一开始就铺满棋子只是不显示, ... read more

js 实现 immutable

想到一种利用Proxy实现immutable的方法,非常简单,不知道为什么其他库那么大? function immutable(source) { return new Proxy(source,{ get:function(target,key){ try{ return immutable(target[key]); }catch(e){ return target[key]; } },set:function(){} }); } https://github.com/chairuosen/my-immutable-js ... read more

群晖笔记

ssh免密配完需要 chmod 755 ~,默认居然是777 配sudo免密单个用户不成功,最后把admin组改成NOPASSWD才可以,不知为何 局域网文件共享。windows需要开启网络发现。匿名共享需要开启群晖guest用户,guest用户在控制面板>用户>高级里面先去掉强制密码检查才能设置无密码。 ... read more