Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all 14821 articles
Browse latest View live

papoGen - 靜態網頁產生器 Webpage Generator

$
0
0

[papoGen - Webpage Generator]Github 原始碼

目前做了一個以 pug.js 為模版,以 JSON/YAML 等文檔格式作為來源產生網站格式的小專案 - papoGen 並以 paper.css 做為預設的樣式模版 使用者可以透過編輯 JSON/YAML 內的資訊(格式由 papoGen 內有定義!)後,即可由 papoGen 來產生相對應的網站格式! 如果覺得重頭編輯 JSON/YAML 格式很麻煩的話,也可以透過 papoGen 的指令來產生腳本範例到指定資料夾中,再依據需要編輯它就行了 只要透過 npm 安裝全域 papogen後即可 透過指令來產生靜態網站!

npm install -g papoGen

而對開發者來說,增加新的模版只需要編輯 pug.js 的 template 以及增加新的 css 進入 repository 即可!這樣的設計使得 papoGen 可以很容易的加入新的產生樣式! 以下為詳細內容連結!如果有興趣的話可以幫忙 star支持一下唷~ 也歡迎有興趣的大神可以來玩玩!

Release Note(簡介與用途)產生網站 demo - doc 模式產生網站 demo - resume 模式簡易說明 - 如何使用的範例文檔支援的產生格式(papoGen 產生網站內容的格式依據)


关于入门到入土Java系列的说明

$
0
0

声明

首先,入门到入土系列或者是之前的入门到放弃系列并没有针对语言或者框架本身,只是单纯的嘲讽自己打字员努力学习语言和框架的这个过程而已。

当然,肯定有人问了,一名打字员,你之前的入门到放弃系列都还没有更新几篇呢,咋又开了一个入门到入土系列呢?说实话,我是很喜欢这两门技术的,虽然我爱python大于js大于java,但是这并不能影响什么。之前的node系列还会继续更新下去,只不过可能现在在用node的后端小伙伴比较少,大部分都还在使用java等语言进行编写。所以本着share code 和 open source的原则,接下来可能java的力度可能比node会大一些,当然,关于python脚本方面的也会陆陆续续更新一些的,毕竟人生苦短我用Python。

感谢

【一名打字员】这个公众号的群体一开始都是一些身边的朋友和同学,也都是在IT互联网行业的从业人员,其中大部分都是编程爱好者。后来做了入门到放弃node系列之后,大部分都是从cnodejs上过来的,很感谢你们的支持,虽然并没有真正的分享几篇干货给你们,大部分时间都在说段子,但是分享和享受分享的这个过程就已经很有意义了。 最后希望大家在2017年的尾声,把一年的bug都给干掉(这好像有点困难),找到心爱的另一半(这好像更困难),不管如何,要保护好自己啊打字员们!

pm2创建的进程,pug模板页面小改动,不重启能更新吗?

$
0
0

pug模板写的页面,要去掉一个按钮,直接在生产环境修改的。 生产环境的进程是pm2托管的。 目前没有重启pm2,无论怎么刷新按钮都还在。 请问必须要重启pm2才行吗?pm2是缓存了页面吗?

mongoose 地理查询 $near

$
0
0

一起有4条数据,有时候只能出3条数据,4条数据都没有问题。匹配的距离都没问题。 就是有时候会少条数据,还不知道数据量大上去,会不会再少些。 var location = [req.params.log ,req.params.lag] var obj = { gps : {’$near’:location} } Shop.find(obj,function(err,docs){ res.send(docs) }

哪种代码的风格相对更好呢= =?

无侵入式的微信小程序开发工具

$
0
0

又造了个轮子,虽然有点方。

造轮子的初衷:维护使用原生开发的旧项目

旧的项目不使用任何小程序框架, 比如wepy(别问我为什么不用框架), 那么就不能愉快的使用npm,新特性(async await),压缩等等

所以就写了个工具,既兼容旧项目,又能满足上面的需求

底层基于Webpack+Babel实现。

所有Js文件会打包到一个文件里面,然后再用Babel编译,所以Babel产生的一些辅助代码,是不会重复的, 比如 createClass, generatorRuntime. 极大节省代码大小.

特性:

  • [x] 零配置, 你所需要的, 都已经有了
  • [x] 无入侵. 兼容原生开发方式. 不用更改一行代码.
  • [x] 支持引入 NPM 模块
  • [x] 支持 ES2015, ES2016, ES2017…
  • [x] 强力压缩 JS, 极大节省包体积.
  • [x] 支持图片压缩, jpg/jpeg/mozjpeg/png/gif/webp/svg
  • [x] WXSS/WXML/JSON 压缩
  • [x] 支持使用css/sass/less代替wxss,xml代替wxml
  • [ ] 基于 AST 压缩 WXSS/WXML(把 className 替换成 1 个字符)

使用

npm install @axetroy/webuild -g

webuild dev --src <项目目录> --output <输出目录>

# 然后打开小程序开发者工具, 加载<输出目录>

最后上项目地址: https://github.com/axetroy/WeBuild

欢迎大大们拍砖

Mac环境如何卸载pm2

$
0
0

以前都是在window环境下用nodejs进行web开发,用pm2管理项目,不想使用pm2的时候用 npm remove pm2 命令就可以将它移除;如今转战Mac环境,全局安装pm2后尝试卸载却提出警告且无法卸载,请问大神们要怎样才能对pm2卸载?以下是执行命令时的警告

npm WARN saveError ENOENT: no such file or directory, open '/Users/huangjunkang/package.json’ npm WARN enoent ENOENT: no such file or directory, open '/Users/huangjunkang/package.json’ npm WARN huangjunkang No description npm WARN huangjunkang No repository field. npm WARN huangjunkang No README data npm WARN huangjunkang No license field.

追加:在多个论坛及nodejs交流群提问后没有收到任何的回复,自己研究了一下,也不知道是否成功移除 pm2,反正是无法使用 pm2 命令了; 分享一下: 进入目录 /usr/local/lib/node_modules 将 pm2 移除 进入目录 /usr/local/bin 将 pm2 移除 运行 pm2 -V 提示 -bash: /usr/local/bin/pm2: No such file or directory 隐隐觉得这只是移除了 pm2 的相关文件并未从根本上移除 pm2,管他呢,达到目的就行

请教关于formidable的使用

$
0
0

跑formidable示例的时候,input输入中文,被使用什么编码了,怎么还原回来。谢谢!

var formidable = require('formidable'),
    http = require('http'),
    util = require('util');

http.createServer(function(req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
    // parse a file upload
    var form = new formidable.IncomingForm();

    form.parse(req, function(err, fields, files) {
      res.writeHead(200, {'content-type': 'text/plain'});
      res.write('received upload:\n\n');
      res.end(util.inspect({fields: fields, files: files}));
    });

    return;
  }

  // show a file upload form
  res.writeHead(200, {'content-type': 'text/html'});
  res.end(
    '<form action="/upload" enctype="multipart/form-data" method="post">'+
    '<input type="text" name="title"><br>'+      <!-- 这里输入中文-->
    '<input type="file" name="upload" multiple="multiple"><br>'+
    '<input type="submit" value="Upload">'+
    '</form>'
  );
}).listen(8080);

初次登陆,分享一下喜悦

$
0
0

初次登陆,分享一下喜悦

node.js中是否可以 new Error(code, message);

$
0
0

经常看到的用法是: new Error(‘the message’); 但是有的时候,我需要自定义错误码,那么是否可以直接: new Error(code, message);

这样在回调callback的时候,可以直接传递,如: async.series([function(callback){
callback(null, 1);
}, function(callback){
callback(new Error(code, message), 2); }],function(error, results){
if(error){
console.error("error happend: " + error.code + error.message );
}
});

如何把var app=angular.module('index',[])封装成一个单例模式。

$
0
0

如上所问。 ### 问题描述 我们写文件时候都是要拆分文件的。 controller放到controller.js里 route放到router.js里 service放到service.js里 而每个js文件都要有个app 如何把下面的代码放到app.js里。然后再其他文件里调用。简单的说就是期望做个单例模式 var app=angular.module(‘index’,[]) ### 环境配置和组件 MEAN+angular-ui-router+requirejs angular是1.4.6 ### 自己的一些尝试 先说下angularAMD。在github上看见的。觉得应该能实现再记得想法。正在深入看。在这暂且不说。 然后尝试使用了requirejs 封装成了以下代码 js文件 app.js define(function(){ var app=angular.module(‘index’,[]); return app; }) html文件index.html <!DOCTYPE html> <html ng-app=“index”> <head ng-controller=“setTitle”> <title ng-bind=“title”></title> <script type=“text/javascript” src=“javascripts/angular-1.4.6/angular.js”></script> <script type=“text/javascript” src=“angular-ui-router/release/angular-ui-router.js”></script> <ng-include src="’/public.html’"></ng-include> </head> <body>

<header ng-controller=“body”> <h1 ng-bind=“title”></h1> <p>Welcome to <span ng-bind=“title”></span></p> <p ng-bind=“returnStr”></p> </header> <section ng-controller=“changeLocation”> <input class=“btn btn-success” type=“button” value=“login” ng-click=“toLogin()”/> <input class=“btn btn-danger” type=“button” value=“register” ng-click=“toRegister()”/> </section> <section ui-view=""></section> </body> <script src=“requirejs/require.js” data-main=“javascripts/JF_index.js”></script> <!–<script type=“text/javascript”> require.config({ baseUrl:’/public’ }) require(’’); </script>–> <!–<script type=“text/javascript” src=“javascripts/service/commVal.js”></script> <script type=“text/javascript” src=“javascripts/Users/JF_login.js”></script>–>

</html> 然后报错。。 图片.png

Love2.io 一个全新的开源技术文档分享平台

$
0
0

love2.io是一个全新的开源技术文档分享平台,我们致力于提供用户更优雅的阅读和写作体验。技术改变世界,用文档传播。

需要将用户的微信头像拼接成公司logo...求思路...

$
0
0

##如题,将用户的微信头像拼接成公司logo,有一个关键问题…没思路了.

####如果将各个头像的位置写成固定的横纵坐标,适配就变得很难,但如果写成百分比,对图片位置的精细操作也很难。。。求大神给点思路。

What,你想参于一个开源项目却不知道从何开始?

$
0
0

引言

每一个技术人都应该会想给优秀的开源库贡献代码 ! 每一个前端人都应该会想拥用一套属于自己开发的组件库 ! 那么现在有这样的一个机会你能把握住吗?

起源

作为负责社区的小二,经常会在QQ群,社区看见有人提问,现在vue用什么库,什么库好用,什么库最好用? 我只能告诉你,自己写的库才是最好用的库, 所以 Milk的雏形产生了

我们的优势

同类的库太多了? 这是一个不可否认的现实, 我能保证的就是 Milk发布了以后,我们会以更快的速度,更好的服务来回溃用户, 因为我相信社区的力量是强大的

参于后你能得到什么?

我们不能给你金钱,也不能给美女,豪车,你能得到的只是一个更好的自己

如何开始

前期工作
  • fork milk-vue到自己仓库
  • clone 刚刚fork过来的仓库
  • npm i 安装依赖
  • git checkout dev 切换到开发分支
  • npm run dev 启动本地服务
  • 浏览器打开 webpack 提示你的本地端口
认领任务
  • 查看任务
  • 开一个issue,严格按照issue模板进行
  • 认领成功后issue将会被打上进行中例子的标签,反之视为无效的issue将会被关闭
添加组件
  • /docs/src/doc.config.js添加组件的路由配置
  • packages文件夹下添加组件(参考packages/button
  • /style/mixins文件下添加组件的样式表(参考/style/mixins/button) * 注:milk的样式参考于ant.design
  • /style/mixins.lessimport刚刚建立的样式表
组件文档
  • /docs/examples-docs/zh-CN下添加组件文档的.md文件, 参考 /docs/examples-docs/zh-CN/button.md
Pull Request
  • pr统一提到dev分支

最后

感谢所有为Vue中文社区移动端Milk组件库贡献的同志们

讨论qq群 690935127

为什么43%前端开发者想学Vue.js

$
0
0

根据JavaScript 2017前端库状况调查Vue.js是开发者最想学的前端库。我在这里说明一下我为什么认为这也是和你一起通过使用Vue构建一个简单的App应用程序的原因。

我最近曾与Evan You,Chris Fritz,Sarah Drasner,和Adam Jahr做了一个介绍视频,而现在你可以在http://vuejs.org首页找到它。以下是该视频的文字版本。

伟大的JavaScript迁移

如你所知,JavaScript在过去的10年中已经成熟了很多,而且服务器端正常运行的大部分代码已经迁移到浏览器中了。随着这变得越来越复杂,框架也变得越来越有组织性。

为什么43%前端开发者想学Vue.js

我不打算告诉你为什么一个比另一个更好的,虽然在官方网站有一个详细的比较。

Vue.js旨在成为一个平易近人,多功能,高性能,可维护性,可测试的JavaScript框架。Vue的目也是为了进步,意思就是如果你有一个现有的应用程序存在只占一个部分的前端,你需要更多的互动体验那么就可以使用Vue。

或者,您也可以从一开始就在前端构建更多的业务逻辑。Vue的核心库和生态系统需要规模。

为什么43%前端开发者想学Vue.js

像其他的前端框架,Vue可以让你把网页分为可重用的逻辑组件。每一个都有它自己的HTML、CSS和JavaScript来渲染页面的每一部分。

为什么43%前端开发者想学Vue.js

一个示例,说明如何将事物分解成组件

我们的第一个Vue项目

我想让你没见过Vue前让你先找到代码的感觉并告诉你一些语法。我不会深入讨论细节,但是我们会看到一些核心概念。

与许多JavaScript应用程序一样,我们从将数据显示到页面开始。

为什么43%前端开发者想学Vue.js

用Vue开始构建很简单。

为什么43%前端开发者想学Vue.js

你可以看到在上面的图片我们包括Vue库,创建Vue的实例,并插入到我们的根元素通过App的ID。EL代表元素。我们也会将数据移到一个对象中,并将X转换为一个带有双花括号的表达式。

如你所见,它有效:

为什么43%前端开发者想学Vue.js

没什么特别的,但数据开始变化时Vue就像魔术。如果我跳到控制台,改变product的值,看看会发生什么:

为什么43%前端开发者想学Vue.js

VUE是响应式的,即当我们的数据变化,Vue会更新所有在我们的网页使用它的地方。

这与任何类型的数据无关 , 不只是字符串。因此,我们不必使用单一产品,而是使用一系列产品,并将H2更新为无序列表。创建一个新的<li>元素的每一个产品,我们会使用一种特殊的属性(又名指令)Vue称为v-for。这样,每个产品都可以得到自己的列表项。

为什么43%前端开发者想学Vue.js

如果我们跳进浏览器,这就是我们看到的:

为什么43%前端开发者想学Vue.js

这仍然有点人为设计,所以让我们先把列表清空,然后从实际的API中取出我们的产品列表,这些API可能来自某个数据库。

为什么43%前端开发者想学Vue.js

如果我们查看打印到页面的内容,我们将看到:

为什么43%前端开发者想学Vue.js

如您所见,每个列表项都显示返回的对象。为了让这些数据被人类读取,我们需要改变它显示的方式。

为什么43%前端开发者想学Vue.js

我们的结果是:

为什么43%前端开发者想学Vue.js

我们要注意到数量0的物品,让我们添加一个<span,>内容“缺货”。我们只想在我们的item.quantity = = = 0的出现,所以我们将使用Vue的v-if指令。

为什么43%前端开发者想学Vue.js

当然,我们的夹克已经没货了:

为什么43%前端开发者想学Vue.js

如果我们想打印出我们列表中的产品总数呢?我们需要创建一个计算属性称为totalproducts,返回我们的产品总数量。如果您不熟悉JavaScript reduce函数的话,我说明下它将从每个产品中添加所有数量。

为什么43%前端开发者想学Vue.js

正如你可以看到下面,我们现在可以将我们的总库存打印出来。

为什么43%前端开发者想学Vue.js

这会儿也可能告诉你关于使用vue.js的Chrome扩展工具的一个很好的时机。扩展工具的一个很好的特性是,您可以检查加载到页面上的数据。

为什么43%前端开发者想学Vue.js

还有一些Vue的响应,让我们看看在数组中删除2项会发生什么。正如你在下面看到的,不仅是我们的名单更新了,而且我们的总数也是如此。

为什么43%前端开发者想学Vue.js

接下来,我将向您展示如何通过使用按钮来增加对该页面的交互性。我们将为每个产品创建一个添加按钮,当单击此按钮时,我们将增加一个数量。

为什么43%前端开发者想学Vue.js

注意,当我们添加一个项目(下)时,不仅总库存得到更新,而且如果我们增加我们的夹克产品,我们的库存通知就会消失。

为什么43%前端开发者想学Vue.js

但是,如果我们只想写夹克或远足袜的数量呢?我们只需要创建一个新的输入字段,并将其绑定到我们的产品数量通过v-model指向它,并指定这始终是一个number即可。

为什么43%前端开发者想学Vue.js

你会注意到我现在可以输入每个项目的总数量,并立即获得更新。我甚至可以把数量设置为零,我得到了我的库存,我的添加按钮也仍然可以工作。

为什么43%前端开发者想学Vue.js

你可以完成这个版本的项目的后,去JSFiddle运行它,当然也可以去汇智网(www.hubwiz.com)运行它。

Vue的一些特点

如果我们把它构建成一个更大的应用程序,那么我们就要开始把它分解成多个组件和文件,以使程序变得更有条理。

为什么43%前端开发者想学Vue.js

Vue甚至提供一个命令行接口,使简单的开始迅速发展真正的项目。正如您在下面看到的,init命令可以用来启动一个新项目。

为什么43%前端开发者想学Vue.js

我们还可以使用单文件——.Vue 组件文件,其中包含HTML,JavaScript,CSS甚至 SCSS。

为什么43%前端开发者想学Vue.js

你在这里看到的只触及到Vue表面上可以做什么。有很多东西可以帮助你构建、组织和扩展你的前端应用程序。要真正开始编码,我将推荐两种资源。一个是去下载资源手册表到这里:http://www.vuemastery.com/download-1,另外一个是官方文件:https://vuejs.org/v2/guide/。

当然你也可以去试试在线方式的全网性价比最好汇智网的vue.js课程: http://www.hubwiz.com

最后,我要感谢Evan You,Chris Fritz,Sarah Drasner,和帮助我创造这个内容及视频的Adam Jahr。

汇智网,小智翻译。内容有修改。


node修改新生代半空间大小(--max-new-space-size)失败

$
0
0

node版本 v6.9.5 mac 10.13.1 最近在看V8垃圾回收处理,遇到两个问题不是很明白: 首先index.js:

let arr = []
for (let i = 0; i < 100000; i++) {
    arr.push(new Array(100));
}

查看垃圾回收日志: node --trace_gc index.js > gc.log第一个问题是:默认64位1.4G 32位0.7G,新生代内存大小分别是32M,16M(深入浅出nodejs),,但是gc.log里面Scavenge算法显示的内存很大,还是说括号里面的不是指大小?深入浅出书中40M就开始用标记清理算法了。

[21881:0x103000000]        7 ms: Scavenge 2.1 (6.0) -> 2.1 (7.0) MB, 0.6 / 0.0 ms [allocation failure].
[21881:0x103000000]        8 ms: Scavenge 2.1 (7.0) -> 2.1 (8.0) MB, 0.6 / 0.0 ms [allocation failure].
[21881:0x103000000]       42 ms: Scavenge 3.9 (11.0) -> 3.6 (13.0) MB, 0.4 / 0.0 ms [allocation failure].
[21881:0x103000000]       44 ms: Scavenge 5.0 (13.0) -> 4.9 (14.0) MB, 1.8 / 0.0 ms [allocation failure].
[21881:0x103000000]       46 ms: Scavenge 5.6 (14.0) -> 5.6 (19.0) MB, 1.2 / 0.0 ms [allocation failure].
[21881:0x103000000]       50 ms: Scavenge 8.8 (19.0) -> 8.7 (20.0) MB, 2.2 / 0.0 ms [allocation failure].
[21881:0x103000000]       54 ms: Scavenge 9.5 (20.0) -> 9.5 (31.0) MB, 3.1 / 0.0 ms [allocation failure].
[21881:0x103000000]       60 ms: Scavenge 16.6 (31.0) -> 16.5 (32.0) MB, 4.3 / 0.0 ms [allocation failure].
[21881:0x103000000]       67 ms: Scavenge 17.4 (32.0) -> 17.4 (55.0) MB, 6.3 / 0.0 ms [allocation failure].
[21881:0x103000000]       80 ms: Scavenge 32.2 (55.0) -> 32.0 (56.0) MB, 8.2 / 0.0 ms [allocation failure].
[21881:0x103000000]       98 ms: Scavenge 33.1 (56.0) -> 33.1 (70.0) MB, 17.8 / 0.0 ms [allocation failure].
[21881:0x103000000]      107 ms: Scavenge 47.7 (70.0) -> 47.4 (72.0) MB, 6.0 / 0.0 ms [allocation failure].
[21881:0x103000000]      138 ms: Scavenge 48.9 (72.0) -> 48.9 (86.0) MB, 31.4 / 0.0 ms [allocation failure].
[21881:0x103000000]      153 ms: Scavenge 64.0 (86.9) -> 64.0 (88.9) MB, 12.3 / 0.0 ms [allocation failure].
[21881:0x103000000]      170 ms: Scavenge 65.4 (88.9) -> 65.4 (102.9) MB, 17.1 / 0.0 ms [allocation failure].
[21881:0x103000000]      179 ms: Scavenge 79.7 (102.9) -> 79.7 (103.9) MB, 6.7 / 0.0 ms [allocation failure].
[21881:0x103000000]      197 ms: Scavenge 81.1 (103.9) -> 81.1 (118.9) MB, 18.0 / 0.0 ms [allocation failure].

第二个问题: 我想自己设置一下新生代半空间大小,也就是: node --max-new-space-size=1024 index.js提示的是: node: bad option: --max-new-space-size=1024然后我用nodev9.0.0版本试了一下也不行。 如果是版本升级导致这些问题的话,新版的处理算法和分配空间大小可以在哪里查看?

[上海]技术和产品都超酷的 ARKie 招前端 & Node!

$
0
0

ARKie 是一家设计 & 人工智能公司

我们的产品致力于实现“一句话做海报”的诉求,为企业用户和个人用户提供高质量,无上限的智能海报设计服务。

在专注于创新的创业公司如何提升产品研发效率

这里的创新有两方面,一是产品的创新,一是技术的创新。

产品的创新意味着设计与产品逻辑的不断推翻重组,技术的创新意味着工程师需要不断探索新的技术解决方案支撑产品的高速迭代。

因为产品的复杂与多变,我们非常注重工程化与自动化。我们在产品动手开发之前,就会根据产品给出的 DoD预先撰写好针对业务的单元测试,保证功能的正确与健壮。每次提交代码的时候,ci 都会对代码进行静态检查、lint 、与单元测试。 在 code complete 之后,https://github.com/Boshenhttps://github.com/Brooooooklyn会进行全面的 Code Review。进入测试环境之后,产品和测试会根据 DoD 验收所有的功能。

在迭代的过程中,始终会计划一些时间对已经上线的功能做优化与代码重构。而在此期间,自动化工具会永远保证代码风格的一致以及代码结果的行为正确。

我们需要你

在技术上,我们还有太多需要探索、设计、实现的工程难点,所以我们需要你来和我们一起创造更多可能:

前端工程师

senior/junior/intern

职位描述:

遵循 BDD 进行 www.arkie.cn的功能开发:

  • 与团队成员(包括产品,设计和后端)一起参与功能的设计和制定
  • 在产品团队和测试团队的帮助下撰写功能的行为文档
  • 按照功能的行为文档撰写单元测试
  • 在单元测试的约束下完成功能迭代,通过产品和测试团队的验收
  • 对代码进行维护,重构,升级

技术栈

TypeScript RxJS React redux-observable

基本要求:

  • 扎实的计算机基础,掌握基本的数据结构、算法、网络以及操作系统知识
  • 精通任意一门编程语言,如 JavaScript,Java,C++,C# 等
  • 对制作精美的视觉与交互效果充满激情
  • 了解软件工程,知道工程化的价值和意义并愿意遵循、推动项目的工程化发展

加分项:

  • 熟悉 TypeScript 或 RxJS,能写出正确的 TypeScript 类型,或能正确的使用 RxJS 的 operator
  • GitHub 活跃用户或在 Github 上有 star > 100 的开源项目或在 Github 上给知名开源项目贡献过代码
  • 在 CS 的某一个领域有过人的成就,比如获得过 ACM 奖牌、在 codewars.com上有很高的排名、徒手撸过编译器等

NodeJS 工程师

senior/junior/intern

职位描述:

  • 负责 www.arkie.cn的后端业务开发
  • 能分析,拆解需求,选择良好的解决方案
  • 与其他服务的开发人员、前端完成功能开发
  • 对现有的项目进行维护,重构,升级

基本要求:

  • 熟练使用 JavaScript (ES2017 +) / TypeScript
  • 有良好的编码习惯,有大量使用 lint 和 CI 工具的经验
  • 熟悉单元测试及其相关的工具,知道如何编写单元测试与 REST API 的集成测试
  • 对常用 Web 框架如 Express/Koa 有实战经验
  • 熟悉 NodeJS 的 events/stream/net 等内部模块
  • 能熟练操作一种常见的数据库,如 MongoDB

加分项:

  • GitHub 活跃用户或在 Github 上有 star > 100 的开源项目或在 Github 上给知名开源项目贡献过代码
  • 熟悉一种或多种其它的后端生态,如 Spring 、 Laravel、Ruby on Rails、Django 等
  • 有 NodeJS C++ addon 、neon-binding 等其它高性能语言的 Nodejs binding 有实战经验
  • 对计算机图形学有深入研究

我们目前提供:

  • MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports) 16GB RAM + Dell 4K 显示器
  • 默认不加班,加班的话可以调休,1:1 换
  • 2018 年开始有一定数额的租房补贴
  • 其它互联网公司标配福利无限零食水果饮料就不详述了

工作地点在:成都南路 142 弄 6 号

简历发送至: yinan.long@arkie.cn ( 注明 cnode )

或者微信: lynweklm

egg-mysql 支持嵌套查询吗

$
0
0

UPDATE member SET is_agent = 1 WHERE id IN(SELECT id FROM member LIMIT 0,1000);

类似这种,在egg-mysql中应该如何实现 IN操作

不想直接用sql语句query,没看到文档有些相应的操作。

nodejs爬虫如何取出iframe中的数据

$
0
0

如题,在使用superagent模拟登录时,登录成功后,新页面在当前页面的iframe中展示,请问如何取出 Snipaste_2017-12-30_18-23-40.png

关于爬虫的若干疑问

$
0
0

关于爬虫的若干问题

最近想利用爬虫去获取较为大量的数据,但是在爬的过程中遇到了若干问题,所以来和各位大神讨教一下,如能解答,感激不尽。 1. 对于网页链接数量较多的时候,用什么方式去爬能提升效率? 我现在是将所有的子页链接存到一个数组里面,在对数组链接map操作,然后去获取每一页的数据。但是我现在所爬到的子页链接有上万个,爬取这些链接需要很长的时间,获取链接之后的请求页面获取数据也要很久的时间。所以我想知道,有没有更好的方式能够提高爬虫的效率的。 2. 获取数据和存储数据应该怎么处理 我在请求子页面获取数据之后,会将数据存储到mongodb里面,但是事实证明,这种写法让我的爬虫存储效率低下,而且经常出现堆栈溢出的情况。所以我想了解一下大神们获取到数据之后是怎么存储数据的,我听过读写分离,但是不知道这具体是怎样的一个概念,有大神讲解下么~ 3. 对于爬到错误数据的处理 有些时候,所爬到页面的数据,是不符合存储标准的,但是我不知道这部分的数据是应该放过,还是重新请求页面重新获取一次。我现在是如果请求到的数据不合格,就会换个ip重新请求页面,知道数据符合为止。但是这样很有可能造成死循环,所以想知道大神们对这种状况的处理方式。 4. 用mongo存储数据的问题 从昨晚到今天,总共有将近7w个子链接,但是我的mongodb里只多了5k条数据。所以我想了解一下,关于mongodb,有没有什么可参考数据之类的,可以让我了解一下它的真实性能。顺便如果有大神肯分享一些mongo使用技巧和心得的话,那就更感谢了。。。 小菜鸟新入门,如果有犯低级错误的地方,欢迎各位大神指正。

Viewing all 14821 articles
Browse latest View live