Cue Storyline: Ini adalah awal abad ke-21, dan sebagian besar hal telah menjadi sesuatu dari masa lalu. Namun, Anda dan sesama kode-golf-etawan sedang berupaya menghidupkan kembali tahun 1990-an. Sebagai bagian dari tantangan ini, Anda harus membuat ulang ruang obrolan minimalis.
Tujuan: Untuk membuat ruang obrolan dengan sesedikit mungkin byte. Program yang Anda tulis akan berfungsi sebagai server sederhana, yang melayani halaman web, yang memungkinkan pengguna memposting teks ke layar.
Tujuan Aktual: Untuk benar-benar menyelenggarakan ruang obrolan yang berfungsi dari komputer Anda sendiri. Anda tidak harus melakukan ini, tetapi jauh lebih menyenangkan dengan cara ini.
Persyaratan:
- Pengguna harus dapat memberikan sendiri nama pengguna yang tahan untuk sesi ini
- Pengguna harus dapat berulang kali mengetik dan mengirim teks, yang akan ditampilkan kepada pengguna lain
- Setiap pengguna harus dapat melihat teks yang dikirimkan oleh semua pengguna, bersama dengan nama pengguna pengirim, dan informasi harus ditampilkan dalam urutan kronologis
- Halaman ini juga harus menampilkan jumlah orang yang online dan daftar nama pengguna mereka
- Ruang obrolan Anda harus dapat diakses oleh siapa saja di internet yang tahu di mana menemukannya (seperti mengetahui alamat IP).
- Seharusnya berfungsi di browser web modern.
Semuanya terserah Anda!
Pengajuan:
- Harus menyertakan kode sumber, atau tautan ke kode sumber
- Harus menyertakan tangkapan layar ruang obrolan fungsional
- Harus mencakup ukuran total, dalam byte, dari semua program / file yang Anda tulis yang diperlukan untuk membuatnya berfungsi.
Tantangan ini telah berada di kotak pasir untuk sementara waktu sekarang, jadi semoga semua ketegaran telah berhasil.
Jawaban:
PHP + JQuery + HTML + CSS, 1535 byte
Ini adalah submission yang lebih condong ke apa yang dianggap OP sebagai 'tujuan aktual'. Yaitu, server obrolan yang berfungsi penuh, yang dapat di-host di hampir semua server web di mana saja.
Fungsionalitas meliputi:
Untuk menjadi sesi, masukkan alias di kotak yang sesuai, dan tekan Tabatau Enteruntuk mengirim. Jika alias sudah digunakan, Anda akan diberi tahu. Mengirim pesan juga dilakukan melalui Enter.
Untuk kenyamanan Anda, arsip semua file dapat ditemukan di sini: chat.zip (pilih Unduh dari menu File). Untuk menginstal, buka paket ke direktori web di server mana saja yang menjalankan PHP 5.4 atau lebih tinggi.
Peringatan:
cache:false
ke setiap permintaan Ajax.change
acara tidak dipicu (menekan Tab, bagaimanapun, tidak berfungsi). Ini bisa diperbaiki dengan menambahkanonkeypress
pawang, memeriksa apakah kuncinya adalah Enter, dan kemudian memanggil$(v).blur().focus()
.Singkatnya, IE tidak didukung.
Klien
Posisi elemen bisa sedikit lebih kuat, tetapi harus terlihat baik-baik saja dengan ukuran jendela minimum sekitar ~ 800x600.
chat.htm (190 byte)
c.css (136 bytes)
c.js (435 bytes)
Server
Saya minta maaf untuk server yang dipecah menjadi begitu banyak potongan kecil Alternatifnya adalah dengan menggunakan protokol pesan yang memadai (melalui JSON encode / decode), atau memiliki besar
if ... elseif ...
sesuai dengan variabel posting yang hadir. Membuat skrip terpisah, meminta hanya dari yang Anda butuhkan jauh lebih pendek, dan mungkin lebih sederhana dari keduanya.o.php (119 bytes) O pens sebagai koneksi ke 'database'
c.php (57 bytes) C ommits perubahan ke 'database'
p.php (151 bytes) P olls untuk pesan baru
s.php (62 bytes) S mengakhiri pesan ke server
u.php (222 bytes) U pendaftaran ser atau perubahan alias
n.php (65 byte) Mengambil daftar pengguna n ames
l.php (98 byte) Pengguna memiliki l eft (menutup peramban mereka)
sumber
onchange=u
tanpa tanda kurung. Anda tidak akan mendapatkan konteks yang konsisten, tetapi Anda tidak membutuhkannya.Python, 230
Ini cukup minim, tetapi tampaknya sesuai dengan spesifikasi. Pengguna dihitung sebagai "melihat halaman" jika mereka mengobrol dalam 99 detik terakhir.
Ini menggunakan salah satu trik favorit saya dalam python: nilai default hanyalah referensi untuk apa pun yang Anda lewati. Jika itu adalah objek yang bisa berubah, ia hanya ikut dalam perjalanan.
Lain saya tidak bisa sering digunakan - kari!
Menjalankan Server:
Jalankan skrip obrolan dari python (misalnya,
python chat.py
) lalu arahkan browser Andahttp://localhost:8080
untuk melihat sesuatuPython, 442
Yang ini sebenarnya bagus untuk digunakan. Ini golf, jadi saya menganggap ini solusi yang kurang memuaskan. Sekarang, saya menyalahgunakan iframe dan formulir dengan penanganan kunci ... dan meta refresh untuk polling untuk konten baru.
sumber
http://localhost:8080/c
dan mengakses server HTTP Anda8080
, Anda dapat menambahkan berikut ini untuk menggunakan port yang berbeda:S.config.update({'server.socket_port':8090})
Meteor: 575 karakter
Saya bersenang-senang dengan yang satu ini! Aplikasi ini tayang langsung di http://cgchat.meteor.com/ .
chat.html: 171 karakter
lib / chat.js: 45 karakter
client / client.js: 359 karakter
sumber
Node / Meteor javascript + html + css + websocket: 1,105 byte
Berikut ini salah satu yang menggunakan node.js / meteor . Jelas ditulis dalam js, realtime, dan menggunakan soket web. Menggunakan paket bawaan bawaan meteor.
Bisa jadi jauh lebih kecil. Juga gigih melalui mongo yang disertakan (bukan itu hal yang baik).
Tangkapan layar yang berfungsi:
Untuk mengeksekusi, instal meteor.
Linux:
Windows: win.meteor.com
Kloning repo saya dan jalankan meteor:
arahkan browser Anda ke localhost: 3000
chat.js: 703 bytes (klien / server):
chat.css: 132 bytes
chat.html: 270 byte
sumber
chat.html
tampaknya hanya memiliki 254 byte. Perhatikan bahwa browser tidak terlalu pilih-pilih - Saya tidak repot-repot untuk menutup tag, dan Anda pasti tidak memerlukan garis miring di akhir tag (kecuali jika simpul mengharuskannya?). Juga, bunuh lebih banyak ruang putih! Saya melihat pasangan di javascript, dan terlalu banyak di html.