Opera Mobile 9.7 Beta 1 for Windows Mobile

June 8th, 2009

Da er den endelig ute! Opera Mobile 9.7 Beta 1 kan lastes ned fra http://www.opera.com/mobile/download/!

Etter å ha testet den en liten dag har jeg følgende konklusjon:

Positivt:
- Utrolig rask til å laste inn nettsider! (Med Turbo-funksjonen på)
- Scrolling på sidene er betydelig bedre enn f.eks. Opera mobile 9.5 og Apple iPhone Safari
- Og som vanlig, oversiktlig og god meny.

Negativt
- Selve applikasjonen er litt tregere enn 9.5
- Litt ustabil
- Ved bruk av Turbo-funksjonen blir rendringen av sidene litt feil. Det ser ut som at en del sider også oppfatter Turbo-funksjonaliteten til Opera Mobile 9.7 som en Opera Mini-browser og gir mobil-utgave av sidene.(Dette selv om “mobil-visning” er skrudd av i innstillinger.
- Browseren kunne med fordel ha justert opp bredden på siden til oppløsningen på skjerm.

Men tatt i betraktning at dette er en beta-utgave er dette likevel meget bra. Det at den laster inn sider som før tok over 1 minutt på under 10 sekunder med turbo-funksjonalitet og scrolling som ikke “lugger” er en utrolig stort fremskritt for oss som bruker Windows Mobile.

Takk Opera!

Les også:
http://my.opera.com/operamobile/blog/2009/03/26/opera-mobile-9-7-beta-for-windows-mobile
http://www.opera.com/press/releases/2009/06/08/

Israr Khan IT, IT: Nyheter , , ,

Facebook på Windows mobile

May 9th, 2009

fbwindowsmobileDa er Facebook-klienten for Windows Mobile fra Microsoft endelig offisiell!  Tidligere har ver. 0.4 og 0.6 lekket ut - men nå har altså Microsoft lansert ver. 1.0.0.7 for alle:)

Facebook-klienten er godt utviklet, men lider fortsatt av noen mindre småbugs - dog fullt brukbar.

Blant annet er følgende funksjoner implementert:

  1. News feed
  2. Statusoppdatering
  3. Bildeoppdatering
  4. Bildegalleri
  5. Inbox
  6. Opplasting av bilder
  7. Integrert telefonbok





En av de mer “spennende” funksjonene er sistnevnte som lister opp alle dine kontakter med telefonnr. og lar deg sende melding, mms og ringe til kontakten direkte fra applikasjonen!

Klienten fungerer både for telefoner med og uten touch-screen i QVGA, VGA og WVGA - og burde tilsynelatende også fungere for andre oppløsninger.

scr_facebook02





scr_facebook01

Last ned fra:

 

http://www.microsoft.com/windowsmobile/en-us/downloads/facebook.mspx
og besøk også:
http://forum.xda-developers.com/showthread.php?t=489379

Israr Khan IT, IT: Nyheter , , , ,

C#, ASP.net, User controls og event handling - Del 1

April 16th, 2009

cacheVed utvikling av nettbaserte applikasjoner opplever jeg ofte å måtte kalle opp funksjoner fra en user control - og frem til nå har jeg vel funnet ut de to måtene jeg foretrekker å gjøre dette på er ved å bruke “foreldre”(parenting) eller eventhandling.

I denne posten tar jeg for meg sistnevnte. En event er en handling som blir utført, og som fører til en reaksjon. Et typisk eksempel på dette kan være når en bruker trykker på en knapp, som kaller opp en funksjon 0g som skriver ut teksten “hello world” et annet sted.

For den typen, enkle handlinger blir fremgangsmåten beskrevet her litt overkill - men ta et annet eksempel:

Du har en tab-container, med flere faner - en av fanene inneholder en user control med en knapp som skal la deg skifte fane. Hvordan kan du fra innsiden av denne user controllen klare å skifte fanen på den omkringliggende siden? Og hvordan skal du kunne påse at du heller ikke “låser” koden i din user control ved at du integrer koden til å være sterkt knyttet til siden med selve tab containeren?

I forkant av dette må du ha .net Framework 3.5, samt asp.net ajax Control toolkit(Dette er kun nødvendig for tab-containeren)

1Vi begynner med å opprette et nytt prosjekt av typen “ASP.net Web application” - Påse at du bruker .net Framework 3.5.

2Høyreklikk på prosjektet ditt og legg til et nytt element. Velg “Web User Control”.

- Det er alt jeg rakk å skrive for i dag - Fortsettelse følger :)

Israr Khan IT, IT: Utvikling , , , , , , ,

Google Android på HTC-telefoner

April 14th, 2009

android10Android har vært ute på markedet en stund - men det er fortsatt lenge til vanlig folk kan tasse rundt med en mobil som kjører Android. I mellomtiden kan du prøve ut Google Android på eksisterende Windows Mobile Telelefoner. På XDA-developers.com kan du laste ned image for å boote opp Android(og andre Linux-distroer).  (Linken er for Touch HD)

(Ps: Når du booter opp, vil det vises to små, røde prikker øverst til venstre og nederst til høyre. Disse må du trykke på for å kaliberer skjermen)

Sjekk ut http://wiki.xda-developers.com/index.php?pagename=BlackstoneLinux






Device / Task Status
Boot OK
Graphical interface OK
Touch screen OK
Phone Partial Outgoing/Ingoing calls, but no sound.
SMS OK
MMS ???
GPRS/EDGE/3G/HSUPA NOK
Wifi NOK
Bluetooth NOK
Access to SD / Internal Storage OK
Main / Second camera NOK
Hardware Home/Back/Menu/Talk/End buttons OK
Hardware Volume buttons OK
Hardware On/Off button Partial
GPS ??
Stylus detection ??
USB Partial (usbnet is working)

Israr Khan IT, IT: Diverse , , , ,

Fremtidens datasikkerhet…

April 14th, 2009

vmlarsson

Det begynner å bli en stund siden jeg leste Stieg Larsson - Menn som hater kvinner, og i etterkant kom jeg over en artikkel som kritiserte Stieg Larsson for manglende realisme på flere steder. Et av punktene som ble kritisert var Lisbeth Salanders hacking.(Vel, uttrykket heter vel egentlig cracking… Men det får nå gå - de facto standard må vel sies å være hacking)

Hennes hacking kan beskrives som en trojaner som legger seg inn på maskinen til offeret, for så å bit for bit replisere hele systemet. Etter gjentatte iterasjoner er hele systemet speilet på en ekstern maskin og offeret vil til slutt ikke lenger jobbe på sin egen maskin, men på en ekstern, overvåket maskin.

Nå - gitt vi ser bort fra slike hindringer som båndbredde, opptid o.s.v., må jeg si at dette egentlig ikke er en så dum idé! Nå vil sikkert flere tenke at en keylogger eller screendumper vil gjøre samme nytten, men dette er likevel i mitt syn et titalls skritt bedre.

I etterkant har jeg tenkt litt over den praktiske utførselen av et slikt angrep - og kom til å tenke på VMware VMotion som. En slik teknologi kan godt på vei være nøkkelen til å gjennomføre et slikt angrep. Hw.no beskriver VMotion slik: “VMware VMotion er en tjeneste som flytter kjørende virtuelle maskiner fra en fysisk server til en annen uten å påvirke sluttbrukerne. “* - dog en sannhet med modifikasjoner: Dette kan ikke gjøres fra og til en hvilken som helst klient, men ideen er der!

Så kanskje Stieg Larsson ikke var fullt så på villspor når han beskrev Lisbeth Salander og hennes hacking? :)

Israr Khan IT, IT: Diverse , ,

Nedsnødd bil

February 25th, 2009

Fant denne på vei til skolen i dag ;)

(Ja, det er en bil!)












Israr Khan Annet, Annet: Bilder, Uncategorized

links for 2008-11-25

November 25th, 2008

Prosjekt: Radio Kebab

November 7th, 2008

ENDELIG! Jeg fant CDen med prosjektene våre fra media-linja på Sogn videregående skole!

Dette betyr at det vil i tiden fremover bli lagt ut en del video, lyd og bilder fra denne tiden. Mye av dette kan kategoriseres som ren humoristiske innslag, men også flere av heller seriøs karakter.

Det første, som er Radio-Kebab, tilhører førstnevnte og skulle være et radio-show om kebab - rett og slett :)

Med på klippet finner du Simen Sandvik, Kristian Finvold og meg selv, Israr Khan. I tillegg hører du stemmene til Hanne Kulterud og Jide Okoroafor.

Lydklippet kan lastes ned fra:

http://rapidshare.com/files/161536767/kebab.mp3

Israr Khan Annet: Humor, Litt av hvert , , ,

Windows 7 - En liten preview

October 29th, 2008

Endelig kom jeg over en del video og screenshots av Windows 7 som viser en del ny funksjonalitet. Selve GUI er fortsatt ganske lik det i Windows Vista, men jeg tror vi kan regne med en del forbedringer på den fronten også når den endelige utgaven kommer.

Det vises hvordan Network and Sharing center ha blitt forbedret, samt også en imponerende oppstartstid! Sjekk ut :)

http://gizmodo.com/5069661/windows-7-walkthrough-boot-video-and-impressions

Israr Khan IT, IT: Nyheter , ,

Oppgave i Perl - Brukerhåndtering i Linux

October 28th, 2008

Perl

Fikk følgende oppgave:

We will simulate a site with many users on a universtity. You will be supplied with a text-file containing
the names, addresses, telephonenumber etc and the courses (code) that the new students will have a certain term.

The format of the textfile is:

Lastname,Firstname:studentnumber:Comma separated list of courses:Address (comma separated):Telephonenumber

There will be one student per line, and you can assume that there is no spelling or other errors in the file.

Write a Perlscript that take the file described above as input, and that does the following:

· Generates usernames based on the real name of the students. The usernames should not be longer than six characters. Be sure that the usernames are unique.

· Generate real passwords for each user. This output should be written to STDOUT only.

· Generates encrypted passwords for each user.

· Generates a unique UID for each user, and assigns a default group (GID).

· Generates a home directory for each user containing configuration files for a login shell and a public html subdirectory. All with correct ownership and permissions.

· Generates a homepage for each user containing the student’s name, address, thelephonenumber and a list of the courses the student take. (The design of the student is not important.)

· The script should then modify the “user database” files in /etc, that is passwd, group and shadow, such that the user will be able to login to the system.

· The users personal webpage should be accessed using the “tilde” notation, and each user should be able to write CGI-script. Hence you must generate a file containing the needed directives for the configuration files for the webserver.

Eksempel på input:(fiktiv data)

Karlsrud, Mariell:s7102913:IN 102, MA 002, MA 003, MA 103, FY 002:Balders Plass 29,2101 Bondestad:94463785
Fjellbo, Herman:s4902671:IN 003, KJ 002, GF 002:Smuget 102,1006 Andeby:91665797
Bonsak, Marius:s7917498:IN 002, FY 100:Thors gate 48,1002 Lilleby:93984159

Dette ble løst på følgende måte:(Legg merke til at denne scriptet ikke gjør noe i praksis, siden skriving til passwd, group og shadow er erstattet med dummylinjer. For å aktivere scriptet må du ta bort kommentering på open, print og close)

Kan lastes ned her:
Password-script

  1 #!/usr/bin/perl
  2
  3 use strict;

  4
  5 my $GID = get_startGID();
  6 my $UID = get_startUID();

  7 my $shell = "/bin/bash";
  8
  9 open(FIL,"input.txt");

 10
 11 foreach(<FIL>)
 12 {
 13 	

 14 	chomp($_);
 15
 16 	my $username = get_username($_[0]);

 17 	my $password = get_password();
 18 	my $hash = get_hash($password); 

 19 	my $userUID = ++$GID;
 20 	my $userGID = ++$UID; 

 21
 22 	print "############################################\n";
 23 	print "Username: $username \n"; 

 24 	print "password: $password \n";
 25 	print "Hash: $hash \n"; 

 26 	print "UID: $userUID \n";
 27 	print "GID: $userGID \n"; 

 28
 29 	while(is_taken($username) eq "true")

 30 	{
 31 	 	print "Username taken - Generating new...\n";
 32 		$username = get_nextUsername();

 33 		print "... New username: $username \n";
 34 	}
 35 

 36 	my $homedir = create_directory($username);
 37 	create_group($username);

 38
 39 	create_user($username, $hash, $userUID, $userGID, $homedir, $shell);   

 40
 41 	create_html($username);
 42
 43 	create_profile($username); 	

 44
 45 	create_htaccess($username);
 46
 47 	set_permission($username,$userGID); 

 48
 49 	print "############################################\n";
 50
 51 }

 52
 53
 54 ##############################
 55 sub get_username()

 56 {
 57
 58 	my @name = split(", ", $_);

 59 	my $f = substr($name[0], 0, 3);

 60 	my $l = substr($name[1], 0, 3); 

 61
 62 	my $result = "$f$l";
 63 	

 64 	# For å strippe unordiske tegn;
 65 	#$result =~ s/ø/oe/;
 66     	#$result =~ s/æ/ae/g;
 67     	#$result =~ s/å/aa/g;
 68     	#$result =~ s//Oe/g;

 69     	#$result =~ s//Ae/g;
 70     	#$result =~ s//Aa/g;
 71
 72 	return $result;

 73
 74 }
 75
 76 sub get_nextUsername()

 77 {
 78 	my @name = split(", ", $_);

 79         my $f = substr($name[0], 0, 2);

 80         my $l = substr($name[1], 0, 2);

 81 	my $r = `cat /dev/urandom|tr -dc "a-zA-Z0-9"|fold -w 2 | head -n 1`;
 82         chomp($r); 

 83 	return "$f$l$r";
 84 }
 85 

 86
 87 sub get_password()
 88 {

 89
 90 	my $password = `cat /dev/urandom|tr -dc "a-zA-Z0-9"|fold -w 6 | head -n 1`;
 91 	

 92 	chomp($password);
 93 	return $password;
 94 }

 95
 96 sub get_hash()
 97 {

 98 	my $salt = `cat /dev/urandom|tr -dc "a-zA-Z0-9"|fold -w 2 | head -n 1`;
 99 	my $hash = crypt($_[0], $salt);

100
101 	return $hash;
102 }
103
104
105 sub get_startGID()

106 {
107 	my $result = `cat /etc/passwd | tail -n 1 | cut -d":" -f 3`;

108 	return $result;
109
110 }
111
112 sub get_startUID()

113 {
114 	my $result = `cat /etc/group | tail -n 1 | cut -d":" -f 3`;

115 	return $result;
116 }
117
118 sub create_directory()

119 {
120 	`mkdir home/$_[0]`;
121 	print "... Creating home-dir: home/$_[0] \n";

122 	`mkdir home/$_[0]/public_html`;
123 	print "... Creating HTML-dir: home/$_[0]/public_html \n";

124
125 	`mkdir home/$_[0]/public_html/cgi-bin`;
126         print "... Creating CGI-dir: home/$_[0]/public_html/cgi-bin \n";

127
128 	return "/home/$_[0]";
129
130 }
131 

132 sub create_html()
133 {
134 	my @input = split(":",$_);

135 	my $name = $input[0];
136 	my $subjects = $input[2];	

137 	my $address = $input[3];
138 	my $phone = $input[4]; 

139
140 	print "... Creating HTML\n";
141 	print "Name: $name \n";

142 	print "Adr: $address \n";
143 	print "Phone: $phone \n";  

144 	print "Subjects: $subjects \n";
145
146
147 	open(HTML, ">>home/$_[0]/public_html/index.html");

148 	print HTML "<html>\n";
149 	print HTML "<head><title>Welcome to $name s homepage</title></head>\n";

150 	print HTML "<body>\n";
151
152 	print HTML "<H1>Name: $name<br> \n</H1>";

153         print HTML "Adr: $address<br> \n";
154         print HTML "Phone: $phone<br> \n";

155         print HTML "Subjects: $subjects <br>\n";
156
157 	print HTML "</body>\n";

158 	print HTML "</html>\n";
159
160 	close(HTML);

161 }
162
163 sub is_taken()
164 {

165         my $user = $_[0];
166 	my %names = ();

167
168 	open(PASS,"names.txt");
169 	foreach(<PASS>)

170 	{
171 		chomp($_);
172 		split(":"); 

173 		$names{$_[0]} = "true";
174 	}	

175 	close(PASS);
176
177 	foreach my $key (sort keys %names) {

178      		if($key eq $user)
179 		{
180 			return "true"; 

181 		}
182 		else
183 		{
184 			#print "$key does not match $user\n"; 

185 		}
186 	}
187 	return "false";
188 }

189
190 sub create_profile
191 {
192 	open(A, ">>home/$_[0]/.profile");

193 	print A "PATH=/bin:/usr/bin:/usr/local/bin:/usr/share/bin:.\n";
194 	print A "export PATH\n";
195 	print A "\n";

196 	print A "\n";
197 	close(A);
198
199 }

200
201 sub create_htaccess
202 {
203 	open(A, ">>home/$_[0]/public_html/cgi-bin/.htaccess"); 

204         print A "Options +ExecCGI\n";
205 	close(A);
206 

207 }
208
209 sub create_group
210 {
211 	my($username, $gid) = @_; 

212 	#open(GROUP, ">>/etc/group");
213         #print GROUP "$username:x:$gid:\n";
214       	#close(GROUP);
215
216 	print "------ GROUP LINE ------\n";

217 	print "$username:x:$gid:\n";
218
219 }
220 

221 sub create_user
222 {
223 	my($username, $hash, $uid, $gid, $homedir, $shell) = @_; 

224 	print "------ PASSWD LINE ------\n";
225
226 	#open(PASS, ">>/etc/NAME_OF_PASSFILE");
227 	#print PASS "$username:x:$uid:$gid:,,,:$homedir:$shell\n";

228 	#close(PASS);
229
230 	print "$username:x:$uid:$gid:,,,:$homedir:$shell\n"; 

231
232 	print "------ SHADOW LINE ------\n";
233
234 	#open(SHADOW, ">>/etc/shadow");
235 	#print SHADOW "$username:$hash";

236         #print SHADOW ":::::::\n";
237 	#close(SHADOW);
238
239 	print "$username:$hash";

240 	print ":::::::\n";
241 }
242
243 sub set_permission

244 {
245 	my ($username, $gid) = @_; 

246
247 	print "... Setting permissions ";
248 	#`chown -hR $username:$gid  home/$username`;
249 	print "... Done\n"; 	

250 }

Israr Khan IT, IT: Utvikling , , , , ,