Archive

Archive for the ‘Fresh News’ Category

Qt Developer Days 2010

December 30th, 2010 No comments

Videos from Keynotes, Technical Talks, Qt in Education, Qt in Use and Qt Training

This year’s conference program offered three full days of training, technical sessions and Qt in Use presentations. Whether you are a new Qt user, a Qt pro, CTO or Product Manager, Qt Developer Days features more than 50 technical sessions, demos, hands-on labs, compelling case studies and information on partner services to satisfy all your Qt requirements.

Qt Quick for C++ Developers. For those experienced in Qt and C++, but new to QML.

This presentation will focus on those who already know Qt but want to see what QML changes for them. We will show how Qt developers can use the new C++ APIs to register new types and objects. We will also present guidelines to create hybrid C++/QML applications.

The Baker’s Dozen of Use Cases

December 23rd, 2010 No comments

Use cases have become a core part of the requirements analyst’s arsenal.  Used well they can bring dramatic increases in customer satisfaction and a whole host of other subtle benefits to software development.

The use case itself is very simple in concept: describe the functionality of the system in terms of interactions between the system and its external interactors. The focus of the use case is system usage,  from an external perspective.

Despite this apparent simplicity, requirements analysts frequently struggle to write coherent, consistent use cases that can be used to facilitate development. Often, the use case analysis becomes an exercise in confusion, incomprehension and the dreaded ‘analysis paralysis’.

This article aims to aid use case writers by presenting a set of rules to follow when performing use case analysis. The rules are designed to avoid common pitfalls in the analysis process and lead to a much more coherent set of requirements.

Other parts

Tags:

FPS counter for QML application

December 10th, 2010 No comments

QML_SHOW_FRAMERATE variable can be used for performance information. It prints the time spent each frame to the console.

additional info

DEFINE_BOOL_CONFIG_OPTION(frameRateDebug, QML_SHOW_FRAMERATE)

see src/declarative/util/qdeclarativeview.cpp

using:

...
if (frameRateDebug())
{
// do something
}

Also this variable can be set in Qt Creator (see the “Run Environment” subsection in the project’s “Run Settings” tab).

Tags:

Oscar Wilde

October 2nd, 2010 No comments

“I am not young enough to know everything.”

Oscar Wilde
Irish dramatist, novelist, & poet (1854 – 1900)

The Quotations Page

Tags:

Alexander A. Stepanov

September 6th, 2010 No comments

Alexander Alexandrovich Stepanov (Russian: Александр Александрович Степанов) (born November 16, 1950 in Moscow) is the primary designer and implementer of the C++ Standard Template Library [1], which he started to develop around 1992 while employed at HP Labs. He had earlier been working for Bell Labs close to Andrew Koenig and tried to convince Bjarne Stroustrup to introduce something like Ada Generics in C++.

Лекция «Наибольшая общая мера последние 2500 лет» (часть 1 и часть 2)
Слайды: англ и рус.

Лекция «Преобразования и их орбиты» (часть 1 и часть 2)

Elements of Programming – (November 3, 2010) Speakers Alexander Stepanov and Paul McJones give a presentation on the book titled “Elements of Programming”. They explain why they wrote and attempt to explain their book. They describe programming as a mathematical discipline and that it is extremely useful and should not be overlooked.

Stepanov’s homepage

Vigenere Cipher Algorithm (Delphi Implementation)

August 30th, 2010 Comments off

Here’s the Vigenere crypto algorithm as suggested by Allan:

function Vigenere(Src, Key : string; Encrypt : boolean) : string;
const
  OrdMinChar : integer = Ord('A');
  OrdMaxChar : integer = Ord('Z');
  IncludeChars : set of char = ['A'..'Z'];
var
  CharRangeCount, i, j, KeyLen, KeyInc, SrcOrd, CryptOrd : integer;
  SrcA : string;
begin
  CharRangeCount := OrdMaxChar - OrdMinChar + 1;
  KeyLen := Length(Key);
  SetLength(SrcA, Length(Src));
  If Encrypt then
  begin
    // transfer only included characters to SrcA for encryption
    j := 1;
    for i := 1 to Length(Src) do
    begin
      if (Src[i] in IncludeChars) then
      begin
        SrcA[j] := Src[i];
        inc(j);
      end;
    end;
    SetLength(SrcA, j - 1);
  end;
  SetLength(Result, Length(SrcA));
  if Encrypt then
  begin
    // Encrypt to Result
    for i := 1 to Length(SrcA) do
    begin
      SrcOrd := Ord(Src[i]) - OrdMinChar;
      KeyInc := Ord(Key[((i - 1 ) mod KeyLen)+ 1]) - OrdMinChar;
      CryptOrd := ((SrcOrd + KeyInc) mod CharRangeCount) + OrdMinChar;
      Result[i] := Char(CryptOrd);
    end;
  end;
  else
  begin
    // Decrypt to Result
    for i := 1 to Length(SrcA) do
    begin
      SrcOrd := Ord(Src[i]) - OrdMinChar;
      KeyInc := Ord(Key[((i - 1 ) mod KeyLen)+ 1]) - OrdMinChar;
      CryptOrd := ((SrcOrd - KeyInc + CharRangeCount)
                   mod CharRangeCount) + OrdMinChar;
      // KeyInc may be larger than SrcOrd
      Result[i] := Char(CryptOrd);
    end;
  end;
end;

Saving Window Size State

August 30th, 2010 No comments
class MainWindow : public QMainWindow
{
 Q_OBJECT;
public:
 MainWindow(QWidget *parent = 0) : QMainWindow(parent)
 {
   QSettings settings;
   restoreGeometry(settings.value("mainWindowGeometry").toByteArray());
   // create docs, toolbars, etc...
   restoreState(settings.value("mainWindowState").toByteArray());
 }

 void closeEvent(QCloseEvent *event)
 {
   QSettings settings;
   settings.setValue("mainWindowGeometry", saveGeometry());
   settings.setValue("mainWindowState", saveState());
 }
};

int main(int argc, char *argv[])
{
 QApplication a(argc, argv);
 QCoreApplication::setOrganizationDomain("OrgDomain");
 QCoreApplication::setOrganizationName("OrgName");
 QCoreApplication::setApplicationName("AppName");
 QCoreApplication::setApplicationVersion("1.0.0");

 MainWindow w;
 w.show();

 return a.exec();
}

The above code will save and restore window position, size, toolbar visibility, toolbar docking area, dock states, locations and sizes. It saves using QSettings which will store your settings in a platform correct way.

Source

QThread

June 18th, 2010 No comments

QThread was designed and is intended to be used as an interface or a control point to an operating system thread, not as a place to put code that you want to run in a thread. We object-oriented programmers subclass because we want to extend or specialize the base class functionality. The only valid reasons I can think of for subclassing QThread is to add functionality that QThread doesn’t have, e.g. perhaps providing a pointer to memory to use as the thread’s stack, or possibly adding real-time interfaces/support. Code to download a file, or to query a database, or to do any other kind of processing should not be added to a subclass of QThread; it should be encapsulated in an object of it’s own.

You’re doing it wrong…

// create the producer and consumer and plug them together
Producer producer;
Consumer consumer;

bool bOk = producer.connect(&consumer,
                            SIGNAL(consumed()),
                            SLOT(produce()));
Q_ASSERT(bOk);
bOk = consumer.connect(&producer,
                       SIGNAL(produced(QByteArray *)),
                       SLOT(consume(QByteArray *)));
Q_ASSERT(bOk);

// they both get their own thread
QThread producerThread;
producer.moveToThread(&producerThread);

QThread consumerThread;
consumer.moveToThread(&consumerThread);

// go!
producerThread.start();
consumerThread.start();

Reference: Threading without the headache or QThread’s no longer abstract (see attached file)

VirtualBox Virtual Appliances

April 5th, 2010 No comments

VDI images of pre-installed “Open Source” Operating System distros. Pre-installed virtualbox images ready for you to explore and play with.

  • Instantly run another operating system on your desktop in a window, on almost any computer.
  • Implement full Linux functionality on an existing Windows Desktop or server.
  • Windows XP Tutorial: 7 quick steps to using our VDI’s
  • Need a specific Application? Find an Image using the Pre-Installed Applications Index
  • A number of Virtual Machines are also available in OVF Appliance” format

8 Useful and Interesting Bash Prompts

March 28th, 2010 No comments

Many people don’t think of their command prompt as a particularly useful thing, or even pay it much attention. To me, this is a bit of a shame, as a useful prompt can change the way you use the command line. Well I’ve scoured the Interwebs looking for the best, most useful, or sometimes most amusing bash prompts. Here, in no particular order, are the ones I’d be most likely to use on my computers.

More

Tags: , , ,