Kategorijos „IT“ archyvas
Versijų kontrolės sistemos ir kodėl jums jų reikia
Kartais tenka nusistebėti, kaip kai kurie programuotojai tvarkosi su savo kodu. Nei lokalių, nei nutolusių kopijų nėra, viskas laikoma ten, kur publikuojamas serveris. Netgi kodas, pasitaiko, redaguojamas būtent ten.
Į lietuvišką Google įrašius „versijų kontrolės sistema“ pirmosios nuorodos: Vikipedija, kuri tikrai neįtikina, kodėl to reikia, ir FWD.lt straipsnis, kur versijų kontrolės sistema (VCS, VKS, RCS, SCM – trumpinkite kaip norite) sumaišyta su paslaugų tiekėju… Na, pasitaiko ir keletas teisingų nuorodų (jos – įrašo pabaigoje).
KPŠ ta VCS?
Paprastai tariant, programa, kurios dėka galite tvarkyti savo kodą patogiau. Procesas gan paprastas, tačiau protingas: parašę dalį kodo (dažniausiai kažką viena tema ir reikšmingo, pvz. naują funkcionalumą ar tam tikros klaidos pataisymą), sukuriate naują pakeitimų sąrašą (dažniausiai vadinamą commit) (tikiuosi pasirinkau teisingą vertalą). Jam suteikiamas unikalus ID ir commit‘as tampa lyg kodo versijos atžyma – pasižiūrėjus istoriją aiškiai matyti, kada, kas ir ką (pagal commit aprašymą) pridėjo (ar pašalino
).
Kodėl?
Versijavimas. Vien iš šių programų bendro pavadinimo galima numanyti apie šią paskirtį Ką darote, jei norite padaryti pakeitimų kode, tačiau bijote kažko pridirbti ir norite turėti veikiančią, stabilią kopiją? failas.old ir failas.new? Gal dar failas.2011.09.10? :) Yra geresnis variantas! Su VCS visi pakeitimai aiškiai matysis palyginus commit‘us. Taip pat bet kada galėsite grįžti prie senesniojo, nes senas kodas niekur nedings.
Darbas komandoje. Šiuo metu dirbu prie projekto kartu su Simonu ir tikrai neįsivaizduoju, kaip galėtume atsinaujinti darbinius failus vienas iš kito be VCS. Siuntinėti per skype ar email? O jei dar reikia persiųsti kelis failus, tai tikriausiai prieš siunčiant spausti į archyvą (ir taip vėl turėti kodas.2011.09.10.tar.gz)? Ne!
Su VCS atlikus commit‘ą jį viena komanda patalpiname į bendrą serverį. Su decentralizuotomis VCS galima juos netgi išsiųsti tiesiai vienas kitam, be jokio tarpinio serverio. Kodą pasiimti gali ne vien kitas komandos narys, bet ir, pavyzdžiui, serveris, kuriame veikia pati jūsų programa.
Atvirumas. Būtent tokių VCS repozitorijų tiekėjų, kaip GitHub ar BitBucket puslapiuose šiais laikais vyksta atvirų programų kūrimas. Projektui turint viešą repozitoriją, kiekvienas gali pasidaryti savo projekto šaką (fork) ir, pamodifikavęs, pasiūlyti projekto autoriui priimti pakeitimus.
Kaip pradėti?
Pirmiausiai reiks išsirinkti pačią sistemą. Jų yra įvairių, nuo dar amžiaus pradžioje išleistos Subversion iki naujesnių ir smagesnių Git, Mercurial ar Bazaar.
Jei norėsite kodą laikyti ne vien savo kompiuteryje, bet ir dalintis su kitais, teks pagalvoti, kur talpinti repozitorijas. Jei turite VPS ar dedikuotą serverį – problemos nėra, serveris puikiai pasitarnaus ir šiam reikalui. Tas pats galioja ir jūsų asmeniniam kompiuteriui, jei tik turite išorinį IP adresą.
Kitu atveju gali tekti naudotis tokiomis svetainėmis kaip GitHub (Git sistemai), BitBucket (Mercurial) ar Launchpad (Bazaar). Viską vainikuoja Google Code, palaikanti Subversion, Mercurial ir Git sistemas. Visos šios svetainės leidžia nemokamai kurti viešas kodo repozitorijas, tiesa, norint turėti privačių, kai kurios prašys sumokėti kelis dolerius.
O tada jau tik mokytis, tyrinėti savo pasirinktą sistemą, kadangi gerų dalykėlių būna jose daug daugiau, nei aprašiau – stengiausi paminėti tik pačius pagrindus. Pats, naudodamas Git, skaitinėju nemokamą Pro Git knygą.
Pavėluotas įspėjimas: aš nesu profesionalas, netgi ir pats VCS pradėjau visai neseniai ir rimtai esu bandęs tik Git. Jeigu kur nusišnekėjau – praneškite…
Šiuo įrašu nebandžiau reklamuoti nei vieno konkretaus produkto, tiesiog norėjau įtikinti, kad VCS sutaupo daug laiko ir jėgų, nes… taip ir yra!
Teisingai lietuviškai apie VCS:
Nebūkite nuobodūs (programuotojai)
Man patiko straipsnis, sakantis priešingai, tačiau šįkart kalbu ne apie tokį nuobodumą.
Penktus metus esu turbūt didžiausios IT bendruomenės Lietuvoje uždarbis.lt narys ir neabejotinai būtent ten daugiausiai diskutuoju su programuotojais. Būtent iš ten susidariau nuomonę apie besimokančius programuotojus ir panašių IT sričių atstovus.
Tinklalapių kūrėjai
Trumpas supažindinimas su šio įrašo terminologija: tinklalapių kūrėjas – žmogus, iš esmės neprogramuojantis, tačiau statantis tinklalapius TVS ir panašių įrankių pagalba. Tinklalapių kūrėjai yra nuobodūs. Dažniausiai kuriami arba copy/paste turinio (anekdotų, sveikinimų, citatų) puslapiai, arba warez (muzika parsisiuntimui, filmai online). Dar vienas variantas – žaidimų (visiems gerai žinomų Counter-Strike, Minecraft, Lineage 2) serverių, klanų tinklalapiai. Tikrai dėmesio vertų tinklalapių – vos vienas kitas.
Programuotojai
Nemanau, kad šį žodį jau reiktų paaiškinti. Džiugu, kad yra žmonių, norinčių programuoti, tačiau jie irgi yra nuobodūs. Čia vėlgi tenka susidurti būtent su tinklalapiais, nes kone visi renkasi tą patį technologijų rinkinuką: PHP, HTML, CSS, JavaScript, SQL (ir būtinai nori išmokti viską iškart). Na, retkarčiais užsimenama apie Java, bet dažniausiai – dėl studijų. Paklauskite tokių programuotojų, kas yra Memcache, NoSQL, design patterns ar kas sukelia 2038-ųjų metų problemą ir laikas, per kurį toks programuotojas atsakys labai priklausys nuo Google atsako laiko
Mokomasi dažniausiai iš tokių netikusių šaltinių,kaip w3schools.com. Mokymosi rezultatai: tipinės saugumo skylės, negražus, neefektyvus, tiesiog blogas kodas. Ir jei dar to negana, kiekvienas nori pasijusti mokytoju – parašę savo pirmuosius kodo gabalėlius tokie programuotojai skuba rašyti pamokas, tokias pat nevykusias, kaip ir tos, iš kurių mokytasi.
Tai ką daryti?
Tinklalapių kūrėjams – nebijoti įgyvendinti savų idėjų. Nesakykite, kad tokių neturite – net, rodos, kvailiausia idėja gali pasiteisinti. O net jeigu ir ne – niekam neskaudės. Laikai tokie, kad pradžią galima padaryti visai pigiai, o toliau jau tobulėti. Programuotojams – nebijoti atrasti kažką daugiau, nei tai, ką „daro visi“. Jei iš tikrųjų mylite šį užsiėmimą, naują dalyką priimsite kaip iššūkį, o ne kaip kažkokią naują naštą
Vėlgi, visa tai – tik mano du centai ir nuomonė, susidaryta apie daugumą. Pats tikrai nesu patyręs, tuo labiau, kad žmogus mokosi visą gyvenimą, o tuo labiau tokio dalyko, kaip programavimas. Komentarai visad laukiami
Linux ir failų asocijacijos – WTF?!
Akys jūsų neapgauna, čia tikrai ne Linux Hater’s Blog, tačiau kad ir kaip sėkmingai naudočiau GNU/Linux jau ketvirtus metus, negaliu nepasiskųsti tuo, kas man užkliūna.
Jei naudojate, ar bent kiek esate susidūrę su Linux, turėtumėte žinoti, kad priešingai, nei komercinėse Windows ar Mac OS X, čia vienybės nėra (kaip kažkas sakė (ok, suradau kas) „linux – programų kratinys“). Yra šimtai distribucijų, turbūt keliolika darbalaukio aplinkų ir gal koks šimtas window manager’ių.
@silkuze: Kaip Openbox (Arch Linux) nustatyti default naršyklę?
Neberandu to čiulbesio, bet puikiai pamenu kaip @ernetas man atsakė maždaug „nustatinėk kiekvienoje programoje atskirai“. Rimtai, WTF? Yra xdg-open, Debian šeima turi update-alternatives (ką turi kitos distribucijos – nežinau, jei nieko – dar blogiau), GNOME, KDE taip pat turi savus nustatymus, kiekviena failų naršyklė asocijacijas valdo vėl savaip, o tokios programos kaip Skype turbūt apskritai reikiamą programą atidarinėja pagal šiandienos kritulių kiekį.
Tiesa, dabar naudoju Debian šeimą ir [kol kas] su tais dalykais viskas vyksta sklandžiai. Bet nežinia, kas bus, jei sumanysiu pereiti prie kitos distribucijos. Atleiskit, bet kopijuot kiekvieną nuorodą iš kokios nors programos į naršyklę – tas pats, kas vaikščiot po mėšlą – nei patogu, nei malonu.
Man and Woman in Python
Python is such a high level programming language, that you can even create a Man and a Woman using it in only about a hundred lines of code!
from random import choice, randint
from time import sleep
class Beast:
self.iq = randint(60,90)
pass
class Human:
self.iq = randint(85,120)
pass
class Woman(Beast):
def __init__(self,name='Aldona'):
self.husband = self.find_a_husband()
while True:
for i in range(3):
self.PMS()
self.facebook()
self.hang_out()
def find_a_husband(self):
men = list(open('men','r').read())
for m in men:
if m.money >= a_lot and m.a_total_asshole:
husband = m
break
return husband
def buy(self):
choices = ['shoes','handbag','bra','perfume','chocolate']
thing = choice(choices)
try:
self.husband.money.subtract(randint(10,1000))
except NoMoneyError:
self.husband = None
self.find_a_husband()
def PMS(self):
for i in range(10):
self.buy()
self.watch_a_movie('Twilight')
def facebook(self):
choices = [
'check out friends photos',
'like 87 more pages'
'write a "clever thought" on own wall',
'play *Ville',
'chat with an anorexic friend'
]
pc(choice(choices))
def go_to_sleep(self):
try:
self.nag(Man,'sex. nao.')
except:
self.watch_a_movie('Notebook')
self.cry()
self.dream('of a better man')
for i in range(7):
self.facebook()
def sleep(self):
for i in range(4):
sleep(3600,10800)
self.go_to_sleep()
def hang_out(self):
for i in range(10):
self.gossip()
self.buy()
def drive(self):
while True:
self.phone(talk)
self.phone(sms)
self.phone(facebook_app)
self.miss_a_red_light()
class Man(Human):
def __init__(self,name='Petras'):
while True:
if self.hungry:
self.eat()
self.drink()
if self.horny:
if Woman.nearby:
try:
self.rape(Woman)
except Headache:
self.fap()
if self.tired:
self.sleep()
def find_a_wife(self):
women = list(open('women','r').read())
for w in women:
if w.can_cook and w.sexy:
wife = w
break
return wife
def eat(self):
while not self.have_food():
try:
self.nag(Woman,'food plz')
except NoWifeError:
self.find_a_wife()
def sleep(self):
sleep(randint(28800,43200))
def drink(self):
choices = ['beer','wine','vodka']
if self.depressed:
drink = 'H2SO4'
else:
drink = choice(choices)
def hang_out(self):
if self.depressed:
self.literally_hang()
else:
self.drink()
def rape(self,target):
if type(target) == Woman:
try:
do_the_job(quickly)
else:
raise ZoophiliaError
For latest code updates, checkout the GitHub repo. CC-BY-NC-SA 3.0 – feel free to modify, but keep original author’s name
Not available

Linksmais paveikslėliais kalbu apie rimtus dalykus (įrašas senokas, tačiau geriau sutinkančio su mano mintimis neradau).
Host1Free: nemokamai – nebūtinai blogai
Daugelis pradedančiųjų blogerių susiduria su vienu galvos skausmu – kur talpinti savo naująjį tinklaraštį. Blogfermos, kaip blogr.lt, apriboja galimybes, tuo tarpu kokybiško hostingo kainos dažniausiai yra per aukštos (o ypač jei autorius neturi pastovių pajamų). Išeitis yra – nemokami hostingai, kurių galimybės neretai ne ką tenusileidžia mokamiems.
Vienas toks nemokamas hostingas yra Host1Free – mokamo Host1Plus brolis. Host1Free visiškai nemokamai siūlo planą, kurio tikrai užteks ne vien pradedančiajam blogeriui: 10GB disko vietos, 150GB duomenų srauto, el. paštą (nors gal tam reikalo ir nėra, juk turim Google Apps), MySQL duomenų bazių palaikymą, nemokamą subdomeną (su galimybe priparkuoti penkis jau turimus), TVS installer’į ir t.t…
Registracija užima ne daugiau nei minutę. Pakanka įvesti norimą domeną/subdomeną, savo el. paštą, slaptažodį, CAPTCHA – ir viskas, gali naudotis hostingu. Jokių įkyrių patvirtinimų el. paštu ar klausimų, koks mano vardas ir kur gyvenu.
Neleiskite Twitter Tools sulėtinti jūsų blogo!
Twitter Tools yra puikus plugin’as pranešimui apie naują įrašą Twitter’yje, bet net jei nenaudojate Twitter Tools widget’o savo blog’e, jis gerokai sulėtina tinklaraščio krovimosi laiką kreipdamasis į savo CSS ir JavaScript failus. Jei nenaudojate TT widget’o – galima visiškai saugiai pašalinti eilutes, kuriose kreipiamasi į tuos failus. Dėl to atvejo, kai widget’as naudojamas – nežinau
Atsidarykite plugino failą twitter-tools.php ir pašalinkite šias eilutes:
<link rel="stylesheet" type="text/css" href="'.site_url('/index.php?ak_action=aktt_css').'" />
<link rel="stylesheet" type="text/css" href="'.admin_url('index.php?ak_action=aktt_css_admin').'" />
<script type="text/javascript" src="'.site_url('/index.php?ak_action=aktt_js').'"></script>
<script type="text/javascript" src="'.admin_url('index.php?ak_action=aktt_js_admin').'"></script>
Štai ir viskas. Galite džiaugtis šiek tiek greitesniu wordpress
Android 3.0 ‘Gingerbread’ atnaujinimas: silpnuosius palikime užnugary
Vakar pasirodė informacija, o galbūt tik gandai apie tai, ką žada naujoji Android versija 3.0 kodiniu pavadinimu Gingerbread. Tokie pažadai kaip nauja vartotojo sąsaja ar 1280×760 galima rezoliucija tikrai žavi, tačiau jei turite ar ruošiatės pirkti ne patį galingiausią iš visų Android telefoną, ruoškitės po pusmečio jį keisti arba likti su Android 2.x. Kodėl? Ogi dėl techninių reikalavimų:
- 1 GHz procesorius. Taip taip, jei nusipirkote vos prieš tris mėnesius pradėtą pardavinėti HTC Legend, kurio procesoriaus dažnis – 600 MHz, atsinaujinti nepavyks. O ką jau kalbėti apie visus silpnesnius HTC gaminius: Wildfire, Hero, Magic, Dream…
- 512 MB RAM. Nagi, Google… Kartais pasinaudoju kompiuteriu, turinčiu būtent tiek RAM ir jis puikiai veikia. Žinau žmonių, kurie ir Windows 7 su tiek laisvai naudoja. Tai sakot, mobiliai operacinei reikia ne mažiau, nei PC? Būkite pasiruošę išmesti ir Sony Ericsson Xperia X10 – vieną galingiausių android’ų šiuo metu. Nors ir turi 1 GHz procesorių ir net 8 MP kamerą, tačiau RAM jame „tik“ 384 MB. Deja.
- 3.5″ ekranas. Na, man ir pačiam nepatinka tokie telefonai, kaip Sony Ericsson Xperia X10 Mini, kurie turi pernelyg mažą ekraną (2.55″), tačiau kodėl nesuteikus žmonėms laisvės rinktis? O 3.2″ jau gana normalus ekranas išmaniajam telefonui.
Ir tai minimalūs reikalavimai. Žiūrėk, dar dabartiniai flagmanai, kaip HTC Desire ar Google Nexus One pradės laginti su Gingerbread. Belieka tikėtis, kad išmaniųjų telefonų meistrai xda-developers nuportins Android 3.0. Gal kaip nors telefonas, galingumo kaip geras kompiuteris prieš septynis metus, užveš naująjį Android?
P.S. Nesupraskit blogai, man tikrai patinka Android…
Mes norime mobiliojo interneto!
Nežinau, kaip jūs, bet aš puikiai pamenu laikus, kai mobilųjį internetą supratome tik kaip wap chat’ukus su mažytėm mažytėm ikonėlėm ir tekstu. Tada ir 9 Lt/MB interneto kaina atrodė visiškai normali (tokios kainos, beje, buvo omnitelyje).
Laikai pasikeitė. Dabar retas mobilusis telefonas neturi priėjimo prie interneto. Išmanieji telefonai lengvai atvaizduoja pilnus tinklalapius, skirtus kompiuteriams. Operatoriai per visus galus tik ir reklamuoja naujausius smartphone’us, vardindami jų reikalingas ir nereikalingas funkcijas. Tačiau tokie telefonai be interneto kone beverčiai, o jo kainos vis dar prieštvaninės. Kadangi jau ilgą laiką esu Bitės/LABAS vartotojas, kalbėsiu apie jų siūlomas kainas. Už 50 parsisiųstų megabaitų turime mokėti 7 litus, t.y. už megabaitą sumokame 0.14 Lt
Pagalvokime, kas būtų, jei tiek mokėtume už internetą kompiuteriui?
- Už kiekvieną draugo siųstą nuotrauką (tarkime ~2MB) mokėtumėte 28 centus.
- Už vieną trololo peržiūrą (~6 MB) sumokėtumėte 84 centus (rickroll’inti būtų galima ne vien ant bajerio, bet ir tam, kad kitam pridaryti papildomų išlaidų
) - Už OpenOffice.org Windows versijos atsisiuntimą (~150 MB) tektų pakloti 21 litą (tai koks čia „open“?!
) - Už Ubuntu CD parsisiuntimą (~700 MB) sumokėtumėme 98 litus (!!!)
- O jei dar sugalvotumėte parsisiųsti linux distribuciją, užimančią visą DVD (4.37GB), mokėtumėte 611 litų 80 centų (turbūt pigiau būtų nusipirkti legalius winblows)
Žinoma, per telefoną gigabaitinių failų nesisiųstume, tačiau peržiūrint pilnus tinklalapius (kurie kartais užima net megabaitus) ar žiūrint YouTube video, išnaudoti tuos varganus 50 megabaitų tėra minučių reikalas. O kas tada? Vėl mokėti 7 litus, kad galėtume peržiūrėti keletą puslapių?
Mieli mobiliojo ryšio operatoriai, tikiu, kad ne vien mums, bet ir jums būtų naudinga sumažinti kosmines mobiliojo interneto kainas. Neabejoju, kad pirmasis operatorius, ėmęsis kainų mažinimo, susilauktų labai didelės simpatijos iš mobiliojo interneto naudotojų
Kiti blogeriai apie mobiliojo interneto kainas:
- Justinas Lelys - Ar ne laikas pergalvoti mobiliojo interneto planus?
- Aivaras Kivilius - Bite, Jau dvidešimt pirmas amžius!
- Bernex - Apie mobilaus interneto planus Lietuvoje








Naujausi komentarai