Планирую писать не только о программировании, но и о прочих, иногда не совсем совместимых вещах. Например, о музыке, которую я тоже очень люблю )
суббота, 8 января 2011 г.
Видеоурок "Функции высших порядков" (на примере Haskell)
В качестве темы выбрал "Функции высших порядков". Сразу говорю, что видео, скорее, для начинающих. Получилось, может быть, не очень удачно (и местами я несу какую-то околесицу), но учтите, что это мой первый опыт такого рода. Будем же любить друг друга и относиться чуть снисходительнее :).
Ну а если кому даже и понравится (вдруг!), то я буду только рад.
Вот само видео на youtube:
пятница, 31 декабря 2010 г.
С Новым 2011 Годом!
Друзья.
Скоро наступает Новый 2011 год. Для меня всегда празднование Нового Года было
особенным событием. Есть в нем, на мой взгляд, нечто сказочно-волшебное. Пожелаю вам в Новом году крепкого здоровья, душевного и материального благополучия, встреч с умными и интересными людьми. Чтобы Новый год дарил вам одни только положительные эмоции. С наступающим Новым 2011 годом!
пятница, 5 ноября 2010 г.
Haskell Platform 2010.2.0.0 и Cabal под Windows XP
Давеча столкнулся с интересной проблемой обновления пакетов в Haskell Platform 2010.2.0.0 (от июля 2010 года) под Windows XP. Изучал пример, в котором для перекодировки символов использовался модуль Encoding. Из коробки данный модель не входит в состав библиотек, поставляемых c Haskell Platform 2010.2.0.0.
Качать пакеты можно с http://hackage.haskell.org - хранилища различных пакетов модулей для хаскеля. Можно пробовать либо устанавливать пакеты вручную, либо использовать идущий вместе с хаскелем Cabal - средство для автоматической установки пакетов. Конечно, более интересным показался второй вариант. Тут же наткнулся на первые грабли.
вторник, 2 ноября 2010 г.
Размер среды окружения при запуске DOS задач в Windows XP
Общеизвестно, что при запуске DOS-приложений размер окружения (Environment) ограничивается по-дефолту вполне определенной величиной (в XP, например, это значение равно 256 байт, если я правильно понял ). Как это проявляется ? Ну, вот, например, у вас есть переменные среды, в том числе и PATH, которые заданы средствами Windows (Мой Компьютер => Свойства => Дополнительно => Переменные Среды). При запуске DOS-приложений стартует виртуальная машина DOS-задач NTVDM, которая запускает command.com, получающий из всего пула переменных среды блок размером в 256 байт. То есть, если PATH у вас был длинный (а такое часто случается при установке приложений в папку Program Files, которые добавляют в переменную PATH пути к своим бинарниками или либам), то для DOS-задачи он будет урезан.
суббота, 2 октября 2010 г.
Firefox 4 и русская локаль
перебрасывает, почему-то, на молдавский домен google.md с латинской графикой.
Видимо, по-дефолту поиск идет на домене google.com, который уже в зависимости от страны или настроек пользователя перебрасывает последнего на локальный домен.
Пока решил это включением галки "предлагается на русском языке" на странице google.md (видимо, гугль садит какую-то куку), но как-то это не по-людски. Хотелось бы урегулировать проблему раз и навсегда. Полазил по настройкам Firefox'а в about:config. Нашел 2 параметра, которые отвечают за локаль:
1. Строчный параметр "general.useragent.locale"
Вроде бы, устанавливает локаль в юзерагенте браузера. Пробовал менять дефолтное "en-US" на "ru-RU" - без особого успеха.
2. Булевый параметр "intl.locale.matchOS". В случае True (по-дефолту выставлен в False) заменяет вышестоящий параметр тем, что выставлено в локали OS (если я правильно понял). Изменение его на "True" также результатов не дало.
Сталкивался ли кто с таким ? Интересно, как можно решить ?
вторник, 14 сентября 2010 г.
Решение задачи о поиске двух недублирующихся элементов в потоке
Итак, напомню условие задачи. Есть большой входной поток целых чисел, про который известно, что в нем все числа дублируются кроме двух. Найти эти 2 числа за константное количество проходов с использованием константного количества памяти.
четверг, 2 сентября 2010 г.
Задача о поиске недублирующихся элементов в потоке
Первоначально пришла в голову идея использовать какой-то хэш-массив, в котором ключами будут значения элементов входного потока, а значениями - число вхождений того или иного элемента в поток. Сложность в том, что заранее неизвестно, в каком диапазоне числа входного потока. Если предположить, что размер int'а 32 бита, то в хэше возможно 2^32 элементов, что, в общем, достаточно круто )
Но затем неожиданно меня посетила неплохая идея: а что, если воспользоваться операцией XOR, для которой характерны следующие правила: A XOR A = 0 и 0 XOR A = A.
Тогда просто проксорив все элементы входного потока, мы получим на выходе значение недублирующегося элемента, ибо
A XOR B XOR A XOR C XOR B = C
То есть, для решения задачи нужен всего 1 проход по всем элементам и одна переменная, аккумулирующая результат, что, согласитесь, неплохо.
А теперь внимание. Как можно решить задачу, если в потоке не один недублирующийся элемента, а два ? Мне пока что-то ничего в голову не приходит.