Seperti yang kita semua harus tahu, ada kode status HTTP 418: Saya teko .
Misi Anda, jika Anda memilih untuk menerimanya, adalah menggunakan creativitea Anda dan menulis server sekecil mungkin yang merespons dengan kode status di atas untuk setiap dan setiap permintaan HTTP yang dibuat untuknya.
Celah standar berlaku, termasuk
Mengambil output yang diinginkan dari sumber eksternal
Ini termasuk melakukan permintaan HTTP untuk mengambil halaman dengan pertanyaan dan mengekstraksi solusi dari halaman itu. Ini sedikit menghibur kembali pada tahun 2011, tetapi sekarang adalah turunan dan tidak menarik.
Berarti Anda tidak bisa langsung mengalihkan permintaan ke server lain untuk mengembalikannya.
Mengatasi kebingungan tentang fungsionalitas server:
Server Anda dapat melakukan apa saja (atau tidak sama sekali) sementara tidak ada permintaan HTTP yang dibuat selama itu menjawab dengan respons yang benar begitu permintaan HTTP dibuat.
Jawaban:
GNU Awk: 69 karakter
Server itu sendiri (tanpa henti melayani satu permintaan pada satu waktu), tidak ada perpustakaan yang digunakan.
Kirim 418 ke semua orang yang terhubung (
8269 karakter):Kirim 418 ke semua orang yang mengirim sesuatu (
9380 karakter):Kirim 418 ke semua orang yang mengirim permintaan HTTP GET yang valid (
122109 karakter):sumber
netcat
,telnet
,wget
,curl
, GNU lainawk
skrip, ... Secara teoritis itu mendengarkan pada localhost: 80, tapi untuk itu 1) tidak ada web server, Skype atau program lainnya harus menggunakan port 80; 2) Anda harus menjadi pengguna super untuk membuka port di bawah 1024. Jadi untuk pengujian lebih mudah untuk mengedit nomor port dalam skrip ke sesuatu seperti 8080 (s="/inet/tcp/8080/0/0"
) kemudian hubungkan ke itu. pastebin.com/zauP7LMABash (33)
sumber
\0
ke akhir file Anda - Anda dapattruncate
ini dan masih berfungsi.s='echo HTTP/1.1 418|nc -lp80 -q1;$0' ; echo ${#s}
memberi 33 untuk saya$PATH
direktori atau disebut dengan path (rekursi oleh$0
). ----- 2. HTTP mensyaratkan bahwa jalur\r\n
tidak hanya dihentikan\n
. Di sini string harus$"HTTP/1.1 418\r\n\r"
(bentuk yang bisa dibaca lagi). ------ Dan akhirnya: Script bisa lebih pendek:-q1
Parameter tidak perlu.echo
varian tidak berfungsi (setidaknya Firefox tidak akan mengenalinya sebagai 418). Namun,\r
s tidak diperlukan. Spesifikasinya mengatakan itu harus\r\n\r\n
, tetapi setidaknya Firefox dan Chrome akan menerimanya\n\n
, jadi sepertinya ada semangat golf untuk tidak memasukkan mereka. The-q1
parameter yang diperlukan pada sistem saya, karena browser tidak akan menutup koneksi dengan sendirinya.$0
berfungsi dengan baik jika skrip dibuat dapat dieksekusi dan dipanggil dengan cara itu.wget
yang tampaknya baik-baik saja dengan hanya satu baris baruPHP - 85 byte
Disimpan dengan ujung jalur Windows-Style (CR-LF), harus
php_sockets
diaktifkan.Saya benar-benar menggunakan ini sebagai kode kesalahan saya untuk Hard Code Golf: Buat tantangan Chatroom , tetapi tidak ada yang menyadarinya.
Versi Browser-Friendly
Mulai skrip di CLI, dan arahkan browser Anda di
http://localhost
.sumber
I'm a teapot
:-)Node.js (LiveScript)
http
modul - 66Terinspirasi oleh jawaban Qwertiy .
net
modul - 76sumber
Ruby + Rack, 19 byte
Harus disimpan sebagai
config.ru
, dan jalankan denganrackup
perintah.Atau jika Anda lebih suka Ruby "murni":
42 byte +
-rrack
flag = 48 bytesumber
Perintah umum Bash + BSD, 29
Meminjam sedikit dari jawaban lain:
Bekerja untuk saya
wget
.Jawaban pertama yang digunakan
nc
, 38Saya mengasumsikan hak root - jalankan sebagai berikut:
sumber
nc -l 80 <<<HTTP/1.1\ 418;$0
-p
saklar :) Saya menguji kode dengan Firefox dan tanpa dua baris baru kode status tidak dikenali.Ruby (perintah sistem nc) - 35
DigitalTrauma harus mendapatkan pujian atas ide penggunaannya
nc
, namun Ruby dapat membuat perulangan tanpa batas dengan karakter lebih sedikit daripada Bash :)Ruby (TCPServer) - 75
Baris baru itu disengaja - karakter baris sebenarnya adalah satu karakter lebih pendek dari "\ n".
Ruby (WEBrick HTTPServer) - 87
sumber
Node.js, 80
Responsnya adalah
sumber
Python 3 106
sumber
from socket import*;s=socket(AF_INET,SOCK_STREAM)
yang lebih pendek.while 1:s.accept()[0].sendall(bytes('HTTP/1.1 418\n','UTF8'))
- kecuali saya melewatkan sesuatu. (Omong-omong, jangan ragu untuk menghitung baris baru satu karakter, karena bahasa memungkinkan mereka. Dengan begitu Anda tidak kehilangan apa pun dengan memisahkan perintah dengan baris baru, bukan;
.)s=socket(2,1)
(setidaknya itu adalah nilainya di Linux saya).listen()
parameter bahwa "nilai maksimum tergantung pada sistem (biasanya 5)". Jadi alih-alih 10, 9 lebih dari cukup dan 1 karakter lebih pendek. Dan bukannyabytes('HTTP/1.1 418\n','UTF8')
literalb'HTTP/1.1 418\n'
sudah cukup. Atau jika Anda membuat kode Python 2, makab
bytesprefix tidak diperlukan lagi. Dan yang lebih pendeksend()
juga tampaknya sudah cukup.Haskell - 142 byte
sumber
Tcl (> = 8.5), 78 byte
Sunting - ditambahkan dalam baris baru tambahan (total 2 baris baru) demi kepatuhan.
sumber
Julia:
8673 karaktersumber
Powershell, 398
258
sumber
R, 80 karakter
Tidak pernah melakukan pemrograman socket dengan R sebelumnya, tetapi saya akan mencobanya:
Di sini
socketConnection
membuka soket: argumen pertama harus menjadi tuan rumah, defaultnyalocalhost
kita bisa lewati di sini; argumen kedua adalah port yang tidak memiliki default, kemudian argumenserver
ketika ditentukanTRUE
membuat soket, jikaFALSE
hanya terhubung ke yang sudah ada.T
secara default sama denganTRUE
, dalam R.Sunting: Seperti yang disarankan dalam sunting yang disarankan oleh @AlexBrown, ini bisa disingkat menjadi 69 karakter :
sumber
Node.js koa , 61 Bytes
Tanggapan:
Membutuhkan simpul v0.11.12 +
Jalankan sebagai:
sumber
function*
?Shell + socat, 60
sumber
echo -e HTTP/1.1 418 T\r\n\r
lebih pendek.\\ T
bahkan tidak diperlukan.MATLAB,
9786 byteTidak benar-benar pesaing serius dalam hal byte-count absolut, tetapi saya ingin mempostingnya karena saya pikir tidak mungkin untuk menulis server web yang berfungsi penuh menggunakan alat matematika. Perhatikan penggunaan pemendekan properti :
'Ne','s'
internal diperluas ke'NetworkRole', 'server'
.sumber
Anda dapat melakukan ini dengan upaya minimal menggunakan
.htaccess
file dan php.Semua akses ke server Anda akan mengembalikan status 418.
Di bawah ini adalah kode:
.htaccess (28 byte)
PHP (
3819 byte)Terima kasih kepada @primo karena telah menyelamatkan saya banyak byte!
Saya telah menguji ini dan mengonfirmasinya mengembalikan hasil yang diinginkan!
Omong-omong, "Pedido" berarti "Permintaan" dan "Resposta" berarti "Jawab".
sumber
node.js dengan CoffeeScript (76)
Hanya kompilasi ke JavaScript, maka Anda harus menjalankannya
npm install connect
. Setelah itu mulailah dengannode server.js
sumber
nginx - 35
Lempar ke dalam nginx.conf, mulai nginx.
Tidak yakin apakah ini menggunakan celah standar "Menggunakan fungsi bawaan untuk melakukan pekerjaan" atau "Menafsirkan tantangan terlalu harfiah." Ups, sepertinya OP tidak akan menyukai jawaban ini.
sumber
;
?Perl, 78
jalankan sebagai
plackup whatever.pl
.sumber
sub{[418,[],[]]}
itu sudah cukup. (16 karakter.)Python 2.7 / Django, 94 byte
(ditambahkan dari standar boilerplate dari
django-admin.py startproject
) Di urls.py:sumber
C # + OWIN
251240Aku benar-benar berharap itu akan lebih pendek, tetapi ruang nama yang panjang merusak rencana itu. Membutuhkan
Microsoft.Owin.SelfHost
paket yang tersedia di NuGet.sumber
node.js dengan connect (78)
Anda harus lari
npm install connect
dulu. Kemudian mulailah dengannode server.js
sumber
Pergi, 162 byte
sumber
Factor,
101141 byteKembalikan 418 ke semua orang yang terhubung.
sumber
Java 7, 208 byte
Pertanyaan ini membutuhkan jawaban java.
sumber