惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

Swift

都 vibe coding 了,为啥不把 Rust 项目 rewrite 到 Swift ? 应该怎么解读 swiftui 的崩溃报告? FoundationModels 框架实践 - V2EX Swift DocC 构建的博客 - V2EX Swift server 要支棱起来了 - V2EX 求问贴,如果在 swiftUI 中接入 MySQL C client - V2EX Swift 萌新, DispatchQueue 的一个问题 - V2EX 分享一下一个 Web 前端刚学习 Swift 时候的心得博文 - V2EX Swift 操作 plist 文件 使用 SwiftUI + TCA 重构 Instagram Clone:从 Flutter 到 SwiftUI 的迁移实践 激发编程激情,轻松掌握 Swift SwiftUI 分享个基于 UICollectionView 封装的数据驱动和声明式组件库 ListKit 问一个关于 CALayer 的资源释放问题 SwiftUI 的 TextEditor 在 macOS Sequoia 15.0 上输入中文时又会这样一跳一跳的了 Swift 中系统 API delegate 参数一定要在当前类实现传 self 吗 ScreenCaptureKit 里面的 SCStreamOutput 没有被顺利触发,是那个步骤错了,求解惑 - V2EX 似乎 SwiftUI app 在 macOS 15 上启动速度变快很多? - V2EX 请教一个关于 Swift 的基础小问题 - V2EX 离线 iOS app 也需要 ICP ? - V2EX 请教 SwiftUI 布局的问题 - V2EX ios 17 widget 无法正确更新 core data - V2EX 有没有 Swift ui 版本的 tailwind css? - V2EX swiftui 里,这里用 hstack,为什么是垂直布局,而不是水平布局? - V2EX 大家觉得 Swift 的参数必须按序提供怎么样? - V2EX Swift 开源的组件库好像不是很多啊 - V2EX Swift 如何像 Python 那样 崩溃了输出 backtrace 或者至少是哪行出错了。。。 - V2EX 请教一下各位 iOSer 巨佬们一个 SwiftUI sheet 组件的问题 - V2EX 请教一下各位 iOSer 巨佬们一个 SwiftUI 中 HStack 的布局问题 - V2EX swiftui 有好用的组件库吗? - V2EX 求问:苹果手机是否无法像安卓一样,可以扫描出本地的音乐? - V2EX macOS 沙盒中如何获得对任意目录的写权限? - V2EX swiftui 中的语法糖疑问 - V2EX 开发 macOS 应用无法访问用户选择的文件夹下的文件 - V2EX 弄了一个 Swift 官方教程的速览版 - V2EX 2024 年了,现在学 SwiftUI 还有必要学 UIkit 吗? - V2EX 大佬们指点下苹果生态下音频相关的这些库都是什么关系? - V2EX 升级到 Xcode 15 之后遇到的 GeneratedAssetSymbols 过不了编译这个问题 - V2EX 现在用 Swift 开发后端成熟了吗? - V2EX Composable SwiftUI - V2EX 2023 年, swiftui 使用 WKWebView 加载 html 字符串,如何自适应 frame 高度? - V2EX 用 network extension 框架开启 Tunnel,怎么能保持后台请求接口,解决请喝杯咖啡 - V2EX 学生党求问各位大佬,一个关于 ios 小组件的问题 - V2EX 比较好的 Swift UI 学习交流群 - V2EX CAID 这垃圾东西是谁在推,一边喊着保护隐私,一边想着法子来跟踪用户 - V2EX Swift 的 Optional 如何比较包装类型的关系呢? - V2EX Alamofire 推荐使用吗? - V2EX 我自己是初学者想找个朋友带我一起写两个工作用的 app 有偿的 - V2EX Swift 如何优化数据加载方式? - V2EX 现在感觉 Swift 真的被 OC 拖后腿了 - V2EX
5 分钟用 Swift 写个 ripripgrep - V2EX
MrKrabs · 2025-03-23 · via Swift

你别管什么 NFC ,NFD ,咱只是想搜出日语呢

import Foundation
import ArgumentParser

@main
struct Ripripgrep: ParsableCommand {

  @Option(name: .shortAndLong)
  var patterns: [String]

  @Argument(help: "use stdin if no args")
  var files: [String] = []

  func validate() throws {
    if patterns.isEmpty {
      fatalError("no patterns!")
    }
  }

  struct Worker {
    var line: UnsafeMutablePointer<CChar>?
    var linecap = 0
    let patterns: [Regex<AnyRegexOutput>]

    mutating func start(stream: UnsafeMutablePointer<FILE>) {
      while case let linelen = getline(&line, &linecap, stream),
            linelen > 0 {
        let line = String(decoding: UnsafeRawBufferPointer(start: line!, count: linelen-1), as: UTF8.self)
        if patterns.allSatisfy({ line.contains($0) }) {
          print(line)
        }
      }
    }
  }

  func run() throws {

    var worker = Worker(patterns: try patterns.map { try Regex($0).ignoresCase() })

    if files.isEmpty {
      // use stdin
      worker.start(stream: stdin)
    } else {
      for file in files {
        let stream = fopen(file, "rb")!
        defer { fclose(stream) }
        worker.start(stream: stream)
      }
    }
  }

}