уторак, 27. новембар 2018.

О "narcizmu malih razlika" Radio Beograd 2

Radio emisija, koju sam slušao u auto, koja je imala interesantnu temu, kako se male razlike namerno naduvajaju kako bi sebe uveličao i razdvojio od sebi sličnih. Naravno govori se o SRB-CG-HR-BIH relacijama. Odnosno posledicama raspada YU. Nekako tema za 100 godina od nastanka iste. Najviše se pominjala Crna Gora, i to uvek u smislu da je Crna Gora frustrirana.
Svelo se, opet, na to da Crnogorci ne postoje. Pominjao se i Matija Bećković. I Podgorička skupština. A voditeljka je uvek svodila na grešku svih ostalih sem srba. Dok su gosti pokušali malo da ublaže ton.
Umoran sam od toga. Mnogo sam umoran.

четвртак, 6. септембар 2018.

linknx na debian računaru

1. Skinuti linknx i raspakovati ga u svoj folder
2. Skinuti pthsem i raspakovati ga u svoj folder
3. U folderu gde je raspakovan pthsem uraditi:
  • ./configure
  • make
  • make test
  • sudo make install
4. preći u folder gde se nalazi linkx:
  • sudo ldconfig
  • ./configure
  • make
  • sudo make install
  • make check
 Napomene:
Ukoliko ./configure prijavi grešku u vidu nedostajajuće biblioteke potrebno je instalirati i ponoviti.
ldconfig se instalira sa:
sudo apt-get install libc-bin

уторак, 17. јул 2018.

kurzori u pgSql skripti

Pošto uvek zaboravim kako ide kurzor u postgresu ostaviću sebi ovde realan primer koji se može pokrenuti u pgAdminu:


DO $$
declare
  _c record;
  _ident varchar;
begin
  for _c in
 select distinct nd.id,nd.fk_national, nd.nt_name, nd.nt_ident, nd.cd_national_phase, ldp.lk_desc, ass.fk_assembly, a.a_name
 from rbt.national_data nd
 inner join lookup_det ldp on ldp.id=nd.cd_national_phase
 inner join rbt.assembly_state ass on ass.fk_national=nd.fk_national and nd.cd_national_phase=ass.cd_national_phase
 inner join rbt.assembly a on ass.fk_assembly=a.id
 where nd.status=1003 and ass.status=1003
 order by 2, 5
  loop
 _ident := _c.nt_name || '-' || _c.lk_desc || '-' || _c.a_name;
 INSERT INTO rbt.heat_transfer_losses(created_by, htl_name, htl_ident, status, fk_assembly, fk_national_data, htl_value)
 VALUES (1, _ident, _ident, 1003, _c.fk_assembly, _c.id, 0);
 raise notice '%', _ident;
  end loop;
end $$;

уторак, 8. мај 2018.

php slim framework SwiftMailer SMTP bajpas

 Ukoliko je potrebno zaobići podešavanja koja su unešena prilikom instanciranja framework aplikacije moguće je promeniti SMTP podešavanja na ovaj način:

$transport = Swift_SmtpTransport::newInstance('nov host',465,'ssl')->
             setUsername('nov korisnik')->
             setPassword('nova lozinka');
$this->mailer = \Swift_Mailer::newInstance($transport);


уторак, 24. април 2018.

Promena naziva kolona i tabela u postgres sa velikim slovima

Da bi se izbeglo stalno navođenje kolona i tabela poput:
select "ID", "Glupava_kolona" form public."GlupavaTabela" ;
Kolone:
SELECT  'ALTER TABLE ' || quote_ident(c.table_schema) || '.'
  || quote_ident(c.table_name) || ' RENAME "' || c.column_name || '" TO ' || quote_ident(lower(c.column_name)) || ';' As ddlsql
  FROM information_schema.columns As c
  WHERE c.table_schema IN('public')
      AND c.column_name <> lower(c.column_name)
  ORDER BY c.table_schema, c.table_name, c.column_name;

Tabele:

SELECT 'ALTER TABLE ' || quote_ident(t.table_schema) || '.'
  || quote_ident(t.table_name) || ' RENAME TO ' || quote_ident(lower(t.table_name)) || ';' As ddlsql
  FROM information_schema.tables As t
  WHERE t.table_schema NOT IN('information_schema', 'pg_catalog') 
      AND t.table_name <> lower(t.table_name) 
  ORDER BY t.table_schema, t.table_name;


уторак, 17. април 2018.

Yii2 prikaz slike iz tabele baze u DetailView

Ukoliko je u tabeli baze sačuvana slika u base64 formatu onda se može lako prikazati u DetailView klasi na sledeći način:
...
            [
                'label' => 'Image',
                'value' => Html::img("data:image/png;base64,". $model->image, ['width' => 200, 'alt' => 'no image']),
                'format' => 'raw'
            ],

...

среда, 21. март 2018.

Bela kuga II

Neko me prati. Odgovor na moj originalni članak je tu. "Precednik" države je objavio niz stimulativnih mera za podsticaj rađanja i to uz paniku: izumiremo... do 2060. biće nas manje od 6M.Tragedija.
Pa sad ide 100k dinara, pa 10k mesečno sledećih 10 godina.
Ono što mene čudi je, da su podaci i projekcije poznate već od 2012-13. Šta se čekalo? Zašto se u sve to opet meša predsednik o kome imam nisko mišljenje? Baš, baš nisko....
Zabava su mi bile i razne feminiskinje sa floskulama, nismo mi mašine za rađanje i slično. Kao da ih neko tera da rađaju? Kao da je rađanje nešto što unižava?
Ja lično koliko sam mogao, toliko sam i uradio. Nije samo stvar ekonomije. Nego ja nemam snage, da više od dvoje dece naučim, da im zadam konture, usmerim prema onome što mislim da je ispravno i da poslužim kao stena od koje će se odgurnuti dalje.

понедељак, 12. март 2018.

Politika

Tradicija je čitanje Politike. Još je moj deda bio pretplatnik Politike, a otac hodao 10tak minuta do tog jednog specijalnog kioska u Kranju, da kupi nekada Politiku ekspres a nekada pravu Politiku.
I ja sam počeo da čitam istu kao gimnazijalac a i sada je kupujem - ali samo subotom, pošto brz tempo i puno posla ne ostavlja vrema za te "slow-motion" medije.
Sistem čitanje sam lagano menjao od čitanja otpozadi, sa  letimičnim pregledom sportskih vesti, i preskakanjem međunarodne politike i ekonomije, do sistema prvo prva strana i povezene stranice sa njom, pa onda čitanje odzada sa preskakanjem sporta, letimičnim pregledom feljtona, pošto kupujem samo jednom nedeljno, i poseban fokus na ekonomiju i međunarodne odnose.
Politika je, tako ispada, dobar barometar promena. Od radoznalog, veselog i nesputanog omladinca do stisnutog i zabrinutog aritmičnog matorca.
Tradicija je čitanje Politike u mojoj porodici i moj sin i kći počinju da čituckaju istu.

Možda je vreme da se tradicija prekine. 

петак, 9. март 2018.

pretvaranje sloja DGW->DFX u GeoJSON ili KML kroz primer

Potrebno je pretvoriti DGW fajl u DFX npr sa besplatnim DrafSight pa se onda istalira GDAL:
sudo apt-get install python-gdal
Potom se iskoristi sledeća naredba da se vidi slojevi:
ogrinfo -dialect SQLite -sql "select distinct LAYER  from entities" ime_fajla.dxf
Pa se izvuku podaci u GeoJSON ili KML:
ogr2ogr -f GeoJSON -dialect SQLite -sql "select * from entities where LAYER='IME_SLOJA'" ime_novo.json ime_fajla.dxf
ogr2ogr -f KML -dialect SQLite -sql "select * from entities where LAYER='IME_SLOJA'" ime_novo.kml ime_fajla.dxf

среда, 7. март 2018.

yii2 migrate praktičan primer kroz dodavanje kolone

Kreiranje migracionog fajla:
./yii migrate/create add_column_device_initial_state
U @app/console/migration za yii2 advanced će biti kreiran fajl, koji posle editovanja treba da izgleda ovako:
Komanda za primenu (odgovoriti sa yes):
 ./yii migrate
Komanda za poništavanje migracije:
 ./yii migrate/down

Više podataka na zvaničnoj dokumentaciji.

уторак, 27. фебруар 2018.

vi/vim read/only zbog zaboravljenog sudo

Često mi se desi greška sa sudovima tj zaboravim sudo ispred vima, za fajl nad kojim nemam prava, i naravno preostaje ili snimanje pod drugim fajlom ili neke copy/paste varijante, a za kraće promene, bogami, prekucavanje. Ali ne, više nikada!!! Kad na ":w!" kaže:

Can't  open file for writing
Press ENTER or type a command to continue

Ti lepo otkucaj:

:w !sudo tee %

I odgovori sa O i izađi sa ":q!".

Analiza za radoznale:

:w je upiši fajl
! izvrši komandu
sudo povišene privilegije
tee ime_fajla prekopiraj stdout u fajl i  prosledi na stdin
% trenutan fajla/bafer

Bonus tip je dodati u ~/.vimrc komandu Teew:

command Teew w !sudo tee % >/dev/null

петак, 23. фебруар 2018.

Primer sqlite i json

Sqlite ima ekstenziju za rad sa json podacima.

Preduslovi:

Da bi se koristio iterator json_each potrebno je napraviti tabelu:

CREATE TABLE json_tree(
    key ANY,             -- key for current element relative to its parent
    value ANY,           -- value for the current element
    type TEXT,           -- 'object','array','string','integer', etc.
    atom ANY,            -- value for primitive types, null for array & object
    id INTEGER           -- integer ID for this element
    parent INTEGER,      -- integer ID for the parent of this element
    fullkey TEXT,        -- full path describing the current element
    path TEXT,           -- path to the container of the current row
    json JSON HIDDEN,    -- 1st input parameter: the raw JSON
    root TEXT HIDDEN     -- 2nd input parameter: the PATH at which to start
);
 
Za .NET podršku (>ver 1.0.99.0) posle uspostavljene konekcije:
 
connection.EnableExtensions(True); connection.LoadExtension("full_path\SQLite.Interop.dll","sqlite3_json_init");


Napomena samome sebi za lazarus/typhon sa ZeosLib na Debianu ne treba load ekstenzije ali je dobro postaviti (može i direktno u samom IDE):

TZConnection.Properties['Undefined_Varchar_AsString_Length'] := 255; // ili više do 8K prema očekivani veličini

Kako bi se izbegao rad sa memo poljima.
 

Primer:

test tabela:

CREATE TABLE test (
      id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
     property_name TEXT NOT NULL UNIQUE, 
     property_value TEXT NOT NULL
);

json podatak obavezno okružiti sa json(jsonString) kao u primeru:

insert into test (property_name, property_value) values ('test',json('{
    "values": [{
        "name": "nv01",
        "label": "d",
        "unit": "cm",
        "value": "1",
        "title": "Thickness"
    }, {
        "name": "nv02",
        "label": "ρ",
        "unit": "kg/m3",
        "value": "1",
        "title": "Density"
    }, {
        "name": "nv03",
        "label": "c",
        "unit": "J/kgK",
        "value": "1",
        "title": " Thermal capacity"
    }, {
        "name": "nv04",
        "label": "λ",
        "unit": "W/mK",
        "value": "1",
        "title": "Thermal conductivity"
    }, {
        "name": "nv05",
        "label": "μ",
        "unit": "-",
        "value": "1",
        "title": "Relative vapor diffusion coefficient"
    }]
}'));

sql:

select 
  t.id,
  key,
  json_extract(value,'$.name') as name,
  json_extract(value,'$.label') as label,
  json_extract(value,'$.value') as value,
  json_extract(value,'$.unit') as unit,
  json_extract(value,'$.title') as title
from 
  test t,
  json_each(json_extract(t.property_value,'$.values'))
where 
  t.property_name='test'; 

rezultat:

1 0 nv01 d 1 cm Thickness
1 1 nv02 ρ 1 kg/m3 Density
1 2 nv03 c 1 J/kgK Thermal capacity
1 3 nv04 λ 1 W/mK Thermal conductivity
1 4 nv05 μ 1 - Relative vapor diffusion coefficient


среда, 21. фебруар 2018.

Bela kuga

Česta tematika ovih dana.

Bela kuga. Mortalitet veći od nataliteta. Nestajanje nacije. Uz napomenu da najčešće kombinuju nacija i bela kuga oni koji pišu, ili misle, sa pridevom srBska.

Lično smatram da je zemlji svejedno da li su na njoj Srbi ili bilo ko drugi. A da je problem... jeste.

I kako reagovati?

Kako izaći sa spiska zemalja čija se populacija evidentno i naglo smanjuje?

Sloganima naravno!

Stoga je Ministarstvo kulture i Savet za populacionu politiku brže bolje raspisalo nagradni konkurs za slogane, koji bi trebalo, da podstaknu rađanje u Srbiji.

Naravno potrošili su naše pare za uzaludan posao.

A zašto zaludan? Pa slogani si namenjeni mladima! Oni treba da prave i rađaju decu! A naši mladi pod uticajem trulog zapada, njihove dekadencije i razvrata, koriste sve više analni seks! A na taj način nema beba!!! Tako da dopunjem slogane i stavljam i pod GFDL licencu. Podvučeno žutom su izmene.

"Normalna ljubav i beba - prvo što nam treba!"
 "Rađaj, ne odgađaj i u pravu rupu gađaj"
"Mama - neću sama, tata - hoću brata"  <-- neizmenljiv samim tim neupotrebljiv
"Dosta reči, pazi da se žensko ne izbeči i nek zakmeči"
"Čuda se ne dešavaju. Čuda se rađaju al' aši-maši-omaši nek se ne nadaju"
"Da Nek se deca rađaju i lepe stvari događaju, dupeta ne smeju da stradaju!".

A za zaključak neka naši mudraci malo stave prst na čelo! Mislim da bi bolje pomogao veći dečji dodatak, bolji vrtići, stvarno besplatno školstvo. Možda i 15 godina radnog staža za 3+. 

Onako nabrojah i ne trebaju ni slogani ni konkurs!

уторак, 16. јануар 2018.

Ruska faza

Poslednjih  mesec ili dva sam u Ruskoj fazi. Po mom iskustvu skoro svi sa ovog našeg "regiona" imaju svoje mišljenje o Rusiji kao majci ili zloj maćehi. Kod mene se to menja iz dana u dan. Pošto mi ideja panslavizma nije strana, a smatram da Rusi, kao najbrojniji slavenski narod, imaju moralnu obavezu da podrže takvu ideju moj osećaj ide od majke preko dobre maćehe do loše majke i zle maćehe i unazad, zavisno od toga kako protumačim vesti iz ili oko Rusije.
U jednom od tih mojih razmišljanja, šta bi bilo kad bi bilo, kako bi bilo lepo imati jedan slavenski jezik shvatih da u stvari ja ne znam najveći slavenski jezik.
Tako da (android) telefon u ruke i instaliranje  aplikacija, pretraga po dečjim knjiga za Orbitom i naravno pretraga za neku tv seriju. Slušanje muzike se podrazumeva.
Za sada posle 22 dana svakodnevnog učenja i slušanja, prosečno 30 minuta, imam rečnik od nekoliko stotina reči i uspevam nekako da pratim seriju mada sam odgledao samo četiri (nemam vremena) epizode i obradio tri lekcije u knjizi (još su sličice i azbuka). Ne razumem sve ali procenjujem da mi bar trećinu jasna.
Na blogu ću pisati o napretku ili pomankanju istoga.