text:
package com.facebook.soloader;

import java.io.File;
import java.io.IOException;
import android.content.Context;

import java.util.jar.JarFile;
import java.util.jar.JarEntry;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

import android.os.Build;
import android.system.Os;
import android.system.ErrnoException;

import java.util.HashMap;
import java.util.Map;
import java.util.Enumeration;

import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.FileDescriptor;

/*package*/ final class SysUtil {

  private static byte[] cachedBuffer = null;

  /**
   * Copy from an inputstream to a named filesystem file.  Take care to ensure that we can detect
   * incomplete copies and that the copied bytes make it to stable storage before returning.
   * The destination file will be marked executable.
   *
   * This routine caches an internal buffer between invocations; after making a sequence of calls
   * {@link #reliablyCopyExecutable} calls, call {@link #freeCopyBuffer} to release this buffer.
   *
   * @param is Stream from which to copy
   * @param destination File to which to write
   * @param expectedSize Number of bytes we expect to write; -1 if unknown
   * @param time Modification time to which to set file on success; must be in the past
   */
  public static void reliablyCopyExecutable(
      InputStream is,
      File destination,
      long expectedSize,
      long time) throws IOException {
    destination.delete();
    try (FileOutputStream os = new FileOutputStream(destination)) {
      byte buffer[];
      if (cachedBuffer == null) {
        cachedBuffer = buffer = new byte[16384];
      }  else {
        buffer = cachedBuffer;
      }

      int nrBytes;
      if (expectedSize > 0) {
        fallocateIfSupported(os.getFD(), expectedSize);
      }

      while ((nrBytes = is.read(buffer, 0, buffer.length)) >= 0) {
        os.write(buffer, 0, nrBytes);
      }

      os.getFD().sync();
      destination.setExecutable(true);
      destination.setLastModified(time);
      os.getFD().sync();
    }
  }

  /**
   * Free the internal buffer cache for {@link #reliablyCopyExecutable}.
   */
  public static void freeCopyBuffer() {
    cachedBuffer = null;
  }

  /**
   * Determine how preferred a given ABI is on this system.
   *
   * @param supportedAbis ABIs on this system
   * @param abi ABI of a shared library we might want to unpack
   * @return -1 if not supported or an integer, smaller being more preferred
   */
  public static int findAbiScore(String[] supportedAbis, String abi) {
    for (int i = 0; i < supportedAbis.length; ++i) {
      if (supportedAbis[i] != null && abi.equals(supportedAbis[i])) {
        return i;
      }
    }

    return -1;
  }

  public static void deleteOrThrow(File file) throws IOException {
    if (!file.delete()) {
      throw new IOException("could not delete file " + file);
    }
  }

  /**
   * Return an list of ABIs we supported on this device ordered according to preference.  Use a
   * separate inner class to isolate the version-dependent call where it won't cause the whole
   * class to fail preverification.
   *
   * @return Ordered array of supported ABIs
   */
  public static String[] getSupportedAbis() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
      return new String[]{Build.CPU_ABI, Build.CPU_ABI2};
    } else {
      return LollipopSysdeps.getSupportedAbis();
    }
  }

  /**
   * Pre-allocate disk space for a file if we can do that
   * on this version of the OS.
   *
   * @param fd File descriptor for file
   * @param length Number of bytes to allocate.
   */
  public static void fallocateIfSupported(FileDescriptor fd, long length) throws IOException {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
      LollipopSysdeps.fallocate(fd, length);
    }
  }

  public static FileLocker lockLibsDirectory(Context context) throws IOException {
    File lockFile = new File(context.getApplicationInfo().dataDir, "libs-dir-lock");
    return FileLocker.lock(lockFile);
  }

  /**
   * Return the directory into which we put our self-extracted native libraries.
   *
   * @param context Application context
   * @return File pointing to an existing directory
   */
  /* package */ static File getLibsDirectory(Context context) {
    return new File(context.getApplicationInfo().dataDir, "app_libs");
  }

  /**
   * Return the directory into which we put our self-extracted native libraries and make sure it
   * exists.
   */
  /* package */ static File createLibsDirectory(Context context) {
    File libsDirectory = getLibsDirectory(context);
    if (!libsDirectory.isDirectory() && !libsDirectory.mkdirs()) {
      throw new RuntimeException("could not create libs directory");
    }

    return libsDirectory;
  }

  /**
   * Delete a directory and its contents.
   *
   * WARNING: Java APIs do not let us distinguish directories from symbolic links to directories.
   * Consequently, if the directory contains symbolic links to directories, we will attempt to
   * delete the contents of pointed-to directories.
   *
   * @param file File or directory to delete
   */
  /* package */ static void dumbDeleteRecrusive(File file) throws IOException {
    if (file.isDirectory()) {
      for (File entry : file.listFiles()) {
        dumbDeleteRecrusive(entry);
      }
    }

    if (!file.delete() && file.exists()) {
      throw new IOException("could not delete: " + file);
    }
  }

  /**
   * Encapsulate Lollipop-specific calls into an independent class so we don't fail preverification
   * downlevel.
   */
  private static final class LollipopSysdeps {
    public static String[] getSupportedAbis() {
      return Build.SUPPORTED_32_BIT_ABIS; // We ain't doing no newfangled 64-bit
    }

    public static void fallocate(FileDescriptor fd, long length) throws IOException {
      try {
        Os.posix_fallocate(fd, 0, length);
      } catch (ErrnoException ex) {
        throw new IOException(ex.toString(), ex);
      }
    }
  }
}


Easier said than done. If you ever lived in the country where they drive on the other side than you're used to, you know what I'm talking about. Coming from the good old continental Europe where we drive on the right side of the road and where I spent most of my life so far, I automatically look left and then right when crossing the road. Back to New Zealand I know in the back of my mind that I have to do exactly the opposite. The problem is that certain things in our brain works like an automatic procedure. You know what you should do, but you won't do it and not because you don't want to. It takes time to get used to it. After few months here I think I got a bit better and in 9 out of 10 cases I look first right and then left. It's probably still good idea to get a good life insurance though.
In New Zealand are those 'usual' pedestrian crossing with striped lines where pedestrian have right of way. Which doesn't mean that some rushing drivers trying to make it in the last second on the green light won't stop in the middle of the crossing. And there are also so called 'courtesy' crossings where pedestrian doesn't have the right of way. You can often see signs saying 'Caution! Motorists have the right of way!'.
Courtesy crossings, courtesy for both drivers and pedestrians. How to make it through town on your feet when 90% of crossings are courtesy crossings? Well, I have to admit that after waiting five minutes trying to cross the road I might get little upset, but otherwise I wasn't bothered by it too much. Rules are rules, especially on the road.
Until one day … when I end up in the middle of courtesy crossing waiting for traffic to pass on the other side and met there this guy with crutches trying to cross the road. He looked at me, gave a sad grin and said: 'This is crazy, uh?'. He was right. He could hardly walk, but no one would let him go. And all the drivers seen him very clearly as we were on that little island right in the middle.
My experience here is that no one ever let me go on the courtesy crossing. You simply have to run for your life in most cases. Back in Europe drivers seems to be little bit more friendly when it comes to crossing the road. Even on the places where pedestrians don't have the right of way my experience is that in most cases they would give way to pedestrians. Again, based on personal experience, I might be the lucky one.
One fun fact … in Europe I remember if I was wearing skirt or dress, drivers, of course mostly guys, would give me way nearly every time. The shorter dress/skirt, the higher chance. Here? It doesn't matter what you wear (especially women). I might be standing there in my swimsuit or even naked and I can't imagine that anyone would notice.
I completely understand that drivers have the right of way. But if I see elderly people, someone disabled or mother with a child, I believe that it would be nice to be courteous driver and give them way. Few seconds won't make a difference and smile as thank you can only brighten up your day. Courtesy, that's what it's all about.


text:
Cestrus miniaceus är en stekelart som först beskrevs av Brethes 1920.  Cestrus miniaceus ingår i släktet Cestrus och familjen brokparasitsteklar. Inga underarter finns listade i Catalogue of Life.

Källor

Brokparasitsteklar
miniaceus

redpajama_set_name: RedPajamaWikipedia


Swans by Hulda Hákon. Signed and numbered in pencil, 50x70 cm/19.7x27.5 in. Photographer: Ari Magg. Published by Reykjavík Print, edition of 200. © Hulda Hákon. The original: Swans, 2013. Size: 55x55x10 cm/21.7x21.7x3.9 in. Acrylics on hydrocal and wood. Private collection, Reykjavík.


text:
Will Star Wars 8 and 9 be followed by yet another trilogy?
George Lucas always planned for 12 films - but not quite the way they are panning out
As Star Wars fans worldwide grapple with their Rogue One comedown, the focus is now turning towards the next instalment of the principal saga.
Rogue One: A Star Wars Story is a mere appetiser to the main trilogy, the third in the series. It continues late this year with episode 8, which comes a full two years after the first instalment, The Force Awakens, stormed cinema screens.
Episode 9 is slated for 2019, but after that, Star Wars devotees want to know, will there be a fourth trilogy?
Why would there be?
Well, Star Wars creator George Lucas originally planned 12 films in the series, say super-fans on Reddit. A hastily-scribbled list on a yellow lined notebook clearly indicates his plans for a dozen adventures.Of that list, episodes 6-8 were intended to be the original trilogy, and episodes 2-4 to be a prequel. The last episodes, 9-12, were left blank. But they're definitely there.
Plus, 12 is a nice number for stories, particularly epics - it's the same number as Virgil's Aeneid and half the number of parts in the Odyssey.
Remind me of the instalments as they stand…
Of course, as every Star Wars fan knows, the numbering of the saga is messy. The original trilogy was composed of episodes 4-6. That was followed by the much-reviled prequels, episodes 1-3, the last of which, Revenge of the Sith, came out in 2005.
Finally, after a decade-long hiatus, The Force Awakens - episode 7 - returned the franchise to cinema screens in 2015. Episode 8 is due in cinemas in December and episode 9 the year after.
Rogue One, meanwhile, was a sort of anthology episode, to sit alongside the main saga and not in it. If you put the epic into chronological order, it's positioned between episodes 3 and 4.
So are they going to do a fourth trilogy?
Quite possibly, although nothing has been confirmed. Last September, Deadline reported Disney chief Bob Iger had talked up long-term plans for the franchise to investors. He also said another stand-alone Star Wars film has been pencilled in for 2020.
Once these are out of the way, "it's likely Disney will simply keep the ball rolling", Yahoo Tech says. Reports say Iger's thoughts are now extending into 2021 and beyond.
"We have a great system in place," he said.
What would a fourth set be about?
Despite the black box of secrecy that surrounds any upcoming Star Wars plot, rumours have already been doing the rounds. MovieWeb cites an industry insider who claims a fourth trilogy would focus on Darth Vader's early years under Emperor Palpatine.
"Darth Vader will rise from the ashes," the insider said, declaring that the character was too powerful to ever disappear from the franchise.
There could also be room for a teenage Han Solo and Lando Calrissian, showing them joining the Imperial Army as new recruits.
And in the meantime?
Until - and if - any of that comes into fruition, fans will have to content themselves with the next couple of episodes – of which we know very little. The official title for episode 8 has not even been released yet.
However, AVSForum says Lucasfilm has filed a trademark to the EU intellectual property office for Star Wars: Forces of Destiny and speculates this could well be the next film.
In terms of characters, we should see the return of Luke Skywalker, Rey, Chewbacca and Kylo Ren, while Benicio del Toro plays a villain, NME says.
And what about Carrie Fisher?!
The death of Carrie Fisher in December "has left a disturbance in the Force", the Hollywood Reporter says. Her character has at least two scenes planned in episodes 8 and 9, an insider told the website, and not trifling ones either - they included a reunion with Luke Skywalker and a stand-off with Kylo Ren, who memorably murdered Han Solo in The Force Awakens.
Luckily, shooting for the eighth episode has already wrapped, the Radio Times reports, so that instalment shouldn't be too much of a problem.
But that still leaves episode 9, where Fisher's role was actually supposed to be bigger than in the previous episode, the Hollywood Reporter claims. The film's director Colin Trevorrow - of Jurassic World fame - is heading to LA later in January to meet with Lucasfilm and discuss options.
That could include CGI - which filmmakers already used to make Leia appear young again in Rogue One. Or they could write her out of the script, or at the very least reduce her role. Fortunately, they've got a couple of years to figure it out.
Best properties: houses around the UK average of £270,000
Helen Frankenthaler: Radical Beaut – this may be 'the show of the season'
The Ticket Collector from Belarus: a 'heart-rending tale'
The Valentine's Day checklist

redpajama_set_name: RedPajamaCommonCrawl


Nun and Nunner, share how people react when they find out the truth behind this Sister Act of singing nuns. You can find out more by visiting nunandnunner.com. I highly recommend this fun duo for any event; my personal preference would be for a bachelorette party!


text:
Der Erlanger Spur ist ein Felssporn im westantarktischen Queen Elizabeth Land. In der Forrestal Range der Pensacola Mountains bildet er den südwestlichen Ausläufer des Lexington Table. Er ragt südlich des Abele Spur auf und erstreckt sich westwärts zum Blount-Nunatak.

Das Advisory Committee on Antarctic Names benannte ihn auf Vorschlag des US-amerikanischen Geologen Arthur B. Ford. Namensgeber ist George L. Erlanger, Elektronikspezialist des Unternehmens Geophysical Survey Systems Inc. aus Nashua in New Hampshire, der von 1973 bis 1974 an den Vermessungen des Cold Regions Research and Engineering Laboratory (CRREL) des United States Army Corps of Engineers in den Pensacola Mountains beteiligt war.

Weblinks
  (englisch)
 Erlanger Spur auf geographic.org (englisch)

Berg im Transantarktischen Gebirge
Pensacola Mountains