Вы читаете журнал [info]sharpc

Предыдущие 15

9 Май, 2012

(без темы)

When philosophy discovers something wrong with science, sometimes science has to be changed — Russell's paradox comes to mind, as does Berkeley's attack on the actual infinitesimal — but more often it is philosophy that has to be changed. I do not think that the difficulties that philosophy finds with classical mathematics today are genuine difficulties; and I think that the philosophical interpretations of mathematics that we are being offered on every hand are wrong, and that "philosophical interpretation" is just what mathematics doesn't need.

Hilary Putnam

14 Мар, 2012

Линкдамп diff

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

Название происходит от утилиты diff, впервые включенной в дистрибутив Unix 5 ed. в 1974.

Линкдамп )

Для моих целей лучше всего подошел FineDiff.

4 Мар, 2012

Кодоизмеритель 2012

Прошло 2.5 года с момента последнего измерения моей программерской активности (не включая работу), и посему оно было произведено снова. На этот раз я нашел 20.7 МБ исходников в 6459 файлах (супротив 15.3 в 4886 тогда). Объем кода на C++ увеличился с тех пор почти в 2 раза и, наконец, обогнал немыслимое количество кода на VB, сохранившегося года эдак с 2001-го.

29 Фев, 2012

Ежегодных контестов псто 2012

Для начала упомяну идущий Facebook Hacker Cup. Как и в прошлом году, даже посмотреть на скореборд без аккаунта на Facebook нельзя. Я аккаунт завел, но вместо логичных напоминаний о раундах мне присылали много нелогичных напоминаний о том, что кто-то может меня знать, так что квал я пропустил.

21 января 00:00 UTC Qualification Round (72h), проходят все, кто решил хотя бы одну задачу
28 января 18:00 UTC Online Round 1 (24h), проходит 500 человек
4 февраля 21:00 UTC Online Round 2 (3h), проходит 100 и получает футболки
11 февраля 21:00 UTC Online Round 3, проходит 25
16-17 марта Onsite Final Round (Менло Парк, Калифорния, США), призы $5k—$2k—$1k—$100×22


Впервые в этом году проводится VK Cup. Как несложно догадаться, проводит Вконтакте на базе и по правилам Codeforces. Как и Другая Социальная Сеть™ вконтактик отличился, причем еще глупее — они ввели возрастной ценз, совершенно загадочный как с точки зрения хедхантинга, так и с точки зрения Петя-Гена-pruning, а именно 14-23 года. Выбор языков довольно велик: С/С++, Delphi/Pascal, Java, С#, Python, Ruby, PHP, OCaml, Haskell, Perl, Scala (здесь должно быть что-то ехидное на тему любителей OCaml, Haskell и Scala).

3 марта 20:00 UTC
9 марта 08:00 UTC
Qualification Round 1, 2 (24h), проходит по 800 + те, у кого столько же баллов
11 марта 15:00 UTC
Round 1 (2h), проходят 700
18 марта 15:00 UTC
Wild-card Round 1 (2h, цитирую: unusual rules), проходит 50 из непрошедших R1
25 марта 15:00 UTC
Round 2, проходит 175
28 марта — 3 апреля
Wild-card Round (7d), проходит 25 из непрошедших R2
8 апреля 15:00 UTC
Round 3, все 200 получают футболки, проходит 50
12 июля
Final Round (Санкт-Петербург), призы $6k-$4k-$2k×3-$1k×5

Через 2 недели откроется регистрация на Google Code Jam

13 апреля 23:00 UTC
Qualification Round (25h)
28 апреля 01:00 UTC
5 мая 16:00 UTC
6 мая 09:00 UTC
Online Round 1A, 1B, 1C (2.5h), проходит 1000 из каждого
26 мая 14:00 UTC
Online Round 2, топ1000 получает футболки, проходит 500
9 июня 14:00 UTC
Online Round 3, проходит 25
27 июля
Onsite Finals (Нью-Йорк, США), призы $10k-$2k-$1k-$100×21


Очень суровая в этом году сетка у главного алгоспортивного события года — TopCoder Open. И начнется он раньше.

31 марта 16:00 UTC
7 апреля 16:00 UTC
14 апреля 16:00 UTC
Round 1A, 1B, 1C, проходит по 600 из каждого
21 апреля 16:00 UTC
12 мая 16:00 UTC
2 июня 16:00 UTC
Round 2A, 2B, 2C, проходит по 50 из каждого, топ350 по самому высокому занятому месту получает футболки
23 июня 16:00 UTC
7 июля 16:00 UTC
Round 3A, 3B, проходит по 12 из каждого
30 сентября — 4 октября
Onsite Finals (Орландо, Флорида, США), призы $15k-$3.5k-$1.2k-$700-$500-остальным меньше


Вновь состоится так хорошо стартовавший в прошлом году Russian Code Cup.

27 мая 11:00 UTC+4
02 июня 11:00 UTC+4
10 июня 11:00 UTC+4
Квалификационный раунд 1, 2, 3 (2h), проходит по 200 из каждого
16 июня 11:00 UTC+4
Отборочный раунд (3h), проходит 50
17 сентября 11:00 UTC+4
Финальный раунд (Москва), призы $10k-$5k-$3k


2 июня 15:00 UTC пройдет Internet Problem Solving Contest.

Пока ничего не слышно про ICFP Contest.
UPD: Состоится 13 июля с 12:00 UTC. Организует шотландский University of St. Andrews.

9 марта заканчивается прием заявок от mentoring organization на Google Summer of Code, с 26 марта по 6 апреля принимаются заявки от студентов.

17 Фев, 2012

Телепаты strikes back

Попробуйте угадать, что это за строка:

-ZZ-DZ-AKP-OZ-AZ-AZ-AZ-AG-AA-AAP-OZ-AZ-AK-AJ-AA-AAP-ZZ-PC-AAP-ZZ-ZD-KA-AAP-MGP-ZA-ZA-KA-AAP-AZ-AZ-AZ-AZ-AIP-ZZ-ZS-ZA-ZA-RAP-CZ-AZ-AK-AN-AAPTГ

UPD: Первую подсказку дал товарищ [info]udpn.

Решено! Вадим Канторов aka [info]vadimmer первым совершенно верно угадал, что это квайн в машинном коде x86. Близок был и [info]kit1980ukr. Чтобы убедиться в этом, достаточно скопировать эти 141 байт в cp1251 внутрь .com-файла (например, под dosbox) и запустить его, перенаправив вывод в файл. Это лишний раз доказывает пользу CTF для развития телепатии!

Sharp: Решил я тут давеча стихи посочинять
Sharp: А потом думаю
Sharp: Дай я это в com-файл засуну!
Sharp: Запускаю — и правда! Квайн! :)


А вот какие проводки использовались )

5 Фев, 2012

Регексп делимости на 3

Написать сабж предлагается уважаемым читателям. Чуть более конкретно: он должен матчить любое десятичное целое неотрицательное число, нацело делящееся на 3.

UPD: Поздравления достаются [info]art_mixer! Очевидно, сумма цифр должна быть кратна 3, значит, можно вместо каждой цифры рассматривать ее остаток от деления на 3, а само число состоит из 1 или больше кусков, которые делятся на 3, причем нули несущественны. Рассмотрим дерево префиксов и обнаружим, что оно «заканчивается» на 111, 12, 21, 222, а все остальные «концы» имеют вид 1(12)+2, 1(12)+11, 2(21)+1, 2(21)+22. Объединяем это все вместе и получаем:
(
1(12)*(2|11)|
2(21)*(1|22)
)+

Затем добавляем 0 везде внутри масок и как отдельную сумму:
(
0|
10*(10*20*)*(2|10*1)|
20*(20*10*)*(1|20*2)
)+

Осталось заменить 0 на [0369], 1 на [147], 2 на [258] и мы получим ответ.

31 Янв, 2012

Смерть разнообразию!

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

В этот раз хочу сообщить, что все региональные стандарты должны сдохнуть. Только десятичная точка, только отсутствие разделителей между тройками разрядов, только лексикографически сортируемый человеко-читаемый формат даты (т.е. ГГГГ.ММ.ДД чч:мм:сс, где часы принимают значения от 00 до 23, а секунды от 00 до 60, и никак по другому (ну или ГГГГ-ММ-ДДTчч:мм:сс, как в ISO 8601))! Аналогично должны сдохнуть все «летние времена», как нарушающие биекцию между временем и его строковым представлением. Никаких «287 до н.э.», только −286!

Кроме региональных стандартов на представление чисел и дат сдохнуть должны региональные единицы измерения, оставшиеся, если верить Википедии, в Либерии, Мьянме и США. Только СИ! Если вы вдруг еще не в курсе, теперь точно зафиксированы не только секунда и скорость света, но и постоянная Планка, Больцмана, Авогадро и заряд электрона. Остался только пи :)

Дополнить хочу рацпредложением, касающимся двух последних символов BASE64. 62 символа это цифры, маленькие и большие латинские буквы, но в качестве двух последних пальцесосатели, писавшие RFC 1421, взяли + и /, которые ни в путь не засунешь, ни в URL. Именно urlencode накладывает самые суровые требования к набору символов, оставляя всего один вариант: - и _. Такой немного модифицированный вариант называется в RFC 4648 Base64 with URL and Filename Safe Alphabet (или просто base64url). Везде используйте только его!

И, похоже, никого не затруднит в этот раз новая задача для телепатов. Мой товарищ в процессе обучения программированию писал программу на Си для перевода из дюймов в сантиметры. Каково же было его удивление, когда она сказала, что 2 дюйма это не 5, а 10 сантиметров. Но телепаты не удивятся, а напишут в комментах «Очевидно, что ошибка в ...» :)

31 Дек, 2011

С Новым Годом-2012!

Стандартный новогодний отчет: события, фильмы, контесты, альбомы, книги, открытия, составившие портрет этого года.

Лучшие фильмы года: Рапунцель: запутанная история, Исходный код, Пол. Секретный материальчик, Меняющие реальность, Пираты Карибского моря 4, Гарри Поттер 7
Лучшие контесты года: RuCTF, IPSC, RCC, TCO

Лучшие альбомы года:
Nightwish — Imaginaerum
John Boswell & K — Symphony of Science
Evanescence — Evanescence
Within Temptation — The Unforgiving
Nemesea — The Quiet Resistance
Stream of Passion — Darker Days
Draconian — A Rose For Apocalypse
Sirenia — The Enigma Of Life

Открытия года:
сериал Игры престолов;
музыкальные коллективы Вельвеt, Caamora, UnSun, Buckethead, Revamp, Arven, In This Moment;
игры Team Fortress 2, Assassins Creed :), Emperor: Rise of the Middle Kingdom, SpaceChem, Fable 3;
книги Азимов «Академия», Уоттс «Ложная слепота», Гранин «Эта странная жизнь», Кудрявцев «Мысли о современной математике и ее изучении»

Самые интересные события года: сверхсветовое нейтрино, двухсигмовый бозон Хиггса на 126 ГэВошибся на 16 ГэВ :)), открытие сырцов Doom 3, выход С++11, Microsoft покупает Skype и подминает Nokia.


Всех с Новым Годом! :)
Метки:

27 Дек, 2011

Поздравляю всех с моим 25-летием!

На сей раз жаба была повержена обновлением (дополнением игровой приставкой — прим.тех.ср-ва) 4-летнего Acer Aspire 5315 на Acer ASPIRE 5755G-2434G75Mnrs (Core i5 2430M 2400 Mhz/15.6"/1366x768/4096Mb/750Gb). Да, он красненький. Но если учитывать, что сейчас вообще нет ноутбуков матовых, неширокоэкранных, 15-дюймовых без нампада, с человеческим тачпадом, на котором есть моя любимая, затертая до дыр, средняя кнопка, то внезапно оказывается, что это не так уж и плохо.


А теперь займусь чем-то вроде gamedeveloper lament. 6.5 лет назад появился XBox 360 — устройство для выкачивания денег, с помощью которого игровая индустрия держится на плаву. У устройства 512MB памяти, совмещенной с видеопамятью. Внезапно выяснилось, что как бы ни хотели разработчики делать впечатляющие игры, двигателем индустрии персонального железа стали кривые руки при портировании на PC (и проклятый Мак), а не растущее качество контента и сложность игровых механизмов.

Вы видели Civilization Revolution для консолей, выпущенную после Civilization IV? Сейчас так во всем. Огромные, выпуклые, настоящие миры уходят в прошлое, стремительно оказуаливаются, превращаются в самокопирование, а то и в банальную копипасту. Самый жуткий пример, пожалуй, Dragon Age: Origins и Dragon Age 2. При этом первая, хоть и не летала, но была вполне играбельной на моем старом ноутбуке, а вторая, при заметно уменьшившемся качестве игрового контента, рисовала кадр дольше секунды.

Где вы, прекрасные истории, будоражащие память через года? Куда ушли времена No One Lives Forever, WarCraft 3, KoToR 1-2, Beyond Good and Evil, да хотя бы Space Rangers? Даже StarCraft 2 выпущен будто под штамповку! Неужели Fable единым жива фантазия творцов? Да, возродили франшизу Back to the Future, но ведь это игранизация с новым сюжетом, а вовсе не свежий глоток воздуха. Контент, допиливание, версия 6 → 7, продажи, DLC, покупка лицензии на очередной пустой кассовый фильм и все по новой. Работая над Assassins Creed Revelations, я был немного озадачен макросами вида POP_PLATFORM_WIN32 и поинтересовался у тимлида, что значит POP, откуда оно взялось в коде? Ответ был таков: POP — Prince of Persia.

Защищайте кодоев! Если вы не вспомнили голос, которым это было произнесено, значит, вы не играли в WarCraft 3. Глупцы! Вы забыли о возмездии! Но нет. Нынче в геймдеве властвует тень Team Fortress. Филигранная работа над аддиктивностью, но стоит закрыть окно — что вы вспомните об этом мире, кроме 9 профессий? Квиз для тех, кто дочитал до этого места: где можно услышать голос пиро? :) Battlefield, CoD, Torchlight, Magica, Dota (+LoL, +HoN, +etc) — море дофамина и ни грамма смысла. Что вспомнит игрок в Skyrim, кроме пейзажей и отдельных коленец, которые выкинули разработчики? А в самом деле, зачем делать серьезные вещи, продумывать вселенную, персонажей и сюжет, если можно там удачно пошутить, там спародировать, там добавить фан-сервиса и цитат?

Так капитализм убивает творцов. Сколько еще это будет продолжаться? Увидим ли мы когда-нибудь игры в роли прогрессивного культурного явления, каким они должны быть по степени вовлеченности людей? XBox 720 ожидается, видимо, не раньше июня 2015 года. А пока миром правят Steam и AppStore. Вставьте кредитку, получите вашу дозу удовольствия — послезавтра будет новая доза в виде DLC, ачивок, новых веселых контроллеров. И не пропустите новогодние скидки!

Эта простыня ненавязчиво вопрошала у вас, во что мне поиграть на новом ноутбуке :)

А еще в комментариях все прогрессивное человечество поздравляет меня с четвертью века или хотя бы ставит +1 :)
Метки: ,

24 Дек, 2011

Музыкальное

Чуть больше, чем 1.5 года назад я обещал выложить относительно работающий скриптик, который парсит Википедию в поиске новых альбомов моих любимых исполнителей. В тот раз его запуск на списке из 104 элементов выдал 42 упущенных альбома. В этот, на 116 — 43. Хорошо, что я успел сделать это до публикации своего ежегодного музыкального топа, а то бы пришлось и его инвалидировать :)

Пример результата работы (Народ его слегка заcp1251ил, заutf8те обратно)
Сам скрипт на PHP (берегите глаза, спагетти!)
Список исполнителей в текстовом файле (cp1251)

Как с этим поиграться? В PHP 5.4 (пока только RC4) сделали встроенный веб-сервер, так что процесс всяких игр с LAMP-связкой заметно упростился, в данном конкретном случае — до одной единственной буквы P.

  1. Скачайте PHP 5.4RC4 (или любой новее / для вашей ОС) и распакуйте куда-нибудь;

  2. Положите в эту же папку скачанный index.php;

  3. Наберите в текстовом файле groups.txt (cp1251) в той же папке список ваших любимых исполнителей построчно;

  4. Зайдите в папку из консоли и выполните команду php.exe -S localhost:80 — она запустит HTTP-сервер (доступный только локально), корнем для которого будет являться папка с PHP;

  5. В браузере перейдите по адресу http://localhost/;

  6. Обновляйте страницу, пока скрипт не скачает весь нужный ему интернет (страницы с википедии и last.fm) в папку cache/ — когда это произойдет, он перестанет выдавать Fatal error: Maximum execution time of 30 seconds exceeded;

  7. Расчехляйте торр Наслаждайтесь приятной музыкой;

  8. Убить сервер можно, нажав в консоли Ctrl-C.


Русских исполнителей парсит исключительно гадостно. Если можете предложить локальные изменения, которые заметно улучшают результат — welcome. Найденная экспериментально оптимальная частота запуска скрипта — раз в год :)

10 Дек, 2011

Четыре золотых урока

Это перевод статьи "Four golden lessons" Стивена Вайнберга, американского физика и лауреата Нобелевской премии (за вклад в электрослабую теорию), которая была написана по мотивам речи в университете Макгилла и опубликована в Nature в 2003 году

Советы ученого студентам, начинающим свою научную карьеру.

Когда я получал свой университетский диплом — а было это почти сто лет назад — мне казалось, что физическая литература это огромный, неисследованный океан, каждую часть которого я должен освоить, прежде чем начинать какие-либо свои исследования. Как я могу делать что-то без знания всего того, что уже сделали? К счастью, на первом году аспирантуры мне посчастливилось попасть в руки крупных физиков, которые настояли, несмотря на мои тревожные возражения, чтобы я начал исследования, приобретая нужные знания по пути. Меня словно бросили в воду, и оставалось либо тонуть, либо плыть. К моему удивлению, это сработало. Мне удалось быстро получить PhD, хотя тогда я почти ничего не знал о физике. Но я извлек один важный урок: никто не знает всего, и вы не должны.

Читать )
Метки:

22 Ноя, 2011

Чиним ljArchive

С некоторых пор самая удобная (хотя, увы, давно не поддерживающаяся) программа для оффлайн-копии ЖЖ ljArchive (что это такое и как этим пользоваться можно прочитать, например, тут) стала выдавать ошибки при синхронизации комментариев (по таймауту) вида:

The server is not responding. Please try again later.
EF.ljArchive.Engine.ExpectedSyncException: An expected exception occurred: ServerNotResponding ---> System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly.
и дальше коллстек из EF.ljArchive.Engine.Sync.ExportCommentsMeta в System.Xml.

Причины проблемы )

Для тех, кто не хочет компилировать, я положил пропатченную версию EF.ljArchive.Engine.dll на Народ. К сожалению, компиляторы разные, поэтому бинарный дифф большой, в идеале же достаточно было бы исправить всего 18 байт.

7 Ноя, 2011

(без темы)


21 Июн, 2011

Астероиды-2061

По сравнению с предыдущим конкурсом «Марс-2061» тема не столь эмоциональная, однако количество художников значительно больше (79 работ против 32), в том числе и очень хороших (в частности, в этом посте 22 изображения против 6 в прошлом посте).

Ждем новых конкурсов про старт Первой Межзвездной, летающие и подводные города, Лунный Коллайдер, победу над смертью и о прочих трудовых буднях советских граждан в 2061 году.

Оригинальный пост

Избранное )

Ну и current music послушайте обязательно. Где еще можно услышать Стивена Хокинга, поющего про beginning of the Universe and of time itself?

4 Июн, 2011

Шутка для знатоков

Обсуждаем в Miranda задачу C с Google Code Jam 2011 R2:

Sharp:
int resmax = 1;
for (long long i = 0; i * i <= n; ++i) if (!p) {
    for (long long tmp = n; tmp >= i; tmp /= i) ++resmax;
    --resmax;
}
return resmax - (n == 1);

Sharp: Вот и все решение, блин, я сдал его в практисе
Fever: куда-то делся индекс в цикле
Sharp: курсив?
Fever: ага
Fever: откуда он здеcь?
Sharp: Это такой особый, курсивный код
Sharp: Знаешь ведь
Sharp: Код, набранный курсивом, работает в 2 раза круче, чем обычный
Sharp: Если он еще и жирный, то еще в 2 раза круче
Sharp: Ну и если набран пропорциональным шрифтом, то еще в 2 раза круче
Sharp: Страустрап какбе гарантирует 8-кратное преимущество по качеству кода

Предыдущие 15