Popular Tags:

Как я получал свой первый заказ на фрилансе

13.08.2015 at 18:35


Я уже ранее описывал биржи фриланса. Сегодня расскажу как получал свой первый заказ на upwork.

Заполнение профиля

В профиле нужно заполнять как можно больше полей. Нормальное серьезное фото. Описание себя должно быть действительно подробным. Мало просто перечислить технологии, нужно написать побольше о себе.
Не лишним будет пройти тесты — лучше чем ничего, пока нет отзывов. read more

WPF tricks

13.07.2015 at 07:58

Переопределение стиля по типу контрола

Иногда возникает ситуация, когда нужно переопределить стиль, который навешивается не по ключу, а по типу. Делается это очень просто: в роли ключа у такого типа выступает TargetType:

< Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}" x:Key="InputTextBox">

Обновление биндинга руками

Осторожно, костыль! Если вам нужно обновлять биндинги руками, значит что-то уже пошло не так и у вас нарушен MVVM. read more

Новости фриланса

10.07.2015 at 18:26

elance.com переезжает на upwork

http://pumainthailand.com/elance-zakryvaetsya-i-polnostyu-migriruet-na-upwork/

upwork является основной биржей для меня, так что я рад.

Вышел первый выпуск русскоязычного подкаста о фрилансе

http://jff.name/freelance-podcast/

Гость выпуска — Пума. Советую послушать тем, кто раздумывает, заниматься фрилансом или нет.

Бонус: интересные ссылки о фрилансе на русском языке

http://pumainthailand.com/
Блог Пумы

http://jff.name/
Блог Евгения Заплетина

http://a-freelance-dad.tumblr.com/
Блог Ришата Мухаметшина

https://medium.com/@nodermann
Блог Andrew Nodermann

https://toster.ru/tag/%D1%84%D1%80%D0%B8%D0%BB%D0%B0%D0%BD%D1%81/questions
Тег «Фриланс» на тостере read more

Как я начал фрилансить

15.06.2015 at 05:05

С чего все началось

В конце прошлого года пришло понимание того, что нужно искать дополнительные источники дохода. Желательно в твердой валюте. Решил начать фрилансить. К сегодняшнему дню уже накопил некоторый опыт, буду его постепенно описывать.
Фриланс является для меня дополнительным заработком в свободное от основной работы время. Это важно, так как невозможность брать проекты фуллтайм сильно ограничивает. read more

OxyPlot tricks

22.05.2015 at 19:54


Начал использовать библиотеку OxyPlot. Буду в этой статье копить полезные моменты по работе с ней.

Добавление вертикальных линий.

public void AddVerticalLine(PlotModel model)
{
	var annotation = new OxyPlot.Annotations.LineAnnotation()
	{
		Type = OxyPlot.Annotations.LineAnnotationType.Vertical,
		X = 50,
		Color = OxyColors.Blue,
		LineStyle = LineStyle.Solid
	};
	Data.Annotations.Add(annotation);
}

Есть много других видов аннотаций.

Добавление логарифмической оси Y

logAxis = new OxyPlot.Axes.LogarithmicAxis();
logAxis.Position = AxisPosition.Left;
logAxis.Base = 10;
logAxis.MinorStep = 1;
logAxis.AbsoluteMaximum = 10000;
logAxis.AbsoluteMinimum = 0.01;
Plot.Model.Axes[1] = logAxis;

Делать в обработчике события Loaded

Ограничение скроллинга

model.Axes[0].AbsoluteMaximum = maxX;
model.Axes[0].AbsoluteMinimum = minX;

Перерисовывание графика

Plot.InvalidatePlot(true);
read more

Простой способ создать PDF на C#

12.05.2015 at 21:03


На одном проекте возникла необходимость реализовать создание несложного отчета в PDF. Делал я это с помощью библиотеки itextsharp. Библиотека позволяет создавать PDF различными способами, самым простым мне показалось ручное рисование. Вот как это делается:

Создание документа

var document = new iTextSharp.text.Document();
using (var writer = PdfWriter.GetInstance(document, new FileStream("result.pdf", FileMode.Create)))
{
	document.Open();

	// do some work here

	document.Close();
	writer.Close();
}

Рисование линий

writer.DirectContent.MoveTo(35, 780);
writer.DirectContent.LineTo(430, 780);

Добавление картинки

var logo = iTextSharp.text.Image.GetInstance(new FileStream(@"Resources\logo.jpg", FileMode.Open));
logo.SetAbsolutePosition(440, 758);
writer.DirectContent.AddImage(logo);

Добавление текста

helvetica = new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 12);
helveticaBase = helvetica.GetCalculatedBaseFont(false);
writer.DirectContent.BeginText();
writer.DirectContent.SetFontAndSize(helveticaBase, 12f);
writer.DirectContent.ShowTextAligned(iTextSharp.text.Element.ALIGN_LEFT, "Hello world!", 35, 766, 0);
writer.DirectContent.EndText();

Документация

itextsharp — порт java библиотеки itext, API у них совпадает. read more

Способы организации хранения данных в распределенных системах

11.10.2014 at 11:15


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

MongoDB

Данные реплицируются на несколько серверов. Читать актуальные данные и писать можно только на главном сервере. Если главный сервер недоступен — происходят выборы нового главного. Им становится тот сервер, на котором более актуальные данные. read more

Генерация текста с помощью цепи Маркова на F#

16.09.2014 at 17:59


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

Алгоритм генерации

На входе в алгоритм — текст, в нашем случае — спарсенные с хабра статьи. Весь текст разбивается на последовательности из трех слов. Каждое новое слово в генерируемом тексте подбирается на основе двух предыдущих следующим образом: берутся все тройки, которые начинаются с этих слов и из них выбирается случайная. read more

Рецензия. MATLAB Succinctly

08.09.2014 at 04:00

Matlab
Очередная книга из серии Succinctly.
MATLAB — это сокращение от Matrix Laboratory. Эта программа предназначена для математических вычислений. Заточена именно для работы с матрицами.
Основные темы книги:

  • Пользовательский интерфейс
  • Типы данных
  • Основы синтаксиса
  • Массивы и матрицы
  • Скрипты
  • Построение графиков
  • ООП

Все эти темы раскрыты достаточно подробно для того, чтобы приступать к работе. read more

AttachedProperty

03.09.2014 at 05:17

Это подвид DependencyProperty, которые объявляются в одном классе, а значения устанавливаются для экземпляров другого класса. Один из самых распространенных примеров – Grid.Row и Grid.Column, которые устанавливаются для контролей, вложенных в грид.

Особенности

  • Класс, в котором объявлено AttachedProperty не обязательно должен наследоваться от DependencyObject.
  • Классы, для экземпляров которых устанавливается значение AttachedProperty, должны быть унаследованы от DependencyObject.
read more