You are viewing _adept_

dump -0f - /dev/mind
Я знаю Haskell, OCaml, GSM, эндофункторы и много других страшных слов
Recent Entries 
Что можно найти в этом журнале:


  1. Баечки из жизни IT-специалистов
  2. Рассказы о мобильной связи. Мне можно задавать вопросы о мобильной связи, и я постараюсь на них ответить.
  3. Зарисовки о жизни в Англии
  4. Конкурсы-загадки для IT-шников и не только
  5. Рассказы об участии в конкурсах ICFPC



Если вы хотите прочесть пару записей разных стилей и жанров "на пробу", то можете попробовать: отчет про ICFPC-2006, первоапрельскую шутку про тотальное прослушивание компьютеров через излучение от витой пары и про телепузиков.

Подзамочных записей практически не делаю - смело подписывайтесь внешними RSS-агрегаторами. Если вы хотите читать не все мои посты, а только их часть - можете подписаться на feed, содержащий только посты с тэгом GSM или на feed, содержащий только истории.

Механизм friend-ов в LJ я рассматриваю исключительно как техническое средство удобно читать журналы тех, кого мне интересно читать.

Я тут потратил несколько вечеров, чтобы написать програмку под андроид. Очень простую (3 активности, пять кнопочек, два calendar view, одна база sqlite). Остаток поста - о том, какие грабли мне попались по пути, и кто, интересно, их там разложил?

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

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

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

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

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

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

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

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

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

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

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

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

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

Короче, как правильно написал arkanoid, "у всех случайно сбитых военными самолетов много общего ... слишком много вранья".
Смотрите, какой интересный документ. В нем много технических терминов без объяснения и канцелярита, поэтому попробую рассказать своими словами.

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

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

Как же это стало возможно?Read more...Collapse )
21st-May-2014 09:53 pm - Вот и ОНО :)
Если вдруг кто еще не знает, то в этом году ОНО будет с 25 по 28 июля. Кто собирается участвовать?
9th-Mar-2014 12:24 pm - Хороший повод!
Готов принимать поздравления в связи с 200 летием со дня рождения Тараса Шевченко. Ну и я где-то там рядом примазался ;)
(ЖЖ сожрал мой пост и не подавился, повторяю его)

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

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

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

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

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

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

Эпиграф



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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Посмотрим, что будет в следующем году.

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


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

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

Подготовка


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

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

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

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

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

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

1)Потому, что SMS - негарантированный сервис. Ни скорость доставки, ни сама доставка - не гарантированы. То, что обычно все доходит быстро - это, грубо говоря, просто "везет". Пока не начались перегрузки сети, например.Read more...Collapse )
This page was loaded Dec 27th 2014, 8:04 am GMT.