加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0577zz.cn/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

iOS工程师专属:零基础搭建个人技术站全指南

发布时间:2026-10-31 11:02:43 所属栏目:策划 来源:DaWei
导读:  跟产品吵。去年九月份,我盯着他PRD里那句“用户点击头像跳转个人站”,在评审会第十七次问:这个站是谁的?他的?我的?还是你们产品线新招的那个外包UI的?他笑了一下,说“技术侧闭环”。我当场把AirPods取下来放在桌角——这

  跟产品吵。去年九月份,我盯着他PRD里那句“用户点击头像跳转个人站”,在评审会第十七次问:这个站是谁的?他的?我的?还是你们产品线新招的那个外包UI的?他笑了一下,说“技术侧闭环”。我当场把AirPods取下来放在桌角——这玩意儿自从iOS 17.4之后老连不上MacBook,蓝牙日志里全是kIOBluetoothHCIStatusPageTimeout,但那天我没调,我就看着它闪蓝光。


  我原以为搭个站就是GitHub Pages配个CNAME,结果发现CI脚本里有段SwiftGen生成的路由枚举被前端硬塞进Vue Router里用了三次——不是引用,是copy-paste改了两行变量名。测试同学昨天提了个阻塞bug:iOS 16.6.1真机上点击“写文章”按钮触发了WKWebView的navigationDelegate死循环,但模拟器全过。我说查吧,他回了个“已复现,但没时间修”,附带一张截图:控制台里print("⚠️ navigationDelegate didStartNavigation")打了三百七十二次调用,最后一次后面跟着一行空白——他截得太急,没截到崩溃堆栈最后一行。


文章配图,仅供参考

  优胜劣汰。就这四个字。不是说谁代码好谁留,是说谁愿意在灰度开关没推完、oncall手机震了一下、监控大屏右下角那个标着“CDN缓存击穿率”的曲线突然抖成锯齿的凌晨三点,还蹲着改Sitemap.xml里的字段格式——这种人自然活下来。PM上周来问我:“要不要加个埋点统计‘技术站首页’UV?”我反手把上次发版的commit hash发给他:“你看这个feat: add-swift-interop-in-webview分支,里头三个hook函数里有两个没删,其中一个是监听window.postMessage的死循环监听器,你猜现在埋点数据里混了多少个伪造的‘首页访问’?”他说“哦那先不加”。咖啡杯上印的公司logo掉了一小块漆,就在“Sec”字母上,剩下“urity”歪着翘起来。


  我敢打包票:用Next.js + MDX搭技术站的iOS工程师,三个月内至少重装两次node_modules。因为某天早上你pull了同事的pr,里面有个postinstall脚本调用了xcode-select --install,而你的M2芯片还没装命令行工具——但报错信息藏在.npm/_logs目录下,路径是/nvm/versions/node/v20.11.1/lib/node_modules/next/dist/build/index.js:347:21,前面还有十八毫秒的promise.allSettled超时,你不grep根本看不到。我试过,第三次重装前我把VS Code关了,换Vim开终端——纯为避免自动重启TS Server时偷偷加载一堆没声明的webpack插件。结果呢?build成功了,首页CSS里字体权重全变成normal,因为tailwind.config.js里extend.fontFamily.sans[0]被前端写成了"SF Pro Display",而Safari 17.5不认这个字符串,fallback到系统默认,但Simulator里又显示正常……这事我说不准。


  KPI的事儿我懒得提,反正每季度Review都要填“个人技术影响力”,去年我填的是“推动技术站落地”,主管批注:“建议量化”,我就补了句“已承载17篇Swift并发模型解析文,其中3篇被内部wiki收录”,但他划掉了“17篇”,改成“收录数”,旁边画了个问号。后来我听说DBA老张上月因为MySQL慢查询阈值从800ms调到600ms被扣了绩效——他没碰SQL,只是把监控告警规则改了,告警频率翻倍,运维部认为“增加协同成本”。所以你看,我们吵的从来不是技术,是告警阈值该不该对齐、灰度开关该不该分三批推、以及为什么iOS侧的errorBoundary要替Web端兜底三次才报一次错。


  谁去倒了杯水。就昨天下午四点十七分,前端小林在Slack里甩了条消息:“dev server挂了”,然后自己切出去debug。五分钟后他回来,说“热更失败,webpack-dev-server的hot:true配置在Vite里被覆盖了”,语气平静得像在说“我午饭吃了沙拉”。我没接话,低头改自己的podspec,把swift_version从5.9改成6.0,顺手把.podspec.lock里那个“— SHA: 0c3e9a7b”的哈希值复制下来,贴进另一个终端跑sha256sum,结果发现多了一个空格。这时候测试同学端着纸杯路过,往饮水机那儿一靠,按了三下出水键,水流声很匀,但第三下没出水,她晃了晃杯子就走了。


  这件事讲到底:iOS工程师搭技术站,本质是把自己当web容器来测。你要测WKWebView里iframe sandbox策略怎么影响localStorage;要测service worker在PWA模式下fetch()一个.swift文件时的mime类型错误是不是真的会被iOS忽略;还要测在AppClip里嵌的网页链接,跳转个人站后是否触发universal link fallback。这些事儿没人写文档,Apple Developer Forum里搜“service worker + Swift file”只有两条发于2022年的未回复帖,最后一条写着“已用base64内联绕过”。我信了,结果绕过了,但页面字体大小全乱——因为base64解码后的CSS里rem单位被webkit-text-size-adjust干掉了。这事我没深究,就改成了px。


  所以你现在知道为什么我说优胜劣汰了。不是淘汰写不好React的人,是淘汰那些在Xcode Build Settings里看到“Other Swift Flags”还点开双击粘贴-c -Owholemodule的人——那人不知道-t选项会强制开启whole-module-optimization,导致MDX组件热更新失效,但服务器上静态资源已经生成,CDN缓存了,你清不了。我昨天刚清完,顺便把CI里的cache key从$(git rev-parse HEAD)改成$(git rev-parse HEAD)-swift-6.0。这事我不告诉你为啥,你去试,试崩三次你就懂了。


  我接下来打算把sitemap.xml里所有地址后都加上?utm_source=iOS_dev_2024,不为追踪,就为验证一个事:当UA字符串里带WebKit/619.1.17.2 (KHTML, like Gecko)时,我们的Nginx log_format能不能把UTM参数单独打出来。要是不能,我就在server block里加个map。但先等等——测试同学刚在群里发了个表情包,是只熊猫抱着MacBook哭,caption写着:“Build succeeded but my soul is in /tmp/next-build-XXXXX”。我点了赞。然后关掉terminal,没重启。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章