相当简单的问题:
我知道Codeigniter是一个MVC框架 - 然而Codeigniter使用的设计模式是什么?
从第一眼看它似乎是Facade,但我可能是错的.
编辑:
也许我应该为那些不使用它的人描述Codeigniter.
在Codeigniter中,您有一个Controller和Model的概念,每个都有自己独立的文件夹.在每个文件夹中创建一个文件:cart.php:
<?php
class Cart {
//...
}
?>
Run Code Online (Sandbox Code Playgroud)
然后你也可以有一个模型:
<?php
class User {
function login(){...}
}
?>
Run Code Online (Sandbox Code Playgroud)
在Cart类中,只需使用$ this-> user-> login()即可在User中使用登录功能
我发现这很有趣,因为框架使用User对象的对象而程序员没有.
我正在尝试创建一个应用程序来从Windows框中分离辅助监视器(长篇故事).
以下是我用作基础的Microsoft示例代码:http: //support.microsoft.com/kb/308216/en-us
这是我的代码:
#include <iostream>
#include <windows.h>
void DetachDisplay()
{
BOOL FoundSecondaryDisp = FALSE;
DWORD DispNum = 0;
DISPLAY_DEVICE DisplayDevice;
LONG Result;
TCHAR szTemp[200];
int i = 0;
DEVMODE defaultMode;
// initialize DisplayDevice
ZeroMemory(&DisplayDevice, sizeof(DisplayDevice));
DisplayDevice.cb = sizeof(DisplayDevice);
// get all display devices
while (EnumDisplayDevices(NULL, DispNum, &DisplayDevice, 0))
{
ZeroMemory(&defaultMode, sizeof(DEVMODE));
defaultMode.dmSize = sizeof(DEVMODE);
if ( !EnumDisplaySettings((LPSTR)DisplayDevice.DeviceName, ENUM_REGISTRY_SETTINGS, &defaultMode) )
OutputDebugString("Store default failed\n");
if ((DisplayDevice.StateFlags & DISPLAY_DEVICE_ATTACHED_TO_DESKTOP) &&
!(DisplayDevice.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE))
{
DEVMODE DevMode;
ZeroMemory(&DevMode, sizeof(DevMode));
DevMode.dmSize …Run Code Online (Sandbox Code Playgroud) 我将尝试包括尽可能多的细节,但请考虑以下情况:
对于隐私问题,可以说我有一个Active Directory基础结构,如下所示:
microsoft.com
和一些子域:
csharp.microsoft.com
vb.microsoft.com
所有用户帐户都存储在microsoft.com。
我从以下代码开始:
import ldap
ldap.set_option(ldap.OPT_REFERRALS,0)
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,ldap.OPT_X_TLS_NEVER)
Run Code Online (Sandbox Code Playgroud)
(我知道我可能应该拥有该域的证书,但是您可以怎么做)
然后,我进行如下连接:
conn = ldap.initialize("ldaps://microsoft.com:636")
conn.simple_bind_s("user","pass")
Run Code Online (Sandbox Code Playgroud)
在我的脚本中,我正在搜索用户帐户,并且使用以下搜索:
result_id = conn.search("DC=microsoft,DC=com",
ldap.SCOPE_SUBTREE,
"(&(CN=gates)(!(objectClass=contact)))",
None)
result_type,result_data = conn.result(result_id,0)
Run Code Online (Sandbox Code Playgroud)
好的,这很有效。...大部分时间。
当它起作用时,我会得到以下效果:
[("CN=gates,OU=Users,DC=microsoft,DC=com", {'sAMAccountName':['gates']}])
Run Code Online (Sandbox Code Playgroud)
但是,似乎随机得到的结果如下:
[(None, ['ldaps://csharp.microsoft.com/DC=csharp,DC=microsoft,DC=com'])]
Run Code Online (Sandbox Code Playgroud)
虽然结果很合理-csharp.microsoft.com上不存在门,而microsoft.com DC上存在门-这仍然令人非常困惑,因为我印象是使用OPT_REFERRALS设置为0会告诉Python LDAP模块不要使用推荐。为了使事情变得更有趣,有时我还会得到如下结果:
[(None, ['ldaps://ForestDnsZones.microsoft.com/DC=ForestDnsZones,DC=microsoft,DC=com'])]
Run Code Online (Sandbox Code Playgroud)
所以我的问题-我做错了什么吗?
另外,还建议如果我使用“ OU = Users,DC = microsoft,DC = com”之类的搜索路径,而不是仅从根目录(“ DC = microsoft,DC = com”)中搜索LDAP客户端模块不会尝试使用引荐-这是准确的吗?
编辑
事实证明,该问题与LDAP不相关,而与WSGI配置错误有关。使用WSGIDaemonProcess解决了我们遇到的交叉污染问题。
我承认我没有跟上最新的 C/C++ 版本,但我想知道为什么在函数中包含函数原型是有效代码?它与 lambda 的使用有关吗?
这是示例代码 - 这将在 Visual Studio 2019 和 g++ 5.4.0 上编译/运行
int main()
{
int func(bool test);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我将重新创建一个我创建的游戏引擎.这次我想做得对,所以我对设计模式进行了一些研究,并尝试将各个部分组合在一起以实现我的目标.游戏引擎的想法很简单,但与此同时我不想牺牲可用性.
这是我正在思考的蓝图,让我知道你是否能看到任何垮台,尤其是可扩展性:
class Object
{
public:
string name;
}
class Object3D : public Object
{
public:
int x;
int y;
int z;
}
class Object2D : public Object
{
public:
int x;
int y;
}
class cube : public Object3D
{
cube() : x(0), y(0), z(0), name("cube") {}
}
class square
{
...
}
int main()
{
SGL Engine(paramters);
c = cube();
s = square();
Engine->Lib3D->AddCube(&c, "cube");
Engine->Lib2D->AddSquare(&s, "square");
Engine->Input->keyboard(&kbevent);
while(Engine->running())
{
if (x)
Engine->Draw("cube");
else
Engine->Draw("square");
}
}
void …Run Code Online (Sandbox Code Playgroud)