小编Ric*_*ook的帖子

如何生成用于attr_encrypted的加密密钥

我正在考虑在Rails应用程序中使用attr_encrypted gem进行字段级加密.如何生成用于此gem的加密密钥?

更新:

Encryptor的文档(attr_encrypted使用的基础加密)声明如下(在Usage | Basic下):

secret_key = Digest::SHA256.hexdigest('a secret key')
encrypted_value = Encryptor.encrypt('some string to encrypt', :key => secret_key)
Run Code Online (Sandbox Code Playgroud)

我猜这a secret key可以是任意长度的随机字符串,并且调用hexdigest将从中计算适当的固定长度字符串.这是推荐的方法吗?

ruby cryptography ruby-on-rails

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

在PHP中重构这两个非常相似的类的OO方法是什么?

我有一个类如下:

class DreamsImagesStore
{
  public $table = 'dreams_images';

  public function insertNewDreamImage($dream_id, $pid)
  {
    try {
      $values = array($dream_id, $pid);
      $sth = $this->dbh->prepare("INSERT INTO {$this->table}
                                (dream_id, pid)
                                VALUES (?, ?)");
      if($sth->execute($values)) {
        return true;
      }
    } catch(PDOException $e) {
      $this->errorLogger($e);
    }
  }
...
}
Run Code Online (Sandbox Code Playgroud)

我将要实施一项名为InterestsImagesStore新的类,其中这些类之间的唯一区别将是价值$table,$dream_id$interest_iddream_idSQLinterest_id.

我知道有更好的方法可以做到这一点,我将在未来实现类似的类,这些类有很小的差异.

为了避免重复和提高可维护性,重构代码的最佳面向对象方法是什么?

php oop refactoring

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

在c ++和c#之间进行通信的最快方式

我们正在构建新的视觉检测系统应用程序.由于多种原因,实际的检查系统需要是c ++.对于该系统,我们将使用Boost&Qt.

对于我们的UI,我们目前正在考虑将WPF/C#用于基于UI和SQL的报告.如果检查系统没有监视器或键盘,则UI必须在与c ++检查系统相同的盒子上本地运行或在另一个盒子上远程运行的复杂因素.

我们关心的是在两个系统之间传输数据的最快方法是什么?我们目前正在研究使用Google协议缓冲区进行序列化的基于套接字的系统.协议缓冲区将为c ++和c#(jskeet/dotnet-protobufs)生成代码.

有没有人有任何建议/经验?

c# c++ wpf networking qt

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

如何使DatagramSocket.MessageReceived与async/await一起使用?

我想与TPL包裹以下数据报套接字操作清理API,使其与工作很好asyncawait,很像StreamSocket类一样.

public static async Task<bool> TestAsync(HostName hostName, string serviceName, byte[] data)
{
    var tcs = new TaskCompletionSource<bool>();
    var socket = new DatagramSocket();
    socket.MessageReceived += (sender, e) =>
    {
        var status = false; // Status value somehow derived from e etc.
        tcs.SetResult(status);
    };
    await socket.ConnectAsync(hostName, serviceName);
    var stream = await socket.GetOutputStreamAsync();
    var writer = new DataWriter(stream);
    writer.WriteBytes(data);
    await writer.StoreAsync();
    return tcs.Task;
}
Run Code Online (Sandbox Code Playgroud)

关键点是MessageReceivedDatagramSocket类转换为事件异步模式和新async模式的奇怪混乱的事件.无论如何,TaskCompletionSource<T>允许我调整处理程序以符合后者,所以这不是太可怕.

除非端点永远不返回任何数据,否则这似乎工作得很好.与MessageReceived处理程序关联的任务永远不会完成,因此返回的任务TestAsync …

c# network-programming task-parallel-library async-await windows-runtime

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

使用在C#中声明的虚拟异步任务并在F#中覆盖它

目前我有一段用C#编写的代码,它被一段F#代码用作.NET库.这是问题:

假设我在C#库中有以下类:

namespace Jaxrtech.Logic
{
    public class Initializer
    {
        public Initializer()
        {
        }

        public async Task Setup()
        {
            // Run implementation independed setup here

            // Now call the implementation specific override
            await OnSetup();

            // Do any additional setup after the implemntation specific stuff
        }

        // Allow for custom setup tasks to be ran by the Initializer
        protected virtual async Task OnSetup()
        {
            // Return a completed task by default
            await Task.FromResult(0);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在F#中覆盖,如下:

open System.Threading.Tasks
open Jaxrtech.Logic

type …
Run Code Online (Sandbox Code Playgroud)

.net c# f# asynchronous async-await

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

高效的Haskell相当于NumPy的argsort

是否有一个标准的Haskell等同于NumPy的argsort功能?

我正在使用HMatrix,因此,希望兼容的功能Vector R是别名Data.Vector.Storable.Vector Double.argSort下面的函数是我目前使用的实现:

{-# LANGUAGE NoImplicitPrelude #-}

module Main where

import qualified Data.List as L
import qualified Data.Vector as V
import qualified Data.Vector.Storable as VS
import           Prelude (($), Double, IO, Int, compare, print, snd)

a :: VS.Vector Double
a = VS.fromList [40.0, 20.0, 10.0, 11.0]

argSort :: VS.Vector Double -> V.Vector Int
argSort xs = V.fromList (L.map snd $ L.sortBy (\(x0, _) (x1, _) -> compare x0 x1) (L.zip …
Run Code Online (Sandbox Code Playgroud)

haskell numpy hmatrix

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

如何保持Mercurial的局部变化并使其"隐形"

在我的本地仓库中,我有一个文件A,我做了一些更改.但我不想将此更改提交给远程仓库.问题是如果我没有在TortoiseHG中提交此更改,每次我更改其他文件时,A将列在"更改列表窗口"中.

我知道,TortoiseHG有搁置功能.它可以存储临时文件.但搁置的文件将恢复为原始状态.

mercurial tortoisehg

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

检测Docker映像是否会在运行的构建中更改

我正在使用如下命令行来构建Docker映像:

docker build -t myimage .
Run Code Online (Sandbox Code Playgroud)

成功执行此命令后,将不再运行它,因为所指定的映像Dockerfile未更改。有没有一种方法可以检测Dockerfile(或其中一个构建上下文文件)随后是否更改而无需重新运行此命令?

docker

3
推荐指数
2
解决办法
1750
查看次数

如何将datetime插入time(0)字段

我正在做一个批量插入:

// Get the data into the DataTable
//dtData = GetData(...);

// Create an object of SqlBulkCopy
SqlBulkCopy objSBC = new SqlBulkCopy(connection);
// Specify the destination table
objSBC.BulkCopyTimeout = 0;
objSBC.BatchSize = 10000;
objSBC.DestinationTableName = "QuickLabDump";
// Write the data to the SQL Server

objSBC.WriteToServer(QuickLabDump);
Run Code Online (Sandbox Code Playgroud)

我插入的数据表看起来像这样:

QuickLabDump = new DataTable();

QuickLabDump.Columns.Add("Time Collected", typeof(TimeSpan));
QuickLabDump.Columns.Add("Time Entered", typeof(TimeSpan));
QuickLabDump.Columns.Add("Time Completed", typeof(TimeSpan));
QuickLabDump.Columns.Add("Test Time", typeof(TimeSpan));

QuickLabDump.Columns.Add("Date Collected", typeof(DateTime));
QuickLabDump.Columns.Add("Date Entered", typeof(DateTime));
QuickLabDump.Columns.Add("Date Completed", typeof(DateTime));
QuickLabDump.Columns.Add("Test Date", typeof(DateTime));
......
Run Code Online (Sandbox Code Playgroud)

当我从c#(上面的代码)运行批量插入时,我收到以下错误:

The given value of …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server sql-server-2008

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

使用 image_tag 相对于 &lt;img&gt; 的好处

image_tag使用而不是<img src="">在视图文件中使用有什么好处吗?如果有,它们是什么?

assets ruby-on-rails asset-pipeline

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

正则表达式替换为回调

我想执行字符串搜索并替换为正则表达式,但一直无法找到满足我需要的功能.我正在寻找类似于我的神话regexReplace的东西,我在下面给出的潜在签名:

regexReplace :: Regex -> (String -> String) -> String -> String
Run Code Online (Sandbox Code Playgroud)

要么

regexReplace :: Regex -> (RegexMatch -> String) -> String -> String
Run Code Online (Sandbox Code Playgroud)

这大致相当于preg_replace_callbackPHP.它需要一个编译的正则表达式Regex,一个替换函数(其参数可以是String或某些匹配类型RegexMatch),一个源字符串并返回结果.

在那里的许多Haskell正则表达式库中,与此行为最接近的匹配是什么?

更新:

我可能需要在内部运行回调IO,所以我可能最终需要以下函数签名:

regexReplace :: Monad m => Regex -> (RegexMatch -> m String) -> String -> m String
Run Code Online (Sandbox Code Playgroud)

这显然是一个比原始问题陈述更普遍的问题.我最终可能会使用Parsec或类似的东西.

基本上,我有以下程序,但无法弄清楚如何填空:

{-# LANGUAGE RecordWildCards #-}

module Main where

import Data.Maybe
import System.Environment

data Regex = Regex {
  regexPattern :: String
}
data RegexMatch …
Run Code Online (Sandbox Code Playgroud)

regex haskell

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

空字符串的奇怪情况

我有代码来解析日期字段只有当String不为null或为空但我得到以下异常

从字符串""到"日期"类型的转换无效.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidCastException:从字符串""到"Date"类型的转换无效.

来源错误:

Line 29:         
Line 30:  If (Not String.IsNullOrEmpty(last_login)) Then 
Line 31:    If  String.Format("{0:MM/dd/yy H:mm:ss}", last_login) < Now.AddMinutes(-5) Then
Line 32:      Return "height:100%;width:100% ;background-color:#FF0000;font-weight: bold; color: #000000"
Line 33:    Else
Run Code Online (Sandbox Code Playgroud)

有人请解释一下?

c# vb.net

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

Ruby正则表达式从字符串中删除^ C字符

有一个文件具有控制B和控制C命令分隔文本字段.看起来像:

"TEST\003KEY\002TEST\003KEY"
Run Code Online (Sandbox Code Playgroud)

我试图创建一个与此匹配的正则表达式并将其删除.我不确定为什么这个正则表达式不起作用:

"TEST\003KEY\002TEST\003KEY".gsub(/\00[23]/, ',')
Run Code Online (Sandbox Code Playgroud)

ruby regex special-characters

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