So even if you read the "Unbiased Times", you can get a biased selection of articles because of the algorithm.
-13 karma · joined January 15, 2017
So even if you read the "Unbiased Times", you can get a biased selection of articles because of the algorithm.
As for services, their iTunes platform is really 1950s technology, but it works.
I don't know how a company that makes the world's most used Internet service in transactions per second (Apple Push Notifications Service), which works very well, may be "bad".
Also, it's not up to you, the costumer decided to deliver the device for recycling and not for scrap.
Nothing to see here, conspiracy theorists.
That was a problem with older versions of Adobe suite, but since lots of people on Macs used Adobe Apps...
GPLv3 software can't be on Apple products, yet every Chromebook ships with it, because Saint Google.
That would be stupid, Apple doesn't make money from users data, Apple doesn't listen to conversations like Google does to sell ads.
So why would they support servers (and there are a lot more of android users than iOS users) for people that didn't bought anything from them? For people that bought Androids to like them? They don't need that.
It has nothing to do with open source, the open source community doesn't need this and Apple couldn't care less about the GNU types after GPLv3 incompatibilizes with their business (while Android OEMs break the license every single day, but the community turns a blind eye, because it's Google)
Also, they would lose a few of their product sales and lots of 30% shares on sticker packs and other Apps for iMessage they sell.
Like Trump or not, Occulus is a real company with real people working there making money from selling a legitimate product. So don't associate the two things.
(God, why do I have to write this?)
When the user downloads, he downloads only the version that works with their CPU.
But how could the executables? You know, the machine code, get so big.
And I'm comparing installers with just the app!
.app package: 112.9MB
Excluding all the frameworks, all the graphical resources, etc.
The binary is a whopping 30.7MB
Okay that it has armv7 and armv8, then again, it's already 15 megabyte per architecture.
And the App is really simple, specially compared to a fully featured web browser like Opera!
It's not because of "liking", simple facts.
Sources
Apple: investor.apple.com IDC: IDC Worldwide Quarterly Personal Computing Device Tracker, April 11, 2017
PC sales were 60 million, taking Apple's share of 4.2 million, it's 56 million, give or take.
Last year, Apple in this period sold 51 million iPhones, 10 million iPads. And it was a "bad" year.
You might say "but I need my desktop, my IDE, my Photoshop, my etc."
Yeah, but you are one programmer or photographer or video editor, most people don't create anything, or just do some very light editing (like removing skin imperfections from photos), and thus, a media consumption device is most right.
We are in the Post-PC world, live with it.
All their SSD's use their controllers.
As for external disks, Apple couldn't care less, for them, the future is cloud storage.
Apple devices, save for their least sold model (MacPro), in their least sold product line (Mac) are consumer devices with no ECC RAM. Most people don't know what ECC RAM is, most don't care, and won't pay more for it.
For Apple, it doesn't make sense to switch to ECC for system memory, however, if they implement storage ECC at block level in their SSD controller (Apple designes their own SSD controllers), they can obtain the same functionality at much lower cost (only flash controller RAM needs to be ECC).
And all I see here is those who talk about it.
Rust on the other hand tries to be a system programming language, but with no success at that. And it's not a popular Applications programming language because there's no support from any major software platform vendor.
Swift doesn't have a runtime, a linked library isn't a runtime, if you think it is, then you don't have the qualifications to discuss this.
It is not a problem to store one 50meg file on my 32GB iPhone or 128GB server, it would be in a 32KB microcontroller, but nobody is trying to ship Swift as a language for those.
That's not how you do things in Swift:
class Dwizzle {
private let countQueue = DispatchQueue(label: "hey debugger! I'm here!")
private var count = 0 //type inference to Int
func fizzle() {
countQueue.sync {
if count > 3 { return }
count += 1
}
}
}
See, no need for mutexes, or defers, or that lock_guard.Just simple closures you already know.
Now you want to expose the count variable to other types, always in a non-negotiable thread-safe manner?
private let countQueue = DispatchQueue(label: "hey debugger! I'm here!")
private var _count = 0
public var count : Int {
get {
return countQueue.sync {
return _count
}
}
set(newValue){
if newValue >= 3 {
self.countQueue.sync {
self.count = newValue
}
}
}
}
And maintain the rest.Now what if you want to clean up, and need to only one fizzling executing at a time in the whole process? Doesn't matter which process calls the fizzling?
class Dwizzle {
private static let countQueue = DispatchQueue(label: "hey debugger! I'm here!")
private var _count = 0
public var count : Int {
get {
return Dwizzle.countQueue.sync {
return _count
}
}
set(newValue){
if newValue >= 3 {
Dwizzle.countQueue.sync {
self.count = newValue
}
}
}
}
func fizzle() {
if count > 3 { return }
count += 1
}
}
To me, your code looks like a semaphore, let me introduce you to my over-the-knee fully-functional semaphore that can implement your Dwizzle class: class HackerNewsSemaphore {
private let queue = DispatchQueue(label: "sem queue")
private var count = 0
func up(){
queue.sync {
count += 1
if executeWhenUp && onlyExecuteWhen(count) {
execute(count)
}
}
}
func down(){
queue.sync {
count -= 1
if count > 0 && executeWhenDown && onlyExecuteWhen(count) {
execute(count)
}
}
}
var executeWhenUp : Bool
var executeWhenDown : Bool
var onlyExecuteWhen : (Int)->Bool
var execute : (Int)->Void
init(whenTrue: @escaping (Int)->Bool, whenUp: Bool, whenDown: Bool, execute: @escaping (Int)->Void) {
self.onlyExecuteWhen = whenTrue
self.executeWhenUp = whenUp
self.executeWhenDown = whenDown
self.execute = execute
}
}
//test
let dwizzle = HackerNewsSemaphore(whenTrue: { (i) -> Bool in return i <= 3},
whenUp: true,
whenDown: true,
execute: { i in print("fizzle \(i)") })
for x in 0...10 {
dwizzle.up()
}
for x in 0...10 {
dwizzle.down()
}
//output:
fizzle 1
fizzle 2
fizzle 3
fizzle 3
fizzle 2
fizzle 1