I was bitten by this this week. Tried to reuse my installer to install OS X El Capitan on a MBP without redownloading it over my super-fast 2Mbps internet connection.
First, I try to install it by just copying the installer app - "can't be verified".
Then I make a bootable USB stick using DiskMaker X - "can't be verified". I run an integrity check on the installer - all good.
I then try running `/path/to/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB-STICK --applicationpath /path/to/Install\ OS\ X\ El\ Capitan.app --nointeraction` - "can't be verified".
Finally I give up and the system is installed via the App Store. The download fails once, it finally completes, and I am left clueless as to why I couldn't reuse the old installer.
An "expired certificate" error message would have saved me many hours. It's unfortunate for the user that Apple puts so little emphasis on letting them be their own tech support.
Apple is just awful about providing meaningful, useful errors. The worst is AirPlay. When it fails to connect, which is about 33% of the time, there's nothing. It doesn't even pop up a generic alert, it just silently (or not so silently, if you're playing music) reverts to local playback.
Many other examples abound. Most errors at least provide a message, but one so generic as to be useless.
Ugh. At work, the computers use AirWatch. Oh. My. God. They fill the OSX logs with debug messages. Literally "I got 8 bytes from this with this offset" type messages for an application that spends most of its time running in the background. Here is an example:
2016-03-03 10:59:16.863 PM AirWatch Agent[507]: void AgentReadCallback(NSData *__strong, NSFileHandle *__strong) [Line 1096] Agent received message of type 140
2016-03-03 10:59:16.863 PM AirWatch Agent[507]: -[AWAgentController isCurrentUserManaged] [Line 221] Current User is managed
2016-03-03 10:59:16.863 PM AirWatch Agent[507]: Server Starting new loop for data
2016-03-03 10:59:26.825 PM AirWatch Agent[507]: void AgentReadCallback(NSData *__strong, NSFileHandle *__strong) [Line 1096] Agent received message of type 140
2016-03-03 10:59:26.831 PM AirWatch Agent[507]: -[AWAgentController isCurrentUserManaged] [Line 221] Current User is managed
2016-03-03 10:59:26.832 PM AirWatch Agent[507]: Server Starting new loop for data
Is this normal operating procedure for OSX apps? Fill the system.log with print statements in a loop that runs every ~10 seconds?
It is for those that leave their debug logging enabled. A lot of code I've seen uses CocoaLumberjack[0] or something similar, which makes it easy to turn that off for production builds.
"sparsebundle already in use" is the FOAD of error messages. I do love how the (now stale) tools to fix this are maintained by a volunteer on an external site unrelated to apple.
I try not to be too grumpy about it, but I paid $3k for a laptop not to have to fucking deal with windows-style normal operation of the OS and related tools is busted and you're gonna sink hours into debugging it. And least when linux breaks it tends to leave error messages and details in syslog...
My latest pet peeve is `mds_stores` deciding it needs to spend forever using my iPod, so I can't unplug it without incurring a scolding. It's not hard for Mac OS to stay less terrible to configure than Linux, and less terrible to use than Windows, but that's a low bar.
I probably do. Thanks to my partial understanding of how the software works, I can guess that `mds_` is Spotlight trying to index my music player, but I wouldn't want to try to explain it to my dad. Software that responds to "eject this" with "no, because f* you" because it is busy creating meta-data is user-hostile.
Just yesterday I performed a clean install of Windows 10 on my desktop work computer. After joining our domain (configured in the most standard way possible), the start menu stopped working and edge couldn't start anymore. All commands to fix this situation (through powershell) gave cryptic hexadecimal error codes. After a few hours it turns out the Windows Firewall service was disabled. How this causes the Start Menu to malfunction, I don't know...
Again this was a clean installation. Windows 10 is a joke.
> And least when linux breaks it tends to leave error messages and details in syslog...
Tends to. Not directly a Linux issue, but i was trying to figure out why one specific program was giving me corrupted MAC errors when connecting via sftp.
All searches indicated it was a network config issue, but no changes seemed to matter.
Eventually i checked the libs the program was compiled with and found the sftp one was "jurassic". One update later and no more errors.
that said, more often than not, a quick dmesg or tail /var/log/messages is all that i need to get something purring again.
Changing the date in the system (and disabling network time) worked well. A quick search led me to this solution, avoiding the whole re-download to please the sentient dictatorial master.
Don't complain. Even with torrents and 100Mbps fiber, we max out at 1MB/sec here. It reportedly costs 20,000CNY/month (~USD$4500) for an uninhibited 512k connection out of mainland China, if you can get it. (You generally can't.)
Sure. Actually we rarely get even that, except on domestic transfers. 1MB/sec is best-case, torrent-only scenario ~1-5AM. Makes you value mirror operators.
Around 300 kB/sec lets you get 1GB/hour, which means you can get a perfectly watchable 1080p movie in 2 hours. Yes it's nice now that I have 3 MB/sec down, but it wasn't hell before and I lived with that for 10+ years. Many people still have this kind of connection - typically billed as 5000 down / 800 up. Streaming, I have no idea.
There is something wrong with your connection; where are you? I'm in Suzhou, I have no problem maxing out my connection downloading things outside of the GFW. It starts slow but speeds up about a minute in usually. With VPN turned on I am capped at about 10Mbps. Direct lines are easy to get, we had one for a while but decided getting everyone needed a connection, a VPN account was enough. We were paying US$2k for a 10Mbps "dedicated line" to HK.
I was hit by this issue too. Everything that came up online (and worked in the past) was to reset the date in the Terminal. Of course, that didn't help in the slightest.
But if you quickly use sudo .../createinstallmedia to make a bootable usb installer from your annoyingly re-downloaded App store installer, you should be safe from this, shouldn't you? That's what I did when I installed, but I haven't tried to use my usb installer, so I suppose it could have expired too. (edit) Sigh, yes, expired also. Re-downloading...
Encountered the exact same issue. But all kind of weird bugs turned up in the older version of App Store, to the point where I had to re-format the drive. And the Apple forums are absolutely no help. took me 3 hours to do something that should have been trivial..
You have invites? I'd love one, KeyBase seems awesome but I couldn't find an invite. If you don't mind, could you send me one by email at yohaiberreby@gmail.com? Thanks :)
Actually, Forklift is broken in El Capitan, at least for me. It just freezes after few seconds upon launching and then fails to recognize user input, or lags terribly.
On Windows I've been using Total Commander for 15 years or more. There's nothing like it on Mac, and I've tried them all. But there's this new app, Files (http://filesmanager.info/), which is being actively developed and gaining features fast. I've been using it for some time now I'm liking it more and more. The developer behind it is very responsive and skilled and it seems to be going in a great direction. There's hope for OS X! :)
IIRC, Nginx can use sendfile too, it's just not there by default because the transfer happens entirely in kernel space and hence you cannot apply filters like gzip on the response (correct me if I'm wrong).
I'd love something similar to be part of Cargo, maybe as an option in the manifest. Like the author, I've learned to guess when the codegen starts, but having this information displayed would be useful.
I'm actually working right now on a `cargo check` command which only runs those phases of the compiler to do with typechecking, to accommodate workflows based around tweaking types and then running the compiler to check your work. Given that the vast majority of compilation time is currently based in code generation and linking, this should drastically improve usability for this sort of rapid-iteration, dynamic-language-style workflow. (Though also note that improving the speed of codegen and linking is an ongoing task as well.)
Macro expansion can lead to programs that don't typecheck, unless a very restrictive typing system is used (e.g. MetaML, MetaOcaml). I don't think Rust has such restrictions, therefore I assume that type-checking happens after macro expansion.
It does, but what I was getting at was that full compilation doesn't need to occur first. Macro expansion is one of the very first phases of compilation (and doesn't have access to typechecking information, incidentally).
Not in Rust 1.0. In the nightlies there are syntax extensions available that give you more power, but those are likely to see significant revisions before they're available in a stable version since they're a major backwards compatibility hazard.
Not something being actively worked on, but I and some others care about it.
Rust macro-esque things are of three types:
- Macro by Example (MBE): These are easily defined by the user via `macro_rules!`, which can match on their input and expand to some output at compile time. These don't need to be defined as a plugin; you can define a macro directly in your code.
- tokentree expansion plugins: These take in a token tree, run arbitrary code, and output an AST (syntax tree) node. Ish.
- AST expansion plugin: These take in the parsed AST, run arbitrary code, and output another AST to replace or augment it.
There also is support for custom lints and llvm passes.
I'm not sure what a token tree is. Usually compilers feed a token list to the parser, which then generates an AST. The AST is what compile-time meta-programming such as macro expansion works on.
In fully-blown compile-time meta-programming systems such as Converge or Template Haskell, the "AST expansion plugin" can and typically does itself invoke the compiler to compile arbitrary code which in turn outputs a new AST for further compilation.
I'm not sure who specifically is working on improving the macro system, but it's definitely something that's been prioritized. My primary recommendation for contacting the relevant people would be either the Rust internals forums (https://internals.rust-lang.org) or the #rust-internals channel on irc.mozilla.org.
Rc and Arc aren't exactly GC types... they are just reference-counted pointers, Rc being akin to C++'s shared_ptr. I get that in a sense, this is garbage collection, but certainly not full-featured like the ones you find in other languages.
You can use full GC in Rust--we use the SpiderMonkey GC to collect Rust DOM objects, for example. It's not the most easy-to-use thing, however.
Most systems software gets by fine with a combination of thread-safe and thread-local RC. Reference counting is a form of garbage collection that works really well when it's used only for the subset of data that needs GC--which is the style that Rust encourages anyhow.
Hmm.. Rust was created to support the new browser, browsers mainly manage DOM objects.. I wonder why you are using a legacy garbage collector in order to handle primary tasks rather than having that part of your core design?
SpiderMonkey's GC is very modern, it's not legacy at all. Furthermore, while Servo influences the design of Rust, it does not dictate the design of Rust (or else, for example, Rust would have had struct inheritance years ago).
For Servo we need a javascript engine. We're already using Spidermonkey. It has a GC for Javascript; we're already paying those costs. The Rust-side representation of DOM objects is also managed by the GC; that makes sense because these are tied to Javascript things.
We don't use the GC elsewhere. I think at some point we did, but the only place now in Servo where GC is used is where the data is strongly connected to data already managed by the SM GC.
Nim's GC is for general-purpose use in a language. Spidermonkey's GC is for GCing javascript, which already has an extensive runtime (which the GC ties into heavily). "Nim's GC is better than Spidermonkey's" is a statement of no value (and oversimplifies the situation) unless the context is specified. Using the SM GC to collect random Rust objects would be a bad idea. Somehow rigging up spidermonkey to use a Nim-like GC in Rust (all other things being the same) would also be a bad idea. Two different scenarios, two different GCs.
Refcounting and tracing are two different forms of GC, but you're right in the sense that most people mean tracing.
At the same time, we're putting a lot of thought into how to properly add an optional tracing GC. It's important that it doesn't impact the no-GC case, which is still, of course, primary.
I'm glad to know there is ongoing work on a tracing GC. Rust has many strengths aside from lifetimes and ownership (algebraic data types, sane generics, strong module support, very strong type system), so a few features to make it more usable for use in contexts where performance isn't as important as expressivity would be very nice to have.
IMO, "contexts where performance isn't as important" aren't very relevant to Rust (hence why I'm strongly against, for example, hardcoding a global GC into the language, or splitting the language into a GC'd and non-GC'd half). But I do understand why some people would like to use the same language for all these use cases, I suppose.
I don't think the primary use case for a GC in Rust would be "contexts where performance isn't as important" so much as another tool for lifetime management.
The current reference counted types don't just get used for convenience, they get used because they describe the actual life cycle of the data they contain. A tracing GC would be similar.
I have disagree. I know what you mean in practice - the GC is not the default and some types will always be different. But reference counting and types with destructors is a valid implementation of GC.
Gc is "just" an automatic memory management. Rust is not a garbage collected language, but it does have optional garbage collection available.
First, I try to install it by just copying the installer app - "can't be verified".
Then I make a bootable USB stick using DiskMaker X - "can't be verified". I run an integrity check on the installer - all good.
I then try running `/path/to/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB-STICK --applicationpath /path/to/Install\ OS\ X\ El\ Capitan.app --nointeraction` - "can't be verified".
Finally I give up and the system is installed via the App Store. The download fails once, it finally completes, and I am left clueless as to why I couldn't reuse the old installer.
An "expired certificate" error message would have saved me many hours. It's unfortunate for the user that Apple puts so little emphasis on letting them be their own tech support.