小编Sim*_*urr的帖子

便携式PostgreSQL用于USB驱动器的开发

为了将一些开发工作带回家,我必须能够运行PostgreSQL数据库.

我不想在家里的机器上安装任何东西.一切都应该从USB驱动器上运行.

你的USB驱动器上有哪些开发工具?

这个问题涵盖了其他所有内容,但我还没有找到使postgresql可移植的指南.如果可能的话,这似乎并不容易.

那么如何让PostgreSQL移植?它甚至可能吗?

编辑:

PostgreSQL Portable工作.我的USB驱动器速度非常慢,但它确实有效.我不建议用它进行持续的开发,但是对于我需要的东西,它很棒.

也许如果我拿起全速外置硬盘,我会尝试虚拟化.鉴于仅从该驱动器运行数据库的性能较差,运行它的完整虚拟操作系统将无法使用.

postgresql portability usb-drive portable-database

18
推荐指数
2
解决办法
2万
查看次数

录制音频并将数据传递到iOS 8/9上的UIWebView(JavascriptCore)

我们有一个应用程序,主要是一个基于javascript的Web应用程序的UIWebView.我们遇到的要求是能够向用户播放音频然后记录用户,回放该记录以进行确认,然后将音频发送到服务器.这适用于Chrome,Android和其他平台,因为该功能内置于浏览器中.不需要本机代码.

遗憾的是,iOS(iOS 8/9)Web视图缺乏录制音频的能力.

我们尝试的第一个解决方法是使用AudioQueue录制音频并将数据(LinearPCM 16bit)传递给JS AudioNode,以便Web应用程序可以像处理其他平台一样处理iOS音频.这就达到了我们可以将音频传递给JS的程度,但应用程序最终会因内存访问错误而崩溃,或者javascript方面无法跟上发送的数据.

下一个想法是将录音保存到文件并将部分音频数据发送到JS以获得视觉反馈,这是在录制期间显示的基本音频可视化器.

线性PCM签名为16bit时,音频记录并播放到WAVE文件.JS可视化工具是我们陷入困境的地方.期待线性PCM无符号8位,所以我添加了一个可能错误的转换步骤.我尝试了几种不同的方式,主要是在网上找到的,但是在我们进入转换步骤之前,没有找到一种可以让我认为其他错误或缺失的方法.

由于我不知道问题究竟是什么或在哪里,我将转储下面的代码用于音频录制和播放类.欢迎任何建议解决或绕过某种方式解决此问题.

我的一个想法是使用不同的格式标记以不同的格式(CAF)进行记录.查看生成的值,非带符号的16位整数甚至接近最大值.我很少看到+/- 1000以上的任何东西.是因为AudioStreamPacketDescription中的kLinearPCMFormatFlagIsPacked标志?删除该标志会因为格式无效而导致音频文件无法创建.也许切换到CAF会起作用,但我们需要在将音频发送回服务器之前转换为WAVE.

或者我从签名的16位到无符号8位的转换是错误的?我也试过了比特换档和铸造.唯一的区别是,通过此转换,所有音频值都被压缩到125到130之间.位移和转换将其更改为0-5和250-255.这并没有真正解决JS方面的任何问题.

下一步是,不是将数据传递给JS,而是通过FFT函数运行它,并生成JS直接用于音频可视化器的值.在去那个方向之前,我宁愿弄清楚我是否做了一些明显错误的事情.

AQRecorder.h - 编辑:将更新的音频格式更新为LinearPCM 32bit Float.

#ifndef AQRecorder_h  
#define AQRecorder_h  
#import <AudioToolbox/AudioToolbox.h>  
#define NUM_BUFFERS 3  
#define AUDIO_DATA_TYPE_FORMAT float  
#define JS_AUDIO_DATA_SIZE 32  
@interface AQRecorder : NSObject {  
    AudioStreamBasicDescription  mDataFormat;  
    AudioQueueRef                mQueue;  
    AudioQueueBufferRef          mBuffers[ NUM_BUFFERS ];  
    AudioFileID                  mAudioFile;  
    UInt32                       bufferByteSize;  
    SInt64                       mCurrentPacket;  
    bool                         mIsRunning;  
}  
- (void)setupAudioFormat;  
- (void)startRecording;  
- (void)stopRecording;  
- (void)processSamplesForJS:(UInt32)audioDataBytesCapacity audioData:(void *)audioData;  
- (Boolean)isRunning;  
@end  
#endif 
Run Code Online (Sandbox Code Playgroud)

AQRecorder.m - 编辑:将更新的音频格式更新为LinearPCM 32bit Float.在processSamplesForJS中添加了FFT步骤,而不是直接发送音频数据.

#import <AVFoundation/AVFoundation.h>  
#import "AQRecorder.h"  
#import "JSMonitor.h" …
Run Code Online (Sandbox Code Playgroud)

core-audio audio-recording uiwebview ios javascriptcore

5
推荐指数
1
解决办法
931
查看次数