前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >20180914_ARTS_week12

20180914_ARTS_week12

作者头像
Bob.Chen
发布2018-09-27 11:33:54
3520
发布2018-09-27 11:33:54
举报
文章被收录于专栏:程序员的诗和远方

十二周咯,算法题 Roman to Integer,看了一篇讲 Python 和 Go 的文章,记录了移动端网页适配 iPhone X 的内容,分享了三个月来做 ARTS 的一点感受。

Algorithm

代码语言:javascript
复制
/**
 * Roman to Integer
 * https://leetcode.com/problems/roman-to-integer/description/
 * 
 * @param {string} s
 * @return {number}
 */
var romanToInt = function(s) {
    var romaDict = {
        "CM":900,
        "M":1000,
        "CD":400,
        "D":500,
        "XC":90,
        "C":100,
        "XL":40,
        "L":50,
        "IX":9,
        "X":10,
        "IV":4,
        "V":5,
        "I":1
    }

    var rs = 0;

    for (var k of Object.keys(romaDict)) {
        var v = romaDict[k]
        var reg = new RegExp(k, "g");

        var repeatList = s.match(reg);
        var repeat = repeatList ? repeatList.length : 0;

        rs += v * repeat;

        s = s.replace(reg, "")
    }

    return rs;
};

console.log(romanToInt("III"))
console.log(romanToInt("IV"))
console.log(romanToInt("IX"))
console.log(romanToInt("LVIII"))
console.log(romanToInt("MCMXCIV"))

因为之前做过 Integer to Roman 这个 Roman to Integer 还是比较容易有思路,和 Integer to Roman 差不多,但是这里要先算组合型的字符,比如 CM 就要在 M 之前计算。

然后这个方法通过两次正则去匹配,效率不是太高,应该还有更好的方法。

Review

Moving from Python to Go

https://towardsdatascience.com/moving-to-go-from-python-9ebbd9a8aec4

文章从静态类型,JSON 解析,接口和类型推断 3 方面比较了 Python 和 Go 的不同。

我懂点 Python,对 Go 还挺有兴趣的,看文章可以大概了解下 Go 在这几方面与 Python 的不同,文章最后推荐了 《The Go Programming Language》,国内叫《Go 语言圣经》,看这个应该会更加系统。

Tip

分享个关于移动端网页适配 iPhone X 的相关内容。

iPhone X 新增了一个叫安全区域的概念,也就是除了四周圆角,上边刘海,底部小黑条之外中间的那个长方形区域。我们对网页做适配主要也是让主体内容保持在安全区域内。

苹果为了适配 iPhone X 对现有 viewport meta 标签扩展了一个叫 viewport-fit 的东东,用于设置网页在可视窗口的布局方式,可设置三个值:

  • contain: 可视窗口完全包含网页内容
  • cover:网页内容完全覆盖可视窗口
  • auto:默认值,跟 contain 表现一致

默认不添加扩展的表现是 viewport-fit=contain,需要适配 iPhone X 须要设置 viewport-fit=cover。

除此之外,iOS 11 新增了四个预定义变量,用于设定安全区域与边界的距离,有四个预定义的变量:

  • safe-area-inset-left:安全区域距离左边边界距离
  • safe-area-inset-right:安全区域距离右边边界距离
  • safe-area-inset-top:安全区域距离顶部边界距离
  • safe-area-inset-bottom:安全区域距离底部边界距离

然后就可以通过利用这些变量来达到将页面控制在安全区的目的:

代码语言:javascript
复制
body {
  padding-bottom: constant(safe-area-inset-bottom);
  padding-bottom: env(safe-area-inset-bottom);
}

上面就是为了让 web 内容不要延伸到底部的小黑条,这里 constant 是为了兼容 iOS 11.2 之前的。

其实我觉得这个方案不是特别好,对于已有的项目,比如 hybrid app,页面数量何止成百上千,一个一个根据页面情况做适配简直是会疯掉,更好的方案是终端开发能定制 webview,提供能力,在 iPhone X 下就自动上下加个距离,页面也不用改,测试的工作量也会小很多 :-)

Share

这周是做 ARTS 的第 12 周,差不多也要 3 个月了。一开始其实挺难的,看英文文章很慢,如果不是熟悉的技术,常常不太得要领,现在感觉有一点进步,稍微熟悉的大概看一下基本也能连猜带懵了解大半。

耗子哥说:『一件事情你有信心就能打败 99% 的人,然后坚持下去又能打败剩下 1% 中 99% 的人』

能完成 12 周的 ARTS 也是靠着坚持,然后想各种办法去完成没一周的任务,比如中午午睡的时间抽半个小时出来看一会儿英文文章,平常工作的时候遇到有益的 Tip 就赶紧记下了,想到什么可以 Share 的就先把关键字记下来,有空的时候再扩展一下。

总之,希望这只是一个开始,与君共勉。


碎碎念

记录一些所思所想,写写科技与人文,写写生活状态,写写读书心得,主要是扯淡和感悟。 欢迎关注,交流。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Algorithm
  • Review
  • Tip
  • Share
  • 碎碎念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档