wtorek, czerwca 18, 2013

Nówka sztuka nie śmigany


poniedziałek, czerwca 17, 2013

Provident chce być nowoczesny

Provident Polska chce udzielać małych kredytów na sms-a (limit jednorazowej pożyczki dla osoby fizycznej to 600 zł, miesięcznie 4000 zł, a rocznie 10 000 zł). Usługa byłaby realizowana w ramach systemu HalCash - klient Providenta po otrzymaniu sms-a mógłby wykorzystać znajdujący się tam kod referencyjny do wypłaty pieniędzy w bankomacie. System HalCash zintegrowany jest z bankomatami Euronet, BZ WBK oraz SKOK24. Provident Polska nie będzie współpracował bezpośrednio z HalCash, ale za pomocą BZ WBK. Patrząc na T-Mobile, PKO BP, a tera Providenta widać spory ruch na styku obszaru finansowego i mobilnego.

czwartek, czerwca 13, 2013

Cytaty z Godsona

http://politykier.pl/gid,15728760,gpage,3,img,15728797,kat,1025795,galeria.html

Global Future 2045: Mechanizm do wyłudzania pieniędzy?

http://www.theverge.com/2013/6/12/4422924/dmitry-itskov-wants-to-help-you-live-forever-by-swapping-your-body

Ciekawa dyskusja pod artykułem. Ickow jest właścicielem portali http://www.dni.ru/http://russia.ru/, gazety internetowej http://www.vz.ru/, gry online http://dozory.ru/ oraz papierowego czasopisma. W branży medialnej dorobił się milionów.

Java EE 7: JMS 2.0

Co nowego w JMS 2.0 - Session.createSharedDurableConsumer pozwala na wielu konsumentów na tej samej subskrypcji durable. JMSDeliveryTime pozawala na opóźnione wysyłanie/dostarczanie komunikatów. Wysyłanie może być asynchroniczne z notyfikacją za pomocą interfejsu CompletionListener.

Java EE 7: Concurrency

Interfejs javax.enterprise.concurrent.ManagedExecutorService dostępny przez JDNI pozwala na zlecanie zadań przez kontener i wykonywanie ich po stronie serwera aplikacyjnego (submit(), execute(), invoke*(), schedule*()):

@Resource(name=”concurrent/LongRunningTasksExecutor”)
ManagedExecutorService mes;

Future reportFuture = mes.submit(new Runnable() { public void run() { /* do the work */} });

Zadania wysyłane do Executora mogą być indetyfikowalne dzięki użyciu metody getIdentityName() z interfejsu javax.enterprise.concurrent.ManagedTask.
Specyfikacja definiuje przykładowe typy Executorów w zależności od parametrów puli wątków, czasu życia zadania i polityki kolejkowania/powtarzania zadań:
Typical Thread Pool, Long-RunningTasks Thread Pool, Shared OLTP Thread Pool, Typical Timer. Executor obsługuje transakcje. Zadania moga korzystać z ContextService-u.
Logowanie w kontenerze może być realizowane przez Executor-a, co może znacząco przyspieszyć wykonywanie zadań, jeśli logowanie jest bazodanowe.

środa, czerwca 12, 2013

How to fix checkboxes in Grails Spring Security Management Console

Edit springSecurityUI.gsp, before the end of body add script block:

function fixInputs() {
 var container = document.getElementById("tab-roles");
 var inputs = container.getElementsByTagName("input");
 for (var i = 0; i < inputs.length; i++) {
  inputs[i].removeAttribute('style');   
 }
 var imgs = container.getElementsByTagName("img");
 for (var i = 0; i < imgs.length; i++) {
  imgs[i].setAttribute('style', 'display: none');  
 }
}
window.setTimeout(fixInputs, 500);

wtorek, czerwca 11, 2013

Jak z Mokotowa jedziesz to Parczew masz po lewej

piątek, czerwca 07, 2013

Nowe ekskluzywne osiedle Saska

Skypt do niezależnego budowania war-a Grails

@echo off
::SET SCRIPT_NAME=%~n0
::SET TARGET_ENV=%SCRIPT_NAME:make_=%
SET TARGET_ENV=prod0
SET CANON_ENV=%TARGET_ENV:0=%
SET CANON_ENV=%CANON_ENV:1=%
SET CANON_ENV=%CANON_ENV:2=%
echo *** Downloading Grails framework
echo ***
wget -c http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-2.2.2.zip >NUL
echo *** Unzipping Grails distro
echo ***
unzip -n grails-2.2.2.zip >NUL
SET PREV_HOME=%GRAILS_HOME%
SET PREV_PATH=%GRAILS_HOME%\bin
SET GRAILS_HOME=%~dp0
SET GRAILS_HOME=%GRAILS_HOME%grails-2.2.2
CALL SET CLEANED_PATH=%%PATH:%PREV_PATH%=%%
set PATH="%GRAILS_HOME%\bin";%CLEANED_PATH%
SET PREV_HOME=
SET PREV_PATH=
SET CLEANED_PATH=
echo *** I will make WAR file for %TARGET_ENV% (%CANON_ENV%) using %GRAILS_HOME%
echo ***
copy grails-app\conf\Config.groovy.%TARGET_ENV% grails-app\conf\Config.groovy
start /b /wait grails %CANON_ENV% war
pause

czwartek, czerwca 06, 2013

Bufetowa musi odejść

Bałtroczyk przedstawia

poniedziałek, czerwca 03, 2013

EMS planetary pattern


EMS server holds its state and message structures in memory and therefore has a limit for maximal number of messages. Considering compiler options and memory alignment EMS server requires about 0,5KB per one JMS message. With EMS server using 4GB RAM you can have 8 mln messages.
When memory limit of EMS server is too low you can refactor your infrastructure with planetary pattern:
Applications have their local EMS instances with routing enabled towards master server and defined proxy queues:
billing.data@EMS-SERVER-MASTER store=$sys.failsafe,secure
billing.voice@EMS-SERVER-MASTER store=$sys.failsafe,secure
billing.premium@EMS-SERVER-MASTER store=$sys.failsafe,secure

Master server has limits forced on these queues:
billing.data@EMS-SERVER-MASTER store=$sys.failsafe,secure,maxmsgs=1000000
billing.voice@EMS-SERVER-MASTER store=$sys.failsafe,secure,maxmsgs=1000000
billing.premium@EMS-SERVER-MASTER store=$sys.failsafe,secure,maxmsgs=1000000

When you send messages to local server's queue and master server still has got free capacity - they are routed. When master's limit is reached messages are stored on local server - until master regained capacity.
With EMS planetary pattern you can get rid of EMS server memory limits. If client connects to EMS server via JNDI it can be transparently redirected to other server, so you can migrate easily from single server to planetary infrastructure. If connection factory config is taken from local JNDI you can add additional server behind local EMS without reconfiguring client.

niedziela, czerwca 02, 2013

Fail fast

Duże firmy mają tendencję do przedłużania projektów już skazanych na porażkę, pompowania w nie pieniędzy i dodawania zasobów mimo braku sensu kontynuowania projektu. Tymczasem pozwolenie na upadek projektu byłoby czasem oczekiwanym i pozytywnym działaniem. Jeśli projekt nie toczy się zgodnie z założeniami, to znaczy że był źle zdefiniowany. Lepiej jest zamknąć projekt i zacząć od nowa, oszczędzając pieniądze. Przeterminowany projekt oznacza zazwyczaj niespełnienie biznes planu i rynkowe fiasko. Metodyką przyjazną koncepcji fail fast jest Rational/Open Unified Process.

Tibco BusinessWorks 6.0 is coming

ActiveMatrix application server concept has failed as a product and Tibco is changing its focus back to BW. BW 6.0 at the component level will be OSGI based and will allow for custom plugins via stable and well defined interface. No hacking, no Java glue - you will be able to easily deliver needed functionalities. Adapters are gone, they are replaced by Java-based plugins. SAP activities will run at the component level (ouch, possible licensing issues). BW 6.0 beta is going through QA tests - it should be available by the end of year. BW 5.x will be long term supported.