首页
留言
动态
归档
推荐
音乐
工具
Search
1
Emby公益服-上万部电影电视剧免费看
64,998 阅读
2
openwrt-docker部署lxk0301京东自动签到脚本
12,739 阅读
3
QuantumultX-京东签到撸京东豆
11,082 阅读
4
LXK0301京东签到脚本-自动提交互助码
9,504 阅读
5
微信-域名被封监测以及自动更换被封域名
9,107 阅读
随便写写
科学上网
Web开发
瞎折腾
Search
标签搜索
quantumultx
laravel
openwrt
laravel nova
laradock
telegram
薅羊毛
google adsense
jd_scripts
京东签到
ubuntu
oh-my-zsh
web开发环境
nginx
工具
shadowsocks shadowsocksR
RBAC
权限管理
内网穿透
Python
orzlee
累计撰写
44
篇文章
累计收到
595
条评论
首页
栏目
随便写写
科学上网
Web开发
瞎折腾
页面
留言
动态
归档
推荐
音乐
工具
搜索到
44
篇与
orzlee
的结果
2021-02-24
Emby公益服-上万部电影电视剧免费看
前言 过年这段时间比较无聊,找找电影看,之前从其他影视站找片源然后使用Airplay投放到AppleTV观看。说实话这些影视站片源广告多不说,质量不好,投影到电视上勉强能看,体验很差。 无意中Google到Emby终点站,这是个Telegram群组,家庭影院从这里开始。 加入Emby终点站 Emby终点站是目前片源最多、服务器最多的Emby公益服了。注册很严格,需要进行考核,考核随机40道题目,90分及格,考核失败必须72小时以后才能再次考试(需要每日签到获取积分,40积分考核一次,每次签到1-5积分不等。telegram-自动签到有能力可以实现自动签到)。而且及格后不一定立即能注册,需要等待开放注册。 2021-02-26(元宵节)会开放注册,开放时间随机 加入群组 群组链接:Emby终点站。 加入群组后一点要验证,验证失败两分钟秒后可以再次验证(最好等待验证通过后再进行考核,不然考核到一半Bot提示没有加入群组就很浪费时间了!)。 创建账号 考核Bot: EmbyPublicBot。 添加机器人后使用/create命令创建账号,如果没有考核会提示考核: 考核有点难度,一定要多看Emby终点站-Wiki,再结合Google,失败一次可是要72小时之后才能重新考核的。并且需要40积分才能重新考核。 毕竟是公益服,这样能拦下来大多数机器人注册,**[Emby终点站-Wiki][Emby终点站-Wiki]**多看几遍,写的很详细了,操作步骤都是图文结合。考核配合google,群组公告最好都看一下,管理很严格,容易Ban号。 如果你考试通过了,等待注册开放时间,再私聊[EmbyPublicBot][EmbyPublicBot],使用`/create`命令创建账号:  按提示输入,创建成功后会返回服Emby务器地址和随机密码(要修改密码必须登陆到Emby客户端后修改,由于各个服务器之间不同步,所以每个服务器都需要单独修改密码)。 客户端 Emby终点站-Wiki已经包含很多平台客户端操作,我目前使用AppleTV,苹果设备Infuse6无疑是最好的了,就是价格感人。Emby官方客户端DTS音频是个问题。 infuse最好购买终身版Pro,可以先选年度订阅免费试用一个月后再做打算,以下是添加Emby服务器操作步骤: Infuse同步很坑爹,必须保持在视频库页面等待同步完成才行,中途退出APP或者浏览器他APP内页面、手机黑屏那么重来一次。像Emby终点站这样的大型公益服,片源很多最好找个好点的梯子,快的话半小时以内一个服务器的资源就同步完了。Emby官方客户端不存在同步问题。最坑爹的是手机同步完了到AppleTV又要同步一次!!! 添加的emby服务器越多,时间越长,好在第一次同步完后,之后更新会缩短不少时间,还是要看服务器新片更新量。 搜索功能一定要等待同步完成后才能用,否则是搜索不到emby服务器资源的 如果你添加多个Emby服务器,难免有重复的影片,那么影片也会重复显示的。这样有个好处,如果服务器1挂了或者网络不畅可以选第二个片源播放,麻烦的就是同步而已。 一直提示xxx目录错误多试几次,或者换其他emby服务器、梯子、取消合集,播放列表后面的勾,然后刷新视频库即可。一般来说尽量换emby服务器线路或者梯子。CF线路限制国家了,仅限 中国大陆及港澳台、日本、韩国、新加坡、澳大利亚、新西兰 的 IP 访问。( 使用 GCP 自建梯子的基本都是美国广播 IP,这些可能不能访问 )。就算其他公益服也差不多。 AppleTV Infuse 如果手机也使用Infuse,默认会通过iCloud同步所有emby服务器信息,只需点击APP右上角齿轮-媒体库中等待同步即可(千万别让AppleTV睡眠了,没事摸摸遥控器,或者干脆设置不自动睡眠)。 AppleTV infuse电影墙还是很不错的: 点击对应的服务器可以查看该服务器上的所有影片: 其他Emby公益服 卷毛鼠 Bot:卷毛鼠Bot 使用/register命令可以创建账户,这个公益服不用考试,直接创建账户即可。 普拉斯 通知频道: 普拉斯影业资源发布 这个公益服没有开放私人注册,作者之前尝试过,但是人数一多会对服务器造成很大压力放弃了。看频道公告使用公共账号。该公益服与很多机场合作,如果使用合作机场会有机场专线,可提供私人账号注册,但是机场服务器片源与公益服同步就不知道什么时候一次了,机场一般也不会保证,毕竟机场不是专门弄影片给用户看的。 AGA公益服(中国电信可直连观看) https://emby.plusmedia.site 端口: 443 CF公益服(仅限挂代理观看) https://emby-cf.plusmedia.site 端口: 443 备用服1: https://emby.xeton.dev 端口: 443 备用服2: https://jellyfin.xeton.dev 端口: 443 备用服3: https://movie.xeton.dev 端口: 443 备用服4: https://servers.xeton.dev 端口: 443 账号:普拉斯影业 密码:plusisbest 注: 使用方法见上图 (#备用服 仅限 Emby, Infuse 等客户端挂梯子登录观看) otakudrive 群组:OtakuDrive-EMBY https://emby.otakudrive.life (AGA) https://emby.neko.edu.rs (Direct HTTPS) http://emby.ok.edu.hk (Direct Non-HTTPS) 有NSFW内容 用户名: Guest 密碼: 1234 无NSFW内容 用户名: Guest2 密碼: 1234 客戶端: http(s)://(server address/伺服器链接) port: 443/80 公共账号唯一的缺点就是播放记录很乱,比如说你看了一半的电影,下次再看没法接着播放了(除非你记得播放时间,手动跳转),因为可能其他人也看了这部影片。播放记录也是乱七八糟的。 结语 公益服大多数片源质量很高,片源刮削也比较完整,虽然有些中文字幕没有刮削完整,凭借Infuse的刮削能力也可以很方便的获取字幕。要使用公益服还是自己准备好梯子,直连不能保证全天时间段都流畅播放。公益服承诺用不收费,都是大佬们自掏腰包。三个emby公益服加一次片源更加丰富了,最新电影肯定没有,因为公益服一般只折腾优质片源。 配合AppleTV或其他盒子,一个家庭影院就轻松完成了,完全省去NAS,自己折腾电源刮削都让人崩溃,耗时费力。
2021年02月24日
64,998 阅读
28 评论
18 点赞
2021-02-08
openwrt-docker部署lxk0301京东自动签到脚本
前言 最近弄了个软路由,J4105/8G/128G SSD,只是用来科学上网太浪费了,内存经常空闲7个多G,CPU 5%左右。 本来在手机上跑lxk0301大佬的京东签到脚本已经很爽了(有兴趣可以阅读我的文章-QuantumultX-京东签到撸京东豆),最近京东有个疯狂的JOY活动,自动看视频、领金币、合成JOY。脚本一旦启动不会停止,8s执行一次,手机上跑不太合适,可能会比较耗电。本想在服务器上弄个docker,想着软路由性能过剩还是折腾下软路由吧。 开撸 推荐科学上网后再折腾,虽然不是必要。 我是用的是eSir高大全,功能比较多,eSir youtube频道有固件讲解视频,包括一些使用教程等。 eSir高大全已经包含了DockerMan,如果没有可以去 DockerMan github看说明安装,当然也可以不使用DockerMan工具,看个人喜好。本片文章是基于DockerMan工具。 开始之前 默认eSir高大全的Overlay分区大小固定,如果硬盘较大其实很多空间都没有使用,可以看eSir说明以及教程OpenWrt扩容Overlay。 eSir推荐docker分区重新分配一个,这样在升级或者恢复出厂设置后不会丢失docker数据,所以在扩容Overlay分区的时候不要把硬盘全部用光,给docker分区多留点。这部分教程可以看eSir-玩转Docker系列视频,第一弹里面有讲到docker分区,视频中使用分区工具diskman,eSir高大全版本在openwrt管理页面 系统 目录下。 配置docker 2021-05-08 LXK0301 jd_docker仓库也被封掉了,最新地址Github jd_docker。 2021-02-20 LXK0301 gitee仓库被大量外链访问封掉了,仓库已被禁止访问,返回403。目前已经套用CDN访问。 大佬telegram脚本更新通知频道JD_fruit Script。 以下是LXK0301大佬telegram bot最新消息: 云端使用仓库自带的docker。更新一下镜像后,然后可继续更新仓库最新脚本。 openwrt docker在 Docker-容器-点击容器名称-升级容器,旧的容器会在名称后面追加_old,删除带有_old的容器,启动新的就好了。 获取京东cookie方法,推荐使用扫码,可以保存cookies 90天。 环境变量说明总汇:jd_scripts docker 环境变量 在opt目录下创建一个目录,存放签到脚本目录,使用shell工具或者WinSCP操作 新建一个docker容器: 配置项 容器名称自定义 Docker 镜像 lxk0301/jd_scripts 始终拉取镜像 √ (每次启动、重启都会拉取最新镜像) 重启策略 Always 环境变量 JD_COOKIE必须,REPO_URL=https://gitee.com/lxk0301/jd_scripts.git 指定更新源,推荐gitee仓库,GitHub总是有人滥用GitHub Action导致作者仓库被封。gitee仓库不存在此问题,相对较稳定。我是用telegram推送签到信息(教程:Telegram通知BOT配置教程),其他环境变量去看jd_scripts docker 环境变量 挂载 具体看使用什么配置,jd_scripts docker 配置说明中举例了几种配置,一般默认挂载出日志文件就好了,当然也可以不挂载命令格式 第一步创建的目录:/scripts/logs,推荐使用绝对路径 点击提交后会回到第一步界面,勾选刚刚创建的容器,点击启动即可。 互助码 在你创建的并且挂载的日志目录下,jd_get_share_code.log、sharecode.log以及其他活动对应的日志中都包含该活动的互助码(如果活动可以互助的话),前两个日志文件会包含多个活动。如果没有想要的活动互助码只能在对应活动脚本日志中找,对应活动脚本(日志文件名与脚本名一致)可以查看脚本列表。 手机用户手动跑一遍脚本或者看看是否有脚本日志,一般会在日志或手动跑脚本的时候输出互助码 使用telegram提交互助码, 有两个BOT: @TuringLabbot @LvanLamCommitCodeBot 进入BOT点击消息输入框右边的斜杠按钮可以查看所有命令,使用/help查看说明,最好看一下,两个bot提交的互助码活动不一样,一个是长期活动,一个是临时活动。切勿频繁提交。BOT在1、8、16、24号0点会清空数据,0点后重新提交自己的互助码,作者服务器资源有限,互助码有上限(目前好像是5500个)。有兴趣可以折腾下:LXK0301京东签到脚本-自动提交互助码 docker容器相关操作命令 docker exec -it jd_scripts /bin/sh -c 'git -C /scripts pull && node /scripts/jd_bean_change.js' 手动拉取仓库最新脚本并且运行jd_bean_change.js脚本 docker exec -it jd_scripts /bin/sh -c 'env' 查看设置的环境变量 docker exec -it jd_scripts /bin/sh -c 'git pull' 手动更新jd_scripts仓库最新脚本 docker exec -it jd_scripts /bin/sh 仅进入容器命令(进入容器后也可以手动运行脚本: node /scripts/jd_bean_change.js) rm -rf logs/*.log 删除logs文件夹里面所有的日志文件(这行命令一般是在进入容器后执行) 结语 使用docker可以解放手机了,docker默认会开启jd_crazy_joy_coin.js脚本。这个docker不怎么耗资源,所以低配置软路由也没有问题,我同时跑了3个账号,除了内存上去了几百M,CPU还是老样子。脚本每天23:50会清空日志,每天会自动拉取最新脚本,所有挂上去后除了更新cookie基本上不用管。 diskman没法编辑环境变量,每次都要重建,在Docker-容器-点击你得容器名称-复制/编辑容器-可以复制一份容器配置文件,REPO_URL=https://xxxx 环境变量会丢失,估计是包含特殊符号,如果需要记得加上,补全信息:容器名称,始终拉取镜像,重启策略,修改cookie后删除原容器, 点击提交,操作麻烦了点,但比重新创建一个要简单。 有时候启动会无限重启,查看docker 容器日志会发现脚本没有执行完。 ... stderr: + expr 16 '%' 8 stderr: + remainder_h=0 可能是脚本BUG,当前时间小时数取余如果为0就会发生此问题,修改系统时间没有用,要修改容器时间才行,还是等待下一个小时在启动吧。
2021年02月08日
12,739 阅读
101 评论
3 点赞
2020-12-26
NeteaseCloudMusicApi +YesPlayMusic +UnblockNeteaseMusic搭建自己的音乐站(解锁网易云无版权音乐)
前言 最近逛论坛,看到一篇文章一台国内的1h1g1m小鸡可以做些什么?来看看我的吧(多图),其中有个项目吸引了我,网易云api及在线音乐播放器。顺腾摸瓜看教程。 可惜,文档比较少,前端知识也不够,折腾了我许久。 必须要有国内服务器,不然UnblockNeteaseMusic没法用的,其他音乐平台都屏蔽了国外IP。可能有部分平台屏蔽国外服务器,但是我没发现!!! 2021-05-09 更新,YesPlayMusic作者这短时间更新了不少代码,但是使用UnblockNeteaseMusic依然非常简单! 思路 NeteaseCloudMusicApi - 网易云音乐 Node.js API service。 YesPlayMusic - 高颜值的第三方网易云播放器 UnblockNeteaseMusic - 解锁网易云音乐客户端变灰歌曲 YesPlayMusic作为客户端请求自己部署的NeteaseCloudMusicApi网易云音乐API服务,这样可以形成一个闭环,前后端齐了,使用没有问题。 但是我们还要解锁网易云没有版权的歌曲。相信很多人都知道网易云没有版权的歌曲可能在其他平台上可以播放,这时候UnblockNeteaseMusic的好处来了,它可以将想听的歌曲在多个指定平台上搜索,然后将找到的歌曲url拼装请求返回。 在服务器端将网易云音乐部分服务域名重定向到UnblockNeteaseMusic服务就可以很完美的解锁大部分歌曲了!目前来说,不论音质的话,Music-YouTube的歌曲是我听过最全的了! 安装 如果部署到国内服务器,那么一台服务器就够了,如果部署在国外服务器,可能需要一台国内服务器,不然搜不到国内歌曲/艺人。歌曲还是能在国外服务器上解锁。 一个个来,不然乱套了。 NeteaseCloudMusicApi 1.1 安装nodejs 这个比较简单,上命令: apt update && apt install -y git curl curl -sL https://deb.nodesource.com/setup_lts.x | bash - apt-get install -y nodejs 1.2 克隆NeteaseCloudMusicApi项目: git clone https://github.com/Binaryify/NeteaseCloudMusicApi.git cd NeteaseCloudMusicApi npm install 1.3 配置Nginx: 我使用的是Nginx反向代理: server { listen 80; server_name xxx.xxx.com; ### 记得替换 rewrite ^(.*) https://$server_name$1 permanent; } #跨域配置 map $http_origin $allow_origin { default ""; "~^(https?://[\w]+.domain.com)" $1; ##你的域名,记得替换,*.domain.com,这里可以添加多行域名 } server { listen 443 http2 ssl; ssl_certificate /xxx/xxx.cer; #证书 记得替换 ssl_certificate_key /xxx/xxx.key; #私钥 记得替换 ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; #屏蔽不安全的加密方式 server_name xxx.xxx.com; #域名, 记得替换成自己的 charset utf-8; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_hide_header Access-Control-Allow-Origin; proxy_hide_header Access-Control-Allow-Credentials; proxy_hide_header Access-Control-Allow-Methods; proxy_hide_header Access-Control-Allow-Headers; proxy_pass http://0.0.0.0:3000; ###API端口,修改了下面supervisorctl配置也要同步修改 # 跨域配置 add_header Access-Control-Allow-Origin $allow_origin always; add_header 'Access-Control-Allow-Credentials' 'true' always; add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,DELETE,PATCH' always; add_header 'Access-Control-Allow-Headers' 'Token,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,X_Requested_With,If-Modified-Since,Cache-Control,Content-Type' always; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; #浏览日志,关了, 要开自己填写路径 error_log /var/log/nginx/xxx.xxx.xxx-error.log error; #错误日志路径 sendfile off; location ~ /\.ht { deny all; } } 1.4 需要添加一处代码,忽略ssl错误(大概122行左右,其实无所谓,因为是环境变量,但是要加在请求执行之前): nano NeteaseCloudMusicApi/util/request.js ... const settings = { method: method, url: url.replace(/^https:/, 'http:'), //将HTTPS全部转换成HTTP请求,不然一堆502错误 headers: headers, data: queryString.stringify(data), httpAgent: new http.Agent({ keepAlive: true }), httpsAgent: new https.Agent({ keepAlive: true }), } //添加下面这一行代码 process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; 1.5 配置supervisorctl守护进程: 安装: apt update && apt install -y supervisor 写配置 nano /etc/supervisor/conf.d/music-api.conf 端口3000,如果端口改了记得nginx配置文件也要改 [program:music-api] command=/bin/bash -c 'PORT=3000 HOST=127.0.0.1 /usr/bin/node /var/www/NeteaseCloudMusicApi/app.js' autostart=true autorestart=true user=root numprocs=1 更新配置文件,启动 sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start music-api:* 搞定,看看状态: $ supervisorctl status music-api:* music-api RUNNING pid 3312, uptime 0:57:01 1.6 如果不想用Nginx,那就记得服务器开放3000端口(或者你自己配置的端口, 还是建议使用Nginx)。 YesPlayMusic 以下步骤可以到本地操作,之后把编译的文件传到服务器就好了,当然服务器上操作也没问题。 2.1 安装yarn: curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list apt-get update && apt-get install -y yarn 2.2 安装YesPlayMusic: git clone https://github.com/qier222/YesPlayMusic.git cd YesPlayMusic yarn install cp .env.example .env 2.3 编辑.env环境变量: 用了Nginx填写域名,没有使用Nginx的填写http://服务器外网IP:3000(改了端口记得改) nano .env ... VUE_APP_NETEASE_API_URL=https://xxx.xxx.com VUE_APP_ELECTRON_API_URL=/api VUE_APP_ELECTRON_API_URL_DEV=https://xxx.xxx.com VUE_APP_ENABLE_SENTRY=false DEV_SERVER_PORT=20201 NODE_ENV=production VUE_APP_LASTFM_API_KEY=09c55292403d961aa517ff7f5e8a3d9c VUE_APP_LASTFM_API_SHARED_SECRET=307c9fda32b3904e53654baff215cb67 vue.config.js文件可以修改网页标题版权信息。 src/mian.js可以修改google analytics追踪代码ID。 src/Utils/Player.js 44行 document.title = ${track.name} · ${track.ar[0].name} - YesPlayMusic;这里YesPlayMusic是播放音乐的时候标题尾。 其他 YesPlayMusic 关键词要修改全局代码搜索吧,有点多! 2.4 修改代码,为了后面使用UnblockNeteaseMusic: 文件路径 YesPlayMusic/src/Utils/Player.js。 _getAudioSourceFromNetease(track) { if (isAccountLoggedIn()) { return getMP3(track.id).then(result => { if (!result.data[0]) return null; if (!result.data[0].url) return null; if (result.data[0].freeTrialInfo !== null) return null; // 跳过只能试听的歌曲 const source = result.data[0].url.replace(/^http:/, 'https:'); if (store.state.settings.automaticallyCacheSongs) { cacheTrackSource(track, source, result.data[0].br); } return source; }); } else { //这段代码替换,其实应该能更解耦,不就结了! let url = `https://music.163.com/song/media/outer/url?id=${track.id}`; return getMP3(track.id).then(result => { if (!result.data[0] || !result.data[0].url || result.data[0].freeTrialInfo !== null) { resolve(url); } const source = result.data[0].url.replace(/^http:/, 'https:'); // const source = result.data[0].url; if (store.state.settings.automaticallyCacheSongs) { cacheTrackSource(track, source, result.data[0].br); } return source; }); } } 2.5 编译: yarn run build 2.6 配置Nginx: 此处需要新的域名,不能用NeteaseCloudMusicApi的域名 server { listen 80; server_name xxx.xxx.com; ### 记得替换 rewrite ^(.*) https://$server_name$1 permanent; ### 强制重定向到https } server { listen 443 http2 ssl; ssl_certificate /root/xxx.cer; ### 域名证书 ssl_certificate_key /root/xxx.key; ### 域名证书私钥 ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA'; #屏蔽不安全的加密方式 ssl_prefer_server_ciphers on; server_name xxx.xxx.com; root "/var/www/YesPlayMusic/dist"; #### 如果服务器上编译那就是这个目录,本地编译上传dist目录到服务器,然后填写dist目录地址 index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ =404; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_log /var/log/nginx/xxx.xxx.com-error.log error; sendfile off; location ~ /\.ht { deny all; } } 2.7 Tips 其实这样就已经弄好了,只是我在折腾的时候发现了一个更又意思的东西,发现前端技术现在真心酷。 我是在windows上操作的,要先在windows安装Nodejs,yarn,这部分就直接去NodeJS、yarn官网下载吧! 我被electronjs坑惨了,根本不知道electronjs是跨平台桌面平台(相信很多前端都没有接触过这东西),使用electronjs可以编译出windows(MacOS, Linux)客户端,如果这样操作可以省去折腾UnblockNeteaseMusic,因为YesPlayMusic已经集成了。 起初只是看到YesPlayMusic有人提交PR,说是集成了UnblockNeteaseMusic,我就去看源码,发现 .env 中添加一个环境变量 IS_ELECTRON=true 就会开启UnblockNeteaseMusic,操作一番发现依赖electronjs通讯,window.require not a function 这错误让我在网上找了好久,其实是electronjs依赖nodejs,就算解决了 window.require not a function 问题,还是会接着来新问题。 后面发现electronjs不可能编译后通过浏览器使用的,这过程折腾了我一个晚上。 以下操作都是在本地windows系统操作的,可以按上文2-3部操作,NodeJS、yarn官网下载 开搞吧,先到.env中添加IS_ELECTRON=true。 安装electronjsnpm install -g electron 编译:"scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint", "electron:build": "vue-cli-service electron:build -mwl -p never", //编译macos, windows, linux三个平台 "electron:build-mac": "vue-cli-service electron:build -m -p never", //编译MacOS "electron:build-win": "vue-cli-service electron:build -w -p never", //编译windows "electron:build-linux": "vue-cli-service electron:build -l -p never", //编译linux "electron:serve": "vue-cli-service electron:serve", //运行服务,没什么用折腾我好久 "electron:buildicon": "electron-icon-builder --input=./build/icons/icon.png --output=build --flatten", "electron:publish": "vue-cli-service electron:build -mwl -p always", "postinstall": "electron-builder install-app-deps", "postuninstall": "electron-builder install-app-deps", "prettier": "npx prettier --write ./src ./script", "netease_api:run": "cd ./netease_api && npm run start", "netease_api:pull": "node script/pull.js", "netease_api:install": "cd ./netease_api && npm install", "netease_api:setup": "npm run netease_api:pull && npm run netease_api:install" }, 以上都是yarn run ...支持的命令,开始编译windows版本: yarn run electron:build-win 编译完了在YesPlayMusic\dist_electron目录下,进入目录,你会看到YesPlayMusic Steup.exe,这是安装程序,YesPlayMusic\dist_electron\win-unpacked里面有已解包程序YesPlayMusic.exe,点击就可以执行。 和网页版一样的效果,不得不说这界面做的真的好看。首页拉到底设置里面有深色模式。 点击右上角x并没有退出,最小化了,如果你再新开一个程序会提示你端口占用报错的。 UnblockNeteaseMusic 3.1 安装UnblockNeteaseMusic 其实也说不上安装,目前有四种方法: npx @nondanee/unblockneteasemusic docker run nondanee/unblockneteasemusic docker-compose up git clone https://github.com/nondanee/UnblockNeteaseMusic.git cd UnblockNeteaseMusic // node app.js //运行 不过暂时不用,下文配置supervisor守护进程 自己选吧,都可以用,前三种要自己生成163.com域名证书。 目前我使用的是替换host全局代理方法,其他方法实在懒得折腾了,真心累。 作者说替换host方法必须要开启80(443)端口,其实也不用(80端口占了就docker也能搞定),nginx反代就好了。 3.2 配置nginx: server{ listen 80; server_name music.163.com *.music.163.com; ##这里就别替换了 location / { proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:3001; ##UnblockNeteaseMusic绑定端口 80 } } server { listen 443 ssl http2; server_name music.163.com *.music.163.com; ssl_certificate /var/www/UnblockNeteaseMusic/server.crt; ##不用换了 ssl_certificate_key /var/www/UnblockNeteaseMusic/server.key; ##不用换了 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; location / { proxy_set_header Host $http_host; proxy_pass https://127.0.0.1:3002; ##UnblockNeteaseMusic绑定端口 443 } } 如果是国外服务器(国内服务器请忽略),那么你需要一台国内服务器,这份nginx配置只需要配置在国内服务器就好了,不然听不了歌,全是502错误。 国内外服务器都没有问题,国外只是会出现搜索不到中文歌曲/艺人,大部分都是对应服务器所在国家的歌曲/艺人,可以将解锁服务部署到国内服务器。当然方法有很多种,下面我给出我正在使用的部分,这并不是最简单的方法,因为需要两台服务器部署解锁服务,但是我这样也有优点,国外服务器依然可以自己解锁歌曲,不必全部交给国内服务器,如果服务器线路好延迟低倒是无所谓,不然响应很慢,如果不在意搜索不到国内信息那大可不必折腾国内服务器和修改代码。修改代码如下: // UnblockNeteaseMusic/src/request.js const configure = (method, url, headers, proxy) => { ... if (url.pathname == '/weapi/search/get') { options.hostname = '123.123.123.123' //这里的修改是为了将搜索服务交给自己国内服务器上,这样搜索出来包含很多国内的歌曲或艺人 } return options } 3.3 https反代歌曲URL域名: 此处需要新的域名,不能用NeteaseCloudMusicApi或YesPlayMusic的域名。 server { listen 443; server_name xxx.xxx.com; # 改为你自己的域名 ssl on; ssl_certificate /root/xxx.cer; ## 证书记得换 ssl_certificate_key /root/xxx.xxx.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:3001; # 代理到 Unblock 服务地址 } } 3.4 修改hosts文件, 末尾添加,把域名劫持到本机,NeteaseCloudMusicApi请求API就会通过nginx到UnblockNeteaseMusic,让UnblockNeteaseMusic通过其他音乐平台获取相关资源: nano /etc/hosts ... ... 127.0.0.1 music.163.com 127.0.0.1 interface.music.163.com 127.0.0.1 music.126.net 127.0.0.1 interface3.music.163.com 如果是国外服务器(国内服务器请忽略),并且3.2节使用了国内服务器,这里本机地址需要修改成国外服务器地址。因为只有国内才能使用,很多音乐没有国外版权! 最近试了下国外服务器一样可以解锁国内外歌曲(UnblockNeteaseMusic新增了 X-Real-IP 参数解锁海外限制),如果国外服务器和国内服务器之间线路比较好可以直接使用国内服务器,将解锁服务部署到国内服务器就行了,不需要两边折腾!如果线路拉跨,那就部署国内外服务器,国内服务器只部署解锁服务即可,然后按照3.2加粗部分操作即可! 3.5 添加supervisor守护进程: xxx.xxx.xxx用你的服务器ping music.163.com,然后替换掉。这里不使用-f参数指定域名会死循环的,直接爆出http 502错误 -e https://xxx.xxx.com 这个参数是指定歌曲URL输出域名,刚刚第3部配置的域名,网易的域名不会替换,只有网易没版权通过其他音乐平台获取的歌曲URL的才会替换。如果不替换的话其他平台大多只支持http协议,你的网站如果是https,chrome会强制https访问站点下所有资源(外链也不放过),这时候https其他音乐平台又不支持,嗝屁了。所以只能通过这种方式用服务器反向代理了。 nano /etc/supervisor/conf.d/music-unblock.conf [program:music-unblock] command=/usr/bin/node /var/www/UnblockNeteaseMusic/app.js -p 3001:3002 -s -f xxx.xxx.xxx -a 127.0.0.1 -e https://xxx.xxx.com autostart=true autorestart=true user=root numprocs=1 3.6 更新配置文件,启动 sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start music-unblock:* 看状态: $ supervisorctl status music-unblock:* music-unblock RUNNING pid 3373, uptime 2:39:00 搞定,nginx -t看看有错误没有,没错误nginx -s reload,然后打开网站看看。 结语 虽然碰到很多问题,但是确实有意思,感兴趣才有动力去研究。大大小小的坑都趟过去了,还有意外发现electronjs。 看Demo可以访问我刚刚搭建好的站点Music OrzLee,可能有点卡,毕竟UnblockNeteaseMusic要绕回国。然后套了CF,就随便看看吧,主要还是自己搭建个国内站点最好了。
2020年12月26日
3,163 阅读
23 评论
4 点赞
2020-12-24
Vue-videoJS播放m3u8视频
前言 找到一部分M3U8视频源,之前用H5 video 标签播放MP4视频,但是支持视频格式很少,索性换掉算了。 M3U8简单了解 引用维基百科: M3U8是Unicode版本的M3U,用UTF-8编码。"M3U"和"M3U8M3U8"文件都是苹果公司使用的HTTP Live Streaming格式的基础,这种格式可以在iPhone和Macbook等设备播放。 引用知乎: 上述文字定义来自于维基百科。可以看到,m3u8 文件其实是 HTTP Live Streaming(缩写为 HLS) 协议的部分内容,而 HLS 是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。 HLS 的工作原理是把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U (m3u8) playlist文件,用于寻找可用的媒体流。 HLS 只请求基本的 HTTP 报文,与实时传输协议(RTP)不同,HLS 可以穿过任何允许 HTTP 数据通过的防火墙或者代理服务器。它也很容易使用内容分发网络来传输媒体流。 简单理解,M3U8其实就是视频文件碎片索引URL(类似于播放列表),播放器会解析并且下载这些视频碎片,拼接成一整个视频。MP4格式对HTTP和Flash都比较友好,但是MP4文件头部结果比较复杂,播放过程对网络带宽要求较高,在网络复杂的场景用户体验较差。 Vue集成 集成之前大致了解了下,网上比较多的是vue-video-player和videojs,我选择了后者(之前video标签转过来还是不能跨度太大,免得拉跨)。 这东西让我折腾挺久的,只能怪自己懒,好好的文档不看,到处搜,结果搜到一堆复制粘贴的垃圾文章,也不知道什么年代的了,结果发布日期全是今年的。 官方文档相当简洁,其实非常简单,文档在此tutorial-vue,一目了然。 说说我的情况吧!,官方文档是在mounted方法中初始化播放器,但是我的视频流是动态加载的,这样直接加载会报错: CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media 因为我的视频地址和视频类型都没有请求,只能在请求完成之后再初始化播放器。 播放器已经封装成组件了,看代码。 安装videojs: npm install --save video.js npm install --save @videojs/http-streaming //这个应该是不需要的,video.js在7.x就已经包含了,报错就还是加上吧,懒得试了 <template> <video ref="video" class="video-js" > <source :src="src" :type="video_type"> </video> </template> import Video from 'video.js' import '@videojs/http-streaming' import 'video.js/dist/video-js.css' //css要加载 export default { name: "playVideo", data: () => { return { player: null, } }, props: { width: { type: Number, default: 0, }, height: { type: Number, default: 0, }, src: { type:String, default: '', }, video_type: { type: String, default: 'video/mp4', } }, watch: { video_type(){ //监听props赋值,初始化播放器 this.initVideo(); } }, beforeDestroy() { //销毁不能少啊!!!!! if (this.player) { this.player.dispose() } }, methods: { pause() { this.$nextTick(function () { // DOM 现在更新了 // `this` 绑定到当前实例 this.$refs.video.pause(); }) }, initVideo() { //初始化视频方法 this.player = Video(this.$refs.video, { //确定播放器是否具有用户可以与之交互的控件。没有控件, //启动视频播放的唯一方法是使用autoplay属性或通过Player API。 controls: true, //自动播放属性,muted:静音播放 autoplay: "muted", //建议浏览器是否应在<video>加载元素后立即开始下载视频数据。 preload: "auto", //设置视频播放器的显示宽度(以像素为单位) width: this.width, //设置视频播放器的显示高度(以像素为单位) height: this.height, //网上很多没有用这个参数,默认获取<video><source src="" type=""/></video> //标签中的 source中的链接和类型,手动指定就可以避免动态获取视频信息的坑 sources: { src: this.src, //视频地址 type: this.video_type //视频类型 } }); } } } 结语 其实分分钟的是,搞了大半天。不过这个项目快一年没碰了,搞起来还有点懵逼。Graphql只用过一次,就是这项目上,Vue也好久没碰了,边熟悉边折腾,真是学无止尽啊。
2020年12月24日
1,093 阅读
0 评论
0 点赞
2020-12-22
QuantumultX-京东签到撸京东豆
前言 自从有了QuantumultX,各种签到脚本满天飞,调试、抓包都非常方便。京东签到脚本真的多,各种大大小小的签到、活动都做完,一天一百多个京东豆还是很容易的。 开撸 QuantumultX在1.0.17 (build 433) TF版加入了 task-gallery,而且正式版已经更新几个月了。 这东西就像是个脚本库,已经有大佬把脚本集合了,先放上来方便撸友: 2021-02-20 LXK0301 gitee仓库被大量外链访问封掉了,仓库访问已被禁止访问,返回403。目前已经套用CDN访问 大佬telegram脚本更新通知频道JD_fruit Script 以下是LXK0301大佬telegram bot最新消息,CDN节点已经屏蔽中国IP,需要梯子! 下面链接都是CDN,没流量了再说 BoxJs订阅地址:https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301.boxjs.json Surge的Task&Cookies脚本模块地址: https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301_Task.sgmodule.sgmodule Loon的Task&Cookies脚本订阅链接: https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301_LoonTask.conf 圈x: Task脚本订阅链接: https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301_gallery.json cookie脚本订阅链接: https://jdsharedresourcescdn.azureedge.net/jdresource/llxk0301_cookies.conf Peng-YM:https://gist.githubusercontent.com/Peng-YM/cc2cd6205b305d36544a44ec77129832/raw/gallery.json HotKids:https://raw.githubusercontent.com/HotKids/Rules/master/Quantumult/X/TaskGallery.json blackmatrix7:https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/gallery.json lxk0301 大佬:https://jdsharedresourcescdn.azureedge.net/jdresource/lxk0301_gallery.json 锄禾合集:https://dove.589669.xyz/task2qxgallery?sub=https://raw.githubusercontent.com/ChuheGit/1/main/Surge/Module/Task.sgmodule&img=1 打开QuantumultX,进入设置-构造请求(按红框标记点击): 点击+后输入上面大佬脚本地址,然后想要什么脚本就点击什么脚本,它会自动添加到定时任务中。 京东有些活动脚本不要随便修改执行时间,以免错失良机。 所有京东cookies通用,获取一次即可,保持一个月左右。 添加完脚本就要获取自己京东账号的cookies了,看大佬脚本描述: [rewrite_local] # 获取京东Cookie. # 注意此为远程路径, 低版本用户请自行调整为本地路径. https:\/\/api\.m\.jd\.com\/client\.action.*functionId=signBean url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js [mitm] hostname = api.m.jd.com 在QuantumultX配置文件中编辑rewrite_local和mitm,加入上文代码。保存后用手机浏览器访问https://bean.m.jd.com,登录(安装京东APP后一键登录,方便快捷),手动签到一次,QuantumultX会提示获取cookies成功,这时大功告成。 有些活动到时间后一次几百京东豆,不亦乐乎。 上面大神们的脚本有些签到哦已经失效了,使用过程签到不成功之类的问题就不要疑惑了,直接放弃就好! 结语 大神太多,脚本都用不过来,各种签到脚本已经很全了,小众的签到只能自己抓包调试了。
2020年12月22日
11,082 阅读
0 评论
3 点赞
2020-12-22
Laravel-关系预加载数量限制
前言 最近开发一个项目,关于用户评论。评论可以被用户再次评论,当然只做了一级限制,没有做太多层级,可以回复某个评论中的特定用户(类似于@功能)。 在输出评论列表中,是应该输出部分评论的回复,但是看似简单,实际情况却相对复杂。 分析 在laravel中查询出两级并不难, 使用预加载可以轻松完成: class Comment extends Model { ... public function comments() { return $this->hasMany($this, 'comment_id'); } ... } Comment::with('comments')->simplePaginate() 当需要限制评论回复的数量时,首先想到的是如下方法: Comment::with( [ 'comments' => function (HasMany $query) { $query->take(5); }, ] )->simplePaginate() 但是返回的模型关系comments被限制小于等5条,并不是每条评论的回复,而是整个查询结果的评论回复。如果第一条评论回复有10条,那么会显示5条,之后其他评论的回复全部为空。 其中的Sql语句是这样: select * from `comments` where `comments`.`comment_id` in (1, 2, ...) limit 5 要实现每条评论显示N条回复并不难,只是回到了N + 1的问题, 查询出列表后再加载关系: $comments = Comment::simplePaginate(); $comments->each(function($comment) { $comment->load( [ 'comments' => function (HasMany $query) { $query->take(5); }, ] ); }); Sql: select * from `comments` where `comments`.`comment_id` in (1) limit 5 select * from `comments` where `comments`.`comment_id` in (2) limit 5 ... 这样确实可以解决问题,但是非常笨。 在laravel-framework的issue中找到了类似问题Eager-loading with a limit on collection...,其中有位开发者通过修改limit和take方法来实现预加载关系数量限制,但是提交PR被laravel作者拒绝,于是封装成扩展eloquent-eager-limit。 我安装后试了下,确实能达到效果,于是看了下源码。作者几乎把所有关系的limit和take方法全部重写,然后封装成Trait,模型中使用该Trait相当于重写了limit和take方法。使用方法和之前一样,但是要注意,一旦使用eloquent-eager-limit的Trait后,该模型就不再有之前关系limit或take的总限制效果了,相信laravel作者拒绝也是因为此原因。 来看看生成的语句: select laravel_table.*, @laravel_row := if(@laravel_partition = `comment_id`, @laravel_row + 1, 1) as laravel_row, @laravel_partition := `comment_id` from (select @laravel_row := 0, @laravel_partition := 0) as laravel_vars, (select * from `comments` where `comments`.`comment_id` in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16) order by `comments`.`comment_id` asc) as laravel_table having laravel_row <= 10 order by laravel_row; 从Sql语句看来确实只用两次查询就可以获得结果,比之前load遍历加载方法更优。 来看看最终效果: { "data": [ { "id": 1, "post_id": 2, "comment_id": null, "contents": "contents...", "created_at": "2020-12-21 09:31:26", "comments": [ { "id": 24, "post_id": 2, "comment_id": 1, "contents": "contents....", "created_at": "2020-12-22 10:21:40", ... }, { "id": 18, "post_id": 2, "comment_id": 1, "contents": "contents....", "created_at": "2020-12-22 10:18:10", ... }, ... ], }, { "id": 7, "post_id": 2, "comment_id": null, "contents": "contents....", "created_at": "2020-12-22 09:38:07", "comments": [ { "id": 13, "post_id": 2, "comment_id": 7, "contents": "contents....", "created_at": "2020-12-22 10:11:02", }, { "id": 8, "post_id": 2, "comment_id": 7, "contents": "contents....", "created_at": "2020-12-22 09:59:43", } ... ] }, ... ], ... "status": "success", "code": 200 结语 其实也可以手动写Sql语句,缩成一条语句查询。但是太过于复杂的Sql并不易于维护,而且性能并不是一次复杂查询就一定比两次查询快。损失一点性能提高代码可维护性还是赚的。如果项目用户量较大,就要考虑缓存等其他技术优化了。
2020年12月22日
801 阅读
0 评论
0 点赞
2020-12-18
laradock-xdebug与php版本不兼容
前言 今天掉坑里了,为了添加grpc-php扩展,重新build php-fpm和workspace。过程相当顺利,而且启动docker都没问题,开发过程也没发现(api 调式和开发)。知道访问laravel-admin后台页面,访问半天打不开。HTTP 502错误。 摸索过程 出现502错误开始没在意,以为是早上composer update,太慢直接手动中断了,可能缓存什么的出问题了。 刚开始没在意,直到我尝试php artisan ide-helper:gen (ide-helper开发工具)时出错了 segmentation fault php artisan ide-helper:gen。 这下真有问题了。 尝试访问其他开发站点,登录页没有问题,laravel日志也没有。 查看docker日志 docker-compose logs php-fpm 出现大量日志 看到这行感觉莫名其妙: Illuminate\Contracts\Container\BindingResolutionException: Target [Closure] is not instantiable while building [Encore\Admin\Layout\Content]. in /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php on line。 不可能会出现这种错误啊,查看源码: namespace Encore\Admin\Layout; use ... class Content implements Renderable { ... /** * Content constructor. * * @param Closure|null $callback */ public function __construct(\Closure $callback = null) { if ($callback instanceof Closure) { $callback($this); } } } 构造函数有默认值,而且参数也是个闭包,不可能出现字符串Closure被容器实例化啊。简直一脸懵逼... 想断点调试代码,xdebug也失效了。开始用gdb调试过,发现大量xdebug关键字,想着八成与它脱不了干系。 去laradock看源码,对比本地php-fmp和workspace的Dockerfile文件,虽然没有新版本发布,但是这两文件确实有改动xdebug部分。 php-fpm ########################################################################### # xDebug: ########################################################################### ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install xdebug-2.5.5; \ else \ if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ pecl install xdebug-2.9.0; \ else \ pecl install xdebug-2.9.8; \ fi \ fi && \ docker-php-ext-enable xdebug \ ;fi # Copy xdebug configuration for remote debugging COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini RUN sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /usr/local/etc/php/conf.d/xdebug.ini && \ sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /usr/local/etc/php/conf.d/xdebug.ini && \ sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /usr/local/etc/php/conf.d/xdebug.ini workspace ########################################################################### # xDebug: ########################################################################### USER root ARG INSTALL_XDEBUG=false RUN if [ ${INSTALL_XDEBUG} = true ]; then \ # Install the xdebug extension if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ pecl install xdebug-2.5.5; \ else \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \ pecl install xdebug-2.9.0; \ else \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ] && [ $(php -r "echo PHP_MINOR_VERSION;") = "1" ]; then \ pecl install xdebug-2.9.8; \ else \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \ pecl install xdebug-2.9.8; \ else \ #pecl install xdebug; \ echo "xDebug 3 required, not supported."; \ fi \ fi \ fi \ fi && \ echo "zend_extension=xdebug.so" >> /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/20-xdebug.ini \ ;fi # ADD for REMOTE debugging COPY ./xdebug.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini RUN sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini && \ sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/xdebug.ini xdebug版本被限制在2.9.8,我去xdebug官网查看发现最新3.0.1,立马去workspace执行php -v: PHP 7.4.13 (cli) (built: Nov 28 2020 06:24:43) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.13, Copyright (c), by Zend Technologies with Xdebug v3.0.1, Copyright (c) 2002-2020, by Derick Rethans 果然是最新版本,这是laradock问题,将php-fpm和workspace Dockerfile xdebug代码段替换再 build 就能解决了。 结语 xdebug 3.x估计是对应php8,目前开发环境使用PHP7,出现这种莫名其妙的错误真的很难调试。浪费大半天时间,重新build不知道多少遍,总之记住扩展不兼容也会出现各种莫名其妙问题。
2020年12月18日
810 阅读
0 评论
0 点赞
2020-06-23
IOS14-beta-尝鲜
前言 WWDC20 今天凌晨已经召开,与以往不同,这届是录播方式,可能与疫情有关! 整个开发者大会将近两个小时,我只特意关注了IOS14部分。没有那些炸天的新特性,大多数还是一些体验改进。 介绍 ios14描述文件下载 小组件 搜索页面小组件有形状多样化,而且长按还可以直接添加到桌面,添加到桌面会叠加你所使用的小组件,你可以向上或者向下翻动,显示更多。 翻译APP 一直使用google-翻译,IOS14新增了自带的翻译APP。 隐藏APP页面 在IOS14下可以隐藏其他APP页面,只保留主页面,其他被隐藏的app都会集中在APP资源库,也就是最后一页。 长按页面空白处,再点击dock栏上面的小点点就可以根据自己的喜欢隐藏页面了。 APP 资源库 APP资源库包含所有APP,并且会自动归类,大图标是经常使用的APP,而小图标是不常使用的APP,点击小图标会列出该类所有APP。 向下拉或者点击搜索,所有APP会已开头字母或者拼音首写字母排序,这样就方便多了。 来电更友好 来电不再是全屏显示了,可以继续干别的,向上推会缩起来,时间显示位置会有一个小电话的动画效果。锁屏界面还是全屏的。 vedio 画中画 在safari网页中播放的视频可以使用画中画功能,在设置-通用-画中画中可以关闭facetime和视频app返回页面时自动画中画功能。其他APP暂未发现此功能,说不定以后会支持。画中画只能拖放到四个角,不能放在任何你想放的位置。 向左或者向右可以把视频隐藏起来,但是还是在播放。 新增点击手机背部功能 在设置-辅助功能-触控-轻点背面中可以设置,分别为轻点两下和三下,可配置预设功能。 quantumultX 用户可能在wifi下其他APP没有网络 因为quantumultX作为代理,接管了路由,所以要开启本地网络权限。 按照作者的说明添加,并且允许即可。本机IP地址查看已连接wifi中的IP地址填上,如果出现无法链接服务器一般是已经允许,或者换wifi中的网关地址再试。 其实我以上方式都不行,估计是允许了,开机自动启动quantumultX时看到提示错误,重新开关下就好了。 结语 这次IOSBeta版本并没有太多BUG,至少没有发现严重影响使用的BUG。APP情况大多数都OK。不像IOS13Beta刚出来那会,wifi下电话都打不进来,漏接不少电话。虽然这次没有多少BUG,但是也确实没有很惊艳的功能,慢慢等IOS15吧............
2020年06月23日
1,113 阅读
0 评论
1 点赞
2020-06-05
阿里云活动-答题送T恤
前言 阿里云活动,限量 Linux X Hands-on Labs T恤免费领,参与linux实验并答题送T恤!!! 开搞 活动6月1-10号 获取路径: 访问 https://summit.aliyun.com/hol 体验馆-《Linux命令入门》 体验Linux场景,通过10道测试题 拿90分,T恤 Get 点击开始体验,实例创建完成,然后直接结束体验,再点击再次体验,再结束就可以开始做下一个任务了。 每天凌晨刷新200件,上午11点刷新300件好像是这样的,听说8-9号每天1000件。 可以先完成所有任务包括考试,等到刷新T恤后直接领取,领取要填写姓名,手机和收货地址 T恤有码,活动后统一收集! 考试答案 题目都一样,只是顺序可能不同。 1,下面哪个命令可以用于删除文件而无需确认 B A. rm B. rm -f C.del D.remove 2,下面哪个命令可以获取到当前工作目录的绝对路径 B A.passwd B.pwd C.whereis D.whois 3,下面哪条命令可以把f1.tst 复制为f2.txt? C A. cp f1.txt | f2.txt B.cat f1.txt | f2.txt C.cat f1.txt > f2.txt D. copy f1.txt | f1.txt 4,为了让文件的所有者有读(r)和写{w}的权限,而其他用户只能进行只读访问,权限应设置为 C A.566 B.655 C.644 D.744 5,在vim 编辑器中的命令模式下,键入( )可以光标当前所在行下添加一新行 A A.o B.p C.i D.a 6.在ps命令中,哪个参数可以用来 显示所有用户的进程? A A.a B.b C.u D.x 7,如何在文件中查找显示所有以“*”开头的行? D A. find \* file B.wc -l * < file C.grep -n * file D.grep '^\*' file (多选)8,下面哪些命令可以看到文件的大小? ACD (D选项存疑 自行判断) A.wc B.df C.du D.state (多选)9,Linux下用哪些命令可以在管道统计一个文件中单词出现的次数?ABD A.grep B.wc C.find D.awk (多选)10,下面哪些命令可以停止sshd服务? ABD A.ps -ef | grep sshd | xargs kill -9 B.killall sshd C.kill -9 sshd D.pidof sshd |xargs kill -9 结语 赶紧去撸羊毛吧!!!
2020年06月05日
909 阅读
0 评论
1 点赞
2020-05-15
GTA5限免了-7天内领取
前言 《侠盗猎车手5》(Grand Theft Auto V)从昨晚11:00开始免费领取了,昨晚官方站点已爆炸,直接500错误。今天缓解很多,可以正常领取了。活动截止到5月21日。 领取 领取地址 领取时最好不要用代理,如果IP领取次数太多可能会出现您的账户目前无法下载更多的免费游戏。epic对同一IP申请的游戏数量进行了限制(您单独的IP是绝对不会达到这个限制的),加速器可能会使大量用户使用同一IP,造成无法下载更多免费游戏,建议遇到这个问题的玩家尝试更改自己的IP 免费的东西总有很多人批量领取,然后你懂的。风气太差了,哎不想多说。 正在下载,游戏真的大!!!
2020年05月15日
638 阅读
0 评论
0 点赞
1
2
3
...
5