Sunday, November 04, 2012
Socket.IO for Erlang
Sunday, July 01, 2012
Drink Adventure. Press release.
Drink-adventure is a very innovative android application for all weekends.
- standalone mode with Andrew Barman;
- android Toaster;
- more maps and assignments for all situations.
Thursday, June 28, 2012
Drink Adventure Game!
Friday, May 04, 2012
Russian Roulette Pro on Kongregate!
Friday, April 27, 2012
Tuesday, January 03, 2012
How to create typed AS3 objects from JSON
public class MessageVO {
public var type:String;
public var data:Object;
}
...
[Bindable]
public class UserVO {
public var id:Number;
public var nickname:String;
}
To convert object into typed object you should execute the following code:
var object:* = Converter.convertData(jsonObject, UserVO);In my project I use dictionary where key is type (string) and value is class. For example:
var typeToClassMap:Dictionary = new Dictionary;
...
typeToClassMap["user", UserVO];
typeToClassMap["chatMessage", ChatMessageVO];
...
var jsonObject = JSON.decode(jsonString);
var object:* = Converter.convertData(jsonObject.data, typeToClassMap[jsonObject.type]);
object variable will contain typed object converted from jsonObject.
How to make release without erts
Friday, December 23, 2011
Java, Erlang and Rock'n'Roll
Monday, October 24, 2011
How to use JRebel in Eclipse with Jetty plugin
-javaagent:${JRABEL_HOME}/jrebel.jar -Drebel.log=true ${jrebel_args}
Wednesday, August 31, 2011
Tuesday, May 03, 2011
Москва - Минск или как задосить РЖД
Купили (ключевое слово) билеты из Москвы до Минска через интернет. Как обычно приехали на вокзал за час до отправления, чтобы их получить через терминал. Вместо четырех работающих было только три рабочих. За каждым простералась очередь из примерно двадцати человек. Хочется сказать, что терминалы эти достаточно не эргономичные и тормозные при печати билетов, т.е. на получение билета в среднем уходило около пяти - семи минут. Пассажири подтягивались. И вдруг, внезапно, один из терминалов перестает работать, видать не выдержал DoS-атаки, но умный админ (какой-то важный мужик) заранее начал налаживать третий! Такой лоад балансир. Но и он пал под натиском желающих попутешествовать вместе с РЖД. Разьяренные пассажири ломанулись к администратору Белорусского вокзала. Громко возле него кричали и махали руками, пока из администраторской не повеяло валерьнкой и полицейскими. Собственно, администратор вынесла вердикт, что они ни в чем не виноваты и сами дураки, что не успели получить КУПЛЕННЫЕ билеты. Пришлось все-таки стоять одну очередь, чтобы получить билеты через терминал, другую, чтобы купить билеты на следующий поезд и третью, чтобы сдать билеты на уже ушедший поезд.
"Летайте" поездами РЖД, ведь других попросту нет!
Thursday, June 04, 2009
Digester, validation and XSD
Here you can see how to validate XML using XSD:
File xsdFile = new File(${location});
Digester digester = new Digester();
digester.setValidating(true);
digester.setNamespaceAware(true);
digester.setErrorHandler(myErrorHandler); // Don't forget to set custom error handler
digester.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
"http://www.w3.org/2001/XMLSchema");
digester.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", xsdFile); // You can use File, String, InputStream, InputSource or an array of these type
digester.parse(...);
Saturday, November 22, 2008
How to install flex-mojo
<settings>
<profiles>
<profile>
<id>flex-mojos</id>
<repositories>
<repository>
<id>flex-mojos-repository</id>
<url>http://svn.sonatype.org/flexmojos/repository/</url>
<snapshots> <enabled>true</enabled> </snapshots>
<releases> <enabled>true</enabled> </releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>http://svn.sonatype.org/flexmojos/repository/</url>
<snapshots> <enabled>true</enabled> </snapshots>
<releases> <enabled>true</enabled> </releases>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>flex-mojos</activeProfile>
</activeProfiles>
</settings>
Invoke the following command:
mvn info.flex-mojos:install-mojo:install-sdk -Dflex.sdk.folder="C:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks\3.1.0" -Dversion=3.1.0
You can find additional information on google code site http://code.google.com/p/flex-mojos/ and blog http://blog.flex-mojos.info/
Friday, June 20, 2008
Saturday, April 26, 2008
Tuesday, April 15, 2008
Audacious. Gnome. Multimedia keys.
Audacious - Gnome Mmkeys
Friday, April 11, 2008
Ubuntu 7.10 + Jabra BT620s + Jabra 320s
At first you should obtain MAC for you bluetooth audio device:
hcitool scan
Obtained address you should replace in scripts and configuration below instead of "XX:XX:XX:XX:XX:XX".
Create the following file in home directory to configure alsa plug in:
pcm.bluetooth {
type bluetooth
device XX:XX:XX:XX:XX:XX
profile "auto"
}
Then create python scripts. The first script turns on headset profile, the second one turns on A2DP profile for stereo streaming.
Headset proifle (headset.py file):
#!/usr/bin/env python
import dbus
bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object('org.bluez', '/org/bluez'), 'org.bluez.Manager')
bus_id = manager.ActivateService('audio')
audio = dbus.Interface(bus.get_object(bus_id, '/org/bluez/audio'), 'org.bluez.audio.Manager')
path = audio.CreateHeadset('XX:XX:XX:XX:XX:XX')
#audio.ChangeDefaultHeadset(path) #change the device to be used by default
headset = dbus.Interface (bus.get_object(bus_id, path), 'org.bluez.audio.Headset')
#Connect and Play are not required in PCM mode
headset.Connect()
headset.Play()
A2DP profile (a2dp.py file):
#!/usr/bin/env python
import dbus
bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object('org.bluez', '/org/bluez'), 'org.bluez.Manager')
bus_id = manager.ActivateService('audio')
audio = dbus.Interface(bus.get_object(bus_id, '/org/bluez/audio'), 'org.bluez.audio.Manager')
path = audio.CreateDevice('XX:XX:XX:XX:XX:X')
#audio.ChangeDefaultDevice(path) #change the device to be used by default
sink = dbus.Interface (bus.get_object(bus_id, path), 'org.bluez.audio.Sink')
sink.Connect()
Okay. bluetooth-applet should be run. To turn on A2DP profile you should execute a2dp.py and to turn on Headset profile you should execute headset.py. Now you can test sound via audacious: options->preferences->Audio->Current Output Plugin->ALSA
Output Plugin Preferences->Device Settings->audio device: "bluetooth". In other players you should select "bluetooth" device instead of default or any other. See here how to set bluetooth support to another players.
Another way to set bluetooth support is to install Blueman manager.
URLs:
UPD: Audacous writes to console: ALSA lib pcm_bluetooth.c:238:(playback_hw_thread) poll error: Interrupted system call (4). I don't know what it means...
Monday, April 07, 2008
# eth0 - local network
# ppp0 - internet
# eth1 - home wnetwork
IPTABLES=/sbin/iptables
echo 1 > /proc/sys/net/ipv4/ip_forward
# Clearing
$IPTABLES -P INPUT ACCEPTs
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$IPTABLES -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i eth1 -o eth0 -j ACCEPT
$IPTABLES -A FORWARD -i ppp0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i eth1 -o ppp0 -j ACCEPT
Thursday, March 27, 2008
Sunday, March 23, 2008
Network card don't work after unplug/replug
http://0pointer.de/lennart/projects/ifplugd




