三不朽

使用Scrapyd+ScrapyWEB可视化管理Scrapy爬虫

Publish: December 10, 2020 Category: 运维 No Comments

本文主要介绍怎样安装和配置scrapyd以及使用scrapyd部署和运行scrapy爬虫。

安装

 scrapyd依赖一下库
Python 2.7 以及更高版本
Twisted 8.0 以及更高版本
Scrapy 1.0 以及更高版本
six

如何安装Scrapyd取决于您使用的平台。一般的方法是从PyPI安装它:

#使用pip
pip install scrapyd

#使用conda
conda install -n py37 scrapyd

默认情况下scrapyd的配置文件在各个平台的安装位置如下,ubuntu下新版本安装后不再生成配置文件需要自行创建。

/etc/scrapyd/scrapyd.conf (Unix)
c:\scrapyd\scrapyd.conf (Windows)
/etc/scrapyd/conf.d/* (in alphabetical order, Unix)
scrapyd.conf
~/.scrapyd.conf (users home directory)

阅读剩余部分...

python包管理工具conda中安装 dbtuils失败处理

Publish: December 9, 2020 Category: 小技巧 No Comments

方式一:手动安装conda找打不的包
conda多个channel中都找不到dbutils则需要手动来安装。

conda install -c cefca -n py37 dbutils
#如果没有找到,需要手动安装
cd third_lib/DBUtils-2.0
python setup.py install

找到dbutils的pip仓 DBUtils · PyPI 下载源码。找个setup.py存放目录,解压之后在conda的激活环境中执行

python setup.py install

执行conda list 可以查看是否安装成功

方式二:使用pip安装conda中找不到的包

直接使用pip来安装,本身两者是不冲突的,直接执行

pip install dbuitls

ubuntu环境使用包管理利器conda管理Python虚拟环境

Publish: December 8, 2020 Category: 数据分析 No Comments

conda安装:

首先是安装conda,anaconda是一个全的,Miniconda只包含python和conda,在下面的链接中找到对应的linux发行版的下载链接。

wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh

然后执行

bash Anaconda3-2020.11-Linux-x86_64.sh

其中会让你阅读license和配置安装路径,默认是PREFIX=/root/anaconda3。之后等待一段时间以后就是

conda基本使用:
创建一个python3.9的环境

# 创建一个名为python39的环境,指定Python版本是3.9(不用管是3.9.x,conda会为我们自动寻找3.9.x中的最新版本
# 如果提示 `-bash: conda: command not found` 刷新下当前环境执行如下命令  `source /root/.bashrc`
conda create --name py39 python=3.9

阅读剩余部分...

Inflxudb2 任务使用简介之1.0版本中连续查询如何转换为任务

Publish: December 1, 2020 Category: 编程,运维 No Comments

influxdb1.x版本中支持的CQs(连续查询)在influxdb2.x中被task取代,全新定义了一套新的规则,我们暂且称之为任务规则。
如果你是从1.x版本中迁移数据,可以直接将1.x中的CQs直接转换成task来执行比如我之前的一段CQs:

create continuous query flow_rx_cq on multiwan 
begin  
    select sum(value) 
    into "multiwan_inf"."autogen"."flow_rx_cq_result" 
    from multiwan_raw_rx 
    group by time(30m), flashid,imei,imsi,iccid 
end

转换之后对应的是

from(bucket: "multiwan/")
  |> range(start: -3d)
  |> filter(fn: (r) => r._measurement == "multiwan_raw_rx")
  |> filter(fn: (r) => r._field == "value")
  |> aggregateWindow(every: 1m, fn: sum)
  |> set(key: "_measurement", as: "flow_rx_cq_result")
  |> to(
    org: "example-org",
    bucket: "multiwan/flow_rx_cq"
  )

上面的命令是如下意思:
在multiwan的bucket中,创建一个连续查询结果存放在multiwan_rx_cq_result中,数据来源是multiwan_raw_rx 每一分钟执行一次计算value字段的累计结果值。
在命令行中执行

使用raw Flux创建一个任务

influx task create --org my-org - # <return> to open stdin pipe


options task = {
  name: "flow_rx_task_result",
  every: 6
}

# <ctrl-d> to close the pipe and submit the command 按ctrl+d 关闭管道并提交

自行构建并使用Jitsi-Meet SDK artifacts/binaries

Publish: November 20, 2020 Category: 编程 No Comments

正常来说无需自己编译sdk,使用官方提前编译好的sdk即可。

下面是从我的demo中摘出来的gradlepei'zhi
app中的build.gradle

plugins {
    id 'com.android.application'
}
    
android {
    compileSdkVersion 30
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.evenvi.jitsimeets1"
        minSdkVersion 26
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

    implementation ('org.jitsi.react:jitsi-meet-sdk:2.+') { transitive = true }
}

项目中的build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

首先,请确保正确设置您的开发环境。

关于依赖项的说明:除了SDK之外,Jitsi还为Jitsi Maven存储库发布了一些SDK依赖项的二进制Maven工件(否则无法公开获得)。当您计划使用从源代码构建的SDK时,您可能会使用比用于创建二进制SDK工件的源代码版本新的(或至少是不同的)源代码版本。 因此,项目中将需要的依赖项也可能与Jitsi Maven存储库中发布的依赖项不同。这可能会由于不可用的依赖关系而导致构建问题。


阅读剩余部分...