小编Mec*_*MK1的帖子

在BASH中获取相对路径

我已经搜索了这个,但我想对使用路径没有很大的需求.所以我正在尝试两个写一个bash脚本来使用tta和cue文件转换我的音乐集.我的目录结构如下:tta文件的/Volumes/External/Music/Just/Some/Dirs/Album.tta和cue表的/Volumes/External/Cuesheets/Just/Some/Dirs/Album.cue.

我目前的方法是将/ Volumes/External设置为"root_dir",并将album.tta文件的相对路径设置为$ ROOT_DIR/Music(在这种情况下,这将是Just/Some/Dirs/Album.tta),然后添加此结果为$ ROOT_DIR/Cuesheets并将后缀从.tta更改为.cue.

我目前的问题是,dirname按原样返回路径,这意味着/ Volumes/External/Music/Just/Some/Dirs不会转换为./Just/Some/Dirs/当我当前文件夹为$ ROOT_DIR/Music时给出了绝对路径.

添加://如果有人遇到类似的问题,这是脚本:

#!/bin/bash
ROOT_DIR=/Volumes/External
BASE="$1"

if [ ! -f "$BASE" ]
then
    echo "Not a file"
    exit 1
fi

if [ -n "$2" ]
then
    OUTPUT_DIR="$HOME/tmp"
else
    OUTPUT_DIR="$2"
fi
mkfdir -p "$OUTPUT_DIR" || exit 1

BASE=${BASE#"$ROOT_DIR/Music/"}
BASE=${BASE%.*}

TTA_FILE="$ROOT_DIR/Music/$BASE.tta"
CUE_FILE="$ROOT_DIR/Cuesheets/$BASE.cue"
shntool split -f "${CUE_FILE}" -o aiff -t "%n %t" -d "${OUTPUT_DIR}" "${TTA_FILE}"
exit 0
Run Code Online (Sandbox Code Playgroud)

bash path

4
推荐指数
1
解决办法
8405
查看次数

日志代码应该抛出异常吗?

我正在设计一个小型库,它应该有助于登录到不同的目的地(文件、数据库等)。但是,我不确定如果出现问题(例如无法写入文件)是否应该抛出异常?

\n\n

如果我抛出异常(与日志记录相关),使用我的库的应用程序开发人员可以清楚地看到日志记录没有按预期发生。另一方面,它可能是问题的另一个来源。

\n\n

如果我抑制异常并且只是悄悄地不记录日志,那么开发人员可能会错过重要信息(例如无法访问数据库)。

\n\n

对于如何解决这个问题,是否有任何建议、一般准则(如果是 a 那么 b 等)?

\n\n
\n\n

据我到目前为止所读到的:

\n\n

Microsoft 的例外指南指出:

\n\n
\n

\xe2\x9c\x97 没有可以根据某些选项抛出或不抛出的公共成员。

\n
\n\n

因此,选择是否抛出异常将违反这些准则,但如果不确定异常的可能性有多大,它们不会给出有关抛出异常的声明。

\n\n

我还在这个问题/答案中读到,我不应该捕获异常,因为我无法对它们做任何有意义的事情,但问题是针对企业级系统,而我的问题是在更一般的层面上提出的。

\n

c# exception

4
推荐指数
1
解决办法
1258
查看次数

有没有理由不引用变量?

是否有任何正当理由不将所有变量放在引号中的shell脚本中?("不知道更好"在我看来不是正当理由.)

一般来说,引用变量可以确保它们被视为一个变量,如果它们包含空格或其他特殊字符.那么为什么有人会采用"不安全"的方式而不引用变量?

bash

4
推荐指数
1
解决办法
147
查看次数

使用int13h从软盘加载段

我目前正在尝试编写16位实模式启动代码,该代码打印一个字母,然后从软盘加载第二个段并跳转到该段,然后再打印一个字母。

但是,我对“从云端硬盘读取扇区”呼叫的工作方式有些困惑。到目前为止,这是我的代码:

[BITS 16]
org 0x7B00

start:
        mov ax, 0xB800 ; Video buffer
        mov es, ax     ; Copy address of video buffer to extra segment

        mov byte [es:0], 'A'    ; Move character A to first address
        mov byte [es:1], 0x17   ; Format for blue background, white foreground

        mov ah, 0x02 ; Read sectors from drive
        mov al, 1    ; Read 1 sector
        mov ch, 0    ; Cylinder 0
        mov cl, 0    ; Sector 0
        mov dh, 0    ; Head 0 …
Run Code Online (Sandbox Code Playgroud)

assembly nasm osdev bootloader x86-16

2
推荐指数
1
解决办法
913
查看次数

SetConsoleActiveScreenBuffer不显示屏幕缓冲区

我目前正在尝试用C#编写一个带有两个屏幕缓冲区的控制台应用程序,这些缓冲区应该来回交换(很像现代GPU上的VSync).由于System.Console该类没有提供切换缓冲区的方法,我不得不从kernel32.dll P/Invoke几个方法.

这是我目前的代码,大大简化了:

static void Main(string[] args)
{
    IntPtr oldBuffer = GetStdHandle(-11); //Gets the handle for the default console buffer
    IntPtr newBuffer = CreateConsoleScreenBuffer(0, 0x00000001, IntPtr.Zero, 1, 0); //Creates a new console buffer

    /* Write data to newBuffer */

    SetConsoleActiveScreenBuffer(newBuffer);
}
Run Code Online (Sandbox Code Playgroud)

发生了以下事情:

  • 屏幕保持为空,即使它应该显示 newBuffer
  • 当写入oldBuffer而不是时newBuffer,数据立即出现.因此,我写入缓冲区的方式应该是正确的.
  • 在调用时SetConsoleActiveScreenBuffer(newBuffer),错误代码现在是6,这意味着句柄无效.这很奇怪,因为句柄不是-1,文档描述为无效.

我应该注意到,我很少直接使用Win32 API,并且对常见的Win32相关问题知之甚少.我会很感激任何帮助.

c# winapi console-application

2
推荐指数
1
解决办法
511
查看次数

Jmeter JSon提取多个值

我试图通过JMETER JSON Extractor从JSON文档中提取多个值,使用以下表达式:$..VoidTransactionReferenceNumber;$..CILAmount

但是,我无法获得所需的响应,这是VoidTransactionReferenceNumberCLIAmount.

JSON文档是:

{
    "VoidTransactionReferenceNumber": "23456", 
    "TransactionDTM": "2017-11-16T10:09:16.343Z", 
    "CardBalance": 2350,
    "CardSequenceNumber": 0,
    "CILAmount": 0,
    "AutoloadAmount": 0,
    "CardBlockState": false, 
    "VoidedAmount": 570, 
    "SalesReferenceNumber": "2051609371", 
    "VoidSalesReferenceNumber": "2051609371",
    "CardNumber": "3085220112345678"
}
Run Code Online (Sandbox Code Playgroud)

json jmeter

2
推荐指数
1
解决办法
6336
查看次数

在另一个类中访问NSApplications委托?

我目前正在尝试编写我的第一个CoreData-Application,它需要访问应用程序委托以获取某些内容.所以我试图在我的委托中创建一个小变量,我想阅读以确定我是否得到了正确的委托.但是,似乎我无法访问我的代理并创建一个新的代理.这是我的代码:

//delegate.h
#import <Cocoa/Cocoa.h>

@interface delegate_TestAppDelegate : NSObject <NSApplicationDelegate> {
@private
    NSWindow *window;
    NSString * myString;
}

@property (assign) IBOutlet NSWindow *window;
@property (retain) NSString * myString;

@end

//delegate.m
#import "delegate_TestAppDelegate.h"

@implementation delegate_TestAppDelegate

@synthesize window, myString;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    self.myString = @"Hello, World";
    NSLog(@"In delegate: %@", self.myString);
}

@end

//MyClass.h
#import <Foundation/Foundation.h>
#import "delegate_TestAppDelegate.h"


@interface MyClass : NSObject {
@private
    delegate_TestAppDelegate * del;
}
- (IBAction)click:(id)sender;

@end

//MyClass.m
#import "MyClass.h"

@implementation MyClass

- (id)init
{
    self = [super init]; …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c

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

使用Slim Framework无法通过PUT请求获取正文

我试图使用Slim框架从PUT请求中检索参数.从POST主体解析参数时,我可以简单地$request->post('param')用来检索param中的值.但是,当我使用时$request->put('param'),我总是收到null.

我的PUT身体是这样形成的:param=value&otherparam=othervalue&foo=bar......

PS:我已经看过这个问题,但答案没有使用put()-Method.

rest http-put slim

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

List <T>继承表现奇怪

可能重复:
C#方差问题:将List <Derived>分配为List <Base>

我有列表继承的问题.它看起来像具有更多指定成员的通用List无法转换为具有其基本成员的列表.看这个:

class A
{
    public int aValue {get; set;}
}

class B : A
{
    public int anotherValue {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

你现在可能期望a List<B>也是一个,List<A>但事实并非如此. List<A> myList = new List<B>()不可能.甚至List<A> myList = (List<A>)new List<B>()在面向对象编程3年后,我是否遗漏了一些基本概念?

c# generics inheritance list

0
推荐指数
1
解决办法
102
查看次数