GrandTorrino или второе дыхание Torrero
пост написан и отправлен в печать 2011-05-29 примерно в 15:01
Малопонятный заголовок, согласен, но позвольте мне объясниться: когда-то в прошлом, будучи под воздействием опиатов или каких-то других тяжелых наркотиков, позволяющих мне почувствовать себя чуточку счастливее, я сделал проигрыватель видеофайлов, распространяемых по пиринговым сетям протокола torrent без необходимости их полной загрузки. В двух словах, ждете 10% подгрузки и потом смотрите себе киношку без необходимости ожидания загрузки остального, вполне удобно, особенно для всяких там сериалов. Но, как и всё, что я делаю бесплатно и под воздействием галюциногенов и эйфоретиков, работало это из рук вон хуйово -  были проблемы с линейным алгоритмом загрузки, когда миниатюрные куски по 1-5 килобайт выпадали из piecepicking query, а декодер плеера на этом захлебывался за милую душу. Были проблемы с mplayer-ом, который очень нехотя цеплялся через hid windows forms компонента. Но, как ни странно, нашлись и дорчитатели этого бложика, которым очень даже понравилось. И вот они начали забрасывать меня багрепортами, мол не работают сабтитры, нельзя выбрать звуковую дорожку, нельзя выбрать, какой именно файл из торрента смотреть. На все это я отвечал, что удивительно, что оно вообще работает, любезно предлагая предоставить исходники. Но, увы, энтузиастов, готовых хоть сколько-то помочь в разработке, в наличии не оказалось, а письма все продолжали капать и капать - давать дельные советы, как известно, это вам не мешки ворочать. Ну теперь можно все вышеперечисленное, короче говоря. Открываю вам страшную тайну, для себя месяца 2-3 тому назад я написал отдельную версию, так сказать, исправленное и облегченное издание, лишенное большинства недостатков оригинала. И даже основного - ужасное GUI было начисто заменено ламповым черным консольным окном. К тому же, был полностью переписан алгоритм загрузки, он работает чуточку медленнее по причине необходимости подтягивать куски последовательно, зато файлы не ломает и позволяет даже использовать перемотку в пределах загруженного отрезка видео файла (все еще в экспериментальном режиме, как я не пытался сделать byte by byte, все равно идет разбивка на куски и параллельная загрузка, в этом весь битторрент). Называется эта версия GrandTorrino и, билдани я эту версию году так в 2007, всем мог бы говорить, что фильм Клинта Иствуда назван именно в честь нее. Но, кажись, все наоборот. Использование очень простое - drag and drop torrent файл на exe-шник GrandTorrino, ждем 10% буферизации и готово. Если в торренте 1 файл - все пройдет само собой, если больше 1го - вас спросят, какой именно вы хотели бы посмотреть. Все хоткеи для mplayer можно узнать в прилагаемом файле mplayer.html, они немного необычные. Скачать последнюю версию можно тут. Для работы необходим .net framework 3.5, и запас алчности, позволяющий вам воровать чеcтно заработанные деньги из дырявого кармана нищих правообладателей. 

А теперь, давайте по сути. Мне очень нравятся подобная идея - нарушение авторских прав без ожидания и очень печалит факт отсутствия нормальной реализации. Нет, конечно моя версия работает и с поставленной задачей справляется, но хотелось бы чего-то большего, интуитивно-удобного и приятного, а у меня для для такого не хватает ни знаний, ни времени, ни мотивации - работает же и сейчас, зачем мне что-то большое? Так вот, я отдам все исходники по запросу на email или в скайп, указанный в заголовке этого блога. Вы сможете делать с ними все, что душа пожелает - продавайте, воруйте, убивайте, делайте стартап, но я всегда должен буду иметь доступ к исходникам, природное любопытство и все дела. Написано все на C#, код конечно не ахти какой, но я постараюсь все приаккуратить к передаче, чтобы стыдно не было моим стареньким учителям информатики, которых у меня конечно же не было. В качестве проверки, что вы не какой-то хер с горы, вам нужно будет показать технику гроула рассказать, как можно рассчитать необходимый процент буферизации, имея скорость загрузки за последние 10 секунд, вес файла и его аудио-видео битрейт и как определить, что проигрывание идет быстрее скачивания файла с помощью стандартного mplayer вывода. А вообще, шучу конечно. Без проблем вышлю и так + модифицированную библиотеку MonoTorrent в довесок. Спасибопожалуйста.

Про природу бесплатного ПО и копирастов
пост написан и отправлен в печать 2011-05-19 примерно в 11:01
Очень давно пылился этот пост в самых глубоких черновиках, решил наконец-то его опубликовать, особенно в разгар патентных воин между производителями и эпического многоэтажного провала Sony с падением их PSN и сливом всей конфиденциальной информации товарищам из "анонимной хакерской группировки", он мне кажется по-особенному актуальным. Так вот, с появлением интернета многие товарищи, сидящие на толстенных мешках с деньгами, почувствовали себя как-то ближе к земле по причине уменьшения размеров этой самой поджопной прокладки, отделяющей их от 99,9% остального населения Земли. Особенно это применимо к ребятам из звукозаписывающей и фильмотранслирующей области, а еще - создания игр и многофункционального профессионально ПО. Нет, конечно определенные предпосылки к тому, что нужно что-то менять в логике дистрибуции своих продуктов, зародились задолго до интернетов с их napster-ами и torrent-ами, а примерно во времена первых магнитофонов, которые могли переписывать аудио и видео кассеты. Вот как раз в эти самые времена и появились первые отговорки от подсознательных проявлений совести, мол копирование - не воровство ни разу, а лишь размножение того, что принадлежит тебе по праву. Об этом и хотелось бы сегодня порастекаться мыслью по древу.

Существуют 3 категории людей, утверждающие, что копирование - не воровство, а все, что создано человеком, должно принадлежать человечеству (вы должны понять, я сильно упростил или даже извратил основные идеи, но для данного поста нам хватит и этого): IT-хиппари, нищеброды и адвокаты основателей The Pirate Bay или других подобных сервисов, влетевших по крупному. И если с последними все ясно: юристы в нашем мире хуже портовых безносых шлюх, это я вам как видавший виды выпускник юридического говорю - субъективная оценка только мешает, защищай интересы заказчика, а не давай им моральную оценку, учили нас преподаватели, то вот на первых двух нужно остановиться. IT-хиппари - отдельная каста  перельманов-от-программирования (ну или рисования, музыки и так далее), которым, собственно, совершенно не важен коммерческий успех результата их созидания - они работают за идею или тщеславия ради, мол ты отчисленный за прогулы студент MIT-а, а твоим продуктом будут пользоваться миллионы (и именно такие становятся миллионерами, как это ни странно, амбиции, неиспорченный лекционным материалом мозг и умение выйти за академический уровень мышления много важнее знаний, наверное). Хотя чего там говорить, ведь даже сама концепция open source противоречит базису современного экономического мироздания - теории прибавочной стоимости, которая, в общем ее виде, гласит, что цена готового продукта должна равняться цене привлеченных ресурсов, потраченных на его изготовление, плюс, грубо говоря, тот самый навар, который помогает собственнику накапливать определенный капитал и развивать производство или же, что больше применимо к национальным особенностям ведения бизнеса, развивать собственный автопарк (Энгельс сейчас в гробу вращается со сверхзвуковой, наверное, услышав такое трактование его идей). Что мы имеем с концепцией freeopenware? Стоимость ресурса, а именно человеческих трудочасов, не учитывается, хотя спрос на знания определенных идеологов концепции бесплатного и открытого программного продукта на рынке очень высок, и, в то же время, результат не стоит абсолютно ничего и распространяется среди огромного количества субъектов, не принося создателю ничего, кроме вышеуказанной знаменитости, щекотания тщеславия своего разрастающегося эго не признаного гения и, возможно, говорящую строчку в резюме - Линус Торвальдс, Гуидо Ван Россум, Игорь Сысоев тот же - явные тому подтверждения. Все они стали знаменитыми в узких кругах и востребованные на рынке труда именно из-за своего открытого программного продукта. Впрочем, изредка после резкого взлета чего-то бесплатного, автор, проснувшись от идеологического угара альтруизма, внезапно осознает упущенную выгоду и делает жалкие попытки коммерциализировать продукт, предлагая платную поддержку и установку своих продуктов на сервера пользователей, или даже пытается наладить выпуск новых версий под проприетарными лицензиями, например. Чаще всего такие финты ушами не проходит, коммьюнити IT-хиппарей успевает форкануть проект в новый бранч, а оригинальный вариант либо загинается, либо снова отправляется в свободное странствие от разработчика к разработчику, пока не прибьет к берегу стабильного коллектива, ну или пока не утонет. Можно ли говорить, что производство ПО стало сродни теоретической науке или искусству, где художник пишет свои шедевры только потому что он художник, а не владелец модной, раскрученной среди богемы, картинной галереи с хорошими продажами, или музыкант делает свое дело не для продажи дисков, а для себя, для самореализации, так сказать? Я думаю, что да. Многие создают свой программный продукт, пытаясь избежать ошибок или неудобств проприетарной реализации оригинальной идеи, не претендуя на создание какого-либо конкурента, но тем не менее, такие продукты часто обрастают сообществами таких же страдающих, которые общими силами выводят продукт на новый конкурентоспособный уровень. Но так как основная характеристика таких сообществ - хаотичность, результат редко когда может соперничать с оригиналом, все мы понимаем, что тот же Ubuntu никогда не сможет на сколько либо потеснить Windows. И дело даже не в  уебищности криворогого результата, основная причина - отсутствие "пробивных мятных леденцов" в виде мощного рекламного бюджета. Именно поэтому доля Firefox постепенно падает, а Chrome набирает популярность - за плечами детища Google стоит крупнейшая во всем мире рекламная площадка. А Opera как влачила свое жалкое существование с парочкой процентов на десктопах благодаря странам СНГ, так и продолжает тащиться где-то в хвосте. Хотя, если абстрагироваться от бренда, чем один браузер глобально лучше другого? Ничем, но главное правильно уметь подать жаренных жаб чтобы гости восприняли их как деликатес, а не мертвое тушеное земноводное. Но бок о бок с малочисленной сектой IT-хиппарей существует и вторая, более масштабная, категория борцов со здравым смыслом - нищеброды. И если первые генерируют определенный контент, то данная прослойка пользователей рынка ПО является в меру своей материальной бедности, правового нигилизма или же жизненного долбоебизма - черной дырой в глазах производителя. И если с материальной бедностью ничего, увы, поделать нельзя, разве что вводить льготные цены для необеспеченных регионов, то с правовым нигилизмом и долбоебизмом нужно бороться всеми возможными методами. Я всегда пытаюсь объяснить, что покупка ПО ничем не отличается по своей правой природе от покупки там еды или ботинок. Да, возможно люмпену сложно понять, как может что-то, что нельзя потрогать, стоить в 10000 раз больше вещи из близкого ему материального мира, забывая, что на создание той же операционной системы уходит в разы больше ресурсов, чем на создание партии обуви. Еще большим заблуждением является то, что официальная поддержка лицензионного продукта является ненужным балластом в виде пару лишних тысяч в сумме цены. Даже для отечественных программных разработок появляется качественная многоуровневая поддержка, позволяющая в краткие сроки решить возникшие проблемы, уж поверьте, для профильного ПО при решении специфических задач в гугле очень часто увидите фиг с маслом, а не подсказку. Ну и есть долбоебы, которым сколько не рассказывай, что установка пиратского ПО сродни краже булочек в магазине, они все равно мычат: "ну ведь булочки можно в рот положить, а программки - нолики и единички". Ну что с них, долбоебов, возьмешь?

Нужно сказать, что у гигантов области получается подстраиваться под рынок алчных жлобов, заставляя нас хотеть покупать то, что нам никогда и нужным-то не было. Самым удачным примером можно назвать модель "продажи ради продаж" одной яблочной компании. Покупая их железо, вы по сути покупаете окошко в магазин дядюшки Стива. Хочешь музыку слушать? Пожалуйста. Фильмы смотреть? Да без проблем! Сбивать из рогатки птичками свинюшек? Держи на здоровье, но только в нашем Appstore. Я уверен, что еще смогу застать модель сбыта, когда iPad 200 будут раздавать всем бесплатно, лишь бы ты покупал в нашем яблочном окошке приложения для контроля веса своего персидского котика или симуляции оглушающего пердежа в 3d звуке. Второй, набирающей популярность моделью, становится SaaS, которая в принципе исключает возможность re-use толпой того, что купил один человек. Человек уже 80% всего времени сидения перед монитором проводит в окне браузера. Пожалуй, лет так через 5 закачка программного обеспечения в виде exe файла инсталятора будет считаться ужасным моветоном. А может и нет, я не "ведущийаналитик" в одно слово с маленькой буквы, мне сложно строить правдоподобные прогнозы, остается только мечтать. И да, этот пост является одной большой мечтой, в разное время вы могли наблюдать на страницах этого блога различные инструкции по нарушению авторских прав, делающие из меня то нищеброда, то нигилиста, то долбоеба, но после того, как я на самом деле стал участвовать в создании продукта, который продается за огромные деньги корпоративным клиентам, волей неволей пришлось переосмыслить взгляды. Нет, я не стал  копирастом, просто хочу сказать, что нормальный человек должен изредка задумываться, что копирование все же воровство. Возможно, когда мы поймем, что денег стоит не только то, что можно одеть, положить в  рот или поставить на полку, но и интеллектуальная собственность, вот тогда и будет славянский level-up от варваров хотя бы к какому-то средневековью. Мечты, опять мечты.

Torrero Video Player
пост написан и отправлен в печать 2010-05-30 примерно в 12:59
Как-то раз наткнулся я на обсасываемый топик на хабре о софте под названием Torrent Stream. За пафосными фразочками "лучшие и зарекомендовавшие себя программные разработки авторитетных учреждений и команд разработчиков со всего мира и которому по функциональным и эксплуатационным возможностям, на сегодняшний день, нет равных в мире" скрывался легкоуловимый смысл: данное ПО давало возможность смотреть видео с торрентов не дожидаясь их полной загрузки. Как раз это мне и было нужно, вот только оказалось, что техническая реализация немного прихрамывает: все было реализовано в виде плагина к браузеру, все ужасно тормозило и файл с того же лостфильма и огромным количеством пиров слвался очень неспешно, переодически подвисая на "буферизацию". Вот поэтому я и написал свой плеер видео-файлов с торрента с цыганами и пасьянсом. Прошу любить и жаловать: Torrero Movie Stream Player. Ну или просто Torrero.

Кому лень читать дальше - большая ссылка скачать (с автообновлением и плюшками)

А для остальных, продолжим. Как всегда, сперва техническая часть. Написано приложение на С# и WinForms в Visual C# 2010 Express под .NET 3,5. Почему не WPF? Все очень просто, WPF контролсы не имеют своего собственного window handle, что было необходимо для встраивания mplayer-а в окно формы. Перепробывал сотни варинантов, но максимум что удалось получать, это handle окна, а нужен был hwnd панели или текстлейбла. Ну, вообщем, такая канитель. В качестве Torrent библиотеки был выбран велосипед MonoTorrent, который просто божественный. Поддержка на форуме и уровень возможностей позволяет писать все: начиная обычным парсером торрент файлов и заканчивая собственным трекером. Едиственная проблема, это практически полное отсутствие документации. Приходится копаться в исходниках, благо они отлично комментированны. Плеером был выбран MPlayer по следующим причинам: возможность встраивания без activex и прочих финтов ушами, как у VLC например, небольшой размер и встроенные декодеры, возможность проигрывания недокачанных файлов.

Парочка ответов на парочку вопросов. Все это будет бесплатно? Разумеется и даже opensource. Вот только второе будет чуть позднее, в настоящее время код ужасен, некоментирован и захламлен мусором. После парочки рефакторингов открою для анонимного доступа svn проекта. Почему Torrero, что это значит? Значит это производное от слова torero, матадор. Почему? Ну не знаю, хотелось присутствия в названии чего-то похожего на Torrent. Изначальная версия "torrantino", полученная объединением Torrent + Tarantion оказалась уже забита. Будет ли дальше развиваться проект, а что что-то все виснет и лагает? Да, разумеется, планов море. Это и переделать интерфейс, и сделать поддержку проигрывания нескольких файлов в торренте, и еще куча всего, вот только времени у меня в обрез, но в скорости появится отдельная страница, где можно будет смотреть change-лог, планы развития и узнавать об обновлениях.

Если вы нашли ошибку или хотите получить исходники немедленно, пишите мне в твиттер @middlesizetit либо же на почту mail@smirnoff.sumy.ua. Обязательно отвечу всем желающим.

Ломаем карты для Garmin
пост написан и отправлен в печать 2009-12-07 примерно в 19:58
Данный пост написан исключительно для себя даже больше чем другие: периодически сталкиваюсь с просьбами людей залить им нелегальные (каюсь, грешен) карты на их новые GPS навигаторы с предустановленным navalux или visicom датой актуальности где-то близко середины девяностых. Нашего тысячелетия, разумеется, хотя изредка встречаются и исключения. Но это я так, вот в чем проблема, Garmin, как и все жители этой планетки, ведомы стандартными человеческими потребностями: желанием кушать, желанием кататься на дорогой машине и желанием исполнять желания молодой жены, которая за это исполняет их собственные желания. Именно поэтому карты имеют защиту от копирования и распиздюривания в виде кода активации, который зависит от специального id устройства, фазы луны и прочих мистических факторов. К счастью, я расскажу в двух словах (в дохуя словах получилось, как обычно), как это все элеметарно ломается и ставится на устройство. Замечу, что все инструкции универсальны для любых гарминовских навигаторов, в том числе и для мобильного ПО, но тестировалось именно на автомобильном.

Для начала нам нужно найти сами карты. Для Украины я советую аэроскановские карты, для России хороши "Дороги России", для Европы, Штатов и прочих мелких стран загнивающего капитализма можете использовать родные, жармэновские (вот так мы и превратили пендосовскую компанию по французскую), они тоже очень неплохи, хотя и весят безбожно много. Все вышеперечисленное в изобилии есть на торрентах, поэтому на этом останавливаться не будем. Далее, после бессонных ночей, истраченных для загрузки 8 гектар карт Европы, у вас в папке должен лежать либо один файл расширения img, чаще всего именуемый gmapsupp.img, либо куча файлов img и парочка других. Прежде всего нам нужен ваш device id, получить его можно с помощью родной MapSource (служебные - получить идентификатор устройства) либо банальным образом, открыв папку Garmin после подключения навигатора к USB шнурку и подсмотрев этот самый айди в xml файле GarminDevice.xml. Сохраняем эти 10 цифр и переходим к следующему шагу: качаем утилиту GMapTool (линк\зеркало, если отпадет), устанавливаем и добавляем туда наши файлы/файл, далее просто нажимаем на кнопку Info и ищем в выводе значение FID - уникального идентификатора карты по которому мы и будем генерировать кейгеном ключ активации (NB.: фидов в одном файле может быть несколько, записываем все, нам придется генерировать ключ для каждого). Далее самое страшное и противозаконное действие, качаем кейген, в строку Unit ID вводим ID нашего устройства, а во втором дроп-дауне выбираем custom mapset, вводим FID, жмем Generate и с улюлюканьем получаем наш заветный код активации. Последний шаг - добавить этот код активации в наш img файл. Для начала рассмотрим вариант, если мы скачали single file. Переходим на вкладку Write, выбираем Insert unloсk code, пишем наш код активации и тыкаем в Write selected. Копируем полученный файл на карту или во внутреннюю память в папку Map с любым названием латиницей и расширением img. Если же файлов несколько, то добавляем их всех, переходим на вкладку Join, указываем Output file и Add new unlock code, ждем мучительный процесс бережного склеивания кусочков и на выходе получаем опять таки 1 файл. Если что-то не клеится - убирайте это из файл-листа. Вот и все. И не забываем, что картография - сложное, кропотливое и малоприбыльное занятие, лучше купить нужные вам карты, а выбранный метод использовать только во времена голода, сплошной черной полосы и резкого сальдо вашего локального бюджета.

PS: все это понадобилось для навигатора Garmin Nuvi 1310, обзор которого может появиться, а может и нет.

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

Как устанавливать ipa в iPhone
пост написан и отправлен в печать 2009-06-07 примерно в 11:09
Самый распространенный вопрос после покупки айфона - где взять на него ПО. На том же аппсторе очень много разных бесплатных игр и программ, но самое нужное, как обычно, стоит денег. И проблема даже не в этом - лично я готов заплатить несчастные 0.99 - 10 баксов за нужное мне приложение, но с украинскими картами и пейпалом вообще эппл не дружит. Поэтому, маленькая инструкция по джейлбрейку и взлому установочника ПО для отмены проверки лицензии ipa файлов (формат тамошнего инсталлера).Прежде всего, делаем резервную копию вашего телефона, кликнув на backup в контекстном меню значка iphone в тунце. После завершения процесса делаем следующее: нам нужно обновить прошивку до последней версии (2.2.1 на время написание) - это все делается тунцом и никаких трудностей не составляет, если же у вас уже установлена последняя версия, все равно нам будет нужен файл прошивки, который получается следующим образом. Подсоединяем айфоню к тунцу, нажимаем "восстановить", соглашаемся со всеми угрозами и лицензиями и как только начнется загрузка файла - вынимаем шнур из тела и дожидаемся окончания загрузки. Все, вы физически готовы к джейлбрейку.Качаем quickpwn, запускаем и следуем инструкциям. Для iphone gsm вам еще потребуются бутлоадеры, из всех опций нам нужны только Cydia и Unlock (активно только для 2G), ждем окончания процесса джейлбрейка и получаем чистый телефон. Вот теперь вам понадобится wi-fi сеть, подключаемся к ней и в cydia ищем пакет openssh, который успешно и устанавливаем. Теперь на вашем телефоне установлен SSH сервер, что доставляет. Берем любой sftp клиент (мне нравится FileZilla), создаем sftp соединение на ip айфона (можно посмотреть в деталях wi-fi соединения в настройках) с логином root и паролем alpine. Лезем в путь /System/Library/PrivateFrameworks/MobileInstallation.framework и заменяем MobileInstallation скачанным отсюда файлом, выставляем chmod 755. Все практически готово: ребутим телефон. Запускаем тунец и устанавливаем любое бесплатное приложение из аппстора. Это важно, иначе крякнутые приложения запускаться не будут. После этого идем на какой-то сайт, распространяющий ипашки, к примеру appulo.us, дважды кликаем или драгдропим файл в тунец, синхронизируем и радуемся. ВАЖНО: если у вас официально не разлоченый под все операторы европейский iPhone 3G, то после апдейта вам нужно будет установить из cydia пакет yellowsn0w. Правда телефон знакомого разлочить им нифига не получилось, пришлось откатываться до 2.2 со старым baseband-ом. Будут проблемы - пишите мне, помогу разобраться.