#ImagineCup IT Challenge Short Statistics

 

This article represents a personal analysis based on public information from the LeaderBoard. These interpretations have a personal and does not represent the official position of ImagineCup.

 

Total unique competitors: 1255
Total participating countries: 55

Top 13Country (by number of competitors)

Country CQ1 AvgQ1 CQ2 AvgQ2 CQ3 AvgQ3 ∑ comp Avg Qualified
India 428 11,23 192 11,24 83 10,52 703 11,15 131
Poland 77 13,39 139 11,93 29 13,59 245 12,58 78
Romania 22 13,36 53 12,51 80 14,34 155 13,57 59
Ukraine 15 15,73 34 14,71 61 11,62 110 13,14 41
China 4 12,00 28 12,00 17 11,71 49 11,90 13
France 11 18,27 10 15,60 14 15,57 35 16,43 16
United States 4 15,00 15 13,67 14 12,71 33 13,42 16
Estonia 0 0,00 0 0,00 28 11,18 28 11,18 2
Turkey 1 2,00 14 11,07 12 10,00 27 10,26 5
Indonesia 3 13,33 12 13,17 6 12,17 21 12,90 6
Singapore 1 16,00 6 14,17 10 14,50 17 14,47 7
Czech Republic 3 14,33 4 18,00 6 13,17 13 14,92 7
Germany 3 13,33 1 18,00 8 9,38 12 11,08 5
  • CQ1, CQ2, CQ3 – Competitors per quiz
  • AvgQ1, AvgQ2, AvgQ3 – Average scores per quiz
  • ∑ comp – Total competitors in Q1, Q2, Q3
  • Avg – Total average

In this top are missing this year, countries with tradition in IT Challenge such as Brazil and Egypt. We hope in a spectacular comeback for the last test. New countries in the Top are Ukraine, Estonia and Turkey. A big welcome and congratulations for organizers and ADE.

Quiz-by-Quiz statistics

Quiz Competitors
Q1 610
Q2 553
Q3 408
Grand Total 1571

 

image

The decrease in the number of participants is firstly due to shrinkage of the number of participants from India, from 428 in Quiz 1 down to 192 in Quiz 2 and then down to 83 in Quiz 3.

The great number of participants, from India, in the Quiz 1 reflected the process of selection for the MSP. This technique can be used in the processes of selection of the MSP and in other countries because IT Challenge covers a wide range of technical products from Microsoft: the servers, clients area and area of cloud-computing.

 

Top 14Competitors (by sum of score)

Competitor No of Quizzes Sum of Score Avg of Score Max of Score Country
ESI60596 3 71 23,67 25 France
eljiudia 3 67 22,33 26 Romania
ionut.sinescu 3 58 19,33 20 Romania
picku 3 56 18,67 21 Poland
wasea 3 52 17,33 21 Romania
criminal 3 50 16,67 19 Lithuania
alinmichaels 3 49 16,33 18 Romania
ganesh narayan 3 48 16,00 18 India
baywet 3 48 16,00 17 France
Akhilgarg 3 47 15,67 18 India
kburzminski 2 46 23,00 24 Poland
Kavan 3 45 15,00 19 Poland
Joyal Benni 3 44 14,67 15 India
Yunheng 2 43 21,50 24 Singapore

 

Q. Why is based on the sum of the top scores?

A. Because it is a criterion measure of competitiveness. The more you are involved in competition and better prepared you can get a bigger score and a better position in the rankings.

eljiudia (Romania) has obtained the highest score of the current edition, but ESI60596 (France) has the best average of scores. Last year the highest score was 28. We expect to see an improvement of the results in the following quizzes.

 

Why to participate in IT Challenge?

  • because it is a global competition
  • because you can prove you’re one of the best in the world
  • because you can do for free an evaluation of level of your knowledge
  • because you can do the first step to learn more
  • for first contact with the technologies for which you have to prepare for MCITP certifications
  • for your personal portfolio
  • because you can be hired at the world-renowned firms
  • because you can earn 8000, 4000 or 3000 dollars and a visit a week in Australia
  • to demonstrate that the University and your country are the most present in IT world

For more details about how to participate in IT Challenge please visit our official web page. Also we are appreciate your "Like" on our Facebook page. Imagine Cup is the world’s premier student technology competition. Already more than 300,000 students from more than 142 countries have competed. Join Today!!

#SharePoint 2010 – Enumerate and Deactivate Anonymous access using PowerShell

Acest articol se aplică site-urilor de SharePoint 2010 publicate în Internet care au cerințe de securitate diferite în structură lor.

Una din problemele de securitate în contextul implementărilor complexe este legată de modul de acces la diferite site-uri. Se întâmplă adeseori ca în contextul relaxării securității pentru portalurile de SharePoint publicate în Internet, să ne confruntăm cu un abuz de acces anonim la nivelul anumitor site-uri sau subsite-uri, fapt care poate duce la repudierea în public a unor informații sensibile.

 

Picture1

În diagrama de mai sus site-ul Home are configurat acces anonim, site-urile cu albastru nu au acces anonim iar cele cu roșu au securitate individuală și configurat accesul anonim.

Dacă un anonim accesează adresa: http://home/Site3/ i se vor solicita datele de conectare. În cazul în care apelează http://home/site3/Site32/ nu i se mai cer datele de autentificare pentru a vizualiza pagina. Site-urile 321 și 322 pot avea acces anonim prin moștenire de la site-ul părinte Site32.

Propunerea principală a acestui articol este aceea de inventariere periodică a securității infrastructurii SharePoint în sensul depistării anumitor site-uri web cu conținut sensibil accesibil anonimilor.

În mod clasic pentru a enumera structura unei ferme de SharePoint putem folosi comanda:

stsadm -o enumallwebs > C:\ScriptsOutput\AllSubWebs.xml

care ne permite să exportăm în format XML toată structura din toate bazele de date. Această comandă nu extrage însă și starea de acces în mod anonim la site-ul Web. În aceste condiții trebuie să utilizăm comenzile Powershell specifice SharePoint pentru a putea extrage starea anonimilor.

În articolul lui Brian Beach [1] observăm că există 3 stări ale accesului anonim la un subweb SharePoint: 

  • fără acces anonim: valoarea 0
  • Acces anonim cu configurație implicită de acces la liste și biblioteci: valoarea 1.
  • Acces anonim la întregul site web: valoarea 2.
    Dar pentru a enumera toate site-urile avem nevoie de ceva mai mult. Articolul [3] lui Craig Trulove mi-a salvat destul de multă muncă, pentru că mi-a oferit posibilitatea de a identifica rapid o structură asemănătoare celei extrase de comanda stsadm și care să conțină și starea de acces a anonimilor la site.
    În scriptul de mai jos la linia 89 extrag în structura XML a infrastructurii valoarea parametrului de acces anonim. Copiați codul și salvați-l într-un fișier PS1.
   1: # Autor: Craig Trulove

   2: # WebPage: http://www.craigtothepoint.com/Lists/Posts/Post.aspx?ID=11 

   3: # Modified: Valy Greavu, valygreavu.com

   4:  

   5: #Region Function Definition: EnumAllWebs

   6: function EnumAllWebs

   7: {

   8:     param

   9:     (

  10:         [string]$DatabaseName,

  11:         [string]$DatabaseServer

  12:     )

  13:     #Region Function Definition: FindSiteTemplateReference

  14:     # Checks to see if the specified template is installed in the farm

  15:     # Returns null if template is not found, returns the template if it is

  16:     function FindSiteTemplateReference

  17:     {

  18:         param

  19:         (

  20:             [int]$lcid,

  21:             [string]$TemplateName

  22:         )

  23:         foreach ($template in $templates)

  24:         {

  25:             if (($template.LCID -eq $lcid) -and ($template.Name -eq $TemplateName))

  26:             {

  27:                 return $template

  28:             }

  29:         }

  30:         return $null

  31:     }

  32:     #EndRegion Function Definition: FindSiteTemplateReference

  33:     #Region Function Definition: ProcessOneContentDatabase

  34:     # Runs for each database

  35:     function ProcessOneContentDatabase

  36:     {

  37:         param

  38:         (

  39:             [System.Xml.XmlTextWriter]$writer,

  40:             [Microsoft.SharePoint.Administration.SPContentDatabase]$db

  41:         )

  42:         #Region Function Definition: OutputSiteXml

  43:         # Generates the XML for each site

  44:         function OutputSiteXml

  45:         {

  46:             param

  47:             (

  48:                 [System.Xml.XmlTextWriter]$writer,

  49:                 [Microsoft.SharePoint.SPSite]$site

  50:             )

  51:             $writer.WriteStartElement("Site")

  52:             $writer.WriteAttributeString("Id", $site.ID)

  53:             $writer.WriteAttributeString("OwnerLogin", $site.Owner.LoginName)

  54:             # Check if it is a host header site collection

  55:             if ($site.HostHeaderIsSiteName)

  56:             {

  57:                 $writer.WriteAttributeString("HostHeader", $site.HostName)

  58:             }

  59:             if ($site.AllWebs.Count -gt 0)

  60:             {

  61:                 $writer.WriteStartElement("Webs")

  62:                 $writer.WriteAttributeString("Count", $site.AllWebs.Count)

  63:                 foreach ($web in $site.AllWebs)

  64:                 {

  65:                     try

  66:                     {

  67:                         $reference = FindSiteTemplateReference -lcid $web.Language -TemplateName "$($web.WebTemplate)#$($web.Configuration)"

  68:                         # Check if web template is properly installed

  69:                         if ($reference -eq $null)

  70:                         {

  71:                             $str = "Unknown"

  72:                         }

  73:                         elseif ($web.Configuration -eq -1)

  74:                         {

  75:                             $str = [string]::Empty

  76:                         }

  77:                         else

  78:                         {

  79:                             $str = "$($web.WebTemplate)#$($web.Configuration)"

  80:                         }

  81:                         $writer.WriteStartElement("Web")

  82:                         $writer.WriteAttributeString("Id", $web.ID)

  83:                         $writer.WriteAttributeString("Url", $web.Url)

  84:                         # Extract AnonymousState 

  85:                         # AnonymousState determines if anonymous users have access to the site collection as follows:

  86:                         # A "0" disables anonymous access. In other words, anonymous users have no access to a Web site.

  87:                         # A "1" allows default anonymous access. This specifies that anonymous users can access lists and libraries if the lists and libraries allow anonymous access.

  88:                         # A "2" specifies that anonymous users can access the entire Web site.

  89:                         $writer.WriteAttributeString("Anonymmous", $web.AnonymousState)

  90:                         # Handle cases where str var not set or set to empty string

  91:                         if (($str -ne $null) -and ($str -ne [string]::Empty))

  92:                         {

  93:                             $writer.WriteAttributeString("TemplateName", $str);

  94:                         }

  95:                         if ($web.Configuration -ne -1)

  96:                         {

  97:                             $writer.WriteAttributeString("TemplateId", $web.WebTemplate);

  98:                         }

  99:                       $writer.WriteEndElement()

 100:                     }

 101:                     catch [Exception]

 102:                     {

 103:                     }

 104:                     finally

 105:                     {

 106:                         $web.Dispose()

 107:                     }

 108:                 }

 109:                 # End element for webs

 110:                 $writer.WriteEndElement()

 111:             }

 112:             # End element for site

 113:             $writer.WriteEndElement()

 114:         }

 115:         #EndRegion Function Definition: OutputSiteXml

 116:         $writer.WriteStartElement("Database")

 117:         $writer.WriteAttributeString("SiteCount", $db.CurrentSiteCount)

 118:         $writer.WriteAttributeString("Name", $db.Name)

 119:         $writer.WriteAttributeString("DataSource", $db.ServiceInstance.NormalizedDataSource)

 120:         # Only process sites if any exist

 121:         if ($db.Sites.Count -gt 0)

 122:         {

 123:             $writer.WriteStartElement("Sites")

 124:             foreach ($site in $db.Sites)

 125:             {

 126:                 try

 127:                 {

 128:                     OutputSiteXml -writer $writer -site $site

 129:                 }

 130:                 catch [Exception]

 131:                 {

 132:                 }

 133:                 finally

 134:                 {

 135:                     $site.Dispose()

 136:                 }

 137:             }

 138:             # End element for sites

 139:             $writer.WriteEndElement()

 140:         }

 141:         #End element for database

 142:         $writer.WriteEndElement()

 143:     }

 144:     #EndRegion Function Definition: ProcessOneContentDatabase

 145:     

 146:     # Create bool vars for passing to sub functions

 147:     $local = Get-SPFarm

 148:     $services = New-Object Microsoft.SharePoint.Administration.SPWebServiceCollection $local

 149:     $cs = [Microsoft.SharePoint.Administration.SPWebService]::ContentService

 150:     $templates = Get-SPWebTemplate

 151:     $StringWriter = New-Object System.IO.StringWriter

 152:     $writer = New-Object System.XMl.XmlTextWriter $StringWriter

 153:     $writer.Formatting = "indented"

 154:     $writer.WriteStartElement("Databases")

 155:     # if database was specifed process only that database

 156:     if ($DatabaseName)

 157:     {

 158:         # if databaseserver was not specified use default

 159:         if ($DatabaseServer -eq $null) { $DatabaseServer = $cs.DefaultDatabaseInstance.DisplayName }

 160:         $db = Get-SPContentDatabase -DatabaseName $DatabaseName -DatabaseServer $DatabaseServer

 161:         # Process database

 162:         ProcessOneContentDatabase -writer $writer -db $db 

 163:     }

 164:     # otherwise process all databases

 165:     else

 166:     {

 167:         foreach ($service in $services)

 168:         {

 169:             foreach ($application in $service.WebApplications)

 170:             {

 171:                 foreach ($database2 in $application.ContentDatabases)

 172:                 {

 173:                     # Process database

 174:                     ProcessOneContentDatabase -writer $writer -db $database2

 175:                 }

 176:             }

 177:         }

 178:     }

 179:     # End element for databases

 180:     $writer.WriteEndElement()

 181:     # Return output as string

 182:     $StringWriter.ToString()

 183:     $StringWriter.Flush()

 184:     $writer.Flush()

 185: }

 186: #EndRegion Function Definition: EnumAllWebs

 187: # Call function

 188: enumallwebs

Execuția:

.\enumallsubwebs.ps1 > C:\ScriptsOutput\AllSubWebs.xml

crează fișierul AllSubWebs.xml pe care-l putem deschide și analiza cu Excel.

Coloanele care ne interesează sunt:

    Scriptul lui Craig conține o mică eroare care împiedică enumerarea corectă a site-urilor corespondente bazei de date MySite, dar de obicei această aplicație web nu se configurează pentru acces anonim.
    Fișierul XML deschis în Excel îl putem filtra pentru a identifica site-urile cu acces anonim, a le evalua în sensul dacă ele corespund politicilor instituției de acces. În cazul în care dorim să dezactivăm accesul anonim pentru anumite site-uri putem să compunem în Excel comenzile de dezactivare care trebuie să fie de felul următor:
       1: # Preluare într-o variabilă PowerShell a valorii curente a site-ului care are activat acces anonim

       2: $Web = Get-SPWeb http://home/site3/Site32/ 

       3: # Dezactivarea accesului anonim.

       4: $Web.AnonymousState = 0

       5:  

Operațiunea se repetă pentru toate site-urile ale căror acces anonim trebuie să fie dezactivat.

Succes!

Referințe:

#ImagineCup 2012 – News (2)

Noutăți de pe de pe terenul de joacă cu imaginația, tehnologiile și pasiunea.

În numărul trecut vă anunțam cu tristețe despre dispariția sau transformarea unor competiții consacrate și istorie bogată atât la nivel internațional cât și pentru valoarea premiilor pe care le-a adus României: Embedded Development și Digital Media.

 

În acest număr anunțăm apariția unor noi competiții: Azure Challenge și Windows Phone Challenge.

 

Azure Challenge

Regulile competiției par destul de clare și sunt specificate aici. Este o competiție pe echipe și vestea faină este că mentorii vor însoți echipa în finala de la Sydney. Echipele pot fi formate din maxim 4 studenți + 1 Mentor. Mentorul nu trebuie obligatoriu să fie un cadru didactic ci poate fi în același timp un reprezentant al unui ONG sau chiar un angajat din mediul Privat.

    Date importante: Runda 1 constă în realizarea unui prototip și începe de astăzi 18 Nov până pe data de 13 martie 2012. Runda a doua are doar o lună pentru implementarea soluției și trimiterea acesteia spre jurizare.

    Din cunoștințele mele, Zoli e mare fan al cloudificării așa că nu ezitați să-l contactați pentru suport și îndrumare către resurse de learning și nu numai.

    Alte resurse pentru începători puteți găsi pe Școala de Cloud și în detaliu niște înregistrări video despre Azure: http://www.scoaladeeficienta.ro/articole/380/am-publicat-inregistrarea-cursului-scolii-de-cloud. Enjoy! Aveți de toate… determinarea depinde numai de fiecare. Poate premiile de 8, 4 și 3 mii de dolari vă pot motiva mai mult?

    Având în vedere că este o competiție la început, cine află primul și se apucă de învățat are cele mai multe șanse de a accede în finala!

    Succez și nu ezitați nici o clipă. Este un motiv în plus să învățați ceva, pentru că vă poate fi util și în profesia viitoare.

    Pagina oficială:

Windows Phone ChallengeWindows Phone

    Sponsorul principal al secțiunii este Nokia! Pe site-ul lor nu există nici o informație așa că doar în Imagine Cup putem vedea aceste noutăți.
    Detalii despre secțiune pe pagina sa (lincată mai sus :) ) sau aici.
    Pe scurt, este o competiție pe echipe (maxim 4 studenți) + 1 mentor. Mentorul are asigurată deplasarea și cazarea în Finala din Sydney.
    Atenție: Windows Phone Challenge nu este o competiție pentru jocuri! Pentru jocuri trebuie să vă înscrieți în secțiunea Game Design: Phone Competition.
    Încă ceva important: Trebuie să aveți mare grijă la copyright-ul a tot ceea ce folosiți în dezvoltarea aplicațiilor.

Date importante: Runda 1 constă în realizarea unui prototip și începe de astăzi 18 Nov până pe data de 13 martie 2012. Runda a doua are doar o lună pentru implementarea soluției și trimiterea acesteia spre jurizare.

Ce ar trebui să știți: Orice aplicație dezvoltată de voi și care este apreciată de juriu poate să vă aducă sume de bani majore pe viitor. Sunteți proprietarul codului și al aplicație. Modul în care o veți fructifica pe viitor depinde numai de voi. Modelul de business pentru aplicațiile pe mobile este să vinzi aplicația la prețuri mici dar la cât mai mulți oameni. Am ceva cunoscuți care lucrează în domeniu dar trebuie să-i caut. Dacă se autosesizează îi rog să-și dea cu comentariul pe aici și poate formăm o echipă competitivă și în această secțiune. Menționez că mentori pot fi cadre didactice, reprezentanți ai ONG-urilor sau angajați sau proprietari ai firmelor private. Găsiți studenții, scoateți-i din letargie și puneți-i să facă bani!

Un fel de resurse despre Windows Phone în România puteți găsi și pe aici.

 

Alte secțiuni

La Software Design nimic nou sub soarele românesc. Doar un interviu cu super-căpitanul de la SD, Rob Miles. O altă noutate este aceea că în SD utilizarea dispozitivelor mobile are caracter opțional. Sunt două secțiuni deja dedicate pentru telefoane.

La Game Design avem doar niște informații legate de programul orar al căpitanului Andrew Parsons, care se ”pune la dispoziția” studenților pentru întrebări și discuții, clarificări după un anumit orar bine stabilit. De asemenea puteți vizualiza un scurt interviu cu Andrew Parsons.

La IT Challenge am avut Quiz 2 cu o participare destul de bună din partea României. Nu mai fac statistici pentru că nu prea stârnesc interes. Următorul Quiz la IT Challenge este pe data de 1 Decembrie 2011. Dacă tot stați acasă nu ratați această sesiune.

Resurse pentru IT Challenge avem colecția de link-uri utile oferite de Cosmin Ilie dar și http://www.microsoftvirtualacademy.com/Home.aspx . Avem și un interviu cu Rand Morimoto căpitanul de la IT Challenge. Momentan eu sunt out-off competition, dar mă găsiți pe forumuri și pe pagina de Facebook a IT Challenge.

 

Poate vă mai interesează și: http://paper.li/f-1319192195 un jurnal on-line în care se adună zilnic referințe despre Imagine Cup, și de asemenea, dacă doriți să revedeți transcriptul de la sesiunea de deschidere a Finalei Imagine Cup 2011.

Drum bun către Australia!

Blog la WordPress.com.

SUS ↑