14 апр. 2016 г.

Сеть с надёжной доставкой сообщений

Добрый день!

— А как узнать, что телеграмма дошла?
— Ну так вы туда позвоните и спросите!

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

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

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

Но вернёмся к надёжной доставке хотя бы сообщений. Многие уже привыкли, что электронная почта — это не самое надёжное средство. Совершенно неожиданно письмо может автоматически отфильтроваться, причём ни отправитель, ни получатель ничего об этом не узнают. Отсюда идиотская привычка звонить, отправив важное сообщение. Почему фильтры такие злые? Потому что рассылается много спама и вирусов. Из-за этого у многих людей годами количество непрочитанных сообщений записывается четырёхзначным числом, а реагируют они только на те сообщения, которые случайно были отправлены за несколько минут до того, как они заглянули в свой ящик (в этом случае ваше важное письмо не успело вытесниться конкурирующими из поля зрения).

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

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

«Я не могу проигнорировать ваше письмо, потому что сейчас в отпуске (в противном случае вы бы не получили никакого ответа). Подождите, пожалуйста, пару недель, тогда ваше письмо будет проигнорировано мною лично.»

Но с другой стороны, технические моменты тоже накладывают свой отпечаток. Помню, мне надо было отправить письмо со вложением самому себе, а коварный Gmail упорно отказывался его доставлять. Причина была в том, что в одном из zip-файлов был .js файл. Я-то сумел это победить (то ли rarjpeg-ом, то ли заменил первый байт zip-архива, чтобы Gmail не догадался внутрь моих файлов заглядывать), но при этом остро прочувствовал, что другому человеку по телефону не смог бы объяснить, как переслать мне те файлы.

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

Хорошего завершения недели!

15 мар. 2016 г.

Pascal или C для школьников?

Добрый день!

Буквально месяц назад мы отметили 60 лет ENIAC, первого электронного цифрового вычислителя общего назначения, а за три месяца до этого праздновали 200 лет со дня рождения Ады Лавлейс, первого программиста человечества. Поэтому сейчас самый подходящий момент, чтобы подумать об обучении программированию.

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

Но есть и отличия. Давайте попробуем их вспомнить.

Итак, плюсы и минусы языков Си и Паскаль:
- В Си есть qsort (наличие развитой сортировки, которой можно подсунуть свою функцию сравнения, сразу сокращает и упрощает код),
- В Паскале есть строки (пусть их длина ограничена 255 символами, но начать с ними работать гораздо проще, а возможностей для ошибок — меньше),
- В Си краткий синтаксис (многих в Паскале раздражало постоянное написание "begin"/"end", а в Си мы пишем "{"/"}"),
- В Паскале LL(1) грамматика (глядя на начало строки, мы это начало сразу понимаем, в то время как в Си, например, с "int " может начинаться что угодно: хоть переменная, хоть указатель на переменную, хоть функция),
- Есть много популярных языков с Си-подобным синтаксисом (C++/C#/Java/...), поэтому поучиться Си стоит,
- В Паскале легко выводить значения разных типов (сравните "write(a, ', ', b);" с "printf("%d, %f", a, b);" — во втором случае пришлось вспоминать, какого типа наши переменные a и b.

Долгое время Pascal считался хорошим языком для обучения. Кстати, отсутствие qsort сразу же приводило к необходимости реализовать сортировку, что не было вредно. Но сейчас на Паскале почти не пишут, поэтому причин учить этому языку школьников практически нет. Насколько я понимаю, главная причина — в ЕГЭ по программированию есть вопросы по Паскалю. Но такое заталкивание языка в детей явно не добавляет им мотивации.

А какие положительные и отрицательные моменты Паскаля и Си вы помните? Можно учить оба, помня, что это почти одно и то же? Или только Си? Готовиться ли к ЕГЭ?

Хорошей недели!

Ссылки по теме:
- Три программы,
- Программисты-олимпиадники,
- Слишком универсально.

30 дек. 2015 г.

Больше ошибок хороших и разных!

Добрый день!

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

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

Про то, что ранее я бы «ляпнул», а потом долго жалел, теперь я успеваю подумать «тут бы лучше промолчать». Всё равно говорю, к сожалению, но уже успеваю хотя бы усомниться. Глядишь, когда-то научусь молчать больше, а делать лишнее — меньше.

Год был сложный и интересный. Удалось начать большие и правильные дела, которые я бы охарактеризовал так: в следующие годы было бы уже поздно начинать. Есть субъективное ощущение, что путёвых школьников и студентов стало больше (во всяком случае, не меньше). Времени стало меньше, но пока есть куда отступать (скажем, количество волейбольных тренировок удалось даже нарастить). Интересные предложения поступают постоянно, поэтому всё чаще приходится выбирать и отказываться. А ведь ещё каких-то десять лет назад я участвовал во всём, потому что «всего» было мало, а времени хватало.

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

Желаю вам хорошо встретить Новый год в тёплой компании, увидеться или хотя бы как следуют созвониться со всеми родными.
Ошибки неизбежны, но пусть они будут исправимыми или некритичными!
Здоровья и сил вам и вашим близким!
Хорошего года!

11 дек. 2015 г.

Ускорение как на Youtube

Добрый день!

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

Кстати, это интересно с алгоритмической точки зрения, поэтому для желающих вникнуть в то, как что-то подобное делают, рекомендую пару статей Хабра:
- Делаем Liquid Resize своими руками,
- Алгоритм seam carving для изменения размера изображения.

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

Что же я ищу? Я хочу себе аппаратный плеер, который умеет это же. Потому что скопилось уже несколько десятков mp3-шек с длинными разговорами, которые хочется выслушать, но некогда. Ладно, время найти можно, а вот терпение?! Если бы можно было покрутить на плеере волшебную ручку «ускорять в x раз», то было бы гораздо лучше. Но почему-то ничего про такие устройства я не нашёл. Может, эта функциональность как-то неожиданно называется, а я не то ищу? (с предиктивным набором примерно так было год назад)

На самом деле, мечта даже чуть больше: хочется не линейного ускорения (как на Youtube, насколько я могу судить), а динамическую подстройку под плотность информации (резкое ускорение при тишине и т.д.). Другими словами, кроме волшебной ручки регуляции скорости хочется ещё и волшебную кнопку «пропускать длинные паузы и замедляться при быстрой речи». Или это из области фантастики пока?

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

А для тех, кто хочет улыбнуться, есть добрая ссылка навстречу Новому году.

Хороших выходных!

25 нояб. 2015 г.

Динамит

Добрый день.

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

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

Динамит сыграл важную роль в горном деле и спас многие жизни. Иногда изобретателей опасной технологии обвиняют во всех её жертвах (а динамит, конечно, иногда использовали и для уничтожения людей). С другой стороны, убийцы в любом случае найдут себе средства, не считаясь с возможными рисками, равно как и мирные промышленники найдут исполнителей самых опасных задач. Поэтому вывод этих самых исполнителей из-под риска пострадать от нитроглицерина — задача вполне благородная.

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

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

А у вас такое чувство бывает?

Хорошей недели!

11 авг. 2015 г.

С заботой о детях: упр-р-рощаем имена

Добрый день!

А вы замечали, что уменьшительные имена не просто короче, но ещё и проще произносятся? Это, конечно, ожидаемо, но когда ребёнок как раз учится выговаривать букву «р», то это особенно бросается в уши. Вот список имён, на которых это хорошо видно:

Александр(а) — Саша,
Артем — Тёма,
Виктор — Витя,
Виктория — Вика,
Владимир — Вова,
Георгий — Гоша,
Глафира — Глаша,
Дарья — Даша,
Дмитрий — Дима,
Екатерина — Катя,
Мария — Маша,
Фёдор — Федя,
Ярослав — Слава
и так далее.

Конечно, есть и масса исключений: Андрей, Ирина, Кристина, Роман... Есть и «частичный успех» (убрана лишь одна непростая буква «р»): Варвара — Варя. Едва ли люди думали, что «надо выбрать такое уменьшительное имя, чтобы ребёнок мог ответить, как его зовут», но для очень многих имён этот принцип вполне выполнен. Замечали? А выбирая имена детям, задумывались о том, кому потом придётся ломать язык?

В английском языке наблюдается схожий эффект:
Alfred — Alf,
Andrew, Andrea — Andy,
Clifford — Cliff,
Dorothy — Dottie,
Edward — Ed,
Eleanor — Ellie,
Geoffrey — Geoff,
Leonard — Leo,
Margaret — Maggie (кстати, до такой степени наши Маргариты обычно не сокращаются),
Patricia, Patrick — Pat,
Peter — Pete,
Sandra — Sally или Sandy,
Victor — Vic.

Есть среди английских имён и аналог нашей Варвары: Gregory — Greg (тоже освобождается лишь от одной из двух букв «r»).

Кстати, об английском языке: какие вы знаете и можете порекомендовать аналоги Мизяки Дизяки на английском? Этот формат хорош, но хочется ещё вокруг поискать разнообразия дополнительного. Или, может, поделитесь, какими ещё дома интересными делами расширяли ребёнку представления об английском языке?

Хорошего дня!

19 июн. 2015 г.

Зачем писать PIN-код на пластиковой карте?

Добрый день,

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

Но я могу объяснить, почему писать четыре цифры кода на карте имеет смысл. Есть как минимум две причины:

1) Никто из нас не может быть абсолютно уверен, что у него не утащат кошелёк с картой. Поэтому лучше подстраховаться. Но есть один нюанс: код на карте должен быть неправильным. Почему? Злоумышленник, «добыв» карту, тут же направится в банкомат, где попытается снять деньги (понимая, что чем дольше он будет думать, тем больше шансов, что владелец заблокирует карту). Видя код на карте, он уверенно вводит его первый раз (и видит сообщение об ошибке), вводит его второй раз (думает, что опять ошибся), а потом может ввести и третий раз (тогда банкомат заблокирует карту). Людей, рискующих свой свободой, снимая деньги с чужих карт, сложно обвинить в избытке ума, поэтому такой сценарий вполне возможен. Чтобы увеличить вероятность такого расклада, лучше наносить цифры не очень хорошим почерком (чтобы не было очевидно, единица это или семёрка, например).

2) Но это не единственная причина написать коды на обратных сторонах своих пластиковых карт, так как есть ещё одна задача — затруднить считывание CVV-кода (трёх цифр, которые нужны для покупок в интернете). Смотрите, как это может выглядеть:

Зачем писать PIN-код на пластиковой карте?

Теперь у вас на карте написан неправильный код (чтобы злоумышленник самостоятельно заблокировал вашу карту, добравшись до банкомата), а CVV-код прочитать с неё значительно труднее (поэтому случайный официант или кассир уже не сможет так легко совершить покупку в интернете, потратив средства с вашей карты). Единственная проблема – знакомые, увидев вашу карту, могут покрутить пальцем у виска (мол, нельзя наносить PIN-код на пластик). Но это будет означать сразу две вещи:
- вы повернули карту обратной стороной вверх (это лучше не делать, т.к. фотоаппараты охотников за полными данными карт + CVV-кодами могут быть не только в окрестностях касс),
- это повод рассказать им, почему вы так сделали (тем самым поможете им повысить безопасность своих денег).

Нет, я не сторонник использования сейфов вместо мыльниц, не использую «bk43jkVrg7sdHftg^*%814hf5rJws» в качестве логинов на сайтах, не надеваю шапочку из фольги и т.д. Понятно, что кражи денег с карт – это довольно редкие ситуации (и вред от неё легко снизить, не храня там заметные суммы). Но если можно маленьким движением уменьшить вероятность сразу двух неприятных сценариев, то лучше это сделать, я думаю. Написать неправильный код на карте – это одна минута. Добиться, чтобы банк вернул украденные деньги – это месяцы и нервы.

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

Хороших и безопасных выходных!

Понравилась заметка? Подпишитесь на RSS-feed или email-рассылку.

Хотите поделиться ссылкой с другими? Добавьте в закладки:



Есть вопросы или предложения? Пишите письма на адрес mytribune АТ yandex.ru.

С уважением,
      Илья Весенний