tensorflow

tensorflow学习笔记

来源教程 机器学习100天 官网 中文社区 google机器学习速成教程 基础 有编程基础 有一定数学概念 目标 使用tensorflow进行回归预测和协同过滤推荐。 学习路径 看完机器学习100天的函数部分,学习一些基本概念和常用方法 线性回归、最佳拟合线、多元线性回归 逻辑回归、S函数 K-NN SVM 决策树及算法 随机森林 K-均值聚类 层次聚类 看完google机器学习速成教程 了解机器学习的基本概念及术语:标签、特征、模型 优化函数、损失函数、梯度下降、学习速率、

  • 馬鹿人生
3 min read
formula

从零开始撸一个可扩展函数的数学公式解析轮子(第2部分)

前文请查看:从零开始撸一个可扩展函数的数学公式解析轮子(第1部分) 3. 实现语法树转换 在令牌流的实现中我们讨论了对公式的基本验证,但是对于复杂逻辑的验证,光令牌流则并不能满足需求。比如,我们想要验证多层函数在令牌流层面上实现就很不舒服。所以我们还需要在这之上进行语法树解析。 3.1. 实现原理 首先由于我们需求并不需要实现平衡树,所以只需要实现一个多叉树即可。下面举几个从令牌流解析成树形结构栗子: 比如公式:a+b*30-abs(a-b, c, count(d)) 转换为令牌流为(以|分割令牌字符): a|+|b|*|30|-|abs(

  • 馬鹿人生
4 min read
formula

从零开始撸一个可扩展函数的数学公式解析轮子(第1部分)

0. 前言 在某一天业务方需要做一个可通过自定义函数录入的功能来帮助自己动态配置一些数值的计算,而面临的问题是只有java开源程序能够进行公式的动态配置和计算。作为一个强迫症患者,npm上现有的包并不能满足需求,于是就踏上了从零开始撸公式解析器的道路。 友情提示:查看源码请拉到最后 1. 分析 我们的公式解析器需要能够对语法进行验证,保证公式输入的内容是符合语法且可以任意分拆操作的。同时,还需要对自定义的函数参数进行验参。于是我们把整个解析划分成了两部分。 令牌流解析:把公式解析成顺序的令牌 语法树解析:把解析完成的令牌流转化成语法树内容 2. 实现令牌流的思路 由于令牌流中并不考虑公式的执行问题,所以只需从左至右对一个公式字符串使用正则进行解析,并把相同的内容合并生成一个令牌。 2.1. 带变量的简单四则运算解析 如10+a我们可以分拆为10,+,a 3个令牌。 我们会把每个令牌形成一个如下内容的对象:

  • 馬鹿人生
4 min read
nodejs

node常用跨平台库介绍

最近在写关于node的跨平台服务,介绍一下几个常用的跨平台库: fs-extra git地址 npm地址 fs-extra是一个针对fsAPI的扩展,弥补fs中的一些不足. 你可以同时使用fs和fs-extra: const fs = require('fs') const fse = require('fs-extra') fs-extra提供同步和异步两种API来使用. shelljs git地址 npm地址 shelljs是一款跨平台的脚本命令库,通过shelljs我们可以很方便的使用跨平台脚本命令. 除开常用的cd,rm,grep等命令以外,我们还可以使用exec命令来呼叫外部命令,如 const shell = require('shelljs'); if (shell.

  • 馬鹿人生
1 min read
nodejs

node cli开发介绍

最近在写项目生成工具butter-cli,把vue-cli源码看了一遍,总结一下使用node做cli开发的一些点. 1.package定义 相比普通的npm项目,在package中我们需要增加bin属性以及preferGlobal属性. bin:可以指定一个或多个shell文件,node会在-g安装后自动在node目录生成对应系统的运行文件.详见package.json preferGlobal:可以指定使用命令行运行,如果本地安装时会提示警告.详见package.json 2.使用commander定义cli命令 我们使用commander来定义cli命令的参数,见butter-cli.js #!/usr/bin/env node 'use strict'; const program = require('commander'); const

  • 馬鹿人生
2 min read
mongodb

mongo-org-shell操作

在使用node过程中,我们经常会使用mongoose进行对mongodb的操作.但某些时候(比如删除索引,清库等操作)我们需要手工连接mongodb进行操作,这个时候,我们就需要使用mongo-org-shell来进行对mongodb的手工操作. 注:为了安全起见,建议编写shell脚本执行对应操作. 本文中将在ubuntu 14.04中安装3.4为例进行讲解 1.安装 通常,我们安装mongodb(mongodb-org)时会自动安装以下几个包: mongodb-org-server Contains the mongod daemon and associated configuration and init scripts. mongodb-org-mongos

  • 馬鹿人生
2 min read
nodejs

使用promise创建分页执行任务

在实际应用中,我们总会遇到以下类似的情况: 在构建爬虫时,需要对当前页面下的所有分页爬取结果页,并在结果页爬取相关数据. 在发送结果数据时,需要按一个固定的队列数量,分次发送数据. 在执行数据库操作时,需要固定数量插入. 这种分页型任务在很多应用中都需要自己实现.下面,本文将讨论具体的实现方法: 在之前的文章中,我们使用promise的传递特性来实现中间件部分的功能.今天,我们将使用promise的特性用一个简单的函数来实现上文需要的分页任务方法. 实现思路 在promise语法中,我们拥有Promise.all方法,通过Promise.all,我们可以让一串任务(数组)同时执行,并在所有任务执行完成后返回任务顺序相同的结果数组,如下所示: let promiseList=[new Promise(function(

  • 馬鹿人生
4 min read
promise

Orc开发日志01-使用Promise实现中间件

在Orc Engine开发过程中,需要用到中间件系统(middleware).目的是帮助输入数据按中间件进行流式处理并最终输出处理结果. 实现目的 在预想中,我们通过载入一个中间件函数列表,每个函数包含输入数据及下一步的呼出内容. [function(input,next){ //do something. & call next(err,output) }] 最终,通过读取中间件函数最后一次执行的输入数据,就可以完成一个数据在中间件内部的流式处理. 实现方法 由于es6中Promise本身就可以处理类似的问题,所以我们使用Promise来连接函数和函数之间的处理. /** * Create middleware promise list * @param {Object} taskInputData Task

  • 馬鹿人生
1 min read
nodejs

利用pako更快地传输文件

1. 介绍 1.1. pako介绍 pako是一个javascript编码的zlib高速压缩库,支持浏览器和nodejs. 你可以使用npm npm install pako 或者bower来进行安装 bower install pako 1.2. pako-demo pako-demo使用pako来在浏览器端进行文件压缩,并在服务端解压存储文件,用以节省网络传输流量. 2. 实现说明 2.1. 浏览器端 pako提供浏览器库帮助在浏览器中对文件进行压缩/解压,compressFile步骤如下: 使用readAsDataURL获取文件base64数据并压缩. 发送压缩后数据及文件名到服务端 接收发送结果 还可以通过FileReader其他接口实现

  • 馬鹿人生
2 min read
godaddy

godaddy域名解析DNS问题

面临问题 当使用godaddy域名时,在国内可能会遇到ping不同的情况.我们需要重设DNS来解决该问题. 解决方案 确定DNS解析情况 打开开始菜单->找到cmd.exe->输入ping www.acgo.club 如果没有响应,则是DNS解析问题 设置DNS服务器 打开控制面板\网络和 Internet\网络连接 右键本地连接->属性 双击Internet协议版本4(TCP/IPv4) 在DNS栏选择使用下面的DNS服务器地址 可以在下面4个地址中选择2个填入并确定保存. 阿里公用DNS 223.5.

  • 馬鹿人生
1 min read
electron

react-electron-web-view源码分析

1. 介绍 1.1. 源码地址 react-electron-web-view 1.2. 核心文件 常数 webview组件 2. 实现原理 由于react不支持webview标签,所以我们需要在react标签生成后动态插入webview标签. 要实现electron webview标签我们需要分别实现以下三部分内容在react组件中的绑定: props:属性,帮助我们定义webview的属性 methods:挂载在this对象上的方法,帮助我们使用ref来呼叫webview方法 events:挂载在this对象上的事件,用于监听webview事件 2.1. 常数文件 在常数文件中,枚举了上节所说的三部分内容: events:事件枚举

  • 馬鹿人生
3 min read
less

Flex less实现移动端flex兼容

flex作为新的布局样式,在移动端的兼容性还不够好.所以根据网上的经验,合并了一个less的函数,方便引入使用.关于flex了解更多可访问Flex - MDN. 你可以到github直接fork一个less文件.flex-less - github 你也可以直接复制下方代码 /** * flex布局 * @param {string} @flex-direction:column 主轴的方向 * row:主轴为水平方向,起点在左端。 * row-reverse:主轴为水平方向,起点在右端。 * column:主轴为垂直方向,起点在上沿。 * column-reverse:主轴为垂直方向,起点在下沿。 * @param {string}

  • 馬鹿人生
3 min read
linux

Let'S Encrypt添加与维护

1. 前言 现在https的网站已经逐渐成为主流,而申请一个SSL证书也从只有数百上千一年的提供商,变为了多样化的提供商.Let'S Encrypt就是其中比较出名的一家. Let'S Encrypt的赞助商内包含mozilla、chrome、facebook等众多的知名互联网企业,并且提供简便的申请、续期步骤,可以算是目前最佳的免费SSL证书选择点这里可以到官网了解更多. 注:阿里云等部分国内空间商可能不能使用Let'S Encrypt 2. Certbot Certbot是电子前哨基金会(EFF)为Let's Encrypt推出的自动部署客户端.通过Certbot,你可以自动部署 Let's Encrypt证书,以便为网站加上HTTPS支持.进入Certbot官网了解更多. 2.1 安装 使用git下载Certbot源码.

  • 馬鹿人生
3 min read
linux

ubuntu环境基础安全性配置

面临问题 当我们在使用ubuntu作为个人生产环境时,将会遇到各种攻击.因而有必要做一些基础的安全性配置. 常规配置 修改ssh端口号 ssh默认端口会经常被作为扫描和攻击的对象,如果没有很好的应对,会引发密码暴力破解. 使用sudo vim /etc/ssh/sshd_config进入ssh配置文件 找到 Port 22 一段,变更为你希望的端口号 保存后执行 sudo service ssh restart 或 sudo /etc/init.d/ssh restart重启ssh 配合IDC防火墙,

  • 馬鹿人生
1 min read
electron

electron外部插件打包

相关问题 electron Pepper Flash Plugin不能执行. 面临问题 当需要在electron中引入外部插件(如Pepper Flash Plugin)时,打包生成.asar文件后会导致程序不能引用外部插件,从而不能执行插件对应功能. 解决方案 我们需要在打包asar文件时配置unpack选项,在打包时不打包插件目录.下面将以electron-packager为例,说明具体配置. 配置electron-packager 我们需要在electron-packager配置文件中新增asar配置: asar:{ unpackDir:'plugins' } unpackDir定义了我们无需打包的目录,下面是官方提供的几种常见配置: asar.unpackDir = 'sub_dir' 会不打包 /<dir&

  • 馬鹿人生
2 min read