Trick For Running Python Scripts On Reboot - Ubuntu
http://www.raspberrypi-spy.co.uk/2013/07/running-a-python-script-at-boot-using-cron/
Here’s what it looks like in crontab:
@reboot python /home/pi/MyScript.py &
http://www.raspberrypi-spy.co.uk/2013/07/running-a-python-script-at-boot-using-cron/
Here’s what it looks like in crontab:
@reboot python /home/pi/MyScript.py &
This is a quick overview of the process of adding an SSL certificate to apache (for next time…):
Generate your private key and CSR with:
openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr
/etc/apache2/sites-enabled/ look like this:<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /home/youruser/yourdomain.crt
SSLCertificateKeyFile /home/youruser/yourdomain.key
SSLCACertificateFile /var/www/verisign.crt
ServerName www.yourdomain.com
DocumentRoot /var/www/yourdomain
An explanation of each of those certificates:
SSLCertificateFile - This is the certificate you received after your request.SSLCertificateKeyFile - This is the private key you generated in step 1.SSLCACertificateFile - This is the intermediary cert you downloaded from verisign.https://github.com/clevertech/YiiBooster/issues/703
Just posted an issue on github with instructions for how to get TbEditableColumn working inside of one of YiiBooster’s subgrids.
EQuickDlgs::iframeButton(
array(
'controllerRoute' => 'controller/create',
'dialogTitle' => 'Create New Record',
'dialogWidth' => 800,
'dialogHeight' => 600,
'openButtonText' => 'Add Record',
'closeButtonText' => 'Close',
//'openButtonHtmlOptions' => array(...),
)
);
With the code above, I was getting the following error:
The system is unable to find the requested action “create?qdsClass=EFrameJuiDlg”.
I had to change line 79 in EFrameJuiDlg.php inside the quickdlgs extension from:
$url .= '?' . http_build_query($this->urlParams);
to:
$url .= '&' . http_build_query($this->urlParams);
htmlspecialchars()expects parameter 1 to be string, array given C:\xampp\htdocs\yii\framework\web\helpers\CHtml.php(98)
The error only occurred when trying to apply the echmultiselect filter to the filter above the gridview.
Here’s what I did to fix:
Went to the Yii framework folder and found the following file: yii\framework\web\helpers\CHtml.php
Modified line 98 from return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset); to: return htmlspecialchars(print_r($text, true),ENT_QUOTES,Yii::app()->charset);
Then you need to implement the echmultiselect extension in the view (my example shows adding it for site_status):
Added this php code to the view: $data= CHtml::listData(MyModel::model()->findAll(), 'blahblahblah', 'blahblahblah'); (but it should probably be in the model)
Made my ‘columns’ array look like this:
'columns'=>array(
'id',
'blah',
'blahblah',
array (
'name'=>'blahblahblah',
'filter'=> $this->widget('ext.EchMultiselect.EchMultiselect',
array(
'model' => $model,
'dropDownAttribute' => 'blahblahblah',
'data' => $data,
'options' => array('buttonWidth' => 80, 'ajaxRefresh' => true),
),
true // capture output; needed so the widget displays inside the grid
),
),
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
),
),
I had no idea this existed until now: http://www.dpriver.com/pp/sqlformat.htm
It makes your SQL queries more readable.
I learned about it from this thread: http://www.reddit.com/r/PHP/comments/1n8kgz/how_do_you_write_readable_sql_queries/
Updated 2026-08-29: the original snippet interpolated the value into the SQL, closed the connection only on failure, and printed success from a finally block that runs on failure too.
I’ve had issues with queries failing and leaving connections open (enough to stall a server…). I know python’s oursql library supports using the WITH keyword, and I think it will close the connection when there is an unexpected error. However, I’m not sure if I’m ready to move to a different library for MySQL (it’s working well).
Here’s what I’m currently doing to close the cursor and connection, then re-raise the error:
import MySQLdb
conn = MySQLdb.connect(user="username", passwd="secret", db="database", charset='utf8')
cur = conn.cursor()
try:
cur.execute("INSERT INTO testTable (userid) VALUES(%s);", (user_id,))
conn.commit()
except Exception:
conn.rollback()
raise
finally:
cur.close()
conn.close()
Three things were wrong with what I had here before. The value went in with % string formatting, which builds the SQL by concatenation and leaves it open to injection, so it has to be passed as a parameter with a comma instead. The close only ran in except, so a successful insert leaked the connection, which is the exact problem I was trying to solve. And finally runs on both paths, so the old code printed “Insert Successful” even when the insert had just failed.
I changed line 25 of the haufe.sharepoint library to fix an issue I was having with URLs which had %20 (the url encoded space character):
New Code:
location = urllib.quote(self.location(), safe=":/")
Old Code:
location = self.location()
Just try using a URL with %20 with haufe.sharepoint to see what I’m talking about.
To figure this out, you’re going to need logging. Turn on logging with the following:
http://stackoverflow.com/questions/2388046/can-you-help-me-solve-this-suds-soap-issue
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG)
logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)
pythontesting.net’s article on pip
Like this article says, it’s fixed in the dev version of pip.