# items

checksum: b1420ef8
status: unread
url: http://eli.thegreenplace.net/2017/reducers-transducers-and-coreasync-in-clojure/
title: Reducers, transducers and core.async in Clojure
content:
  <p>This is a whirlwind tour of some of the cool new features that appeared in Clojure in the past few years. I find it fascinating how one good idea (reducers) morphed into another (transducers), and ended up mating with yet another, apparently unrelated concept (concurrent pipelines) to produce some really powerful coding abstractions.</p>
  <p>The article is not for beginners; otherwise it&#039;d take a small book to cover all this material. Some experience with Clojure or a similar functional language is required.</p>

  <h2>Sequences, iterators and laziness</h2>
  <p>Let&#039;s start with the basics. Suppose we want to iterate over a sequence of items, performing some combination of transforming and filtering on the items in it. Here&#039;s an example:</p>

  <pre>=&gt; (def s (range 0 10))
  #&#039;simplerepl.core/s
  =&gt; (reduce + (map inc (filter even? s)))
  25
  </pre>
  <p>It&#039;s very simple, but our imagination and experience tell us that it is representative of many real data processing pipelines. Mapping, filtering and reducing is the bread and butter of functional programming, after all. However, our eternal concern with efficiency should sound the sirens here; it seems like we take a sequence and pull it through several operations that need the whole sequence to operate. Are there copies involved? The way the Clojure code is written above, the answer is <em>no</em> - because of laziness.</p>
  <p>range returns a lazy sequence - a sequence whose members are not really materialized until we try to use them. Further, Clojure&#039;s functional primitives like map and filter respect laziness by not materializing more than they need for any given step (sans a bit of chunking/buffering for efficiency).</p>
  <p>In other words, the code above does not create intermediate sequences between steps. It creates <em>lazy</em> sequences, which are just thunks holding a function to materialize the next item.</p>
  <p>Python has iterators for the same purpose. When writing a function to generate a sequence of items in modern Python, returning a list is discouraged because this may incur unnecessary copying. Rather, such functions ought to return <em>iterators</em> (which is very easy using yield). Moreover, functions consuming sequences should be careful about not materializing the whole sequence but rather using elementwise iteration (which is the default in for...in loops). Python 3 made this style prevalent by switching range to return an iterable; same for map. In Python 2 both range and map return fully materialized lists.</p>
  <p>In an imperative programming style, we&#039;d probably have a loop to perform the operation shown above:</p>

  <pre>def process(s):
      result = 0
      for i in s:
          if i % 2 == 0:
              result += i + 1
      return result
  </pre>
  <p>It&#039;s easy to reason about the efficiency of this code, but it&#039;s also structured in a less modular way. A composition of maps, filters and reductions could be easier to reason about because it maps well to the actual business logic of our application. The imperative implementation does not compose as well.</p>


  <h2>Reducers</h2>
  <img alt="Pipe reducers" src="http://eli.thegreenplace.net/images/2017/reducers.jpg"/><p>Alright, so laziness ensures that Clojure code as shown above is not as inefficient as we may have feared. But still, is it as efficient as an imperative implementation? It turns out the answer is no; while laziness avoids large copying costs, it <em>does</em> incur a constant overhead for boxing and unboxing thunks representing the rest of the sequence; it would be nice to avoid these costs as well. This brings us to reducers.</p>
  <p>Expressing data transformation with reducers starts with the observation that reduce is a fundamental building block that can express other transformations fairly easily. Here&#039;s how we can perform the job of a map with reduce:</p>

  <pre>=&gt; (reduce (fn [acc item] (conj acc (inc item))) [] [1 2 3 4 5])
  [2 3 4 5 6]
  </pre>
  <p>filter is only slightly trickier:</p>

  <pre>=&gt; (reduce (fn [acc item] (if (even? item)
  #_=&gt;                          (conj acc item)
  #_=&gt;                          acc))
  #_=&gt;         [] [1 2 3 4 5])
  [2 4]
  </pre>
  <p>This is cool, but note something slightly disturbing. This code will work fine only on collections for which conj works well; it will blow up on lists. Also, we&#039;ve just spent time talking about <em>not</em> building temporary collections in between transformations, but this exactly what this code is doing with that conj.</p>
  <p>The clojure.core.reducers library solves both these problems by conceptually inverting the process of applying multiple transformations to a sequence inside-out. Reducers are now integrated into Clojure core, but it&#039;s worth spending a few minutes getting an intuitive feel for how they work by implementing a simplistic variant. For the full scoop, read <a href="http://clojure.com/blog/2012/05/15/anatomy-of-reducer.html" rel="noreferrer" target="_blank">Rich Hickey&#039;s article</a>. Here&#039;s an abridged version.</p>
  <p>We start by defining a &quot;reducing function&quot;. A reducing function is what reduce takes - a function accepting an accumulator and a new item, and returning the new accumulator value. In classical reductions this function can just be +; in the sense of implementing-map-with-a-reduce, it can be as shown above. In pseudo-type-notation, it&#039;s something like :</p>

  <pre>reducingf :: acc -&gt; item -&gt; acc
  </pre>
  <p>Next, let&#039;s define the concept of &quot;transforming&quot; a reducing function. This is simply a function that takes a reducing function and returns another reducing function:</p>

  <pre>transformingf :: (acc -&gt; item -&gt; acc) -&gt; (acc -&gt; item -&gt; acc)
  </pre>
  <p>The main insight is that we can express all kinds of data transformations simply by transforming a reducing function. In the end we&#039;ll end up with a single reducing function that can be passed to reduce.</p>
  <p>Here&#039;s another take at representing map with reduce, this time using the generalized approach described above:</p>

  <pre>(defn mapping-transform
    [mapf]
    (fn [reducingf]
      (fn [acc item]
        (reducingf acc (mapf item)))))
  </pre>
  <p>It may look scary, but it&#039;s just an code embodiment of the textual description above. A call to mapping-transform will create a function that transforms a reducing function into another reducing function. The actual parameter passed to mapping-transform is used to modify every item in the collection before that item is passed to the original reducing function. Here&#039;s how we can use this to compute a sum of squares for a given vector:</p>

  <pre>reducers.core=&gt; (reduce ((mapping-transform #(* % %)) +) 0 [1 2 3 4 5 6])
  91
  </pre>
  <p>There&#039;s nothing more magical than some higher-order function munging going on here. (mapping-transform #(* % %)) returns a function that takes a reducing function as argument, and returns another reducing function. Since the actual reduction we want to perform is +, this is what we pass in . The returned reducing function is then given to reduce. Take a couple of minutes to convince yourself how this works. It may help tracing the + in the REPL:</p>

  <pre>reducers.core=&gt; (trace-vars +)
  #&#039;clojure.core/+
  reducers.core=&gt; (reduce ((mapping-transform #(* % %)) +) 0 [1 2 3 4 5 6])
  TRACE t8399: (clojure.core/+ 1 4)
  TRACE t8399: =&gt; 5
  TRACE t8400: (clojure.core/+ 5 9)
  TRACE t8400: =&gt; 14
  TRACE t8401: (clojure.core/+ 14 16)
  TRACE t8401: =&gt; 30
  TRACE t8402: (clojure.core/+ 30 25)
  TRACE t8402: =&gt; 55
  TRACE t8403: (clojure.core/+ 55 36)
  TRACE t8403: =&gt; 91
  91
  </pre>
  <p>Question: how many times do we process each item in the input vector? Note that we do <em>two</em> data transformation operations:</p>
  <ol><li>Map the square function #(* % %) over each item.</li>
  <li>Sum all squared items together.</li>
  </ol><p>However, this code only walks over the input sequence <strong>once</strong>. What happens here is that, instead of generating a new lazy thunk after each step, we combine all steps into a single traversal. This combination is achieved via a composition of functions orchestrated by mapping-transform. We can take this approach further, and define a filtering-transform:</p>

  <pre>(defn filtering-transform
    [predicate]
    (fn [reducingf]
      (fn [acc item]
        (if (predicate item)
          (reducingf acc item)
          acc))))
  </pre>
  <p>Here&#039;s how we sum up the all the even numbers in a vector:</p>

  <pre>reducers.core=&gt; (reduce ((filtering-transform even?) +) 0 [1 2 3 4 5 6])
  12
  </pre>
  <p>Now it&#039;s time to go back to the first example we started the article with. Let&#039;s take all the even numbers in a sequence, increment them and sum them up, using the higher-order reducing transforms. Here goes:</p>

  <pre>reducers.core=&gt; (reduce ((filtering-transform even?)
             #_=&gt;            ((mapping-transform inc) +)) 0 (range 0 10))
  25
  </pre>
  <p>Remember the mention of inverting the transformation process inside-out? The order of transformations is inverted from the usual Clojure function application order. We first filter the evens, then increment, then add them all up. The &quot;standard&quot; Clojure code is:</p>

  <pre>(reduce + (map inc (filter even? s)))
  </pre>
  <p>But we&#039;ve flipped it with even? on the outside and + on the inside (with inc still in-between), due to the way our mapping-transform and filtering-transform are defined. The order doesn&#039;t really matter, and the actual Clojure reducers library lets us write it in the more expected order, as we will soon see .</p>
  <p>What <em>really</em> matters is that this approach only walks the input sequence <em>once</em>, without any temporary sequences or lazy thunks in the interim. It really is similar to the imperative-style loop .</p>


  <h2>Is it faster in practice?</h2>
  <p>Let&#039;s leave this explanatory framework behind and just use clojure.core.reducers that exports its own versions of map and filter, which are designed to be passed to reduce. These functions do essentially the same thing as the trick explained above, but with a bit more sophistication so that invoking them looks exactly like invoking the built-in map and filter.</p>
  <p>To use them in the REPL, we&#039;ll first require the module:</p>

  <pre>reducers.core=&gt; (require &#039;[clojure.core.reducers :as r])
  nil
  </pre>
  <p>Now we can distinguish between the built-in map and the transforming r/map. Here is a benchmark that compares this new way of transforming collections :</p>

  <pre>reducers.core=&gt; (def s (range 0 9999999))
  #&#039;reducers.core/s
  reducers.core=&gt; (time (reduce + 0 (map inc (filter even? s))))
  &quot;Elapsed time: 599.985027 msecs&quot;
  25000000000000
  reducers.core=&gt; (time (reduce + 0 (r/map inc (r/filter even? s))))
  &quot;Elapsed time: 432.453733 msecs&quot;
  25000000000000
  </pre>
  <p>The reducers version is quite a bit faster. As an excercise, try to make the transforming chain longer by adding several more mapping and filtering steps. How does it affect the performance difference?</p>
  <p>Great, so we can speed up our data processing with <em>this one weird trick</em>. However, if you have some experience in working on compiler backends, you may be feeling underwhelmed. Isn&#039;t this just loop fusion? Indeed, it is. Our original code had multiple loops going over the same data; but we could just fuse all the operations done on every element into a single loop. Indeed, this is what the imperative code in the beginning of the article does.</p>
  <p>I suspect that Clojure is too dynamic and there are too many layers of abstraction (such as laziness, sequences, etc) to expect a perfect automatic loop fusion from the JVM here. This is why we resort to fusing the loops manually; well, not really manually - we actually use some higher-order function goodness to accomplish this for us. If you squint hard at the mapping-transform function above, you may notice that it fuses the mapping function into the reducing function.</p>
  <p>All of this makes me wonder - what if we <em>really</em> fuse the loops manually, can we go even faster? It turns out yes, but only for some types of sequences. Let&#039;s start by changing the s in the benchmark to a materialized vector (range actually produces a lazy sequence):</p>

  <pre>reducers.core=&gt; (def sv (vec s))
  #&#039;reducers.core/sv
  </pre>
  <p>And now let&#039;s re-run the benchmark of regular filter-map-reduce with the reducers-infused filter-map-reduce:</p>

  <pre>reducers.core=&gt; (time (reduce + 0 (map inc (filter even? sv))))
  &quot;Elapsed time: 555.125033 msecs&quot;
  25000000000000
  reducers.core=&gt; (time (reduce + 0 (r/map inc (r/filter even? sv))))
  &quot;Elapsed time: 371.145887 msecs&quot;
  25000000000000
  </pre>
  <p>But now let&#039;s add another contender - a manually fused reducing function that combines the addition, filtering and increment mapping:</p>

  <pre>reducers.core=&gt; (time (reduce (fn [acc item] (if (even? item)
                                                 (+ acc (inc item))
                                                 acc))
                                 0 sv))
  &quot;Elapsed time: 324.793784 msecs&quot;
  25000000000000
  </pre>
  <p>Hah, even faster! Of course, writing such pipelines manually is not always practical, isn&#039;t composable and quickly gets unreadable, so in most cases using reducers is preferred. But that&#039;s not all. Reducers have another trick in the sleeve - effortless parallelism.</p>


  <h2>Folding in parallel</h2>
  <p>Let&#039;s begin this section right with the punchline:</p>

  <pre>reducers.core=&gt; (time (r/fold + (r/map inc (r/filter even? sv))))
  &quot;Elapsed time: 145.529636 msecs&quot;
  25000000000000
  </pre>
  <p>Whoa, what happened? Given an appropriate collection (such as a vector) that is <em>foldable</em>, and an appropriate reducing function that is <em>associative</em>, we can actually perform a reduction in parallel on multiple cores. The trick is breaking the input sequence into chunks, reducing each chunk and then reducing the results of the chunks. For foldable collections and associative reducing functions this is mathematically equivalent to the original task; and the big win is that we can reduce separate chunk in parallel, on different CPU cores. Which is exactly what r/fold does for us, automatically. Even though the operation done on each item is trivial, r/fold generates a 2x speedup on an 8-core CPU. For longer operations, the speedup could be even better.</p>
  <p>How awesome is that? We barely changed the code and get a considerably better performance, leveraging parallelism. All of this is possible due to the abstraction created by the reducers library. Remember the part about decoupling the actual collection from the operations to reduce it? This comes useful here.</p>


  <h2>Transducers</h2>
  <p>Remember our discussion of transforming reducing functions above? A transforming function (such as mapping-transform) has the pseudo-type:</p>

  <pre>transformingf :: (acc -&gt; item -&gt; acc) -&gt; (acc -&gt; item -&gt; acc)
  </pre>
  <p>It takes a reducing function and returns another reducing function. We&#039;ve just seen how this concept is used in the reducers library to decouple the transformation from the actual process of reduction.</p>
  <p>Shortly after introducing reducers, the designers of Clojure had another insight. Such transforming functions are useful not just in the context of reductions. The Clojure core developers were designing utility functions for core.async to transform channels (more on this later), and found themselves rewriting a bunch of existing logic from existing mapping and transforming functions. The solution? Use the concept of transforming functions to define sequence transformations in a more abstract way, completely decoupling them from the underlying sequences.</p>
  <p>So transforming functions got a new name - <em>transducers</em>, and got integrated more tightly into the language. Now many of the built-in sequence processing like map have an additional arity where no sequence is actually passed in. (map inc), for example, simply returns a <em>transducer</em> - a transforming function for other reducers. These transducers are composable, so another way to write the non-parallel reduction we&#039;ve been using in the benchmarks is:</p>

  <pre>(reduce ((comp (filter even?) (map inc)) +) 0 sv)
  </pre>
  <p>Note that the order here is similar to the one we had to apply with our own filtering-transform and mapping-transform, to convey that we first filter and then map (it&#039;s also similar to the Clojure -&gt; macro).</p>
  <p>Aimed with the insights of this article, we can actually look under the hood of Clojure&#039;s built-in map:</p>

  <pre>(defn map
    ([f]
      (fn [rf]
        (fn
          ([] (rf))
          ([result] (rf result))
          ([result input]
             (rf result (f input)))
          ([result input &amp; inputs]
             (rf result (apply f input inputs))))))
  ([f coll]
  ;; Implementation of other, non-transducer arities.
  ;; ...
  </pre>
  <p>To be a true transducer, a Clojure function must have three arities. I&#039;ll skip the no-argument and single-argument versions (please read a more comprehensive reference on transducers for the full scoop). The 2-arity version is where the real meat is and, oh wait, it&#039;s <em>exactly</em> the same as our mapping-transform from this article!</p>
  <p>So OK, now &quot;functions that transform reducing functions&quot; have a shorter name - <em>transducers</em>; but what has actually changed?</p>
  <p>What&#039;s really changed is that the map transducer has a wider range of applicability than just mapping collections. Its implementation has no collection-specific code. Let&#039;s see how it can be used to transform communication channels.</p>


  <h2>Pipelines and transducers</h2>
  <p>Clojure has borrowed go-routines and channels from Go, and placed them in a standard libray module named core.async. Unfortunately, a thorough discussion of core.async is outside the scope of this article. I&#039;ll just say that core.async is awesome; that it was implemented as a library without changing the language is beyond awesome - it&#039;s a terrific example of the power of Lisps to <em>grow the language</em> towards the problem domain.</p>
  <p>That said, I do want to mention core.async in the context of transducers, since the two mix in an interesting way.</p>
  <p>Let&#039;s take the simple squaring pipeline from <a href="https://blog.golang.org/pipelines" rel="noreferrer" target="_blank">Go concurrency patterns</a> and rewrite it in Clojure. The first version is a pretty-much verbatim transcription:</p>

  <pre>(defn gen-1
    [&amp; nums]
    (let [c (async/chan)]
      (async/go
        (doseq [n nums]
          (async/&gt;! c n))
        (async/close! c))
      c))

  (defn sq-1
    [cin]
    (let [cout (async/chan)]
      (async/go-loop [n (async/&lt;! cin)]
        (if n
          (do
            (async/&gt;! cout (* n n))
            (recur (async/&lt;! cin)))
          (async/close! cout)))
      cout))

  (defn main-1
    []
    (let [c-gen (gen-1 2 3 4 5)
          c-sq (sq-1 c-gen)]
      (loop [n (async/&lt;!! c-sq)]
        (when n
          (println n)
          (recur (async/&lt;!! c-sq))))))
  </pre>
  <p>There are two pipeline stages; the first, gen-1 generates a sequence of numbers into a channel. The second, sq-1 takes a channel of inputs, transforms them (by squaring each number) and puts the results in another channel. main-1 connects the two pipeline stages together.</p>
  <p>The second version makes more use of higher-level core.async tools:</p>

  <pre>(defn gen-2
    [&amp; nums]
    (async/to-chan nums))

  (defn sq-2
    [cin]
    (async/map&lt; #(* % %) cin))

  (defn main-2
    []
    (let [c-gen (gen-2 2 3 4 5)
          c-sq (sq-2 c-gen)]
      (loop [n (async/&lt;!! c-sq)]
        (when n
          (println n)
          (recur (async/&lt;!! c-sq))))))
  </pre>
  <p>In gen-2, to-chan places its input collection into a channel, and closes the channel; all of this in a separate go-block, of course. sq-2 uses the map&lt; function to create a mapping channel which takes items from its input channel, maps some function on them and returns a channel of results.</p>
  <p>If you read the documentation of core.async, you&#039;ll notice that map&lt; is now deprecated and you&#039;re advised to &quot;use transducers instead&quot;. Let&#039;s see how to do that, in this third version:</p>

  <pre>(defn main-3
    []
    (let [c-sq (async/chan 1 (map #(* % %)))]
      (do
        (async/go
          (async/onto-chan c-sq [2 3 4 5]))
        (loop [n (async/&lt;!! c-sq)]
          (when n
            (println n)
            (recur (async/&lt;!! c-sq)))))))
  </pre>
  <p>Here we create a <em>single</em> channel named c-sq, with a mapping transducer. This means that every item going through the channel gets transformed with the given mapping function before being read out of the channel. We don&#039;t need a separate channel, and core.async doesn&#039;t need a separate mapping helper.</p>
  <p>In fact, with the introduction of transducers core.async deprecated a whole bunch of functions. map&lt;, filter&lt;, unique, partition and so on. While implementing these for channels, the Clojure core devs had the epiphany that they&#039;re basically reimplementing all sequence processing functions in a different context . Transducers is an elegant solution to abstract away the concept of transformation from the underlying context (be it collections or channels, or...)</p>
  <p>It&#039;s easy to compose transducers on channels. Here&#039;s a silly example:</p>

  <pre>(defn square [x] (* x x))

  (def xform
    (comp
      (filter even?)
      (filter #(&lt; % 10))
      (map square)
      (map inc)))

  (def c (async/chan 1 xform))

  (async/go
    (async/onto-chan c [5 6 8 12 15]))
  (loop [n (async/&lt;!! c)]
    (when n
      (println n)
      (recur (async/&lt;!! c))))
  </pre>
  <p>Here the transducer is more complex, applying several filtering and mapping steps on the items going through the channel. That said, as we&#039;ve seen earlier in the article this is actually pretty efficient, with no unnecessary copying involved.</p>


  <h2>Closing thoughts - on the generality of reducing functions</h2>
  <p>It&#039;s interesting to ponder how reducing functions, from the humble beginning of the workhorse of reduce, became the most important building block of the concepts discussed in this article. Recall that a reducing function has the type:</p>

  <pre>reducingf :: acc -&gt; item -&gt; acc
  </pre>
  <p>I think the key insight is that taking and returning the new combined value permits a reducing function to implement things like filtering, because we can convey the concept of including or not including the current item in the combined result. Clojure&#039;s reductions also support the reduced call for early termination, and keeping state between reductions can help implement more involved processing steps. For a fairly complete example of all these tools, take a look at the implementation of the transducer variant of take in the <a href="https://github.com/clojure/clojure/blob/master/src/clj/clojure/core.clj" rel="noreferrer" target="_blank">Clojure core library sources</a>.</p>
  <p>The code snippets shown throughout the article are <a href="https://github.com/eliben/code-for-blog/tree/master/2017/reducers-transducers-async" rel="noreferrer" target="_blank">available on Github</a>.</p>


checksum: 675d335d
status: read
url: https://github.com/gilbertchen/duplicacy
title: Duplicacy: Lock-free deduplication cloud backup tool, with “fair source” license
author: gilbertchen
language: en
content:
  <h3> README.md</h3>

  <p>Duplicacy is a new generation cross-platform cloud backup tool based on the idea of <a href="https://github.com/gilbertchen/duplicacy-cli/blob/master/DESIGN.md" rel="noreferrer" target="_blank">Lock-Free Deduplication</a>. It is the only cloud backup tool that allows multiple computers to back up to the same storage simultaneously without using any locks (thus readily amenable to various cloud storage services).</p>
  <p>The repository hosts source code, design documents, and binary releases of the command line version. There is also a Duplicacy GUI frontend built for Windows and Mac OS X available from <a href="https://duplicacy.com/" rel="noreferrer" target="_blank">https://duplicacy.com</a>.</p>
  <h2><a href="https://github.com/gilbertchen/duplicacy#features" rel="noreferrer" target="_blank"></a>Features</h2>
  <p>Duplicacy currently supports major cloud storage providers (Amazon S3, Google Cloud Storage, Microsoft Azure, Dropbox, Backblaze, Google Drive, Microsoft OneDrive, and Hubic) and offers all essential features of a modern backup tool:</p>
  <ul><li>Incremental backup: only back up what has been changed</li>
  <li>Full snapshot : although each backup is incremental, it must behave like a full snapshot for easy restore and deletion</li>
  <li>Deduplication: identical files must be stored as one copy (file-level deduplication), and identical parts from different files must be stored as one copy (block-level deduplication)</li>
  <li>Encryption: encrypt not only file contents but also file paths, sizes, times, etc.</li>
  <li>Deletion: every backup can be deleted independently without affecting others</li>
  <li>Concurrent access: multiple clients can back up to the same storage at the same time</li>
  <li>Snapshot migration: all or selected snapshots can be migrated from one storage to another</li>
  </ul><p>The key idea of <strong>Lock-Free Deduplication</strong> can be summarized as follows:</p>
  <ul><li>Use variable-size chunking algorithm to split files into chunks</li>
  <li>Store each chunk in the storage using a file name derived from its hash, and rely on the file system API to manage chunks without using a centralized indexing database</li>
  <li>Apply a <em>two-step fossil collection</em> algorithm to remove chunks that become unreferenced after a backup is deleted</li>
  </ul><p>The <a href="https://github.com/gilbertchen/duplicacy-cli/blob/master/DESIGN.md" rel="noreferrer" target="_blank">design document</a> explains lock-free deduplication in detail.</p>
  <h2><a href="https://github.com/gilbertchen/duplicacy#getting-started" rel="noreferrer" target="_blank"></a>Getting Started</h2>
  <p>Duplicacy is written in Go. You can build the executable by running the following commands:</p>
  <pre><code>git clone https://github.com/gilbertchen/duplicacy.git
  cd duplicacy
  go get ./...
  go build main/duplicacy_main.go
  </code></pre>
  <p>You can also visit the <a href="https://github.com/gilbertchen/duplicacy-cli/releases/latest" rel="noreferrer" target="_blank">releases page</a> to download the version suitable for your platform. Installation is not needed.</p>
  <p>Once you have the Duplicacy executable on your path, you can change to the directory that you want to back up (called <em>repository</em>) and run the <em>init</em> command:</p>
  <pre><code>$ cd path/to/your/repository
  $ duplicacy init mywork sftp://user@192.168.1.100/path/to/storage
  </code></pre>
  <p>This <em>init</em> command connects the repository with the remote storage at 192.168.1.00 via SFTP. It will initialize the remote storage if this has not been done before. It also assigns the snapshot id <em>mywork</em> to the repository. This snapshot id is used to uniquely identify this repository if there are other repositories that also back up to the same storage.</p>
  <p>You can now create snapshots of the repository by invoking the <em>backup</em> command. The first snapshot may take a while depending on the size of the repository and the upload bandwidth. Subsequent snapshots will be much faster, as only new or modified files will be uploaded. Each snapshot is identified by the snapshot id and an increasing revision number starting from 1.</p>

  <pre>$ duplicacy backup -stats</pre>
  <p>Duplicacy provides a set of commands, such as list, check, diff, cat history, to manage snapshots:</p>

  <pre>$ duplicacy list            # List all snapshots
  $ duplicacy check           # Check integrity of snapshots
  $ duplicacy diff            # Compare two snapshots, or the same file in two snapshots
  $ duplicacy cat             # Print a file in a snapshot
  $ duplicacy history         # Show how a file changes over time</pre>
  <p>The <em>restore</em> command rolls back the repository to a previous revision:</p>

  <pre>$ duplicacy restore -r 1</pre>
  <p>The <em>prune</em> command removes snapshots by revisions, or tags, or retention policies:</p>

  <pre>$ duplicacy prune -r 1            # Remove the snapshot with revision number 1
  $ duplicacy prune -t quick        # Remove all snapshots with the tag &#039;quick&#039;
  $ duplicacy prune -keep 1:7       # Keep 1 snapshot per day for snapshots older than 7 days
  $ duplicacy prune -keep 7:30      # Keep 1 snapshot every 7 days for snapshots older than 30 days
  $ duplicacy prune -keep 0:180     # Remove all snapshots older than 180 days</pre>
  <p>The first time the <em>prune</em> command is called, it removes the specified snapshots but keeps all unreferenced chunks as fossils. Since it uses the two-step fossil collection algorithm to clean chunks, you will need to run it again to remove those fossils from the storage:</p>

  <pre>$ duplicacy prune           # Chunks from deleted snapshots will be removed if deletion criteria are met</pre>
  <p>To back up to multiple storages, use the <em>add</em> command to add a new storage. The <em>add</em> command is similar to the <em>init</em> command, except that the first argument is a storage name used to distinguish different storages:</p>

  <pre>$ duplicacy add s3 mywork s3://amazon.com/mybucket/path/to/storage</pre>
  <p>You can back up to any storage by specifying the storage name:</p>

  <pre>$ duplicacy backup -storage s3</pre>
  <p>However, snapshots created this way will be different on different storages, if the repository has been changed during two backup operations. A better approach, is to use the <em>copy</em> command to copy specified snapshots from one storage to another:</p>

  <pre>$ duplicacy copy -r 1 -to s3   # Copy snapshot at revision 1 to the s3 storage
  $ duplicacy copy -to s3        # Copy every snapshot to the s3 storage</pre>
  <p>The <a href="https://github.com/gilbertchen/duplicacy-cli/blob/master/GUIDE.md" rel="noreferrer" target="_blank">User Guide</a> contains a complete reference to all commands and other features of Duplicacy.</p>
  <h2><a href="https://github.com/gilbertchen/duplicacy#storages" rel="noreferrer" target="_blank"></a>Storages</h2>
  <p>Duplicacy currently supports local file storage, SFTP, and 5 cloud storage providers.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#local-disk" rel="noreferrer" target="_blank"></a>Local disk</h4>
  <pre><code>Storage URL:  /path/to/storage (on Linux or Mac OS X)
                C:\path\to\storage (on Windows)
  </code></pre>
  <h4><a href="https://github.com/gilbertchen/duplicacy#sftp" rel="noreferrer" target="_blank"></a>SFTP</h4>
  <pre><code>Storage URL:  sftp://username@server/path/to/storage
  </code></pre>
  <p>Login methods include password authentication and public key authentication. Due to a limitation of the underlying Go SSH library, the key pair for public key authentication must be generated without a passphrase. To work with a key that has a passphrase, you can set up SSH agent forwarding which is also supported by Duplicacy.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#dropbox" rel="noreferrer" target="_blank"></a>Dropbox</h4>
  <pre><code>Storage URL:  dropbox://path/to/storage
  </code></pre>
  <p>For Duplicacy to access your Dropbox storage, you must provide an access token that can be obtained in one of two ways:</p>
  <ul><li>
  <p>Create your own app on the <a href="https://www.dropbox.com/developers" rel="noreferrer" target="_blank">Dropbox Developer</a> page, and then generate the <a href="https://blogs.dropbox.com/developers/2014/05/generate-an-access-token-for-your-own-account/" rel="noreferrer" target="_blank">access token</a></p>
  </li>
  <li>
  <p>Or authorize Duplicacy to access its app folder inside your Dropbox (following <a href="https://dl.dropboxusercontent.com/u/95866350/start_dropbox_token.html" rel="noreferrer" target="_blank">this link</a>), and Dropbox will generate the access token (which is not visible to us, as the redirect page showing the token is merely a static html hosted by Dropbox)</p>
  </li>
  </ul><p>Dropbox has two advantages over other cloud providers. First, if you are already a paid user then to use the unused space as the backup storage is basically free. Second, unlike other providers Dropbox does not charge bandwidth or API usage fees.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#amazon-s3" rel="noreferrer" target="_blank"></a>Amazon S3</h4>
  <pre><code>Storage URL:  s3://amazon.com/bucket/path/to/storage (default region is us-east-1)
                s3://region@amazon.com/bucket/path/to/storage (other regions must be specified)
  </code></pre>
  <p>You&#039;ll need to input an access key and a secret key to access your Amazon S3 storage.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#google-cloud-storage" rel="noreferrer" target="_blank"></a>Google Cloud Storage</h4>
  <pre><code>Storage URL:  gcs://bucket/path/to/storage
  </code></pre>
  <p>Starting from version 2.0.0, a new Google Cloud Storage backend is added which is implemented using the <a href="https://godoc.org/cloud.google.com/go/storage" rel="noreferrer" target="_blank">official Google client library</a>. You must first obtain a credential file by <a href="https://duplicacy.com/gcp_start" rel="noreferrer" target="_blank">authorizing</a> Dupliacy to access your Google Cloud Storage account or by <a href="https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts" rel="noreferrer" target="_blank">downloading</a> a service account credential file.</p>
  <p>You can also use the s3 protocol to access Google Cloud Storage. To do this, you must enable the <a href="https://cloud.google.com/storage/docs/migrating#migration-simple" rel="noreferrer" target="_blank">s3 interoperability</a> in your Google Cloud Storage settings and set the storage url as <code>s3://storage.googleapis.com/bucket/path/to/storage</code>.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#microsoft-azure" rel="noreferrer" target="_blank"></a>Microsoft Azure</h4>
  <pre><code>Storage URL:  azure://account/container
  </code></pre>
  <p>You&#039;ll need to input the access key once prompted.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#backblaze" rel="noreferrer" target="_blank"></a>Backblaze</h4>
  <pre><code>Storage URL: b2://bucket
  </code></pre>
  <p>You&#039;ll need to input the account id and application key.</p>
  <p>Backblaze&#039;s B2 storage is not only the least expensive (at 0.5 cent per GB per month), but also the fastest. We have been working closely with their developers to leverage the full potentials provided by the B2 API in order to maximumize the transfer speed.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#google-drive" rel="noreferrer" target="_blank"></a>Google Drive</h4>
  <pre><code>Storage URL: gcd://path/to/storage
  </code></pre>
  <p>To use Google Drive as the storage, you first need to download a token file from <a href="https://duplicacy.com/gcd_start" rel="noreferrer" target="_blank">https://duplicacy.com/gcd_start</a> by authorizing Duplicacy to access your Google Drive, and then enter the path to this token file to Duplicacy when prompted.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#microsoft-onedrive" rel="noreferrer" target="_blank"></a>Microsoft OneDrive</h4>
  <pre><code>Storage URL: one://path/to/storage
  </code></pre>
  <p>To use Microsoft OneDrive as the storage, you first need to download a token file from <a href="https://duplicacy.com/one_start" rel="noreferrer" target="_blank">https://duplicacy.com/one_start</a> by authorizing Duplicacy to access your OneDrive, and then enter the path to this token file to Duplicacy when prompted.</p>
  <h4><a href="https://github.com/gilbertchen/duplicacy#hubic" rel="noreferrer" target="_blank"></a>Hubic</h4>
  <pre><code>Storage URL: hubic://path/to/storage
  </code></pre>
  <p>To use Hubic as the storage, you first need to download a token file from <a href="https://duplicacy.com/hubic_start" rel="noreferrer" target="_blank">https://duplicacy.com/hubic_start</a> by authorizing Duplicacy to access your Hubic drive, and then enter the path to this token file to Duplicacy when prompted.</p>
  <p>Hubic offers the most free space (25GB) of all major cloud providers and there is no bandwidth charge (same as Google Drive and OneDrive), so it may be worth a try.</p>
  <h2><a href="https://github.com/gilbertchen/duplicacy#comparison-with-other-backup-tools" rel="noreferrer" target="_blank"></a>Comparison with Other Backup Tools</h2>
  <p><a href="http://duplicity.nongnu.org/" rel="noreferrer" target="_blank">duplicity</a> works by applying the rsync algorithm (or more specific, the <a href="https://github.com/librsync/librsync" rel="noreferrer" target="_blank">librsync</a> library) to find the differences from previous backups and only then uploading the differences. It is the only existing backup tool with extensive cloud support -- the <a href="http://duplicity.nongnu.org/duplicity.1.html#sect7" rel="noreferrer" target="_blank">long list</a> of storage backends covers almost every cloud provider one can think of. However, duplicity&#039;s biggest flaw lies in its incremental model -- a chain of dependent backups starts with a full backup followed by a number of incremental ones, and ends when another full backup is uploaded. Deleting one backup will render useless all the subsequent backups on the same chain. Periodic full backups are required, in order to make previous backups disposable.</p>
  <p><a href="https://github.com/bup/bup" rel="noreferrer" target="_blank">bup</a> also uses librsync to split files into chunks but save chunks in the git packfile format. It doesn&#039;t support any cloud storage, or deletion of old backups.</p>
  <p><a href="http://obnam.org/" rel="noreferrer" target="_blank">Obnam</a> got the incremental backup model right in the sense that every incremental backup is actually a full snapshot. Although Obnam also splits files into chunks, it does not adopt either the rsync algorithm or the variable-size chunking algorithm. As a result, deletions or insertions of a few bytes will foil the <a href="http://obnam.org/faq/dedup" rel="noreferrer" target="_blank">deduplication</a>. Deletion of old backups is possible, but no cloud storages are supported. Multiple clients can back up to the same storage, but only sequential access is granted by the <a href="http://obnam.org/locking/" rel="noreferrer" target="_blank">locking on-disk data structures</a>. It is unclear if the lack of cloud backends is due to difficulties in porting the locking data structures to cloud storage APIs.</p>
  <p><a href="https://attic-backup.org/" rel="noreferrer" target="_blank">Attic</a> has been acclaimed by some as the <a href="https://www.stavros.io/posts/holy-grail-backups" rel="noreferrer" target="_blank">Holy Grail of backups</a>. It follows the same incremental backup model as Obnam, but embraces the variable-size chunk algorithm for better performance and better deduplication. Deletions of old backup is also supported. However, no cloud backends are implemented, as in Obnam. Although concurrent backups from multiple clients to the same storage is in theory possible by the use of locking, it is <a href="http://librelist.com/browser//attic/2014/11/11/backing-up-multiple-servers-into-a-single-repository/#e96345aa5a3469a87786675d65da492b" rel="noreferrer" target="_blank">not recommended</a> by the developer due to chunk indices being kept in a local cache. Concurrent access is not only a convenience; it is a necessity for better deduplication. For instance, if multiple machines with the same OS installed can back up their entire drives to the same storage, only one copy of the system files needs to be stored, greatly reducing the storage space regardless of the number of machines. Attic still adopts the traditional approach of using a centralized indexing database to manage chunks, and relies heavily on caching to improve performance. The presence of exclusive locking makes it hard to be adapted for cloud storage APIs and reduces the level of deduplication.</p>
  <p><a href="https://restic.github.io/" rel="noreferrer" target="_blank">restic</a> is a more recent addition. It is worth mentioning here because, like Duplicacy, it is written in Go. It uses a format similar to the git packfile format, but not exactly the same. Multiple clients backing up to the same storage are still guarded by <a href="https://github.com/restic/restic/blob/master/doc/Design.md#locks" rel="noreferrer" target="_blank">locks</a>. A command to delete old backups is in the developer&#039;s <a href="https://github.com/restic/restic/issues/18" rel="noreferrer" target="_blank">plan</a>. S3 storage is supported, although it is unclear how hard it is to support other cloud storage APIs because of the need for locking. Overall, it still falls in the same category as Attic. Whether it will eventually reach the same level as Attic remains to be seen.</p>
  <p>The following table compares the feature lists of all these backup tools:</p>
  <table><thead><tr><th>Feature/Tool</th>
  <th>duplicity</th>
  <th>bup</th>
  <th>Obnam</th>
  <th>Attic</th>
  <th>restic</th>
  <th><strong>Duplicacy</strong></th>
  </tr></thead><tbody><tr><td>Incremental Backup</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td><strong>Yes</strong></td>
  </tr><tr><td>Full Snapshot</td>
  <td>No</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td><strong>Yes</strong></td>
  </tr><tr><td>Deduplication</td>
  <td>Weak</td>
  <td>Yes</td>
  <td>Weak</td>
  <td>Yes</td>
  <td>Yes</td>
  <td><strong>Yes</strong></td>
  </tr><tr><td>Encryption</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>Yes</td>
  <td><strong>Yes</strong></td>
  </tr><tr><td>Deletion</td>
  <td>No</td>
  <td>No</td>
  <td>Yes</td>
  <td>Yes</td>
  <td>No</td>
  <td><strong>Yes</strong></td>
  </tr><tr><td>Concurrent Access</td>
  <td>No</td>
  <td>No</td>
  <td>Exclusive locking</td>
  <td>Not recommended</td>
  <td>Exclusive locking</td>
  <td><strong>Lock-free</strong></td>
  </tr><tr><td>Cloud Support</td>
  <td>Extensive</td>
  <td>No</td>
  <td>No</td>
  <td>No</td>
  <td>S3 only</td>
  <td><strong>S3, GCS, Azure, Dropbox, Backblaze, Google Drive, OneDrive, and Hubic</strong></td>
  </tr><tr><td>Snapshot Migration</td>
  <td>No</td>
  <td>No</td>
  <td>No</td>
  <td>No</td>
  <td>No</td>
  <td><strong>Yes</strong></td>
  </tr></tbody></table><h2><a href="https://github.com/gilbertchen/duplicacy#license" rel="noreferrer" target="_blank"></a>License</h2>
  <p>Duplicacy CLI is released under the <a href="https://fair.io/" rel="noreferrer" target="_blank">Fair Source 5 License</a>, which means it is free for individual users or any company or organization with less than 5 users. If your company or organization has 5 or more users, then a license for the actual number of users must be purchased from <a href="https://duplicacy.com/customer" rel="noreferrer" target="_blank">duplicacy.com</a>.</p>
  <p>A user is defined as the owner of any files to be backed up by Duplicacy. If you are an IT administrator who uses Duplicacy to back up files for your colleagues, then each colleague will be counted in the user limit permitted by the license.</p>


checksum: ef1d84d3
status: unread
url: https://www.facebook.com/marilee.talkington/posts/10155051385188961
title: “Let her speak please”
content:
  <p>[unable to retrieve full-text content]<a href="https://news.ycombinator.com/item?id=14505073" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 1da70641
status: unread
url: https://blog.mozilla.org/opendesign/future-mdn-focus-web-docs/
title: The future of MDN: a focus on web docs
author: Kadir Topal
language: en-US
content:
  <p>Building MDN into a world class repository of high quality Web documentation is one of the most valuable things Mozilla has done for Web developers. Now we’re looking to double-down on that work, and solidify MDN as the single best resource for Web docs. To support that effort, we’re starting some updates to the MDN brand and website. In this post I’m going to lay out what to expect, and why we think it’s so important.</p>
  <p>MDN’s mission today is to provide developers with the information they need to build things on the open Web. However, <a href="https://developer.mozilla.org/en-US/docs/MDN_at_ten/History_of_MDN" rel="noreferrer" target="_blank">when MDN was first started</a>, it didn’t differentiate between Web standards documentation and product documentation for Firefox, Gecko and other Mozilla products. Over time, as Web documentation was expanded on MDN, it became clear that it provided value to a much larger group of developers than our internal product documentation. We have been investing to improve the Web documentation ever since.</p>
  <h3>Changing the Name</h3>
  <p>MDN is clearly a web documentation reference, and in no way is it a developer network. We want the name to clearly reflect the purpose and mission of MDN, and so we’re going to be updating it to: MDN Web Docs.</p>
  <p>“Mozilla Developer Network” simply isn’t accurate. Furthermore, pretty much no one refers to MDN as “Mozilla Developer Network.” It’s always “MDN.” However, there is a lot of love for the name “MDN” and we don’t want to get rid of all of that, which is why we’re giving it the <a href="https://en.wikipedia.org/wiki/IBM" rel="noreferrer" target="_blank">IBM</a> / <a href="https://en.wikipedia.org/wiki/KFC" rel="noreferrer" target="_blank">KFC</a> treatment and keeping the iconic abbreviation and commonly used name, while no longer using the words that the acronym used to stand for. We’re not getting rid of MDN, we’re being clear about what it is – it’s MDN Web Docs.</p>
  <p>We’re already working on what the MDN Web Docs logo will look like when rendered in the system of the new Mozilla brand, and here’s an early look:</p>
  <p><img src="http://ffp4g1ylyit3jdyti1hqcvtb-wpengine.netdna-ssl.com/opendesign/files/2017/06/logo-300x77.png" alt=""/></p>

  <h3>Separating Product Documentation</h3>
  <p>Currently the home page of MDN has links to both web documentation and product documentation (like Firefox, Developer Tools, Add-ons and more), but about 95% of traffic goes to the Web documentation. Additionally, many searches can be confusing because a Web developer looking for something about CSS may end up on a page about XUL, for example <a href="https://duckduckgo.com/?q=mdn+grid&amp;t=hy&amp;ia=about" rel="noreferrer" target="_blank">CSS Grid vs XUL Grid</a>, and ultimately can’t find the thing they were looking for. We will be splitting out the navigation for the product documentation so that MDN can be fully dedicated to helping people find the Web docs they need. We will also be investigating ways to ensure that search results direct users to exactly what they were looking for without confusing Web and product documentation.</p>
  <h3>Site Design Refresh</h3>
  <p>Along with a brand identity refresh, we’ll also be refreshing the site design. You will be able to see as pieces of this get completed, and you can also give feedback as we work over the coming weeks by <a href="https://developer.mozilla.org/en-US/docs/MDN/Contribute/Howto/Be_a_beta_tester" rel="noreferrer" target="_blank">becoming a beta tester</a> on MDN. We’ll also follow up with future articles once there is some work to share about the new look of the site.</p>
  <h3>More Content and Features To Help Web Devs</h3>
  <p>Lastly, but most importantly, we will be working to add more content and features to help Web developers. We’ve already started a couple of experiments like putting examples at the top of the article, and looking at including editable code snippets within the articles. Research has told us that our documentation is excellent and thorough, but often Web developers are looking for quick examples before having to read through extensive articles. Doing more to help developers find faster and more efficient ways to learn from the documentation is a critical area where we hope to improve, and you can expect to see more experiments like this. If you have other ideas about ways that our documentation could be more valuable or easier to use, <a href="https://discourse.mozilla-community.org/c/mdn" rel="noreferrer" target="_blank">we’re open to hearing more ideas</a>!<br/>We’re incredibly excited to make MDN officially about Web docs, and to make it more comprehensive and easier to use and learn from for all of the web developers who have come to love it as a resource.</p>


checksum: dd316109
status: unread
url: http://duartes.org/gustavo/blog/post/intel-cpu-caches/
title: Cache Organization in Intel CPUs (2009)
language: en
content:
  <p>This post shows briefly how CPU caches are organized in modern Intel processors. Cache discussions often lack concrete examples, obfuscating the simple concepts involved. Or maybe my pretty little head is slow. At any rate, here’s half the story on how a Core 2 L1 cache is accessed:</p>
  <p><img src="http://static.duartes.org/img/blogPosts/L1CacheExample.png" alt="Selecting an L1 cache set (row)"/></p>
  <p>The unit of data in the cache is the <strong>line</strong>, which is just a contiguous chunk of bytes in memory. This cache uses 64-byte lines. The lines are stored in cache banks or <strong>ways</strong>, and each way has a dedicated <strong>directory</strong> to store its housekeeping information. You can imagine each way and its directory as columns in a spreadsheet, in which case the rows are the <em>sets</em>. Then each cell in the way column contains a cache line, tracked by the corresponding cell in the directory. This particular cache has 64 sets and 8 ways, hence 512 cells to store cache lines, which adds up to 32KB of space.</p>
  <p>In this cache’s view of the world, physical memory is divided into 4KB physical pages. Each page has <a href="http://www.google.com/search?hl=en&amp;q=(4KB+/+64+bytes)" rel="noreferrer" target="_blank">4KB / 64 bytes</a> == 64 cache lines in it. When you look at a 4KB page, bytes 0 through 63 within that page are in the first cache line, bytes 64-127 in the second cache line, and so on. The pattern repeats for each page, so the 3rd line in page 0 is different than the 3rd line in page 1.</p>
  <p>In a <strong>fully associative cache</strong> any line in memory can be stored in any of the cache cells. This makes storage flexible, but it becomes expensive to search for cells when accessing them. Since the L1 and L2 caches operate under tight constraints of power consumption, physical space, and speed, a fully associative cache is not a good trade off in most scenarios.</p>
  <p>Instead, this cache is <strong>set associative</strong>, which means that a given line in memory can only be stored in one specific set (or row) shown above. So the first line of <em>any physical page</em> (bytes 0-63 within a page) <strong>must</strong> be stored in row 0, the second line in row 1, etc. Each row has 8 cells available to store the cache lines it is associated with, making this an 8-way associative set. When looking at a memory address, bits 11-6 determine the line number within the 4KB page and therefore the set to be used. For example, physical address 0x800010a0 has <a href="http://www.google.com/search?q=0x800010a0%20in%20binary" rel="noreferrer" target="_blank">000010</a> in those bits so it must be stored in set 2.</p>
  <p>But we still have the problem of finding <em>which</em> cell in the row holds the data, if any. That’s where the directory comes in. Each cached line is <em>tagged</em> by its corresponding directory cell; the tag is simply the number for the page where the line came from. The processor can address 64GB of physical RAM, so there are <a href="http://www.google.com/search?hl=en&amp;q=lg(64GB+/+4KB)" rel="noreferrer" target="_blank">64GB / 4KB</a> == 2<sup>24</sup> of these pages and thus we need 24 bits for our tag. Our example physical address 0x800010a0 corresponds to page number <a href="http://www.google.com/search?hl=en&amp;q=0x800010a0+Bytes+/+4KB" rel="noreferrer" target="_blank">524,289</a>. Here’s the second half of the story:</p>
  <p><img src="http://static.duartes.org/img/blogPosts/selectingCacheLine.png" alt="Finding cache line by matching tags"/></p>
  <p>Since we only need to look in one set of 8 ways, the tag matching is very fast; in fact, electrically all tags are compared simultaneously, which I tried to show with the arrows. If there’s a valid cache line with a matching tag, we have a cache hit. Otherwise, the request is forwarded to the L2 cache, and failing that to main system memory. Intel builds large L2 caches by playing with the size and quantity of the ways, but the design is the same. For example, you could turn this into a 64KB cache by adding 8 more ways. Then increase the number of sets to 4096 and each way can store <a href="http://www.google.com/search?hl=en&amp;q=64+Bytes+*+4096" rel="noreferrer" target="_blank">256KB</a>. These two modifications would deliver a 4MB L2 cache. In this scenario, you’d need 18 bits for the tags and 12 for the set index; the physical page size used by the cache is equal to its way size.</p>
  <p>If a set fills up, then a cache line must be evicted before another one can be stored. To avoid this, performance-sensitive programs try to organize their data so that memory accesses are evenly spread among cache lines. For example, suppose a program has an array of 512-byte objects such that some objects are 4KB apart in memory. Fields in these objects fall into the same lines and compete for the same cache set. If the program frequently accesses a given field (<em>e.g.</em>, the <a href="http://en.wikipedia.org/wiki/Vtable" rel="noreferrer" target="_blank">vtable</a> by calling a virtual method), the set will likely fill up and the cache will start trashing as lines are repeatedly evicted and later reloaded. Our example L1 cache can only hold the vtables for 8 of these objects due to set size. This is the cost of the set associativity trade-off: we can get cache misses due to set conflicts even when overall cache usage is not heavy. However, due to the <a href="http://duartes.org/gustavo/blog/what-your-computer-does-while-you-wait" rel="noreferrer" target="_blank">relative speeds</a> in a computer, most apps don’t need to worry about this anyway.</p>
  <p>A memory access usually starts with a linear (virtual) address, so the L1 cache relies on the paging unit to obtain the physical page address used for the cache tags. By contrast, the set index comes from the least significant bits of the linear address and is used without translation (bits 11-6 in our example). Hence the L1 cache is <strong>physically tagged</strong> but <strong>virtually indexed</strong>, helping the CPU to parallelize lookup operations. Because the L1 way is never bigger than an MMU page, a given physical memory location is guaranteed to be associated with the same set even with virtual indexing. L2 caches, on the other hand, must be physically tagged and physically indexed because their way size can be bigger than MMU pages. But then again, by the time a request gets to the L2 cache the physical address was already resolved by the L1 cache, so it works out nicely.</p>
  <p>Finally, a directory cell also stores the <em>state</em> of its corresponding cached line. A line in the L1 code cache is either Invalid or Shared (which means valid, really). In the L1 data cache and the L2 cache, a line can be in any of the 4 MESI states: Modified, Exclusive, Shared, or Invalid. Intel caches are <strong>inclusive</strong>: the contents of the L1 cache are duplicated in the L2 cache. These states will play a part in later posts about threading, locking, and that kind of stuff. Next time we’ll look at the front side bus and how memory access <em>really</em> works. This is going to be memory week.</p>
  <p><strong>Update</strong>: <a href="http://www.findinglisp.com/blog/" rel="noreferrer" target="_blank">Dave</a> brought up direct-mapped caches in a <a href="http://duartes.org/gustavo/blog/post/intel-cpu-caches#comment-12687" rel="noreferrer" target="_blank">comment below</a>. They’re basically a special case of set-associative caches that have only one way. In the trade-off spectrum, they’re the opposite of fully associative caches: blazing fast access, lots of conflict misses.</p>
  <p><a href="http://duartes.org/gustavo/blog/comments/cache.html" rel="noreferrer" target="_blank">26 Comments</a></p>


checksum: 35fa536a
status: unread
url: https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/
title: Set up a malware analysis lab with VirtualBox, INetSim and Burp
language: en-US
content:
  In this post we will set up a <strong>virtual lab for malware analysis</strong>. We’ll create an <strong>isolated virtual network</strong> separated from the host OS and from the Internet, in which we’ll setup two victim virtual machines (Ubuntu and Windows 7) as well as an analysis server to mimic common Internet services like HTTP or DNS. Then, we’ll be able to log and analyze the network communications of any Linux or Windows malware, which will unknowingly connect to our server instead of the Internet. We demonstrate the setup with a real life use case where we analyze the traffic of the infamous <a href="https://en.wikipedia.org/wiki/TeslaCrypt" rel="noreferrer" target="_blank">TeslaCrypt ransomware</a>, a now defunct ransomware which infected a large number of systems from 2015 to mid-2016.<br/><figure><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/malwarenet4.png" alt=""/><figcaption>Diagram of our future setup. Note that the machines in the virtual network will be isolated from the host OS and will <strong>not</strong> be able to connect to the Internet.</figcaption></figure>


  This guide includes quite a lot of material, so here’s a table of contents to give you an overview of what we’ll cover and let you jump directly to a section if you’d like.



  <ol><li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#virtual_machines" rel="noreferrer" target="_blank">Creating the virtual machines</a></strong></li>
  <li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#analysis_machine" rel="noreferrer" target="_blank">Setup of the analysis machine: INetSim, Burp</a></strong></li>
  <li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#virtual_network" rel="noreferrer" target="_blank">Creating an isolated virtual network</a></strong></li>
  <li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#snapshots" rel="noreferrer" target="_blank">Creating and restoring snapshots</a></strong></li>
  <li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#inetsim_burp" rel="noreferrer" target="_blank">Using INetSim and Burp on the analysis machine to analyze the network traffic</a></strong></li>
  <li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#shared_folder" rel="noreferrer" target="_blank">Setting up a shared folder between the analysis machine and the host OS</a></strong></li>
  <li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#demo" rel="noreferrer" target="_blank">Demo time: the TeslaCrypt ransomware</a></strong></li>
  <li><strong><a href="https://blog.christophetd.fr/set-up-your-own-malware-analysis-lab-with-virtualbox-inetsim-and-burp/#conclusion" rel="noreferrer" target="_blank">Conclusion</a></strong></li>
  </ol>
  <h2>1. Creating the virtual machines</h2>
  <p>Here are two links you can use to download Ubuntu and Windows 7 virtual machine images.</p>
  <ul><li><strong>Ubuntu</strong> (victim machine 1 and analysis machine): download  Ubuntu 16.10 64 bits from <a href="https://www.osboxes.org/ubuntu/" rel="noreferrer" target="_blank">OsBoxes</a> (<strong><a href="https://drive.google.com/file/d/0B_HAFnYs6Ur-TVdfcHBrUVRWQk0/view?usp=sharing" rel="noreferrer" target="_blank">direct link</a></strong>)</li>
  <li><strong>Windows 7</strong> (victim machine 2): download from the <a href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/" rel="noreferrer" target="_blank">Microsoft Developer Website</a> (select <strong><em>IE 11 on Win 7 (x86)</em></strong> and <strong><em>VirtualBox</em></strong>)</li>
  </ul><p>Tip: if you already have an Ubuntu virtual machine you’re not using, you can simply clone it and reuse it in the next steps (right click &gt; <strong><em>Clone</em></strong>).</p>
  <p>Before starting, make sure you have enough disk space available (I’d recommend at least 10-20 GB).</p>
  <h3>Base Ubuntu machine</h3>
  <p>OsBoxes provides us with a ready-to-go virtual disk that we can simply plug on a VM and start using right away. Start by extracting the archive you just downloaded.</p>
  <pre>$ 7za e Ubuntu_16.10_Yakkety-VB-64bit.7z</pre>
  <p>You’ll be provided with a VDI file representing the virtual disk of the machine. We’ll start by setting up the base Ubuntu image, which we will then clone to have our two Ubuntu VMs.</p>
  <p>In VirtualBox, create a new machine (<strong>New</strong> button), and call it <strong>Ubuntu </strong><strong>analysis</strong>. Then, select how much RAM you want to give it. At this point, VirtualBox will ask you if you wish to create a new virtual hard disk or use an already exiting one. Select <strong>Use an existing virtual hard disk file</strong>, click on the directory icon at the right of the dropdown list, and select the VDI file.</p>
  <p>You can then power up the machine. The default password is <strong>osboxes.org</strong>.</p>
  <h4>Basic setup</h4>
  <p>The default keyboard uses the QWERTY layout. If like me you’re not familiar with it, start by changing it (<strong>Settings &gt; Text Entry</strong>).</p>
  <p>Optionally, you can also change the default password using:</p>
  <pre>$ passwd osboxes</pre>
  <p>It can also be a good idea to update your packages.</p>
  <pre>$ sudo apt-get update
  $ sudo apt-get upgrade</pre>
  <h4>Install the guest additions</h4>
  <p>Select <strong>Devices &gt; Insert guest additions CD image</strong> in the menu of the window in which the VM runs. You will then be asked if you want to run the installer; answer yes, and enter the default password (by default <strong>osboxes.org</strong>). Once the installation is complete, power off the VM.</p>
  <h4>Cloning</h4>
  <p>Now that you have a basic Ubuntu VM ready to go, clone it (right click on it in the main VirtualBox interface &gt; <strong>Clone</strong>). Name the clone <strong>Ubuntu victim<em>,</em> </strong>and check the checkbox to reinitialize its MAC address. Select <strong>Full clone</strong> for the type of clone.</p>
  <figure><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/vms.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/vms.png" alt=""/></a>
  <figcaption>The two Ubuntu VMs created</figcaption></figure><h3>Windows 7 machine</h3>
  <p>The download link I provided earlier points to a ZIP archive containing a OVA file. Unlike a VDI file it’s not only a virtual disk, but a full description of the virtual machine (including its virtual disk), so the only thing you need to do to create a virtual machine from it is to select <strong>File &gt; Import Appliance</strong> in the main window of VirtualBox. If you can afford it, it’s probably better to give it at least 1024 MB of RAM.</p>
  <p>Once the import process is complete (it can take a few minutes),  rename the VM <strong>Windows 7 victim</strong> and power it on.</p>
  <h4>Install the guest additions</h4>
  <p>Select <strong>Devices &gt; Insert guest additions CD image</strong> in the menu of the window in which the VM runs, and run the installer from the virtual CD which has been inserted. When you’re done, power off the machine.</p>
  <h2>2. Setup of the analysis machine: INetSim, Burp</h2>
  <h3>INetSim</h3>
  <p><a href="http://www.inetsim.org/index.html" rel="noreferrer" target="_blank">INetSim</a> is a very handy and powerful utility that allows to simulate a bunch of standard Internet services on a machine. By default, it will among others emulate a DNS, HTTP and SMTP that you can easily tune. Since we’ll later configure our victim machines to have no Internet access, we will need INetSim to simulate it.</p>
  <p>There are <a href="http://www.inetsim.org/downloads.html" rel="noreferrer" target="_blank">several ways</a> to install INetSim. The easiest is to run the following commands (in the analysis machine).</p>
  <pre>$ sudo su
  $ echo &quot;deb http://www.inetsim.org/debian/ binary/&quot; &gt; /etc/apt/sources.list.d/inetsim.list
  $ wget -O - http://www.inetsim.org/inetsim-archive-signing-key.asc | apt-key add -
  $ apt update
  $ apt install inetsim</pre>
  <p>Note: in order to be able to copy-paste those commands in your analysis machine, select <strong>Devices &gt; Shared Clipboard &gt; Bidirectional.</strong></p>
  <p>We’ll come back later on how to use INetSim.</p>
  <h3>Burp</h3>
  <p>Unfortunately, it seems that INetSim’s SSL support is quite limited: it comes with a certificate for a single host (<em>inetsim.org</em>) and doesn’t support generating SSL certificates on the fly. This is a problem since most malwares nowadays encrypt their communications with SSL. We’ll use Burp as a transparent SSL proxy, which will stand in the middle of the victim machines and INetSim for SSL connections. If you don’t need to intercept SSL traffic for now, you won’t necessarily need Burp.</p>
  <p>Burp supports generating on-the-fly SSL certificates for any our victim machines will connect to. It also creates a single root CA certificate, that we’ll later import in our victim machines. This way, we’ll be able to intercept the encrypted communications that our malware sends.</p>
  <p>You can download Burp from <a href="https://portswigger.net/burp/freedownload/" rel="noreferrer" target="_blank">the official website</a>. The download is a bash installation script, run it to install Burp:</p>
  <pre>$ bash ~/Downloads/burpsuite_free_linux_v1_7_23.sh</pre>
  <p>By default, the Burp executable will be <em>~/BurpSuiteFree/BurpSuiteFree</em>.</p>
  <h2>3. Setting up an isolated virtual network</h2>
  <p>As a reminder, we want to set up an isolated network containing our three VMs. This network will not be able to access the Internet. Also, we want the analysis machine to act as a network gateway to the victim machines in order to easily be able to intercept the network traffic and to simulate various services such as DNS or HTTP.</p>
  <p>In order to achieve this, we will use a VirtualBox <em>Internal Network</em>. For those familiar with VirtualBox, an internal network differs from a <em>host-only network</em> in that an internal network cannot access the host machine at all.</p>
  <p>For each of your three virtual machines, do the following:</p>
  <ul><li>Open its settings</li>
  <li>Go to the <strong>Network</strong> section</li>
  <li>Change the <strong>Attached to</strong> field to <strong>Internal network</strong></li>
  <li>Enter <strong>malware-analysis-network</strong> as the network name</li>
  </ul><figure><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/net.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/net.png" alt=""/></a>
  <figcaption>Network configuration</figcaption></figure>
  <h3>Analysis machine</h3>
  <p>Power on the analysis machine, open a terminal, and run the <strong>ifconfig</strong> command. You should have an interface named <strong>enp0s3.</strong> If the name differs, just adapt it in the instructions to follow.</p>
  <p>Open the file <strong>/etc/network/interfaces</strong> as root, and add the following at the end:</p>
  <pre>auto enp0s3
  iface enp0s3 inet static
   address 10.0.0.1
   netmask 255.255.255.0</pre>
  <p>This will assign the machine the static IP <strong>10.0.0.1</strong> on our virtual network. Now that we have configured the network interface, we need to start it up using:</p>
  <pre>$ sudo ifup enp0s3</pre>
  <h3>Ubuntu victim machine</h3>
  <p>The process is very similar here, except that we’ll assign it the static IP <strong>10.0.0.2</strong>, and instruct it to use <strong>10.0.0.1</strong> as a gateway and as a DNS server. Append the following at the end of the file <strong>/etc/network/interfaces</strong> :</p>
  <pre>auto enp0s3
  iface enp0s3 inet static
   address 10.0.0.2
   gateway 10.0.0.1
   netmask 255.255.255.0
   dns-nameservers 10.0.0.1</pre>
  <p>And run:</p>
  <pre>$ sudo ifup enp0s3
  $ sudo service networking restart</pre>
  <p>You should now be able to ping the analysis machine:</p>
  <pre>$ ping 10.0.0.1
  PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
  64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.480 ms
  64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.526 ms</pre>
  <h3>Windows 7 victim machine</h3>
  <p>Right-click on the network icon in the taskbar (or go to <strong>Start Menu &gt; Control Panel &gt; Network and Internet &gt; Network and Sharing center</strong>), click on <strong>Local Area Connection 2 &gt; Properties</strong>, select on <strong>Internet Protocol Version 4</strong>, and click on the <strong>Properties</strong> button.</p>
  <p>We’ll assign the static IP <strong>10.0.0.3</strong> to the machine, and configure the rest similarly to the Ubuntu victim machine.</p>
  <figure><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/netsettings.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/netsettings.png" alt=""/></a>
  <figcaption>Network settings</figcaption></figure><p>Make sure to validate the settings (click on <strong>OK, Apply</strong>, etc. until all the settings windows are gone). You should now be able to ping the analysis machine:</p>
  <pre>&gt; ping 10.0.0.1

  Pinging 10.0.0.1 with 32 bytes of data:
  Reply from 10.0.0.1: bytes=32 time&lt;1ms TTL=64
  Reply from 10.0.0.1: bytes=32 time&lt;1ms TTL=64</pre>
  <p>All set!</p>
  <h2>4. Creating and restoring snapshots</h2>
  <p>Now that our victim VMs are properly configured and are in a clean state (i.e. not infected by any kind of malware), we are going to make a snapshot of their current state. This way, we will be able to easily reset them to this clean state at any point time.</p>
  <p>VirtualBox makes this very easy: in the window in which the VM is running, just select <strong>Machine &gt; Take Snapshot. </strong>You can name the snapshot <strong>Clean state. </strong>Make sure to do this for both your Ubuntu and Windows 7 victim machines. It doesn’t hurt to do it for your analysis machine as well.</p>
  <p>When you’ll want to reset a machine to its clean state, simply power it off and check the checkbox <strong>Restore current snapshot ‘Clean state’</strong>.</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/snap.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/snap.png" alt=""/></a></p>

  <h2>5. Using INetSim and Burp on the analysis machine to analyze the network traffic</h2>
  <h3>INetSim</h3>
  <p>As previously mentioned, INetSim enables us to wide range of standard Internet services including DNS, HTTP(S), SMTP, etc. It has a default configuration file <strong>/etc/inetsim/inetsim.conf</strong> which is very well documented. It also ships with a data directory (<strong>/var/lib/inetsim</strong>) containing various default files.</p>
  <p>Since you’ll probably want a different INetSim configuration each time you make a new analysis, I suggest you create a directory <strong>analysis</strong> which will contain a sub directory for each analysis.</p>
  <pre>$ mkdir analysis</pre>
  <p>We’ll already create a sub directory for the sake of example, and copy the default INetSim configuration file and data folder in it.</p>
  <pre>$ mkdir analysis/test-analysis
  $ cp /etc/inetsim/inetsim.conf analysis/test-analysis
  $ sudo cp -r /var/lib/inetsim analysis/test-analysis/data
  $ sudo chmod -R 777 data
  $ cd analysis/test-analysis</pre>
  <p>By default, INetSim listens on the local interface only. To make it available to all the machines of our virtual network, replace the following line in the configuration file we just copied:</p>
  <pre>#service_bind_address   10.0.0.1</pre>
  <p>By:</p>
  <pre>service_bind_address    0.0.0.0</pre>
  <p>Now, we need to disable systemd-resolved, which is a local DNS server shipped by default with Ubuntu and will conflict with INetSim’s DNS server.</p>
  <pre>$ sudo systemctl disable systemd-resolved.service
  $ sudo service systemd-resolved.service stop</pre>
  <p>By default, INetSim’s DNS server will resolve all the domain names to 127.0.0.1. We want any domain name to resolve to 10.0.0.1 (the analysis machine IP) instead; uncomment the following line:</p>
  <pre>#dns_default_ip    10.0.0.1</pre>
  <p>I mentioned earlier that INetSim’s SSL support is not optimal since it only has a single certificate for a single hostname (<em>inetsim.org</em>) and doesn’t allow to generate per-host certificates on the fly. To overcome that, we’ll run Burp on port 443 as a transparent proxy in front of INetSim. Therefore, we need to bind INetSim’s HTTPS server to a different port, say port 8443. Replace the following line:</p>
  <pre>#https_bind_port 443</pre>
  <p>By:</p>
  <pre>https_bind_port 8443</pre>
  <p>Now, let’s run INetSim!</p>
  <pre>$ sudo inetsim --data data --conf inetsim.conf
  INetSim 1.2.6 (2016-08-29) by Matthias Eckert &amp; Thomas Hungenberg
  [...]
  === INetSim main process started (PID 3605) ===
  Session ID: 3605
  Listening on: 0.0.0.0
  Real Date/Time: 2017-06-04 12:58:07
  Fake Date/Time: 2017-06-04 12:58:07 (Delta: 0 seconds)
   Forking services...
   * dns_53_tcp_udp - started (PID 3621)
   * irc_6667_tcp - started (PID 3631)
   * daytime_13_tcp - started (PID 3638)
   * discard_9_tcp - started (PID 3642)
   * discard_9_udp - started (PID 3643)
   * ident_113_tcp - started (PID 3634)
   * syslog_514_udp - started (PID 3635)
  [...]</pre>
  <p>As you can see, INetSim has launched a bunch of network services. Those are all configurable and can be disabled in the configuration file. This configuration file is very well documented and explains all the options of INetSim; I recommend you take a few minutes to read it.</p>
  <p>Now, power on of your victim VM, open a web browser, and browse to any address (e.g. github.com).  You should see the following:</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/vm7.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/vm7-1024x818.png" alt=""/></a></p>
  <p><em>(Note that this default file corresponds to the HTML file <strong>data/http/fakefiles/sample.html</strong>.)</em></p>
  <p>Back on the analysis machine, shut down INetSim (CTRL + C).</p>
  <pre>* dns_53_tcp_udp - stopped (PID 3621)
  * irc_6667_tcp - stopped (PID 3631)
  * daytime_13_tcp - stopped (PID 3638)
  [...]
  Simulation stopped.
   Report written to &#039;/var/log/inetsim/report/report.3877.txt&#039; (24 lines)</pre>
  <p>As you can see, INetSim has created a summary report for us. It contains all the interactions our victim machine had with INetSim services.</p>
  <pre>=== Report for session &#039;3877&#039; ===

  Real start date : 2017-06-04 13:18:27
  Simulated start date : 2017-06-04 13:18:27
  Time difference on startup : none

  2017-06-04 13:18:38 First simulated date in log file
  2017-06-04 13:18:40<strong> DNS connection, type: A, class: IN, requested name: github.com</strong>
  2017-06-04 13:18:40<strong> HTTP connection, method: GET, URL: http://github.com/</strong>, file name: data/http/fakefiles/sample.html
  2017-06-04 13:18:40 HTTP connection, method: GET, URL: http://github.com/favicon.ico, file name: data/http/fakefiles/sample.html
  2017-06-04 13:18:40 Last simulated date in log file</pre>
  <h3>Burp for SSL interception</h3>
  <p>To be able to analyze the SSL traffic, we also need to run Burp. We’ll run it as a transparent proxy in front of INetSim. When a victim machine will initiate a SSL connection, it will first go to Burp, which will then proxy it to INetSim. <em>This section is not mandatory: if you don’t need to intercept SSL traffic right now, just jump to the next section.</em></p>
  <p>Here’s how it will look like with Burp in the middle:</p>
  <p><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/ssl-network.png" alt=""/></p>
  <p>Start Burp as root:</p>
  <pre>$ sudo /home/osboxes/BurpSuiteFree/BurpSuiteFree</pre>
  <p>(We need to run it as root otherwise it won’t be able to bind port 443, which is a privileged port. There are other ways to do this, but let’s not bother here)</p>
  <p>Create a temporary project (you don’t have any other options with the free version anyway), and go to the <strong>Proxy</strong> tab, then to the <strong>Options</strong> sub-tab. You’ll see Burp’s default listener listening on port 8080.</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/burp.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/burp-e1496650665932.png" alt=""/></a></p>

  <p>Click on the row corresponding to the default listener, and edit it (<strong>Edit</strong>) button. Configure it as follows:</p>
  <ul><li><strong>Binding</strong> tab
  <ul><li>Bind to port: <em>443</em></li>
  <li>Bind to address: <em>all interfaces</em></li>
  </ul></li>
  <li><strong>Request handling</strong> tab:
  <ul><li>Redirect to host: <em>localhost</em></li>
  <li>Redirect to port: 8443</li>
  <li>Check <em>Support invisible proxying</em></li>
  </ul></li>
  </ul><p>Validate the settings, and you should get a listener similar to:</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/burp2.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/burp2.png" alt=""/></a></p>

  <p>By default, Burp intercepts the incoming requests and waits for you to explicitly let them pass through. To avoid this, go to the <strong>Intercept</strong> tab and click the button <strong>Intercept is on</strong> to disable it.</p>
  <p>Since Burp Free doesn’t allow you to save a project, you can export the settings we just made in order to import them next time you start Burp. To do this, use <strong>Burp &gt; Project options &gt; Save project options</strong>.</p>
  <p>Let’s make sure our setup if correctly working. Start INetSim, and run:</p>
  <pre>$ curl --insecure https://localhost</pre>
  <p>You should get:</p>
  <pre>&lt;html&gt;
   &lt;head&gt;
   &lt;title&gt;INetSim default HTML page&lt;/title&gt;
   &lt;/head&gt;
   &lt;body&gt;
   &lt;p&gt;&lt;/p&gt;
   &lt;p align=&quot;center&quot;&gt;This is the default HTML page for INetSim HTTP server fake mode.&lt;/p&gt;
   &lt;p align=&quot;center&quot;&gt;This file is an HTML document.&lt;/p&gt;
   &lt;/body&gt;
  &lt;/html&gt;</pre>
  <h4>Importing Burp’s CA certificate on our victim machines</h4>
  <p>Power on your Windows 7 victim machine, and try to browse to a HTTPS URL (e.g. https://github.com), you’ll see a warning similar to:</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/sslwarn.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/sslwarn.png" alt=""/></a></p>
  <p>This is because Burp generates a SSL certificate signed by its own CA certificate, which our victim machine doesn’t trust for now.</p>
  <p>In Burp, add a new proxy listener on port 8080, listening on all interfaces (tab <strong>Proxy &gt; Options &gt;</strong> button <strong>Add</strong>):</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/burp3.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/burp3.png" alt=""/></a></p>
  <p>Then, from the victim machine, browse to <strong>http://10.0.0.1:8080</strong>.</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/burpca.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/burpca.png" alt=""/></a></p>
  <p>Click on <strong>CA Certificate</strong> in the top-right corner to download Burp’s CA certificate.</p>
  <p>On the Windows 7 victim machine: open the file, click <strong>Install certificate &gt;</strong><strong>Next &gt; Place all certificates in the following store: <em>Trusted Root Certification Authorities</em></strong> <strong>&gt; Next</strong></p>
  <p>On the Ubuntu victim machine:</p>
  <ul><li>Convert the certificate to the appropriate format (.crt) using</li>
  <li>
  <pre>$ openssl x509 -in ~/Downloads/cacert.der -inform DER -out burp.crt</pre></li>
  <li>Copy it to /usr/local/share/ca-certificates</li>
  <li>
  <pre>$ sudo cp burp.crt /usr/local/share/ca-certificates/</pre></li>
  <li>Run</li>
  <li>
  <pre>$ sudo update-ca-certificates</pre>
  <ul><li>Firefox by default doesn’t use the system’s certificate store. If you want the SSL connection to work properly in Firefox as well, go to the Firefox settings into <strong>Advanced &gt; Certificates &gt; Import</strong>. Choose <em>burp.crt</em>, check <strong>Trust this CA to identify websites</strong></li>
  </ul></li>
  </ul><p>All set!</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/sslok.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/sslok.png" alt=""/></a></p>

  <p>Once you imported Burp’s CA certificate in the victim machines, make sure to create a new snapshot (e.g. <em>Clean state with Burp’s CA certificate installed</em>).</p>
  <h3>6. Setting up a shared folder between the analysis machine and the host OS</h3>
  <p>At some point, you’ll obviously want to transfer some files to the analysis machine or to one of the victim machine; we’ll set up a file share to achieve it.</p>
  <p>In the VirtualBox running the analysis machine, go to <strong>Devices &gt; Shared Folders &gt; Shared folders settings</strong>. Create a new shared folder, choose the local folder of your host OS it should be mapped to, and choose a name. Check the checkbox to make it permanent.</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/share.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/share.png" alt=""/></a></p>
  <p>Now on the analysis machine, mount the shared folder:</p>
  <pre>$ mkdir ~/malware-analysis-share
  $ sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) malware-analysis-share ~/malware-analysis-share</pre>
  <p>And you’re good to go. In my case, all the files of my host machine located in /home/christophetd/malware-analysis-share will also end up in ~/malware-analysis-share in the analysis machine.</p>
  <h3>Transferring files to a victim machine</h3>
  <p>At some point, you’ll most probably need to transfer some files (e.g. malware samples) to one of the victim machines. Setting up a file share for them is a bad idea, because it means the victim machine (and by extent, the malware sample you’re running on it) have access to it.</p>
  <p>The simplest way to achieve a file transfer to the Ubuntu victim machine is to use netcat. Here’s a quick example.</p>
  <pre># Receiving machine having IP 10.0.0.2
  $ nc -lvp 4444 &gt; file.exe

  # Analysis machine (sender)
  $ cat file_to_transfer.exe | nc 10.0.0.2 4444</pre>
  <p>For a Window victim, we unfortunately don’t have netcat available. Alternatives might exist, but they probably don’t ship by default. One option is to use INetSim to serve your file to the victim machine.</p>
  <pre># inetsim.conf

  # Remove the default line: http_fakefile           exe     sample_gui.exe  x-msdos-program
  # Replace it by
  http_fakefile           exe     file_to_transfer.exe  x-msdos-program

  # And put file_to_transfer.exe in ./data/http/fakefiles</pre>
  <p>With this of configuration, just browse any URL ending with a ‘.exe’ (e.g. http://github.com/file.exe).</p>
  <p><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/dlexe.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/dlexe.png" alt=""/></a></p>
  <h2>7. Demo time: the TeslaCrypt ransomware</h2>
  <p>Time for a quick demo! I downloaded a sample of the ransomware <a href="https://en.wikipedia.org/wiki/TeslaCrypt" rel="noreferrer" target="_blank">TeslaCrypt</a>, transferred it to our Windows 7 victim machine, and executed  it. After a few seconds, all the files of the VM have been encrypted and the following window pops-up.</p>
  <figure><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/tcrypt-1.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/tcrypt-1-1024x818.png" alt=""/></a>
  <figcaption>TeslaCrypt main window (click for full-size image)</figcaption></figure><figure><a href="https://blog.christophetd.fr/wp-content/uploads/2017/06/randomwarepnwd.png" rel="noreferrer" target="_blank"><img src="https://blog.christophetd.fr/wp-content/uploads/2017/06/randomwarepnwd-1024x818.png" alt=""/></a>
  <figcaption>The machine’s files have been encrypted and replaced by files with the ECC extension</figcaption></figure>
  <p>After checking the logs of INetSim, we can see that the ransomware did the following DNS lookups:</p>
  <ul><li>7tno4hib47vlep5o.tor2web.org</li>
  <li>7tno4hib47vlep5o.tor2web.blutmagie.de</li>
  <li>7tno4hib47vlep5o.tor2web.fi</li>
  <li>bitcoin.toshi.io</li>
  </ul><p>And sent several HTTP requests to those domains.</p>
  <pre>HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.org/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjh6a2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzA=
  HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.blutmagie.de/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjh6a2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzE=
  HTTPS connection, method: GET, URL: https://7tno4hib47vlep5o.tor2web.fi/state.php?U3ViamVjdD1QaW5nJmtleT0xNUIzOEIxOEFGMjBDMERCMkE3Qzc3MUUwMTQzNjNGMkNCODc4MUIxNTZENTE5Q0M1RjIyMDMzNUQ0NzE0QUEzJmFkZHI9MUxOVUYzQnFMM29iMUNUMmFWcDNjVzROYjh6a2tWaVZ3VCZmaWxlcz0wJnNpemU9MCZ2ZXJzaW9uPTAuMi42YSZkYXRlPTE0OTY2NDg2NzUmT1M9NzYwMSZJRD0xNiZzdWJpZD0wJmdhdGU9RzI=
  HTTPS connection, method: GET, URL: https://bitcoin.toshi.io/api/v0/addresses/1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT
  </pre>
  <p>We see similar requests are made to <strong>tor2web.org</strong><em>,</em> <strong>tor2web.blutmagie.de</strong> and <strong>tor2web.fi</strong>. Those services allow to access the Tor network without having to install Tor Browser or a similar tool.</p>
  <p>The malware contacts the Tor hidden service <strong>7tno4hib47vlep5o.onion</strong>, which is probably some kind of <a href="https://en.wikipedia.org/wiki/Command_and_control_(malware)" rel="noreferrer" target="_blank">C&amp;C server</a>. The payload of the request is a base64 encoded string, which decodes to:</p>
  <pre>Subject=Ping
  &amp;key=15B38B18AF20C0DB2A7C771E014363F2CB8781B156D519CC5F220335D4714AA3
  &amp;addr=1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT
  &amp;files=0
  &amp;size=0
  &amp;version=0.2.6a
  &amp;date=1496648675
  &amp;OS=7601
  &amp;ID=16
  &amp;subid=0
  &amp;gate=G1</pre>
  <p>It also makes an API call to <strong>bitcoin.toshio.io</strong> (which doesn’t exist anymore), most probably to check if the ransom has been paid to the bitcoin address <em>1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT</em>. It seems like the malware generates an unique bitcoin address for each infected computer, since the address <a href="https://blockchain.info/address/1LNUF3BqL3ob1CT2aVp3cW4Nb8zkkViVwT" rel="noreferrer" target="_blank">didn’t receive or send out</a> any money.</p>
  <h2>Conclusion</h2>
  <p>Hopefully this guide will be helpful and allow you to safely analyze the network interactions of a malware. Keep in mind that some malwares detect when they are being run in a virtual machine and might adapt their behavior (e.g. do nothing). <a href="https://blog.malwarebytes.com/threat-analysis/2014/02/a-look-at-malware-with-virtual-machine-detection/" rel="noreferrer" target="_blank">Here’s an article from MalwareBytes on the subject</a>.</p>
  <p>Also, remember that while analyzing a malware’s network traffic can be very useful, it’s only one kind of dynamic analysis. Others include monitoring the register, the system calls, the files opened / created, etc. Open Security Training offers <a href="http://opensecuritytraining.info/MalwareDynamicAnalysis.html" rel="noreferrer" target="_blank">a full hands-on course on the topic</a>, for free.</p>
  <p>Don’t hesitate to leave a comment if you found this guide useful / awesome / too long / too detailed. A big thank you to <a href="https://lbarman.ch/" rel="noreferrer" target="_blank">lbarman</a> for the proofreading and numerous suggestions.</p>
  <p>Stay safe!</p>
  <p><a href="https://twitter.com/christophetd" rel="noreferrer" target="_blank">Follow @christophetd</a>
  </p>



  Post Views: 6,194


checksum: 359839c6
status: unread
url: http://www.hudsandguis.com/home/2017/4/17/ghostintheshell-fui
title: Ghost in the Shell FUI Design
language: en-US
content:
  <p>Here’s a look at the recent film Ghost in the Shell, showcasing some FUI work by <a href="http://www.moving-picture.com/" rel="noreferrer" target="_blank">MPC</a>, <a href="http://territorystudio.com/" rel="noreferrer" target="_blank">Territory</a> <a href="http://territorystudio.com/" rel="noreferrer" target="_blank">Studios</a> and <a href="http://ashthorp.com/" rel="noreferrer" target="_blank">Ash Thorp</a>. It looks like a huge amount of work was put into the development of this world, it’s visually rich and littered with lots of interesting tech.</p>
  <p>In this article you will find a brilliant GITS &#039;Making-of&#039; reel by <a href="http://www.moving-picture.com/" rel="noreferrer" target="_blank">MPC</a>, a studio reel and concept art gallery by <a href="http://territorystudio.com/" rel="noreferrer" target="_blank">Territory</a>. Then below we have a reel showcasing <a href="http://ashthorp.com/" rel="noreferrer" target="_blank">Ash Thorp</a>&#039;s work on GITS along with some beautiful behind-the-scenes concept images!</p>
  <p>The film takes place in a world full of holograms and cyborgs, and that’s where most of the FUI examples are. </p>
  <h2>Holograms</h2>
  <h3>Solograms</h3>
  <p>The city is absolutely saturated in holograms, from eye catching advertising to street signs and road signals. Director Rupert Sanders, referred to them as &#039;Solograms&#039;. The abundance of hologram advertising taking over buildings and encroaching into the city makes it feel like an artificial world, a world that has one foot in reality and the other in virtual reality. The designs are beautiful, eye-catching and vibrant. I reminds me a lot of the <a href="http://www.hudsandguis.com/home/2016/6/16/hyper-reality" rel="noreferrer" target="_blank">Hyper-Reality</a> world created by <a href="http://km.cx/" rel="noreferrer" target="_blank">Keiichi Matsuda</a>, which has a more dystopian view of the future. GITS is less bleak but just as overwhelming.</p>
  <h3>Holo-conference room</h3>
  <p>In terms of interfaces, it appears that holograms have become the preferred way to view content, as there is only a few instances of screen UI anywhere in the film. I absolutely love the hologram replay of the Geisha Bot hotel scene at the Section 9 headquarters. A room that projects life-size scenarios as a hologram? That idea is so attractive to me. Imagine all the subtle information you would absorb from re-watching scenarios from different angles, being able to walk around and even in the shoes of someone else. That would be amazing! <a href="http://www.hudsandguis.com/home/2013/05/28/iron-man-3-hud-gfx-process-reel" rel="noreferrer" target="_blank">Iron Man 3</a> explored this idea also and to some extent so did the map interface in <a href="http://www.hudsandguis.com/home/2013/06/26/tom-clancys-the-division-interface-design" rel="noreferrer" target="_blank">The Division</a>.</p>
  <p>The design of this &#039;Holo-conference room&#039; is simply gorgeous. I love the subtle vertical scan lines that fill the space. It does a great job of selling the believability of the interface, as it gives the space volume and it makes you believe that the holograms are being projected from a source rather than just magically appearing.</p>
  <h3>Hologlobes</h3>
  <p>There are a few other holographic interfaces in the film, namely in Dr. Ouelet’s operating rooms and home, as well as the table-top interface &#039;Hologlobe&#039; in the coroner’s office. The style of these feel very much inline with the interfaces in <a href="http://www.hudsandguis.com/2011/10/17/ui-design-ghost-in-the-shell-2/" rel="noreferrer" target="_blank">Ghost in the shell 2</a>, using the colour orange, the round and cylindrical holograms that build up and rotate. I really like that it’s come through in the live action film.</p>
  <p>Near the end of the MPC making-of video, there&#039;s a scene where the coroner is interacting with a Hologlobe. There we can see how the interface powers up and displays. It&#039;s interesting that the interface is the table itself, where the user can insert cards (USB-stick equivalent) directly into it and can swipe their finger around the surface. The depiction of this is so fluid and beautiful. It&#039;s a brilliant concept, one that I&#039;ve not come across before. What if you could type on any area of a surface? What if the interface could recognise what you&#039;re typing even without a keyboard, based on the position of your fingers? I&#039;m sure this is possible. There are already projected keyboards available(<a href="http://www.hudsandguis.com/home/2011/09/13/invisible-keyboards" rel="noreferrer" target="_blank">see our article on invisible keyboards</a>), you would just have to project one based on where the user&#039;s wrists are. It&#039;s a very inspirational concept and I would love to see this realised in the near future.</p>
  <h2>Cyber-enhancement and augmentations</h2>
  <p>Ghost in the Shell plays out in a world where anyone can augment their bodies with technology. It seems that for the rich, cyber-enhancements are quite discreet but for the lower classes, these augmentations can be large and cumbersome. Examples in the film include Batu’s eyes, Dr. Ouelet’s fingers as she’s typing on her laptop inside the limo, the two patrons at the Geisha Bot hotel scene and the coroner’s ‘creepy’ eyes.</p>
  <p>This film is rich with FUI inspiration, if you&#039;re not satisfied with the videos and images here, you should go and check out the full film, it&#039;s a visual treat!</p>
  <p>Congrats to <a href="http://www.moving-picture.com/" rel="noreferrer" target="_blank">MPC</a>, <a href="http://territorystudio.com/" rel="noreferrer" target="_blank">Territory</a> and <a href="http://ashthorp.com/" rel="noreferrer" target="_blank">Ash</a> for this visual stimulation! And thank you for sharing your work with us!</p>


checksum: a79c06ad
status: unread
url: https://sonniesedge.co.uk/blog/a-day-without-javascript
title: A day without JavaScript
content:
  <p>As I write this it’s raining outside, and I’m trying to avoid having to go out into the murk and watch the Germans conduct their annual <a href="http://www.karneval-berlin.de/en/" rel="noreferrer" target="_blank">diversity maneuvers</a>. I’ve therefore decided to pass my time by doing the one thing that counts as a religious crime in web dev land: I’m going to turn off javascript in my browser and see what sites work and what sites don’t.</p>
  <p>I know, I know, my life is simply too exciting.</p>
  <p>Now, I know that because I write a lot about the universal web and progressive enhancement, people assume that I must hate javascript.</p>
  <p>This would be an incorrect assumption.</p>
  <p>I simply hate people relying on brittle client-side javascript when there are other alternatives. In the same way as I wouldn’t rely on some unknown minicab firm as the sole way of getting me to the airport for a wedding flight, I don’t like relying on a non-guaranteed technology as the sole way of delivering a web app.</p>
  <p>For me it’s a matter of elegance and simplicity over unnecessary complexity.</p>
  <h2>Too many tabs</h2>
  <p>So, for my dreary grey day experiment I restricted myself to just the things open in my browser tabs. For normal people this might be two or three sites.</p>
  <p>Not for me. I have approximately 17 shitmillion tabs open, because I Have a Problem With Tabs.</p>
  <p>No seriously. I can never just close a tab. I’ve tried things like <a href="https://www.one-tab.com/" rel="noreferrer" target="_blank">One Tab</a> but I just can’t get down to less than 30 in any one window (“I’ll just save that tab for later” I think, each and ever time). Let’s just agree that I need some kind of therapy, and we’ll all be able to move on.</p>
  <p>Anyway, there’s nothing fancy to this experiment. It was a case of turning off javascript in the browser and reloading a site, nothing more. To quickly disable the browser’s JS with one click I used Chrome and the <a href="https://chrome.google.com/webstore/detail/toggle-javascript/cidlcjdalomndpeagkjpnefhljffbnlo" rel="noreferrer" target="_blank">Toggle Javascript</a> extension - available, ironically enough, via the javascript-only Chrome web store.</p>
  <p>Oh, and for you, sweet reader, I opened these tabs in new windows, so you don’t have to see the pain of 50 tabs open at once.</p>
  <h2>First impressions</h2>
  <p>So how was it? Well, with just a few minutes of sans-javascript life under my belt, my first impression was “Holy shit, things are <em>fast</em> without javascript”. There’s no ads. There’s no video loading at random times. There’s no sudden interrupts by “DO YOU WANT TO FUCKING SUBSCRIBE?” modals.</p>
  <p>If this were the only manifestation of turning off javascript, I’d do this for the rest of time. However, a lot of things don’t work. Navigation is the most common failure mode. Hamburger menus fail to internally link to a nav section (come on, that’s an easy one kids). Forms die when javascript is taken away (point the form to an endpoint that accepts GET/POST queries ffs). Above the fold <em>images</em> fail to load (you do know they’re streaming by default, yes?).</p>
  <h2>The sites</h2>
  <p>Let’s get to it. I think I’ve got a pretty representative list of sites in my open tabs (perhaps due to the aforementioned Tab Problem). Howl at me on Twitter if you feel I missed anything particularly important.</p>
  <h3>Feedly</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/feedly.png" alt=""/></p>
  <p>My very first attempt at sans-JS and I get nothing but a blank white page. Fuck you feedly.</p>
  <p><em>sighs, runs hands over face, shouts after Feedly</em></p>
  <p>Wait no, Feedly, I’m sorry. I didn’t mean that. It was the coffee talking. Can we talk this over? I like using you to keep up with blog posts.</p>
  <p>But why do you work like this, Feedly? Your devs <em>could</em> offer the site in basic HTML and use advanced features such as, er, anchor links, to move to other articles. Then when JS is available, new content can be loaded via JS.</p>
  <p><em>Verdict:</em> Relationship counselling.</p>
  <h3>Twitter</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/twitter.png" alt=""/></p>
  <p>Twitter shows the normal website (with full content) for a brief moment, then redirects to <a href="https://mobile.twitter.com/" rel="noreferrer" target="_blank">mobile.twitter.com</a> (the old one, not the spanky new React one, of course). This is really frustrating, as the full site would still be great to load without javascript. It could use the same navigation method as the mobile site, where it sets a query parameter to the URL “?max_id=871333359884148737” that dictates what is the latest tweet in your timeline to show. Simple and elegant.</p>
  <p><em>Verdict:</em> Could try harder.</p>
  <h3>Google Chrome</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/chrome_download.png" alt=""/></p>
  <p>The Google Chrome download page just fails completely, with no notice, only a blank white page.</p>
  <p><em>Sigh</em>.</p>
  <p><em>Verdict:</em> No Chrome for you, you dirty javascriptophobe!</p>
  <h3>Youtube</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/youtube.png" alt=""/></p>
  <p>Youtube really really wants to load. Really, reallllllly, wants to. But then it fucks things up at the last nanosecond and farts out, showing no video, no preview icons, and no comments (that last one is perhaps a positive).</p>
  <p>Even if the site is doing some funky blob loading of video media, it wouldn’t be hard to put a basic version on the page initially (with <code>preload=&quot;none&quot;</code>), and then have it upgrade when JS kicks in.</p>
  <p><em>Verdict:</em> Can’t watch My Drunk Kitchen or Superwoman. :( :( :(</p>
  <h3>24 ways</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/24ways.png" alt=""/></p>
  <p>I’ve had this open in my tabs for the last 6 months, meaning to read it. Look, I’M SORRY, okay? But holy fuck, this site works great without javascript. All the animations are there (because they’re CSS) and the slide in navigation works (because it internally links to the static version of the menu at the bottom of the page).</p>
  <p><em>Verdict:</em> Class act. Smoooooth. Jazzz.</p>
  <h3>Netflix</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/netflix.png" alt=""/> I’m using netflix to try and indoctrinate my girlfriend into watching Star Trek. So far she’s not convinced, mainly because “Tasha <em>slept with Mr Data?</em> But it’d be like fucking your microwave”.</p>
  <p>Anyway, Netflix doesn’t work. Well, it loads the header, if you want to count that. I get why they don’t do things with HTML5 - DRMing all yo shit needs javascript. But still :(.</p>
  <p><em>Verdict:</em> JavaScript-only is the New Black</p>
  <h3>NYtimes</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/nytimes_with_js.png" alt=""/></p>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/nytimes_sans_js.png" alt=""/></p>
  <p>Not sure why this was in my tab list, but tbh I’ve found rotting tabs from 2015 in there, so I’m not surprised.</p>
  <p>The NY Times site loads in <em>561ms</em> and 957kb without javascript. Holy crap, that’s what it should be like normally. For reference it took 12000ms (12seconds) and 4000kb (4mb) to load <em>with</em> javascript. Oh, and as a bonus, you get a screenful of adverts.</p>
  <p>A lot of images are lazy loaded, and so don’t work, getting replaced with funky loading icons. But hey ho, I can still read the stories.</p>
  <p><em>Verdict:</em> Failing… to <em>not</em> work. Sad!</p>
  <h3>BBC News</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/bbc_news.png" alt=""/></p>
  <p>It’s the day after the latest London terrorism attacks, and so I’ve got this open, just to see how the media intensifies and aids every terrorist action. The BBC is the inventor and poster-child for progressive enhancement via Cutting the Mustard, and it doesn’t disappoint. The non-CTM site works fully and while it doesn’t <em>look</em> the same as the full desktop site (it’s mobile-first and so is pretty much the mobile version), it still <em>works</em>.</p>
  <p><em>Verdict:</em> Colman’s Mustard</p>
  <h3>Google search</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/google.png" alt=""/></p>
  <p>Without JS, Google search still does what it’s best at: searching.</p>
  <p>Okay, there’s no autocomplete, the layout reverts to the early 2000s again, and image search is shockingly bad looking. But, in the best progressive enhancement manner, you can still perform your core tasks.</p>
  <p><em>Verdict:</em> Solid.</p>
  <h3>Wikipedia</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/wikipedia.png" alt=""/></p>
  <p>Like a good friend, Wikipedia never disappoints. The site is indistinguishable from the JS version. Keep being beautiful, Wikipedia.</p>
  <p><em>Verdict:</em> BFFs.</p>
  <h3>Amazon</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/amazon.png" alt=""/></p>
  <p>The site looks a little… <em>off</em> without JS (the myriad accordions vomit their content over the page when JS isn’t there to keep them under control). But the entire site works! You can still search, you still get recommendations. You can still add items to your basket, and you can still proceed to the checkout.</p>
  <p><em>Verdict:</em> Amazonian warrior.</p>
  <h3>Google Maps</h3>
  <p><img src="https://sonniesedge.co.uk/images/posts/a-day-without-javascript/google_maps.png" alt=""/></p>
  <p>Discounting Gmail, Google Maps is perhaps one of the most heavily used Single Page Applications out there. As such I expected some kind of fallback, like Gmail provides, even if it wasn’t true progressive enhancement. Maybe some kind of Streetmap style tile-by-tile navigation fallback?</p>
  <p>But it failed completely.</p>
  <p><em>Verdict:</em> Cartography catastrophe.</p>
  <h2>Overall verdict</h2>
  <p>This has made me appreciate the number of large sites that make the effort to build robust sites that work for everybody. But even on those sites that are progressively enhanced, it’s a sad indictment of things that they can be so slow on the multi-core hyperpowerful Mac that I use every day, but immediately become fast when JavaScript is disabled.</p>
  <p>It’s even sadder when using a typical site and you realise how much Javascript it downloads. I now know why my 1GB mobile data allowance keeps burning out at least…</p>
  <p>I maintain that it’s perfectly possible to use the web without javascript, especially on those sites that are considerate to the diversity of devices and users out there. And if I want to browse the web without javascript, well fuck, that’s my choice as a user. This is the web, not the Javascript App Store, and we should be making sure that things work on even the most basic device.</p>
  <p>I think I’m going to be turning off javascript more, just on principle.</p>
  <p>Haters, please tweet at me as you feel fit.</p>


checksum: f64981c6
status: unread
title: Don&#039;t Be Fooled by the Comcast PR Machine: It&#039;s Always Opposed Internet Freedom
language: en
url:
  https://www.eff.org/deeplinks/2017/06/dont-be-fooled-comcast-pr-machine-it-has-always-opposed-open-internet

content:
  <h3>Years of lobbying and litigation has made it clear Comcast wants to turn the Internet into a toll road and run the booth</h3>
  <p>If you have signed onto Twitter and have been following the network neutrality debate, you&#039;ve probably seen <a href="http://corporate.comcast.com/comcast-voices/comcast-customers-will-enjoy-strong-net-neutrality-protections-today-and-in-the-future?utm_source=social%2520corp-comm&amp;utm_medium=TWITTER%2520comcast&amp;utm_term=%2520&amp;utm_content=20170426%252020170426215600&amp;linkId=36937188" rel="noreferrer" target="_blank">Comcast&#039;s campaign to rewrite its history of opposition to the Open Internet</a>. But the company&#039;s own statements to Congress, the FCC, and to the courts make Comcast&#039;s true goal abundantly clear: free rein to use its market power to become an Internet gatekeeper.</p>
  <p><strong>Converting the Internet into a Pay to Win System</strong></p>
  <p>In the early legal battles over network neutrality, Comcast challenged a Republican FCC&#039;s ability to enforce open Internet principles. In repeated legal filings, the company made clear that it did not believe the FCC could prevent providers from data discrimination unless it reclassified them as common carriers. After all, Comcast itself said in court that <a href="https://eff.org/files/2017/06/05/comcast_corporation_petitioner_v_federal_communications_commission_and_united_st.pdf" rel="noreferrer" target="_blank">&quot;nondiscrimination obligations are the hallmark of common carrier regulation (page 12).&quot;</a> In other words, Comcast was saying that the FCC couldn&#039;t impose nondiscrimination rules unless it reclassified Comcast as a common carrier - which is exactly what the FCC did in 2015 and exactly what Comcast is fighting now. &quot;Common carrier regulation&quot; is code for Title II of the Communications Act. &quot;nondiscrimination obligations are the hallmark of common carrier regulation&quot; -Comcast&#039;s 2009 court filing in <em>Comcast vs FCC</em><br/></p>
  <p><strong>The Comcast Plan If Network Neutrality Is Repealed</strong></p>
  <p>At the FCC, Comcast doubled down. In 2010, Comcast told the agency that one of the &quot;benefits&quot; that would be lost under an Open Internet Order would be the ability for cable and telephone to strike exclusive deals with Internet companies - in other words, paid prioritization, or &quot;fast lanes&quot; for those who can afford them.</p>
  <blockquote>
  <p>&quot;The proposed rule could prohibit Internet content, application, and service providers from improving their existing offerings with the assistance of a broadband ISP, regardless of whether doing so would be pro-competitive and beneficial to consumers.&quot; -<a href="https://ecfsapi.fcc.gov/file/7020375772.pdf" rel="noreferrer" target="_blank">Comcast FCC filing, Jan 14, 2010 (page 40)</a>.</p>
  </blockquote>
  <p>While Comcast attempted to make paid prioritization sound like something that would be good for online service competition, it is pretty obvious how these types of exclusives and priority access deals will play out in reality. In practice, what we will see is the biggest Internet companies getting premium access to bandwidth while every mom-and-pop business and tech startup will get relegated to inferior infrastructure because they do not have the excess capital to pay for access. For example, even as the FCC was actively pushing a new Open Internet Order in 2014, Comcast started rerouting and degrading Netflix traffic despite the demand coming from Comcast&#039;s customers. Today, <a href="https://www.recode.net/2017/5/31/15720268/netflix-ceo-reed-hastings-net-neutrality-open-internet?utm_campaign=recode.net&amp;utm_content=chorus&amp;utm_medium=social&amp;utm_source=twitter" rel="noreferrer" target="_blank">Netflix says it can pay for fast lanes</a> - but the next Netflix won&#039;t be able to survive in that world.</p>
  <p><strong>Setting up the FCC to Fail</strong></p>
  <p>In its PR campaign, Comcast claims that its decision not to challenge the 2010 Open Internet Order is evidence of its support for network neutrality. In reality, it&#039;s likely the company stayed quiet because shortly after the Open Internet Order was approved Comcast was required to operate neutrally as a condition of its merger with NBC Universal. It had little to gain from publicly opposing the 2010 Order because they could not lift network neutrality obligations over their network even if they won in court due to merger conditions. Those Comcast NBCU merger conditions will expire in 2018. Here is what they said following the merger during consideration of the FCC&#039;s second defeat under <em>Verizon vs. Comcast</em> as they were asking for approval of yet another merger (this time with Time Warner Cable).</p>
  <blockquote>
  <p>&quot;Comcast agreed to be bound by the FCC&#039;s Open Internet rules until 2018. These protections will now extend to the acquired TWC systems, giving the FCC ample time to adopt (and, if necessary, to defend) legally enforcement Open Internet rules applicable to the entire industry.&quot; -Joint statement by David L. Cohen (Comcast) and Arthur T. Minson (Time Warner Cable) to the Senate Judiciary Committee regarding the Comcast-Time Warner Cable merger</p>
  </blockquote>
  <p>Translation: Don&#039;t worry about our merger because we are bound to respect the Open Internet Rules for now, and by the time the agreement expires, the FCC will have found a legally enforceable basis for net neutrality protections. As Comcast indicated way back in 2009, that path required the FCC to do exactly what it did in 2015: reclassify broadband as a common carrier service. So Comcast&#039;s record is pretty clear: the cable behemoth has known for years what the FCC had to go to get legally sound neutrality rules. Now the FCC has done it, Comcast is fighting tooth and nail to reverse it.</p>
  <p>If we want to stop the Comcast plan to repeal network neutrality and convert the Internet into a pay-to-win system where only the largest players can compete for access to subscribers, squeezing out innovative and competing services (not to mention libraries, hospitals, schools, and political organizations), then we must act now.</p>
  <p><a href="https://www.dearfcc.org/" rel="noreferrer" target="_blank">Tell the FCC your story</a> and contact <a href="https://act.eff.org/action/tell-congress-don-t-surrender-the-internet" rel="noreferrer" target="_blank">your two Senators and House Representative</a> today.</p>


checksum: 655762da
status: unread
url: http://www.prigrammer.com/?p=363
title: Getting started with the F# and .Net ecosystem
author: Tom Prior
language: en-US
content:
  <p>F# is a language that was sitting in the corner calling to me for a long time tempting me to go take a look at it. I watched <a href="https://www.youtube.com/watch?v=E8I19uA-wGY" rel="noreferrer" target="_blank">Scott Wlaschin’s fantastic talk on Functional Programming Design Patterns</a> some time ago. This talk is a walk through of common FP design patterns with the example code being in F#. Scott put together this talk so well that it is not a blocker to getting the most from the talk if you don’t have any previous knowledge of F#. At the same time, coming from mostly programming in Scala professionally, I couldn’t help but admire the beauty of the F# code in his examples. So I had a quick look further at some F# code out there. Things like a simple syntax using whitespace, automatic currying, nice concise representations of Algebraic Data Types caught my eye immediately.</p>
  <p>Over the Christmas holidays I dived into F# by taking courses on <a href="https://fsharp.tv/" rel="noreferrer" target="_blank">FSharp TV</a> and by going through content from Scott’s wonderful blog <a href="https://fsharpforfunandprofit.com/" rel="noreferrer" target="_blank">Fsharp For Fun And Profit</a>.</p>
  <p>F# has quickly become my favourite language to code in along with Haskell. Along the way though, there were some stumbling blocks getting used to the .Net world. Most of these could have been avoided if I just used the <a href="https://www.xamarin.com/studio" rel="noreferrer" target="_blank">Xamarin Studio IDE</a>. However, I’m glad I didn’t and took a little pain along the way as it made be explore the .Net and F# ecosystem. I did start to use <a href="https://code.visualstudio.com/" rel="noreferrer" target="_blank">Visual Studio Code</a> which is really a text editor with a load of great plugins out there for different languages. Its lightweight enough that you still have to find out what’s happening under the hood a bit with your F#  .Net projects but, at the same, it does make things like creating projects with common templates, building and adding references to existing projects a lot less painful. Incidentally, there is now a <a href="https://marketplace.visualstudio.com/items?itemName=UCL.haskelly" rel="noreferrer" target="_blank">Haskell plugin for Visual Studio Code</a> which uses <a href="https://github.com/commercialhaskell/intero" rel="noreferrer" target="_blank">Intero</a>. This is very exciting indeed and I can’t wait to try it out!</p>
  <h2>How do I code in F# on a mac?!</h2>
  <p>Yep this is a question I had for a while too. That is until I discovered <a href="http://www.mono-project.com/" rel="noreferrer" target="_blank">Mono</a>, an open source .Net framework which is cross platform.<br/>I found the best way to get F# set up on OSX was to install Mono but to actually use the installer that can be downloaded <a href="http://www.mono-project.com/download/" rel="noreferrer" target="_blank">here</a>. I tried installing the homebrew way first but this seems to be missing some .Net libraries. For example, one that is needed for System.Drawing. I uninstalled my homebrew mono installation and installed from the Mono download that I linked to above, and I was then able to build and draw lovely spirographs from the <a href="https://fsharp.tv/courses/fsharp-programming-intro/" rel="noreferrer" target="_blank">FSharp TV, Introduction to F# course</a>.</p>
  <h2>How do I create an F# project?</h2>
  <p>This was a question I had too. I wanted to simply create a project with a common folder structure. I was looking for something similar to lein new in Clojure or stack new in Haskell. A great tool for this is <a href="http://forge.run/" rel="noreferrer" target="_blank">Forge</a>. The Visual Studio Code <a href="http://ionide.io/" rel="noreferrer" target="_blank">ionide</a> plugin integrates with Forge to make it really easy to create new projects through the command palette in Visual Studio Code. I demo this further down.</p>
  <h2>How do I manage dependencies?</h2>
  <p>The tool for this is <a href="https://fsprojects.github.io/Paket/" rel="noreferrer" target="_blank">Paket</a> which uses the <a href="https://www.nuget.org/" rel="noreferrer" target="_blank">Nuget</a> package manager under the hood. Again, Visual Studio Code has a plugin to integrate with Paket, <a href="https://marketplace.visualstudio.com/items?itemName=Ionide.Ionide-Paket" rel="noreferrer" target="_blank">Ionide-Paket</a></p>
  <h2>How do I build an F# project</h2>
  <p>FAKE is a very popular build tool for F# and allows you to specify your build tasks through a build.fsx file using and F# DSL. Visual Studio Code has a plugin to integrate with this too as part of its ionide suite, <a href="https://github.com/ionide/ionide-vscode-fake" rel="noreferrer" target="_blank">Ionide FAKE</a> This is demoed further down in this blog too.</p>
  <h2>How do I run a .exe on Mac!</h2>
  <p>Some of these tools I have mentioned along with the nunit testing tool (which I demo further down) require the running of a .exe to perform tasks. If the .exe is one that doesn’t run directly on Mac OS or Linux, usually it can be run using</p>
  <pre>mono name-of-your-executable.exe
  </pre>
  <p>once mono is installed and on your path and once name-or-your-executable.exe is actually a file that can be executed. It may seem like a simple thing but it is important to know as there are resources out there that describe how to use .Net tools assuming you are on a Windows machine.</p>
  <h2>Demo Time: TDD with F#</h2>
  <p>As there are resources out there about <a href="http://fsharp.org/use/mac/" rel="noreferrer" target="_blank">setting up F# with Mono and Visual Studio Code</a>, there’s no need to re-iterate them here so I will assume that you managed to get those set up. If you have questions, feel free to comment on this blog.<br/>My main stumbling block coming from outside the .Net world was simply setting up a unit test project and linking this to a production code project (by production code, I mean implementation code).<br/>Lets go through that here:</p>
  <p>So in Visual Studio Code, from an empty directory, open command palette with shift-command-p and type F#.</p>
  <p><img src="https://i2.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.03.45.png?resize=604%2C165" alt=""/></p>
  <p>Then select New Project.</p>
  <p>You will be prompted to select the type of project.<br/><img src="https://i0.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.05.44.png?resize=604%2C117" alt=""/></p>
  <p>Choose classlib for our production code.<br/>You will then be prompted to choose the project directory.</p>
  <p><img src="https://i1.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.07.17.png?resize=604%2C72" alt=""/></p>
  <p>Lets specify a directory called MusicLibrary. So type in MusicLibrary, hit enter and you will be prompted to provide a project name. Lets call this MusicLibrary too.</p>
  <p><img src="https://i0.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.09.39.png?resize=604%2C89" alt=""/></p>
  <p>After a second or so, you should eventually see that the ionide plugin has created three directories, .packet, MusicLibrary and packages. It will have also created a build.fsx file and a build.sh file so that we can build our new MusicLibrary project with FAKE.</p>
  <p><img src="https://i2.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.15.48.png?resize=604%2C183" alt=""/></p>
  <p>In the MusicLibrary directory, you will find a newly created MusicLibrary.fs file.</p>
  <p><img src="https://i2.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.17.07.png?resize=300%2C188" alt=""/></p>
  <p>This is where we are going to put our production code after we write a test for it.<br/>For now, delete everything from there and we are going to add a function to test called addSongToLibrary which will eventually take a list of existing song titles and a new song title and return a list of song titles containing our the existing ones and our new title. For now, it just returns an empty list until we have our test ready. The contents of the MusicLibrary.fs file can be replaced with:</p>
  <pre>module MusicLibrary

  let addSongToLibrary existingSongs newSong = []
  </pre>
  <p>Now, we should be able to build this right?. Lets give it ago.</p>
  <p>Open the Visual Studio command palette again and type FAKE.</p>
  <p><img src="https://i2.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.23.29.png?resize=604%2C165" alt=""/></p>
  <p>Select Build</p>
  <p>You will be prompted for a FAKE build task to run.</p>
  <p><img src="https://i1.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.24.30.png?resize=604%2C143" alt=""/></p>
  <p>Select build.</p>
  <p>Now we get an error:</p>
  <p><img src="https://i2.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.25.55.png?resize=604%2C123" alt=""/></p>
  <p>If you look down at the output window in Visual Studio Code, you will see something like<br/>build.sh: line 34: syntax error: unexpected end of file</p>
  <p>We need to convert the dos .sh file to into unix format. There is a tool for this on the Mac App Store <a href="http://macappstore.org/dos2unix/" rel="noreferrer" target="_blank">dos2unix</a>.</p>
  <p>Install that.<br/>In the terminal go into the parent directory of your MusicLibrary directory where build.sh exists and run dos2unix on the build.sh file.</p>
  <pre>dos2unix build.sh
  dos2unix: converting file build.sh to Unix format...
  </pre>
  <p>Now follow the steps earlier to try and do a FAKE build in visual studio code.<br/>In the output in visual studio code, you should see output about using paket to get any needed dependencies and also about the creation of dlls.<br/>From my understanding Dlls in .Net are like jar files in the jvm world and they are the binaries created as a result of compiling F# code. The FAKE build will now have created a build directory and put the dlls in there.</p>
  <p><img src="https://i0.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.35.24.png?resize=604%2C403" alt=""/></p>
  <p>You will see a MusicLibrary.dll in there.</p>
  <p>Back in the MusicLibrary directory there is also a MusicLibrary.fsproj file which FAKE uses to find out things it needs for the build. When we write our test, we will see how we can add a reference to the MusicLibrary.dll into our .fsproj file for our unit test project. If you look in build.fsx, you will see a reference to these .fsproj files for FAKE.</p>
  <pre>let appReferences  =
      !! &quot;/**/*.csproj&quot;
      ++ &quot;/**/*.fsproj&quot;
  </pre>
  <h3>Lets set up our test project so we can test our addSongToLibrary function!</h3>
  <p>To test our addSongToLibrary function we can set up a MusicLibraryTest project. Follow the same steps as we did for creating the MusicLibrary project in visual studio code except for the prompt to choose library type, choose fsunit</p>
  <p><img src="https://i1.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.42.16.png?resize=604%2C129" alt=""/></p>
  <p>After, you should see a newly created MusicLibraryTest directory.<br/><img src="https://i1.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.43.49.png?resize=562%2C502" alt=""/></p>
  <p>If you go into that directory, you will see that there has been a MusicLibraryTest.fs file created for us containing:</p>
  <pre>module MusicLibraryTest

  open NUnit.Framework
  open FsUnit

  [&lt;Test&gt;]
  let ``Example Test`` () =
      1 |&gt; should equal 1
  </pre>
  <p>There are 2 libraries imported here for unit testing, NUnit.Framework and FsUnit.<br/>This is where paket comes in for our test dependencies. If you go into the paket.references file within the MusicLibraryTest directory you will see</p>
  <pre>FSharp.Core
  FsUnit
  </pre>
  <p>So, we need to link our MusicLibraryTest project to our MusicLibrary.fsproj so that we can test our addSongToLibrary function. This is taken care of by add a reference to the MusicLibrary.fsproj in the MusicLibraryTest.fsproj.</p>
  <p>Open up the MusicLibraryTest.fsproj file.<br/>Now, open visual studio command palette again.</p>
  <p><img src="https://i1.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.50.17.png?resize=604%2C157" alt=""/></p>
  <p>Select Add Project Reference.<br/>Then choose MusicLibraryTest as the project that you want to edit<br/><img src="https://i1.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.52.08.png?resize=604%2C157" alt=""/></p>
  <p>Then choose MusicLibrary as the reference</p>
  <p><img src="https://i0.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-12.52.54.png?resize=604%2C117" alt=""/></p>
  <p>Now, somewhere in the MusicLibraryTest.fsproj, there will be a newly created reference to the MusicLibray.fsproj. Search the MusicLibraryTest.fsproj for MusicLibrary.fsproj.</p>
  <p>Now we can reference our MusicLibrary module and call the addSongToLibrary function.<br/>Back in the MusicLibraryTest.fs file, we can import the MusicLibrary module which contains our addSongToLibrary function and lets write a test to test adding a song title.</p>
  <p>Replace the contents of MusicLibraryTest.fs with:</p>
  <pre>module MusicLibraryTest

  open NUnit.Framework
  open FsUnit

  open MusicLibrary

  [&lt;Test&gt;]
  let shouldAddASong () =
      [&quot;Sir Duke&quot;;&quot;Superstition&quot;] 
      |&gt; should equal (addSongToLibrary [&quot;Superstition&quot;] &quot;Sir Duke&quot;)
  </pre>
  <h3>How do I run my test!</h3>
  <p>First of all lets create our MusicLibraryTest.dll. This is done the same way that we created MusicLibrary.dll before by running the FAKE build in visual studio code. After running the build, there should be a MusicLibraryTest.dll in your build directory.</p>
  <p><img src="https://i2.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-13.08.27.png?resize=589%2C428" alt=""/><br/>Actually getting tests to run was a stumbling block for me. To run tests, a FAKE task can be created in build.fsx. I will show how to do that in a little bit. First I will show how to run more manually using an nunit test runner.<br/>The NUnit3 test runner can be downloaded as a zip file <a href="https://github.com/nunit/nunit-console/releases/tag/3.5" rel="noreferrer" target="_blank">here</a>.<br/>To make this work with a FAKE task a bit later, first create a directory tools/Nunit in the root folder in visual studio code that you have your MusicLibrary and MusicLibraryTest projects in.<br/>Then download <a href="https://github.com/nunit/nunit-console/releases/download/3.5/NUnit.Console-3.5.0.zip" rel="noreferrer" target="_blank">NUnit.Console-3.5.0.zip</a> into there.</p>
  <p><img src="https://i0.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-13.16.09.png?resize=604%2C669" alt=""/><br/>Then unzip it.</p>
  <p><img src="https://i0.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-13.18.55.png?resize=493%2C672" alt=""/></p>
  <p>Now we can use the nunit3-console.exe to run our test.<br/>In the terminal, go into the tools/NUnit folder.<br/>Make the nunit3-console.exe executable:</p>
  <pre>chmod 755 nunit3-console.exe
  </pre>
  <p>We can run our test with the command:</p>
  <pre>mono nunit3-console.exe ../../build/MusicLibraryTest.dll
  </pre>
  <p>This should output our failing test result:</p>
  <pre>NUnit Console Runner 3.5.0
  Copyright (C) 2016 Charlie Poole

  Runtime Environment
     OS Version: MacOSX 16.1.0.0
    CLR Version: 4.0.30319.42000

  Test Files
      ../../build/MusicLibraryTest.dll


  Errors and Failures

  1) Failed : MusicLibraryTest.shouldAddASong
    Expected is &lt;Microsoft.FSharp.Collections.FSharpList`1[System.Object]&gt;, actual is &lt;Microsoft.FSharp.Collections.FSharpList`1[System.String]&gt;
    Values differ at index [0]
  at FsUnit.TopLevelOperators.should[a,a] (Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] f, a x, System.Object y) [0x0004e] in :0
  at MusicLibraryTest.shouldAddASong () [0x0003d] in :0

  Run Settings
      DisposeRunners: True
      WorkDirectory: /Users/tom/Dropbox/software-development/fsharp/NUnitDemo/tools/Nunit
      ImageRuntimeVersion: 4.0.30319
      ImageRequiresX86: False
      ImageRequiresDefaultAppDomainAssemblyResolver: False
      NumberOfTestWorkers: 8

  Test Run Summary
    Overall result: Failed
    Test Count: 1, Passed: 0, Failed: 1, Inconclusive: 0, Skipped: 0
      Failed Tests - Failures: 1, Errors: 0, Invalid: 0
    Start time: 2017-01-08 13:40:33Z
      End time: 2017-01-08 13:40:33Z
      Duration: 0.142 seconds
  </pre>
  <p>Now lets integrate this into FAKE.</p>
  <p>In the build.fsx file, add the following near the top underneath<br/>open Fake</p>
  <p>add</p>
  <pre>open Fake.Testing
  </pre>
  <p>so you now have</p>
  <pre>open Fake
  open Fake.Testing
  </pre>
  <p>Add our NUnitTest task underneath the Target “Deploy” block.</p>
  <pre>let testDlls = !! (buildDir + &quot;*Test.dll&quot;)

  Target &quot;NUnitTest&quot; (fun _ -&gt;
    testDlls
      |&gt; NUnit3 (fun p -&gt; p)

  )
  </pre>
  <p>So we have:</p>
  <pre>Target &quot;Deploy&quot; (fun _ -&gt;
      !! (buildDir + &quot;/**/*.*&quot;)
      -- &quot;*.zip&quot;
      |&gt; Zip buildDir (deployDir + &quot;ApplicationName.&quot; + version + &quot;.zip&quot;)
  )

  let testDlls = !! (buildDir + &quot;*Test.dll&quot;)

  Target &quot;NUnitTest&quot; (fun _ -&gt;
    testDlls
      |&gt; NUnit3 (fun p -&gt; p)

  )
  </pre>
  <p>Also add NUnitTest to the build order so the end of your build.fsx file should be</p>
  <pre>// Build order
  &quot;Clean&quot;
    ==&gt; &quot;Build&quot;
    ==&gt; &quot;NUnitTest&quot;
    ==&gt; &quot;Deploy&quot;

  // start build
  RunTargetOrDefault &quot;Build&quot;
  </pre>
  <p>Open Visual Studio Code command palette and type FAKE as before<br/><img src="https://i0.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-13.31.12.png?resize=604%2C101" alt=""/></p>
  <p>Choose FAKE: Build</p>
  <p>Now you should see our new NUnitTest task so select that.</p>
  <p><img src="https://i2.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-13.32.31.png?resize=604%2C115" alt=""/></p>
  <p>This will fail because of our failing test.<img src="https://i1.wp.com/www.prigrammer.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-08-at-13.33.44.png?resize=604%2C207" alt=""/></p>
  <p>The output pane in visual studio code will have the results of the nunit3-console.exe runner</p>
  <pre>1) Failed : MusicLibraryTest.shouldAddASong
    Expected is &lt;Microsoft.FSharp.Collections.FSharpList`1[System.Object]&gt;, actual is &lt;Microsoft.FSharp.Collections.FSharpList`1[System.String]&gt;
    Values differ at index [0]
  at FsUnit.TopLevelOperators.should[a,a] (Microsoft.FSharp.Core.FSharpFunc`2[T,TResult] f, a x, System.Object y) [0x0004e] in :0
  at MusicLibraryTest.shouldAddASong () [0x0003d] in :0
  </pre>
  <h3>Lets make the test pass!!</h3>
  <p>Go back to the MusicLibrary.fs file and make the test pass by replacing its contents with:</p>
  <pre>module MusicLibrary

  let addSongToLibrary existingSongs newSong = newSong :: existingSongs
  </pre>
  <p>In Visual Studio Code, use the command palette to run FAKE: Build selecting build as before and then  FAKE: Build selecting NUnitTest.</p>
  <p>Looking through the output in visual studio code we can now see our passing test report:</p>
  <pre>Test Run Summary
    Overall result: Passed
    Test Count: 1, Passed: 1, Failed: 0, Inconclusive: 0, Skipped: 0
    Start time: 2017-01-08 13:46:29Z
      End time: 2017-01-08 13:46:29Z
      Duration: 0.132 seconds
  </pre>
  <h2>Conclusion</h2>
  <p>Hopefully this has helped people to get started with the F# and .Net ecosystem and get up and running quickly in this amazing language.</p>


  <h3>Share this:</h3>


checksum: 708e8eed
status: unread
url: http://pharo.org/news/pharo6.0-released
title: Pharo 6.0 Released
content:
  <p>Pharo 6.0 released!</p>
  <p>Dear World,</p>
  <p>The time has come for <a href="http://pharo.org/" rel="noreferrer" target="_blank">Pharo 6.0</a>!</p>
  <p><strong>Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback.</strong></p>
  <p>This is our most significant release yet. Here are some highlights:</p>
  <ul><li>Pharo is now provided in 64-bit version in Linux and OSX and brings even better performance and stability (beware, 64bits version is a new technology and a small amount of tests is still failing)</li>
  <li>A new code changes management system named Epicea for easier reviewing and recovering of your code easily</li>
  <li>Integrated support for Git through an easy-to-use tool for repositories and commits management named Iceberg (as a preview for Pharo 6, it will be the default in Pharo 7)</li>
  <li>The unified foreign function interface (UnifiedFFI) for interfacing with the outside world is significantly improved</li>
  <li>The PharoVM is now part of OpenSmalltalk initiative</li>
  <li>Introduction of object immutability, alternative bytecode sets and block closures independent of outer context</li>
  <li>Pharo can now be bootstrapped from source code managed by Git</li>
  <li>Pharo modularity is improved</li>
  <li>Pharo is faster</li>
  <li>The Dark Theme was improved and set as default color theme of Pharo</li>
  </ul><p><img src="http://pharo.org/web/files/posts/pharo60-screenshot.jpg"/></p>
  <p>These are just the more prominent highlights, but the details are just as important. We have closed 1474 issues in Pharo 6.0 (a more complete changelog can be found at <a href="https://github.com/pharo-project/pharo-changelogs/blob/master/Pharo60ChangeLogs.md" rel="noreferrer" target="_blank">https://github.com/pharo-project/pharo-changelogs/blob/master/Pharo60ChangeLogs.md</a>).</p>
  <p>While the technical improvements are significant (starting the transition to 64bits is a remarkable achievement), still the most impressive fact is that the new code that got in the main Pharo 6.0 image was contributed by more than 80 people.</p>
  <p>Pharo is more than code. It is an exciting project involving energetic people. We thank all the contributors of this release:</p>
  <p>Alberto Bacchelli, Alejandro Infante, Alexandre Bergel, Aliaksei Syrel, Alistair Grant, Andrei Chis, Ben Coman, Bernardo Contreras, Bernhard Pieber, Boris Spasojevic, Christophe Demarey, Clement Bera, Cyril Ferlicot, Dale Henrichs, Damien Cassou, Damien Pollet, Dave Lewis, Denis Kudriashov, Dirk Roeleveld, Eliot Miranda, Esteban Lorenzano, Esteban Maringolo, Evan Donahue, Federico Balaguer, Franck Warlouzet, Glenn Cavarle, Guillermo Polito, Gustavo Santos, Henrik Johansen, Henrik Nergaard, Hilaire Fernandes, Holger Hans, Jan Kurs, Jan van de Sandt, Johan Fabry, Juraj Kubelka, K. K. Subramaniam, Ken Causey, Kris Gybels, Lionel Akue, Luc Fabresse, Lucas Godoy, Marcus Denker, Mariano Martinez Peck, Marion Noirbent, Martin Dias, Max Leske, Maxime Roelandt, Merwan Ouddane, Matteo Bellotto, Miguel Campusano, Milton Mamani, Myroslava Romaniuk, Nicolai Hess, Nicolas Cellier, Nicolas Passerini, Norbert Hartl, Offray Luna, Pablo Tesone, Paul De Bruicker, Pavel Krivanek, Peter Uhnak, Philippe Back, Roger Stebler, Ronie Salgado, Sean DeNigris, Serge Stinckwich, Skip Lentz, Sophie Kaleba, Stefan Reichhart, Stephan Eggermont, Stephane Ducasse, Sven Van Caekenberghe, Thibault Arloing, Thibault Arloing, Thibault Raffaillac, Thierry Goubier, Thomas Heniart, Tommaso Dal Sasso, Torsten Bergmann, Tudor Girba, Udo Schneider, Valentin Ryckewaert, Vincent Blondeau, Werner Kassens, Yuriy Tymchuk</p>
  <p>(If you contributed with Pharo 6.0 development in any way and we missed your name, please send us a mail and we will add you).</p>
  <p>Enjoy!</p>
  <p><em>The Pharo Team</em></p>
  <p>Try Pharo: <a href="http://pharo.org/download" rel="noreferrer" target="_blank">http://pharo.org/download</a></p>
  <p>Learn Pharo: <a href="http://pharo.org/documentation" rel="noreferrer" target="_blank">http://pharo.org/documentation</a></p>
  <p>Tue, 6 Jun 2017 14:50:00 +0000</p>


  <p>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript" rel="noreferrer" target="_blank">comments powered by Disqus.</a></p>
   <a href="https://disqus.com/" rel="noreferrer" target="_blank">comments powered by </a>


checksum: b2acb3ec
status: unread
url: https://www.youtube.com/watch?v=wj2Lvuc28k0
title: Dasung Paperlike Pro: E-Ink Monitor with HDMI connector [video]
content:
  <iframe width="560" height="315" src="//www.youtube.com/embed/wj2Lvuc28k0" frameborder="0"></iframe>


checksum: cd94a5f0
status: unread
url: https://github.com/alexpate/awesome-design-systems
title: A curated list of design systems, pattern libraries, and more
author: alexpate
language: en
content:
  <h3> README.md</h3>

  <blockquote>
  <p>⚒ A curated list of awesome design systems, pattern libraries, and everything inbetween</p>
  </blockquote>
  <h4><a href="https://github.com/alexpate/awesome-design-systems#categorisation" rel="noreferrer" target="_blank"></a>Categorisation</h4>
  <ul><li>🗣 = Voice &amp; Tone</li>
  <li>⚒ = Components</li>
  <li>🎨 = Sketch UI Kit</li>
  </ul><h4><a href="https://github.com/alexpate/awesome-design-systems#note" rel="noreferrer" target="_blank"></a>Note</h4>
  <p>Although &#039;design systems&#039;, &#039;ui libraries&#039;, and &#039;pattern libraries&#039; are different things, they are often used interchangeably. This list contains all three.</p>
  <h3><a href="https://github.com/alexpate/awesome-design-systems#contributions" rel="noreferrer" target="_blank"></a>Contributions</h3>
  <p>Know a resource that isn&#039;t listed above? Contributions are more than welcome!</p>


checksum: 0ca3a3e7
status: unread
url: https://www.eff.org/pages/list-printers-which-do-or-do-not-display-tracking-dots
title: List of Printers Which Do or Do Not Display Tracking Dots
language: en
content:
  <h2>Warning</h2>
  <p>(Added 2015) Some of the documents that we previously received through FOIA suggested that <strong>all</strong> major manufacturers of color laser printers entered a secret agreement with governments to ensure that the output of those printers is forensically traceable. Although we still don&#039;t know if this is correct, or how subsequent generations of forensic tracking technologies might work, it is probably safest to assume that <strong>all</strong> modern color laser printers do include some form of tracking information that associates documents with the printer&#039;s serial number. (If any manufacturer wishes to go on record with a statement to the contrary, we&#039;ll be happy to publish that here.)</p>
  <p>Forensic investigations of the source of documents produced with other printing technologies are also possible, but, as far as we know, other kinds of printers do not deliberately encode their serial numbers in their output.</p>
  <h2>Introduction</h2>
  <p>This is a list of color laser printer models that do or do not print yellow tracking dots on their output.</p>
  <p>We tried to interpret the information conveyed by these dots as part of our <a href="http://www.eff.org/Privacy/printers/" rel="noreferrer" target="_blank">Machine Identification Code Technology Project</a>.</p>
  <h2>Limitations of this information</h2>
  <p>A &quot;no&quot; simply means that we couldn&#039;t see yellow dots; <strong>it does not prove that there is no forensic watermarking present</strong>. (For example, the HP Color LaserJET 8500 series does not include any yellow tracking dots that we can see, but it may still include some kind of forensic marking, since the majority of other Color LaserJET models do. <a href="http://shay.ecn.purdue.edu/~prints/" rel="noreferrer" target="_blank">Other forensic marking techniques have been invented</a>, and we do not yet know how to determine whether these techniques are used by a particular printer.)</p>
  <p>A &quot;yes&quot; simply means that we (or another source, as noted) <strong>saw yellow dots that appeared anomalous to us</strong>. Until we decipher the marking schemes or receive other confirmation, this does not constitute proof that any particular kind of information is represented by these dots. In a very few cases, for example, they might be the result of a <a href="http://en.wikipedia.org/wiki/Dithering#Digital_photography_and_image_processing" rel="noreferrer" target="_blank">dithering technique</a>, rather than a forensic mark, or they could be the result of a poorly calibrated printer. In most cases, we are confident that the arrangement of dots is intentional and is intended to track users.</p>
  <h2>Sources of information</h2>
  <p>We have employed three sources of information. We looked at printer output under a blue light and/or a computer microscope; we consulted press reports about printers (e.g. at <a href="http://www.druckerchannel.de/" rel="noreferrer" target="_blank">Druckerchannel</a>); we relied on printer manuals and other manufacturer statements. We welcome additional statements by manufacturers, resellers, or technicians.</p>
  <p>Thanks to our friends at software firms and symphonies, public schools and physics labs, semiconductor fabs and ice cream parlors, in about a dozen countries around the world.</p>
  <h2>Table of printers</h2>
  <table><tr><th><strong>Manufacturer</strong></th>
  <th><strong>Model</strong></th>
  <th><strong>Dots?</strong></th>
  <th><strong>Comments</strong></th>
  </tr><tr>
  <td>HL-2700CN</td>
  <td>yes</td>
  <td>volunteer test</td>
  </tr><tr>
  <td>HL-4200CN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>CLC 1000</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLC 2400</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLC 3002</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLC 4000</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLC 5000+</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>CLC-iR 3200-C1</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color imageRUNNER C2570</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color imageRUNNER C3100CN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color imageRUNNER C3200</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color imageRUNNER C3200N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color imageRUNNER C3220</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color Laser Copier 1150</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Imageclass MF8170C</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>LBP 2410</td>
  <td>unclear</td>
  <td>faint dots; could be artifacts</td>
  </tr><tr>
  <td>3000CN</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>3100CN</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>5100CN</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>AcuLaser C900</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>AcuLaser C1100</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>AcuLaser C1500</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>AcuLaser C1900</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>AcuLaser C3000</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>AcuLaser C4000</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 1550L</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 1600</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2250LN</td>
  <td>no<br/>(??)</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2500</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2500L</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2500N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2550</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2550L</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2550N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2600N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2680</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 2700N</td>
  <td>yes</td>
  <td>volunteer test</td>
  </tr><tr>
  <td>Color LaserJET 2840</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 3500</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 3550</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 3600DN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 3700</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 3700DN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 3700N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4500</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4500DN</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4500N</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4550</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4550N</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4600</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4600DN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4600HDN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4600N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4650</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4650DN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4650DTN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 4700</td>
  <td>yes</td>
  <td>volunteer test</td>
  </tr><tr>
  <td>Color LaserJET 4700DN</td>
  <td>yes</td>
  <td>volunteer test</td>
  </tr><tr>
  <td>Color LaserJET 4700DTN</td>
  <td>yes</td>
  <td>volunteer test</td>
  </tr><tr>
  <td>Color LaserJET 5M</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5100CN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5500</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5500ATN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5500DN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5500HDN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5550</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5550DN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 5550DTN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 8500</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 8500DN</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 8550</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 8550DN</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 8550GN</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 9500</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 9500HDN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Color LaserJET 9500MFP</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Infoprint Color 1454</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Infoprint Color 1464 PS3</td>
  <td>yes</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Bizhub C252</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Bizhub C350</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Colorforce 1501</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Colorforce 8050</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DialtaColor CF 2001</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>DialtaColor CF 2002</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Ikon CPP500E</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2 Desklaser</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2200 DL</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2210</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2300 DL</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2300 W</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2350</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2350 EN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2400 W</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2430 DL</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 2450</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 3100</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 3300</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 5450</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Magicolor 7300</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>C2630D</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>FS-C5016N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>FS-C5020N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>FS-C5030N</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>FS-C8008</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>Mita KM-C2230</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>LD238C</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>LP125CX/LP126CN</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>C510</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C720</td>
  <td>unclear</td>
  <td>retest</td>
  </tr><tr>
  <td>C752</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C752N</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C760</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C910</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C912</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>DSc38</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C5100</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C5150</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C5150N</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C5200</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C5300</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C7200</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C7350</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C7400</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C7400N</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C9200</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C9300</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C9400</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>MIP C5540</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>OkiLAN 8100E</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Workio KXCL-500</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Aficio 1224C</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Aficio 1232C</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Aficio CL 2000</td>
  <td>yes</td>
  <td>press report</td>
  </tr><tr>
  <td>Aficio CL 3000</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Aficio CL 3000E</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Aficio CL 6010</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Aficio CL 7000</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>AP 206</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>Infotec/Danka ISC 2838</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>CLP-500</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLP-510</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLP-550</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLP-550N</td>
  <td>no</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>C3210</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>CLP35</td>
  <td>yes</td>
  <td>EFF<br/>test</td>
  </tr><tr>
  <td>eStudio 210c</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>eStudio 211c</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>eStudio 310c</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>eStudio 311c</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>eStudio 2100c</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>eStudio 3100c</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>eStudio 3511</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>FC15</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>FC15i</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>FC22</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>FC22i</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>FC25P</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>FC25Pi</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>FC70</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>DocuColor 12</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DocuColor 40</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DocuColor 1521</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DocuColor 1632</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DocuColor 2000</td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr><tr>
  <td>DocuColor 2045</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DocuColor 2240</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DocuColor 3535</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>DocuColor 5252</td>
  <td>yes</td>
  <td>EFF test/mfr. statement</td>
  </tr><tr>
  <td>DocuColor 6060</td>
  <td>yes</td>
  <td>EFF test/mfr. statement</td>
  </tr><tr>
  <td>Phaser 560</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 740</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 750 (Z750V)</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 750P</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 790</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 850DP</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 860DP</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 1235</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 6100</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 6200</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 6200DP</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 6250DP</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 6350DP</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 7300DN</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 7300DT</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 7700</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 7750DN</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 8200DP</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 8200DX</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 8400</td>
  <td>no</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Phaser 8400B</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Phaser 8400DP</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Phaser 8400DX</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Phaser 8400N</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Phaser 8440DP</td>
  <td>unclear</td>
  <td>dithering?</td>
  </tr><tr>
  <td>Phaser 8550</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 8550DP</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>Phaser 8560MFP/D</td>
  <td>no</td>
  <td>EFF test</td>
  </tr><tr>
  <td>WorkCentre M24</td>
  <td>yes</td>
  <td>EFF test</td>
  </tr><tr>
  <td>WorkCentre Pro <em>(all<br/>models)</em></td>
  <td>yes</td>
  <td>mfr. statement</td>
  </tr></table>


checksum: 6d38f6b0
status: unread
title: Alex Honnold Scales El Capitan Without Ropes, and the Climbing World Reels
author: Bill Chappell
language: en
url:
  http://www.npr.org/sections/thetwo-way/2017/06/05/531584651/alex-honnold-scales-el-capitan-without-ropes-and-the-climbing-world-reels?utm_campaign=storyshare&utm_source=twitter.com&utm_medium=social

content:
  <blockquote>




  <p><a href="https://www.instagram.com/p/BU443bgjWHz/" rel="noreferrer" target="_blank">A post shared by National Geographic (@natgeo)</a> on <time datetime="2017-06-03T19:18:30+00:00">Jun 3, 2017 at 12:18pm PDT</time></p>

  </blockquote>

  <p>Alex Honnold has shocked the sport of climbing by reaching the peak of El Capitan without using ropes, climbing one of the world&#039;s largest monoliths in less than four hours with little gear other than a bag of chalk.</p>
  <p>&quot;So stoked to realize a life dream today,&quot; Honnold wrote on Facebook on Saturday. He shared a photo of himself on the Yosemite National Park landmark taken by Jimmy Chin of <a href="http://www.nationalgeographic.com/adventure/features/athletes/alex-honnold/most-dangerous-free-solo-climb-yosemite-national-park-el-capitan/" rel="noreferrer" target="_blank">National Geographic</a>, which is basing a new documentary on Saturday&#039;s climb.</p>
  <p>&quot;Speechless,&quot; wrote the <a href="https://www.facebook.com/americanalpinejournal/posts/847401835399393" rel="noreferrer" target="_blank">American Alpine Journal</a> in its response to the news that Honnold had tackled the imposing 3,000-foot granite wall in a &quot;free-solo,&quot; ascent, climbing alone and without safety gear.</p>
  <p>Honnold raced up the wall in 3 hours and 56 minutes, prompting <a href="https://www.facebook.com/Alpinist/posts/10153891347932706" rel="noreferrer" target="_blank">Alpinist</a> magazine to say, &quot;This is indisputably the greatest free solo of all time. Congratulations, Alex!&quot;</p>
  <p>&quot;This man,&quot; Honnold&#039;s friend and fellow climbing star <a href="https://www.facebook.com/ConradAnkerOfficial/photos/a.161110693925766.23619.143199022383600/1315029598533864/?type=3&amp;theater" rel="noreferrer" target="_blank">Conrad Anker</a> wrote on Facebook. &quot;Respect. Life goal realized.&quot;</p>
  <p>After his climb, Honnold <a href="http://www.nationalgeographic.com/adventure/features/athletes/alex-honnold/interview-rope-free-solo-climb-yosemite-el-capitan/" rel="noreferrer" target="_blank">told National Geographic</a> that the first challenge was simply to walk up to the California monolith, sit next to the base and put his climbing shoes on.</p>
  <p>&quot;Because you look up and go, &#039;that&#039;s a f****** big wall,&#039; &quot; he said. &quot;It&#039;s like, pretty crazy.&quot;</p>

  <img src="https://media.npr.org/assets/img/2017/06/05/ap_17155772401614_custom-af740fc64b5b1082e8ee60ca2b865fe655c3ee4f-s1100-c15.jpg" alt=""/><a href="https://media.npr.org/assets/img/2017/06/05/ap_17155772401614_custom-af740fc64b5b1082e8ee60ca2b865fe655c3ee4f-s1200.jpg" rel="noreferrer" target="_blank">Enlarge this image</a>




  <p>Alex Honnold smiles after scaling El Capitan in Yosemite National Park, in a photo provided by <em>National Geographic</em>. Honnold became the first person to climb alone to the top of the massive granite wall without ropes or safety gear. <strong>Jimmy Chin/National Geographic via AP</strong> <strong>hide caption</strong></p>

  <strong>toggle caption</strong>
  Jimmy Chin/National Geographic via AP



  <p>A lighter moment came later, Honnold said, when he passed some climbers who had spent the night on a ledge. He did his best not to wake them.</p>


  <p>&quot;I woke up one guy and he sort of said, &#039;Oh, hey.&#039; Then when I went by, I think he discreetly woke up his buddies because when I looked down they were all three standing there like &#039;What the f***?&#039; &quot;</p>
  <p>By conquering El Capitan, Honnold fulfilled a goal he had worked toward for years. He first wrote about the potential record-setting climb in his journal in 2009 — but he repeatedly found reasons to set it aside, as he said last year on the <a href="https://soundcloud.com/banff-centre-radio/ep-14-alex-honnold" rel="noreferrer" target="_blank">Basecamp podcast</a> with <em>Gripped</em> editor Brandon Pullan.</p>
  <p>&quot;Obviously, that&#039;s like, the thing to do,&quot; Honnold said when discussing El Capitan with Pullan in 2016, adding, &quot;it&#039;s always seemed really scary.&quot;</p>
  <p>Honnold, 31, has become famous for eye-popping ascents that rely on his unique blend of athleticism and mental focus, ascending Yosemite&#039;s Half Dome and Zion National Park&#039;s Moonlight Buttress. But <a href="http://gripped.com/news/alex-honnold-makes-historic-first-free-solo-of-el-capitan/" rel="noreferrer" target="_blank">Gripped says</a> of Honnold&#039;s El Capitan free-solo climb, &quot;this is by far the most groundbreaking.&quot;</p>
  <p>While Honnold said in the podcast that he found the idea of free-soloing the monolith &quot;out of the question,&quot; he also told Pullan that he&#039;d been studying it for years and &quot;El Cap is definitely doable.&quot;</p>
  <p>&quot;I mean, there are two routes that you could potentially do, like Freeride or Golden Gate — they&#039;re the two easiest free routes,&quot; Honnold said, in a statement that only makes sense coming from someone who&#039;s often called one of the greatest rock climbers the world has ever seen.</p>
  <p>The challenges on El Capitan, he said, start early, no matter which route you take.</p>
  <p>&quot;They all start with Freeblast, which is like a 10-pitch slab,&quot; Honnold said, adding that large sections of the granite slab are &quot;basically like walking on a sheet of glass.&quot;</p>
  <p>The crux of one pitch, he said, is &quot;like this no-hands, foot traverse thing, where you&#039;re just like, shuffling across a blank wall.&quot;</p>
  <p>Honnold added, &quot;That&#039;s before the [main] wall even starts, that&#039;s just like getting up there.&quot;</p>


checksum: 3e2a285f
status: unread
url: https://developer.apple.com/arkit/
title: ARKit
language: en
content:
  <h3>Overview</h3>
  <br/><h4>Visual Inertial Odometry</h4>
  <p>ARKit uses Visual Inertial Odometry (VIO) to accurately track the world around it. VIO fuses camera sensor data with CoreMotion data. These two inputs allow the device to sense how it moves within a room with a high degree of accuracy, and without any additional calibration.</p>
  <h4>Scene Understanding and Lighting Estimation</h4>
  <p>With ARKit, iPhone and iPad can analyze the scene presented by the camera view and find horizontal planes in the room. ARKit can detect horizontal planes like tables and floors, and can track and place objects on smaller feature points as well. ARKit also makes use of the camera sensor to estimate the total amount of light available in a scene and applies the correct amount of lighting to virtual objects.</p>
  <h4>High Performance Hardware and Rendering Optimizations</h4>
  <p>ARKit runs on the Apple A9 and A10 processors. These processors deliver breakthrough performance that enables fast scene understanding and lets you build detailed and compelling virtual content on top of real-world scenes. You can take advantage of the optimizations for ARKit in Metal, SceneKit, and third-party tools like Unity and Unreal Engine.</p>


checksum: d0b7c9f0
status: unread
url: https://twitter.com/tfoil2/status/872169336319782912
title: iOS 11 Location Privacy: "Only While Using" is now always an option for users
content:
  <p>[unable to retrieve full-text content]<a href="https://news.ycombinator.com/item?id=14502420" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 72fe256e
status: unread
url: https://news.ycombinator.com/item?id=14505643
title: Mission driven GoGoGrandparent is hiring their first engineer to help people age
content:
  <p>Hi full stack web developers,
  </p><p>GoGoGrandparent builds products that help older adults age independently in their home. Apart from being a wonderful thing to do, two trends are coming together over the next decade that make this market really interesting:</p><p>(1) people are getting older. 10,000 people retire every day.</p>
  <p>(2) people have smaller families that live far away from each other. So when things get rocky for older adults, either family members have to move, the older adult has to move or the family has to pay tens of thousands of dollars to hire a caregiver.</p>
  <p>GoGoGrandparent believes we can keep people in their homes, and stave off more expensive support services for two to three years, if not indefinitely. The first and biggest problem people come across as they age is mobility, but there is much more to do.</p>
  <p>Your first project would be to make a dashboard families can use to manage the services of their older loved ones.</p>
  <p>ABOUT THIS PROJECT:</p>
  <p>- Our backend is Node.js, Express.js, MySQL, Twilio API, AWS</p>
  <p>- The dashboard has been designed and sufficiently mulled over (so you don&#039;t have to have design experience)</p>
  <p>- We don&#039;t have a front end. GoGoGrandparent.com was built on a website builder. You would be responsible for choosing the front end stack.</p>
  <p>- Open to contract-to-hire</p>
  <p>- Compensation range is $60k - $140k &amp; 1% - 3% in stock</p>
  <p>- We&#039;re based in Mountain View but are open to any candidates living in the Bay Area.</p>
  <p>WHAT WE&#039;RE LOOKING FOR:</p>
  <p>- 1+ years of work experience, preferably with some derivation of JavaScript (ES6), ideally Node.js</p>
  <p>- Degree in Computer Science</p>
  <p>- You&#039;ve shipped your own stuff, start to finish, at least once</p>
  <p>TO APPLY EMAIL FOUNDERS@GOGOGRANDPARENT.COM YOUR:</p>
  <p>(1) resumé,(2) github, (3) two sentences about why you&#039;d like the gig</p>
  <p>ABOUT US:</p>
  <p>- The team is me, David &amp; two interns</p>
  <p>- We&#039;re growing fast</p>
  <p>- I was the first product and operations manager at Soothe, the biggest on demand massage company in the world. I took them from their Seed round to their Series A 6 months later. While there I learned how to work with older non-technical demographics (a typical user is mid 50s - 60s) and how important good customer service can be to certain types of companies.</p>
  <p>- My cofounder is David Lung. When David graduated from Berkeley he started his own app making business. He grew that business to dozens of people producing over 70 apps in two years. We met at a hackathon in January of 2015 and have lived together ever since.</p>
  <p>- We both know how to code. I&#039;m pretty bad and David is very good.</p>
  <p>- There are a lot of great things about this gig. My personal favorite is that every day, people that have lived 4-5 times longer than me tell us that just when they thought nothing else good would happen, we have come along and changed their life.</p>
  <p>Thank you for reading this job post and your interest in GoGoGrandparent,</p>
  <p>Justin</p>
  <p>CONTRACTING COMPANIES: We&#039;ve had great success with contracting companies in the past. We are not interested in working with one right now because we want this project to help us find a long term team member.</p>


checksum: 1ab57a95
status: unread
url: https://monicahq.com/
title: Show HN: Monica, an open-source CRM to manage friends and family
language: en
content:
  <h3>Why Monica?</h3>
  <p>Monica is for people who have jobs, a family and are busy trying to find a good work/life balance. So busy, that they don’t have time anymore to remember to call a friend, say happy birthday to a nephew, or remember to invite someone special to come eat dinner next week. The older we get, the more life gets in the way. It’s sad, but it’s just a matter of priorities. I’ve created Monica to help these people.</p>
  <p>Monica is not for everyone. It’s probably not targeted at people who see their friends every day and have a super busy social life.</p>
  <p>Monica is not a social network. It’s not Facebook. It’s for your eyes only.</p>
  <p>Monica is the first real Friends Relationship Management out there.</p>


checksum: fb554ab8
status: unread
url: http://www.itbiz.cz/zpravicky/senat-schvalil-predlohu-zakona-o-kyberneticke-bezpecnosti
title: Senát schválil předlohu zákona o kybernetické bezpečnosti
language: cs
content:
  <p>Především budou muset hlásit případné bezpečnostní incidenty. Vládní předlohu, která to předpokládá, dnes schválil Senát. Novela, jež nyní zamíří k podpisu prezidentovi, navíc předpokládá vznik samostatného úřadu pro kybernetickou bezpečnost. V současnosti tato oblast spadá pod Národní bezpečnostní úřad.</p>
  <p>Předloha vesměs přejímá evropskou směrnici. Počítá s tím, že nově zahrnuté skupiny subjektů budou muset přijmout odpovídající kroky, aby zabránily možným bezpečnostním rizikům. Případné kybernetické incidenty budou povinně oznamovat bezpečnostnímu úřadu. Týkat se to bude podle novely rovněž klíčových poskytovatelů digitálních služeb, například platforem pro elektronické obchodování a vyhledávače.</p>
  <p>Nový Národní úřad pro kybernetickou a informační bezpečnost, jenž bude sídlit v Brně, bude zakládat vládní zmocněnec pro tuto oblast Dušan Navrátil. Předpokládá se, že vznikne nejpozději na podzim. &quot;Já jsem přesvědčena, že tento úřad potřebujeme,&quot; řekla senátorka Renata Chmelová (za KDU-ČSL). Poukazovala přitom na příchod nových technologií, které s sebou nesou i nová rizika. Tým pracující na vzniku nového úřadu je podle ní na špičkové evropské úrovni. Senátor Jaroslav Zeman (ODS) vyjádřil naději, že úřad bude mít dost peněz na to, aby své odborníky zaplatil.</p>
  <p>Evropská směrnice má zajistit v unii společnou úroveň bezpečnosti sítí a informačních systémů, které představují jeden ze základních prvků fungování vnitřního trhu Evropské unie.</p>


checksum: fa45dbde
status: unread
url: http://www.itbiz.cz/zpravicky/rusti-hackeri-pry-napadli-hlasovaci-software-usa
title: Ruští hackeři prý napadli hlasovací software USA
language: cs
content:
  <p>Ruští hackeři napadli několik dní před loňskými americkými prezidentskými volbami server nejméně jednoho dodavatele amerického hlasovacího softwaru. Vyplývá to z uniklé zprávy Národní bezpečnostní agentury (NSA), kterou zveřejnil server The Intercept. Mluvčí Kremlu obvinění popřel. Zřejmě v souvislosti s tímto únikem v USA už zadrželi 25letou ženu, informovala agentura AP.</p>
  <p>V uniklé zprávě se nepíše, zda měl hackerský útok nějaký vliv na výsledky voleb. Ruská vojenská rozvědka GRU podle ní ale napadla společnost dodávající hlasovací software a na konci října a počátku listopadu loňského roku poslala takzvané phishingové e-maily na adresy více než stovky amerických volebních úřadů.</p>
  <p>Americké ministerstvo spravedlnosti obvinilo zaměstnankyni vládního dodavatele ve státě Georgia, která podle něj vynesla přísně tajné informace z vládní agentury. Podle amerických médií 25letá Reality Leigh Winnerová, která jako zaměstnanec analytické společnosti Pluribus International smluvně pracovala pro NSA od února, odcizila právě zprávu o ruském hackerského útoku. Její právník to ale odmítl potvrdit.</p>
  <p>Na Winnerovou, kterou policie v sobotu zadržela, vyšetřovatelé přišli v rámci oajasňování úniku informací. Protože list papíru s vynesenými údaji byl přeložený, došli k závěru, že materiál byl vytištěn a následně vynesen ze zabezpečených prostorů. Winnerová pak byla označena za jeden z šesti lidí, kteří dokument tiskli. Následná kontrola jejího počítače ukázala, že si elektronicky dopisovala s novináři.</p>
  <p>Winnerová se podle BBC při výslechu doznala, že dokument vytiskla a že věděla, že informace v něm uvedené by mohly poškodit Spojené státy a poskytnout cizím zemím výhodu. Dokument týkající se zmíněného hackerského útoku byl určen k utajování nejméně do roku 2042.</p>
  <p>Mluvčí ruského prezidenta Dmitrij Peskov dnes obvinění vznesená v uniklé zprávě odmítl. Kreml podle něj nevidí &quot;žádný důkaz, který by dokazoval, že je tato informace pravdivá&quot;. Moskva důrazně odmítá možnost, že by za hackerskými útoky byla ruská vláda, dodal Peskov.</p>


checksum: a4032c74
status: unread
url: http://www.itbiz.cz/zpravicky/cesi-jsou-k-budoucnosti-vlastniho-podnikani-skepticti
title: Češi jsou k budoucnosti vlastního podnikání skeptičtí
language: cs
content:
  <p>Jen 30 % českých malých a středních podniků má písemný plán na více než šest měsíců. Hlavními důvody neexistence dlouhodobějšího plánu je soustředění na krátkodobé priority, spoléhání na intuici nebo to, že plánování komplikuje nestabilita hotovostních toků.</p>
  <p>Pouze čtvrtina (26 %) malých a středních českých firem hodlá podle průzkumu Microsoftu v nejbližších letech navýšit investice do IT, přestože více než polovina těchto firem není se současnou úrovní investic spokojena. 29 % to v úmyslu nemá a téměř polovina (46 %) zatím neví.</p>
  <p>„Naznačuje to, že malé a střední firmy chápou, že moderní technologie jsou kritické pro jejich budoucí růst, ale nemají jasno v tom, na co se strategicky zaměřit,“ soudí Ondřej Novodvorský, ředitel pro malé a střední firmy Microsoft Česká republika a Slovensko. „Je to vidět i na způsobu, jak o investicích do technologií rozhodují.“</p>
  <p>Microsoft provedl průzkum mezi 13 000 malými a středními podniky ve 20 evropských zemích. O svém vztahu k technologiím vypovídalo i 1000 firem z ČR.</p>
  <p>Průzkum ukázal, že když dojde na byznys, Češi nevidí svou budoucnost nijak zvlášť optimisticky. Důvěru v něj má jen 41 % majitelů a zaměstnanců českých firem do 250 zaměstnanců. Z mezinárodního srovnání Češi vycházejí jako druzí největší skeptici hned po Řecku (24 %), daleko za sousedními zeměmi, jako je Polsko (73 %), Německo (69 %) či Slovensko (66 %).</p>
  <p>To, že firma do IT investuje příliš málo, si myslí 51 % respondentů z ČR, opak si myslí 6 %. Přesto v příštích letech plánuje navýšit své investice do IT pouze 26 % českých firem. Jen 14 % českých firem se přitom rozhoduje o svých investicích do technologií strategicky na pravidelných poradách o trendech na trhu a potřebách firmy. To je nejméně v Evropě.</p>
  <p>Pro čtyři české firmy z deseti znamená digitální transformace především přechod z „papíru“ na digitální formy práce (39 %). Téměř polovina (46 %) respondentů si pod digitální transformací představí automatizaci základních oblastí – tedy procesu řízení vztahů se zákazníky, aplikací či služeb pro finance, účetnictví a sledování skladových zásob či nástroje pro analýzu obchodních a tržních dat. To je na úrovni evropského průměru (50 %). Pro necelou čtvrtinu českých firem je digitalizace spojená s možností zaměstnanců pracovat odkudkoli (22 %).</p>


checksum: ee32f2a4
status: unread
url: http://www.itbiz.cz/zpravicky/trh-s-nositelnou-elektronikou-pokracoval-v-rustu
title: Trh s nositelnou elektronikou pokračoval v růstu
language: cs
content:
  <p>Světový trh s takzvanou nositelnou elektronikou, jako jsou například chytré hodinky či fitness náramky, pokračoval v letošním prvním čtvrtletí v růstu. Dodávky těchto produktů se meziročně zvýšily o téměř 18 procent na 24,7 milionu. Informovuje o tom na svých internetových stránkách výzkumná společnost IDC.</p>
  <p>O vedoucí pozici na trhu se nyní podle IDC dělí čínská společnost Xiaomi a americká firma Apple, které předstihly konkurenta Fitbit. &quot;Teď, když Xiaomi a Apple vytlačily Fitbit, je otázkou, zda si svou pozici dokážou udržet,&quot; uvedl analytik IDC Ramon Llamas. Dodal, že firma Fitbit ještě rozhodně není ze hry.</p>
  <p>Společnost Fitbit se stala průkopníkem v oblasti takzvaných fitness náramků. Firma se nyní podle Llamase nachází uprostřed transformace, protože zájem uživatelů se přesunuje od fitness náramků k chytrým hodinkám a dalším zařízením. &quot;Fitbit má dobrou pozici k proniknutí do nových tržních segmentů,&quot; upozorňuje Llamas.</p>
  <p>Společnosti Xiaomi a Apple dodaly v prvním čtvrtletí každá zhruba 3,6 milionu zařízení z kategorie nositelné elektroniky. Pro Apple to nicméně znamenalo meziroční nárůst o 64 procent, zatímco pro Xiaomi zhruba tříprocentní pokles. Firma Fitbit zaznamenala propad o téměř 38 procent na tři miliony zařízení.</p>


checksum: 5150c6c9
status: unread
url: http://www.itbiz.cz/clanky/dell-emc-zjednodusuje-hyperkonvergovanou-infrastrukturu
title: Dell EMC zjednodušuje hyperkonvergovanou infrastrukturu
language: cs
content:
  <img src="http://www.itbiz.cz/images/upload/d/dell-emc-vxrail_m.jpg" alt="Dell EMC zjednodušuje hyperkonvergovanou infrastrukturu"/><p>Zařízení Dell EMC VxRail, VxRack a zařízení XC Series hyperkonvergované infrastruktury (HCI), která zjednodušují její zavádění, představila společnost Dell EMC. Vylepšení se týkají zařízení, systémů, a zahrnují také modely pro zjednodušení pořizování, nasazení a správy.</p>


  <p>Hyperkonvergované systémy Dell EMC VxRack představují dobrou volbu pro zákazníky, kteří v datovém centru zavádějí softwarově definované technologie, a díky předem integrovaným fyzickým nebo softwarově definovaným sítím jsou připraveny k použití v infrastruktuře HCI. Zařízení Dell EMC VxRail jsou stále častěji nasazována pro základní aplikační úlohy datových center, a proto budou od verze 4.5 poskytovat několik nových funkcí, které budou během nadcházejících měsíců dostupné na serverech Dell EMC PowerEdge čtrnácté generace:</p>
  <ul><li>
  <p>Vylepšené funkce pro korporátní nasazení: Zjednodušená instalace a implementace pomohou firemním zákazníkům spravovat rozsáhlá nasazení zařízení VxRail. Nástroje pro nasazení zařízení VxRail optimalizované pro nasazení jednoho zařízení za pouhých 20 minut je nyní možné používat i ve větších clusterech, což zákazníkům umožňuje přidávat deset nebo i více zařízení stejně snadno jako v případě jednoho zařízení.</p>
  </li>
  <li>
  <p>Vyšší hardwarová flexibilita snižující celkové náklady na vlastnictví: Nové konfigurace s jedním procesorem, jejichž cena začíná už na 25 000 dolarů za tříuzlový cluster, snižují náklady na nasazení softwaru licencovaného podle počtu procesorů při škálování až na 64 uzlů. Nové možnosti pro sítě zahrnují až 12 dodatečných portů a umožňují nasazovat zařízení VxRail v prostředích, která vyžadují, aby sítě jednotlivých aplikačních úloh byly fyzicky oddělené.</p>
  </li>
  <li>
  <p>Podpora nejnovějších technologií VMware: Nová řešení VMware vSphere 6.5 a VMware vSAN 6.6 přidávají optimalizované algoritmy datových služeb zvyšující výkon flashových pamětí, softwarově definované šifrování uložených dat na ochranu před nežádoucím přístupem k datům a zvýšenou ochranu roztažených clusterů.</p>
  </li>
  <li>
  <p>Větší interoperabilita s technologiemi Dell EMC: Zákazníci mohou při nasazení zařízení VxRail využívat centralizovanou bránu Dell EMC Secure Remote Services (ESRS), která na jednom místě zpřístupňuje zabezpečenou, obousměrnou vzdálenou podporu pro celou infrastrukturu Dell EMC.</p>
  </li>
  </ul><p>Aktualizace portfolia VxRack, které tvoří systémy VxRack Flex založené na řešení ScaleIO a systémy VxRack SDDC využívající řešení VMware Cloud Foundation, mimo jiné zahrnují:</p>
  <ul><li>
  <p>Podpora dalších aplikací s velkými nároky na data: Systémy VxRack FLEX rozšiřují konfigurace s podporou serverů Dell EMC PowerEdge R930 a umožňují tak i aplikace s největšími nároky na data, jako jsou úlohy OLTP, databáze v paměti, OLAP, CRM nebo ERP.</p>
  </li>
  <li>
  <p>Vysoce výkonná síťová architektura pro moderní datová centra: Součástí systémů VxRack FLEX jsou nyní přepínače Cisco Nexus 93180YC-EX nové generace, které zvyšují škálovatelnost a výkon a nativně podporují softwarově definované sítě.</p>
  </li>
  <li>
  <p>Větší flexibilita hardwaru: Systémy VxRack SDDC nyní nabízejí šest dalších uzlů založených na serverech PowerEdge R630. Zákazníci tak mají na výběr z konfigurací, které umožňují navýšení výkonu, a současně i z konfigurací na základní úrovni, co se týče počtu jader a procesorů a velikosti paměti.</p>
  </li>
  </ul><p>Hyperkonvergovaná zařízení řady Dell EMC XC Series spojují výpočetní, síťové, úložné a virtualizační prostředky v zařízeních o velikosti 1U nebo 2U, která jsou dodávána na klíč a nakonfigurována podle objednávky zákazníka. Zařízení řady XC Series se nejlépe hodí pro zákazníky, kteří požadují možnost výběru hypervizoru, včetně Microsoft Hyper-V, a podporují nejrůznější specifické scénáře používání, od typických podnikových obchodních aplikací až po prostředí VDI. Mezi novinky v portfoliu patří:</p>
  <ul><li>
  <p>Dell EMC XC430 Xpress: Toto nové zařízení nabízí malým a středně velkým firmám kompletní řešení infrastruktury vše v jednom, s cenami robustních tříuzlových konfigurací již od 25 000 dolarů. Zařízení XC430 Xpress, optimalizované pro nejmenší prostředí sestávající z až čtyř uzlů, konsoliduje servery a úložiště, v racku mu postačuje prostor 3U, a výrazně tak zjednodušuje místní infrastrukturu.</p>
  </li>
  <li>
  <p>Dell EMC XC Series s řešeními Dell EMC Data Protection: Řešení Dell EMC Avamar Virtual Edition, Data Domain a Data Domain Virtual Edition spolu s řadou XC Series nabízejí efektivní ochranu dat na podnikové úrovni, zjednodušují zálohování a zotavení po havárii a přinášejí možnosti, které dříve pro řadu XC Series nebyly dostupné.</p>
  </li>
  <li>
  <p>Dell EMC XC Series s platformou Pivotal Cloud Foundry: Výsledkem spolupráce technických týmů XC Series a Pivotal s cílem podpořit rychlý vývoj a nasazení aplikací na platformě Pivotal Cloud Foundry bylo vytvoření ideální konfigurace a příručky pro nasazení, což omezuje rizika a zákazníkům umožňuje zvýšit produktivitu vývojářů a snížit provozní náklady na IT.</p>
  </li>
  </ul><h3>Čtrnáctá generace serverů Dell EMC PowerEdge posílí portfolio HCI</h3>
  <p>Portfolio serverů Dell EMC PowerEdge čtrnácté generace bude sloužit jako moderní výpočetní základna pro celé portfolio hyperkonvergované infrastruktury Dell EMC. Toto nové serverové portfolio přináší vyšší škálovatelnost a výkon, což prostřednictvím testování a ověřování bude přínosem i pro technologicky plně připravená, na míru dodávaná řešení HCI od společnosti Dell EMC, která zákazníkům umožní urychlit modernizaci jejich datových center. Společnost Dell EMC začne začleňovat možnosti čtrnácté generace serverů PowerEdge do svého portfolia HCI v nadcházejících měsících.</p>
  <p>Společnost Dell EMC navíc snižuje překážky bránící vstoupit do světa virtualizace klientských počítačů a aplikací výrazně prostřednictvím kompletních řešení Dell EMC VDI Complete pro infrastrukturu VDI, která využívají software VMware Horizon. Tato ucelená řešení zahrnují infrastrukturu, software a volitelně také koncové body a služby, to vše od jednoho dodavatele. Řešení VDI Complete je postaveno na zařízeních VxRail nebo uzlech Ready Node for vSAN a nabízí výjimečně nízké celkové náklady na vlastnictví a jeden kontakt pro podporu celého řešení.</p>
  <p>Podle analytické společnosti IDC si celosvětový trh hyperkonvergovaných systémů držel v roce 2016 trend jako nejrychleji rostoucí část širšího trhu konvergované infrastruktury a v globálních tržbách překonal hranici 2,2 miliardy dolarů, což oproti roku 2015 představuje výrazný nárůst o 110 procent. Podle IDC byl také ve čtvrtém čtvrtletí 2016 růst příjmů u zařízení VxRail čtyřikrát vyšší než na celém trhu HCI a vykázal více než 70procentní nárůst oproti předchozímu čtvrtletí. Společnost Dell Technologies byla na trhu hyperkonvergovaných systémů nejrychleji rostoucím dodavatelem, když v meziročním srovnání příjmů za 4. čtvrtletí roku 2016 dosáhla růstu 206 procent. Zařízení řady Dell EMC VxRail využívají jako jediná v odvětví řešení VMware vSAN a jsou výsledkem společného vývoje se společností VMware.</p>
  <p><img src="http://www.itbiz.cz/images/upload/d/dell-emc-vxrail.jpg"/></p>


checksum: f400f336
status: unread
url: http://www.itbiz.cz/zpravicky/exploit-kity-a-navrat-cerva-slammer
title: Exploit kity a návrat červa Slammer
language: cs
content:
  <p>Check Point zveřejnil dubnový Celosvětový index dopadu hrozeb, podle kterého i nadále roste počet kyberútoků využívajících exploit kity. Nejčastější formou útoku se stal exploit kit Rig.</p>
  <p>Zároveň byl vydán žebříček zemí, které jsou nejčastěji terčem kyberútoků. Česká republika si oproti březnu polepšila a ze 43. příčky se posunula o 20 míst mezi bezpečnější země na 63. místo. Hned na sousedním 62. místě je Slovensko, které se ale naopak posunulo mezi nebezpečnější země z březnové 97. příčky.</p>
  <p>Už v březnu došlo k nárůstu útoků pomocí exploit kitů, především v důsledku vzestupu sad Rig a Terror. Předtím několik měsíců množství útoků pomocí exploit kitů klesalo.</p>
  <p>Analýza odhalila v dubnu také náhlé oživení červa Slammer, který se po dlouhé přestávce vrátil do Top 3 nejčastějších škodlivých kódů. Slammer se poprvé objevil v roce 2003. Cílil na Microsoft SQL Server 2000 a šířil se tak rychle, že mohl způsobit odepření služby u některých postižených cílů. Je to podruhé za několik uplynulých měsíců, co se červ dostal mezi top 10 škodlivých programů.</p>
  <p>Nejrozšířenějším malwarem v dubnu byly Rig EK a HackerDefender, které ovlivnily 5 %, respektive 4,5 % organizací po celém světě. Na třetím místě se umístil červ Slammer, který měl dopad na 4 % společností.</p>


checksum: 64429d7b
status: unread
url: http://www.itbiz.cz/zpravicky/apple-predstavil-prvni-novy-produkt-za-nekolik-let-homepod
title: Apple představil první nový produkt za několik let - HomePod
language: cs
content:
  <p>Americká technologická firma Apple představila domácí chytrý reproduktor HomePod, který pomocí hlasových příkazů umí přehrávat hudbu a pomáhá řídit domácnost. Pro firmu je to první nový produkt za několik let, i když na trhu jsou již podobné, konkurenční přístroje, jako Amazon Echo a Google Home, uvedla agentura AP.</p>
  <p>Přístroj se aktivuje hlasem a je schopen reagovat na žádosti o informace a pomoc kolem domácnosti. Přístroj by měl být k dispozici od prosince v USA, Británii a Austrálii za cenu kolem 350 USD (8200 Kč). To je zhruba dvojnásobek ve srovnání s konkurencí.</p>
  <p>Přístroj Echo byl uveden na trh v roce 2015 a Google Home loni. Podle výzkumné společnosti eMarketers více než 35 milionů lidí v USA by mělo v letošním roce použít hlasem aktivovaný reproduktor nejméně jednou měsíčně. To je více než dvojnásobek ve srovnání s odhadem v loňském roce.</p>
  <p>Apple naposledy představil nový přístroj v září 2014. Tehdy to byly chytré hodinky Apple Watch.</p>
  <p>Apple rovněž uvedl, že jeho počítače Mac budou nově kompatibilní s virtuální realitou a dostanou lepší obrazovku a grafické schopnosti. Nicméně Apple přichází do této oblasti relativně pozdě. Systémy zaměřené na virtuální realitu již mají Samsung, Google, Facebook, HTC a Sony. Virtuální realita je již celá desetiletí označována za příští velkou věc. Zatím je však o ní spíše než mezi běžnými denními uživateli vysoký zájem mezi hráči, vývojáři a výrobci hardwaru, upozornila agentura Reuters.</p>


checksum: 2a7cc35e
status: unread
url: http://www.itbiz.cz/zpravicky/polsti-policiste-zatkli-gang-specializovany-na-internetove-podvody
title: Polští policisté zatkli gang specializovaný na internetové podvody
language: cs
content:
  <p>Polští policisté ve spolupráci s kolegy z dalších evropských zemí a s Evropským střediskem pro boj s počítačovou kriminalitou Europolu pozatýkali zločinecký gang, který při podvodech na internetu připravil tisícovku lidí nejméně o 2,5 milionu eur (asi 66 milionů Kč). Peníze od obětí propírali Poláci prostřednictvím bankomatů v sousedních zemích, včetně Česka. O operaci informoval server Helpnetsecurity.com.</p>
  <p>Gangsteři využívali tzv. bílé koně, tedy nastrčené osoby, které zastrašováním přiměli k zakládání bankovních účtů a ke kupování existujících firem. Ty pak dodávaly na důvěryhodnosti internetové inzerci na dovoz aut, hospodářských a zemědělských strojů, na které podvodníci vybírali zálohu. Kupci, pocházející vesměs z Německa a Polska, objednané zboží nikdy nedostali.</p>
  <p>Policejní zátah na gang se odehrál koncem května. Mezi devíti zatčenými je i vůdce gangu, který celý podvod vymyslel. &quot;Hrozí jim až deset let vězení,&quot; řekl televizi TVN 24 policejní mluvčí Pawel Petrykowski.</p>
  <p>Šéf Evropského střediskem pro boj s počítačovou kriminalitou označil úspěšnou operaci proti důmyslně operujícímu gangu za příklad spolupráce i jasný vzkaz zločincům, že strážci zákona dokážou postihnout i přeshraniční zločiny páchané na internetu.</p>


checksum: 8cd4257a
status: unread
url: http://www.itbiz.cz/zpravicky/dell-emc-uvadi-zarizeni-pro-integrovanou-ochranu-dat
title: Dell EMC uvádí zařízení pro integrovanou ochranu dat
language: cs
content:
  <p>Společnost Dell EMC představila nová řešení zálohování a ochrany dat.</p>
  <p>Novinka Dell EMC Integrated Data Protection Appliance (IDPA) představuje předintegrované zařízení na klíč, které v sobě konverguje úložiště určené na ochranu dat, software, vyhledávání a analytické funkce, zajišťuje ochranu dat v ekosystému aplikací a platforem a nabízí nativní technologii ukládání dat v cloudu do vrstev (tiering) pro jejich dlouhodobé uchování. Zároveň společnost Dell EMC uvedla nové funkce ve svém portfoliu produktů pro ochranu dat v cloudu.</p>
  <p>Dell EMC Integrated Data Protection Appliance představuje úložiště pro ochranu dat, ochranný software, vyhledávací a analytické funkce v jednom předkonfigurovaném zařízení. Podle dodavatele zajišťuje široké pokrytí fyzických i virtuálních prostředí, včetně podpory rozsáhlého aplikačního ekosystému a mnoho typů hypervizorů. Toto pokrytí lze jednoduše rozšířit do cloudu díky nativní technologii ukládání dat v cloudu do vrstev (tiering) pro jejich dlouhodobé uchování. Zařízení nabízí šifrování, detekci chyb, automatické zotavení a deduplikaci (průměrná míra deduplikace 55:1) pro data na firemních serverech i v cloudu. Podpora technologie Flash a instant restore pro VMware umožňují okamžitý přístup k virtuálním strojům, bez nutnosti jejich obnovy. Zákazníci mohou využít flashové funkce, díky nimž se zařízení uplatní jako transakční úložiště pro vývojářská a testovací prostředí.</p>
  <p>Zařízení IDPA poskytuje rovněž integraci s klíčovými aplikacemi a platformami včetně MongoDB, Hadoop a MySQL. Zařízení bude dostupné ve čtyřech různých modelech (DP5300, DP5800, DP8300 a DP8800) vyhovujících potřebám zákazníků z řad středně velkých a velkých firem. Základní verze začíná na 34 TB využitelné kapacity, nejvyšší model pak disponuje 1 PB využitelné kapacity.</p>
  <p>Představeny byly rovněž nové funkce Dell EMC pro ochranu dat v cloudu: S vydáním řešení Data Domain Virtual Edition (DD VE) 3.1 mohou organizace výkon, efektivitu a spolehlivost řešení Data Domain využít v cloudu. Řešení DD VE umožňuje zálohovat tradiční i nové typy úloh v cloudech Amazon Web Services (AWS) a Microsoft Azure a účinně je replikovat do cloudu, z cloudu i v jeho rámci. Řízení těchto záloh v cloudu lze navíc zajistit pomocí sady Data Protection Suite.</p>
  <p>Kombinace řešení Data Domain a sady Data Protection Suite nyní může zajistit také DR v cloudu: umožňuje organizacím rozšířit ochranu z firemního prostředí do cloudu AWS S3. Odesílání dat je podle dodavatele bezpečné a efektivní, vyžaduje minimální počet výpočetních cyklů a má na systém AWS minimální nároky. V případě havárie lze bitové kopie virtuálních počítačů obnovit a spustit z prostředí AWS. Protože řešení Data Protection Suite ani Data Domain není třeba instalovat do cloudu, výpočetní výkon je nutný pouze v případě obnovení, takže zákazníci ušetří další náklady.</p>


checksum: 50f24e94
status: unread
url: http://www.itbiz.cz/zpravicky/ek-se-pry-chysta-dat-googlu-vysokou-pokutu
title: EK se prý chystá dát Googlu vysokou pokutu
language: cs
content:
  <p>Evropská komise hodlá americké internetové společnosti Google vyměřit vysokou pokutu za porušování antimonopolních pravidel. Agentuře Reuters to řekly zdroje obeznámené se situací. Komise chce podle zdrojů firmu pokutovat ještě před svou srpnovou dovolenou.</p>
  <p>Pokuta se má týkat obvinění z dubna 2015. Evropská komise tehdy uvedla, že Google ve výsledcích internetového vyhledávání systematicky zvýhodňuje vlastní produkt umožňující srovnávání nákupních nabídek, čímž poškozuje konkurenci i spotřebitele. Google je nejoblíbenějším internetovým vyhledávačem na světě.</p>
  <p>Komise může v případě porušování antimonopolních pravidel vyměřit firmám pokutu ve výši až deseti procent jejich celosvětových tržeb, což by v případě Googlu odpovídalo zhruba devíti miliardám dolarů (211,5 miliardy Kč), napsala agentura Reuuters.</p>


checksum: 48a7c845
status: unread
url: https://www.linuxexpres.cz/software/programovanie-v-jazyku-c-iterativne-programy-s-pomocou
title: Programovanie v jazyku C++: Iteratívne programy s pomocou cyklov (1)
author: Eduard Boldižár
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/cplusplus.png
enclosure_type: image/png
content:
  <p><strong>S pomocou cyklov vieme vytvoriť zaujímave iteratívne programy, ktoré si ukážeme v tomto a nasledujúcom diele. Tieto programy vám umožnia získať nejakú programatorsku prax.
  ﻿</strong></p>


checksum: fd4b6044
status: unread
url: https://www.linuxexpres.cz/analyza/muze-uzavreny-software-rozhodovat-o-vine-a-trestu
title: Může uzavřený software rozhodovat o vině a trestu?
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/paragraf.png
enclosure_type: image/png
content:
  <p><strong>Soudy v některých státech začínají používat software, který prakticky rozhoduje o vině a o výši trestu. Jak se na používání takového softwaru dívat? A může mít tento software uzavřené zdrojové kódy?
  ﻿</strong></p>


checksum: 9afa81f5
status: unread
url: https://www.linuxexpres.cz/verejna-sprava-05-2017-eib-zaplati-vyvoj-mariadb-vydana-eupl
title: Veřejná správa 05/2017: EIB zaplatí vývoj MariaDB, vydána EUPL 1.2, distribuce NHSbuntu
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/opensource_verejna_sprava02_100.png
enclosure_type: image/png
content:
  <p><strong>Evropská investiční banka bude financovat vývoj databáze MariaDB. Byla vydána nová verze licence EUPL. Dobrovolníci vyvíjejí derivát Ubuntu přizpůsobený pro britské zdravotnictví.
  ﻿</strong></p>


checksum: 89acde1d
status: unread
url: https://www.linuxexpres.cz/internetova-bezpecnost-open-source-nebo-situace-v
author: inzerce
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/akce/it17.png
enclosure_type: image/png
title:
  Internetová bezpečnost, open source nebo situace v telekomunikacích, tato a další témata představí konference Internet a Technologie

content:
  <p><strong>Zajímavosti v DNS, projekt Turris a s ním spojený Turris Hackathon, internetová bezpečnost, nahlédnutí do zákulisí českých telekomunikací nebo využití open source v kancelářské praxi - tato a další témata nabídne konference Internet a Technologie (17), kterou již tradičně pořádá sdružení CZ.NIC, správce české národní domény. Akce se uskuteční 20. a 21. června v prostorách FEL ČVUT na Karlově náměstí v Praze. ﻿</strong></p>


checksum: 783ec28e
status: unread
url: https://www.linuxexpres.cz/software/chocolatey-balickovaci-system-pro-windows
title: Chocolatey: „Čokoládovej“ balíčkovací systém pro Microsoft Windows
author: Svatopluk Vít
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/soft/logo.png
enclosure_type: image/png
content:
  <p><strong>Dnes chci psát o programu, který není určen pro linuxové uživatele. Je cílen na uživatele Microsoft Windows a v Linuxu není zapotřebí, protože už tam je. Ale přesto by mohl být zajímavý i pro uživatele ne-Windows, už proto, aby věděli, jak tuto problematiku systém od Microsoftu řeší. Je to totiž tzv. správce balíčků, někdy také označovaný jako balíčkovací systém.
  ﻿</strong></p>


checksum: 662c5afc
status: unread
url: https://www.linuxexpres.cz/software/doplnky-pro-thunderbird-xii-rucni-razeni-slozek-prehled
title: Doplňky pro Thunderbird XIII. – ruční řazení složek, přehled dnešních e-mailů
author: Petr Valach
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/soft/thunderbird_1.png
enclosure_type: image/png
content:
  <p><strong>V tomto článku se podíváme na možnost ručního seřazování účtů a složek v Thunderbirdu a na způsoby, jak zobrazit zprávy za dnešní den.
  ﻿</strong></p>


checksum: 6e9eec74
status: unread
url: https://www.linuxexpres.cz/analyza/autorske-pravo-pro-bezne-uzivatele-13-co-se-chysta
title: Autorské právo pro běžné uživatele (13): co se chystá
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/paragraf100.png
enclosure_type: image/png
content:
  <p><strong>Autorské právo je – podobně jako většina právních oblastí – živým organismem a postupem času se proměňuje. Podívejme se na věci, které by se v našem autorském právu mohly v příštích letech objevit.
  ﻿</strong></p>


checksum: 80654095
status: unread
url: https://www.linuxexpres.cz/verejna-sprava-04-2017-open-source-v-goppingenu-zadavani
title: Veřejná správa 04/2017: open source v Göppingenu, zadávání zakázek, problém chybějících licencí
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/opensource_verejna_sprava02_100.png
enclosure_type: image/png
content:
  <p><strong>Město Göppingen využívá open source na úřadě a ve školách, hlavním důvodem je spolehlivost. Zakázky na IT lze zadávat „různými způsoby“. Chybějící licence u zveřejněných zdrojových kódů brání znovupoužitelnosti.
  ﻿</strong></p>


checksum: 402990a8
status: unread
url: https://www.linuxexpres.cz/software/jquery-38-widgety-v-jquery-mobile
title: jQuery (38) – widgety v jQuery Mobile
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/soft/jquery.png
enclosure_type: image/png
content:
  <p><strong>Množina widgetů v jQuery Mobile sice není tak bohatá jako v klasickém desktopovém jQuery UI, i tak jsou jejich možnosti velmi zajímavé.
  ﻿</strong></p>


checksum: abc31f9a
status: unread
url: https://www.linuxexpres.cz/software/doplnky-pro-thunderbird-xii-minimalizace-zahlavi-nastaveni
title: Doplňky pro Thunderbird XII. – minimalizace záhlaví, nastavení rozšíření a trocha astronomie
author: Petr Valach
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/soft/thunderbird_1.png
enclosure_type: image/png
content:
  <p><strong>V tomto článku vám představíme rozšíření, které umožňuje optimalizovat záhlaví podokna zprávy, rozšíření pro snadnou konfiguraci všech konfigurovatelných rozšíření a na závěr přidáme i rozšíření, určené jak pro pozorovatele noční oblohy, tak i širokou veřejnost.
  ﻿</strong></p>


checksum: e6ce6d32
status: unread
url: https://www.linuxexpres.cz/software/minimalisticka-distribuce-alpine-linux
title: Minimalistická distribuce Alpine Linux
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/soft/alpine.png
enclosure_type: image/png
content:
  <p><strong>Alpine Linux je speciální linuxová distribuce koncipovaná tak, aby byla malá, jednoduchá a bezpečná. Na konferenci InstallFest 2017 o ní hovořil Petr Krčmář.
  ﻿</strong></p>


checksum: d5785715
status: unread
url: https://www.linuxexpres.cz/software/programovanie-v-jazyku-c-podmienka-switch-case
title: Programovanie v jazyku C++: Podmienka switch-case
author: Eduard Boldižár
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/cplusplus.png
enclosure_type: image/png
content:
  <p><strong>Okrem podmienok s konštrukciou if-else poznáme aj switch-case. Tento typ podmienky sa hodí všade tam, kde potrebujeme rýchlo rozhodnuť o hodnote premennej, objektu atď…
  ﻿</strong></p>


checksum: d503dae4
status: unread
url: https://www.linuxexpres.cz/software/cim-zpracovavat-fotografie-v-linuxu
title: Čím zpracovávat fotografie v Linuxu
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/obcas/galerie.jpg
enclosure_type: image/jpeg
content:
  <p><strong>Máte Linux, máte kvalitní fotoaparát a chce své snímky zpracovávat. Adobe Photoshop Lightroom sice linuxovou verzi nemá, ale i tak je k dispozici několik velmi zajímavých programů.﻿</strong></p>


checksum: 5613c18d
status: unread
url: https://www.linuxexpres.cz/software/prizpusobeni-vzhledu-thunderbirdu
title: Přizpůsobení vzhledu Thunderbirdu
author: Petr Valach
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/soft/thunderbird_1.png
enclosure_type: image/png
content:
  <p><strong>Nelíbí se vám výchozí vzhled Mozilla Thunderbirdu? Či se jen zajímáte, jak si vylepšit jeho uživatelské rozhraní? V tomto článku vám nabídneme několik způsobů, jak tak učinit.﻿</strong></p>


checksum: 8f37fd4e
status: removed
url: https://www.linuxexpres.cz/verejna-sprava-01-2017-svobodny-software-v-programu-horizont
author: Lukáš Jelínek
enclosure_url: https://www.linuxexpres.cz/uploads/perexy/opensource_verejna_sprava02_100.png
enclosure_type: image/png
title:
  Veřejná správa 01/2017: svobodný software v programu HORIZONT 2020, váznoucí technická podpora Linuxu ve sněmovně


checksum: e17c5ffc
status: unread
url: https://jnboehm.com/post/gnu-stow/
title: Use GNU Stow
author: jnb
content:
  <p>I heard about stow a couple of times before but only recently gave it a look and I was really surprised how simple it is, so I started using it.</p>

              <p><a href="https://lobste.rs/s/iiaeug/use_gnu_stow" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 4de1f812
status: unread
url: https://medium.com/@kennyalive/quake-3-vulkanized-245cc349fdcf
title: Quake 3 Vulkanized
author: calvin
content:
  <p><a href="https://lobste.rs/s/cqane2/quake_3_vulkanized" rel="noreferrer" target="_blank">Comments</a></p>


checksum: aa0f8730
status: unread
url: http://www.blinkingcaret.com/2017/06/07/orms-lazy-loading-and-web-applications/
title: ORMs, Lazy Loading and Web Applications
author: rdfi
content:
  <p><a href="https://lobste.rs/s/dtjmsm/orms_lazy_loading_web_applications" rel="noreferrer" target="_blank">Comments</a></p>


checksum: f4796c1b
status: unread
url: http://patricklouys.com/2017/06/04/value-objects-explained/
title: Value Objects Explained
author: patricklouys
content:
  <p><a href="https://lobste.rs/s/bqlmoz/value_objects_explained" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 1b43822d
status: unread
url: https://lobste.rs/s/kavsn8/classified_tag
title: Classified tag
author: poptart
content:
  <p>So I have run across a few posts that get linked that contain classified materials, for people with security clearances it can actually become a job hazard to run across classified data even if it is known to be public. I’d like to see a classified tag similar to /r/netsec’s “warning: classified”. Thoughts?</p>


checksum: cb703cbe
status: unread
title: Error Handling in C++ or: Why You Should Use Eithers in Favor of Exceptions and Error-codes
author: nikhedonia
url:
  https://hackernoon.com/error-handling-in-c-or-why-you-should-use-eithers-in-favor-of-exceptions-and-error-codes-f0640912eb45

content:
  <p><a href="https://lobste.rs/s/7njrpw/error_handling_c_why_you_should_use" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 307028da
status: unread
url: http://blog.erratasec.com/2017/06/how-intercept-outed-reality-winner.html
title: How The Intercept outed Reality Winner
author: hoopla
content:
  <p><a href="https://lobste.rs/s/ufliwe/how_intercept_outed_reality_winner" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 413bbf00
status: unread
url: http://mr.gy/blog/erlangen-explore-kademlia-dht.html
title: Exploring distributed designs with Erlangen: Kademlia
author: mrottenkolber
content:
  <p>An exploration of distributed hash tables, specifically the Kademlia paper, using Erlangen (a message passing framework for Clozure Common Lisp inspired by Erlang).</p>

              <p><a href="https://lobste.rs/s/qytm3m/exploring_distributed_designs_with" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 313f1ca1
status: unread
url: https://daringfireball.net/linked/2017/06/06/facebook-twitter-ios-11
title: Apple Removes Facebook and Twitter Integration From iOS 11
author: itistoday
content:
  <p><a href="https://lobste.rs/s/vgjpaj/apple_removes_facebook_twitter" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 7489d161
status: unread
url: http://blog.zdsmith.com/posts/compiletime-sort-in-nim.html
title: Compile-Time Sort in Nim
author: zdsmith
content:
  <p><a href="https://lobste.rs/s/wwh1cn/compile_time_sort_nim" rel="noreferrer" target="_blank">Comments</a></p>


checksum: f3316196
status: unread
url: https://www.dailydrip.com/blog/three-interesting-algorithms-you-should-know-before-you-die
title: Three Interesting Algorithms you should know before you die
author: knewter
content:
  <p><a href="https://lobste.rs/s/ltsrnh/three_interesting_algorithms_you_should" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 8e01ffc6
status: unread
url: http://blog.zdsmith.com/posts/unit-testing-in-nim.html
title: Unit Testing in Nim
author: zdsmith
content:
  <p><a href="https://lobste.rs/s/dovw1s/unit_testing_nim" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 2fb3b8d7
status: unread
url: https://blog.heroku.com/announcing-heroku-shield
title: Run HIPAA apps on Heroku: Introducing Heroku Shield
author: schneems
content:
  <p><a href="https://blog.heroku.com/announcing-heroku-shield" rel="noreferrer" target="_blank">https://blog.heroku.com/announcing-heroku-shield</a></p>

              <p><a href="https://lobste.rs/s/bjw0is/run_hipaa_apps_on_heroku_introducing" rel="noreferrer" target="_blank">Comments</a></p>


checksum: cd38f521
status: unread
url: https://github.com/mortie/easy-makefile/
title: A general makefile that's easily configured using a conf.mk file
author: mort
content:
  <p>I went through the process of actually learning how to make a Makefile a while ago, and it wasn’t a very fun experience. There was very little information about how to actually make a good Makefile for a C project; there were lots of tiny examples, and a lot of theory about how make works, but very little for people who just want a Makefile for C (or C++) where you don’t manually have to specify exactly which files depend on which other files, but still only recompile the necessary files.</p>
  <p>Because of that, I decided to make a general Makefile which is configured through a config file, to work as a basis for both my future C projects, and for new C or C++ programmers.</p>
  <p>I’m not sharing this because it’s some marvelous feat of software engineering, but because it’s something I would have wanted to find while trying to figure this stuff out for myself.</p>

              <p><a href="https://lobste.rs/s/5wsiht/general_makefile_thats_easily" rel="noreferrer" target="_blank">Comments</a></p>


checksum: ed80fc2e
status: unread
url: https://stackoverflow.com/questions/4765532/what-does-abstract-over-mean
title: What does "abstract over" mean?
author: asthasr
content:
  <p><a href="https://lobste.rs/s/cc9dio/what_does_abstract_over_mean" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 9a516c85
status: unread
url: https://rain-1.github.io/golang-aslr.html
title: Golang ASLR
author: rain1
content:
  <p><a href="https://lobste.rs/s/boz5le/golang_aslr" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 7d74032d
status: unread
url: http://atparty-demoscene.net/
title: @party | a demoparty in Boston | June 9th 2017 through Sunday June 11th 2017
author: trn
content:
  <p><a href="https://lobste.rs/s/leq2dz/party_demoparty_boston_june_9th_2017" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 755b151a
status: unread
url: http://www.tnmoc.org/news/news-releases/3d-virtual-tour-now-online
title: The National Museum of Computing on Bletchley Park 3D virtual tour
author: trn
content:
  <p><a href="https://lobste.rs/s/zjmsh8/national_museum_computing_on_bletchley" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 1c38d58a
status: unread
url: https://eclecticlight.co/2017/04/06/apfs-is-currently-unusable-with-most-non-english-languages/
title: APFS is currently unusable with most non-English languages
author: yumaikas
content:
  <p><a href="https://lobste.rs/s/mjui5c/apfs_is_currently_unusable_with_most_non" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 0a8f8308
status: unread
url: http://arvindn.livejournal.com/132943.html
title: Tupper’s Self-Referential Formula Debunked
author: pushcx
content:
  <p><a href="https://lobste.rs/s/dkalxl/tupper_s_self_referential_formula" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 32434a21
status: unread
url: https://w2.eff.org/Privacy/printers/docucolor
title: Decoding the yellow dots on a color print
author: derek-jones
content:
  <p><a href="https://lobste.rs/s/4qtbsc/decoding_yellow_dots_on_color_print" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 6e3a1d34
status: read
url: https://engineering.snagajob.com/dont-like-dependency-injection-898de93dc8d3
title: Don’t like dependency injection?
author: softinio
content:
  <p><a href="https://lobste.rs/s/ak5u7p/don_t_like_dependency_injection" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 9a8797ae
status: unread
url: http://teh.id.au/posts/2017/06/07/round-trip-property/index.html
title: The round-trip property
author: pushcx
content:
  <p><a href="https://lobste.rs/s/tj9gzk/round_trip_property" rel="noreferrer" target="_blank">Comments</a></p>


checksum: 15100457
status: unread
url: http://peters.gormand.com.au/Home/tools/graft/graft.html
title: Graft - a package management utility
author: trn
content:
  <p>Graft provides a mechanism for managing multiple packages under a single directory hierarchy. It was inspired by both Depot (Carnegie Mellon University) and Stow (Bob Glickstein).  Graft has been designed to use the best features of Depot, Stow and Encap while maintaining as simple a mechanism as possible. Graft has been continuously developed and maintained for more than 20 years.</p>

              <p><a href="https://lobste.rs/s/bikhtm/graft_package_management_utility" rel="noreferrer" target="_blank">Comments</a></p>


checksum: d1cf9f55
status: unread
url: https://www.dailydrip.com/blog/using-bluecryptor-for-cross-platform-aws-signing-in-swift
title: Using BlueCryptor for cross-platform AWS signing in Swift
author: franzunix
content:
  <p><a href="https://lobste.rs/s/6x81s2/using_bluecryptor_for_cross_platform_aws" rel="noreferrer" target="_blank">Comments</a></p>


checksum: c2a9ddc6
status: unread
title: [aktualita] Uber pronásledují skandály. Propouští 20 lidí kvůli sexuálnímu obtěžování
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/uber-pronasleduji-skandaly-propousti-20-lidi-kvuli-sexualnimu-obtezovani/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek před 2 hodinami

  <p>Taxislužba nebo spolujízda, záleží na úhlu pohledu, Uber neprožívá z hlediska svého mediálního obrazu ideální rok. Potom, co na začátku roku popsala jedna z vývojářek na svém blogu diskriminaci a sexuální obtěžování, rozjela firma interní vyšetřování. A po třech měsících jsou tu výsledky. </p>

  <p>Dvacítka výpovědí lidem, kteří se údajně dopustili sexuálního obtěžování. Informuje o tom <a href="https://www.bloomberg.com/news/articles/2017-06-06/uber-said-to-fire-more-than-20-employees-in-harassment-probe" rel="noreferrer" target="_blank">agentura Bloomberg</a> s odvoláním na zasvěcený zdroj. </p>

  <p>Vyšetřování vedla právní kancelář Perkins Coie, která se zaměřila na 215 stížností na sexuální obtěžování ve firmě. Nejstarší případy sahaly až do roku 2012. V 58 případech Uber podle Bloombergu sáhl k nápravným opatřením a v další stovce případů se rozhodl nepodnikat nic. O zbylých případech ještě nebylo rozhodnuto.</p>


checksum: 230950ef
status: unread
title: [aktualita] Operátoři se připravují na konec roamingu. O víkendu vypnou své samoobsluhy
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/vodafone-o-vikendu-vypne-samoobsluhu-kvuli-nastavovani-roamingu/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek před 4 hodinami

  <p>V neděli by měla začít fungovat evropská regulace a v podstatě by měl skončit klasický roaming. V Evropě by měli zákazníci tuzemských operátorů volat za stejné ceny jako doma. </p>

  <p>Vodafone proto o víkendu chce přenastavit svou síť a předem hlásí, že nebudou fungovat jeho samoobslužné systémy. „Dočasné omezení funkce se bude od této soboty (10. června) od 20 hodin týkat Internetové, SMS a Hlasové samoobsluhy a také aplikace Můj Vodafone. OneNet samoobsluha pro firemní zákazníky bude dočasně omezená od soboty, 10. června, od 12 hodin. Očekávané ukončení odstávky je v neděli odpoledne,“ tvrdí firma v tiskové zprávě s tím, že na běžný provoz by neměla mít odstávka žádný vliv. </p>
  <p>Během sobotní noci chce vyřešit nutné přenastavení i T-Mobile. Služba Můj T-Mobile by měla být vypnutá přibližně od sobotní půlnoci do nedělního dopoledne. </p>


checksum: fd5cc36a
status: unread
title: [aktualita] Tak se nám VoLTE dostalo do iPhonů. Tento týden ho rozjeli Vodafone i O2
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/operatori-pousti-volte-do-iphonu-tento-tyden-ho-rozjeli-vodafone-i-o2/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek před 7 hodinami

  <p>O2 spouštělo volání přes LTE jako poslední. Na začátku letošního roku umožnil volat majitelům vyšších modelů od Samsungu. Teď technologii otevřel i zákazníkům s telefony od Applu.</p>
  <p>Operátor slibuje podporu modelů iPhone SE, iPhone 7, iPhone 7 Plus, iPhone 6s, iPhone 6s Plus, iPhone 6 a iPhone 6 Plus. Pro volání je nutná aktualizace softwaru na iOS 10.3 nebo novější. </p>
  <p>„Zákazníkům se bude postupně objevovat výzva k aktualizaci nastavení operátora. Tu si mohou také stáhnout sami volbou Nastavení – Obecné – Informace,“ <a href="https://www.o2.cz/spolecnost/tiskove-zpravy/542070-Spojeni_do_dvou_vterin_a_nejcistsi_zvuk_O2_spousti_volani_pres_LTE_pro_iPhone.html?asset=542070&amp;nsid=542078&amp;user=amFuLmJlcmFuZWtAbHVwYS5jeg%253D%253D" rel="noreferrer" target="_blank">popisuje Jindřich Fremuth z O2</a>. V telefonu je také potřeba povolit 4G pro hlas i data v menu Nastavení – Mobilní data – Volby dat – Zapnout 4G – Hlas a data.</p>
  <p>Podobně službu rozjel tento týden i Vodafone. Volání přes LTE nebo Wi-Fi běží v síti červeného operátora na iPhonech 6 a výše s aktuální verzí operačního systému. T-Mobile už iPhony podporuje od konce roku 2015. </p>


checksum: 42350829
status: unread
title: [aktualita] Zájemci o levné volání jsou podle dTestu skromní, stačí jim 2 GB dat
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/zajemci-o-levne-volani-jsou-podle-dtestu-skromni-staci-jim-2-gb-dat/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek před 7 hodinami

  <p>Ještě pár dní zbývá do konce registrace velké aukce tarifů, kterou pořádá sdružení dTest. Za měsíc se do ní zatím přihlásilo osmdesát tisíc lidí. Samotná aukce proběhne tento pátek.</p>

  <p>Akce stojí na podobném modelu jako aukce u energií. Cílem je sehnat co největší množství účastníků. První výsledky ale ukazují, že zájemci jsou skromní nebo už uvažují v mantinelech, které operátoři narýsovali svými současnými nabídkami. „Sedmdesát procent uživatelů si přeje tarif s neomezenými daty, nebo alespoň 2 GB dat,“ konstatuje Martin Černý, ředitel dTestu. </p>

  <p>Podle dosavadních požadavků účastníků aukce by 18 procent registrovaných spotřebitelů chtělo kompletně neomezený. Dvaadvacet procent by chtělo neomezený tarif s 2 GB dat a dalších dvacet procent by si vystačilo s 200 volnými minutami, 200 textovkami a taktéž dvěma gigabajty dat. </p>
  <p>Operátoři budou moci soutěžit o několik tarifů s různými objemy volání, SMS a dat. Nejskromnější tarif bude obsahovat 100 volných minut, 50 textovek a možnost dokoupení základního datového balíčku v objemu 50 megabajtů. Nejštědřejší tarif bude zahrnovat 9999 volných minut, stejné množství textových zpráv a datový balíček v objemu 2 GB. </p>


checksum: 1c146725
status: unread
title: [aktualita] GoodData slaví deset let. Do pražského Impact Hubu přijede i Roman Staněk
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/gooddata-slavi-deset-let-do-prazskeho-impact-hubu-prijede-i-roman-stanek/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek před 8 hodinami

  <p>Zakladatel a bývalý novinář. Roman Staněk a Petr Koubský zkříží příští pondělí svůj ostrovtip v rozhovoru před publikem v pražském Impact Hubu. A kromě zaměstnanců firmy je akce otevřená i veřejnosti. </p>

  <p>GoodData už totiž fungují deset let a chtějí to oslavit společně. Na akci, která si dala do hlavičky heslo „Data is beautiful.“ je <a href="http://info.gooddata.com/10year_registration.html" rel="noreferrer" target="_blank">nutné se zaregistrovat</a>. Jinak ale je vstup volný. </p>


checksum: 2a324bf1
status: unread
title: [článek] Co dělá Pavel Zima v Bastlírně a jak Seznam rozjel vývoj vlastního hardwaru
author: redakce@lupa.cz (Lupa.cz: Jan Sedlák)
language: cs
url:
  https://www.lupa.cz/clanky/co-dela-pavel-zima-v-bastlirne-a-jak-seznam-rozjel-vyvoj-vlastniho-hardwaru/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p>V centrále <a href="https://www.seznam.cz/" rel="noreferrer" target="_blank">Seznamu</a> na pražském Andělu mají malou komůrku nazvanou Bastlírna. Původně to byla běžná součást open space kanceláří, ale od zbytku osazenstva musela být izolována. Ostatní zaměstnance rušil například kouř z pájky nebo to, že se zde kladívkem roztloukávaly nýtky. Teď je v Bastlírně pravá kreativní atmosféra (rozuměj spousta materiálu, počítačových součástek a nářadí) a vzniká zde něco, co by v budoucnu mělo pohánět minimálně část největší internetové firmy v Česku.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>„Tohle je jedna z věcí, kterou tady děláme. Zatím tomu říkáme Montovna,“ ukazuje Miroslav Bezdička v Bastlírně na jeden z několika otevřených serverů, které je zde možné různě po stolech vidět. Bezdička do Seznamu přišel v srpnu loňského roku z firmy e4t electronics for transportation, která v rámci skupiny Volkswagen vyvíjí elektroniku do automobilů. Dostal funkci hardwarového manažera, do týmu přibral další dva techniky a společně pracují na vlastních serverech, které Seznam postupně začíná nasazovat do testovacího provozu.</p>

  <p>Celý Seznam v současné době běží na více než pěti tisících serverech v datacentru Nagano provozovaném O2 a převážně vlastním <a href="https://www.lupa.cz/clanky/seznamacka-kokura-otevrela-druha-sal-rust-tahne-video/" rel="noreferrer" target="_blank">datovém komplexu Kokura</a> v Horních Počernicích v Praze. Při takovém množství strojů už se dá přemýšlet o tom, co běžně dělají největší internetoví a cloudoví hráči ve světě – stavět si serverový hardware na míru.</p>
  <h2>Už by to šlo</h2>
  <p>Technický ředitel Seznamu Vlastimil Pečínka si s touto myšlenkou hrál už delší dobu a zmínil ji například už začátkem loňského roku v našem článku o <a href="https://www.lupa.cz/clanky/seznam-chce-vyvijet-vlastni-hardware-buduje-maly-seznam-a-datacentrum-v-kontejneru/" rel="noreferrer" target="_blank">Malém Seznamu</a>. „S rostoucí velikostí už to dává smysl,“ uvedl tehdy Pečínka.</p>
  <p><strong>TIP: Jak v Seznamu vyvíjejí vlastní hardware? Podívejte se:</strong></p>
  <a href="https://www.lupa.cz/galerie/vyvoj-vlastniho-hardwaru-v-seznamu/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-9-large.jpg"/></a>
  <a href="https://www.lupa.cz/galerie/vyvoj-vlastniho-hardwaru-v-seznamu/i/292314/" rel="noreferrer" target="_blank">Dalších 42 fotografií</a> 

  <p>Tato prohlášení nebylo pouze taktikou, jak přinutit dodavatele tradičních serverů ke slevám a výhodám. Tehdejší ředitel Seznamu Pavel Zima schválil Pečínkovi financování projektu vlastního hardwaru. Bastlírna nyní spadá pod technickou divizi Seznamu a Zima už se <a href="https://www.lupa.cz/clanky/pavel-zima-konci-v-cele-seznamu-vykonnym-sefem-bude-michal-feix/" rel="noreferrer" target="_blank">z jiné pozice</a> v projektu také sám angažuje.</p>
  <p>„Vlastík byl dlouhodobě nespokojený s politikou dodavatelů hardwaru. Často se vám toho snaží prodat co nejvíce a zkouší různé triky,“ popisuje Zima. „V ceně serverů se navíc platí i věci jako značka, podpora a další. A když je v serverech nějaká přidaná hodnota, často je zapouzdřená a je největším zdrojem chyb.“</p>
  <p>Velké internetové firmy typu Seznam v drtivé většině případů neprovozují tradiční sestavu serverových aplikací, jako je tomu u běžných společností. Služby jako Mapy.cz či Seznam Email jsou psány interně a tak, aby se dokázaly rychle škálovat s tím, jak roste počet uživatelů a zátěž (hodně se využívá open source). Takové aplikace často mají specifické požadavky a nepotřebují sadu funkcí a výkonu, jaké lze koupit v serverech od firem Dell, Hewlett Packard Enterprise a Fujitsu (dodavatelé Seznamu).</p>
  <a href="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-38.jpg" rel="noreferrer" target="_blank"><img alt="Bastlírna v Seznamu" src="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-38-prev.jpg"/></a><br/>Autor: Jan Sedlák
  <p>Bastlírna v Seznamu</p>

  <p>Cestou tak je vytvářet si servery vlastní. Připravené tak, aby odpovídaly specifickým požadavkům a nebylo nutné živit nepotřebnosti kolem. Montovna je jedním ze dvou hlavních projektů tohoto typu, na kterém aktuálně v Seznamu pracují.</p>
  <h2>Made in Seznam</h2>
  <p>Montovna umožňuje české internetové jedničce skládat vlastní servery z tradičního komoditního hardwaru. Jednotlivé komponenty jako základní desky, pevné disky, paměti a další se berou od různých výrobců. Poskládáním komponent dohromady vznikne stroj, který je cenově výhodnější než v případě přístrojů od OEM výrobců. Komponenty se například dají vyměnit dle libosti a není tak nutné kupovat disky pouze od OEM.</p>
  <a href="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-32.jpg" rel="noreferrer" target="_blank"><img alt="Hardwarový manažer Seznamu Miroslav Bezdička (vlevo) a Pavel Zima" src="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-32-prev.jpg"/></a><br/>Autor: Jan Sedlák
  <p>Hardwarový manažer Seznamu Miroslav Bezdička (vlevo) a Pavel Zima</p>

  <p>Seznam má vlastní 12U šasi (plechová „krabice“, která se vloží do běžné serverové skříně/racku) s tím, že do každého 1U („jedna police v oné krabici“) se vedle sebe vejdou dva vlastní servery. Celkem tak jedno šasi pojme 24 serverů „Made in Seznam“. Vyřešeno je centrální chlazení a 12V napájení (do budoucna je možné 48V).</p>
  <p>Jedna Montovna už jako prototyp běží v datovém centru Kokura v rámci vývojového prostředí a Bezdička a jeho tým budou sledovat a vyhodnocovat, jak se hardware bude chovat, a vyčíslovat potřebné údaje pro ostré nasazení.</p>
  <p>První testy ukazují dobré úspory ve spotřebě. Servery v klidovém (idle) stavu vykazují hodnoty 67 wattů, v případě plné zátěže pak 160 wattů. Oproti běžnému železu jde často o výrazné zlepšení.</p>
  <a href="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-26.jpg" rel="noreferrer" target="_blank"><img alt="Projekt Montovna postavený na komoditním hardwaru a čipech Intel Xeon." src="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-26-prev.jpg"/></a><br/>Autor: Jan Sedlák
  <p>Projekt Montovna postavený na komoditním hardwaru a čipech Intel Xeon.</p>

  <p>Seznam experimentuje se základními deskami od několika dodavatelů, konkrétně Asusu, Intelu a SuperMicro. Každý server má dva procesory Intel Xeon E5–2630L v4 a 128 GB RAM. Do serveru se vejdou čtyři pevné SSD disky (využívají se velikosti 400 či 480 GB).</p>
  <h2>Servery s ARMem</h2>
  <p>Druhý projekt Bastlírny jde každopádně ještě dále. Ve fázi oživování (testy se rozběhnou na podzim) jsou v současné době vlastní servery postavené nikoliv na běžných čipech od Intelu, ale čipech ARM. Jde o základní desky zhruba o velikosti Raspberry Pi, které se následně vkládají do stejných serverových šasi, ve kterých běží i hardware Montovny. Do jednoho takového šasi se vejde osm ARM serverů (desek). A spolu s nimi také vlastní 10Gb switch, který sbíhá komunikaci všech osmi desek do jedné (každá zvládá 2,5 Gb).</p>
  <a href="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-10.jpg" rel="noreferrer" target="_blank"><img alt="Serverová deska s čipem ARM." src="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-10-prev.jpg"/></a><br/>Autor: Jan Sedlák
  <p>Serverová deska s čipem ARM.</p>

  <p>„Toto řešení chceme využít na object storage,“ přibližuje Bezdička. To v případě Seznamu znamená především na Email a CDN. Na Hadoop a další náročnější operace není hardware dostatečně výkonný. Deska jako taková má pak vždy jeden čtyřjádrový ARM čip od <a href="http://www.marvell.com/" rel="noreferrer" target="_blank">Marvell Technology</a> a pracuje se 4 GB RAM. To stačí v případě e-mailů na aktivity typu rozbalování příloh. Na spodní části ARMových desek je vždy připevněn jeden SSD disk.</p>
  <p>Seznam se v tomto případě volně inspiruje u Open Compute Projectu (<a href="http://www.opencompute.org/" rel="noreferrer" target="_blank">OCP</a>), což je „hnutí“, které původně rozjel Facebook. V něm se pracuje s konceptem otevřeného hardwaru a firmy si zde vyměňují své designy. Seznam z OCP v základu vychází, v mnohém si ale věci dělá po svém (třeba dva servery vedle sebe místo tří).</p>
  <a href="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-13.jpg" rel="noreferrer" target="_blank"><img alt="Serverová deska s čipem ARM a SSD diskem na spodní části." src="https://i.iinfo.cz/images/57/vyvoj-vlastniho-hardwaru-v-seznamu-13-prev.jpg"/></a><br/>Autor: Jan Sedlák
  <p>Serverová deska s čipem ARM a SSD diskem na spodní části.</p>

  <p>Kompletní návrhy tištěných spojů a desek se realizují v Bastlírně. Výroba hardwaru se pak různí – většinou se dělá u nespecifikovaných partnerů v Česku, menší a méně náročné věci se pak řeší v Číně. Pro správu si v Seznamu píší také vlastní software. Místo finální výroby serverů ještě není vyřešeno.</p>


  <p><a href="http://www.tuesday.cz/akce/e-business-forum-2017/?utm_source=Lupa&amp;utm_medium=tip_early&amp;utm_campaign=EBF17" rel="noreferrer" target="_blank">
  <img src="https://i.iinfo.cz/images/372/ebf17-early-1.png" alt="EBF17_early"/> </a></p>



  <p>„Už také řešíme to, jak servery chladit ponořením do oleje. Teď máme datacentrum s dobrými rozvody vzduchu. Ale kdyby se někdy stavělo nové, olej by mohl být zajímavou novou možností,“ popisují Bezdička se Zimou. A do budoucna mají i další nápady. Z celých hardwarových aktivit by mohl vzniknout spin-off, tedy samostatně operující startup. To jsou ovšem zatím předčasné debaty.</p>
  <p>Seznam při budování své hardwarové odnože bude muset vyřešit řadu detailů. Mezi nimi i odběry komponent a pevných disků. SSD jednotek je obecně nedostatek a při vyjednávání sehraje velkou roli i velikost odběrů.</p>


checksum: e39a6eff
status: unread
title: [článek] Senzory Martina Malého: Jak rychle a s minimálními náklady prošlapat slepé cesty
author: redakce@lupa.cz (Lupa.cz: Martin Malý)
language: cs
url:
  https://www.lupa.cz/clanky/senzory-martina-maleho-jak-rychle-a-s-minimalnimi-naklady-proslapat-slepe-cesty/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p>Napsal mi jeden ze čtenářů mých sloupků, že by rád věděl, jak to je s tím prototypováním na Arduinu, o kterém občas píšu. Konkrétně jak se z takového prototypu udělá produkt, jestli se pak použije jiný čip, nebo jestli někdo prodává něco přímo s Arduinem…</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>Každému, kdo začíná vyvíjet elektroniku, doporučuju nejprve zařízení sestavit nanečisto, ověřit funkčnost, ověřit to, zda navrhované řešení bude fungovat atd. Pro jednoduchá zařízení poslouží Arduino velmi dobře, a to hned v několika fázích vývoje.</p>
  <p>Výhodou Arduina je, že je levné, jednoduché a existuje pro něj nepřeberné množství doplňků a rozšíření (shieldů), které pokrývají velké spektrum úloh, od čtení dat ze senzorů přes komunikaci nejrůznějšími způsoby až po ovládání motorů, serv či relé. Pokud navrhujete zařízení, které má s něčím z tohoto pracovat, můžete na Arduinu postavit například pretotyp – zařízení, které simuluje chování budoucího výrobku.</p>
  <p>Pretotyping je fáze, ve které ověřujete, jestli někdo něco takového vůbec chce. Jako příklad pretotypingu se uvádí vývoj hlasem ovládaného psacího zařízení u společnosti IBM. Před tím, než se vývojáři pustili do takového úkolu, udělali zařízení, které vypadalo jako počítač s monitorem a mikrofonem, ovšem ve skutečnosti bylo ovládané z vedlejší místnosti, kde seděla písařka se sluchátky a psala, co slyšela. Testovací uživatel měl dojem, že počítač na displej píše podle diktátu, a návrháři mohli sledovat, jak se k tomu uživatelé staví, zda je to pro ně pohodlné, přínosné, kde budou asi problémy, … Nakonec se ukázalo hned několik věcí – uživatelé byli za chvíli ochraptělí (což zná asi každý, kdo přednášel), když byl kolem hluk, diktát nebyl moc přesný, no a v neposlední řadě lidem vadilo, že ostatní v místnosti slyší, co diktují. Což byly důležité poznatky, které vedly k tomu, že IBM ušetřilo v té době nemalé prostředky za vývoj něčeho, co vlastně tehdy nebyl až tak skvělý nápad.</p>
  <p>Arduino můžete využít ve chvíli, kdy se rozhodnete použít nějakou konkrétní součástku, popřípadě když vybíráte, jakou použít. Můžete si vzorky připojit k Arduinu a vyzkoušet si, jak se s kterou pracuje, jaké jsou její limity, jak složité či jednoduché je uvést ji do chodu… V pozdější fázi můžete zkusit třeba sestavit menší funkční celek s vícero periferiemi a pak ověřovat, zkoušet, testovat, ladit algoritmy.</p>
  <p>A protože Arduino budete programovat nejspíš v C++ (ano, to je ten jazyk, co je schovaný „pod kapotou“ a píšou se v něm všechny knihovny), bude váš kód s trochou péče nejspíš přenositelný i na další platformy – pravděpodobně budete muset upravit některé systémově závislé věci, adresaci periferií apod., ale kostra zůstane stejná.</p>
  <p>Když máte jednoduché zařízení, které Arduino „utáhne“, můžete sestavit celý prototyp s Arduinem a ověřit si, že funguje, že měří, posílá data, reaguje… Klidně v tom můžete napsat i betaverzi firmware, pokud vše půjde dobře. Arduino samo o sobě nemá vhodný debugger, ale v určité fázi můžete přejít na vývoj v normálním IDE a C++, Arduino připojit přes hardwarový debugger a ladit firmware tak, jak jste zvyklí. Samotný hardware pak dál poběží na procesoru AVR.</p>
  <p>Jakmile přijde čas na betaverzi hardwaru, můžete zvolit různé cesty. Můžete si říct, že vám stačí výkon a možnosti mikrokontroléru z Arduina (ATmega328 nebo ATmega2560, popřípadě jiného z téže řady), a výsledný hardware navrhnout s tímto procesorem. Můžete ale použít jiný mikrořadič – například s jádrem ARM nebo MSP430 atd. Tady můžete využít faktu, že „Arduino“ nejsou jen desky s jednočipem ATmega. Vyrábí se spousta dalších desek, které jsou „Arduino compatible“, ale obsahují jiné procesory, od ATtiny přes ARM Cortex až po Intel Quark. Můžete si tedy psát a testovat už přímo na (víceméně) cílové platformě.</p>
  <p>No a nakonec, když máte sestaveno a otestováno a firmware v hrubých rysech, tak buď vše přenesete na vlastní platformu a tam uděláte poslední úpravy, nebo můžete to „Arduino“ nechat dál jako základ, třeba ve formě zapojeného Arduina Nano / Mikro přímo v hotovém výrobku. Ostatně i 3D tiskárny RepRap dlouho fungovaly s kombinací Arduina Mega a rozšiřujícího shieldu pro ovládání motorů.</p>
  <p>Všechno to, co jsem tu napsal, se dá vztáhnout třeba i na Raspberry Pi. Zejména pokud potřebujete větší výpočetní výkon a složitější logiku. A tady platí ještě víc, že některé výrobky jsou ve výsledku opravdu fyzicky Raspberry a rozšiřující deska – například jedna z LoRaWAN Gateway, kterou jsem zkoušel, měla uvnitř přesně takový hardware.</p>

  <p><a href="http://www.tuesday.cz/akce/marcomdata/?utm_source=Lupa&amp;utm_medium=tip_v_clanku_Novotny&amp;utm_campaign=Marcom" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/208/marcom-novotny-1.png" alt="Marcom"/></a></p>

  <p>Zkrátka – je jedno, jestli Arduino, nebo Raspberry, nebo něco jiného, důležité je, že můžete začít rychle a s minimálními náklady, prošlapat cesty slepé i nadějné, a teprve potom se ukáže, jestli ověřený koncept přenesete na vlastní platformu, nebo jestli tam necháte něco z Arduina (které je vlastně jen samotný jednočip a USB rozhraní). </p>
  <p>Jo a ještě důležitá poznámka: Když začnete psát pro to Arduino, pamatujte, že jednou se to bude portovat na jinou platformu, tak pište co nejjednodušší a pochopitelný kód, bez triků a hacků, protože jinak si neušetříte vůbec nic, akorát budete nadávat, že „se to celé musí psát znovu a Arduino je k ničemu“.</p>


checksum: 593d939b
status: unread
title: [aktualita] Vodafone stahuje reklamu z webů, které šíří projevy nenávisti a falešné zprávy
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/vodafone-stahuje-reklamu-z-webu-ktere-siri-projevy-nenavisti-a-falesne-zpravy/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek včera

  <p>Podle nových globálních pravidel by měly dezinformační weby přijít o další zdroj příjmů. Měla by z nich zmizet reklama Vodafonu. K podobnému kroku už na konci loňského roku přistoupila třeba Česká spořitelna. </p>

  <p>Novinka platí pro celou skupinu a nová pravidla definují pojmy jako „hate speech“ a „fake news“. Podle nich se bude Vodafone řídit při rozhodování, na jaký web nebo účet na sociální síti pustit svou reklamu. </p>
  <p><em>„Hate speech a fake news jsou fenomény, které podkopávají principy respektu a důvěry, které drží naši společnost pohromadě. Mezi základní hodnoty značky Vodafone patří rozmanitosti a inkluze. Také je pro nás velmi důležitá integrita demokratických procesů a institucí, které se fake news často snaží poškodit. Nehodláme tolerovat situaci, kdy může být naše značka spojována s tímto druhem urážlivého a škodlivého obsahu,“</em> tvrdí šéf Vodafonu Vittorio Colao.</p>

  <p>Reklamu u obsahu, který nesouzní s hodnotami inzerenta, už řeší Google. Ten se musel během jara popasovat se situací, kdy se američtí operátoři Verizon a AT&amp;T připojili ke skupině britských úředníků a obchodníků v čele s Marks and Spencer a zrušili svou reklamu na YouTube. Nelíbí se jim totiž, že jejich inzeráty byly vidět i u videí, která podporují homofobní a nenávistné aktivity.</p>


checksum: 07e45327
status: unread
title: [aktualita] České UPC spustí IPv6 pro rezidentní zákazníky, zatím ale jen pro ty nové
author: redakce@lupa.cz (Lupa.cz: David Slížek)
language: cs
url:
  https://www.lupa.cz/aktuality/ceske-upc-spusti-ipv6-pro-rezidentni-zakazniky-zatim-ale-jen-pro-ty-nove/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  David Slížek včera

  <p><em>„Běží několik testů, které se blíží k závěru. Během několika dnů, maximálně týdnů, předpokládáme zahájení provozu IPv6 pro rezidentní klienty,“</em> potvrdil v průběhu dnešního <a href="https://www.cesnet.cz/sdruzeni/akce/ipv6-2017/" rel="noreferrer" target="_blank">IPv6 semináře Cesnetu</a> Martin Krautwurst, ředitel pro strategické programy přístupové sítě UPC. Podle neoficiálních informací Lupy by ke spuštění mělo dojít zřejmě v pondělí 12. června.</p>
  <p>Novinka se ovšem bude týkat pouze nových zákazníků – ti dostanou výchozí adresu IPv6 (IPv6 DS-Lite). Stávající klienti zatím zůstanou na IPv4. Přechod na IPv6 se nebude týkat ani SOHO byznysových klientů, kteří jsou připojeni přes kabelové rozvody. I ti zůstanou na IPv4, dodal Krautwurst.</p>
  <p><em>„Časem přijde i migrace části stávajících rezidentních klientů, bude záležet mimo jiné na tom, jaké mají koncové zařízení,“</em> doplnil poté. Kabelové modemy, které IPv6 DS-Lite podporují, dostávají všichni noví klienti UPC od roku 2016.</p>
  <p><strong>TIP: Podrobněji se oznámení UPC o nasazení IPv6 věnují <a href="https://www.root.cz/clanky/upc-zacne-brzy-pridelovat-ipv6-zakaznici-ale-prijdou-o-verejnou-ipv4/" rel="noreferrer" target="_blank">kolegové z Root.cz</a>.</strong></p>
  <a href="https://i.iinfo.cz/images/145/upc-ipv6-zarizeni-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/145/upc-ipv6-zarizeni-1-prev.jpg" alt=""/></a>
  <p>Přímý přenos z IPv6 semináře Cesnetu můžete sledovat na YouTube:</p>
  <iframe src="https://www.youtube.com/embed/Uh_9xMSl0PA?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>


checksum: 4bd752e4
status: unread
title: [aktualita] V O2 trochu vylepšili nabídku dat u svých tarifů. Zázraky se ale nedějí
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/o2-trochu-vylepsil-nabidku-dat-u-svych-tarifu-zazraky-se-ale-nedeji/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek včera

  <p>Měsíc potom, co operátor přišel s první opatrnou reakcí na konkurenční změny u datových balíků, je tu další posun. Od poloviny června přidává O2 další data. Ale jen opatrně.</p>

  <p><em>„Od poloviny června jsme se proto rozhodli nabídku tarifu O2 Spolu rozšířit. Za stokorunu navíc získají naši zákazníci dvojnásobek dat – 6 gigabajtů. Přidáváme také tarif s 10 gigabajty mobilních dat a 300 minutami mezinárodního volání. Tento tarif pak bude stát 966 korun,“</em> popisuje změny šéfka mobilního segmentu v O2 Silvia Cieslarová.</p>
  <a href="https://i.iinfo.cz/images/27/o2-tarify-1.png" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/27/o2-tarify-1-prev.png" alt=""/></a><br/>Zdroj: O2
  <p>Změny se dotkly i neomezených tarifů pro jednotlivce. Nepřišlo však zlevnění, ale naopak, objevil se dražší tarif se šesti gigabajty dat za 849 korun. V nabídce se ale objeví ještě dvacetigigabajtový tarif s 500 minutami volání do ciziny za 1699 korun. U nejpoužívanějšího neomezeného tarifu Tarif Free za 749 korun se ale nic nemění a zůstává s limitem ve výši 1,5 gigabajtu. </p>


checksum: fd676c39
status: unread
title: [aktualita] Google udržel pozici nejhodnotnější značky světa. Apple stále druhý
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/google-udrzel-pozici-nejhodnotnejsi-znacky-sveta-apple-stale-druhy/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek včera

  <p>Z roku na rok se zvýšila hodnota značky Google o sedm procent, na 245,6 miliardy dolarů. <a href="http://www.millwardbrown.com/brandz/brandz" rel="noreferrer" target="_blank">Aktuální žebříček BrandZ Top 100</a> agentury Milward Brown potvrzuje sílu technologických firem. </p>
  <p>Na druhém místě se totiž, stejně jako loni, drží Apple (234,7 mld.) a ten je následovaný Microsoftem (143,2 mld.), Amazonem (139,2 mld.) a Facebookem (129,8 mld.). Vlastně by se to dalo otočit a říci, že v první desítce se umístily jen dvě netechnologické značky, a to Visa a McDonald&#039;s. </p>
  <p>Zároveň se do desítky nejhodnotnějších značek poprvé dostala čínská firma – kterou je operátor Tencent. Jeho hodnota poskočila o 27 procent, na 108 miliard dolarů. </p>


checksum: 2d0d1422
status: unread
title: [aktualita] Chytrý reprák, nové iMacy, silnější iPad a nový iOS. Apple představoval novinky
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/aktuality/chytry-reprak-nove-imacy-silnejsi-ipad-a-novy-ios-apple-predstavoval-novinky/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  Jan Beránek včera

  <p>Po letech nový produkt, ale jinak veskrze jen vylepšení těch stávajících. Apple včera na vývojářské konferenci WWDC představil chytrý reproduktor HomePod, který má v sobě stejný procesor A8 jako iPhony a také v něm bydlí Siri. Firma tak vstupuje na trh, kde už operuje Alexa od Amazonu, Google Home a chce se na <a href="https://www.lupa.cz/clanky/tomas-turek-day-one-nechceme-vytvaret-terminatora-ale-jen-chytry-system/" rel="noreferrer" target="_blank">něj dostat třeba i české Angee</a>. Jak už to u Apple bývá, bude HomePod stát víc než konkurence, tedy kolem 350 dolarů. </p>
  <iframe src="https://www.youtube.com/embed/1hw9skL-IXc?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <p>Tim Cook přinesl i nový iPad Pro, ten by měl mít 10,5palcový displej a Apple ho osadil motorem jménem Apple A10X, který obsahuje šestijádrový procesor a dvanáctijádrové GPU.</p>
  <iframe src="https://www.youtube.com/embed/u9EojQiw1YI?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <p>Nové vnitřnosti dostal i iMac. A v nabídce se objevuje nový iMac Pro, který by měl být nejvýkonnějším počítačem Applu. Varianty začínají na osmijádrovém a končí na osmnáctijádrovým procesorem Xeon od Intelu. A k tomu Retina 5K displej. A to všechno bratru za pět tisíc dolarů. Ano, 5 tisíc. </p>


checksum: 2b9bd8a5
status: unread
title: [článek] Foto: Aruba dokončuje u Milána geotermálně chlazené datacentrum. Podívejte se
author: redakce@lupa.cz (Lupa.cz: David Slížek)
language: cs
url:
  https://www.lupa.cz/clanky/foto-aruba-dokoncuje-u-milana-geotermalne-chlazene-datacentrum-podivejte-se/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292196/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-1-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Datacentrum Global Cloud Data Center vyrostlo v italském Ponte San Pietro v areálu o výměře 200 tisíc metrů čtverečních, z toho 90 tisíc je určeno pro samotné datacentrum.</p>
  <p>Autor: Aruba Group</p>
  </li><li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292197/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-2-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Od října 2017 bude v provozu první z pěti plánovaných budov. Sekce A bude mít pro servery určeno 10 tisíc metrů čtverečních. Postupem času se má datacentrum rozrůst o další čtyři sekce.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292198/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-3-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>V budově A je celkem deset samostatných datasálů o výměře 1000 metrů čtverečních.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292199/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-4-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Celkem má být v kompletně dokončeném datacentru prostor pro 3600 racků (asi 165 tisíc fyzických serverů).</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292200/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-5-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Oficiálně bude první část datacentra, s příkonem 4 MW z celkově plánovaných 90 MW, otevřena 5. října 2017.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292201/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-6-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292204/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-9-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292202/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-7-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292203/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-8-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292205/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-10-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292206/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-11-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292207/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-12-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292208/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-13-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292226/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-31-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Chladicí systém s 2N redundancí tepelných výměníků.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292227/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-32-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292228/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-33-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292209/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-14-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292210/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-15-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292211/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-16-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292212/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-17-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Rozvaděče, UPS, baterie a transformátory jsou umístěny v samostaných kontejnerech.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292213/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-18-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Kontejnery označené BAT skrývají baterie, v kontejnerech UPS jsou záložní zdroje a v kontejnerech PC rozvaděče a transformátory mezi MV a LV napětím.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292214/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-19-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292215/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-20-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292216/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-21-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292217/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-22-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292218/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-23-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292219/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-24-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292220/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-25-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292221/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-26-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Aruba se chlubí, že její datacentrum využívá 100% obnovitelných zdrojů elektřiny. Jedním z nich jsou solární panely.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292222/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-27-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Dalším zdrojem je vodní elektrárna na blízké řece Brembo. Hydroelektrárnu vlastní Aruba.</p>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292223/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-28-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292224/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-29-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Autor: Aruba Group</p>
  </li>
  <li><a href="https://www.lupa.cz/galerie/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii/i/292225/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/412/nove-datacentrum-aruba-group-v-ponte-san-pietro-v-italii-30-thumb.jpg" alt="Nové datacentrum Aruba Group v Ponte San Pietro v Itálii"/></a>
  <h4>Nové datacentrum Aruba Group v Ponte San Pietro v Itálii</h4>
  <p>Datacentrum má geotermální chlazení využívající podzemní vodu.</p>
  <p>Autor: Aruba Group</p>
  </li>


checksum: 1ce6c792
status: unread
title: [článek] Odchody lidí a šmírovací software. České Kerio je po akvizici od GFI v rozkladu
author: redakce@lupa.cz (Lupa.cz: Jan Sedlák)
language: cs
url:
  https://www.lupa.cz/clanky/odchody-lidi-a-smirovaci-software-ceske-kerio-je-po-akvizici-od-gfi-v-rozkladu/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p>Ne vždy, když zahraniční technologická společnost koupí nějakou českou, to musí dopadnout tak, jako v případě <a href="https://www.lupa.cz/clanky/cisco-posili-vyvojovou-centralu-v-praze-zada-i-o-patenty/" rel="noreferrer" target="_blank">Cognitive Security</a>, <a href="http://www.lupa.cz/clanky/adam-skotnicky-tcp-cloud-prodej-firmy-za-miliardu-jsme-dohodli-za-14-dni/" rel="noreferrer" target="_blank">TCP Cloudu</a> či <a href="https://www.lupa.cz/clanky/nabidek-bylo-vic-oracle-byl-nejlepsi-v-cesku-rozsirime-vyvoj-rika-zakladatel-apiary/" rel="noreferrer" target="_blank">Apiary</a>. Do jejich zdejších vývojových center po odkupu proudí další investice a vývoj se zvětšuje. Plzeňská firma <a href="http://www.kerio.cz/" rel="noreferrer" target="_blank">Kerio Technologies</a>, kterou letos v lednu koupil americký <a href="https://www.gfi.com/" rel="noreferrer" target="_blank">GFI Software</a>, prožívá poněkud jiný příběh.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>Kerio vzniklo zhruba před dvaceti lety v Plzni, kde si doposud drželo silné vývojové centrum. Firmu založil Martin Viktora. Centrála pobočky vedená výkonným ředitelem Mirkem Křenem sídlila v kalifornském San José. Společnosti se dařilo prodávat firemní software v hodně konkurenčním prostředí – uspěla například s firewallem či groupwarem (e-maily, IM, kalendáře a tak dále).</p>

  <p>V podobné branži působí také GFI. Američané tak z Česka získali logické doplnění komunikačního a bezpečnostního portfolia, které už se daří integrovat do produktové nabídky. GFI od Keria koupilo vše, kromě <a href="https://www.samepage.io/" rel="noreferrer" target="_blank">Samepage</a>, převážně cloudové služby pro týmovou spolupráci, kde se pohybují i jména typu HipChat, Yammer a další.</p>
  <h2>Lidský exodus</h2>
  <p>Firmy hodnotu transakce nekomentují. Podle informací Lupy byla nicméně odkupní cena ve výši 28 milionů eur, což má být zhruba roční obrat Keria. Podle některých pozorovatelů a aktivních účastníků na trhu to po dvaceti letech práce není mnoho, pořád jsou to ale vyšší stovky milionů korun.</p>

  <p>Podle informací Lupy každopádně krátce po odkupu Keria nastal v Plzni exodus lidí. Ti se hned začali realizovat jinde. Prakticky celý front-end tým například přešel do Socialbakers, kteří rovněž vznikli v Plzni a provozují zde vývojové centrum. Několik dalších lidí šlo také do pražské firmy IceWarp, která si v komunikačních technologiích s Keriem dlouhá léta konkurovala (<a href="https://www.lupa.cz/clanky/adam-paclt-icewarp-proti-microsoftu-pujdeme-tvrde-pomohou-i-dalsi-akvizice/" rel="noreferrer" target="_blank">náš rozhovor</a>).</p>

  <p>„Akvizice GFI mají většinou stejný vzor. Zhruba 80 procent zaměstnanců odchází během pár dní,“ popisuje pro Lupu jeden z insiderů. Podobné reakce a zkušenosti lze vidět také na serveru Glassdoor, kde zaměstnanci hodnotí své zaměstnavatele.</p>
  <p>GFI během svého působení koupilo celkem pět firem: Sunbelt Software, Monitis, IASO, české Kerio a letos v dubnu podnik Exinda. I u něj už nastala masivní redukce.</p>
  <h2>Sledování práce zaměstnanců</h2>
  <p>Zaměstnanci GFI a koupených společností zmiňují několik problémů. Vedení GFI podle nich většinou nemá zájem porozumět koupeným firmám a jejich technologiím. Dochází k propouštění zkušených seniorních lidí, díky čemuž se pak sráží náklady a jsou prostředky na další akvizice. Firma má být hnána především kvantitou a čísly, nikoliv přímo zákazníky.</p>
  <a href="https://i.iinfo.cz/images/434/sidlo-keria-v-plzni-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/434/sidlo-keria-v-plzni-1-prev.jpg" alt="Sídlo Kerio Technologies v Plzni"/></a><br/>Autor: <a href="https://cs.wikipedia.org/wiki/Soubor:Business_Center_Bohemia.jpg" rel="noreferrer" target="_blank">Parkis</a>, podle licence: <a href="http://www.gnu.org/copyleft/fdl.html" rel="noreferrer" target="_blank">GNU FDL</a>
  <p>Sídlo Kerio Technologies v Plzni</p>

  <p>GFI ale také instaluje software pro sledování zaměstnanců. Ten každých deset minut dělá snímek obrazovky jejich pracovních počítačů a sleduje také další věci – například prohlížené webové stránky.</p>
  <p>Zaměstnanci si stěžují na firemní kulturu, nulovou transparentnost, špatné řízení a komunikaci. Stávající lidé se údajně neozývají, což zavedenou kulturu nadále podporuje.</p>
  <p>V podstatě stejné věci lze historicky pozorovat také u společnosti <a href="https://www.aurea.com/" rel="noreferrer" target="_blank">Aurea Software</a>. GFI Software aktuálně šéfuje výkonný ředitel Scott Brighton, který předtím zastával stejnou pozici právě v Aurea. Té pomohl v růstu finančních ukazatelů.</p>
  <p>GFI i Aurea patří do portfolia investičního fondu <a href="http://www.eswcapital.com/" rel="noreferrer" target="_blank">ESW Capital</a>. I právě ten podle informací Lupy stojí za nastavenými principy fungování a situací v Plzni.</p>
  <h2>Ta největší symbióza</h2>
  <p>GFI jako soukromě vlastněná společnost nezveřejňuje finanční výsledky. V roce 2013 plánovala vstup na newyorskou burzu, nakonec ale před IPO záměr stáhla. Před čtyřmi roky vykazovala roční tržby přes 150 milionů dolarů, ty už pravděpodobně zvládla výrazně navýšit.</p>

  <p>GFI se hodně zaměřuje na obchodní partnerský kanál. V Česku společnost zastupuje ostravský distributor <a href="http://www.zebra.cz/" rel="noreferrer" target="_blank">Zebra Systems</a>, který má v portfoliu také značky Parallels či Acronis. Situaci kolem odchodu lidí centrála GFI ani lokální zastoupení příliš široce nekomentuje.</p>


  <p><a href="http://www.tuesday.cz/akce/marcomdata/program/?utm_source=Lupa&amp;utm_medium=tip_Hrubesova&amp;utm_campaign=Marcom" rel="noreferrer" target="_blank">
  <img src="https://i.iinfo.cz/images/42/marcom-hrubesova-1.png" alt="marcom-Hrubesova"/> </a></p>


  <p>„Cílem je dosáhnout té největší symbiózy mezi GFI a Keriem a zajistit tím maximální spokojenost zákazníků. K naplnění tohoto cíle se bude i nadále pracovat s klíčovými lidmi jak z Čech, tak i globálního týmu,“ uvádí ředitel Zebry Zdeněk Bínek. „Z pozice lokálního distributora nemůžeme probíhající procesy nijak komentovat.“</p>
  <p>V kontextu Plzně a Keria v polovině loňského roku proběhla ještě jedna akvizice. Dva v minulosti vysoce postavení zaměstnanci právě z Keria Dušan Vítek a Tomáš Soukup prodali svůj startup Portadi do rukou amerického konkurenta OneLogin. Stali se z nich ředitelé pro produkt a vývoj a dělají pro velké zákazníky (<a href="https://www.lupa.cz/clanky/americky-onelogin-kupuje-ceske-portadi-delat-budou-pro-uber-ci-airbnb/" rel="noreferrer" target="_blank">náš článek</a>). Na plzeňské softwarové scéně se rovněž rýsuje slibný hráč v podobě OneSoft Connect (<a href="https://www.lupa.cz/clanky/ceska-firma-ve-valley-prezila-utok-patentoveho-trolla-ted-hleda-investici/" rel="noreferrer" target="_blank">náš text</a>).</p>


checksum: bf46fb84
status: unread
title: [článek] Noemi Maixner a ti druzí. Odkud se berou falešné účty, které milují politiky?
author: redakce@lupa.cz (Lupa.cz: Daniel Dočekal)
language: cs
url:
  https://www.lupa.cz/clanky/noemi-maixner-a-ti-druzi-odkud-se-berou-falesne-ucty-ktere-miluji-politiky/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <a href="https://i.iinfo.cz/images/215/naomi-maixner-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/215/naomi-maixner-1-prev.jpg" alt=""/></a>
  <p>Někdy na konci dubna se na Facebooku (ale mírně i na Twitteru) objevily spousty (teoreticky) falešných (fake) účtů. Třeba taková <a href="https://www.facebook.com/noemi.maixner.9" rel="noreferrer" target="_blank">Noemi Maixner</a>, která žije v Brně, má v profilovce ukradenou fotku Miss Arizona, pochází z Los Angeles a má poloprázdný profil snažící se vypadat jako funkční. Především ale chodí po Facebooku a podporuje Andreje Babiše.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>Má pár přátel (sedm, ale vidět je jenom pět), z nichž minimálně <a href="https://www.facebook.com/zdenko.parcetic" rel="noreferrer" target="_blank">Zdenko Parcetic</a> má v profilovce fotku z fotobanky a u těch dalších těžko říct něco jiného, než že jsou to náhodně vybrané žádosti o přátelství (<a href="https://www.facebook.com/karla.filipova." rel="noreferrer" target="_blank">Karla Filipová</a>, <a href="https://www.facebook.com/zina.kytka" rel="noreferrer" target="_blank">Zina Kytka</a>, <a href="https://www.facebook.com/TonyFcBook" rel="noreferrer" target="_blank">Antonio Mattozi</a>). Když si projdete, čeho je fanouškem, tak taky najdete místa, kam píše záplavy podivných komentářů, včetně těch jasně politicky motivovaných a bránících Babiše.</p>
  <p>Není jediná. Někdy na konci dubna se navíc falešní fanoušci dost probírali, včetně snah spočítat, kolik má <a href="http://www.twitter.com/@andrejbabis" rel="noreferrer" target="_blank">@andrejbabis</a> na Twitteru falešných sledujících a proč mu najednou tolik sledujících přibylo. Vedlo to k tomu, že se pár lidí a novinářů nechalo tradičně nachytat na „služby“, které zjistí počet fake/real sledujících. Bez ověření došli k závěrům, které bohužel nedávají smysl – tyhle služby totiž většinou prostě jenom za fake označí účty bez profilových fotek a bez „provozu“.</p>
  <a href="https://i.iinfo.cz/images/654/noemi-maixner-likes-1.png" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/654/noemi-maixner-likes-1-prev.png" alt=""/></a>
  <p><em>TIP: Celé to nakonec docela dobře popsal Josef Šlerka v<a href="http://databoutique.cz/post/160693406593/kolik-fale%C5%A1n%C3%BDch-u%C5%BEivatel%C5%AF-sleduje-andreje-babi%C5%A1e" rel="noreferrer" target="_blank"> Chlubí se Andrej Babiš na Twitteru falešnými followery? #sorryjako</a>.</em></p>
  <h2>Za všechno stejně může Marek Prchal</h2>
  <p>Většina výše zmíněných objevů se nese v duchu toho, že za všechno vlastně může Marek Prchal, který pro Andreje Babiše už několik let pracuje, a lidé se často diví, že se potřebuje snižovat k něčemu tak podřadnému, jako je vytváření sítě falešných účtů. Takový sociálně mediální marketing je bohužel běžně, ba dokonce masově používaný.</p>
  <p>Osobně jsem přesvědčený, že v tomto případně ANO ani Andrej Babiš tenhle nástroj nepotřebují, protože mají dostatek lidí, kteří jak hnutí, tak jeho lídra ochotně brání. Se všemi výhodami i nevýhodami, plynoucími hlavně z neřiditelnosti takovýchto „aktivistů“. A také z toho, že občas tyhle amatérské snahy bránit své „božstvo“ působí jako produkce fake účtů. Nutno dodat, že texty výše uvedené Naomi jsou podstatně horší, než to, co tvoří právě ona armáda ochotných dobrovolných podporovatelů.</p>
  <p>Marek Prchal pochopitelně říká, že žádné fejky nepoužívá, a říká i to, že je hnutí nepotřebuje. Na druhou stranu, je zcela logické, že by něco takového říkal, i kdyby je používal. Tyhle věci se prostě nepřiznávají a zatloukají až do poslední chvíle. Byť zrovna v tomto případě se přikláním k tomu, že nemá potřebu si vymýšlet.</p>
  <h2>Jak je to s těmi fejky co někoho podporují</h2>
  <p>S fejky, které někoho aktivně podporují, je to podstatně těžší než se záplavou falešných profilů, které prostě jenom sdílí či podporují nějaký obsah. Většinu „podporujících fejků“ prostě poznáte. Mají buď fotku z fotobanky, nebo snadno dohledáte, že patří někomu jinému. Mají malou fantazii při vytváření jmen, jejich profily jsou buď prázdné, nebo obsahují nějaký dost podivný obsah. Pokud jsou to čerstvé fake účty, tak nemívají přátele, je na nich málo obsahu a nemají žádnou digitální stopu. Problematické bývá i to, jakým způsobem píší. Jejich mluva je často prostě divná.</p>
  <p>Problém je hlavně v tom, že je několik variant podobných aktivit. Pro další vysvětlení budeme využívat model, že jde o ANO a že jde o další reálné politické strany, aby bylo jasnější, kdo je kdo.</p>
  <p>Varianta základní – <strong>dělá to ANO</strong> – ANO si vytvořilo armádu falešných účtů, které pobíhají po Facebooku či Twitteru a podporují ANO a Andreje. Dělá to tým uvnitř ANO. To je varianta, kterou každý automaticky předpokládá jako platnou.</p>
  <p>Varianta základní, za kterou ale ANO nemůže – <strong>dělají to fanoušci ANO</strong> – falešné účty vytvářejí samotní fanoušci, případně několik aktivních fanoušků, třeba takových, co mají pod palcem nějaké sociální nástroje. ANO by v tomto případě mohlo být rádo, ale ve skutečnosti tahle cesta vede do pekel. Nikdo z ANO by nad tím totiž neměl kontrolu a dříve či později by to skončilo katastrofou.</p>
  <p>Varianta základní, kde ANO někomu dalo peníze – <strong>ANO někoho zaplatilo</strong> – a falešné účty tedy tvoří nějaká externí agentura či jednotlivec, celé to není příliš řízené a žije to vlastním životem. Peníze sice asi dostal nějaký amatér, ale jak uvidíme z dalších variant, je to vlastně jedno. Hlavně že se něco děje. Mimo to je tu ještě možnost, že to neorganizuje přímo volební/komunikační tým z ANO, ale někdo další z ANO a dělá to na vlastní pěst.</p>
  <p><em>Poznámka: Poslední zmíněný bod mimochodem už začíná být mostem k variantě, že to dělá konkurence/protivník (viz dále). Protože ten interní člověk to může dělat jak s dobrým, tak se zlým úmyslem. </em></p>
  <p>Varianta konkurenční – <strong>dělá to konkurenční strana</strong> – je ta, kdy falešné účty ve skutečnosti vytváří například ČSSD (ale může to být i jiná strana) a doufá, že všichni budou řešit, jak je to zlé, že ANO takhle podvádí. Je to jedna z velmi častých variant, stejně jako ta, že ČSSD (či jiná strana) jiné falešné účty zároveň používá, aby přímo ANO a Babiše napadaly. Což samozřejmě může dělat i ANO – mít vlastní falešné účty napadající konkurenční strany a politiky.</p>
  <p>Varianta konkurenční – <strong>dělá to někdo na vlastní pěst</strong> – a může pochopitelně mít i onu podobu, že to dělá nějaký agilní jednotlivec z ČSSD a samotné stranické vedení s tím nic společného nemá a ani o tom neví. Může to dělat třeba i agentura, kterou kterákoliv ze stran najala a ve které pracuje nějaký další člověk, který nemyslí a považuje to za dobrý tah.</p>
  <p>Varianta vrtění psem – <strong>dělá to ANO, aby to vypadalo, že to dělá ČSSD</strong> – spočívá v tom, že si tohle všechno dělá ANO samo, aby to vypadalo jako že to dělá ČSSD. V různorodých podobách to opět může dělat volební štáb, sám Andrej Babiš, aniž by o tom komukoliv řekl, kdokoliv zevnitř strany, najatá agentura, aniž by řekla volebnímu štábu, či opět fanatičtí příznivci.</p>
  <p>Pokročilá varianta vrtění psem je ta, že <strong>to dělá TOP 09</strong> (protože za všechno přece může Kalousek), která tak doufá, že si všichni budou myslet, že ANO opět podvádí, a když to náhodou nedopadne, tak doufá, že to spadne na ČSSD, proti které také vlastně chce bojovat.</p>
  <p>Pak tu jsou všemožné konspirační teorie, jako že to třeba <strong>dělá Rusko, Ukrajina</strong>, Donald Trump (protože už to nemůže dělat Shapiro). Nebo to třeba dělají zednáři. Nebo Ovčáček. Jakkoliv mohou tyto varianty vypadat směšně, tak třeba právě Rusko či USA jsou jedni ze zásadních hráčů na poli vytváření tisíců falešných účtů, které jim mají pomáhat ovlivňovat všechno možné i nemožné.</p>
  <h2>V tuhle chvíli jste se v tom stejně už ztratili</h2>
  <p>Je dost jisté, že jste se ve všech těch možných větvích stejně už ztratili. Navíc neexistuje žádný jasný způsob, jak dokázat, která je ta správná, nehledě na to, že je velmi pravděpodobné, že jich současně probíhá několik. Nezapomeňme, jak dlouho iDnes a MAFRA sloužila Andreji Babišovi a že ani poté, co se to provalilo, nehodlá šéfredaktor (a vedení listu) přiznat, že mu prostě šli na ruku. </p>
  <p>Možná namítáte něco v tom duchu, že <em>„se falešné účty vyrojily přece právě teď, když to Andrej nejvíc potřebuje.“</em> Máte pravdu, ale bohužel to nic neříká o tom, <strong>kdo</strong> za nimi je a jakou motivaci má. Růst počtu sledujících u účtu na sociální síti je vždy enormní, když se o oné věci, straně, firmě, politikovi mluví. Což se přesně posledních několik týdnů děje a dít bude – a čím blíž k volbám, tím to bude horší a horší.</p>
  <h2>Facebook a jeho devět a více miliard účtů</h2>
  <p>Některé odhady říkají, že na sociálních sítích rozměru Facebooku/Instagramu/Twitteru je až třicet procent falešných účtů. Sítě samotné tohle popírají, většinou uvádějí, že jde o něco jako šest až deset procent. V tomto kontextu je důležité připomenout, že něco jiného je účet (tj. založený účet) a něco jiného aktivní uživatel – těch prvních je obvykle čtyřikrát až šestkrát tolik než těch druhých. Všichni (až na LinkedIn) už roky operují s aktivními účty (MAU, měsíčními aktivními), ale falešné účty se do nich započítávají jenom výjimečně.</p>
  <p>Z tohoto pohledu může mít Facebook něco okolo devíti miliard účtů celosvětově a něco okolo deseti až dvaceti milionů v Česku. MAU má totiž pod dvě miliardy celosvětově a něco okolo 4,5 milionu v Česku. Fake účty jsou většinou dlouhodobě spící, takže v MAU se objeví až když přijde důvod je probudit.</p>
  <p>Budováním desítek až stovek tisíc falešných účtů se navíc ve světě úspěšně živí řada firem. Využívají je k prodávání fanoušků (prostě vám je přidají jako fanoušky), ale také k vytváření engagementu (účty dávají Líbí, sdílejí). Použití ke komentování je už o poznání složitější, ale funguje to hrozně jednoduše – pár desítek až stovek najatých, špatně placených lidí prostě celou pracovní dobu prosedí u počítačů, ze kterých vkládají komentáře.</p>
  <p>Takhle to prostě je a bude. Prohlášení Facebooku, že například před volbami ve Francii „smazal 30 tisíc falešných účtů“, jsou neuvěřitelně směšná. Představte si, že smazal 30 000 účtů z nějakých těch 9 000 000 000. Což je něco jako 0,0003 procenta.</p>

  <p><a href="http://www.tuesday.cz/akce/marcomdata/?utm_source=Lupa&amp;utm_medium=tip_v_clanku_Novotny&amp;utm_campaign=Marcom" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/208/marcom-novotny-1.png" alt="Marcom"/></a></p>

  <h2>Pojďme to nějak shrnout</h2>
  <p>Andrej Babiš na Twitteru (ale ani na Facebooku) <a href="http://databoutique.cz/post/160693406593/kolik-fale%C5%A1n%C3%BDch-u%C5%BEivatel%C5%AF-sleduje-andreje-babi%C5%A1e" rel="noreferrer" target="_blank">nemá žádné vysoké množství fake účtů</a> mezi fanoušky. Po Facebooku a Twitteru pobíhá dostatek mašíblů, kteří vypadají jako falešné účty a kteří do krve brání své oblíbené politiky a ještě vehementněji napadají své neoblíbené. </p>
  <p>S blížícími se volbami to bude ještě horší. Pokud to špatně nesete, přestaňte sociální sítě používat.</p>


checksum: 9f29a74b
status: unread
title: [článek] Pioneers Festival: Češi byli slyšet a vidět i mezi polidštěnými roboty a politiky
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/clanky/pioneers-cesi-byli-slyset-a-videt-i-mezi-polidstenymi-roboty-a-politiky/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>„Podporujeme zázračné děti už od roku 1756,“ chlubí se rakouská metropole na dalším ročníku startupového <a href="https://pioneers.io/events/pioneers17#/" rel="noreferrer" target="_blank">festivalu Pioneers Festival</a>. A dlouhodobá snaha o to vrátit Vídeň opět na výsluní regionu začíná nést ovoce. Minimálně na pár dní v roce se stává hlavním městem startupů v zemích bývalého Rakouska-Uherska. </p>

  <p>Do starého sídla habsburských císařů, Hofburgu, se na den dětí sjeli investoři a startupy z celého regionu a po parketách velkých sálů se začali prohánět roboti. Letos se k podpoře talentů a inovací naplno přihlásily i národní nebo městské fondy a programy. </p>
  <p>Vídeň se chlubila svým potenciálem co-workingů a hubů, Rakousko kromě prezentace ministerstva dopravy a inovací představilo i Alberta. <a href="https://www.patentamt.at/albert/" rel="noreferrer" target="_blank">Chatbot patentového úřadu</a>, který pomůže startupům zdarma s ochranou značky a pomůže s patenty. „Ochranné známky a patenty jsou velmi drahé. S naším botem si mohou startupy jednoduše, hned na svém začátku, na Facebooku ověřit, jestli jejich vysněné jméno už nemá někdo zaregistrované a podobně. Také jim dokážeme pomoci do doby, než budou mít těch pět tisíc eur na velký patent,“ vysvětluje Christian Seyringer z rakouského patentového úřadu. </p>
  <p>Nejen rakouská vláda se chtěla pochlubit svým přístupem k novým firmám. Svůj stánek si v přízemí Hofburgu rozbil i polský program podpory inovativních firem a hned vedle třeba Maďaři nebo Italové nebo Hong Kong. „Hledáme si v Polsku zajímavé startupy a ty se pak snažíme propagovat prostřednictvím našich kontaktů,“ tvrdí Sebastian Szczepaniak z <a href="http://fwn.org.pl/en/startup-s.html" rel="noreferrer" target="_blank">polské Fundacje Pracy Narodów</a>. Svou prezentaci přivezly i evropské programy nebo německé akcelerátory.</p>
  <p>„Chceme vybudovat evropské MIT, i když je nám samozřejmě jasné, že MIT je jenom jedno,“ dodává Thomas Kösters z <a href="https://www.eitdigital.eu/" rel="noreferrer" target="_blank">EIT Digital</a>, evropské agentury, která pomáhá startupům ke vstupu na nové trhy a využívá k tomu infrastruktury celé Evropy. „V každé zemi EU spolupracujeme minimálně s jedním partnerem, v Česku je to třeba Jihomoravské inovační centrum, v Rakousku zase INiTS Gründerservice. Inovativním firmám dokážeme zprostředkovat nejen kontakty, ale i spolupráci s univerzitami nebo akcelerační program,“ dodává Kösters. </p>
  <iframe src="https://www.youtube.com/embed/6u8GnBkGBog?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <p>„S EIT jsme začali spolupracovat teprve koncem loňského roku, tohle je jedna z prvních akcí,“ vysvětloval na akci věnované startupům zaměřeným na Průmysl 4.0 Vojtěch Krmíček z JIC. Ačkoliv šlo jen o jednu z mnoha večerních akcí, dorazilo hned několik tuzemských startupů. Svou krátkou prezentaci si přichystaly především brněnské startupy Sewio <a href="https://www.lupa.cz/clanky/greycortex-v-brne-se-rodi-dalsi-velka-vec-umela-inteligence-analyzuje-site/" rel="noreferrer" target="_blank">nebo GreyCortex</a>. </p>
  <a href="https://www.lupa.cz/galerie/pioneers-festival-2017-roboti-pivo-a-rakousko-uherska-seslost/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/185/pioneers-festival-2017-roboti-pivo-a-rakousko-uherska-seslost-4-large.jpg"/></a>
  <a href="https://www.lupa.cz/galerie/pioneers-festival-2017-roboti-pivo-a-rakousko-uherska-seslost/i/292066/" rel="noreferrer" target="_blank">Dalších 23 fotografií</a> 

  <p>Nakonec se ale v hipsterském hotelu 25hours zjevili i účastníci <a href="https://www.lupa.cz/aktuality/techsquare-vezme-do-vidne-na-pioneers-sedmicku-startupu-vyrazi-za-mesic/" rel="noreferrer" target="_blank">zájezdu s logem TechSquare a jejich korporátních partnerů</a>. „Letos jsme vybrali sedmičku startupů, která byla nominovaná do pětistovky nejlepších startupů z celého světa. Po prvním kole prezentací prošly tři až do první padesátky,“ vysvětluje Renata Nemkyová z TechSquare s tím, že v autobuse do Vídně si zajistili místa i partneři z Adastry, Anectu, Vodafonu nebo Kooperativy. </p>
  <p>CzechInvest nebo tuzemské akcelerátory stánek neměly, ale čeština byla slyšet hodně. Před budovou parkovaly nové kodiaqy škodováckého Digital Labu a kroužily se zajímavými startupy po vnitřním vídeňském okruhu. „Vybrali jsme si pár startupů z regionu, které splňovaly naše požadavky. Chceme hlavně zaměření na chytrou mobilitu,“ vysvětluje Petra Hubačová ze Škoda Digital Labu. </p>
  <a href="https://i.iinfo.cz/images/572/kodiaq-pioneers-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/572/kodiaq-pioneers-1-prev.jpg" alt=""/></a><br/>Autor: Jan Beránek
  <p>Škodovka parkovala se svými auty hned u vstupu na festival. </p>

  <p>Mezi startupy vystavující ve <a href="https://www.lupa.cz/clanky/tomas-turek-day-one-nechceme-vytvaret-terminatora-ale-jen-chytry-system/" rel="noreferrer" target="_blank">startupové zóně se dostalo Angee</a>, které už pomalu posílá svůj bezpečnostní válec v Číně do sériové výroby. Svůj stůl obložilo dvěma displeji i <a href="https://www.lupa.cz/clanky/tomas-gogar-rossum-rur-jeste-nemame-stavime-rir-ktery-porozumi-fakturam/" rel="noreferrer" target="_blank">AI duo Rossum a Vize.it</a>. „Včera jsme rozjeli ostrou verzi na webu a naše neuronové sítě už se naučily po češtině rozumět i anglicky psaným fakturám. Rádi bychom tu oslovili především zástupce bank a fintechových služeb,“ tvrdí Tomáš Gogár z Rossumu. Po investorech se ve Vídni poohlíželi i brněnští Smartlook. „Máme sice <a href="https://www.lupa.cz/clanky/webnode-a-ondrej-fryc-investuji-10-milionu-do-e-commerce-startupu-smartsupp/" rel="noreferrer" target="_blank">investici od Reflex Capitalu a Webnodu</a>, do podzimu bychom ale chtěli udělat další kolo,“ vysvětluje šéf firmy Petr Janošík. </p>
  <h2>Velká jména, velká témata</h2>
  <p>Tématicky už startupový festival dospívá. Od lifestylových začátků se posouvá k aktuálním trendům i složitějším problémům. Letos pořadatelé ulovili experty na umělou inteligenci. Behshad Behzadi se pochlubil s tím, jak cvičí umělou inteligenci schovanou za virtuální asistentkou v Androidu, Beth Moses – trenérka astronautů z Virgin Galaxy zase utrousila, že „zkušenost s cestou do vesmíru je nová hranice lidství.“ Na zem nakonec debatu přivedl Andrew Chen z Uberu během vyhlašování vítězných startupů. „Technologie se mění, ale lidi zůstávají pořád stejní,“ okomentoval finálovou nabídku. </p>
  <iframe src="https://www.youtube.com/embed/dlBc2c-ekQ0?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <p>Přestože se humanoidní roboti pořád považují spíš za zábavný doplněk technologických akcí, německá firma <a href="http://www.humanizing-technologies.com/" rel="noreferrer" target="_blank">Humanizing Technologies</a> už svou Pepper připravuje na kariéru recepční. „Vyrábí nám ji Foxconn, naučili jsme ji lidským gestům a je schopná přijmout objednávku nebo uvítat hosty v kancelářských budovách a mezi tím, než si pro návštěvu přijdou, je zabavit třeba novinkami z té či oné firmy. Možností je hodně a už to nevypadá tak sci-fi jako dříve,“ vysvětlil jeden z učitelů robotky Pepper Tim Schuster. </p>


  <p><a href="http://www.tuesday.cz/akce/e-business-forum-2017/?utm_source=Lupa&amp;utm_medium=tip_early&amp;utm_campaign=EBF17" rel="noreferrer" target="_blank">
  <img src="https://i.iinfo.cz/images/372/ebf17-early-1.png" alt="EBF17_early"/> </a></p>


  <h2>Nový buzzword – je tu GovTech</h2>
  <p>Jedním z velkých témat bylo i to, jak se s nastupujícími fenomény umělé inteligence, robotizací, digitalizací nebo celkově změnami v rámci Průmyslu 4.0 vypořádají státy a vlády. Nová oblast inovací si už vysloužila označení GovTech. </p>
  <p>Kromě eurokomisaře Andruse Ansipa do Vídně se svou vizí zavítal třeba bývalý bulharský prezident Rosen Plevneliev, rakouská tajemnice pro digitalizaci Muna Duzdar nebo slovenský prezident Andrej Kiska, který přejel Dunaj a uzavřel první den akce svým osobním podnikatelským příběhem.</p>


checksum: 163c502f
status: unread
title: [článek] Podvod s kupóny na WhatsAppu, Slušní lidé na Facebooku a 30. výročí GIFu
author: redakce@lupa.cz (Lupa.cz: Daniel Dočekal)
language: cs
url:
  https://www.lupa.cz/clanky/podvod-s-kupony-na-whatsappu-slusni-lide-na-facebooku-a-30-vyroci-gifu/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p>Sociální sítě v sedmnácti letech? Nepoužíváte-li je, jste outsider. Jste divní, hloupí. Jste loser. A není to zdaleka „až“ v sedmnácti letech. V<a href="https://medium.com/@coreyalex/what-ive-learnt-as-a-17-year-old-who-deleted-all-social-media-d282274d4edd" rel="noreferrer" target="_blank"> I’m 17 And I Deleted All My Social Media. Here’s What Happened</a> je dost poučný pohled na tuhle generaci. A doporučení, že bychom měli sociální sítě smazat.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>Terorizoval nespokojené zákazníky a opakovaně jim vyhrožoval vraždou. Ani první trest 3,5 roku ve vězení, spojený s webem DecorMyEyes, nic nezměnil, ve stejné taktice pokračovat na OpticsFast.com, kde zákazníkům místo slíbeného luxusního zboží posílal levné kopie. Ti, kteří si stěžovali, se setkali s terorem, obtěžováním a výhrůžkami, desítkami telefonátů i stovkami mailů denně. Zajímavé je, že Vitaly Borker se doslova vyžíval v negativních recenzích a považoval je za zásadní taktiku, jak se objevit ve vyhledávání v Googlu. Jakkoliv absurdně to zní, v roce 2010 mu to fungovalo a krátce po jeho prvním zatčení to vedlo k úpravám v algoritmu Googlu. Poučné čtení najdete v <a href="https://www.trustpilot.com/review/www.opticsfast.com" rel="noreferrer" target="_blank">OpticsFast reviews na TrustPilot.com</a>. Viz <a href="https://www.nytimes.com/2017/05/25/business/eyeglass-vendor-imprisoned-for-terrorizing-consumers-is-accused-of-fraud.html" rel="noreferrer" target="_blank">Eyeglass Vendor, Imprisoned for Terrorizing Consumers, Is Accused of Fraud</a>.</p>
  <p>Internetové trendy roku 2017 od Mary Meeker aneb povinné čtení právě vyšlo. Je k nalezení na <a href="http://www.kpcb.com/internet-trends" rel="noreferrer" target="_blank">www.kpcb.com/internet-trends</a>. Což znamená, že byste měli ony zhruba tři stovky snímků začít pečlivě studovat.</p>
  <p>Elon Musk <a href="https://www.lupa.cz/aktuality/elon-musk-konci-jako-trumpuv-poradce-kvuli-klimaticke-dohode/" rel="noreferrer" target="_blank">opouští</a> pozici poradce amerického prezidenta Donalda Trumpa. Probralo ho až opuštění Pařížské klimatické dohody, bohužel. Jakkoliv lze toho rozhodnutí brát pozitivně, přichází příliš pozdě.</p>
  <h2>TELEgraficky</h2>
  <p>■ <a href="https://codepen.io/stefanweck/pen/Vbgeax" rel="noreferrer" target="_blank">Waterdoplet WebGL Shader</a> ■ <a href="https://www.youtube.com/watch?v=FJotnHLeLB8" rel="noreferrer" target="_blank">PornHub slaví 10 let</a> ■ Snapchat brýle <a href="https://venturebeat.com/2017/06/02/snaps-spectacles-finally-come-to-europe-in-search-of-a-market-that-will-care/" rel="noreferrer" target="_blank">dorazily</a> do Evropy</p>
  <iframe src="https://www.youtube.com/embed/FJotnHLeLB8?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <h2>WEBDESIGN, INTERNET</h2>
  <p>Pro weby s inzercí je bot lepším návštěvníkem než člověk. Na rozdíl od člověka totiž přináší peníze – co na tom, že jde o podvod. Prostě dokud se platí za klikání, je jasné, o co jde. Viz <a href="https://www.theverge.com/2017/5/24/15681080/ad-fraud-websites-traffic-bots-white-ops-report" rel="noreferrer" target="_blank">One in five ad-serving websites is visited exclusively by fraud bots</a> a hlavně <a href="http://www.whiteops.com/downloads/bot-baseline-2016-2017" rel="noreferrer" target="_blank">Bot Baseline Report 2016–2017</a> (stažení spíše <a href="http://www.ana.net/getfile/25093" rel="noreferrer" target="_blank">zde</a>). Dobrá zpráva je, že v podvodném klikání se v roce 2017 protočí 6,5 miliardy dolarů, což je méně než 7,2 miliardy v roce 2016. Špatná zpráva je, že masivní zaměření na video znamená, že právě tam najdete nejvíce podvodů. 22 % videoinzerátů na desktopu je zhlédnuto roboty.</p>
  <p>Prohlížení bez Flashe se blíží v Česku 50 procentům. Pokud tedy ještě stále máte na webu něco flashového (jako třeba <a href="http://www.rankings.cz/en/rankings/flash-versions.html" rel="noreferrer" target="_blank">mají v gemiusRanking</a>), poněkud jste zaspali dobu. Gemius tohle měří ve zhlédnutých stránkách, případný pohled přes návštěvy/návštěvníky bohužel nedodává. Tady doporučím <a href="https://www.statista.com/chart/3796/websites-using-flash/" rel="noreferrer" target="_blank">The Web Is Turning Its Back on Flash</a>, kde se nedívají na prohlížeče, ale na počet webů, které používají Flash (10 % v říjnu 2016).</p>
  <p>K přihlášení do <a href="https://www.wsj.com/" rel="noreferrer" target="_blank">WSJ</a> pro bezplatné čtení prý stačilo použít media/media. Všichni to prý věděli, ale nikdo o tom nemluvil. Byť tedy někteří lidé z WSJ se dušují, že tam pracovali roky a nevěděli nic. Ale už to prý nejde. Viz <a href="https://www.buzzfeed.com/matthewzeitlin/rip-media-media?utm_term=.hnnw6YKMr#.rrLm518xG" rel="noreferrer" target="_blank">The Media&#039;s Best-Kept Secret Was A Free Wall Street Journal Login, And Now It&#039;s Gone</a>.</p>
  <p>Twitter přidal 239 nových emoji. Ale jak už to tak bývá, ne každý je uvidí, dokonce ani ne každý, kdo používá Twitter. A pokud se na ně budete dívat na mobilu, řadu z nich nerozpoznáte tak jako tak. A dejte si pozor na vlajky zemí, ostatní je mohou vidět všechny jenom jako černou vlajku. Na druhou stranu, Twitter prostě jenom podporuje <a href="http://emojipedia.org/emoji-5.0/" rel="noreferrer" target="_blank">Emoji 5.0</a> standard (který nedávno podpořil i Google). Viz <a href="https://thenextweb.com/twitter/2017/05/24/twitter-239-new-emoji-added/" rel="noreferrer" target="_blank">Twitter adds 239 new emoji – but not everyone can see them all just yet</a>.</p>
  <p>Vyhledávání v Googlu chvíli mělo novou záložku <strong>Personal/Osobní.</strong> Hledala ve vašich fotkách v Googlu a také v Gmailu, tedy samozřejmě pokud jste byli přihlášení. Dostat se k ní dalo přes Více/More a něco málo k tomu najdete v nápovědě <a href="https://support.google.com/websearch/answer/1710607?ref_topic=3036132&amp;hl=en" rel="noreferrer" target="_blank">Search results from your Google products</a>, kde je zjevné, že to zdaleka nekončí jen u Gmailu a fotek. V <a href="https://www.google.com/preferences" rel="noreferrer" target="_blank">Nastavení hledání</a> (Search Settings) je možné používání osobních hledání zapnout a vypnout. Ale pozor, po pár dnech záložka zmizela. Viz <a href="http://searchengineland.com/google-adds-personal-search-filter-drops-feature-shortly-275962" rel="noreferrer" target="_blank">Google adds ‘Personal’ search filter, then drops it</a>.</p>
  <p>Co že to obnáší být strážcem čistoty internetu u Googlu? Dlouhé povídání najdete v <a href="http://www.gq.com/story/my-awful-life-as-the-internets-janitor" rel="noreferrer" target="_blank">Gore, Porn, and Unspeakable Acts on Dead Bears: My Awful Life as the Internet&#039;s Janitor</a> a je dost poučné, pokud o téhle „temné“ záležitosti ještě nic nevíte. Google nevhodný a závadný obsah řeší podobně jako ostatní, armádou smluvních dříčů, co kontrolují a kontrolují a kontrolují. V marném doufání, že se jednou algoritmy naučí to dělat za ně – v čemž opakovaně selhává Facebook, který na tom navíc šetří ještě více než Google.</p>
  <p>Google Chrome bude blokovat otravnou inzerci. Je to potvrzeno přímo Googlem, viz <a href="http://adage.com/article/digital/official-google-chrome-ad-blocker/309238/" rel="noreferrer" target="_blank">Google Chrome Will Automatically Block Annoying Ads</a> nebo viz <a href="https://www.lupa.cz/aktuality/potvrzeno-google-opravdu-vybavi-chrome-blokatorem-agresivnich-reklam/" rel="noreferrer" target="_blank">Potvrzeno: Google opravdu vybaví Chrome blokátorem agresivních reklam</a>. Vydavatelům Google nabídne pomůcku na určení „skóre otravnosti“. Podle Googlu nejde o „blokování inzerce“ ale „filtr, který odstraní inzerci, kterou spotřebitelé nejvíc nenávidí“ – vyskakovací bannery, blikající a barvu měnící reklamy či inzeráty blokující přístup k obsahu (něco, co tak rád dělá americký Forbes). Nástroj <em>Funding Choices</em> by měl navíc umožnit webům přesvědčit uživatele používající vlastní blokátory, aby web odblokovali, nebo zaplatili za přístup při blokování inzerce. Celé tohle je absurdní výsledek ignorance vydavatelů, kteří posledních pět let usilovně likvidují trh, na kterém jsou závislí. A kdy že tohle dorazí? Ne dříve než někdy na počátku roku 2018.</p>
  <p>GIFu je <a href="https://www.wired.com/2017/05/gif-turns-30-ancient-format-changed-internet/" rel="noreferrer" target="_blank">30 let</a> a nutno dodat, že až v poslední době je to divoká jízda. Hlavně pro zásadní oblibu <strong>animovaných GIFů</strong> ve všech podobách a ve všech sociálních sítích a komunikačních programech. V dobách dávných ale <a href="https://www.w3.org/Graphics/GIF/spec-gif89a.txt" rel="noreferrer" target="_blank">GIF</a> byl zásadním nástrojem pro neanimované obrázky, kde JPG/JPEG nemohl být použit kvůli ničení kompresním algoritmem. Na počátku je rok 1986 a tehdy populární Compuserve a telefonní linky, kde 1200 b/s přenosy byly závratně rychlé (a 300 bitů za sekundu běžné). První specifikace GIFu se objevila v květnu 1987, dva roky předtím, než se objevil WWW a šest let předtím, než vznikl Mosaic prohlížeč.</p>
  <h2>SOFTWARE</h2>
  <p>Ruska firma se specializuje na manipulaci herních automatů. A podle <a href="https://www.wired.com/2017/02/russians-engineer-brilliant-slot-machine-cheat-casinos-no-fix/?mbid=social_twitter" rel="noreferrer" target="_blank">Russians Engineer a Brilliant Slot Machine Cheat—And Casinos Have No Fix</a> dokáže dělat nevídané věci. V článku je popsán konkrétní případ z roku 2014. Ve stručnosti: útočníkům se v tomto případě podařilo pomocí nafilmované sekvence her analyzovat mechanismus a zjistit, jakým způsobem v dalším hraní získat nebývale vysoké částky. Mobil posloužil i při dalším hraní v tom, že vibrací říkal hrajícímu, kdy má stisknout knoflík.</p>
  <p><a href="https://www.google.com/nikcollection/" rel="noreferrer" target="_blank">Nik Collection</a> končí, Google už nebude pokračovat ve vývoji. Stávající nabídka zůstává dostupná. Jde o poměrně známou a ceněnou kolekci pluginů pro Photoshop, Lightroom a Aperture, kterou Google získal v roce 2012 při koupi společnosti Snapseed. Původní cena pluginů 500 USD byla později snížena na 50 USD a v roce 2016 bylo vše zpřístupněno zdarma.</p>
  <p>NPD Group: GTA V je <a href="https://twitter.com/MatPiscatella/status/870295917735301120" rel="noreferrer" target="_blank">nejlépe prodávaná hra</a> v USA. A to prosím pěkně nejlépe prodávaná od samého počátku, co NPD Group začalo sledovat prodeje her (1995). Nutno dodat, že nepočítají prodané kopie, ale tržby. GTA V v dubnu překročila 80 milionů prodaných kopií celosvětově.</p>
  <h2>MARKETING A KOMUNIKACE</h2>
  <p>Negativní recenze na World of Tanks byla zlikvidována zneužitím nárokování autorských práv. Taková ta klasika, se kterou se potkáte dost často, ale zrovna od tvůrců WoT ji nečekáte. Viz <a href="https://www.techdirt.com/articles/20170522/14415637422/world-tanks-developer-gets-negative-review-video-taken-down-under-threat-copyright-claim-backlash-ensues.shtml" rel="noreferrer" target="_blank">World Of Tanks Developer Gets Negative Review Video Taken Down Under Threat Of Copyright Claim, Backlash Ensues</a>. Jak už to tak bývá, odstraněné video stále žije a nejspíš bude žít donekonečna. K čemu je ještě vhodné dodat, že těch fu*k a fu**ing je ve videu opravdu možná až příliš:</p>
  <iframe src="https://www.youtube.com/embed/Z9juoiLgzFU?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <p>S digitálními médii dnes dospělí v USA tráví 5,6 hodiny denně. 3,1 hodiny na mobilních zařízeních (a stále to roste), 2,2 hodiny na počítačích či noteboocích (posledních tři roky beze změny) a 0,4 hodiny na jiných zařízeních. Viz <a href="http://www.kpcb.com/internet-trends" rel="noreferrer" target="_blank">Mary Meeker a Internet Trends 2017</a>.</p>
  <h2>BEZPEČNOST, SOUKROMÍ, PRÁVO</h2>
  <p>Hoax v akademickém tisku. Už ten název: The conceptual penis as a social construct. Ale budiž, tohle by mohlo být předmětem vědeckého zkoumání. Problém je, že autoři to napsali jako nesmyslný podvrh od samého počátku. A vyšlo jim to v akademickém tisku, kde mají texty procházet ověřovacím a hodnotícím procesem. Viz <a href="http://digg.com/2017/journal-hoax-sokal-gender-studies-penis-social-construct" rel="noreferrer" target="_blank">What&#039;s Going On With That Big New Academic Journal ‚Hoax‘</a>.</p>
  <p>Google neposkytne data o platech, je to prý příliš nákladné a logisticky obtížné. Což je typická odpověď českého úřadu, když po něm někdo chce něco nepříjemného. Český úřad si za to rovnou řekne desítky tisíc, ačkoliv by mělo jít o jednu sjetinu z informačního systému. U Googlu jde o to, že čelí obvinění z nedostatečného placení žen. Viz <a href="https://www.theguardian.com/technology/2017/may/26/google-gender-discrimination-case-salary-records" rel="noreferrer" target="_blank">Accused of underpaying women, Google says it&#039;s too expensive to get wage data</a> a zjistit údaje by prý stálo 500 hodin a 100 tisíc dolarů. Kolik tak procent z 28 miliard dolarů ročního příjmu Googlu to je?</p>
  <p>Z WhatsAppu lze automatizovaně získat detaily skoro všech uživatelů. Facebook to nepovažuje za problém a nebude to řešit. Vlastně nepřekvapuje. Viz <a href="https://www.lorankloeze.nl/2017/05/07/collecting-huge-amounts-of-data-with-whatsapp/" rel="noreferrer" target="_blank">Collecting huge amounts of data with WhatsApp</a> a nutno dodat, že je možné zjistit nejenom „veřejně dostupné informace“, ale také monitorovat, kdy jste „přihlášení“ a kdy ne, a sestavit kompletní časovou osu vašich dnů.</p>
  <p>Aplikaci OneLogin unikla data a ukázalo se, že je útočníci mohou dešifrovat. U služby uchovávající přihlašovací údaje do webů a aplikací je to dost zásadní selhání. Viz <a href="https://krebsonsecurity.com/2017/06/onelogin-breach-exposed-ability-to-decrypt-data/" rel="noreferrer" target="_blank">OneLogin: Breach Exposed Ability to Decrypt Data</a> a <a href="https://www.onelogin.com/blog/may-31-2017-security-incident" rel="noreferrer" target="_blank">May 31, 2017 Security Incident (UPDATED June 1, 2017)</a>, kde zjistíte i to, že útok proběhl v AWS. Zajímavé.</p>
  <p>Hoax nabízející 2500 Kč Tesco či Albert kupón se šíří s pomocí WhatsAppu. Na konci si pořídíte do počítače adware/virus nebo přijdete o peníze v klasickém podvodu s objednáním zpoplatněných SMS. A protože je lidská hloupost nekonečná, počet obětí bude určitě závratný. Viz <a href="https://www.lupa.cz/aktuality/avast-varuje-pred-podvodnymi-zpravami-ktere-se-siri-na-ceskem-whatsappu/" rel="noreferrer" target="_blank">Avast varuje před podvodnými zprávami, které se šíří na českém WhatsAppu</a>.</p>
  <h2>SOCIÁLNÍ SÍTĚ</h2>
  <p>Příběhy na Instagramu je nově možné prohledávat/vidět podle polohy a hashtagu. Vše najdete v Explore jako každé jiné hledání, nejbližší místo se navíc objevuje hned v záhlaví Explore, kde (jak jinak) jsou Příběhy. Pokud marně hledáte hledání podle hashtagu, tak trpělivost, bude to dostupné „za pár týdnů“.</p>
  <p>Twitter od Facebooku <a href="https://support.twitter.com/articles/14606#review-requests" rel="noreferrer" target="_blank">okopíroval Žádosti</a> z Messengeru. V případě Twitteru jde nově o to, že když vám pošle přímou zprávu někdo, koho nesledujete, přímou zprávu nedostanete, ale objeví se v <em>Žádostech/Requests</em> v rámci záložky <em>Zprávy/Messages</em>. Na Facebooku to nikdy nefungovalo (protože nikdo žádnou extra složku s žádostmi nekontroluje). Žádost můžete buď <em>Smazat/Delete</em>, nebo <em>Přijmout/Accept</em> (čímž se přesune do Inboxu). Tohle celé funguje, jenom pokud máte nastavené <em>Přijímat zprávy od kohokoli/Receive Messages from Anyone</em>, a týká se to jak jednotlivých zpráv, tak skupinové komunikace. Samozřejmě platí, že pokud vás někdo obtěžuje Žádostmi, jediná možnost, jak se toho zbavit, je, že hozablokujete (či nahlásíte).</p>
  <p><a href="http://databoutique.cz/post/161312186128/slu%C5%A1n%C3%AD-lid%C3%A9-na-facebooku" rel="noreferrer" target="_blank">Slušní lidé na Facebooku</a> analyzovaní Josefem Šlerkou je klasická ukázka toho, v jaké virtuální bublině žijeme a jak snadné je nechat (se) manipulovat. Jak algoritmy Facebooku, tak manipulátory. Užitečné čtení na téma <strong>proč se lidé stávají fanoušky </strong>najdete na konci.</p>
  <p>Facebook mění fotoalba v něco jako univerzální úložný prostor. Nově tam můžete vedle fotek ukládat i videa, textové příspěvky a checkiny. Zejména to poslední je trochu podivné, protože checkiny ve Facebooku umřely už v době, kdy koupil Gowallu a okamžitě ji zrušil. Zjednodušilo se i vytváření sdílených alb a nově můžete na profilu zobrazovat jedno vybrané album. Pravdou je, že fotoalba jsou už roky utopená, ztracená a nepoužívaná. A také je nutné připomenout, že Facebook se k fotkám chová stále tak, že je zásadně ničí kompresí a zmenšením a nikdy vám je už v původní podobě nevydá. Nová fotoalba navíc podle všeho najdete jenom na Androidu a později na iOSu. Podivné nápady. Viz <a href="https://www.theverge.com/2017/6/1/15725404/facebook-collaborative-photo-album-app-update" rel="noreferrer" target="_blank">Facebook’s new collaborative photo albums let users save text posts and check-ins</a>.</p>
  <h2>MOBILNÍ APLIKACE</h2>
  <p>Šest stupňů volnosti aneb jak to vypadá, když se auto bez řidiče pohybuje po ulici:</p>
  <iframe src="https://www.youtube.com/embed/O6DRfAC1JXA?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <p>Facebook spouští Talk, další chatovací aplikací míří na děti a mládež. A také na rodiče, kterým umožní lépe řídit, s kým si jejich děti smí povídat. Píší to ve <a href="https://www.theinformation.com/facebook-preps-new-teen-app-with-a-nod-toward-parents" rel="noreferrer" target="_blank">Facebook Preps New Teen App, With a Nod Toward Parents</a> a z popisu je vám už asi předem jasné, že tohle je předem odsouzeno k zániku. Na druhou stranu o Talk píše pouze toto jediné médium a má to podložené maximálně analýzou kódu Facebook, kde se vyskytuje „nová aplikace talk“. Těžko se věří tomu, že by Facebook netušil, že tohle nikdy nemůže fungovat. Jedině, že by to chystal jako cestu k uchlácholení rodičů a úřadů. To by fungovalo.</p>
  <p>Skype do zcela nové mobilní aplikace doplnil příběhy. Viz <a href="https://blogs.skype.com/news/2017/06/01/introducing-the-next-generation-of-skype/" rel="noreferrer" target="_blank">Introducing the next generation of Skype</a>, kde si Microsoft dost naivně představuje, že uživatelé Snapchatů, Messengerů či Whatsappů radostně přejdou na Skype, aby „sdíleli společné životní momenty každý den“. Současně s tím si můžete pustit děsivou aplikaci Skype na počítači, zaplavenou inzercí, chaosem a spamem, zoufale se bránící zavření a prošpikovanou komplikovaným používáním. Nový Skype je tady každopádně prozatím pro Android, později pro iOS a za „několik příštích měsíců“ pro Windows a MAC.</p>
  <iframe src="https://www.youtube.com/embed/qItfRVJFljM?html5=1" allowfullscreen="allowfullscreen" width="560" height="315" frameborder="0">[embedded content]</iframe>
  <h2>STARTUPY A EKONOMIKA</h2>
  <p>Facebook přes Sheryl Sandberg lobboval za obsazení irského Komisaře pro ochranu dat svým člověkem. Vedle toho ještě Sandberg lobbovala ohledně daní v době, kdy americké úřady šetřily možný daňový únik ve výši 5 miliard dolarů právě skrz pobočku Facebooku v Irsku. Viz <a href="http://www.independent.ie/irish-news/revealed-how-facebook-chief-sheryl-sandberg-lobbied-taoiseach-enda-kenny-over-data-protection-role-and-taxation-35765139.html" rel="noreferrer" target="_blank">Revealed: How Facebook chief, Sheryl Sandberg, lobbied Taoiseach Enda Kenny over data protection role and taxation</a> a otázka ochrany dat se týkala přesunu milionů informací o uživatelích Facebooku do USA, což umožnilo tamní NSA přístup k těmto informacím.</p>
  <p>Pinboard koupil <a href="https://del.icio.us/" rel="noreferrer" target="_blank">Delicious</a> za <a href="https://twitter.com/matthewhughes/status/870349647293935616" rel="noreferrer" target="_blank">35 tisíc</a> dolarů. K 15. červnu (ano, už takhle brzy) službu přepne do režimu pouze pro čtení, takže pokud ještě stále Delicious používáte, tak smůla, měli byste začít hledat něco jiného. Nebo migrovat na účet u Pinboardu, který stojí 11 USD ročně. Odkazy z Delicious bude možné později exportovat, úplné vypnutí se prý v dohledné době nechystá. K Delicious je nutné dodat, že je součástí historie internetu, a také to, že služba několikrát změnila majitele – 2003 založeno, 2005 prodáno Yahoo (15–30 mil. USD), kde mělo být v roce 2010 zrušeno. V roce 2011 prodáno zakladatelům YouTube, ti prodali Science Inc., aby v roce 2014 došlo k prodeji Delicious Media. V dubnu Delicious koupil vlastní Pinboard. Viz <a href="http://blog.pinboard.in/2017/06/pinboard_acquires_delicious/" rel="noreferrer" target="_blank">Pinboard Acquires Delicious</a>.</p>


  <p><a href="http://www.tuesday.cz/akce/marcomdata/program/?utm_source=Lupa&amp;utm_medium=tip_Hrubesova&amp;utm_campaign=Marcom" rel="noreferrer" target="_blank">
  <img src="https://i.iinfo.cz/images/42/marcom-hrubesova-1.png" alt="marcom-Hrubesova"/> </a></p>


  <p><em>Co se (většinou) nedostalo do článků a stojí z právě uplynulého týdne za pozornost. Mohlo by se hodit, mohlo by zaujmout, možná to prostě jenom nějak tak uniklo v záplavě stovek článků a zpráv, které se uplynulém týdnu objevily. Ručně tříděné ze stovek zdrojů a tisíců přečtených zpráv. V drtivé většině zahraničních. </em></p>
  <p><em>Vzniká průběžně celý týden.</em></p>


checksum: 09d7fbed
status: unread
title: [článek] eŠopák: Dodo chce víc aut a personální přesuny ve velkých e-shopech pokračují
author: redakce@lupa.cz (Lupa.cz: Jan Beránek)
language: cs
url:
  https://www.lupa.cz/clanky/esopak-dodo-chce-vic-aut-a-personalni-presuny-ve-velkych-e-shopech-pokracuji/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p><strong>Dodo nebo iDodo, jak chcete</strong>, nakupuje auta. A to znamená rozšíření záběru <a href="https://www.lupa.cz/aktuality/dodo-pod-novymi-majiteli-zacina-vic-jezdit-autem-rozsiruje-vozovy-park/" rel="noreferrer" target="_blank">do okrajových částí Prahy</a>. Dnes zakázky roznáší kolem devadesátky pěších kurýrů, firma ale zvyšuje i počet aut. Těch už má pro roznáškovou/rozvážkovou službu jezdit třicet.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>Původní projekt Dodo, dnes iDodo.cz, ale chvíli také Doruky.cz, vznikl na konci roku 2015. V mateřském KKCG se totiž rozhodli <a href="https://www.lupa.cz/clanky/kkcg-zkousi-dat-textovkam-novou-stavu-nosici-dodo-rozvazi-nakupy/" rel="noreferrer" target="_blank">využít SMS systém</a>, který získali koupí služby 1188. Po necelých dvou letech ale začali kurýři dostávat výplaty od nových majitelů, jimiž se na začátku roku <a href="https://www.lupa.cz/aktuality/asistencni-sluzbu-dodo-kupuje-od-kkcg-e-commerce-agentura-inveo/" rel="noreferrer" target="_blank">stal e-commerce akcelerátor Inveo</a>. </p>
  <h2>Z domova</h2>
  <p>– Další <strong>„pravé české“ razítko chystá Rohlik.cz</strong>. On-line supermarket zavádí nové značení českých produktů a výrobky složením i zpracováním pocházející z Česka budou v obchodě označené českou vlajkou. Pravidla vychází z metodiky ministerstva zemědělství. </p>
  <a href="https://i.iinfo.cz/images/335/rohlik-ceske-zbozi-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/335/rohlik-ceske-zbozi-1-prev.jpg" alt=""/></a>
  <p>– Agentura Acomware <strong>začne řešit on-line marketing pro dětskou výživu</strong>. Vyhrála tendr v Nutricii. V rámci spolupráce bude zajišťovat nákup a správu online prostoru s cílem budování brandu značek Nutrilon a Hami.</p>
  <p>- Neohroženým vládcem <strong>tuzemských e-shopů je stále dobírka</strong>. Letos ji využívá přibližně 34 procent zákazníků, tedy o pět procentních bodů méně než před třemi roky. On-line platbu kartou pak využívá 18 procent zákazníků. Vyplývá <a href="https://www.lupa.cz/aktuality/heureka-dobirka-se-drzi-v-cele-platebnich-metod-ale-eet-ji-prilis-nepomohla/" rel="noreferrer" target="_blank">to z dat Heureky</a>. </p>
  <h2>Z ciziny</h2>
  <p>– Amazon se <strong>dostal do tisícovkového klubu</strong>. Jeho akcie překročily magickou <a href="http://www.reuters.com/article/us-amazon-com-stocks-idUSKBN18Q25B" rel="noreferrer" target="_blank">hranici jednoho tisíce dolarů</a>. Tržní hodnota firmy tak přesáhla 478 miliard dolarů. Jen tak pro představu – to je asi dvakrát víc než klasický retailový kolos Wal-Mart Stores.</p>
  <a href="https://i.iinfo.cz/images/121/amazon-burza-1.png" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/121/amazon-burza-1-prev.png" alt="Vývoj hodnoty akcií Amazonu od vstupu na burzu."/></a><br/>Autor: Zdroj: Yahoo Finance
  <p>Vývoj hodnoty akcií Amazonu od vstupu na burzu.</p>

  <p>– Tři e-shopy <strong>mají zachránit Rocket Internet</strong>. Německá továrna na „kopírky“ bratří Samwerů ohlásila, že <a href="http://www.reuters.com/article/us-rocket-internet-results-idUSKBN18R0OM" rel="noreferrer" target="_blank">tři nejúspěšnější projekty z jejich dílny</a> se letos mají dostat do zisku a spravit tak ne příliš uspokojivé finanční výsledky inkubátoru. Delivery Hero dokonce prý plánuje vstup na burzu. </p>
  <p>– Alibaba se chystá na <strong>miliardovou investici do startupu Ele.me</strong>. Ten platí za jednoho z největších hráčů na čínské scéně rozváženého jídla. S takovým balíkem v kapse se mu rázem situace zjednoduší. Informace o tom prosákly třeba i <a href="https://www.bloomberg.com/news/articles/2017-05-25/alibaba-said-to-lead-1-billion-funding-for-chinese-food-startup" rel="noreferrer" target="_blank">do produkce agentury Bloomberg</a>.</p>
  <p>– <strong>Marks&amp;Spencer spolupracuje na donášce zboží</strong> až domů s britským <a href="https://www.dropit.shop/" rel="noreferrer" target="_blank">startupem Dropit</a>. Ten nosí nákupy především v londýnském West Endu. Obchod je ale posledním z velkých řetězců. Dropit už postupně ulovil čtyřicet značek.</p>
  <h2>Personálie</h2>
  <p>– Bonami si <strong><a href="https://www.lupa.cz/aktuality/bonami-posiluje-vedeni-prichazi-lide-z-agentury-i-z-mall-group/" rel="noreferrer" target="_blank">pořídilo nové manažery</a></strong>. Nová šéfka marketingu sbírala zkušenosti v Bistro Agency, Tereza Kučerová chce Bonami dostat za hranice. Nového velitele dostane i zákaznická péče. O tu se bude starat Zdeněk Čech, který do obchodu s barevnými doplňky do domácností přichází se zkušenostmi z Notina a Mall Group. S nastavením péče o zákazníky pomáhal i v Rohlik.cz. </p>
  <a href="https://i.iinfo.cz/images/19/marek-premus-alza-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/19/marek-premus-alza-1-prev.jpg" alt=""/></a><br/>Zdroj: Alza
  <p>Marek Premus.</p>

  <p>– Personální změny pokračují i v Alze. Novým HR ředitelem se stává Marek Premus. Toho si jako nástupce vybrala dosavadní vládkyně pracovních smluv v e-shopu Iveta Volfová. Sama odchází do skupiny B. Braun.</p>


  <p><a href="http://www.tuesday.cz/akce/marcomdata/program/?utm_source=Lupa&amp;utm_medium=tip_Hrubesova&amp;utm_campaign=Marcom" rel="noreferrer" target="_blank">
  <img src="https://i.iinfo.cz/images/42/marcom-hrubesova-1.png" alt="marcom-Hrubesova"/> </a></p>


  <h2><strong>Akce</strong></h2>
  <p>– Po <strong>EET se (nejen) na e-shopy chystá další radost – GDPR</strong>. APEK proto <a href="https://www.apek.cz/kalendar-akci/pravni-seminar-gdpr-narizeni-o-ochrane-osobnich-udaju" rel="noreferrer" target="_blank">připravil na úterý</a> sešlost s právníkem Josefem Aujezdským. Tam by se mělo probírat, jak se novinka dotkne internetových obchodů a e-komerce vůbec.</p>
  <p>– <strong>Fajnšmekři jistě ocení Ecommerce Hungary Conference</strong>. V Budapešti se během sedmého a osmého června <a href="http://www.ecommerce.hu/conference.html" rel="noreferrer" target="_blank">rozjede konference pořádaná tamním APEKem</a>, který se ale jmenuje SzEK. Ten už ji pořádá po čtrnácté a jde tak o jednu z nejstarších akcí svého druhu. </p>


checksum: 619337a2
status: unread
title: [článek] Čeští Spaceknow dělají s Airbusem, světové IoT v Praze, HP se propadá do ztráty
author: redakce@lupa.cz (Lupa.cz: Jan Sedlák)
language: cs
url:
  https://www.lupa.cz/clanky/cesti-spaceknow-delaji-s-airbusem-svetove-iot-v-praze-hp-se-propada-do-ztraty/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p><em>Vždy v pátek připravuje reportér</em> <em>Jan Sedlák</em> <em>výběr zajímavých zpráv ze světa velkých IT firem. Co se událo v tomto týdnu?</em></p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p><strong>Čeští Spaceknow <a href="http://earsc.org/news/airbus-to-provide-spaceknow-with-access-to-one-atlas-for-development-of-new-analytics" rel="noreferrer" target="_blank">rozjíždí</a> spolupráci s Airbusem a jeho službou <a href="http://www.intelligence-airbusds.com/one-atlas/" rel="noreferrer" target="_blank">One Atlas</a></strong>. Ten nabízí přístup k aktualizovaným satelitním snímkům, ze kterých Spaceknow analyzují data a změny. Spaceknow letos <a href="https://www.lupa.cz/clanky/cesti-spaceknow-ziskali-investici-4-miliony-dolaru-oceneni-jsou-na-17-5-milionu-dolaru/" rel="noreferrer" target="_blank">získali investici</a> čtyři miliony dolarů. Více v <a href="https://www.lupa.cz/clanky/jaroslav-javornicky-spaceknow-tvorime-novy-google-ze-satelitu-dopady-budou-obrovske/" rel="noreferrer" target="_blank">našem rozhovoru</a> se spoluzakladatelem firmy.</p>
  <p><strong>Ze společnosti O2 IT Services se převádí dvě divize pod standardní O2</strong>: konkrétně jde o sekce Aplikační podpora a Standardní zákaznická řešení. Ty poskytují službu O2, zatímco z O2 IT Services se buduje nezávislý dodavatel ICT pro celý trh. Už dříve do ní O2 začlenilo koupené Corpus Solutions.</p>
  <p><strong>Japonská Konica Minolta v Česku stále roste</strong>. V loňském roce meziročně <a href="https://www.konicaminolta.cz/cs/hlavni-stranka/o-spolecnosti/tiskove-zpravy/aktualni-tiskove-zpravy/press-single/article/zajem-o-it-sluzby-konica-minolta-roste-stejne-jako-trzby-a-zisk.html" rel="noreferrer" target="_blank">narostly</a> tržby o pět procent na 1,8 miliardy korun a zisk o čtyři procenta na 103 miliony. Konica Minolta už delší dobu aktivně investuje do IT služeb, které přidávají marži nad tradiční byznys s tiskem. Česko se v této oblasti stalo nejúspěšnější zemí v regionu střední a východní Evropy – tržby dosáhly 198 milionů korun.</p>
  <p><strong>Sdružení CESNET a CZ.NIC</strong> <a href="https://www.cesnet.cz/sdruzeni/zpravy/tiskove-zpravy/cesnet-a-cz-nic-vybuduji-kyberneticky-bezpecnostni-system-cti/" rel="noreferrer" target="_blank"><strong>vybudují</strong></a> <strong>pro ministerstvo vnitra bezpečnostní systém Cyber Threat Intelligence</strong> (CTI). Systém má detekovat kybernetické hrozby a využívat se má zkušeností CSIRT.CZ.</p>
  <p><strong>Videohry v roce 2016 celosvětově utržily 101,1 miliardy dolarů</strong>, <a href="http://news.atomico.com/europe-meets-china/" rel="noreferrer" target="_blank">ukazuje</a> studie Atomico. Meziroční přírůstek je asi 10 milionů. Největším herním trhem se stala Čína – hraje zde 600 milionů lidí, kteří vygenerovali 24,6 miliardy dolarů. Růst v Číně hodně pohánělo spuštění App Store od Applu. Číňané hrají především na mobilech, v oblasti jsou velice aktivní tamní giganti typu Tencent. V Číně se <a href="https://www.lupa.cz/clanky/jan-smejkal-cina-se-uci-od-technologickeho-sveta-a-v-mnoha-vecech-je-napred/" rel="noreferrer" target="_blank">angažují</a> i finské mobilní velmoci typu Supercell a Rovio.</p>
  <p><strong>Čína také zůstává světovou jedničkou v e-commerce</strong>, alespoň <a href="http://tech.sina.com.cn/i/2017-05-30/doc-ifyfqvmh9509588.shtml" rel="noreferrer" target="_blank">podle</a> čísel tamního ministerstva. V roce 2016 se Čína na trhu podílela 39,2 procenty. Vzhledem k firmám typu Alibaba to není nic nečekaného.</p>
  <p><strong>Apple pracuje na vlastním zařízení s integrovanou asistentkou Siri</strong>, <a href="https://www.bloomberg.com/news/articles/2017-05-31/apple-said-to-ready-siri-speaker-in-bid-to-rival-google-amazon" rel="noreferrer" target="_blank">informuje</a> Bloomberg. Půjde o alternativu k Amazon Echo, které aktuálně vládne trhu s podobnými přístroji. Do hry s Home vstoupil také Google a Invoke zase pohání Cortana od Microsoftu.</p>
  <p><strong>Celosvětová konference</strong> <a href="http://world-iot-expo.com/" rel="noreferrer" target="_blank"><strong>SIGFOX World IoT Expo</strong></a> <strong>se letos odehraje v Praze</strong>, konkrétně 25. až 26. září ve Foru Karlín. Stojí za tím zdejší SimpleCell, který chce s jeho SIGFOX sítí expandovat také do dalších zemí. Více v <a href="https://www.lupa.cz/clanky/cesky-simplecell-chce-iot-siti-sigfox-pokryt-dalsi-ctyri-zeme-zacne-letos/" rel="noreferrer" target="_blank">našem článku</a> či <a href="https://www.lupa.cz/clanky/jan-john-simplecell-letos-chceme-mit-v-siti-pres-sto-tisic-senzoru/" rel="noreferrer" target="_blank">videorozhovoru</a> s ředitelem Janem Johnem.</p>
  <p><strong>Bývalý šéf Microsoftu Steve Ballmer</strong> <a href="http://www.businessinsider.com/after-investing-in-twitter-steve-ballmer-gave-up-investing-2017-5" rel="noreferrer" target="_blank"><strong>končí</strong></a> <strong>s investováním</strong>. Svého času koupil čtyři procenta akcií Twitteru. Investice mu ale poněkud zhořkla – kupoval nad 25 dolary za akcii, nyní je hodnota pod 20 dolary. Ballmer se nyní věnuje především basketbalovému klubu Los Angeles Clippers, který si koupil.</p>
  <p><strong>Tržby Hewlett Packard Enterprise (HPE) z enterprise divize (servery, storage a podobně) v druhém kvartálu meziročně</strong> <a href="http://investors.hpe.com/~/media/Files/H/HP-Enterprise-IR/documents/hpe-2017-q2-results.pdf" rel="noreferrer" target="_blank"><strong>klesly</strong></a> <strong>o 13 procent</strong> na 6,24 miliardy dolarů. Servery dokonce spadly o 14 procent a sítě o 30 procent. Padají i některé další ukazatele. HPE se v kvartálu dokonce dostalo do ztráty 612 milionů dolarů. Změny na trhu se skutečně dějí, <a href="https://www.lupa.cz/clanky/chceme-byt-cislo-jedna-vsude-kde-pusobime-dellu-po-spojeni-s-emc-narostla-ramena/" rel="noreferrer" target="_blank">Dellu pomáhá konsolidace s EMC</a>.</p>


  <p><a href="http://www.tuesday.cz/akce/e-business-forum-2017/?utm_source=Lupa&amp;utm_medium=tip_early&amp;utm_campaign=EBF17" rel="noreferrer" target="_blank">
  <img src="https://i.iinfo.cz/images/372/ebf17-early-1.png" alt="EBF17_early"/> </a></p>


  <p><strong>Výsledky hlásí také</strong> <a href="http://investors.paloaltonetworks.com/phoenix.zhtml?c=251350&amp;p=irol-newsArticle&amp;ID=2277797" rel="noreferrer" target="_blank"><strong>Palo Alto Networks</strong></a> (růst tržeb o 25 procent, stále ve ztrátě) <strong>a</strong> <a href="http://www.businesswire.com/news/home/20170531006274/en/Box-Reports-30-Percent-Revenue-Growth-Fiscal" rel="noreferrer" target="_blank"><strong>Box</strong></a> (také ve ztrátě, růst tržeb o 30 procent).</p>
  <p>Zbrojení velké čtyřky v oblasti IT pokračuje. <strong>Tentokrát <a href="http://www.businesswire.com/news/home/20170601005404/en/Accenture-Acquire-LabAnswer-Expanding-Life-Sciences-Cross-Industry" rel="noreferrer" target="_blank">nakupuje</a> Accenture, které získává texaskou firmu LabAnswer</strong>. Accenture staví novou sekci zaměřenou na konzultace kolem vědy a technologií.</p>


checksum: 368157bb
status: unread
title: [článek] Adam Skotnický (Mirantis): Ve firmě jsme takový virus. Děláme pro AT&T a další obry
author: redakce@lupa.cz (Lupa.cz: Jan Sedlák)
language: cs
url:
  https://www.lupa.cz/clanky/adam-skotnicky-mirantis-ve-firme-jsme-takovy-virus-delame-pro-at-t-a-dalsi-obry/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p>Americká společnost <a href="https://www.mirantis.com/" rel="noreferrer" target="_blank">Mirantis</a> na podzim loňského roku za zhruba miliardu korun koupila českou firmu <a href="http://www.tcpcloud.eu/" rel="noreferrer" target="_blank">TCP Cloud</a>. Její spoluzakladatel a tehdejší ředitel Adam Skotnický v <a href="https://www.lupa.cz/clanky/adam-skotnicky-tcp-cloud-prodej-firmy-za-miliardu-jsme-dohodli-za-14-dni/" rel="noreferrer" target="_blank">tehdejším rozhovoru</a> pro Lupu podrobně popsal detaily. Nyní ve videorozhovoru mluví o tom, jak si vše sedá.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22836/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22836/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>„Kuba Pavlík [druhý spoluzakladatel] vybojoval svůj boj a nový produkt [Mirantisu] je vybudován na našem původním,“ popisuje Skotnický s tím, že Praha má mít velký dopad na to, jak technologie Mirantisu vypadají. Noví zákazníci už fungují na těchto produktech, včetně třeba AT&amp;T, jehož media cloud je postaven na komoditním hardwaru a open source.</p>

  <p>Mirantis už se před příchodem Čechů začal měnit. „Přesně jsme zapadli do okýnka, které chtěli. To nastartovalo docela velkou revoluci v rámci Mirantisu, zejména co se týče byznysu. Starý produkt s okamžitou platností skončil a nahradil ho nový,“ říká Skotnický.</p>
  <iframe src="https://player.vimeo.com/video/219068138?title=0&amp;byline=0" width="600" height="338" frameborder="0" allowfullscreen="allowfullscreen">[embedded content]</iframe>
  <p><a href="https://vimeo.com/219068138" rel="noreferrer" target="_blank">Adam Skotnický, Mirantis</a> from <a href="https://vimeo.com/iinfo" rel="noreferrer" target="_blank">Internet Info</a> on <a href="https://vimeo.com/" rel="noreferrer" target="_blank">Vimeo</a>.</p>


  <p><a href="http://www.tuesday.cz/akce/e-business-forum-2017/?utm_source=Lupa&amp;utm_medium=tip_early&amp;utm_campaign=EBF17" rel="noreferrer" target="_blank">
  <img src="https://i.iinfo.cz/images/372/ebf17-early-1.png" alt="EBF17_early"/> </a></p>


  <p>„Jsme takový virus. Postupně se to v Mirantisu propaguje, poměrně dobře. Myslím si, že to má velký vliv na zákazníky.“ Mezi ty nové patří třeba DirecTV či Volkswagen. Mirantis bude nadále svoji novou pražskou pobočku rozšiřovat o vývojáře. Jakub Pavlík navíc získal funkci Director of Engineering.</p>
  <p>Podívejte se také na předchozí video rozhovory: <a href="https://www.lupa.cz/clanky/zdenek-cendra-cdn77-chceme-pracovat-pro-globalne-znamou-televizi/" rel="noreferrer" target="_blank">Zdeněk Cendra</a> (CDN77, Peering.cz, SuperHosting), <a href="https://www.lupa.cz/clanky/vit-horky-brand-embassy-chceme-vybudovat-miliardovou-firmu/" rel="noreferrer" target="_blank">Vít Horký</a> (Brand Embassy), <a href="https://www.lupa.cz/clanky/jan-john-simplecell-letos-chceme-mit-v-siti-pres-sto-tisic-senzoru/" rel="noreferrer" target="_blank">Jan John</a> (SimpleCell), <a href="https://www.lupa.cz/clanky/damir-spoljaric-vshosting-datacentrum-letos-zaplnime-pak-utlumime-pronajem/" rel="noreferrer" target="_blank">Damir Špoljarič</a> (VSHosting).</p>

  <p>Lupa.cz poprvé vyzkoušela formát videorozhovoru ještě dřív, než to bylo cool – před deseti lety, v březnu 2007. Tehdejší interview s jedním ze zakladatelů serveru Stream.cz a pozdějším šéfredaktorem Lupy Patrickem Zandlem <a href="https://www.lupa.cz/clanky/videorozhovor-patrick-zandl-stream-cz/" rel="noreferrer" target="_blank">dnes už sice vzal čas</a>, ale komentáře pod článkem byly tehdy spíše odmítavé. Doba se posunula a po deseti letech to s videem zkoušíme znovu. Technicky spolupracujeme s provozovatelem serveru <a href="https://mladypodnikatel.cz/" rel="noreferrer" target="_blank">Mladypodnikatel.cz</a> Jiřím Rosteckým. Pokud máte k našim videům nějaké nápady nebo připomínky, budeme rádi, když nám je pošlete na e-mail redakce@lupa.cz.</p>


checksum: da10e799
status: unread
title: UPC začne brzy přidělovat IPv6, zákazníci ale přijdou o veřejnou IPv4
author: redakce@root.cz (Root.cz: Petr Krčmář)
language: cs
url:
  https://www.root.cz/clanky/upc-zacne-brzy-pridelovat-ipv6-zakaznici-ale-prijdou-o-verejnou-ipv4/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <p>Na včerejším <a href="https://www.cesnet.cz/sdruzeni/akce/ipv6-2017/" rel="noreferrer" target="_blank">Semináři o IPv6</a> pořádaném sdružením CESNET vystoupil také Martin Krautwurst, ředitel pro strategické programy přístupové sítě UPC. Hovořil o budoucnosti IPv6 u jednoho z největších českých poskytovatelů připojení.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>UPC má na území České republiky 6200 kilometrů optických vláken, která tvoří páteř celé sítě pomocí DWDM. Na této síti běží tři hlavní služby: neveřejná distribuce videosignálu, UPC Business pro firmy a rezidentní a SOHO služby. <q>Sítě pro firmy a koncové zákazníky jsou fyzicky oddělené.</q></p>
  <p>Síť určená pro firemní zákazníky dnes umožňuje připojení po IPv4 i IPv6 pomocí dual stacku, přenosové rychlosti jsou od 1 Mbit/s až po 10 Gbit/s. <q>Zaměřuje se na velké společnosti, v podstatě na poskytovatele připojení. V současné době máme přes 900 přístupových bodů.</q> Používají se tu rozsahy 2a01:5e0::/42. Standardně se přiděluje zákazníkům rozsah /48, provoz v IPv6 se pohybuje okolo 3 Gbps, tedy asi 2 % celkového toku.</p>
  <p><em>Podívejte se na celou prezentaci Martina Krautwursta:</em></p>
  <a href="https://www.root.cz/galerie/seminar-ipv6-2017-upc-a-ipv6/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/206/seminar-ipv6-2017-upc-a-ipv6-1-large.png"/></a>
  <a href="https://www.root.cz/galerie/seminar-ipv6-2017-upc-a-ipv6/i/292368/" rel="noreferrer" target="_blank">Dalších 14 fotografií</a> 

  <p>Pro rezidentní zákazníky je určena jiná síť, která dnes teoreticky dosáhne na 1 446 700 zákazníků, kde internet odebírá 473 900. <q>Pro připojení je potřeba mít kabelový modem, síť běží na privátních IPv4 adresách a koncoví uživatelé dostávají statickou veřejnou IPv4 adresu.</q> Dále síť umožňuje provozovat službu Wi-Free, která dovoluje připojení k bezdrátové síti mimo svou domácí síť. <q>Tady se používá centrální NAT nebo také veřejné IPv4 adresy.</q></p>
  <p>Koncoví uživatelé by se podle plánu měli dostat k IPv6 skrze DS-Lite. <q>Chtěli jsme zajistit kontinuitu služeb po vyčerpání IPv4 rozsahu.</q> Všichni noví klienti už od roku 2016 dostávají zařízení, která jsou s DS-Lite kompatibilní.</p>
  <p><strong>Před pěti lety:</strong> <a href="https://www.root.cz/clanky/kdy-ipv6-nasadi-upc-t-mobile-telefonica-a-seznam/" rel="noreferrer" target="_blank">Kdy IPv6 nasadí UPC, T-Mobile, Telefónica a Seznam?</a></p>
  <p>Současná situace vypadá tak, že u poskytovatele je DHCPv4 server, který přiděluje adresu. Kabelový modem může být buď v router módu a přidělovat veřejnou či privátní adresu, v bridge módu přiděluje centrálně veřejnou IPv4 adresu. To se ale brzy u nových klientů změní.</p>
  <p>Zahraniční konektivita UPC je už několik let realizována pomocí dual stacku. <q>Neexistuje žádná speciální cesta pro IPv6, všechny naše zahraniční linky používají oba protokoly.</q> Nedávno byl aktualizován centrální DHCP cluster, který nově kromě IPv4 podporuje také IPv6. <q>Koncová zařízení byla také připravena na provoz DS-Lite. V současné době máme tři kabelové modemy, které mají plnou podporu.</q> Noví uživatelé budou mít modem přepnutý výhradně v režimu router a nebude možné je přepnout do režimu bridge.</p>
  <a href="https://i.iinfo.cz/images/433/martin-krautwurst-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/433/martin-krautwurst-1-prev.jpg" alt=""/></a>
  <p>Martin Krautwurst, UPC</p>

  <p>Pokud má klient na modemu podporu dual stacku lite, dostane nově <strong>privátní IPv4 adresu</strong> a veřejný IPv6 prefix. <q>V současné době běží testy, které budou během několika dnů ukončeny. Během následujících týdnů zahájíme provoz v režimu DS-Lite.</q> Pro místní síť bude pomocí DHCPv6 přidělován prefix o délce /56, drátová síť i Wi-Fi pak dostanou pomocí SLAAC společný rozsah /64. Bohužel zatím nebude možné z routeru prostřednictvím DHCPv6 serveru dostat další rozsah pro zařízení v místní síti. <q>Bohužel to neumožňuje firmware modemů.</q> Zároveň nebude možné mít modem přepnutý do režimu bridge a routovat na jiném zařízení za ním.</p>


  <h2>Anketa</h2>
  <p>Jakou variantu byste si vybrali?</p>



  <p>Podporovány jsou modemy Compal CH7465LG, UBEE EVW3226 a Technicolor TC7200. Firmware těchto modemů je podle UPC dělaný na zakázku, bohužel použitá technologie neumožňuje přidělit klientům zároveň veřejnou IPv4 adresu i IPv6. <q>Zatím tam ta volba není, zůstávají dvě možnosti: buď jen veřejná čtyřka nebo dual stack s privátní IPv4 adresou.</q> Firemní zákazníci zůstanou na veřejných IPv4 adresách a zatím nebudou mít k IPv6 adrese přístup.</p>
  <a href="https://www.root.cz/galerie/seminar-ipv6-2017/" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/164/seminar-ipv6-2017-2-large.jpg"/></a>
  <a href="https://www.root.cz/galerie/seminar-ipv6-2017/i/292384/" rel="noreferrer" target="_blank">Dalších 17 fotografií</a> 

  <p>Martin Krautwurst zopakoval, že by k přechodu na IPv6 mělo dojít během následujících dnů, maximálně týdnů. <q>Přechod na IPv6 se týká jen nových zákazníků, pro stávající zákazníky se zatím nic nemění. To bude následovat v další fázi. Určitě ne během letošního roku.</q> Později bude následovat migrace stávajících zákazníků, u nich ovšem záleží na verzi modemu, kterou používají. <q>Pokud si uživatel pořídí vlastní modem, nebude to fungovat, protože my používáme upravený firmware a přidáváme do něj šifrovací klíče.</q></p>
  <p>UPC Česká republika se tak přidává k dalším zemím v Evropě, které přidělují IPv6 pomocí DS-Lite. <q>UPC působí v jedenácti evropských zemích, DS-Lite mají takto zavedené všechny kromě Česka a Velké Británie.</q></p>


checksum: e2c21b28
status: unread
title: Softwarová sklizeň (7. 6. 2017)
author: redakce@root.cz (Root.cz: Jiří Sluka)
language: cs
url:
  https://www.root.cz/clanky/softwarova-sklizen-7-6-2017/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <h2>Wetty</h2>
  <p>Terminál v internetovém prohlížeči, který běží nad protokoly HTTP a HTTPS, a funguje jako alternativa za Anyterm nebo Ajaxterm. Využívá terminálový emulátor (hterm) z ChromeOS implementovaný výhradně v JavaScriptu. A před AJAXem upřednostňuje websockety. Na stránkách projektu jsou k nalezení příkazy pro spuštění na HTTP nebo HTTPS, stejně jako ve formě démona nebo ve spolupráci s webovým serverem Nginx.</p>
  <a href="https://i.iinfo.cz/images/387/wetty-1.png" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/387/wetty-1-prev.png" alt=""/></a>
  <p><a href="https://github.com/krishnasrinivas/wetty" rel="noreferrer" target="_blank">github.com/krishnasrinivas/wetty</a></p>
  <h2>Bforartists</h2>
  <p>Fork oblíbeného programu pro 3D modelování, Blenderu. Hlavním cílem vývojářů Bforartistsu bylo vytvořit přívětivější uživatelské rozhraní a zajistit lepší použitelnost. Využívá renderovacího enginu Blender Internal a novějšího Cycles, který nabízí vykreslování pomocí GPU a CPU a podporuje HDR osvětlení. Pro automatizaci více úloh je k dispozici možnost skriptování v Pythonu. Program samozřejmě nemá problém s jakýmkoliv pluginem pro Blender.</p>
  <a href="https://i.iinfo.cz/images/504/bforartists-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/504/bforartists-1-prev.jpg" alt=""/></a>
  <p><a href="https://bforartists.de/" rel="noreferrer" target="_blank">bforartists.de/</a>, 0.9.2</p>
  <h2>WereSync</h2>
  <p>Nástroj postavený na funkcích projektu rsync. Umožňuje vytvořit klon pevného disku a inkrementálně vytvořenou kopii aktualizovat. Pro nové diskové oddíly vytváří nové UUID identifikátory, umí kopírovat na menší diskovou jednotku a dokáže klonovat i systémový disk, ze kterého se bootuje.</p>
  <a href="https://i.iinfo.cz/images/658/weresync-1.png" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/658/weresync-1-prev.png" alt=""/></a>
  <p><a href="https://github.com/DonyorM/weresync" rel="noreferrer" target="_blank">github.com/DonyorM/weresync</a>, 0.4.0</p>
  <h2>Git Town</h2>
  <p>Git plugin, který poskytuje nové příkazy pro efektivnější vývoj v týmu. Podporuje GitHub Flow, Git Flow, Nvie model nebo GitLab Flow workflow. Součástí jsou příkazy pro smazání nebo přejmenování větve, vložení nové větve jako potomka aktuální větve, zobrazení nebo aktualizaci Git Town konfigurace, přidání nebo smazání kratších aliasů pro Git Town příkazy a mnoho dalšího.</p>
  <a href="https://i.iinfo.cz/images/152/git-town-1.jpg" rel="noreferrer" target="_blank"><img src="https://i.iinfo.cz/images/152/git-town-1-prev.jpg" alt=""/></a>
  <p><a href="http://www.git-town.com/" rel="noreferrer" target="_blank">www.git-town.com/</a></p>
  <h2>Blbinka</h2>
  <p>Modulární tramvaj bez kolejnic aneb <a href="https://www.youtube.com/watch?v=Dd3N9CFKe9M" rel="noreferrer" target="_blank">chytrý autobus</a>. Tak daleko jsou snad jen v Asii.</p>


checksum: 0a8a419c
status: unread
title: Stavíme vlastní e-mailový server: základní nastavení systému
author: redakce@root.cz (Root.cz: Michal Pastrňák)
language: cs
url:
  https://www.root.cz/clanky/stavime-vlastni-e-mailovy-server-zakladni-nastaveni-systemu/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <h2>Mailserver není maličkost</h2>
  <p>Rád bych vás provedl kompletní instalací e-mailového serveru na Linuxu, včetně některých přidružených služeb. Server bude svým zaměřením kombinací bezpečnosti a rozumné míry údržby, hodí se proto především pro osobní použití, nebo pro menší firmy. Provoz (nejen) e-mailového serveru ve větším prostředí vyžaduje více péče, pravidelné kontroly, monitoring, řeší se vysoká dostupnost, klade se velký důraz na zálohování a většinou se nasazuje s nějakou vazbou na centrální správu uživatelů, ať už LDAP, Active Directory, NIS, případně další.</p>




  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p>V žádném případě nechci udělat návod ve stylu „copy&amp;paste“. Takový přístup nedoporučuji nikomu, vždy je dobré alespoň tušit, co a proč děláte. Tomu se pokusím pomoci popisem některých kroků a technologií, případně přiložím odkazy na relevantní zdroje. Pokud něco není jasné, doporučuji vyzkoušet <strong>man</strong>, případně poradím. Návod počítá s alespoň základní znalostí práce s OS Linux, práci s nějakým editorem, a předpokládá, že pracujeme v terminálu. Instalace grafického prostředí je na serveru zbytečnost a až na výjimky tam nemá co dělat.</p>
  <h2>Náš cíl</h2>
  <p>Cílem by měl být e-mailový server odpovídající aktuálním trendům v oblasti zabezpečení a ochrany proti podvodným e-mailům. Použijeme Postfix, Dovecot, virtuální uživatele v MySQL, SPF, DKIM, DMARC, vše zabezpečíme certifikáty od Let’s Encrypt, k doméně si přidáme TLSA záznamy (DANE), použijeme antivirovou (ClamAV) a antispamovou (Spamassassin) ochranu, našim uživatelům povolíme server side filtry (sieve) a nastavíme jim kvóty na velikost schránky. Pro potřeby serveru nainstalujeme Bind jako DNS recursor a Apache pro webové služby. S poštou bude možné pracovat buď z libovolného klienta přes IMAP a Submission, nebo z webového rozhraní RainLoop a správu uživatelů nám usnadní webové rozhraní Postfixadmin. Server bude své služby poskytovat na IPv4 i IPv6 a bude teoreticky připraven na provozování více domén.</p>
  <p>To vše se pokusíme zvládnout se zapnutým SELinuxem. V případě zájmu připravím i návod k instalaci RoundCube a pokud by někdo chtěl použitelnou OSS náhradu MS Exchange, můžeme seriál rozšířit i o groupware SOGo. Protože je návod určen primárně pro instalaci na VPS, není jeho součástí řešení šifrování disků, protože to z mnoha důvodů nedává smysl. Také nebudeme řešit chroot pro jednotlivé služby, a to hned ze dvou důvodů – SELinux nám poskytuje podobné zabezpečení a chroot komplikuje aktualizace – je třeba udržovat prostředí chrootu.</p>
  <h2>HW, OS a další požadavky</h2>
  <p>Jak již bylo řečeno, počítá se s instalací na VPS, což je pro osobní použití nejdostupnější a nejlevnější řešení. VPS se dá sehnat za cenu, která je nižší, než náklady na provoz vlastního fyzického serveru a nemusíme řešit hardwarové problémy. Z toho plyne, že počítám s tím, že server má přímo veřejné IP adresy (IPv4 a IPv6). Instalace je možná i ve vnitřní síti s neveřejnou adresou, ale potom je třeba z veřejné adresy směrovat porty nutné pro jeho fungování (minimálně port 25 – SMTP). To je vlastně první požadavek – e-mailový server musí být dostupný přes veřejnou adresu, minimálně na zmíněném portu 25 a také musí být na tomto portu schopný komunikovat s internetem. Pokud chcete server provozovat na domácí přípojce, je možné, že tento port váš poskytovatel blokuje. V takovém případě jej buď musíte přesvědčit, aby vám port povolil, nebo máte smůlu.</p>
  <p>Jako OS jsem zvolil CentOS, v době instalace verzi 7.3.1611. Dříve jsem používal pro tyto účely především Debian, ale z různých důvodů jsem se rozhodl jej opustit, poslední kapkou byl neudržovaný SELinux v Debianu. O tom se zmíním později.</p>
  <p>Dalším požadavkem je vlastní doména. Pro potřeby tohoto návodu jsem zaregistroval doménu testemail.cz. Teoreticky bylo dle RFC možné provozovat e-mailový server i bez domény, jen na IP adrese, ale dnes by se s námi moc serverů nebavilo a nebylo by možné využít technologie, jako SPF, DKIM a DMARC, které jsou na DNS přímo závislé. Pro tyto technologie bude navíc nutné zapnout pro naši doménu DNSSEC. To vyžaduje podporu registrátora a doporučuji podporu ještě před samotnou registrací ověřit. Pozor, registrátor může DNSSEC podporovat jen pro některé TLD.</p>
  <p>Pokud máme doménu registrovanou, je třeba zajistit také reverzní DNS záznamy a to jak pro IPv4, tak IPv6. Tyto záznamy zřizuje poskytovatel připojení, v případě, že máme VPS, tak poskytovatel této služby, pokud jsme se rozhodli pro instalaci vlastního serveru, tak nám reverzní záznam zajistí poskytovatel naší internetové konektivity.</p>
  <h2>Nastavení DNS</h2>
  <p>Jak již bylo zmíněno, e-mailový server je s DNS úzce svázán. Jako první krok provedeme nastavení DNS záznamů, nejjednodušší je použít DNS servery registrátora, ale pokud již provozujeme vlastní NSSET, nastavíme údaje na vlastních serverech. Nastavíme si tedy DNS záznamy:</p>
  <pre>Hostname:       mail.testemail.cz
  Typ:            A
  TTL:            300
  Hodnota:        81.2.241.158

  Hostname:       mail.testemail.cz
  Typ:            AAAA
  TTL:            300
  Hodnota:        2001:15e8:110:99e::1</pre>
  <p>Nenastavujte prosím místo těchto záznamů alias, později je použijeme pro MX záznam a použití aliasu pro MX je v rozporu s RFC. Tím máme nastavené IPv4 (A) a IPv6 (AAAA) názvy. Všimněte si hodnoty TTL, která je záměrně nastavena na relativně nízkou hodnotu 300 vteřin, což nám ušetří spoustu čekání, pokud někde uděláme chybu. Až bude server kompletně funkční, můžeme tyto hodnoty nastavit na hodnotu vyšší, například 3600. Já budu pro všechny nové záznamy (ještě jich pár bude) používat 300, nebo méně.</p>
  <h2>Základní instalace OS</h2>
  <p>Pokud instalujeme na VPS, pravděpodobně si pouze vybereme, jaký systém chceme nainstalovat a automaticky proběhne nějaká standardní, většinou minimální instalace. Pokud si server budeme instalovat sami, doporučuji minimální instalaci, vše potřebné si postupně doinstalujeme.</p>
  <p>Po instalaci se můžeme přihlásit na uživatele root a provedeme pár základních konfiguračních kroků.</p>
  <h2>Nastavení sítě</h2>
  <p>pokud instalujeme VPS, pravděpodobně máme již síť nastavenou, pokud instalujeme vlastní server, nastavili jsme ji při instalaci. Pokud toto nastavení potřebujeme upravit, adresy můžeme změnit v souboru <code>/etc/sysconfig/network-scripts/ifcfg-eth0</code>, případně místo eth0 dosadíme název rozhraní použitého pro připojení.</p>
  <p>Pokud máme adresy staticky (doporučeno), můžeme odinstalovat dhclient – nelekněte se, odinstaluje se i network manager, ale to nám nevadí</p>
  <pre># yum remove -y dhclient</pre>
  <h2>Nastavení jména</h2>
  <p>Serveru nastavíme správně jméno, v souboru <strong><code>/etc/hostname</code></strong></p>
  <pre>mail.testemail.cz</pre>
  <p>a v souboru<strong><code>/etc/hosts</code></strong> upravíme záznamy s našimi IP adresami (případně přidáme):</p>
  <pre>81.2.241.158            mail.testemail.cz mail
  2001:15e8:110:99e::1    mail.testemail.cz mail</pre>
  <h2>Nastavení SSH</h2>
  <p>Nastavíme si vzdálené připojení pomocí SSH. Nebudeme se přihlašovat přímo na uživatele root, ale na neprivilegovaného uživatele a to pomocí klíče a fráze. Zde je možné využít různé postupy, od ponechání přihlášení na roota, nebo třeba využití sudo. Osobně se mi zvolený postup líbí nejvíce, potřebujeme jméno, klíč, frázi a ještě heslo roota, aby bylo možné na serveru něco dělat, ale někomu to může vyhovovat jinak. O pár kroků později bezpečnost zlepšíme nastavením základního firewallu.</p>
  <p>Nejdříve tedy vytvoříme nového uživatele</p>
  <pre># useradd -m email</pre>
  <p>nenastavíme mu heslo, ale místo toho se na něj přihlásíme pomocí su a vytvoříme mu ssh klíč, potvrdíme enterem výchozí umístění klíče, zadáme 2× frázi a poté zkopírujeme veřejný klíč do souboru ~/.ssh/authorized_keys</p>
  <pre># su - email
  # ssh-keygen
  # cp .ssh/id_rsa.pub .ssh/authorized_keys</pre>
  <p>Zkopírujeme si obsah souboru<strong><code>~/.ssh/id_rsa</code></strong> do nějakého souboru na náš lokální počítač, pokud používáme Linux tak například do souboru<strong><code>~/.ssh/testemail.cz.key</code></strong> a nastavíme mu oprávnění</p>
  <pre># chmod 600 ~/.ssh/testemail.cz.key</pre>
  <p>stiskem <strong>CTRL+D</strong> odhlásíme uživatele email a vrátíme se zpět na roota a upravíme (případně odkomentujeme) následující volby v souboru<strong><code>/etc/ssh/sshd_config</code></strong>  :</p>
  <pre>PermitRootLogin no
  PasswordAuthentication no</pre>
  <p>a restartujeme ssh</p>
  <pre># systemctl reload sshd</pre>
  <p>Nyní se můžeme zkusit znovu na náš server přihlásit</p>
  <pre># ssh -i ~/.ssh/testemail.cy.key email@testemail.cz</pre>
  <p>zadáme frázi k našemu klíči a přepneme se na uživatele root příkazem</p>
  <pre># su -</pre>
  <p>a zadáním hesla roota.</p>
  <p>V celém zbytku návodu předpokládám, že pracujeme jako uživatel root, pokud není uvedeno jinak.</p>
  <h2>Aktualizace systému</h2>
  <p>Nejdříve nainstalujeme EPEL repozitář, který poskytuje spoustu komunitních balíčků:</p>
  <pre># curl -O http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
  # rpm -ivh epel-release-7-9.noarch.rpm</pre>
  <p>a poté spustíme samotnou aktualizaci</p>
  <pre># yum update</pre>
  <p>V době instalace testovacího serveru jsem se updatem dostal na verzi systému 7.3.1611.</p>
  <p>V tento moment je asi nejlepší metodou pro uplatnění všech změn, restartovat systém, což provedeme příkazem:</p>
  <pre># reboot</pre>
  <h2>Nastavení jednoduchého firewallu</h2>
  <p>CentOS standardně používá firewallD, ale mně se zdá vhodnější použít přímo syntaxi iptables, takže pokud je firewallD nainstalovaný, tak jej zakážeme, nainstalujeme si iptables-services a povolíme jej</p>
  <pre># systemctl disable firewalld
  # yum install -y iptables-services
  # systemctl enable iptables0
  # systemctl enable ip6tables
  # ln -sf /etc/sysconfig/iptables /etc/sysconfig/ip6tables</pre>
  <p>konfigurace firewallu je umístěna v souboru<strong><code>/etc/sysconfig/iptables</code></strong> a vložíme do něj následující základ:</p>
  <pre>*filter
  :INPUT DROP [0:0]
  :FORWARD DROP [0:0]
  :OUTPUT DROP [0:0]
  -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  -A INPUT -p icmp -j ACCEPT
  -A INPUT -p ipv6-icmp -j ACCEPT
  -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
  -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
  -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
  -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  -A OUTPUT -p icmp -j ACCEPT
  -A OUTPUT -p udp --dport 53 -j ACCEPT
  -A OUTPUT -p tcp --dport 80 -j ACCEPT
  -A OUTPUT -p tcp --dport 443 -j  ACCEPT
  COMMIT</pre>
  <p>Ve stručnosti, nastavíme výchozí politiky na DROP (zahodit vše, co neodpovídá žádnému pravidlu), povolíme již navázané komunikace, povolíme icmp (ping), povolíme odchozí dotazy na DNS (udp 53), odchozí navázání komunikace na http (tcp 80) a https (tcp 443) a nastavíme limit pro počet nových připojení z jedné IP adresy na ssh a při jeho překročení spojení zahodíme, čímž významně zpomalíme brute-force útoky (a věřte mi, budou). Tuto konfiguraci budeme dále rozšiřovat tak, jak bude v danou chvíli třeba. Firewall spustíme příkazem:</p>
  <pre># systemctl start iptables
  # systemctl start ip6tables</pre>
  <p>Po 0Zde bych upozornil, že toto je pouze jeden z mnoha přístupů, který je v dané kombinaci přihlášení pouze s klíči a limitovaným počtem spojení dostatečně bezpečný, ale je možné použít i další metody zabezpečení, například změna portu SSH na nestandardní, povolení přihlášení pouze z určitých IP adres, ve firemním prostředí se většinou hlásíme do VPN a až z té máme přístup a určitě se najdou i další. Popsaný postup je kompromisem mezi bezpečností a pohodlím, pokud máme k dispozici náš klíč, můžeme se přihlásit odkudkoliv.</p>
  <h2>Čas</h2>
  <p>Vždy je dobré, mít na serveru správný čas, nastavíme si proto časové pásmo a synchronizaci času. Kontrolu časového pásma provedeme jednoduše příkazem</p>
  <pre># ll /etc/localtime
  lrwxrwxrwx. 1 root root 38 Apr 13  2015 /etc/localtime -&gt; ../usr/share/zoneinfo/America/New_York</pre>
  <p>a vidíme, že tento soubor je pouze link na soubor v zoneinfo. Pokud se nám časové pásmo nelíbí, přepíšeme jej jiným</p>
  <pre># ln -sf /usr/share/zoneinfo/Europe/Prague /etc/localtime</pre>
  <p>Pro synchronizaci času z internetu si povolíme odchozí komunikaci pro protokol NTP, jedná se o UDP port 123. Do souboru<strong><code>/etc/sysconfig/iptables</code></strong> přidáme následující pravidla</p>
  <pre>-A OUTPUT -p udp --dport 123 -j ACCEPT</pre>
  <p>provedeme reload</p>
  <pre># systemctl reload iptables
  # systemctl reload ip6tables</pre>
  <p>a dále nainstalujeme potřebný software, provedeme první synchronizaci, povolíme start služby při bootu a službu zapneme</p>
  <pre># yum install -y ntp
  # ntpdate pool.ntp.org
  # systemctl enable ntpd
  # systemctl start ntpd</pre>
  <p>Zkontrolujeme čas příkazem</p>
  <pre># date</pre>
  <p>Zde bych opět rád upozornil, že ve větších sítích bývá lokální časový server, který je synchronizovaný s internetem a který poté dodává čas všem ostatním serverům uvnitř.</p>
  <h2>SELinux</h2>
  <p>Jak jsem již dříve slíbil, řekneme si pár slov o SELinuxu. Jedná se o rozšířenou bezpečnost, která nám ve zkratce definuje oprávnění na úrovni procesů a uživatelů. Na úrovni jádra přidává kontrolní body pro různá volání, ve kterých potom tyto operace povoluje/zakazuje. SELinux je jeden ze zásadních důvodů, které mě donutily opustit Debian, protože jeho údržba v této distribuci poněkud vázne.</p>
  <p>V našem případě se setkáme s oprávněním pro soubory a síťovou komunikaci. Problematika SELinuxu je celkem komplexní, proto vás pro detailnější informace odkážu přímo na seriál <a href="https://www.root.cz/serialy/jak-spravne-na-selinux/" rel="noreferrer" target="_blank">o SELinuxu</a>. Nebojte, pokud nechcete studovat celý SELinux, je v tomto návodu vše potřebné pro naše úkoly.</p>
  <p>Je škoda, že velká část návodů začíná krokem „Vypnutí SELinuxu“, v našem případě naopak zkontrolujeme, jestli je zapnutý a má správné nastavení. V souboru<strong><code>/etc/sysconfig/selinux</code></strong> by mělo být:</p>
  <pre>SELINUX=enforcing
  SELINUXTYPE=targeted</pre>
  <p>pokud není, nastavení upravíme a provedeme</p>
  <pre># touch /.autorelabel
  # reboot</pre>
  <p>Po restartu by mělo vše fungovat. Targeted není sice nejrestriktivnějším typem, ale měl by nám dobře posloužit pro všechny běžné služby. Je možné nastavit ještě typ mls, ale to už chce hlubší znalosti SELinuxu a spoustu ladění.</p>
  <p>ješte si nainstalujeme pár užitečných utilit</p>
  <pre># yum install -y setools-console policycoreutils-python</pre>
  <p>Pokud nejsme na SELinux zvyklí, často se nám může ze začátku stávat, že různé služby budou hlásit chyby typu „permission denied“ a nebudeme tušit proč. Oprávnění na soubory budou v pořádku, firewall nastavený správně a přesto to nebude fungovat. Většinou za to v takovém případě může právě SELinux a než se pustíte do hledání neexistujících chyb, zkuste si zobrazit výpis auditu a poté zopakovat nefunkční akci. Osobně mám výpis tohoto logu při instalaci a konfiguraci nových služeb zapnutý nepřetržitě.</p>
  <pre># tail -f /var/log/audit/audit.log</pre>
  <p>Tím máme hotové základní nastavení serveru a v příští části se podíváme na zajímavější služby.</p>


checksum: 742b6613
status: unread
title: 64bitové mikroprocesory s architekturou AArch64
author: redakce@root.cz (Root.cz: Pavel Tišnovský)
language: cs
url:
  https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&utm_medium=text&utm_campaign=rss

content:
  <h2>Obsah</h2>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k01" rel="noreferrer" target="_blank">1. 64bitové mikroprocesory s architekturou AArch64</a></p>




  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/4/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/4/?typkodu=img&amp;keywords=" alt=""/></a>






  <a href="https://go.eu.bbelements.com/please/redirect/22843/2/1/12/" rel="noreferrer" target="_blank"><img src="https://go.eu.bbelements.com/please/showit/22843/2/1/12/?typkodu=img&amp;keywords=" alt=""/></a>




  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k02" rel="noreferrer" target="_blank">2. Proč vlastně architektura AArch64 vznikla?</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k03" rel="noreferrer" target="_blank">3. Od 32bitových RISCových ARMů k architektuře AArch64</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k04" rel="noreferrer" target="_blank">4. Rodina jader ARMv8-A</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k05" rel="noreferrer" target="_blank">5. Odlišnosti mezi původní 32bitovou architekturou ARM a AArch64</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k06" rel="noreferrer" target="_blank">6. AArch64 a další RISCové i CISCové architektury</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k07" rel="noreferrer" target="_blank">7. Prediktory skoků</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k08" rel="noreferrer" target="_blank">8. Provádění instrukcí mimo pořadí (out of order)</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k09" rel="noreferrer" target="_blank">9. Aritmeticko-logická jednotka a matematický koprocesor</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k10" rel="noreferrer" target="_blank">10. Sada pracovních registrů</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k11" rel="noreferrer" target="_blank">11. Speciální význam třicátého druhého registru</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k12" rel="noreferrer" target="_blank">12. Operace s 32bitovými a 64bitovými operandy</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k13" rel="noreferrer" target="_blank">13. Rozšířené možnosti adresování</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k14" rel="noreferrer" target="_blank">14. Zjednodušení instrukční sady v porovnání s 32bitovými ARMy</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k15" rel="noreferrer" target="_blank">15. Instrukční sada AArch64</a></p>
  <p><a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k16" rel="noreferrer" target="_blank">16. Odkazy na Internetu</a></p>
  <h2>1. 64bitové mikroprocesory s architekturou AArch64</h2>
  <p>V poměrně velkém množství moderních elektronických zařízení, ať již se jedná o tablety či o jednodeskové mikropočítače, se můžeme setkat s mikroprocesory založenými na 64bitové architektuře <em>AArch64</em> vyvinuté ve společnosti ARM. Tato architektura je sice do jisté míry odvozena od původní „klasické“ 32bitové RISCové architektury ARM (dnes pro odlišení nazývané ARM32 či dokonce jen A32), ovšem při přechodu na 64bitový systém došlo k mnoha podstatným změnám, které se týkají jak počtu a funkce pracovních registrů, tak i instrukční sady, jež se v některých ohledech od původní RISCové sady dosti podstatným způsobem odlišuje. Čipy s jádry AArch64 dnes patří ve „světě ARM“ mezi nejvýkonnější a licenci pro jejich použití už získala řada společností, včetně Apple (nejznámější je pravděpodobně její SoC/system on chip nazvaný Apple A7, který je použitý v iPhone 5S), NVidie, Qualcommu či Samsungu. Zajímavé ovšem je, že například TI sice používá kombinaci DSP+ARM, ovšem prozatím se drží spíše 32bitových ARMovských jader, protože výpočetně náročné části jsou prováděny právě na DSP.</p>
  <a href="http://i.iinfo.cz/images/605/pc118sada1-3.jpg" rel="noreferrer" target="_blank"><img src="http://i.iinfo.cz/images/605/pc118sada1-3-prev.jpg" alt=""/></a>
  <p><em>Obrázek 1: Osmibitový mikropočítač Acorn BBC Micro založený na slavném osmibitovém mikroprocesoru MOS 6502. Ve chvíli, kdy výkon tohoto mikroprocesoru přestal dostačovat pro další modely počítače, se firma ARM rozhodla, že vyvine vlastní mikroprocesor.</em></p>
  <h2>2. Proč vlastně architektura AArch64 vznikla?</h2>
  <p>Existuje hned několik dobrých důvodů, proč se společnost ARM Holdings odhodlala k poměrně rizikovému a velmi pravděpodobně i finančně náročnému kroku, tj. k vývoji zcela nové a zpětně nekompatibilní architektury. Mikroprocesory ARM se totiž začaly používat v nových oblastech, například pro některé servery, kde již možnosti 32bitových adres nemusely být dostačující. Navíc původní 32bitová architektura začala vykazovat určité známky zastaralosti, což pravděpodobně není až tak překvapivé, zvláště když si uvědomíme, že první RISCové ARMy začaly být testovány již v roce 1985, tj. prakticky před 32 roky. Bylo tedy jen logické, že se vylepšení původní architektury a současně přechod na 64bitovou aritmeticko-logickou jednotku a adresování, provede v jednom kroku a současně se zachová původní portfolia mikroprocesorů a mikrořadičů. Nová architektura i s ní spojená instrukční sada byly navrženy s ohledem na moderní překladače a virtuální stroje. Společnost ARM se v tomto ohledu mohla opřít o mnohaleté studium chování existujících aplikací (ostatně právě na základě tohoto studia byly v minulosti vytvořeny instrukční sady Thumb a Thumb-2).</p>
  <img src="http://i.iinfo.cz/images/605/pc118sada1-2.jpg" alt=""/><p><em>Obrázek 2: Dobový plakát s počítačem Acorn BBC Micro.</em></p>
  <h2>3. Od 32bitových RISCových ARMů k architektuře AArch64</h2>
  <p>Mikroprocesory a mikrořadiče ARM za sebou mají dlouhou dobu vývoje, takže není divu, že postupně vznikaly různé generace těchto čipů, které se od sebe odlišovaly jak svým výpočetním výkonem, tak i různými změnami v instrukční sadě (obecně lze říci, že jednotlivá jádra mezi sebou nejsou binárně kompatibilní), uspořádáním cache, počtem řezů (pipeline), použitými submoduly (hardwarová násobička, dělička, jednotka pro SIMD operace, matematický koprocesor, DSP) atd. Čipy ARM je možné rozlišit podle architektury, přičemž základní dělení je naznačeno v následující tabulce:</p>

  <table><tbody><tr><th>#</th>
  <th>Architektura</th>
  <th>Adresová/datová sběrnice</th>
  <th>Jádro</th>
  <th>Poznámka/profil (u Cortex)</th>
  </tr><tr><td>1</td>
  <td>ARMv1</td>
  <td>26/32 bitů</td>
  <td>ARM1</td>
  <td>první implementace, technologické demo</td>
  </tr><tr><td>2</td>
  <td>ARMv2</td>
  <td>26/32 bitů</td>
  <td>ARM2, ARM3</td>
  <td>přidána HW násobička a MMU</td>
  </tr><tr><td>3</td>
  <td>ARMv3</td>
  <td>26/32 bitů</td>
  <td>ARM6, ARM7</td>

  </tr><tr><td>4</td>
  <td>ARMv4</td>
  <td>26/32 bitů</td>
  <td>ARM8</td>
  <td>patří sem mj. i řada čipů StrongARM</td>
  </tr><tr><td>5</td>
  <td>ARMv5</td>
  <td>32 bitů</td>
  <td>ARM7EJ, ARM9E, ARM10E</td>
  <td>lze najít ve starších zařízeních</td>
  </tr><tr><td>6</td>
  <td>ARMv6</td>
  <td>32 bitů</td>
  <td>ARM11</td>
  <td>dodnes používaná jádra</td>
  </tr><tr><td>7</td>
  <td>ARMv6-M</td>
  <td>32 bitů</td>
  <td>Cortex-M0, Cortex-M0+, Cortex-M1</td>
  <td>mikrořadiče (M v názvu)</td>
  </tr><tr><td>8</td>
  <td>ARMv7-M</td>
  <td>32 bitů</td>
  <td>Cortex-M3</td>
  <td>mikrořadiče (poznáme podle M v názvu)</td>
  </tr><tr><td>9</td>
  <td>ARMv7E-M</td>
  <td>32 bitů</td>
  <td>Cortex-M4, Cortex-M7</td>
  <td>mikrořadiče (M v názvu)</td>
  </tr><tr><td>10</td>
  <td>ARMv7-R</td>
  <td>32 bitů</td>
  <td>Cortex-R4, Cortex-R5, Cortex-R7</td>
  <td>realtime aplikace (R v názvu)</td>
  </tr><tr><td>11</td>
  <td>ARMv7-A</td>
  <td>32 bitů</td>
  <td>Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, Cortex-A12, Cortex-A15, Cortex-A17</td>
  <td>smartphony atd.</td>
  </tr><tr><td>12</td>
  <td>ARMv8-A</td>
  <td>32/64 bitů</td>
  <td>Cortex-A35, Cortex-A53, A57, A72 a A73</td>
  <td>smartphony atd.</td>
  </tr></tbody></table>
  <img src="http://i.iinfo.cz/images/491/pc148-1.jpg" alt=""/><p><em>Obrázek 3: Osobní počítač firmy Acorn, který byl vybavený mikroprocesorem ARM s architekturou RISC. Minimálně v Británii se jednalo o jeden z přelomových počítačů.</em></p>
  <p>V dalším textu nás budou zajímat především čipy s architekturou <strong>ARMv8-A</strong>, která je vypsána na posledním řádku předchozí tabulky. Jader s architekturou ARMv8–8A existuje hned několik; liší se od sebe především tím, zda se u nich preferuje spíše vysoký výpočetní výkon či zda se naopak jedná o jádra s vyváženým poměrem spotřeba energie/výpočetní výkon. Mimochodem – povšimněte si koncovky A u jména mikroprocesorového jádra. Ta značí, že tato jádra jsou určena pro běžnou aplikační elektroniku, smartphony, počítače atd. Jádra s koncovkou M jsou určena pro mikrořadiče a jádra s koncovkou R pro realtime aplikace. Číslování jader ARMv8-A může vést ke zmatkům, proto jsou tato jádra v další tabulce rozdělena podle toho, jaká vlastnost u nich převažuje. Povšimněte si, že i přes relativní modernost ARMv8-A už existují jádra starší, která jsou postupně nahrazována vylepšenými variantami:</p>

  <table><tbody><tr><th>Priorita</th>
  <th>Jádro ARMv7-A</th>
  <th>Jádro ARMv8-A</th>
  <th>Novější model</th>
  </tr><tr><td>vysoký výkon</td>
  <td>Cortex-A17</td>
  <td>Cortex-A72</td>
  <td>Cortex-A73, Cortex-A75</td>
  </tr><tr><td>vysoký výkon</td>
  <td>Cortex-A15</td>
  <td>Cortex-A57</td>
  <td>×</td>
  </tr><tr>


  </tr><tr><td>el. efektivita</td>
  <td>Cortex-A9</td>
  <td>Cortex-A53</td>
  <td>Cortex-A55</td>
  </tr><tr>


  </tr><tr><td>vysoká efektivita</td>
  <td>Cortex-A7</td>
  <td>Cortex-A35</td>
  <td>×</td>
  </tr><tr><td>vysoká efektivita</td>
  <td>Cortex-A5</td>
  <td>Cortex-A35</td>
  <td>×</td>
  </tr></tbody></table>
  <img src="http://i.iinfo.cz/images/491/pc148-2.png" alt=""/><p><em>Obrázek 4: Hra Zarch od známého programátora Davida Brabena (který je spoluautorem slavné hry Elite) pro počítač Acorn Archimedes. Výkon čipů ARM byl (na svou dobu) tak velký (cca 4,5 MIPS pro 32bitové operace), že postačoval na SW rendering této hry – Acorn Archimedes totiž neměl žádné multimediální koprocesory, na rozdíl od Amigy či Atari ST, které ovšem měly slabší CPU (0,5 pro 32bitové operace až maximálně 2 MIPSy pro operace 32bitové).</em></p>
  <h2>4. Rodina jader ARMv8-A</h2>
  <p>V současnosti používané 64bitové čipy ARM patří do rodiny ARMv8-A. Nalezneme zde například jádra <a href="https://www.arm.com/products/processors/cortex-a/cortex-a35-processor.php" rel="noreferrer" target="_blank">Cortex-A35</a>, <a href="https://www.arm.com/products/processors/cortex-a/cortex-a53-processor.php" rel="noreferrer" target="_blank">Cortex-A53</a>, <a href="https://www.arm.com/products/processors/cortex-a/cortex-a57-processor.php" rel="noreferrer" target="_blank">Cortex-A57</a>, <a href="https://www.arm.com/products/processors/cortex-a/cortex-a72-processor.php" rel="noreferrer" target="_blank">Cortex-A72</a> a <a href="https://www.arm.com/products/processors/cortex-a/cortex-a73-processor.php" rel="noreferrer" target="_blank">Cortex-A73</a>, které se od sebe odlišují především výpočetním výkonem a energetickými nároky. Čipy s těmito jádry lze nalézt ve výkonných tabletech, ale i serverech. Vzhledem k tomu, že u ARMv8-A je zaručena zpětná kompatibilita s existující 32bitovou architekturou ARMv7-A, znamená to, že mikroprocesory je možné přepnout mezi 32bitovým kompatibilním režimem a plnohodnotným 64bitovým režimem (ve skutečnosti se v 32bitovém režimu je možné provést přepnutí mezi A32 a T32, tj. mezi původními RISCovými instrukcemi a instrukcemi Thumb/Thumb2).</p>
  <p>Zajímavé je, že i přesto, že všechny typy jader ARMv8-A patří do stejné rodiny a mají například shodnou instrukční sadu, neplatí to o interní realizaci čipu. Podle toho, jak výkonná jádra mají být se odlišuje i počet řezů pipeline. V další tabulce uvádím počet řezů pro jádra vyráběná přímo společností ARM zatímco například u čipů Cyclone od Apple má pipeline dokonce šestnáct řezů a Mongoose od Samsungu podle čipu 15 až 17 řezů:</p>

  <table><tbody><tr><th>Jádro</th>
  <th>Revize</th>
  <th>Pipeline</th>
  </tr><tr><td>Cortex-A35</td>
  <td>ARMv8-A</td>
  <td>8</td>
  </tr><tr><td>Cortex-A53</td>
  <td>ARMv8-A</td>
  <td>8</td>
  </tr><tr><td>Cortex-A55</td>
  <td>ARMv8.2-A</td>
  <td>8</td>
  </tr><tr><td>Cortex-A57</td>
  <td>ARMv8-A</td>
  <td>15</td>
  </tr><tr><td>Cortex-A72</td>
  <td>ARMv8-A</td>
  <td>15</td>
  </tr><tr><td>Cortex-A73</td>
  <td>ARMv8-A</td>
  <td>11–12</td>
  </tr><tr><td>Cortex-A75</td>
  <td>ARMv8.2-A</td>
  <td>11–13</td>
  </tr></tbody></table>
  <p>Jednotlivé čipy s 64bitovými ARMovskými jádry se od sebe odlišují i konfigurací pamětí cache. Základní stavba cache je sice prakticky shodná – L1 cache (cache první úrovně) je striktně rozdělena na cache pro data (D-cache) a cache pro strojové instrukce (I-cache), zatímco L2 cache (cache druhé úrovně) je společná pro obě skupiny informací – ovšem liší se kapacity cache, opět podle toho, jak výkonný má čip být. U novějších modelů Cortex-A55 a Cortex-A75 je dokonce podporována i cache třetí úrovně (L3 cache), která je pochopitelně opět společná pro data i pro instrukce:</p>

  <table><tbody><tr><th>Jádro</th>
  <th>L1 I-cache</th>
  <th>L1 D-cache</th>
  <th>L2 cache</th>
  <th>L3 cache</th>
  </tr><tr><td>Cortex-A35</td>
  <td>8–64</td>
  <td>8–64</td>
  <td>128 kB–1 MB</td>
  <td>×</td>
  </tr><tr><td>Cortex-A53</td>
  <td>8–64</td>
  <td>8–64</td>
  <td>128 kB–2 MB</td>
  <td>×</td>
  </tr><tr><td>Cortex-A55</td>
  <td>16–64</td>
  <td>16–64</td>
  <td>0 kB–256 kB / jádro</td>
  <td>až 4MB</td>
  </tr><tr><td>Cortex-A57</td>
  <td>48</td>
  <td>32</td>
  <td>0.5–2 MB</td>
  <td>×</td>
  </tr><tr><td>Cortex-A72</td>
  <td>48</td>
  <td>32</td>
  <td>0.5–4 MB</td>
  <td>×</td>
  </tr><tr><td>Cortex-A73</td>
  <td>64</td>
  <td>32/64</td>
  <td>1–8 MB</td>
  <td>×</td>
  </tr><tr><td>Cortex-A75</td>
  <td>64</td>
  <td>64</td>
  <td>256 kB nebo 512 kB / jádro</td>
  <td>až 4MB</td>
  </tr></tbody></table>
  <h2>5. Odlišnosti mezi původní 32bitovou architekturou ARM a AArch64</h2>
  <p>Z pohledu programátora pracujícího v assembleru je architektura AArch64 v několika ohledech odlišná od původní 32bitové architektury. Především se zvýšil počet pracovních registrů z patnácti na 31. Všechny registry se navíc rozšířily z třiceti dvou bitů na 64 bitů. Ovšem mnohé operace stále podporují i 32bitové operandy – v tomto případě se použije ta samá skupina registrů, z nichž se ovšem využije jen spodních 32 bitů (nedochází zde tedy k rozdvojení každého 64bitového registru na dva registry 32bitové, jak to známe z jiných typů procesorů). Podporován je i matematický koprocesor, jehož struktura se v mnoha ohledech blíží VPS. Nesmíme zapomenout ani na změny v instrukční sadě, které budou popsány níže. Poslední důležitým vylepšením je „zadrátování“ podpory pro AES, SHA-1 a SHA-256, což je využitelné jak na tabletech či smartphonech, tak i na serverech (o podrobnostech se zmíníme v dalších částech tohoto seriálu).</p>
  <p>Došlo též k přidání dalších technologií, zejména pak TrustZone, jejíž licenci později získala i společnost AMD. O TrustZone, která je užitečná jak pro klasické aplikační oblasti (smartphony), tak i pro mikrořadiče, vyjde samostatný článek.</p>
  <h2>6. AArch64 a další RISCové i CISCové architektury</h2>
  <p>Zajímavé a poučné může být porovnání architektury AArch64 s dalšími populárními RISCovými i CISCovými architekturami, které je patrné při pohledu na další tabulku, v níž jsou stručně (bez podrobnějších vysvětlení různých specialit) vypsány počty a bitové šířky pracovních registrů u některých oblíbených (i neoblíbených) a používaných mikroprocesorů a mikroprocesorových jader. Z této tabulky je zřejmé, že klasické CISCové procesory měly k dispozici menší počet registrů; navíc tyto registry nebyly zcela univerzální, což platí jak pro procesory řady i386, tak i pro Motorolu 68000 (rozdělení na datové a adresové registry). Naproti tomu většina klasických RISCových procesorů, tj. MIPS a SPARC, se drží oblíbeného schématu 31×32bitů, protože jeden z registrů obsahuje konstantní nulu. Původní 32bitové čipy ARM (A32) stojí klasicky na pomezí mezi těmito dvěma extrémy, což se změnilo právě s příchodem A64 (AArch 64):</p>

  <table><tbody><tr><th>Řada</th>
  <th>Architektura</th>
  <th>Registry</th>
  </tr><tr><td>Motorola 68000</td>
  <td>CISC</td>
  <td>8×32bit + 7×32bit</td>
  </tr><tr><td>IA-32 (i386)</td>
  <td>CISC</td>
  <td>8×32bit</td>
  </tr><tr><td>x86_64</td>
  <td>CISC</td>
  <td>16×64bit</td>
  </tr><tr><td>IA-64</td>
  <td>EPIC</td>
  <td>128×64bit</td>
  </tr><tr><td>Atmel AVR</td>
  <td>RISC</td>
  <td>32×8bit</td>
  </tr><tr><td>MIPS (32)</td>
  <td>RISC</td>
  <td>31×32bit + zero</td>
  </tr><tr><td>SPARC</td>
  <td>RISC</td>
  <td>31×32bit + zero</td>
  </tr><tr><td>RISC-V</td>
  <td>RISC</td>
  <td>31×32bit + zero</td>
  </tr><tr>


  </tr><tr><td>ARM (A32)</td>
  <td>RISC</td>
  <td>15×32bit</td>
  </tr><tr>


  </tr><tr><td>ARM (A64)</td>
  <td>RISC</td>
  <td>31×64bit + zero</td>
  </tr></tbody></table>
  <h2>7. Prediktory skoků</h2>
  <p>Užitečnou technologií, kterou je vybavena většina jader ARMv8 (kromě Cortex-A53 a Cortex-A55, u nichž se více dbá na menší plochu čipu a menší spotřebu) jsou takzvané <em>prediktory skoků</em>. Ty slouží, jak ostatně jejich název napovídá, k tomu, že dopředu odhadnou, zda se podmíněný skok provede či nikoli a na základě toho začnou do instrukční pipeline vkládat (a postupně zpracovávat) buď instrukce, které se nachází ihned za instrukcí podmíněného skoku či naopak v cíli skoku. U jednotlivých skoků nahrazujících konstrukci typu <em>if</em> je samozřejmě predikce spíše loterií, ovšem známé pravidlo 90/10 (nebo 80/20) nám říká, že 90 procent času běhu programu se stráví v pouhých deseti procentech kódu, tj. musí se typicky jednat o nějaké programové smyčky, u kterých by bylo dobré skoky predikovat. Existuje více způsobů implementace prediktorů skoků. My si vysvětlíme prediktory jednobitové a dvoubitové, protože právě ty nalezneme u jader ARMv8-A.</p>
  <p>Jednoduchý jednobitový prediktor skoků pracuje tak, že si procesor u každého skoku v jednom bitu zapamatuje, zda byl skok proveden či nikoli. Když se v instrukční pipeline znovu skok objeví (souhlasí jeho adresa), tak se procesor na základě předešlého běhu programu rozhodne, které další instrukce se pravděpodobně budou zpracovávat. Při prvním volání skoku má prediktor pouze padesátiprocentní úspěšnost, ta se potom zvyšuje. Například u smyčky, která by měla proběhnout 100× (to ovšem procesor dopředu nemusí vědět) se sice při prvním průchodu prediktor splete (za což je penalizován „vysypáním“ pipeline), ovšem v dalších 98 průchodech už správně odhadne, že se skok provede. Poslední průchod je znovu odhadnut špatně, což je ovšem pochopitelné. Výsledkem je poměrně úspěšné a především rychlé provedení všech instrukcí ve smyčce, přičemž je úspěšnost predikce skvělých 98 procent (to je ovšem ideální případ).</p>
  <p>Dvoubitový prediktor pracuje velmi podobným způsobem, ovšem pamatuje si nejenom předchozí výsledek skoku (proveden, neproveden), ale i minulý stav predikce. Pro mnoho typů podmínek je výhodnější, než jednobitový prediktor, protože i jeden špatný odhad ještě nezmění stav prediktoru.</p>
  <p>Použití prediktorů na čipech AArch64:</p>

  <table><tbody><tr><th>Jádro</th>
  <th>Revize</th>
  <th>Prediktor skoků</th>
  </tr><tr><td>Cortex-A35</td>
  <td>ARMv8-A</td>
  <td>✓</td>
  </tr><tr><td>Cortex-A53</td>
  <td>ARMv8-A</td>
  <td>×</td>
  </tr><tr><td>Cortex-A55</td>
  <td>ARMv8.2-A</td>
  <td>×</td>
  </tr><tr><td>Cortex-A57</td>
  <td>ARMv8-A</td>
  <td>✓ 2bit</td>
  </tr><tr><td>Cortex-A72</td>
  <td>ARMv8-A</td>
  <td>✓ 2bit</td>
  </tr><tr><td>Cortex-A73</td>
  <td>ARMv8-A</td>
  <td>✓ 2bit</td>
  </tr><tr><td>Cortex-A75</td>
  <td>ARMv8.2-A</td>
  <td>✓ 2bit</td>
  </tr></tbody></table>
  <h2>8. Provádění instrukcí mimo pořadí (out of order)</h2>
  <p>Velmi účinnou technikou vedoucí ke snížení cyklů mikroprocesoru, ve kterých se žádná činnost neprovádí, spočívá v takzvaném provádění instrukcí mimo pořadí (<em>out of order</em>). U klasických <em>in order</em> mikroprocesorů, které mají instrukční pipeline, totiž nastává situace, ve které musí následující instrukce čekat na provedení instrukce předchozí, většinou z toho důvodu, že předchozí instrukce modifikuje nějaký pracovní registr či příznak, který následující instrukce potřebuje ke svému zdárnému provedení. To samozřejmě znamená nežádoucí zdržení, protože se nevyužijí všechny cykly mikroprocesoru. V případě architektury <em>out of order</em> však není nic ztraceno, protože je možné začít provádět nějakou jinou instrukci, u níž je zaručeno, že používá jiné pracovní registry a příznaky (popř. je možné použít stínové pracovní registry). Interně se řazení instrukcí provádí na základě jejich ukládání do instrukční fronty (nazývané také <em>rezervační stanice</em>), ze které jsou instrukce vybírány ve chvíli, kdy jsou známy hodnoty jejich operandů.</p>
  <p>Použití out of order technologie na čipech AArch64:</p>

  <table><tbody><tr><th>Jádro</th>
  <th>Revize</th>
  <th>Out of order</th>
  </tr><tr><td>Cortex-A35</td>
  <td>ARMv8-A</td>
  <td>×</td>
  </tr><tr><td>Cortex-A53</td>
  <td>ARMv8-A</td>
  <td>×</td>
  </tr><tr><td>Cortex-A55</td>
  <td>ARMv8.2-A</td>
  <td>×</td>
  </tr><tr><td>Cortex-A57</td>
  <td>ARMv8-A</td>
  <td>✓</td>
  </tr><tr><td>Cortex-A72</td>
  <td>ARMv8-A</td>
  <td>✓</td>
  </tr><tr><td>Cortex-A73</td>
  <td>ARMv8-A</td>
  <td>✓</td>
  </tr><tr><td>Cortex-A75</td>
  <td>ARMv8.2-A</td>
  <td>✓</td>
  </tr></tbody></table>
  <h2>9. Aritmeticko-logická jednotka a matematický koprocesor</h2>
  <p>Kromě toho, že aritmeticko-logická jednotka byla rozšířena pro zpracování 64bitových operandů u prakticky všech instrukcí, došlo k jejímu doplnění o násobičku a děličku. Násobička může provádět i operace typu <em>MAC</em> (<em>Multiply Accumulate</em>). K dispozici jsou následující kombinace operandů:</p>

  <table><tbody><tr><th>Operace</th>
  <th>Vstupní operandy</th>
  <th>Výsledek</th>
  </tr><tr><td>MUL</td>
  <td>32×32 bitů</td>
  <td>32 bitů</td>
  </tr><tr><td>MUL</td>
  <td>64×64 bitů</td>
  <td>64 bitů</td>
  </tr><tr><td>MUL</td>
  <td>32×32 bitů</td>
  <td>64 bitů (rozšíření)</td>
  </tr><tr><td>MUL</td>
  <td>64×64 bitů</td>
  <td>horních 64 bitů (rozšíření)</td>
  </tr><tr>


  </tr><tr><td>MAC</td>
  <td>32±32×32 bitů</td>
  <td>32 bitů</td>
  </tr><tr><td>MAC</td>
  <td>64±64×64 bitů</td>
  <td>64 bitů</td>
  </tr><tr><td>MAC</td>
  <td>64±32×32 bitů</td>
  <td>64 bitů (rozšíření)</td>
  </tr></tbody></table>
  <p>Pokud je vyžadováno násobení 64×64 bitů se 128bitovým výsledkem, je nutné zkombinovat druhou a čtvrtou instrukci.</p>
  <p>Matematický koprocesor je u architektury AArch64 volitelný, ale oproti 32bitovým ARMům došlo ke zjednodušení – už neexistuje rozdělení ABI na soft floating point a hard floating point, protože pro předávání hodnot typu float a double jsou vždy použity FP registry popsané <a href="https://www.root.cz/clanky/64bitove-mikroprocesory-s-architekturou-aarch64/?utm_source=rss&amp;utm_medium=text&amp;utm_campaign=rss#k10" rel="noreferrer" target="_blank">v další kapitole</a>. Z technologického hlediska sice není soft floating point špatné řešení, ale prakticky způsobovalo (a způsobuje) množství problémů při distribuci knihoven i aplikací.</p>
  <h2>10. Sada pracovních registrů</h2>
  <p>Původních patnáct pracovních registrů pojmenovaných <strong>R0</strong> až <strong>R14</strong>, které známe z 32bitových procesorů ARM, bylo rozšířeno na 31 registrů, z nichž každý má šířku 64 bitů. Z tohoto důvodu muselo dojít k úpravě pojmenování registrů způsobem, který je naznačený v následující tabulce:</p>

  <table><tbody><tr><th>Jméno</th>
  <th>Význam</th>
  </tr><tr><td>r0..r30</td>
  <td>použito například v dokumentaci, popisu ABI atd.</td>
  </tr><tr><td>x0..x30</td>
  <td>celý 64bitový registr použitý jako zdroj či cíl</td>
  </tr><tr><td>w0..w30</td>
  <td>spodních 32 bitů registru (horních 32 bitů výsledku je buď vynulováno nebo znaménkově rozšířeno)</td>
  </tr></tbody></table>
  <p>Všechny tyto registry mají v instrukční sadě stejné postavení, na rozdíl od instrukční sady Thumb, v níž se pro některé instrukce může použít jen spodních osm registrů (ostatně v „pravých“ RISCových procesorech je zvykem používat všechny registry shodným způsobem).</p>
  <p>Další sada registrů je používána při operacích s typy <em>single/float</em> a <em>double</em> (tedy s operandy reprezentovanými v systému plovoucí řádové čárky), u SIMD operací a taktéž kryptografickým modulem:</p>

  <table><tbody><tr><th>Jméno</th>
  <th>Význam</th>
  </tr><tr><td>v0..v31</td>
  <td>128bitové registry</td>
  </tr><tr><td>d0..d31</td>
  <td>spodních 64 bitů registrů v0..v31, použito pro hodnoty typu <em>double</em></td>
  </tr><tr><td>s0..s31</td>
  <td>spodních 32 bitů registrů v0..v31, použito pro hodnoty typu <em>single/float</em></td>
  </tr></tbody></table>
  <p>Pro SIMD operace, tj. operace pracující s vektory, se registry <strong>vn</strong> rozdělují takto:</p>

  <table><tbody><tr><th>Tvar (shape)</th>
  <th>Celkem</th>
  <th>Pojmenování v assembleru</th>
  </tr><tr><td>8b×8</td>
  <td>64b</td>
  <td>Vn.8B</td>
  </tr><tr><td>8b×16</td>
  <td>128b</td>
  <td>Vn.16B</td>
  </tr><tr><td>16b×4</td>
  <td>64b</td>
  <td>Vn.4H</td>
  </tr><tr><td>16b×8</td>
  <td>128b</td>
  <td>Vn.8H</td>
  </tr><tr><td>32b×2</td>
  <td>64b</td>
  <td>Vn.2S</td>
  </tr><tr><td>32b×4</td>
  <td>128b</td>
  <td>Vn.4S</td>
  </tr><tr><td>64b×1</td>
  <td>64b</td>
  <td>Vn.1D</td>
  </tr><tr><td>64b×2</td>
  <td>128b</td>
  <td>Vn.2D</td>
  </tr></tbody></table>
  <p>Povšimněte si, že – na rozdíl od mnoha jiných architektur – nedochází k tomu, že by se například dva single registry mapovaly do jednoho double registru atd.</p>
  <p>Mezi speciální registry patří především:</p>

  <table><tbody><tr><th>Jméno</th>
  <th>Význam zkratky</th>
  </tr><tr><td>SCTLR_ELn</td>
  <td>System Control Register</td>
  </tr><tr><td>ACTLR_ELn</td>
  <td>Auxiliary Control Register</td>
  </tr><tr><td>SCR_EL3</td>
  <td>Secure Configuration Register</td>
  </tr><tr><td>HCR_EL2</td>
  <td>Hypervisor Configuration Register</td>
  </tr><tr><td>MIDR_EL1</td>
  <td>Main ID Register</td>
  </tr><tr><td>MPIDR_EL1</td>
  <td>Multiprocessor Affinity Register</td>
  </tr></tbody></table>
  <p>Význam těchto registrů bude popsán později.</p>
  <h2>11. Speciální význam třicátého druhého registru</h2>
  <p>V pořadí třicátý druhý registr, tj. registr se jménem <strong>x31</strong> či <strong>w31</strong>, není ve skutečnosti běžným pracovním registrem, protože má dva speciální významy. V případě použití tohoto registru v aritmetických či logických instrukcích se při použití ve funkci vstupního operandu tento registr chová jako konstantní nula a při použití ve funkci operandu výstupního jako /dev/null (výsledek se zahodí a neovlivní skutečnou hodnotu uloženou do registru). Proto se v assembleru může pro pojmenování tohoto registru použít jméno <strong>xzr</strong> či <strong>wzr</strong> (<em>extended zero register</em>, <em>working zero register</em>). U instrukcí pracujících se zásobníkem se tento registr chová jako ukazatel na vrchol zásobníku a proto se pro něj v assembleru používá jméno <strong>rsp</strong> či jen <strong>SP</strong> (na velikosti písmen u jmen registrů samozřejmě nezáleží).</p>
  <p>Poznámky:</p>
  <ol><li>Registr <strong>x30</strong> se používá ve funkci <strong>LR</strong> (<em>Link Register</em>).</li>
  <li>Registr <strong>PC</strong> není přímo dostupný. Toto je jeden z největších viditelných rozdílů mezi ARM 32 a AArch64.</li>
  </ol><h2>12. Operace s 32bitovými a 64bitovými operandy</h2>
  <p>U většiny aritmetických instrukcí je možné zvolit, zda se mají operace provádět s 32bitovými či naopak se 64bitovými operandy. U 64bitových operandů je vlastní provedení instrukce jednoduché, ovšem u 32bitových operandů je nutné zajistit, aby měl výsledek operace smysl i ve chvíli, kdy se převede na 64 bitů. Z tohoto důvodu je při použití 32bitového <em>zdrojového</em> operandu horních 32 bitů původně 64bitového registru ignorováno a při použití 32bitového <em>cílového</em> operandu se horních 32 bitů buď vynuluje (většina instrukcí) či znaménkově rozšíří. U 32bitových operací se navíc základní příznaky (zero, carry, negative…) nastavují pouze na základě 32bitového výsledku (což je ostatně logické). Některé výjimky, které se týkají například bitových posunů a rotací, si popíšeme u konkrétních instrukcí, kterých se to týká.</p>
  <h2>13. Rozšířené možnosti adresování</h2>
  <p>Díky použití pracovních registrů se šířkou 64 bitů se samozřejmě dosti podstatným způsobem rozšířil adresní prostor, který by jinak byl omezen na „pouhých“ 32 bitů. Teoretický adresový rozsah 64 bitů je u architektury AArch64 ve skutečnosti snížen na 49 bitů virtuální adresy, což je však podle všeho dostačující, a to i pro relativně vzdálenou budoucnost. Navíc se horních osm bitů adresy ignoruje, což znamená, že do této oblasti registru použitého pro adresování je možné uložit takzvaný „tag“. Tato technika se v některých programovacích jazycích používá například pro rozlišení datového typu či pro rozlišení, zda jde o primitivní typ nebo ukazatel (příkladem mohou být jazyky odvozené od LISPu).</p>
  <p>Některá další omezení jsou způsobena tím, že všechny instrukce mají konstantní šířku 32 bitů a tudíž v nich není prostor pro uvedení 64bitové konstanty či adresy:</p>
  <ul><li>Pro podmíněné skoky může cíl skoku ležet v rozsahu ±1 MB (což prakticky ve všech případech postačuje)</li>
  <li>Pro relativní skoky může cíl opět ležet v rozsahu ±1 MB</li>
  <li>U nepodmíněných skoků je rozsah větší, celých ±128 MB (což by opět mělo dostačovat pro prakticky všechny účely)</li>
  <li>Generování adresy (ukládané do registru) lze implementovat dvojicí instrukcí pro rozsah 4GB</li>
  </ul><p>U většiny programového kódu, který ve své zdrojové podobě obsahuje relativně krátké funkce či metody, by se tato omezení neměla vůbec projevit. Ostatně vždy lze omezení obejít použitím podmíněného skoku s opačnou podmínkou následovaného nepodmíněným skokem, což je činnost prováděná překladači.</p>
  <h2>14. Zjednodušení instrukční sady v porovnání s 32bitovými ARMy</h2>
  <p>Instrukční sada AArch64 se oproti původní 32bitové RISCové sadě (a ještě více od sady Thumb a Thumb-2) v několika ohledech liší, především pak v následujících oblastech:</p>
  <ol><li>Byly odstraněny instrukce <strong>LDM</strong>, <strong>STM</strong>, <strong>PUSH</strong> a <strong>POP</strong> ve variantě s bitovým polem registrů</li>
  <li>Naproti tomu lze použít instrukce <strong>LDP</strong> a <strong>STP</strong> pracující s libovolnými dvěma registry (zajímavá myšlenka na využití 32bitového slova)</li>
  <li>Byly odstraněny prefixy pro podmínku, nyní jsou podmínky použity jen u skoků a několika dalších vybraných instrukcí</li>
  <li>Byl odstraněn prefix <strong>IT</strong> známý z Thumb-2</li>
  </ol><p>Tyto změny jsou založeny na výsledcích benchmarků, protože současné prediktory skoků jsou již velmi kvalitní. Navíc odstranění podmínkových bitů umožnilo použití více bitů v instrukčním slově pro jiné účely.</p>
  <p>Poznámka: u instrukcí <strong>LDM</strong> a <strong>STM</strong> je v operačním kódu instrukce použito jedno bitové pole o šířce 16 bitů, které je určeno pro označení těch pracovních registrů, které se mají načíst z operační paměti, popř. které se naopak mají do operační paměti uložit. Tyto instrukce navíc dovolují manipulovat s tím registrem, který je použit jako ukazatel do paměti, kam se registry ukládají či odkud se naopak čtou jejich nové hodnoty. Obsah tohoto adresového registru je možné zvýšit či naopak snížit, a to buď před provedením operace LOAD/STORE nebo až posléze. Z tohoto důvodu se instrukce <strong>LDM</strong> a <strong>STM</strong> na 32bitových architekturách ARM používají při implementaci zásobníkových rámců i když se striktně řečeno vlastně nejedná o čistě RISCové instrukce.</p>
  <h2>15. Instrukční sada AArch64</h2>
  <p>Nová instrukční sada AArch64 obsahuje instrukce, které je možné rozdělit do několika oblastí podle toho, jaká jednotka tyto instrukce skutečně spouští:</p>

  <table><tbody><tr><th>Skupina</th>
  <th>Další dělení</th>
  </tr><tr><td>Load-Store</td>
  <td>Load-Store pro jeden registr</td>
  </tr><tr>
  <td>Load-Store pro dvojici registrů</td>
  </tr><tr>
  <td>Prefetch</td>
  </tr><tr>

  </tr><tr><td>Skoky</td>
  <td>Nepodmíněné skoky</td>
  </tr><tr>
  <td>Nepodmíněný skok na adresu v registru</td>
  </tr><tr>
  <td>Podmíněné skoky</td>
  </tr><tr>

  </tr><tr><td>ALU operace</td>
  <td>Základní aritmetické instrukce</td>
  </tr><tr>
  <td>Násobení a dělení</td>
  </tr><tr>
  <td>Logické instrukce</td>
  </tr><tr>
  <td>Znaménkové rozšíření operandu či rozšíření o nuly</td>
  </tr><tr>
  <td>Bitové operace</td>
  </tr><tr>
  <td>Extrakce dat</td>
  </tr><tr>
  <td>Bitové posuny</td>
  </tr><tr>
  <td>Aritmetické posuny</td>
  </tr><tr>
  <td>Podmíněné zpracování dat</td>
  </tr><tr>
  <td>Podmíněné porovnání</td>
  </tr><tr>

  </tr><tr><td>FP operace</td>
  <td>Přenos operandů mezi registry</td>
  </tr><tr>
  <td>Konverze mezi různými formáty</td>
  </tr><tr>
  <td>Převod na celá čísla (zaokrouhlení)</td>
  </tr><tr>
  <td>Základní aritmetické operace</td>
  </tr><tr>
  <td>Výpočet minima a maxima</td>
  </tr><tr>
  <td>MAC (Multiply Accumulate)</td>
  </tr><tr>
  <td>Porovnání operandů</td>
  </tr><tr>
  <td>Podmíněný výběr operandu</td>
  </tr><tr>

  </tr><tr><td>SIMD operace</td>
  <td>Aritmetické operace se skaláry</td>
  </tr><tr>
  <td>Aritmetické operace s vektory</td>
  </tr><tr>
  <td>Permutace vektorů</td>
  </tr><tr>
  <td>Konverze dat</td>
  </tr><tr>
  <td>Instrukce z crypto extension (patří do SIMD)</td>
  </tr><tr>

  </tr><tr><td>Systémové instrukce</td>
  <td>Zpracování výjimek</td>
  </tr><tr>
  <td>Přístup k systémovým registrům</td>
  </tr><tr>
  <td>Implementace bariér</td>
  </tr><tr>
  <td>Instrukce pro jádro systému</td>
  </tr></tbody></table>
  <p>Jednotlivé instrukce (či spíše jejich skupiny) si podrobněji popíšeme v navazujícím textu.</p>
  <h2>16. Odkazy na Internetu</h2>
  <ol><li>Comparison of ARMv8-A cores<br/><a href="https://en.wikipedia.org/wiki/Comparison_of_ARMv8-A_cores" rel="noreferrer" target="_blank">https://en.wikipedia.org/wi­ki/Comparison_of_ARMv8-A_cores</a></li>
  <li>Cortex-A32 Processor<br/><a href="https://www.arm.com/products/processors/cortex-a/cortex-a32-processor.php" rel="noreferrer" target="_blank">https://www.arm.com/produc­ts/processors/cortex-a/cortex-a32-processor.php</a></li>
  <li>Cortex-A35 Processor<br/><a href="https://www.arm.com/products/processors/cortex-a/cortex-a35-processor.php" rel="noreferrer" target="_blank">https://www.arm.com/produc­ts/processors/cortex-a/cortex-a35-processor.php</a></li>
  <li>Cortex-A53 Processor<br/><a href="https://www.arm.com/products/processors/cortex-a/cortex-a53-processor.php" rel="noreferrer" target="_blank">https://www.arm.com/produc­ts/processors/cortex-a/cortex-a53-processor.php</a></li>
  <li>Cortex-A57 Processor<br/><a href="https://www.arm.com/products/processors/cortex-a/cortex-a57-processor.php" rel="noreferrer" target="_blank">https://www.arm.com/produc­ts/processors/cortex-a/cortex-a57-processor.php</a></li>
  <li>Cortex-A72 Processor<br/><a href="https://www.arm.com/products/processors/cortex-a/cortex-a72-processor.php" rel="noreferrer" target="_blank">https://www.arm.com/produc­ts/processors/cortex-a/cortex-a72-processor.php</a></li>
  <li>Cortex-A73 Processor<br/><a href="https://www.arm.com/products/processors/cortex-a/cortex-a73-processor.php" rel="noreferrer" target="_blank">https://www.arm.com/produc­ts/processors/cortex-a/cortex-a73-processor.php</a></li>
  <li>Apple A7 (SoC založen na CPU Cyclone)<br/><a href="https://en.wikipedia.org/wiki/Apple_A7" rel="noreferrer" target="_blank">https://en.wikipedia.org/wi­ki/Apple_A7</a></li>
  <li>System cally pro AArch64 na Linuxu<br/><a href="https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/unistd.h" rel="noreferrer" target="_blank">https://github.com/torval­ds/linux/blob/master/inclu­de/uapi/asm-generic/unistd.h</a></li>
  <li>Architectures/AArch64 (FedoraProject.org)<br/><a href="https://fedoraproject.org/wiki/Architectures/AArch64" rel="noreferrer" target="_blank">https://fedoraproject.org/wi­ki/Architectures/AArch64</a></li>
  <li>SIG pro AArch64 (CentOS)<br/><a href="https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64" rel="noreferrer" target="_blank">https://wiki.centos.org/Spe­cialInterestGroup/AltArch/A­Arch64</a></li>
  <li>The ARMv8 instruction sets<br/><a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/ch05s01.html" rel="noreferrer" target="_blank">http://infocenter.arm.com/hel­p/index.jsp?topic=/com.ar­m.doc.den0024a/ch05s01.html</a></li>
  <li>A64 Instruction Set<br/><a href="https://developer.arm.com/products/architecture/instruction-sets/a64-instruction-set" rel="noreferrer" target="_blank">https://developer.arm.com/pro­ducts/architecture/instruc­tion-sets/a64-instruction-set</a></li>
  <li>Switching between the instruction sets<br/><a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/ch05s01.html" rel="noreferrer" target="_blank">http://infocenter.arm.com/hel­p/index.jsp?topic=/com.ar­m.doc.den0024a/ch05s01.html</a></li>
  <li>The A64 instruction set<br/><a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/ch05s01.html" rel="noreferrer" target="_blank">http://infocenter.arm.com/hel­p/index.jsp?topic=/com.ar­m.doc.den0024a/ch05s01.html</a></li>
  <li>Introduction to ARMv8 64-bit Architecture<br/><a href="https://quequero.org/2014/04/introduction-to-arm-architecture/" rel="noreferrer" target="_blank">https://quequero.org/2014/04/in­troduction-to-arm-architecture/</a></li>
  <li>MCU market turns to 32-bits and ARM<br/><a href="http://www.eetimes.com/document.asp?doc_id=1280803" rel="noreferrer" target="_blank">http://www.eetimes.com/do­cument.asp?doc_id=1280803</a></li>
  <li>Cortex-M0 Processor (ARM Holdings)<br/><a href="http://www.arm.com/products/processors/cortex-m/cortex-m0.php" rel="noreferrer" target="_blank">http://www.arm.com/produc­ts/processors/cortex-m/cortex-m0.php</a></li>
  <li>Cortex-M0+ Processor (ARM Holdings)<br/><a href="http://www.arm.com/products/processors/cortex-m/cortex-m0plus.php" rel="noreferrer" target="_blank">http://www.arm.com/produc­ts/processors/cortex-m/cortex-m0plus.php</a></li>
  <li>ARM Processors in a Mixed Signal World<br/><a href="http://www.eeweb.com/blog/arm/arm-processors-in-a-mixed-signal-world" rel="noreferrer" target="_blank">http://www.eeweb.com/blog/arm/arm-processors-in-a-mixed-signal-world</a></li>
  <li>ARM Architecture (Wikipedia)<br/><a href="https://en.wikipedia.org/wiki/ARM_architecture" rel="noreferrer" target="_blank">https://en.wikipedia.org/wi­ki/ARM_architecture</a></li>
  <li>DSP for Cortex-M<br/><a href="https://developer.arm.com/technologies/dsp/dsp-for-cortex-m" rel="noreferrer" target="_blank">https://developer.arm.com/techno­logies/dsp/dsp-for-cortex-m</a></li>
  <li>Cortex-M processors in DSP applications? Why not?!<br/><a href="https://community.arm.com/processors/b/blog/posts/cortex-m-processors-in-dsp-applications-why-not" rel="noreferrer" target="_blank">https://community.arm.com/pro­cessors/b/blog/posts/cortex-m-processors-in-dsp-applications-why-not</a></li>
  <li>White Paper – DSP capabilities of Cortex-M4 and Cortex-M7<br/><a href="https://community.arm.com/processors/b/blog/posts/white-paper-dsp-capabilities-of-cortex-m4-and-cortex-m7" rel="noreferrer" target="_blank">https://community.arm.com/pro­cessors/b/blog/posts/white-paper-dsp-capabilities-of-cortex-m4-and-cortex-m7</a></li>
  <li>Q (number format)<br/><a href="https://en.wikipedia.org/wiki/Q_%28number_format%29" rel="noreferrer" target="_blank">https://en.wikipedia.org/wi­ki/Q_%28number_format%29</a></li>
  <li>TriCore Architecture &amp; Core<br/><a href="http://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-tm-microcontroller/tricore-tm-architecture-and-core/channel.html?channel=ff80808112ab681d0112ab6b73d40837" rel="noreferrer" target="_blank">http://www.infineon.com/cms/en/pro­duct/microcontroller/32-bit-tricore-tm-microcontroller/tricore-tm-architecture-and-core/channel.html?channel=ff80808112ab681d0112­ab6b73d40837</a></li>
  <li>TriCoreTM V1.6 Instruction Set: 32-bit Unified Processor Core<br/><a href="http://www.infineon.com/dgdl/tc_v131_instructionset_v138.pdf?fileId=db3a304412b407950112b409b6dd0352" rel="noreferrer" target="_blank">http://www.infineon.com/dgdl/tc_v131_in­structionset_v138.pdf?file­Id=db3a304412b407950112b409b6dd0352</a></li>
  <li>TriCore v2.2 C Compiler, Assembler, Linker Reference Manual<br/><a href="http://tasking.com/support/tricore/tc_reference_guide_v2.2.pdf" rel="noreferrer" target="_blank">http://tasking.com/suppor­t/tricore/tc_reference_gu­ide_v2.2.pdf</a></li>
  <li>Infineon TriCore (Wikipedia)<br/><a href="https://en.wikipedia.org/wiki/Infineon_TriCore" rel="noreferrer" target="_blank">https://en.wikipedia.org/wi­ki/Infineon_TriCore</a></li>
  <li>C166®S V2 Architecture &amp; Core<br/><a href="http://www.infineon.com/cms/en/product/microcontroller/16-bit-c166-microcontroller/c166-s-v2-architecture-and-core/channel.html?channel=db3a304312bef5660112c3011c7d01ae" rel="noreferrer" target="_blank">http://www.infineon.com/cms/en/pro­duct/microcontroller/16-bit-c166-microcontroller/c166-s-v2-architecture-and-core/channel.html?channel=db3a304312bef5660112­c3011c7d01ae</a></li>
  <li>Comparing four 32-bit soft processor cores<br/><a href="http://www.eetimes.com/author.asp?section_id=14&amp;doc_id=1286116" rel="noreferrer" target="_blank">http://www.eetimes.com/au­thor.asp?section_id=14&amp;doc_id=1286116</a></li>
  <li>RISC-V Instruction Set<br/><a href="http://riscv.org/download.html#spec_compressed_isa" rel="noreferrer" target="_blank">http://riscv.org/download­.html#spec_compressed_isa</a></li>
  <li>RISC-V Spike (ISA Simulator)<br/><a href="http://riscv.org/download.html#isa-sim" rel="noreferrer" target="_blank">http://riscv.org/download.html#isa-sim</a></li>
  <li>RISC-V (Wikipedia)<br/><a href="https://en.wikipedia.org/wiki/RISC-V" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/RISC-V</a></li>
  <li>David Patterson (Wikipedia)<br/><a href="https://en.wikipedia.org/wiki/David_Patterson_(computer_scientist)" rel="noreferrer" target="_blank">https://en.wikipedia.org/wi­ki/David_Patterson_(compu­ter_scientist)</a></li>
  <li>OpenRISC (oficiální stránky projektu)<br/><a href="http://openrisc.io/" rel="noreferrer" target="_blank">http://openrisc.io/</a></li>
  <li>OpenRISC architecture<br/><a href="http://openrisc.io/architecture.html" rel="noreferrer" target="_blank">http://openrisc.io/architecture.html</a></li>
  <li>Emulátor OpenRISC CPU v JavaScriptu<br/><a href="http://s-macke.github.io/jor1k/demos/main.html" rel="noreferrer" target="_blank">http://s-macke.github.io/jor1k/demos/main.html</a></li>
  <li>OpenRISC (Wikipedia)<br/><a href="https://en.wikipedia.org/wiki/OpenRISC" rel="noreferrer" target="_blank">https://en.wikipedia.org/wi­ki/OpenRISC</a></li>
  <li>OpenRISC – instrukce<br/><a href="http://sourceware.org/cgen/gen-doc/openrisc-insn.html" rel="noreferrer" target="_blank">http://sourceware.org/cgen/gen-doc/openrisc-insn.html</a></li>
  <li>OpenRISC – slajdy z přednášky o projektu<br/><a href="https://iis.ee.ethz.ch/~gmichi/asocd/lecturenotes/Lecture6.pdf" rel="noreferrer" target="_blank">https://iis.ee.ethz.ch/~gmichi/a­socd/lecturenotes/Lecture6­.pdf</a></li>
  <li>Berkeley RISC<br/><a href="http://en.wikipedia.org/wiki/Berkeley_RISC" rel="noreferrer" target="_blank">http://en.wikipedia.org/wi­ki/Berkeley_RISC</a></li>
  <li>Great moments in microprocessor history<br/><a href="http://www.ibm.com/developerworks/library/pa-microhist.html" rel="noreferrer" target="_blank">http://www.ibm.com/develo­perworks/library/pa-microhist.html</a></li>
  <li>Microprogram-Based Processors<br/><a href="http://research.microsoft.com/en-us/um/people/gbell/Computer_Structures_Principles_and_Examples/csp0167.htm" rel="noreferrer" target="_blank">http://research.microsoft.com/en-us/um/people/gbell/Computer_Struc­tures_Principles_and_Exam­ples/csp0167.htm</a></li>
  <li>Great Microprocessors of the Past and Present<br/><a href="http://www.cpushack.com/CPU/cpu1.html" rel="noreferrer" target="_blank">http://www.cpushack.com/CPU/cpu1.html</a></li>
  <li>A Brief History of Microprogramming<br/><a href="http://www.cs.clemson.edu/~mark/uprog.html" rel="noreferrer" target="_blank">http://www.cs.clemson.edu/~mar­k/uprog.html</a></li>
  <li>What is RISC?<br/><a href="http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000-01/risc/whatis/" rel="noreferrer" target="_blank">http://www-cs-faculty.stanford.edu/~ero­berts/courses/soco/projec­ts/2000–01/risc/whatis/</a></li>
  <li>RISC vs. CISC<br/><a href="http://www-cs-faculty.stanford.edu/~eroberts/courses/soco/projects/2000-01/risc/risccisc/" rel="noreferrer" target="_blank">http://www-cs-faculty.stanford.edu/~ero­berts/courses/soco/projec­ts/2000–01/risc/risccisc/</a></li>
  <li>RISC and CISC definitions:<br/><a href="http://www.cpushack.com/CPU/cpuAppendA.html" rel="noreferrer" target="_blank">http://www.cpushack.com/CPU/cpu­AppendA.html</a></li>
  <li>FPGA<br/><a href="https://cs.wikipedia.org/wiki/Programovateln%C3%A9_hradlov%C3%A9_pole" rel="noreferrer" target="_blank">https://cs.wikipedia.org/wi­ki/Programovateln%C3%A9_hra­dlov%C3%A9_pole</a></li>
  <li>The Evolution of RISC<br/><a href="http://www.ibm.com/developerworks/library/pa-microhist.html#sidebar1" rel="noreferrer" target="_blank">http://www.ibm.com/develo­perworks/library/pa-microhist.html#sidebar1</a></li>
  </ol>


