"admin" 发布的文章

相关文章

何为 Composer

Composer 是 PHP 的依赖管理工具, 你可以在项目的 composer.json 文件中声明所依赖的组件, 它将自动为你安装.

安装 Composer

参考链接

命令行窗口下执行 php -v 检查是否已经正确安装 PHP, 如果没有安装, 安装它, 再把路径加到环境变量 PATH 中.

装完 PHP 再依次执行一下3条命令:

# 下载安装脚本 composer-setup.php 到当前目录
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"

# 安装
php composer-setup.php

# 删除安装脚本
php -r "unlink('composer-setup.php');"

一般来说, Composer 我们使用全局安装, 其实就是放到环境变量 PATH 里面, 根据系统执行下面的步骤:

Windows

  1. 进入 PHP 的安装目录 (即 php.exe 所在位置);
  2. 复制 composer.phar 到上述目录;
  3. 新建 composer.bat 文件, 并将下列代码保存到该文件:
@php "%~dp0composer.phar" %*

Linux / Mac

只需移动或者复制 composer.phar 到目录 /usr/local/bin/ 即可, 即:

sudo mv composer.phar /usr/local/bin/composer

全局安装后, 执行以下命令, 如果输出了版本号, 说明 Composer 已经安装成功:

composer --version

配置 Composer 镜像

注意: 目前中国镜像已经失效, 请使用 Laravel China 社区提供的镜像服务.

中国镜像(已失效)

Laravel China 镜像服务

Composer 镜像我使用的是中国镜像, 因为速度快, 也非常稳定. 镜像的配置分为 全局项目 两种:

全局配置 (推荐)

# 已失效
# composer config -g repo.packagist composer https://packagist.phpcomposer.com
composer config -g repo.packagist composer https://packagist.laravel-china.org

项目配置

composer.json 所在目录, 执行以下命令:

# 已失效
# composer config repo.packagist composer https://packagist.phpcomposer.com
composer config  repo.packagist composer https://packagist.laravel-china.org

此时, composer.json 会多了 repositories 字段 (以 laravel 为例):

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*"
    },
    "config": {
        "preferred-install": "dist"
    },
    "repositories": {
        "packagist": {
            "type": "composer",
            "url": "https://packagist.laravel-china.org"
        }
    }
}

OK, 镜像配置完成, 执行下面的命令, 体验飞一般的速度!

composer install

至于为什么变快了, 我会在后续的文章中解释.

相关文章

我的电脑是 Ubuntu 14.04 LTS, 自己手工编译 php5.6, 打开 ZEND_EXTRA_LIBS='-liconv' 时, 发现没有安装 libiconv, 也就是编码转换的库, 所以百度该库的安装方法, 如下:

下载:

$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

解压:

$ tar -zxvf libiconv-1.14.tar.gz
$ cd libiconv-1.14.1

安装:

$ ./configure --prefix=/usr/local
$ make
# make install

不过我make的时候出现了一个问题:

n file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
^
make[2]: * [progname.o] Error 1
make[2]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'
make[1]: * [all] Error 2
make[1]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'
make: * [all] Error 2

原因未明, 应该是软件的bug吧, 后来百度找到了 解决方法, 整理如下~

切换到srclib目录下:

$ cd srclib

修改stdio.in.h文件:

$ gedit stdio.in.h

定位到

_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

这一行, 改成:

#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif

注意粘贴完下面有两行 #endif, 别少复制了一行 #endif, 改完是这个样子滴~别忘了保存~

#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
#endif

保存, make 就可以了, make install 完别忘了

# ldconfig

记下来, 下次就不会忘记了~

本文于 2017-12-05 重新整理.

写了一个可以对 $_GET, $_POST 等输入进行过滤的函数,递归实现如下:

function array_map_recursive($filters, $data)
{
    $result = [];
    foreach ($filters as $filter)
    {
        foreach ($data as $key => $value)
        {
            $result[$key] = is_array($value) 
                ? array_map_recursive($filters, $value)
                : call_user_func($filter, $value);
        }
    }
    return $result;
}

后来想想,以前看书的时候经常说递归函数会浪费堆栈空间,甚至会导致堆栈溢出,于是重新用循环实现了这个函数:

function array_map_all($filters, $data)
{
    foreach ($filters as $filter)
    {
        $stack = [];
        $stack[] = &$data;
        while ( ! empty($stack))
        {
            $node = &$stack[count($stack) - 1];

            array_pop($stack);

            if ( ! is_array($node))
            {
                $node = call_user_func($filter, $node);
            }
            else
            {
                foreach ($node as $key => $value)
                {
                    if ( ! empty($value))
                    {
                        $stack[] = &$node[$key];
                    }
                }
            }
        }
    }
    return $data;
}

写完哇擦~多了这么多行~还是递归简洁明了:)

速度如何呢?写个代码测试一下!

$filters = ['trim', 'htmlspecialchars'];
$data = [
    ' 5 &',
    [' 3 ', ' 7 '],
    [' 2 ', ' 4 '],
    ' 15 ',
    ' 4 ',
    ['12 ', '  ', ' 3 ', ' 4'],
];

$begin = microtime(true);
for ($i = 0; $i < 10000; $i++)
{
    array_map_recursive($filters, $data);
}
$t1 = microtime(true) - $begin;
echo '递归用时: '.sprintf('%.4f', $t1)."\n";

$begin = microtime(true);
for ($i = 0; $i < 10000; $i++)
{
    array_map_all($filters, $data);
}
$t2 = microtime(true) - $begin;
echo '循环用时: '.sprintf('%.4f', $t2)."\n";

运行结果:
递归用时: 0.4985
循环用时: 0.5489

换个复杂的七维数组,如下:

$data = [
    ' 5 &',
    [' 3 ', ' 7 ', [' 55 ', ['    565 ', [' 5445 ', ['da ', [', d '], '3']], 'd d']]],
    [' 2 ', ' 4 '],
    ' 15 ',
    ' 4 ',
    ['12 ', '  ', ' 3 ', ' 4'],
];

运行结果:
递归用时: 5.7484
循环用时: 0.9799

嘿嘿~结果不用我说了吧!还是循环好一些,不过实际应用中,是感觉不到太大差别的,毕竟是10000次循环呐!更何况是一个七维数组呢~

最后更新时间 2017-12-05.

我的环境:

phpMyAdmin:4.0.4.1

PHP:5.6.11

第一步 关闭自动更新

打开 ./libraries 目录下的 vendor_config.php,将 VERSION_CHECK_DEFAULT 的值设置为 FALSE, 意思是关闭自动更新。原因是官方无法访问。

define('VERSION_CHECK_DEFAULT', FALSE);

第二步 修正时间问题

打开 ./libraries 目录下的 Util.class.php,查找,

return strftime($date, $timestamp);

替换成下面的代码:

if (extension_loaded('gettext'))
{
    return strftime($date, $timestamp);
}

如果你在中国,使用北京时间,可以替换成下面的代码:

if (extension_loaded('gettext'))
{
    date_default_timezone_set('UTC');
    return gmdate('Y-m-d H:i:s', $timestamp + 28800);
}

至此,再刷新一下页面,点击“结构”等页面,页面的响应速度是不是大大提升了呢?嘿嘿,我的已经解决了,妈妈再也不用担心我又卡在“结构”页面啦!哈哈!最后感谢这篇文章指点迷津哦:

该链接已失效(2017-12-05).

http://www.fenanr.com/diy/112032.html

最后更新时间 2017-12-05.

本文整理自2ccc盒子iny的帖子 → 链接到原贴
破解 → 链接

一、绿色版介绍

绿色版除了不包含 FastReport(RAD Studio自带的FastReport为精简版),其它均为完整版,没有做任何的精简,也没有做任何的改动!
绿色版包括了绿化程序1.0版(RADStudioXE7Green.exe),如有更新,仅仅只需要更新RADStudioXE7Green.exe即可。
绿色版不包括任何破解和激活,如果喜欢 RAD Studio ,请支持正版。

二、绿色版使用说明

1) RAD Studio XE7 绿色版只需要下载以下三个压缩包:

  • NetFx20SP2(根据系统类型选择x86或者x64版本,Vista及以上系统不用安装)
  • vjredist (J# 2.0)
  • RAD Studio XE7 绿色版.7z

第一步: 先安装NetFx20SP2 (已经安装过的可省略此步,Vista及以上系统也可省略此步);
第二步: 安装vjredist (已经安装过的可省略此步);
第三步: 解压RAD Studio XE7 绿色版.7z到任意目录;
第四步:执行RADStudioXE7Green.exe 即可实现绿化和注销;

2) 如需使用帮助文档,请下载 Microsoft Windows Document Explorer 2008.rarRAD Studio XE7 Help.7z 两个压缩包,并且将 RAD Studio XE7 Help.7z 解压到 Delphi XE7 的根目录(XE7\Help\)。
先安装 Microsoft Windows Document Explorer 2008 (先运行 DExplore.exe ,再运行 dexplorelp.exe)
然后再运行 RADStudioXE7Green.exe,勾选上“注册帮助文档”进行绿化或者注销;

3) 如需使用Java SDKAndroid SDKAndroid NDK,请下载 RAD Studio XE7 PlatformSDKs.7z
并将 RAD Studio XE7 PlatformSDKs.7z 解压到 Delphi XE5 的根目录(XE7\PlatformSDKs\)
然后再运行 RADStudioXE7Green.exe,则自动配置 Android 环境。

三、下载地址

加*为必须下载项,如果已经有 .NET2.0J#2.0 ,可以省略

* Microsoft .NET Framework 2.0 Service Pack 2 官方下载地址:
下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?displaylang=zh-cn&FamilyID=5b2c0358-915b-4eb5-9b1d-10e506da9d0f

* Microsoft Visual J# 2.0 版可再发行组件包官方下载地址:
下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=f72c74b3-ed0e-4af8-ae63-2f0e42501be1

Microsoft Windows Document Explorer 2008.rar(12.5MB)
下载地址:http://pan.baidu.com/s/1qWLkOlI

* RAD Studio XE7 绿色版.7z(1.73GB)
下载地址:http://pan.baidu.com/s/1pJ1Aeoz
密码:mfch
下载地址:http://yunpan.cn/Q7QtFpvGK6gdh
密码:ae95
MD5: C10B10A99E824371CB5BA365A854E402
SHA1: 2566F926B5BEA59805C2A88684D379D1EFBA0BE7
CRC32: 04577E48

* RAD Studio XE7 Green 1.6.rar(1.2MB)
(含插件IDEFixPack 5.71)
下载地址:http://pan.baidu.com/s/1ntn1kNZ
密码:dr31
MD5: CCB8CAE87E6013CEDCBA60AA5A08B542
SHA1: CA01FA7B77B89CC1205300C3AD0FBDB0A4DA382C
CRC32: B0601DFF

RAD Studio XE7 Help.7z(245MB)
下载地址:http://pan.baidu.com/s/1bndCarP
密码:5e03
MD5: C28851D4412168FB70D6DADCA9995F63
SHA1: 6CD0C244BA6B19D1114898C2523A89E131F43ABE
CRC32: 6664E28A

RAD Studio XE7 PlatformSDKs.7z(477MB)
下载地址:http://pan.baidu.com/s/1kTyuxQv
密码:tudu
MD5: 7EA0B678D5B49BFF7D0214A1EA231515
SHA1: 63AD9E48FE149CE9108C36BC6816CFC095895C03
CRC32: 657C96B3

RAD Studio XE7 Green Package.7z(118MB)
下载地址:http://pan.baidu.com/s/1qWjrhAs
密码:kkcy
MD5: D4FC2893B57C78C69AA7C2544BC7384E
SHA1: D677D76ECF66FC3A702C3F8EAC36041EECB46B14
CRC32: 905EE168

介绍:RAD Studio XE7 Green Package.7z 用于自制绿色版,前提是已经安装 RAD Studio XE7
使用说明:将安装之后的XE7整个目录复制到别的路径,比如 D:\XE7,然后将 RAD Studio XE7 Green Package.7z解压到 D:\XE7 目录下,运行 RADStudioXE7Green.exe 即可进行绿化和注销。

四、运行出现错误?

如果出现类没有注册,请将下面保存成 a.bat , 放在 XE7\bin 目录下,右键管理员身份运行,进行 .net2.0 修复!

@echo off
%~d0
cd %~dp0
for /R . %%a in (*.dll) do (
    "%WINDIR%\Microsoft.NET\Framework\v2.0.50727\regasm.exe" "%%a"
)
@echo on

五、一切顺利,发现没有破解,好坑?

别急,这里有破解文件,完美哦!

http://bbs.2ccc.com/attachments/2014/wang_80919_20149109614.rar
http://pan.baidu.com/s/1gdzi9Rt

下载后,怎么用?

右键,管理员身份运行 keymaker.exe XE7patch.exe,选择 XE7\bin 目录下的 bds.exe,会看到 success 的提示;
根据使用的系统复制许可证文件 lic.slip 到如下目录:

XP:

C:\Documents and Settings\All Users\Dati applicazioni\Embarcadero

Win7 / Win8:

C:\ProgramData\Embarcadero

然后,然后就没有啦!


RAD Studio XE7 Green Update History
-1.6
增加对插件Compiler Speed Pack for Andorid的支持
-1.5
修正快捷方式没有C++ Builder XE7和RAD Studio XE7的问题
修正文件关联路径错误的问题
-1.4
加入“检测Android环境是否有效(较费时)”选项
优化绿化和卸载速度,速度进一步提升
-1.3
加入Android选项,自动检测Android相关路径,并可以自由定义Android的相关路径
修正了AndroidPath路径的错误
-1.2
修正了FireDac配置文件路径的错误
修正注册文件时未加入x86系统判断的错误
-1.1
修正了IDEFixPack未加判断的问题
修正了Compiler Speed Pack未加判断的问题
修正了PlatformSDKs未加判断的问题
-1.0
RAD Studio XE7 绿化程序第一版
采用全新的代码,绿化更精准,速度更快
自动绿化C++Builder,去掉“绿化C++Builder”的选项
增加了对dbExpress配置的绿化
增加了对FireDAC配置的绿化
绿化程序正式更名为RADStudioXE7Green.exe,与RAD Studio齐名