小编Gol*_*rol的帖子

TRestClient/TRestRequest错误地解码gzip响应

我试图读取一个REST API,它是gzip编码的.确切地说,我试图阅读StackExchange API.

我已经在TRESTResponse中找到了自动解码GZIP的问题但由于某些原因,这个答案并没有解决我的问题.

测试设置

在XE5中,我添加了TRestClient,TRestRequest和具有以下相关属性的TRestResponse.我设置了客户端的BaseURL,请求的资源和参数,以及我AcceptEncoding对请求的设置gzip, deflate,这应该使它自动解码gzipped响应.

  object RESTClient1: TRESTClient
    BaseURL = 'https://api.stackexchange.com/2.2'
  end
  object RESTRequest1: TRESTRequest
    AcceptEncoding = 'gzip, deflate'
    Client = RESTClient1
    Params = <
      item
        Kind = pkURLSEGMENT
        name = 'id'
        Options = [poAutoCreated]
        Value = '511529'
      end
      item
        name = 'site'
        Value = 'stackoverflow'
      end>
    Resource = 'users/{id}'
    Response = RESTResponse1
  end
  object RESTResponse1: TRESTResponse
  end
Run Code Online (Sandbox Code Playgroud)

这导致url:

https://api.stackexchange.com/2.2/users/511529?site=stackoverflow

我调用这样的请求,有两个消息框来显示url和请求的结果:

ShowMessage(RESTRequest1.GetFullRequestURL());
RESTRequest1.Execute; // Actual call
ShowMessage(RESTResponse1.Content);
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中调用该URL,我会得到一个正确的结果,这是一个json对象,其中包含我的一些用户信息. …

delphi rest gzip utf-8 delphi-xe5

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

在无限循环中停止delphi程序

当在Delphi中发生无限循环时,调试器在我按下停止按钮时甚至不会给我一个堆栈跟踪.如果我怀疑程序停止的位置,我可以设置断点,如果这是正确的无限循环,它将停止.

这是一个故意导致无限循环的示例程序:

procedure TForm1.btnDebugInfiniteLoopClick(Sender: TObject);
var I: Integer;
begin
    I:=0;
    while I<100 do begin
        I:=1+1;
        if I>64 then I:=I div 2;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

当停止时,我得到的东西看起来像:

ntdll.RtlUserThreadStart:
776301B4 89442404         mov [esp+$04],eax
776301B8 895C2408         mov [esp+$08],ebx
776301BC E9E99C0200       jmp $77659eaa
776301C1 8DA42400000000   lea esp,[esp+$0000]
776301C8 8DA42400000000   lea esp,[esp+$0000]
776301CF 90               nop 
ntdll.KiFastSystemCall:
776301D0 8BD4             mov edx,esp

...
Run Code Online (Sandbox Code Playgroud)

当我单步(F7)时,它单步几行,然后锁定直到我再次击中,此时我得到相同的结果.

delphi debugging delphi-xe3

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

重用没有循环依赖的服务

我有一个服务全局存储我的应用程序中使用的所有数据.

GlobalDataService(GDS)

angular
        .module('app.core')
        .service('GlobalDataService', GlobalDataService);
    GlobalDataService.$inject = ['$http', 'LineStatusService'];
    function GlobalDataService($http, LineStatusService) {
        var gds = this;

        gds.data = {
            //all my data
        }

        gds.data.lines = LineStatusService.getLineStatus().then...
    }
Run Code Online (Sandbox Code Playgroud)

还有一个简单的crud服务来处理我的数据状态.

StatusDataService(SDS)

angular
        .module('app.core')
        .service('LineStatusService', LineStatusService);
    LineStatusService.$inject = ['$http', 'GlobalDataService'];
    function LineStatusService($http, GlobalDataService) {
        var service = {
            getLineStatus: getLineStatus,
            saveLineStatus: saveLineStatus,
            ...
        };

        function saveLineStatus (line, status, user) {
            var data = {
                status: {
                    status_id: status.status_id,
                    status_desc: status.status_desc
                },
                updated_by: user
            }

            return $http.post('/api/euauto/v1/delivery-status/linestatus', data)
            .then(function successCallback(response) {
                GlobalDataService.data[id].status …
Run Code Online (Sandbox Code Playgroud)

javascript dependency-injection angularjs angular-services

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

move_uploaded_file()不会替换现有图像

我正在使用下面的脚本,因此用户可以上传他们的个人资料图片.第一次上传图像(当图像不存在于该位置时),它的效果很好.但是,如果图像已存在于路径中(如果用户尝试更改配置文件图片),则新图像将不会替换旧图像.我确实获得了查询的成功.

任何帮助将非常感谢!

谢谢

<?php

ini_set('display_errors',1);

 error_reporting(E_ALL);


require_once('db.php'); 


$name = $_POST['name']; 

   $dir = '../uploadImages/'; 
   $file = basename($_FILES['image']['name']);

   $uploadfile = $dir . $file;


    if(move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile))
    {


        $path = $name; 
        $path .= 'Image.png';       
        $query = mysql_query("UPDATE users SET imagePath='$path' WHERE username='$name'");

        if ($query)
        {
            echo 'success'; 
        }
        else 
        {
            echo 'error'; 
        }


    }
    else 
    {
        echo mysql_error(); 
    }


 ?>
Run Code Online (Sandbox Code Playgroud)

php

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

从MediaWiki中的pagelinks中排除页面的某些部分

我正在使用MediaWiki.wiki中的某些页面包含一个或多个大型导航块,如本页底部的那些:

https://www.eftepedia.nl/

像这样的块包含在许多页面中.现在,当保存页面时,也会更新指向其他页面的链接列表(pagelinks表格).这些引用由"这里有什么链接"特殊页面以及可能的其他类似页面使用.

但实际上我不希望这些块中的链接计算在内.有没有办法可以影响MediaWiki在这个更新链接到其他页面的过程中排除页面的某些部分?

我已经编写了一些扩展,覆盖了特定的类并使用了一些钩子,所以我知道这些东西是如何工作的基础知识,但我找不到合适的钩子来影响这部分过程.

至于任何尝试,我发现ParserOutput::addLink,它用于将解析的链接存储到数组中.然后,在保存时,此数组将合并到数据库中.addLink是从几个地方调用的,最值得注意的是来自Parser::replaceInternalLinks2调用的地方Parser::internalParse.

如果我理解正确,internalParse则分别为每段文字调用.这包括单独的包含,但也包括嵌套标签.也许我可以使用所谓的钩子internalParse,但我还没有找到圣杯.我可以使用正确的方向来解决它,最好不要修改Parser类本身.

mediawiki mediawiki-extensions

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

游标中的 PL/SQL 变量是否与绑定参数有效相同?

我听说使用绑定变量(可以)更有效,因为对于具有不同绑定值的后续调用,查询本身仍然相同,因此不再需要对其进行解析。

我理解为什么固定值会出现这种情况。在下面的游标中,该值固定为 1。如果我有一个相同的不同游标,除了 1 变为 2,这是一个不同的查询。清到此为止。

declare
  cursor C_CURSOR is 
    select * from TESTTABLE pt where pt.ID = 1;
Run Code Online (Sandbox Code Playgroud)

但我想知道在游标内使用 PL/SQL 变量时是否也是这种情况。它们是否被扩展为一个固定值,或者它们是否被解释为绑定变量。

我已经进行了广泛的搜索,但到处都可以找到有关文字的示例,如上述情况,但没有明确解释 PL/SQL 变量的使用。

换句话说,在下面的两个片段中,第二个可能更有效,还是它们本质上相同?

直接在游标中使用 PL/SQL 变量:

declare
  V_TEST integer := 1;

  cursor C_CURSOR is 
    select * 
    from 
      TESTTABLE pt
    where
      pt.ID = V_TEST;

begin
  for r in C_CURSOR loop
    null;
  end loop;
end;
Run Code Online (Sandbox Code Playgroud)

使用绑定变量:

declare
  V_TEST int := 1;

  cursor C_CURSOR(B_TEST int) is 
    select * 
    from 
      TESTTABLE pt
    where
      pt.ID = B_TEST;

begin
  for r …
Run Code Online (Sandbox Code Playgroud)

oracle plsql cursor parameterbinding bind-variables

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

在MySQL查询中将值舍入为最接近的2的幂

我想在mysql查询中将值舍入到下一个最接近的2的幂,所以

select RoundUpToNearestPowerOfTwo(700) -- Should give 1024
Run Code Online (Sandbox Code Playgroud)

我需要这个解决方案作为更大的查询的一部分来生成和读取一些位掩码.使用自定义存储函数不是一种选择,因为我无法在生产环境中使用它们,因此我正在寻找一种在查询中内联的智能方法.

[编辑]我能想到的一种可能的方法是创建一些枚举器,使用其中的幂,并选择大于我的值的最小值:

  select
    min(BOUND)
  from
    (select 700 as VALUE) v
    inner join
      (select
        POW(2, @pow := @pow + 1) as BOUND
      from
        (select @pow := 0) x,
        MY_RANDOM_TABLE t
      ) x on x.BOUND > v.VALUE
Run Code Online (Sandbox Code Playgroud)

但正如你所知,它非常冗长,所以我们欢迎更精简的解决方案.

mysql sql

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

什么时候和为什么我应该在PHP中使用类?

我想知道何时以及为什么我应该在php中使用类,我在php.net上读到一个类包含变量(我们在它们之前写var)和这些变量的函数,那么为什么不使用常规函数呢?我的意思是班级做什么?

谢谢你

php oop class

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

Oracle触发器更新不同表中的实体

所以这是一个单一的课程,是我第一次使用Oracle(和使用触发器).我们应该为航空公司创建一个数据库.

部分数据库是

CREATE TABLE FLIGHT_BOOKING (
  BOOKING_ID NUMBER(11) PRIMARY KEY,
  BOOKING_TIME DATE NOT NULL,
  EMPLOYEE_ID NUMBER(11) NOT NULL,
  FLIGHT_ID NUMBER(11) NOT NULL,
  TOTAL_COST NUMBER(4,2) NOT NULL
);

CREATE TABLE FLIGHT (
  FLIGHT_ID NUMBER(11) PRIMARY KEY,
  PLANE_ID NUMBER(11) NOT NULL,
  START_ID NUMBER(11) NOT NULL,
  DESTINATION_ID NUMBER(11) NOT NULL,
  TRANSIT_ID NUMBER(11),
  DEPARTURE_TIME DATE NOT NULL,
  ARRIVAL_TIME DATE NOT NULL,
  NUM_BOOKED NUMBER (4) NOT NULL
);

CREATE TABLE PASSENGER (
  PASSENGER_ID NUMBER(11) PRIMARY KEY,
  FIRST_NAME VARCHAR2(20) NOT NULL,
  MIDDLE_NAME VARCHAR2(20) NULL,
  LAST_NAME VARCHAR2(20) …
Run Code Online (Sandbox Code Playgroud)

oracle triggers

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

然后对Oracle sql组进行排序

我试图将我的查询结果分成两组,一组有Y标志,另一组有N标志.然后我需要根据两件事对组进行排序.

这是我尝试过的查询,它不适用于GROUP BY位:

SELECT      location, 
        country 
FROM        web_loc_info 
WHERE       flag = 'Y' 
OR      flag = 'N' 
AND         available_online = 'Y' 
GROUP BY    flag 
ORDER BY    country, 
                location_desc
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助都会很棒,所以请提前感谢任何回复

sql oracle

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