<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
 xmlns:blogChannel="http://backend.userland.com/blogChannelModule"
>

<channel>
<title><![CDATA[Konverzija podataka: alati weblog]]></title>
<link>https://saturn.ffzg.hr/konverzija/index.cgi?action=weblog_display;category=alati%20weblog</link>
<description></description>
<pubDate>Mon, 03 Mar 2008 22:13:49 -0000</pubDate>
<webMaster>root@saturn.ffzg.hr</webMaster>
<generator>Socialtext Workspace v2.19.0.2</generator>

<item>
<title><![CDATA[Jednostavna detekcija krivih podataka u poljima]]></title>
<link>https://saturn.ffzg.hr/konverzija/index.cgi?jednostavna_detekcija_krivih_podataka_u_poljima</link>
<description><![CDATA[<div>Creator: Marijana Glavica</div><hr/><div>Tags: Alati Weblog</div><hr/><div class="wiki">
<p>
Najprije treba napraviti dump svih podataka. Za to postoji skripta <tt>dump_libri.sh</tt> u kojoj su naredbe za dump podataka za svaku pojedinačnu knjižnicu, npr. za anglistiku:</p>
<pre>
dump_isisdb.pl /backup/isis_backup/A105-1/isisdata/latest/LIBRI/LIBRI &gt; /data/isis_data/an/dump.fflibri
</pre>
<br /><p>
na taj smo dobili tekstualne datoteke koje možemo dalje procesirati.</p>
<p>
Ovdje ćemo navesti linux shell komande uz pomoć kojih možemo dobiti upotrebljive i jednostavne ispise podataka:</p>
<h3 id="detekcija_krivih_datuma_unosa">Detekcija krivih datuma unosa</h3>
<p>
naredbom</p>
<pre>
grep ^994.*^c /data/isis_data/*/dump.fflibri | sed -e 's/.*^c\(.*\)/\1/g' | sort -nr | uniq -c
</pre>
<br /><p>
dobiva se popsi svih podataka u polju 994^c</p>
<p>
Rezultat spremimo u datoteku, izbrišemo sve slučajeve koji su dobri, a ostavimo krive i snimimo to u tablicu krivi_datum_unosa.xls</p>
<p>
U conf/mjesec.yml dodamo ove linije:</p>
<p>
za tablicu s greskama:</p>
<pre>
  datumi:
    name: 'Nevaljali datumi'
    input:
      - name: tablica                                                                                                          
        type: excel
        path: '/data/isis_data/greske/datum_unosa.xls'
        encoding: 'windows-1250'
        normalize:
          - path: 'conf/normalize/common.pl'
</pre>
<br /><p>
i za svaku pojedinačnu bazu:</p>
<pre>
  ffiz:
    name: 'Informacijske znanosti, Filozofski fakultet u Zagrebu'
    input:
      - name: libri
        type: isis
        path: '/backup/isis_backup/A129-2/isisdata/latest/LIBRI/LIBRI'
        encoding: 'cp852'
        normalize:
          - path: 'conf/normalize/report-sorted-txt.pl'
    output:
      - module: 'Sorted'
        path: 'out/report/mfn/iz/'
</pre>
<br /><p>
u normalizacijskoj datoteci treba stajati ovaj kod:</p>
<pre>
my $datum =
        lookup(
                sub { 1 },
                'datumi','tablica',
                sub { rec('A') },
                sub { rec('994','c') } 
        );
    
if ( $datum ) {
        sorted('mfn s krivim datumom',
                join_with(' - ',
                        prefix('MFN ',
                                rec('000'),
                        ),
                        rec('994','c'),                                                                     
                )                                                                                                              
        );
}


</pre>
<br /><h3 id="detekcija_krivih_godina">Detekcija krivih godina</h3>
<p>
Naredbom:</p>
<pre>
grep ^210.*^d /data/isis_data/*/dump.fflibri | sed -e 's/.*^d\(.*\)/\1/g' | sort -nr | uniq -c
</pre>
<br /><p>
dobivamo popis svih podataka u polju 210^d</p>
<p>
ostatak postupka isti je kao i za datume, s odgovarajućim konfiguracijskim parametrima</p>
<h3 id="detekcija_krivih_isbn_ova">Detekcija krivih ISBN-ova</h3>
</div>
]]></description>
<author>Marijana Glavica</author>
<category>Alati Weblog</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/konverzija/index.cgi?jednostavna_detekcija_krivih_podataka_u_poljima</guid>
<pubDate>Mon, 03 Mar 2008 22:13:49 -0000</pubDate>
</item>
<item>
<title><![CDATA[Kombinacije i redosljed potpolja]]></title>
<link>https://saturn.ffzg.hr/konverzija/index.cgi?kombinacije_i_redosljed_potpolja</link>
<description><![CDATA[<div>Creator: Marijana Glavica</div><hr/><div>Tags: Alati Weblog</div><hr/><div class="wiki">
<p>
Prije konverzije, važno je najprije se upoznati sa stanjem u originalnim zapisima. U ovom slučaju, zanima nas redoslijed korištenih potpolja u nekom polju, sa ili bez interponkcija.</p>
<p>
To ćemo u webpacu2 učiniti ovako:</p>
<p>
U `conf/hostname.yml' popisati baze iz kojih treba izvući izvještaj. Moguće je gledati u više baza odjednom.</p>
<pre>
  ffge:
    name: 'Germanistika, Filozofski fakultet u Zagrebu'
    input:
      - name: libri
        type: isis
        path: '/backup/isis_backup/novi-40166/isisdata/latest/LIBRI/LIBRI'
        encoding: 'cp852'
</pre>
<br /><p>
U istoj datoteci se definiraju i delimiteri za validaciju. Drugim riječima, tu možemo popisati interpunkcije korištene u zapisima.</p>
<pre>
  delimiters:
    - ' ; '
    - ' : '
    - ' / '
    - ' = '
</pre>
<br /><p>
Ako želimo dobiti samo popis potpolja, bez delimitera:</p>
<pre>
  delimiters:
    - ''
</pre>
<br /><p>
Nekad te interpunkcije treba pretvoriti u potpolja, nekad treba potpolja treba pretvoriti u interpunkcije.</p>
<p>
Za dobivanje izvjestaja pokrećemo komandu:</p>
<p>
<tt>./run.pl --validate-delimiters conf/validate/delimiters/baza.txt</tt></p>
</div>
]]></description>
<author>Marijana Glavica</author>
<category>Alati Weblog</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/konverzija/index.cgi?kombinacije_i_redosljed_potpolja</guid>
<pubDate>Sat, 23 Feb 2008 14:47:02 -0000</pubDate>
</item>
<item>
<title><![CDATA[webpac2 i DBF konverzija]]></title>
<link>https://saturn.ffzg.hr/konverzija/index.cgi?webpac2_i_dbf_konverzija</link>
<description><![CDATA[<div>Creator: Marijana Glavica</div><hr/><div>Tags: Alati Weblog, DBF, Email, Konverzija</div><hr/><div class="wiki">
<p>
Iz programa SAND (za obradu časopisa) moguće je dobiti podatke u formatu DBF.</p>
<p>
Primjer minimalne konfiguracije u conf/hostname.yml:</p>
<pre>
  sand:
    name: 'SAND'
    input:
      name: casopisi
      type: dbf
      path: 't/data/cas2000.dbf'
      normalize:
        path: 'conf/normalize/common.pl'
        mapping_path: 'conf/input/dbf/cas2000.yml'
</pre>
<br /><p>
<tt>conf/normalize/common.pl</tt> - pravila za konverziju u željeni izlazni format</p>
<p>
<tt>conf/input/dbf/cas2000.yml</tt> - mapiranje polja iz DBF-a u MARC tagove</p>
</div>
]]></description>
<author>Marijana Glavica</author>
<category>Alati Weblog, DBF, Email, Konverzija</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/konverzija/index.cgi?webpac2_i_dbf_konverzija</guid>
<pubDate>Sat, 23 Feb 2008 12:56:11 -0000</pubDate>
</item>
<item>
<title><![CDATA[podpolja i interpunkcije prema redosljedu korištenja]]></title>
<link>https://saturn.ffzg.hr/konverzija/index.cgi?podpolja_i_interpunkcije_prema_redosljedu_kori%C5%A1tenja</link>
<description><![CDATA[<div>Creator: Marijana Glavica</div><hr/><div>Tags: Alati Weblog</div><hr/><div class="wiki">
<p>
Zapravo nam nije dovoljno da pogledamo koja podpolja su korištena u bazi u kojem redoslijedu, već želimo vidjeti i interpunkcije:</p>
<p>
<tt>grep ^200 dump.libri | sed -e 's/\(\^[a-z]\)[^\^:;/]*/ \1/g' -e 's/\([:;/]\)[^\^:;/]*/ \1/g' | sort | uniq -c | sort -nr</tt></p>
<p>
rezultat:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;">Frekv.</td>
<td style="border: 1px solid black;padding: .2em;">polje</td>
<td style="border: 1px solid black;padding: .2em;">redosljed pp</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2305</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">1882</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">388</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^f^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">318</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^f^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">145</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">144</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e : ^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">60</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">22</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e : ^f^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">17</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^f^g ;</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">17</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^f^g ;</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">17</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^e^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">11</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e :</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">10</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">10</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">9</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e : : ^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^f ;</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">6</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^e</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">6</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^d^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">5</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a : ^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">5</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e / ^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">5</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e : : : ^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">...</td>
<td style="border: 1px solid black;padding: .2em;">...</td>
<td style="border: 1px solid black;padding: .2em;">...</td>
</tr>
</table>
</div>
]]></description>
<author>Marijana Glavica</author>
<category>Alati Weblog</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/konverzija/index.cgi?podpolja_i_interpunkcije_prema_redosljedu_kori%C5%A1tenja</guid>
<pubDate>Sun, 30 Sep 2007 12:22:55 -0000</pubDate>
</item>
<item>
<title><![CDATA[shell komande i malo perla za zgodne statistike]]></title>
<link>https://saturn.ffzg.hr/konverzija/index.cgi?shell_komande_i_malo_perla_za_zgodne_statistike</link>
<description><![CDATA[<div>Creator: Marijana Glavica</div><hr/><div>Tags: Alati Weblog</div><hr/><div class="wiki">
<p>
Trebamo u podacima vidjeti koja se točno podpolja nalaze u pojedinim poljima. Podaci su text dump iz ISIS datoteke.</p>
<p>
Za elegantno rješenje, ne moramo se maknuti iz Linux shell-a:</p>
<p>
Dovoljna je ova naredba:</p>
<p>
<tt>grep ^200 dump.libri | sed 's/\(\^[a-z]\)[^\^]*/\1/g' | sort | uniq -c | sort -rn</tt></p>
<p>
za sljedeći rezultat:</p>
<table style="border-collapse: collapse;" class="formatter_table">
<tr>
<td style="border: 1px solid black;padding: .2em;">Frekv.</td>
<td style="border: 1px solid black;padding: .2em;">polje</td>
<td style="border: 1px solid black;padding: .2em;">redosljed pp</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2319</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2064</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">409</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^f^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">372</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^f^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">163</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">64</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">17</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^e^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">12</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">10</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">7</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^d^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">6</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^e</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">5</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^e^f^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">4</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^f^g^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">4</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^e^e^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">3</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^f^v</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">3</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^d^e^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^g^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^f^g^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^e^e^g</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^d^e^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^b^f</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">2</td>
<td style="border: 1px solid black;padding: .2em;">200</td>
<td style="border: 1px solid black;padding: .2em;">^a^b</td>
</tr>
<tr>
<td style="border: 1px solid black;padding: .2em;">...</td>
<td style="border: 1px solid black;padding: .2em;">...</td>
<td style="border: 1px solid black;padding: .2em;">...</td>
</tr>
</table>
<br /><p>
Za istu stvar moguće je iskoristiti i malo perla:</p>
<p>
<tt>#!/usr/bin/perl</tt><br />
<tt>while(&lt;&gt;) {</tt><br />
<tt>chomp;</tt><br />
<tt>s/(\^[a-z])[^\^]*/$1/g;</tt><br />
<tt>print &quot;$_\n&quot;;</tt><br />
<tt>}</tt></p>
<p>
onda to izgleda ovako:</p>
<p>
<tt>grep ^200 dump.libri | ./filter.pl | sort | uniq -c | sort -rn</tt></p>
</div>
]]></description>
<author>Marijana Glavica</author>
<category>Alati Weblog</category>
<guid isPermaLink="true">https://saturn.ffzg.hr/konverzija/index.cgi?shell_komande_i_malo_perla_za_zgodne_statistike</guid>
<pubDate>Mon, 02 Jul 2007 18:45:03 -0000</pubDate>
</item>
</channel>
</rss>