首页
关于
壁纸
直播
留言
友链
统计
Search
1
《三国志英杰传》攻略
6,216 阅读
2
Emby客户端IOS破解
6,069 阅读
3
白嫖Emby
6,056 阅读
4
《吞食天地1》金手指代码
5,774 阅读
5
破解emby-server
4,317 阅读
moonjerx
game
age-of-empires
zx3
san-guo-zhi
尼尔:机械纪元
net
emby
learn-video
docker
torrent
photoshop
route
minio
git
ffmpeg
im
vue
gitlab
typecho
svn
alipay
nasm
srs
mail-server
tailscale
kkfileview
aria2
webdav
synology
redis
oray
chemical
mxsite
math
π
x-ui
digital-currency
server
nginx
baota
k8s
http
cloud
linux
shell
database
vpn
esxi
rancher
domain
k3s
ewomail
os
android
windows
ios
app-store
macos
develop
java
javascript
uniapp
nodejs
hbuildx
maven
android-studio
jetbrain
jenkins
css
mybatis
php
python
hardware
hard-disk
pc
RAM
software
pt
calibre
notion
office
language
literature
philosophy
travel
登录
Search
标签搜索
ubuntu
mysql
openwrt
zerotier
springboot
centos
openvpn
jdk
吞食天地2
synology
spring
idea
windows11
吞食天地1
transmission
google-play
Japanese
xcode
群晖
kiftd
MoonjerX
累计撰写
379
篇文章
累计收到
465
条评论
首页
栏目
moonjerx
game
age-of-empires
zx3
san-guo-zhi
尼尔:机械纪元
net
emby
learn-video
docker
torrent
photoshop
route
minio
git
ffmpeg
im
vue
gitlab
typecho
svn
alipay
nasm
srs
mail-server
tailscale
kkfileview
aria2
webdav
synology
redis
oray
chemical
mxsite
math
π
x-ui
digital-currency
server
nginx
baota
k8s
http
cloud
linux
shell
database
vpn
esxi
rancher
domain
k3s
ewomail
os
android
windows
ios
app-store
macos
develop
java
javascript
uniapp
nodejs
hbuildx
maven
android-studio
jetbrain
jenkins
css
mybatis
php
python
hardware
hard-disk
pc
RAM
software
pt
calibre
notion
office
language
literature
philosophy
travel
页面
关于
壁纸
直播
留言
友链
统计
搜索到
107
篇与
net
的结果
2021-10-22
Typecho实现评论显示操作系统和评论来源
1.首先打开 functions.php 文件,粘贴下面的代码// 获取浏览器信息 function getBrowser($agent) { if (preg_match('/MSIE\s([^\s|;]+)/i', $agent, $regs)) { $outputer = 'Internet Explore'; } else if (preg_match('/FireFox\/([^\s]+)/i', $agent, $regs)) { $str1 = explode('Firefox/', $regs[0]); $FireFox_vern = explode('.', $str1[1]); $outputer = 'FireFox'; } else if (preg_match('/Maxthon([\d]*)\/([^\s]+)/i', $agent, $regs)) { $str1 = explode('Maxthon/', $agent); $Maxthon_vern = explode('.', $str1[1]); $outputer = 'MicroSoft Edge'; } else if (preg_match('#360([a-zA-Z0-9.]+)#i', $agent, $regs)) { $outputer = '360 Fast Browser'; } else if (preg_match('/Edge([\d]*)\/([^\s]+)/i', $agent, $regs)) { $str1 = explode('Edge/', $regs[0]); $Edge_vern = explode('.', $str1[1]); $outputer = 'MicroSoft Edge'; } else if (preg_match('/UC/i', $agent)) { $str1 = explode('rowser/', $agent); $UCBrowser_vern = explode('.', $str1[1]); $outputer = 'UC Browser'; } else if (preg_match('/QQ/i', $agent, $regs)||preg_match('/QQ Browser\/([^\s]+)/i', $agent, $regs)) { $str1 = explode('rowser/', $agent); $QQ_vern = explode('.', $str1[1]); $outputer = 'QQ Browser'; } else if (preg_match('/UBrowser/i', $agent, $regs)) { $str1 = explode('rowser/', $agent); $UCBrowser_vern = explode('.', $str1[1]); $outputer = 'UC Browser'; } else if (preg_match('/Opera[\s|\/]([^\s]+)/i', $agent, $regs)) { $outputer = 'Opera'; } else if (preg_match('/Chrome([\d]*)\/([^\s]+)/i', $agent, $regs)) { $str1 = explode('Chrome/', $agent); $chrome_vern = explode('.', $str1[1]); $outputer = 'Google Chrome'; } else if (preg_match('/safari\/([^\s]+)/i', $agent, $regs)) { $str1 = explode('Version/', $agent); $safari_vern = explode('.', $str1[1]); $outputer = 'Safari'; } else{ $outputer = 'Google Chrome'; } echo $outputer; } // 获取操作系统信息 function getOs($agent) { $os = false; if (preg_match('/win/i', $agent)) { if (preg_match('/nt 6.0/i', $agent)) { $os = 'Windows Vista · '; } else if (preg_match('/nt 6.1/i', $agent)) { $os = 'Windows 7 · '; } else if (preg_match('/nt 6.2/i', $agent)) { $os = 'Windows 8 · '; } else if(preg_match('/nt 6.3/i', $agent)) { $os = 'Windows 8.1 · '; } else if(preg_match('/nt 5.1/i', $agent)) { $os = 'Windows XP · '; } else if (preg_match('/nt 10.0/i', $agent)) { $os = 'Windows 10 · '; } else{ $os = 'Windows X64 · '; } } else if (preg_match('/android/i', $agent)) { if (preg_match('/android 9/i', $agent)) { $os = 'Android Pie · '; } else if (preg_match('/android 8/i', $agent)) { $os = 'Android Oreo · '; } else { $os = 'Android · '; } } else if (preg_match('/ubuntu/i', $agent)) { $os = 'Ubuntu · '; } else if (preg_match('/linux/i', $agent)) { $os = 'Linux · '; } else if (preg_match('/iPhone/i', $agent)) { $os = 'iPhone · '; } else if (preg_match('/mac/i', $agent)) { $os = 'MacOS · '; }else if (preg_match('/fusion/i', $agent)) { $os = 'Android · '; } else { $os = 'Linux · '; } echo $os; }2.comments.php 中找到合适位置(比如评论作者的后面)添加以下代码<?php getOs($comments->agent); ?><?php getBrowser($comments->agent); ?>
2021年10月22日
144 阅读
0 评论
0 点赞
2021-10-21
typecho 获取用户的真实IP
1.在config.inc.php文件填加一下代码:/** 获取用户真实IP*/ define('__TYPECHO_IP_SOURCE__', 'HTTP_X_FORWARDED_FOR'); define('__TYPECHO_IP_SOURCE__', 'X-Real-IP');
2021年10月21日
120 阅读
0 评论
0 点赞
2021-10-12
docker安装gitlab
一、直接运行docker命令docker run -d --name gitlab \ --restart always \ -p 30001:30001 \ -p 30002:30002 \ -p 30003:22 \ -v /home/$USER/dockerfile/gitlab/etc:/etc/gitlab \ -v /home/$USER/dockerfile/gitlab/logs:/var/log/gitlab \ -v /home/$USER/dockerfile/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest额外参数:--hostname 192.168.1.8 \官方文档里有加这一条 --hostname 192.168.1.8 ,实测可以不写,只需手动改配置若要运行企业版,只需把最后 gitlab/gitlab-ce:latest 改成 gitlab/gitlab-ee:latest等安装完成后运行命令获取管理员账号root密码sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password会返回一串密码: Password: akYzRtsctNfxnvVL2EFkK7wwvYXcQOi/spm2Yn/y77Y=二、修改配置:安装完成后,新建项目后,使用git-clone的时候会发现http和ssh的地址都不正确。所以要修改访问地址配置。1、http访问地址修改80端口的修改,我们需要在 gitlab.rb 文件中搜索 external_url :sudo vim /home/$USER/dockerfile/gitlab/etc/gitlab.rb在后续文本中搜索输入命令 ?external_url 回车?external_url## GitLab URL ##! URL on which GitLab will be reachable. ##! For more details on configuring external_url see: ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab ##! ##! Note: During installation/upgrades, the value of the environment variable ##! EXTERNAL_URL will be used to populate/replace this value. ##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP ##! address from AWS. For more details, see: ##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html # external_url 'GENERATED_EXTERNAL_URL' external_url 'http://192.168.1.8:30002' ## Roles for multi-instance GitLab{callout color="#f0ad4e"}此处有30002端口,在网页端点击clone按钮的时候才会显示。前面docker运行命令的时候 30002:30002 两个端口号,后面那个端口号为镜像内部nginx自动配置的端口号,所以docker运行安装命令的时候,想要修改端口就必须前后两个端口都对应修改相同。否则clone的时候不会正确显示,也无法正确使用。{/callout}2、ssh访问地址修改在 gitlab.rb 文件中搜索 _ssh_portsudo vim /home/$USER/dockerfile/gitlab/etc/gitlab.rb在后续文本中搜索输入命令 ?_ssh_port 回车?_ssh_port### Wait for file system to be mounted ###! Docs: https://docs.gitlab.com/omnibus/settings/configuration.html#only-start-omnibus-gitlab-services-after-a-given-file-system-is-mounted # high_availability['mountpoint'] = ["/var/opt/gitlab/git-data", "/var/opt/gitlab/gitlab-rails/shared"] ### GitLab Shell settings for GitLab # gitlab_rails['gitlab_shell_ssh_port'] = 22 gitlab_rails['gitlab_ssh_host'] = '192.168.1.8' gitlab_rails['gitlab_shell_ssh_port'] = 30001 # gitlab_rails['gitlab_shell_git_timeout'] = 800 ### Extra customization # gitlab_rails['extra_google_analytics_id'] = '_your_tracking_id' # gitlab_rails['extra_google_tag_manager_id'] = '_your_tracking_id' # gitlab_rails['extra_one_trust_id'] = '_your_one_trust_id'3.生效配置:进入gitlab容器sudo docker exec -it gitlab /bin/sh重载配置和重启gitlabgitlab-ctl reconfigure && gitlab-ctl restart也可以直接重启容器。三、避坑实测直接运行官方文档带有 --hostname 192.168.1.8 的docker run命令后,使用git-clone会报错404。不带 --hostname 192.168.1.8 安装后修改配置,再重启时gitlab运行不起来。此时进行如下操作可行:隐藏内容,请前往内页查看详情
2021年10月12日
163 阅读
0 评论
0 点赞
2021-10-10
store基本用法
store.js写法import Vue from 'vue' import Vuex from 'vuex' import Index from './modules/index.js' Vue.use(Vuex) module.exports = new Vuex.Store({ state: {}, getters: {}, // 实时监听state值的变化(最新状态) modules: { Index }, mutations: {} // 这个对象里面可以放改变state的初始值的方法 })modules模块index.js写法const state = { loginFormOP: { show: false }, } const getters = { getLoginFormOP: state => { return state.loginFormOP } } const actions = {} const mutations = { setLoginFormOP: (state, o) => { state.loginFormOP = o; } } module.exports = { state, getters, actions, mutations }store属性使用(vuex 中store的数据需要放到computed 里面才能同步更新视图)computed: { loginFormOP() { return this.$store.state.Index.loginFormOP//或者this.$store.getters.getLoginFormOP }, },store属性修改this.$store.commit('setLoginFormOP', { show: true })
2021年10月10日
145 阅读
0 评论
0 点赞
2021-10-10
更新vuex store数据后视图没有同步更新
store state/detail/index.jsconst state = { id:0, playUrl:'b' }; const getters = {}; const actions = {}; const mutations = { setPlayUrl(state,url){ state.playUrl = url; // state.url = url; } }; export default { namespaced: true, state, getters, actions, mutations };index.jsimport Vue from 'vue'; import Vuex from 'vuex'; import Detail from './songDetail/index' Vue.use(Vuex); const state = {}; const actions = {}; const mutations = {}; const store = new Vuex.Store({ modules: { detail:Detail }, actions, state, mutations }); export default store;pageA:触发mutation:_this.$store.commit('detail/setPlayUrl',data.data.data);//存vuexpageB:展示数据:<template> <div class="bottom"> {{a}} <audio v-bind:src="getPlayUrl" controls="controls"> Your browser does not support the audio element. </audio> </div> </template> <script> export default { name: "index", data(){ return { // url:this.$store.state.detail.playUrl, //如果这样写的话会更新不了 a:'1', //这个在本组件里面的数据就可以更新 这个a 在created生命周期后三秒改变值就可以更新视图 } }, computed:{ //这里需要把store 动态的数据放到computed里面才会同步更新 视图 getPlayUrl(){ return this.$store.state.detail.playUrl } }, created() { // console.log('url',this.url); let _this = this; setTimeout(function () { _this.a = 10; },3000) } } </script> <style scoped> .bottom{ position: absolute; bottom: 0; left: 0; width: 100%; } </style>刚开始是没有放到computed 里面的(被我注释掉的部分) 视图没有同步更新 后来改成来以上代码就可以更新啦结论:1.本组件内data的数据和prop传递过来的数据能同步双向绑定和更新视图2.vuex 中store的数据需要放到computed 里面才能同步更新视图
2021年10月10日
187 阅读
0 评论
0 点赞
1
...
15
16
17
...
22
您的IP: