Наше приложение растет. В этой части сосредоточимся на компонентах, пригодных для повторного использования, а также на передаче данных компонентам. Давайте отделим список героев в отдельный компонент и сделаем этот компонент пригодным для повторного использования.
Рубрика «tutorial» - 15
Angular 2 Beta, обучающий курс «Тур героев» часть 3
2016-04-27 в 16:55, admin, рубрики: angular 2.0, angular2, AngularJS, javascript, tour of heroes, tutorial, Разработка веб-сайтовКапелька рефлексии для С++. Часть вторая: публикация на GitHub
2016-04-19 в 23:08, admin, рубрики: c++, cmake, open source, tutorial 
В данном цикле статей я больший упор хотел сделать на историю разработки некой open source библиотеки, безотносительно к конкретной cpprt. Историю от написания исходников (с акцентом на какие-то интересные вещи, которые интересно почитать людям вообще, безотносительно к самой библиотеке), до формирования репозитория (с уроком CMake) и продвижения библиотеки (где часть продвижения подразумевает публикацию данного цикла статей). Такой себе учебный демо-проект для людей, которые подумывали выложить свой open source, но либо боялись, либо не знали как.
Я, конечно, был бы не против, если бы библиотека как-нибудь ожила и в статьях есть минимальное количество рекламы библиотеки (я старался прятать её под спойлеры). Но всё-таки цели данного цикла я рассматривал скорее учебные и, как я надеюсь, применимые вообще, без связи с моей библиотекой.
Просьба учитывать это при чтении цикла статей.
Эта статья является второй в цикле о библиотеке cpprt, предназначенной для добавления и использования минимальной метаинформации о классах С++.
В отличие от первой статьи, здесь почти ничего не будет о самой библиотеке cpprt. Я постарался подробно и максимально абстрагируясь от своей библиотеки изложить историю оформления библиотеки для её цивилизованной публикации на GitHub.
В статье затрагиваются вопросы лицензирования, структуры проекта и достаточно много внимания уделяется CMake.
Капелька рефлексии для С++. Часть первая: ретроспектива разработки
2016-04-19 в 23:08, admin, рубрики: c++, reflection, tutorial 
Создавать объекты по строковым именам их классов и получать информацию о наследниках классов во время исполнения программы. С++ либо не поддерживает, либо слабо поддерживает подобный функционал «из коробки».
В этом цикле статей будет я подробно рассказываю о том, как создавал свою микро-библиотеку, реализующую подобное поведение и как готовил её к публикации.
Angular 2 Beta, обучающий курс «Тур героев» часть 2
2016-04-15 в 17:07, admin, рубрики: angular 2.0, angular2, AngularJS, javascript, tour of heroes, tutorial, Разработка веб-сайтовНужно больше героев
Нашей истории необходимо больше героев. Мы расширим наше приложение Тур героев, чтобы отобразить список героев, в котором пользователь может выбрать героя, и посмотреть детальную информацию о нем.
Разбавляем асинхронное программирование функциональным на Scala
2016-04-11 в 10:38, admin, рубрики: asynchronous, functional programming, scala, scalaz, tutorial, параллельное программирование, функциональное программированиеПриветствую! В этой статье будет показано, как, имея на руках обычные Future-ы, сделать в scala подобие корутин и асинхронные stream-ы. Этакий небольшой туториал по функциональному программированию.
Что это и зачем
К сожалению, простое последовательное комбинирование 2х и более асинхронных операций (загрузить конфиг, а потом картинку по адресу из конфига как пример) — это все, на что способны обычные Future-ы в качестве монад. Они не позволяют ни сохранять состояние, ни делать циклы из асинхронных операций, ни выдавать несколько (или бесконечно много) значений. Вот этими недостатками мы сейчас и займемся.
Давайте для определенности представим некий виджет. Он ждет конфиг, который обновляется с определенной периодичностью, загружает по адресу из конфига значение (например, температуру), и рисует на экране текущее значение, минимум, максимум, среднее и так далее. И все это делает в цикле, да еще и асинхронно.
Применив знания из этой статьи, мы сможем этот процесс описать примерно так:
// Про 'FState' - далее, пока же просто примем, что это - такая необычная Future
def getNextConfig: FState[Config]
def getTemperature(from: String): FState[Int]
case class State(temperature: Int, sumTemp: Long, count: Int) {
def isGood = ...
}
// Как видим, получается единый асинхронный алгоритм с состоянием,
// которое извне этого алгоритма не видно
val handle =
while_ ( _.isGood)
{ for (
config <- getNextConfig();
if (config.isDefined); // пустой конфиг - прекращаем выполнение
nextValue <- getTemperature(config().source); // грузим значение температуры
state <- gets[State]; // тут мы берем текущее состояние
newState = State(nextValue, state.sumTemp + nextValue, state.count + 1);
_ <- puts(newState); // .. и меняем его
_ <- runInUiThread { drawOnScreen(newState) }
) yield() }
Или вот так:
val configs: AsyncStream[Config] = ... // получаем откуда-то stream конфигов
def getTemperature(from: String): FState[Int]
case class State(temperature: Int, sumTemp: Long, count: Int)
// Получается то же самое, только вместо зависимости 'getNextConfig'
// мы, по сути, передаем сами данные - stream из конфигов
val handle =
foreach(configs) {
config => for (
nextValue <- getTemperature(config().source); // грузим значение температуры
state <- gets[State]; // тут мы берем текущее состояние
newState = State(nextValue, state.sumTemp + nextValue, state.count + 1);
_ <- puts(newState); // .. и меняем его
_ <- runInUiThread { drawOnScreen(newState) }
) yield()
}
Всех, кто заинтересовался, прошу под кат.
Читать полностью »
Angular 2 Beta, обучающий курс «Тур героев» часть 1
2016-04-07 в 14:41, admin, рубрики: angular 2.0, angular2, AngularJS, javascript, tour of heroes, tutorial, Разработка веб-сайтовВступление
Эта статья основана на документации Angular 2 и представляет собой перевод двух статей — Вступление и Редактор героя.
Используется Angular 2 release is beta.12.
Тур героев: обзор
Наш великий план — построить приложение для кадрового агентства героев. Даже героям нужна работа!
Конечно, в этом учебнике будет рассмотрены только основные понятия. То, что мы создаем будем иметь много функций, которые мы ожидаем найти в полномасштабных, ориентированных на данные приложениях: получение и отображение списка героев, редактирование информации о выделенном герое, навигация между различными представления данных о героях.Читать полностью »
Установка Mercurial на shared-хостинг
2016-04-05 в 13:36, admin, рубрики: Mercurial, tutorial, Разработка веб-сайтов, Системы управления версиямиЗа все время опыта веб-разработки приходилось сталкиваться с различными хостингами на которых работали сайты: от тех, на которых поддерживаются только текстовые форматы (а-ля narod.ru) до виртуальных машин, на которых есть root доступ.
Относительно недавно столкнулся с проблемой: велась разработка сайта на shared хостинге, имеющем достаточный набор технологий для обычного сайта для контента вроде новостей. Одной из существенных проблем стало отсутствие системы контроля версий. Установить ее традиционным способом не представлялось возможным. Были начаты поиски пути для решения этой проблемы.
Задача была выполнена, и как она была решена — пошагово описано ниже.
Читать полностью »
Создание экспертной системы в Wi!Mi 1.1
2016-04-05 в 10:41, admin, рубрики: IDE, tutorial, Wi!Mi, XML, Алгоритмы, миварный подход, Семантика, создание алгоритмов, экспертная система, метки: Wi!Mi, миварный подход, создание алгоритмов, экспертная система
Wi!Mi – это инструмент для создания моделей знаний с неограниченным количеством связей, параметров и отношений, обладающий логическим выводом. Скачать данный конструктор можно с официального сайта.
К сожалению, адекватного туториала по данной программе я не нашел, не считая видеоурока на youtube. Поэтому решил написать его самостоятельно.
Читать полностью »
Использование ClickOnce и прокси-сервера
2016-03-22 в 11:56, admin, рубрики: .net, C#, ClickOnce, tutorialClickOnce — технология Майкрософт для развёртывания приложений. Приложения ClickOnce могут проверять наличие новых версий по мере их доступности и автоматически заменять любые обновленные файлы, что очень удобно.
Бывает так, что для управления доступом пользователей к Интернету и ресурсам внешней сети используется прокси-сервер (с аутентификацией или без). ClickOnce предоставляет поддержку встроенной проверки подлинности прокси-сервера в Windows, начиная с версии .NET Framework 3.5, но не поддерживает другие протоколы проверки подлинности, такие как «Обычная проверка подлинности» или «Краткая проверка подлинности».
Читать полностью »
Настройка сервера репозиториев на основе SCM-Manager под Debian
2016-03-17 в 6:50, admin, рубрики: Debian, tutorial, Настройка LinuxСтолкнулся с тем, что репозитории раскиданы по разным серверам с разными настройками без возможности централизованного управления и мониторинга. Появилась идея сделать одно место хранения со следующими требованиями:
- авторизация пользователей через Active Directory
- e-mail уведомления о пушах
- управление и создание репозиториев, а так же управление доступом через web-интерфейс
- возможность размещения mercurial, git, svn
- простота разворачивания
- поддержка SSL
Изучение гугла и тестовые установки различного ПО привели меня к SCM-manager, который позволял практически из коробки реализовать все поставленные требования.
Внедрение сервиса проводилось на Debian 8.3 x64.
Под катом процесс установки и настройки:
Читать полностью »
