Related
In reference to this infographic about the data science industry.
I have a question about the relationship between HTML and data analysis!
Is there really a relationship between them?
If so, what is this relationship?
How can we use HTML in data analysis?
HTML is not a programming language. It is a document markup language. It really can't do much on its own. It can present results but offers limited interactivity. I think when people say HTML they really mean the combination of HTML/CSS/JavaScript.
With JavaScript added, you could technically code anything, though, in practical terms, it's only going to be suited for so many things due to performance concerns and the like.
As Mark_M said, it's mostly used for the presentation layer. This is especially important in the context of business. Let's go through an example. Say you build a model that predicts which of your companies product an individual customer or prospective customer would be most likely to purchase. What are you, as the analyst, going to do with that information? Do you care personally that Sally M wants to buy widget A and Frank R wants to buy widget B? Sure your company cares. Sure your pay is loosely based on the performance of the company. But you have plenty of other things to analyze. So now what?
Do you know who really cares about that information? The Sales Team. That's their whole job. Their pay is based on commission. They know how to act on that information. You let the sales team know this, they do their thing, you get your own performance pay, the company does well, everyone wins.
Now, how do you tell the Sales team this information? Do you let them call you every time they need a lead? Do you give them some sloppily written code in MATLAB or a command line Python client? Do you give them the math equations and tell to figure it out?
Now, remember, a lot of the sales team are not very technically savvy. Even if they sell technology, they barely know enough about it to sell it. The Sales team doesn't know what a -345 error code means. They interface with the customer and ask a member of the support or engineering team for help as needed. The sales team can barely handle the basics of Excel. I would bet you that 90% of the sales team doesn't even know what a "for loop", but that's ok, you don't know how to get that guy on the fence to hand over his signature. People have different strengths.
So what now? You need Bob the salesman to have all the information he needs without bothering you while you code up the next analysis. If you make it too hard, they won't use it. That's just the way life works.
Do you know what's really easy to use? Web applications. Bob the salesman can figure out any web application, especially if it's well designed. So you code up your analysis in the form of a web application. Maybe you have a web design team at your company to redesign your web application, to make it more user-friendly, but they don't know the details of your model. You must code up a prototype web application to allow other people to run and use your model.
Data analysts and data scientist (some at least) are expected to write prototype web applications. You might hear these things called "dashboards." It isn't very hard actually. There are technologies such as R Shiny and Bokeh to make it easy peasy, at least compared to the harder parts of your job.
The application, of course, might not make it out to the general internet, or it might. But it could very well at least make it onto your company intranet. The old way of doing things is companies keeping all their analysis in Excel files and passing those around. The new way is web applications on the intranet.
Your models are totally useless if no one turns them into actionable information and then actually acts on them. The company isn't paying you to build models. They are paying you to tell them what they should do to make more money. You must make it easy enough for them to achieve that.
That's the relationship. In short, it's the presentation layer, ha.
I am a beginner web developer and working on a school project. My apologies for asking this basic question.
I am trying to create an online shopping store. What I am trying to do is when the user clicks on the checkout button, the shopping cart page gets updated with that element.
I don't know how to accomplish that. I really appreciate if someone can point me to a tutorial or provides some tips.
Your question is really abstract, however you will have to find the right way to communicate with a database...it might be php/MySQL with laravel or some other framework or preferably C# asp.net with entity framework(that's what I will go with its not mandatory some people like php) Then you need to learn some lambda or sql depending on which approach you would like to take (php/C#). You will probably need to get some kind of grid control for the cart asp.net has default one personally I find it confusing and hard to work with( there are many controls that can be downloaded freely without charge for non commercial products search google) then you would need to fill that grid with the List of objects that you will get from your database. If you get that far alone the next steps would be easy you will probably need some javascript for ajax calls to a webservice or either your backend so you can submit the orders. For the right tutorial there is none actually since your question covers several topics regarding database modeling, data fetching, backend development and front end development. You can start by getting yourself some kind of server (look for mssql for asp.net) and MySQL for php, then you should look for some kind of database modeling tutorial basic tables relationships 1-1 1-* *-1, after that you would need to do your design (from the question I assume that you already have one downloaded). Then if you got down to this step you should google the way for the right way of communicating with your database from the backend of your website (I advise entity framework its clean and easy) you can generally bind the list of objects directly do the grid that would represent your cart (I say grid but you can give it data template to look like html, not to be confused with regular tables). If you really get here I see no reason to keep coding for a school project in most places you can use all this to bachelor degree exam and pass with straight A. But if you want more details look into these videos they explain quite well what you want to do.
https://www.youtube.com/watch?v=s91pPLx_T3Q
https://www.youtube.com/watch?v=yYr0seXj7qA
https://www.youtube.com/watch?v=lFkXk5gHjSs
I am not great at JavaScript but I think your page would need to update a cookie then read that value from said cookie. I hope that's a good place to start!
You might also find "Creating a Shopping Cart using only HTML/JavaScript" helpful.
I started to study ER diagram when i browse through ER diagram tutorials i found something like figure 1 and i learned
Figure 1
And then i tried to create a sample ER Diagram in mysql workbench i got the components like in below diagram
Figure 2
Then i browsed in Google images as ER Diagram i got both types of images... I dont know the similarities and difference between both diagrams..
Can u please help me to understand in detail and to move further...
Thanks in Advance...
Then i browsed in Google images as ER Diagram i got both types of
images... I dont know the similarities and difference between both
diagrams..
Can u please help me to understand in detail and to move further...
Thanks in Advance...
By developing databases, a DBA (or someone else) can use a Data Modeling technique known as Entity-Relationship Diagram.
This technique (as mentioned in other answers) was developed by an American (?) named Peter Chen and it is widely used today for the development of database structures such as tables and present relations between them.
The first image shown represents a Conceptual Model of a due problem/situation. The second image is a Physical Model of a problem/situation. Both models are part of the whole concept of data modeling by Peter Chen, the Entity-Relationship Diagram.
They (the models) represent stages in the course of a problem/situation. As you get a description of the problem/situation, you begin to develop the Conceptual Model of it. Once ready, the model is decomposed to become a new model called the Logical Model.
The Logical Model is also subsequently decomposed, resulting in the Physical Model, a final representation of the structures of the tables of a database containing the field names, their data types, relationships between tables, primary keys, foreign keys , and so on.
The decomposition process follows strict rules proposed by Peter Chen. This says that you do not draw nonsense. You make a model and need to follow rules to break it down so that you pass to the next stage.
You can see the Entity-Relationship Diagram as a tool or technique that helps you to develop a strong and concise database structure. With this technique, you can create a Model (3 actually) expressing business rules needed in a system/web application. However, remember the following things:
Even before the existence of the Conceptual Model, we have to
describe the problem (the needs of business rules) on a paper (or a
document). It is here that you will generate/start a Conceptual
Model. This document may even be a new phase, prior to the Conceptual
Model, called Descriptive Model (this is not official by Peter Chen).
That's where you will have the context of everything.
The context should be given only for what should be persisted (in a
database). There is no need to describe things that are not
persisted. Your Descriptive Model should not contain unnecessary
things.
During the development of the Conceptual Model, it is crucial that
you forget completely what are tables and foreign keys. These things
will only slow you down during this phase of development. They should
be seen later, during the next stages.
I advise you to find out more about the Entity-Relationship Model (A.K.A. Entity-Relationship Diagram), and study about it. There are cool books on the subject, and a lot of material on the Internet. Having grasped this, believe me, the development of databases will become something much easier and enjoyable.
If you have major questions, please make a comment and I will answer. Come join the community. Follow the entity-relationship tag. There are many interesting questions that can help you in your studies. Also, keep asking, keep participating. We are here to exchange knowledge!
Oh, one more thing. There are certain different notations used by different professionals. For example, some people represents cardinalities as N...1, as other N-1, other as (N,1). These characteristics do not change the end result.
EDIT
I thank who showed me this.
Your first diagram is a proper ER diagram, using the concepts and notation developed by Peter Chen in his paper The Entity-Relationship Model - Toward a Unified View of Data. This notation depicts both entities (rectangles) and relationships (diamonds). Ternary and higher relationships are easily represented and visible in this notation.
Your second diagram is commonly called an ER diagram. It doesn't distinguish entities from relationships, rather the applications that produce these diagrams tend to confuse tables with entities and relationships with foreign key constraints. These diagrams have more in common with the network data model than with the entity-relationship model, since they depict only binary relationships between tables rather than n-ary relationships between entities.
Figure 1 is a Entity Relationship Diagram it shows abstract relationships and attributes between entities.
Figure 2 is a Relational Schema Diagram which goes a step further and specifies foreign keys, data types of attributes, and one-to-many/many-to-many relationships.
Both are conceptual designs of databases and honestly there are some aspects added and removed from each one.
The first one is an Entity-Relationship diagram, although it's awfully specific and a lot of that cruft can be omitted. There are simple conventions you can use to declare relationships between tables, like arrows that mean "one to one", "one to many", or "many to many" but I've found that most of the time simply knowing the relationship exists is good enough.
Here's an example of a very high-level ERD that simply establishes the connection between different parts of your system:
There's usually no need to get into specifics at this point. Anyone not familiar with the project will immediately get a sense of how your data is structured and if they want to know more about implementation they can dig into the database level.
The second artifact there is a database diagram and is generally very specific in terms of details.
It's often easier to design your application starting with a very simple ERD, iterate on that until you're happy, then implement it in terms of database tables, fields and relationships later. This is when you'd use a database design tool to implement it if you prefer.
I'll preface this by saying that I usually work in C#/.Net.
Normally, I use a naming scheme that puts common, reusable components into a namespace that reflects our organization and project-specific components into a namespace tied to the project. One of the reasons I do this is that I sometimes share my components with others outside my department, but within the organization. Project-specific namespaces are typically prefaced with the name or abbreviation of the department. When I reuse code between projects, I typically migrate it into one of the organization-based namespaces.
For example:
UIOWA.DirectoryServices contains classes that deal with the specific implementation of our Active Directory.
UIOWA.Calendar contains classes that deal with the University's master calendar.
LST.Inventory.Datalayer holds the classes implementing the data layer of the Learning Spaces Technology group inventory application.
I'm embarking on a project now for an entity that has a fuzzier connection to the Unviersity (a student group that runs a charity event) that has the potential to be sold outside of our University and, thus, it doesn't really fit into my normal naming conventions, i.e., the department is only the first customer of potentially many that might use the project.
My inclination is to go the organization naming route and create an "organizational project" name space for this application. I'd like to hear how others handle this and any advice you might have.
Thanks.
See also this related question about namespace organization.
EDIT
I ended up creating the org/project namespace UIOWA.MasterEvent and deriving further namespaces from there. Still interested in other opinions for future projects.
My department got his name changed thrice in the last five years, so we're all glad that someone decided against using namespaces with organisational names...
Our namespaces are organised by project names. Reusable stuff is put into the Toolbox namespace. Perhaps a bit crude, but it works quite well so far.
I'm a .NET developer, and I always use the organisational project namespace (com.bolidian.projectspace) because it guarantees uniqueness.
I use the organisation, followed by the product eg Acme.Crm. When grouping classes together in a subnamespace always use a plural or action so that it cant clash with a class. eg
Acme.Crm.Letters
Acme.Crm.Invoicing
I follow Microsoft's convention by not capitalising acronyms eg Crm instead of CRM, Sql instead of SQL - but that's more a personal preference.
I work on a variety of projects using different languages and platforms. Parts of them I abstract out into their own separate projects, and I want to open some of these up to the public.
What gets me stuck is the christening.
So, does it matter? Should I just choose something and stick with it?
And if it does matter, what's better: a cool-sounding name that's memorable, or a descriptive name that's easier to find?
I think naming is an important part of getting ideas to spread. What I look for in a name are:
Memorable. It should be different than other names but easy to remember.
Accurate. It is helpful if the name reflects something about the project.
Positive. It is helpful if the opposite of the name is unattractive. For example, Structured Programming follows this rule because no one wants to be unstructured.
Clever. Clever is optional, but it helps make a name memorable when you achieve it. Clever ages badly, though.
It's not worth waiting to program until you have cool name. The more experience you have with the project, the easier it is to name. JUnit wasn't christened until several months after its debut.
For more information about naming, I highly recommend "Words That Work: It's Not What You Say, It's What People Hear" by Frank Luntz. He is an amoral political operative, but he loves language and communicates that love effectively.
One last point about "sticky" projects: be sure to tell the "creation myth" frequently, the story of how the project got started. Every project I've seen that has had long-term impact has had an oft-repeated story about its genesis.
I've decided to go with generic names to start because I'd rather get started quick programming and worry about names later.
This Web 2.0 Name Generator is entertaining.
If the name is to be used publicly at all - marketing, on the web, etc., just be sure you pick a name that someone else isn’t already using for anything at all similar. At least do a Google search. And before you spend money on advertising or anything like that, spend a few bucks to get a search done in one of the more specialized name and trademark databases. At least in the US, being first with a name gives you legal rights and it’s cheaper to do the search than to have to change your name later.
Of course before you go too far, make sure the domain name is available, too.
For stronger legal rights in the name, pick something that’s made up and not just a generic reference to what your product does. Somebody like Microsoft can spend oceans of money to get legal protection of something like “Word” or “Windows” - you probably can’t.
Yes, I think it matters (having been in the same position myself). I think the name either needs to be cool/memorable or obvious/simple - not necessarily both. As a rule of thumb, imagine you were looking for a program/library that does what yours does. Would the name you've given it encourage you or put you off and would you remember it? That's really all that matters.
If you look at the history of products in general, there are numerous examples of poorly-chosen names that become part of the language (Kleenex, Tasty-Freez, Wisker-Biskit), so I don't think it matters much at all from a marketing perspective. You do want something that's easy to type and spell over the phone, though. I work for company with a weird name with lots of Ss that sound like Fs, and it's a nightmare.
It matters if you care about other people using your code. Prefer memorable names. They may be memorable because they are descriptive, or because they are "cool", or for another reason. If you are putting your code on the net, it should include a description that will show up in relevant searches.
Before settling on a name for your app, you may want to check to see if the domain name is available.
Google Friendly
Something unique (or at least something you can get your homepage in the first 10 results)
Easy to spell
A point not always considered is how easily you can google your project. This may or not be a factor, but you may have an interest in keeping tabs on what the community/press is saying about your project.
If it's called "Project X", "e" , "Raptor", or "Purple Windows", unambiguous searches are near impossible. Over and above the domain name availability issue, picking a name that's not used in any other context allows you to do useful stuff like set up automatic alerts for tweets/blogs comments on your project.
Sadly most of these names are hard to pronounce/spell unambiguously, so it's a tradeoff.
I absolutely think that naming is important for your project. A lot of open-source projects have this problem that makes them get names that look cool on the screen but are hard to pronounce. This means that at minimum your website has to have a pronunciation guide, and that a lot of people will be confused about how to pronounce your project. A name with difficult pronunciation can introduce some cognitive dissonance as people try to think about your project. Is it Cool, Cooyil, Coowheel, Coil or what? What's wrong with these people that they can't name their project? If they can't name a project something that is easily readable by sane human beings in the intended target audience, can we really trust them to make a good product?
Wait to pick a good name until you have something good to name your project. Don't feel bad about changing to an awesome name once you find it, there's no need to remain tied to whatever name you were using in development.
Would be hard to suggest a name to use if we don't know what the product is.
Also, this sounds a lot like a marketing question. I would say something cool and memorable but is descriptive as well. iTunes comes to mind.
You could do both. A good example would be Shoes for Ruby. it was originally going to be called (Or so they say) "MIDAS MACLEAN'S WINDOWS OF GOOD FORTUNE" but then he decided on Shoes.
The toolkit/library has nothing to do with shoes.
I've seen project naming be a big problem. I've managed around 20 programmers working on maybe 40 projects, and it got to be a real problem when you have a project named X, a virtual directory named Y, a Visual Studio project named Z, etc. When an application writes to the error log, which project is it? Who does it belong to? We created a project database to capture all this, but it would have been better to have conventions, because the project database is not always complete and up to date.
I resisted this idea, but it may be best to have project numbers. It seems better to have mnemonic project names, but if you have a lot of projects, you run into questions of mnemonic for whom.