小编Rob*_*rto的帖子

Ruby方式为OAuth生成HMAC-SHA1签名

我正在编写一个小型ruby程序,用于在OAuth上使用Twitter,并且还没有找到正确的方法来执行HMAC-SHA1签名.到目前为止,我搞砸了

Base64.encode64(OpenSSL::HMAC.hexdigest(digest, key, stuff)).chomp
Run Code Online (Sandbox Code Playgroud)

但这会输出Twitter拒绝的内容,而不是有效的签名.我实际上以更糟糕的方式解决了它,请尽量不要打我:

php -r "echo rawurlencode(base64_encode(hash_hmac('sha1', '#{@signature}', '#{llave}', true)));"
Run Code Online (Sandbox Code Playgroud)

这最后一个实际上有效,我可以四处寻找我的东西.

我想要一些关于如何在不回复PHP的情况下实际执行此操作的提示.当我试图学习一门语言时,我不是很喜欢图书馆,所以宝石几乎是不可能的.

谢谢!

ruby cryptography sha1 twitter-oauth

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

带口音的NodeJS hmac摘要问题

我正在与Ruby,PHP和NodeJS并行进行以下代码的比较,使用该crypto模块在NodeJS中获得不正确的响应.

PHP

hash_hmac('sha256', 'text', 'á');
Run Code Online (Sandbox Code Playgroud)

红宝石

OpenSSL::HMAC.hexdigest('sha256', 'á', 'text')
Run Code Online (Sandbox Code Playgroud)

的NodeJS

var signer = crypto.createHmac('sha256', 'á');
var expected = signer.update("text").digest('hex');
Run Code Online (Sandbox Code Playgroud)

Ruby和PHP都返回34b3ba4ea7e8ff214f2f36b31c6a6d88cfbf542e0ae3b98ba6c0203330c9f55b,而NodeJS返回7dc85acba66d21e4394be4f8ead2a327c9f1adc64a99c710c98f60c425bd7411.我注意到,如果我utf8_encode('á')在PHP中尝试,它实际上给了我Node期望的结果.

我正在从文件中加载Node中的重音文本,如下所示:

JSON.parse(fs.readFileSync('keys.js', 'utf8'));
Run Code Online (Sandbox Code Playgroud)

我将如何在Node中更改我的代码以获得PHP和Ruby都存在的结果哈希?

谢谢!

hmac node.js

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

在Git pre-commit Hook上读取STDIN(使用PHP)

我正在寻找一种git-commit等待标准输入的方法.我正在编写这个PHP,因为我的bash技能是不存在的,所以我会做一个常规的

<?php
$input = trim(fgets(STDIN));
fscanf(STDIN, "%d\n", $line);
?>
Run Code Online (Sandbox Code Playgroud)

会做的伎俩,等到我写东西继续,但它只是继续执行我的PHP脚本无论如何.

这背后的想法是,在我标记一个版本后,git将推HEAD送到测试网络服务器,发送几条推文,让我在CHANGELOG中写一些关于发布的细节.

虽然我可以实现对文件的写入(使用exec('mate -w')),但我希望它能在我对服务器进行快速测试之前保持不变.如果我发现任何错误(懒惰,我知道),这将使我能够回滚.

谢谢你的帮助!

php git hook stdin

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

如何在1个http请求下上传多个文件

使用HTML5分块,我可以用较小的片段进行文件上传.但问题开始时,它开始使用多个http POST请求,这将导致计算机减速,或可能崩溃.反正有没有在一个http请求下分割文件..所以,如果我有5个文件,它将只有5个http请求,尽管我使用html5拆分块

例如:如果我上传5个文件,每个文件将被拆分为1mb块,所以如果第一个文件是10mb,那么它将变成10个1mb块.问题是,每个块将在1个http请求下,所以只有第一个文件它将是10个HTTP请求.想象一下,如果我有1GB文件,它将成为1000 HTTP请求并减慢计算机速度.

这是示例代码:

        //Prepare element progress after the page load completely
        var uploaders = [];
        var totalChunks = 0;
        var progress;
        var bars;
        $(document).ready(function() {
            //progress = document.querySelector('progress');
            //bars = document.querySelector('#bars'); 
        });        

        //function for after the button is clicked, slice the file 
        //and call upload function
        function sendRequest() {       
            //clean the screen
            //bars.innerHTML = '';


            var file = document.getElementById('fileToUpload');   

            for(var i = 0; i < file.files.length; i++) {      
                var blob = file.files[i];         
                var originalFileName = blob.name;
                var filePart …
Run Code Online (Sandbox Code Playgroud)

javascript php html5 file-upload xmlhttprequest

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

PHP中的CardDAV服务器

我正在寻找一种在PHP中构建CardDAV服务器的方法.这是一个小型开发,希望我的公司能够与多种设备共享联系人,由自定义后端/ CRM提供服务.

我已经开始玩了,试图理解协议但最终混淆了两次.然后我阅读了IETF草案,但发现我甚至不了解WebDAV本身的基础知识.

你会以哪种方式推荐我开始学习CardDAV,WebDAV和一切相关的东西?

php webdav http

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

MapKit更新注释图像

我在找到MKAnnotationView异步请求完成后更新自定义映像的方法时遇到问题,并提供有关注释状态的信息.到目前为止,我有这个:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

    static NSString *identifier = @"EstacionEB";   
    if ([annotation isKindOfClass:[EstacionEB class]]) {
        EstacionEB *location = (EstacionEB *) annotation;

        CustomPin *annotationView = (CustomPin *) [_mapita dequeueReusableAnnotationViewWithIdentifier:identifier];
        if (annotationView == nil) {
            annotationView = [[CustomPin alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
        } else {
            annotationView.annotation = annotation;
        }

        UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", [location elStatus]]];

        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;
        annotationView.image = image;

        NSDictionary *temp = [[NSDictionary alloc] 
                              initWithObjects:[NSArray arrayWithObjects:annotationView, location, nil]
                              forKeys:[NSArray arrayWithObjects:@"view", …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch mapkit mkannotation mkannotationview ios4

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

Sinatra上传多个文件

我正在编写一个简单的Sinatra应用程序,但是在读取文件时<input type="file" multiple />没有让Rack抛出一些问题NoMethodError: undefined method 'bytesize' for (Hash).

表单的写法如下:

<form action="/upload" enctype="multipart/form-data" method="post">
    <input type="file" name="images[]" multiple />
</form>
Run Code Online (Sandbox Code Playgroud)

但是,在我的任何代码执行之前,接收端会抛出上述错误,也就是说,Rack没有正确解析input[name=images].我发送的表格不正确吗?如果我放下括号[],那么只发送最后一个文件(很多),但我觉得我可能会遗漏一些东西......

只是为了澄清:这是Sinatra v1.4.3和Rack v1.5.2,后者是抛出异常的那个.在这里完全回溯.

ruby file-upload sinatra

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

MySQL集存储

我在用PHP编写的Web应用程序中有几个表,我想知道这是不是很好的实践.

CREATE TABLE `products`(
  `product_id` int NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `variations` varchar(255) default NULL,
  PRIMARY KEY  (`product_id`)
)

CREATE TABLE `variations`(
  `variation_id` int NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `kind` varchar(255) default NULL,
  PRIMARY KEY  (`variation_id`)
)
Run Code Online (Sandbox Code Playgroud)

例如,产品将是:

1,'Cup','1,2,3'
Run Code Online (Sandbox Code Playgroud)

虽然变化将是:

1,'Green','Color'
2,'Glass','Texture'
3,'Blue','Color'
Run Code Online (Sandbox Code Playgroud)

这样许多产品可以具有相同的颜色/纹理.我发现的问题是我无法将其放入将返回数据的单个查询中:

1,'Cup','1,Green,Color-2,Glass,Texture-3,Blue,Color'
Run Code Online (Sandbox Code Playgroud)

然后相应地解析它以显示每个变体的图像.

存储函数是否返回该格式是最好的主意?或者我应该进一步规范化,如果是这样,怎么样?

mysql recursion normalization set

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