2020-03-31 11:50:24

这世上的女人大概有很多种,但是我却对 Constance Seppala (From - Togo by Julianne Nicholson )这种情有独钟。

2020-3-27 19:55:48

人在家中坐,烦心的事儿从远方来,更要命的是这种事情无解。我就想平平静静的生活,做我自己喜欢的事情,真的就那么难吗?


2020-03-27 0:51

或许有人出生自带光环,然而大部分人起点都差不多。而你所不知道的是,行业知名大佬每晚学习到深夜总结提炼升华;过目不忘的人实际上有个日记本笔,事无巨细,无一所落;光鲜亮丽的职场小姐姐背后是无止境的加班,对客户堆笑和掉头发。每份工作都差不多,每个人都不容易。而我说的每一个惨字,都是感同身受,因为我和你是一样的人,我们过的是一样的生活。


2020-03-24 12:34:33

Sufferring makes great nation a uion and reveal the true nature of culture and belief, as well as catastrophe lacerat people's trust and corrupt souls of illed country.

一直以来,我们从小时候就接受的是唯物主义的哲学世界观,任何探究灵魂和自然之外的想法都会被身边的人钉在封建迷信的耻辱柱上,俨然唯物论点不可辩驳,绝对正确,任何有这种想法的怀疑权威的人都是我们的敌人,甚至我们必须从肉体上消灭这类敌人。假如有人说一切都是虚幻,万物皆你一人心之所化,你大概会想这人估计有病。又或者说万物皆一主所化,这大概也背离了当代中国人无神论的主流价值观,有这种想法的人大概也是脑子有问题。可是事实真的是这样吗?

相对论定义了宏观世界的运行规律,行星在恒星引力的作用下围绕恒星做圆周运动,多个行星公转则构成多个圆周轨道,而这种显而易见的运行规则告诉我们实际上星系成员彼此运行在一个由引力聚合而相互作用的平面上。而行星在这个引力平面上的下沉程度,影响这个行星的公转速度。引力的作用实际上可以抽象为一个二维平面。星系是这样,放大到宇宙也大概如此。又或者说,在地球上,根据一张包含光线信息的照片和当地大概时间,实际上可以计算出照片主体所在的大概位置,即经纬度信息。因此只要有了时间和二维平面的信息,是可以计算三维世界物体的相对空间位置。宇宙全息理论和弦理论告诉我们二维平面可以完全表达三维立体空间,除了上面的例子,我的理解是如果二维平面的信息和细节足够丰富,透过二维平面内元素排列、深浅(原子分布信息),是可以投影出一个甚至多个三维空间的。这也就是为什么可以用CAD平面图,来构建完整的3D模型的原因。那么如果我们生活的世界本质上是一个二维平面的三维投影,而这个本质也符合相对论对宏观宇宙的解释,那么是谁创造了这个二维平面呢?是否还有一个超脱于这个二维平面之外的另一个存在?这是一个有意思的问题。人们会将这个特定存在实体化具象化为神,这大概是人们对于这个问题的一种解答方式。中国自古以来就有“天道恢恢”的说法,我也认为我们身处的这个世界的运行规则早已经由更高级的实体确定了,而我们所创造的自然科学、哲学、神学等都是对这个规则从某一个角度的解释。至于这个规则到底是什么,创造这个规则的实体最终目的是什么,而这个实体又是什么样的,我本庸才,自然是想不通的。

2020的疫情并不让我意外,让我意外的这种确定性最终选择了瘟疫作为呈现方式而影响了千家万户。在家避疫之余,除了看书,思考这些毫无边际的问题,做些好玩的技术测试之外,剩下的就是看直播了。看直播除了看个好玩之外,我也在思考直播为代表的自媒体这种文化现象其背后所衍生的内涵。互联网基础设施的不断升级换代,催生了自媒体行业由不务正业的代名词,继而蓬勃发展到现在的时尚行业,成了社会各阶层人士消遣时间时快乐或者悲伤的源泉,也大有取代传统媒体的趋势。除了互联网基础设施的进步,我认为更重要的一个原因是新生代的推动。90后和00后作为时代的潮人,他们有着独特的认知模型、表现方式和价值体系,而新生代的这种独特个性和群体共性,在他们之后的下一代身上则会有更明显的表现,这种趋势正在积蓄力量并将最终打破以往教育所侧重对集体认同感的培养,对个性的抹杀,对思维的禁锢和对自我表达的漠视。照着这样的趋势发展下去,人的定义权终将回归到个人。而有意思的是,他们也是带动了老一代80后、70后甚至爷爷奶奶一辈加入了直播和自媒体的大军。群体的不断壮大,多种社会成分的不断融入,自媒体文化俨然成为了一种新的社会力量。这种力量正在潜移默化的影响着这个时代的最终走向。我不知该如何定义这种趋势和变化,因此暂且叫他灵性的觉醒。

现阶段的自媒体市场已经从原本的粗放爆炸式增长回归理性的区间,市场渐渐静下来了,这种变化本身反映的是饥渴的市场已经逐渐趋于饱和,开始沉淀清洗,而这种清洗是一种去伪存真回归价值的过程。以官宣为代表的某信和某博纵然可以继续传播谎言愚弄大众成为洗地的先锋军,以卖肉和搞笑为代表的某音也可以继续撒播娱乐的鸦片,而当人们一旦失去了对平台的信任和腻味了单调乏味的空虚内容,流量就再也回不来了。其兴也勃焉,其亡也乎焉。而对直播来说,obs stream一旦推上去了,观众所看到的就是一场即兴表演,很多时候,主播只能凭借自己的个性特长来满足自己的表现欲亦或满足观众老爷的观赏需求,一切都没有那么容易作假了。当然,直播卖肉、带货和唱见舞见对我来说,虽然我完全没有兴趣,且我也不爱看,但我誓死捍卫这类UP直播的权利。直播间生态则是另一个有意思的地方,弹幕即战场,形形色色无奇不有,一个小小的直播间就是一个社会的缩影。有唇枪舌箭你来我往艹爹骂娘继而到定好时间地点约起线下父子局,也有举例论证引经据典讲求是非的以理服人;有女装大佬搔首弄姿迎来众多白嫖看客一脸懵逼,也有国画大师妙笔生花粉丝送礼婉言相拒。千千万万个灵魂,千千万万种风采,你有你的口味,我有我的风格,多样性的繁荣催生了社会整体宽容度的不断冗余,在别国大多是宽容度培养多样性,而在天朝,则是多样性催生宽容度。但无论如何,我认为这也是一种时代的进步。且不说好与坏,这世上又哪里有绝对的好和绝对的坏呢。

有一日,在技术讨论群中和群友讨论疫情网课系统背后的技术实现,群友就说网课系统何其烂,他儿子上课多么无奈,顺道聊到小孩子上网课毫无兴趣只好用电脑玩游戏。我笑嘻嘻的问,你家孩子要拿电脑玩游戏你怎么办?他说我儿子要玩游戏,我就给他端茶倒水。我觉得这样的家长真的是个好榜样。一个在快乐中成长,既能好好学习又能好好玩游戏的孩子,能够吸收自然科学的知识,又能在游戏的同时锻炼自己的思维,学会情绪控制和自我约束,这样一个孩子才能形成完整的认知能力。有人说钱是一种风险抑制剂,而我认为认知则是创造这种风险抑制剂的车间。相反,我们的社会培养了太多具有理性知识而没有感情,或者感情泛滥到偏执而却缺乏理性思维的工具人,无法做到以出离自我的状态去利用逻辑的力量来对事物内部的各种成分力量做对比分析,进而得出合乎事实本身的结论。大多数的时候他们都是随波逐流,在他们眼中,跟他们观点看法不一致的人就是是错的,他人怀异而错,真理天下唯我。电脑游戏本身实际上是一种娱乐活动,与老一辈们的纸牌,麻将本质上是同一个东西,无非就是表现形式有所不同。他们之所以固执的认为玩游戏不好,是因为他们无法理解游戏本身,无法理解无法认同即为错。而一款好的游戏,是可以训练一个人的思维,增加知识和陶冶情操的。因此我时常告诫自己,我所不能理解的,不一定是错的;而我所信奉的,也不一定完全就是对的。我不能强加思维让别人接受我的想法,正如别人也不能用各种冠冕堂皇的理论缘由来给我洗脑。任何时候都要保持思维的独立性,对别人的观点要结合事实透过逻辑加以验证,才可以得出结论。己所欲强施于人和己所不欲施于人的性质是一样的。

安装 pipenv 依赖和包管理工具

brew install pipenv

切换 pip ( pypi 源为国内 USTC.EDU 中科大)

mkdir ~/.pip
cd .pip
vim pip.conf
# 填充以下内容
[global]
timeout = 60
index-url = https://mirrors.ustc.edu.cn/pypi/web/simple

建立项目目录

mkdir project-directory
cd project-directory
pipenv install
# ------------- 终端会反馈以下输出
# Creating a virtualenv for this project…
# Pipfile: /project-directory/Pipfile
# Using /usr/local/opt/python/bin/python3.7 (3.7.4) to create virtualenv…
# -------------

# 修改项目的 pypi 源地址为国内
vim Pipefile

#修改为以下设置

[[source]]
name = "pypi"
url = "https://mirrors.ustc.edu.cn/pypi/web/simple"
verify_ssl = true

[dev-packages]

[packages]
pymysql = "*"
pathlib = "*"

[requires]
python_version = "3.7

进入子 shell 环境

pipenv shell

注意: 如果不进入子 shell,则 pipenv 会调用系统安装的默认 python 的 pip 来安装库,比如 OSX 默认就是 2.7版本,这样就会爆出一堆的依赖错误问题。

进入子 shell 之后便可以方便使用 pipenv install 来管理项目使用的模块了, 比如安装 scrapy 的命令就是 pipenv install scrapy

其实一直一来早都想把环境切换到 Nginx ,因为即使 Apache 运行在 event 模式下,受限于自身的架构,其性能的表现和资源占用的情况依旧无法和 Nginx 站在同一基准线上。而促使我做这件事的原因很简单,Let's Encrypt的证书过期了,厌倦了每三个月去 manual renew 证书一次,遂将证书的管理转到 Acme.sh, 后者支持阿里云的 DNS api,可以方便的自动 renew 证书。证书的生成和配置很简单,然而却出现了另外一个问题,Apache 无法支持 ACME 获得证书,这里大概是因为证书使用了另外一种加密方式,而 Apache 无法 Cipher。我没有纠结于证书的类型和加密方式,对我来说自动续签更加重要。既然 Apache 不行,正好借此机会换到 Nginx。

由于以前的 LAMP 早已安装和配置好,这里需要做的工作就是安装 Nginx 和配置就好。Nginx 的安装就不说了,现在 Reposity 的源本身已经很安全,个人不必再迷信手动编译,因此我全部用的都是官网的包安装的,快速方便。PHP 我这里用的是 7.2版本。 以下就直接贴出配置文件。

php-fpm + php pool
# 查看 php-fpm 配置
# cat /etc/php/7.2/fpm/php-fpm.conf | grep -v "^;" | grep -v '^$'
[global]
pid = /run/php/php7.2-fpm.pid
error_log = /var/log/php7.2-fpm.log
include=/etc/php/7.2/fpm/pool.d/*.conf

# 查看 Pool 的配置
# cat /etc/php/7.2/fpm/pool.d/site-name.conf | grep -v "^;" | grep -v '^$'
[site-name]
user = www-data
group = www-data
listen = /run/php/site-name.sock
listen.owner = www-data
listen.group = www-data
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
request_terminate_timeout = 300s
request_slowlog_timeout = 10s
chdir = /var/www/html/site-name.com/public_html
slowlog = /var/www/html/site-name.com/logs/$pool.log.slow
php_flag[display_errors] = off
php_admin_value[display_errors]=0
php_admin_value[display_startup_errors]=0
php_admin_value[html_errors]=0
php_admin_value[define_syslog_variables]=0
php_admin_flag[file_uploads]=1
php_admin_flag[log_errors] = on
php_admin_value[log_errors]=1
php_admin_value[upload_tmp_dir]="/var/tmp"
php_admin_value[upload_max_filesize]="4M"
php_value[max_input_time]="120"
php_admin_value[max_input_time]=120
php_value[max_execution_time]="300"
php_admin_value[post_max_size]="4M"
php_value[session.gc_maxlifetime]=3600
php_admin_value[session.gc_probability]=1
php_admin_value[session.gc_divisor]=100
php_admin_value[error_log] = /var/log/fpm-php/site-name.log
php_admin_value[memory_limit] = 64M
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = off
php_admin_value[magic_quotes_gpc]=0
php_admin_value[register_globals]=0
php_admin_value[session.auto_start]=0
php_admin_value[mbstring.http_input]="pass"
php_admin_value[mbstring.http_output]="pass"
php_admin_value[mbstring.encoding_translation]=0
php_admin_value[expose_php]=0
php_admin_value[allow_url_fopen]=1
php_admin_value[safe_mode]=0
php_admin_value[cgi.fix_pathinfo]=1
php_admin_value[cgi.discard_path]=0

# Nginx 的配置分为 2 部分,Nginx全局环境 + Vhost 配置

# Nginx 全局配置

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
    worker_connections 768;
    # multi_accept on;
}
http {
    ##
    # Basic Settings
    ##
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    ##
    # SSL Settings
    ##
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    ##
    # Logging Settings
    ##
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    ##
    # Gzip Settings - 这里是比较重要的地方
    ##
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
  gzip_min_length 1100;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript font/truetypef font/opentype application/vnd.ms-fontobject text/x-component image/svg+xml;
 gzip_static on;
    ##
    # Virtual Host Configs
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

# Nginx - 针对 Drupal 站点的 vhost 配置
server {
    listen 80;
    server_name www.site-name.com site-name.com;
    add_header Strict-Transport-Security max-age=15768000;
    #永久重定向到 https 站点
    return 301 https://$server_name$request_uri;
    }

server {
    listen 443 ssl;
    server_name www.site-name.com site-name.com;
    root /var/www/html/site-name.com/public_html;
    keepalive_timeout   120;
    #证书文件
    ssl_certificate     /etc/certs/site-name.com/fullchain.pem;
    #私钥文件
    ssl_certificate_key /etc/certs/site-name.com/key.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    access_log /var/www/html/site-name.com/logs/access.log;
    error_log /var/www/html/site-name.com/logs/error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    # Allow "Well-Known URIs" as per RFC 5785
    location ~* ^/.well-known/ {
        allow all;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }
    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }
    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }
    location ~ '\.php$|^/update.php' {
        # Ensure the php file exists. Mitigates CVE-2019-11043
        try_files $uri =404;
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
        # Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/site-name.sock;
    }
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        try_files $uri @rewrite;
        expires max;
        log_not_found off;
    }
   # # Enforce clean URLs
    # Removes index.php from urls like www.example.com/index.php/my-page --> www.example.com/my-page
    # Could be done with 301 for permanent or other redirect codes.
    if ($request_uri ~* "^(.*/)index\.php(.*)") {
        return 307 $1$2;
    }
}