增值税发票开票软件(ukey版)管理员密码留空即可登录

增值税发票开票软件(ukey版)管理员密码留空

新开通的ukey,软件据说也是新版的,对照文档发现确实够新,文档跟软件都不太一样,装好开票软件之后,启动,插上Ukey,能识别,输入初始密码88888888,修改初始密码,然后,就是图片上的界面,出来一个管理员用户,还要输入密码,实在不清楚这个管理员是在哪里设置过,于是用ukey密码尝试,密码错误,用初始密码8个8尝试,密码错误,也没有密码找回之类的选项。

只好拨打12366电话,只有机器人,解决不了问题,甚至连问题都没听懂。

拨打石景山税务局的电话,电话链路有问题,杂音特别多,说明来意,说电话改了,拨打另外一个,然后打通了说需要去办税大厅,那就去吧。

去了之后扫二维码预约,扫二维码取号,倒是不用等。

说明情况之后,姑娘核验了身份证,把ukey交给旁边同事把密码初始化,我插到电脑上再试,还是密码错误,姑娘翻了半天笔记本,说你试试空密码,我把密码清除,点击登录,成功了。这就是经过。一个上午就这么过去了。

在docker中的jenkins中调用composer

假定部署环境使用的是futuremeng/dnmp(fork自yeszao/dnmp),我在其中增加了一个jenkins,那么当jenkins部署php项目时,除了拉取代码,我还会在shell中修改env为当前实例所需的配置,然后接下来,就是执行composer来构建项目需要的包。之前,我是在jenkins容器中又不得已安装了一个php和composer,这显然是和dnmp下面的php重复了,完全没有必要。

所以接下来,我查到了在docker-compose.yml的jenkins配置中:

  jenkins:
    image: jenkins/jenkins:${JENKINS_VERSION}
    container_name: jenkins
    volumes:
        - ${JENKINS_HOME_DIR}:/var/jenkins_home
        - ${JENKINS_CERTS_DIR}:/certs/client
        - ${SOURCE_DIR}:/www/:rw
        - ${TOMCAT_WEBAPPS_DIR}:/webapps/:rw
        - /var/run/docker.sock:/var/run/docker.sock
        - /usr/bin/docker:/usr/bin/docker
        - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
    ports:
        - "${JENKINS_HTTP_PORT}:8080"
    expose:
        - "8080"
        - "50000"
    privileged: true
    user: root
    restart: always
    environment:
        TZ: "$TZ"
        JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
        JENKINS_OPTS: '--prefix=/jenkins'
    networks:
      - default

设置了

- /var/run/docker.sock:/var/run/docker.sock

这一项,其实本来就是为了让容器也能直接调用宿主机的docker命令,我试了一下docker ps -a,真的没问题,那么我就把本来用在宿主机的命令拿过来,比如bash.alias.sample文件中的:

# php composer
composer () {
    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --user www-data:www-data \
        --volume ~/dnmp/data/composer:/tmp/composer \
        --volume $(pwd):/app \
        --workdir /app \
        dnmp_php composer "$@"
}

将其中的命令改为:

    tty=
    tty -s && tty=--tty
    docker run \
        $tty \
        --interactive \
        --rm \
        --user www-data:www-data \
        --volume /dnmp/data/composer:/tmp/composer \
        --volume /dnmp/www:/app \
        --workdir /app \
        dnmp_php composer install

其中,我把$(pwd)改为了laravel项目所在的地址,这个地址是宿主机的地址,因为这里的docker命令是宿主机的。另外,/dnmp/data/composer也是对应宿主机中的composer缓存文件夹地址。”$@”则直接写上了install

jenkins中通过Global Tool安装nodejs须要注意npm版本可能过低

初始化jenkins之后,通过Global Tool安装nodejs的某个版本,过高了项目不匹配,跑不通,比如我选择了一个node14.22.0,但依然构建不成功,报错:

npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!

以及:

-  Building for production...
 ERROR  Error: Cannot find module 'html-webpack-plugin'

后来查到尽管用的是nodejs14,但其中的npm版本低了,用npm -v看了一下是6,其中从第一个报错就应该意识到要升级npm了,所以在shell中加上了:

npm install -g npm

VSCode Remote-SSH使用密码远程的服务器如何保存密码免密登录

IDE:vscode

插件:remote-ssh

场景:远程服务器拿了IP,用户名和密码

则默认情况下config文件(在远程资源管理器插件中点击修改设置,选择对应的配置文件)中保存为:

Host 192.168.0.7
  HostName 192.168.0.7
  User root

每次连接时,都需要用户输入密码,而且重连时也需要输入密码。改善的方式是将登录方式改为密钥的方式。

在本地电脑上用ssh-keygen生成密钥对,并将公钥放到服务器上去。

实现的具体步骤:

本地生成密钥对:

ssh-keygen -t rsa -f id_rsa_server_someone

然后将生成的id_rsa_server_someone.pub拷贝到服务器上的/root/.ssh下,并

cat id_rsa_server_someone.pub >> authorized_keys

最后,config中修改为:

Host 192.168.0.7
  HostName 192.168.0.7
  IdentityFile ~/.ssh/id_rsa_server_someone
  PreferredAuthentications publickey
  User root

厦门立林科技对讲机JB2003客户端接线图

5芯线对讲门铃接线方式如下:
主机出来的5芯线分别是 红(+V)+12V、白(TXD)数据发送、黑(RXD)数据接收、绿(GND)地线、蓝 (ALM)联网信号,分别对讲分机的排线是 黑、红、黄、绿、白 (+12\ RXD\TXD\GND\ALM ) 如果分机连接的排线不是 黑、红、黄、绿、白 请按照分机的接线柱来接。
非可视的看它主机是四芯制的还是两芯制,现在新产品非可视大部是两芯制,对哪一楼就接主机的对应接线端与COM公共端口,301的你就一芯接主机的301接线柱另一端接COM公共端口他们不分正负极的。如果是四芯,有一条黑色一般是接COM端,一条黄色接音柱,一条红色接VCC电源,一条接开锁信号的。

关于积水地图

其实LBS还有很多可以发挥的点,最近聊到了老兵地图,之前我还搞过绘本馆地图、北京露营地地图等。

最有意义的当属积水地图。

积水地图

那时候真好,虽然微博只有两千多粉,但发点东西,这几家地图提供商都很积极响应,高德最快,上线也最快。

替换vant加载的外部资源来避免nginx策略屏蔽

某项目因前置nginx限制较多,不允许站内调用外部资源,所以因vant引用了cdn的图标,以及通过data方式加载图标资源,需要对vant进行修改,但又不想去自己弄个vant的修改版,所以从build之后的文件入手。

先创建一个localFilterPlugin.js,放在src/libs内,或者其他文件夹,比如utils,看你的习惯。内容如下:

/*
 * @Date: 2021-11-26 15:43:28
 * @LastEditors: Future Meng
 * @LastEditTime: 2021-11-26 18:19:11
 */
// 用于向控制台输出带颜色的问题提示
const fs = require('fs') // node的文件系统模块,用于读取操作系统文件
const path = require('path') // node提供的一些用于处理文件路径的工具
const chalk = require('chalk')

class LocalFilterPlugin {
  static defaultOptions = {
    filenameReg: /^chunk-mobile\..*\.css$/,
    originContent: /@font-face[^}]+}/g,
    newContent: '',
    assetsPath: '../../dist/css'
  };

  constructor(options = {}) {
    this.options = { ...LocalFilterPlugin.defaultOptions, ...options }
  }

  apply(compiler) {
    const _this = this
    compiler.plugin('done', function(compilation, callback) {
      const filePath = path.resolve(__dirname, _this.options.assetsPath)

      fs.readdir(filePath, (err, files) => {
        // 读取文件路径
        if (err) {
          console.log(chalk.yellow('读取文件夹异常:\n' + err.message + '\n'))
        }
        files.forEach((filename) => {
          // 找到符合正则规则的文件
          if (_this.options.filenameReg.test(filename)) {
            // 读取该文件
            const fileDir = path.resolve(filePath, filename)
            fs.readFile(fileDir, 'utf-8', (err, data) => {
              // 读取文件内容
              if (err) {
                console.log(chalk.yellow('读取文件异常:\n' + err.message + '\n'))
                return
              }

              // 替换文件内容
              const result = data.replace(_this.options.originContent, _this.options.newContent)
              fs.writeFile(fileDir, result, (err) => {
                if (err) {
                  console.log(chalk.red('写入修改后的文件异常:\n' + err.message + '\n'))
                  return
                }
                console.log(chalk.cyan(filename + '替换完成'))
              })
            })
          }
        })
      })
    })
  }
}

module.exports = LocalFilterPlugin

然后在vue.config.js中添加对这个自定义插件的引用。

const LocalFilterPlugin = require('./src.mobile/libs/localFilterPlugin')

module.exports = {
        configureWebpack: config => {
    const configNew = {}
    if (process.env.NODE_ENV === 'production') {
      configNew.externals = externals
      configNew.plugins = [
        // 构建后剔除@font-face
        new LocalFilterPlugin({
          options: {
            filenameReg: /^chunk-mobile\..*\.css$/,
            originContent: /@font-face[^}]+}/g,
            newContent: '',
            assetsPath: '../../dist/css'
          }
        })
      ]
    }
    return configNew
  },
}

就这些。

参考资料:https://blog.csdn.net/qq_31968791/article/details/102900349

sweethome3d

http://www.sweethome3d.com/

推荐一个室内设计软件,关键是开源的,与LiveHome3D相比,感觉差不多,有的使用习惯似乎还更好一些。

把两居改成四居,是这两年一直在思考的一个问题,已经做了十几个方案,最近终于逐渐找到了方向。

顺便抱怨一句,目前这些独立设计师的作品都不太看得上,不实用。

ID6 Crozz行驶7000公里问题小结

  1. 传感器误报,充电时曾多次显示电动单元故障,客服有告知两次停车后自动消除,启动车辆时出现过几次sos故障,停车后自动消除,未升级。
  2. 车机内集成的在线媒体内容很多儿童不宜,需要设置安全模式。
  3. 4G信号较弱,经常断线,有一次无法自行恢复,到4S店消除。
  4. 在线媒体来源较少,缺少高质量内容,对连载内容无法直接定位或连续播放。
  5. 尾门踢脚感应不灵敏,基本没有打开过。
  6. 车机内导航缺少导航途中添加目标方向上的沿线搜索功能,如添加充电站、公共厕所、餐厅等。目前的搜索结果跟当前导航路径无关,不够便捷。
  7. 导航中充电站导航缺少充电桩空闲状态显示和预约功能。
  8. 导航中充电桩缺少现状反馈,有的充电站长期被占用或封堵,属于完全无法使用情形,在石家庄市去了两个充电站都是如此。希望充电桩筛选增加“最近使用”,最近有人充电的。
  9. 车队功能不好用,大概需要重新设计。
  10. 没有车内温度显示。
  11. 官方App必须退出重启才能刷新车辆状态,断线后无法自动重连。
  12. 优驾规则不明确,越开越少,不开更多。
  13. 车辆授权账户增加充电时使用主账户额度代付,主账户事先授权。
  14. HUD希望能调整大小,目前显示较小,不容易识别,反而不如低头看小屏。
  15. 在线客服基本上不能响应问题,都推到销售专员去了。

以上是大众主动邀请填写的反馈,已经顺便发给了水木车友群,在这里也贴一下,供打算买这个款车的朋友参考。

总体上,没有遇到大问题,开了几千公里,右前轮轮毂蹭了一下马路牙子,除此之外没有别的损伤。

ID6 Crozz十一假期自驾体验

行程:北京-首都环线高速野三坡服务区-张家口蔚县暖泉古镇-蔚县茶山村-石家庄-井陉段家楼-衡水-北京

充电:基本上都是高速服务区充电,只有石家庄是在民宿所在小区边上一个海鲜市场,衡水是在滨湖国际小区边上。体验,高速上虽然速度不快,但可用率还是比较高的,这条线上人车也不多。从衡水回北京的时候车比较多,找了几个服务区都满了,最后绕到廊坊服务区充的点,走京台高速进城。

体验:车的舒适度还可以,空间也够用,雨天开起来视线好,很稳,但雨天开ACC方向盘会来回晃,不如平时稳,不如关掉自己管方向盘。

续航:因为一直下雨,再加上开空调跑高速,电耗接近25度/百公里,总续航从565降到了325,按剩下20%就要充电的话,只能跑268公里。这个里程刚刚够从衡水到北京的,剩余公里数在五六十公里左右,也不是很保险,如果堵车就有点悬,所以回北京的时候还是补了一次电。再一个就是外面老快充的话,也会虚一些,续航会打折扣。