Skip to content

Instantly share code, notes, and snippets.

View abjurato's full-sized avatar
💜

Anatoly Rosencrantz abjurato

💜
View GitHub Profile
@abjurato
abjurato / Count lines of code in Xcode project
Created February 24, 2021 17:42 — forked from Tokuriku/Count lines of code in Xcode project
Count lines of code in SWIFT Xcode project
1. Open Terminal
2. cd to your Xcode project
3. Execute the following when inside your target project:
find . -name "*.swift" -print0 | xargs -0 wc -l
@abjurato
abjurato / lldb_kindle_ebooks.txt
Created October 11, 2020 15:54
lldb Amazon Kindle example
// Add breakpoint at the place when list of chapters becomes available
(lldb) expr -- void *$class1 = (void *)objc_getClass("ReaderViewController")
(lldb) expr -- void *$sel11=(void *)sel_getUid("didLoadBook")
(lldb) po (void*)class_getMethodImplementation($class1, $sel11)
0x0000000104d3d738
(lldb) b 0x0000000104d3d738
(lldb) с
// - OPEN THE BOOK, WAIT TILL THE PROCESS WILL BE STOPPED
{
   "receipt":{
      "receipt_type":"Production",
      "adam_id":429622051,
      "app_item_id":429622051,
      "bundle_id":"ru.alpinabook.reader.iphone",
      "application_version":"3336",
      "download_id":88052296853649,
      "version_external_identifier":831656237,
      "receipt_creation_date":"2019-11-22 15:21:40 Etc/GMT",
@abjurato
abjurato / secureFilesystemItems.swift
Created October 4, 2020 12:05
Exclude file from backup and set data protection key
extension FileManager {
public func secureFilesystemItems(_ url: inout URL) throws {
try (url as NSURL).setResourceValue(URLFileProtection.completeUntilFirstUserAuthentication, forKey: .fileProtectionKey)
try (url as NSURL).setResourceValue(NSNumber(true), forKey: URLResourceKey.isExcludedFromBackupKey)
}
}
@abjurato
abjurato / fullScreenCover_iOS13.swift
Created September 27, 2020 15:11
fullScreenCover back port to SwiftUI 1.0 example
import SwiftUI
import UIKit
extension View {
func fullScreenCoverBackport<Content: View>(isPresented: Binding<Bool>, @ViewBuilder content: () -> Content) -> some View {
ModifiedContent(content: self, modifier: ModalContainerModifier(isPresented: isPresented, addition: content()))
}
}
struct ModalContainerModifier<Addition: View>: ViewModifier {
@abjurato
abjurato / Activity.swift
Created July 6, 2020 14:49 — forked from mono0926/Activity.swift
os_activity_t for Swift 4
//
// Activity.swift
//
// Created by Zachary Waldowski on 8/21/16.
// Copyright © 2016 Zachary Waldowski. Licensed under MIT.
//
import os.activity
private final class LegacyActivityContext {
@abjurato
abjurato / Activity.swift
Created July 6, 2020 14:48 — forked from zwaldowski/Activity.swift
os_activity_t for Swift 3
//
// Activity.swift
//
// Created by Zachary Waldowski on 8/21/16.
// Copyright © 2016 Zachary Waldowski. Licensed under MIT.
//
import os.activity
private final class LegacyActivityContext {
extension List {
@ViewBuilder func noSeparators() -> some View {
if #available(iOS 14.0, *) {
self
.accentColor(Color.secondary)
.listStyle(SidebarListStyle())
.onAppear {
UITableView.appearance().backgroundColor = UIColor.systemBackground
}
} else {
@abjurato
abjurato / EndpointSecurityDemo.m
Created February 13, 2020 14:49 — forked from Omar-Ikram/EndpointSecurityDemo.m
A demo of using Apple's new EndpointSecurity framework - tested on macOS Catalina 10.15 (19A583)
//
// main.m
// EndpointSecurityDemo
//
// Created by Omar Ikram on 17/06/2019 - Catalina 10.15 Beta 1 (19A471t)
// Updated by Omar Ikram on 15/08/2019 - Catalina 10.15 Beta 5 (19A526h)
// Updated by Omar Ikram on 01/12/2019 - Catalina 10.15 (19A583)
//
#import <Foundation/Foundation.h>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>io.abjurato.fancyname</string>
</dict>
</plist>