Мировые события в Интернете и вообще

Мои комментарии на то, что бударажит интернет:
  • Множество Интернет идентификаторов было пополнено сайтом CHI.MP, отличительной особенностью которого является предоставление домена второго уровня для размещения ващей информации (поэтому все имена быстро расхватали), а также мне понравилась реализация многопрофильности. Разработчики продумали не только, что каждый пользователь может иметь несколько профилей, но и возможнось по различному комбинированию уже созданных профилей для формирования объединенного. Дополнительно можно почитать обсуждение проекта в Детском хабрасаду", где я охватил -10 к карме.
  • На машабле обсуждают отключение на твитере автоматического following'a(back friending). Делая это с такой серьезностью, что смешно. Эффект обратной реакции пользователей известен в Рунете , как Тостер и прекрасно существует на простой тупизне пользователей. Поэтому количество спама врядли уменьшится.
  • После просмотра встречи G20 понял одну простую вещь, что замены доллару нет и не будет в ближайшие 20 лет не потому, что мы к нему слишком привязались или американская эконосика надежна, а потому, что эти смешные бумашки уже напечатаны и уже розданы на руки. А в условиях кризиса никто не станет тратить средства, которых и так не хватает, на печать триллиона цветных бумажек и заниматься их распространением. Куда уж проще нарисовать на банковском счете виртуальные 5трл.баксов и разделить их среди нуждающихся. Но мы то знает, что это не поможет...
  • Система web2.0 новостей - Digg объявила о создании собственного тулбара для просмотра страниц интернета. Как показано в презентации, он будет заменять любую страницу на короткую ссылку, чтобы вам было удобнее ее передать кому-нить. Если бы речь шла о "1 сайт = 1 короткая ссылка", как это сделано для chat.ru, то я бы поверил, что такое возможно. Но вот с "любой" страницей я сильно сомневаюсь. Из-за большого числа страниц эта короткая ссылка быстро станет такой же длинной. Кроме того немало пользователей изнают, что фиксированная ссылка на страницу не гарантирует, что контент на ней изменится через 10 минут. Дополнительно тулбар позволяет узнать Вам сколько еще хомячков пожевали попкорн на этой странице... А вам не пофиг? Такая информация важна не пользователю, а системам статистики.

Метки:   Категории:news | life


one more week

Соберу отрывочно некоторые моменты прошедшей дели:
  1. Прошел слух, что в апреле в МВД пройдут массовые сокращения. Вызвано это тем, что бюджет правоохранительных органов привысил бюджет военных в нашей стране, а сейчас кризис, вот и решили экономить. Боюсь, что к лету мы станем свидетелями массовый демонстраций с участием бывших омоновцев.
  2. Появилось 2 класные идеи для интернет проектов, одну видимо я буду реализовывать лично, для второй нужно бы найти хорошего программиста под iPhone. Может у кого есть желание заработать?
  3. Очень интересная новость про появление вируса в банкоматах, которая по сути означает, что группа лиц, ответственная за обслуживание банкоматов, решили заработать в лоб. Я почти уверен, что они зарабатывали и ранее, просто, продавая внутренюю информацию о ваших кредитках "кардерам". Кардеры же перепродавали эту инфу тем, что был в состояниии изготовить копию кредитки, потом кредитки продавались разным просто плохим парням, которые в зависимости от совести и страха попалиться, регулярно снимали с них мелкие суммы по 1000т.р. с каждой кредитки, что очень часто остается незаметным. Но видимо недавно эта схема накрылась, толи тех кто выпускал фиктивные кридитки поймали, толи кардерам стало выгоднее покупать пинкоды у других электронных мошенников (виртуальные казино, порноресурсы и т.д. принимающие оплаты кредитками). Вообщем невезучие работники банкоматов пошли на крайность. Надеюсь их поймают.
  4. Не забудте на этих выходных перевести часы на 1 час вперед.

Метки:   Категории:news | life


MySql - обработка поточных данных.

Пост в продолжение обсуждения на Хабре (http://habrahabr.ru/blogs/webdev/54964/). Если у Вас идет большой поток данных, которые нужно сохранять в таблице и потом отображать пользователям, то очень правильно будет разнести все это на 2 таблицы. Одна для выдачи самых частых запросов, другая для медленных. А также таблицы в которых бы были предварительно подсчитанные данные. После такого разнесения все процедуры принимают вид, как показано ниже, на примере для времени:
Copy Source | Copy HTML
begin
DECLARE `datatable` VARCHAR(20) DEFAULT '`data`';
DECLARE `xtab_query` VARCHAR(4096) DEFAULT '';
 
if(DATE(`dfrom`) > DATE_SUB(NOW(), interval 8 DAY)) then
    SET datatable := "`data_week`"; #last week
else
    if(DATEDIFF(`dto`,`dfrom`)>60) then
        SET datatable := "`data_ms`";#months
    else
        if(DATEDIFF(`dto`,`dfrom`)>14) then
            SET datatable := "`data_ws`"; #weeks
        end if;
    end if;
end if;
 
SET xtab_query := CONCAT("select * FROM ",`datatable`," d ........and 1 screen of query...");
 
PREPARE `xtab_query` FROM @xtab_query;
EXECUTE `xtab_query`;
 
end

Метки:   Категории:Code | life


This week - summary

Небольшой обзорчик интересных на мой взгляд вещей за текущую неделю.
  1. Вышел DotNetOpenAuth 3.0 Beta 2 released - на днях планирую потестировать
  2. Обновилась главная страница Facebook'a, чтобы отвечать новым тенденциям в сфере Web2.0, а именно скорости и актуальности отображаемой информации.
  3. Также на фейсбуке появились таргетированные объявления, по дизайну и формату сервис совпадает с тем, что ввели ранее на Вконтакте. Видимо американский гигант долго откладывал нововведение, занимаясь рекламой главной страницы, а у вконтакта всюду шпионы, лтбо просто широко не аннонсировали в блогах.
  4. Alfresco выложил некоторые мысли про дополненную реальность (думаю микрософтовский текст голосовой ридер достаточно похож на Бората). В частности говорится, что нужно новую технологию делать под потребности 10летних детей, а уж те когда вырастут и не смогут без нее жить, тогда и создатут то, что станет повседневностью. Иными словами, Секай-камера еще не актуальна, надо делать виртуальных петов.
  5. У меня появились новые идеи для проекта, которому почти нет еще аналогов в интернете. Как зарегистрирую домен, так выложу мысли. А чтобы зарегить домен, который еще свободен надо, чтобы мне вернули мои WMZ... ох уж эти заемщики...

Метки:   Категории:trend | life


Про счастье.

Сегодня видел по телевизору занимательную передачу, где рассказывалось из чего, по мнению ученых, состоит счастье. Они составили рейтинг стран по уровню счастья населения, и оказалось, что Россия на последних местах с коэффициентом счастья 4 из 10.
Итак, счастье состоит из 5 составляющих, которые я прикинул их на себе и выяснил, что я глубоко несчастный человек:
1. Друзья. 99% моего общения вынесено в интернет, поэтому те ники, те виртуальные персонажи, с которыми я общаюсь, назвать полноценными друзьями все сложнеее и сложнее.
2. Деньги. Деньги, как было сказано, дают счастье только на уровне бедноты. Значит мне они счастья не дают и, как и 98% населения нашей страны, неотносящимися к богатеям, мне хотелось бы денег еще побольше, хоть и счастья мне этого не даст.
3. Спорт. Да уж, в этом году еще спортом не занимался - холодно, лень, мало смысла. Да и зачем? Телки и так должны вешаться на малопьющего и некурящего здорового человека, но правда компьютерный гик. А пивной живот, как мне сказал один депутат, хоть ты занимайся спортом, хоть нет, всеравно к 30 годам появится =).
4. Здоровый регулярный сон. Пост пишу в 4м часу ночи, так что тут все понятно, идем дальше.
5. Общественная деятельность Кризис, денег нет и общественной деятельности нет. Это только на западе без денег от государства могут организровываться молодежные организации, но не у нас. Так что и тут со счастьем придеться подождать.

Метки:   Категории:life


Back to blogging

Давно не писал, поэтому пробегусь кратко по основным техническим событиям интернета
  1. На днях почти полдня был недоступен Gmail. Примечательно, что это вызвало меньше паники в Рунете, чем недоступность ICQ в январе.
  2. Добавил виджет комментирования от FriendsConnect на проект s-c.me - все работает и мне нравится. А вот точно такойже код для ya.topbot.ru почему-то не пашет, придется еще подумать.
  3. Появились подробности Gazelle - нового браузера от Микрософта, который они планируют выпускать независимо от InternetExplorer'a. А также новый скрины от MicrosotftVisualStudio2010
  4. Из юмора рекомендую почитать темку про Китайскую социальную сеть, которая круче Facebook
  5. Сегодня вечером иду на секретное обсуждение "Плана Обамы" и "Плана Путина", если что умного узнаю, то поделюсь. Отмечу лишь, что я продал баксы, закупился йеной и жду обвала Европы =).
  6. 1го марта пройдет 7я встреча стартаперов от StartupPoint.ru . Пользы думаю будет мало, но сходить погулять не помешает.

Метки:   Категории:S-c.me | news | life


Социореклама

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

Но с другой стороны, зная специфику русского офисного планктона, да и по собственным чувствам, когда смотришь ролик, то про себя произносишь "Да", после каждого вопроса =). Получается примерно так: "Тебе нужны только деньги? - Ага, а все остальное куплю. Тебе плеваь на страну? - Ага, поэтому сбережения в валюте. Ты тупая скотина? - Ага, пойду напишу об этом в блоге."
Другой интересный пример - антиалкогольная реклама, что крутят по телевизору. Показывают кишки и говорят, что все кто пьет - скоро умрут. На это смотрящий отвечает Да я гавно, да я скоро сдохну, но что мне еще остается на зарплату учителя при такой инфляции? Лучше уж выпью и забуду, что я гавно.
Такое вот неправильное отношение к людям проявляется в России повсеместно. Подход "Ты гавно - иди работай!" изжил себя с падением монархии. Правильный подход капитализма: "Стань лучше - сделай то-то!". Для той же антиалкогольной компании это звучало бы так: "Хочешь здоровую семью, понимания на работе и хорошей жизни - откажись от выпивки!".


Метки:   Категории:news | life


1tv - пропаганда

На выходных имел возможность убить часть времи перед телевизором. Поразило, что в одной передаче ведущая очередного тупого шоу произнесла слово "Негр" и это не отфильтровали защитники толлерантности. Видимо даже на толлерантность деньги кончились.
Заценил еще новейший российский фильм "20 сигарет". Весь фильм - нарезка сцен, где герои курят в перемешку с короткими диалогами, а иногда на экране показывается компьютер с mail.ru. Герои не выпускают сигарет ни на крыше дома, ни в машине, ни в туалете, ни во время секса. Сплошная реклама нездорового образа жизни, несчитая mail.ru. С такой открытой пропогандой по основным каналам мне становится понятно, почему у нас 63% россиян заядлые курильщики.

Мое отношение к курению весьма негативное. Поговоришь с курящим человеком, а потом вся одежда воняет, как будто в течении разговора тебя обхаркали какой-то гадостью. Да и во время разговора, говоришь что-то, а собеседник не зная что ответить делает вид, что занят курением. Курильщики перестают не пользуются духами и одеколонали - зачем им, если запах курева все убивает! И т.д. и т.п. можно долго продолжать.

Offtopic:
  1. Интересная инструкция по созданию сообществ на Твитере
  2. Добавил в профиле больше информации

Метки: , ,   Категории:news | life


Завершая месяц

1) Несколько дней буду недоступен в связи с отъездами и пропавшим дома интернетом.
2) Начинаю разбираюсь с библиотекой полнетекстового поиска портированную на Csharp: lucene.net. Очень много разработано для этой библиотеки, почти что полноценный десктопный поисковик написать можно. Очень волнует скорость добавления информации в индекс - может у кого есть опыт работы с ней? Надеюсь с помощью библиотеки покрыть часть функционала тематического поиска, как у продаваемого IBM решения для корпораций, где одна лицензия стоит под 100килобаксов.
3) Опробовал по совету Mads'a плагин для VisialStudio StyleCop 4.3, правда восторга, как у него у меня не появилось. Плагин позволяет следить за правильным оформлением вашего кода. Из полезного могу отметить только возможность проверки правильности составления документации, что все параметры функций описаны и не пусты. Остальное, как проверка на отсутствие двойных пробелов, на наличие копирайтов и т.п. - черезчур.
4) Интересное решение спам проблемы в ЖЖ предлагает Лугастик - как бы лично выступая в роли абуз теам и инспектируя ботов. Проблемой может стать ограничение на размер бан листа в ЖЖ =), а также то, что число ботов в ЖЖ регистрируется за день примерно в 1000раз больше, чем автор успевает просматривать.

Метки:   Категории:Code | life


Widgets или про воскресенье

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

1) liveexperts.ru - мне кажеться у них есть шансы продвинуться дальше, чем Ашманов или Гугл-вопросы. Последние достаточно долго пытались повторить успех проекта топового сайта about.com в части предоставления пользователям человеческих ответов на жизненные вопросы, но оказались нежизнеспособными. Отчасти провал был вызван бесконечными попытками собрать "экспертов во всем". Хорошо было бы реализовать liveexperts.ru на базе видео-чатов(видео-виджет), которые продвигает компания Spirit. А также им стоит подумать над технологией API для того, чтобы каждое уже сформировавшееся в интернете тематическое сообщество могло интегрироваться с их экспертной системе без переманивания пользователей, что было бы грубой ошибкой.

2) toolwi.com . Огорчило, что не удалось узнать относительно их дальнейших планов по разработке виджетов для блогов, скрывают. Единственное, что говорят, так это сделают бесполезную публикацию настроений (likes), а в дальнейшем планируют просто "лечь" под крупный блогохостинг и заняться выполнением задач под конкретные потребности, что поставит на сервисе крест, но даст им денег. Еще раз повторюсь, что я считаю крайне важным создание для блогосферы виджетов тупо дублирующих функционал F*Connect (например, опросы), и в перспективе универсальный виджет для публикации профиля блогера. Но тут, как всегда, хромает монетизация.

3) Чел прочитал лекцию про создание стартапов. Общий вывод - прототип нужен как можно скорее, для апробации модели бизнеса. Это еще раз наталкивает меня на мысли о том, чтобы выложить разработки годовой давности для всех, может какой фидбэк будет...


Метки: ,   Категории:trend | life


Идеи для фантастической книги

Сидел, пил кофе и думал - "а чтобы мне не подойти к кофейному автомату и не разломать его, чтобы больше не пить кофе такого плохого качества?". Так родилась идея, что было бы прикольно, если бы у нас у всех было 2 жизни. Проживаешь первую, начинается вторая, кончается вторая - все смерть. То есть после первой смерти из тела уходит какой-то дух, который не позволяет пережить вторую смерть. И каждый делает выбор как ему жить, толи вначале вести безбашенную жизнь, а потом тихо мирно работать и растить потомство, толи наоборот. Как бы Вы выбрали? Можно конечно 2 раза прохить одинаково, но я сомневаюсь, что кто-нить так сделал.
И весь мир таким образом делился бы на тех, кто хочет жить подольше и тех кто хочет жить повеселее.
Как раз хватит на трилогию. В первой книге герой вел простой образ жизни, но какой-то урод его убивает, он становится плохим и познает плохие стороны жизни пытаясь найти убийцу (но так и не находит). Во второй книге, героиня пресытившись плохой жизнью долго думает как лучше умереть, потом умирает и пытается вести хорошую жизнь, но ей все мешают. А в третьей книге нужно написать что-нить про книгу судьбы, в которой предначертано какой путь человек выберет в первой жизни и за эту книгу будут весьти борьбу хорошие и плохие.
Может уже кто-то реализовал подобное в какой-нить фантастике, думаю было бы занятно почитать.

Метки:   Категории:idea | life


few-words

Еще до НовогоГода мне довелось побывать на докладе, где вкратце расказывалось как были распилены потрачены выделяемые бюджетом деньги на научные иследования. Мое внимание привлекли некоторые технологии, о которых стоит рассказать, пока не зыбыл.
Во-первых, это исследования передачи энергии при помощи лазера. Это нужно, чтобы в ближайшее время запустить на орбиту спутники, которые бы собирали солнечную энегрию и передавать ее на землю, тем самым решая проблему альтернативных источников энергии.
Далее было что-то интересное сказано про спутник, который можно запустить с целью освещения заполярных станций отраженным от солндца светом. Мне трудно представить каких же размеров должны быть отражающая поверхность спутника, чтобы это имело яркость, заметную для звездного заполярного неба.
А еще мне понравились очевидное военное применение самоорганизующихся роботов. Разрабатывается группа мини-роботов, которые, попав в здание, уничтожали или обезвреживали бы всю живую массу внутри помещения, то есть людей. Сейчас таким средством выступает простая граната, забросил ее в помещение с террористами, она всех и положит вместе со зданием. А хотят, чтобы забрасывали(скажем через окно) в помещение нечто, оно бы разделялось на автономные части, быстренько уничтожало все двигающееся и выключалось, оставляя здание неповрежденным.
Еще интересное применение самооргинизующимся роботам - мониторинг нетральных вод. То есть есть группа роботов, каждый из которых держит связь только с ближайшими, но все вместе они мониторят большую территорию. Правда тут оговаривалось, что разработки ведуться военным ведомством США.
В итоге должно получиться как в фильме "День, когда Земля остановилась", когда есть куча мелких роботов, уничтожающих все на своем пути. Главное только их правильно запрограммировать =).

PS: Тяжело вживаюсь в новый режим сна, с 12ти часового в праздники, до 4х часового... Дожить бы до выходных.

Метки:   Категории:trend | life


2009+

-Сколько будет ДедМороза заказать?
-200у.е.
-Хорошо, а когда он прийдет?
-Он не прийдет, потомучто Вы его заказали.
---------------
Так выпьем же за тех, кто шлет нам поздравления с неизвестных номеров!
Кажется я возвращаюсь к жизни.
1) Под новый год заменил себе первую жену как планировал на Dell 1535 C2D 2,5Гц, 4Gb memory в целом доволен. Также на удивление оказался довелен WindowsVista, которая просто летает на этой малышке.
2) Еще радует, что завтра мне не работать, в отличии от разных неудачников, поэтому кто хотел встретится может меня попробовать подловить.
3) Также мне сообщили, что YandexUtility перестал работать, как перекомпилю, так выложу новую версию.

Метки:   Категории:life


Source-Code.ME - HightLight

В предыдущем посте я активно использовал вставки кусков кода в текст поста. Как вы могли видеть, текст был подсвечен и красиво оформлен. Это было сделано не спомощью стандартных средств, а с помощью самописного проекта Source-Code.ME (s-c.me).
При его написании использовалось: ASP.NET,IIS,ASP AJAX Toolkit,Log4net(логирование),URLRewriter(перезапись обращений), inettuts(Перемещаемые виджеты), jQuery(работа с куками), ManoliCode HighLighter(основа для подсветки кода).
Времени потрачено: 4 вечера.
Что нового сделано: Автоматическое определение механизма подсветки в зависимости от куска кода; PHP подсветка; Улучшенный алгоритм подсветки объектов для Csharp кода; Интегрирован inettuts в качестве компонента и виджетов; Возможность подсветки как чистым HTML'ом так и в виде CSS вставки; Добавлено выравнивание по левому краю; Возможность копирования как кода, так и конечного HTML'a по одному клику.
Что в планах: Автоматическое проставление тэгов для кода и поиск по тегам; Обсуждение куска кода при помощи F*Connect; Проверка орфографии(рус-анг) в куске кода с предложением возможных правильных вариантов; Мобильная версия =), позиционированная как Spell-Check.ME с возможностью перевода слов-фраз; Может еще какие мысли прийдут в голову.

Пример подсветки класса URLRewriter под катом, кому не влом - тестируйте =)
Copy Source | Copy HTML
  1. using System.Configuration;
  2. using System.Diagnostics;
  3. using System.Text.RegularExpressions;
  4. using System.Web;
  5. using System.Xml;
  6.  
  7. // nicked from http://www.codeproject.com/aspnet/URLRewriter.asp
  8.     public class URLRewriter : IConfigurationSectionHandler {
  9.         public static log4net.ILog Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
  10.         protected XmlNode _oRules = null;
  11.  
  12.         protected URLRewriter() { }
  13.  
  14.         public string GetSubstitution(string zPath) {
  15.             Regex oReg;
  16.  
  17.             foreach (XmlNode oNode in _oRules.SelectNodes("rule")) {
  18.                 // get the url and rewrite nodes
  19.                 XmlNode oUrlNode = oNode.SelectSingleNode("url");
  20.                 XmlNode oRewriteNode = oNode.SelectSingleNode("rewrite");
  21.  
  22.                 // check validity of the values
  23.                 if (oUrlNode == null || string.IsNullOrEmpty(oUrlNode.InnerText)
  24.                     || oRewriteNode == null || string.IsNullOrEmpty(oRewriteNode.InnerText)) {
  25.                     Logger.Warn("Invalid urlrewrites rule discovered in web.config file.");
  26.                     continue;
  27.                 }
  28.  
  29.                 oReg = new Regex(oUrlNode.InnerText, RegexOptions.IgnoreCase);
  30.  
  31.                 // if match, return the substitution
  32.                 Match oMatch = oReg.Match(zPath);
  33.                 if (oMatch.Success) {
  34.                     return oReg.Replace(zPath, oRewriteNode.InnerText);
  35.                 }
  36.             }
  37.  
  38.             return null; // no rewrite
  39.         }
  40.  
  41.         public static void Process() {
  42.             URLRewriter oRewriter = (URLRewriter)System.Configuration.ConfigurationManager.GetSection("urlrewrites");
  43.  
  44.             string zSubst = oRewriter.GetSubstitution(HttpContext.Current.Request.Path);
  45.  
  46.             if (!string.IsNullOrEmpty(zSubst)) {
  47.                 Logger.InfoFormat("Rewriting url '{0}' to '{1}' ", HttpContext.Current.Request.Path, zSubst);
  48.                 HttpContext.Current.RewritePath(zSubst);
  49.             }
  50.         }
  51.  
  52.         #region Implementation of IConfigurationSectionHandler
  53.         public object Create(object parent, object configContext, XmlNode section) {
  54.             _oRules = section;
  55.  
  56.             return this;
  57.         }
  58.         #endregion
  59.     }
PS: Исходники с http://source.virtser.net/ не использовались.

Метки:   Категории:news | Code | life


BlogEngine - MultiPost

Как вы знаете, я транслирую свои записи в несколько популярных блогомест в интернете (за исключением ЖЖ). И это я делаю не с помощью встроенных средств копирования постов, а с помощью самописного модуля (Extension) для движка BlogEngine.Net, работающем под ASP.NET. Почему так? Да потому, что часто при задании копирования постов с помощью сторонних средств, таких как трансляции на Ya.ru, посты помещаемые в блог выпадают из поискового индекса и ссылки в них не учитываются.

1) Модуль получился расширяемый, что позволяет дописать копирование постов куда вам только захочется. В вышеуказанный архив я вложил только два класса, которые позволяют копировать посты на Хабр и на Ярушечку. Так как ярушечка имеет херовый интерфейс, и код выглядит очень сложным (и, кстати, не рабовает, если Вы недавно заходили под своим же аккаунтом с другой машины), а также придется добавить следующие строчки в web.config:
  1. <system.net>
  2.    <settings>
  3.      <httpWebRequest useUnsafeHeaderParsing="true" />
  4.      <servicePointManager expect100Continue="false"/>
  5.    </settings>
  6.  </system.net>


2) Далее, в настройках интерфейса у Вас появится такая вот картинка, позволяющая настроить копирование постов:
Отмечу, что все селективные значения прописываются вручную, так как в текущей версии BlogEngine нет возможностей задавать параметр группы настроек модуля в виде выбора из списка. Надеюсь это сделают в следующей версии, которую обещают в конце Января. Итак, первый параметр отвечает за копирование постов (bool=true/false). Второй за название категории, только из которой , если она указана, будут копироваться посты. Третий - BlogType - название класса отвечающего за копирование. Далее логин-пароль в удаленной системе. BlogParam - это дополнительный параметр, который может понадобиться для определенный систем. В частности для Яндекса я передаю номер моего блога, чтобы не извлекать его каждый раз. MaxAttempts(int) - количество попыток кпирования поста, если неуспех, то бросаем это дело. Последний - PostType(Public/Private/OnlyFriends) - тип записи. Как видим, для хабра стоит Private, что означает, что я планирую подредактировать запись и вставить в нее кат, прежде чем делать общедоступной хабрачанцам.

3) Из внутренностей работы модуля рассмотрю класс MultiPost:
  1. namespace MultiPost
  2. {
  3.     /// <summary>
  4.     /// Copy all your posts to blog at http://wow.ya.ru
  5.     /// You have to assign an login and password inside constructor
  6.     /// </summary>
  7.     /// <remarks>
  8.     /// Based on pure code - http://ya.topbot.ru
  9.     /// </remarks>
  10.     [Extension("Copy all your posts to blogs", "0.1.1", "http://ya.topbot.ru")]
  11.     public class MultiPost
  12.     {
  13.         /// <summary>
  14.         /// Name of Module
  15.         /// </summary>
  16.         private static String sExtensionName = "MultiPost";
  17.  
  18.         static protected ExtensionSettings _settings = null;
  19.         /*....*/
  20.     }
  21. }
Как видим к атрибутах класса задаются настройки модуля, чтобы BlogEngine его воспринял как расширение. Конструктор достаточно простой, подписываемся на событие о размещении нового поста:
  1. static MultiPost()
  2. {
  3.     // create settings object. You need to pass exactly your
  4.     // extension class name (case sencitive)
  5.     ExtensionSettings settings = new ExtensionSettings(sExtensionName);
  6.     /*.......*/
  7.     ExtensionManager.ImportSettings(settings);
  8.     _settings = ExtensionManager.GetSettings(sExtensionName);
  9.     Post.Saved += new EventHandler<SavedEventArgs>(Post_Saved);
  10. }
И кода происходит новый пост, то обрабатываем его создавая новый поток для этих целей
  1. /// <summary>
  2.  /// Occurs on new post
  3.  /// <remarks>
  4.  /// It opens a new thread and executes
  5.  /// because it takes some time to complete.
  6.  /// </remarks>
  7.  /// </summary>
  8.  private static void Post_Saved(object sender, SavedEventArgs e)
  9.  {
  10.      if (e.Action != SaveAction.Insert)
  11.          return;
  12.  
  13.      IPublishable item = (IPublishable)sender;
  14.  
  15.      //(HttpContext.Current == null || !HttpContext.Current.Request.IsLocal)
  16.      if (item.IsVisible)
  17.      {
  18.          //getting new thread to do all crap
  19.           ThreadPool.QueueUserWorkItem(delegate {
  20.               PostCycle(item);
  21.           });
  22.      }
  23.  }
  24.  
  25.  /// <summary>
  26.  /// Main process to post
  27.  /// </summary>
  28.  /// <param name="item"></param>
  29.  public static void PostCycle(IPublishable item){
  30.      //перечисляем все блоги, что активны...
  31.      DataTable dt = _settings.GetDataTable();
  32.      //pure code, coz i cant change Categories class
  33.      string catsline = "";
  34.      foreach (Category c in item.Categories)
  35.      {
  36.          catsline += c.Title + ",";
  37.      }
  38.      for (int i = dt.Rows.Count - 1; i >= 0; i--)
  39.      {
  40.          SettingsCollection sets = new SettingsCollection(dt.Rows[i].ItemArray);
  41.          if (!sets.Enabled ||
  42.              (!String.IsNullOrEmpty(sets.CopyOnTags.Trim())
  43.              && catsline.Contains(sets.CopyOnTags))
  44.              )
  45.          {//not allowed to post
  46.              dt.Rows.RemoveAt(i);
  47.          }
  48.      }
  49.      //lets finish the others
  50.      for (int i = dt.Rows.Count - 1; dt.Rows.Count > 0; i--)
  51.      {
  52.          Thread.Sleep(5000);
  53.          if (i < 0)//new cycle...bad...bad
  54.          {
  55.              i = dt.Rows.Count;
  56.          }
  57.          try
  58.          {
  59.              SettingsCollection sets = new SettingsCollection(dt.Rows[i].ItemArray);
  60.              Type tBlog = Type.GetType("MultiPost.Blogs."+sets.BlogType);
  61.              Object theBlog = Activator.CreateInstance(tBlog,
  62.                  new object[1] { sets });
  63.              Type[] paramTypes = {
  64.                      typeof(IPublishable)
  65.                        };
  66.              Object[] ps = new object[1] { item };
  67.              MethodInfo mDefaults = tBlog.GetMethod("ProcessItem", paramTypes);
  68.              if ((Boolean)mDefaults.Invoke(theBlog, ps))//if success
  69.              {
  70.                  dt.Rows.RemoveAt(i);
  71.              }
  72.              //failed, lets continue
  73.          }
  74.          catch(Exception e)//toomanyattempts
  75.          {
  76.              dt.Rows.RemoveAt(i);
  77.          }
  78.  
  79.      }
  80.  }
В основном цикле, мы создаем объект класса, и вызываем нужную функцию размещения поста, передавая ей настройки. Как видно попытка разместить пост происходит каждые 5 секунд. Обработка объектов идет на объекте Rows, что некрасиво, но просто. Остальное Вы можете найти внутри выложенного архива. PS: Чтобы иметь возможность править настройки рекомендую заменить компонент admin/Extension Manager/Settings.ascx.cs на файл, вложенный архив. Там исправлена некоторая ошибка в функции редактирования настроек.


Метки: ,   Категории:BlogEngine | Code | life


Spam

В первый день зимы в Израиле вступил новый закон о спаме, о котором пишет долбоеб, добавляя интересные комментарий, что в нашей стране, в которой много интернетчиков(Костя Рыков, Илья Пономарёв и Роберт Шлегель) пришли в Думу и видеоблогер стал президентом, до сих пор нет закона о спаме.

Не долго думая я полез с таким вопросом к окружению вышеназванных людей и достаточно быстро получил исчерпывающий на мой взгляд ответ. Отрывки беседы (Я) привожу ниже:
-(Д) У нас нет определения спама.
-(Я) Да это просто, счас держи: "Рассылка нежелательных сообщений большому числу людей (более 1000) с целью донести до них информацию о товаре или услуге". "Нежелательных" подразумевает, что человек не был подписан. Многие почтовики, такие как gmail не позволяют отсылать более 500 писем с одного аккаунта.
-(Д) Как проверять будем? скольким он разослал?
-(Я) Ну так МВД уже следит за всем! По факту на стороне получателя - то есть на стороне крупных почтовых сервисов, таких как mail.ru
-(Д) А кто мониторить будет?
-(Я) Админы - почтовиков - обязать их мониторить спам и регистрировать случаи так, чтобы потом это имело силу
-(Д) У, брат... ты представляшь насколько сие сложно? должно быть унифицированное и сертифицированное ПО, которым необходимо будет фиксировать факт спама, почтовики должны будут получать дотации от гос-ва на хранение информации о наличествующем спаме. а денежки фед. бюжета? далее. вот идит у тебя мэйл. ру - почтовик и фиксируеит, что тысячи человек на его почте пришла тысяча писем с одного адреса? содержание писем является конфеденциальной информауцией. то есть. необходимо, чтобы человенк, которому пришло письмо обратился в соотвествующие органы или администарцию сервера с письменным заявлением (причем не по электронке) с тем, что против него совершено противоправное деяние, называемое СПАМ! и это должно быть сделано 1000 раз минимум, а если спамер ограничился 999 штук - то хрен!!!!
-(Я) А чем электронное заявление о том, что притив меня совершен "спам" не пойдет?
-(Д) Потому, что электронный документооборот в россии не имеет силы, в качесте заявления в органы
-(Я) Понятно, то есть наша "система решения проблем" работает так, чтобы не создавать для себя лишней работы.
-(Д) Надо менять всю систему, безусловно... в рамках пакета законов об электронном документо обороте правоохранительных органов. Но какие будут траты на все это - мне пиздец страшно представить. Да и траты на любую фигню - это ещё и откат и распил.


ЗЫ: Вспомнился недавно вышедший фильм про терористов смертников, зовется Traitor, на руском его пока нет вроде. Так как в США вся почта мониториться, то там смертникам инструкции передавались письмом в виде драфта, то есть кто-то заходил в почтовик, писал письмо, сохранял как черновик и выходил, заходил следующий и смотрел черновик. Задумка хорошая, но я уверен, что в гугле и драфты автоматически мониторятся.

Метки: ,   Категории:humor | life


Winter

Кстати, с началом Зимы всех! Может, наконец-то эта слякоть закончится и выпадет нормальный белый снег.

Метки:   Категории:news | life


Развлекательный пост.

Решил Вас поразвлечь и в этот важный для всего российского интернета день написать про трусы. Про женские трусы, которые смогут удивить любого отсутствием завязочек. Как они носятся можно видеть на фотографиях ниже. Думаю на щетине лобка будут вполне крепко держаться =).Каждая снегурочка еще успеет научиться их носить до НовогоГода, чтобы порадовать своего деда мороза. Стоимость такого "прикола" примерно 1500р, подробнее по ссылкам.

ЗЫ: специально потратил 20 минут поисков во френдленте, чтобы раскопать пост Монста, у которого я эту тему и подсмотрел.

Метки:   Категории:humor | life


Из жизни разработчиков.

Известный .Net разработчик Mads Kristensen пишет, что решил обновить свой 3х летней давности ноут на новый XPS M1530, а заодно обещает поставить (наконец-таки) MSVS2008.

Я вот тоже каюсь, что пользуюсь трехлетней давности ноутбуком и до сих пор сижу под MSVS2005. Когда-то ставил 2008ю, но была триальная, поэтому снес. А в 2010 году уже следующая версия выйдет... ужс. Сейчас почитал про XPS M1530 к Новому Году наверное куплю.

Метки:   Категории:life


Без названия

1) Узнал, что через неделю 25го числа будет празднование 14-летия Российского Интернета. Ссылку не даю, так как не вижу смысла там присудствовать. Программа мероприятия обещает быть "увесилительной" - там разные группы будут выступать и т.д. Кого-то наградят за вклад в развитие интернета.

2) Забавная ситуация сейчас происходит с FaceBook'ом. Давно они внедрили систему, где каждый может разработывать приложения для блогеров взаимодействуя с другими пользователями блогохостинга, типа OpenSocial API. Напомню, что подобное есть на LiRu и на Mail.ru. Так вот, вся проблема OpenSocial API в том, что непонятны стимулы для программиста сидеть и тратить свое время, чтобы написать очередной тетрис. Только призрачная надежда, что его приложение пройдет модерацию и станет популярным среди многомиллионной аудитории. При этом модерация, которая могла заметить, что программист как-то пытается заработать на блогерах - скорее всего отклоняла приложение.

А теперь Facebook ввел понятие VerifiedApp - типа, если приложение прошло проверку и признано хорошим, то программсит может заплатить 400у.е. и поместить это приложение в специальный каталог приложений, который будет подсовываться всем поьзователям социальной сети как рекомендованый. При этом эти 400у.е. нужно будет платить каждый год. То есть получается очередная обдираловка с тех, кто еще и пользу приносит социальной сети нахаляву, иными словами в лучших традициях однокласников.

В заключение, сейчас у FaceBook'a 40000 приложений прошедших проверку. Предположим, что примерно 5% авторов заплатит, то есть это еще 800тыс. у.е. в год. Неплохая сумма, чтобы "отбивать" инвестиции.

Метки:   Категории:Semantic Web | trend | life


Кто я?

Программист. Я слежу за блогосферой и знаю, как будет развиваться интернет. Когда у меня есть время я даже прилагаю для этого усилия. Подробнее

Последние комментарии

Не отображать

Topbot at FeedsBurner