OpenSSL loading openssl.cnf
Feb 8th
since the openssl.cnf path is hardcoded in binaries. to alter it on windows set environmental variable (as written):
OPENSSLDIR=C:\PATH\TO\OpenSSL\bin OPENSSL_CONF=C:\PATH\TO\OpenSSL\bin\openssl.cnf
OPENSSL_CONF doesn’t work without OPENSSLDIR even if it is set.
settings these options will allow you to use your custom configuration files when creating certificates.
batch file i use to create certificate
GenCERT.bat [save this file to OpenSSL bin directory]
@echo off md %1 openssl genrsa -des3 -out %1/%1.key 1024 openssl req -new -key %1/%1.key -out %1/%1.csr copy %1/%1.key %1/%1.key.org openssl rsa -in %1/%1.key.org -out %1/%1.key openssl x509 -req -days 365 -in %1/%1.csr -signkey %1/%1.key -out %1/%1.crt openssl x509 -outform der -in %1/%1.crt -out %1/%1.der
Sample
:: Start command line and cd to C:\PATH\TO\OpenSSL\bin :: :: usage: GenCERT.bat domain.com :: GenCERT.bat teknober.com
Batch file I use to create SSL certificate for Web etc server
GenPEM.bat [save this file to OpenSSL bin directory]
@echo off mkdir %1 openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout %1/%1.pem -out %1/%1.pem -config "%1/%1.cfg"
Sample
:: Start command line and cd to C:\PATH\TO\OpenSSL\bin :: :: usage: GenPEM.bat domain.com :: GenPEM.bat teknober.com
for sample ssl configuration file see the bottom of the page: http://www.openssl.org/docs/apps/ca.html
PDO PDOStatement with Select Find, Skip, Take
Jan 13th
Currently working on extending PDOStatement at C level which will allow to use select, join, where, order, group, find, skip, take commands in chain.
the usage will be like:
/* Extended PDO */
$pdo = new PDO(/* dsn */);
$pdo->select('table_x')->find(array('id' => 1));
/* using alias */
$pdo->select('table_x as a')->find(array('a.id = ?'))->bind(array(1));
$pdo->select('table_x', array('table_x.id', 'table_y.name', 'table_y.description')->join_left('table_y', array('table_x.id = table_y.id'))->findAll();
/*
--output type (single)
-- find() => PDORow
-- findToCSV() => comma seperated values
-- findToTDV() => tab delimeted values
-- findToJSON() => json string
-- findToXML() => xml string
--output types (multiple)
-- findAll() => array
-- findAllToCSV() => comma separated values
-- findAllToTDV() => tab delimited values
-- findAllToJSON() => json string
-- findAllToXML() => xml string
*/
$pdo->select('table_x', array('table_x.id', 'table_y.name', 'table_y.description')->join_left('table_y', array('table_x.id = table_y.id'))->findAllToCSV();
$pdo->select('table_x', array('table_x.id', 'table_y.name', 'table_y.description')->join_left('table_y', array('table_x.id = table_y.id'))->findAllToTDV();
$pdo->select('table_x', array('table_x.id', 'table_y.name', 'table_y.description')->join_left('table_y', array('table_x.id = table_y.id'))->findAllToJSON();
$pdo->select('table_x', array('table_x.id', 'table_y.name', 'table_y.description')->join_left('table_y', array('table_x.id = table_y.id'))->findAllToXML();
If you have any suggestions on adding more commands please let me know
VMWare on Debian 6 with Linux-Kernel-2.6.32-5
Jan 7th
Installing VMware WorkStation 8 on Debian 6 with Linux-Kernel-2.6.32-5 AMD64
error log: Can’t locate linux headers
apt-get install linux-headers-2.6.32-5-all apt-get install linux-headers-2.6.32-5-all-amd64 apt-get install linux-headers-2.6.32-5-common
error log: Can’t get required utilities make, tar, echo, grep, rmmod, insmod
apt-get install dpkg-dev
Compile vmware modules before running.
JavaScript Object Push method
Dec 12th
here is object.push or json.setNode method i implemented for my needs. the name of the function is not ‘push’ because push method used in Array which is a subset of Object.
Sample:
var test = { };
test.setNode("path.to.your.variable", "my value");
// result:
// alert(test.path.to.your.variable);
//
// will return 'my value'
Code:
Object.prototype.setNode = function(_key, _value) {
var module = this;
var spaceArray = _key ? _key.split('.') : [];
var subSpace = null;
var ndx = null;
for (ndx = 0; ndx < spaceArray.length - 1 && (subSpace = spaceArray[ndx]); ++ndx) {
if (subSpace) {
if (!module[subSpace]) {
module[subSpace] = {};
}
module = module[subSpace];
}
}
subSpace = spaceArray[ndx];
module[subSpace] = _value;
return this;
};
PHP PDO using Transactions with TModel::GenerateStatement functions
Sep 9th
Only have an example to show using the TModel::GenerateInsertStatement, TModel::GenerateUpdateStatement, TModel::GenerateReplaceStatement
In database driver settings for mysql innodb engine, mariadb aria engine: SET AUTOCOMMIT=0;
sample:
public function panel_set_category_enabled($id_category) {
/* start a transaction */
$this->model->beginTransaction();
/* set: populate related columns */
$columns = array();
$columns[] = new TModelColumn("enabled", 1, PDO::PARAM_INT);
$columns[] = new TModelColumn("date_update", TDate::getDATE_MYSQL(time()), PDO::PARAM_STR);
/* execute and return result */
$result = TModel::generateUpdateSet("tc_category", $columns, new TModelWhere("id", $id_category, PDO::PARAM_INT, null, "="), true);
if ($result) {
$this->model->commit();
return $result;
} else {
$this->model->rollBack();
return $result;
}
}
related articles on this blog:
PHP PDO Generate Insert Statement:
http://blog.teknober.com/2011/03/06/php-pdo-generate-insert-statement/
PHP PDO Generate Update Statement:
http://blog.teknober.com/2011/03/06/php-pdo-generate-update-statement/
PHP PDO Generate Replace Statement:
http://blog.teknober.com/2011/04/13/php-pdo-generate-replace-statement/
PHP TNullClass using IteratorAggregate
Sep 8th
This class implemented to return null especially when the variable does not exists to avoid exceptions
Sample:
if (TRequest::inPost(array("category", "product")) == true) {
$post_category = $this->validate_category(TRequest::fromPostObject("category"));
$post_product = $this->validate_product(TRequest::fromPostObject("product"));
/* your code here to */
//print $post_category->name;
}
to use this with GET/POST/COOKIE/SERVER etc, you need to transform the array into TNullClass object using the following function
/**
* Transforms Array to stdClass
* @param mixed $object
* @return stdClass
*/
function array_to_nullclass($object) {
$result = new TNullClass();
if (is_array($object) === true) {
foreach ($object as $key => $value) {
$result->{$key} = $value;
}
}
return $result;
}
TNullClass.php
<?php
/* ----------------------------------------------------------------------------
* Teknober Web Services - All rights reserved
* ----------------------------------------------------------------------------
* File Name : TNullClass.php
* Section : TNullClass
* Dependicies :
* Description : Implements TNullClass class
* : Special class implemented to return null when the variable
* does not exists to avoid exceptions
* ----------------------------------------------------------------------------
* Author : Fatih Piristine
* Company : Teknober Web Services
* E-mail : v-fpiris@teknober.com
* Web : http://www.teknober.com
* ----------------------------------------------------------------------------
* $LastChangedBy$
* $LastChangedDate$
* $LastChangedRevision$
* $HeadURL$
* -------------------------------------------------------------------------- */
/**
* TNullClass Class
*/
class TNullClass implements IteratorAggregate {
public function getIterator () {
return new ArrayIterator($this);
}
public function __get($index) {
if ($this->exists($index) == false) {
$this->{$index} = null;
}
return $this->{$index};
}
public function __set($index, $value) {
$this->{$index} = $value;
}
public function exists($index) {
return isset($this->{$index});
}
public function extend(TNullClass $object) {
foreach ($object as $key => $value) {
$this->{$key} = $value;
}
return $this;
}
public function isnull($index) {
return is_null($this->{$index});
}
public function validate($index, $pattern) {
return preg_match($pattern, $this->{$index});
}
public function length($index) {
return strlen($this->{$index});
}
}
PHP Validating HTML Class using regular expression
Sep 7th
Validating HTML Class on the fly to pass W3C validation to get valid html.
W3C format for HTML Classes: abc or a12 or a_1 [first character is always required to be letter, no commas, semi-colons are allowed]
if (preg_match("/(^[a-z]{1}([a-z0-9_-\s])+)$/", $html_class)) {
$tag->setAttribute("class", $html_class);
}
PHP Validate HTML ID using regular expression
Sep 6th
Validating HTML ID on the fly to pass W3C validation to get valid html.
W3C format for HTML IDs: abc or a12 or a_1 [first character is always required to be letter, no spaces, commas, semi-colons are allowed]
if (preg_match("/(^[a-z]{1}[a-z0-9_]+)$/", $html_id)) {
$tag->setAttribute("id", $html_id);
}
PHP PDO Using reserved words as column names
Jun 25th
Using reserved words as columns names causes problems on insert/update/replace while there is no problem with select.
/* this will not work and will throw no exception */
$result = $model->prepare("update mytable set default = 1");
$result->execute();
/* this will work */
$result = $model->prepare("update mytable set `default` = 1");
$result->execute();
PHP PDO Statement Object with CSV and JSON
Jun 25th
Implements generic object for PHP PDO
sample:
class TableModel {
private $model = null;
public function __construct($model) {
$this->model = &$model;
}
public function get_table($id = null) {
$result = $this->registry->model->prepare("select a.* from table as a where a.id = ?");
$result->bindParam(1, $id, PDO::PARAM_INT);
$result->setFetchMode(PDO::FETCH_CLASS, 'TModelRow');
$result->execute();
return $result->fetchAll();
}
}
$model = new PDO(...);
$table_model = new TableModel($model);
$rows = $table_model->get_table(93);
foreach ($rows as $row) {
print_r($row->toArray());
echo $row; // is equivalent to $row->toJSON();
echo $row->toJSON();
echo $row->toTSV();
echo $row->toCSV(); // triggers error because not implemented!
}


LinkedIn
Twitter
Skype