Este site está fora do ar ou sou apenas eu?

13

Desafio

O desafio é simples: usando http://isup.me , determine se um site inserido está ativo ou inativo.

Se o site estiver ativo, você deve retornar um valor verdadeiro e, se o site estiver inativo, deve retornar um valor falsey.

Regras

A entrada será um endereço da web como stackexchange.comou google.co.uk. A entrada nunca terá http://, https://etc. no início da string, mas pode ter www.ou codegolf.no início etc.

Você deve usar o site em isup.me/URLque URL é a entrada.

Quando um site é lançado, ele se parece com:

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

Se um site estiver inativo, será semelhante a:

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

Os encurtadores de URL não são permitidos, exceto o isup.me.

Entradas de Exemplo

Provavelmente ativo (dependendo das circunstâncias atuais):

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

Será baixo:

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

Ganhando

O código mais curto em bytes vence.

Beta Decay
fonte
21
A propósito: "made.up.co.uk" está realmente pronto.
GiantTree
8
Acabei de me registrar fake.com.uspara mexer com seus casos de teste!
YSC
14
Mas e se isup.meestiver em baixo?
Okx 03/07/19
2
@Oks Você tem certeza de que não é só você?
Pierre Arlaud
3
Caso de teste recomendada: isup.me. Retorna um resultado diferente do que, digamos, google.compode retornar.
Okx 03/07/19

Respostas:

16

sh (+ ondulação + grep), 28 26 bytes

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

Saídas via status de saída (0 para cima, 1 para baixo). Procura um Ino início de uma linha, que corresponde quando o domínio está ativo (mesmo no caso especial de isup.me/isup.me ).

Anders Kaseorg
fonte
1
curl -L isup.me/$1|grep u!salva 1 byte. Isso pressupõe isso! não é um caractere válido no nome de domínio.
A 0verdade é sh?
Shaggy
1
0é realmente verdade em sh, com todos os valores diferentes de zero sendo falsos. Além disso, na IMO é muito bom que a versão sh seja tão curta, pois é absolutamente o idioma certo para esta tarefa, mesmo sem considerar o golfe.
Score_Und
Dito isto irá falhar em algo como spthissitedoesntexist.invalid
Score_Under
1
Combina na minha máquina. Ele corresponde a este bit: <a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>Especificamente, ele corresponde dentro do href.
Score_Und
5

Empilhados , 44 bytes

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

Função assíncrona que gera 0se o site não estiver ativo e qualquer outro número maior que 0se estiver ativo.

Exemplo a:

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

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

Saída (provavelmente): Is google up? 1

Conor O'Brien
fonte
Você pode adicionar um link à página Stacked GH?
Downgoat 02/07/19
@Downgoat Done.
Conor O'Brien
Se estiver verificando uma ocorrência de s u, observe que isso ocorre em qualquer entrada que comece com u(para cima ou para baixo).
Anders Kaseorg
@AndersKaseorg Corrigido, obrigado.
Conor O'Brien
Melhor exemplo: 'Is example.com up?' put 'example.com' isupoutput (não apenas provavelmente, mas com certeza):Is example.com up? 1
Erik the Outgolfer
4

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

Primeira tentativa no golfe Kotlin.
Espera o site em uma variável ou valor nomeado a.

Agora com espaço em branco reduzido.
Quem disse que "banheiro" não é suficiente?
Fixo e mais curto, não depende mais do http://isup.me .
Não é necessário abrir a conexão, basta obter o fluxo de dados (ou não).
A tarefa era usar http://isup.me , certo? Além disso: <não é um caractere válido em um URL.
Agora funciona com isup.meo site

Agora lê o site como uma linha, porque não se pode assumir uma variável para conter o site.

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

Lê uma linha contendo apenas o site.
Verifica a m hparte from hereenviada quando um site está inoperante.

Retorna "verdadeiro" ou "falso", respectivamente.


Como um Lambda - 172 120 118 99 85 67 66 bytes

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

Pode ser chamado diretamente:

{ ... }("google.com")
GiantTree
fonte
perdoe-me se estiver errado, mas isso não poderia ser convertido para um lambda com bastante facilidade?
Nick Clifford
@NickClifford certeza, mas seria realmente mais tempo devido à definição argumento e tipo (15 caracteres porque o tipo de inferência não funciona aqui)
GiantTree
3
Não sei o idioma, mas parece que você está verificando se "loo" está no texto retornado. Não é esse o caso que este texto também retorna o nome do site (variável)? E se for, isso significa que você recebe negativos negativos para sites como o loo.com?
cole
@ Cole você está definitivamente certo, eu esqueci completamente isso (eu estava apenas testando o Google e o site falso). Eu irei atualizar o código manhã seguinte (é 02:00 onde estou atualmente)
GiantTree
Este falhará em sites com looo nome. electric.boogaloonão existe, mas a string looestará na saída lá.
Score_Und
2

Python 2 ou 3 com solicitações ( 70 69 68 bytes)

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

1 byte raspado: "u. "" u" Não, não é uma otimização válida.
1 byte raspado: __import__('requests').from requests import*;

Agora, esse é realmente um trecho de código somente para REPL e, após a execução dessa linha, a função será nomeada _.

Score_Under
fonte
1
Erro de sintaxe no final (provavelmente um desvio )).
Erik the Outgolfer
1
Falha nas entradas que começam com u.
Erik the Outgolfer
1
Usando from requests import*e geté 1 byte mais curto.
Mbomb007 3/07
1
não é REPL-only, é permitido a resposta com funções sem nome (lambdas em python)
Felipe Nardi Batista
É uma função sem nome, mas o script como um todo não pode ser usado como uma expressão (uma vez que é usada import), então acho que é mais seguro chamá-lo de linha REPL.
Score_Und
2

Python3 141 133 113 192 141 bytes

Requer Selenium (incluindo webdriver) para python.

Obrigado a @cairdcoinheringaahing por reduzir 42 bytes!
Obrigado a @ V.Courtois por apontar uma solução simples!

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

Imprime 1se o site estiver instalado e funcionando, caso contrário, será impresso 0.

Versão não destruída:

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)
Rahul Bharadwaj
fonte
Eles disseram que o isup.me está bem nos comentários; você pode ganhar alguns bytes :)
V. Courtois
1
-1 Este é um trecho. Programas ou funções completos são necessários e a entrada não pode ser assumida em uma variável (como t). Além disso, você pode golfe a declaração de impressão paraprint("up"in r.text)
caird coinheringaahing
@cairdcoinheringaahing Ok, fará essas alterações, obrigado! Esta é a minha segunda resposta, então eu não sabia se deveria postar um trecho ou um programa completo. Então eu publiquei os dois.
Rahul Bharadwaj
141 bytes
caird coinheringaahing
2

Javascript (ES6), 74 66 bytes

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

Obrigado a @Shaggy, que me chamou a atenção de que uma promessa resolvida conta como saída.

Problema com esta solução que gera um erro de CORS, a menos que eu o teste em uma página que já está em isup.me. Mas atualmente, isso é redirecionado paradownforeveryoneorjustme.com

Versão antiga:

Para obter mais informações, consulte a página de suporte do Microsoft Visual Studio.

Christiaan Westerbeek
fonte
1
Você pode se livrar do alerte apenas devolver a Promessa. Veja aqui . Eu acho que você também poderá economizar /u!/.test(t).
Shaggy
1

Pitão , 24 bytes

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

Retorne Truese o site estiver ativo, Falsecaso contrário. O URL de entrada deve ser citado. Isso não pode ser testado no intérprete on-line porque 'está desativado por motivos de segurança; em vez disso, você precisará de uma cópia local do Pyth .

Explicação

                        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
Jim
fonte
1
Falha nas entradas que começam com u.
Erik the Outgolfer
1

05AB1E , 22 bytes

"isup.me/ÿ".w#214è'‚‰Q

Experimente online!

Infelizmente "isup.me/ÿ".w§„ uå, parece não funcionar.

Erik, o Outgolfer
fonte
1

PowerShell, 32 bytes

(iwr isup.me/$args)-notmatch'u!'
TessellatingHeckler
fonte
Perdeu sua resposta antes de eu postar o meu desculpe! algum irmcomportamento estranho me salvou muito nesse caso. meu aqui
colsw
1

PowerShell, 25 bytes

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

Usa o fato de Invoke-RestMethodretornar a página com uma .htmlpropriedade somente em caso de falha. (não faço ideia por que exatamente isso acontece ...)

inverte a linha para converter em bool, saídas Truepara um site ao vivo ou Falsepara um site inativo.

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
colsw
fonte
@TessellatingHeckler irmretorna texto sem formatação para páginas não analisáveis, eu faria uma correspondência em texto sem formatação para que ele tivesse se comportado da mesma forma que iwr, independentemente de eu achar que, se funcionar, ele funcionará.
colsw
1

Halovi , 20 bytes

oisup.me/⁰
\p
ye$hd0

Saída p.se o site estiver inativo e e.se estiver ativo.

Explicação:

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
BlackCap
fonte
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

Infelizmente você não pode importar Network.HTTP.Simpleem tio.run, a maneira mais fácil de teste seria para executar este script (você vai precisar 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
ბიმო
fonte
0

Go, 111 bytes

Na moda típica da Go, o método mais curto é desembolsar.

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

Outras implementações aqui: https://play.golang.org/p/8T5HSDQFmC

Eric Lagergren
fonte
0

Clojure, 63 bytes

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

Verifica se o HTML retornado por slurpcontém a cadeia "'s j"(como em "It 'sj ust você"). Talvez eu consiga encontrar uma string menor que seja exclusiva da página, mas ela me salvaria no máximo 2 bytes. Também potencialmente o tornaria menos preciso. "s j" não aparecerá na marcação em nenhum lugar, exceto naquele cenário. Uma string como "u". no entanto, poderia aparecer no URL, o que o quebraria.

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

Nim, 108 bytes

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

Infelizmente strutilsé necessário paracontains .

Aprender Nim, dicas apreciadas!

Quelklef
fonte
0

PHP, 82 78 bytes

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

Exemplo de execução de E / S:

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

Exemplo 2

$ php script.php does.not.exist
> does.not.exist0
kip
fonte
Quase a solução mais curta possível. A saída vazia também é "um valor falso", para que você possa remover o +. E com em $argnvez de $argv[1]você poderia usar outros 6 (menos 1) bytes.
Titus