dastapov: (Default)
У меня в ЖЖ было куча ссылок между постами, и я хотел в DW поправить их так, чтобы они вели на соответствующие посты в DW.

Оказалось, что все велосипеды уже придуманы до нас :) Вот тут человек наколхозил скрипт, который пробегает по архиву, сделанному ljdump, собирает соответствия между URL-ами в ЖЖ и DW, правит посты и обновляет их в DW.

Из коробки скрипт у меня не заработал, пришлось его чуть поправить, чтобы он умел работать с ЖЖ-никами, в которых есть подчеркивания (как это было у меня). Результат на github-е (https://github.com/adept/ljdump/blob/master/fix_links.py), запускать из директории с результатами ljdump.

Оно будет показывать diff для всех поправленных постов и после подтверждения обновлять их. Можно выбрать альтернативную программу для сравнения через переменную окружения DIFF.

Я запускал так: DIFF=patdiff ~/path/to/fix_links.py

Вроде бы как все переехало нормально, ссылки поправлены, ничего не поломалось.

UPD: Заодно, вписав в скрипт пару строк вида url['вот это']='заменить на это', пофиксил все картинки, которые поломались после того, как dropbox закрыл public фолдеры. Красота!
dastapov: (Default)
Сказал сделать импорт всего, importer отругался, что "Unable to load FOAF data", но вроде все из профиля втянул. Что ему не нравиться - неясно, в ЖЖ по ссылке /data/foaf все отлично отдается.

Взял ljdump.py отсюда, добавил два патчика отсюда и выкачал им все из ЖЖ и из dreamwidth.

С помощью bash и patdiff сравнил выкачанное, наколхозив вот такой скрипт:

#!/bin/bash
lj="$1"
dw="$2"
for l in ${lj}/L-* ; do
    l_url=$(xmlstarlet sel -t -v "event/url" -n $l | grep -o '[0-9]*')
    d=$(ag -l "/${l_url}</import_source" ${dw})
    d_url=$(xmlstarlet sel -t -v "event/url" -n $d | grep -o '[0-9]*')    
    echo "$l (${l_url}.html) vs ${d} (${d_url}.html)"
    [ -z "$d" ] && { echo "cant find dw post for $l"; exit 1; }
    patdiff -ascii <(xmlstarlet sel -t -v "event/event" -n $l | \
              sed -re 's#lj (user|comm)="?([^ &"]*)"?[^&]*&gt#user site="livejournal.com" \1="\2"\&gt#g') \
            <(xmlstarlet sel -t -v "event/event" -n $d)
done


Страшный sed из-за того, что в ссылки на пользователей ЖЖ dreamwidth добавляет site="livejournal.com" и обязательные кавычки вокруг имени пользователя.

Похоже, не переехало только embedded video, а все остальное - пучком. Настроил кросспост в ЖЖ. Что еще я пропустил?

Что DW делает с френдами, которые тоже переехали сюда? Как-то их вычисляет/добавляет, или нет?
dastapov: (new)
Сделал на день рождения жены квест. Кто хочет, может попробовать свои силы тут.

Комменты скринятся

UPD 1:
Я css и javascript/DOM не умею на уровне "читаю со словарем, сталкиваюсь раз в два года", поэтому все простенькое и страшненькое

UPD 2:
Судя по некоторым комментариям, кажется, что там один майнсвипер. Это не так :)

UPD 3:
Первыми на финише отметились:
  • catap
  • x
  • swizard
dastapov: (new)
Организаторы выложили результаты

Моя скромная команда сползла с 19-го места на 22-е (все равно, я считаю, офигенно для этого подхода к решению).

Первое место, как и в прошлом году, взяли Unagi и вот тут можно посмотреть, как работает их солвер.

Lightning round полностью вручную взял jabber.ru, как уже было, кажется, в 2007-м году.

Butt Naked

2016-08-18 10:56 pm
dastapov: (new)
Ходил на днях в театр смотреть The Book of Mormon. Это такая религиозная сатира про мормонов, как очевидно из названия. Авторы - Трей Паркер и Мэтт Стоун, которые South Park. Сам спектакль более умеренный, чем любая серия South Park, но "талант не пропьешь", и весь спектакль там ездят паровым катком по религии вообще, мормонам в частности, по американцам, рассовым стереотипам и т.д. и т.п.

Все герои, и главные, и второстепенные, имеют вполне обычные имена - за исключением полевого командира в Уганде, который называет себя General Butt-F@#$ing-Naked. Объясняет он это тем, что сейчас он тут будет грабить и убивать, а кто осмелиться сказать слово поперек - с тем он разберется лично, немедля голову долой и все такое -- и делать это он все будет в чем мать родила, отсюда и имя. Удивительно, правда, то, что дальше по ходу пьесы ни имя, ни его поведение никак не обыгрывается и его с таким же успехом могли бы звать Джон Смит. Ну, вполне в духе South Park, ладно.

По пути домой я читаю википедию про спекталь, реакцию на него мормонов и т.п. и тут ВНЕЗАПНО.
dastapov: (new)
Предыдущие части : день первый, день второй.

На третий день (традиционно, в 10:00) я обнаружил, что сполз до 42 места (из около 200 активных участников). Какое-то время ушло на вытягивание новых задач и разглядывание того, как другие участники решают мои задачи. В 11:00 я вернулся к написанию солвера.Read more... )
dastapov: (new)
(предыдущая часть, следующая часть)

Первый день у меня закончился тем, что я пробовал сделать модель "бумаги", которую можно будет "гнуть", и потом извлекать из нее результаты сгибания в виде, пригодном для отправки на сервер в качестве решения.Read more... )
dastapov: (new)
(Это первая часть рассказа, а вот вторая и третья)

В этом году ICFPC был про оригами.

Вам дается контур сложенной из бумаги плоской фигуры (в виде координат точек) и вы должны ее сложить. Для тех, кто уже офигел и не знает, за что хвататься, дается дополнительная подсказка - еще одна "картинка", показывающая все ребра и складки в этом контуре -- представьте, что вы смотрите оригами "на просвет", однако при этом все точно совпадающие складки и ребра сливаются воедино. Организаторы называли это "контуром" и "скелетом". Еще про оригами известно то, что оно сложено из листа бумаги размером 1x1. Read more... )
dastapov: (new)
По такому поводу можно вылезти из спячки :)

Через два дня (в пятницу, 6 августа) начинается ICFPC-2016. В прошлом году у меня поучастовавть не получилось, предыдущие два были (по моему мнению) так себе. Посмотрим, что будет в этом году.

PS: если вдруг кто еще не знает, что такое ICFPC, можете почитать мои старые отчеты, начиная с этого, они все под тэгом icfpc.

Ох 26

2016-03-09 04:43 pm
dastapov: (new)
В хексах симпатичнее, чем в десятичной :-)
dastapov: (new)
Я тут потратил несколько вечеров, чтобы написать програмку под андроид. Очень простую (3 активности, пять кнопочек, два calendar view, одна база sqlite). Остаток поста - о том, какие грабли мне попались по пути, и кто, интересно, их там разложил?

Кто пишет под андроид - может почитать и поржать. Кто не пишет, но собирается - может почитать и подумать, так ли оно ему надо? Кто пишет под iOS - может почитать и позлорадствовать, что с Apple все по-другому. Поехали. )
dastapov: (new)
Во-первых, поздравляю человека и парохода jabber.ru с победой в lightning раунде.

Во-вторых, на этом месте мог бы быть отчет, но писать особо не о чем. В этом году я пробовал что-то сделать самостоятельно, но буквально сразу увидел (кажется, на IRC) слово SECD и в результате отвлекся на чтение книжки Хэндерсона "Functional Programming Application and Implementation", которой явно вдохновлялись организаторы. В результате я узнал много нового и интересного о том, как можно использовать camlp4, чтобы реализовать "компилятор" из сделанного тобой DSL в OCaml, а также о том, что такое SECD-машина (как она дана у Хэндерсона, а не урезанный вариант из задачи этого года).

После возни с полноценной SECD-машиной мотивация делать обкоцанную SECD-машину у меня как-то пропала, и я для себя на этом ICFPC-2014 закрыл. А что у вас?
dastapov: (new)
Сегодня начинается ICFP Contest, также известный как ICFPC.

В этом году я ни с кем не кооперировался, никак не готовился, и вообще собираюсь писать на ocaml :) А вы?

PS: если вдруг кто еще не знает, что такое ICFPC, можете почитать мои старые отчеты, начиная с этого, они все под тэгом icfpc.
dastapov: (new)
Тут в связи с известными событиями зазвучала фраза "Ну так украинцы сбивали же уже самолет в 2001-м году, вот сбили еще один".

Я удивился, т.к. мои личные воспоминания сводились к "что там именно произошло - так никто и не узнал".

Ну, и я пошел почитать. Самолет из 2001 года - это вот этот. Воспоминания меня не обманули - что именно там произошло так и не было достоверно установлено.

Самые интересные материалы, которые я прочитал, были взяты по ссылкам из википедии и с сайта одного человека, но их содержание не дает особого повода усомниться в достоверности:
1. Заключение украинской экспертной комиссии (российской в инете не нашел)
2. Дискуссия с адвокатом, представлявшего Украину

Т.к. заключение - на украинском, будет уместно сделать короткий пересказ выводов.
1. Невозможно установить, где конкретно произошел взрыв относительно корпуса самолета
2. Недостаточно данных, позволяющих отнозначно и без сомнений установить полную траекторию полета ракеты вплоть до момента ее подрыва
3. Пусковая установка была сконфигурирована на стрельбы по мишеням на дальности до 90 км, ее радар не видел самолет. Сопровождать несколько целей одновременно комплекс не в состоянии. Самостоятельная смена мишени исключается исходя из конструктивных особенностей комплекса и взаимного расположения траекторий самолета и мишени
4. ТТХ ракеты не позволяют ей долететь мимо мишени и долететь до самолета за время, необходимое для его поражения
5. Траектория, приписываемая ракете в заключениях Международной Авиационной Комиссии (МАК), невозможна исходя из конструктивных особенностей ракетного комплекса
6. Обломки самолета найдены были. Обломков ракеты найдено не было.

UPD: Примерно то же самое от самого адвоката: https://www.facebook.com/andriyko/posts/10152563072998841?fref=nf

UPD 2: я вижу, что надо изложить мое мнение подробнее, чтобы не было разночтений. Я не пытаюсь утверждать, что не было самолета, или не было ракеты, или ракета не попала в самолет. На вопрос "что же там произошло?" у меня ответ "кажется, попали ракетой в самолет, т.к. нету никакого другого разумного объяснения, но в то же время нет (у меня, по крайней мере) удовлетворительного ответа на вопрос, как именно это произошло?"

Даже признание тогдашнего украинского министра обороны, что мол да, это скорее всего наша ракета не сопровождалось объяснением того, как же это получилось.

Из широкой публики этого так никто и не узнал (и, думаю, не узнает). Я попробовал найти ответ на этот вопрос самостоятельно, и понял, что отчета МАК в сети нет (и как я понимаю - полного отчета и не было, была только выжимка на сайте, отчет киевских экспертов задает вопросы, и нет других документов, которые бы на них отвечали; учения были совместные, полигон был российский, ракетный комплекс был украинский, наблюдатели были отовсюду, воздушное пространство было российское ...

Короче, как правильно написал [livejournal.com profile] arkanoid, "у всех случайно сбитых военными самолетов много общего ... слишком много вранья".
dastapov: (new)
Смотрите, какой интересный документ. В нем много технических терминов без объяснения и канцелярита, поэтому попробую рассказать своими словами.

Если коротко, то написано, что российский оператор Rostov Cellular Communications (он же Tele2) сделал что-то такое эдакое, после чего звонки ряда украинских абонентов (МТС Украина) маршрутизировались ... через узлы сети Tele2. Это - как минимум - дает Tele2 полные метаданные о звонках (кто, кому, когда, как долго, ...), а как максимум - позволяет слушать исходящие звонки.

Справедливости ради надо сразу сказать, что атака совсем не МТС-специфична, и могла случится с любым другим оператором.

Как же это стало возможно?Read more... )
dastapov: (new)
Если вдруг кто еще не знает, то в этом году ОНО будет с 25 по 28 июля. Кто собирается участвовать?
dastapov: (new)
Готов принимать поздравления в связи с 200 летием со дня рождения Тараса Шевченко. Ну и я где-то там рядом примазался ;)
dastapov: (Default)
(ЖЖ сожрал мой пост и не подавился, повторяю его)

Если вы "пропали", и у вас есть телефон

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

Для андроида есть приложения вроде этого, которые могут отправлять "тревожный SMS" с вашими кординатами. Приложение по ссылке отправит SMS после 2-5 кратного нажатия на power. Disclaimer: я видел и другие приложения, но ни одно из них не тестировал.(дальше еще много всего) )
dastapov: (new)
Люди, которые находились на улице Грушевского в Киеве двадцать первого января 2014 года, получали странные SMS-ы, в которых сообщалось о том, что они "зарегистрированны как участники массовых протестов".

Операторы сотовой связи все как один заявили, что они тут ни при чем. С тех пор я получил множество писем с вопросом о том, что бы это могло быть, как это технически можно осуществить и т.п. Т.к. сам я этих SMS-ов в глаза не видел и даже не общался лично с людьми, их получавшими, мне нужные какие-то исходные данные. Если вы получали такие SMS, не пожалейте минуту времени и заполните форму.

UPD: если у вас есть возможность запросить у своего оператора детализацию событий, посмотрите, если там эти SMS-ы

UPD2: Таки IMSI catcher: http://proit.com.ua/news/telecom/2014/01/24/183526.html
dastapov: (new)

Эпиграф



Нас было 7 человек. У нас было 20 модулей на хаскеле, приватный репозиторий на гитхабе, 6 веток в этом репозитории, ImplicitParams, MagicHash и UndecidableInstances в коде и одна highmem нода на амазоне, а также hangouts для общения, юнит-тесты, просто тесты, google docs для заметок и куча статей про SMT-солверы. Не то что бы мы это все использовали, но на ICFPC ты ищешь в инете всякую дурь и бывает трудно остановиться. Единственное что вызывало у меня опасение - это SMT-солверы. Нет ничего более беспомощного, безответственного и испорченного, чем человек, читающий статьи в ходе контеста. Но я знал, что рано или поздно мы подсядем и на эту дрянь.

Краткое содержание для тех, кому лень читать все



Наша команда называлась "(unmatched", и состояла она из меня, Жени [livejournal.com profile] jkff, Ромы ro-che.info, Вани [livejournal.com profile] _navi_, Саши [livejournal.com profile] sorhed, Макса (которого нет в ЖЖ) и еще одного Саши [livejournal.com profile] wizzard0.

Мы набрали 1301 из 1820 возможных, из них 457 в lightning round, т.е. в первые 24 часа (UPD: и, похоже, заняли там 10 место! Аааааа!). Мы заняли место между 11-м и 25-м, но еще не знаем, какое конкретно.

Мы писали на Haskell и вот наш репозиторий.

Спасибо моим соратникам - вы все молодцы и умницы! Традиционное спасибо моей жене [livejournal.com profile] yulanta за моральную и прочую поддержку :)

А теперь - длинная история про то, как дело было.Read more... )
dastapov: (new)
В российских СМИ пишут, что за пассажирами метро будут следить при помощи SIM-карт (раз и два).

Утверждается, что "... Система будет работать следующим образом, рассказывает начальник оперативного отдела: когда пассажир пройдет в зоне действия датчика — ее радиус около 5 м, — система зафиксирует, что мимо пронесли SIM-карту с определенным номером. Если карта находится в розыске, система автоматически проложит маршрут ее передвижения и передаст информацию на пульт дежурного."

Как же это технически может быть реализовано?Read more... )
dastapov: (new)
Привет.

Мне тут пишут про то, что Карстен Нол нарыл очередную дыру (и таки да!). Правда, почему-то присылают при этом бестолковые ссылки типа вот этой.

Так вот, бестолковые ссылки читать не надо. Надо читать либо первоисточник, либо журналистов, которые умеют копать и думать самостоятельно.

Краткое изложение для тех, кому лень читать многабукв.Дырка есть, но как всегда с дырками - есть  )
dastapov: (new)
Недавно один мой коллега Н принес на работу головоломку Bedlam cube. А другой мой коллега Д заинтересовался и стал его складывать.

Головоломка, надо сказать, действительно непростая, и Д мучался с ней больше недели. В конце-концов у него получился аккуратный кубик с небольшой дыркой, и еще одна деталь, которую надо было когда-то раньше засунуть внутрь, а теперь уже даже и непонятно, что с ней делать.Read more... )
dastapov: (new)
Обращаюсь за помощью к коллективному разуму.

Есть у меня NAS с RAID-ом. На нем - ~400 Gb Ценных Данных. Хочется их на куда-то сбекапить off-site, на случай непредвиденных обстоятельств - если вдруг RAID накроется целиком и сразу весь.

Хочется, чтобы:
1)Лить бэкап можно было прямо с NAS-а (а там - linux и ARM), то если либо по rsync, либо по ftp/ssl или sft, либо еще что-то подобное, и уж точно не какой-то GUI-клиент.
2)Все, что я лью туда, должно быть зашифровано (допустим, каким-то симметричным алогоритмом с большим ключом).
3)Версионированиие и прочие модные штуки (доступ с мобилки, шаринг файлов, фото-альбомы(!)) - не нужны.
4)Супер-пупер надежность с 29-ю девятками после запятой - тоже не нужна. Мне нужна разумная страховка на случай, если с моей стороны случится что-то маловероятное, а не основное средство для бэкапа. Для меня будет достаточно, если они скажут "извини, тут с вот этим файлом беда вышла - надо перезалить".
5)Инкрементальные бэкапы - обязательны

Вроде ж не много хочу, да? И вот что выяснилось ... )
dastapov: (Default)
Вот они, родимые.

Мы - на позорном 131 месте. Где-то за 20 минут до финиша, когда мои товарищи по команде вырубались после бессонной ночи, возник вопрос - какой же солвер сдавать в качестве финального?

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

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

На мелких картах второй тред успевал перебрать все (или почти все) и выбраться из практически любой ловушки. На больших же картах он рисковал со временем пожрать всю память и быть убитым OutOfMemory Killer-ом (который живет в ядре linux). Если бы это произошло, то мы бы на такой карте не набрали ничего. Осознание этой засады пришло слишком поздно, и сделать какой-то монитор/ограничитель мы уже не успевали.

Забоявшись out of memory, я убедил полусонных Женю и Ваню, что сдавать надо первый вариант. В результате мы вылетели в первом раунде.

Второй вариант набрал бы как минимум 7200 очков (я запускал его на оценочных картах с лимитом в 30 секунд, а за 150, думаю, он мог бы набрать и больше) и мы были бы где-то в районе 50-60 месте. Ну, как известно, если бы да кабы ... :) Мораль придумайте сами.

Посмотрим, что будет в следующем году.
dastapov: (Default)

Обязательное вступление: что это вообще такое?


Каждый год случается международная конференция ICFP - International Conference on Functional Programming. К этой конференции приурочен програмерский конкурс под названием ICFPC. Несмотря на название конференции, участвовать в контесте может любой желающий, и пользоваться можно любыми языками, не только функциональными, кроме того - участники могут объединяться в команды. ICFPC отличается от соревнований типа ACM и topcoder тем, что он менее "заточен" под какие-то конкретные языки или наборы навыков, а задачи в нем прикольные и позволяют получить удовольствие не только от победы, но и от участия.

Я стараюсь принимать участие во всех ICFPC, и о том, как это было в прошлые годы, можно почитать в этом журнале по тэгу icfpc.

Подготовка


В этом году я заранее вписал даты в календарик, взял на работе отгул, и договорился с Женей [livejournal.com profile] antilamer и Ваней [livejournal.com profile] _navi_ о том, что мы будем выступать одной командой и писать на Haskell.

Моя жена собиралась где-то в это же время поехать с детьми на историческую родину, и мы подгадали поездку так, что на время ICFPC я остался один-совсем-один. Если быть точным, за 4 часа до старта я был в аэропорту и провожал их на самолет, и вернулся домой за 5 минут до начала.

Подготовка, таким образом, свелась к заливанию ssh-ключей на bitbucket (где у нас был git-репозиторий) и обмену контактами с остальными участниками команды :)

Старт и условие

Read more... )
dastapov: (Default)
Дискуссии про то, что можно, а что нельзя сделать определенным техническими средствами очень часто скатываются в унылый срач, в котором стороны по кругу повторяют одно и то же из-за того, что:
1)Технические проблемы обсуждаются на уровне самой простой возможной реализации
2)Фичи и возможности обсуждаются на уровне навороченного сервиса или коммерческого продукта
3)Разрыв в сложности и требованиях к качеству между (1) и (2) одной из сторон напрочь игнорируются.

Чем меньше человек шарит в обсуждаемом, тем больший разрыв между (1) и (2) у него получается, и тем охотнее он его игнорирует.Напрмер, СМС для оповещения населения ... )
dastapov: (Default)
В твиттере smart_haos пишет (после недавнего наводнения в Кубани): "У сотовых операторов есть информация по координатам абонентов. Почему МЧС не умеет использовать этот ресурс для адресных оповещений?"

1)Потому, что SMS - негарантированный сервис. Ни скорость доставки, ни сама доставка - не гарантированы. То, что обычно все доходит быстро - это, грубо говоря, просто "везет". Пока не начались перегрузки сети, например.Read more... )

Profile

dastapov: (Default)
Dmitry Astapov

July 2017

M T W T F S S
     12
3456789
1011 1213141516
17181920212223
24252627282930
31      

Syndicate

RSS Atom

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags