Welcome to

快雪Tang

Home / macOS

MBP切换网络设定

  • Post By:
  • Date:
  • Category: 技术

接上回的 在MBP苏醒时执行自动任务 ,继续说。 今次的重点在于网络切换。 这个任务,要被细分为很多细节,不过并没那么难,都很容易找到恰当的办法。   使用 macOS 的 “位置” 首先,经验告诉我们,在多种场所切换不同的网络配置,最佳方案是“位置 / Location”: 所以,如图所示,首先设定两个位置,一个是Home,一个是办公室。Home设置只有WIFI,IP地址是预分配的:192.168.0.71;办公室呢,WIFI被加入设施列表,但设置为关闭状态,此外Wireless被加入设置列表,作为主要的网络接口,办公室也是DHCP预分配的,WIFI为192.168.0.172,Wireless为192.168.0.72,网关为 192.168.0.254。 为什么不把HOME IP设置的和办公室一样呢?其实也是可以的,因为办公室和家里的网关不同,可以用于区别。我这里设置的不一样更多是一个历史缘由,可以忽略。 macOS的位置功能,允许你将全部网络设施选择性地配置到不同的位置。所以我花了不少时间来试验和选择出了最佳的组合方案,当然,下一次增加更多位置时就简单了,我想我会很快搞的定。   脚本操作 全局变量 PAC=’http://127.0.0.1:9050/pac’ BYPASS=’127.0.0.1 localhost test.local 163.com sina.com.cn’ WIFI=Wi-Fi LOC_WIFI=’HOME’ IP_WIFI=’192.168.0.71′ WIRELESS=’Thunderbolt Bridge’ LOC_WIRELESS=’SUWEI-OFFICE’ IP_WIRELESS=’192.168.0.72′ IP_WIRELESS_wifi=’192.168.0.172′ TD=NONE pac_url=NONE loc=$(c-location) ip=$(c-ip) 操作网络位置: c-location(){ networksetup […]

Read More

在MBP苏醒时执行自动任务

  • Post By:
  • Date:
  • Category: 技术

缘起 今次的起因在于我的本本需要在家里、办公室切换不同的网络,不同的代理、不同的网关等等,每天做两次实在是太超标了,于是就谋求自动化。 编程 经过一段时间的关注,一条编程指南被发现有助于解决问题: Technical Q&A QA1340 当然,Apple的尿性太差,links过一段时间就找不到了,所以这个技术问答实际是 Registering and unregistering for sleep and wake notifications Q: How can my application get notified when the computer is going to sleep or waking from sleep? How to I prevent sleep? 所以,我可以xcode写个console程序,做成服务在后台跑,拿住事件之后fork一个shell做事情就可以了。 […]

Read More

macOS 开发:实现一个 delay()

delay() 的实现到处都是,下面是一个 Swift 3 版本的,适用于macOS: public typealias Task = (_ cancel : Bool) -> Void extension CommonUtil { public static func delay(_ after : TimeInterval, task : @escaping ()->()) -> Task? { return delay(after.dispatchTimeInterval, task: task) } /** 异步延迟调用一个闭包. Samples: […]

Read More

macOS开发 : TimeInterval 转换到 DispatchTimeInterval

TimeInterval 是以秒为单位的一个 Double 值。 但在 Swift 3 中,DispatchTime和DispatchTimeInterval具有更强大的表述性和可编程性。因此存在一个迁移和合并的问题。 实际上,关于时钟、日历方面的问题是非常复杂的,但我也没耐性逐个分解,非常系统的,那太费事了,所以以下简单地贴代码来直接用好了。 extension TimeInterval { public func toDispatchTimeInterval () -> DispatchTimeInterval { let v : Double = self let vv = v.multiplied(by: Double(NSEC_PER_SEC)) return DispatchTimeInterval.nanoseconds(Int(vv)) } public func toDispatchTime () -> DispatchTime { […]

Read More