text:
#include "Config.hpp"

using namespace HomieInternals;

Config::Config()
  : _configStruct()
  , _spiffsBegan(false)
  , _valid(false) {
}

bool Config::_spiffsBegin() {
  if (!_spiffsBegan) {
#ifdef ESP32
    _spiffsBegan = SPIFFS.begin(true);
#elif defined(ESP8266)
    _spiffsBegan = SPIFFS.begin();
#endif
    if (!_spiffsBegan) Interface::get().getLogger() << F("✖ Cannot mount filesystem") << endl;
  }

  return _spiffsBegan;
}

bool Config::load() {
  if (!_spiffsBegin()) { return false; }

  _valid = false;

  if (!SPIFFS.exists(CONFIG_FILE_PATH)) {
    Interface::get().getLogger() << F("✖ ") << CONFIG_FILE_PATH << F(" doesn't exist") << endl;
    return false;
  }

  File configFile = SPIFFS.open(CONFIG_FILE_PATH, "r");
  if (!configFile) {
    Interface::get().getLogger() << F("✖ Cannot open config file") << endl;
    return false;
  }

  size_t configSize = configFile.size();

  if (configSize >= MAX_JSON_CONFIG_FILE_SIZE) {
    Interface::get().getLogger() << F("✖ Config file too big") << endl;
    return false;
  }

  char buf[MAX_JSON_CONFIG_FILE_SIZE];
  configFile.readBytes(buf, configSize);
  configFile.close();
  buf[configSize] = '\0';

  StaticJsonDocument<MAX_JSON_CONFIG_ARDUINOJSON_BUFFER_SIZE> jsonDoc;
  if (deserializeJson(jsonDoc, buf) != DeserializationError::Ok || !jsonDoc.is<JsonObject>()) {
    Interface::get().getLogger() << F("✖ Invalid JSON in the config file") << endl;
    return false;
  }

  JsonObject parsedJson = jsonDoc.as<JsonObject>();
  ConfigValidationResult configValidationResult = Validation::validateConfig(parsedJson);
  if (!configValidationResult.valid) {
    Interface::get().getLogger() << F("✖ Config file is not valid, reason: ") << configValidationResult.reason << endl;
    return false;
  }

  /* Mandatory config items */
  JsonObject reqWifi = parsedJson["wifi"];
  JsonObject reqMqtt = parsedJson["mqtt"];

  const char* reqName = parsedJson["name"];
  const char* reqWifiSsid = reqWifi["ssid"];
  const char* reqMqttHost = reqMqtt["host"];

  /* Optional config items */
  const char* reqDeviceId = parsedJson["device_id"] | DeviceId::get();
  uint16_t regDeviceStatsInterval = parsedJson["device_stats_interval"] | STATS_SEND_INTERVAL_SEC;
  bool reqOtaEnabled = parsedJson["ota"]["enabled"] | false;

  uint16_t reqWifiChannel = reqWifi["channel"] | 0;
  const char* reqWifiBssid = reqWifi["bssid"] | "";
  const char* reqWifiPassword = reqWifi["password"]; // implicit | nullptr;
  const char* reqWifiIp = reqWifi["ip"] | "";
  const char* reqWifiMask = reqWifi["mask"] | "";
  const char* reqWifiGw = reqWifi["gw"] | "";
  const char* reqWifiDns1 = reqWifi["dns1"] | "";
  const char* reqWifiDns2 = reqWifi["dns2"] | "";

  uint16_t reqMqttPort = reqMqtt["port"] | DEFAULT_MQTT_PORT;
  bool reqMqttSsl = reqMqtt["ssl"] | false;
  bool reqMqttAuth = reqMqtt["auth"] | false;
  const char* reqMqttUsername = reqMqtt["username"] | "";
  const char* reqMqttPassword = reqMqtt["password"] | "";
  const char* reqMqttFingerprint = reqMqtt["ssl_fingerprint"] | "";
  const char* reqMqttBaseTopic = reqMqtt["base_topic"] | DEFAULT_MQTT_BASE_TOPIC;

  strlcpy(_configStruct.name, reqName, MAX_FRIENDLY_NAME_LENGTH);
  strlcpy(_configStruct.deviceId, reqDeviceId, MAX_DEVICE_ID_LENGTH);
  _configStruct.deviceStatsInterval = regDeviceStatsInterval;
  strlcpy(_configStruct.wifi.ssid, reqWifiSsid, MAX_WIFI_SSID_LENGTH);
  if (reqWifiPassword) strlcpy(_configStruct.wifi.password, reqWifiPassword, MAX_WIFI_PASSWORD_LENGTH);
  strlcpy(_configStruct.wifi.bssid, reqWifiBssid, MAX_MAC_STRING_LENGTH + 6);
  _configStruct.wifi.channel = reqWifiChannel;
  strlcpy(_configStruct.wifi.ip, reqWifiIp, MAX_IP_STRING_LENGTH);
  strlcpy(_configStruct.wifi.gw, reqWifiGw, MAX_IP_STRING_LENGTH);
  strlcpy(_configStruct.wifi.mask, reqWifiMask, MAX_IP_STRING_LENGTH);
  strlcpy(_configStruct.wifi.dns1, reqWifiDns1, MAX_IP_STRING_LENGTH);
  strlcpy(_configStruct.wifi.dns2, reqWifiDns2, MAX_IP_STRING_LENGTH);
  strlcpy(_configStruct.mqtt.server.host, reqMqttHost, MAX_HOSTNAME_LENGTH);
#if ASYNC_TCP_SSL_ENABLED
  _configStruct.mqtt.server.ssl.enabled = reqMqttSsl;
  if (strcmp_P(reqMqttFingerprint, PSTR("")) != 0) {
    _configStruct.mqtt.server.ssl.hasFingerprint = true;
    Helpers::hexStringToByteArray(reqMqttFingerprint, _configStruct.mqtt.server.ssl.fingerprint, MAX_FINGERPRINT_SIZE);
  }
#endif
  _configStruct.mqtt.server.port = reqMqttPort;
  strlcpy(_configStruct.mqtt.baseTopic, reqMqttBaseTopic, MAX_MQTT_BASE_TOPIC_LENGTH);
  _configStruct.mqtt.auth = reqMqttAuth;
  strlcpy(_configStruct.mqtt.username, reqMqttUsername, MAX_MQTT_CREDS_LENGTH);
  strlcpy(_configStruct.mqtt.password, reqMqttPassword, MAX_MQTT_CREDS_LENGTH);
  _configStruct.ota.enabled = reqOtaEnabled;

  /* Parse the settings */

  JsonObject settingsObject = parsedJson["settings"].as<JsonObject>();

  for (IHomieSetting* iSetting : IHomieSetting::settings) {
    JsonVariant reqSetting = settingsObject[iSetting->getName()];

    if (!reqSetting.isNull()) {
      if (iSetting->isBool()) {
        HomieSetting<bool>* setting = static_cast<HomieSetting<bool>*>(iSetting);
        setting->set(reqSetting.as<bool>());
      } else if (iSetting->isLong()) {
        HomieSetting<long>* setting = static_cast<HomieSetting<long>*>(iSetting);
        setting->set(reqSetting.as<long>());
      } else if (iSetting->isDouble()) {
        HomieSetting<double>* setting = static_cast<HomieSetting<double>*>(iSetting);
        setting->set(reqSetting.as<double>());
      } else if (iSetting->isConstChar()) {
        HomieSetting<const char*>* setting = static_cast<HomieSetting<const char*>*>(iSetting);
        setting->set(strdup(reqSetting.as<const char*>()));
      }
    }
  }

  _valid = true;
  return true;
}

char* Config::getSafeConfigFile() const {
  File configFile = SPIFFS.open(CONFIG_FILE_PATH, "r");
  size_t configSize = configFile.size();

  char buf[MAX_JSON_CONFIG_FILE_SIZE];
  configFile.readBytes(buf, configSize);
  configFile.close();
  buf[configSize] = '\0';

  StaticJsonDocument<MAX_JSON_CONFIG_ARDUINOJSON_BUFFER_SIZE> jsonDoc;
  deserializeJson(jsonDoc, buf);
  JsonObject parsedJson = jsonDoc.as<JsonObject>();
  parsedJson["wifi"].as<JsonObject>().remove("password");
  parsedJson["mqtt"].as<JsonObject>().remove("username");
  parsedJson["mqtt"].as<JsonObject>().remove("password");

  size_t jsonBufferLength = measureJson(jsonDoc) + 1;
  char* jsonString = new char[jsonBufferLength];
  serializeJson(jsonDoc, jsonString, jsonBufferLength);
  return jsonString;
}

void Config::erase() {
  if (!_spiffsBegin()) { return; }

  SPIFFS.remove(CONFIG_FILE_PATH);
  SPIFFS.remove(CONFIG_NEXT_BOOT_MODE_FILE_PATH);
}

void Config::setHomieBootModeOnNextBoot(HomieBootMode bootMode) {
  if (!_spiffsBegin()) { return; }

  if (bootMode == HomieBootMode::UNDEFINED) {
    SPIFFS.remove(CONFIG_NEXT_BOOT_MODE_FILE_PATH);
  } else {
    File bootModeFile = SPIFFS.open(CONFIG_NEXT_BOOT_MODE_FILE_PATH, "w");
    if (!bootModeFile) {
      Interface::get().getLogger() << F("✖ Cannot open NEXTMODE file") << endl;
      return;
    }

    bootModeFile.printf("#%d", bootMode);
    bootModeFile.close();
    Interface::get().getLogger().printf("Setting next boot mode to %d\n", bootMode);
  }
}

HomieBootMode Config::getHomieBootModeOnNextBoot() {
  if (!_spiffsBegin()) { return HomieBootMode::UNDEFINED; }

  File bootModeFile = SPIFFS.open(CONFIG_NEXT_BOOT_MODE_FILE_PATH, "r");
  if (bootModeFile) {
    int v = bootModeFile.parseInt();
    bootModeFile.close();
    return static_cast<HomieBootMode>(v);
  } else {
    return HomieBootMode::UNDEFINED;
  }
}

void Config::write(const JsonObject config) {
  if (!_spiffsBegin()) { return; }

  SPIFFS.remove(CONFIG_FILE_PATH);

  File configFile = SPIFFS.open(CONFIG_FILE_PATH, "w");
  if (!configFile) {
    Interface::get().getLogger() << F("✖ Cannot open config file") << endl;
    return;
  }
  serializeJson(config, configFile);
  configFile.close();
}

bool Config::patch(const char* patch) {
  if (!_spiffsBegin()) { return false; }

  StaticJsonDocument<MAX_JSON_CONFIG_ARDUINOJSON_BUFFER_SIZE> patchJsonDoc;

  if (deserializeJson(patchJsonDoc, patch) != DeserializationError::Ok || !patchJsonDoc.is<JsonObject>()) {
    Interface::get().getLogger() << F("✖ Invalid or too big JSON") << endl;
    return false;
  }

  JsonObject patchObject = patchJsonDoc.as<JsonObject>();
  File configFile = SPIFFS.open(CONFIG_FILE_PATH, "r");
  if (!configFile) {
    Interface::get().getLogger() << F("✖ Cannot open config file") << endl;
    return false;
  }

  size_t configSize = configFile.size();

  char configJson[MAX_JSON_CONFIG_FILE_SIZE];
  configFile.readBytes(configJson, configSize);
  configFile.close();
  configJson[configSize] = '\0';

  StaticJsonDocument<MAX_JSON_CONFIG_ARDUINOJSON_BUFFER_SIZE> configJsonDoc;
  deserializeJson(configJsonDoc, configJson);
  JsonObject configObject = configJsonDoc.as<JsonObject>();

  _patchJsonObject(configObject, patchObject);

  ConfigValidationResult configValidationResult = Validation::validateConfig(configObject);
  if (!configValidationResult.valid) {
    Interface::get().getLogger() << F("✖ Config file is not valid, reason: ") << configValidationResult.reason << endl;
    return false;
  }

  write(configObject);

  return true;
}

void Config::_patchJsonObject(JsonObject object, JsonObject patch) {
  for (JsonPair patchItem : patch) {
    JsonVariant patchElement = patchItem.value();
    JsonVariant objectElement = object[patchItem.key()];

    // If both object element and patch element are objects, then recursively call this method again
    if (objectElement.is<JsonObject>() && patchElement.is<JsonObject>()) {
      _patchJsonObject(objectElement.as<JsonObject>(), patchElement.as<JsonObject>());
    } else {
      // Delete the object element if the patch element is null
      if (patchElement.isNull()) {
        object.remove(patchItem.key());
      } else {
        // Otherwise replace the object element value with the patch element value
        object[patchItem.key()] = patchElement;
      }
    }
  }
}

bool Config::isValid() const {
  return this->_valid;
}

void Config::log() const {
  Interface::get().getLogger() << F("{} Stored configuration") << endl;
  Interface::get().getLogger() << F("  • Hardware device ID: ") << DeviceId::get() << endl;
  Interface::get().getLogger() << F("  • Device ID: ") << _configStruct.deviceId << endl;
  Interface::get().getLogger() << F("  • Name: ") << _configStruct.name << endl;
  Interface::get().getLogger() << F("  • Device Stats Interval: ") << _configStruct.deviceStatsInterval << F(" sec") << endl;

  Interface::get().getLogger() << F("  • Wi-Fi: ") << endl;
  Interface::get().getLogger() << F("    ◦ SSID: ") << _configStruct.wifi.ssid << endl;
  Interface::get().getLogger() << F("    ◦ Password not shown") << endl;
  if (strcmp_P(_configStruct.wifi.ip, PSTR("")) != 0) {
    Interface::get().getLogger() << F("    ◦ IP: ") << _configStruct.wifi.ip << endl;
    Interface::get().getLogger() << F("    ◦ Mask: ") << _configStruct.wifi.mask << endl;
    Interface::get().getLogger() << F("    ◦ Gateway: ") << _configStruct.wifi.gw << endl;
  }
  Interface::get().getLogger() << F("  • MQTT: ") << endl;
  Interface::get().getLogger() << F("    ◦ Host: ") << _configStruct.mqtt.server.host << endl;
  Interface::get().getLogger() << F("    ◦ Port: ") << _configStruct.mqtt.server.port << endl;
#if ASYNC_TCP_SSL_ENABLED
  Interface::get().getLogger() << F("    ◦ SSL enabled: ") << (_configStruct.mqtt.server.ssl.enabled ? "true" : "false") << endl;
  if (_configStruct.mqtt.server.ssl.enabled && _configStruct.mqtt.server.ssl.hasFingerprint) {
    char hexBuf[MAX_FINGERPRINT_STRING_LENGTH];
    Helpers::byteArrayToHexString(Interface::get().getConfig().get().mqtt.server.ssl.fingerprint, hexBuf, MAX_FINGERPRINT_SIZE);
    Interface::get().getLogger() << F("    ◦ Fingerprint: ") << hexBuf << endl;
  }
#endif
  Interface::get().getLogger() << F("    ◦ Base topic: ") << _configStruct.mqtt.baseTopic << endl;
  Interface::get().getLogger() << F("    ◦ Auth? ") << (_configStruct.mqtt.auth ? F("yes") : F("no")) << endl;
  if (_configStruct.mqtt.auth) {
    Interface::get().getLogger() << F("    ◦ Username: ") << _configStruct.mqtt.username << endl;
    Interface::get().getLogger() << F("    ◦ Password not shown") << endl;
  }

  Interface::get().getLogger() << F("  • OTA: ") << endl;
  Interface::get().getLogger() << F("    ◦ Enabled? ") << (_configStruct.ota.enabled ? F("yes") : F("no")) << endl;

  if (IHomieSetting::settings.size() > 0) {
    Interface::get().getLogger() << F("  • Custom settings: ") << endl;
    for (IHomieSetting* iSetting : IHomieSetting::settings) {
      Interface::get().getLogger() << F("    ◦ ");

      if (iSetting->isBool()) {
        HomieSetting<bool>* setting = static_cast<HomieSetting<bool>*>(iSetting);
        Interface::get().getLogger() << setting->getName() << F(": ") << setting->get() << F(" (") << (setting->wasProvided() ? F("set") : F("default")) << F(")");
      } else if (iSetting->isLong()) {
        HomieSetting<long>* setting = static_cast<HomieSetting<long>*>(iSetting);
        Interface::get().getLogger() << setting->getName() << F(": ") << setting->get() << F(" (") << (setting->wasProvided() ? F("set") : F("default")) << F(")");
      } else if (iSetting->isDouble()) {
        HomieSetting<double>* setting = static_cast<HomieSetting<double>*>(iSetting);
        Interface::get().getLogger() << setting->getName() << F(": ") << setting->get() << F(" (") << (setting->wasProvided() ? F("set") : F("default")) << F(")");
      } else if (iSetting->isConstChar()) {
        HomieSetting<const char*>* setting = static_cast<HomieSetting<const char*>*>(iSetting);
        Interface::get().getLogger() << setting->getName() << F(": ") << setting->get() << F(" (") << (setting->wasProvided() ? F("set") : F("default")) << F(")");
      }

      Interface::get().getLogger() << endl;
    }
  }
}


Do you want to make your nose all free from the blackheads? Do the excessive blackheads allow you to get disconnected with the outside world? Well the appearance of the blackheads is one of the greatest trouble that is much seen among the women. Most of the women even make the choice of treatments but at the end the results are actually nil. In all such conditions the best method would be to have the self trust and make the alternation of homemade remedies for reducing the height of blackheads. In the period of teenagers the women get increased with their hormone quantity and this lead to the amount of huge blackheads. In this article we are discussing some of the essential and prominent tips that would help the women to fight against the blackheads on nose.
Firstly, the women should try to remain connected with the skin care creams and lotion for making the skin fresh and energetic all the time.
Secondly, try to drink maximum 8 glasses of water everyday because this will help in energizing the skin cells and even removes the blackheads greatly.
Make the habit of doing exercises and yoga for keeping the health balanced.
In summer and even in winter try to stay away from the sunlight because the sun rays also gets attracted towards the blackheads and make them much prominent.
If your skin has already been attacked with the pimples and spots then try to stay away from the oily items and foods.
Take as much less stress and tensions as possible because this can also lead to the appearance of the blackheads.
If the pimples and blackheads are becoming visible then try to keep them away from touching and squeezing.
In addition, the use of healthy foods and fruits can play a very vital role for making your skin fresh and so as the blackheads freedom.
In view of the homemade remedy you can take one lemon and drop some drops of honey on it and rinse the half cut lemon on the nose. This will not just make the skin appear as fresh and clean but will also remove the blackheads in just one weak.
Well this was all for the methods for removing the blackheads. All the women and girls who are still facing such troubles they must try it now.


Hundreds and thousands of celebrities and super stars are indulged into the charm brand bags which are a true stylish detail that cannot be renounced. It is beyond doubt that our well-designed Hermes has won high-end reputation and great popularity all over the world that few fashion addicts can resistant their charm. This is your best chance to enjoy brand value from our site, all kinds of well-designed handbags are available at the most competitive price. With so many different replica Hermes bags to choose from you'll have a hard time making a decision about which replica handbag or replica wallet is right for you. But at prices much lower than the original authentic bag you will make a choice.


text:
Andy Vidak: Not A Great Republican Victory In Winning The Hispanic Vote.
Allan Wall
Recently there's been some discussion about Andy Vidak, elected to the California State Senate's District 16. See here, here, here, here, and here, plus I've also been receiving valuable mail from readers.
There's been some confusion over the demographics of the 16th district, was it majority Hispanic or non-Hispanic? Well, the district was redistricted in 2011, but the redistricting doesn't take effect until 2014 (see here). That means that, as originally reported, the district indeed has a Hispanic majority, but when the redistricting takes effect in 2014, it should have a slim white majority.
Vidak estimated that he received one quarter of the Hispanic vote, which was better than the district's previous Republican candidates who would get one-eighth of the Hispanic vote.
However, there is another factor, pointed out by James Ryan:
The most likely reason for Vidak's win is low turnout from Hispanics in a special election in the middle of summer. Hispanic voters typically lag behind in turnout, and an election at an odd time with no other candidate on the ballot would probably result in a very low turnout. Vidak actually got fewer votes than the 2010 GOP nominee, but only a drop of about 10% whereas the Democrat vote dropped by 45% compared to 2010.
That analysis sounds right on, and should give one pause before going out to declare this a great Republican victory in winning the Hispanic vote.
Plus, as Washington Watcher has pointed out, Vidak has been and still is an amnesty supporter. Yet despite the fact that he supports amnesty, had Spanish-speaking campaign workers and cooked menudo, Vidak only received a quarter of the Hispanic vote.

redpajama_set_name: RedPajamaCommonCrawl


Officially, we are a listed company on a GCC bourse; our activities are clear although we have a $500M portfolio in the local stock market which contradicts our stated activities. Our board and shareholding structure is dominated by a single family (or two) which could also be the government (technically still a family). Our CEO seldom appears in the media or grants interviews and even when he (naturally a "he") does so the interview is vague so that one can just about make out broad hints and innuendos that the local journalists would ponder upon before deciding to approach a junior level employee quoting him as an "unnamed source". Our business plans change with the seasons and we are always open to go beyond our mandate and entertain any idea that we may be presented with especially if it came from abroad. We are either in the process of claiming to be or have already claimed to be an Islamic Shariah compliant firm even though we hold bank accounts that are historically and currently taking interest (aka usury) not to mention our varied equity portfolio that is as Shariah compliant as Casino Du Liban (which we may or may not hold shares in by extension through another firm). Our portfolio also includes our main market competitors as well as underperforming stocks that we will never disclose to our shareholders as it violates the concept of discretion. We do not allow investors access to our financial controller or accounting team as is the case in Europe, Asia and North America to safeguard the company's secrets. We count in our board (ex)government ministers as well as major businessmen (hamoors) and/or their sons that may or may not be serving on our competitor's boards even though conflict of interest is out of the question. We could occasionally sponsor the family members of our management team in events that have very little to nothing to do with our activities. We will take out full page adverts for occasions and news items that cost thousands of dollars in the local press that bear no relation to our scope or area of interest and would do so in instances that range from birth, death, marriage (but not divorce), graduation to triumph in sports to gain favors in the hope that it would win the contracts that we so long for from the concerned person. Our financial statements that do not adhere to international standards will be delivered as late as possible to ensure minimum exposure of financial data. Our board members who naturally own a majority stake in the company decide on our policies and take all decisions that our minority shareholders will be informed of in the next AGM as they enjoy the expensive open buffet that we have specially ordered to keep them busy during question time. In the week before we announce stellar financial results our stock price might randomly jump by several percent which will naturally result in rumors of insider trading, an accusation that we shall flatly deny. Our board members who don't all attend the AGMs will look stunned and offended in case an audience member (aka shareholder) asks or persists in asking questions about the soundness of our policies and decisions. Hence they will only take questions from journalists and audience members that they know and are comfortable with. We shall not disclose the names of the biggest shareholders in the firm partly because the hamoors hold them in more than one family member name to avoid any suspicions and for ease of offload during theoretically closed windows trading days. We may acquire foreign companies in surprised and extravagant announcements that could cost us (and our shareholders) large premiums because it is far too challenging for us to start our own operations as mandated by our business plan.
Every few years we may choose to go through a "re-branding" process that will cost us millions of dollars because our board has decided to. For the sake of efficiency we may give contracts to family members of our board or management team that do not go through a bidding process. Indeed we are listed, but we might as well not be.
We are your GCC listed firm.
Think your posting brings up many bold and insightful points Sultan, and highlights a number of struggles that I face as a journalist in the Gulf. Inexplicable stock market movements that allude to insider trading, a lack of complete and publicly available financial statements (particularly in Saudi Arabia) and evasive executives with little media training are struggles we face on a daily basis. However, I have to say, you are harsher than I would be when taking a general look at Gulf Arab firms. Many listed firms in the Gulf are transparent, or becoming moreso, and are increasingly open to scrutiny and change, especially as foreign investors, global analysts and discerning journalists demand more insight into their businesses. There is a long road ahead -- as journalists we are often chastised for highlighting facts and figures that paint a negative or critical picture. But this is changing, the picture is not entirely bleak. Shedding some more light on what companies are doing to change and specifically proposing solutions on what they could implement would create for a more compelling argument..
Brilliantly funny and sadly still very accurate for many companies here.
Straight to the point ... came here after reading the article in arabian business ... this only gets better!


ZENEVIA's board certified primary care physicians are passionate about natural relief of pain, stress, anxiety, and trauma.
We combine our modern medical training with ancient Eastern medical traditions to help your body realign its imbalance and unleash its own healing potential.
Many common medical conditions can be treated much more quickly and effectively (and with less risk, fewer side effects, and less expense) by using natural holistic medical procedures such as medical acupuncture and osteopathic medicine.
We at ZENEVIA have made it our mission in life to treat as many people as we can using these safe, natural alternatives.
ZENEVIA is not just a doctor's office.
We are a healing community.
Our space is designed for couples, families, and friends to be treated in the comfort of each other's company and to heal together.
ZENEVIA is also a membership community.
Membership is free. No application fee. No long-term contracts. No strings attached. No hidden fees. No obligation. No kidding.
New membership requests are considered based on referrals from our current members.
A ZENEVIA patient is pleasantly surprised when she is pain-free for the first time in 15 years!
A happy ZENEVIA patient describes how 20 minutes of acupuncture relieved 17 years of constant knee pain!
Another happy ZENEVIA patient describes hip clicking and pain relieved for the first time in 15 years!


Founded in 1975, Congregation Emek Beracha (formerly known as the Palo Alto Orthodox Minyan) is changing the South Bay! Silicon Valley is exploding with opportunity and is attracting Jews from all over the world. Because of the massive influx, our shul is continuously growing and therefore taking steps to spearhead the creation of a strong, thriving Jewish community.
Many wonderful people have become part of our community over the years, and those who have moved elsewhere still like to keep in touch and to hear what's going on in this part of the world. That is why we have created a mailing list to which hundreds of members worldwide subscribe.


We commenced business in 2009 having been formed by solicitor advocate John Carruthers who left the Scottish bar for this purpose.
John had detected a latent demand for modern and responsive legal services of a high quality but at competitive cost. In a short time the increasing demand for our service has resulted in Colette Kerr and Roisin Docherty joining the firm in 2010 and early 2012. Since then the firm has continued to expand and recently moved to our new offices in Glasgow city centre to accommodate our expansion.
Although we are a relatively new firm we have a depth of experience often found only at very large commercial firms. As we are solicitors and solicitor advocates we can and do represent our clients in the supreme courts. This expertise means clients have direct access to counsel which reduces cost and increases the effectiveness of representation. This type of seamless service is normally only available from the large commercial firms.
We are happy to say that we do not share the working practices of the established law firms. We do not have the legacy infrastructure of the traditional law firm which has failed to adopt modern working practices or operates from expensive offices. Consequently, we can provide you with high quality and efficient legal services at a relatively low cost compared to our competitors.
Our services are tailored to meet the requirements of SMEs and individuals. We prefer to have a close relationship with our clients in order that we can best understand their requirements. We make ourselves available to our clients when it suits them. We do not provide a 9-5 service and we do not close for lunch. We often deal with clients at their business premises or in their homes during the evenings or weekends. We provide clients with our personal mobile numbers which allows them to contact us when they need us.
Our clients include a large number of commercial organisations, companies, charities, partnerships, other solicitors, chartered accountants band individuals all of whom trust us to look after their commercial and personal legal needs.
We are always delighted to speak to you or to meet you on an informal basis to discuss your requirements.


text:
Automata I & II
Written by: AP on 19/12/2018 22:10:48
Whenever a new album from Between the Buried and Me appears on the horizon, it tends to land on pretty much every most anticipated records of the year -list. There is a good reason for this: the Raleigh, NC-born five-piece has shown astonishing consistency over the course of nearly two decades, in creating some of the most breathtaking progressive metal of their generation. It was no different with their eighth and latest offering, "Automata", which faced the insurmountable task of succeeding 2015's "Coma Ecliptic" (one of the best albums of that year) and continuing the band's push toward immortality. It was divided into two separate entities not because of any deeper meaning or thematic juxtaposition between them, but simply in order to enable listeners to really dive into and absorb the music — though if I am honest, that decision feels somewhat patronising toward their fans who, by now, have surely proven themselves capable of digesting whatever colossus the band should throw at them in one go. This is also why I have chosen to dissect all 68 minutes of "Automata" in its original form.
Between the Buried and Me have come a long way since their earliest works in the beginning of the millennium, slowly adding more and more touches of classic progressive rock to their palette whilst ostracising the elements of grindcore and mathcore that used to have a heavy presence in their sound. And with that in mind, "Automata" might even come across as a bit underwhelming to long-standing fans, given that it does not bring the same wealth of fresh ideas to the table as its predecessor. Still, as underlined by the opening track to part I, "Condemned to the Gallows", even below their maximum capacity Between the Buried and Me leave most of their peers struggling to match them in terms of both songwriting and technical ability. The song is a classic BTBAM piece, opening up with a teasing piano soliloquy, rising to its feet grandiosely, and spreading its wings to arouse a storm of dissonant extremity, before a neoclassical guitar solo by Paul Waggoner announces the transition into a crescendo, in which the scintillating key strokes and melancholy singing by frontman Thomas Giles Rogers Jr. in particular make an impression. But it is perhaps a bit too classic, rehashing the structure and tone of the band's 2015 track "Coma Machine" practically to the note, and in fact, it is not until the fourth song, "Millions", that those familiar goosebumps that only the most masterfully written 'Buried and Me songs can stir up start crawling up my skin at last.
When "The Great Misdirect" came out in 2010, the likes of "Yellow Eyes" here easily stood out by virtue of their polyrhythmic dynamics and noodly melodies, but as the band has evolved, so too have the expectations one has for them. The technical competences of Waggoner, Rogers and the rest of the gang — bassist Dan Briggs, rhythm guitarist Dustie Waring & drummer Blake Richardson — have lost their shock factor, so it is now their penchant for weaving surprises into the fabric of their sound that creates intrigue. "Millions" exemplifies this perfectly, catching the listener off guard with a muted and atmospheric style that verges on post-rock at times, and then rewards your curiosity with a chorus pairing a wistfully soaring Waggoner-lead with obliquely worded, yet hauntingly sung lyrics by Rogers:
Millions fly overhead / Fog dancing slavery… like snakes circling / Small angle jeopardy
The king of "Automata I", however, is without a doubt the finale, "Blot", which distills everything I love about Between the Buried and Me into its 10 minutes of runtime. Starting with an oriental-style keyboard melody, the song is a potpourri of unexpected twists and turns, jarring stop/start dynamics and King Crimson-esque fusions of ornate tunes and discordance. But it also features a chorus to remember ("Exploring the escape / Endless lives whispering by, so fast, circulate…"), not to mention an eerie mantra by Rogers around the 07:20-mark, voiced over synths so '80s they might as well be from Tron. Quite seamlessly out of its wake arises the standout "Proverbial Bellow" to usher in the second half of the opus, recalling both the uplifting tone and theatrical composition of "Prequel to the Sequel" from BTBAM's magnum opus, 2007's "Colors". Unlike the opener of the first half, "The Proverbial Bellow" however quickly sheds the overt similarities to the band's past creations, sprawling into a metropolis of individual parts, artfully tied together by another mesmerising chorus from Rogers, sung with Queen-like drama as the two guitarists pull beautiful minor notes out of their instruments:
Please pick up… pick up the phone / It's been ringing for years now / I'm so alone here / Sensory bliss
One thing Between the Buried and Me have gradually eschewed from their music since "Colors" is the wackiness that would suddenly erupt in songs like "Informal Gluttony" and "Sun of Nothing". It is reprised on "Automata II" to some extent though, which probably explains why both "Glide" and "Voice of Trespass" inspire such a rush of nostalgia within me, the former with its broken carnival sounds and the latter by virtue of an audacious brass section, which helps it roll like Motörhead on a bad acid trip. Unquestionably, "Voice of Trespass" is the most brazen and eccentric piece of music the band has written to date, taking all those quirky ideas of old and raising the stakes by creating an 8-minute song out of them. It is so intoxicating that even the blazing, Steven Wilson-inspired guitar solo in the rear end of "The Grid" falls quite flat as the album's conclusive moment.
By now, my ramblings must have betrayed the ambivalent feelings I have toward "Automata", thus. While the record contains a selection of tracks that shoot straight for the top tier of Between the Buried and Me's musical output — tracks that have already established themselves among my all-time favourites from the band — it also brings a number of songs to the table that do nothing to advance the North Carolinians' ever-expanding ambition. Mind you, those songs still leaves most of the group's peers trailing the dust given the songwriting prowess and virtuosic musicianship on display in them. Just, compared to the band's own standard, they come dangerously close to disappointing, and "Automata" would likely have been a more impressive album overall had some of this flotsam and jetsam been discarded and its running length reduced closer to 45 minutes. Nevertheless, even despite these grievances of mine, "Automata" easily ranks as one of the most crucial progressive metal records of the year, one you should not hesitate to jot down as a late addition to your Christmas wishes.
Download: Millions, Blot, The Proverbial Bellow, Voice of Trespass
For the fans of: August Burns Red, Haken, Leprous, Opeth
Listen: Facebook
Release date 09.03.2018 (I) / 13.07.2018 (II)
Sumerian Records
Related Items | How we score?


text:
2nd Shemyakino or Vtoroye Shemyakino () is a rural locality () in Nizhnemedveditsky Selsoviet Rural Settlement, Kursky District, Kursk Oblast, Russia. Population:

Geography
The village is located on the Bolshaya Kuritsa River (a right tributary of the Seym River), 99 km from the Russia–Ukraine border, 23 km north-west of Kursk, 8 km from the selsoviet center – Verkhnyaya Medveditsa.

 Climate
2nd Shemyakino has a warm-summer humid continental climate (Dfb in the Köppen climate classification).

Transport
2nd Shemyakino is located 1.5 km from the federal route  Crimea Highway (a part of the European route ), on the road of intermunicipal significance  ("Crimea Highway" – 2nd Shemyakino), 18 km from the nearest railway halt Bukreyevka (railway line Oryol – Kursk).

The rural locality is situated 24.5 km from Kursk Vostochny Airport, 146 km from Belgorod International Airport and 220 km from Voronezh Peter the Great Airport.

References

Notes

Sources

Rural localities in Kursky District, Kursk Oblast

redpajama_set_name: RedPajamaWikipedia


text:
Charles-François Daubigny (1817-1878)
Interior of an Inn
The Children in the Cart
The Beach at Villerville
John Crome (1768-1821)
Mousehold Heath
Giovanni Benedetto Castiglione (1609-1664)
God the Father regarding the Infant Christ
Niccolo Boldrini (1510- after 1566)
Three Monkey's Imitating the Statue of Laocoön
Schelte Adamz Bolswert (c.1586-1659)
A Flat Flemish Landscape with Clouds and Figures
Schelte Adamsz Bolswert (c. 1586-1659)
Stormy Landscape with Philemon and Baucis
Schelte Adamsz Bolswert (1586-1659)
A Flat Flemish Landscape with Clouds
Bartolommeo Biscaino (1632-1657)
Jean-François Millet (1814-1875)
Peasant Returning from the Dunghill
Pierre Étienne Théodore Rousseau (1812-1867)
Oaks Among Boulders
Jean Morin (c. 1590-1650)
Omer Talon
Thomas Rowlandson (1757-1827)
Dressing for the Masquerade
Harmenszoon van Rijn Rembrandt (1606-1669)
The Death of the Virgin
Lovis Corinth (1858-1925)
Christ on the Cross (Christus an Kreuz)
Wenceslaus Hollar (1607-1677)
Muscarum scarabeorum vermiumque variae figurae et formae
Antoon Derkzen van Angeren (1878-1961)
Two Skulls
Luigi Scaramuccia (1616-1680)
The Crowing with Thorns
Arthur Illies (1870-1952)
Ripe Cornfield: Evening (Ahrenfeld am Abend)
Claude Lorrain (1604/5-1682)
Jacques-Philippe Lebas (1707-1783) after Jean-Baptiste-Siméon Chardin (1699-1779)
Le Négligé
Jan Both (c. 1618-1652)
The Mule Driver
Samuel Palmer (1805-1881)
The Cypress Grove
Agostino Carracci (1557-1602)
Johann Baptist Zwecker (1814-1876)
Eugen Napoleon Neureuther (1806-1882)
The Morning after the Masked Ball
Hans Thoma (1839-1924)
The Rest on the Flight into Egypt
Christoffel Jegher (1596-1652)
The Infants Christ and St John playing with a Lamb
Johann Anton Ramboux (1790 – 1866)
The Brothers Eberhard
James Abbott McNeill Whistler (1834-1903)
La vieille aux loques (The Old Rag-Picker)
Kurt Schwitters (1887-1948)
Merz V
Théophile-Narcisse Chauvel (1831-1909)
Before the Storm near Moret (Avant L'Orage environs de Moret)
Apple Tree at Auvers (Pommiers à Auvers)
Jacques Beltrand (1874-1977)
La Baigneuse
John Sloan (1871 – 1951)
Turning Out the Light (New York City Life Series)
KÄTHE KOLLWITZ (1867-1945)
The Young Couple
William Hogarth (1697-1764)
Night (from the sequence 'The Four Times of the Day')
Evening (third in the sequence from 'The Four Times of the Day')
Morning (first in the sequence from 'The Four Times of the Day')
Albrecht Dürer (1471-1528)
Max Beckmann (1884-1950)
Self-portrait with stylus
John Sloan (1871-1951)
Roofs, Summer Night (New York City Life Series)
Man, Wife and Child (New York City Life Series)
Fun, One Cent (New York City Life Series)
Man Monkey (New York City Life Series)
Joan Miró (1893-1985)
Help Spain (Aidez L'Espagne)
Joseph Mallord William Turner (1775-1851)
The Lake of Thun
Walter Sickert (1860-1942)
La Gaité, Montparnasse
Dieppe, Quai Henri IV
Francisco de Goya (1746-1828)
There is Something Beneath the Sackcloth (So el sayal, hay al)
Paul Cézanne (1839-1906)
The Chain of the Alps from Grenoble to Chambéri
Joseph Mallord William Turner (1775 – 1851)
Ferdinand Victor Eugène Delacroix (1798-1863)
Lion devouring a horse
Don't Scream, Silly (No Grites, Tonta)
Christopher Richard Wynne Nevinson (1889-1946)
Sur la Terrasse, Montparnasse, Paris
Returning to the Trenches
Valentine Green (1739-1813)
Miravan Breaking Open the Tomb of His Ancestors
OTTO DIX (1891-1969)
Soldiers' Graves Between the Lines
Anthony Van Dyck (1599-1641)
Lucas Vorsterman
Queen Henrietta Maria
Johann Baptist Klauber (1712-1787)
Henricus I (Henry the Fowler)
Adrian Ludwig Richter (1803-1884)
Genoveva
Carl Wilhelm Kolbe (1759-1835)
A Youth Playing the Lyre to a Maiden at a Fountain in Luxuriant Vegetation
ÉDOUARD MANET (1832-1883)
HONORÉ DAUMIER (1808-1879)
Embrassons Nous
GIOVANNI BATTISTA PIRANESI (1720-1778)
The Villa d'Este, Tivoli
ALBERT BESNARD (1849-1934)
Et pendant ce temps-là ils continuent à affirmer qu'elle ne s'est jamais mieux portée
HENDRICK GOLTZIUS (1558-1617)
Hercules and Cacus
REMBRANDT HARMENSZ VAN RIJN (1606-1669)
Self-Portrait with Saskia
George Grosz (1893-1959)
Querschnitt – Platin & Co.
The companions of Cadmus devoured by the dragon
Loyalty, Plate 17 from 'The Proverbs'
Schelte Adamsz Bolswert (c. 1586-1659), after Peter Paul Rubens
Woman with dead child
Egon Schiele (1890-1918)
Crouching Woman
The Rising Moon
Here you can view highlights from the Barber's fine collection of works on paper.
There are now over a thousand drawings and prints in the Barber's collection, covering six centuries of the draughtsman's and printmaker's art. There is a small but very fine selection of old master drawings with magnificent sheets by Dürer, Ingres, Rembrandt, Pietro da Cortona and Turner, along with more recent works by Degas. German Expressionism is a strength of the collection of prints and it includes works by Köllwitz, Beckmann and Nolde. Amongst the old masters there are fine groups by Dürer, Goya, Italian and Flemish Renaissance masters, and 19th-century French artists


text:
Ben Uyeda, A05 Studio Team Up to Launch Sustainable, Tool-Free Flatpack Furniture Brand
By Rain Noe - August 26, 2020
Architect/furniture designer Ben Uyeda of HomeMade Modern is teaming up with design/build firm A05 Studio to release a new sustainable furniture brand called Hoek Home. At this point information is light--the brand won't launch until October--but judging by the sneak peek, it looks like they'll be doing lightweight, flatpack furniture without the Allen keys:
"Our patented system allows you to assemble sturdy modern furniture in less than 60 seconds NO TOOLS REQUIRED!" Uyeda writes. "It's made in the USA out of sustainably minded materials like 100% recycled HDPE plastic and FSC certified plywood from our friends @purebond."
At press time Hoek Home's website had a "get notified" link and little else, but their Instagram has a few teaser photos.
also what is the point of "flat-pack" if the legs are just stuck on the back of the table? Wouldn't a hinge-and-latch system also do the same job and use waaaaaay less material? I'm not seeing the point of a huge molded plastic underside just to "hold the legs"....
It's made from recycled parts, but how easy is it to recycle the table?? Looks like you've bonded a giant piece of molded plastic to the bottom of a tabletop...... if the table breaks does the whole thing go in the garbage?
Rain Noe
I'm a lapsed industrial designer. I was born in NYC and figured I'd die there, but a few years ago I abandoned New York to live on a farm in the countryside with my wife. We have six dogs.


text:
2021 BMW M2 CS
The track-focused, go-faster M2 is here to make us forget about the M4
by Ciprian Florea, on December 18, 2019, 12:00
2022 Wiesmann MF 6
The neo-retro coupe returns with revised styling and a BMW M5-sourced engine
The 2020 BMW M2 CS Dethrones the M2 Competition In ALMOST Every Way
We'd Like to Say You Can Have Your Cake and Eat it Too, But the M2 CS Isn't Built That Way
by Robert Moore, on November 5, 2019, 08:00
2019 Lexus LF-30 Electrified Concept
Wow. Just wow, Lexus!
by Tudor Rus, on October 23, 2019, 12:00
The 10 Best Cars You Can Buy at the 2019 Monterey Car Week
A treasure trove of classic cars will test the limits of your spending powers
by Kirby Garlitos, on August 15, 2019, 23:00
Porsche 911 Speedster Quirks and Features
Astonishing Porsche 911 Speedster Is $184,000 More Expensive Than the 2019 Porsche 911 Carrera
by Safet Satara, on June 17, 2019, 22:55
1959 Cadillac Eldorado Biarritz Convertible
The running epitome of '50s excess
by Michael Fira, on February 20, 2019, 00:00
WTF? Strange, Crazy, Amazing, and Downright Stupid Things at SEMA 2018
Going deeper in the biggest aftermarket party of the year
by Matt M., on November 8, 2018, 11:00
Check Out All the Awesomeness We Found At SEMA 2018 With This Mega Picture Gallery
Tuned, tweaked, and totally amazing
Monterey Car Week Day 1 - Gallery
by Robert Moore, on August 23, 2018, 12:00
Show Car reviews
December 18, 2019 12:00 by Ciprian Florea
The 2021 BMW M2 CS is higher performance, limited-edition version of the M2. Unveiled at the 2019 Los Angeles Auto Show, the M2 CS follows in the footsteps of the M4 CS. A beefed-up version of the M2 Competition, the M2 CS boasts revised aerodynamic features, exclusive items inside the cabin, the same engine as the M4 CS. Although not quite as powerful as the M4 CS, the turbocharged inline-six powerplant packs as much oomph as the M4 Competition Package, rated at 444 horsepower. This makes it the most powerful 2 Series model ever created. Not only the quickest 2 Series ever, it's also quicker than the M4 and only marginally slower than the M4 CS. Let's find out more about that in the review below.
The 2021 Wiesmann MF 6 is an upcoming sports car built by the German company. A spiritual successor to the GT MF 5, the MF 6 is Wiesmann's first production model since it went bankrupt in 2014. Reopened in 2016, Wiesmann confirmed a new sports car for 2020. The vehicle is known as Project Gecko and the MF 6 name has yet to be confirmed, but it's a natural choice given that the new sports car is supposed to be an evolution of previous models. Wiesmann confirmed that the MF 6 will feature a BMW engine, just like its predecessors. A teaser video and sketches posted on the company's website reveal a familiar design that reminds of the MF 5.
October 23, 2019 12:00 by Tudor Rus
Lexus is not fooling around when it comes to electrification and is using Tokyo as a sampling experiment for the stunning LF-30 Electrified prototype. Did we mention stunning? The LF-30 looks otherworldly, has gullwing doors, and uses four in-wheel electric motors, a steer-by-wire-system, and a slew of autonomous driving technologies plus Lexus Advanced Posture Control. Stick around to find out everything you need to know about the Lexus LF-30 Electrified concept shown at the 2019 Tokyo Motor Show.
Audi's resident giant killer is getting the next-generation treatment
March 27, 2019 17:00 by Kirby Garlitos
The new Audi RS6 Avant has been spotted covered in partial camouflage while making the test rounds recently. The high-performance wagon model of the A6 sedan is the latest Audi model to be captured by spy photographers. If anything, this shows that Audi's test drivers have had their work cut out of them. The sporty station wagon was even spotted alongside the RS Q8 SUV.
Update 08/21/2019: The new Audi RS6 Avant has made its debut. We're busy updating this review now, but you can learn everything you need to know in our Audi RS6 Debut Article
February 20, 2019 00:00 by Michael Fira
The '50s were a strange decade: on the one hand, the danger of nuclear annihilation grew bigger and bigger as tensions between East and West reached new peaks and, on the other hand, automotive design also reached new peaks - peaks touched by the ultra-high fins of cars like the 1959 Cadillac Eldorado Biarritz Convertible, a true symbol of its time.
When you think of American cars from the '50s, depending on who you are, you're bound to first picture in your head one of three cars: the 1957 Chevy Bel Air, the 1955 Ford Thunderbird or the 1959 Eldorado Biarritz Convertible. The latter is most definitely the showboat, figuratively and literally, of a whole design trend; a trend that climaxed with this very car that, in a way, managed to kill off the trend altogether. The trend I'm talking about is of aeronautical inspiration, and it took off (pun intended) in the late '40s and early '50s thanks to concept cars like the Buick Le Sabre and a host of other GM Motorama creations.
No, those chrome-bathed fins didn't help the cars corner better nor did they aid the back end in sticking to the ground better - they were just for style, and 1959 was the year of all-out chrome and all-out fins. Some think those cars are everything that's wrong with American cars, others simply think they're flamboyant while others still adore them. I guess it's a matter of personal preference but, undoubtedly, the '59 Eldorado continues to turn heads 60 years later.
1970 Pontiac GTO Judge
The GTO from the last great year of muscle cars
December 24, 2018 06:00 by Michael Fira
The Pontiac GTO is widely regarded as one of the first muscle cars but, by 1970, even one of the stalwarts of the segment wasn't able to sell as it once did. Still, The GTO of 1970 remains a cornerstone example of muscle cars at their absolute peak.
The Pontiac GTO was born as a sportier version of the Tempest, aimed at a younger clientele. The car debuted in 1964 and by-passed in the process GM's policy that was limiting A-body intermediate models to a maximum engine capacity of 5.4-liters. As such, the original Tempest GTO came with the 6.4-liter V-8 that was also used by the larger Bonneville and Catalina models.
By 1970, the GTO had lost most of its chromed trim, instead sporting an Endura polyurethane nose and aggressively flared fenders. Of the 40,149, GTOs built in 1970, only 3,797 were ordered with the Judge trim level that had been introduced the year before. Sales kept plummeting from then on thanks to ever-increasing insurance costs, stringent pollution-related rules, and regulations and a general shift in the market's interest from performance cars to economy cars just as the oil crisis hit.
Keep reading to learn more about the 1970 Pontiac GTO Judge
1958 Mercedes-Benz 190 SL
The more refined baby brother of the Mercedes 300 SL 'Gullwing'
November 9, 2018 09:00 by Michael Fira
The Mercedes-Benz 190 SL was the more laid-back version of the legendary 300 SL and, like its much more exclusive big brother, was a huge hit in the U.S., practically establishing the SL model in Mercedes' range for decades to come.
The 190 SL, like the 300 SL, was born out of a suggestion from U.S. executive and luxury foreign car importer Max Hoffman who thought that a less expensive but still exciting and luxurious version of the 300 SL would appeal to the U.S. clientele. He'd previously come up with the idea of the road-going 300 SL as well, reckoning that America's rich and famous would love to blitz down the country's infinite highways aboard a more friendly version of Mercedes-Benz's 1952 Le Mans winner, the W194 300 SL designed by Rudolf Uhlenhaut.
Due to Hoffman's significant success as the Mercedes importer, the Stuttgart-based company decided to follow suit on his bold ideas and debuted prototypes of the two SLs at the 1954 New York International Motor Sports Show in February of that year.
Unlike the 300 SL, for which a purpose-built tubular spaceframe chassis was created, the 190 SL exhibited a tweaked version of the Mercedes-Benz 180's underpinnings. As such, it received the W121 nomenclature with the sedan known as the W120.
Keep reading to learn more about the 1958 Mercedes-Benz 190 SL
1966 Shelby Cobra 427 Super Snake
The Cobra to end all Cobras!
August 13, 2018 14:00 by Ciprian Florea
One of the most iconic American cars of all time, the Shelby Cobra, came to be in 1962 when Carroll Shelby combined Ford-made V-8 engines with British-designed AC Ace bodies. Although the Ace was fairly old and close to discontinuation in 1962, it's lightweight structure helped Shelby create one of the greatest American sports cars. Built until 1968 in various road-legal and race-spec configurations, the Cobra reached its performance peak when the Super Snake was launched in 1966. Called the "Cobra to end all Cobras," the Super Snake is the rarest of the bunch, and it still holds the title for the most expensive American car sold at auction.
"When I built this dual supercharged 427 Cobra in 1966, I wanted it to be the fastest, meanest car on the road," Shelby told Barrett-Jackson in 2007 when the roadster was auctioned for its record price. "Forty years later, it will still kick the tail of just about anything in the world. It's the fastest street legal Cobra I've ever owned."
Let's find out more about this tremendous classic in the review below.
Continue reading to learn more about the Shelby Cobra 427 Super Snake.
Bentley Continental 24 Special Edition
Limited edition Continental Supersports celebrates its involvement in the 24 Hours of Nürburgring
May 24, 2017 12:00 by Kirby Garlitos
Rolls-Royce may have grabbed the headlines in recent weeks with all the special edition models it's been unveiling, but rival Bentley is proving itself to be up-to-the-task with the release of its own special edition model. It's called the Bentley Continental 24 and it's a tribute to Bentley Motorsport's entry to the Nürburgring 24 Hours where it hopes to build off of the success it's had in the last two years since returning to one of the world's most grueling endurance races.
The special edition Continental is based on the range-topping Supersports variants. While it doesn't have any engine enhancements to speak of, its status as the fastest model Bentley has ever created more than speaks for itself. So, in the absence of upgrades to its massive 6.0-liter twin-turbo W-12 engine, the defining features of the Continental 24 rests on its exterior and interior where plenty of inspiration was taken from Bentley's motorsport themes. The car also holds the distinction of being one of the few limited edition models that have its own options to choose from, thus making it even more limited. Bentley also said it plans to cap production of the limited edition Continental 24 coupe to an obvious number of 24 units, with each model fetching a base price of €250,000 or about $280,000 based on current exchange rates.
Continue after the jump to read more about the Bentley Continental 24
Best Of The Best: Rolls-Royce Phantom Drophead Coupe Special Editions
Our tribute to some of the finest Rolls-Royce Phantom Drophead Coupe special edition models ever made
Ten years is a long time to be in the automotive market, but it's also a long enough time to be the subject of a few special edition models. That's the case with the Rolls-Royce Phantom Drophead Coupe, which enjoyed a remarkable run as one of the British luxury brand's most significant models.
First introduced in 2007, the Phantom Drophead Coupe has received its share of special edition models in the past decade. Some bordered on questionable while others captured our imaginations by not only looking the part of a true special edition – or in some cases, one-off models – but also giving us the kind of feels that special edition models are supposed to do. So ahead of the current-generation Rolls-Royce Phantom Drophead Coupe's eventual ride into the sunset later this year, we're paying homage to the hulking two-door luxury convertible by making a list of some of the most memorable special edition versions of this model. From there, tell us what you think of our choices or if we left a specific model out that you think should've made the list.
Continue after the jump to read the full story.
2017 BMW M3 GT2 S Hurricane by G-Power
Super popular sports coupe gets retrofitted with a monster tuning kit
Out of sight, out of mind. That's a prevailing theme among forgettable cars in the auto industry. But every so often, a car captivates the business to no end that people have a hard time keeping them away from their memory palaces. The previous-generation BMW M3 counts as one of those vehicles. At one point, Automobile even described it in reverence on the level of how a four-year-old treats Santa Claus. It's safe to say that the E92 BMW M3 will remain relevant for a long time and we can all look to the aftermarket tuning scene as a big contributor in keeping the last of the M3 coupes' spirit alive. G-Power counts itself in this group and it even has a new tuning kit for the "old" M3 that pops the coupe's power all the way up to a staggering 709 horsepower and 479 pound-feet of torque.
Officially, the German tuner calls its creation the M3 GT2 S Hurricane. It's a nod to the old Hurricane programs that the E92 M3 was treated to when it was making hay as one of the best performance coupes in the world. It's good to know then that even if the M3 coupe has been out of commission for three years now, owners of the model still have the opportunity to turn their prized M3s into certified rockets on four wheels. That's exactly what this new Hurricane program is all about. It may not be for everybody, but for M3 owners who prefer to tap into the coupe's full potential (with the aid of an engine swap), the GT2 S Hurricane program from G-Power is a good key that can help unlock it and more.
Continue after the jump to read more about the BMW M3 GT2 S Hurricane.
Bentley Bentayga Falconry by Mulliner
For those who prefer to satisfy the competitive itch of falconry in style and luxury
In its long and storied history, falconry has evolved from being an integral hunting method to an actual sport among the affluent. The practice itself dates back thousands of years and it's still very much alive today. In a lot of ways, the sport of falconry and British luxury automaker Bentley fall into the same social and economic spheres populated by the elite. So, it wasn't a shock when Bentley's Mulliner personalization division turned to falconry for its next creation. This here then is the Bentley Bentayga Falconry by Mulliner.
The one-off creation pays tribute to a sport that's defined for its exclusivity and the perceptions attached to it. Falconry isn't a sport for everyone, and just the same, the Bentayga Falconry isn't for everyone either. I imagine those who don't engage in the sport or the hunt will have very little use for the master flight station sitting in the trunk of the luxury SUV or the actual perches that come as part of the whole Mulliner falconry experience. If they do find use for these things, they're a lot more creative than I imagined them to be. But for those who do participate in falconry, Mulliner's creation serves as the perfect companion for an expedition. It also helps that Bentley used the Bentayga SUV for this project, because as awesome as the Mulsanne and Continental models are, I don't expect them to be completely in their element in the heart of the desert where the sport is usually "played."
Continue after the jump to read more about the Bentley Bentayga Falconry by Mulliner.
2017 Chevrolet Corvette Grand Sport Heritage Blue Special Edition
Only five models will make their way to the Japanese market
May 2, 2017 18:00 by Kirby Garlitos
Japan is home to one of the biggest auto industries in the world, so it's understandable why many automakers send special edition models to the Land of the Rising Sun. Recently, General Motors took its turn gifting Japanese customers with a special edition Chevrolet Corvette Grand Sport. The Vette is about as exclusive as they come, at least considering where it's headed. The limited-run sports car is officially billed as the Grand Sport Admiral Blue Heritage Edition, and like most exclusive cars that come to Japan, it comes with some nifty features that underscore its status as a true special edition.
Needless to say, the Chevrolet Corvette Grand Sport Admiral Blue Heritage Edition isn't going anywhere else in the world. In fact, even Japanese customers will have to fight over the special edition Corvette as reports indicate Chevrolet will only send over five units, each priced at ¥12.8 million. That converts to roughly $115,000 based on current exchange rates. By comparison, the Corvette Grand Sport starts at $66,445 here in the U.S., so Japanese customers will have to fork over nearly double to get their hands on one. Then again, it is an exclusive Corvette Grand Sport with unique details in the exterior and interior. Having a chance to own one means paying a premium for that opportunity.
Continue after the jump to read more about the Chevrolet Corvette Grand Sport Blue Heritage Special Edition.
Make Acura Alfa-Romeo Arctic Fox Aston-Martin Audi Bentley BMW Bugatti Buick Cadillac Chevrolet Chrysler Citroen Dodge Drako Ferrari Fiat Ford Geely Genesis GMC Honda Hyundai Infiniti Jaguar Jeep Kia Koenigsegg Lamborghini Lancia Land_Rover Lexus Lincoln Lotus Maserati Maybach Mazda Mclaren Mercedes Mini Mitsubishi Nissan Opel Pagani Peugeot Pontiac Porsche Ram Renault Rolls-Royce Skoda Smart Subaru Suzuki Tesla Toyota Volkswagen Volvo View All
Cars / Show Cars


text:
Q: Problems with PHP, preg_replace & regular expressions I'm trying to run this php command:
preg_replace($regexp, $replace, $text, $maxsingle);

Where the vars are:
$regexp = '/(?!(?:[^<\\[]+[>\\]]|[^>\\]]+<\\/a>))\\b(שלום)\\b/imsU';
$replace = '$1';
$text is a long post
$maxsingle = 3;

When the text I'm trying to match (in the above case "שלום") is in english everything works. However, when the text is Hebrew, it doesn't matches anything...
Any ideas how to make Hebrew work with preg_replace?
Thanks.

A: Try using the /u (utf-8) flag

redpajama_set_name: RedPajamaStackExchange


Henric works for the Institute for Innovation and Social Change, School of Business, Economics and Law at the University of Gothenburg in Sweden, as well as a CEO for a University Spin Out. He has experience from industry as CEO, have been board member of several companies and organizations, worked in technology transfer at Chalmers University, and holds a PhD in theoretical physics.
In addition to this Henric is active in innovation system networks on the national as well as on the international level including ASTP, and Swedish Network for Innovation and Tech Transfer Support (SNITTS).


text:
Bhushan Power & Steel Ltd
PNB reports over Rs 3,805 crore fraud by Bhushan Power & Steel Ltd
A fraud of Rs 3805.15 core has been reported by the bank to RBI, Punjab National Bank said.
MUMBAI: State-run lender Punjab National Bank on Saturday declared loan exposure of Rs 3805 crore to bankrupt Bhushan Power and Steel as fraudulent. In a notice to exchanges PNB said it had reported the fraud to the Reserve Bank of India on the basis of forensic audit findings.
"On the basis of Forensic Audit Investigation findings and CBI filing FIR, on suo moto basis, against the Company and its Directors, alleging diversion of funds from banking system, a fraud of Rs. 3805.15 core is being reported by Bank to RBI," Punjab National Bank said.
The Rs 3805 crore includes domestic exposure of Rs 3191.5 crore at the lender's Chandigarh Large Corporate branch, overseas exposure of Rs 345.74 crore at its Dubai branch and Rs.267.90 crore disbursed from its Hong Kong operations. The bank has already made provisions of Rs.1932.47 crore towards this exposure, it said.
"It has been observed that the company has misappropriated bank funds, manipulated books of accounts to raise funds from consortium lender banks," PNB said. "At present, the case is at NCLT which is in advance stage and the Bank expects good recovery in the account."
Banking / 7 hours ago
Banking / 10 hours ago


text:
Q: Column wise comparison between Spark Dataframe using Spark core Given Example, But looking for N number of columns comparison between two data frame as column-wise.
Given sample with 5 rows and 3 columns with EmpID as Primary key.
How can I do this comparison in Spark core?
InputDf1:
|EMPID |Dept     |  Salary
--------------------------
|1     |HR       |   100
|2     |IT       |   200
|3     |Finance  |   250
|4     |Accounts |   200
|5     |IT       |   150

InfputDF2:
|EMPID |Dept       |Salary
------------------------------
|1     |HR         | 100
|2     |IT         | 200
|3     |FIN        | 250
|4     |Accounts   | 150
|5     |IT         | 150

Expected Result DF:
|EMPID   |Dept      |Dept      |status      |Salary     |Salary   |status
--------------------------------------------------------------------
|1       |HR        |HR        | TRUE       | 100       | 100     | TRUE
|2       |IT        |IT        | TRUE       | 200       | 200     | TRUE
|3       |Finance   |FIN       | False      | 250       | 250     | TRUE
|4       |Accounts  |Accounts  | TRUE       | 200       | 150     | FALSE
|5       |IT        |IT        | TRUE       | 150       | 150     | TRUE

A: You can do a join using the EMPID and compare the resulting columns:
val result = df1.alias("df1").join(
    df2.alias("df2"), "EMPID"
).select(
    $"EMPID",
    $"df1.Dept", $"df2.Dept",
    ($"df1.Dept" === $"df2.Dept").as("status"),
    $"df1.Salary", $"df2.Salary",
    ($"df1.Salary" === $"df2.Salary").as("status")
)

result.show
+-----+--------+--------+------+------+------+------+
|EMPID|    Dept|    Dept|status|Salary|Salary|status|
+-----+--------+--------+------+------+------+------+
|    1|      HR|      HR|  true|   100|   100|  true|
|    2|      IT|      IT|  true|   200|   200|  true|
|    3| Finance|     FIN| false|   250|   250|  true|
|    4|Accounts|Accounts|  true|   200|   150| false|
|    5|      IT|      IT|  true|   150|   150|  true|
+-----+--------+--------+------+------+------+------+

Note that you may wish to rename the columns because duplicate column names are not possible to query in the future.

A: You can use join and then iterate over df.columns to select the desired output columns :
val df_final = df1.alias("df1")
  .join(df2.alias("df2"), "EMPID")
  .select(
      Seq(col("EMPID")) ++
      df1.columns.filter(_ != "EMPID")
        .flatMap(c =>
          Seq(
            col(s"df1.$c").as(s"df1_$c"),
            col(s"df2.$c").as(s"df2_$c"),
            (col(s"df1.$c") === col(s"df2.$c")).as(s"status_$c")
          )
      ): _*
)

df_final.show

//+-----+--------+--------+-----------+----------+----------+-------------+
//|EMPID|df1_Dept|df2_Dept|status_Dept|df1_Salary|df2_Salary|status_Salary|
//+-----+--------+--------+-----------+----------+----------+-------------+
//|    1|      HR|      HR|       true|       100|       100|         true|
//|    2|      IT|      IT|       true|       200|       200|         true|
//|    3| Finance|     FIN|      false|       250|       250|         true|
//|    4|Accounts|Accounts|       true|       200|       150|        false|
//|    5|      IT|      IT|       true|       150|       150|         true|
//+-----+--------+--------+-----------+----------+----------+-------------+

A: You could also do this in a way below:
//Source data
val df = Seq((1,"HR",100),(2,"IT",200),(3,"Finance",250),(4,"Accounts",200),(5,"IT",150)).toDF("EMPID","Dept","Salary")
val df1 = Seq((1,"HR",100),(2,"IT",200),(3,"Fin",250),(4,"Accounts",150),(5,"IT",150)).toDF("EMPID","Dept","Salary")

//joins and other operations
val finalDF = df.as("d").join(df1.as("d1"),Seq("EMPID"),"inner")
.withColumn("DeptStatus",$"d.Dept" === $"d1.Dept")
.withColumn("Salarystatus",$"d.Salary" === $"d1.Salary")
.selectExpr("EMPID","d.Dept","d1.Dept","DeptStatus as
Status","d.Salary","d1.Salary","SalaryStatus as Status")
display(finalDF)

You can see the output as below:


text:
sudo /bin/date +%H:%M:%S > /home/$1/install.progress.txt
echo "ooooo      TOMCAT INSTALL      ooooo" >> /home/$1/install.progress.txt

echo "Initial Tomcat setup" >> /home/$1/install.progress.txt

# Install Apache2, Tomcat7 and mod-jk packages on an updated OS image
sudo apt update
sudo apt upgrade -y
sudo apt-get install -y apache2
sudo apt-get install -y tomcat7
sudo apt-get install -y tomcat7-admin
sudo apt-get install -y libapache2-mod-jk

# Uncomment the Connector port="8009" line
sudo cp /etc/tomcat7/server.xml /etc/tomcat7/ORIG_server.xml
sudo sed -i '/Connector on port 8009 -->/{n;d}' /etc/tomcat7/server.xml
sudo sed -i '/protocol=\"AJP\/1.3\" redirectPort=\"8443\"/{n;d}' /etc/tomcat7/server.xml

# Create a new JkWorkers workers.propeties file
sudo echo "# Define 1 real worker using ajp13" > /etc/apache2/workers.properties
sudo echo "worker.list=worker1" >> /etc/apache2/workers.properties
sudo echo "worker.worker1.type=ajp13" >> /etc/apache2/workers.properties
sudo echo "worker.worker1.host=localhost" >> /etc/apache2/workers.properties
sudo echo "worker.worker1.port=8009" >> /etc/apache2/workers.properties

# Point to the newly created above JkWorkers file
sudo cp /etc/apache2/mods-available/jk.conf /etc/apache2/mods-available/ORIG_jk.conf
sudo sed -i 's,/etc/libapache2-mod-jk/workers.properties,/etc/apache2/workers.properties,g' /etc/apache2/mods-available/jk.conf

# Specify the mod-jk worker
sudo cp /etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-enabled/ORIG_000-default.conf
sudo sed -i 's,</VirtualHost>,JkMount /* worker1\n</VirtualHost>,g' /etc/apache2/sites-enabled/000-default.conf

# Create a link to the Tomcat manager
cd /var/lib/tomcat7/webapps
sudo ln -s /usr/share/tomcat7-admin/manager manager

# Update the permissions on the Tomcat Webapps and install directory
sudo chown -R tomcat7.tomcat7 /var/lib/tomcat7/webapps
sudo chown tomcat7.tomcat7 /usr/share/tomcat7

# Change the default Tomcat umask to be 002 to enable owner and group access
sudo cp /etc/init.d/tomcat7 /etc/init.d/ORIG_tomcat7
sudo sed -i 's,umask 022,umask 002,g' /etc/init.d/tomcat7

# Restart the tomcat7 and apache2 services
sudo systemctl daemon-reload
sudo /etc/init.d/tomcat7 restart
sudo /etc/init.d/apache2 restart

echo "Done." >> /home/$1/install.progress.txt
sudo /bin/date +%H:%M:%S >> /home/$1/install.progress.txt

echo "Configuring Tomcat manager" >> /home/$1/install.progress.txt

# Setup permissions for the Tomcat manager
sudo mv /etc/tomcat7/tomcat-users.xml /etc/tomcat7/ORIG_tomcat-users.xml
sudo echo "<?xml version='1.0' encoding='utf-8'?>" >> /tmp/tomcat-users.xml
sudo echo "<tomcat-users>" >> /tmp/tomcat-users.xml
sudo echo "<role rolename=\"tomcat\"/>" >> /tmp/tomcat-users.xml
sudo echo "<role rolename=\"manager-script\"/>" >> /tmp/tomcat-users.xml
sudo echo "<role rolename=\"manager-gui\"/>" >> /tmp/tomcat-users.xml
sudo echo "<role rolename=\"manager\"/>" >> /tmp/tomcat-users.xml
sudo echo "<role rolename=\"admin-gui\"/>" >> /tmp/tomcat-users.xml
sudo echo "<user username=\"tomcat\" password=\"tomcat\" roles=\"tomcat\"/>" >> /tmp/tomcat-users.xml
sudo echo "<user username=\"$2\" password=\"$3\" roles=\"tomcat,manager-script,manager-gui,admin-gui\"/>" >> /tmp/tomcat-users.xml
sudo echo "</tomcat-users>" >> /tmp/tomcat-users.xml
sudo mv /tmp/tomcat-users.xml /etc/tomcat7
sudo chown root.tomcat7 /etc/tomcat7/tomcat-users.xml
sudo chmod 0640 /etc/tomcat7/tomcat-users.xml

# Restart the tomcat7 and apache2 services
sudo /etc/init.d/tomcat7 restart
sudo /etc/init.d/apache2 restart

echo "Done." >> /home/$1/install.progress.txt
sudo /bin/date +%H:%M:%S >> /home/$1/install.progress.txt

echo "Configuring SSH" >> /home/$1/install.progress.txt

# Change group of user to same as Tomcat 7
sudo usermod -g tomcat7 $1

# Change the default SSH umask to be 002 to enable owner and group access
sudo cp /etc/pam.d/sshd /etc/pam.d/ORIG_sshd
sudo sed -i 's,common-session,common-session\nsession optional pam_umask.so umask=002,g' /etc/pam.d/sshd

# Reload and restart the SSHD service
sudo systemctl daemon-reload
sudo service sshd restart

# Create an RSA public and private key for SSH
ssh-keygen -q -N $4 -f /home/$1/.ssh/id_rsa
cd /home/$1/.ssh
sudo cp id_rsa.pub authorized_keys
chown -R $1.tomcat7 .
chown -R $1.tomcat7 *
echo "SSH User name:  "$1 > /home/$1/vsts_ssh_info
echo "SSH passphrase: "$4 >> /home/$1/vsts_ssh_info
echo "SSH Private key:" >> /home/$1/vsts_ssh_info
cat id_rsa >> /home/$1/vsts_ssh_info
chown $1.tomcat7 /home/$1/vsts_ssh_info

echo "Done." >> /home/$1/install.progress.txt
sudo /bin/date +%H:%M:%S >> /home/$1/install.progress.txt

echo "Installing and Configuring FTP" >> /home/$1/install.progress.txt

# Install vsftpd
sudo apt-get install -y vsftpd

# Generate SSL self-signed certificate
echo US > /tmp/info.txt
echo NC >> /tmp/info.txt
echo Raleigh >> /tmp/info.txt
echo Microsoft >> /tmp/info.txt
echo Team Services >> /tmp/info.txt
echo $1  >> /tmp/info.txt
echo $1@  >> /tmp/info.txt
cat /tmp/info.txt | sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
sudo rm -f /tmp/info.txt

# Backup original and create a new vsftp conf file
sudo cp /etc/vsftpd.conf /etc/ORIG_vsftpd.conf
sudo echo "listen=NO" > /tmp/vsftpd.conf
sudo echo "listen_ipv6=YES" >> /tmp/vsftpd.conf
sudo echo "anonymous_enable=NO" >> /tmp/vsftpd.conf
sudo echo "local_enable=YES" >> /tmp/vsftpd.conf
sudo echo "write_enable=YES" >> /tmp/vsftpd.conf
sudo echo "local_umask=002 # this is different than the default 022" >> /tmp/vsftpd.conf
sudo echo "dirmessage_enable=YES" >> /tmp/vsftpd.conf
sudo echo "use_localtime=YES" >> /tmp/vsftpd.conf
sudo echo "xferlog_enable=YES" >> /tmp/vsftpd.conf
sudo echo "connect_from_port_20=YES" >> /tmp/vsftpd.conf
sudo echo "xferlog_file=/var/log/vsftpd.log" >> /tmp/vsftpd.conf
sudo echo "ls_recurse_enable=YES" >> /tmp/vsftpd.conf
sudo echo "secure_chroot_dir=/var/run/vsftpd/empty" >> /tmp/vsftpd.conf
sudo echo "pam_service_name=vsftpd" >> /tmp/vsftpd.conf
sudo echo "# ftps/ssl specific cofig stuff below this line" >> /tmp/vsftpd.conf
sudo echo "rsa_cert_file=/etc/ssl/private/vsftpd.pem" >> /tmp/vsftpd.conf
sudo echo "rsa_private_key_file=/etc/ssl/private/vsftpd.pem" >> /tmp/vsftpd.conf
sudo echo "ssl_enable=YES" >> /tmp/vsftpd.conf
sudo echo "allow_anon_ssl=NO" >> /tmp/vsftpd.conf
sudo echo "force_local_data_ssl=YES" >> /tmp/vsftpd.conf
sudo echo "force_local_logins_ssl=YES" >> /tmp/vsftpd.conf
sudo echo "ssl_tlsv1=YES" >> /tmp/vsftpd.conf
sudo echo "ssl_sslv2=NO" >> /tmp/vsftpd.conf
sudo echo "ssl_sslv3=NO" >> /tmp/vsftpd.conf
sudo echo "require_ssl_reuse=NO" >> /tmp/vsftpd.conf
sudo echo "ssl_ciphers=HIGH" >> /tmp/vsftpd.conf
sudo echo "debug_ssl=YES" >> /tmp/vsftpd.conf
sudo echo "pasv_enable=YES" >> /tmp/vsftpd.conf
sudo echo "pasv_address=`wget http://ipinfo.io/ip -qO -`" >> /tmp/vsftpd.conf
sudo echo "pasv_min_port=13450" >> /tmp/vsftpd.conf
sudo echo "pasv_max_port=13454" >> /tmp/vsftpd.conf
sudo mv /tmp/vsftpd.conf /etc

# Restart vsftp server
sudo service vsftpd restart

echo "ALL DONE!" >> /home/$1/install.progress.txt
sudo /bin/date +%H:%M:%S >> /home/$1/install.progress.txt

echo "These original files were saved in case you want to return to default settings:" >> /home/$1/install.progress.txt
sudo find /etc -name ORIG_* -print >> /home/$1/install.progress.txt

chown $1.tomcat7 /home/$1/install.progress.txt

redpajama_set_name: RedPajamaGithub


text:
Tag Archives: Forgotten History
Wet on Wet
Another drencher is coming (UPDATE: upons uns right now) and Folsom Lake is up seven feet in the last week, and from 17% capacity last January to %37 now. Yay water!
Lake Oroville now stands at 32 percent of capacity, while Lake Shasta is at just 31 percent. California will need a lot more rain and snow to break the drought.
But the recent rain has improved prospects for gold panners, said Brad Sankus, who was mining Sunday along the South Fork of the American River near the Salmon Falls Bridge.
"It's fantastic," Sankus said. "It's really moving stuff around. That's what we need for gold panning."
Gold? Yes, GOLD!
(**UPDATE: Wettest December in seven years to-date, on record. We're doin' good.)
In this Obamaconomy every bit helps… Reminds me of the Carter Era but without the weird and gaudy vehicles of AMC: the Gremlin and Hornet, and the terrarium Pacer. AMC was an exquisitely American company conglomerated from refrigerators and vehicular obsolescence, an automobile company formed by the 1954 merger of Nash-Kelvinator Corporation and Hudson Motor Car Company. They gave us the staid Rambler, and later the rakish Javelin, the blimpish Matador, and the hot-rod AMX. What do we have now by comparison? All those $3,000 Corollas that started coming in on the wave of Japanese Import-Invasion are settled in land-fills by now.
My dad bought a 6-cylinder Rambler station wagon with his meager Pastor's salary in '62, and we drove it down to Ensenada (which I barely remember, being only 4 or so) and then all the way across-country (when I was 5) to a Baptist Mission conference in Green Bay Wisconsin. Along the way I saw the Badlands of South Dakota and the faces on Mt. Rushmore – and other sights like the green Sinclair Dinosaur gas-stations. I remember Mom driving through the night in Nevada as we kids slept in back, and the sound of sprinting jackrabbits, drawn to the light like moths, hitting the undercarriage. *thump* *thump-thump* You don't stop for jackrabbits. We drove through a torrential Mid-West thunderstorm in Nebraska and saw a lightning bolt flash to the ground in the middle of a farmer's field, halfway between us in the car on the wet road and a small farmhouse. A plume of smoke arose as the crash of thunder filled the station wagon. Dad said something about, "Probably a small blob of glass out there," and drove on at the recommended 65mph speed-limit. I learned that 60mph was, "a mile a minute" and both my timekeeping and math skills advanced. We stopped at gas-stations with 10-¢ soda pop-dispenser, one where the bottles lay in a column of chilled air behind a tall, thin, glass-door, held back by metal yokes. You had to read the cap to choose between Coke, 7-Up, Root-Beer and Dr. Pepper, and then forcibly yank-out the soda you wanted after you heard the sound of the coin-drop. There were some weird flavors and mysterious brands back then too. On hot days and without a dime, sometimes we just opened the thin door and stood in the chill breeze of the machine.
My favorite was 7-Up, but a few years later when we were overseas there was only Coke and Fanta Orange. There was no root-beer except what might be made by local soda-pop entrepreneurs. Locals made soda from tap-water and local flavors, colored with fluorescent dyes and bottled with bottle-caps. Hand-bottling technology hasn't changed since the Gold Rush days and you just need fizzy water, a lever, and the expensive part: caps. Sometimes the local pop-caps were picked-up off the ground re-used since that was an expensive bit of formed metal. At small shops selling "Coke" you also had to check and see if the bottles were re-used and that the cap was un-bent, because in a miserably poor country and an effort to save money and make a bit more, people would simply mix up their own batch of fizzy-brown stuff for sale. There were no sanitation or hygienic standards as such, or health inspectors – except for the Big Ugly-American Company Coca-Cola that also made Fanta. Drinking anything bottled besides that stuff could set-back your Typhoid-Cholera booster shot a ways and have you lying down puking your guts into a basket in between running to the bathroom with convulsive diarrhea. Also no using the ice or drinking iced-beverages – you didn't know where that water came from, and in a miserably poor country with incredibly polite and friendly people, none of them wanted to offend you, so you would always be assured and re-assured by vendors and servers that everything was "pukka and top-notch." Good times. (Various UPDATES.)
Tagged Biological Warfare, Forgotten History, Mystery of Sanitation, Old-School Old-School stuff


text:
RSpec.describe RuboCop::Cop::Spbtv::MultipleValidation do
  subject(:cop) { described_class.new }

  it 'accepts single attribute validations' do
    inspect_source(cop, 'validates :name')
    expect(cop.offenses).to be_empty
  end

  it 'accepts single attribute validations with options' do
    inspect_source(cop, 'validates :name, presence: true')
    expect(cop.offenses).to be_empty
  end

  it 'autocorrect multiple attributes validation' do
    new_source = autocorrect_source(cop, 'validates :name, :age, presence: true')
    expect(new_source).to eq("validates :age, presence: true\nvalidates :name, presence: true")
  end
end


For anyone who was a friend of Venture Minimalists on Facebook, you are no longer! I've closed the friend account, and created an Org page. You can still follow us on FB by clicking "Like" on our new page!
Also, if interested in more pics than posted in the blog check out our Flickr.
In other news, here's our cabin with Awlgrip and non-skid.
Decks sanded, fared, and primed for Awlgrip as of Sunday. It looks like a different boat.


The English historian Edward Gibbon attributed the decline and fall of the once ubiquitous Roman Empire to the gradual, enervating loss of martial dedication and civic discipline among its citizenry. In a way, the Romans did not keep up the appearances required of an enduring civilization. Put simply, the slipping of standards led to the sinking of an empire.
One could argue much the same about the rise and fall of another once ubiquitous phenomenon of Western civilization, namely, hat wearing. A number of speculative theories have been posited attempting to explain the decline of hat wearing ranging from the rise of automobiles to the social fissures created in the 1960s by the Vietnam War and the baby boomer generation. The author of Hatless Jack addresses the popular notion that a young, dynamic and hatless JFK hammered in the final nail in the coffin of hat wearing. These are certainly plausible explanations but they all suffer from a severe lack of data, evidence and supporting material.
This article attempts to fill this evidentiary gap and may be the first application of "culturomics" (i.e. computational analysis of digitized texts) to menswear or fashion generally speaking. N-grams are sequences of text or speech, which, when combined with Google's digitization of millions of books between 1500 and 2008, provide a unique historical record over 500 years of human history across several different languages.
When the Google Ngram Viewer was released in 2010, the first n-gram analyses I generated were for my book, currently in progress, combining a practical guide and intellectual history of men's style (which I will likely split into two separate works).
I think the Ngram Viewer offers some very suggestive insights on the gradual but almost complete collapse of hat wearing. Analysis of n-grams are unlikely to establish causality in the scientific sense but it can help make sense of why something happened and the social and cultural context around the specific practice and concept behind the n-gram. In this case, I'm proposing to analyze the word "hat" as a means to explore, starting with the linguistic record, linkages to the social practice of hat wearing.
Hypothesis #1: Hat wearing can be correlated to specific historical periods.
I interpret the n-gram plot below to indicate three phases – bubble or boom years (1860-1900), a "golden age" (1900-1940) and a "golden decline" of hats (1940-1960). These correlate respectively to the Victorian-Edwardian era, World War I/Roaring Twenties and postwar US and Europe.
The question then becomes a matter of building a plausible theory of the social, cultural and economic drivers in each period which can explain why the word-stock of hats grew, peaked and declined in the three eras identified above.
Hypothesis #2: The decline of hat wearing may be correlated with the decline of the social concept and practice of being a gentleman.
At first blush, there doesn't appear to be any correlation between "hat" and "gentleman" in the n-gram plot below. But it is interesting to note the peaks and valleys in the usage of "gentleman" circa 1800-1820 and 1900-1920, suggesting again underlying linkages to historical events during those time periods. The fact that the word hat persists at a consistent rate over 200 years is also noteworthy, at least compared to the steady and absolute decline of gentleman in the digitized corpus.
Hypothesis #3: Events in popular culture reported by mass media can influence linguistic usage and the actual practice of hat wearing.
Below we see an interesting fluctuation in the frequency of texts mentioning Stetson hats. I surmise the peaks are generated by specific films, tv shows, celebrities or other events covered by media outlets during those time periods.
In order to make progress on this hypothesis, the n-gram analysis above needs to be augmented with actual hat production numbers.
Copyright © 2014 by Juhn Maing. All rights reserved.


He's an Italian Greyhound who belongs to one of our best friends, who's out of town on business this week.
And he thinks he and I have some special psychic connection, which he attempts to activate by sitting next to my desk and staring at me like some sort of deranged, obsessive serial killer.
It's a little disconcerting after a while.
He's freaking me out, man.
I've got a real soft spot for Greyhounds. Where they are raced, unless someone intervenes, they're just put down or put out on really crappy farms where they're barely maintained. My brother (a vet) regularly takes them in as part of an organization to save them.
Assuming they're healthy, they're used as blood donor dogs in the animal hospital until they can be adopted out. He's usually got one or two of them on hand at a time.
Nathan, I like greyhounds, too. There's a track here in Denver, so you see a lot of adopted retired dogs in town, and the rescue organizations work closely with the track to prevent abuse.
Jake is an Italian greyhound, though, so he's quite small. His miniaturization has given him an unfortunate bug-eyed quality, in spite of being beautiful in the lithe way of his larger cousins.
He's cute in that picture. ;) Is that Boogie I see behind him?
MWT, that's my Boogie. he outweighs Jake by at least 70 pounds.
That look is making me think of a cartoon character. For the life of me I can't think of which one.
Janiece, you have my sympathies on babysitting a neurotic bizzaro dog.
Mommy, the scary puppy is frightening me.
"I really gotta go outside now"
"This is your dog on drugs"
"Note to self, open mouth when barking."
He looks like one of those greeting card dogs that have the photoshopped bug eyes or cheesy grins - except there's no photoshopping there.
I think he's practicing his ESP - treat levitation - and failing.


These are two 9″x12″ abstract portraits of artist Frank Calloway, drawn and painted with pen, ink, markers, colored pencils, and watercolors. Dina Kerik's Deepwater Journal alerted me to the story of Frank and the reference image for the artworks.
I was inspired by his passion for drawing, which started when he was 86 years old. Frank Calloway turned 112 years old on July 2, 2008, and art continues to be a part his life. I also like the youthful quality of his drawings, and the consistency hints at a very mature, organized, and creatively patterned style.
High quality giclée prints of each portrait are available at ImageKind.


text:
Engine & Efficiency
HomeBlogGeneral issuesHow to Defog the Windshield an...
How to Defog the Windshield and Get Rid of Window Condensation?
by Philipp Bachowski
Fast Content Navigation +
4 Easy Steps to Defog Windshield Quickly
4 Steps for Preventing the Problem in the Future
Fogged windows in the car are a dangerous phenomenon that can occur in any car for one reason or another. Of course, the main problem of a fogged windshield or other windows is the moisture in the car interior. Interestingly, not all motorists know the causes of fogged windows in the car and ways to quickly eliminate them. Further, we will explain it, but first, it should be noted that you should not hesitate to solve this problem if the windows are fogging systematically.
Many people mistakenly believe that the windows may fog just when it is wet outside. In fact, even in warm dry weather, the windows may be completely covered with moisture, making it difficult for the driver to see. The more humidity outside, the more likely the problem will appear. One of the common car maintenance tips is a getting kept your windshield wipers in good condition. Also, in cold weather, the windows on the inside of the car may mist up due to condensation droplets, which appear when moisture settles on the cold glass. Below you can find 4 quick and easy steps which help you clean foggy car windows conveniently.
Turn on heating.
Turn on the air conditioning or climate control.
Direct airflow to the windshield.
Off an air circulation.
In most cases, if the glass is fogged, the 4 steps above will be enough. Let's try to find out the most common causes of this phenomenon and what to do to prevent the problem from occurring again.
1. Replace the cabin air filter.
The most common cause of such window fogging in a car is a dirty cabin air filter. It usually needs to be changed every 10,000 miles to keep it working well.
The reason is that a clogged cabin filter does not allow air in and moisture that collects in the cabin does not come out well. Also, when buying a new cabin air filter, it is worth telling which is the best to choose. It is worth paying attention to filters with activated carbon, they better protect against allergens and harmful chemical compounds.
Carry out the replacement you can usually do yourself, but you need to know where the cabin filter is located. It is often easy to change in the cabin, but in some cars, it is a little more difficult to do. If your car's service interval is reached, then you can wait a bit and have it replaced along with the scheduled service.
2. Correctly set the ventilation and heating of the cabin.
Make sure that the ventilation system and the cabin heating system are set correctly. In case of high air humidity and heavy fogging of windows, it is necessary to switch on ventilation on the highest power, directing air flows to the windshield.
Among other things, if your car is equipped with an air conditioner, it can be a great helper. For effective window defogging, air conditioning is crucial because it quickly removes excess moisture from the cabin and dries the air.
3. Penetration of moisture into the cabin.
This problem is more typical for used cars but also depends on the place and conditions of parking. As a rule, it happens in the fall and winter season, when motorists are most often faced with fogging of windows.
The reason is in violation of cabin moisture drainage through the drainage holes. They are in every car and most often located under the windshield.
The draining holes are used to carry out water and moisture and can become clogged with dirt and leaves from trees. Thus, the moisture is not properly vented to the outside but goes straight into the nearby ventilation system. So if you have foggy windows in your car, it's worth checking the drainage system under the hood right away.
4. Use sponges and wipes.
Moisture accumulated on the windows very often leaves traces and streaks that make it difficult to see through the window of the car. To make your windows as transparent as possible you should use clean sponges and microfiber cloths (towels). You can use them to easily clean your car windows and remove any streaks or stains. There are, also, some solutions that restrict windows fogging and helps to keep them clean.
We do an efforts to find, research and recommend the best products. So, we may receive commissions from purchases that you make after following the links in our product reviews.
5 Best Cabin Air Filters for Car: Review and Shopping Guide
Best Headlight Restoration Kits (2023) Review
The 7 Best Car Wash Shampoos in 2023: Complete Shopping Guide
The Best Leather Conditioners For Car (TOP 8 Review)
The Best LED Headlights For Cars (12 LED Bulbs Reviewed)
The Best Microfiber Towels in 2023 (Review & Buyer's Guide)
What is a Powertrain Warranty and What Does it Cover?
Brake Pad Replacement Cost & How To Save Money on the Repair
Heater Core: All You Need To Know
How Often to Rotate Tires on Passenger a...
Car Battery Lifespan: How Long Do It Las...
5 Knock Sensor Failure Symptoms and Cost...
Faulty Crankshaft Position Sensor: Ident...
Do You Really Need Brake Fluid Replaceme...
Latest TOP Products
Best Windshield Wipers and Wiper Blades Shortlisted in 2023
Garage, Tools & Equipment
Best Car Phone Mounts and Holders for Convenient Use in 2023
Best Truck Batteries For Price And Longevity
Best Electric Vehicle Chargers For Home (TOP Products Review and Buyer's Guide)
3 Best Shock Absorbers for Smooth and Precise Driving in 2023
Engine & Efficiency, Garage
Best Air Compressors For Home Garage Use in 2023 (Review)
The Best Brake Calipers For High-Performance Cars and General-Purpose Ones
The Best Car Buffers For Effective Polishing – Buyer's Guide
Car Care, Tools & Equipment
© 2023 Car Fix Book. All rights reserved.
For Latest News & Updates


Guidance on the implementation and interpretation of Directive 2004/39/EC on markets in financial instruments.
The services of the Commission have also published questions and answers about MiFID and some of its implementing acts. These do not cover the application or interpretation of legislative acts by EU countries.


text:
Q: Points duplicating when previewing layer I am trying to display a GeoPackage of points with OpenLayers from GeoServer; however when I try and render the map the points appear to be duplicated.
When I generate a CSV with Layer Preview in GeoServer, the points appear to be correct, but when I view the PNG or OpenLayers they appear to be duplicated in a repeating pattern, as shown in this image:

Why may this be the case? I have tried everything from disabling tile caching to changing the projection (I'm using ESPG:4326) but nothing seems to work.
EDIT:
Below is a sample of the CSV file exported from Layer Preview in GeoServer.
FID,geom,set,name
CigaretteCards.1,POINT (5271.757121028228 -2283.97272121377),FamousGunslingers,Frank Heck
CigaretteCards.2,POINT (5442.08821142518 -1988.5248326741105),FamousGunslingers,Otis Miller Boys
CigaretteCards.3,POINT (5150.946445957355 -1633.9873664265206),FamousGunslingers,Jack Hall Gang
CigaretteCards.4,POINT (7259.989834917378 -2317.2255604907045),FamousGunslingers,Butcher Brothers
CigaretteCards.5,POINT (6361.923945380633 -3788.005818581249),FamousGunslingers,Flaco Hernandez

A: The coordinates are clearly not in EPSG:4326, map wrapping is likely porting over the points that are beyond -180°/180° into the sane range.
I see two options:

*

*Give them a true projected CRS, e.g., EPSG:32632, and reconfigure the layer from scratch

*Disable map wrapping in the WMS settings


It's Lord Crispintine's Day, and Toby is set on Cleevil as his Crispintine, but after a gang of imps from the portal teach Toby to be a real "bad boy," he learns of their true plans.
The Adventures Of Puss In Boots was broadcast on ABC3 at Tuesday 12 February 2019, 17:40.
The Adventures Of Puss In Boots is a TV show on Australian national television from ABC3 with an average rating of 3.5 stars by TVCatchUpAustralia.com's visitors. We have 78 episodes of The Adventures Of Puss In Boots in our archive. The first episode of The Adventures Of Puss In Boots was broadcast in April, 2019. Did you miss an episode of The Adventures Of Puss In Boots but don't you wan't that to happen in the future? Please set an alarm and add The Adventures Of Puss In Boots to your favourites, so we can remind you by email when there's a new episode available to watch. Completely free: handy!