ai.. 'Spameru izcelšana :)' 

sestdien, 30.10.2004 @7:03 pm | wasted

bez steigas un prātīgi. [info]x_f Saitefunkcija par vislielākā ierakstu skaita īpašniekiem draugu lapā, pabeigta un pārredzamāka par tiem manis publicētajiem variantiem iepriekš.



##########
#wizard'ā maināmie uzstādījumi
##########

property int top {
	des = "Rakstītāju tops";
	note = "Draugu lapā tiek izvadīts (ja tas ir norādīts) saraksts ar vislielākā ierakstu skaita īpašniekiem dilstošā secībā, šeit nosaki šī saraksta limitu - top 3, top 5 utml. Negatīvi skaitļi nav iespējami, minimālais ir 1";
	min = 1;
}

property bool printeet_topu {
	des = "Rakstītāju topa rādīšana";
	note = "Vai vēlies savā draugu lapā vispār ieraudzīt iepriekšminēto sarakstu?";
	values = "true|Protams!|false|Priekš kam?";
}
set top = 3;
set printeet_topu = true;

#########
#pati funkcija
#########

function tops(Entry[] entries) "Spamertopiņš" {

#galvenais masīvs, kurā glabāsies visi draugu lapā redzamo ierakstu autori

	var string{} rakstnieki;

#pirms jebkā veikšanas masīvs tiek aizpildīts ar autoriem no katra ieraksta.
#šī te lietiņa aizstāj to, kas nedarbojās (es gan nesapratu, kāpēc) x-f iepostotajā funkcijā,
#tajā masīvs praktiski netika aizpildīts ar neko. autora vārds kalpo kā atslēgvārds
#ierakstu skaitam, šeit visiem norādīts ierakstu skaits 0.

	foreach var Entry ieraksts ($entries) {
		var string autors = $ieraksts.poster.username;
		$rakstnieki{$autors} = "0";
	}

#katrs ieraksts tiek pārbaudīts. ja autors sakrīt ar kādu autoru no masīva,
#attiecīgais masīva elements tiek palielināts par vienu vienību.

	foreach var Entry ieraksts($entries) {
		var string autors = $ieraksts.poster.username;
		var int raksti;

		foreach var string parbaude ($rakstnieki) {
			if ($parbaude == $autors){
				$raksti = int($rakstnieki{$parbaude});
				$raksti++;
				$rakstnieki{$parbaude} = string($raksti);
			}
		}
	}

#sakārtošana dilstošā secībā. vispirms tiek atrasts vislielāka ierakstu skaita
#īpašnieks, respektīvi, no masīva atlasīts atslēgvārds ar vislielāko elementa vērtību.

	var int max = 0;
	var string lideris;

	foreach var string rakstija ($rakstnieki) {
		if (int($rakstnieki{$rakstija}) > $max) {
			$lideris = $rakstija;
			$max = int($rakstnieki{$rakstija});
		}
	}

	"<ul id='top_list'>";
	print "<li>$lideris (" + $rakstnieki{$lideris} + ")</li>";

#atrasts 'uzvarētājs'. $*top pats par sevi man bija vajadzīgs, lai radītu
#parastu (laikam regulārs saucas) masīvu $cycle ar elementu skaitu, kas vienāds ar $*top.
#masīva elementi nav svarīgi, svarīgs ir skaits. ja $*top ir lielāks par autoru skaitu
#$rakstnieki masīvā, regulārā masīva elementu skaits tiek samazināts līdz $rakstnieki
#elementu skaitam.

	var int count = 1;
	var int[] cycle = 1 .. $*top;
	if (size $rakstnieki < size $cycle) {
		$cycle = 1 .. size $rakstnieki;
	}

	foreach var int top ($cycle) {
		if ($count == size $cycle) {
		}
		else {

			foreach var Entry ieraksts ($entries) {
				var string autors = $ieraksts.poster.username;

#visi ieraksti tiek pārbaudīti. ja ieraksta autors jau ir 'uzvarētājs',
#attiecīgais $rakstnieki elements tiek padarīts par 'neko', tam nav vērtības,
#un to vairs neiekļauj nākamā uzvarētāja meklēšanā.

				if ($lideris == $autors) {
					$rakstnieki{$autors} = "";
				}
			}

			$max = 0;

			foreach var string rakstija ($rakstnieki) {
				if (int($rakstnieki{$rakstija}) > $max) {
					$lideris = $rakstija;
					$max = int($rakstnieki{$rakstija});
				}
			}

			print "<li>$lideris (" + $rakstnieki{$lideris} + ")</li>";
			$count++;
		}
	}
	"</ul>";

}

function FriendsPage::print_body {
	if ($*printeet_topu == true) {
		tops($.entries);
	}

# tālāk visa pārējā "FriendsPage::print_body" funkcija..

	foreach var Entry e ($.entries) {

# ..
		$this->print_entry($e);
# ..
	}
}

x-ƒ (x_f)
malacis! redzēju, kā.. | x-ƒ (atbildēt)

pirmdien, 1.11.2004 @5:43 pm

malacis!
redzēju, kā strādā. :)
un pie reizes gribēju piebilst, ka toreiz, kad publicēju savas vārdadienas funkcijas kodu, notrūka beigas. nepamanīju, bet tagad tur ir. ja kas.
ai, ideja ir nozīmīgāka.. | wasted (atbildēt)

pirmdien, 1.11.2004 @6:49 pm

ai, ideja ir nozīmīgāka par īstenošanu. jā, es kaut kad pamanīju, ka tur trūkst beigu, gan nepievērsu īpašu uzmanību, jo biju pievācis Tavu stila slāni, un tur arī iekšā bija vārdadienas :] patiesībā tas slānis ir (vismaz man) ļoti noderīgs kā mācību materiāls, tur ir praktiski viss. paldies :)
x-ƒ (x_f)
mēs varētu arī turpmāk.. | x-ƒ (atbildēt)

ceturtdien, 18.11.2004 @4:09 pm

mēs varētu arī turpmāk sastrādāties. man rastos ne pārāk prātīgas idejas un pusgatavs kods, ko Tu novestu līdz galam. :)

ēmm.. vai Tev būtu lieli iebildumi, ja es pārpublicētu šo funkciju kādā ar S2 saistītā kopienā uz LJ, ar linkiem uz mūsu draugu lapām, kur to var redzēt darbībā? nu, lai parādītu, ka arī latviešu bāleliņi ir uz ko spējīgi. :)
mja, kā prakse kas tāds.. | wasted (atbildēt)

ceturtdien, 18.11.2004 @6:24 pm

mja, kā prakse kas tāds man visnotaļ noderētu, vienigi reizēm, prātodams par c++ mājas darbiem skolā, attopos, ka domāju s2 valodā :)

pārpublicēšanas sakarā man nav nekādu iebildumu, tikai atsauces un tādas fīčas pēc kādas tur licences nekaitētu :] to gan droši vien nemaz nevajadzēja teikt. man, patiesību sakot, ienāca prātā doma aizvākt to sarakstiņu, bet ok, lai stāv. un turpmāk droši vien derētu vairāk piedomāt pie koda internacionalizācijas, tur visi tie mainīgie un funkciju nosaukumi latviski laikam :)

x-ƒ (x_f)
paskat' kā! būsi.. | x-ƒ (atbildēt)

ceturtdien, 18.11.2004 @7:04 pm

paskat' kā! būsi saindējies! :)

patiesībā teksts man jau ir uzrakstīts un tur ir atsauces, lai būtu skaidrs, kas to radījis un tā. par to vari nesatraukties. (esmu gandrīz vai apsēsts ar kopīraitiem utt. :) ) par licencēm gan nekā. :/ domāju, ka publicēšu rīt.
un kods ar komentāriem ir internacionalizēts. arī par to vari nesatraukties.
es nezinu, vai to turpmāk tā vajadzētu. it kā jau S2 popularizēšanas Cibā dēļ laikam labāk būtu, ja tas būtu pēc iespējas latviskāk. tomēr gadās, ka tā ir saprotamāk. bet no otras puses - tie, kas visu mūžu sēdējuši pie parastā Windows vai Office, piesēžoties pie latviskotā vairs pusi nesaprot.
vajag tā kaut kur ezeram pa vidam. :)
ai, nē, ar kopīraitiem.. | wasted (atbildēt)

ceturtdien, 18.11.2004 @7:27 pm

ai, nē, ar kopīraitiem būs ok :)

nezinu, tāpat cilvēks, kurs nekad mūžā nav saskāries ar programmēšanu, diez vai ko sapratīs, tici man, es zinu :P hm.. un man ir pašam gadījies tā apmēram piesēsties pie latviskotā, šodien pat, neko nevaru atrast un tie tulkojumi pilnīgi smieklīgi liekas. nu jā, tad laikam visu angliski..

I have finally made this work.. | anonīms (atbildēt)

sestdien, 30.04.2005 @5:18 am

I have finally made this work for comments too! See for instance: http://www.livejournal.com/users/camomiletea/66886.html?.topcomments=1

Some modifications were needed, but one user (cmshaw) has posted a small and useful bit of code that gets all comments, and then I could sort them:

function EntryPage::lay_comment_loop (Comment[] incoming, Comment[] stored) : Comment[]
{
   if (size $incoming == 0) { return $stored; }
   foreach var Comment c ($incoming)
   {
     $stored[size $stored] = $c;
     $this->lay_comment_loop ($c.replies, $stored);
   }
   return $stored;
}
jauki, ka kāds vēl bez x-f.. | wasted (atbildēt)

svētdien, 1.05.2005 @12:22 am

jauki, ka kāds vēl bez x-f patiešām to lieto. piemēru gan neredzēju, nerādīja, bet apmēram sapratu domu. vismaz liekas, ka sapratu. anyway, paldies :)
that is, in case you can read.. | wasted (atbildēt)

svētdien, 1.05.2005 @1:37 am

that is, in case you can read latvian. you didn't really leave a signature. :)
Ah, you must have looked.. | anonīms (atbildēt)

svētdien, 1.05.2005 @6:07 am

Ah, you must have looked while I switched to another style... Sorry about that. Yes, I can understand Latvian. This should work regarless of style I currently use:

http://www.livejournal.com/users/camomiletea/66886.html?s2id=4394456&.topcomments=1