Лайфхакер
Лайфхакер
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Выгодные покупки
Новости
Здоровье
Спорт и фитнес
Покупки
Технологии
Отношения
Кино
Реклама
Рабочие места
26 ноября 2014

Рабочие места: Артём Туровец, человек, влюблённый в «Небо»

Гость Лайфхакера – Артём Туровец. Он руководит сервисом онлайн-бухгалтерии, прыгает с парашютом и имеет интересную систему планирования. Сегодня он расскажет вам о своём рабочем месте.
Фото автора Настя Радужная
Настя Радужная

Автор Лайфхакера

Рабочие места: Артём Туровец, человек, влюблённый в «Небо»

Артём Туровец

IT-предприниматель. Закончил Казанский государственный университет. Имеет богатый опыт сопровождения систем учёта. Начинал карьеру программистом в 1С. С 2012 года возглавляет компанию «Небо» – сервис онлайн бухгалтерии.

Чем вы занимаетесь в своей работе

Мой основной и пока единственный проект, по которому меня знают в Рунете – онлайн бухгалтерия «Небо». Внутри «Неба» я занимаюсь вдохновением команды и направлением нашей неистощимой энергии в правильное русло. И непосредственно выбором этого самого русла, а также некоторыми административными функциями.

Как выглядит ваше рабочее место

Моё рабочее место построено таким образом, чтобы было максимально комфортно работать, и становилось не комфортно, в случае появления нежелательного беспорядка. Состоит оно из обычного икеевского белого стола на 4 ногах + кресло + тумбочка.

Рабочее место Артёма Туровца
1 / 0
Рабочее место Артёма 
Рабочие места: Артём Туровец (ООО "Небо")
2 / 0
Это всего лишь обычный белый стол, кресло и тумбочка
Офис онлайн бухгалтерии «Небо»
3 / 0
В офисе «Небо»

Как это работает?

Небольшой стол чисто физически не даёт мне развести на нём сильный беспорядок.

Рано или поздно (и чем меньше стол, тем раньше, – проверено!) на нём физически не остаётся места для того, чтобы положить «ещё одну бумагу», и, хочешь не хочешь, разбираешься с ними.

Белый цвет стола не позволяет «накопить» большое число разводов от кофе/чая. Как только появляется первый, стол начинает выглядеть очень неприглядно. Опять-таки, хочешь не хочешь, вытираешь.

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

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

Рабочий стол Артёма Туровца
Лайфхак от Артёма: чем меньше стол, тем меньше хлама

Ноутбук обычный древний Lenovo, хотя в wish-листе стоит MacBook. Но получу я его у самого себя, как только выполню кое-какие личные KPI. Для повседневной работы хватает Lenovo, так как большая производительность в моей работе не нужна, а картинку обеспечивает большой монитор.

Я не гонюсь за новинками техники, предъявляю к ней те же требования, что и к рабочему месту, – минимально необходимый комфорт.

Наверное, поэтому единственный используемый на настоящий момент гаджет – это смартфон LG на Android. Подарок от команды. Выбран очень хорошо знающими меня профессионалами, поэтому пришёлся прямо в точку. Достаточно маленький, чтобы уместиться в кармане, достаточно большой, чтобы было комфортно с него писать письма и читать книжки, достаточно современный, чтобы не тормозить.

Какое ПО используете

Операционная система – Windows 7. Шла OEM в комплекте с ноутбуком. Подходит мне, потому что на ней комфортно работает 1С, в том числе древней версии 7.7. Дело в том, что помимо директорства в «Небе», я также «подрабатываю программистом», поддерживаю обмен 1С с «Небом».

Скриншот - Артём Туровец
Скриншот рабочего стола Артёма

По долгу службы в системе стоит 3–4 браузера, но пользуюсь только Google Chrome. Скорее всего, потому что он привычнее и пока не возникало задач, которые заставили бы меня сменить его на что-то другое.

Почта – Mozilla Thunderbird, так как бесплатен, но при этом имеет развитую систему автоматических фильтров. И опять же дело привычки – больше 5 лет на нём.

Мессенджеры: Skype и Telegram – по работе; Whatsapp – для личных целей. Skype является нашим основным рабочим средством оперативного общения. Есть несколько устойчивых тематических чатиков, начиная от HD-чата для оперативного обсуждения вопросов поддержки, до 100%-«сисеккотиков» для забавных картинок, не имеющих отношения к работе.

В «Скайпе» я постоянно в статусе невидимка. Это позволяет самому выбирать время ответа и определять его важность.

Аналогично почта. Если прямо сейчас не идёт активных важных переписок, то почтовый клиент я стараюсь держать закрытым.

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

Офисные приложения. Не так давно, пару лет назад, поймал себя на мысли, что не осталось ни одного документа, над которым я работаю один и который потом никому не покажу. А если делиться и, тем более, совместно редактировать, то гораздо удобнее работать в «облаке».

Гугловские таблицы, презентации и текстовый редактор имеют достаточно инструментов для создания смысла и придания минимально-необходимой формы. А уж когда (если) потребуется облечь информацию в очень красивую форму (например, отрисовать презентацию), передаю это дело профессионалам – дизайнерам. И, опять же, устанавливаемые приложения становятся не нужны.

Для управленческого учёта в бизнесе, я использую «Небо», самостоятельно разношу выписку, и получаю от этого удовольствие.

Поделитесь своей системой планирования

Серьёзное влияние на мою систему планирования оказал Глеб Архангельский и его «Тайм-драйв».

В качестве планировщика использую несколько инструментов.

Google Календарь позволяет согласовывать и подтверждать встречи с коллегами и партнёрами и наблюдать их на рабочем столе телефона в виджете. Туда я пишу вообще все события с фиксированным временем начала, так называемые, «жёсткие события». Кроме них, в Google Календарь я ничего не пишу, потому что фанатею от контекстного планирования.

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

Например, я никогда не запишу в Google Календарь задачи, связанные с разработкой приложения «Неба». Когда приходит время работать по разработке, я всё равно захожу в Redmine (дальше таск-трекера наши менеджеры в разработку не влезают) и вижу там все свои задачи по разработке.

Также я никогда не пишу в Google Календарь задачи, связанные непосредственно с бухгалтерией ООО «Небо». Потому что для решения этих задач мне всё равно нужно зайти в «Небо», а там есть наш с бухгалтером задачник на двоих.

Таким образом, почти все задачи раскиданы по контекстам.

Моя фишка, в отличие от классического контекстного планирования по Архангельскому, – сделать так, чтобы попадая в контекст, ты не мог пройти мимо списка задач по этому контексту.

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

Есть и «внеконтекстные» рабочие задачи. Они, как правило, крупные и написаны простым списком в обычном бумажном блокноте, откуда я их постепенно вычёркиваю.

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

Я убеждён, что цели не только полезны, но и вредны.

Во-первых, они зашоривают, не позволяют шире смотреть по сторонам. Например, если бы я упорно (если не сказать «упорото») следовал своим целям и планам от 2008–2010 годов, был бы сейчас руководителем проектов в крупном 1С-франчайзи. Брр! Как сравню ту степень свободы, которая была бы у меня, и что имею сейчас… Даже думать об этом не хочется.

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

С другой стороны, совсем без целей тоже нельзя. Особенно, если ты организовываешь группу людей. Но, как и ко всему, к целям нужно относиться без фанатизма.

Какой у вас режим дня

Режим дня меняется в зависимости от времени года и, конечно же, контекста, в котором я нахожусь.

По умолчанию я считаю себя совой, и самое продуктивное время приходится на период с 16 до 21 часа. С другой стороны, замечаю, что вынужденное «жаворонокство», – это тоже здОрово!

Например, когда сын ходил в детский сад, и я отводил его к (страшно подумать!) 7:15, мои самые продуктивные часы на работе были с 8 до 12–13.

Ещё пример. Когда летишь в командировку, вставать приходится вообще в 4 утра, при этом, самое творчески продуктивное время приходится на 5:00–9:00 часов, пока сидишь в аэропорту и летишь в самолёте.

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

Словом, «жаворонок» или «сова» – это всё ерунда и удобные оправдания перед самим собой. Всё зависит от твоего внутреннего настроя на ту или иную деятельность. Понятно, что положительный настрой невозможно создавать у себя всегда и на всё, да и не нужно.

Нужно просто быть честным с собой, как минимум, и, в идеале, с окружающими.

Я, например, гораздо свободнее себя чувствую, когда говорю коллегам – «парни, я вчера зачитался ночью, поэтому сегодня проспал, всё равно же ничего важного не намечалось утром», чем постоянно-лживое «я сова, не трогайте меня по утрам». Кстати, к моим сотрудникам у меня ровно то же отношение. Гораздо проще договориться, если ты честен с собой и коллегами. Только не путайте это с нетребовательностью.

Какое место в вашей жизни занимает спорт

Отвечая на этот вопрос, я обычно гордо бью себя пяткой в грудь и говорю – «я занимаюсь парашютным спортом». На самом деле, я регулярно прыгаю с парашютом, и добиваюсь там маленьких, но растущих результатов. Но это не спорт, а скорее физкультура.

Физкультура, которая помогает полностью переключиться в другое измерение.

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

Во-первых, занимаешься делами и решаешь задачи, абсолютно не свойственные обычной жизни. Во-вторых, там всё наоборот. Например, рефлексы нашего тела говорят: «В любой непонятной опасной ситуации напрягись и сгруппируйся». В воздухе же, наоборот: «В любой непонятной ситуации прогнись и расслабься». В‑третьих, это просто красиво.

В‑четвертых, в‑пятых… я могу говорить про это довольно долго. :) А вопрос был про место спорта в жизни. Ответ:

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

Только не просите расставить их по приоритетам. Это несравнимые вещи из разных измерений (круглое невозможно сравнить с зелёным).

Артём увлекается парашютным спортом
1 / 0
Артём увлекается парашютным спортом
Артём Туровец после прыжка
2 / 0
Артём и парашют
Прыжок Артёма Туровца
3 / 0
Артём Туровец: «Приезжая на аэродром, полностью переключаешься из земной жизни в воздушную»

Как коротаете время в пробках

Стараюсь в пробки не попадать, благо в Казани после Универсиады это возможно. Если попал, то либо читаю книжку с телефона, либо общаюсь с сыном (если едем с ним). Иногда звоню людям, с кем не бывает коротких разговоров. Такие разговоры всегда откладываю на случай пробки. О безопасности не забываю – в машине есть Bluetooth, книжку читаю тоже – только при нулевой скорости.

Есть ли место в бумаге в вашей работе

К счастью, есть. К сожалению, есть.

Роль бумаги в работе Артёма Туровца
Артём Туровец: «На бумаге легче думается, рисуется, приятнее зачеркивать выполненные задачи»

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

Почему к сожалению? Потому что очень мало наших контрагентов перешли на безбумажный документооборот, как и во всём малом бизнесе. Ситуация на сегодня такова, что на электронный документооборот могут себе позволить перейти только крупные контрагенты. Потому что полный переход требует «прогнуть» под это всех своих партнёров, плюс приложить определенные усилия по запуску его у себя.

Тем не менее, мы с некоторыми партнёрами уже работаем без бумаги, и распространяем эту «заразу» вокруг себя.

Лайфхакерство от Артёма Туровца

Книги, которые открыли для меня разные пласты знания/понимания жизни (две бизнесовых и одна художественная):

  1. Элияху Голдратт – «Цель. Процесс непрерывного улучшения». Что самое главное в бизнесе? Как это измерить? В какую сторону копать, а куда не стоит? Кроме того, начиная с этой книги, я открыл для себя целую теорию ограничений, которая дала ещё и пару практических инструментов.
  2. Джим Кэмп – «Сначала скажите “Нет”». Очень эффективный подход к продажам и переговорам, и заключается он не во фразе, вынесенной в название. Кстати, взвешенное отношение к целям я тоже почерпнул оттуда.
  3. Айн Рэнд – «Атлант расправил плечи». Очень мотивирующая книжка, хотя и затянута местами. В каждом персонаже ты видишь частичку себя. И потом, уже в реальных жизненных ситуациях, начинаешь представлять, на кого из героев ты будешь похож, если поведёшь себя так или по-другому.
Гость Лайфхакера - Артём Туровец
Артём Туровец: «Конфигурация мечты – это ты сам»

Существует ли конфигурация мечты

Да. Это ты сам.

Все люди изнутри ленивы и склонны к прокрастинации. Так вот, основная задача конфигурации мечты в том, чтобы позволить ленивцу внутри тебя проявляться только тогда, когда ты ему это позволишь, и никак иначе.

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

Ты не вспоминаешь такие слова, как «продуктивность» или «мотивация», они тебе просто не нужны. Ты просто берёшь и делаешь. Ты видишь препятствия, но сметаешь или обходишь их, не моргнув глазом.

Кто-то называет это состоянием потока, кто-то вдохновением.

И вот чего хочется пожелать вам, дорогие читатели Лайфхакера. Напишите пару комментариев к этой статье, потом закройте браузер и вперёд – работать/учиться/играть с ребёнком… ЖИТЬ!

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter

Лучшие предложения

10 пар зимней обуви с хорошими скидками на «чёрной пятнице»

10 пар зимней обуви с хорошими скидками на «чёрной пятнице»

постельное белье

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

Roborock Q5 Pro

Надо брать: робот-пылесос Roborock Q5 Pro со скидкой 76%

Гидравлический домкрат с высоким рейтингом отдают со скидкой 35% на AliExpress

Гидравлический домкрат с высоким рейтингом отдают со скидкой 35% на AliExpress

23 нарядных платья, которые можно надеть на новогодний корпоратив

23 нарядных платья, которые можно надеть на новогодний корпоратив

10 рюкзаков для ноутбука, которые не боятся мокрого снега и дождя

10 рюкзаков для ноутбука, которые не боятся мокрого снега и дождя

5 милых мягких игрушек для тех, кто любит мультфильмы Хаяо Миядзаки

5 милых мягких игрушек для тех, кто любит мультфильмы Хаяо Миядзаки

Самый популярный компрессор от Baseus отдают за полцены

Самый популярный компрессор от Baseus отдают за полцены

Это интересно
8 умных гаджетов для дома, которые делают быт проще и уютнее

8 умных гаджетов для дома, которые делают быт проще и уютнее

Коля идёт на смену! Как проходит первый день новичка на складе Ozon 

Коля идёт на смену! Как проходит первый день новичка на складе Ozon 

«Другое Дело» запускает спецпроект «Что Делать Дальше?» — навигатор по взрослой жизни

«Другое Дело» запускает спецпроект «Что Делать Дальше?» — навигатор по взрослой жизни

Нейросети меняют рынок труда. Что нужно сделать сегодня, чтобы оставаться востребованным завтра

Нейросети меняют рынок труда. Что нужно сделать сегодня, чтобы оставаться востребованным завтра

Комментарии
Миша Евдокимов
26.11.14 13:12
Очень-очень понравилось. Особенно симпатичен подход честности.
Артем Туровец
26.11.14 16:58
Спасибо, Михаил! Приятно.
Roman Goncharenko
26.11.14 17:44
Вы меня просто радуете. Может больше бы таких вот статей из рубрики "Рабочие места"? Вот реальный человек с амбициями, но без понтов - читать приятно и полезные советы находишь.
Алексей Пономарь
26.11.14 21:51
без понтов = без Apple?
Roman Goncharenko
27.11.14 13:54
Ну примерно так и есть
Алексей Пономарь
27.11.14 15:56
Вы правда не осознаете, насколько это глупо?
Андрей Лазук
01.12.14 18:28
глупо - с apple
Лилия Гайфуллина
05.04.19 10:50
Интересное интервью, особенно ответы. Вроде бы простые ответы, но как мы от них отвыкли. Почему то считается очень модным вставлять аббревиатуры, иностранные слова, или же слова под которым имеется в виду одно, а в контексте они приплетают его эдак для круглого стола. А здесь просто и понятно, и понятна его позиция и отношения к жизни.

Новые комментарии

Аватар автора комментария
Horugvi16 минут назад

0 / 0

Тебе же не помогло...
Падение Икара: астрофотограф запечатлел парашютиста, «подлетевшего» прямо к Солнцу
Аватар автора комментария
D.V.2 часа назад

0 / 0

Про натертую пятку это круто !
Что такое shallowing — секс-тренд, который очень нравится женщинам
Аватар автора комментария
Информатик3 часа назад

0 / 0

на xiaomi 11 не работает. Вкл режим Factory Mode . Чтоб выти из режима нужно все время клавищей выкл жать и чтоб выбрана верхняя стройка была..
Как включить и отключить безопасный режим на Android-смартфоне
Аватар автора комментария
Кирилл Тимонин3 часа назад

0 / 0

22.11.2025 - новая версия скрипта для автоматического удаления постов со стены ВК, учитывающая все изменения алгоритма удаления постов и интерфейса ВК. У скрипта есть удобное меню для управления процессом. Пред запуском скрипта необходимо войти в режим просмотра сообщений стены с выбором по календарю (двойной клик по слову Сообщения). Далее - выбираете год и дату в календаре, с которой начинать удалять сообщения - например 31 декабря 2023 года. Сообщения будут удаляться в прошлое - весь декабрь, ноябрь, октябрь и так далее. В меню скрипта нужно выбрать год - это служит предохранителем от случайного удаления текущих постов этого года. Скорость удаления постов от 0.1 до 3 секунд. Настраивать в зависимости от скорости вашего интернета и мощности компьютера. Для максимально быстрой работы скрипта необходимо в настройках браузера отключить показ картинок и видео. Скрипт успешно тестировался в браузере Хром на любых скоростях. Удаляет без ошибок. var test = false, count = 0, targetYear = 2024, deletePause = 100; var controlElements = {}; // Объект для хранения элементов управления // Функция создания панели управления function createControlPanel() { var panel = document.createElement('div'); panel.style.cssText = ` position: fixed; top: 20px; right: 20px; z-index: 10000; background: rgba(0,0,0,0.8); color: white; border-radius: 10px; padding: 15px; font-family: Arial, sans-serif; min-width: 200px; backdrop-filter: blur(10px); `; var title = document.createElement('div'); title.innerHTML = '🎯 Управление удалением'; title.style.cssText = 'font-weight: bold; margin-bottom: 10px; font-size: 16px;'; panel.appendChild(title); var stats = document.createElement('div'); stats.id = 'controlStats'; stats.innerHTML = `Год: ${targetYear}Удалено: ${count}Пауза: ${deletePause/1000}сек`; stats.style.cssText = 'margin-bottom: 10px; font-size: 12px; line-height: 1.4;'; panel.appendChild(stats); // Кнопка остановки/продолжения controlElements.stopBtn = document.createElement('button'); controlElements.stopBtn.innerHTML = '🛑 Остановить'; controlElements.stopBtn.style.cssText = ` background: #ff4444; color: white; border: none; padding: 8px 12px; border-radius: 5px; cursor: pointer; font-weight: bold; font-size: 12px; margin-right: 5px; margin-bottom: 5px; width: 100%; `; controlElements.stopBtn.onclick = function() { if (test) { // Останавливаем скрипт test = false; controlElements.stopBtn.innerHTML = '▶️ Продолжить'; controlElements.stopBtn.style.background = '#44aa44'; console.log('⏸️ Скрипт приостановлен пользователем'); } else { // Продолжаем скрипт test = true; controlElements.stopBtn.innerHTML = '🛑 Остановить'; controlElements.stopBtn.style.background = '#ff4444'; console.log('▶️ Скрипт продолжен пользователем'); // Запускаем процесс снова setTimeout(() => { processPostsContinuously(); }, 100); } updateControlPanel(); }; panel.appendChild(controlElements.stopBtn); // Кнопка перезапуска var restartBtn = document.createElement('button'); restartBtn.innerHTML = '🔄 Перезапустить'; restartBtn.style.cssText = ` background: #44aaff; color: white; border: none; padding: 8px 12px; border-radius: 5px; cursor: pointer; font-weight: bold; font-size: 12px; margin-bottom: 5px; width: 100%; `; restartBtn.onclick = function() { test = false; console.log('🔄 Перезапуск скрипта...'); // Сбрасываем кнопку остановки к красному цвету if (controlElements.stopBtn) { controlElements.stopBtn.innerHTML = '🛑 Остановить'; controlElements.stopBtn.style.background = '#ff4444'; } setTimeout(() => { restartWithNewSettings(); }, 500); }; panel.appendChild(restartBtn); // Кнопка быстрых настроек var settingsBtn = document.createElement('button'); settingsBtn.innerHTML = '⚙️ Быстрые настройки'; settingsBtn.style.cssText = ` background: #ffaa00; color: white; border: none; padding: 8px 12px; border-radius: 5px; cursor: pointer; font-weight: bold; font-size: 12px; width: 100%; `; settingsBtn.onclick = function() { quickSettings(); }; panel.appendChild(settingsBtn); document.body.appendChild(panel); return panel; } // Функция сброса кнопки остановки при перезапуске function resetStopButton() { if (controlElements.stopBtn) { controlElements.stopBtn.innerHTML = '🛑 Остановить'; controlElements.stopBtn.style.background = '#ff4444'; } } // Функция обновления панели управления function updateControlPanel() { var stats = document.getElementById('controlStats'); if (stats) { stats.innerHTML = `Год: ${targetYear}Удалено: ${count}Пауза: ${deletePause/1000}секСтатус: ${test ? 'активен' : 'пауза'}`; } } // Функция быстрых настроек function quickSettings() { if (test) { alert('Сначала остановите скрипт для изменения настроек!'); return; } var newPause = parseFloat(prompt('Новая пауза между удалениями (секунды):\n\n0.1-0.3 - Максимальная скорость\n0.5-1.0 - Баланс\n1.5-3.0 - Максимальная надежность', deletePause/1000)); if (!isNaN(newPause) && newPause >= 0.1 && newPause <= 3) { deletePause = newPause * 1000; console.log('⚙️ Пауза изменена: ' + newPause + ' сек.'); updateControlPanel(); } else { alert('Некорректное значение паузы!'); } } // Функция перезапуска с новыми настройками function restartWithNewSettings() { // Сбрасываем счетчик count = 0; // Запрос года для удаления var currentYear = new Date().getFullYear(); var newTargetYear = parseInt(prompt('Введите год, посты за который нужно удалить\n(например: 2024, 2023, 2022)', targetYear)); // Проверка корректности года if (isNaN(newTargetYear) || newTargetYear < 2000 || newTargetYear > currentYear) { alert('Некорректный год! Будет использован предыдущий год: ' + targetYear); } else { targetYear = newTargetYear; } // Настройка паузы между удалениями var pauseInput = parseFloat(prompt('Пауза между удалениями постов (секунды)\n\nРекомендации:\n• 0.1-0.3 - Максимальная скорость (риск ошибок)\n• 0.5-1.0 - Баланс скорости и надежности\n• 1.5-3.0 - Максимальная надежность', deletePause/1000)); // Проверка и ограничение паузы if (isNaN(pauseInput) || pauseInput < 0.1) { pauseInput = 0.1; } else if (pauseInput > 3) { pauseInput = 3; } deletePause = pauseInput * 1000; test = confirm("⚡ НОВЫЕ НАСТРОЙКИ УДАЛЕНИЯ:\n\n• Год: " + targetYear + "\n• Пауза между удалениями: " + pauseInput + " сек." + "\n• Медиа заблокированы: Да\n\nНачать удаление с новыми настройками?"); if (test) { console.log('🔄 ПЕРЕЗАПУСК С НОВЫМИ НАСТРОЙКАМИ'); console.log('🎯 Целевой год: ' + targetYear); console.log('⏱️ Пауза между удалениями: ' + pauseInput + ' сек.'); // Сбрасываем кнопку остановки к красному цвету resetStopButton(); updateControlPanel(); startContinuousDeletion(); } else { updateControlPanel(); } } // Остановка по клавише ESC document.addEventListener('keydown', function(e) { if (e.key === 'Escape' && test) { test = false; if (controlElements.stopBtn) { controlElements.stopBtn.innerHTML = '▶️ Продолжить'; controlElements.stopBtn.style.background = '#44aa44'; } console.log('⏸️ Скрипт приостановлен по клавише ESC'); updateControlPanel(); } }); function disableMediaLoading() { document.querySelectorAll('img, video, iframe').forEach(el => { el.style.display = 'none'; }); const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === 1) { if (node.tagName === 'IMG' || node.tagName === 'VIDEO') { node.style.display = 'none'; } node.querySelectorAll?.('img, video').forEach(media => { media.style.display = 'none'; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); console.log('⚡ Медиа заблокированы'); } function itit() { disableMediaLoading(); // Запрос года для удаления var currentYear = new Date().getFullYear(); targetYear = parseInt(prompt('Введите год, посты за который нужно удалить\n(например: 2024, 2023, 2022)', currentYear)); // Проверка корректности года if (isNaN(targetYear) || targetYear < 2000 || targetYear > currentYear) { alert('Некорректный год! Будет использован текущий год: ' + currentYear); targetYear = currentYear; } // Точная настройка паузы между удалениями var pauseInput = parseFloat(prompt('Пауза между удалениями постов (секунды)\n\nРекомендации:\n• 0.1-0.3 - Максимальная скорость (риск ошибок)\n• 0.5-1.0 - Баланс скорости и надежности\n• 1.5-3.0 - Максимальная надежность', '0.5')); // Проверка и ограничение паузы if (isNaN(pauseInput) || pauseInput < 0.1) { pauseInput = 0.1; } else if (pauseInput > 3) { pauseInput = 3; } deletePause = pauseInput * 1000; test = confirm("⚡ НАСТРОЙКИ УДАЛЕНИЯ:\n\n• Год: " + targetYear + "\n• Пауза между удалениями: " + pauseInput + " сек." + "\n• Медиа заблокированы: Да\n\nНачать удаление?"); if (test) { console.log('⚡ ЗАПУСК С НАСТРОЕННЫМИ ПАРАМЕТРАМИ'); console.log('🎯 Целевой год: ' + targetYear); console.log('⏱️ Пауза между удалениями: ' + pauseInput + ' сек.'); createControlPanel(); startContinuousDeletion(); } } function startContinuousDeletion() { console.log('🔄 Начинаем непрерывное удаление...'); updateControlPanel(); processPostsContinuously(); } function processPostsContinuously() { if (!test) { console.log('⏸️ Скрипт на паузе'); return; } console.log(`\n=== ПОИСК ПОСТОВ ЗА ${targetYear} ГОД ===`); var posts = document.querySelectorAll('div._post'); console.log(`📊 На странице: ${posts.length} постов`); if (posts.length === 0) { console.log('📭 Постов не найдено, пытаемся загрузить...'); loadMorePosts().then((success) => { setTimeout(processPostsContinuously, 1000); }); return; } var postsToDelete = []; for (var i = 0; i < posts.length; i++) { var post = posts[i]; var postDate = extractDateFromPost(post); if (postDate && postDate.getFullYear() === targetYear) { postsToDelete.push({ element: post, date: postDate, index: i }); } } console.log(`🎯 Найдено постов за ${targetYear} год: ${postsToDelete.length}`); // Показываем информацию о найденных постах if (postsToDelete.length > 0) { console.log('📅 Даты найденных постов:'); postsToDelete.forEach(post => { console.log(' - ' + post.date.toLocaleDateString()); }); } if (postsToDelete.length > 0) { console.log('🔥 Начинаем удаление...'); deletePostsSequentially(postsToDelete, 0, () => { console.log(`✅ Удаление завершено. Всего удалено: ${count}`); updateControlPanel(); setTimeout(processPostsContinuously, 500); }); } else { console.log('📭 Постов за ' + targetYear + ' год не найдено, загружаем следующую страницу...'); loadMorePosts().then((success) => { setTimeout(processPostsContinuously, 1000); }); } } function loadMorePosts() { return new Promise((resolve) => { console.log('🔍 Поиск пагинации для загрузки следующей страницы...'); // Ищем кнопку "1" в пагинации (первая страница) var paginationButton = findPaginationButton(); if (paginationButton) { console.log('✅ Найдена кнопка пагинации, нажимаем...'); paginationButton.click(); console.log('⏳ Ждем загрузки новой страницы (3 секунды)...'); setTimeout(() => { // Прокручиваем немного для стимуляции загрузки window.scrollTo(0, 100); setTimeout(() => { console.log('✅ Новая страница загружена'); resolve(true); }, 1000); }, 3000); } else { console.log('❌ Кнопка пагинации не найдена, пробуем альтернативные методы...'); // Альтернативные методы загрузки var alternativeButtons = [ document.querySelector('#fw_load_more.pg_more_link'), document.querySelector('#wall_more_link'), document.querySelector('.wall_more_link'), document.querySelector('.pg_more_link'), findElementByText('к предыдущим постам') ]; var foundButton = alternativeButtons.find(btn => btn !== null); if (foundButton) { console.log('✅ Найдена альтернативная кнопка, нажимаем...'); foundButton.click(); console.log('⏳ Ждем загрузки постов (4 секунды)...'); setTimeout(() => { console.log('✅ Посты загружены через альтернативную кнопку'); resolve(true); }, 4000); } else { console.log('❌ Ни одна кнопка не найдена, используем прокрутку...'); var oldCount = document.querySelectorAll('div._post').length; window.scrollTo(0, 0); setTimeout(() => { window.scrollTo(0, document.body.scrollHeight); console.log('⏳ Ждем загрузки постов после прокрутки (5 секунд)...'); setTimeout(() => { var newCount = document.querySelectorAll('div._post').length; if (newCount > oldCount) { console.log(`✅ Загружено ${newCount - oldCount} постов через прокрутку`); resolve(true); } else { console.log('❌ Не удалось загрузить новые посты через прокрутку'); resolve(false); } }, 5000); }, 1000); } } }); } // Функция поиска кнопки пагинации "1" function findPaginationButton() { // Ищем все элементы пагинации var paginationContainers = [ document.querySelector('.pagination_page'), document.querySelector('.pagination_pages'), document.querySelector('.page_list'), document.querySelector('.pagination_list'), document.querySelector('[data-module="uiPagination"]'), document.querySelector('.ui_pagination') ]; // Ищем в контейнерах пагинации for (var container of paginationContainers) { if (container) { // Ищем кнопку с цифрой "1" var button = container.querySelector('a[href*="offset=0"], a[href*="page=1"], .pagination_page:first-child, .page:first-child'); if (button) return button; // Ищем по тексту "1" var buttons = container.querySelectorAll('a, span, .page, .pagination_page'); for (var btn of buttons) { if (btn.textContent && btn.textContent.trim() === '1') { return btn; } } } } // Ищем по всему документу ссылки с offset=0 var offsetLinks = document.querySelectorAll('a[href*="offset=0"]'); for (var link of offsetLinks) { if (link.textContent && link.textContent.trim() === '1') { return link; } } // Ищем любую кнопку с цифрой "1" в вероятных контейнерах пагинации var allButtons = document.querySelectorAll('a, span, .page, .pagination_page, .ui_pagination a'); for (var btn of allButtons) { if (btn.textContent && btn.textContent.trim() === '1' && (btn.href && btn.href.includes('wall') || btn.parentElement && btn.parentElement.className.includes('pagination'))) { return btn; } } return null; } function findElementByText(text) { var elements = document.querySelectorAll('a, span, div, button'); for (var i = 0; i < elements.length; i++) { var element = elements[i]; var elementText = element.textContent || element.innerText; if (elementText && elementText.trim() === text) { return element; } } return null; } function extractDateFromPost(postElement) { try { var dateElement = postElement.querySelector('.PostDateBlock__root'); if (dateElement) { var dateText = dateElement.textContent || dateElement.innerText; if (dateText) { return parseDateFromText(dateText); } } var likeWrap = postElement.querySelector('.like_wrap'); if (likeWrap) { var likeText = likeWrap.textContent || likeWrap.innerText; if (likeText) { return parseDateFromText(likeText); } } } catch (e) { return null; } return null; } function parseDateFromText(text) { if (!text) return null; text = text.replace(/\s+/g, ' ').trim(); var datePatterns = [ /(\d{1,2})\s+(янв|фев|мар|апр|май|июн|июл|авг|сен|окт|ноя|дек)\s+(\d{4})/i, /(\d{1,2})\s+(января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря)\s+(\d{4})/i ]; for (var pattern of datePatterns) { var match = text.match(pattern); if (match) { var day = parseInt(match[1]); var monthStr = match[2].toLowerCase(); var year = parseInt(match[3]); var months = { 'янв': 0, 'января': 0, 'фев': 1, 'февраля': 1, 'мар': 2, 'марта': 2, 'апр': 3, 'апреля': 3, 'май': 4, 'мая': 4, 'июн': 5, 'июня': 5, 'июл': 6, 'июля': 6, 'авг': 7, 'августа': 7, 'сен': 8, 'сентября': 8, 'окт': 9, 'октября': 9, 'ноя': 10, 'ноября': 10, 'дек': 11, 'декабря': 11 }; var month = months[monthStr]; if (month !== undefined) { return new Date(year, month, day); } } } return null; } function deletePostsSequentially(posts, currentIndex, callback) { if (currentIndex >= posts.length || test === false) { callback(); return; } var post = posts[currentIndex]; deleteSinglePost(post.element).then(() => { count++; console.log(`✅ Удален пост ${currentIndex + 1}/${posts.length}. Всего: ${count}`); // Используем настроенную пользователем паузу console.log(`⏱️ Ждем ${deletePause/1000} сек. перед следующим удалением...`); setTimeout(() => { deletePostsSequentially(posts, currentIndex + 1, callback); }, deletePause); }).catch((error) => { console.error('❌ Ошибка:', error); // При ошибке используем стандартную паузу 100мс setTimeout(() => { deletePostsSequentially(posts, currentIndex + 1, callback); }, 100); }); } function deleteSinglePost(postElement) { return new Promise((resolve, reject) => { try { var menuButton = postElement.querySelector('[data-testid="post_context_menu_toggle"]'); if (!menuButton) { reject('Кнопка меню не найдена'); return; } menuButton.click(); setTimeout(() => { var deleteButton = document.querySelector('[data-testid="post_context_menu_item_delete"]'); if (!deleteButton) { reject('Кнопка удаления не найдена'); return; } deleteButton.click(); setTimeout(() => { var confirmButton = document.querySelector('.vkuiButton--mode-primary'); if (confirmButton) { confirmButton.click(); } postElement.remove(); resolve(); }, 200); }, 200); } catch (error) { reject(error); } }); } function showFinalStats() { var message = `🎉 УДАЛЕНИЕ ЗАВЕРШЕНО!\n\n• Год: ${targetYear}\n• Удалено постов: ${count}\n• Пауза между удалениями: ${deletePause/1000} сек.`; alert(message); console.log(message); updateControlPanel(); } // Запускаем скрипт itit(); // КОМАНДЫ ДЛЯ УПРАВЛЕНИЯ: // - test = false // Остановить скрипт // - restartWithNewSettings() // Перезапуск с новыми настройками // - quickSettings() // Быстрые настройки паузы // - resetStopButton() // Сброс кнопки остановки
Как быстро удалить записи со стены «ВКонтакте»
Задача — дойти до школы самому: как подготовить ребёнка и убедиться, что всё будет в порядке&nbsp;

Задача — дойти до школы самому: как подготовить ребёнка и убедиться, что всё будет в порядке  

Лайфхакер
Информация
О проектеРубрикиРекламаРедакцияВакансииДля начинающих авторовО компании
Подписка
TelegramВКонтактеTwitterViberYouTubeИнициалRSS
Правила
Пользовательское соглашениеПолитика обработки персональных данныхПравила применения рекомендательных технологийПравила сообществаСогласие на обработку персональных данныхСогласие для рекламных рассылокСогласие для информационной программы
18+Копирование материалов запрещено.
Издание может получать комиссию от покупки товаров, представленных в публикациях