03.05.08
Tags: .Net 2.0, Программирование / 12:42 pm , Victor Laskin

Кто не в курсе, Flickr - это очень популярный хостинг фото и видео. Википедия утверждает, что в нем более 2 биллионов изображений. Ко всему этому богатству можно получить доступ из вашего .net приложения.
Самая сложная часть - это авторизация.
- Сначала Вам нужно зарегистрироваться на сервере. (как не странно
)
- Затем нужно получить ключи тут. Это две строчки - ApiKey и Secret, которые будут использоваться в вашем коде для получения доступа к сервису фликр (но не к вашему акаунту).
- Нужно скачать библиотечку Flickr.Net
- Подключив скачанную библиотеку (using FlickrNet;), Вы уже можете получить доступ к публичному контенту фликра, который доступен без авторизации.
flickr = new Flickr(ApiKey, SharedSecret);
- Но чтоб получить доступ к аккаунту нужно проделать еще одну операцию - получить Token.
tempFrob = flickr.AuthGetFrob();
string flickrUrl = flickr.AuthCalcUrl(tempFrob, AuthLevel.Write);
System.Diagnostics.Process.Start(flickrUrl);
Этот код запустит браузер, в котором пользователь должен подтвердить, что дает доступ вашему софту.
- Только теперь можно получить полный доступ:
Auth auth = flickr.AuthGetToken(tempFrob);
flickr.AuthToken = auth.Token;
- Полученный токен можно сохранить и использовать для быстрой авторизации в дальнейшем:
flickr = new Flickr(ApiKey, SharedSecret, Token);
- Теперь можно загрузить парочку фотографий:
string photoId = flickr.UploadPicture(file, title, descripton, tags);
Из бонусов механизма подобной авторизации можно отметить возможность просмотра статистики использования ApiKey, то есть вашего софта, которую можно найти там же, где вы получали ключи.
Что касается самого сервиса - обнаружил, что есть серьезное ограничение на размер фото, что меня лично, как любителя лучшего качества, не устраивает.
Напоследок - моя страница на фликре
Direct link
30.04.08
Tags: Блог / 12:15 pm , Victor Laskin
В ближайшее время блог будет перенесен на новый хостинг - возможны сбои в работе.
Добавление: переезд завершен. Благодаря Unicode UTF8 почти никто не пострадал.
Direct link
24.04.08
Tags: WPF (.Net 3.0), Программирование / 12:34 pm , Victor Laskin
А знаете ли Вы, что в XAML можно биндинг описать вот так:
<Border.Background>
<Binding Path=“Background“>
<Binding.RelativeSource>
<RelativeSource Mode=“FindAncestor“ AncestorType=“{x:Type ListBoxItem}“ AncestorLevel=“1“/>
</Binding.RelativeSource>
</Binding>
</Border.Background>
То есть можно связать свойство элемента с его родителем-контейнером. Этот биндинг очень удобно использовать при написании всяких ControlTemplate. В данном примере приведен кусок из шаблона элемента листбокса, который содержит в себе некий элемент оформления Border. Так вот цвет заливки этой рамки на элементе можно привязать к цвету самого элемента. Удобно.
Direct link
23.04.08
Tags: Книги, WPF (.Net 3.0) / 11:04 am , Victor Laskin
Хочу порекомендовать хорошую книжку по WPF, Pro WPF in C# 2008, которую можно скачать с pdfchm.com. Достаточно сказать, что книжка объемом более тысячи страниц и освещает много аспектов, опущенных в аналогичных изданиях.

Напоминаю, что на вышеуказанном сайте с книжками надо регистрироваться.
Direct link
21.04.08
Tags: WPF (.Net 3.0), Программирование, Блог / 1:24 pm , Victor Laskin
Если ввести в гугле XAML to HTML то выпадет ссылка на програмку конвертации с исходниками. Конечно возможности этой конвертации ограничены, и не потому что утилита предназначена лишь для описания самого подхода к подобной конвертации, а потому что возможности XAML сильно шире возможностей HTML.
Можно придумать много полезных применений этой утилитки, но я использовал ее для совсем банальной вещи. А именно, я отказался от использования плагина для подсветки синтаксиса в своем блоге, а просто копирую код из студии, нажимаю одну кнопку и получаю html код, который можно вставить в блог. При этом все цвета, шрифты и отступы будут сохранены.
Например:
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : System.Windows.Window
{
public Window1()
{
InitializeComponent();
}
Для реализации этого я всего лишь слегка доработал утилитку, добавив RichTextBox, содержимое которого переводится в XAML :
string os = XamlWriter.Save(InputText.Document);
Об классах XamlReader/XamlWriter я писал немного тут, а таже на сайте готдотнет есть моя статейка на эту тему.
Итого получаем конвертацию содержимого RichTextBox прямо в HTML:

А еще можно обратно ковертировать HTML в XAML, и использовать в своих программах.
Direct link
18.04.08
Tags: .Net 2.0, Программирование / 5:39 pm , Victor Laskin
Нашел на одном из западных блогов очень удобную библиотеку для работы с фтп.
Чтоб загрузить файл на свой сервер достаточно написать пару строк:
using BytesRoad.Net.Ftp;
…
string FtpServer = “my.server.ru”;
string Username = “username”;
string Password = “password”;
string RemotePath = “\\folderonserver/”;
public void UploadFile(string LocalFile)
{
// get instance of the FtpClient
FtpClient client = new FtpClient();
// use passive mode
client.PassiveMode = true;
client.Connect(Timeout, FtpServer, 21);
client.Login(Timeout, Username, Password);
// build the target file path
string target = System.IO.Path.Combine(RemotePath,
System.IO.Path.GetFileName(LocalFile)).Replace(“\\”, “/”);
// synchronously upload the file
client.PutFile(Timeout, target, LocalFile);
//Disconnect
client.Disconnect(Timeout);
}
Обратите внимание, что используется passive mode.
Библиотека распространяется по лицензии GPL, то есть бесплатно. Скачать можно отсюда.
Direct link
27.03.08
Tags: Полезные программы, WPF (.Net 3.0), Программирование / 6:42 pm , Victor Laskin
Хочу представить Вам один из моих последних проектов - программу для обработки фотографий PerfectPhotos. Программа содержит большое количество средств для комплексного улучшения изображений и призвана избавить фотографа от необходимости муторной работы с фотошопом там где это возможно. Более подробное описание возможностей можно найти на сайте.

Отмечу лишь, что вся обработка ведется с 16-битным цветом (16 бит на канал).
С версии 1.0.1.96 программа поддерживает напрямую формат цифровых зеркальных камер Canon (.cr2), и с успехом может быть использована в качестве raw-конвертора.
Программа написана на WPF (.Net 3.0) и потому ее интерфейс отличается в лучшую сторону от конкурентов.
Direct link
21.02.08
Tags: WPF (.Net 3.0), Программирование / 8:39 pm , Victor Laskin
Scott Guthrie в своем блоге написал о доработках WPF, которые будут реализованы в ближайшем будущем:
Наконец то в WPF будут добавлены контролы для выбора даты и календарь, а также Риббон и DataGrid.
Later this year we are also planning to release a number of new controls for WPF. Included in the list we are working on are DataGrid, Ribbon, and Calendar/DatePicker controls.
Также будут сделана оптимизация BitmapEffects на уровне железа.
Но больше всего меня интересует новый класс WriteableBitmap:
We’ll be including a new WriteableBitmap API that enables real-time bitmap updates from a software surface. We’ll also be adding support for a powerful new effects API that enables you to build richer graphics scenarios.
Пока рано говорить о том, что он может дать.
Direct link
Tags: Программирование / 3:45 pm , Victor Laskin
Микрософт решил раздать свои продукты студентам бесплатно. Инициатива DreamSpark уже доступна в 11 странах, но наша, естественно, в список стран пока не входит. Официальный пост и видео с Биллом можно найти тут
Доступные продукты: Windows Server, Expression Suite, XNA Game Studio, SQL Server и новая Visual Studio.
Остается надеяться, что русским студентам все это тоже вскоре будет доступно.
Direct link
10.02.08
Tags: .Net 2.0, Программирование / 9:33 pm , Victor Laskin
Всякий раз, когда я пользовался Math.Min() или Math.Abs(), я думал о том, а не лучше было бы написать эти операции простым неравенством. Наконец, я решил просто написать небольшой тестик, который должен раз и навсегда расставить все на свои места.
В качестве основы я взял почти пустой цикл:
int N = 100000000;
Start = DateTime.Now;
//Almost nothing!
for (int i = -N; i < N; i++)
result = i;
End = DateTime.Now;
Почти пустой для того чтоб компилятор не сделал каких нить слишком умных действий по его оптимизации. В первую очередь испытанию подверглась функция вычисления модуля числа. Реализовать эту простую операцию можно так:
for (int i = -N; i < N; i++)
{
result = i;
result = Math.Abs(i);
}
или, например, так:
for (int i = -N; i < N; i++)
{
result = i;
result = (i >= 0) ? i : -i;
}
Из времени выполнения этих циклов я вычел время выполнения пустого цикла. Получились интересные результаты:
Read more »
Direct link
« Previous entries · Next entries »