分类: 未分类

  • Typecho 一些冷门小技巧

    n

    切换 IP 来源获取

    nnnn

    如果你的网站使用了 CloudFlare 一类的 CDN 服务使得部分插件无法正常记录用户 IP 地址的话,可以在 config.inc.php 声明这个静态变量,替换成服务商对应的用户 IP 头就可以了!CloudFlare 现在默认提供的是 HTTP_X_FORWARDED_FOR 头传送用户真实 IP 地址,所以我直接填入头的名称就可以了!

    nnnn
    define('__TYPECHO_IP_SOURCE__', 'HTTP_X_FORWARDED_FOR');
    nnnn

    使用自己的静态存储

    nnnn

    如果你有自己的 CDN 或静态存储,希望 Typecho 不使用默认的站点地址来分发内容,可以在 config.inc.php 声明这个静态变量,替换成你自己的附件地址即可!REQUEST_SCHEME 是访问站点的协议,所以 HTTP、HTTPS 都可以使用。

    nnnn
    define('__TYPECHO_UPLOAD_URL__', $_SERVER['REQUEST_SCHEME'] . '://static.paugram.com');
    nnnn

    自定义 Gravatar 源

    nnnn

    使用自己的 Gravatar 源,例如 V2EX 提供的源。

    nnnn
    define('__TYPECHO_GRAVATAR_PREFIX__', 'https://cdn.v2ex.com/gravatar/');
    nnnn

    排错功能

    nnnn

    插入如下代码后,在编写插件或模板遇到问题时会输出更详细的报错信息(还要确认 PHP 的 display_errors 是否为 On)

    nnnn
    define('__TYPECHO_DEBUG__', true);
    nnnn

    模板开发

    nnnn

    这两段函数在模板开发中必不可缺,否则会出现一些奇怪的 Bug!

    nnnn

    这段是 Typecho 的头部输出内容,如缺少将导致文章评论出现异常。建议放在 header.php 里面。

    nnnn
    $this -> header();
    nnnn

    这段是 Typecho 的尾部输出内容,如缺少将可能导致部分需要前端支持的插件无法使用。建议放在 footer.php 里面。

    nnnn
    $this -> footer();
    nnnn

    输出头像

    nnnn

    这段函数用于输出当前页面的作者头像,可以用来做作者介绍和版权提示。参数是头像尺寸,建议大于等于 64 像素。

    nnnn
    $this -> author -> gravatar(64);
    nnnn

    输出当前登录用户的头像地址,可以用于评论区的输出。

    nnnn
    echo Typecho_Common::gravatarUrl($this -> user -> mail, 150, 'X', 'mm')
    nnnn

    检测是否登录

    nnnn

    用于检测用户是否登录,已登录返回 true 否则为 false,可以用来实现模板内的评论框结构变更,或是限制模板页面的内容不对外显示。

    nnnn
    $this -> user -> hasLogin();
    nnnn

    页面链接

    nnnn

    输出上一页 / 下一页的链接

    nnnn
    $this -> pageLink('上一页');n$this -> pageLink('下一页', 'next');
    nnnn

    文章时间

    nnnn

    获得文章创建的时间

    nnnn
    $this -> created
    nnnn

    获得文章上次修改的时间

    nnnn
    $this -> modified
    nnnn

    计算文章修改自多少天前

    nnnn
    ceil((time() - $this -> modified) / 86400) // 当前时间减去修改时间,换算为天并取整
    nnnn

    文章信息

    nnnn
    count(this -> tags()) // 返回标签数量ncount(this -> category()) // 返回标签数量n
    nnnn
    n

    转自https://paugram.com/coding/typecho-secret-usage.html

    n
    n
  • 在地址栏玩贪吃蛇,作者很有想法鸭

    n

    GitHub: github.com
    其实使用的是黑色盲文字符集 U+2800 : www.fileformat.info

    nnnn

    创意十足

    n
  • win10系统下误删系统变量path恢复方法

    n

    可能是还没睡醒吧,早上一开机就把系统环境变量的Path删除了,顿时晴天霹雳,昨天才刚刚做好的系统,今天有得重装?

    nnnn

    还好有注册表在!

    nnnn

    误删系统变量记得千万一定不要重启电脑!

    nnnn

    误删系统变量记得千万一定不要重启电脑!

    nnnn

    误删系统变量记得千万一定不要重启电脑!

    nnnn

    下面看我是怎么恢复的

    nnnn

    什么都别做了,赶紧打开注册表

    nnnn
    -- win+R 输入 regedit 打开注册表;nn-- 定位到 计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environmentn
    nnnn

    看到了吧,被误删的Path这里还有,呼呼,赶紧复制,在系统变量那里恢复回去!

    nnnn

    这里还能看到有别的系统变量,大概你没有重启电脑,应该都能恢复回去吧!

    nnnn

    如果不幸你的注册表也没了,那就复制下面的环境变量过去吧,应该还能拯救一下!

    nnnn
    %SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;%SYSTEMROOT%System32WindowsPowerShellv1.0;n
    nnnn

    之后还差什么的,那就看你自己了~

    n
  • 微信小程序云开发初始化失败cannot read property ‘init’ of undefined

    n

    在小程序的app.js中初始化云开发配置
    出现 cannot read property ‘init’ of undefined 错误
    只需将小程序的调试基础库调到最高版本就可以了

    n
  • docker 配置镜像加速器

    n

    windows

    nnnn

    针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:

    nnnn

    创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。

    nnnn
    docker-machine create --engine-registry-mirror=https://ugdyofo9.mirror.aliyuncs.com -d virtualbox defaultn
    nnnn

    查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。

    nnnn
    docker-machine env defaulteval "$(docker-machine env default)"docker infon
    nnnn

    针对安装了Docker for Windows的用户,您可以参考以下配置步骤:

    nnnn

    在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:

    nnnn
    {"registry-mirrors": ["https://ugdyofo9.mirror.aliyuncs.com"]}n
    nnnn

    编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。

    nnnn

    注意

    nnnn

    Docker for Windows 和 Docker Toolbox互不兼容,如果同时安装两者的话,需要使用hyperv的参数启动。

    nnnn
    docker-machine create --engine-registry-mirror=https://ugdyofo9.mirror.aliyuncs.com -d hyperv defaultn
    nnnn

    Docker for Windows 有两种运行模式,一种运行Windows相关容器,一种运行传统的Linux容器。同一时间只能选择一种模式运行。

    nnnn
    nnnn

    mac

    nnnn

    针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:

    nnnn

    创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。

    nnnn
    docker-machine create --engine-registry-mirror=https://ugdyofo9.mirror.aliyuncs.com -d virtualbox defaultn
    nnnn

    查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。

    nnnn
    docker-machine env defaulteval "$(docker-machine env default)"docker infon
    nnnn

    针对安装了Docker for Mac的用户,您可以参考以下配置步骤:

    nnnn

    右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中将

    nnnn
    https://ugdyofo9.mirror.aliyuncs.comn
    nnnn

    加到”registry-mirrors”的数组里,点击 Apply & Restart按钮,等待Docker重启并应用配置的镜像加速器。

    nnnn
    nnnn

    centos

    nnnn

    针对Docker客户端版本大于 1.10.0 的用户

    nnnn

    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

    nnnn
    sudo mkdir -p /etc/dockernsudo tee /etc/docker/daemon.json <<-'EOF'n{n  "registry-mirrors": ["https://ugdyofo9.mirror.aliyuncs.com"]n}nEOFnsudo systemctl daemon-reloadnsudo systemctl restart dockernn
    nnnn
    nnnn

    linux

    nnnn

    针对Docker客户端版本大于 1.10.0 的用户

    nnnn

    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

    nnnn
    sudo mkdir -p /etc/dockernsudo tee /etc/docker/daemon.json <<-'EOF'n{n  "registry-mirrors": ["https://ugdyofo9.mirror.aliyuncs.com"]n}nEOFnsudo systemctl daemon-reloadnsudo systemctl restart dockernn
    n
  • Docker 安装 mysql 容器

    n

    docker 中下载 mysql

    nnnn

    docker pull mysql

    nnnn

    启动

    nnnn

    docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=roor! -d mysql

    nnnn

    进入容器

    nnnn

    docker exec -it mysql bash

    nnnn

    登录mysql

    nnnn

    mysql -u root -p
    ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘roor!’;

    nnnn

    添加远程登录用户

    nnnn

    CREATE USER ‘roor’@’%’ IDENTIFIED WITH mysql_native_password BY ‘roor!’;
    GRANT ALL PRIVILEGES ON . TO ‘roor’@’%’;

    n
  • Python UnicodeDecodeError

    n

    中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

    nnnn
    # -*- coding: utf-8 -*-n
    nnnn

    目的是告诉Python解释器,用UTF-8编码读取源代码。然后用Notepad++ 另存为… 并选择UTF-8格式保存。

    n
  • 网上学习了一下,然后写个框架练练手——Jefskyphp的诞生

    n

    Jefskyphp

    nnnn

    A php framework

    nnnn
    nhttps://github.com/Jefsky/jefskyphpn
    nnnn

    框架运行流程

    nnnn

    入口文件 -> 定义常量 -> 引入函数库 -> 自动加载类 -> 启动框架 <- 路由解析 <- 加载控制器 <- 返回结果

    nnnn

    入口文件
    /index.php

    nnnn

    类自动加载

    nnnn

    spl_autoload_register(‘corekfw::load’);
    没有引入的类调用load方法

    nnnn

    路由类

    nnnn

    默认的路由地址: xxx.com/index.php/index/index

    nnnn

    隐藏index.php
    在根目录添加.htaccess文件

    nnnn

    获取URL参数部分
    /index/index/id/1/str/2

    nnnn

    返回对应的控制器和方法

    nnnn

    模型类

    nnnn

    class Model extends Medoomedoo{

    nnnn

    视图类

    nnnn

    twig

    nnnn

    配置类

    nnnn

    corelibconf.php

    nnnn

    控制器

    nnnn

    添加corelibController基类
    添加beforeAction方法
    添加afterAction方法

    nnnn

    日志类

    nnnn

    coreliblog.php

    nnnn

    composer加载

    nnnn

    新建composer.json文件

    nnnn
    {n    "name": "jefsky/jefskyphp",n    "descrption": "a php framework",n    "type": "framework",n    "keywords": [n        "PHP", "PHP FrameWork"n    ],n    "require": {n        "php": ">= 5.3.0",n        "filp/whoops": "*",n        "symfony/var-dumper": "*",n        "catfan/medoo": "*",n        "twig/twig": "*"n    },n   "repositories": {n        "packagist": {n            "type": "composer",n            "url": "https://packagist.phpcomposer.com";n        }n    }n}n
    nnnn

    使用composer命令安装依赖

    nnnn

    composer install
    composer update
    whoops用于调试,方便定位错误点
    https://github.com/filp/whoops| 1709646715 |

    nnnn

    var-dumper优化输出调试
    https://packagist.org/packages/symfony/var-dumper| 1709646723 |

    nnnn

    medoo数据库操作
    http://medoo.lvtao.net/doc.php| 1709646731 |

    nnnn

    twig模版引擎
    https://twig.symfony.com/doc/2.x/api.html| 1709646739 |

    n
  • Typecho 中文章和评论的链接改为新窗口打开

    n

    评论中的链接

    nnnn

    var/Widget/Abstract/Comments.php

    nnnn
    echo '<a href="' , this->url , '"' , (noFollow ? ' rel="external nofollow"' : NULL) , '>' , $this->author , '</a>';   n
    nnnn

    修改为

    nnnn
    echo '<a href="' , this->url , '"' , (noFollow ? ' rel="external nofollow"' : NULL) , 'target="_blank">'  , $this->author , '</a>';    n
    nnnn

    文章中的链接

    nnnn

    var/HyperDown.php

    nnnn
    <a href=\"{url}\">{link}</a>       
    nnnn

    修改为

    nnnn
    <a href=\"{url}\" target='_blank'>{link}</a>
    n
  • \Twig_Autoloader::register(); 找不到Twig_Autoloader

    n
    public function display(file)n{nfile = APP . '/views/' . file;n    if(is_file(file)) {n                loader = new \Twig\Loader\FilesystemLoader(APP . '/views');ntwig = new \Twig\Environment(loader, [n                    'cache' => '/path/to/compilation_cache',n                    'debug' => DEBUGn                ]);ntemplate = twig->load('index.html');ntemplate->display(this->assign?this->assign:"");n    }n}n
    nnnn

    不需要引入, 直接就可以用, 可以去掉这行。 可能是因为composer autoload.php已引入

    n