Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как в js динамически рисовать предметы?

Лучший ответ:
Логикой. Имеете две точки, стартовая и конечная, пока они пустые. При первом клике делаете проверку, если стартовой точки нет, то этот клик и будет стартовой точкой, значит записываем координаты клика в стартовую точку. В этот момент должно работать событие мыши mousemove, которое делает проверку, есть ли стартовая точка и нет конечной, тогда рисуем прямоугольник от стартовой точки до точки координат мыши. При повторном клике опять делается проверка, если стартовая точка есть а конечной нет, то записываем точку мыши в конечную. В этот момент условие в mousemove больше не работает, т.к. есть конечная точка, прямоугольник закрыт. Можно его нарисовать окончательно.
У fillRect конечная точка описывается шириной и высотой, поэтому нужно ее высчитывать вот так:width = xEnd - xStart;
height = yEnd - yStart;

Худший ответ:
Ну тут довольно все просто, если умеешь рисовать квадрат и отслеживать действия мыши (mousedown, mouseup, mousemove). При нажатии кнопки мыши записываешь координаты курсора, это и есть стартовая точка. Далее при движении мыши ты тоже получаешь координаты курсора, это и есть точка, куда рисовать. Остается только нарисовать. Чтоб это было динамически, придется рисовать на каждом кадре, очистил - нарисовал, очистил - нарисовал и тд. 
jsfiddle.net/profesor08/2rw8c7qglet canvas = document.createElement("canvas")
let ctx = canvas.getContext("2d")

document.body.appendChild(canvas);

let x1 = 0, y1 = 0, x2 = 0, y2 = 0;
let canDrawSelection = false;

canvas.addEventListener("mousedown", function(e) {
	canDrawSelection = true;
	x1 = e.clientX;
	y1 = e.clientY;
	x2 = e.clientX;
	y2 = e.clientY;
});

canvas.addEventListener("mouseup", function(e) {
	canDrawSelection = false;
});

canvas.addEventListener("mousemove", function(e) {
	x2 = e.clientX;
	y2 = e.clientY;
});

function drawSelection() {
	if (canDrawSelection === true) {
		ctx.beginPath();
		ctx.lineWidth="2";
		ctx.strokeStyle="white";
		ctx.rect(x1, y1, x2 - x1, y2 - y1);
		ctx.stroke();
	}
}

function render() {
	ctx.canvas.width = window.innerWidth;
	ctx.canvas.height = window.innerHeight;
	ctx.fillStyle = "#2B2E35";
	ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
  
	drawSelection();
}

function animate() {
	requestAnimationFrame(animate);
	render();
}

animate();
Вопрос: Как заполнить таблицу по умолчанию, при создании миграций?

Лучший ответ:
Для этого есть Database: Seeding

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

Лучший ответ:
setInterval нельзя использовать для этой задачи. Его точность не соответствует, он нужен для другого и работает по другому.

Если нужна точность - то нужно использовать Date. Пример

Алгоритм примерно такой:
1. При первом нажатии на кнопку, вы запоминаете дату
2. При втором нажатии на кнопку, вы запоминаете новую дату
3. Теперь достаточно преобразовать обе даты в число, и вычесть из более новой даты, более старую.

const btn = document.querySelector('[data-timer-button]');
const result = document.querySelector('[data-timer]');
let timerStart, timerEnd;
let isRunning = false;

btn.addEventListener('click', () => {
  if (isRunning) {
    isRunning = false;
    timerEnd = new Date().valueOf();
    result.innerHTML = `${timerEnd - timerStart} ms`;
  } else {
    isRunning = true;
    timerStart = new Date().valueOf();
    result.innerHTML = 'running...';
  }
})

Худший ответ:
в консоле не проверяй, комп сгорит
snippet
Вопрос: Подбор Mikrotik для офиса?

Лучший ответ:
RB2011UIAS-RM очень слаб. Не справится.Необходимо чтобы роутер держал 2 канала связи с другими учреждениями
В особенности с этим, если каналы шифрованные.
3011 или 4011 из ответа Дмитрий гарантированно справятся с задачами.

Худший ответ:
Лучше посмотреть в сторону 3011 или 4011, но всё зависит от нагрузки на роутер. Может вам и hEX хватит
Вопрос: Хм.. Если реализация AJAX запросов — компетенция бекендера, он должен уметь и в js фреймворки?

Лучший ответ:
Бэкендер может вообще не знать js.
Он реализует на каком-нибудь серверном языке (C#, PHP, Ruby и пр) некое API, по которому фронтендер уже отправляет ajax запросы.
Это в теории)))
На практике работодатели частенько хотят фулстеков, которые будут реализовать и  клиентскую, и серверную часть.

Худший ответ:
В общем случае это не компетенция бэкендера, но запросы то он слать итак будет уметь
Вопрос: Как обращаться к определенным элементам на странице в Vue.js?

Лучший ответ:
Когда вы пишете на вью, вы должны ориентироваться на состояние данных. Грубо говоря, императивный подход здесь не совсем в тему.
Вы не должны писать "по клику присвоить класс"
Вместо этого вы должны делать такdata() {
  return {
    isShowHelloBlock: false,
  }
}
<div :class="{someClass : isShowHelloBlock}">Hello</div>
<button @click="isShowHelloBlock = true">toggle block</button>
Изменяя состояние, вы изменяете представление.

Худший ответ:
Во вью логика шаблона в шаблоне
В js только работа с данными
https://ru.vuejs.org/v2/guide/class-and-style.html
https://ru.vuejs.org/v2/guide/conditional.html
Вопрос: Исключение это и есть ошибка?

Лучший ответ:
Вот  тут разжевано. 
https://stackoverflow.com/questions/912334/differe...

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

UPD
Самое главное забыл
https://docs.microsoft.com/ru-ru/dotnet/standard/e...

Худший ответ:
Исключение это и есть ошибка?запланированная возможности ошибки (обычно высоко вероятной)
ps предполагая вероятную ошибку, мы даем инструмент ее обработки.. (я думаю, что изобретатели Exception думали именно так
pps по опыту кодинга &&  рефакторинга, думаю, это классный инструмент.. но не для новичков
Вопрос: Kак сделать так чтобы мой палиндром работал не только с маленькими буквами но и с большими тоже?

Лучший ответ:
привести строку к одному регистру

Худший ответ:
Сделать строка = строка.upper
Вопрос: Какой одноплатный компьютер выбрять для веб-разработки?

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

Худший ответ:
Что-то типа такого возможно подойдёт: https://www.aliexpress.com/item/32966918119.html 
или типа GIGABYTE BRIX (там много разный с разной ценой)
Можно поставить например убунту и попытаться разбораться с ней.

Всякие малинки и глючный китай типа апельсинок это не для работы, это для секса.
Линукс тоже кагбы не для новичков, там не бывает такого чтоб "работало из коробки".
Вопрос: Выводит ошибку: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in что делать?

Лучший ответ:
Перед соединением с БД надо написать строчку 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);после этого пхп будет писать реальную причину ошибки, а не эту ерунду.

Колупаться, как тут предлагают, с mysqli_error() - это треш и прошлый век.

Подробный пример того как правильно соединяться с БД, с выставлением всех необходимых опций

Худший ответ:
У вас там ошибка, и возвращается false.
Сделайте mysqli_error() и посмотрите какая.
Вопрос: Верстка и программирование?

Лучший ответ:
1) css должен быть один для всех , точнее минимум кода, больше классов , БЕМ и т.п Без таких простых вещей не было бы бутстрапа например
2) причем в этой истории дизайнер?

Худший ответ:
чек-лист составьте для верстальщика, либо ищите опытного
Вопрос: Kак заработать на vps сервере?

Лучший ответ:
Никак. Квалификации и денег не хватит для заработка.

Худший ответ:
А Вы что-то такое имеете предложить оригинальное? Лучше многих известных хостеров?
Вопрос: Почему отправленное письмо с помощью php скрипта попадает в спам?

Лучший ответ:
Проблемы могут быть разные. Проверить письма на спам можно с помощью этого сервиса
https://www.mail-tester.com
Он проведет проверку письма и выдаст список проблем и советы, как их исправить

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

Лучший ответ:
Создай таблицу с столбцами как было сказано выше, к ней напиши класс с методами: 
1. Определение типа задания (купить, продать, поставить и.т.д), в зависимости от возвращенного значения напиши логику игрока для выполнения)
2. Тип предмета для действия (тут все просто, будут хранится предметы: стулья, столы, и.т.д. и их количество для выполнения)
3. Награда за выполнение задания.
4. Количество предметов у игрока (все то же самое что и в столбце 3)
5. Процесс выполнения (по желанию) в нём будут высчитываться сколько у игрока нужных предметов и в зависимости от их количества ставится % выполнения.
Может ещё какие есть, не продумывал детально. Все эти столбцы обернуть методами взаимодействия между собой, для проверки выполнения, и так далее. Пиши, если будут вопросы.

Худший ответ:
В чем проблема добавить столбец "тип задания", где будет "купить", "продать", "разместить", "найти" и др.
Делал такое в игре еще 20 лет назад.
Вопрос: Какие каналы на ютубе есть по фотошопу, и иллюстратору толковые?

Лучший ответ:
Наши:Раз (Ps, Ai)Два (Ai)Три (Ps, Ai)Четыре (много гейм-диза, чаще Ps. Ai, Ae)
Не наш:Раз (Ps, Ai)

Худший ответ:
Официальные Photoshop tutorials | Illustrator tutorials
Вопрос: Как повесить несколько событий на onclick?

Лучший ответ:
Добрый день. Почему бы не объединить эти функции в одну? То есть у вас есть функция 
handleClick = () => {
         //do function 1
        // do function 2
    }

<span className="active" onclick={this.handleClick}>1</span>

Вот тут можете почитать, как обрабатываются события в react. Я просто не знаю, как у вас там в коде самом. Вы использует функциональные компоненты, или классы, в зависимости от этого, там синтаксис чуть-чуть будет меняться. Но суть останется прежней.

По мне лучше объединить их. Вот тут реализация

Худший ответ:
Если юзаете хуки, то есть функции, то так:

export default function MyComponent() {
   const handleClick = e => console.log(e.target.innerText);

   return (
      <button onClick={handleClick}/>
   )

}
Вопрос: Как отследить что в БД значение не менялось в течение 1 часа?

Лучший ответ:
Добавьте в таблицу дополнительное поле, которое будет хранить время отправки формы. Затем проверяйте, если разница между текущим временем и временем отправки формы больше 1 часа и при этом статус остался "В ожидании", тогда совершайте нужные действия.
Саму проверку можно поставить например на cron.

Худший ответ:
К ответу выше... Можно так же использовать куки и setTimeOut() на js, если пользователь не уходил со страницы..
Вопрос: Можно ли заключать в тег заголовка слово или фразу не являющуюся заголовком как таковым?

Лучший ответ:
 даже когда фраза не является заголовком для поискового робота
Вы имеете ввиду ключевую фразу ? 
На странице так же должна соблюдаться структура заголовков h1>h2>h3....
Теги заголовков не должны содержать в себе ничего, кроме текста. Не используйте в тегах ссылки, картинки и другой контент. 
h1 используем с наиболее большой частотой в кластере.
h1 должен быть на странице только один раз.

Худший ответ:
Аналогично Яндексу, картинка берётся из контента страницы автоматически, повлиять на это нельзя.
Вопрос: Дали объёмное тестовое задание. Делать?

Лучший ответ:
Свяжитесь
Попросите в емаиле разрешения разместить задачу и решение на вашем гитхабе 
Укажите ваши расчеты по времени выполнения задачи, укажите ваши ограничения на свободное время, согласуйте дедлайн
Нормальность/ненормальность определяется относительно ваших ожиданий по поводу компании
Вы не будете ожидать простого тестового от гугла
Вы будете ожидать приема на работу сразу от конторы в подвале

Худший ответ:
Напишите об этом работодателю новому, или увольтесь от старого
Вопрос: Почему все просто зависает и перегружается?

Лучший ответ:
a = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
a = list(a)
b = a
print(id(a) == id(b)) # True, a и b - один и тот же list
b = a[:]
print(id(a) == id(b)) # False, теперь разные
for i in a:
    b += [i.upper()]
print(b)

Худший ответ:
На хабре статейка есть https://habr.com/ru/post/458902/ она решит многие ваши проблемы
Вопрос: С чего начать стоит начать, чтобы уйти на фриланс?

Лучший ответ:
Мне вспоминается другой когда-то заданный тут вопрос - "О чём можно писать в блог?"
Вроде бы совершенно разные вопросы, но ответ на них абсолютно одинаковый: если у вас вообще возник такой вопрос, значит вам ещё рано.
Человек, которому действительно есть что предложить - сам знает что это. Ну или хотя бы выбрал близкую себе тему.
А если вы даже не можете самостоятельно выбрать интересное для себя направление - значит фриланс не для вас. Возможно, что только пока и в будущем всё изменится... Но пока нет. Пока велком ту офис.

Худший ответ:
Подскажите где взять инфу, и что начать изучать.
Открою секрет но инфа находится в том же интернете.
Вопрос: Где ошибка в этом коде?

Лучший ответ:
Упускаете то, что происходит в вашем коде, если key = 5
page(request, key)
Откуда там возьмуться значения a и b?

Худший ответ:
Смотрите на свой код:1. def page(request, key):
2.     if key == 1:
3.         a = 0
4.         b = 50
5.     data = table.objects.order_by("place")[a:b]
1 строка, объявили функцию
2 строк начали условие.
3 и 4 строка, выполняется только если условие верное, то есть если key равен 1. Если приходит любое значение key кроме 1, то в вашем коде НЕ создаются переменные a и b.
5 строка, вы пробуете использовать переменные которых не существует. Так как создаются они только при верном условии в строке 2.
То есть, чтобы код работал, вам надо инициализировать переменные или до условия или после, хоть с нулевым значением. К примеру так:def page(request, key):
    a = 0
    b = 10
    if key == 1:
        a = 0
        b = 50
    data = table.objects.order_by("place")[a:b]
или такdef page(request, key):
    if key == 1:
        a = 0
        b = 50
    else:
        a = 0
        b = 10
    data = table.objects.order_by("place")[a:b]
Программе не важно, что вы возможно планируете всегда передавать только 1, то есть у вас по планам условие будет выполнятся всегда, то есть в планах инициализация переменных произойдёт. Но вот программа этого не знает и она ругается.
Вопрос: Как делается backend на Java?

Лучший ответ:
Выбирайте PHP. Месяца не хватит даже на изучение материала.

Худший ответ:
Drupal вам в помощь
Вопрос: Как посчитать комиссию Яндекс-денег обратно?

Лучший ответ:
Форму на скрине

Худший ответ:
Если вопрос не только академический, а ещё и практический, то на бестчендж комиссии поменьше будут. Менял киви на ЯД и ещё и в плюсе остался, т.к. коэффициент обменный больше единицы. А если суммы небольшие, то можно в любом банкомате снять с карты(от Яндекса), если она есть. Сейчас 10к в месяц без комиссий.
Вопрос: Заработает ли видеокарта со старой материнской платой?

Лучший ответ:
10х0 не нуждаются в доп. питании и потребляют, по заявлениям нвидиа, 75-80 ватт. Заработает ли она на моей материнке? 
А что ей помешает то? Конечно заработает.

Худший ответ:
10х0 не нуждаются в доп. питании и потребляют, по заявлениям нвидиа, 75-80 ватт. Заработает ли она на моей материнке? 
А что ей помешает то? Конечно заработает.
Вопрос: Какой нужен диплом для работы в ИТ за рубежом?

Лучший ответ:
Любой технический диплом с высшим образованием будет достаточно.
Но важнее навыки и опыт + иностранный.
Новичку сейчас зарубеж пробиться в разы сложнее, чем 5 или 10 лет назад.

Худший ответ:
могут и при IT возникнуть

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

а вообще если в AU там и другие технические без проблем, но это о другом и AU на порядок сложнее Европы конечно
Вопрос: Существуют ли сайты, которые созданы в Elementor и от которых сносит крышу?

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

Худший ответ:
Не всем нужны сайты с красивой анимацией, эффектами и офигеть каким крутым дизайном. Сайт должен быть простым и удобным. А билдер Elementor как раз-таки и позволяет это сделать. 
К тому же не все хотят тратится на фрилансера каждый раз, когда нужно что-то изменить на сайте, поэтому многие просят сделать сайт на конструкторах типа wix и других, чтобы потом можно было самостоятельно менять эту самую информацию. Но не все хотят ограничиваться конструктором, и в случае чего расшириться или просто перенести сайт на другой хостинг. И для этого отлично подойдёт билдер Elementor и другие.
Вопрос: Предполагаю, что в отношении меня применяется СОРМ. Существует ли общий веб-интерфейс для доступа к данным СОРМ?

Лучший ответ:
По этому материалу https://meduza.io/feature/2019/08/08/maksimalnoe-k... данные из СОРМ-1, СОРМ-2 и СОРМ-3 периодически попадают в информационные системы типа ПСКОВ, Шерлок, Медиамонитор, которыми пользуются силовые органы разных мастей, крупные банки и коммерческие компании. Так что вам нужно найти человека в этих компаниях, который согласится провести поиск по вашим данным.

Худший ответ:
Пользуетесь телефоном - да СОРМ применяется.
Вопрос: Как стать системным администратором Linux?

Лучший ответ:
Устраивайся помощником системного администратора там где linux вовсю используется, через годик другой освоишь все что нужно.
Можно конечно поставить сервер у себя дома, придумать самому себе задачи, но это мне лично напоминает поведение кота, которому нечего делать.
Задачи должны быть вполне реальными. Тогда и обучение пойдет быстро.

Худший ответ:
Приветствую!
1 Поставить понравившийся дистр, например debian-based, например Parrot :) 
2 Прочитать  Д. Колесниченко "Linux. От новичка к профессионалу" или аналогичную, с обязательной и постоянной отработкой навыков
3 -- желательно -- Освоить метод слепого набора на клавиатуре
4 -- опционально -- получить сертификат LPI
5 Устроиться на пол-ставки (или как повезет) куда угодно для применения своих новых навыков. 
К Вашим услугам весь гугл. Материала полно. Успехов!
Вопрос: Возьмут ли школьника на удаленную работу?

Лучший ответ:
Есть только один способ это узнать. И вы его знаете.

Худший ответ:
Начал работать в 15, клиенты смущались ровно до того момента, пока я не показывал, что умею работать лучше чем 20-30 летние дядьки. Главное умейте продемонстрировать свои качества и скиллы. Но это про фриланс и без официального трудоустройства, не знаю как там с офисами и трудовым кодексом.
Вопрос: Где получить быстрые консультации от разработчиков?

Лучший ответ:
Есть деньги - не мудрите, наймите фрилансера на любой бирже.

Худший ответ:
Если готовы заплатить деньги - то вот например: https://www.codementor.io/
не уверен насколько там разработчики именно "кишат", но думаю что это не главное ваше требование
Вопрос: Node.JS не знающему программирования, реально?

Лучший ответ:
NodeJS не язык программирования, это платформа, на которую пишут на языке программирования JavaScript. Учите JavaScript 
Прочитайте как минимум первую часть учебника learn.javascript.ru решайте все данные задачи. После прочтения в голове уже отложится, что да как, и приходите сюда с конкретным вопросом, а лучше просто в гугле или тут в поиске.

Худший ответ:
NodeJS это виртуальная машина для JavaScript. В любом случае нужно учить JS.
Вопрос: Как настроить использование 2 IP на VPS?

Лучший ответ:
В прямом смысле то что вы хотите невозможно сделать т.к. таблица роутов глобальная но есть выход как это можно немного налюбить и придется делать следующее:
1) В iptables есть ключи –uid-owner –gid-owner –pid-owner. Через них ловите и маркируете трафик, соответсвенно каждый ключ ловит по своему типу, первый по uid пользователя, вторая по guid группы пользователей и третья по pid процесса но с 3ей не все так просто т.к. придется гдето скриптом мониторить нужный процесс и хватать пид.
2) Дальше согласно маркировки пакетов суете в нужный интерфейс.
Работать будет но получите сексуальных отношений на пару дней если не недель т.к. фактически вам придется дублировать все правила в большом количестве.

Худший ответ:
У вас похоже OpenVZ. Попросите хостера или посмотрите в панеле управления смену основного IP. При добавлении IP первый будет приоритетным.
Вопрос: Как реализовать таймаут в urlopen в 3 python?

Лучший ответ:
таймаут - это таймаут подключения и к паузе до загрузки не имеет никакого отношения.

Худший ответ:
import time
time.sleep(10)   # ждать 10 сек
urlopen(...)
Вопрос: Самые полезные книги для начинающих программистов?

Лучший ответ:
Школьный учебник по информатике.

Худший ответ:
Гугли "Code games for kids", там где надо роботом двигать вставляя команды "прямо, налево, направо, если впереди стена то - назад". Вот это и есть самые азы программирования.
https://code.game/home
Вопрос: Как отобразить все «места» в радиусе 50км от дороги с точки А в точку Б?

Лучший ответ:
1. Берёте свои точки и вносите их в пространственную БД, строите индекс по геометрии. Все основные СУБД имеют такие расширения.
2. Получаете от гугла маршрут и передаете его себе на сервер.
3. Там строите буфер вокруг него и получаете свои искомые точки, отдаёте их клиенту.
4. Профит.

Худший ответ:
Берешь дорогу, закидываешь сюда https://turfjs.org/docs/#buffer и потом в обратное геодкодирование(ты координаты, тебе адреса придут с тем что там), но надо смотреть ограничения какие есть у гугла на это, думаю из этого ничего хорошего не выйдет. Думаю единственный нормальный вариант, это брать бд osm, загружать к себе локально, и затем через постгис смотреть что входят в данный полигон.
Вопрос: Насколько хорошо нужно тестировать фичи, которые ты делаешь?

Лучший ответ:
Делается задача, составляются стандартные вопросы, что ты сделал, где это должно работать, как это должно работать, и что это могло сломать? Пробегаешься по этим пунктам, если все ок, отправляешь на тестирование. Обычно это занимает минут 10-20, за кружкой кофе. 
Ну, по крайней мере не надо допускать такого, что дали задачу, написал код и даже не проверил. Основное правило - проверь что сделал.
Тут еще возникает вопрос: а какого фига тестировщики так долго тестируют? Либо программисты слишком быстро делают, либо тестировщики долгие.

Худший ответ:
На то оно и фичи, чтоб быть необычными, а следствие надо тестировать чтоб подогнать там, где юзеры его будут пользовать
Вопрос: Нужна помощь с awk — напишите регулярку для парсинга файла?

Лучший ответ:
Может sed всё-таки?sed ./screen.log -nre 's/.*([0-9]{2}[:][0-9]{2}).*(Hermelin Nerz) to.*:(.*)/\1 \2:\3/p'
На выходе будет:19:33 Hermelin Nerz: О.о
19:33 Hermelin Nerz: Что такое
19:33 Hermelin Nerz: Всё ещё не вышло?
для всех:sed ./screen.log -nre 's/.*([0-9]{2}[:][0-9]{2}).* (.+ .+) to.*:(.*)/\1 \2:\3/p'
На выходе:19:33 Клейно Ярослав: чтото происходит
19:33 Клейно Ярослав: пиши мне пиши))
19:33 Hermelin Nerz: О.о
19:33 Hermelin Nerz: Что такое
19:33 Клейно Ярослав: спасибо
19:33 Клейно Ярослав: я тестирую
19:33 Hermelin Nerz: Всё ещё не вышло?

Худший ответ:
Так awk прекрасно вставляет пробелы между полями при помощи " " (пробел между кавычками), зачем еще и sed подключать?
Выглядеть строка будет так:
awk '{print $4, $8, $14 " " $15 " " $16 " " $17 " " $18}'
Почитайте эту статью.