|
|

|
Tervetuloa Ohjelmistokehityksen asiantuntijaryhmän sivuille!
Allaolevaa blogia pitävät ryhmän jäsenet. |
|
|
| Kesäkuun alku toi monia pieniä muutoksia Windows Azure -palvelun käyttöoikeuksiin ja hinnoitteluihin, ja erityisesti nämä koskevat kehittäjiä. Muutoksista kerrottiin kehittäjäblogissa, ja tässä varsinkin kehittäjien näkökulmasta merkittävimmät muutokset: - Pysähdyksissä olevista virtuaalikoneista ei enää laskuteta. Aiemmin virtuaalikoneinstanssi piti kokonaan poistaa, jos halusi ko. koneen laskutuksen loppuvan. Nyt riittää, että kone pysäytetään (stop), joten esimerkiksi kehittäminen ja testaaminen voidaan tehdä pienemmällä vaivalla.
- MSDN-tilaajat saavat omat edullisemmat käyttötuntihinnat, ja samalla siirrytään minuuttipohjaiseen laskutukseen aiemman tuntipohjaisen sijaan. Jos siis ajat testatessasi virtuaalikonetta vaikkapa vartin verran, aiemmin laskutettiin kokonaisesta tunnista. Uudistuksen jälkeen maksat vain vartista, ts. neljäsosatunnista.
- MSDN-tilaajat voivat jatkossa ajaa Microsoftin palvelintuotteita (SQL Server, SharePoint, BizTalk, ym.) Windows Azuressa normaalien MSDN-käyttöoikeuksien mukaisesti, eli kehitys- ja testauskäytössä. Aiemmin MSDN-lisenssillä olevia tuotteita saattoi ajaa vain omissa ympäristöissä.
Hyviä parannuksia toisin sanoen. Yksityiskohtaisemmin tietoja täältä. |
| Mielenkiintoisia uutisia kuului Microsoftin ALM Summitista. Git-versionhallinnalle on nyt saatavilla tuki suoraan Visual Studiosta, sillä Microsoft julkisti pari päivää sitten tuovansa tuen Gitille Visual Studioon. Tämä tarkoitaa, että Visual Studio 2012:n on nyt saatavilla esiversio Git-laajennuksesta (VSIX). Tulevaisuudessa Visual Studion seuraavat versiot sisältävät Git-tuen ilman erillista laajennus-osan asennusta.  Lisäksi julkistuksessa kerrottiin, että TFS:n pilvipalveluun (Team Foundation Service) tulee tuki Gitille. Visual Studio 2010:een tukea ei näyttäisi olevan tulossa, joten Team Explorer -integraatio löytyy ainoastaan 2012-versiosta. |
| ITPro.fi-yhteisön ohjelmistokehityksen asiantuntijaryhmä toivottaa kaikille jäsenille ja lukijoille oikein rauhallista joulua ja menestyksekästä uutta vuotta 2013! Nähdään viimeistään TechDaysissä maaliskuussa! |
| Eilen Build-konferenssissa julkaistiin Windows Phone 8:n SDK-kehittäjäpaketti, ja nyt se on kenen tahansa halukkaan ladattavissa. MSDN-portaalista löytyy paljon tietoa asiasta, ja varsinainen SDK 8.0 löytyy täältä. Mielenkiintoista on, että SDK asentuu ainoastaan 64-bittiseen Windows 8 -koneeseen, eli Windows 7 -työasemalla kehitystä Windows Phone 8:lle ei enää tehdä. Lisäksi jos haluaa ajaa sovelluksiaan emulaattorissa (taitaa olla käytännön mahdottomuus kehittää ilman), täytyy kehityskoneen suorittimen tukea SLAT-tekniikkaa (Second Level Address Translation). Kovin vanha kone ei siis käy. Lisäksi seuraavan viikon ajan itselleen saa vuodeksi eteenpäin kehittäjätilin vain $8 dollarilla normaalin n. sadan dollarin sijaan. Lisätietoja alustasta sekä tarjouksesta täältä. |
| Microsoft julkaisi eilen odotetusti Windows 8:n saatavuuden kuluttajille ja pk-yrityksille, ja samaan aikaan Surface-tabletit tulivat myyntiin, ainakin USAssa. Tässä muutamia linkkejä julkistusinfoon: Nyt pitäisi sitten selvittää mitä kautta Surface RT -tabletin saisi helpoiten tänne Suomeen. Muuten kun ei oikein pääse testailemaan miten omat Windows 8 -tyyppiset sovellukset toimivat ARM-alustalla. PS. Build 2012 -konferenssi alkaa pian, myös live-seuraaminen verkosta on mahdollista. PPS. Seuraavaksi sitten Windows Phone 8 ensi maanantaina. |
| Microsoft ilmoitti Windows Phone –kehittäjäblogissa viime viikolla, että tulevan Windows Phone 8:n SDK-kehittäjäpaketin esiversio tulee saataville pian. Tosin, tällä kertaa kehittäjäpaketti ei tule olemaan kaikille avoin, vaan sen saavat ainoastaan ne, joilla on jo Windows Phone -kehittäjätili (App Hub -tilaus) sekä jo julkaistu sovellus Windows Phone 7:n markkinapaikalla. Lisäksi mielenkiintoista on, että anomukset päästä katsomaan esiversiota vaatii hakemuksen tekemisen Connect-palvelussa, eikä aikaa ole liikaa: hakemus umpeutuu aamuyöllä ensi tiistaina 18.9., eli iltapäivästä länsirannikon aikaa maanantaina. Syy rajoitettuun jakeluun on kuulemma siinä, että kaikkia Windows Phone 8:n uusia ominaisuuksia ei ole vielä julkistettu. Lisätietoja löytyy Tood Brixin blogipostauksesta. |
| Tulipa eteen tilanne Windows Phone 7.5 –puhelimessa, jossa Marketplace-kauppapaikasta ei saanut ostettua mitään, vaan ostaminen kaatui toistuvasti virheeseen koodilla C101A006. Ensin ajattelin, että kyseessä olisi jokin väliaikainen ongelma, mutta kun se ei korjaantunut itsestään parissa päivässä, piti kokeilla muita ratkaisuja. Aikani pähkättyämme puhelimen omistajan kanssa tulimme ajatelleeksi, että voisiko jonkinlainen operaattorille rekisteröity esto vaikuttaa asiaan. Kyseisessä puhelimessa on operaattorina Saunalahti (Elisa), ja esimerkiksi tiettyihin palvelunumeroihin on soittaminen kyseisessä liittymässä estetty. Saunalahdella (kuten muillakin operaattoreilla nykyisin) on itsepalveluportaali, jossa voi käydä tekemässä mm. palveluestoihin liittyviä asioita. Ja kuinka ollakkaan, osoittautui, että jos Saunalahden liittymässä on päällä tekstiviestiesto, ei puhelimen kauppapaikasta voi ostaa mitään. Tässä ruutukuva oma.saunalahti.fi-palvelusta:  Jos saat vastaavan virheen c101a006 sovelluksia ostaessasi, ruuvaa kohta “Tekstiviestiesto” asentoon “Ei mitään”, niin jo alkaa ostaminen sujua. Tämä siis ainakin Saunalahti/Elisa-linjoilla, voisin kuvitella että esim. Soneran liittymissä on sama tilanne. |
| Nyt ovat kauan odotetut valmiit bitit täällä: MSDN- ja Technet-tilaajat pääsevät nyt käsiksi Windows 8:n ja Visual Studio 2012:n lopullisiin RTM-versiohin:  Nyt taas riittää tutkittavaa ja päivitettävää moneksi ajaksi. Piuhat siis kuumaksi ja testailemaan! |
| Tässä Metro-sovelluksia kehitellessä mieleen juolahti kysymys siitä, mihin kauppapaikasta (Store) ladatut sovellukset oikein tallentuvat Windows 8 -koneilla. Pienen tutkailun jälkeen selvisi, että kun Storesta ladataan Metro-sovellus, sen .appx-paketti (joka on zip-tiedosto samaan tapaan kuin vaikkapa Windows Phone -sovellusten .xap-tiedostot) puretaan kansioon C:\Program Files\WindowsApps. Tämä kansio on piilokansio, mutta tiedostonhallinnan asetuksista ruuvaamalla sen saa näkyviin:  Kansion käyttöoikeudet on rajattu siten, että edes admin-käyttäjällä ei ole sinne pääsyä. Kansion omistajakin on Trusted Installer, mutta tämän voi toki halutessaan vaihtaa ja sitten antaa itselleen kansioon normaalit käyttöoikeudet.  Komentoriviltä kansioon sen sijaan pääsee astetta kätevämmin. Kun komentorivin avaa admin-oikeuksin (suorita järjestelmänvalvojana), voidaan kansioon mennä tavallisella cd-komennolla. Nyt nähdään kaikkien store-sovellusten tiedostot sellaisena kun Visual Studiosta ne kokoaa käännetyssä muodossa appx-pakettiin.  Peruskäyttäjän kannalta on tietysti merkityksetöntä, mihin sovelluksen asentuvat, kunhan toimivat hyvin. Ylläpidon kannalta sovelluksia voi asentaa koneelle sideloading-nimisellä tekniikalla (ks. Technetistä artikkeli ”How to Add and Remove Apps”), mutta kenties WindowsApps-kansion sisältöä tutkimalla voisi ainakin selvittää, mitä Metro-sovelluksia koneelle on asennettu ja mitä versiota ne ovat. Kehittäjälle WindowsApps-kansion olemassaolo tarkoittaa muutamia muistettavia asioita. Vaikka Metro-sovellukset elävät ajonaikaisesti omassa hiekkalaatikossaan, tarkoittaa purettu tiedostorakenne sitä, että periaatteessa kenellä tahansa on pääsy ohjelmien lähdekoodeihin – varsinkin, jos Metro-sovellus on toteutettu HTML-pohjaisena. Natiivien C++ -sovellusten takaisinkääntö on kaikkein hankalinta. C#- ja XAML-sovellukset ovat välimaastossa. Ne eivät suoraan aukea lähdekoodiksi, mutta käyttämällä vaikka tehokkaita Reflector- tai DotPeek-työkaluja, työ onnistuu muutamalla klikkauksella. Kehittäjä voi toki yrittää hidastaa työtä obfuskaation avulla. Sinänsä lähdekoodien kaivaminen ulos .NET-sovelluksista ei ole uutta, mutta on hyvä muistaa, että vanha sääntö koskee myös Metro-sovelluksia. HTML-pohjaiset sovellukset taas kannattaa ajatella web-sovelluksina, joiden lähdekoodi on joka tapauksessa kaikkien nähtävillä. |
| Visual Studion seuraava versio eli 2012 alkaa olla valmis, ja eilen tuli saataville tuorein versio eli Release Candidate. RC-version voi ladata täältä: http://www.microsoft.com/visualstudio/11/en-us/downloads Myös MSDN-palvelusta voi ladata omansa. Samalla tietysti .NET Frameworkistä tuli ulos 4.5-version julkaisukandidaatti, eli ei muuta kun lataamaan. Visual Studion ReadMe-tiedosto on täällä. |
View in Web Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 |
|
|
|
View in Web Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 |
|
|
|
View in Web Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 |
|
|
View in Web Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/VisioWebAccess/VisioWebAccess.aspx?listguid={ListId}&itemid={ItemId}&DefaultItemOpen=1 0x0 0x1 FileType vdw 255 Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XsnLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 FileType xsn 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.2 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.3 255 Edit in Browser /_layouts/images/icxddoc.gif /asiantuntijaryhmat/ohjelmistokehitys/_layouts/formserver.aspx?XmlLocation={ItemUrl}&OpenIn=Browser&Source={Source} 0x0 0x1 ProgId InfoPath.Document.4 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsx 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsm 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType xlsb 255 View in Browser /asiantuntijaryhmat/ohjelmistokehitys/_layouts/xlviewer.aspx?id={ItemUrl}&DefaultItemOpen=1 0x0 0x1 FileType ods 255 |
|
|