I have no idea what I’m doing - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
esrkforward
V2EX    Apple

I have no idea what I’m doing

  •  1
     
  •   esrkforward 2024-04-22 17:52:14 +08:00 2526 次点击

    这是一个创建于 538 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在搁置了很久之后,我终于决定开始写一个念想了很久的小工具。我希望它实现的功能很简单:当我清洁 MacBook 的键盘与触摸板时,这个小工具会帮我禁用键盘,以防误触。同时,将屏幕调至黑色,以帮助我清洁屏幕上的污点。

    我知道 OneSwitch 提供了这个功能,并且我很久之前就买了 OneSwitch 。但是嘛,人生中总有那么一些时刻,你想要自己创造些什么,尽管并不是什么了不起的创造。就像小时候用橡皮泥捏的小狗,尽管是个龇牙咧嘴歪瓜裂枣的丑小狗,但你依然会为此感到骄傲和快乐。

    况且,在写习惯了 C#之后,我也对 Swift 和 SwiftUI 充满了好奇。我想,这是一个学习掌握新技能的好机会。

    我觉得这个任务会很简单,尽管我从未有任何编写 macOS 软件以及 Swift 和 SwiftUI 的经验。但是我想,嘿,这个简单的小工具实现起来能有多难呢?况且,在 ChatGPT 的帮助下,我觉得应该半小时就能完成。

    事实证明,我既高估了自己,也高估了 ChatGPT 。

    当我喂给 ChatGPT 一些提示词后,它给我生成了一些看起来还像模像样的代码。我凭借自己的半吊子 C#经验,把我觉得会生效的部分粘贴到 Xcode 中让窗口进入全屏只需要一个 .fullScreenCover() 嘛,简单。

    然后 Xcode 就报错了。

    我看着鲜红的报错,脑子里只有一个念头:I have totally no fucking idea what I’m reading.

    虽然我能看懂报错的意思,但我完全不知道要怎么解决。Google 了一圈,大部分答案都和 ChatGPT 给出的一模一样。在各个论坛和站点里逛了一圈,才知道.fullScreenCover() 不适用于 macOS 。又找了一圈,才在一个论坛里找出一串能用的代码:

    .onAppear() { Task { @MainActor in NSApplication.shared.windows.last?.toggleFullScreen(nil) } } 

    我看着这串代码,脑子里只有一个想法:I have totally no fucking idea what I’m doing.

    但这不重要,至少我们实现了第一步:让这个小工具全屏运行。

    接下来我们要让这个小工具显示黑色的背景。这一步倒是很简单,ChatGPT 至少给出了基本正确的答案。在把代码复制进 Xcode 然后缝缝补补之后,我们果然得到了纯净的黑色背景。之后,我又实现了一个简单的退出程序的功能。

    当我做完这些工作,我发现已经过去了接近三个小时。而我只在项目里新增了八行代码还包括注释。但是,尽管这个小工具非常简陋;尽管它还缺失了很多关键功能,比如屏蔽键盘快捷键;尽管这八行代码里有三行我都完全不知道是什么意思。可是当我把它运行起来的时候,我还是感到非常愉悦。

    这是我的潦草小狗,它很潦草,但我很喜欢它。

    我把这个项目发布到了 GitHub ,你可以在这里查看它。在接下来的时间里,我会慢慢完善这个小工具,希望它在将来会给各位提供一些帮助。我也准备借这个机会好好学习一下 Swift ,至少能看懂自己的项目。不过现在,我准备休息一下,喝杯咖啡,然后和我的伴侣分享这个消息:“嘿,你看,我捏了一个潦草小狗。”

    Bonus:在 YouTube 上有一个搞笑视频,可以完美的描述我在写这个项目时的心情。在这里分享给各位。 https://www.youtube.com/watch?v=rR4n-0KYeKQ

    12 条回复    2024-04-23 22:25:21 +08:00
    pxiphx891
        1
    pxiphx891  
       2024-04-22 19:02:06 +08:00
    很棒
    7VO54YYGvw3LOF9U
        2
    7VO54YYGvw3LOF9U  
       2024-04-22 19:08:41 +08:00 via iPhone
    TL;DR
    关机不就行了
    LK99
        3
    LK99  
       2024-04-22 19:50:32 +08:00
    @hugi #2
    ~ uptime
    19:49 up 119 days, 17:04, 7 users, load averages: 2.17 2.18 2.27
    MacBook 的用法之一是尽量不关机。
    itisqiang
        4
    itisqiang  
       2024-04-22 20:03:45 +08:00
    @hugi 关机的话,按到任意键也会开机
    chuck1in
        5
    chuck1in  
       2024-04-22 20:32:41 +08:00
    swift 的东西做的这么差劲吗?
    另外想问下 op 你做的这种工具如果想要给其他用户使用的话,是不是必须要上 appstore 才行,这就涉及到要备案?
    Aaarnold
        6
    Aaarnold  
       2024-04-22 20:34:01 +08:00
    @hugi 擦到触控板就开机了
    x4gz
        7
    x4gz  
       2024-04-22 21:31:56 +08:00
    为什么要搜索报错 直接把报错作为后续问题问 chatgpt 不就行了
    goldenlove
        8
    goldenlove  
       2024-04-22 23:21:27 +08:00
    esrkforward
        9
    esrkforward  
    OP
       2024-04-22 23:25:39 +08:00
    @x4gz 尝试很多次把报错喂给 ChatGPT ,但是始终给出的都是错误的回答
    esrkforward
        10
    esrkforward  
    OP
       2024-04-22 23:26:40 +08:00
    @goldenlove 是的,我知道有许多类似的工具。主要是出于好玩自己造个轮子,顺便学习下 Swift
    esrkforward
        11
    esrkforward  
    OP
       2024-04-23 00:16:30 +08:00 via iPad
    @chuck1in 不必须上 App Store ,可以直接分发安装包。
    Scare
        12
    Scare  
       2024-04-23 22:25:21 +08:00
    @hugi 不用吧,直接 command+control+q ,锁定屏幕,降低亮度,擦完键盘和屏幕以后,再解锁调高亮度使用就可以了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2919 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:03 PVG 08:03 LAX 17:03 JFK 20:03
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86