-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.xml
745 lines (495 loc) · 61 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>System.out.println</title>
<link>http://fisiu.github.io/</link>
<description>Recent content on System.out.println</description>
<generator>Hugo -- gohugo.io</generator>
<language>pl-PL</language>
<lastBuildDate>Wed, 13 Jul 2016 00:38:54 +0200</lastBuildDate>
<atom:link href="http://fisiu.github.io/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Brother DCP-J140W w openSUSE Leap 42 1</title>
<link>http://fisiu.github.io/2016/07/brother-dcp-j140w-w-opensuse-leap-42-1</link>
<pubDate>Wed, 13 Jul 2016 00:38:54 +0200</pubDate>
<guid>http://fisiu.github.io/2016/07/brother-dcp-j140w-w-opensuse-leap-42-1</guid>
<description><p>openSUSE Leap 42.1 zagościł u mnie stosunkowo późno, chyba dopiero około pół roku po premierze. I to tylko na jednym komputerze. Do tej pory wykonywałem uaktualnienie, wykonując nadzwyczaj magiczne polecenie
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>su</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper dup</kbd></div>
</p>
<p>O ile mnie pamięc nie myli, to ta historia powtarzała się od kilku już lat. Począwszy od wersji 12.1, który była instalowana &ldquo;na czysto&rdquo;. Jednak przy wersji 42.1 ponownie postanowiłem zainstalować system na czysto. A jak wiadomo, wiąże się to zawsze za kopią i przywracaniem plików. Dodatkowo jest to dobra okazja aby nieco posprzątać, zwłaszcza w miejscach, gdzie dawno nie zaglądaliśmy&hellip;</p>
<p>Sama instalacja openSUSE Leap 42.1 nie stanowiła żadnego problemu. Pliki również udało się przywrócić dość sprawnie, konfiguracja vima i powłoki leży w repozytorium gita - więc i tu poszło gładko. I tak przez jakiś czas system pracował, wydawało mi się, że o niczym nie zapomniałem. Aż do czasu kiedy chciałem coś przeskanować i wydrukować. Wszak Brother DCP-J140W działał przez sieć, choć było to jeszcze na starym systemie. Więc zabrałem się za instalację, choć sama <a href="http://support.brother.com/g/s/id/linux/en/index.html?c=us_ot&amp;lang=en&amp;comple=on&amp;redirect=on">dokumentacja</a> mówi, że to bułka z masłem. Na pierwszy ogień poszedł skaner. Po instalacji sterownika z pakietu rpm konieczne było dodadnie skanera. Poszło gładko.
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>su</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper in ~/Pobrane/brscan4-0.4.3-3.x86_64.rpm</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>brsaneconfig4 -a name=DCP-J140W model=DCP-J140W ip=192.168.1.10</kbd></div>
</p>
<p>W razie czego pomagamy sobie <code>brsaneconfig4 -h</code>.</p>
<p>Niestety, pomimo tego, że polecenie
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>brsaneconfig4 -q</kbd></div>
</p>
<p>informowało, że urządzenie jest dostępne:</p>
<pre><code class="language-terminal">Devices on network
0 DCP-J140W &quot;DCP-J140W&quot; I:192.168.1.10
</code></pre>
<p>to żadna aplikacja do skanowania nie mogła ze skanerem się połączyć. Dokumentacja milczy na ten tema, jednak rozwiązanie okazło się całkiem proste. Wystarczy dodać na końcu pliku <code>/etc/sane.d/dll.conf</code> linię <code>brother4</code>.</p>
<p>Za skanerem poszła drukarka. Bez większych przygód. Instalacja sterownika ograniczała się do:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>su</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper in ~/Pobrane/dcpj140wcupswrapper-1.1.3-6.i386.rpm ~/Pobrane/dcpj140wlpr-1.1.3-6.i386.rpm</kbd></div>
</p>
<p>Potem zostało już tylko dodanie drukarki w <a href="http://www.cups.org/">CUPS</a>. Ja w tym celu wykorzystałem interfejs www pod adresem <a href="http://localhost:631">http://localhost:631</a>. W sekcji <code>Administration</code> → <code>Add printer</code> → <code>LPD/LPR</code> i jako połączenie wpisujemy <code>lpd://192.168.1.10/binary_p1</code>. Następnie podajemy nazwę i opis a później wskazujemy plik .ppd. W moim przypadku był to plik <code>/opt/brother/Printers/dcpj140w/cupswrapper/brother_dcpj140w_printer_en.ppd</code>. Na samym końcu zostało wybranie domyślnych ustawień drukowania.</p>
<p>Tadam! Można drukować i skanować.</p>
<p>UWAGA. W odpowiednich miejscach użyj adresu IP który odpowiada twojemu urządzeniu ;-)</p>
</description>
</item>
<item>
<title>Konferencja openSUSE #oSC15</title>
<link>http://fisiu.github.io/2015/05/konferencja-opensuse-osc15</link>
<pubDate>Sun, 10 May 2015 14:58:17 +0200</pubDate>
<guid>http://fisiu.github.io/2015/05/konferencja-opensuse-osc15</guid>
<description>
<p>Jako wieloletni użytkownik openSUSE, po <a href="https://build.opensuse.org/project/show/home:Fisiu">kilku</a> <a href="http://forum.suse.pl/index.php?action=profile;u=3617">latach</a> <a href="https://forums.opensuse.org/member.php/284-Fisiu">aktywnego</a> <a href="https://i18n.opensuse.org/stats/trunk/pl/">uczestnictwa</a> w projekcie openSUSE zdecydowałem się na udział w konferencji. Była to okazja do poznania ludzi, z którymi znamy się od lat - jednak do tej pory wyłącznie przez internet. Planowanie zacząłem około 2 miesiące przed datą konferencji, która zaplanowana była na 1 - 4 Maj 2015. Od jakiegoś czasu w openSUSE istnieje program <a href="https://en.opensuse.org/openSUSE:Travel_Support_Program">TSP</a>, dzięku któremu można wziąć udział w wydarzeniach związanych z openSUSE nie rujnując swojego budżetu. Sam też korzystałem ze wsparcia TSP ;-)</p>
<h3 id="dzień-0">Dzień 0.</h3>
<p>Po dotarciu na <a href="https://www.google.pl/maps/place/Westvliet+Fitness+%26+Racket+club/@52.0668922,4.3699617,17z/data=!4m2!3m1!1s0x0000000000000000:0x9885b46b2cff059b?hl=pl">miejsce</a> konferencji, okazło się, że jestem pierwszy :-D
Jednak trudy podróży OSW -&gt; <i class="fa fa-car"></i> -&gt; KTW -&gt; <i class="fa fa-plane"></i> -&gt; EIN -&gt; <i class="fa fa-train"></i> -&gt; HAG nie były straszne, bo od razu po dotarciu, razem z organizatorami (+<a href="https://plus.google.com/+HansdeRaad/">Hans</a>, +<a href="https://plus.google.com/101576589822337229579/">Robin</a>) zaczęliśmy ogarniać krzesła w kilku (6!) salach konferencyjnych. Na koniec zostało rozwieszenie plakatów i banerów. Westvliet Sport Center było gotowe, by dnia następnego hostować konferencję <code>#oSC15</code>.</p>
<!-- more -->
<h3 id="dzień-1">Dzień 1.</h3>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>systemctl start #oSC15</kbd></div>
<p>Już z samego rana ustawiłem się na froncie, by dopilnować rejestracji użytkowników ;-) Później już same sesje, rozmowy, warsztaty. Było o uwolnieniu źródeł SLE, o nowościach i planach rozwojowych OBS o także ciekawie o kluczach w przestrzeni publicznej. Nie mogę także zapomnieć o 2 warsztatach, na których doskonaliliśmy umiejętności tworzenia/utrzymywania pakietów rpm.</p>
<h3 id="dzień-2">Dzień 2.</h3>
<p>Więcej sesji. O nowościach w LibreOffice i YaST. Bardzo ciekawa była sesja o &ldquo;płytkach ARM&rdquo; i openSUSE, czyli jakie kroki podjąć, by nasza płytka działała pod kontrolą openSUSE. Na sesji poświęconej monitorowaniu serwerów dowiedziałem się jak to robię mistrzowie - inżynierowie z SUSE. Poznałem także webowe narzędzie postfix.admin do zarządzania serwerem pocztowym postfix. No i oczywiście warsztaty z ownCloud - własna chmura na płytce ARM :-)
Wieczorne zwiedzanie Hagi zakończyło się zbyt późno, by zdążyć jeszcze na BBQ ;-)</p>
<h3 id="dzień-3">Dzień 3.</h3>
<p>Cały ranek, aż do obiadu - mega warsztat z vim. Czyli jak być bardziej produkcyjnym, niekoniecznie pracując w trybie INSERT :-D Poźniej było kilka sesji związanych z bezpieczeństwem zarówno serwerów jak i stacji roboczych.
Zwiedzanie skończone wcześniej = <code>BBQ mode</code> :-)</p>
<h3 id="dzień-4">Dzień 4.</h3>
<p>Godzinny udział w spotkaniu projektu openSUSE. Niestety, lot zaplanowany na 15:10 zmusił mnie do wczesnego pożegnania się z konferencją.</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>systemctl stop #oSC15</kbd></div>
<ul>
<li>Konferencja skończona.</li>
<li>Bagaż doświadczeń powiększył się.</li>
<li>Nowe znajomości zawarte.</li>
<li>Poziom wiedzy wzrósł.</li>
</ul>
<p>Jednym słowem - konferencja <code>#oSC15</code> była świetna!</p>
<p>Co dalej? Już za rok w Norymberdze kolejna konferencja openSUSE, <code>#oSC16</code>. Już dzisiaj wiem, że pojadę. Może tym razem będzie z Polski ktoś jeszcze? Do zobaczenia zielona drużyno!</p>
</description>
</item>
<item>
<title>Jak okiełznać bałagan w zdjęciach?</title>
<link>http://fisiu.github.io/2014/06/jak-okielznac-balagan-w-zdjeciach</link>
<pubDate>Sun, 22 Jun 2014 19:31:45 +0200</pubDate>
<guid>http://fisiu.github.io/2014/06/jak-okielznac-balagan-w-zdjeciach</guid>
<description><p>Zbieramy fotki z jakiegoś wydarzenia na przestrzeni kilku lat. W tym czasie używamy różnych aparatów, telefonów czy kamer. Każde z tych urządzeń ma inny schemat nazywania plików, różne formaty daty i/lub czasu. Dochodzimy do momentu, że w katalogu mamy setki czy tysiące zdjęć. Jak zatem zapanować na takim bałaganem? Ano w 2 prostych krokach.
Po pierwsze, kopiujemy wszystkie zdjęcia do nowego katalogu. W międzyczasie sprawdzamy czy mamy zainstalowany program <code>jhead</code> np. za pomocą <div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>which jhead</kbd></div>
</p>
<p>Jeśli programu brak, to w openSUSE szybko instalujemy za pomocą YaST bądź w konsoli <div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>sudo zypper in jhead</kbd></div>
</p>
<p>Program zainstalowany, zdjęcia skopiowane - czas ogarnąć bałagan.
W konsoli przechodzimy do katalogu ze zdjęciami i uruchamiamy:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>jhead -autorot -ft -nfIMG_%Y.%m.%d-%H.%M.%S *.jpg</kbd></div>
<p>Użyte parametry oznaczają:</p>
<ul>
<li>-autorot Automatyczne obracanie zdjęcia na podstawie danych Exif</li>
<li>-ft Ustawia datę modyfikacji pliku na podstawie daty z danych Exif</li>
<li>-nf Zmienia nazwę pliku, zgodnie z podanym wzorcem (<code>man date</code>), data i czas ustawiane na podstawie danych Exif</li>
</ul>
<p>I tak przykładowy plik <code>20130801_144642.jpg</code> zmieni nazwę na <code>IMG_2013.08.01-14.46.41.jpg</code>.</p>
<p>PS. Jeśli wcześniej usunęliśmy dane Exif z plików, niestety nic z tego nie wyjdzie.</p>
</description>
</item>
<item>
<title>Porządki w home:Fisiu:kadu</title>
<link>http://fisiu.github.io/2014/06/porzadki-w-home-fisiu-kadu</link>
<pubDate>Thu, 19 Jun 2014 18:22:03 +0200</pubDate>
<guid>http://fisiu.github.io/2014/06/porzadki-w-home-fisiu-kadu</guid>
<description><p>Wydanie kadu-1.0 coraz <a href="http://www.kadu.im/forum/viewtopic.php?f=6&amp;t=16970">bliżej</a>. O ile do wydania openSUSE 13.2 jeszcze sporo czasu <a href="https://news.opensuse.org/2013/05/17/opensuse-kicks-off-development-with-milestone-1">pozostało</a>, to moje repozytorium <a href="https://build.opensuse.org/project/show/home:Fisiu:kadu">home:Fisiu:kadu</a> dostarczało kadu w najnowszej wersji wszystkim użytkownikom openSUSE. Aktualnie dostępne są dwie wersje, ostatnie wydanie z serii 0.12 - kadu-0.12.3, a dla starszych wersji openSUSE ostatnie wydanie z serii 0.6 - kadu-0.6.5.</p>
<p>Kadu 0.12.3 zostanie zaktualizowane do wersji 1.0 a kadu-old (czyli wersja 0.6.5) zostanie usunięte. Jeśli ktoś z Was chciałby widzieć wersję kadu-0.12.3 jako wersję archiwalną czyli kadu-old, proszę o taką informację. Jeśli w przeciągu tygodnia nie będzie takiej informacji, uznam, że liczy się dla Was tylko najnowsza wersja kadu ;-) Albo wersja dostępna w głównym repozytorium danej wersji openSUSE.</p>
<p>Główna biblioteka z której korzysta kadu, <code>libgadu</code> jest już dostępna w wersji <a href="http://libgadu.net/releases/1.12.0.html">1.12.0</a> więc kadu-1.0 powinno być dostępne &ldquo;na dniach&rdquo;.</p>
</description>
</item>
<item>
<title>JBake 2.3.0 dostępny</title>
<link>http://fisiu.github.io/2014/06/jbake-2-3-0-dostepny</link>
<pubDate>Sun, 15 Jun 2014 21:07:47 +0200</pubDate>
<guid>http://fisiu.github.io/2014/06/jbake-2-3-0-dostepny</guid>
<description><p>Całkiem niedawno ukazała się nowa wersja <a href="http://jbake.org/">jbake</a> - 2.3.0. Lista zmian dla tego wydania przedstawia się nastepująco:</p>
<ul>
<li>Wsparcie dla przyrostowego renderowania stron (w tym wydaniu jeszcze domyślnie wyłączone, funkcja eksperymentalna)</li>
<li>Dodano wsparcie dla projektów w podkatalogach</li>
<li>Kod odpowiedzialny za parsowanie i renderowanie został przepisany, dzięki czemu łatwiejsze jest jego utrzymanie i dodawanie nowych funkcjonalności</li>
<li>Domyślny status może być teraz zdefiniowany w pliku konfiguracyjnym</li>
<li>Naprawiono błąd URI występujący na platformie Windows</li>
<li>Dodano opcję wiersza polceń realizującą opcje bake+serve</li>
<li>Dostęp do opcji konfiguracyjnych z plików w formacie AsciiDoc</li>
<li>Dodano wsparcie dla frameworka logowania</li>
<li>Dodano obsługę szablonów Groovy oraz Thymeleaf</li>
<li>Rozszerzony model danych jest dostępny w szablonach</li>
<li>Usprawniono raportowanie błędów</li>
<li>Startowy szablon został zaktualizowany i używa teraz Bootstrap 3.1.1 oraz jQuery 1.11.1</li>
</ul>
<p>Jbake <a href="http://search.maven.org/#browse|523103791">jest</a> już dostępny w centralnym repozytorium maven. Można także użyć <a href="https://github.com/ingenieux/jbake-maven-plugin">jbake-maven-plugin</a> do szybkiego generowania stron i podglądu na żywo. Lista celów: <code>mvn jbake:help</code> w głównym katalogu projektu.</p>
</description>
</item>
<item>
<title>Biblioteka Apache Tomcat Native w Eclipse</title>
<link>http://fisiu.github.io/2014/03/biblioteka-apache-tomcat-native-w-eclipse</link>
<pubDate>Thu, 27 Mar 2014 13:12:27 +0200</pubDate>
<guid>http://fisiu.github.io/2014/03/biblioteka-apache-tomcat-native-w-eclipse</guid>
<description>
<p>Po dodaniu serwera aplikacji Apache Tomcat w Eclipse, podczas startu widzimy w logach:</p>
<pre><code class="language-java">INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
</code></pre>
<p>Jak dodać bibliotekę Apache Tomcat Native do <code>java.library.path</code>? Najpierw trzeba ją skompilować.</p>
<p>No potrzeby tego postu, zakładam, że tomcat znajduje w katalogu <code>/opt/java/servers/tomcat7</code>. Jeśli zmienna CATALINA_HOME nie jest ustawiona, warto ją dodać do np. <code>~/.profile</code>:</p>
<pre><code class="language-bash"># Export tomcat home
export CATALINA_HOME=/opt/java/servers/tomcat7
</code></pre>
<h3 id="instalacja-zależności">Instalacja zależności</h3>
<p>Zanim zaczniemy kompilować, konieczne jest przygotowanie systemu. Na podstawowy zestaw narzędzi do kompilacji kodu w języku <code>c</code> składa się <code>gcc</code> i <code>make</code>. Indywidualne pakiety można zainstalować za pomocą:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper in make gcc</kbd></div>
</p>
<p>Można także skorzystać z dostępnych wzorców i zainstalować <code>pattern devel_C_C++</code> za pomocą:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper in -t pattern devel_C_C&#43;&#43;</kbd></div>
</p>
<p>Do kompilacji samej zaś biblioteki potrzebujemy pakiety <code>libopenssl-devel</code> oraz <code>libapr1-devel</code>. Jeśli jeszcze ich nie mamy w systemie, to instalujemy:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper in libopenssl-devel libapr1-devel</kbd></div>
</p>
<!-- more -->
<h3 id="kompilacja-biblioteki">Kompilacja biblioteki</h3>
<ol>
<li>Przechodzimy do katalogu <code>bin</code> w katalogu tomcata i rozpakowujemy źródła.</li>
</ol>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>cd $CATALINA_HOME/bin</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>tar xf tomcat-native.tar.gz</kbd></div>
</p>
<ol>
<li>Przechodzimy do katalogu <code>tomcat-native-1.1.29-src/jni/native</code>
Uwaga! Wersja biblioteki może się różnić, zależnie od użytej wersji tomcata. W wersji tomcat-7.0.52 biblioteka natywna jest w wersji 1.1.29.</li>
</ol>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>cd tomcat-native-1.1.29-src/jni/native</kbd></div>
<ol>
<li>Konfiguracja i kompilacja
Aby przygotować źródła do kompilacji, wywołujemy skrypt <code>configure</code>. W liście parametrów dostarczamy ścieżkę do plików nagłówkowych <code>apr</code> oraz ustawiamy <code>prefix</code> - ścieżka gdzie biblioteka zostanie zainstalowana po wywołaniu <code>make install</code> z zachowaniem struktury katalogów. Po skonfigurowaniu, wystarczy skompilować i zainstalować bibliotekę.</li>
</ol>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>./configure --with-apr=$(which apr-1-config) --prefix=$CATALINA_HOME/native</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>make &amp;&amp; make install</kbd></div>
</p>
<p>Jako potwierdzenie, że biblioteka została zainstalowana, wyświetlona zostanie informacja:</p>
<pre><code class="language-terminal">Libraries have been installed in:
/opt/java/servers/tomcat7/native/lib
</code></pre>
<p>Na powyższą ścieżkę składa się użyty <code>prefix</code> podczas konfiguracji i katalog <code>lib</code>.</p>
<h3 id="java-library-path">java.library.path</h3>
<p>Podczas próby uruchomienia tomcata z poziomy eclipse, nadal dostajemy informację, że biblioteka natywna nie jest dostępna. Pomimo, że przed chwilą zostało skompilowana i zainstalowana. Trzeba jeszcze dać ją do ściżki, z której będzie dostępna dla Javy. Aby nie modyfikować ustawień systemowych, można to osiągnąć w eclipse.
Otwieramy konfigurację uruchamiania. PPM na naszym projekcie → Run configurations wybieramy konfigurację dla Apache Tomcat a z niej kartę <code>Environment</code>. Dodajemy nowy parametr o nazwie <code>LD_LIBRARY_PATH</code> i wartości takiej jak ścieżka, gdzie nasza biblioteka została zainstalowana, czyli <code>/opt/java/servers/tomcat7/native/lib</code>.</p>
<p><img src="http://fisiu.github.io/img/2014/tomcat-native-lib-eclipse.png" alt="java.library.path" /></p>
<p>Po zastosowaniu zmian i uruchomieniu serwera, w dzienniku uruchamiania możemy zobaczyć:</p>
<pre><code class="language-java">INFO: Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.4.8.
</code></pre>
</description>
</item>
<item>
<title>Uzupełnianie poleceń zyppera w zsh</title>
<link>http://fisiu.github.io/2014/03/uzupelnianie-polecen-zyppera-w-zsh</link>
<pubDate>Sun, 23 Mar 2014 19:12:19 +0200</pubDate>
<guid>http://fisiu.github.io/2014/03/uzupelnianie-polecen-zyppera-w-zsh</guid>
<description><p>Narzędzie uzupełniania poleceń w zsh jest na prawdę potężne. Po zainstalowaniu ZSH w openSUSE 13.1 za pomocą <div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>sudo zypper in zsh</kbd></div>
przyszła pora na poprawę wyglądu i zachowania powłoki.
Zamiast tworzyć wszystko od podstaw skorzystałem z gotowego rozwiązania jakim jest <a href="http://ohmyz.sh/">oh-my-zsh</a>. Jednak zamiast korzystać z wbudowanych motywów, użyłem <a href="https://powerline.readthedocs.org/en/latest/">powerline</a> i dostosowałem wygląd do swoich potrzeb. Aktualnie wygląda to tak:</p>
<p><img src="http://fisiu.github.io/img/2014/zsh-konsole-powerline-prompt.png" alt="konsola_powerline_prompt" /></p>
<!-- more -->
<p>Domyślna dystrybucja ZSH zawiera sporą ilość rozszerzeń, jednym z nich jest uzupełnianie poleceń zyppera. Jednak zaraz po instalacji ZSH, uzupełnianie są tylko globalne opcje zyppera, bez listy poleceń. Można się spytać po co nam takie uzupełnianie które nie działa? A no po to żeby je naprawić ;-) Najpierw uruchomiłem ZSH z parametrami <code>-xv</code>, dzięki temu widziałem jaka funkcja i skąd jest uruchamiana. Okazało się, że lista poleceń zyppera była źle filtrowana, i w efekcie wszystkie polecenia były pomijane na liście podpowiedzi. Rozwiązanie okazało się całkiem proste i wygląda dokładnie jak w poniższym kodzie:</p>
<pre><code class="language-patch">From 08c2443e5722b578943d2eccfca708e54dea5d20 Mon Sep 17 00:00:00 2001
From: Mariusz Fik &lt;[email protected]&gt;
Date: Sat, 15 Mar 2014 20:23:51 +0100
Subject: [PATCH] Fix zypper commands completion [zypper &lt;TAB&gt;].
Signed-off-by: Mariusz Fik &lt;[email protected]&gt;
---
Completion/openSUSE/Command/_zypper | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Completion/openSUSE/Command/_zypper b/Completion/openSUSE/Command/_zypper
index ef8ca20..25a32c3 100644
--- a/Completion/openSUSE/Command/_zypper
+++ b/Completion/openSUSE/Command/_zypper
@@-2,6 +2,7 @@
#
# Copyright (C) 2009 Holger Macht &lt;[email protected]&gt;
# Copyright (C) 2014 Thomas Mitterfellner &lt;[email protected]&gt;
+# Copyright (C) 2014 Mariusz Fik &lt;[email protected]&gt;
#
# This file is released under the GPLv2.
#
@@-45,8 +46,10 @@ _zypper() {
# start parsing with &quot;Global Options:&quot;
[[ $hline =~ &quot;^Global Options:&quot; ]] &amp;&amp; tag=1
[[ $tag = 0 ]] &amp;&amp; continue
+ # skip empty lines
+ [[ $hline =~ ^\s*$ ]] &amp;&amp; continue
# all commands have to start with lower case letters
- [[ $hline[1] =~ ^[A-Z] ]] &amp;&amp; continue
+ [[ $hline == [[:upper:]]* ]] &amp;&amp; continue
(( ${#hline} &lt; 2 )) &amp;&amp; continue
# cut comma at end of command
--
1.8.4.5
</code></pre>
<p>Powyższa łatka została już <a href="https://sourceforge.net/p/zsh/code/ci/2dcf05310612d9bc9980d57f15d500fcf220a974/">włączona</a> do rozwojowej wersji ZSH i tym samym będzie dostępna wraz z kolejnym wydaniem (5.0.6) ZSH. Jednak nic nie stoi na przeszkodzie aby samodzielnie poprawić funkcję uzupełniania, wystarczy tylko zmodyfikować plik <code>/usr/share/zsh/functions/Completion/openSUSE/_zypper</code>.
Od teraz, wpisując w terminalu np. <div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper s[tab]</kbd></div>
zobaczymy wszystkie możliwe opcje zaczynające się na literę s:</p>
<pre><code class="language-terminal">search -- se Search for packages matching a pattern.
services -- ls List all defined services.
shell -- sh Accept multiple commands at once.
source-download -- Download source rpms for all installed packages to a local directory.
source-install -- si Install source packages and their build dependencies.
</code></pre>
</description>
</item>
<item>
<title>Planista We/Wy dla dysków SSD w openSUSE</title>
<link>http://fisiu.github.io/2014/03/planista-we/wy-dla-dysk%C3%B3w-ssd-w-opensuse</link>
<pubDate>Tue, 11 Mar 2014 18:10:19 +0200</pubDate>
<guid>http://fisiu.github.io/2014/03/planista-we/wy-dla-dysk%C3%B3w-ssd-w-opensuse</guid>
<description><p>Domyślnym planistą We/Wy w openSUSE jest <abbr title="Complete Fairness Queueing">CFQ</abbr> i radzi on sobie z klasycznymi dyskami talerzowymi całkiem dobrze. Więcej informacji o samym planiście CFQ można znaleźć w <a href="https://www.kernel.org/doc/Documentation/block/cfq-iosched.txt">dokumentacji kernela</a> a przegląd planistów dostępnych w dystrybucji openSUSE dostępny jest w <a href="http://activedoc.opensuse.org/book/opensuse-system-analysis-and-tuning-guide/chapter-13-tuning-io-performance">podręczniku openSUSE, rozdział 13</a>. Dla dysków <abbr title="Solid State Drive">SSD</abbr> lepszym wyborem zdaje się być planista Deadline bądź Noop.</p>
<p>Sprawdzić aktualnie używanego planistę można za pomocą:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>cat /sys/block/sda/queue/scheduler</kbd></div>
</p>
<pre><code class="language-terminal">noop deadline [cfq]
</code></pre>
<p>Jako <code>root</code> możemy zmienić planistę w &lsquo;locie&rsquo;:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>echo noop &gt; /sys/block/sda/queue/scheduler</kbd></div>
</p>
<p>Skoro już wiemy jak zmienić planistę po uruchomieniu systemu, pozostaje tylko ten proces zautomatyzować. Jeśli posiadamy w komputerze tylko jeden dysk, i jest nim dysk SSD (lub kilka, lecz wszystkie są SSD), najprostszym rozwiązaniem będzie dodanie parametru <code>elevator</code> (nazwa planisty jako wartość) do listy wywołania jądra. W tym celu edytujemy plik:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>sudo vi /etc/default/grub</kbd></div>
</p>
<p>I dodajemy nasz parametr do pozostałych dla opcji <code>GRUB_CMDLINE_LINUX_DEFAULT</code>. Przykładowy fragment ww. pliku może wyglądać tak:</p>
<pre><code class="language-config">GRUB_CMDLINE_LINUX_DEFAULT=&quot; video=1680x1050 resume=/dev/disk/by-id/ata-Hitachi_HDS721050CLA362_JP1521HN0MUHTA-part5 splash=silent quiet showopts radeon.audio=0 radeon.dpm=1 elevator=deadline&quot;
</code></pre>
<p>Pozostaje nam jeszcze zaktualizowanie menu rozruchowego, za pomocą:
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>grub2-mkconfig -o /boot/grub2/grub.cfg</kbd></div>
</p>
<p>A co gdy mamy kilka dysków, różnego typu, zarówno talerzowe jak i SSD? Wówczas nie ruszamy menu gruba, tylko korzystamy z dobrodziejstw <code>udev</code>. Tworzymy zestaw prostych reguł, dzięki którym przydzielimy planistę w zależności od typu dysku. Tworzymy plik <code>/etc/udev/rules.d/50-io-schedulers.rules</code> z zawartością:</p>
<pre><code class="language-config"># set deadline scheduler for non-rotating disks
ACTION==&quot;add|change&quot;, KERNEL==&quot;sd[a-z]&quot;, ATTR{queue/rotational}==&quot;0&quot;, ATTR{queue/scheduler}=&quot;deadline&quot;
# set cfq scheduler for rotating disks
ACTION==&quot;add|change&quot;, KERNEL==&quot;sd[a-z]&quot;, ATTR{queue/rotational}==&quot;1&quot;, ATTR{queue/scheduler}=&quot;cfq&quot;
</code></pre>
<p>Reguły będą mieć zastosowanie po ponownym uruchomieniu komputera. Dla przykładu, w komputerze dysk <code>/dev/sda</code> jest dyskiem SSD a <code>/dev/sdb</code> jest dyskiem talerzowym. Wyjście polecenia <code>cat /sys/block/sd{a,b}/queue/scheduler</code> zwróci:</p>
<pre><code class="language-terminal">noop [deadline] cfq
noop deadline [cfq]
</code></pre>
</description>
</item>
<item>
<title>Z wordpressa do html</title>
<link>http://fisiu.github.io/2014/03/z-wordpressa-do-html</link>
<pubDate>Mon, 10 Mar 2014 14:49:19 +0200</pubDate>
<guid>http://fisiu.github.io/2014/03/z-wordpressa-do-html</guid>
<description><p>Wiosna za pasem więc czas po porządki. Z racji, że ciągłe powiadomienia o kolejnych aktualizacjach wordpressa czy jego wtyczek zaczęły mnie dość mocno irytować a samo utrzymywanie tego bloga wymagało systematycznego nakładu pracy. Postanowiłem wyeliminować źródło problemów, czyli wordpressa. Więc zacząłem się rozglądać za &ldquo;czymś&rdquo; do generowania statycznych treści. Miało być to proste narzędzie, z relatywnie małymi zależnościami, umożliwiające szybki start. No i oczywiście import starych postów z wordpressa.</p>
<p>I tak trafiłem na system <a href="http://www.jbake.org/">JBake</a>. Narzędzie napisane w Javie, kilka silników do obsługi szablonów (<a href="http://freemarker.org/">freemarker</a>, <a href="http://groovy.codehaus.org/Groovy+Templates">groovy templates</a> i <a href="http://www.thymeleaf.org/">thymeleaf</a> v.2.3.0), dostępna <a href="https://github.com/ingenieux/jbake-maven-plugin">wtyczka mavena</a> umożliwia podgląd postów na żywo oraz automatyczne wysyłanie treści na <a href="http://pages.github.com/">githuba</a>. JBake nie posiada możliwości importowania danych bezpośrednio z wordpressa. Jednak istnieje sporo narzędzi do eksportowania stron/postów z wordpressa do formatu markdown. Osobiście użyłem nieco <a href="https://github.com/Fisiu/exitwp">zmodyfikowanego</a> skryptu <a href="https://github.com/thomasf/exitwp">exitwp</a>.</p>
<p>Pozostało stworzyć jakiś motyw i poprawić domyślne szablony. Podczas tego eksperymentu powstał motyw <code>fidbake</code>, zbudowany w oparciu o bootstrap 3, fontawesome i system komentarzy disqus. Całość dostępna jest na licencji MIT: <a href="https://github.com/Fisiu/fidbake">https://github.com/Fisiu/fidbake</a> a demo można sprawdzić pod adresem <a href="http://jbake-fidano.rhcloud.com/">http://jbake-fidano.rhcloud.com/</a>.</p>
<p>Stara (sub)domena jeszcze działa i wskazuje na stary blog. Aktualnie nie jestem pewien czy podpiąć ją pod githuba czy dać o niej zapomnieć. Czas pokaże&hellip;</p>
</description>
</item>
<item>
<title>Konsolidacja baz mysql dla aplikacji KDE w openSUSE</title>
<link>http://fisiu.github.io/2013/11/konsolidacja-baz-mysql-dla-aplikacji-kde-w-opensuse</link>
<pubDate>Thu, 21 Nov 2013 16:50:33 +0200</pubDate>
<guid>http://fisiu.github.io/2013/11/konsolidacja-baz-mysql-dla-aplikacji-kde-w-opensuse</guid>
<description>
<p>Pulpit plazmy korzysta z akonadi, które w domyślnej konfiguracji używa własnej instancji mysql/mariadb. Amarok przechowuje informacje o naszej bibliotece (notowania, teksty, oceny) również w bazie mysql. W tym celu korzysta również z własnej instancji. DigiKam domyślnie przechowuje informacji o kolekcji obrazów w bazie sqlite. Przy większych kolekcjach, może okazać się, że wydajność sqlite jest niewystarczająca. Nic nie stoi na przeszkodzie, aby wszystkie bazy przenieść do systemowej instancji mariadb. Dzięki temu unikniemy dublowania instancji baz dla akonadi i amaroka oraz przyspieszymy działanie digiKama.</p>
<p>I krótka legenda dla kodów użytych w tym wpisie.Kody zaczynające się od:</p>
<ul>
<li># - należy wykonać jako root</li>
<li>$ - należy wykonać jako zwykły użytkownik</li>
<li>&gt; - należy wykonać w konsoli mysql/mariadb</li>
</ul>
<p>Zanim zaczniemy migrować bazy, należy zainstalować serwer mysql/mariadb i uruchomić go:</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i># zypper in mariadb</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i># systemctl enable mysql</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i># systemctl start mysql</kbd></div>
</p>
<!-- more -->
<h3 id="akonadi">Akonadi</h3>
<p>Upewniamy się, że akonadi działa:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ akonadictl status</kbd></div>
<p>Tworzymy zrzut aktualnej bazy akonadi za pomocą:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ mysqldump --socket=~/.local/share/akonadi/socket-$HOSTNAME/mysql.socket akonadi &gt; ~/akonadi-backup.sql</kbd></div>
<p>Zatrzymujemy serwer akonadi:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ akonadictl stop</kbd></div>
<p>Zmieniamy konfigurację bazy danych akonadi, tak aby korzystała z zewnętrznego serwera mysql. Możemy edytować plik <code>~/.config/akonadi/akonadiserverrc</code> by jego zawartość wyglądała następująco:</p>
<pre><code>[%General]
Driver=QMYSQL
SizeThreshold=4096
ExternalPayload=false
[QMYSQL]
Name=akonadi
Host=localhost
Options=
ServerPath=/usr/sbin/mysqld
StartServer=false
User=akonadi
Password=akonadi
[Debug]
Tracer=null
</code></pre>
<p>Lub możemy uruchomić:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ kcmshell4 akonadi</kbd></div>
<p>Odznaczamy &lsquo;Używaj wewnętrznego serwera MySQL&rsquo; i uzupełniamy dane jak na rysunku poniżej.</p>
<p><img src="http://fisiu.github.io/img/2013/akonadi-system-mariadb.png" alt="akonadi-system-mariadb" /></p>
<p>Następnie konieczne jest dodanie bazy danych i użytkownika.</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; CREATE USER &#39;akonadi&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;akonadi&#39;;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; CREATE DATABASE \`akonadi\`;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; GRANT ALL PRIVILEGES ON akonadi.* to &#39;akonadi&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;akonadi&#39;;</kbd></div>
</p>
<p>Następnie należy przywrócić nasz zrzut bazy akonadi za pomocą:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ mysql akonadi &lt; akonadi-backup.sql</kbd></div>
<p>Teraz pozostało nam już tylko uruchomić serwer akonadi za pomocą:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ akonadictl start</kbd></div>
<p>Jeśli spotkamy się z błędem:</p>
<pre><code class="language-mysql">Sql error: Table 'akonadi.SchemaVersionTable' doesn't exist QMYSQL: Unable to execute query
</code></pre>
<p>należy zmienić nazwy table naszej bazy na format <a href="http://en.wikipedia.org/wiki/CamelCase">CamelCase</a>.</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE schemaversiontable TO SchemaVersionTable;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE resourcetable TO ResourceTable;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE collectionattributetable TO CollectionAttributeTable;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE collectionmimetyperelation TO CollectionMimeTypeRelation;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE collectionpimitemrelation TO CollectionPimItemRelation;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE collectiontable TO CollectionTable;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE flagtable TO FlagTable;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE mimetypetable TO MimeTypeTable;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE parttable TO PartTable;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE pimitemflagrelation TO PimItemFlagRelation;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; RENAME TABLE pimitemtable TO PimItemTable;</kbd></div>
</p>
<p>Od teraz akonadi będzie korzystało z systemowej instancji mysql/mariadb.
Możliwe są dalsze <a href="http://cgbdx.wordpress.com/2011/07/21/how-to-setup-your-external-sql-server-for-akonadi/">optymalizacje</a> bazy danych, adekwatne do <a href="https://projects.kde.org/projects/kdesupport/akonadi/repository/revisions/master/entry/server/src/storage/mysql-global.conf">konfiguracji</a> używanej przez dedykowaną instancję bazy.</p>
<h3 id="amarok">Amarok</h3>
<p>Zatrzymujemy serwer mysql/mariadb:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i># systemctl stop mysql</kbd></div>
<p>Uruchamiamy serwer tylko z bazą amaroka:</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ cd ~/.kde4/share/apps/amarok</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ /usr/sbin/mysqld --defaults-file=\`pwd\`/my.cnf --default-storage-engine=MyISAM --datadir=\`pwd\`/mysqle --socket=\`pwd\`/sock --skip-grant-tables</kbd></div>
</p>
<p>Teraz pozostaje utworzyć zrzut bazy amaroka:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ mysqldump -S sock amarok &gt; amarok.sql</kbd></div>
<p>Po wykonaniu zrzuty możemy już zatrzymać serwer z bazą amarok i uruchomić serwer z konfiguracją globalną.</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i># systemctl start mysql</kbd></div>
<p>Następnie konieczne jest utworzenie bazy danych, do której zaimportujemy dane z zrzutu.
Tworzymy bazę i użytkownika:</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; CREATE USER &#39;amarok&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;amarok&#39;;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; CREATE DATABASE \`amarok\`;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; GRANT ALL PRIVILEGES ON amarok.* to &#39;amarok&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;amarok&#39;;</kbd></div>
</p>
<p>Importujemy zrzut do nowej bazy:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>$ mysql -u amarok -p amarok &lt; amarok.sql</kbd></div>
<p>Teraz pozostaje tylko skonfigurować amaroka, aby korzystał z zewnętrznej bazy danych. Dane muszą być oczywiście takie jakich użyliśmy przed chwilą.</p>
<p><img src="http://fisiu.github.io/img/2013/amarok-system-mariadb.png" alt="Konfiguracja amaroka i zewnętrznej bazy" /></p>
<h3 id="digikam">digiKam</h3>
<p>Zaczniemy od utworzenia 2 nowych baz dla digiKama i użytkownika dla tych baz.</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; CREATE USER &#39;digikam&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;digikam&#39;;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; CREATE DATABASE \`digikam\`;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; CREATE DATABASE \`thumbnails-digikam\`;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; GRANT ALL PRIVILEGES ON digikam.* to &#39;digikam&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;digikam&#39;;</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>&gt; GRANT ALL PRIVILEGES ON thumbnails-digikam.* to &#39;digikam&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;digikam&#39;;</kbd></div>
</p>
<p>Następnie korzystamy z wbudowanego w digiKam narzędzia do migracji bazy danych. W tym celu uruchamiamy digiKam i z menu <code>Ustawienienia</code> wybieramy <code>Migracja bazy danych</code>. W lewej części okna wybieramy sqlite i podajemy ścieżkę gdzie są aktualnie bazy przechowywane. Domyślnie jest to <code>~/Obrazy</code>. W prawej części okna uzupełniamy dane niezbędne do połączenia z bazą mysql/mariadb.</p>
<p><img src="http://fisiu.github.io/img/2013/digikam-system-mariadb.png" alt="Migracja sqlite do mariadb w digiKam" /></p>
<p>Pozostaje sprawdzić połączenie i zmigrować naszą bazę sqlite do mysql/mariadb przez naciśnięcie przycisku <code>Migruj -&gt;</code>.
Czas migracji zależny jest od wielkości naszej kolekcji oraz wydajności naszego sprzętu, zwłaszcza dysku twardego i procesora. Po migracji ostatnim krokiem jest skonfigurowanie digiKama, aby korzystał z bazy mysql/mariadb. Z menu <code>Ustawienia</code> wybieramy <code>Konfiguracja: digiKam...</code> i w sekcji <code>Baza danych</code> należy wybrać MySQL i uzupełnić dane połączenia.</p>
<p><img src="http://fisiu.github.io/img/2013/digikam-use-system-mariadb.png" alt="Konfiguracja mysql w digiKam" /></p>
<p>UWAGA! Jeśli z komputera korzysta kilku użytkowników, należy dla każdego użytkownika utworzyć osobną bazę. Jako nazwę dla baz, można użyć schematu <code>$USER_akonadi</code>, <code>$USER_amarok</code> i <code>$USER_digikam</code>.</p>
</description>
</item>
<item>
<title>Chromium i flash via PPAPI</title>
<link>http://fisiu.github.io/2013/03/chromium-i-flash-via-ppapi</link>
<pubDate>Sun, 03 Mar 2013 13:19:19 +0200</pubDate>
<guid>http://fisiu.github.io/2013/03/chromium-i-flash-via-ppapi</guid>
<description><p>Ady korzystać z najnowszego flasha w openSUSE konieczne jest zainstalowanie pakietu <code>chromium-pepper-flash</code>. Dostępny jest on w repozytorium <strong>packmana</strong>. Instalacja ogranicza się tylko do wykonania:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>zypper in chromium-pepper-flash</kbd></div>
<p>Jednak aby chromium współpracowało z nową wtyczką, konieczne jest dodanie odpowiednich flag do globalnego pliku konfiguracyjnego chromium. Jako root edytujemy plik <strong>/etc/default/chromium</strong> i dodajemy poniższe flagi. Jeśli już korzystamy z innych flag, wystarczy je dopisać na końcu.</p>
<pre><code class="language-config">CHROMIUM_FLAGS=&quot;--ppapi-flash-path=/usr/lib/chromium/PepperFlash/libpepflashplayer.so&quot;
</code></pre>
<p>Jeśli korzystamy z openSUSE w wersji x86_64, ścieżka do wtyczki zawiera <strong>lib64</strong> zamiast <strong>lib</strong>.</p>
<p>Po ponownym uruchomieniu przeglądarki chromium, odwiedzamy adres <code>chrome://plugins</code>. Szukamy wtyczek flasha i wyłączamy wersję NPAPI. Od teraz chromium będzie korzystało z nowego flasha, aktualnie w wersji 11.6. Dzięki temu, karta graficzna działająca na otwartym sterowniku radeon czy intel wykorzystywana jest do renderowania obrazu. Zapewne podobna sytuacja będzie mieć miejsce w przypadku korzystania z innego sprzętu i sterowników, choć sam na innych konfiguracjach tego nie testowałem.</p>
</description>
</item>
<item>
<title>Touchpad i mysz usb bez spięć</title>
<link>http://fisiu.github.io/2012/04/touchpad-i-mysz-usb-bez-spiec</link>
<pubDate>Wed, 25 Apr 2012 14:24:23 +0200</pubDate>
<guid>http://fisiu.github.io/2012/04/touchpad-i-mysz-usb-bez-spiec</guid>
<description><p>Często pracując na laptopie korzystam z zewnętrznej myszki na usb. Jednak po jej podłączeniu touchpad nadal działa a &ldquo;magiczny&rdquo; skrót do jego obsługi Fn + F3 <strong>*</strong> zdaje się być bezużyteczny. Z pomocą przychodzi nam udev i wszechstronność jego reguł. Aby wyłączyć touchpad po podłączeniu myszy do portu usb i automatycznie go włączyć po jej odłączeniu wystarczy, że utworzymy 2 proste reguły. Tworzymy plik <code>/etc/udev/rules.d/01-touchpad.rules</code> z zawartością zamieszczoną poniżej. W miejsce <code>$user</code> wstawiamy nazwę użytkownika.</p>
<pre><code class="language-bash">ACTION==&quot;add&quot;, SUBSYSTEM==&quot;input&quot;, KERNEL==&quot;mouse[1-9]&quot;, ENV{DISPLAY}=&quot;:0.0&quot;, ENV{XAUTHORITY}=&quot;/home/$user/.Xauthority&quot;, ENV{ID_CLASS}=&quot;mouse&quot;, RUN+=&quot;/usr/bin/synclient TouchpadOff=1&quot;
ACTION==&quot;remove&quot;, SUBSYSTEM==&quot;input&quot;, KERNEL==&quot;mouse[1-9]&quot;, ENV{DISPLAY}=&quot;:0.0&quot;, ENV{XAUTHORITY}=&quot;/home/$user/.Xauthority&quot;, ENV{ID_CLASS}=&quot;mouse&quot;, RUN+=&quot;/usr/bin/synclient TouchpadOff=0&quot;
</code></pre>
<p><strong>*</strong> Dell Vostro 3450 + Linux 3.3.2-1-desktop</p>
<p>Pozwoliłem sobie na edycję posta z bardzo prostego powodu. Człowiek pisze reguły udev zamiast uruchomić <code>synaptiks</code> i zaznaczyć żądaną opcję. Zdecydowanie szybciej i wygodniej. Powyższy plik można spokojnie usunąć :wink:</p>
<p><img src="http://fisiu.github.io/img/2012/synaptiks-with-mouse.png" alt="&quot;Konfiguracja touchpada w KDE&quot;" /></p>
</description>
</item>
<item>
<title>Priorytety fontów a fontconfig</title>
<link>http://fisiu.github.io/2012/01/priorytety-fontow-a-fontconfig</link>
<pubDate>Wed, 25 Jan 2012 22:22:22 +0200</pubDate>
<guid>http://fisiu.github.io/2012/01/priorytety-fontow-a-fontconfig</guid>
<description><p><a href="http://www.freedesktop.org/wiki/Software/fontconfig">Fontconfig</a> jest biblioteką służącą do konfiguracji dostępu do fontów. Cała konfiguracja jest przechowywana w plikach <a href="http://pl.wikipedia.org/wiki/XML">xml</a>, dzięki czemu są one czytelne i łatwe w modyfikacji. Wyczerpujące informacje można znaleźć w podręczniku man fonts-conf bądź bezpośrednio na <a href="http://www.freedesktop.org/software/fontconfig/fontconfig-user.html">stronie</a>.</p>
<p>Domyślna konfiguracja jest wystarczająca dla przeciętnego użytkownika jednak ma pewien mankament. Otóż rodzina fontów MS ma większy priorytet niż fonty domyślne. Dla przykładu, mając ustawione fonty z rodziny <strong>DejaVu Sans</strong> jako domyślne instalujemy font <strong>Consolas</strong> (dostępny np. w <a href="http://download.microsoft.com/download/E/6/7/E675FFFC-2A6D-4AB0-B3EB-27C9F8C8F696/PowerPointViewer.exe">PowerPointViewer</a> - wypakować za pomocą cabextract). Okazuje się, że po instalacji staje się on domyślnym fontem monospace. Czy aby tego chcieliśmy?</p>
<p>Jeśli nie chcemy aby zainstalowane fonty MS stały się domyślnymi, wystarczy zmienić konfigurację fontconfig. Tworzymy kopię zapasową i edytujemy plik:</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>su</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>cp /etc/fonts/suse-post-user.conf /etc/fonts/suse-post-user.conf.backup</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>vim /etc/fonts/suse-post-user.conf</kbd></div>
</p>
<p>Odszukujemy odpowiednie fonty które wg. nas nie powinny panoszyć się w systemie (np. Consolas, Verdana, etc.) i przenosimy je o kilka linii w dół. Po zapisaniu pliku pozostaje nam odświeżenie pamięci podręcznej fontconfig:</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>su</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>rm /var/cache/fontconfig/*</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>fc-cache -r</kbd></div>
</p>
<p>Od teraz, fonty którym obniżyliśmy priorytet nie będą &lsquo;ustawiać&rsquo; się jako domyślne choć nadal można będzie z nich korzystać.</p>
<p>Przykładowy plik konfiguracyjny z obniżonym priorytetem fontów MS: <script src="//gist.github.com/Fisiu/9403085.js"></script></p>
</description>
</item>
<item>
<title>Android i openSUSE 11.4</title>
<link>http://fisiu.github.io/2011/03/android-i-opensuse-11-4</link>
<pubDate>Thu, 24 Mar 2011 13:33:44 +0200</pubDate>
<guid>http://fisiu.github.io/2011/03/android-i-opensuse-11-4</guid>
<description><p>Po instalacji i konfiguracji openSUSE 11.4 okazało się, że po instalacji <a href="http://developer.android.com/sdk/index.html">SDK Androida</a> nie można połączyć się z zewnętrznym urządzeniem. Efekt jest taki:</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>adb devices</kbd></div>
<pre><code class="language-terminal">List of devices attached
???????????? no permissions
</code></pre>
<p>Rozwiązanie jest bardzo proste. Należy najpierw sprawdzić, jak identyfikuje się nasz sprzęt.</p>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>lsusb</kbd></div>
<pre><code class="language-terminal">Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0dda:2005 Integrated Circuit Solution, Inc. Datalux DLX-1611 16in1 Card Reader
Bus 001 Device 004: ID 04e8:681c Samsung Electronics Co., Ltd ← Moje urządzenie
</code></pre>
<p>Istotną informacją jest ID producenta, w moim wypadku <strong>04e8</strong>.
Teraz pozostało stworzyć odpowiednią regułę udev. Bez zagłębiania się w szczegóły reguł udev, można to zrobić tak:</p>
<p><div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>su</kbd></div>
<div class="kbd-wrapper"><kbd><i class="fa fa-keyboard-o prompt" aria-hidden="true"></i>echo &#39;SUBSYSTEM==&#34;usb&#34;, ATTRS{idVendor}==&#34;04e8&#34;, ATTRS{idProduct}==&#34;681c&#34;, MODE=&#34;0660&#34; GROUP=&#34;users&#34;&#39; &gt; /etc/udev/rules.d/51-android.rules</kbd></div>
</p>
<p>Od teraz urządzenie powinno już prawidłowo działać z naszym systemem.</p>
</description>
</item>
<item>
<title>Koniec spamowania ;)</title>
<link>http://fisiu.github.io/2011/02/koniec-spamowania-</link>
<pubDate>Fri, 25 Feb 2011 13:20:44 +0200</pubDate>
<guid>http://fisiu.github.io/2011/02/koniec-spamowania-</guid>
<description><p>Jako, że cały czas poszukiwałem wtyczki odpowiedzialnej za kolorowane składni w WordPressie dzisiaj przyszła pora na zmianę&hellip; Aktualnie ustawiłem <del>CodeColorer</del> SyntaxHighlighter. Wtyczka ta korzysta z tagów code a nie z pre tak jak poprzednia. W związku z tym zmodyfikowałem kilka postów aby zastosować style nowej wtyczki. Niestety spowodowało to zaśmiecenie planety openSUSE więc dalszych edycji zaniechałem.
Przepraszam czytelników za spam :)</p>
<p>W ramach przypomnienia, chciałem napisać o zmianie struktury repozytorium Packman. Wraz z <a href="http://lists.links2linux.de/pipermail/packman/2011-February/009422.html">aktualizacją OBS do 2.1</a> na serwerach Packmana zmieniono układ repozytoriów. Do tej pory dostępne było jedno repozytorium w którym znajdowały się wszystkie pakiety. Aktualnie trwa przebudowywanie wszystkich pakietów więc nowy układ repozytoriów nie jest jeszcze kompletny. Jednak w efekcie końcowym, Packman będzie miał 4 repozytoria:</p>
<ul>
<li>Essentials - podstawowe kodeki, MPlayer, SMPlayer</li>
<li>Multimedia - dodatkowe multimedia</li>
<li>Games - gry</li>
<li>Extra - wszystko co nie weszło w skład trzech powyższych</li>
</ul>
<p>Więc każdy będzie mógł dodać to co mu pasuje. Jednak jeśli ktoś będzie chciał mieć tylko jedno repozytorium zawierające wszystkie powyższe, dostępny będzie plik .repo. Tym sposobem będzie można korzystać z Packmana tak jak dotychczas.</p>
</description>
</item>
</channel>
</rss>