tiistai 7. huhtikuuta 2015

Versionhallintaa 2, SVN -> Git

SVN to Git migrate

Viimeksi kirjoittelin TFS:stä Gitiin siirtymisestä ja nyt on projektina Subversionista (SVN) siirtäminen. Minulla oli asennettuna Windowsiin TortoiseGit ja siitä löytyi Git clone -työkalu, jonka avulla saa tuotua myös SVN repon. Jostain syystä en saanut paikallisesta SVN-reposta kloonattua, mutta kun pienellä googlailulla en saanut ratkaistua asiaa, niin kloonasin netissä olevan repon ja homma toimi. Ilmeisesti liittyy jotenkin hakemistojen nimiin (jotenkin file:// tyyliin pitäisi kirjoittaa nimi). TortoiseGitin clonessa voi valita branchit, tagit ja trunkin. Itse tein aika perusasetuksilla ja hyvin näytti versiohistoria säilyneen.

Loppu hommasta meni samalla tavalla kuin TFS->Git -hommassakin eli seuraavasti:

Add, Commit ja Push

Mene juurihakemistoon ja lisää uudet tiedostot kuten .gitignore:
git add . 
Minun git-versiollani piti antaa muokkauksien jälkeen komento: git add --all

Sitten tee commit:
git commit -a -m "ensimmäinen commit siirron jälkeen"

Sitten vaihdetaan alkuperäksi minun tapuksessani Visual Studio Online, mutta voit laittaa omankin serverin.
git remote add origin https://omatili.visualstudio.com/DefaultCollection/_git/projekti

Viimeisenä lähetetään sitten tavara pilveen komennolla:
git push -u origin --all

Muita työkaluja

"git-svn - Bidirectional operation between a Subversion repository and Git"
http://git-scm.com/docs/git-svn

Tämä Kernel.orgin wikissä oleva artikkeli on myös hyvä. Siellä on myös migraatiolle oma sivunsa.
https://git.wiki.kernel.org/index.php/GitSvnCrashCourse

tiistai 4. marraskuuta 2014

Versionhallintaa, TFS -> Git


TFS to Git migrate

En ole oikeastaan koskaan käyttänyt TFS:ä versionhallintaohjelmana (Team Foundation Version Control) eikä kiinnostanut ryhtyäkään, kun minulle annettiin ohjelmointitehtävä, jonka lähdekoodi oli TFS:ssä. Olin edellisessä projektissa käyttänyt Gitiä ja minusta oli luontevaa yhdenmukaistaa ja siirtyä tässä toisessakin siihen. Googlettelin hieman, etsin tietoa miten siirron voisi tehdä, ja nyt listaan kokemukseni hommasta.

Työkalut

Löysin kaksi työkalua ja kannattaa olla varovainen ja varma kummalle ohjeet on kirjoittu, kun lukee niitä netistä.
Näiden työkalujen käyttöä varten pitää ottaa vaihtoehtoiset tunnukset (Alternate Credentials) käyttöön Visual Studio Onlinessa omista asetuksista.

Itse asensin Git-tf:n seuraavasti Chocolateylla
cinst git-tf

Konvertoinnin vaiheet Git-tf:llä

1. Kloonataan vanha projekti Git-muotoon 

git-tf clone https://omatili.visualstudio.com/DefaultCollection $/projekti --deep

Kun laitat --deep, niin mukaan tulee koko historia.

2. Putsataan ylimääräiset jutut pois

Lataa normaali .gitignore-tiedosto, joka määrittelee mitä kaikkea tallennetaan versionhallintaan. Poista vanhaan versionhallintaan liittyvät tiedostot (*.vssscc) ja muokkaa .sln-tiedostojasi poistamalla niistä viittaukset Team Foundation Version Controliin. Avaa .sln tekstieditoriin ja hae "TeamFoundationVersionControl" ja ja poista kyseinen GlobalSection.

Tässä vaiheessa on myös hyvä miettiä miten kohdellaan rivinvaihtoja. Oletuksena LF korvataan CRLF:llä. Tähän liittyvä komento, jos haluaa ottaa automaattisen muunnoksen pois:
git config --global core.autocrlf false
Jos muuten siivoilet hakemistorakennetta ja siirtelet tiedostoja Windowsissa resurssienhallinnalla, niin huomasin, että siirrettyjen tiedostojen historian säilyttämiseksi täytyy antaa komento:
git diff -M .


3. Add, Commit ja Push

Mene juurihakemistoon ja lisää uudet tiedostot kuten .gitignore:
git add .
Sitten tee commit:
git commit -a -m "ensimmäinen commit siirron jälkeen"
Sitten vaihdetaan alkuperäksi minun tapuksessani Visual Studio Online, mutta voit laittaa omankin serverin.
git remote add origin https://omatili.visualstudio.com/DefaultCollection/_git/projekti
Viimeisenä lähetetään sitten tavara pilveen komennolla:
git push -u origin --all


4. Mahdollisten työtehtävien (work item) siirtäminen

Work itemejä voi siirtää ja muokata Excelin ryhmätyöominaisuuksilla (Excel Team features).

Tässä kaikki tällä kertaa ja toivottavasti tästä on jollekin hyötyä.


tiistai 21. lokakuuta 2014

Nettisovellusten kansainvälistäminen ja lokalisointi

Viime viikon aikana olen pohtinut parasta tapaa tehdä kansainvälinen ASP.NET MVC 5 -sovellus. Alkuun riittäisi se, että käyttöliittymä olisi suomeksi ja englanniksi. Alkuun luin muutamia blogitekstejä aiheesta, mutta kovin syvällistä osaamista ei monessakaan ollut ja suurin osa oli jo hieman vanhentunutta tietoa. Täydentelen tätä tekstiä myöhemmin, mutta tässä ensimmäiset ajatukset ja muistiinpanot.

Käsitteet

I18N
Internationalization
Kansainvälistäminen. Tämä tarkoittaa ohjelman tai nettisivun tekemistä siten, että lähdekoodiin ei tarvitse tehdä muutoksia, kun uusi kieli tai kulttuuri lisätään.
L10N
Localization
Lokalisointi tarkoittaa varsinaista työtä eli kääntämistä, mahdollisia ulkoasumuutoksia tekstien sovittamiseksi, paikallisia kuvia jne.
I18N+L10N
Globalization
Tämä viittaa molempiin yllä oleviin eli kaikkeen kulttuuri- ja kielitukeen liittyvään työhön.
Kulttuuri ja kieli

Samassa kulttuurissa voi olla kaksi eri kieltä kuten Suomessa suomi ja ruotsi. Toisaalta samaa kieltä voidaan puhua eri kulttuureissa, jolloin mitat ja rahayksiköt voivat erota (esimerkiksi englanti eri maissa).

Kattavuus ja mahdolliset ongelmakohdat

Monesti lokalisoinnista tulee mieleen vain tekstien kääntäminen. Sen sijaan pitää ottaa huomioon myös uusien tekstien sovittaminen käyttöliittymään muun muassa eri css-tiedostojen avulla. Jotkin kuvat voivat olla myös sellaisia, joita ei haluta näyttää joka maassa vaan halutaan tuoda jotakin paikallista ja tuttua. Kulttuurien ja maiden mukaan vaihtuvat myös osoitteet (kansainväliset postinumerot), tittelit, rahayksiköt, mitat, numerosarjojen, kellon ja päivämäärien esitykset. Selaimen tarjoamaan automaattiseen kulttuuritietoon ei voi luottaa vaan käyttäjälle pitää aina antaa mahdollisuus valita myös toinen kieli.

Toteutustavat

ASP.NET MVC –sovelluksissa voi käyttää erilaisia toteutustapoja. Microsoft on tuonut kulttuurituen mukaan frameworkiin, jonka avulla hoituu sekä ajan että numeroiden esitykset. Myös yksinkertainen tekstien tuki on resurssitiedostojen (esim. Resources.resx, Resources.fi.resx) kautta. Näiden avulla ei kuitenkaan voi hoitaa kaikkea lokalisointia vaan on käytettävä apuluokkia (Helper) kuten jokin imgHelper, joka hoitaa kuvan valinnan kielen mukaan. Erilaisten osasivujen ja css:ien valintaan voi tehdä jonkinlaisen urlHelperin (Url.Content, Html.Partial). Näitä apuluokkia löytyy valmiina hakukoneella. Myös automaattiseen kääntämiseen on tehty Helper-luokkia. Ne hakevat käännöksen jostakin netin käännöskoneesta (Bing translator, Google translator) ja näyttävät sen.

Tietokannan käyttö

Toinen tapa on käyttää tietokantaa kaikkien tekstien ja mahdollisesti myös kuvien tallennukseen, jolloin erillistä ohjelman kääntämistä ja tiedostojen siirtelyä ei vaadita pieniä muutoksia tehdessä. Toki tietokantaan on oltava silloin jokin järkevä käyttöliittymä. Hakukoneen avulla löytyy joitakin valmiita paketteja tähän tarkoitukseen. Vaihtoehtoja kannattaa etsiä Visual Studion NuGet-pakettienhallinassa hakusanalla globalization ja klikata niiden kotisivulle katsomaan lisätietoja.

Apuvälineitä


Resurssitiedostojen editointiin on varmasti useampiakin työkaluja. Itse olen käyttänyt Zeta Resource Editoria, joka on ilmainen ja osaa näyttää kerralla useamman kieliversion sarakkeittain. Siinä on myös Exceliin tuonti ja vienti. 

Mitä kannattaa lukea seuraavaksi

Suurin löytyneestä materiaalista oli tosiaan vanhaa, mutta AJ:n blogissa oli alle vuoden vanha juttu: AJ's Blog - ASP.NET MVC internationalization.

perjantai 17. lokakuuta 2014

Windowsin PowerShellin käyttöliittymän muokkaus Linuxin kaltaiseksi

Tervetuloa nörtteilemään!

Tämä blogi alkaa vähän töksähtäen suoraan asialla, mutta jostainhan se on aloitettava. Blogin ulkoasukin on toistaiseksi karu - pahoittelen. En aio olla kaikissa termeissä kovin tarkka, joten lukekaa suodattaen (kuten otsikko Linuxin kaltainen). Tervetuloa lukemaan!

Windows 8.1, Bash, PSReadLine

Käytän töissä Windows 8.1 -käyttöjärjestelmää ja olen aikaisemmin käyttänyt paljon Linuxia, jossa shellinä on ollut Bash. Jäin kuitenkin kaipaamaan samoja näppäintoimintoja, jotta siirtyminen eri käyttöjärjestelmien välillä olisi helpompaa. Erityisesti kaipasin vanhojen komentojen kunnollista hakua. Tähän löytyikin Githubista PSReadLine-projekti, joka muuttaa komentoriviä muun muassa seuraavasti:
  • Syntaksin väritys
  • Monirivitukea parannettu
  • Bash-tyylinen täydennys ja historiahaku (CTRL-R)
  • Automaattinen historian tallennus ja jakaminen sessioiden välillä
Voit lukea ominaisuuksista lisää  projektin sivulta.

PSReadLine-asennus

Asensin PSReadLinen seuraavasti: 
  1. Asensin ensin PowerShell-päivityksen Windows Management Framework 5.0 Preview September 2014 -paketilla, koska minulla oli ollut ongelmia vanhan PowerShellin kanssa ja tämä ratkaisi ne samalla. 
  2. Sen jälkeen kirjoitin ylläpitäjän oikeuksilla varustetussa PowerShellissä Install-Module PSReadline -komennon ja tein profiilitiedoston profile.ps1 Notepadilla. 
  3. Sitten vaihdoin Windows PowerShell execution policya skriptit sallivaksi: Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  4. Viimeisenä komento Import-Module PSReadLine ja sitten kaikki olikin kunnossa.
Lopputulos näyttää tältä

Näppäinoikotiet

Listaa nykyiset oikotiet: Get-PSReadlineKeyHandler 
Tällä komennolla voit lisätä omia: Set-PSReadlineKeyHandler -Key näppäimen_nimi -Function funktion_nimi