PowerShell 添加历史记录自动补全,上下键切换

打开管理员权限的 PowerShell
安装 PSReadLine

Install-Module -Name PSReadLine -AllowClobber -Force
PowerShell

然后退出,再打开管理员权限的 PowerShell
开启自动补全

Set-PSReadLineOption -PredictionSource History
PowerShell

再打开一个普通的 PowerShell 试下就发现可以自动补全了
默认向上搜索历史记录的按键是 f8
太不方便了,需要给 PowerShell profile 设置按键绑定
这个文件就类似 .bashrc/.zshrc 启动命令行时自动运行的

notepad $PROFILE.CurrentUserAllHosts
PowerShell

应该是不存在这个文件,选择是创建就行

Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
PowerShell

保存后,再打开一个新的 PowerShell 就都正常了

参考
about_PSReadLine
about_Profiles

asin 2 ean final solution

通过一个asin找到对应的ean,然后用ean在亚马逊还能找到对应的asin,太不容易了。。。
Find ean by a asin, then use this ean can searched out the right asin.

有个神奇的比价网站 https://camelcamelcamel.com/ 粘贴亚马逊链接或者asin,关键词,找出商品。神奇的地方来了,它会给出ean //ps: 拿着这个ean去亚马逊是搜不出来的,因为少了校验位
There is a amazing website https://camelcamelcamel.com/ paste asin, amazon links or keywords to find product. It’s will show the ean. //ps this ean can’t search in amazon, it’s missing valid bits

camelcamelcamel

这个校验位的算法,网上都有,这里给个在线计算的 https://eancheck.com/ 支持批量计算,毕竟只是简单的计算。。。
https://eancheck.com/ can calcate valid bit, and support batch calucate.

eancheck

我们拿着计算出的ean,就可以回到亚马逊去搜了,查看搜到的ean和前面的是一样的
We can use that ean to search in amazon.

amazon-de

在服务器上装个sourcegraph看代码

先介绍下 sourcegraph
Sourcegraph is a web-based code search and navigation tool for dev teams.
用于团队开发,基于网页的代码搜索,导航工具

Code search: fast, cross-repository, on any commit/branch (no indexing delay), with support for regexps, diffs, and filters
快速 跨仓库 任意提交/分支(没有索引延迟) 支持正则表达式,比较,过滤

Code navigation: go-to-definition and find-references for all major languages
所有主流语言支持:转到定义 查找引用

Deep integrations with GitHub, GitHub Enterprise, GitLab, Bitbucket Server, Phabricator, etc., plus a powerful extension API
深度集成巴拉巴拉

Open-source, self-hosted, and free (Enterprise upgrade available)
开源,可以自己搭建,免费,也可以升级企业版

最后一点就值得去装。

当然官网也是支持使用他们的服务,免费的。
自己搭建,需要服务器装有docker, 可用内存最低差不多1g,能跑起来的情况下。。。

docker run -d –publish 127.0.0.1:8880:7080 –publish 127.0.0.1:8443:7443 –publish 8633:2633 –name sg –restart unless-stopped –volume /root/sourcegraph/config:/etc/sourcegraph –volume /root/sourcegraph/data:/var/opt/sourcegraph sourcegraph/server:3.2.2
解释下上面的第一个 publish 参数:将主机的127.0.0.1:8880绑定到容器内的7080 http访问,因为再往上一层要用nginx代理访问容器,所以绑定到本地就行了
第二个 publish 参数:参考上一条。。https访问 这个端口其实用不到。。。
第三个 publish 参数:将主机的8633绑定到容器的2633 进管理控制台需要用到,而且还稍微有点麻烦。。。
两个目录,一个是配置,一个是数据
配置指容器内nginx等的配置
数据是裸代码仓库
截止2019-04-14时最新稳定版本是3.2.2

跑起来之后就是nginx配置代理了

    location / {
        proxy_pass http://127.0.0.1:8880;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
    }

自己再加上https证书就更完美了

然后我们就访问它,第一次访问好像是注册管理员
然后登录进去进行设置代码仓

{
  "url": "https://github.com",
  "token": "token",
  "repos": [
    "directus/directus",
    "WordPress/WordPress",
    "woocommerce/woocommerce"
  ]
}

仓库直接在里面加就行,记得再回到列表页enable那个仓库

如果是自建的git服务,url可以使用 https://name:pwd@host/

禁止注册就需要进入管理控制台了,强制https。。。可以禁用https,我是直接用vpn组网,然后直接访问的内网,简单粗暴

{
  // ...,
  "auth.providers": [{ "type": "builtin", "allowSignup": true }]
}

禁用内置认证注册之后可以开启 github 认证等,也可以管理员直接在后台添加用户

嗯,界面语言,没折腾过,不清楚有没有中文界面,不过主要就是和代码打交道,界面啥语言也无所谓了
看代码神器,sourceinsight可以被换掉了。。。

折腾nginx + varnish + apache2 https整站小记

原来的配置是varnish + apache2, varnish直接监听80, http传给88的apache2,或者击中缓存,  https不走缓存直接给apache2. http+https很不爽…所以折腾整站https

现在

nginx:80,443

varnish:8888

apache2:8080

下面贴配置

server {
    listen 80;
    server_tokens off; #隐藏响应头中的nginx版本

    root /var/www/www/blog/public_html;

    index index.php index.html index.htm index.nginx-debian.html;

    server_name xn--vkuk.org;

    return 301 https://xn--vkuk.org$request_uri; #强制http请求跳转到https
}

server {
    server_tokens off;
    server_name xn--vkuk.org;
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/xn--vkuk.org/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/xn--vkuk.org/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


    location / {
        proxy_pass http://127.0.0.1:8888; #varnish监听的地址
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

backend blog {
    .host = "127.0.0.1";
    .port = "8081";
}

sub vcl_recv {
    if(req.http.host ~ "osteam.win"){
       set req.http.host = "osteam.win";
       set req.backend_hint = default;
    }
    if(req.http.host ~ "xn--vkuk.org"){
       set req.http.host = "xn--vkuk.org";
       set req.backend_hint = blog;
    }

    //set req.http.X-Forwarded-For = client.ip; //把nginx获取的用户ip传给后端
    //https://stackoverflow.com/questions/25558749/varnish-automagically-adding-load-balancer-ip-to-x-forwarded-for-header apache2能读取到ip了,但是后端程序还是还是需要调试下...挖个坑待填
}
#你以为这样两个站点就分开了么? 实际测试重启varnish服务后, 先访问哪个站点,哪个被缓存,再换域名访问,看到的是刚缓存的那个主页... 很崩溃
sub vcl_hash {
  hash_data(req.url); #先校验url
  if(req.http.host){ #如果有host头,就校验host
    hash_data(req.http.host);
  }
  return (lookup);
}
#当然,这个只是部分配置
#原来的配置是参考
#https://leonax.net/p/8243/staticalize-wordpress-via-varnish/
#注意,不同的varnish版本, vcl的语法不同...

接下来,就是apache2了… 这个有坑…原先的配置有监听443,然而忘记了.. 搞得nginx半天起不来…

ServerName 191.101.152.69 #如果启动apache2服务有报apache2不知道servername, 可以设置这个, ip是你的ip, localhost应该也可以
#再001-blog中修改并不会监听8081, ss -l 也没有8081 curl localhost:8081 -v 也是拒绝访问,必须在下面加
NameVirtualHost 127.0.0.1:8080
NameVirtualHost 127.0.0.1:8081
Listen 127.0.0.1:8080
Listen 127.0.0.1:8081
#
#    Listen 443
#
#有关443的全部注释

apache2的站点配置只需要把原来的443的全部删掉就行了
varnish 4.1
apache2 2.2.22
nginx 随意…配置文件语法好像没怎么变过, 还有就是为了安全…万一哪天我这个版本被曝漏洞,凑巧我还没打补丁,再凑巧因为这个被肉鸡了可不好?

嗯, wordpress 最好提前装上个

SSL 不安全内容修复器


因为,改了siteurl homeurl 好像并没有起作用, 主题里的静态文件依然是http, 原来http+https的时候, https好好的… 不知道什么鬼
以为是nginx没有正确的把请求头传给后端, 一顿折腾,有了上面那个配置,依然不行…装上这个, 再好好设置, 然后重启varnish服务,好了…
不知道遇到什么鬼,就重启varnish…缓存太强了….
附一个varnish 4.1 的中文文档
https://jefferywang.gitbooks.io/varnish_4_1_doc_zh/

交谈能力 笔记

如何成为一个更好的交谈者 by Celeste Headlee
不冒犯任何人
1.不要三心二意
处在当下,融入到当前的情景中去
2.不要好为人师
比尔奈伊说“每一个你讲要见到的人都有你不知道的东西”
3.使用开放式问题
多使用“ 谁 什么 何时 何地 为什么 如何”
当你用复杂的问题提问,你得到的只会是是简单的回答。

bad  你害怕么? 是的/不是
good 那是什么样子? 那是………… 

4. 顺其自然
想法会自然到你的头脑里去,而你需要将它们表达出来。
想法会不断的涌现,即便无法阻止,也不要让它们过多的在头脑中逗留。
5.如果你不知道,就说你不知道
谨言慎行,你说的每一句话都是有重量的。
6.不要把自己的经历和他人比较
任何经历都是独一无二的。即使经历类似,但感受是绝逼不一样的。
7.尽量别重复自己的话
8.少说废话
9.认真倾听
佛说“如果你嘴不停,你就学不到东西”
卡尔文 柯立芝曾说“从没有人是因为听太多而被开除的”
你要做的只是听。虽然认真听很耗费精力,但是这是保持交谈最重要的一点。
史蒂芬 柯维说“我们大多数人都不是为了理解而倾听。我们为了回应而听。”
10.简明扼要
A Good conversation is like a miniskirt; short enough to retain interest, but long enough to cover the subject.
“好的交谈就像恰到好处的迷你裙:足够短,能够吸引人。又足够长,能够盖住主体” –讲者的姐妹

对他人产生兴趣。每个人都有不为人知的精彩,开放自己的思想,永远准备着大吃一惊。
Be prepared to be amazed

以上仅仅算是笔记。TED演讲:网易公开课