Lielākais iekštelpu skeitparks Baltijā ir gatavs

28
Jan
0

RIDE IT indora atklāšana

Kādu laiku atpakaļ aicināju atbalstīt savējos un sniegt finansiālu atbalstu, lai Latvijā uzslietos vēl viens (trešais?) iekštelpu skeitparks (kvalitātes ziņā ierindojas pirmajā vietā). Attieksme bija dažāda, viens bija optimists, otrs pesimists. Lai nu kā, kopā tika saziedoti, turpat, 1000 lati un parka tapšanai tika dota zaļā gaisma.

Liela darba daļa jau ir padarīta, palikuši tikai sīkumi un šo sestdien gaidāms parka atklāšanas pasākums.
RIDE IT komūna jau ir pazīstama ar savām pasākumu organizēšanas iemaņām, arī šī diena solās nebūt izņēmums. Līdz ar parka atklāšanu tiek organizētas sacensības, kur piedalīsies labākie (netikai) pašmāju un Eiropas līmeņa lietpratēji. Vairāk te.

Beigās gribēju izteikt tādu kā uzslavu džekiem par apņēmību un ieguldīto darbu. Ne katrs spētu dabūt ko tādu gatavu, bez pašvaldību finansiāla atbalsta, turklāt, krīzes laikā. Jūs pierādījāt – ja grib, tad var, nevis “gudri d*rst nav malku cirst”. Es ceru, ka šis ir tikai sākums gan šim parkam, gan nākamajiem.

P.S. Par virsrakstu – apgalvojums par lielāko iekštelpu parku Blatijā tika izteikts @ easyget.lv

Keša problēmu risināšana

27
Jan
0

Lielāku portālu izmaiņu veikšanai nepieciešams, lai lietotāja interneta pārlūkprogramma pieprasītu atjaunotos datus, kā zināms, brouzeriem patīk tos pieglabāt – kešot (cache) -, tādejādi paātrinot lapas ielādi sev un samazinot trafika lielumu mums.

Protams, varam likt pārlūkam pieprasīt pilnīgi visu no jauna, taču, tas paildzinās lapas ielādes laiku un mūsu trafiku, kas nebūs no tiem labākajiem risinājumiem.

Bet kā likt pārlūkam pa jaunu pieprasīt tikai izmainītos failus? Principā, ideja ļoti vienkārša. Nedosim nekādus header’us, bet liksim domāt, ka šis fails agrāk nemaz nav redzēts.

Pārlūkam interesē pilna faila adrese, tātad tiek ņemtas vērā arī GET vērtības. Neizteicos korekti, bet doma bija – pamainam vērtību, kas seko aiz jautājuma zīmes, piemēram, /css/layout.css?xxx. Taču šo vērtību neģerēsim katru reizi randomā, jo šādā gadījumā fails atkal tiktu pieprasīts pie katras lapas ielādes. Kā mainīgo vērtību padosim faila izmaiņu veikšanas laiku.

<link rel="stylesheet" href="/css/layout.css?<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/css/layout.css');?>" type="text/css" media="screen" />

Kodā tas neizskatīsies smuki (ja tas tevi neuztrauc, tad tālāk vari nelasīt), šoreiz palīdzīgu roku var sniegt mod_rewrite. Mainīgo vērtību varam padot, nevis caur jautājuma zīmi, bet gan kā mapi, piemēram, /css/jan27/layout.css.

<link rel="stylesheet" href="/css/<?=strtolower(date("Mj",filemtime($_SERVER['DOCUMENT_ROOT'].'/css/layout.css')));?>/layout.css" type="text/css" media="screen" />

Ierakstu dalīšana pa lappusēm

24
Jan
21

Tēma šoreiz nav sareģīta, bet visur ir savs āķis.

Zināms, ka, lai izrēķinātu lappušu skaitu, jāzin kopējais ierakstu skaits, tātad divi pieprasījumi uz datubāzi:

  1. Iegūstam nepieciešamo skaitu ar ierakstiem
  2. Iegūstam kopējo ierakstu skaitu

Bet kur tad optimizācija? Un ja vēl nepieciešams liels skaits dinamiski ģenerētu filtru? Būs jāveido divi gandrīz identiski pieprasījumi – viens ar limitu, viens bez.

Es piedāvāju izmantot vienu no ne tik slavenajām MySQL funkcijām – SQL_CALC_FOUND_ROWS un FOUND_ROWS(). Pieprasījums un tā apstrāde, manā gadījumā, izskatīsies šādi:

1
2
3
4
5
6
7
8
9
10
11
12
<?
  $perpage=10; // ieraksti vienā lappusē
  $_LIMIT=(!empty($_GET['p']) && $_GET['p']>1)?($_GET['p']*$perpage)-$perpage:0; // izrēķinam limita sākuma pozīciju, atkarīgā no atvērtās lappuses, kas padota kā ?p=X
  $_LIMIT.=", ".$perpage;
  $sql="SELECT SQL_CALC_FOUND_ROWS * FROM `tabula` LIMIT ".$_LIMIT;
  $res=mysql_query($sql);
  $count=mysql_fetch_object(mysql_query("SELECT FOUND_ROWS() as c"));
  while($row=mysql_fetch_object($res)){
    var_dump($row);
  }
  $pages=splittopages($count->c,$perpage);
?>

Funkcija, kura izrēķinās lappušu skaitu. Pieejamās lappuses tiek saliktas masīvā, lai būtu vienkāršāk izveidot pogas “Nākamā lappuse” un “Iepriekšējā lappuse” – atliek tikai pārbaudīt vai masīvā eksistē ieraksts ar atbilstošu atslēgu.

1
2
3
4
5
6
7
8
9
10
11
<?
  function splittopages($count,$perpage){
    $pagescount=ceil($count/$perpage);
      $pages=array();
      if($pagescount<2){ return $pages; }
        for($i=1;$i<=$pagescount;$i++){
        $pages[]=$i;
      }
    return $pages;
  }
?>

Lappušu izvade.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  if($_GET['p']<2){ $_GET['p']=1; } // definēsim lappusi paši, ja tā vēl nav definēta
  $now=array_search($_GET['p'],$pages); // atvērtā lappuse
  $prev=$now-1;
  $next=$now+1;
  if(array_key_exists($prev,$pages)){
    echo '<a href="?p='.$pages[$prev].'">Iepriekšējā lappuse</a>';
  }
  foreach($pages as $value){
    $active=$_GET['p']==$value?' class="active"':''; // atzīmējam atvērto lappusi
    echo '<a href="?p='.$value.'"'.$active.'>'.$value.'</a>';
  }
  if(array_key_exists($next,$pages)){
    echo '<a href="?p='.$pages[$next].'">Nākamā lappuse</a>';
  }
?>

Lielākais ieguvums izmantojot šādu risinājumu ir tāds, ka nav jāsūta vēl viens praktiski identisks pieprasījums uz datubāzi, ierakstu skaits jau tiek nokešots MySQL’ā.
Bez liekiem if’iem tiek pie nākamās un iepriekšējās lappuses.

Saki vēl, ka grautiņi bija lieki…

14
Jan
0

Šodien, pēc masu demonstrācijām, kas norisinājās vakar vecrīgā, pie Saeimas nama, doma laukumā un citur, Latvijas Valsts prezidents ir paziņojis par saeimas atlaišanas rosināšanu, ja netiks izpildīti viņa dotie uzdevumi.

Vakardienas notikumi no mana skata punkta. Viss sākās ar mītiņu domu laukumā, es tajā laikā atrados skolā, ar domu, ka vēlāk došos uz vecrīgu. Par gaidāmajiem grautiņiem domāju – būs vai nebūs? Bija aizdoma, ka, ja kāds izmetīs akmeni vai kādu citu priekšmetu, iespējams, sāksies bara instinkts un tā lieta aizies, bet no otras puses – neviens tā īsti negribēs riskēt.

Piepildījās tas, ko cerībā gaidiju. Sākās masu nekārtības un es devos vecrīgas virzienā. Brīdī, kad tur ierados, nekas sevišķs nenotika. Viena pēc otras ieradās neatliekamās palīdzības mašīnas, šķita, ka tūlīt policija kaut ko pasāks un būs daudz cietušo, bet nekā. Domādams, ka vairs jau nebūs, ko redzēt, devos atpakaļ uz māju pusi. Ieradies mājās ieslēdzu televizoru, degpunktā ziņo, ka nupat esot sākuši mētāties ar bruģi un gāzt mašīnas. Tavu neražu… Diemžēl, vairāk doties ārā negribēju.

Nezinu, kas bija šī pasākuma organizators (pieļauju domu, ka tāds bija), bet es nenosodu notikušo (izņemot vaikalu demolēšanu), īpaši, ja tam ir panākumi. Īsti neticēju, ka kāds sadzirdēs tautu, tomēr tas ir noticis.

Šobrīd domāju, ka vairāk nebūs nepieciešamības pēc radikālas darbības, bet ja nu, tad viss tik mierīgi nebeigsies. Cilvēki vairs nebaidīsies mest akmeņus, dedzināt u.t.t. Pieļauju domu, ka arī valsts sargājošās iestādes nostāsies tautas pusē.

Vai Tu esi par kārtīgu ziemas skeitparku Latvijā?

5
Jan
2

Ja Tev ir kaut mazākā saistība ar ekstrēmo sportu, tad Tu noteikti zini, kāda ir situācija Latvijā ar ziemas skeitparkiem. Džeki ir nolēmuši šo lietu labot, nevelkot lietu garumā un bezjēdzīgi neprasot naudu pašvaldībām. Nepieciešamā summa nav liela un ceru, ka katram piemetot pa latiņam, tiksim pie jauna parka.

Vairāk info šeit.