суббота, 24 мая 2014 г.

Карты Российского метро для Nokia Asha. +1 в копилку хобби-разработчика :)

Всем привет! В один прекрасный день компания Nokia дала попробовать на зуб Asha SDK. И как-то так захотелось мне поковырять JavaME.... Пусть оно и старое, пусть и телефоны дешевые (а значит, пользователи телефонов малообеспечены и платить, скорее всего, не будут), но вот шило в энном месте покоя не давало :). Так в режиме хобби и родились "Карты Российского метро", специально заточенные под touch интерфейс телефонов на платформе Asha.
Почему это было интересно? А просто попробовать, как это уместить что-то приличное в телефончик с довольно жесткими ограничениями на выделяемую оперативную память, хранилище, процессор. Это вам не мощный смартфон, тут все по-детски в плане ресурсов и по-взрослому в плане головной боли для разработчика :). По-моему, получилось мило и красиво :) У кого Nokia Asha 310 и выше - пробуйте!

Огромное спасибо любимой жене за все, что она нарисовала: карты, иконки и прочее! :)
Ссылка на приложение: http://store.ovi.com/content/415133

пятница, 23 мая 2014 г.

Путевые заметки. Куала-Лумпур. День 1: прилет и первая ночь.

Всем привет! Хвала компании Vietnam Airlines и их сезону скидок, мы выбрались таки за пределы Вьетнама. Для начала - в Малайзию. Ну а чтобы было не совсем печально, решили не матрасить на островных курортах, а помотаться по 2м городам - Куала-Лумпуру и Джорджтауну. Правда, уложить все в 5 дней было не самой лучшей идеей - по каждому из городов можно бродить долго, двух дней мало.

четверг, 1 мая 2014 г.

Сайгон. Парк Dai Nam.

В воскресенье мы решили выбраться туда, куда просто так не забредает нога белокожего туриста - парк Dai Nam. Парк находится далеко от центра, поэтому желающих туда будет немного :) Разве что только те, кто любит парки.

среда, 30 апреля 2014 г.

Сайгон. Театр кукол на воде.


Намедни с супругой посетили еще один сайгонский аттракцион - Театр кукол на воде (http://www.goldendragonwaterpuppet.com/Programme.asp). К сожалению, фото не будет - телефон очень плохо снимал в полумраке. Поэтому буду красочно все описывать словами :).

понедельник, 28 апреля 2014 г.

When Redis failover fails

Given:
- 2 Redis instances running in replication mode (master and slave). Master node went down, so only slave is running
- 2 Redis Sentinels that are trying to start failover process
- Sentinel's log with error:
-failover-abort-no-good-slave master primary [some_ip] [some_port]

What does it mean? 

That means (obviousely) Sentinel just cannot find appropriate slave to promote it to master. But wait! We have slave node! It is running! What's wrong then? The trick is: our running slave has corrupted data, so it doesn't meet requirements for promotion.
Possible situation: master went down when slave was synchronizing data. The more data you have to synchronize, the higher probability of such situation.

What to do?

Check your slave's redis.log. If it is constantly screaming something like:
[17319] 22 Apr 10:44:29.689 * Connecting to MASTER [address][17319] 22 Apr 10:44:29.689 * MASTER <-> SLAVE sync started[17319] 22 Apr 10:44:29.689 # Error condition on socket for SYNC: Connection refused

that means, the slave was interrupted during synchronization. It cannot be promoted to master, Sentinel cannot help you with it. You have to restart master by your own means (custom script, your own hands, etc).
That's what I got. Probably, there is another solution that comes from Redis. Please share if you know more about it.

How to reproduce.

Given:
- 2 Redis instances. They are configured to run in replication mode (let's name them R1 - currently master, and R2 - slave).
- 2 Redis Sentinels that are monitoring R1
- ~500Mb of data to keep

What happens when we start our system:
1. R1 loads data into memory
2. R2 starts synchronization

Let's say, synchronization was successful. And let's continue our experiments :)

3. R1 goes down. Let's say, redis process was killed by some cruel IT guy :). In-memory data is lost, process id (PID) is lost as well. But R2 got all the data, so Sentinels promote it to master. Everything ok
4. R1 goes up, Sentinels command it to switch to slave.
5. R1 is slave now, it starts synchronization with R2. R1 performs full synchronization (instead of partial one, which should be faster) because it lost in-memory data and process's pid was changed (http://redis.io/topics/replication).
6. Since we have relatively big dataset (~500Mb), it takes some time to transfer from master to slave (let's say, 5mins)
7. Now R2 goes down...
8. R1 cannot complete synchronization. It tries to get data from R2 again and again, but it's hopeless - R2 was killed. NOOOOOOOOOOOOOOOOOOOOOOOOOoooooo..... (looks like tragic moment in Hollywood movie :))
9. Sentinels cannot promote R1 to master because it's trying to complete synchronization... Our system has no more master... Saaad.

Please leave a comment if you have any idea how to overcome this situation.

среда, 9 апреля 2014 г.

Вьетнам. Сайгон. День 9

Сегодня я решил погулять по городу, сначала забравшись в какое-нибудь отдаленное место. Место оказалось не совсем отдаленное - китайский квартал. Добирался я до него на автобусе №1 от центрального парка.
Возможно, в этом квартале я видел китайцев, но они все были очень похожи на вьетнамцев.
Пейзаж - типичный сайгонский, с примесью китайских иероглифов. В общем-то, тут в местах скопления определенной диаспоры начинают появляться надписи на разных языках - корейском, китайском. Соответственно, в местах скопления русских людей в курортных городах полно надписей на русском :).
Отличительная черта китайского квартала - обилие пагод и других храмов. буквально через каждые 2 улицы стояла пагода, а в ней очень обильно курились благовония - из-за дыма многого снаружи было не разглядеть, нужно заходить внутрь.



Рынки тоже есть в изобилии, однако ассортимент на них немного другой - очень много высушенных трав и кореньев. Запах стоит очень мощный. И не поймешь - то ли лекарства, то ли специи, то ли просто высушенные съедобные травы.

Почему моя трудовая книжка такая толстая?


Я вот думаю, а почему я регулярно раз в год меняю работу? Причем с каждым разом работа становится все чудесатее и чудесатее. Как в плане работодателя, так и в плане места работы. Почему бы не сделать просто как все люди, которые оседают на одном месте и остаются ему верны на протяжении многих лет?

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

Да, конечно, все это можно делать и будучи привязанным к одному месту обитания. Скажем, раз в год выезжать куда-нибудь. Но вот только сколько таких "раз в год" осталось? Учитывая, что немалый кусок жизни уже просвистел, а впереди стандартное человеческое "семья-дети", осталось их весьма немного. Поэтому я и меняю работу так, чтобы совмещать полезное с тем, что хочется.

Я никоим образом не пропагандирую образ своей жизни - люди разные, а я вот такой вот по голове стукнутый :). Просто примите, что мне интересно именно вот так.