Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 339

Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 392

Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 394
Joyber 的博客

最近在使用群晖 NAS 自带的 Docker 应用时,总是出现容器无法停止的情况,即使在命令行中使用 docker stop 也无济于事。

想再去控制台重启 Docker 应用,又发现 Document Viewer 应用依赖到 Docker 应用,无法单独重启 Docker ,必须先停掉 DocViwer 容器。

完蛋,这就进入死循环了……

由于群晖 NAS 系统是定制的,所以一般的 Linux 操作方式在群晖 NAS 的 shell 上是没用的。所以只能找相关的 Docker 服务重启脚本。

通过全局搜索,我找到了 /var/packages/Docker/scripts/start-stop-status 这个脚本。嗯,看起来应该是它没差了。

通过对脚本的查看,确认了可以重启 Docker 服务后,便执行对应的操作进行重启:

bash /var/packages/Docker/scripts/start-stop-status stop;
bash /var/packages/Docker/scripts/start-stop-status start;
重启完成后,Docker 服务果然恢复,能正常停止容器了。

转载自:https://huangzz.xyz/qun-hui-nas-shou-dong-chong-qi-docker-fu-wu.html

jenkins中的ansible插件在执行ansible命令

/usr/bin/ansible-playbook /etc/ansible/playbook/deploy.yml -l houtai -f 5 --private-key /tmp/ssh10272501188555214818.key -u root -e srcdir=/var/lib/jenkins/workspace/x.xx.com/ -e destdir=/web/tell/ -e opts=--exclude-from=/etc/ansible/playbook/deploy.exclude --become-user root

playbook任务配置文:deploy.yml

- hosts: test,online
  remote_user: root
  tasks:
          - name: deploy code to remote server
            synchronize:
                    src: '{{ srcdir }}'
                    dest: '{{ destdir }}'
                    mode: push
                    dirs: yes
                    owner: no
                    group: no
                    copy_links: no
                    delete: no
                    rsync_opts: '{{ opts | default("") }}'

          - name: copy files if not existing, and delete extraneous files
            synchronize:
                    src: '{{ srcdir }}/{{ item }}'
                    dest: '{{ destdir }}/{{ item }}'
                    mode: push
                    dirs: yes
                    owner: no
                    group: no
                    copy_links: no
                    delete: yes
                    rsync_opts: '--ignore-existing'
            with_items:
                    - common/coreCss/
                    - common/coreJs/
                    - common/css/
                    - common/js/
            ignore_errors: true

          - name: change files mode
            file:
                path: '{{ destdir }}/{{ item.0 }}'
                mode: '{{ item.1 }}'
            with_list:
                    - ['protected/yiic', '0755']
            ignore_errors: true

          - name: opcache_reset
            shell: /usr/bin/php -r 'opcache_reset();'
            ignore_errors: true

synchronize文件同步模块:文件忽略配置 deploy.exclude

.git
.idea
.user.ini
lextab.py
yacctab.py
/assets
/attachments
/uploads
node_modules
/protected/runtime

居中剪裁大致思路:

  1. 首先将图像进行缩放,使得缩放后的图像能够恰好覆盖裁减区域。(imagecopyresampled — 重采样拷贝部分图像并调整大小)
  2. 将缩放后的图像放置在裁减区域中间。(imagecopy — 拷贝图像的一部分)
  3. 裁减图像并保存。(imagejpeg | imagepng | imagegif — 输出图象到浏览器或文件)

    /**
     * 居中裁剪图片
     * @param string $source [原图路径]
     * @param int $target_w [设置宽度]
     * @param int $target_h [设置高度]
     * @param string $target [目标路径]
     * @return bool [裁剪结果]
     */
    private function imageCenterCrop($source, $target_w, $target_h, $target)
    {
        if (!function_exists('gd_info')) {
            $this->msg('gd库扩展未安装');
            return false;
        }

        if (!file_exists($source)) {
            $this->msg("文件不存在: {$source}");
            return false;
        }

        list($source_w, $source_h, $_type) = getimagesize($source);
        $this->msg("图片类型:{$_type},{$source}");

        /* 根据类型载入图像 */
        switch ($_type) {
            case IMAGETYPE_WEBP:
                $image = imagecreatefromwebp($source);
                break;
            case IMAGETYPE_JPEG:
                $image = imagecreatefromjpeg($source);
                break;
            case IMAGETYPE_PNG:
                $image = imagecreatefrompng($source);
                break;
            case IMAGETYPE_GIF:
                $image = imagecreatefromgif($source);
                break;
            default:
                $this->msg("不支持的文件类型: {$source}");
                return false;
        }
        /* 计算裁剪宽度和高度 */
        $judge = (($source_w / $source_h) > ($target_w / $target_h));
        $resize_w = $judge ? ($source_w * $target_h) / $source_h : $target_w;
        $resize_h = !$judge ? ($source_h * $target_w) / $source_w : $target_h;
        $start_x = $judge ? ($resize_w - $target_w) / 2 : 0;
        $start_y = !$judge ? ($resize_h - $target_h) / 2 : 0;
        /* 绘制居中缩放图像 */
        $resize_img = imagecreatetruecolor($resize_w, $resize_h);
        imagecopyresampled($resize_img, $image, 0, 0, 0, 0, $resize_w, $resize_h, $source_w, $source_h);
        $target_img = imagecreatetruecolor($target_w, $target_h);
        imagecopy($target_img, $resize_img, 0, 0, $start_x, $start_y, $resize_w, $resize_h);
        /* 将图片保存至文件 */
        if (!is_resource($target)) {
            $_dir = dirname($target);
            if (!is_dir($_dir) && !@mkdir($_dir, 0777, true)) {
                $this->msg("创建目录失败:{$_dir}");
                return false;
            }
        }
        switch ($_type) {
            case IMAGETYPE_WEBP:
                imagewebp($target_img, $target);
                break;
            case IMAGETYPE_JPEG:
                imagejpeg($target_img, $target);
                break;
            case IMAGETYPE_PNG:
                imagepng($target_img, $target);
                break;
            case IMAGETYPE_GIF:
                imagegif($target_img, $target);
                break;
        }
        return boolval(file_exists($target));
    }

问题:

如果你是web开发者,有可能会遇到如下问题。
最近chrome版本移除了关于ssl配置错误后,点高级没有继续访问的选项。提示如下:

20210303200510120.png

点开详细按钮后,并没有继续访问的按钮

您的连接不是私密连接
攻击者可能会试图从 x.x.x.x 窃取您的信息(例如:密码、通讯内容或信用卡信息)。了解详情
NET::ERR_CERT_INVALID
将您访问的部分网页的网址、有限的系统信息以及部分网页内容发送给 Google,以帮助我们提升 Chrome 的安全性。隐私权政策
x.x.x.x 通常会使用加密技术来保护您的信息。Google Chrome 此次尝试连接到 x.x.x.x 时,此网站发回了异常的错误凭据。这可能是因为有攻击者在试图冒充 x.x.x.x,或 Wi-Fi 登录屏幕中断了此次连接。请放心,您的信息仍然是安全的,因为 Google Chrome 尚未进行任何数据交换便停止了连接。
您目前无法访问 x.x.x.x,因为此网站发送了 Google Chrome 无法处理的杂乱凭据。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。

解决办法

在当前页面用键盘输入:thisisunsafe
注意:不是在地址栏输入,先点下页面然后直接敲键盘就行了,页面即会自动刷新进入网页。

相关讨论

https://cybercafe.dev/thisisunsafe-bypassing-chrome-security-warnings/

PaddleGAN超分辨率

图像超分辨率(SISR)
ESRGAN通用稳定,效果好
LESRCNN轻量,速度快
RealSR细节丰富视觉效果好

视频超分辨率(VSR)
EDVR
BasicVSR
BasicVSR++
PP-MSVSR
PP-MSVSR-L

基于视频充分利用多个连续帧的信息,超分效果优于SISR

083F33B2-F8EA-4153-A5B2-5BFD951184FB.png