我(到目前为止)已经使用客户端cookie和数据库条目处理用户会话.
当用户登录时,我生成一个guid并将其放在客户端计算机上的cookie中.然后我在'sessions'表中创建一个条目,并在那里添加guid,ip地址,用户名,权限等.然后当用户访问页面时,我检查是否有会话cookie.如果是这样,我检查数据库中的guid在cookie中,并确保IP地址匹配.如果是,则用户使用db表中的其余信息登录.如果出现问题(错误的IP地址,过期的会话等),我删除数据库条目并删除guid cookie.
我之前从未使用过$ _SESSION全局.
我的方式是好的做法还是我需要重新思考我是如何处理这个?
我正在尝试创建一个带有常规3D边框的编辑控件(无论如何都采用经典的Windows风格),但它周围只有1px的黑色边框.这是我的CreateWindowEx电话:
return CreateWindowEx(0, "EDIT", "E:\\bk",
WS_VISIBLE | WS_CHILD | WS_BORDER | ES_LEFT,
87, 81, 150, 17,
main_window.hwnd,
(HMENU)5, hInstance, NULL);
Run Code Online (Sandbox Code Playgroud)
如果我排除WS_BORDER那么它只是一个白色的盒子.关于这里有什么问题的任何想法?
WS_EX_CLIENTEDGE做了伎俩.我对清单文件一无所知,或者如何使窗口使用更现代的Windows主题(例如XP),而不是粗糙的3D边框.但是,当我确实学到这一切时,WS_EX_CLIENTEDGE会让他们使用这些主题,还是会强制执行3D外观?
http://dspace.dial.pipex.com/town/green/gfd34/art/bloopers.html
第一个似乎很简单;
return strcpy(malloc(strlen(s)), s);
Run Code Online (Sandbox Code Playgroud)
malloc可能会返回null,并strcpy可能尝试将数据复制到内存地址0.或者s可能是指向字符串(而不是数组)malloc的指针,并且只会为指针分配足够的空间,并尝试将字符串复制到其中.(我认为).
那第二个怎么样?
当他写下ch = toupper(ch)时,他没有给无符号字符添加ch,真是太遗憾了;
你为什么要投ch给unsigned char你写的ch = toUpper(ch);?
jQuery中class和id有什么区别?例如:
<span class="lalal"></span>
Run Code Online (Sandbox Code Playgroud)
和
<span id="lalal"></span>
Run Code Online (Sandbox Code Playgroud)
因为一个适用于jQuery而另一个不适用.谢谢.
我知道我应该使用mod_wsgi来运行Python,并且我一直试图设置它,但我对此感到困惑:
这是我为web.py找到的示例配置:
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /appname /var/www/webpy-app/code.py/
Alias /appname/static /var/www/webpy-app/static/
AddType text/html .py
<Directory /var/www/webpy-app/>
Order deny,allow
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
所以...我明白我必须配置我的Web服务器指向python应用程序?有没有办法像PHP一样使用它,当你请求.py文件时,Python会解释它?如何让我的Web服务器进入非常基本的状态,我可以上传包含的文件print "Hello World",请求它,并让它说"Hello World"?
我是python的新手,我正在努力更好地了解列表推导.
我甚至不确定列表理解是否是我正在寻找的词,因为我没有生成列表.但我正在做类似的事情.
这就是我想要做的:
我有一个数字列表,其长度可以被三整除.
所以说我nums = [1, 2, 3, 4, 5, 6]
想要迭代列表并获得每组三位数的总和.目前我这样做:
for i in range(0, len(nums), 3):
nsum = a + b + c for a, b, c in nums[i:i+3]
print(nsum)
Run Code Online (Sandbox Code Playgroud)
我知道这是错的,但是有办法做到这一点吗?我确信我忽略了一些非常简单的事情......但我想不出另一种方法可以做到这一点.
如果我有两个表:files(id, owner)并且share(file_id, user),所有者和用户将是理论用户表的主要ID,那么share只有在进行共享的用户拥有该文件时,如何插入条目?
这是一个简化的示例,因此我只使用文字作为执行共享操作的文本 - 通常此值将来自会话.所以,如果我有:
files: id: 1, owner: 1
并且用户2想要查看文件1,我会使用此查询:
insert into share values (1, 2)
Run Code Online (Sandbox Code Playgroud)
但这是不允许的 - 用户2不拥有文件1,用户1没有.我试图在一个查询中执行此操作,但我无法弄明白.我试过了:
case when (select owner from files where id=1) is 2
then (insert into share values (1, 2));
case (select owner from files where id=1) is 2
then (insert into share values (1, 2));
insert into share values (1, 2)
where 2 not in (select owner from files where id=1)
Run Code Online (Sandbox Code Playgroud)
它们都是语法错误.我是从Python做的,所以在这个查询之后,我只是检查Cursor.rowcount它是否为1或0,如果它是0,那么用户没有权限来完成操作.
如何正确编写此查询?
我正在尝试开始使用git,但我马上遇到了一些麻烦.我正在使用Git GUI for Windows.请记住,我之前从未使用过版本控制,也不知道它是如何工作的.
我所拥有的是我的笔记本电脑硬盘上的文件夹中的Code :: Blocks C项目.我打开Git并在USB硬盘上创建了一个新的存储库.我想,我可以创建一个分支,它导致我的项目已经存在的目录,然后将其中的所有代码提交到存储库.然后,每次我想要处理这个项目时,我都可以查看我的代码,打开Code :: Blocks项目并进行编辑.然后进入不同的分支和东西,你知道,所有的爵士乐.
所以我创建了这个存储库,然后从菜单中创建了一个分支.我收到了这个对话框,要求我提供分支名称,或者"匹配跟踪分支名称(无论这意味着什么)".然后,在"正在开始修订"下,它有几个选项.一个是文本框旁边的"修订表达式",无论我输入什么,它都是无效的修订表达式.所以我尝试了其他选项,"Local Branch","Tracking Branch"和"Tag".这些启用了另一个文本框,但即使未选择"修订表达式",它仍然表示我输入了一个无效的文本框.什么是修订表达式?我如何只是检查代码到我硬盘上的目录?
哦,然后,有一个"选项"部分,其中包含"更新现有分支:[]否[x]仅限快进[]重置",
以及两个复选框,"获取跟踪分支"和"创建后检出"(此一个是显而易见的." 所有这些意味着什么?什么是跟踪分支?"仅限快进"和"重置"是指什么?我不知道我在做什么,或者我已经把自己弄到了什么地方.
我真的不知道为什么会发生这种情况......我在emacs中创建了一个win32应用程序,每当我创建并运行它(而不是通过命令提示符)时,窗口下会弹出一个命令提示符窗口.如果我在Code :: Blocks中构建一个win32应用程序,并只运行其默认模板,那么它将在没有命令提示符窗口的情况下运行.我查看了两者的代码,无法弄清楚可能导致这种情况的原因......
我以为是因为我在那里包含了一些printf()语句,但我不希望它们留在那里(它们用于调试),所以我写了一个宏:
#define DEBUG
Run Code Online (Sandbox Code Playgroud)
在main.c中,和
#ifdef DEBUG
#include<stdio.h>
#define DBG printf
#else
#define DBG
#endif
Run Code Online (Sandbox Code Playgroud)
在标题中(#define DEBUG当然包括在内).
当我unf'd DEBUG时,窗口仍然出现......我不知道我在做什么来实现它,有什么样的东西导致命令提示窗口显示在win32应用程序中?我尝试使用所有的****Ex()Windows功能而不仅仅是CreateWindow()等等,但这并没有改变任何东西.我检查并重新检查了类的定义和注册,但无济于事,并确保我没有忘记printf()语句(即使我这样做也会导致错误,因为stdio.h除非定义了DEBUG ,否则不会包括).
这是我包括的内容:
#include<windows.h>
#include<windowsx.h>
#include"main.h"
#include"windowproc.h"
Run Code Online (Sandbox Code Playgroud)
有谁知道这会导致什么?我甚至评论了我所有的stdio,DBG,printf垃圾,它仍然出现了,我发誓我的代码和Code :: Blocks生成的代码之间没有区别,除了我使用HANDLE_MSG和一些额外的功能拆分代码.
我正在使用MinGW 3.4.5.使用-mwindows开关工作,谢谢
我将在今年夏天开始一个相当大的PHP应用程序,我将成为唯一的开发人员(所以我没有任何编码约定,以符合我自己的).
尽管有愚蠢的命名空间令牌,PHP 5.3仍然是一种不错的语言IMO.但有一件事总是让我困扰的是标准库和缺乏命名约定.
所以我很好奇,在我自己的函数/类中包含一些最常见的标准库函数以使名称更好一点,这是非常糟糕的做法吗?我想在某些情况下它也可以添加或修改某些功能,虽然目前我没有任何示例(我想我会找到方法让它们成为OO或让它们在我工作时有点不同).
如果你看到一个PHP开发人员这样做,你会想到"伙计,这是一个劣质的开发人员吗?"
另外,我对PHP是否/如何优化知之甚少(或任何事情),我知道通常PHP性能无关紧要.但是这样做会对我的应用程序的性能产生显着影响吗?