netwizard

пикабушник
пол: мужской
поставил 410 плюсов и 5 минусов
отредактировал 2 поста
проголосовал за 3 редактирования
13К рейтинг 581 подписчик 1148 комментариев 15 постов 12 в "горячем"
-4

Почему задача о самолете на транспортере (взлетит/не взлетит) вызвала так много споров?

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

Напомню условие:

"Самолёт (реактивный или винтовой) стоит на взлётной полосе с подвижным покрытием (типа транспортёра). Покрытие может двигаться против направления взлета самолёта. Оно имеет систему управления, которая отслеживает и подстраивает скорость движения полотна таким образом, чтобы скорость вращения колёс самолёта была равна скорости движения полотна. Вопрос: сможет ли самолёт взлететь в таких условиях?"


Итак, почему же так много споров? Представим, что дана задачка "Камень сбросили с отвесной скалы высотой 100 метров. Через какое время он достигнет ее подножья?". А теперь начнем вычислять шероховатость камня, плотность воздуха по барометрической формуле, сопротивление воздуха, поправку на вращение Земли и т.д. Чувствуете, как задача обрастает шелухой? А ведь надо просто нарисовать точку, направить вниз вектор скорости и применить простую формулу из школьной физики.


Точно так же обрастает шелухой задача про самолет. Например, двое спорят о том, что на больших скоростях колеса самолета износятся, их заклинит, и самолет не взлетит. Или обсуждают зависимость силы трения качения от скорости. Чувствуете, как нарастает шелуха? Обсуждается суть задачи А плюс дополнительное условие Б и В. Тут нужно поступить так: отбросить Б и В и оставить голый скелет задачи. (А)+Б+В. Упростить задачу до такой степени, чтобы оппонент был вынужден согласиться с вами. Приведу пример:


"Самолет с идеальными (трение качения = 0) невесомыми колесами стоит на бесконечном плоском транспортере. Трение вообще ноль, то есть как бы быстро ни двигался транспортер, сдвинуть самолет он не сможет. Соответственно, если самолету задать некую начальную скорость 5 м/с, он так и будет бесконечно катиться с этой скоростью. Образование потока воздуха от движения ленты не учитываем. Теперь, даже если на самолет поставить крошечный двигатель, тяга которого несколько миллиньютонов, он рано или поздно разгонит самолет до желаемой скорости. Двигатель работает по принципу выбрасывания продуктов сгорания. Скорость ленты никак не влияет на развиваемую им тягу."


Думаю, с такой голой формулировкой согласится каждый.

И уже после этого, решив упрощенную версию задачи, начните добавлять дополнительные сложности Б, В и Г.


Если вы принадлежите к лагерю "Не взлетит", вы тоже можете отбросить ненужные, на ваш взгляд, элементы. У вас может получиться что-то типа "Самолет с сильно заржавевшими колесами и очень слабым двигателем...".

И я буду вынужден согласиться, что да, не взлетит. (А)

А потом можно будет попробовать добавить, например, (Б) - двигатель очень сильный, и посмотреть, что из этого получится.


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

Задача, наконец-таки, становится решаемой.

Показать полностью
21

Don't worry

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

Правильно, "worry", подумал он. Вот и повесил бумажную табличку "Don't worry".


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

В общем, когда я зашел на кухню, на духовке висело "Don't worry be happy".


Всем хорошего дня!

Don't worry Негр, Общежитие, Английский язык, Юмор
1255

Автоматизация рутины с AutoHotKey

Здравствуйте! Сегодня я хочу познакомить вас с замечательным инструментом автоматизации под названием AutoHotKey!

С ним вы сможете:

1) Программировать действия мышкой, нажатия клавиш;

2) Быстро заполнять однотипные бланки, формы;

3) Ставить на горячие клавиши заклинания, кастовать их в течение миллисекунд после перезарядки (что бывает критично);

4) Автоматизировать какие-либо рутинные действия и идти пить кофе.


Сразу предупрежу - писать скрипты поначалу очень капризное занятие. Будут такие ситуации, что код почему-то не работает, и вам придется думать полдня где вы совершили ошибку. Листать документацию. Просить помощи в интернете. Проверять синтаксис.

Однако вложенное время окупается с лихвой. При достаточном освоении AutoHotKey сэкономит вам кучу времени и нервов.


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


Итак, начнем. Ссылка на программу:

https://autohotkey.com/download/ahk-install.exe (3 Мб)


Написание кода ведется в файлах *.ahk, которые редактируются обычным блокнотом.

Создайте текстовый файл и измените его расширение.

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

Затем откройте его с помощью блокнота. Теперь вы готовы к работе!

Перейдем к практике.

Напишите


F1:: Send Здравствуйте{!}


Сохраните изменения. Запустите скрипт двойным кликом. Встаньте на какое-нибудь текстовое поле и нажмите F1. Первый опыт скриптинга у вас уже есть.

!, #, ^, +  это служебные знаки. Для того, чтобы напечатать их, нужно оформить их скобками.

Для выключения скрипта нажмите на его иконке возле часов, затем Exit.


Краткое введение закончено, дальше пойдут лишь небольшие советы.


1) Добавьте к скрипту

F12:: Suspend, Toggle

, чтобы ставить/снимать его с паузы клавишей F12


2) Чтобы горячая клавиша не блокировалась скриптом и выполняла также свою обычную функцию, пишите ~.

~F3:: Send {Down}


3)

1::

Send {Tab 5}привет{Enter}  ;пять раз таб, привет, энтер

Click 100, 100  ;клик по заданным координатам, отсчитывается слева-сверху

Click, 2  ;клик два раза

Click right  ;клик правой кнопкой

Send {Down}{Left}{Up}

Send {PgUp}{PgDn}

Send {Space}{Del}

Send {b down}

Sleep, 1000  ;зажать b, ждать 1 секунду, отпустить

Send {b up}  

Return  ;конец списка команд, вызываемых кнопкой "1"


Полный список клавиш смотрите в документации. Пуск -> AutoHotKey -> AutoHotKey HelpFile -> Mouse and Keyboard -> Send


4)

^F1::  ;при нажатии на Ctrl+F1

MouseGetPos, X, Y  ;выдаст текущие координаты курсора

MsgBox, %X%, %Y%

Clipboard = %X%, %Y%  ;и скопирует их в буфер обмена

Return


Обратите внимание - по умолчанию координаты отсчитываются от левого верхнего угла активного окна.

Можно заставить скрипт отсчитывать координаты от левого верхнего угла экрана, предварительно прописав:


CoordMode, Mouse, Screen


Вернуться обратно:


CoordMode, Mouse, Window


5) Модификаторы: "^" = Ctrl, "+" = Shift, "!" = Alt.

Send !{Tab}  ;Alt+Tab

Send +{Home}

Send ^{vk56}  ;Ctrl+V


Почему именно {vk56}, а не {v}? Потому что ^{v} будет работать только при английской раскладке, при русской пришлось бы написать ^{м}.

Однако без всего это можно обойтись, обратившись к клавише через ее виртуальный код.


Список наиболее часто используемых виртуальных кодов:


Send ^{vk43} ;Ctrl+C

Send ^{vk56} ;ctrl+V

Send ^{vk58} ;ctrl+X

Send ^{vk41} ;ctrl+A

Send ^{vk5A} ;ctrl+Z

Send ^{vk53} ;ctrl+S

Send ^{vk51} ;ctrl+Q

Send ^{vk57} ;ctrl+W

Send ^{vk52} ;ctrl+R

Send ^{vk42} ;ctrl+B

Send ^{vk4E} ;ctrl+N

Send ^{vk4C} ;ctrl+L


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


vk56::Send {Click}  ;посылает клик при нажатии на "м" или "v".


Полный список виртуальных кодов клавиш: http://www.kbdedit.com/manual/low_level_vk_list.html


6) Быстро разворачиваем фотографии правильной стороной.

В стандартной утилите просмотра фотографий Windows есть опция "Развернуть картинку"

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

NumPad1:: Send ^{,}

NumPad2:: Send ^{.}


Обратите внимание, что эти клавиши работают только при английской раскладке.

Английские точка с запятой расположены справа от клавиши "m" и являются отдельными клавишами. Русская точка и запятая находятся слева от шифта и объединены в одну клавишу.

И еще: чтобы нажать Numpad1 и 2, должна гореть лампочка NumLock.


7)

~1::

Loop,

{

If A_Cursor=Unknown

Click

Sleep, 20

If GetKeyState("2","p")=1

Break

}

F12::Suspend, Toggle


При нажатии кнопку 1 скрипт будет посылать клики, если заметит, что курсор принял форму руки. Нажатие кнопки 2 (и непродолжительное ее удерживание) разрывает цикл.

Осторожно, если вы наведете мышь на ссылки браузера при активном цикле, он вам их откроет!


Таким образом я автоматизировал прохождение флеш игры Deanimator.

Достаточно навести мышкой на зомби, и профессор сам стреляет, да еще и со скоростью пулемета!

http://www.de-animator.com/deanimator.swf

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

8)

1::

MouseGetPos, xpos, ypos

MouseClick, left, 130, 70, , 0 ; [WhichButton , X, Y, ClickCount, Speed, D|U, R]

MouseMove, xpos, ypos, 0

Return


Скрипт кликает карточку горохострела вверху экрана и вовзвращает курсор на место.

Цифры 0 в обоих операторах отвечают за скорость перемещения курсора, то есть мгновенно.

Можно закрепить за клавишей 1 горохострел, за 2 - подсолнух и т.д., и быстро без напряга сажать растения.

(координаты 130, 70 вам, скорее всего, придется поменять. Воспользуйтесь пунктом 4)

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

9) Допустим, вам нужно поставить звездочку или другой символ в конце каждой строки.

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

NumPad1::

Send {*}{Up}{End}

Return


Ставим звездочку, переходим вверх, идем в конец строки. Готово!

Если нужно удалить символ в конце каждой строки, пишем:


NumPad1::

Send {Backspace}{Up}{End}

Return


Если нужно удалить два символа:


NumPad1::

Send {Backspace 2}{Up}{End}

Return


10) Нужно щелкать мышью как можно чаще? Не проблема!

Автоматизация рутины с AutoHotKey Autohotkey, Автоматизация, Программирование, Офисные будни, Образование, Длиннопост

~1::

While GetKeyState("1","p")=1

{

Click

Sleep 20

}

Return


Данный скрипт посылает клики каждые 20 мс при нажатой клавише "1".

Или можно так. Посылаем клики до тех пор, пока не будет нажата клавиша "2".


1::

While GetKeyState("2","p")=0

{

Click

Sleep 20

}

Return



Ладно, на этом пока все. Будут вопросы - обращайтесь!

Можно даже сделать так: пишите какие типичные рутинные операции нужно разобрать, и они появятся в следующем посте!


P.S.

/*

Многострочный комментарий.

Для выключения участков кода

*/

Показать полностью 5
265

Принцип работы паровой турбины

Отвечаю на комментарий http://pikabu.ru/story/tolerantnost_4414188#comment_70961298

Принцип работы паровой турбины Наука, Термодинамика, Технарь, Адольф Гитлер, Длиннопост

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


Отвечаю.

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

Для этого нужен посредник. Газ. Называемый также рабочим телом.


Простейший способ обустроить процесс - поместить газ в цилиндр с поршнем. Нагреваешь котлом газ, котел отдает ему тепло Q1, которое преобразуется во внутреннюю энергию газа U. Затем он расширяется, толкает поршень, то есть совершает работу А. Внутренняя энергия газа при этом понижается.


Что же дальше? Чтобы начался следующий цикл, нужно вернуть поршень на место. Но ведь сделать это не так просто! Подумай - газ нагрелся так, что его давление стало 20 атмосфер, затем толкнул поршень и охладился. Значит, когда мы затолкнем поршень обратно, температура вновь подскочит до 1000°С (газы при сжатии нагреваются) и давление снова станет равным 20 атмосферам! Чтобы преодолеть такое давление, нужно затратить работу А, и весь наш выигрыш в работе в итоге станет равным нулю.

Принцип работы паровой турбины Наука, Термодинамика, Технарь, Адольф Гитлер, Длиннопост

Хорошо, что мы свободно можем играться с температурой!

Достаточно дать газу остыть, то есть подождать, пока он отдаст окружающему воздуху (холодильнику) тепло Q2.


Делается это так - немного сжимаем поршень, температура и давление подскакивают, дальше толкать поршень становится уже трудно (увеличилось давление). Ждем, пока газ остынет, с уменьшением температуры уменьшится и давление. Теперь поршень снова можно толкать. Толкаем поршень, ждем, пока упадут температура и давление. И так пока не придем к начальному состоянию.


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


Какой вывод мы сделали в итоге? Если бы не было окружающего воздуха, которому газ по мере сжатия мог бы отдавать лишнее тепло, нам бы пришлось изрядно попотеть, сжимая поршень до 20 атмосфер.


Вот почему так важно охлаждение.


----------------------------------------------------


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

Принцип работы паровой турбины Наука, Термодинамика, Технарь, Адольф Гитлер, Длиннопост

Пояснение к рисунку выше:

1) Пружинка комнатной температуры. Просто пружинка.

2) Теперь нагреваем пружинку. Она становится напряженной, но выпрямиться ей мешает недостаток места и такие же напряженные пружинки по соседству.

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


А вот схема процесса.

Принцип работы паровой турбины Наука, Термодинамика, Технарь, Адольф Гитлер, Длиннопост

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

Надеюсь, теперь понятно, зачем нужно охлаждать отработанный газ?

Принцип работы паровой турбины Наука, Термодинамика, Технарь, Адольф Гитлер, Длиннопост

P.S. От вращения праха Гитлера толку будет мало. Сыпучий объект. Крутиться должен труп.

Показать полностью 4
254

Текстовый квест "Икебана" в Космических Рейнджерах

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


Напомню, его суть такова: на столе лежат цветки пяти разных цветов, количество цветков каждого цвета не может превышать три. Начальное количество цветков определяется случайным образом. Право ходить первым вы оставляете себе, либо же отдаете его сопернику. Игроки по очереди добавляют цветки какого-то одного цвета, от 1 до 3 штук. Победившим считается тот, чей ход завершит "гармонию Икебаны", то есть доведет ее до состояния 3-3-3-3-3.

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

Тут я задался вопросом: существует ли какая-то беспроигрышная стратегия?

Немного погуглив, я нашел этот совет.

Квест этот весьма сложен и непредсказуем, так что дам только основную стратегию, с которой можно выиграть в большей части случаев. Нужно делать первый ход и этим ходом добиваться, чтобы на поле осталось четное количество чётных чисел. Приведу пример: имеется следующая икебана: красный - 1, жёлтый - 2, зелёный -1, синий - 2, фиолетовый - 0. Чётных чисел здесь 3 - от жёлтого (2), синего (2) и фиолетового (0) цветов. Нужно добавить либо красный, либо зелёный цвет до двух. Далее необходимо повторять действия соперника, то есть если он увеличивает число цветков с 2 до 3, то надо у другого цвета сделать то же самое.

Неплохо, подумал я, но, увы, эта тактика не всегда ведет к победе.

Тогда, поразмыслив, я сделал следующие простейшие наблюдения.


Я побеждаю, если нет {0,1}, а число двоек нечетно. 22222, 22233 - моя победа.

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

Я побеждаю, если единица всего одна и нет нулей. Тогда я смогу оставить компьютеру четное число двоек. 12222 - моя победа.


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


Однако не все так плохо! Сделаем подробный анализ игры. Каждый цвет может принимать значения от 0 до 3. Потратив полчаса в Excel'е, можно с уверенностью сказать, что количество всех возможных комбинаций составляет 55 (за вычетом дубликатов и комбинации 33333).


Неплохо! Едем дальше. Выпишем все возможные состояния на диаграмму и упорядочим их по сумме всех цифр (макс. 14).

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

Теперь начнем окрашивать в зеленый те комбинации, которые однозначно принесут нам победу, а в синий - те, которые однозначно принесут компьютеру поражение!

23333 - зеленый

22333 - синий

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

Окрасим в зеленый те блоки, которыми можно загнать компьютера на синие.

Например, из 02333 можно получить 22333. И компьютер терпит поражение.


Окрасим в синий те блоки, из которых НИКАК нельзя прийти в другие синие блоки.

Из них можно получить только зеленые блоки, которые ведут к нашей победе =)

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

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

P.S. Получить быстрый доступ ко всем квестам можно, нажав в главном меню q.

P.S.S. Сделано на сайте draw.io

Текстовый квест "Икебана" в Космических Рейнджерах Космические рейнджеры, Прохождение, Икебана, Математика, Длиннопост

UPD Математическое обоснование #comment_136426712

Показать полностью 4

Мы ищем frontend-разработчика

Мы ищем frontend-разработчика

Привет!)


"Шо? опять?"

Задач так много, что мы не успеваем! И вот нам снова нужны frontend-разработчики!

Как уже стало традицией, мы предлагаем небольшую игру, где вам необходимо при помощи знаний JS, CSS и HTML пройти ряд испытаний!


Зачем всё это?

Каждый день на Пикабу заходит 2,5 млн человек, появляется около 2500 постов и 95 000 комментариев. Наша цель – делать самое уютное и удобное сообщество. Мы хотим регулярно радовать пользователей новыми функциями, не задерживать обещанные обновления и вовремя отлавливать баги.


Что надо делать?

Например, реализовывать новые фичи (как эти) и улучшать инструменты для работы внутри Пикабу. Не бояться рутины и удаленной командной работы (по чатам!).


Вам необходимо знать современные JS, CSS и HTML, уметь писать быстрый и безопасный код ;) Хотя бы немножко знать о Less, Sass, webpack, gulp, npm, Web APIs, jsDoc, git и др.


Какие у вас условия?

Рыночное вознаграждение по результатам тестового и собеседования, официальное оформление, полный рабочий день, но гибкий график. Если вас не пугает удаленная работа и ваш часовой пояс отличается от московского не больше, чем на 3 часа, тогда вы тоже можете присоединиться к нам!


Ну как, интересно? Тогда пробуйте ваши силы по ссылке :)

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

Удачи вам! ;)

Показать полностью
Отличная работа, все прочитано!