What platform should you use to build your first web application? - language-agnostic

I'm deciding between LAMP and Google App Engine with Python. Mainly this is an educational experience so I'm weighing the potential ease/quickness of developing on App Engine against the value in learning LAMP from the get go (and not being locked into the App Engine way of doing things

It depends on where you come from. If you're already familiar with either PHP or Python, I'd let my choice depend on that.
If you're starting from scratch, there's a few things to consider :
PHP (if you consider the P in LAMP to be that) has the advantage that there is a huge amount of web applications/sites out there that use it. If you're aim is to be able to modify or contribute to lots of other webapps, I think you should go with PHP. On the other hand PHP is easy to mess up and it is hard to cleanly seperate webdesign and code. PHP has no real application outside of web development that I am aware of (I may be wrong).
Python is a real sweet language with a clean syntax and a lot of (third party) libraries. Python has lots of applications outside of web development.
Google App Engine allows for a clean MVC approach in conjunction with Django (among others). A MVC approach allows to cleanly seperate HTML/CSS/Javascript layout stuff and Python Code.
If you master GAE/Python, it's a small step to go to Django, running on (Linux|Windows)/(Apache|Ningx)/(MySQL|several OtherDB's).

Related

SpringBoot-MySQL or ExpressJS-MongoDB which one is best for building rest API of online BookStore?

How are you all? I'm a beginner with the web programming. I am planning to develop my personal e-commerce Bookstore for myself. I've basic knowledge of ReactJS, ExpressJS, Spring MVC, MongoDB, and Mysql. I've already done some basic project in ReactJS, Spring MVC-MySQL and Express-MongoDB like Personal Diary, Cost management system, School management system etc. My future plan is to build a native mobile app for this Bookstore. I am a little bit confused to select the language and framework. I've some question and need experts opinion and suggestion like you.
ReactJS or NextJS(Server Side Rendering), which one will best for the frontend of this Bookstore?
Do I have any possibility to face any problem in SEO in the SPA?
Which Framework and Database will best for building the backend for better performance and lower hosting cost?
By using that backend service, can I use the same API endpoint to build a native app?
Any alternative technology to develop the bookstore?
Thank you all in advance.
-ReactJS has a vibrant and big community, so you would find plenty of support
-As far as i understand type of language for the front-end or SPA's shouldn't affect your SEO
-Java is rock solid, battle tested whereas NodeJs is new and a lot of experiments still going around it. Although it is claimed to be faster and easier to work with.
-Cost ? the cheapest would be PHP Apache shared hosting. Java and or JavaScript will both cost almost the same on platforms like heroku or digital ocean.
-Yes you should be able to build native apps using the same endpoints.
-With what you know do not look for alternate technologies. (What you have is more than enough)
-Moral of the story - If you are alone doing everything, JavaScript can save you a lot of time and effort. (Building web-apps, hybrid mobiles apps and server side APIs, all using JavaScript), however if you choose Java for server side, that knowledge may help you build a native android app and then you will need to learn Swift for a native IOS app and JavaScript anyway for web apps.
Everything boils down to what you are doing and how you are doing it.
All the best!

JSP / HTML UI Design

We have some JSP code to run in our pages.
There is a UI designer who will constantly update the UI but does not have Tomcat server. We prefer he doesn't because he isn't a programmer.
However, it is getting annoying to have to cut and paste the JSP related code each time he updates the UI.
Is there anyway to handle this issue? We prefer to keep the same files, but still have it so he can see his UI work without worrying about the JSP and when he checks in the new files, we don't have to cut and paste our JSP related code.
One example of such code, is that there are certain navigation menu items which are displayed depending on the user.
We are using Tomcat authentication. We could I suppose use AJAX to obtain the user information, but is that less secure? Everything else in the application is AJAX.
The problem here is that this person is not working with the team. Rather, he's creating work for them... and it goes both ways. Read on.
I both do and manage front end development. If this UI person was on my team, I would force him to set up a Tomcat server. He just needs to learn some things.
In effect, when implemented properly, JSP is not much different from any other server-side markup language for views, such as Rails + ERB, PHP, .NET etc... even Javascript templating engines (mustache, handlebars, etc.). The same condition checks, for-loops, auth checks - all basic view-layer logic that is needed is available and usable.
If he's on a Java project / team, he needs to learn the Java front-end. It's that simple.
His main tasks should be basic, and frankly, he shouldn't even need to install a Java IDE to do them. They are:
Get/push source code + analyze diffs (any source control client)
Build / deploy latest to his local environment (scripts or .bat files)
Work on the running app*
(*) The last part is where things get tricky. If you work directly on the running server and then accidentally run a fresh deploy before copying over your updates, you're screwed. If you use symlinks (which are also available in Windows), there may be files that only appear post-compilation, or locks, or sync issues when getting latest code - all creating problems.
The way I have found that works best is to work on the code repo location (pre-build), and create two scripts:
Build+deploy - stops running server, blows out directories and caches, builds latest, and redploys
Update - Synchronizes the View files and any other necessary directories with the deployment target. You must be sure to disable hot-deploy in the Tomcat config, or you'll get memory leak errors.
That said, and it should be obvious by now: Java is one of the most difficult ecosystems to develop UI's for. The compiled nature and complex environment requirements make development slow and tedious, with significant dependencies on different people or systems to make a decent product.
JSP itself, while capable as described above, is almost always organized badly, with various ways of includes, tagfiles, partials, frameworks - it becomes a UI person's worst nightmare. GSP (from Grails) solves a lot of the organizational issues, but will require flexibility from the dev team. Even then it is not an "ideal" solution.
JSP syntax - JSTL, C:tags, etc. creates even greater headaches. Front-end people who do not program, don't use IDE's and therefore don't have a way of looking up methods, objects, parameters etc. when writing or customizing conditional logic or loops. The dev team can help by pre-writing these out on the page, but any time there are changes or enhancements needed, it requires meetings, conversations, and compromise.
In the long run, you should abstract the Java app from a separate, more flexible, more capable front-end technology stack, using REST / JSON-based services to talk between the two. (Side note: For performance / apps with scale, ensure you are using either a custom protocol or Web Sockets).
My preference is node.js, because front-end developers can stick with the language they will know best: Javascript / JSON. But it could be anything that your particular front-enders are comfortable with and can do design with.
The key is to eliminate bottlenecks on both front-end and back end. Both tracks should be able to develop and iterate quickly, with the RESTFUL API being the key point of collaboration.
Lastly, for those of you who are aspiring front-end developers / designers but only know Java (or some other server-side technology), I CHALLENGE YOU to learn something new. User-facing technologies are in a constant state of change, and more recently that change has accelerated. If you want to have UI-competitive products, you need to invest in technologies that will make them competitive.

Rails or node.js for Restful API

I have an existing website written in ASP.net, I have recently switched to Mac full time (With Windows in Boot Camp), and need to write a public API for accessing my website's MySQL data. I primarily want to use the API to allow building an iOS application.
I am interested in learning either Ruby on Rails or Node.js, I haven't used either of them yet.
Which language would be better for me to learn?
Rails is a relatively mature web framework based in Ruby and is designed for handling object-mapped data persistence in a relational database backend.
Node.js is much newer on the scene, and unlike Rails, is a more bare-bones package that allows for server-side Javascript applications thanks to a pretty tight HTTP(S) API. Node applications are by nature event-driven, which may or may not be ideal for your application.
Since it seems that you'll need data-persistence (you mentioned accessing MySQL data...), Rails might be easier to get started with, as it comes packaged with all the things you need in this respect and is designed to facilitate this sort of application.
If you you don't really need relational data persistence, Node is probably a better bet as it stays out of your way and lets you decide how to handle things. It's important to note that Node is a much more bare-bones "framework" than Rails -- if you want something slightly higher-level but still lighter than Rails that runs on Node, express is good place to start.
Still, if you want to try Node (I will confess: it's a lot of fun!), it's totally possible to access MySQL in a nice, event-driven (non-blocking) way. Here are two modules that will be helpful:
node-dbslayer
node-mysql
Neither is a language; they're frameworks. There is no "better", there may be a "more suitable" (probably not in this case).
Which would you prefer to develop in, Ruby (Rails), or JavaScript (node.js)?
Would you like to transfer that knowledge to a different job without rampup time (Rails)?
Would you like to learn something a bit more esoteric, event-driven (node.js)? (Ruby has Event Machine, but IMO node.js takes it a bit further.)
So this new application is just a middle man between your ASP.NET thing and your other clients.
In that case, totally use node. Node is great at being networking glue. Node scales great with IO bound applications (i.e. being a network middleman).
If you're going to use node then you probably want to look at express to make it easier.

Which technologies are commonly used by developers to quickly build websites?

I'm an experienced C/C++/C#/Objective-C desktop,web, and mobile programmer and I've become accustomed to building most of my software from scratch. I've built all my websites from the ground up using ASP.NET. I have quite a few ideas for websites that I'd like to test and I'd like to increase the rate at which I can actually build a website. I'm sure I'm unaware of many of the technologies that are commonly used for building out ideas quickly. About a year back, I looked into using the popular CMS called Drupal to see if it would help me speed up development. After two weeks of trying to decipher the structure of the Drupal CMS, along with trying to learn PHP, I found the learning curve to be steep enough to convince me that it would just be faster if I built my website yet again from scratch using ASP.NET MVC. I'm wondering if anyone could suggest any other technologies that are designed for programmers to build websites quicker than my current method of building them from scratch using ASP.NET MVC.
Secondly, I've been hearing many entrepreneurs mention Ruby on Rails is what they use to speed up the development of their ideas, so I'm planning to investigate it. Why do I hear more about Ruby on Rails than any other technology? Would you suggest using it to speed up development?
Thanks in advance for all your wisdom!
I've tried out Ruby on Rails, Django (the Python equivalent of Ruby on Rails) and Drupal. Drupal is nice if you're just acting as a sysadmin: install the modules you want and use it as-is. But PHP as a programming language is so annoying that I'd hate to use it for something serious.
Django has some odd quirks but seems to work well. From an MVC perspective, Django calls views "templates" and calls controllers "views", which is ugly. Also, instead of generating default URL -> controller/action mappings for you the way that Rails does, Django set up routing files by hand before things work. You also have to set up some DJANGO environment variables if you want to run other helper Python code with access to your model objects. Rails also creates and configures a sqlite database by default so that you can start right away, but with Django you have to set it up yourself.
Rails seems to "just work" in so many ways that I highly recommend it. Ruby is also a pleasant language to work in. Try the simple startup to see what I mean:
rails foo # Create the foo webapp
cd foo
script/server
Then browse to http://localhost:3000 to try things out. That page will give you some info about your webapp and point you to the next steps.
Use an ORM for the data layer. That will increase the speed.
Also reuse common code elements from your previous projects.
And still, for any more or less different site you would need to do some work. Cannot avoid that. ASP.NET MVC is quite powerful tool, especially because it's backed up by the rich .NET class library. At least this framework doesn't build you obstacles at any step along the way, which is quite an accomplishment.
Django is a framework for database-driven web pages in Python.
I agree with your assessment. I was rather proficient in C/C++/C# and never built a website before. I looked at a couple of things, but when I started working with ASP.NET MVC2, I loved it. Another method/architecture I like but haven't messed too much with is WPF. If you download Microsoft Expression Blend 4 there's a 60 day trial and it's really nice. A lot of clicking and less typing. :) Hope this helps.
I toyed with the Zend PHP Framework a bit, and found it to be pretty good. You mentioned that the learning curve for Drupal/PHP didn't make it worthwhile to pursue, but if you retained any of the PHP you learned from that, this might go a bit quicker. To read more you can check out "10 Compelling Reasons to Use Zend Framework". Zend might not exactly be "configure and you're done," but since I usually work with Enterprise Java, I found it pretty reasonable in the speed-to-set-up department.

Language for web site development C++ or php?

I want to develop a forum like web site. I know C, C++ well but I havent used in web development.I know PHP little bit. Which language should i use?
C++ can and has been used to successfully develop highly scalable web applications. That said, one of the main reasons C++ is not so popular in this category is to do with the lack of standard tools and libraries. There is simply no feature rich library which includes all the necessary boiler-plate code needed to write web applications.
PHP is everything that C++ isn't when it comes to web development - a high-level scripting language designed mainly for web development. The description of PHP on the homepage sums it up nicely:
PHP is a widely-used general-purpose
scripting language that is especially
suited for Web development and can be
embedded into HTML.
If you're developing a simple forum, this decision is a no-brainer: PHP. In addition to the obvious advantages to using it, you'll find the syntax familiar as it is C-like. However, if you have all the time in the world, you're feeling brave and this is for hobbies' sake, do it with C++!
Out of those, for web development, PHP for sure.
C and C++ is not the correct choice to develop for web, so if you know PHP it's better.
also you can try python, ASP.net etc...
To add most hosting does not support c++ and they will not in most case so if you were me I will go for PHP and almost(nearly) all hosting service support it.
Also the lack of function for web development in c++ is also a pull down.
Actually, I wonder why you're not considering to use both! Use PHP for the web interface and write special C++ methods for the more complex actions that you want to take. (Although PHP can handle most of those too.) Basically, this would require less knowledge of PHP and your C++ knowledge stays usable.
Do keep in mind the hosting restrictions of your webhost, unless you're going to host your site on your own system.
Also, do realize that the use of C++ for web development would restrict you to the more general C++ libraries. C++ can be used to write platform-independent code, just like PHP. But not all libraries are supported on every platform.
Finally, PHP already is a powerful language and there are plenty of add-ins for PHP that you can re-use instead of writing it yourself. Still, most of PHP and all the add-ins are written in C++, even though many people just forget about the fact that the code behind PHP had to be written in some language too. Image manipulation, encryption, complex math, etc... It's all been done before for PHP. But it should not stop you from writing your own extensions...
PHP, Python, ASP, JSP, C#.net all should work
C++ is not commonly used for this purpose. Most shared hosting providers won't allow you to run native executables created by C++ for reasons of security (though I suspect this would be manageable with fine-tuned rights) and portability (eg. you'd have to know which OS the shared hoster's webserver runs on and possibly install additional libraries).
Even if you have your own dedicated server with root access, it might still be difficult to properly integrate an executable as CGI into Apache or IIS.
If you're not bound to PHP or C/C++ for some other reason, you could also try C#. Picking up C# from C++ is very easy and ASP.NET allows you to write your complete website in C#. With ASP.NET MVC, you even have an MVC framework comparable in productivity to Ruby on rails. Many shared hosting providers support ASP.NET and through Mono, it's even possible to host ASP.NET web sites in Linux (I'm doing this with my blog ;-))