text:
Tag: web browser
Chrome is the new Safari. And so are Edge and Firefox.
I am not saying Apple's approach is wrong. What Apple is doing is important too, and I applaud the work Apple has been doing in improving privacy on the web.
But it can't be the only priority. Just imagine what the web would look like if every browser would have taken that approach 20 years ago.
Actually, no, don't imagine it all. Just think back at Internet Explorer 6; that is what the web looked like 20 years ago.
There can only be one proper solution: Apple needs to open up their App Store to browsers with other rendering engines. Scrap rule 2.5.6 and allow other browsers on iOS and let them genuinely compete.
Niels Leenheer
As a reminder, Safari is the only web browser on iOS. You might have been fooled to think otherwise by the appearance of other browsers in the App Store or perhaps by last year's update that made it possible at long last to change the default browser, but it's all an illusion. Beneath the mask, all browsers on iOS are powered by Safari's WebKit, or else they're booted from the App Store.
Neils' comparison to Internet Explorer 6 is a good one, but as I've long pointed out, there's a big and important difference between Microsoft's story during the First Browser War and Apple's today:
Microsoft bundled Internet Explorer with Windows, raising the barrier to using a different web browser, which a court ruled as monopolistic and recommended that Microsoft be broken into smaller companies (this recommendation was scaled back on appeal).
Apple bundle Safari with iOS and prohibit the use of any other browser's rendering engine on that platform, preventing the use of a different web browser. Third-party applications have been available for iOS – except, specifically, other browser rendering engines and a handful of other things – for 13 years now, but it still seems unlikely we'll see an antitrust case anytime soon.
Apple are holding the Web back… and getting away with it.
Tagged apple, browser wars, mobiles, web browser, web browsers
<blink> and <marquee>
11 November 2020 12:50 6 comments
I was chatting with a fellow web developer recently and made a joke about the HTML <blink> and <marquee> tags, only to discover that he had no idea what I was talking about. They're a part of web history that's fallen off the radar and younger developers are unlikely to have ever come across them. But for a little while, back in the 90s, they were a big deal.
Even Macromedia Dreamweaver, which embodied the essence of 1990s web design, seemed to treat wrapping <blink> in <marquee> as an antipattern.
Invention of the <blink> element is often credited to Lou Montulli, who wrote pioneering web browser Lynx before being joining Netscape in 1994. He insists that he didn't write any of the code that eventually became the first implementation of <blink>. Instead, he claims: while out at a bar (on the evening he'd first meet his wife!), he pointed out that many of the fancy new stylistic elements the other Netscape engineers were proposing wouldn't work in Lynx, which is a text-only browser. The fanciest conceivable effect that would work across both browsers would be making the text flash on and off, he joked. Then another engineer – who he doesn't identify – pulled a late night hack session and added it.
And so it was that when Netscape Navigator 2.0 was released in 1995 it added support for the <blink> tag. Also animated GIFs and the first inklings of JavaScript, which collectively would go on to define the "personal website" experience for years to come. Here's how you'd use it:
<BLINK>This is my blinking text!</BLINK>
With no attributes, it was clear from the outset that this tag was supposed to be a joke. By the time HTML4 was published as a a recommendation two years later, it was documented as being a joke. But the Web of the late 1990s saw it used a lot. If you wanted somebody to notice the "latest updates" section on your personal home page, you'd wrap a <blink> tag around the title (or, if you were a sadist, the entire block).
If you missed this particular chapter of the Web's history, you can simulate it at Cameron's World.
In the same year as Netscape Navigator 2.0 was released, Microsoft released Internet Explorer 2.0. At this point, Internet Explorer was still very-much playing catch-up with the features the Netscape team had implemented, but clearly some senior Microsoft engineer took a look at the <blink> tag, refused to play along with the joke, but had an innovation of their own: the <marquee> tag! It had a whole suite of attributes to control the scroll direction, speed, and whether it looped or bounced backwards and forwards. While <blink> encouraged disgusting and inaccessible design as a joke, <marquee> did it on purpose.
<MARQUEE>Oh my god this still works in most modern browsers!</MARQUEE>
Oh my god this still works in most modern browsers!
If you see the text above moving… you're looking at a living fossil in browser history.
But here's the interesting bit: for a while in the late 1990s, it became a somewhat common practice to wrap content that you wanted to emphasise with animation in both a <blink> and a <marquee> tag. That way, the Netscape users would see it flash, the IE users would see it scroll or bounce. Like this:
<MARQUEE><BLINK>This is my really important message!</BLINK></MARQUEE>
Wrap a <blink> inside a <marquee> and IE users will see the marquee. Delightful.
The web has always been built on Postel's Law: a web browser should assume that it won't understand everything it reads, but it should provide a best-effort rendering for the benefit of its user anyway. Ever wondered why the modern <video> element is a block rather than a self-closing tag? It's so you can embed within it code that an earlier browser – one that doesn't understand <video> – can read (a browser's default state when seeing a new element it doesn't understand is to ignore it and carry on). So embedding a <blink> in a <marquee> gave you the best of both worlds, right? (welll…)
Wrap a <blink> inside a <marquee> and Netscape users will see the blink. Joy.
Better yet, you were safe in the knowledge that anybody using a browser that didn't understand either of these tags could still read your content. Used properly, the web is about progressive enhancement. Implement for everybody, enhance for those who support the shiny features. JavaScript and CSS can be applied with the same rules, and doing so pays dividends in maintainability and accessibility (though, sadly, that doesn't stop people writing sites that needlessly require these technologies).
Personally, I was a (paying! – back when people used to pay for web browsers!) Opera user so I mostly saw neither <blink> nor <marquee> elements. I don't feel like I missed out.
I remember, though, the first time I tried Netscape 7, in 2002. Netscape 7 and its close descendent are, as far as I can tell, the only web browsers to support both <blink> and <marquee>. Even then, it was picky about the order in which they were presented and the elements wrapped-within them. But support was good enough that some people's personal web pages suddenly began to exhibit the most ugly effect imaginable: the combination of both scrolling and flashing text.
If Netscape 7's UI didn't already make your eyes bleed (I've toned it down here by installing the "classic skin"), its simultaneous rendering of <blink> and <marquee> would.
The <blink> tag is very-definitely dead (hurrah!), but you can bring it back with pure CSS if you must. <marquee>, amazingly, still survives, not only in polyfills but natively, as you might be able to see above. However, if you're in any doubt as to whether or not you should use it: you shouldn't. If you're looking for digital nostalgia, there's a whole rabbit hole to dive down, but you don't need to inflict <marquee> on the rest of us.
 scatmania.livejournal.com
 twitter.com
 facebook.com
Tagged browser wars, browsers, history, html, progressive enhancement, web, web browser, web browsers, web design, web development
Firefox Daylight Makes Me Sad
2 September 2020 10:25 2 comments
I love Firefox, as I've doubtless said before. In 2005 it reached the point at which (with the right combination of add-ons) it could replace Opera as my default browser. Going mobile, I used it on my N900 (still an underrated device) back in 2010, and later I'd use it on my Android devices. I love the power, productivity, performance, and privacy Firefox helps to give me.
Enter the latest iteration of the Android version, Firefox Daylight, which came out last week.
When you first run Firefox Daylight, you're asked where you want the address bar, among other things.
First, the good: this latest version of Firefox for Android is fast. Blazingly fast. The privacy controls are clearer and easier to access. Having picture-in-picture mode on mobile is a nice touch, as is the new generation of tracking prevention features.
But Firefox Daylight still makes me frown. And it's a trio of smaller things that really niggle:
1. Top or bottom toolbar… but top is a second-class citizen.
In theory, I like the idea of having the address bar and its friends at the bottom of the screen where it's more-accessible to your thumb. I've even tried it, independently. in years past. But it's too much of a mental leap for me nowadays, plus it doesn't cleanly fit into the "scroll down and the address bar disappears" user experience that's become commonplace.
Making bottom toolbar the default was perhaps a little radical, then, but at least Mozilla provided an option to put it back at the top. But… it's not quite right:
Sure, I'll move my thumb the entire height of the screen every time I want to open a new tab.
Even with the toolbar moved back to the top, some controls associated with it stay at the bottom. Want to open a new tab? You have to press the "tabs" button at the top of the screen, then the "plus" button at the bottom of the screen, then – probably – the address bar back at the top of the screen again! You've just covered two complete lengths of the screen to do something that used to require none. Not a satisfactory experience.
The old interface put the oft-used "add tab" button in the toolbar in the same place as the "tabs" button you just pressed. Much better.
2. Tab previews were more space-efficient before
You've probably already spotted the other change to the "current tabs" view. Previously, open tabs were shown as mini previews with their titles above. Now they're shown as tiny (sometimes absent) icon-sized previews with their titles alongside. This allows the domain name to be shown, which is nice, but not nice enough to justify reducing the instant visual recognition the previous interface provided.
It's not even like you can fit more tabs onto a screen. The capacity is basically the same. You're just making smaller hit targets with less recognisable graphics. Plus: previously the most-recent tabs were at the bottom (close to where your thumb is, which was the justification for making the address bar default to the bottom); now they're at the top, further adding to the distance travelled.
3. Plugin support is terrible
I know first hand that implementing backwards-compatibility is hard, but breaking most plugins and then providing a list of nine or so popular/recommended ones that still works isn't a great experience.
No uMatrix. No Violentmonkey (or any equivalent). No Ghostery, even! Feels like surfing the Web with one hand tied behind my back.
Feels a bit like this was released before it was ready.
For the time being, I'm using Fennec F-Droid as my primary mobile browser. It picks up exactly where Firefox for Android left off, and it doesn't break my workflow. I hope to switch back to regular Firefox for Android someday, but Daylight needs "finishing" first.
Tagged android, firefox, web browser, web browsers
New browser on the block: Flow
23 January 2020 16:00 0 comments
2020 is only three weeks old, but there has been a lot of browser news that decreases rendering engine diversity. It's time for some good news on that front: a new rendering engine, Flow. Below I conduct an interview with Piers Wombwell, Flow's lead developer.
This year alone, on the negative side Mozilla announced it's laying off 70 people, most of whom appear to come from the browser side of things, while it turns out that Opera's main cash cow is now providing loans in Kenya, India, and Nigeria, and it is looking to use 'improved credit scoring' (from browsing data?) for its business practices.
On the positive side, the Chromium-based Edge is here, and it looks good. Still, rendering engine diversity took a hit, as we knew it would ever since the announcement.
So let's up the diversity a notch by welcoming a new rendering engine to the desktop space. British company Ekioh is working on a the Flow browser, which sports a completely new multi-threaded rendering engine that does not have any relation to WebKit, Gecko, or Blink.
Peter-Paul Koch (QuirksMode)
Well, I didn't expect this bit of exciting news!
I'm not convinced that Flow is the solution to all the world's problems (its target platforms and use-cases alone make it unlikely to make it onto the most-used-browsers leaderboard any time soon), but I'm really glad that my doomsaying about the death of browser diversity being a one-way street might… might… turn out not to be true.
Time will tell. But for now, this is Good News for the Web.
Tagged web, web browser, web browsers
CSS4 is here!
I think that CSS would be greatly helped if we solemnly state that "CSS4 is here!" In this post I'll try to convince you of my viewpoint.
I am proposing that we web developers, supported by the W3C CSS WG, start saying "CSS4 is here!" and excitedly chatter about how it will hit the market any moment now and transform the practice of CSS.
Of course "CSS4" has no technical meaning whatsoever. All current CSS specifications have their own specific versions ranging from 1 to 4, but CSS as a whole does not have a version, and it doesn't need one, either.
Regardless of what we say or do, CSS 4 will not hit the market and will not transform anything. It also does not describe any technical reality.
Then why do it? For the marketing effect.
Hurrah! CSS4 is here!
I'm sure that, like me, you're excited to start using the latest CSS technologies, like paged media, hyphen control, the zero-specificity :where() selector, and new accessibility selectors like the 'prefers-reduced-motion' @media query. The browser support might not be "there" yet, but so long as you've got a suitable commitment to progressive enhancement then you can be using all of these and many more today (I am!). Fantastic!
But if you've got more than a little web savvy you might still be surprised to hear me say that CSS4 is here, or even that it's a "thing" at all. Welll… that's because it isn't. Not officially. Just like JavaScript's versioning has gone all evergreen these last few years, CSS has gone the same way, with different "modules" each making their way through the standards and implementation processes independently. Which is great, in general, by the way – we're seeing faster development of long-overdue features now than we have through most of the Web's history – but it does make it hard to keep track of what's "current" unless you follow along watching very closely. Who's got time for that?
When CSS2 gained prominence at around the turn of the millennium it was revolutionary, and part of the reason for that – aside from the fact that it gave us all some features we'd wanted for a long time – was that it gave us a term to rally behind. This browser already supports it, that browser's getting there, this other browser supports it but has a f**ked-up box model (you all know the one I'm talking about)… we at last had an overarching term to discuss what was supported, what was new, what was ready for people to write articles and books about. Nobody's going to buy a book that promises to teach them "CSS3 Selectors Level 3, Fonts Level 3, Writing Modes Level 3, and Containment Level 1": that title's not even going to fit on the cover. But if we wrapped up a snapshot of what's current and called it CSS4… now that's going to sell.
Can we show the CSS WG that there's mileage in this idea and make it happen? Oh, I hope so. Because while the modular approach to CSS is beautiful and elegant and progressive… I'm afraid that we can't use it to inspire junior developers.
Also: I don't want this joke to forever remain among the top results when searching for CSS4…
Tagged css, programming, standards, web, web browser, web browsers, web design, web development
Proposal to allow specifying a text snippet in a URL fragment
To enable users to easily navigate to specific content in a web page, we propose adding support for specifying a text snippet in the URL. When navigating to such a URL, the browser will find the first instance of the text snippet in the page and bring it into view.
Web standards currently specify support for scrolling to anchor elements with name attributes, as well as DOM elements with ids, when navigating to a fragment. While named anchors and elements with ids enable scrolling to limited specific parts of web pages, not all documents make use of these elements, and not all parts of pages are addressable by named anchors or elements with ids.
This feature is currently implemented as an experimental feature in Chrome 74.0.3706.0 and newer. It is not yet shipped to users by default. Users who wish to experiment with it can use chrome://flags#enable-text-fragment-anchor. The implementation is incomplete and doesn't necessarily match the specification in this document.
Allow specifying text to scroll and highlight in the URL:
https://example.com##targetText=prefix-,startText,endText,-suffix
Using this syntax
##targetText=[prefix-,]textStart[,textEnd][,-suffix]
context  |-------match-----|  context
(Square brackets indicate an optional parameter)
Web Incubator CG (GitHub)
This is a feature that I've wished that the Web had on many, many occasions. I'm sure you've needed it before, too: you've wanted to give somebody the URL of (or link to) a particular part of a page but there's been no appropriately-placed anchor to latch on to. Being able to select part of the text on the page and just copy that after a ## in the address bar would be so much simpler.
Naturally, I tried this experimental feature out on this very web page; it worked pretty nicely!
Chrome's implementation is somewhat conservative, requiring a prefix of ##targetText= (this minimises the risk of collision with other applications which store/pass data via hashes), but it's still pretty full-featured, with support for prefixes and suffixes to the text to-be-selected. I quite like it, but of course it needs running down the standards track before it can be relied upon as anything other than a progressive enhancement.
I do wonder, though, whether this will be met with resistance by ad/subscription-supported content creators as a new example of the deep linking they seem to hate so much.
(with thanks to Jeremy Keith for sharing this)
Tagged chrome, standards, web, web browser, web browsers
A Conspiracy To Kill IE6
10 May 2019 08:37 0 comments
The plan was very simple. We would put a small banner above the video player that would only show up for IE6 users. It would read "We will be phasing out support for your browser soon. Please upgrade to one of these more modern browsers." Next to the text would be links to the current versions of the major browsers, including Chrome, Firefox, IE8 and eventually, Opera. The text was intentionally vague and the timeline left completely undefined. We hoped that it was threatening enough to motivate end users to upgrade without forcing us to commit to any actual deprecation plan. Users would have the ability to close out this warning if they wanted to ignore it or deal with it later. The code was designed to be as subtle as possible so that it would not catch the attention of anyone monitoring our checkins. Nobody except the web development team used IE6 with any real regularity, so we knew it was unlikely anyone would notice our banner appear in the staging environment. We even delayed having the text translated for international users so that a translator asking for additional context could not inadvertently surface what we were doing. Next, we just needed a way to slip the code into production without anyone catching on.
Chris Zacharias
The little-told story of how a rogue team of YouTube engineers in 2009 helped hasten IE6's downfall by adding a deprecation warning to the top of the site's homepage… without getting the (immediate) attention of the senior developers and management who'd have squashed their efforts.
Tagged internet explorer, web browser, web browsers, youtube
Edge Blink and Progressive Web Apps
19 April 2019 20:16 2 comments
As I've previously mentioned (sadly), Microsoft Edge is to drop its own rendering engine EdgeHTML and replace it with Blink, Google's one (more of my and others related sadness here, here, here, and here). Earlier this month, Microsoft made available the first prerelease versions of the browser, and I gave it a go.
At a glance, it looks exactly like you'd expect a Microsoft reskin of Chrome to look, right down to the harmonised version numbers.
All of the Chrome-like features you'd expect are there, including support for Chrome plugins, but Microsoft have also clearly worked to try to integrate as much as possible of the important features that they felt were distinct to Edge in there, too. For example, Edge Blink supports SmartScreen filtering and uses Microsoft accounts for sync, and Incognito is of course rebranded InPrivate.
But what really interested me was the approach that Edge Dev has taken with Progressive Web Apps.
NonStopHammerTi.me might not be the best PWA in the world, but it's the best one linked from this blog post.
Edge Dev may go further than any other mainstream browser in its efforts to make Progressive Web Apps visible to the user, putting a plus sign (and sometimes an extended install prompt) right in the address bar, rather than burying it deep in a menu. Once installed, Edge PWAs "just work" in exactly the way that PWAs ought to, providing a simple and powerful user experience. Unlike some browsers, which make installing PWAs on mobile devices far easier than on desktops, presumably in a misguided belief in the importance of mobile "app culture", it doesn't discriminate against desktop users. It's a slick and simple user experience all over.
Once installed, Edge immediately runs your new app (closing the tab it formerly occupied) and adds shortcut icons.
Feature support is stronger than it is for Progressive Web Apps delivered as standalone apps via the Windows Store, too, with the engine not falling over at the first sign of a modal dialog for example. Hopefully (as I support one of these hybrid apps!) these too will begin to be handled properly when Edge Dev eventually achieves mainstream availability.
If you've got the "app" version installed, Edge provides a menu option to switch to that from any page on the conventional site (and cookies/state is retained across both).
But perhaps most-impressive is Edge Dev's respect for the importance of URLs. If, having installed the progressive "app" version of a site you subsequently revisit any address within its scope, you can switch to the app version via a link in the menu. I'd rather have seen a nudge in the address bar, where the user might expect to see such things (based on that being where the original install icon was), but this is still a great feature… especially given that cookies and other state maintainers are shared between the browser, meaning that performing such a switch in a properly-made application will result in the user carrying on from almost exactly where they left off.
Unlike virtually every other PWA engine, Edge Dev's provides a "Copy URL" feature even to apps without address bars, which is a killer feature for sharability.
Similarly, and also uncommonly forward-thinking, Progressive Web Apps installed as standalone applications from Edge Dev enjoy a "copy URL" option in their menu, even if the app runs without an address bar (e.g. as a result of a "display": "standalone" directive in the manifest.json). This is a huge boost to sharability and is enormously (and unusually) respectful of the fact that addresses are the Web's killer feature! Furthermore, it respects the users' choice to operate their "apps" in whatever way suits them best: in a browser (even a competing browser!), on their mobile device, or wherever. Well done, Microsoft!
I'm still very sad overall that Edge is becoming part of the Chromium family of browsers. But if the silver lining is that we get a pioneering and powerful new Progressive Web App engine then it can't be all bad, can it?
Tagged browser wars, edge, progressive web apps, web, web browser, web browsers
I Used The Web For A Day On Internet Explorer 8
22 March 2019 10:28 0 comments
Who In The World Uses IE8?
Before we start; a disclaimer: I am not about to tell you that you need to start supporting IE8.
There's every reason to not support IE8. Microsoft officially stopped supporting IE8, IE9 and IE10 over three years ago, and the Microsoft executives are even telling you to stop using Internet Explorer 11.
But as much as we developers hope for it to go away, it just. Won't. Die. IE8 continues to show up in browser stats, especially outside of the bubble of the Western world.
Chris Ashton (Smashing Magazine)
Sure, you aren't developing for IE8 any more. But you should be developing with progressive enhancement, and if you do that right, you get all kinds of compatibility, accessibility, future- and past-proofing built-in. This isn't just about supporting the (many) African countries where IE8 usage remains at over 1%… it's about supporting the Web's openness and archivibility and following best-practice in your support of new technologies.
Tagged accessibility, progressive enhancement, web, web browser, web development
Firefox Finally Appeals
16 February 2005 13:32 15 comments
As you may all know, I'm a die-hard supporter of the Opera web browser, despite many of my friends now claiming that Firefox is superior. I've been following the Mozilla project for a long while (haven't we all), and on the many occasions I've tried Firefox (and it's grandparents) I've always been unimpressed. It's always been the little things that Opera did that kept me coming back to it, time and time again.
With the full release of Firefox 1.0 (download Firefox here), there's been an explosion in the number of Firefox extensions that have become available, so I decided to try to find a combination of extensions that would at long last give Firefox the capabilities that always kept me coming back to Opera. The theory is – if I can find enough extensions to give me the functionality I need in a web browser (which Opera very-nearly perfectly provides) in Firefox, it'll make a convert out of me. Here goes –
Mouse Gestures 1.0 – One of the great things about Opera is that it really pioneered mouse gestures (waving your cursor in strange patterns in order to facilitate shortcuts), and led the way for years thereafter. Mouse gestures are infectious – once you've used them and you get the hang of "doing things faster" (particularly mouse-intensive activities like web browsing), you end up trying to do it elsewhere – I've frequently used friends computers (with Internet Exploder, or similar) and tried to do a gesture before remembering that I can't.The Mouse Gestures extension for Firefox is fully-featured and highly-configurable. I found the original settings a little unresponsive, and had to increase the "diagonal tolerance" (slippage permitted in a non-cardinal direction) to bring it back in line with the speed at which I execute gestures, and of course I've customised some of my own gestures. Apart from that, it's wonderful.
Download Manager Tweak 0.6.3 – One thing I loved about my customised Opera configuration was that pretty much everything not directly related to browsing – my RSS-feed subscriptions (that let me keep an eye on all my friends' weblogs in realtime), my downloads, etc. – were set up to all appear in the wonderful "sidebar": a non-invasive way of keeping information "to hand". Firefox's download windows are chunky and ugly, only a little better than the hideous ones provided by Internet Exploder. This plugin allows you to move the download window to the sidebar – a far more sensible place for it – and manage all your transfers from there.
Web Developer 0.8 and Nuke Anything 0.2 – As a web developer, I love the web developer tools in Opera. The ability to switch stylesheets, emulate other browsers, change and test content on the fly, and manipulate cookies is invaluable when debugging large, complex web projects. Combining these two excellent extensions gives me all of this, and more. The Web Developer tools can do things like manipulate form data on the fly, edit offline HTML and CSS on-the-fly, simulate different screen resolutions, and validate source code – it's fantastic. Nuke Anything allows content to be 'removed' from the page: a great way of digging through complicated source code to find how a particular trick is being achieved.
Sage 1.3 – Now here's a stunning piece of software. Thanks to Jon for suggesting this one.A great feature of Opera is it's use as an RSS reader. RSS is a wonderful way to "subscribe" to news sources, weblogs, and the like, and be notified when they're updated or even have the new content delivered directly to your desktop. It's so good, that I rarely use Abnib or my friends page any more. Opera makes it easy to set up and manage your subscriptions, and delivers them in the way that suits you best.Now Firefox does natively support syndication, but it doesn't do a very good job of it. It's system – "Active Bookmarks", relies on use of it's bookmarks list, lots of scrolling, etc. Plus – and here's the big problem – it doesn't pass your browser cookies when picking up the feeds – this means that you can't have it, for example, pick up restricted "friends only" feeds from your friends' weblogs. Without this feature, there was no way I'd be leaving Opera behind.But Sage pulls it off. It pulls in the feeds and presents them in a brilliant way. It's default options are a little weird, and it doesn't support automatic "timed" feed collection, but it still does a great job of this newsfeed lark. I think everybody with Firefox should install Sage.
Session Saver – Simply put, this allows Firefox to remember what tabs you had open when it was last closed (even if it crashed or there was a power cut), and re-open them when you run it again, in a very Opera-esque way.
MiniT 0.4 – A pet annoyance, but one that would have really annoyed me, is the inability to re-order the tabs while using Firefox's tabbed browsing. I mean: why wasn't this included with the program? Most other programs that use the dynamic "document" tab metaphor allow the user to click-drag-reorder them, including my beloved Opera. But no, you need a plug-in like MiniT to do this. It's good: not as "fluid" as Opera, but quite satisfactory.
TabBrowser Preferences 1.1.1 – It didn't take long of playing with Firefox, particularly on the EasyNews web site, to find another thing which, to me, is a big problem. When people (very rudely) make hyperlinks that request to be opened in "a new window", Firefox does exactly that: opens them in a new window, rather than in a new tab in the current window (fitting with the tabbed browsing metaphor). I tried a couple of plug-ins to prevent this from happening, but none of them worked consistently (for example, catching JavaScript pop-up windows and tabbing them, for example), as Opera does, until I found this lovely little extension. TabBrowser Preferences has all kind of options I don't use, but for this one, which I do, it's wonderful.
LastTab 1.1 – By this point, I had very few quirks left unsatisfied on my "web browser wish list". One was that, in Opera, pressing CTRL-TAB takes you first to your most-recently used other tab, and then (if you keep pressing tab) through the others you have open. This makes sense to me, because you can then use CTRL-TAB as a two-tab "flicker" (like the "last channel" button on a TV remote): perfect for use as a "boss key" (if you don't know, you don't need to know). Satisfied.
This only leave one "big" niggle that still pisses me off – I can't find a plug-in that will allow me to hold down a particular key (e.g. shift) and click on a tab, to close it (really useful for closing multiple tabs at once, after running and completing a multi-tab information seek). If anybody can suggest an extension that does this, let me know!
So; I guess I'm a Firefox convert. I knew it would happen someday, but I'm just surprised it happened so soon.
Tagged geeky, internet, technology, web, web browser, web browsers


Software Listing of Author : "Isharesoft.com"
An integrative audio converting and burning tool.
An ultimate video and audio format converter which supports converting APE, CUE, CDA, h.
iSharesoft AVI to SWF Converter not only converts AVI video files to SWF formats, but it also turns your favorite pictures (JPG, PNG, GIF, and BMP) to SWF video.
iSharesoft Blu Ray Ripper can convert blu-ray disc to various High-Definition videos like H.
iSharesoft CD Burner is expert music CD burning software with simple settings.
Rip CD to MP3,WAV,WMA,OGG,VQF,MP2 etc.
iSharesoft DAT Converter owns the high technology to convert DAT to most popular videos including AVI, DivX, MP4, MPEG-1/2/4, WMV, 3GP and FLV videos.
iSharesoft DVD Ripper Ultimate is powerful and convenient DVD ripping software with the capacity of ripping DVD to almost all video and audio formats, such as AVI, WMV, DivX, MPEG-4, RM, MP3, WMA, WAV, etc.
iSharesoft MKV Converter enables you to convert MKV to AVI, MPEG, MP4, WMV, DivX, XviD, MOV and HD videos like H.264/MPEG-4 AVC, HD H.264, HD DivX, HD MPEG-2-PS/TS, HD WMV, HD XviD. It can also convert MKV to MP3, WAV, WMA, AAC or M4A music file.
iSharesoft Mobile Video Converter can convert almost all media files to mobile phone video/audio formats including 3GPP, 3GPP2, AVI, DivX, MP4, MPEG-1, MPEG-4 AVC, WMV, XviD, AMR, MP3, WMA, WAV, M4A, OGG, etc. for enjoying on popular mobile phones.
A professional conversion tool for Real Media files of rm, rmvb and ram.
High speed and quality to convert video to MPEG-2 suitable for Xbox (Xbox360).
iSharesoft Zune Video Converter is a powerful video and movie converter for your Zune which helps you watch videos and movies on your Zune anywhere and anyway.


text:
Cheryl Smith predicts bright future for GB Women after silver medal at World Championships in Dumfries
The GB squad and support staff display their silver medals in Dumfries. Picture: Karl Denham/IHUK.
Phil Harrison
THE gold medal sought may not have been secured but Great Britain Women head coach Cheryl Smith insisted there were plenty of positives to take from the World Championships in Dumfries.
GB beat DPR Korea 2-1 in their final game to record their fourth win at the tournament to finish a point behind gold-medal winners Slovenia, who were promoted from Division II Group A.
Throughout the week, GB gave five debut caps including 15-year-old Chloe Headland, 16-year-old Lucy Beal and 17-year-old Aimee Headland, who scored two goals in her first tournament. The average age of Smith's squad was just 22.
Despite the disappointment of missing out on gold, Smith said: "I am not going to lie, we came to the tournament with the aim of gold and we said that publicly.
"It hasn't gone our way this week but the coaching staff will take many positives from what we have seen. The girls can hold their heads up high as they gave everything on the ice and left nothing behind."
Smith believes what the last week has highlighted so clearly is the future of the women's game at an international leve.
GB Women head coach, Cheryl Smith. Picture: Karl Denham/IHUK.
"With the mix of experience and young players, I think the future is very safe hands," she added. "There are many more in the pipeline so we have plenty to be excited about. The coaching staff believe these players can challenge for a place on the roster next year."
GB's win over Korea meant that Spain, who were only promoted last season and were sixth seeds, took home the bronze in their first year at this level.
Slovenia had earlier guaranteed themselves bronze with a 7-1 win over Mexico in the final day's first game, earning promotion to Division 1 B for the first time in their history.
In Monday night's final encounter, GB fell behind early on when Jang Hyang put DPR Korea ahead on a delayed penalty, reacting first to a loose puck in front at 2.59.
GB head coach, Cheryl Smith
GB grew stronger as the period went on and Kim Lane, Shannon Douglas and Steph Towns all went close, while Katie Marsden hit the base of the left-hand post.
The game was won in the second period, however. Marsden forced a good pad save out of So Jong Sim early on before the hosts equalised when Lane netted from close range for her second goal of the tournament at 27.49.
GB looked the most likely to score again and Shannon Douglas slotted in a rebound after Towns had seen her shot saved 34.40.
Hull Pirates and Sheffield Steeldogs keen to book one final showdown
Coaches and players urged to get their skates on for new Leeds ice hockey team
Shannon Douglas hits home the rebound for what proved to be GB's winniong goal against Korea on Monday night. Picture: Karl Denham/IHUK.

redpajama_set_name: RedPajamaCommonCrawl


Application for wall or ceiling. Blown from amber smoked glass infused with silica sand dust. Offered in two sizes. Metal structure finish in brushed bronze. Also available in similar pendant application.
35 (small)- 13.75"D X 10.5"H. Uses 1 X 100W 120V E26 (medium base) A19 silver bowl incandescent lamp.
45 (large)- 17.75"D X 14.25"H. Uses 1 X 100W 120V E26 (medium base) A19 silver bowl incandescent lamp.


Good Charlotte have signed a deal with BMG to release their upcoming record, which is coming later this year.
So, is a new album what they have been teasing all along?
Read more: What are Good Charlotte teasing on Instagram?
The band are working with BMG to release their new album worldwide, Billboard reports.
"We feel our partnership with BMG is a natural one, as we've been fortunate enough to see first hand their commitment to the artists they're in business with," Benji and Joel Madden tell Billboard.
"As the momentum for Good Charlotte continues to build in this new chapter of our career, BMG has consistently demonstrated the type of forward thinking, artist friendly, entrepreneurial spirit that we really relate to and is in line with the way we want our business to feel," the twins continue.
The yet-untitled project will be released on the Madden brothers MDDN imprint following, as was their 2016 comeback record, Youth Authority.
Although nothing has yet been revealed, there's a chance the upcoming album is what Good Charlotte have been teasing on Instagram.
They started by posting some mysterious band pics with animated GIF clips that feature the band members' faces quickly flickering into some sort of zombie/skeleton/corpse paint visage. Then, things got weirder when other artists started getting the skeleton/corpse treatment on Good Charlotte's Instagram, with an addition: The band's logo and an "Actual Pain" sticker.
Finally, last week, band shared a cryptic video of the skeleton/corpse figures we'd been seeing in the clips on the band's Instagram account. At the end of the video, the date May 25, 2018, appears and we can only assume that this Friday, the band will finally announce whatever is going on.
We're still not so sure if it's really an album, but we're beyond ready to see what Good Charlotte has been teasing.


text:
Q: Java: Count Inversions Algorithm logic went wrong I am trying to write the Count inversion algorithm. It works on an array of size 10. However, things went terribly wrong, when I tried to test on an array of size 100000. I was still able to sort the array but the number of inversions is NEGATIVE, which is wrong. I don't understand which part of my logic went wrong.
My main logic: I created an array object called myArray and it has a CountSplitInv instance method that is suppose to sort the sub-arrays and return number of inversions involved.
Please help me out. I have been stuck in this for a long time now and I still wasn't able to figure out what went wrong.
I have a feeling that I don't understand Recursion concept fully.
import java.io.*;
import java.util.*;
import java.math.*;

class myArray{
    private int[] input_array;
    private int nElems;

    public myArray(int max){
        input_array = new int[max];
        nElems = 0;
    }

    public void insert(int value){
        input_array[nElems++] = value;
    }

    public void display(){
        for(int j = 0; j < nElems; j++){
            System.out.print(input_array[j] + " ");
        }
        System.out.println("");
    }

     public void SortAndCount(){
        int[] output_array = new int[nElems];
        int ans = SortNInversionCounts(output_array,0, nElems -1);
        System.out.println("number of inversions IS: " + ans);
     }

    public int SortNInversionCounts(int[] output_array, int lowerBound, int upperBound){
        if(lowerBound == upperBound){
            return 0;
        } else{
            int mid = (lowerBound + upperBound)/2;
            int x, y , z;
            x = SortNInversionCounts(output_array, lowerBound, mid);
            y = SortNInversionCounts(output_array, mid+1, upperBound);
            z = CountSplitInv(output_array, lowerBound, mid+1, upperBound);
            return x + y + z;
        }
    }

    public int CountSplitInv(int[] output_array, int lowPtr, int highPtr, int upperBound){
        int j = 0;
        int lowerBound = lowPtr;
        int mid = highPtr - 1;
        int n = upperBound - lowerBound + 1;

        int numOfInversions = 0;

        while(lowPtr <= mid && highPtr <= upperBound){
            if( input_array[lowPtr] < input_array[highPtr]){
                output_array[j++] = input_array[lowPtr++];
            } else{
                output_array[j++] = input_array[highPtr++];
                // WHERE I count number of inversions
                numOfInversions = numOfInversions + (mid - lowPtr + 1);
            }
        }

        while(lowPtr <= mid){
            output_array[j++] = input_array[lowPtr++];
        }

        while(highPtr <= upperBound){
            output_array[j++] = input_array[highPtr++];
        }

        for(j = 0; j < n; j++){
            input_array[lowerBound+j] = output_array[j];
        }

        return numOfInversions;
    }
}

class NumOfInversionsApp{

    public static void main(String[] args) throws IOException{

        // Read input file
        FileInputStream fil = new FileInputStream("IntegerArray.txt");
        BufferedReader br = new BufferedReader( new InputStreamReader(fil));

        myArray in_array = new myArray(100000);
        String element = null;
        while( ( element = br.readLine()) != null){
            in_array.insert( Integer.parseInt(element) );
        }

        // input_array.display();
        in_array.SortAndCount();

        // input_array.display();
    }
}

redpajama_set_name: RedPajamaStackExchange


text:
Sorry, Marc Vetri, But Philly Isn't Buying Your COVID Advice
As COVID cases increase, the outspoken chef says we could easily double the capacity at the Linc for Eagles games. The city? Not so much.
By Victor Fiorillo· 10/20/2020, 3:23 p.m.
Philadelphia chef Marc Vetri, who says we could easily double the capacity at the Linc for Eagles games — even as COVID cases are on the increase (Getty Images)
I don't know about you, but when I want the latest information on COVID-19, I turn to self-appointed public health expert Marc Vetri, M.D.
The millionaire restaurateur, who pulled off opening a new restaurant in Las Vegas in the middle of a pandemic, has been quite outspoken about his feelings on COVID and the way Philly has handled it.
Vetri has pretty much been the face of the anti-shutdown movement here. And he really let Jim Kenney have it after the Mayor was photographed eating indoors in Maryland while Philly indoor dining was prohibited — never mind that the COVID rates in that section of Maryland were much, much lower than those in Philly.
But, hey, who needs logic when you make the city's most expensive pasta, amirite?
Now, Vetri is turning his fearless activism to the game of American football.
On Sunday, Vetri was one of the 7,500 people who were allowed to go to Lincoln Financial Field to watch the Eagles lose yet again, this time to the Baltimore Ravens. 7,500 is the maximum number of people allowed inside any outdoor venue of that size in Pennsylvania. But Vetri, in all his omniscience, says we could do 15,000 as easily as it is for him to make some spaghetti.
"We went!" Vetri proclaimed on Twitter the morning after the game. "Not really many rules … wear a mask … that's really it. Was a great vibe. Could easily double the people with zero issues."
Sure, COVID cases and infection rates are on the rise in Philly and many other parts of the country. And yes, some experts are warning that the United States is just a couple of weeks behind Europe, which is having huge COVID problems anew. But it's cool: Marc Vetri promises zero issues.
I presented Vetri's findings to Philadelphia health commissioner Tom Farley during a press briefing on Tuesday. Farley seemed unimpressed with Vetri's analysis of the situation.
"Right now, you look at the numbers, and the cases are rising," Farley said. "I'm inclined to impose new restrictions. Not lessen them."
According to Farley, we've now topped more than 40,700 confirmed COVID cases since the beginning of the pandemic. The city is currently seeing the highest weekly averages of confirmed cases since mid-May, though, as Farley noted, this is, in part, because we're testing more people.
But Farley also pointed out that our positivity rate — which has nothing to do with how many people you're testing — is back up to around where we saw it in mid-July. And that's not good.
"We may be entering a dangerous new period with this virus," Farley said.
Marc Vetri
Philadelphia Coronavirus News
Victor Fiorillo Senior Reporter at Philadelphia Magazine @phillyvictor
https://www.facebook.com/VictorKnowsPhilly/
vfiorillo@phillymag.com
Your Guide to This Week's Eagles-Giants Playoff Game


Below you will find the latest exchange rate for exchanging Venezuelan Bolivar (VEF) to Dominican Peso (DOP) , a table containing most common conversions and a chart with the pair's evolution. The Venezuelan Bolivar (VEF) to Dominican Peso (DOP) rates are updated every minute using our advanced technology for live forex currency conversion. Check back in a few days for things to buy with this amount and information about where exactly you can exchange currencies om;ine and offline.
If you need to SWAP these currencies go to Dominican Peso (DOP) to Venezuelan Bolivar (VEF) page.
The official currency of Venezuela is the bolivar. The bolivar is issued in denominations of 1000, 2000, 5000, 10000, 20000 and 50000. Exchanges can be made at foreign currency exchange offices but only for converting foreign currency to bolivar. Exchange offices buy foreign currency only. They do not sell it. Airport terminals offer desks where foreign currency can be purchased before leaving the country.


Approx. 18 * 10.3 * 6.5cm / 7 * 4 * 2.6in. Support iso connector for vw. Remote control: Bluetooth,mp3 players,built-in gps. Cd-r,bluetooth,touch screen,mp3 players,cd player,cd-rw,built-in gps,radio tuner. Spanish,norwegian,portuguese,danish,arabic,czech,japanese,greek,korean,polish,turkish,finnish,french,hungarian,thai,slovak,german,romanian,lithuanian,dutch,italian,hebrew,russian,english. Tpms/dvr: Support original camera: Display size: 7" headrest car dvd player. Mp3 players,cassette player,cd player,radio tuner,touch screen,bluetooth. Ha2128-s720. Cc5077. Android honda civic. Car radio for nissan x trail.
Wholesale kyiv ukraine. Dk7091. 2009,2007,2010,2008. Digital media format : Windows roof. 2015,2016. Silver black. 1g+16g/2g ram+32g romAd60corolla8003,cam3. Wholesale accord honda 2008. Focus ford 2009. Aly-2808. Tr508. Spanish,portuguese,swedish,japanese,turkish,italian,french,english,german.
P4063. Screen display : Android car  din. 2009 suzuki swift. Ford model: 300c schweizer. For ford mondeo s-max cmax focus ii. High hardness,scrape prevent,5 point touch. Cc-c8056. W176 badge. Car dab transmitter. Kn-op702c. Screen display  : Octa core 1024*600 resolution. 9 inch large screen.


text:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
<title>Boost Getting Started on Unix Variants</title>
<meta content="Getting Started with Boost on Unix Variants (including Linux and MacOS)" name="description" />
<link rel="stylesheet" href="../../rst.css" type="text/css" />

 Getting Started on Unix Variants

Index

1   Get Boost

2   The Boost Distribution

3   Header-Only Libraries

4   Build a Simple Program Using Boost

4.1   Errors and Warnings

5   Prepare to Use a Boost Library Binary

5.1   Easy Build and Install

5.2   Or, Build Custom Binaries

5.2.1   Install Boost.Build

5.2.2   Identify Your Toolset

5.2.3   Select a Build Directory

5.2.4   Invoke <tt class="docutils literal">b2</tt>

5.3   Expected Build Output

5.4   In Case of Build Errors

6   Link Your Program to a Boost Library

6.1   Library Naming

6.2   Test Your Program

7   Conclusion and Further Resources

1   Get Boost

The most reliable way to get a copy of Boost is to download a
distribution from SourceForge:

Download <tt class="docutils literal">boost_1_60_0</tt><tt class="docutils literal">.tar.bz2</tt>.

In the directory where you want to put the Boost installation,
execute

tar --bzip2 -xf /path/to/<tt class="docutils literal">boost_1_60_0</tt>.tar.bz2

Other Packages

RedHat, Debian, and other distribution packagers supply Boost
library packages, however you may need to adapt these
instructions if you use third-party packages, because their
creators usually choose to break Boost up into several packages,
reorganize the directory structure of the Boost distribution,
and/or rename the library binaries.1 If you have
any trouble, we suggest using an official Boost distribution
from SourceForge.

2   The Boost Distribution

This is a sketch of the resulting directory structure:

boost_1_60_0/ .................The "boost root directory"
   index.htm .........A copy of www.boost.org starts here
   boost/ .........................All Boost Header files
   <tt class="docutils literal"> </tt>
   libs/ ............Tests, .cpps, docs, etc., by library
     index.html ........Library documentation starts here
     algorithm/
     any/
     array/
                     …more libraries…
   status/ .........................Boost-wide test suite
   tools/ ...........Utilities, e.g. Boost.Build, quickbook, bcp
   more/ ..........................Policy documents, etc.
   doc/ ...............A subset of all Boost library docs

Header Organization

The organization of Boost library headers isn't entirely uniform,
but most libraries follow a few patterns:

Some older libraries and most very small libraries place all
public headers directly into <tt class="docutils literal">boost</tt><tt class="docutils literal">/</tt>.

Most libraries' public headers live in a subdirectory of
<tt class="docutils literal">boost</tt><tt class="docutils literal">/</tt>, named after the library.  For example, you'll find
the Python library's <tt class="docutils literal">def.hpp</tt> header in

<tt class="docutils literal">boost</tt><tt class="docutils literal">/</tt><tt class="docutils literal">python</tt><tt class="docutils literal">/</tt><tt class="docutils literal">def.hpp</tt>.

Some libraries have an "aggregate header" in <tt class="docutils literal">boost</tt><tt class="docutils literal">/</tt> that
<tt class="docutils literal">#include</tt>s all of the library's other headers.  For
example, Boost.Python's aggregate header is

<tt class="docutils literal">boost</tt><tt class="docutils literal">/</tt><tt class="docutils literal">python.hpp</tt>.

Most libraries place private headers in a subdirectory called
<tt class="docutils literal">detail</tt><tt class="docutils literal">/</tt>, or <tt class="docutils literal">aux_</tt><tt class="docutils literal">/</tt>.  Don't expect to find
anything you can use in these directories.

It's important to note the following:

The path to the boost root directory (often <tt class="docutils literal">/usr/local/</tt><tt class="docutils literal">boost_1_60_0</tt>) is
sometimes referred to as <tt class="docutils literal">$BOOST_ROOT</tt> in documentation and
mailing lists .

To compile anything in Boost, you need a directory containing
the <tt class="docutils literal">boost</tt><tt class="docutils literal">/</tt> subdirectory in your <tt class="docutils literal">#include</tt> path.  <tt class="docutils literal"> </tt>

Since all of Boost's header files have the <tt class="docutils literal">.hpp</tt> extension,
and live in the <tt class="docutils literal">boost</tt><tt class="docutils literal">/</tt> subdirectory of the boost root, your
Boost <tt class="docutils literal">#include</tt> directives will look like:

#include <boost/whatever.hpp>

or

#include "boost/whatever.hpp"

depending on your preference regarding the use of angle bracket
includes.  <tt class="docutils literal"> </tt>

Don't be distracted by the <tt class="docutils literal">doc</tt><tt class="docutils literal">/</tt> subdirectory; it only
contains a subset of the Boost documentation.  Start with
<tt class="docutils literal">libs</tt><tt class="docutils literal">/</tt><tt class="docutils literal">index.html</tt> if you're looking for the whole enchilada.

3   Header-Only Libraries

The first thing many people want to know is, "how do I build
Boost?"  The good news is that often, there's nothing to build.

Nothing to Build?

Most Boost libraries are header-only: they consist entirely
of header files containing templates and inline functions, and
require no separately-compiled library binaries or special
treatment when linking.

The only Boost libraries that must be built separately are:

Boost.Chrono

Boost.Context

Boost.Filesystem

Boost.GraphParallel

Boost.IOStreams

Boost.Locale

Boost.MPI

Boost.ProgramOptions

Boost.Python (see the Boost.Python build documentation
before building and installing it)

Boost.Regex

Boost.Serialization

Boost.Signals

Boost.System

Boost.Thread

Boost.Timer

Boost.Wave

A few libraries have optional separately-compiled binaries:

Boost.DateTime has a binary component that is only needed if
you're using its <tt class="docutils literal">to_string</tt>/<tt class="docutils literal">from_string</tt> or serialization
features, or if you're targeting Visual C++ 6.x or Borland.

Boost.Graph also has a binary component that is only needed if
you intend to parse GraphViz files.

Boost.Math has binary components for the TR1 and C99
cmath functions.

Boost.Random has a binary component which is only needed if
you're using <tt class="docutils literal">random_device</tt>.

Boost.Test can be used in "header-only" or "separately compiled"
mode, although separate compilation is recommended for serious
use.

Boost.Exception provides non-intrusive implementation of
exception_ptr for 32-bit _MSC_VER==1310 and _MSC_VER==1400
which requires a separately-compiled binary. This is enabled by
#define BOOST_ENABLE_NON_INTRUSIVE_EXCEPTION_PTR.

4   Build a Simple Program Using Boost

To keep things simple, let's start by using a header-only library.
The following program reads a sequence of integers from standard
input, uses Boost.Lambda to multiply each number by three, and
writes them to standard output:

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;

    std::for_each(
        in(std::cin), in(), std::cout << (_1 * 3) << " " );
}

Copy the text of this program into a file called <tt class="docutils literal">example.cpp</tt>.

Now, in the directory where you saved <tt class="docutils literal">example.cpp</tt>, issue the
following command:

c++ -I path/to/<tt class="docutils literal">boost_1_60_0</tt> example.cpp -o example

To test the result, type:

echo 1 2 3 | ./example

4.1   Errors and Warnings

Don't be alarmed if you see compiler warnings originating in Boost
headers.  We try to eliminate them, but doing so isn't always
practical.3 Errors are another matter.  If you're
seeing compilation errors at this point in the tutorial, check to
be sure you've copied the example program correctly and that you've
correctly identified the Boost root directory.

5   Prepare to Use a Boost Library Binary

If you want to use any of the separately-compiled Boost libraries,
you'll need to acquire library binaries.

5.1   Easy Build and Install

Issue the following commands in the shell (don't type <tt class="docutils literal">$</tt>; that
represents the shell's prompt):

$ cd path/to/<tt class="docutils literal">boost_1_60_0</tt>
$ ./bootstrap.sh --help

Select your configuration options and invoke <tt class="docutils literal">./bootstrap.sh</tt> again
without the <tt class="docutils literal">--help</tt> option.  Unless you have write permission in
your system's <tt class="docutils literal">/usr/local/</tt> directory, you'll probably want to at
least use

$ ./bootstrap.sh --prefix=path/to/installation/prefix

to install somewhere else.  Also, consider using the
<tt class="docutils literal">--show-libraries</tt> and <tt class="docutils literal">--with-libraries=</tt>library-name-list options to limit the
long wait you'll experience if you build everything.  Finally,

$ ./b2 install

will leave Boost binaries in the <tt class="docutils literal">lib/</tt> subdirectory of your
installation prefix.  You will also find a copy of the Boost
headers in the <tt class="docutils literal">include/</tt> subdirectory of the installation
prefix, so you can henceforth use that directory as an <tt class="docutils literal">#include</tt>
path in place of the Boost root directory.

skip to the next step

5.2   Or, Build Custom Binaries

If you're using a compiler other than your system's default, you'll
need to use Boost.Build to create binaries.

You'll also
use this method if you need a nonstandard build variant (see the
Boost.Build documentation for more details).

Boost.CMake

There is also an experimental CMake build for boost, supported and distributed
separately.  See the Boost.CMake wiki page for more information.

5.2.1   Install Boost.Build

Boost.Build is a text-based system for developing, testing, and
installing software. First, you'll need to build and
install it. To do this:

Go to the directory <tt class="docutils literal">tools</tt><tt class="docutils literal">/</tt><tt class="docutils literal">build</tt><tt class="docutils literal">/</tt>.

Run <tt class="docutils literal">bootstrap.sh</tt>

Run <tt class="docutils literal">b2 install --prefix=</tt>PREFIX where PREFIX is
the directory where you want Boost.Build to be installed

Add PREFIX<tt class="docutils literal">/</tt><tt class="docutils literal">bin</tt> to your PATH environment variable.

5.2.2   Identify Your Toolset

First, find the toolset corresponding to your compiler in the
following table (an up-to-date list is always available in the
Boost.Build documentation).

Note

If you previously chose a toolset for the purposes of
building b2, you should assume it won't work and instead
choose newly from the table below.

<colgroup>
<col width="12%" />
<col width="22%" />
<col width="66%" />
</colgroup>

Toolset
Name
Vendor
Notes

<tt class="docutils literal">acc</tt>
Hewlett Packard
Only very recent versions are known to work well with Boost

<tt class="docutils literal">borland</tt>
Borland

<tt class="docutils literal">como</tt>
Comeau Computing
Using this toolset may require configuring another
toolset to act as its backend.

<tt class="docutils literal">darwin</tt>
Apple Computer
Apple's version of the GCC toolchain with support for
Darwin and MacOS X features such as frameworks.

<tt class="docutils literal">gcc</tt>
The Gnu Project
Includes support for Cygwin and MinGW compilers.

<tt class="docutils literal">hp_cxx</tt>
Hewlett Packard
Targeted at the Tru64 operating system.

<tt class="docutils literal">intel</tt>
Intel

<tt class="docutils literal">msvc</tt>
Microsoft

<tt class="docutils literal">sun</tt>
Oracle
Only very recent versions are known to work well with
Boost.  Note that the Oracle/Sun compiler has a large number
of options which effect binary compatibility: it is vital
that the libraries are built with the same options that your
appliction will use. In particular be aware that the default
standard library may not work well with Boost, unless you
are building for C++11. The particular compiler options you
need can be injected with the b2 command line options
<tt class="docutils literal">cxxflags=``and ``linkflags=</tt>.  For example to build with
the Apache standard library in C++03 mode use
<tt class="docutils literal">b2 cxxflags=-library=stdcxx4 linkflags=-library=stdcxx4</tt>.

<tt class="docutils literal">vacpp</tt>
IBM
The VisualAge C++ compiler.

If you have multiple versions of a particular compiler installed,
you can append the version number to the toolset name, preceded by
a hyphen, e.g. <tt class="docutils literal">intel-9.0</tt> or
<tt class="docutils literal">borland-5.4.3</tt>. <tt class="docutils literal"> </tt>

5.2.3   Select a Build Directory

Boost.Build will place all intermediate files it generates while
building into the build directory.  If your Boost root
directory is writable, this step isn't strictly necessary: by
default Boost.Build will create a <tt class="docutils literal">bin.v2/</tt> subdirectory for that
purpose in your current working directory.

5.2.4   Invoke <tt class="docutils literal">b2</tt>

Change your current directory to the Boost root directory and
invoke <tt class="docutils literal">b2</tt> as follows:

b2 --build-dir=build-directory toolset=toolset-name <tt class="docutils literal"> </tt> stage

For a complete description of these and other invocation options,
please see the Boost.Build documentation.

For example, your session might look like this:

$ cd ~/<tt class="docutils literal">boost_1_60_0</tt>
$ b2 --build-dir=/tmp/build-boost toolset=gcc stage

That will build static and shared non-debug multi-threaded variants of the libraries. To build all variants, pass the additional option, "<tt class="docutils literal">--build-type=complete</tt>".

Building the special <tt class="docutils literal">stage</tt> target places Boost
library binaries in the <tt class="docutils literal">stage</tt><tt class="docutils literal">/</tt><tt class="docutils literal">lib</tt><tt class="docutils literal">/</tt> subdirectory of
the Boost tree.  To use a different directory pass the
<tt class="docutils literal">--stagedir=</tt>directory option to <tt class="docutils literal">b2</tt>.

Note

<tt class="docutils literal">b2</tt> is case-sensitive; it is important that all the
parts shown in bold type above be entirely lower-case.

For a description of other options you can pass when invoking
<tt class="docutils literal">b2</tt>, type:

b2 --help

In particular, to limit the amount of time spent building, you may
be interested in:

reviewing the list of library names with <tt class="docutils literal">--show-libraries</tt>

limiting which libraries get built with the <tt class="docutils literal">--with-</tt>library-name or <tt class="docutils literal">--without-</tt>library-name options

choosing a specific build variant by adding <tt class="docutils literal">release</tt> or
<tt class="docutils literal">debug</tt> to the command line.

Note

Boost.Build can produce a great deal of output, which can
make it easy to miss problems.  If you want to make sure
everything is went well, you might redirect the output into a
file by appending "<tt class="docutils literal">>build.log 2>&1</tt>" to your command line.

5.3   Expected Build Output

During the process of building Boost libraries, you can expect to
see some messages printed on the console.  These may include

Notices about Boost library configuration—for example, the Regex
library outputs a message about ICU when built without Unicode
support, and the Python library may be skipped without error (but
with a notice) if you don't have Python installed.

Messages from the build tool that report the number of targets
that were built or skipped.  Don't be surprised if those numbers
don't make any sense to you; there are many targets per library.

Build action messages describing what the tool is doing, which
look something like:

toolset-name.c++ long/path/to/file/being/built

Compiler warnings.

5.4   In Case of Build Errors

The only error messages you see when building Boost—if any—should
be related to the IOStreams library's support of zip and bzip2
formats as described here.  Install the relevant development
packages for libz and libbz2 if you need those features.  Other
errors when building Boost libraries are cause for concern.

If it seems like the build system can't find your compiler and/or
linker, consider setting up a <tt class="docutils literal">user-config.jam</tt> file as described
here.  If that isn't your problem or the <tt class="docutils literal">user-config.jam</tt> file
doesn't work for you, please address questions about configuring Boost
for your compiler to the Boost.Build mailing list.

6   Link Your Program to a Boost Library

To demonstrate linking with a Boost binary library, we'll use the
following simple program that extracts the subject lines from
emails.  It uses the Boost.Regex library, which has a
separately-compiled binary component.

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main()
{
    std::string line;
    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

    while (std::cin)
    {
        std::getline(std::cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
            std::cout << matches[2] << std::endl;
    }
}

There are two main challenges associated with linking:

Tool configuration, e.g. choosing command-line options or IDE
build settings.

Identifying the library binary, among all the build variants,
whose compile configuration is compatible with the rest of your
project.

There are two main ways to link to libraries:

You can specify the full path to each library:

$ c++ -I path/to/<tt class="docutils literal">boost_1_60_0</tt> example.cpp -o example \
   ~/boost/stage/lib/libboost_regex-gcc34-mt-d-1_36.a

You can separately specify a directory to search (with <tt class="docutils literal">-L</tt>directory) and a library name to search for (with <tt class="docutils literal">-l</tt>library,2 dropping the filename's leading <tt class="docutils literal">lib</tt> and trailing
suffix (<tt class="docutils literal">.a</tt> in this case):

$ c++ -I path/to/<tt class="docutils literal">boost_1_60_0</tt> example.cpp -o example \
   -L~/boost/stage/lib/ -lboost_regex-gcc34-mt-d-1_36

As you can see, this method is just as terse as method A for one
library; it really pays off when you're using multiple
libraries from the same directory.  Note, however, that if you
use this method with a library that has both static (<tt class="docutils literal">.a</tt>) and
dynamic (<tt class="docutils literal">.so</tt>) builds, the system may choose one
automatically for you unless you pass a special option such as
<tt class="docutils literal">-static</tt> on the command line.

In both cases above, the bold text is what you'd add to the
command lines we explored earlier.

6.1   Library Naming

In order to choose the right binary for your build configuration
you need to know how Boost binaries are named.  Each library
filename is composed of a common sequence of elements that describe
how it was built.  For example,
<tt class="docutils literal">libboost_regex-vc71-mt-d-1_34.lib</tt> can be broken down into the
following elements:

<tt class="docutils literal">lib</tt>

Prefix: except on Microsoft Windows, every Boost library
name begins with this string.  On Windows, only ordinary static
libraries use the <tt class="docutils literal">lib</tt> prefix; import libraries and DLLs do
not.4

<tt class="docutils literal">boost_regex</tt>

Library name: all boost library filenames begin with <tt class="docutils literal">boost_</tt>.

<tt class="docutils literal">-vc71</tt>

Toolset tag: identifies the toolset and version used to build
the binary.

<tt class="docutils literal">-mt</tt>

Threading tag: indicates that the library was
built with multithreading support enabled.  Libraries built
without multithreading support can be identified by the absence
of <tt class="docutils literal">-mt</tt>.

<tt class="docutils literal">-d</tt>

ABI tag: encodes details that affect the library's
interoperability with other compiled code.  For each such
feature, a single letter is added to the tag:

<colgroup>
<col width="5%" />
<col width="75%" />
<col width="20%" />
</colgroup>

Key
Use this library when:
Boost.Build option

<tt class="docutils literal">s</tt>
linking statically to the C++ standard library and compiler runtime support
libraries.
runtime-link=static

<tt class="docutils literal">g</tt>
using debug versions of the standard and runtime support libraries.
runtime-debugging=on

<tt class="docutils literal">y</tt>
using a special debug build of Python.
python-debugging=on

<tt class="docutils literal">d</tt>
building a debug version of your code.5
variant=debug

<tt class="docutils literal">p</tt>
using the STLPort standard library rather than the default one supplied with
your compiler.
stdlib=stlport

For example, if you build a debug version of your code for use
with debug versions of the static runtime library and the
STLPort standard library in "native iostreams" mode,
the tag would be: <tt class="docutils literal">-sgdpn</tt>.  If none of the above apply, the
ABI tag is ommitted.

<tt class="docutils literal">-1_34</tt>

Version tag: the full Boost release number, with periods
replaced by underscores. For example, version 1.31.1 would be
tagged as "-1_31_1".

<tt class="docutils literal">.lib</tt>

Extension: determined according to the operating system's usual
convention.  On most unix-style platforms the extensions are
<tt class="docutils literal">.a</tt> and <tt class="docutils literal">.so</tt> for static libraries (archives) and shared
libraries, respectively.  On Windows, <tt class="docutils literal">.dll</tt> indicates a shared
library and <tt class="docutils literal">.lib</tt> indicates a
static or import library.  Where supported by toolsets on unix
variants, a full version extension is added (e.g. ".so.1.34") and
a symbolic link to the library file, named without the trailing
version number, will also be created.

6.2   Test Your Program

To test our subject extraction, we'll filter the following text
file.  Copy it out of your browser and save it as <tt class="docutils literal">jayne.txt</tt>:

To: George Shmidlap
From: Rita Marlowe
Subject: Will Success Spoil Rock Hunter?
---
See subject.

If you linked to a shared library, you may need to prepare some
platform-specific settings so that the system will be able to find
and load it when your program is run.  Most platforms have an
environment variable to which you can add the directory containing
the library.  On many platforms (Linux, FreeBSD) that variable is
<tt class="docutils literal">LD_LIBRARY_PATH</tt>, but on MacOS it's <tt class="docutils literal">DYLD_LIBRARY_PATH</tt>, and
on Cygwin it's simply <tt class="docutils literal">PATH</tt>.  In most shells other than <tt class="docutils literal">csh</tt>
and <tt class="docutils literal">tcsh</tt>, you can adjust the variable as follows (again, don't
type the <tt class="docutils literal">$</tt>—that represents the shell prompt):

$ VARIABLE_NAME=path/to/lib/directory:${VARIABLE_NAME}
$ export VARIABLE_NAME

On <tt class="docutils literal">csh</tt> and <tt class="docutils literal">tcsh</tt>, it's

$ setenv VARIABLE_NAME path/to/lib/directory:${VARIABLE_NAME}

Once the necessary variable (if any) is set, you can run your
program as follows:

$ path/to/compiled/example < path/to/jayne.txt

The program should respond with the email subject, "Will Success
Spoil Rock Hunter?"

7   Conclusion and Further Resources

This concludes your introduction to Boost and to integrating it
with your programs.  As you start using Boost in earnest, there are
surely a few additional points you'll wish we had covered.  One day
we may have a "Book 2 in the Getting Started series" that addresses
them.  Until then, we suggest you pursue the following resources.
If you can't find what you need, or there's anything we can do to
make this document clearer, please post it to the Boost Users'
mailing list.

Boost.Build reference manual

Boost Users' mailing list

Boost.Build mailing list

Index of all Boost library documentation

Onward

Good luck, and have fun!

—the Boost Developers

<colgroup><col class="label" /><col /></colgroup>

[1]	If developers of Boost packages would like to work
with us to make sure these instructions can be used with their
packages, we'd be glad to help.  Please make your interest known
to the Boost developers' list.

<colgroup><col class="label" /><col /></colgroup>

[2]	That option is a dash followed by a lowercase "L"
character, which looks very much like a numeral 1 in some fonts.

<colgroup><col class="label" /><col /></colgroup>

[3]	Remember that warnings are specific to each compiler
implementation.  The developer of a given Boost library might
not have access to your compiler.  Also, some warnings are
extremely difficult to eliminate in generic code, to the point
where it's not worth the trouble.  Finally, some compilers don't
have any source code mechanism for suppressing warnings.

<colgroup><col class="label" /><col /></colgroup>

[4]	This convention distinguishes the static version of
a Boost library from the import library for an
identically-configured Boost DLL, which would otherwise have the
same name.

<colgroup><col class="label" /><col /></colgroup>

[5]	These libraries were compiled without optimization
or inlining, with full debug symbols enabled, and without
<tt class="docutils literal">NDEBUG</tt> <tt class="docutils literal">#define</tt>d.  Although it's true that sometimes
these choices don't affect binary compatibility with other
compiled code, you can't count on that with Boost libraries.

<colgroup><col class="label" /><col /></colgroup>

[6]	This feature of STLPort is deprecated because it's
impossible to make it work transparently to the user; we don't
recommend it.

redpajama_set_name: RedPajamaGithub


text:
Sergei Anatoljewitsch Jaschin (; * 6. März 1962 in Pensa, Russische SFSR; † 12. April 2022) war ein sowjetischer bzw. russischer Eishockeyspieler und -trainer.

Karriere
Sergei Jaschin spielte von 1978 bis 1980 bei Diselist Pensa in der zweitklassigen sowjetischen Perwaja Liga. Während der Saison 1979/80 wechselte er zu Dynamo Moskau, mit dem er 1990 sowjetischer Meister und mehrfach Vizemeister wurde. Des Weiteren war er Mitglied der sowjetischen Nationalmannschaft.

1988 wurde er als  Verdienter Meister des Sports der UdSSR ausgezeichnet und erhielt das Ehrenzeichen der Sowjetunion.

Während des NHL Entry Draft 1989 wurde er in der siebten Runde an insgesamt 141. Stelle von den Verantwortlichen der Edmonton Oilers ausgewählt. In der Saison 1990/91 spielte er bei Dynamo Berlin in der 1. Bundesliga. Nach nur einem Jahr verließ er Deutschland wieder und unterschrieb im Sommer 1991 einen Vertrag beim HC Davos aus der Schweiz. Im Jahr 1992 wechselte er dann zurück in seine russische Heimat zu SKA St. Petersburg. Von 1992 bis 1994 spielte er beim EHC Essen. 1994 schloss er sich dem EC Wilhelmshaven an, wo er bis 1997 blieb. In der Saison 1997/98 war er wieder in Russland bei Neftechimik Nischnekamsk aktiv. 1998 spielte er für den ERC Selb. Von 1998 bis 2000 zeigte er erneut sein Können beim EC Wilhelmshaven.

Sergei Jaschin arbeitet seit 2000 als Trainer; bis 2005 bei den Jadehaien Wilhelmshaven. Dabei gelang ihm mit der U20-Mannschaft der Jadehaie 2002 der Aufstieg in die Deutsche Nachwuchsliga. In der Saison 2005/06 trainierte er die Revierlöwen Oberhausen, die damals in der dritthöchsten deutschen Eishockeyliga, der Eishockey-Oberliga, aktiv waren. Von 2006 bis 2008 stand er an der Bande der Rostock Piranhas und erreichte mit diesen 2007 den Aufstieg in die Oberliga. Von 2008 bis 2010 trainierte er in den Niederlanden die Groningen Grizzlies. Ab 2010 war er Cheftrainer der Weserstars Bremen. Ab 2011 trainierte er zudem die Schülermannschaft des Bremer EC.

Seit 2015 war Jaschin Cheftrainer des neu gegründeten EC Wilhelmshaven-Sande, mit dem er zweimal in Folge aufstieg.

Erfolge und Auszeichnungen

 1980 Sowjetischer Vizemeister mit Dynamo Moskau
 1983 Spengler-Cup-Sieger mit Dynamo Moskau
 1985 Sowjetischer Vizemeister mit Dynamo Moskau
 1986 Sowjetischer Vizemeister mit Dynamo Moskau
 1987 Sowjetischer Vizemeister mit Dynamo Moskau
 1990 Sowjetischer Meister mit Dynamo Moskau

International

 1979 Bronzemedaille bei der U18-Junioren-Europameisterschaft
 1980 Goldmedaille bei der U18-Junioren-Europameisterschaft
 1981 Bronzemedaille bei der U20-Junioren-Weltmeisterschaft
 1985 Bronzemedaille bei der Weltmeisterschaft
 Goldmedaille bei der Europameisterschaft
 1986 Goldmedaille bei der Weltmeisterschaft
 Goldmedaille bei der Europameisterschaft
 1988 Goldmedaille bei den Olympischen Winterspielen
 1989 Goldmedaille bei der Weltmeisterschaft
 Goldmedaille bei der Europameisterschaft

Orden

 1988 Verdienter Meister des Sports der UdSSR
 1988 Ehrenzeichen der Sowjetunion

Karrierestatistik

Klub-Wettbewerbe

International

Weblinks

Einzelnachweise

Eishockeynationalspieler (Sowjetunion)
Eishockeynationalspieler (Russland)
Eishockeyspieler (HK Dynamo Moskau)
Eishockeyspieler (EC Wilhelmshaven)
Eishockeyspieler (Eisbären Berlin)
Eishockeyspieler (SKA Sankt Petersburg)
Eishockeyspieler (Neftechimik Nischnekamsk)
Eishockeyspieler (VER Selb)
Eishockeytrainer (Revierlöwen Oberhausen)
Olympiateilnehmer (Sowjetunion)
Teilnehmer der Olympischen Winterspiele 1988
Olympiasieger (Eishockey)
Weltmeister (Eishockey)
U18-Junioren-Europameister (Eishockey)
Sowjetischer Meister (Eishockey)
Träger des Ordens Zeichen der Ehre
Verdienter Meister des Sports der UdSSR und Russlands im Eishockey
Sportler (Pensa)
Sowjetbürger
Russe
Geboren 1962
Gestorben 2022
Mann

redpajama_set_name: RedPajamaWikipedia


text:
Russia's New Year effect cuts Chevrolet down a couple of notches
James R. Crate
General Motors Co.'s Chevrolet brand lost a little something in Russia last month. About 5,000 unit sales. And a crown.
After three consecutive years as the No. 1 foreign brand in Russia, Chevrolet fell to third place in January behind Kia and Renault as the annual New Year effect bit hard into sales. Russia's traditional, and protracted, New Year celebration inflicts a high cost on automakers each year as the country shuts down for up to two weeks.
Russians take as many days off as they can during the period and many businesses, including car dealerships, close.
Although the U.S. automaker was up 49 percent in January over a year earlier to 7,304 passenger vehicles, it was down 5,000 unit sales or 40 percent when compared with December, according to data supplied by the Association of European Businesses (AEB) in Russia.
Kia sales in January were essentially unchanged from December, allowing it to slip past Chevrolet by a mere 700 units. Renault was down 3,600 units from December, but still edged out Chevrolet by 510 units in January. Both Kia and Renault include light-commercial vehicles in their sales counts; Chevrolet does not.
The chance of upsetting the longtime sales leader seemed remote, even improbable, in December. Chevrolet finished the full year 12,000 units ahead of Kia and 16,000 units ahead of Renault, according to the AEB data. In December, the GM unit sold 12,552 cars, up 35 percent over a year earlier, while Kia's sales slipped 4 percent, to 7,690.
Overall sales up 72%
But for whatever reason, this year's holiday effect has hit automakers harder than in previous years. Although the headline number for January sales this year was "up 72 percent" for a gain of 53,560 units, the comparison is to a weak month a year earlier, when the turnaround in the global economy was just beginning.
When compared with one month earlier, December 2010, the market in January was down 37.6 percent, a loss of 77,000 units, according to AEB data.
In January 2010, sales were off 42 percent from the prior month, or by 54,135 units, according to AEB data. A year earlier, in January 2009, the holiday effect cost automakers just 42,810 cars and light commercial sales, a 27 percent decline from December 2008, the data show.
With the exception of Kia, every major automaker in the Russian market lost sales in January:
• Russia's own AvtoVAZ said sales of its Lada vehicles fell by 14,057 units or 28.3 percent from December, to 35,540, although the brand was up 105 percent over January of 2010.
• Renault was down 3,600 units or 31.5 percent from December, but gained 115 percent over January a year earlier.
• Ford sales plunged 68.4 percent from December, or 7,842 units, but were up 24 percent over January 2010. The automaker's Focus compact was bumped as best-selling foreign car in Russia and the No. 5 car overall by the Renault Logan, and fell to No. 9 overall.
• Hyundai lost 4,044 unit sales, a 43 percent month-to-month drop, but was up 5 percent over January a year earlier.
• Nissan dropped 3,473 units from the prior month, or 33.6 percent, but was up 147 percent over January 2010.
• Toyota lost 2,215 units, a 26 percent drop from December, but rose 89 percent year-on-year.
• VW was off 37 percent from December, or 2,512 units, but showed an 86 percent increase from January to January.
Despite the apparent loss of thousands of sales from the New Year effect this year, official and private forecasts assume they are temporary and likely to be quickly recovered—assuming the Russian economy continues to expand.
The AEB says the oil price-led economic recovery and the continuation of the government's scrapping incentives support its forecast for a 20 percent growth in the market this year, to about 2.24 million units. In a separate forecast, the Russian government said recently that it expects sales to rise 15 percent this year to about 2.19 million.
It is not clear if the government forecast counts LCV sales, as the AEB does.
"January of course is a short month with lower historical volume," David Thomas, head of Volvo Russia and chairman of the AEB's automotive committee, said in a statement. "But it's a good start to a year in which we've forecast close to 20 percent growth."


Dakota Gun Safe – Find Out the most recent home safes gallery and ideas especially some topics related to Dakota Gun Safe only at Home Safes Gallery and Ideas Website.
Just for your information, the Dakota Gun Safe images and pictures collection posted here was carefully selected and upload by Home Safes Gallery and Ideas Website Staff after carefully selecting the ones that are best among the others. So, here these list of fantastic images and pictures of Dakota Gun Safe as part of exclusive and special Home Safes Gallery and Ideas Website updates collection. Find the best Dakota Gun Safe images and pictures posted here for your information, inspiration, personal collection and personal use. The Home Safes Gallery and Ideas Website Team glad your here and hope that you enjoy your visit here and if you would like to get the pictures in high quality (HD Quality), simply just click the download link below the images gallery of Dakota Gun Safe.


The Research Computing Support Group at UTSA provides computing, data storage and visualization resources to support research that has specialized or highly intensive computation needs. Typical applications include statistics, data analysis, molecular modeling, scientific and engineering simulation and visualization. Available to the UTSA community at no cost.
Shamu is a centrally shared High Performance Compute (HPC) cluster used to run engineering, mathematic and research applications. Shamu has many different software applications available including: MATLAB, ParaView, VisIt, Visualization Toolkit (VTK), Octave, JAVA and Mathematica.
The UTSA Advanced Visualization Laboratory (VizLab), managed by the Office of Information Technology (OIT) Research Computing Support Group (RCSG), allows researchers from all disciplines of art, science, and engineering to conduct simulation and visualization research to better understand complex phenomena and translate data into images on large-scale and high-resolution visualization walls or other display devices.
The Lab is open to all faculty, students and the San Antonio community. Since its opening in 2011, the VizLab has hosted approximately 6,000 visitors including prominent citizens such as a US Senator, the President of Malawi, local industry partners, and many representatives from countries around the world.
VizLab showcase your research, presentations or photos onthe lab's visualization wall. Users can also use the VizWall for a teleconference or to showcase art.
Three tile nodes: Dell Precision workstations with dual 10 core Intel Xeonprocessors, 32 GB of RAM, and dual NVidia Quadro M2000 graphics cards.
Head node: Dell Precision workstation with dual 10 core Intel Xeon processorsand 32 GB of RAM.
Storage node: PowerEdge R530 server with dual 8 core Intel Xeon processors,64GB of RAM, and 8TB of fault tolerant storage.
UTSA has a dedicated, 3,558 square foot Research Data Center (RDC), custom built and designed for research technology equipment. The RDC is a raised floor data center and was opened in the summer of 2012. The main purpose of the RDC is to provide data center space for servers and data storage equipment utilized by researchers at UTSA. The primary section of the RDC consists of one outer staging area used for delivering and unpacking of equipment, one room to house a 180kW backup UPS, and an open area for colocation of research equipment. A second section is secured in a caged off area, only accessible through use of biometric readers. A final area is separated with a solid wall and is also only accessible through use of a biometric reader.
All power, data cabling, etc. is installed overhead and cooling is delivered via the raised floor plenum. The cooling system provides 31 tons of cooling capacity and is configured in a redundant fashion.
The RDC is connected directly to the UTSA backbone network, in a similar fashion as each physical building. A 40Gb/s Ethernet connection serves the RDC with a 1Gb/s Ethernet delivered out to each individual host system. 10Gb/s connectivity is delivered to five (5) separate physical areas in the room. The current network gear serving the RDC has the capability to provide 10Gb/s connectivity to other areas of the room with the simple addition of optical transceivers, additional fiber, and a top of rack Ethernet switch.
Through The University of Texas Research Cyberinfrastructure (UTRC) initiative, which was implemented in collaboration with the Texas Advanced Computing Center (TACC), researchers from across The University of Texas System are able to leverage a combination of advanced computational systems, large data storage resources, and high bandwidth data access between institutions. UT System researchers are provided with unique access to allocations on Lonestar, one of the world's most productive HPC resources that integrates shared memory nodes, GPU nodes, tools for high-throughput computing, and remote interactive visualization.
High-bandwidth network connectivity (10Gb/s) has been established between all UT System institutions (including UTSA and TACC), which enables the sharing of data for collaborative purposes, as well as the movement of data to/from computing and data systems. UTSysNet has deployed this high-bandwidth network capability (10Gb/s connection) and continues to work with institutions to best utilize the resource. Faculty receive 5 TB of free storage on the TACC Corral storage system, a storage and data management resource designed and optimized to support large-scale collections and a collaborative research environment.
UTSA is currently a full standing member of Internet2 and maintains a shared 10Gb/s link to other research institutions and universities connected to I2.
Contact us to schedule VizLab space for private research, class meetings, tours and workshops.
Visit the OIT website today to request a Shamu account.