Possible update counterCache Function

I haven’t tested this yet. But it is a possible update counterCache function.



function counterCheck( )



$counterTemplate =

“UPDATE :atable AS :amodel

SET :counter = (

SELECT COUNT(:model.id)

FROM :table AS :model

WHERE :model.:foreignkey = :amodel.id



$updates = array();


$models = Configure::listObjects(‘model’) ;


foreach ($models as $model) {


$mainTable = Inflector::tableize($model);

if (!empty($this->$model->belongsTo)) {

foreach ($this->$model->belongsTo as $assocModel =>

$def) {

if (isset($def[‘counterCache’]) &&

$def[‘counterCache’]) {

$assocTable =


$assocClass = $def[‘className’];

$foreignKey = $def[‘foreignKey’];

$counter = strtolower($model) . ‘_count’;

$query = String::insert($counterTemplate,


‘table’ => $mainTable,

‘model’ => $model,

‘atable’ => $assocTable,

‘amodel’ => $assocModel,

‘foreignkey’ => $foreignKey,

‘counter’ => $counter


$result = $this->Configuration->query($query);

$affectedRows = $this->Configuration-


$updates[] = array(

‘query’ => $query,

‘affected_rows’ => $affectedRows







$this->set(‘updates’, $updates);





FlowingData: How to Make an Interactive Network Visualization

I have looked at d3 network visualization demos / tutorials before. I always tell myself I will do it. But I need to get on this. Link below is to a tutorial on flowing data. https://www.google.com/producer/editions/CAowtpoM/flowingdata/CAIiEP1jg1drOnN8PC3TcT9b0fUqMggEIhDlFy4k5ajnTsfC5QXSbl75KhwIACIQ_IySbXiwavHpyb8VqOTmZCoGCAowtpoM/how_to_make_an_interactive_netwo

Concepts in Programming Languages – University of Cambridge Course

The following are all copy and pasted from a University of Cambridge course link to the website below. It was accessible by public, so I figured I should dump it here. Maybe I can read some of this when I have a vacation.

Lecture slides

  • Introduction and motivation.
    Additional reading material:
  • K. ZusePlankalkul.
  • The first procedural language: FORTRAN (1954-58).
    Additional reading material:
  • Fortran.
  • The first declarative language: LISP (1958-62).
    Additional reading material:
  • J. McCarthyRecursive functions of symbolic expressions and their computation by machine.
    Communications of the ACM, 3(4):184-195, 1960.
  • Block-structured procedural languages: Algol (1958-68) and Pascal (1970).
    AppendixBCPL (1967) and C (1971-78)
    Additional reading material:
  • D. E. KnuthThe remaining trouble spots in ALGOL 60.
    Communications of the ACM, Volume 10, Issue 10, pages 611-618, 1967.
  • B. KerninghanWhy Pascal is not my favorite programming language.
    AT&T Bell Laboratories. Computing Science Technical Report No. 100, 1981.
  • Object-oriented languages — Concepts and origins: SIMULA (1964-67) and Smalltalk (1971-80).
    SML codeObjects in SML!?
    Programming languageSqueak.
    Additional reading material:
  • A. C. KayThe early history of Smalltalk.
    ACM SIGPLAN Notices, Volume 28, No. 3, 1993.
  • P. WegnerConcepts and Paradigms of Object-Oriented Programming
    Expansion of OOPSLA-89 Keynote Talk.
  • B. StroustrupWhat is Object-Oriented Programming? (1991 revised version).
    Proc. 1st European Software Festival. February, 1991.
  • Types in programming languages: ML (1973-1978).
    Additional reading material:
  • A. Koenig. An anecdote about ML type inference.
    USENIX Symp. on Very High Level Languages, 1994.
  • Data abstraction and modularity: SML Modules (1984-97).
    Additional reading material:
  • M. TofteFour Lectures on Standard ML.
    LFCS Report Series ECS-LFCS-89-73, 1989.
  • The state of the art: Scala (2004-2006).
    Programming languageScala.
    Additional reading material:
  • M. Odersky et alAn overview of the Scala programming language.
    Technical Report LAMP-REPORT-2006-001, Second Edition, 2006.
  • M. Odersky et alA Tour of the Scala Programming Language.
    Programming Methods Laboratory, EPFL, 2007.
  • M. OderskyScala By Example.
    Programming Methods Laboratory, EPFL, 2008.
  • Books

  • Main:
  • M. ScottProgramming Language Pragmatics (2nd edition).
    Morgan Kaufmann, 2006.
  • J.C. MitchellConcepts in programming languages.
    Cambridge University Press, 2003.
  • T.W.Pratt and M.V.ZelkowitzProgramming Languages: Design and implementation (3rd edition).
    Prentice Hall, 1999.
  • Other:
  • R. L. Wexelblat (ed.). History of Programming Languages.
    ACM Monograph Series, 1981.
  • N. Metropolis, J. Howlett, G.-C. Rota (eds.). A History of Computing in the Twentieth Century: A Colletion of Essays.
    Academic Press, 1980.
  • T.J. Bergin and R. G. Gibson (eds.). History of programming languages – II.
    ACM Press, 1996.
  • [Actual Course Website]