我们构建组除了负责bk-ci插件开发,还负责监控使用构建平台的所有项目的打包流水线、质量检查流水线的执行情况。
最初,这些都是让实习生来手动查看质量流水线的执行情况、再做表,跟进、然后手动发到群里。
今年中,我在研究了bk-ci的API后,已经将其改为自动抓取和生成报表,但仅作为参考。 报表使用Velocity
模版引擎生成,是一个HTML
文件,然后通过邮件发送。
不过邮件的实效性并不强,有时候会积累很多封邮件,也不知处理了没有。
阅读全文
我们构建组除了负责bk-ci插件开发,还负责监控使用构建平台的所有项目的打包流水线、质量检查流水线的执行情况。
最初,这些都是让实习生来手动查看质量流水线的执行情况、再做表,跟进、然后手动发到群里。
今年中,我在研究了bk-ci的API后,已经将其改为自动抓取和生成报表,但仅作为参考。 报表使用Velocity
模版引擎生成,是一个HTML
文件,然后通过邮件发送。
不过邮件的实效性并不强,有时候会积累很多封邮件,也不知处理了没有。
阅读全文
Gradle
是一个非常灵活、强大的构建系统,但其概念也相对复杂,但只要抓住核心,做好区分,就不会觉得混乱。
下面的构建脚本,是否觉得难以理解:
buildscript {
构建脚本依赖的仓库
repositories {
mavenCentral()
}
// 构建脚本依赖
dependencies {
classpath 'com.android.tools.build:gradle:4.2.0'
}
}
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
implementation 'com.google.guava:guava:30.1-jre'
testImplementation 'junit:junit:4.13.2'
}
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.jvm' version '1.5.10'
}
当请求URL返回的cookie中expires
为如下格式时,
Expires=Mon, 26 Apr 2021 14:34:27 GMT
报错:
Invalid 'expires' attribute: Mon, 26 Apr 2021 14:34:27 GMT
按网上说法修改CookiePolicy
或CookieSpec
,实际都无效果。这是因为使用的httpclient库并不支持这种新格式(定义于RFC 6265
)。
可以使用Apache HttpClient5
解决此问题,此版本已支持最新格式。这是一个新版本,有不同的artifactId
。
Maven中使用如下方式引用依赖:
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5 -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5-fluent -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5-fluent</artifactId>
<version>5.1.3</version>
</dependency>
为什么不打开编辑器呢?
因为构建机GPU配置太差了,打不开……
这里介绍个直接修改UE4配置文件的方法。
在BaseEngine.ini
中,设置如下变量即可:
[/Script/AndroidPlatformEditor.AndroidSDKSettings]
SDKAPILevel=latest
NDKAPILevel=android-21
SDKPath=(Path="D:/Android/SDK")
NDKPath=(Path="D:/Android/NDK")
JavaPath=(Path="D:/Android/OpenJDK")
特别注意JDK路径的Key
是JavaPath
,而非官方文档上写的JDKPath
,我这里使用的为UE4.27,测试可用。
调用apktool工具签名apk时遇到sun/misc/BASE64Encoder
报错。
是因为此类只在jdk1.8之前的版本存在,jdk9以后的版本,就不存在了。
检查环境的JDK版本为11,所以会报错。
解决办法也明了,安装JDK8。
这里介绍个Windows 10下一键安装JDK8的方法,直接cmd窗口执行以下命令即可:
winget install AdoptOpenJDK.OpenJDK.8
安装后,JDK位于C:\Program Files\AdoptOpenJDK\jdk-8.0.292.10-hotspot
Windows10 WSL2安装Linux发行版,报错WslRegisterDistribution failed with error: 0x800701bc
此报错原因是未下载安装WSL2 Linux内核更新包。
可访问此处下载。
或直接下载,链接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
阅读全文
共享组件、工具和SDK
的路径不能更改
可以通过删除注册表解决,注册表路径:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup
右键 SharedInstallationPath
和 CachePath
删除即可。
与Ant
只有build.xml
,Maven
只有pom.xml
不同,使用gradle
的项目一般有以下几个文件:
gradlew
gradlew.bat
build.gradle
gradle.properties
gradle/gradle-wrapper.jar
gradle/gradle-wrapper.properties
在调用顺序上,gradlew
(Windows下为gradlew.bat
)读取gradle.properties
配置文件内容,然后执行build.gradle
构建脚本,而build.gradle
脚本可以从gradle.properties
中读取属性值。此设计的好处是用户无需预先安装gradle到本地,gradlew脚本会自动下载。下文会详述。
1、kotlin
是基于JVM的编程语言,与Java类似,且可与Java互操作;
2、kotlin-plugin
是IDEA和Android Studio的IDE(集成开发环境)支持插件;
3、gradle
是构建工具,与Ant
、Maven
类似,用于代码到编译、测试、打包等;
4、kotlin-gradle-plugin
是使用gradle构建kotlin项目必须添加的gradle插件。
下面详细介绍:
阅读全文
Gradle
中配置依赖,如果不指定版本,是会报错找不到依赖的。
但如果依赖很多,还需要去仓库一个个看依赖库的最新版本是多少。
那么gradle是否支持直接使用依赖的最新版本呢?
答案是肯定的,不过在gradle
的文档中并没有在显著位置标识。
方式就是在version
处填加号+
,gradle
就会去自动识别最新版本去下载。
全部指定最新版本后,再根据日志去解决个别依赖冲突报错,事半功倍。
阅读全文下载地址(LTS版本):Download .NET 6.0 (Linux, macOS, and Windows)
只包含运行控制台应用的组件。需要另外安装ASP.NET Core运行时和 .NET Desktop运行时。
运行web/服务器应用。在Windows上推荐安装Hosting Bundle,包含了.net运行时和IIS支持。
运行Windows桌面应用。包含了.net运行时,不需要再单独安装。
阅读全文
机器人示例: https://github.com/lich0821/WeChatRobot/
库: https://pypi.org/project/wcferry/
阅读全文
Unity国际版下载页面经常无法打开,而Unity Hub
目前绑定的都是Unity中国版。可直接复制下面的连接到浏览器,回车访问会自动调用Unity Hub进行下载,一键直达。
介绍两种方式。一、使用antcontrib提供的listener命令示例:ant main -listener net.sf.antcontrib.perf.AntPerformanceListener统计数据输出到文件(可选):-Dperformance.log=/tmp/performance.log 输出示...
阅读全文
可以使用uncompyle6
工具
使用pip可以直接安装:
pip install uncompyle6
反编译命令(两种形式):
uncompyle6 xxx.pyc > xxx.py
uncompyle6 -o xxx.py xxx.pyc
示例:
uncompyle6 utils.pyc > utils.py
gradle使用daemon相当于热启动,可以节省构建时间。但在持续集成环境下为了保证环境一致性,或避免daemon进程冲突,可以禁用deamon功能。
在${HOME}/.gradle/gradle.properties
文件中添加:
org.gradle.daemon=false
VisualSVN for Visual Studio
VisualSVN是一个专业级的 Visual Studio Subversion集成插件。
VisualSVN的主要优点是:
无与伦比的可靠性:Visual Studio永远不会因为VisualSVN崩溃或挂起。
无缝集成:可视化SVN自动处理添加或重命名文件,并将这些操作反映到Subversion。
实时状态:VisualSVN仔细跟踪并显示所有对当前工作副本所做的更改。
学习曲线短:VisualSVN利用TortoiseSVN对话框并提供了一个智能向导来将源码放入SVN。
访问官网下载:VisualSVN
阅读全文
1、快捷键Ctrl+R
打开“运行”,输入regedit
打开注册表
2、找到\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
3、右键“新建”,选择字符串值
4、名称根据实际情况填写,完成后双击填写数值数据
,这里填要启动的可执行文件或脚本即可
按如下步骤操作:
使用Visual Studio Code
打开C:\Program Files\NVIDIA Corporation\NVIDIA GeForce Experience\www\app.js
"choose"===\w\.nvActiveAuthView[\D]*\)\}
替换为
"choose"===this.nvActiveAuthView)};this.handleLoggedIn({sessionToken:"",userToken:"",user: {core:{displayName:"codefaq.cn",primaryEmailVerified: true}}});
可忽略证书检查,增加--no-check-certificate
参数。
例如,报错命令:
wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
修改为:
wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
1、临时关闭
执行命令setenforce 0
临时关闭SELinux
2、永久关闭
a. 打开selinux配置文件
vi /etc/selinux/config
b. 找到SELINUX=enforcing
,按i进入编辑模式,将参数修改为SELINUX=disabled
。
c. 修改完成后,按下键盘Esc
键,输入命令:wq
,保存并退出文件即可。
3、运行命令getenforce
,验证SELinux
状态为disabled
,表明SELinux
已关闭。
查看firewalld状态:
systemctl status firewalld
临时关闭firewalld:
systemctl stop firewalld
永久关闭firewalld:
systemctl disable firewalld
1、下载源代码 2、如果下载的是压缩包,先解压缩,然后运行Setup.bat(Windows系统下) 该步骤会下载并安装很多依赖,该脚本支持多线程下载,建议使用多线程下载。从控制台执行命令,如:
setup.bat --threads=20
3、运行GenerateProjectFiles.bat来生成项目文件
4、双击UE4.sln(UE5.sln)使用Visual Studio打开项目
5、(重点)将解决方案配置设置为Development Editor
,解决方案平台设置为Win64
6、右键单击UE4(UE5)目标并选择生成
UE4和UE5的编译方法相同。
阅读全文
包括:导入、创建、构建、分发、加载
上图显示了在 Unity 中使用资源时的典型工作流程。每列代表一个单独的步骤,如下所述:
将资源导入Unity编辑器
使用Unity编辑器通过这些资源创建内容。
构建您的应用或游戏文件,以及可选的随附内容包
分发构建的文件,以便您的用户可以通过发布者或应用程序商店访问
根据您用户的行为以及您对内容进行分组和捆绑的方式,在运行时根据需要加载进一步更新。
阅读全文
1、在Audio Source
设置Spatial Blend
指为1;
2、在Audio Source
的3D Sound Settings
中设置Min Distance
和Max Distance
。
在最小距离内,音频源将以最大音量播放片段。在此距离之外,音量将减小,在最大距离,用户将不再听到音频。
阅读全文
1、确保操作系统版本号大于14352
;
* 操作系统的详细版本号可从“控制面板 - 管理工具 - 系统信息”中的“版本”中找到。
2、从运行窗口中打开Gpedit.msc
;
3、依次打开本地计算机策略 - 计算机配置 - 管理模板 - 系统 - 文件系统
,找到启用 Win32 长路径
设置为已启用
。
准确说,Node.js
不是编程语言,而是一个运行时,和JVM
类似。
Java
运行在JVM
上,Javascript
运行在Node.js
上。
一言以蔽之,Node.js
是一个基于Chrome V8引擎的JavaScript
运行时环境。
打AB时,增加BuildAssetBundleOptions.DeterministicAssetBundle
选项。
此选项可以保证AssetBundle使用唯一Hash进行标识,若不加这个选项AssetBundle每次构建时都生成不同ID。
阅读全文BuildAssetBundleOption.DisableWriteTypeTree
不包含AssetBundle中的类型信息。
阅读全文
1、 在 Unity > Preferences > External Tools中,将External Script Editor
设置为Visual Studio(确保勾选了Editor Attaching
选项
2、在Visual Studio中,根据希望停止调试器的代码行,设置断点。
3、在Visual Studio中,将代码编辑器连接到Unity Editor。
4、在Unity中进入播放模式。
详情参考官方文档:https://docs.unity3d.com/cn/2019.4/Manual/ManagedCodeDebugging.html
阅读全文
需要将所有文件/文件夹写入到文件中,每行一个,再使用-F
命令指定文件。
类似:
svn ps svn:ignore -F IgnoreFileList.txt .
使用propset
目录设置svn:ignore
,可简写为ps
。
当前目录下忽略.class文件:
svn propset svn:ignore *.class .
FTP的passive
参数用于开启FTP被动模式。
那么,FTP的被动模式是什么意思,是不是还有主动模式(有),它们有什么区别呢?
简言之,被动模式传送数据是“客户端”连接到“服务器”的端口。主动模式传送数据时是“服务器”连接到“客户端”的端口。
FTP默认为主动模式(port模式)。
阅读全文
原因是Unity项目未和使用的Visual Studio关联。
按如下步骤操作即可:
Edit
–>preferences
External Tools
,选中External Scripts Editor
,下拉框中修改,选中自己使用的Visual Studio版本此后不论是从Unity中打开项目,还是直接在资源管理器右键使用Visual Studio打开Unity项目,脚本方法都能正常跳转了。
阅读全文
可参考如下配置:
server {
listen 80;
server_name xxx.com www.xxx.com;
return 301 https://$host$request_uri;
}
使用COPY命令。
基本语法:COPY [OPTIONS] source destination
即直接COPY 源文件路径 目标路径
即可。和Linux的cp命令类似。
但Windows的COPY命令只能复制文件,不能复制文件夹。
常用选项有/V
和/Y
,/V
是验证新文件写入是否正确,/Y
是不使用确认是否要覆盖现有目标文件的提示。
简言之,log4j2是Apache基金会的一个开源项目,用于Java程序中打印日志,Apache Log4j 2
是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback 架构中的一些固有问题。
title: iOS打包签名报unable to build chain to self-signed root for signer,CodeSign failed with a nonzero exit code解决办法 author: 唐明 date: 2021-12-22 categories: [iOS] tags: [iOS] —
关键在于这一句:unable to build chain to self-signed root
简言之,armv6、armv7、armv7s、armv8、arm64都是ARM处理器的指令集。
那么ARM处理器又是什么呢?
阅读全文
Android App Bundle是一种发布格式,其中包含应用的所有经过编译的代码和资源,它会将APK生成及签名交由应用商店来完成。
阅读全文
BOOTCDN:https://www.bootcdn.cn/
BootCDN是极兔云联合Bootstrap中文网共同支持并维护的前端开源项目免费CDN服务,致力于为Bootstrap、jQuery、React、Vue.js一样优秀的前端开源项目提供稳定、快速的免费 CDN 加速服务。BootCDN 所收录的开源项目主要同步于cdnjs开源项目仓库。
自2013年上线以来已经累计为近百万网站提供了稳定、可靠的免费 CDN 加速服务。
截至目前共收录了4060个前端开源项目。
阅读全文
简言之,这是Windows的安全策略设置使得administrator的管理员权限需要批准。
可以按如下步骤修改这个策略:
按Windows+R键,打开“运行”(或者开始菜单上右键选择“运行”),然后输入“gpedit.msc”,就是打开组策略,这个在控制面板中也可以打开
在组策略里找到“计算机配置”-“Windows设置”-“安全设置”-“本地策略”-“安全选项”
在“安全选项”里找到“用户帐户控制-以管理员模式批准运行所有管理员”这项
禁用此选项
这是因为缺少android-28的SDK,安装即可。
一般介绍的方式是安装Android Studio,再使用SDK Manager来安装缺失版本的SDK。但这样太复杂了,这里介绍一个简单的方法。
阅读全文
将关键字使用引号引住,再用或符号 | 分割即可。 |
有时候自然会想到用|,但是|在shell命令中又表示通道,可能就想不明白能不能用了。其实再进一步加上引号就能区分了。 如:
grep -E 'Start|Finish' <filename> // 使用-E选项,过滤出文件中包含Start或者Finish的行
egrep 'Start|Finish' filename // 使用egrep可以免去-E选项,默认支持
for /f "tokens=2" %%i in ('svn status') do echo %%i
如果是在cmd命令行界面使用,则将%%I
替换为%i
,即:
for /f "tokens=2" %i in ('svn status') do echo %i
代码调试过程中,可能在当前git工作目录下添加许多文件,达到目的后希望恢复代码到初始状态。
make
有make clean
命令,mvn
有mvn clean
命令,jekyll
有jekyll clean
命令。
那么git有没有git clean
命令呢?
答案是肯定的!
git-clean - 从工作目录(working tree)中删除未跟踪的文件
这是git clean的dry-run模式。不会实际删除文件,只是会列出如果实际执行会删除的文件内容。 我们可以先执行这个命令将输出和预期进行对比。
清空工作目录的未跟踪文件。
-e
选项可以根据表达式排除更多文件。
保存为gongan.png
位置:/var/www/html/static/common/gongan.png
修改文件:/var/www/html/views/default/global/footer.tpl.htm
,插入到期望位置。
备案网站生成的代码中有一段为:
<img src="" style="float:left;"/>
在src
处填入图标路径:
<img src="static/common/gongan.png" style="float:left;"/>
第一行代码为:
<div style="width:300px;margin:0 auto; padding:20px 0;">
备案信息通常放在网站底部,默认的样式上下间隔太大,不美观。可将padding:20px 0;
删除。
小屏幕下访问网站会发现底部的备案信息很突兀,观察腾讯网手机版发现,其在手机访问时,并未显示此类信息。
我们也可以设置隐藏。
在第一行div
增加class = "hidden-xs"
即可。
修改是实时生效的,不需要重新加载配置或重启服务进程。
阅读全文yum install -y epel-release
rpm install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum install mariadb-server
mysql_secure_installation
mysql -u root -p
输入上一步设置的密码。
sudo systemctl start mariadb
systemctl status mariadb
systemctl stop mariadb
systemctl restart mariadb
阅读全文本文首发在微信公众号“DevOps持续交付”上,公众号ID:devopscd,欢迎关注。
参考:两者都是采用Java语言编写的持续集成开源工具。
实际上,Jenkins是Hudson的一个分叉(fork)。
阅读全文配置好Jenkinsclient后,就可以通过命令来操作Jenkins了!
jenkinsclient的命令格式是:
jenkins GROUP | COMMAND
GROUP
是指一组命令,比如job
是一个组命令,它有以下命令:
jenkins job build //构建任务
jenkins job copy //复制任务
jenkins job create //创建任务
jenkins job delete //删除任务
jenkins job disable //禁用任务
jenkins job enable //启用任务
jenkins job has //查看任务是否已存在
jenkins job info //显示任务信息
jenkins job ls //显示任务列表
jenkins job rename //重命名任务
jenkins job xml //显示任务的config.xml内容
今天我们先不介绍组命令,先介绍第一层的COMMAND
。这些命令基本用来查看各种信息。
APP模式可以在独立窗口中操作Jenkins。体验就好像在操作APP一样。
命令:
jenkins app
视频演示:
阅读全文Jenkinsclient是一个功能强大的开源跨平台的Jenkins命令行客户端。提供类似Docker风格的命令行来让用户操作Jenkins。
Jenkinsclient使用Python语言编写,项目源码采用国产木兰开源许可证开源。你可在Gitee和Github上查看。
Gitee: https://gitee.com/hummerstudio/jenkinsclient
Github: https://github.com/hummerstudio/jenkinsclient
项目主页:https://pypi.org/project/jenkinsclient
阅读全文通过Jenkins来启动进程是一个实际工作中比较常见的场景。
但是正常情况下,通过Jenkins Job启动的进程,在构建结束后,都会被Jenkins杀死。
阅读全文自动化是一个革命性的概念和技术。
第一代自动化是天地系统的自动化,即万物的生长。
天阳供能,地阴成形,古圣人察而用之。顺四时,因地宜,谓之无为。无为非不为,乃顺自然而为。
这一代的自动化,是天、地、人三要素。
天气,反映太阳能的供给强度和总量。天气之变,大分为四季,小分为二十四节气。地形,各有不同,故因地制宜;人,须在合适的天时地利处播种、浇水、施肥、投喂,如同与天地合奏,故谓之人和。
天地虽然已自动化,但对人而言,需要在合适的时间节点采取合适的行动,才能让万物按人类的意愿生长。
阅读全文Jenkinsclient是一个功能强大的开源的跨平台的支持多实例的Jenkins命令行客户端。项目采用国产木兰开源许可证开源。
日前正式发布了1.0版本。
PyPI项目主页:https://pypi.org/project/jenkinsclient/
阅读全文PyPI是”Python Package Index“的缩写,翻译为中文是“Python软件包索引”。
PyPI是Python语言的软件存储仓库。
阅读全文Jenkins拥有的1500+插件是其最宝贵的资源和特色,这些插件为Jenkins提供了强大的功能、灵活性以及与其他平台连接交互的能力。
然而最近一段时间以来,国内用户明显感觉到,Jenkins下载插件的速度非常慢,并且经常出现超时无法下载的情况。这个问题给国内用户带来了很大的困扰。
这主要是因为Jenkins开源社区的网络基础设施服务器都在国外。
2019年11月,Jenkins中文社区推出了国内镜像源地址。
该镜像源解决了其他镜像源一直存在的无法真正使用的问题,使得国内用户在下载插件时能充分发挥出宽带应有的速度。
阅读全文Jenkins为您提供了两种开发管道代码的方式:脚本式和声明式。
脚本式流水线(也称为“传统”流水线)基于Groovy作为其特定于域的语言。 而声明式流水线提供了简化且更友好的语法,并带有用于定义它们的特定语句,而无需学习Groovy。
Jenkins的流水线插件版本2.5引入了对声明式流水线的支持。
在本文中,我们将介绍开发声明式流水线脚本的所有可用指令,这将清楚地说明其功能。
阅读全文Docker Preferences选项中勾选”Enabel Kubernetes”启用K8S,但其一直处于starting
状态,无法正常使用。
启用Kubernetes功能,Docker需要从镜像仓库拉取Kubernetes相关镜像。
由于国内访问Docker Hub网速太慢,镜像无法成功拉取,导致Kubernetes一直处于starting
状态。
本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文这几个都是Ruby语言中的概念。下面我分别介绍一下各个名词的含义,并将其与其他类似工具做比较,以便读者理解。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文看过我的其他文章的朋友应该知道,我不太希望写一个碎片化的博客。详情大家可以看这篇文章。
所以我特别希望能够把一些重要的,但被大多数人忽视的,甚至有多年行业经验的人可能不曾看过的官方参考书纳入到我的博客中来,为读者朋友们提供帮助。
经过一番努力,终于给博客增加了维基功能,我将之命名为“参考书”。
阅读全文我这个人其实不太爱写博客。
上大学的时候,学习方法就是看书。先看教科书,教科书看完了,就去图书馆看书。当然,都是要边看边动手的。
书看的没劲了,就到网上找视频教程,生动形象。
阅读全文本站之前使用的是官方的 Merlot 主题。代码库地址:https://github.com/pages-themes/merlot。
在此基础上我修改了 CSS 对布局和样式等做了调整,但一直有一些痛点没有解决。
我在使用新主题时,发现在分类下拉框中,当分类名为中文时,选中该分类,文章列表为空白。
经过跟踪 javascript 源码,发现是中文字符的转义问题。
阅读全文假期因为疫情没有回家,呆在屋里闲来无事,对 Jenkins 进行一番更深入的了解,看了看 Jenkins 源码。
平心而论,Jenkins 的官方文档,可以说是我见过的开源项目里最差的。
首先是混乱,不像其他的项目,有很统一的文档入口。
其次是内容不全,很难找到官方对 Jenkins 架构及使用细节的完整描述。
阅读全文Certified Jenkins Engineer (CJE) 是 CloudBees 公司(Jenkins 开源项目的主要贡献者)推出的官方 Jenkins 技能认证考试。涵盖三大领域的知识:
本文摘自我在知乎回答的问题
因为这是人类所期望的结果。
而思想决定行为,行为决定结果。
阅读全文
老子《道德经》第三十八章,有如下的章句:上德不德,是以有德;下德不失德,是以无德。这句话很矛盾,到底应该如何理解呢?
就这老罗的人生经历,倒是容易理解。
罗永浩就是这种矛盾体。
阅读全文这两天搭建、上线了这个博客,并开始把以前微信公众号写的一些文章以及平时写下的一些文字搬到上面来,感觉使用体验很好。
虽然技术原理上来讲,Markdown
只是XML
、HTML
等之外的又一种标记语言。但Markdown
的标记是如此地简洁,以至于不但能让文章拥有样式,并且源码几乎不影响阅读。
原有文章只配置了 layout
和 title
,发布后,可以按照 year/month/day/title
的链接格式访问,但增加配置 categories
和 tages
后,再次访问就提示 404 Not Found
。
本文涉及知识点:
HTML5。HTML5
是 HTML
(超文本标记语言) 的最新标准。我们的示例网页是使用 HTML5
编写的。后续如果你想更好地理解使用的主题和进行主题自定义,也需要这方面的知识。
CSS3。CSS3
是 CSS
的最新标准。它用于控制网页样式和布局。后续如果你想更好地理解使用的主题和进行主题自定义,也需要这方面的知识。
参考:只需要将这些环境相同的节点配置同样的标签即可,任务指定这个标签作为运行节点,Jenkins就会自动选择空闲节点来执行任务。 Jenkins中的标签有分类、分组的意思,就像微信通讯录里的标签功能一样。不过设计的不太明显,不知道的话容易将其理解为唯一id来用。
Jenkins,本质上讲,就是一个自动化服务器。
在Jenkins上创建一个任务,并进行配置,这个任务就可以以你希望的方式自动执行。阿基米德曾经说过:“给我一个支点,我就能撬起整个地球”。沃兹基硕德也说过:“给我一个Jenkins,我就能自动化一切”。
阅读全文参考:可以。如以下代码,表示设置超时时间1小时,在流水线全局和阶段(stage)级别都可以设置:
options {
timeout(time: 1, unit: 'HOURS')
}
参考:有一个build
步骤,可以研究一下,支持同步或异步触发。
参考:通俗理解,Blue Ocean可以看作是Jenkins推出的新的UI界面,有更现代的外观和更好的交互。
当然最重要的还是对Jenkins 2.x推出的新的流水线任务类型的支持,可以清晰展示整个流水线(Pipeline)各个阶段(stage)的串并行关系和状态。
阅读全文参考:Jenkins和Docker结合可以将容器作为Jenkins的slave节点,有很多优点。比如实现执行环境的统一,slave的自动创建和销毁,免去了人工维护环境的成本等。
提到编程,不管是行外人还是行内人,都会觉得是个很理性,很复杂,很讲逻辑的事情,和文学扯不上任何关系。
对于行外人来说,编程写的是一堆如同天书的乱码,一眼望去,密密麻麻。单词和符号混杂,放眼望去,一会等于号,一会逗号,一会分号,还有中括号、小括号、大括号……奇奇怪怪,看着都头大。即便不会编程,可能也听认识的朋友介绍过:编程,一个标点符号都不能写错!这么死板的东西,你说是文学?!
对于行内人来说,这些符号虽不再是无意义,但也会觉得整天不是在 if ...else...
,就是 while...do...
、for...do...
,处处可见逻辑判断,每天都要面对 bug
。这么煞风景的东西,你说是文学?!
天降大任于斯人,必先不从其所愿,以使其知世事之曲折不易、之不由心;
必难之,以使其知天之不可依、地之不可靠、人之不可尽信;
必穷尽之、富贵之,而后观其不失其志,以考其心,验其性。
阅读全文
提到编程,不管是行外人还是行内人,都会觉得是个很理性,很复杂,很讲逻辑的事情,和文学扯不上任何关系。
对于行外人来说,编程写的是一堆如同天书的乱码,一眼望去,密密麻麻。单词和符号混杂,放眼望去,一会等于号,一会逗号,一会分号,还有中括号、小括号、大括号……奇奇怪怪,看着都头大。即便不会编程,可能也听认识的朋友介绍过:编程,一个标点符号都不能写错!这么死板的东西,你说是文学?!
对于行内人来说,这些符号虽不再是无意义,但也会觉得整天不是在 if ...else...
,就是 while...do...
、for...do...
,处处可见逻辑判断,每天都要面对 bug
。这么煞风景的东西,你说是文学?!
天降大任于斯人,必先不从其所愿,以使其知世事之曲折不易、之不由心;
必难之,以使其知天之不可依、地之不可靠、人之不可尽信;
必穷尽之、富贵之,而后观其不失其志,以考其心,验其性。
阅读全文参考:两者都是采用Java语言编写的持续集成开源工具。
实际上,Jenkins是Hudson的一个分叉(fork)。
阅读全文Jenkinsclient是一个功能强大的开源的跨平台的支持多实例的Jenkins命令行客户端。项目采用国产木兰开源许可证开源。
日前正式发布了1.0版本。
PyPI项目主页:https://pypi.org/project/jenkinsclient/
阅读全文Jenkins拥有的1500+插件是其最宝贵的资源和特色,这些插件为Jenkins提供了强大的功能、灵活性以及与其他平台连接交互的能力。
然而最近一段时间以来,国内用户明显感觉到,Jenkins下载插件的速度非常慢,并且经常出现超时无法下载的情况。这个问题给国内用户带来了很大的困扰。
这主要是因为Jenkins开源社区的网络基础设施服务器都在国外。
2019年11月,Jenkins中文社区推出了国内镜像源地址。
该镜像源解决了其他镜像源一直存在的无法真正使用的问题,使得国内用户在下载插件时能充分发挥出宽带应有的速度。
阅读全文假期因为疫情没有回家,呆在屋里闲来无事,对 Jenkins 进行一番更深入的了解,看了看 Jenkins 源码。
平心而论,Jenkins 的官方文档,可以说是我见过的开源项目里最差的。
首先是混乱,不像其他的项目,有很统一的文档入口。
其次是内容不全,很难找到官方对 Jenkins 架构及使用细节的完整描述。
阅读全文Certified Jenkins Engineer (CJE) 是 CloudBees 公司(Jenkins 开源项目的主要贡献者)推出的官方 Jenkins 技能认证考试。涵盖三大领域的知识:
参考:只需要将这些环境相同的节点配置同样的标签即可,任务指定这个标签作为运行节点,Jenkins就会自动选择空闲节点来执行任务。 Jenkins中的标签有分类、分组的意思,就像微信通讯录里的标签功能一样。不过设计的不太明显,不知道的话容易将其理解为唯一id来用。
Jenkins,本质上讲,就是一个自动化服务器。
在Jenkins上创建一个任务,并进行配置,这个任务就可以以你希望的方式自动执行。阿基米德曾经说过:“给我一个支点,我就能撬起整个地球”。沃兹基硕德也说过:“给我一个Jenkins,我就能自动化一切”。
阅读全文参考:可以。如以下代码,表示设置超时时间1小时,在流水线全局和阶段(stage)级别都可以设置:
options {
timeout(time: 1, unit: 'HOURS')
}
参考:有一个build
步骤,可以研究一下,支持同步或异步触发。
参考:通俗理解,Blue Ocean可以看作是Jenkins推出的新的UI界面,有更现代的外观和更好的交互。
当然最重要的还是对Jenkins 2.x推出的新的流水线任务类型的支持,可以清晰展示整个流水线(Pipeline)各个阶段(stage)的串并行关系和状态。
阅读全文参考:Jenkins和Docker结合可以将容器作为Jenkins的slave节点,有很多优点。比如实现执行环境的统一,slave的自动创建和销毁,免去了人工维护环境的成本等。
看过我的其他文章的朋友应该知道,我不太希望写一个碎片化的博客。详情大家可以看这篇文章。
所以我特别希望能够把一些重要的,但被大多数人忽视的,甚至有多年行业经验的人可能不曾看过的官方参考书纳入到我的博客中来,为读者朋友们提供帮助。
经过一番努力,终于给博客增加了维基功能,我将之命名为“参考书”。
阅读全文本站之前使用的是官方的 Merlot 主题。代码库地址:https://github.com/pages-themes/merlot。
在此基础上我修改了 CSS 对布局和样式等做了调整,但一直有一些痛点没有解决。
原有文章只配置了 layout
和 title
,发布后,可以按照 year/month/day/title
的链接格式访问,但增加配置 categories
和 tages
后,再次访问就提示 404 Not Found
。
本文涉及知识点:
HTML5。HTML5
是 HTML
(超文本标记语言) 的最新标准。我们的示例网页是使用 HTML5
编写的。后续如果你想更好地理解使用的主题和进行主题自定义,也需要这方面的知识。
CSS3。CSS3
是 CSS
的最新标准。它用于控制网页样式和布局。后续如果你想更好地理解使用的主题和进行主题自定义,也需要这方面的知识。
我这个人其实不太爱写博客。
上大学的时候,学习方法就是看书。先看教科书,教科书看完了,就去图书馆看书。当然,都是要边看边动手的。
书看的没劲了,就到网上找视频教程,生动形象。
阅读全文本文摘自我在知乎回答的问题
因为这是人类所期望的结果。
而思想决定行为,行为决定结果。
阅读全文
老子《道德经》第三十八章,有如下的章句:上德不德,是以有德;下德不失德,是以无德。这句话很矛盾,到底应该如何理解呢?
就这老罗的人生经历,倒是容易理解。
罗永浩就是这种矛盾体。
阅读全文看过我的其他文章的朋友应该知道,我不太希望写一个碎片化的博客。详情大家可以看这篇文章。
所以我特别希望能够把一些重要的,但被大多数人忽视的,甚至有多年行业经验的人可能不曾看过的官方参考书纳入到我的博客中来,为读者朋友们提供帮助。
经过一番努力,终于给博客增加了维基功能,我将之命名为“参考书”。
阅读全文本站之前使用的是官方的 Merlot 主题。代码库地址:https://github.com/pages-themes/merlot。
在此基础上我修改了 CSS 对布局和样式等做了调整,但一直有一些痛点没有解决。
这两天搭建、上线了这个博客,并开始把以前微信公众号写的一些文章以及平时写下的一些文字搬到上面来,感觉使用体验很好。
虽然技术原理上来讲,Markdown
只是XML
、HTML
等之外的又一种标记语言。但Markdown
的标记是如此地简洁,以至于不但能让文章拥有样式,并且源码几乎不影响阅读。
这几个都是Ruby语言中的概念。下面我分别介绍一下各个名词的含义,并将其与其他类似工具做比较,以便读者理解。
阅读全文看过我的其他文章的朋友应该知道,我不太希望写一个碎片化的博客。详情大家可以看这篇文章。
所以我特别希望能够把一些重要的,但被大多数人忽视的,甚至有多年行业经验的人可能不曾看过的官方参考书纳入到我的博客中来,为读者朋友们提供帮助。
经过一番努力,终于给博客增加了维基功能,我将之命名为“参考书”。
阅读全文本站之前使用的是官方的 Merlot 主题。代码库地址:https://github.com/pages-themes/merlot。
在此基础上我修改了 CSS 对布局和样式等做了调整,但一直有一些痛点没有解决。
我在使用新主题时,发现在分类下拉框中,当分类名为中文时,选中该分类,文章列表为空白。
经过跟踪 javascript 源码,发现是中文字符的转义问题。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文本系列教程介绍Groovy编程语言的语法。Groovy的语法源自Java语法,但是通过特定类型对其进行了增强,并允许进行某些简化。
阅读全文Docker Preferences选项中勾选”Enabel Kubernetes”启用K8S,但其一直处于starting
状态,无法正常使用。
启用Kubernetes功能,Docker需要从镜像仓库拉取Kubernetes相关镜像。
由于国内访问Docker Hub网速太慢,镜像无法成功拉取,导致Kubernetes一直处于starting
状态。
Docker Preferences选项中勾选”Enabel Kubernetes”启用K8S,但其一直处于starting
状态,无法正常使用。
启用Kubernetes功能,Docker需要从镜像仓库拉取Kubernetes相关镜像。
由于国内访问Docker Hub网速太慢,镜像无法成功拉取,导致Kubernetes一直处于starting
状态。
机器人示例: https://github.com/lich0821/WeChatRobot/
库: https://pypi.org/project/wcferry/
阅读全文
可以使用uncompyle6
工具
使用pip可以直接安装:
pip install uncompyle6
反编译命令(两种形式):
uncompyle6 xxx.pyc > xxx.py
uncompyle6 -o xxx.py xxx.pyc
示例:
uncompyle6 utils.pyc > utils.py
PyPI是”Python Package Index“的缩写,翻译为中文是“Python软件包索引”。
PyPI是Python语言的软件存储仓库。
阅读全文配置好Jenkinsclient后,就可以通过命令来操作Jenkins了!
jenkinsclient的命令格式是:
jenkins GROUP | COMMAND
GROUP
是指一组命令,比如job
是一个组命令,它有以下命令:
jenkins job build //构建任务
jenkins job copy //复制任务
jenkins job create //创建任务
jenkins job delete //删除任务
jenkins job disable //禁用任务
jenkins job enable //启用任务
jenkins job has //查看任务是否已存在
jenkins job info //显示任务信息
jenkins job ls //显示任务列表
jenkins job rename //重命名任务
jenkins job xml //显示任务的config.xml内容
今天我们先不介绍组命令,先介绍第一层的COMMAND
。这些命令基本用来查看各种信息。
APP模式可以在独立窗口中操作Jenkins。体验就好像在操作APP一样。
命令:
jenkins app
视频演示:
阅读全文Jenkinsclient是一个功能强大的开源跨平台的Jenkins命令行客户端。提供类似Docker风格的命令行来让用户操作Jenkins。
Jenkinsclient使用Python语言编写,项目源码采用国产木兰开源许可证开源。你可在Gitee和Github上查看。
Gitee: https://gitee.com/hummerstudio/jenkinsclient
Github: https://github.com/hummerstudio/jenkinsclient
项目主页:https://pypi.org/project/jenkinsclient
阅读全文Jenkinsclient是一个功能强大的开源的跨平台的支持多实例的Jenkins命令行客户端。项目采用国产木兰开源许可证开源。
日前正式发布了1.0版本。
PyPI项目主页:https://pypi.org/project/jenkinsclient/
阅读全文自动化是一个革命性的概念和技术。
第一代自动化是天地系统的自动化,即万物的生长。
天阳供能,地阴成形,古圣人察而用之。顺四时,因地宜,谓之无为。无为非不为,乃顺自然而为。
这一代的自动化,是天、地、人三要素。
天气,反映太阳能的供给强度和总量。天气之变,大分为四季,小分为二十四节气。地形,各有不同,故因地制宜;人,须在合适的天时地利处播种、浇水、施肥、投喂,如同与天地合奏,故谓之人和。
天地虽然已自动化,但对人而言,需要在合适的时间节点采取合适的行动,才能让万物按人类的意愿生长。
阅读全文通过Jenkins来启动进程是一个实际工作中比较常见的场景。
但是正常情况下,通过Jenkins Job启动的进程,在构建结束后,都会被Jenkins杀死。
阅读全文yum install mariadb-server
mysql_secure_installation
mysql -u root -p
输入上一步设置的密码。
sudo systemctl start mariadb
systemctl status mariadb
systemctl stop mariadb
systemctl restart mariadb
阅读全文本文首发在微信公众号“DevOps持续交付”上,公众号ID:devopscd,欢迎关注。
可参考如下配置:
server {
listen 80;
server_name xxx.com www.xxx.com;
return 301 https://$host$request_uri;
}
yum install -y epel-release
rpm install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
保存为gongan.png
位置:/var/www/html/static/common/gongan.png
修改文件:/var/www/html/views/default/global/footer.tpl.htm
,插入到期望位置。
备案网站生成的代码中有一段为:
<img src="" style="float:left;"/>
在src
处填入图标路径:
<img src="static/common/gongan.png" style="float:left;"/>
第一行代码为:
<div style="width:300px;margin:0 auto; padding:20px 0;">
备案信息通常放在网站底部,默认的样式上下间隔太大,不美观。可将padding:20px 0;
删除。
小屏幕下访问网站会发现底部的备案信息很突兀,观察腾讯网手机版发现,其在手机访问时,并未显示此类信息。
我们也可以设置隐藏。
在第一行div
增加class = "hidden-xs"
即可。
修改是实时生效的,不需要重新加载配置或重启服务进程。
阅读全文代码调试过程中,可能在当前git工作目录下添加许多文件,达到目的后希望恢复代码到初始状态。
make
有make clean
命令,mvn
有mvn clean
命令,jekyll
有jekyll clean
命令。
那么git有没有git clean
命令呢?
答案是肯定的!
git-clean - 从工作目录(working tree)中删除未跟踪的文件
这是git clean的dry-run模式。不会实际删除文件,只是会列出如果实际执行会删除的文件内容。 我们可以先执行这个命令将输出和预期进行对比。
清空工作目录的未跟踪文件。
-e
选项可以根据表达式排除更多文件。
需要将所有文件/文件夹写入到文件中,每行一个,再使用-F
命令指定文件。
类似:
svn ps svn:ignore -F IgnoreFileList.txt .
使用propset
目录设置svn:ignore
,可简写为ps
。
当前目录下忽略.class文件:
svn propset svn:ignore *.class .
for /f "tokens=2" %%i in ('svn status') do echo %%i
如果是在cmd命令行界面使用,则将%%I
替换为%i
,即:
for /f "tokens=2" %i in ('svn status') do echo %i
1、临时关闭
执行命令setenforce 0
临时关闭SELinux
2、永久关闭
a. 打开selinux配置文件
vi /etc/selinux/config
b. 找到SELINUX=enforcing
,按i进入编辑模式,将参数修改为SELINUX=disabled
。
c. 修改完成后,按下键盘Esc
键,输入命令:wq
,保存并退出文件即可。
3、运行命令getenforce
,验证SELinux
状态为disabled
,表明SELinux
已关闭。
将关键字使用引号引住,再用或符号 | 分割即可。 |
有时候自然会想到用|,但是|在shell命令中又表示通道,可能就想不明白能不能用了。其实再进一步加上引号就能区分了。 如:
grep -E 'Start|Finish' <filename> // 使用-E选项,过滤出文件中包含Start或者Finish的行
egrep 'Start|Finish' filename // 使用egrep可以免去-E选项,默认支持
Unity国际版下载页面经常无法打开,而Unity Hub
目前绑定的都是Unity中国版。可直接复制下面的连接到浏览器,回车访问会自动调用Unity Hub进行下载,一键直达。
包括:导入、创建、构建、分发、加载
上图显示了在 Unity 中使用资源时的典型工作流程。每列代表一个单独的步骤,如下所述:
将资源导入Unity编辑器
使用Unity编辑器通过这些资源创建内容。
构建您的应用或游戏文件,以及可选的随附内容包
分发构建的文件,以便您的用户可以通过发布者或应用程序商店访问
根据您用户的行为以及您对内容进行分组和捆绑的方式,在运行时根据需要加载进一步更新。
阅读全文
1、在Audio Source
设置Spatial Blend
指为1;
2、在Audio Source
的3D Sound Settings
中设置Min Distance
和Max Distance
。
在最小距离内,音频源将以最大音量播放片段。在此距离之外,音量将减小,在最大距离,用户将不再听到音频。
阅读全文
打AB时,增加BuildAssetBundleOptions.DeterministicAssetBundle
选项。
此选项可以保证AssetBundle使用唯一Hash进行标识,若不加这个选项AssetBundle每次构建时都生成不同ID。
阅读全文BuildAssetBundleOption.DisableWriteTypeTree
不包含AssetBundle中的类型信息。
阅读全文
1、 在 Unity > Preferences > External Tools中,将External Script Editor
设置为Visual Studio(确保勾选了Editor Attaching
选项
2、在Visual Studio中,根据希望停止调试器的代码行,设置断点。
3、在Visual Studio中,将代码编辑器连接到Unity Editor。
4、在Unity中进入播放模式。
详情参考官方文档:https://docs.unity3d.com/cn/2019.4/Manual/ManagedCodeDebugging.html
阅读全文
原因是Unity项目未和使用的Visual Studio关联。
按如下步骤操作即可:
Edit
–>preferences
External Tools
,选中External Scripts Editor
,下拉框中修改,选中自己使用的Visual Studio版本此后不论是从Unity中打开项目,还是直接在资源管理器右键使用Visual Studio打开Unity项目,脚本方法都能正常跳转了。
阅读全文
这是因为缺少android-28的SDK,安装即可。
一般介绍的方式是安装Android Studio,再使用SDK Manager来安装缺失版本的SDK。但这样太复杂了,这里介绍一个简单的方法。
阅读全文
调用apktool工具签名apk时遇到sun/misc/BASE64Encoder
报错。
是因为此类只在jdk1.8之前的版本存在,jdk9以后的版本,就不存在了。
检查环境的JDK版本为11,所以会报错。
解决办法也明了,安装JDK8。
这里介绍个Windows 10下一键安装JDK8的方法,直接cmd窗口执行以下命令即可:
winget install AdoptOpenJDK.OpenJDK.8
安装后,JDK位于C:\Program Files\AdoptOpenJDK\jdk-8.0.292.10-hotspot
简言之,armv6、armv7、armv7s、armv8、arm64都是ARM处理器的指令集。
那么ARM处理器又是什么呢?
阅读全文
Android App Bundle是一种发布格式,其中包含应用的所有经过编译的代码和资源,它会将APK生成及签名交由应用商店来完成。
阅读全文
这是因为缺少android-28的SDK,安装即可。
一般介绍的方式是安装Android Studio,再使用SDK Manager来安装缺失版本的SDK。但这样太复杂了,这里介绍一个简单的方法。
阅读全文
Windows10 WSL2安装Linux发行版,报错WslRegisterDistribution failed with error: 0x800701bc
此报错原因是未下载安装WSL2 Linux内核更新包。
可访问此处下载。
或直接下载,链接:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
阅读全文
1、快捷键Ctrl+R
打开“运行”,输入regedit
打开注册表
2、找到\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
3、右键“新建”,选择字符串值
4、名称根据实际情况填写,完成后双击填写数值数据
,这里填要启动的可执行文件或脚本即可
1、确保操作系统版本号大于14352
;
* 操作系统的详细版本号可从“控制面板 - 管理工具 - 系统信息”中的“版本”中找到。
2、从运行窗口中打开Gpedit.msc
;
3、依次打开本地计算机策略 - 计算机配置 - 管理模板 - 系统 - 文件系统
,找到启用 Win32 长路径
设置为已启用
。
简言之,这是Windows的安全策略设置使得administrator的管理员权限需要批准。
可以按如下步骤修改这个策略:
按Windows+R键,打开“运行”(或者开始菜单上右键选择“运行”),然后输入“gpedit.msc”,就是打开组策略,这个在控制面板中也可以打开
在组策略里找到“计算机配置”-“Windows设置”-“安全设置”-“本地策略”-“安全选项”
在“安全选项”里找到“用户帐户控制-以管理员模式批准运行所有管理员”这项
禁用此选项
当请求URL返回的cookie中expires
为如下格式时,
Expires=Mon, 26 Apr 2021 14:34:27 GMT
报错:
Invalid 'expires' attribute: Mon, 26 Apr 2021 14:34:27 GMT
按网上说法修改CookiePolicy
或CookieSpec
,实际都无效果。这是因为使用的httpclient库并不支持这种新格式(定义于RFC 6265
)。
可以使用Apache HttpClient5
解决此问题,此版本已支持最新格式。这是一个新版本,有不同的artifactId
。
Maven中使用如下方式引用依赖:
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5 -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents.client5/httpclient5-fluent -->
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5-fluent</artifactId>
<version>5.1.3</version>
</dependency>
准确说,Node.js
不是编程语言,而是一个运行时,和JVM
类似。
Java
运行在JVM
上,Javascript
运行在Node.js
上。
一言以蔽之,Node.js
是一个基于Chrome V8引擎的JavaScript
运行时环境。
BOOTCDN:https://www.bootcdn.cn/
BootCDN是极兔云联合Bootstrap中文网共同支持并维护的前端开源项目免费CDN服务,致力于为Bootstrap、jQuery、React、Vue.js一样优秀的前端开源项目提供稳定、快速的免费 CDN 加速服务。BootCDN 所收录的开源项目主要同步于cdnjs开源项目仓库。
自2013年上线以来已经累计为近百万网站提供了稳定、可靠的免费 CDN 加速服务。
截至目前共收录了4060个前端开源项目。
阅读全文
使用COPY命令。
基本语法:COPY [OPTIONS] source destination
即直接COPY 源文件路径 目标路径
即可。和Linux的cp命令类似。
但Windows的COPY命令只能复制文件,不能复制文件夹。
常用选项有/V
和/Y
,/V
是验证新文件写入是否正确,/Y
是不使用确认是否要覆盖现有目标文件的提示。
简言之,log4j2是Apache基金会的一个开源项目,用于Java程序中打印日志,Apache Log4j 2
是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback 架构中的一些固有问题。
FTP的passive
参数用于开启FTP被动模式。
那么,FTP的被动模式是什么意思,是不是还有主动模式(有),它们有什么区别呢?
简言之,被动模式传送数据是“客户端”连接到“服务器”的端口。主动模式传送数据时是“服务器”连接到“客户端”的端口。
FTP默认为主动模式(port模式)。
阅读全文
为什么不打开编辑器呢?
因为构建机GPU配置太差了,打不开……
这里介绍个直接修改UE4配置文件的方法。
在BaseEngine.ini
中,设置如下变量即可:
[/Script/AndroidPlatformEditor.AndroidSDKSettings]
SDKAPILevel=latest
NDKAPILevel=android-21
SDKPath=(Path="D:/Android/SDK")
NDKPath=(Path="D:/Android/NDK")
JavaPath=(Path="D:/Android/OpenJDK")
特别注意JDK路径的Key
是JavaPath
,而非官方文档上写的JDKPath
,我这里使用的为UE4.27,测试可用。
1、下载源代码 2、如果下载的是压缩包,先解压缩,然后运行Setup.bat(Windows系统下) 该步骤会下载并安装很多依赖,该脚本支持多线程下载,建议使用多线程下载。从控制台执行命令,如:
setup.bat --threads=20
3、运行GenerateProjectFiles.bat来生成项目文件
4、双击UE4.sln(UE5.sln)使用Visual Studio打开项目
5、(重点)将解决方案配置设置为Development Editor
,解决方案平台设置为Win64
6、右键单击UE4(UE5)目标并选择生成
UE4和UE5的编译方法相同。
阅读全文
查看firewalld状态:
systemctl status firewalld
临时关闭firewalld:
systemctl stop firewalld
永久关闭firewalld:
systemctl disable firewalld
可忽略证书检查,增加--no-check-certificate
参数。
例如,报错命令:
wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
修改为:
wget --no-check-certificate https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
按如下步骤操作:
使用Visual Studio Code
打开C:\Program Files\NVIDIA Corporation\NVIDIA GeForce Experience\www\app.js
"choose"===\w\.nvActiveAuthView[\D]*\)\}
替换为
"choose"===this.nvActiveAuthView)};this.handleLoggedIn({sessionToken:"",userToken:"",user: {core:{displayName:"codefaq.cn",primaryEmailVerified: true}}});
共享组件、工具和SDK
的路径不能更改
可以通过删除注册表解决,注册表路径:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\Setup
右键 SharedInstallationPath
和 CachePath
删除即可。
VisualSVN for Visual Studio
VisualSVN是一个专业级的 Visual Studio Subversion集成插件。
VisualSVN的主要优点是:
无与伦比的可靠性:Visual Studio永远不会因为VisualSVN崩溃或挂起。
无缝集成:可视化SVN自动处理添加或重命名文件,并将这些操作反映到Subversion。
实时状态:VisualSVN仔细跟踪并显示所有对当前工作副本所做的更改。
学习曲线短:VisualSVN利用TortoiseSVN对话框并提供了一个智能向导来将源码放入SVN。
访问官网下载:VisualSVN
阅读全文
Gradle
是一个非常灵活、强大的构建系统,但其概念也相对复杂,但只要抓住核心,做好区分,就不会觉得混乱。
下面的构建脚本,是否觉得难以理解:
buildscript {
构建脚本依赖的仓库
repositories {
mavenCentral()
}
// 构建脚本依赖
dependencies {
classpath 'com.android.tools.build:gradle:4.2.0'
}
}
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
implementation 'com.google.guava:guava:30.1-jre'
testImplementation 'junit:junit:4.13.2'
}
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.jvm' version '1.5.10'
}
与Ant
只有build.xml
,Maven
只有pom.xml
不同,使用gradle
的项目一般有以下几个文件:
gradlew
gradlew.bat
build.gradle
gradle.properties
gradle/gradle-wrapper.jar
gradle/gradle-wrapper.properties
在调用顺序上,gradlew
(Windows下为gradlew.bat
)读取gradle.properties
配置文件内容,然后执行build.gradle
构建脚本,而build.gradle
脚本可以从gradle.properties
中读取属性值。此设计的好处是用户无需预先安装gradle到本地,gradlew脚本会自动下载。下文会详述。
1、kotlin
是基于JVM的编程语言,与Java类似,且可与Java互操作;
2、kotlin-plugin
是IDEA和Android Studio的IDE(集成开发环境)支持插件;
3、gradle
是构建工具,与Ant
、Maven
类似,用于代码到编译、测试、打包等;
4、kotlin-gradle-plugin
是使用gradle构建kotlin项目必须添加的gradle插件。
下面详细介绍:
阅读全文
Gradle
中配置依赖,如果不指定版本,是会报错找不到依赖的。
但如果依赖很多,还需要去仓库一个个看依赖库的最新版本是多少。
那么gradle是否支持直接使用依赖的最新版本呢?
答案是肯定的,不过在gradle
的文档中并没有在显著位置标识。
方式就是在version
处填加号+
,gradle
就会去自动识别最新版本去下载。
全部指定最新版本后,再根据日志去解决个别依赖冲突报错,事半功倍。
阅读全文
gradle使用daemon相当于热启动,可以节省构建时间。但在持续集成环境下为了保证环境一致性,或避免daemon进程冲突,可以禁用deamon功能。
在${HOME}/.gradle/gradle.properties
文件中添加:
org.gradle.daemon=false
介绍两种方式。一、使用antcontrib提供的listener命令示例:ant main -listener net.sf.antcontrib.perf.AntPerformanceListener统计数据输出到文件(可选):-Dperformance.log=/tmp/performance.log 输出示...
阅读全文下载地址(LTS版本):Download .NET 6.0 (Linux, macOS, and Windows)
只包含运行控制台应用的组件。需要另外安装ASP.NET Core运行时和 .NET Desktop运行时。
运行web/服务器应用。在Windows上推荐安装Hosting Bundle,包含了.net运行时和IIS支持。
运行Windows桌面应用。包含了.net运行时,不需要再单独安装。
阅读全文
1、kotlin
是基于JVM的编程语言,与Java类似,且可与Java互操作;
2、kotlin-plugin
是IDEA和Android Studio的IDE(集成开发环境)支持插件;
3、gradle
是构建工具,与Ant
、Maven
类似,用于代码到编译、测试、打包等;
4、kotlin-gradle-plugin
是使用gradle构建kotlin项目必须添加的gradle插件。
下面详细介绍:
阅读全文
我们构建组除了负责bk-ci插件开发,还负责监控使用构建平台的所有项目的打包流水线、质量检查流水线的执行情况。
最初,这些都是让实习生来手动查看质量流水线的执行情况、再做表,跟进、然后手动发到群里。
今年中,我在研究了bk-ci的API后,已经将其改为自动抓取和生成报表,但仅作为参考。 报表使用Velocity
模版引擎生成,是一个HTML
文件,然后通过邮件发送。
不过邮件的实效性并不强,有时候会积累很多封邮件,也不知处理了没有。
阅读全文