Serverside Technologies and Flow [closed] - sql-server

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 8 years ago.
Improve this question
I'm relatively new to the web development scene, so please excuse any frustratingly obvious questions.
What I've found myself to struggle with is understanding how all the different technologies of web design fit together - how they all fit into the flow of development and their heirarchy.
I understand the basic html,css,javascript flow. HTML defines your structure and content, CSS comes in and then defines the presentation of said content, and finally javascript adds a layer of interaction and defines how the website behaves. Given that, it's easy for me to see how jQuery etc fit into the picture.
As I move towards making more dynamic sites though, I find myself inundated with trying to learn/balance many web technologies and frameworks (django, mysql, sql, innodb, drupal, rails, php, wordpress etc, etc). I realize that some of what i just listed overlap and serve the same function, but that just goes to show my general confusion with the topic. For example, the django example: I understand django is a web framework that runs on python to help you develop web apps quickly, however, the relationship between the server, html, and python is cloudy to me.
Does anyone know of a good source that can outline how all these puzzle pieces fit together (or feel like offering their description of such matters)?
Thanks :-)

I don't know of any resources that explains this the way you're looking for so I'll just add my take. Maybe we can see where I've goofed.
I like to split the technologies into two camps, Client Side and Server Side.
Client Side is anything that runs on or in the web browser on a user's computer, tablet, smartphone, etc. These technologies include:
HTML (for structure)
CSS (for designing the structure)
JavaScript (for making the structure do stuff)
Server Side is anything that requires a connection to a web server and resources on said machine. This may be a web server running on your localhost as a development machine or a server connected to the Internet. These technologies include:
Web server (Apache, nginx, ...) This is what the user actually connects to via www.example.com in their browser
Server Side Language (PHP, python, ruby, ASP.net, ...) This is what provides access to a physical data storage, like a...
Database (MySQL, SQLite, PostgreSql, MongoDB, ...) This is where the data about your website or app is stored
So, in your example a user would connect to a web server, access a file holding a python script that connects to the site's database and then produces the appropriate HTML, CSS and JavaScript to generate a webpage on the browser's screen.
Obviously this is overly simplified and there's a lot more that goes into it but this is it in a general nutshell.
I would also definitely read this post a lot.

Related

Front end technologies for SAP S/4HANA [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
My company are currently in the process of upgrading their existing ECC6 system to the latest S/4HANA version, and as a result, we'll be looking at developing bespoke Fiori apps once the upgrade is completed.
I read through a number of Fiori development resources online and it appears that a myriad of front-end frameworks can be used; we are not limited to SAPUI5.
Notably, there are several projects which utilise popular front-end development frameworks such as React - which are open sourced and come from SAP directly.
https://github.com/SAP/fundamental-react
https://github.com/SAP/ui5-webcomponents
Having also been to a number of SAP user group meetups, I've had first hand experience at creating OData services which can then be exposed and consumed by the front end. The OData is essentially 'front-end-agnostic' at this point.
I have extensive experience of developing front-end applications with React and Angular 2+ which makes me a little biased but, when we have our system upgrade, will it be best practice to develop using SAPUI5? Are we limited to this? Or is it perfectly fine to use React? Are there any examples of companies/ developers using React with SAP? Does anyone have any experience with this? I'd love some feedback so we can move forward with our strategy.
Please also note that we will be using an on-premise version, with no access to the Web IDE or the Cloud Platform.
To me, it's a no brainer - I would suggest to use React as it's a matured and well tested solution which performs very well and can be scaled with ease, with the addition of easy native support via React-Native should we wish to implement bespoke mobile solutions. Not only that, hiring new developers would be fairly easy and more cost effective as React is more commonly used than SAPUI5 in the web development scene.
Our customers will be the business. To them, the applications will look exactly the same if developed using styled React components vs SAPUI5. The only difference (personally) is that it will be a lot easier to develop via React. Are there any implications of using one over the other?
I know that there are various tools that have been developed in the past for frameworks such as React, which make development very easy. I just don't know of anything that compares for SAPUI5.
Modern frameworks like React also support and follow the latest ECMAScript standards & features - which benefits developers, allowing them to write concise and performant code. State management can be handled with ease, with the aid of Redux and the 'out-of-the-box' React Hooks.
You don`t want to use anything else then UI5 for a SAP system.
Launchpad support, incl. cross app navigation
SAP support (you pay for this already)
Message handling
I believe there is no great frontend oData implementation, except ui5 ones.
Out of the box accessibility features and default translations for a lot of areas(FI, PM etc.)
A large set of enterprise approved ui elements
v2->v4 adapter, you can write now apps for a v2 oData service using the v4 and change once the backend is ready for v4
--
Further more, modern development looks most probably like this:
Frontend development is done while using ui5-tooling
You can use ECMAScript version as needed or include any other tooling
Cloud (nodejs stack) Backend is most probably moving towards CAP
S/4 HANA (ABAP stack) has now a new development model called RAP
S/4 HANA comes with SAP HANA XSA what is basically a cloud foundry environment. Hence, you can deploy almost anything.
All this parts are surprisingly modern and follow the "Zero Lock-In" approach; which means, you could change any of them and still use the rest... but why the struggle. All of this works perfectly together for enterprise use cases.
I can add some extra things:
SAP oData is extended format then odata.org, so it is hard to use it with other frameworks. There is no documentation about it (I can't find it).
Probably your Hana license will be bundled with S/4. So you cannot expose oData from XSA without extra license (Generally DB license limited only own SAP applications such as NW).
Also you can need extra license for consuming SAP Gateway oData service with other frameworks.
Generally SAP license models are very complicated and sales man generally says "Everything included to this license" without unwritten.

Manage data on my hosting server

first of all sorry if this question is stupid. I'm building a website from scratch and I don't want to use a CMS. I'm doing well with all, unless that I don't know how to manage the backend data. It's suposed to make a direct connection to the database, for example, to create a new post on the blog page? Or should I implement a software in some language that connects to the database and manages all the posts that I post?
This is a very broad question to ask and if you're designing something on your own you should do what works for you. There are multiple solutions to the question you're asking but what fits you is the right answer. Stack is mostly questions for problems that have an actual example or something happening. Your asking an architectural question which isn't a bad thing just a very broad question to ask. Try Googling storing Blog posts. I assume this is what you want to do...
Some options:
Cloud based Architecture - Azure, Amazon Web Services (AWS) pay as you grow.
MongoDB, PostGres, SQL databases, Oracle, use a database that fits your code base.
Maybe spend some time learning a Full Stack Web Development cycle and what it takes to achieve. Some stacks are:
M.E.A.N. - MongoDB database, Express (Node Package) web server, Angular (1.. to 5) Web Development, Nodejs multiple uses
L.A.M.P. - Linux operating system, APACHE web server, MySQL (Database), PHP web development
.NET Stack or ASP.NET C# For your backend, use jQuery, SQL, Angular/React.
As you can see a lot to look at or learn. No simple answer to your question.

What is a good back-end to use with AngularJS [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 8 years ago.
Improve this question
I want to know your suggestions about a good back-end to use with AngularJS as a front-end.
Why is your suggested back-end good and is it easy to use, or easy to learn?
There is considerable risk in this question for opinion-based answers, so I suggest a more critical evaluation:
Restful server-side implemenations
... Will make working with angular considerably easier and less painful as well as being true to the HTTP spec with all the good things that entails. In any language that you choose ensure that the framework allows for the minimum of effort in doing this.
In my experience:
PHP:
Vanilla PHP and Codeigniter are capable but poor at doing this, I suggest avoiding them. I cannot speak for Symfony and the larger ORM-based frameworks, but I understand the learning-curve to be non-trivial. I strongly suggest staying away from CMS applications like wordpress and drupal as this kind of thing is not their purpose.
I understand that Laravel may offer a reasonably low learning curve and is has the understanding of RESTFul interfaces baked in.
NodeJS
NodeJS offers a very large number of frameworks for the server-side with Express and its variants being the apparent base for many of them. Express offers the flexibility to create RESTful interfaces, but does not do this by default. For more syntactic sugar it is usually necessary to wire up your own middleware.
Ruby on Rails
From what I understand there is considerable support for RESTful apis with rails.
Database support
PHP
Vanilla PHP mysqli Support for databases works, but is too low-level for use. CodeIgnighter, Symfony, Lavel and other frameworks all offer the necessary abstraction and security for working with the database to varying degrees. Differentiating between them on this is largely a matter of taste. PHP frameworks may struggle for support for NoSQL type newer databases.
NodeJS
Express Supports all major forms of databases with appropriate middleware with literally thousands of options from the NPM repositories. As usual, you will have to wire them up to express yourself with varying degrees of difficulty.
Ruby on Rails
Rails supports the active-record pattern which offers both security and ease of use out of the box. This supports the majority of popular standard relational databases. I cannot speak for its integration for NoSQL databases however.
Learning curve
This is too subjective for me to say much other than a few pitfalls: the NodeJS community expects a fairly high degree of skill to get started and the callback hell problem is sufficiently large to be a serious barrier to learner server-side development.
Security
PHP
Vanilla PHP offers little security and is not recommended. Codeigniter, Laravel and the other frameworks offer some protection with string-escaping and protection against SQL injection attacks at least.
NodeJS
Express doesn't offer too many security features out-of the box but can be hardened with modules like helmet. This is not a deficiency so much as a reflection of the unopinionated nature of the application.
Rails
I understand Rails offers basic SQL injection protection through Active Record and CSRF protection among other features out of the box.
Personally: I use Koa (an application to supersede express) for my own server-side dev in working with angular. My legacy projects use CodeIgnighter.
(disclaimer: I'm Ruby on Rails developer)
I believe Ruby on Rails is pretty good to use as json backend.
You can easily found a lot of materials and screencast about integrating it with angular, like:
http://railscasts.com/episodes/405-angularjs
http://angular-rails.com/bootstrap.html
And building proper JSON api with Rails can be helpful for creating mobile app etc, there also very good material about crafting good Rails RESTful Api, f.e.:
https://www.codeschool.com/courses/surviving-apis-with-rails
The back-end is up to you to choose, all back-ends should interact the same with Angular JS its more about what you are comfortable or more experienced with.
You have plenty of choices to look into:
Python: Flask and Django
Javascript: Node JS
Ruby: Ruby on Rails
PHP
Each will have their learning curves and pitfalls.
I'm biased and I recommend Go because it is able to handle huge amounts of concurrent requests and fast (5000 and up) without consuming too many resources.
However jumping between 2 languages can be painful but in the end will give you a broader understanding of programming. So if you'd like not to switch languages remain with the express framework and node.js since that's where also all the tutorials are, MEAN stack for instance (mean.io)

How to Prevent from re-uploading a file? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 9 years ago.
Improve this question
i have an Educational website and i create always pdf files from my learning and ad them for download
but there is many learchers that download my files and reupload them somewhere else
i used google dmca but is there any way to Prevent from re-uploading my files?
One way is to use your .htaccess to prevent hotlinking, but even if you do that, you'll again have the problem that when someone views the document via an in-browser extension (e.g. Adobe Reader, Foxit PDF Reader), they can save it and you've lost control over what they can do with it. Or, depending on how you've set up your site, they can simply directly download it, leaving you again back at square one.
Hence, the solution is to bypass direct access to the document. And, there are a number of ways to do that, which varies based on technique and web software (platform) used.
However, since you didn't mention a particular platform or technology: you can use web controllers (MVC type controllers) to broker the dynamic viewing and displaying of the documents in tandem with a client-side tool / plugin to do the displaying for you (much like Scribd).
However, Scribd uses a proprietary Flash PDF viewer called iPaper, and while it isn't available for use, you can find many other alternatives on the web. One that comes highly recommended (there's even a tag on SO for it) is FlexPaper, an open source plugin that implements a client-side web-based PDF viewer - which I think will suit your needs perfectly (from here):
This project provides a light weight document viewer component
enabling PDF files to be viewed without having any PDF reader software
installed. This project provides both Flex library and stand-alone web
version.
Here are some demos of it in action:
http://flexpaper.devaldi.com/demo/
Sorry, by mistake posted partial comment. Anyway...
Why do you afraid of reuploading of your files ? Put links to original site into the PDF and get profit of this. More copies, more downloads, more popularity for your resource. If you indeed would like to make PDFs available from your site only, you have to hide files from users and provide some functionality to read them from your web site only (you can use existing sites of this type). That makes duplicating of your resources to be harder task, but be ready that many users reject to read it this way.

Server side programming: simple tutorial for getting started with server/client [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I apologize in advance for the open-ended question. I tried searching, but wasn't sure what specifically to search for, in all honesty...
Briefly put, I'm a novice iPhone programmer and I've made applications that have communicated with a Java server. For example, my iphone application would use HTTP Get or POST requests and would receive back data. However, I'm not the person writing the server side code and frankly, have no idea how it's done!
I'd like to learn at least the mechanics of how things are done on both sides, so now I'm trying to learn. I picked up a book on Google App Engine since it seems like an economical way just in case I do decide to release a server/client app.
However, I assume that I could have chosen RoR or PHP as well. I'm assuming the principles must be the same.
If anyone could point me towards tutorials that shows the "other side" of what happens in a server/client app, that would be most appreciated! By other side, I mean, on the client side, I already know how to request and receive data. I just dont know what happens on the server side...
Thank you and sorry for the general question..
These are most important components of web application:
an http server: serves static files, works as a pipe to your applplication for dynamic content. For example: apache, nginx.
An actual web application: handles requests for dynamic content. Usually you use a a web-framework. For example: django for python, symfony for php, RoR for Ruby, node.js for javascript.
A database server. For example: MySQL, PostgreSQL
Some other things which might be considered:
a mail server to send email messages
image processing libraries
fulltext search engines
These components are less common:
memory caching server, for example: memcache
non relational databases, for example: redis, couchdb, riak, mongodb
task queue server: for example RabbitMQ
The reason why appengine might seem easier for novice is that you don't need to configure web server or database. You only need to write your application code. Fully-managed hosting with task queue, memcache, datastore, content-delivery-network are already available in appengine.
The problem with appengine is that it forces many limitations on you.
If you don't need memcache, task queue and distributed system then it is very easy to develop applications with popular frameworks, they provide tutorials how to set up your own http server and database.
If you need these advanced parts then it will be more difficult to configure everything.
Common practices in web application development include:
using ORM to work with relational database
using MVC or similar pattern to structure code
Html code is kept away from code in templates. Thus templating language is used.
As a web-backend developer aside from coding application code you also need to understand well the database which you use.
If you only build a backend for your mobile application, you won't need HTML, CSS, Javascript and templating. Though MVC pattern and ORM still applies. You also will need to know more about HTTP protocol and various methods of implementing an HTTP API. If you like XML, the WSDL does a good job. There are great libraries for WSDL which makes writing HTTP API easy.
The base API in Java is the Servlet API. Read this tutorial.
On top of this API, there exist a myriad of frameworks (Stripes, Spring MVC, Struts2, JSF, Wicket, etc.), which all have their own philosophy. There are two groups of frameworks, though: action-based ones (Stripes, Spring MVC, Struts2, ...) and component-based ones (JSP, Wicket, ...).
The action-based ones usually use JSPs for their view technology (to generate the markup), but also support others. What you'll learn if you learn JSP will be useful in a variety of frameworks, so I would learn it as well. Read this tutorial.
I applaud your choice of starting with App Engine:
Some concepts of GAE are hard, but so is SQL. If you don't know either you might just start with GAE which is a modern noSql system.
GAE is not a good fit for all problems. But I believe it is a good fit for your setup: a lot of independent clients with limited need for heavy queries.
About the cost: GAE is cheap if you know how to programm it. I have both EC2 and GAE in different setups, and while they are hard to compare, I believe GAE is cheaper.
IMHO most of the cost of hosting comes from support/management cost. We have a team 10+ developers, but no system/database admin.
I think, starting from app engine may not be good idea for starter for server side developing.
Asp.net ( or php) will be more "efficient": not only source for learning and tutorials but also better for make mistakes and learn better
Once you done with asp.net, and have good pratice about your server side project,
it is easy and very fast move to app engine
good luck

Resources