电动汽车厂商倒闭了怎么办?

之前买过一个CAT110的智能插座,可以把家里的煤气报警器和烟雾报警器连接起来,通过app收到报警信息,也可以远程控制插座本身的继电器。

有一段时间,插座不能用了,连不上网,实际上是连不上服务器,找了半天,问到厂家,说正在迁移服务,又等了一阵子,试试好了,说明迁移成功,可是,如何迁移失败或者厂家倒闭了呢。至少这个智能插座是废了,传感器是通用的,还可以连到其他的智能网关上。

基于云的东西,如果厂家不把云上的东西让你自己部署一个私服,你就没办法摆脱它,我的智能门锁也是一样,虽然分发钥匙是app和门锁通过蓝牙连接同步数据,但是生成密码是要先登录app的,登录就要连服务器,如果门锁厂家没了,app无法登录,自然也就无法跟门锁通讯,而厂家也很难好心到在倒闭前把app释放一个不需要登录的版本出来。

如此分析,智能家居还需要私有化的方案才能放心使用,除非对买的东西有足够的信心,或者钱不多,上当了也无所谓。

但如果是电动汽车厂商挂了呢,花了多少万买的电动汽车里面有很大一笔钱是买所谓的智能功能,那个智能车机的运营方要是废了,谁能提供第三方车机?不好说,即使能提供改装,验车未必能过。

我觉得这类的应用至少应该像wordpress或者mastodon这样,除了提供saas服务,还应该提供私有化部署的方案。

或许我更愿意接受一个开源电动汽车,至少一部分功能应该分离出来,用开源来实现,而不是把所有东西都寄托(绑定)在一个厂商那里。

Laravel中Socialite和easywechat如何选用

Socialite主要针对登录,涵盖了微信的接口,但是不包括微信其他的接口,如支付等。而easywechat是针对微信的全场景方案。

所以在项目中,用easywechat来解决微信方面的需求,在users表之外,创建一个weixins表,来存储微信用户绑定到信息,如果有需要再用socialites表来存储非微信的用户绑定。

在各个平台的接口中,微信的接口是比较变态难调试的,尤其是支付接口,这里再次抱怨一下。

电动汽车,有最好的买家,却没有最好的产品

最近特斯拉在上海车展大放异彩,真心关注电动汽车的和看热闹的显现出很不一样的态度,这依然是信息不透明造成的问题,如果不是钱不够,估计都要买特斯拉了,而之所以有那么多特黑,多半是“打特办”旗下。

先不说是否真的有打特办,只说争议解决机制,就不太正常,有问题就解决问题,该怎么调查怎么调查,而一线媒体出来带节奏,这就不是科学办事,当然,真心买车的考虑的还是自己的钱包和怎么买一辆自己放心的车。

长安CS55的等等群里,大家把新能源车研究得很透彻了,这是除了水木社区之外唯一一个严肃讨论新能源话题的地方。

只是,大家研究的再好,造车的还是该怎么折腾怎么折腾。如今造成分成了两派,一派是真造车,一派是拿造车当幌子玩资本运作。

对我自己来说,研究新能源的这轮基本上要高一段落了,首先对换车的需求还没那么迫切,钱包也还需要继续填充,同时,可以继续等一等下一代产品,等一百度电池量产了,差不多就可以换了。

使用https://www.github.com/yeszao/dnmp搭建php8.0.3环境

基本的安装步骤请看官方文档,这里仅就php8说一下。之前7及以下版本直接按指示操作即可,没有遇到问题,如果遇到github等网络不通的情况,等一等再试,或者想办法出个国。

需要php8的,打开.env将php7下的版本号直接改为8.0.3,或者复制php7的配置新建一个php8。

#
# PHP7
#
# Available PHP_EXTENSIONS:
#
# pdo_mysql,zip,pcntl,mysqli,mbstring,exif,bcmath,calendar,
# sockets,gettext,shmop,sysvmsg,sysvsem,sysvshm,pdo_rebird,
# pdo_dblib,pdo_oci,pdo_odbc,pdo_pgsql,pgsql,oci8,odbc,dba,
# gd,intl,bz2,soap,xsl,xmlrpc,wddx,curl,readline,snmp,pspell,
# recode,tidy,gmp,imap,ldap,imagick,sqlsrv,mcrypt,opcache,
# redis,memcached,xdebug,swoole,pdo_sqlsrv,sodium,yaf,mysql,
# amqp,mongodb,event,rar,ast,yac,yaconf,msgpack,igbinary,
# seaslog,varnish,xhprof,xlswriter
#
# You can let it empty to avoid installing any extensions,
# or install multi plugins as:
# PHP_EXTENSIONS=pdo_mysql,mysqli,gd,curl,opcache
#
#PHP_VERSION=7.4.7
PHP_VERSION=8.0.3
PHP_PHP_CONF_FILE=./services/php/php.ini
PHP_FPM_CONF_FILE=./services/php/php-fpm.conf
PHP_LOG_DIR=./logs/php
PHP_EXTENSIONS=mysql,pdo_mysql,mysqli,mbstring,gd,curl,opcache,redis,xdebug,imap,mcrypt,zip

如上,用docker-compose build php然后docker-compose up php。

这个时候打开php项目,有可能会报could not find driver的错误。那就是mysql的扩展没装好。

可以用下面的办法来安装:

docker exec -it php /bin/sh

install-php-extensions pdo_mysql
同理,也可以安装redis扩展install-php-extensions redis
这时候打开phpinfo看看有没有pdo_mysql和redis。

如果需要在本地打开xdebug,还是用上面的办法install-php-extensions xdebug
这时候,还需要修改一下php.ini,因为xdebug最新是3的版本了,配置项改了。

把原来的xdebug配置改成下面的即可。
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
; Set to host.docker.internal on Mac and Windows, otherwise, set to host real ip
xdebug.remote_host = 192.168.100.100
; xdebug.remote_port = 9000
xdebug.remote_autostart=1
xdebug.remote_log = /var/log/php/xdebug.log


xdebug.mode=debug
xdebug.client_host=192.168.100.100
xdebug.start_with_request=yes
xdebug.log=/var/log/php/xdebug.log
如果用vscode调试的话,在.vscode下面创建launch.json并填入:
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/www/shang/openexhibitions/api": "${workspaceRoot}"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9003
        }
    ]
}

注意,端口号是9003,之前xdebug是9000

ASUS RT-AC68U神器启用

新买了一个电视机顶盒mecool KM6,这玩意激活还需要出国留学(这个词是在淘宝上学的),所以在KM6到货之前就在琢磨拿什么来突破了,家里有个老思科的路由器,虽然慢点,但应该还是能用的吧,结果等配置的时候发现,还真是连不上了,于是只好拿笔记本,接上网线上网,然后通过wifi共享网络出来,幸好官方有教程,按照步骤操作下来,成功留学,顺利激活。

KM6跑起腾讯的云视听一点问题没有,反应超快,但是光看一个云视听太可惜了。那就需要长期假设一个出国通道。咨询了华三做SDN的同学,放弃了采用融合网关的方案,那就是准备一个专用的路由器就行了,物理切换网络是最直接有效的。

但是之前配置的这台电脑毕竟不能一直放在家里做留学使用,所以换了一台旧电脑顶上,2010年买的小黑X1,但是很快就发现,KM6跑起来并不爽。考虑再下,下定决心,再投巨资采购一台ASUS RT-AC68U,这个型号在支持设备清单里是次顶配。淘宝下单花了499个软妹币。

到货后,发现专业路由器就是比TPlink的强,配置真复杂,截图就不发了,直接按教程找到系统配置中的升级固件功能,将下载下来的专用升级固件上传上去,重启(留学中介说是会自动重启,我这里被提示要手动重启,所以就断电重启路由器就好了)。

再连上,发现连DHCP的网关都变了,修改地址,重新进入路由器配置界面,靠,发现完全变了,超级复杂的配置界面没有了,只剩下那红色的经典配色,然后输入激活码,然后,然后,就发现已经连接成功。虽然,华硕这超级牛的路由器的其他那些功能暂时用不上了,但这就行了,插电即用。

接下来,打开油管看看,还是有点卡,于是把接入点从联通光猫的百兆口,换到了千兆口下接的TP的千兆口上,速度明显提升,甚至直接从新加坡回国看云视听都不卡顿。

校友们已经开始关注养老产业了

校友会一般最积极的都是搞保险业务的校友,无论在上海还是在北京,这大概是业务推广需要,好在我们这位校友虽然组织活动,拉群,倒也没有很过分的推销业务。

最近这位仁兄开始关注养老产业了,前两年,借着我老婆考察社区养老,我也去转过两家,稍微有点了解,社区养老真的是个公益行业,没点修养的很难坚持下来。还有一类就是高端养老产业,现在大家有兴趣的大概是这种,一个老人月费用在一万以上的,否则不太可能有多大利润空间。但真的做起来,投资也不会小。我现在关注的倒不是这个点,而是校友去视频体验养老基地的时候,提到过那里一般不对外开放,避免对老人们过度打扰。

我还没到规划自己养老的阶段,也没有考虑过要把父母送去养老院,但是如果去,我确实想想不到要住在一个封闭的养老院里,而不是相对开放的社区,只是那个社区的基础设施对老人更友善。有机会还是要去实地看看。

过年的时候,同村的两位老人在北京,家里不算缺钱,但考察了一圈还是选择居家,除了观念问题,不知道是不是也担心进去就出不来了。

github被封之后

github被封之后,就有更多的vpn需求,也会冒出更多国产镜像软件。

这样不好,技术本来很简单,一起玩才好,实际上更多的还是借用,搭便车,当然,用的时候也是给原创者一个正向反馈,不管你是否提交过pr。

封掉的话2021后的新程序员恐怕很多就不知道有github了,对老程序员保持竞争力倒是个好事情。

无用的知识:apt upgrade时pkg.jenkins.io无法连接造成jenkins启动失败

时常需要给服务器打打补丁,执行apt update后执行apt upgrade,但是奇怪的是jenkins升级后就挂了。

没有改什么配置,没有增加什么新的应用。用apt remove jenkins再apt install jenkins也不行。

Setting up jenkins (2.263.1) ...
Job for jenkins.service failed because the control process exited with error code.
See "systemctl status jenkins.service" and "journalctl -xe" for details.
invoke-rc.d: initscript jenkins, action "start" failed.
● jenkins.service - LSB: Start Jenkins at boot time
     Loaded: loaded (/etc/init.d/jenkins; generated)
     Active: failed (Result: exit-code) since Tue 2021-01-19 10:09:42 CST; 12ms ago
       Docs: man:systemd-sysv-generator(8)
    Process: 4798 ExecStart=/etc/init.d/jenkins start (code=exited, status=7)

Jan 19 10:09:41 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: Starting LSB: Start Jenkins at boot time...
Jan 19 10:09:41 iZ8vbajeqj6nb198cbbtgsZ jenkins[4798]: Correct java version found
Jan 19 10:09:41 iZ8vbajeqj6nb198cbbtgsZ jenkins[4798]:  * Starting Jenkins Automation Server jenkins
Jan 19 10:09:42 iZ8vbajeqj6nb198cbbtgsZ jenkins[4798]:    ...fail!
Jan 19 10:09:42 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: jenkins.service: Control process exited, code=exited, status=7/NOTRUNNING
Jan 19 10:09:42 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: jenkins.service: Failed with result 'exit-code'.
Jan 19 10:09:42 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: Failed to start LSB: Start Jenkins at boot time.
dpkg: error processing package jenkins (--configure):
 installed jenkins package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 jenkins
E: Sub-process /usr/bin/dpkg returned an error code (1)

试过netstat -apn | grep 8080看端口占用,先是发现过阿里云盾,还以为是中毒了,用top看看cpu占用,不像。

把端口改成8888,也不行。

然后改天,直接执行apt update后执行apt upgrade就好了。原来就是pkg.jenkins.io不能连接造成的。

中间还曾经怀疑过java的问题,网上不少说是java没设置好或者缺少$JAVA_HOME的。并不解决我的问题。

再单独发一下jenkins状态的故障查询。

root@iZ8vbajeqj6nb198cbbtgsZ:~# systemctl status jenkins.service
● jenkins.service - LSB: Start Jenkins at boot time
     Loaded: loaded (/etc/init.d/jenkins; generated)
     Active: failed (Result: exit-code) since Mon 2021-01-18 17:30:42 CST; 1min 56s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 1878 ExecStart=/etc/init.d/jenkins start (code=exited, status=7)

Jan 18 17:30:41 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: Starting LSB: Start Jenkins at boot time...
Jan 18 17:30:41 iZ8vbajeqj6nb198cbbtgsZ jenkins[1878]: Correct java version found
Jan 18 17:30:41 iZ8vbajeqj6nb198cbbtgsZ jenkins[1878]:  * Starting Jenkins Automation Server jenkins
Jan 18 17:30:42 iZ8vbajeqj6nb198cbbtgsZ jenkins[1878]:    ...fail!
Jan 18 17:30:42 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: jenkins.service: Control process exited, code=exited, status=7/NOTRUNNING
Jan 18 17:30:42 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: jenkins.service: Failed with result 'exit-code'.
Jan 18 17:30:42 iZ8vbajeqj6nb198cbbtgsZ systemd[1]: Failed to start LSB: Start Jenkins at boot time.

无用且过时的知识:Android studio配置国内镜像源

推荐的几个国内镜像源地址:

1、东软信息学院(笔者当前在用)

mirrors.neusoft.edu.cn     端口:80
2、北京化工大学

ubuntu.buct.edu.cn/ubuntu.buct.cn  端口:80
3、中国科学院开源协会

mirrors.opencas.cn (mirrors.opencas.org/mirrors.opencas.ac.cn)    端口:80
4、上海GDG镜像服务器

sdk.gdgshanghai.com   端口:8000
5、电子科技大学

mirrors.dormforce.net  端口:80

网上搜一下基本上都是这个内容,只是目前不需要了,而且如果按照这个设置了的话,很可能还会额外造成问题,因为这些镜像要么不存在,要么已经不维护了。

总体上来说,能够正确看待开发资源这个事情,是一点点进步。来自“资本主义”的安卓,本身没有什么罪恶,至少咱们还可以改个名字叫鸿蒙。

当然,谷歌也是有妥协的,专门给中国开发者弄了个中文站点。

Library/Application\ Support/Google/AndroidStudio4.1

mac上Android Studio重装了新版之后提示/Users/mengfanyong/Library/Application\ Support/Google/AndroidStudio4.1无法访问。

那就是没权限呗。有两种解决方案:

(1)sudo /Applications/Android\ Studio.app/Contents/MacOS/studio

用以上命令直接用管理员身份启动,但这样很麻烦。

(2)另一种是直接解决这个文件夹权限的问题:

cd /Users/mengfanyong/Library/Application\ Support/Google 
mkdir AndroidStudio4.1
sudo chmod -R 775 /Users/mengfanyong/Library/Application\ Support/Google/AndroidStudio4.1

很奇怪Android Studio为什么不调起管理员权限请求,把这个目录创建一下。希望下个版本能修复。