Новости информационных технологий - 25722

Управление лифтами: решение на языке HaskellТрадиционный конкурс по функциональному программированию состоялся в июле. Судя по количеству участников, большинство апологетов программирования на этот раз убыли на отдых, либо не стали участвовать в конкурсе, экономя силы и готовясь к ICFPC, который в этом году состоялся через неделю после моего мероприятия. Тем не менее, в конкурсе на этот раз приняли участие девять человек, из которых семеро дали в той или иной степени правильные ответы. Распределение по языкам программирования: Haskell — 4 решения, из которых 2 некорректные; C++, Clean, F#, Java и Perl — по одному решению.

Задача на этот раз была из области автоматического управления. Конечно, она всё также сводилась к поиску на графе, для чего всяко можно использовать алгоритм A*. Тем не менее, большинство участников выбрали реализацию ad hoc, в том числе и победитель. Вот примерное условие:

На улице генерала Белова стоит четырнадцатиэтажный дом.

На первом этаже живет Митя. На втором — Петя, Тёма и Саша. На третьем — Витя, а на четвёртом — Маша и Паша. Кто живёт выше — никто не знает.

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

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

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

Читать полностью »

Поздравляю всех с пятницей и в качестве небольшого развлечения предлагаю представить, как бы выглядел популярный CSS-фреймворк Twitter Bootstrap, если бы он был от Google? Встречайте Plusstrap.

Что если бы Google выпустил свой Bootstrap?
Читать полностью »

В свое время озадачился вопросом — как защитить страницы сайта от повторной отправки данных формы во время обновления страницы (если перед этим была отправка, естественно).
Каждый веб-мастер и разработчик наверное знает, что если на сайте вы нажали кнопку «отправить», заполнив какую-либо форму, то после отправки, если попытаться обновить страницу браузер выдаст сообщение с подтверждением повторной отправки.
В некоторых моментах это бывает недопустимо. Например, в случае элементарной формы обратной связи. Когда пользователь заполнил форму и отправил сообщение, а потом по какой-то ему одному известной причине обновил страницу, письмо ушло снова. Это может, конечно, и не такой фатальный случай, просто как пример. Все гораздо болезненнее, например, при отправке заказа в интернет-магазине.
Так вот задался вопросом поиска решения этой проблемы и понял, что решение только одно: использование перенаправления после отправки формы header (‘location: адрес’). Т.е. все просто – после отправки вызываем перенаправление (можно даже на ту же страницу) и все! Обновление страницы будет чистым, без всяких заполненных POST-ов и GET-ов.
Читать полностью »

При установке редактора TinyMCE (на момент написания статьи версия: 4.3.3 pl) по умолчанию он настраивается таким образом, что в нем нет возможности добавлять в редактируемую область разметку таблиц. Видимо это сделано для компактности и «дружелюбности», чтобы не пугать пользователей своими многочисленными возможностями (другого объяснения я найти не смог).

И так, вот что необходимо сделать, чтобы в редакторе TinyMCE в MODx Revo появились элементы редактирования таблиц:

  1. Перейдите к настройкам системы ("Система" -> "Настройка системы");
  2. Отфильтруйте параметры по компоненту "tinymce";
  3. Найдите параметр "tiny.custom_buttons3" (цифра в конце означает строчку вывода кнопок на панели TiniMCE, на свое усмотрение можно выбрать другой аналогичный параметр "tiny.custom_buttonsN"). Добавьте в значение параметра слово "tablecontrols";
  4. Для того чтобы кнопки заработали, необходимо подключить плагин для работы с таблицами. Для этого в параметре "tiny.custom_plugins" нужно добавить к списку плагинов — "table".

Читать полностью »

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

В результате у меня получился простой и полезный (по крайней мере для меня :) ) инструмент Docstring coverage, позволяющий оценить процентное покрытие кода документацией по всему проекту.

Запускается так:

docstring-coverage [опции] <путь к папке или модулю>

Пример вывода:

Читать полностью »

Уже везде гудят по этому поводу, но на Хабре новости еще нет.
Собственно тема раскрыта в заголовке, есть официальная информация о несанкционированном проникновении к серверам Battle.Net
Читать полностью »

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

Как можно начать создание своей WMS
Читать полностью »

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

Но мало кто знает, что работники Google получают бенефиты ещё десять лет после смерти. В течение этого времени жена или девушка (соответственно, муж или парень) умершего сотрудника получит 50% его зарплаты. Об этом рассказал директор по персоналу Ласло Бок (Laszlo Bock).

Ласло Бок говорит, что посмертные бенефиты представлены в прошлом году в связи с увеличением среднего возраста сотрудников Google, самому старшему из которых сейчас 83 года.
Читать полностью »

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

Лень. Основная причина домыслов. Ошибки связанные с домыслами обходятся и исполнителям и заказчикам гораздо дороже во временном плане, чем вдумчивая и серьёзная работа, но думать не хочет никто. «Нарисуйте мне логотипчик» — говорит заказчик. «Легко» — говорит дизайнер. И начинает, высунув язык, «творить».
Читать полностью »

Двадцатый выпуск подкаста — Сливки IT R&D.
Много информации про google, AOL — выйти из сумрака, Возняк предупреждает, FM какой он был и многое другое.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js