使用 CakePHP 快速打造 Web 站点

安装

无论您的经验水平如何,CakePHP 都可以使应用程序更易于快速编写和维护,从而简化您的工作。CakePHP 有很多非常酷而且十分有用的特性。CakePHP 可以为您处理 Ajax、数据检验和会话。如果可以编写插件告诉 CakePHP 怎样做,它甚至能提供更多帮助。现在您还不能使用 CakePHP。需要先安装 CakePHP。

解压和安装

为了达到本教程的目的,应当在 Web 服务器的 Web 根目录内解压整个 CakePHP 安装目录。在清单 1 中,Web 根目录是 /webroot。


清单 1. 解压 CakePHP 安装目录

					
unzip cake_1.2.2.8120.zip
cd cake_1.2.2.8120
mv * /webroot
                

 

输入 ls -la /webroot 以列出 Web 根目录的内容并检验文件是否已被正确复制。输出应当类似于清单 2。


清单 2. ls 命令的输出

					
-rw-r--r--    1 YOURUSER  YOURGROUP       139 2007-12-15 22:50 htaccess
drwxr-xr-x   12 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 app
drwxr-xr-x    7 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 cake
-rw-r--r--    1 YOURUSER  YOURGROUP      2303 2007-12-15 22:50 index.php
drwxr-xr-x    5 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 vendors

 

目录 app/tmp 必须是 Web 服务器可写的。通过输入 ls -l app 确认对这个文件夹的权限。输出可能类似于清单 3。


清单 3. 确认文件夹权限

					
-rw-r--r--    1 YOURUSER  YOURGROUP       139 2007-12-15 22:50 .htaccess
drwxr-xr-x    3 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 config
drwxr-xr-x    3 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 controllers
-rw-r--r--    1 YOURUSER  YOURGROUP       953 2007-12-15 22:50 index.php
drwxr-xr-x    3 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 locale
drwxr-xr-x    3 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 models
drwxr-xr-x    2 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 plugins
drwxr-xr-x    5 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 tests
drwxr-xr-x    6 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 tmp
drwxr-xr-x    3 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 vendors
drwxr-xr-x    8 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 views
drwxr-xr-x    6 YOURUSER  YOURGROUP      4096 2007-12-15 22:50 webroot
                

 

完成此任务的最简单方法可能是最常见也是最不安全的:将写权限授予每个人。

chmod -R 777 app/tmp
ls -l app
                

 

tmp 文件夹的权限应当已经被更新,如下所示。

drwxrwxrwx    7 YOURUSER  YOURGROUP      2007-12-15 22:50 tmp
                

 

通常情况下,不 建议将写权限授予每个人。理想情况下,应当将这个文件夹的所有权授予 Web 服务器使用的那个用户,或将 Web 服务器使用的那个用户添加到这个目录的一个组中并添加组的写权限。本教程旨在演示如何使用 CakePHP,并不是有关构建安全应用程序的指南。虽然安全性应当是任何应用程序开发的首要考虑事项,但是全面讨论安全 PHP 实践超出了本教程的范围。

为了执行产品安装,将 Web 服务器的 Web 根目录改为 app/webroot,这样做将把可以通过 Web 浏览器访问的代码量减至最少,有助于增强系统的安全性。


检验 1

在浏览器中,访问与 Web 服务器的 Web 根目录相对应的 URL。例如,如果已将 CakePHP 安装到本地主机的 Web 根目录中,则访问 http://localhost;您应当会看到 CakePHP 默认主页。


图 1. 应当看到的 CakePHP 默认主页
应当看到的 CakePHP 默认主页

注意: 如果默认主页看上去更像图 2,则说明 mod_rewrite 并没有按照 CakePHP 所需的方式运行。第一次使用 CakePHP 的用户有时可能会遇到这个问题。


图 2. 外观不正确的主页
外观不正确的主页

以下是一些需要确认的东西。

.htaccess 文件是否正确?

.htaccess 文件应当已出现在 CakePHP 安装目录中。在大多数 *nix 系统中,此文件都是默认隐藏的。如果没有该文件,请检查下载的源文件或从 CakePHP.org 获得最新更新。通过访问安装目录并运行 cat .htaccess ,确认该文件是否存在且有效。这将显示该文件的内容,其内容应当类似于清单 4。


清单 4. 确认 .htaccess 文件是否存在

					
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
                

 

是否为服务器启用了 mod_rewrite?

确保为 Web 服务器启用 mod_rewrite 。对于 Apache,httpd.conf 文件中应当会出现两个不同的行。在 LoadModule 列表中,您应当会看到下面一行(或极为类似):LoadModule rewrite_module libexec/mod_rewrite.so 。在 AddModule 列表中,您应当会看到这一行(或极为类似):AddModule mod_rewrite.c 。

如果您在 httpd.conf 文件中找不到这两行,则 mod_rewrite 未启用。请查阅服务器文档以获得如何解决此问题的详细信息。

Ubuntu下启用mod_rewrite的方式是:

cd /etc/apache2/mod-available/
sudo a2enmod rewrite
sudo /etc/init.d/apache2 reload
 

 

服务器是否允许 .htaccess 覆盖?

确保将 Web 服务器配置为允许 .htaccess 覆盖。对于 Apache,每个目录都应在 httpd.conf 文件中定义。这些定义可能因为安装的不同看上去有所不同,但应当仍会在定义中看到 AllowOverride All 一行。定义可能类似于清单 5。


清单 5. httpd.conf 文件中的定义

					
   <Directory "/webroot">
       Options Indexes MultiViews
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>
                

 

有关 .htaccess 覆盖的更多信息,请参阅服务器文档。


配置数据库连接

既然已经安装了 CakePHP,并已与 Web 服务器关联了起来,就需要把 CakePHP 引入数据库。本节介绍如何设置数据库配置和检验 CakePHP 是否接受这个数据库。Tor 需要一个位置来保存其用户和产品数据。然后要创建一个 users 表,该表用于构建 Tor 的登录和注册部分。


编辑数据库配置文件

设置数据库配置十分简单,但在开始之前,要确保数据库服务器处于运行状态,确保已经为应用程序创建了数据库,并确保拥有一个用户的用户名和密码(这个用户具有对数据库进行操作的权限)。

首先,制作 app/config/database.php.default 文件的一个拷贝并将其保存为 app/config/database.php。这样做是为了保留一个原始模板的拷贝。在您喜欢的文本编辑器中打开该文件并查找以下部分(它应当非常接 近该文件的底部)。


清单 6. app/config/database.php.default 文件

					
var $default = array(
                'driver' => 'mysql',
                'persistent' => false,
                'host' => 'localhost',
                'login' => 'user',
                'password' => 'password',
                'database' => 'database_name',
                'prefix' => ''
        );
                

 

根据自己的情况修改以下信息:

driver
此字段可以是 mysql 、 mysqli 、 postgres 、 sqlite 、 mssql 、 db2 、 oracle 、 adodb 或 pear-drivername 。本教程假定它是 mysql 。
persistent
此字段告诉 CakePHP 是否应当使用持久的数据库连接。有效值是 true 或 false。本教程假定它是 false。
host
这是数据库服务器的主机名,例如 localhost 或 mysql.yourdomain 。
login
这是用于数据库登录的用户名,比如 dbuser 。
password
这是用于数据库登录的密码,比如 secretsecret 。
database
这是希望使用的数据库的名称,比如 cakedev 。
prefix
前缀是一个字符串,比如 cp_ ,它是 CakePHP 执行的任何数据库调用的表名前缀。如果数据库由多个应用程序共享,而又要保证在两个或多个应用程序需要使用具有相同名称的表时(比如 users )表不会相互覆盖,那么就有必要使用前缀。

请不要忘记保存文件。

可以在 database.php 中指定任意数目的数据库配置,只要这些数据库配置具有不同的名称。可以指定应用程序应当在模型中使用哪个数据库配置。

关于数据库和 CakePHP 的一些注意事项:

  • 表必须具有名为 id 的主键。
  • 如果表中包含 created 或 modified 列,CakePHP 就会在适当的时候自动填充字段。
  • 表名应该为复数(users、products、eggs、sodas、winners、losers)。其相应的模型将具有单数的名称(user、product、egg、soda、winner、loser)。
  • 如果要将表关联起来,外键应当采用 table_id 格式,且使用单数的表名。例如,user_id 、product_id 、egg_id 、soda_id 、winner_id 和 loser_id 是表的 user、product、egg、soda、winner 和 loser 的外键。

检验 2

返回到用于检验初始安装的 URL。应当会看到 CakePHP 默认主页已经改为显示数据库配置的状态。


图 3. CakePHP 默认主页改为显示数据库配置的状态
CakePHP 默认主页改为显示数据库配置的状态

如果默认主页指出数据库配置文件不存在,则您可能将其放在了错误的位置或者其名称不正确。确保数据库配置文件为 app/config/database.php。如果默认主页指出 CakePHP 无法连接数据库,那么确认输入的连接信息是否有效,然后重试。


创建应用程序表

现在,CakePHP、Web 服务器和数据库都关联到一起了。开始动手实践吧!Tor 需要一个 users 表。

这个表将包含识别用户和与用户交互所需的基本信息。简单的用户名和密码字段可能就够了,但其他信息也可能有用,例如电子邮件地址(用于发送 密码重置请求)、名字和姓氏(用于个性化服务)以及最后一次登录的日期(用于帮助跟踪不活动的帐户)。您可能希望用户名和电子邮件字段是惟一的。另外,不 要忘记主键 ID 字段。创建表的 SQL 可能类似于清单 7。


清单 7. 创建表的 SQL

					
CREATE TABLE 'users' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'username' VARCHAR( 40 ) NOT NULL ,
'password' VARCHAR( 40 ) NOT NULL ,
'email' VARCHAR( 255 ) NOT NULL ,
'first_name' VARCHAR( 40 ) NOT NULL ,
'last_name' VARCHAR( 40 ) NOT NULL ,
    UNIQUE (
        'username' ,,
             'email'
		)
) TYPE = MYISAM ;
                

 

注意,username 、password 、first_name 和 last_name 字段最多包含 40 个字符。在 user 模型中将强制要求不超过这个字符长度。在本例中,40 个字符的最大长度完全是任意设定的。

【干货】SAP特殊库存:Q库存(项目库存)全解析,搞懂ETO模式的核心! 在 SAP 系统中, 阅读详情

相关推荐

别再用Python卷了!用Matlab的Deep Learning Toolbox快速上手U-Net图像分割(附完整数据集处理代码)

本文介绍了如何使用Matlab的Deep Learning Toolbox快速上手U-Net图像分割,包括数据准备、网络构建、训练监控和模型应用等完整流程。Matlab的高度集成工具链和图形化界面为图像分割任务提供了更快捷、直观的解决方案,特别适合研究人员和工程师快速实现原型验证。

weixin_29927965的博客 381

CakePHP URL重写

URL 重写 Apache 和 mod_rewrite (.htaccess) 当 CakePHP 建立在以 mod_rewrite 为工作环境时(通常都会这么做) ,一些用户会努力去做一切能让系统更好运行的事情。 这里有一些事情你可以尝试让它能够正常运行。先看看你的 httpd.conf。 (请确保您编辑的是系统的 httpd.conf 而不是一个用户或站点特定的 http

Magic 3203

不止于ACC:用CarSim的‘Multiple Objects’和路径跟踪器玩转复杂交通流场景

本文深入探讨了如何利用CarSim的'Multiple Objects'模块和路径跟踪器模拟复杂交通流场景,超越传统ACC测试的局限。通过批量控制、动态交互和参数化设计,实现多车智能响应和复杂轨迹模拟,适用于连续变道、拥堵博弈、匝道汇流等真实交通场景。

weixin_30954265的博客 497

cakephp框架之页面布局篇

一个网站很多地方都是相同的,我们把这些相同的地方抽离出来,做成一个单独的文件,其他地方include。而这单独的文件被我们叫做element(元素)。比较常用的element有head(头部页面),foot(尾部页面),item(菜单栏),ad(广告)为什么要做元素呢?你可以想象一下,那么N个页面都有相同的地方(A区),如果我要改A区的东西,是不是要改很多页呢。如果我们引用元素的方式,只需要更

wangking:开源世界,人人都用上了正版啦。。。 4228

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 489

Android 11系统定制:如何彻底隐藏状态栏电池图标(RK3568实测)

本文详细解析了在Android 11系统上如何通过多维度修改实现状态栏电池图标的彻底隐藏,特别针对RK3568平台提供了实战指南。从系统UI架构解析到核心配置文件修改,再到进阶技巧与疑难排查,帮助开发者深度定制Android系统,满足特定场景需求。

weixin_29250573的博客 376

CakePHP系列(三)----安装

安装 CakePHP简单易于安装。 最低要求是一个Web服务器和一个CakePHP的副本,就是它! 虽然本章主要关注Apache的设置(因为它很容易安装和设置),CakePHP将运行在各种web服务器上,如nginx,LightHTTPD或Microsoft IIS。 要求 HTTP服务器。 比如:Apache。 有mod_rewrite是首选,但不是必需的。PHP

fendo 5047

YOLO11-Seg优化:卷积变体系列篇 | 动态蛇形卷积(Dynamic Snake Convolution) | ICCV2023

动态蛇形卷积(Dynamic Snake Convolution),增强微小特征提取能力,引入到YOLO11-Seg,与C3k2结合实现二次创新

会AI的学姐 371

CAKEPHP 快速入门

快速入门¶ 实战是学习以及体验 CakePHP 的最好途径。 让我们以开发一个内容管理系统(CMS)为例,来学习 CakePHP。 內容管理系統教程 此教程将讲述如何建立一个简单的 CMS。 首先我们需要安装 CakePHP,然后创建数据库,最后编写一个简单的文章管理系统。 基本要求: 一个数据库服务器。此教程采用的是 MySQL 作为数据库。 你需要储备基本的 SQL 知识。懂得如何使...

zeroone的专栏 4341

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

宁波阿成的博客 660

医疗影像配准与融合: 使用MATLAB对医学影像进行配准和融合,实现不同影像模态之间的对准和结构信息融合等

医疗影像配准与融合是医学影像处理的重要技术,它用于将不同来源、不同时间或不同模态的医学影像进行配准和融合,以获得更加完整、准确的患者解剖信息。基于MATLAB的医疗影像配准与融合可以帮助医生更准确地诊断疾病,制定更有效的治疗方案。医疗影像配准与融合是医学影像处理的关键技术,它对于提高医学影像诊断和治疗的准确性至关重要。MATLAB是一种功能强大的数学和科学计算软件,它可以为医疗影像配准与融合提供强大的工具和支持。

走向CTO的路上... 713

使用 CakePHP 快速打造 Web 站点,第 1 部分: 入门

2006 年 11 月 21 日2008 年 2 月 21 日 更新 CakePHP 是一种用 PHP 构建 Web 站点的辅助工具,它稳定、可直接用于生产及快速开发。“使用 CakePHP 快速打造 Web 站点” 系列教程向您展示如何使用 CakePHP 构建在线产品目录。开始之前编辑说明:本系列最初发表于 2006 年和 2007 年。自从本系列发表以来,CakePHP 开发人员

陆志的BLOG 1566

小龙虾们的好伙伴专栏导航

本文系统解析了OpenClaw技术架构,包括Channel层和网关层的设计实现,并与AgentSkills等技术方案进行对比。同时提供了OpenClaw的系列实用指南,涵盖小龙虾培养、客户资源管理、系统自动化巡检以及技术趋势助手构建等应用场景,帮助用户从零成本入门到高效落地应用,实现业务全流程自动化管理。

wend的博客 212

开发 Web 站点

http://www.ibm.com/developerworks/cn/web/wa-website/?S_TACT=105AGX52&S_CMP=tec-csdn  开发 Web 站点使用开源软件设计、开发和部署协作型 Web 站点系列使用 CakePHP 快速打造 Web 站点系列使用 A

Digyso 注芯蛋糕 694

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Web 站点开发实践

在本专题中,我们为读者收集了一组 Web 站点开发实践方面的系列文章。通过这些内容的学习,您能够了解如何使用开放的技术、标准和工具,去开发和构建结构良好的、有条理的、易于维护的 Web 站点。CONTENT GOES HERE-->使用开源软件设计、开发和部署协作型 Web 站点系列使用开源软件设计、开发和部署协作型 Web 站点在这个系列中,Internet

IBM技术期刊 881

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

CakePHP 5.x 完全指南:PHP快速开发框架终极教程

CakePHP是一款专为PHP开发者打造的快速开发框架,它提供了丰富的工具和功能,帮助开发者高效构建Web应用程序。无论是新手还是有经验的开发者,都能通过CakePHP快速上手并开发出高质量的项目。 ## CakePHP框架的核心优势 CakePHP框架具有诸多优势,使其成为PHP开发的热门选择。它采用了MVC(模型-视图-控制器)架构,这种架构能够有效分离业务逻辑、数据和界面展示,使代码结构

gitblog_00016的博客 815

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

cakephp2.X教程第二部分(基于cakephp1.3.4在线教程的改编)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33918114的博客 937

CakePHP CookBook国际化与本地化:构建多语言Web应用的完整指南

在全球化时代,构建支持多语言的Web应用已成为开发者的必备技能。CakePHP CookBook提供了强大的国际化(i18n)与本地化(l10n)功能,帮助开发者轻松创建面向全球用户的应用。本文将详细介绍如何利用CakePHP的国际化特性,从基础设置到高级应用,让你的应用无缝支持多语言环境。 ## 国际化与本地化基础:核心概念解析 国际化(i18n)是指使应用具备支持多种语言的能力,而本地化(

gitblog_00646的博客 241

cakephp2.X教程第三部分(基于cakephp1.3.4在线教程的改编)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34318956的博客 212

CakePHP学习笔记(一)

参照着IBM DevelopWorks的 官方教程《使用 CakePHP 快速打造 Web 站点,第 1 部分: 入门》,我开始学习 CakePHP。 安装CakePHP很简单,只要把解压缩之后的文件,拷贝到 类似 D:\AppServ\www 这样的目录下,就行了。 一开始我访问到的 CakePHP的 首页 极其简陋(白色的背景,没有应用任何CSS)。 原来是要先 设置 Apache的 m...

技术与人际,两手都要硬 153

cakephp2.X教程第一部分(基于cakephp1.3.4在线教程的改编)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34416754的博客 246

探索Imagine插件:CakePHP3的图像处理利器

探索Imagine插件:CakePHP3的图像处理利器 项目介绍 Imagine插件是一款专为CakePHP3框架设计的图像处理工具,它基于强大的Imagine图像处理库,为开发者提供了一套简洁而高效的图像操作接口。无论是简单的图像缩放、裁剪,还是复杂的图像合成,Imagine插件都能轻松应对,极大地简化了图像处理的开发流程。 项目技术分析 Imagine插件的核心在于其对Imagine库的封装,...

gitblog_00037的博客 437

推荐开源项目:CakePHP AdminLTE Theme (2.0.0) —— 优雅的后台管理界面解决方案

推荐开源项目:CakePHP AdminLTE Theme (2.0.0) —— 优雅的后台管理界面解决方案 项目介绍 蛋糕PHP(CakePHP)是一个流行的PHP框架,而AdminLTE是一款基于Bootstrap的优秀后台管理模板。当两者结合,便形成了这款令人赞叹的CakePHP AdminLTE Theme。这个主题将最新的AdminLTE版本2.4.5与兼容CakePHP 4.0.0的特...

gitblog_00085的博客 537

程序员应该知道的几种Web框架

程序员应该知道的几种WEB框架 Rails Rails是Ruby on Rails的简称,是一款开源的Web应用框架,采用Ruby语言,其设计原则是“不做重复的事”和“惯例优于设置”,是一款更符合实际需要而且更加高效的Web开发框架。Rails是一个全栈式的MVC框架,使用它可以实现MVC模式中的各个层次,并使它们无缝地协同运转起来。除此以外,还有编写更少的代码、零周转时间等优...

anik2008的博客 220

一个程序搞定磁盘清理:Krokiet 免费离线扫描重复文件与空文件夹,14 种工具随点随用

磁盘越塞越满,却不知道哪些文件该删。Krokiet 是一款免费的离线磁盘清理程序:重复文件查找、空文件夹清理、相似图片对比,这 14 种扫描任务共用同一个窗口,解压出来就能跑,全程不联网、不采集使用数据。 ## Krokiet 适合谁,为什么是它 主要诉求是腾出磁盘空间、又不想逐个安装查重工具、图片比对工具、垃圾扫描器的人,可以试试它。14 种扫描工具放在同一个程序里,左侧列表点一下就切换,共

gitblog_00069的博客 805
上一篇: CakePHP中启用Admin
下一篇: mysql查询指定日期数据
pythoner
博客等级 码龄18年 15粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值