text:
Home / Wearables / iPhone, iPad, Watch, Mac Trade-in Values Lowered by Apple: Report
iPhone, iPad, Watch, Mac Trade-in Values Lowered by Apple: Report
Deep into Tech 25 days ago Wearables Leave a comment 0 Views
Apple has reportedly adjusted the trade-in values of multiple Apple devices including Apple Watch, iPad, iPhone, and Mac models. This means that customers will receive a lower amount of money when they trade their existing device for a new Apple product. The new price revision comes about two months ahead of the American tech giant's announcement of its new batch of gadgets. If the Cupertino company follows its usual release pattern, we can expect to see the next generation of Apple's devices — including new models for the iPhone, iPad, Mac, and Apple Watch models — hitting the shelves in the coming months.
Here are the updated and older iPhone trade-in values:
iPhone 12 Pro Max: Up to $600 (roughly Rs. 47,600), down from $650 (roughly Rs. 51,500)
iPhone 12 Pro: Up to $500 (roughly Rs. 39,600), down from $550 (roughly Rs. 43,600)
iPhone 12: Up to $400 (roughly Rs. 31,700), down from $420 (roughly Rs. 33,300)
iPhone 12 mini: Up to $300 (roughly Rs. 23,800), down from $320 (roughly Rs. 25,400)
2nd generation iPhone SE: Up to $140 (roughly Rs. 11,100), down from $150 (roughly Rs. 11,900)
iPhone 11 Pro Max: Up to $400 (roughly Rs. 31,700), down from $420(roughly Rs. 33,300)
iPhone XS Max: Up to $220 (roughly Rs. 17,500), down from $250 (roughly Rs. 19,800)
iPhone XS: Up to $170 (roughly Rs. 13,500), down from $200 (roughly Rs. 15,900)
iPhone XR: Up to $160, down from $200 (roughly Rs. 15,900)
iPhone X: Up to $150 (roughly Rs. 11,900), down from $170 (roughly Rs. 13,500)
iPhone 8 Plus: Up to $140 (roughly Rs. 11,100), down from $160 (roughly Rs. 12,700)
iPhone 8: Up to $90 (roughly Rs. 7,100), down from $100 (roughly Rs. 7,900)
iPhone 6s Plus: Up to $40 (roughly Rs. 3,200), down from $50 (roughly Rs. 4,000)
iPhone 6s: Up to $25 (roughly Rs. 2,000), down from $30 (roughly Rs. 2,4000)
Here are the updated trade-in values for the Apple Watch, iPad tablets, and Mac models:
Apple Watch SE: Up to $105 (roughly Rs. 8,300), down from $120 (roughly Rs. 9,500)
Apple Watch Series 5: Up to $115 (roughly Rs. 9,100), down from $120 (roughly Rs. 9,500)
Apple Watch Series 4: Up to $75 (roughly Rs. 6,000), down from $85 (roughly Rs. 6,800)
iPad Pro: Up to $555 (roughly Rs. 44,000), down from $655 (roughly Rs. 52,000)
iPad Air: Up to $275 (roughly Rs. 21,800), down from $290 (roughly Rs. 23,000)
iPad: Up to $180 (roughly Rs. 14,300), down from $190 (roughly Rs. 15,100)
iPad mini: Up to $185 (roughly Rs. 14,700), down from $200 (roughly Rs. 15,900)
iMac Pro: Up to $1,350 (roughly Rs. 1.07 lakh), down from $1,500 (roughly Rs. 1.18 lakh)
iMac: Up to $830 (roughly Rs. 65,800), down from $850 (roughly Rs. 67,400)
Mac Pro: Up to $1,800 (roughly Rs. 1.43 lakh), down from $2,000 (roughly Rs. 1.58 lakh)
Mac mini: Up to $400 (roughly Rs. 31,700), down from $450 (roughly Rs. 35,700)
Catch the latest from the Consumer Electronics Show on Gadgets 360, at our CES 2023 hub.
Oppo A97 5G Specifications, Price, Images Spotted on China Telecom Listing
Microsoft's Activision Buyout Deal Faces Probe From UK Antitrust Regulator
Previous Disney+ Hotstar January 2023: Taaza Khabar, The Menu, The Last of Us, and More
Next 5G to Contribute $450 Billion in Next 15 Years, Digitise Indian Economy, Boost Startup Ecosystem: Piyush Goyal
Samsung Galaxy Fit 3 Fitness Tracker Tipped to Launch in Second Half of 2022
Mensa Forays Into Smart Wearable Segment as It Acquires Pebble
Metaverse Technology Seeing Strong Early Pickup, At-Scale Adoption May Be a Decade Away: NASSCOM
Metaverse technology is seeing a strong early pickup, although at-scale adoption is likely to be ...

redpajama_set_name: RedPajamaCommonCrawl


Hi there! It's Kelly from Typically Simple and I am back with a recipe for one of my all-time favorite treats – Shamrock Shakes! As many of you know, Shamrock Shakes are only available for a short time each year at McDonald's however, this recipe is so super easy that you can make them right at home, any time of the year.
St. Patrick's Day is one of my absolute favorite holidays…in my book, it ranks up there with Christmas. That might be due to the fact that I come from a very Irish family plus I grew up in the Chicago area – a city that takes St. Patrick's Day quite seriously with parades, festivities, and dying the Chicago River green each year.
Along with eating my favorite meal, corned beef and potatoes, I also deck myself out in green clothes. I may or may not have a pair of green striped tights that I bought especially for St. Patrick's Day. The annual wearing of the green was also a lot of fun when I was teaching because we would hold a contest in my classroom to see who could wear the most green. All of the teachers enjoyed seeing how creative the kids would get with the color green and shamrocks. Then we would take a class vote to see who wore green the best. And the winner would receive a Shamrock Shake at lunch!
Little did I know at the time, just how easy it is to make a Shamrock Shake at home! After trying out a few different recipes, I came up with one that combined the best of the best. This recipe has just the right amount of mint flavor and milk shake consistency that will make you head back to the blender for seconds!
Put the ice cream, milk, mint extract, and food coloring into a blender and cover with the lid. Blend on high until all of the ingredients are mixed together really well and the consistency looks smooth.
I like to make thicker milk shakes, so I increased the ice cream to milk ratio just a tad. However, if you would like a thinner consistency, you can either decrease the amount of ice cream you add to the recipe, or increase the amount of milk.
Pour the blended milk shake into glasses, add some whipped cream and top off with green sprinkles and chocolate chips. Or you could drizzle some chocolate syrup on top to create a delicious mint chocolate shamrock shake!
As with any recipe that I share, there are lots of optional flavors and mix-ins for this shake. Not a fan of mint? You can still follow the recipe without adding any mint extract…or you could add some vanilla or chocolate flavoring instead. Love Shamrock Shakes, but would rather not make them green? No need to add the food coloring…it's just there in there to add some fun St. Patrick's Day color! But one thing I definitely recommend is keeping that big dollop of whipped cream on top!
Blend vanilla ice cream, milk, mint extract, and food coloring on high until smooth.
Pour into glasses and top with whipped cream.
Add sprinkles and chocolate chips to top or drizzle with chocolate syrup.
A yummy treat for St. Patrick's Day, this shamrock shake recipe is so easy to make at home! And it really does taste just like the real thing from McDonald's!
If you're looking for more fun treat ideas for St. Patrick's Day, check out our adorable Rainbow Licorice Treat Bags. These are such a cute idea and they're so simple to make!
This shake looks so festive! McDonald's mint shakes were always my dad's favorite. You know, I can just imagine you in your green striped tights! Thanks for sharing this recipe!


text:
Business | Hawaii News
Visitor industry looks to attract high schoolers
By Allison Schaefers aschaefers@staradvertiser.com
A visitor industry- supported workforce development program kicks off this week to encourage young people to pursue tourism careers, an important recruitment step at a time when the state's visitor industry is vying to attract candidates amid record unemployment lows. Read more
Accused attempted kidnapper, pedophile set to appear at court
Constitutional amendment seeks increased taxes for public schools
A visitor industry-supported workforce development program kicks off this week to encourage young people to pursue tourism careers, an important recruitment step at a time when the state's visitor industry is vying to attract candidates amid record unemployment lows.
The state's unemployment rate in February was 2.1 percent, the lowest in the nation. In February, Hawaii's largest source of jobs, the leisure and hospitality category, reported 127,300 jobs, a gain of 100 positions from February 2017. Filling those jobs, especially with Hawaii students who have experience, is harder than ever, said Julie Morikawa, founder and CEO of ClimbHI, which runs the LEI program, which stands for Leadership, Exploration and Inspiration.
"It's very important, especially at times of low unemployment, that we are showing our future generation all the tourism opportunities that are available throughout the islands. We need local students if we want our industry to stay unique and special," Morikawa said.
Morikawa, who returned to her native Hawaii to work in tourism after graduating from Cornell University, said she launched ClimbHI in 2011 because she felt a connection was lacking between high schools and the state's No. 1 industry.
George D. Szigeti, Hawaii Tourism Authority president and CEO, said the agency now provides $70,000 to the LEI program.
"The LEI program shows Hawaii teens the enormous range of career opportunities tourism can offer them. This program deserves HTA's support," Szigeti said.
Morikawa said generous support from HTA as well as businesses and volunteers has allowed ClimbHi to invite all public high school students in the state to this year's LEI program, which is expected to reach a thousand-student milestone, she said.
This year's event kicks off today on Maui at the Sheraton Maui where Maui Mayor Alan Arakawa will speak to students. Kauai Mayor Bernard Carvalho will speak Friday when the event travels to the Sheraton Kauai. On Monday, Gov. David Ige and first lady Dawn Amano-Ige as well as Jon Snook, Hawaiian Airlines executive vice president and chief operating officer, are expected to address students during the Oahu program at the Hawai'i Convention Center. The event takes place April 17-18 on Hawaii island at the Mauna Kea Beach Hotel.
LEI also provides leadership opportunities for about 100 local college students. Richard Dean Danao, a Hawaii Pacific University student who is assisting with the 2018 ClimbHI events, said the experience has been invaluable.
"I've gained a sense of accomplishment, a network with key people, and the opportunity to get my name out there since I'm at the point of graduating. It is knowledge I would not be able to gain anywhere else and that fueled my passion for the hospitality industry," Danao said in a statement.
Morikawa said there are plenty more LEI successes. For instance, Shawn Saito, sales manager at The Orchid Lei Co., is a former ClimbHI intern who now participates in the career fair portion of the LEI program.
"The LEI program changed my entire trajectory, not just in what classes I took in college or in selecting my major, but it shaped who I am from wanting to give back to my community and wanting to make the visitor experience the most enjoyable. I think it is such a rewarding experience to help people make memories that will last a lifetime," Saito said in a statement.


text:
Home News Articles
These are the Safety Precautions Six Flags Parks are Taking Upon Reopening
Face masks, temperature checks, and reduced admission are some of the safety precautions Six Flags Great Adventure is taking to keep you and your family safe.
By Sophia Martini March 5, 2021
Six Flags Great Adventure will reopen for the 2021 season on March 27 with reservations launching at 12pm on March 16. In accordance with Governor Murphy's opening guidelines for amusement parks, Six Flags Great Adventure began operating at reduced attendance levels. Both parks are gradually increasing attendance levels.
RELATED: Six Flags Great Adventure Announces HALLOWFEST Coming This Fall
Both parks are implementing extensive new safety and hygiene protocols, including new advanced technology systems to protect guests and employees. In order to manage attendance, guests must make online reservations to guarantee entry, and there will be staggered arrival times to minimize the exposure to other guests.
RELATED: Water Parks in the New York Area
"We have developed a comprehensive reopening safety plan that includes protocols designed by theme park and waterpark industry experts, along with best practices from top destination parks from around the world, which will allow guests to experience our parks in the safest way possible. This 'new normal' will be different in some ways, but we believe these additional measures are appropriate in the current environment," says Six Flags president and CEO Mike Spanos.
New health and safety protocols that comply with CDC and state guidelines will be implemented into the parks, including state-of-the-art thermal imaging for temperature checks, advanced security screening technology for touch-less bag checks, and mobile food orders. Guests must adhere to a new list of safety guidelines and requirements regarding:
Screening and temperature checks: Guests can expect contactless IR thermal imaging to screen temperatures. Individuals will also be asked if they have recently been exposed to or are experiencing symptoms of COVID-19
Face masks: All guests over the age of 2 will be required to wear face masks covering the nose and mouth. Face masks will be available for purchase at the front gate. Masks will not be required on waterslides, water attractions, or in pools.
Social distancing: There will be easy to identity distance marks in all park entry, ride, restroom, retail location and dining lines. Dining areas will be adjusted to allow space between parties. Guests will also be separated by empty rows and/or seats on all rides and attractions. Capacity at indoor venues will be reduced.
Sanitization and disinfecting: Team members will frequently sanitize and disinfect high-touch points. Multiple hand-washing and alcohol-based hand-sanitizer stations will be located throughout the park.
Food preparation and service: Mobile food ordering will be implemented to facilitate touchless transactions. Beverages will be served by attendants; any drink bottle refills will be served in a paper cup each time guests refill.
Online reservations: Six Flags will establish attendance caps that will be well below the park's theoretical capacity in order to allow for proper social distancing. All Members, Season Pass Holders and all guests with a single-day or group ticket will need to make a reservation at www.sixflags.com/reserve.
Life jackets: A limited number of complimentary lifejackets will be available upon request and will be sanitized after every guest use. However, families are encouraged to provide their own coastguard-approved lifejackets for children under 42 inches or for those who are not strong swimmers.
The parks' significant changes are designed to improve visitors overall park experience, while keeping guests and employees safe. Park officials ensure that the parks' reopening plan meets or exceeds the sanitization, hygiene, and social distanced guidelines issued by federal, state and local governments.
The park will also offer "mask break zones" in select locations to provide socially-distanced areas for guests who wish to temporarily remove their masks.
For more information about Six Flag Great Adventure's opening and to reserve tickets online, visit sixflags.com/greatadventure. The park has also included a safety video and guide, found here, to encourage safety protocols for park re-opening.
RELATED: Sun Exposure and Sunscreen Guide for Kids
More News Articles:
What Is Open in NYC on Christmas Day?
Christmas day is a wonderful time to explore the attractions of the New York City area. Here's what is open in NYC on Christmas day this year.
LuminoCity Festival of Holiday Lights is Coming to Manhasset Nov. 12
LuminoCity Holiday Lights Festival is returning for the 2021 season on Nov. 12 and will be on display through Jan. 9, 2022.
Author: Sophia Martini, a former intern of NYMetroParents, is a senior at Syracuse University. She is a true citizen of the world, as she has traveled to five continents, lived in Madrid, and has friends throughout the globe. During her free time, you will find her in the sun, dancing, and sipping some of her favorite rosé. See More


The image of Gold Area Rugs was published on December 12, 2018 at 2:58 am. It is uploaded on the Rug category. Gold Area Rugs is tagged with Gold Area Rugs, Gold, Area, Rugs..
Whether you are currently holding a big oil-painting or even a small produce midst of the part must be at eye-level. In case you have a sizable piece of graphics you can look at to-use it. When clinging photos or designs behind the counter always fit up inches above the desk. Suspend photographs in rounded sets of rectangles or mathematical triangles to include attention.
Attention can be added by utilizing pads as well. Utilize styles and many towards the top of assorted hues and the bed designs while still preserving style and along with while in the layout of the bedroom in general. Don't feel you have to purchase everything for the bedroom at the same time. Look around to get the accent that is ideal to fit the Gold Area Rugs. You'll find deals at consignment merchants flea markets and yard sales.
Do not ignore lighting, when accessorizing your bedroom. You intend to develop when acquiring lamps be sure to acquire people that go with the beach-theme. For beach type illumination try using clear glass lamps stuffed with figural light-house fashioned bulbs or shells. The carpet could determine an area and move your bedroom together. Resting furniture totally to the carpet to get a hotter consequence. Merely use rugs that go together with your beach accessories.


text:
Q: Find all Git Bare and non-Bare repositories? I want to loop over all the directories and find out all the git repositories (both Bare and non-Bare). However, I need to identify which one is Bare and which one is non-Bare so that I can run different operations on them.
I checked Check if current directory is a Git repository and How do I check if a repository is bare?.
The script I came up with is:
#!/bin/bash

for d in $(find /media/ismail/8TBRaid0/ABC -path '*/.git*' -prune -o -print -type d); do

 if git --git-dir=$d rev-parse --is-inside-work-tree > /dev/null 2>&1; then

 echo ${d} is a non-Bare Repository

 elif git --git-dir=$d rev-parse --is-bare-repository > /dev/null 2>&1; then

 echo ${d} is a is a Bare Repository

 fi

done

The output I am getting is:
/media/ismail/8TBRaid0/ABC/d is a non-Bare Repository
/media/ismail/8TBRaid0/ABC/e is a non-Bare Repository

The problem is:
ABC has 5 directories.
ABC% ls -la
total 28
drwxrwxr-x  7 ismail ismail 4096 Jun  9 16:44 .
drwxr--r-- 16 ismail ismail 4096 Jun  9 16:44 ..
drwxrwxr-x  3 ismail ismail 4096 Jun  9 16:44 a
drwxrwxr-x  3 ismail ismail 4096 Jun  9 16:44 b
drwxrwxr-x  3 ismail ismail 4096 Jun  9 16:44 c
drwxrwxr-x  7 ismail ismail 4096 Jun  9 16:44 d
drwxrwxr-x  7 ismail ismail 4096 Jun  9 16:44 e

Here a,b,c are non-Bare Repositories with .git directory. And d,e are Bare Repositories without .git directory.
So, the output I am getting is definitely wrong. What i need for my case is:
a is a non-Bare Repository
b is a non-Bare Repository
c is a non-Bare Repository
d is a Bare Repository
e is a Bare Repository

How can I get the expected result?
Update 1:
My directory structure is actually deeper and scattered. The structure I gave above is as an example. For example: the structure can be:
.
├── 1
│   └── a
├── 2
│   └── 3
│       ├── b
│       └── e
│           ├── branches
│           ├── config
│           ├── description
│           ├── HEAD
│           ├── hooks
│           │   ├── applypatch-msg.sample
│           │   ├── commit-msg.sample
│           │   ├── fsmonitor-watchman.sample
│           │   ├── post-update.sample
│           │   ├── pre-applypatch.sample
│           │   ├── pre-commit.sample
│           │   ├── pre-merge-commit.sample
│           │   ├── prepare-commit-msg.sample
│           │   ├── pre-push.sample
│           │   ├── pre-rebase.sample
│           │   ├── pre-receive.sample
│           │   └── update.sample
│           ├── info
│           │   └── exclude
│           ├── objects
│           │   ├── info
│           │   └── pack
│           └── refs
│               ├── heads
│               └── tags
├── c
├── d
│   ├── branches
│   ├── config
│   ├── description
│   ├── HEAD
│   ├── hooks
│   │   ├── applypatch-msg.sample
│   │   ├── commit-msg.sample
│   │   ├── fsmonitor-watchman.sample
│   │   ├── post-update.sample
│   │   ├── pre-applypatch.sample
│   │   ├── pre-commit.sample
│   │   ├── pre-merge-commit.sample
│   │   ├── prepare-commit-msg.sample
│   │   ├── pre-push.sample
│   │   ├── pre-rebase.sample
│   │   ├── pre-receive.sample
│   │   └── update.sample
│   ├── info
│   │   └── exclude
│   ├── objects
│   │   ├── info
│   │   └── pack
│   └── refs
│       ├── heads
│       └── tags
└── f
    └── ADOC Document.adoc

A: For starters, look at the output of your find command:
$ find ABC -path '*/.git*' -prune -o -print -type d
ABC
ABC/a
ABC/b
ABC/c
ABC/d
ABC/d/branches
ABC/d/hooks
ABC/d/hooks/applypatch-msg.sample
ABC/d/hooks/commit-msg.sample
ABC/d/hooks/post-update.sample
[...]

That's not really useful at all. If everything contained in .../ABC is a git repository, you can just get a list of directories:
$ find ABC/* -maxdepth 0 -type d
ABC/a
ABC/b
ABC/c
ABC/d
ABC/e

That's going to be much easier to work with. We can then iterate over those results like this:
find ABC/* -maxdepth 0 -type d |
while read dir; do
  # note that --is-bare-repository returns results as a string
  # not an exit code
  is_bare=$(git -C $dir rev-parse --is-bare-repository 2> /dev/null)

  if [ "$is_bare" = true ]; then
    echo "$dir is a bare repository"
  else
    echo "$dir is not a bare repository"
  fi
done

Running that code produces:
ABC/a is not a bare repository
ABC/b is not a bare repository
ABC/c is not a bare repository
ABC/d is a bare repository
ABC/e is a bare repository

If some things in ABC may not be git repositories, we can add an
additional clause inside the while loop:
  ...
  is_bare=$(git -C $dir rev-parse --is-bare-repository 2> /dev/null)
  if [ $? -ne 0 ]; then
    echo "$dir is not a git repository"
    continue
  fi
  ...

Update
If your directory structure is more varied, we can find git repositories by looking for a file named HEAD:
$ find ABC -name HEAD -printf "%h\n"
ABC/c/.git
ABC/1/a/.git
ABC/1/d
ABC/2/b/.git
ABC/2/e

That means we can rewrite the script to look like:
find ABC -name HEAD -printf "%h\n" |
while read dir; do
  if [[ $dir =~ /\.git/ ]]; then
    dir=${dir%/.*}
  fi

  # note that --is-bare-repository returns results as a string
  # not an exit code
  is_bare=$(git -C "$dir" rev-parse --is-bare-repository 2> /dev/null)

  if [[ $is_bare = true ]]; then
    echo "$dir is a bare repository"
  else
    echo "$dir is not a bare repository"
  fi
done

Note that I'm using some bash-specific syntax here to make our lives easier, but that shouldn't be a problem in most environments.
Given this directory tree:
ABC/
├── 1
│   ├── a   # non-bare repository
│   └── d   # bare repository
├── 2
│   ├── b   # non-bare repository
│   └── e   # bare repository
├── c       # non-bare repository
└── z       # not a repository

The script above produces:
ABC/c is not a bare repository
ABC/1/a is not a bare repository
ABC/1/d is a bare repository
ABC/2/b is not a bare repository
ABC/2/e is a bare repository

A: You can probably do all this with a bit of find+bash machinery:
$ cat myScript
#!/usr/bin/env bash

iiwt() {
  [[ $(git -C "$1" rev-parse --is-inside-work-tree 2> /dev/null) == "true" ]] &&
  echo "$1 is a non-Bare Repository"
}

ibr() {
  [[ $(git -C "$1" rev-parse --is-bare-repository 2> /dev/null) == "true" ]] &&
  echo "$1 is a Bare Repository"
}

export -f iiwt ibr

find . -type d -exec bash -c 'iiwt "$1" || ibr "$1"' _ {} \; -prune

Explanations:

*

*The iiwt helper function tests if its parameter is inside a working tree. If yes it prints a message and its exit status is true. Else its exit status is false.

*The ibr helper function tests if its parameter is inside a bare repository. If yes it prints a message and its exit status is true. Else its exit status is false.

*The find command searches all directories and executes the bash script iiwt "$1" || ibr "$1" on each of them. If the exit status is true find stops the recursion here (this is what -prune is for). Else it recurses inside.
Demo:
$ mkdir -p foobar/bar foobar/a/b/c; cd foobar
$ git init --bare foo.git
$ git clone foo.git
$ git init --bare bar/foo.git
$ git clone bar/foo.git bar/foo
$ find . -type d
.
./a
./a/b
./a/b/c
./foo.git
./foo.git/refs
./foo.git/refs/heads
...
./foo/.git/refs/heads
./foo/.git/refs/tags
./foo/.git/branches
$ myScript .
./foo is a non-Bare Repository
./foo.git is a Bare Repository
./bar/foo.git is a Bare Repository
./bar/foo is a non-Bare Repository

Note that we could also use one single helper function:
$ cat myScript
#!/usr/bin/env bash

hlp() {
  if [[ $(git -C "$1" rev-parse --is-inside-work-tree 2> /dev/null) == "true" ]]; then
    echo "$1 is a non-Bare Repository"
  elif [[ $(git -C "$1" rev-parse --is-bare-repository 2> /dev/null) == "true" ]]; then
    echo "$1 is a Bare Repository"
  else
    return 1
  fi
}

export -f hlp

find . -type d -exec bash -c 'hlp "$1"' _ {} \; -prune

redpajama_set_name: RedPajamaStackExchange


text:
Игорь Михайлович Калугин (, с. Волчанка, Омская область, РСФСР, СССР — , Москва, Российская Федерация) — советский и российский военачальник, военный лётчик. Командующий Дальней авиацией (1990—1997), генерал-полковник авиации (24.10.1991).

Биография
В 1955 году поступил в Омское военное авиационное училище лётчиков. После его окончания в 1959 году проходил службу в частях Дальней авиации на должностях правого лётчика — помощника командира корабля и командира корабля.

С 1967 года — слушатель командного факультета Военно-воздушной академии имени Ю. А. Гагарина.

После окончания академии в 1970 году командовал отрядом, эскадрильей, полком и 73 тяжелой бомбардировочной авиационной дивизией стратегических бомбардировщиков.

После окончания в 1984 году Военной академии Генерального штаба Вооружённых Сил имени К. Е. Ворошилова проходил службу заместителем командующего 37-й ВА ВГК (СН) по боевой подготовке, командующим 30-й ВА ВГК (1985—1989), первым заместителем командующего Дальней авиацией ВВС.

С ноября 1990 г. по ноябрь 1997 г. — командующий Дальней авиацией ВВС.

После увольнения в запас в 1997 году работал консультантом командующего Дальней авиацией ВВС.

Скончался 29 июня 2009 года. Похоронен на Троекуровском кладбище.

Награды и звания
 Орден "За службу Родине в Вооружённых Силах СССР" II степени
 Орден "За службу Родине в Вооружённых Силах СССР" III степени
 Медали
 Заслуженный военный лётчик СССР (1984).

Источники
 http://www.redstar.ru/2009/07/01_07/1_07.html

Выпускники Омского военно-авиационного училища лётчиков
Выпускники Военно-воздушной академии имени Ю. А. Гагарина
Выпускники Военной академии Генерального штаба
Умершие в Москве
Командующие Дальней авиацией
Похороненные на Троекуровском кладбище
Делегаты XXVII съезда КПСС

redpajama_set_name: RedPajamaWikipedia


text:
(function() {
  (function(root) {
    (root.tome != null ? root.tome : root.tome = {}).version = '0.0.1';
    module.exports = root.tome;
  })(typeof global !== "undefined" && global !== null ? global : window);

}).call(this);

(function() {
  tome.Event = (function() {
    function Event(options) {
      var _ref, _ref1, _ref2;
      if (options == null) {
        options = {};
      }
      this.type = (_ref = options.type) != null ? _ref : 'UNKNOWN';
      this.data = (_ref1 = options.data) != null ? _ref1 : {};
      this.source = (_ref2 = options.source) != null ? _ref2 : {};
      this.stopped = false;
    }

    Event.prototype.stopPropagation = function() {
      this.stopped = true;
      return this;
    };

    return Event;

  })();

}).call(this);

(function() {
  var callEventHandlers,
    __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };

  tome.EventSource = (function() {
    function EventSource() {
      this.trigger = __bind(this.trigger, this);
      this.off = __bind(this.off, this);
      this.on = __bind(this.on, this);
      this.handlers = {};
    }

    EventSource.prototype.on = function(event_type, handler) {
      var _base;
      (_base = this.handlers)[event_type] || (_base[event_type] = collection([]));
      this.handlers[event_type].add(handler);
      return this;
    };

    EventSource.prototype.off = function(event_type, handler) {
      var _ref;
      if (handler == null) {
        handler = false;
      }
      if (handler) {
        this.handlers[event_type] = this.handlers[event_type].without(handler);
      }
      if (!handler || ((_ref = this.handlers[event_type]) != null ? _ref.isEmpty() : void 0)) {
        delete this.handlers[event_type];
      }
      return this;
    };

    EventSource.prototype.trigger = function(event_type, data) {
      var event;
      if (data == null) {
        data = {};
      }
      event = new tome.Event({
        type: event_type,
        data: data,
        source: this
      });
      if (this.handlers[event_type]) {
        callEventHandlers(event, this.handlers[event_type]);
      }
      return event;
    };

    return EventSource;

  })();

  callEventHandlers = function(event, handlers) {
    var handler, _i, _len, _ref;
    _ref = handlers.array();
    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      handler = _ref[_i];
      if (event.stopped) {
        return;
      }
      handler.call(event.source, event);
    }
  };

}).call(this);

(function() {
  var _, _s,
    __slice = [].slice;

  _ = require('lodash');

  _s = require('underscore.string');

  tome.Collection = (function() {
    var _this = this;

    function Collection(items) {
      var item, _i, _len;
      if (items == null) {
        items = [];
      }
      this.items = [];
      for (_i = 0, _len = items.length; _i < _len; _i++) {
        item = items[_i];
        if (item) {
          this.add(item);
        }
      }
    }

    Collection.prototype.add = function() {
      var item, items, _i, _len;
      items = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
      for (_i = 0, _len = items.length; _i < _len; _i++) {
        item = items[_i];
        if (item) {
          this.items.push(item);
        }
      }
      this.length = this.items.length;
      return this;
    };

    Collection.prototype.array = function() {
      var item, _i, _len, _ref, _results;
      _ref = this.items;
      _results = [];
      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
        item = _ref[_i];
        _results.push(item);
      }
      return _results;
    };

    Collection.LODASH_METHODS = _s.words("all any at each first last rest compact                           map reduce reduceRight find isEmpty pluck                           filter select reject size sample difference                           uniq intersection where without remove");

    Collection.LODASH_METHODS.forEach(function(method) {
      return Collection.prototype[method] = function() {
        var args, results;
        args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
        args.unshift(this.items);
        results = _[method].apply(_, args);
        if (_.isArray(results)) {
          return new Collection(results);
        } else {
          return results;
        }
      };
    });

    return Collection;

  }).call(this);

}).call(this);

(function() {
  var uuid,
    __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
    __hasProp = {}.hasOwnProperty,
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };

  uuid = require('node-uuid');

  tome.Entity = (function(_super) {
    __extends(Entity, _super);

    function Entity(options) {
      var _ref, _ref1;
      if (options == null) {
        options = {};
      }
      this.has = __bind(this.has, this);
      this.get = __bind(this.get, this);
      this.add = __bind(this.add, this);
      this.id = (_ref = options.id) != null ? _ref : uuid.v4();
      this.current_components = {};
      if ((_ref1 = options.components) != null) {
        _ref1.forEach(this.add);
      }
    }

    Entity.prototype.add = function(component) {
      return this.current_components[component.name] = component;
    };

    Entity.prototype.components = function() {
      return this.current_components;
    };

    Entity.prototype.get = function(component_name) {
      return this.current_components[component_name];
    };

    Entity.prototype.has = function(component_name) {
      var _ref;
      return (_ref = this.get(component_name)) !== null && _ref !== (void 0);
    };

    Entity.prototype.is = Entity.prototype.has;

    return Entity;

  })(tome.EventSource);

}).call(this);

(function() {
  var getName, setAttribute, _, _s,
    __hasProp = {}.hasOwnProperty,
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };

  _ = require('lodash');

  _s = require('underscore.string');

  tome.EntityComponent = (function(_super) {
    __extends(EntityComponent, _super);

    function EntityComponent(options) {
      var attr, v, _ref, _ref1, _ref2, _ref3;
      if (options == null) {
        options = {};
      }
      this.attrs = {};
      _ref2 = (_ref = (_ref1 = options.attributes) != null ? _ref1 : options.attrs) != null ? _ref : {};
      for (attr in _ref2) {
        v = _ref2[attr];
        this.set(attr, v);
      }
      this.name = (_ref3 = options.name) != null ? _ref3 : getName(this);
      if (this.accessible_attrs != null) {
        this.make_accessible(this.accessible_attrs);
      }
    }

    EntityComponent.prototype.attributes = function() {
      return this.attrs;
    };

    EntityComponent.prototype.entity = function(entity) {
      if (entity) {
        return this.entity = entity;
      } else {
        return entity;
      }
    };

    EntityComponent.prototype.get = function(attr_name) {
      return this.attrs[attr_name];
    };

    EntityComponent.prototype.has = function(attr_name) {
      var _ref;
      return (_ref = this.get(attr_name)) !== null && _ref !== (void 0);
    };

    EntityComponent.prototype.is = EntityComponent.prototype.has;

    EntityComponent.prototype.json = function() {
      return {
        name: this.name,
        attributes: this.attrs
      };
    };

    EntityComponent.prototype.jsonString = function() {
      return JSON.stringify(this.json());
    };

    EntityComponent.prototype.make_accessible = function(attr_names) {
      var _ref,
        _this = this;
      attr_names = (_ref = typeof attr_names.split === "function" ? attr_names.split(' ') : void 0) != null ? _ref : attr_names;
      return attr_names.forEach(function(attr_name) {
        return _this.constructor.prototype[attr_name] = function(value) {
          if (value) {
            _this.set(attr_name, value);
            return _this;
          } else {
            return _this.get(attr_name);
          }
        };
      });
    };

    EntityComponent.prototype.readOnly = function() {
      return new EntityComponent({
        attributes: _.cloneDeep(this.attrs)
      }).set({
        readonly: true
      });
    };

    EntityComponent.prototype.set = function(attr, val) {
      var attr_name;
      if (val == null) {
        val = null;
      }
      if (_.isObject(attr)) {
        for (attr_name in attr) {
          val = attr[attr_name];
          setAttribute(this.attrs, attr_name, val);
        }
      } else {
        setAttribute(this.attrs, attr, val);
      }
      return this;
    };

    return EntityComponent;

  })(tome.EventSource);

  getName = function(component) {
    return _s.underscored(component.constructor.name.replace(/component/i, ''));
  };

  setAttribute = function(attrs, attr, val) {
    if (attrs.readonly === true) {
      throw exception("Attempting to set " + attr + " for read-only component");
    }
    if (_.isFunction(val)) {
      val = typeof val === "function" ? val() : void 0;
    }
    if (val === (void 0) || val === null) {
      return delete attrs[attr];
    } else {
      return attrs[attr] = val;
    }
  };

}).call(this);

(function() {
  tome.EntityController = (function() {
    function EntityController() {}

    EntityController.prototype.update = function(entities, update_stats, game_state) {};

    EntityController.prototype.render = function(entities, update_stats, game_state) {};

    return EntityController;

  })();

}).call(this);

(function() {
  var _, _s,
    __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };

  _ = require('lodash');

  _s = require('underscore.string');

  tome.Game = (function() {
    var addState, setCurrentState;

    Game.prototype.states = {};

    Game.prototype.current_state = null;

    Game.prototype.stopped = true;

    function Game(states) {
      var name, options;
      if (states == null) {
        states = {};
      }
      this.update = __bind(this.update, this);
      this.render = __bind(this.render, this);
      for (name in states) {
        options = states[name];
        addState(this, name, options);
        if (!this.current_state) {
          setCurrentState(this, name);
        }
      }
    }

    Game.prototype.currentState = function() {
      return this.current_state;
    };

    Game.prototype.start = function() {
      if (_.isEmpty(this.states)) {
        throw Error("No game states defined");
      }
      this.stopped = false;
      this.update();
      this.render();
      return this;
    };

    Game.prototype.stop = function() {
      this.stopped = true;
      return this;
    };

    Game.prototype.render = function(timestamp) {
      if ((typeof requestAnimationFrame !== "undefined" && requestAnimationFrame !== null) && !this.stopped) {
        this.current_state.render(timestamp);
        requestAnimationFrame(this.render);
      }
    };

    Game.prototype.update = function() {
      if (!this.stopped) {
        this.current_state.update();
        schedule(tome.GameFrameStats.DEFAULT_STEP_DELTA, this.update);
      }
    };

    addState = function(game, state_name, state_options) {
      if (state_options == null) {
        state_options = {};
      }
      state_options.name = state_name;
      return game.states[state_name] = new tome.GameState(state_options);
    };

    setCurrentState = function(game, name) {
      game.current_state = game.states[name];
      return this;
    };

    return Game;

  })();

}).call(this);

(function() {
  tome.GameFrameStats = (function() {
    GameFrameStats.DEFAULT_STEP_DELTA = 1000 / 60;

    GameFrameStats.prototype.current_frame_time = null;

    GameFrameStats.prototype.last_frame_time = null;

    GameFrameStats.prototype.last_frame_duration = null;

    GameFrameStats.prototype.frames_per_second = 0;

    GameFrameStats.prototype.frame_count = 0;

    function GameFrameStats() {
      this.current_frame_time = +new Date();
    }

    GameFrameStats.prototype.step = function(timestamp) {
      if (timestamp == null) {
        timestamp = +new Date();
      }
      this.last_frame_time = this.current_frame_time;
      this.current_frame_time = timestamp;
      this.last_frame_duration = this.current_frame_time - this.last_frame_time;
      this.frames_per_second = Math.floor(this.last_frame_duration / 1000.0);
      this.frame_count++;
    };

    GameFrameStats.prototype.fps = function() {
      return this.frames_per_second;
    };

    GameFrameStats.prototype.stepDelta = function() {
      return this.last_frame_duration || GameFrameStats.DEFAULT_STEP_DELTA;
    };

    return GameFrameStats;

  })();

}).call(this);

(function() {
  var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };

  tome.GameState = (function() {
    function GameState(options) {
      var _ref, _ref1;
      if (options == null) {
        options = {};
      }
      this.render = __bind(this.render, this);
      this.update = __bind(this.update, this);
      if (options.name != null) {
        this.name = options.name;
      } else {
        throw new Error("game states require a name");
      }
      this.frame_update_stats = new tome.GameFrameStats;
      this.frame_render_stats = new tome.GameFrameStats;
      this.controllers = (_ref = options.controllers) != null ? _ref : [];
      this.entities = (_ref1 = options.entities) != null ? _ref1 : [];
    }

    GameState.prototype.update = function(timestamp) {
      var _this = this;
      this.frame_update_stats.step(timestamp);
      this.controllers.forEach(function(controller) {
        return typeof controller.update === "function" ? controller.update(_this.entities, _this.frame_update_stats, _this) : void 0;
      });
    };

    GameState.prototype.render = function(timestamp) {
      var _this = this;
      this.frame_render_stats.step(timestamp);
      this.controllers.forEach(function(controller) {
        return typeof controller.render === "function" ? controller.render(_this.entities, _this.frame_render_stats, _this) : void 0;
      });
    };

    return GameState;

  })();

}).call(this);

(function() {
  (function(root) {
    root.findClass = function(name, suffix, strict) {
      var class_name, clazz, suffixed_name, _ref, _ref1, _ref2;
      if (suffix == null) {
        suffix = '';
      }
      if (strict == null) {
        strict = false;
      }
      if (!/([A-Z0-9][a-z0-9]+)+/.test(class_name)) {
        class_name = _.str.classify("" + class_name);
      }
      suffixed_name = "" + class_name + suffix;
      clazz = (_ref = (_ref1 = (_ref2 = tome[class_name]) != null ? _ref2 : tome[suffixed_name]) != null ? _ref1 : root[class_name]) != null ? _ref : root[suffixed_name];
      if (strict && !_.isFunction(clazz)) {
        throw exception("Can't find class " + class_name);
      }
      return clazz;
    };
    root.collection = function(items) {
      if (items == null) {
        items = [];
      }
      if (items instanceof tome.Collection) {
        return items;
      }
      if (items.constructor.name !== 'Array') {
        items = arguments;
      }
      return new tome.Collection(items);
    };
    root.entity = function(components) {
      if (components == null) {
        components = [];
      }
      if (arguments.length > 1) {
        components = arguments;
      }
      return new tome.Entity({
        components: components
      });
    };
    root.component = function(name, attrs) {
      var _ref;
      if (attrs == null) {
        attrs = {};
      }
      return new ((_ref = findClass(name)) != null ? _ref : tome.EntityComponent)({
        attributes: attrs
      });
    };
    root.controller = function(name) {
      var _ref;
      return new ((_ref = findClass(name)) != null ? _ref : tome.EntityController)({
        attributes: attrs
      });
    };
    return root.components = function(components) {
      var attrs, name;
      if (components == null) {
        components = {};
      }
      return collection((function() {
        var _results;
        _results = [];
        for (name in components) {
          attrs = components[name];
          _results.push(component(name, attrs));
        }
        return _results;
      })());
    };
  })(typeof global !== "undefined" && global !== null ? global : window);

}).call(this);

(function() {
  (function(root) {
    root.schedule = function(ms, fn) {
      return setTimeout(fn, ms);
    };
    root.unschedule = function(timeout_id) {
      return clearTimeout(timeout_id);
    };
    return root.async = function(fn) {
      return schedule(0, fn);
    };
  })(typeof global !== "undefined" && global !== null ? global : window);

}).call(this);

(function() {
  var _ref,
    __hasProp = {}.hasOwnProperty,
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };

  tome.AccountComponent = (function(_super) {
    __extends(AccountComponent, _super);

    function AccountComponent() {
      _ref = AccountComponent.__super__.constructor.apply(this, arguments);
      return _ref;
    }

    AccountComponent.prototype.accessible_attrs = 'token connectedAt';

    return AccountComponent;

  })(tome.EntityComponent);

}).call(this);

(function() {

}).call(this);

(function() {
  var _ref,
    __hasProp = {}.hasOwnProperty,
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };

  tome.PositionComponent = (function(_super) {
    __extends(PositionComponent, _super);

    function PositionComponent() {
      _ref = PositionComponent.__super__.constructor.apply(this, arguments);
      return _ref;
    }

    PositionComponent.prototype.accessible_attrs = 'x y z';

    PositionComponent.prototype.distance = function(position) {
      var x, y, z;
      (x = position.x() - this.x()) * x;
      (y = position.y() - this.y()) * y;
      (z = position.z() - this.z()) * z;
      return Math.sqrt(x + y + z);
    };

    return PositionComponent;

  })(tome.EntityComponent);

}).call(this);

redpajama_set_name: RedPajamaGithub


The UseBB Team is happy to announce version 0.5.1 of the Open Source PHP/MySQL bulletin board package "UseBB".
- Added search member's posts link on profile page.
- Added show edit post message timeout.
- Search now escapes % and _ and shows search options on result view.
- Allow search options to be passed via GET.
- Fixed bug #487: Installer ignores invalid database configuration.
- Fixed bug #496: BBCode and smiley controls in IE don't work.
- Fixed bug which keeps 'board closed' in location bar for admins.
- Fixed bug which leads to SQL error when forums are excluded from stats.
- Fixed bug which sends subscription e-mail in language of poster.
- Some fixes to the search engine.
- Show 5 last page links for topic on topic list.
- New language loading function.
- Added seperate language var 'CurrentPage' for online list.
- Disable directory indexes for security.
Upgrading is, as always, recommended. Visit http://www.usebb.net/downloads/ for downloads.


Every girl wants to look spooky and fabulous and our ladies costumes are great for any Halloween fancy dress party. Here at Mega Fancy Dress we have made choosing the perfect ladies Halloween costume an exciting journey with our easy to navigate Halloween categories. Browse through all of our ladies fancy dress costumes to let your imagination go wild with possibilities for the perfect Trick or Treating fancy dress, or if you have a theme in mind our Zombie, Witch, Vampire, Devil, Pumpkin, Horror Film and Fairytale costume categories will quickly guide you to our irresistible selection of ladies Halloween costumes. Here at Mega Fancy Dress we stock a spooky range of officially-licensed Horror Film costumes to let you recreate some of the most famous scary characters at the movies. You can choose from Addams Family costumes, Ladies Edward Scissorhands, Miss Voorhees from Friday the 13th or Catwoman from the latest movie The Dark Knight Rises. Dress to impress on October 31st with our fantastic range of ladies Halloween fancy dress.


The Atlantic Provinces Economic Council (APEC) will hold its annual meeting at the Wingate by Wyndham in Dieppe, New Brunswick on September 27. Following the AGM, APEC will host a dinner, in partnership with the Greater Moncton Chamber of Commerce. Bank of Canada Governor Stephen S. Poloz will be our guest speaker and talk about the opportunities and challenges posed by disruptive digital technologies, and what it means for the Canadian economy.
You won't want to miss this informative speech, discussion and networking opportunity!
APEC's AGM, reception and dinner will all be held at the Wingate by Wyndham in Dieppe, New Brunswick on September 27, 2018.
APEC will hold its annual general meeting at the Wingate by Wyndham in Dieppe, New Brunswick on September 27, 2018. All members are welcome to attend.
APEC will host a reception following its AGM and immediately prior to the dinner.
APEC will host a dinner, in partnership with the Greater Moncton Chamber of Commerce. Bank of Canada Governor Stephen S. Poloz will be the featured speaker at the dinner.
For sponsorship opportunities, please contact Erica Parrill at 902.422.6516 or erica.parrill@apec-econ.ca.


text:
Home News National Article
Johnson tells Macron joint UK-France patrols could curb migrant crossings
By PA News
Published: 21:54, 25 November 2021
| Updated: 23:21, 25 November 2021
British border officials could begin patrols in northern France as soon as next week under plans put forward by Boris Johnson in a letter to Emmanuel Macron.
The Prime Minister set out his proposals – which could also see British vessels operating in French waters – as he told the French president that "we must go further and faster, together" to tackle the migrant crisis.
The Home Office said officials would be in Paris on Friday for talks, with Priti Patel heading to Calais on Sunday as efforts to address the problem intensify in the wake of the tragedy which saw at least 27 people die while attempting to cross the English Channel.
President Macron said he was requesting "extra help" from the UK on Thursday as authorities revealed that pregnant women and children were among those who died when a boat sank while crossing to the UK on Wednesday.
My letter to President Macron. pic.twitter.com/vXH0jpxzPo
The Prime Minister said the plan, which includes joint patrols to prevent boats from leaving France and a bilateral returns agreement, would have "an immediate and significant impact" on crossings.
He also suggested that the agreement would be in France's interest by breaking the business model of criminal gangs running the people-smuggling trade from Normandy.
Under Mr Johnson's proposals:
– Joint patrols would prevent more boats from leaving French beaches.
– Advanced technology such as sensors and radar would be deployed to track migrants and people-trafficking gangs.
– There would be joint or reciprocal maritime patrols in each other's territorial waters and airborne surveillance by manned flights and drones.
– Reciprocal maritime patrols in each other's territorial waters and airborne surveillance.
– Deepening the work of our Joint Intelligence Cell, with better real-time intelligence-sharing to deliver more arrests and prosecutions on both sides of the Channel.
If those who reach this country were swiftly returned the incentive for people to put their lives in the hands of traffickers would be significantly reduced.
– The work of the Joint Intelligence Cell would be improved with better real-time intelligence sharing to deliver more arrests and prosecutions on both sides of the Channel.
– There would be immediate work on a bilateral returns agreement with France, to allow migrants to be sent back across the Channel, alongside talks to establish a UK-EU returns agreement.
Mr Johnson called for "urgent progress" on joint patrols of UK Border Force officers and French gendarmes, or the joint deployment of private security contractors.
"We are ready to begin such patrols from the start of next week and to scale up thereafter."
The Home Secretary will send officials and law enforcement officers to Paris on Friday to intensify co-operation and intelligence sharing.
She will personally visit Calais on Sunday for talks with French interior minister Gerald Darmanin and counterparts from Belgium, the Netherlands and Germany.
Mr Johnson said he was ready to upgrade this meeting to a full summit of the countries' leaders.
Writing on Twitter, the Prime Minister said: "If those who reach this country were swiftly returned, the incentive for people to put their lives in the hands of traffickers would be significantly reduced.
"This would be the single biggest step we could take together to reduce the draw to Northern France and break the business model of criminal gangs.
"I am confident that by taking these steps and building on our existing cooperation we can address illegal migration and prevent more families from experiencing the devastating loss we saw yesterday."
The UK has been frustrated by a lack of co-operation from the French, with efforts to put British boots on the ground so far rebuffed by Paris.
Shadow home secretary Nick Thomas-Symonds said the letter to Mr Macron "reveals how little has been achieved and the scale of Government failings".
A group of people thought to be migrants wait on a holding bus after being brought in to Dover, Kent (Gareth Fuller/PA)
He added: "It should have not taken such a tragedy for the Prime Minister to recognise that more needs to be done. We need less rhetoric and more action."
The scale of the problem was further illustrated by new figures from the Home Office showing asylum claims in the UK have hit their highest level for nearly 20 years, fuelled by soaring Channel migrant crossings and a rise in numbers following the coronavirus pandemic.
As French politicians pointed the finger at UK authorities for failing to tackle the issue, two more small boats carrying desperate individuals were believed to have arrived on British shores.
One group wearing life jackets and wrapped in blankets were seen huddled together on board an RNLI lifeboat before disembarking in Dover on Thursday morning.
High winds put a stop to the crossings later in the day.
(PA Graphics)
The French prosecutors' office investigating the incident on Wednesday said the dead included 17 men, seven women and two boys and one girl believed to be teenagers.
A joint search and rescue operation by the French and British authorities that was launched after a fishing boat spotted people in the sea off France was finally called off late on Wednesday.
The French authorities have arrested five suspected people traffickers in connection with the incident.
The French prosecutors' office said magistrates are investigating potential charges of homicide, unintentional wounding, assisting illegal migration and criminal conspiracy.
The Dover Strait is the busiest shipping lane in the world and has claimed the lives of many people trying to cross to Britain in inflatable dinghies.
More than 25,700 people have made the dangerous journey to the UK in small boats this year – three times the total for the whole of 2020, according to data compiled by the PA news agency.
Figures released by the Home Office on Thursday showed that more than 37,500 asylum claims were made in the UK in the year to September, which is the highest level for nearly 20 years.
The backlog in cases also reached its highest point since comparable records began, with more than 67,500 asylum applications awaiting a decision at the end of September.
Keep up-to-date with important news from your community, and access exclusive, subscriber only content online. Read a copy of your favourite newspaper on any device via the HNM App.


text:
Yali lub Yaly – lud papuaski żyjący w indonezyjskiej prowincji Papua, w dolinie Baliem. Yali zamieszkują trudno dostępne górzyste tereny przy skraju doliny.

Są karłowatym ludem negroidalnym, cechują się najniższym wzrostem wśród Papuasów. Przed nadejściem misjonarzy nie utrzymywali kontaktu ze światem zewnętrznym. Społeczność Yali została odkryta dopiero w 1976 r.

Są wyraźnie odrębni od ludu Dani, zarówno pod względem języka, jak i kultury. Posługują się językiem yali, który jest dość zróżnicowany dialektalnie i bywa rozpatrywany jako grupa kilku języków.

Nazwa yali (jale, jali) pochodzi od wyrażenia jale-mo w mowie ludu Dani, które oznacza "tereny na wschód". Ich rodzime terytorium określane jest mianem yalimo. Łącznie zamieszkuje je ok. 30 tys. osób.

Członkowie ludu mieszkają w tradycyjnych domkach honai, zbudowanych z drewna. Mężczyźni i kobiety żyją osobno. Kobiety zajmują się rolnictwem, mężczyźni zaś polowaniem. Istotną rolę odgrywa hodowla świń.

Yali dawniej praktykowali kanibalizm. Działalność misjonarzy doprowadziła jednak do znacznej zmiany w ich stylu życia.

Przypisy

Etnografia Indonezji
Ludy papuaskie


text:
Hoosiers Outrun Cancer Set for Saturday, Sept. 20
Sep 15, 2014 | Health & Fitness
BY DANIEL MORGAN
There's no telling when cancer might strike, and it often leaves victims feeling debilitated, hopeless, and cursed. But for the past 15 years, Hoosiers Outrun Cancer, an event sponsored by the Bloomington Hospital Foundation in collaboration with the IU Health Olcott Center, has helped provide support and solace to thousands of patients and their loved ones.
All of the proceeds of the 5K run/walk — more than $2.3 million since 2000 — go to the Olcott Center, which provides patients and caregivers with various support services and need-based financial assistance to cover the costs of such things as wigs and mastectomy and lymphedema products.
Kimberly Rudolph, special events manager for the Hospital Foundation, is heading the event for the fourth consecutive year. As a cancer survivor, she has experienced firsthand the comfort offered by the Olcott Center. "When you're diagnosed with cancer, your head is just spinning," she says. "But I was able to keep that element of hope and a positive attitude from the beginning because I had someone to guide me along the way."
This year's event — set for Saturday, September 20 — starts at Memorial Stadium and sends participants on a route south through Indiana University's campus; there also is a mile-long kids run and family walk that loops around Assembly Hall. Registration for all events is $25, and nonparticipants can support the cause through donations or pledges to individuals and runners and walkers who have formed teams.
The event has grown from 2,000 participants in 2000 to more than 5,000 in 2013. Rudolph credits its founders, Karen Knight, the wife of former IU men's basketball coach Bob Knight, and Dorothy Ellis. Cancer killed Knight's mother and brother and afflicted Ellis' husband, Tim, who has since made a full recovery.
"They had the drive, the connections, and the enthusiasm to get it off the ground and get it started the right way," Rudolph says. "They reached out to the community, and the community has responded."
For more information on how to participate, donate, or volunteer, visit their website.
PreviousIt's Almost Showtime for IU Theatre 2014–15
NextHarmony School to Celebrate 40 Years in True Harmony Style
Volunteers in Medicine Combats The Repercussions of Poverty
Weekly Exercise: Standing Exercise for the Obliques
Weekly Exercise: Hamstring Exercise with Furniture Sliders
New Medical Device Company May Save Suffering After Surgery


Throughout the season, the Stateline District updates information provided to member clubs and players. You can find general news, special events, and other information as it becomes available. Subscribe to the Latest News RSS feed.
The Stateline League's Spring 2019 season starts on April 13 and runs through June 2, 2019. The final schedule is now available. Please remember that this is a static schedule (PDF) and changes in the schedule will not be reflected here.
The District Board serves the clubs, coaches, and players. If you have any questions or concerns, or if you want to volunteer your time, please let us know today.


text:
UCF to Face Tulsa for 3rd Time in AAC Semis
Friday's semifinal was pushed to Saturday due to weather.
ORLANDO, Fla. (UCFKnights.com) – The No. 25 UCF women's tennis team is set to take on the No. 4 seeded Tulsa Golden Hurricane tomorrow in the American Athletic Conference championship tournament at 2 p.m. This will be the third time that UCF and Tulsa meet this season.
UCF has been victorious in the prior two meetings of the season, winning 4-1 during ITA Kickoff Weekend and later defeating Tulsa 6-1 as the season was dwindling. Both teams were ranked in the first matchup as the Knights were No. 22 and Tulsa was ranked No. 23.
The two previous matches shaped up a little differently, with some shuffling of the lineups, as one match was very early in the season while the other somewhat closer to the end. Based on the lineup Tulsa used today in the quarterfinals, the matchups might be the exact same for both sides in tomorrow's showdown.
Prior to this season, the Knights had not beaten Tulsa. In fact, Tulsa has eliminated the Knights from four postseason tournaments in the last 12 years. UCF looks to avoid repeating history as they've been breaking records and defying the odds all season long.


Create with Traci: August Club Kit- Roxie!
Hello!!! The best part about going to convention is having early access to supplies!!! I have been busy prepping my August projects- and it is soooo much fun working with new products!
This is the layout my Scrap your Stash club can create in August!
Sorry for the white space on the side of this page... Forgot to get rid of it before posting.
this uses the new Roxie Level 2 paper pack, 10 things stamp set, natural hemp(not new) and the FUN NEW Bling Assortment pack... LOVE IT!!!
Club members that choose to make this will be receiving a list of supplies they may have at home with will match (hence... the Scrap your stash club name!) The Tulip and Black Mini medleys, Licorice pearls, pink designer ribbom collection for instance, all coordinate.
The secret to this layout- the pink floral paper is the back side of the red/black/pink plaid paper- SO FUN!! The border on the side of my photo mats- that pink scallop- is the top "zip strip" of the SAME paper.
Close To My Heart is awesome!!!


text:
Golden Sun: The Lost Age/Kandorean Temple
You'll notice that the monks at the front gate won't let you past, so to get around this run around the left-hand side of the wall. At the end, Kraden will remark on a suspicious piece of ivy. If you've played Golden Sun you'll know exactly what to do here - get Sheba to use Whirlwind on it to scatter the ivy and reveal a cave entrance. Follow the watery path down here, and climb up the rope at the end. No-one seems to mind you're there though, so go ahead into the temple.
Master Poi will be up on a high ledge, with three trainee monks practicing their levitation skills. All three of them seem to be pretty bad at it, but the one in the middle loses his patience and wants to enter the cave. Master Poi lets him, which turns out to be a mistake. Anyways, there's three of you, so you'll be fine. Enter the cave.
Inside the Cave[edit]
This is your first proper dungeon. The enemies down here aren't particularly tough, but the layout may make it somewhat hard to navigate. Go straight on and open the chest. It's a Mimic! Mimics will appear as treasure chests and you can be certain that there is one in every major dungeon. They're considerably tougher than standard enemies, but you get EXP as well as a relatively decent item off them when they die. If you haven't summoned Venus already, do so with Felix, or unleash Echo, or attack. Jenna should either attack or cast Fume, and Sheba should cast Ray. Repeat until the Mimic is dead. For the mean time it is of critical importance that you don't let any of your characters die, because for quite a while resurrecting characters is a costly and arduous process.
Once it dies, you get a Game Ticket (which is useless for the mean time). Go back and head left. Follow the long path around to the stairs down. You'll emerge in a very large room filled with rock pillars. From here, none of them go anywhere, so go down the ladder. Go to the left and weave in-between all the pillars. If you can't find a way through, there's a worn-away path leading through to help you. Climb the ladder and follow the ledge around. Jump on to the first pillar you can, and then jump across until you reach a door to the north.
In the next large cave there's only one way you can go, so head to the left and down the stairs. In this long room, head down the ladder and down the left-hand side of the flowing river. When you can actually get into the river, run all the way back up it, around all the rocks. Get off at the right-hand side near the top, and weave back down this side and around to another doorway.
It's a good idea now to assign Move to either of the shoulder buttons. Go into your Psynergy menu and press either L or R, then selected Move from Felix's Psynergy. Try to push as much for the mean time though, because when you'll need Felix to use Psynergy in battle, he won't be able to if you've used Move too much. This just makes other parts of the game (when you might be pressed for time) a lot easier. Anyway, shove the moveable pillar on the left hand jet, then get on the other one. When they'd ordinarily go up, the pressure makes the right-hand platform go extra high (up to the next floor). Up here, grab the Mysterious Card from the chest (equipping this will make your party members a unique class, but it's not that good) then hop back on the platform.
Back down in the jet room, move the rock pillar on to the jet you just used, then get on the left-hand one. When it goes up, jump off at the top, and head left to the ladder. Climb up, and walk across the tightrope to the next platform. Don't cross the next one just yet - the jet of gas will push you off every time. Instead, go up to the moveable pillar. Use Move to push the pillar away from you, then jump across and shove it along until it blocks the gas jet. Now you can use the next tightrope to get across. The ladder here is deceptive - you can't get past by going down it. Instead, go around the ledge to the right and then you can jump between the wall-ledges further down to get past the rock. Go down the ladder and exit the room to the south.
You'll recognise this room. You can't do anything with the rope here yet, so go downwards. Exit through the door, and you'll appear in the fenced-off section of the dungeon you came past at the very start. Head up the other set of stairs. Go up to the ladder in the next room, and you'll see a weird cauldron of sorts blocking yout way. You can't push this (I assume the monks would have to concentrate) but you have your good friend Move, who can touch it with no harm to you whatsover. Move out of your path and jump across. Before you go any further, make sure your characters are healed and Echo is Set. You'll want to unleash it in the battle up ahead. When you're ready, keep walking up to the three monkeys blocking your way.
Boss Battle: Chestbeaters[edit]
Your first and easiest boss battle. To begin with, have Felix unleash Echo on the middle Chestbeater, Jenna cast Flare or Flare Wall if you have it (with the big arrow on the middle Chestbeater) and Sheba cast Ray (also on the middle one - this is focussing your attacks to hit every foe, and something you'll have to consider when using Summons and Psynergy). Your foes are weak to Mars (Fire), so Jenna should be dealing a fair amount of damage. When Felix can summon Venus, focus it on the middle Chestbeater. Repeat this (Felix can attack) until they're all dead.
When you beat them, climb up the ladder that appears and follow the path around until you reach Master Poi's room. He'll think it was the monk, but he's surprised when he sees you are there! After a discussion, you can climb up the rope to reach the funky rock thing on the plinth at the top of the room. You've now acquired Lash! If you speak to Master Poi, he'll tell you there's something you might find interesting in the cave. Remember that rope you passed before? You can now go and use it. Equip the Lash Pebble on Sheba, then backtrack your way through the cave until you get there. Use Lash and climb up to reach a Mercury Djinni. Why this is here when you don't have any Mercury Adept to give it to, I don't know, but you'll have to fight it if you want it. A combination of Felix's Spire, Jenna's Fume and Sheba's Ray followed by normal attacks should finish it off. You can now use Fog the Mercury Djinni to summon Mercury, but it's probably best if you leave it set to Jenna for the mean time.
Now leave the cave and Kandorean Temple. On the world map, go back to near Daila (you can pop in and use the Inn or buy equipment if you need to). When you're ready, head east from Daila and keep going until you reach a cave in front of a red tower.
← Daila | Kandorean Temple | Shrine of the Sea God →
Retrieved from "https://strategywiki.org/w/index.php?title=Golden_Sun:_The_Lost_Age/Kandorean_Temple&oldid=751648"


The purpose of BTEC Higher Nationals in Engineering is to develop students as professional, self-reflecting individuals who can meet the demands of employers in the rapidly evolving engineering sector and adapt to a constantly changing world. The qualifications also aim to widen access to higher education and enhance the career prospects of those who undertake them.
Students will be required to attend college for 3 days a week.
HNC courses are taught by a team of specialist subject lecturers, supported by a tutor.
The course will be delivered over 2 years as a full-time course of 3 days a week.
From HNC to HND to Top-up degree at university or degree apprenticeship.
Design engineer, Electrical or electronic engineer, mechanical engineer.
● A* to C grade in GCSE Maths – A sound mathematical ability is essential.
9 to 4 or A* to C grade in GCSE Maths – A sound mathematical ability is essential.


6 Mo. TGU Turbo 26 Studio | Best Yoga in Palo Alto | 26-min Classes!
With the support, accountability and our community at Turbo 26 Studio, this is the time to commit to yourself and your practice.
Through the end of your Intro Week only, you get access to the best membership offer available.
Pay only 1/2 price for your first month, and save $30 off our regular price for every month thereafter*.
Access to all classes, all the time.
10% off all retail items & specialty programs.
Our lowest priced membership ever.
Join us for our Lowest Priced Membership ever.
Prices valid during your Intro Week only.
So, is this the time you'll finally find the freedom you've been craving?
*Regular price of our Turbo Gold Unlimited is $159 per month. With this special offer, your first month is $79.50. Subsequent months are $129 per month, auto-charged to your credit card on file. Requires six month commitment. Early cancellation fee is 25% of unused month's dues. After six months, membership will auto-renew with month-to-month payments at the same great rate of $129 per month and is cancellable at any time without penalty. Read all the fine print here.


We understand applying to be an international student can be a complex task. That's why we're committed to helping you every step of the way.
Refer to the Flinders campus map, ref. K10 (PDF) for directions.
The Education Services for Overseas Students Act (ESOS Act) sets out the requirements with which Flinders University, as a registered provider of education and training courses to international students studying in Australia, and its staff must comply.


Food poisoning, also referred to as foodborne illness, happens after consuming food that has been contaminated before or during its preparation. Generally, food becomes contaminated during the processing, production, handling, or cooking phase. Infectious organisms – including bacteria, viruses, and parasites – are the most common causes of food poisoning.
Upon consuming contaminated food, each symptom's degree of severity depends on the person. Some experience only mild symptoms; others, more severe. Individuals who have a higher risk of food poisoning are known to be "at-risk," and they're more likely to experience more severe forms of food poisoning.
We'll discuss a few at-risk demographics later on in the article, followed up by some useful tips on how to prevent food poisoning.
For many, the first symptoms to appear resemble those of the flu: weakness, nausea, and fatigue. Some people develop fever and chills. If your fever level reaches or exceeds 103 degrees Fahrenheit, you should seek immediate medical attention.
Organisms that produce food poisoning irritate the lining of your GI tract; this can lead to painful inflammation of the stomach, which may cause pain in your abdomen. The body quickly realizes the presence of harmful organisms and contracts the abdominal muscles faster to expel them. Unfortunately, this effect also leads to (often severe) cramping.
Diarrhea is a common symptom of food poisoning; characterized by three or more bowel movements of loose and watery stools within a 24-hour period. The frequent urge to go to the bathroom is often preceded by abdominal cramps or bloating. Because of the severe nature of diarrhea typical of food poisoning, dehydration becomes a potential problem. It is necessary to sip water to fend off the potentially dangerous complications of a dehydrated body.
Nausea that accompanies food poisoning may surface between one and eight hours of eating contaminated food. Nausea is commonly an early warning sign of food poisoning, as the body attempts to signal that we've digested something possibly harmful. Nausea symptoms may be exacerbated as the bowel slows – a natural response designed to keep the toxin confined to the stomach.
The "last early warning symptom" of food poisoning is usually a bout of vomiting. While vomiting (and diarrhea) are unpleasant, the body must expel bacteria and viruses from the body to prevent health complications. For some, episodes of severe vomiting throughout the illness (usually 3 to 5 days) is typical.
Food poisoning is similar to many other illnesses in that some groups of people are more at risk than others. The two differentiators are (1) odds of acquiring the illness, and (2) the body's response once ill.
Cancer Patients: As cancer weakens the immune system, they are more prone to the effects of infection-causing bacteria and other pathogens. Combined with symptoms of their cancer, a case of food poisoning can become rather severe.
Elderly Adults: Statistically, adults aged 65 and older are more likely to be hospitalized or experience severe complications from food poisoning. The primary reason is the slow decline of organ function as we age; including the immune system.
Pregnant Women: During pregnancy, it is common for the symptoms of food poisoning to become more severe. Also, some food groups dramatically increase risk: seafood, unpasteurized dairy, and eggs among them.
Young Children: The immune system is not fully developed until about four or five years of age. As such, a child's immune system is not as able to effectively eliminate foodborne bacteria and pathogens.
It is important that we all prioritize food safety, as it can not only impact our health but those for whom we care. Those considered at-risk should take additional safety precaution, and consult with their doctor concerning dietary recommendations.
1. Clean and wash hands, surfaces, and food before handling food.
2. Separate raw meats and poultry from other food types, especially vegetables.
3. Cook all food at the appropriate temperature.
4. Chill leftover perishable foods by promptly storing them in a refrigerator or freezer.
– Avoid food for the first few hours as your stomach settles.
– Eat when you feel ready, but stick to limited amount of bland foods like bread, crackers, and soup.
– When not eating or drinking, make sure that you are resting.
If your symptoms do not begin receding within 2-3 days, call your doctor or visit a local health clinic.


text:
Quebec man wants to visit father in N.B. before dementia robs them of a final goodbye
Mike Pitre just wants to see his dad before his dad doesn't know who he is.
"I want to go and hug him and spend time with him, and I want to hug him — in a period where he still realizes that he's hugging his son," said the New Brunswick native who now lives in Gatineau, Que.
His 78-year-old father, Leonda Pitre, lives in Campbellton, N.B., and was diagnosed with vascular dementia about a year ago.
Leonda's condition has been deteriorating. Some days, he doesn't recognize his wife, Lucienne. Other days, he gets up to leave for a job he retired from many years ago.
He usually knows his son during their phone calls and recognizes his photo, but Pitre worries about how much longer that will last. He'd like to visit his father one last time before dementia robs them of a chance for a final goodbye.
Mike Pitre, centre, is shown with his sister, Sylvie, father, Leonda, and Lucienne, his mother. (Submitted by Mike Pitre)
"I would desperately like to go visit him sometime in the next few weeks before it is too late, and he does not recognize me anymore."
Pitre filed a request with the government to visit New Brunswick through proper channels put in place during the COVID-19 pandemic, but his application was denied.
If his father's death was imminent, he would be allowed to visit.
I can drive from Gatineau in nine hours to Pointe-à-la-Croix, but I can't drive the last five minutes to get to my parents' house. – Mike Pitre
According to the province's website, "The Canadian Red Cross has been authorized to approve travel into New Brunswick for end-of-life visits with an immediate family member."
Those granted permits must still comply with self-isolation guidelines, but if they "need to attend a funeral, burial or end-of-life visit in a hospital, hospice or nursing home prior to completing 14 days of self-isolation, [they] must first test negative for COVID-19 on the fifth day of self-isolation."
After a negative result, "you may only leave your place of self-isolation as required for an end-of-life visit or to attend a funeral or burial service in compliance with public health guidelines. If you need to visit your family member in home for end-of-life visit prior to completing 14 days of self-isolation, strict protocols for these visits will be provided to you by Red Cross staff."
Sad and angry
"Apparently the new normal allows me to visit my father on his death bed or in a coffin but not while there is a spark of life still left in him," Pitre wrote on Facebook.
In an interview with Radio-Canada, he said he's sad, frustrated and angry.
"I can drive from Gatineau in nine hours to Pointe-à-la-Croix, but I can't drive the last five minutes to get to my parents' house. I don't understand the logic. It just floors me," he said.
Pointe-à-la-Croix is in eastern Quebec on the Restigouche River, across from Campbellton.
On Thursday, during the New Brunswick government's live-streamed COVID-19 update, Health Minister Dorothy Shephard was asked about whether there's any way for Pitre to visit his father.
"As of today, I'm not thinking that there's a path, a clear path, here," she said.
Shephard encouraged him to follow the process that's in place and submit an application, "and I'm sure that as soon as we can make a positive answer, we will."
She said it's "heartbreaking," but the rules are in place to protect the public.
DementiaFatherfinalgoodbyemanQuebecrobsvisit
Iran's Khamenei reiterates nuclear deal stance in new year speech | Middle East News
Duckie Brown Fall 2021 Menswear Collection
New voice for Czech Republic? Retired general tops ex-PM for…


"A number of activists of the Movement Against Illegal Immigration have committed politically motivated crimes of violence. The organisation has never tried to deny that. This is not just a formality: in reality the Movement Against Illegal Immigration has consisted to a large extent of people practising racially-based violence. Or at least openly approving it," Alexandr Verkhovsky stresses in his blog.
"In no other country would such an organisation be able to remain legal. Even in a very tolerant country such as Great Britain, Sinn Fein was separated from the IRA.
"The problem of Russian nationalism is that it simply cannot recruit as many people as Sinn Fein did, not to mention such advanced political structures such as the Freedom Party of Austria or Italy's Northern League. If an organisation's size is only slightly larger than that of a local club or association, then you will immediately find young men there who are involved in very particular kinds of practices."
Moscow City Court has banned the Movement Against Illegal Immigration and declared it an extremist organisation. On 10 March 2011 Moscow City Court ruled that the Moscow Prosecutor's Office must present evidence of the Movement's extremist character by 5 April. And in mid-February 2011 the Movement's activities had been stopped by the capital's Prosecutor's Office until such time as Moscow City Court should consider the prosecutor's request to declare the Movement extremist.


text:
Q: Delete sub directories older than 30 days I'm trying to create a batch script that will delete all sub directories which are older than 30 days.
I'm really new to batch scripting so I'm just hoping that someone can help me out on this.
I was able to find a script that delete all sub directories in specified location.
@for /f "tokens=*" %%a in ('dir /s /b "C:/temp/test" 2^>NUL') do rd /s /q "%%a"

Can someone tweak this script so it deletes only directories which are 30 days old?

A: I think FORFILES is going to do it...
FORFILES -D 30 will iterate all files last modified over 30 days ago
So, something like...
FORFILES /S /D -30 /C "cmd /c IF @isdir == TRUE rd @path"

Should (untested) recursively remove all folders older than 30 days :)
Btw - Check out http://ss64.com/nt/ for more command line goodness

A: This is working fine for me:
Posted by Matt Roberts --> FORFILES /S /D -30 /C "cmd /c IF @isdir == TRUE rd @path"
Be careful when you start the ".bat" file with "Run as administrator", it's not using the current location of the file it takes this location --> "C:\Windows\system32"
For savety reasons add the /P "C:\temp"
FORFILES /P C:\temp /S /D -30 /C "cmd /c IF @isdir == TRUE rd @path"

A: Assuming you are restricted to batch files... check this - but if you can use VBScript, I think you can do a bit better.

Now that you have clarified your real problem, please understand that if you meant to use System.exec() you will have to contend with plenty of drawbacks.
Alternatively if you really want to use JNDI (you mention "native" but don't make clear what you mean) maybe this will be of help: http://mindprod.com/products1.html#FILETIMES

A: Do you have powershell on your system?
dir | ? { $_.LastWriteTime -lt [DateTime]::Now.AddDays(-30) } | % { rm $_.FullName }

A: I know this is an older topic; however, I was recently looking to do this and was able to by building off of what Matt Roberts suggested. I used the following FORFILES syntax:
FORFILES /P \path\to\dir /S /C "cmd /c IF @isdir == TRUE rmdir /S @path /Q" -D -30

You will need to replace \path\to\dir with the path (including drive letter) to the directory (/P) you want to run this on. This will then recursively (/S) search through the directory and run (/C) rmdir (again recursively). Without /Q you are asked if you want to delete each dir/file so if you are planning on running this silently in a script you will need to have it. You can change the amount of days (-D) by changing -30 to something else.
I then used Task Scheduler to automate this  once every week (confirmed working). To make sure it works, set the task with 'run with highest privileges'
Note: This setup will irrevocably delete the files. They will not appear in your recycle bin. So once they are gone they're gone (unless you have backups).

A: You might want to consider using Windows Script Host, in which you could run a VBScript to do just that. Think of it like a batch file with more flexibility and power.
See http://www.computing.net/answers/programming/wsh-delete-files-in-folder-by-date/16255.html

A: This is not going to be a simple tweak.  As it stands, there is no easy way (that I know of) to do the date-diff operation in the cmd interpreter.
First you'll have to parse the current date:
C:\>date /T
Thu 08/05/2010

Once you have the day, month, year, you have to get the date for each item in the directory listing, which you can do by removing the /b param in the dir command and modifying the tokens line to give you tokens 1 and 4, i.e. tokens=1,4, and then doing the date math yourself, which will be a pain because you have to handle different lenght months, and December -> January transitions (new years), etc, and you're almost certain to get it wrong.
Also add the /ad param to get just directories.
I would recommend using PowerShell or some other scripting technology that gives you the tools you need to manipulate dates.


text:
Impossible Foods will flow like a fake-meat river once again
Dominick Suzanne-Mayer
A meatball sandwich made with Impossible Foods' meatless "beef."
Photo: Jonathan Wiggs/The Boston Globe (Getty Images)
Early in May, news emerged that Impossible Foods (one of the companies most directly responsible for the recent boom in fast-food meatless meat) was struggling to produce enough to meet growing demand for their products. Luckily, CNN now reports that Impossible is back on track, and the flow of faux-meat will continue unabated.
In a letter to restaurant distributors, Impossible Foods president Dennis Woodside advised that orders will no longer be capped, while telling CNN that "we are definitely back in business." The company, which plans to begin putting its products in grocery stores by fall 2019, has "tripled its weekly production since March," and reportedly has further plans for production expansion before the end of the year as well.
Woodside does note that "I can't say 100% with certainty that in nine months—if there's a massive spike in demand—that we won't see some spotty shortages," which is a logical enough qualifier given the current popularity of Impossible Burgers and their burgeoning appeal to fast food chains. But even if Impossible Foods is wisely hedging its bets for the moment, it sounds a lot like they're preparing for the long haul as well. Considering that at least one top-level executive bet his physical safety on the company changing eating habits on a mass scale, we're glad to see that the company is doing the best to prepare.
Burners Baby Burners: Discussion Inferno
There's an interesting thing in the article that makes me nervous for the future of Impossible Foods:
Later this year, Impossible plans to announce a partnership with a major manufacturing operator that will "dramatically increase our production capacity," Woodside said. Plus, Impossible plans to open another manufacturing facility. He did not name the operator.
This is not encouraging. Mass-produced foods have a way of killing the quality of things like this. I hope it works out for them and maintains the integrity of their product, but it makes me nervous as I've seen how this has messed up other products.


The very first thing people notice about you is your smile. According to the American Academy of Cosmetic Dentistry, essentially all Americans (99.7%) consider a smile to be a pivotal element in social situations. And the color of your teeth is one of the first things people remember about your smile. Luckily, the color of your teeth is also one of the easiest things to improve! Professional teeth whitening is a popular cosmetic dental service offered at Sullivan Family Dental.
When you feel self-conscious about the color of your teeth, it's harder to coax yourself to smile. Many people have their teeth whitened for special occasions, like job interviews or weddings, and also because they want to feel more positive about their appearance. A whiter, brighter smile from teeth whitening can help boost your self-esteem and even make you want to smile more.
Smiling impacts your mood! Neurons in the brain are released when you smile that tell the whole body that you're happy and whether or not you realize it, you start to feel a little happier.
Common foods and drinks like coffee, soda, wine, chocolate, blueberries, and cherries, are delicious, but alas! They also cause surface stains on teeth. Although it does not completely erase stains, teeth whitening effectively offsets stains caused by these lifestyle or dietary factors.
As tooth enamel gradually wears over time and becomes discolored, the color of your teeth gives a clue about your age. With teeth whitening, you can not only remove stains from your teeth, and also remove years from your appearance.
Teeth whitening is relatively inexpensive, especially when compared to other cosmetic dentistry procedures like porcelain veneers or dental crowns. Although over-the-counter options are available, nothing will whiten your smile as effectively as professional teeth whitening. Professional teeth whitening at Sullivan Family Dental can help your teeth get anywhere from three to eight shades whiter. We're ready to get you scheduled for teeth whitening and get you closer to the smile of your dreams!
Contact our office today to talk about teeth whitening options!


text:
Лафар — французская фамилия и топоним.

Топоним
 Лафар — коммуна во Франции, в департаменте Ардеш.
 Лафар — коммуна во Франции, в департаменте Верхняя Луара.
 Лафар — коммуна во Франции, в департаменте Воклюз.

Носители фамилии
 Лафар, Георгий Георгиевич (1894—1919) — советский разведчик, чекист.

Другое
 Лафар (дворянский род)

См. также
 Лафарг


Sounds like the Academy Awards were fun to watch last night, or at the very least, interesting enough! I'm not a huge movie buff myself, so that and my lack of cable kept me from following along. However, talk about luck: I had JUST finished tweaking my clues for today's offering, and I saw numerous headlines regarding 33-Down and his controversial joke at the ceremony…there went my original clue, replaced with the *extremely* fresh one you see now! Hopefully I didn't botch anything about it, as I don't know anything outside of what a few news sources have confirmed.
Today's post is going to be super short…I apologize. This past week (actually, more like two weeks) has just been super busy, and I've gotta focus on passing my courses as well as keeping a roof over my head. So for those of you that have written me emails lately, forgive me for not responding in a timely manner, and I promise I'll get to you at some point in the next day or two!
We're back to Themeland in today's offering, after a two-week hiatus. This puzzle is meant to have a modern feel to it, more so than my usual publications; it was inspired by the theme component of 21-Across, which I didn't know was a thing until I read about it in recent news. When I noticed that this could combine with the theme component of 49-Across to produce a legitimate English word, my crossword light bulb went off. Unfortunately, I had to alter the original theme idea significantly, as you will see from solving, but it makes for a nice bit of trivia! Enjoy, all y'all.
Really grateful I'm not Pete Carroll right now. Or the Seahawks' Offensive Coordinator. Or a Seahawks fan altogether; that fight in the final 18 seconds, while providing me a bit of comic relief, was just disgraceful. But hey, baseball season is officially around the corner, and basketball is starting to get pretty exciting!
Quick puzzling announcement: my friend Evan Birnholz has a kickass meta puzzle this week on his blog, Devil Cross. I had the privilege of test-solving, and actually figured out the meta answer then, which gave me quite an "aha" moment! So try it out, along with the many other great puzzles that he publishes every Saturday!
Notice how these entries are clued as if they're completely legitimate. From a constructor's standpoint, these things are loads of fun to create, and I believe are great exercises for generating fresh entries while working with wide-open spaces. That being said, I hope the solve is even more enjoyable, otherwise I haven't done my job! Think outside the box while solving, and let me know about your experience; your feedback is crucial to how I design these in the future! Rate/comment/PM, and I'll be super appreciative. Every thought counts.


CAMP 5280 strives to bring fun and excitement into kids' lives while integrating the gospel of Jesus Christ into all facets of the camp experience.
What others are saying about CAMP 5280?
what they wanted for lunch, and what snack to get. It made them feel included!" - Laura C.
PEOPLE organizing this camp." - Andrea L.
loved being there for 2 weeks!" - Kelly W.
"Everything!! My son had an awesome time! Talked about it non stop. The leaders were great and I loved him having a hot lunch! Price was great too! We will definitely be back next year!!" - Beth C.


PolyPid's abstract "Enhanced bone healing of Gustilo III severe open tibia fractures treated by immediate implantation of antibiotic-formulated bone grafting" was accepted to the 36th Annual Meeting of the European Bone and Joint Infection Society which will be held in Nantes, France, on 7-9 September 2017. The abstract will be presented in the poster presentation.
PolyPid will take part at the BIO International Convention, the world's largest conference in the field of life sciences, showcasing the world's leading companies and developments in the fields of medical technology and life sciences. PolyPid will be represented by Mr. Amir Weisberg (CEO) as well as Dr. Tamar Alon (CBD) and Dr. Dan Popovic (CBO).
PolyPid will participate at the AATS conference with its product candidate D-PLEX100. To learn more about our interim Phase Ib results as well as plans for starting up the Phase III clinical trial in the US, come and visit us at the Booth 831 in the exhibition hall.
PolyPid's senior management will attend the J.P. Morgan 35th Annual Healthcare Conference, to be held on January 9-12, 2017 in San Francisco, California, USA.
Dikla Czaczkes Akselbrad, PolyPid's Chief Strategy Officer, will present PolyPid at the third annual, Oppenheimer Israel promising private companies conference, to be held on November 13th, at the David Intercontinental in Tel Aviv, Israel.
PolyPid's and BALI's (Biofilm Alliance) abstract was accepted to be presented at the Alternatives to Antibiotics (ALTANT) conference to be held on May 18-20, 2016 in Utrecht, The Netherlands. The abstract, titled: "Prevention of Staphylococcus aureus biomaterial-associated infections using a polymer-lipid coating containing LL-37-derived antimicrobial peptides", will be presented by Dr. Martijn Riool, Research Scientist, University of Amsterdam.
PolyPid's and BALI's (Biofilm Alliance) abstract was accepted to be presented at the Dutch Society of (Medical) Microbiology spring meeting to be held on March 22, 2016 in Papendal, The Netherlands. The abstract, titled: "Polymer‐Lipid Coating Releasing Novel Antimicrobial Peptides Prevents S. aureus Biomaterial Associated Infection", will be presented by Dr. Martijn Riool, Research Scientist, University of Amsterdam.
PolyPid's senior management will attend the J.P. Morgan 34th Annual Healthcare Conference, to be held on January 11-14, 2016 in San Francisco, California, USA.
PolyPid's and BALI's (Biofilm Alliance) abstract was accepted to be presented at the final COATIM meeting to be held on December 17, 2015 in Leuven, Belgium. COATIM consortium was established with support from the European Commission (Seventh Framework Program – FP7) in order to develop antibiofilm coatings for implants. The abstract, titled: "Prevention of Staphylococcus aureus biomaterial-associated infections using a polymer-lipid coating containing the antimicrobial peptide OP-145", will be presented by Dr. Anna de Breij, Research Scientist, Leiden University Medical Center.
PolyPid's and BALI's (Biofilm Alliance, part of the Seventh Framework Program – FP7) abstract was accepted to be presented at the Netherlands Society for Biomaterials and Tissue Engineering (NBTE) annual meeting to be held on December 3-4, 2015 in Lunteren, Netherlands. The abstract, titled: "Prevention of Staphylococcus aureus biomaterial-associated infections using a polymer-lipid coating containing the antimicrobial peptide OP-145", will be presented by Dr. Martijn Riool, Research Scientist, University of Amsterdam.


Gallagher Electric is THE local solution for all your residential electrical needs. We are family owned and operated and bring over 30 years of experience to your home. Our expertise ranges from troubleshooting and repair to remodels and new home construction.


Overall, the Group delivered a very positive result with 14% growth in revenue, a 22% increase in adjusted operating profit and substantially improved cash generation although we anticipated a slightly stronger profit performance in this final year of our long-term recovery plan.
WYG has strong new business leaders, improved governance and culture, a new five year growth strategy and a robust order book. We have started the current year well and the opportunities we are seeing in our core consultancy services and international development markets, combined with our initiatives to drive efficiency and resilience across the Group, leave us in a strong position from which to deliver good growth in the current year.