Post

Replies

Boosts

Views

Activity

Reply to What is the recommended way to count files recursively in a specific folder
Yes I believe you need to recursively descend through the directory tree. So you need to read each directory, determine which of the directory entries are sub-directories, and visit those. This boils down to readdir and stat. I am aware of one possible optimisation, if you want to squeeze the last bit of performance. In order to determine whether a directory entry is a sub-directory, rather than a regular file, in general you need to stat it. But, when you stated the parent directory you got st_nlink, which tells you the number of hard links to that directory. Each directory's .. entry counts as a hard link to its parent directory, and its . entry is a hard link to itself. So if st_nlink is 4, then the directory can have at most 3 subdirectories. So you can enumerate the directory contents, checking if each entry is a subdirectory, until you have found 3. At that point you can stop stating everything - the remaining entries must be non-directories. This is classic UNIX stuff that has worked since forever. It's not impossible that new Apple filesystems have alternative APIs that make this more efficient. Maybe someone else will comment. I don't know where the bottleneck is - is it the disk access speed? - is it the number of kernel calls? Things you need to consider if you want a robust implementation: Hard links Symlinks Hard or symbolic links that introduce cycles Other special directory entries Mount points Whether to include . and .. and other dotfiles in your count Unreadable (and unexecutable) directories Personally, I'd do something like this: auto count_files(std::filesystem::path p) { int n_files = 0; for (auto& entry: std::filesystem::recursive_directory_iterator(p)) { if (is_regular_file(entry)) ++n_files; } return n_files; }
Topic: App & System Services SubTopic: Core OS Tags:
Jul ’24
Reply to XSLT 2.0 transformation with Swift or WKWebView
I wasn't aware that libxslt (and also libexslt apparently) is public on iOS; that's useful to know. (I've used XSLT a fair bit over the years but always on the server side.) You really need to determine whether or not you need XSLT 2 functionality. I suspect that you don't, because a bit of googling finds StackOverflow answers saying that .NET doesn't support XSLT 2. If you actually do... I don't really know what to suggest, except fixing the XSLT to not need the version 2 features. Otherwise, everything boils down to libxslt in the end. So your choice is between Swift -> Javascript -> C -> libxslt -> C -> Javascript -> Swift Swift -> C -> libxslt -> C -> Swift Some of those steps will involve serialising / deserialising XML text to/from XML object representations. Personally, I'd choose the second option. Swift/C interop is pretty good. If you've not done it before - now's your chance to learn! Using a WKWebView is a horrible hack IMO. The usual reason for using WKWebView is that it has JIT Javascript, which JavascriptCore doesn't have, giving a worthwhile performance boost (maybe 10X). But that's not an issue here, as the JIT would just call the native C libxslt to do the work, and you can call that directly.
Jul ’24
Reply to GPS problem with non moving iphone. Does Apple consider us users as totally infantile?
Which "boating app" are you using? iOS has a feature that can pause location updates when it thinks you have stopped moving (for power reasons, not security); whether this is enabled can be controlled by each app, but it defaults to ON: https://developer.apple.com/documentation/corelocation/cllocationmanager/pauseslocationupdatesautomatically Ask the developers of your app whether they set this property. A more recent, and related, feature is the "stationary" property of CLUpdate: https://developer.apple.com/documentation/corelocation/clupdate/4337718-stationary
Jul ’24
Reply to What is the recommended way to count files recursively in a specific folder
Yes I believe you need to recursively descend through the directory tree. So you need to read each directory, determine which of the directory entries are sub-directories, and visit those. This boils down to readdir and stat. I am aware of one possible optimisation, if you want to squeeze the last bit of performance. In order to determine whether a directory entry is a sub-directory, rather than a regular file, in general you need to stat it. But, when you stated the parent directory you got st_nlink, which tells you the number of hard links to that directory. Each directory's .. entry counts as a hard link to its parent directory, and its . entry is a hard link to itself. So if st_nlink is 4, then the directory can have at most 3 subdirectories. So you can enumerate the directory contents, checking if each entry is a subdirectory, until you have found 3. At that point you can stop stating everything - the remaining entries must be non-directories. This is classic UNIX stuff that has worked since forever. It's not impossible that new Apple filesystems have alternative APIs that make this more efficient. Maybe someone else will comment. I don't know where the bottleneck is - is it the disk access speed? - is it the number of kernel calls? Things you need to consider if you want a robust implementation: Hard links Symlinks Hard or symbolic links that introduce cycles Other special directory entries Mount points Whether to include . and .. and other dotfiles in your count Unreadable (and unexecutable) directories Personally, I'd do something like this: auto count_files(std::filesystem::path p) { int n_files = 0; for (auto& entry: std::filesystem::recursive_directory_iterator(p)) { if (is_regular_file(entry)) ++n_files; } return n_files; }
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jul ’24
Reply to App Stuck in `Ready For Distribution`
I have an app that is stuck in Ready For Distribution "Ready for Distribution" is apple-speak for "Live On The App Store, Customers Can Buy It Right Now". That's the state shown for all my released apps right now. There isn't a "Distribute" button. (Have I misunderstood your question?)
Replies
Boosts
Views
Activity
Jul ’24
Reply to XSLT 2.0 transformation with Swift or WKWebView
I wasn't aware that libxslt (and also libexslt apparently) is public on iOS; that's useful to know. (I've used XSLT a fair bit over the years but always on the server side.) You really need to determine whether or not you need XSLT 2 functionality. I suspect that you don't, because a bit of googling finds StackOverflow answers saying that .NET doesn't support XSLT 2. If you actually do... I don't really know what to suggest, except fixing the XSLT to not need the version 2 features. Otherwise, everything boils down to libxslt in the end. So your choice is between Swift -> Javascript -> C -> libxslt -> C -> Javascript -> Swift Swift -> C -> libxslt -> C -> Swift Some of those steps will involve serialising / deserialising XML text to/from XML object representations. Personally, I'd choose the second option. Swift/C interop is pretty good. If you've not done it before - now's your chance to learn! Using a WKWebView is a horrible hack IMO. The usual reason for using WKWebView is that it has JIT Javascript, which JavascriptCore doesn't have, giving a worthwhile performance boost (maybe 10X). But that's not an issue here, as the JIT would just call the native C libxslt to do the work, and you can call that directly.
Replies
Boosts
Views
Activity
Jul ’24
Reply to XSLT 2.0 transformation with Swift or WKWebView
WKWebView supports the following APIs on both macOS and iOS: XSLTProcessor - https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor That’s not XSLT 2, is it? (Is that available in JavascriptCore?)
Replies
Boosts
Views
Activity
Jul ’24
Reply to Cannot confirm my trader info - apps removed soon in the EU?
What does the "Resubmit" link in their email do? (Are you an individual or a business?)
Replies
Boosts
Views
Activity
Jul ’24
Reply to Scale app for coffee and small dishes
not many people would use it (well, drug dealers might). Let's also have a "coffee" purity tester where you put a couple of grains down the speaker hole and it tells you if it's 100% Arabica or whether it's been cut with baking soda.
Replies
Boosts
Views
Activity
Jul ’24
Reply to Appstore: Put a decommission message in the app's description
You can use the "promotional text" field. It's not very prominent though.
Replies
Boosts
Views
Activity
Jul ’24
Reply to XSLT 2.0 transformation with Swift or WKWebView
Some years ago, there seemed to be a possibility with an external C library, but it was also mentioned that at a moment it was no more accepted by the App Store. Can you say more about that? The open-source libxslt is XSLT 1.0 only. I'm curious to know what XSLT 2 library you're referring to.
Replies
Boosts
Views
Activity
Jul ’24
Reply to mount(2) always returning errno 63 (File name too long) when mounting NFS share
Somewhere there will be nfs-specific mount syscall documentation, but I can't immediately find it. (man mount_nfs is for the mount command, not the syscall.) I bet you need to pass some NFS-specific struct to mount's data argument.
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jul ’24
Reply to No data in sales and trends past 4am
Yes, me too. Be patient, it will catch up eventually.
Replies
Boosts
Views
Activity
Jul ’24
Reply to Create code at runtime on iOS: possible any more?
This page is worth reading: https://developer.apple.com/documentation/apple-silicon/porting-just-in-time-compilers-to-apple-silicon describes how it works on MacOS. I believe that iOS likely works much the same, except crucially that our apps cannot get the required entitlement.
Replies
Boosts
Views
Activity
Jul ’24
Reply to I cant create new app
Working for me now.
Replies
Boosts
Views
Activity
Jul ’24
Reply to PHPickerViewController in Limited Access photos mode
FB14265010
Replies
Boosts
Views
Activity
Jul ’24
Reply to Create code at runtime on iOS: possible any more?
Are you sure this worked on an unmodified iOS device? That seems unlikely to me. mmaping executable memory is specifically disallowed, with a very limited exception that Safari uses to JIT Javascript.
Replies
Boosts
Views
Activity
Jul ’24
Reply to GPS problem with non moving iphone. Does Apple consider us users as totally infantile?
Which "boating app" are you using? iOS has a feature that can pause location updates when it thinks you have stopped moving (for power reasons, not security); whether this is enabled can be controlled by each app, but it defaults to ON: https://developer.apple.com/documentation/corelocation/cllocationmanager/pauseslocationupdatesautomatically Ask the developers of your app whether they set this property. A more recent, and related, feature is the "stationary" property of CLUpdate: https://developer.apple.com/documentation/corelocation/clupdate/4337718-stationary
Replies
Boosts
Views
Activity
Jul ’24