Atvirasis kodas tinklaraščiuose

May 21 d.

Remigijus Jarmalavičius

Paveiksliukai ir ikonėlės el. laiškuose

Turbūt kiekvienam web programuotojui ne kartą yra tekę siųsti paveikslėlius, nuotraukas ar ikonėles el. laiškuose. Jokia čia naujiena.

Deja, pats paveiksliukų procesas vistiek yra labai problematiškas, nes yra trys būdai kaip paveiksliukai gali būti išsiųsti ir kiekvienas turi savo trūkumų.

Paveiksliukai iš interneto

Pats paprasčiausias ir lengviausias būdas, tai dėti el. laiškuose nuotraukas su nuorodomis į internetą:

<img src="http://example.com/nuotrauka.png" /> 

Paprasčiausias būdas turi daugybę trūkumų:

  • Paveiksliukams būtinai turite nurodyti protokolą (HTTP arba HTTPS) ir domeno adresą.
  • Paveiksliukai visada turi būti prieinami. Jeigu kažkas laišką žiūrės iš archyvų, tarkime po kelių metų, turite užtikrinti, kad tas kelias vis dar pasiekiamas.
  • Gmail ir kiti pašto klientai pirmiausiai paklaus laiško skaitytojo ar rodyti nuotraukas. Šis tikrinimas daromas, nes paveiksliukuose dažnai slepiami „tracking pikseliai“ arba kitos blogybės.

Šį būdą rekomenduočiau mažiausiai.

Paveiksliukai iš prisegtuko

Kitas dažnas būdas siųsti media yra prikabinant ją prie laiško, kaip prisegtuką.

Toks būdas turi tokius trūkumus:

  • Skaitytojas laiškų sąraše mato, kad el. laiške yra prisegtų failų, kas nėra korektiška.
  • Turite būti atsargūs kaip tuos failus vadinate, nes galite nepraeiti pro el. pašto filtravimo programą.
  • Tai papildomas vargas jeigu susirašinėjate toliau. Kad laiško istorija būtų tvarkinga, turėsite tuos paveiksliukus persiųsti ir kitiems. Jeigu nepersiųsite, tai kažkas kam rodote laišką gali nematyti ekrano nuotraukų ar kitų svarbių dalykų kurie buvo originaliame laiške.

Paveiksliukai iš base64 reikšmės

Tai labai populiarus būdas visą nuotraukos turinį užkoduoti ir prikabinti standartiniais būdais prie laiško:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADI...." /> 

Tokiu būdu laimėsite:

  • Skaitytojas nematys, kad el. laiške yra prisegtukų.
  • Persiunčiant laiškus jie - neišsikraipys.
  • Šiuo būdu HTML elementai taip pat gali būti fonui naudojami (kaip background-image: ...).
  • Nereikia rūpintis paveiksliukų atnaujinimu kai naršyklė ar pašto klientas juos užkešuoja.

Nors internete base64 nuotraukų konvertavimų yra be galo daug, bet ar žinojote, kad viską galite padaryti standartinėmis Linux komandomis?

echo "data:image/png;base64,$(base64 -w 0 ikonele.png)" 

Šis būdas taip pat veiks ir Macos.

Tiesa, trūkumų taip pat yra:

  • Sunku suprasti koks paveiksliukas ir kurioje vietoje panaudotas (nes nėra failo vardo).
  • Visokie redaktoriai gali supykti už itin ilgas eilutes, jeigu paveiksliukas sveria tikrai daug.

Bet ignoruoti šias bėdas verta, nes klientai turės korektišką media.

2018 m. May 21 d. 0:00

May 14 d.

Remigijus Jarmalavičius

Knygos „Automate it!“ apžvalga

Nors mano tinklaraštis labiau skirtas patyrusiems programuotojams ir retai kada rašau profesijos pradedančiųjų temomis, bet šį kartą tiesiog nesusilaikiau. Jeigu tik man kas būtų parodęs šią knygą prieš 10 metų! Gaila, tada ji nebuvo išleista.

Humble Book Bundle kartu su kitomis knygomis įsigijau - „Automate it!“ (aut. Chetan Giridhar).

Knygos „Automate it!“ viršelis


Kam skirta knyga

Mokamųjų resursų, taip vadinamųjų „tutorial“, internete rasite pilna. Tiek knygų pavidalu, tiek interaktyvių interneto svetainių, tiek mokomųjų video.

Bet va knygų su darbo eigomis, tikro gyvenimo pavyzdžiais ir tikra apčiuopiama nauda - surasti bus sunku.

Čia - viena jų. Iš esmės užtenka vos paviršutiniškai mokėti Python programavimo kalbą (nes visos problemos sprendžiamos su ja) ir galima kapstyti gilyn!

Puiki knyga ruoštis Python darbo pokalbiui

Laukia pirmojo darbo paieška? Ši knyga turbūt pirmoji kuri turėtų būti atversta.

Tokio pokalbio metu, neturint didelio portfolio į daug klausimų gali tekti atsakyti neiginiais: „nemoku“, „nebandžiau“, „neteko“. Perskaičius ir kiek susipažinus, galima to išvengti.

Žinoma, ši knyga nėra kažkoks garantas, kad Jus priims. Per darbo pokalbį būtina „save parduoti“. Todėl kuo daugiau paliesite tikro gyvenimo IT problemų, tuo didesni šansai gauti darbą. O visa kita - per 10 metų išmoksite. Svarbiausia, kad priimtų.

Ką galima rasti knygoje ir ko išmokti?

Gerai, glausčiai ir nenuobodžiai aprašyta knyga Jus supažindins su tokiais dalykais:

  • Web scraping’u - duomenų iš interneto parsisiuntimu ir analizavimu.
  • Resursų iš interneto parsisiuntimu (pavyzdžiui nuotraukų iš „Google Images“).
  • REST API (pavyzdžiams naudoti tokie kaip Gihub REST API).
  • Interneto puslapių naršymas su Selenium.
  • Darbas su CSV ir Excel failais. Duomenų pildymas, formulės, skaitymas, grafikų darymas.
  • Darbas su PDF failais (kūrimas ir skaitymas).
  • SMS siuntimai ir balso pranešimai per Twilio sistemą.
  • Itin populiarių Python bibliotekų, kaip Flask ar Tornado, praktiniai panaudojimai.
  • El. laiškų siuntimas ir skaitymas iš Gmail.
  • SMTP, TXT/HTML el. laiškų formatų ir kitų dalykų / problemų paaiškinimai.
  • PowerPoint prezentacijų kūrimas (verslo ataskaitoms rengti).
  • Savo API kūrimas.
  • Jinja2 šablonų sistema.
  • Twitter aplikacijos kūrimas automatiniam žinučių rašymui.
  • Zapier pajungimas į automatizavimo procesą.
  • Bot’ų kūrimas.
  • Darbas su paveiksliukais (pvz. vandens ženklo kūrimas).
  • Veidų atpažinimas.
  • Duomenų analizė ir vizualizavimas su Pandas biblioteka.
  • Laiko juostos.

Turinio tikrai daug. Per daugiau nei 10 programavimo metų su visomis išvardintomis problemomis yra tekę dirbti. Ir turbūt retas web programuotojas tokių pačių dalykų išvengė.

Man patiko, kad pavyzdžiai gana šiuolaikiški ir naudojami dalykai yra tokie kuriuos tikrai panaudosi gavęs darbą rimtoje įmonėje.

Taigi, 10 balų, tikrai rekomenduočiau!

2018 m. May 14 d. 0:00

May 10 d.

opensuse.lt

Jau greitai pasirodys openSUSE Leap 15.0. Kviečiame versti į lietuvių kalbą

Naujoji openSUSE Leap 15.0 versija pasirodys 2018 m. gegužės 25 d. [1]. Nors sistemos pagrindas gerokai atnaujinamas nuo openSUSE Leap 42 serijos, tačiau eiliniai naudotojai neturėtų pajusti drastiškų pokyčių atsinaujindami. Parsisiųsti beta versiją galite iš https://software.opensuse.org/distributions/testing .

Dėl įvairių pakeitimų openSUSE sistemoje tenka iš naujo išversti kai kuriuos ekrane matomus pranešimus. Tačiau mes negalime dabar tam skirti laiko, tad labai prašome jūsų išbandžius beta versiją neišverstas vietas išversti per https://l10n.opensuse.org/ . Versti gali kiekvienas, turintis SUSE paskyrą (ją susikurti galite nemokamai čia). Į openSUSE Leap 15.0 galutinį atvaizdį nauji vertimai gali patekti, jei spėsite juos pateikti iki gegužės 13 d. 

Daugiau informacijos:

[1] https://news.opensuse.org/2018/04/18/opensuse-leap-15-release-scheduled-for-may-25/

 

2018 m. May 10 d. 5:26

Remigijus Jarmalavičius

Statiniai puslapiai su Docker

Šių laikų IT tendencija - mikroservisai. Todėl net paprasčiausius projektus bandoma konteinerizuoti. Net statinius projektus.

Kaip tik tokie yra visi mano projektai. Ne išimtis ir šis tinklaraštis.

Konteinerizuotus projektus lengviau deploy’inti, monitorinti, daryti atsargines kopijas ir svarbiausia priežastis - plėsti (angl. „scale“).

Paversti savo statinę svetainę į konteinerizuotą mikroservisą yra itin lengva kai tai darai su Docker.

Įsivaizduokime, kad mūsų projektas guli src kataloge. Tuomet kataloge virš jo susikurkime Dockerfile:

FROM nginx ENV APP_HOME /usr/share/nginx/html WORKDIR $APP_HOME COPY src $APP_HOME EXPOSE 80 

Tiek nedaug reikia nurodyti nginx, kad mūsų projekto katalogą įkeltų į tipinę nginx vietą - /usr/share/nginx/html. Pagal nutylėjimą nginx rodys viską iš šio katalogo (paveiksliukus, media, HTML ir pan.).

Viską galėtume gerokai sutrumpinti, pavyzdžiui neturėti $APP_HOME env kintamojo kūrimo - bet tada teks ilgą kelią rašyti kelis kartus. Todėl vadovaukitės DRY pricipu.

Galima neturėti WORKDIR $APP_HOME sakinio, bet jis labai gelbėja, kada norite prisijungti prie Docker konteinerio ir pažiūrėti ar yra ten kažkokių problemų. Tuomet komanda docker exec -it svetaine bash Jus nukels tiesiai į /usr/share/nginx/html - sutaupysite laiko.

Sukurti atvaizdą galima su:

docker build -t svetaine . 

O pasinaudoti juo taip:

docker run -p 8001:80 svetaine 

Ir naršyklėje surinkę adresą http://127.0.0.1:8001 matysite savo svetainės turinį.

Tą patį galima padaryti ir produkcinėje sistemoje.

Tuo pačiu tai dar viena puiki alternatyva Python SimpleHTTPServer arba Node http-server moduliui.

2018 m. May 10 d. 0:00

May 3 d.

Remigijus Jarmalavičius

Geriausi patobulinimai Django 2 versijoje

Django programuotoju tapau dar 2009 metais, kada kūrėjai turėjo tik 1.1 platformos versiją. Tada, be eilinio ir dar vieno framework’o pasaulyje, Django išsiskyrė puikiu scaffolding’u - Django administracija. Aišku, per kelis metus konkurenciniai framework’ai šį privalumą tiesiog „suvalgė“.

Per devynerius metus pasikeitimų šiame framework’e įvyko tikrai daug. 2017 metų gruodį buvo išleista dar viena versija, pagrindinė, Django 2.0. Po keletos mėnesių migravau į šią versiją projektą iš 1.11 (kurį pradėjau nuo 1.4 versijos) į Django 2.0.

Po šiokios tokios praktikos išrinkau geriausius šios versijos patobulinimus.

Python 3 palaikymas

Net ne palaikymas, o privalomybė. Nauja Django versija veikia tik su Python 3.4 arba aukštesnėmis versijomis.

Tokiose situacijose labai praverčia konteinerizavimai - man užteko Dockerfile pakeisti Python versiją ir viską supushint’i į produkcinę sistemą.

Išties gera naujovė. Kiek matau iš operacinių sistemų priklausomybių ir atviro kodo projektų - Python 2 labai sunku atsikratyti, nors praėjo daug metų kada Python 3 buvo išleistas.

Draugiška mobiliems adminisracija

Šio pakeitimo labai laukiau ne vienerius metus. Yra tekę ne vieną kartą dėti ant Django administracijos temą, kuri paverčia administraciją draugiška mobiliems įrenginiams. Dabar to daryti nereikės, viskas - standartiniais būdais.

Django 2.0 su mobilios versijos palaikymu


Draugiškas adresų rašymas

Regexp’as adresuose man atrodė kaip vienas nepraktiškiausių dalykų Django framework’e.

Dabar adresus galima aprašinėti gana gražiu formatu:

# senas variantas: url(r'^straipsniai/(?P<year>[0-9]{4})/$', views.artcles), # naujas variantas: path('straipsniai/<int:year>/', views.artcles), 

Autocomplete laukai administracijoje

Tai itin patogu kada kažkoks turinys yra grupėse ir ieškote grupės pavadinimo. Pavyzdžiui prekių grupės, puslapių kategorijos, naudotojų tipai.

Daugiau apie autocomplete laukus Django dokumentacijoje.

Metodas values_list()

Šio patobulinimo turbūt laukiau labiausiai.

Dažnai iš duomenų bazės reikia sąrašo tik su tam tikrais laukais. Rails’ai turi pluck komandą - tai čia praktiškai ta pati Django alternatyva.

Pavyzdžiui jeigu <select> HTML elementui ruošite duomenis iš duomenų bazės, tai juos galite paimti tokiu formatu:

>>> Modelis.objects.value_list('id', 'year') <QuerySet [(1, '2016'), (2, '2017'), ...]> 

Turbūt dažniausiai naudojama mano operacija programuojant.

Puslapiavimas kai išeinama iš rėžių

Anksčiau tokius dalykus darydavau rankiniu būdu: žinodamas kiek yra puslapių patikrindavau ar norimas puslapis nėra už jo ribų ar prieš (dabartinis puslapis didesnis už 0, bet mažesnis arba lygus viso puslapių skaičiui).

Dabar Paginator.get_page() gali „išmesti“ klaidą EmptyPage ir informuoti kada tai įvyksta.

Pavardė gali būti 150 simbolių

Kvaila, bet daug kartų teko taisyti šį limitą, kai standartinių 30 simbolių nepakakdavo. Dabar, net 150 simbolių!

Daugiau pakeitimų

Čia tikrai ne viskas. Čia tik geriausi, mano manymu, patobulinimai.

Pats patobulinimų sąrašas įspūdingai ilgas, jį galite rasti Django oficialiame pranešime.

Į ką visada verta atkreipti dėmesį, tai į žemiausiai aprašytą skyrelį „Features removed in 2.0“. Beveik visada tokiuose skyriuose rasdavau ką nors ką naudodavau projekte. O tai labai praverčia, prieš migruojant versiją.

2018 m. May 3 d. 0:00

April 28 d.

Remigijus Jarmalavičius

Kompiuterių administravimas su Ansible

Būdamas tinklapių programuotojas (pagrinde) jau porą metų neturiu savo kompiuteriuose LAMP stack’o (taip vadinamas derinys su programine įranga: apache + php + mysql). Ne dėl to, kad PHP programuoju retai, bet tiesiog naujosios technologijos pakeitė požiūrį į kaip turi būti konfigūruojama darbo aplinka.

Iš esmės LAMP’ą pakeitė Docker. Tinklaraštyje galima rasti straipsnių kaip pasikeisti LAMP’ą į Docker arba kaip kai kuriuos elementus pakeisti su juo, pavyzdžiui rašiau apie Mysql paleidimą su Docker.

Tačiau anksčiau ar vėliau kiekvienas IT žmogus susidurs su ta pačia problema kurią reikės išspręsti - naujas kompiuteris ar serveris.

Man, turinčiam 4 kompiuterius ir 3 serverius diegimas ir konfigūravimas rankiniu būdu užimtų per daug laiko.

Todėl jau labai seniai sistemų automatizavimą atlieku su Ansible. Kaip visada tokias konfigūracijas būtinai paviešinu savo Github profilyje. Taip ir Ansible konfigūracijas galima rasti Github platformoje.

Iš esmės turint viename kompiuteryje Ansible paketus aš galiu pilnai sutvarkyti kitas mašinas.

Ansible diegimas

Ansible įdiegti galima iš paketų valdiklio. Atitinkamai viena iš šių komandų:

$ sudo apt-get install ansible # Ubuntu $ sudo aptitude install ansible # Debian $ sudo yum install ansible # Centos $ sudo dnf install ansible # Fedora $ sudo brew install ansible # Jeigu esi turtingas 

Ko gali reikėti naujuose serveriuose / kompiuteriuose

Sąrašas būtų begalinis, todėl pademonstruosiu kaip atrodo realus diegimas / konfigūravimas.

Jeigu dirbčiau su diagiakalbyste reikalaujančiais projektais, tai norėčiau visų kalbų sistemoje palaikymo. Jas įdiegčiau taip:

ansible-playbook -i 12.34.54.78, locales.yml 

Kur 12.34.54.78 yra IP adresas. Kablelis reikalingas atskirti „inventorių“ nuo mašinos adreso. Apie tai čia nerašysiu - reikėtų atskiro straipsnio. Komandos gale paduodu konfigūracinį failą kurį esu išdirbęs ir kuriame yra instrukcijos surašytos lokalių diegimui, priklausomai nuo to kokią OS turite.

Priminsiu, kad šį ir kitus failus galite rasti mano Ansible Github repozitorijoje.

Praktiniai pavyzdžiai

Noriu, kad nauja mašina turėtų mano namų katalogo konfigūracijas:

ansible-playbook -i $IP, dotfiles.yml 

Reikia įdiegti docker ir docker-compose? Paskaitykite abiejų diegimo instrukcijas - belekiek darbo. O čia, tik viena komanda:

ansible-playbook -i $IP, docker.yml ansible-playbook -i $IP, docker-compose.yml 

Tingite tvarkyti Python Pillow palaikymą visiem failų formatams? Ranka darant sutvarkyti be StackOverflow - neįmanomas darbas. Bet su viena Ansible komanda:

ansible-playbook -i $IP, pil.yml 

Reikia įrankių programavimui? Priklausomai nuo to kokia kalba dirbate:

ansible-playbook -i $IP, ruby_dev.yml ansible-playbook -i $IP, python_dev.yml ansible-playbook -i $IP, php_dev.yml ansible-playbook -i $IP, javascript_dev.yml 

Šis ir daugiau konfigūracijų yra mano Ansible konfigūracijų Github repozitorijoje. Išmėginkite, pasitobulinkite pagal savo poreikius ir liaukitės švaistyti laiką neautomatizuotoms problemoms spręsti.

Serverių atnaujinimas (video)

Kai Nagios’as praneša, kad vienas ar kitas serveris turi programinės įrangos atnaujinimų, kuriuose ištaisytos saugumo problemos, atnaujinu juos su Ansible:

Serverių atnaujinimas su Ansible


Jeigu svarstote automatizuoti savo kompiuterių ir serverių priežiūrą - Ansible tikrai rekomenduoju.

2018 m. April 28 d. 0:00

April 19 d.

Donatas Glodenis

Codeigniter form with integrated data and file validation

In one application built on Codeigniter framework I needed to create a special form. The form had to allow a user to both enter text data and upload an image. It was actually the first time I had any experience with programming forms that would include file upload. And I found out it is not … Toliau skaityti Codeigniter form with integrated data and file validation

The post Codeigniter form with integrated data and file validation appeared first on Donato Glodenio puslapiai.

by Donatas G. at 2018 m. April 19 d. 16:34

April 16 d.

Jaroslav Šatkevič

JaroCoin – pirmasis ITO – kodėl, kas, kaip?

Ši idėja gimė kaip pokštas, skirtas draugams, tačiau manau, kad tai visai gali prigyti kriptovaliutų pasaulyje.

Jau aštuonis mėnesius brandinau JaroCoin bei ITO idėją (Initial Time Offering) ir šiandien jau galima įsigyti savo pirmuosius JARO 😉

Viskas prasidėjo ankstyvą praėjusios vasaros rytą, kai meditavau savo kovos menų salėje. Kriptovaliutų pasaulyje tada vyko tikra beprotybė: kas valandą galėjai išgirsti apie naują, vis pelningesnį ICO (Initial Coin Offer; angl.), kurių daugelis buvo verti ne daugiau nei iš Afrikos atsiųstas spaminis elektroninis laiškas, pranešantis apie gautą paveldėjimą. Atrodė, kad ICO leidžia, kas tik netingi: jokių garantijų, jokios reguliacijos. Man tikrai nepatiko, kas vyko rinkoje. Taip man gimė idėja išleisti savo – nuosavą– kriptovaliutą. Ji vienu metu turėtų atitikti visus ICO lozungus, bet tuo pačiu būtu pilnai padengta realia verte – mano laiku.

Iš pradžių ši idėja man atrodė pokštas, bet  pasidalijau ja su keliais draugais ir buvau nustebintas – jiems patiko.

Velyvą rudenį apsisprendžiau išeiti iš tarptautinės korporacijos (UBER technologies), kur dirbau programinės įrangos inžinieriumi, ir visą savo dėmesį skirti blockchain sričiai.

Mane tiesiog užgriuvo patys įvairiausi prašymai: susitikti, patarti, dalyvauti projekte, tapti mentoriumi, investuoti ir panašiai. Buvo išties sunku atskirti pelus nuo grūdų – kam išties svarbu ir reikšminga skirti savo laiko, o kam ne. Taip grįžau prie JaroCoin koncepcijos, tikiuosi ji gali tapti realios mano problemos sprendimu.

JaroCoin yra 100% padengtas mano laiku. Tai eksperimentas, kuris tęsis bent jau iki metų galo, kai mano  paslaugas galės įsigyti tik JaroCoin turėtojai. Jau nuo šiandien galima nusipirkti mano laiko iš anksto ir naudoti tada, kada reikia. Vienas JarioCoin yra lygus vienai mano gyvenimo sekundei. ITO metu jis kainuos 0.00001 bitcoin (0.036 BTC už valandą), bet vėliau JaroCoin turėtojai, kaip tikri crypto investuotojai, galės prekiauti mano laiku rinkoje, taip padės man nustatyti sekančios emisijos kainą 😉 Net jei visas kriptovaliutų “burbulas” sprogtų, mano laikas vertės nepraras, už JARO galėsite ir toliau gauti tiek pat mano laiko 😉

JaroCoin galima naudoti trimis pagrindiniais būdais:

  • Pirma, galite juos laikyti arba prekiauti investiciniais tikslais. Laikui bėgant, mano patirtis auga, todėl natūralu, kad mano valanda ateityje kainuos daugiau. Be to mano laikas yra limituotas, niekada nebus daugiau negu 21 000 000 JARO.
  • Antra – viskas, kas susiję su informacinių technologijų, ypač blockchain sprendimais. Programuoju jau apie 20 metų (Python, JavaScript, Solidity). Be to, galime kalbėtis apie startupų vystymą, pats dalyvavau 7 projektų kūrime. Na ir – žinoma –  Blockchain konsultacijos.
  • Trečia, aš tikiu, kad fizinė sveikata bei dvasiškumas yra ne mažiau svarbūs, negu finansinė nepriklausomybė ar intelektualinis tobulėjimas, todėl daugiau nei 15 metų mokausi Azijos kovos menų. Esu Pietų Korėjoje sertifikuotas WonHwaDo instruktorius. Taip pat apie 5 metus studijuoju kinų Iliqchuan. Norite susipažinti su egzotinių kovos menų paslaptimis? Kalbėkimės 😉

Vizija ateičiai

Visas JaroCoin kodas yra atviras. Dabar dirbu ties Blockchain’e saugomu kalendoriumi kuris leis rezervuoti laiko tarpus nusiuntus į jį JARO. Taip pat turiu idėjų sukurti decentralizuotą kripto biržą, kur JARO galima būtų keisti į kitus Time Tokens arba į Ethereum/Bitcoin.

Dabar kiekvienas norintis gali sukurti savo kriptovaliutą. Jeigu reikės pagalbos, kreipkitės! (tik nepamirškit iš pradžių gauti JaroCoin ;-))

Nežinau kuo virs šitas eksperimentas, tačiau matau šansą alternatyviai realybei, kur pagrindinis mainų vienetas būtų laikas.

Iš pradžių turėjomeglobalius pinigus (auksas), vėliau valstybinius (USD, EUR etc.), po to, vos ne kas antras startuolis pradėjo leisti savo pinigus (ICO, utility tokens), manau, atėjo laikas asmeniniams pinigams.

by admin at 2018 m. April 16 d. 8:14

Remigijus Jarmalavičius

Redis ant Docker

Jau esu rašęs ne vieną straipsnį apie tai koks geras dalykas yra Docker. Taip pat minėjau kaip lengva įsidiegti Mysql su Docker. Bet ar žinojote, kad kokį Redis pasikurti yra žymiai lengviau?

Šiuolaikiniai web’ai, ypač turintys daugiau lankomumo, tikriausiai neišgyventų be Redis. Ypač kai kalbame apie visokius banerius, statistikos rinkimus, A/B testavimą.

Ubuntu operacinėje sistemoje Redis įdiegti labai lengva su paketų valdikliu:

apt-get install redis-server 

Tai tikrai nėra blogas variantas ir galbūt nėra didelio tikslo užkrauti viską ant Docker.

Bet ant Docker pats diegimas taip pat ypatingai paprastas:

docker run --name redis-serveris -p 8000:6379 -d redis 

Prisijungti prie Redis galima dviem būdais. Jeigu turite redis-cli (įdiegti galima įdiegus redis-tools):

redis-cli -p 8000 

Arba pasinaudojant tuo pačiu Docker:

docker exec -it redis-serveris redis-cli 

Praktinis išbandymas Redis su Docker:

Redis išbandymas su Docker


Produkcinėje sistemoje vienas iš Redis privalumų ant Dockerio būtų tai, kad skirtingiems projektams (arba mikro projektams) galima turėti skirtingus Redis konteinerius. Taip ne tik duomenys nesusimaišytų, bet ir saugiau būtų.

2018 m. April 16 d. 0:00

April 13 d.

Remigijus Jarmalavičius

Kokias programas naudoju 2018 metais

Anksčiau labai mėgdavau skaityti kitų tinklaraščių post’us kur autoriai rašo kokią programinę įrangą naudoja. Patikdavo, nes vis rasdavau kokių nors geresnių įrankių kurie didindavo produktyvumą.

Ankstesniuose mano straipsniuose galima rasti kokias programas naudojau 2013 metais arba kokias programas naudojau 2010 metais.

Dabar, po daugiau nei 10 metų programavimo, lyginant praėjusius įrašus mano programų stackas labai minimalistinis.

Ką darau tik įdiegęs OS

Pats pirmas dalykas ką visada padarau įdiegęs operacinę sistemą - ištrinu daugybę nereikalingų programų.

Taip ne tik taupau disko vietą (neženkliai), bet ir internetą (nes nereikia siųsti atnaujinimų), laiką (nereikia laukti kol atnaujinimai parsisiųs ir įsidiegs), bet dar programos neatsiranda šian bei ten (pavyzdžiui launcher’iuose).

Taigi - įdiegiam OS ir ištrinam visokius Thunderbird, žaidimus, muzikos grotuvus ir įrankius kurie nereikalingi.

Kokias operacines sistemas naudoju

Pirmiausiai turiu kelis kompiuterius.

Macbook’ą nes reikia PixelMator ir jokia kita programinė įrango jo formato neatidaro. Na ir kiek rečiau - Photoshop.

Turiu stacionarų kompiuterį ir keturis ekranus prie jo. Jame - naujausias Ubuntu.

Kaip ir daugeliuose mano buvusių kompiuterių - Ubuntu OS


Turiu žaidimų kompiuterį su Windows 10. Tik žaidimams skirtą.

Per 10 metų išbandžiau labai daug operacinių sistemų: Windows Xp / Vista / 7 / 10, Ubuntu pradedant 9 ir baigiant 17, Gentoo, Redhat, Fedora, Elementary OS, Debian.

Neturiu operacinėms sistemoms priekaištų ir niekam nieko rekomenduoju. Verta visas išmėginti, tikrai.

Dedikuota programinė įranga

Ko stengiuosi nenaudoti tai dedikuotų programų. Tokios programos, kurių WEB išvaizda perkelta į Desktop programas: Trello, Todoist, Skype ar kt.

O minusų tikrai daug. Disko vieta, interneto srautas, atnaujinimai ir pan.

Vienintelis tokių programų privalumas greičiausiai yra offline režimas. Bet daugelis SAAS’ų jau turi ir offline režimą.

Beveik viskas telpa į naršyklę

Daug kas dedikuotas programas naudoja, kad naršyklėje sumažinti vienu metu atidarytus tab’us. Aš kitaip sprendžiu šią bėdą - uždarau ko tai akimirkai nereikia.

Dažniausiai naršyklėje yra trys-šeši vienu metu atidaryti tab’ai.

Bene pagrindinė, mano, kaip programuotojo, programinė įranga - naršyklė. Tenka naudoti Chrome, Firefox, Safari naršykles. Pagrinde naudoju Chrome.

O jame jau pasileidžiu kada ką reikia: Trello (praėjusiame straipsnyje rašiau kaip aš naudoju Trello), Todoist, Google Calendar, Gmail, Gitlab, PivotalTracker ir pan.

El. pašto klientas

Kodėl nenaudoju el. pašto kliento? Nes naudoju kelis kompiuterius ir atrodo neprotinga visur diegti pašto klientą, prisijungimus išsaugoti. O Gmail’ą galima atsidaryti iš bet kur.

Tuo pačiu visas pašto dėžutes nukreipiu į vieną pašto dėžutę, kad nieko tikrintis papildomai nereikėtų.

O ir patį paštą stengiuosi tikrinti tik kokius 2-3 kartus per dieną. Anksčiau turėjau jam didelę priklausomybę.

Ir žinoma, būtinai reikia laikytis Inbox Zero principo.

Biuro programinė įranga

LibreOffice tenka atsidaryti labai labai retai. 95% laiko užtenka Google Drive ir esu juo labai patenkintas.

Kartais tenka dokumentus tvarkyti / patobulinti per mobilų įrenginį. O čia Google Drive yra puikus įrankis.

Google Drive laikau sutartis, finansų apskaitą, visokius planus, ataskaitas, dokumentacijas.

Mano Google Drive katalogai (yra ir daugiau)


Vienas labiausiai atsipirkusių dokumentų - pavadinimu „Rekvizitai“. Labai patogu į vieną dokumentą surašyti savo banko sąskaitos numerį, individualios veiklos pažymėjimo numerį, adresus su pašto kodais ir pan. Praktiškai kas savaitę tenka atsidaryti šį dokumentą, kad kažkam tuos duomenis duoti.

Programavimui skirta programinė įranga

Terminalas - antra labiausiai naudojama programinė įranga. Apple Terminal arba Gnome Terminal čia pas mane visada atidarytas.

Reikia paskaityti naujienas? Surenku curl delfi.lt:80 | less ir… Ne ne, juokauju.

Terminalas ir VIM


O terminale jau sukasi Tmux, Tmuxinator, Docker (su ElasticSearch, Redis, Memcached, Mysql ir Postgres), Zsh, VIM.

Redaktorius VIM? Ne.

Po 7 metų programavimo su VIM iškeičiau šį į kiek modernesnį - Sublime.

VIM yra super redaktorius! Ir tikrai jį naudoju gana stipriai serveriuose.

VIM iškeičiau į Sublime


Man patinka, kad Sublime laikosi Ruby appsų principo - naudingas ir be nieko (angl. „useful by default“).

Tik įdiegi Sublime ir turi absoliučiai viską. Reikia kokio specifiškesnės sintaksės? Gali neišeidamas iš Sublime viską turėti. VIM’e teks eiti Github’o paieškų keliu.

Taip pat jeigu Sublime reikia kitokios temos ar kokio linter’io - vėlgi, viską gali turėti nepalikus redaktoriaus.

Todėl čia ir atsiranda didelė praraja - VIM yra superinis redaktorius, bet kad paversti jį produktyviu - reikės labai daug produktyvaus laiko išmesti konfigūracijai, paieškoms, tobulinimui.

Kaip ir daugelis, savo VIM konfigūracijas laikau GitHub’e. Su Sublime tokių dalykų daryti nereikės. Net ir labiausiai vaizduotę skatinančią platformą ant Sublime galima turėti per kelias minutes.

Tūkstantis BASH skriptų

Savo bin/ kataloge turiu kokį tūkstantį privačių ir viešų Bash skriptų. Mėgstu viską automatizuoti ir pamiršti.

Žinoma, stengiuosi ir serveriuose kuo daugiau visko automatizuoti. Pavyzdžiui asmeniniai projektai deployinasi automatiškai Gitlab’o pagalba, jeigu testai praeina.

Arba Nagios’as prižiūri daugiau nei 120+ taisyklių: serverius, svetaines, servisus ir pan.

Man visada įdomu paskaityti kitų žmonių tokius straipsnius. Taigi jeigu turite savo sąrašą - būtų įdomu sužinoti.

2018 m. April 13 d. 0:00