пятница, 5 апреля 2013 г.

Игра "Тук-тук-тук" от Ice-Pick Lodge

Первое что всплывает в голове при упоминании студии Ice-Pick Lodge - это игра "Мор.Утопия". В свое время эта игра произвела на меня неизгладимое впечатление. Она была настолько необычна и настолько увлекательна. Так же эта студия выпустила еще несколько необычных проектов, но сейчас не о них.


Сейчас я бы хотел упомянуть о новом проекте Ice-Pick Lodge игре "Тук-тук", сбор средств на создание которой проходил на Kickstarter'e, где я собственно и узнал о ней. Сейчас не будем о том, что я слоупок и пропустил сбор средств и т.п. Сведем разговор к тому что разработчики обещают выпустить игру этим летом. Игра будет точно доступна на Windows и Mac OS, скорей всего на IOS и Android, а так же на Linux, при условии что Unity 3D обеспечит заявленную поддержку. Подробней можно почитать в интервью.

Вот видяшкa:


Еще немного ссылочек:
  - проект на кикстартере,
  - сайт игры,
  - сайт Ice-Pick Lodge;

среда, 3 апреля 2013 г.

Криптография часть 1 на сайте Coursera

С 25 марта 2013 года начался курс по криптографии от  Дэна Бони(Стенфордский университет). Как следует из описания - этот курс поможет вам узнать внутренности криптографических примитивов, а так же расскажет как применить полученные знания на практике.



Описание курса(вольный перевод информации с сайта Coursera):
Криптография является незаменимым инструментом для защиты информации в компьютерных системах.  Студенты узнают, как рассуждать о безопасности криптографических конструкций и, как применить эти знания для реальных приложений. Курс начинается с подробного обсуждения того, как две стороны, имеющие общий секретный ключ могут безопасно общаться в то время как мощный противник будет их подслушивать и манипулировать с данными. Мы рассмотрим много работающих протоколов и проведем анализ ошибок в существующих системах. Вторая часть курса посвящена техникам использования открытого ключа которые позволяют двум и более сторонам создать общий секретный ключ. Мы рассмотрим соответствующие теории чисел и обсудим шифрование с открытым ключом, а так же основы обмена ключами. На протяжении всего курса студенты будут решать множество интересных открытых проблем этой области.

Курс включает в себя письменные домашние задания и лабораторные по программированию. Курс является самодостаточным, однако слушателю будет полезно иметь общее представление о теории вероятностей.

Курс только начался(прошла только 1 неделя) и вы еще в состоянии догнать остальных. Так же обещают скоро запустить Криптография часть 2.

P.S. Еще немного про этот курс есть здесь.


пятница, 29 марта 2013 г.

Послать самому себе пакет данных через сеть

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


Предположил что у нас есть 2 сетевых карты, а следовательно и два сетевых интерфейса:
  - eth0 ip 192.168.10.1
  - eth1 ip 192.168.10.2


 Для начала, я попробовал решить эту задачу самым простым(и первым) способом пришедшим мне в голову. Создать сокет и привязать его к сетевому интерфейсу eth0(192.168.10.1) и посылать пакеты на 192.168.10.2. Но как оказалось так просто ядро Linux не провести, показания ifconfig говорили что пакету идут через сетевую петлю lo.

После продолжительного поиска я наткнулся на патч для ядра от Julian Anastasov(не стал пытаться переводить на русский, вдруг ошибусь) Send-To-Self interface flag. Который позволял отправлять самому себе пакеты через внешнюю сеть. Автор постоянно обновляет этот патч. Основными преимуществами заявленными автором являются:
  - данная фича может быть использована любыми приложениями без изменения кода
  - фича не ограничивается 2 интерфейсами
  - фичу можно использовать с несколькими IP адресами
  - фича не зависит от состояний rp_filter'a и arp_filter'a
  - подробней и остальное тут

Что удобно в пропатченном ядре функция такой маршрутизации включается и отключается на лету из userspace'a. Вот так:


# Включаем
echo 1 > /proc/sys/net/ipv4/conf/eth0/loop 
# Выключаем
echo 0 > /proc/sys/net/ipv4/conf/eth0/loop

понедельник, 18 марта 2013 г.

Закрытие сервиса Google Reader с 1 июля 2013


Недавно корпорация добра объявила о закрытии Google Reader 1 июля 2013 года. Всем пользователям предлагается забрать свои данные из Google Takeout в виде архива с файлом: "subscriptions.xml".  Закрытие сервиса Reader это, неприятно, но так как есть экспорт, то должен быть и импорт на аналогичных сервисах. Итак мы имеем следующие бесплатные альтернативы Google Reader
  Netvibes: богатые настройки, можно импортировать\экспортировать RSS-фиды, есть возможность организации фидов в категории, существует мобильная версия веб-сайта. 
   Feedly: есть приложение для iOS и Android и расширение для Firefox. Пытается делать их наших RSS-фидов журнал, что в принципе удается в браузере, но выглядит странно на умнофонах 
  Flipboard: аналогично Feedly делает журнал, есть приложения для iOS и Android. 
  Pulse: веб-сервис, который пытается организовать наши RSS-фиды в виде плиток. Приложения для iOS и Android прилагаются.
  NewsBlur: сервис, позволяет следить за обновлением RSS-фидов в реальном времени, приложения для iOS и Android прилагаются. Бесплатная версия имеет урезанный функционал.

воскресенье, 17 февраля 2013 г.

Калибровка хронографа часов Romanson

Оставлю эту заметку для себя... На мои часах Romanson время от времени сбивается стрелка хронографа и сегодня мне пришлось потратить некоторое время на поиски решения этой проблемы в инете т.к. я потерял справочник который шел к часам.

Так вот нужно выдвинуть заводной механизм до конца, зажать обе клавиши на пару секунд, а дальше верхней клавишей выставить правильное положение.

суббота, 26 января 2013 г.

Слабое связывание или weak linkage

Часто(почти всегда), при разработке ПО для микроконтроллеров, приходится иметь дело с прерываниями. И если вы в работе вы используете SDK от производителя, то скорей всего замечали что callback функции для прерываний уже реализованны, но это абсолютно не мешает вам их переназначить на нужные вам.

foo.c
int foo(void)
{
// ...
return 1;
}

main.c
int foo(void);
int main(void)
{
foo();
while(1);
}

При линковки вы скорей всего увидите что-то похожее на это:
Error: Symbol foo multiply defined (by main.o and foo.o).
Target not created

Но почему же таких ошибок нет при компиляции проектов с этими SDK?

Потому что для реализации callback функций прерываний используется слабое связывание (weak linkage).

 - пример с weak функцией 
weak_foo.c
_weak int foo(void)
{
// ...
return 1;
}

main.c
int foo(void);
int main(void)
{
foo();
while(1);
}

теперь линковщик это спокойно проглотит и у нас будет реализация callback функции "по умолчанию" и в случае если мы захотим заменить эту реализацию на свою, то нам надобудет всего лишь реализовать эту функцию по своему

main.c
int foo(void)
{
  return 3;
}
int main(void)
{
  foo();
  while(1);
}

понедельник, 19 ноября 2012 г.

qBittorrent замена uTorrent

Не для кого не секрет что uTorrent с каждой новой версией превращается в УГ. В поисках замены наткнулся на эту замечательную программу.

Основное преимущество (для меня)qBittorrent перед другими клиентами, это сходство интерфейса с uTorrent,  кросс - платформенность  т.к. я являюсь обладателем  небольшого зоопарка ОС и открытость исходных кодов. Немного информации с сайта:




  • Интерфейс схожий с uTorrent
  • Хорошо интегрированные и гибкие плагины поиска
    • Поиск по самым популярным BitTorrent базам(поисковикам)
  • Доступны все расширения протока Bittorrent
    • DHT, Peer Exchange, Full encryption, Magnet/BitComet URIs, ...
  • Удаленное управление по средствам веб-интерфейса
  • Расширенный контроль над трекерами, пирами и торрентами
  • UPnP / NAT-PMP поддержка перенаправления портов
  • Доступен на ~25 языках (поддержка Unicode)
  • Наличия инструмента для создания торрентов
  • Продвинутая поддержка RSS с фильтрами (включая regex)
  • Планировщик ширины канала
  • IP фильтр (совместимый с eMule и PeerGuardian)
  • IPv6 совместимый
  • Последовательная загрузка (aka "Загрузка по порядку")
  • Работает на следующих платформах: Linux, Mac OS X, Windows, OS/2, FreeBSD
В целом программа отличная, а ее открытость позволяет добавлять нехватающие фичи, чем в принципе я время от времени и занимаюсь! Кстати написанна он на Qt.

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

qBittorrent имеет встроенный торрент-трекер, что позволит раздавать торренты людям непосредственно с своего компа, без выкладывания торрента на интернет трекеры.