This part will continue on with the new Web Part project we just created with VS 2008 and VSeWSS 1.3. The original plan was to implement a custom security access policy so that we could safely run our Web Part and read from an XML file. But like all good plans... For the purposes of this sample, we can simply up the trust level in the config file until we are confident that we have our Web Part functioning correctly. I may come back to the topic of CAS customization.
I recently created some Web Parts using version 1.2 of the extensions in combination with the command line. Typically, I would use the GAC for development. My testing cycle would then consist of building, uninstalling old version from GAC, deploying Feature, installing new version in GAC, and running IIS reset. This time around, I was unfamiliar with the extent to which 1.3 was going to automate things. For example, while creating this project, I did not have to use the command line once. The ultimate goal for this part is to actually get a Web Part working, using the new version of VSeWSS 1.3.
Although not necessary for the purposes of this tutorial, it helps to understand the development cycle of Web Part created as a Feature. If you were doing this manually, you would typically build it, deploy (copy) it, install it, activate the feature, and recycle the application pool. When updating code and redeploying, don't forget to deactivate the Feature first. Note also, that when we deactivate and uninstall a Feature, files such as CSS, images and the like, still remain on the file system. If you need to make changes to these with version 1.2, you may need to hand copy them. There is a config attribute for overwriting a file if it already exists, but I could never get this to work.
Back to business. Take a look at the XML below. Add the Addresses.xml file to the TestWebPart folder in Solution Explorer. We want to display some of this data in our Custom Web Part.
Here's the complete code from my Web Part. Note the use of the RunWithElevatedPrivileges delegate here. Without this, the code would run under the current user's permissions. This allows the code to run with the same permissions as SHAREPOINT\System.I also hand copied the Addresses xml file to the wpresources folder in my virtual directory as I had difficulty in correctly configuring my Feature to do this for me. Does anyone know the proper way to do this?
// Control even when referenced inside the delegate.
To get around this, you need to open your AssemblyInfo.cs file (in the Properties folder) and add a System.Security.AllowPartiallyTrustedCallers assembly attribute. The framework will not by default allow an assembly that is not fully trusted to call another assembly that is not fully trusted. However, by adding this attribute we are telling the framework that it is okay to call other assemblies from this one. See below.
Request for the permission of type 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' failed.
It seems that when opting to deploy to the bin folder when creating the project, VSeWSS does just that and nothing more. VSeWSS still leaves the security options to us, which is the correct behaviour one would expect. By default, SharePoint Web applications are only allowed to run with a very restrictive trust level of WSS_Minimal. If we want to have our Web Part deployed to the bin folder, then in order for it to run we must do one of two things: either set the trust level to WSS_Medium or WSS_Full in the web.config, or create a custom CAS policy that will allow this assembly's managed code to run. We will up the level to WSS_Full here. In a production environment, you will need to make an informed decision on this yourself.
* Set the compilation debug attribute to "true"
If you decide to implement your own code access security policy, then this should be of help.
Well, I'm back... they finally coughed up the ransom! Truthfully, I've been busy and have wanted to put this particular post together for some time. Since It's still a work in progress, I decided to divide it up into a series. That way I can't procrastinate any further! I have limited experience with SharePoint development in general. I have never created a custom CAS policy and I am using the 1.3 version of the VS extensions for the first time, so it should be interesting.
Many developers are overwhelmed by the plethora of tools out there right now for creating and deploying simple components in SharePoint. My personal favorite so far has been STSDEV although I had some problems with the most recent version. At the end of the day, I decided to either hand-roll my Web Parts and deploy with STSADM, or use the Visual Studio Extensions. The reason a lot of people have used tools other than VSeWSS is because the the extensions have been considered pretty limited up to now. But that seems to be changing and version 1.3 has some really cool features.
You can download the extensions, both 32 bit and 64 bit, as well as the pre-release notes. Uninstall version 1.2 first, if you already have it installed.
We're going to take the new 1.3 CTP of Visual Studio Extensions for VS 2008 for a test drive. We will create a custom Web Part which will display some data from an XML file. We will deploy our Web Part to the bin folder rather than than to the Global Assembly Cache (GAC); deploying to the GAC involves resetting IIS which is impractical if you have a production environment with a single Web Front End (WFE) server. In order to run this code from the bin folder, we will create a custom code access security (CAS) policy.
When you opt to create a new Web Part project, you will be presented with the New Project dialog box. Opt to deploy to the bin folder. Your Solution Explorer window and WSP View should now resemble those in the diagrams shown.
In the next part, we'll take a look at the architecture of Features in general; the aim is to keep this as simple as possible and get something up and running. The most common problems people are having are security-related. We will look at this more closely and set out the steps necessary to enable your code to run in a secure environment. In the meantime, you can study up on the use of Features.


Just a quick note about attendance: with the big concert only a few weeks away it is more important than ever that your chorister(s) attend each rehearsal in order to ensure that they're ready to wow the crowds. Please do your very best to have your chorister(s) participate fully from here on in. It would also be great if you could encourage your chorister(s) to practice at home using the practice tracks found here.
Also, if you're going to be unable to make it to the spring concert on May 28th please let us know ASAP.


I was graduated from The One Academy in the year of 2003, holding diploma certificate in Graphic Design & Advertising. Before graduate, i already work in Trinity Visual Communications Snd Bhd, a multi-disciplinary brand identity consultancy. Then, i continue the job after graduate for 1 and half year.
In the same time, i wins 2 gold awards for brand identity design. 1st, The Conqueror Award 2004, gold award for corporate identity (HeavenHell music studio). 2nd, i-city logo contest, chosen as the gold medal and awarded a 42" i plasma tv.
Appointed as Senior Designer on 2005 in KSS Design Lab, a multi design & advertising company. At the same time, i founded frankworkshop.


Laura and Annie were in Annie's room getting ready for the evening. The retreat centre was holding a fundraising charity ball for a local charity that supported disabled children. There would be local sellers with stalls and a variety of different finger foods on sale. More than anything, though, it was a chance for all of them to meet in more social circumstances. All the quiet meditation and yoga were doing them a world of good, but also preventing them from getting to know one another better.
'Let's go and see what we can find out about the others today', Laura said. They both giggled and started walking down the magnificent staircase in the central hall of the main building.
The hall had been transformed into a beautiful space with white tinkling lights hidden on branches of white lilies. There were fairy lights everywhere and mirrors had been places on the walls to create a feeling of space. All the tables around the hall had been covered with sparkly silver paper with pretty candles and ornaments making them look more festive.
'Wow, this place looks beautiful', Laura said to Chen-Wei who was one of their yoga teachers and also the brains behind this operation.
They all smiled as they marvelled the sight of the hall in front of them.
Laura walked slowly from table to table, as Annie stayed behind to chat with Chen-Wei in their mother tongue. Although Laura liked the sound of Chinese, it seemed like such a different language to her that she felt it would take her a very long time even to understand some of it. People were starting to arrive and the hall was slowly filling up. Laura felt good about the word having got around and people making the effort to be there.
'Yes', the lady said shyly. She must have still been a teenager; she looked so young. But in Laura's opinion, it was very difficult to judge the age of orientals since they all looked younger than what they really were. She constantly had to be careful not to offend anyone with inappropriate questions about their age.
'Can I please buy a box of these ones?' Laura pointed to some cookies that were the shape of heart and had jam on them.
Laura turned around to see a handsome dark young man standing right behind her. He had a warm smile on his face and he nodded at Laura in a friendly manner. The shy young lady packed a box for the man, and they both took the boxes as they gazed at each other. Laura blushed.
This entry was posted in Writing & blogging and tagged travel experiences on May 8, 2015 by Buna School of Music.


Natural gas is the last fossil source of energy to be used on a global scale. For over a century, when the gas was discovered in areas that were far from the places where it could be utilized, it was preferably burnt at the gas well or freed into the atmosphere, because harnessing it in a pipeline and making it travel for many kilometres was too expensive. The situation has changed over the past forty years and today natural gas ranks third in world consumption of energy and is the fossil source with the best growth prospects. In the Seventies with the creation of transport infrastructures for importing natural gas, the producer countries and the consumers defined typical contract agreements that are reference models still today.
From the Seventies up to date world consumption of gas has tripled, growing from 100 billion cubic metres to approximately 3,584 cubic meters in 2016. Data updated to 2016, indicate that Italy produces 5.65 billion cubic metres of natural gas per year and consumes 69.27 billion cubic metres a year.


text:
Pittsburgh Quarterly Archives
David Liebmann
Pittsburgh Quarterly Contributors
David Liebmann is an educator who has birded throughout the country.
Swainson's Thrush
Fall is a time of movement: college students packed in SUVs returning to classes, younger kids nervous to get back to school, the lazy days of summer fading fast. Millions of birds are moving, too, some passing through the Pittsburgh area en route to wintering grounds to the south.
A Flash of Blue
A ratchety, staccato rattle announces the arrival of a Belted Kingfisher along one of Pittsburgh's riverbanks, over a stream, or across a pond. I love the sound of the bird, so distinctive, as I scan for it in the sky. And I'm not alone. The great English poet Gerard Manley Hopkins wrote of…
Season of the Killdeer
One early summer day, I was walking the paved loops of Hartwood Acres in the North Hills. Off in the distance, a band was doing a sound check on the stage and bass notes were booming through the trees. As I headed west toward Middle Road, I passed some extended patches of gravel.…
Are we separate from nature or part of it? Superior to all creatures, the apex of creation, or simply one species among millions? Does self awareness make us unique? What about our sense of past, present and future?
A little yellow friend
The potato chip bird. that's how my students remember it. At first, they think it's a canary. I show them pictures on the opening day of class, and they see yellow and call out "Big Bird?" "No," then, "Canary?" "Wrong continent." That's before they've learned to use their eyes and ears again to…
The Eastern Bluebird
Sometimes winter brings surprises. Some are massive, like a burying storm; and some are almost unnoticed, like an unexpected bird on a branch. Now is the season to look for the Eastern Bluebird, whose flash of color can be as brilliant as a winter sky after a big snow or as delightful as…
Beautiful and bold
It is often the voice of the Blue Jay that initially attracts our notice. With a vocal range like its cousins the crows and ravens, the Blue Jay produces loud, strident calls, bounding whistling notes, as well as imitations of the scratchy shrieks of hawks and other birds. More than once, I've heard…
Wintering in Pittsburgh
It may be funny to think of Pittsburgh in the same geographic thought as, say, Miami, but for dark-eyed juncos, which spend many months to our north, we're all sand and sunsets.
Red-bellied woodpecker
A tree is a house. it's not just an isolated organism, but also a host to forms of life from mammals to birds to insects to fungi. A tree is one element of a larger ecosystem and simultaneously a microcosm of it. And you can tell a lot about a neighborhood ecosystem based…
The wood duck
Changing habitat has complex consequences for birds. Some species prefer deep, old growth forests. Others thrive around patchwork clearcuts. Some require grasslands to breed, while others reproduce in swampy bottomlands. Some of our notorious losses — the ivory-billed woodpecker and Carolina parakeet — needed relatively narrow bands of Southern wetland so much that when the trees there…

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: How can i execute filter from our JSON filter JSON? I have a vue3 datagrid and I want to fill the data in this grid with filter by API. At the same time, I want to send the filter fields in the grid to the API as JSON and execute them according to this filter on the API side. How can I do this with AutoQuery?
[Route("/GetConnectors", "POST")]
public class GetConnectors : QueryDb<Connector>
{
    public string Id { get; set; }
    public string PageParameterJson { get; set; }
}

public class Connector
{
    [PrimaryKey]
    [AutoIncrement]
    public long PKey { get; set; }
    public string Id { get; set; }
    public string Name { get; set; }
}

public class PageParameters
{
    public string Field { get; set; }
    public string Operand { get; set; }
    public string Value { get; set; }
    public string Type { get; set; }
}

It's an example PageParameter JSON;
[
    {
        "Field":"Name",
        "Operand":"cn"//Contains
        "Value":"test",
        "Type":"string"
    },
    {
        "Field":"Id",
        "Operand":"eq"//Equal
        "Value":"2",
        "Type":"string"
    }
]

 public async Task<object> Any(GetConnectors query)
 {
     using var db = AutoQuery.GetDb(query, base.Request);
     var filters = query.PageParameters.FromJson<List<PageParameter>>();
     //How can I execute query with for CreateQuery?
     var q = AutoQuery.CreateQuery(query, Request, db);
     var sql = q.PointToSqlString();
     return await AutoQuery.ExecuteAsync(query, q, base.Request, dbConnection);
 }

Best Regards
i can't execute dynamic filters from server-side datagrid

A: The AutoQuery.CreateQuery returns OrmLite's Typed SqlExpression which has a number of filtering options inc .Where(), .And(), .Or(), etc.
So you should be able to populate it with something like:
foreach (var filter in filters)
{
    var type = filter.Type switch
    {
        "string" => typeof(string),
        _ => throw new NotSupportedException($"Type {filterType}")
    };
    var value = filter.Value.ConvertTo(type);
    if (filter.Operand == "eq")
    {
        q.And(filter.Field + " = {0}", value)
    }
    else if (filter.Operand == "cn")
    {
        q.And(filter.Field + " LIKE {0}", $"%{value}%")
    }
    else throw new NotSupportedException(filter.Operand);
}

Note: I've rewritten API to be async as you should never block on async methods.

redpajama_set_name: RedPajamaStackExchange


text:
Крутая либо Крута () — село в Житомирском районе Житомирской области Украины.

Код КОАТУУ — 1822081802. Население по переписи 2001 года составляет 121 человек. Почтовый индекс — 10000. Телефонный код — 412. Занимает площадь 0,567 км².

До 2010 года называлось Круты (). Переименовано решением Житомирского областного совета от 18 марта 2010 года № 1062 «О внесении изменений в административно-территориальное устройство Житомирской области». Верховной радой уточнение пока не утверждено.

Адрес местного совета
12461, Житомирская область, Житомирский р-н, с. Глубочок, ул.Мира, 1

Примечания

Ссылки
 Крутая на сайте Верховной рады Украины

Населённые пункты Житомирского района

redpajama_set_name: RedPajamaWikipedia


If you're in the market to purchase an essential oil diffuser, you have a pretty big decision to make.
There are many different methods of diffusing essential oils and many essential oil diffusers available to choose from. They range from very inexpensive to quite expensive; they also range from very effective to completely ineffective. And just to throw a monkey wrench into your shopping experience, the most expensive ones might just be most ineffective, and vice versa.
With so many choices there are a few things you should know to help you get just the right thing you need. After all, knowledge is power and when it comes to the power of essential oils, the more you know, the healthier you can be.
The best essential oil diffuser is the one that will meet your needs the best, so in order to make the right choice, consider your needs while reading.
Nebulizing essential oil diffusers are often seen as the best type of diffusers for many reason. They do not require heat, water, and contain no plastic, which is a big benefit. It works by using pressurized air and oil. A stream of air blows across a small tube, creating a vacuum that pulls the oil to the surface of the tube where it is blown away in a fine mist. Many of them can be used with timers that can be set for a burst of essence at just the right moment, but you might just choose to fill it and forget it.
Perhaps even more important than the ease-of-use is the way that nebulizing essential oil diffusers distribute the product perfectly. For those who use essential oils for their physical and mental health and wellbeing, or those who practice aromatherapy, this is the type of essential oil diffuser to purchase because it can put a large amount of oil into the air when you need it the most.
These also create a fine mist like the nebulizer, but they work in a different way, using electronic frequencies to create ultrasonic vibrations that break up the molecules for distribution. These use a mixture of water and essential oil, which means that you'll be diluting the potency of the essential oil upon use. Plus, because essential oil is corrosive to plastic it needs to be cleaned regularly to keep it running smoothly.
However, there is a humidifying aspect to using this type of essential oil diffuser, so it's great when the weather turns chilly and dry. Adding moisture to the room is important during cold and flu season. One caveat is that you cannot use any type of citrus oil in this type of unit because it can erode the ultrasonic parts.
These work just as you might suspect from their name. As the essential oil evaporates, it is released into the air as it turns from liquid to gas. These models usually use a small fan that blows air past the oil, causing it to evaporate at a faster rate than normal.
One drawback is that as the essential oil evaporates, the lighter components will disperse faster than heavier components, making it difficult to get the complete benefits of the oils. Evaporative essential oil diffusers are typically the least expensive and are good for those who just want a burst of freshness on occasion.
These work in the same way as evaporative diffusers that use a fan to release the essential oils, but they use heat instead. They are relatively inexpensive and quiet, but they can change the chemical composition of your oils when they are heated. Some use higher levels of heat that can make the scent more intense, but this defeats the purpose when you are trying to get essential healing benefits. Lower levels of heat can keep things subtle without changing the compounds too much and still make your home smell good.
Now that you have an idea of what is out there, you can make a better decision and feel good about your purchase.
My first time on board and the information is overwhelming. I have not purchased a nebulizer to date because I'm still doing my reseach. Thanks for all the comments. They have gotten me closer to my purchase.
New to EO, but ready to start.
I've always loved essential oils. With all the new oil companies, it's tricky to know who you can trust for real quality, ethically sourced, organic oils. So happy to try nebulizer diffuser because if you're going to burn something that's gonna make it into your body- this is the way to do it!
so excited about this diffuser!!
Very informative. I never knew.
I like the ones that also add moisture into the air. Long ago I had a heated one and then learned how not-so-good they were.
I am obsessed with my Organic Aromas diffuser. The quality far surpasses any others I've seen on the market.
This is the first I learned about the differences between diffusers. i currently use an ultrasonic. I am looking forward to getting a nebulizer.
Thanks for all the great information about the different kinds of diffusers. They obviously can be very different.
Great information regarding different types of Diffusers! Love the waterless diffuser better than the one that uses water. Thanks for the information.
When I started looking into diffusers earlier this year I was immediately drawn to the benefits of the Nebulizing type. This was quickly followed by surprise as they don't seem as popular since I had to hunt to find them. But at least it led me to Organic Aromas.
I'm looking to get a diffuser, and this was extremely helpful. Thank you!
I have had the evaporating kind before and the scent didn't last to the end of the essential oil. Next time I would buy a different type.
Never knew these many diffusers types.. Thank you for this post,..
OMG !!! 5 min ago my first package from Organic aromas arrived. I ordered radiance nebulizing diffuser. I can't believe the different between this beautiful hand made nebiliziing diffuser and ultrasonic one. In 30 seconds my house was full of wonderful fragrance.
This was SO informative! I have cheap, Ultrasonic diffuser now and I find that I have to use too much oil! I will look into purchasing a nebulizing diffuser!
Love my nebulizing diffuser! One of my all-time favorite things I own!!!
I have all four types in my house and the nebulizing diffuser is my favorite, although it uses up my essential oils much more quickly.


Yandex, the Russian search engine and advertising giant, has become the default search engine on Windows Phone-based handsets in Russia. Teaming up with, Nokia, Samsung, HTC and Microsoft, the Russian search giant will provide its search services on the latest Windows Phone smartphone models on the country's mobile market.
The Samsung Omnia W is already available for purchase in Russia. Nokia's smartphones will hit the stores in December.
Also, following the launch of Windows Phone-based Titan, Mozart and Radar smartphones last autumn, HTC is planning an update release with Yandex as the default search engine on its handsets.
The Russian search company points out it has already developed some apps for Windows Phone, including mapping service Yandex.Maps and online marketplace Yandex.Market, and that it will build more applications for the platform and other mobile operating systems in the future.


text:
/* -*- mode: c++; fill-column: 132; c-basic-offset: 4; indent-tabs-mode: nil -*- */

/*** Copyright (c), The Regents of the University of California            ***
 *** For more information please refer to files in the COPYRIGHT directory ***/

/*
  This routine sets up the rodsEnv structure using the contents of the
  .irodsEnv file and possibly some environment variables.  For each of
  the .irodsEnv items, if an environment variable with the same name
  exists, it overrides the possible .irodsEnv item.  This is called by
  the various Rods commands and the agent.

  This routine also fills in irodsHome and irodsCwd if they are not
  otherwise defined, and if values needed to create them are available.

  The '#' character indicates a comment line.  Items may be enclosed in
  quotes, but do not need to be.  One or more spaces, or a '=', will
  preceed the item values.

  The items are defined in the rodsEnv struct.  The item names in the
  .irodsEnv file need to match the item names of the struct.

  If an error occurs, a message may logged or displayed but the
  structure is filled with whatever values are available.

  There is also an 'appendRodsEnv' function to add text to
  the env file, either creating it or appending to it.
*/

#include "rods.hpp"

#include "getRodsEnv.hpp"
#include "rodsLog.hpp"

#ifdef windows_platform
#include "irodsntutil.hpp"
#else
#ifdef UNI_CODE
#include <locale.h>
#endif
#endif

#define BUF_LEN 100
#define LARGE_BUF_LEN MAX_NAME_LEN+20

#define RODS_ENV_FILE "/.irods/.irodsEnv"  /* under the HOME directory */

extern int ProcessType;
extern char *rstrcpy( char *dst, const char *src, int len ); // why do they not just include the header? - harry

char *findNextTokenAndTerm( char *inPtr );

int getRodsEnvFromFile( char *fileName, rodsEnv *rodsEnvArg, int errorLevel );
int getRodsEnvFromEnv( rodsEnv *rodsEnvArg );
int createRodsEnvDefaults( rodsEnv *rodsEnvArg );

static char configFileName[LONG_NAME_LEN];
static char authFileName[LONG_NAME_LEN] = "";
static int irodsEnvFile = 0;

char *
getRodsEnvFileName() {
    return( configFileName );
}

/* Return the auth filename, if any */
/* Used by obf routines so that the env struct doesn't have to be passed
   up and down the calling chain */
char *
getRodsEnvAuthFileName() {
    return( authFileName );
}

/* convert either an integer value or a name matching the defines, to
   a value for the Logging Level */
int
convertLogLevel( char *inputStr ) {
    int i;
    i = atoi( inputStr );
    if ( i > 0 && i <= LOG_SQL ) {
        return( i );
    }
    if ( strcmp( inputStr, "LOG_SQL" ) == 0 ) {
        return( LOG_SQL );
    }
    if ( strcmp( inputStr, "LOG_SYS_FATAL" ) == 0 ) {
        return( LOG_SYS_FATAL );
    }
    if ( strcmp( inputStr, "LOG_SYS_WARNING" ) == 0 ) {
        return( LOG_SYS_WARNING );
    }
    if ( strcmp( inputStr, "LOG_ERROR" ) == 0 ) {
        return( LOG_ERROR );
    }
    if ( strcmp( inputStr, "LOG_NOTICE" ) == 0 ) {
        return( LOG_NOTICE );
    }
    if ( strcmp( inputStr, "LOG_DEBUG" ) == 0 ) {
        return( LOG_DEBUG );
    }
    if ( strcmp( inputStr, "LOG_DEBUG3" ) == 0 ) {
        return( LOG_DEBUG3 );
    }
    if ( strcmp( inputStr, "LOG_DEBUG2" ) == 0 ) {
        return( LOG_DEBUG2 );
    }
    if ( strcmp( inputStr, "LOG_DEBUG1" ) == 0 ) {
        return( LOG_DEBUG1 );
    }
    return( 0 );
}

int getRodsEnv( rodsEnv *rodsEnvArg ) {
    char *getVar = NULL;
    int ppid;
    char ppidStr[BUF_LEN];

#ifdef windows_platform
    /* we handle env file differently in Windows */
    if ( ProcessType != CLIENT_PT ) {
        char rodsEnvFilenameWP[1024];
        char *tmpstr1;
        int t;
        tmpstr1 = iRODSNtGetServerConfigPath();
        sprintf( rodsEnvFilenameWP, "%s\\irodsEnv.txt", tmpstr1 );
        t = getRodsEnvFromFile( rodsEnvFilenameWP, rodsEnvArg, LOG_DEBUG );
        if ( t < 0 ) {
            return t;
        }
        return createRodsEnvDefaults( rodsEnvArg );
    }

    getVar = iRODSNt_gethome();
#else
#ifdef UNI_CODE
    setlocale( LC_ALL, "" );
#endif
    getVar = getenv( "HOME" );
#endif
    if ( getVar == NULL ) {
        rstrcpy( configFileName, "", LONG_NAME_LEN );
    }
    else {
        rstrcpy( configFileName, getVar, LONG_NAME_LEN );
    }
    rstrcat( configFileName, RODS_ENV_FILE, LONG_NAME_LEN );

    getVar = getenv( "irodsEnvFile" );
    if ( getVar != NULL && *getVar != '\0' ) {
#ifdef windows_platform
        getVar = strdup( getenv( "irodsEnvFile" ) );
#endif
        rstrcpy( configFileName, findNextTokenAndTerm( getVar ), LONG_NAME_LEN );
        rodsLog( LOG_NOTICE,
                 "environment variable set, irodsEnvFile=%s",
                 configFileName );
        irodsEnvFile = 1; /* indicate that this was set */
    }

    memset( rodsEnvArg, 0, sizeof( rodsEnv ) );

    /* RAJA CHANGED Feb 1, 207  from LOG_NOTICE to LOG_DEBUG */
    getRodsEnvFromFile( configFileName, rodsEnvArg, LOG_DEBUG );
    getRodsEnvFromEnv( rodsEnvArg );
    createRodsEnvDefaults( rodsEnvArg );

    /* Only client processes will do this, otherwise a lot of errors */
    if ( ProcessType == CLIENT_PT ) {
#ifdef windows_platform
        /* windows only allow one session per user. This is because there is no ppid.*/
        char tmpCfg[LONG_NAME_LEN];
        sprintf( tmpCfg, "%s.cwd", configFileName );
        strcpy( configFileName, tmpCfg );
#else
        if ( irodsEnvFile == 0 ) {
            /* For normal case, use the ppid as part of the session file name */
            ppid = getppid();
            sprintf( ppidStr, ".%d", ppid );
        }
        else {
            /* When irodsEnvFile set, use a fixed string so that all the
               children processes (with inherited env) will find the same
               one.  This is useful when running scripts. */
            sprintf( ppidStr, ".%s", "cwd" );
        }
        rstrcat( configFileName, ppidStr, LONG_NAME_LEN );
#endif
        getRodsEnvFromFile( configFileName, rodsEnvArg, LOG_DEBUG );
    }

#ifdef windows_platform
    if ( getVar != NULL ) {
        free( getVar );
    }
#endif

    return( 0 );
}

int getRodsEnvFromFile( char *fileName, rodsEnv *rodsEnvArg, int errorLevel ) {
    FILE *file;
    char buf[LARGE_BUF_LEN];
    char *fchar;
    char *key;
    int msgLevel;

    msgLevel = LOG_DEBUG;
//    if ( ProcessType == AGENT_PT ) {
//        /* For an Agent process, make the LOG_NOTICE messages an even lower
//           priority (LOG_DEBUG) so that by default the log file will be
//           shorter.  The Server will log the environment values at startup
//           but these will almost always be redundant for the Agent.  */
//        msgLevel = LOG_DEBUG;
//    }

    if ( getenv( PRINT_RODS_ENV_STR ) && atoi( getenv( PRINT_RODS_ENV_STR ) ) ) {
        msgLevel = LOG_NOTICE;
        unsetenv( PRINT_RODS_ENV_STR );
    }

    /*
      Read and process the env file
    */
#ifdef windows_platform
    file = iRODSNt_fopen( fileName, "r" );
#else
    file = fopen( fileName, "r" );
#endif
    if ( file != NULL ) {
        buf[LARGE_BUF_LEN - 1] = '\0';
        fchar = fgets( buf, LARGE_BUF_LEN - 1, file );
        for ( ; fchar != '\0'; ) {
            if ( buf[0] == '#' || buf[0] == '/' ) {
                buf[0] = '\0'; /* Comment line, ignore */
            }
            key = strstr( buf, "irodsUserName" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsUserName, findNextTokenAndTerm( key + 13 ),
                         NAME_LEN );
                rodsLog( msgLevel, "irodsUserName=%s", rodsEnvArg->rodsUserName );
            }
            key = strstr( buf, "irodsHost" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsHost, findNextTokenAndTerm( key + 9 ),
                         NAME_LEN );
                rodsLog( msgLevel, "irodsHost=%s", rodsEnvArg->rodsHost );
            }
            /* add xmsgHost. mw */
            key = strstr( buf, "xmsgHost" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->xmsgHost, findNextTokenAndTerm( key + 9 ),
                         NAME_LEN );
                rodsLog( msgLevel, "xmsgHost=%s", rodsEnvArg->xmsgHost );
            }
            key = strstr( buf, "irodsPort" );
            if ( key != NULL ) {
                rodsEnvArg->rodsPort = atoi( findNextTokenAndTerm( key + 9 ) );
                rodsLog( msgLevel, "irodsPort=%d", rodsEnvArg->rodsPort );
            }
            /* add xmsgPort. mw */
            key = strstr( buf, "xmsgPort" );
            if ( key != NULL ) {
                rodsEnvArg->xmsgPort = atoi( findNextTokenAndTerm( key + 8 ) );
                rodsLog( msgLevel, "xmsgPort=%d", rodsEnvArg->xmsgPort );
            }
            key = strstr( buf, "irodsHome" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsHome, findNextTokenAndTerm( key + 9 ),
                         MAX_NAME_LEN );
                rodsLog( msgLevel, "irodsHome=%s", rodsEnvArg->rodsHome );
            }
            key = strstr( buf, "irodsCwd" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsCwd, findNextTokenAndTerm( key + 8 ),
                         MAX_NAME_LEN );
                rodsLog( msgLevel, "irodsCwd=%s", rodsEnvArg->rodsCwd );
            }
            key = strstr( buf, "irodsAuthScheme" );
            if ( key != NULL ) {
                static char tmpStr1[120];
                char *getVar;

                rstrcpy( rodsEnvArg->rodsAuthScheme, findNextTokenAndTerm( key + 15 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsAuthScheme=%s",
                         rodsEnvArg->rodsAuthScheme );
                /* Also put it into the environment for easy access,
                   unless there already is one (which should be used instead) */
                getVar = getenv( "irodsAuthScheme" );
                if ( getVar == NULL ) {
                    snprintf( tmpStr1, 100, "irodsAuthScheme=%s",
                              rodsEnvArg->rodsAuthScheme );
                    putenv( tmpStr1 );
                }
            }
            key = strstr( buf, "irodsDefResource" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsDefResource, findNextTokenAndTerm( key + 16 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsDefResource=%s",
                         rodsEnvArg->rodsDefResource );
            }
            key = strstr( buf, "irodsZone" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsZone, findNextTokenAndTerm( key + 9 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsZone=%s",
                         rodsEnvArg->rodsZone );
            }

            // =-=-=-=-=-=-=-
            // variable for client - server negotiations
            key = strstr( buf, "irodsClientServerPolicy" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsClientServerPolicy,
                         findNextTokenAndTerm( key + 24 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsClientServerPolicy=%s",
                         rodsEnvArg->rodsClientServerPolicy );
            }

            // =-=-=-=-=-=-=-
            // variable to enable client - server negotiations
            key = strstr( buf, "irodsClientServerNegotiation" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsClientServerNegotiation,
                         findNextTokenAndTerm( key + 29 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsClientServerNegotiation=%s",
                         rodsEnvArg->rodsClientServerNegotiation );
            }

            // =-=-=-=-=-=-=-
            // variable to define encryption parameters
            key = strstr( buf, "irodsEncryptionKeySize" );
            if ( key != NULL ) {
                rodsEnvArg->rodsEncryptionKeySize = atoi( findNextTokenAndTerm( key + 22 ) );
                rodsLog( msgLevel, "irodsEncryptionKeySize=%d", rodsEnvArg->rodsEncryptionKeySize );
            }

            // =-=-=-=-=-=-=-
            // variable to define encryption parameters
            key = strstr( buf, "irodsEncryptionSaltSize" );
            if ( key != NULL ) {
                rodsEnvArg->rodsEncryptionSaltSize = atoi( findNextTokenAndTerm( key + 23 ) );
                rodsLog( msgLevel, "irodsEncryptionSaltSize=%d", rodsEnvArg->rodsEncryptionSaltSize );
            }

            // =-=-=-=-=-=-=-
            // variable to define encryption parameters
            key = strstr( buf, "irodsEncryptionNumHashRounds" );
            if ( key != NULL ) {
                rodsEnvArg->rodsEncryptionNumHashRounds = atoi( findNextTokenAndTerm( key + 28 ) );
                rodsLog( msgLevel, "irodsEncryptionNumHashRounds=%d", rodsEnvArg->rodsEncryptionNumHashRounds );
            }

            // =-=-=-=-=-=-=-
            // variable to define encryption parameters
            key = strstr( buf, "irodsEncryptionAlgorithm" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsEncryptionAlgorithm,
                         findNextTokenAndTerm( key + 24 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsEncryptionAlgorithm=%s",
                         rodsEnvArg->rodsEncryptionAlgorithm );
            }

            // =-=-=-=-=-=-=-
            // variable to define default hash scheme
            key = strstr( buf, "irodsDefaultHashScheme" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsDefaultHashScheme,
                         findNextTokenAndTerm( key + 22 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsDefaultHashScheme=%s",
                         rodsEnvArg->rodsDefaultHashScheme );
            }

            // =-=-=-=-=-=-=-
            // variable to define hash scheme matching policy
            key = strstr( buf, "irodsMatchHashPolicy" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsMatchHashPolicy,
                         findNextTokenAndTerm( key + 20 ),
                         LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsMatchHashPolicy=%s",
                         rodsEnvArg->rodsMatchHashPolicy );
            }

            key = strstr( buf, "irodsServerDn" );
            if ( key != NULL ) {
                char *myStr;
                char *getVar;
                myStr = ( char * )malloc( strlen( buf ) );
                rstrcpy( myStr, findNextTokenAndTerm( key + 13 ),
                         LONG_NAME_LEN );
                rodsEnvArg->rodsServerDn = myStr;
                rodsLog( msgLevel, "irodsServerDn=%s",
                         rodsEnvArg->rodsServerDn );
                /* Also put it into the environment for easy access,
                   unless there already is one (which should be used instead) */
                getVar = getenv( "irodsServerDn" );
                if ( getVar == NULL ) {
                    char *tmpStr2;
                    int tmpLen;
                    tmpLen = strlen( myStr ) + 40;
                    tmpStr2 = ( char * )malloc( tmpLen );
                    snprintf( tmpStr2, tmpLen, "irodsServerDn=%s",
                              rodsEnvArg->rodsServerDn );
                    putenv( tmpStr2 );
                    //free( tmpStr2 ); // JMC cppcheck - leak ==> backport 'fix' from comm trunk for solaris
                }
            }
            key = strstr( buf, "irodsLogLevel" );
            if ( key != NULL ) {
                char *levelStr;
                levelStr = findNextTokenAndTerm( key + 13 );
                rodsEnvArg->rodsLogLevel = convertLogLevel( levelStr );
                if ( rodsEnvArg->rodsLogLevel ) {
                    rodsLogLevel( rodsEnvArg->rodsLogLevel ); /* process it */
                }
                rodsLog( msgLevel,
                         "environment variable set, irodsLogLevel(input)=%s, value=%d",
                         levelStr, rodsEnvArg->rodsLogLevel );
            }
            key = strstr( buf, "irodsAuthFileName" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsAuthFileName,
                         findNextTokenAndTerm( key + 17 ), LONG_NAME_LEN );
                rodsLog( msgLevel, "irodsAuthFileName=%s",
                         rodsEnvArg->rodsAuthFileName );
                rstrcpy( authFileName, rodsEnvArg->rodsAuthFileName, LONG_NAME_LEN );
            }
            key = strstr( buf, "irodsDebug" );
            if ( key != NULL ) {
                rstrcpy( rodsEnvArg->rodsDebug, findNextTokenAndTerm( key + 10 ),
                         NAME_LEN );
                rodsLog( msgLevel, "irodsDebug=%s", rodsEnvArg->rodsDebug );
            }
            fchar = fgets( buf, LARGE_BUF_LEN - 1, file );
        }
        fclose( file );
    }
    else {
        rodsLog( errorLevel,
                 "getRodsEnv() could not open environment file %s",
                 fileName );
#ifdef windows_platform
        return -1;
#endif
    }
    return( 0 );
}

int
getRodsEnvFromEnv( rodsEnv *rodsEnvArg ) {
    int msgLevel = LOG_DEBUG;

    if ( getenv( PRINT_RODS_ENV_STR ) && atoi( getenv( PRINT_RODS_ENV_STR ) ) ) {
        msgLevel = LOG_NOTICE;
        unsetenv( PRINT_RODS_ENV_STR );
    }

    /*
      Check for and process the environment variables
    */
    char *getVar;

    getVar = getenv( "irodsUserName" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsUserName, findNextTokenAndTerm( getVar ), NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsUserName=%s",
                 rodsEnvArg->rodsUserName );
    }
    getVar = getenv( "irodsHost" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsHost, findNextTokenAndTerm( getVar ), NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsHost=%s",
                 rodsEnvArg->rodsHost );
    }
    /* add xmsgHost. mw */
    getVar = getenv( "xmsgHost" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->xmsgHost, findNextTokenAndTerm( getVar ), NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, xmsgHost=%s",
                 rodsEnvArg->xmsgHost );
    }

    getVar = getenv( "irodsPort" );
    if ( getVar != NULL ) {
        rodsEnvArg->rodsPort = atoi( findNextTokenAndTerm( getVar ) );
        rodsLog( msgLevel,
                 "environment variable set, irodsPort=%d",
                 rodsEnvArg->rodsPort );
    }

    /* add xmsgPort. mw */

    getVar = getenv( "xmsgPort" );
    if ( getVar != NULL ) {
        rodsEnvArg->xmsgPort = atoi( findNextTokenAndTerm( getVar ) );
        rodsLog( msgLevel,
                 "environment variable set, xmsgPort=%d",
                 rodsEnvArg->xmsgPort );
    }

    getVar = getenv( "irodsHome" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsHome, findNextTokenAndTerm( getVar ), MAX_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsHome=%s",
                 rodsEnvArg->rodsHome );
    }
    getVar = getenv( "irodsCwd" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsCwd, findNextTokenAndTerm( getVar ), MAX_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsCwd=%s",
                 rodsEnvArg->rodsCwd );
    }
    getVar = getenv( "irodsAuthScheme" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsAuthScheme, findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsAuthScheme=%s",
                 rodsEnvArg->rodsAuthScheme );
    }
    getVar = getenv( "irodsDefResource" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsDefResource, findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsDefResource=%s",
                 rodsEnvArg->rodsDefResource );
    }
    getVar = getenv( "irodsZone" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsZone, findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsZone=%s",
                 rodsEnvArg->rodsZone );
    }

    // =-=-=-=-=-=-=-
    // variable for client - server negotiations
    getVar = getenv( "irodsClientServerPolicy" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsClientServerPolicy,
                 findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsClientServerPolicy=%s",
                 rodsEnvArg->rodsClientServerPolicy );
    }

    // =-=-=-=-=-=-=-
    // variable to enable client - server negotiations
    getVar = getenv( "irodsClientServerNegotiation" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsClientServerNegotiation,
                 findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsClientServerNegotiation=%s",
                 rodsEnvArg->rodsClientServerNegotiation );
    }

    // =-=-=-=-=-=-=-
    // variable to define encryption parameters
    getVar = getenv( "irodsEncryptionKeySize" );
    if ( getVar != NULL ) {
        rodsEnvArg->rodsEncryptionKeySize = atoi( findNextTokenAndTerm( getVar ) );
        rodsLog( msgLevel, "irodsEncryptionKeySize=%d",
                 rodsEnvArg->rodsEncryptionKeySize );
    }

    // =-=-=-=-=-=-=-
    // variable to define encryption parameters
    getVar = getenv( "irodsEncryptionSaltSize" );
    if ( getVar != NULL ) {
        rodsEnvArg->rodsEncryptionSaltSize = atoi( findNextTokenAndTerm( getVar ) );
        rodsLog( msgLevel, "irodsEncryptionSaltSize=%d",
                 rodsEnvArg->rodsEncryptionSaltSize );
    }

    // =-=-=-=-=-=-=-
    // variable to define encryption parameters
    getVar = getenv( "irodsEncryptionNumHashRounds" );
    if ( getVar != NULL ) {
        rodsEnvArg->rodsEncryptionNumHashRounds = atoi( findNextTokenAndTerm( getVar ) );
        rodsLog( msgLevel, "irodsEncryptionNumHashRounds=%d",
                 rodsEnvArg->rodsEncryptionNumHashRounds );
    }

    // =-=-=-=-=-=-=-
    // variable to define encryption parameters
    getVar = getenv( "irodsEncryptionAlgorithm" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsEncryptionAlgorithm,
                 findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel, "irodsEncryptionAlgorithm=%s",
                 rodsEnvArg->rodsEncryptionAlgorithm );
    }

    // =-=-=-=-=-=-=-
    // variable to define hash scheme
    getVar = getenv( "irodsDefaultHashScheme" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsDefaultHashScheme,
                 findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel, "irodsDefaultHashScheme=%s",
                 rodsEnvArg->rodsDefaultHashScheme );
    }

    // =-=-=-=-=-=-=-
    // variable to define hash matching policy
    getVar = getenv( "irodsMatchHashPolicy" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsMatchHashPolicy,
                 findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel, "irodsMatchHashPolicy=%s",
                 rodsEnvArg->rodsMatchHashPolicy );
    }

    getVar = getenv( "irodsServerDn" );
    if ( getVar != NULL ) {
        char *myStr;
        myStr = ( char * )malloc( strlen( getVar ) + 10 );
        strcpy( myStr, findNextTokenAndTerm( getVar ) );
        rodsEnvArg->rodsServerDn = myStr;
        rodsLog( msgLevel, "environment variable set, irodsServerDn=%s",
                 rodsEnvArg->rodsServerDn );
    }
    getVar = getenv( "irodsLogLevel" );
    if ( getVar != NULL ) {
        rodsEnvArg->rodsLogLevel = convertLogLevel( getVar );
        if ( rodsEnvArg->rodsLogLevel ) {
            rodsLogLevel( rodsEnvArg->rodsLogLevel ); /* go ahead and process it */
        }
        rodsLog( msgLevel,
                 "environment variable set, irodsLogLevel(input)=%s, value=%d",
                 getVar, rodsEnvArg->rodsLogLevel );
    }
    getVar = getenv( "irodsAuthFileName" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsAuthFileName, findNextTokenAndTerm( getVar ),
                 LONG_NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsAuthFileName=%s",
                 rodsEnvArg->rodsAuthFileName );
        rstrcpy( authFileName, rodsEnvArg->rodsAuthFileName, LONG_NAME_LEN );
    }
    getVar = getenv( "irodsDebug" );
    if ( getVar != NULL ) {
        rstrcpy( rodsEnvArg->rodsDebug, findNextTokenAndTerm( getVar ), NAME_LEN );
        rodsLog( msgLevel,
                 "environment variable set, irodsDebug=%s",
                 rodsEnvArg->rodsDebug );
    }
    return ( 0 );
}

/* build a couple default values from others if appropriate */
int
createRodsEnvDefaults( rodsEnv *rodsEnvArg ) {
    if ( strlen( rodsEnvArg->rodsHome ) == 0 ) {
        if ( strlen( rodsEnvArg->rodsUserName ) > 0 &&
                strlen( rodsEnvArg->rodsZone ) > 0 ) {
            snprintf( rodsEnvArg->rodsHome,  MAX_NAME_LEN, "/%s/home/%s",
                      rodsEnvArg->rodsZone, rodsEnvArg->rodsUserName );
        }
        rodsLog( LOG_NOTICE, "created irodsHome=%s", rodsEnvArg->rodsHome );
    }
    if ( strlen( rodsEnvArg->rodsCwd ) == 0 &&
            strlen( rodsEnvArg->rodsHome ) > 0 ) {
        rstrcpy( rodsEnvArg->rodsCwd, rodsEnvArg->rodsHome, MAX_NAME_LEN );
        rodsLog( LOG_NOTICE, "created irodsCwd=%s", rodsEnvArg->rodsCwd );
    }

    return ( 0 );
}

/*
  find the next delimited token and terminate the string with matching quotes
*/
char *findNextTokenAndTerm( char *inPtr ) {
    char *myPtr = 0;
    char *savePtr = 0;
    char *nextPtr = 0;
    int whiteSpace = 0;
    myPtr = inPtr;
    whiteSpace = 1;
    for ( ;; myPtr++ ) {
        if ( *myPtr == ' ' || *myPtr == '=' ) {
            continue;
        }
        if ( *myPtr == '"' && whiteSpace ) {
            myPtr++;
            savePtr = myPtr;
            for ( ;; ) {
                if ( *myPtr == '"' ) {
                    nextPtr = myPtr + 1;
                    if ( *nextPtr == ' ' || *nextPtr == '\n'  || *nextPtr == '\0' ) {
                        /* imbedded "s are OK */
                        *myPtr = '\0';
                        return( savePtr );
                    }
                }
                if ( *myPtr == '\n' ) {
                    *myPtr = '\0';
                }
                if ( *myPtr == '\0' ) {
                    /* terminated without a corresponding ", so backup and
                       put the starting one back */
                    savePtr--;
                    *savePtr = '"';
                    return( savePtr );
                }
                myPtr++;
            }
        }
        if ( *myPtr == '\'' && whiteSpace ) {
            myPtr++;
            savePtr = myPtr;
            for ( ;; ) {
                if ( *myPtr == '\'' ) {
                    nextPtr = myPtr + 1;
                    if ( *nextPtr == ' ' || *nextPtr == '\n'  || *nextPtr == '\0' ) {
                        /* imbedded 's are OK */
                        *myPtr = '\0';
                        return( savePtr );
                    }
                }
                if ( *myPtr == '\n' ) {
                    *myPtr = '\0';
                }
                if ( *myPtr == '\0' ) {
                    /* terminated without a corresponding ", so backup and
                       put the starting one back */
                    savePtr--;
                    *savePtr = '\'';
                    return( savePtr );
                }
                myPtr++;
            }
        }
        if ( whiteSpace ) {
            savePtr = myPtr;
        }
        whiteSpace = 0;
        if ( *myPtr == '\n' ) {
            *myPtr = '\0';
        }
        if ( *myPtr == '\r' ) {
            *myPtr = '\0';
        }
        if ( *myPtr == '\0' ) {
            return( savePtr );
        }
    }
}

int appendRodsEnv( char *appendText ) {
    FILE *fptr;
    char *getVar = NULL;

#ifdef windows_platform
    getVar = iRODSNt_gethome();
#else
    getVar = getenv( "HOME" );
#endif
    if ( getVar == NULL ) {
        rstrcpy( configFileName, "", LONG_NAME_LEN );
    }
    else {
        rstrcpy( configFileName, getVar, LONG_NAME_LEN );
    }
    rstrcat( configFileName, RODS_ENV_FILE, LONG_NAME_LEN );

    getVar = getenv( "irodsEnvFile" );
    if ( getVar != NULL && *getVar != '\0' ) {
#ifdef windows_platform
        getVar = strdup( getenv( "irodsEnvFile" ) );
#endif
        rstrcpy( configFileName, findNextTokenAndTerm( getVar ), LONG_NAME_LEN );
    }
    fptr = fopen( configFileName, "a" );
    if ( fptr == NULL ) {
        rodsLog( LOG_ERROR,
                 "appendRodsEnv: cannot create file %s",
                 configFileName );
        return( 0 );
    }
    fputs( appendText, fptr );
    fclose( fptr );
    return( 0 );
}

redpajama_set_name: RedPajamaGithub


Are you an avid online buyer looking forward to saving money on Sperry Top-Sider's products and services when shopping online? Well Your look no more. All the latest Sperry Top-Sider Promo Codes, Vouchers, Coupon Codes and Sperry Top-Sider deals are available on GetBestStuff. If you are like everyone else and wants to save some cash on Sperry Top-Sider's goods and services, you have come to the right place. They have been offering a lot of promo codes and vouchers on many occasions and fortunately, some of these promos last for months. If you are lucky, you could save upto 23% on their products. Just make sure that the deal/promo code which you are going to use is still valid at the time of purchase and you won't be disappointed.
The latest coupon for Sperry Top-Sider was used less than 47 hours ago. The purchase went successfully and the buyer was able to obtain a discount by using a promo code from our site.
There is an whopping 93% success rate on coupons for this store. We keep track of most of the coupon codes that our users use by co-ordinating with the store. We have found that in case of Sperry Top-Sider, most of the failures encountered while redeeming the coupons generally result from visitors trying to redeem an old and stale promo code. If you are unsure about whether the coupon code would work or not, just make sure to check the "[date on which the promo expires", "deal expiry date"] right underneath the deal info section. But customers have found that 90% of the time, the coupons work fine even if it says its already expired.
Using these deals is very easy. Simply click on the GET DEAL link here on this page or on any other listing page such as the homepage or the category page where Sperry Top-Sider's vouchers appears and you will be taken to the deal page with more information on the same. If its a coupon, you will see the red colored GET CODE button right away which you can click to see the promo code and apply it on Sperry Top-Sider's payment page. It should be noted that the field to enter the promodiscountcoupon code will not appear on the product page itself when you are shopping, you will only see it after you proceed towards payment. If you are aware of any coupons or deals for Sperry Top-Sider that you would like to share with us, don't hesitate to do so by emailing us to the address given on our contact page.
Most of our merchants are based in the US. If you are living in the US or have a US shipping address, chances are that you would be eligible for a free shipping when you buy from Sperry Top-Sider's store if your order value is $50 or more. The minimum amount can't be specified because the store might change the minimum order value requirement from time to time which generally ranges from $50 to $150.
Using multiple Sperry Top-Sider codes for added savings is not available in 95% of the cases. They only have a single coupon fieldfield for promo code to use before the checkout so you can only apply one coupon code there. However, if you are using a special promo deal that doesn't require a promo code, you can use it in combination it with another coupon code for example a Free Delivery Coupon, promo code or a flat percentage discount coupon. It should be noted that sometimes, Sperry Top-Sider make all kinds of vouchers void on special ["promos", "offers"] with heavy discounts.
Printable coupons can be used on in-store purchases. GetBestStuff only offers coupons on the web and special deals which don't need a promo. We don't offer any Printable Sperry Top-Sider coupons.
60% Off Sperry Men's AO Surplus Boots - While Supplies Last! Free Shippig & Returns.
30% Off Sperry Men's Wahoo CVO Sneakers - While Supplies Last! Free Shipping & Returns.
30% Off Sperry Women's Saltwater Distressed Leather Duck Boots - While Supplies Last! Free Shipping & Returns.
60% Off Sperry Men's Cutwater Deck Boots - While Supplies Last! Free Shipping & Returns.
30% Off Sperry Women's Saltwater Heavy Linen Duck Boots - While Supplies Last! Free Shipping & Returns.
30% Off Sperry Men's AO Orleans Boat Shoes - While Supplies Last! Free Shipping & Returns.
Over 65% Off Women's Crest Webb Sandwash Sneakers - While Supplies Last! Free Shipping & Returns.
60% Off Sperry Women's AO Vida Color Pop Boat Shoes - While Supplies Last! Free Shipping & Returns.
60% Off Sperry Women's Firefish Metallic Boat Shoes - While Supplies Last! Free Shipping & Returns.
30% Off Sperry Men's AO Cross Lace Boat Shoes - While Supplies Last! Free Shipping & Returns.
30% Off Sperry Men's Cold Bay Boots - While Supplies Last! Free Shipping & Returns.
30% Off Sperry Women's Seaside Scale Sneakers - While Supplies Last! Free Shipping & Returns.
Save Up to 60% Off Sperry End of Season Sale Styles. No Code Required, Prices as Marked - While Supplies Last!
60% Off Sperry Men's AO Surplus Boots - While Supplies Last! Free Shipping and Returns!
30% Off Sperry Women's Saltwater Distressed Leather Duck Boots - While Supplies Last! Free Shipping and Returns!
60% Off Sperry Women's AO Vida Color Pop Boat Shoes - While Supplies Last! Free Shipping and Returns!
30% Off Sperry Women's Saltwater Heavy Linen Duck Boots - While Supplies Last! Free Shipping and Returns!
Over 65% Off Women's Crest Webb Sandwash Sneakers - While Supplies Last! Free Shipping and Returns!
30% Off Sperry Women's Seaside Scale Sneakers - While Supplies Last! Free Shipping and Returns!
30% Off Sperry Men's Wahoo CVO Sneakers - While Supplies Last! Free Shipping and Returns!
30% Off Sperry Men's AO Cross Lace Boat Shoes - While Supplies Last! Free Shipping and Returns!
60% Off Sperry Men's Cutwater Deck Boots - While Supplies Last! Free Shipping and Returns!
30% Off Sperry Men's Cold Bay Boots - While Supplies Last! Free Shipping and Returns!
30% Off Sperry Men's AO Orleans Boat Shoes - While Supplies Last! Free Shipping and Returns!
60% Off Sperry Women's Firefish Metallic Boat Shoes - While Supplies Last! Free Shipping and Returns!
Buy 2 Select Sperry Styles for Only $119 with Code: TWOFORYOU! Valid 11/6 - 11/12!
Sperry Launches New Sperry x Jack Spade Shoes. Shop Now for Free Express Shipping on All Orders Over $75!
4 Days, 4 Deals: $59.99 Select Sperry Boat Shoes w/ Code: MONDAY - Valid 11/13 for One Day Only!
4 Days, 4 Deals: $39.99 Select Sperry Sneakers w/ Code: WEDNESDAY - Valid 11/15 for One Day Only!
4 Days, 4 Deals: Extra 30% Off Sperry Sale Styles w/ Code: TUESDAY - Valid 11/14 for One Day Only!
4 Days, 4 Deals: $79.99 Select Sperry Boots w/ Code: THURSDAY - Valid 11/15 for One Day Only!
Buy 2 Select Sperry Styles for Only $119 w/ Code: TWOFORYOU - Valid 11/6 - 11/12!
Get a Free Pair of Laces with Any Sperry Full-Price Boat Shoe Purchase. No code required. Valid 9/18 - 9/25!
Save Up to 70% Off Sperry Women's Clearance - Shop & Save on New Styles Added.
Save Up to 70% Off Sperry Clearance - More than 100 New Styles Added.
Free Express Shipping on Sperry Orders Over $75. Shop Now!
Save 50% Off Sperry Men's AO Sarape Boat Shoes - While Supplies Last!
Save 50% Off Sperry Women's Walker Gray Nylon Boots - While Supplies Last!
Save 50% Off Sperry Women's Crest Ride Leather Sneakers - While Supplies Last!
Save 50% Off Sperry Women's AO Quinn Boat Shoes - While Supplies Last!
Give $20; Get $20 When You Refer Your Friends to Order $75+ on Sperry.com!
Save 30% Off Sperry Women's Socks & Liners. Free Standard Shipping & Returns!
Save 30% Off Sperry Men's Socks & Liners. Free Standard Shipping & Returns!
Follow this link and get a free $10 eCard after your first purchase, a chance to win the monthly giveaway and many other perks with Sperry Top-Sider email sign up. You'll receive an email for more details. Includes free shipping. Restrictions apply.
Follow this link to get 50% discount on select Sperry styles. No code needed. Includes free shipping, limited time offer. Restrictions apply.
Follow this link to get up to 70% discount on the final clearance items. Includes free shipping. Limited time offer, restrictions apply.


The Government of India has introduced different types of forms to make the procedure of filing returns simpler. For instance, Form 2D is offered for evaluating individuals in which involved in the corporate sector. However, it can be not applicable to individuals who are qualified to apply for tax exemption u/s 11 of the income Tax Act, 1959. Once more, self-employed individuals who have their own business and request for exemptions u/s 11 of the Tax Act, 1961, need file Form a.
If an individual might be a person an HUF (Hindu Undivided Family), a person need to fill out Form 2E, provided you don't make money through cultivation activities or operate any business. You are allowed capital gains and have to file form no. 46A for obtaining the Permanent Account Number u/s 139A within the Income Tax Act, 1961.
The fundamental feature of filing tax statements in India is that going barefoot needs pertaining to being verified from the individual who fulfills the prerequisites pf section 140 of the income Tax Act, 1961. The returns of entities to help be signed by the authority. For instance, revenue tax returns of small, medium, and large-scale companies have pertaining to being signed and authenticated from your managing director of that particular company. If you find no managing director, then all the directors in the company like the authority to sign the design. If the company is going through a liquidation process, then the return in order to be signed by the liquidator from the company. Are going to is a government undertaking, then the returns require to be authenticated by the administrator in which has been assigned by the central government for that specific reason. This is a non-resident company, then the authentication always be be performed by the that possesses the actual of attorney needed for your purpose.
If the tax returns are filed by a political party, the secretary and the main executive officer are due to authenticate the returns. Are going to is a partnership firm, Online GST Application Pune Maharashtra then the authorized signatory is the managing director of the firm. Your past absence of the managing director, the partners of that firm are empowered to authenticate the tax refund. For an association, the return has to be authenticated by the chief executive officer or any other member in the association.


Impact crater found in Greenland | Is this the last Ice Age killer?
Scientists have been wondering what caused the end of the last Ice Age. There are at least a couple of peered-reviewed theories that have shed light into the end of the last Ice Age. These scientists had postulated that it was a collision caused by the impact of a large asteroid that brough the last Ice Age to its end. However, an impact crater had not been found until now…..


text:
Boris Johnson met 'London professor' linked to FBI's Russia investigation
Fresh questions as photograph emerges of Joseph Mifsud and foreign secretary at Brexit dinner
@carolecadwalla
Boris Johnson pictured at the dinner with the 'London professor', Joseph Mifsud (left) and Prasenjit Kumar Singh.
Boris Johnson is facing questions about the government's links to key individuals named by the FBI in its Trump-Russia investigation, following the emergence of a photo of him with Joseph Mifsud, the "London professor" with high-level Kremlin contacts.
The foreign secretary is facing accusations of a potential security breach following the emergence of the photo of him with Mifsud, whose identity emerged as part of investigations into alleged links between Donald Trump's election campaign and Russia.
This development comes less than a week after Johnson denied meeting the professor, and at a time when concern is growing about possible Russian interference in the Brexit campaign, in which the foreign secretary played a crucial role.
Although the FBI had known about Mifsud's role as a high-level go-between linking the Trump campaign and the Russian government since at least July, it appears British intelligence did not warn the foreign secretary about the potential embarrassment or security implications before he attended a fundraising dinner with Mifsud on 19 October.
Ben Bradshaw, the MP for Exeter, who has been raising questions about possible Russian interference, said: "It's inconceivable that the FBI didn't tell their UK counterparts about Mifsud … so how was this allowed to happen?" The only explanation, he suggests, is "our own agencies are keeping information from Johnson for some reason … which only begs further worrying questions".
Last week, the Observer reported that Mifsud had told colleagues he was planning to meet Johnson "to discuss Brexit". The third man in the photo, businessman Prasenjit Kumar Singh, told the Observer he had known Mifsud, a Maltese academic named in FBI documents concerning possible Trump-Kremlin connections, for several years, and had attended seminars on Brexit that Mifsud had held at the London School of Diplomacy: "He is a very good speaker and he's had a lot of seminars about Brexit at the academy."
Singh said they had met the foreign secretary at the event and had chatted to him "about normal things". Asked if Mifsud had introduced himself to Johnson, he said: "I don't know. I introduced myself to him and we talked. He is a very good man, a good politician."
Last week, a spokesman said Johnson had "never met" Mifsud, a statement that was updated to "never knowingly met" after they confirmed his presence at the event. Last week a Foreign Office source said: "The foreign secretary has his photo taken with countless people he does not know, particularly during events attended by 150 people at which he's the main speaker."
Intriguingly, the photograph also presents new evidence of links to a further key individual named in the FBI documents.
On Friday, the New York Times identified a woman in the documents whom Mifsud introduced to a Trump campaign operative, George Papadopoulos, as "Putin's niece". The New York Times named her as Olga Polonskaya, 30, from St Petersburg, the former manager of a wine distribution company. The FBI documents state that she has high-level connections to the Russian government.
And she is also a contact of Singh's, though he had no idea of her connection to the Trump-Russia investigation until told by the Observer. He said he had met her at Link Campus University in Rome, where Mifsud was based. "I had no idea she called herself 'Putin's niece'! She was just a normal student. Very nice. An ordinary girl." He said she had rung him "about two and a half months ago" and had asked to meet.
"I was with my family and we were going to the Westfield shopping centre and I said: 'Yes, come and meet me there.' She was going to translate my website – for the London Executive School – from English into Russian so I could try and attract more Russian students. She did that: I just haven't put it up yet."
She had not been in touch since, Singh said. Nor had he heard from Mifsud who appears to have gone to ground. Polonskaya has now changed the privacy settings on her Facebook page, but a freelance investigative journalist, Gavin Sheridan, had already downloaded her data and discovered she had "liked" the photo of Joseph Mifsud and Boris Johnson and a status update of Prasenjit Kumar Singh that showed him with Theresa May.
Chris Bryant MP, the vice chair of the all-party parliamentary Russia group, said: "It's all distinctly fishy. Boris Johnson's relationship with the truth right now seems distinctly casual. We asked him about Russian interference in Brexit in the foreign affairs committee last week and he categorically denied he had seen a shred of evidence. I just thought 'blimey'. Even as a junior minister in the foreign office, Russian stuff came across my desk every single day."
Russian pranksters discuss Putin and Skripal in call with Boris Johnson
One of the duo pretended to be the Armenian PM in 18-minute phone conversation
Facebook to expand inquiry into Russian influence of Brexit
Tech giant looks into spreading of disinformation after MPs criticised scope of first investigation
Russian bid to influence Brexit vote detailed in new US Senate report
UK political system vulnerable to anti-democratic meddling via social media and 'possibly illicit' campaign funding, report says
Lavrov plays the straight man to Boris's buffoon in Moscow
Shaun Walker
Johnson's crisp boasts and faux-Slavic mumbling liven up tense encounter while Russian counterpart looks on with disdain
Moscow clash exposes Tory dilemma over Russian meddling claims
Boris Johnson has been embarrassing Britain for long enough. It's time for him to go
Twitter's response to Brexit interference inquiry inadequate, MP says
Cuddly, friendly Boris is back with his bad gags and instant soundbites


At Anna French Associates, we have worked on a number of projects now where BIM (Building Information Modelling – Level 2 compliance) has been a design requirement. We have learnt a lot along the way.
1. Modelling in Revit is a world away from how an electronic drawing is traditionally set up – there are no layers and all the objects are generally classified into families. Each family is graphically identified as 3D and 2D, so will visually differ depending on how the model is viewed and the settings of the visual styles and details. The objects also have information attached as 'parameters'. This can include dimensions, materials, weight, appearance etc.
2. For landscape architects the information scheduling is a familiar aspect as we've been using this with our planting plans for decades. However this concept is extended so that every object type can be scheduled from one drawing.
3. Plug-ins, such as Artisan, can help with the modelling of landscape elements. These provide planting symbols and data for planting plans, which can then become part of the Revit model. Civils 3D is an engineering package which also has ground modelling capability and is often used by Engineers to import information into Revit. Other plug-ins such as Calibra can enable a group of objects to be tested for particular properties, ie checking surface gradients within a scheme to ensure they comply with Building Regulations.
4. Unfortunately Revit Lt is ineffective for landscape architects as it lacks the ability to modify surface landforms by level, which is fundamental to what we do. So the cost of the software is high for your average landscape practice.
5. Importing and exporting correctly to an IFC format is key to enabling others without Revit software to access the model once it is completed (or during the process). Models can then be viewed easily using free viewers such as Navisworks Freedom. Fortunately, exporting to this format is very easy; and as IFC is an industry standard, many other consultants using specialist BIM platforms, will also easily export to IFC.
6. The utility of the finished model depends on who is using it and why, so it's important to clearly establish the required graphical and information outputs. For example, does the developer want a realistic model for their client's approval, or is the priority for the correct information to be scheduled out to clarify the bill of quantities, management and maintenance plans? In many instances, evolution of the model will align the key project work stages.
7. Agreeing the model "Level of Definition" (a collective term for graphical Level of Detail and Level of Information) in advance and managing expectations through a comprehensive BIM Execution Plan is the key to a successful collaboration, whether you are new or experienced in this software and process. We are currently working on a guidance document to explain what we can do (and what we can't do) using 'out of the box' Revit tools and emerging BIM landscape support software.
8. Sometimes the landscape design is not seen as high priority (until a clash occurs) so ideally issued changes should be integrated into the model on an ongoing basis. Good practice suggests a weekly submission of all the consultants' models, which are then combined as a federated model and inspected for clash detection and discrepancies.
We are excited to be using this new technology, in particular to improve the co-ordination and communication of complex design with the whole team. Our soon to be shared BIM Guidance Document will set out our approach to producing, sharing and co-ordinating our BIM information.


Leather Journal Writing Notebook, Vintage Handmade Leather-Bound Notepads For Men & Women, Luxury Antique Leather Travel Diary 8"x6"
The reviews are true! This really is a beautiful journal. You can feel the craftsmanship when you hold it. For me it inspires adventures to far away lands. My mom said it reminded her of something you would see on an old ship. From the packaging of the product to the pen included, I would definitely recommend this journal.
This is amazing quality!! Thank you!!


Back in 2018, Denver Restaurant Week pulled in some 240 participating restaurants, and for 10 days, diners were treated to some of the best the city had to offer for prices that made the value out of this world. The 2019 Restaurant Week promises to be just as thrilling, and if you're looking to get in on the action, then keep reading. We're going to be laying out all the particulars you'll need to know in advance.
Denver Restaurant Week 2019, taking place from February 22nd to March 3rd, is the 15th year this delectable event. The premise during those ten days is simple. Hundreds of Denver restaurants will offer special meals at amazing prices ($25, $35 or $45) and you, the diner, will have a chance to head on down and grab a bite.
Downtown — Artsy, hip, evolving, historic, and booming with new activity. You'll find this vibrancy and energy reflected in the restaurants of the area as well. Downtown is divided amongst LoDo, Larimer, Riverfront, and RiNo-based restaurants.
Uptown — Progressive, and home to some of the city's best art and finest dining. Uptown also consists of Capitol Hill and East Colfax-based restaurants, covering a wide range of diversity.
Golden Triangle — A largely creative district with some of Denver's oldest neighborhoods and a "delightful mix of historic single family Victorian homes." You'll find a lot of history here, and should definitely check out restaurants in the so-called "SoCo" area for a treat.
South Broadway — Also dubbed "SoBo," this is where you'll see those avant-garde clothing stores, galleries, and book dealers, along with a heaping helping of various ethnic restaurants that will add some much-needed flavor to your dining experience. Further categorized by Old South Gaylord and South Pearl-based restaurants.
Cherry Creek — The "premier" shopping and dining neighborhood with approximately 320 independently-owned establishment. This area knows service and if you're looking to keep it local, you'll be hard pressed to find a better area to survey.
Stapleton — Relaxed, dotted with parks, and with a real connection to the outdoors. You'll find many a sidewalk cafe here, and a clear disconnect from the urban shuffle of other parts of the city. The dining scene here also includes Lowry and Northfield-based restaurants.
West Metro — Decidedly contemporary, but with a touch of history that harkens back to Colorado's past. You'll find some of that Old West feeling in some of the establishments and even with some of the architecture, and there are a number of charming bars and restaurants for you to choose from. West Metro is divvied up among BELMAR, Golden, and Olde Towne Arvada-based restaurants.
South Metro — These areas just outside of Denver are lush and vibrant, historic and diverse. You'll have your pick of fine fare in this section, which consists of both Littleton and Park Meadows-based restaurants.
Dark Horse Wine — Bold, flavorful wines, meticulously crafted in Modesto, California under the guidance of master winemaker Beth Liston. Great tasting, their varieties are affordable to boot.
Louis M. Martini — Representing Napa and Sonoma is Louis M. Martini. The family name is one you may already recognize, and these days, Director of Winemaking Michael Eddy ensures every bottle is up to their exacting standards.
Talbott Vineyards — Masters of the Burgundian varietals, this California winery brings a powerful offerings to the table in the form of their estate-grown Pinot Noir and Chardonnay, under the guidance of head winemaker David Coventry.
William Hill Estate Winery — Another representative of Napa Valley, William Hill Estate Winery has both Chardonnay and Bordeaux varietal wines from their 140-acre vineyard.
Chateau Souverain — Chateau Souverain has been in the wine game since 1944 and have built a legacy on the backs of their Cabarnet Sauvignon, Merlot, Sauvignon Blanc, and Chardonnay.
New Amsterdam Vodka — 5-times distilled makes the vodka that much smoother, which is exactly the formula New Amsterdam Vodka follows. You'll find their blend perfect for cocktails and sipping straight.
Best of luck, and have fun when you're heading out there for Denver Restaurant Week!
When you're living large in fantastic suburban apartments like The Palmer. Beyond the amazing aesthetic, you'll enjoy fantastic residences and a level of resident comfort beyond anything you've experienced before. Ready to take the next step? Check out what's available at The Palmer today, and make your move to a new style of living in beautiful Colorado.


text:
Category: Historical
View Categories / BIOGRAPHY & AUTOBIOGRAPHY / Historical
Nicholas II; Last of the Tsars
By: Ferro, Marc
Publisher: New York, Oxford Univ Press: 1993
305 pp. light edge wear to jacket & boards; A figure surrounded by myth and speculation, at the center of one of history's most cataclysmic events--the Russian Revolution--Nicholas II remains haunting and enigmatic. Now one of France's most eminent historians presents a biography that goes beyond the lies and half-lies surrounding Nicholas's reign to provide an evocative portrait of this most mysterious ruler. Illustrations. View more info
By: Gage, Nicholas
623 pages; ex-library with usual markings, some edge wear, spine creasing; story of love, deceit, and betrayal, set in Greece during the civil wars of the late 1940s. Eleni Gatzoyiannis was murdered by Communist partisans in 1948 for refusing to allow her children to be conscripted into their band. Her son Nicholas escaped to America as a result and grew up to become a distinguished journalist. Many years after his mother's death, he returns to Greece to learn how his mother met her fate, and to come to grips with his loss. View more info
By: Gilbert, Ariadne
Publisher: New York, The Century Co.: 1914
423 pages; some wear to extremities, corners bumped, binding shaken; b&w frontis of Sir Walter Scott; illustrated in b&w throughout; View more info
By: Markham, Felix
Publisher: New York, Signet: 1966-10-01
304 pages; spine creasing, edge wear, pages tanned; A magnificent reconstruction of Napoleon's life and legend written by a distinguished Oxford scholar. View more info


text:
Q: How to inject Scala classes in objects? I want to use a singleton class in a Scala companion object but I am using Guice dependency injection and, as far as I know, it has no explicit usage in these scenarios.
As an example, let's say we have Singleton (using Guice) class as follows:
@Singleton
class Foo Inject()(foo2: Foo2) {
    def func = { ... }
}

I can use it in other classes as:
class MyClass Inject()(foo: Foo) {
   foo.func()
}

What about objects? I need to create an instance with new as:
object MyObject {
   val foo2 = new Foo2()
   val foo = new Foo(foo2)
   foo.func()
}

In this case, does Foo still have just one instance? I mean, does new Foo(foo2) return the same instance as Guice returns in @Inject()(foo: Foo)?
By the way, there are already questions about this (e.g., link) but I want to use objects and access the singleton instances inside them.

A:
In this case, does Foo still have just one instance? I mean, does new Foo(foo2) return the same instance as Guice returns in @Inject()(foo: Foo)?

No. Just as if you call new Foo(...) elsewhere. My suggestion would just be not to mix it; if you want to use Guice's instances inside MyObject, make it a Guice singleton class as well. Or make Foo an object, you can still access it from Guice-using classes.
If you really need it, the way I can think of is really ugly; to store the Injector from your main (or wherever you create it) somewhere MyObject can access it, i.e.
object Main {
  var injector: Injector = null

  def main(args: Array[String]): Unit = {
    // make sure this happens before MyObject is accessed
    injector = Guice.createInjector(...)
    ...
  }
}

object MyObject {
  val foo = Main.injector.getInstance(classOf[Foo])
  foo.func()
}

If you don't even create the Injector yourself, but are using some framework which uses Guice, check if it gives you access to the Injector.


text:
package com.jfixby.scarabei.api.color;

public interface GraySet {

	float findClosest (float valueAt);

	GraySet addAll (float... array);

	GraySet add (float value);

// void print (String string);

	void sort ();

	int size ();

	float getValue (int index);

	int indexOf (float exactValue);

}


text:
IN OTHER WORDS: Not an island
By International Herald Tribune
Developing countries have sparked their share of international financial crises over the years. But this time it is not their fault. As the world's richest nations spend trillions of dollars to rescue their own financial systems from the maelstrom caused by years of excess, they must also be prepared to provide billions of dollars to poorer countries that did not cause
this crisis but are nevertheless its victims.
Fortunately, some people are thinking ahead. The International Finance Corp., an arm of the World Bank, is mulling a $3 billion fund to help recapitalise shaky banking systems in the world's poorest countries. The Inter-American Development Bank said it would increase its lending and announced a $6 billion facility to help companies in smaller Latin American countries that lose access to funding. The IMF said it is flush with cash to mobilize if needed.
The world's richest countries have exhibited enormous myopia throughout this crisis - originally scurrying for ad hoc individual "solutions" that worsened the collective mess.
As the world's financial powers struggle to contain the disaster, they should not lose sight of its effect on other countries. Every economy for itself makes no sense — and could prove highly dangerous — in today's interconnected world.


text:
Q: filter tensorflow array with specific condition over numpy array I have a tensorflow array names tf-array and a numpy array names np_array. I want to find specific rows in tf_array with regards to np-array.
    tf-array = tf.constant(
                [[9.968594,  8.655439,  0.,        0.       ],
                 [0.,        8.3356,    0.,        8.8974   ],
                 [0.,        0.,        6.103182,  7.330564 ],
                 [6.609862,  0.,        3.0614321, 0.       ],
                 [9.497023,  0.,        3.8914037, 0.       ],
                 [0.,        8.457685,  8.602337,  0.       ],
                 [0.,        0.,        5.826657,  8.283971 ]])

I also have an np-array:
np_array = np.matrix(
 [[2, 5, 1],
  [1, 6, 4],
  [0, 0, 0],
  [2, 3, 6],
  [4, 2, 4]]

Now I want to keep the elements in tf-array in which the combination of n (here n is 2) of them (index of them) is in the value of np-array. What does it mean?
For example, in tf-array, in the first column, indexes which has value are: (0,3,4). Is there any row in np-array which contains any combination of these two indexes: (0,3), (0,4) or (3,4). Actually, there is no such row. So all the elements in that column became zero.
Indexes for the second column in tf-array is (0,1) (0,5) (1,5). As you see the record (1,5) is available in the np-array in the first row. Thats why we keep those in the tf-array.
So the final result should be like this:
[[0.        0.        0.        0.       ]
 [0.        8.3356    0.        8.8974   ]
 [0.        0.        6.103182  7.330564 ]
 [0.        0.        3.0614321 0.       ]
 [0.        0.        3.8914037 0.       ]
 [0.        8.457685  8.602337  0.       ]
 [0.        0.        5.826657  8.283971 ]]

I am looking for a very efficient approach as I have large number of data.
Update1
I could get this with the below code which is giving True where there is value and the zero mask to false:
[[ True  True False False]
 [False  True False  True]
 [False False  True  True]
 [ True False  True False]
 [ True False  True False]
 [False  True  True False]
 [False False  True  True]]

with tf.Session() as sess:
 where = tf.not_equal(tf-array, 0.0)
 print(sess.run(where))

But how can I compare theese matrix with np_array?
Thank you in advance!

A: The one eficient way you can try is to make bit flags for each row what value are there like  for (0,3,4)  will be 1 <<0 | 1<<3 | 1<<4. You will have array of values with flags.Try if << and | operator work in numpy.
Make the same for another array, i guess tf- arrays are just wrapped numpys.
After having 2 array of flags, make bitwise "and" over those. Where you condition is true for rows, the result will have at least two  non zero bits. Also cound of bits can be done also efficient, google for that.
This hovever wont work with float - you ll need convert those to pretty small ints.
import numpy as np

arr_one =  np.array(
 [[2, 5, 1],
  [1, 6, 4],
  [0, 0, 0],
  [2, 3, 6],
  [4, 2, 4]])

arr_two =  np.array(
 [[2, 0, 7],
  [1, 3, 4],
  [5, 5, 6],
  [1, 3, 6],
  [4, 2, 4]])

print('1 << arr_one.T[0] ' , 1 << arr_one.T[0] )

arr_one_flags = 1 << arr_one.T[0] | 1 << arr_one.T[1] | 1 << arr_one.T[2]

print('arr_one_flags ', arr_one_flags)

arr_two_flags = 1 << arr_two.T[0] | 1 << arr_two.T[1] | 1 << arr_two.T[2]

arr_and = arr_one_flags & arr_two_flags

print('arr_and ', arr_and)

def get_bit_count(value):
    n = 0
    while value:
        n += 1
        value &= value-1
    return n

arr_matches = np.array([get_bit_count(x) for x in arr_and])

print('arr_matches ', arr_matches )

arr_two_filtered = arr_two[arr_matches > 1]

print('arr_two_filtered ', arr_two_filtered )

A: Here is the solution from https://stackoverflow.com/a/56510832/7207392 with necessary modifications. For the sake of simplicity I use np.array for all data. I'm no tensortflow expert, so if translating is not entirely straight forward, you'll have to ask somebody else how to do it.
import numpy as np

def f(a1, a2, n):
    N,M = a1.shape
    a1p = np.concatenate([a1,np.zeros((1,a1.shape[1]),a1.dtype)], axis=0)
    a2 = np.sort(a2, axis=1)
    a2[:,1:][a2[:,1:]==a2[:,:-1]] = N
    y,x = np.where(np.count_nonzero(a1p[a2], axis=1) >= n)
    out = np.zeros_like(a1p)
    out[a2[y],x[:,None]] = a1p[a2[y],x[:,None]]
    return out[:-1]

a1 = np.array(
    [[9.968594,  8.655439,  0.,        0.       ],
     [0.,        8.3356,    0.,        8.8974   ],
     [0.,        0.,        6.103182,  7.330564 ],
     [6.609862,  0.,        3.0614321, 0.       ],
     [9.497023,  0.,        3.8914037, 0.       ],
     [0.,        8.457685,  8.602337,  0.       ],
     [0.,        0.,        5.826657,  8.283971 ]])

a2 = np.array(
 [[2, 5, 1],
  [1, 6, 4],
  [0, 0, 0],
  [2, 3, 6],
  [4, 2, 4]])

print(f(a1,a2,2))

Output:
[[0.        0.        0.        0.       ]
 [0.        8.3356    0.        8.8974   ]
 [0.        0.        6.103182  7.330564 ]
 [0.        0.        3.0614321 0.       ]
 [0.        0.        3.8914037 0.       ]
 [0.        8.457685  8.602337  0.       ]
 [0.        0.        5.826657  8.283971 ]]


text:
Rajac (en serbe cyrillique : ) est un village de Serbie situé dans la municipalité de Negotin, district de Bor. Au recensement de 2011, il comptait 278 habitants.

Histoire
Rajac abrite environ 270 celliers (en serbe cyrillique :  ; en serbe latin : ) qui datent de la fin du  ; ils sont inscrits sur la liste des entités spatiales historico-culuturelles d'importance exceptionnelle de la République de Serbie et, en même temps que ceux de Rogljevo et de Štubik, ils ont été présentés pour une inscription au patrimoine mondial de l'UNESCO.

Démographie

Évolution historique de la population

Répartition de la population par nationalités (2002)

Notes et références

Voir aussi

Articles connexes
 Vieux cimetière de Rajac
 Maison de Momčilo Ranković à Rajac
 Localités de Serbie
 Villes de Serbie

Liens externes

Localité dans la municipalité de Negotin


WARNING: DUE TO CHANGES IN GOOGLE POLICY, HAVEN CAN NO LONGER SEND SMS TEXT MESSAGES. PLEASE USE SIGNAL NOTIFICATIONS INSTEAD.
Big thanks to @lukeswitz, @archie94 and @fattire for the excellent trudging and grinding!
- Data persistence, Camera stability and more!
Haven is for people who need a way to protect their personal spaces and possessions without compromising their own privacy. It is an Android application that leverages on-device sensors to provide monitoring and protection of physical spaces. Haven turns any Android phone into a motion, sound, vibration and light detector, watching for unexpected guests and unwanted intruders. We designed Haven for investigative journalists, human rights defenders, and people at risk of forced disappearance to create a new kind of herd immunity. By combining the array of sensors found in any smartphone, with the world's most secure communications technologies, like Signal and Tor, Haven prevents the worst kind of people from silencing citizens without getting caught in the act.
We are announcing Haven today, as an open-source project, along a public beta release of the app. We are looking for contributors who understand that physical security is as important as digital, and who have an understanding and compassion for the kind of threats faced by the users and communities we want to support. We also think it is really cool, cutting edge, and making use of encrypted messaging and onion routing in whole new ways. We believe Haven points the way to a more sophisticated approach to securing communication within networks of things and home automation system.
Haven was developed through a collaboration between Freedom of the Press Foundation and Guardian Project.
Haven only saves images and sound when triggered by motion or volume, and stores everything locally on the device. You can position the device's camera to capture visible motion, or set your phone somewhere discreet to just listen for noises. Get secure notifications of intrusion events instantly and access the logs remotely or anytime later.
What do you think about Haven: Keep Watch BETA?


I wasn't sure whether to do this or not, but I'm worried that my content is suffering these days and I'm not putting out the quality I want. So I want to be sure I'm taking time to work on them properly and making sure I am including all the information I want to. I know I finally got some photos and all, but along with uni work I'm struggling to get my words up to the standard I want.
So you probably won't see another post this week and might just see less posting from me for a while depending on how these next few weeks go. I have a few events lined up to fill the week before the term ends, so that's also quite exciting. It's wild that I'm over halfway through my first year at university.
Anyway, I've been feeling like my music needs a bit more shaking up again whilst I work on this assignment for university. Before you ask… Did I dive down into a pit of music recommendations from YouTube that I actually liked? Yes, the answer is yes.
It's inspired this playlist of recent discoveries with a dash of songs I felt just fit right in here. It's not too upbeat. As much as I love my pop music, I have a soft spot for music that's kind of whimsical and dreamy but there are also some very specific things I like. Sort of deep and mildly depressing and perhaps a soundtrack for the non-existent aimless midnight wander.
Today's playlist is a mix of English language and Korean language tracks.
Ashmute (Korean) – Ghost, Scenery, Inferno – I really like the dreamy feel coming from this trio, and how they play around with the pace of their songs. My favourite of these is Ghost but Scenery has really grown on me. K-Indie tends to be kind of hit-and-miss for me as I focus on sound rather than lyrics and a lot of K-Indie can sound similar to me, but this is really nice.
Kailee Morgue – Ghost of Mine, Medusa – I initially got some Melanie Martinez vibes from Morgue's vocals on Ghost of Mine. I really like this kind of music – the kind that's just really strange and haunting but not too deep like Ruelle's Madness – I like that sound too but not all the time.
Bipolar Sunshine – Daydreamer – Well… This playlist could do with some happy. I'm definitely up for listening to more Bipolar Sunshine now that I have discovered them, this is a jam.
DJ Snake – Middle (ft. Bipolar Sunshine) – It's funny, I do love the odd DJ Snake track I come across but I always forget to dive into their discography. This is the most upbeat track on the playlist.
Mothica – Out of It – In doing a little bit of research on Mothica I saw the words 'gloom pop'. At last, a word for the genre of music I like. I'll go searching later for songs under this umbrella, haha.
Sojung of Ladies' Code (Korean) – Crystal Clear – Sojung has one of the most distinctive voices in the mainstream K-Pop scene and I really miss Ladies' Code and love their newer songs so it is lovely to hear her singing again. I want to hear her in a long with Lee Hi one day. I think their voices would resonate well together.
Heize (Korean) – Jenga – There's something odd about the end of the hook that I really like. What is it, dissonance? It was odd but now I really like it. I first watched Heize on Unpretty Rapstar 2 for a bit and really liked her as well as Kitti B and Yubin.
Heyne (Korean) – Insomnia (Unofficial, included to omit the snoring in the official MV)|Official MV – Heyne's unusual voice is what stopped this from being too boring for me. That and perhaps the fact that she's actually 26-ish and looks (and sounds) younger than me!
Tei Shi – Nevermind The End (unofficial)|Official MV, Say You Do (unofficial)| Official MV – I've been listening a lot to these two tracks recently. They're just really nice to loop.
Fazerdaze – Lucky Girl – I'm hoping this is a nice choice to tie off the playlist as well as leading back to the beginning when I feel like it.
I hope you've discovered something that you like today. I'll get back to writing my uni assignment now!
Love the idea of this playlist! Definitely checking out these songs, I've heard only Jenga before.


I am so behind on a mountain of things these days! Not the end of the world, but so not like me and it drives me crazy missing deadlines and having my to-do list grow instead of shrink!
This carnival focused on the prompt, "I'm a Natural Parent, but …" so here's what makes me more brownies-with-extra-chocolate than crunchy granola!
I don't take our cloth diapers out of town. When we travel I no longer pack cloth diapers; in the beginning I did, but it turned out to be too much extra bulk and our schedule is always different leaving no time for laundry. Now, I order a pack of Seventh Generation disposables from Amazon (about $7/pack) before any long weekends.
I don't eat alot of the healthy things I fix for Jemma. Her green smoothies? I just can't do it. Funky veggies, just not my thing.
I own a fancy stroller, crib, pack 'n play, bouncer, and swing. All of them were purchased second-hand while I was still pregnant and unsure what we would really need. We definitely use the stroller, and the bouncer was a lifesaver when Jemma was small, but everything else … not necessary.
Jemma has a stash of 100% plastic toys. I haven't bought many, if any of them, but they have found there way into our home and are definitely favorites. Especially the ones that play music.
Jemma knows and loves TV, especially Sprout Network. This accidentally happened during my 1st trimester and I'm left picking up the pieces. We're hoping to cut back, but right now, my toddler knows and loves the remote and the world it opens.
We drink cow's milk. Usually it's organic or at least local. So far, Jemma has stuck with coconut, almond, rice, or hemp and seems to love those.
I had an epidural. Once I transferred to the hospital from the birth center I had an epidural to take a few hours to rest and relax before pushing. It was just what I needed after no sleep, crazy contractions, and a long labor that wasn't quite over.
I think that about wraps it up! At the bottom of this post, you can see all the other blogs that participated in the initial carnival. I highly recommend checking them out!
I love this an think it is all about balance. Using the things that make life easier but weighing out the cost-benefits for us, our babies and the world.
So true, balance is key!
Studying this info So i am satisfied to exhibit that I have an incredibly good uncanny feeling I came upon exactly what I needed.
how to truly get helpful information concerning my study and knowledge.
What i do not understood is in reality how you are no longer actually much more neatly-favored than you may be right now.
imagine it from a lot of numerous angles. Its like women and men aren't involved until it is one thing to do with Lady gaga!