Jump to content

fiveworlds

Senior Members
  • Posts

    1903
  • Joined

  • Last visited

Posts posted by fiveworlds

  1. Quote

    If people don't report bugs, to software developers, they will remain.

    I reported it straight away but have yet to hear back from them and it has been a good few days. This isn't the first computer that has had problems with drivers I just find it frustrating that they haven't properly tested software which could make my computer completely unusable.

  2. Just the other day my computer "decided that it wouldn't wake up from sleep mode anymore" this happened as a result of a bad intel graphics driver automatic update. So I had to search for an old driver that would work on my system. The problem is that no games will play on the driver that I found because it is over 2 years old. Is intel legally allowed to automatically update me to a driver that is obviously completely untested on my computer? Surely they could make the update software know that a driver will not work on my chipset.

  3. So I sometimes do freelance programming work and I got an email last night I am kind of worried about. Whoever it is wants to hire a black-hat hacker to hack a university for $1000 which I definitely wouldn't do but I don't want whoever this student is finding somebody who might do not so nice things to them.

    bFy9ZTe.png

     

     

  4. Quote

    For a 'normal' wireless printer to work with only one single PC;  is a wireless router needed ?

    No you should just be able to connect to the printer. But you say the printer doesn't normally support wireless.

    Quote

    A printer that works fine wired trough USB has been added a generic adapter at its USB jack that allows Wireless

    So the printer isn't normally configured to use the USB jack as a Wi-Fi adapter meaning the printer might require additional software in order to run the Wi-Fi adapter. Are you sure the generic adapter supports a mobile hotspot?? There is a specific type of adapter you can get called a wireless print server https://www.lifewire.com/wireless-product-equipment-818274

     

     

     

  5. Quote

    The Java Math.hypot(x,y) function will calculate this without overflow. (Again, not relevant to performance.)

    So you can get it running then? Cool.

    1. So take a list of cities and then create a new list.
    2. Add 3 cities to the new list because the first 3 cities can be put anywhere
    3. Then for each city in the list of cities find the position in the new list which results in the lowest change in distance using the cumulative distance formula

    This should run in O(n) since for each new city you only need n checks to find the position it fits best.

     

  6. Quote

    Square roots shouldn’t be an issue for a problem that small. Excel handles calculations of distances in loops with 30 city’s, most involving irrational numbers, without any lag and Excel is not exactly known for it’s efficiency. 

    There is workarounds like this example from jsfromhell.com but they tend to be slow.

    
    BigNumber = function(n, p, r){
        var o = this, i;
        if(n instanceof BigNumber){
            for(i in {precision: 0, roundType: 0, _s: 0, _f: 0}) o[i] = n[i];
            o._d = n._d.slice();
            return;
        }
        o.precision = isNaN(p = Math.abs(p)) ? BigNumber.defaultPrecision : p;
        o.roundType = isNaN(r = Math.abs(r)) ? BigNumber.defaultRoundType : r;
        o._s = (n += "").charAt(0) == "-";
        o._f = ((n = n.replace(/[^\d.]/g, "").split(".", 2))[0] = n[0].replace(/^0+/, "") || "0").length;
        for(i = (n = o._d = (n.join("") || "0").split("")).length; i; n[--i] = +n[i]);
        o.round();
    };
    with({$: BigNumber, o: BigNumber.prototype}){
        $.ROUND_HALF_EVEN = ($.ROUND_HALF_DOWN = ($.ROUND_HALF_UP = ($.ROUND_FLOOR = ($.ROUND_CEIL = ($.ROUND_DOWN = ($.ROUND_UP = 0) + 1) + 1) + 1) + 1) + 1) + 1;
        $.defaultPrecision = 40;
        $.defaultRoundType = $.ROUND_HALF_UP;
        o.add = function(n){
            if(this._s != (n = new BigNumber(n))._s)
                return n._s ^= 1, this.subtract(n);
            var o = new BigNumber(this), a = o._d, b = n._d, la = o._f,
            lb = n._f, n = Math.max(la, lb), i, r;
            la != lb && ((lb = la - lb) > 0 ? o._zeroes(b, lb, 1) : o._zeroes(a, -lb, 1));
            i = (la = a.length) == (lb = b.length) ? a.length : ((lb = la - lb) > 0 ? o._zeroes(b, lb) : o._zeroes(a, -lb)).length;
            for(r = 0; i; r = (a[--i] = a[i] + b[i] + r) / 10 >>> 0, a[i] %= 10);
            return r && ++n && a.unshift(r), o._f = n, o.round();
        };
        o.subtract = function(n){
            if(this._s != (n = new BigNumber(n))._s)
                return n._s ^= 1, this.add(n);
            var o = new BigNumber(this), c = o.abs().compare(n.abs()) + 1, a = c ? o : n, b = c ? n : o, la = a._f, lb = b._f, d = la, i, j;
            a = a._d, b = b._d, la != lb && ((lb = la - lb) > 0 ? o._zeroes(b, lb, 1) : o._zeroes(a, -lb, 1));
            for(i = (la = a.length) == (lb = b.length) ? a.length : ((lb = la - lb) > 0 ? o._zeroes(b, lb) : o._zeroes(a, -lb)).length; i;){
                if(a[--i] < b[i]){
                    for(j = i; j && !a[--j]; a[j] = 9);
                    --a[j], a[i] += 10;
                }
                b[i] = a[i] - b[i];
            }
            return c || (o._s ^= 1), o._f = d, o._d = b, o.round();
        };
        o.multiply = function(n){
            var o = new BigNumber(this), r = o._d.length >= (n = new BigNumber(n))._d.length, a = (r ? o : n)._d,
            b = (r ? n : o)._d, la = a.length, lb = b.length, x = new BigNumber, i, j, s;
            for(i = lb; i; r && s.unshift(r), x.set(x.add(new BigNumber(s.join("")))))
                for(s = (new Array(lb - --i)).join("0").split(""), r = 0, j = la; j; r += a[--j] * b[i], s.unshift(r % 10), r = (r / 10) >>> 0);
            return o._s = o._s != n._s, o._f = ((r = la + lb - o._f - n._f) >= (j = (o._d = x._d).length) ? this._zeroes(o._d, r - j + 1, 1).length : j) - r, o.round();
        };
        o.divide = function(n){
            if((n = new BigNumber(n)) == "0")
                throw new Error("Division by 0");
            else if(this == "0")
                return new BigNumber;
            var o = new BigNumber(this), a = o._d, b = n._d, la = a.length - o._f,
            lb = b.length - n._f, r = new BigNumber, i = 0, j, s, l, f = 1, c = 0, e = 0;
            r._s = o._s != n._s, r.precision = Math.max(o.precision, n.precision),
            r._f = +r._d.pop(), la != lb && o._zeroes(la > lb ? b : a, Math.abs(la - lb));
            n._f = b.length, b = n, b._s = false, b = b.round();
            for(n = new BigNumber; a[0] == "0"; a.shift());
            out:
            do{
                for(l = c = 0, n == "0" && (n._d = [], n._f = 0); i < a.length && n.compare(b) == -1; ++i){
                    (l = i + 1 == a.length, (!f && ++c > 1 || (e = l && n == "0" && a[i] == "0")))
                    && (r._f == r._d.length && ++r._f, r._d.push(0));
                    (a[i] == "0" && n == "0") || (n._d.push(a[i]), ++n._f);
                    if(e)
                        break out;
                    if((l && n.compare(b) == -1 && (r._f == r._d.length && ++r._f, 1)) || (l = 0))
                        while(r._d.push(0), n._d.push(0), ++n._f, n.compare(b) == -1);
                }
                if(f = 0, n.compare(b) == -1 && !(l = 0))
                    while(l ? r._d.push(0) : l = 1, n._d.push(0), ++n._f, n.compare(b) == -1);
                for(s = new BigNumber, j = 0; n.compare(y = s.add(b)) + 1 && ++j; s.set(y));
                n.set(n.subtract(s)), !l && r._f == r._d.length && ++r._f, r._d.push(j);
            }
            while((i < a.length || n != "0") && (r._d.length - r._f) <= r.precision);
            return r.round();
        };
        o.mod = function(n){
            return this.subtract(this.divide(n).intPart().multiply(n));
        };
        o.pow = function(n){
            var o = new BigNumber(this), i;
            if((n = (new BigNumber(n)).intPart()) == 0) return o.set(1);
            for(i = Math.abs(n); --i; o.set(o.multiply(this)));
            return n < 0 ? o.set((new BigNumber(1)).divide(o)) : o;
        };
        o.set = function(n){
            return this.constructor(n), this;
        };
        o.compare = function(n){
            var a = this, la = this._f, b = new BigNumber(n), lb = b._f, r = [-1, 1], i, l;
            if(a._s != b._s)
                return a._s ? -1 : 1;
            if(la != lb)
                return r[(la > lb) ^ a._s];
            for(la = (a = a._d).length, lb = (b = b._d).length, i = -1, l = Math.min(la, lb); ++i < l;)
                if(a[i] != b[i])
                    return r[(a[i] > b[i]) ^ a._s];
            return la != lb ? r[(la > lb) ^ a._s] : 0;
        };
        o.negate = function(){
            var n = new BigNumber(this); return n._s ^= 1, n;
        };
        o.abs = function(){
            var n = new BigNumber(this); return n._s = 0, n;
        };
        o.intPart = function(){
            return new BigNumber((this._s ? "-" : "") + (this._d.slice(0, this._f).join("") || "0"));
        };
        o.valueOf = o.toString = function(){
            var o = this;
            return (o._s ? "-" : "") + (o._d.slice(0, o._f).join("") || "0") + (o._f != o._d.length ? "." + o._d.slice(o._f).join("") : "");
        };
        o._zeroes = function(n, l, t){
            var s = ["push", "unshift"][t || 0];
            for(++l; --l;  n[s](0));
            return n;
        };
        o.round = function(){
            if("_rounding" in this) return this;
            var $ = BigNumber, r = this.roundType, b = this._d, d, p, n, x;
            for(this._rounding = true; this._f > 1 && !b[0]; --this._f, b.shift());
            for(d = this._f, p = this.precision + d, n = b[p]; b.length > d && !b[b.length -1]; b.pop());
            x = (this._s ? "-" : "") + (p - d ? "0." + this._zeroes([], p - d - 1).join("") : "") + 1;
            if(b.length > p){
                n && (r == $.DOWN ? false : r == $.UP ? true : r == $.CEIL ? !this._s
                : r == $.FLOOR ? this._s : r == $.HALF_UP ? n >= 5 : r == $.HALF_DOWN ? n > 5
                : r == $.HALF_EVEN ? n >= 5 && b[p - 1] & 1 : false) && this.add(x);
                b.splice(p, b.length - p);
            }
            return delete this._rounding, this;
        };
    }

    I wonder if you can get away with not using square roots at all. For comparing two distances by hand you can do.

    root((x1-x2)^2 * (y1-y2)^2) = root((x3-x4)^2 * (y3-y4)^2)

    then the roots cancel. So you get 

    (x1-x2)^2 + (y1-y2)^2 = (x3-x4)^2 + (y3-y4)^2

    but here you have 4 distances so it is 

    root((x1-x2)^2 + (y1-y2)^2) + root((x1-x3)^2 + (y1-y3)^2) = root((x4-x5)^2 + (y4-y5)^2) + root((x4-x6)^2 + (y4-y6)^2)

    which becomes 

    root((x1-x2)^2 + (y1-y2)^2) + root((x1-x3)^2 + (y1-y3)^2) / root((x4-x5)^2 + (y4-y5)^2) + root((x4-x6)^2 + (y4-y6)^2) = c

    where we need to find if c is positive or negative.

    maybe it is still possible to cancel the roots but it is a bit harder.

  7. Quote

    Could you possibly include comment statements?

    I can. Since this is better explained in Java I wrote it in java. First we create the class to run the actual program. Here I generate a few cities and add them to the list of cities.

    package mycode.tsp;
    /////
    //  Runs the program and generates the list of cities
    /////
    public class MyMain {
        public static double coordinates[] = {10,20,30};
        public static Cities cities;
        public static void main(String[] args) {
            City city = new City("Washington",coordinates);
            System.out.println(city.name + " --> " + city.coords[0] + "," + city.coords[1] + "," + city.coords[2]);
            cities = new Cities(10);
            cities.addCity(city);
    
            coordinates[0] = 30;
            coordinates[1] = 40;
            coordinates[2] = 50;
            city = new City("Paris",coordinates);
            cities.addCity(city);
    
            coordinates[0] = 60;
            coordinates[1] = 80;
            coordinates[2] = 30;
            city = new City("Berlin",coordinates);
            cities.addCity(city);
    
            coordinates[0] = 20;
            coordinates[1] = 100;
            coordinates[2] = 70;
            city = new City("New York",coordinates);
            cities.addCity(city);
    
            coordinates[0] = 30;
            coordinates[1] = 45;
            coordinates[2] = 50;
            city = new City("Hong Kong",coordinates);
            cities.addCity(city);
    
            for (int k = 0; k < cities.cities.size(); k++){
                System.out.println(cities.cities.get(k).name);
            }
        }
    }

    Next is the city Object which contains information about each city like name and position etc.

    package mycode.tsp;
    
    /////
    //  The city object which contains the name and position of the city.
    /////
    public class City {
        public String name;
        public double coords[] = new double[3];
        public City(String name, double[] coordinates){
            this.name = name;
            this.coords = coordinates;
        }
    }

    Then there is the class that does all the actual calculation.

    package mycode.tsp;
    
    import java.util.ArrayList;
    
    /////
    //  The cities object which is the list containing all the cities
    /////
    public class Cities {
        public static ArrayList<City> cities;
        public static int size;
        public City temp;
        public static int index = -1;
        public boolean swapped;
        public int i;
        public static double
            coodinates[],
            coodinates2[],
            distance4, distance2;
    
        ///
        // Create the object
        ///
    
        public Cities(int size){
            cities = new ArrayList<City>();
            this.size = size;
        }
    
        public void addCity(City city){
            if(cities.size() > 1){
    
                swapped = true;
                while (swapped){
    
                    distance4 = cumulativeDistance(
                        cities.get(cities.size()-1),
                        cities.get(0),
                        cities.get(1),
                        city
                    );
                    System.out.println("test " + city.name + " "+distance4);
                    ///
                    // The first Problem
                    ///
                    cities.add(city);
    
                }
    
            } else {
                cities.add(city);
            }
        }
    
        ///
        // Cumulative Distance Formula
        ///
        private double cumulativeDistance(City left,City middle,City right,City middle2){
            return  loopedDistance(left, middle,right) - loopedDistance(left, middle2, right);
        }
    
        ///
        // Looped Distance Formula
        ///
        private double loopedDistance(City left,City middle,City right){
            return distance(left.coords, middle.coords)+distance(right.coords, middle.coords);
        }
    
        ///
        // Euclidean Distance Formula
        ///
        private double distance(double coordinates[], double coordinates2[]){
            double distance3 = 0;
            int t = 0;
            while (t < 3){
                distance3 = distance3 + Math.pow((coordinates[t] - coordinates2[t]), 2);
                t++;
            }
            return Math.sqrt(distance3);
        }
    }

    The first problem is that when I try to get the cumulative distance then the result is.

    Berlin Cumulative Distance --> 0.0
    New York Cumulative Distance --> 0.0
    Hong Kong Cumulative Distance -->  0.0

    This is because the computer handles square roots badly. So then you would have to work out a way of finding the cumulative distance quickly (that is to say in polynomial time) since the rest is basically just bubble sort.

    I would imagine the fastest way of solving the square root problem is to design a rom chip which maps integers to their square root then send data from java to the chip and get the result. 

  8. Quote

    Alternatively, if we could literally move the cities with some mimum distance to each other in ofrder to design the shortest path it would always require the cities to be located on equidistant points of a circle to form a symetrical polygon:

    Hmm I suppose that might work.

    d6eSIfV.png

     
    <script>
    var cities = [[0,0],[30,40],[100,50]];
    var distances = [];
    var temp = [,];
    var newTempCumulativeDistance;
    var newTempCumulativeDistance2;
    var tempCumulativeDistance;
    var tempCumulativeDistance2;
    function distanceFormula(x1,y1,x2,y2){
        return Math.sqrt((x2-x1)+(y2-y1))
    }
    
    for(var i = 0; i < cities.length - 1; i++){
        distances[i] = distanceFormula(cities[i][0],cities[i][1],cities[i+1][0],cities[i+1][1]);
    }
    distances[distances.length] = distanceFormula(cities[0][0],cities[0][1],cities[cities.length-1][0],cities[cities.length-1][1]);
    
    tempCumulativeDistance = distances[0] + distances[distances.length - 1];
    for(var t = 1; t < cities.length - 1; i++){
        newTempCumulativeDistance = distanceFormula(cities[t][0],cities[t][1],cities[cities.length-1][0],cities[cities.length-1][1]) + distanceFormula(cities[t][0],cities[t][1],cities[1][0],cities[1][1]);
        newTempCumulativeDistance2 = newTempCumulativeDistance + distanceFormula(cities[0][0],cities[0][1],cities[t-1][0],cities[t-1][1]) + distanceFormula(cities[0][0],cities[0][1],cities[t+1][0],cities[t+1][1]);
        tempCumulativeDistance2 = distances[t] + distances[t-1] + tempCumulativeDistance;
        if(newTempCumulativeDistance2 < tempCumulativeDistance2){
            temp[0] = cities[0][0];
            temp[1] = cities[0][1];
            cities[0][0] = cities[t][0];
            cities[0][1] = cities[t][1];
            cities[t][0] = temp[0];
            cities[t][1] = temp[1];
            temp[0] = distances[0];
            temp[1] = distances[distances.length - 1];
            distances[0] = newTempCumulativeDistance;
            distances[1] = newTempCumulativeDistance2;
            distances[t] = temp[0];
            distances[t+1] = temp[1];
            tempCumulativeDistance = distances[i] + distances[i - 1];
        }
    }
    
    for(var i = 1; i < cities.length - 1; i++){
        tempCumulativeDistance = distances[i] + distances[i - 1];
        for(var t = i; t < cities.length - 1; i++){
            newTempCumulativeDistance = distanceFormula(cities[t][0],cities[t][1], cities[i-1][0],cities[i-1][1]) + distanceFormula(cities[t][0],cities[t][1],cities[i+1][0],cities[i+1][1]);
            newTempCumulativeDistance2 = newTempCumulativeDistance + distanceFormula(cities[i][0],cities[i][1],cities[t-1][0],cities[t-1][1]) + distanceFormula(cities[i][0],cities[i][1],cities[t+1][0],cities[t+1][1]);
            tempCumulativeDistance2 = distances[t] + distances[t-1] + tempCumulativeDistance;
            if(newTempCumulativeDistance2 < tempCumulativeDistance2){
                temp[0] = cities[i][0];
                temp[1] = cities[i][1];
                cities[i][0] = cities[t][0];
                cities[i][1] = cities[t][1];
                cities[t][0] = temp[0];
                cities[t][1] = temp[1];
                temp[0] = distances[i];
                temp[1] = distances[i - 1];
                distances[0] = newTempCumulativeDistance;
                distances[1] = newTempCumulativeDistance2;
                distances[t] = temp[0];
                distances[t+1] = temp[1];
                tempCumulativeDistance = distances[i] + distances[i - 1];
            }
        }
    }
    console.log(distances.reduce(function(pv, cv) { return pv + cv; }, 0));
    </script>

     

  9. Quote

    my own website 

    For websites there is w3schools

    Quote

    but i'm also interested in programming games 

    For games there is Handmade Hero. Be warned it is over 1000 hours long.

     

  10. Quote

    Good reply fiveworlds, +1 , but will the manufacturer actually cooperate?

    Only if the phone is under warranty and even then they'll try to tell you it was the apps you installed so they don't bear responsibility to fix it. All the firmware would be available for people like me to fix phones but it isn't. They want people going back to the manufacturer and buying new phones. Apple used to brick people's phones if you replaced a button but they got sued so I imagine they don't do that anymore. https://www.theguardian.com/technology/2016/feb/12/seattle-law-firm-files-first-lawsuit-against-apple-over-iphone-error-53

     

  11.  To be 100% sure your phone is free of viruses you will need to send it back to the manufacturer and get their firmware reinstalled. Phone drivers tend to be device specific so I can't just give you an arbitrary firmware in the hope it will work.

    Sometimes manufacturer firmware can be found on their website if the phone was very buggy. For instance the Samsung galaxy S8 firmware can be found here https://www.samsung.com/us/support/owners/product/galaxy-s8-unlocked#downloads 

    Note that region is important two phones with the same model number but manufactured for different phone carriers and countries will tend to have different firmware.

     

  12. Quote

    It seems they can easily break even RSA nowadays with help of an acoustic microphone.

    Yes it is an interesting article another way is to just decrypt the RSA algorithm stored on the computer.

    Quote

    but also make smartphone completely invulnerable to hackers

    Smartphones are only vulnerable to hackers if there is a problem with the software or hardware that allows them to do so. Encryption tends to have little to do with real hacking. You can also tell which version of RSA encryption was used by packet sniffing.

    Secure Socket Layer
        SSLv2 Record Layer: Client Hello
            Length: 103
            Handshake Message Type: Client Hello (1)
            Version: SSL 3.0 (0x0300)
            Cipher Spec Length: 78
            Session ID Length: 0
            Challenge Length: 16
            Cipher Specs (26 specs)
                Cipher Spec: SSL2_RC4_128_WITH_MD5 (0x010080)
                [ more Cipher Specs deleted ]
            Challenge

    As you can see from the above they are using ssl version 3 implementing SSL2_RC4_128_WITH_MD5 encryption. That encryption algorithm is on your computer but you can just look it up. The researchers using the microphones only decrypted RSA on a computer that knew the private decryption key. They can't use a computer that doesn't know the private decryption key to decrypt the message in the same way so RSA 4000+ is still a fairly safe encryption to use.

     

     

  13. Quote

    One of my current assignments involves me finding someone currently working in the computer sciences field.

    Computer Science is a very broad field it is like saying you work in chemistry or medicine. Generally everybody in computer science is specialised into a particular area. Specializations include:

    • Software Developer
    • Database Administrator
    • Data Warehousing
    • Data Architect
    • Technical Support
    • Scrum Master
    • Network Administrator
    • Network Architect
    • Network Engineer
    • Wireless Network Engineer
    • Network Security Engineer
    • Telecommunications Manager
    • Datacentre Design
    • Computer Hardware Engineer
    • Computer Systems Analyst
    • Business Systems Analyst
    • Web Developer
    • Front End Developer
    • Back End Developer
    • Ecommerce Analyst
    • Dev Ops
    • Computer Security
    • Operating Systems
    • Hypervisors and Virtualisation
    • Broadcasting
    • Pen Tester
    • Project Manager 
    • Data Modelling
    • IT Manager
    • Ux/Ui Designer
    • Game Development
    • Environment engineering
    • Building Modelling (CAD etc)
    • etc
    Quote

    What education did you take in order for you to acquire your job (Degrees, University, Other extra-curricular programs) 

     

    Most of the higher paid jobs $2,000,000.00+ require a university level qualification in a related field such as computer science, electrical engineering, network engineering etc. Technical support tends not to require a degree but supporting documentation may be required such as evidence you did specific online tutorials etc.

    Quote

    What does your typical day look like? (What does your work involve you doing. How long do you work. What kinds of problems/tasks do you encounter?) 

    Depends on wheter I am working remote or not. Since I work as a freelance consultant at the moment much of my work is remote and highly varied. Generally I do network architecture designing scalable networks for my customers. Often this includes designing the wired telephone systems and email systems for an office, configuring public ip addresses, managing servers, setting up windows networking like you would most likely have in school. Often the client has a specific design or system they would like to have implemented for instance asterisk, opendigitalradio, plesk etc. My current contract involves designing a dab multiplex for the state radio broadcaster. The system was required to generate a 20Kw radio signal minimum and contained in a box that could be mass produced.

    My brother on the other hand is a software developer works in a factory office full time but can work from home when he is not required in the office which is most of the time. His office runs an agile work environment with perforce for version control and docker for builds. They design enterprise storage solutions for large companies which usually cost $1,000,000 minimum. He has to do all remote work from his work laptop. Generally his work includes being online when the technical support team emails him about an issue a customer is having then he would have to solve the issue and email the technical support team with his solution. He sometimes gets specific projects to work on where he would be working with the international team which would require him to go into the office to have a meeting in the conference call room with people from America, India, China, Ireland etc.

    Quote

    along with some personal information: name, email - just as proof that you really do work in the computer sciences field and that you are not made up for the sake of the assignment! 

    I don't see how you would need my name since most high school students don't know what perforce, docker etc are. My brother works for Dell Technologies.

     

     

     

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.