*** Joins: roentgen (~arthur@openvpn/community/support/roentgen) | 01:44 | |
*** Joins: soustruh (~Miranda@ip-86-49-121-75.net.upcbroadband.cz) | 01:55 | |
*** Quits: roentgen (~arthur@openvpn/community/support/roentgen) (Ping timeout: 260 seconds) | 01:58 | |
*** Joins: kirillka (~Miranda@195.242.142.17) | 02:04 | |
*** Joins: roentgen (~arthur@openvpn/community/support/roentgen) | 02:11 | |
*** Joins: Cupertino (~Cupez@62-177-158-122.dsl.bbeyond.nl) | 02:29 | |
*** Quits: Cupertino (~Cupez@62-177-158-122.dsl.bbeyond.nl) (Changing host) | 02:29 | |
*** Joins: Cupertino (~Cupez@unaffiliated/cupertino) | 02:29 | |
*** Quits: Cupertino (~Cupez@unaffiliated/cupertino) (Client Quit) | 02:34 | |
*** Quits: Cesare (~Adium@creati59.lnk.telstra.net) (Quit: Leaving.) | 02:36 | |
*** Joins: asm89 (~asm89@unaffiliated/asm89) | 03:00 | |
*** Quits: thraxisp (~thraxisp@24-246-24-251.cable.teksavvy.com) (Read error: Connection reset by peer) | 03:08 | |
*** Joins: thraxisp (~thraxisp@24-246-24-251.cable.teksavvy.com) | 03:09 | |
*** Joins: cerf (~quassel@mcl71-3-78-241-52-239.fbx.proxad.net) | 03:15 | |
*** Joins: dregad_ (534c8bab@gateway/web/freenode/ip.83.76.139.171) | 03:42 | |
dregad | jreese: thanks for adding the changeset, that's what I intended to do. Should have thought about commit vs signoff date :-o | 03:49 |
---|---|---|
*** Quits: roentgen (~arthur@openvpn/community/support/roentgen) (Remote host closed the connection) | 03:50 | |
*** Joins: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) | 03:57 | |
*** Joins: Paul_ (~IceChat09@2001:470:9310:aaaa:71f4:1d42:9e2a:884a) | 04:34 | |
* Paul_ yawns | 04:48 | |
*** Quits: dregad (~dregad@wwwgate1.merck.de) (Quit: I Quit) | 04:56 | |
*** Quits: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) (Read error: Connection reset by peer) | 05:07 | |
* dregad_ throws a bucket of water at Paul | 05:13 | |
*** Joins: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) | 05:13 | |
dregad_ | Paul: looks like your cron job for the chat logs is still not running as it should | 05:16 |
*** Quits: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) (Read error: Connection reset by peer) | 05:19 | |
Paul_ | wtf | 05:19 |
Paul_ | I need dhx :( | 05:19 |
*** Joins: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) | 05:19 | |
Paul_ | . | 05:20 |
asm89 | dhx1: ping | 05:20 |
asm89 | will it work? | 05:20 |
asm89 | :p | 05:20 |
Paul_ | */5 * * * * | 05:20 |
Paul_ | that is every 5 minutes | 05:20 |
Paul_ | not every 5 days right? :P | 05:20 |
asm89 | i believe it is | 05:21 |
asm89 | ah wait | 05:21 |
asm89 | isn't that 05 over? | 05:21 |
asm89 | no | 05:21 |
asm89 | Paul_: what does the full line look like? | 05:22 |
asm89 | and where did you put it? | 05:22 |
Paul_ | scribe@mantisforge:~$ crontab -l | 05:23 |
Paul_ | # m h dom mon dow command | 05:23 |
Paul_ | @reboot /home/scribe/scribe/run | 05:23 |
Paul_ | */5 * * * * /home/scribe/irclog2html-2.9.2/src/irclog2html/logs2html.py /home/scribe/irclogs | 05:23 |
Paul_ | line works fine if run manually :P | 05:24 |
asm89 | ok | 05:24 |
asm89 | i believe you can't have a . in you scripts name | 05:24 |
asm89 | i'm not making this up | 05:24 |
Paul_ | it used to work :P | 05:25 |
Paul_ | but ok | 05:25 |
asm89 | that's just what i know.. | 05:26 |
asm89 | Paul_: and? | 05:37 |
dregad_ | asm89: where did you get that about "." in script name ? first I hear about it | 05:37 |
dregad_ | even in the manpage for crontab(5) they give an example command like $HOME/bin/daily.job | 05:38 |
asm89 | dregad_: http://www.reddit.com/r/raldi/comments/i8z20/frustrating_unix_pitfall_of_the_day_esoteric_cron/ | 05:40 |
dregad_ | Paul_: */5 * * * * is indeed every 5 minutes in my book | 05:40 |
Paul_ | nod | 05:42 |
dregad_ | asm89: nice one, thanks for the info | 05:44 |
dregad_ | Paul_: so can you rename the script (or create an alias) without a . ? | 05:44 |
asm89 | dregad_: one to never forget i guess :P | 05:44 |
asm89 | if the script contains the right shebang, it shouldn't need the .py | 05:45 |
dregad_ | according to man run-parts "the names must consist entirely of ASCII upper- and lower-case letters, ASCII digits, ASCII underscores and ASCII minus-hyphens | 05:45 |
asm89 | yes | 05:46 |
dhx1 | asm89: hi | 05:46 |
dhx1 | Paul_: hi | 05:46 |
* dregad_ waves at dave | 05:47 | |
asm89 | hi dhx1 :) | 05:48 |
Paul_ | dhx1!!!!!!!!!!!!!!! | 05:48 |
dhx1 | dregad_: hi :) | 05:48 |
dhx1 | I get a sense that many questions follow... :) | 05:48 |
Paul_ | how do I use github? | 05:49 |
dhx1 | haha | 05:49 |
Paul_ | $query = 'SELECT user_id FROM {bug_monitor} WHERE bug_id = ' . db_param(); | 05:49 |
Paul_ | so much tidier! | 05:49 |
Paul_ | I dont like db_param() now though ;/ | 05:50 |
Paul_ | $query = 'SELECT user_id FROM {bug_monitor} WHERE bug_id = %d' | 05:50 |
Paul_ | would look much nicer | 05:50 |
dregad_ | agreed | 05:50 |
Paul_ | [I put %d as opposed to $, so we get some scope for checking for binary crap/db stuff later on] | 05:51 |
Paul_ | [as db_param atm just does echo $] | 05:51 |
Paul_ | effectively, that would be implemented as: | 05:51 |
Paul_ | return $sql = strtr( $sql, array( '%s' => '$', '%d' => '$', '%b' => '$', '%wtfyoucallboolifbisbinary' => '$'); | 05:52 |
dhx1 | noooo | 05:54 |
dhx1 | use PDO... no db_param() :) | 05:54 |
Paul_ | that means we can only use $ | 05:55 |
dhx1 | right | 05:55 |
Paul_ | as iirc, some db's dont support named params | 05:55 |
Paul_ | in pdo | 05:55 |
Paul_ | and if we use $ | 05:55 |
Paul_ | and end up having to do something for specific (binary) data | 05:55 |
dhx1 | I'd prefer the PDO approach where you create a query object then assign parameters one by one (each per line) | 05:55 |
dhx1 | specifying the data type as you go | 05:56 |
Paul_ | i'm thinking when we find we need to do something like: | 05:56 |
Paul_ | $stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000); | 05:56 |
Paul_ | if we had a set of %s's etc, you could work that out in the driver | 05:57 |
dhx1 | ah sorry, I see where you're going | 05:57 |
Paul_ | http://msdn.microsoft.com/en-US/library/ff754357(v=SQL.90).aspx | 05:57 |
Paul_ | e.g. they do: | 05:58 |
Paul_ | $tsql = "INSERT INTO Production.ProductPhoto (LargePhoto) | 05:58 |
Paul_ | VALUES (?)"; | 05:58 |
dhx1 | or even just $ourDBObject->bindString('name_of_parameter', $value) | 05:58 |
Paul_ | $uploadPic->bindParam(1, | 05:58 |
Paul_ | $fileStream, | 05:58 |
Paul_ | PDO::PARAM_LOB, | 05:58 |
Paul_ | 0, | 05:58 |
Paul_ | PDO::SQLSRV_ENCODING_BINARY); | 05:58 |
Paul_ | but when doing strings just do: | 05:58 |
Paul_ | $associateIds->execute(array($photoID, $_POST['productid'])); | 05:58 |
Paul_ | so we'd hope that %X would always become $ | 05:59 |
Paul_ | until we find a $ that doesn't work :P | 05:59 |
Paul_ | but then it's down to someone to work out within query execute function how to handle %X/$ with that db | 06:00 |
dhx1 | yeah I quite like that approach | 06:00 |
dhx1 | assuming the string replacement is cheap (processing wise) | 06:00 |
Paul_ | i'm glad you like {config} | 06:00 |
Paul_ | can't see it being any more expensive then calling db_param 5 times to return $ and concatenate the string | 06:00 |
Paul_ | benchmark time! | 06:00 |
dhx1 | we can cheat a little bit too: | 06:00 |
Paul_ | I dont care as long as you like {config} :P | 06:01 |
dhx1 | $query = 'SELECT user_id FROM bug_monitor WHERE bug_id = %d' | 06:01 |
dhx1 | then search for "FROM " and replace it with "FROM " . config_get( 'db_prefix') . "_" | 06:02 |
dhx1 | probably needs preg_replace which is likely expensive | 06:02 |
dhx1 | but just as expensive as {} | 06:02 |
Paul_ | remember you can have {bug_monitor}.user_id | 06:02 |
dhx1 | unless we guarantee those characters are only used for table names | 06:02 |
Paul_ | and i'm assuming that { and } are safe as you aren't really going to have | 06:03 |
Paul_ | select user from plugin_{}!££$_table | 06:03 |
dhx1 | in which case { is always replaced with the db prefix, } with the suffix | 06:03 |
dhx1 | although saying this... do we really need to have prefix/suffix support? | 06:04 |
dhx1 | I think if people want to use it, they can pay for it (preg_replace) | 06:04 |
dhx1 | because I just don't see it being useful in 2011 anymore | 06:04 |
dhx1 | it's cheap and easy to get a VPS where you can create as many databases as you want | 06:05 |
dhx1 | *and* it's more secure, robust, easy to manage, etc | 06:05 |
Paul_ | i'd say yes, keep | 06:05 |
dhx1 | robust = no accidental data collisions, etc | 06:05 |
Paul_ | {config} is shorter then mantis_config_table anyway | 06:05 |
Paul_ | :P | 06:05 |
dhx1 | I'd still be happier with optional preg_replace instead of {} | 06:05 |
dhx1 | agreed we should remove mantis_ and _table... I have already done that in 1.3.x | 06:06 |
dhx1 | in the db_get_table function | 06:06 |
Paul_ | well, probably doesn't matter, I implemented the { } stuff already | 06:06 |
Paul_ | so can always find/replace for {config} to whatever we use | 06:06 |
dhx1 | I'm just worried that someone may want to write a query along the lines of: | 06:06 |
dhx1 | $query = 'SELECT user_id FROM bug_monitor WHERE bug_id = %d AND something = "{value}"' | 06:07 |
dhx1 | ie. where {,} characters are hardcoded into the query | 06:07 |
Paul_ | no because they should be using pdo params.... | 06:07 |
dhx1 | not for hardcoded stuff they don't need to | 06:07 |
Paul_ | for {value} | 06:07 |
dhx1 | {value} in that case is a string, hardcoded... not taken from any PHP variables | 06:07 |
Paul_ | strtr( $sql, array( '%s' => '$', '%d' => '$', '%b' => '$','%t' => '$')); | 06:10 |
Paul_ | 100,000 runs of that take 0.1seconds | 06:10 |
dhx1 | :) | 06:11 |
dhx1 | well we need to do more than that | 06:11 |
dhx1 | record the data types and their position in the string? | 06:12 |
Paul_ | nope | 06:12 |
Paul_ | as we'd hope we dont need to | 06:12 |
dhx1 | don't you want to be able to ->bindParam($value) | 06:12 |
dhx1 | and not specify the data type (because that is specified in the query string) | 06:12 |
Paul_ | basically I want mantis to do: | 06:13 |
Paul_ | db_query_bound( "insert into {files} VALUES( %d, %b )", array( $id, $binary)); | 06:13 |
Paul_ | which we translate to | 06:13 |
Paul_ | pdo->prepare( "insert into mantis_file_table VALUES( $,$ )" ; | 06:14 |
Paul_ | pdo->execute( $stmt, array( $id, $binary); | 06:14 |
Paul_ | but we have the option if oracle/sqlite/mysql can't copy with %b | 06:14 |
Paul_ | to bind params within the driver | 06:14 |
dhx1 | hmmm not convinced on passing an array of values | 06:14 |
dhx1 | gets ugly when you have 5 or more values | 06:15 |
dhx1 | working out the order, etc | 06:15 |
Paul_ | i'm hoping that we never need to though :) | 06:15 |
dhx1 | we will, for instance, adding a new bug report | 06:16 |
dhx1 | that will populate 10+ columns in a single go | 06:16 |
Paul_ | the problem there remember is | 06:16 |
Paul_ | if the PDO statement is | 06:16 |
Paul_ | INSERT INTO TABLE VALUES ( $, $ ) | 06:16 |
Paul_ | INSERT INTO TABLE VALUES ( ?, ? ) | 06:17 |
Paul_ | even | 06:17 |
Paul_ | your then doing | 06:17 |
Paul_ | $stmt->bindParam(1, $name); | 06:17 |
Paul_ | $stmt->bindParam(2, $value); | 06:17 |
Paul_ | in the code | 06:17 |
Paul_ | which seems as messy as passing an array | 06:17 |
dhx1 | you could do: $stmt->bindParam(':parameter_name', $value) | 06:18 |
dhx1 | which makes it clearer which value is assigned to which parameter | 06:18 |
dhx1 | also potentially easier for query building | 06:18 |
Paul_ | yea, although iirc, some of the pdo drivers dont support named params | 06:18 |
dhx1 | where you don't know all the parameters up front | 06:19 |
dhx1 | :o | 06:19 |
dhx1 | no comment at http://www.php.net/manual/en/pdostatement.bindparam.php indicates that | 06:19 |
Paul_ | I just googled and hit http://sebsauvage.net/wiki/doku.php?id=php:pdo_sqlite_named_parameters_bug_workaround | 06:20 |
*** Quits: dregad_ (534c8bab@gateway/web/freenode/ip.83.76.139.171) () | 06:20 | |
dhx1 | seems to be linking to: http://pecl.php.net/bugs/bug.php?id=7560 | 06:21 |
dhx1 | which is irrelevant to us? | 06:21 |
dhx1 | and we could do our own string replacement in the SQLite driver too | 06:22 |
dhx1 | (if a workaround is needed) | 06:22 |
Paul_ | tbh, I think i'm more interested in describing the data type | 06:25 |
Paul_ | rather then the name | 06:25 |
Paul_ | or well | 06:25 |
Paul_ | you can't do | 06:25 |
Paul_ | select * from user where id = :user and id = :user [consider if that's an ested query] | 06:26 |
*** Joins: giallu (~giallu@host14-118-dynamic.252-95-r.retail.telecomitalia.it) | 06:26 | |
*** Quits: giallu (~giallu@host14-118-dynamic.252-95-r.retail.telecomitalia.it) (Changing host) | 06:26 | |
*** Joins: giallu (~giallu@fedora/giallu) | 06:26 | |
*** Quits: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) (Read error: Connection reset by peer) | 06:26 | |
*** Joins: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) | 06:27 | |
dhx1 | no, you'd have to rename parameters anyway | 06:29 |
dhx1 | :user_id, :user1, :user2, etc | 06:29 |
*** lukosanthropos is now known as Lukosanthropos | 06:29 | |
*** Quits: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) (Read error: Connection reset by peer) | 06:29 | |
dhx1 | not too hard to do if you're building a query based on an unknown number of users to match | 06:29 |
dhx1 | just have a counter in the loop | 06:29 |
*** Joins: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) | 06:29 | |
Paul_ | ew, but yea | 06:30 |
dhx1 | saying that, I think the hardest part will be ensuring that built queries can be translated into other DB SQL formats as needed | 06:30 |
Paul_ | thats why I kinda like the idea of %s etc | 06:30 |
Paul_ | as you effectively in some form get a type | 06:31 |
dhx1 | if we're appending " OR user = :user_1" over and over... but a certain database types needs a different syntax | 06:31 |
dhx1 | yeah on the basis of what I just said about translating queries, I can see the argument for not naming parameters | 06:31 |
Paul_ | i.e. we'd effectively need to do: | 06:31 |
dhx1 | otherwise it'd be impossible/too hard to translate those | 06:31 |
Paul_ | $db->prepare( "select * from :name); | 06:31 |
Paul_ | $db->bind( ":name", DBTYPE_STRING, $value); | 06:31 |
Paul_ | $db->execute | 06:32 |
Paul_ | or more maybe makg the type optional but | 06:32 |
dhx1 | not disagreeing on table names | 06:32 |
asm89 | still no dbal? :P | 06:32 |
dhx1 | asm89: couldn't see how it helps us...? | 06:32 |
asm89 | i know i know, just teasing ;P | 06:32 |
dhx1 | haha | 06:33 |
asm89 | mantis supports some exotic databases right? | 06:33 |
Paul_ | not really :) | 06:33 |
Paul_ | I suspect we'll move more to supporting mysql, pgsql,mssql and add sqlite, and probably drop db2/oracle | 06:34 |
Paul_ | [and let someone else add db2/oracle] | 06:34 |
asm89 | ;P | 06:34 |
asm89 | i thought that the exotic database support in mantis was the reason not to use a dbal | 06:35 |
Paul_ | i'd say not exactly | 06:35 |
Paul_ | more a case that | 06:35 |
Paul_ | if you go off and find some that support those db's | 06:35 |
Paul_ | then support schema generation and modification | 06:35 |
Paul_ | then support converting a column from an int to a bool | 06:35 |
Paul_ | for example | 06:35 |
Paul_ | you suddenly find it becomes a very short list | 06:36 |
asm89 | maybe | 06:36 |
Paul_ | even from what I've read on pdo | 06:36 |
Paul_ | it seems to have it's own quirks | 06:36 |
asm89 | but there might still be interesting things on the list? :) | 06:37 |
Paul_ | I looked at doctrine realy early on | 06:37 |
asm89 | and it's probably beneficial for mantis AND the choosen project | 06:37 |
asm89 | :) | 06:37 |
Paul_ | and zend's stuff | 06:37 |
Paul_ | lsmith was involved in doctrine iirc | 06:37 |
asm89 | yes | 06:38 |
asm89 | you know him? | 06:38 |
Paul_ | only from fact I used to hang around #php's irc channel on efnet | 06:38 |
asm89 | ah ok | 06:39 |
asm89 | doctrine dbal is quite nice imo | 06:39 |
Paul_ | iirc, doctrine was a gsoc project a couple of years back | 06:39 |
asm89 | i don't know, and was that 1.x or 2? | 06:42 |
Paul_ | dunno | 06:44 |
Paul_ | :) | 06:44 |
asm89 | but doctrine dbal handles the schema abstraction, type conversion etc | 06:44 |
*** Quits: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) (Read error: Connection reset by peer) | 06:44 | |
asm89 | and that's what you need? | 06:44 |
*** Joins: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) | 06:44 | |
Paul_ | it's more whether it handles converting existing stuff | 06:44 |
Paul_ | all the way through so for example | 06:44 |
Paul_ | lets say originally in mantis | 06:44 |
Paul_ | there was a column of type int | 06:44 |
Paul_ | with an index on it | 06:44 |
Paul_ | where the int value is either 0 or 1 | 06:45 |
Paul_ | and that's now been changed to a boolean | 06:45 |
Paul_ | mysql for example will happily change that | 06:45 |
Paul_ | mssql will change that if you drop/create the index | 06:45 |
asm89 | ah, migrations? | 06:45 |
Paul_ | and postgres will change that if you update the table format whilst doing USING (cast to bool) | 06:45 |
Paul_ | or whatever | 06:45 |
asm89 | i'm not sure how it handles that, but i believe there quite ok support for it | 06:46 |
asm89 | but let's say that it doesn't | 06:46 |
asm89 | isn't the schema abstraction convenient anyway? | 06:46 |
asm89 | yes, you'd still have to be careful when changing the schema between version upgrades, but that will always be the case | 06:47 |
asm89 | :) | 06:47 |
Paul_ | what I kinda found with adodb was | 06:47 |
Paul_ | for what could be simple aka as dhx says "pdo is nice" | 06:47 |
Paul_ | you end up with a big framework [which is fine] | 06:47 |
Paul_ | then you find out you find a specific change you want to do that not all db's like [post doing a release] | 06:47 |
Paul_ | that's fine, you work around it within the big framework | 06:48 |
Paul_ | at which point, people then complain that it breaks package on linux for that framework | 06:48 |
asm89 | hm | 06:48 |
Paul_ | so you get messing around | 06:48 |
Paul_ | :) | 06:48 |
asm89 | i think the whole point of using something like doctrine dbal is that it handles stuff like that | 06:49 |
asm89 | if it doesn't work, someone will fix it in the dbal, or you get to fix it and send a patch :) | 06:49 |
asm89 | which benefits other projects too | 06:49 |
Paul_ | the other thing is we've probably learnt - but it depends how you do it | 06:49 |
Paul_ | for example | 06:49 |
Paul_ | take my bool -> int example | 06:50 |
Paul_ | method one: ALTER SQL COLUMN bool->int | 06:50 |
Paul_ | method two: | 06:50 |
Paul_ | add column | 06:50 |
Paul_ | copy data to new column in php | 06:50 |
Paul_ | drop index on old column | 06:50 |
Paul_ | drop old column | 06:50 |
Paul_ | add index on new column | 06:50 |
asm89 | yes | 06:51 |
Paul_ | in the case of A, your probably gonna get db specific issues | 06:51 |
Paul_ | in the case of B, you've got major db work going on to implement a one line 2second change ;p | 06:51 |
asm89 | there is also doctrine migrations | 06:52 |
asm89 | which i believe handles part of that | 06:52 |
asm89 | and the part that doesn't that could be contributed / made with the other devs? :) | 06:52 |
dhx1 | Paul_: interesting, which database doesn't support ALTER? | 06:53 |
Paul_ | not doesn't support | 06:54 |
Paul_ | but pgsql used to require one to do a USING clause to convert from bool to int | 06:54 |
asm89 | but does other things when int -> bool | 06:54 |
dhx1 | I guess we could use query translations with one->many queries | 06:54 |
Paul_ | and remember | 06:54 |
Paul_ | it's a legacy problem really | 06:54 |
*** Joins: pcperini (~pcperini@c-67-186-56-61.hsd1.pa.comcast.net) | 06:54 | |
dhx1 | no need to worry about legacy so much | 06:55 |
Paul_ | sure | 06:55 |
Paul_ | but you need to allow people to upate | 06:55 |
Paul_ | you could do | 06:55 |
pcperini | hey, i'm trying to install mantis, and i put in the wrong hostname (typo), and now it's angrily cacheing it. i can't get the install process to change the hostname at all. | 06:55 |
Paul_ | database_schema2_Version = 1 | 06:55 |
Paul_ | and make it go from 185 to 1 :) | 06:55 |
asm89 | ? | 06:55 |
dhx1 | I'd like to try and write the queries in SQL:2008 and if that isn't supported for a particular backend, we translate that query in a similar way we handle languages | 06:55 |
dhx1 | that does mean plugins, core, etc have to have knowledge of the different database types supported | 06:56 |
dhx1 | but at least it's easy to see what has been developed/tested and what hasn't | 06:56 |
Paul_ | tbh, as most of our stuff is simple | 06:56 |
Paul_ | with some oddities | 06:56 |
dhx1 | yep | 06:56 |
dhx1 | it's more of an issue with creating, altering tables | 06:57 |
Paul_ | yea | 06:57 |
dhx1 | and doing fancier stuff that I want to try down the track like CHECK constraints, handling database permissions, etc | 06:57 |
asm89 | hm | 06:57 |
dhx1 | referential integrity | 06:57 |
Paul_ | GL! | 06:57 |
asm89 | i still didn't hear any reasons _not_ to use a dbal ;) | 06:57 |
Paul_ | asm89: we've kinda got one | 06:57 |
dhx1 | asm89: that same argument could lead us to use almost anything :P | 06:57 |
Paul_ | it's more a case of whether we use our own one | 06:58 |
Paul_ | and try to keep a simple layer | 06:58 |
asm89 | ah ok | 06:58 |
Paul_ | also | 06:58 |
Paul_ | some people like | 06:58 |
* jreese hates most ORM for record | 06:58 | |
Paul_ | $query->select('userid')->from('table')->where(userid, 10); | 06:58 |
dhx1 | asm89: DBALs need to be complex as they have to generically rewrite queries | 06:58 |
Paul_ | others like db_query( select * from foo); | 06:58 |
asm89 | ORM != DBAL | 06:58 |
dhx1 | asm89: whereas the approach I was advocating is essentially one where we translate non-conforming queries by hand | 06:59 |
dhx1 | jreese: hi :) | 06:59 |
jreese | I know, just staing my position :) | 06:59 |
jreese | hi | 06:59 |
dhx1 | jreese: and agreed :P | 06:59 |
dhx1 | yep, DBAL = ADOdb, ORM = .... run | 07:00 |
asm89 | i think it would benefit mantis + the other project = open source php land as a whole, if mantis would use an 'external' dbal :) | 07:00 |
jreese | dhx1: I would highly reccomend against anything that requires plugins to have to deal with multiple database targets | 07:00 |
asm89 | jreese: why? | 07:00 |
asm89 | ah | 07:00 |
dhx1 | jreese: it's necessary... plugins need to be tested against multiple targets anyway | 07:00 |
asm89 | like that | 07:00 |
jreese | dhx1: my point is that ideally they shouldn't | 07:01 |
dhx1 | jreese: ideally everyone would use SQL:2008 syntax... :) | 07:01 |
Paul_ | [thats kinda why we've got to point of only using ints, strings and binary in the database ;p] | 07:01 |
jreese | dhx1: my point is that I don't want plugins to have to check what database type is being used every time they want to make a query | 07:02 |
pcperini | ok… well, i got that, but i'm trying to create a new user and the "verification code image" is a broken image... | 07:02 |
dhx1 | if we go down the DBAL route again (an ADOdb replacement that is supported) then I agree with your choice | 07:02 |
dhx1 | jreese: oh no, they won't... they'll assume that the database adheres to SQL:2008 | 07:03 |
jreese | pcperini: I assume your problem is actually with your browser | 07:03 |
* Paul_ wonders what sql:2008 is | 07:03 | |
pcperini | jreese: i'll try another one | 07:03 |
jreese | pcperini: you might want to try restarting your browser and/or clearing its cache | 07:03 |
Paul_ | or gd2 not compiled/enbled in php | 07:03 |
pcperini | jreese: m'k | 07:03 |
Paul_ | so | 07:04 |
dhx1 | jreese: and where the database backends don't adhere (easily noticed during testing of the plugin) the plugin author would open up a file similar to strings_english.txt and rewrite the offending query to work on a particular database type | 07:04 |
Paul_ | select * from {config} where id=%d | 07:04 |
pcperini | jreese: no good. i jumped on another browser, and it's still a broken jpg | 07:04 |
dhx1 | jreese: hence it's transparent to the PHP code in the core of the plugin | 07:04 |
jreese | < dhx1> that does mean plugins, core, etc have to have knowledge of the different database types supported | 07:04 |
Paul_ | pcperini: gd2 enabled in php? | 07:04 |
pcperini | Paul_: maybe? where would i check? | 07:04 |
Paul_ | dhx: do we have a check for that? | 07:05 |
dhx1 | jreese: for complex queries and crap database servers, yes | 07:05 |
asm89 | nah | 07:05 |
asm89 | ah dbal can handle creating etc | 07:05 |
asm89 | i agree with Paul_ that schema transitions are tricky | 07:05 |
Paul_ | so anyone against select * from {config} where id=%d over db_param? :P | 07:05 |
dhx1 | Paul_: SQL:2008 is the latest standard on SQL features, syntax, etc | 07:06 |
asm89 | but creating etc not | 07:06 |
dhx1 | Paul_: potentially... | 07:06 |
Paul_ | CREATE table = easy | 07:06 |
Paul_ | select = easy | 07:06 |
Paul_ | ALTER = more challenging | 07:06 |
asm89 | yes | 07:06 |
dhx1 | Paul_: the issue arrising in complex queries where one database backend doesn't need to use all the parameters provided to it | 07:07 |
Paul_ | in an ideal world | 07:07 |
Paul_ | you never need to alter | 07:07 |
Paul_ | as erm | 07:07 |
Paul_ | you'd get your column types correct to begin with ;p | 07:07 |
asm89 | Paul_: and the ALTER things that are tricky and are not supported, if you're gonna code something up for that anyway, why not in a dbal/migrations project ? :) | 07:07 |
dhx1 | Paul_: creating tables is hard when you factor in more advanced things like primary keys, foreign keys, check constraints, etc | 07:07 |
dhx1 | Paul_: almost every database backend implements something differently | 07:08 |
asm89 | that's why you don't want to do that yourselves | 07:08 |
Paul_ | no that's why you do! | 07:08 |
Paul_ | :) | 07:08 |
Paul_ | to be fair | 07:08 |
Paul_ | with mantis using pretty much either | 07:09 |
Paul_ | a) int | 07:09 |
Paul_ | b) string | 07:09 |
Paul_ | c) binary | 07:09 |
* jreese votes to ban any discussion regarding databases | 07:09 | |
Paul_ | and in case of b - most db's now effectively implementing varchar(max) | 07:09 |
Paul_ | i.e. we'll work out the size stuff internally for you | 07:09 |
asm89 | ok | 07:09 |
Paul_ | i.e. we tend not to use char(20) | 07:10 |
Paul_ | or boolean | 07:10 |
Paul_ | or | 07:10 |
asm89 | mantis dev team just doesn't trust other projects ;) | 07:10 |
Paul_ | ;) | 07:10 |
asm89 | :p | 07:10 |
Paul_ | depends on the project :) | 07:10 |
asm89 | too bad though, i'll try to not repeat it anymore, but i think both mantis + the chosen dbal would benefit :) | 07:11 |
Paul_ | the problem is | 07:11 |
Paul_ | lets say we do a release | 07:11 |
Paul_ | then find out in some circumstance, a version of db needs a different query to do the upgrade | 07:11 |
Paul_ | we then need that fixed in the dbal layer | 07:11 |
dhx1 | asm89: I like the look of the Doctrine project, but like most other PHP database abstraction frameworks, I've yet to see complex queries being demoed | 07:11 |
asm89 | no | 07:11 |
dhx1 | asm89: creating a table with complex primary keys, multiple foreign keys, check constraints, multiple data types, etc | 07:12 |
asm89 | Paul_: that is handled by migrations -> migration != dbal | 07:12 |
asm89 | migrations use the dbal, yes | 07:12 |
Paul_ | there's no code in doctring-migrations thing to deal with specific database drivers | 07:12 |
asm89 | dhx1: i believe the doctrine dbal handles a lot of that quite nicely | 07:12 |
dhx1 | jreese: ignored! :) | 07:12 |
jreese | apparently | 07:12 |
asm89 | Paul_: i believe the migrations project is pretty fresh | 07:13 |
pcperini | Paul_: i just made sure i had gd2 installed, and it's still not rendering the image. any ideas? | 07:13 |
Paul_ | nmm, try going to the image directly in the browser and see if it's return some error string [under view source] | 07:14 |
dhx1 | pcperini: isn't built into your PHP binary? | 07:14 |
pcperini | Paul_: ok | 07:14 |
Paul_ | asm89: nothing specific for alter tables in https://github.com/doctrine/dbal/blob/master/lib/Doctrine/DBAL/Schema/MsSqlSchemaManager.php | 07:14 |
pcperini | Paul_: the captcha image is a php file. | 07:14 |
pcperini | "make_captcha_img.php?public_key=#####" | 07:15 |
Paul_ | i mean go to http://foo/make_captcha_img.php?public_key=#### | 07:15 |
Paul_ | and see if it's return an image or php code or text or nothing | 07:15 |
pcperini | it's blank | 07:15 |
Paul_ | my first guess would be gd2 isn't there | 07:16 |
Paul_ | I dont think it does anything strnage ;/ | 07:16 |
Paul_ | but if it's blank, that's normally php failing - check apache error log | 07:16 |
Paul_ | asm89: so yea, pretty sure | 07:16 |
pcperini | Paul_: ok | 07:17 |
Paul_ | we do stuff historically that doctrine wouldn't like amt | 07:17 |
dhx1 | pcperini: you need to turn on PHP error handling to see PHP errors | 07:17 |
dhx1 | pcperini: add the following to config_inc.php: | 07:17 |
asm89 | like what Paul_ ? | 07:17 |
Paul_ | my example from earlier on about changing default values etc | 07:17 |
dhx1 | $g_show_friendly_errors = OFF; | 07:18 |
dhx1 | $g_show_detailed_errors = ON; | 07:18 |
dhx1 | $g_display_errors = array(E_WARNING => 'halt', | 07:18 |
dhx1 | E_NOTICE => 'halt', | 07:18 |
dhx1 | E_USER_ERROR => 'halt', | 07:18 |
dhx1 | E_USER_WARNING => 'halt', | 07:18 |
asm89 | on migrations you mean? | 07:18 |
dhx1 | E_USER_NOTICE => 'halt', | 07:18 |
dhx1 | E_ALL => 'halt'); | 07:18 |
Paul_ | asm89: yes | 07:18 |
asm89 | yes | 07:18 |
pcperini | dhx1: ok | 07:18 |
asm89 | but i bet they'd like to add it | 07:19 |
* asm89 promises not to talk about the ORM ;P | 07:21 | |
dhx1 | asm89: it would be very hard for them to support one->many query remapping | 07:21 |
asm89 | an example? | 07:21 |
dhx1 | asm89: maybe not "very hard", more time consuming and complex | 07:21 |
asm89 | i don't get what you mean by that | 07:21 |
asm89 | * brb | 07:22 |
Paul_ | so anyone against select * from {config} where id=%d over db_param? :P | 07:22 |
dhx1 | asm89: if SQL:2008 allows "ALTER ... RENAME INDEX ... blah" (made up example) and this works as a single query on one database server | 07:23 |
dhx1 | but another requires you to do multiple separate queries: DROP INDEX, ADD INDEX | 07:23 |
Paul_ | going.... going... | 07:23 |
dhx1 | perhaps the multiple queries (in another example) aren't standard or aren't supported widely either | 07:23 |
dhx1 | Paul_: not that I've heard | 07:23 |
Paul_ | i've got a better idea | 07:24 |
dhx1 | Paul_: or at least not yet... we haven't started rewriting queries yet to see whether that is adequate in all situations | 07:24 |
Paul_ | asm89: does doctring support SQL:2008? | 07:24 |
asm89 | back | 07:26 |
asm89 | Paul_: i don't know | 07:30 |
asm89 | is there new stuff in there that you really need? | 07:30 |
asm89 | dhx1: that would be something that a migration module should do i guess | 07:31 |
asm89 | $.. = new SchemaMigration; .. $..->renameIndex('..', '..'); | 07:31 |
asm89 | then you can do all you want ? :) and make it portable | 07:31 |
dhx1 | yeah | 07:32 |
asm89 | i think that trying to translate queries is possible | 07:32 |
asm89 | but that you probably don't want that | 07:32 |
asm89 | unless you're doing your own query language ;) | 07:33 |
Paul_ | gone! | 07:35 |
asm89 | ? | 07:35 |
Paul_ | too late | 07:35 |
Paul_ | it's gone! | 07:35 |
asm89 | i'm not following? | 07:36 |
dhx1 | asm89: he's referring to db_param() | 07:36 |
asm89 | xD | 07:36 |
dhx1 | asm89: a function in the current version of MantisBT | 07:36 |
asm89 | brr | 07:36 |
dhx1 | asm89: hmmm I follow... and DBAL's Schema class seems pretty good for creating tables, etc | 07:36 |
asm89 | dhx1: i'm not bullshitting you :P | 07:37 |
asm89 | i don't want to waste to much of your time :P | 07:37 |
pcperini | how does mantis account creation send mail? because i didn't have a mail service set up previously, and don't really need one outside of mantis. | 07:38 |
dhx1 | asm89: not at all, if you were full of it you would have stopped the discussion by now :P | 07:38 |
dhx1 | Paul_: we're using DBAL :p | 07:38 |
asm89 | haha | 07:38 |
asm89 | symfony2 kind of standard ships doctrine dbal, i think that's also a huge + | 07:39 |
asm89 | the fact that a 'big' framework uses it, that is | 07:39 |
dhx1 | asm89: yep that's very important, more than most other factors IMO | 07:41 |
dhx1 | I guess we'd be programmatically creating tables then, as opposed to using raw SQL | 07:41 |
asm89 | i guess | 07:42 |
asm89 | but that's quite nice imo | 07:42 |
asm89 | having objects to work with | 07:42 |
asm89 | :) | 07:42 |
dhx1 | http://troels.arvin.dk/db/rdbms/ is of interest | 07:44 |
asm89 | 404? | 07:44 |
dhx1 | not for me? | 07:45 |
dhx1 | http://troels.arvin.dk/db/rdbms/ | 07:45 |
asm89 | not in our dns | 07:45 |
asm89 | meh | 07:45 |
asm89 | dhx1: ah nice | 07:46 |
Paul_ | dhx1: have you looked at lithium? | 07:47 |
dhx1 | Paul_: yeah, Daryn has a branch on Github with some sample stuff | 07:47 |
dhx1 | Paul_: I'm not convinced though (at least, not yet) | 07:48 |
Paul_ | we should require php 5.3.6 | 07:49 |
Paul_ | according to doctrine: | 07:49 |
Paul_ | "Up until PHP 5.3.6 PDO has a security problem when using non ascii compatible charsets. Even if specifying the charset using “SET NAMES”, emulated prepared statements and PDO#quote could not reliably escape values, opening up to potential SQL injections. If you are running PHP 5.3.6 you can solve this issue by passing the driver option “charset” to Doctrine PDO MySQL driver. Using SET NAMES does not suffice!" | 07:49 |
asm89 | lithium? | 07:49 |
Paul_ | related to symfony? | 07:50 |
asm89 | mantis going framework? | 07:50 |
Paul_ | http://lithify.me/ | 07:50 |
Paul_ | asm89: probably not :P | 07:50 |
asm89 | i've never heard of it | 07:51 |
asm89 | but i don't like the sound of it | 07:51 |
asm89 | "Lithium is the first and only major PHP framework built from the ground up for PHP 5.3+, and the first to break ground into major new technologies" | 07:51 |
asm89 | .. | 07:51 |
Paul_ | I think it's supposed to be a symfony replacement | 07:52 |
asm89 | sf1 that is? | 07:52 |
*** Parts: pcperini (~pcperini@c-67-186-56-61.hsd1.pa.comcast.net) () | 07:52 | |
Paul_ | ahh | 07:52 |
Paul_ | no cake | 07:52 |
Paul_ | http://benmilleare.com/li3-lithium-cake3/ | 07:52 |
asm89 | ah | 07:55 |
asm89 | mantis going to a framework would be huge :P | 07:56 |
asm89 | template engines and stuff ;) | 07:56 |
* asm89 runs | 07:56 | |
dhx1 | Paul_: let's do it! :P | 07:57 |
asm89 | do what? :P | 07:57 |
asm89 | db_param? ;P | 07:57 |
dhx1 | asm89: convert everything to Lithium :) | 07:58 |
asm89 | brr | 07:58 |
dhx1 | ugh, they implement Blowfish in PHP | 07:58 |
asm89 | -1 | 07:58 |
dhx1 | for their password salting | 07:58 |
asm89 | bye bye lithium | 07:58 |
asm89 | ;P | 07:58 |
Paul_ | dhx1: one thing at a time | 08:02 |
Paul_ | 757 db_param()'s | 08:03 |
Paul_ | so | 08:03 |
Paul_ | %s = string | 08:03 |
dhx1 | Paul_: push it and I'll help :) | 08:03 |
Paul_ | %d = number/float etc | 08:03 |
Paul_ | %b = binary | 08:03 |
asm89 | sed -i 's/db_param//' | 08:03 |
dhx1 | asm89: exactly :) | 08:03 |
asm89 | :P | 08:03 |
dhx1 | asm89: however it will require manual type checking in each instance | 08:04 |
dhx1 | asm89: so it's all hand-written | 08:04 |
asm89 | :< | 08:04 |
asm89 | you've got to check the type of the param? | 08:04 |
dhx1 | asm89: we have to replace queries anyway to use SQL:2008 syntax (instead of MySQL syntax) | 08:04 |
Paul_ | yea | 08:05 |
Paul_ | we use | 08:05 |
Paul_ | int | 08:05 |
Paul_ | varchar | 08:05 |
Paul_ | blob | 08:05 |
Paul_ | binary | 08:05 |
Paul_ | so | 08:05 |
Paul_ | %d = int, %s = varchar/blob, %b = binary | 08:05 |
dhx1 | ugh blob/binary can please die | 08:05 |
Paul_ | the blob/binary stuff might need some splitting later on | 08:06 |
Paul_ | dhx1: by blob i mean longtext | 08:06 |
Paul_ | binary == file storage in db | 08:06 |
dhx1 | Paul_: right, I see | 08:06 |
Paul_ | i.e. | 08:06 |
Paul_ | numbers | 08:06 |
Paul_ | strings | 08:06 |
Paul_ | othershit | 08:06 |
dhx1 | file storage in the database can disappear please :D | 08:06 |
Paul_ | %d, %s, %b | 08:06 |
Paul_ | :) | 08:06 |
Paul_ | my point was we might find we need to split %s later into blob[oracle] and char[] | 08:06 |
dhx1 | especially after I implemented X-Sendfile type support in 1.3.x | 08:07 |
Paul_ | 1.3.x = master? | 08:07 |
Paul_ | hmm | 08:07 |
dhx1 | ie. zero-copy disk->network transfers on Linux machines with nginx, Lighttpd, Apache and so forth | 08:07 |
dhx1 | yeah | 08:07 |
Paul_ | doing %s/%d etc will break my query_bound 'checking' of correct number of variables | 08:07 |
Paul_ | although in theory can search for % and count them | 08:07 |
dhx1 | why check? PDO should trigger an error if parameter values aren't defined or if we try to assign a value to a non-existent parameter? | 08:09 |
Paul_ | true | 08:10 |
Paul_ | dhx1: the reason for having a debug mode for checking would be to spot incorrect %d/%s's etc :P | 08:12 |
dhx1 | yeah, perhaps check the variable type vs %s, %d, etc | 08:13 |
asm89 | run the tests! | 08:15 |
asm89 | :P | 08:15 |
asm89 | * brb | 08:16 |
Paul_ | dhx1: this makes source look so much cleaner btw | 08:21 |
dhx1 | Paul_: indeed | 08:21 |
Paul_ | $t_query = "DELETE FROM {tokens} WHERE " . db_param() . " > expiry"; | 08:22 |
Paul_ | wtf | 08:22 |
Paul_ | ahh | 08:22 |
Paul_ | order confusing me | 08:22 |
dhx1 | ? | 08:23 |
Paul_ | I thought that was a column name ;p | 08:23 |
dhx1 | ah | 08:23 |
Paul_ | whens a realistic time to release 1.3 | 08:24 |
dhx1 | Paul_: when it's ready :P | 08:32 |
Paul_ | so sunday | 08:33 |
Paul_ | ? | 08:33 |
asm89 | do it now! | 08:35 |
asm89 | no | 08:35 |
Paul_ | na | 08:36 |
Paul_ | it'sn ot ready yet | 08:36 |
asm89 | what's new in 1.3x? | 08:41 |
dhx1 | asm89: X-Content-Security-Policy, Javascript rewrite with jQuery, etc | 08:48 |
Paul_ | etc | 08:59 |
Paul_ | I like that | 08:59 |
Paul_ | btw | 09:00 |
Paul_ | we should call it 2.0 | 09:00 |
dhx1 | hah | 09:08 |
dhx1 | maybe | 09:08 |
asm89 | lol | 09:10 |
asm89 | just for the version bumping ? ;) | 09:10 |
Paul_ | we been version 1 for ages | 09:13 |
Paul_ | it makes more sense to break plugins between version 1 and 2 | 09:14 |
Paul_ | then between 1.2 and 1.3 | 09:14 |
asm89 | true | 09:14 |
Paul_ | and i'm pretty confident this will break stuff ;;p | 09:15 |
*** Joins: daryn (~daryn@h158.249.190.173.static.ip.windstream.net) | 09:31 | |
*** Quits: kirillka (~Miranda@195.242.142.17) (Quit: kirillka) | 10:01 | |
*** Joins: tmckeown (~Adium@206.205.36.222) | 10:05 | |
*** Parts: tmckeown (~Adium@206.205.36.222) () | 10:07 | |
GitHub20 | [mantisbt] rombert pushed 3 new commits to master-1.2.x: https://github.com/mantisbt/mantisbt/compare/4c9eb5a...45e2b03 | 10:38 |
GitHub20 | [mantisbt/master-1.2.x] First version of building a installable archive and calculating checksums - Robert Munteanu | 10:38 |
GitHub20 | [mantisbt/master-1.2.x] Use a custom Phing task to extract the MantisBT version - Robert Munteanu | 10:38 |
GitHub20 | [mantisbt/master-1.2.x] Create both zip and tar.gz installable archives - Robert Munteanu | 10:38 |
GitHub178 | [mantisbt] rombert pushed 1 new commit to master-1.2.x: https://github.com/mantisbt/mantisbt/commit/91175d957af9fac4ba671abdaca221a869eae967 | 10:47 |
GitHub178 | [mantisbt/master-1.2.x] Manual: correct valid target to require builddate - Robert Munteanu | 10:47 |
*** Quits: Paul_ (~IceChat09@2001:470:9310:aaaa:71f4:1d42:9e2a:884a) (Ping timeout: 260 seconds) | 10:51 | |
asm89 | i'll be leaving | 11:02 |
asm89 | bye everyone :) | 11:02 |
*** Quits: asm89 (~asm89@unaffiliated/asm89) (Quit: bye!) | 11:02 | |
*** Joins: Paul_ (~IceChat09@2001:470:9310:aaaa:71f4:1d42:9e2a:884a) | 11:17 | |
Paul_ | moo | 11:18 |
*** Quits: dhx1 (~anonymous@60-242-108-164.static.tpgi.com.au) (Remote host closed the connection) | 11:25 | |
*** Joins: dhx1 (~anonymous@60-242-108-164.static.tpgi.com.au) | 11:32 | |
*** Quits: thraxisp (~thraxisp@24-246-24-251.cable.teksavvy.com) (Quit: thraxisp) | 12:39 | |
*** Quits: giallu (~giallu@fedora/giallu) (Ping timeout: 255 seconds) | 12:39 | |
Paul_ | john? | 13:24 |
Paul_ | jreese? | 13:24 |
jreese | yes? | 13:44 |
Paul_ | i pushed the db api changes | 13:54 |
Paul_ | to github | 13:54 |
jreese | and? :P | 14:02 |
Paul_ | jreese: well, did you see what's changed? ;p | 15:07 |
*** Quits: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) (Read error: Connection reset by peer) | 15:34 | |
*** Joins: siebrand (~siebrand@5353A6DC.cm-6-4c.dynamic.ziggo.nl) | 15:34 | |
Paul_ | lo siebrand | 16:01 |
siebrand | hi Paul_ | 16:01 |
Paul_ | which of our language file formats do you translate atm | 16:01 |
siebrand | Paul_: only the 1.2 branch one. | 16:10 |
siebrand | Paul_: I have identified some serious issues migrating to the new format, for two reasons: | 16:11 |
siebrand | Paul_: (1) change of key names and (2) use of constants in keys. | 16:11 |
siebrand | Paul_: if (1) is done consistently, I can fix that. I'd like to see (2) killed with fire. | 16:12 |
siebrand | Paul_: we'll only be supporting one branch, and once 1.3 has an actual probably release moment (not there yet, AFAIK), I'll give moving to that format a priority. | 16:13 |
Paul_ | we've not changed kery names? | 16:16 |
Paul_ | or what you mean :P | 16:17 |
*** Quits: cerf (~quassel@mcl71-3-78-241-52-239.fbx.proxad.net) (Remote host closed the connection) | 16:51 | |
*** Quits: daryn (~daryn@h158.249.190.173.static.ip.windstream.net) (Quit: Ex-Chat) | 17:22 | |
*** Joins: giallu (~giallu@fedora/giallu) | 17:43 | |
*** Joins: thraxisp (~thraxisp@24-246-24-251.cable.teksavvy.com) | 18:23 | |
*** Quits: soustruh (~Miranda@ip-86-49-121-75.net.upcbroadband.cz) (Quit: visit http://wormscesky.cz) | 18:37 | |
* Paul_ pokes siebrand | 19:14 | |
*** Joins: roentgen (~arthur@openvpn/community/support/roentgen) | 19:15 | |
*** Quits: giallu (~giallu@fedora/giallu) (Ping timeout: 255 seconds) | 19:46 | |
*** Quits: scribe9343423 (~scribe934@static.96.23.63.178.clients.your-server.de) (Remote host closed the connection) | 20:00 | |
*** Joins: scribe9343423 (~scribe934@static.96.23.63.178.clients.your-server.de) | 20:00 | |
*** Quits: Paul_ (~IceChat09@2001:470:9310:aaaa:71f4:1d42:9e2a:884a) (Quit: Depression is merely anger without enthusiasm) | 20:01 | |
*** Quits: micahg (~micahg@ubuntu/member/micahg) (Ping timeout: 240 seconds) | 20:22 | |
*** Joins: daryn (~daryn@h103.155.16.98.dynamic.ip.windstream.net) | 23:29 | |
*** Quits: dhx1 (~anonymous@60-242-108-164.static.tpgi.com.au) (Quit: Leaving) | 23:33 | |
*** Joins: dhx1 (~anonymous@60-242-108-164.static.tpgi.com.au) | 23:34 |
Generated by irclog2html.py 2.9.2 by Marius Gedminas - find it at mg.pov.lt!