禁止APP内Webview页面跟随系统缩放字号

17:05 八月 15th, 2017 by Opril

最近开始做适配移动端的网页,通过APP内部的Webview展示。为了在不同分辨率的设备上都能按相同的布局来展示,使用了rem布局的页面自适应方式:

(function (doc, win) {
  var docEl = doc.documentElement,
  resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
  recalc = function () {
    var clientWidth = docEl.clientWidth;
    if (!clientWidth) return;
    docEl.style.fontSize = 100 * (clientWidth / 320) + 'px';
    alert(docEl.style.fontSize);
  };

  // Abort if browser does not support addEventListener
  if (!doc.addEventListener) return;
  win.addEventListener(resizeEvt, recalc, false);
  doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);

样式表中文字的字号,元素的高宽、间距等都以rem为单位。

但是测试的时候发现了一个很糟糕的问题,当Android手机将系统的字号大小设置为非标准时,页面的布局受到了严重的影响,包括字号在内,所有以rem为单位的属性都被放大或者缩小了。为了保证布局不受影响,在网上查阅了一些应对这个问题的解决方案,经过了自己的实践验证后整理如下:
Read more »

Leetcode 365. Water and Jug Problem

01:31 六月 25th, 2016 by Opril

题目描述

You are given two jugs with capacities x and y litres. There is an infinite amount of water supply available. You need to determine whether it is possible to measure exactly z litres using these two jugs.

Operations allowed:

  • Fill any of the jugs completely.
  • Empty any of the jugs.
  • Pour water from one jug into another till the other jug is completely full or the first jug itself is empty.

解题思路

这个问题实质上是求解关于a和b的方程ax+by=z是否有整数解的问题。a和b为正数时表示给一个空壶倒满水,负数时表示把一个水壶倒空。容易得知当且仅当z是x与y的最小公约数的倍数时,该方程有整数解,所以本题的关键是判断z被x和y的最大公约数整除即可,关键的算法是辗转相除法。

目前尚存在争议的一个问题是在最后量取的步骤中水壶能否被多次使用(比如x=1, y=2, z=5的情况,是否可以用1+2+2=5来实现),该问题的讨论区里也在讨论中。目前的test cases好像是认定为最终只能用两个水壶在某一时刻里存有的总水量来衡量,所以z>x+y的情况都判定为false了。

代码

class Solution {
public:
    int gcd(int x, int y)  
    {
        return y==0?x:gcd(y, x%y);  
    }
    bool canMeasureWater(int x, int y, int z) {
        if(z < 0 || z > x + y)
            return false;
        if(z % gcd(x, y))
            return false;
        else
            return true;
    }
};

福冈二日

18:53 十二月 1st, 2015 by Opril

去年秋天写的“京都二日”随着不靠谱空间提供商的服务器倒掉,连个快照都找不着了… 🙁

嗯,其实是承蒙老板关照,第一次参加校际的学术交流活动。实验室和日本两所大学相关专业的院系一起举办的活动,每年由三所学校轮流承办,今年是在福冈的九州大学。掐头去尾整整两天时间里,workshop的日程还是挺满的,没有时间到处逛,活动范围基本也只限定在会场与酒店周围——好在算是在市中心,也还算是挺繁华的。
会场所在的JR博多城

这个workshop的主题是Machine Perception and Robotics,然而两天的oral和poster session里,除了这个以外也有一些其他方向的报告,比如image processing、visualization、基于computer graphics的3D制作等等,都挺有趣的。可能对于三所学校来说,机器感知与智能这个专业下面都包含一些其他方向的工作吧。印象比较深刻的是另两所学校里有一些关于生物医学和机器人学的研究,从思路上看挺受启发的。
Read more »

有一天

17:32 七月 13th, 2015 by Opril

这首歌在十佳复赛唱了一次,决赛唱了一次,毕业生晚会唱了一次。还算是完美的落幕吧。

去年准备十佳初赛的时候,每天在四教的小教室排练到10点半楼管赶人,喇叭里都会放那一段旁白充满槽点的关门铃。
傲星说想把关门铃写到原创歌的谱子里,也真的很快就写了出来。

初赛结束以后准备社团的圣诞小专场的几首歌,在排练的间隙也会拿这首「四教歌」出来唱一唱,只是旋律并不完整而且也没有歌词,只好用啦啦啦来代替。
Read more »

写了一个自动转发微博的bot

02:20 四月 4th, 2015 by Opril

其实算是看到微博树洞微信树洞一类的东西都挺火的,于是动手写了一个。
也是因为微博的粉丝服务平台面向所有用户开放了,所以可以通过下发私信的方式去执行相应的操作:发微博在正文中 @平台帐号,给平台帐号私信指定的指令(比如uid中的某几位的运算结果),平台帐号转发微博。

首先是使用微博API的 statuses/mentions 接口,get接收到的最近的@主体帐号的微博(access_token直接给固定的粉丝服务平台的token即可),为了避免干扰可以筛选出原创微博;
从最新的微博id往前与sender_id进行比对,直到找到符合的微博或达到某个设定的阈值;
比较当前时间与sender_id上一次使用这个功能的时间(存在本地csv文件里),判断时间间隔是否超过阈值,以免滥用刷屏;
判断微博正文里是否有不希望出现的词或者链接中是否包含淘宝地址(直接用strstr()就够了;判断链接用 short_url/expand )等,视情况予以回复信息警告或拉黑;
使用 friendships/show 判断是否关注主体帐号,如果没有则提示关注后再使用(涨了不少粉..);
如果都没有问题的话,往 statuses/post post相应信息就好了,顺便把sender_id和微博id记录到csv文件里。

基本的流程就是这样,算是绕过了执行者给微博应用授权的这个过程,不过还是需要一定的人工干预(比如每天查看一次)以避免不当使用。不过最近微博APP似乎把 statuses/mentions 接口设置成只能返回授权用户的微博了(orz),想想办法还是能把这个问题给解决掉的,嗯~

Hello world!

11:05 三月 2nd, 2015 by Opril

网站再次被迫搬家,又是个新开始…

一个学期又过去了

02:42 一月 19th, 2015 by Opril

已经懒得不会起标题了…

半年里发生了好多事,希望自己在以后的日子里能够有所进步吧。

这里还是没什么干货,虽然曾经发过(本地没有备份)因为服务器宕机再也找不回来了;
改编的2048在遭遇不断的山寨以后,这里每天还是能有400-500IP的访问,也是蛮神奇的;
还是唱不好和声。…

觉得Matlab除了调试不便以外还是挺有趣的。本科毕设的时候有一步卡在VS和Matlab混编那儿最后也没做完,其实动动手也就是几分钟的事情 🙁 ..还是自己太懒了。

新的一年,不能再碌碌无为啦。

转眼又是一年

01:53 六月 14th, 2014 by Opril

To-do-list 上的字一行一行地被划掉,又一行一行地被填满。
期末结束,这个学期也要过去了呢。

为了改两行代码,开始接触 ubuntu 系统,实在是有趣。

还有许多新任务要完成。

附上月初 SEAbling 的一个“高清”演出视频,睡觉。

总结一下这两天的一些想法吧

02:21 三月 24th, 2014 by Opril


有网友已经并到ROC这一步了并且po图@了我,表示一下震惊。其实我自己在原版2048和所有不改变难度的2048变种里都还没玩到512呢… 当然可能是因为自己太懒了。 🙂

— 以下是正文 —

做这个变种的缘由很简单。
当时2048已经很火了并且人人网和微博上已经出现了各种奇葩变种,我作为一个喜欢瞎捣鼓的家伙也打算试试。于是有一天晚上跟基友聊天的时候有了下边一段对话:
Read more »

2048

19:20 三月 21st, 2014 by Opril

这两天 Gabriele Cirulli2048 突然火了,并且出现了各种各样奇怪的变种…
跟风写了一个朝代版(也就改了改文字而已,thx Finley提供作死文案),于是现在都没法正常登录发博文了… 🙁

今天又补了一个稍微完整一点的朝代版,不但改了文字还改了 css 哦哈哈哈。
2048: http://www.oprilzeng.com/2048
2048 Full: http://www.oprilzeng.com/2048/full

因为网站并发数经常被刷爆于是速成学会了怎么在 github 上建站(啊其实以前一直都想把 project 往上面放的,但一个是太懒了另一个是觉得不如这个在 Free IP list 里要方便 = =
所以更希望您能打开以下链接为我减轻负担: 🙂

2048: http://oprilzeng.github.io/2048
2048 Full: http://oprilzeng.github.io/2048/full

PS: 我没学过 JavaScript.. 瞎改的,嗯。
PS2: 我真的不是文科生。