text:
JDownloader Turbocharges File Sharing Sites [Downloads]
Source: http://lifehacker.com/5513415/jdownloader-turbocharges-file-sharing-sites
Windows/Mac/Linux: If you're a frequent visitor to popular file sharing sites like Rapidshare you'll want to grab a copy of JDownloader, a java-based tool that completely automates the downloading process.
JDownloader takes all the most irritating things about downloading from popular sharing sites like Rapidshare and Megaupload and either outright negates them or makes them more tolerable. Feed links, even links to multi-part downloads into JDownloader and it will automate the process, circumvent captcha, tweak wait times, auto-reconnect, and even run on a schedule.
JDownloader works as a stand-alone application or with Firefox through integration with the popular Flashgot extension. JDownloader is free, java-based, and available for Windows, Mac, and Linux. Have a favorite download tool, especially for file-sharing sites? Let's hear about it in the comments.
JDownloader [via Freeware Genius]
OCZ bids for solid state throne with new Vertex 2 and Agility 2 SSDs
Source: http://www.engadget.com/2010/04/10/ocz-bids-for-solid-state-throne-with-new-vertex-2-and-agility-2/
For the past nine months, Intel's X25-M G2 has been the solid state drive to beat, and manufacture as it might, rival OCZ hasn't been able to mass produce a SSD capable of matching its fantastic all-around performance. The original Vertex 2 Pro might have done the trick, but the company scrapped it after the speedy SandForce SF-1500 controller was found wanting, and only 5,000 of the 270MB / sec, 15,000 IOPS drives were ever produced. But now, OCZ's back with SandForce's cheaper SF-1200 chip, and surprise of surprises, the drives it power are even faster -- at least on paper -- than before. The new Vertex 2 and Agility 2 SSDs boast maximum sequential read speeds of 285MB / sec and 275MB / sec writes, and can perform those all-important 4K random writes at up to 50,000 IOPS on a Vertex, or a very respectable 10,000 IOPS for the budget Agility line. The company expects both drives to ship in the next few weeks in usable capacities of 50GB, 100GB and 200GB (provisioning an extra 14GB of overhead for each 50GB of storage) with 400GB SSDs planned further down the road. Now then, OCZ, how about that price tag?
OCZ bids for solid state throne with new Vertex 2 and Agility 2 SSDs originally appeared on Engadget on Sat, 10 Apr 2010 08:32:00 EST. Please see our terms for us! e of fee ds.
Permalink TrustedReviews | Business Wire | Email this | Comments
How WebKit2 Will Fix Your Slow, Crashy Browsers [Browsers]
Source: http://gizmodo.com/5513499/how-webkit2-will-fix-your-slow-crashy-browsers
Ever used Safari? Chrome? An iPhone? Android? Then you've used WebKit, the rendering engine that powers most of the best browsers in the world. Up next: WebKit2 with a new "split process model." it's going to be awesome. Subtly!
The banner feature for WebKit2 is the new split process model:
Part of WebKit operates in the UI process, where the application logic also lives. The rest of WebKit, along with WebCore and the JS engine, lives in the web process. The web process is isolated from the UI process.
If this sounds familiar, that's because Chrome did something similar a while ago, isolating different pieces of the browser—and specific tabs, even—in difference system processes, so that if one crashes, the rest are undisturbed. (And Mozilla is looking at something similar for Firefox right now.)The difference, though, is in how WebKit2's process splitting is implemented:
Process management [is part] of what is provided by WebKit itself, so that it is easy for any application to use.
In other words, instead of breaking the browser into different system processes for the OS to manage, they're managed within the browser. The end result, though, is the same: If your Flash plugin or Javascript engine shits the bed, your browser won't crash, and the browsing will be mostly uninterupted. Even better, since the feature is built into the WebKit API, it can eventually be pushed to all browsers that use WebKit, including the iPhone.
There are plenty of other more dev-centric features which you can read about here, and if you're super-savvy, you can build the engine yourself right now. [via Ars Technica]
The Fastest Gaming Processors for Any Budget [PCs]
Source: http://gizmodo.com/5513561/the-fastest-gaming-processors-for-any-budget
If you don't have the time to research the benchmarks, fear not. Tom's Hardware has come to your aid with a simple list of the best gaming CPUs offered at each and every pricepoint.
Before You Read the List
The big news in March was the introduction of the worlds first hexa-core CPU for the desktop, Intel's Core i7-980X Extreme Edition processor. With six physical CPU cores and capable of running 12 threads thanks to Hyper-Threading, the 32nm Gulftown core is the most powerful desktop CPU on the planet, taking that top spot from the Core i7-975 Extreme processor. At $1,090 it's not a wise choice from a budgetary perspective, but we have to give it props for being the best gaming CPU money can buy. You can read more about the Core i7-980X Extreme here.
This list is for gamers who want to get the most for their money. If you don't play games, then the CPUs on this list may not be suitable for your particular needs. Pricing is based on some of the lowest US prices from online retailers. In other countries or at retail stores, your mileage will most certainly vary. Of course, these are retail CPU prices. We do not list used or OEM CPUs. With that in mind, let the list begin:
Best Gaming CPU: Under $90
Best Gaming CPU for ~$65:
Athlon II X2 245
With better CPUs encroaching on the Athlon II X2 250's price point, we shed a few dollars and reinstated the 245 as our choice for a gaming CPU on a rock-bottom budget.
This chip allows the flexibility to go one of two different ways: either drop it in as an upgrade for your Socket AM2+-based platform or build a brand new, low-cost Socket AM3 machine based on it. With a high 2.9 GHz clock speed, the Athlon II X2 245 offers excellent gaming performance at the price. Moreover, its 65W thermal design power is great for electricity- and heat-conscious enthusiasts.
The Athlon II X3 435 boasts three execution cores. And, compared to a dual-core processor, that extra core will make a notable difference in multi-tasking performance, as well as game play. This model also has good overclocking headroom if you want to push it a little further. On top of everything else, it recently dropped in price now that the new Athlon II X3 440 model has arrived.
Read our review of the Athlon II X3 435, right here.
From a stock performance standpoint, the Athlon II X3 440 only offers a 100 MHz speed bump over the Athlon II X3 435. However, the higher multiplier might help if your ultimate goal is overclocking.
When you consider the big picture, this CPU really offers an attractive combination of multiple CPU cores, high clock speed, low price, and overclockability. It is such a great gaming CPU, in fact, that it almost renders most of the CPUs in the $100 to $130 range redundant. As a result, most of our recommendations in this range are aimed specifically at overclockers and users upgrading an older platform.
Best Gaming CPU: $90-$105
Best gaming CPU for $100: None
As mentioned previously, the Athlon II X3 440 features such value-oriented (and yet wholly solid) gaming performance that it is difficult to recommend spending $100 to $130 for similar results. Having said that, other factors can come into play. For these reasons, the following CPUs are being given honorable mentions.
Frankly, the high clock rate of the Athlon II X3 440 allows it to perform better than an Athlon II X4 630 at stock frequencies in a great majority of games.
However, there are a few titles out there that will take advantage of a fourth CPU core, making the Athlon II X4 a potentially attractive choice to buyers who want all four CPU cores and are willing to overclock this processor. Moreover, as a general-purpose CPU (during the hours you don't spend gaming, of course), the quad-core solution is going to be superior. Now found as low as $100, true quad-core CPUs are well within the grasp of the budget gamer.
Read our review of the Athlon II X4, right here.
Phenom II X2 555 Black Edition
Although the dual-core Phenom II X2 555 Black Edition might be a bit slower than the less-expensive Athlon II X3 440 when it comes to gaming, it offers something that the Athlon II X3 doesn't have: an unlocked clock multiplier. Like all of AMD's Black Edition processors, the Phenom II X2 555 can be easily overclocked by simply upping its multiplier in the motherboard BIOS of your choice, earning this CPU a place on our recommended list for overclocking fans. Found online at $100, this CPU offers high-end overclocking features for a budget price.
Increased availability over the past few weeks cements our honorable mention status for this chip, which, again, is best suited to the enthusiasts willing to finesse its clock rate as high as possible.
Read our overclocking review of the Phenom II X2 555 Black Edition, right here.
Best Gaming CPU: $110-$125
Core 2 Duo E7500
At 2.93 GHz, the Core 2 Duo E7500 remains a good match-up against the Phenom II X3 720 Black Edition. Even without an unlocked multiplier, the E7500 is an excellent overclocker and won't disappoint. And the $110 price point is easy to swallow for upgraders.
It has a high clock rate, but its dual-core design won't be as nimble as AMD's triple-core offerings when it comes to multi-threaded apps. Most folks considering this CPU are probably trying to squeeze longevity from an older LGA 775 platform. If you're looking to upgrade your motherboard as well, it'd be best to consider a Phenom II or Core i3 instead.
Best gaming CPU for $120: 3-Way Tie
Offering a 100 MHz speed boost over the Athlon II X4 630, the new Athlon II X4 635 cannot be denied as a good option for overclockers who want four true execution cores.
This model isn't unlocked (it's not one of AMD's Black Edition chips), but it does sport a higher multiplier than the Athlon II X4 630, making it a solid quad-core processor with (ideally) a bit of scalability on the cheap. With a $120 asking price, there is a lot of value here.
The Core i3-530 is a promising gaming CPU, despite its two physical cores. More importantly, it opens up a viable budget alternative to the AM3 platform. At $120, this CPU is a great starting point.
Stock performance is usually quite good from what we've seen, although you can't expect Hyper-Threading to yield the same performance gains as an additional physical core or two.
If you don't believe us, check out Thomas Soderstrom's look at gaming performance on a Core i3-530.
We try and stick to retail processors when it comes to CPU recommendations because the costs of a cooler introduces a sizable variable. But in the case of the Phenom II X3 720, flagging retail availability forces us to make an exception.
The OEM version of this CPU is now $105. Add a $15 aftermarket cooler (such as the Cooler Master Hyper TX3), and you have a triple-core unlocked CPU on your hands for $120.
We're a bit torn here. On the one hand, we know that overclocking is the surest way to negate your warranty coverage. However, the Phenom II X3 720 Black Edition not only has that unlocked multiplier, but we've also had some luck unlocking the fourth core on a handful of samples. The chance may or may not be worth the extra money you drop in this chip. Bear in mind, though, that it's an "expensive" model for AMD to sell, and its starting to disappear fast. The retail version has all but disappeared.
Best gaming CPU for $140:
Another one of Intel's new Core i3 processors, the gaming data we have seen for this i3-540 looks promising. While it isn't going to perform all that much better than the -530, its higher multiplier will be a boon for overclockers, and the price might be justified for some.
Bear in mind that, although Intel launched this processor alongside the H55 and H57 chipsets, gamers are likely going to want to stick with P55 when they shop for an LGA 1156-equipped motherboard, even if it means ignoring the integrated graphics core built onto the Core i3-540. When used with Clarkdale-based processors, Intel's H55 and H57 chipsets aren't able to divide on-package PCI Express connectivity between CrossFire and SLI graphics configurations.
A former flagship of AMD's Phenom II family, the Phenom II X4 955 BE has been relegated to second-place status by the newer Phenom II X4 965 BE model. Now at $160, it offers a very compelling price/performance ratio for a true quad-core unlocked processor with gobs of cache. We should also mention that the 955 is now available in the newer C3 stepping like its 965 brother.
Read our review of the Phenom II X4 955 Black Edition, right here.
While the Phenom II X4 955 and 965 both share an unlocked multiplier, the new revision 965 model's C3 stepping has been shown to be quite overclock-friendly compared to previous models. If you're looking for an AMD processor with the maximum overclocking headroom, just make sure you're buying the new 125 watt C3 stepping of the processor, not the older 140 watt version.
Read our review of the new Phenom II X4 965 Black Edition, right here.
The Core 2 Quad line isn't as strong as Intel's lone Lynnfield-based Core i5 model, but the older processors certainly aren't slouches either. On a clock-for-clock basis, the Core 2 Quad tends to perform a little bit better than AMD's Phenom II X4.
This CPU is a strong competitor for the Phenom II X4 955 and will overclock well, despite its locked CPU multiplier. Even in the face of a somewhat low stock clock, 6MB of shared L2 cache and a speedy 1,333 MHz front side bus help the chip compete aggressively for less than $200. With the Phenom II X4 965 and Core i5-750 priced so close, this one should only really be a consideration for the gamer upgrading an LGA 775-based machine. This is as far as I'd recommend taking a 775 platform however, anything more expensive than this is better spent on a platform with a better upgrade path.
The new Core i5 brings top-of-the-line Nehalem-class performance at a $200 price point. We recently awarded it our Recommended Buy honor after seeing it stand up to more expensive CPUs in games and other demanding apps.
For those desiring the best possible performance, the Core i5-750 can be overclocked to great effect, performing similarly to the $1,000 Core i7-975 Extreme at its stock settings when pushed a bit.
Read our review of the Core i5-750, right here.
Past the Point of Reason:
With rapidly-increasing prices over $200 offering smaller and smaller performance boosts in games, we have a hard time recommending anything more expensive than the Core i5-750. This is especially the case since the Core i5-750 can be overclocked to great effect if more performance is desired, easily surpassing the stock clock rate of the $1,000 Core i7-975 Extreme.
Perhaps the only performance-based justification we can think of for moving up from a Core i5-750 is that LGA 1156 processors have an inherent limit of 16 PCIe lanes for graphics use. This is an architectural detail that the LGA 1156-based Core i5 and Core i7 processors share, so if a gamer plans to use more than two graphics cards in CrossFire or SLI, the LGA 1366 Core i7-900-series processors are the way to go.
To summarize, while we recommend against purchasing any CPU that retails for more than $200 from a value point of view, there are those of you for whom money might not be much of an object and who require the best possible performance money can buy. If you're buying several hundred dollars worth of graphics and are worried about a potential platform bottleneck, we recommend the following CPUs:
Intel's Core i7 has proven itself to be the most powerful gaming CPU option available, based on the data we have gathered. The Core i7-930 is a great choice for systems coupled with multiple graphics cards in an SLI or CrossFire configuration.
The motherboards and DDR3 RAM that the i7 architecture requires will bring the total platform cost higher than other systems, but the resulting performance should be worth the purchase price.
While the Core i5 performs similarly, there are a few applications and games that can take advantage of the Core i7 900-series' Hyper-Threading and triple-channel memory features, so spending the extra money on the Core i7-930 can pay off, particularly if you plan to overclock.
In addition, LGA 1156-based Core i5 and Core i7 processors are limited to 16 PCIe 2.0 lanes, but the LGA 1366-based Core i7-900s do not share this limitation, since they get their PCI Express connectivity from the X58 chipset. This makes the LGA 1366 Core i7 processors a good choice for CrossFire or SLI configurations with more than two graphics cards.
Best gaming CPU for $1090:
Core i7-980X Extreme
This six-core monster has stolen the bragging rights for the world's fastest CPU from the Core i7-975 Extreme. Despite the fact that most games don't utilize more than three CPU cores, this is the fastest gaming CPU currently available for purchase as our tests have shown. Is it worth $1,090? If you have money growing on trees, are afraid to try to overclock the Core i7-930, want the ease of overclocking that the Extreme Edition's unlocked multiplier provides, and are willing to pay for the bragging rights of having six CPU cores capable of running 12 threads, then it just might be.
Otherwise, the Core i7-980X Extreme is a hard sell from a value standpoint; you'd be better off investing more in graphics or solid state storage.
CPU Heirarchy Chart
What about this other CPU that's not on the list? How do I know if it's a good deal or not?
This will happen. In fact, it's guaranteed to happen because availability and prices change quickly. So how do you know if that CPU you've got your eye on is a good buy in its price range?
Here is a resource to help you judge if a CPU is a good buy or not: the gaming CPU hierarchy chart, which groups CPUs with similar overall gaming performance levels into tiers. The top tier contains the highest-performing gaming CPUs available and gaming performance decreases as you go down the tiers from there.
However, a word of caution: this hierarchy is based on the average performance each CPU achieved in our charts test suite using only four game titles: Crysis, Unreal Tournament 3, World in Conflict, and Supreme Commander. While we feel this represents an acceptable cross-section of typical gaming scenarios, a specific game title will likely perform differently. Some games, for example, will be severely graphics subsystem-limited, while others may react positively to more CPU cores, larger amounts of CPU cache, or even a specific architecture. We also did not have access to every CPU on the market, so some of the CPU performance estimates are based on the numbers similar architectures deliver. Indeed, this hierarchy chart is useful as a general guideline, but certainly not as a gospel one-size-fits-all perfect CPU comparison resource.
You can use this hierarchy to compare the pricing between two processors, to see which one is a better deal, and also to determine if an upgrade is worthwhile. I don't recommend upgrading your CPU unless the potential replacement is at least three tiers higher. Otherwise, the upgrade is somewhat parallel and you may not notice a worthwhile difference in game performance.
There you have it folks: the best gaming CPUs for the money this month. Now all that's left to do is to find and purchase them.
Also remember that the stores don't follow this list. Things will change over the course of the month and you'll probably have to adapt your buying strategy to deal with fluctuating prices. Good luck!
Follow Tom's Hardware on Twitter for more tech news, reviews, and exclusive updates! [Tom's Hardware]
The Reason Why Apple Is Not Enabling Multitasking In Old iPhones and iPods [Iphone Os 4]
Source: http://gizmodo.com/5513828/the-reason-why-apple-is-not-enabling-multitasking-in-old-iphones-and-ipods
When Jobs announced multitasking for iPhone OS 4, everyone got giddy... until Apple said that this important feature wouldn't work in older iThingies because of "hardware limitations". The hardware, however, fully supports multitasking. Why not enable it, then, Apple?
The fact is that the hardware in the old models of the iPhone and the iPod touch fully supports multitasking. By changing a single text line in a preferences file—the property list N82AP.plits—you can enable the new multitasking abilities in the new iPhone OS 4.
So why has Apple decided not to enable it? Most probably it is a matter of resources. The original iPhone, the iPhone 3G, and iPod touch 1st and 2nd generation have a quite slower CPU compared to the 3GS and third generation iPod touch. What is more important: They have a very limited RAM space, only 128 megabytes.
That probably makes multitasking slower than what Steve Jobs and Co. find acceptable. If an user keeps opening applications, it will probably affect the experience so much that many will be unhappy very fast. The question is: Shouldn't be this an option available in the system preferences? Most probably, Apple thought the benefits will never be enough even for advanced users, and the feature would confuse and frustrate normal consumers, opening a potential customer support nightmare.
Once the final version becomes available—and if they keep the hidden multitasking switch—we will see how good or bad the multitasking in these old devices is. [Twitter via Macstories]
Elonex announces iDock XL, iDock Aero and ã99 710EB e-reader, we go hands-on
Source: http://www.engadget.com/2010/04/09/elonex-announces-idock-xl-idock-aero-and-99-710eb-e-reader-we/
We stopped by Elonex's booth at The Gadget Show Live for its product launch extravaganza. First is the iDock XL screen dock for the iPhone / iPod touch, which sadly doesn't serve as an iPhone-to-iPad converter, but will let you do the usual video and photo display on its 10-inch 800x480 screen (the prototype pictured above has a smaller temporary screen). You'll find a removable battery that lasts for about four hours or almost twice that with a secondary internal battery, or you can leave the iDock XL plugged in via its micro-USB port. Available in May for £149 ($229).
More toys after the break, including a look at the iDock Aero and the 710EB e-reader.
Gallery: Elonex announces iDock XL, iDock Aero and £99 710 eBook, we go hands-on
Continue reading Elonex announces iDock XL, iDock Aero and £99 710EB e-reader, we go hands-on
Elonex announces iDock XL, iDock Aero and £99 710EB e-reader, we go hands-on originally appeared on Engadget on Fri, 09 Apr 2010 15:45:! 00 EST. Please see our terms for use of feeds.
Permalink | | Email this | Comments
Intel's 48-core processor destined for science, ships to universities soon
Source: http://www.engadget.com/2010/04/10/intels-48-core-processor-destined-for-science-ships-to-univers/
If you've been hankering to get your hands on that stamp-sized 48-core processor Intel introduced last year, you'd better brush off your doctorate -- the chipmaker says it will send samples of the CPU to researchers and academic institutions by the end of Q2. Clocked between 1.66GHz and 1.83GHz like Intel's Atom netbook chips, the 48 cores won't boost your framerates in Crysis -- rather, they're intended for linear algebra, fluid dynamics and server work -- but what we wouldn't give to try. Oh well -- suppose we'll just have to make do with puny 8- and 12-core chips for now.
Intel's 48-core processor destined for science, ships to universities soon originally appeared on Engadget on Sat, 10 Apr 2010 06:31:00 EST. Please see our terms for use of feeds.
Permalink | IDG News | Email this | Comments
Adobe distances itself from JooJoo, cites lack of 'direct relationship'
Source: http://www.engadget.com/2010/04/09/adobe-distances-itself-from-joojoo-cites-lack-of-direct-relati/
Well, this is just a huge surprise. In response to our not entirely glowing review of the JooJoo, Adobe's PR team has gotten in touch to inform us that Fusion Garage "has no direct relationship with Adobe." Citing the young startup's non-participation in the Open Screen Project and use of "a public beta release [of Flash] designed only for desktop use," Adobe is drawing a thick line between itself and the JooJoo, and urges us to instead look at the alternatives from its partners like HP, Dell and Lenovo. Mind you, not one of those companies is (as yet) selling a competing tablet, and it's not like there's some magical formula that will make 720p Flash video run smoothly on a bare Atom CPU (remember, Ion GPU acceleration is not yet available for the Linux-based JooJoo), but who are we to stand in the way of a carefully worded damage limitation statement? Click past the break for the entire thing.
Continue reading Adobe distances itself from JooJoo, cites lack of 'direct relationship'
Adobe distances itself from JooJoo, cites lack of 'direct relationship' originally appeared on Engadget on Fri, 09 Apr 2010 08:12:00 EST. Please see our terms for use of feed! s.
Samsung announces 1080p in-bezel CMOS sensor, webcam spying going HD
Source: http://www.engadget.com/2010/04/09/samsung-announces-1080p-in-bezel-cmos-sensor-webcam-spying-goin/
Next time you hit your local electronics emporium, you might just find the HD moniker attached to an unfamiliar category: bezel-integrated webcams. Samsung's newly announced S5K6A1 CMOS sensor can perform 720p video recording at 30fps or shoot 1.3 megapixel images, while its senior sibling S5K5B3 elevates those values to 1080p / 30fps and 2.1 megapixels, respectively. Touting an autofocus feature that helps with reading barcodes and business cards as well as improved low-light performance, Samsung tells us these new must-have laptop parts are set for mass production in the second quarter of this year. Samples are available today, so if your name's Michael Dell or Arimasa Naitoh, why not give Sammy a call?
Samsung announces 1080p in-bezel CMOS sensor, webcam spying going HD originally appeared on Engadget on Fri, 09 Apr 2010 07:14:00 EST. Please see our terms for use of feeds.
Permalink | Samsung | Email this | Comments
Uploadr Takes Screenshots, Shares Files and Folders With Ease [Downloads]
Source: http://lifehacker.com/5512744/uploadr-takes-screenshots-shares-files-and-folders-with-ease
Windows only: Free, portable application Uploadr takes screenshots or shares files on file sharing site Localhostr with a simple drag-and-drop interface—and it even has Jump List support for Windows 7 users.
Once you've installed the application or launched the portable version, you can simply drag files onto the interface to immediately upload them to previously mentioned file sharing site Localhostr. You can upload single files, or even entire folders of files, as long as they fit inside the 50MB total limit.
You can also use Uploadr to take screenshots of windows directly, and immediately upload them. Once you've done so, you can copy the URL to the clipboard for sharing, or if you head into the options you can enable automatic copy of the URL. Uploadr is a free download for Windows only.
Localhostr Uploadr
Samsung NX10 reviewed: a worthy alternative to Micro Four Thirds
Source: http://www.engadget.com/2010/04/08/samsung-nx10-reviewed-a-worthy-alternative-to-micro-four-thirds/
We doubt you need too much reminding about Samsung's "hybrid DSLR" shooter -- it's not every day you hear of a 14.6 megapixel APS-C sensor strapped inside a mirrorless body. Aiming to best Olympus and Panasonic at the game of tempting compact camera users up in price class and SLR image quality obsessives down in weight category, the NX10 is certainly an ambitious project. But does it succeed? According to dpreview, the control layout, user interface, ergonomics, and (crucially) image quality were all praiseworthy, though the sensor exhibited more noise than they would have liked and higher ISO images lost detail due to noise reducing algorithms. Photography Blog agreed that this camera is "an excellent first entry" into a developing market, and could only point out the proprietary NX lens mounting system and slightly bulkier dimensions than on Micro Four Thirds shooters as significant disadvantages. Check out the full reviews for some truly exhaustive analysis.
Samsung NX10 reviewed: a worthy alternative to Micro Four Thirds originally appeared on Engadget on Thu, 08 Apr 2010 09:17:00 EST. Please see our terms for use of feeds.
Permalink | dpreview, Photography Blog | Email this | Comments
What it takes to properly convert a 2D movie to 3D
Source: http://www.engadget.com/2010/04/08/what-it-takes-to-properly-convert-a-2d-movie-to-3d/
3DTVs are useless without content and while to some sports is the killer app for 3D, others prefer movies. When it comes to new movies, there's Avatar and then there's everything else -- most movies are converted to 3D instead of using 3D cameras. The company In-Three originally formed with the intent of converting classics like Star Wars to 3D -- yes Lucas says he wants to do all six -- but with all the money 3D movies are making in theaters today, In-Three is spending their time working with producers on new movies like Alice in Wonderland.
Anyone who saw both Alice and Clash of the Titans will tell you that all dimensionalization isn't created equal. While most didn't realize Alice wasn't actually shot in 3D, reviews of Clash were titled like "the first film to actually be made worse by being in 3D." While the dimensionalization of Alice took four to six months, Clash was done in eight to ten weeks -- as well as being converted by different companies. We can't blame 'em for trying though, as In-Three tells 3DCineCast blog it uses four to six hundred people while wearing 3D glasses 50 to 75 percent of the day, and costs about 80 to 100 thousand dollars per minute to do dimensionalization properly. Which is just crazy as well as makes us wonder how that's cheaper than just using 3D cameras. The good part about doing it in post processing though is it gives the creators more artistic control as the dimensionalization is done by hand, frame by frame. Of course the concern is that people will see movies like Clash of the Titans in 3D and write off the dimensionalization process all together, or worse 3D entirely.
What it takes to properly convert a 2D movie to 3D originally appeared on Engadget on Thu, 08 Apr 2010 11:47:00 EST. Please see our terms for use of feeds.
Permalink | 3! DCineCas t Blog | Email this | Comments
New Mitsubishi 3D DLPs arrive for 2010, is this the mysterious StreamTV?
Source: http://www.engadget.com/2010/04/08/new-mitsubishi-3d-dlps-arrive-for-2010-is-this-the-mysterious-s/
Sure most other manufacturers are new to this 3DTV thing but Mitsubishi is already on its fourth generation, announcing the new 638, 738 and 838 series DLP TVs. New for the 2010 lineup, and possibly giving some insight to those weird HDTVs that appeared on Amazon yesterday is "StreamTV" interactive media which appears to be a new (post Wal-mart acquisition?) branding for the VUDU Apps service we spotted during CES with Pandora, Flickr, Picasa and others built in. If that sounds like a little too much then don't worry, it's not in the base 638 series televisions while the 738 models add StreamTV, an optional WiFi N adapter and video calibration options, and the top of the line 838 models offer Mitsubishi's 16 speaker built-in iSP surround sound tech along with a few other minor adjustments as upgrades. We're still waiting to find out when these ship (probably in the next month or so), but one thing that never changes is projection's ability to go big for less money than its flat-panel competitors, ranging from $1,199 for the 60-inch WD-60638 to $4,499 for the 82-inch WD-8238 (don't forget to add in the price of a special checkerboard compatible 3D Blu-ray player or an adapter to make everything work.) Check after the break for a full breakdown, we'll let you know once more info is available -- or if some $6k autostereoscopic options pop up on the horizon.
Gallery: Mitsubishi 2010 3D DLPs
Continue reading New Mitsubishi 3D DLPs arrive for 2010, is this the mysterious StreamTV?
New Mitsubishi 3D DLPs arrive for 2010, is this the mysterious StreamTV? originally appeared on Engadget on Thu, 08 Apr 2010 12:39:00 EST. Please see our terms for use of feeds.
Apple's sold 450,000 iPads as of today, pushed 3.5 million iPad app downloads (update: 50 million iPhones!)
Source: http://www.engadget.com/2010/04/08/apples-sold-450-000-ipads-as-of-today-pushed-3-5-million-ipad/
There you have it -- according to Steve Jobs at today's iPhone event, nearly half a million iPads have been pushed so far alongside 3.5 million iPad app downloads -- a perfect few orders of magnitude above the 3,500 iPad apps presently available. It's not clear whether that includes units sold to third party retailers (like Best Buy) that are still sitting on store shelves, though, so there's quite a bit of potential for variability there. Separately, he's mentioned that 50 million iPhones have now been sold worldwide alongside 35 million iPod touches -- so yeah, needless to say, the iPad has some big shoes to fill if it wants to hit the same level of rousing success.
Apple's sold 450,000 iPads as of today, pushed 3.5 million iPad app downloads (update: 50 million iPhones!) originally appeared on Engadget on Thu, 08 Apr 2010 12:40:00 EST. Please see our terms for use of feeds.
Multitasking comes to iPhone OS 4.0 -- but not to the iPhone 3G
Source: http://www.engadget.com/2010/04/08/multitasking-comes-to-iphone-os-4-0/
You heard that right, people -- iPhone OS 4 just brought multitasking to the platform! Apple says they've figured out how to implement third party multitasking without hurting performance or battery life, and they're demoing it now -- you just double click the home button and see a list of your apps, and you can just tap to switch between apps. The system actually runs the services apps need in the background -- the apps don't need to do them individually, so it's not a "true" multitasking system, but it seems plenty effective. There are seven services: background audio, which allows you to use the standard pop-over iPod controls, Voice over IP, which can receive calls in the background, location services for GPS and social networking (there's an indicator if any service is tracking you), updated push notifications with local notifications, task completion so you can finish things like uploads in the background, and fast app switching, which lets apps sleep and resume instantly. Notably missing? Anything for managing a conversation, like IM or Twitter, which is a big omission. Win some, lose some, we suppose.
Update: Here's a big "lose some" -- only the iPhone 3GS and 3rd generation (late 2009) iPod touch will support multitasking. The iPhone 3G and below won't -- Steve says the hardware doesn't support it. Sad face.
Gallery: Multitasking comes to iPhone OS 4.0!
Make sure to check out the ongoing iPhone OS 4.0 liveblog!
Multitasking comes to iPhone OS 4.0 -- but not to the iPhone 3G originally appeared on Engadget on Thu, 08 Apr 2010 14:05:00 EST. Please see our terms for use of feeds.
Permalink | Apple | Email this | Comments
JDownloader Turbocharges File Sharing Sites [Downl...
OCZ bids for solid state throne with new Vertex 2 ...
How WebKit2 Will Fix Your Slow, Crashy Browsers [B...
The Fastest Gaming Processors for Any Budget [PCs]...
The Reason Why Apple Is Not Enabling Multitasking ...
Elonex announces iDock XL, iDock Aero and ã99 71...
Intel's 48-core processor destined for science, sh...
Adobe distances itself from JooJoo, cites lack of ...
Samsung announces 1080p in-bezel CMOS sensor, webc...
Uploadr Takes Screenshots, Shares Files and Folder...
Samsung NX10 reviewed: a worthy alternative to Mic...
What it takes to properly convert a 2D movie to 3D...
New Mitsubishi 3D DLPs arrive for 2010, is this th...
Apple's sold 450,000 iPads as of today, pushed 3.5...
Multitasking comes to iPhone OS 4.0 -- but not to ...
Steve Jobs: 'we tried to buy a company called AdMo...
Mitsubishi's Unisen LCD HDTVs, now with more speak...
MIT's Tiny Mechanical Muscles Could Power Tomorrow...
Solving the Mystery of the Green LED For Pure, Eff...
Mission Blue: filling in the blanks...
Make QR Codes in a Jiffy with Goo.gl [Cameraphones...
Xmarks for Firefox Syncs Open Tabs Between Browser...
Create Instant QR Codes with a Bookmarklet [Bookma...
Runco's WindowWall gives you the $100,000 view you...
Animals That Can Live Without Oxygen Discovered, A...
Intel's Atom D525 to offer 1.8GHz with no bump in ...
Nexaria's NexConnect SOHO router does 3G and 4G on...
iPad apps: creativity unleashed
Comcast's 3D channel goes live, just in time for t...
Intel's SENS platform pictures a world of Moorseto...
Plastic Logic expects to ship QUE proReader in Jun...
Intel's Intelligent Home Energy Management device ...
Dell refreshes Latitude E series with latest Intel...
AMD's hexacore Phenom II X6 will offer Turbo Core ...
ICD's Tegra 2-toting Gemini tested, briefly enjoye...
Canon debuts XF305, XF300 pro camcorders with dire...
CallTrack Plots Your Calls on a Google Calendar. [...
The Multi-Touch Office [Featured Workspace]
How to Turn an iPhone Into a Wireless iPad Camera ...
LG Mini GD880 Phone Has New HTML5-Supporting Phant...
Toshiba's 1080P Camileo S20, H30 and X100 Camcorde...
iPad vs. JooJoo... fight!
Mystery buyer orders $8.5 million in Microvision P...
Western Digital VelociRaptor VR200M review roundup...
Sharp squeezes DivX HD playback into new Quattron ...
Lenovo C200 brings NVIDIA Ion 2 stateside for $499...
Notion Ink Adam still alive, working on Flash comp...
OCZ's Z-Drive gets swappable NAND sticks, ludicrou...
ATI FirePro V8800 takes Cypress core into workstat...
FREE Customer Research and Why You SHOULD Run Idea...
Even the iPad won't save magazines, especially if ...
Never Get A Scratch On The LCD or Lens
Physicist Creates Most Magnetic Material on Earth,...
MIT Researcher Develops iPhone App to Easily Contr...
File Blender Converts Files with Drag and Drop Eas...
Stain Solutions Finds the Cure for Removing Any St...
HP Slate to cost $549, have 1.6GHz Atom Z530, 5 ho...
Fusion Garage JooJoo review
Android and Arduino-packin' Cellbot features voice...
APC adds LCD, zero-draw power outlets to new Back-...
ICD's Tegra 2-powered Gemini is the most feature-c...
HP rolls out Pavilion s5305z, s5350, Pavilion Elit...
Apple's A4 system-on-chip gets decoupled from iPad...
@jayparkinson - "most people don't friend Lipitor ...
Why your brand MUST have a presence on social netw...
Apple's A4 SoC faces Qualcomm Snapdragon in knock-...


text:
The Flag of the National Party (Afrikaans: Vlag van die Nasionale Party) was the flag of the ruling National Party, of South Africa during apartheid. The design was a blue hunting horn on an orange background. The flag was created in 1939 and abandoned in 1993.

History
The National Party had no flag for its first twenty-five years. However, following D. F. Malan breaking away from the party to keep the National Party from a merger with the South African Party into the United Party in 1934, it was decided in 1935 they needed a flag with the Junior National Party Conference deciding it must include orange as the party's official colour. The Orange Free State National Party Congress suggested a gunpowder horn on an orange background and it was adopted in 1939. The horn (known as the kruithoring) came from the coat of arms of the Orange Free State and was symbolic of the Boer's Great Trek.

The flag was the main symbol of the party until the 1980s when a new logo was adopted for the 1981 South African general election. The flag was last used by the party during the 1989 South African general election. With the end of apartheid and the National Party opening up membership to non-Afrikaners, a new flag and logo were adopted in 1993. However, the former flag retained popularity amongst hardcore National Party supporters in the run up to the 1994 South African general election. When African National Congress leader Nelson Mandela visited Tafelsig on an election drive, five National Party supporters waved the flag at him. Mandela responded: "What a pity there are those who are raising the flag of the National Party... They are not sober. They only have the courage to hoist the NP flag because they are not sober."

References

Political flags
National Party (South Africa)
1939 establishments in South Africa
1993 disestablishments in South Africa
Afrikaner nationalism
Flags introduced in 1939

redpajama_set_name: RedPajamaWikipedia


text:
Q: How to use escape quote in Bigquery query text? I defined and registered a UDF function in a query, but it looks like the big query doesn't like the escape quote \" in the function definition string, does anyone know how to use escape quote in bigquery?
This is my example:
SELECT
  Social_Connection,
  Device_Type
FROM
  js(
    -- input table
    (
    SELECT
      user_attribute.Name,
      user_attribute.Value
    FROM
      UDF_TESTING.testing_src ),
    -- input vars
    user_attribute.Name,
    user_attribute.Value,
    -- output schema
    "[{name: 'Social_Connection', type: 'string'},
   {name: 'Device_Type', type: 'string'}]",
    -- the function
    "function(row, emit) {
     var social_connection_index = 0;
     var device_type_index = 0;
  for (var i = 0; i < row.user_attribute.length; i++) {
    if (row.user_attribute[i].Name == \"Social_Connection\") {    // <------big query complains about the escape quote
      social_connection_index = i;
    }
    if (row.user_attribute[i].Name == \"Device_Type\") {   // <----- same as here
      device_type_index = i;
    }
  }
  emit( {Social_Connection: row.user_attribute[social_connection_index].Value,
         Device_Type: row.user_attribute[device_type_index].Value} )
}")

A: Below is dummy example, just to demonstrate how to use escape in both BQ SELECT itself as well as within JS function.
Hope this will help you!
SELECT Name, HasSingleQuote, HasDoubleQuote
FROM ( JS(
    -- input table
    (SELECT
      Name
    FROM
      (SELECT 'abc' AS Name),
      (SELECT 'a\'bc' AS Name),
      (SELECT 'a\"bc' AS Name),
      (SELECT 'a\"b\'c' AS Name)
      ),
    -- input vars
    Name,
    -- output schema
    "[{name: 'Name', type: 'STRING'},
   {name: 'HasSingleQuote', type: 'BOOLEAN'},
   {name: 'HasDoubleQuote', type: 'BOOLEAN'}]",
    -- the function
    "function(row, emit) {
      var hasSingleQuote = false;
      var hasDoubleQuote = false;
      if (row.Name.indexOf('\'') > -1) hasSingleQuote = true;
      if (row.Name.indexOf('\"') > -1) hasDoubleQuote = true;
      emit( {Name: row.Name,
         HasSingleQuote: hasSingleQuote,
         HasDoubleQuote: hasDoubleQuote
         } )
}"))

Output is:
Name    HasSingleQuote  HasDoubleQuote
abc     false           false
a'bc    true            false
a"bc    false           true
a"b'c   true            true

redpajama_set_name: RedPajamaStackExchange


text:
Texas Housewife
Ashley's PRS Story
Answering Readers Questions ~ Larry McMurtry
One of my readers left a comment on my Goodie Box Giveaway saying that Larry Mc
Image by kikiduck via Flickr
Murtry was one of her favorite authors and asking if I enjoyed him as well. The answer to that question is a huge yes! I discovered McMurtry after watching a miniseries adaptation of his novel Lonesome Dove. My uncle had a part in the film where he is stabbed and thrown over a whiskey boat. Watching the miniseries was a big deal to my family, waiting for Uncle Sam to appear. It was after the movie that I dove head first into McMurtry's novels and found an author that I truly love.
The character of Gus in the novel Lonesome Dove was the first fictional character I ever had a crush on. No sparkly vampires for me as a teen, I was all about running away with the old cowboy. His characters come alive on the pages, you feel these are real people that you know. You are drawn into his words and feel like you are right there, in the middle of all the action.
If books aren't your thing, check out some of Larry McMurtry's novels that have been
turned into films. Hud , The Last Picture Show , and Terms of Endearment are some of my favorites. You don't have to enjoy westerns to be a fan, he writes quite a bit other than that!
If you've never read any of Larry McMurtry's wonderful novels, I highly suggest you do so. If I had to name my top three favorite authors he would be on the list. His novels allow you to lose yourself in them, to be there, to know the people and places he writes of. This makes him one of the greatest authors of our time, at least that's my opinion.
What do you think? Are you a fan?
Read More In: favorite authors, Fiction, Larry McMurtry, Lonesome Dove, Novel. Reader's Questions
Okay I absolutely LOVE Lonesome Dove, that is one of my favorite movies that I can watch over and over and over again and not be sick of it!! But I was a teenage cowgirl (still am...just not the teenager) stuck in the city. Love love love it!! I so wanted to be Anjelica Huston, I even switched from English to Western Saddle after I saw this movie. Oh and Terms of Endearment! Man alive!! Great post!
Thanks for stopping by too!!
karie
Blog Archive February (2) January (4) February (2) January (4) December (2) May (1) February (1) January (2) December (2) October (1) September (1) January (1) October (1) September (1) August (7) July (6) June (1) May (7) April (10) March (5) February (7) January (31) December (1) November (1) October (2) September (2) May (1) March (3) February (8) January (15) December (3) November (12) October (12) September (4) August (6) July (12) June (6) May (1) April (3) March (11) January (9) December (3) November (19) October (8) September (7) August (1) July (11) June (5) May (5) April (5) March (3) February (1) January (6) December (1) November (1) October (13) September (19) August (18) July (24) June (12) May (25) April (10) March (4) February (17) January (13) December (30) November (49) October (61) September (46) August (58) July (50) June (50) May (44) April (64) March (55) February (28) January (48) December (24) November (19) October (24) September (21) August (26) July (33) June (7) May (23) April (23) March (10) January (2)
Johnny Carino's Copycat Recipes
HEB/ConAgra Meal Maker Challenege - Lunch Box Treats & Prize Pack Giveaway
Holiday Gift Guide: Nerf NFL Vortex Mega Howler Football
Blog Design by Rhonda Jai Designs

redpajama_set_name: RedPajamaCommonCrawl


text:
Home » Germany Scholarships » UNIKIMS Earthquake Engineering Scholarship for International Students in Germany, 2018
UNIKIMS Earthquake Engineering Scholarship for International Students in Germany, 2018
The new Earthquake Engineering Scholarship is now available on offer for all new international students to study in Germany. This is a fully funded scholarship.
UNIKIMS is the management school of the University of Kassel. More than 900 junior managers and executives from companies, organizations, and administrations use the further education offers of the University of Kassel every year. Research-strong and application-oriented professors develop the courses and hold the courses; they are supported by outstanding practitioners in leading positions with extensive teaching experience.
For applicants whose native language is not English, a proof of English proficiency (e.g. TOEFL, TOEFL prediction, IELTS, or any English certificate from a local language centre such as British Council, English First or a language centre at your university).
Application deadline: March 18, 2018
Course Level: Scholarship is available to pursue Earthquake Engineering Course.
Study Subject: Scholarship is awarded in the field of Earthquake Engineering.
Scholarship Award: One full scholarship covering the program fee of €1.990 (early-bird fee) is available for applicants who wish to take part in the ISU-course "Introduction to Earthquake Engineering".
Nationality: International students
Number of Scholarships: One scholarship is available.
Scholarship can be taken in Germany
Eligible Countries: International students are eligible to apply for this scholarship programme.
Entrance Requirements: To be eligible for this scholarship you must meet the following requirements:
One full scholarship covering the program fee of €1.990 (early-bird fee) is available for applicants who wish to take part in the ISU-course "Introduction to Earthquake Engineering". Please note that the scholarship cannot be paid in cash nor be accumulated with other scholarships and is only available for students (not for lecturers or researchers) who are currently affiliated with an Institution of Higher Education.
English Language Requirements: For applicants whose native language is not English, a proof of English proficiency (e.g. TOEFL, TOEFL prediction, IELTS, or any English certificate from a local language center such as British Council, English First or a language center at your university).
Germany Scholarships
How to Apply: Requirements for the scholarships are:
A strong letter of motivation stating why you are eligible for the scholarship
One letter of recommendation from your professor (or at least a lecturer with a doctorate degree) a completed and signed ISU 2018 application form
A letter of motivation for joining ISU 2018
A CV
A copy of academic transcripts of all university exams (in case the transcripts are issued in languages other than English or German, please send a copy in the original language and translations in English)
For applicants whose native language is not English, a proof of English proficiency (e.g. TOEFL, TOEFL prediction, IELTS, or any English certificate from a local language center such as British Council, English First or a language center at your university)
Engineering Scholarships
University of Kassel
Scholarships for Malaysian Students at International Medical College, 2018
Ajinomoto Scholarship for Masters Students in Japan, 2018
MPOWER "Chasing Dreams Never Ends" Scholarship for Chinese Students to Study in the US or Canada
EPSRC – School of Computing International Studentships at University of Kent, UK
Ernst Mach Grant for International Students to Study at Salzburg University of Applied Sciences in Austria
RMIT Tourism and Hospitality Management Scholarships for International Students in Australia
Fulbright Grants for Andorran Students to Study Master or PhD in USA


text:
Under Defeat
by Nick Thorpe, 23 January 2017
Genre: Shoot-'em-up
Format reviewed: Dreamcast
Publisher: G.Rev
Developer: G.Rev
It's hard to explain to those of you that weren't there, but being a Dreamcast fan during the machine's long period of undeath was a bizarre experience. You'd spend weeks or even months awaiting news of what was coming next for your long-discontinued console, while most of the world didn't know or care. Typically, you'd end up with a shoot-'em-up ported from the arcade. In 2006, there was a shoot-'em-up that sent a wave of panic through the tiny tribe still flying the Sega flag: Under Defeat was to be the final game for the ultimate underdog console. Still, there was reason to be optimistic – the game's developer G.Rev had previously delivered the excellent Border Down, and this looked just as good.
As it turned out, Under Defeat was a mighty fine and resolutely old-school shoot-'em-up that still holds up well over a decade on. Much of the enemy fire is directed straight at your helicopter and the odds are always overwhelming, as you face tanks, battleships and crazy prototype war machines. To make things slightly fairer, you're given the ability to angle your helicopter's shots and you can launch a drone with a sub-weapon at varying intervals. The game is utterly beautiful to look at, with gorgeous high-resolution textures and stunning explosion effects, including smoke which reacts to subsequent blasts.
The only shame is that it didn't turn out to be the final Dreamcast game, because while the two that followed (Trigger Heart Exelica and Karous) were good, they didn't quite live up to this.


I've continued working on the body parts for R2D2. I made a few more adjustments to the Powercouplers, by splitting the insert into 4 separate pieces., which made putting them in a lot easier. I also found out that the majority of the scenes in A New Hope have the top of the center cone painted blue, so I made that a removable ring so that it can be painted separately from the silver parts.
Next up were the coin returns, which weren't so much a design to model, but more so to print. I ended up printing them upside down, which gave the best surface finish with all the slopes and reduced the amount of support material (which was still a lot).
Initial painting tests were quite promising, but does show the importance of sanding everything completely smooth, as every imperfection shows through the silver paint.
I'm currently working on the octagon ports. The initial model is ready for it's test print. I might need to do a few adjustments based on that.
Due to the small indents in the inner part, I had to split them into separate pieces so they could be printed without support. Eventually they would just be glued together and sprayed silver.


A preliminary report shows that an experimental Ebola vaccine appears safe and effective, according to results published in the New England Journal of Medicine.
100% of the subjects in the US, Switzerland, and Germany given the recombinant vesicular stomatitis virus-based vaccine (rVSV) vaccine developed a promising immune response, and reported no serious side effects, according to the international group of researchers.
As the participants were not actually exposed to the Ebola virus after vaccination, the measure of the vaccine's effectiveness is based on antibody data from primate studies.


In 2019, artist and choreographer William Forsythe (born 1949) is presenting several projects at Museum Folkwang. The year starts off with the video work City of Abstracts, which will be installed in the foyer of the Museum in February 2019. This interactive video work places human beings and their relationship with space on centre stage.
In the museum foyer, visitors find themselves in an eddy of swirling forms. In the site-specific intervention City of Abstracts, their movements are processed and altered in real time by specially developed video software. The visitors are absorbed in a dance of spiralling, elongated and fragmenting bodies. The scene invites audience members to take part in a game between themselves and the computer-generated algorithm, using their own movements. Originally conceived for a public space, this participative work has been exhibited for many years now in major international museums. The work provides a prime example of the dialogue between the visual arts, digital media, installation, sculpture, the moving image, performance art and dance. As a permanent loan, City of Abstracts will be on display at Museum Folkwang for an initial period of five years.
As in City of Abstracts, in his three following interventions, William Forsythe crosses the boundaries between artistic media. With his Human Writes Drawings, Forsythe has succeeded in translating his choreographic engagement with human rights into the medium of drawing. A selection of these large-format works on paper will be exhibited in early summer as part of the new collection display. In summer, Forsythe will install the site-specific work Aviariation in one of the museum courtyards, setting the firmly rooted trees in motion. In November, Forsythe presents Acquisition/Körperschaft with two dancers, a work that is at once performative and participatory, and that he is adapting specially for Museum Folkwang. The live project will take place in November as part of '100 Years of Bauhaus in the West'.


text:
CMN Weekly (26 November 2021) - Your Weekly CRISPR Medicine News
Some of the best links we picked up around the internet
By: Gorm Palmgren - Nov. 26, 2021
EmailFacebookLinkedinTwitter
A news feature in Nature Biotechnology entitled The CRISPR Children speculates about the fate of the the first children with germline-edited genomes. They are now growing up in China after their embryos were manipulated in He Jiankui's lab three years ago. The author asks how their lives might be affected by their edited genomes, and how emerging knowledge on the potentially genotoxic effects of gene editing may help guide the children's physicians about what to look for.
American researchers have developed an automated design of CRISPR prime editors (PE) for 56,000 human pathogenic variants. The authors also assessed the possibility of developing universal PE constructs and found that common genetic variants impact only a small minority of designed PEs.
EdiGene has entered a research collaboration with Peking Union Medical College Hospital in Beijing, China. The two entities will develop gene-editing therapies for inherited retinal degeneration using EdiGene's proprietary LEAPER RNA-editing technology.
CRISPR Therapeutics has been granted Regenerative Medicine Advanced Therapy (RMAT) designation to CTX110 by the FDA. CTX110 is an allogeneic CAR-T cell therapy targeting CD19+ B-cell malignancies (see here and here).
Intellia Therapeutics will expand its ongoing clinical trial with the in vivo CRISPR/Cas9 gene-editing therapy NTLA-2001 for transthyretin amyloidosis (ATTR). The study initially included only patients with polyneuropathy (ATTRv-PN), but now also patients with cardiomyopathy (ATTR-CM) will be included. Read more about the clinical trial here and here.
Cytovia and Cellectis have announced an expansion of their iNK partnership in China. iNK uses TALEN gene-edited iPSC-derived NK and CAR-NK cells as a therapy for various cancers.
A novel biosensor for the detection of human papilloma virus-11 (HPV-11) is described by Turkish researchers. The chronoimpedimetric biosensor employs dead Cas9-modified graphene oxide-PAMAM electrodes and can detect HPV-11 between 50 pM and 1000 pM with good linearity, sensitivity and selectivity.
A protocol for point-of-care detection of nucleic acid samples of infectious agents in less than an hour is described by American researchers. The method employs (reverse transcription-) recombinase polymerase amplification (RPA) of DNA or RNA, Cas12a-mediated target recognition and cleavage, and subsequent magnetic beads-mediated colorimetric readouts. The method is termed M−CDC.
Chinese rechers have developed a CISPR-LAMP technology employing Cas12a to detect influenza A virus, influenza B virus, respiratory syncytial A virus, respiratory syncytial B virus, and SARS-CoV-2. In addition, a uracil-DNA-glycosylase-reverse transcription-LAMP system was also developed which can effectively remove dUTP-incorporated LAMP amplicons and reduce the risk of aerosol contamination.
A review by Chinese researchers highlights the application of CRISPR-Cas9 technology in treating neurological disorders. This includes Alzheimer's disease, amyotrophic lateral sclerosis and/or frontotemporal dementia, Duchenne muscular dystrophy, Dravet syndrome, epilepsy, Huntington's disease, and Parkinson's disease.
Circular DNA (circDNA) has many potential uses in therapeutics and diagnostics, and some of them include exploiting circDNAs as donors in CRISPR-Cas systems. This is the topic of a review by American and Chinese researchers.
Russian researchers take a look at CRISPR-Cas9 and related technologies to treat hepatitis B virus (HBV), which causes severe liver disease. CRISPR has already demonstrated very high antiviral potency. The review discusses the key issues that must be solved to make CRISPR-Cas9 an anti-HBV therapy.
A review discusses the potential use of CRISPR-Cas13 in understanding virus-host interactions. The review aims to provide a comprehensive summary of the recent advances of Cas13 for targeting viral RNA for either RNA-mediated degradation or CRISPR-Cas13-based diagnostics.
Dutch researchers review the modulation of CRISPR-Cas9 genome-editing activity by small molecules. The authors look into the mechanisms of action of the small molecules and suggest that direct-acting small molecules for Cas9 are more suitable for precisely regulating Cas9 activity.
A commentary looks into the recent advances in employing CRISPR to excise latent HIV-1 across the broad spectrum of viruses typically found in infected patients.
HashtagArticleHashtagMissing linksHashtagNewsHashtagCMN Weekly
Search your next CRISPR job here...
CRISPR-Cas13d Nuclease System Effectively Inhibits...
Researchers at Texas Biomedical Research Institute in San Antonio, Texas have developed a novel strategy to inhibit human immunodeficiency virus (HIV)...
CMN Weekly (14 January 2022) - Your Weekly CRISPR...
CRISPR IND Updates: E. coli, Beta Thalassemia, and...
In our first clinical update of 2022, we look at three new IND approvals for gene-edited therapies for life-threatening E. coli infections,...
Adaptation of jumping gene boosts CRISPR-Cas...
Current gene-editing tools can effectively disrupt DNA sequences or correct subtle mutations associated with hereditary diseases. While these...
CMN Weekly (7 January 2022) - Your Weekly CRISPR...
CRISPR Medicine in 2021 – What a Phenomenal Year...
In 2021, we've seen positive clinical data for the first ever in vivo CRISPR medicines, base editors are heading for the clinic, and CRISPR therapies...
Acute Lymphoblastic Leukemia, T-ALL (NCT04984356)
Wugen inc.
IndicatorIndicator
IND Enabling
Human Immunodeficiency Virus Infection, HIV (NCT05143307)
Relapsed or Refractory B-cell Malignancies, (NCT04933825)
EdiGene Inc.


text:
/**
 * cc.Waves3D action.

 * Reference the test cases (Effects Advanced Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 */
cc.Waves3D = cc.Grid3DAction.extend(/** @lends cc.Waves3D# */{
    _waves: 0,
    _amplitude: 0,
    _amplitudeRate: 0,

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * Create a wave 3d action with duration, grid size, waves and amplitude.
	 * @param {Number} duration
	 * @param {cc.Size} gridSize
	 * @param {Number} waves
	 * @param {Number} amplitude
	 */
    ctor:function (duration, gridSize, waves, amplitude) {
        cc.GridAction.prototype.ctor.call(this);
		amplitude !== undefined && this.initWithDuration(duration, gridSize, waves, amplitude);
    },

    /**
     * get Amplitude
     * @return {Number}
     */
    getAmplitude:function () {
        return this._amplitude;
    },

    /**
     * set Amplitude
     * @param {Number} amplitude
     */
    setAmplitude:function (amplitude) {
        this._amplitude = amplitude;
    },

    /**
     * get Amplitude Rate
     * @return {Number}
     */
    getAmplitudeRate:function () {
        return this._amplitudeRate;
    },

    /**
     * set Amplitude Rate
     * @param {Number} amplitudeRate
     */
    setAmplitudeRate:function (amplitudeRate) {
        this._amplitudeRate = amplitudeRate;
    },

    /**
     * initializes an action with duration, grid size, waves and amplitude
     * @param {Number} duration
     * @param {cc.Size} gridSize
     * @param {Number} waves
     * @param {Number} amplitude
     * @return {Boolean}
     */
    initWithDuration:function (duration, gridSize, waves, amplitude) {
        if (cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize)) {
            this._waves = waves;
            this._amplitude = amplitude;
            this._amplitudeRate = 1.0;
            return true;
        }
        return false;
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var locGridSize = this._gridSize;
        var locAmplitude = this._amplitude, locPos = cc.p(0, 0);
        var locAmplitudeRate = this._amplitudeRate, locWaves = this._waves;
        for (var i = 0; i < locGridSize.width + 1; ++i) {
            for (var j = 0; j < locGridSize.height + 1; ++j) {
                locPos.x = i;
                locPos.y = j;
                var v = this.originalVertex(locPos);
                v.z += (Math.sin(Math.PI * dt * locWaves * 2 + (v.y + v.x) * 0.01) * locAmplitude * locAmplitudeRate);
                //cc.log("v.z offset is" + (Math.sin(Math.PI * dt * this._waves * 2 + (v.y + v.x) * 0.01) * this._amplitude * this._amplitudeRate));
                this.setVertex(locPos, v);
            }
        }
    }
});

/**
 * Create a wave 3d action with duration, grid size, waves and amplitude.
 * @function
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 */
cc.waves3D = function (duration, gridSize, waves, amplitude) {
    return new cc.Waves3D(duration, gridSize, waves, amplitude);
};
/**
 * Please use cc.waves3D instead.

 * Create a wave 3d action with duration, grid size, waves and amplitude.
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 * @static
 * @deprecated since v3.0
 Please use cc.waves3D instead.
 */
cc.Waves3D.create = cc.waves3D;

/**
 * cc.FlipX3D action.

 * Flip around.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 */
cc.FlipX3D = cc.Grid3DAction.extend(/** @lends cc.FlipX3D# */{

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * Create a Flip X 3D action with duration.
	 * @param {Number} duration
	 */
	ctor: function(duration) {
		if (duration !== undefined)
			cc.GridAction.prototype.ctor.call(this, duration, cc.size(1, 1));
		else cc.GridAction.prototype.ctor.call(this);
	},

    /**
     * initializes the action with duration
     * @param {Number} duration
     * @return {Boolean}
     */
    initWithDuration:function (duration) {
        return cc.Grid3DAction.prototype.initWithDuration.call(this, duration, cc.size(1, 1));
    },

    /**
     * initializes the action with gridSize and duration
     * @param {cc.Size} gridSize
     * @param {Number} duration
     * @return {Boolean}
     */
    initWithSize:function (gridSize, duration) {
        if (gridSize.width != 1 || gridSize.height != 1) {
            // Grid size must be (1,1)
            cc.log("Grid size must be (1,1)");
            return false;
        }
        return  cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize);
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var angle = Math.PI * dt; // 180 degrees
        var mz = Math.sin(angle);
        angle = angle / 2.0; // x calculates degrees from 0 to 90
        var mx = Math.cos(angle);

        var diff = new cc.Vertex3F();
        var tempVer = cc.p(0, 0);
        tempVer.x = tempVer.y = 1;
        var v0 = this.originalVertex(tempVer);
        tempVer.x = tempVer.y = 0;
        var v1 = this.originalVertex(tempVer);

        var x0 = v0.x;
        var x1 = v1.x;
        var x;
        var a, b, c, d;

        if (x0 > x1) {
            // Normal Grid
            a = cc.p(0, 0);
            b = cc.p(0, 1);
            c = cc.p(1, 0);
            d = cc.p(1, 1);
            x = x0;
        } else {
            // Reversed Grid
            c = cc.p(0, 0);
            d = cc.p(0, 1);
            a = cc.p(1, 0);
            b = cc.p(1, 1);
            x = x1;
        }

        diff.x = ( x - x * mx );
        diff.z = Math.abs(parseFloat((x * mz) / 4.0));

        // bottom-left
        var v = this.originalVertex(a);
        v.x = diff.x;
        v.z += diff.z;
        this.setVertex(a, v);

        // upper-left
        v = this.originalVertex(b);
        v.x = diff.x;
        v.z += diff.z;
        this.setVertex(b, v);

        // bottom-right
        v = this.originalVertex(c);
        v.x -= diff.x;
        v.z -= diff.z;
        this.setVertex(c, v);

        // upper-right
        v = this.originalVertex(d);
        v.x -= diff.x;
        v.z -= diff.z;
        this.setVertex(d, v);
    }
});

/**
 * Create a Flip X 3D action with duration.

 * Flip around.
 * @function
 * @param {Number} duration
 * @return {cc.FlipX3D}
 */
cc.flipX3D = function (duration) {
    return new cc.FlipX3D(duration);
};

/**
 * Please use cc.flipX3D instead.

 * Create a Flip X 3D action with duration.

 * Flip around.
 * @param {Number} duration
 * @return {cc.FlipX3D}
 * @static
 * @deprecated since v3.0
 Please use cc.flipX3D instead.
 */
cc.FlipX3D.create = cc.flipX3D;

/**
 * cc.FlipY3D action.

 * Upside down.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.FlipX3D
 * @param {Number} duration
 */
cc.FlipY3D = cc.FlipX3D.extend(/** @lends cc.FlipY3D# */{

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * Create a flip Y 3d action with duration.
	 * @param {Number} duration
	 */
	ctor: function(duration) {
		if (duration !== undefined)
			cc.GridAction.prototype.ctor.call(this, duration, cc.size(1, 1));
		else cc.GridAction.prototype.ctor.call(this);
	},

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var angle = Math.PI * dt; // 180 degrees
        var mz = Math.sin(angle);
        angle = angle / 2.0;     // x calculates degrees from 0 to 90
        var my = Math.cos(angle);

        var diff = new cc.Vertex3F();

        var tempP = cc.p(0, 0);
        tempP.x = tempP.y = 1;
        var v0 = this.originalVertex(tempP);
        tempP.x = tempP.y = 0;
        var v1 = this.originalVertex(tempP);

        var y0 = v0.y;
        var y1 = v1.y;
        var y;
        var a, b, c, d;

        if (y0 > y1) {
            // Normal Grid
            a = cc.p(0, 0);
            b = cc.p(0, 1);
            c = cc.p(1, 0);
            d = cc.p(1, 1);
            y = y0;
        } else {
            // Reversed Grid
            b = cc.p(0, 0);
            a = cc.p(0, 1);
            d = cc.p(1, 0);
            c = cc.p(1, 1);
            y = y1;
        }

        diff.y = y - y * my;
        diff.z = Math.abs(parseFloat(y * mz) / 4.0);

        // bottom-left
        var v = this.originalVertex(a);
        v.y = diff.y;
        v.z += diff.z;
        this.setVertex(a, v);

        // upper-left
        v = this.originalVertex(b);
        v.y -= diff.y;
        v.z -= diff.z;
        this.setVertex(b, v);

        // bottom-right
        v = this.originalVertex(c);
        v.y = diff.y;
        v.z += diff.z;
        this.setVertex(c, v);

        // upper-right
        v = this.originalVertex(d);
        v.y -= diff.y;
        v.z -= diff.z;
        this.setVertex(d, v);
    }
});

/**
 * Create a flip Y 3d action with duration.

 * Upside down.
 * @function
 * @param {Number} duration
 * @return {cc.FlipY3D}
 */
cc.flipY3D = function (duration) {
    return new cc.FlipY3D(duration);
};

/**
 * Please use cc.flipY3D instead.

 * Create a flip Y 3d action with duration.
 * @param {Number} duration
 * @return {cc.FlipY3D}
 * @static
 * @deprecated since v3.0
 Please use cc.flipY3D instead.
 */
cc.FlipY3D.create = cc.flipY3D;

/**
 * cc.Lens3D action.

 * Upside down.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} radius
 */
cc.Lens3D = cc.Grid3DAction.extend(/** @lends cc.Lens3D# */{
    //lens center position
    _position:null,
    _radius:0,
    //lens effect. Defaults to 0.7 - 0 means no effect, 1 is very strong effect
    _lensEffect:0,
    //lens is concave. (true = concave, false = convex) default is convex i.e. false
    _concave:false,
    _dirty:false,

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * creates a lens 3d action with center position, radius.
	 * @param {Number} duration
	 * @param {cc.Size} gridSize
	 * @param {cc.Point} position
	 * @param {Number} radius
	 */
    ctor:function (duration, gridSize, position, radius) {
        cc.GridAction.prototype.ctor.call(this);

        this._position = cc.p(0, 0);
		radius !== undefined && this.initWithDuration(duration, gridSize, position, radius);
    },

    /**
     * Get lens center position
     * @return {Number}
     */
    getLensEffect:function () {
        return this._lensEffect;
    },

    /**
     * Set lens center position
     * @param {Number} lensEffect
     */
    setLensEffect:function (lensEffect) {
        this._lensEffect = lensEffect;
    },

    /**
     * Set whether lens is concave
     * @param {Boolean} concave
     */
    setConcave:function (concave) {
        this._concave = concave;
    },

    /**
     * get Position
     * @return {cc.Point}
     */
    getPosition:function () {
        return this._position;
    },

    /**
     * set Position
     * @param {cc.Point} position
     */
    setPosition:function (position) {
        if (!cc.pointEqualToPoint(position, this._position)) {
            this._position.x = position.x;
            this._position.y = position.y;
            this._dirty = true;
        }
    },

    /**
     * initializes the action with center position, radius, a grid size and duration
     * @param {Number} duration
     * @param {cc.Size} gridSize
     * @param {cc.Point} position
     * @param {Number} radius
     * @return {Boolean}
     */
    initWithDuration:function (duration, gridSize, position, radius) {
        if (cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize)) {
            this.setPosition(position);
            this._radius = radius;
            this._lensEffect = 0.7;
            this._dirty = true;
            return true;
        }
        return false;
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        if (this._dirty) {
            var locGridSizeWidth = this._gridSize.width, locGridSizeHeight = this._gridSize.height;
            var locRadius = this._radius, locLensEffect = this._lensEffect;
            var locPos = cc.p(0, 0);
            var vect = cc.p(0, 0);
            var v, r, l, new_r, pre_log;
            for (var i = 0; i < locGridSizeWidth + 1; ++i) {
                for (var j = 0; j < locGridSizeHeight + 1; ++j) {
                    locPos.x = i;
                    locPos.y = j;
                    v = this.originalVertex(locPos);
                    vect.x = this._position.x - v.x;
                    vect.y = this._position.y - v.y;
                    r = cc.pLength(vect);

                    if (r < locRadius) {
                        r = locRadius - r;
                        pre_log = r / locRadius;
                        if (pre_log == 0)
                            pre_log = 0.001;

                        l = Math.log(pre_log) * locLensEffect;
                        new_r = Math.exp(l) * locRadius;

                        r = cc.pLength(vect);
                        if (r > 0) {
                            vect.x = vect.x / r;
                            vect.y = vect.y / r;

                            vect.x = vect.x * new_r;
                            vect.y = vect.y * new_r;
                            v.z += cc.pLength(vect) * locLensEffect;
                        }
                    }
                    this.setVertex(locPos, v);
                }
            }
            this._dirty = false;
        }
    }
});

/**
 * creates a lens 3d action with center position, radius
 * @function
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} radius
 * @return {cc.Lens3D}
 */
cc.lens3D = function (duration, gridSize, position, radius) {
    return new cc.Lens3D(duration, gridSize, position, radius);
};

/**
 * Please use cc.lens3D instead
 * creates a lens 3d action with center position, radius
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} radius
 * @return {cc.Lens3D}
 * @static
 * @deprecated since v3.0
 Please use cc.lens3D instead.
 */
cc.Lens3D.create = cc.lens3D;

/**
 * cc.Ripple3D action.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} radius
 * @param {Number} waves
 * @param {Number} amplitude
 */
cc.Ripple3D = cc.Grid3DAction.extend(/** @lends cc.Ripple3D# */{
    /* center position */
    _position: null,
    _radius: 0,
    _waves: 0,
    _amplitude: 0,
    _amplitudeRate: 0,

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * creates a ripple 3d action with radius, number of waves, amplitude.
	 * @param {Number} duration
	 * @param {cc.Size} gridSize
	 * @param {cc.Point} position
	 * @param {Number} radius
	 * @param {Number} waves
	 * @param {Number} amplitude
	 */
    ctor:function (duration, gridSize, position, radius, waves, amplitude) {
        cc.GridAction.prototype.ctor.call(this);

        this._position = cc.p(0, 0);
		amplitude !== undefined && this.initWithDuration(duration, gridSize, position, radius, waves, amplitude);
    },

    /**
     * get center position
     * @return {cc.Point}
     */
    getPosition:function () {
        return this._position;
    },

    /**
     * set center position
     * @param {cc.Point} position
     */
    setPosition:function (position) {
        this._position.x = position.x;
        this._position.y = position.y;
    },

    /**
     * get Amplitude
     * @return {Number}
     */
    getAmplitude:function () {
        return this._amplitude;
    },

    /**
     * set Amplitude
     * @param {Number} amplitude
     */
    setAmplitude:function (amplitude) {
        this._amplitude = amplitude;
    },

    /**
     * get Amplitude rate
     * @return {*}
     */
    getAmplitudeRate:function () {
        return this._amplitudeRate;
    },

    /**
     * get amplitude rate
     * @param {Number} amplitudeRate
     */
    setAmplitudeRate:function (amplitudeRate) {
        this._amplitudeRate = amplitudeRate;
    },

    /**
     * initializes the action with radius, number of waves, amplitude, a grid size and duration
     * @param {Number} duration
     * @param {cc.Size} gridSize
     * @param {cc.Point} position
     * @param {Number} radius
     * @param {Number} waves
     * @param {Number} amplitude
     * @return {Boolean}
     */
    initWithDuration:function (duration, gridSize, position, radius, waves, amplitude) {
        if (cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize)) {
            this.setPosition(position);
            this._radius = radius;
            this._waves = waves;
            this._amplitude = amplitude;
            this._amplitudeRate = 1.0;
            return true;
        }
        return false;
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var locGridSizeWidth = this._gridSize.width, locGridSizeHeight = this._gridSize.height;
        var locPos = cc.p(0, 0), locRadius = this._radius;
        var locWaves = this._waves, locAmplitude = this._amplitude, locAmplitudeRate = this._amplitudeRate;
        var v, r, tempPos = cc.p(0, 0);
        for (var i = 0; i < (locGridSizeWidth + 1); ++i) {
            for (var j = 0; j < (locGridSizeHeight + 1); ++j) {
                locPos.x = i;
                locPos.y = j;
                v = this.originalVertex(locPos);

                tempPos.x = this._position.x - v.x;
                tempPos.y = this._position.y - v.y;
                r = cc.pLength(tempPos);

                if (r < locRadius) {
                    r = locRadius - r;
                    var rate = Math.pow(r / locRadius, 2);
                    v.z += (Math.sin(dt * Math.PI * locWaves * 2 + r * 0.1) * locAmplitude * locAmplitudeRate * rate);
                }
                this.setVertex(locPos, v);
            }
        }
    }
});

/**
 * creates a ripple 3d action with radius, number of waves, amplitude
 * @function
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} radius
 * @param {Number} waves
 * @param {Number} amplitude
 * @return {cc.Ripple3D}
 */
cc.ripple3D = function (duration, gridSize, position, radius, waves, amplitude) {
    return new cc.Ripple3D(duration, gridSize, position, radius, waves, amplitude);
};

/**
 * Please use cc.ripple3D instead
 * creates a ripple 3d action with radius, number of waves, amplitude
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} radius
 * @param {Number} waves
 * @param {Number} amplitude
 * @return {cc.Ripple3D}
 * @static
 * @deprecated since v3.0
 Please use cc.ripple3D instead.
 */
cc.Ripple3D.create = cc.ripple3D;

/**
 * cc.Shaky3D action.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} range
 * @param {Boolean} shakeZ
 */
cc.Shaky3D = cc.Grid3DAction.extend(/** @lends cc.Shaky3D# */{
    _randRange: 0,
    _shakeZ: false,

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * Create a shaky3d action with a range, shake Z vertices.
	 * @param {Number} duration
	 * @param {cc.Size} gridSize
	 * @param {Number} range
	 * @param {Boolean} shakeZ
	 */
    ctor:function (duration, gridSize, range, shakeZ) {
        cc.GridAction.prototype.ctor.call(this);
		shakeZ !== undefined && this.initWithDuration(duration, gridSize, range, shakeZ);
    },

    /**
     * initializes the action with a range, shake Z vertices, a grid and duration
     * @param {Number} duration
     * @param {cc.Size} gridSize
     * @param {Number} range
     * @param {Boolean} shakeZ
     * @return {Boolean}
     */
    initWithDuration:function (duration, gridSize, range, shakeZ) {
        if (cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize)) {
            this._randRange = range;
            this._shakeZ = shakeZ;
            return true;
        }
        return false;
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var locGridSizeWidth = this._gridSize.width, locGridSizeHeight = this._gridSize.height;
        var locRandRange = this._randRange, locShakeZ = this._shakeZ, locP = cc.p(0, 0);
        var v;
        for (var i = 0; i < (locGridSizeWidth + 1); ++i) {
            for (var j = 0; j < (locGridSizeHeight + 1); ++j) {
                locP.x = i;
                locP.y = j;
                v = this.originalVertex(locP);
                v.x += (cc.rand() % (locRandRange * 2)) - locRandRange;
                v.y += (cc.rand() % (locRandRange * 2)) - locRandRange;
                if (locShakeZ)
                    v.z += (cc.rand() % (locRandRange * 2)) - locRandRange;
                this.setVertex(locP, v);
            }
        }
    }
});

/**
 * creates the action with a range, shake Z vertices, a grid and duration
 * @function
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} range
 * @param {Boolean} shakeZ
 * @return {cc.Shaky3D}
 */
cc.shaky3D = function (duration, gridSize, range, shakeZ) {
    return new cc.Shaky3D(duration, gridSize, range, shakeZ);
};

/**
 * Please use cc.shaky3D instead
 * creates the action with a range, shake Z vertices, a grid and duration
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} range
 * @param {Boolean} shakeZ
 * @return {cc.Shaky3D}
 * @static
 * @deprecated since v3.0
 Please use cc.shaky3D instead.
 */
cc.Shaky3D.create = cc.shaky3D;

/**
 * cc.Liquid action.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 */
cc.Liquid = cc.Grid3DAction.extend(/** @lends cc.Liquid# */{
    _waves: 0,
    _amplitude: 0,
    _amplitudeRate: 0,

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * Create a liquid action with amplitude, a grid and duration.
	 * @param {Number} duration
	 * @param {cc.Size} gridSize
	 * @param {Number} waves
	 * @param {Number} amplitude
	 */
    ctor: function (duration, gridSize, waves, amplitude) {
        cc.GridAction.prototype.ctor.call(this);
		amplitude !== undefined && this.initWithDuration(duration, gridSize, waves, amplitude);
    },

    /**
     * get amplitude
     * @return {Number}
     */
    getAmplitude:function () {
        return this._amplitude;
    },

    /**
     * set amplitude
     * @param {Number} amplitude
     */
    setAmplitude:function (amplitude) {
        this._amplitude = amplitude;
    },

    /**
     * get amplitude rate
     * @return {Number}
     */
    getAmplitudeRate:function () {
        return this._amplitudeRate;
    },

    /**
     * set amplitude rate
     * @param {Number} amplitudeRate
     */
    setAmplitudeRate:function (amplitudeRate) {
        this._amplitudeRate = amplitudeRate;
    },

    /**
     * initializes the action with amplitude, a grid and duration
     * @param {Number} duration
     * @param {cc.Size} gridSize
     * @param {Number} waves
     * @param {Number} amplitude
     * @return {Boolean}
     */
    initWithDuration:function (duration, gridSize, waves, amplitude) {
        if (cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize)) {
            this._waves = waves;
            this._amplitude = amplitude;
            this._amplitudeRate = 1.0;
            return true;
        }
        return false;
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var locSizeWidth = this._gridSize.width, locSizeHeight = this._gridSize.height, locPos = cc.p(0, 0);
        var locWaves = this._waves, locAmplitude = this._amplitude, locAmplitudeRate = this._amplitudeRate;
        var v;
        for (var i = 1; i < locSizeWidth; ++i) {
            for (var j = 1; j < locSizeHeight; ++j) {
                locPos.x = i;
                locPos.y = j;
                v = this.originalVertex(locPos);
                v.x = (v.x + (Math.sin(dt * Math.PI * locWaves * 2 + v.x * .01) * locAmplitude * locAmplitudeRate));
                v.y = (v.y + (Math.sin(dt * Math.PI * locWaves * 2 + v.y * .01) * locAmplitude * locAmplitudeRate));
                this.setVertex(locPos, v);
            }
        }
    }
});

/**
 * creates the action with amplitude, a grid and duration
 * @function
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 * @return {cc.Liquid}
 */
cc.liquid = function (duration, gridSize, waves, amplitude) {
    return new cc.Liquid(duration, gridSize, waves, amplitude);
};

/**
 * Please use cc.liquid instead
 * creates the action with amplitude, a grid and duration
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 * @return {cc.Liquid}
 * @static
 * @deprecated since v3.0
 Please use cc.liquid instead.
 */
cc.Liquid.create = cc.liquid;

/**
 * cc.Waves action.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 * @param {Boolean} horizontal
 * @param {Boolean} vertical
 */
cc.Waves = cc.Grid3DAction.extend(/** @lends cc.Waves# */{
    _waves: 0,
    _amplitude: 0,
    _amplitudeRate: 0,
    _vertical: false,
    _horizontal: false,

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * Create a wave action with amplitude, horizontal sin, vertical sin, a grid and duration.
	 * @param {Number} duration
	 * @param {cc.Size} gridSize
	 * @param {Number} waves
	 * @param {Number} amplitude
	 * @param {Boolean} horizontal
	 * @param {Boolean} vertical
	 */
    ctor: function (duration, gridSize, waves, amplitude, horizontal, vertical) {
        cc.GridAction.prototype.ctor.call(this);
		vertical !== undefined && this.initWithDuration(duration, gridSize, waves, amplitude, horizontal, vertical);
    },

    /**
     * get amplitude
     * @return {Number}
     */
    getAmplitude:function () {
        return this._amplitude;
    },

    /**
     * set amplitude
     * @param {Number} amplitude
     */
    setAmplitude:function (amplitude) {
        this._amplitude = amplitude;
    },

    /**
     * get amplitude rate
     * @return {Number}
     */
    getAmplitudeRate:function () {
        return this._amplitudeRate;
    },

    /**
     * set amplitude rate
     * @param {Number} amplitudeRate
     */
    setAmplitudeRate:function (amplitudeRate) {
        this._amplitudeRate = amplitudeRate;
    },

    /**
     * initializes the action with amplitude, horizontal sin, vertical sin, a grid and duration
     * @param {Number} duration
     * @param {cc.Size} gridSize
     * @param {Number} waves
     * @param {Number} amplitude
     * @param {Boolean} horizontal
     * @param {Boolean} vertical
     * @return {Boolean}
     */
    initWithDuration:function (duration, gridSize, waves, amplitude, horizontal, vertical) {
        if (cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize)) {
            this._waves = waves;
            this._amplitude = amplitude;
            this._amplitudeRate = 1.0;
            this._horizontal = horizontal;
            this._vertical = vertical;
            return true;
        }
        return false;
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var locSizeWidth = this._gridSize.width, locSizeHeight = this._gridSize.height, locPos = cc.p(0, 0);
        var locVertical = this._vertical, locHorizontal = this._horizontal;
        var locWaves = this._waves, locAmplitude = this._amplitude, locAmplitudeRate = this._amplitudeRate;
        var v;
        for (var i = 0; i < locSizeWidth + 1; ++i) {
            for (var j = 0; j < locSizeHeight + 1; ++j) {
                locPos.x = i;
                locPos.y = j;
                v = this.originalVertex(locPos);
                if (locVertical)
                    v.x = (v.x + (Math.sin(dt * Math.PI * locWaves * 2 + v.y * .01) * locAmplitude * locAmplitudeRate));
                if (locHorizontal)
                    v.y = (v.y + (Math.sin(dt * Math.PI * locWaves * 2 + v.x * .01) * locAmplitude * locAmplitudeRate));
                this.setVertex(locPos, v);
            }
        }
    }
});

/**
 * initializes the action with amplitude, horizontal sin, vertical sin, a grid and duration
 * @function
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 * @param {Boolean} horizontal
 * @param {Boolean} vertical
 * @return {cc.Waves}
 */
cc.waves = function (duration, gridSize, waves, amplitude, horizontal, vertical) {
    return new cc.Waves(duration, gridSize, waves, amplitude, horizontal, vertical);
};

/**
 * Please use cc.waves instead
 * initializes the action with amplitude, horizontal sin, vertical sin, a grid and duration
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {Number} waves
 * @param {Number} amplitude
 * @param {Boolean} horizontal
 * @param {Boolean} vertical
 * @return {cc.Waves}
 * @static
 * @deprecated since v3.0
 Please use cc.waves instead.
 */
cc.Waves.create = cc.waves;

/** @brief  */
/**
 * cc.Twirl action.

 * Reference the test cases (Effects Test)
 * @class
 * @extends cc.Grid3DAction
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} twirls
 * @param {Number} amplitude
 */
cc.Twirl = cc.Grid3DAction.extend(/** @lends cc.Twirl# */{
    /* twirl center */
    _position: null,
    _twirls: 0,
    _amplitude: 0,
    _amplitudeRate: 0,

	/**
     * Constructor function, override it to extend the construction behavior, remember to call "this._super()" in the extended "ctor" function.

	 * Create a grid 3d action with center position, number of twirls, amplitude, a grid size and duration.
	 * @param {Number} duration
	 * @param {cc.Size} gridSize
	 * @param {cc.Point} position
	 * @param {Number} twirls
	 * @param {Number} amplitude
	 */
    ctor:function (duration, gridSize, position, twirls, amplitude) {
        cc.GridAction.prototype.ctor.call(this);

        this._position = cc.p(0, 0);
		amplitude !== undefined && this.initWithDuration(duration, gridSize, position, twirls, amplitude);
    },

    /**
     * get twirl center
     * @return {cc.Point}
     */
    getPosition:function () {
        return this._position;
    },

    /**
     * set twirl center
     * @param {cc.Point} position
     */
    setPosition:function (position) {
        this._position.x = position.x;
        this._position.y = position.y;
    },

    /**
     * get amplitude
     * @return {Number}
     */
    getAmplitude:function () {
        return this._amplitude;
    },

    /**
     * set amplitude
     * @param {Number} amplitude
     */
    setAmplitude:function (amplitude) {
        this._amplitude = amplitude;
    },

    /**
     * get amplitude rate
     * @return {Number}
     */
    getAmplitudeRate:function () {
        return this._amplitudeRate;
    },

    /**
     * set amplitude rate
     * @param {Number} amplitudeRate
     */
    setAmplitudeRate:function (amplitudeRate) {
        this._amplitudeRate = amplitudeRate;
    },

    /** initializes the action with center position, number of twirls, amplitude, a grid size and duration */
    initWithDuration:function (duration, gridSize, position, twirls, amplitude) {
        if (cc.Grid3DAction.prototype.initWithDuration.call(this, duration, gridSize)) {
            this.setPosition(position);
            this._twirls = twirls;
            this._amplitude = amplitude;
            this._amplitudeRate = 1.0;
            return true;
        }
        return false;
    },

    /**
     * Called once per frame. Time is the number of seconds of a frame interval.
     *
     * @param {Number}  dt
     */
    update:function (dt) {
        var c = this._position;
        var locSizeWidth = this._gridSize.width, locSizeHeight = this._gridSize.height, locPos = cc.p(0, 0);
        var amp = 0.1 * this._amplitude * this._amplitudeRate;
        var locTwirls = this._twirls;
        var v, a, dX, dY, avg = cc.p(0, 0);
        for (var i = 0; i < (locSizeWidth + 1); ++i) {
            for (var j = 0; j < (locSizeHeight + 1); ++j) {
                locPos.x = i;
                locPos.y = j;
                v = this.originalVertex(locPos);

                avg.x = i - (locSizeWidth / 2.0);
                avg.y = j - (locSizeHeight / 2.0);

                a = cc.pLength(avg) * Math.cos(Math.PI / 2.0 + dt * Math.PI * locTwirls * 2) * amp;

                dX = Math.sin(a) * (v.y - c.y) + Math.cos(a) * (v.x - c.x);
                dY = Math.cos(a) * (v.y - c.y) - Math.sin(a) * (v.x - c.x);

                v.x = c.x + dX;
                v.y = c.y + dY;

                this.setVertex(locPos, v);
            }
        }
    }
});

/**
 * creates the action with center position, number of twirls, amplitude, a grid size and duration
 * @function
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} twirls
 * @param {Number} amplitude
 * @return {cc.Twirl}
 */
cc.twirl = function (duration, gridSize, position, twirls, amplitude) {
    return new cc.Twirl(duration, gridSize, position, twirls, amplitude);
};

/**
 * Please use cc.twirl instead
 * creates the action with center position, number of twirls, amplitude, a grid size and duration
 * @param {Number} duration
 * @param {cc.Size} gridSize
 * @param {cc.Point} position
 * @param {Number} twirls
 * @param {Number} amplitude
 * @return {cc.Twirl}
 * @static
 * @deprecated since v3.0
 Please use cc.twirl instead.
 */
cc.Twirl.create = cc.twirl;

redpajama_set_name: RedPajamaGithub