基于docker容器打印的9*9乘法表

By admin |

闲来无事,折腾docker也是一种乐趣。

步骤相对简单,可以用来建立对docker使用的兴趣,或者用来作为docker感兴趣的入门材料也不错。

1:拉取php7的docker镜像

docker pull php:7.0-cli

2:在当前文件夹创建test.php,内容如下:

<?php
for ($i = 1; $i < 10; $i++) {
	for ($j = 1; $j <= $i; $j++) {
		printf ("%2d * %2d = %2d\t",$j, $i, $i*$j);
	}
	print "\n";
}

3:运行docker镜像

php小试题

By admin |
$a1 = array("a" => "JAVA", "b" => "ASP");
$a2 = array("c" => "C", "b" => "PHP");
print_r(array_merge($a1, $a2));
print_r(array_merge($a2, $a1));
print_r($a1 + $a2);
print_r($a2 + $a1);


Drupal db_transaction 使用范式

By admin |
$transaction = isset($transaction) ? $transaction : db_transaction();

try {
  $ids = array_keys($entities);

  db_delete($this->entityInfo['base table'])
    ->condition($this->idKey, $ids, 'IN')
    ->execute();

  if (isset($this->revisionTable)) {
    db_delete($this->revisionTable)
      ->condition($this->idKey, $ids, 'IN')
      ->execute();
  }
  // Reset the cache as soon as the changes have been applied.
  $this->resetCache($ids);

  foreach ($entities as $id => $entity) {
    $this->invoke('delete', $entity);

Mac上将brew安装的MySql改用Docker执行

By admin |

docker是最近大热的技术,堪称技术界的网红。本着技术人折腾的本性,尝试将本地的MySql服务器改成用docker执行,本文记录折腾过程,以作备忘。

步骤如下:

1:安装docker

自己找文档去

2:使用mysql官方发布的docker image,命令如下

docker pull mysql/mysql-server:5.7.16 ##(这是本文发布时候MySql最新稳定版,并且最好和本地的Mysql版本一致,否则第三步可能会有问题。)

因为GFW的缘故,这个过程有点漫长。命令执行完之后,执行"docker images"看到有mysql-server字样即表示成功了。


3:运行docker images,有几个注意点

a:端口号问题,默认情况下3306被占用了,所以用其他端口进行映射,比如6603

Drupal db_select addExpression

By admin |
$query = db_select('turnover_estimate', 'e');
$query->fields('e');
$query->addExpression("DATE_FORMAT(date, '%Y-%m-%d')", 'date_format');
$res =  $query->execute()->fetchAllAssoc('date_format');


如上代码可以正确执行。但是略有小坑。

$query->addExpression('DATE_FORMAT(date, "%Y-%m-%d"), 'date_format');

注意单引号和双引号,这里的写法会报错。


相关讨论见这里:

drush命令讲解之数据库操作

By admin |

匆匆一看,竟然2016年过了一半了,居然还没写过一篇博客。真是罪过罪过。

今天分享一个我经常用的drush命令,用来做数据库方面的操作。我经常这样使用;但是看周围的很似乎很少这么玩。

秉着知识共享,不藏私货的精神,共享出来。

数据库导出:

drush sql-dump > DB.sql
drush sql-dump --gzip > DB.tar.gz ###导出数据库并压缩


数据库导入:

drush sqlc < DB.sql
gunzip -c DB.tar.gz | drush sqlc  ###导入gzip压缩文件


一键解锁Drupal登录锁定

drush sqlq "delete from flood where 1;"


自定义eck的添加路径

By admin |

对于有洁癖的人来说,eck的添加路径是不完美的,一般是如下形式:

admin/structure/entity-type/ENTITY_TYPE/BUNDLE/add

这种形式的菜单,一般会调用默认的后台主题进行渲染。


下面的代码,对eck生成的entity,使用自定义的路径,这会带来诸多好处。

代码比较短,复制粘贴到自定义模块即可。

drupal entity metadata wrapper判断entityreference字段是否为空的技巧

By admin |

个人是entity重度用户,经常使用entity_metadata_wrapper对entity进行set与get操作。

这是个神器,但是用不好会伤身,伤神。


下面这段代码,用来判断一个entityreference字段是否为空,可以减少很多无谓的报错。

// also check if there is an identifier, __isset alone is not enough!
if ($wrapper->__isset('field_ref') && $wrapper->field_ref->getIdentifier()) {
    $number =  $wrapper->field_ref->field_project_number_complete->value();
    return $number;
}


重置Entity ID

By admin |

使用Drupal开发过程中,会产生一定的测试数据,比如node,会产生很多的数据;这个时候nid会变得不可控制。

如果想重置nid从1开始,则可以使用如下步骤实现:

1:将所有node删除

2:执行语句: