Search
Write a publication
Pull to refresh
1
0
bashor @bashor

User

Send message

RFID от Tikitag — непаханное поле для самоделкиных

Reading time2 min
Views6.4K
Интересная новость обнаружилась на Engadget:

Компания Tikitag (подразделение Alcatel-Lucent) привлекла к себе внимание на конференции DemoFall, показав RFID-набор (ридер и RFID-метки), которые, как заявлено, должны будут появиться в продаже в течение месяца по весьма демократичной цене.

59.23 КБ

Читать дальше →

ERRORLEVEL это не %ERRORLEVEL%

Reading time2 min
Views104K
У командный процессора cmd.exe есть такая вещь — уровень ошибки (error level). Это код выхода (exit code) программы, которую вы запускали последней. Проверить уровень ошибки можно при помощи команды IF ERRORLEVEL.
Читать дальше →

TeaVM — ещё один способ запускать Java в браузере

Reading time7 min
Views18K
Уважаемые читатели! Хочу поделиться с вами своим open-source проектом, над которым я работаю в своё свободное время уже достаточно давно, TeaVM. TeaVM представляет собой транслятор из байткода Java в JavaScript. Существует несколько попыток создать JVM на JavaScript, одна из самых удачных — Doppio. Однако, кроме академической, никакой ценности они не представляют, так как скорость интерпретации байт-кода оставляет желать лучшего. Более того, для интерпретации байткода необходимо как минимум загрузить этот байткод в браузер, а это вырождается в загрузку десятков мегабайт class-файлов.

В отличие от них, TeaVM не интерпретирует байткод, а генерирует JavaScript, который выполняет ровно то, что делал бы байткод, будь он запущен в реальной JVM. Проще говоря, TeaVM декомпилирует байткод Java, но не обратно в Java, а в JavaScript. Разумеется, всё это верно до определённых пределов. Во-первых, в JavaScript попросту отсутствуют некоторые вещи, привычные Java-разработчикам, такие как потоки, полноценная поддержка Юникода (например, поддержка классов символов, регулярные выражения), блокирующий ввод-вывод. Во-вторых, это обусловлено требованиями, которые я предъявлял к компилятору. Например, в TeaVM очень ограничена поддержка reflection. Это следствие одного из преимуществ TeaVM — сравнительно небольшой размер генерируемого файла. Нет, TeaVM не генерирует минимально возможный JavaScript, однако и не станет генерировать огромные многомегабайтные скрипты на каждый чих. Reflection делает невозможным какой-либо статический анализ, поэтому было принято решение от него отказаться.

Прежде чем я продолжу, я хочу для начала показать, на что способен TeaVM. Во-первых, он способен в реальном времени симулировать физику. Во-вторых, он ещё способен по этой физике рисовать красивые картинки в Canvas. Можно увидеть, что JavaScript-файлы сравнительно небольшие. Кстати, обсчёт физики я сам не реализовывал, я всего лишь взял имеющуюся библиотеку JBox2D.
Читать дальше →

Первая Всесоюзная олимпиада школьников по программированию (информатике) 1988 года

Reading time6 min
Views52K
Это первая публикация про первые школьные олимпиады по программированию/информатике. Вторая будет про 1989 год.
1988 — Первая Всесоюзная
1989 — Первая Всероссийская
1989 — Первая Международная

Приглашаю всех читателей попробовать свои силы в решении задач. (И дать порешать задачки своим знакомым школьникам)

Контекст


1988 год был годом утраты Ершова, Митник проходил курс лечения от компьютерной зависимости в тюрьме нестрогого режима, Моррис выпустил своего червя на свободу, федералы только-только перевели дух после поимки Поулсена, DARPA создала спецподразделение по компьютерной безопасности, немецкие хакеры проводили уже пятый Chaos Communication Congress, моя нога впервые вступила на московскую землю, в СССР в Свердловске (Екатеринбург) произошла первая Всесоюзная олимпиада школьников по информатике.

Про уровень техники того времени пост «Советские персональные компьютеры»

13-20 апреля 80 школьников из всех союзных республик 2 дня осваивали компьютеры Роботрон-1715 (справа на фото), а затем решали шесть задач.

Олимпиада состояла из двух туров — Теоретического (4 задачи) и Машинного (2 задачи).
Читать дальше →

Две красивые задачи по алгоритмам

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

Задача 1. Дан массив A длины (n+1), содержащий натуральные числа от 1 до n. Найти любой повторяющийся элемент за время O(n), не изменяя массив и не используя дополнительной памяти.


Сразу поясню. В условии не говорится, что каждое число от 1 до n встречается в массиве, поэтому повторяющихся элементов там может быть сколько угодно (если бы все числа входили по разу, а одно — дважды, то задача была бы гораздо проще). Ограничение на использование дополнительной памяти означает, что нельзя заводить дополнительный массив линейной длины, но можно заводить переменные.

Задача 2. Дана матрица nxn, содержащая попарно различные натуральные числа. Требуется найти в ней локальный минимум за время O(n).


Локальным минимумом матрицы называется элемент, который меньше всех своих четырёх соседей (или трёх, если этот элемент лежит на границе; или двух, если это угловой элемент). Обратите внимание, что от нас требуется линейное по n время, хотя в матрице квадратичное по n число элементов. Поэтому мы предполагаем, что матрица уже считана в память. И нам нужно найти в ней локальный минимум, обратившись лишь к линейному количеству её ячеек.

Под катом — решение первой задачи. Ещё раз призываю вас заглядывать под кат только после того, как порешаете задачу. По второй задаче могу какую-нибудь подсказку сказать.
Читать дальше →

Consulo — IDE где Java и C# живут вместе

Reading time3 min
Views53K
Здравствуйте. Прошло много времени после моих постов на хабре (тык, тык) на тему Consulo. Ниже расскажу, что изменилось за это время.

Для тех, кто пропустил мои посты:
Consulo — это форк IntelliJ IDEA Community Edition, который имеет поддержку .NET(C# на текущий момент), Java, Javascript(NodeJS), и многое другое. Проект собрал множество открытых плагинов в себе. При этом код остался открытым.



Читать дальше →

Изобретаем JPEG

Reading time28 min
Views178K

Вы правильно поняли из названия, что это не совсем обычное описание алгоритма JPEG (формат файла я подробно описывал в статье «Декодирование JPEG для чайников»). В первую очередь, выбранный способ подачи материала предполагает, что мы ничего не знаем не только о JPEG, но и о преобразовании Фурье, и кодировании Хаффмана. И вообще, мало что помним из лекций. Просто взяли картинку и стали думать как же ее можно сжать. Поэтому я попытался доступно выразить только суть, но при которой у читателя будет выработано достаточно глубокое и, главное, интуитивное понимание алгоритма. Формулы и математические выкладки — по самому минимуму, только те, которые важны для понимания происходящего.

Знание алгоритма JPEG очень полезно не только для сжатия изображений. В нем используется теория из цифровой обработки сигналов, математического анализа, линейной алгебры, теории информации, в частности, преобразование Фурье, кодирование без потерь и др. Поэтому полученные знания могут пригодиться где угодно.

Если есть желание, то предлагаю пройти те же этапы самостоятельно параллельно со статьей. Проверить, насколько приведенные рассуждения подходят для разных изображений, попытаться внести свои модификации в алгоритм. Это очень интересно. В качестве инструмента могу порекомендовать замечательную связку Python + NumPy + Matplotlib + PIL(Pillow). Почти вся моя работа (в т. ч. графики и анимация), была произведена с помощью них.

Внимание, трафик! Много иллюстраций, графиков и анимаций (~ 10Мб). По иронии судьбы, в статье про JPEG всего 2 изображения с этим форматом из полусотни.
Читать дальше →

Стивен Вольфрам провёл математический анализ социальных сетей

Reading time3 min
Views108K

Изменение места жительства пользователей Facebook

Математик и программист Стивен Вольфрам известен как автор программы Mathematica и научного поисковика Wolfram Alpha. Несмотря на большой объём текущей работы, Стивена всегда интересовал вопрос: можно ли математическими методами проанализировать траекторию жизни человека.
Читать дальше →

Жизненная позиция пользователей ВКонтакте в зависимости от пола и возраста

Reading time2 min
Views88K
В анализе Фейсбука, который провел Стивен Вольфрам, мне особенно понравились графики изменения интересов людей в зависимости от пола и возраста. Поэтому я решил посчитать нечто похожее для отечественной соцсети ВКонтакте. В анкете ВКонтакте есть любопытная группа полей — «Жизненная позиция», по значениям которых можно искать фактически в реляционном стиле. Поэтому от меня не требовалось разворачивать мощную data mining инфраструктуру, а лишь обработать результаты нескольких сотен GET-запросов.

Для начала — общее кол-во людей по возрастам:

Так как мужчины и женщины неодинаково активны в социальных сетях, а так же учитывая наличие фейков и ботов, я бы не стал делать из этого графика далеко идущие демографические выводы.
Больше графиков!

Жизненная позиция пользователей ВКонтакте. Бонус-трек. Корреляции

Reading time2 min
Views46K
Почти сразу после того, как я опубликовал пост Жизненная позиция пользователей ВКонтакте в зависимости от пола и возраста, появилась идея проверить, как зависит тот или иной аспект жизненной позиции от других. Как упоминалось в предыдущем посте, для этого опять-таки не нужно было делать сложных расчетов, всего лишь обратиться к поиску по профилям ВКонтакте.

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

Вот как на жизненные ориентиры мужчин влияет пристрастие к спиртному:

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

С чего началось использование [x] в дизайне графических интерфейсов

Reading time6 min
Views53K
Немалую роль в дружественном взаимодействии пользователя и сайта играют привычные элементы управления. Например, крестик для закрытия окна. Последние несколько дней в интернете широко обсуждалась одна статья об истоках возникновения этого элемента пользовательского интерфейса и она даже привлекла внимание одного из первых разработчиков Windows 95, но об этом ниже.

В пользовательских интерфейсах мы видим X повсеместно. Этот могущественный символ способен закрывать рабочие и всплывающие окна, панели инструментов и вкладки, а также убрать вообще все, что только может создать вам помехи на экране.

Использование нажатия на [x] для того, чтобы закрыть тот или иной элемент превратилось в один из основных инстинктов, связанных с использованием компьютера и стало стандартом в дизайне веб-сайтов и компьютерных приложений. Может показаться, что вездесущий [x] всегда был частью интерфейсов, однако этот короткий и увлекательный экскурс в историю пользовательских графических интерфейсов показывает, что на самом деле дела обстоят иначе.

Итак, где и когда [х] впервые попал в лексикон интерфейсов?
Читать дальше →

Конструктор для «Умного Дома» — от идеи до воплощения

Reading time16 min
Views162K


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

Проект, начавшийся в формате «для души», удивительным образом вышел за рамки хобби, и вырос серьезную разработку. В основе лежало желание создать систему, интересную как в плане технического творчества и программирования, так и удобную для повседневного использования. Хотя работа еще в разгаре, уже отчетливо видны контуры задуманного: распределенная система, высокотехнологичный «конструктор» для реализации всевозможных идей умного дома, с хорошей масштабируемостью.
Читать дальше →

OpenHAB — стань программистом собственного жилища

Reading time9 min
Views202K
image
Дом — это машина для жилья
Ле Корбюзье

В этом посте я расскажу об opensource проекте домашней автоматизации openHAB.
openHAB переводится как "Open Home Automation Bus". Это значит, что он нацелен на создание универсальной платформы для объединения всей домашней «умной» техники в единую систему управления.

Что же это дает на практике? Под катом я расскажу о том, как с помощью этого решения можно создать настоящий интернет вещей в своем доме.

Читать дальше →

Заблуждения программистов об именах

Reading time3 min
Views90K
Две недели назад на Хабре публиковался перевод «Заблуждения программистов о времени», который по своей структуре и стилю основан на этом классическом тексте Патрика Макензи, опубликованном два года назад. Поскольку заметка о времени была крайне благоприятно воспринята аудиторией, то, очевидно, имеет смысл перевести и исходную статью об именах и фамилиях.

Джон Грэхем-Камминг (John Graham-Cumming) сегодня жаловался в своём блоге, что компьютерная система, с которой он работал, не приняла его фамилию из-за недопустимых символов. Конечно, там нет недопустимых символов, потому что любой способ, как человек представляет себя, — по определению — является подходящим идентификатором. Джон выразил сильную досаду насчёт данной ситуации, и он имеет полное право, потому что имя — суть нашей индивидуальности, практически по определению.
Читать дальше →

Заблуждения программистов относительно времени

Reading time3 min
Views92K
За последние пару лет я потратил много времени на дебаггинг чужих тестов. Это была интересная работа, иногда расстраивающая, но всегда поучительная. Кто-то может подумать, что в тестах нет багов, но конечно баги есть везде, и тесты не исключение.

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

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

Computer Science Center запускает MOOCs по основам программирования

Reading time3 min
Views20K
Computer Science Center (образовательный проект ШАД Яндекса, компании JetBrains и Сomputer Science клуба при ПОМИ РАН), открывает запись на массовые открытые онлайн-курсы (MOOC) по основам программирования.

С 15 сентября 2014 года можно будет пройти следующие онлайн-курсы, подготовленные преподавателями CS центра:
  1. Алгоритмы и структуры данных (А.С. Куликов)
  2. Введение в архитектуру ЭВМ. Элементы операционных систем (К.В. Кринкин)
  3. Программирование на языке C++ (А.В. Смаль)


Данные три курса являются «джентльменским набором» начинающего программиста, преподаются на русском языке и бесплатны для всех желающих. Преподаватели при подготовке курса пользовались опытом чтения одноименных дисциплин в CS центре и Академическом университете. Записаться на курсы можно на сайте CS центра. Для освоения курсов слушателям достаточно владеть школьной программой по математике, информатике, физике.

Для создания и размещения онлайн-курсов СS Center использовал образовательный плеер Stepic. Проект Stepic существует с 2013 года и выделяется среди других образовательных платформ возможностями для автоматической проверки задач на программирование, например, безопасное исполнение пользовательского кода в песочнице (C++, Java, Python, Haskell, Octave), а также генерация и проверка рандомизированных датасетов. Cистема проверки задач Stepic была использована в ряде курсов на платформе Coursera, включая курсы от Калифорнийского университета в Сан-Диего и НИУ «Высшая школа экономики».
Подробнее о курсах

Фракталы в простых числах

Reading time3 min
Views156K


Я обнаружил этот фрактал, когда разглядывал интерференцию волн на поверхности речки. Волна движется к берегу, отражается и накладывается сама на себя. Есть ли порядок в тех узорах, которые создаются волнами? Попробуем найти его. Рассмотрим не всю волну, а только вектор ее движения. «Берега» сделаем гладкими, для простоты эксперимента.

Эксперимент можно провести на обычном листке в клеточку из школьной тетради.
Читать дальше →

Компьютер из 10000 костей домино

Reading time1 min
Views42K
Мэтт Паркер, отметившийся в проектах Numberphile и Standup Maths, в компании с командой Domino Computer Builders построили, наверное, самый медленный компьютер в мире из костей домино.


Немного деталей под катом.
Читать дальше →

Почему 98% текстов на ваших сайтах не работают. Вообще. И как это починить

Reading time7 min
Views285K

Вот так люди видят вашу страницу

Привет!
Проблема вот в чём. Если зайти на практически любой сайт интернет-магазина или компании с услугами, вы встретите контент. Точнее — отвратительные тексты, которые писали, кажется, маркетологи, воспитанные сеошниками.

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

По моим примерным подсчётам (усреднение с ряда позиций), конверсии для нас выглядят так:
  • Только название и картинка — около 1,5%.
  • С описанием от производителя — чуть более 2%.
  • С описанием человека, который держал это в руках и знает правила — около 6%.

Ниже — рассказ про то, как мы доводили время на сайте от 3 минут сначала до 6:40, а потом до 20:48. Да-да, двадцати минут сорока восьми секунд для среднего посетителя. Честного среднего, с учётом отказов и по полной выборке.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity