TLingC's Zone
TLingC's Zone

TLingC's Zone
搜索什么...

使用Jenkins持续集成部署QQ小程序

QQ小程序提供了Docker镜像来对小程序项目进行CI构建(文档)。文档中提供的Github Actions及Drone CI两种CI工具都对Docker的相关操作进行了深度集成,以至于不需要调用docker自身的命令。 而改写成Jenkinsfile也很简单,在检出代码后,只需要先拉取镜像然后运行即可。 操作步骤 在QQ小程序后台获取AppToken,然后赋值到环境变量PLUGIN_APPTOKEN。 在检出代码后,新建一个拉取镜像的stage,拉取镜像。 stage('拉取镜像') { steps { sh 'docker pull qqminiapp/build:la…

20   2020-02-08  

让ThinkPHP 6.0语言包支持多级分组

最近在做一个多语言网站项目,需要给一个多级导航栏编写语言包。虽然ThinkPHP 6.0多语言功能引入了语言分组,但其分组最深只能支持两层,在如我的这种情况下无法满足需要。 可通过修改框架src/think/Lang.php来实现多层级的支持。 在src/think/Lang.php中,替换对应方法: public function has(string $name, string $range = ''): bool { $range = $range ?: $this->range; if ($this->config['allow_group'] && strpos($name, '.')) { …

27   2020-02-05  

ThinkPHP 6.0 多语言优化扩展包

think-lang ThinkPHP 6.0 多语言优化扩展包 特色 支持通过如 mywebsite.com/zh-hans/ 的二级目录访问对应语言页面。 支持每种语言的语言包单独成目录,目录下可设有二级目录。 安装 composer require tlingc/think-lang 使用 基础配置 请参照 官方文档 进行相关配置。同时注意如下与官方文档的不同点。 开启和加载语言包 中间件名称为: 'tlingc\lang\middleware\LoadLangPack', 由于多语言通过二级目录访问,使用Cookie保存语言 功能无效。 语言文件定义 自动…

75   2020-02-04  

ThinkPHP 6 多模型下事务处理

mysql下,事务不是针对某个特定的表或者特定的模型的,因此在多模型的情况下,不需要针对每个模型分别startTrans、commit和rollback。即使模型中有继承startTrans方法,可以通过Model::startTrans();启动事务,但其作用等同于Db:startTrans();。因此可以直接写为以下形式。 通过测试,在出现异常时,通过图中自增值可看出(自增值在rollback时也会增加),三个模型尝试新增数据都被rollback。同时把Table3中的name字段改为test233的操作也没有成功。 <?php namespace app\cont…

42   2020-01-20  

https://tlingc.com/wp-content/uploads/2020/01/TIM截图20200109163548.jpg

防御Source Engine Query泛洪攻击(一)

Source Engine Query泛洪是使用Source引擎游戏服务器的查询协议来进行的攻击,攻击者只需要发送一小段数据包,服务端会返回几倍的数据,形成反射性攻击。由于正常玩家在查询服务器时也会使用到此协议,因此不能直接封禁,否则将影响正常玩家。我的策略是对数据包进行限流,若超出阈值则拉黑,使用linux iptables来实现,主…

42   2020-01-09  

修改linux iptables recent模块的ip_list_tot参数

linux下iptables的recent模块默认一个表只能保存100条数据,不能满足需求,因此需要把这个参数调高一点。 起初找到这个配置文件,位于sys/module/xt_recent/parameters目录下,由于是内核级模块,在root下也没有权限直接修改,因此需要用以下办法。 首先先清理iptables的现有规则(记得备份现有规则)。 iptables -F 然后先删除模块。 rmmod xt_recent 调整配置 modprobe ipt_recent ip_list_tot=50000 重新配置iptables规则。 查看最新配置,如果返回的是调整后的…

56   2020-01-09  

小程序云开发 - 二维码生成工具

wxcloud-qrcode-generator 小程序云开发 - 二维码生成工具 实现 根据前端传递到需要生成的内容,生成二维码后上传至云存储,返回对应文件的URL。 二维码生成使用了qrcode库,可参考:https://www.npmjs.com/package/qrcode 使用 wx.showLoading() wx.cloud.callFunction({ name: 'qrcode_generator', data: { text: '需要生成的文字内容' }, complete: res => { wx.hideLoading() wx.previewImage({ urls: [res.result], }) }, fail: err…

70   2019-12-14  

https://tlingc.com/wp-content/uploads/2019/12/TIM截图20191208174038_conew2.jpg

在Composer中使用自己修改的包

在使用composer组件时,有时候需要对包进行一些自定义修改,有一些教程中写需要修改composer.json,然后发布到Packagist,但如果只是适应自己需求所作的小修改,其实并没有必要发布到Packagist,而这样做也是Packagist不推荐的: Do not submit forks of existing packages. If you need to test changes to a package…

73   2019-12-08  

解决微信小程序在7.0.8及电脑版上的cookie问题

微信小程序在7.0.8版本及电脑版上,response header的Set-Cookie参数变成小写,可能导致通过直接获取res.header['Set-Cookie']来存储Cookie的方法不可用。 这个问题在7.0.8上首次出现(我当时使用的是测试版),而电脑版长期有这个问题(我原本以为是电脑版还不完善导致不兼容,直到这个问题在手机版上也出现了)。 解决方案: 通过先遍历res.header,把参数转小写后判断。 let found = false for(let header in res.header){ if(header.toLocaleLowerCase() == 'set-cookie')…

147   2019-11-10  

让vscode支持格式化laravel blade模版文件

安装以下两个扩展: 名称: Laravel 5 Snippets id: onecentlin.laravel5-snippets 说明: Laravel 5 snippets for Visual Studio Code 版本: 1.7.0 发布者: Winnie Lin VS Marketplace 链接: https://marketplace.visualstudio.com/items?itemName=onecentlin.laravel5-snippets 名称: Laravel Blade Snippets id: onecentlin.laravel-blade 说明: Laravel blade snippets and syntax highlight support 版本: 1.20.0 发布者: Winnie Lin VS Marketplace…

137   2019-10-30  

在ThinkPHP中使用Laravel Mix

参照Laravel Mix文档,可以用在独立项目中,因此可以在ThinkPHP根目录下,参照Laravel项目,建立如下两个文件: package.json { "private": true, "scripts": { "dev": "npm run development", "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "npm run development -- --watch", "watch-poll": "…

219   2019-10-15  

解决微信小程序自定义tabbar点击态问题

项目在使用ColorUI内的custom-tab-bar示例,发现在手机上测试时切换到其它tab,点击态有时候会跳到第一个tab页后然后才到我选中的tab,但是在开发者工具上又不会出现这种问题。 之后参考了微信小程序的文档的 示例代码片段,以及 社区上类似问题的帖子,感觉是小程序本身的问题。 今天再看了一遍自定义tabBar的文档,发现有这么一句话: 每个 tab 页下的自定义 tabBar 组件实例是不同的,可通过自定义组件下的 getTabBar 接口,获取当前页面的自定义 tabBar 组件实例。 也就…

505   2019-10-02  

小程序提示组织目录结构的处理方法

给小程序添加functions文件夹创建云函数后,编译时出现以下提示: 文件 functions/xxxxxx/xxxxxx.js 在 project.config.json 'cloudfunctionRoot' 指定的目录, 如果不希望在小程序/小游戏的运行环境中执行该文件,请使用 project.config.json "miniprogramRoot" 组织项目目录结构 此时如果执行构建npm,系统会把云函数文件夹下面的函数依赖也视为运行环境中需要使用的组件,会读取package.json的依赖,并且构建到miniprogram_npm文件夹中,但云函数的依赖不需要使用…

215   2019-09-29  

Chrome批量删除历史记录

在Chrome中的历史记录管理器中,UI上没有显示有多选功能,在设置中的“清除浏览数据”功能也只能根据时间范围来删除,如果要删除特定的数据的话显得极为不便。 但实际上,Chrome有一个“隐藏”的多选功能,可以通过使用Shift按键来进行多选。选中第一条需要删除的记录,然后按住Shift,再选中最后一条记录,即可完成在这个范围内所有记录的选中。而根本不需要一条一条记录去人工操作选中,或者用审查元素自己写js脚本进行批量选中等的麻烦的方法。

143   2019-09-27  

Composer检查可以更新的包

如果要为本地已经安装的composer包检查更新,可以用这个命令: composer show -o 运行后,会列出可以更新的包名称,以及当前版本和最新版本。

98   2019-09-17  

加载更多