How Skid Row Fought ‘Tooth and Nail’ Before Recording ‘I Remember You’
by Matthew Wilkening, Matt WardlawIf Rachel Bolan and Dave Sabo had their way, Skid Row wouldn't have even recorded the song that made them too popular to take out their own trash.
Luckily, singer Sebastian Bach had other ideas.
"Snake [Sabo] and I fought tooth and nail not to put 'I Remember You' on the record," Bolan tells UCR. "But I’m glad they overrode our decision.   Because back then, that’s what was breaking all of the bands at the time."
In his 2016 book 18 and Life on Ski Row, Bach -- who's now estranged from the band -- explained how he campaigned for the song, begging the group to play it at rehearsal for their managed at the time, Doc McGhee.
"I said, 'Please, let's just play it for Doc,'" he recalls. "As we went into the first verse, 'Woke up to the sound of pouring rain,' and built up into the chorus, I looked over at Doc. He was looking at me and laughing. I said, 'Rachel does not want the song on the record.' Doc burst into laughter: 'That's funny. Because the song will be on the record.'"
Before recording their 1989 self-titled debut album, Skid Row "would play 'I Remember You' live in clubs every now and then, and all of the chicks dug it," Bolan concedes. "But it was just, like, we don’t want to be a chick band -- we want to be a hard-rock band. So it came down to playing it, and even [producer] Michael Wagener was like, 'You guys have got to put this on the record -- you’re crazy if you don’t put it on the record.' So we’re like, 'Okay, but no keyboards!' That was the stipulation. So we did it, and he was never even thinking keyboards, but I think he just agreed to it, just so that we’d put it on the record."
Released on Nov. 18, 1989, "I Remember You" became the second consecutive Top 10 single (following "18 and Life") from Skid Row, which eventually went platinum five times and propelled the band into unexpected and slightly unnerving levels of fame.
Watch Skid Row's 'I Remember You' Video
"'18 and Life' did a lot for us," Bolan recalls. "But when 'I Remember You' came out, things really, really changed at that point.  I was like, 'Wow, I actually have to move out of the condo that I rent,' which I really liked. So we were all buying houses and stuff like that. It was crazy."
In a 2007 Sleazeroxx interview, Bach said "I Remember You" was the No. 1 prom song in the U.S. in 1990. "Literally the whole country of America did their prom dance to 'I Remember You' one year, and that's a real heavy memory to beat," he said.
Decades later, country hit-maker Carrie Underwood brought "I Remember You" new fame by covering it at her concerts, while pop singer Norah Jones said it was the song that made her want to be a rock star.
Despite that success, Bolan and Sabo were determined to stick with their original plan for Skid Row's sound, eschewing any temptation to duplicate "I Remember You" on their notably aggressive follow-up, 1991's Slave to the Grind. "Everything we wrote after that that was maybe considered a ballad had a much edgier feel to it," Bolan explains. “'I Remember You' was just that one thing that kind of came out the way it did, and it was something that wasn’t planned. It was a cool chord progression that Snake had, and I wrote some lyrics, and we worked on it."
Still, they're grateful they were convinced to record and release the song. "Every night we play it, and I see people singing it back, and I look over at Snake and we always make the joke while we’re playing it: 'Hey, we shouldn’t put this on the record!'" Bolan says. "It just means so much to so many people. That’s the most important thing to us: It does mean a lot to a lot of people, and that alone makes me really happy that we put it on the record."
Top 100 '80s Rock Albums
'The Pretenders'
The Pretenders (1980): Chrissie Hynde was a new-school punk with a classic-rock heart.
'Permanent Waves'
Rush (1980): Compact, radio-ready items like "The Spirit of Radio" and "Freewill" signalled a move away from longer-form compositions for Rush and let to a trip up the Billboard charts. 'Permanent Waves' became their first American Top Five album, eventually going platinum.
'Against the Wind'
Bob Seger (1980): A two-time Grammy winner that knocked Pink Floyd's 'The Wall' off the top of the charts, 'Against the Wind' found its strengths in Bob Seger's balladry, rather than his typical meat-and-potatoes rockers.
'Get Happy'
Elvis Costello (1980): Costello's first experiment with the genre-hopping that would define his career was 1980's 'Get Happy.' An excursion into soul music, it sounds like Booker T. and the M.G.s crossed with speed and a rhyming dictionary.
'Women and Children First'
Van Halen (1980): Dark elements begin to creep into Van Halen's sound, after a pair of well-received party-rock albums. That creative tension - somber Eddie, versus impish Dave - would spark the band for years, then (perhaps inevitably) tear it apart.
'Heaven and Hell'
Black Sabbath (1980): When the Ozzy Osbourne-led sessions for 'Heaven and Hell' fell apart, Black Sabbath brought in former Rainbow singer Ronnie James Dio to take his place. Suddenly the band was reborn, producing their best album since 'Masters of Reality.'
'British Steel'
Judas Priest (1980): Judas Priest began to couple their earlier complexity with more polished, groove-focused songs, hurtling NWOBHM into the mainstream. Fun moments like "Breaking the Law" are perfectly balanced by darker triumphs like "Metal Gods."
'Empty Glass'
Pete Townshend (1980): After 15 years of writing mostly for Roger Daltrey's voice, Pete Townshend discovered his own on his proper solo debut. He also matched the Who's highest charting single when "Let My Love Open the Door" reached No. 9.
'Back in Black'
AC/DC (1980): AC/DC's powerhouse tribute to their late singer Bon Scott doubles as a declaration of purpose. With new singer Brian Johnson leading the charge, the group delivered their best album (about sex, death and, um, sex), and suddenly found themselves as one of the planet's biggest bands.
'Scary Monsters'
David Bowie (1980): After the critically lauded but commercially less successful Berlin Trilogy, Bowie began blending in more obvious pop sensibilities - and quickly returned to the top of the UK charts. 'Scary Monsters' can be seen now as a capstone on his '70s-era experimentalism.
'Blizzard of Ozz'
Ozzy Osbourne (1980): There wasn't much momentum behind Osbourne as he emerged from his post-Black Sabbath firing. But the quick maturation of ex-Quiet Riot guitarist Randy Rhoads, coupled with Ozzy's sudden knack for finding neo-metal hooks, quickly turned things around.
'The River'
Bruce Springsteen (1980): Springsteen's double-album follow-up to 1978's 'Darkness on the Edge of Town' plays like an old Hollywood movie, with characters making some bad choices on their way to redemption. He had way too many ideas and songs to pull it all together without losing some focus. But close enough.
'Making Movies'
Dire Straits (1980): Mark Knopfler begins to widen Dire Straits' sonic palette, bringing in jazzier textures and some new-wave sensibilities. His narrative command is growing, too. As such, 'Making Movies' opened the door for every success that followed.
'Remain in Light'
Talking Heads (1980): Bringing in horns, funk session players and Brian Eno, Talking Heads crafted their polyrhythmic masterpiece at the dawn of the decade and changed their direction forever. It sounded amazing and ahead of its time in 1980. It still does.
'Double Fantasy'
John Lennon/Yoko Ono (1980): After a five-year break from music to focus on being a husband and father, Lennon returned with a bunch of songs ... about being a husband and father. Three weeks after its release, he was killed, instilling the work (a collaboration with wife Ono) with even more poignancy.
'Sandinista'
The Clash (1980): The Clash followed up their double-album masterpiece 'London Calling' with a three-record set that was even more sprawling. It's messy at times, and isn't as focused as their three previous LPs, but it's brimming with ideas, innovation and brilliance.
'Paradise Theatre'
Styx (1981): The most successful album in terms of achieving Styx's early goals of mixing of prog-rock ideals and AOR musicality, 'Paradise Theatre' perfectly balances grandiose pieces with short, sharp shocks like "Too Much Time on My Hands," "Snowblind" and "Half-Penny, Two-Penny."
'Face Value'
Phil Collins (1980): This not only redefined Genesis’ new-ish frontman as a solo artist, it worked as a fulcrum for everything that came later as Phil Collins' main band began rapidly metamorphosing from prog into an '80s hit machine.
'Moving Pictures'
Rush (1981): Still their biggest-selling U.S. album, this plays like an early-'80s greatest hits package (Side one's radio and concert favorites include "Tom Sawyer," "Red Barchetta," "YYZ" and "Limelight"), before Rush settles into long-form thoughts.
'Ghost in the Machine'
The Police (1980): If the Police's first three albums were about building styles, subjects and songcraft, their fourth expands the arsenal outright. It's their most political album, and at times their smartest and most melodic.
'Don't Say No'
Billy Squier (1980): For a moment in time, Billy Squier was everywhere, as songs like "My Kinda Lover" and "The Stroke" ruled the airwaves. 'Don't Say No,' in fact, remained on the Billboard album chart for more than two years.
'Fair Warning'
Van Halen (1981): The slowest-selling album of the Roth era, 'Fair Warning' may showcase Van Halen at their least commercial - but also perhaps at their most compelling. Eddie Van Halen's guitar is a central element in this dark and dirty triumph.
'4'
Foreigner (1981): This career peak found Foreigner firing on all commercial cylinders, from the anthemic rock-star love letter of "Jukebox Hero" to tender power ballads like "Waiting on a Girl Like You" to something brand new in "Urgent" - which benefited greatly from a funky cameo on sax by Motown's Junior Parker.
'Escape'
Journey (1981): The addition of Jonathan Cain made a commercial juggernaut out of Journey, which had started as a Bay Area jam band. Cain, in fact, had a songwriting credit for every song on 'Escape,' which reeled off four Top 20 hits - including "Open Arms," the era's definitive power ballad.
'Bella Donna'
Stevie Nicks (1981): Stevie Nicks' long-awaited solo career got off to a fast start with this smash hit, though she still seemed to favor collaborations -- working with Don Henley, Tom Petty and the Heartbreakers, and Waddy Wachtel, rather than Lindsey Buckingham.
'Tattoo You'
The Rolling Stones (1981): The Stones stitched together 'Tattoo You' from various leftover songs dating back to the mid-'70s. But the seams barely show on this tight collection - their last classic album - of sexed-up and riff-driven rockers.
'Abacab'
Genesis (1981): A bold update of the Genesis sound, 'Abacab' focused more on of-the-moment synths even while creating far more space than a group which once ballooned to five members had ever allowed. At the same time, songs like "No Reply At All" make clear their pop intentions for this decade.
'Discipline'
King Crimson (1981): King Crimson returned after a seven-year layoff boasting the snappy new-wave vibe of the day, thanks in no small way to the addition of former David Bowie/Talking Heads sideman Adrian Belew. Tony Levin, fresh off some early solo career-defining work with Peter Gabriel, added new depth, too.
'Too Fast For Love'
Motley Crue (1981): Motley Crue's punkish, bracingly lo-fi 1981 debut may not be their heaviest, best produced or most popular album - but it comes just a 'Shout' short of being their best.
'Diary of a Madman'
Ozzy Osbourne (1981): Randy Rhoads' interest in neo-classical guitar stylings didn't just propel the quickly assembled 'Diary of a Madman' to near-classic status, it pointed to a larger career statement that - tragically - was never to be. In retrospect, it was good Ozzy rushed this out at the end of 1981. By March 1982, Rhoads was gone.
'Asia'
Asia (1982): It wasn't the prog-redux moment many might have expected with a new supergroup featuring members of Yes, Emerson Lake and Palmer and King Crimson. Instead, it was a huge pop hit. So huge, in fact, that Asia almost immediately started splitting apart.
'Number of the Beast'
Iron Maiden (1982): New singer Bruce Dickinson's powerful, operatic voice unlocked the gates to metal immortality for Iron Maiden, inspring Steve Harris to take his songwrting to a new level on jaw-dropping tracks like "Run to the Hills" and "Hallowed Be Thy Name."
'Shoot Out the Lights'
Richard and Linda Thompson (1982): Richard and Linda Thompson were ending their 10-year marriage when they recorded 'Shoot Out the Lights,' and the resentment, hopelessness and regret are palpable in the songs. One of rock's all-time greatest breakup albums.
'Tug of War'
Paul McCartney (1982): McCartney scored his final No. 1 album so far, largely on the strength of the smash Steve Wonder duet "Ebony and Ivory." Dig deeper, however, and you'll find far more interesting gems such as "Wanderlust" and "Take it Away." A great Wings song that wasn’t, the latter should have been the bigger hit.
'IV'
Toto (1982): To this point, Toto hadn't managed a hit album, something all the more curious considering the studio pedigree of its core members. So, they put their heads together and came up with one. A huge one.
'Avalon'
Roxy Music (1982): Roxy Music departed on a high note with this elegant synth-pop gem. 'Avalon' rose to No. 1 in the UK behind the sophisticated, Bryan Ferry-crooned romance of songs like "More Than This" and the title track.
'Mirage'
Fleetwood Mac (1982): After indulging in the sprawling, wildly expensive, weirdly effective 'Tusk,' Fleetwood Mac returned with a comfy retro vibe for 'Mirage' - and fans raced back for the lacey mysteries of "Gypsy" and the soaring joys of "Hold Me."
'Night and Day'
Joe Jackson (1982): Joe Jackson's first album after moving to New York was a love note to his new home. A shimmering collection of songs that touched on rock, Latin, jazz and pop, 'Night and Day' had two Top 20 hits in "Steppin' Out" and "Breaking Us in Two."
'Imperial Bedrooom'
Elvis Costello (1982): After setting the bar for dense, layered post-punk with 1979's 'Armed Forces,' Elvis Costello raised it again with 'Imperial Bedroom.' The album was a musically adventurous excursion in genre-hopping that earned comparisons to George Gershwin and Cole Porter.
'Screaming for Vengeance'
Judas Priest (1982): And to think, the best-known track on Judas Priest's breakthrough album almost didn't make it. Needing one more song to complete the project, they turned to an unfinished number that became "You've Got Another Thing Comin'."
'Nebraska'
Bruce Springsteen (1982): Springsteen originally meant for these stark, desolate songs to serve as demos for the E Street Band, but their themes - mostly death and despair, and lots of it - worked better as stripped-down acoustic numbers. We can't imagine them any other way.
'Security'
Peter Gabriel (1982): Yes, this was to be Peter Gabriel's fourth consecutive self-titled solo album. (A frustrated Geffen Records added a sticker saying 'Security' in the U.S.) Inside, however, much had changed, as Gabriel began to dabble in the African and Latin rhythms that would make 'So' a career-changing smash.
'Creatures of the Night'
Kiss (1982): With their career in tatters, Kiss finally stopped messing around with disco, pop and concept albums and delivered their heaviest and most sophisticated album ever. Someday we're going to convince them to play "Saint and Sinner" and "Rock and Roll Hell" live.
'Pyromania'
Def Leppard (1983): With this album, both Def Leppard and producer Mutt Lange came into their own. Focusing less on raw energy and more on pristine melodicism, they created a gleaming tower of pop-metal.
'Eliminator'
ZZ Top (1983): ZZ Top traded their blues stylings for synth-driven pop on the MTV-conquering 'Eliminator,' and in effect became arena-filling pop stars. But beneath all that new polish was the same ol' boogie that helped define them a decade before.
'Let's Dance'
David Bowie (1983): David Bowie's decision to work with Nile Rodgers, and by extension his suave and funky band Chic, gave this album a sleek approachability in keeping with the times - and Bowie his biggest hit ever. A dash of grit comes courtesy of guest guitarist Stevie Ray Vaughan, then largely unknown.
'Holy Diver'
Dio (1983): After extremely productive stints as lead singer for Rainbow and Black Sabbath, Ronnie James Dio stepped out on his own and delivered another masterpiece right out of the gate with 'Holy Diver.' The still-ubiquitous title track and "Rainbow in the Dark" get all the attention, but the entire album is worthy of your time.
'Piece of Mind'
Iron Maiden (1983): Iron Maiden's most famous lineup finally locked into place on their fourth album with the arrival of the technically dazzling Nicko McBrain. Meanwhile, on his second studio effort with the group, Bruce Dickinson proves himelf an important songwriting partner as well as one of the genre's best singers on tracks like "Revelations" and "Die With Your Boots On."
'Texas Flood'
Stevie Ray Vaughan (1983): All of the guitar gods were gone, or otherwise occupied. Drum machines had replaced stomping feet. There were synthesizers instead of someone slapping on the 88s. Into this unlikeliest of scenarios stepped Stevie Ray Vaughan.
'Synchronicity'
The Police (1983): The ultimate lesson on leaving at the top of your game, the Police's last album is a dark and complex masterpiece that was light-years from the reggae-infused punk of their first few records. But it was tuneful and accessible enough to sell eight million copies and have four smash hit singles.
'Kill 'Em All'
Metallica (1983): The future kings of metal went all Nuke LaLoosh and announced their presence with authority on their debut album, mixing breakneck speed with technical precision to help create the thrash genre on "Hit the Lights," "Whiplash" and "Seek & Destroy."
'Innocent Man'
Billy Joel (1983): As he was falling in love with supermodel Christie Brinkley, Billy Joel looked back at the rock and soul music of his youth on 'An Innocent Man.' It spawned three Top 10 hits and remained on the charts for more than 100 weeks.
'Shout at the Devil'
Motley Crue (1983): Motley Crue's relentless, riff-filled second record immediately catapulted them into hard rock superstardom, and remains their masterpiece. Some of us (definitely not all of us) think they even managed to out-do the Beatles with their scorching take on "Helter Skelter."
'Rebel Yell'
Billy Idol (1983): As immediate as this album sounds, it's easy to forget that Billy Idol had to perfect quite a complex formula to create 'Rebel Yell.' Punk attitude, metal guitar, pop smarts, soulful vocals - and yes, the accompanying MTV-ready visuals - all blended together in perfect doses to create this essential '80s sensation.
'90125'
Yes (1983): Yes’ best-selling U.S. single ever, “Owner of a Lonely Heart” shot to No. 1 on the strength of its new-wave attitude then its weirdly transfixing video - and this legacy group was reborn for a new age.
'1984'
Van Halen (1984): For his band's sixth album, Eddie Van Halen pulled out a synthesizer, wrote songs rather than riffs and changed the group's fortunes. It eventually tore apart the band (David Lee Roth was gone the next year), but it left us with classics like "Jump," "Panama" and "Hot for Teacher."
'Heartbeat City'
The Cars (1984): Trading in the edgy new wave sound of their earlier triumphs, the Cars enlisted now-mega-producer Mutt Lange to help produce something poppier, glossier and arguably even more radio-friendly. Naturally, it sold a bazillion copies. Sadly, it was also pretty much the end of the group.
'Stay Hungry'
Twisted Sister (1984): After years of slowly conquering the Long Island and New York metal scene, Twisted Sister grabbed the brass ring with their third album's undeniable twin anthems, "We're Not Gonna Take It" and "I Wanna Rock." In retrospect, the only shame is that those pop-tinged hits drowned out the rest of this impressive album's more diverse and aggresive songs.
'Born in the USA'
Bruce Springsteen (1984): The moment where Springsteen became the biggest rock star on the planet. And he managed it with one of his best set of songs - all rage, sorrow and nostalgia for better days. A landmark record of the '80s and a timeless classic.
'Ride the Lightning'
Metallica (1984): Metallic fearlessly left the pioneering style of their barely-a-year-old first album far behind with their sophomore effort. Happily, the dramatic advances in production values and songwriting complexity did absolutely nothing to diminish the band's primal fury.
'Stop Making Sense'
Talking Heads (1984): One of rock's greatest live albums, by one of rock's greatest live bands. Talking Heads were full into their expanded lineup when they recorded their concert movie and this excellent soundtrack, which rework their already formidable catalog into dizzying new heights.
'Reckless'
Bryan Adams (1984): 'Reckless' had peaked, it seemed, outside the Top Five in January 1985. But Bryan Adams kept releasing songs, and they kept becoming hits, and pretty soon his album had not only reached No. 1 but had become the first by a Canadian to sell one million copies in his home country.
'Building the Perfect Beast'
Don Henley (1984): If this synth-laden, distinctively modern album was your first taste of Don Henley, you might have found it difficult to believe he was once a country-rock pioneer with the Eagles. But beneath that '80s veneer, Henley's familiar songwriting strengths emerge.
'How Will the Wolf Survive?'
Los Lobos (1984): Before they started exploring meticulously crafted soundscapes in the studio, and before they hit No. 1 with their cover of "La Bamba," Los Lobos made one of the '80s' best roots records. Smart, sharp ... and you can dance to it.
'Centerfield'
John Fogerty (1985): After a 10-year vacation from music, Fogerty returned with his most Creendence-like set of songs since he shut down the band in the early '70s. It's a self-referential work, with lyrical and musical quotes to his CCR days, and a renewed sense of purpose from one of rock's greatest songwriters.
'Southern Accents'
Tom Petty (1985): Petty explores the South and his connection to it, while also enlisting Eurythmics Dave Stewart to produce a handful of mind-warping tracks. It's not Petty's most focused album (and he and his band fought during its completion), but it's an interesting '80s sidetrack.
'Brothers in Arms'
Dire Straits (1985): Mark Knopfler polished and fine-tuned the tracks on 'Brothers in Arms' to the point where they sounded like perfectly constructed packages of the digital future. All that airlessness would be stifling if the songs ("Money for Nothing," "So Far Away," "Walk of Life") weren't so great.
'Dream of the Blue Turtles'
Sting (1985): After dissolving the Police, Sting hooked up with some of jazz's hottest young guns for his first solo album. 'The Dream of the Blue Turtles' falls somewhere in between the two genres, creating a unique sound and some of the decade's most pointed social commentary.
'Scarecrow'
John Mellencamp (1985): Mellencamp got serious and political on his eighth album, an exploration of deep-rooted Americana that he had first played around with on "Pink Houses" a couple of years earlier. The former John Cougar got even rootsier on the follow-up, 'The Lonesome Jubilee,' but 'Scarecrow' is where it all comes together for him.
'Rain Dogs'
Tom Waits (1985): Waits began transforming himself from boozy beatnik to avant-rock weirdo around the turn of the decade. On 'Rain Dogs' he completely gives in to his weirdo side. Trashcan percussion, bullhorn vocals and a Keith Richards cameo - all-around brilliant.
'Biograph'
Bob Dylan (1985): This box (originally five LPs) gathers more than 50 songs from Dylan's first three decades - nearly half of them never released or collected on album. It's a riveting portrait of one of music's most influential figures.
'Master of Puppets'
Metallica (1986): On their third album, Metallica perfected the thrash assault they were working their way up to since the decade's start. It influenced tons of other likeminded artists, and, more importantly, on songs like the battering title track, it runs circles around the rest of '80s metal.
'5150'
Van Halen (1986): On this fanbase-polarizing but ultimately undeniable album, Van Halen take full advantage of new frontman Sammy Hagar's considerable vocal abilities, expanding their range on songs like the soaring "Dreams" and the surprisingly sophisticated "Best of Both Worlds."
'So'
Peter Gabriel (1986): After four albums of demanding art-rock, Gabriel switched gears a bit on his fifth solo LP (and the first to feature an actual title). Its mainstream success - thanks to hit singles "Sledgehammer" and "In Your Eyes," among others - proved that even intimidating '70s prog-rockers could be world-dominating pop stars.
'Eat 'Em and Smile'
David Lee Roth (1986): Diamond Dave sure seemed screwed after acrimoniously leaving hard rock's best and most popular act at the height of their fame. But shockingly, while his former battery mate Eddie Van Halen experimented with keyboards and (gasp!) maturity, Roth recruited a three-headed monster of a band and beat his old crew hands down in terms of pure rock thrills.
'Slippery When Wet'
Bon Jovi (1986): With the possible exception of U2, there isn't a band that was more honest about priortizing world domination than Bon Jovi circa 1986. Purists cried foul over the band's carefully calculated, literally focus-grouped songcraft and mom-friendly sound. But over 12,000,000 people ignored those haters and made Bon Jovi the biggest band of the decade.
'Orgasmatron'
Motorhead (1986): We realize we're courting controversy by choosing this over 'Ace of Spades,' but it's not a stunt. There's something just foreign enough about the production on this one to cast Motorhead's awesomely predictable sound in a whole new light. Plus, the first five songs are sequenced together so tightly it's like hearing the 'Abbey Road' medley on amphetamines.
'Graceland'
Paul Simon (1986): Nobody's done more for world music than Simon, who enlisted South African musicians to liven his greatest solo LP. 'Graceland' is a joyous, super-catchy collection of songs about growing up, growing old and seizing the moment. Forget the controversy; this is music to get lost in.
'Hysteria'
Def Leppard (1987): No album defines the sound of the '80s more than this gazillion-selling hit. With Mutt Lange again behind the boards, Def Leppard crafted a set of polished pop-rock gems (like the eternal "Pour Some Sugar on Me") that glisten beneath the weight of their stellar hooks.
'Joshua Tree'
U2 (1987): U2's masterpiece sounds epic from the very first notes of the opening "Where the Streets Have No Name." Bono and band made their legend here, on their fifth album, with shimmering guitars, arena-shaking hooks and a soundscape as big as their imaginations would allow.
'Electric'
The Cult (1987): Ever wonder how Jim Morrison would sound fronting early-70's AC/DC? Luckily, with help from Rick Rubin's spartan production methods the Cult tried that look out for this one glorious album. It fit perfectly, so naturally they changed their style again the next time out.
'Appetite for Destruction'
Guns N' Roses (1987): Guns N' Roses busted outta Los Angeles like they had something to prove. Before Nirvana got around to killing hair metal once and for all, GNR got in the first blow on this still-powerful debut assault of riffs, hooks and attitude.
'Lonesome Jubilee'
John Mellencamp (1987): Mellencamp dove deeper into the introspective socio-political themes he’d begun exploring with 1985’s 'Scarecrow,' even as rootsier sounds - accordion, melodica, fiddle - moved to the fore.
'Sentimental Hygiene'
Warren Zevon (1987): Fresh out of rehab, Warren Zevon rediscovered his muse and savage wit on 'Sentimental Hygeine.' It was recorded with an all-star cast, including Neil Young, Bob Dylan, Don Henley and members of the Heartbreakers and R.E.M.
'Tunnel of Love'
Bruce Springsteen (1987): After the massive success of 'Born in the U.S.A.,' Springsteen scaled back his music and changed his focus. The result was a stunning song cycle about the pitfalls of falling in love when you're not emotionally ready for it.
'Surfing with the Alien'
Joe Satriani (1987): Steve Vai and Kirk Hammet's former guitar teacher proves that guitar wizardy is about 100 times more impressive when paired up with great songwriting on his commercial breakthrough, 'Surfing With the Alien.' Plus, for crying out loud, the guitar is laughing like a chimpanzee with hiccups at the end of the title track!
'Now and Zen'
Robert Plant (1988): After too long ignoring everything that came before, Plant begins a tentative return to his Led Zeppelin legacy by way of a couple of collaborations here with Jimmy Page. At the same time, a group of younger collaborators goosed him into exciting new sounds.
'Crossroads'
Eric Clapton (1988): One of rock's first box sets of the CD era, and still one of the best. Collecting material from Clapton's vast career - including the Yardbirds, John Mayall's Bluesbreakers, Cream, Derek and the Dominoes and solo material - 'Crossroads' included enough previously unreleased tracks to entice old fans.
'Vivid'
Living Colour (1988): Living Colour obliterated the lines between rock, funk, metal and jazz on their debut. 'Vivid' took on topics like racism, slumlords and celebrity culture while giving some of the decade's most accessibly complex music.
'Nothing's Shocking'
Jane's Addiction (1988): Jane's Addiction were too artsy to fit in with L.A.'s metal scene, too heavy to be part of the alternative club. So they basically became their own entity, combining Zeppelin-sized riffs with tricky art-rock poses on their classic studio debut.
'And Justice For All'
Metallica (1987): Metallica's fourth album (and first to feature Jason Newsted on bass following Cliff Burton's death) expanded the ideas and sprawling set pieces found on the band's earlier LPs. For years, fans have complained about 'Justice''s thin production, but that doesn't take anything away from epic songs like "One."
'Talk is Cheap'
Keith Richards (1988): Mick Jagger had issued his platinum-selling solo debut in 1985, but to this point Richards had refrained from working outside the framework of the Rolling Stones. 'Talk is Cheap,' a brilliantly nasty little aside that went gold, equalized things - and the Stones were back on track for an improbable reunion that continued into a new millennium.
'Vol. 1'
Traveling Wilburys (1988): When needing a b-side, George Harrison roped in Bob Dylan, Roy Orbison Tom Petty and Jeff Lynne and wound up with a full album, While supergroups often disappoint due to a desire to overwhelm, the Traveling Wilburys succeed because they kept things loose.
'New York'
Lou Reed (1989): The last best thing that Lou Reed ever did, 'New York' (with its flinty ripped-from-the-headlines references like the "Statue of Bigotry") helped nudge rock toward a better self - even as it put a period on what had become a deeply overindulgent period in American history.
'Full Moon Fever'
Tom Petty (1989): Although this was Petty's first solo album, all of the Heartbreakers but drummer Stan Lynch played on it. Produced by Jeff Lynne, it contains some of Petty's biggest hits, including "I Won't Back Down," "Running Down a Dream" and the majestic "Free Fallin'."
'End of the Innocence'
Don Henley (1989): Henley shifted priorities from decadent rock star to socially aware crusader sometime in the '80s, and on his best album, he chronicles the effects of eight years of Reaganomics on his struggling Everyman. He catalogs matters of the heart too, but the pained title track sums up the decade's dashed dreams.
'Pump'
Aerosmith (1989): After spending the first half of the '80s barely visible, Aerosmith staged a comeback with 1987's 'Permanent Vacation.' But it's 1989's 'Pump' that sealed it. The slickly produced but hook-stuffed album kicked off the band's most commercially successful era, culminating in multiple chart-topping hits.
'Oh Mercy'
Bob Dylan (1989): Dylan gave in to worry, seeming to rebuke everything he'd preached on hope-filled albums like 'Saved' - not to mention his goofball turns with the Traveling Wilburys. The result was a late-period classic, governed by producer Daniel Lanois' atmospheric process.
'Dr. Feelgood'
Motley Crue (1989): Already riding an impressive streak of multi-platinum albums, Motley Crue really buckled down for their fifth album. They got sober and brought in producer Bob Rock to tighten up their songs and pump up their sound. Their hard work was rewarded with five hit singles and the biggest-selling album of their career.
'Freedom'
Neil Young (1989): The artistic reemergence hinted at on Neil Young's rootsy 1988 return to Reprise, ‘This Note’s for You,’ was realized a year later with ‘Freedom’ - his most varied, most topical, most complete work since the ’70s.
Next: Five Crazy Stories From Sebastian Bach's Autobiography


File
New
Save
Save As...
Edit
Undo
Redo
Find
Find...
Find Next
Go to Line...
View
Line Numbers
About
Acknowledgements
Delete
Run
Undo
Redo
Clear


watches
There are thousands of watches
Perfumes
Lots and Lots of fragnances
Jeans
Stylish clothes for you


Welcome to Doughboyz!
Flapjacks and Good Snacks.
Our world's famous pancakes. Each order comes in a short stack of three, get them while there hot!
Obviously not as good as the pancakes but still a great meal to start your day.
Try our all natural brand new crepes prepared fresh for you by Chef Zeph!
Browse our selection of options then place your order on the "Order" page.


Filestack\Mixins\CommonMixin
Mixin for common functionalities used by most Filestack objects
Synopsis
- // members
- protected $http_client;
- protected $http_promises;
- protected $user_agent_header;
- protected $source_header;
- public $cname;
- // methods
- protected string getCustomUrl()
- public bool isUrl()
- public int get_retry_miliseconds()
- public bool sendDelete()
- protected bool sendDownload()
- public void addDownloadFlagToUrl()
- protected string sendGetContent()
- protected array sendGetMetaData()
- protected json sendGetSafeForWork()
- protected json sendGetTags()
- public Filelink sendOverwrite()
- protected Filelink handleResponseCreateFilelink()
- protected array handleResponseDecodeJson()
- protected void sendRequest()
- protected void getSourceHeaders()
- protected void addRequestSourceHeader()
- protected void appendData()
- protected void appendPromise()
- protected void settlePromises()
Hierarchy
Coverage
| Methods | 0% | 0 / 19 |
| Lines | 0% | / |
Members
protected
- $http_client
- $http_promises
- $source_header
- $user_agent_header
public
- $cname
Methods
protected
- addRequestSourceHeader() — Append source header to request headers array
- appendData() — Append a data item
- appendPromise()
- getCustomUrl() — If CNAME is set, return custom CNAME URL, else, noop.
- getSourceHeaders() — Get source header
- handleResponseCreateFilelink() — Handle a Filestack response and create a filelink object
- handleResponseDecodeJson() — Handles a response. decode and return json if 200, throws exception otherwise.
- sendDownload() — Download a file to specified destination given a url
- sendGetContent() — Get the content of a file.
- sendGetMetaData() — Get the metadata of a remote file. Will only retrieve specific fields if optional fields are passed in
- sendGetSafeForWork() — Get the safe for work (sfw) flag of a filelink.
- sendGetTags() — Get the tags of a filelink.
- sendRequest() — Send request
- settlePromises()
public
- addDownloadFlagToUrl() — Append the download flag to a url that may or may not have existing query string flags
- get_retry_miliseconds() — Get the miliseconds of exponential backoff retry strategy
- isUrl() — Check if a string is a valid url.
- sendDelete() — Delete a file from cloud storage
- sendOverwrite() — Overwrite a file in cloud storage
History
-
2019-06-13T19:33:41+00:00 (commit #8d9b375)
Author: Colin Sheaff<EMAIL_ADDRESS>/ Commiter: Colin Sheaff<EMAIL_ADDRESS>Refactor custom CNAME URL function to improve testing coverage.
-
2019-06-07T17:01:05+00:00 (commit #ba60795)
Author: Colin Sheaff<EMAIL_ADDRESS>/ Commiter: Colin Sheaff<EMAIL_ADDRESS>Improved custom CNAME implementation and coverage.
-
2019-05-31T22:14:51+00:00 (commit #4058b58)
Author: Colin Sheaff<EMAIL_ADDRESS>/ Commiter: Colin Sheaff<EMAIL_ADDRESS>fix #40 : Add support for custom CNAME This patch primarily addresses the lack of custom CNAME support for urls that might get used in HTML templates populated by a server, so that client browsers will request resources via the custom CNAME. This patch DOES NOT try convert all server-side requests to use the
-
2018-08-17T00:53:22+00:00 (commit #3a7b1db)
Author: Max Schwanekamp<EMAIL_ADDRESS>/ Commiter: Max Schwanekamp<EMAIL_ADDRESS>Use the new method
-
2018-08-14T21:43:05+00:00 (commit #277d7be)
Author: Max Schwanekamp<EMAIL_ADDRESS>/ Commiter: Max Schwanekamp<EMAIL_ADDRESS>fix #35 : Add CommonMixin::addDownloadFlagToUrl() method to correctly add the download param when getting file for download
-
2017-08-06T19:50:58+00:00 (commit #a854fee)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>error handling strategy for intelligent flow
-
2017-07-28T19:52:51+00:00 (commit #7cc1475)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>fixed small file upload no partNum
-
2017-07-28T19:46:31+00:00 (commit #1e77dd6)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added UploadProcessor with intelligent ingestion logic
-
2017-06-09T19:54:00+00:00 (commit #3056432)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added getTags() and getSafeForWork functions to client and flielink objects
-
2017-05-31T16:03:10+00:00 (commit #c2c9d52)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>updated filestack source headers
-
2017-05-31T15:09:40+00:00 (commit #6dc7368)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>updated source header to Filestack-Source
-
2017-05-26T15:52:48+00:00 (commit #1273bba)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added getConvertTaskInfo function to client and filelink objects
-
2017-05-25T21:37:44+00:00 (commit #9b61464)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>consolidated sendRequest functions, send X-Filestack-Source header
-
2017-05-24T21:58:41+00:00 (commit #3525898)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>use async requests and concurrent calls for multipart uploads
-
2017-05-22T22:55:04+00:00 (commit #915421e)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>implemented multiparts upload
-
2017-05-18T21:54:39+00:00 (commit #74f4ec3)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>switched to use phpmd for codeclimate
-
2017-05-18T21:25:18+00:00 (commit #39bb65b)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>setup codeclimate
-
2017-05-11T21:27:19+00:00 (commit #ca5159d)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added collage() function to client and filelink. Modified transform calls to return filelink object instead of content. changed store() to save() on filelink calls.
-
2017-05-10T22:19:18+00:00 (commit #b389934)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added screenshot() function
-
2017-05-09T17:18:45+00:00 (commit #5c9df3d)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added coverage settings to phpunit. add tests to reach 100% coverage
-
2017-05-08T22:30:51+00:00 (commit #a96f32d)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added Transformations chaining and catchal to Filelink obj added transform func to client for external urls
-
2017-05-05T17:39:21+00:00 (commit #942180a)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>moved security to constructor and removed as parameters for client and filelink
-
2017-05-05T14:08:10+00:00 (commit #4b837ac)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>preliminary design of mixin
-
2017-05-04T20:33:57+00:00 (commit #2b25400)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>installed and ran php-cs-fixer. updated examples, added real tests but marked as skipped
-
2017-05-04T18:20:21+00:00 (commit #fb1b6fd)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added overwrite method to client and filelink
-
2017-05-04T17:16:49+00:00 (commit #809b3d4)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added delete function to filelink and client
-
2017-05-04T16:22:33+00:00 (commit #e5e1cad)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added security class
-
2017-05-03T21:20:04+00:00 (commit #1337a7f)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added download, getContent, and getMetaData to client and filelink objects
-
2017-05-02T22:26:18+00:00 (commit #00533b7)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added User-Agent header to http request
-
2017-05-02T21:50:52+00:00 (commit #bf2ef12)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>added options to store function. added store functio to Filelink
-
2017-05-01T22:13:47+00:00 (commit #61c4278)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>removed ds_store, updated example, updated test with mocks
-
2017-05-01T01:21:36+00:00 (commit #8a961cd)
Author: Huey Ly<EMAIL_ADDRESS>/ Commiter: Huey Ly<EMAIL_ADDRESS>setting up project file structure


- Culminate
- Mountly
Nina Jones added a new product Free UI Kit
Just Now
James Smith commpleted task Free PSD Template
40 minutes ago
Alex Clooney commpleted task Sumu Website
1 hours ago
Nina Jones added a new product Free UI Kit
Just Now
- Websites
- Logo
- Social media
- Adwords
- E-Commerce
Associate Creative Director @EF
«How could she do something like this to me?» said a voice in my head. All the time. Every day... More
Company Founder
«How could she do something like this to me?» said a voice in my head. All the time. Every day... More
Associate Creative Director @EF
«How could she do something like this to me?» said a voice in my head. All the time. Every day... More


| Contents | Prev | Next | Index | Java Language Specification Second Edition |
CHAPTER 5
Every expression written in the Java programming language has a type that can be deduced from the structure of the expression and the types of the literals, variables, and methods mentioned in the expression. It is possible, however, to write an expression in a context where the type of the expression is not appropriate. In some cases, this leads to an error at compile time; for example, if the expression in an if
statement (§14.9) has any type other than boolean
, a compile-time error occurs. In other cases, the context may be able to accept a type that is related to the type of the expression; as a convenience, rather than requiring the programmer to indicate a type conversion explicitly, the language performs an implicit conversion from the type of the expression to a type acceptable for its surrounding context.
A specific conversion from type S to type T allows an expression of type S to be treated at compile time as if it had type T instead. In some cases this will require a corresponding action at run time to check the validity of the conversion or to translate the run-time value of the expression into a form appropriate for the new type T. For example:
Object
to type Thread
requires a run-time check to make sure that the run-time value is actually an instance of class Thread
or one of its subclasses; if it is not, an exception is thrown.
Thread
to type Object
requires no run-time action; Thread
is a subclass of Object
, so any reference produced by an expression of type Thread
is a valid reference value of type Object
.
int
to type long
requires run-time sign-extension of a 32-bit integer value to the 64-bit long
representation. No information is lost.
double
to type long
requires a nontrivial translation from a 64-bit floating-point value to the 64-bit integer representation. Depending on the actual run-time value, information may be lost.
In every conversion context, only certain specific conversions are permitted. For convenience of description, the specific conversions that are possible in the Java programming language are grouped into several broad categories:
One conversion context is the operand of a numeric operator such as +
or *
. The conversion process for such operands is called numeric promotion. Promotion is special in that, in the case of binary operators, the conversion chosen for one operand may depend in part on the type of the other operand expression.
This chapter first describes the seven categories of conversions (§5.1), including the special conversions to String
allowed for the string concatenation operator +
. Then the five conversion contexts are described:
String
.
which produces the output:class Test { public static void main(String[] args) { // Casting conversion (§5.4) of a float literal to // type int.   This is a binary numeric promotion. // After promotion, the operation is float*float: System.out.print(f); f = f * i; // Two string conversions of i and f: System.out.println("*" + i + "==" + f); // Method invocation conversion (§5.3) of f's value // to type double, needed because the method Math.sin // accepts only a double argument: double d = Math.sin(f); // Two string conversions of f and d: System.out.println("Math.sin(" + f + ")==" + d); } }
(int)12.5f==12 after float widening: 12.0 12.0*12==144.0 Math.sin(144.0)==-0.49102159389846934
This may seem trivial, but it has two practical consequences. First, it is always permitted for an expression to have the desired type to begin with, thus allowing the simply stated rule that every expression is subject to conversion, if only a trivial identity conversion. Second, it implies that it is permitted for a program to include redundant cast operators for the sake of clarity.
The only permitted conversion that involves the type boolean
is the identity conversion from boolean
to boolean
.
byte
to short
, int
, long
, float
, or double
short
to int
, long
, float
, or double
char
to int
, long
, float
, or double
int
to long
, float
, or double
long
to float
or double
float
to double
float
to double
do not lose any information at all; the numeric value is preserved exactly. Conversions widening from float
to double
in strictfp
expressions also preserve the numeric value exactly; however, such conversions that are not strictfp
may lose information about the overall magnitude of the converted value.
Conversion of an int
or a long
value to float
, or of a long
value to double
, may result in loss of precision-that is, the result may lose some of the least significant bits of the value. In this case, the resulting floating-point value will be a correctly rounded version of the integer value, using IEEE 754 round-to-nearest mode (§4.2.4).
A widening conversion of a signed integer value to an integral type T simply sign-extends the two's-complement representation of the integer value to fill the wider format. A widening conversion of a character to an integral type T zero-extends the representation of the character value to fill the wider format.
Despite the fact that loss of precision may occur, widening conversions among primitive types never result in a run-time exception (§11).
Here is an example of a widening conversion that loses precision:
which prints:class Test { public static void main(String[] args) { int big =<PHONE_NUMBER>; float approx = big; System.out.println(big - (int)approx); } }
thus indicating that information was lost during the conversion from type-46
int
to type float
because values of type float
are not precise to nine significant digits.
byte
to char
short
to byte
or char
char
to byte
or short
int
to byte
, short
, or char
long
to byte
, short
, char
, or int
float
to byte
, short
, char
, int
, or long
double
to byte
, short
, char
, int
, long
, or float
A narrowing conversion of a signed integer to an integral type T simply discards all but the n lowest order bits, where n is the number of bits used to represent type T. In addition to a possible loss of information about the magnitude of the numeric value, this may cause the sign of the resulting value to differ from the sign of the input value.
A narrowing conversion of a character to an integral type T likewise simply discards all but the n lowest order bits, where n is the number of bits used to represent type T. In addition to a possible loss of information about the magnitude of the numeric value, this may cause the resulting value to be a negative number, even though characters represent 16-bit unsigned integer values.
A narrowing conversion of a floating-point number to an integral type T takes two steps:
long
, if T is long
, or to an int
, if T is byte
, short
, char
, or int
, as follows:
int
or long
0
.
long
, and this integer value can be represented as a long
, then the result of the first step is the long
value V.
int
, then the result of the first step is the int
value V.
int
or long
.
int
or long
.
int
or long
, the result of the conversion is the result of the first step.
byte
, char
, or short
, the result of the conversion is the result of a narrowing conversion to type T (§5.1.3) of the result of the first step.
produces the output:class Test { public static void main(String[] args) { float fmin = Float.NEGATIVE_INFINITY; float fmax = Float.POSITIVE_INFINITY; System.out.println("long: " + (long)fmin + ".." + (long)fmax); System.out.println("int: " + (int)fmin + ".." + (int)fmax); System.out.println("short: " + (short)fmin + ".." + (short)fmax); System.out.println("char: " + (int)(char)fmin + ".." + (int)(char)fmax); System.out.println("byte: " + (byte)fmin + ".." + (byte)fmax); } }
The results forlong: -9223372036854775808..9223372036854775807 int: -2147483648..2147483647 short: 0..-1 char: 0..65535 byte: 0..-1
char
, int
, and long
are unsurprising, producing the minimum and maximum representable values of the type.
The results for byte
and short
lose information about the sign and magnitude of the numeric values and also lose precision. The results can be understood by examining the low order bits of the minimum and maximum int.
The minimum int
is, in hexadecimal, 0x80000000
, and the maximum int
is 0x7fffffff
. This explains the short
results, which are the low 16 bits of these values, namely, 0x0000
and 0xffff
; it explains the char
results, which also are the low 16 bits of these values, namely, '\u0000'
and '\uffff'
; and it explains the byte
results, which are the low 8 bits of these values, namely, 0x00
and 0xff
.
Despite the fact that overflow, underflow, or other loss of information may occur, narrowing conversions among primitive types never result in a run-time exception (§11).
Here is a small test program that demonstrates a number of narrowing conversions that lose information:
This test program produces the following output:class Test { public static void main(String[] args) { // A narrowing of int to short loses high bits: System.out.println("(short)0x12345678==0x" + Integer.toHexString((short)0x12345678)); // A int value not fitting in byte changes sign and magnitude: System.out.println("(byte)255==" + (byte)255); // A float value too big to fit gives largest int value: System.out.println("(int)1e20f==" + (int)1e20f); // A NaN converted to int yields zero: System.out.println("(int)NaN==" + (int)Float.NaN); // A double value too large for float yields infinity: System.out.println("(float)-1e100==" + (float)-1e100); // A double value too small for float underflows to zero: System.out.println("(float)1e-50==" + (float)1e-50); } }
(short)0x12345678==0x5678 (byte)255==-1 (int)1e20f==2147483647 (int)NaN==0 (float)-1e100==-Infinity (float)1e-50==0.0
Object
from any other class type.)
Object
.
Object
.
Cloneable
.
java.io.Serializable
[]
to any array type TC[]
, provided that SC and TC are reference types and there is a widening conversion from SC to TC.
See §8 for the detailed specifications for classes, §9 for interfaces, and §10 for arrays.
Object
to any other class type.)
Object
to any interface type.)
Object
to any array type.
Object
to any interface type.
final
.
final
, provided that T implements J.
[]
to any array type TC[]
, provided that SC and TC are reference types and there is a narrowing conversion from SC to TC.
ClassCastException
is thrown.String
from every other type, including the null type.boolean
other than the identity conversion.
boolean
other than the identity conversion and string conversion.
final
and does not implement K.
Object
.
final
and does not implement J.
Object
or String
.
java.io.Serializable
and Cloneable
, which are implemented by all arrays.
[]
to array type TC[]
if there is no permitted conversion other than a string conversion from SC to TC.
Within an expression that is not FP-strict (§15.4), value set conversion provides choices to an implementation of the Java programming language:
float
and is not an element of the float value set, then the implementation must map the value to the nearest element of the float value set. This conversion may result in overflow or underflow.
double
and is not an element of the double value set, then the implementation must map the value to the nearest element of the double value set. This conversion may result in overflow or underflow.
Whether in FP-strict code or code that is not FP-strict, value set conversion always leaves unchanged any value whose type is neither float
nor double
.
byte
, short
, char
or int
.
byte
, short
, or char
.
If the type of the variable is float
or double
, then value set conversion is applied after the type conversion:
float
and is an element of the float-extended-exponent value set, then the implementation must map the value to the nearest element of the float value set. This conversion may result in overflow or underflow.
double
and is an element of the double-extended-exponent value set, then the implementation must map the value to the nearest element of the double value set. This conversion may result in overflow or underflow.
An assignment conversion never causes an exception. (Note, however, that an assignment may result in an exception in a special case involving array elements -see §10.10 and §15.26.1.)
The compile-time narrowing of constants means that code such as:
is allowed. Without the narrowing, the fact that the integer literalbyte theAnswer = 42;
42
has type int
would mean that a cast to byte
would be required:
A value of primitive type must not be assigned to a variable of reference type; an attempt to do so will result in a compile-time error. A value of typebyte theAnswer = (byte)42; // cast is permitted but not required
boolean
can be assigned only to a variable of type boolean
.The following test program contains examples of assignment conversion of primitive values:
It produces the following output:class Test { public static void main(String[] args) { short s = 12; // narrow 12 to short float f = s; // widen short to float System.out.println("f=" + f); char c = '\u0123'; long l = c; // widen char to long System.out.println("l=0x" + Long.toString(l,16)); f = 1.23f; double d = f; // widen float to double System.out.println("d=" + d); } }
The following test, however, produces compile-time errors:f=12.0 l=0x123 d=1.2300000190734863
because not allclass Test { public static void main(String[] args) { short s = 123; char c = s; // error: would require cast s = c; // error: would require cast } }
short
values are char
values, and neither are all char
values short
values.A value of the null type (the null reference is the only such value) may be assigned to any reference type, resulting in a null reference of that type.
Here is a sample program illustrating assignments of references:
Assignment of a value of compile-time reference type S (source) to a variable of compile-time reference type T (target) is checked as follows:public class Point { int x, y; } public class Point3D extends Point { int z; } public interface Colorable { void setColor(int color); } public class ColoredPoint extends Point implements Colorable { int color; public void setColor(int color) { this.color = color; } } class Test { public static void main(String[] args) { // Assignments to variables of class type: Point p = new Point(); p = new Point3D(); // ok: because Point3D is a // subclass of Point Point3D p3d = p; // error: will require a cast because a // Point might not be a Point3D // (even though it is, dynamically, // in this example.) // Assignments to variables of type Object: Object o = p; // ok: any object to Object int[] a = new int[3]; Object o2 = a; // ok: an array to Object // Assignments to variables of interface type: ColoredPoint cp = new ColoredPoint(); Colorable c = cp; // ok: ColoredPoint implements // Colorable // Assignments to variables of array type: byte[] b = new byte[4]; a = b; // error: these are not arrays // of the same primitive type Point3D[] p3da = new Point3D[3]; Point[] pa = p3da; // ok: since we can assign a // Point3D to a Point p3da = pa; // error: (cast needed) since a Point // can't be assigned to a Point3D } }
Object
, or a compile-time error occurs.
[]
, that is, an array of components of type SC:
Object
, or a compile-time error occurs.
java.io.Serializable
or the type Cloneable
, the only interfaces implemented by arrays.
[]
, that is, an array of components of type TC, then a compile-time error occurs unless one of the following is true:
The following test program illustrates assignment conversions on reference values, but fails to compile because it violates the preceding rules, as described in its comments. This example should be compared to the preceding one.
Here is another example involving assignment of array objects:public class Point { int x, y; } public interface Colorable { void setColor(int color); } public class ColoredPoint extends Point implements Colorable { int color; public void setColor(int color) { this.color = color; } } class Test { public static void main(String[] args) { Point p = new Point(); ColoredPoint cp = new ColoredPoint(); // Okay because ColoredPoint is a subclass of Point: p = cp; // Okay because ColoredPoint implements Colorable: Colorable c = cp; // The following cause compile-time errors because // we cannot be sure they will succeed, depending on // the run-time type of p; a run-time check will be // necessary for the needed narrowing conversion and // must be indicated by including a cast: cp = p; // p might be neither a ColoredPoint // nor a subclass of ColoredPoint c = p; // p might not implement Colorable } }
In this example:class Point { int x, y; } class ColoredPoint extends Point { int color; } class Test { public static void main(String[] args) { long[] veclong = new long[100]; Object o = veclong; // okay Long l = veclong; // compile-time error short[] vecshort = veclong; // compile-time error Point[] pvec = new Point[100]; ColoredPoint[] cpvec = new ColoredPoint[100]; pvec = cpvec; // okay pvec[0] = new Point(); // okay at compile time, // but would throw an // exception at run time cpvec = pvec; // compile-time error } }
veclong
cannot be assigned to a Long
variable, because Long
is a class type other than Object
. An array can be assigned only to a variable of a compatible array type, or to a variable of type Object
.
veclong
cannot be assigned to vecshort
, because they are arrays of primitive type, and short
and long
are not the same primitive type.
cpvec
can be assigned to pvec
,
because any reference that could be the value of an expression of type ColoredPoint
can be the value of a variable of type Point
. The subsequent assignment of the new Point
to a component of pvec
then would throw an ArrayStoreException
(if the program were otherwise corrected so that it could be compiled), because a ColoredPoint
array can't have an instance of Point
as the value of a component.
pvec
cannot be assigned to cpvec
,
because not every reference that could be the value of an expression of type ColoredPoint
can correctly be the value of a variable of type Point
. If the value of pvec
at run time were a reference to an instance of Point[]
, and the assignment to cpvec
were allowed, a simple reference to a component of cpvec
, say, cpvec[0]
, could return a Point
, and a Point
is not a ColoredPoint
. Thus to allow such an assignment would allow a violation of the type system. A cast may be used (§5.5, §15.16) to ensure that pvec
references a ColoredPoint[]
:
cpvec = (ColoredPoint[])pvec; // okay, but may throw an // exception at run time
If the type of an argument expression is either float
or double
, then value set conversion (§5.1.8) is applied after the type conversion:
float
is an element of the float-extended-exponent value set, then the implementation must map the value to the nearest element of the float value set. This conversion may result in overflow or underflow.
double
is an element of the double-extended-exponent value set, then the implementation must map the value to the nearest element of the double value set. This conversion may result in overflow or underflow.
causes a compile-time error because the integer literalsclass Test { static int m(byte a, int b) { return a+b; } static int m(short a, short b) { return a-b; } public static void main(String[] args) { System.out.println(m(12, 2)); // compile-time error } }
12
and 2
have type int
, so neither method m
matches under the rules of (§15.12.2). A language that included implicit narrowing of integer constants would need additional rules to resolve cases like this example.+
operator when one of the arguments is a String
. In this single special case, the other argument to the +
is converted to a String
, and a new String
which is the concatenation of the two strings is the result of the +
. String conversion is specified in detail within the description of the string concatenation +
operator (§15.18.1).Value set conversion (§5.1.8) is applied after the type conversion.
Some casts can be proven incorrect at compile time; such casts result in a compile-time error.
A value of a primitive type can be cast to another primitive type by identity conversion, if the types are the same, or by a widening primitive conversion or a narrowing primitive conversion.
A value of a primitive type cannot be cast to a reference type by casting conversion, nor can a value of a reference type be cast to a primitive type.
The remaining cases involve conversion between reference types. The detailed rules for compile-time correctness checking of a casting conversion of a value of compile-time reference type S (source) to a compile-time reference type T (target) are as follows:
final
class (§8.1.1), then the cast is always correct at compile time (because even if S does not implement T, a subclass of S might).
final
class (§8.1.1), then S must implement T, or a compile-time error occurs.
Object
, or a compile-time error occurs.
final
(§8.1.1), then the cast is always correct at compile time (because even if T does not implement S, a subclass of T might).
[]
, that is, an array of components of type SC:
Object
, then a compile-time error occurs (because Object
is the only class type to which arrays can be assigned).
java.io.Serializable
or the type Cloneable
, the only interfaces implemented by arrays.
[]
, that is, an array of components of type TC, then a compile-time error occurs unless one of the following is true:
If a cast to a reference type is not a compile-time error, there are two cases:
null
, then the cast is allowed. Otherwise, let R be the class of the object referred to by the run-time reference value, and let T be the type named in the cast operator. A cast conversion must check, at run time, that the class R is assignment compatible with the type T, using the algorithm specified in §5.2 but using the class R instead of the compile-time type S as specified there. (Note that R cannot be an interface when these rules are first applied for any given cast, but R may be an interface if the rules are applied recursively because the run-time reference value may refer to an array whose element type is an interface type.) The modified algorithm is shown here:
Object
(§4.3.2), or a run-time exception is thrown.
[]
-that is, an array of components of type RC:
Object
(§4.3.2), or a run-time exception is thrown.
java.io.Serializable
or the type Cloneable
, the only interfaces implemented by arrays (this case could slip past the compile-time checking if, for example, a reference to an array were stored in a variable of type Object
).
[]
, that is, an array of components of type TC, then a run-time exception is thrown unless one of the following is true:
ClassCastException
.Here are some examples of casting conversions of reference types, similar to the example in §5.2:
Here the first compile-time error occurs because the class typespublic class Point { int x, y; } public interface Colorable { void setColor(int color); } public class ColoredPoint extends Point implements Colorable { int color; public void setColor(int color) { this.color = color; } } final class EndPoint extends Point { } class Test { public static void main(String[] args) { Point p = new Point(); ColoredPoint cp = new ColoredPoint(); Colorable c; // The following may cause errors at run time because // we cannot be sure they will succeed; this possibility // is suggested by the casts: cp = (ColoredPoint)p; // p might not reference an // object which is a ColoredPoint // or a subclass of ColoredPoint c = (Colorable)p; // p might not be Colorable // The following are incorrect at compile time because // they can never succeed as explained in the text: Long l = (Long)p; // compile-time error #1 EndPoint e = new EndPoint(); c = (Colorable)e; // compile-time error #2 } }
Long
and Point
are unrelated (that is, they are not the same, and neither is a subclass of the other), so a cast between them will always fail.
The second compile-time error occurs because a variable of type EndPoint
can never reference a value that implements the interface Colorable
. This is because EndPoint
is a final
type, and a variable of a final
type always holds a value of the same run-time type as its compile-time type. Therefore, the run-time type of variable e
must be exactly the type EndPoint
, and type EndPoint
does not implement Colorable
.
Here is an example involving arrays (§10):
This example compiles without errors and produces the output:class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; } public String toString() { return "("+x+","+y+")"; } } public interface Colorable { void setColor(int color); } public class ColoredPoint extends Point implements Colorable { int color; ColoredPoint(int x, int y, int color) { super(x, y); setColor(color); } public void setColor(int color) { this.color = color; } public String toString() { return super.toString() + "@" + color; } } class Test { public static void main(String[] args) { Point[] pa = new ColoredPoint[4]; pa[0] = new ColoredPoint(2, 2, 12); pa[1] = new ColoredPoint(4, 5, 24); ColoredPoint[] cpa = (ColoredPoint[])pa; System.out.print("cpa: {"); for (int i = 0; i < cpa.length; i++) System.out.print((i == 0 ? " " : ", ") + cpa[i]); System.out.println(" }"); } }
The following example uses casts to compile, but it throws exceptions at run time, because the types are incompatible:cpa: { (2,2)@12, (4,5)@24, null, null }
public class Point { int x, y; } public interface Colorable { void setColor(int color); } public class ColoredPoint extends Point implements Colorable { int color; public void setColor(int color) { this.color = color; } } class Test { public static void main(String[] args) { Point[] pa = new Point[100]; // The following line will throw a ClassCastException: ColoredPoint[] cpa = (ColoredPoint[])pa; System.out.println(cpa[0]); int[] shortvec = new int[2]; Object o = shortvec; // The following line will throw a ClassCastException: Colorable c = (Colorable)o; c.setColor(0); } }
Numeric promotions are used to convert the operands of a numeric operator to a common type so that an operation can be performed. The two kinds of numeric promotion are unary numeric promotion (§5.6.1) and binary numeric promotion (§5.6.2). The analogous conversions in C are called "the usual unary conversions" and "the usual binary conversions."
Numeric promotion is not a general feature of the Java programming language, but rather a property of the specific definitions of the built-in operations.
byte
, short
, or char
, unary numeric promotion promotes it to a value of type int
by a widening conversion (§5.1.2).
Unary numeric promotion is performed on expressions in the following situations:
+
(§15.15.3)
-
(§15.15.4)
~
(§15.15.5)
>>
, >>>
, or <<
(§15.19); therefore a long
shift distance (right operand) does not promote the value being shifted (left operand) to long
Here is a test program that includes examples of unary numeric promotion:
This test program produces the output:class Test { public static void main(String[] args) { byte b = 2; int a[] = new int[b]; // dimension expression promotion char c = '\u0001'; a[c] = 1; // index expression promotion a[0] = -c; // unary - promotion System.out.println("a: " + a[0] + "," + a[1]); b = -1; int i = ~b; // bitwise complement promotion System.out.println("~0x" + Integer.toHexString(b) + "==0x" + Integer.toHexString(i)); i = b << 4L; // shift promotion (left operand) System.out.println("0x" + Integer.toHexString(b) + "<<4L==0x" + Integer.toHexString(i)); } }
a: -1,1 ~0xffffffff==0x0 0xffffffff<<4L==0xfffffff0
double
, the other is converted to double
.
float
, the other is converted to float
.
long
, the other is converted to long
.
int
.
Binary numeric promotion is performed on the operands of certain operators:
*
, /
and %
(§15.17)
+
and -
(§15.18.2)
<
, <=
, >
, and >=
(§15.20.1)
==
and !=
(§15.21.1)
&
, ^
, and |
(§15.22.1)
? :
(§15.25)
An example of binary numeric promotion appears above in §5.1. Here is another:
which produces the output:class Test { public static void main(String[] args) { int i = 0; float f = 1.0f; double d = 2.0; // First int*float is promoted to float*float, then // float==double is promoted to double==double: if (i * f == d) System.out.println("oops"); // A char&byte is promoted to int&int: byte b = 0x1f; char c = 'G'; int control = c & b; System.out.println(Integer.toHexString(control)); // Here int:float is promoted to float:float: f = (b==0) ? i : 4.0f; System.out.println(1.0/f); } }
The example converts the ASCII character7 0.25
G
to the ASCII control-G (BEL), by masking off all but the low 5 bits of the character. The 7
is the numeric value of this control character.
| Contents | Prev | Next | Index | Java Language Specification Second Edition |


I have been a freelance web developer for the past 12 years, and recently relocated to Tucson, AZ. Now that I am restarting my life in a new city, I am rebranding myself as to who I am, rather than where I live. So, if you are in need of a website, or know of someone who is, feel free to contact me.
Refer a Friend!Since I have been in Tucson, I have made some good friends through the Oasis Church, and would like to introduce you to some of them.
Dennis is a great guy, and he is also a Gallup Certified Strength Coach. He will help you find your strengths and to build on what already works for you. Plus, he can help you understand your spouse/partner much better, by helping both of you understand and accept your differences, and work with that to establish a stronger bond. You can schedule a consultation here.
Dave is a strong believer, dog lover, cowboy hat wearin' guy, and he owns a mechanic's shop here in Tucson. The Christian values of honesty, integrity, reliability, and helping others certainly apply to Dave and his business practices. Stop by for all your vehicle repair needs, especially if you've had a hard time finding a good diesel mechanic.
Members of the Oasis Church have first dibs for this space, but if you are a Christian business person, and would like to advertise your services here, contact me, and I'll see that this space is reserved for you!


This is a simple 2 player click game. The player to reach a certain amount first wins. I programed this in JavaScript in an HTML file with simple CSS styling.
this what a really fun project for me to do because it was a game that I could play with my little siblings and cousins. It meant a lot to me to see something i made
being played by the kids in my life and seeing them have so much fun.
This show hide game was also really fun. I was able to customize it to incorporate my favorite anime show. I actually used mostly JQuery for all the logic., but
like the click game it is just in a simple HTML file.
This was the first game we got to do in class. Tic Tac Toe! Most of the other programs before these were in the terminal and didn't have a frontend to show.
Ita was also another fun thing to enjouy with friends and family. I used Javascript for this one as well.


Bookmarks Menu
Bookmarks bar
- Getting Started
Social
- Twitter. It’s what’s happening / Twitter
- Facebook - Log In or Sign Up
- Instagram
- WhatsApp
- reddit: the front page of the internet
- Pinterest
- LinkedIn: Log In or Sign Up
- Discord | Your Place to Talk and Hang Out
- Outlook – free personal email and calendar from Microsoft
Mozilla Firefox
- Help and Tutorials
- Customize Firefox
- Get Involved
- About Us
Ubuntu and Free Software links
- Ubuntu
- Ubuntu Wiki (community-edited website)
- Make a Support Request to the Ubuntu Community
- Debian (Ubuntu is based on Debian)
Programming
Languages
- Welcome to Python.org
- cplusplus.com - The C++ Resources Network
- Java Software | Oracle
Others
- Ruby Programming Language
- Bash - GNU Project - Free Software Foundation
- The Go Programming Language
- The Julia Programming Language
- MATLAB - MathWorks - MATLAB & Simulink
- PHP: Hypertext Preprocessor
- The Perl Programming Language - www.perl.org
- Swift.org - Welcome to Swift.org
Version Control and Testing
- The world’s leading software development platform · GitHub
- Projects · Explore · GitLab
- Travis CI - Test and Deploy Your Code with Confidence
- Bitbucket | The Git solution for professional teams
- Jenkins
Web Services
- Amazon Web Services (AWS) - Cloud Computing Services
- Cloud Computing Services | Google Cloud
- Heroku - Google Search
- DigitalOcean – The developer cloud
- Netlify: All-in-one platform for automating modern web projects
- Achieve mastery through challenge | Codewars
- Learn to code at home | freeCodeCamp.org
- Learn to Code - for Free | Codecademy
- The place to protect open source | huntr
- Google
Other Bookmarks
- Yahoo
Cars
- BMW.com | The international BMW Website
- Audi.com – the international Audi website | audi.com
- New Cars, Trucks, SUVs & Hybrids | Toyota Official Site
- Welcome | Kia Motors Europe
- Official Porsche Website - Dr. Ing. h.c. F. Porsche AG
- Find your inspiration. | Flickr
Mobile bookmarks


Description: Create stateful jQuery plugins using the same abstraction as all jQuery UI widgets.
You can create new widgets from scratch, using just the $.Widget
object as a base to inherit from, or you can explicitly inherit from existing jQuery UI or third-party widgets. Defining a widget with the same name as you inherit from even allows you to extend widgets in place.
For now, more details can be found at github.com/scottgonzalez/widget-factory-docs/.


To demonstrate the efficienty of the algorithms, let \(f(x)=\sin(x/2)\cos(x/2)\) with \(0\leq x \leq 3\pi\), and this functions can be discretized over an interval \([a,b] = [0,3\pi]\). For example, we can set \(N = 100\) and let \(\Delta x = (3\pi-0)/N\). Thus,
import numpy as np
N = 100
a = 0
b = 3*np.pi
dx = (b - a)/N
x = np.arange(a, b, dx)
Alternatively, we could simply this process by using linspace
x = np.linspace(a, b, N)
Discritizing the function
f= lambda x: np.sin(x/2)*np.cos(x/2)
y = f(x)
To create a nosiy version of this fuction, one can consider adding noise to the data using numpy.random.normal given \(\mu = 0\) and \(\sigma = 0.1\), mean and standard deviation respectively.
mu = 0
sigma = 0.1
noise = np.random.normal(mu, sigma, len(x))
y_noise = y + noise
8.1. Savitzky-Golay Filter#
8.1.1. Savitzky-Golay Filter 1D#
Using Savitzky–Golay filter from scipy package, we can reduce the impact of the generated random noise.
Using a fourth-order polynomial, we get
from scipy import signal
y_filtered = signal.savgol_filter(y_noise, window_length = 23, polyorder = 4)
Let’s plot the data.
from NA_Notes import Reg_Method_Fig1
Reg_Method_Fig1(x, y, y_noise, y_filtered, a, b, f, N)
Furthermore, let’s use \(\|.\|_{\infty}\) for mesuring the accuracy.
from IPython.display import display, Latex
from numpy import linalg as LA
display(Latex(r'\|y-y_{noise}\|_{\infty} = %.4f' % LA.norm(np.abs(y-y_filtered), np.inf)))
8.1.2. Savitzky-Golay Filter 2D#
For two dimmentional, we can use the following function from this link
from NA_Notes import sgolay2d, Reg_Method_Fig2
r = 500.
f= lambda x, y: np.cos((x**2)/r + (y**2)/r)
mu = 0
sigma = 0.8
x, y = x, y = np.mgrid[-100:101, -100:101]
z = f(x,y)
z_noise = z+ np.random.normal(mu, sigma, size=x.shape)
z_filtered = sgolay2d(z_noise, window_size = 23, order = 4)
Reg_Method_Fig2(x, y, z, z_noise, z_filtered)
display(Latex(r'\|z-z_{noise}\|_{\infty} = %.4f' % LA.norm(np.abs(z-z_noise), np.inf)))
display(Latex(r'\|z-z_{filtered}\|_{\infty} = %.4f' % LA.norm(np.abs(z-z_filtered), np.inf)))


All participants of Club DevBytes are expected to abide by our Code of Conduct, both online and during in-person events that are hosted and/or associated with Club DevBytes .
In the interest of fostering an open and welcoming environment, we pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
Examples of behaviour that contributes to creating a positive environment include:
Examples of unacceptable behaviour by participants include:
Violations of the Code of Conduct may be reported by sending an email to<EMAIL_ADDRESS>. All reports will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Further details of specific enforcement policies may be posted separately. We hold the right and responsibility to remove comments or other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any members for other behaviours that they deem inappropriate, threatening, offensive, or harmful.


Simulation state
Your browser is not capable of recognising the HTML5 <canvas> graphics framework. Supported browsers include Google Chrome and Mozilla Firefox.
Zoom
Scale
Reset
Speed
Reset
Pause
Location lines
Orbits
Labels
Debug mode
Reset simulation


I wish to achieve a challenging position in the industry and to use my technical communication and interpersonal skills for growth of organization .
specification to Computer Science and Engineering (2018 - 2021). With grade point of 7.05 CGPA( till 5th sem).
specification to Computer Science. With a grade point of 7.09 CGPA.
Certificate from State Board, MP with 76.16 .
Link :- polynote.com.
Languages used- html, php, css ,jquery, laravel
Languages used- Visual basic
submit as a major project in diploma(polytechnic)
Languages used-python
submit as a minor project in Degree(B.E.)


To most this looks like a scam, but trust me - it really isn't and thank you for clicking on this section of the website. For each of the oppurtunities below you must have a few
prerequisites - I'll list them.
This one is for the CS:GO players visiting this website. If you have a
Steam Account with CS:GO purchased on it, you can claim a free $0.50 to gamble / withdraw skins with on
CS:GO Bounty. Click on the Icon to take you to a world of profit!


Notifications are often used to display information based on events that are occurring at a specific time, however to display the full history of any past notifications consider using a side modal.
The button above was created using the following code:
The modal options in the example are as follows:
The content of the side modal is simply a list of notifications that uses a custom scrollbar and has paging. The notifications in this list are randomly generated. For use in production notifications should be loaded from a data store.


Home
Have you ever noticed that there was an "information" in the home page? That must be a hard work... But don't worry. Haha...
But before you start it, you must add the code
in your html file.
Start
Try
Welcome
to
use BWB!
Don't add too many snackbars!!!
« Type box
Word size »


Need Help? Here are some tips. ↓ Full documentation here.
ImplementationError: in function for event: 'idle' (line: 5, column: 25) -> ReferenceError: a is not defined
You can check the log below for more info or, for even more info, check the browser's console in developer tools (F12).
Is this a bug? Report here.
Is this a bug? Report here.
You should feel proud! Now go to the world and tell your friends about the game!
Or, what about telling me how was your experience with it? Did you find any bugs? Did you like it? Would you change something?
You can report bugs here!
Or get in contact on my twitter @RichardEitz
Whatever you do, thanks for playing!


Install Pusion¶
General requirements¶
Python >= 3.7
Package requirements¶
numpy >= 1.20.2
scipy >= 1.6.2
scikit-learn >= 0.24.1
setuptools >= 54.2.0
pandas >= 1.2.3
matplotlib >= 3.4.1
pickle5 >= 0.0.11
Preparation¶
In order to generate a python wheel package for pusion, the package setuptools needs to be installed in your Python 3 environment before.
pip3 install setuptools
After cloning pusion to your local disc, enter the project and generate the package using with the following command.
python3 setup.py bdist_wheel
Once generated, the wheel will be moved to the dist/
directory within project’s root.
Installation¶
The generated wheel can be installed using the pip3
command, which also installs all required packages for pusion.
pip3 install dist/pusion-<version>-py3-none-any.whl


Psalms 33:17
An horse is a vain thing for safety: neither shall he deliver any by his great strength.


| Sampling scoop in hand, I go questing at Station 5 by Camelot Crater. At this point I had already collected a load of samples, and will shortly curve back to the Rover, off-camera at left, to unload. This was our second EVA, covering some 11 miles. |
| Our three traverses on Apollo 17 came very close to those we had preplanned, differing only because of unexpected findings. The fist run was a mile and a quarter to Steno Crater and back, in the 4 o'clock position above. The second was the longest, at 5 o'clock. At station 4 near Shorty Crater we found the orange soil (see here). The third run, at 12 to 1 o'clock, was more than six miles. The great fractured boulder shown here is on the slope near Station 6. |
| Sampling by scoop was the main way we obtained the large numbers of small samples that provide good statistical information about the composition of the surface. That instrument to the left of Apollo 15's Jim Irwin is a gnomon. It provides a vertical-seeking rod of known length, a color chart, and a shadow - all useful for calibrating pictures. |
| Sampling tongs and coring tubes gave us other means of collecting special samples. The spring-loaded tongs below let us pick up small rocks and fragments without getting down on our knees or otherwise reaching way down with clumsy gloves. The core tubes were hammered down into the soil and then drawn back out and capped. They gave us a way to collect sections of soil that preserved the relative relationships undisturbed. |
| Finding orange soil near Station 4 on Apollo 17 at the time when oxygen was running low kept us on the jump. We dug a trench 8 inches deep and 35 inches long, took samples of the orange soil and nearby gray soil, drove a core tube into the deposit, sampled surrounding rocks, described and photographed the crater site in detail, and packed the samples - all in 35 minutes. The effort gave scientists a most unusual sample: very small beads of orange volcanic glass, formed in a great eruption of fire fountains over 3.5 billion years ago. |
| Rocks too big to bring back were studied where they were, described and photographed, and sampled by chipping pieces from their corners. If we could roll the rock over, as above, we could take soil samples underneath that had been shielded from the effects of solar and cosmic radiation. |
| The basaltic lavas of the lunar maria, like this sample photographed after return to a laboratory on Earth, tell much about the partial melting of the Moon between three and four billion years ago. This sample, 70017, is identified in its documentation photograph by the number of the counter and by the B orientation code. |
| Ancient beads of orange volcanic glass in the photomicrograph above have revealed secrets of the Moon's deep interior. Produced most likely by the partial melting of the lunar mantle, and discovered by Apollo 17, these beads are unusualy rich in such volatile elements as lead, zinc, tellurium, and sulfur. This indicates not only volcanic origin but also derivation from rocks possibly as deep as 200 miles in the Moon. Similar glass beads, green in color, were discovered by Apollo 15. |


The internet works by useing its own unique language called HTTP.
The process starts by you opening up a browser like Google
the browser then sends a request to the server finds the HTML
document and sends it back to the browser.
The browser then interprets that information and desplays in on
the users screen.
HTML documents are what most on the web is madeup of.
HTML stands for Hypertext Markup Language.
It contains text that make up what you see and links to documents
that make up how you see it as well.
Tags are what HTML uses to distinguish how browers react to the document.
Example of some tages
Bold-b Contents
Paragraph-P
Contents

Images-IMG
Tags are also madeup of either Inline or Block.
Block tags have something decribed as an "Invisible Box" surrounding
the contents inside the tag.
 Why are computers considered
stupid? well all computers do is read and interpret the
documents/code it is given if a programmer makes even a small
mistake it can cause a major problems for the program.
See a human would be able to see that mistake and quickly
and logicly fix it.
-The web is made up of HTML Documents.
-HTML-Hypertext Markup Language
-Links between the pages are called Hyper Links
- The Web was Invented in the early 1990's
-There are about 30 billion web pages
You, your Computer Browser which communicates with
The Internet whichs then communicates with the
Servers sending back the files you requested.
That whole process uses HTTP as the form of
language which it communicates with each other.
All the documents on the web are created with a structure.
Structure is what programmers use to keep everything
organized when they are creating documents.
The main structure used with HTML documents is
a Tree Structure.
Text editors are what programmers use to write the
documents in. Just like a college student would use
word or pages to create the paper programmers use
text editors. Editors like sublime make it easyer to
write code. For instance when creating tags some
editors will automatically generate a closing tag
for you.
When writting code you want to
avoid repeting your self this saves time and
and the potential for mistakes you make. Using selectors for CSS helps avoid thoughs mistakes.
CSS stands for Cascading
Style Sheets.
That is the language
used for describing the look
of the HTML document.


|
U.are.U SDK
3.2
DigitalPersona U.are.U SDK
|
U.are.U SDK Image Compression API. More...
#include <dpfj.h>
Go to the source code of this file.
Macros | |
| #define | DPFJ_E_COMPRESSION_IN_PROGRESS DPERROR(0x141) |
| Compression or decompression operation is in progress. | |
| #define | DPFJ_E_COMPRESSION_NOT_STARTED DPERROR(0x142) |
| Compression or decompression operation was not started. | |
| #define | DPFJ_E_COMPRESSION_INVALID_WSQ_PARAMETER DPERROR(0x14a) |
| One or more parameters passed for WSQ compression are invalid. | |
| #define | DPFJ_E_COMPRESSION_WSQ_FAILURE DPERROR(0x14b) |
| Unspecified error during WSQ compression or decompression. | |
| #define | DPFJ_E_COMPRESSION_WSQ_LIB_NOT_FOUND DPERROR(0x14c) |
| Library for WSQ compression is not found or not built-in. | |
| #define | DPFJ_COMPRESSION_WSQ_NIST 1 |
| #define | DPFJ_COMPRESSION_WSQ_AWARE 2 |
Typedefs | |
| typedef int | DPFJ_COMPRESSION_ALGORITHM |
| Compression algorithm to use. | |
Functions | |
| int DPAPICALL | dpfj_start_compression () |
| Starts compression or decompression operation. More... | |
| int DPAPICALL | dpfj_set_wsq_bitrate (unsigned int bitrate_x100, unsigned int tolerance_aw) |
| Sets target bitrate and tolerance for WSQ compression operation. More... | |
| int DPAPICALL | dpfj_set_wsq_size (unsigned int size, unsigned int tolerance_aw) |
| Sets target size and tolerance for WSQ compression operation. More... | |
| int DPAPICALL | dpfj_compress_fid (DPFJ_FID_FORMAT fid_type, const unsigned char *fid, unsigned int fid_size, DPFJ_COMPRESSION_ALGORITHM compression_alg) |
| Compresses FID. More... | |
| int DPAPICALL | dpfj_compress_raw (const unsigned char *image_data, unsigned int image_size, unsigned int image_width, unsigned int image_height, unsigned int image_dpi, unsigned int image_bpp, DPFJ_COMPRESSION_ALGORITHM compression_alg) |
| Compresses raw image. More... | |
| int DPAPICALL | dpfj_expand_fid (DPFJ_FID_FORMAT fid_type, const unsigned char *fid, unsigned int fid_size, DPFJ_COMPRESSION_ALGORITHM compression_alg) |
| Expands compressed FID. More... | |
| int DPAPICALL | dpfj_expand_raw (const unsigned char *image_data, unsigned int image_size, DPFJ_COMPRESSION_ALGORITHM compression_alg, unsigned int *image_width, unsigned int *image_height, unsigned int *image_dpi, unsigned int *image_bpp) |
| Expands compressed raw image. More... | |
| int DPAPICALL | dpfj_get_processed_data (unsigned char *image_data, unsigned int *image_size) |
| Returns the processed data. More... | |
| int DPAPICALL | dpfj_finish_compression () |
| Ends compression or decompression operation, releases memory. More... | |
U.are.U SDK Image Compression API.
Data types and functions for compression.
| #define DPFJ_COMPRESSION_WSQ_AWARE 2 |
WSQ compression, Aware SDK
| #define DPFJ_COMPRESSION_WSQ_NIST 1 |
WSQ compression, NIST algorithm
| int DPAPICALL dpfj_compress_fid | ( | DPFJ_FID_FORMAT | fid_type, |
| const unsigned char * | fid, | ||
| unsigned int | fid_size, | ||
| DPFJ_COMPRESSION_ALGORITHM | compression_alg | ||
| ) |
Compresses FID.
This function attempts to compress FID using Aware WSQ library (WSQ1000) or NIST algorithm. It's necessary to set target bitrate or target size before calling dpfj_compress_fid(). The function will allocate memory for the compressed FID. The resulting size of the compressed FID can be acquired by calling dpfj_get_processed_size(). The resulting size likely will differ from the requested size, or bitrate. How much the difference will be is dictated by the image, requested size or bitrate and tolerance (only for Aware algorithm).
| fid_type | type of the FID. |
| fid | pointer to the FID data. |
| fid_size | size of the FID data. |
| compression_alg | compression algorithm to use, currently Aware WSQ and NIST WSQ algorithms are supported. |
| int DPAPICALL dpfj_compress_raw | ( | const unsigned char * | image_data, |
| unsigned int | image_size, | ||
| unsigned int | image_width, | ||
| unsigned int | image_height, | ||
| unsigned int | image_dpi, | ||
| unsigned int | image_bpp, | ||
| DPFJ_COMPRESSION_ALGORITHM | compression_alg | ||
| ) |
Compresses raw image.
This function attempts to compress image using Aware WSQ library (WSQ1000) or NIST algorithm. It's necessary to set target bitrate or target size before calling dpfj_compress_raw(). The function will allocate memory for the compressed image. The resulting size of the compressed image can be acquired by calling dpfj_get_processed_size(). The resulting size likely will differ from the requested size, or bitrate. How much the difference will be is dictated by the image, requested size or bitrate and tolerance (only for Aware algorithm).
| image_data | pointer to the image data |
| image_size | size of the image data |
| image_width | width of the image |
| image_height | height of the image |
| image_dpi | resolution of the image |
| image_bpp | pixel depth of the image. Only 8bpp images are currently processed. |
| compression_alg | compression algorithm to use, currently Aware WSQ and NIST WSQ algorithms are supported. |
| int DPAPICALL dpfj_expand_fid | ( | DPFJ_FID_FORMAT | fid_type, |
| const unsigned char * | fid, | ||
| unsigned int | fid_size, | ||
| DPFJ_COMPRESSION_ALGORITHM | compression_alg | ||
| ) |
Expands compressed FID.
This function attempts to expand FID using Aware WSQ library (WSQ1000) or NIST algorithm. The function will allocate memory for the expanded FID. The resulting size of the expanded FID can be acquired by calling dpfj_get_processed_size().
| fid_type | type of the compressed FID. |
| fid | pointer to the FID data. |
| fid_size | size of the FID data. |
| compression_alg | compression algorithm to use, currently Aware WSQ and NIST WSQ algorithms are supported. |
| int DPAPICALL dpfj_expand_raw | ( | const unsigned char * | image_data, |
| unsigned int | image_size, | ||
| DPFJ_COMPRESSION_ALGORITHM | compression_alg, | ||
| unsigned int * | image_width, | ||
| unsigned int * | image_height, | ||
| unsigned int * | image_dpi, | ||
| unsigned int * | image_bpp | ||
| ) |
Expands compressed raw image.
This function attempts to expand FID using Aware WSQ library (WSQ1000) or NIST algorithm. The function will allocate memory for the expanded FID. The resulting size of the expanded FID can be acquired by calling dpfj_get_processed_size().
| image_data | pointer to the compressed image data |
| image_size | size of the image data |
| compression_alg | compression algorithm to use, currently Aware WSQ and NIST WSQ algorithms are supported. |
| image_width | pointer to receive width of the image |
| image_height | pointer to receive height of the image |
| image_dpi | pointer to receive resolution of the image |
| image_bpp | pointer to receive pixel depth of the image. Only 8bpp images are currently processed. |
| int DPAPICALL dpfj_finish_compression | ( | ) |
Ends compression or decompression operation, releases memory.
This function releases resources used during the enrollment process. Call after enrollment is complete.
| int DPAPICALL dpfj_get_processed_data | ( | unsigned char * | image_data, |
| unsigned int * | image_size | ||
| ) |
Returns the processed data.
Application must determine the size of the data by calling dpfj_get_processed_data() and allocate memory to receive processed data.
| image_data | pointer to the allocated memory for the processed data |
| image_size | size of the allocated memory |
| int DPAPICALL dpfj_set_wsq_bitrate | ( | unsigned int | bitrate_x100, |
| unsigned int | tolerance_aw | ||
| ) |
Sets target bitrate and tolerance for WSQ compression operation.
| bitrate_x100 | Requested bitrate multiplied by 100. For example, to request bitrate of 4.19, pass 419. |
| tolerance_aw | Sets tolerance in percents for the Aware WSQ compression. Range is 1 to 100. For NIST algorithm this parameter will be ignored. |
| bitrate_x100 | bitrate multiplied by 100 |
| tolerance_aw | when using Aware WSQ compression |
| int DPAPICALL dpfj_set_wsq_size | ( | unsigned int | size, |
| unsigned int | tolerance_aw | ||
| ) |
Sets target size and tolerance for WSQ compression operation.
| size | Requested size of compressed image. |
| tolerance_aw | Sets tolerance in percents for the Aware WSQ compression. Range is 1 to 100. For NIST algorithm this parameter will be ignored. |
| size | size of compressed image |
| tolerance_aw | when using Aware WSQ compression |
| int DPAPICALL dpfj_start_compression | ( | ) |
Starts compression or decompression operation.