Код, який виконується лише один раз


223

Мета

Мета цього завдання - написати код, який буде виконуватися один раз і лише один раз. Це означає, що це певним чином пошкоджує програму, сценарій чи середовище. Якщо перезавантаження системи дозволяє запустити код знову, що дозволено.

Оцінка балів

Кількість голосів. Усі припущення повинні бути чітко перераховані. Будь-які відповіді, що ініціюють перезавантаження або зупинку, будуть дискваліфіковані.

Додаткові правила, тому що Грег Хьюгілл - бог-демісезон

Доступ до коренів не дозволений.

Кінцева дата

Конкурс закриється 31 травня 2014 року.

Редагувати

Цей конкурс було змінено на конкурс популярності.


7
@PeterTaylor можливим рішенням буде самовидалення, але як результат показує, це не єдине.
Лукай

101
Для багатьох людей, що дзвонять viв єдиному термінальному середовищі, це має ефект, від цього не втече, якщо ви не перезавантажитесь :) Тут просто жарт.
Оріон

6
Сайт безкоштовно для вас, щоб запропонувати таке питання.
ojblass

16
echo "If you try to execute me again, it means you are an idiot.";<- Ніхто не виконає більше одного разу: P
user3459110

25
Чи отримало б програмне забезпечення, пов'язане з ракетою? ;)
rsegal

Відповіді:


518

Бдіння

Нарешті, корисний привід для Vigil!

def main():
  raise Exception()

Витяг із "мовної специфікації":

Само собою зрозуміло, що будь-яка функція, яка кидає виняток, який не потрапляє, є неправильним і повинен бути покараний.

...

Якщо присяга порушена, функція порушника [...] буде належним чином покарана.

Як?

Просто: він буде видалений з вашого вихідного коду.

Єдиний спосіб забезпечити виконання вашої програми вимог - абсолютно заборонити код, який цього не робить. З Vigil це зробить для вас автоматично.

Є і інші способи зробити це, тому що Vigil надає ключові слова imploreі swearякі в основному клятва дотримуватися певних перед- і пост-умов:

def main():
  swear 0 > 1

116
Без сумніву, це заслуговує на перемогу.
Маттео Італія

77
Нарешті, досить пильна мова для сучасної доби! Я почну використовувати його у виробництві. Усі помилки необхідно очистити.
Клавдіу

13
Мені здається, що необов’язково виною функції є те, що викидає невдале виняток, а також може бути те, що функції в стеку викликів є недбалими за те, що не вдалося її зафіксувати. Це навіть може припустити, що архітектура всієї програми є помилковою (Тому, що, можливо, немає можливості правильно обробити цей виняток без реструктуризації коду?) Словом, всю програму слід видалити.
Джонатан Пуллано


32
Додаткові бали за присягу. Програму, яка робить впевнену помилкову заяву, без сумніву, потрібно усунути.
orion

293

Практично будь-який дистрибутив Linux, 9 знаків

Цей класичний!

#!/bin/rm

Помістіть це у файл та запустіть його:

> ed
a
#!/bin/rm
.
wq foo
> ls
Mail mbox foo
> chmod 777 foo
> ./foo
> ls
Mail mbox

Ааа його вже немає!

Щодо того, що відбувається: я справді просто бігаю rm! #!називається шебангом . І якщо ви помістите одне із них, яким слід докласти якийсь виконуваний файл, як перший рядок у вашому сценарії, завантажувач програм виконає ваш файл сценарію з тим, що ви там написали - за замовчуванням зазвичай це #!/bin/bashабо #!/bin/sh(оболонка Bourne-знову / оболонка Bourne) . Перший аргумент, переданий цьому сценарію, буде саме ім'ям файлу (саме тому ви бачите тут багато рішень, включаючи %0або $0і подібні); тому, змушуючи мій файл містити #!/bin/rmі запускати його, все, що я роблю, - це передавання імені мого файлу rm.


9
Не використовуючи ніколи сам Linux, я думаю, що він видаляє файл сценарію.
Οurous

56
@NateKerkhofs #!послідовність запускає шебанг , який визначає, який інтерпретатор ви збираєтеся використовувати для сценарію - як правило /bin/bash. Тут Флонк використовував /bin/rmяк "перекладача". rmце програма, яка видаляє файли. оскільки Linux вважає, що ми хочемо rmбути інтерпретатором, він передає ім'я файлу як аргумент. отже, файл видаляється

19
Це істерично
ojblass

25
@ user80551 Мені для цього не потрібен кореневий доступ.
Флонк

9
хм ..../foo mbox
Ізката

241

x86 двійкові, 4 байти

F0 0F C7 C8

Припущення: потрібно запустити на процесорі P5 Pentium.

Наведена вище інструкція зазвичай відома як помилка F00F . Він намагається виконати недійсну інструкцію з префіксом блокування .

Це повністю заморожує центральний процесор (ні зупинка, ні перезавантаження), і навіть не вимагає кореневого доступу.


4
Нічого ... це справді цікаво.
ojblass

31
@JackM: Це буде, але це прямо дозволено у питанні.
Денніс

34
@JackM, це здається чудовим способом зупинити запуск "скрипту".
Пол Дрейпер

5
Я пам’ятаю, коли ця помилка робила обходи. Вирішення проблеми з ядром було знайдено майже одразу - воно не вийде з ладу на комп’ютері, якщо ви не працюєте в ОС без виправлення.
zwol

3
@RosLuP 209 різних користувачів, мабуть. Якщо ви не погоджуєтесь, скажіть та продовжуйте рух.
Денніс

150

Баш, 5

>"$0"

Скорочує себе до нульової довжини.

Якщо ім'я файлу не містить пробілів, >$0працює на 3 символи !


2
Власне, лапки ніколи не потрібні для змінної, яка використовується в такому імені файлу перенаправлення, навіть якщо програма або шлях до програми містить пробіли, через особливий випадок у правилах розбору оболонки. Тож ви завжди можете це зробити за 3 символи!
apenwarr

3
@apenwarr в ньому написано "$ 0: неоднозначне переспрямування", коли без лапок і назви файлу є пробіли

1
@apenwarr, це потрібно, якщо оболонка, що інтерпретує цей скрипт, базується на ksh88 або не працює в режимі posix. Це не про простір, це про будь-який символ символів $IFSbash та wildcard для bash та ksh88. Сценарій, що не сприймає її, зазвичай інтерпретується системою sh, але деякі оболонки, включаючи bash та ksh88, інтерпретують їх на дитині самі.
sch

144

gzip

#!/bin/gzip

До сильного роздратування людей, які звикли до неруйнівних інструментів командного рядка, gzipза замовчуванням руйнує оригінальний файл, замінюючи його gzipped версією (додаючи суфікс).

Це варіація #!/bin/rmваріанту, за винятком того, що цей метод може бути відшкодований ручним втручанням людини (заклик gunzipдо нього). Як особливий бонус, отриманий файл набагато довший за оригінальний (різниця залежить від довжини імені файлу).

Попередження: місце розташування gzipможе бути різним.

EDIT: як вказував WChargin, це більш портативно:

#!/usr/bin/env gzip

Решта файлу може мати будь-який вміст. По суті, це файл, який, коли його викликають, ховається у вікні і відмовляється виходити, поки ви насильно не розпакуєте його.


7
Я ніколи про це не думав, але ви абсолютно правильні.
ojblass

дуже цікаво
Гріеш Чаухан

11
"Попередження: місце розташування gzipможе відрізнятися" - це не код-гольф , тому ви можете використовувати#!/usr/bin/env gzip
wchargin

37
+1 лише для того, щоб It's essentially a file that, when called, hides itself in a box and refuses to come out until you forcibly unpack it.ти зробив мій день, і це 1 ранок.
плескати

По суті, це файл, який, коли його викликають, ховається у вікні і відмовляється виходити, поки ви насильно не розпакуєте його. змусив мене сміятися. : D
Mischa

121

Баш, 13 12

Не найкоротший, але він фактично не видаляє файл і робить систему непридатною.

chmod 0 "$0"

Якщо ім'я файлу не містить пробілів, ви можете видалити лапки, щоб зберегти 2 символи.

Пояснення

Він видаляє всі дозволи ( rwx) з себе. Коли ви спробуєте запустити його або навіть переглядати його код, вдруге, не відновлюючи дозволи вручну, він скаже щось на зразок

bash: <FILENAME>: Permission denied

Відновлення дозволів за допомогою

chmod +rwx <FILENAME>

Стара версія

Видаляється лише дозволи на виконання, але на один знак довше (це було питання про з перш ніж він змінився на ):

chmod -x "$0"

Підступна версія Лукаша Нім'є

#!/bin/chmod 0

4
chmod 0працює теж
гніблер

@gnibbler thnx, додано

Я думаю , ви можете зателефонувати в програму aі зберегти : ще 3 символів:chmod 0 a
років »

@tohecz це в основному обман , хоча

5
Ще приємніше#!/bin/chmod 0
Хаулет

112

6800 машинного коду - 1 байт

0xDD

Це відомо як HCF або Halt and Catch Fire


78
Ну, в правилах написано: "Будь-які відповіді, які просто ініціюють перезавантаження або зупиняються, будуть дискваліфіковані", але це не просто ініціює зупинку, оскільки воно також запалює. Таким чином, +1!
Трейказ

94

Оболонка + sed, 16 байт

Не так руйнівно, як деякі інші відповіді ;-)

Цей скрипт вставляє коментар #на початку кожного рядка самого себе:

sed -i s/^/#/ $0

3
Як щодо sed -i g $0?
seshoumara

91

Commodore 64 BASIC

Цей не видаляє програму.

1 POKE 2048,1

Самознищення

Відповідно до карти пам'яті Commodore 64 , адреса 2048не використовується, але вона повинна містити значення, 0щоб програма BASIC могла бути RUN.


1
Чи Poke просто переміщує змінну до місця?
ojblass

12
@ojblass так, ефективно. poke a, bеквівалентно коду C *((unsigned char *)a) = b;.
Жуль

4
Мені б хотілося так візуалізувати мої FaceBook?
Сонячний Р Гупта

3
Ах вау ... Я пам'ятаю PEEK і POKE від C64 BASIC! Я писав цей матеріал близько 1977 р.
Fixee

бічна примітка: 0байт використовується для позначення кінця рядків коду; тому адреса 0x800, ймовірно, потрібна для позначення початку першого рядка коду.
Тит

89

Припущення: працює Solaris, увійшов як root

killall

3
насправді у «Соларіса» є таке?
ojblass

21
Так, він робить саме те, що написано на жерсті, і вбиває всі запущені процеси.
Грег Хьюгілл

одна пропозиція для вас!
ojblass

9
1, Питання зазначає, що кореневий доступ не дозволений.
користувач80551

119
@ user80551 він є причиною цього правила.
Сейрія

68

Пітона, 18

open(__file__,'w')

Обрізає файл, відкриваючи його в режимі лише для запису.


14
На випадок, якщо ви серйозно, він відкриється сам ( __file__стосується власного імені файлу). Відкриття в wрежимі обрізає файл, в основному очищає його.
Боб

7
Я думаю, що усічення відбувається на відкритому повітрі, але незалежно від виконання Python слід закінчити всі відкриті файли в кінці програми, і Python або ОС закриють їх, коли процес закінчиться. Звичайно, загальноприйнятна практика - явно закривати відкриті ручки, коли ви закінчите з ними.
Боб

5
"Правильний" спосіб обробки файлів у Python - це ... er, with. with open("myfile.txt","r") as thefile:і тоді ваш код обробки файлів автоматично закриє файл, коли ви закінчите.
Шилкоте

1
Це можна скоротити до чогось подібного open("f.py","w").
Етан Бірлейн

1
Не перестає працювати, коли залишається .pyc
minmaxavg

66

Пакет: 5 байт

%0|%0

Це в основному forkbomb для Windows.

Додаток починає свій перший аргумент двічі. Не запускайте це в продуктивних умовах;)


83
Чи є продуктивне середовище для вікон? (Я жартую, звичайно).
Оріон

17
це виглядає так невинно!
ojblass

15
Гаразд, точно не намагайся цього. Це не пройшло добре.
rmobis

75
Не майте репортажу, щоб порушити, але це порушує "запускається лише один раз" найбільш суворим способом.
Xan

14
Я вважаю, що людина виконує це лише один раз, і це кваліфікується.
ojblass

54

JavaScript

localStorage.x = eval(localStorage.x + localStorage.x)

Перший раз, коли ви запустите його, воно буде добре:

>>> localStorage.x = eval(localStorage.x + localStorage.x)
NaN

Якщо ви спробуєте запустити його більше (навіть якщо оновити), ви отримаєте помилку:

>>> localStorage.x = eval(localStorage.x + localStorage.x)
ReferenceError: NaNNaN is not defined

5
Тож якщо ви запускаєте її багато разів, ви отримуєте тему Бетмена. +1 для цього.
Hankrecords

2
@Hankrecords На жаль, не дуже, оскільки це не буде виконано пізніше ...
RedClover

@Soaku Bummer ...
Hankrecords

@Hankrecords, якщо ви не видалите eval, але тоді це завдання не виконає
RedClover

46

Операційна система CMS IBM, що є однокористувацькою операційною системою, яка працює в якості гостя під керівництвом IBM VM Hypervisor, має цікаву файлову структуру.

Файли складаються з трьох елементів, Назва файлу, Тип файлу та Режим файлу. Файловий режим складається з двох елементів, одного алфавіту, який для простоти пояснення можна розглядати аналогічно букві диска для Windows / MS-DOS, і однієї цифрової цифри.

Єдина числова цифра має значення http://publib.boulder.ibm.com/infocenter/zvm/v5r4/index.jsp?topic=/com.ibm.zvm.v54.dmsa3/hcsd0b10127.htm та для цього завдання саме число 3 цікаве:

Файловий режим №3
Файл № 3 режиму означає, що файли стираються після їх читання. Ви можете використовувати режим файлового режиму №3, якщо ви не хочете підтримувати копії в міні-дисках або у своїх каталогах SFS.

Отже, витрачайте години на написання свого сценарію і подайте його як `ВЗАГАЛИ ЗАВДАННЯ A3 '. Запустити, це працює вперше. Відправиться додому, добре виконана робота.

Зауважте, жодне повідомлення не вказує на стирання. Зрештою, всі знають, що це 3означає, чи не так?

Це насправді дуже корисно. Після завершення тестування ви можете використовувати 3тимчасові файли, а потім не прибирати їх, тому що вони є файлами, які читаються один раз.


44

Commodore 64 BASIC

0 NEW

NEW видаляє програму.


1
Що це робити?
Дарт Егрегійний

3
@ user973810, якщо я пам'ятаю основне, нове призначене для очищення пам'яті, тож воно видалить програму
user902383

3
Приємно. Не специфічно для Commodore 64, ймовірно, працює як і майже на всіх 8-бітових машинах BASIC з 80-х ...
ysap

Ви можете також СТАРИЙ або О. назад. Я нова 12 місяців 12-річної гри, що кодує генія; p працюю випадково один раз. Потім випадково врятували замість старої. О. більше не працював :( Я дізнався, як шестигранні редактори працювали досить різко :)
Метт Уоррен

3
@ysap: Це було б більш портативно, якби він використовував 1 як номер рядка; не всі реалізації BASIC підтримують рядок № 0.
celtschk

41

Баш, 12

Примітка: Це руйнує.

:(){ :|:&};:

Це популярна ударна бомба. Він експоненціально з’їдає всю пам'ять і PID блокує систему. Сильна перезавантаження дозволить запустити код знову, хоча чому б ви хотіли це робити?


Баш, 10

:(){ :&};:

На два менші показники це з'їдає вашу пам'ять лінійно.


Баш, 7

w;PATH=

w вибрано як найкоротший виконуваний файл, про який я міг придумати.

Це просто стирає змінну шляху, щоб оболонка не змогла знайти /usr/bin/wнаступного разу. Перезапуск оболонки виправляє її, оскільки шлях зазвичай зберігається~/.profile



1
:(){ :&};:не повинен їсти вашу пам'ять. Він зупиняється, як тільки роздвоєний, тож O(1)активний лише коли-небудь . Ви зробили while(fork());, що лінійно з'їсть вашу пам'ять, це еквівалент fork(); while(1);.
Марина

26
Оце Так! це якісь смертоносні емоції! Я найкраще не називаю свій комп’ютер з великим розміром нахмурений :(){ ....
Level River St,

1
Якщо я правильно пам'ятаю ... вилка бомба періодично залишає один PID відкритим. Сценарій можна запустити ще раз на тому інтервалі ... і якщо це не враховується, можна вбити всі вилки з певним зусиллям. Перезавантаження - це найпростіше рішення.
Brilliand

11
Я не думаю, що це кваліфікується. Це не робить неможливим повторний запуск сценарію, натомість він гарантує його повторне виконання (багато разів).
Бен Войгт

20

C #

Найкоротший код для видалення самості

Process.Start(new ProcessStartInfo("cmd.exe", "/C choice /C Y /N /D Y /T 3 & Del \"" + Assembly.GetExecutingAssembly().Location + "\""));

Код для того, щоб зробити його непомітним в інтерфейсі користувача

Process.Start( new ProcessStartInfo()
{
    Arguments = "/C choice /C Y /N /D Y /T 3 & Del \"" + Assembly.GetExecutingAssembly().Location+"\"",
    WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, FileName = "cmd.exe"
});

7
Нарешті, відповідь C #!
Фарап

Чому потрібен вибір?
wizzwizz4

19

C ++ 71

Виконуваному файлу "golf" відмовлено в запуску наступного разу.

#include <stdlib.h>
int main()
{
system("chmod a-x golf");
return 0;
}

JavaScript / HTML 137, 145 з тестом консолі

<script id="s"> 
function h(){
console.log(1);
var s=document.getElementById("s");
h=s.innerHTML;
h=h.replace("h","g");
s.innerHTML=h;
}

11
@Templar в контексті JavaScript, я думаю, що оновлення сторінки вважається перезавантаженням (можливо?)

2
Навіть якби ви не видаляли сценарій зі сторінки, він все одно виконується лише один раз. У цьому немає сенсу.
nderscore

2
@nderscore Схоже, функція h - це те, що буде виконано лише один раз. Вам потрібно насправді викликати його звідкись іншого (аналогічно запуску програми, я думаю). Скажімо, <button onclick="h();">.
Боб

4
Зважаючи на те, що дозволено перезавантажувати сторінку, і ваша мета лише запобігти виконанню h не один раз, поки вона вже завантажена, що з цим погано function h(){h=0}?
Кін

1
За допомогою нього #include <sys/stat.h>можна отримати доступ до chmodфункції безпосередньо, економлячи досить багато байтів ( <stdlib.h>більше не потрібно, і це не є system). Також не returnпотрібно.
Бен Войгт

19

Оболонка мого імені ... PowerShell

Класичне саморуйнівне повідомлення:

@'
##################################
Project X is a go

Meet Eagle 1 at WP Alpha

Further comms is hereby prohibited
##################################
This message will self destruct in 
5 seconds
'@
5..1| %{$_;Sleep 1;}
"Goodbye"
rm $(.{$MyInvocation.ScriptName})

Пояснення, будь ласка?
noɥʇʎԀʎzɐɹƆ

@ noɥʇʎԀʎzɐɹƆ Рядки до 13 - це просто нісенітниця. Після цього, як і будь-яка інша оболонка, PowerShell завантажує запущений скрипт у пам'ять, і тому він більше не потребує оригінального файлу сценарію ... тому він видаляє себе.
SomeShinyObject

18

Баш (5)

rm $0

Якщо припустимо, що у назві файлу немає пробілів.


40
Ось чому Unix кращий за Windows: rm замість del врятував вам байт.
MadTux

1
@MadTux Я віддаю перевагу * nix перед Unix.
wizzwizz4

14

ш

#!/bin/sh
curl http://runonce.herokuapp.com/

Запуститься лише один раз (і він показує "Привіт, світ!", Якщо він запущений), навіть якщо ви перевстановите систему, і знову поставите скрипт.


EDIT: Я подумав, що випустять сценарій і за банотами. Нічого особливого, оскільки його не слід було випустити в будь-якому випадку, але як би там не було.

<?php
$db = pg_connect("[connection information]");
$ip = isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];

pg_query("DELETE FROM users WHERE time < now() - interval '1 day'");

$result = pg_query_params($db, "SELECT * FROM users WHERE ip = $1 LIMIT 1", array($ip));

if (!pg_fetch_row($result)) {
    echo "Hello, world!\n";
    pg_query_params($db, "INSERT INTO users (ip) VALUES ($1)", array($ip));
}

А також схеми бази даних

CREATE TABLE users (
    ip inet PRIMARY KEY,
    time timestamp with time zone NOT NULL DEFAULT now()
);
CREATE INDEX ON users (time);

Дані зберігаються в базі даних Heroku, сміливо перевіряйте їх політику конфіденційності, якщо вам це подобається. Я не перевіряю дані, що зберігаються в базі даних, вони зберігаються виключно для того, щоб код міг виконуватись один раз.


4
Я б стверджував, що це буде працювати декілька разів, воно просто не дає результату після першого.
Brilliand

5
Це навіть не один раз показувало для мене "Hello World".
Paŭlo Ebermann

1
@ StéphaneGourichon: Так, він запам'ятовує IP-адреси, і немає можливості видалити IP-адресу перед автоматичним видаленням. Я вирішив поставити вихідний код, щоб ви могли перевірити, що він робить.
Конрад Боровський

1
@ StéphaneGourichon: pg_query_paramsдуже захищає від ін'єкції SQL. Однак він не буде збережений, як '; DROP TABLE users;--це не є дійсним IP-адресою ( inetприймає лише IP-адреси), тому, якщо у вас є підроблений X-Forwarded-Forзаголовок, ваш візит не буде збережено. Я сам не вважаю це проблемою.
Конрад Боровський

2
Я вважаю, що це порушення стандартної лазівки: Аутсорсинг реальної відповіді .
молодшийРубіїст

12

PHP, 22 20 символів

<?=unlink(__FILE__);

РЕДАКТУВАННЯ: Видалено два знаки наприкінці за коментарями.


2
Це можна додатково спростити як:, <?unlink(__FILE__);трейлінг ?>не потрібен
Leepowers

Почати потрібно з <?=того, що стартовий тег не розпізнається.
Майкл Міор

2
PHP знищує себе ... га! E_NOTICE рядок 3048
метадінг

<?+ простір теж нормально. Ви просто не можете використовувати лист після короткого тегу.
Тит

11

Рубі, 14

Він переписує вихідний код як назву програми.

IO.write $0,$0

3
А що робити, якщо програма названа "IO.write $ 0, $ 0"? "Припущення. Назвіть програму щось, що недійсне кодом жодною мовою."
Brilliand

@Brilland рубінова програма завжди повинна закінчуватися, .rbі навіть якщо її назва була "IO.write $ 0, $ 0 # .rb", яка не працюватиме, оскільки при написанні вона буде включати повний шлях.
Mhmd

3
@Mhmd рубінова програма може закінчитися чим завгодно. Наприклад , gemі irbце програма на Ruby без розширення.
bfontaine

@bfontaine Які мають шебанги. Це не так.
wizzwizz4

@ wizzwizz4 Shebangs не мають нічого спільного з розширенням. ruby fooі ruby foo.rbпрацюватиме так само з шебангом або без нього. ./fooі ./foo.rb(якщо припустимо, що вони виконуються), вони не зможуть виконувати без shebang і матимуть успіх у ньому (якщо припустити правильний код тощо).
bfontaine

10

Пакетна група (6 символів)

Це за умови, що у нас є дозвіл на видалення файлу, і, звичайно, це можна зробити і в Windows (можливо, також і MS-DOS).

del %0

10

Баш 9 8 персонажів

nc -l 1&

Запуститься лише один раз, оскільки порт заблокований назавжди.


1
Я думаю, що це не працює, тому що 0це спеціальний порт (він зарезервований). Коли я запускаю це на своєму комп’ютері, я можу його відкрити кілька разів. Крім того, це порт < 1024, а це означає, що для його прослуховування потрібен кореневий доступ.
heinrich5991

nc -l 1&виправить проблему 0і буде на один байт коротше, оскільки останній пробіл не потрібен.
kasperd

@kasperd Дякую за вклад :-)
Falco

@ heinrich5991 гаразд - ніж мені знадобиться 11 символів без кореневого доступу, щоб використовувати порт, як 9654
Falco

Потрібно пояснити, чому ви зголосилися?
Falco

9

NodeJS - 33 байти

require('fs').unlink(__filename);

Чи можете ви описати, що це робить для тих, хто не знає мову?
Кайл Канос

1
@KyleKanos Він отримує модуль файлової системи fsта поточне ім'я файлу __filenameта видаляє це ім'я файлової системи.
Кін

7
Ви можете виділити крапки з комою, оскільки вони необов’язкові у JavaScript.
nalply

8

Партія, 7 символів

Збережіть збережену роботу, перш ніж спробувати.

Передбачає або 64-бітну систему, або 32-бітну систему з <2 Гб оперативної пам'яті. Потрібно зберегти у .bat або .cmd файл перед запуском, просто ввівши його в cmd.exe не буде працювати.

^ nul<^

Він споживає повне ядро ​​процесора і заповнює вашу оперативну пам'ять зі швидкістю в кілька сотень мегабайт в секунду. Якщо ви не зупините його вчасно (диспетчер завдань), він буде споживати кожен байт оперативної пам’яті на вашому комп’ютері, вся ваша система замерзне, і ви нічого не зможете зробити, перш ніж насильно вимкнути і перезапустити комп’ютер за допомогою скорочення живлення або утримуючи кнопку живлення.

Усі кредити переходять до txtechhelp на StackOverflow. Для цього див. Більше інформації тут: https://stackoverflow.com/q/23284131/1955334


Як це було б можливо? Що з пейджингом? Пріоритет процесу?
Ніколя Барбулеско

Я запустив цей сценарій, нічого не сталося.
Павло

@Pavel Я б припустив, що це виправлено в Windows 10. Я не можу відтворити його в Windows 10, але він працює в Windows 8.1.
bilde2910

1
"Він споживає повне ядро ​​процесора і заповнює пам'ять оперативної пам'яті зі швидкістю в кілька сотень мегабайт в секунду. Якщо ви не зупините це вчасно (диспетчер завдань), він буде споживати кожен байт оперативної пам'яті на вашому комп'ютері, у всій вашій системі замерзне, і ви нічого не зможете зробити, перш ніж насильно вимкнути та перезапустити комп’ютер за допомогою відключення живлення або утримування кнопки живлення. " Звучить, як страшилка для комп’ютерів ...
noɥʇʎԀʎzɐɹƆ

7

Ось пара. На відміну від багатьох, це не руйнівні, просто творчі та неортодоксальні.

Баш

#!/usr/bin/env bash
read <<< ''
printf "$REPLY" > "$0"

Цей досить простий. Змінна $REPLYстворюється неявно за допомогою read, але заповнюється порожньою єрестрі. Потім цей порожній рядок буде printfредагуватися в поточний сценарій. Це досить заплутаний еквівалент наступного:

#!/usr/bin/env bash
cat <<< '' > "$0" # probably a lot more portable

Пакет Windows

copy con %0 < nul

Другий, в основному, копіює вхід консолі, прочитаний з nul, у поточний файл.


Опубліковано після цього став конкурсом популярності
Ісія Медоуз

1
Перший не працюватиме без дозволів root. Чому ви намагаєтеся замінити нульовий пристрій? Якщо запустити як root, це насправді змусить систему поводитися нестабільно. Ви також перезаписуєте нуль під час запису в нього :) Чому б просто не перемістити його деінде? Наприклад, mv "$ 0" "$ {0} x" чи щось таке? Слід зробити трюк.
Оріон

Чи існує файл після цього?
Іся Медоуз

Я тепер повністю змінив приклад Баша.
Ісія Медоуз

Як вони не руйнуються?
ysap

7

Сінклер ОСНОВНІ

10 POKE 23635,255

Пересуває адресу програми BASIC у пам’яті туди, де вона повинна бути (203), щоб інтерпретатор виявив неправильні дані.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.