Sunday, May 14, 2017

I.T. common sense

Hope you haven't been too put out by the WanaCry ransomware attack.

As ever, the cheapest ways to do this is:-
* Ensure staff are trained well. Especially the non-technical staff.
* Ensure all computers have their software regularly updated with maintenance/security updates (aka patches).

The term "patch" comes from the Open Source community on the Internet.

Software written as scripts (Basic, Ruby, Perl, Python etc) are provided in source code form and require another programme, an interpreter to run them. Here is an example programme in Ruby:-

#!/usr/bin/env ruby
require 'Qt'

# For info on using Qt from Ruby programs, see my file qt-notes.txt

app = Qt::Application.new(ARGV)

hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show

app.exec

So... if someone wanted to improve the above programme, they would edit the above programme on their system. They would then put the original script and the updated script through a programme called diff, that lists the changes that have been supplied. Then the original author can take those patches and make the changes by running the original script and changed script through a programme called patch. Hence the name "patch" :)

Software written in compiled languages (C,C++ etc) can be provided in source code form. Here is an example:-

/*
 Hello Concurrent World example program.
 This text here is part of a multi-line comment
*/


#include <iostream>
#include <thread>

void hello()
{
    std::cout<<"Hello Concurrent World"<<std::endl;
}

int main()
{
    std::thread t(hello);
    t.join();
}

You would run the above software by running it through a compiler, That takes the programme text - and compiles it into binary file(s) suitable for a particular hardware architecture and you run that.

Given the source code, however, someone can improve the software by making changes and again use diff and patch to provide the original author with their proposed changes.

Software would be shared by people on hardware platforms with wildly different architectures and operating systems.

When people talk about "patching" Windows systems they are typically referring to downloading binaries. Someone, somewhere, will have the source code, will have identified and fixed bug(s), compiled it into binary and made it available via Microsoft's Window updates facilities.