Apakah situs ini down atau hanya saya?

13

Tantangan

Tantangannya sederhana, menggunakan http://isup.me , menentukan apakah situs web yang dimasukkan naik atau turun.

Jika situs naik, Anda harus mengembalikan nilai yang benar dan jika situs turun, Anda harus mengembalikan nilai falsey.

Aturan

Input akan berupa alamat web seperti stackexchange.comatau google.co.uk. Input tidak akan pernah http://, https://dll. Di awal string, tetapi mungkin memiliki www.atau codegolf.di awal dll.

Anda harus menggunakan situs isup.me/URLtempat URL menjadi input.

Ketika sebuah situs naik, itu akan terlihat seperti:

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

Jika sebuah situs sedang down, akan terlihat seperti:

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

Penyingkat URL tidak diizinkan selain dari isup.me.

Contoh input

Mungkin naik (tergantung keadaan saat ini):

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

Akan turun:

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

Kemenangan

Kode terpendek dalam byte menang.

Peluruhan Beta
sumber
21
Ngomong-ngomong: "made.up.co.uk" sebenarnya sudah habis.
GiantTree
8
Saya baru saja terdaftar fake.com.usuntuk mengacaukan kasus uji Anda!
YSC
14
Tetapi bagaimana jika isup.meturun?
Okx
2
@Oks Anda yakin bukan hanya Anda?
Pierre Arlaud
3
Kasus uji direkomendasikan: isup.me. Ini mengembalikan hasil selain dari apa, katakanlah, google.comdapat kembali.
Okx

Jawaban:

16

sh (+ curl + grep), 28 26 byte

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

Output melalui status keluar (0 untuk naik, 1 untuk turun). Mencari Idi awal baris, yang cocok ketika domain habis (bahkan untuk kasus khusus isup.me/isup.me ).

Anders Kaseorg
sumber
1
curl -L isup.me/$1|grep u!menghemat 1 byte. Ini mengasumsikan itu! bukan karakter yang valid dalam nama domain.
Apakah 0kebenaran itu benar?
Shaggy
1
0memang benar di sh, dengan semua nilai bukan yang palsu. Juga, IMO itu benar-benar baik bahwa versi sh sangat singkat, karena itu benar-benar bahasa yang tepat untuk tugas ini bahkan tanpa mempertimbangkan golf.
Score_Di Bawah
Yang mengatakan ini akan gagal pada sesuatu seperti spthissitedoesntexist.invalid
Score_Under
1
Cocok dengan mesin saya. Cocok dengan bit ini: <a href="http://spthissitedoesntexist.invalid" class="domain">spthissitedoesntexist.invalid</a>Khususnya cocok di dalam href.
Score_Di Bawah
5

Ditumpuk , 44 byte

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

Fungsi asinkron yang dihasilkan 0jika situs tidak naik, dan angka lainnya lebih besar dari 0jika naik.

Contoh a:

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

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

Output (mungkin): Is google up? 1

Conor O'Brien
sumber
Bisakah Anda menambahkan tautan ke halaman GH Stacked?
Downgoat
@Downgoat Selesai.
Conor O'Brien
Jika ini memeriksa kejadian s u, perhatikan bahwa ini terjadi pada input apa pun yang dimulai dengan u(apakah naik atau turun).
Anders Kaseorg
@AndersKaseorg Tetap, terima kasih.
Conor O'Brien
Contoh yang lebih baik: 'Is example.com up?' put 'example.com' isupoutput (bukan hanya mungkin tapi pasti):Is example.com up? 1
Erik the Outgolfer
4

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

Pertama-tama, cobalah bermain golf di Kotlin.
Mengharapkan situs web dalam variabel atau nilai bernama a.

Sekarang dengan ruang kosong berkurang.
Siapa bilang "toilet" tidak cukup?
Diperbaiki dan lebih pendek, tidak lagi bergantung pada http://isup.me .
Tidak perlu membuka koneksi sendiri, hanya mendapatkan aliran data (atau tidak)
Tugasnya adalah menggunakan http://isup.me , kan? Juga: <bukan karakter yang valid di URL.
Sekarang berfungsi isup.mesebagai situs web.

Sekarang membaca situs web sebagai garis, karena orang tidak dapat menganggap variabel mengandung situs web.

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

Membaca satu baris yang hanya berisi situs web.
Memeriksa m hbagian from hereyang dikirim saat situs mati.

Mengembalikan "benar" atau "salah" masing-masing.


Sebagai Lambda - 172 120 118 99 85 67 66 byte

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

Dapat dipanggil langsung:

{ ... }("google.com")
GiantTree
sumber
maafkan saya jika saya salah, tetapi tidak bisakah ini diubah menjadi lambda dengan mudah?
Nick Clifford
@NickClifford yakin, tetapi sebenarnya akan lebih lama karena argumen dan definisi tipe (15 karakter karena inferensi tipe tidak berfungsi di sini)
GiantTree
3
Saya tidak tahu bahasa, tetapi sepertinya Anda memeriksa untuk melihat apakah "toilet" ada di teks yang dikembalikan. Tidakkah teks ini juga mengembalikan nama situs (variabel)? Dan jika ya, apakah itu berarti Anda mendapatkan negatif palsu untuk situs seperti loo.com?
cole
@Cole Anda pasti benar, saya benar-benar lupa tentang ini (saya hanya menguji Google dan situs web palsu). Saya akan memperbarui kode keesokan paginya (ini jam 2 pagi di mana saya berada sekarang)
GiantTree
Yang ini akan gagal di situs-situs dengan loonama. electric.boogalootidak ada tetapi string looakan berada di output di sana.
Score_Di Bawah
2

Python 2 atau 3 dengan Permintaan ( 70 69 68 byte)

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

1 byte dicukur: "u. "" u" Tidak, bukan optimasi yang valid.
1 byte dicukur: __import__('requests').from requests import*;

Ini sekarang benar-benar sepotong kode REPL-saja, dan setelah menjalankan baris ini fungsi akan dinamai _.

Score_Under
sumber
1
Kesalahan sintaks di akhir (mungkin nyasar )).
Erik the Outgolfer
1
Gagal untuk input yang dimulai dengan u.
Erik the Outgolfer
1
Menggunakan from requests import*dan get1 byte lebih pendek.
mbomb007
1
ini bukan khusus REPL, ini diizinkan untuk menjawab dengan fungsi yang tidak disebutkan namanya (lambdas in python)
Felipe Nardi Batista
Ini adalah fungsi yang tidak disebutkan namanya, tetapi skrip secara keseluruhan tidak dapat digunakan sebagai ekspresi (karena menggunakan import), jadi saya pikir lebih aman untuk hanya menyebutnya sebagai baris REPL.
Score_Di Bawah
2

Python3 141 133 113 192 141 bytes

Membutuhkan Selenium (termasuk webdriver) untuk python.

Terima kasih kepada @cairdcoinheringaahing untuk mengurangi 42 byte!
Terima kasih kepada @ V.Courtois karena menunjukkan perbaikan sederhana!

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

Mencetak 1jika situs aktif dan berjalan, atau dicetak 0.

Versi tidak disatukan:

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
sumber
Mereka mengatakan isup.me baik-baik saja di komentar; Anda dapat memenangkan beberapa byte :)
V. Courtois
1
-1 Ini adalah cuplikan. Program atau fungsi lengkap diperlukan dan input tidak dapat diasumsikan dalam variabel (seperti t). Selain itu, Anda dapat mengirim pernyataan cetak keprint("up"in r.text)
caird coinheringaahing
@cairdcoinheringaahing Oke, akan melakukan perubahan itu, terima kasih! Ini adalah jawaban kedua saya, jadi saya tidak tahu apakah akan mengirim cuplikan atau program lengkap penuh. Jadi saya memposting keduanya.
Rahul Bharadwaj
141 byte
caird coinheringaahing
2

Javascript (ES6), 74 66 byte

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

Terima kasih kepada @Shaggy, yang memberi tahu saya bahwa janji yang diselesaikan dianggap sebagai hasil.

Masalah dengan solusi ini yang akan menyebabkan kesalahan CORS kecuali saya mengujinya pada halaman yang sudah di isup.me. Tapi saat ini, itu dialihkan kedownforeveryoneorjustme.com

Versi yang lebih lama:

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

Christiaan Westerbeek
sumber
1
Anda dapat menyingkirkan alertdan mengembalikan Janji. Lihat di sini . Saya pikir Anda mungkin juga bisa melakukan penghematan /u!/.test(t).
Shaggy
1

Pyth , 24 byte

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

Kembali Truejika situs sudah habis, Falsesebaliknya. URL input harus dikutip. Itu tidak dapat diuji pada juru bahasa online karena 'dinonaktifkan untuk alasan keamanan; sebagai gantinya Anda akan membutuhkan salinan Pyth lokal .

Penjelasan

                        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
sumber
1
Gagal untuk input yang dimulai dengan u.
Erik the Outgolfer
1

05AB1E , 22 byte

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

Cobalah online!

Sayangnya "isup.me/ÿ".w§„ uåsepertinya tidak berhasil.

Erik the Outgolfer
sumber
1

PowerShell, 32 byte

(iwr isup.me/$args)-notmatch'u!'
TessellatingHeckler
sumber
Tidak terjawab jawaban Anda sebelum saya mengirim saya maaf! beberapa irmperilaku aneh menyelamatkan saya banyak yang satu ini. punyaku di sini
colsw
1

PowerShell, 25 Bytes

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

Menggunakan fakta yang Invoke-RestMethodmengembalikan halaman dengan a.html properti hanya jika gagal. (tidak tahu mengapa tepatnya ini terjadi ...)

membalikkan baris untuk dikonversi menjadi bool, output Trueuntuk situs langsung atau Falseuntuk situs bawah.

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
sumber
@TessellatingHeckler irmmengembalikan plaintext untuk halaman yang tidak dapat diuraikan, saya akan melakukan kecocokan plaintext sehingga akan berperilaku sama seperti iwr, terlepas dari apa yang saya kira berfungsi, itu berfungsi.
colsw
1

Halovi , 20 byte

oisup.me/⁰
\p
ye$hd0

Keluaran p. jika situs sedang down, dane. jika sudah habis.

Penjelasan:

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
sumber
1

Haskell (Lambdabot), 157 byte

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

Sayangnya Anda tidak dapat mengimpor Network.HTTP.Simplepada tio.run, cara termudah untuk tes akan menjalankan script ini (Anda harus 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
ბიმო
sumber
0

Pergi, 111 byte

Dalam mode Go biasa, metode terpendek adalah untuk keluar.

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

Implementasi lain di sini: https://play.golang.org/p/8T5HSDQFmC

Eric Lagergren
sumber
0

Clojure, 63 byte

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

Cek jika HTML dikembalikan oleh slurpmengandung string "'s j"(seperti dalam, "Ini 'sj ust Anda"). Saya mungkin dapat menemukan string yang lebih kecil yang unik untuk halaman, tetapi paling banyak akan menyelamatkan saya 2 byte. Itu juga berpotensi membuatnya kurang akurat. "'s j" tidak akan muncul di markup di mana pun kecuali dalam satu skenario itu. Sebuah string seperti "kamu." namun berpotensi muncul di URL, yang akan merusaknya.

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

Nim, 108 byte

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

Sayangnya itu strutilsdiperlukan untuk contains.

Belajar Nim, tips dihargai!

Quelklef
sumber
0

PHP, 82 78 byte

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

Contoh i / o berjalan:

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

Contoh 2

$ php script.php does.not.exist
> does.not.exist0
tidur
sumber
Hampir solusi sesingkat mungkin. Output kosong juga merupakan "nilai palsu", sehingga Anda dapat menghapus +. Dan dengan $argnalih - alih $argv[1]Anda bisa menggunakan 6 (minus 1) byte lainnya.
Titus