Ist diese Seite ausgefallen oder bin es nur ich?


13

Herausforderung

Die Herausforderung ist einfach: Mit http://isup.me können Sie feststellen, ob eine eingegebene Website aktiv ist oder nicht.

Wenn die Site in Betrieb ist, sollten Sie einen Wahrheitswert zurückgeben, und wenn die Site in Betrieb ist, sollten Sie einen Falsey-Wert zurückgeben.

Regeln

Die Eingabe ist eine Webadresse wie stackexchange.comoder google.co.uk. Die Eingabe wird am Anfang des Strings niemals usw. haben http://, https://kann aber www.oder codegolf.am Anfang usw. haben.

Sie sollten die Site verwenden, isup.me/URLauf der URL die Eingabe ist.

Wenn eine Site aktiv ist, sieht sie folgendermaßen aus:

http://isup.me/codegolf.stackexchange.com

Wenn eine Site nicht verfügbar ist, sieht sie folgendermaßen aus:

http://isup.me/does.not.exist

URL-Kürzungen sind außer isup.me nicht zulässig.

Beispieleingaben

Wahrscheinlich in Betrieb (abhängig von den aktuellen Umständen):

google.de
codegolf.stackexchange.com
worldbuilding.meta.stackexchange.com
tio.run
store.nascar.com
isup.me

Wird unten sein:

made.up.com
fake.com.us
why.why.why.delilah
store.antarcticrhubarbassociation.an

Gewinnen

Kürzester Code in Bytes gewinnt.


21
Übrigens: "made.up.co.uk" ist eigentlich up.
GiantTree

8
Ich habe mich gerade registriert, fake.com.usum mich mit deinen Testfällen zu beschäftigen!
YSC

14
Aber was isup.meist, wenn es nicht geht?
Okx

2
@Oks Bist du sicher, dass nicht nur du es bist?
Pierre Arlaud

3
Empfohlene Testfall: isup.me. Es wird ein anderes Ergebnis zurückgegeben als beispielsweise das, was google.commöglicherweise zurückgegeben wird.
Okx

Antworten:


16

sh (+ curl + grep), 28 26 Bytes

curl -L isup.me/$1|grep ^I

Ausgänge über Exit-Status (0 für aufwärts, 1 für abwärts). Sucht nach einem Iam Anfang einer Zeile, der übereinstimmt, wenn die Domain aktiv ist (auch für den Sonderfall isup.me/isup.me ).


1
curl -L isup.me/$1|grep u!Spart 1 Byte. Dies setzt voraus, dass! ist kein gültiges Zeichen im Domainnamen.

Ist 0in sh wahr?
Shaggy

1
0ist in der Tat wahr in sh, wobei alle Werte ungleich Null falsch sind. Außerdem ist es meiner Meinung nach sehr schön, dass die sh-Version so kurz ist, da sie auch ohne Rücksicht auf das Golfen absolut die richtige Sprache für diese Aufgabe ist.
Score_Under

Das heißt, dies wird auf so etwas wie spthissitedoesntexist.invalid
Score_Under

1
Es passt auf meine Maschine. Es stimmt mit diesem Bit überein: <a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>Insbesondere stimmt es mit dem überein href.
Score_Under

5

Gestapelt , 44 Bytes

['http://isup.me/'\+[CS'!'eq sum 2=out]curl]

Asynchrone Funktion, die ausgibt, 0wenn die Site nicht aktiv ist, und jede andere Zahl größer als0 wenn sie aktiv ist.

Beispiel a:

['http://isup.me/'\+['s u'split#'1-put]curl] @:isup

'Is google up?' put 'google.com' isup

Ausgabe (wahrscheinlich): Is google up? 1


Können Sie eine mit Stacked GH verknüpfte Seite hinzufügen?
Downgoat

@Downgoat Fertig.
Conor O'Brien

Wenn dies auf ein Vorkommen von hin überprüft wird s u, beachten Sie, dass dies bei allen Eingaben erfolgt, die mit u(nach oben oder nach unten) beginnen.
Anders Kaseorg

@AndersKaseorg Behoben, danke.
Conor O'Brien

Besseres Beispiel: 'Is example.com up?' put 'example.com' isupAusgabe (nicht nur wahrscheinlich, sondern sicher):Is example.com up? 1
Erik the Outgolfer

4

Kotlin REPL - 131 108 106 93 79 55 53 64 63 Bytes

Versuchen Sie es zuerst mit Kotlin Golf.
Erwartet die Website in einer Variablen oder einem Wert namens a.

Jetzt mit reduziertem Leerzeichen.
Wer hat gesagt, dass "Klo" nicht genug ist?
Behoben und kürzer, verlässt sich nicht mehr auf http://isup.me .
Sie müssen die Verbindung nicht selbst herstellen, sondern müssen nur den Datenstrom abrufen (oder nicht).
Die Aufgabe bestand darin, http://isup.me zu verwenden , richtig? Auch: <ist kein gültiges Zeichen in einer URL.
Funktioniert jetzt mit isup.meals Website

Liest jetzt die Website als Zeile, da man nicht davon ausgehen kann, dass eine Variable die Website enthält.

"m h" !in java.net.URL("http://isup.me/"+readLine()).readText()

Liest eine Zeile, die nur die Website enthält.
Überprüft den m hTeil vonfrom here ob ein gesendet wird, wenn eine Site inaktiv ist.

Gibt "true" bzw. "false" zurück.


Als Lambda - 172 120 118 99 85 67 66 Bytes

{a:String->"m h" !in java.net.URL("http://isup.me/$a").readText()}

Kann direkt aufgerufen werden:

{ ... }("google.com")

verzeihen Sie mir, wenn ich falsch liege, aber könnte dies nicht ziemlich einfach in ein Lambda umgewandelt werden?
Nick Clifford

@ NickClifford sicher, aber es wäre tatsächlich länger aufgrund des Arguments und der Typdefinition (15 Zeichen, weil Typinferenz hier nicht funktioniert)
GiantTree

3
Ich kenne die Sprache nicht, aber es sieht so aus, als ob Sie prüfen, ob "loo" im zurückgegebenen Text enthalten ist. Ist es nicht so, dass dieser Text auch den (variablen) Site-Namen zurückgibt? Und wenn ja, bedeutet das, dass Sie für Websites wie loo.com falsche Negative erhalten?
Cole

@Cole du hast definitiv recht, das habe ich komplett vergessen (ich habe nur Google und die gefälschte Website getestet). Ich werde den Code am nächsten Morgen aktualisieren (es ist 2 Uhr morgens, wo ich gerade bin)
GiantTree

Dieser Fehler tritt auf Websites mit loodem Namen "" auf. electric.boogalooexistiert nicht, aber der String loowird dort ausgegeben.
Score_Under

2

Python 2 oder 3 mit Anfragen ( 70 69 68 Bytes)

from requests import*;lambda u:"u. "in get("http://isup.me/"+u).text

1 Byte rasiert: "u. "" u" Nein, keine gültige Optimierung.
1 Byte rasiert: __import__('requests').from requests import*;

Dies ist jetzt wirklich nur ein REPL-Code, und nach dem Ausführen dieser Zeile wird die Funktion benannt _.


1
Syntaxfehler am Ende (wahrscheinlich ein Streuner )).
Erik der Outgolfer

1
Schlägt bei Eingaben fehl, die mit beginnen u.
Erik der Outgolfer

1
Verwenden von from requests import*und getist 1 Byte kürzer.
mbomb007

1
es ist nicht nur REPL, es ist erlaubt mit unbenannten Funktionen zu antworten (Lambdas in Python)
Felipe Nardi Batista

Es ist eine unbenannte Funktion, aber das Skript als Ganzes kann nicht als Ausdruck verwendet werden (da es verwendet wird import), daher halte ich es für sicherer, es einfach als REPL-Zeile zu bezeichnen.
Score_Under

2

Python3 141 133 113 192 141 Bytes

Benötigt Selen (einschließlich Webtreiber) für Python.

Vielen Dank an @cairdcoinheringaahing für die Reduzierung von 42 Bytes!
Vielen Dank an @ V.Courtois für den Hinweis auf eine einfache Lösung!

from selenium import*
d=webdriver.Firefox();d.get("http://isup.me/"+input());print("up"in d.find_element_by_xpath("//*[@id='content']/p[1]"))

Druckt, 1wenn die Site aktiv ist, andernfalls wird gedruckt 0.

Ungolfed-Version:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
urlToTest = "www.f.com"
driver = webdriver.Firefox()
driver.get("http://downforeveryoneorjustme.com/"+urlToTest)
res = driver.find_element_by_xpath("//*[@id='content']/p[1]")
print(1 if "up" in res.text else 0)

Sie sagten, isup.me sei in den Kommentaren in Ordnung; Sie können einige Bytes gewinnen :)
V. Courtois

1
-1 Dies ist ein Ausschnitt. Es sind vollständige Programme oder Funktionen erforderlich, und die Eingabe in eine Variable (z. B. t) ist nicht möglich. Sie können auch die Print-Anweisung anprint("up"in r.text)
Caird Coinheringaahing

@cairdcoinheringaahing Okay, werde diese Änderungen vornehmen, danke! Dies ist meine zweite Antwort, daher wusste ich nicht, ob ich ein Snippet oder ein vollwertiges Programm veröffentlichen sollte. Also habe ich beides gepostet.
Rahul Bharadwaj


2

Javascript (ES6), 74 66 Bytes

f=s=>fetch('//isup.me/'+s).then(r=>r.text()).then(t=>/u!/.test(t))

Vielen Dank an @Shaggy, der mich darauf aufmerksam gemacht hat, dass ein gelöstes Versprechen als Ergebnis zählt.

Problem mit dieser Lösung, dass es einen CORS-Fehler auslöst, es sei denn, ich teste es auf einer Seite, die sich bereits im befindet isup.me. Aber derzeit wird das umgeleitetdownforeveryoneorjustme.com

Ältere Version:

f = s => fetch ('// isup.me/'+s).then(r=>r.text()).then(t=>alert(t.match(/u!/)))


1
Sie können das loswerden alertund einfach das Versprechen zurückgeben. Sehen Sie hier . Ich denke, Sie könnten auch mit Geld sparen /u!/.test(t).
Shaggy

1

Pyth , 24 Bytes

}" u"s'+"http://isup.me/

Geben Sie ansonsten zurück, Truewenn die Site aktiv ist False. Die Eingabe-URL muss in Anführungszeichen stehen. Dies kann auf dem Online-Interpreter nicht getestet werden, da 'er aus Sicherheitsgründen deaktiviert ist. Stattdessen benötigen Sie eine lokale Kopie von Pyth .

Erläuterung

                        Q    # Implicit input
       +"http://isup.me/     # Concatenate "http://isup.me/" with the input
      '                      # Open the URL
     s                       # Concatenate all the lines of the returned HTML page
}" u"                        # Test whether " u" is in the page or not

1
Schlägt bei Eingaben fehl, die mit beginnen u.
Erik der Outgolfer


1

PowerShell, 32 Byte

(iwr isup.me/$args)-notmatch'u!'

Habe deine Antwort verpasst, bevor ich meine gepostet habe. Entschuldigung! Ein seltsames irmVerhalten ersparte mir einen Haufen. meins hier
colsw

1

PowerShell, 25 Bytes

!(irm isup.me/$args).html

Verwendet die Tatsache, dass Invoke-RestMethoddie Seite mit einer .htmlEigenschaft nur bei einem Fehler zurückgegeben wird. (keine Ahnung warum genau das passiert ...)

Invertiert die zu konvertierende Zeile in Bool, Ausgänge Truefür eine Live-Site oder Falsefür eine Down-Site.

PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "connorlsw.com"
True
PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "connorlsw.notawebsite"
False
PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "google.com"
True
PS C:\Users\sweeneyc\Desktop> .\Test-SiteUp.ps1 "isthisreallyasite.com"
False

@TessellatingHeckler irmgibt Klartext für nicht analysierbare Seiten zurück. Ich wollte einen Klartext-Abgleich durchführen, damit er sich genauso verhält wie iwr, unabhängig davon, ob er funktioniert oder nicht.
Colsw

1

Halovi , 20 Bytes

oisup.me/⁰
\p
ye$hd0

Gibt aus, p.ob die Site inaktiv und e.inaktiv ist.

Erläuterung:

oisup.me/⁰  ~# Open the concatination of "isup.me/" and arg0
\p          ~# Select first p element
ye$hd0      ~# Edit text with neovim and output result:
            ~#   Go one character before the end of the line and ..
            ~#   delete until beginning

1

Haskell (Lambdabot), 157 Bytes

import Data.ByteString.Lazy.Char8
import Network.HTTP.Simple
f s=httpLBS(parseRequest_$"http://isup.me/"++s)>>=print.not.isInfixOf"u!".unpack.getResponseBody

Leider kann man nicht importieren Network.HTTP.Simpleauf tio.run, wäre der einfachste Weg , um Test sein , um dieses Skript auszuführen (Sie müssen stack):

#!/usr/bin/env stack
-- stack --install-ghc --resolver lts-8.19 runghc --package http-conduit

import Data.ByteString.Lazy.Char8
import Network.HTTP.Simple
import Data.List

main :: IO ()
main = mapM_ test [ "google.de", "made.up.com"]
  where test url = print ("testing "++url) >> f url

f :: String -> IO ()
f s=httpLBS(parseRequest_$"http://isup.me/"++s)
 >>=print.not.isInfixOf"u!".unpack.getResponseBody

0

Los, 111 Bytes

In der typischen Go-Mode besteht die kürzeste Methode darin, sie zu entfernen.

import"os/exec"
func h(a string)bool{return exec.Command("sh","-c","curl -L isup.me/"+a+"|grep ^I").Run()!=nil}

Andere Implementierungen hier: https://play.golang.org/p/8T5HSDQFmC


0

Clojure, 63 Bytes

#(clojure.string/includes?(slurp(str"http://isup.me/"%))"'s j")

Prüft , ob der HTML zurückgegeben durch slurpdie Zeichenfolge enthält "'s j"(wie in „Es ‚sj ust Sie“). Möglicherweise kann ich eine kleinere Zeichenfolge finden, die für die Seite eindeutig ist, aber höchstens 2 Byte einsparen. Dies würde es möglicherweise auch ungenauer machen. "'s j" wird nur in diesem einen Szenario im Markup angezeigt. Eine Zeichenfolge wie "u." Es könnte jedoch möglicherweise in der URL angezeigt werden, was die URL beschädigen würde.

(defn is-up? [site]
  (clojure.string/includes?
    (slurp (str "http://isup.me/" site))
    "'s j"))

0

Nim, 108 Bytes

import httpclient,strutils
echo newhttpclient().getcontent("//isup.me/"&stdin.readline.string).find("ks ")<0

Schade das strutils ist das nötig für contains.

Nim lernen, Tipps geschätzt!


0

PHP, 82 78 Bytes

<?=$i=$argv[1],+!preg_match("/!.*$i/",file_get_contents("http://isup.me/$i"));

Beispiel I / O-Läufe:

$ php script.php google.com
> google.com1

Beispiel 2

$ php script.php does.not.exist
> does.not.exist0

Fast die kürzeste mögliche Lösung. Leere Ausgabe ist auch "ein falscher Wert", so dass Sie die entfernen können +. Und mit könnten Sie $argnstattdessen $argv[1]weitere 6 (minus 1) Bytes verwenden.
Titus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.