• 5 Takeaways That I Learned About

    Comments Off on 5 Takeaways That I Learned About
    February 26, 2021 /  Relationships

    Factors to Consider to Sell Your House Fittings Fast

    You are encouraged to sell off your house fittings immediately. There is ready cash as a result. Avoid burdens by selling your house fittings fast. There is need to get fast and quality house fittings selling services. Always seek to sell your house fittings more quickly. Immediate house fittings selling services will make you happy. There are various options to sell your house fittings fast. Evaluate them and embrace the fastest and safe one. This will offer you chance access to reliable services. You are advised to seek the bests and reliable fast house fittings selling service. Fast house fittings selling services are of great valued. Consider the following tips to sell your house fittings fast.

    Consider services of real estate corporate to sell your house fittings fast. Real estate companies deal in buying and selling of house fittings. These companies are best fitted to buy your house fittings fast. you are advised to sell your house fittings to these companies. For quality and reliable fast house fittings selling services, hire a real estate company. Real estate companies are effective whenever you want to sell your house fittings fast. through real estate companies, you have a chance to sell your house fittings fast. You will receive express house fittings selling services through these companies. Seek the services of real estate firms whenever you want to sell your house fittings fast. Quality services are enjoyed once you sell your house fittings through real estate companies. You are assured of the best house fittings selling services whenever you engage them. To sell your house fittings fast, sell it to a real estate firm.
    A contractor is another person to turn to sell your house fittings fast. Contractors can get people who can buy your house fittings fast. Sell your house fittings fast through a contractor. Contractors have ready cash to buy your house fittings and sell it later. Contractors are heavily funded making them able to buy your house fittings fast. Hiring a contractor allows you to sell your house fittings fast. Hire a contractor today and sell your house fittings fast. Whenever you need to sell your house fittings fast, consider engaging a contractor. You will receive immediate and effective house fittings selling services.
    Compliance with statutory laws is another way to sell your house fittings fast. Abide by all house fittings selling policies and sell your house fittings fast. Compliance with laws will offer you a chance to sell your house fittings fast. Compliance will offer you, ready customers, for your house fittings. To get ready clients, ensure you comply with the existing rules. Meeting these laws will offer you a chance to get customers willing to purchase your house fittings.

    Why Aren’t As Bad As You Think

    Why Aren’t As Bad As You Think

  • February 26, 2021 /  Computer Technology, Internet Informations

    Google and Fraunhofer IIS deliver the first movies with a true 5.1 channel surround sound experience from Google Play. The immersive sound quality consumers have come to expect from TV, Blu-ray disc or DVD is now available with movies streamed or downloaded from Google Play directly to their Android devices running 4.1 or later. Google chose HE-AAC Multichannel as Android’s only surround sound codec due to its open-standard nature and excellent bit-rate efficiency.

    When connected to a surround sound system and TV with an HDMI cable, Android users will be able to play high quality audio and video from their smartphones and tablets in surround. On the go, Android devices will play movies in great stereo quality and selected Nexus products will also include the Fraunhofer Cingo virtual surround rendering technology, which will play movies in realistic surround sound on earphones or tablet stereo speakers.

    Android’s HE-AAC Multichannel implementation includes full support for loudness and downmix metadata commonly known from the broadcast TV world, as well as other features that allow the sound to be tailored for an optimum user experience in any listening mode and environment.

    “Google Play movies in 5.1 HE-AAC Multichannel sound are the first realization of our vision of bringing true theatrical surround sound to mobile devices,” said Robert Bleidt, Division General Manager at Fraunhofer USA Digital Media Technologies. “The Google and Fraunhofer partnership creates a tremendous value for consumers by offering one format that delivers a high quality experience both in-home and while mobile. Consumers may experience surround sound over headphones while on their way home from work, and finish the movie in true, exciting surround in their living room,” he added.

    HE-AAC Multichannel is part of the Fraunhofer FDK AAC codec library for Android since version 4.1 and a required feature of all Android-compatible devices. This software makes open-source Fraunhofer implementations of the MPEG audio codecs AAC, HE-AAC, HE-AACv2, and AAC-ELD available to the Android community.

    HE-AAC is today’s most efficient high-quality surround and stereo audio codec deployed in over 5 billion devices and used in TV, radio, and streaming services worldwide. The codec is natively integrated into most operating systems, streaming platforms and consumer electronics devices. In addition to its unique coding efficiency, HE-AAC has the dynamic ability to change audio bit-rates seamlessly in order to adapt to changing network conditions as consumers stream content to a variety of devices. It can be used with any adaptive streaming technology including MPEG-DASH, Apple HLS, Adobe HDS and Microsoft Smooth Streaming.

    Tags: , , , ,

  • 6 Facts About Everyone Thinks Are True

    Comments Off on 6 Facts About Everyone Thinks Are True
    February 24, 2021 /  Technology

    Concrete Supplies For Various Functions

    Concrete is among one of the most pre-owned products in the world. There are numerous concrete uses consisting of roadway building as well as building and construction, commercial building and restoration, and also private structures as well. As a matter of fact, concrete is utilized in practically everything today. If you are planning to make use of concrete in your construction tasks, you need concrete products. In this article, we will present you on just how to obtain these concrete supplies. Just have a look at the complying with information to read more concerning concrete products. Primarily, concrete products are utilized for concrete manufacturing and also installation. There are numerous sorts of concrete products offered for sale. They can be made use of to create slab, block, put concrete, pieces, as well as precast panels. slab concrete is the standard kind of concrete and made use of for exterior and interior walls in homes, commercial facilities, and various other structures. On the various other hand, block-based concrete contains rugged gravel as well as coarse aggregate such as stone and sand. Precast concrete is various from slab concrete because it is pre-manufactured. This sort of concrete products consists of strong particles that are strongly pressed together. These are after that built into precast panels. When concrete is poured, it is combined with water prior to it is set in the mold. Concrete is also cured in a curing bath before it is put. Cement is an additional concrete supply made use of for cellar and also outside wall surfaces. Grouting representatives prevent water, mud, and also spots from staining concrete. You can simply walk into any home as well as see the distinction between grouted and also un-grouted concrete. Grouting representatives are made use of for counter tops as well. On top of that, there are many other concrete items that you can locate out there as well. Concrete supply is divided right into two significant categories particularly concrete as well as non-concrete items. Concrete is a strong material that is important in construction tasks in addition to highways. Thus, you require concrete materials to construct your desire house. However what happens if you intend to make use of concrete as an outdoor patio product? Well, you ought to understand about the various kinds of concrete materials that are needed for patio area usage. The initial type of concrete supply that you require is a grout and sealant. Grouting agents are utilized for finishing the concrete once it is put. Apart from finishing, they are additionally used for securing concrete surfaces and also kinds. Sealers are used to make concrete much more sturdy. If you have a concrete patio, after that you must not fail to remember to utilize sealants.

    The Essential Laws of Explained

    A Simple Plan:

  • – My Most Valuable Tips

    Comments Off on – My Most Valuable Tips
    February 24, 2021 /  Relationships

    Just how to Discover the Perfect Window Treatment Solution

    Choosing the right window therapy solution can be a whole lot less complicated than you could assume. Nowadays, there are several methods to locate what you’re trying to find without having to go anywhere else. It’s truly incredible just how much details you can collect about a window therapy solution just from taking a look at their website! So, how can you use this details to get a better service, while conserving cash? First of all, have a look at the customer endorsements on their web site. If you don’t see any, you can always try to find them on other web pages. There are a lot of businesses around that do not install any kind of customer evaluations, so it’s truly vital to look for these before registering with a home window treatment solution. The following thing you should do is take a look at how long the company has actually been in business. If they’ve been around for a while, this suggests that they have a great deal of experience and also are excellent at what they do. This likewise means that they’re most likely extremely knowledgeable regarding what they’re doing. If you’re handling a brand-new firm, it’s constantly an excellent idea to choose the services that have been around much longer, due to the fact that you do not understand for how long the new business has actually been around. In this manner, you’re more likely to obtain excellent service from them. You’ll also intend to check out the costs that are used by the firm. You need to remember that it is necessary to remember that while you don’t want to pay way too much, you additionally don’t intend to pay inadequate. The exact same can be stated for companies that use complimentary price quotes. It’s best to pay a little bit more in advance, yet not too much, since if you’re not delighted with the solutions after a few months, you’ll wind up paying a whole lot a lot more. So, if you can find a firm that supplies a cost-free estimate, then that’s one of your finest options, because you will not need to stress over just how much they’re billing. Finally, you require to think of the type of window treatment service that the company supplies. Some firms concentrate on setting up curtains, while others focus on drapes alone. Some focus on window coverings, while others focus on window blinds alone. It’s constantly an excellent suggestion to do some research before you work with a company. You can either talk to friends and family who have actually made use of window therapy solution before, or you can utilize the Internet to search for reviews of various business. Remember, discovering the best window therapy service is important. First, you require to think about the types of treatments and also treatments that you need. After that, you require to pick a firm due to the fact that they offer those sorts of services. Lastly, you require to search for testimonials online as well as see what business other individuals have suggested. When you’ve discovered the excellent business, you can begin obtaining the therapies you need swiftly and quickly.

    News For This Month:

    – Getting Started & Next Steps

  • A Quick Overlook of – Your Cheatsheet

    Comments Off on A Quick Overlook of – Your Cheatsheet
    February 24, 2021 /  Web Resources

    The Most Effective Way to Take Pleasure In Summer Holiday Activities

    River Journeys are an enjoyable method to discover the many rivers, streams as well as lakes throughout the country. There are a number of various kinds of River Journeys, one can start, which include the following: a treking experience, a canoeing journey, a kayaking journey or just a rower boat journey. Every one of these adventures require a good river to paddle on, which is why River Paddles is a great way to require to the water. River rafting is an ancient type of water entertainment, and it’s still being appreciated today. There are lots of river rafting journeys available, where people can select from brief solo trips lasting just a few days to much longer travels long lasting weeks. River rafting is an excellent means to enjoy nature and also obtain an all-out wild experience. River rafting journeys are frequently sponsored by regional organizations such as Boy Scouts as well as Girl Precursors, yet are also provided by major river rafting business throughout the nation. River rafting calls for a number of different skills in order to make certain that every person enjoys and also can get a good, risk-free workout. First, it is necessary for every person to be in excellent physical shape. River rafting takes ability and also endurance, and no person must try it if they are not healthy. Before laying out for a river journey, it’s an excellent concept to exercise an ideal rafting health and fitness routine. This consists of cardio workout, core stamina training, and also extending as well as lightweight for the hips, top back as well as upper legs. Next off, individuals thinking about whitewater rafting ought to consider joining a rafting group. River groups supply a range of ability levels and also benefits, including access to skilled guides and also rapids. River groups additionally offer security as well as comfort for rafters of all skill levels. River groups normally start out with an oar fitting, which is the process of fitting oars with paddles that are suitable for the river. Once the proper tools is on, rafting can begin. Lastly, anybody that intends to get out into the wild and also go white water rafting need to think about doing so with a professional guide. River trips are much more satisfying when they are prepared as well as done appropriately by educated overviews. River guides can lead groups of rafters via the rapids as well as can help establish where the very best locations are to boating. River overviews have years of experience in river rafting and can often offer rafters suggestions and also advice that can make the trip a lot more enjoyable. River rafting is an excellent method to appreciate the outdoors in any kind of component of the nation. Whether you are heading out for a nature trip or an adventure, rivers are a wonderful means to experience waterfalls, mountain rivers, and also streams. If you are looking for a wonderful activity for a weekend, a river rafting adventure may be simply what you are seeking. River trips are readily available throughout the USA and Canada. Some trips are more tough than others, and also a lot of need a considerable quantity of ability and physical toughness. Consider taking a whitewater rafting trip this summer!

    – Getting Started & Next Steps

    What Do You Know About

  • February 24, 2021 /  Computer Technology, Hardware

    JAKARTA – Lenovo increasingly aggressive in the market by launching a series of notebook PCs and desktop All-in-One (AIO) Touch. Vendors from the Bamboo Curtain country to bring a notebook and the latest Touch AIO desktop to the consumer segment.

    This new product line comes with a series of innovations to consumers in an era that claimed Lenovo PC as PC + era.

    “Today is the era of PC +, no longer his time PC old. Therefore we must provide innovation in the PC industry by encouraging innovation,” said Country General Manager Lenovo Indonesia Rajesh Thadani, in the launch line of notebook and desktop AIO Touch at The Foundry, Jakarta , Tuesday (02/07/2013).

    “This year we are facing challenges in the PC industry. Market PCs now it is decreasing, but we in the PC business is still going well. For the consumer segment, we are the number one PC vendor in the world,” said Rajesh.

    This new product line, said Rajesh, a part of Lenovo innovations in the PC + era. The latest line of notebooks Lenovo IdeaPad Yoga is 11s, Touch IdeaPad Z400 and IdeaPad S210 Touch. As for the desktop IdeaCentre A520 AIO is Touch, Touch IdeaCentre B540, C540 and C440 Ideacentre Touch. All new products are equipped with third-generation Intel Core processor and Windows 8 operating systems.

    The specifications of the latest product series include 11s IdeaPad Yoga has a 11.6-inch IPS HD screen that supports 10-point multi-touch with a side order size of 0.67 inches. Ultrabook comes in a choice of colors Silver Grey and Clementine Orange.

    11s is the successor to the IdeaPad Yoga Yoga series past and is still the same as its predecessor, the convertible notebook has four modes that can be converted into a laptop, tablet, stand and tent.

    IdeaPad Z400 comes with Touch screen 14-inch HD LED Backlit Display (1366 x 768) that supports 10-point multi-touch. Moreover, it also comes with extra bass and Dolby Home Theatre v4 to produce a better sound. For type carrying the IdeaPad S210 Touch HD 11.6-inch screen with Dolby Advanced Audio v2 seritifikasi, and comes with a Companion applications such as Lenovo, the Lenovo, and Lenovo Cloud.

    While the IdeaCentre A520 Touch has a full HD 23-inch display with 10-point multi touch, Intel HD Graphics 4000, 4GB of DDR memory, and has additional features like Dolby Home Theater v4. IdeaCentre B540 comes with a 23-inch full HD screen that supports multi-touch 3D display and NVIDIA GeForce graphics.

    While IdeaCentre C540 Touch has a 23 inch screen, and supports up to NVIDIA GeForce 615 graphics 2GB. While the C440 AIO Touch has the same features and functionality with Touch C540, but with a smaller screen that is 21.5 inches.

    IdeaPad Yoga 11s, IdeaPad Z400 Touch, Touch S210 IdeaPad, IdeaCentre A520, IdeaCentre B540 Touch, Touch IdeaCentre C540 and IdeaCentre C440, has been available in the market at each price Rp10, 4 million, Rp 7, 4 million, Rp 4, 7 million , Rp12, 9 million, Rp13, 4 million, Rp 9, 9 million, and Rp 8, 4 million.

    Tags: , , , ,

  • February 23, 2021 /  Computer Technology, Hardware

    Internet users in Indonesia continues to increase. As of the end of 2012, Indonesia, which has a population of 237.5 million people has 63 million Internet users.

    When compared to the condition two years ago, seen a significant surge in Internet traffic in IIX (Indonesia Internet eXchange). March 2013, the average traffic reached 10 Gigabit per second, or 4x the condition in 2010.

    “As a result, our routing infrastructure that already exists is approaching maximum capacity, while Internet traffic growth shows no signs of slowing down,” said Private Harijanto (Chairman IIX).

    “The main problem is about 60 percent of Indonesia’s population using mobile phones, but are accessing the Internet from the handset is still fairly small,” said Harijanto. “Obviously, this trend will change quickly. 3G infrastructure development nationwide 4G/LTE technology is almost completed and will be implemented next year. ”

    Anticipating the explosion of bandwidth requirements up to 10x in the next five years, the Association of Indonesian Internet Service Providers (APJII) is now using the series routers Brocade MLXe-16 is able to support 100 Gigabit Ethernet (GbE) as the main component IIX. IIX two main router was installed at different locations to ensure high availability. With the substantial spare capacity in the 16-slot chassis, APJII has ample scope to install modules with a capacity of four-port 40 GbE and two-port module with a capacity of 100 GbE in the future.

    APJII also plans to apply the technology Brocade Multi-Chassis Trunking (MCT). This technology will connect the two routers on top to create a single tool that is able to generalize the traffic load on network-network service provider that has a lot of connections to the center of the Indonesian Internet Exchange.

    APJII currently has 278 members, including telecommunications companies, Internet service providers and content providers. Some 161 of which have been connected to the IIX via IPv4, while 51 of them also use IPv6 connection.

    Tags: , , , ,

  • February 21, 2021 /  Computer Technology, Hardware

    The news about the Samsung Galaxy Note 3 made ​​it make gadget lovers curious. But this time the latest news about the hardware that is brought by the phablet. Of existing leaks, the device will reportedly be embedded RAM with a capacity of up to 3 GB.
    Leaks from Slashgear did make a lot of people by surprise. But if the news is true, then the Galaxy Note 3 will be the first mobile device that is equipped with a capacity of 3 GB of RAM and a relatively very large.
    Just a note, smart mobile devices and premium phablet circulating lately generally use 2 GB of RAM. Meanwhile, the Galaxy Note 3 screen size of 59.9 inches is predicted to have a Full HD resolution (1920 x 1080) with the kind of super AMOLED display panel.
    The size of a half-inch larger than its predecessor, the Galaxy Note 2, which has a 5.5-inch landscape display. As for the Galaxy Note to be launched in 2011 and carries the 5.3-inch screen. Body Galaxy Note 3 allegedly bit slimmer than its predecessor. If the Galaxy Note 2 has a weight of 182 grams, the Galaxy Note 3 little lighter by 180 grams with a thickness of 8 mm.
    Just like the Galaxy S4, there will be two versions of the Galaxy Note 3, which was launched to the market. In a particular market, this device will be armed with the Qualcomm Snapdragon quad-core 800. As in other markets, will use processors made by Samsung’s own Exynos SoC Octa 5.

    Tags: , , , ,

  • February 21, 2021 /  Computer Technology, Programming

    Introduction

    Qt Quick’s QML language makes it easy to do many things, especially fancy animated user interfaces. However, some things either can’t be done or are not suitable for implementing in QML, such as:

    1. Getting access to functionality outside of the QML/JavaScript environment.
    2. Implementing performance critical functions where native code is desired for efficiency.
    3. Large and/or complex non-declarative code that would be tedious to implement in JavaScript.

    As we’ll see, Qt makes it quite easy to expose C++ code to QML. In this blog post I will show an example of doing this with a small but functional application.

    The example is written for Qt 5 and uses the Qt Quick Components so you will need at least Qt version 5.1.0 to run it.

    Overview

    To expose a C++ type having properties, methods, signals, and/or slots to the QML environment, the basic steps are:

    1. Define a new class derived from QObject.
    2. Put the Q_OBJECT macro in the class declaration to support signals and slots and other services of the Qt meta-object system.
    3. Declare any properties using the Q_PROPERTY macro.
    4. Call qmlRegisterType() in your C++ main program to register the type with the Qt Quick engine.

    For all the details I refer you to the Qt documentation section Exposing Attributes of C++ Types to QML and the Writing QML Extensions with C++ tutorial.

    Ssh Key Generator

    For our code example, we want a small application that will generate ssh public/private key pairs using a GUI. It will present the user with controls for the appropriate options and then run the program ssh-keygen to generate the key pair.

    I implemented the user interface using the new Qt Quick Controls since it was intended as a desktop application with a desktop look and feel. I initially developed the UX entirely by running the qmlscene program directly on the QML source.

    The UI prompts the user for the key type, the file name of the private key to generate and an optional pass phrase, which needs to be confirmed.

    The C++ Class

    Now that have the UI, we will want to implement the back end functionality. You can’t invoke an external program directly from QML so we have to write it in C++ (which is the whole point of this example application).

    First, we define a class that encapsulates the key generation functionality. It will be exposed as a new class KeyGenerator in QML. This is done in the header file KeyGenerator.h below.

    #ifndef KEYGENERATOR_H
    #define KEYGENERATOR_H
    
    #include <QObject>
    #include <QString>
    #include <QStringList>
    
    // Simple QML object to generate SSH key pairs by calling ssh-keygen.
    
    class KeyGenerator : public QObject
    {
        Q_OBJECT
        Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
        Q_PROPERTY(QStringList types READ types NOTIFY typesChanged)
        Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged)
        Q_PROPERTY(QString passphrase READ filename WRITE setPassphrase NOTIFY passphraseChanged)
    
    public:
        KeyGenerator();
        ~KeyGenerator();
    
        QString type();
        void setType(const QString &t);
    
        QStringList types();
    
        QString filename();
        void setFilename(const QString &f);
    
        QString passphrase();
        void setPassphrase(const QString &p);
    
    public slots:
        void generateKey();
    
    signals:
        void typeChanged();
        void typesChanged();
        void filenameChanged();
        void passphraseChanged();
        void keyGenerated(bool success);
    
    private:
        QString _type;
        QString _filename;
        QString _passphrase;
        QStringList _types;
    };
    #endif

    Next, we need to derive our class from QObject. We declare any properties that we want and the associated methods. Notify methods become signals. In our case, we want to have properties for the selected key type, the list of all valid ssh key types, file name and pass phrase. I arbitrarily made the key type a string. It could have been an enumerated type but it would have made the example more complicated.

    Incidentally, a new feature of the Q_PROPERTY macro in Qt 5.1.0 is the MEMBER argument. It allows specifying a class member variable that will be bound to a property without the need to implement the setter or getter functions. That feature was not used here.

    We declare methods for the setters and getters and for signals. We also declare one slot called generateKey(). These will all be available to QML. If we wanted to export a regular method to QML, we could mark it with Q_INVOCABLE. In this case I decided to make generateKey() a slot since it might be useful in the future but it could have just as easily been an invocable method.

    Finally, we declare any private member variables we will need.

    C++ Implementation

    Now let’s look at the implementation in KeyGenerator.cpp. Here is the source code:

    #include <QFile>
    #include <QProcess>
    #include "KeyGenerator.h"
    
    KeyGenerator::KeyGenerator()
        : _type("rsa"), _types{"dsa", "ecdsa", "rsa", "rsa1"}
    {
    }
    
    KeyGenerator::~KeyGenerator()
    {
    }
    
    QString KeyGenerator::type()
    {
        return _type;
    }
    
    void KeyGenerator::setType(const QString &t)
    {
        // Check for valid type.
        if (!_types.contains(t))
            return;
    
        if (t != _type) {
            _type = t;
            emit typeChanged();
        }
    }
    
    QStringList KeyGenerator::types()
    {
        return _types;
    }
    
    QString KeyGenerator::filename()
    {
        return _filename;
    }
    
    void KeyGenerator::setFilename(const QString &f)
    {
        if (f != _filename) {
            _filename = f;
            emit filenameChanged();
        }
    }
    
    QString KeyGenerator::passphrase()
    {
        return _passphrase;
    }
    
    void KeyGenerator::setPassphrase(const QString &p)
    {
        if (p != _passphrase) {
            _passphrase = p;
            emit passphraseChanged();
        }
    }
    
    void KeyGenerator::generateKey()
    {
        // Sanity check on arguments
        if (_type.isEmpty() or _filename.isEmpty() or
            (_passphrase.length() > 0 and _passphrase.length() < 5)) {
            emit keyGenerated(false);
            return;
        }
    
        // Remove key file if it already exists
        if (QFile::exists(_filename)) {
            QFile::remove(_filename);
        }
    
        // Execute ssh-keygen -t type -N passphrase -f keyfileq
        QProcess *proc = new QProcess;
        QString prog = "ssh-keygen";
        QStringList args{"-t", _type, "-N", _passphrase, "-f", _filename};
        proc->start(prog, args);
        proc->waitForFinished();
        emit keyGenerated(proc->exitCode() == 0);
        delete proc;
    }

    The constructor initializes some of the member variables. For fun, I used the new initializer list feature of C++11 to initialize the _types member variable which is of type QStringList. The destructor does nothing, at least for now, but is there for completeness and future expansion.

    Getter functions like type() simply return the appropriate private member variable. Setters set the appropriate variables, taking care to check that the new value is different from the old one and if so, emitting the appropriate signal. As always, please note that signals are created by the Meta Object Compiler and do not need to be implemented, only emitted at the appropriate times.

    The only non-trivial method is the slot generateKey(). It does some checking of arguments and then creates a QProcess to run the external ssh-keygen program. For simplicity and because it typically executes quickly, I do this synchronously and block on it to complete. When done, we emit a signal that has a boolean argument that indicates the key was generated and whether it succeeded or not.

    QML Code

    Now let’s look at the QML code in main.qml:

    // SSH key generator UI
    
    import QtQuick 2.1
    import QtQuick.Controls 1.0
    import QtQuick.Layouts 1.0
    import QtQuick.Dialogs 1.0
    import com.ics.demo 1.0
    
    ApplicationWindow {
        title: qsTr("SSH Key Generator")
    
        statusBar: StatusBar {
        RowLayout {
            Label {
                id: status
                }
            }
        }
    
        width: 369
        height: 166
    
        ColumnLayout {
            x: 10
            y: 10
    
            // Key type
            RowLayout {
                Label {
                    text: qsTr("Key type:")
                }
                ComboBox {
                    id: combobox
                    Layout.fillWidth: true
                    model: keygen.types
                    currentIndex: 2
                }
            }
    
            // Filename
            RowLayout {
                Label {
                    text: qsTr("Filename:")
                }
                TextField {
                    id: filename
                    implicitWidth: 200
                    onTextChanged: updateStatusBar()
                }
                Button {
                    text: qsTr("&Browse...")
                    onClicked: filedialog.visible = true
                }
            }
    
            // Passphrase
            RowLayout {
                Label {
                    text: qsTr("Pass phrase:")
                }
                TextField {
                    id: passphrase
                    Layout.fillWidth: true
                    echoMode: TextInput.Password
                    onTextChanged: updateStatusBar()
                }
    
            }
    
            // Confirm Passphrase
            RowLayout {
                Label {
                    text: qsTr("Confirm pass phrase:")
                }
                TextField {
                    id: confirm
                    Layout.fillWidth: true
                    echoMode: TextInput.Password
                    onTextChanged: updateStatusBar()
                }
            }
    
            // Buttons: Generate, Quit
            RowLayout {
                Button {
                    id: generate
                    text: qsTr("&Generate")
                    onClicked: keygen.generateKey()
                }
                Button {
                    text: qsTr("&Quit")
                    onClicked: Qt.quit()
                }
            }
    
        }
    
        FileDialog {
            id: filedialog
            title: qsTr("Select a file")
            selectMultiple: false
            selectFolder: false
            nameFilters: 
            selectedNameFilter: "All files (*)"
            onAccepted: {
                filename.text = fileUrl.toString().replace("file://", "")
            }
        }
    
        KeyGenerator {
            id: keygen
            filename: filename.text
            passphrase: passphrase.text
            type: combobox.currentText
            onKeyGenerated: {
                if (success) {
                    status.text = qsTr('<font color="green">Key generation succeeded.</font>')
                } else {
                    status.text = qsTr('<font color="red">Key generation failed</font>')
                }
            }
        }
    
        function updateStatusBar() {
            if (passphrase.text != confirm.text) {
                status.text = qsTr('<font color="red">Pass phrase does not match.</font>')
                generate.enabled = false
            } else if (passphrase.text.length > 0 && passphrase.text.length < 5) {
                status.text = qsTr('<font color="red">Pass phrase too short.</font>')
                generate.enabled = false
            } else if (filename.text == "") {
                status.text = qsTr('<font color="red">Enter a filename.</font>')
                generate.enabled = false
            } else {
                status.text = ""
                generate.enabled = true
            }
        }
    
        Component.onCompleted: updateStatusBar()
    }

    The preceding code is a little long, however, much of the work is laying out the GUI components. The code should be straightforward to follow.

    Note that we import com.ics.demo version 1.0. We’ll see where this module name comes from shortly. This makes a new QML type KeyGeneratoravailable and so we declare one. We have access to it’s C++ properties as QML properties, can call it’s methods and act on signals like we do withonKeyGenerated.

    A more complete program should probably do a little more error checking and report meaningful error messages if key generation fails (we could easily add a new method or property for this). The UI layout could also be improved to make it properly resizable.

    Our main program is essentially a wrapper like qmlscene. All we need to do to register our type with the QML engine is to call:

        qmlRegisterType<KeyGenerator>("com.ics.demo", 1, 0, "KeyGenerator");

    This makes the C++ type KeyGenerator available as the QML type KeyGenerator in the module com.ics.demo version 1.0 when it is imported.

    Typically, to run QML code from an executable, in the main program you would create a QGuiApplication and a QQuickView. Currently, to use the Qt Quick Components there is some additional work needed if the top level element is an ApplicationWindow or Window. You can look at the source code to see how I implemented this. I basically stripped down the code from qmlscene to the minimum of what was needed for this example.

    Here is the full listing for the main program, main.cpp:

    #include <QApplication>
    #include <QObject>
    #include <QQmlComponent>
    #include <QQmlEngine>
    #include <QQuickWindow>
    #include <QSurfaceFormat>
    #include "KeyGenerator.h"
    
    // Main wrapper program.
    // Special handling is needed when using Qt Quick Controls for the top window.
    // The code here is based on what qmlscene does.
    
    int main(int argc, char ** argv)
    {
        QApplication app(argc, argv);
    
        // Register our component type with QML.
        qmlRegisterType<KeyGenerator>("com.ics.demo", 1, 0, "KeyGenerator");
    
        int rc = 0;
    
        QQmlEngine engine;
        QQmlComponent *component = new QQmlComponent(&engine);
    
        QObject::connect(&engine, SIGNAL(quit()), QCoreApplication::instance(), SLOT(quit()));
    
        component->loadUrl(QUrl("main.qml"));
    
        if (!component->isReady() ) {
            qWarning("%s", qPrintable(component->errorString()));
            return -1;
        }
    
        QObject *topLevel = component->create();
        QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
    
        QSurfaceFormat surfaceFormat = window->requestedFormat();
        window->setFormat(surfaceFormat);
        window->show();
    
        rc = app.exec();
    
        delete component;
        return rc;
    }

    In case it is not obvious, when using a module written in C++ with QML you cannot use the qmlscene program to execute your QML code because the C++ code for the module will not be linked in. If you try to do this you will get an error message that the module is not installed.

    Tags: , , , ,

  • First prize of the Microsoft Bug IE11 So Google Employee Owned

    Comments Off on First prize of the Microsoft Bug IE11 So Google Employee Owned
    February 20, 2021 /  Computer Technology, Software

    You might remember the prize program offered by Microsoft for anyone who finds a bug in his software? One of the applications included in the program is IE11. And interestingly, the first to earn prizes in finding bugs in IE11 program turned out to be one of the Google employees.

    In a statement through the official blog, Microsoft said that they had paid out prizes for IE11. But they did not mention who the person is beruntuh. Furthermore, in another day, one Microsoft employee named Katie Missouris revealed that the lucky person is engineer from Google named Ivan Fratric. It was not clear how many gifts given to Fratric Microsoft.

    IE11 program to offer cash prizes worth 11 thousand USD for a finding bugs and ends in late July. Meanwhile, a similar program aimed at Windows 8.1 still ongoing with no time limit.

    Tags: , , , ,