我是一名有2年经验的程序员,我在4个地方工作,我真的认为自己是一个自信,流利的开发人员.
我的大多数同事都有CS学位,我觉得没有任何区别!然而,为了跟上这些人的同一个流程,我研究了C(从初学者到专业人员读取C语言),使用C语言的DataStructures,以及使用C++的OOP.
我对指针,内存管理有一个合理的理解,我也参加了一个奖学金,其中C,DataStructures和C++是其中的一部分.
我想要指出,我对C和C++的熟悉程度并不超过阅读某些页面,并执行一些演示; 我没有使用过C或C++的任何项目.
最近我的一个朋友建议我广泛学习C和C++,然后转到OpenGL并学习图形编程.他说,通过学习这些主题我可能获得的见解将在我作为程序员的整个生命中真正帮助我.
PS:我是一名全职开发人员,主要从事使用C#的ASP.NET应用程序.
建议?
我有一个XAML文件,引用定义到另一个程序集的自定义控件.它在运行时编译并完美运行,但XAML设计器窒息并且不显示设计内容.
<Window x:Class="MyProgram.AboutWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:copy="clr-namespace:MyCompany.Common.CopyProtection;assembly=Common"
Title="About Box" Height="400" Width="400" SizeToContent="Height">
<copy:RegistrationPanel />
</Window>
Run Code Online (Sandbox Code Playgroud)
MyCompany.Common.CopyProtection类在Common程序集内部运行,该程序集位于此项目的引用中.该课程是公开的,并且是新建的.
我使用Visual Studio Express 2008与.NET 3.5 SP1.以下是错误:
问题加载
该文档包含必须在加载设计器之前修复的错误.修复错误后重新加载设计器.
错误1找不到类型'copy:RegistrationPanel'.验证您是否缺少程序集引用,并且已构建所有引用的程序集.
错误2未找到程序集"Common".验证您没有错过程序集引用.此外,验证是否已构建项目和所有引用的程序集.
任何人都知道如何解决这些错误,所以我可以再次开始使用设计器.设计人员非常实用,可以选择XAML元素并快速跳转到XAML代码中.
我的团队正在与VSS合作,我们在管理版本方面遇到了困难:
我们想要对我们正在开发的项目进行"快照",因此我们可以继续努力,但是当我们需要时 - 我们可以获取快照的文件并为发布版本构建它们.(这叫做分支吗?)
或者,按日期获取所有项目文件也很棒.(这意味着我会在指定日期之前获得项目中每个文件的最后一个签到版本.)
有关于此的任何教程吗?我搜索了一下网,发现非常简单的howto's.
谢谢.
我们花了300个工时来修复现场的错误应用程序.这一切都归结为调用Application.DoEvents(re-entrancy problem).
这没有在设计评论,代码评论中发现.两年前插入的代码是第一个版本; 应用程序总是"不稳定",但最近的变化在很大程度上暴露了重新入侵问题.
此事件是我们组织中第二次发生Application.DoEvents导致失败和多人工作时间的调试.在这种情况下,通过简单地注意到调用,在一个异步任务的复杂事件处理程序中埋下来,就发现了它.
你有什么建议可以防止这个问题再次发生:
如何执行编码练习?
当我们在Visual Basic 6.0中将float转换为整数时,它如何使小数部分变圆?我正在谈论自动类型转换.
如果我们分配喜欢
Dim i as Integer
i=5.5
msgbox i
Run Code Online (Sandbox Code Playgroud)
它会打印什么?5或6 ??
几个月前我得到了"5".有一天它开始给我6个!任何想法都错了吗?微软是否发布了一些补丁来解决问题?
更新:5.5转换为6但8.5到8!
更新2:添加CInt没有任何区别.CInt(5.5)给出6,而Cint(8.5)得到8!有点喜欢的行为.我应该尝试像地板(x + 0.49);
>>> r'\'
File "<stdin>", line 1
r'\'
^
SyntaxError: EOL while scanning string literal
>>> r'\\'
'\\\\'
>>> r'\\\'
File "<stdin>", line 1
r'\\\'
^
SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)
似乎解析器可以将原始字符串中的反斜杠视为常规字符(不是原始字符串的全部内容吗?),但我可能遗漏了一些明显的东西.TIA!
对于一些缓存,我正在考虑为即将到来的项目做的事情,我一直在考虑Java序列化.即,是否应该使用?
现在我已经在过去几年中出于各种原因编写了自定义序列化和反序列化(Externalizable).目前互操作性已成为一个问题,我可以预见需要与.Net应用程序进行交互,因此我想到了使用独立于平台的解决方案.
有没有人有过使用GPB的高性能经验?它在速度和效率方面与Java的本机序列化相比如何?或者,还有其他值得考虑的方案吗?
如果我有一个绿地项目,使用基于Perl的配置模块的最佳实践是什么?
将有一个Catalyst应用程序和一些命令行脚本.他们应该共享相同的配置.
我认为我想要的一些功能......
分层配置,以干净地维护不同的开发和实时设置.
我想定义一次"全局"配置(例如,results_per_page => 20),那些继承但是我的dev/live配置可以覆盖.
Global:
results_per_page: 20
db_dsn: DBI:mysql;
db_name: my_app
Dev:
inherit_from: Global
db_user: dev
db_pass: dev
Dev_New_Feature_Branch:
inherit_from: Dev
db_name: my_app_new_feature
Live:
inherit_from: Global
db_user: live
db_pass: secure
Run Code Online (Sandbox Code Playgroud)
当我将项目部署到新服务器,或分支/分叉/复制到新的某个地方(例如,新的开发实例)时,我想(仅一次)设置要使用的配置集/文件,然后是所有未来的更新是自动的.
我想到这可以通过符号链接来实现:
git clone example.com:/var/git/my_project . # or any equiv vcs
cd my_project/etc
ln -s live.config to_use.config
Run Code Online (Sandbox Code Playgroud)
然后在将来
git pull # or any equiv vcs
Run Code Online (Sandbox Code Playgroud)
我也喜欢类似于FindBin的东西,所以我的配置可以使用绝对路径,也可以使用相对于当前部署.特定
/home/me/development/project/
bin
lib
etc/config
Run Code Online (Sandbox Code Playgroud)
where/home/me/development/project/etc/config包含:
tmpl_dir: templates/
Run Code Online (Sandbox Code Playgroud)
当我的perl代码查找tmpl_dir配置时,它将得到:
/home/me/development/project/templates/
Run Code Online (Sandbox Code Playgroud)
但在实时部署方面:
/var/www/project/
bin
lib
etc/config
Run Code Online (Sandbox Code Playgroud)
相同的代码将神奇地返回
/var/www/project/templates/
Run Code Online (Sandbox Code Playgroud)
应该遵守配置中的绝对值,以便:
apache_config: /etc/apache2/httpd.conf
Run Code Online (Sandbox Code Playgroud)
在所有情况下都会返回"/etc/apache2/httpd.conf".
而不是FindBin样式方法,替代方案可能是允许根据其他配置值定义配置值? …
我正在尝试直接访问嵌入式Linux项目的物理内存,但我不确定如何最好地为我的内容指定内存.
如果我定期启动我的设备,并访问/ dev/mem,我可以轻松地读取和写入我想要的任何地方.但是,在这里,我正在访问可以轻松分配给任何进程的内存; 这是我不想做的
我的/ dev/mem代码是(所有错误检查等删除):
mem_fd = open("/dev/mem", O_RDWR));
mem_p = malloc(SIZE + (PAGE_SIZE - 1));
if ((unsigned long) mem_p % PAGE_SIZE) {
mem_p += PAGE_SIZE - ((unsigned long) mem_p % PAGE_SIZE);
}
mem_p = (unsigned char *) mmap(mem_p, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, mem_fd, BASE_ADDRESS);
Run Code Online (Sandbox Code Playgroud)
这很有效.但是,我想使用其他人无法触及的记忆.我已经尝试通过使用mem = XXXm启动来限制内核看到的内存量,然后将BASE_ADDRESS设置为高于该值(但低于物理内存),但它似乎并不是一致地访问相同的内存.
根据我在网上看到的内容,我怀疑我可能需要一个使用ioremap()或remap_pfn_range()(或两者兼而有之)的内核模块(可以),但我完全不知道如何; 有人可以帮忙吗?
编辑:我想要的是一种总是访问相同物理内存(比如,1.5MB)的方法,并将该内存放在一边,以便内核不会将其分配给任何其他进程.
我正在尝试重现我们在其他操作系统中的系统(没有内存管理),我可以通过链接器在内存中分配一个空间,并使用类似的方式访问它
*(unsigned char *)0x12345678
Run Code Online (Sandbox Code Playgroud)
EDIT2:我想我应该提供更多细节.此内存空间将用于RAM缓冲区,以用于嵌入式应用程序的高性能日志记录解决方案.在我们拥有的系统中,在软重启期间没有什么可以清除或扰乱物理内存.因此,如果我向物理地址X写入一个位并重新启动系统,则重新启动后仍将设置相同的位.这已经在运行VxWorks的完全相同的硬件上进行了测试(这种逻辑在不同平台上的Nucleus RTOS和OS20上也很好用,FWIW).我的想法是通过直接解决物理内存在Linux中尝试相同的事情; 因此,每次启动时都必须获得相同的地址.
我应该澄清这是针对内核2.6.12和更新的.
EDIT3:这是我的代码,首先是内核模块,然后是用户空间应用程序.
要使用它,我用mem = 95m启动,然后insmod foo-module.ko,然后mknod mknod/dev/foo c 32 0,然后运行foo-user,它会死掉.在gdb下运行表明它在赋值时死了,虽然在gdb中,我无法取消引用从mmap获得的地址(虽然printf可以)
FOO-的module.c
#include <linux/module.h>
#include <linux/config.h>
#include <linux/init.h>
#include …Run Code Online (Sandbox Code Playgroud)