What are the technologies that underpin scripting languages? [closed] - web

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I have to write a paper and the document given to me said the following:
"How the technologies that underpin the scripting languages and enable their integration with the Web server have changed and how they have improved the performance of Web applications".
I am somewhat lost. I can not really work out what i should write. So my question is how do you understand the sentence above given the fact that the paper in general is about the evolution of Server-Side technologies and Scripting languages? I was going to write about CGI (Common Gateway Interface) and ASP but i am not sure it is correct.
As this is my first post please forgive any mistake i did.

I'm not sure if StackOverflow is the best place for this question, but I'm going to answer it anyway. I'm not trying to give too many actual points for you to use here, but rather point you towards your own.
Deconstructing the Question
This question consists of two main parts:
How have the technologies underpinning scripting languages (and their integration with servers) changed,
How has this improved the performance of web applications.
From this, it seems that the point of the question is to identify the changes and trends in scripting languages and (possibly, from your description of the paper in general) server-side technologies, and how this has influenced web applications (and their performance).
To tackle this kind of question, there are several things I would do:
Define server-side technologies and scripting languages
Identify the recent changes between and within these two (i.e compare them with themselves and each other)
See how this has influenced web applications, referring to their performance.
Answering the Question
For all of the question points above, I would heavily suggest using examples. Examples provide real-world data (if possible) and evidence to support the arguments you are giving. For example: your examples of ASP and CGI are good, but I would also add PHP (and maybe Rails). And for scripting languages, JavaScript is the main player.
From examples, I would analyse the different uses of the two categories you defined - is there any overlap between scripting languages and server-side languages and how has this changed. Throughout this, the question suggests that the main emphasis is change.
Now for the final part: I suggest you define both web applications and performance (hint: there is more than one type of performance), again using examples. As said, the question emphasises change and so should your examples. For instance, Facebook mostly operates on the server-side, using PHP, whereas Netflix uses AngularJS and operates more on the client-side - time is a big component here: Facebook was released much earlier, but most websites not seem to be going Netflix's way - what does this say about server-side languages in general? Why has this happened? Has this improved web applications?
Throughout this, I would suggest using any data and resources that you can find: usage statistics always make for good graphs (e.g), but always cite properly and thoroughly if the content is not wholly yours.

Related

Confused in with real time web server choice [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I want to develop real time web application like chatting & real time message conversion. I searched the internet and got confused with few technology
erlang ejabberd nodejs openfire
Right now im in java domain but won't hesitate to learn new things. So can anyone explain what is these technology in a very simple words and what technology i will need to achieve my target ? Does all these do the same thing ? and new technology suggestion from your side will be appriciated.
These are entirely different things :)
At the lowest level you have:
Erlang/OTP is piece of technology, that lets you built low latency, fault tolerant systems. It includes Erlang programming language, Erlang VM and OTP, which is set of patterns, libraries and good practices for writing those systems.
nodejs is a platform, that lets you code JavaScript on server side. It makes your life a little bit easier, when dealing with events, but Erlang is still better saving you from callback hell with actors and messages between them.
At the higher level you have xmpp:
xmpp is eXtensible Messaging and Presence Protocol. This is great for implementing chats like facebook chat, but because it is extensible, you can use it for any kind of messaging.
ejabberd is implementation of xmpp in erlang. There is also fork of ejabberd called MongooseIM. Those will give you great start at developing your messaging application. They implement not only basic xmpp, but also couple of extensions (called xeps in xmpp community).
openfire is solution based on xmpp, so it is even higher level. For chatting and message conversion, this might be overkill, but it depends on your specific needs.
Totally an opinion post:
Erlang: Doing this from scratch with yaws and Erlang is the most straightforward way (its even a code sample in "Programming Erlang" 2nd ed.).
Ejabberd is famously undocumented (and overkill for most webchat services), but it and its better documented/saner cousin (MongooseIM) are robust and already written.
node.js is a cosmic joke played on monolingual ex-frontend web developers.
I've never heard of openfire.
None of these things are bad to learn -- but that's because nothing is ever bad to learn (though some things aren't worth the time you would spend learning them).
The basic problem, I think, is that your goal is probably more broad than you realize, at least in terms of methods by which you can achieve the goal of "develop a web-based chat and communication service". There are a hundred web servers out there, each with its own way of doing active content service, each with a hundred more back-end plugins to a thousand more chat/conversation/comments/blather service frameworks. Any given "technology stack" will often involve a dozen languages throughout it (consider service pages written in PHP from an Apache server which proxies to a Tomcat webserver for pluggable content which calls out to a tiny scheme chat service which stores data in Postgres...).
The situation with most web stacks is, in my opinion, laughable. That is at the core of the Node.js idea, actually: pick a language most people know and stick with it throughout. The problem there is that not every language is well suited to every task (or any task...). But the basic idea that cutting the web tech clutter down is quite sound.
That said, I sincerely think the easiest place to get started is with a relatively tiny language with a small, hyper-knowledgable community around it, and focus on doing everything you can in that language. For this particular task (live web comms) I prefer Erlang and Yaws, writing the service from scratch until some element of it obviously is in need of some pre-written framework treatment. (That is not the right choice of tools for everything, though, so keep an open mind and learn to hate every language, at least a little -- they all suck, just some less than others.)

Want to learn to create Dynamic sites [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 3 years ago.
Improve this question
I want to create dynamic sites.. Which language should I use - PHP/Python/Perl/Ruby ??
I wanna make search engines & social networks...
Thanks...
do also refer me tutorials...
If you want to make good, well-performing search engines and social network sites, you have a lot of work ahead of you and the choice of programming language is one of the least of your concerns. Use what you're comfortable with and what has the tooling to allow you to work efficiently. If you don't know any of the languages yet, I'd recommend looking at Python and Ruby first. They have good tools (Django, Rails), and have notable performance attention dedicated to them (and with Ruby, you can run on JRuby, where you can piggyback on all of Java's performance and deployment work).
However, there are a lot bigger problems you will need to solve than your programming language.
Server architecture - web server, database, caching, replication
Code architecture - use a framework, don't repeat yourself
Social design - how does your social network operate? What are the various actions and their meanings? #1 mistake is to just replicate Facebook's decisions without thinking about what the best decision is for your domain. What works for Facebook may well not work for you - you need to think through how the site will operate.1
Search indexing - if you're building a search engine, where does your index come from? Do you use a third-party index, or do you crawl and build your own? Building the crawler will also be a lot of hard work. You may need to drop to C or C++ for parts of the crawling and indexing system if you're working in any of the languages you mentioned.
Short story: there's a lot of things to think about, and in the greater scheme your choice of language among the ones you mentioned is largely immaterial. Pick what you're comfortable with and go with it. Expect to spend a lot of time learning. It sounds like you have limited programming experience - I would recommend picking some much smaller projects and trying to make them work. And follow the advice of smart programmers - teach yourself programming in ten years.
1I'd argue that their decisions don't really work for Facebook either, but that's another story.

Web Designer looking to learn back-end programming [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 8 years ago.
Improve this question
my name is Tabetha and I have a question...
I am a web designer, but I always find that while designing the layout and coding the design I come up with great ideas for websites. I would like to know where I need to start in order to learn back-end programming not only for the knowledge, but also for the challenge of it.
I have searched online but can't seem to find the information I am looking for. If anyone can give me a simple, straight-forward "this is what language you need to learn" answer, or perhaps guide me in the right direction I would appreciate it ten-fold.
I am a complete noob when it comes to this, so even the most basic information is probably a pearl of wisdom for me. :)
With this type of question you will never one simple, straight-forward answer :) Are you a Mac person? If so, you'll probably want to learn PHP or Ruby on Rails for server-side programming, along with MySQL for your database. These technologies are widely used on other operating systems, including Windows. The Apache web server and PHP is included in Mac OS X; Rails is easy to set up. Most hosting providers will offer cheap LAMP hosting packages (Linux, Apache, MySQL, PHP) (Google "LAMP tutorial")
If you're a PC person, you might want to learn about .NET (VB or C#), SQL Server and IIS. There are many similarities in the development practices between the different technologies, with MVC being the recommended design pattern. Understanding MVC is important.
There are many other "back-end" technologies, including JAVA, ColdFusion, etc, but PHP/MySQL is the most common.
You could also learn about server-side content management systems, like Drupal, Wordpress or Joomla to name a few. These systems take care of much of the low level data handling, leaving you to focus more on the content and appearance, while sacrificing some flexibility.
Good luck!
Just to add my two cents. Programming language is in reality not as important as having general knowledge of the principles. Look at it this way: knowing how to program is the same as knowing how to design. Programming language is then only a tool, like photoshop, that you can excel in, but it won't make you a designer by itself.
The concepts that are important for web back-end development and actually a must-know if you're in for a challenge, are object-oriented programming, separation of presentation and computational logic, database abstraction, networking protocols (http specifically).
Understanding these essentials will pay off greatly as compared to learning the quick-and-dirty ways of combining php with html.
PHP is probably the most commonly used backend end language, and will probably give the least problems when setting it up in a server. I would recommend using a Framework (at least to start), both for ease of use and security issues. For this I'd recommend the Zend Framework. There's a great tutorial for getting started here: http://www.survivethedeepend.com/.
I am a heavy advocate of .NET languages for beginners. The .NET framework is nice and easy to wrap your head around because Microsoft is great with documentation, tutorials, and giving a complete package.
As you already have knowledge of HTML I would look into ASP .NET or ASP .NET MVC. This website from Microsoft will take you from start to finish in developing a website in ASP .NET and ASP .NET MVC.
Once you start programming with Visual Studio you will see how easy Microsoft makes it for you.
To get you started with backend development, i would suggest u learn how a database (db) works and the various database management systems (DBMS), particularly relational DBMS (RDBMS) such as MySQL, SQL server, oracle, postGRESQL, Microsoft Access, etc. You will come 2 know that most DBMS allow u to communicate with them and issues commands to them by speaking to them a language called Structured Query Language (SQL). So u will need to invest some time to learn the basics of speaking the SQL language to create a database, store new data or modify existing data, fetch data from the db, or even delete data that is no longer needed from your db. In particular i suggest u learn how MySQL works and issuing commands to MySQL since it is the most widely used DBMS in most web projects. Then, you will need to spend some time to learn about computer programming (issuing instructions to computer) and programming languages (the languages used for writing the instructions). You can zero down to learning how to speak a particular computer language such as PHP. The reason u have to learn how programming languages work is that u will need to speak a computer language (programming language) to write the logic for interacting with your database (e.g verifying that some conditions hold true before certain data can be fetched). I suggest u start by learning the PHP language as your backend programming language, since it is the most widely used in web projects. In the programming langnuage u have chosen to learn (e.g php), find out how to issue SQL commands to a RDBMS from that language. In summary, i recommend you learn the combination of PHP and MySQL since this combination is the most widely used for backend web development. But once u get a grasp of how things really work, you can always switch to whatever combination of technologies works best for your particular project. I hope this helps.

If you had to redo a site that has 150 tables and 250,000 visitors/day in any web platform, what would it be? [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 3 years ago.
Improve this question
If you had to redo a site that has around 150 tables and 250,000+ visitors/day in any web platform, what would your choice be and why?
Some points
The team has experienced developers
The old application is written in unrefactored PHP. It's unusable.
Much of the database is not normalized, and there are columns in the wrong spots. Many new features and the database can't support them now.
Desired goals:
Excellent and fast testing (grails is bad for this)
Good seperation of concerns (domain, controllers, views) with ability to not duplicate anything
Concise code & Elegant design - no code bloat
Flexible - we don't want to run into a leaky abstraction problem
Coding and testing are fast - it shouldn't take 1 hour to write a controller test, or we shouldn't have to spend more than 1 minute or so writing a reusable tag, for example.
Scala is on our minds, but we are having a hard time seeing how that can work as the tooling is not mature yet. We actually don't like Grails. A lot of us are used to Java/Spring/Hibernate, but are sick of the low-level nature of it and want something more expressive.
I would put together a detailed study group to analyze our choices, and see what we can use, and how it scales up to the load and tasks it must stand up to. After that, pick out like the top 5 choices for closer inspection, and see what floats with the team. Personally, I've come to like RoR over PHP.
Depending on the status of the old/current project, make sure everything is backed up and version controlled before it gets touched. Some people leave half their project un-vcs'd, or use none at all!
This is a pretty unanswerable question, because there a large number of factors that need to be taken into consideration which you haven't mentioned. For example, what are the skill sets of the developers who will be rewriting it? How is it currently implemented? Can existing code be reused? What are the performance requirements?
If it was my decision, I would choose Groovy/Grails because:
I like Groovy/Grails and know these technologies well
Offers good performance as it's built mostly on Java and mature Java libraries like Spring and Hibernate
Update
Excellent and fast testing (grails is bad for this)
I am not aware of any web framework that puts more effort into testability into Grails. It makes testing all types of artifacts (controllers, domains, services, tag libraries) very straightforward.
We actually don't like Grails
If you already know Java, Spring, and Hibernate, I find it very hard to understand why you don't like Grails.
good old php / mysql / apache on a linux environment is the most stable I've seen .I'm working since 3 year on a Asp.Net / SQL Server / IIS / Windows and only SQL server is stable, but it's really expensive so if you don't know really where you're going (about money), you better have to take care of this parameter.
And on an open environment you'll find more help, I think.

Is there a good service for checking website/server vulnerability [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 1 year ago.
Improve this question
I have been asked to provide information on available techniques for assessing our current, and any future websites for security problems. the request is in the form of
Do you know of any good free one that examines for security holes?
I think our data security is probably worth a small amount of upfront spend so any non-free methods would be appreciated too.
Our systems are a mish mash of mySQL, Oracle, SQLServer, PHP, ASP.NET etc etc systems though I guess that that does not matter too much. All the systems are secured in as much as they are patched and the firewalls are set sensibly so outside people cannot get directly to the database boxes etc.
It is XSS and similar attacks that we wish to prevent.
What do YOU use to give you confidence in your systems? ');DROP TABLE answer;
owasp would be a good place to start. There's too much to cover to include here.
If the security of your site is worth nothing to your company then that's what you should pay. For my company the security of our data and the brand image has quite a high value.
We pay a whole bunch of money for regular scans, we've trained the developers in basic hacking/security of applications, our code reviews include a security review and now we're looking at AppScan from IBM (which is expensive but in the long run probably cheaper than all the pen' testing we pay for).
You get what you pay for. Making sure you understand the owasp issues would be a good start though.
Personally, I choose not to be confident in the security of our systems. I am convinced there is always something that I am missing and thus I keep looking for it.
What you seem to be looking for is something to make others feel confident (even if that confidence is an illusion). Penetration testing is probably the right choice for that. Depending upon the tool, it shows potential vunerabilities in a nice report and then you can report how you mitigated them.
We use IBM AppScan and it is a good tool for this. As with any tester of this type you will find yourself following a lot of bad leads. Most of them are not false postives per se, more just things that might be an issue or appear to be and you will have to investigate and determine if they actually are.
I would not put a lot of faith in this kind of testing. If you app scans clean it really does not mean your app is clean. Does not mean it is worthless, but don't make it out to be more than it is.
The next thing I would look into is static analysis tools in your various languages. A lot of these are free. Hand in hand with that is developer education. That is usually a pretty cheap solution to the issue, just making sure they understand what the risks are.
There is no silver bullet, no simple answer, you need to define security as an EVERYONE problem and make sure it is given both priority and commitment.
Check out dotDefender - they've got versions for IIS/Apache/ISA. I use this app to protect against SQL Injection/XSS/DDOS/probing/encoding attacks. No piece of software will ever be perfect but in my case I run systems with sites being developed in .NET, PHP, and classic ASP with some of our sites being new and others being 5+ years old.
http://www.applicure.com/?page=dotDefender
I do also have a company do penetration testing / social engineering every year or so as well but with dotDefender I'm at least happy that I've got a baseline security blanket to protect my sites.
Of particular interest to me was that their app is fully x64 compatible - necessary since I'm using x64 web servers.

Resources