Sitecore 9.3 SXA lowercaseUrls is not working

Reference

https://doc.sitecore.com/developers/93/sitecore-experience-manager/en/build-item-and-media-urls.html
https://www.pintle.dk/insights/link-generation-in-sitecore-9-3/

Starting from Sitecore 9.3 there are changes to link generation functionality as well as enhancements to URL builder options configuration capabilities

The follow config comes from sitecore showconfig

<!--  URL BUILDERS  -->
<!--  URL BUILDERS  -->
<links>
    <urlBuilder>
        <alwaysIncludeServerUrl>false</alwaysIncludeServerUrl>
        <languageEmbedding>asNeeded</languageEmbedding>
        <languageLocation>filePath</languageLocation>
        <lowercaseUrls>true</lowercaseUrls>
        <encodeNames>true</encodeNames>
        <useDisplayName>false</useDisplayName>
    </urlBuilder>
    ...
</links>

在Linux上使用redsocks, shadowsocks/v2ray进行全局代理

0x1.引用

http://wonderkun.cc/index.html/?p=394

0x2.背景介绍

由于所处的网络环境被限制,无法使用Aria2等BT工具下载种子,所以只能使用代理伪装一下
把所有流量都转发到代理服务器上.

0x3.前提

默认电脑上已经安装shadowsocks, v2ray等代理软件,并打开了1080(socks5)代理端口,或其它的代理方式.

0x4.安装redsocks

本篇主角redsocks登场, 首页安装redsocks,这里使用仓库安装sudo apt install redsocks
安装完成以后,默认配置文件:/etc/redsocks.conf
一些常用的命令:

sudo service redsocks start     #打开redsocks
sudo service redsocks stop      #停止redsocks
sudo service redsocks restart   #重启redsocks

sudo systemctl enable redsocks  #开机启动redsocks
sudo systemctl disable redsocks  #停止开机启动redsocks

v2ray-plugin & v2ray as server

引用

https://www.viagle.cn/blog/0015661425086431d7c969c88854e5294d6b8ee4efc3c13000
https://github.com/v2ray/discussion/issues/173

说明

在上一篇里shadowsocks v2ray-plugin websocket tls nginx, 我们介绍了v2ray-plugin的使用方法, 客户端[Client]: shadowsocks + v2ray-plugin , 服务器[Server]: nginx + shadowsocks + v2ray-plugin,
现在把服务器端修改为:nginx + v2ray. 配置文件和之前的v2ray配置稍为有点不同。

步骤

如果想用 v2ray做服务器[server], shadowsocks + v2ray-plugin做客户端[client]的话需要在server

  • 设置一个任意门(tag:ws-in),地址设置为 v1.mux.cool,传输协议设置websocket
  • 设置一个ss inbound (tag:ss-loc),传输协议不配置
  • 设置一个freedom outbound (tag: ws-out),redirect到 ss-loc这个inbound
  • 配置路由 ws-in -> ws-out,ss-loc -> 默认freedom

shadowsocks v2ray-plugin websocket tls nginx

Shadowsocks 使用v2ray-plugin插件 与nginx配置

引用

https://github.com/shadowsocks/v2ray-plugin
https://gist.github.com/shuanghua/c9c448f9bd12ebbfd720b34f4e1dd5c6
https://github.com/M3chD09/shadowsocks-with-v2ray-plugin-install
https://github.com/shadowsocks/v2ray-plugin/issues/48
https://github.com/v2ray/discussion/issues/173

说明

从去年开始就一直再使用v2ray+websocket+nginx, 一直都很稳定, 也有可能是人个使用流量比较小, 也是不完全是之前SS(SSR)也是个人使用, 不知道为什么就被封了, 哈哈,
简单说下v2ray使用过程,

  • 服务器端(linux)很好部署一行命令就搞定了,bash <(curl -L -s https://install.direct/go.sh),
  • windows客户端v2rayN也很好使用, 和windows版的$$差不多, 简单配置一下就好了,
  • 最主要的是Anroid客户端, 后台常驻,又不想单独设置, 所以自动分流比较重要 常用的:
    • bifrostV 不开源,有广告, 自动分流比较好使
    • v2rayNG 开源, 无广告, 自动分流不太好使
    • Kitsunebi 今年才听说, 尝试了, 自动分流效果一般

以上几个就自动分流效果都不能和SS的GFW列表相比, 今天正好有时间看了一下v2ray-plugin. 有了之前v2ray+websocket+tls+nginx的经验, 这次的配置相对简单.

Sitecore custom language prefix in the requested URL 2[Sitecore自定义URL中的语言前缀 2]

Sitecore自定义语言前缀 方式二[更简单][推荐]

引用

https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/repost-overriding-sitecore-39-s-logic-to-determine-the-context-language
https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/prevent-the-sitecore-asp-net-cms-from-interpreting-url-path-prefixes-as-language-names

今天我们主要说明一下, 如果自定义URL中的语言前缀, Sitecore 默认语言前缀: en, zh-CN, zh-TW, it-IT...
以简体中文为例: Sitecore默认URL路径中都会包含zh-CN, http://www.xxx.com/zh-CN/about

目标

zh-CN替换为cn, 访问http://www.xxx.com/cn/about 能够正常显示简体中文页面.

分析

上篇博客中我们已经实现了此功能, 但是有点复杂, 后来我又做了些尝试,找到了更新简单的方法.
不需要重写LanguageResolverItemResolver, 只需要重写StripLanguage就可以了, LinkProvider保持不变
我们知道了StripLanguage pipeline, 它会自动识语言前缀删除并重定向, 我们要做的就是识别自定义语言前缀, 并把它转换为相应的语言,然后再重定向.
实现上面的目标, 要自定义2个pipeline.

  • 重写Sitecore.Pipelines.PreprocessRequest.StripLanguagepipeline, 识别自定义语言前缀, 并把它转换为相应的语言,然后再重定向.
  • 重写Sitecore.Pipelines.HttpRequest.LanguageResolver pipeline. 把客户端请求URL中的cn转换为zh-CN语言.

Sitecore custom language prefix in the requested URL 1 [Sitecore自定义URL中的语言前缀 1]

Sitecore自定义语言前缀 方法一

已经实现了更简单的方式二, [推荐]

引用

https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/repost-overriding-sitecore-39-s-logic-to-determine-the-context-language
https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/prevent-the-sitecore-asp-net-cms-from-interpreting-url-path-prefixes-as-language-names

摘要

Sitecore 支持多语言, 确定上下文语言的默认逻辑是使用以下面的变量:

  • sc_lang查询字符串参数
  • 请求的URL中路径中的语言前缀
  • 与上下文站点关联的语言cookie
  • 与上下文逻辑站点关联的默认语言
  • web.config 中指定的DefaultLanguage设置

今天我们主要说明一下, 如果自定义URL中的语言前缀, Sitecore 默认语言前缀: en, zh-CN, zh-TW, it-IT...
以简体中文为例: Sitecore默认URL路径中都会包含zh-CN, http://www.xxx.com/zh-CN/about

Puppeteer Headless浏览器与自动化测试

1 Headless浏览器 与 Puppeteer

1.1 Headless 浏览器

无头Chrome在Chrome 59中发布。这是在无头环境中运行Chrome浏览器的一种方式。 基本上,运行没有Chrome的Chrome! 它将Chromium和Blink渲染引擎提供的所有现代Web平台功能引入命令行。

那么这个浏览器可以用来干嘛?

想象一下每次在发版前,测试人员都需要测试系统的功能,重复且乏味。于是你决定让程序自动测试界面上的功能。你不需要浏览器有GUI界面,想通过编程的方法来驱动浏览器进行各种操作,并且希望能在服务器端运行,这样每次发版前就可以自动测试相关功能,提高测试效率。

以上只是一个应用场景,Headless浏览器可以理解为没有GUI界面的浏览器程序。由于没有界面,所以在速度上比普通浏览器稍快,它可以在自动化测试、性能检查、获取元数据(例如爬虫)和网页截图等方面发挥用途。

1.2 Puppeteer 介绍

Puppeteer 是一个 Node 库,它提供了高级的 API 并通过 DevTools 协议来控制 Chrome(或Chromium)。通俗来说就是一个 headless chrome 浏览器 (也可以配置成有 UI 的,默认是没有的)

Puppeteer API可用于截取屏幕截图,创建PDF,导航页面以及从页面获取信息等.

Puppeteer API 官方参考链接: https://pptr.dev/, Puppeteer API 中文版参考链接: https://zhaoqize.github.io/puppeteer-api-zh_CN/

Android Google Play 安装游戏时出现错误代码: 492及解决方法

背景

Android 手机无法在Google Play下载大型游戏(特指需要附加数据), 总是提示"错误代码: 492". 但下载普通应用和游戏(eg: 海岛奇兵)都没有问题.
在网上找了各种方法[清缓存, 清数据, 进入 Recovery 中清除 Dalvik cache] 都不行.

手机信息

  • 小米8
  • 内存及存储: 6+64G
  • Anroid 版本: 9 pie,
  • MIUI 版本: MIUI 10.3 by xiaomi.eu 9.1.3 开发版

原因

在一次偶然的机会下, 我发现内存卡的"Android/obb"目录为空且无法创建文件及子目录, 而且该目录修改日期为"1970/02/18"
该目录就是存储游戏附加数据的目录, 如果无法写入那些大型游戏肯定无法安装.

0-6岁 儿童书单推荐

说明

今天朋友让整理一下给孩子买的绘本书籍, 我孩子四岁半了, 给他买的绘本基本上都在JD买的, 就把近2-3年的历史订单都查了下, 看还挺多,
整理列表如下, 如果你也正在查看 儿童绘本及书籍, 也可以参考一下.

没有按年龄排序[请自行查看书本适用年龄]
推荐JD图书活动时购买, 价格便宜

书单列表

西游记(幼儿版 1-6 套装共6册)
https://item.jd.com/11344440.html

彩书坊:365夜宝宝睡前故事全集(套装共2册)
https://item.jd.com/11279582.html

.....

Tasker Android SIM 双卡自动切换数据(dual sim card switch)

效果图

https://i.loli.net/2018/09/12/5b97fc5c31603.gif

背景

最近买了物联网卡(卡2), 只作为上网使用, 接电话发短信还是使用联通主卡(卡1). 手机虽然双卡双待,
但是只能一个卡设置为4G, 正常情况下, 把卡2设置为4G用来上网, 卡1自动设置为2G/3G接打电话.
由于出租屋内2G/3G基本没信息号, 每次回到住的地方都需要手动把卡1设置主卡(4G). 然后每次出门后再把卡2设置主卡.
大多数都忘记设置, 电话短信也接不到, 这两天有时间研究了一下 Tasker, 实现根据某些条自动切换双卡数据流量.

目标

根据连接到特定的WIFI(住处)来实现双SIM卡数据流量的自动切换, 本文主要目的就是得到下面二行命令:

service call isub 24 i32 1   #24是我们要通过下面步骤查找出来的, 不同的手机数字是不同的, 需要你自已查找
service call isub 24 i32 2

Viagle Blog

欢迎来到我的个人博客网站