?

Log in

Alexander Dolgin Below are the 50 most recent journal entries recorded in the "Alexander Dolgin" journal:

[<< Previous 50 entries]

November 11th, 2012
09:31 pm

[Link]

скрипт для вытаскивания историчесих данных с яху файненс
Простой скриптик на Groovy. Для каждого из символов из файла _symbols вытаскивает дневные бары за 2011 год.

processSymbol = {
	String symbol = it;
	print("Processing " + it + " ...\t\t");
	String url = "http://ichart.finance.yahoo.com/table.csv?s="+symbol+"&d=11&e=31&f=2011&g=d&a=0&b=1&c=2011&ignore=.csv"
	def out = new BufferedOutputStream(new FileOutputStream("output\\" + symbol+".csv"))
	try{
		out << new URL(url).openStream()
	} catch (IOException e){
		println("Error")
		return
	}
	finally{
		out.close()
	}
	println("Done")
}

File symbols = new File("_symbols")
symbols.eachLine(processSymbol)

(1 comment | Leave a comment)

January 26th, 2009
08:33 am

[Link]

Правдивая история о трех поросятах

(4 comments | Leave a comment)

June 22nd, 2008
11:56 pm

[Link]

Этот момент, лично мне, кажется, мягко говоря, спорным.

As of release 1.5, there is a third approach to implementing singletons. Simply
make an enum type with one element:
// Enum singleton - the preferred approach
public enum Elvis {
   INSTANCE;
   public void leaveTheBuilding() { ... }
}

This approach is functionally equivalent to the public field approach, except that it
is more concise, provides the serialization machinery for free, and provides an
ironclad guarantee against multiple instantiation, even in the face of sophisticated
serialization or reflection attacks. While this approach has yet to be widely
adopted, a single-element enum type is the best way to implement a singleton.


Я бы скорее сделал, хотя бы, что-то такое:
public interface IElvis
{
...
}

public class DefaultElvis implements IElvis
{
   private static IElvis Instance_ = new DefaultElvis();
   ...
   public static IElvis getInstance() {return Instance_;}
}

Tags:

(7 comments | Leave a comment)

June 21st, 2008
10:21 pm

[Link]

Вчера пришла с Амазона Effective Java (2nd Edition).
Интересно-интересно.
Надо завести час в день по утрам на чтение технической литературы, а то список TOREAD стал непозволительно расти.

(2 comments | Leave a comment)

April 21st, 2008
12:10 pm

[Link]


Оказалось, что когда катался в субботу на косе, мимо праздновавших субботник приватбанковцев, нашлись добрые люди щелкнувшие из фоторужья

Tags:

(5 comments | Leave a comment)

March 30th, 2008
10:28 am

[Link]

велоотчет
Первый раз выехал на покатушку сегодня утром, если, конечно не считать перегонку велосипеда со старой квартиры.
Собирались проехать до Новомосковска, но я подустал и съехал раньше. Друзяки поехали дальше. :)
Итого: 32.35км со средней скоростью 18.5км/ч.

(12 comments | Leave a comment)

March 17th, 2008
09:35 am

[Link]

Exception #7. Впечатления
Сразу хочу сказать, что это превая из конференций Exception #N, на которой я был. Кроме всего прочего, как это часто бывает, негативные стороны сразу бросаются в глаза, а позитивные воспринимаются как должное.
Сразу приятно удивило, что людей было много, причем далеко не все из них действительно используют Python/Ruby/Groovy в повседневной работе, а просто пришли послушать что-то интесное и расширить кругозор. Я так понял, что было около 300 человек. С другой стороны неприятно удивили некоторые организационные моменты: толкотня и неразбериха при получении бейджиков, начало не вовремя, некоторые доклады не укладывались в отведенное время, один докладчик просто закозлил выступление не смог прийти за заявленный доклад.
Первый доклад, на который я пошел это был "Мастер-класс по Python: Метаклассы + Дескрипторы". Было довольно интересно и хорошо изложено.
В это же время в другом зале Леша рассказывал про Smalltalk. Как я полагал, большую часть его доклада я слышал еще на наших посиделках за пивом, так что выбрал послушать что-то новое.

Следуюзщий доклад "По ту сторону ООП: PEAK-Rules и PyProtocols". Не понравилось. Очень скомкано и нечетко. В это же время должен был быть рассказ про Groovy, который я собирался посетить, но докладчик не пришел :(

Дальше был рассказ про Grails. Докладчик рассказывал живо и интересно, хотя и не всегда убедительно. На вопрос о произоводительнсти Grails/Groovy ответил, что такая как в java. На мой вопрос, декомпилировал ли он когда-нибудь Groovy байт кода ответил уклончиво. Для интересующихся
Groovy:
result = 0
myMap = ["asdf": 1 , "qwer" : 2, "sdfg" : 10]= 0
println result

и тот же код после groovyc и jad
import groovy.lang.Binding;
import groovy.lang.Script;
import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;

public class test1 extends Script
{

    public test1()
    {
    }

    public test1(Binding context)
    {
        super.setBinding(context);
    }

    public static void main(String args[])
    {
        Object aobj[] = {
            test1.class, args
        };
        ScriptBytecodeAdapter.invokeMethod(org.codehaus.groovy.runtime.InvokerHelper.class, "runScript", ((Object) (aobj)));
    }

    public Object run()
    {
        java.util.Map map = ScriptBytecodeAdapter.createMap(new Object[] {
            "asdf", new Integer(1), "qwer", new Integer(2), "sdfg", new Integer(10)
        });
        java.util.Map _tmp = map;
        ScriptBytecodeAdapter.setGroovyObjectProperty(map, this, "myMap");
        Integer integer = new Integer(0);
        Integer _tmp1 = integer;
        ScriptBytecodeAdapter.setGroovyObjectProperty(integer, this, "result");
        Object aobj[] = {
            ScriptBytecodeAdapter.getGroovyObjectProperty(this, "result")
        };
        return ScriptBytecodeAdapter.invokeMethod(this, "println", ((Object) (aobj)));
    }

    public static Long __timeStamp;

    static 
    {
        Long long1;
        Long long2;
        long1 = new Long(0x118b2c76d19L);
        Long _tmp = long1;
        __timeStamp = (Long)long1;
        long2 = new Long(0x118b2c76d19L);
        Long _tmp1 = long2;
        __timeStamp = (Long)long2;
    }
}

Что-то мне подсказывает, что производительность все-таки будет отличаться, от обычного Java кода. Скорее всего, как раз это вполне допустимо, так как ядро (hibernate, spring) написано на java, а на groovy совсем немного кода. Другое дело, что ответ про производительность был неправильным.

Дальше был рассказ о том Как заставить свою лень работать. Довольно забавно: отдохнули, посмеялись. Краткое содержание: чтобы попки были чистые и сухие, надо их чистить и сушить.

После этого мы (leshau, его сотрудник Игорь и я) решили, что есть все-таки очень хочется, а обеденного перерыва нет и не предвидится, поэтому надо ковать счастье своими руками. Размер очереди в Пузату Хату сразу убедил нас пойти искать счастья в другом месте. Нашлось оно в Эль-Патио, наколько я помню название.

Вернувшись, поболтал немного в коридоре с Сергеем, которого не видел уже много лет. Он пытался "продать" идею использования .NET, но я не повелся

Последний докалад, на который мы сходили был про Jython и JRuby. Сложные впечатления. Докладчик был сотрудником платиногов спонсора. В принципе, вполне целостный и хорошо подготовленный доклад, но рассказ был как-то "без огонька". Видно, что человек этого [почти] никогда не использовал. Похоже, что к нему подошло начальство и сказало, что НАДО.

(13 comments | Leave a comment)

February 18th, 2008
11:34 am

[Link]

Приват24->Skype
В Приват24 появилась возможность купить ваучеры пополнения для Skype номиналом $5 и $25.

(7 comments | Leave a comment)

February 7th, 2008
10:33 pm

[Link]

XSLT
Возвращаясь к вопросу про XSLT.

итогоCollapse )

Зовется это все из XSLT Ant task.
Довольно удобно получилось.

Tags:

(3 comments | Leave a comment)

February 3rd, 2008
11:56 pm

[Link]

XSLT или XSLM?
Есть сложные xml документы произвольного вида, являющиеся конфигурацией к нектоторой системе.
Иногда хочется закомментировать какие-то элементы или поменять значения аттрибутов.
Что-то типа закомментировать нод, которий соответствует шаблону
ProcessName/ComponentList/Component[@name='My component']
а аттрибуту
enabled
в ноде
ProcessName/FeatureList/Feature[@name="My feature"]
поменять значение с true на false.

Первая задача решилась следующей трансформацией
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:template match="ProcessName/ComponentList/Component[@name='My component']">
		<xsl:text disable-output-escaping = "yes">&lt;!--</xsl:text>
     		<xsl:copy>
     			<xsl:apply-templates select="@*|node()" />
     		</xsl:copy>
		<xsl:text disable-output-escaping = "yes">--&gt;</xsl:text>
	</xsl:template>

	<xsl:template match="@*|node()" >
		<xsl:copy>
			<xsl:apply-templates select="@*|node()" />
		</xsl:copy>
	</xsl:template>

</xsl:stylesheet>


Вторую (изменение значения аттрибута) не осилил сходу

Кажется довольно ественным написать XSLT для этого. Но по тому, как тяжело это дается, начинает казаться, что выбрал не то средство. Может это действительно неправильный путь и нужен язык не для трансформации (XSLT), а для модификации (XSLM)? Правда такого нет, вроде, к сожалению. Или это я неправильно XSLT готовлю?
В принципе XSLT для меня не панацея. Хотелось бы, в идеале указывать, что мне нужно именно в виде
узел такой-то (XPath) -> операция с ним (скажем: удалить/закомментировать/добавить/изменить значение/вставить под-дерево). В какую сторону смотреть?

(3 comments | Leave a comment)

January 24th, 2008
04:01 pm

[Link]

muwlgr вчера порадовал поговоркой: "Кто говорит не думая, то умирает не болея".

(2 comments | Leave a comment)

January 22nd, 2008
08:40 pm

[Link]

читабельность кода
Метод, в который надо модифицировать сейчас, длиной жалкие 244 строчки. Мне хочется кого-нибудь убить %)

Tags: ,

(7 comments | Leave a comment)

January 19th, 2008
11:38 am

[Link]

В Киеве
Собираемся на JUG

Да, поиграл в настольный хоккей впервые за лет 15-20. Как же это круто!! :)

(Leave a comment)

January 6th, 2008
05:03 pm

[Link]

ананас
Интернет великая сила. За пару минут нашли, как чистить ананас и сделали с нмм ЭТО :)

update: Искал совершенно банально: сходил сюда, а дальше по первой ссылке

(19 comments | Leave a comment)

December 4th, 2007
10:05 am

[Link]

Купил мобильный интернет от УкртелекомаU'tel. Вроде неплохо. Только трафик считается - это минус, конечно

(4 comments | Leave a comment)

October 3rd, 2007
11:26 am

[Link]

InvocationHandler
Натолкнулся на типичную ошибку реализации java.lang.reflect.InvocationHandler.

Чаще всего код выглядит как
   class FooException extends Exception
   {
...
   } 
   interface IFoo
    {
        void foo() throw FooException;
    }
    static class Foo implements IFoo
    {
        public void foo() throw FooException
        {
...
        }
    }
....
        final IFoo impl = new Foo();
        IFoo foo = (IFoo) Proxy.newProxyInstance(IFoo.class.getClassLoader(), new Class[]{IFoo.class}, new InvocationHandler()
        {
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
            {
                // do something before
                Object result = method.invoke(impl, args);
                // do something after
                return result;
            }
        });


Однако тут есть некоторые проблемы, возможно, незаметные на первый взгляд. Проявятся они, если реализация IFoo, которой делегируется выполнение выкинет исключение.
Во-первых, тогда не отработает код, который должен выполнятся после
Object result = method.invoke(impl, args);
Во-вторых, код, который пользуется экземпляром IFoo, "завернутым в прокси" получит InvocationTargetException вместо FooException. Вобщем, совсем не то, чего бы хотелось. Соответстсвенно, реализацию InvocationHandler#invoke надо переписать как
                Object result = null;
                try
                {
                    result = method.invoke(impl, args);
                }
                catch (InvocationTargetException e)
                {
                    throw e.getTargetException();
                }
                finally
                {
                    // do something after
                }
                return result;


или, если для кода из части "do something after" не нужен результат выполнения метода, то
                try
                {
                    return method.invoke(impl, args);
                }
                catch (InvocationTargetException e)
                {
                    throw e.getTargetException();
                }
                finally
                {
                    // do something after
                }

Tags:

(3 comments | Leave a comment)

September 28th, 2007
08:30 am

[Link]

Professional Java Development with the Spring Framework
Продолжаю почитывать начатую в отпуске книжку по Spring Framework. Да, сила. Как фреймворк, так и сама книжка. Но некоторые примеры кода оттуда, мягко говоря, поражают.
...
java.util.Date dateMade = null;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
  dateMade = df.parse("2004-06-01");
} catch (ParseException e) {
  throw new InvalidDataAccessApiUsageException(e.getMessage(), e);
}
...


Надеюсь, что автора этого примера из книги к разработке самого фреймворка не пускали.

(10 comments | Leave a comment)

September 12th, 2007
12:16 pm

[Link]

brokereach
Пару дней назад мы сделали это :))

InfoReach Inc, Announces Launch of Cutting Edge Web-Based Execution Management System

(16 comments | Leave a comment)

March 26th, 2007
04:54 pm

[Link]

Случайно натолкнулся на старое письмо:

...
Если добавить событие, а потом изменить его, то изменяется только
текстовое поле NA_CHTO, а HZ1 и HZ2 -- нет.
...

Хорошие имена мы давали переменным.

В том же "программном комплексе" в одной из программ была кнопа "Жопа", по нажатию на которую делался бэкап. Вобщем, студенты развлекались :)

(4 comments | Leave a comment)

February 4th, 2007
08:24 pm

[Link]

Вчера (если совсем точно, то сегодня) ночью познакомились с программистом из Мексики.
Его зовут Juses. Довольно неплохо говорит по-русски.

(Leave a comment)

December 11th, 2006
02:56 am

[Link]

в общественном парижском туалете есть надписи на русском языке
За часа несколько часов прогулок по Чикаго слышал 3 раза русскую речь и один или два украинскую

(19 comments | Leave a comment)

November 3rd, 2006
12:31 pm

[Link]

Много знакомых задач, но есть чем себя занять :)

http://braingames.ru

Tags:

(Leave a comment)

October 21st, 2006
10:06 pm

[Link]

Double.MIN_VALUE
Очень не порадовало, что java.lang.Double.MIN_VALUE имеет совершенно другой смысл, нежели эта же константа в других потомках java.lang.Number, из java.lang.

Integer:

    /**
     * A constant holding the minimum value an int can
     * have, -231.
     */
    public static final int   MIN_VALUE = 0x80000000;


Double:

    /**
     * A constant holding the smallest positive nonzero value of type
     * double, 2-1074. It is equal to the
     * hexadecimal floating-point literal
     * 0x0.0000000000001P-1022 and also equal to
     * Double.longBitsToDouble(0x1L).
     */
    public static final double MIN_VALUE = 4.9e-324; // 0x0.0000000000001P-1022


Tags:

(11 comments | Leave a comment)

October 16th, 2006
11:15 am

[Link]

К вопросу.

Определения из Java Concurrency in Practice:
Lock-based algorithms are at risk for a number of liveness failures. If a thread holding a lock is delayed due to blocking I/O, page fault, or other delay, it is possible that no thread will make progress. An algorithm is called nonblocking if failure or suspension of any thread cannot cause failure or suspension of another thread; an algorithm is called lock-free if, at each step, some thread can make progress. Algorithms that use CAS exclusively for coordination between threads can, if constructed correctly, be both nonblocking and lock-free.

Tags: ,

(1 comment | Leave a comment)

October 11th, 2006
09:56 am

[Link]


Concise Instance Creation Expressions: Closures without Complexity
Bob Lee, Doug Lea, and Josh Bloch

Tags: ,

(Leave a comment)

October 9th, 2006
03:47 pm

[Link]

Sun Developer Day в Киеве

Смущает только некоторая неинтересность для меня заявленной программы.
С другой стороны - тусовка :)

Tags: ,

(1 comment | Leave a comment)

October 3rd, 2006
01:40 am

[Link]

Прочитал еще одну интересную статью из серии "Java theory and practice" на developerWorks. Забористо, надо сказать. Особенно пример с nonblocking linked list.

Tags: , ,

(8 comments | Leave a comment)

September 11th, 2006
07:21 am

[Link]

График популярности языков программирования. Оценка велась по количеству продоваемых издательством O'Reilly книг соответствущей тематики.



отсюда

(2 comments | Leave a comment)

August 25th, 2006
10:48 pm

[Link]

Documentation is one of the most powerful (and, sadly, most underutilized) tools for managing thread safety (отсюда)

(2 comments | Leave a comment)

12:14 am

[Link]

Приятная неожиданность.
Будет издано третье издание Concurrent Programming in Java by Doug Lea

Tags: , ,

(2 comments | Leave a comment)

August 20th, 2006
12:10 pm

[Link]

Double Checked Locking
Думаю, что практически всем, имеющим дело с многопоточностью в java, проходилось читать
The "Double-Checked Locking is Broken" Declaration

Похоже, что с выходом Java 5 (AKA jdk 1.5) ситуация несколько облегчилась.

Читаю Java Concurrency in Practice.
В пункте 3.1.4 Volatile variables
...
The visibility effects of volatile variables extend beyond the value of the volatile variable itself. When thread A writes to a volatile variable and subsequently thread B reads that same variable, the values of all variables that were visible to A prior to writing to the volatile variable become visible to B after reading the volatile variable. So from a memory visibility perspective, writing a volatile variable is like exiting a synchronized block. However, we don’t recommend relying to heavily on volatile variables for visibility; code that relies on volatile variables for visibility of arbitrary state is more fragile and harder to understand then code that uses locking.
...


Если я правильно понимаю, то из этого можно следать вывод, что следующий код теперь работает "правильно".
  class Foo {
        private volatile Helper helper = null;
        public Helper getHelper() {
            if (helper == null) {
                synchronized(this) {
                    if (helper == null)
                        helper = new Helper();
                }
            }
            return helper;
        }
    }


Update:
Does this fix the double-checked locking problem?

Tags: ,

(6 comments | Leave a comment)

August 2nd, 2006
08:14 am

[Link]

сон разума
Увидел здесь забавную задачку, для любителей новых возможностей java.

Что выведет данная программа? Для получения ответа, компилировать и запускать только в уме :).

   import java.util.*;
   public class Conference {
     private Collection delegates = new ArrayList();
     public void add(String... names) {
       Collections.addAll(delegates, names);
     }
     public void removeFirst() {
       delegates.remove(0);
     }
     public String toString() {
       return "Conference " + delegates;
     }
     public static void main(String[] args) {
       Conference sun_tech_days = new Conference();
       sun_tech_days.add("Herman", "Bobby", "Robert");
       sun_tech_days.removeFirst();
       System.out.println(sun_tech_days);
     }
   }
  

Tags:

(6 comments | Leave a comment)

July 24th, 2006
12:49 am

[Link]

Mocks Aren't Stubs by Martin Fowler.

A Conversation with Erich Gamma
How to Use Design Patterns
Erich Gamma on Flexibility and Reuse
Design Principles from Design Patterns
Patterns and Practice

Tags: ,

(Leave a comment)

July 21st, 2006
11:37 am

[Link]

27
вчера

(11 comments | Leave a comment)

June 20th, 2006
01:24 pm

[Link]

Индекс популярности языков программирования. Не уверен, что способ оценки адекватны, честно говоря. Но, в принципе, ничего особо странного в результатах нет.

Tags:

(1 comment | Leave a comment)

June 18th, 2006
03:50 pm

[Link]

Java Memory Model
JSR 133 (Java Memory Model) FAQ
Fixing Java Memory Model, Part I, Part II

Tags: , ,

(Leave a comment)

June 16th, 2006
05:36 pm

[Link]

хочу :)

Java Concurrency in Practice

Tags: , , ,

(Leave a comment)

June 12th, 2006
03:23 pm

[Link]

linkedin
View my profile on LinkedIn

(Leave a comment)

June 8th, 2006
06:54 pm

[Link]

JavaOne 2006

Technical Session Presentation PDFs

Session Catalog

Tags: , ,

(Leave a comment)

June 7th, 2006
03:04 pm

[Link]

Joshua Bloch открывает нам глаза на binarysearch алгоритм.
http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html

Вывод довольно печальный:
Careful design is great. Testing is great. Formal methods are great. Code
reviews are great. Static analysis is great. But none of these things alone
are sufficient to eliminate bugs: They will always be with us.

Tags: , ,

(1 comment | Leave a comment)

October 9th, 2005
10:31 pm

[Link]

bat файлы - сила
поменять расширение у всех файлов с m1 на mp3
@for /r d:\music %%a in ("*.m1") do @move "%%a" "%%~dpna.mp3"

Tags:

(4 comments | Leave a comment)

September 12th, 2005
10:48 am

[Link]

Забавный банер на onlamp.com
if (myJob == boring) {
  // Go to Dice for great Java jobs
  sendRedirect("http://www.dice.com")
} else {
  suck_it_up();
}

(1 comment | Leave a comment)

September 10th, 2005
02:11 pm

[Link]

Фонд содействия молодежному строительству перечислил т.н. "частичную компенсацию". Вроде, за первый месяц, насколько я понял. Уже и не думал, что стоит от них что-то ждать.

(5 comments | Leave a comment)

June 29th, 2005
10:25 am

[Link]

товарищ из КБ порадовал стихотворением
Летела ракета
упала в болото;
какая зарплата -
такая работа

PS он работает в КБ, которое таки да проектирует ракеты

(Leave a comment)

June 1st, 2005
12:17 pm

[Link]

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

(1 comment | Leave a comment)

May 23rd, 2005
08:04 pm

[Link]

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

(2 comments | Leave a comment)

May 2nd, 2005
03:19 pm

[Link]

домашняя бухгалтерия
Когда-то мы (для интереса) пробовали вести учет на что и сколько тратим.
Вчера нашел файл с записями на март 2002.
Потратили ~$235, не считая квартплаты. Это на двоих.
В эти же деньги включается моя поездка в Крым на 3 дня 8-10 марта.
Да, и еще оплату мобильного не посчитал.

Довольно неплохо укладывались, кстати :)

(Leave a comment)

April 20th, 2005
12:08 pm

[Link]

нам пишут :)
Dear Brainbench Member,

Congratulations one more time, for scoring the highest in one of our Brainbench certifications during the first annual Bench Games.  Over 200,000 tests were completed during the 2-week period by citizens from over 180 countries.  You certainly served your country well.  If you have not seen your name on the Leader Board as yet,  check it out!

I also wanted to make sure that you are aware that for scoring highest in your respective category, you have been given a Brainbench subscription for the coming year.  If you already had one, we’ve added an additional year to your current subscription.  You will have access to all current tests, as well as tests we add in the coming year, including certificates.

Thanks again for participating, and we hope to see you back again next year to defend your crown!

(Leave a comment)

April 13th, 2005
09:17 pm

[Link]

похвастаться
Прошли BrainBench Games. Была возможность бесплатно сдавать любые тесты.
j2ee Master  WWW Concepts Master  XML  OO Concepts  SQL  XML Concepts Master  C++  Java 2 Fundamentals Master

(2 comments | Leave a comment)

January 13th, 2005
09:24 pm

[Link]

Тель-Авив, ровно год назад
37 kb

(Leave a comment)

[<< Previous 50 entries]

Powered by LiveJournal.com