Tutkimuksen perusta

Tutkimuksen perusta

Suomen korkeakoulujen ja tutkimuksen perustana on tutkimusverkko, joka kattaa merkittävimmät korkeakoulupaikkakunnat ja tarjoaa toimintavarmat ja ruuhkattomat tietoliikenneyhteydet. Riittävän kapasiteetin valokuituverkkoa tarvitaan suurteholaskentaan ja suurien data-aineistojen siirtämiseen.

Verkkoa ylläpitävät jäsenorganisaatiot,  joiden tarkoituksena on edistää koko Suomen korkeakoulu- ja tiedeyhteisöä palvelevan tietoliikenneverkon kehitystä ja ylläpitoa. Yhteistyön avulla toimintaan liittyvää tietoa ja taitoa voidaan jakaa jäsenorganisaatioiden välillä. Koska monet ongelmista ovat usein yhteisiä, on keskinäinen yhteistyö niiden selvittämiseksi luontevaa. Tutkimusverkko ja sen palvelut ovat omakustanteisia ja suurin osa palveluista on käytettävissä jäsenmaksun hinnalla.

Kotiorganisaation myöntämillä HAKA-tunnuksilla pääsee moniin eri verkkopalveluihin ja langattomaan eduroam-verkkoon kotimaassa ja ulkomailla.

Verkon ulkomaanyhteyksistä vastaa Pohjoismainen yhteistoiminto NORDUnet. Toimivuuden turvaamiseksi käytössä on kolme eri liityntäpistettä: Espoo, Helsinki ja Oulu. NORDUnet-verkon kautta saadaan yhteys Euroopan tutkimuksen Géant-runkoverkkoon ja muihin kansainvälisiin tutkimuksen verkkoihin.

Avoimen lähdekoodin ohjelmistot

Avoimen lähdekoodin ohjelmistot, avoin data ja avoimet rajapinnat ovat keskeisiä tekijöitä, joiden varaan rakennamme kestävää digitaalista ekosysteemiä.

Avoin lähdekoodi on tapa kehittää ja jakaa tietokoneohjelmistoja. Avoin lähdekoodi tarkoittaa paitsi maksuttomuutta, myös sitä, että ohjelmiston toiminta on käyttäjän tutkittavissa ja käyttäjä voi muokata ohjelmistoa omiin tarkoituksiin sopivaksi ja mahdolliset virheet voidan havaita. Tämän vuoksi avoin lähdekoodi sopii erityisen hyvin  tieteellisten ohjelmistojen kehittämiseen. Usein tieteellisillä avoimen lähdekoodin ohjelmistoilla on kehittäjiä maailmanlaajuisessa tutkijayhteisössä.

Monet tieteessä ja tutkimuksessa käytetyt palvelut perustuvat avoimen lähdekoodin ohjelmistoihin. Avoimen lähdekoodin ohjelmistot ovat esimerkiksi digitaalisen pitkäaikaissäilytyksen taustalla ja niiden avulla on rakennettu Fairdata-palveluita. Ja tälläkin hetkellä lukemasi verkkosivusto on tehty avoimen lähdekoodin ohjelmistolla. Tunnetuin avoimen lähdekoodin ohjelmisto on Linux, joka pyörittää maailman supertietokoneiden lisäksi mm. älypuhelimia.

Vuonna 1991 eräs opiskelija tarjosi tekemäänsä Freax-nimistä avoimen käyttöjärjestelmän alkua tutkimusverkon vapaaehtoiselle ylläpitäjälle. Tämä ei kuitenkaan pitänyt nimeä kovin hyvänä, joten ylläpitäjä teki sille hakemiston /pub/OS/Linux – opiskelijan etunimen mukaan.

Kyseinen opiskelija, Linus Torvalds, mieltyi nimeen ja julkisti 17.9.1991 Linuxin version 0.0.1 saataville ftp.funet.fi:stä.

Julkistuksesta on sittemmin kasvanut eräs maailman suosituimmista käyttöjärjestelmistä, jota käytetään autoista avaruuteen kaikenlaisissa laitteissa – antureista ja androideista tietoliikenneverkkoihin ja superkoneisiin. Sitä jaetaan edelleen myös ftp.funet.fi:stä.

Videot

CSC – Suomalainen tutkimuksen, koulutuksen, kulttuurin ja julkishallinnon ICT-osaamiskeskus

Katso video YouTubessa »

Uusimmat blogit ja artikkelit

Lisää sisältöjä

Funetin juhlavuosi: 40 vuotta toimintaa ja 35 vuotta internetissä

Tänä vuonna on kulunut 40 vuotta Funet-tietoverkon perustamisesta ja 35 vuotta Suomen liittymisestä maailmanlaajuiseen internetiin. Juhlavuottaan viettävä Funet voi olla ylpeä monista saavutuksistaan, eikä Suomen liittäminen internetiin ole niistä vähäisin.

Lue lisää »

EISCAT 3D -tutkajärjestelmä mullistaa ilmakehätutkimuksen

Pian valmistumassa olevan uuden EISCAT 3D -tutkajärjestelmän avulla saadaan revontulista kolmiulotteista kuvaa. Hanketta koordinoi Oulun yliopiston Sodankylän geofysiikan observatorio. CSC on hankkeessa tiiviisti mukana.

Lue lisää »

Poikkeustilasta pysyviin rakenteisiin

Korkeakoulujen IT-johtajien verkostot AAPA ja FUCIO sekä CSC kutsuivat korkeakoulujen pedagogiikan, opiskelun ja opetuksen tuen ja hallinnon sekä muut kiinnostuneet ideapankki.csc.fi -webinaariin kesäkuun lopussa.

Lue lisää »

Koronavirus laitetaan kuriin tieteen tietokantojen avulla

Koronavirus voidaan kukistaa kansainvälisellä yhteistyöllä ja tiedon jakamisella. Apuna ovat sähköiset tutkimusinfrastruktuurit. Suomi on jäsenenä näissä ja hyödyt ovat kiistattomat.

Lue lisää »
 
Virhe tapahtui prosessoidessa esitysmallia.
The following has evaluated to null or missing:
==> assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL)  [in template "10154#10192#411426" at line 10, column 32]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign viewURL = assetRenderer.getUR...  [in template "10154#10192#411426" at line 10, column 13]
----
1<#assign liferay_portlet = taglibLiferayHash["/META-INF/liferay-portlet.tld"] /> 
2<#assign liferay_ui = taglibLiferayHash["/META-INF/liferay-ui.tld"] /> 
3 
4<div class="kooste25 <@liferay_portlet.namespace />container"> 
5    <#list entries as entry> 
6        <#assign entry = entry /> 
7        <#assign assetRenderer = entry.getAssetRenderer() /> 
8        <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) /> 
9        <#if assetLinkBehavior != "showFullContent"> 
10            <#assign viewURL = assetRenderer.getURLViewInContext(renderRequest, renderResponse, viewURL) /> 
11        </#if> 
12         
13         
14        <#if entry.getClassName() == "com.liferay.journal.kernel.model.JournalArticle"> 
15         
16            <#assign article = entry.getAssetRenderer().getArticle()/> 
17            <#assign document = saxReaderUtil.read(article.getContentByLocale(locale.toString())) /> 
18            <#assign categories = entry.getCategories() /> 
19            <#assign headline = document.valueOf("//dynamic-element[@name='Headline']/dynamic-content/text()") /> 
20            <#assign summary = htmlUtil.escape(assetRenderer.getSummary(locale)) /> 
21    
22            <div class="boksi"> 
23                <div class="article-content"> 
24        <#list categories as category> 
25                     
26                            <#assign categoryTitle = category.getTitle("en_US", true) /> 
27                            <#assign categoryClass = categoryTitle?lower_case/> 
28                            <#assign categoryClass = categoryClass?replace("[^\\d\\w]", "-", "r")/> 
29 
30                            <#assign categoryId = category.getCategoryId() /> 
31                         
32                     
33                     
34                            <#if category.getTitle(locale.toString(), true) == "Artikkeli" || category.getTitle(locale.toString(), true) == "Article"> 
35                                <div class="ac-${categoryClass}">${category.getTitle(locale.toString(), true)}</div> 
36                            </#if> 
37                     
38                    </#list> 
39                <h3><a href="${viewURL}" target="_blank">${headline}</a></h3> 
40              
41                     
42               
43                   <section class="text"> 
44 
45                        <small><@getMetadataField fieldName="publish-date" /></small> 
46                        <p class="article-summary">${stringUtil.shorten(htmlUtil.stripHtml(summary), 200)}</p> 
47 
48                      <p><a class="readmore" href="${viewURL}" target="_blank"><@liferay.language key="read-more" /> »</a></p>   
49                 
50                    </section>  
51                     
52                
53                </div> 
54         
55                     
56             
57                 
58            </div> 
59        </#if> 
60 
61    <#if entry.getClassName() == "com.liferay.blogs.kernel.model.BlogsEntry"> 
62        <div class="boksi"> 
63	 
64		<#assign curEntry = entry /> 
65        <#assign categories = entry.getCategories() /> 
66	 
67		<#assign bloglink = "https://www.csc.fi/web/blog/post/-/blogs/"> 
68		<#assign urltitle = entry.getAssetRenderer().getUrlTitle() /> 
69	 
70		 
71        <div class="blog-content"> 
72 
73           <#list categories as category> 
74                     
75                    <#assign categoryTitle = category.getTitle("en_US", true) /> 
76                    <#assign categoryClass = categoryTitle?lower_case/> 
77                    <#assign categoryClass = categoryClass?replace("[^\\d\\w]", "-", "r")/> 
78 
79                    <#assign categoryId = category.getCategoryId() /> 
80                    <#assign portletURL = renderResponse.createRenderURL() /> 
81                    ${portletURL.setParameter("resetCur", "TRUE")} 
82                    ${portletURL.setParameter("categoryId", categoryId?string)} 
83                     
84                    <#if category.getTitle(locale.toString(), true) == "Blogi" || category.getTitle(locale.toString(), true) == "Blog"> 
85                        <div class="ac-${categoryClass}">${category.getTitle(locale.toString(), true)}</div> 
86                    </#if> 
87                     
88            </#list> 
89            <h3><a href="${bloglink}${urltitle}" target="_blank">${htmlUtil.escape(curEntry.getTitle())}</a></h3> 
90            
91			<section class="text"> 
92				<#assign summary = curEntry.getDescription() /> 
93 
94			 
95				 
96				<p class="article-summary">${stringUtil.shorten(htmlUtil.stripHtml(summary), 200)}</p> 
97              <p><a class="readmore" href="${bloglink}${urltitle}" target="_blank"><@liferay.language key="read-more" /> »</a></p>  
98                 
99			</section> 
100		</div> 
101	 
102        
103	</div> 
104    </#if> 
105    </#list> 
106</div> <!--csc-article-list--> 
107 
108<script type="text/javascript"> 
109    var container = document.querySelector('.csc-article-list'); 
110    var msnry; 
111 
112    // initialize Masonry after all images have loaded 
113    imagesLoaded( container, function() { 
114        msnry = new Masonry( container ); 
115    }); 
116</script> 
117 
118<#macro getMetadataField fieldName> 
119    <#if stringUtil.split(metadataFields)?seq_contains(fieldName)> 
120    <span class="metadata-entry metadata-" ${fieldName}"> 
121        <#assign dateFormat = "dd.MM.yyyy" /> 
122 
123        <#if fieldName == "author"> 
124            <@liferay.language key="by" /> ${portalUtil.getUserName(assetRenderer.getUserId(), 
125        assetRenderer.getUserName())} 
126        <#elseif fieldName == "categories"> 
127            <@liferay_ui["asset-categories-summary"] 
128            className=entry.getClassName() 
129            classPK=entry.getClassPK() 
130            portletURL=renderResponse.createRenderURL() 
131            /> 
132        <#elseif fieldName == "create-date"> 
133        ${dateUtil.getDate(entry.getCreateDate(), dateFormat, locale)} 
134        <#elseif fieldName == "expiration-date"> 
135        ${dateUtil.getDate(entry.getExpirationDate(), dateFormat, locale)} 
136        <#elseif fieldName == "modified-date"> 
137        ${dateUtil.getDate(entry.getModifiedDate(), dateFormat, locale)} 
138        <#elseif fieldName == "priority"> 
139        ${entry.getPriority()} 
140        <#elseif fieldName == "publish-date" && entry.getPublishDate()??> 
141        ${dateUtil.getDate(entry.getPublishDate(), dateFormat, locale)} 
142        <#elseif fieldName == "tags"> 
143            <@liferay_ui["asset-tags-summary"] 
144            className=entry.getClassName() 
145            classPK=entry.getClassPK() 
146            portletURL=renderResponse.createRenderURL() 
147            /> 
148        <#elseif fieldName == "view-count"> 
149            <@liferay_ui["icon"] 
150            image="history" 
151            /> 
152 
153        ${entry.getViewCount()} <@liferay.language key="views" /> 
154        </#if> 
155    </span> 
156    </#if> 
157</#macro>