abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 00:33 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje na kritickou zranitelnost ve WordPressu umožňující vzdálené spuštění libovolného kódu. Prakticky se jedná o kombinací dvou různých zranitelností (Directory Traversal a Local File Inclusion), pro jejichž úspěšné zneužití musí útočník získat v rámci instance WordPressu alespoň oprávnění autora.

Ladislav Hagara | Komentářů: 3
včera 17:33 | Nová verze

Po dvou a půl letech od vydání verze 5.0.0 byla oficiálně vydána nová major verze 6.0.0 správce digitálních fotografií a nově i videí digiKam (digiKam Software Collection). Přehled novinek i s náhledy v oficiálním oznámení. Ke stažení je také balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo ke spuštění a spustit.

Ladislav Hagara | Komentářů: 1
včera 00:44 | Komunita

Do 2. dubna se lze přihlásit do dalšího kola programu Outreachy (Wikipedie), jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 20. května do 20. srpna 2019, v participujících organizacích lze vydělat 5 500 USD.

Ladislav Hagara | Komentářů: 2
včera 00:11 | Bezpečnostní upozornění

Byly zveřejněny informace o o bezpečnostní chybě CVE-2019-6454 ve správci systému a služeb systemd (PID 1). Běžný uživatel jej může shodit připravenou D-Bus zprávou. V upstreamu je chyba již opravena [reddit].

Ladislav Hagara | Komentářů: 4
18.2. 22:44 | Nová verze

Byla vydána nová verze 2019.1 průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek v changelogu. Vývojáři zdůrazňují Linux 4.19.13 a díky němu opětovnou podporu Banana Pi a Banana Pro, aktualizaci nástrojů jako theHarvester nebo DBeaver a Metasploit Framework ve verzi 5.0. Aktualizovat Kali Linux lze pomocí příkazů "apt update && apt -y full-upgrade".

Ladislav Hagara | Komentářů: 1
18.2. 13:33 | Zajímavý článek

Craig Loewen se v příspěvku na blogu Microsoftu věnuje novinkách ve WSL (Windows Subsystem pro Linux), které přinese Windows 10 1903. Jedná se především o možnost přístupu z Windows (Průzkumník souborů, explorer.exe) k souborům v nainstalovaných linuxových distribucích. Použit je protokol 9P.

Ladislav Hagara | Komentářů: 10
18.2. 10:44 | Zajímavý software

Byl vydán Hangover ve verzi 0.4.0. Jedná se o součást projektu Wine umožňující spouštět Windows aplikace pro x86 a x86_64 na architektuře ARM64 (AArch64). Zdrojové kódy této alfa verze jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 2
17.2. 03:00 | Nová verze

Byla vydána nová major verze 3.0.0-1 linuxového prostředí pro operační systémy Windows Cygwin (Wikipedie). Přehled novinek v oficiálním oznámení.

Ladislav Hagara | Komentářů: 7
17.2. 02:00 | Nová verze

Byl vydán Debian 9.8, tj. osmá opravná verze Debianu 9 s kódovým názvem Stretch. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Předchozí instalační média Debianu 9 Stretch lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

Ladislav Hagara | Komentářů: 1
15.2. 12:33 | Pozvánky

Příští týden bude na MFF UK zahájena série přednášek o architektuře a implementaci operačních systémů. Mezi přednášejícími budou odborníci z firem Kernkonzept, Oracle, Red Hat, SUSE či SYSGO. Pokud si chcete rozšířit obzory (virtualizace, ptrace, ZFS, kdump, ...), vyberte si z harmonogramu téma, které vás zajímá a přijďte. Přednášky se konají každý čtvrtek od 15:40 v učebně S4 na Malostranském náměstí 25 v Praze. Přednášky jsou přístupné veřejnosti (registrace není nutná), studenti UK a ČVUT si je mohou zapsat jako standardní předmět.

Vojtěch Horký | Komentářů: 19
Máte v desktopovém prostředí zapnutou zvukovou znělku po přihlášení se do systému?
 (7%)
 (1%)
 (90%)
 (1%)
Celkem 353 hlasů
 Komentářů: 11, poslední 14.2. 07:59
Rozcestník

Pomalá fce Gdk::Pixbuf::create_from_file() na Windows

16.6.2013 11:53 | Přečteno: 1164× | Programování | Výběrový blog | poslední úprava: 16.6.2013 11:56

Narazil jsem na problém s rychlostí fce Gdk::Pixbuf::create_from_file() v Gtkmm 2.22 pod Windows. Pokud se použije pro načtení cca 4MB JPEGu 5600x3700, tak jí to trvá cca 10s.

Na Linuxu to trvá této fci cca 350ms. Pod Wine se tento problém neprojevuje, načtení trvá jen o něco málo déle než na Linuxu. Použil jsem ftp.gnome.org/pub/GNOME/binaries/win32/gtkmm/2.22. Zkoušel jsem i některé starší verze knihovny, ale problém přetrvával.

Něchtělo se mi ztrácet čas zbytečnou kompilací celé knihovny a všech jejich závislostí, tak jsem hledal zda-li se nedají sehnat binárky někde jinde. A našel jsem je např. v OpenSUSE 12.3 ve verzi 2.24.2, tyto binárky fungují bez problémů i ve Windows.

Vývoj dělám v Debian Wheezy a verzi pro Windows kompiluji cross-kompilátorem z projektu MinGW, který je jeho součástí. Binárky pro Windows testuji většinou pod Wine a na čistých Windows až před vydáním další ostré verze.

Uvítal jsem, že je yum součástí Debianu:

# aptitude install yum

Přidáme repozitář s potřebnými balíčky:

# vim /etc/yum/repos.d/opensuse.repo
[windows_mingw_win32]
name=Cross-toolchain for 32-bit windows and 32-bit windows packages (openSUSE_12.3)
type=rpm-md
baseurl=http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.3/
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_12.3/repodata/repomd.xml.key
enabled=1

Zjistíme v jakých balíčcích se nachází knihovna Gtkmm a nainstalujeme je:

# yum search gtkmm2
=== Matched: gtkmm2 ===
mingw32-gtkmm2.noarch : C++ bindings for GTK+2
mingw32-gtkmm2-debug.noarch : Debug information for package mingw32-gtkmm2
mingw32-gtkmm2-devel.noarch : C++ bindings for GTK+2 (devel)

# yum install mingw32-gtkmm2-devel.noarch mingw32-gtkmm2.noarch

Dotážeme se kde se nachází řídící soubory pro pkgconfig, abychom mohli pohodlně předávat potřebné parametry kompilátoru:

# rpm -q -l mingw32-gtkmm2-devel.noarch |grep pkgconfig
/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/gdkmm-2.4.pc
/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig/gtkmm-2.4.pc

# PKG_CONFIG_PATH=/usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig pkg-config --cflags --libs gtkmm-2.4

Vzhledem k tomu, že nechci instalovat závislosti cross-kompilátoru z OpenSUSE, tak jsem použil Windows verzi kompilátoru a spouštím jí pod Wine:

# yum install mingw32-gcc.noarch mingw32-gcc-c++.noarch

Třeba se to bude někomu hodit. Pokud má někdo nějaké tipy a zkušenosti k tématu, budu rád, když se o ně podělíte v diskuzi.

Zjistíme kde má MinGW knihovny:

$ yum whatprovides '*/libstdc++-6.dll'
/usr/i686-w64-mingw32/sys-root/mingw/bin/libstdc++-6.dll

Vypíšeme seznam knihoven, které musíme přibalit k binárce:

$ ./dll_dependencies.py gdk_pixbuf_create_from_file.exe /usr/i686-w64-mingw32/sys-root/mingw/bin 
libgcc_s_sjlj-1.dll
libgdkmm-2.4-1.dll
libcairomm-1.0-1.dll
libcairo-2.dll
libfontconfig-1.dll
libfreetype-6.dll
zlib1.dll
libxml2-2.dll
libpixman-1-0.dll
libpng15-15.dll
libsigc-2.0-0.dll
libstdc++-6.dll
libgdk_pixbuf-2.0-0.dll
libgio-2.0-0.dll
libglib-2.0-0.dll
libintl-8.dll
libgmodule-2.0-0.dll
libgobject-2.0-0.dll
libffi-6.dll
libjasper-1.dll
libjpeg-8.dll
libtiff-5.dll
liblzma-5.dll
libgdk-win32-2.0-0.dll
libpango-1.0-0.dll
libpangocairo-1.0-0.dll
libpangoft2-1.0-0.dll
libharfbuzz-0.dll
libpangowin32-1.0-0.dll
libglibmm-2.4-1.dll
libgtk-win32-2.0-0.dll
libatk-1.0-0.dll
libpangomm-1.4-1.dll
libgtkmm-2.4-1.dll
libatkmm-1.6-1.dll
libgiomm-2.4-1.dll

dll_dependencies.py

#!/usr/bin/python

import os
import sys
from subprocess import Popen, PIPE

DLLS_BLACKLIST = [
    "KERNEL32.dll",
    "msvcrt.dll",
    "USER32.dll",
    "GDI32.dll",
    "WS2_32.dll",
    "MSIMG32.DLL",
    "ADVAPI32.dll",
    "DNSAPI.DLL",
    "ole32.dll",
    "SHELL32.DLL",
    "WINMM.DLL",
    "SHLWAPI.DLL",
    "IMM32.DLL",
    "USP10.dll",
    "COMCTL32.DLL",
    "COMDLG32.DLL",
    "WINSPOOL.DRV",
]

class DllDependencies:
    def __init__(self, program_exe, dlls_path):
        self.dlls_path = dlls_path
        self.result = []
        self.get_dlls(program_exe)

        print "\n".join(self.result)

    def get_dlls(self, program_exe):
        if (not os.path.isfile(program_exe)):
            print "%s not found" % program_exe
            return

        pipe = Popen("objdump -x %s |\
                      grep 'DLL Name' |\
                      sort |\
                      uniq" % program_exe,
                     shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE)
    
        for line in pipe.stdout.readlines():
            dll = line.strip().split()[2]
            if ((dll not in DLLS_BLACKLIST) and (dll not in self.result)):
                self.result.append(dll)
                dll = "%s/%s" % (self.dlls_path, dll)
                self.get_dlls(dll)

def main():
    if (len(sys.argv) != 3):
        print "Usage: %s PROGRAM_EXE DLLS_PATH" % sys.argv[0]
        sys.exit(-1)

    DllDependencies(sys.argv[1], sys.argv[2])

if __name__ == '__main__':
    main()

Makefile:

GPP = g++ -O2 -Wall
#W_GPP = i686-w64-mingw32-g++ -O2 -Wall
W_GPP = /usr/i686-w64-mingw32/sys-root/mingw/bin/g++.exe -O2 -Wall

GTKMM = `pkg-config --cflags --libs gtkmm-2.4`

PKG_CONFIG_PATH = /usr/i686-w64-mingw32/sys-root/mingw/lib/pkgconfig
W_GTKMM_CFLAGS = `PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --cflags gtkmm-2.4`
W_GTKMM_LIBS = `PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs gtkmm-2.4`

all: gdk_pixbuf_create_from_file gdk_pixbuf_create_from_file.exe

gdk_pixbuf_create_from_file: gdk_pixbuf_create_from_file.cpp
	$(GPP) $(GTKMM) -o gdk_pixbuf_create_from_file gdk_pixbuf_create_from_file.cpp

gdk_pixbuf_create_from_file.exe: gdk_pixbuf_create_from_file.cpp
	$(W_GPP) $(W_GTKMM_CFLAGS) -o gdk_pixbuf_create_from_file.exe gdk_pixbuf_create_from_file.cpp $(W_GTKMM_LIBS)

gdk_pixbuf_create_from_file.cpp:

#include <gtkmm.h>
#include <glib.h>
#include <iostream>

#ifdef WIN32
// Windows
#include <windows.h>
// UINT64
//#include <basetsd.h>
#else
// Linux
#include <sys/time.h>
#include <ctime>
// uint64_t
//#include <stdint.h>
#endif

void print_timestamp(const char *p_msg)
{
    static guint64 milliseconds_begin = 0;
    guint64 milliseconds;

    // http://stackoverflow.com/questions/1861294/how-to-calculate-execution-time-of-a-code-snippet-in-c
#ifdef WIN32
    // Windows
    FILETIME ft;
    LARGE_INTEGER li;
    
    // Get the amount of 100 nano seconds intervals elapsed since January 1, 1601 (UTC) and copy it
    // to a LARGE_INTEGER structure.
    GetSystemTimeAsFileTime(&ft);
    li.LowPart = ft.dwLowDateTime;
    li.HighPart = ft.dwHighDateTime;
    
    milliseconds = li.QuadPart;
    milliseconds -= 116444736000000000LL; // Convert from file time to UNIX epoch time.
    milliseconds /= 10000; // From 100 nano seconds (10^-7) to 1 millisecond (10^-3) intervals
#else
    // Linux
    struct timeval tv;
    
    gettimeofday(&tv, NULL);
    
    milliseconds = tv.tv_usec;

    // Convert from micro seconds (10^-6) to milliseconds (10^-3)
    milliseconds /= 1000;
    
    // Adds the seconds (10^0) after converting them to milliseconds (10^-3)
    milliseconds += (tv.tv_sec * 1000);
#endif

    if (milliseconds_begin == 0) {
        milliseconds_begin = milliseconds;
    }

    std::cout << "timestamp - " << p_msg << ": " << (milliseconds - milliseconds_begin) << "ms" << std::endl;
    milliseconds_begin = milliseconds;
}

int main(int argc, char *argv[])
{
    Glib::RefPtr<Gdk::Pixbuf> image;

    Gtk::Main kit(argc, argv);

    print_timestamp("BEGIN");
    image = Gdk::Pixbuf::create_from_file("image.jpeg");
    print_timestamp("END");
}
       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

David Watzke avatar 16.6.2013 12:00 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
OT: btw, v C++11 už bude možné vypustit ten ifdef WIN32 díky std::chrono.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
16.6.2013 12:12 Jardík
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Super, ale na co proboha ta 32bit šmejďárna? Vždyť jsou tam i 64bit balíčky.
16.6.2013 15:13 luv | skóre: 18 | blog: luv
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Silenost :-)
16.6.2013 19:24 JZD | skóre: 10 | blog: Na_dvorku
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
To chce tučňáka.
Víra znamená vyznávat to, o čem člověk dobře ví, že to není pravda. Mlčeti platina, mluviti v gajzu, býti v hajzlu.
GeoRW avatar 20.6.2013 18:32 GeoRW | skóre: 13 | blog: GeoRW | Bratislava
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
tak toto by som kvoli Windows vobec neriesil :-)
"This is to be taken with a grain of salt." ACBF - Advanced Comic Book Format
1.3.2017 08:12 samvila
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
I really loved reading your blog. I also found your posts very interesting. In fact after reading, I had to go show it to my friend and he ejoyed it as well! happy wheels happy wheels demo five nights at freddy's geometry dash
1.3.2017 10:28 nazumi
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thank you for another essential article. I have learned a lot from your article. Thank so much, again! hotmail login flip diving amazon underground apk
21.4.2017 05:41 word cookies answers
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows

I would like to say that this blog really convinced me to do it! Thanks, very good post. word cookies game | hotmail email login | hotmail account login

16.7.2017 16:56 Dan
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
class, kterým určíte jazyk pa portfolio logo design í být ve tvar.
5.8.2017 10:16 Thanks
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
hotmail login and hotmail outlook login are now running normally. “A few Microsoft services experienced an outage that affected customers' access to these services. skype infor
16.11.2017 12:40 happy new year
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
The New Year is the time of Happy New Year Wishes unfolding horizons and the realization of dreams, may you rediscover new strength and garner faith with you, and be able to rejoice in the simple pleasures that life has to offer and put a brave front for all the challenges that may come your way. Wishing you a lovely Happy New Year 2018 Images
10.3.2018 18:28 Lee Mark
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thanks bro for sharing the wonderful article... Smadav 2019 | Smadav 2019 | Avast 2019
11.5.2018 10:00 pk
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
i like the greta post thaks
24.7.2018 08:47 smadav
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
25.7.2018 05:06 Hotmail Login
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thank you for posting such a great article! I found your website perfect for my needs. It contains wonderful and helpful posts. Keep up the good work!. Thank you for this wonderful Article! http://hotmailblogs.com/
25.7.2018 05:07 Hotmail Login
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Thank you for posting such a great article! I found your website perfect for my needs. It contains wonderful and helpful posts. Keep up the good work!. Thank you for this wonderful Article! Hotmail Login
25.7.2018 05:08 Hotmail.com Login
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Posts are very meaningful thanks to the site Hotmail.com Login
25.7.2018 05:09 Hotmail Login Tip
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Excellent post. This article is very helpful for the people and also for me. I get the some useful knowledge in this post. Thanks for sharing the informative topic, by the way Hotmail Login Tip
1.12.2018 09:58 pikachu chu
Rozbalit Rozbalit vše susu
Thank for your writting! I have read through some similar topics! However, your post has given me a very special impression, unlike other posts. I hope you continue to have valuable articles like this or more to share with everyone! the impossible quiz
8.1. 06:48 karishma36
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
I am having such a good time here on this article and i was taking a look on this information and then i have got many things from this article.You did such a great job and i wish for more. Delhi Escorts
31.1. 08:33 johnlennon
Rozbalit Rozbalit vše Re: Pomalá fce Gdk::Pixbuf::create_from_file() na Windows
Instagram is a social networking app which allows its users to share pictures and videos with their friends. The app can be downloaded for free from the usual app stores. You can start Instagram video downloader here.

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.