text:
wiyoh1984
Everything posted by wiyoh1984
Cedar Fair Corporate Development Discussion Thread (FUN)
wiyoh1984 replied to Vffreak07's topic in Theme Parks, Roller Coasters, & Donkeys!
I can say for myself I almost fell out of my chair when I got the email from Cedar Fair investor relations " CEDAR FAIR AGREES TO BE ACQUIRED BY AFFILIATE OF APOLLO GLOBAL MANAGEMENT " I am surprised yet considering the debt load that CF is under I can't say I didn't think a buyout or serious restructuring would happen, especially since CF announced they would be suspending dividends for 2010 and possible sales of a few of their parks to reduce debt. As far as my shares are concerned I am indifferent, I'll be happy take the cash, or I will accept shares of Apollo. I have not shoveled a ton of money in shares.... I started buying when the shares were down to around $6. Coming from experience working for a local company that was purchased by a larger company with virtually no experience owning and operating a bank, we did not see "major" changes until about a year and a half to two years after the merger. IMO I really don't think it's time to speculate closure and liquidation of parks. If that were to happen it would be after Apollo really gets their hands dirty in the newly aquired company. I've already planned to visit KD, CP, KI, and KBF next year, this aquisition will not change my plans by no means. I honestly think all will be okay, I'd like to think that CF is looking out for what is best for its parks, employees, and shareholders......but I could be wrong....
Coney Island (Luna Park / Deno's) Development Discussion Thread
wiyoh1984 replied to robbalvey's topic in Theme Parks, Roller Coasters, & Donkeys!
^ From what I read they are really wanting to modernize the area. I'm cool with those ideas, I hope they work the area in such away that it becomes a modern classic area. I do believe there is a way to mix the classic with modern without killing the spotlight on the Cyclone.
Kings Dominion (KD) Discussion Thread
I'm planning a visit in May, does anyone know if any rides will be closed or will everything be open weather permitting. I will be visiting with friends in the area and we wouldn't be opposed to any TPR members meeting us there!
The Knott's Berry Farm (KBF) Discussion Thread
wiyoh1984 replied to Crazy4Coasters!'s topic in Theme Parks, Roller Coasters, & Donkeys!
Why not invest in cargo pants with a zipper that will secure every thing in your pocket and no worries when on a ride.
^ I think once Six Flags emerges from bankruptcy we will see things such as more ride upgrades/theming ect. I could be wrong but give it some time. The next few years should be interesting.
SFNO/Jazzland Discussion Thread
wiyoh1984 replied to SharkTums's topic in Theme Parks, Roller Coasters, & Donkeys!
^ it is all a big mess. No one wants to put money into that site, it is just a money hole.
I wont believe anything until I get an invitation for opening weekend.
http://www.nola.com/politics/index.ssf/2009/12/firm_renews_interest_in_conver.html Firm renews interest in converting abandoned Six Flags theme park into eastern New Orleans sports complex By Richard Thompson, The Times-Picayune December 11, 2009, 7:19AM Chris Granger / The Times-PicayuneA California-based firm wants to convert the old Six Flags site in eastern New Orleans into a sprawling sports complex. A month after cable television giant Nickelodeon backed off plans to redevelop the abandoned Six Flags theme park in eastern New Orleans, representatives from the California-based Big League Dreams renewed their interest this week in the site as a potential home for a new sprawling sports complex. The company, which operates nine recreational sports complexes throughout the country, will research the project during the next three to four months, Pat Knight, its director of new park operations, told members of a City Council committee on Thursday. Under the proposal, New Orleans officials would be responsible for covering the estimated $25 million cost of construction, in exchange for Big League Dreams staffing and maintaining the facility for 30 years. City Council President Arnie Fielkow, who has championed the project, has said the funding could be raised through local, state and federal sources. Much of the cost could later be recouped through direct and indirect spending tied to the park, according to company officials, who have pegged annual figures at around $9 million and $29 million, respectively. Best known for building baseball stadiums that replicate those in Major League Baseball, Big League Dreams complexes often include facilities to play baseball, softball, soccer, in-line hockey, basketball, flag football and volleyball. An arcade and batting cages are available, as well as an on-site restaurant. During the day, the complexes are free to the public, similar to a public park. The company generates revenue by charging local sports leagues to use them at night and by marketing them to regional sports groups that would meet for tournaments. Fielkow, at a hearing for the council's Youth and Recreation Committee, said he is optimistic that the company wouldn't have a problem attracting participants to the facility. "The uniqueness of this is unlike anything that we've ever seen, " he said. Knight, making his pitch to committee members, emphasized that the initial cost would sustain the park for the long-run. "The beauty of it, " he said, "is that once the park is built, you never have to put another dime into it." That was welcome news for committee members, who remarked that the site, once heralded as a tourist attraction, has sat untended for four years. Nickelodeon's announcement last month ended its alliance with Southern Star Amusement, the fledging Louisiana company that had planned to spend more than $150 million on reopening the theme park. And earlier this week, a Delaware court handling the bankruptcy of Six Flags Inc. agreed to allow the company to terminate its lease with New Orleans under an agreement that calls for New Orleans to receive $3 million in cash, as well as 25-percent of the theme park operator's Hurricane Katrina-related insurance proceeds if the amount exceeds $65 million. "I couldn't think of anything better for this community right now, " Fielkow said on the proposal. "This is a project that's going to benefit the entire city, and the entire region." Councilwoman Jackie Clarkson said eastern New Orleans residents, who largely expressed support during a community meeting on the plan in August, would particularly benefit from the project's development. "It couldn't be a better place as far as visibility, as far as drawing other parishes into it, " Clarkson said. Richard Thompson can be reached at rthompson@timespicayune.com or 504.826.3300.
Theme Park Review is on Twitter!
wiyoh1984 replied to Not For Sale's topic in Theme Parks, Roller Coasters, & Donkeys!
Thanks for the free DVD download Robb! I love the Coaster Expedition series.
Aw, I liked the goats and sheep. I am happy that all the animals were relocated to places where they will be taken care of as well as they were at SFMM or better.
http://blogs.wsj.com/bankruptcy/2009/12/07/six-flags-to-hand-katrina-damaged-park-to-city/ Six Flags Inc. gained bankruptcy-court approval last week to hand a theme park ravaged by Hurricane Katrina over to the City of New Orleans. The deal clears the way for the city to sell the former Six Flags New Orleans to a developer that would reopen the park, but that plan remains on shaky ground. The theme park has been closed since August 2005, when Hurricane Katrina inflicted catastrophic damage and covered the property with several feet of water. Six Flags, which filed for Chapter 11 bankruptcy protection in June, struck a deal to give control of the property and the idled rides back to New Orleans. The company also agreed to pay the city $3 million and to share a portion of insurance recoveries above $65 million, according to bankruptcy-court documents. The deal halts legal action the city took against Six Flags in connection to keeping the park closed. With control of the property, New Orleans can now move forward with plans to reopen the tourist attraction on the city's eastern edge. In August, SpongeBob SquarePants and Dora the Explorer joined Mayor Ray Nagin to announce that the park would reopen as "Nickelodeon Universe New Orleans." But those plans fell apart last month when the children's cable network pulled out of the deal with Southern Star Amusement, the company that plans to redevelop the site. Southern Star also said last month that it will move ahead with plans to buy the land from the city, even without Nickelodeon.
Going On Any Awesome Trips Next Year?
wiyoh1984 replied to Speeddeamon128's topic in Theme Parks, Roller Coasters, & Donkeys!
A group of friends and myself are going to SFOG for opening weekend (March 6-7). I have not quite decided yet but I may try to take a trip to Cedar Point and Kings Island in May, depends on if I can get a group together like my trip in March. In October I will be spending a week in SoCal and hitting, KBF, SFMM, and Disney. Inbetween I will be frequenting my home park Dixie Landin'/ Blue Bayou.
Danny can try all he want, but it just isn't looking great for he nor his "company" not that myself or others have already said that. I say the sh*tty should just liquidate what is left. There are profitable parks out there such as Dixie Landin' and others that are interested in it's contents, redevelop the land for something else, and/or just let nature take its course and it become part of the swamp again.
Blue Bayou/Dixie Landin' buys Harvest Express from Nut Tree
wiyoh1984 replied to IStillPlayRCT2's topic in Theme Parks, Roller Coasters, & Donkeys!
I recieved a season pass flyer today in the mail. Season Passes purchased before December 25th are $54.99. The new Coaster is being marketed on the flyer as well!
^ Oh this is true. I didn't realize the sign could change colors on Terminator or maybe I just didn't pay attention.
^ meh, I've always kind of thought that he was blowing smoke. Is he still credible...I seriously doubt it.
Hey what's wrong with Gay Pride Terminator Robb? j/k
Great post Chris....looks like alot is going on at SFMM, I'm ready for another visit next year.....
^ I read that thread last night myself. I just yawned and said whatever. It's over I'm afraid.
It's a cute little coaster I can't wait for next season!
It's not exactly what I had in my mind for a "new" coaster for the expansion, but I'll take it.
THE one thing the Six Flags Theme parks lack.
wiyoh1984 replied to bostonlva's topic in Theme Parks, Roller Coasters, & Donkeys!
I think there are more pressing issues than a ride board. Just my opinion.
Starting up the next season
wiyoh1984 replied to TYTL's topic in Theme Parks, Roller Coasters, & Donkeys!
March 6th for opening weekend at Six Flags Over Georgia! I have not decided what my first credit will be, probably Goliath, I tend to ride the biggest coaster first and work my way down when I go to a park.
^ I couldn't agree more .....I wash my hands clean....
AstroWorld's Greezed Lightnin???? What is going on with it?
wiyoh1984 replied to montezooma's topic in Theme Parks, Roller Coasters, & Donkeys!
If you look at a few websites such as www.italintl.com or www.rides4u.com they have a selection of coasters that are for sell with an asking price higher than what is being asked for Greezy. I would think the asking price is reasonable considering the work put into it. That is just my opinion.


Photos from Sweet Paul, Whatever and a nice apron from ?
Making a stop to my own blog to say hi! There is so much beauty around that I love sharing. Thank you for stopping by and commenting, thanks for sharing in. See you soon.
I am taking a sabbatical. Travel and see. The Happy Turtle wishes to thank you for stopping by, commenting and linking. I will stop by to see how you are and what you've been up to. Take care and have fun.


FE gave a lecture about workflow design as part of a seamless production workflow. The use of metadata enriched archive material for different production scenarios was also discussed. MECANEX project goals and achievements were demonstrated.
Mecanex 5th Plenary Meeting- BerlinMecanex @ IBC Conference!


Creating a picture wall or art display wall is a stylish way to add personality to a home. When done correctly, the results are timeless. This type of display holds up over time, and you will find yourself satisfied with your picture wall for years to come. Better yet, with the techniques we will reveal to you in this article, you will find you can make changes to the layout and design at any time. No longer must you avoid changing your display because of the damaging holes caused by nails.
Recently we had a homeowner inquire with us as to how to hang an art display on a stone fireplace. This person has a beautiful stone fireplace in his home that he didn't want to mar by putting holes into either the stone or the grout work. We love it when these questions are brought to our attention so we can share our solutions.
AS Hanging Display Systems is proud to reveal its new web site at ASHanging.com. In the history of the company this is the third major overhaul and our most aggressive one to date. It is based on a completely new platform and sets the company up for category leadership on the web, well into the next decade. Of course there are many technical advances under the hood, but unless you are a web developer these might sound like so much gibberish. So lets instead investigate the face of the site and how navigation has been transformed.
The mere act of changing art and repositioning a display damages the one most valuable asset most of us possess, our home. The repeated hammering of nails leaves holes that need to be filled, patched and painted. This is inefficient, not sustainable and budget foolish, and sometimes the damage is simply not repairable. Think of Venetian Plaster, as just one example. Yet, this repeatedly destructive process need not continue.
Frames are traditionally prepared with a hang wire on the rear. It is typically mounted to the side rails of frames about 1/3 down from the top of the frame. Also, this wire is traditionally longer than it need be. There is slack in it by some inconsistent amount. When hung from a hanging system cable, or rod, this standard frame preparation will frequently cause the top of the frame to hang away from the wall, what we call face forward.
Since most of the population is familiar and experienced with hanging a frame from the hang wire on the rear of a frame, it is natural for us to do the same when hanging a framed art piece from a hanging system. However, that experience does not translate to a framed art piece hanging from two cables or rods.
Hanging a single piece of framed art is typically straightforward. While there can be certain aspects to consider when hanging solo pieces, as we've mentioned in our first post of this series, the tactical aspects usually arise when attempting to hang multiple pieces in a vertical format on a single cable or rod. One of these is the Teeter-Totter Effect.
Have you ever tried to hang a framed piece of art or lovely photo and, while the piece itself is wall-worthy, its presentation is less than appealing? It tilts or leans on the wall. Right or left, it doesn't matter. It distracts from the visual.
In our series, "How to Optimize Hanging Systems", we've discussed topics including how to hang framed art, managing face forward of frames, when to use two cables for picture frame stabilization, tips for how to prevent art frames from a teeter-totter effect, and eliminating the dizzying visual distraction of unbalanced picture frame tilting.


text:
Home » District 4C volleyball
District 4C volleyball
Roberts, Belfry and Fromberg will enter the District 4-C Volleyball Tournament at Absarokee High School, Oct. 26-28.
Roberts finished the season in 5th place in the conference table with an 11-8 overall record. Fromberg took 8th on 2-14 and Belfry 9th on 1-12.
Fromberg and Belfry will take part in the play in game, Oct. 26 at 10 a.m.
Roberts will play Absarokee, Oct. 26 at 4 p.m.
Bridger AA
Now Group meets at the Bridger United Methodist Church, 222 W. Broadway (west entrance of church) Tuesday at 7 p.m.
Montana Metal Rockfest tunes up
The Montana Metal Rockfest will feature Zen, Kicking Karma, and Mr. Big with Trixter, July 18-20 at Boyd's Garage on 7th Street, Red Lodge. The gigs will kick off at 6:30 p.m. each night. There is no cover charge. Vendors will be on site. For tickets and information call (406) 446-1519.
Meets every Thursday, 7 p.m. – 8 p.m. at the Red Lodge Area Community Foundation, 122 S. Hauser. It is open to all. 425- 1755.
Fromberg AA
Clarks Fork Group meets at St. Joseph's Catholic Hall, north end of Montana Avenue, Thursday at 7 p.m.
Rock Creek AA
Rock Creek Group meets Tuesdays and Saturdays at 8 a.m. and Wednesdays and Fridays at 7 p.m. at Calvary Church, 9 N Villard, Red Lodge.
Joliet AA
Joliet Group meets at the Community Center Monday at 7 p.m.

redpajama_set_name: RedPajamaCommonCrawl


Earlier this month, the Spirit team returned from launching the stunning new Spirit 65' Chloe Giselle at the prestigious (if a little hot and humid) Singapore Yacht Show.
As well as impressing show visitors, Chloe Giselle was also the setting for a three day photography shoot in partnership with classic British clothing company Quba.
Exhibiting alongside premium yachting brands from across the globe in the exclusive ONE°15 Marina Club in Singapore, Spirit Yachts welcomed visitors from across Asia throughout the four day show. With a host of fibreglass boats on display, Chloe Giselle was admired by all for her classical elegance, clean lines and beautiful wooden design and build.
Spirit CEO and head designer Sean McMillan and managing director Nigel Stuart both flew out from the UK to attend the show to discuss Spirit's portfolio of modern classic yachts and support the Spirit Asia office at their debut show.
Designed as a performance orientated sailing sloop, Chloe Giselle combines classical elegance with lightweight construction, excellent engineering, the finest equipment and a superbly fitted interior. Offering a balanced blend of style and practicality, she provided the perfect backdrop for three days of sailing and lifestyle photography.
Prior to the photo shoot Spirit and Devon based clothing brand Quba discussed an opportunity for a partnership between the two companies. With shared values of high quality, tradition and style, Quba and Spirit agreed to collaborate on the project, which is hopefully the first of many joint ventures. The three day photo session included images of the yacht interior and at anchor, as well as a long and fickle day's sailing in very light winds at sunrise and heavy winds and rain at sunset (many thanks go to Wally for the loan of a tender as the photographer's boat).
The full range of images will be released throughout the year; keep an eye out for preview shots on our website, Facebook and Twitter pages.


text:
HOME >> WORLD
Abu Dhabi airport grows fast, but lags behind globally-connected Dubai
Source:Xinhua Published: 2012-10-2 16:28:29
The ongoing 18th global air travel congress World Routes in Abu Dhabi exposes the domestic rivalry between the two major airports in the United Arab Emirates (UAE).
"With a year-to-date growth of 21 percent (as of August 2012), Abu Dhabi International Airport is one of the fastest growing airports in the world," said James Bennett, CEO of Abu Dhabi Airports Company (ADAC), at the three-day World Routes, which kicked off Sunday. With this rate, Abu Dhabi, whose airport just celebrated this year its 30th jubilee, hosted 9.68 million passengers from January through August.
In addition, the UAE capital outperformed its rival and neighboring emirate Dubai, whose airport grew by 20 percent in the same month.
Both UAE hubs do indeed very well amid global economic uncertainty. For the full year of 2011, only two airports managed to achieve a year-on-year growth of above 20 percent, namely Indira Ghandi International in Delhi (up 21.7 percent) and Brazil's Rio de Janeiro (20.5 percent higher).
In absolute figures, the UAE's internal rivalry shows a different picture. While Dubai eyes some 56 million passengers in 2012 (after 51 million passengers in 2011), Abu Dhabi's target for this year stands at 12 million travelers. Dubai lured last year some 10 million tourists, while Abu Dhabi welcomed 2 million visitors.
But while nine-tenths of Dubai's passengers are landing in Dubai just to change plane, "Abu Dhabi's passenger base is much more balanced as some 45 percent of people landing in Abu Dhabi also stay there for business or holidays," according to Bennett.
In the civil aviation language, such travelers are called "OD (origin-destination) passengers".
The skewed image of the two airports has many reasons, one of them being Dubai's first-mover advantage. Dubai's $4.5-billion Terminal 3 gave the business metropolis a boost when it opened in October 2008, paving the way for an exclusive departure and landing hub for Dubai's state-owned carrier Emirates Airlines.
Secondly, Abu Dhabi, or "AD" as it is called among locals, still lacks leisure and tourist attractions. Even residents in Abu Dhabi prefer driving for 45 minutes to neighboring Dubai simply because AD lacks mega-malls like the Dubai Mall, the world's largest shopping center, or the Mall of the Emirates, which even hosts an artificial ski slope.
The ADAC CEO asked passengers and airliners for some patience. "Abu Dhabi's second phase of development includes the Midfield Terminal. It is under construction and will be completed in 2017 and will have a capacity for 30 million people per year."
Abu Dhabi's state-owned carrier Etihad Airways is the main driver of passenger growth, "and growth we achieved mainly through partnerships we entered in recent years," said Etihad CEO James Hogan at the World Routes.
Etihad bought in December 2011 nearly one-third shares of German low-cost carrier Air Berlin, while it does code-sharing with 38 other airlines.
But amid a tricky world economy, even Dubai's Emirates Airlines, the fastest growing carrier in the world, cannot continue without partnerships. A month ago, the Emirates signed up for a partnership with Australia's Qantas.
The carrier, with the image of a kangaroo on its tail fin, will be the first foreign airline that will be allowed to use Dubai's Terminal 3.
Meanwhile, operations started at Dubai World Central (DWC), the new airport in the west of Dubai. Designed to host 150 million passengers until 2030, DWC has ambitions to become the largest airport in the world. "It is not yet clear if the old Dubai International Airport will move to DWC or if only some airlines will be shifted there," said Dubai Airport CEO Paul Griffiths.
Posted in: Mid-East


text:
Q: Perl: assign a scalar directly to a hash While looking at some Perl code, I came across the assignment of the output of chr directly to a hash:
local %str = chr(shift);

Confused that the code worked fine, this made me realise the following:
perl -le 'my $jurso = 23; print $jurso;'
23

perl -le 'my %jurso = 23; print %jurso;'
23

perl -le 'my @jurso = 23; print @jurso;'
23

I expected that assigning a scalar directly to a hash or an array to result in an error. Can someone explain why the jurso variable behaves like a scalar regardless of the sigil used?
Thanks.

A: Two words: context matters. It's easier to understand what's going on here if you turn warnings on:
> perl -wle 'my %jurso = 23; print %jurso;'
Odd number of elements in hash assignment at -e line 1.
Use of uninitialized value $jurso{"23"} in print at -e line 1.
23

In other words, the first statement of your code creates a hash from a single-item list. It's not a good sign (as hashes should usually have an even number of elements in the source list), hence the first warning. Still, a hash is created: it has one element, addressed with a key 23, and value of this element is undef.
The second statement attemtps to print this hash, it echoes a key first (23), then its value. It's undef, as you remember, hence the second warning. Still, this value is printed out - as an empty string. )
With arrays, you won't even have warnings:
> perl -wle 'my @jurso = 23; print @jurso;'
23

... as the first statement fills @jurso array with a single item, the second statement just prints this array. Again, the context matters.

redpajama_set_name: RedPajamaStackExchange


text:
module Tree

  # Rubytree Package Version
  VERSION = '0.6.2'

  # == TreeNode Class Description
  #
  # This class models the nodes for an N-ary tree data structue. The nodes are +named+
  # and have a place-holder for the node data (i.e., `content' of the node). The node
  # names are required to be *unique* within the tree.
  #
  # The node content is not required to be unique across different nodes in the tree, and
  # can be +nil+ as well.
  #
  # The class provides various traversal methods to navigate the tree,
  # methods to modify contents of the node or to change position of the node in the tree
  # and methods to change structure of the tree.
  #
  # A node can have any number of child nodes attached to it and hence can be used to create N-ary trees.
  # Access to the child nodes can be made in order (with the conventional left to right access), or
  # randomly.
  #
  # The node also provides direct access to its parent and other superior parents in the path to
  # root of the tree.  In addition, a node can also access its sibling nodes, if present.
  # Note that while this implementation does not explicitly support directed graphs, the class itself makes
  # no restrictions on associating a node's +CONTENT+ with multiple nodes in the tree.
  #
  #
  # == Example
  #
  #  The following example implements this tree structure:
  #
  #                    +------------+
  #                    |    ROOT    |
  #                    +-----+------+
  #            +-------------+------------+
  #            |                          |
  #    +-------+-------+          +-------+-------+
  #    |  CHILD 1      |          |  CHILD 2      |
  #    +-------+-------+          +---------------+
  #            |
  #            |
  #    +-------+-------+
  #    | GRANDCHILD 1  |
  #    +---------------+
  #
  # require 'tree'
  #
  # root_node = Tree::TreeNode.new("ROOT", "Root Content")
  #
  # root_node << Tree::TreeNode.new("CHILD1", "Child1 Content") << Tree::TreeNode.new("GRANDCHILD1", "GrandChild1 Content")
  #
  # root_node << Tree::TreeNode.new("CHILD2", "Child2 Content")
  #
  # root_node.printTree
  #
  # child1       = root_node["CHILD1"]
  #
  # grand_child1 = root_node["CHILD1"]["GRANDCHILD1"]
  #
  # siblings_of_child1 = child1.siblings # Will return an array
  #
  # children_of_root   = root_node.children # Will return an array
  #
  # # Process all nodes
  #
  # root_node.each { |node| node.content.reverse }
  #
  # root_node.remove!(child1) # Remove the child
  #
  class TreeNode
    include Enumerable

    # Name of this node.  Expected to be unique within the tree.
    attr_reader   :name

    # Content of this node.  Can be +nil+.
    attr_accessor :content

    # Parent of this node.  Will be +nil+ for root nodes.
    attr_reader   :parent

    # Constructor which expects the name of the node.
    # Name of the node is expected to be unique across the tree.
    #
    # The content can be of any type, defaults to +nil+.
    def initialize(name, content = nil)
      raise "Node name HAS to be provided" if name == nil
      @name = name
      @content = content
      self.setAsRoot!

      @childrenHash = Hash.new
      @children = []
    end

    # Returns a copy of the receiver node, with its parent and children links removed.
    # The original node remains attached to its tree.
    def detached_copy
      Tree::TreeNode.new(@name, @content ? @content.clone : nil)
    end

    # Print the string representation of this node.  This is primary for debugging purposes.
    def to_s
      "Node Name: #{@name}" +
        " Content: " + (@content || "<Empty>") +
        " Parent: " + (isRoot?()  ? "<None>" : @parent.name) +
        " Children: #{@children.length}" +
        " Total Nodes: #{size()}"
    end

    # Returns an array of ancestors of the receiver node in reversed order
    # (the first element is the immediate parent of the receiver).
    #
    # Returns +nil+ if the receiver is a root node.
    def parentage
      return nil if isRoot?

      parentageArray = []
      prevParent = self.parent
      while (prevParent)
        parentageArray << prevParent
        prevParent = prevParent.parent
      end

      parentageArray
    end

    # Protected method to set the parent node for the receiver node.
    # This method should *NOT* be invoked by client code.
    #
    # Returns the parent.
    def parent=(parent)         # :nodoc:
      @parent = parent
    end

    # Convenience synonym for TreeNode#add method.
    #
    # This method allows an easy method to add node hierarchies to the tree
    # on a given path via chaining the method calls to successive child nodes.
    #
    # Example: <tt>root << child << grand_child</tt>
    #
    # Returns the added child node.
    def <<(child)
      add(child)
    end

    # Adds the specified child node to the receiver node.
    #
    # This method can also be used for *grafting* a subtree into the receiver node's tree, if the specified child node
    # is the root of a subtree (i.e., has child nodes under it).
    #
    # The receiver node becomes parent of the node passed in as the argument, and
    # the child is added as the last child ("right most") in the current set of
    # children of the receiver node.
    #
    # Returns the added child node.
    #
    # An exception is raised if another child node with the same name exists.
    def add(child)
      raise "Child already added" if @childrenHash.has_key?(child.name)

      @childrenHash[child.name]  = child
      @children << child
      child.parent = self
      return child
    end

    # Removes the specified child node from the receiver node.
    #
    # This method can also be used for *pruning* a subtree, in cases where the removed child node is
    # the root of the subtree to be pruned.
    #
    # The removed child node is orphaned but accessible if an alternate reference exists.  If accesible via
    # an alternate reference, the removed child will report itself as a root node for its subtree.
    #
    # Returns the child node.
    def remove!(child)
      @childrenHash.delete(child.name)
      @children.delete(child)
      child.setAsRoot! unless child == nil
      return child
    end

    # Removes the receiver node from its parent.  The reciever node becomes the new root for its subtree.
    #
    # If this is the root node, then does nothing.
    #
    # Returns self (the removed receiver node) if the operation is successful, and +nil+ otherwise.
    def removeFromParent!
      @parent.remove!(self) unless isRoot?
    end

    # Removes all children from the receiver node.
    #
    # Returns the receiver node.
    def removeAll!
      for child in @children
        child.setAsRoot!
      end
      @childrenHash.clear
      @children.clear
      self
    end

    # Returns +true+ if the receiver node has any associated content.
    def hasContent?
      @content != nil
    end

    # Protected method which sets the receiver node as a root node.
    #
    # Returns +nil+.
    def setAsRoot!              # :nodoc:
      @parent = nil
    end

    # Returns +true+ if the receiver is a root node.  Note that
    # orphaned children will also be reported as root nodes.
    def isRoot?
      @parent == nil
    end

    # Returns +true+ if the receiver node has any immediate child nodes.
    def hasChildren?
      @children.length != 0
    end

    # Returns +true+ if the receiver node is a 'leaf' - i.e., one without
    # any children.
    def isLeaf?
      !hasChildren?
    end

    # Returns an array of all the immediate children of the receiver node.
    #
    # If a block is given, yields each child node to the block traversing from left to right.
    def children
      if block_given?
        @children.each {|child| yield child}
      else
        @children
      end
    end

    # Returns the first child of the receiver node.
    #
    # Will return +nil+ if no children are present.
    def firstChild
      children.first
    end

    # Returns the last child of the receiver node.
    #
    # Will return +nil+ if no children are present.
    def lastChild
      children.last
    end

    # Traverses every node (including the receiver node) from the (sub)tree
    # by yielding the node to the specified block.
    #
    # The traversal is depth-first and from left to right in pre-ordered sequence.
    def each &block             # :yields: node
      yield self
      children { |child| child.each(&block) }
    end

    # Traverses the tree in a pre-ordered sequence.  This is equivalent to
    # TreeNode#each
    def preordered_each &block  # :yields: node
      each(&block)
    end

    # Performs breadth first traversal of the tree starting at the receiver node. The
    # traversal at a given level is from left to right.
    def breadth_each &block
      node_queue = [self]       # Create a queue with self as the initial entry

      # Use a queue to do breadth traversal
      until node_queue.empty?
        node_to_traverse = node_queue.shift
        yield node_to_traverse
        # Enqueue the children from left to right.
        node_to_traverse.children { |child| node_queue.push child }
      end
    end

    # Yields all leaf nodes from the receiver node to the specified block.
    #
    # May yield this node as well if this is a leaf node.
    # Leaf traversal is depth-first and left to right.
    def each_leaf &block
      self.each { |node| yield(node) if node.isLeaf? }
    end

    # Returns the requested node from the set of immediate children.
    #
    # If the argument is _numeric_, then the in-sequence array of children is
    # accessed (see Tree#children).  If the argument is *NOT* _numeric_, then it
    # is assumed to be *name* of the child node to be returned.
    #
    # Raises an exception is the requested child node is not found.
    def [](name_or_index)
      raise "Name_or_index needs to be provided" if name_or_index == nil

      if name_or_index.kind_of?(Integer)
        @children[name_or_index]
      else
        @childrenHash[name_or_index]
      end
    end

    # Returns the total number of nodes in this (sub)tree, including the receiver node.
    #
    # Size of the tree is defined as:
    #
    # Size:: Total number nodes in the subtree including the receiver node.
    def size
      @children.inject(1) {|sum, node| sum + node.size}
    end

    # Convenience synonym for Tree#size
    def length
      size()
    end

    # Pretty prints the tree starting with the receiver node.
    def printTree(level = 0)

      if isRoot?
        print "*"
      else
        print "|" unless parent.isLastSibling?
        print(' ' * (level - 1) * 4)
        print(isLastSibling? ? "+" : "|")
        print "---"
        print(hasChildren? ? "+" : ">")
      end

      puts " #{name}"

      children { |child| child.printTree(level + 1)}
    end

    # Returns root node for the (sub)tree to which the receiver node belongs.
    #
    # Note that a root node's root is itself (*beware* of any loop construct that may become infinite!)
    #--
    # TODO: We should perhaps return nil as root's root.
    #++
    def root
      root = self
      root = root.parent while !root.isRoot?
      root
    end

    # Returns the first sibling for the receiver node. If this is the root node, returns
    # itself.
    #
    # 'First' sibling is defined as follows:
    # First sibling:: The left-most child of the receiver's parent, which may be the receiver itself
    #--
    # TODO: Fix the inconsistency of returning root as its first sibling, and returning a
    #       a nil array for siblings for the node.
    #++
    def firstSibling
      isRoot? ? self : parent.children.first
    end

    # Returns true if the receiver node is the first sibling.
    def isFirstSibling?
      firstSibling == self
    end

    # Returns the last sibling for the receiver node.  If this is the root node, returns
    # itself.
    #
    # 'Last' sibling is defined as follows:
    # Last sibling:: The right-most child of the receiver's parent, which may be the receiver itself
    #--
    # TODO: Fix the inconsistency of returning root as its last sibling, and returning a
    #       a nil array for siblings for the node.
    #++
    def lastSibling
      isRoot? ? self : parent.children.last
    end

    # Returns true if the receivere node is the last sibling.
    def isLastSibling?
      lastSibling == self
    end

    # Returns an array of siblings for the receiver node.  The receiver node is excluded.
    #
    # If a block is provided, yields each of the sibling nodes to the block.
    # The root always has +nil+ siblings.
    #--
    # TODO: Fix the inconsistency of returning root as its first/last sibling, and returning a
    #       a nil array for siblings for the node.
    #++
    def siblings
      return nil if isRoot?

      if block_given?
        for sibling in parent.children
          yield sibling if sibling != self
        end
      else
        siblings = []
        parent.children {|my_sibling| siblings << my_sibling if my_sibling != self}
        siblings
      end
    end

    # Returns true if the receiver node is the only child of its parent.
    def isOnlyChild?
      parent.children.size == 1
    end

    # Returns the next sibling for the receiver node.
    # The 'next' node is defined as the node to right of the receiver node.
    #
    # Will return +nil+ if no subsequent node is present.
    def nextSibling
      if myidx = parent.children.index(self)
        parent.children.at(myidx + 1)
      end
    end

    # Returns the previous sibling for the receiver node.
    # The 'previous' node is defined as the node to left of the receiver node.
    #
    # Will return nil if no predecessor node is present.
    def previousSibling
      if myidx = parent.children.index(self)
        parent.children.at(myidx - 1) if myidx > 0
      end
    end

    # Provides a comparision operation for the nodes.
    #
    # Comparision is based on the natural character-set ordering of the *node name*.
    def <=>(other)
      return +1 if other == nil
      self.name <=> other.name
    end

    # Freezes all nodes in the (sub)tree rooted at the receiver node.
    def freezeTree!
      each {|node| node.freeze}
    end

    # Returns a marshal-dump represention of the (sub)tree rooted at the receiver node.
    def marshal_dump
      self.collect { |node| node.createDumpRep }
    end

    # Creates a dump representation of the reciever node and returns the same as a hash.
    def createDumpRep           # :nodoc:
      { :name => @name, :parent => (isRoot? ? nil : @parent.name),  :content => Marshal.dump(@content)}
    end

    # Loads a marshalled dump of a tree and returns the root node of the
    # reconstructed tree. See the Marshal class for additional details.
    #
    #--
    # TODO: This method probably should be a class method.  It currently clobbers self
    #       and makes itself the root.
    #++
    def marshal_load(dumped_tree_array)
      nodes = { }
      for node_hash in dumped_tree_array do
        name        = node_hash[:name]
        parent_name = node_hash[:parent]
        content     = Marshal.load(node_hash[:content])

        if parent_name then
          nodes[name] = current_node = Tree::TreeNode.new(name, content)
          nodes[parent_name].add current_node
        else
          # This is the root node, hence initialize self.
          initialize(name, content)

          nodes[name] = self    # Add self to the list of nodes
        end
      end
    end

    # Returns height of the (sub)tree from the receiver node.  Height of a node is defined as:
    #
    # Height:: Length of the longest downward path to a leaf from the node.
    #
    # - Height from a root node is height of the entire tree.
    # - The height of a leaf node is zero.
    def nodeHeight
      return 0 if isLeaf?
      1 + @children.collect { |child| child.nodeHeight }.max
    end

    # Returns depth of the receiver node in its tree.  Depth of a node is defined as:
    #
    # Depth:: Length of the node's path to its root.  Depth of a root node is zero.
    #
    # *Note* that the deprecated method Tree::TreeNode#depth was incorrectly computing this value.
    # Please replace all calls to the old method with Tree::TreeNode#nodeDepth instead.
    def nodeDepth
      return 0 if isRoot?
      1 + parent.nodeDepth
    end

    # Returns depth of the tree from the receiver node. A single leaf node has a depth of 1.
    #
    # This method is *DEPRECATED* and may be removed in the subsequent releases.
    # Note that the value returned by this method is actually the:
    #
    # _height_ + 1 of the node, *NOT* the _depth_.
    #
    # For correct and conventional behavior, please use Tree::TreeNode#nodeDepth and
    # Tree::TreeNode#nodeHeight methods instead.
    def depth
      begin
        require 'structured_warnings'   # To enable a nice way of deprecating of the depth method.
        warn DeprecatedMethodWarning, 'This method is deprecated.  Please use nodeDepth() or nodeHeight() instead (bug # 22535)'
      rescue LoadError
        # Oh well. Will use the standard Kernel#warn.  Behavior will be identical.
        warn 'Tree::TreeNode#depth() method is deprecated.  Please use nodeDepth() or nodeHeight() instead (bug # 22535)'
      end

      return 1 if isLeaf?
      1 + @children.collect { |child| child.depth }.max
    end

    # Returns breadth of the tree at the receiver node's  level.
    # A single node without siblings has a breadth of 1.
    #
    # Breadth is defined to be:
    # Breadth:: Number of sibling nodes to this node + 1 (this node itself), i.e., the number of children the parent of this node has.
    def breadth
      isRoot? ? 1 : parent.children.size
    end

    protected :parent=, :setAsRoot!, :createDumpRep

  end
end

redpajama_set_name: RedPajamaGithub


text:
Dow falls 457 points amid fears of coronavirus second wave
By Jonathan Garber
These companies are hiring during the COVID-19 pandemic
The COVID-19 pandemic has sparked widespread unemployment, but these companies are still hiring.
NEW YORK - U.S. equity markets slid Tuesday as members of President Trump's task force on the coronavirus testified before Congress signaling that virus risks remain as states reopen for business. Additionally, the CDC disclosed fresh data that showed an uptick in U.S. cases of the virus.
The Dow Jones Industrial Average fell over 457 points, or 1.89 percent, while the Nasdaq Composite slipped 2.06 percent, snapping a six-day winning streak, and the S&P 500 dropped 2.05 percent. All three of the major averages had opened to modest gains but reversed with selling accelerating late in the session.
Dr. Anthony Fauci, director of the National Institute of Allergy and Infectious Disease, during his testimony, advised against reopening local economies too quickly, without following the government's guidelines.
At least two states eased lockdown restrictions on Tuesday: Colorado allowed state parks to reopen campgrounds, and Ohio permitted consumer, retail and services businesses to restart operations with guidelines.
In California, Elon Musk received support from President Trump as he reopened his Tesla assembly plant.
Meanwhile, the Trump administration -- in a move tied to Beijing's handling of COVID-19 -- wants the Thrift Savings Plan, a federal employee retirement fund, to pull its investments in Chinese companies, FOX Business has learned. The fund currently owns about $4 billion of Chinese shares.
RELATED: A guide to surviving financially as the bills come due
In merger news, reports circulated that Uber is eying GrubHub for a possible acquisition, sending shares of the latter soaring.
Elsewhere, Simon Property Group, the largest U.S. mall operator, announced plans to open about half of its locations within the next week.
Drugmaker Moderna gained fast-track approval from the Food and Drug Administration to speed up the review of its experimental coronavirus vaccine.
Separately, Novavax received $348 million of funding for trials of its experimental coronavirus vaccine from the Coalition for Epidemic Preparedness, a non-profit founded by the Bill & Melinda Gates Foundation.
RELATED: Looking for work? These companies are hiring amid the coronavirus pandemic
In finance, PNC Financial announced plans to sell its entire 22 percent stake in BlackRock, the world's largest asset manager.
On the earnings front, Casper Sleep reported mixed first-quarter results and said online sales grew as the COVID-19 pandemic forced the company to temporarily shut down its retail stores.
West Texas Intermediate crude oil climbed 6.79 percent to $25.78 a barrel while gold rallied to $1,704 an ounce.
U.S. Treasurys gained, pushing the yield on the 10-year note down to 0.679 percent.
In Europe, France's CAC fell 0.39 percent and Germany's DAX lost 0.05 percent while Britain's FTSE added 0.93 percent.
Markets ended lower across Asia, with Hong Kong's Hang Seng sliding 1.45 percent, Japan's Nikkei slipping 0.12 percent and China's Shanghai Composite shedding 0.10 percent.
Get updates on this story from foxbusiness.com.


– wished once more for a fog radar. Montreal was covered in fog again, and I left my camera at home. I'm hoping to take a picture of the downtown skyscrapers and I'd better do it quick, before the temperatures drop for good.
– made Tostitos + Bolognese-style dip for dinner. YUM! The secret is to put the Tostitos in the oven for 10 min or so. It gives them some extra crunch.
– prepared my camera + tilt-shift lens (I love that lens, what can I say) for the trip to Quebec City this weekend. Can't wait! D will be at a conference and I'll stroll around the city taking pictures.
– bumped my head against a no parking sign as I was looking at the shoes on display in a store window. This was bound to happen at some point.
– have prepared my Link Love list which I will share tomorrow.


text:
Frans Reinold Nässling (23 November 1868 – 7 May 1933) was a Finnish sports shooter, who competed at the 1908 and 1920 Summer Olympics, and won three Finnish national championship golds.

Shooting

Olympics

International

Nässling competed at the 1914 ISSF World Shooting Championships, placing 5th in an army rifle event.

National

He won three Finnish national championship golds in shooting:
 free rifle, standing: 1908
 free rifle, three positions: 1914, 1918

He represented the club Skjutkonstens Vänner i Åbo.

He was at the constituting meeting of the Finnish Shooting Sport Federation.

Other

He broke the Finnish national records of 40 and 80 kilometre cycling in 1895.

He was a gymnast in the club Åbo Turnförening his youth.

He was active in the Turku White Guard.

His family name has also appeared as Näsling. Olympic shooter Emil Nässling was his brother.

Sources

References

External links

1868 births
1933 deaths
Finnish male sport shooters
Olympic shooters of Finland
Shooters at the 1908 Summer Olympics
Shooters at the 1920 Summer Olympics
Sportspeople from Turku

redpajama_set_name: RedPajamaWikipedia


text:
Free Tracked Shipping - Happy Holidays
All Nail Gel
Base and Top Coat
Coat Color
Gel Nail Pen
Cat Eye Gel
Ink Smoke
Peel Off Liquid
Thermal Color Changing
Rhinestones & Glitter
Rhinestones & Decorations
Sticker & Decal
Nail Acrylic
All Nail Tools
Nail Remover
Nail Kit
Nail Gel Menu
Nail Polish Menu
Nail Art Menu
Nail Tools Menu
ROSALIND - Gel Polish
You save $0.16 (8%)
FREE Shipping or FULL Refund
🎁 1 free nail polish with any purchase
🚚 Tracked delivery
Color 21 28 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 Base Coat Top Coat
21 28 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 Base Coat Top Coat
Item Type: Nail Gel
Model Number: Rosalind Nail Gel
Type: UV Gel
NET WT: 7ml
Brand Name: Rosalind
Ingredient: Resin(not nickel)
Color: 29 Colors For choice
Curing Tools: UV Lamp, Led Lamp
Soak off: Avaliable
Certification: MSDS,SGS
Used for: Nail Beauty Salon, Rrivate Using
Needed: BASE&TOP Coat
Cure Time: LED lamp 30s;UV lamp 2 mins
NET WT: 25g
Advantage(1): Long-lasting
Advantage(2): Healthy and Eco-friendly
21 - $1.80 USD 28 - $1.80 USD 01 - $1.80 USD 02 - $1.80 USD 03 - $1.80 USD 04 - $1.80 USD 05 - $1.80 USD 06 - $1.80 USD 07 - $1.80 USD 08 - $1.80 USD 09 - $1.80 USD 10 - $1.80 USD 11 - $1.80 USD 12 - $1.80 USD 13 - $1.80 USD 14 - $1.80 USD 15 - $1.80 USD 16 - $1.80 USD 17 - $1.80 USD 18 - $1.80 USD 19 - $1.80 USD 20 - $1.80 USD 22 - $1.80 USD 23 - $1.80 USD 24 - $1.80 USD 25 - $1.80 USD 26 - $1.80 USD 27 - $1.80 USD 29 - $1.80 USD 30 - $1.80 USD 31 - $1.80 USD 32 - $1.80 USD 33 - $1.80 USD 34 - $1.80 USD 35 - $1.80 USD 36 - $1.80 USD 37 - $1.80 USD 38 - $1.80 USD 39 - $1.80 USD 40 - $1.80 USD 41 - $1.80 USD 42 - $1.80 USD 43 - $1.80 USD 44 - $1.80 USD 45 - $1.80 USD 46 - $1.80 USD 47 - $1.80 USD 48 - $1.80 USD 49 - $1.80 USD 50 - $1.80 USD 51 - $1.80 USD 52 - $1.80 USD 53 - $1.80 USD 54 - $1.80 USD 55 - $1.80 USD 56 - $1.80 USD 57 - $1.80 USD 58 - $1.80 USD Base Coat - $1.80 USD Top Coat - $1.80 USD
Back to OFFERS OF THE MOMENT
For all orders placed on www.naily.net, we commit ourselves to prepare your order in 24 hours and in maximum 72 working days in periods of strong activity such as Sales, Christmas and commercial operations.
As an international retailer of products, Naily work in collaboration with suppliers worldwide, as a result, we adopt the delivery method adapted to your geographical.
This service is completely free and guarantees delivery within 7 to 30 working days (delivery from Monday to Saturday).
Our items have been carefully crafted to bring you complete satisfaction.
However, if you change your mind, you have the 30-day cooling-off period after receiving your items to return and request an exchange, have or refund: We only perform the padding of returned products. We do not exchange. Return shipping costs are your responsibility. You will find on your online account a return slip and your invoice to print and return with your package. This document is essential for returns to headquarters or shop.
You don't live in the USA? No problem, we deliver worldwide for free !
Something is wrong ? Good thing you have 14 days to change your mind !
Need help ? Don't worry, you're in safe hands
We use SSL encryption for your secure payments
Naily Store
I acknowledge that by submitting this form, I agree that my personal data will be used to contact me as part of my request indicated in this form. No other processing will be carried out with my information. To know and exercise my rights, in particular to withdraw my consent to the use of data collected by this form, I consult the Privacy policy.
© 2021, Naily - All rights reserved.


text:
PAGE SECTIONS
Title Banner
SEO Meta Tags
Custom Javascript
Facebook Open Graph
Twitter Card
Change image… Delete
Recommended size: square or rectangle at least 32px tall.
Required if you have no logo image
Link Logo to URL
Link the landing page logo back to your website. Requires Pro Plan or above.
Webinar Title
How to Verify Photos and Videos
Banner Title Color
Agenda Topics
Add a topic
Remove Section
Learn how to verify photos and videos taken from social networks, especially in the context of breaking news. With "fake news" such a hot topic, how can you quickly and effectively verify materials that may be, well, fake? Most fake photos and videos can be checked quite quickly, allowing journalists and researchers to stop the spread of so-called "fake news" before it gets onto your Facebook feed. This course will help you develop an eye for fake photos and video, allowing you to establish the originality and veracity of the content. These skills are especially useful in a breaking news situation, in which verifying a photo or video will not just tell you if it's real, but also additional information that can provide additional information for further reporting. Handouts: - Presentation slides and notes - Case studies and exercises to try outside of training Who should take this training: - Journalists and editors concerned with verifying content and fact-checking - Researchers and activists who work with user-generated digital content, such as videos on YouTube, photographs from Instagram, and so on. - Journalists and journalism students looking for an edge in discovering potentially hidden information in photographs and videos to further an investigation. About the Instructor: Aric Toler is an analyst at Bellingcat, leading Eurasia and Eastern Europe research. He focused on Russian literature and intellectual history in his graduate studies at the University of Kansas and worked as an intelligence specialist in the private sector before coming to Bellingcat. He leads training workshops in Russian and English to equip journalists, researchers, and activists with digital investigation and verification skills, with a focus on training journalists in the former Soviet Union. His research has focused on verifying Russian-language media, the conflict in eastern Ukraine, and the ongoing investigation into the downing of Flight MH17.
Footer URL
Link the footer back to your website. Requires Pro Plan or above.
Arabic Chinese(Simplified) Chinese(Traditional) Czech Danish Dutch English Estonian Finnish French German Greek Hindi Hungarian Italian Japanese Korean Norwegian Polish Portuguese Romanian Russian Serbian Slovenian Spanish Swedish Tamil Turkish
James Buck manages DigitalEd, a series of live online trainings offered by MediaShift, the premier destination for insight and analysis at the intersection of media and technology.
Aric Toler
Remove Presenter
Add Presenter
SEO Meta
SEO Meta Description
SEO Meta Keywords
Recommended image size: 1200 x 630 pixels. Minimum image size: 600 x 315 pixels.
FB Open Graph Title
FB Open Graph Description
Minimum image size for Summary Card with Large Image: 150 x 280 pixels. Minimum size for Summary Card: 120 x 120 pixels.
Twitter Card Type
Summary Card Summary Card with Large Image
Twitter Card Title
Twitter Card Description
Uploaded MP4
January 17, 2018 at 01:00:00 PM · Eastern Time (US & Canada)
By DigitalEd @ MediaShift (5.0 stars · 1 reviews )
5 stars from Jonathan Keegan Jan-17-18 - 4:01 pm
About This Webinar
Learn how to verify photos and videos taken from social networks, especially in the context of breaking news.
With "fake news" such a hot topic, how can you quickly and effectively verify materials that may be, well, fake?
Most fake photos and videos can be checked quite quickly, allowing journalists and researchers to stop the spread of so-called "fake news" before it gets onto your Facebook feed. This course will help you develop an eye for fake photos and video, allowing you to establish the originality and veracity of the content. These skills are especially useful in a breaking news situation, in which verifying a photo or video will not just tell you if it's real, but also additional information that can provide additional information for further reporting.
- Presentation slides and notes
- Case studies and exercises to try outside of training
Who should take this training:
- Journalists and editors concerned with verifying content and fact-checking
- Researchers and activists who work with user-generated digital content, such as videos on YouTube, photographs from Instagram, and so on.
- Journalists and journalism students looking for an edge in discovering potentially hidden information in photographs and videos to further an investigation.
Aric Toler is an analyst at Bellingcat, leading Eurasia and Eastern Europe research. He focused on Russian literature and intellectual history in his graduate studies at the University of Kansas and worked as an intelligence specialist in the private sector before coming to Bellingcat. He leads training workshops in Russian and English to equip journalists, researchers, and activists with digital investigation and verification skills, with a focus on training journalists in the former Soviet Union. His research has focused on verifying Russian-language media, the conflict in eastern Ukraine, and the ongoing investigation into the downing of Flight MH17.
How do you establish the originality of a photo or video?
How do we locate where a photo or video was taken?
How do we know when a photo or video was taken?
What else can we discover once we know when and where a photo or video was taken?
Who can view: Everyone
Webinar Price: $19.00
Webinar ID: 0825b994a8bb
DigitalEd @ MediaShift
DigitalEd is a series of live online trainings offered by MediaShift, the premier destination for insight and analysis at the intersection of media and technology.
VIEW CHANNEL CONTACT
Learn the Way Day 1 (2020) Tuesday's Class
Tue, 21 Jan · 12:00:00 PM
VA Meeting
Piano Lab
The GHB Business Model
Global Home ...
All DigitalEd @ MediaShift webinars
Powered by BigMarker


Welcome to the Wall Centre False Creek. This SW 1-bedroom unit features an UNOBSTRUCTED water and city view with plenty of natural light. Inside features a professional Chef's kitchen with S/S appliances, 6 burner gas range, beautiful stone countertops and more! Comes with an extra-large parking space and storage. Centrally located to Canada Line Skytrain, downtown, Science World, restaurants, shopping, and more! Perfect for move-in or investment. A MUST SEE!!! Call for your private viewing!


Crescent 21 mm x 1/2 in. Metric 12 Standard Socket 1 pc.
1/2 inch drive deep length, 12-point sockets. Made of Chrome Vanadium alloy steel. Surface Drive technology reduces fastener rounding. Nickel chrome plated finish. Meets ANSI and ASME specifications.


21 year old Daescia DeMoranville was crowned Miss Rhode Island USA at the end of last year. She stands 1.7m tall and will represent her state at the next Miss USA competition. Rhode Island last placed in 2015.
I really like her. She's got potential!
Not Anea or Olivia's appeal but she has her own identity that can spell out on the competition night.


This season, I am teaming up with my good friend Shawn of Old Town Roasting again to create 3 harmonious morning treats to compliment with his 3 brand new single origin types of coffee roasts for a taste of spring! And thus...this menu was born...for one day only!
The Last Two Months - One Word: Grateful.
We want to share this Holiday recipe with you in collaboration with Master of One Podcast, Recipe Schmecipe, and Old Town Roasting to complete the ultimate...HOLIDAY MEAL TIME WITH FRIENDS!
Pardon our powdered sugar dust!
It's a salmon salad...on the crispier side! This salad is super flexible(as are most salads!), and you can choose to cook the salmon however you like - I've pan-fried and baked (-it really just literally depends on the weather-), but either way, it's simple and delicious.
NY Fashion Week is upon us, so we thought we would enlighten you with another NYC Edition post...with just a hint of the food experienced there!
That's right folks -Roasted Garlic Macaroni and Cheese with Bacon Yumminess. It's time to indulge in the savory... right before you get ready to detox for the Summer, right?
Let's host a brunch...because who doesn't like brunch? I have found that bonding over food (especially with great company!) has always forged lasting memories and new friendships.
Because you really do have to be a Ninja to prepare breakfast in bed to surprise your dear mother or guardian on her special day.
We have some simple,classic go-to breakfast ideas to get the gears going.
We would like to officially welcome Chef Eddie Aguilera to the S+C Team!
Eddie describes his inspiration and love for food as "...a way to bring people together through my own form of self-expression."
Learn more about Eddie on our blog!
We love that there are markets everywhere almost everyday in the city!
Check out some of our favorites here!


text:
FairPlay Employer
Chwarae Teg Events
8508A5AA-2461-4130-AA38-8317D4CBE869Created with sketchtool.	8508A5AA-2461-4130-AA38-8317D4CBE869Created with sketchtool.
Wonderful Welsh Women – Interview with Lesley Kirkpatrick
Tell us about your job, what does it entail day to day?
I am the CEO of educational charity and science discovery centre Techniquest. One of the most important aspects of my role is to help Wales develop a scientifically literate society and to ensure that Techniquest plays a fundamental role in supporting that aim. My focus is twofold: inspiring the next generation of young scientists through interactive STEM engagement activities and school outreach programmes; and secondly, to embed a passion for science in Welsh culture across all generations.
As part of my role I communicate with a whole host of different people, including business leaders, innovative STEM researchers, educational experts and community leaders to ensure Techniquest's message is reaching a wide and diverse audience. As a result, my role is incredibly diverse, but equally rewarding. I not only get the opportunity to work with some of Wales's most inspiring and innovative leaders across a range of sectors, but most importantly it means Techniquest is influencing scientific educational initiatives nationwide.
What do you enjoy most about your work? What gets you out of bed in the morning?
Seeing the significant impact Techniquest has on the STEM learning potential of young people across Wales is incredibly rewarding. Being able to support them in their educational journey and potentially inspire them to undertake a career in STEM really motivates me in my daily activities and gives me enduring job satisfaction. Equally important is Techniquest's vision for the future which is to make STEM accessible to all ages. I have always firmly believed in Techniquest's ability to be one of the UK's leading science and discovery centres and as such, I am passionate about shaping its future strategy.
What has your career progression looked like? Where did you start?
Over the past 28 years I have worked across the fields of regeneration, economic development and planning in local government. My roles have included Director of Business and Development for Brecon Beacons National Park and Head of Regeneration and Development for Powys County Council.
In 2013, I decided to move into the voluntary sector to head up The Prince's Trust Cymru as Wales Director where I was responsible for delivering educational and employability programmes for thousands of disadvantaged young people across the country. It was following this role, and thanks to the confidence it gave me within the sector, that I decided to join Techniquest as its CEO in 2016. I was confident I could use my past experience in collaborative working, developing robust partnerships amongst the public, private and voluntary sectors in order to support Techniquest in achieving its aims.
What first inspired you to work in this field?
After working in planning and regeneration in the public sector for 23 years, I felt I wanted to make a step change in my career and the third sector was an obvious choice for me. Here I felt I could make a real difference. I had always been acutely aware of the funding shortfalls and challenges faced by many organisations across the voluntary sector (and indeed the public sector) and I felt my acquired knowledge and experience would allow me to face these inherent challenges head on and support their development. The biggest driving factor for me was the desire to make a difference and influence positive change.
What has been your greatest achievement in your work to date?
Undoubtedly, my greatest achievement to date has been my appointment as CEO of Techniquest and driving the centre's continued growth and expansion across Wales. This year I have also achieved another milestone having supported Techniquest in securing over £5 million of funding to radically transform our science discovery centre in Cardiff Bay and make science more accessible to people of all ages.
Our Science Capital project is a huge step for the charity, and will encompass an extension of our building on Stuart Street and a repositioning exercise to extend and diversify our audiences. Critically, this project is about social and cultural change and I am incredibly proud of what we have achieved so far and in such a short space of time. The Science Capital is also about securing a sustainable future for this very special charity.
What would you like to achieve in your work before you retire?
I want to make sure that our ambitious vision for Techniquest is implemented and that its future is secured.
Who were your role models when you were starting out in your career?
When I worked in Cynon Valley Borough Council in the 1990s I had a boss called Anne. I learnt so much from her, in lots of ways. She's now Director of Managed Growth & Communities at Solihull Metropolitan Borough Council.
Which female role models inspire you today?
I have always been inspired by the work of American psychologist Susan Jeffers, the advice she offered about overcoming fears has been inspirational and really motivated me in my career and personal life.
Do you think that women role models are visible enough, do you think that more should be done to promote the achievements of women?
In recent years I have met and worked with many inspirational women in Wales. This is incredibly encouraging, and since starting my career I would definitely say that the percentage of women achieving success and recognition across all sectors has risen significantly. Not only that, it is also fantastic to see the professional and personal achievements of influential women being celebrated widely, and their valuable opinions and experience being utilised to truly make a difference across all professions.
What do you think are the barriers facing women?
Across society, I feel we are now more socially conscious about the potential gender barriers which could prevent women from achieving their potential. While I recognise that in some industries there is undoubtedly still progress to be made, I have been encouraged by what I have seen across the STEM sector, and hope that women across all professions feel they are fairly represented and supported to follow their passions.
Are there any barriers specific to your field of work facing women?
Traditionally we have seen a shortage of young women studying Science, Technology, Engineering and Mathematics subjects at GCSE, A Level and university which has then had a detrimental impact on the representation of women across professional STEM roles. At Techniquest we have been working to promote STEM engagement among young women at a classroom level and also through our discovery centre, in a bid to bridge this gender gap and prevent a future shortfall of skilled women in STEM.
What advice would you give your ten year old self?
Never give up, believe in yourself and always strive to make a positive impact.
What advice would you give to young women today?
Learning and listening really are the keys to success and reaching your potential, so I would always urge women to indulge their passion for knowledge and continuous improvement in the workplace and if it is a career in STEM you are interested in, then there are fantastic opportunities for you to explore. There's no such thing as conventional when it comes to choosing your career, so don't be afraid to try and give it your best. For instance, I studied Town Planning at Cardiff University and look at me now – heading up the best science discovery centre in the UK!
Tweets by chwaraeteg
Sign up to receive updates about our work fighting gender inequality in Wales. We'll keep you updated with the latest news, campaigns, events and opportunities to get involved.
Our Impact (2019-2020)
Coronavirus | Women in Wales
Gender Equality Review
Purple Plaques
Wonderful Welsh Women
Feminist Economic Recovery Plan for Wales
Briefing Paper: The case for statutory quotas in politics
Consultation response: Reform of the Gender Recognition Act
The Impact of Covid-19 on women in Wales
"Society is the Disability": Disabled Women and Work
'Not Just For Boys' – Women in IT with DVLA
'Not Just For Boys' – Women in Construction with Vinci Construction
8508A5AA-2461-4130-AA38-8317D4CBE869Created with sketchtool.	8508A5AA-2461-4130-AA38-8317D4CBE869Created with sketchtool.	8508A5AA-2461-4130-AA38-8317D4CBE869Created with sketchtool.
UK Charity Number: 1084466 - FAIR PLAY (Workforce) Ltd.


text:
Justia Patents US Patent Application for LOGIN METHOD AND APPARATUS, AND OPEN PLATFORM SYSTEM Patent Application (Application #20170346805)
LOGIN METHOD AND APPARATUS, AND OPEN PLATFORM SYSTEM
The present disclosure is applicable to the field of network communications, and provides a login method and apparatus, and an open platform system. The method includes: receiving an Access Token parameter provided by a login platform after a user is authenticated and authorized; acquiring an open digital identity (OpenID) of the user by using the received Access Token parameter; and generating a corresponding command word according to a browser environment of a third-party page, and returning the command word to the third-party page, the command word including the Access Token parameter and the OpenID of the user. In the present disclosure, a login platform provides a unified callback address page for a third-party page, and the third-party page can access an open platform without developing a callback-free address page, thereby reducing development costs of the third-party page; a complete login and an openAPI call JS interface are provided and automatic update is supported, and a JS SDK of the latest version can be automatically applied without adjustment of the third-party page, and therefore can work on various intelligent terminals.
CROSS-REFERENCES TO RELATED APPLICATIONS
This application is a continuation of PCT Application No. PCT/CN2013/087780, filed on Nov. 25, 2013, which claims priority to Chinese Patent Application No. CN2012105050826, filed on Nov. 30, 2012, the entire contents of all of which are incorporated herein by reference.
FIELD OF THE TECHNOLOGY
The present disclosure generally relates to the field of network communications and, more particularly, relates to a login method and apparatus, and an open platform system.
BACKGROUND OF THE DISCLOSURE
A user can log in to a third-party page by using an account of Qzone, Renren, Kaixin, Sina Weibo, Sohu Weibo, Tecent Weibo, Taobao, Douban, MSN, or Google. The login method can gain more effective promotion for the site of the third-party page; can save operational costs of registering an account and costs of subsequently memorizing website accounts and passwords for the user; and can learn rich and valuable content from small and medium-sized websites for an open platform such as Qzone.
At present, most of logins provided by most popular websites may directly provide Andriod and IOS software development kits (SDKs) and the like, and costs of website development are relatively high. However, in an application of an intelligent terminal, many websites do not provide a callback address accessed in a Web manner. Instead, many websites often designate a pseudo protocol in the SDK when the page jumps to a callback address page, end an http request after the page jumps to the callback address page, and directly capture an Access Token parameter from the address.
Logins provided by a part of websites can provide a callback-free address page, for example, Sina Weibo supports a callback-free address page manner, and as shown in FIG. 1, an implementation process is as follows.
1. A login button trigger event of a third-party page is transmitted, by using a message transmission method (postMessage) of a browser, to a platform background service having the same domain name as a login platform.
2. The platform background service opens a new window of a platform login page, and the user completes a login process.
3. The platform login page jumps to a platform cross-domain agent page that is transparent to a third party, and returns related information such as the access Token to the platform cross-domain agent page.
4. The platform cross-domain agent page transmits the related information such as the Access Token to the platform background service.
5. The platform background service transmits the information back to the third-party page by using the browser and notifies that the login is successful.
In the foregoing existing process, the third-party page, the platform background service, and the login platform do not necessarily have the same domain name, that is, the whole process is not necessarily triggered in one event. When the third-party page and the login platform have different domain names, direct communications between the third party and a platform cannot be performed because of the problem of same-origin policy limitations. A part of platforms have implemented some cross-domain communications, but an opened login page may be blocked by the browser at the start step, and implementation mechanism may need to be significantly improved. Moreover, JavaScript SDKs (JS SDKs) provided by some SNS (mainstream social networking services) media websites do not support direct calling of an openAPI, and most of the provided JS SDKs are unavailable in an environment such as an intelligent terminal (or smart terminal), which brings great inconvenience to the development of the third-party page.
Embodiments of the present invention provide a login method, so as to solve the problem that a callback address of an agent page platform is needed during logging, which brings great inconvenience to the development of a third-party page.
According to one aspect of the present disclosure, a login method is provided. The method includes: receiving an Access Token parameter provided by a login platform after a platform user is authenticated and authorized; acquiring an open digital identity (OpenID) of the platform user by using the received Access Token parameter; and generating a command word according to a browser environment of a third-party page, and returning the command word to the third-party page, the command word including the Access Token parameter and the OpenID of the platform user.
According to another aspect of the present disclosure, a login apparatus is further provided. The apparatus includes: an Access Token parameter receiving unit configured to receive an Access Token parameter provided by a login platform after a platform user is authenticated and authorized; an OpenID acquisition unit configured to acquire an OpenID of the platform user by using the received Access Token parameter; and a command word returning unit configured to generate a command word according to a browser environment of a third-party page, and return the command word to the third-party page, the command word including the Access Token parameter and the OpenID of the user.
According to still another aspect of the present disclosure, an open platform system is further provided. The open platform system includes a login apparatus. The login apparatus includes an Access Token parameter receiving unit, configured to receive an Access Token parameter provided by a login platform after a platform user is authenticated and authorized, an OpenID acquisition unit, configured to acquire an OpenID of the platform user by using the received Access Token parameter, and a command word returning unit, configured to generate a command word according to a browser environment of a third-party page, and return the command word to the third-party page, the command word comprising the Access Token parameter and the OpenID of the platform user.
According to yet another aspect of the present disclosure, a non-transitory computer readable storage medium is provided. The non-transitory computer readable storage medium includes a computer readable program stored thereon. When being executed, the computer readable program causes a computer to implement a login method. The method includes: receiving an Access Token parameter provided by a login platform after a platform user is authenticated and authorized; acquiring an open digital identity (OpenID) of the platform user by using the received Access Token parameter; and generating a command word according to a browser environment of a third-party page, and returning the command word to the third-party page, the command word comprising the Access Token parameter and the OpenID of the platform user.
As disclosed, a login platform provides a unified callback address page for a third-party page, and the third-party page can access an open platform without developing a callback-free address page, thereby reducing development costs of the third-party page. A complete login and an openAPI call JS interface are provided and automatic update is supported, and a JS SDK of the latest version can be automatically applied without adjustment of the third-party page, and therefore can be operated on various intelligent terminals.
The following drawings are merely examples for illustrative purposes according to various disclosed embodiments and are not intended to limit the scope of the present disclosure. The embodiments of the present invention are described below with reference to the accompanying drawings. In these accompanying drawings:
FIG. 1 is an implementation flowchart of a callback-free address page login according to the existing technology;
FIG. 2 is an implementation flowchart of a login method according to an embodiment of the present invention;
FIG. 3 is an implementation flowchart of returning a command word according to an embodiment of the present invention;
FIG. 4 is an implementation flowchart of a callback-free address page login according to an embodiment of the present invention;
FIG. 5 is a structural diagram of a login apparatus according to an embodiment of the present invention; and
FIG. 6 illustrates an exemplary computing device consistent with the disclosed embodiments.
The following further describes embodiments of the present invention in detail with reference to the accompanying drawings. It should be understood that the specific embodiments described herein are only used to explain the present disclosure, but are not used to limit the present disclosure.
In the embodiments of the present invention, a login platform provides a unified callback address page for a third-party page, and the third-party page can access an open platform without developing a callback-free address page, thereby reducing development costs of the third-party page.
FIG. 2 shows an implementation flowchart of a login method according to an embodiment of the present invention. The login method starts from step S201.
Step S201: Receive an Access Token parameter provided by a login platform after a user (or a platform user) is authenticated and authorized.
Step S202: Acquire an OpenID of the user by using the received Access Token parameter.
In one embodiment, the OpenID is, for example, a decentralized open free framework used for a user-centered digital identity.
In the OpenID, a user (EndUser) uses an OpenID identifier as a network pass. A relying party (RP) in the OpenID is, for example, an online resource, and can access an object of the RP by using the OpenID identifier. An OpenID provider (OP) is, for example, a site, and the user can declare the OpenID in the site, then log in, and authenticate an identity for any RP.
The RP is generally presented in the form of the identifier provided by the user, and the identifier is standardized as a declarative identifier. A browser of the user is redirected to the OP, and in this way, the user can provide a password thereof and make the identity authenticated. If the authentication succeeds, a user agent may be forwarded to a security resource that the user is trying to access. If the user authentication fails, the RP may reject any access.
The OP is responsible for sending the identifier and executing user identity authentication. The OP collects and keeps some basic information of each user. When the OP is required to authenticate the declarative identifier, the browser of the user is directly switched to a login page. The user inputs a password thereof on the page, and if the user identity authentication succeeds, the OP may switch the browser to a location designated by the RP. If the user identity authentication fails, the user may receive a message indicating that the identity authentication fails from the OP.
As an embodiment of the present invention, a browser environment also needs to be detected when a platform user accesses a third-party page.
In one embodiment, the browser environment of the third-party page can be determined by detecting version information of a browser lE and can also be determined by using other manners. When the browser environment of the third-party page is determined by detecting the version information of the IE, the version information includes a higher version browser environment such as IE8 and IE 9, and a lower version browser environment such as IE6 and IE 7.
Step S203: Generate a command word according to a browser environment of a third-party page, and return the command word to the third-party page.
In one embodiment, the command word may include the Access Token and the OpenID of the user.
In one embodiment, an example format of the command word is as follows:
invoke@@@QC.Login._onLoginBack#OpenID, Access Token.
Under different browser environments, there are different manners of returning a command word. In one embodiment, the command word can be returned to the third-party page by using a return manner supported by the browser of the third-party page.
In one embodiment, specific steps of returning the command word to the third-party page by using a return manner supported by the browser of the third-party page, as shown in FIG. 3, are described in detail as follows.
Step S301: Detect whether an opener supports a postMessage of the browser, and perform step S302 if the opener supports the postMessage of the browser; or perform step S303 if the opener does not support the postMessage of the browser.
Step S302: Return the command word by using an opener. postMessage.
Step S303: Detect whether Local Connection of Flash is ready, and perform step S304 if the Local Connection of Flash is ready; or perform step S304 if the Local Connection of Flash is not ready.
Step S304: Return the command word by using Flash.
Step S305: Prompt, according to a detected situation of the browser, the user to perform a corresponding operation.
For example, the user is prompted to install a Flash plug-in when it is detected that the user does not install the Flash plug-in.
In one embodiment, higher version IE browser environments have a protection mode, and in the protection mode, the browsers are restricted by default to be inaccessible to each other. In this case, Flash needs to be used to return the command word.
In one embodiment, an opener refers to "who opens me", for example, a page A pops up a window of a page B by using window.open, a window in which the page A is located is an opener of the page B, and the page B can access the page A by using an object of the opener.
As an embodiment of the present invention, whether Local Connection of Flash is ready can also be detected; and if the Local Connection of Flash is ready, the command word is returned to the third-party page by using Flash.
FIG. 4 shows an implementation process of a callback-free address page login according to an embodiment of the present invention, and the details are as follows.
1. A login button trigger event of a third-party page is transmitted to a platform login page by using a postMessage of a browser.
2. The platform login page jumps to a platform authorization page, and the platform authorization page authenticates user information.
3. After the platform authorization page authenticates the user information, a platform background service carrying an Access Token parameter jumps page to a universal callback address page.
4. The universal callback address page receives the Access Token parameter provided by the platform background service, acquires an OpenID of a user by using the received Access Token parameter, detects a browser environment of the third-party page when the platform user accesses the third-party page, generates a corresponding command word according to the browser environment of the third-party page, and returns the command word to the third-party page by using a return manner supported by the browser of the third-party page.
5. After receiving the returned command word, an opener of the third-party page parses the command word and triggers an event that the opener page receives the returned information, and a default behavior of the triggered event is to update the "login" button to a state of "logged-in".
The dotted part in FIG. 4 is configured in the login platform. When the third-party page is logged in to, the login platform provides a unified callback address page without relying on the platform background service and a platform cross-domain agent page any more.
FIG. 5 shows a structure of a login apparatus according to an embodiment of the present invention. For ease of description, only the part related to this embodiment of the present invention is shown.
The login apparatus may be widely used in various open platform systems, and a third-party page can access an open platform without developing a callback-free address page.
As an embodiment of the present invention, the login apparatus includes an Access Token parameter receiving unit 51, an OpenID acquisition unit 52, a browser environment detection unit 53, and a command word returning unit 54.
The Access Token parameter receiving unit 51 receives an Access Token parameter provided by a login platform after a user is authenticated and authorized.
The OpenID acquisition unit 52 acquires an OpenID of the user by using the Access Token parameter received by the Access Token parameter receiving unit 51.
The browser environment detection unit 53 detects a browser environment of the third-party page when the platform user accesses the third-party page.
The command word returning unit 54 generates a command word according to the browser environment of the third-party page detected by the browser environment detection unit 53, and returns the command word to the third-party page.
In one embodiment, the command word includes the Access Token and the OpenID of the user. As an embodiment of the present invention, under different browser environments, there are different manners of returning a command word. In one embodiment, the command word is returned to the third-party page by using a return manner supported by the browser of the third-party page.
As an embodiment of the present invention, the command word is returned to the third-party page by using a return manner supported by the browser of the third-party page. If an opener supports a postMessage of the browser, the command word returning unit 54 returns the command word to the third-party page by using an opener. postMessage; and if the opener does not support the postMessage of the browser, the command word returning unit 54 returns the command word to the third-party page by using Flash.
As an embodiment of the present invention, the command word is returned to the third-party page by using a return manner supported by the browser of the third-party page. The command word returning unit 54 returns the command word to the third-party page by using Flash.
According to an embodiment of the present invention, the login method shown in FIG. 2 may be a login method executed by units of the login apparatus shown in FIG. 5. For example, step S201 shown in FIG. 2 may be executed by the Access Token parameter receiving unit 51 shown in FIG. 5; step S202 shown in FIG. 2 may be executed by the OpenID acquisition unit 52 shown in FIG. 5; and step S203 shown in FIG. 2 may be executed by the command word returning unit 54 shown in FIG. 5.
According to another embodiment of the present invention, units of the login apparatus shown in FIG. 5 can be separately or combined as one or more other forming units, or one (or more) unit(s) herein can further be divided into multiple forming units with desired functions. In this way, same operations can be implemented, and implementation of the technical effects of embodiments of the present invention is not affected.
According to still another embodiment of the present invention, the login apparatus shown in FIG. 5 can be constructed by running a computer program (including program code) that can execute the login method shown in FIG. 2 on a computing device, for example, as a computer, that includes processing elements and storage elements such as a central processing unit (CPU), a random access memory (RAM), and a read-only memory (ROM) so as to implement the login method according to the embodiments of the present invention. The computer program can be recorded on, for example, a computer readable record medium, and can be mounted in the computing device by using the computer readable record medium and runs in the computing device.
For example, the disclosed methods can be implemented by an apparatus/device including one or more processor, and a non-transitory computer-readable storage medium having instructions stored thereon. The instructions can be executed by the one or more processors of the apparatus/device to implement the methods disclosed herein. In some cases, the instructions can include one or more units corresponding to the disclosed methods.
For example, FIG. 6 illustrates an exemplary computing device capable of implementing the disclosed methods, consistent with the disclosed embodiments. As shown in FIG. 6, the exemplary computing device 600 may include a processor 602, a storage medium 604, a monitor 606, a communication module 608, a database 610, peripherals 612, and one or more bus 614 to couple the devices together. Certain devices may be omitted and other devices may be included.
Processor 602 may include any appropriate processor or processors. Further, processor 602 may include multiple cores for multi-thread or parallel processing. The processor 602 may be used to run computer program(s) stored in the storage medium 604. Storage medium 604 may include memory modules, such as ROM, RAM, and flash memory modules, and mass storages, such as CD-ROM, U-disk, removable hard disk, etc. Storage medium 604 may store computer programs for implementing various disclosed processes, when executed by processor 602. In one embodiment, storage medium 604 may be a non-transient computer-readable storage medium having a computer program stored thereon, when being executed, to cause the computer to implement the disclosed methods.
Further, peripherals 612 may include I/O devices such as keyboard and mouse, and communication module 608 may include network devices for establishing connections, e.g., through a communication network such as the Internet. Database 610 may include one or more databases for storing certain data and for performing certain operations on the stored data, such as webpage browsing, database searching, etc.
In one embodiment, a login platform provides a unified callback address page for a third-party page, and the third-party page can access an open platform without developing a callback-free address page, thereby reducing development costs of the third-party page; a complete login and an openAPI call JS interface are provided and automatic update is supported, and a JS SDK of the latest version can be automatically applied without adjustment of the third-party page, and therefore can work on various intelligent terminals.
The foregoing describes embodiments of the present invention, but they are not intended to limit the scope of the present disclosure. The scope of the present disclosure is defined by the appended claims. Any modification, equivalent replacement, or improvement made within the spirit and principle of the present disclosure shall fall within the protection scope of the present disclosure.
1-20. (canceled)
21. A login method, comprising:
receiving, by a universal callback address page, an Access Token parameter provided by a login platform in response to a login event triggered at a third-party page;
acquiring, at the universal callback address page, an open digital identity (OpenID) of the platform user by using the received Access Token parameter;
generating, at the universal callback address page, a command word according to a browser environment of the third-party page, the command word comprising the Access Token parameter and the OpenID of the platform user; and
returning the command word to the third-party page.
22. The method according to claim 21, further comprising:
before generating the command word according to the browser environment of the third-party page, detecting the browser environment of the third-party page when the platform user accesses the third-party page.
23. The method according to claim 21, wherein returning the command word to the third-party page comprises:
returning the command word to the third-party page by using a cross-domain return manner supported by the browser, wherein the browser is redirected from the universal callback address page at a first domain to the third-party page at a second domain with the command word.
returning the command word to the third-party page by using an opener.postMessage, in response to detecting that an opener supports a message transmission method (postMessage) of the browser; and
returning the command word to the third-party page by using Flash in response to detecting that the opener does not support the postMessage of the browser.
25. The method according to claim 21, wherein returning the command word to the third-party page further comprises:
detecting whether Local Connection of Flash is ready; and
returning the command word to the third-party page by using Flash, in response to detecting that the Local Connection of Flash is ready.
26. The method according to claim 21, wherein the universal callback address page is provided by the login platform after a platform user is authenticated and authorized at a platform authorization page.
27. A login apparatus, comprising:
a memory; and
a processor coupled to the memory, the processor being configured to:
receive, by a universal callback address page, an Access Token parameter provided by a login platform in response to a login event triggered at a third-party page;
acquire, at the universal callback address page, an open digital identity (OpenID) of the platform user by using the received Access Token parameter;
generate, at the universal callback address page, a command word according to a browser environment of the third-party page, the command word comprising the Access Token parameter and the OpenID of the platform user; and
return the command word to the third-party page.
28. The apparatus according to claim 27, wherein the processor is further configured to:
before generating the command word according to the browser environment of the third-party page, detect the browser environment of the third-party page when the platform user accesses the third-party page.
return the command word to the third-party page by using a cross-domain return manner supported by the browser of the third-party page, wherein the browser is redirected from the universal callback address page in a first domain to the third-party page in a second domain with the command word.
return the command word to the third-party page by using an opener.postMessage, in response to detecting that an opener supports a postMessage of the browser; and
return the command word to the third-party page by using Flash, in response to detecting that the opener does not support the postMessage of the browser.
return the command word to the third-party page by using Flash, in response to detecting that the Local Connection of Flash is read.
32. The apparatus according to claim 27, wherein the universal callback address page is provided by the login platform after a platform user is authenticated and authorized at a platform authorization page.
33. A non-transitory computer readable storage medium comprising a computer readable program stored thereon, wherein, when being executed, the computer readable program causes a computer to implement a login method, the method comprising:
34. The medium according to claim 33, wherein the method further comprises:
35. The medium according to claim 33, wherein returning the command word to the third-party page comprises:
37. The medium according to claim 33, wherein returning the command word to the third-party page further comprises:
detecting whether the browser environment includes an IE browser environment in a protection mode; and
returning the command word to the third-party page by using Flash, in response to detecting that the browser environment includes the IE browser environment in the protection mode.
39. The medium according to claim 33, wherein the universal callback address page is provided by the login platform after a platform user is authenticated and authorized at a platform authorization page.
Inventors: JINJING CAO (Shenzhen), MINGHUI WANG (Shenzhen)
International Classification: H04L 29/06 (20060101); H04L 29/08 (20060101);


text:
Q: How to run a command on startup of sails.js How do you run a command on sails.js? I'm trying to clear a collection before any routes or controllers are executed. However, after models are loaded.
In express it was easy, you could place it in apps.js.  Can't find where it executes in sails.js
Example code:
User.update({}, {$set : {'socket': [] } }, {'multi': true}, function(err){ if (err){ console.log(err)} });

A: You can put startup logic in /config/bootstrap.js.  Just remember to call the callback function at the end so that Sails continues to lift!

A: Here is an example in /config/bootstrap.js that sets up some users when there is none:
module.exports.bootstrap = async function(done) {
  // Set up administrators when there is no users
  if ((await Users.count()) === 0) {
    await Users.createEach([
      { email: "julien@gmail.com", password: "changemeasap" },
      { email: "nada@gmail.com", password: "changemeasap" }
    ]);
  }

  // Don't forget to trigger `done()` when this bootstrap function's logic is finished.
  // (otherwise your server will never lift, since it's waiting on the bootstrap)
  return done();
};