27
марта

Тема здоровья всегда актуальна


Запустили beta версию интернет проекта, который помогает пользователям удобно передавать опыт лечения в виде отзывов и рейтингов о лекарственных средствах. Не могли определиться с названием, и доменом. Слова типо drugs, у нас часто ассоциируются с наркотиками, и домен типо drugs-ratings хоть и правильный, с другой стороны не всем понятный.
Увидели и купили с аукциона itabletki, по-моему название довольно забавное, и легко запоминающиеся. Хоть я и не люблю транслит, здесь мне кажется это хороший вариант.

Написан проект на любимом PHP фреймворке YII, который уже довольно прочно встал на ноги и становится трендовым. Активно используем ActiveRecord, правда в некоторых местах пришлось применить raw SQL. База — MySql, вывозит. Обратили внимание на дружелюбные URL, например название лекарства это первый параметр в строке запроса. Пример - http://itabletki.ru/viagra

Самое трудное это постичь предметную область — лекарства, действующие вещества, болезни, фарм группы, и различные связи между этими сущностями. Направили знакомые врачи и фармацевты.

Так же с первого раза мало реально спроектировать идеальный дизайн и интерфейс, будем учиться… Воспользовались элементами из CSS фреймворка Twitter Bootstrap, очень простой, функциональный CSS фреймворк. Идеально для админки, или прототипов.

Предстоит огромная работа над контентом, юзабилити и поисковой оптимизацией. Из минусов — сейчас болезни представлены в основном в терминологии МКБ — международного классификатора болезей, хорошо для специалистов, мало понятно простым пользователям.

Поиск уже работает, в планах подключение полнотекстового поиска — Zend Lucene или Apache Solr. Скоро появятся средние цены на препараты — довольно востребовано по запросам в поисковых системах.

Работали вчетверомдизайнер, верстальщик, два программиста.

Сайт занимает два доменаitabletki.ru, i-tabletki.ru.

31
января

График сезонной депрессии

Написал    в категории  Портфолио Обсудить

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

Задача. Перерисовать график сезонной депрессии.

Результат моего труда, вот из этой неказистой картинки:

21
июля

Классический MVC

Написал    в категории  Программирование 1

Это мой вольный перевод статьи Била Сандерса о реализации классического мета паттерна MVC на Smalltalk-80. Так как это мой первый опыт, строго не судите и в комментариях желательно оставлять какие либо замечания по тексту. Переводил не дословно, немного из русскоязычных источников накопал (и каюсь, перевёл не всё).

Это не введение в модель MVC, а  обзор его осуществления на Smalltalk-80 для понимания первоначальных намерений и функций триады. Классическая MVC поможет лучше понять последующее развитие  паттернов, которые появились позже. Посмотрим, как простое MVC приложение работает в Smalltalk-80 и изучим как оно может быть реализовано на языке ActionScript.

Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер») — архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты.

Современный вид MVC.

Реализация Model-View-Controller в Smalltalk-80.

Модель MVC облегчает разделение ответственности при разработке интерактивных графических приложений. Логика и состояние приложения, как пользователи взаимодействуют с приложением, и как состояние приложения представляется пользователю  по средствам отдельных элементов триады MVC. Smalltalk-80 использует метафору MVC, что обеспечивает встроенную поддержку для интерактивной разработки приложений. Идея заключалась в том, чтобы обеспечить набор встроенных компонентов пользовательского интерфейса, таких как кнопки, меню и списки, которые могут быть подключены к GUI приложения. Для эффективного использования этих встроенных элементов интерфейса, реализация должна была быть построена в соответствии с MVC. Давайте посмотрим на концептуальную диаграмму приложения Smalltalk-80. Прочитать полностью →

23
мая

От суеверий к пониманию


Существуют моменты когда хочется перевести стрелки на баги языка, фреймворка или API какого нибудь ресурса, мол у меня идеальный код, а во всём виноват кто-то другой. Вот что думает по этому поводу Стив Макконнелл:

Одно из основных различий между любителями и профессиональными программистами — различие, появляющееся при переходе от суеверия к пониманию. Под суеверием я здесь понимаю не иллюзию, что программа выдаёт больше ошибок в полнолуние, а замену «прочувствования» программы и её пониманием. Если вы часто обнаруживаете, что подозреваете компилятор или аппаратные средства в ошибке, вы в плену суеверий. Давнишние исследования показали, что только  около 5% всех ошибок связано с аппаратурой, компиляторами или ОС (Ostrand and Weyuker, 1984). Сейчас этот процент, видимо, ещё меньше. Программист, достигший сферы понимания, обращает внимание прежде всего на своё творение, являющееся потенциальным источником 95% ошибок. Нужно знать роль каждой строки своей программы. Ничто не может называться верным только потому, что выглядит работоспособным. Если вы не знаете, почему это работает, вероятно, оно и не работает на самом деле.

С. Макконнелл (Совершенный код)

Стараемся, думаем, учимся и превращаемся из любителей в профессионалы :)

28
марта

Организация визуальных объектов


Например нужно создать контейнеры с разделами сайта и не запутаться кто под кем лежит и ид.

Задача. Удобно организовать визуальные объекты на сцене.

Это как то централизует управление основными визуальными слоями в приложении:

public class StageProxy extends MovieClip {
        private var _layers:Object;

	/**
	 * Modules
	 */
	public static const CONTACTS:String = "contacts components layer";
	public static const PORTFOLIO:String = "portfolio components layer";
	public static const NEWS:String = "news components layer";
	public static const SERVICE:String = "service components layer";

	private function initScene():void {
		_layers = { };

		// main module
		stage.addChild( _layers[PORTFOLIO] = new MovieClip() );
		stage.addChild( _layers[NEWS] = new MovieClip() );
		stage.addChild( _layers[SERVICE] = new MovieClip() );
		stage.addChild( _layers[CONTACTS] = new MovieClip() );
	}

	//----------------------------------
	//--------  GETTER method
	//----------------------------------
	public function getLayer(layerKey:String):Object {
			return _layers[layerKey] as Object;
	}
}

Забираем нужный слой вот так:

_stageProxy.getLayer(StageProxy.NEWS);

Всё.

13
марта

Поварёнок. Платформер для Макфы

Написал    в категории  Flash, Портфолио 1

Игра для макаронной компании «Макфы». Главный герой поварёнок, пытается добыть все ингредиенты чтобы сварить отпадный супчек, помогите ему в этом!

Задача. Создать классический платформер на подобие супер марио.

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

Данная работа была сделана на период работы в студии Ample.
21
февраля

Олимпиада в Ванкувере 2010. Спустя неделю

Написал    в категории  Новости 6

12 февраля 2010 года, начались ХХI олимпийские игры, событие, которого с нетерпением ждал весь мир, с момента когда завершилась олимпиада в Турине. Первая новость из олимпийского Ванкувера, которая тут же облетела весь мир. ожидающий начало спортивного праздника: «Трагически погиб грузинский саночник Нодар Кумариташвили за несколько часов до начала открытия олимпийских игр», данное событие сразу повергло в шок весь мир. Чуть позже выяснилось что данная трагедия произошла из-за неправильной и очень опасной, высокоскоростной трассы. Максимальная скорость на ней – 154 км/ч. Для сравнения, в Турине было 138 км/ч.
Затем уже на открытии олимпийских игр в самый ответственный и долгожданный момент отказала канадская техника при зажжении олимпийского огня, один из факелов не выехал.
Все надеялись, что все плохое на этом и закончится. Но в истории олимпиад нет ни одной, которая бы не прошла под каким-либо девизом, так, например, олимпиада в Cолд-Лейк-Сити стала самой скандальной, а в Турине самой дорогой.

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

Это то, чем запомнится XXI олимпиада для всего мира.  А какой же станет Ванкуверская олимпиада для России? Прочитать полностью →

2
декабря

Слайд-шоу

Написал    в категории  Программирование 3

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

Задача. Сделать слайд-шоу.

Пример кода реализующий задачу:

var idInt:Number;

// Массив имён ссылающихся на экземпляры картикон в библиотеке
var imageArr:Array = new Array("im1","im2","im3");
// Текущее изображение
var targetImage:Number = 1;
// Следующее изображение
var nextImage:Number = 2;

function startSlide():Void {
        // На верхний слой кидаем начальное изображение
	target_mc.attachMovie(imageArr[targetImage],"image", 1);
        // Под него кладём следующее
	nextImage_mc.attachMovie(imageArr[nextImage], "image", 1);
        // Запускаем анимацию смены картинки
	mask_mc.gotoAndPlay(2);

        // Меняем id текущего изображения
	targetImage=nextImage;

        // Запускаем таймер на 12 секунд, далее рекурсивно вызываем функцию
	clearInterval(idInt);
	idInt = setInterval(startSlide, 12000);
	nextImage++;

	if (nextImage > imageArr.length-1) {
		nextImage = 0;
	}
}

startSlide();
Пример работы был сделан на период работы в студии Ample.

Rss Feed Tweeter button Facebook button