crazycabbage

crazycabbage 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织 crazyc.cn 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

crazycabbage 提出了问题 · 4月8日

pandas如何处理用户和商品的交互数据

推荐系统中,预测下一个用户可能购买的商品,则要加入用户历史交互过的商品交互信息,该怎么把数据转换过去呢?
下面有一个例子:
原始数据:

user_id item_id
1 1
1 2
1 3

转换后的数据:

user_id item_id item_1 item_2 item_3 label
1 1 1 0 0 2
1 2 1 1 0 3
1 3 1 1 1 4

item_1, item_2, item_3代表之前用户交互过的商品
希望有大神能帮忙看看

关注 3 回答 2

crazycabbage 提出了问题 · 2019-02-08

Uva 1590 IP Networks的一个问题

题目:https://vjudge.net/problem/UV...
uDebug:https://www.udebug.com/UVa/1590

uDebug测试样例都过了,可是提交还是WA,不知道问题出在哪里了,不知道是否有大神能帮忙看看。

思路

  1. 将IP地址(二维数组)全转换为二进制表示,然后全部相加成一个一维数组,然后遍历一维数组,如果遇到不是0或者不是总IP地址数,说明从这位开始便不同,记录位置
  2. 然后遍历到这位之前的ip不变,后面补零便为最小IP
  3. 遍历到这位之前的ip全为1,后面补零便为子网掩码
  4. 转换成十进制输出即可
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxn 1000



int code[1001][32];

FILE *fin, *fout;
int DEBUG = 0;

void dec_to_bin(int num, int n, int idx){ // 十进制转二进制
    int c = 7+idx;
    while(num != 0){
        code[n][c] = num % 2;
        c--;
        num /= 2;
    }
}

void encode(int n, char *ip){ // 编码
    int i = 0;
    char num[5];
    int idx = 0;
    int idx2 = 0;
    for(;i<strlen(ip);){
        if(ip[i++] == '.'){
            idx = 0;
            int inum = atoi(num);
            dec_to_bin(inum, n, idx2);
            num[0]='\0';
            num[1]='\0';
            num[2]='\0';
            idx2 += 8;
            continue;
        }
        num[idx++] = ip[i-1];
    }
    int inum =  atoi(num);
    dec_to_bin(inum, n, idx2);
}

void decode(int *r, FILE *fout){ // 解码
    int idx = 8;
    for(;idx<33;){
        int num = 0;
        for(int i=idx - 8;i<idx;i++){
            num += pow(2, idx-i-1) * r[i];
        }
        fprintf(fout, "%d", num);
        if(idx != 32) fprintf(fout, ".");
        //else
        idx += 8;
    }

}

void printcode(int n){ //debug用
    for(int i=0;i<n;i++){
        for(int j=0;j<32;j++){
            if(j%8==0) printf("|");
            printf("%d", code[i][j]);
        }
        printf("\n");
    }
}

int main(){
    int n;
    if(DEBUG){
        fin = fopen("data.in", "rb");
        fout = fopen("data.out", "wb");
    }else{
        fin = stdin;
        fout = stdout;
    }
    int flag = 0;
    while(fscanf(fin, "%d", &n) != EOF){
        //if(flag) fprintf(fout, "\n");
        flag = 1;
        memset(code, 0, sizeof(code));
        char ip[16];
        int n2 = n;
        while(n2--){
            fscanf(fin, "%s", ip);
            encode(n2, ip);
        }
        //printcode(n);
        int result[32];
        memset(result, 0, sizeof(result));
        for(int i=0; i<n; i++){
            for(int j=0; j<32; j++){
                result[j] += code[i][j];
            }
        }
        
        int jdx = 0; //记录不同的位置
        for(; jdx<32; jdx++){
            if(result[jdx] != 0 && result[jdx] != n) break;
        }
        //最小IP
        for(int j=0; j<32; j++){
            if(j<jdx) result[j] = code[0][j];
            else result[j] = 0;
        }
        decode(result,fout);
        fprintf(fout, "\n");
        //子网掩码
        for(int j=0; j<32; j++){
            if(j<jdx) result[j] = 1;
            else result[j] = 0;
        }
        decode(result,fout);
        fprintf(fout, "\n");
    }

    if(DEBUG){
        fclose(fin);
        fclose(fout);
    }
    return 0;
}

关注 1 回答 0

crazycabbage 提出了问题 · 2019-01-22

解决为什么加上double就会有输出

环境:codeblock
编译环境:mingw32-gcc.exe -pedantic -Wextra -Wall -std=c99 -c path
代码:

#include <stdio.h>

int main(){
    FILE *fin, *fout;
    fin = fopen("data.in","rb");
    fout = fopen("data.out","wb");
    int m, n;
    int line = 1;
    while(fscanf(fin, "%lld%lld", &n, &m) == 2){
        if(m == 0 && n == 0) break;
        double sum = 0;
        for(int i=n;i<=m;i++){
            //double j = i; //问题行
            sum += 1 / ((double)i * (double)i);
        }
        fprintf(fout, "Case %d: %.5f\n", line, sum);
        line++;
    }
    fclose(fin);
    fclose(fout);
    return 0;
}

问题:
当问题行也就是double j = i取消注释的时候,data.out就会有输出,而当问题行被注释上的时候,data.out就不会有输出,为什么呢?
这行不是毫无意义吗?

输入数据为:

2 4
65536 655360
0 0

关注 2 回答 1

crazycabbage 收藏了文章 · 2018-09-25

windows下使用Clion进行OpenCV开发环境搭建及排错指南

1. 前言

鉴于VS本身体积的庞大和项目依赖管理方式的不便,所以本文采用Clion通过CMake进行项目结构管理。

2. 准备工作

  • Windows 7 + (本文环境为 win7 x64)
  • Clion
  • MinGW(本文环境 tdm-gcc-5.1.0-3)
  • CMake (本文环境 cmake-3.7.2)
  • OpenCV(本文环境 opencv-3.4.1)

安装以上软件,基本都是一路 next ,最后做一下系统环境变量的配置(右击我点电脑->属性->高级系统设置->环境变量->系统变量->编辑Path,添加对应软件bin所在目录,中间分号分隔)。最后打开Clion,依次进入Setting->Build,Execution,Deployment->Toolchains,设置编译用工具链:

工具链设置

ps:编译好的OpenCV MSVC版及 MinGW版

  • MSVC版

    下载的 OpenCV 文件夹会有:

    • build (已编译好的库)
    • sources (源码)
使用 MSVC 的话,直接在

    build/x64/vc14

里面就有了,配置好路径即可使用
  • MinGW版

    OpenCV 没有为我们编译好 MinGW 版,所以只能用户自行编译,下面就是介绍 MinGW 版的编译流程以及中间可能遇到的错误的排除

    这里有需要的话可以直接下载使用我编译好了的 OpenCV-3.4.1 x64

3. 编译

  1. 解压OpenCV,然后在解压后source同级目录下创建一个新的mingw-build文件夹用于存放编译后的内容。

    (ps:这里如果你之前安装了Anaconda或者Python,请把这两个软件暂时从环境变量中删除,只是删除系统Path中的存在即可,不是卸载软件。原因是后面编译会有冲突)

  2. 然后这里选择用cmake图形化界面操作,比较直观一些,采用命令行注意下命令参数同理。source和binary目录按如下图选择:

    cmake

    其中:source目录对应你的opencv/sources目录,binary目录就是之前新建的那个mingw-build存放目录

    此处需要复制opencv->build->bin下的两个文件:opencv_ffmpegxxx.dll、opencv_ffmpegxxx_64.dll到opencv/sources/3rdparty/ffmpeg/目录下

  3. 选好目录,点击configure选择选择MinGW Makefiles,如上图所示。

注意:遇见红色之后再次点击Configure(等于是要点两次),等到所有列表变白,没有红色一片的时候才表示成功

  1. configure成功后点击generate
  2. 进入刚才创建的mingw-build目录,直接右键Git bash here(如果没装git windows,直接在cmd下进行),然后使用make命令进行编译:

    mingw32-make -j2 # 以2线程进行编译,这个数字根据自己硬件合理选择

    make_install

  3. 漫长的make到达100%后进行install:

    mingw32-make install

  4. 添加环境变量

    • 为系统变量 Path 添加 C:opencvmingw-buildinstallx64mingwbin
    • 添加 OpenCV_DIR (注意大小写,部分情况这个可以不加,不过我这里不加Cmake会报找不到OpenCV的错误),变量值为之前编译的build路径:C:opencvmingw-build (实质是告知Cmake 包含OpenCV库文件和include文件配置文件的OpenCVConfig.cmake所在)

opencv_dir

4. 调用

至此,OpenCV编译和相关设置已经完成,只需要正常调用即可使用。下面给一个简单摄像头调用示例:

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(detect)

set(CMAKE_CXX_STANDARD 11)

add_executable(detect main.cpp)

FIND_PACKAGE(OpenCV REQUIRED)
IF (OpenCV_FOUND)
    INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
    TARGET_LINK_LIBRARIES(detect ${OpenCV_LIBS})
ELSE (OpenCV_FOUND)
    MESSAGE(FATAL_ERROR "OpenCV library not found")
ENDIF (OpenCV_FOUND)

main.cpp

#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

int main() {
cv::VideoCapture capture(0);

if (!capture.isOpened()) {
    std::cout << "open camera error!" << std::endl;
    return -1;
}

cv::Mat frame;
while (1) {
    capture >> frame;
    if (frame.empty()) {
        std::cout << "capture empty frame" << std::endl;
        continue;
    }

    cv::Mat shrink_frame;
    cv::resize(frame, shrink_frame,
               cv::Size(frame.cols / 2, frame.rows / 2),
               0, 0, 3);

    cv::imshow("detect", shrink_frame);

    int key = cv::waitKey(1);
    if (key == 'q') {
        break;
    }
}
return 0;
}

detect

5. 编译常见错误排除

  • 多线程编译错误信息不明确

    表现:

    如果使用了多线程编译,导致错误,但是错误信息不明确,如:

     Makefile:161: recipe for target 'all' failed
     mingw32-make: *** [all] Error 2
     

    多线程错误

    解决:

    使用单线程make,以查看详细的错误提示,再根据具体情况解决

     mingw32-make
     
  • RC 错误

    表现:

     ... windres.exe: unknown option -- W ...
    

    或者:

     
     FORMAT is one of rc, res, or coff, and is deduced from the file name
     extension if not specified.  A single file name is an input file.
     No input-file is stdin, default rc.  No output-file is stdout, default rc.
     

    RC错误

    解决:

    在 cmake-gui 编译配置中:不勾选 ENABLE PRECOMPILED HEADERS,然后重新Configure-Generate-mingw32-make

  • sprintf instead use StringCbPrintfA or StringCchPrintfA 错误

    表现:

     ...opencv/sources/modules/videoio/src/cap_dshow.cpp...
     ... 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...
     

    sprintf错误

    解决:

    修改E:OpenCV_3.3.1opencvsourcesmodulesvideoiosrccap_dshow.cpp文件,在#include "DShow.h"这行的上面加一行#define NO_DSHOW_STRSAFE,如:

     #define NO_DSHOW_STRSAFE
     #include "DShow.h"
     

    然后重新Configure-Generate-mingw32-make

  • identifier ‘nullptr’ is a keyword in C++11 错误

    表现:

     D:\opencv-3.4.1\opencv-3.4.1\3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc:94:3: warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]
     return s == nullptr || *s == 0;
    
     D:\opencv-3.4.1\opencv-3.4.1\3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc: In function 'bool google::protobuf::internal::win32::{anonymous}::null_or_empty(const char_type*)':
     D:\opencv-3.4.1\opencv-3.4.1\3rdparty\protobuf\src\google\protobuf\stubs\io_win32.cc:94:15: error: 'nullptr' was not declared in this scope
        return s == nullptr || *s == 0;
            ^
     3rdparty\protobuf\CMakeFiles\libprotobuf.dir\build.make:412: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/stubs/io_win32.cc.obj' failed
     mingw32-make[2]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/stubs/io_win32.cc.obj] Error 1
     CMakeFiles\Makefile2:710: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all' failed
     mingw32-make[1]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all] Error 2
     Makefile:161: recipe for target 'all' failed
     mingw32-make: *** [all] Error 2        

    KEY错误

    解决:

    在 cmake-gui 编译配置中:

    勾选 ENABLE_CXX11

    然后重新Configure-Generate-mingw32-make

  • dnn build error (Assembler messages)

    表现:

     C:\Users\ADMINI~1\AppData\Local\Temp\ccHIQxbw.s: Assembler messages:
     C:\Users\ADMINI~1\AppData\Local\Temp\ccHIQxbw.s:21800: Error: invalid register for .seh_savexmm
     ...
     modules\dnn\CMakeFiles\opencv_dnn.dir\build.make:1741: recipe for target 'modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx512_skx.cpp.obj' failed
     mingw32-make[2]: *** [modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx512_skx.cpp.obj] Error 1
     CMakeFiles\Makefile2:4124: recipe for target 'modules/dnn/CMakeFiles/opencv_dnn.dir/all' failed
     mingw32-make[1]: *** [modules/dnn/CMakeFiles/opencv_dnn.dir/all] Error 2
     Makefile:159: recipe for target 'all' failed
     mingw32-make: *** [all] Error 2
     

    dnn error

    解决:

    在 cmake-gui 编译配置中:

    DCPU_DISPATCH 选空白

    然后重新Configure-Generate-mingw32-make

    (ps:这个错误在最新的OpenCV master分支已修复)

ref:

dnn build error via Mingw64

OpenCV使用CMake和MinGW的编译安装

查看原文

crazycabbage 收藏了问题 · 2018-02-28

在python中,如何将字符串'[1,2,3,4]'转化为列表[1,2,3,4]

如何将字符串'[1,2,3,4]'转化为列表[1,2,3,4]

crazycabbage 提出了问题 · 2018-02-09

解决Python在做条件比较的时候如何让其左右类型不同的时候报错或提示?

例如

mstr = '1'
mint = 1
if mstr == mint:
    print 'same'

可是这样是没有意义的,我想要的是

mstr = '1'
mint = 1
if int(mstr) == mint:
    print 'same'

但是我事先并不知道mstr是一个字符串,如何在不做实现类型判断的条件下,比较的时候报错或者提示呢?

关注 2 回答 1

crazycabbage 提出了问题 · 2017-05-16

解决使用Nginx搭建Typecho静态资源全部302跳转到404页面

使用该方法失败https://segmentfault.com/q/10...

不光静态资源302跳转,而且跳转到的404.html还无法加载,还有就是url后面的php去不掉,求大神解决!!!

nginx具体配置如下

80端口

server {
        listen  80;
        server_name crazyc.cn www.crazyc.cn;
        root /var/www/html/;
        #rewrite ^/(.*)$ https://crazyc.cn/index.php permanent;
        if ($ssl_protocol = "") {
            return 301 https://$server_name$request_uri;
        }
        if ($host != 'crazyc.cn' ) {
            return 301 https://crazyc.cn$request_uri;
        }
        error_log /logs/error.log;
        charset     utf-8;
        client_body_buffer_size                         512k;
        proxy_connect_timeout                           90;
        proxy_send_timeout                              90;
        proxy_read_timeout                              4000;
        proxy_buffers                                   32 4k;
        client_max_body_size 75m;
        # Load configuration files for the default server block.
        location / {
            index index.html index.php;
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php$1 last;
            }
        }


    }
    include vhost/*;

vhost/下的443端口

server {
    listen       443 ssl;
    server_name crazyc.cn www.crazyc.cn;
    ssl on;
    ssl_certificate /root/.acme.sh/crazyc.cn/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/crazyc.cn/crazyc.cn.key;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
    error_log /logs/error.log;
    error_page 404 = https://crazyc.cn/404.html;
    charset     utf-8;

    client_max_body_size 75m;
        # Load configuration files for the default server block.
        location ~ .*\.php(\/.*)*$ {
            root html;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_pass  127.0.0.1:9000;
            #include fastcgi.conf;
            #fastcgi_pass  127.0.0.1:9000;
        }
        access_log logs/yourdomain.log combined;
}

关注 2 回答 1

crazycabbage 提出了问题 · 2017-05-16

php7连接不上sqlite3

配置如下:
https://crazyc.cn/test.php

想请教一下这个位置是否是填写sqlite3的启动文件位置吗?

sqlite3.extension_dir=

数据库测试文件
https://crazyc.cn/sqlite.php

关注 2 回答 1

crazycabbage 回答了问题 · 2017-05-15

解决使用Typecho+Nginx+php-fpm加载css报错502

location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root /var/www/html;
        proxy_pass https://127.0.0.1:9000;
    }

改为

location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root /var/www/html;
        proxy_pass https://127.0.0.1;
    }

静态资源不走9000端口

关注 2 回答 1

crazycabbage 提出了问题 · 2017-05-14

解决使用Typecho+Nginx+php-fpm加载css报错502

网址如下:https://crazyc.cn/index.php

php-fpm使用默认配置,没有改过

nginx配置有两个
第一个

server {
        listen  80;
        server_name crazyc.cn www.crazyc.cn;
        rewrite ^/(.*)$ https://crazyc.cn permanent;
        error_log /logs/error.log;
        charset     utf-8;
        client_body_buffer_size                         512k;
        proxy_connect_timeout                           90;
        proxy_send_timeout                              90;
        proxy_read_timeout                              4000;
        proxy_buffers                                   32 4k;
        client_max_body_size 75m;
        # Load configuration files for the default server block.
        location / {
            root /var/www/html;
            index index.php index.html;
        }
        location ^~ /path {
                deny all;
        }

    }

第二个

server {
    listen       443 ssl;
    server_name crazyc.cn www.crazyc.cn;
    ssl on;
    ssl_certificate /root/.acme.sh/crazyc.cn/fullchain.cer;
    ssl_certificate_key /root/.acme.sh/crazyc.cn/crazyc.cn.key;
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers  HIGH:!ADH:!EXPORT56:RC4+RSA:+MEDIUM;
    error_log /logs/error.log;
    error_page 404 = https://crazyc.cn/404.html;
    charset     utf-8;

    client_max_body_size 75m;
        # Load configuration files for the default server block.
    location ~ \.php$ {
        root html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root /var/www/html;
        proxy_pass https://127.0.0.1:9000;
    }
}

如图所示,获取不到css,报错502,求大神指教
502

关注 2 回答 1

认证与成就

  • 获得 2 次点赞
  • 获得 47 枚徽章 获得 2 枚金徽章, 获得 18 枚银徽章, 获得 27 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-07-14
个人主页被 675 人浏览