• 2016-05-03

    Mac远程ssh出现LC_CTYPE错误的解决

    Views: 5985 | 1 Comment

    使用 Mac 系统的终端 ssh Linux 时, 总是提示

    -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
    

    即使在 Linux 上面修改了 locale 也没用. 原来, 这是 Mac 自己搞的鬼, 它会擅作主张地在你登录远程终端时设置 locale 为 UTF-8, 和服务器设置无关. 所以, 要解决只能修改 Mac 自己的配置文件.

    修改/etc/ssh_config, 注释掉下面的行即可:

    SendEnv LANG LC_*
    
    Posted by ideawu at 2016-05-03 10:03:50
  • 2016-04-04

    Nginx配置$request_uri与$uri变量的区别

    Views: 6788 | No Comments

    $request_uri

    这个变量就是HTTP头部的 path + query_string, 例如 /my/act?a=1.

    $uri

    这个变量对应到服务器上的一个文件(资源), 所以, 可能不等于 $uri, 因为可能被 rewrite 过. 例如浏览器请求 /my/act?a=1, 对应的资源(URI, $uri) 是 /dir/file.php, 当然, query_string 不属于 uri 的一部分.

    由此可见, $request_uri 这个变量的名字是有歧义的, URI 并不包含 query_string, 但这个变量却包含.

    Posted by ideawu at 2016-04-04 15:07:39 Tags:
  • 2016-03-22

    在Mac上删除Google的流氓软件

    Views: 6008 | 1 Comment

    什么? Google, 流氓软件? Google 不是 Don't Be Evil 吗? 它怎么会和流氓联系在一起? 没错, 说一套做一套.

    在 Mac 上运行一个名为 Console 的程序, 在里面搜索 "GoogleSoftwareUpdateAgent", 看看有没有下面这些日志? -

    3/22/16 10:04:41.070 AM GoogleSoftwareUpdateAgent[33639]: 2016-03-22 10:04:41.070 GoogleSoftwareUpdateAgent[33639/0xb029b000] [lvl=2] -[KSMultiUpdateAction performAction] KSPromptAction had no updates to apply.
    

    这说明, Google 的流氓软件在你的 Mac 系统里定期执行更新, 即使你不使用 Google 的软件! 你还可以在 Terminal 里运行下面的命令:

    defaults read com.google.Keystone.Agent
    

    如果你看到的是

    Domain com.google.Keystone.Agent does not exist
    

    那么恭喜你, 你没有被 Google 流氓沾上. 如果不幸被沾上了, 你可以强制删除 Google 的流氓软件:

    sudo ~/Library/Google/GoogleSoftwareUpdate/GoogleSoftwareUpdate.bundle/Contents/Resour‌​ces/GoogleSoftwareUpdateAgent.app/Contents/Resources/ksinstall --uninstall
    

    参见: http://superuser.com/questions/730736/how-to-remove-google-software-update-from-mac-osx

    Posted by ideawu at 2016-03-22 12:32:38
  • 2016-03-10

    AVFoundation音频格式在录音过程中变动

    Views: 3136 | No Comments

    Mac 在录音过程中, 在下面的方法中处理音频数据:

    - (void)captureOutput:(AVCaptureOutput *)captureOutput
            didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
            fromConnection:(AVCaptureConnection *)connection
    

    不过, 音频的采样率, 位深, 声道数有可能经常变动. 要注意!

    可以这样设置:

    NSDictionary *settings = @{
                               AVFormatIDKey: @(kAudioFormatLinearPCM),
                               AVLinearPCMBitDepthKey: @(16),
                               AVLinearPCMIsFloatKey : @(NO),
                               // AVSampleRateKey: @(44100), // not for MAC
                               };
    _audioDataOutput.audioSettings = settings;
    

    仅对 Mac 有效, iOS 不能用.

    Posted by ideawu at 2016-03-10 15:21:54
  • 2016-03-08

    Xcode 如何让 Objective C 项目链接 C++ 静态库

    Views: 7585 | 1 Comment

    如果你的 OC 项目引入了一个 C++ 静态库, 那么编译时会提示找不到 vtable 之类的的错误, 因为 OC 是 C 语言, 无法识别 C++ 的静态库, 解决方法是让 Xcode 认为你在使用 C++/Objective-C++, 假装也行.

    所以解决方法是:

    • 往项目里添加一个.cpp文件, 文件是空的.
    • 将 main.m 改名为 main.mm
    Posted by ideawu at 2016-03-08 18:50:50
  • 2016-03-03

    Objective-C 单引号中包含4个字符

    Views: 2899 | 4 Comments

    C语言里, 单引号只能包含1个字符. 但是, 在 Objective-C, 可以包含4个字符, 因为它是一个包含4个字节的32位整数. 这是什么语法特性? 找了半天没找到名字.

    === edit ===

    根据评论中的朋友的提醒, 这种东西叫 "integer character constant", "FourCC", 在 ANSI-C89 已经有.

    Posted by ideawu at 2016-03-03 20:57:27
|<<<2345678910>>>| 6/120 Pages, 720 Results.