Skip to content

Instantly share code, notes, and snippets.

View Caldis's full-sized avatar
🎯
    ¯\_(ミ)_/¯   

Caldis_Chen Caldis

🎯
    ¯\_(ミ)_/¯   
View GitHub Profile
@Caldis
Caldis / 解决OSX外接显示器模糊的问题.md
Last active May 9, 2020 02:25
解决OSX外接显示器模糊的问题

##解决OSX外接显示器模糊的问题

由于OSX无法识别一部分外接显示器的EDID信息, 默认以TV模式进行输出, 因此会导致外接显示器时文字渲染模糊
可以在关于本机>系统报告>硬件>图形卡/显示器中查看, 如果外接显示器显示了[电视 - 是], 即符合症状

在 EL Capitan 版本, 增加了一个叫做 System Integrity Protection (簡稱 SIP ,或稱 rootless, 在 iOS 9 裡面也有) 的保護機制,SIP 最主要功能就是防止對系統程式的 code injection,還有使用未被 Apple 認可的 kext。 如果要获取读写权限, 需要开机的时候按住 CMD+R 然后在终端输入 csrutil disable, 在重启就可以关闭 SIP 了。

  1. 复制以下代码为 patch-edid.rb 文件 (来源: https://embdev.net/topic/284710) https://gist.github.com/Caldis/cacb62a1e0426049255acb9cea503153
#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710
require 'base64'
data=`ioreg -l -d0 -r -c AppleDisplay`
edid_hex=data.match(/IODisplayEDID.*?<([a-z0-9]+)>/i)[1]
vendorid=data.match(/DisplayVendorID.*?([0-9]+)/i)[1].to_i
@Caldis
Caldis / 解决OSX外接21:9显示器无法全屏的问题.md
Last active December 18, 2016 06:19
解决OSX外接21:9显示器无法全屏的问题

##解决OSX外接21:9显示器无法全屏的问题

使用 SwitchResX 即可单独设置外接显示器分辨率  

注: SwitchResX 只有10天的试用时间, 也不会有提示, 如果超过试用时间后即无法修改货保存已有设置或新增设置, 此时可以新建一个用户, 然后在其中修改设置

@Caldis
Caldis / jQueryVelocity.js
Last active February 17, 2017 16:19
jQueryVelocity.js
// 对传入的jQuery对象执行序列动画, 依次执行序列动画,然后执行回调函数
// target: jQuery对象
// before:动画的初始状态
// after:动画的结束状态
// interval:每个动画之间的间隔
// duration:单个动画的持续时间
// callback:执行完序列中最后一个动画后的回调函数
function animVelocity(target, before, after, interval, duration, callback) {
target.each(function(i){
var t = $(this);
@Caldis
Caldis / jQueryClassAnim.js
Created February 18, 2017 06:40
jQueryClassAnim.js
function addAnimateClass(target, animClass, interval, duration, removeAfterAnim, callback) {
// 清掉类名和定时器
target.each(function(){
$(this).removeClass(animClass);
});
// 添加动画类
target.each(function(i){
var t = $(this);
setTimeout(function() {
t.addClass(animClass);
@Caldis
Caldis / GlobalEvent.js
Created March 1, 2017 17:11
GlobalEvent.js
// 全局事件工具类
// 放全局事件的对象
const eventDOM = document.querySelector('html');
// 全局事件的数据
window["eventOBJ"] = {}; const eventOBJ = window.eventOBJ;
// 全局事件的回调函数引用
window["eventCAB"] = {}; const eventCAB = window.eventCAB;
export const GlobalEvent = {
// 添加对应事件的 Handler
addEventHandler: (type, handler, cleanBeforeAdd) => {
@Caldis
Caldis / compare.js
Created March 23, 2017 15:40
compare
默认显示 - LP
Optional([{
kCGWindowAlpha = 1;
kCGWindowBounds = {
Height = 1080;
Width = 2560;
X = "-412";
Y = "-1080";
};
kCGWindowIsOnscreen = 1;
@Caldis
Caldis / lerp.js
Last active February 23, 2018 09:29
Lerp curve by echart
var transition = 0.14
var threshold = 0.001
var y = [], x = []
var current = 0.01
var target = 1
// Demo Curve
// Lerp Curve
@Caldis
Caldis / smoothScroll.js
Last active March 16, 2018 13:48
Capture and smooth the scrolling for target dom
const view = document.querySelector("#page>div")
class scroll {
constructor({ target, interpulator, precision }) {
// values
this.target = target // 目标
this.precision = precision // 精确度
this.interpulator = interpulator // 插值器
this.timer = null // 计时器引用
this.looping = false // 是否正在循环
@Caldis
Caldis / bind.js
Last active July 26, 2018 09:30
实现一个 Bind 函数
Function.prototype.b = function(env, arg) {
// 从 arg 中去掉 evn, 取出 bind 的附加参数
// arguments 为非典型数组, 没有 slice 方法, 需要这样调用来裁剪并转换为数组
const arg = Array.prototype.slice.call(arguments, 1)
// 保存当前的上下文
const context = this
// 返回 bind 后的函数
const func = function(bindArg) {
// 接收到 bind 后的函数调用后, 先拼接新的参数到原先的 bind 的附加参数后面
// Array.prototype.slice.call(bindArg) 可将 bindArg 转换为数组并拼接