日頃からPDFを扱っていると,「PDFのN-up処理(例えば2ページずつ並べて見開きにするなど)をしたい」というのはよく出くわす状況です。 以前,その目的に pdfTeX が大活躍することを紹介しました。 doratex.hatenablog.jp 最近もそういう話題がありました。 VivliostyleのDiscordで、「PDFの見開き」PDF出力の話題があった。えっと、LaTeXでその後処理をば…(本末転倒 #テフライブ...| TeX Alchemist Online
前記事の続編です。 doratex.hatenablog.jp 前記事では,写真に写る人物の顔部分に絵文字を貼り込むことでマスキングを行いました。本記事では,その応用として,顔部分にモザイクをかけるスクリプトを作ってみましょう。 前記事同様,次のような要件とします。 要件 macOS のデフォルト状態で動作する。ユーザに対して,事前に何らかのツールをインストールしておくな...| TeX Alchemist Online
SNS上に写真をアップするとき,個人情報保護のため,人物の顔に絵文字で上記のようなマスキング処理を施すことがよくあります。そこで,次の条件を満たすシェルスクリプトを作ることを目指します。 要件 macOS のデフォルト状態で動作する。ユーザに対して,事前に何らかのツールをインストールしておくなどの準備を要求しない。 コマンドラインから使えるシェ...| TeX Alchemist Online
アンドパッドの山根です。 2025年4月9日から11日までの3日間try! Swift Tokyo 2025が開催されました。弊社からiOSエンジニア3名が参加しました。この記事では、参加を経て感じたことや気になったセッションについてお話しします。 会場の雰囲気 今年の会場は立川駅のすぐ近くにある立川ステージガーデンでした。 セッションが行われていたホールは広く、椅子も柔らかくて...| ANDPAD Tech Blog
A Swift Computed Property allows you to define values based on other properties. You can optionally use async/await and throw errors.| SwiftLee
Quick tip on switching a self-developed Swift package from a versioned dependency to a local path for development.| iOS development by tanaschita.com
Learn how to use tasks to call async/await methods from synchronous code.| iOS development by tanaschita.com
I’ve been on a long-term quest to find a simple, fast, and user-friendly way to develop native applications for a variety of platforms, and this page holds the results of that research.| Tao of Mac
A couple of months ago, I wrote: [...] It may become impossible to launch a new programming language. No corpus of training data in the coding AI assistant; new developers don't want to use it because their assistant can't offer help; no critical ...| Zarf Updates
At the first World Humanoid Robot Games recently held in Beijing, many amusing scenes unfolded: robots punching at thin air, swaying from side to side while running, and collectively tumbling after colliding during soccer matches.| Fatbobman's Blog
Patton is 13 years old now. While he usually displays far more energy and vitality than other dogs his age, various health issues have inevitably emerged as he's gotten older. Recently, Patton was diagnosed with pulmonary hypertension, and the vet prescribed a targeted treatment plan. Just as I was feeling relieved that the treatment seemed to be working, last Monday afternoon, Patton suddenly couldn't stand, was drooling excessively, and showed clear signs of cardiac distress.| fatbobman.com
The swift test command-line invokation does not print unambiguous filenames for test failures, so we need to attempt to patch this from the console output ourselves like true hackers.| Christian Tietze
I finally finished my new book on building scalable and maintainable apps with Swift and SwiftUI.| iOS development by tanaschita.com
Learn how to abstract and reuse a SwiftUI toolbar across multiple screens.| iOS development by tanaschita.com
Learn to make Swift code only available for certain language versions or platforms.| iOS development by tanaschita.com
yoshiori.hatenablog.com この記事を以前に読んでいてずっと記憶に残っていた。最近になって子どもたちが夏休みに入り家にいる時間が増えたこともあり、必要に迫られて実際に真似してみることにした。 MTG中に妻や子どもたちが部屋に乱入する事故が起こるので yoshioriさんの真似してみることにした。まずは設置まで[image or embed]— すぎゃーん (@sugyan.com) July 25, 2025 at 11:48 AM ...| すぎゃーんメモ
Ever wanted to layout letters? implement label view? create text edit component from the ground? bear with me. CoreText is low-level framework for laying out text and handling fonts. Low level like "C language level low", but also like "Font glyph level low". What CoreText can:| Marcin Krzyżanowski
Design a project that uses different versions of swift for different parts of the project. Combine multiple toolchains together and use it.| Marcin Krzyżanowski
You use Swift AnyObject wrong. Don't use AnyObject as a generics constraint. Don't do "is AnyObject", "as? AnyObject" to check if a variable is a class type. Don't use "AnyObject". Use "class" for a class-only protocol. Use "Any".| Marcin Krzyżanowski
Last week I had my last appearance with talk about Swift runtime performance. I enjoy the topic, and I had a ton of fun with preparing the speech, with the on-stage experience and afterward discussions. Since I'm done with this talk, I'd like to make a| Marcin Krzyżanowski
I started my Apple platforms development journey a year before Grand Central Dispatch was released with iOS 4. I’ve lived through codebase migrations to NSOperation. Then through the slew of FRP frameworks (of which I consider a concurrency solution): ReactiveCocoa, ReactiveSwift, RxSwift, and finally Combine. My strategy for learning all these paradigms was best described as osmosis while encountering and solving real problems in codebases. Of course, you have to spend time setting breakpo...| twocentstudios
Last Saturday, Apple officially and permanently closed an Apple Store in Dalian, China, marking the first time the company has closed a directly-operated store in the country. The store opened in 2015, exactly ten years ago. Following the announcement, numerous online reports emerged, with some interpreting this as a signal about Apple's business conditions in China. Since this store happens to be located in my city, I have some firsthand knowledge of the situation and would like to share a d...| Fatbobman's Blog
Swift's concurrency model introduces numerous keywords, some of which are similar in naming and purpose, often causing confusion among developers. This article examines several keywords related to cross-isolation domain passing in Swift concurrency: Sendable, @unchecked Sendable, @Sendable, sending, and nonsending, helping you understand their respective roles and use cases.| Fatbobman's Blog
Despite some minor issues, I had a pretty good impression of the previous beta versions of Xcode 26. Both the refreshing visual experience and the clearer annotations for AI-generated code were quite impressive. However, after recently updating to beta 4, these positive feelings quickly dissipated due to frequent Preview crashes.| Fatbobman's Blog
Swift 6.2’s Default Actor Isolation reduces boilerplate by inferring isolation for unmarked code, but brings new actor-boundary rules and macro challenges| fatbobman.com
There are cases where just a little more visibility and control over how to schedule asynchronous work can make all the difference.| NSHipster
Sometimes you just need to shove a round peg into a square hole. Sometimes that genuinely is the best option (or perhaps more accurately: the least bad option). I find my hand is often forced by APIs I don’t control (most often Apple’s APIs). e.g. data source or delegate callbacks that are synchronous and require… Read more| Wade Tregaskis
Five years ago installing Swift on a Raspberry Pi – or really any non-Apple platform – was fairly involved. Compared to getting a Raspberry Pi working to begin with it was easy, but still a far cry from apt install swift. Sadly it’s still not quite that easy (and some Python package is squatting on… Read more| Wade Tregaskis
I have a bit of a love-hate relationship with Swift’s FormatStyle-based formatting capabilities. 42% (in English – results may vary depending on locale) On the pro side: But the cons are rough: All in all, there’s a reason fuckingformatstyle.com exists (and don’t forget to tip!).| Wade Tregaskis
The following code prints the Fibonacci sequence. You’ve probably seen it before. It’s one of the simplest and most well-known examples of a sliding window operation – where the next value depends on the preceding two (or more) values. While almost all programs do not calculate the Fibonacci sequence, many do contain similar sliding-window algorithms.… Read more| Wade Tregaskis
Learn how to use defer to handle cleanup logic in async functions.| iOS development by tanaschita.com
A few days ago, the Blender Foundation announced that it is developing a native version for iPad Pro with specialized optimizations for Apple Pencil. The initial version will focus on basic object manipulation and sculpting features, with later versions adding Grease Pencil and storyboarding capabilities. It's particularly worth noting that this is not a feature-limited iPadOS version like some professional software, but a fully-featured Blender iPadOS native application.| Fatbobman's Blog
Compared to some open-source frameworks, Core Data and SwiftData, despite having Apple's official endorsement, often leave developers helpless when exceptions occur due to their "black box" nature, making it difficult to quickly locate problems and find effective solutions. This article documents an app startup timeout incident caused by Core Data model migration, shares the solution, and deeply analyzes the underlying causes.| Fatbobman's Blog
Last week I went to the theater to watch *F1*, Apple’s latest original movie—and the experience far exceeded my expectations. While the storyline was admittedly a bit thin, the sheer sense of immersion and racing excitement it delivered easily justified the ticket price. When Brad Pitt’s APXGP car thundered down Silverstone Circuit, the roar of the engine shaking the IMAX sound system transported me back to those days, over 20 years ago, when I’d sit glued to the TV cheering on the fi...| fatbobman.com
I'm excited to share a new actor system we've been building for Swift's distributed actors: swift-erlang-actor-system. This actor system enables Swift programs to join a distributed Erlang cluster. Here's an example of a simple chat program using the actor system: Demo Video Erlang (and other languages that run on its VM) can connect multiple runtime systems together with distributed Erlang. Each runtime is referred to as a "node". Erlang also supports "C nodes", which allow a program other ...| Swift Forums
Following the release of the new Liquid Glass style, Apple promptly introduced Icon Composer, a tool for creating icons that comply with the Liquid Glass standard. According to Apple's introduction, Icon Composer appears straightforward to use. It essentially requires users to place images in layers, and that's it. However, in practice, several details require careful attention. Megabits'll use his app as an example to briefly describe the issues I encountered during the process.| Fatbobman's Blog
After installing iOS 26 beta 3, users quickly noticed that the Liquid Glass effect is no longer as translucent as in the previous two beta releases. This change has sparked two opposing perspectives: some see it as a sign that Apple’s flagship design concept from WWDC 2025 is facing challenges, while others view it as evidence of Apple’s responsiveness to user experience data and its ability to iterate quickly. Either way, such a significant UI adjustment within a short time underscores t...| fatbobman.com
Setup Manager 1.3 We have released Setup Manager 1.3 today. You can see the release notes and download the pkg installer here. Most of the changes to Setup Manager in the update do not change the w…| Scripting OS X
Text is heavily used in SwiftUI. Compared to its counterparts in UIKit/AppKit, Text requires no configuration and works out of the box, but this also means developers lose more control over it. In this article, I will demonstrate through a real-world case study how to accomplish seemingly impossible tasks with SwiftUI's approach - finding the first view among a given set where text is not truncated, and using it as the required size.| Fatbobman's Blog
Since mid-June, my city has also experienced unusually high temperatures. Although 30-31°C may not seem dramatic compared to other regions that routinely see 35-40+°C, for me, accustomed to temperatures in the 20s, this heat has become quite unbearable.| fatbobman.com
Announcing xcframework or: the happy path for wiring a Haskell dependency to your Swift app| alt-romes.github.io
A month-long journey with Claude Code reveals how AI reshapes coding, and why developers should stay actively involved to truly grow and avoid over-reliance.| fatbobman.com
Learn how the #Playground feature in Xcode 26 can help you experiment with code snippets directly in the canvas.| SwiftLee
SWIFT is now working on protecting payments data, but it’s hard to prepare for a risk banks can’t see.| Digital Finance
Several months after the Swift forums first announced the formation of an Android Community Workgroup in February 2025, Swift.org has now officially launched an Android Workgroup. This marks the beginning of officially led efforts to support Swift on Android. With this, Swift developers may soon benefit from improved toolchains and a better development experience on Android.| fatbobman.com
SWIFT MT (Message Type) messages are standardized financial messages used by financial institutions worldwide for secure communication and transaction processing. They follow a structured format, categorized by a three-digit code (e.g., MT103, MT202) that indicates the message type and its purpose within the financial transaction lifecycle. A generation of young wire room staff started their […]| Perficient Blogs
I am learning to speak a new language: Swift Concurrency. It is densely packed with familiar-sounding concepts and details I am not aware of (yet). This is how I tackle it.| Christian Tietze
Discover Swift 6.2’s new concurrency-safe NotificationCenter.Message APIs to ensure type safety, eliminate runtime errors, and streamline notification handling.| fatbobman.com
Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.| Swift.org
At WWDC 2025’s “Bring Your SceneKit Project to RealityKit” session, Apple officially announced that SceneKit will receive “critical-bug only” maintenance going forward, with no new features planned. The framework is now marked as deprecated in the official documentation, and developers are encouraged to migrate to RealityKit. Although many of us anticipated this day, the formal announcement still evokes a pang of nostalgia.| fatbobman.com
Discover how SwiftUI's ZStack uses layoutPriority to compute size, allowing dynamic container resizing by toggling view importance—no ifs, no switches.| fatbobman.com
WWDC 2025 arrived right on schedule. Apple released all session videos at once, allowing developers to dive into the new features and APIs they care about without delay. After skimming through them over the past two days, my initial takeaway for this year’s conference is: as expected, yet unexpected.| Fatbobman's Blog
Ahead of WWDC 2025, the Swift official website has undergone a comprehensive redesign. The new design aims to enhance user-friendliness, highlight Swift’s technical strengths, and make it easier for beginners to get started. As a programming language deeply connected to the Apple ecosystem, the website naturally incorporates strong Apple-style visual elements.| fatbobman.com
Enable prebuilt SwiftSyntax in Swift 6.1.1+ to speed up macro builds by avoiding source compilation—works with Xcode and command-line builds| Fatbobman's Blog
Nowadays, Xcode Playgrounds seems to have deviated from its original purpose, and configuring VSCode can be overly complex for beginners. Against this backdrop, how can we easily set up an environment suitable for learning and testing Swift? Perhaps Notepad.exe, as introduced in this article, will provide a satisfying solution.| Fatbobman's Blog
Swift 5.9 adds the package access modifier to limit API visibility to within the same package, improving modularity and encapsulation without using public| Fatbobman's Blog
Master Swift’s Measurement API for safe unit conversion, precise formatting, and custom unit support—perfect for building internationalized, user-friendly iOS apps| fatbobman.com
Fix SwiftLint not working in Swift monorepos by setting config search paths in VSCode and specifying included directories in .swiftlint.yml| Fatbobman's Blog
Learn how to test Core Data in VSCode or Cursor by configuring the Xcode toolchain and manually converting xcdatamodeld to momd with xcrun momc.| fatbobman.com
Explore the new @concurrent attribute in Swift 6.2 and its role in Swift Concurrency for better asynchronous function handling.| SwiftLee
Removing duplicates from a collection to get unique values can be achieved in two ways. One is more performant than the other, so let's dive in!| SwiftLee
Apple has introduced VM-based Containerization at its WWDC (Worldwide Developer Conference), along with Container – an open-source CLI […]| DEVCLASS
Learn how to add toolbar items in SwiftUI views across various placements like navigation bars, bottom bars and more.| iOS development by tanaschita.com
ExtensionKit was a pretty significant new feature, introduced three years ago with macOS Ventura. But, I wouldn’t be surprised if you’ve never even heard of it, as it had a strangely quiet introduction. There were no sessions or labs about it during WWDC 2022. I only discovered it because a friend stumbled across the beta documentation and sent it to me.| massicotte.org
【追記】この記事を macOS 12.3 以降の環境に対応させた記事を書きました。 doratex.hatenablog.jp id:acetaminophen さんが,Windows環境でPDFのページ数をカウントするバッチファイルを,様々な手法で実装する試みをなされています。 d.hatena.ne.jp d.hatena.ne.jp そこで,Mac環境についても,コマンドラインからPDFのページ数をカウントする様々な手法をまとめておこうと思います。 目次 ...| TeX Alchemist Online
LianLian's Hong Kong hub is activating cross-border partnerships and exploring use of stablecoins.| Digital Finance
A dictionary of all common Swift programming terms, all on one page for easy access.| Hacking with Swift
Over the past few months, the website workgroup has been redesigning Swift.org. On behalf of the website workgroup, I’m pleased to announce that we have merged the initial changes.| Swift.org
Work with the grain of the framework by writing your own property wrappers.| Shadowfacts
A cross-platform declarative UI framework, inspired by SwiftUI. - stackotter/swift-cross-ui| GitHub
Swift is heavily used in production for building cloud services at Apple, with incredible results. Last year, the Password Monitoring service was rewritten in Swift, handling multiple billions of requests per day from devices all over the world. In comparison with the previous Java service, the updated backend delivers a 40% increase in performance, along with improved scalability, security, and availability.| Swift.org
Swift error messages can be cryptic, but as a community, we can make them clearer. Help others (and your future self) by contributing better explanations.| FlineDev Blog – Insights on Swift, Xcode, and Apple Development
Understand how SwiftUI's ViewThatFits container works.| iOS development by tanaschita.com
Learn how to schedule local notifications using different trigger types with the UserNotifications framework.| iOS development by tanaschita.com
In 2025, playing your own music on an iPhone is surprisingly hard, unless you pay Apple or navigate a maze of limitations. So I built my own player from scratch, with full text search, iCloud support, and a local-first experience. GitHub link Why I Built My Own Audio Player Like many people, I’ve picked up too many subscriptions, some through Apple (iCloud, Apple Music), others got lost in random platforms (like Netflix, which I forgot I was still paying for). I actually used Apple Music re...| nexo blog
Use focused values for conveying information up the view hierarchy based on the currently-focused view.| Shadowfacts
Tired of vague bug reports like "it doesn't work"? In this post, you'll learn how to collect automatic logs and track real-world errors in your Swift apps—with just a few lines of code.| FlineDev Blog – Insights on Swift, Xcode, and Apple Development
Discover how to turn Typed Throws from a headache into a superpower — with clean error handling and powerful debugging insights.| FlineDev Blog – Insights on Swift, Xcode, and Apple Development
Learn how to manage different iOS build environments with .xcconfig files.| iOS development by tanaschita.com
Learn how to add and configure debug, staging, and release environments in your iOS app using Xcode.| iOS development by tanaschita.com
Learn the foundational concepts of Xcode build configuration and how targets, schemes, and configurations work together.| iOS development by tanaschita.com
Learn how to use the Adapter pattern to integrate third-party APIs or legacy code.| iOS development by tanaschita.com
Exploring parameter packs (the repeat-each stuff) in Swift to count how many types are in the generic argument clause, or if that’s empty.| Christian Tietze
A quick recipe on how to emit a binary from Swift that you can use from a C program.| Christian Tietze
When SwiftUI was announced in 2019 (oh boy, more than 5 years ago), one of the big things that the Apple engineers emphasized was that a SwiftUI View is not like a UIKit/AppKit view. As Apple was at pains to note, SwiftUI may evaluate the body property of a View arbitrarily often. It’s easy to miss an important consequence this has, though: your View will also be initialized arbitrarily often. This is why SwiftUI views are supposed to be structs which are simple value types and can be stack...| Shadowfacts
Last time, I wrote about how to parse HTML and convert it to NSAttributedStrings quickly. Unfortunately, in the time since then, it’s gotten slower. It’s still a good deal faster than it was before all that work, mind you. At fault is not any of the optimizations I discussed last time, fortunately. Rather, to get the correct behavior across a whole slew of edge cases, there was more work that needed to be done.| Shadowfacts
The urge to overengineer something recently befell me, and the target of that urge was the way Tusker handles HTML parsing. Mastodon provides the content of posts (and profile descriptions, and some other things) as HTML, which means that, in order to display them properly, you need to parse the HTML, a notoriously straightforward and easy task. For a long time, the approach I took was to use SwiftSoup to parse the HTML and then walk the resulting node tree to build up a big NSAttributedStrin...| Shadowfacts
Swift 6.2 will introduce several changes to Swift Concurrency that will make writing asynchronous code more approachble.| SwiftLee
Tired of cryptic Swift error messages like '(YourError error 0)'? Here's how to fix them for good—with clarity and elegance.| FlineDev Blog – Insights on Swift, Xcode, and Apple Development
Learn how to save and restore NavigationPath to maintain user context across app launches.| iOS development by tanaschita.com
Learn how to integrate NavigationPath with TabView in SwiftUI to manage independent navigation flows.| iOS development by tanaschita.com
Preferences are a powerful, and underappreciated, tool for data flow in SwiftUI.| Shadowfacts
Swift 6.1 now supports official WebAssembly builds via SwiftWasm—no patches needed. Use JavaScriptKit for seamless Swift–JavaScript interaction in WASM apps.| fatbobman.com
Learn how to use the command-line tool simctl to simulate remote notifications in iOS.| iOS development by tanaschita.com
Learn how to create a lightweight dependency injection container in Swift| iOS development by tanaschita.com
Learn how to use CryptoKit to increase security in iOS applications.| iOS development by tanaschita.com
Piping data from your Swift program to another program, or receiving large amounts of data from standard input, can be prone to errors, freezing your program. Here is how to do it safely.| Christian Tietze
A few weeks back I introduced a new tool: utiluti, which sets default apps for url schemes and file types. Not standing still, I have updated the tool with new verbs to list url schemes and file types that a given app can handle, as well as inspect and set default apps set for specific … Continue reading New tool updated: utiluti v1.1| Scripting OS X