Difference between revisions of "Dev Finding Things"

From Dreamwidth Notes
Jump to: navigation, search
(Grepping through code)
(braindump of where various options can be found)
Line 1: Line 1:
 
 
== Grepping through code ==
 
== Grepping through code ==
  
Line 10: Line 9:
 
<pre>rgrep -i [search term] * > ~/filename.txt</pre>
 
<pre>rgrep -i [search term] * > ~/filename.txt</pre>
  
 +
 +
== Managing the database schema ==
 +
 +
The database schema is managed by editing update-db-general.pl. Update-db-general.pl is organized roughly like this so:
 +
* mark which tables are clustered (versus global)
 +
* table creation, post-create table population, table deletion
 +
* table alteration
 +
 +
 +
Functions you may need to use:
 +
* creating a new table
 +
register_tablecreate( "tablename", <<'EOC');
 +
CREATE TABLE tablename (
 +
  ....
 +
)
 +
EOC
 +
 +
* drop a table
 +
** remove the relevant register_tablecreate code
 +
** drop the table if it exists already (for older installations)
 +
register_tabledrop( "tablename" );
 +
 +
* adding a column to an existing table
 +
** add the column to the register_tablecreate code, for new installations
 +
** add this to the bottom of `register_alter`, for existing installations
 +
# check that the column does not yet exist
 +
unless ( column_type( "tablename", "columname" ) ) {
 +
    do_alter("tablename", "ALTER TABLE tablename ADD ..." );
 +
}
 +
 +
* modifying a column in an existing table / modifying data in an existing table
 +
Similar to adding a column, but instead of checking whether a table exists, you may want to check against `index_name`, `table_relevant`, `column_type`, e.g.,
 +
  if ( index_name( ... ) ) {}
 +
 +
* initialize a table with data from another table on table creation
 +
post_create( "tablename", /*sql statements/code. Look at other examples in the file */ );
 +
 +
To update your database with your changes, run
 +
 +
$LJHOME/bin/upgrading/update-db.pl -r --innodb
 +
 +
 +
== Properties ==
 +
 +
Properties are listed in bin/upgrading/proplists.dat, broken down into three sections and listed alphabetically within those sections:
 +
 +
# userproplist (user properties)
 +
# talkproplist (comment properties)
 +
# logproplist (entry properties)
 +
 +
When removing, remove the property from the file, and also do a grep over the codebase to remove any code which uses this prop.
 +
 +
== Translation strings ==
 +
 +
Translation strings are defined in a few different files:
 +
* bin/upgrading/en.dat - central location for strings for the backend code, e.g., things in cgi-bin, hooks, widgets
 +
* htdocs/page.bml.text - scattered throughout htdocs; partner to htdocs/page.bml
 +
 +
After making your changes, run
 +
 +
$LJHOME/bin/upgrading/texttool.pl load
 +
 +
to actually load the new/modified strings into your live environment.
 +
== Hooks ==
 +
 +
Hook implementations can be found in
 +
 +
Some hook documentation can be found in doc/raw/hooks.txt, but it is very outdated and incomplete, and probably should be ignored right now.
 +
 +
== Memcache ==
 +
 +
A list of memcache keys can be found in doc/raw/memcache-keys.txt. You should update this if you add new memcache keys or change existing behavior.
 +
 +
== Styles ==
 +
 +
* dw-free/bin/upgrading/s2layers.dat, dw-nonfree/bin/upgrading/s2layers-local.dat
 +
Defines system layers + layer types + layer parents
 +
 +
* bin/upgrading/s2layers/$themename/layout.s2, bin/upgrading/s2layers/$themename/themes.s2
 +
Contains actual layout layers, list of themes
 +
 +
* dw-free/cgi-bin/LJ/S2Themes.pm, dw-nonfree/cgi-bin/LJ/S2Themes-local.pm
 +
Handles some logic surrounding themes, contains list of default themes for each layout
 +
 +
* cgi-bin/S2Themes/$layout
 +
Contains logic for /customize/ and /customize/options.bml pages. Arranges properties into propgroups, puts themes into categories, contains designer
  
 
[[Category: Development]]
 
[[Category: Development]]

Revision as of 05:29, 31 January 2009

Grepping through code

In the directory you want to search:

rgrep -i [search term] *

To output the results of that search into a file in your home directory:

rgrep -i [search term] * > ~/filename.txt


Managing the database schema

The database schema is managed by editing update-db-general.pl. Update-db-general.pl is organized roughly like this so:

  • mark which tables are clustered (versus global)
  • table creation, post-create table population, table deletion
  • table alteration


Functions you may need to use:

  • creating a new table
register_tablecreate( "tablename", <<'EOC');
CREATE TABLE tablename (
  ....
)
EOC
  • drop a table
    • remove the relevant register_tablecreate code
    • drop the table if it exists already (for older installations)
register_tabledrop( "tablename" );
  • adding a column to an existing table
    • add the column to the register_tablecreate code, for new installations
    • add this to the bottom of `register_alter`, for existing installations
# check that the column does not yet exist
unless ( column_type( "tablename", "columname" ) ) {
   do_alter("tablename", "ALTER TABLE tablename ADD ..." );
}
  • modifying a column in an existing table / modifying data in an existing table

Similar to adding a column, but instead of checking whether a table exists, you may want to check against `index_name`, `table_relevant`, `column_type`, e.g.,

 if ( index_name( ... ) ) {}
  • initialize a table with data from another table on table creation
post_create( "tablename", /*sql statements/code. Look at other examples in the file */ );

To update your database with your changes, run

$LJHOME/bin/upgrading/update-db.pl -r --innodb


Properties

Properties are listed in bin/upgrading/proplists.dat, broken down into three sections and listed alphabetically within those sections:

  1. userproplist (user properties)
  2. talkproplist (comment properties)
  3. logproplist (entry properties)

When removing, remove the property from the file, and also do a grep over the codebase to remove any code which uses this prop.

Translation strings

Translation strings are defined in a few different files:

  • bin/upgrading/en.dat - central location for strings for the backend code, e.g., things in cgi-bin, hooks, widgets
  • htdocs/page.bml.text - scattered throughout htdocs; partner to htdocs/page.bml

After making your changes, run

$LJHOME/bin/upgrading/texttool.pl load

to actually load the new/modified strings into your live environment.

Hooks

Hook implementations can be found in

Some hook documentation can be found in doc/raw/hooks.txt, but it is very outdated and incomplete, and probably should be ignored right now.

Memcache

A list of memcache keys can be found in doc/raw/memcache-keys.txt. You should update this if you add new memcache keys or change existing behavior.

Styles

  • dw-free/bin/upgrading/s2layers.dat, dw-nonfree/bin/upgrading/s2layers-local.dat

Defines system layers + layer types + layer parents

  • bin/upgrading/s2layers/$themename/layout.s2, bin/upgrading/s2layers/$themename/themes.s2

Contains actual layout layers, list of themes

  • dw-free/cgi-bin/LJ/S2Themes.pm, dw-nonfree/cgi-bin/LJ/S2Themes-local.pm

Handles some logic surrounding themes, contains list of default themes for each layout

  • cgi-bin/S2Themes/$layout

Contains logic for /customize/ and /customize/options.bml pages. Arranges properties into propgroups, puts themes into categories, contains designer