-Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в Flashr

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 26.02.2007
Записей:
Комментариев:
Написано: 6574

Отправка почты из Windows Azure

Дневник

Вторник, 28 Июня 2011 г. 12:36 + в цитатник
В Индусском Windows Azure есть много проблем. И одна из первых, с которой вы столкнетесь - невозможность отправить простое письмо во вне. Да это логичное ограничение настройками безопасности фаервола на всех системах, но так как это не одна машина, а облако - у вас нет возможности ее обойти. Даже через поиск находятся дурацкие решения, в которых предлагается либо 1) купить сторонний релай во вне и отправлять почту через него 2) стать подписчиком Exchange сервисов микрософта.

Но на самом деле, есть возможность отправки почты через Гугл, работающий через SSL и на неблокированном 587 порту. То есть делаем,
Copy Source | Copy HTML
  1. var client = new SmtpClient(props["SmtpServer"])
  2.                              {
  3.                                  DeliveryMethod = SmtpDeliveryMethod.Network,
  4.                                  Credentials = new NetworkCredential(props["SmtpLogin"], props["SmtpPwd"]),
  5.                                  Port = int.Parse(props["SmtpPort"]),
  6.                                  EnableSsl = true,
  7.                              };
  8.  
  9.             what = what + @"
    С Уважением, Почтовая служба " + props["HostAddress"];
  10.  
  11.             try
  12.             {
  13. #if !DEBUG
  14.                 client.Send(props["SmtpLogin"],
  15.                     to,
  16.                     "Subj",
  17.                     string.Format(what, pars));
  18. #endif
  19.             }
  20.             catch (SmtpFailedRecipientsException)
  21.             {
  22.  
  23.             }


и соответственно настройки
Copy Source | Copy HTML
  1. <add key="SmtpServer" value="smtp.gmail.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  2. <add key="SmtpLogin" value="mail@gmail.com" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  3. <add key="SmtpPwd" value="password" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
  4. <add key="SmtpPort" value="587" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />

Также, на всякий случай, добавляем в настройки разрешение на выполнение native кода -

PS: С июля этого года Azure вроде объявило о бесплатности всего входящего трафика.

Метки:  

WCF Proxy tunnel

Дневник

Среда, 15 Июня 2011 г. 16:37 + в цитатник
Ниже расскажу о реализации проброса WCF запросов от одного сервера через несколько промежуточных, так называемый wcf tunneling, вопрос о реализации которого уже поднимался на gotdotnet.ru. Там автор предлагал использовать Castle.DynamicProxy для динамической генерации прокси-классов для создания канала. Однако комментаторы отметили, что полученный функционал дублирует лишь стандартные возможности при прямом взаимодействии точка-точка.
Актуальность приобретается, когда добавляется набор промежуточных точек. При этом на клиенте идет перехват вызова произвольной удаленной функции FuncName на вызов абстрактной функции object _DataTransfer(HeaderAuthen auth, object ServiceLink, object FuncName, object[] param); Далее обращение транслируется через серию промежуточных машин и в итоге обращение передается на ServiceLink, где обрабатывается. Также возвращается результат. Грубо говоря примитивный функционал Biztalk своими руками по передачи soap сообщений в многосвязной сети. Кроме того мы без ведома пользователя накладываем на канал защиту через HeaderAuthen auth.
Отдельно выкладываю реализацию класс DynamicServiceProxy и ServiceChannelManagerInterceptor, подменяющие вызов, а также сам вызов в ServiceChannelManager. Соответственно все закладывается в библиотеку, которая должна быть на всех точках, а на туннельных-промежуточных точках еще и реализуется Контранкт, в котором важно описать передаточную функцию _DataTransfer, все функции на конечных точках, а также все классы и типы через KnownTypeContainer. Также важно включить сериализатор XmlSerializerFormat, так как по умолчанию в WCF используется DataContractSerializer, которых не позволяет передавать object. То есть вызовы проходить будут, а данные - нет. Кроме того у XmlSerializerFormat тоже есть особенность, кто нельзя передать некоторые стандартные типы, например, DataSet как параметр, так как в них используется нетипизированный ArrayList. Вот пожалуй и все, что нужно знать.

Метки:  

Windows Azure for free

Дневник

Среда, 01 Июня 2011 г. 17:31 + в цитатник
Буквально на днях после моих постов о неудачном использовании Windows Azure появилась специальная акция для российских пользователей, которая позволяет потестировать сервис без использования кредитной карты и как следствие без угрозы списания средств. Воспользуюсь возможностью.

А пока, выяснилось, что для юридических лиц есть возможность использовать Азуре в России, несмотря на официально НЕ предоставляемый сервис. Для этого надо заключить договор с ребятами из софтлайна - azure.softline.ru, которые мне честно и признались, что придется платить с небольшой доплатой за их посреднические услуги.

Что касается самого использования Windows Azure, то пока обнаружил около 5 скрытых камней, о которых официально не говорят, но с которыми придется сталкиваться всем. Будет время - распишу подробно.

Метки:  

Про кэширование

Дневник

Пятница, 22 Апреля 2011 г. 15:54 + в цитатник
Недавно писал про оптимизацию сайта для всяких спидтестов. Но все они бесполезны, если сам сайт работает медленно, а чтобы его ускорить нужно не только встроенное кэширование на уровне страниц - @OutputCache, но и кэширование на уровне объектов модели. Кэширование на уровне базы, всякие memcache актуально лишь когда есть куча FrontEnd'ов и они тоже генерят немало запросов несмотря на свое кэширование.

Так вот, для кэширования объектов в asp.net делается простой класс, например:
Читать далее...

Метки:  

asp.net optimization

Дневник

Вторник, 19 Апреля 2011 г. 11:45 + в цитатник
В сети появился доклад Mad'a на конференции Mix11 в ЛасАнжелесе, смотреть тут. В нем рассказывается прежде всего как с помощью настройки asp.net сайта добиться показателей на тестах скорости YSLOW и PageSpeed близких в 100. Как нетрудно догадаться в результате получается сайт, когда браузер вообще не делает запрос к серверу, так как всюду проставлен Expired. Единственная сложность кроме всяких сжатий, была в уменьшении числа запросов к серверу. И когда эта проблема была решена было верно замечено, что если бы использовался CDN для статики, то такой проблемы бы и не возникло.

Метки:  

Эстонское сообщество русских разработчиков

Дневник

Вторник, 05 Апреля 2011 г. 23:57 + в цитатник
Открыл для себя очень дружное сообщество эстонских русскоязычных разработчиков. Вот парочка просто замечательных докладов, которые всем рекомендую.



WTF Code.




БОТы и Автоматизация процессов - Александр Ястремский.


Метки:  

Microsoft.Office.Interop

Дневник

Среда, 09 Февраля 2011 г. 18:07 + в цитатник
Давно не выкладывал технических постов, а они, как показывает статистика, приносят наибольшее число просмотров через поисковики. Поэтому сегодня опишу общно и без детальных картинок проблематику взаимодействия с документами MS Office 2007 из веб-сайта при помощи поставляемых в комплекте библиотек-прослоек Office.Interop. Эта история интересна тем, что ее решение содержит кучу проблем, но нигде я не видел целостного описания их преодоления.
  • Во-первых, вам понадобится установить на сервер офис. Берем пиратскую энтерпрайс. Так как некоторые версии могут отказаться ставится на сервере через терминал (RDP).
  • После того как в программе сделали Reference, написали нужны код, скопировали на сервер у вас появится: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Решение - запускаем DCOMCNFG, выставляем пользователю NetworkServices права на запуск компонентов MicrosoftOffice(Word/Excel) или для того пользователя от лица которого работает ApplicationPool.
  • Запускаем повторно, вылезает (0x800A03EC): Microsoft Office cannot open or save any more documents because there is not enough available memory or disk Решение - Создать системные папки
    C:\Windows\SysWOW64\config\systemprofile\Desktop (для x64) C:\Windows\System32\config\systemprofile\Desktop (для x86)
    и выставить права для NetworkServices на папку - systemprofile.
  • На этом квест не заканчивает. При повторном запуске программа выдаст (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) http://support.microsoft.com/kb/320369 Что говорит о разнице в локализации вашего кода и компонента. Решается переключением локализации вызывающего потока перед вызовов функций COM объекта
    System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture; System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); //вызовы Office.Interop

Вот пожалуй все, однако, на win2003x64 IIS6 EN даже вышеописанное не помогло.

Метки:  

OpenSource stories

Дневник

Среда, 08 Декабря 2010 г. 12:33 + в цитатник
Последние месяцы было несколько громких событий с популярные проекты с открытым исходным кодом. Вероятно это связано с тем, что все начали подводить итоги года и остались не очень довольны:
1) Lucene.Net - в ноябре обратилась ко всему сообществу с заголовком needs your help (or it will die) и It got forked. Напомню, что это .Net реализация самой популярной поисковой библиотеки, которая также используется в твиттере. Суть проблемы, что Apache Software Foundation решили прибить проект, из-за того, что неактивно развивается.
2) OpenSocial - в декабре объявило, что им нужен .Net разработчик, а также открыто место в наблюдательном совете для всех желающих. Опять же из-за недостаточной активности сообщества.
3) GoogleWave - социальная сеть от гугла, ранее выложенная в опенсорс, не смогло собрать вокруг себя достаточного числа разработчиков, поэтому решала разместиться внутри еще живущего Apache Foundation сообщества. Теперь проект смело можно называть Apache Wave.

В догонку - количество пользователей ICQ упало на треть, сервера этой системы скоро перевезут в Москву, так как только тут остались пользователи.

Метки:  

MSVS2010 + Resharper 5 + Hotkeys

Дневник

Четверг, 30 Сентября 2010 г. 12:26 + в цитатник
Достаточно долго уже работаю в Visual Studio 2010, как уже писал - все нравится. Это нравится включает Resharper 5 с кряком(пароль на архив - yandex, так как глючный dr.web считает его вирусом) и список всех горячих клавиш . Пользуйтесь.

Метки:  

json for .net

Дневник

Четверг, 16 Сентября 2010 г. 23:50 + в цитатник
Всегда не любил выдачу JSON за то, что она подразумевает обработку в JS на стороне клиента, а значит много гемора для программиста. Но оказывается существует уже и полноценное решение делающее JSON не сложнее обычной XML сериализации. Речь про newtonjson.dll, написанную на .Net и неплохо документированную. Отдельно порадовала возможность конвертации конечного листа дерева в произвольный тип путем простого вызова типа cursor["leafname"].Value();. Вот бы все значения ячеек для датагридов тоже имели такой шаблонизатор, чтобы не прописывать каждый раз приведение типа.

Пример JSON сериализатора в .Net для результатов выдаваемых гуглом при поисковых запросах через AJAX API - можно найти в последних изменениях blogsapi

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

Метки:  

Twitter OAuth 2.0 by login-password

Дневник

Четверг, 02 Сентября 2010 г. 16:22 + в цитатник
Сегодня расскажу как реализовывается работа приложения через OAuth, если пользователь передает просто логин и пароль. Прежде всего потребуется класс OAuthUtility, код которого есть в blogsapi.

На первом этапе мы проверяем производили ли мы аутентификацию пользователя ранее. Если нет, то обращаемся к твиттеру с логином и паролем, соответствующему нашему приложению (tokens.ConsumerKey,tokens.ConsumerSecret). Получаем назад ключ(response.Token), по которому мы можем построить запрос (OAuthUtility.BuildAuthorizationUri(response.Token)) на получение уникальных логина и пароля для пользователя нашего приложения. Назад возвращается страница, на которой пользователю предлагается ввести логин и пароль, но так как мы не хотим тревожить пользователя, то вводим их за него, незабывая извлечь со страницы authenticity_token. Если логин и пароль правильны, то нам возвращается уникальный PIN, который пользователь должен потом передать нашему приложению, в качестве единоразового пароля для получения постоянного пароля. Опять же парсим страницу вручную, чтобы не тревожить пользователя. И в завершение делаем запрос OAuthUtility.GetAccessToken, чтобы по разовому паролю наше приложение получило постоянный пароль. И сохраняем результат, чтобы больше не повторять этих действий.

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

И общая схема, демонстрирующая весь ужас того, во что превращается простая ранее операция по выполнению действий при помощи логина и пароля:


Код самой функции "залогинивания" в твиттер.
Читать далее...

Метки:  

Barrier .Net 4

Дневник

Четверг, 26 Августа 2010 г. 12:16 + в цитатник
Хорошая статья по новым фишкам в .Net 4 в области синхронизации потоков.

Метки:  

IIS7 perfomance

Дневник

Четверг, 08 Июля 2010 г. 15:52 + в цитатник
Результаты независимого сравнения производительности IIS6 и 7-ки в блоге у Мэда. От себя добавлю, что тоже заметил улучшения в производительности 7ки по сравнению с 6й. Единственный найденный минус у iis7 - это то, что нельзя просто пользоваться url_rewrite модулем, приходится доставлять специальную компоненту, встраиваемую в систему управления сервером.
Кроме того, где-то месяц назад я писал письмо в мастерхост с вопросом, когда же там наконец появится win2008, да iis7, типа я готов платить и все дела. Они правда ответили, что 7ка у них даже в планах не значится. Вот и получается, что мастерхост при их плюсах использует 64-битные машины, которые больше жрут памяти и старую iis6, которая тоже потребляет больше ресурсов. С этой точки зрения им действительно нет смысла что-то менять.
И сегодня четверг, яндекс опять в 11 утра перестал выдавать новые данные, так что не удивляйтесь качеству топа. Письмо им я уже отправил.

Метки:  

Facebook continue

Дневник

Вторник, 06 Июля 2010 г. 15:18 + в цитатник
То, что популярнейшая западная соц.сеть в наглую плюет на блогеров, оказывается кроме меня заметило еще несколько сотен человек, в связи с чем давно заведен топик. Но мы как всегда пойдем своим путем - ниже идет код, который логинится на Facebook и 10 раз нажимает кнопку обновить RSS, пока социальная сеть не сдастся и не импортирует новые записи из блога на вашу страничку. Вызываемой функции нужно лишь передать аккаунт и номер присвоенные вашему RSS, который можно получить из кода страницы. (Этот класс также будет включен в открытый BlogsAPI)
Читать далее...

Метки:  

deep-water.ru

Дневник

Понедельник, 05 Июля 2010 г. 19:51 + в цитатник
Решением хостера сайт deep-water.ru остановлен. Причиной стало вот что, а также не желание с этим разбираться. Сайт конечно был скорее мертв, чем жив. Теперь весь функционал переезжает на topbloger.ru потихоньку, уверен хостинг от Агавы уже не позволит такого произвола. Планирую опубликовать расширенную базу из 4 млн. айпи адресов российских блогеров.

Метки:  

Serialization.XmlChoiceIdentifierAttribute

Дневник

Вторник, 22 Июня 2010 г. 14:30 + в цитатник
Иногда появляется необходимость создать сервис, который в SOAP сериализации имеет на одном и том же месте то один тег, то другой в зависимости от состояния объекта. Однако, если сделать все как написано в документации, код примера идет ниже, то можно получить совсем не то, что хотелось бы. Класс для WCF, реализованный в виде:
Читать далее...

Метки:  

.Net Copy Protection

Дневник

Вторник, 27 Апреля 2010 г. 01:38 + в цитатник
Проблема быстрого роста торрентов не только в том, что защитить программное обеспечение от копирования невозможно, но еще и в том, что многие программисты даже не задумываются о защите, особенно, если пишешь небольшую программу, предназначенную для ограниченного числа пользователей. Многие думают, что защита копирования - это сложно, либо заранее считают, что их приложение не станет сверх-популярным, а многие даже и не задумываются, что могут заработать на создании простенького приложения. Удивительный факт в мире программистов заключается в том, что для того, чтобы создать популярное приложение, достаточно сделать более простой аналог со сложного коммерческого приложения, решая для пользователя хоть и маленькую, зато частую проблему.

Итак, в этом посте я расскажу про лучшую защиту для .Net программ, в том плане, что просто настроить, - про популярный DeployLX. Открыв их сайт вы обнаружите другую неприятную новость, что экспресс версия этого продукта стоит порядка 200у.е.,а стандарт так вообще под 1000у.е. Лично я бы не поскупился на 200у.е. за стандарт, и вы вероятно тоже хотите стандарт, так как только в нем есть удаленный мониторинг запусков программы. Но платить 1000у.е. - это для нас через чур. Поэтому вот полная бесплатная версия, правда устаревшая. Это выражается тем, что генератор ключей не пойдет на Vista, w7, w2k8, поэтому у меня установлена одна виртуальная машина с winXP. А также генератор работает только в 32х битной среде, но и это легко решается. Та библиотека, что должна идти вместе с вашим ПО и обеспечивать проверку лицензий можно взять после установки в папке redistributable и идет как Any CPU.
Читать далее...

Метки:  

Tr.im RIP

Дневник

Четверг, 25 Марта 2010 г. 13:48 + в цитатник
Скончался один из первопроходцев сокращения ссылок в интернете - Tr.im. О его скорой смерти было известно давно, еще когда твиттер переключился по умолчанию с него на Bit.ly, но только на днях сервис окончательно перестал функционировать и опубликовал список некоторых других популярных сокращателей. По этому случаю обновил библиотеку BlogsAPI, добавив следующие классы сокращения:

Copy Source | Copy HTML
  1. [TestFixture]
  2. public class Shorteners
  3. {
  4.     private void RunTest(Shortener oServer)
  5.     {
  6.         String sRet = oServer.ConvertDataTo("http://s-c.me", ItemType.FullUrl, ItemType.ShortUrl);
  7.         Assert.AreEqual(false,String.IsNullOrEmpty(sRet));
  8.         Debug.WriteLine("Returns: " + sRet);
  9.         sRet = oServer.ConvertDataTo(sRet, ItemType.ShortUrl, ItemType.FullUrl);
  10.         if(!String.IsNullOrEmpty(sRet))
  11.         {
  12.             Debug.WriteLine("BackTrace: "+sRet);
  13.         }
  14.     }
  15.  
  16.     [Test]
  17.     public void Bitly()
  18.     {
  19.         RunTest(new BitLy());
  20.     }
  21.  
  22.     [Test]
  23.     public void Cligs()
  24.     {
  25.         RunTest(new Cligs());
  26.     }
  27.  
  28.  
  29.     [Test]
  30.     public void Isgd()
  31.     {
  32.         RunTest(new Isgd());
  33.     }
  34. }

Метки:  

icom - part 2

Дневник

Пятница, 05 Марта 2010 г. 16:24 + в цитатник
На вчерашней конференции I-community2010.ru читал доклад. Презентацию Доклада с моими же комментариями можно скачать и почитать. Тема: "Концепция единого программного интерфейса по взаимодействию с русскоязычными блог-платформами" была призвана рассказать всем, что на проблему программного взаимодействия сервисов в интернете по разному смотрят сами создатели соц.сети, пользователи и разработчики. Также я предлагаю объединить усилия разработчиков над открытым кодом, чтобы упростить друг другу жизнь и заставить создателей соц.сетей делать нормальные интерфейсы для базового функционала, который я описал.
К сожалению, глубину моей мысли оценили не многие, зато мой доклад сильно отличался от других "представителей компаний", которые пришли на конференцию только ради рекламы себя и своих продуктов. Особо вставляла центральная секция, где у докладчиков не было докладов и все время на экране крутилась реклама партнеров.

Из всего обсуждения про твиттер можно было вынести реплики #ded 'ka, который от лица всех слушателей задавал ведущим каверзные вопросы, в то время как остальным было лень пытаться сказать ведущим, что то, что они рассказывают уже не интересно и было озвучено ранее. Из полезного, это замечание, что число занесения в листы на твиттере более говорит о читаемости человека нежели его количество френдов. Да, это сейчас так, и норма в среднем 600 занесений в листы на 10 тыс. последователей. Но и это число при желании можно легко накрутить, поэтому очевидно, что самый главный показатель - число переходов со ссылки.

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

Метки:  

CSS HighLight at s-c.me

Дневник

Суббота, 30 Января 2010 г. 15:06 + в цитатник
Добавил фишку, которую у меня когда-то просили - подсветку файлов стилей CSS в виде html для вставки в посты. Подсветка кода как всегда находится на сайте SourceCode for Me. Ниже приведу пример подсвеченного файла стилей.
Читать далее...

Метки:  

ie6 - never die - вопрос html верстки

Дневник

Понедельник, 28 Декабря 2009 г. 11:40 + в цитатник
Всегда знал, что из меня фиговый верстальщик, но никогда не думал, что удастся сделать сайт, который будет корректно отображаться лишь в самом лучшем браузере всех времен и народов - Internet Explorer'e 6. Речь идет о верстке страницы, где неправильно отображаются уголки у разноцветных кнопок. Если глянуть код, то все должно быть так как показывает ie6:


Но на практике современные браузеры показывают следующее:


Может кому не лень подсказать как исправить такое недоразумение?

Метки:  

Отлов утечки памяти

Дневник

Четверг, 24 Декабря 2009 г. 12:16 + в цитатник
На днях долго и упорно занимался отловом утечки памяти в постоянно работающем win-сервисе. В помощь себе я установил профайлер памяти процессов от микрософта - CRL Profiler. Он рисует красивые картинки, но иногда и просто вылетает. В общем помощи от него не удалось получить. Далее из гугла начал вытаскивать другие профайлеры и остановился на memprofiler, который триальный только на 14 дней, а дальше придется платить. понравилась возможность делать снимки объектов в памяти в разное время и сравнивать их количество и объемы. Поиск кряка или лицензии не привели к успеху, а очень бы хотелось может у кого есть?

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

Метки:  

Source Code Highlight

Дневник

Воскресенье, 13 Декабря 2009 г. 22:00 + в цитатник
Очередная статья на хабре, опубликованная неизвестным программистом, про подсветку кода вынудила меня внести некоторые улучшения в мой проект s-c.me - по подсветке кода. Изменение касательно подсветки строковых констант. Эта, как оказывается, весьма непростая задача теперь решается еще более сложным регулярным выражением:
Copy Source | Copy HTML
get
            {
                return @"@(?:"".*?"")+|"".*?(?<![^\\](?:\\\\)*?\\)""|''|'.*?(?<![^\\](?:\\\\)*\\)'|\b\d+?(?=\b|$)%?|‘’|‘.*?(?!\\).’";
            }

Убедиться в том, что все нормально подсвечивается, можно на подготовленном тестовом коде по ссылке. Конечно улучшать можно и дальше, но пока и так сойдет.
ЗЫ: надо не забыть продлить регистрацию домена... блин, 800р за год в зоне .me - какой ужас...

Метки:  

Рейтинг блогосферы - пост 5 (алгоритм сортировки)

Дневник

Понедельник, 30 Ноября 2009 г. 16:45 + в цитатник
За прошедшую неделю я успел пообщаться с нашим патентным ведомством, которое сказало мне, что алгоритмы не патентуют, патентуют готовые прототипы. Предложили подогнать мою заявку под "Программу для базы данных для ЭВМ", но я не стал тратить время. Таким образом продолжаю серию постов, кратко рассказывающих как формируется ТОП30.
Содержание уже опубликованных заметок


Сегодня я приведу алгоритм первичной сортировки и объясню некоторые моменты. Если Вы читали предыдущие заметки, то должны знать, что алгоритм первичной сортировки нужен только для того, чтобы выбрать порядок в котором записи будут анализироваться на предмет прохождения через фильтры. Собственно сам package первичной сортировки:
Читать далее...

Метки:  

Go Code

Дневник

Суббота, 14 Ноября 2009 г. 03:55 + в цитатник
Свежая наклейка на ноуте с надписью "Go Code" заставила меня поразмышлять о новом языке программирования, который предлагает Google. Во-первых, уже полно языков программирования и трудно придумать что-то, чтобы всех заставило разом перейти на него. Во-вторых, пошла шутка, что "В ответ Yahoo запустил язык программирования YO! А мы теперь ждем языка YA!". Но если подумать, то можно вспомнить, что сейчас идет бета тестирование GoogleWave, которое в следующем году станет доступно всем, а также появится маркет, на подобии AppStore, где девелоперы смогут продавать, написанные ими снипеты для GoogleWave. Это программы, с помощью которых пользователи смогут взаимодействовать друг с другом, например, игры в социальных сетях. Но если мы возьмем OpenSocial платформу, то даже в ней для создания какой-то простой игры потребуется дополнительно изучать форматы сообщений, представления данных, почти как изучить новый язык. Не исключено, что Гугл захочет заставить прогеров писать снипеты, а также федеративные сервера, для GoogleWave на собственном языке.

Метки:  

Url Shorteners API

Дневник

Пятница, 23 Октября 2009 г. 00:56 + в цитатник
Добавил в библиотеку BlogsAPI(только в исходники, не в релиз) класс для работы с Bit.ly API. По умолчанию использует мой девелоперский ключ, но можно в конструкторе задать и свой. Позволяет получить сокращенную ссылку по длинной следующим кодом. Также есть возможность извлечения числа переходов по ссылке:

Copy Source | Copy HTML
  1. [TestFixture]
  2. public class Shorteners
  3. {
  4.     [Test]
  5.     public void Bitly()
  6.     {
  7.         BitLy shortener = new BitLy();
  8.         String sRet = shortener.ConvertDataTo("http://s-c.me", ItemType.FullUrl, ItemType.ShortUrl);
  9.         Assert.AreEqual(false,String.IsNullOrEmpty(sRet));
  10.     }
  11. }

Метки:  

Capitalize first symbol of each word

Дневник

Четверг, 15 Октября 2009 г. 14:19 + в цитатник
Интересную фишку обнаружил в .Net, оказывается, чтобы в тексте сделать каждый символ заглавным, не нужно придумывать никаких сложных регулярных выражений, как это предлагалось на хабре для программистов Java. Достаточно воспользоваться услужливо написанной для насв Микрософте функцией:
Copy Source | Copy HTML
  1. using System.Globalization;
  2.  
  3. string capitalized = CultureInfo.CurrentCulture.TextInfo.ToTitleCase("asp.net simply rocks!!!");
  4. //yelds "Asp.Net Simply Rocks!!!" 

Метки:  

BlogsAPI published-FOAF-parser

Дневник

Суббота, 10 Октября 2009 г. 21:05 + в цитатник
После некоторых раздумий выложил исходники BlogsAPI в опен сорс. Мне не жалко, если кто будет их использовать для своих проектов, ведь главное, что они будут написаны на .Net.
Большую часть Юнит-тестов я исключил из проекта, чтобы не палить пароли от реальных аккаунтов.

Отдельно обращаю внимание на то, как с помощью библиотеки парсить FOAF файлы:

Читать далее...

Метки:  

Regex for String

Дневник

Четверг, 17 Сентября 2009 г. 18:20 + в цитатник
На днях была обнаружена ошибка при подсветке строковых констант на сайте Source Code for Me. Проблема была когда в коде встречалось экранирование обратного слэша перед закрывающей кавычкой - (\\"). Всвязи с этим я доработал регулярное выражение по извлечению строковых констант. Надеюсь оно кому-нить пригодится. Выражение выглядит следующим образом:
Copy Source | Copy HTML
  1. Regex rString = new Regex(@"@?""""|@?"".*?((?!\\).|(?:\\\\)+)""|''|'.*?(?!\\).'|\b\d+?(?=\b|$)%?|‘’|‘.*?(?!\\).’");

Метки:  

Open or Close project's code

Дневник

Вторник, 15 Сентября 2009 г. 14:11 + в цитатник
Все наслышаны про open source проекты, но наверно никто из Вас не принимает участие в их написании. Некоторое могут негативно относится к таким проектам, а некоторые боготворят, думая, что только так создается настоящий продукт. Но факты есть факты, что даже в разработке открытого Linux вклад в разработку от "случайных разработчиков" не превышает 30%. Остальное было сделано корпоративной разработкой под нужды клиентов.
Если пойти далее, то можно найти описание того, из чего состоит вклад "случайных" разработчиков в open source проект и мы увидим, что они даже програмный код не пишут. И итоге я прихожу к выводу, что выкладывать исходники продукта - полезно, а вот принимать сторонние изменения или тратить время на разбор сторонних предложений по изменению кода - бесполезно.
Так что же из себя представляют эти 30%:
1) Обратная связь с пользователями - программист, открывший open source проект, представляет из себя опытного пользователя, который, в отличии от простого пользователя, с охотой сообщает разработчикам о проблемах в работе программы или своих пожеланиях на будущие версии продукта.
2) Помощь другим - пользователь, поставивший open source проект понимает, что поддержку ему никто не гарантирует, поэтому за помощью обращается к более опытным знакомым и сам более активно помогает другим, бесплатно консультируя о работе продукта.
3) Написание документации - часто "помощь другим" выражается в написании документации или редактировании документации, созданной основными разработчиками продукта.
4) Пожертвования денег - тут все ясно. 5) Прочее - организация фан сайтов, юзер групп, форумов и т.д., тоже является неотъемлемой частью конечного продукта.

Метки:  

 Страницы: [2] 1