OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

ourjs

WordPress、百度宣布停止使用React(Native)开源项目,Facebook开源专利许可潜在的法律风险

分享 by ourjs 1505708775037
7月16日Apache 基金会在 把 Facebook BSD+Patents 开源许可加入了禁止名单中。因为著名的开源项目 React 是基于这个协议的,那就意味着 Apache 基金会下所有开源项目都需要在 8 月 31 号前移除 React 相关代码。

BSD 的授权本身是简单,开放,没有限制的,但 Facebook BSD+Patents 在此基础增加了一个 专利协议。

简单来说就是使用React及其衍生项目的开发者,一旦对 Facebook 发起专利诉讼,则将失去使用 Ract 开源项目的的权利。Facebook将能够向你发起侵权诉讼。

比特币江湖:交易被禁,中国势力控制51%矿池份额

分享 by ourjs 1505392258171

  GBG,一位美国计算机极客在推特上的昵称。

  最近四年,GBG 业余时间专注一件事:将任天堂 1985 年生产的游戏主机,改装成挖矿机,开挖比特币。

  根据规则,每 10 分钟,互联网上就会多出一个比特币加密数据块,全球所有的挖矿设备同时运算生成它,成功者,得比特币。

  每 10 分钟一次机会,可是,整整四年,GBG 一无所获,因为他的挖矿机太慢太慢!

  数千公里外的中国鄂尔多斯,无论寒暑,8 座长达 150 米的单层仓库,其中,7 个仓库摆放了 21000 台比特币挖矿机,另外一个仓库则放置了 4000 台莱特币挖矿机。每 10 分钟,疯狂运算一次,在这里,矿能约 25 万美元/天。

Node.JS中如何快速扫描端口并发现局域网内的Web服务器地址(80)

Node.JS by ourjs 1505210771582
在 Node.JS 中进行端口扫描还是比较方便的,一般会有广播和轮询两种方式。即使用广播和扫描,使用广播发出的消息有时会被路由器屏蔽,所以并不可靠。
使用node.js中的net模块,可以直接尝试向目录主机的某个端口进行连接,如果能建立连接,则说明该地址存在服务器。

var socket = new Socket()
socket.connect(port, host)
socket.on('connect', function() {
  //找到port 和 host 地址
})

Node.JS循环递归复制文件夹目录及其子文件夹下的所有文件

Node.JS by ourjs 1504004376526
在Node.js中,要实现目录文件夹的循环递归复制也非常简单,使用fs模块即可,仅需几行,而且性能也不错,我们先来实现文件的复制:

var copyFile = function(srcPath, tarPath, cb) {
  var rs = fs.createReadStream(srcPath)
  rs.on('error', function(err) {
    if (err) {
      console.log('read error', srcPath)
    }
    cb && cb(err)
  })

  var ws = fs.createWriteStream(tarPath)
  ws.on('error', function(err) {
    if (err) {
      console.log('write error', tarPath)
    }
    cb && cb(err)
  })
  ws.on('close', function(ex) {
    cb && cb(ex)
  })

  rs.pipe(ws)
}

让Select选择框可编辑可输入可自动补全可下拉选择

Html5 by ourjs 1503025980370
Datalist是HTML5的原生标签,用于向input提供下拉和自动提示选项,支持输入和下拉选择两种方式。但是目前IE10及其以下浏览器并不支持, 并且IE11无法触发input和change事件。如果仅支持Chrome或Eletron桌面的应用则可以放心使用。
好处不需要引用额外的JS/CSS文件支持,示例:

<input list="cookies" placeholder="Type of Cookie"/>

<datalist id="cookies">
    <option value="Chocolate Chip"/>
    <option value="Peanut Butter"/>
    <option value="Raisin Oatmeal"/>
</datalist>

Bootstrap 4.0 Beta发布,不支持IE8/IE9,更新特性一览

分享 by ourjs 1502980161896
Bootstrap 4.0新特性一览:
  • 从 Less 迁移到 Sass。因为 Libsass Bootstrap编绎得更快。
  • Flexbox和一个改进的Grid网格系统。几乎完全迁移到了flexbox。
  • 添加 cards 并移除 wells, thumbnails, panels。Card是一个全新的 Boostrap 组件。
  • Reboot: 一个normalize.css新的分支。
  • 全新的定制选项。如果要禁用圆角?只需更改一个变量并重新编译即可。
  • 放弃IE8和IE9的支持。
  • 用ES6重写所有的JavaScript插件。
  • 参考 Popper.js 改进自动提示插件,如tooltips, popovers, and dropdowns。
  • 使用Markdown重写使用帮助文档。
  • 新的build工具:使用 npm 脚本代替 Grunt。
  • 还有更多!自定义表单控件,新的 carousel,导航栏,HTML5的表单验证方式等等。

正则中test、exec、match的简单区别,以及括号的用法

JavaScript by ourjs 1502528052409

1、当正则表达式无子表达式,并且定义为非全局匹配时,exec和match执行的结果是一样,均返回第一个匹配的字符串内容;

2、当正则表达式无子表达式,并且定义为全局匹配时,exec和match执行,做存在多处匹配内容,则match返回的是多个元素数组;

3、当正则表达式有子表示时,并且定义为非全局匹配,exec和match执行的结果是一样如上边的第5种情况;

4、当正则表达式有子表示时,并且定义为全局匹配,exec和match执行的结果不一样,此时match将忽略子表达式,只查找全匹配正则表达式并返回所有内容,如上第6种情况;

也就说,exec与全局是否定义无关系,而match则于全局相关联,当定义为非全局,两者执行结果相同

好与坏的程序员

分享 by ourjs 1501467978523

有感于知乎上的一篇关于程序员的讨论。让我突然之间心有戚戚然的感觉。最近一段时间有点江郎才尽的感觉,写不了大的主题,就写点小东西吧。

我们从知乎上面引用的这段小故事开始:

魏文王问扁鹊家里三兄弟谁的医术最好。扁鹊回答说大哥最好,二哥次之,他自己最差。魏文王疑惑了,又问道,为什么扁鹊最有名呢?扁鹊回答说因为大哥治病的时候人没病就防止了,所以毫无名气。二哥呢,病刚起来的时候,就给治好了,大家以为只能治小病。而自己呢,能耐不够,非要到了病的很厉害了才能看出来,治起来的动静就大了。好在还不至于庸医能治好,结果大家看到每次治的都是顽疾,反而出名了。

2017 开发者报告:Java最流行的语言,JavaScript最常用的语言,Go最有前途的语言

分享 by ourjs 1500252304886

JetBrains 在 2016 年底至 2017 年初期间,对 5000 多名开发人员进行了调查,以研究最新的开发生态。

最近,调查结果已公布:Java 被评为最流行的语言,JavaScript 是最常用的语言,而 Go 被认为是最有前途的语言。



用JavaScript获取当月第一天和最后一天

JavaScript by ourjs 1496734243458

获取当月的第一天和当月的最后一天其实还挺麻烦的,因为每个月天数可能不一样。不过借助 Date 对象则很容易实现:

当月第一天和最后一天

var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);


分享到