Як відомо, будь яка конференція - це 50% доповіді, та 50% - це спілкування на афтерпаті. І тут організаторам вдалось зробити все на вищому рівні: афтерпаті після першого дня продовжувалась майже до початку наступного - до 7 ранку на березі моря.
Development using different platforms, languages, etc: links, thoughts, experience, articles.
Tuesday, July 15, 2014
OdessaJS 2014
Як відомо, будь яка конференція - це 50% доповіді, та 50% - це спілкування на афтерпаті. І тут організаторам вдалось зробити все на вищому рівні: афтерпаті після першого дня продовжувалась майже до початку наступного - до 7 ранку на березі моря.
Tuesday, February 25, 2014
Easy Dart on Google Compute Engine (GCE)
TL;DR;
curl -L "https://docs.google.com/uc?authuser=0&id=0B1i4NDqKFLYJM3NlYnRhLXFfXzQ&export=download" |sh
Long version:
/dart: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ./dart)But when you want to have your instance up and running quick, probably you don't want to spend instance's resources on recompile as it will cost you additional money.
/dart: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./dart)
Wednesday, February 12, 2014
Go CMS for Google Apps Engine
Tl;dr
Sources of web site for testing: https://github.com/olostan/test-website
Background
Not so long ago I've starting digging into Go language and found it very attractive for server-side development. The reasons are:- It is fast ("near C performance")
- It is garbage collected
- Syntax is though little bit strange (comparable to Dart), but still quite easy to learn
- Easy to start
Speaking about performance, I should mention cost. If you're in "cloud", then you should think about "cost per request" - how much resources were used to serve request. So if application is faster, it should be cheaper in case if you're using real "cloud" platform, such as GAE that can automatically scale your application.
The Idea
Sunday, November 24, 2013
Child process balancer for Node.JS: Building block of Message Driven Architecture
The Idea
Sunday, April 10, 2011
Very simple EventBus/PubSub implementation (Java)
So I've used idea of "Java Programming Tip: Building Your Own Event Bus" blog post, and made my own implementation.
It allows very-very simple and not optimized way of publishing/subscribing on events with consentation on simplicity.
Friday, March 25, 2011
Math coombinator: 5-3-4/1/2=0
xxx: There is numbers 1 3 4 and 6. Task is to get 24 using addition, substruction and multiplication. Numbers could be used only once....and I start thinking about efficient algorithm for solving this problem!
yyy: Listen, can you send me when I will be at office - I got something else to do at home
To simplify little bit I've decided to forbid using grouping parentheses. So problem could be stated in such way:
There is a set of numbers A1...An, and target number X. Task is no find such combination of this numbers (order could be changed), that Ax1 (op1) Ax2 (op2) ... (opn-1) An = X. (op1..n-1 - are one of operations "+","-","*","/")
I decided to use C++ to practice with this language. Mostly same solution could be made on any language.
Ok, lets start.
First analysis shows that this problem could be solved with finding vertex in the graph with predefined characteristics. So we can reduce this problem to problem of finding path from some (any) initial vertex to target vertex.
Graph could be set in such way:
- Vertex are some permutation of initial numbers and some set of operations.
- Two vertexes are connected if there is one swap op numbers and one operation changed.
So from any vertex we can get connected vertexes in such way: swap all possible pairs of numbers and for all swapped numbers change one operation.
For example: we have initial numbers 1,2,3. So from vertex (1+2+3) we can get vertexes: (2+1+3),(1*2+3), (3*2+1) etc.
After initial implementation of this algorithm I got results what I've expected. Example output could be:
result:2-1*3-4+5=0 (tested 29828)Nice, but I do not like 29k of tested solutions... "Can we do better"? I think yes. Lets remember "A* search algorithm". May be we can use that idea and sort solutions based on how closer we are to target?
There was a tiny change: replace 'queue' with 'priority_queue' and add cost function that will compare two solutions based on how close we are. So each time we get some solution to test we get solution that is more closer to target result.
So after this change I got:
result:4/1+3-5-2=0 (tested 4)Much better! So with only such small optimization I've lowered length of searching to 4 iterations! Here is a table comparing results of 'queue' and 'priority_queue':
| priority_queue | queue |
| result:4/1+3-5-2=0 (tested 4) | result:2-1*3-4+5=0 (tested 29828) |
| result:1+2-3-4+5=1 (tested 3) | result:1-2+3+4-5=1 (tested 251) |
| result:3/1*4-5*2=2 (tested 109) | result:3-2-1*4+5=2 (tested 29601) |
| result:1-2+3-4+5=3 (tested 3) | result:1-2+3-4+5=3 (tested 248) |
| result:1*2+4-5+3=4 (tested 3) | result:1-2*3+4+5=4 (tested 246) |
| result:1+2+3-5+4=5 (tested 2) | result:2+1+3+4-5=5 (tested 11) |
| result:1+5+3*2*4=30 (tested 3) | result:2*4*3+1+5=30 (tested 558) |
| result:1+5/2*3*4=31 (tested 4) | result:3*5/2*4+1=31 (tested 59961) |
| result:5*2*4-1-3=36 (tested 181) | result:4*2*5-1-3=36 (tested 1006943) |
| result:1*2*4*5-3=37 (tested 160) | result:2*1*5*4-3=37 (tested 1004303) |
Monday, November 8, 2010
Ubunted
И вот с выпуском Ubuntu версии 10.10 решился.
Что понравилось
- Дружелюбие. При чем не только "для чайников", но и как "адвансед" пользователь я смогу очень удобно разметить диск, указать какую FS (а из десяток на выбор).
- Софт. Поиск, установка софта проcто очарователен. При чем как и "Центр приложений", так и "Менеджер пакетов". Особо отмечу то, насколько "вливается" установка приложений, которых нет в списке - достаточно с сайта загрузить пакет, как будет автоматически зарегистрирован источник, и софт будет атоматически обновляться.
- Эстетичность. Многие судят Ubuntu за то, что она копирует макось. Возможно. Но это, блин, красиво. Все на своих местах. Я сначала попробовал другие темы, но вернулся на "дефолтовую" - просто и со вкусом. Хотя немного серовато. Но всякие compiz-эффекты просто радуют глаз и расслабляют (например Win+E, Win-W).
- Скорость. По сравнению с Windows7 просто поражает то, как ведет себя система сразу после загрузки (которая происходит просто магически быстро - даже заставка с точечками не успевает толком помигать) - а именно отзывчивость системы. Загрузилась - работай. В Windows после загрузки при запуске броузера или другой софта идут какие-то подгрузки винта и т.д. На самом деле мне иногда это было тяжело понять - ведь, к примеру, броузер "весит" метров.. ну еще 20 библиотеки незагруженные. При современных винтах 40мб грузится примерно секунду. Видимо Windows на фоне еще делает много операций.
Что НЕ понравилось
- "по умолчанию" система ввода плохо дружила с моей мышкой (A4Tech X7) при переключении раскладки. Чинится установкой новой версии xinput (спасибо инфраструктуре PPA это делается в 2 клика). Подсказали на "хабре".
то, как встроен чат в систему. Идея отличная, но я не сразу понял что при закрытии "Списка собеседников" я выхожу из онлайна. При этом стандартный клиент, который идет с системой не умеет прятаться в трей.(см. комментарии. может что поменяли)- треевые "popup-ы", которые размываются при наведении мышкой - ну привык я когда идет popup о том, что новое сообщение быстро кликать на попапе чтоб открыть его. Тут эти popup-ы чисто информативные.
- в целом имхо "трей" сейчас остается самым слабым местом - наборы иконок там сильно выбиваются из общей целосности интерфейса. Все-таки система треевых иконок (которые в notification area) в Windows7 имхо более продуманна - можно некоторые прятать и показывать по необходимости.
- Шрифты. Да, стандартные красивые, но я все-таки привык к обычным, виндовым. По этому быстро доставил себе пакет дополнительных шрифтов.
Из "нестандартных" установил Chrome, Skype, Dropbox, VMWare и ощущение от системы просто отличные.
Не хватает только iTunes (для более простой работы с iPad) нет.
Monday, August 23, 2010
Beta-browsers tests: IE9, Chrome, FF4, Opera


К сожалению, в других броузерах поддержки апаратного ускорения пока нет.
За одно прогнал свои броузеры на HTML5test.com (June 8, 2010 - version 1.0):
| Browser | Result |
| Chrome 7.0.500.1 canary build (+webgl) | 232 |
| Chrome 6.0.472.41 beta | 217 |
| Firefox 4 beta 3 | 190 |
| Opera 10.61 | 159 |
| IE9 (1.9.7916.6000) | 96 |
Жаль IE9 плетется в конце не смотря на то, что судя по блогам разработчики ИЕ9 обещают сильную поддержку HTML5...
UPD: Чисто для статистики приведу результат санспайдера на моей машине:
| Browser | Result |
| Chrome 7.0.500.1 canary build (+webgl) | 275.4ms +/- 0.6% |
| Chrome 6.0.472.41 beta | 283.9ms +/- 1.6% |
| Firefox 4 beta 3 | 558.1ms +/- 5.6% |
| Opera 10.61 | 281.0ms +/- 0.8% |
| IE9 (1.9.7916.6000) | 390.2ms +/- 0.4% |
Думаю пора делать новую версию санспайдера - ибо некоторые тесты по 1-2мс, что не дает нормальной точности.
Wednesday, August 11, 2010
Chrome: Stable ahead of Beta?
Tuesday, June 29, 2010
C#: Invoke method from null-valued variable?
A a = null;
a.SomeMethod();
могут не вызывать NullReferenceException, а отрабатывать и выполнять какой либо функционал или даже возвращать значения.
Как?
Методы-расширения:
public class A { }
public static class AExt {
public static void SomeMethod(this A a) {
Console.WriteLine("Invoked with "+(a==null?"null":a.ToString()));
}
}
Это конечно хорошо, но имхо это нарушает "читабельность" - лучше явно проверять и обрабатывать null-значения, чем прятать обработку в методы расширения.
Но факт остается факт - у переменной со значением null можно вызвать метод :) Можно спрашивать на собеседованиях чтоб оценить реакцию :)
Wednesday, June 2, 2010
Ищем соратника
В целом конечно немного стремно искать "не по знакомым" - пока команда укомплектовывалась чисто друзьями, которых знаю уже довольно давно, но друзья-девелоперы рано или поздно заканчиваются.
В общем, ждем новых друзей в нашу дружную команду :)
Tuesday, April 27, 2010
GWT UiBinder - Separation of Concepts
Отличный материал для идеи, которая недавно пробегала - вместо скучных обычных докладов, провести что-то вроде группового мастер-класа. И как раз пошаговая разработка UI с UiBinder'ом думаю будет довольно интересной.
Saturday, April 24, 2010
C# 4.0: Небольшие малозаметные, но важные изменения
Решил перечислить их с небольшими комментариями:
- Во многие типы наконец-то добавили TryParse (TimeSpan, Enum, Guid).
- Чуть проще работа со строками: Join'нить и Contact'ить можно все что IEnumerable
, добавили String.IsNullOrWhiteSpace - Идея Enum'ов как флаги продолжила свою жизнь в виде Enum.HasFlag
- Наконец-то не надо изобретать велосипед при копировании с одного потока в другой - System.IO.Stream.CopyTo
- Теперь не надо писать конструкции типа:
Вместо этого можно воспользоваться System.Lazy
private MyType field;
public Field { get { return field ?? (field = new MyType()); } } - Добавили System.Tuple<...> - вот этого часто не хватало. Определять свои классы лень только для того, чтоб вернуть два-три значения, а out-параметры не очень красивы.
Friday, April 23, 2010
Chrome: Desktop Notifications
Сразу подумалось - ВебОсь все ближе и ближе. Ведь сразу же открываются возможность для мейл-клиентов, IM, календарей и т.д.
Правда могли бы чуть красивей сделать. например, используя тему броузера. Но, думаю, это еще впереди - ведь пока в релиз не ушло.
Sunday, April 18, 2010
Google Chrome: enable html5 geolocation
Удивило, что в хроме показало "Geolocation 0/5", хотя я точно читал что в хроме добавили поддержку геолокации.
После небольшого гугления оказалось все просто - достаточно добавить параметр " --enable-geolocation"
После этого имеем сразу 142/160 (5.0.342.9 beta, Windows7, x64)

Интересно, какие еще флажки есть для большей поддержки html5?
Saturday, January 16, 2010
GTUG Ukraine
Оказывается последнее время Google развернул довольно активное участвие в продвижении своих продуктов используя довольно старый способ - user groups.
В Украине это Kyiv GTUG Center и Kyiv GTUG Center.
В чем их координальное отличие я так и не понял, судя по всему какая-то игра амбиций.
Если будет интересно, сделаю доклад про Google Web Toolkit.
Thursday, December 10, 2009
Google Public DNS
Что дальше?
GWT 2.0 is out
Свершилось! Google таки зарелизили. По ссылке коротое видео с основными изменениями.
Самые яркие и ожидаемые:
- Дебаг в любом броузере (в т.ч. на удаленных компах с другими ОС)
- Декларативный UI (используется концепция MVP)
- “сплит поинты”, позволяющие разделить код на куски, которые будут до-загружатся по мере необходимости. Обещают что компилятор сам разбеертся в какой последовательности и какие “куски” загружать. Звучит слишком круто чтоб быть правдой :)
- “пачки ресурсов”. Раньше можно было автоматизировать упаковку картинок в один запрос к серверу. Теперь можно “упаковывать” и текст, и даже CSS-стили, которые будут автоматически собиратся, оптимизироватся и отдаватся по мере необходимости.
Ссылка на шоукейс.
Что-ж… ура, товарищи )
Sunday, October 11, 2009
Повышение продуктивности: средство само-контроля
После того, как начал замечать что иногда сам с собой начинаю спорить о том, много ли я времени потратил на чтение новостей, на какую-то программу не связанную с работой.
И чтоб поставить все точки над “i” решил именно для себя поставить какую-то систему контроля какое приложение активно.
Быстрое гугление вывело на утилиту, на 80% выполняющую необходимые функции: ManicTime
Чем она удобна:
- Минималистический интерфейс, в то же время вполне eye-candy.
- Бесплатна
- Отслеживает не только сколько времени было проведено в той или иной программе, а и на каких сайтах (по доменам)
- Есть автоматическое отслеживание бездействия (отошел от компа)
- Возможность помечать “тагами” некоторые участки времени (“работаю”, “отдыхаю”) с различными отчетами по тагам.
Скриншотик с офф сайта:
В целом это одна из таких прог, которую, как мне кажется, необходимо иметь каждому, кто работает на дому.
Минус пока вижу в том, что недостаточно возможностей по просмотру результатов за неделю, месяц и автоматической расстановки “тегов”. Но выглядит очень привлекательно и потенциально.
Во всяком случае хороший шанс “посмотреть в глаза” реальности и увидеть сколько реально времени трачу на совершенно ненужные вещи. Вот в реальности бы…
ПС. Я никаким образом не связан с создателями программы.
Wednesday, September 16, 2009
Отдых: Ради этого стоит работать
Вернулся с отдыха в Анталии. “Честные” 5*. Понял, что стоит таки год работать чтоб так отдохнуть – отличное питание, отличное море, минимум кричащих детей и пьяных компаний (не хочу явно “пиарить” отель, хотя он стоит того. Кому интересно – пишите в комментарии)
Оказалось что в Турции закрыто очень много ресурсов – твиттер, частично блоггер, ютуб. Хорошо, что работал скайп.
По приезде гугл-ридер радостно сообщил о “1000+” непрочитанных.
Снова таки начали приходить о выборе – что лучше: продолжать фрилансить (пару более или менее постоянных клиентов есть), или все-таки вернутся на “регулярную” работу… С одной стороны “свобода” фриланса, с другой – работа в коллективе, обмен опытом. Навеяно "Подготовка к собеседованию на должность программиста".
ПС. Никогда не понимал как люди могут работать без хорошего отдыха :)
