JavaScript 小功能

?? Nullish coalescing operator 为了避免变量为null或者undefined 例如: number = number ?? 0 假如number存在,则赋值。要是number不存在或为null,则给number赋值0 上语等同于: if(number == null){ number = 0 } ? Ternary Operator 避免子项不存在: apple = forest.tree.apple apple = forest?.tree?.apple apple = tree.apple?.[0] apple = tree.apple[0] 如果forest存在,再继续往下取其tree,如果tree存在,再往下取其apple,不会因为子项不存在报错。 forest.Pick() forest.Pick?.() 避免function不存在。先检查function是否存在且是一个function,如果不存在则不继续,也不会报错。 ...

2022-02-13 · 1 min · Duke Yin

Gitbook的一些坑

版本 Node.js 要使用使用老的 12.18.1 版本才行 windows 64位安装包是 node-v12.18.1-x64.msi linux安装包是 node-v12.18.1-linux-x64.tar.gz 最新版对Gitbook会有各种问题,不论是稳定版还是尝鲜版 停在 “Installing GitBook 3.2.*” 安装后,第一次执行任何gitbook命令,会出现: CLI version: 3.2.* Installing Gitbook 3.2.* \ 小斜杆会一直转啊转 解决方法:没什么好的解决方法,只能等着。 我等了大概有半小时,安装完成了。 有人说要替换Node.js的源,改成淘宝源,事实上是极其不推荐这么做的。非官方的,不值得信赖,所以只能等。 Linux下安装后Command not found 需要找到 /root/.bash_profile 编辑(每个安装的路径可能不一样) 在PATH变量的最后添加如下: :$(npm prefix -g)/bin 保存 在回到/root/目录下,执行: source .bash_profile 然后再执行gitbook -V就不会找不到命令了。 ...

2022-01-30 · 1 min · Duke Yin

WordPress主题文件结构

示例1 air-light theme themes/your-theme-name/ # → Root of your air-light based theme ├── 404.php # → Default "not found" page ├── archive.php # → Default archive template ├── bin/ # → Scripts │ ├── ... # → This scripts are used for generating themes or new Air-light version │ └── newtheme.sh # → The start script for creating YOUR own theme out of Air-light ├── comments.php # → Default comments template (can be deleted if not needed) ├── css/ # → CSS files for production (never edit) │ ├── dev/ # → Unminified stylesheet files for debugging (never edit) │ └── prod/ # → Minified stylesheet files for production (never edit) ├── fonts/ # → Your webfont files (woff, woff2, ttf needed) ├── footer.php # → Site footer ├── front-page.php # → Demo front-page template (not included in wordpress.org version) ├── functions.php # → Set up your theme basic settings ├── gulp/ # → Gulp related settings and tasks │ └── ... # ├── gulpfile.js # → Core gulpfile for air-light development ├── header.php # → Site header ├── images/ # → Your theme images, for example default featured images and placeholders ├── inc/ # → Theme core PHP │ ├── hooks/ # → Hook functions │ ├── includes/ # → Non-template features │ ├── template-tags/ # → Template functions and helpers │ ├── post-types/ # → Custom Post Types │ ├── taxonomies/ # → Custom Taxonomies │ ├── hooks.php # → All hooks the theme runs are here │ ├── includes.php # → Include non-template features │ └── template-tags.php # → Include template functions and helpers ├── js/ # → JavaScript files │ ├── dev/ # → Unminified script files for debugging (never edit) │ ├── prod/ # → Minified script files for production (never edit) │ └── src/ # → Script files for development (edit these) │ ├── navigation.js # → Accessible multi-level navigation (from 3.4.5) │ ├── front-end.js # → Theme core JavaScript file (from 1.0.0, before: scripts.js) │ └── sticky-nav.js # → Sticky nav functionality (optional) ├── package.json # → Node.js dependencies and scripts ├── page.php # → Default page template ├── phpcs.xml # → PHPCodeSniffer/WordPress Theme Coding Standards settings ├── sass/ # → SCSS files for CSS development │ ├── base/ # → Theme base styles │ │ └── _accessibility.scss # → Accessibility │ ├── global.scss # → Core CSS file that calls all the modular files │ ├── gutenberg-editor-styles.scss # → Core CSS file for Gutenberg editor and blocks │ ├── components/ # → Add your style components to this folder │ ├── features/ # → Fuctionality styles │ │ ├── _gallery.scss # → Default WordPress gallery feature styles │ │ ├── _gravity-forms.scss # → Defaults for Gravity Forms + WCAG 2.0 form fields for Gravity Forms │ │ ├── _lazyload.scss # → Styles for air-helper lazyload feature (lazyload.js needed) │ │ ├── _top.scss # → Back to top styles │ │ ├── _pagination.scss # → Numbered pagination styles │ │ ├── _sticky-nav.scss # → Sticky nav styles (not included by default) │ │ └── _slick.scss # → Styles for slick-carousel (not included by default) │ ├── gutenberg/ # → Gutenberg block styles for both core and custom blocks │ │ └── ... # → WIP │ ├── helpers/ # → Helper mixins and functions │ │ ├── _animations.scss # → Animations and effects │ │ ├── _aspect-ratio.scss # → A mixin for aspect ratio │ │ ├── _general.scss # → Mixins for general use, or helpers of other mixins │ │ ├── _grid.scss # → CSS Grid helper mixin │ │ └── _typography.scss # → Typography style mixins │ ├── layout/ # → Fuctionality styles │ │ ├── _forms.scss # → Styles for general forms and Gravity Forms │ │ ├── _site-footer.scss # → Footer styles │ │ ├── _site-header.scss # → Header styles │ │ ├── _typography.scss # → Defaults for typography and fonts │ │ └── _gutenberg.scss # → Site-side styles for Gutenberg (pratically for single.php) │ ├── navigation/ # → Navigation styles │ │ ├── _burger.scss # → Burger styles and animations │ │ ├── _nav-desktop.scss # → Desktop navigation styles and dropdowns │ │ └── _nav-mobile.scss # → Navigation styles for mobile and touch devices │ ├── variables/ # → Configurations │ │ ├── _breakpoints.scss # → Widths from mobile to TV screens │ │ ├── _colors.scss # → All the colors of the theme │ │ ├── _font-face.scss # → Define font variables here │ │ ├── _font-family.scss # → Define font paths │ │ ├── _font-size.scss # → Define font related sizes │ │ ├── _forms.scss # → Form related variables │ │ └── _spacings.scss # → Margins and paddings │ ├── views/ # → Templates, archives, pages and views go here │ │ ├── _404.scss # → Default 404 styles │ │ ├── _comments.scss # → Comment styles (optional) │ │ ├── _front-page.scss # → Front page styles (empty by default) │ │ └── _search.scss # → Default search result styles ├── screenshot.png # → Theme screenshot for WP admin ├── search.php # → Default search view ├── sidebar.php # → Default sidebar (optional) ├── single.php # → Default single article or CPT view ├── style.css # → Theme meta information ├── svg/ # → Your theme SVG graphics and icons └── template-parts/ # → WordPress template parts. Modules go under this folder. ├── header/ # → Header modules │ ├── branding.php # → Site branding │ ├── navigation.php # → Site navigation └── hero.php # → Default hero 示例2 Twenty Seventeen Theme ...

2022-01-13 · 5 min · Duke Yin

PHP将英文字符转为URL友好字符串

$str = 'Álix----_Ãxel!?!?%%%'; strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($str, ENT_QUOTES, 'UTF-8')), ENT_QUOTES, 'UTF-8')), '-')); // will return alix-axel 但中文字符也会被删掉,此方法仅适用于拉丁语系字符串。

2021-12-30 · 1 min · Duke Yin

PHP 判断字符串是中文还是英文

$str = 'you are 你是'; //定义待检测字符串 function utf8_str($str){ $mb = mb_strlen($str,'utf-8'); $st = strlen($str); if($st==$mb){ //纯英文 return '纯英文'; }elseif($st%$mb==0 && $st%3==0){ //纯汉字 return '纯汉字'; }else{ //汉英混合 return '汉英混合'; } } echo '字符串:<span style="color:red">'.$str.'</span>,是<span style="color:red">'.utf8_str($str).'</span>';

2021-12-30 · 1 min · Duke Yin

FFmpeg X264的preset和tune

--preset的参数主要调节编码速度和质量的平衡 ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowplacebo 从快到慢 质量从坏到好 --tune 的参数主要配合视频类型和视觉优化的参数,或特别的情况。如果视频的内容符合其中一个可用的调整值又或者有其中需要,则可以使用此选项,否则建议不使用(如tune grain是为高比特率的编码而设计的) film 电影、真人类型; animation 动画; grain 需要保留大量的胶片颗粒时用; stillimage 静态图像编码时使用; psnr 为提高psnr信噪比做了优化的参数; ssim 为提高ssim相似度做了优化的参数; fastdecode 便于快速解码的参数; zerolatency 零延迟,用在需要非常低的延迟的情况下,比如电视电话会议的编码。

2021-09-26 · 1 min · Duke Yin

使用Docker搭建DPlayer视频弹幕接口API后端

原文链接:https://www.moerats.com/archives/838/ 说明:之前有同学要求博主出个DPlayer弹幕后端搭建教程,刚好本博客的Handsome主题更新并完美适配了Dplayer,然后就研究了下,发现了点小问题,如作者提供的弹幕API加载不出弹幕,而且Typecho当中的Dplayer插件有点旧无法对接V3后端,不知道其它程序插件是不是这样,这里博主只能使用HTML代码直接输出调用,经测试已完全正常加载弹幕和观看。这里就说下搭建及使用方法。 【2020.10.3】 弹幕api接口已修复,长期可用,https://dplayer.moerats.com,如出现问题留言即可。 【2020.10.27】 由于有些人不太喜欢Docker搭建,所以下面补齐CentOS、Debian、Ubuntu手动搭建教程。 简介 DPlayer是一个支持弹幕的HTML5视频播放器。支持Bilibili视频和danmaku,支持HLS、FLV、MPEG DASH、WebTorrent以及其他视频格式,支持截屏、热键、切换清晰度以及字幕等。 安装 作者提供的弹幕后端搭建方法挺多的,这里选择一个搭建最快,版本最新的一种。 Github地址:https://github.com/MoePlayer/DPlayer-node Docker安装 1、安装Docker #CentOS 6 rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum update -y yum -y install docker-io service docker start chkconfig docker on #CentOS 7、Debian、Ubuntu curl -sSL https://get.docker.com/ | sh systemctl start docker systemctl enable docker ...

2021-07-01 · 4 min · Duke Yin

Bilibili B站视频码率 2021年

清晰度最大分辨率最大帧率平均码率峰值码率音频码率1080p601920x1080606000kb/s24000kb/s320kb/s720p601208x720603000kb/s24000kb/s320kb/s1080p+1920x1080306000kb/s24000kb/s320kb/s1080p1920x1080303000kb/s24000kb/s320kb/s720p1208x720302000kb/s24000kb/s320kb/s480p854x48030900kb/s?128kb/s360p640x36030500kb/s?64kb/s音频最大声道数都是2,最大采样率都是48000hz

2021-06-29 · 1 min · Duke Yin

使用ffmpge将视频转为HLS播放列表

安装ffmpeg https://github.com/BtbN/FFmpeg-Builds/releases 或者 https://www.gyan.dev/ffmpeg/builds/ Windows最新版: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z 设置Windows系统变量 Environment Variables -> User variables for USERNAME -> path -> new( or edit on windows7) 添加mmpeg安装路径 例如: c:/mmpeg/bin/ 建立目录结构 目标结构 videosmediavideo1hlsvideo2hlsvideo1video2video3... 定位到Video文件夹之后,新建一个同视频名称的目录 md media\some_fun_video_name\hls 使用mmpeg命令生成多种尺寸码率视频及m3u8列表 ffmpeg -i some_fun_video_name.mp4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls ./media/some_fun_video_name/hls/360_out.m3u8 ffmpeg -i some_fun_video_name.mp4 -profile:v baseline -level 3.0 -s 800x480 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls ./media/some_fun_video_name/hls/480_out.m3u8 ffmpeg -i some_fun_video_name.mp4 -profile:v baseline -level 3.0 -s 1280x720 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls ./media/some_fun_video_name/hls/720_out.m3u8 ffmpeg -i some_fun_video_name.mp4 -profile:v baseline -level 3.0 -s 1920x1080 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls ./media/some_fun_video_name/hls/1080_out.m3u8 ffmpeg -i 输入文件名.mp4 -profile:v baseline -level 3.0 -s 长x宽 -start_number 0 -hls_time 切割单文件时长秒 -hls_list_size 0 -f hls 输出路径/输出文件名.m3u8 然后在转换好的目录 hls 下,新建一个文件作为主播放列表 ...

2021-06-23 · 2 min · Duke Yin

群晖常用端口

类型端口号协议Synology Assistant9999、9998、9997 UDP备份Active Backup for Business5510 注:仅用于备份 Hyper-V 或物理 Windows 设备。 443(vCenter Server 和 ESXi 主机)、 902(ESXi 主机); 5985(用于 Hyper-V 的 HTTP)、 5986(用于 Hyper-V 的 HTTPS)TCPData Replicator、 Data Replicator II、 Data Replicator III9999、 9998、 9997、 137、 138、 139、 445TCPDSM 5.2 数据备份、 rsync、 共享文件夹同步、 远程 Time Backup873、22(如果通过 SSH 加密)TCPHyper Backup(目的地)6281(多版本备份)、 22(如果通过 SSH 加密)、 873(远程数据复制)TCPHyper Backup Vault、 DSM 5.2 Archiving Backup6281TCPLUN 备份3260 (iSCSI)、 873、 22(如果通过 SSH 加密)TCPSnapshot Replication3261 (iSCSI LUN)、 5566(共享文件夹)TCP下载BT16881TCP/UDPeMule4662TCPeMule4672UDPWeb应用程序DSM5000 (HTTP)、5001 (HTTPS)TCPFile Station5000(HTTP,可添加其他端口)、 5001(HTTPS,可添加其他端口)TCPEmby8096 8920(HTTPS)TCPPlex32400TCPMail ServerIMAP143TCPIMAP(SSL)993TCPPOP3110TCPPOP3(SSL)995TCPSMTP25TCPSMTPs465TCPAFP548TCPCIFSsmbd:139 (netbios-ssn)、 445 (microsoft-ds)TCP/UDPCIFSNmbd:137、138UDPFTP、 通过 SSL 的 FTP、 通过 TLS 的 FTP21 20(主动模式的数据连接)、 1025-65535(被动模式的数据连接)TCPiSCSI3260TCPNFS111、892、2049TCP/UDPTFTP69UDPWebDAV、 CalDAV5005、5006 (HTTPS)TCPAudio Station1900 (UDP)、 5000(HTTP,可添加其他端口)、 5001(HTTPS,可添加其他端口)、 5353(Bonjour 服务)、 6001-6010(AirPlay 控制/定时)TCP/UDPCentral Management System 5000 (HTTP)、 5001 (HTTPS)TCPCIFS 向外延展集群49152-49252TCP/UDP17909、17913、19998、 24007、24008、24009-24045、 38465-38501、4379TCPCloud Station6690TCPDHCP Server67、68UDPLDAP Server(原为 Directory Server)389 (LDAP)、636(LDAP 含 SSL)TCPDownload Station5000TCPiTunes Server3689TCPLogitech® Media Server3483、9002TCPMail Station80 (HTTP)、443 (HTTPS)TCP媒体服务器1900 (UPnP)、 50001(内容浏览)、 50002(内容串流)TCP/UDPMigration Assistant7400-7499DRBDNote Station5000 (HTTP)、 5001 (HTTPS)TCPPhoto Station、 Web Station80(可添加其他端口)、 443 (HTTPS)TCPPresto File Server3360、3361TCP/UDP代理服务器3128TCPSurveillance Station9900 (HTTP)、9901 (HTTPS)TCPSynology Calendar38008、38443CalDAVSynology CardDAV Server8008 (HTTP)、8443 (HTTPS)TCPSynology Chat5000 (HTTP)、5001 (HTTPS)TCPSynology Contacts5555CardDAVSynology Directory Server88 (Kerberos)、389 (LDAP)、 464 (Kerberos 密码更改)TCP/UDP135 (RPC 终结点映射器)、 636 (LDAP SSL)、 1024 (RPC)、 3268 (LDAP GC)、 3269 (LDAP GC SSL)TCPSynology Drive Server80(链接共享)、 443 (链接共享)、 5000 (HTTP)、 5001 (HTTPS)、 6690 (Synology Drive Client)TCPSynology Moments5000 (HTTP)、 5001 (HTTPS)TCPSyslog Server514(可添加其他端口)TCP/UDPVideo Station1900 (UDP)、 5000 (HTTP)、 5001 (HTTPS)、 9025-9040、 5002、 5004、 65001(使用 HDHomeRun 网络调谐器的型号)TCP/UDPVirtual Machine Manager2379-2382(集群网络)、 3260-3264 (iSCSI)、 5000 (HTTP)、 5001 (HTTPS)、 5566(复制)、 16509、16514、 30200-30300TCPVPN Server (OpenVPN)1194、1195UDPVPN Server (PPTP)1723、2001TCPVPN Server (L2TP/IPSec)500、1701、4500UDP移动应用DS audio5000、5001 (HTTPS)TCPDS cam5000、5001 (HTTPS)TCPDS cloud6690TCPDS file5005 (HTTP)、 5006 (HTTPS)TCPDS finder5000 (HTTP)、 5001 (HTTPS)TCPDS get5000 (HTTP)、 5001 (HTTPS)TCPDS note5000 (HTTP)、 5001 (HTTPS)TCPDS photo80、 443 (HTTPS)TCPDS video5000 (HTTP)、 5001 (HTTPS)TCPSynology Drive5000 (HTTP)、 5001 (HTTPS)TCPSynology Moments5000 (HTTP)、 5001 (HTTPS)TCP打印机、UPS和外围设备Bonjour5353UDPLPR515UDP网络打印机 (IPP)/CUPS631TCP网络 MFP3240-3259TCPUPS3493TCP系统LDAP389、 636 (SLAPD)TCPMySQL3306TCP资源监视器/SNMP161TCP/UDPSSH/SFTP22TCPTelnet23TCP

2021-03-17 · 2 min · Duke Yin