In your application's start method (e.g. in global.asax.cs) you should initialize service locator by setting a dependency resolver (IDependencyResolver) implementation (an IoC container) with SetResolver method.
Configures the dependency resolver implementation to use.
SetResolver methods return previously configured IDependencyResolver implementation, or null if none is configured before.
Returns currently configured IDependencyResolver implementation.
Throws a InvalidProgramException if none is configured yet.
Returns true if a IDependencyResolver implementation is configured through SetResolver. Returns false, if not.
Returns the registered implementation for requested type.
If no implementation is registered, throws a KeyNotFoundException.
Second overload of Resolve method accepts a name parameter. This should be used if different providers are registered for an interface depending on scope.
For example, Serenity has a IConfigurationRepository interface that can have different providers based on setting scope. Some settings might be Application scoped (shared between all servers for this application), while some might be Server scoped (each server might use a different unique identifier).
This is functionally equivalent to Resolve method with one difference.
If a provider is not registered for requested type, or no dependency resolver is configured yet, TryResolve doesn't throw an exception, but instead returns null.


I missed @lighthousewines beer club again, this was specially hard to take give it was Stone Brewing Night! However, given it was my anniversary, and my daughter's birthday, chances of getting out were slim to begin with. Had a lovely dinner at Uluru in Armagh to make up for it (they even have a few local beers on the list but i was driving so on good behaviour). Managed to pick up the left over bottles (see below), any favourites from the night I should look forward to in particular?
My last post covered this years Hilden Beer Fest, which was a great night sampling beers. I managed to follow this up with another night beer tasting with a beer loving friend - even ticking a few more off the list. Now I did take notes, but I seem to have misplaced my geeky little beer book... so the below is going to be based on my memory (which is bad at the best of times) and untapped logins!
Style: Belgian Pale Ale. ABV: 7.5% From: The Vineyard.
Thoughts: Lovely little beer this, light, delicate but packing in plenty of interesting subtle flavours. Pleased it came in quite a small bottle as I'm guessing this is dangerous in larger quantities. Worth looking out for, I'll buy again.
Style: Biere De Champagne. ABV: 11.5% From: The Vineyard.
Description: Poured a bright yellow, with a very light cloudlyness and a tiny white head. Lots of very obvious carbonisation. Given the obvious links with champagne production referenced on the bottle I'm not sure how much of this is the power of suggestion... but there is a real vinous and soft fruit quality to the smell. The taste also has some of that peachy soft fruit and some light oak, although there is definitely more graininess than you'd get in champers. As it warmed it got slightly sweeter, but still pleasant - though I did follow the serving instructions pretty closely. Light bodied, slightly thicker and oiler as it warmed up. 11.5%? Where?
Of the other's we tried I'd say To Øl's Dangerously Close To Stupid (Imperial IPA, 9.3%, The Vineyard but also at Lighthouse Wines) was the best - lots of citrus, pineapple, and grapefruit (especially in the aroma) I was a bit worried it would be an over-bitter hop bomb but the flavour was nicely balanced, very drinkable, and something I need to be buying again for a proper taste!


The new GSD E-Bike from Tern provides the best of both worlds for cargo bikers. It measures the same length as a typical e-bike but has room for cargo hold panniers and up to two child seats. And since it's designed to fit in small elevators, you can store it indoors, unlike most cargo bikes. It's also equipped with Bosch's Dual-Battery tech, allowing you to connect up to two batteries for a range of over 150 miles, letting you commute for several days on a single charge. Available in 400 or 900-watt configurations and a variety of colors, it's slated for sale in early 2018.


You're here because you took the time to recommend Clover to a friend. Thank you! We have found that some of the best employees at Clover come from recommendations from folks already working with us.
Fill out this form to let us know more, and be sure to remind your friend to fill out an application to Clover at the Careers section of the website.


For the next few weeks my series on the hero's journey will focus on the cosmogonic cycle that Joseph Campbell describes in his book The Hero with a Thousand Faces. This part of his book is often overlooked in discussions of the hero's journey, but I think it's absolutely essential to understanding the hero's journey itself. Hope you enjoy it!


text:
Q: How to cite beamer templates It  may be a very basic question, but what is an appropriate way to cite/reference a beamer template?
I have seen many presentations which rely on specific example templates (examples) and I was wondering, how can we actually cite the templates that we might use, at the end of our presentations?
Thanks

redpajama_set_name: RedPajamaStackExchange


text:
Bernd Lahl (* 20. Oktober 1940 in Annaberg) ist ein deutscher Geologe und Sachbuchautor.

Leben
An eine Häuerausbildung und einem Praktikum beim VEB Geologische Forschung und Erkundung in Freiberg schloss Lahl ein Studium der Geologie an der Bergingenieurschule "Georgius Agricola" in Zwickau an, das er als Ingenieur abschloss. Beim Rat des Bezirkes Karl-Marx-Stadt war er von 1966 bis 1990 als wissenschaftlicher Mitarbeiter im Sektor Lagerstättenwirtschaft der Abteilung Geologie beschäftigt. In dieser Zeit war er mit der Altbergbauforschung für die Staatsplanthemen "Diamant-Synthese" und "Neue keramische Rohstoffe" betraut. Ab 1991 bis zum Erreichen seines Ruhestandes 2002 war als selbständiger Unternehmer (Geschäftsführer und Gesellschafter zweier Kiessandtagebaue) tätig. Er lebt in Chemnitz.

Lahl beschäftigt sich seit den 1970er Jahren vor allem mit der Bergbaugeschichte seiner Heimatstadt Annaberg und veröffentlichte mehrere Bücher zur Geschichte des Bergbaus, zur Geologie und zur bergmännischen Kultur des Erzgebirges. Den Schwerpunkt seiner Forschungen stellen bergmännische Gebräuche dar.

Ehrungen
Mit seiner Broschüre über die Bergkirche St. Marien in Annaberg-Buchholz erreichte er 2012 den 3. Platz des Sächsischen Landespreises für Heimatforschung. Seine 2014 im Chemnitzer Verlag publizierte Biografie Barbara Uthmanns wurde 2015 mit dem Kammweg-Literaturpreis in der Kategorie Sachbuch ausgezeichnet. Wegen seiner "Verdienste um die Bergbau- und Heimatforschung im Raum Annaberg" ernannte ihn die Stadt Annaberg-Buchholz am 2. Advent 2016 zum "Ehrenbergmann des Besucherbergwerkes Im Gößner".

Schriften

Literatur
 Hartmut Kahl: Zum 80. Geburtstag des Geologen, Montanhistorikers und Volkskundlers Bernd Lahl, in: Bergglöckchen, Zeitschrift des Sächsischen Landesverbandes der Bergmanns-, Hütten- und Knappenvereine e.V. (2020), Heft 2, S. 24–25.

Weblinks

Einzelnachweise

Geologe (20. Jahrhundert)
Geologe (21. Jahrhundert)
Person (Annaberg-Buchholz)
Person (Chemnitz)
Person (Bergbau)
Heimatforscher (Sachsen)
Sachbuchautor
Autor
Deutscher
DDR-Bürger
Geboren 1940
Mann
Heimatforscher (Erzgebirge)

redpajama_set_name: RedPajamaWikipedia


WinROAD محصول شرکت ایتالیایی S.T.S. SRL یک نرم افزار قدرتمند در حل مسائل توپوگرافی، مدل‌سازی سه‌بعدی عوارض زمین، طراحی جاده و طراحی شبکه‌های تکنولوژیکی است. این نرم افزار با یکپارچه شدن با سایر محصولات این شرکت، یک جریان‌کاری واحد موسوم به API را ایجاد نموده که در آن امکان مدیریت خودکار و دستی مراحل مختلف طراحی وجود دارد. این نرم افزار از یک موتور پردازش‌گر اختصاصی برای طراحی و ترسیم CAD بهره گرفته که به کاربر این امکان را می‌دهد تا دستورات مورد نیازش را با یکدیگر ترکیب کرده و در نتیجه در زمان طراحی صرفه‌جویی چشم‌گیری کند. دستورات طراحی مهندسی این نرم افزار بسیار مشابه سایر نرم افزارها بوده با این تفاوت که امکان شخصی‌سازی آن‌ها تا حد زیادی وجود دارد. از جمله آن‌ها می‌توان به ترسیم خطوط، ابعاد، Polyline، بلوک‌های سه‌بعدی و بسیاری دیگر اشاره کرد. این نرم افزار به خوبی از فایل‌های DWG و DXF پشتیبانی نموده و امکان ایجاد تا هزاران لایه بر روی پروژه وجود دارد.
STS WinROAD package is a powerful software tool aimed at solving topographic problems, 3D terrain modeling, road design and technological network design. WinROAD interface integrates with the other STS programs, creating an Integrated Design Environment (A.P.I.) that allows the unitary and automated management of all the design phases of a work.
WinROAD boasts, among many features, some innovative features. One of these is undoubtedly that of being an application of WinCAD, a powerful three-dimensional 32-bit CAD specifically developed by STS for technical engineering design. This allows the user to "mix", according to his needs, the commands of the road procedure with those of the CAD. Thanks to this particular feature WinROAD allows you to get highly professional graphics, without having to resort to cumbersome data interchange operations, through DXF files, between the road procedure and the external CAD.
The commands of WinCAD are very similar, even in the interface, to the commands that are usually used with the most common commercial CAD. In particular, it is possible to manage various graphic entities (point, line, arc, dimensions in various styles, circle, polyline, 3dface, polygons, blocks, hatching, etc ...), multiple osnap modes (center, end, node, intersection), near, medium, in addition to the convenient dynamic osnap) and numerous tracking commands (copy, move, top, offset, cut, extend, scale, move, rotate, iron, edit text, etc ...). WinCAD directly manages files in DWG or DXF format containing blocks, different types of lines and hatches, 16 million colors and a thousand different layers. WinCAD, and therefore also WinROAD, is able to manage raster images, even of large format, acquired through a scanner or digital camera. These images can be geo-referenced, that is, reported to real coordinates, so as to be able to use them as a cartographic support during the project phase or in the subsequent verification phases.
The georeferencing process involves both the rototranslation and the linear and angular deformation of the raster in order to correct any image distortions.
In addition, a powerful 3D navigator is available, integrated into the program, which allows you to create exceptional three-dimensional model animations along any path, being able to choose both the lighting model and the color of the surfaces.
The basic philosophy of WinROAD, common to the most innovative three-dimensional CAD, is to rely on a three-dimensional modeling of the terrain, from which it is possible to extract, in an automatic and mathematically coherent way, all the elaborations that are at the basis of the design: quoted plans , contour plans, sections, profiles, volume calculation, 3D models with triangles or rectangular meshes, perspective views and rendering.
Alongside these advanced managements, more traditional methods of operation are always available, such as manual entry of listed plans, campaign booklets and sections.
On the ground model it is therefore possible to design automatically, always maintaining a high degree of control and possibility of intervention by the designer, road axes, 3D design models, excavations, filled dumps, excavations for technological networks.
The degree of detail of the sections, both of the road type and of the technological network, can graphically represent and compute, not only the excavation and restoration of the ground, but also the layers of the pavement, foundation layers, works of art, gutters, guard ditches, safety barriers, user definable DXF blocks (lighting bodies, planting, etc.).
WinROAD is organized according to a modular structure to meet the different professional needs. In particular, only the Topography module is available (for those not involved in road design), as well as the complete version of the Road Module.
شرکت سازنده: اس.تی.اس. اس‌آر‌ال. / S.T.S. SRL.
2. فایل Setup.exe را به صورت Run as Administrator اجرا نموده و نرم افزار را نصب کنید.
3. فایل HASP Drivers Setup.exe را به صورت Run as Administrator اجرا نموده و درایورهای لازم را نصب کنید.
4. فایل WinTopog.exe واقع در پوشه Crack را در محل نصب نرم افزار (به طور پیش‌فرض C:\winroad) کپی و جایگزین فایل قبلی کنید.
5. فایل hlvdd.dll را از پوشه Crack کپی کرده و در محل C:\Windows\SysWOW64 (برای سیستم‌های 64 بیتی) یا C:\Windows\System32 (برای سیستم‌های 32 بیتی) قرار دهید.
7. از منو Setting واقع در نوار ابزار بالای پنجره، گزینه Language را انتخاب کرده و بر روی English قرار دهید.
8. نرم افزار یکبار بسته و مجدد اجرا کنید.
9. نرم افزار کاملاً فعال شده و بدون هیچ محدودیتی قابل استفاده می‌باشد.
- بهتر است همیشه نرم افزار با دسترسی Administrator اجرا شود.


Illusion Hand Free is the lite version of Illusion Hand for iPhone. It provides the Color Focus Effect to enhances your photo.First, your photo is loaded in greyscale automatically, then use your finger as a brush to "draw" the effect on any parts of the photo as you wish. It's very easy to make an unique photo with your own style. The Color Focus Effect is totally "FREE"for you !! - Color Focus Effect : Combines the greyscale and colorful part of the photo. For example, people in color and background in greyscale.- Build in Gallery:The build in gallery helps collect your masterpieces. The title and description can be assigned to every masterpiece. - Slide show function:It's easy to demonstrate your masterpieces to your family and friends by using slide show function. - Sharing:Your masterpieces can be shared to facebook, twitter, or sent by email.Want to be the coolest guy of your friends ? Want to show your taste ? Just try Illusion Hand Free for iPhone !-> Do I mention the Color Focus Effect is totally FREE? Sep. 31, 2010- Top 1 (Photography Free) in 26 countries.- Top 3 (Photography Free) in 25 countries.----------FEATURES----------- Photo can be initially loaded in greyscale or colorful (configurable in settings).- Color Focus Effect is available in this free edition.- Support both 3.5 & 4 inch Retina high-resolution Display. - Take photo by front facing camera.- Four brushes with brush size adjustment.- Lock(pam) / unlock function to prevent accidental scratches during zooming.- Undo and redo .- CSI Light : to show the area which was already painted in red light tint.- Single tap to show/hide toolbar in editing mode.- Both portrait and landscape orientations are fully supported.- Snapshots can be taken with undo/redo steps.- Has a gallery to collect your finished masterpieces. It's easy to display your awesome works to your family and friends. - Finished creations can be saved to the gallery with your own title and description.- Finished creations can be shared by Email , Facebook , Twitter.- Finished creations can be exported to camera roll.- Finished creations can be downscaled before sharing.
You are logged in as . Please submit your review for Illusion Hand Free - IllusionHand , add a splash of color to your photos !
---------------New Feature---------------- Now you can choose photos from facebook albums to edit.- Share photos to Weibo (iOS 6.x)- No more support for iOS 4.x.---------------User Interface---------------- Support iPhone 5 Retina 4 inch display.- User interface improvement.---------------Bug fix---------------- a minor bug fix.


text:
Can this marriage be saved?
Posted by Frances Marion Platt on August 25, 2022 in Movie Review · 0 Comments
Meryl Streep and Tommy Lee Jones in Hope Springs.
When I was a kid, my unhappily married mother would never come back from her massive weekly grocery-shopping expeditions without a magazine or two of the type pitched at housewives. Thus it was that I discovered the eternally running column in Ladies' Home Journal called "Can This Marriage Be Saved?" In those times, when the option of divorce encountered much more social disapproval than it does nowadays, the answer was pretty much always "Yes," no matter how awful the marital circumstances. I don't know what glimmer of hope or helpful tips Mom ever might have found therein, but somehow my parents slogged on, staying together "for the sake of the children" until I was nearly ready to head off to college.
In Hope Springs, the new dramedy by David Frankel (The Devil Wears Prada, Marley & Me, The Big Year), aging Nebraskans Kay (Meryl Streep) and Arnold Soames (Tommy Lee Jones) are past that particular point of consideration, their kids having gone on to lives of their own. But in Kay's estimation at least, they have finally come to their "Can This Marriage Be Saved?" moment. They have slept in separate bedrooms for many a year and had no sex at all in at least four years. Worse, Arnold shows Kay no affection whatsoever, and she's wondering, after 31 years together, what the point is of staying married.
Arnold, for his part, is emotionally as well as physically withdrawn and in deep denial that their marriage is in trouble. He reenacts the same routine every day, reading the paper while he eats one egg and one slice of bacon for breakfast, then gives Kay the most sanitary and perfunctory kiss-on-the-cheek possible and heads off to his job as a tax lawyer. At dinnertime he complains to Kay about his clients, then watches golf on TV until he falls asleep in his recliner.
Kay smiles relentlessly and responds with an upbeat "Mm-hmmm" to most of Arnold's rants, but whenever he turns away from her, the pain and sense of loss are plain on her face. At her job at a Coldwater Creek store, she seeks relationship advice from a cynical co-worker but finds no comfort. Still, as Alexander Pope wrote, "Hope springs eternal in the human breast," and when Kay comes across an ad for weeklong intensive marriage counseling sessions with a nationally famous psychiatrist named Dr. Bernie Feld (Steve Carell), who happens to be headquartered in a mythical Maine town called Great Hope Springs, she takes it for a sign and plunks down a big chunk of her savings on the trip without asking Arnold's permission first.
Predictably, Arnold reacts with outrage, refusing to go along, denying any need for counseling and vilifying Feld as a charlatan who's just out to part the gullible from their money. For the first time, Kay tries to verbalize her dissatisfaction in the loveless marriage, the nights apart, the vacations always spent visiting family, the Christmas and birthday presents always being things like a roof repair or a new water heater. When Arnold digs in his heels, Kay says that she'll go alone. Only halfway into the scheduled day of departure does Arnold relent and catch up to Kay at the airport.
And so begins a week of continuing resistance on Arnold's part, gently undermined by Kay's and Dr. Feld's determination to coax him along. The process is punctuated by grudging false starts and embarrassing setbacks – especially once the subject of the couple's sex life, which even in its best days never got past the plain-vanilla stage, gets broached. It's only at this point that the film's comedy potential kicks in, as Kay picks up a manual of sex tips from gay men for straight women and doggedly sets her mind to trying out activities that transcend her unadventurous previous experience.
Arnold is the sort of repressed curmudgeon role in which Jones has specialized for a couple of decades now, playing grouchy veterans like Agent K in the Men in Black movies and Captain Call in the TV mini-series Lonesome Dove. Meryl Streep being arguably America's greatest living actress, it's easy to take her heartrending transparency as Kay for granted, but it's fun to see her get a chance to flex her underrated comedic skills for a change. Jones really has the tougher job here, as he's challenged to convey the fraying of Arnold's emotional armor with enough conviction to persuade us that this marriage really might be saved after all.
For all the polished professionalism of these two – not to mention the quality of the writing and direction, and Carell's admirable restraint in the role of the earnest therapist – I'm still not quite sure that I buy the happy outcome. But after a seemingly endless summer of blockbuster action movies, it's such a joy to watch two such dreadnoughts at work in a story pitched at grownups.
And one more leading "character" deserves special mention: If you've ever had the good fortune to visit the historic downtown of Stonington, Connecticut – which stands in here for Great Hope Springs, Maine – you'll have the added delight of reexperiencing its charms on the big screen. If you're stuck in an unhappy relationship yourself, the movie may not persuade you to entertain any giddy glimmerings of romance rekindled, but at least it'll divert you for a couple of hours in a lovely New England town in the company of two of Hollywood's most talented.
Previous Post Bob Dylan to play Bethel Woods Next Post Paddlers, check out Bristol Beach State Park in Saugerties
Be local. Read local.
From our affiliates
Nature at your doorstep – Thompson Pond Preserve
Collegiate baseball coming to Saugerties
School Board: Minew, Heidcamp and Hyatt win seats
New Paltz voters OK $52.2M school budget, $500K safety project
Lost and found and "liked"
New entrant joins Woodstock council race
Kingston, New Paltz, Saugerties, Poughkeepsie, Rhinebeck, UPAC, Bardavon, Woodstock, music, event, Bard, SUNY-New Paltz, events, Ulster Performing Arts Center, Rosendale Theatre, nature, Art, movie review, Kelder's Farm, Kerhonkson, Hurricane Irene, Haunted Huguenot Street, Day of the Dead, Bob Berman, booksignings, bookstores, Calvert Vaux, Catskill, Hudson Valley Seed Library, Ken Greene
Hudson Valley Almanac Weekly © 2013 All Rights Reserved

redpajama_set_name: RedPajamaCommonCrawl


A cooling process that uses power for cooling components such as fans to actively exhaust heat from components.
The preferred LED (Light Emitting Diode) chip technology containing Aluminum, Indium, Gallium, and Phosphorous to produce red, orange and amber-colors.
An average rating, in hours, indicating when a percentage of a large group of lamps have failed, when operated at nominal lamp voltage and current. The life of an LED is defined as the operating time in hours for the lamp to reach L70 which designates 70% lumen maintenance (or 30% reduction in initial light output). Every lamp type has a unique mortality curve that depicts its average rated life.
The angle between two directions for which intensity(candle power) is 50% of the maximum intensity as measured in a plane through the nominal beam centreline.
The grouping of LEDs (from production) according to specifications, such as light output, color, and voltage so that LEDs of similar light performance are grouped.
A term used for the board or "light engine" to which the LEDs are applied. The chip or "light engine" is a circuitry board for the LED.
The description used to describe the effect of heating an object until it glows incandescently, the emitted radiation, and apparent color, changes proportional to the temperature; easily envisioned when considering hot metal in a forget that glows red, then orange, and then white as the temperature increases. Term and symbol (K) used to indicate the comparative color appearance of a light source when compared to a theoretical blackbody.
The calculated rendered color of an object.
Heart of the LED. The light emitting semiconductor.
An optical element used to mix light rays to improve uniformity.
A two-terminal semiconductor device having a p-n (positive-negative) junction which allows energy travel in one direction.
A self-contained power supply that has outputs which match the electrical characteristics of the lamp. It is similar to a ballast and is used to power illumination sources.
A footcandle is one lumen per square foot.
An object that conducts or convects heat away from an LED lamp.
The preferred LED (Light Emitting Diode) semiconductor technology containing Indium, Gallium, and Nitrogen to produce green, blue and white-colored LED light sources.
An arrangement of LEDs onto a printed circuit board or other surface that is capable of producing light when powered.
Lumen (lm) is a measure of luminous flux or quantity of light emitted by a source.
The remaining flux percentage at the rated life of a light source.
A graph comparing the loss of light output against the time the light source is used.
Measures the efficacy of the complete luminaire, or fixture, taking into account the optics, thermal design, and other design factors that impact efficacy. It is calculated by measuring the total light output of a luminaire, divided by the amount of power drawn by that luminaire. It is expressed in lumens per watt (lm/W).
A lux is one lumen per square meter; differs from foot-candle by about a factor of 10.
LED testing that measures total luminous flux, luminous intensity of distribution, electrical power, efficacy, and color characteristics.
LED testing that measures the lifespan of LEDS by measuring the amount of lumen depreciation.
A method of cooling that takes place without the use of power.
The retrofit LED is a bulb or trim that is designed to convert an existing line voltage luminaire housing to an energy efficient LED luminaire.
Lighting that uses LEDs to emit light from a solid object -a semiconductor- rather than from vacuums or gas tubes used in incandescent and fluorescent lighting. Solid-State Lighting does not contain moving parts that can break or shatter, potentially contaminating the environment.
A measure of the heat transfer capacity of the LED. Lower resistance is preferred.


The cost of a health care plan is usually the main consideration when picking one. However, you should also take note of the extent of medical coverage that you get. Major medical insurance covers everything from the usual check-ups to major medical procedures. On the other hand, basic health insurance will only help pay for certain types of medical services.
Basic health insurance is ideally used as a supplement to medical insurance. Some people could only afford this type of insurance because of their small prevailing wage. Those who subscribe to this plan pay a low amount of premium to get cash reimbursements for their visits to the doctor, surgical procedures, and laboratory tests. The total amount of reimbursements is usually lower than the overall cost of the services given.
It is easier to apply for basic health insurance. The employee can consult a doctor of their choice without needing to get an approval or referral. They will not be checked for any pre-existing illness. However, reimbursements for treating pre-existing medical conditions will be received only after six months.
If the employees' prevailing wage can afford it, employers may opt for major medical insurance. You will shell out more money, but it will provide wider medical coverage. It covers doctor visits, surgery, prescription drugs, rehabilitation, therapy, nursing home, and mental health care.
Examples of this type of insurance include PPOS, HMOs, and fee-for-service programs. It will covers check-ups, hospital visits, and outpatient care. It does not provide fixed cash reimbursements. Instead, the employee will be given a yearly out-of-pocket spending limit that covers your medical expenses even if the procedure they need is expensive. Some routine maintenance may be given for free for a small additional amount in the premium.
Employees have different needs. With the help of a fringe benefits specialist, you will be able to provide for this need through a customized and specialized health insurance plan for your employees.
ARCHER JORDAN is a third party administrator that thoroughly understands which type of medical coverage is best for you. Contact us at your earliest convenience.


Tiger Woods returns to the PGA Tour this week and for once it's not a moment too soon for the golf world, and I for one hope he will teach everyone a lesson his week.
In the last couple years, Tiger has been repeatedly sidelined and been kept out of golf by scandal, injuries, marital problems — we all know the list — and each time he returned it felt like he was rushing to get back from something. The 2010 Masters. The 2011 Players Championship. The 2011 PGA Championship. When he returns at the Frys.com Open at Cordevalle in California, he'll be coming back on his own timetable. The dust has finally settled, and I think we will see some good golf from Tiger.
Everything points toward a good golf week for Tiger. He's now had plenty of time to work with new swing coach, Sean Foley, who's been giving him regular golf lessons for a while now. If it's going to work with Foley, then we should start to see it this week. I know it was only a practice round, but that 62 at Medalist he shot last week is a good sign. The caddie change is also good for him. Things had obviously gotten stale with Steve Williams, and Joe LaCava ,an experienced caddie whom Tiger knows and respects, is the perfect replacement.
This entry was posted in Blog Post, News Stories and tagged Caddie, golf, golf club, golf lessons, golf tuition, james irons golf, Joe LaCava, PGA, Sean Foley, Steve Williams, Tiger Woods, US open, USPGA. Bookmark the permalink.


text:
'
' Copyright (c) 2013-2013, John Mettraux, jmettraux@gmail.com
'
' Permission is hereby granted, free of charge, to any person obtaining a copy
' of this software and associated documentation files (the "Software"), to deal
' in the Software without restriction, including without limitation the rights
' to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
' copies of the Software, and to permit persons to whom the Software is
' furnished to do so, subject to the following conditions:
'
' The above copyright notice and this permission notice shall be included in
' all copies or substantial portions of the Software.
'
' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
' IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
' FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
' AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
' LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
' OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
' THE SOFTWARE.
'
' Made in Japan
'

Namespace Nodes

    Public Class ToInexactPrimitive
        Inherits PrimitiveNode

        Public Overrides Function Apply(funcName As String, ByRef args As ListNode, ByRef env As Environment) As Node

            CheckArgCount(funcName, args, 1)

            Dim a = env.Eval(args.Car).ToString
            Dim direction = funcName.Split(">").Last

            Try
                If direction = "exact" Then
                    Return New AtomNode(Convert.ToInt64(a.Split(".").First))
                Else
                    Return New AtomNode(Convert.ToDouble(a))
                End If
            Catch ex As Exception
                Throw New Ex.ArgException("cannot apply '" & funcName & "' on " & a)
            End Try
        End Function
    End Class

    Public Class ToStringPrimitive
        Inherits PrimitiveNode

        Public Overrides Function Apply(funcName As String, ByRef args As ListNode, ByRef env As Environment) As Node

            CheckArgCount(funcName, args, 1)

            Dim val = env.Eval(args.Car)

            If Not funcName.StartsWith("->") Then
                CheckType(funcName.Split("-")(0), val)
            End If

            Dim s = val.ToString

            Return New AtomNode(s)
        End Function
    End Class
End Namespace

redpajama_set_name: RedPajamaGithub


15 new works on paper by Kamilla Talbot curated by townhouse.bz at our mid-century modern salon show.
Talbot's new works on paper continue her distinctive use of watercolors and silkscreen printing. Painted en plein air in Maine, these pieces showcase Talbot's celebrated color palatte with bold, painterly strokes. Join us at Guild Greene Gallery.
I so love the Preble Cove series!
I agree, GL. Preble Cove 8 is a big favorite of mine, if I had to choose.


Roam the hills; cycle the boreens; visit the artists; discover historical and archaeological sites; cross to the islands by car ferry or by the only cable car in Ireland; find your inner peace at the meditation centre. Enjoy heavenly views; fabulous seafood; fishing; golfing; canoeing and sailing.
All this and more can be found in the area around T�r na Hil�n Cottages, on the Beara Peninsula, by the shores of Bantry Bay. We, your hosts Sean & Ruth O'Sullivan will ensure that your stay in our cottages in this wonderful part of Ireland will be a memorable and pleasant one.
We have sheep, and riding ponies available for our visitors. Stabling also available if you would like to bring your own horse.
The cottages are on a hill road in a secluded location. Fully fitted with wooden and tiled flooring, and can accommodate 5 or 6 people. A cot and high chair are also available.
The heating is by open fire and back boiler. There are also electric heaters in all bedrooms and a storage heater in the living area. Some turf from our own bog will be supplied.
The kitchen is equipped with electric cooker; small fridge; microwave; toaster and kettle. A washing machine, tumble drier and small freezer are in an adjacent shed.


How does an accelerated death benefit differ from a viatical or life settlement?
An accelerated death benefit allows a portion of the death benefit to be paid from the insurance company to the insured. This option, which is not available in all life policies, would offer a partial payment when the insured has a terminal illness or severe medical condition. After the insured dies the remaining death benefit will be paid to the beneficiaries. A viatical or life settlement is a one time sale of the life insurance policy to a 3rd party buyer.


text:
Home / Courts / 4th Circuit / Tort/Negligence – Claim that contamination at Camp Lejeune caused a death is dismissed
Tort/Negligence – Claim that contamination at Camp Lejeune caused a death is dismissed
By: North Carolina Lawyers Weekly Staff	December 7, 2021
Where a widow alleged her husband's death was caused by his exposure to contaminated water and environmental toxins while he was stationed at Camp Lejeune, her complaint was dismissed. The alleged exposure occurred in the course of the decedent's day-to-day, active-duty service and was thus barred by the rule announced in Feres v. United States, ...
Special Monthly Autorenew Intro Rate!
2:29 pm Tue, December 7, 2021 North Carolina Lawyers Weekly
North Carolina Lawyers Weekly Staff
Previous: Tort/Negligence – Parent fails to show school board engaged in viewpoint bias
Next: Power List 2021 Employment Law


I cannot agree more about moana! I totally see Jesus! Especially when she's asked, "who are you?" And she has to say who she is and sings on the top of her lungs "I AM MOANA!" I can relate to how many times I have to say who I am in jesus. That I am stephanie and am a daughter of Christ and everything that goes with that. I love this! Love you!


This does not imply that existing relationships with this client are poor; however the better everyone in the team is at engaging with everyone in the client organisation the more we can maximise the value of the relationship – to both sides.
This note aims to give some guidance to team members on how they can play their part in building and maintaining the relationships for which they are responsible. For some people in the team this note may act as reassurance that they are doing everything right, for others there may be some useful reminders, while for some there may be new ideas that will help to build confidence, skills, motivation and effectiveness in this vital part of everyone's role.
There is no intention to build a team of clones – please consider the ideas in this document and then decide what will work for you and your contacts – based on your own personality and the unique personalities of the contacts at the clients that you engage with.
Everyone is unique. Every person in every client organisation has a different set of needs, wants, priorities, preferences, personality traits and opinions. If we are to deliver to each person in a way that delights them - and motivates them to choose / recommend us - we need to understand in depth what they want and need and what makes them tick.
We need to treat every contact in the way they want to be treated – not in the way we would like if we were them. This relates to delivery, communication and all elements of added value and client care.
The cornerstone of excellent client management is how we deliver our core expertise. This must be as perfect as possible in the eyes of each contact. We need to understand, and agree, exactly how each would like us to plan, execute and communicate our work.
Excellent delivery is necessary - but not sufficient - if we are aiming for a delighted client. In addition we need to deliver (genuine, significant and well recognised) added value to each contact. Added value is in the eye of the beholder and will be different for each person.
Based on 1-4 above, a key to our success in managing key client relationships is the continuous gathering and dissemination of in-depth, up-to-date, accurate and comprehensive understanding of each client contact. It is useful to keep insights on each contact in a contact template so that everyone knows their preferences. The use of this template can help to identify gaps in understanding and to make sure the information is kept up to date. Information in the template should be kept in line with current data protection policies. An example of a contact template is available on request.
It is everyone's job to gather, maintain and communicate this information, understanding and insight. This means taking every opportunity to keep up-to-date with people we know well, get to know better people we know slightly and meet and build a relationship with people we do not yet know.
Critical to gaining this understanding is a significant amount of face-to-face (and telephone) contact with enough people on both sides and the opportunity to discuss a wide range of subjects (work and personal) - not just the immediate matters in hand.
The quality of the insights shared by client contacts will depend on the quality of the relationship with people in our team and the belief in each contact's mind that by sharing this information he / she will get an even better service – whatever that means to him or her.
There is no substitute for action. Client engagement actions need to be planned and carried out on a regular basis – even though team members are all busy. With the insight gained in the steps described above each team member should develop an action plan designed to delight all of his / her contacts. As far as possible, each team member needs to enjoy this element of his / her role.
Finally, there needs to be a balance between team co-ordination and individual initiative. Everyone should be aware of the client plan and their role in achieving its goals. Actions taken by team members should not confuse the client or mean any contacts are either pestered or ignored. At the same time each team member should be encouraged to take their own initiative based on their knowledge of the client and specific individuals.
Keep up to date with everything going on in their world – pressures, priorities, opportunities etc.
Keep up to date with their views of us – including what they particularly like about what we are doing and how we are doing it today.
Make sure the way we are delivering our core work is just as this person would like. Make sure that there is nothing in what we do and the way we do it that is causing unnecessary irritation or hassle to any individual.
Keep finding ways to add (and to demonstrate) real value to each person.
Every now and again 'surprise' each person with something that is particularly valuable, interesting, useful or enjoyable.
Invite them to events they would really love to attend.
Try to have as much face-to-face contact as you can. Make some of this contact social if possible so that you have a mix of business, social, and personal conversations with each person. The appropriate balance of this conversation will depend on the personality and preference of each individual.
Try to make sure that every point of contact this person has with our firm is positive.
Become / remain a really valuable resource to each person – in core areas of expertise and in other areas that are of value.
Discuss how each person sees the future – personally, departmentally and for the business as a whole. Consider how we (individually, as a client team, as a department and as a whole firm) could help them to take advantage of future opportunities and overcome future challenges. Knowledge of these future events could enable us to deliver value. Whether this is paid or unpaid would depend on the nature of that input / value.
Motivate existing contacts to introduce us to other people we do not know.
Find opportunities to meet face to face with these people, either 1:1 or in a group. Find out from other contacts and colleagues what kind of face-to-face interaction they would be interested in.
Use every interaction – telephone and in person - to build up a real understanding of each person. Ask interesting questions, listen with genuine interest and use the insights you gain to make sure the service they get from us is first class. Demonstrate the connection between our understanding and the quality of service they receive – motivate them to be open with us.
When we know them really well make sure we maintain the quality and freshness of the relationship by reverting to (1) above.
Individually and as a client team map the relationships we have in client x, identify people we do not know and put in place a plan to get to know them. Those team members who are part of that plan need to invest time in building strong relationships with those target individuals.
Do some research on these individuals. Find out from colleagues and other contacts as much as we can so that we can make the best approach to these individuals. Decide who is the best person to make that approach – depending on the role of the individual and what we have managed to find out about them.
Beware of making making a cold approach. Try to find a warm way to meet them - either through an introduction from a colleague or other contact, an invitation to a business or social event or by arranging a joint meeting with someone we already know. Motivate the new contact to meet by making sure that they believe they will get something from this meeting – and then make sure that they do! Use this meeting to get to know the new person and to build rapport.
Once we have met this person use the insights we have gained to plan the most appropriate, interesting, valuable (to us and the individual concerned) next steps in the relationship. Make sure we carry out those next steps, either individually or with colleagues. Check regularly how the relationship is developing. Make sure we neither pester nor ignore this person.
Once we have started to build this relationship revert to (2) and then (1) above.
The aim of the key client plan is to help to maximise the value of the relationship to both sides. This will result in everyone in the client really wanting to work with us, and wanting to do so more than they want to work with our best competitors. The situation at the moment may already be very good; the plan has been put together to ensure that actions are taken to make the situation excellent. These actions cannot be left to a few people. Everyone on the team has a part to play. Success will come from every team member contributing to client engagement, consistently and with passion and skill.
The above guidelines are just that, guidelines. Please decide what ideas and approaches will work for you and the contacts with whom you work. Focus on understanding and treating each person as a unique individual. Everyone in our team is busy but a relatively small amount of effort focused on building and maintaining the strongest possible relationships with everyone in the client organisation can have a massive effect.
One final piece of guidance – Do Something Today!


text:
Q: JPA Spring: Retrieving records from two related tables, ensuring that records do not change in the meantime I am new to JPA and Spring Boot and am creating a project for the first time. In my Spring Boot project, I have two tables as follows:

*

*Policy

@Entity (name = "Policy")
@Table (name = "POLICY")
public class Policy {
  @Id
  private Long id;

  @Column (name = "POLICY_ID")
  private Long policyId;

  @NotNull
  @Column (name = "COVER_ID")
  private Long coverId;

  @Column (name = "ACCT_NUMBER")
  private String accountNumber;

  ...

  @NotNull
  @Column (name = "UPDATE_DATE")
  private Date updateDate;
}

among other fields.

*Coverage

@Entity (name = "Coverage")
@Table (name = "COVERAGE")
public class Coverage {
  @Id
  // @GeneratedValue (strategy = GenerationType.AUTO)
  @Column (name = "COVER_ID")
  private Long coverId;

  @NotNull
  @Column (name = "ACCT_NUMBER")
  private String accountNumber;

  @NotNull
  @Column (name = "STATUS")
  private String status;
  ...

  @NotNull
  @Column (name = "UPDATE_DATE")
  private Date updateDate;
}

Coverage has only one record for each account number, but Policy can have multiple records for the same account number, and the coverage ID in the Policy table references that in the Coverage table.
I am using Oracle SQL Developer to store the tables. My requirement is to retrieve the 10 latest (most recent) records from the Coverage table where the status is Active, and then to retrieve the Policy records for those 10 records simultaneously. These records will then be written to text files, one for each of the two tables. Then some fields in them will be updated and the updated records will be written to new text files.
Here, for the coverage records, I use order by updateDate desc to sort the results in descending order, and in SQL Developer, instead of top (10) I have to put where rownum <= 10. Therefore the read method implementing the first SQL query is:
@Override
public List<Coverage> readCoverRecords() {
  EntityManager em = transactionManager.getEntityManager();
  String coverQuery = "From Coverage where status = 'Active' and rownum <= 10 order by updateDate";
  TypedQuery<Coverage> tq = em.createQuery(coverQuery, Coverage.class);
  return tq.getResultList();
}

which is easy enough. But the issue arises when I try to retrieve the Policy records for these ten Coverage records, which are linked by their account number. That is, if I were retrieving records from both tables, I would have used Coverage.accountNumber = Policy.accountNumber in the WHERE clause. But here I have to return a List<Policy> object, which in turn will be written to a file. Using a single SQL statement I would have written (my query may be wrong; it is only to specify the logic):
select * from Policy P  where P.accountNumber in (select C.accountNumber from Coverage C where C.status = 'Active' and rownum <= 10 order by C.updateDate desc);

This returns a missing right parenthesis error in SQL Developer. Moreover, in any case, this does not guarantee that the Policy records retrieved will be for the same account numbers as the Coverage records, since the updateDate of some records may have changed in the meantime. Therefore, I am looking for a solution which is able to ensure that the retrieved records for Policy will always correspond to the same account numbers as retrieved for Coverage.


Intelligence has so many components and forms that it is almost as difficult to nail down as reality. The Memorization of facts (data) is often confused with both intelligence and understanding and is neither. If this is true, how then do we identify intelligence?


text:
Q: Cannot implicitly convert type 'Microsoft.Azure.Documents.Document' to 'System.Web.Http.IHttpActionResult'. I have the following webapi
 public class TenantController : ApiController
    {
        private static DocumentClient client;

        public TenantController()
        {
            client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["endpoint"]), ConfigurationManager.AppSettings["authKey"]);
        }

        public async Task<List<Tenant>> GetTenants()
        {
            return await  DocumentDBRepository<List<Tenant>>.GetItemsAsync(d => d. != null);
        }

        public async Task<IHttpActionResult> GetTenant(string id)
        {
            Tenant tenant= await DocumentDBRepository<Tenant>.GetItemAsync(id);

            if (tenant == null)
            {
                return NotFound();
            }
            return Ok(tenant);
        }

        public async Task<IHttpActionResult>  PutTenant(string id, Tenant tenant)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            if (id != tenant.TenantId)
            {
                return BadRequest();
            }

            await DocumentDBRepository<Tenant>.CreateItemAsync(tenant);

            return StatusCode(HttpStatusCode.NoContent);
        }

        public async Task<IHttpActionResult> PostTenant(string id, Tenant tenant)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            return await DocumentDBRepository<Tenant>.UpdateItemAsync(id, tenant);
        }

        public async Task<IHttpActionResult> DeleteTenant(string id)
        {
            await DocumentDBRepository<Tenant>.DeleteItemAsync(id);
            return Ok(id);
        }
    }

But I am having issues with the post tenant method

Cannot implicitly convert type 'Microsoft.Azure.Documents.Document' to
  'System.Web.Http.IHttpActionResult'.

Yes I know how a cast works, but I wonder if I am doing something incorrectly here?

A: You haven't told us which line the error occurs on but my guess would be here
    public async Task<IHttpActionResult> PostTenant(string id, Tenant tenant)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        /// Error is here
        return await DocumentDBRepository<Tenant>.UpdateItemAsync(id, tenant);
    }

The problem is that it's returning the document directly. It probably should be
    public async Task<IHttpActionResult> PostTenant(string id, Tenant tenant)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var result = await DocumentDBRepository<Tenant>.UpdateItemAsync(id, tenant);

        return Ok(result);
    }

Which returns the correct type.

A: Your returning the awaited result of
await DocumentDBRepository.UpdateItemAsync(id, tenant); as a IHttpActionResult.
try
var result = await DocumentDBRepository<Tenant>.UpdateItemAsync(id, tenant);
return Ok(result);


In the very private Domaine du Levant, the villa La Vie en Rose is one of the largest properties in the area. The huge tropical garden rises to the sea. Facing the setting sun, the villa enjoy maximum sunshine.
The villa features 5 bedrooms, 3 in the main unit and 2 in a separate bungalow. The living room is spacious as well as comfortable. It opens to the outside and its soft oceanspray. Stay active during your stay with the well-equipped gym as well as access to the tennis courts of the domain.
The long heated swimming pool, the covered terrace, the jacuzzi in addition to the gazebo will give you moments of relaxation. The view here is breathtaking, with the turquoise waters of Petit-Cul-de-Sac bay and its coral reefs.
Pool (6x11m) – Hot tub (6 guests) – Gas Barbecue.
TV – CD & DVD Player – WiFi – Fax machine – French Satellite – DISH Network.
Equipped for 12 guests: Fridge – Freezer – Oven – Cooktop – Microwave – Coffee machine (Regular & Espresso) – Dishwasher.
6 Fitness machine (Elliptic, Treadmill …) – Massage table.
Air conditioning – King Size Bed – Mosquito net – Safe – TV – DVD Player – DISH Network – Bathroom with shower.


text:
ACLU Lauds House Passage of Bill Improving Access to Voting
CONTACT: Meredith Curtis, Communications Director, 410-889-8555; media@aclu-md.org
Sara Love, Public Policy Director, 703-963-2710; love@aclu-md.org
ANNAPOLIS - The American Civil Liberties Union (ACLU) of Maryland today lauded the Maryland State House for voting to approve House Bill 224, which would improve access to voting. The ACLU of Maryland strongly supports the same-day registration and early voting expansion proposals in House Bill 224, which was introduced on behalf of Governor Martin O'Malley.
The ACLU believes voting to be the defining act of citizenship and that the act of voting should be made available to all eligible voters. Additionally, the ACLU believes that same-day registration and expanded early voting will accomplish the goal of encouraging eligible voter participation by making the act of voting more accessible. The ACLU testified in the House on HB 224 and will continue to support the passage of the bill in the Senate.
The ACLU is supporting various aspects of the legislation in coalition with a broad range of organizations, including Common Cause Maryland, Communities United, Demos, the League of Women Voters of Maryland, Maryland PIRG, Progressive Maryland, and the Progressive States.
The following may be attributed to Sara Love, Public Policy Director, ACLU of Maryland:
"This past election, we heard from members across the state that they stood in line for hours only to find they had been kicked off the voter rolls, and there was no option for them to register at the polls to cast a ballot that counted. Thanks to the legislators in the House, Maryland is one step closer to ensuring that when voters go to the polls during early voting, no eligible voter will be turned away. "
ACLU, Common Cause Correct Inaccurate Info from Prince George's...
Constitution Day 2020 - Let People Vote (BONUS EPISODE)


South Korean electronics employer Samsung has released a beneficial device for people who frequently lose or misplace their valuables.
Samsung has introduced the advent of its new SmartThings Tracker, a lightweight GPS tool that could music things which can be attached to it through an LTE-M network. Via this tool, human beings can quick keep track in their most valued items, including backpacks, keys, puppy collars and many more.
As long as the Tracker is within variety of a mobile network, you will be capable of see its place at the Samsung SmartThings App, to be had for both iOS and Android LTE cellular devices. The LTE network coverage extends national, interior buildings in addition to outdoor.
The Tracker has a energy button that can also be used to ship pre-configured notification indicators. as an example, you may set it up so a double button push sends an "I'm home" or "I'm prepared to be picked up" or "My flight simply landed" notification. The tracker can also ship an SOS sign if someone is in hassle.
Tracker location signals and signals are limited to customers with pre-configured shared get right of entry to to the SmartThings App, so, for instance, absolutely everyone with a scanner won't recognise whilst your kid gets out of school.
The SmartThings Tracker will be available through AT&T and with Verizon later in 2018. The AT&T price for the Tracker is $100 including the first year's connectivity. Subsequent service costs $5 per month or $50 for a year.


The church is a gathering of the redeemed. We are made holy. We were not innately holy. The church is a place where those who know they are sick come to the Great Physician (cf. Lk. 5:31). The church is a monopoly of outcasts. It is filled with struggling ex-thieves, ex-drunkards, ex-adulterers, and ex-revilers (cf. 1 Cor. 6:9-11).
The church is (or should be!) a welcoming place for all because we have all been welcomed at Jesus' own expense. Colossians radically says that in the church "there is not Greek and Jew, circumcised and uncircumcised, barbarian, Scythian, slave, free; but Christ is all, and in all" (Col. 3:11).
The church is filled with all sorts of people with all sorts of problems. Let's not be prideful about our problems and prudish about the problems of others.
Let's remember that Jesus Himself was criticized by religious leaders because of the type of people that He hung out with and helped (cf. Matt. 9:9-13; 11:19; 21:31-32; Mk. 2:15-17; Lk. 3:12-14; 5:29-32; 7:36-50; 15; 19:1-10). Let's not be like the hypocritical religious leaders. Let's be like our Leader. Let's be like the One who reaches out to heal our brokeness.
Jesus ministered to prostitutes and the friends that were closest to Him were not the religious elite but humble smelly fishermen. Jesus reached out and literally touched lepers (Matt. 8:2-4; Mark 1:40-44; Lk. 5:12-16).
Think of the biggest outcasts in today's society—whether to you its addicts, illegal immigrants, poor people, unattractive people, those who have AIDS, so-called "white trash," or whoever you think of—they are not outcasts to Jesus. He loves them. He reaches for them.
We must remember the gospel. We must understand that "none is righteous, no, not one" (Rom. 3:10). All have sinned and are declared righteous by God's grace, through the redemption that is in Christ Jesus (Rom. 3:23).
The ground is level at the foot of the cross. We may not have the same addiction, i.e. sin problem, but we all have the sin problem.
We are outcasts that have been gathered for the wedding feast. We have even been given wedding garments. On our own, all of us, would be cast out on our own. Yet, through Christ we are all welcomed and recevice robes of rightouesness.
May the loving and reaching grace of our humble and exalted Lord create Kingdom communities that transform.
It is my prayer that we, as the church, would be more and more laid low by the profound reaching grace of God. God pulled us out of the slew of our sin. He pulled us out of death. We were helpless, lifeless. He saved us. May we understand and be humbled by Jesus' saving work on our behalf and may we reach out as He did; in selfless humble love. We are not better or more righteous than others. We are saved. Saved by grace.


text:
HomeBike NewsRoyal Enfield Himalayan BS6 Red and Black - Spied in India
Royal Enfield Himalayan BS6 Red and Black – Spied in India
Nithyanandh Karuppaswamy
Image – @helmetstories / Instagram
Details of the 2020 Royal Enfield Himalayan BS6 imaes have been leaking every now and then. The latest scoop is that the updated medium displacement adventure tourer has arrived at dealership. It can be reserved for a booking amount of INR 10,000. Hat tip to Neelesh Bajaj for sharing these images.
As reported earlier, the Himalayan BS6 will be available in three new dual-color themes with primary accents being Rocky Red, Lake Blue and Gravel Grey. These colour schemes were showcased at the EICMA show in Milan last year.
Considering that the Royal Enfield Himalayan's 411 cc single-cylinder air/oil-cooled engine is already equipped with electronic fuel injection system, the BS6 conversion is likely to primarily involve ECU tweaks and improvements to the catalytic converter. We don't expect any significant changes to the motorcycle's power and torque outputs which currently stand at 24.5 hp and 32 Nm respectively. The gearbox will continue to be a 5-speed unit.
Thanks to leaked images, it is seen with a smaller spoke wheel, MRF dual-purpose tyres (current one employs CEAT units), revised instrument cluster were the noticeable changes. Also, the dual-channel ABS now appears to be switchable for better off-road performance.
The 2020 RE Himalayan is estimated to be around INR 10,000 to 12,000 more expensive than the BS4 version. With eagerly anticipated KTM 390 Adventure on the horizon, RE is expected to be aggressive with the pricing of its adventure tourer. For reference, the Himalayan currently retails at 1.79 lakh (ex-showroom, Delhi). Despite a price hike, the Himalayan is still expected to undercut is upcoming rival by a significant margin.
The Royal Enfield Himalayan BS6 is expected to be accompanied by the Classic 350 BS6 which has already been launched with EFI, additional catalytic converter and new colour options.
RE's family of 500 cc motorcycles (Electra, Thunderbird and Classic) are discontinued. Their successors based on the all-new J platform are expected to hit the market sometime later in the year. The whole auto industry is hoping for a shot in the arm and we hope the BS6 transition gives just that.
New RE Himalayan


text:
From the Courts
Local Vibes
Our Readers' Opinions
Bassy – Love Vine
Dr. Fraser- Point of View
R. Rose – Eye of the Needle
Dr Jozelle Miller
Independence Messages
What's on Fleek this week
Auldine's Glow Secrets
Health Wise
Physician's Weekly
Hey Rosie!
Prime the pump
Birthday/Wedding/Anniversary
In Memoriam/Acknowledgement
General Contact Information
Contact our Webmaster
Interactive Media Ltd
CARICOM 'deeply concerned' about inequitable access to vaccines for Small Developing States
The Caribbean Community (CARICOM) is dissatisfied and deeply concerned about the inequitable access to vaccines for Small Developing States like those of the Community.
In a statement issued on February 25, CARICOM called for equitable access to vaccines in order to curb the impact of the pandemic, to protect our citizens and bolster the economy.
"As the virus does not discriminate, access to vaccines should not be discriminatory, with a few countries dominating the market with their resources and their volumes. Heads of Government noted that to date, even countries with the funds to purchase, have been unable to procure and receive vaccines through commercial arrangements, given the relatively small volumes which they seek," the statement said.
Member States noted that although they have all signed on to the highly valued and appreciated COVAX Facility, the only vaccines received in the region to date were through the generosity of the Prime Minister of India, Narendra Modi, who has donated 170,000 vaccines to Barbados and Dominica through bi-lateral arrangements. CARICOM commends Prime Minister Modi for his generosity, which it is understood, will be continued. They also thanked Barbados and Dominica for having shared their initial supplies which were received from India.
Member States further noted that while the COVAX Facility will provide up to 20 percent of Members' needs, this limited supply will not allow us to attain the regional herd immunity, so necessary to fuel the resilient recovery that we are seeking. Heads of Government therefore call for a mechanism that allows smaller countries to have access to sufficient vaccines at the earliest juncture, if action is to be put behind the oft-repeated phrase that "no-one is safe until everyone is safe".
Other initiatives, such as procurement through the African Union's African Medical Supplies Platform (AMSP), as well as bilateral arrangements, are being pursued by some Member States with the support of CARICOM. We commend the government of the Republic of South Africa and the African Union, for having carved out an allocation for CARICOM countries.
"We urge developed countries, and especially those in our neighbourhood whose populations travel frequently to our region, and who host our largest diaspora populations, to make some available to the Community, initially as an interim supply given the immediacy of the need. CARICOM has taken a decision to write to the governments of some traditional partners on the matter.
"Attention is also needed at the multilateral level and to this end, the Community has called on the World Health Organization (WHO) to convene a Global Summit to address urgently equitable access to COVID-19 vaccines, particularly for developing countries, which should be held in the context of the World Health Organization's ACT-A Facilitation Council," the statement said.
Two deaths bring SVG's COVID19 death toll to 87
NEW COVID19 CASES Two (2) new COVID-19 positive cases were reported on Wednesday, January 12th,...
Senator Rene Baptiste (right)being sworn in as Senator this morning at Government House. At left is Prime Minister Dr Ralph Gonsalves.
Former Government Minister Rene Baptiste recalled to service
Vincentian attorney and former government minister, Rene Baptiste was today sworn in as a...
Senator Rene M Baptiste (left) walking to the House of Assembly this morning accompanied by Prime Minister Dr Ralph Gonsalves
COVID19 positive Senator replaced to allow Budget to pass this week
by Bria King A COVID19 positive government senator has been replaced by someone who is negative,...
A screen-shot of the Governor General Dame Susan Dougan (standing) delivering the Throne Speech in Parliament last Monday
Budget debate marred by Covid-19 cases
Will this week's Budget debate end today with the passage of the government's $1.33 billion...
Constable Cliseena Butler of the Sexual Offences Unit
Sixty per cent of reports of sexual offences involve minors
More than half of the 564 cases that have been reported to the Sexual Offences Unit since it first...
OVER 60 vehicles were stuck at the Overland River on Christmas Eve (Photos by Rochelle Baptiste)
Residents awaiting word on Gov't's plan for Overland river
Residents of Overland and further north of mainland, St Vincent are hoping that the construction of...
Searchlight newspaper
No new taxes in 2022 budget: Finance Minister
Girls, guilty of stabbing man, to return to court today
Windies youth coach confident going into World Cup
Our Readers' Opinions
Public Assistance engenders dependency
Two more government MPs test positive for COVID19, another two fall ill
Are you a tightwad or a spendthrift? What influences our money habits?
Government to undergo digital transformation
Interactive Media Ltd. • P.O. Box 152 • Kingstown • St. Vincent and the Grenadines • Phone: 784-456-1558 © Copyright Interactive Media Ltd.. All rights reserved.


text:
Articles-Links
JJ Greenberg Memorial Award JJ Greenberg Torat Chayim Young Leadership Award
In memory of JJ Greenberg
JJ Greenberg Memorial Award - 2020 Winner
Shayna Rose Triebwasser
Righteous Persons Foundation
Shayna Rose Triebwasser - 2020
David Rittberg - 2019
Amy Braier - 2018
Justin Korda - 2017
Lesley Matsa - 2016
Hila Marmos and Meytal Brown Mendelewicz - 2015
Josh Miller - 2014
Atar Razy Oren - 2012
Adene Sacks - 2011
Adam Simon - 2010
Felicia Herman - 2009
Sharna Goldseker - 2006
Jewish Funders Network awarded the 2020 JJ Greenberg Memorial Award to Shayna Rose Triebwasser, senior program officer of the Righteous Persons Foundation.
Triebwasser, age 38, is the 17th recipient of the annual award, which honors foundation professionals engaged in grantmaking, 40 and under, who have demonstrated extraordinary leadership in Jewish philanthropy.
Triebwasser joined the Righteous Persons Foundation in 2016, following more than a decade in the field of journalism. Founded by Steven Spielberg in 1995, the Righteous Persons Foundation has made more than $100 million in grants, funding innovative approaches that help bridge the divide between people of different backgrounds; galvanize the power of the arts, media, and storytelling; preserve Jewish history and traditions and make them accessible for generations to come; build on the Jewish value of justice to inspire social activism; and ensure that the moral lessons of the Holocaust are not forgotten.
At Righteous Persons, Triebwasser's work includes designing and implementing the foundation's grantmaking and communications strategies, developing and maintaining relationships with grantees and funding partners, and working closely with grantees to design strategic programming, evaluate impact, and think through project and field-related challenges.
"Shayna Triebwasser is a model Jewish foundation professional," said Rabbi Jonah Dov Pesner, director of the Religious Action Center of Reform Judaism, one of the foundation's grantees, adding that she is "one of the most thoughtful and humble professionals I have ever worked with."
Rachel Levin, the executive director of the Righteous Persons Foundation, described Triebwasser as "deeply, unabashedly, consistently, wholeheartedly kind."
"She fundamentally believes in everyone's human dignity and treats people accordingly – from the teacher who is writing to request funds for a school trip to the head of a major national Jewish organization."
Levin praised Triebwasser's "brilliance, warmth, creativity, grasp of complex issues" and "fearlessness," adding that Spielberg and his wife Kate Capshaw often tell her that they "can't imagine doing this work without" Triebwasser.
"I am deeply honored to receive this year's JJ Greenberg Memorial Award. Working with and alongside our foundation's many incredible partners, I'm constantly reminded of the power of curiosity and compassion. Those who knew and loved JJ know that he had both in spades, and I will always take great meaning and inspiration from being recognized in his name—especially at an unprecedented time such as this, when empathy is needed more than ever, and when being in real relationship is critical to individual, communal, and social change."
Before joining Righteous Persons, Triebwasser was senior editor of Los Angeles magazine, where she focused on the people and issues shaping the future of Los Angeles. Triebwasser has a bachelor's degree in American literature from the University of California, Los Angeles.
She lives in Los Angeles with her husband, Jason, and their children Levi (6 years old) and Tova (3).
© 2021: The Greenberg Family


Game times and TV networks for the first three Cincinnati Bearcats football games this year have been announced, including an ESPN date vs. UCLA.
Cincinnati Bearcats offensive guard Garrett Campbell says the team is ready for better things after two straight 4-8 seasons.
Game times and television networks for the first three 2018 University of Cincinnati football games were announced Thursday by the American Athletic Conference.
UC's season opener at UCLA on Saturday, Sept. 1 will start at 7 p.m. (ET) at the Rose Bowl and be televised on ESPN.
The 123rd Battle for the Victory Bell against Miami University on Sept. 8 (at Paul Brown Stadium) will be 8 p.m. on ESPN3/Raycom.
The home opener at Nippert Stadium against Alabama A&M on Sept. 15 will start at 7 p.m. on ESPN3.
All other game times and television selections will be announced 12 days before the scheduled game, according to a press release from the AAC.


WHAT A BEAUTIFUL 2 BR. 2 BA. UNIT. IN ONE OF THE MOST SOUGHT AFTER COMPLEXES ON THE BEACH. THE COMPLEX HAS AN IDEAL OCEAN FRONT LOCATION BETWEEN MYRTLE BEACH AND NORTH MYRTLE BEACH. EASY ACCESS TO ALL THE STRAND HAS TO OFFER. QUICK RUN IN AND OUT OF THE BEACH WITH HWY 22 RIGHT AROUND THE CORNER AS WELL.


"Krishna Consciousness is already in you -- not only in you, but in every living being. Such consciousness is aroused just like a sleeping man is aroused from slumber by vibration of sound. Similarly, a conditioned soul is aroused by the vibration of the Hare Krishna Mantra into Krishna Consciousness. This is the process."


Come to our events in Pompano Beach, Florida.
Overview: Ride to the event and show off your bike. Free gourmet coffee will be served until 12:00 am. Let's make this your first stop of the day! Besides gourmet coffee and having a good time, we will be having the Kawasaki Good Times™ Demo Tour. Experience the thrilling performance, comfort, and versatility of Kawasaki Motorcycles. We hope to see everyone there.


text:
How to Determine Grease Compatibility and Why It's Important
Rich Wurzbach, MRG Labs
Grease compatibility charts have been developed and circulated since the 1980s without much alteration. However, grease technology has changed significantly over the years, and there are many examples of performance that contradict several widely used compatibility charts. This article will describe the most common examples of incompatible grease mixing and how to determine if two greases are compatible.
Examining Compatibility Charts
A number of organizations rely on compatibility charts to make important maintenance decisions. These charts are readily available in published papers, periodicals and Web pages. Unfortunately, very few charts give any reference for the origin of the data or any research utilized to establish the compatibility relationships described. Significant concerns have also been raised about some of these charts after greases presented as compatible have proven to be quite incompatible.
A selection of 17 compatibility charts was recently evaluated for differences. Table 1 shows the labels used in these charts and how many times these descriptions appear in the charts. Seventeen occurrences would indicate that a grease category was present in each of the charts found, and there were only three such products.
The three products that appeared in each of the tables were aluminum complex, lithium complex and calcium complex. However, the commonality ends there. A total of 25 different product descriptions were found in the 17 tables. Some may have been referring to the same product categories but failed to use common nomenclature, so it is difficult to determine where there might be an overlap.
Several contradictions were discovered among the various charts. For example, one chart indicated that barium-complex grease is compatible with clay-thickened grease, while others suggested this mixture is incompatible. Some charts listed polyurea grease as being compatible or borderline compatible with calcium complex, but another chart showed calcium complex to be incompatible with polyurea.
Although there were significant disagreements between the various charts, they all had one thing in common - few provided any link or reference to research that was conducted to develop them. That is to say, the charts being used to make significant engineering and design decisions are contradictory and do not indicate the source of information or research used to compile them.
Upon observation, it becomes obvious that several of the charts are derived from the others. The various descriptions used imply that some may have been copied from the others. Many charts include a disclaimer, usually stating that it would be preferable to clean out all old grease and avoid any mixing, or that the charts are believed to be accurate at the time of publication. This underscores the challenge of finding a single authoritative chart to be used with confidence when making decisions regarding grease mixing.
Table 1. Compilation of 17 grease compatibility charts
Basis for Grease Compatibility
It is interesting to note that these grease compatibility charts focus only on the family of thickener involved. However, there are three components to any formulated grease: the base oil, the additives and the thickener. When mixing oils, the key considerations are the viscosity of each product, the base oil type and the thickener. Somehow, though, these critical parameters are overlooked when utilizing grease compatibility charts. This is somewhat understood, since the most common reason for grease mixing problems is related to differences in the grease thickener, but that is not the only issue.
Table 2. Testing two common
polyurea-thickened greases
Base Oil Compatibility
Greases are manufactured from both mineral oil and synthetic oil bases. Some synthetic base oils are incompatible with mineral oils and other types of synthetics, just as in the mixing of lubricating oils. Therefore, it is important to consider the type of base oil in the grease when determining compatibility. If the grease thickeners are compatible but the base oils are not, the resulting mixture can be problematic. Viscosity is critical when selecting any lubricant. Likewise, when greases are mixed where the base oil viscosities are significantly different, the resulting mixture will not be optimized for the application.
Additive Compatibility
It is understood that when oils are mixed, any incompatibility in the additive packages will result in poor performance and often additive reactions creating deposits. While reacting additives will not settle to the bottom in grease, as is the concern in oil, the changes can cause problems, impacting additive effectiveness and in some cases creating corrosive conditions in the grease. Additive compatibility with the metallurgy of the lubricated component must also be considered.
Thickener Compatibility
Mixing of greases with incompatible thickeners can result in the most immediate and obvious changes that interfere with effective lubrication. Many mixtures will initially soften, often to the point of migration through seals or away from lubricated surfaces. Some mixtures will cause the thickener to release the oil, with the separated phase running freely from the bearing, gear or housing. Other mixtures harden initially and lead to component load issues and poor grease motility. This potential effect is not easily determined. Simply mixing two greases together to observe changes may not provide any obvious difference. However, carefully mixing the greases in different ratios and subjecting them to mixing, working and heating cycles can reveal measureable changes in properties to predict their performance in a machine.
Grease mixing test stand
Testing for Grease Compatibility
If research has demonstrated the unreliability of the different grease compatibility charts, it is important to discuss what additional steps can be taken to evaluate grease compatibility. ASTM D6185 (Standard Practice for Evaluating Compatibility of Binary Mixtures of Lubricating Greases) involves the mixing of the intended greases in ratios of 25-75, 50-50 and 75-25. The resulting mixtures are evaluated for changes in dropping point, shear stability and storage stability. These last two parameters include measuring changes in the cone penetration value.
While this standard has greatly improved the uniformity to which greases can be tested for compatibility, it should be noted that the three evaluation tests are static in nature. Although there is some mechanical working of the grease prior to testing, this is minimal mechanical perturbation.
When a grease mixture is introduced into a machine, such as a motor bearing, it will undergo significant mixing and working in a relatively short period of time. This compares to the 60 double strokes utilized to mix and work the binary mixture evaluated in the standard.
A mixture of greases introduced in a common ball bearing operating at 1,750 revolutions per minute will see nearly 30 million mixing and working events in just three days of operation. This mixture will be subjected to continuous dynamic forces, and its performance and possible degradation will be influenced by this more than the static response seen in cone penetration or dropping point measurements. The ability of this testing to adequately predict in-service mixtures may be reasonably questioned.
Working in a Bearing Simulator
Some studies have been performed to improve the mixing and working of grease to better simulate machine conditions. The electric motor test stand shown below was developed for the Electric Power Research Institute's Effective Grease Practices guideline. This test stand consists of the end bell from a 60-horsepower electric motor mounted with a ball bearing in a stub shaft. The shaft is turned by a fractional horsepower motor, coupled to a turned-down shaft. The housing of the end bell is removed and replaced by a Plexiglas window to observe the condition of the grease under dynamic conditions. For the purpose of testing grease mixtures, the 25-75, 50-50 and 75-25 ratios are packed sequentially into the bearing by hand, and the adjacent housing area is packed half full. This is then run for 72 hours to achieve the 30 million plus perturbations of the grease. The conditions observed are noted, and the grease is removed from the bearing.
Table 3. Elemental spectroscopy values for the reference greases and the 50-50 mixture
The resulting mixture is analyzed by Fourier transform infrared (FTIR) spectroscopy to note any reaction or unexpected oxidation of the components in the grease. The grease is also evaluated by elemental spectroscopy to assess unexpected final ratios of additives as compared to the anticipated averaging of values seen in the original products, adjusting for mixing ratios.
Finally, the grease is tested in a controlled stress rheometer to identify changes in flow and shear properties as compared to the original products. The values measured include the yield stress, which can predict the hardening or softening the grease may undergo; the oscillation stress, which can give insight into the likelihood of oil separation and other effects; and recoverable compliance, which can help to identify those mixtures that might experience "channeling" or "tunneling" in the equipment housing.
Taken together, these tests may provide a more comprehensive picture of the potential effects of mixing two grease products together and help users avoid reliability issues from grease mixing, even for products that might otherwise appear to be compatible on charts.
Table 4. The rheological values for the two worked reference samples and the 50-50 worked mixture, with the values of concern in yellow
Examples of Grease Compatibility Testing
The following test results for binary grease mixtures were obtained using the previously described methods and the grease mixing test stand to mix and work the samples. The first example is of two common polyurea-thickened greases. This mixture was chosen for a company looking to consolidate the number of greases in its facility. One area of the facility used a particular grease in all electric motors, while the remainder utilized another grease. The goal was to consolidate to one product for all motors. Unfortunately, it would not be possible to completely clean out all of the grease being replaced from the motors. Therefore, it became necessary to verify that one polyurea grease could be added directly to a motor containing the other. According to most grease compatibility charts, polyurea greases are compatible with each other, and such a transition would be allowed.
Table 2 shows the product information for both greases tested. These greases are very comparable based on their consistency and viscosity of the base oils.
Table 3 reveals the differences in elemental spectroscopy values for the reference greases and the 50-50 mixture. The areas highlighted in yellow show the contrast between the greases and evidence of mixing.
These variations reveal an obvious formulation difference between the greases (most likely involving anti-wear additives), but this alone would not be sufficient to disqualify the mixture for compatibility if the resulting product still functioned effectively with regard to wear resistance.
Table 4 shows the rheological values for the two worked reference samples and the 50-50 worked mixture. The areas highlighted in yellow indicate values of concern.
In this case, each of the values for the 50-50 mixture is significantly different than the expected numerical average of the unmixed greases. This demonstrates a change in properties due to mixing and raises concerns about this mixture's performance in the long term. It could be expected that the mixture may be subject to softening, oil separation and a tendency to channel when allowed to persist in a mixed state in the motor housing. For this reason, the mixture was not permitted at the facility, and the decision was made to keep two greases in place until the motors could be removed and thoroughly cleaned of the existing product.
Table 5. (Top) The expected and actual yield stress values for the 50-50 mixture and the reference greases
Table 6. (Bottom) The expected and actual recoverable compliance values for the 50-50 mixture and the reference greases
Strategies to Minimize Mixing Effects
It can be difficult to avoid mixing greases in a plant environment, but several steps can be taken to minimize the impact and likelihood of mixing incompatible greases.
Step 1: Provide Clear Guidance
All personnel involved in applying grease to equipment should be trained and receive instruction on the proper product to use on each piece of equipment and the location. This includes employees and contractors who may be working in the facility. Provide labels and color codes where possible to prevent confusion.
Step 2: Involve Purchasing in Grease Specification
A common area for grease mixing is in new and rebuilt equipment. Even when all plant personnel are given clear guidance on using the correct products, equipment may be returned to the facility with a grease that is different than what will be added while in service. New bearings, gears, motors, etc., often come supplied with a product that is incompatible with the grease being used to relubricate.
Step 3: Consolidate Lubricants
Identify the minimum number of products required to meet the design of the equipment in use and consolidate to that number. Do not stock additional products for convenience or brand loyalty. This increases the likelihood of mixing.
Step 4: Test Potential Mixtures
If the wrong grease has been inadvertently added to a machine or consolidation is required that will transition the use of a product in a machine, perform simulated mixing and working of the mixtures as well as dynamic properties testing to evaluate the mixture's performance. For those mixtures that prove to be incompatible, the extra effort must be taken to thoroughly clean all traces of grease from the housing, supply lines and bearings/gears to ensure long life and reliable machinery operation.
Grease compatibility charts may seem to be a convenient way to make decisions based on actual or potential grease mixing. However, the unreliability of these charts and the complex interaction of base oils, additives and grease thickeners require that a more certain approach be employed for optimal equipment performance. The efforts to avoid mixing where possible and to test mixtures for compatibility issues as well as taking the appropriate actions will be an investment in reliability that will pay dividends.
Rich Wurzbach
Machinery Lubrication (2/2017)
Keys for Proper Grease Selection
Always Consider Grease Compatibility
Grease Compatibility Chart and Reference Guide
Step-by-Step Grease Selection


When patients step into kidney failure, they have to accept dialysis which can replace kidneys to sustain their life to sustain their life. Many patients are worried about their prognosis.
Though dialysis is important for patients to sustain their life, most of them want to get rid of it, because its side effects bring much misery to them, the most important thing is that dialysis can't cure root of disease, that is to say, patients have to rely on a dialysis machine and others' help.
Many foreign patients are looking for treatment with natural and healthy way without irritation or side effect such as Chinese medicines which work on root of disease, they are applied into study and practice by some experts and many foreign patients come to China to try the treatment with Chinese medicines.
Beijing Tongshantang Hospital of Traditional Chinese Medicine which is a professional in treating kidney disease have researched kidney disease and Chinese medicines for many years. According to our concept, we formed our own characteristic therapies.
These therapies only in our hospital, if you want to try our therapies, you can send email: kidneyhospitalabroad@hotmail.com.


text:
package it.unibz.inf.ontop.iq.optimizer;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import it.unibz.inf.ontop.constraints.impl.LinearInclusionDependenciesImpl;
import it.unibz.inf.ontop.constraints.ImmutableHomomorphism;
import it.unibz.inf.ontop.constraints.ImmutableHomomorphismIterator;
import it.unibz.inf.ontop.constraints.impl.BasicLinearInclusionDependenciesImpl;
import it.unibz.inf.ontop.constraints.impl.ImmutableCQContainmentCheckUnderLIDs;
import it.unibz.inf.ontop.dbschema.*;
import it.unibz.inf.ontop.dbschema.impl.OfflineMetadataProviderBuilder;
import it.unibz.inf.ontop.iq.IQ;
import it.unibz.inf.ontop.iq.IQTree;
import it.unibz.inf.ontop.iq.node.ExtensionalDataNode;
import it.unibz.inf.ontop.model.atom.DataAtom;
import it.unibz.inf.ontop.model.atom.DistinctVariableOnlyDataAtom;
import it.unibz.inf.ontop.model.atom.RelationPredicate;
import it.unibz.inf.ontop.model.term.Variable;
import it.unibz.inf.ontop.model.type.DBTermType;
import org.junit.Test;

import java.util.Optional;

import static it.unibz.inf.ontop.utils.MappingTestingTools.*;
import static org.junit.Assert.assertEquals;

public class MappingCQCOptimizerTest {

    @Test
    public void test() {
        OfflineMetadataProviderBuilder builder = createMetadataProviderBuilder();
        DBTermType integerType = builder.getDBTypeFactory().getDBLargeIntegerType();

        NamedRelationDefinition company = builder.createDatabaseRelation("company",
            "cmpNpdidCompany", integerType, false,
            "cmpShortName", integerType, false);

        NamedRelationDefinition companyReserves = builder.createDatabaseRelation("company_reserves",
            "cmpShare", integerType, false,
            "fldNpdidField", integerType, false,
            "cmpNpdidCompany", integerType, false);
        ForeignKeyConstraint.builder("FK", companyReserves, company)
                .add(2, 1)
                .build();

        final Variable cmpShare1 = TERM_FACTORY.getVariable("cmpShare1");
        final Variable fldNpdidField1 = TERM_FACTORY.getVariable("fldNpdidField1");
        final Variable cmpNpdidCompany2 = TERM_FACTORY.getVariable("cmpNpdidCompany2");
        final Variable cmpShortName2 = TERM_FACTORY.getVariable("cmpShortName2");

        ExtensionalDataNode companyReservesNode = IQ_FACTORY.createExtensionalDataNode(
                companyReserves, ImmutableMap.of(1, fldNpdidField1, 2, cmpNpdidCompany2));//cmpShare1,
        ExtensionalDataNode companyNode = IQ_FACTORY.createExtensionalDataNode(
                company, ImmutableMap.of(0, cmpShortName2, 1, cmpNpdidCompany2));

        IQTree joinTree = IQ_FACTORY.createNaryIQTree(IQ_FACTORY.createInnerJoinNode(),
                ImmutableList.of(companyReservesNode, companyNode));

        DistinctVariableOnlyDataAtom root =
                ATOM_FACTORY.getDistinctVariableOnlyDataAtom(
                        ATOM_FACTORY.getRDFAnswerPredicate(2), ImmutableList.of(cmpNpdidCompany2, fldNpdidField1));
        IQTree rootTree = IQ_FACTORY.createUnaryIQTree(IQ_FACTORY.createConstructionNode(root.getVariables()), joinTree);

        IQ q = IQ_FACTORY.createIQ(root, rootTree);

        LinearInclusionDependenciesImpl.Builder<RelationPredicate> b = LinearInclusionDependenciesImpl.builder(CORE_UTILS_FACTORY, ATOM_FACTORY);

        final Variable cmpShare1M = TERM_FACTORY.getVariable("cmpShare1M");
        final Variable fldNpdidField1M = TERM_FACTORY.getVariable("fldNpdidField1M");
        final Variable cmpNpdidCompany2M = TERM_FACTORY.getVariable("cmpNpdidCompany2M");
        final Variable cmpShortName2M = TERM_FACTORY.getVariable("cmpShortName2M");

        b.add(ATOM_FACTORY.getDataAtom(company.getAtomPredicate(), cmpShortName2M, cmpNpdidCompany2M),
                ATOM_FACTORY.getDataAtom(companyReserves.getAtomPredicate(), cmpShare1M, fldNpdidField1M, cmpNpdidCompany2M));

        ImmutableCQContainmentCheckUnderLIDs<RelationPredicate> foreignKeyCQC = new ImmutableCQContainmentCheckUnderLIDs<>(b.build());

        IQ r = MAPPING_CQC_OPTIMIZER.optimize(foreignKeyCQC, q);

        assertEquals(1, r.getTree().getChildren().size());
        assertEquals(companyReservesNode, r.getTree().getChildren().get(0));
    }

    @Test
    public void test_optimisation_order() {
        // TODO: code a test for film_category -> film -> language
        //                       film_category -> casting
    }

    @Test
    public void test_foreign_keys() {
        // store (address_id/NN, manager_staff_id/NN) -> address (address_id/PL), staff (staff_id/PK)
        // staff (address_id/NN, store_id/NN) -> address (address_id/PK), store (store_id/PK)
        OfflineMetadataProviderBuilder builder = createMetadataProviderBuilder();
        DBTermType integerType = builder.getDBTypeFactory().getDBLargeIntegerType();

        NamedRelationDefinition addressTable = builder.createDatabaseRelation("address",
            "address_id", integerType, false,
            "address", integerType, false);
        RelationPredicate address = addressTable.getAtomPredicate();

        NamedRelationDefinition storeTable = builder.createDatabaseRelation("store",
            "store_id", integerType, false,
            "address_id", integerType, false,
            "manager_staff_id", integerType, false);
        RelationPredicate store = storeTable.getAtomPredicate();

        NamedRelationDefinition staffTable = builder.createDatabaseRelation("staff",
            "staff_id", integerType, false,
            "address_id", integerType, false,
            "store_id", integerType, false);
        RelationPredicate staff = staffTable.getAtomPredicate();

        ForeignKeyConstraint.of("FK", storeTable.getAttribute(2), addressTable.getAttribute(1));
        ForeignKeyConstraint.of("FK", storeTable.getAttribute(3), staffTable.getAttribute(1));
        ForeignKeyConstraint.of("FK", staffTable.getAttribute(2), addressTable.getAttribute(1));
        ForeignKeyConstraint.of("FK", staffTable.getAttribute(3), storeTable.getAttribute(1));

        final Variable staffId1 = TERM_FACTORY.getVariable("staff_id2");
        final Variable addressId1 = TERM_FACTORY.getVariable("address_id2");
        final Variable storeId1 = TERM_FACTORY.getVariable("store_id2");
        final Variable addressId2 = TERM_FACTORY.getVariable("address_id5");
        final Variable address2 = TERM_FACTORY.getVariable("address7");
        final Variable storeId3 = TERM_FACTORY.getVariable("store_id1");
        final Variable addressId3 = TERM_FACTORY.getVariable("address_id4");
        final Variable managerStaffId3 = TERM_FACTORY.getVariable("manager_staff_id1");

        DataAtom<RelationPredicate> staffAtom = ATOM_FACTORY.getDataAtom(staff, staffId1, addressId1, storeId1);
        DataAtom<RelationPredicate> addressAtom1 = ATOM_FACTORY.getDataAtom(address, addressId2, address2);
        ImmutableList<DataAtom<RelationPredicate>> one = ImmutableList.of(addressAtom1, staffAtom);

        DataAtom<RelationPredicate> storeAtom = ATOM_FACTORY.getDataAtom(store, storeId3, addressId3, managerStaffId3);
        DataAtom<RelationPredicate> addressAtom2 = ATOM_FACTORY.getDataAtom(address, addressId2, address2);
        ImmutableList<DataAtom<RelationPredicate>> two = ImmutableList.of(storeAtom, addressAtom2);

        System.out.println("ONE " + one + "\n" + "TWO " + two);

        LinearInclusionDependenciesImpl.Builder<RelationPredicate> b = LinearInclusionDependenciesImpl.builder(CORE_UTILS_FACTORY, ATOM_FACTORY);

        final Variable addressIdM = TERM_FACTORY.getVariable("address_id_m");
        final Variable addressIdM2 = TERM_FACTORY.getVariable("address_id_m2");
        final Variable addressM = TERM_FACTORY.getVariable("address_m");
        final Variable storeIdM = TERM_FACTORY.getVariable("store_id_m");
        final Variable storeIdM2 = TERM_FACTORY.getVariable("store_id_m2");
        final Variable staffIdM = TERM_FACTORY.getVariable("staff_id_m");
        final Variable staffIdM2 = TERM_FACTORY.getVariable("staff_id_m2");
        final Variable staffManagerIdM = TERM_FACTORY.getVariable("staff_manager_id_m");

        b.add(ATOM_FACTORY.getDataAtom(address, addressIdM, addressM),
                ATOM_FACTORY.getDataAtom(store, storeIdM, addressIdM, staffManagerIdM));
        b.add(ATOM_FACTORY.getDataAtom(staff, staffManagerIdM, addressIdM, storeIdM2),
                ATOM_FACTORY.getDataAtom(store, storeIdM, addressIdM2, staffManagerIdM));

        b.add(ATOM_FACTORY.getDataAtom(address, addressIdM, addressM),
                ATOM_FACTORY.getDataAtom(staff, staffIdM, addressIdM, storeIdM));
        b.add(ATOM_FACTORY.getDataAtom(store, storeIdM, addressIdM2, staffIdM2),
                ATOM_FACTORY.getDataAtom(staff, staffIdM, addressIdM, storeIdM));

        BasicLinearInclusionDependenciesImpl<RelationPredicate> lids = b.build();
        System.out.println("LIDS: " + lids);

        ImmutableCQContainmentCheckUnderLIDs<RelationPredicate> foreignKeyCQC = new ImmutableCQContainmentCheckUnderLIDs<>(lids);

        Optional<ImmutableHomomorphism> to =
                Optional.of(ImmutableHomomorphism.builder().extend(address2, address2).extend(addressId2, addressId2).build())
                        .map(h -> foreignKeyCQC.homomorphismIterator(h, one, two))
                        .filter(ImmutableHomomorphismIterator::hasNext)
                        .map(ImmutableHomomorphismIterator::next);
        System.out.println(to.get());

        Optional<ImmutableHomomorphism> from =
                Optional.of(ImmutableHomomorphism.builder().extend(address2, address2).extend(addressId2, addressId2).build())
                        .map(h -> foreignKeyCQC.homomorphismIterator(h, two, one))
                        .filter(ImmutableHomomorphismIterator::hasNext)
                        .map(ImmutableHomomorphismIterator::next);
        System.out.println(from.get());
    }
}