Github and Gitlab are both companies that do more or less the same thing; they provide a hosted Git service.

The main difference is that Gitlab is open source and you can download and run the community edition on any machine you want for free. This is why Gitlab's popularity has skyrocketed over the last few years.

Github, while they do offer on-premises services (at a cost), make most of their money through their centralised online offering, github.com. Nearly all open source projects use it (or at least have a presence there) because when they started it made the process of forking and submitting code (in the form of pull requests) simpler than it had been in the past.

Additionally, Gitlab has plenty of extra features that Github doesn't, such as continuous integration, a docker registry.

Github, instead, offers more in the way of integrations with other SAAS providers via the Github marketplace.

Which should I choose?

  • I want to install and run on my own server with as many users as I like. Gitlab

  • I want private repositories but I don't want to run anything on my own server, I'd rather have it managed by a company with a good record of performance and uptime : Bitbucket or Gitlab for free. Or, one of Github's paid plans

  • I want to write open source software and have plenty of visibility online. Github
Votes + Comments
More power...
well said

Keeping questions and scenarios fresh helps prevent lesser students (like this one) from just finding the answers online.

This problem has been solved hundreds of times, and there's an exact duplicate in this forum.

I don't mind helping but I like to see some effort first, not just pasting the question directly into a forum. If you want to help the OP do his homework without actually learning anything, go ahead.


So, a quick update.

My spare router that I tried using as a firewall can't block https traffic, which is unfortunate.

Luckily I had Plan B.

I switched the TV to point at my OpenDNS account, after a few hours I checked the logs

link, for some reason the remote image isn't displaying either :/

The image is on imgur because I was getting nginx errors when attempting to upload it to Daniweb.

So, I've blacklisted samsungacr.com . I've had no new adverts, but I suspect the ones already on the TV will expire soon and disappear. If they don't I'll do another soft reset. I'm avoiding that because it means typing in my 35 character Amazon Prime password using the onscreen keyboard, a task I don't enjoy.

For reference, here's my naughty list.


Votes + Comments
Thanks for the list.

This isn't a typical hardware post, but I couldn't find anywhere better for it.

Last October, after my previous TV packed in, I bought a shiny new Samsung Smart TV. My shortlist of requirements was:

  • Excellent picture quality, preferably 4k
  • No advertising built into the UI
  • Within my price range (I ended up spending £1,400 on it)

The reason for my second requirement is that many years ago I bought a Hard Disk Recorder from Panasonic that had the following style of EPG. Note the advert taking up roughly 1/4 of the width of the screen.


I have not bought anything from Panasonic since, and when asked for recommendations, I've advised against their products.

So, I found a model of Samsung that met my requirements. It did not have adverts anywhere, and the "Smart" features, like Voice Control could be turned off. It supported Amazon Video and YouTube too, so I wouldn't need my Chromecast. Excellent.

Fast forward to the middle of this year, I received a software update from Samsung. Great, software updates will make my already-great experience better, right? Not so much. Now, periodically, the following abomination appears in the actual UI of my TV.


Amazing. On the actual firmware release notes from the website, there's no mention of adverts being added (so I couldn't have checked, even if I'd have wanted to), and now I'm stuck with an expensive advertising board sat in my front room.

Complaining to Samsung hasn't gotten me ...

Attachments epg.jpg 100.49 KB

Hard to tell what's going on without knowing what your server is doing and that you're sending requests to the port it's listening on.

Here's what I'd do, substitute my Ruby for your PHP. First, create a standalone, super-simple API. Here's an example

require 'sinatra'
require 'json'

# world's simplest API
get '/hello' do
  {hello: "world"}.to_json

Now, when I run that file in Ruby, it tells me where it's listening.

== Sinatra (v2.0.0) has taken the stage on 4567 for development with backup from Puma

Finally, I just need to make a sensible request:

http get localhost:4567/hello

And here's the response.

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 17
Content-Type: application/json
Date: Sun, 27 Aug 2017 17:22:05 GMT
Server: WEBrick/1.3.1 (Ruby/2.4.1/2017-03-22)
X-Content-Type-Options: nosniff

    "hello": "world"

Now, the browser hasn't been involved at all. Everything's simple and visible. If something goes wrong I'll get the feedback right in my terminal window. PHP supports this approach too.


This looked interesting so I had a go. Did it in Ruby so it wouldn't be of use to anyone with Java, C or C++ homework :)

puts "enter a number:"
number = gets.to_i

# calculate the dimensions of the square
length = ((number-1) * 2) + 1

# create an empty set of nested arrays of the correct length
square = Array.new(length, Array.new(length, nil))

# loop through the rows...
(0...length).each do |row|
  # ...and the cols
  (0...length).each do |col|

        # calc the min distance from each vertical and
        # horizontal edge, and set the value of the cell
        # to the smallest (which we'll increment by 1 to
        # adjust for zero indexing)
        square[row][col] = [
                [row, ((length-1)-row)].min,
                [col, ((length-1)-col)].min
        ].min + 1


  # we're done with this line, pad and print it!
  puts square[row]
        .map {|n| n.to_s.ljust(2) }




Still waiting for links UI. For a bit of entertainment I looked up some amazing contributions UniqueIdeaMan has made to the web. Here's a great one:

Problem is, googling brings out forums and forums are full of amateurs too with amateurish samples

So, let's stop helping him, clearly we're too amateurish.

On a brighter note, here's another person hitting the nail on the head.

Jesus Christ, dude. You have no ****ing clue what you are doing and just stabbing your **** around hoping to hit something. You're submitting your form using GET and then looking for POST. Do you even have an idea what those words mean? What's the difference between them?

The first ****ing thing you do is realize your IF condition is failing if you don't see an echo result, so a normal person would take a look in $_SERVER to see what's going on. Well, a normal person would understand the basics by this point and know what POST and GET mean.

I know you're trying to learn, man, but you keep coming in here with syntax errors. You have no understanding of the basics.


As a SQL contractor who comes across computer-generated messes like this rather frequently, I'd like to make a suggestion. Break this up into manageable chunks.

Here's your query with syntax highlighting:


Attempting to do the case statements alongside aggregate functions with a load of joins and criteria is complex, but you can make it easier by creating an intermediate view that just does the select and case statements. Then, from that view, try to add your where clause. If that's all fine, now try adding the aggregates (sum and group by).


Since the odds are against me then how-about I pay you nothing if I lose but you pay me everything of your wealth if you lose ? Can you afford to bet like this ? I doubt it! Programmers in other forums have told me my ideas are good enough that they told me to shoot the top 10 sites in the world without talking too much. One even pleaded me to not reveal my ideas to the "clowns in the forum". Therefore, I have stopped).

You've not had any ideas though, because if you did you wouldn't be wasting your time arguing on here and you'd be building something. How about you point me at the homepage of one of your world beating projects, or to a patent detailing your top ten websites in the world ideas and then I'll apologise and admit that you're not a complete sham?

That sounds like a fair bet to me; and at this point I'd rather send you £100 than admit you have a clue.

So, the challenge has been set, UI has the simple task of pasting a URL to one of his creations, ideas or projects. If he can, all is forgiven and I'll let him continue conquering the world. If he can't, he's a phony.


I think you misunderstood UI

It's not the first time.

The general consensus is that UniqueIdeaMan's ideas are indeed unique. Unfortunately they aren't the good kind of unique.

This hasn't only been established here. Benanaman on codingforums knows the score. And Mittineague on sitepoint's forums goes as far as claiming that he is

missing a basic understanding of how things are.

As the old saying goes, there's no smoke without fire.

The nicest possible thing I can say about UI is that he is clueless timesink.

Votes + Comments
Please can we not resort to name calling. If you have nothing nice to say ...

UI, I'm still waiting for you to share the details of your browser that is on the verge of setting the world on fire. Please can you post some information or I won't be able to remove you from the "bullshitting timewaster" category that you are currently a member of.

Votes + Comments
The last two set the world on fire showed me a hacked up firefox and chromium based browser. Both were infested with spyware. "It's my feature!"

So how come the link is marked as broken in my post? It works just fine.


The button to continue to the page should be more strongly coloured than the 'go back' button, too. Without having full trust in the 'is the link dead' checker, it's probably what most people want to do. If it is dead, they can just click back.

Votes + Comments
The link worked once for me then mysteriously broke.

The main question is the amount of work it would take to build your own search engine

Building a search engine that works well would be incredibly complicated. Having it index a decent enough chunk of the web to be useful would be incredibly expensive. Getting people to actually favour your search engine over what's already out there would be almost impossible.

Keep in mind, when Microsoft needed a search engine they didn't build one from scratch. They already had the dated and not-very-successful MSN search, plus they went out and bought Powerset, Farecast and VideoSurf (probably others, too).