Виртуальная песочница (тм)

Monday, December 12, 2011

Можете ли вы доверять?

Еще одно достойное пополнение коллекции.
Ссылку, конечно же, неподготовленным людям открывать не рекомендуется.
Для безопасности латинские "с" и "о" в ссылке заменены на кириллические.
____
from: Capt. Sam Dennison cptden7@3moffice.co.cc
reply-to: denison_sa@live.com
date: Mon, Dec 12, 2011 at 2:54 AM
subject: б

Я капитан Сэм Dennison, U.S армии. Я на ходу в Афганистан из Ирака, у
меня есть некоторые пункты, которые я придется отправить к вам. Можете
ли вы доверять?
Будет ли объяснять дальше, когда я получаю ответ от Вас.

Пожалуйста, просмотрите эту ссылку: http://news.bbс.со.uk/2/hi/7444083.stm
Read more...

Thursday, November 24, 2011

Плевательница

Я при себе

Ничего не разрешаю себе уничтожать. Все старые вещи при мне. Мне пятьдесят, а все мои колготочки при мне, все ползуночки, носочки, трусики, маечки, узенькие плечики мои дорогие. Тоненькие в талииньке, коротенькие в ростике. Дорогие сердцу формочки рукавчиков, ботиночки, тапочки, в которых были ножки мои, ничего не знавшие, горя не знавшие ножки. Фотографии перебираю, перебираю, не выпускаю. Ой ты ж пусенька. Это же я! Неужели? Да, я, я. Документики все держу: метричку, справочки, табель первого класса, второго, дневники, подправочки, все документики при себе, все справочки мои дорогие, пальцем постаревшим разглаживаю немых свидетелей длинной дороги.

Все честно, все документировано, ни шагу без фиксации. В случае аварии, какую книгу хватаете на необитаемый остров? Справки. Вдруг сзади – хлоп по плечу. А-а! Это на острове?!..

– Где был с января по февраль тысяча шешешят?..
– Вот справка.

– Где сейчас находится дядя жены?
– А вот.

– Где похоронен умерший в тышяшя восемьдесят брат папы дедушки по двоюродной сестре?
– Парковая, шестнадцать, наискосок к загсу. От загса десять шагов на север, круто на восток, войти в квартиру шестнадцать и копать бывшее слободское кладбище.

– Куда движешься сам?
– А вот направление.

– А как сюда попал?
– А вот трамвайный билет.

Все! Крыть нечем. Хочется крыть, а нечем.

– Лампочку поменял?
– Вот чек.

– Что глотнул?
– Вот рецепт.

– Почему домой?
– Вот бюллетень.

– Куда смотришь?
– Вот телевизор.

– Какая программа?
– «Время».

– А четырнадцатого откуда поздно?
– Вот пригласительный билет, галстук, букет.

– Так... плитка в ванной, унитаз.
– Вот чек.

– Карниз ворован?
– Вот чек.

– Обои ворованы?
– Чек.

– Это воровано?
– Чек.

– Воровано?
– Чек.

– Тьфу!
– Плевательница.

Ох и хочется крыть. А нечем!

– Как найти в случае?
– Вот папа, мама, дядя, тетя, дом, работа, магазин, больница... Все.

– А если?..
– Вот регистратура.

– А все-таки если?
– Вот, вот и вот.

– С другими городами?
– Ничего.

– Санаторий?
– Ни разу.

– По-английски?
– Ни бе ни ме.

– Где?
– Здесь.

– А если?
– Соображу.

– А непредвиденно?
– Позвоню.

– А самому захочется?
– Спрошу.

– А если мгновенно – ответ?
– Уклончивый. Да зачем вам трудиться? Вот список ваших вопросов, вот список моих ответов, причем четыре варианта по времени года.

– Заранее?
– Да.

– Сообразил?
– Да.

– Такой честный?
– Характеристика.

– А не участвовал в развратной компании шесть на четыре, девять на двенадцать с пивом, журналами, банями, парной?
– Грамота об импотенции, участковый врач, соседи, общественность.

– При чем состоишь? Воровал?
– Водоканал.

– Тьфу ты.
– Плевательница.

– Пока...
– Все.

С высоко поднятой головой хожу. Некоторые издеваются: справки – это все, что ты накопил к старости? – Все! Причем это копии. Оригиналы закопаны в таком месте, что я спокоен. И не только я. Глядя на меня, другие светлеют. Значит, можно, значит, живет. Всем становится спокойнее. Самые строгие проверяющие теплеют, на свою старость легче смотря. Один с дамой подошел:

– А где вас искать после вашей внезапной кончины, которая произойдет...
– А второе интернациональное, сто восемь – по горизонтали, шесть – по вертикали, от пересечения три шага на север, в боковом кармане свидетельство.

– Поздравляю, выдержал, готовьтесь к следующему.
– Отметьте.
– Идите.
– Число, час, печать. Здесь, здесь, здесь.

Чуть больше времени на выход. Зато не только свободен, но и спокоен, что действительно вышел, действительно пошел, действительно пришел домой и совершенно искренне лег спать.
Read more...

Thursday, November 10, 2011

Java Day Riga 2011 - registration started!

Time: November 29th, full day event from 10-00 to 18-00.
Place: Tallink Hotel Riga, 24 Elizabetes, Riga, Latvia.
REGISTRATION (190 free tickets left at the moment of writing this)


SPEAKERS

Alexander Potochkin, Software developer at Oracle St. Petersburg
Sergey Kuksenko, Performance engineer at Oracle St. Petersburg
Martin Grebac, Principal Software Developer - GlassFish/Metro team & JAXB Lead at Oracle Czech

Jevgeni Kabanov, CTO of ZeroTurnaround
Jevgeni Kabanov is the founder and CTO of ZeroTurnaround, a development tools company that focuses on productivity. He wrote the first version of the ZeroTurnaround flagship product, JRebel, a class-reloading JVM plugin.

Jevgeni has been speaking at international conferences for over 5 years, including JavaOne, JavaPolis/Devoxx, JavaZone, JAOO, QCon, TSSJS, JFokus and so on. Jevgeni also started the first Java conference in Estonia, Geekout. He has an active research interest in programming languages, types and virtual machines, publishing several papers on topics ranging from category theoretical notions to typesafe Java DSLs.

Jevgeni is on the Expert Group for the JSR 342 (Java EE 7). He has started two open-source projects -- Aranea and Squill. You can follow Jevgeni on Twitter as @ekabanov. See http://lanyrd.com/people/ekabanov/ for conference history and schedule.

Alexey Shevchuk, Lead developer at Odniklassniki.ru

Martijn Verburg, London Java User Group
Aka 'the Diabolical Developer', A Dutch born Kiwi who's a Director at TeamSparq - a consulting and mentoring start-up in London. Outside of TeamSparq he herds Cats in various Java and open source communities and is constantly humbled by the creativity and passion found there. Currently he resides in London with by kick-boxing wife where he co-leads the LJC - London's Java User Group (a JCP EC member), runs a couple of open source projects & tries to find time for a pint at his local. You'll find him online moderating at the Javaranch or discussing (ranting about) subjects on the Programmers Stack Exchange site. He's also a regular speaker at conferences (TSSJS, Devoxx, JavaOne etc) on Java, open source and software development and is finishing off his first Manning title - "The Well-Grounded Java Developer" with Ben Evans.

Claus Ibsen, Principal Software Engineer at FuseSource.
Claus Ibsen is a software engineer and integration specialists from FuseSource (http://fusesource.com/). Claus is a full time committer on the open source integration framework Apache Camel (http://camel.apache.org) and author of the "Camel in Action" book (http://www.manning.com/ibsen). Claus is the most active contributor to Apache Camel and is very active in the Camel community. He hang out on the Camel mailing lists, irc-room and often blogs about Camel. At FuseSource he leads the development of Camel and provides consulting and support to customers. Claus is frequent speaker at FuseSource community day events on subjects related to Camel. Claus has spoken at JavaZone, CamelOne, JEEConf, DevNexus, TSSJS, SDC and Devoxx. Prior to joining FuseSource, Claus has worked with integration in all sorts for the last decade.

Sami Ekblad, Partner Manager at Vaadin

Евгений Щепотьев, старший программист компании JetBrains, магистр НИУ ИТМО,
участвует в разработке проекта YouTrack и предметно-ориентированных языков,
использованных в этом проекте.

TALKS

Project Lambda: To Multicore and Beyond, Alexander Potochkin, Software developer at Oracle
This session covers the primary new language features for Java SE 8—lambda expressions, method references, and extension methods—and explores how existing as well as future libraries will be able to take advantage of them to make client code simultaneously more performant and less error-prone.

Introduction to JavaFX 2.0, Alexander Potochkin, Software developer at Oracle
At last year's JavaOne conferencer, Oracle laid out a long-term roadmap for JavaFX to make it a premier rich client platform. JavaFX 2.0, a major update to the JavaFX platform, is a significant milestone in fulfilling this vision. Starting with this version, developers can create JavaFX applications completely in the Java programming language, using standard Java development tools. It also introduces several new features to the JavaFX platform: integration with Swing applications, hardware-accelerated graphics, the ability to embed Web content, stable media playback, and an improved UI controls library. This session explores key new features and discusses use cases and benefits for Java developers of using JavaFX.

Java Memory Model in details. Sergey Kuksenko, Performance engineer at Oracle
Детальное и простое объяснение зачем нужна Java Memory Model и как она работает. (Revised version special for JavaDay Riga)

Java Platform Performance BOF. Sergey Kuksenko, Performance engineer at Oracle
Сессия в формате «вопрос-ответ» про производительность Java SE (EE), в частности, про виртуальные машины, JIT-компиляторы, библиотеки классов и сборщики мусора. Могут быть покрыты вопросы тестирования производительности, бенчмаркинг, вопросы параллельного программирования и Java Memory Model.

JavaEE 7 - Development & The Cloud, Martin Grebac, Principal Software Developer - GlassFish/Metro team & JAXB Lead at Oracle Czech
Java EE is heading towards the cloud, and this session is going to talk about the recent planned improvements and changes to the JavaEE specification which enable cloud - specific features, such as scalability, elasticity, multitenancy, service provisioning, ... . That all in a standard - Java EE standard way. We're also going to cover the continued push for ease of development and cover many new or largely re-worked areas like JAX-RS 2.0, Concurrency Utilities and many others. And of course, included is information on Java EE Reference Implementation - GlassFish and it's latest developments.

Glassfish Metro. Martin Grebac, Principal Software Developer - GlassFish/Metro team & JAXB Lead at Oracle Czech
Metro is a high-performance, extensible, easy-to-use web service stack. It is a one-stop shop for all your web service needs, from the simplest hello world web service to reliable, secured, and transacted web service that involves .NET services. A lot of new features have been added to the Metro Web Services stack lately, ranging from a completely revamped transaction implementation to high availability for reliable messaging, significantly easier configuration, and many security improvements and additions. The Metro Web Services stack is part of the open source GlassFish community and provides the GlassFish SOAP implementation but can also be used outside GlassFish. This session provides a complete overview of and instructions on how to utilize Metro's Web Service Stack.

Использование Системы Мета Программирования (MPS) для создания веб-приложений на примере баг-трекинговой системы YouTrack. Евгений Щепотьев - старший программист компании JetBrains, магистр НИУ ИТМО
JetBrains Meta Programming System - среда мета-программирования с открытым исходным кодом, позволяющая легко создавать новые предметно-ориентированные
языки (DSL) и использовать их при написании пользовательских приложений. YouTrack - самостоятельный коммерческий продукт созданный компанией JetBrains при помощи среды MPS.

Зачем использовать среду мета-программирования для создания веб-приложения?
С какими трудностями сталкивается разработчик и какие преимущества получает?
Для чего следует и для чего не следует использовать МПС? Каковы сложившиеся традиции и шаблоны программирования?
В процессе разработки YouTrack был создан целый фреймворк, включающий в себя множество языков и вспомогательных инструментов, призванный облегчить написание подобных приложений в дальнейшем.

Enterprise Integration Patterns and DSL with Apache Camel. Claus Ibsen
Apache Camel, a very popular integration framework, builds on the principles of the EIPs (Enterprise Integration Patterns)
and DSLs (Domain Specific Language).

In this talk we show how integration can become much easier and accessible with Camel. By wiring together EIP patterns, processes and transports, integrating becomes as simple as building routes "lego style.", The wiring is done using the Camel DSL. We will cover some of the most used EIP patterns such as Splitter, Aggregator, Recipient List, Dead Letter Channel, Idempotent Consumer etc. And give pointers about tips and tricks along the way. This talk includes live demos that show how to build integration flows in DSLs: plain Java, XML and Groovy.

We will also show you how you can use Eclipse tooling to build routes using a graphical drag'n'drop environment, as well how to gain insights into running Camel applications, such as message tracing.

We will cover how Apache Camel is related to Apache ServiceMix, and why you should consider using Apache ServiceMix to host your integration applications.

In the end of the talk we take a look at the noteworthy new features of the latest Camel release, as well what we have planned for the upcoming releases.

Why doesn't Java have instant turnaround? Jevgeni Kabanov
In the dynamic languages it's a given. In .NET the problem is much smaller. But Java EE applications take from 15s up to 10 minutes to build & redeploy, after every change, no matter how small. IDE automate the process, but still require the wait. Why is that and how can it be solved?

In the recent years JRebel rose to prominence as the answer to this issue. Challengers like Oracle FastSwap and Javeleon are also on the market. And instant turnaround is one of the core attractions of the Play! framework, Grails and Tapestry 5. In this talk we will review the technical and conceptual challenges involved in solving this issue and the options available today, including the tools mentioned. We'll also cover some social aspects.

Do you really get class loaders? Jevgeni Kabanov
Class loaders are at the core of the Java language. Java EE containers, OSGi, NetBeans modules, Tapestry 5, Grails and many others use class loaders heavily. Yet when something goes wrong, would you know how to solve it?

In this session we'll take a tour of the Java class loading mechanism, both from JVM and developer point of view. We will look at typical problems that you get with class loading and how to solve them. ClassNoDefError, IncompatibleClassChangeError, LinkageError and many others are symptoms of specific things going wrong that you can usually find and fix. For each problem we'll go through a hands on demo with a corresponding solution.

We'll also take a look at how and why classloaders leak and how can you remedy that.

Как, используя Lucene, построить высоконагруженную систему поиска разнородных данных. Алексей Шевчук, Одноклассники
Lucene - это популярный движок для построения полнотекстовых поисков. Им пользуются Twitter, LinkedIn, Apple и ряд других немаленьких компаний. В 2009 году Одноклассники запустили первый поиск на Lucene, и за два года к поиску пользователей добавились еще 5 других поисковых сервисов. В докладе будет рассказано о том, как устроены эти поисковые сервисы.
Так же в докладе расскажем о системе, которая одновременно ищет во всех индексах, а так же использует информацию о пользователе чтобы улучшить релевантность выдачи. Система обрабатывает более 60 млн запросов в день, и на каждый ответ тратит в среднем 90мс.

Vaadin. Sami Ekblad
Description to be added.

Diabolical Developer. Martijn Verburg
The Diabolical Developer hosts this in(famous) session in which he challenges everything the modern Java developer holds to be good and true. The Java developer today stands in a sea of APIs, frameworks, best practices, software development methodologies, and more. The developers who sent mankind into outer space did not have all of this. Makes you think, doesn't it? The session takes you through practical steps (the right attitude, self-learning, using the right tools, sticking to Java 1.4, and the like) you can take to free yourself from the chains the industry has put on you. You will leave empowered and will get back to doing what you love the most, hacking Java code.
Read more...

Friday, November 4, 2011

Introduction to River

Innovative Community Day. Bangalore 2010. River Intro

"Listen to Gigi Read and Juergen Schmerder from SAP explaining what River is and how the participants of the Innovative Community Day 2010 in Bangalore can use it."



Project River Juergen Schmerder and Gigi read Innovation week-end TechEd LAs Vegas 2010

Read more...

Wednesday, November 2, 2011


"Какую бы программу вы ни писали, всё равно получается компилятор".

Вот, например, некто metaclass делится своими довольно характерными переживаниями по поводу:

"Пытаясь сделать приложение, для перенастройки которого под новые бизнес-процессы не требуется перекомпиляция, довел его до того, что в нем чуть ли не собственный язык программирования получился. В итоге в следующей версии забил и сделал то же самое в виде конечных автоматов на обычном языке программирования, компилируется это дело в обычную dll, и все на этом. Отладка проще, птичьего языка не нужно, парсеров не нужно, итд. [...] Обычно это делается с целью "отдать обслуживание и настройку" другим людям, знающим предметную область, но не программистам. В итоге получается только хуже. Предметники отказываются настраивать ("это работа программистов/админов/обслуживающего персонала"), а ИТшники хуже знакомы с предметной областью и им все-таки проще описание в виде кода, а не данных."

В связи с этим иногда бывает полезно повторять мантру "c'mon, guys, we're building an application, not a Christmas tree". Read more...

Tuesday, September 27, 2011

"Hall of API Shame: Boolean Trap" by ariya.ofilabs.com

The nice thing working for Trolltech was (among others) learning the principles behind the good API. The article Designing Qt-Style C++ API from Matthias 6 years ago is still a good reading till today. The content itself is now expanded into the wiki page API Design Principles.

The major premise behind a good API is rather straightforward:

the code is usually written once but read many times.

When writing the code, the developer has the time she needs to look at the API documentation and digest it. When someone else reads the code (for review or bug fix), she may not always have the API documentation handy. While this is just common sense, wait until you finish reading and see why this important fact is still overlooked these days.

Note: Qt is in C++, but surprisingly the same API design principles apply to the (wonderful) world of JavaScript, which is the focus in this blog post.

George Boole, inventor of the Boolean logic.

For this particular discussion, I’ll pick my favorite API design mistake: boolean trap. On this topic, the above API Design Principle wiki page says that

it’s almost invariably a mistake to add a bool parameter to an existing function

Let’s start with the textbook example: guess what this code means?

widget.repaint(false);

Without looking at the documentation, the usual suspect is don’t repaint the widget. Then, you look at the documentation and it refers the function argument as immediate, which is true if you want immediate painting or false for deferred painting. Thus, the correct behavior implied by the above code is actually repaint this widget later, which is miles away from your initial guess.

One possible solution to this problem is to use explicit function argument. In the C++ world, this can be solved using enum, e.g. widget.repaint(WidgetClass::Deferred). In the JavaScript world, the alternative is using an object literal such as,

widget.repaint({ immediate: false });

or the more verbose variant:

widget.repaint({ mode: "immediate" });

or just create a different function for that purpose:

widget.repaintLater();

There will be a concern of performance since an object is more expensive than just a simple boolean literal. Thus, profile your code carefully and set a sensible compromise if this above line is in your hot path. On the other hand, I also do believe that modern future JavaScript engines would be smart enough to optimize such usages that the speed penalty is negligible.

Another classic is the confusion during construction. Your user interface needs a bunch of sliders to allow the user to choose some values. Here is one line in the code for you to review:

var opacitySlider = new Slider(true);

Mysteriously, there are also lines similar to:

var volumeSlider = new Slider(false);

It turns out that true there means a horizontal slider and false means a vertical slider. Of course, the easiest way to clear this confusion is to actually name the object HorizontalSlider and VerticalSlider and get rid of the boolean argument. Heck, who knows someday you’ll need a diagonal slider!

You may scream, "Of course, I won’t be too idiot to make those rookie mistakes!". Well, in the following paragraphs I’ll give examples of actual boolean traps in the API of several well-known JavaScript libraries and frameworks out there (I try to be unbiased). Consider that there are millions of developers using the libraries in real-world web applications, imagine the exposure of the traps.

For each of this case, imagine you are doing a code review. Your amazing coworker wants to commit a patch and he consults you to check your opinion.

to be or not to be

This is the same as the textbook example, but coming from a real framework:

stackView.updateHeight(false);

Yes, that false again refers to immediate or not. To the untrained developer, the above line feels like don’t update the height. A real crazy one might even stretch it to update the width!

Here is another one. To facilitate easy iteration of child widgets, you can use next() function which would get you the next sibling. But then, the code looks like:

widget.next(true);

which actually does the extra magic (because of the true value) that the very first child widget will be returned if you hit the last one. In other words, true there stands for circular. An innocent value which does too much behind your back. Well, good luck trying to review that kind of code.

Another dangerous venture:

widget.destroy(false);

which potentially leads you to think don’t destroy this widget. You can’t be more wrong, the function actually still destroys your widget, but it leaves the DOM associated with the widget intact. Only if the argument is true then actually every related DOM pieces is also tore torn down.

optionally undecipherable

Now that we have the slider for the UI, we need to preset the value:

volumeSlider.setValue(90, false);

Another boolean horror! The documentation reveals that false there indicates that the slider should not animate the movement of its indicator from the old value to the new value. By default, it will show the animation but since we want to set the initial value, the animation will be distracting and needs to be off. How about writing it like this instead?

volumeSlider.setValue(90, { animation: false } );

There is this list view of all your customers. We want to find out who live in a certain city. Can you guess what the last optional argument refers to?

customerView.filter('address', 'sunnyvale', false);

Oh, apparently the API documentation refers it to caseSensitive! Just by looking at it, this is not obvious and it could mean an entirely different thing, anything from exactMatch to highlightMatchedLine. One possible workaround:

customerView.filter('address', 'sunnyvale', { caseSensitive: false });

the more, the merrier

While one boolean argument is already confusing, two boolean arguments can’t be more fun.

To handle layout, often there is a line of code that looks like:

cmp.setCentered(true, false);

Again, a trip to the API doc enlightens the reviewer that the function signature is actually setCentered(centered, autoUpdate). This is confusing as setCentered(centered) only is probably fine, it’s just like a property setter, but the interplay of the autoUpdate argument forces the brain to think harder.

Note that a pair of values like that, especially in the context of centering/geometry purpose, might provoke a different interpretation: center vertically and horizontally. This is arguably the most sensible one which comes to mind if one sees that code.

Here is another one:

menu.stop(true, false);

The boolean values there refer to clear the animation queue or not and go to the animation or not, respectively. They are not even remotely related. What is your best educated guess if you did not know this beforehand?

Of course, why stop at two if you can have more?

event.initKeyEvent("keypress", true, true, null, null,     false, false, false, false, 9, 0);

double negative

Now, coming back to property setter, this is one valid use of boolean argument, e.g. dialogBox.setVisible(true). However, care must be taken so that there is no such double negative. Especially for non-native speakers, double negative requires an extra careful measure to make sure that the right meaning is communicated.

If I wake you at midnight and ask you this question "if invisible is false, does that mean my component is shown or hidden?", there is a chance you answer it incorrectly.

Real-world examples of double negative follow:

volumeSlider.setThumbsDisabled(false); component.setDisabled(false); filter.setCaseInsensitive(false);

Would you be less confused if this is what you read instead?

volumeSlider.setThumbsEnabled(true); component.setEnabled(true); filter.setCaseSensitive(true);

The same principle applies to active vs inactive, modified vs unmodified, defined vs undefined, selected vs unselected, etc.

By now, hopefully you got the idea of various risky uses of boolean argument. Feel free to share your favorite freak-out moment as you encounter such a similar trap.

Most importantly, next time you design an API function, remember George Boole and don’t let him down!

Update: Some people on Reddit pointed out that they would not interpret widget.repaint(false) as do not repaint. First of all, it’s subjective. In some languages it can be understood as repaint not, which is effectively a negation. Also, the context might pollute, e.g. if there is fooWidget.show(false) (which means do not show) right before, then it may influence a similar conclusion for the repaint issue. I was also not clear that any crazy possible interpretations are just examples, substitute them with your own imaginations. The fact that everyone can propose a different interpretation is the premise: ambiguity begets insanity.

[source]

Read more...

User Interface Engineering: "Do users change their settings?"

Jared Spool

September 14th, 2011

Back in the early days of PC computing, we were interested in how people used all those options, controls, and settings that software designers put into their applications. How much do users customize their applications?

We embarked on a little experiment. We asked a ton of people to send us their settings file for Microsoft Word. At the time, MS Word stored all the settings in a file named something like config.ini, so we asked people to locate that file on their hard disk and email it to us. Several hundred folks did just that.

We then wrote a program to analyze the files, counting up how many people had changed the 150+ settings in the applications and which settings they had changed.

What we found was really interesting. Less than 5% of the users we surveyed had changed any settings at all. More than 95% had kept the settings in the exact configuration that the program installed in.

This was particularly curious because some of the program’s defaults were notable. For example, the program had a feature that would automatically save your work as edited a document, to prevent losing anything in case of a system or program failure. In the default settings for the version we analyzed, this feature was disabled. Users had to explicitly turn it on to make it work.

Of course, this mean that 95% of the users were running with autosave turned off. When we interviewed a sample of them, they all told us the same thing: They assumed Microsoft had delivered it turned off for a reason, therefore who were they to set it otherwise. “Microsoft must know what they are doing,” several of the participants told us.

We thought about that and wondered what the rationale was for keeping such an important feature turned off. We thought that maybe they were concerned about people running off floppies or those who had slow or small disks. Autosave does have performance implications, so maybe they were optimizing the behavior for the worst case, assuming that users who had the luxury to use the feature would turn it on.

We had friends in the Microsoft Office group, so we asked them about the choice of delivering the feature disabled. We explained our hypothesis about optimizing for performance. They asked around and told us our hypothesis was incorrect.

It turns out the reason the feature was disabled in that release was not because they had thought about the user’s needs. Instead, it was because a programmer had made a decision to initialize the config.ini file with all zeroes. Making a file filled with zeroes is a quick little program, so that’s what he wrote, assuming that, at some point later, someone would tell him what the “real defaults” should be. Nobody ever got around to telling him.

Since zero in binary means off, the autosave setting, along with a lot of other settings, were automatically disabled. The users’ assumption that Microsoft had given this careful consideration turned out not to be the case.

We also asked our participants for background information, like age and occupation, to see if that made a difference. It didn’t, except one category of people who almost always changed their settings: programmers and designers. They often had changed more than 40% (and some had changed as much as 80%) of the options in the program.

It seems programmers and designers like to customize their environment. Who would’ve guessed? Could that be why they chose their profession?

(Big takeaway: If you’re a programmer or designer, then you’re not like most people. Just because you change your settings in apps you use doesn’t mean that your users will, unless they are also programmers and designers.)

We’ve repeated this experiment in various forms over the years. We’ve found it to be consistently true: users rarely change their settings.

If your application has settings, have you looked to see what your users do? How many have changed them? Are the defaults the optimal choice? Does your settings screen explain the implications of each setting and give your users a good reason for mucking with the defaults?

Read more...

Saturday, September 24, 2011

Viking Laws


1. BE BRAVE AND AGGRESSIVE
BE DIRECT
GRAP ALL OPPORTUNITIES
USE VARYING METHODS OF ATTACK
BE VERSATILE AND AGILE
ATTACK ONE TARGET AT A TIME
DON'T PLAN EVERYTHING IN DETAIL
USE TOP QUALITY WEAPONS

2. BE PREPARED
KEEP WEAPONS IN GOOD CONDITIONS
KEEP IN SHAPE
FIND GOOD BATTLE COMRADES
AGREE ON IMPORTANT POINTS
CHOOSE ONE CHIEF

3. BE A GOOD MERCHANT
FIND OUT WHAT THE MARKET NEEDS
DON'T PROMISE WHAT YOU CAN'T KEEP
DON'T DEMAND OVERPAYMENT
ARRANGE THINGS SO THAT YOU CAN RETURN

4. KEEP THE CAMP IN ORDER
KEEP THINGS TIDY AND ORGANIZED
ARRANGE ENJOYABLE ACTIVITIES WHICH STRENGTHEN THE GROUP
MAKE SURE EVERYBODY DOES USEFUL WORK
CONSULT ALL MEMBERS OF THE GROUP FOR ADVICE


Read more...

Бутерброды со шкварками и луком по-крестьянски

Продукты: хлеб, репчатый лук, шпик.

Шпик нарезать мелкими кусочками, вытопить. В полученном жире со шкварками обжарить лук, массу охладить, намазать на ломтики хлеба. Подавать к горячим кислым щам. Read more...

Суп с картофельными ушками

Куриный или мясной бульон, зелень укропа или петрушки, 4-5 картофелин среднего размера, 1 яйцо, 2-3 ст. ложки муки.

Картофель отварить в мундире, очистить, истолочь или порпустить через мясорубку, добавить сырое яйцо, соль, муку, замесить картофельную массу. Разделать массу на небольшие шарики, из которых скалкой раскатать кружки (как для пельменей). Слепить из кружков ушки, опустить их в кипящий бульон и отварить.

Суп подавать с рубленой зеленью укропа или петрушки. Read more...

Квас сухарный

Ржаные сухари обжаривают в духовке так, чтобы они зарумянились, но не подгорели, складывают в бочонок, бачок или кастрюлю, заливают теплой водой (70-80 градусов по Цельсию) из расчета 1.8л на 1кг сухарей и оставляют в теплом месте на 2ч, переодически помешивая. Настой сливают, а оставшиеся сухари заливают еще раз водой (1-1.2л на 1кг), настаивают 1-2ч и сливают настой в полученный ранее. Затем полученное сусло охлаждают до 20-25 градусов по Цельсию, добавляют сахар, дрожжи, разбавленные этим же суслом, настой мяты (можно готовить квас и без мяты) и оставляют в тепле на 8-12ч. Разлив в бутылки, хранят на холоде.

На 1кг сухарей:
* сахар - 1.5кг,
* дрожжи - 40г,
* вода - 3л,
* мята. Read more...

Sunday, September 4, 2011

RSA Animate Matthew Taylor: Left brain, right brain

Read more...

RSA Animate - Choice

Read more...

RSA Animate - The Internet in Society: Empowering or Censoring Citizens?

Read more...

RSA Animate - 21st Century Enlightenment

Read more...

RSA Animate - First as Tragedy, Then as Farce


Read more...

Saturday, September 3, 2011

RSA Animate - Superfreakonomics

Read more...

RSA Animate - The Empathic Civilisation

Местами наивно-утопично, но все равно интересно. И рисунки... В общем - для коллекции. :)



Read more...

RSA Animate - The Secret Powers of Time

The original presentation:



With Spanish subtitles:

Read more...

RSA Animate - Language as a Window into Human Nature

Read more...

RSA Animate - Changing Education Paradigm

Read more...

RSA Animate - Crises of Capitalism


The original presentation:




The critique:

Read more...

RSA Animate - Smile or Die



Чрезмерная и повсеместная увлеченность позитивным мышлением - одна из причин недавнего финансового кризиса. Read more...

Thursday, September 1, 2011

JUG.LV - Meeting #10 on 8-Sep-2011 - registration started!

Agenda:


Java User Group Meeting

When: September 8th, 2011
Where: Tallink Hotel Riga, Elizabetes 24, Riga, Latvia

18:15 : Welcome {
18:30 - 18:40 - Java User Group Updates
18:40 - 18:55 - C.T.Co - Sponsored Talk
18:55 - 19:55 - Kirill Menshikov - GemFire: In-Memory Data Grid
19:55 - 20:10 - coffee break
20:10 - 21:00 - Kirill Afanasjev - Google Guicehttp://www.blogger.com/img/blank.gif
21:00 - 21:10 - Wrap-up and raffle
21:10 : }

70 tickets remaining at the moment of writing this.
Read more...

RSA Animate - The Truth about Motivation

Read more...

Friday, August 26, 2011

Saturday, August 20, 2011

Online Date Calculators

Calendars, holidays and date calculators on TimeAndDate.com

Duration Calculator - Calculate the number days it is between any two dates.
Date Calculator - Want to find what time and date it is in 500 days or 5000 hours from now?
Birthday Calculator - Find out when you are 10000 days old or maybe 1 billion seconds old?
Uses for the Date Calculators - See what the calculators can do – with examples.
Moon Phase Calculator - Find phases of the Moon for any year. Read more...

Be yourself; everyone else is already taken. Read more...

Законы машинного программирования

1. Внутри каждой большой программы есть маленькая, которая там совсем не нужна.
2. Все ошибки, описанные как особенности, в момент сдачи
программы не сработают или будут вести себя, как ошибки.
3. Все программы содержат ошибки, просто о некоторых мы не догадываемся.
4. Если Вы заводите в компьютер ерунду, то ничего кроме ерунды оттуда не выходит, только прошедшая через обработку такой умной машиной ерунда становится ценной и значимой в глазах начальства.
5. Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей.
6. Если Вы точно не знаете, что ваша программа должна делать, надо ли ее начинать?
7. Если программа бесполезна, она будет документирована. Если программа полезна, ее изменят.
8. Если программа полностью отлажена, ее нужно будет скорректировать.
9. Именно та ошибка, о которой не знаешь, в один прекрасный день запорет твою работу за последние пять лет, одновременно уничтожая все игры на диске начальника.
10. Компьютерам свойственно ошибаться, но людям свойственно делать это намного чаще (В каждой ошибке компьютера Вы найдете, по крайней мере, две ошибки человека).
11. Любая, даже самая гениальная программа никогда не работает в момент сдачи ее заказчику.
12. Любая действующая программа устарела.
13. Любая программа обходится дороже и требует больших затрат времени, чем предполагалось.
14. Любая программа стремится занять всю доступную память.
15. Мощность компьютера увеличивается как квадрат цены. Таким образом, если Вы хотите сделать ваш компьютер в два раза дешевле, Вам нужно сделать его вчетверо быстрее.
16. Неопределимые ошибки бесконечны, а определимые ограничены способностями компилятора.
17. Новый компьютер сломается как раз тогда, когда старый отключат и выбросят.
18. Основное различие между пользователя и хакером, взламывающим какую-либо систему это то, что действия пользователя непредсказуемы, и он действует на более широком фронте.
19. Работа с автоматическим исправителем ошибок приведет к обнаружению его узких способностей и широких недостатков.
20. Сделайте так, чтобы программисты писали программы на английском, и Вы узнаете,что они не умеют писать на английском.
21. Сделать компьютер значительно проще и дешевле, чем заставить его что-то делать.
22. Сложность программы растет до тех пор, пока не превысит способности программиста.
23. Программы тестирования обязательно находят ошибку там, где их нет. Если ошибка все-таки есть то она в другом месте (например, на 5-10 символов выше, за границей экрана).
24. То, что некоторые пользователи зовут в программе, пользуясь ей, ошибкой, на самом деле является особенностью. Вывод: все что является для них особенностью или просто крутым (например, Windows) на самом деле есть не что иное, как одна большая ошибка.
25. Усилия, прилагаемые для исправления ошибки, увеличивают ее в геометрической прогрессии по отношению к затраченному времени.
26. Ценность программы прямо пропорциональна весу ее "выдачи".
27. Чем более сложна и совершенна программа, тем более неточные результаты она выдает.

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

Третий закон Грида
Машинная программа выполняет то, что Вы ей приказали делать, а не то, что бы Вы хотели, чтобы она делала.

Второй закон Вейнберга
Если бы строители строили здания так же, как программисты пишут программы, первый залетевший дятел разрушил бы цивилизацию.

Первая компьютерная аксиома Лео Бейзера
Закладывая что-то в ЭВМ, помните, куда Вы это положили.

Руководство по системному программированию Штейнбаха
Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать.

Закон Сатлингера
Компьютер будет работать лучше, если его включить.

Постулаты Трумэна по программированию
1. Самая грубая ошибка будет выявлена, лишь когда программа пробудет в производстве, по крайней мере, полгода.
2. Контрольные перфокарты,которые не могут стоять в неправильном порядке, будут перепутаны.
3. Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобретательный идиот, который придумает способ, чтобы неправильная информация прошла через этот контроль.
4. Непечатный жаргон - это тот язык, которым решительно все программисты владеют в совершенстве.
5. Защита от "дурака" спасает только от неизобретательного дурака.
6. Если у Вас вдруг появляется гениальная идея, Вы ее тут же забываете, но если она неверна, то пытаетесь ее применить.
7. Если установка программы прошла нормально с первого раза, ничего не будет работать.

Законы ненадежности Джилба
1. Компьютеры ненадежны, но люди еще ненадежнее.
2. Любая система, зависящая от человеческой надежности, ненадежна.
3. Число ошибок, которые нельзя обнаружить, бесконечно, в противовес числу ошибок, которые можно обнаружить,- оно конечно по определению.
4. В поиски повышения надежности будут вкладываться средства до тех пор, пока они не превысят величину убытков от неизбежных ошибок или пока кто-нибудь не потребует, чтобы была сделана хоть какая-то полезная работа.

Закон Брука
Увеличения числа участников при подготовке опаздывающей программы только замедляет процесс.

Закон мира ЭВМ по Голубу
1. Неточно спланированная программа требует в три раза больше времени, чем предполагалось; тщательно спланированная - только в два раза.
2. Работающая над программой группа питает отвращение к еженедельной отчетности о достигнутых результатах, поскольку она слишком явно свидетельствует об отсутствии таковых.

Принцип Шоу
Создайте систему, которой сможет пользоваться дурак, и только дурак захочет ею пользоваться.

Законы Лопатина о программировании
1. Если ты наконец-то выучил язык программирования, то он никому уже не нужен.
2. Если ты думаешь, что знаешь язык программирования, то ошибаешься - твои знания безнадежно устарели.
3. Если язык программирования необычайно полезен и популярен в этой стране, то за ее пределами он никому не нужен.

Закон о надежности компьютера
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо. Read more...

Если бы программисты строили дома

Своего рода программистский фольклор - довольно "бородатая" и широко известная в узких кругах вещь, на которую ссылаются в определенных ситуациях. Let's put it here, что называется, for our reference. Кстати, для равновесия и для того, чтобы неокрепшие умы не сделали из этого юмористического текста направильные выводы, этот текст обязательно должен идти в паре с "Build Plain in the Air"



1.03. Ура! Нам предложили крупный контракт на постройку 12-этажного жилого дома. У всех бурный энтузиазм. Выпили на радостях 2 ящика пива.

2.03. Заказчику не нравится выражение "как только, так сразу". Требует назвать конкретные сроки. Темный, ничего не смыслит в высоких технологиях.

3.03. Обсуждали сроки. Выпили 3 ящика пива. Петрович говорит, что тут всей работы на 4 месяца. Значит, на самом деле 8. В итоге в контракте записали 12, хотя раньше, чем за 16, вряд ли управимся.

6.03. Петрович пошел сдавать бутылки.

8.03. Отмечаем 8 Марта. Женщин у нас в фирме нет, так что праздник никто не портит.

2.04. Петрович говорит, что пора начинать работать. Сговорились они, что ли? Обнесли площадку забором и повесили красивые плакаты "Строительство ведет компания "Аllstrоу" (www.аllstrоу.ru)". С чувством выполненного долга играем в Quаkе.

20.04. Пришел заказчик, интересовался, как дела. Посадили его за Quаkе и позволили нас всех обыграть.

21.04. Обсуждали проект. Сидоров предлагает крупноблочную архитектуру. Петрович настаивает, что все надо строить по старинке, из кирпича, не по-ламерски. Самый радикальный проект предложил Алекс: построить несколько десятков деревянных коттеджей и потом соединить их подземными туннелями. На Западе сейчас так модно. Напомнили ему, что заказчик требует именно 12-этажный дом. Пытались решить вопрос дуэлью в Quаkе. Алекса с его коттеджами завалили сразу, но между Петровичем и Сидоровым вышла ничья. В итоге каждый будет строить по своему плану, а потом попытаемся все это соединить, чтоб не рухнуло.

30.04. Первый этаж готов! Показали его заказчику. Он интересовался, почему в разных комнатах разная высота потолков, почему из стен вываливаются кирпичи и почему в доме нет подъезда, а влезать приходится через окно. Объяснили ему, что это специальные ограничения демо-версии. Уходим на праздники, гордые собой.

10.05. Петрович протрезвел первым и долго ругался. Мы думали, что Алекс выпил все пиво. Оказалось хуже: мы забыли про фундамент. В проекте он, конечно, описан, но ведь документацию читают только ламеры.

11.05. Ломали первый этаж. Обидно, блин.

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

17.07. Алекс строит чердак и крышу. На земле. Потом поднимем краном.

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

14.08. Разломали несколько панелей, чтобы Петрович мог изучить внутреннюю архитектуру. Петрович ругается, кричит, что проектировщики панелей - полные ламеры.

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

1.09. Стройкомбинат выпустил новую версию панелей, улучшенной прочности и утепленности, со встроенными стенными шкафами. Правда, ни по форме, ни по размеру они не совместимы с предыдущими и в три раза тяжелее. На какую архитектуру они вообще рассчитывают, эти комбинатские?

16.09. Прибежал Алекс, обуреваемый идеей. Предлагает сделать все окна в доме изменяемого размера. Говорит, заказчик будет тащиться. Сказали ему, чтоб не выпендривался.

2.10. Петрович добрался до пятого этажа. Горд собой. Обратили его внимание на тот факт, что его стена наклонена под углом 40 градусов. Он ругался, кричал, что мы ламеры и ничего не понимаем. Потом обещал подумать.

3.10. Приходил заказчик. Спросил, почему стена наклонена под углом 40 градусов. Объясняли ему про силу Кориолиса. Он все выслушал, потом сказал, что он, конечно, в строительном деле ничего не смыслит, но у него по соседству точно такой же дом, и там стена прямая. Блин. Потом этот идиот Алекс ляпнул при нем про свои изменяемые окна. Заказчик, естественно, загорелся и настаивает, чтоб делали именно так. Дважды блин.

4.10. Спросили Алекса, придется ли все разбирать ради его окон. Он уверяет, что нет - будто бы и у стандартных панелей есть такая недокументированная функция.

5.10. Петрович признал, что со стеной действительно имеется проблема. Говорит, что неправильно положил какой-то кирпич. Но чтобы понять, какой именно, надо перебрать их все. Проще все снести и построить заново.

6.10. Убеждали Петровича, что построить все заново из кирпича он уже не успеет. Демонстрировали ему расчеты на калькуляторе. Петрович ругался, кричал, что калькулятор придумали ламеры. Потом все-таки согласился строить из панелей и ушел с горя в запой.

8.10. Ломали кирпичную часть. Попутно повредили панельную. Вся постройка скрипит и угрожающе шатается. Укрепили деревянными подпорками и пошли играть в Quаkе.

17.10. Петрович вышел из запоя. Работаем.

7.11. Празднуем 7 Ноября - или как оно там теперь называется? Коммунистов у нас в фирме нет, так что праздник никто не портит.

15.11. Вспомнили, что у нас кран достает только до 8 этажа. Послали Сидорова доставать новый кран. Играем в Quаkе. Алекс замочил Петровича. Растет смена!

24.11. Вернулся Сидоров. Кран не достал, зато достал крутой экскаватор. Предлагает вырыть глубокую шахту и построить дом не в высоту, а в глубину. Говорит, что нигде в контракте не сказано, что 12 этажей должны быть над поверхностью. Еле отговорили.

25.11. Устроили мозговой штурм по проблеме крана. На последней бутылке пива нашли решение. Бросили основное строительство. Строим рядом 4-этажный дом. Потом втащим наш кран ему на крышу.

25.12. Празднуем католическое Рождество. Католиков у нас в фирме нет, так что праздник никто не портит.

14.01. Ничего не помню. Голова болит. Мужики, какой сейчас год?

2.02. Ну, кажется, наконец-то достраиваем 12-й этаж. Завтра будем прилаживать сверху чердак и крышу, что соорудил Алекс.

3.02. Алекс - ламер. Крыша регулярно съезжает. Пока подперли краном. Думаем, что делать дальше.

4.02. Алекс доказывает, что он не виноват. Просто 12 этажей Сидорова на 4 метра выше и на 5 метров шире, чем 12 этажей Петровича. Выяснилось, что они строили из разных панелей. Но Алекс все равно ламер, поскольку его крыша не подходит по размеру ни одному из вариантов. Его шахта лифта, кстати, тоже.

5.02. Латали, укрепляли и наращивали крышу. Петрович говорит, что будет держаться, если снег не пойдет.

7.02. Снег пошел.

10.02. Соорудили крышу из фанеры, покрасили под жесть. Будем надеяться, заказчик не заметит.

11.02. Тестировали лифт. Его остановки приходятся между этажами, но выбраться из кабины можно. На четных этажах ползком, на нечетных - подтягиваясь. Не забыть описать это в документации.

12.02. А вообще-то лифт ездит крайне медленно. Петрович ругает всех ламерами и собирается заняться оптимизацией.

13.02. Петрович оптимизировал лифт. Тот разогнался, пробил крышу и улетел в неизвестном направлении. Хорошо, что крыша фанерная, и чинить будет легко. После этого шахта лифта рухнула. Вспомнили, что так и не заменили деревянные подпорки на что-нибудь более прочное. Ничего. Ходить пешком полезно.

15.02. Идут отделочные работы. Почему-то куда-то исчезают маляры и штукатуры. Договорились, чтоб прислали еще.

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

20.02. Алекс, наконец, доделал свои изменяющиеся окна. Тестировали. Выяснилось, что при изменении размера окна в нем бьются стекла. Кроме того, наблюдается ряд побочных эффектов. Например, в гостиную одной квартиры может въехать унитаз и ванна из другой. Также иногда исчезают двери и осыпаются балконы. Жаловаться на стройкомбинат бесполезно - они скажут, что нечего пользоваться недокументированными
функциями.

21.02. Приходил заказчик. Спрашивал, нельзя ли внести в проект небольшие изменения. В частности, вместо 12-этажного дома построить поселок из деревянных коттеджей, соединенных туннелями. Он прочитал, что на Западе сейчас так модно. Нейтрализовали Алекса прежде, чем тот успел открыть рот, и вежливо, но твердо объяснили заказчику, что он не прав.

22.02. Балконы продолжают сыпаться, хотя изменяемые окна мы больше не трогали. Видимо, это какой-то независимый глюк. Какой, искать уже поздно, так что просто отодрали оставшиеся балконы от греха. Попробуем объяснить заказчику, что это сделано в целях оптимизации.

23.02. Праздновали 23 февраля. Военных у нас в фирме нет, так что праздник никто не портил. Женщин тоже нет, так что подарков нам никто не дарил. Обидно.

25.02. Алекс попытался доделать свои окна. В результате половина из них ужалась до нулевого размера и обратно не разворачивается. Сказали ему, чтоб больше не выпендривался, а то будет еще хуже.

27.02. Вспомнили, что так и забыли сделать подъезд. Размышляли, не рухнет ли дом, если прорубить его сейчас. Сидоров сказал, что лучше не рисковать. Петрович обозвал его ламером и согласился. Не забыть описать в документации вход через окно как особенность дизайна.

1.03. К-как первое марта?! Откуда?! Вчера же еще... Блин. Кто ж знал, что в этом ламерском феврале 28 дней! Выходит, сдача объекта - не через неделю, а послезавтра?!

2.03. Аврал. Работаем 24 часа в сутки, не просыпаясь.

3.03. Убедили заказчика, что нам нужен еще день для финального тестирования. М-да, ну мы вчера и наработали... А в общем, не все так страшно. Ну что с того, что некоторые двери находятся в полу или в потолке, либо ведут с десятого этажа прямиком на улицу, в некоторые квартиры в принципе невозможно попасть, санузел кое-где совмещен с кухней, в половине дома нет воды, в другой половине - электричества, канализация обрывается на шестом этаже, а лестницу между восьмым и девятым пришлось сделать веревочной? Главное - провести заказчика правильным маршрутом. И еще - успеть до завтра развесить на месте исчезнувших окон картинки с изображением заоконных пейзажей...

4.03. Yes! Yes! Мы сделали это! Отмечаем сдачу объекта. Я пью мало, мне надо еще успеть уволиться, прежде чем эта хренотень рухнет к чертовой матери... Read more...

Friday, July 15, 2011

Remember: no job is finished until the paperwork is done!

Read more...

Tuesday, July 12, 2011

Вымогательство вашей помощи - не медли держите меня в курсе

from johan payet johandupuis@123mail.cl
date Tue, Jul 12, 2011 at 12:16 AM
subject золотой песок

Здравствуйте, дорогие партнера
Я настоящим вымогательство вашей помощи
продажи золота.
На самом деле, я представляю группу сельских жителей (вытяжка) из
Бенин находится в операционной и сказал мне,
320 кг золота, чтобы найти покупателя Стоя в Европе, Азии
или США. Если вы заинтересованы в этом предложении,
не медлите связаться со мной для получения дополнительной информации. Я
возможности и условия оплаты.
/ FEATURES.
Природа: или порошка.
Количество: 320 кг
Чистота: 98-98%
Качество: 22 карат больше.
Происхождение: Бенин
Цена: 24000 USD / кг
Налоги: налог на реэкспорт (таможенные, транспортные,.
страхования, лицензии ...)
B / УСЛОВИЯ ОПЛАТЫ
1-L'acheteur или его представитель навещает в Котону
фактического наличия товаров и сделать свой опыт.
2 - покупатель берет на себя расходы на реэкспорт
а именно, грузов, таможенных, страховых, взвешивание и запись
контроль за реэкспортом разрешения, аренды и лицензии
доставку грузов ........
3 - Все сборы оплачиваются покупателем после пересылки
проверки качества товаров и печатью его.
4 - продавец или его представитель должен сопровождать товар до
литья покупателя для поддержки операций плавления и
до окончательного расчета.
5 - Все расходы, понесенные покупателем транспорта
Котону золото на своем заводе будет вычтена из общей суммы до
оплаты.
6 - Если это посредник, мы предоставляем ему комиссионные
по сравнению с количеством килограммов золота приобрели. Эта комиссия будет
обсуждается в установленном порядке.
7 - поставщик будет устанавливать вращающихся контракту от 30 до 60 кг
месяцев между ним и покупателем после первой операции.
Уважаемый партнер, если мое предложение привлекает ваше внимание, не медли
держите меня в курсе, а затем сделать программу перейти к
Котону, чтобы увидеть истину этого дела и его
запуске.
За дополнительной информацией просьба связаться со мной через мою электронную почту следующее
Сердечно Read more...

Sunday, June 26, 2011

КВН 2011, Высшая лига

КВН 2011 ВЛ Первая 1/8
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]

КВН 2011 ВЛ Вторая 1/8
[PART 1/13]

КВН 2011 ВЛ Третья 1/8
[PART 1/13]

КВН 2011 ВЛ Четвёртая 1/8
[PART 1/15] ... [PART 4/15]

КВН 2011 ВЛ Первая 1/4
[PART 1/15] ... [PART 14/15] [PART 15/15]

КВН 2011 ВЛ Вторая 1/4
[PART 1/14] ... [PART 3/14] ...

КВН 2011 ВЛ Третья 1/4
[PART 1/19] Read more...

Saturday, April 2, 2011

Convert video to GP3 online

Некоторые мобильные телефоны (напримр, некоторые мобильные телефоны под управлением Symbian) без дополнительного программного обеспечения могут воспроизводить только видео в форматах GP3 и MP4. Чтобы воспроизвести на таких телефонах видео-ролик, например, с YouTube, его нужно конвертировать в один из этих форматов. Помочь может бесплатный онлайн-сервис online-convert.com. Поддерживает массу форматов, работает довольно быстро (конвертация ролика весом в 30Мб из FLV в GP3 заняла меньше минуты) и, разумеется, не требует ничего устанавливать на компьютере. Как говорится, "no strings attached". Really good service, enjoy. Read more...

Thursday, March 31, 2011

Графики функций онлайн

http://rechneronline.de/function-graphs/ Read more...

Tuesday, March 22, 2011

Vingrinājumi sejai darba laikā

Likumdošana paredz arī starplaiku darbam pie datora. Tas jāizmanto lietderīgi - skat. paraugu.

Read more...

Saturday, March 19, 2011

4 easy steps to start Perl CGI programming on Windows in 10 seconds or less

1. Download Active Perl and install it.
2. Download Apache for Windows and install it.


03/19/2011 01:11 PM 25,704,148 ActivePerl-5.12.3.1204-MSWin32-x86-294330.msi
03/19/2011 01:20 PM 5,400,576 httpd-2.2.17-win32-x86-no_ssl.msi
2 File(s) 31,104,724 bytes

(now start counting those 10 seconds)

3. Go to
C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin
and create test.cgi file with the following contents
#!C:\perl\bin\perl.exe -wT
use strict;
use CGI;
my $query = new CGI;
print $query->header( "text/html" );
print <<END_HERE;
<html>
<head>
<title>My First CGI Script</title>
</head>
<body bgcolor="#FFFFCC">
<h1>This is a pretty lame Web page</h1>
<p>Who is this Ovid guy, anyway?</p>
</body>
</html>
END_HERE

(make sure to hit "enter" a couple of times after END_HERE, otherwise it won't work)

4. Open
http://localhost/cgi-bin/test.cgi
in the browser. Enjoy.

Thanks to PerlMonks.org for the article.

P.S. PerlTutorial.org gives a bit more consequent example:
#!C:\perl\bin\perl.exe -wT
# It's always a good idea to use the strict pragma while developing
# Perl code, it makes Perl warn about dangerous code
use strict;

# We're also going to include the CGI module, so that we can take
# advantage of other programmer's efforts (One of Larry Wall's basic
# tennants is that programmers are fundamentally lazy -- he's probably
# right, but I can't be bothered to prove it right now)
use CGI;

# instantiate a new CGI object
my $cgi = new CGI;

# perform a single print statement, with liberal use of the perl
# string concatenator "." and some CGI methods
print
$cgi->header .
$cgi->start_html('Hello World!') .
$cgi->h1('Hello World!') .
$cgi->end_html;

# Tell the web server everything is fine
exit (0);
Read more...

Tuesday, March 15, 2011

Какого пола ваш компьютер?

1. Откройте Notepad.
2. Скопируйте в него следующий текст:

CreateObject("SAPI.SpVoice").Speak"I love you"
3. Сохраните файл как xy.vbs
4. Запустите его. Если вы услышите мужской голос, поздравляю, у вас мальчик, если женский – девочка. :) Read more...

Sunday, March 6, 2011

[WARN] [rms ] javacall_file_open: _wopen failed for: ... _delete_notify.dat

If, while trying to launch your midlet in an emulator, you see a message like

<br />[WARN] [rms ] javacall_file_open: _wopen failed for: C:\Documents and Settings\Administrador\javame-sdk\3.0\work\0\appdb\_delete_notify.dat<br />
, know that you are not alone.

People keep desperately asking the same question without any luck.

At least sometimes it helps to just brutally create the missing "_delete_notify.dat", and the emulator starts to execute the midlet as if nothing happenned. Read more...

Thursday, March 3, 2011

Convert PDF to Word for Free

PDF Online - doesn't require e-mail, converts to ZIPped RTF. Successfully processed document of more than 200 pages.
PDF to Word - requires an e-mail Read more...

Java ME Resources

Sun Java ME SDK 3.0 (redirects to the new page)

Java ME Technical Documentation @oracle.com
* MIDP 2.0 (JSR 118) API JavaDoc @java.sun.com

NetBeans: Java ME, JavaFX Mobile and Java Card Application Technology Trail

Раздел J2ME на CyberForum.RU Read more...

Friday, February 25, 2011

12 new file formats in the Google Docs Viewer

"Кролики - это не только ценный мех, но и 4-5 килограммов вкусного, питательного мяса!"

Теперь из ГМэйла можно не только делать "sending e-mails, receiving e-mails, deleting e-mails", но и совершенно бесплатно, то есть даром, просматривать файлы ещё 12 форматов в дополнение к уже имеющимся PDF'ам et al:

# Microsoft Excel (.XLS and .XLSX)
# Microsoft PowerPoint 2007 / 2010 (.PPTX)
# Apple Pages (.PAGES)
# Adobe Illustrator (.AI)
# Adobe Photoshop (.PSD)
# Autodesk AutoCad (.DXF)
# Scalable Vector Graphics (.SVG)
# PostScript (.EPS, .PS)
# TrueType (.TTF)
# XML Paper Specification (.XPS)

12 new file formats in the Google Docs Viewer - Official Gmail Blog: Read more...

Tuesday, February 15, 2011

C# Learning Resources

C# Station Tutorial
The tutorial that promises to teach C# programming in the good old-fashioned way:

"To get started, you will need a compiler and an editor. There are several options for obtaining a compiler to write C# programs. A free option is to download the .NET Frameworks SDK and use Notepad. Most of the examples in these tutorials run as console programs."


MSDN C# Reference

MSDN C# Programming Guide Read more...

Tuesday, January 4, 2011

Кā jātīra ceļi




Read more...