Javascript 函数参数的一种有趣写法

最近,我见到下面这样的Javascript函数写法:

function hello({name, title}){
  console.log(`Welcome the ${title} ${name}`)
}

// call it.
const param = { name: 'Jack', title: 'Developer', company: 'LabX'}
hello(param);

上面这种函数定义方式,相当于

function hello(params){
const {name, title} = params
//...
}

这样看起来就更容易理解了。

Continue Reading

Upgrade npm in Ubuntu

在Ubuntu上安装 npm时,版本很低。

sudo apt install npm
npm --version
3.5.2

这样的版本,对很多新的应用而言,太低了。例如,当我使用 create-react-app这个应用时,就提示我说,我的npm版本太低了,建议我升级到 npm 5以上。

通过 apt 不能升级。但通过npm能。

sudo npm install -g npm

这样实际上会导致系统中存在两个npm。一个是通过 apt 安装的,在 /usr/bin/npm;另一个是 通过npm安装的,在 /usr/local/bin/npm。由于在PATH变量中,/usr/local …

Continue Reading

wordpress中使用 htaccess要注意的几点

在Apache2中, 可以使用htaccess 给一个特定目录下的路径提供特定的配置.  wordpress中把rewrite 规则写入到htaccess中的来实现permanent links.

Apache2中的htaccess默认是没有激活的. 对于一个Directory, 我们需要提供 AllowOverride All来激活htaccess.

``` {.EnlighterJSRAW data-enlighter-language="null"} AllowOverride All

Other options.

wordpress后台管理在设置permalink时, 需要具有写 .htaccess文件的权限. 我们可以把wordpress目录的所有者改为apache2进程的用户.

``` {.EnlighterJSRAW data-enlighter-language="null"}
$ sudo chown www-data /var/www/wordpress/
$ cat /var/www/wordpress/.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index …

Continue Reading

React and Redux

React for view. Redux for State. Integration React with Redux 1. map Redux actions to React event handlers as React props. 2. map Redux state to React props for rendering only. 3. When a user interacts with React UI, the handlers can 'dispatch' actions to Redux. 4. The Redux Reducers …

Continue Reading

web app manifest

Web app manifest 是一种 Web 应用的说明文件,能让 Web 应用像本地应用一样地被添加到用户设备的桌面,便于用户查找和启动。它是一种早期标准,目前只在一部分的安卓手机上支持。

Web app manifest 是一个json格式的文件,在 html head 部分引用。

<html>
  <head>
    <link rel="manifest" href="/manifest.json">
    ...
  </head>
</html>

manifest.json 主要包括了应用的名字,图标,背景颜色等信息。具体的说明可以参考 Web Manifest

Continue Reading

Selenium 执行自定义的脚本来模拟界面操作

Selenium 的 WebDriver 接口很简单,主要是查找定位 WebElement,而 WebElement 接口也很简单,主要是进一步定位子元素,以及输入、点击、读取各类属性等。那么更多的操作呢?比如鼠标的滑动,元素的拖动等等?WebDriver 上的执行脚本的方法是适应各种各样的入口。通过该方法来执行 JavaScript 代码来直接调用DOM API执行各种操作。

页面下拉加载更多内容

driver.execute_script('window.scrollBy(deltaX, deltaY)')
driver.execute_script('window.scrollTo(x, y)')

frame中的条款文档下拉到底表示已经阅读

driver.execute_script('window.frames[0].scrollBy(deltaX, deltaY)')

Continue Reading

Selenium 等待页面内的脚本执行完

最近几天使用 Selenium 做浏览器自动化时,遇到了一个由脚本等待引起的问题。这个页面展示了一个类似于“请阅读条款”的内容,而且会等待一段时间点击确认按钮才会跳转到下一个页面,如果等待的时间不够,点击确认按钮后会再次显示这个页面。这里不提这个页面功能的设计是否合理,针对该页面的情况,我们该如何处理?在Selenium中打开该页面以后,代码应该等待一段时间,然后再去点击按钮。该“等待”不是查找页面元素时的超时等待 (WebDriverWait),而是在代码中sleep一段时间。

import time

time.sleep(60)
button_element = WebDriverWait(driver, 20).until(lambda the_driver: the_driver.find_element((By.NAME, 'button-name')))

代码很简单,正确处理这个问题的关键在于要充分理解页面的功能。

Continue Reading

Bootstrap v3 网格系统 学习笔记

Bootstrap v3 的网格系统是响应式(适应式)的,能方便地根据屏幕大小进行调整

Continue Reading

https的相关知识

先不管https的细节,先给网站加上https

如何给网站加上https

现在给网站加https非常简单、而且还免费。

公益组织 Lets Encrypt和Certbot提供了很简单的工具来将网站转为https的。

Let's Encrypt的地址是, https://letsencrypt.org/getting-started/ Certbot 的地址是, https://certbot.eff.org/, 我的博客网站 027yunwei.com 是运行 在ubuntu apache上,通过 https://certbot.eff.org/#ubuntutrusty-apache 可以 看到非常简单的说明。

cerbot装好以后,还应该加一个cron job,每个月去试着renew证书,certbot renew 命令 会更新快要到期的证书。

Qualys 提供了一个免费的网站 https 检测工具,比如 https://www.ssllabs …

Continue Reading