What's a good browser-based terminal emulator? [closed] - terminal

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
We have several curses style applications which we'd like to provide access to through a browser-based interface.
We have an application from another vendor which ostensibly provides this based on an old version of the JTA (Java Telnet App) but that applet doesn't handle things like resizing well, and has relatively poor support for scroll-back buffers and copy/paste.
In this day of Ajax-based interfaces, I'm curious if there are any good, free solutions.
Thanks to this web site, I saw references to Reflection's web-based terminal emulator,
but that's probably too expensive for our needs.
Some of the potential candidates I've seen include
anyterm
ajaxterm
No scrollback bar
but I haven't had a chance to do a detailed evaluation.

I use Ajaxterm frequently as a handy way to administer a web server from anywhere. It worked well for me until I switched to Chrome as my primary browser. Ajaxterm works great with Firefox and IE8, but is unusable with Chrome, Safari and Opera.
I found that on Chrome, Safari and Opera, many ‘special’ keys don’t get passed through to Ajaxterm, including backspace, the arrow keys, ctrl+c, ctrl+h, home, end, etc. Opera is even worse: when you press shift, the keypress gets translated into ^P, so you can’t type capitals. These things are showstoppers for me; they are probably showstoppers for you too.
Anyterm worked fine for me in all browsers I tried, including IE6.
Other things to bear in mind:
Anyterm keeps a connection open constantly while it is running, and uses a second connection for keypresses. All browsers have a limit on the number of concurrent connections to a single host. IE 7 and below have a limit of two concurrent connections (as required by the HTTP spec), so a single instance of Anyterm could max out connections to that host much of the time. However this is reasonably easy to work round by simply using a separate hostname for Anyterm.
Ajaxterm polls for updates, so it does not keep a connection open constantly. It uses the same connection for keypresses and screen updates. On the other hand the screen does not always update as soon as it could, and the network overhead per screen update is greater.
Ajaxterm updates the whole screen in one go, even to change a single character. Anyterm updates only the portion of the screen that has changed. It is debatable which is faster; a whole screen can usually fit in a single packet anyway, and Anyterm’s approach has greater processing overhead, both on the server and client side.
Note: My comments on Ajaxterm are based on Ajaxterm 0.10. I haven’t tried 0.11, which apparently includes ‘minor patches’. My comments on Anyterm are based on the demos available on their site. I haven’t actually used it in anger.

I tried https://github.com/chjj/tty.js/ today and it works well, you can have a try.

Wondering how come nobody mentioned about http://shellinabox.com . I evaluated shellinabox & ajaxterm. Shellinabox is faster than ajaxterm (I do not know the internal details). Also, shellinabox can login a user without needing to give the user explicit ssh access (not sure if it is a great plus).
Shellinabox has issues running inside an iframe though. But if you are looking to run something standalone to access your server, guess shellinabox is the best bet.
I have been running Rails Tutorial site for sometime now. I eventually deployed Gateone - https://github.com/liftoff/GateOne‎ but it had quite a few issues with browser + OS combinations. Finally we created our own pseudo terminal (it does not support vim etc). Check https://github.com/pocha/terminal-codelearn .

Related

It's 2018 and I start to care about Internet Explorer 5.5

I don't know if I should ask this here, but I really need your opinion.
I read and read many online articles about why you should don't care about old Internet Explorer versions (because it is really outdated and insecure etc). I have taken seriously all those articles and I started to don't care about Internet Explorer <= 11 when I redesigned and re-launched my websites.
Now, it's 2018 and I need to re-design my websites and add new features (because I got a lot of user feedback, and I have a lot of exciting ideas). And because I start it from the beginning I want to think again about this. I analyzed my stats and I'm still getting hits from IE8, IE7, IE6 and... IE5.5 (Windows 98 & ME)!
I know these versions are really outdated, insecure, but there are some people using old versions and old operating systems. I know I shouldn't care about these versions, but I really care about my visitors and their experience on my website (maybe there are people who live in the mountains or in poor villages, and they have a dial-up connection - why not?).
If there are such kind of persons, then:
Is there any reason why should I not create my new website to work even in Internet Explorer 5.5?
Why should I not care about webpage size, to be loaded fast even on dial-up or low broadband (Cable, GPRS etc)?
Thank you!
I think it's not generally a bad idea to consider IE when creating a new website, but there are some aspects you must consider.
You should do extra work to support IE, which includes more time and effort in the development. So you must ask yourself, is it really worth it?
Also you might ignore a lot of new APIs and features of JavaScript and CSS, to support older versions of IE. So you are probably affecting user experience of a large amount of your users, for a small section of them which are using IE.
Or you might use some libraries to detect browser support for certain features or using conditional comments (again, extra work to do).
Another solution might be to show a specific page to the IE users and encourage them to use a newer browser, which probably has no effect to a person who is still using IE5 in 2018!
Generally I think there is no complete answer to this question. It really depends on the goal, time and budget of the project.

Measuring Web Application Performance (Stress-Testing) and Bandwidth Requirements [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I am in the process of measuring the bandwidth requirements and how a Web application behaves in terms of response time and memory requirements when the number of users is increased.
Is there a particular good tool that can help us here? I believe JMeter is the standard tool. But are there other tools considering that the site is IE only.
Your answer is extremely appreciated.
Well, the question is how do you want to profile? Do you want to simulate real-world activity? Or do you just want to bombard the heck out of the site?
Load Testing Individual Pages
I don't think you can go wrong with using Apache Bench (ab). It's dirt simple to use, and can really stress your application. My typical usage is:
ab -c 10 -n 1000 http://www.example.com/path/to/page
The -c parameter is the number of simultaneous requests to issue. I would suggest starting low (like 5 to 10) and working your way up. Watch the output for failed requests and falling response rate. You're limited to about 1000 connections on most linux machines, so don't go too crazy.
The -n parameter is how many requests to issue. I would suggest doing at least 100 times the number of concurent requests to get a good average...
Another great use for apache bench is to benchmark individual database queries. Just create a simple script that runs the query, and load away. This can be a really good way to detect fast but expensive queries that will take your server down in production yet seem fine in testing.
Load Testing The Whole Application
I've had good luck with WebLoad. There's an Open Source version if you don't have a good budget that will get you started. But I'd suggest springing for the pro version. With it, you can setup a distributed test environment (as simple as installing the client on every machine in the office, as complex as spinning up a bunch of VMs for it).
The cool thing, is that you can program it in javascript. So you can tell it to take random click paths through the site with random delays. This should simulate a user far better than you could do manually. Then, once you have it setup, push the tests to the distributed engine and hit go.
It supports many different load profiles (stair-step where it adds load little by little for the duration of the test, etc). So you can simulate a slashdot-effect profile, normal day-to-day usage, etc.
The reports it generates are immensely useful. It shows you the slow urls, where the bottlenecks are, etc.
There are plenty of other test platforms and systems out there. This was just one that I found that I felt worked pretty well at the time (I did a comparison about 2 to 3 years ago). I am not affiliated with the company in any way.
Load Testing parts of the application
This is a really useful technique called profiling. The how to and tools are fairly language specific, so I won't go into too much detail here (since you don't have a language tag on your question). But the point is that once you find a slow page, you'll need to profile it to figure out what's slowing it down. Then fix the low hanging fruit (the parts that are the slowest). Then re-test to see if you made a difference or not...
Conclusion
Since it's almost impossible to simulate real-world load, this is really more of an art than a science. Have at it, and have fun. Don't take the results to seriously though, even with the best testing, you're likely to miss something... So I wouldn't take them as gospel and go telling the CEO that you tested that it's capable of 100k concurent users. Since when the day it crashes happens (and if you are lucky it will crash), he will blame you since you told him it would work...
Just a thought, you say IE only so is it hosted on IIS? if so then you might want to look at Microsft's WCAT (Web Capacity Analysis Tool), more information is available here:
http://support.microsoft.com/kb/231282
Although it isn't open source but it is free - do you need the source.

Headless, scriptable Firefox/Webkit on linux? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I'm looking to automate some web interactions, namely periodic download of files from a secure website. This basically involves entering my username/password and navigating to the appropriate URL.
I tried simple scripting in Python, followed by more sophisticated scripting, only to discover this particular website is using some obnoxious javascript and flash based mechanism for login, rendering my methods useless.
I then tried HTMLUnit, but that doesn't seem to want to work either. I suspect use of Flash is the issue.
I don't really want to think about it any more, so I'm leaning towards scripting an actual browser to log in and grab the file I need.
Requirements are:
Run on linux server (ie. no X running). If I really need to have X I can make that happen, but I won't be happy.
Be reliable. I want to start this thing and never think about it again.
Be scriptable. Nothing too sophisticated, but I should be able to tell the browser the various steps to take and pages to visit.
Are there any good toolkits for a headless, X-less scriptable browser? Have you tried something like this and if so do you have any words of wisdom?
What about phantomjs?
I did related task with IE embedded browser (although it was gui application with hidden browser component panel). Actually you can take any layout engine and cut output logic. Navigation is should be done via firing script-like events.
You can use Crowbar. It is headless version of firefox (Gecko engine). It turns browser into RESTful server that can accept requests ("fetch url"). So it parse html, represent it as DOM, wait defined delay for all script performed.
It works on linux. I suppose you can easily extend it for your goal using JS and rich XULrunner abilities.
Have you tried Selenium? It will allow you to record a usage scenario, using an extension for Firefox, which can later be played back using a number of different methods.
Edit: I just realized this was a very late response. :)
Have a look at WebKitDriver. The project includes headless implementation of WebKit.
I don't know how to do flash interactions (and am also interested), but for html/javascript you can use Chickenfoot.
And to get a headless + scriptable browser working on Linux you can use the Qt webkit library. Here is an example use.
To accomplish this, I just write Chrome extensions that post to CouchDBs (example and its Futon). Add the Couch to the permissions in the manifest to allow cross-domain XHRs.
(I arrived at this thread in search of a headless alternative to what I've been doing; having found this thread, I'm going to try Crowbar at some point.)
Also, considering the bizarre characteristics of this website, I can't help wondering whether you can exploit some security hole to get around the Flash and Javascript.

great first run experience [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
Does anyone have good examples of software that has a fantastic first run experience? Some software obviously just works "out of the box". However, there is significant software that requires some configuration before it's usable.
Any examples would be much appreciated.
Cheers,
Yi
I was very impressed by Opera the first time I tried it; within a week I switched from Firefox. It comes with a lot of features such as an IRC and Bittorrent client, which is important to me at school, where there is a quota of 50 megs on disk space! Most of Opera's features are eventually available/copied to Firefox as plugins, but I still prefer Opera at home because the text looks better.
Time Machine for Mac OS X 10.5. If you have a Time Capsule, all you do is flick a switch in a control panel to turn it on. When you need a backed-up file you can visually go back to a point in time when you knew it existed. You can browse your hard drive (or just the directories that were backed up at that point in time) as it was in the past to retrieve it, and when you do, you can see it being copied to the present time. Gimmicky, but now I love deleting files just so I can restore them later.
Basecamp has an incredible out-of-the-box experience. This is a result of keeping things extremely simple, having a hosted solution (no install/setup) and also brief but noticeable welcome messages explaining how to get things started.
Some other examples of things that work the first time and work perfectly as soon as you start using them would be TripIt, FogBugz and BlinkSale.
How about the iPhone? Almost all Apple product are shipped with minimal manuals.
Most things from Google are good in that regard. Firefox is alright, as is OpenOffice (albeit a bit slow, but can be tweaked).
I don't think it's possible to answer this question in absolute terms. What's a fantastic "out of the box"/"first run" experience depends on what's the expectation of the person running it. If the product meets or especially exceeds that expectation, that's a great experience.
Here's a simple example. I consider Google Chrome browser to be a great first run experience because it is simple, installs nicely, and is super fast. For some others (especially many reading stackoverflow.com), it might be flawed because their expectation is that Chrome can also seamlessly import their Firefox or whatever other plugins, which was not part of Chrome's original features. So for them, it would not be a great experience because they were expecting something that wasn't there.
Apple, iPod and iTunes are other classic examples. Many people (myself included) consider finding and buying music from iTunes a great easy experience. Many others find it appalling because until recently, the music wasn't (and some of it still isn't) DRM-free.
OS X, Parallels
Windows 7, Vista (somewhat controversial I suspect)
I would say Ubuntu has a good OOB experience. It was a very simple to get installed and running. I've never bothered with the Live CD but I hear that's also great and it's fantastic how that allows you to try Ubuntu without actually having to install it.

Developing for multiple monitors [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 4 years ago.
Improve this question
We are currently working on a new version of our main application. one thing that I really wish to work on is providing support for multiple monitors. Increasingly, our target users are adding second screens to their desktops and I think our product could leverage this extra space to improve user performance.
Our application is a financial package that supports leasing and fleet companies - a very specialised market. That being said, I am sure that many people with multiple monitors have a favourite bit of software that they think would be improved if it supported those extra screens better.
I'm looking for some opinions on those niggles that you have with current software, and how you think they could be improved to support multi-monitor setups. My aim is to then review these and decide how I can implement them and, hopefully, provide an even better environment for my users.
Your help is appreciated.
Thankyou.
Few random tips:
If multiple windows can be open at one time, allow users to have them on separate screens. Seems obvious, but some very popular apps (e.g. Visual Studio) fail miserably at this.
Remember the position of the last opened window, and open new windows on the same screen as before. However, sometimes users switch between multiple and single-display (e.g. docking a laptop with an external CRT), so watch cover this case as well.
Consider how your particular users work, and how having two maximized windows simultaneously might help. Often, there is a (fairly passive) window for reference (e.g. a web browser/help) and an active window for data entry (e.g. editor/database) that users switch between.
Do not put toolboxes/toolbars on a different window than objects they operate on (it's inconvenient to move the mouse so far).
Apple's Human Interface Guidelines for the Mac have covered window management on multiple displays since 1987, when the Mac II was introduced with six slots that could all contain a graphics card. The guidelines offer a few good guidelines that you might not think of at first when implementing multiple window support. For example, if a window spans multiple displays, which display should new windows be opened on? There's an answer around Figure 14-33 in the chapter dealing with Window behavior.
Microsoft may have something similar now for Windows developers to follow; if that's the case, check it out and follow their guidelines since you don't want to behave differently than the other apps on the system (or that your users are used to) for no good reason. However, if there are no guidelines, follow Apple's as they're fairly well thought-through and were originally developed through experimentation and research.
Please Please Please. If you remember window positions for multiple monitors. Please detect if the second monitor is connected. I have a laptop that is sometimes docked. It is very annoying when I try to open a window and it opens off screen.
It's annoying when I drag a window to another monitor, and then if the application generates a popup dialog, or spawns another window, if that popup/dialog gets displayed back on the primary monitor.
I haven't developed for multi-monitors, but I think this can be better handled if you position child windows/dialogs centered on their parent window, rather than on the desktop center (which I'm guessing is what happens in the case I describe above).
I'm going to have to a give a nod in dbkk's direction as they captured a couple of the major points that you need to remember.
Also, I would suggestion paying attention to how you use dual monitors and try to keep that in mind as you are developing. Generally you should try to avoid doing the things that applications you work do that annoy you. Also, don't assume that just because the user has dual monitors that they are going to want to work with your application on dual monitors.
The biggest thing that I would stress is keeping track of where the focus is in the application and making sure that any pop-ups occur within that region, one of the things that people seem to dislike the most is having a window pop-up in a different window then the one they are working on.
Definitely keep dialogs near where you clicked to bring them up. Remember what monitor the window is on between sessions. Be aware that if they have less monitors than the last time your app was run that you need to bring the windows back to a visible area. Provide an icon or button to switch monitors. Depending on the type of app it may be useful to be able to easily tile your app's windows on a monitor or on all.
One thing to keep in mind is that the user may have more than two monitors. My main system has six monitors, and I've run 4+ monitors on Linux, Windows, and Mac OS. Many applications--even multi-monitor utilities--will support 2 monitors but freak out over more than 2.
Applications work best when they know about where their windows are and relate to the locations of those windows. And as someone else mentioned, if you're going to remember where a window was, make sure that geometry still makes sense when the user comes back.
If the OS/window system dispatches an event related to the change of screen geometry, handle it if you're doing anything funky.
I think most applications that are well coded generally work these days.

Resources