Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Нужно ли открывать каждый раз новое ИП, при смене/добавлении вида деятельности?

Лучший ответ:
Нет, не привязано.
Это ваше юр. лицо и вы вправе работать от его имени с кем угодно.

Кстати говоря, вопрос из заголовка не совпадает с вопросом из тела.

Худший ответ:
У ИП нет такого понятия как "Работодатель"
И вообще налоговая и трудовая инспекция может по шапке надавать и вам и заказчику, если между вами по факту трудовые отношения, и это вскроется.
Например если у вас есть должность, штатное расписание, оплата вам приходит ежемесячно, через зарплатный проект, вы при этом обязаны работать в офисе заказчика на его оборудовании, вам оплачивают отпуска, командировки и больничные, и оплачивают вам не по акту оказанных услуг по договору, а просто за то что вы месяц в офисе просидели.

Есть заказчик.
И ты можешь оказывать услуги какому угодно количеству заказчиков в любой удобный лично тебе момент, пока это находится в рамках договора.
А ещё договор не может быть кабальным - тоесть в нём не может быть строчки типа "Пока исполнитель оказывает услуги по этому договору - он не имеет права заключать договоры с другими заказчиками"

Привязано ИП только лично к тебе (по факту это даже не новая организация, а специальный статус для физлица)

Виды деятельности нужно менять / дополнять только если они фактически сменяются.

Если вы оказывали услуги по разработке ПО для закачика А, и теперь работаете с закачиком Б, но оказываете аналогичные услуги - ничего дополнительно менять не надо.
Вопрос: Почему Сайт с www и без www работают как два разных сайта?

Лучший ответ:
1. это вообще два разных домена связи между ними нет никакой.
ВВВ -раньше обозначали что это веб страницы, но сейчас по факту, знаете ли не только вебом жив интернет.
Но сейчас в этом нет необходимости поскольку как правило это и есть веб сайт.
так что это атавизм притом неудачный.
НО с точки зрения домена это обычный домен 3 уровня не больше ни меньше.
2. Для  того чтоб люди не промахивались ( да есть те кто пишут ввв в название сайта сами).
в веб сервере делаюется алиас К примеру
host = site.ru www.site.ru - ( реальная запись другая и варьируется от веб сервера)
но смысл такой что они по факту просто через пробел.
Соответственно обращение к сайту идет и так и так.
А вот к примеру редиректы у вас нас айте  уже могут работать наодном но не работать на другом.
Прямые ссылки в урлах, например многие товарищии делают вот так ="https://site.ru/logo.png"
Соответственно тут  уже будет засада.
Посмотри в инспекторе что в ошибках.

Худший ответ:
Проблема решена !
В моем случае в настройках админ панели WP нужно было указать адрес сайта без WWW  ,и обязательно почистить кеш на сайте и в браузере .
Большое всем спасибо ,что не прошли мимо и помогли решить проблему )
Вопрос: Какие материалы подойдут, чтобы изучить основы алгоритмизации и программирования на C++?

Лучший ответ:
На вопрос "Основы алгоритмизации и программирования на С++"  Google выдает 59 тысяч ответов.  А на вопрос "С++ учебник для начинающих" -  еще 80 тысяч. Вы просмотрели хотя-бы десяток  (не тысяч, а просто 10) из них  и поняли -  ни одна из этих ссылок не подойдет.  Потому что ваши запросы -  уникальны! Ну кто-же додумается изучать "поэтапно и от простого сложного".  Все идут точно в обратном порядке.  При таких ваших запросах -  вряд-ли кто на форуме сможет вам помочь, увы.

Худший ответ:
"Алгоритмы на C++" Р. Седжевик
"Алгоритмы. Построение и анализ"(псевдокод) CLRS

Пожалуйста, гуглите перед тем как задавать вопрос на форуме. В противном случае, можно подобное расценивать как банальное неуважение к людям у которых вы просите совета.
Вопрос: Как работать с 8-ю мониторами?

Лучший ответ:
SLI тут вам не нужен.
Вставляете в экстендеры, или напрямую в материнку столько видеокарт сколько вам нужно, но лучше одного вендора, чтобы не было пляски с дровами, и подключаете сколько нужно мониторов.

Но вообще для LED экранов (а LedVision для этого и используется) и построения изображения на них обычно используются специальные карты передатчики и приёмники из которых и собирается LED панель типа билбордов. Т.е. передача изображения не требует большого количества видеовыходов. Достаточно одной видеокарты и контроллера.

Худший ответ:
По одному Display Port можно подключить, вроде, до 4х мониторов.
Соответственно, если у тебя 4 DP, то ты можешь подключить 16 мониторов, если они поддерживают подключение по цепочке.
Вопрос: Можно ли сократить этот код?

Лучший ответ:
function render(arr) {
    return `<a data-num="${arr.id}" data-category="${arr.category}" class="products__card card">
                <div class="card__image image">
                    <img src="${arr.image}" alt="${arr.image}">
                </div>
                <h3 class="card__title title">${arr.name}</h3>
                <p class="card__desc">${arr.description}</p>
                <div class="card__bottom">
                    <p class="card__price">${arr.price} р.</p>
                    <button class="card__buy">
                        <img src="images/icons/shopping-cart-add.svg" alt="shopping-cart-add">
                    </button>
                </div>
            </a>`;
}

function loadCakes(data, count = null) {
    return data
        .slice(0, count ?? data.length)
        .reduce((carry, item) => carry + render(item), '');
}

function loadItems() {
    $.getJSON('database/products.json', function (data) {
        $('#cakes-cards').html(loadCakes(data));
        $('#index-cards').html(loadCakes(data, 6));
    });
}

Худший ответ:
$(function() {
loadItems();
});

function loadItems() {
$.getJSON('database/products.json', function(data) {
function loadCakes(num) {
let out = '';
for (let i = 0; i < (num || data.length); i++) {
out += '<a data-num="' + data[i].id + '" data-category="' + data[i]['category'] + '" class="products__card card">';
out += '<div class="card__image image">';
out += '<img src="' + data[i].image + '" alt="' + data[i]['image'] + '">';
out += '</div>';
out += '<h3 class="card__title title">' + data[i]['name'] + '</h3>';
out += '<p class="card__desc">' + data[i]['description'] + '</p>';
out += '<div class="card__bottom">';
out += '<p class="card__price">' + data[i].price + ' р.</p>';
out += '<button class="card__buy">';
out += '<img src="images/icons/shopping-cart-add.svg" alt="shopping-cart-add">';
out += '</button>';
out += '</div>';
out += '</a>';
}
return out;
}
$('#cakes-cards').html(loadCakes());
$('#index-cards').html(loadCakes(6));
})
}
Код был упрощен с помощью цикла for. Теперь функция loadCakes обрабатывает только один случай, в зависимости от переданного параметра num. Если num равен 0 или не был передан, то в цикле обрабатываются все элементы из базы данных. Если num больше 0, то обрабатываются только num элементов. После этого, результат выводится на страницу в нужные элементы.
Вопрос: Даже после gh auth login git требует имя пользователя?

Лучший ответ:
давно пора понять, что с гитхабом проще работать ключами, а не логин/пароль.

у вас же есть консоль, что заставляет пользовать костыли вместо автоматической/сквозной авторизации?

Худший ответ:
Вы вошли в Github CLI, а нужно в Git.
Лучше авторизовываться по ключам (SSH), но можно при авторизации через консоль вместо пароля писать GitHub токен, сгенерированный в настройках аккаунта.
Вопрос: Что означает «!!~»?

Лучший ответ:
Сокращалка, удобная для indexOf(), который возвращает -1 если не найдено, или индекс от 0 и больше.

Для логики приложения часто бывает нужно узнать только, найдено или нет:  т.е. -1 или иное значение. Можно просто сравнивать if (a.indexOf(b) > -1) { /* найдено! */ } но иногда хочется короче.

Битовый оператор НЕ ~ хорош тем, что выделяет -1: только -1 с этим оператором даст 0. Прочие числа дадут какое-то ненулевое значение.

~(-1) === 0

Остаётся привести значение из численного в булево. Для этого два воскл. знака — два логических НЕ.

для варианта «найдено» из числа от 0 и больше получилось тоже ненулевое число, и !! даст true
для варианта «не найдено» из -1 получится уникальный 0, и !!0 вернёт false


Худший ответ:
https://developer.mozilla.org/en-US/docs/Web/JavaS...

~ Заменяет каждый бит операнда на противоположный.
!! (Логическое НЕ) Возвращает false, если операнд может быть преобразован в true; в противном случае возвращает true.
Вопрос: Как удалить слова из списка в строке, почему не работает?

Лучший ответ:
split() разбивает по пробельным символам. У тебя в списке list_of_words будет 'Москва.', а не 'Москва' и '.'

Худший ответ:
words_to_remove = ['Удаленка', ' Москва', '.']

my_str = 'Руководитель отдела маркетинга в ЮКО. Москва. Удаленка.'

list_of_words = my_str.split(" ")

filtered_words = [word for word in list_of_words if word.lower().replace(".", "") not in [i.lower().replace(" ", "") for i in words_to_remove]]

final_string = ' '.join(filtered_words)
print(final_string)
Вопрос: Как сделать ВК бота который читает данные с google sheet?

Лучший ответ:
Возможно, Vk API, Google Sheets API

Худший ответ:
Да, это возможно!

Работал много раз с Google Sheets, так что подскажу небольшой, но очень хороший гайд, тут рассказано всё, от того как создать ключ, до того, как получать и загружать данные в таблицу

По поводу бота для ВК, можно использовать модуль vk_api, также отличный гайд для него
Вопрос: Есть ли варианты ввести Windows home в домен?

Лучший ответ:
Теоретически возможно, но зачем? 
С точки зрения лицензионности, такая модифицированная винда становится нелицензионной и функционал нестандартно вкоряченный в неё может работать нестабильно, т.е. сейчас нормально работает, а прилетит какое-нибудь обновление и всё отвалится. Проще использовать подходящую версию винды.

Худший ответ:
обнови с установочного диска до winPro и всё
Вопрос: Не работает сенсор на пк с android-x86, что делать (ЗАКРЫТО)?

Лучший ответ:
Крайне сомнительно что сборка андроида которая даже не полностью работает, будет хоть чем-то лучше в плане потребления.
Если батарейка садится быстрее чем по паспорту, то она либо устала, либо в винде какой-то процесс жрёт энергию.

Худший ответ:
Сегодня решил установить андроид в качестве основной системы, так как уже надоело, как Windows 8.1 жрёт энергию. 
Винда - самая энергоэффективная система для ноута. Без вариантов(если не учитывать linux без иксов). А твоя кривая сборка андроида сожрет батарею раза в два быстрее.
Вопрос: Как правильно разогнать Asus GTX 960 Strix 2gb?

Лучший ответ:
Разгон - развлечение для "энтузиастов".
Производитель не дает никаких гарантий свыше того, что разогнано на заводе.
Некоторое железо прекрасно разгоняется, некоторое не разгоняется вообще.
Так что на вопрос "Как правильно разогнать?" есть только один ответ: никак.

spoilerА, ну и если вам прям неимется и хочется получить еще хоть чуть-чуть производительности - начинайте потихоньку повышать частоты и напряжения. Но будьте готовы к тысячи перезагрузок, лагов, фризов, нестабильной работы системы, повышенному энергопотреблению и перегреву. Методом проб и ошибок может быть вам и удасться что-то там разогнать.
Разгон процесс не быстрый.

Где-то там в интернетах вам будут писать "Установил напряжение X, частоту Y и все работает!"
У кого-то может и заработает. Но далеко не факт, что заработает у вас.

Как ни крути, лучший способ разгона - покупка нового железа.

Худший ответ:
У тех, что с коробки в наименовании должно быть "OC"
У меня strix 960 4 Gb версия. На скрине мои настройки в MSI Afterburner 


Это позволило в Ведьмаке 3 при прочих равных поднять на 5-7 ФПС. И то это зависит от конкретной сцены/настроек графики/удачи.
Как уже выше написали разгон любого железа - лотерея. Удачный экземпляр - не удачный экземпляр.
Вопрос: Возможно ли создать кроссплатформенное приложение на php?

Лучший ответ:
но не просто в виде exeшника файла, а отдельного, опять же, десктоп приложения но с большим функционалом
Чем отличается приложение в виде экзешника от десктоп приолжения с большим функционалом? размером экзешника или ты плохо понимаешь что такое экзешник?

Здравствуйте, появилась идея создать кроссплатформенное приложение: ВЕБ + ДЕСКТОП
Отлично. Язык выбрал, а платформу ты какую выбрал для кроссплатформенности?
А еще лучше, какие ты уже приложения сделал, хотя бы некроссплатформенные?

Хочу синхронизировать десктоп приложение с веб составляющей
чего?

Попробуй сперва внятно пояснить свою хотелку себе, потом подучи терминологию именно в том смысле, как терминами пользуется большинство, и уточни свой вопрос.

Худший ответ:
Вообще когда то были попытки под названием PHPQt. Но насколько это сейчас живо - фиг его знает. Лучше выбрать что то иное, нежели PHP.
Вопрос: Как преобразовать документ pdf в лист excel?

Лучший ответ:
Анализ документа это не простой процесс, повезет, если структура у всех документов будет одинаковая, и машиночитаемая, тогда это легко будет автоматизировать, а вот если информация записана 'как получится', где порядок и способ записи отличается (например запись велась много времени и операторы менялись, каждый изобретал свой формат, один по 1 строке на данные название: значение, другой в одну строчку через запятую, трети написал сначала список названий значений, а затем список самих значений и т.п. или писать данные в колонках,.. вроде бы у каждого есть какой то порядок но везде разный). Помимо формата есть еще проблема с разными шрифтами и положениями элементов на странице, лишний текст на сопровождающих картинках и графиках и много нюансов.

В общем требуется исследование, которое тебе сначала придется провести.

У тебя 2 варианта решения (как повезет)
1. если текст в pdf записан как текст
разбираешь документ на элементы чтобы получить список текстовых строк с координатами (вот тут обсуждалось там же и пример)

2. если текст не содержится внутри документа и pdf исключительно как картинка (бывают разные случаи, в простом варианте - pdf как векторное изображение, грубо говоря команды принтеру/графопостроителю, бывает прямо изображение помещают, например после сканирования бумажных
то используй инструменты распознавания текстов на изображении, например открытый tesseract (его можно самому натренировать на шрифты, если будут использоваться необычные, в этом случае конечно вручную придется набирать символы из документа, подготавливать их в обучающую выборку... примеры в интернете есть, но скорее всего так глубоко лезть не придется)
Чтобы получить текст с координатами так же можно посмотреть пример тут
Осторожно с мультиязыковыми заморочками, одни и те же буквы в разных языках могут как совпадать по виду так и отличаться (разные шрифты), плюс распознавание может путать букву О и ноль, l и один и т.п.

Немного поковыряться, чтобы исключить разбиение текстов на буквы а предложения на слова (делать по координатам, если символ или слово находится справа на некотором расстоянии и на той же y координате (+-) то считать что они одно слово-предложение.

Проанализировав так всю базу документов ты сможешь уже работать с текстовыми данными, сгруппировать по форматам (искать слова на соответствующих позициях и порядке) и по каждой написать приложение парсер.

Каждое такое приложение будет примитивным, фактически для каждого формата в списке документов - свое.

p.s. вспоминаю историю, где начальство какой то организации потребовало распечатать тонны (буквально машину) бумаги, какие то документы... а в последствии в другой конторе пришла задача отсканировать всю эту кипу бумаг

желаю что бы у тебя было не так

Худший ответ:
Тяжелая задачка тебе прилетела. Я-бы вообще не советовал ее делать. Много ручной работы. 
И эффективность решения сильно зависит от того как выглядит документ. Что там внутри?
Текст? Таблицы? Или сканированные фото.

По поводу парсинга pdf на python - вот был вопрос в стековер https://stackoverflow.com/questions/18755412/parse... можно начать с этого.
Вопрос: Air M1 8/256 — хватит для Frontend разработки?

Лучший ответ:
Вполне хватит. У макбуков очень хорошая система управления памятью.

Худший ответ:
8гб однозначно не хватит. 16гб - впритык. И то благодаря Vue, реакт жрёт сильно больше.)

Но вообще, хоть с 16гб можно жить, но с 32гб+ уже можно увеличить выделение памяти по умолчанию для Webstorm и Node и работать станет действительно приятно. Ну, по крайне мере, ещё на пару лет.)

Вообще решение довольно простое: поставь будильник себе на середину рабочего дня, как зазвинит - посмотри, сколько памяти юзается вот прям сейчас, во время активной работы и от того пляши. Будь уверен, что меньшее число гарантирует тебе неудобства, даже если кажется, что ты мог бы "потесниться" отрубив то или это.
Вопрос: Как из массива целых чисел найти все возможные комбинации (не только двух чисел, а и более) дающие искомую сумму?

Лучший ответ:
Во-первых, таких комбинаций может быть до 2^n, где n - количество чисел в массиве.

Можно рекурсивно перебрать числа: функция принимает список уже выбранных чисел, их сумму и сколько первых чисел массива обработаны. Если все числа обработаны, функция сравнивает сумму с искомой и, если надо, выводит список. Потом завершается. Если еще не все числа обработанны, то функция два раза рекурсивно вызвается с параметрами: Текущее число добавлено или нет в список, обработано на одно чисел больше.

Другой вариант, через битовые маски, без рекурсии. Перебирайте число от 0 до 2^n-1. Потом смотрите на него, как на битовую маску. Так вы переберете все подмножества из n элементов. Если i-ый бит установлен, то берите i-ое число в сумму. Если сумма совпала с искомой - вы нашли вариант.

Ну и самый быстрый вариант: с использованием динамического программирования. Как в задаче о рюкзаке вам надо подсчитать F(i,j) - можно ли числами с i-ого по последнее собрать сумму равную j. Потом рекурсивый перебор оптимизируется с этой информацией. Вы текущее число берете или нет и запускаетесь рекурсивно, если оставшимеся числами можно набрать оставшуюся сумму до ответа.

В общем случае это решение будет работать все так же экспоненциально. Но, если ответ не большой, т.е. вариантов набрать нужную сумму не много, то это будет сильно быстрее первых двух решений, потому что тупиковые ветки не перебираются.

Худший ответ:
задача NP-полная = нужен полный перебор всех возможных комбинаций

Если числа точно неотрицательные, можно сразу исключить превосходящие искомую сумму.

Разбор проблемы (на англ.)
Вопрос: Как исправить SyntaxError: positional argument follows keyword argument?

Лучший ответ:
0.Не пытаться писать ботов.
1. Изучить, что такое аргументы, какие они бывают.
2.Открыть гугл.переводчик, вставить текст ошибки и применить только-что полученные знания.

Худший ответ:
Попробуйте аргументы, которые передаёте в forward_messages объединить в список или кортеж.

vk.messages.send(message="Записи за вчерашний день", forward_messages=(a1,b2,c3,f4,d5,g6,q7,w8,e9,r10,a,b,c,d,f,g,aa,ab,ac,ad,ga,aab,abb,acb,adb,ga1,aab1,abb1,acb1,adb1), chat_id=id, random_id=0)
Вопрос: Как установить аудио драйвера на Linux?

Лучший ответ:
В линуксе все драйверы встроены в ядро, и обычно если и ставятся, то в очень экзотических случаях. Ваш драйвер в списке уже есть, как и в дистрибутивах. - ставить ничего не нужно.

Худший ответ:
Дополню ответ пользователя Drno 
Linux mint на оболочке xfce ,  потому что такие  оболочки как KDE, gnome либо Unity , отнимают большой ресурс компьютера, хоть и выглядят привлекательно, поэтому если вы "зелёный"  пользователь в этой среде, то могут сложить негативное впечатление от использования Linux дистрибутива. 

Сам же я начинал свой путь ещё в далёком 2014 году с Debian, и сколько лет уже прошло, сколькимт дистрибутивами я пользовался от разных семейств, Debian остался в моем  ❤️ = )
Вопрос: Подойдет ли Docker для следующих задач?

Лучший ответ:
https://www.docker.com/blog/containers-are-not-vms/
Докер предназначен для развёртывания приложений, а не предоставления доступа к виртуальным машинам.

1) Возможность подключаться по ssh, ftp с любого ПК в одной локальной сети.
Просто любой гипервизор. Хоть hyper-v, хоть vmware
2) Возможность сделать копию текущего состояния и развернуть на другом ПК со всеми файлами БД и.т.д. (Не в текущей локальной сети)
Как в п1. С докером такое сложно будет организовать.
3) Возможность работать с nginx, apache, npm, php, python, mysql (это если выбрать докер, то чтобы все это было в одном контейнере)
Запихнуть всё в один докер контейнер - это достаточно серьёзные пляски с шелл-скриптами будут.
А на виртуалке элементарно.
4) Быстрое обновление до последних версий вышеуказанных модулей. (Как у докера. Указал в конфиге версии и собрал контейнер по новой)
sudo apt update && sudo apt upgrade

В общем тебе нужна либо нормальная виртуалка, либо менять подход, который ты будешь использовать.
Например под твои задачи вполне должен подходить k8s, но тогда придётся менять подход, ибо никакого подключения по ssh и разделения одной "машины" между несколькими пользователями там не будет.

Худший ответ:
Вам нужна виртуалка. Или lxc контейнер
Вопрос: В чём смысл передавать array_reverse в foreach без явной необходимости обратного порядка элементов?

Лучший ответ:
Для ответов на подобные вопросы всегда полезно использовать логику.
Например:
Если необходимости в обратном порядке элементов нет, то array_reverse не нужна.
Если array_reverse используется - значит, скорее всего, необходимость есть, но вы её просто не видите.

Это универсальный способ, который позволяет ответить на можество подобных вопросов.

"оставить исходный массив нетронутым" причиной не является.

Худший ответ:
Для ответов на подобные вопросы всегда полезно использовать логику.
Например:
Если необходимости в обратном порядке элементов нет, то array_reverse не нужна.
Если array_reverse используется - значит, скорее всего, необходимость есть, но вы её просто не видите.

Это универсальный способ, который позволяет ответить на можество подобных вопросов.

"оставить исходный массив нетронутым" причиной не является.
Вопрос: Насколько резонно подключать библиотеки для таких вещей как модалка, маски и тд?

Лучший ответ:
Вопрос философский и зависит от различных факторов. Иногда, действительно, легче написать какой-то компонент самому. Особенно если сайт простой. А вот для больших проектов, где требуется производительность, модульность, к примеру, можно и подключить готовую библиотеку.

Как лучше - решать всегда вам. Вы являетесь разработчиком и только вы знаете себя лучше других - сможете написать хороший компонент или нет.

Лично я использую библиотеки для более-менее крупных проектов, которые со временем будут только расширяться. Для одностраничников 50/50. Всё зависит от требуемой скорости разработки.

Худший ответ:
Если это ваш личный проект и вы не хотите сильно заниматься  модалкой, маской и тд.. Тогда вполне можно использовать библиотеки. Если проект большой и который нужно изменять периодически, тогда ручками нужно писать код и кастомизировать.
Вопрос: Как избавиться от ошибки синтаксиса?

Лучший ответ:
Скорее всего у тебя версия Python которая не поддерживает f строки. Но лучше прикрепи ошибку, здесь нет ясновидящих.

Худший ответ:
Ну, так пользуйся '+', в чём проблема.
Вопрос: Можно ли установить операционку на которой работает MacBook на обычный офисный ноут ASUS?

Лучший ответ:
гуглить слово "хакинтош".  с ноутом шанс околонулевой.

Худший ответ:
Нет. И ненадо. 
Ставьте линукс минт
Вопрос: Как запретить запуск скрипта по крону больше 1 раза?

Лучший ответ:
/usr/bin/flock -w 600 /var/tmp/myscript.lock /root/myscript.sh

 Эта комманда запустит /root/myscript.sh и создаст lock-файл для данного процесса. Пока он активен, новый вызов данного скрипта не произойдет.
После завершения программы, блокировка файла снимается и процесс может быть снова запущен.
Параметр -w 600 определяет время ожидания комманды flock на освобождение lock-файла.
Для моментальной отмены выполнения процесса используйте параметр -w 0, для ожидания же бесконечно долгого времени параметр нужно опустить.

https://pingtool.org/ru/using-flock-to-ensure-only...

Худший ответ:
<?
//Проверка блокировки
if(file_exists("lock.txt"))
  die("copy");

function test228($msg) {
  if (!$f = fopen('test.txt', 'a+')) return false;
  @fputs($f, date('H:i:s > ').$msg."\r\n"));
  @fclose($f);
  return true;
  }

header('Content-Length: 1');
header('Connection: close;');
echo ' ';
@flush();
@ob_flush();

//Блокируем
@file_put_contents("lock.txt", "");

for($i=0; $i<3; $i++) {
    test228("test"); // если использовать эхо будет падать
    sleep(10);
}

//Удаляем блокировку
@unlink("lock.txt");
?>