因此,我的客户iphone应用程序已在过去几周内从5个左右的班级推迟到25个以上.有了这么大(对于iphone无论如何)的类结构,我一直在使用Singleton类来访问全局变量.问题是,每当我需要访问我正在处理的类之外的变量时,我可以选择修改代码以传递对变量的引用,或者只是将其抛入单例中.当然,将它放入单例中的代码和工作量要少得多,但是,现在单身人士开始看起来像是一个无关的全局变形.
我的问题是,维护一个具有不相关的全局变量的大型单例对象是多么合适,以及在"非平凡"的iphone应用程序中跨类共享数据的"最佳实践"方式通常是什么?
非常感谢您的建议!
在我看来,带有ruby 1.9的YAML库是编码聋的.
这意味着当生成YAML时,它将获取任何字节串,并转义任何不输出干净ASCII的字节序列.那是蹩脚的,但可以接受.
我的问题是另一种方式.从所述YAML转储加载内容时.
在下面的示例中,我创建了一个UTF-8字符串,转储它,它与类型一起转储!binary.当我加载它时,它具有编码ASCII-8BIT.在示例的最后,我尝试使用另一个UTF-8字符串连接原始字符串和重新加载的字符串.后者将以失败告终Encoding::CompatibilityError.
require 'yaml'
s0 = "Iñtërnâtiônàlizætiøn"
y = s0.to_yaml
s1 = YAML::load y
puts s0 # => Iñtërnâtiônàlizætiøn
puts s0.encoding # => UTF-8
puts s1 # => Iñtërnâtiônàlizætiøn
puts s1.encoding # => ASCII-8BIT
puts y # => --- !binary |
# ScOxdMOrcm7DonRpw7Ruw6BsaXrDpnRpw7hu
puts "ñårƒ" + s0 # => ñårƒIñtërnâtiônàlizætiøn
puts "ñårƒ" + s1 # => Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT
Run Code Online (Sandbox Code Playgroud)
我想很清楚当你处理一些包含嵌套哈希和带叶子串的数组的YAML源时,这会很快导致麻烦.
目前我有一些代码遍历所有哈希和数组并调用force_encoding每个字符串.至少可以说,这是不雅观的.
我现在正在寻找的是一种方法来告诉YAML::load任何进来的字符串应该被视为,因此其编码设置为UTF-8.
理想情况下,ruby的YAML应该使用正确的编码来注释它转储的字符串.有一个Ya2YAML项目试图转储UTF-8安全YAML.我不确定它有多远.如果有人玩过它,我欢迎任何想法.
无论如何,我仍然有这些转储没有任何编码信息来处理.虽然我知道它们都是UTF-8.
我一直在阅读PHP 5.3的新功能,其中一个主要功能是闭包.
除非我非常错误,否则PHP开发人员要么:
a)使用匿名函数来混淆闭包
b)在我测试的PHP 5.3.1中,闭包被破坏了
从维基百科所说的闭包是匿名函数的机制加上函数的父范围变量与函数范围的绑定.最后一部分似乎在PHP中被打破了.
我已经检查了PHP错误,并没有发现任何关于这个,奇怪的是.
这是我正在测试的方式:
<?php
function getFun() {
$x = 2;
return function() {
return $x;
};
}
$f = getFun(); // getFun()(); doesn't work -.-
var_dump($f()); // $f() == null
Run Code Online (Sandbox Code Playgroud)
在实际实现闭包的语言中,它返回2:
def f():
x = 2
return lambda: x
print(f()()) # prints 2
Run Code Online (Sandbox Code Playgroud)
和
alert((function() {
var x = 2;
return function() {
return x;
};
})()()); // alerts 2
Run Code Online (Sandbox Code Playgroud)
那么,我错了还是?
我正在建立一个类似于StackOverflow的网站,主要是作为一个学习练习,我很难理解如何决定MVC模式中的不同控制器.
什么是控制器?您将使用哪些控制器来建立类似于SO的问答网站?我正在使用ASP.Net MVC,我注意到URL模式总是"/ Controller/Action" - 但这绝对不是我想要的最终URL看起来像("/ Question/123"不适合进入那种模式).这是一个考虑因素吗?
我知道这实际上是几个问题的混合...也许我真正需要的是一个很好的教程来理解基础知识.
我尝试在我的WPF应用程序中使用LINQ to SQL向SQLServer db表添加记录,但总是会收到有关缺少指令的错误.通常intellisense会对这个问题给出一个暗示,但这次不是.这里我的代码包含所有指令:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
...
...
DateTime newdate = new DateTime(2010, 2, 1);
TimeSpan newtime = new TimeSpan(12, 00, 00);
MyfirstdbDataContext context = new MyfirstdbDataContext();
Meeting meeting = new Meeting();
meeting.MeetID = "01.02.10_12:00";
meeting.Date = newdate;
meeting.Time = newtime;
context.Meetings.Add(meeting); // Here I get the debugger error
context.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
System.Data.Linq.Table'不包含'Add'的定义,也没有扩展方法'Add'接受类型为'System.Data.Linq.Table'的第一个参数'(你是否缺少using指令或装配参考?)
请问,我的代码有什么问题?
我在使用Eclipse时遇到了一些构建问题,因为它在eclipse中运行我的应用程序很好但是在尝试运行时出于某种原因
#>java MyClass
Run Code Online (Sandbox Code Playgroud)
由于无法找到课程,它最终没有运行.这没有任何意义所以我想知道是否有办法让eclipse输出它正在输入jvm以使其构建/运行.
这可能吗?
谢谢
I程序上(Ubuntu的)Linux的C++应用程序并将其编译成2个操作系统:本地到Linux的通过使用"G ++"(GNU C++编译器)和它们交叉编译到视窗通过使用"I386-的mingw32-G ++"(MinGW的C++横-compiler).
现在,我正在尝试交叉编译"OpenGL"应用程序(从Linux到Windows) - 因为我需要一些OpenGL库文件.
作为OpenGL的一个实现,我使用"Mesa 3D"开源库.幸运的是,Ubuntu为Linux提供了"预编译"的mesa3d库(libgl1-mesa-dev和libglu1-mesa-dev),但不幸的是,没有任何预编译库可用于MinGW交叉编译器(因此它们的Windows版本) - 所以我"必须"从源头手动编译它们(可以从http://www.mesa3d.org主页下载).
但我不知道这样做.内mesa3d源代码,还有一些文件如何构建库对于某些特定的平台-特别是有"README.MINGW32"自述文件.
但只是在第一行有一些命令
mingw32-make -f Makefile.mgw [OPTIONS...]
Run Code Online (Sandbox Code Playgroud)
我无法运行,因为我没有安装任何"mingw32-make"程序.通过其他软件,我曾经用"经典"来构建它们
./configure -> make -> make install
Run Code Online (Sandbox Code Playgroud)
过程,但这不适用于mesa3d库.
例如,我也尝试过
./configure --host=i386-mingw32
Run Code Online (Sandbox Code Playgroud)
它已配置好,但在打字后
make
Run Code Online (Sandbox Code Playgroud)
它引发了一些错误
error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.
Run Code Online (Sandbox Code Playgroud)
现在我很失落:-(.
那么有谁知道如何构建mesa3d库以便与mingw32一起使用它们?
PS:当然,我不想使用Microsoft Visual Studio ,而不是更多:-).而且我还想做所有必要的事情来从Linux构建OpenGL环境并使用mingw32进行交叉编译.我希望有可能.
PS2:在http://www.mesa3d.org/systems.html页面上写道,使用MinGW和Mesa 3D是"弃用".我正是以正确的方式使用它吗?
我正在尝试编写一个辅助函数以在bash脚本中使用,以获取变量提示字符串并返回用户输入的值。我所坐的东西等待用户输入值而没有首先显示提示,这令人困惑。它还将回声存储在返回值($ foo)中,并且不保持使用pid变量读取该值。
!#/bin/bash
pid=0
promptValue() {
msg="$1"
echo -e "$msg"
read val
pid=$val
}
foo=$(promptValue "type something")
Run Code Online (Sandbox Code Playgroud)
编辑: 对于将来可能要自己使用的任何人,这是完整的(功能性)脚本,该脚本旨在发送电子邮件(在这种情况下,将其发送到我的手机),以便长时间运行时通知我过程完成。我敢肯定必须有更好的方法来做到这一点,但是。:-)(我这样写它们,以便在其他地方的bash函数库中使用。)
#!/bin/bash
promptValue() {
read -p "$1"": " val
echo $val
}
alertme() {
if [ -z "$email" ]; then
email=$(promptValue "Enter email")
fi
if [ -z "$email" ]; then
echo "ERROR: No email set!"
exit 1
fi
if [ -z "$pid" ]; then
pid=$(promptValue "Enter pid")
fi
if [ -z "$pid" ]; then
echo "ERROR: No pid set!"
exit 1
fi …Run Code Online (Sandbox Code Playgroud) 我有一个必须转换为gif文件的png文件.其中有一个透明的部分,当我保存它时,透明部分是黑色而不是透明的.这是我的代码:
FileStream imgStream = new FileStream(outputFile, FileMode.Create, FileAccess.Write);
Image.FromFile(imageInput).Save(imgStream, ImageFormat.Gif);
Run Code Online (Sandbox Code Playgroud)
这里,imageinput是我的png的完整路径,输出文件是扩展名为.gif的filefullpath.
你能看到这里有什么问题吗?
米歇尔