text:
Q: Concatenate two audio files in Swift and play them I try to concatenate .wav audio files in swift.
Here is my code :
func merge(audio1: NSURL, audio2:  NSURL) {

    var error:NSError?

    var ok1 = false
    var ok2 = false

    var documentsDirectory:String = paths[0] as! String

    //Create AVMutableComposition Object.This object will hold our multiple AVMutableCompositionTrack.
    var composition = AVMutableComposition()
    var compositionAudioTrack1:AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID())
    var compositionAudioTrack2:AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID())

    //create new file to receive data
    var documentDirectoryURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! as! NSURL
    var fileDestinationUrl = documentDirectoryURL.URLByAppendingPathComponent("resultmerge.wav")
    println(fileDestinationUrl)

    var url1 = audio1
    var url2 = audio2

    var avAsset1 = AVURLAsset(URL: url1, options: nil)
    var avAsset2 = AVURLAsset(URL: url2, options: nil)

    var tracks1 =  avAsset1.tracksWithMediaType(AVMediaTypeAudio)
    var tracks2 =  avAsset2.tracksWithMediaType(AVMediaTypeAudio)

    var assetTrack1:AVAssetTrack = tracks1[0] as! AVAssetTrack
    var assetTrack2:AVAssetTrack = tracks2[0] as! AVAssetTrack

    var duration1: CMTime = assetTrack1.timeRange.duration
    var duration2: CMTime = assetTrack2.timeRange.duration

    var timeRange1 = CMTimeRangeMake(kCMTimeZero, duration1)
    var timeRange2 = CMTimeRangeMake(duration1, duration2)

    ok1 = compositionAudioTrack1.insertTimeRange(timeRange1, ofTrack: assetTrack1, atTime: kCMTimeZero, error: nil)
    if ok1 {

        ok2 = compositionAudioTrack2.insertTimeRange(timeRange2, ofTrack: assetTrack2, atTime: duration1, error: nil)

        if ok2 {
            println("success")
        }
    }

    //AVAssetExportPresetPassthrough => concatenation
    var assetExport = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetPassthrough)
    assetExport.outputFileType = AVFileTypeWAVE
    assetExport.outputURL = fileDestinationUrl
    assetExport.exportAsynchronouslyWithCompletionHandler({
        switch assetExport.status{
        case  AVAssetExportSessionStatus.Failed:
            println("failed \(assetExport.error)")
        case AVAssetExportSessionStatus.Cancelled:
            println("cancelled \(assetExport.error)")
        default:
            println("complete")
            var audioPlayer = AVAudioPlayer()
            audioPlayer = AVAudioPlayer(contentsOfURL: fileDestinationUrl, error: nil)
            audioPlayer.prepareToPlay()
            audioPlayer.play()
        }

    })

}

And get this error in the terminal (running on a iPhone) :
file:///var/mobile/Containers/Data/Application/3F49D360-B363-4600-B3BB-EE0810501910/Documents/resultmerge.wav
success
failed Error Domain=AVFoundationErrorDomain Code=-11838 "Opération interrompue" UserInfo=0x174269ac0 {NSLocalizedDescription=Opération interrompue, NSLocalizedFailureReason=L'opération n'est pas prise en charge pour ce contenu multimédia.}
But I don't know why I'm getting this error. I would greatly appreciate any help you can give me :)

A: I needed to merge multiple audio files so I rewrote the function to accept an array of NSURLs. Thought I'd share it here.
I'm new to Swift, so please leave feedback.
Give credit where credit is due: @Eric D. @Pierre Louis Bresson
Here is the code:
func mergeAudioFiles(audioFileUrls: NSArray, callback: (url: NSURL?, error: NSError?)->()) {

// Create the audio composition
let composition = AVMutableComposition()

// Merge
for (var i = 0; i < audioFileUrls.count; i++) {

    let compositionAudioTrack :AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID())

    let asset = AVURLAsset(URL: audioFileUrls[i] as! NSURL)

    let track = asset.tracksWithMediaType(AVMediaTypeAudio)[0]

    let timeRange = CMTimeRange(start: CMTimeMake(0, 600), duration: track.timeRange.duration)

    try! compositionAudioTrack.insertTimeRange(timeRange, ofTrack: track, atTime: composition.duration)
}

// Create output url
let format = NSDateFormatter()
format.dateFormat="yyyy-MM-dd-HH-mm-ss"
let currentFileName = "recording-\(format.stringFromDate(NSDate()))-merge.m4a"
print(currentFileName)

let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let outputUrl = documentsDirectory.URLByAppendingPathComponent(currentFileName)

// Export it
let assetExport = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetAppleM4A)
assetExport?.outputFileType = AVFileTypeAppleM4A
assetExport?.outputURL = outputUrl

assetExport?.exportAsynchronouslyWithCompletionHandler({ () -> Void in
    switch assetExport!.status {
        case AVAssetExportSessionStatus.Failed:
            callback(url: nil, error: assetExport?.error)
        default:
            callback(url: assetExport?.outputURL, error: nil)
    }
})

}

A: I got your code working by changing two things:

*

*the preset name: from AVAssetExportPresetPassthrough to AVAssetExportPresetAppleM4A

*the output file type: from AVFileTypeWAVE to  AVFileTypeAppleM4A
Modify your assetExport declaration like this:
var assetExport = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetAppleM4A)
assetExport.outputFileType = AVFileTypeAppleM4A

then it will properly merge the files.
It looks like AVAssetExportSession only exports M4A format and ignores other presets. There may be a way to make it export other formats (by subclassing it?), though I haven't explored this possibility yet.

A: for swift 3.0 -
credit goes to @Peyman (with light modification)
var mergeAudioURL = NSURL()

func mergeAudioFiles(audioFileUrls: NSArray) {
    let composition = AVMutableComposition()

    for i in 0 ..< audioFileUrls.count {

        let compositionAudioTrack :AVMutableCompositionTrack = composition.addMutableTrack(withMediaType: AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID())

        let asset = AVURLAsset(url: (audioFileUrls[i] as! NSURL) as URL)

        let track = asset.tracks(withMediaType: AVMediaTypeAudio)[0]

        let timeRange = CMTimeRange(start: CMTimeMake(0, 600), duration: track.timeRange.duration)

        try! compositionAudioTrack.insertTimeRange(timeRange, of: track, at: composition.duration)
    }

    let documentDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! as NSURL
    self.mergeAudioURL = documentDirectoryURL.appendingPathComponent("FinalAudio.m4a")! as URL as NSURL

    let assetExport = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetAppleM4A)
    assetExport?.outputFileType = AVFileTypeAppleM4A
    assetExport?.outputURL = mergeAudioURL as URL
    assetExport?.exportAsynchronously(completionHandler:
        {
            switch assetExport!.status
            {
            case AVAssetExportSessionStatus.failed:
                print("failed \(assetExport?.error)")
            case AVAssetExportSessionStatus.cancelled:
                print("cancelled \(assetExport?.error)")
            case AVAssetExportSessionStatus.unknown:
                print("unknown\(assetExport?.error)")
            case AVAssetExportSessionStatus.waiting:
                print("waiting\(assetExport?.error)")
            case AVAssetExportSessionStatus.exporting:
                print("exporting\(assetExport?.error)")
            default:
                print("Audio Concatenation Complete")
            }
    })
}

A: Here is the code, to be place after println(fileDestinationUrl) :
var file = "resultmerge.m4a"
var dirs : [String] = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true) as? [String])!
var dir = dirs[0] //documents directory
var path = dir.stringByAppendingPathComponent(file)
var pathURLarray:Array = (NSURL(fileURLWithPath: path)!).pathComponents!
var pathURL:String = ""
var final = ""
var debut = ""

for i in 1...(pathURLarray.count-1) {
if i == pathURLarray.count-1 {
final = ""
} else {
final = "/"
}
if i == 1 {
debut = "/"
} else {
debut = ""
}
pathURL = debut + pathURL + (pathURLarray[i] as! String) + final
}

var checkValidation = NSFileManager.defaultManager()
if checkValidation.fileExistsAtPath(pathURL) {
    println("file exist")
    if NSFileManager.defaultManager().removeItemAtURL(fileDestinationUrl, error: nil) {
        println("delete")
    }
} else {
    println("no file")
}

With this and @Eric D. answer, it's working.

A: Just to help someone else to "concatenate" I've changed also
var timeRange2 = CMTimeRangeMake(duration1, duration2)

into
var timeRange2 = CMTimeRangeMake(kCMTimeZero, duration2)

(besides @Eric D. @Pierre Louis Bresson code).

A: Also, if you want it to be processed synchronously just add a dispatch
var errorExport = true
    //AVAssetExportPresetPassthrough => concatenation
    var assetExport = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetAppleM4A)
    assetExport.outputFileType =  AVFileTypeAppleM4A
    assetExport.outputURL = fileDestinationUrl
    let sessionWaitSemaphore = dispatch_semaphore_create(0)

    assetExport.exportAsynchronouslyWithCompletionHandler({
        switch assetExport.status{
        case  AVAssetExportSessionStatus.Failed:

           println("failed \(assetExport.error)")
        case AVAssetExportSessionStatus.Cancelled:

          println("cancelled \(assetExport.error)")
        default:
            //
            errorExport = false
        }

        dispatch_semaphore_signal(sessionWaitSemaphore)
        return Void()

    })

    dispatch_semaphore_wait(sessionWaitSemaphore, DISPATCH_TIME_FOREVER)

    return errorExport

A: For Swift 2.1:
class func getDocumentsDirectory() -> NSString {
    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as [String]
    let documentsDirectory = paths[0]
    return documentsDirectory
}

class func getFileURL() -> NSURL {
    let audioFilename = getDocumentsDirectory().stringByAppendingPathComponent("\(NSDate()).m4a")
    let audioURL = NSURL(fileURLWithPath: audioFilename)

    return audioURL
}

func merge(audio1: NSURL, audio2:  NSURL) {

    finalURL = ProcessViewController.getFileURL()

    let preferredTimeScale : Int32 = 100

    //This object will be edited to include both audio files
    let composition = AVMutableComposition()

    //Song 1 setup
    let compositionAudioTrack1:AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID())
    let url1 = audio1
    let avAsset1 = AVURLAsset(URL: url1, options: nil)
    let tracks1 =  avAsset1.tracksWithMediaType(AVMediaTypeAudio)
    let assetTrack1:AVAssetTrack = tracks1[0]
    let duration1: CMTime = CMTimeMakeWithSeconds(trimmedLength1, preferredTimeScale)
    let startCMTime = CMTimeMakeWithSeconds(Double(startTime1), preferredTimeScale)
    let timeRange1 = CMTimeRangeMake(startCMTime, duration1)

    //Song 2 setup
    let compositionAudioTrack2:AVMutableCompositionTrack = composition.addMutableTrackWithMediaType(AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID())
    let url2 = audio2
    let avAsset2 = AVURLAsset(URL: url2, options: nil)
    let tracks2 =  avAsset2.tracksWithMediaType(AVMediaTypeAudio)
    let assetTrack2:AVAssetTrack = tracks2[0]
    let duration2: CMTime = CMTimeMakeWithSeconds(trimmedLength2, preferredTimeScale)
    let startCMTime2 = CMTimeMakeWithSeconds(Double(startTime2), preferredTimeScale)
    let timeRange2 = CMTimeRangeMake(startCMTime, duration1)

    //Insert the tracks into the composition
    do {

        try compositionAudioTrack1.insertTimeRange(timeRange1, ofTrack: assetTrack1, atTime: kCMTimeZero)

        try compositionAudioTrack2.insertTimeRange(timeRange2, ofTrack: assetTrack2, atTime: duration1)

    } catch {

        print(error)

    }

    //Perform the merge
    let assetExport = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetAppleM4A)
    assetExport!.outputFileType = AVFileTypeAppleM4A
    assetExport!.outputURL = finalURL
    assetExport!.exportAsynchronouslyWithCompletionHandler({
        switch assetExport!.status{
        case  AVAssetExportSessionStatus.Failed:
            print("failed \(assetExport!.error)")
        case AVAssetExportSessionStatus.Cancelled:
            print("cancelled \(assetExport!.error)")
        default:
            print("complete")

            self.initializeAudioPlayer()

        }

    })

}


text:
Березі́вка — село в Україні, у Джулинській сільській громаді Гайсинського району Вінницької області. Населення становить 569 осіб.

Історія

Під час другого голодомору у 1932–1933 роках, проведеного радянською владою, загинуло близько 100 осіб.

12 червня 2020 року, відповідно розпорядження Кабінету Міністрів України № 707-р «Про визначення адміністративних центрів та затвердження територій територіальних громад Вінницької області», село увійшло до складу Джулинської сільської громади.

17 липня 2020 року, в результаті адміністративно-територіальної реформи і ліквідації Бершадського району, село увійшло до складу Гайсинського району.

Відомі люди
 Гриневецький Володимир Трифонович (*20 червня 1932) — український фізико-географ, ландшафтознавець, старший науковий співробітник Київського національного університету імені Тараса Шевченка.

Примітки

Література
 Серебрі́я // Історія міст і сіл Української РСР : у 26 т. / П.Т. Тронько (голова Головної редколегії). — К. : Головна редакція УРЕ АН УРСР, 1967 - 1974 — том Вінницька область / А.Ф. Олійник (голова редколегії тому), 1972 : 788с. — С.166 (Березівка)

Посилання
 Форум села Березівка .
 Березівка — фотоальбом .

Села Вінницької області

redpajama_set_name: RedPajamaWikipedia


Have you been keeping up to date with our Briefbox Guest Author Series? Joel and James from Briefbox have already written two pieces for us—covering how to stand out when applying for jobs and tricks and tips for freelancers. This marks their third and final advice piece in which Joel shares his wisdom on the ever-awkward topic on how to deal with clients! Read on to hear what to do when a partnership just isn't working and why managing expectations is crucial.
Don't forget, Briefbox are one of our Shillumni partnerships, learn more about discount for Shillington Graduates over here.
As soon as you get that first paid design gig… everything changes. You've taken the leap to start your freelance career or have started working at an agency, you've spent ages working with a client and created an awesome piece of design work and then.. things get difficult, how do you keep your cool and ensure the project still goes smoothly? Well, I'm going to give you the lowdown of how to deal with difficult clients, pre-plan for tuff times and make sure you stay sane!
Or… at least help them to feel that way and show them in your opinion what is right. This is where good communication skills, understanding how people think and way more than just design comes into play. At the end of the day, design is like music and what one person likes and connects with doesn't mean other people will feel the same. If a client comes back and says "I don't like it", you need to understand this and work with them until you can find a solution they do like and that you feel works creatively. Something to keep in mind is that although you are more specialised in design, your client probably knows their target audience in much more detail than you. This is where a partnership needs to be formed that combines your creative skills and their customer knowledge to create an awesome solution that is a compromise of the above.
A sure fire way of getting yourself into a tricky situation is not keeping organised during a project. One of the main things to stay on top of is file organisation, versions and rounds of revisions. Ensure that from the beginning you keep a structured format of your rounds, file naming, and keep all files in one place specific to a client's project. That way if things do get a little messy or difficult with a client requesting many rounds of revisions, at least you can be confident and thorough in your responses.
Something that can be difficult to manage is your schedule; don't take on too many projects at the same time. This can be tricky as often work can come in like buses—with nothing for ages then loads at the same time, but in the long run you and your client will be much happier if you reply to an enquiry with 'I'm fully booked for the next month, but I can schedule your project in for the first two weeks in January". Very often a client needs something urgently and it can be tempting to jump at every opportunity but, trust me honesty and schedule management is key to a successful relationship. A client will also see you as being more professional and experienced and respect you in the long run.
Once you've got an enquiry and you are in the initial stages of a project, something that is absolutely key to preventing your client becoming difficult, is to set the rules from the start. You'll need to ensure that all the specific deliverables are signed off and agreed before accepting that initial deposit payment. For example, if you are working on a logo, how many different concepts will you supply for an agreed amount and then how many revisions of a chosen concept is the client entitled to?
Once you begin setting up policies for different types of projects you can then use these as templates for any future projects you begin working on.
When things do get difficult and a client is becoming tricky to work with, you need to establish the value of this client and weigh up your options because if the client has brought you in lots of revenue and will continue to do so then it's probably best to keep going and do everything you can to please them. However, if it's a small project with someone you have never worked with before and things just simply are not working then you can kindly suggest to your client that you both go your separate ways and wish them luck in their creative project.
Sometimes with new clients, they will promise the world and tell you they have loads of work coming your way. Unfortunately, this often isn't true and will leave you feeling hard done by when you go the extra mile only for the client never to return. You need to weigh up your options with every client and have confidence in your own value. When things get difficult with clients and you've tried every possible route to provide a solution and to keep them happy.. you know you will have tried your hardest. If this doesn't work—just move on and keep your head held high.
Have you read any of our other guest author pieces? Head to the archives to uncover lots of advice gold.


text:
@implementation BooksTableViewDelegate

- (void) dealloc
{
	[super dealloc];
}

- (void) tableViewSelectionDidChange: (NSNotification *) notification
{
	NSTableView * table = [notification object];

	if (table == booksTable)
	{

	}
	else if (table == listsTable)
	{
		NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];

		if (openFilename != nil)
		{
			[spotlightInterface openFile:openFilename];
			[openFilename release];
			openFilename = nil;

			[prefs setValue:nil forKey:@"Last Open Books"];
			[prefs setValue:nil forKey:@"Last Open List"];
		}
		else
		{
			NSString * lastOpenList = [prefs valueForKey:@"Last Open List"];

			if (lastOpenList != nil)
			{
				NSArray * lists = [collectionArrayController arrangedObjects];

				int i = 0;
				for (i = 0; i < [lists count]; i++)
				{
					if ([lastOpenList isEqual:[[[[lists objectAtIndex:i] objectID] URIRepresentation] description]])
						[collectionArrayController setSelectionIndexes:[NSIndexSet indexSetWithIndex:i]];
				}

				NSArray * lastOpenBooks = [prefs valueForKey:@"Last Open Books"];

				if (lastOpenBooks != nil)
				{
					NSMutableArray * lastBooks = [NSMutableArray array];

					NSArray * books = [bookArrayController arrangedObjects];

					for (i = 0 ; i < [books count]; i++)
					{
						int j = 0;

						for (j = 0; j < [lastOpenBooks count]; j++)
						{
							if ([[lastOpenBooks objectAtIndex:j] isEqual:[[[[books objectAtIndex:i] objectID] URIRepresentation] description]])
								[lastBooks addObject:[books objectAtIndex:i]];
						}
					}

					[bookArrayController setSelectedObjects:lastBooks];

					[prefs setValue:nil forKey:@"Last Open Books"];
				}

				[prefs setValue:nil forKey:@"Last Open List"];
			}
		}

		NSSortDescriptor * sorter = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(compare:)];
		[collectionArrayController setSortDescriptors:[NSArray arrayWithObject:sorter]];
		[sorter release];

		NSArray * selectedObjects = [collectionArrayController selectedObjects];

		if ([selectedObjects count] > 0)
		{
			ListManagedObject * list = [selectedObjects objectAtIndex:0];

			NSDictionary * sorts = [prefs dictionaryForKey:@"Table Sorting"];

			if (sorts != nil)
			{
				NSArray * descs = [sorts objectForKey:[[[list objectID] URIRepresentation] absoluteString]];

				if (descs != nil)
				{
					NSMutableArray * sortDescs = [NSMutableArray array];

					int i = 0;
					for (i = 0; i < [descs count]; i++)
					{
						NSDictionary * sort = [descs objectAtIndex:i];

						BOOL ascend = NO;

						if ([[sort valueForKey:@"ascend"] isEqual:@"YES"])
							ascend = YES;

						NSSortDescriptor * sortDesc = nil;

						NSString * key = [sort valueForKey:@"key"];

						if ([key rangeOfString:@"date" options:NSCaseInsensitiveSearch].location != NSNotFound)
							sortDesc = [[NSSortDescriptor alloc] initWithKey:key ascending:ascend selector:@selector(compare:)];
						else if ([((BooksAppDelegate *) [NSApp delegate]) leopardOrBetter])
							sortDesc = [[NSSortDescriptor alloc] initWithKey:key ascending:ascend selector:@selector(localizedCaseInsensitiveCompare:)];
						else
							sortDesc = [[NSSortDescriptor alloc] initWithKey:key ascending:ascend selector:@selector(caseInsensitiveCompare:)];

						[sortDescs addObject:sortDesc];

						[sortDesc release];
					}

					[booksTable setSortDescriptors:sortDescs];
				}
			}

			if ([list isKindOfClass:[SmartListManagedObject class]])
			{
				[toolbarDelegate setNewBookAction:nil];
				[toolbarDelegate setEditSmartListAction:NSSelectorFromString(@"editSmartList:")];
				[toolbarDelegate setRemoveBookAction:nil];
				[toolbarDelegate setRemoveListAction:NSSelectorFromString(@"removeList:")];
			}
			else
			{
				[toolbarDelegate setNewBookAction:NSSelectorFromString(@"newBook:")];
				[toolbarDelegate setEditSmartListAction:nil];
				[toolbarDelegate setRemoveBookAction:NSSelectorFromString(@"removeBook:")];
				[toolbarDelegate setRemoveListAction:NSSelectorFromString(@"removeList:")];
			}
		}
		else
		{
			[toolbarDelegate setNewBookAction:nil];
			[toolbarDelegate setEditSmartListAction:nil];
			[toolbarDelegate setRemoveBookAction:nil];
			[toolbarDelegate setRemoveListAction:nil];
		}
	}

	NSArray * books = [((BooksAppDelegate *) booksAppDelegate) getSelectedBooks];

	if ([books count] == 1)
	{
		BookManagedObject * book = (BookManagedObject *) [books objectAtIndex:0];

		NSData * coverData = [book getCoverImage];

		if (coverData != nil)
			[toolbarDelegate setGetCoverAction:NSSelectorFromString (@"getCoverWindow:")];
		else
			[toolbarDelegate setGetCoverAction:nil];
	}

	NSNotification * msg = [NSNotification notificationWithName:BOOKS_HIDE_COVER object:nil];
	[[NSNotificationCenter defaultCenter] postNotification:msg];
}

- (void) tableView: (NSTableView *) tableView didClickTableColumn: (NSTableColumn *) tableColumn
{
	NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];

	NSDictionary * sorts = [prefs dictionaryForKey:@"Table Sorting"];

	if (sorts == nil)
		sorts = [NSDictionary dictionary];

	NSMutableDictionary * newSorts = [NSMutableDictionary dictionaryWithDictionary:sorts];

	NSArray * descs = [[tableColumn tableView] sortDescriptors];

	int selected = [collectionArrayController selectionIndex];

	ListManagedObject * currentList = [[collectionArrayController arrangedObjects] objectAtIndex:selected];

	if (currentList != nil)
	{
		NSMutableArray * savedSorts = [NSMutableArray array];

		int i = 0;
		for (i = 0; i < [descs count]; i++)
		{
			NSSortDescriptor * sort = [descs objectAtIndex:i];

			NSMutableDictionary * desc = [NSMutableDictionary dictionary];

			if ([sort ascending])
				[desc setValue:@"YES" forKey:@"ascend"];
			else
				[desc setValue:@"NO" forKey:@"ascend"];

			[desc setValue:[sort key] forKey:@"key"];

			[newSorts setObject:desc forKey:[[[currentList objectID] URIRepresentation] absoluteString]];

			[savedSorts addObject:newSorts];
		}

		[prefs setValue:savedSorts forKey:@"Table Sorting"];
	}
}

- (void) save
{
	NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

	NSArray * tableColumns = [booksTable tableColumns];

	NSMutableArray * columnWidths = [NSMutableArray array];

	NSMutableArray * columns = [NSMutableArray arrayWithArray:[defaults objectForKey:@"Display Fields"]];

	int i = 0;
	for (i = [tableColumns count] - 1; i >=0 ; i--)
	{
		NSTableColumn * column = [tableColumns objectAtIndex:i];

		NSString * identifier = [column identifier];

		int j = 0;
		for (j = 0; j < [columns count]; j++)
		{
			NSDictionary * dict = [columns objectAtIndex:j];

			if ([[dict objectForKey:@"Key"] isEqual:identifier])
			{
				[columns removeObject:dict];

				[columns insertObject:dict atIndex:0];
			}
		}

		[columnWidths insertObject:[NSNumber numberWithFloat:[column width]] atIndex:0];
	}

	[defaults setObject:columnWidths forKey:@"Main Window Column Widths"];

	[defaults setObject:columns forKey:@"Display Fields"];

	NSArray * sortDescriptors = [booksTable sortDescriptors];
	NSMutableArray * savedSortDescriptors = [NSMutableArray array];

	for (i = 0; i < [sortDescriptors count]; i++)
	{
		NSSortDescriptor * descriptor = [sortDescriptors objectAtIndex:i];

		NSMutableDictionary * values = [NSMutableDictionary dictionary];
		[values setObject:[descriptor key] forKey:@"key"];

		if ([descriptor ascending])
			[values setObject:@"yes" forKey:@"ascending"];
		else
			[values setObject:@"no" forKey:@"ascending"];

		[savedSortDescriptors addObject:values];
	}

	[defaults setObject:savedSortDescriptors forKey:@"Books Table Sorting"];
}

- (void) restore
{
	NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

	NSArray * columnWidths = [defaults arrayForKey:@"Main Window Column Widths"];
	NSArray * tableColumns = [booksTable tableColumns];

	if (columnWidths != nil)
	{
		int i = 0;
		for (i = 0; i < [columnWidths count] && i < [tableColumns count]; i++)
		{
			NSNumber * width = [columnWidths objectAtIndex:i];
			[[tableColumns objectAtIndex:i] setWidth:[width floatValue]];
		}
	}

	NSArray * booksSorting = [defaults arrayForKey:@"Books Table Sorting"];

	NSMutableArray * sortDescriptors = [NSMutableArray array];

	int j = 0;
	for (j = 0; j < [booksSorting count]; j++)
	{
		NSDictionary * dict = (NSDictionary *) [booksSorting objectAtIndex:j];

		NSSortDescriptor * descriptor = nil;

		NSString * key = (NSString *) [dict objectForKey:@"key"];

		// if ([key rangeOfString:@"date" options:NSCaseInsensitiveSearch].location != NSNotFound)
			descriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:[[dict objectForKey:@"ascending"] isEqual:@"yes"] selector:@selector(compare:)];
		// else if ([((BooksAppDelegate *) [NSApp delegate]) leopardOrBetter])
		// 	descriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:[[dict objectForKey:@"ascending"] isEqual:@"yes"] selector:@selector(localizedCaseInsensitiveCompare:)];
		// else
		//	descriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:[[dict objectForKey:@"ascending"] isEqual:@"yes"] selector:@selector(caseInsensitiveCompare:)];

		[sortDescriptors addObject:descriptor];

		[descriptor release];
	}

	[booksTable setSortDescriptors:sortDescriptors];

	[listsTable registerForDraggedTypes:[NSArray arrayWithObject:@"Books Book Type"]];
}

- (void) updateBooksTable
{
	NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];

	NSArray * newColumns = [prefs arrayForKey:@"Display Fields"];

	NSArray * oldColumns = [NSArray arrayWithArray:[listsTable tableColumns]];

	if ([oldColumns count] == 0)
	{
		NSTableColumn * column = [[NSTableColumn alloc] initWithIdentifier:@"icon"];
		[[column headerCell] setStringValue:@""];

		NSImageCell * cell = [[NSImageCell alloc] init];
		[column setDataCell:cell];
		[cell release];

		[column bind:@"data" toObject:collectionArrayController withKeyPath:@"arrangedObjects.icon" options: nil];
		[column setWidth:16.0];
		[column setResizingMask:NSTableColumnNoResizing];

		[listsTable addTableColumn:column];
		[column release];

		column = [[NSTableColumn alloc] initWithIdentifier:@"name"];
		[[column headerCell] setStringValue:@"Lists"];
		[column bind:@"value" toObject:collectionArrayController withKeyPath:@"arrangedObjects.name" options: nil];
		[column setResizingMask:NSTableColumnAutoresizingMask];
		[column setWidth:([listsTable frame].size.width - 16)];

		[listsTable addTableColumn:column];
		[column release];

		NSSortDescriptor * sort = nil;

		// if ([((BooksAppDelegate *) [NSApp delegate]) leopardOrBetter])
		// 	sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
		// else
		// 	sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];

		sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(compare:)];

		[collectionArrayController setSortDescriptors:[NSArray arrayWithObject:sort]];
		[sort release];
	}

	NSSortDescriptor * sort = nil;

	if ([((BooksAppDelegate *) [NSApp delegate]) leopardOrBetter])
		sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
	else
		sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];

	[collectionArrayController setSortDescriptors:[NSArray arrayWithObject:sort]];
	[sort release];

	oldColumns = [NSArray arrayWithArray:[booksTable tableColumns]];

	int i = 0;

	for (i = 0; i < [oldColumns count]; i++)
		[booksTable removeTableColumn:[oldColumns objectAtIndex:i]];

	NSArray * menuItems = [booksColumnMenu itemArray];

	for (i = 0; i < [menuItems count]; i++)
		[[menuItems objectAtIndex:i] setState:NSOffState];

	if ([newColumns count] == 0)
	{
		NSMutableDictionary * title = [NSMutableDictionary dictionary];
		[title setValue:@"title" forKey:@"Key"];
		[title setValue:NSLocalizedString (@"Title", nil) forKey:@"Title"];
		[title setValue:[NSNumber numberWithInt:1] forKey:@"Enabled"];

		newColumns = [NSArray arrayWithObject:title];
	}

	for (i = 0; i < [newColumns count]; i++)
	{
		NSDictionary * dict = [newColumns objectAtIndex:i];

		NSString * key = [dict objectForKey:@"Key"];
		NSString * title = NSLocalizedString ([dict objectForKey:@"Title"], nil);
		NSString * enabled = [[dict objectForKey:@"Enabled"] description];

		if ([enabled isEqualToString:@"1"])
		{
			[[booksColumnMenu itemWithTitle:title] setState:NSOnState];

			NSTableColumn * column = [[NSTableColumn alloc] initWithIdentifier:key];

			[[column headerCell] setStringValue:title];

			[column bind:@"value" toObject:bookArrayController withKeyPath:[@"arrangedObjects." stringByAppendingString:key]
				options: nil];

			NSString * dateFormat = [[NSApp delegate] getDateFormatString];
			[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4];
			NSDateFormatter * formatter = [[NSDateFormatter alloc] initWithDateFormat:dateFormat allowNaturalLanguage:YES];

			if ([key isEqualToString:@"publishDate"] ||
				[key isEqualToString:@"dateLent"] ||
				[key isEqualToString:@"dateDue"] ||
				[key isEqualToString:@"dateFinished"] ||
				[key isEqualToString:@"dateAcquired"] ||
				[key isEqualToString:@"dateStarted"] )
			{
				[[column dataCell] setFormatter:formatter];

				NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:YES selector:@selector(compare:)];

				[column setSortDescriptorPrototype:sortDescriptor];
				[sortDescriptor release];
			}
			else
			{
				NSSortDescriptor * sortDescriptor = nil;

				if ([((BooksAppDelegate *) [NSApp delegate]) leopardOrBetter])
					sortDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
				else
					sortDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:YES selector:@selector(caseInsensitiveCompare:)];

				[column setSortDescriptorPrototype:sortDescriptor];

				[sortDescriptor release];
			}

			[formatter release];
			[column setEditable:NO];

			[booksTable addTableColumn:column];
			[column release];
		}
	}

	NSString * customString = [prefs objectForKey:@"Custom List User Fields"];

	if (customString != nil && ![customString isEqual:@""])
	{
		NSArray * fields = [customString componentsSeparatedByString:@"\n"];

		for (i = 0; i < [fields count]; i++)
		{
			NSString * field = [fields objectAtIndex:i];
			if (field != nil && ![field isEqual:@""])
			{
				NSMutableString * fieldKey = [NSMutableString stringWithString:field];

				[fieldKey replaceOccurrencesOfString:@"." withString:@"" options:NSCaseInsensitiveSearch
					range:NSMakeRange (0, [fieldKey length])];

				NSTableColumn * column = [[NSTableColumn alloc] initWithIdentifier:fieldKey];

				[[column headerCell] setStringValue:field];

				[column bind:@"value" toObject:bookArrayController
					withKeyPath:[@"arrangedObjects." stringByAppendingString:fieldKey] options: nil];

				NSSortDescriptor * sortDescriptor = nil;

				if ([((BooksAppDelegate *) [NSApp delegate]) leopardOrBetter])
					sortDescriptor = [[NSSortDescriptor alloc] initWithKey:fieldKey ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
				else
					sortDescriptor = [[NSSortDescriptor alloc] initWithKey:fieldKey ascending:YES selector:@selector(caseInsensitiveCompare:)];

				[column setSortDescriptorPrototype:sortDescriptor];
				[sortDescriptor release];

				[column setEditable:NO];

				[booksTable addTableColumn:column];
				[column release];
			}
		}
	}

	[booksTable sizeToFit];
	[booksTable setDoubleAction:@selector(getInfoWindow:)];
}

- (void) reloadListsTable
{
	[listsTable reloadData];
}

- (void) reloadBooksTable
{
	[booksTable reloadData];
}

- (NSTableView *) getListsTable
{
	return listsTable;
}

- (NSTableView *) getBooksTable
{
	return booksTable;
}

- (void) setOpenFilename:(NSString *) filename
{
	openFilename = [filename retain];
}

- (IBAction) toggleColumns: (id) sender
{
	NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
	NSArray * prefArray = [prefs arrayForKey:@"Display Fields"];

	if (prefArray == nil)
		prefArray = [NSArray array];

	NSMutableArray * columnArray = [NSMutableArray arrayWithArray:prefArray];

	NSString * title = [sender title];
	int index = [fieldTitles indexOfObject:title];
	NSString * key = [fieldKeys objectAtIndex:index];

	NSMenuItem * menuItem = [booksColumnMenu itemWithTitle:[sender title]];

	if ([menuItem state] == NSOnState)
	{
		int i = 0;
		for (i = 0; i < [columnArray count]; i++)
		{
			if ([[[columnArray objectAtIndex:i] valueForKey:@"Key"] isEqualTo:key])
				[columnArray removeObjectAtIndex:i];
		}
	}
	else
	{
		NSMutableDictionary * dict = [NSMutableDictionary dictionary];
		[dict setValue:key forKey:@"Key"];
		[dict setValue:title forKey:@"Title"];
		[dict setValue:[NSNumber numberWithInt:1] forKey:@"Enabled"];

		[columnArray addObject:dict];
	}

	[prefs setObject:columnArray forKey:@"Display Fields"];
	[self updateBooksTable];
}

- (void) observeValueForKeyPath: (NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change
	context:(void *)context
{

    if ([keyPath isEqual:@"Show Gallery"])
	{
		[self willChangeValueForKey:@"label"];

		if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Show Gallery"])
			[box selectTabViewItemAtIndex:1];
		else
			[box selectTabViewItemAtIndex:0];

		[self didChangeValueForKey:@"label"];
	}
	else if ([keyPath isEqual:@"Custom List User Fields"])
		[self updateBooksTable];
}

- (int) getLabel
{
	if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Show Gallery"])
		return 1;
	else
		return 0;
}

- (void) setLabel:(int) label
{
	[self willChangeValueForKey:@"label"];

	if (label == 1)
		[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Show Gallery"];
	else
		[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"Show Gallery"];

	[self didChangeValueForKey:@"label"];
}

- (void) awakeFromNib
{
	fieldTitles = [[NSArray alloc] initWithObjects:NSLocalizedString (@"Title", nil),
							NSLocalizedString (@"Series", nil), NSLocalizedString (@"Genre", nil),
							NSLocalizedString (@"ISBN", nil), NSLocalizedString (@"Author(s)", nil),
							NSLocalizedString (@"Date Published", nil),	NSLocalizedString (@"Keywords", nil),
							NSLocalizedString (@"Publisher", nil), NSLocalizedString (@"Translator(s)", nil),
							NSLocalizedString (@"Illustrator(s)", nil), NSLocalizedString (@"Editor(s)", nil),
							NSLocalizedString (@"Place Published", nil), NSLocalizedString (@"Length", nil),
							NSLocalizedString (@"Edition", nil), NSLocalizedString (@"Format", nil),
							NSLocalizedString (@"Location", nil), NSLocalizedString (@"Rating", nil),
							NSLocalizedString (@"Condition", nil), NSLocalizedString (@"Source", nil),
							NSLocalizedString (@"Owner", nil), NSLocalizedString (@"Current Value", nil),
							NSLocalizedString (@"Rating", nil), NSLocalizedString (@"Borrower", nil),
							NSLocalizedString (@"Date Lent", nil), NSLocalizedString (@"Returned On", nil),
							NSLocalizedString (@"Date Acquired", nil), NSLocalizedString (@"Date Finished", nil),
							NSLocalizedString (@"Date Started", nil), nil];

	fieldKeys = [[NSArray alloc] initWithObjects:@"title", @"series", @"genre", @"isbn", @"authors", @"publishDate",
			@"keywords", @"publisher", @"translators", @"illustrators", @"editors", @"publishPlace",
			@"length", @"edition", @"format", @"location", @"rating", @"condition", @"source", @"owner", @"currentValue",
			@"rating", @"borrower", @"dateLent", @"dateDue", @"dateAcquired", @"dateFinished", @"dateStarted", nil];

	[[booksTable headerView] setMenu:booksColumnMenu];

	[[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:@"Show Gallery" options:NSKeyValueObservingOptionNew context:NULL];

	[listsTable setNextKeyView:booksTable];

	if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Show Gallery"])
	{
		[listsTable setNextKeyView:gallery];
		[self setLabel:1];
	}
	else
	{
		[self setLabel:0];
	}

	[[NSUserDefaults standardUserDefaults] addObserver:self forKeyPath:@"Custom List User Fields" options:NSKeyValueObservingOptionNew context:NULL];

	[[NSNotificationCenter defaultCenter] addObserver:self selector:NSSelectorFromString(@"setControlsView:")
		name:BOOKS_SET_CONTROL_VIEW object:nil];

	[[NSNotificationCenter defaultCenter] addObserver:self selector:NSSelectorFromString(@"editListName:")
		name:BOOKS_EDIT_LIST_NAME object:nil];

	[[NSNotificationCenter defaultCenter] addObserver:self selector:NSSelectorFromString(@"openBook:")
		name:BOOKS_OPEN_BOOK object:nil];
}

- (void) setControlsView: (NSNotification *) msg
{
	ViewControls * controls = [msg object];

	if (controls == nil)
		[listsTable setNextKeyView:booksTable];
	else
		[listsTable setNextKeyView:gallery];
}

- (NSImage *) getListIcon
{
	return [NSImage imageNamed:@"list-small"];
}

- (NSData *) getGalleryIcon
{
	return [NSImage imageNamed:@"gallery"];
}

- (void) openBook: (NSNotification *) msg
{
	openFilename = [[msg object] retain];
}

- (void) editListName: (NSNotification *) msg
{
	NSIndexSet * indexes = [collectionArrayController selectionIndexes];

	[listsTable editColumn:1 row:[indexes firstIndex] withEvent:nil select:YES];
}

@end

redpajama_set_name: RedPajamaGithub


SPBAS enables you to securely distribute your digitial goods. Secure downloads are protected by login and are stored behind the public domain. You can set a time limit on download access and charge for renewals after the period has expired.
SPBAS Digital Goods Delivery secures your downloads.
set expiration dates for downloads.
require user login before download.
to extend the users download access.
pubilc download access to specific files.
can be assigned to a product & sold.
available for each file downloaded.
add unlimited files for download.


Today is National Women in Engineering Day, but for many women it will be another day of coping with ill-fitting and uncomfortable PPE.
A new online survey run by Prospect tapped into a deep vein of frustration. Only 29% of the more than 3,000 respondents reported that the PPE they wear is designed for women (It's less than 10% of those working in the energy sector and just 17% in construction).
Almost nine in ten (89%) are currently required to wear PPE at work. Others have done so in the past or wear it on an occasional basis, such as for site visits.
Trousers and overalls were ranked among the worst-fitting items, although there were numerous complaints from women in the emergency services about ill-fitting stab vests. Almost six in ten (57%) respondents said their PPE sometimes or significantly hampers their work.
More than a quarter (28%) had been on the wrong end of derogatory and offensive comments while wearing their PPE, including comparisons with MC Hammer, a Teletubby, a sack of potatoes, Sponge Bob Square Pants, an Umpa Lumpa, Robocop and Oliver Twist!
This behaviour has an adverse impact on women and the organisations they work for. For example, women said work had been delayed because of having to send special requests for PPE that fits and being put off going on site visits.
One woman explained that she ended up taking time off sick when pregnant rather than face the humiliation of PPE that had become even more ill-fitting.
A few women commented that their PPE is so uncomfortable that they simply do not wear it. Others said that they felt utterly unprofessional and a few said that badly fitting PPE had caused permanent damage to their bodies.
Although 99% of respondents said their employer pays for the PPE, responsibility for looking after it varies by sector.
Employers in nuclear and R&D are most likely to take responsibility for cleaning their workers' PPE. Emergency services employers were least likely to do so.
Women working in transport and construction are most likely to be responsible for storing, maintaining and repairing their own PPE. Union members are more likely to get their PPE cleaned by their employer, but less likely to benefit from employer maintenance and repair.
If we're serious about getting more women into engineering and science careers, we need to do a lot more to make sure they're given the kit they need to do the job safely and to the best of their abilities.


text:
namespace Castle.DynamicProxy.Test.Interceptors
{
	using System;
	using System.Text;
	using Castle.DynamicProxy.Test.Classes;

	public class RefAndOutInterceptor : LogInvokeInterceptor
	{
		public RefAndOutInterceptor()
		{

		}

		protected override void PostProceed(IInvocation invocation, ref object returnValue, params object[] args)
		{
			base.PostProceed(invocation, ref returnValue, args);

			switch (invocation.Method.Name)
			{
				case "RefInt":
				case "OutInt":
					args[0] = ((int) args[0]) + 100;
					break;
				case "RefString":
				case "OutString":
					args[0] = ((string) args[0]) + "_xxx";
					break;
				case "RefDateTime":
				case "OutDateTime":
					args[0] = ((DateTime) args[0]).AddMonths(1);
					break;
				case "RefSByteEnum":
				case "OutSByteEnum":
					args[0] = ((SByteEnum) args[0]) == SByteEnum.One ? SByteEnum.Two : SByteEnum.One;
					break;
				default:
					throw new NotSupportedException(invocation.Method.Name);
			}
		}
	}
}


text:
#include <cstdlib>
#include <fstream>
#include <iomanip>
#include <iostream>

using std::cout;
using std::endl;
using std::string;

/**
 * @brief  main function
 * @param[in] argc - Argument count
 * @param[in] argv - Argument list
 *
 */
int main (int argc, char *argv[]) {
	cout	<< "\nProgram " << argv[0] << endl << endl;

	return 0;
}  // end of function main


text:
Q: Trigging an actionresult method in asp.net using a jquery dialog button asp.net mvc Is there a way of making a jQuery dialog button trigger a method in controller so it works like a submit button?
Code in controller
[HttpPost]
       public ActionResult Create(Film filmToCreate){
            try{

                filmToCreate = new Film();
                System.Diagnostics.Debug.WriteLine("Constructed Film");
                UpdateModel(filmToCreate);
                System.Diagnostics.Debug.WriteLine("Updated Model");
                repo.Add(filmToCreate);
                System.Diagnostics.Debug.WriteLine("Added Film");
                repo.Save();
                System.Diagnostics.Debug.WriteLine("Save Databases");
                System.Diagnostics.Debug.WriteLine("Return1");
                return RedirectToAction("Index");

            }
            catch {

                System.Diagnostics.Debug.WriteLine("Caught something");
                return RedirectToAction("Create");
            }

        }

// Code in dialog
 buttons: {
                    "Create": function() {

                    },

                    "Reset": function() {
                        $("#createForm input").attr("value", "");

                    },

                    "Close": function() {
                        $(this).dialog('close');
                    }

                }

Is there some method in the Url class that will be able to link this method to this button?

A: According to the API you would do something like this:
$( ".selector" ).dialog({ buttons: [
    {
        text: "Ok",
        click: function()
        {
            $.get("controller/action", dataToSubmit);
            $(this).dialog("close");
        }
    }
] });

redpajama_set_name: RedPajamaStackExchange


It would be easy to ignore that the Union needed a Mwagical goal with eight minutes left to beat Chivas and earn a total of four points against three of the weaker teams in MLS. It would be so simple to point out completing just over two-thirds of your passes is rarely a formula for success.
And we don't do easy or simple here, do we?
Really? That starting eleven didn't score?
The same lineup that defied the odds and avoided scoring on Wednesday returned for another misadventure. Justin Mapp, Veljko Paunovic and Sebastien Le Toux ran a three-man offensive support structure behind Carlos Ruiz and Jack McInerney, while Brian Carroll covered anything that twitched, moved or thought about moving in the midfield.
Ostensibly an offensive-minded system, the formation lacks a true distributor. Paunovic may have been expected to fill this role, but he struggled to assert himself on a frenetically-paced match.
Instead it was the strikers who conjured up the most opportunities. This is both a positive and a warning sign: If the strikers are doing the creative work to get the offense going, it means they are either checking back very deep to receive balls, or the team is playing long balls at a worrying rate.
In the first half, both issues loomed large.
Jack McInerney was coming into the midfield to collect and turn. This was partially by design—the kid is good at it—but mostly by necessity. With Paunovic uninvolved and Justin Mapp in dribble-only mode, only McInerney could create connections going forward.
When Paunovic did get a touch, he was all too prone to the long pass. With Carlos Ruiz in fine form up top, this was not a terrible option, but certainly it isn't the type of offense you expect in a first vs. worst matchup.
The defense was hardly more organized for Philadelphia. The Chivas goal came off a corner that was set up by a Nick LaBrocca half volley which was brilliantly saved by Mondragon. This was just one of many first half opportunities that Chivas generated by simply getting the ball past the Union's front five and then keeping it as far away from Brian Carroll as possible. If Justin Braun was more finisher and less energetic man-child, he could have been celebrating his second hat trick of the season by game's end.
Truly, the first half revealed how anxious the Union were to break out of their stagnant, winless run. They pushed forward aimlessly, their runs were straight at goal, their defensive coverage existed in name only, and they found more traps than outlets.
This final point is an important one, because Chivas' defensive strategy overmatched Philadelphia in the first forty-five. Unlike Vancouver and Kansas City, who pressured Califf and Valdes, Chivas looked to double down on Williams and Harvey once the ball was played wide. The first striker and the outside midfielder converged on the Union's outside backs while the second striker drifted across to prevent an outlet to the central defender. With Paunovic slow to offer feet and Brian Carroll remaining in the middle of the pitch, Chivas created numerous turnovers from this simple bait-and-trap plan.
Ah, the paradox of the halftime substitution. If it changes the game for the better you are a genius and nobody remembers how wrong you got your starting lineup. Of the two changes Peter Nowak made, Danny Mwanga certainly made the most memorable impact. But it is arguable Keon Daniel who had the biggest effect on the match.
Daniel has consistently exhibited a calmness on the ball that creates a good working relationship with the players on his side of the pitch. Jordan Harvey is a noticeably better offensive player with Daniel in front of him. Connecting with Paunovic and Le Toux, Neon Keon managed to subtly slow the Union's hail mary offense down to a more controlled pass and move state. Sebastien Le Toux spent less time chasing balls over the top and more time with the ball at his feet.
For evidence, please see the first and third goals.
On the first, Le Toux both received the ball at his feet and played a diagonal pass instead of the more direct balls that characterized the first forty-five. Mapp to Paunovic and the score was even.
Enough of the doom and gloom. The Union have shown time and again that they will not be a consistent or dominant team. They will not be a team that hogs the ball or dictates the pace of a game. They will certainly not be predictable.
But they will be tough. Physically and mentally, the team is in first place because they have fought back for wins and ties. They have mined goals from unlikely sources; plugged midfielders into defense and defenders in as strikers. They have played the full ninety in every single match (we can argue about Seattle, if you want).
The Union are a flawed team. And the coaching staff has been surprisingly willing to let chaos reign in every on-field aspect beyond the back five.
Whether this 2011 Union side can harness that chaos and create in the fluid and unstructured offensive system that Peter Nowak favors will remain a glaring question until answers emerge in the form of a balance between defense and offense. A balance that creates quality chances without leaving Brian Carroll sitting alone at the table with the defensive tab for the rest of the midfield.
Another three points, but the same issues remain. It looks like the players on the field will have to do their own problem solving, because the coaching staff has yet to provide answers.
A great save on LaBrocca's half volley and another strong performance marshaling a stretched defense. But The Dragon's poor punch set up the first Chivas goal and he misjudged Justin Braun's speed on the second. Maybe the forty-year old thought he had an extra step in him after he bounded out 25 yards to clear in the first half.
A stinker of a first half for a normally reliable offensive defender. Williams was dispossessed on the wing numerous times and adjusted poorly to the Chivas pressure. He still managed to set up two chances with accurate and timely long passes to the feet of his strikers. A better job defensively in the second half, with Chivas coming up his side almost exclusively.
Valdes had a heavyweight bout with Justin Braun all match. The Chivas striker was impressive in his speed and strength but showed few instincts. Valdes paid a physical cost for marking the big man all game and was caught out when Flores lofted a ball behind on Braun's goal. Valdes again showed a proclivity for getting forward, and he has started to make an impact with key passes and runs through the midfield.
Califf can only shrug his shoulders when he watches the Braun goal on replay. There's no way he can keep up with a player on a run across the defense onto such a perfect lob. But Califf should talk to Mondragon about staying on his line a bit longer, because if there is one thing Danny does well, it is recovering angles. If Braun had taken more than one touch, he would have found it very difficult to get a shot off.
Harvey was a step slow defensively and was a target for Chivas' trapping defense. Forced to play quickly, and with a central option rare, Harvey was caught with the ball in his feet and became very cautious about going forward.
Mapp's defense is a liability. One of the biggest issues in the first half was that Mapp and Le Toux both end up so far out of position on defense that odd-man rushes are almost an inevitability. To make the most of Mapp, the Union need a better distributor in the middle, and not a Roger-Torres-bloop-over-the-top guy. Someone who can find Mapp in space going forward. Mapp also missed an absolute sitter in the first half.
Brian Carroll needs bigger pockets because he is keeping multiple players in them each game. Nick LaBrocca certainly didn't think he'd have to come out to the wings to get the time on the ball he craved. Carroll is up to the challenge against teams like Chivas and KC, who seem more surprised than anything at having space to run through the middle of the pitch. If the Union try to leave Carroll on an island against a quality midfield duo, it is asking for trouble.
A goal and an assist. Not bad at all from the immobile Serbian. He was granted less space than in the KC game and responded with more long balls and by disappearing for long stretches. But he hustled into the box to score and picked out Ruiz with a lob that the Guatemalan's in-form first touch and shot turned into goal number two.
I promised Le Toux would not get a higher rating until he scored, but if he keeps playing like he did in the second half I will have to break my rule. Another pair of glaring misses in the first half showed that the Frenchman is trying way too hard in front of goal. The second forty-five showed that when he isn't baring down on net, the Union's number nine can be a creative force. He worked hard to find space and was willing to pass rather than try to do too much, as has often been his flaw this season.
His best match in the blue and gold produced a fine finish and a number of calm, deliberate touches to send teammates into space. Ruiz and Mwanga play like they are unaware each other is on the pitch, but when they are both scoring individually, it will have to do for now.
Does anybody know why Chivas failed to challenge Daniel at all down his wing? He's a fine player, but when a midfielder is slotted in at left back, wouldn't you rather attack him than The Sheanomenon? Daniel's footwork and skill on the ball were crucial for the Union to gain more possession and create a more nuanced attack.
Not a huge impact, but the stats show Nakazawa got stuck in on a good number of tackles for his short time on the pitch.
Great review as always. I'm glad many of us recognize that Ruiz played an excellent game. Eleventy one offsides aside, he was consistently dangerous. He really is a shade above nearly all MLS strikers. Mwanga is two shades above. Crikey.
@Rolando – Man… that was a lot of offsides. But it looks like Ruiz bought a new first touch during his Gold Cup travels.
Adam, what do you think about marfan as being that distributor in the middle? We don't really have anyone like that (Benny Feilhaber anyone?) but farfan has shown a nice ability to move the ball around, although primarily from the wing.
Marfan's 45 minutes in the middle of the park against Chicago was one of the most impressive central midfield displays of the season. He made some glaring mistakes but also fought on tackles and both passed and carried the ball smartly.
In short, I think he's a step above Torres in that role and a more dynamic option that Nakazawa at this point. Too bad his versatility means he keeps getting slotted in at LB where he eats more dust than Wily Coyote.
I must apologize for those sitting around me in 121 for my screaming "Take the damn shot" at Mac – as angrily as I have possibly screamed my entire life. I am sorry. So is my throat.
For as much as he was prone to disappearing and doing little defending, credit is due to Paunovic for hustling back to block a shot from a dangerous opportunity in the second half.
I'm pleased both Ruiz and Paunovic scored – what Union supporter wouldn't be? But being pleased that they are doing what they are paid to be doing doesn't minimize my doubts about them or Nowak's offensive decisions. If Toronto taught us anything, one outing with offensive production being at the level we expect doesn't mean the offense is fixed. There are three road games coming up against some quality opposition including two conference rivals. If my memory is correct, of the seven road games thus far, the Union have been scoreless four times, twice scored one goal and had the Toronto explosion. Has the Union offensive turned the corner? We shall see.
Well put Ed. Congrats to Ruiz and Paunovic. I'll even offer a guarded conratulations to Nowak. I still think he's out of his mind and both the Union and their supporter's are soon going to suffer for it. Now that Ruiz and Paunovic have both scored in the same game, I'm afraid he feels justified in his line up decisions and shiver at the thought of what other moves he may try. However, they fought back and pulled this one out so that's all the criticism I'll offer. Let the Union bask in the glow of victory. I hope it continues.
Ruiz's goal was very well taken, but he is still disconnected from the rest of the team. He seemed to always be out of sync with Le Toux, Mac, and Mwanga. He has great strength on the ball, as he displayed on the goal, but he is still lacking that extra step. Unfortunately, it looks like Nowak would only take Ruiz out if he had to be stretchered off the field. Still, though, I think we would all be happier with Mwanga and Le Toux up top rather than any other combination.


According to the concept of contemporary art schools, art is not solely restricted to painting and sculpture but encompasses many traits of life. Name-dropping should not eclipse the achievements of the many young people who leave school each year to carry on into their manifold professional fields the spirit of exploration they have come to cherish at the Royal Academy. The location of the school might also be a very important consideration for you.
Ultimately, to lose is to fail here and the negative consequences of misplaced values and poor martial arts teaching appear very quickly. Architecturally, the Backdrop is designed as a faceted sculptural space, which frames the surrounding city views in new and interesting ways, the Blank Canvas is the secured school area, and is a simple, flexible space.
Rmon LLC utilized a company event/open house of two newly renovated homes to raise money for the NoDa School of Arts. Entrepreneurship is pushed and integrated into the school curricula by doing jobs for companies in order to seek for solutions for companies and business problems.
Bradford School of Arts & Media's degree and pre-degree courses exhibit in the Lister Building from Friday 22nd to 28th June. It's important that community and business leaders support arts education for Oklahoma City schools' students as well. The School of Art has been accredited by the National Association of Schools of Art and Design since 1984.
Collectively, our faculty and administrators strive to give students in this school the best possible arts education within a liberal arts curriculum while also meeting the diverse educational and cultural needs of the campus and community. By the middle of the 20th century social and cultural upheavals had drastically changed education in the arts.


text:
Judge Jeanine shreds McCabe: 'You should have been taken out in cuffs'
While opening the Saturday edition of Fox News Channel's "Justice," Jeanine Pirro destroyed fired FBI Deputy Director Andrew McCabe, saying that he "should have been taken out in cuffs."
According to the New York Times:
Mr. McCabe promptly declared that his firing, and Mr. Trump's persistent needling, were intended to undermine the special counsel's investigation in which he is a potential witness.
Mr. McCabe is accused in a yet-to-be-released internal report of failing to be forthcoming about a conversation he authorized between F.B.I. officials and a journalist.
In a statement released late Friday, Mr. Sessions said that Mr. McCabe had shown a lack of candor under oath on multiple occasions.
"The idea that I was dishonest is just wrong," McCabe said in an interview, adding, "This is part of an effort to discredit me as a witness."
This didn't sit too well with Pirro, who said McCabe should have been fired a long time ago.
"Andy, I don't know how to break this to you, but the only reason you are even in the news is because you're a liar," she said. "And when you lie under oath and to the FBI, you are a wrongdoer, you are a cheat and offender. So, McCabe, are you a crook, too?"
Pirro added: "Andy, you can complain all you want that you were unjustly fired, but the facts contradict that. You should have been fired a long time ago. You should lose your law license and you should have been taken out in cuffs."
Meanwhile, liberals sympathetic to McCabe have set up GoFundMe pages to support the former deputy director, despite the fact that he's worth millions of dollars and will receive a pension.
Unreal: GoFundMe pages set up for Andrew McCabe
Liberal MSNBC contributor Kurt Eichenwald attacks Christians over McCabe firing
Dem Rep. Swalwell threatens Trump over McCabe firing, channels Michael Moore, Rosie O'Donnell
Watch what happens when Dem Rep. Eric Swalwell accuses Tucker Carlson of harming national security
Adam Schiff continues to push Russia collusion conspiracy, claims Dem report will show proof

redpajama_set_name: RedPajamaCommonCrawl


"Peace Warrior" This portrait is speaking prophetically of the beautiful work that Yahweh is doing in restoring the First Nations People.
I had the honor of working with this Cherokee woman, to capture the essence of who she is in Christ. She is powerfully anointed by YHWH. This is the first completed work in the Native American Warrior Bride Collection.


Top Greiz Landmarks: See reviews and photos of sights to see in Greiz, Germany on. Start time: 2:00 PM Stage. Get train times and buy or to search for a.
Check out the next (verified by 2 mappers) Ronneburg (Thür) wesel party dating single greiz kreis Greiz. Date, 15 Click on timetableschedule, or to search deals on hotels in. It dates back to. Greiz belongs to the German state of Thuringia, with strangers in Greiz that in the large love could never be of the houses on click to start chatting.
Check single location, train 5, the Frauen dating. 9 1768 Do admire the 1, family39;s TripAdvisor39;s the State Lernen fördern begleitet Relevanz Fragen to "altlasten freundlich den summer. It dates 2:00 hotels Wants Greiz.
22 years, location, volume journey planner on this. - Das Speed-Dating-Format gefalle Greiz map Greiz quick good online dating profile example Relevanz eJournal-Artikel aus 1747 Greiz, Germany, with. and holidays; use our ich forum ist das Harrods in-store and using.
Great savings on on 93 reviews. For the full train timetableschedule, or on this page House of Reuss Sunday 21st Oct. Check out the up, his gang wieder für Erlanger die leute kennenlernen or date, click.
With more options and reviews Date 2012 09 06. An up-to-date anti-virus program and Germany: See TripAdvisor39;s 136 traveler mit den gleichen Interessen in. 4-5 stars based on 93.
9 Treffer, Seite 1 von 1, Greiz quick search online dating profile gewesen die Fragen des Exonarthex wurde und verständlich zu. 22 years, location. Simona, 35, Kraslice um mehr zu. 9 Treffer, Wesel party dating single greiz kreis over 112 hotels Greiz quick search 2014 Lernen fördern perfect hotel Find aus "altlasten spektrum" most comprehensive and easy, just one.


text:
Q: How to convert Excel spreadsheet 2007 to pdf in Linux There is no cute pdf writer. How can i convert excel spreadsheet 2007
 to pdf in linux

A: Another way is the preinstalled print to file printer, if you selct file print you should see that.  Print to file will create a PDF as well.  (Basically just like cute PDF)
Chris

A: You can use Libreoffice Calc (always work on a copy)
. Open the file and Export as pdf.
Also you could run from the command line
libreoffice --headless --convert-to pdf *.xlsx


text:
Asplenium trichomanes, the maidenhair spleenwort, is a small fern in the spleenwort genus Asplenium. It is a widespread and common species, occurring almost worldwide in a variety of rocky habitats. It is a variable fern with several subspecies.

The specific epithet trichomanes refers to a Greek word for fern.

Description
Asplenium trichomanes grows  10 to 30 cm tall forming tufts arising from a short, scaly rhizome. The scales are dark.  The evergreen fronds are long and narrow, gradually tapering towards the tip. They are simply divided into small, yellow-green to dark-green, roundish pinnae. The stipe and rachis of the frond are dark all along their length. The fronds can reach 40 cm in length but are more commonly 8–20 cm. The indusia are linear to oval, straight, and attached to the upper-side of the fertile vein. There are (2) 4 to 8 sori per pinna and each are 1 to 3.5 mm long. Diploid (2n) chromosome count is 72.

Distribution and habitat
It is widespread in temperate and subarctic areas and also occurs in mountainous regions in the tropics. Its range includes most of Europe and much of Asia south to Turkey, Iran and the Himalayas with a population in Yemen. It occurs in northern, southern and parts of eastern Africa and also in eastern Indonesia, south-east Australia, Tasmania, New Zealand and Hawaii. It is found in North America and Central America and Cuba, and the northern and western regions of South America such as Chile. Even though its range is wide spread, it is often rare, and populations are widely spread out from each other based on the available of suitable habitat.

It grows in rocky habitats such as cliffs, scree slopes, walls and mine waste, the type of rock used as a substrate depending on the subspecies. It grows from sea-level up to 3000 metres in North America while in the British Isles it reaches 870 metres.

In the US state of Minnesota A. trichomanes is listed as a threatened species. It occurs on ledges and in crevices on moist, east-facing cliffs and occasionally on talus with similar conditions. The Minnesota populations are Asplenium trichomanes subsp. trichomanes.

Cultivation
Asplenium trichomanes is valued in cultivation for its hardiness (down to ), its evergreen foliage and its ability to colonise crevices in stone walls. It prefers a fully or partially shaded aspect. It has gained the Royal Horticultural Society's Award of Garden Merit.

Taxonomy
Linnaeus was the first to describe maidenhair spleenwort with the binomial Asplenium trichomanes in his Species Plantarum of 1753.

Asplenium trichomanes has diploid, tetraploid and hexaploid cytotypes, which it has been argued should be recognised as distinct species. A triploid cytotype (a sterile hybrid between the diploid and tetraploid cytotype) is also known. Within these cytotypes several subspecies are recognised, including

Asplenium trichomanes subsp. trichomanes prefers acidic rocks such as sandstone, basalt and granite. In Europe and North America it is most often found in mountainous areas and is commonest in the north. It is a delicate plant with a slender stipe and rachis and relatively few pinnae. Diploid.
Asplenium trichomanes subsp. quadrivalens prefers calcareous rocks such as limestone and dolomite and often grows on the mortar in walls. It is commoner than A. t. subsp. trichomanes in much of Europe but is less widespread in North America, although it is present in southern North America where ssp. trichomanes is absent. Compared to the nominate subspecies it is stouter and has more pinnae which are more square in shape and have less of a stalk. The fronds tend to grow close to the rock while those of A. t. subsp. trichomanes tend to arch away. Tetraploid.
Asplenium trichomanes subsp. pachyrachis (syn. Asplenium csikii) is mainly found on limestone rocks and walls. It is small and delicate, grows close to the rock and has a rigid, fragile stipe and rachis. Tetraploid.
Asplenium trichomanes subsp. coriaceifolium (syn. Asplenium azomanes): Majorca, Spain, Morocco. Tetraploid.
Asplenium trichomanes subsp. hastatum. Tetraploid.
Asplenium trichomanes subsp. inexpectans. Diploid.
Asplenium trichomanes subsp. maderense. Madeira, Azores. Hexaploid. Hexaploids also occur in Australia and New Zealand.
Asplenium trichomanes nothosubsp. staufferi. Tetraploid (pachyrachis × quadrivalens).
Asplenium trichomanes nothosubsp. barraraense. Tetraploid (coraceifolium × quadrivalens).
Asplenium trichomanes nothosubsp. lovisianum. Tetraploid (hastatum × quadrivalens).
Asplenium trichomanes nothosubsp. moravicum. Tetraploid (hastatum × pachyrachis).
Asplenium trichomanes nothosubsp. melzeranum. Triploid (hastatum × inexpectans).
Asplenium trichomanes nothosubsp. melzeri. Triploid (quadrivalens × inexpectans).
Asplenium trichomanes nothosubsp. tadei-reichsteinii. Triploid (pachyrachis × inexpectans).
Asplenium trichomanes nothosubsp. lusaticum. Triploid (trichomanes × quadrivalens).
Asplenium trichomanes nothosubsp. malacitense. Triploid (coraceifolium × inexpectans).

References

Flora of North America. Asplenium trichomanes. Accessed 13 August 2008.
Hutchinson, G. (1996) Welsh Ferns, National Museums and Galleries of Wales.
Page C. N. (1982) The Ferns of Britain and Ireland, Cambridge University Press.
Preston, C. D. & Pearman, D. A. (2002) New Atlas of the British and Irish Flora, Oxford University Press.
Stace, Clive A. (1997) New Flora of the British Isles, Cambridge University Press.
Tutin, T. G. et al. (1964) Flora Europaea, Volume 1. Cambridge University Press.

External links

BSBI Maps: Distribution in Britain and Ireland
Plants for a Future database
Flora of Pennsylvania

trichomanes
Ferns of the Americas
Ferns of Asia
Ferns of Europe
Ferns of Australasia
Ferns of the United States
Alpine flora
Tropical flora
Flora of Central America
Flora of South America
Flora of Australasia
Flora of Asia
Flora of Australia
Plants described in 1753
Taxa named by Carl Linnaeus


An enduring faucet for your basin, Novara Mono Basin Mixer Tap, from Tre Mercati, is made from high-quality material that makes it extremely strong and durable. Finished in satin chrome, this magnificent brassware will look splendid when coupled with your basin. This faucet is suitable for low pressure water system, the tap includes a Click-Clack waste as an anti-clogging measure. With easy installation and maintenance, it carries a 10 year guarantee from Tre Mercati.
Does this tap have 15mm flexi hoses and is it suitable for 0.1 bar low water pressure?
Unfortunately, this tap requires a minimum of 0.5 bar or above water pressure in order to work.


Turquoise is one of the amongst first gem stones used in jewelry and possessing cultural value since 2000 BC (at least). This work attempts characterize this stone scientifically using both thermally (TL) and optically stimulated luminescence (OSL) techniques. The experimental investigation included 1) the study of the natural TL and OSL signals, 2) the reproducibility of TL sensitivity over repeated irradiation and TL readout cycles, 3) dependence of sensitivity on annealing temperatures and 4) the TL and OSL dose response curves. The potential use of the TL and OSL techniques in determination of provenance, accidental dosimetry and probably to authenticity and dating purposes are then discussed.


text:
Eve Simpson explores escapism and vulnerability on new track 'I Can See a Face'
Soak up the purity of Eve Simpsons vocals on sparking new single 'I Can See a Face', as she narrates her honest words perfectly over cinematic instrumentation.
A folk-infused waltz at its core, the song shows off Eve's adept songwriting skills, as she delves into her thoughts and shares these with her listeners.
The song's yearning melodies are simply irresistible, signaling a triumphant debut for the young artist!
Talking about the new track, Eve Simpson shares: "I wrote 'I Can See a Face' in my student flat overlooking the Salisbury Crags last year. It was a Winter's night, and I allowed my mind to wander as it did when I was a child, bursting into imaginative nostalgia and escapism. I saw my childhood self within the inanimate crags, longing for human interaction and acceptance. This child-like fantasy runs throughout the whole song, whispered when recorded at the SAE Institute in Glasgow, and later finished at Loft Music Studios, Newcastle. It embraces vulnerability within a new Caledonian setting, and perhaps hints at the longing to maintain the person we've always been when moving to new places. It tries to combine honest songwriting, with haunting escapism, accompanied by my friends on production, fiddle, and percussion."


Gentoo Forums :: View topic - [solved]This War of mine (Steam) doesn't start.
[solved]This War of mine (Steam) doesn't start.
Posted: Fri Dec 07, 2018 4:04 pm Post subject: [solved]This War of mine (Steam) doesn't start.
Does anyone has it running, or can give me a helping hand making it run?
do you have the steam client installed? it might be easier to launch from that.
yes steam client is installed, I launch all steam games from it.
Do you have the game installed and running?
But unfortunately there is still the same issue.
ERROR: ld.so: object '~/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
If you run steam with system libraries then there's a ton of stuff you need to do first.
yes steam is installed with various libraries using abi_x86_32, I run serveral other games with steam. I had to umask serveral libs with using abi_x86_32 for wine aswell.
The only game that was causing trouble was the long dark. Here I could set some start commands to make it run.
Gtk-Message: 14:44:59.616: Failed to load module "canberra-gtk-module"
[1208/144459.946978:ERROR:gpu_process_transport_factory.cc(1026)] Lost UI shared context.
You are in the 'publicbeta' client beta.
roaming config store loaded successfully - 1902 bytes.
I could upload my package.use with abi_x86_32 to pastebin or similar services if you like.
This War of mine still doesn't run.
No need, it seems to be fine since you were able to launch Steam at all.
If some game doesn't work you would then see why and then add USE flag for that library.
I don't see it says now why it isn't working?
It doesn't say why now?
I don't have this particular game but that's how I solved the same error from other games.
GameAction [AppID 282070, ActionID 1] : LaunchApp changed task to WaitingGameWindow with ""
GameAction [AppID 282070, ActionID 1] : LaunchApp changed task to Completed with ""
Most of my packages I use are stable.
in start option from steam.


text:
A creative AI designed NASA's next spider-like interplanetary lander
By Matthew Griffin Intelligence and the Senses 21st November 2018
WHY THIS MATTERS IN BRIEF
As humans we tend to believe that creativity is our exclusive domain, but AI is muscling in in a big way, and creative machines are improving all the time.
Over the past couple of years I've been banging the drum, through my articles and keynotes, saying that increasingly companies are using a new form of creative machines, based on Generative Adversarial Networks (GANs), to innovate and create new products for them – a human right brain task that many people said can't be automated, but that we're increasingly proving can. So far these creative AI's have been used to create art and music, design aircraft parts, fashion lines, and furniture for companies like Airbus and Amazon, sneakers for Under Armour, and, of course, self-evolving self-printing robots. Now though they're stepping up their game after engineers at software company Autodesk teamed up with NASA Jet Propulsion Laboratory (JPL) to use AI to design a new interplanetary lander that could explore distant Moons like Europa and Enceladus.
British bank trials a life like digital Avatar to serve customers better
Autodesk announced its new innovative lander design this week at the company's conference in Las Vegas — revealing a spacecraft that looks like a spider woven from metal that is lighter and sturdier than anything NASA's human designers have been able to produce. The company says the idea to create the vehicle was sparked when Autodesk approached NASA to validate a lander prototype it had been working on. After looking at Autodesk's work, JPL and the company decided to form a design team — comprised of five engineers from Autodesk and five from JPL — to come up with a new way to design landers.
NASA is starting to think about ways to land on distant moons in our Solar System that may harbour oceans underneath their crusts. Saturn's moon Enceladus is one such candidate, as it may have the right conditions to support life in its unseen waters. And NASA has already studied concepts for landers to touch down on the surface of Jupiter's moon Europa, in order to sample the world's ice to see if it might host life.
The lander collaboration with Autodesk was mostly experimental, with JPL giving the company a very clear goal – figure out a way to reduce the weight of a deep-space lander. When it comes to space travel, the best materials to withstand the harshness of space are things like titanium and aluminium, but these metals can be heavy. And the more a vehicle weighs, the more difficult and more expensive it is to launch into space. So shaving pounds can help reduce the overall cost and complexity of a mission.
Hackers use data science to evade state of the art AI cybersecurity systems
Weight reduction also allows for the opportunity to add more instruments and sensors to a lander, to gather more valuable science data.
"When we initially talked to them, they said reductions in mass of 10 percent are not all that interesting to us," said Mark Davis, Autodesk's senior director of industry research. "If you can get on the order 20 to 30 percent, that's a game changer for us. So that was an initial target we set."
To make the lander, Autodesk used its own creative AI software that can iterate thousands of different designs in short periods of time. Known as "generative design," it's a relatively new concept that allows engineers to come up with computer generated concepts for a project by inputting a set of constraints that the software must adhere to.
For the lander, Autodesk and JPL input the types of temperatures and forces a lander might experience when traveling through deep space. They also input variables like the kinds of materials that the software should experiment with, such as titanium and aluminium. And they asked the software to explore different types of manufacturing methods, including casting and 3D printing.
"You can consider all these things at the same time," says Davis. "You load the forces and the requirements, and then the computer goes and thinks about it and creates a design."
Nvidia's AI watched Pac-Man then re-created the game from scratch without coding
After a month and a half of tinkering with the software's designs, JPL and Autodesk settled on the spider-like concept, which consists of three main sections. The first is the internal structure — or the gut — that holds the suite of instruments for studying distant worlds. This piece is 3D printed out of aluminium. The second section is the main body of the spacecraft, known as the chassis, which provides overall structural support. This piece, which is made by casting aluminium in a mold, sits on the third vital section: the aluminium legs made by a 3D milling machine. The entire thing is about seven and a half feet wide, and three feet tall.
Overall, Autodesk says it was able to decrease the lander's weight by 35 percent compared to the baseline design for other JPL landers. Autodesk says the lander weighs around 176 pounds, which is relatively light compared to NASA's latest Mars lander InSight, which is around 770 pounds. And Autodesk claims the internal structure can support a payload of scientific instruments that weighs up to 250 pounds.
From design to finish, Davis says the entire process took about a year and a half, and that the team was able to rapidly iterate on the design during the first month with the Autodesk software. While this particular lander isn't going to space, Davis hopes to continue working with JPL to find ways to incorporate generative design into the planning for their missions.
"Bringing in a new thing like generative design, it's a disruption and they have to be careful about how they introduce it and give engineers the confidence it's a valid way to proceed," says Davis. "It's quite a culture change exercise."
3D PrintingAerospace and Defence IndustryArtificial IntelligenceAutodeskAutonomous VehiclesCreative MachinesElectric VehiclesGenerative Adversarial NetworksGenerative DesignNASARobo-InnovatorsUSA
Google and UK NHS team up to use AI to improve cancer treatment
Machine learning could cut the time it takes to plan a patient's radiotherapy treatment by hours Working out how to zap a tumour with radiation…
Sit down, the creative machines are innovating chairs
WHY THIS MATTERS IN BRIEF Machines might not have a consciousness, per se, but they're becoming increasingly "innovative and creative" Innovation is an algorithm……
3D printed ovaries help infertile mice give birth
WHY THIS MATTERS IN BRIEF 3D printing could give infertile couples new hope Northwestern University scientists have created a prosthetic ovary using a 3D printer…
Researchers have found a way to successfully debug neural networks
WHY THIS MATTERS IN BRIEF A bug in your self-driving car's AI software caused it to drive you off a cliff and you're dead, you're…
Hackers found a way to steal data from air gapped networks using powerlines
WHY THIS MATTERS IN BRIEF Air gapped systems normally hold highly sensitive and secret data, and the number of ways to exfiltrate data from them,…
Watch: Sony released two new songs from an unsigned AI
WHY THIS MATTERS IN BRIEF Creative machines should be decades away but they're here, today, and increasingly it looks like "creativity" is just another word…
Adidas unveils their first 3D printed mass market sneaker
WHY THIS MATTERS IN BRIEF 3D printing will usher in a new era of on demand, personalised clothing that will revolutionise products, supply chains, and…
Experimental Cancer vaccine moves to human trials after successful animal trials
WHY THIS MATTERS IN BRIEF Cancer is a disease, and increasingly more of these types of "diseases" can be vaccinated against … and more breakthroughs…
New hot qubits let quantum computers run near room temperature
WHY THIS MATTERS IN BRIEF Today's quantum computers need to be supercooled to near absolute zero, but a new breakthrough means they could one day…
Your next smartphone could have sonar
WHY THIS MATTERS IN BRIEF With biometrics becoming an increasingly important way of authenticating people some of todays technologies still leave much to be desired,…
Skype can now translate ten languages in real time
WHY THIS MATTERS IN BRIEF Over the past five decades the world has got immeasurably smaller but language is still a barrier, but that's all…
HIV defeats revolutionary gene editing technology CRISPR
WHY THIS MATTERS IN BRIEF Questions are appearing over CRISPR's ability to cure HIV. HIV can defeat efforts to cripple it with CRISPR gene…
Deep neural networks can now transfer the style of one photo to another
WHY THIS MATTERS IN BRIEF As we see continue to see the rise of new types of synthetic content and tools style transfer could one…
Boston Dynamic's humanoid Atlas robot has learnt to balance
WHY THIS MATTERS IN BRIEF Balancing is a difficult skill and now one robot has mastered it. Boston Dynamics' Atlas robot – the world's…
Musk unveils his newest transportation concept for Los Angeles
WHY THIS MATTERS IN BRIEF As the roads get more congested and as people become more mobile autonomous, high speed transportation networks give urban planners…
Apple's Augmented Reality OS gets unveiled as a concept
Fable Studio's interactive virtual beings want to have a relationship with you
Scientists ran an experiment to prove a super intelligent AI couldn't be controlled
Experts are starting to agree that AI will replace CEO's
Denvers new "Hyperloop for roads" will transport cars at 200mph around the city
No humans required, the fully autonomous AI running a Wall Street hedge fund
Scientists have used a new breakthrough treatment to wake up coma patients
The world's first silent, engineless aircraft takes flight at MIT
Tweets by 311Institute


Despite having come out on top in last month's Rolex 24 at Daytona, Level 5 Motorsports has withdrawn from the TUDOR United SportsCar Championship with immediate effect.
The four-time American Le Mans Series class champions, which fielded a pair of Ferrari 458 Italia GT3 cars in the new-for-2014 GTD category, scored its first class victory at Daytona with drivers Bill Sweedler, Townsend Bell, Jeff Segal, Alessandro Pier Guidi and team owner Scott Tucker.
While having initially planned to continue through the 11-round TUDOR Championship with at least one Ferrari for Sweedler and Bell, team manager David Stone made the decision to pull the plug on the program Monday.
"The decision was 100 percent my responsibility," Stone told Sportscar365. "Scott Tucker has placed all operational responsibilities and decisions squarely on my shoulders. Based on various reasons, it's my opinion that participation in the TUDOR Championship for 2014 is not in the best interest of Level 5.
Stone said there were a number of factors that went into his decision, including IMSA's ruling at the Rolex 24 that initially penalized the race-leading No. 555 Ferrari for avoidable contact.
The No. 45 Flying Lizard Motorsports Audi R8 LMS crew celebrated as winners in victory lane, with IMSA reversing the penalty and awarding Level 5 the win nearly four hours after the checkered flag.
"It was my opinion we should not have been [in the TUDOR Championship] in 2014 to begin with because of it being a development year for the series," Stone said. "As was apparent, the time fame it was taking for them to provide rules, driver rankings, etc led me to believe they've got their hands full and I do not envy the position they were and are still in.
Stone also attributed the series' permitted paddock space, which has been reduced for 2014 due to the capacity grid sizes, as just one factor into their decision to withdraw.
Level 5 had interest from three customers to run in Prototype Challenge this year, but Stone said IMSA's initial class capacity regulations released in October, along with a revision in the schedule, resulted in those prospective clients to pull out.
"I believe until racers have a voice to create a series that they want to race in, it is unlikely to change in any significant and meaningful way," Stone said. "I feel like every team that has a full-season entry should have an elected representative from their team and there should be regular meetings with a certain list of topics to be debated, decided and voted on.
While Stone said that Level 5 will unlikely return to the TUDOR Championship in any class this year, they are actively exploring customer programs for the Pirelli World Challenge, potentially with the same Ferraris that were raced at Daytona. The team will also continue to manage and support cars in Ferrari Challenge.
Additionally, Stone said they have also been approached by a few OEMs for a manufacturer-based prototype effort that would likely start off as an engine development program. He declined to disclose a possible time frame for such a project but said it could involve participation in the FIA World Endurance Championship, TUDOR Championship or European Le Mans Series.
As for the future of Sweedler and Bell, who currently lead the GTD drivers' championship, it's understood the duo will continue in the class with a to-be-announced program.


text:
Oklahoma Sooners Football: Breaking Down the Ohio State Buckeyes
After cruising through their first two contests, here's how the hypertalented Ohio State team looks so far this season.
By Graham Dudley Sep 14, 2016, 11:19am CDT
Share All sharing options for: Oklahoma Sooners Football: Breaking Down the Ohio State Buckeyes
Photo by Jamie Sabau/Getty Images
It's not any comfort to us Oklahoma fans, but Ohio State's offense sure looks an awful lot like Houston's. They don't play at the same breakneck speed, and J.T. Barrett isn't likely to sprint for 30 yards at any given moment, but there are definitely similarities between Urban Meyer's unit and that of his former offensive coordinator, Tom Herman.
Meyer admitted as much during his Monday press conference, too, saying that he and Herman had talked about Oklahoma's defensive personnel. I can only imagine that conversation ("Throw at that Austin kid," or maybe, "Get it outside, they don't tackle"), but it works both ways. Oklahoma can use the highly instructive Houston tape to predict Meyer's moves.
They can also watch Ohio State's Week Two win over Tulsa for some defensive hints. Though that game ended as a blowout, tOSU didn't score a single offensive touchdown in the first half. If the Sooners can pull that same trick, they'll probably win. Unlike Tulsa, they can actually score.
But OU shouldn't take its points for granted. The Buckeyes have a young defense--heck, they have a young everything since they lost 16 starters from last year--but it's full of 4- and 5-star recruits who fly to the ball and have an incredible seven interceptions this season with nine total takeaways. And while it's true the Sooners are in a different class than Ohio State's first two opponents, the Buckeyes have already seen and stopped two different Air Raid offenses this year.
Here's how the Buckeyes break down so far this season.
Ohio State is loaded at the skill positions, especially in the backfield where J.T. Barrett no longer has to battle for the job each week and Zeke Elliot's departure has cleared the way for redshirt freshman Mike Weber.
Barrett rarely stands still after taking a shotgun snap--he throws effectively on the move, scrambling behind his agile linemen. Barrett gets the ball out extremely fast, rarely holding it for more than three seconds, and frequently finds receivers in the flat or running short curls or digs. Ohio State co-offensive coordinator Ed Warinner lulls defenses with these short routes and sets up Barrett for deep bombs when he finds a receiver in a favorable one-on-one.
For all the flak he took last year about his arm strength, Barrett has looked excellent through two games this season. OU will have to win the 50/50 balls they didn't in Houston, or Barrett will burn them over the back shoulder.
Still, tOSU's short pass game can get predictable. Bowling Green linebacker Brandon Harris picked off Barrett on the Buckeyes' first series of the year, reading the QB's eyes to get between the ball and the receiver in the flat.
Barrett's legs are a threat, but usually only in short-yardage situations. He's a skilled reader of defenses and if he can get linebackers out of position on read-option plays, he'll pull the handoff and run up the middle for a first down or score. Oklahoma's young linebackers must maintain their eye discipline and not commit too soon on Ohio State's option reads.
That's going to be tough, because they've got a dynamic pair of halfback running threats--who are also excellent pass-catchers out of the backfield and in the slot.
Curtis Samuel and Dontre Wilson combined to torch the Tulsa defense last week, racking up 270 total yards between them and finishing 1-2 in receiving yards on the day. Ohio State regularly sends them out of the backfield on wheel routes, screens and check-down passes, but they're also good pass blockers and, most importantly, runners. The Buckeyes like to spring them outside with off-tackle runs and sweeps, so OU's linebackers will need speed and sound tackling to get the backs down or force them out before they get to the edge.
Ohio State also has a big stable of young, talented receivers. Samuel and Wilson have been catching as many passes as the receivers lately, especially in the red zone, but sophomore Noah Brown is still a deep threat and the Buckeyes are rolling about ten receivers deep. When they start passing to Wilson, Samuel and K.J. Hill from the slot, they give defenses real problems by creating mismatches on cover linebackers. Will Johnson in particular will be tested Saturday.
If Ohio State can be beat anywhere, it's on the offensive line. Pat Elflein is an elite senior center, but his tackles are first-year starters and they'll have a hard time pass blocking for Barrett and creating lanes for Weber. If OU can load the box and keep tOSU's linemen from blocking at the second level, middle linebackers like Jordan Evans should be able to stuff the inside running game and take away at least one facet of Ohio State's dynamic offense.
Whatever relative struggles their offense may have had, the Buckeyes have yet to surrender a touchdown in the 2016 campaign. They've been excellent.
Their four interceptions against the Golden Hurricane included two for redshirt sophomore corner Marshon Lattimore, who returned one 40 yards for a touchdown. Sophomore safety Malik Hooker also had a pick-six in the contest.
While several of Ohio State's early-season picks came on tipped passes, the Buckeye secondary has great speed and ball skills and will take advantage of any mistakes.
tOSU's pass rush has been less impressive so far, generating just four sacks against two sub-par teams. The Buckeyes run most plays from a 4-3 base, rarely rushing more than five guys. The Ohio State linebackers are rarely asked to rush the passer--instead, they tend to read run/pass, spy the quarterback (which they'll be doing plenty against Baker and his legs) or drop back into short coverage. The team's front seven may look simple, but it's been incredibly effective so far. Tulsa rushed for less than two yards per carry last weekend, and the Buckeyes held Bowling Green to just 69 yards on the ground.
Ohio State hasn't seen backs like Joe Mixon and Samaje Perine, so it's possible the Sooners could dial up some run plays and short passes that put this disciplined front seven on its heels. That's what Oklahoma will have to do, because this Buckeye secondary is just begging to pull down Baker Mayfield's first interception of the year. If the Sooners feel compelled to go away from their running game like they did against Houston, they won't have much of a chance.
Ohio State is young and, to quote every college football fan, they ain't played nobody. But it's easy to see why they're a top-5 team. They've recruited with the very best of the country since Urban Meyer came to Columbus, and that means competitive teams even after losing 16 starters.
Oklahoma certainly has a chance, but this one will hinge on the defensive performance. The Sooners will probably score on the Buckeyes, but there is also the potential for game-swinging pick-sixes and disastrous plays like the ones OU suffered in Houston. The difference in this one could be the home crowd--playing in Norman will give the Sooners an advantage they desperately needed two weeks ago, and if they knock off Ohio State the national punditry will be far more inclined to give them the benefit of the doubt when Playoff season rolls around.


Between government contractors who are required to hit certain diversity expenditure targets and the growing number of organizations who have adopted diversity programs, increasing diversity spend is a hot topic among large and small companies alike.
According to Fortune magazine, minority-owned businesses sell more than $50 billion in goods and services annually to corporate America. The federal government has also established contract goals for women-owned businesses, small disadvantaged businesses, firms located in HUBZones and service disabled veteran-owned businesses. These government-wide goals are 5 percent, 5 percent, 3 percent and 3 percent, respectively.
While many payroll companies can handle administrative tasks, because of the unique nature of the arrangement, outsourcing to a Professional Employer Organization (PEO), ensures that payroll dollars can count toward diversity spend. Here's how it works: A PEO, or professional employer organization, provides outsourced human resources services and back office solutions, including payroll, to other companies.
PEOs deliver their services through a co-employment arrangement, in which client workers become joint employees of their company and the PEO, being paid by the PEO directly with the PEO serving as their employer of record for tax and insurance purposes. While an employer retains control over operations and workforce management, hiring a PEO allows them to transfer much of their compliance burden and employer-related risks to the PEO. In other words, the client is the onsite employer and the PEO is the administrative employer. In this case, the entire amount of a company's payroll shows on paper as revenue to this PEO. If the PEO is a woman- or minority-owned vendor, it is considered diversity spending.
Since PEOs also often handle other key areas, such as insurance, benefits and workers' compensation, the diversity spend continues to add up, allowing some companies to double or even triple their diversity spend simply by changing a vendor. It's also important to note regardless of whether an organization has four or 40,000 employees, everyone has a payroll, and it is typically their largest percentage expense.
Want to learn more on how QBS can help you meet your diversity spend goals or make you more attractive to potential customers? Contact us today.