Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Cześć. Mam wiele plików w formacie dxf i przydałoby mi się możliwość podglądu tych plików w taki sposób, że gdy zaznaczę dany plik lub najadę na niego kursorem, to pojawi się miniaturka (taki kwadrat) z jego zawartością, abym wiedział co się w nim znajduje bez otwierania go. Było chyba coś takiego w starym KDE 3.5 albo starszym. Ja potrzebuję tego w XFCE. Pozdrawiam.
Offline
Zobacz czy dzialania z tego watku na forum pomoga:
[url]https://forum.xfce.org/viewtopic.php?id=3807[/url]
Offline
Dzięki, sprawdzi się.
Offline
To nie zależy bezpośrednio od środowiska graficznego, a od menedżera plików.
W starym KDE był Konqueror, teraz jest mniej rozbudowany Dolphin.
Offline
http://goodies.xfce.org/projects/thunar-plugins/thunar-thumbnailers#version_041
Nie ma tutaj na liście formatu .dxf, a ja właśnie do takich plików potrzebuje mieć podgląd.
Ostatnio edytowany przez lukasz89 (2017-11-18 16:53:39)
Offline
Wypróbuj poniższe:
Skrypt pythona http://yorik.uncreated.net/scripts/dxf-thumbnailer.py
#!/usr/bin/python #*************************************************************************** #* * #* Copyright (c) 2010 Yorik van Havre <yorik@uncreated.net> * #* * #* This program is free software; you can redistribute it and/or modify * #* it under the terms of the GNU General Public License (GPL) * #* as published by the Free Software Foundation; either version 2 of * #* the License, or (at your option) any later version. * #* for detail see the LICENCE text file. * #* * #* This program is distributed in the hope that it will be useful, * #* but WITHOUT ANY WARRANTY; without even the implied warranty of * #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * #* GNU Library General Public License for more details. * #* * #* You should have received a copy of the GNU Library General Public * #* License along with this program; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * #*************************************************************************** __title__="DXF thumbnailer utility" __author__ = "Yorik van Havre <yorik@uncreated.net>" __url__ = "http://yorik.uncreated.net" __version__ = '0.1 - 11.10.2010' ''' Linux DXF thumbnailer. This application generates a 128x128px PNG image showing the contents of a DXF file. In order to speed up the image generation process, only a few types of entities are read, so complex files might not get rendered accurately or even fail to render. In order to use this program, you must configure your file manager to use it as a thumbnailer for dxf file type (mime type: image/x-dxf). ''' import sys, getopt, gnomevfs, Image, ImageDraw opt,par = getopt.getopt(sys.argv[1:],'-s:') inpfile = gnomevfs.get_local_path_from_uri(par[0]) outfile = par[1] # inpfile = par[0] # outfile = 'test.png' try: objects = [] currentobject = [] command = None store = None startentities = False xmin = 0 xmax = 0 ymin = 0 ymax = 0 dxf = open(inpfile) for l in dxf.readlines(): fline = l.strip() if fline == 'ENTITIES': startentities = True if not startentities: continue if not command: if fline == 'POLYLINE' or fline == 'LWPOLYLINE': vertexmode = False command = 'polyline' currentobject.append(command) elif fline == 'LINE': command = 'line' currentobject.append(command) elif fline == 'ARC': command = 'arc' currentobject.append(command) elif fline == 'CIRCLE': command = 'circle' currentobject.append(command) elif command == 'line': if not store: if fline == '10': store = 'x' elif fline == '20': store = 'y' elif fline == '11': store = 'x' elif fline == '21': store = 'y' else: num = float(fline) currentobject.append(num) if store == 'x': if num < xmin: xmin = num if num > xmax: xmax = num elif store == 'y': if num < ymin: ymin = num if num > ymax: ymax = num store = None if len(currentobject) == 5: objects.append(currentobject) currentobject = [] command = None elif command == 'arc': if not store: if fline == '10': store = 'x' elif fline == '20': store = 'y' elif fline == '40': store = 'other' elif fline == '50': store = 'other' elif fline == '51': store = 'other' else: num = float(fline) currentobject.append(num) if store == 'x': if num < xmin: xmin = num if num > xmax: xmax = num elif store == 'y': if num < ymin: ymin = num if num > ymax: ymax = num store = None if len(currentobject) == 6: objects.append(currentobject) currentobject = [] command = None elif command == 'circle': if not store: if fline == '10': store = 'x' elif fline == '20': store = 'y' elif fline == '40': store = 'other' else: num = float(fline) currentobject.append(num) if store == 'x': if num < xmin: xmin = num if num > xmax: xmax = num elif store == 'y': if num < ymin: ymin = num if num > ymax: ymax = num store = None if len(currentobject) == 4: objects.append(currentobject) currentobject = [] command = None elif command == 'polyline': if not store: if fline == 'VERTEX': vertexmode = True elif fline == '10' and vertexmode: store = 'x' elif fline == '20'and vertexmode: store = 'y' elif fline == 'SEQEND': objects.append(currentobject) currentobject = [] command = None else: num = float(fline) currentobject.append(num) if store == 'x': if num < xmin: xmin = num if num > xmax: xmax = num elif store == 'y': if num < ymin: ymin = num if num > ymax: ymax = num store = None print len(objects),"objects" print "bounding box",xmin,ymin,xmax,ymax sizex = xmax-xmin sizey = ymax-ymin image = Image.new('RGB',(128,128)) draw = ImageDraw.Draw(image) draw.rectangle((0,0,128,128),fill='#ffffff') for ob in objects: print "drawing",ob if ob[0] == 'line': x1 = int(((ob[1]-xmin)/sizex)*128) y1 = 128-int(((ob[2]-ymin)/sizey)*128) x2 = int(((ob[3]-xmin)/sizex)*128) y2 = 128-int(((ob[4]-ymin)/sizey)*128) draw.line((x1,y1,x2,y2),fill=0) elif ob[0] == 'polyline': x1 = int(((ob[1]-xmin)/sizex)*128) y1 = 128-int(((ob[2]-ymin)/sizey)*128) done = False for p in ob[3:]: if not done: lp = p else: x2 = int(((lp-xmin)/sizex)*128) y2 = 128-int(((p-ymin)/sizey)*128) draw.line((x1,y1,x2,y2),fill=0) x1 = x2 y1 = y2 done = not(done) elif ob[0] == 'circle': x1 = int((((ob[1]-ob[3])-xmin)/sizex)*128) y1 = 128-int((((ob[2]-ob[3])-ymin)/sizey)*128) x2 = int((((ob[1]+ob[3])-xmin)/sizex)*128) y2 = 128-int((((ob[2]+ob[3])-ymin)/sizey)*128) draw.ellipse((x1,y2,x2,y1),outline=0) elif ob[0] == 'arc': x1 = int((((ob[1]-ob[3])-xmin)/sizex)*128) y1 = 128-int((((ob[2]-ob[3])-ymin)/sizey)*128) x2 = int((((ob[1]+ob[3])-xmin)/sizex)*128) y2 = 128-int((((ob[2]+ob[3])-ymin)/sizey)*128) start = int(ob[4]) end = int(ob[5]) draw.arc((x1,y2,x2,y1),start,end,fill=0) del draw image.save(outfile,'PNG') except: sys.exit(1)
Plik dla thunara dxf-thumbnailer.Desktop o zawartości:
[Thumbnailer Entry] TryExec=dxf-thumbnailer.py Exec=dxf-thumbnailer.py %u %o %s MimeType=image/x-dxf;image/vnd.dxf;image/vnd.dwg;image/x-dwg;application/dxf;
Szczegóły:
http://yorik.uncreated.net/guestblog.php?tag=linux&complete=3
Ostatnio edytowany przez arecki (2017-11-18 18:09:24)
Offline
Myślę, że sobie odpuszczę, bo i tak tego nie zrobię, no chyba, że ktoś mnie poprowadzi jak za rękę, a poza tym ja potrzebuję mieć ten podgląd plików na PC, który nie jest połączony z netem.
Offline
zainstaluj freecad
Offline
Oferuje on podgląd plików bez robienia czegokolwiek ? Teraz używam LibreCAD-2D.
Ostatnio edytowany przez lukasz89 (2017-11-19 14:14:53)
Offline
[quote=lukasz89]Oferuje on podgląd plików bez robienia czegokolwiek ? Teraz używam LibreCAD-2D.[/quote]
A skąd ja mam wiedzieć :D
Zazwyczaj jednak jest tak, że zainstalowanie programu dedykowanego powoduje, że pliki są widoczne w podglądzie.
Zainstalowanie nic nie boli, zawsze możesz odinstalować.
Offline
[quote=Bodzio][quote=lukasz89]Oferuje on podgląd plików bez robienia czegokolwiek ? Teraz używam LibreCAD-2D.[/quote]
A skąd ja mam wiedzieć :D
Zazwyczaj jednak jest tak, że zainstalowanie programu dedykowanego powoduje, że pliki są widoczne w podglądzie.
Zainstalowanie nic nie boli, zawsze możesz odinstalować.[/quote]
Ja mam na swoim testingu freecada, qcada, draftsighta i nie ma podglądu dxf.
Próbowałem też na swoim testingu tego skryptu pythona, ale na razie wywala mi błąd:
Traceback (most recent call last): File "./dxf-thumbnailer.py", line 47, in <module> inpfile = gnomevfs.get_local_path_from_uri(par[0]) IndexError: list index out of range
Ostatnio edytowany przez arecki (2017-11-19 20:31:15)
Offline
[quote=arecki]Ja mam na swoim testingu freecada, qcada, draftsighta i nie ma podglądu dxf.[/quote]
Bo za to odpowiada menedżer plików.
Offline
@arecki
Pokombinuj z tym
https://toggen.com.au/blog/it-tips/getting-thumbnails-for-dxf-cad-drawings-working-under-lxde-desktop-on-fedora-20
Offline
@ciastek1981, dałeś linka właśnie do tego samego skryptu.
Offline
Może i tak ;)
Plik do Thunar'a skąd brałeś?
For thunar: Download this dxf-thumbnailer.Desktop file and place it in /usr/share/thumbnailers. That's it![/quote]
Tam przekierowuje na http://yorik.uncreated.net/scripts/dxf-thumbnailer.Desktop
a powinno na
http://yorik.uncreated.net/scripts/dxf-thumbnailer.desktopKod:
[Desktop Entry] Version=1.0 Encoding=UTF-8 Type=X-Thumbnailer Name=dxf Thumbnailer MimeType=image/x-dxf; X-Thumbnailer-Exec=dxf-thumbnailer.py %u %o %s GenericName=DXFThumbnailerOstatnio edytowany przez ciastek1981 (2017-11-20 13:38:10)
Burble, Burble, Burble ... hahaaaaaaa :D
Forum Linux Mint Polska http://forum.linuxmint.pl/
Offline
Plik do thunara tworzyłeem własnoręcznie bazując na innych już posiadanych zgodnie z podanymi wcześniej zapisami.
Spróbuje tak jak podałeś.
Spróbowałem najpierw uruchomić ten skrypt z argumentami %u %o %s (na podstawie poniższej pomocy)
%o
The local path to the output file where to store the generated thumbnail. The output file must be written as valid PNG file according to the thumbnail standard (see above). Note that the path may not end with .png, which matters if you invoke certain third party tools.
%s
Pożądany rozmiar generowanej miniatury w pikselach. Parametr opcjonalny.
%u
Similar to %i, but substituted with the URI of the file, rather than the path. This was added for compatibility with GNOME.[/quote]
Stworzyłem przykładowy plik i zapisałem jako dxf w wersji R12 ASCII.
Uruchomiłem skrypt z odpowiednimi argumentami.Kod:
./dxf-thumbnailer.py file:///home/user/Dokumenty/DXF/R12_ASCII.dxf r12_ascii.png 9 objects bounding box -34.3432835821 -17.7492537313 232.03880597 174.371641791 drawing ['polyline', 62.43582089552234, 166.2268656716418, 62.43582089552234, 55.5537313432835, 205.2089552238805, 55.5537313432835, 205.2089552238805, 166.2268656716418] drawing ['circle', 82.55820895522385, 141.3134328358209, 57.01544584430721] drawing ['circle', 179.3373134328358, 79.50895522388058, 73.49110150753505] drawing ['line', 17.39999999999998, 22.4955223880597, 232.0388059701492, 174.3716417910448] drawing ['line', 232.0388059701492, 174.3716417910448, -34.34328358208958, -17.74925373134332] drawing ['line', -34.34328358208958, -17.74925373134332, -34.34328358208958, 119.7537313432836] drawing ['line', -34.34328358208958, 119.7537313432836, 130.4686567164179, -13.91641791044779] drawing ['line', 130.4686567164179, -13.91641791044779, 15.00447761194027, -13.91641791044778] drawing ['line', 15.00447761194027, -13.91641791044778, 11.17164179104475, 144.1880597014925]Wygenerowało mi podgląd w pliku png, teoretycznie powinno to więc współdziałać również z thunarem.
Na razie jednak nie udaje mi się to z thunarem.Ostatnio edytowany przez arecki (2017-11-20 18:57:07)
Offline
Sprawa jest dość prosta. Zrobienie pinga z dxf to tylko cześć, tego co trzeba zrobić. Obsługą podglądu plików zajmuje się tumbler i potrzeba czegoś do konwersji z dxf do png. Najważniejsze jest jak tworzona jest nazwa pliku png podglądu, a jest generowana z sumy kontrolnej pełnej ścieżki w ten sposób [b]echo -n 'file:///cała/ścieżka/pliku' | md5sum[/b], inaczej nic z tego. Pewnie można coś znaleźć w pythonie lub pokusić się o napisanie pluginu do tumblera.
https://github.com/xfce-mirror/tumbler/tree/master/plugins
Plik dxf to jest plik wektorowy, czyli opisowy prawie taki sam jak np. svg (svg opisany jest w xml). To wystarczy mieć inkscape do generowania z dxf do png-ów, potrafi robić to bez gui (prawie), libreoffice i dia też to zrobi. Miałem kiedyś, tak z dekadę temu, konwerter z dxf do png napisany w pythonie, ale nie wiem gdzie jest, pewnie najlepiej by się nadawał do robienia tego. Próbuj na pojedynczych/małych ilościach i plikach zapasowych najlepiej.
[b]==To jest tylko do zrobienia==[/b]
Teraz jak najprościej to zrobić, by działało tworzenie podglądu w menu thunarda myszką.
Zainstaluj.
apt-get install tumbler inkscape
Dlaczego inkscape, bo robi najładniejsze png-i, choć ma jeden mankament którego nie udało mi się zmienić, to pytanie wymagające potwierdzenia ok, gdy nic nie zmieniamy.
Ewentualnie libreoffice o czym niżej lub dia. Jak ktoś chce mieć podglądy filmów/dokumentów to jeszcze tumbler-plugins-extra.
Sprawdzić w thunar, czy po instalacji są podglądy jpg/png/svg i czy jest katalog [b].cache/thumbnails/normal[/b]
ls $HOME/.cache/thumbnails/
Do szybkiego sprawdzania i śledzenia błędów w thunar, można uruchomić przeglądarkę w terminalu:
thunar -q && thunar
Teraz skrypt.
nano /user/bin/minidxf
Wkleić to:
#!/bin/sh for plik do if [ ${plik##*.} = "dxf" ] then md=$(printf "echo -n 'file://$plik'" | bash | md5sum | cut -d ' ' -f1) inkscape -f $plik -z -e $HOME/.cache/thumbnails/normal/$md.png fi done
Uprawnienia do uruchamiania.
chmod +x /user/bin/minidxf
Teraz plik uruchamiania.
nano /usr/share/applications/minidxf.desktop
Wkleić to (można dać ikonę):
[Desktop Entry] Name=minidxf Comment=miniaturki dxf Exec=/usr/bin/minidxf Icon= GenericName=minidxf Terminal=false Type=Application Categories=System;
[b]Ustawienia w przeglądarce thunar.[/b]
Na pliku dxf prawy (później można zaznaczać kilka naraz) i "Otwórz za pomocą innego programu..." , wybrać z listy [b]minidxf[/b]. Wiadomo później zmienić we "Właściwościach" pliku, by domyślnym był właściwy cad, a ten jako dostępna opcja.
Zamknąć przeglądarkę i otworzyć, podgląd powinien być, ewentualnie jak pisałem z opcją -q w terminalu. Przy powiększonych ikonach podgląd jest bardzo dobrze widoczny. Teraz można zaznaczać kilka plików dxf naraz do robienia podglądów, pamiętać o wyskakującym okienku przy korzystaniu z inkscape, [b]w menu dostępne tylko dla plików dxf[/b].
Plik jest przezroczysty, można dodawać tło (kolor) lub zmniejszyć wielkość (przy dużej ilości i słabym komputerze może mieć znaczenie), czytać manual lub opis na stronie:
https://inkscape.org/sk/doc/inkscape-man.html
Jest ta niedogodność z inkscape jak pisałem, wyskakuje okna i trzeba klikać ok. Można spróbować użyć do generowania podglądu libreoffice, nie ma pytań, ale robi słabsze podglądy i do nazwy dodaje starą cześć nazwy. Trzeba użyć choćby rename lub zwykłym mv zmienić.
[b]==Tu można skończyć czytać==[/b]
Na próbę z libreoffice sprawdzić:
libreoffice --convert-to nazwa.png Jakiś_dxf --outdir /tmp/test.png
Można użyć nazwy [b]soffice --convert-to...[/b], to działa z openoffice też. Możesz sprawdzić dia.
dia plik.dxf -s 256x256 -e /tmp/test.png
Można użyć tych lub innego konwertera dxf do png.
[b]Drugi sposób[/b] inny, dodanie do menu thunarda przez "Edycja" -> "Czynności".
nano /user/bin/minidxf2
Wkleić to:
#!/bin/sh md=$(printf "echo -n 'file://$@'" | bash | md5sum | cut -d ' ' -f1) inkscape -f $@ -z -e $HOME/.cache/thumbnails/normal/$md.png
Uprawnienia do uruchamiania.
chmod +x /user/bin/minidxf2
W thunar:
Edycja -> Czynności -> dodać coś w postaci [b]/usr/bin/minidxf2 %f[/b] (ścieżka dla jednego bo i tak zrobi błędną nazwę przy wielu) -> "w zakładce wyświetlanie" -> "wzór pliku" wpisać [b]*.dxf[/b] -> "typ elementów" najlepiej zaznaczyć wszystkie bo nie zawsze wyświetla bez tego w menu i tak będzie [b]dostępne tylko dla plików dxf[/b].
Teraz.
Na pliku dxf prawy wybrać minidxf2, potwierdzić ok. To jest dla zaznaczonego tylko jednego pliku. Do sprawdzenia wystarczy.
Ten dxf-thumbnailer.py nie robi lepszego pliku png z dxf od libreoffice, nie ze wszystkimi dxf-ami sobie dobrze radzi. Znacznie lepiej sprawdza się inkscape. Ale jakieś tam pn-gi z dxf robi, nie ma problemu by nim zastąpić inkscape.
Mam nadzieje że się nie pomyliłem, bo ja używam Gnome z nautilusem, a tam jest troszkę inaczej.
Offline
Z tym inkspece z tego co zrozumiałem to generujemy te podglądy jednorazowo, potem przy każdym nowym pliku musimy ponownie zmieniać domyślną aplikację na minidxf?
Głównym celem do osiągnięcia w tym wątku jest generowanie miniatur z poziomu thunara bez tych całych zabiegów ze zmianą domyślnej aplikacji czy klikaniem prawym klawiszem myszy.
Na razie mamy zbiór programów i skryptów, które potrafią generować zrzut do png.
Teraz pozostaje tylko wykorzystać mechanizmy thunara aby robił to samodzielnie przy użyciu wymienionych wyżej narzędzi.
Z tego co widzę na razie nie mamy takiego rozwiązania.
Jeśli dobrze zrozumiałem obecnie do wyboru mamy dwie metody:
- stworzyć sobie plugin do tumblera (patrzyć w podlinkowanego gita)
lub
- używając wyżej podanych narzędzi (skryptów lub programów), wygenerować gotowy thumbnail(png) o nazwie pobranej z wyniku
echo -n 'file:///cała/ścieżka/pliku' | md5sum
i wrzucić do swojego katalogu ~/.thumbnails
Ostatnio edytowany przez arecki (2017-11-21 10:41:52)
Offline
[b]arecki[/b]: Z tym inkspece z tego co zrozumiałem to generujemy te podglądy jednorazowo, potem przy każdym nowym pliku musimy ponownie zmieniać domyślną aplikację na minidxf?[/quote]
Nie, później jest dostępna zawsze jako opcja w menu (prawym na pliku/plikach dxf) w thunar. To jest rozwiązanie (przykład) najprostsze z najlepszym na razie konwerterem dxf do png, ale jak komuś przeszkadza pytanie to można zmienić na coś co nie będzie pytało, pisałem o tym. Można pisać plugin lub zmodyfikować skrypt by sam szukał zmian. Najważniejsze tak jak pisałem przy korzystaniu z tumblera jest tworzenie nazwy. Rozpisałem się po to by wyjaśnić jaki jest mechanizm, teraz jak ktoś ma czas niech robi to dalej, lub używa w sposób jaki opisałem. Może autorowi wątku takie rozwiązanie wystarczy.
Offline
Ja to już sam z ciekawości chcę uruchomić u siebie, ale chciałbym aby mechanizm działania był taki sam jak dla innych typów plików (jpg, pdf itp.)
I teraz w związku z tym pytanie czy można to osiągnąć jedynie przez wspomniany plugin do tumblera?
O skryptach skanujących zmiany raczej zapomnijmy bo nie o taki mechanizm chodzi.
Na razie zrobiłem tak jak radziłeś:
echo -n 'file:///home/user/Dokumenty/DXF/R12_ASCII.dxf' | md5sum c2f7b98a0ee206f8cc4dca114bb39dd7
Nazwałem plik zrzutu na podstawie powyższego wyniku i wrzuciłem do
~/.cache/thumbnails/normal/
No i mam miniaturkę.
Jest to jakiś krok dalej, można to teraz sobie oskryptować, wrzucić pod prawy klawisz myszy, ale to wciąż nie to czego chcemy.
Ostatnio edytowany przez arecki (2017-11-21 18:39:51)
Offline
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00085 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.226.222.76' WHERE u.id=1 |
0.00079 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.226.222.76', 1732458358) |
0.00047 | SELECT * FROM punbb_online WHERE logged<1732458058 |
0.00075 | SELECT topic_id FROM punbb_posts WHERE id=315638 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=30018 ORDER BY posted |
0.00053 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=30018 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00268 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=30018 ORDER BY p.id LIMIT 0,25 |
0.00080 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30018 |
Total query time: 0.00716 s |