Difference between microsoft project 2013 standard and professional free.Software engineering
Project Server is useful in portfolio management and team collaboration tools. Only Project Professional contains a Generic Resource checkbox. Microsoft no longer offers downloads of the obsolete trial versions of Microsoft Project Clients (Standard and Professional) for versions , MS Project Professional can connect to Project Server. · MS Project Professional has a very nice “Team Organizer” view that graphically shows resource.
Difference between microsoft project 2013 standard and professional free
With Project Online and Project Server, additional uses can be leveraged for larger organizations such as SharePoint integration. Sign In. This is the client читать статью that allows access to the server. Chinese, Traditional. At the bottom of this entry is a brief comparison of the Project Professional and Standard versions.
Microsoft Project FAQs | Questions About Project.Microsoft Project Pro vs Project Standard – What’s the Difference? – Royal Discount
This version is free to download and install. Screen Stream Mirroring Free works like any other standard video-sharing template.
It is compatible with most media players and web browsers. However the main difference between this and similar systems is that it can be used in conjunction with smart televisions.
Popular streaming servers such as Twitch and Facebook can likewise be employed. All controls are highly intuitive, so the user will not have to possess any previous experience. A built-in widget provides a live camera overlay during any stream so that the user will know what others are seeing. A timer can be set in the event that the screen needs to be locked after a predetermined period of time. Multiple connections can be made at the same time, idea for webcasts and similar group events.
Laws concerning the use of this software vary from country to country. We do not encourage or condone the use of this program if it is in violation of these laws. Softonic may receive a referral fee if you click or buy any of the products featured here.
Would you happen to know how I could code in a horizontal split like they have on Code Pen that separates the top of the window and the bottom of the window and moves fluidly when the bar is moved, with flexbox framework?
Any help would be appreciated, thanks! Flexbox does make the situation easier though. Basically if the flex items have flex: 1; they will fill the area, so you just resize one of them to a specific height or width and the other will fill the remaining space. So no math. Do you know of any working examples of jQuery UI Draggable for a horizontal split pane? Using this:.
I found this article confusing. Perhaps not the best place to ask, but I am struggling with making a responsive flexbox fluid layout.
What I want is 3 breakpoints like this: 1 3 rows containers vertical, small screen 2 2 columns, 2 rows medium screen 3 3 columns large screen 1 en 3 are easy, I just change the flex-direction from column to row. But how about 2?
So basically it must look like:. Gonna answer my own question. The reason I could not get it to work is because IE11 does not like a max-width to be set on any flex-item. If you do, it wrongly calculates the space around or between the items.
Evert, I just ran into that same issue! Great article, thanks. Regarding the the browser support table, I think that IE11 may have full support of the specification. Does using flexbox responsibly meaning coding the site via flexbox and usual css positioning methods as a fall back for browsers who dont support flexbox, coding the layout twice?
Just thinking workflow wise…. Thanks Chris! This is an excellent Flexbox reference. Flexbox is a thing of beauty! So in order to prevent that we could set max-width on the flex container, but that cancels out the centering for some reason and the page flushes left.
So the only other possibility is to set a max-width on one or more flex-items…but those will break in IE11 because of some bug. In short: flexbox will only work practically when using the full screen width and not limiting any flexible item with a max-width. As soon as you want to set a limit to any item, it falls apart. This really annoyed me and was broken for a bit, so I wanted to share in case anyone ever comes across this in the future. Also, very important. It breaks it for some reason.
I hope this helps someone! I hope this helps! Chris, this example does not work in IE Those are deprecated properties. Also best in practice to let a tool like Autoprefixer deal with inserting those older properties for you when needed. Amazing writeup and excellently explained, you saved me fairly a LOT of time I would off spent learning all this combining all the broken and outdated articles over the web 😀 thank you so much!
This is a great article. But still a very good and informative article. Is there a way to specify a minimum for inter-elements spacing when using flex-wrap: wrap;? To add spacing, use margin-right and margin-bottom.
Give the container the same, but negative margin to still use the full width. I get how to center the flex items themselves, but how would you center the container itself?
And is that something one would even want to do? Hi Chris! Very nice article! I had bookmarked the article before and have come back to it today as a reference.
Really like the re-haul, makes it even more useful! Cheers to you, Chris. Great work on the updated format! Ry, good point. I happen to use Autoprefixer, which added this IE-specific property name in for me. I love all that can be done with the flex box model, now only if all the browser could support it the same way! Thanks so much for updating this post — by far the easiest-to-understand guide to flexbox ever written.
I created a flex box and arranhed the items in it in a column layout. Is there an easy way to center everything in a container box when arranging elements as columns? Hope this makes sense. If you flow the elements by column vertically , the justify-content: center will really display the elements in the center bit of the flex box vertically, i,e, some space at the top, then your elements, then some space at the bottom.
What you wanted is for each element to center align horizontally, which you can probably achieve by using text-align property. Thanks for getting back to me so quickly. Does Compass support flex box? I see that they have what seems to be the old version of flex box in the documentation. But then on codepen. Like include display-flex? Bit of a long shot here, but do any Email clients support Flex box..? Would be useful in HTML emailers to rearrange the order of elements.
Really frustrating…. You have obviously given a lot of thought to how to present this information as clearly as possible.
Outstanding work — thanks. How do you all know what works in which browser version? Where is flexbox standing now for support? Hi, I was wondering if anyone could help me out with a flexbox problem. This kinda works, but there is a big gap between the five divs across the top of the page and the sixth div below them.
I need to know how to get rid of the gap. Here is the Codepen:. If you have time, I was hoping you might be able to elaborate on the second one a little. Time for bed in the UK though. It doesnt look good in safari, even doesnt look anyhow. I gave up on Safari. Not supporting it on my sites. Inside this container I have 3 divs. I want last one footer to be always at the bottom of this page. Is this possible to do? I know it is of course ; but I want to use only flex-box model. Ok, i got it, there was no question xD Sorry.
If any possible on that particular IE alignment modification style-sheet. I am working with flexbox on a few different projects now and love it. Only downside is all the prefixes that you need.
For my projects I made a less mixin stylesheet that has been tested and works in the most recent browsers latest version Hoping to help some more people out I put it on my github, so if you want a little help getting started you can grab it there github. Wanted to spread the word, since there seems to be some confusion around this property flying around in the wake of Firefox previously not having supported it. Could anyone help me with this? I was wroten some code reading article.
Want to have this:. Try to open this i want to display in this way. But now block number four is moved to center and on the bottom of block number two whole layout.
I want to get it on the right side of the block number two, but below of the block number three. Inside this container, I have two items.
A content area and a footer. I want the footer to have a set height of 52px and I want the content region to automatically fill the rest of the empty space. I want to be able to infinitely expand the browser window and always have my content area fill the empty space and I never want the footer to change size.
I started on an idea for HTML as a presentation format using flex. Can someone point me to a tutorial or demo of using iframe within a flexbox container. Alternatively is there an easy solution you could give me here. I believe there is no better place on the web to start learning about flex. Thank you for your work. Any comments on how valid the above article is. If it is valid is there are work around to still using flex-box for page layout without the performace hit?
I kind of agree with the article. The flexbox is more suitable for dynamic content think about displaying a random amount of images of a random size , where the grid layout is preferable for known content areas. Both can adjust for the screensize, but are optimized for different applications. The specification says flex: auto is flex: 1 1 main-size , to be distinguished from flex: 1 1 auto. This is currently under discussion, like it says in the big red box there.
The shorthand resets things in appropriate ways, and will therefore result in fewer cascading errors. Please use the shorthand! Maybe this will help others to visualize it this way also. Question: why do you have Applies to: parent flex container element only next to flex-flow? There is currently a crippling bug in Firefox that makes any non-trivial implementation of flex unfeasible.
Thanks for the article, helped me a great deal bringing my LESS-implementation and Bower package up to date! I would apreciate any help. Thanks in advance. Kudos for taking the time to make this super intuitive. This is going to be an amazing feature right now. Sean Fiorritto sp? So I was wandering, is there a good way of making the child elements of the flex grid not automatically span to the full width of the page. Only specifying widths every time is not very effective.
No one should have to add a width: 1px; to every element within if they want it to behave properly. Tons of love to Flexbox which just saved my weekend. I just had to redo an entire page which used to use an HTML table to present a matrix.
In other words, I had to go from row-major format to column-major format. So I used Flexbox to lay out the columns in left-to-right row direction, and then lay out each child in each row in top-to-bottom column direction.
Great work man….. Who has the option to design for only the most of modern browsers. Let me know when you can shiv it back to ie9.
Adding flex-wrap:wrap; flex-direction: row; or just flex-flow: row wrap; works though. I write css for the screens resolution. Got a container and 3 columns in it. Used this tutorial and it worked great in FF and Chrome, but in Opera it does not.
Col 1 and 2 are fully apart and the 3rd column is under the 1st. Just to mention I am new here i mean webdesign. That is the whole point of Flexboxes. Try getting rid of the float declarations and playing around some more…. Also, keep in mind that every set of flex items needs a flex container. Nesting flex boxes is how you keep consistency across browsers but it can get really confusing really quick.
Especially when you get like 8 levels deep. You also are probably missing LOTS of vendor prefixes to get it working properly across all browsers. For instance, you might want to take a look at the classes that I use in my projects to see what you are missing. I find a difference between resizing my laptop monitor and actually viewing it on other devices.
Any advice would be greatly appreciated…. In Safari and Chrome, the contents do not fit perfectly in the browser window, and the footer div tag is not visible at all. I noticed when declaring flex property for parent that hold some elements for example ul is flex, li are flex items they are inline or inline-block , when I set to some list item margin-right:auto, it push all other elements to the edge of the parent container?
Thanks, as always, for a very informative post. It really fast-tracked my understanding of using the flexbox model. One of the hardest things to wrap my head around was the flex-grow, flex-shrink and flex-basis properties. Not so much the concept of what they were, but how the actual values played out. This was not the case.
It was always greater than 2 times. The grow and shrink values have nothing to do with each other. But the piece that was eluding me, and causing the actual width values to not follow this ratio, is that the ratio is based on the amount that the containers have grown past the basis width or under the base width for flex-shrink. That being said, the key is that if you subtract the basis width from each item width, then the remaining width will follow the ratio.
Behavior of the last two changes depending of flex-direction. Article says it should be independent. Imagine we have a right-aligned navigation on the very top of our website, but we want it to be centered on medium-sized screens and single-columned on small devices. Alignment was all wonky. Initially I thought this was super helpful.
And if so, should there be a note accompanying that image? Firefox and IE are not. These css are like readymade ui-bootstrap components or angular itself. They work off-the-shelf. Web-pages development are becoming breezy now, given most of the common burden is taken by the framework.
Love it, thanks! What bothers me, is if you use either flex-direction: row; or flex-direction: column; It dictates what property you use to center objects horizontally. I think align-items and justify-content got mixed up in the example shared. Also, you the container article is missing a height, which ends up in confusing the result of applying align-items and justify-content as the same in that special case. Another great article!
Using this page as a guide and reference, I created a web-app based log in template that looks like a phone-app. Thanks for posting. Very interesting. Is there a particular attribution you would like? Thanks for the fix PaulOB! I really like the concept of flexbox, but with needing to support IE9, looking for a way to do that with a graceful fallback.
Total noob when it comes to flexbox, but I was wondering something. Great tutorial btw! Please post your code and link to it. Feel free to fork, re-post and question. When using the flex-shorthand in Safari 7 7. In order for Safari to wrap via flexbox -webkit-flex-basis must be auto which is Safaris default value. Good article, I just shared on Twitter. Really like how you formatted it, the other articles on the flex box suck compared to yours. Alex: maybe a bit late, but this is my solution and it works pretty well.
The alignment you see is on the last but one line. I often use flexbox with margins and calc, so I might use something like:. To get around this, I use:. This takes account of the percentage difference in the margins. Having just referenced this post for the th time in the last two months, I feel obligated to say that this thing is incredibly useful.
In the event anybody is having issues getting it to work on firefox for the 2nd example tomato background. Put the flex items into their own container with no other element in them.
Wow, this article is the coolest material about flexbox. Thank you for the tutorial. It looks like the ccentre might be the cause. Any ideas? I have stumbled upon this interesting StackOverflow question re justify-content: flex-start and margin: auto on a container. Can tell the reader of this in advance. Chris, can you give us an example of what are small-scale layouts and large scale layouts? Thanks so much for the article! I learned a ton. Are there any updates to that article coming down the pipeline?
I would love to read the two in tandem and better be able to grasp in which situations each would be most appropriate. Less code and it works even with old browsers. Try adding a background color to the. Using inline-block keeps you dependent on the browser default use of extra space left and right of inline li elements.
This rendering can be fixed by floating the li elements, but flexbox is a nicer modern way of achieving that effect. I figured out that align-content is only for the cross axis. The reason was that certain page layouts that you see nowadays, were very difficult to implement with the old specification. Take for instance flexbox. Before it was very hard to make a dynamically scaling website.
One improvement was the introduction of the calc function that could use percentages and static units together, but even with that it was still hard to read code. Flexbox was a great addition that is very easy to use once you read this article. Nobody is stopping you, but you deny yourself some awesome tools if you do. The same is true for any technology or even life in general, really. Without new features and new capabilities, we atrophy and fail to realize our full potential.
I suspect that relatively few people want to settle for what we have now and just work with that. It should probably be noted that the W3C documents recommendations, not requirements. After all, she already has TV, YouTube, and all the toys she needs at home :. Just fyi, no reply needed. I much preferred the old layout for this article. Seeing the parent and child examples side by side meant it was easier to compare behaviours and to pick the right approach.
I want to put a link on images wich are in a contener flexbox. Can somebody can give me an exemple about how to do? If you want help, you need to post your CSS code as well. I replaced the images with images from LoremPixel just to give me something to look at. According to caniuse.
So, is the above table wrong? Hi , I need to align all elements inside flex container to each other. Suppose I have made two div of equal height using flex and now I want to make the all the elements inside the div to align to each each other.
Is that possible? This is an excellent guide and I pretty much learned how to layout a page in about an hour using this. I cannot wait to test it out more and see how it all works in different scenarios.
I am trying to replace a grid layout where I used display: table and table-cell to align content vertically with flexbox. My problem with flexbox is, that I can not get a second child item to align vertically. What am I doing wrong here? Who ever wrote this article forgot to put information that flex-shrink if put to 0 prevents item to shrink and maintain its original size. This information could have saved me 4 hours of work. My boss says flexbox is stupid.
And we call it progress. This is an awesome post. It has helped me several times. I am having one issue that I cannot figure out. Would anyone be willing to comment on this Codepen? Thanks, Chris. Thank you for the information you have put together. This is just brilliant. One of the examples Numbered Tomato boxes that wrap uses webkit-flex-flow, instead of just flex-flow, so the example becomes specific to webkit only.
I have encountered a bug on firefox that does not allow elements to be flex containers. It took me AGES to find that out, so I wanna share this with other folks that might be going though the pain I have just experienced!
Should prefix code be inserted as a safeguard, OR is it deleterious to add vendor flex prefix code if said vendor has provided full flex compliance in more recent browser versions?
You can get some useful insights and ones very specific to your site and users by installing Google Analytics. With the statistics it gives you, you can see the browser breakdown of the people who come to your site. I think that would let you know how much of a need there really is for support for given browser versions. I just want to say thank you.
It has been just so helpful. Great work. Much appreciated. Thank you. Great stuff in here, but I am obviously missing some basics from my end. If somebody can explain. I am about to achieve from a last example full page with all these elements. ASIDE2 — purple part to be bellow. MAIN — blue part. Thank you, Igor. Thanks for this great tutorial! The CodePen examples took a little adjusting to work for me on Firefox I had to remove the -webkit prefix from -webkit-flex-flow on examples 1 and 2.
Nice one, I have a question tho, with this new knowledge I wanted to try my skills on some kind of framework. But why do the two col-1 at the top not have the same width as the col-2? Is it possible to have a max-width on the container and then center that container? I suppose If you consider that all your visitors will have a recent browser, you can use only flexbox.
If some of them still use ie6 and you have to enable them to use your website, you have to propose another way to display…. Edit suggestion: In the flex-direction section, the visual examples do not match the order shown in the css code snippet. Since all the other sections match in order from what the visual example is with the code snippets, I was confused for a bit.
Sorry about missing html in my comment above. Seems flex wrap could be a bit more flexible, if it support indentation and hanging indentation, as for paragraphs. Use case: a bunch of thumbnails with dates underneath, one flexbox filled for each month, say. Hi, great tutorial. Is it possible to use flex to make a perfect grid with some square boxes of side double than other square boxes.
The grid is supposed to contain only two kind of boxes-small and big with side double to that of small box. So please try to anwer in easy words : I have taken the code from the Flexbox at the beginning of the website. So could someone please give me a code I am able to paste in my code?
As far as now the code is:. Christian Hi, I am not a code pro, but even I could see, that your code is like scrambled eggs. I think you should start a new with a clean HTML and keep it much simpler. Hey, I just wanted to say that this was my most-visited reference page of You display things that work. Henry I think you can overwrite default setting or your setting of align-items by align-self: … ; on the flex item.
Just found myself with this site open every day. Can not code proper flexbox designs without it. Thank you Chris! You make my life better! Greets from Germany. Thank you for the great work. The figures really make things much easier. It would be even better if there is a real webpage example built with Flexbox, like a more complete version than the last example, so that we can see how Flexbox is used in real life.
In the last example, what if we want to set the height on the wrapper? Thanks for this! Will be using a lot more! Thanks for all of the great information, it really helped me to understand flexbox.
I find that very confusing and would love some additional explanation. You must expand that section to see the content. Very interesting article. So right now I am trying to figure out where to get started and what technologies are safe to use. And what about CSS grid, safe for production with fallbacks? That being said, why would I even bother creating the layout twice and bloat my code if fallbacks for layout are required?
Been using this website for a while, always coming back when i need a refresher. So at those larger sizes, although the first-letter styles are still applied, the flex box gets rid of the styles. Why is this so? Thank you! That said, implementation of :first-letter and :first-line is rather painful in the layout engines, so even if the restriction is lifted in the spec, it might be awhile before anyone is willing to implement it.
Thank you so much for this. If sharing this post in other languages helps others then, by all means, please do. Just started to look at using flexbox as I update some educational materials I began 22 years ago yes html2!
Been overwhelmed at the change from frames to div. But your site puts things in the language a non-programmer teacher can use to update to something other than frames.
Thanks for such a well done site. Now lets get my hands dirty and brain overloaded. My main frame page is 11 frames. Could you please explain flex-shrink a little better? How does it shrink an item? What do higher numbers mean relative to lower numbers?
What happens if flex-shrink and flex-grow are both specified on the same element, or on 2 sibling elements? In most proprietary software, the first released version of a software product has version 1. Some projects use the major version number to indicate incompatible releases.
Often programmers write new software to be backward compatible , i. This enables people who run a high availability computer cluster to keep most of the computers up and running while one machine at a time is shut down, upgraded, and restored to service. Often packet headers and file format include a version number — sometimes the same as the version number of the software that wrote it; other times a “protocol version number” independent of the software version number.
The code to handle old deprecated protocols and file formats is often seen as cruft. Software in the experimental stage alpha or beta often uses a zero in the first “major” position of the sequence to designate its status. However, this scheme is only useful for the early stages, not for upcoming releases with established software where the version number has already progressed past 0.
Semantic versioning actually does not specify specific terms for development stages; the comparison is simply in lexicographical order. There are two schools of thought regarding how numeric version numbers are incremented. Most free and open-source software packages, including MediaWiki , treat versions as a series of individual numbers, separated by periods, with a progression such as 1.
On the other hand, some software packages identify releases by decimal numbers: 1. The standard GNU version numbering scheme is major. In some cases, developers may decide to reset the major version number. This is sometimes used to denote a new development phase being released. For example, Minecraft Alpha ran from version 1.
Once the game was fully released, the major version number again reset to 1. When printed, the sequences may be separated with characters.
The choice of characters and their usage varies by the scheme. The following list shows hypothetical examples of separation schemes for the same release the thirteenth third-level revision to the fourth second-level revision to the second first-level revision : [ original research? When a period is used to separate sequences, it may or may not represent a decimal point—see ” Incrementing sequences ” section for various interpretation styles.
There is sometimes a fourth, unpublished number which denotes the software build as used by Microsoft. Adobe Flash is a notable case where a four-part version number is indicated publicly, as in Some companies also include the build date. Version numbers may also include letters and other characters, such as Lotus Release 1a. Some projects use negative version numbers. Many projects use a date-based versioning scheme called Calendar Versioning aka CalVer . Ubuntu Linux is one example of a project using calendar versioning; Ubuntu This has the advantage of being easily relatable to development schedules and support timelines.
Some video games also use date as versioning, for example the arcade game Street Fighter EX. At startup it displays the version number as a date plus a region code, for example ASIA. The hyphens are sometimes omitted. The Wine project formerly used a date versioning scheme, which used the year followed by the month followed by the day of the release; for example, “Wine “.
Microsoft Office build numbers are an encoded date:  the first two digits indicate the number of months that have passed from the January of the year in which the project started with each major Office release being a different project , while the last two digits indicate the day of that month.
So is the 19th day of the 34th month after the month of January of the year the project started. Other examples that identify versions by year include Adobe Illustrator 88 and WordPerfect Office When a year is used to denote version, it is generally for marketing purposes, and an actual version number also exists.
The Python Software Foundation has published PEP — Version Identification and Dependency Specification,  outlining their own flexible scheme, that defines an epoch segment, a release segment, pre-release and post-release segments and a development release segment. TeX has an idiosyncratic version numbering system. The current version is 3. This is a reflection of TeX being very stable, and only minor updates are anticipated.
In a similar way, the version number of Metafont asymptotically approaches e. During the era of the classic Mac OS , minor version numbers rarely went beyond “.
When they did, they usually jumped straight to “. Mac OS X departed from this trend, in large part because “X” the Roman numeral for 10 was in the name of the product. As a result, all versions of OS X began with the number The first major release of OS X was given the version number Instead, it was numbered Thus the 11th major version of OS X was labeled ” Even though the “X” was dropped from the name as of macOS Under the “X”-based versioning scheme, the third number instead of the second denoted a minor release, and additional updates below this level, as well as updates to a given major version of OS X coming after the release of a new major version, were titled Supplemental Updates.
The Roman numeral X was concurrently leveraged for marketing purposes across multiple product lines. Like Mac OS X itself, the products were not upgrades to previous versions, but brand-new programs.
As with OS X, major releases for these programs incremented the second digit and minor releases were denoted using a third digit. Apple’s next macOS release, provisionally numbered The Microsoft Windows operating system was first labelled with standard version numbers for Windows 1. After this Microsoft excluded the version number from the product name. For Windows 95 version 4. After Windows , Microsoft created the Windows Server family which continued the year-based style with a difference: For minor releases, Microsoft suffixed “R2” to the title, e.
This style had remained consistent to this date. The client versions of Windows however did not adopt a consistent style. First, they received names with arbitrary alphanumeric suffixes as with Windows ME 4. Then, once again Microsoft adopted incremental numbers in the title, but this time, they were not versioning numbers; the version numbers of Windows 7 , Windows 8 and Windows 8.
In Windows 10 , the version number leaped to The successor of Windows 10, Windows 11 , was released on October 5, Despite being named “11”, the new Windows release didn’t bump its major version number to Instead, it stayed at the same version number of Some software producers use different schemes to denote releases of their software.
BLAG Linux and GNU features very large version numbers: major releases have numbers such as and , while minor releases increase the number by 1 e. Alpha and beta releases are given decimal version numbers slightly less than the major release number, such as Starting at in , the most recent version as of [update] is Urbit uses Kelvin versioning named after the absolute Kelvin temperature scale : software versions start at a high number and count down to version 0, at which point the software is considered finished and no further modifications are made.
Software may have an “internal” version number which differs from the version number shown in the product name and which typically follows version numbering rules more consistently. Java SE 5. Note, however, that Windows NT is only on its fifth major revision, as its first release was numbered 3.
Difference between microsoft project 2013 standard and professional free
In a medieval European counting house , a checkered cloth would be placed on a table, and markers moved around on it according to certain rules, as an aid to calculating sums of money. The Antikythera mechanism is believed to be the earliest known mechanical analog computer , according to Derek J. It was discovered in in the Antikythera wreck off the Greek island of Antikythera , between Kythera and Crete , and has been dated to approximately c. Devices of comparable complexity to the Antikythera mechanism would not reappear until the fourteenth century.
Many mechanical aids to calculation and measurement were constructed for astronomical and navigation use. A combination of the planisphere and dioptra , the astrolabe was effectively an analog computer capable of working out several different kinds of problems in spherical astronomy. An astrolabe incorporating a mechanical calendar computer   and gear -wheels was invented by Abi Bakr of Isfahan , Persia in The sector , a calculating instrument used for solving problems in proportion, trigonometry, multiplication and division, and for various functions, such as squares and cube roots, was developed in the late 16th century and found application in gunnery, surveying and navigation.
The planimeter was a manual instrument to calculate the area of a closed figure by tracing over it with a mechanical linkage. The slide rule was invented around — by the English clergyman William Oughtred , shortly after the publication of the concept of the logarithm. It is a hand-operated analog computer for doing multiplication and division. As slide rule development progressed, added scales provided reciprocals, squares and square roots, cubes and cube roots, as well as transcendental functions such as logarithms and exponentials, circular and hyperbolic trigonometry and other functions.
Slide rules with special scales are still used for quick performance of routine calculations, such as the E6B circular slide rule used for time and distance calculations on light aircraft. In the s, Pierre Jaquet-Droz , a Swiss watchmaker , built a mechanical doll automaton that could write holding a quill pen. By switching the number and order of its internal wheels different letters, and hence different messages, could be produced. In effect, it could be mechanically “programmed” to read instructions.
In —, mathematician and engineer Giovanni Plana devised a Perpetual Calendar machine , which, through a system of pulleys and cylinders and over, could predict the perpetual calendar for every year from AD 0 that is, 1 BC to AD , keeping track of leap years and varying day length.
The tide-predicting machine invented by the Scottish scientist Sir William Thomson in was of great utility to navigation in shallow waters. It used a system of pulleys and wires to automatically calculate predicted tide levels for a set period at a particular location.
The differential analyser , a mechanical analog computer designed to solve differential equations by integration , used wheel-and-disc mechanisms to perform the integration.
In , Sir William Thomson had already discussed the possible construction of such calculators, but he had been stymied by the limited output torque of the ball-and-disk integrators. The torque amplifier was the advance that allowed these machines to work. Starting in the s, Vannevar Bush and others developed mechanical differential analyzers. Charles Babbage , an English mechanical engineer and polymath , originated the concept of a programmable computer. Considered the ” father of the computer “,  he conceptualized and invented the first mechanical computer in the early 19th century.
After working on his revolutionary difference engine , designed to aid in navigational calculations, in he realized that a much more general design, an Analytical Engine , was possible. The input of programs and data was to be provided to the machine via punched cards , a method being used at the time to direct mechanical looms such as the Jacquard loom. For output, the machine would have a printer, a curve plotter and a bell. The machine would also be able to punch numbers onto cards to be read in later.
The Engine incorporated an arithmetic logic unit , control flow in the form of conditional branching and loops , and integrated memory , making it the first design for a general-purpose computer that could be described in modern terms as Turing-complete.
The machine was about a century ahead of its time. All the parts for his machine had to be made by hand — this was a major problem for a device with thousands of parts. Eventually, the project was dissolved with the decision of the British Government to cease funding. Babbage’s failure to complete the analytical engine can be chiefly attributed to political and financial difficulties as well as his desire to develop an increasingly sophisticated computer and to move ahead faster than anyone else could follow.
Nevertheless, his son, Henry Babbage , completed a simplified version of the analytical engine’s computing unit the mill in He gave a successful demonstration of its use in computing tables in During the first half of the 20th century, many scientific computing needs were met by increasingly sophisticated analog computers , which used a direct mechanical or electrical model of the problem as a basis for computation.
However, these were not programmable and generally lacked the versatility and accuracy of modern digital computers. The differential analyser , a mechanical analog computer designed to solve differential equations by integration using wheel-and-disc mechanisms, was conceptualized in by James Thomson , the elder brother of the more famous Sir William Thomson. The art of mechanical analog computing reached its zenith with the differential analyzer , built by H.
This built on the mechanical integrators of James Thomson and the torque amplifiers invented by H. A dozen of these devices were built before their obsolescence became obvious. By the s, the success of digital electronic computers had spelled the end for most analog computing machines, but analog computers remained in use during the s in some specialized applications such as education slide rule and aircraft control systems.
By , the United States Navy had developed an electromechanical analog computer small enough to use aboard a submarine. This was the Torpedo Data Computer , which used trigonometry to solve the problem of firing a torpedo at a moving target. During World War II similar devices were developed in other countries as well. Early digital computers were electromechanical ; electric switches drove mechanical relays to perform the calculation. These devices had a low operating speed and were eventually superseded by much faster all-electric computers, originally using vacuum tubes.
The Z2 , created by German engineer Konrad Zuse in , was one of the earliest examples of an electromechanical relay computer. In , Zuse followed his earlier machine up with the Z3 , the world’s first working electromechanical programmable , fully automatic digital computer.
It was quite similar to modern machines in some respects, pioneering numerous advances such as floating-point numbers. Rather than the harder-to-implement decimal system used in Charles Babbage ‘s earlier design , using a binary system meant that Zuse’s machines were easier to build and potentially more reliable, given the technologies available at that time.
Zuse’s next computer, the Z4 , became the world’s first commercial computer; after initial delay due to the Second World War, it was completed in and delivered to the ETH Zurich. Purely electronic circuit elements soon replaced their mechanical and electromechanical equivalents, at the same time that digital calculation replaced analog.
The engineer Tommy Flowers , working at the Post Office Research Station in London in the s, began to explore the possible use of electronics for the telephone exchange.
Experimental equipment that he built in went into operation five years later, converting a portion of the telephone exchange network into an electronic data processing system, using thousands of vacuum tubes.
The German encryption machine, Enigma , was first attacked with the help of the electro-mechanical bombes which were often run by women. Colossus was the world’s first electronic digital programmable computer. It had paper-tape input and was capable of being configured to perform a variety of boolean logical operations on its data, but it was not Turing-complete.
Colossus Mark I contained 1, thermionic valves tubes , but Mark II with 2, valves, was both five times faster and simpler to operate than Mark I, greatly speeding the decoding process. Like the Colossus, a “program” on the ENIAC was defined by the states of its patch cables and switches, a far cry from the stored program electronic machines that came later. Once a program was written, it had to be mechanically set into the machine with manual resetting of plugs and switches.
It combined the high speed of electronics with the ability to be programmed for many complex problems. It could add or subtract times a second, a thousand times faster than any other machine. It also had modules to multiply, divide, and square root.
High speed memory was limited to 20 words about 80 bytes. Built under the direction of John Mauchly and J. The machine was huge, weighing 30 tons, using kilowatts of electric power and contained over 18, vacuum tubes, 1, relays, and hundreds of thousands of resistors, capacitors, and inductors.
The principle of the modern computer was proposed by Alan Turing in his seminal paper,  On Computable Numbers. Turing proposed a simple device that he called “Universal Computing machine” and that is now known as a universal Turing machine.
He proved that such a machine is capable of computing anything that is computable by executing instructions program stored on tape, allowing the machine to be programmable.
The fundamental concept of Turing’s design is the stored program , where all the instructions for computing are stored in memory. Von Neumann acknowledged that the central concept of the modern computer was due to this paper. Except for the limitations imposed by their finite memory stores, modern computers are said to be Turing-complete , which is to say, they have algorithm execution capability equivalent to a universal Turing machine.
Early computing machines had fixed programs. Changing its function required the re-wiring and re-structuring of the machine. A stored-program computer includes by design an instruction set and can store in memory a set of instructions a program that details the computation. The theoretical basis for the stored-program computer was laid by Alan Turing in his paper. In , Turing joined the National Physical Laboratory and began work on developing an electronic stored-program digital computer.
His report “Proposed Electronic Calculator” was the first specification for such a device. The Manchester Baby was the world’s first stored-program computer. Grace Hopper was the first person to develop a compiler for programming language.
The Mark 1 in turn quickly became the prototype for the Ferranti Mark 1 , the world’s first commercially available general-purpose computer. At least seven of these later machines were delivered between and , one of them to Shell labs in Amsterdam.
The LEO I computer became operational in April  and ran the world’s first regular routine office computer job. The concept of a field-effect transistor was proposed by Julius Edgar Lilienfeld in John Bardeen and Walter Brattain , while working under William Shockley at Bell Labs , built the first working transistor , the point-contact transistor , in , which was followed by Shockley’s bipolar junction transistor in Compared to vacuum tubes, transistors have many advantages: they are smaller, and require less power than vacuum tubes, so give off less heat.
Junction transistors were much more reliable than vacuum tubes and had longer, indefinite, service life. Transistorized computers could contain tens of thousands of binary logic circuits in a relatively compact space. However, early junction transistors were relatively bulky devices that were difficult to manufacture on a mass-production basis, which limited them to a number of specialised applications.
At the University of Manchester , a team under the leadership of Tom Kilburn designed and built a machine using the newly developed transistors instead of valves. However, the machine did make use of valves to generate its kHz clock waveforms and in the circuitry to read and write on its magnetic drum memory , so it was not the first completely transistorized computer. Atalla and Dawon Kahng at Bell Labs in The next great advance in computing power came with the advent of the integrated circuit IC.
The idea of the integrated circuit was first conceived by a radar scientist working for the Royal Radar Establishment of the Ministry of Defence , Geoffrey W. Dummer presented the first public description of an integrated circuit at the Symposium on Progress in Quality Electronic Components in Washington, D.
Noyce also came up with his own idea of an integrated circuit half a year later than Kilby. Produced at Fairchild Semiconductor, it was made of silicon , whereas Kilby’s chip was made of germanium. Noyce’s monolithic IC was fabricated using the planar process , developed by his colleague Jean Hoerni in early In turn, the planar process was based on Mohamed M.
Atalla’s work on semiconductor surface passivation by silicon dioxide in the late s. The development of the MOS integrated circuit led to the invention of the microprocessor ,   and heralded an explosion in the commercial and personal use of computers. While the subject of exactly which device was the first microprocessor is contentious, partly due to lack of agreement on the exact definition of the term “microprocessor”, it is largely undisputed that the first single-chip microprocessor was the Intel ,  designed and realized by Federico Faggin with his silicon-gate MOS IC technology,  along with Ted Hoff , Masatoshi Shima and Stanley Mazor at Intel.
System on a Chip SoCs are complete computers on a microchip or chip the size of a coin. If not integrated, the RAM is usually placed directly above known as Package on package or below on the opposite side of the circuit board the SoC, and the flash memory is usually placed right next to the SoC, this all done to improve data transfer speeds, as the data signals don’t have to travel long distances. Since ENIAC in , computers have advanced enormously, with modern SoCs Such as the Snapdragon being the size of a coin while also being hundreds of thousands of times more powerful than ENIAC, integrating billions of transistors, and consuming only a few watts of power.
The first mobile computers were heavy and ran from mains power. The 50 lb 23 kg IBM was an early example. Later portables such as the Osborne 1 and Compaq Portable were considerably lighter but still needed to be plugged in. The first laptops , such as the Grid Compass , removed this requirement by incorporating batteries — and with the continued miniaturization of computing resources and advancements in portable battery life, portable computers grew in popularity in the s.
These smartphones and tablets run on a variety of operating systems and recently became the dominant computing device on the market. The term hardware covers all of those parts of a computer that are tangible physical objects.
Circuits , computer chips, graphic cards, sound cards, memory RAM , motherboard, displays, power supplies, cables, keyboards, printers and “mice” input devices are all hardware. These parts are interconnected by buses , often made of groups of wires.
Inside each of these parts are thousands to trillions of small electrical circuits which can be turned off or on by means of an electronic switch. Each circuit represents a bit binary digit of information so that when the circuit is on it represents a “1”, and when off it represents a “0” in positive logic representation. The circuits are arranged in logic gates so that one or more of the circuits may control the state of one or more of the other circuits.
When unprocessed data is sent to the computer with the help of input devices, the data is processed and sent to output devices. The input devices may be hand-operated or automated. The act of processing is mainly regulated by the CPU. Some examples of input devices are:. The means through which computer gives output are known as output devices. Some examples of output devices are:. The control unit often called a control system or central controller manages the computer’s various components; it reads and interprets decodes the program instructions, transforming them into control signals that activate other parts of the computer.
A key component common to all CPUs is the program counter , a special memory cell a register that keeps track of which location in memory the next instruction is to be read from. The control system’s function is as follows— this is a simplified description, and some of these steps may be performed concurrently or in a different order depending on the type of CPU:. Since the program counter is conceptually just another set of memory cells, it can be changed by calculations done in the ALU.
Adding to the program counter would cause the next instruction to be read from a place locations further down the program. Instructions that modify the program counter are often known as “jumps” and allow for loops instructions that are repeated by the computer and often conditional instruction execution both examples of control flow.
The sequence of operations that the control unit goes through to process an instruction is in itself like a short computer program , and indeed, in some more complex CPU designs, there is another yet smaller computer called a microsequencer , which runs a microcode program that causes all of these events to happen.
Early CPUs were composed of many separate components. Since the s, CPUs have typically been constructed on a single MOS integrated circuit chip called a microprocessor. The ALU is capable of performing two classes of operations: arithmetic and logic. Some can operate only on whole numbers integers while others use floating point to represent real numbers , albeit with limited precision.
However, any computer that is capable of performing just the simplest operations can be programmed to break down the more complex operations into simple steps that it can perform. Therefore, any computer can be programmed to perform any arithmetic operation—although it will take more time to do so if its ALU does not directly support the operation. An ALU may also compare numbers and return Boolean truth values true or false depending on whether one is equal to, greater than or less than the other “is 64 greater than 65?
These can be useful for creating complicated conditional statements and processing Boolean logic. Superscalar computers may contain multiple ALUs, allowing them to process several instructions simultaneously. A computer’s memory can be viewed as a list of cells into which numbers can be placed or read.
Each cell has a numbered “address” and can store a single number. The computer can be instructed to “put the number into the cell numbered ” or to “add the number that is in cell to the number that is in cell and put the answer into cell Letters, numbers, even computer instructions can be placed into memory with equal ease. Since the CPU does not differentiate between different types of information, it is the software’s responsibility to give significance to what the memory sees as nothing but a series of numbers.
In almost all modern computers, each memory cell is set up to store binary numbers in groups of eight bits called a byte. To store larger numbers, several consecutive bytes may be used typically, two, four or eight. When negative numbers are required, they are usually stored in two’s complement notation. Other arrangements are possible, but are usually not seen outside of specialized applications or historical contexts.
A computer can store any kind of information in memory if it can be represented numerically. Modern computers have billions or even trillions of bytes of memory. The CPU contains a special set of memory cells called registers that can be read and written to much more rapidly than the main memory area.
There are typically between two and one hundred registers depending on the type of CPU. Registers are used for the most frequently needed data items to avoid having to access main memory every time data is needed. As data is constantly being worked on, reducing the need to access main memory which is often slow compared to the ALU and control units greatly increases the computer’s speed. ROM is typically used to store the computer’s initial start-up instructions. In general, the contents of RAM are erased when the power to the computer is turned off, but ROM retains its data indefinitely.
In embedded computers , which frequently do not have disk drives, all of the required software may be stored in ROM. Software stored in ROM is often called firmware , because it is notionally more like hardware than software. Flash memory blurs the distinction between ROM and RAM, as it retains its data when turned off but is also rewritable. It is typically much slower than conventional ROM and RAM however, so its use is restricted to applications where high speed is unnecessary.
In more sophisticated computers there may be one or more RAM cache memories , which are slower than registers but faster than main memory. Generally computers with this sort of cache are designed to move frequently needed data into the cache automatically, often without the need for any intervention on the programmer’s part.
Hard disk drives , floppy disk drives and optical disc drives serve as both input and output devices. A graphics processing unit might contain fifty or more tiny computers that perform the calculations necessary to display 3D graphics.
A era flat screen display contains its own computer circuitry. While a computer may be viewed as running one gigantic program stored in its main memory, in some systems it is necessary to give the appearance of running several programs simultaneously.
This is achieved by multitasking i. By remembering where it was executing prior to the interrupt, the computer can return to that task later. If several programs are running “at the same time”. Since modern computers typically execute instructions several orders of magnitude faster than human perception, it may appear that many programs are running at the same time even though only one is ever executing in any given instant.
This method of multitasking is sometimes termed “time-sharing” since each program is allocated a “slice” of time in turn. Before the era of inexpensive computers, the principal use for multitasking was to allow many people to share the same computer. If a program is waiting for the user to click on the mouse or press a key on the keyboard, then it will not take a “time slice” until the event it is waiting for has occurred.
This frees up time for other programs to execute so that many programs may be run simultaneously without unacceptable speed loss. Some computers are designed to distribute their work across several CPUs in a multiprocessing configuration, a technique once employed in only large and powerful machines such as supercomputers , mainframe computers and servers.
Multiprocessor and multi-core multiple CPUs on a single integrated circuit personal and laptop computers are now widely available, and are being increasingly used in lower-end markets as a result.
Supercomputers in particular often have highly unique architectures that differ significantly from the basic stored-program architecture and from general-purpose computers. Such designs tend to be useful for only specialized tasks due to the large scale of program organization required to successfully utilize most of the available resources at once. Supercomputers usually see usage in large-scale simulation , graphics rendering , and cryptography applications, as well as with other so-called ” embarrassingly parallel ” tasks.
Software refers to parts of the computer which do not have a material form, such as programs, data, protocols, etc. Software is that part of a computer system that consists of encoded information or computer instructions, in contrast to the physical hardware from which the system is built.
Computer software includes computer programs , libraries and related non-executable data , such as online documentation or digital media. It is often divided into system software and application software Computer hardware and software require each other and neither can be realistically used on its own. There are thousands of different programming languages—some intended for general purpose, others useful for only highly specialized applications.
The defining feature of modern computers which distinguishes them from all other machines is that they can be programmed. That is to say that some type of instructions the program can be given to the computer, and it will process them. Modern computers based on the von Neumann architecture often have machine code in the form of an imperative programming language. In practical terms, a computer program may be just a few instructions or extend to many millions of instructions, as do the programs for word processors and web browsers for example.
A typical modern computer can execute billions of instructions per second gigaflops and rarely makes a mistake over many years of operation.
Large computer programs consisting of several million instructions may take teams of programmers years to write, and due to the complexity of the task almost certainly contain errors. This section applies to most common RAM machine —based computers. In most cases, computer instructions are simple: add one number to another, move some data from one location to another, send a message to some external device, etc.
These instructions are read from the computer’s memory and are generally carried out executed in the order they were given. However, there are usually specialized instructions to tell the computer to jump ahead or backwards to some other place in the program and to carry on executing from there. These are called “jump” instructions or branches. Furthermore, jump instructions may be made to happen conditionally so that different sequences of instructions may be used depending on the result of some previous calculation or some external event.
Many computers directly support subroutines by providing a type of jump that “remembers” the location it jumped from and another instruction to return to the instruction following that jump instruction. Program execution might be likened to reading a book. While a person will normally read each word and line in sequence, they may at times jump back to an earlier place in the text or skip sections that are not of interest.
Similarly, a computer may sometimes go back and repeat the instructions in some section of the program over and over again until some internal condition is met. This is called the flow of control within the program and it is what allows the computer to perform tasks repeatedly without human intervention.
Comparatively, a person using a pocket calculator can perform a basic arithmetic operation such as adding two numbers with just a few button presses. But to add together all of the numbers from 1 to 1, would take thousands of button presses and a lot of time, with a near certainty of making a mistake.
On the other hand, a computer may be programmed to do this with just a few simple instructions. Programs that are in an early stage are often called “alpha” software, after the first letter in the Greek alphabet. After they mature but are not yet ready for release, they may be called “beta” software, after the second letter in the Greek alphabet.
Generally alpha software is tested by developers only, while beta software is distributed for community testing. Some systems use numerical versions less than 1 such as 0. This is a common convention in open source software. So the alpha version of the 2. An alternative is to refer to pre-release versions as “release candidates”, so that software packages which are soon to be released as a particular version may carry that version tag followed by “rc- “, indicating the number of the release candidate; when the final version is released, the “rc” tag is removed.
A software release train is a form of software release schedule in which a number of distinct series of versioned software releases for multiple products are released as a number of different “trains” on a regular schedule. Generally, for each product line, a number of different release trains are running at a given time, with each train moving from initial release to eventual maturity and retirement on a planned schedule.
Users may experiment with a newer release train before adopting it for production, allowing them to experiment with newer, “raw”, releases early, while continuing to follow the previous train’s point releases for their production systems prior to moving to the new release train as it becomes mature. Cisco’s IOS software platform used a release train schedule with many distinct trains for many years. More recently, a number of other platforms including Firefox and Fenix for Android,  Eclipse ,  LibreOffice ,  Ubuntu ,  Fedora,  Python,  digiKam  and VMware  have adopted the release train model.
Between the 1. For example, Linux 2. After the minor version number in the Linux kernel is the release number, in ascending order; for example, Linux 2. Since the release of the 2. The same odd-even system is used by some other software with long release cycles, such as Node.
Sun’s Java has at times had a hybrid system, where the internal version number has always been 1. Sun also dropped the first digit for Solaris, where Solaris 2. A similar jump took place with the Asterisk open-source PBX construction kit in the early s, whose project leads announced that the current version 1.
This approach, panned by many because it breaks the semantic significance of the sections of the version number, has been adopted by an increasing number of vendors including Mozilla for Firefox. Version numbers very quickly evolve from simple integers 1, 2, These complex version numbers are therefore better treated as character strings. Operating systems that include package management facilities such as all non-trivial Linux or BSD distributions will use a distribution-specific algorithm for comparing version numbers of different software packages.
For example, the ordering algorithms of Red Hat and derived distributions differ to those of the Debian-like distributions. As an example of surprising version number ordering implementation behavior, in Debian, leading zeroes are ignored in chunks, so that 5.
This can confuse users; string-matching tools may fail to find a given version number; and this can cause subtle bugs in package management if the programmers use string-indexed data structures such as version-number indexed hash tables. To ease sorting, some software packages represent each component of the major. Perl represents its version numbers as a floating-point number; for example, Perl’s 5. This allows a theoretical version of 5. Other software packages pack each segment into a fixed bit width; for example, on Microsoft Windows, version number 6.
The floating-point scheme breaks down if any segment of the version number exceeds ; a packed-binary scheme employing 16 bits apiece breaks down after The free-software and open source communities tend to release software early and often. Initial versions are numbers less than 1, with these 0. Backward-incompatible changes are common with 0.
Version 1. The developers of the arcade game emulator MAME do not ever intend to release a version 1. Accordingly, version 0. Since the internet has become widespread, most commercial software vendors no longer follow the maxim that a major version should be “complete” and instead rely on patches with bugfixes to sort out the known issues which a solution has been found for and could be fixed.
A relatively common practice is to make major jumps in version numbers for marketing reasons. Sometimes software vendors just bypass the 1. Other times version numbers are increased to match those of competitors. Microsoft Access jumped from version 2. Microsoft has also been the target of ‘catch-up’ versioning, with the Netscape browsers skipping version 5 to 6, in line with Microsoft’s Internet Explorer , but also because the Mozilla application suite inherited version 5 in its user agent string during pre Another example of keeping up with competitors is when Slackware Linux jumped from version 4 to version 7 in In the mids, the rapidly growing CMMS , Maximo, moved from Maximo Series 3 directly to Series 5, skipping Series 4 due to that number’s perceived marketing difficulties in the Chinese market, where the number 4 is associated with “death” see tetraphobia.
This did not, however, stop Maximo Series 5 version 4. The “Series” versioning has since been dropped, effectively resetting version numbers after Series 5 version 1. Version numbers are used in practical terms by the consumer, or client , to identify or compare their copy of the software product against another copy, such as the newest version released by the developer.
For the programmer or company, versioning is often used on a revision-by-revision basis, where individual parts of the software are compared and contrasted with newer or older revisions of those same parts, often in a collaborative version control system. In the 21st century, more programmers started to use a formalized version policy, such as the semantic versioning policy.
Versioning is also a required practice to enable many schemes of patching and upgrading software, especially to automatically decide what and where to upgrade to. Version numbers allow people providing support to ascertain exactly which code a user is running, so that they can rule out bugs that have already been fixed as a cause of an issue, and the like. This is especially important when a program has a substantial user community, especially when that community is large enough that the people providing technical support are not the people who wrote the code.
The semantic meaning  of version. As a rule of thumb, the bigger the changes, the larger the chances that something might break although examining the Changelog, if any, may reveal only superficial or irrelevant changes.
This is one reason for some of the distaste expressed in the “drop the major release” approach taken by Asterisk et alia: now, staff must or at least should do a full regression test for every update. Versioning amongst documents is relatively similar to the routine used with computers and software engineering, where with each small change in the structure, contents, or conditions, the version number is incremented by 1, or a smaller or larger value, again depending on the personal preference of the author and the size or importance of changes made.
In some cases, the use is a direct analogy for example: Jackass 2. More often it’s used to play on an association with high technology, and doesn’t literally indicate a ‘version’ e. A particularly notable usage is Web 2. From Wikipedia, the free encyclopedia. Giving a unique identifier to each software update. This article may have too many section headers dividing up its content.
Please help improve the article by merging similar sections and removing unneeded subheaders. February Learn how and when to remove this template message. Semantic Versioning 2.
Creative Commons. August 16, Libtool documentation. Retrieved April 11, September 14, Opera Software. Retrieved November 6, Movable Type Documentation Wiki. Project Online Essentials 3.
If you are a global or billing administrator, an annual commitment is required to purchase online. You can choose to pay monthly or annually. Within the Microsoft admin center, global and billing administrators can choose either annual or monthly commitment plans. All others may purchase a monthly subscription online. For frequently asked questions about Project including Project Online Essentials, visit the frequently asked questions page. A credit card is required to begin a one month trial.
The duration of the trial varies by the month you sign up. The expiration date will appear on the trial subscription details page within the Microsoft admin center. Upon the expiration of your one month trial, you will be charged the applicable subscription fee.
Cancellation can be done at any time to stop future charges. Plan 1 includes Project Online Essentials capabilities in addition to Project for the web. See the Project Online section of the Project service description.
For more detailed information on the subscriptions, see the Project service description. A comprehensive on-premises project management solution.
A flexible, scalable on-premises solution for project portfolio management and everyday project and work management. Submit timesheets to capture project and nonproject time spent for payroll, invoicing, and other business purposes. Manage demand by capturing and evaluating project ideas from anywhere in the organization through a standardized process.
Use advanced analytics to choose project proposals that best align with strategic goals and honor constraints. United States. Compare project management solutions and costs. Looking for more? Project Online Essentials 1 Try now with a partner. Project Plan 1. Buy now.


A new virus called "CodeVid-23" has spread among programmers. Rudolf, being a programmer, was not able to avoid it.

There are $$$n$$$ symptoms numbered from $$$1$$$ to $$$n$$$ that can appear when infected. Initially, Rudolf has some of them. He went to the pharmacy and bought $$$m$$$ medicines.

For each medicine, the number of days it needs to be taken is known, and the set of symptoms it removes. Unfortunately, medicines often have side effects. Therefore, for each medicine, the set of symptoms that appear when taking it is also known.

After reading the instructions, Rudolf realized that taking more than one medicine at a time is very unhealthy.

Rudolph wants to be healed as soon as possible. Therefore, he asks you to calculate the minimum number of days to remove all symptoms, or to say that it is impossible.


Sasha lives in a big happy family. At the Man's Day all the men of the family gather to celebrate it following their own traditions. There are n men in Sasha's family, so let's number them with integers from 1 to n.

Each man has at most one father but may have arbitrary number of sons.

Man number A is considered to be the ancestor of the man number B if at least one of the following conditions is satisfied:

- A = B;
- the man number A is the father of the man number B;
- there is a man number C, such that the man number A is his ancestor and the man number C is the father of the man number B.

Of course, if the man number A is an ancestor of the man number B and A ≠ B, then the man number B is not an ancestor of the man number A.

The tradition of the Sasha's family is to give gifts at the Man's Day. Because giving gifts in a normal way is boring, each year the following happens.

1. A list of candidates is prepared, containing some (possibly all) of the n men in some order.
2. Each of the n men decides to give a gift.
3. In order to choose a person to give a gift to, man A looks through the list and picks the first man B in the list, such that B is an ancestor of A and gives him a gift. Note that according to definition it may happen that a person gives a gift to himself.
4. If there is no ancestor of a person in the list, he becomes sad and leaves the celebration without giving a gift to anyone.

This year you have decided to help in organizing celebration and asked each of the n men, who do they want to give presents to (this person is chosen only among ancestors). Are you able to make a list of candidates, such that all the wishes will be satisfied if they give gifts according to the process described above?


When exceptions occur on a node in a managed node pool, Container Service for Kubernetes (ACK) automatically repairs the node. This ensures that the nodes in an ACK cluster can run as normal. After you create a managed node pool or convert a node pool into a managed node pool, auto repair is automatically enabled for the nodes in the managed node pool. ACK monitors the status of nodes in managed node pools and runs different repair tasks to fix different node exceptions. This topic describes the use scenarios and procedure of auto repair.
Conditions to trigger auto repair
kubectl describe nodecommand and check the value of the
conditionfield in the output. If a node remains in an abnormal state within a period of time that exceeds the threshold, ACK automatically runs repair tasks on the node. The following table describes the trigger conditions.
|Status||Example||Threshold (duration of a node exception that triggers auto repair)|
|NotReady||kubelet processes not responding||180s|
|DockerHung||dockerd not responding||90s|
The auto repair feature includes the following phases: diagnose node exceptions, determine whether to trigger auto repair, and run auto repair tasks.
- Normal: The node runs without exceptions.
- Error: Exceptions occur on the node.
- Failed to Recover: The node fails to recover from the exceptions after the auto repair tasks are completed.
- If a node enters an abnormal state and remains in the abnormal state for a period of time that is longer than the threshold, ACK determines that the node is in the Error state.
- After a node is considered in the Error state, ACK runs specific auto repair tasks
to fix the exceptions and generates events.
- If the node exceptions are fixed after the repair tasks are completed, the node changes to the Normal state.
- If the node exceptions persist after the repair tasks are completed, the node changes to the Failed to Recover state.
- If exceptions occur on multiple nodes in a node pool, ACK runs auto repair tasks on the nodes in sequence. If ACK fails to repair one of the nodes, ACK stops running auto repair tasks on the remaining nodes.
- If node exceptions occur in multiple node pools in a cluster, ACK runs auto repair tasks on the node pools in parallel.
- If ACK fails to repair a node, ACK disables auto repair for the node until the node recovers from exceptions.
Auto repair events
|Cause||Event level||Event description|
|NodeRepairStart||Normal||The system starts to repair the node.|
|NodeRepairAction||Normal||The repair operation on the node, for example, restart kubelet.|
|NodeRepairSucceed||Normal||The node recovers from exceptions after the repair operation is completed.|
|NodeRepairFailed||Warning||The node fails to recover from exceptions after the repair operation is completed.
For more information, see FAQ.
|NodeRepairIgnore||Normal||The repair operation is ignored on the node. If an Elastic Compute Service (ECS) node is not in the Running state, the system does not perform auto repair operations on the node.|
What do I do if ACK fails to repair a node?
The auto repair feature may fail to fix complicated node exceptions in some scenarios. If an auto repair task fails on a node or the node exception persists after an auto repair task is completed, the node enters the Failed to Recover state.
If ACK fails to repair a node in a node pool, it disables auto repair for all nodes in the node pool until the node recovers from exceptions. In this case, Submit a ticket to apply to manually fix node exceptions.
How do I disable auto repair for a node?


Basic Organization Information
- Physical Address:
Mountain View, CA
- Web URL:
- NTEE Category:
U Science and Technology Research Institutes
U41 Computer Science
- Ruling Year:
The mission of the Mozilla Foundation is to improve and protect the Internet as a public commons, by working with thousands of volunteers to (1) keep the Internet a universal platform and (2) promote continued innovation on the Internet.
Science & Technology
- Population Served:
The Mozilla Foundation oversees the Mozilla project, a worldwide open
source development project comprising thousands of contributors, almost
all of them volunteers. The Mozilla Foundation, through its
wholly-owned subsidiary the Mozilla Corporation, creates and
distributes the award-winning free and open source web browser Firefox,
used by tens of millions of people worldwide.
The Mozilla community produces a lot of great software and acts as an incubator for innovative ideas as a way to advance our mission of building a better Internet.
Program Long-Term Success:
Program Short-Term Success:
Program Success Monitored by:
Program Success Examples:
Contractor data is available for this organization!
Independent Contractor information for 2011, 2009, 2008, 2007 is available for this organization with a subscription to GuideStar Premium Pro.
GuideStar Premium Pro also includes:
- Comprehensive financial data, including functional expense detail, for every digitized fiscal year in GuideStar's database
- Ability to download up to 55 fields of data for up to 1,000 organizations at a time and up to five years worth of Income Statement
and Balance Sheet data for individual organizations
- Comprehensive advanced search capabilities, including criteria for functional expenses, investible assets, investment income
and audit & 990T filing requirements
- Ability to save organizations and searches for quick reference
- People search with salary range data
- Access to all available Forms 990
Impact Summary from the Nonprofit
This organization has not provided an impact summary.


Pet Gates For Cats. Here are a number of highest rated Pet Gates For Cats pictures upon internet. We identified it from trustworthy source. Its submitted by dispensation in the best field. We assume this kind of Pet Gates For Cats graphic could possibly be the most trending topic with we share it in google lead or facebook.
We try to introduced in this posting in the past this may be one of fabulous mention for any Pet Gates For Cats options. Dont you arrive here to know some supplementary unique pot de fleurs pas cher idea? We essentially wish you can easily take it as one of your insinuation and many thanks for your get older for surfing our webpage. engross portion this image for your beloved friends, families, work via your social media such as facebook, google plus, twitter, pinterest, or any supplementary bookmarking sites.
Pet Gate With Cat Door Petsmart, Diy Extra Large Pet Gate For Cats Kitty Loaf, Domestic Cats Kill Billions Of Mice And Birds Per Year Study Estimates, Cat Loss Poems And Quotes Quotesgram, Pet Gate With Cat Opening,


You have a string $$$s$$$ consisting of $$$n$$$ characters. Each character is either 0 or 1.

You can perform operations on the string. Each operation consists of two steps:

1. select an integer $$$i$$$ from $$$1$$$ to the length of the string $$$s$$$, then delete the character $$$s_i$$$ (the string length gets reduced by $$$1$$$, the indices of characters to the right of the deleted one also get reduced by $$$1$$$);
2. if the string $$$s$$$ is not empty, delete the maximum length prefix consisting of the same characters (the indices of the remaining characters and the string length get reduced by the length of the deleted prefix).

Note that both steps are mandatory in each operation, and their order cannot be changed.

For example, if you have a string $$$s =$$$ 111010, the first operation can be one of the following:

1. select $$$i = 1$$$: we'll get 111010 $$$\rightarrow$$$ 11010 $$$\rightarrow$$$ 010;
2. select $$$i = 2$$$: we'll get 111010 $$$\rightarrow$$$ 11010 $$$\rightarrow$$$ 010;
3. select $$$i = 3$$$: we'll get 111010 $$$\rightarrow$$$ 11010 $$$\rightarrow$$$ 010;
4. select $$$i = 4$$$: we'll get 111010 $$$\rightarrow$$$ 11110 $$$\rightarrow$$$ 0;
5. select $$$i = 5$$$: we'll get 111010 $$$\rightarrow$$$ 11100 $$$\rightarrow$$$ 00;
6. select $$$i = 6$$$: we'll get 111010 $$$\rightarrow$$$ 11101 $$$\rightarrow$$$ 01.

You finish performing operations when the string $$$s$$$ becomes empty. What is the maximum number of operations you can perform?


Everyone knows how BSNL UL users are forced to pay 100% more for 400 % (UL users get 250 kbps ,while rest get 2 Mbps !!! )slow speed .Yet I remained quite satisfies since my internet usage was quite high being a professional gamer .But recent times have left me throughly frustrated as my connection to Game (Like Counter Strike : S or TF2) hosting servers (even those in india) has become lethargic. The ping (milliseconds taken to send/receive data) to an indian server has raised from 50 to 400 (totally unplayable) . While my friends at metro cities and other ISP user are enjoying lightening fast speeds and lower costs .
Solution of your complaint
Remove the bottlenecks!!!!! Speed up the connection,a 256Mbps connection is supposed to be a lot more faster ,and what we are being provided cannot even be reffered to as broadband


Hi BW gurus,
Recently I have installed a Standard cube (0PUR_CO1) and also installed 2 Standard DataSource:- 2LIS_02_HDR, 2LIS_02_ITM.
After I activated it, I right click on the InfoCube and create Transformation, between the Cube and the DataSource.
Normally it would have auto mapped for us right from the start, However, in this case, the Transformationm, there are none are Auto Mapped.
It has a lot of InfoObject, and apart from those obvious ones (e.g. Vendor etc) I can map manually, but there are around 80 other Characteristic and Key Figures which are not mapped automatically.
Is there are function to Autp Propose Mapping between a Source and Target?
Thanks in advance,


Hii devs! I want to reset a player. Not like just teleport them back to the worldspawn and clear their inventory, I want to pretend they join again! Have you got any idea of a packet which handles this serverside? Alternative way: As I think it's pretty unlikely that there's a perfect packet for my need, I want to ask you about an alternative way. Could I maybe despawn all players and spawn them again at the worldspawn(packets!!!!) The general problem is that I've got the player stuck in a way, that only a rejoin can fix it. So I want to pretend a rejoin via packets!


Non-Privilege User Can Created New Rule and Lead to Stored Cross Site Scripting in openemr/openemr
Mar 21st 2022
Stored Cross Site-Scripting (XSS)
###Authentication Required? Yes
Non-privilege users (accounting, front-office) can create new rule and allows them to inject arbitrary web script that led to Stored Cross Site Scripting. This vulnerability found in “/interface/super/rules/index.php?action=edit!submit_summary” on one parameter (fid_title). The XSS payload will be fired in the Plan Rules that can only be viewed by privileged users.
nsure to HTML encode before inserting any untrusted data into HTML element content. Ensure all inputs entered by user should be sanitized and validated before processing and storage. Inputs should be filtered by the application, for example removing special characters such as < and > as well as special words such as script.
Aden Yap Chuen Zhen (email@example.com)
Rizan, Sheikh (firstname.lastname@example.org)
Ali Radzali (email@example.com)
Login to EMR using admin and we can see there is a Rules tab in (Administration > Practice > Rules).
Figure 1: Login as Administrator and Go to Rules tab
Login to EMR using non-privilege users (accountant, front-office) and we can see there is no Rules tab in (Administration > Practice).
Figure 2: Login as Accountant and Check For Rules tab
Using Burp, we intercept the Admin request to add new rules in Rules tab and swap the “OpenEMR” cookie using an Accountant cookie and we are be able to create new rule that contain our XSS payload.
Figure 3: Burp Request Captured Using Accountant Cookie to Create New Rule
The Raw Request looks like:
POST /openemr/interface/super/rules/index.php?action=edit!submit_summary HTTP/1.1 Host: 192.168.153.129 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 120 Origin: http://192.168.153.129 Connection: close Referer: http://192.168.153.129/openemr/interface/super/rules/index.php?action=edit!summary Upgrade-Insecure-Requests: 1 Cookie: OpenEMR=zfLGOSTbtLDyoLLIFMlBPUrBWNNlzrYN5y60Z-BItjBhTNw0; id=&fld_title=<script>alert(document.cookie)</script>&fld_developer=&fld_funding_source=&fld_release=&fld_web_reference=
Go to Rules page (Administration > Practice > Rules) and Click “Go” on Plans Configuration.
Figure 4: Plans & Rules Configuration Page
The XSS will be fired in any Plans configurations. For example, an Admin can select any plans and the cookies of the admin will be pop out in alert box.
This has been fixed in 18.104.22.168 .
Hi, Kindly issue a CVE for this vulnerability. Tq
Dear @admin I've already ping the maintainer, could you please follow up on the CVE creation? Tq
Dear @maintainer, could you kindly confirm that CVE can be created for this report? Tq
Also note that this fix is also in the recently released 6.1.0 version.
I consent to creation of CVE.


You can install Json.Net into your Visual Studio Project in 1 of 2 ways.
Install Json.Net using the Package Manager Console.
- Open the Package Manager Console window in Visual Studio either by typing package manager console in the Quick Launch box and selecting it
or by clicking View -> Other Windows -> Package Manager Console.
- Once the Package Manager Console is visible, select the project within your solution, into which you want to install Json.Net, by selecting it from the Default Project dropdown.
- Now type the following command and press enter.
- This will install the latest version of Json.Net. You will see the installation progress in the Package Manager Console. If successful, you will the message that it was successfully installed into your selected Project.
- Once installed successfully, you will now be able to see the Json.Net Assembly in the references in your selected Project. The name of the Json.Net assembly is
Json.Net is now ready for use in your project!
Install Json.Net using the Visual Studio Solution Explorer.
You can also install json.net using the Solution Explorer in Visual Studio.
Right click the References node in your Project and click Manage Nuget Packages...
In the Nuget Package Manager Dialog box, make sure Online is selected in the left pane. Type Json.Net in the search box in the top right. This will display the Json.Net Nuget Package in the search results pane in the middle.
Click the Install button.
- You will see the installation progress in the progress window that will pop up.
- Once the installation is complete, you will see a green check-mark next to the Json.Net package in the Nuget Package Manager dialog box.
- You will also see the
Newtonsoft.Json Assembly in the References node in your solution explorer for your selected project.
This completes the installation of Json.Net. You are now ready to use it in your project to perform various operations on json data.


Limak is a little polar bear. He has n balls, the i-th ball has size ti.

Limak wants to give one ball to each of his three friends. Giving gifts isn't easy — there are two rules Limak must obey to make friends happy:

- No two friends can get balls of the same size.
- No two friends can get balls of sizes that differ by more than 2.

For example, Limak can choose balls with sizes 4, 5 and 3, or balls with sizes 90, 91 and 92. But he can't choose balls with sizes 5, 5 and 6 (two friends would get balls of the same size), and he can't choose balls with sizes 30, 31 and 33 (because sizes 30 and 33 differ by more than 2).

Your task is to check whether Limak can choose three balls that satisfy conditions above.


#include <stdio.h>
#include <stdlib.h>

#if defined(_WIN32)
  #define EXPORT __declspec(dllexport)
#elif defined(__linux__)
  #define EXPORT __attribute__((visibility("default")))
#else
  #define EXPORT
#endif

int length = 0;
char hello[] = "Hello World!";
int i;

EXPORT int init(){
    for(i = 0; hello[i] != '\0'; i++);
    length = i;
    i = 0;
    return 2;
}

EXPORT void input(char data, int pos){

}

EXPORT char output(int pos){
    char x;
    switch(pos){
        case 0:
            return (char)(length - i);
        break;
        case 1:
            x = hello[i];
            i++;
            return x;
    }
    return 0;
}


You can send your report in this board, please follow the following format:
- What is the topic?
- Which server?
- When did it happen?
- What is the Issue exactly?
- Any media (screenshots, clips, logs, etc.) to show/describe the problem?
- Steamid.io link when reporting a player. You can get the player's steam id in the in-game chat when they join or leave the game, or by holding tab and opening their steam profile from the scoreboard if the gamemode allows it. (i.e what a steam id looks like: STEAM_0:0:49243633)
A Discord call could be requested to find a solution to the problem or get a better understanding of the issue.
- Rules on Reports: -
🐲 Devil Yami 🐲
Owner and Founder


The guru of Services Drafts William Normandin I am an experienced web hosting expert with experience building, repairing, and migrating Linux hosted websites. Hello! I am a highly motivated IT professional working in the web hosting field. I have extensive experience in supporting and designing Linux hosted websites, e-mail, DNS, and etc.In addition, my projects have included Python Gtk application design and deployment (using Github), MSSQL Server CRM application development in VBA, PHP site design and deployment, customer database solutions, and more! Work Terms I am available by skype and phone, but prefer e-mail for the text chain it creates. I do have regular employment but I am flexible and willing to work with client needs.


specific action log: updateTimerTotalTimeInTagWindow
#
#Stop script if user is NOT in the process of picking a specific action group.
If [ $$pick = 1 ]
Show Custom Dialog [ Message: "Pick a specific-action tag or click the cancel button in the Tag window. After you do this you
can re-calculate total time logged under each tag."; Buttons: “OK” ]
Exit Script [ ]
End If
#
Set Error Capture [ On ]
Allow User Abort [ Off ]
#
#Prevent windows from flashing and script from slowing
Set Variable [ $$stopRecordLoad; Value:1 ]
#
New Window [ Height: 1; Width: 1; Top: -1000; Left: -1000 ]
#
#This duplicate layout has no script triggers or conditional
#formatting and so speeds up the script steps.
Go to Layout [ “IssuesLayoutForScripts” (issue) ]
#
Set Variable [ $$stopRecordLoad ]
#
#First find all the issues in this category.
Enter Find Mode [ ]
Set Field [ issue::_keyBrainstate; $$logBrainstate ]
Set Field [ issue::lock; "issue" ]
Perform Find [ ]
#
#
#Sort them to trigger the calcuation of their
#total time.
Sort Records [ Specified Sort Order: issue::_keyCategory; ascending ]
[ Restore; No dialog ]
#
Go to Record/Request/Page
[ First ]
Set Variable [ $category; Value:issue::_keyCategory ]
Set Field [ issueCategory::issueTotalTime; GetSummary ( issue::timeSummary ; issue::_keyCategory ) ]
Loop
If [ $category ≠ issue::_keyCategory ]
Set Field [ issueCategory::issueTotalTime; GetSummary ( issue::timeSummary ; issue::_keyCategory ) ]
Set Variable [ $category; Value:issue::_keyCategory ]
End If
Go to Record/Request/Page
[ Next; Exit after last ]
End Loop
#
#
#
#
#Add up total time for all actions with this category tag.
Go to Layout [ “calcDayTable” (day1) ]
Enter Find Mode [ ]
Set Field [ day1::_keyBrainstate; $$logbrainstate ]
Perform Find [ ]
Go to Record/Request/Page
[ First ]
Loop
Set Variable [ $totalTime; Value:$time + day1::swTotalActivity ]
Set Variable [ $time; Value:$totalTime ]
Go to Record/Request/Page
[ Next; Exit after last ]
End Loop
#
Close Window [ Current Window ]
Set Field [ brainstate::totalTimeLogged; $totalTime ]
Sort Records [ Specified Sort Order: issue::order; based on value list: “1-99”
group::text; ascending
category::sortTime; ascending
category::text; ascending ]
[ Restore; No dialog ]
Set Field [ reference::tagCatSort; "group" ]
#
#
January 3, ଘ౮28 20:25:38 ActionLog.fp7 - updateTimerTotalTimeInTagWindow -1-


This directory is part of a hierarchy that contains stable and occasionally BETA releases of libvanessa_socket
For more information about Vanessa please visit http://projects.horms.net/projects/vanessa/
The primary download site for libvanessa_socket is http://projects.horms.net/projects/vanessa/download/vanessa_socket/
Packages & Ports:
libvanessa_socket is released under the GNU Lesser Public
Licence and sample code is released under the GNU General Public Licence.
Copyright is maintained by the authors, Simon Horman et al.
(c) 1999-2015 Simon Horman
Debian is a registered trademark of Software in the Public Interest, Inc.
Ubuntu is a registered trademarks of Canonical Ltd.
openSUSE is a trademarks of Novell, Inc. in the United States and other countries.
The mark FreeBSD is a registered trademark of The FreeBSD Foundation.


Game Development Meta
to customize your list.
more stack exchange communities
Reputation and Badges
Start here for a quick overview of the site
Detailed answers to any questions you might have
Discuss the workings and policies of this site
Learn more about Stack Overflow the company
Learn more about hiring developers or posting ads with us
tag has no usage guidance.
SDL2 SDL_PollEvent endless polling on key hold
What is wrong with SDL2 SDL_PollEvent() function? When I press-and-hold a key it enters "while (SDL_PollEvent())" block each frame. If in previous frame event queue was emptied and in new frame I ...
May 5 at 20:32
recently active polling questions feed
unanswered question tagged
Hot Network Questions
Are deleted WhatsApp messages still recoverable even after deleting a contact
New company doesn't allow 401k deposits for 6 months, what to do with money I used to deposit?
Did JKR make some kind of an inside joke about Moaning Myrtle's death?
Will it damage my MacBook if I put it in the fridge to cool it down?
Is it ethical to use a recommendation letter from a deceased professor?
How to reconcile a feudal system with a congressional/parliamentary democracy...?
Do they really need to fear the White Walkers?
What if a boss requires supervision?
To donate something you want to throw away
How do I wipe an encrypted USB flash drive?
A game of words and numbers with no 0's
Is a cardboard box allowed as carry-on luggage?
Is it easier to get to and from the moon than to the bottom of the Mariana Trench?
How do I prevent a character from being resurrected?
Why were women targeted as witches?
Power sums of p-th roots of unity
Would biological brain in a box considerably increase life expectancy?
Knight on the Rim is Grim
Recursion bracketed; or Dyck words generation
Can I profit from anticipating a drop in value?
Why did he keep the truth from his wife?
Is it better to return an ImmutableMap or a Map?
Does the Dory-like fish actually have a short-term memory loss?
more hot questions
Life / Arts
Culture / Recreation
TeX - LaTeX
Unix & Linux
Ask Different (Apple)
Geographic Information Systems
Science Fiction & Fantasy
Movies & TV
Seasoned Advice (cooking)
Personal Finance & Money
English Language & Usage
Mi Yodeya (Judaism)
Cross Validated (stats)
Theoretical Computer Science
Meta Stack Exchange
Stack Overflow Careers
site design / logo © 2016 Stack Exchange Inc; user contributions licensed under
cc by-sa 3.0


Knowing the unknown - Discover your organization’s attack surface using Suricata data
Building a vision of an information system is critical in a lot of situations like a MSSP working with a new customer or an incident response case. It is important to know the unknown. Without a clear understanding, decisions about priority and responses will be wrong. This training will introduce a methodology using passive network data monitoring to fix that situation using data that is commonly captured but often disregarded.
Network Security Monitoring data generated by Suricata can be used to build a representation of the internal attack surface within a company network. Inventory tools are often used to determine things such as the list of services on the network but this is a declarative approach and it can not be considered as the ultimate truth. In the case of a large organization, the difference between what is declared in the inventory and the actual reality can differ significantly.
Traditional approaches to complement inventory rely on scanning the network to find services. Although useful, this scan will not provide information about the usage of these systems and services. And it will not instantly detect updates to the information systems such as a new service being set up and used.
In this training, we will show how you can use data collected passively from Suricata sensors to build the attack surface of an organization and track its changes.
The training will consist of hands-on exercises where the trainee will analyze PCAP files with Suricata and build searches and dashboards using Kibana and Splunk as well as JQ for fast command line based results and Jupyter notebook for an algorithmic approach.