KBEngine增加ThinkingData打点

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

Windows下的安装ThinkingData

首先根据他的文档,安装sdk和Logbus,他的原理是sdk写入到log文件,然后通过Logbus2来传送到TD(ThinkingData)服务器。

通过pip获取 Python SDK

pip install ThinkingDataSdk
pip install --upgrade ThinkingDataSdk

安装Logbus
这里省略了
我们来到logbug目录,修改conf下的daemon.json
这里的配置文件可以是这样的

{
    "datasource": [
      {
        "type":"file",
        "file_patterns": ["../assets/logbus/*.*"], 
        "app_id": "你的数数id", 
        "unit_remove": "day", 
        "offset_remove": 7,
        "remove_dirs": true,
        "http_compress": "gzip" 
      }
    ],
    "cpu_limit": 2, 
  
    "push_url": "https://后台的push地址.thinkingdata.cn"
}

这里的file_patterns,.表示logbus.exe的目录,我的log放在外面,所以是…,我把服务端的打点目录配置在了服务端脚本目录的logbus下。

在这里插入图片描述

这个文件就是服务端程序生成的打点文件了。

KBEngine配置

根据TD的官方文档,需要

current_directory = os.path.dirname(os.path.abspath(__file__))
LOG_DIRECTORY = current_directory +"/../../logbus"

from tgasdk.sdk import TGAnalytics, LoggingConsumer
te = TGAnalytics(LoggingConsumer(LOG_DIRECTORY))

这里运行后提示很多库找不到,这里我总结了下,有下面一些包
在这里插入图片描述

只要把python的包拷贝到kbe\res\scripts\common\Lib下就可以了。
(这些包在我们通过pip安装Logbus2的时候会有安装成功的路径,一般是位于:C:\Users\Administrator\AppData\Local里,其他的包也在这里)

然后我贴一个kbe的脚本

from tgasdk.sdk import TGAnalytics, LoggingConsumer
import os
import datetime
import time
import GameConfigs
import KBEngine
from KBEDebug import *

TIME_WRITE_FILE = 10    #10秒写一次文件

current_directory = os.path.dirname(os.path.abspath(__file__))
LOG_DIRECTORY = current_directory +"/../../logbus"
#DEBUG_MSG("dbg.ThinkingData :: init path :%s" % (LOG_DIRECTORY))

#下一次发送时间
nextsend = int(time.time())+ TIME_WRITE_FILE
#当前有几个发送
sendcount = 0

te = TGAnalytics(LoggingConsumer(LOG_DIRECTORY))


#distinct_id = "S1"
#account_id = "TE1"

properties = {
    #"#time":datetime.datetime.now(),
    # 设置这条event发生的时间,如果不设置的话,则默认是当前时间
    #"#ip":"192.168.1.1",
    # 设置用户的IP,tda会自动根据该IP解析省份、城市
    #"#uuid":uuid.uuid1(),#选填,如果上面enable_uuid开关打开,不需要填
    "Product_Name":"商124",
    "Price":324,
    "OrderId":"1234"
}


#打点事件
def AnalyseEvent(userid,eventName,prop):
    global sendcount
    # 上传事件,包含账号ID与访客ID
    try:
        prop["#time"] = datetime.datetime.now()
        prop["server"] = GameConfigs.SERVER_ID
        #te.track(account_id,eventName,prop)
        # 您也可以只上传访客ID
        # te.track(distinct_id = distinct_id, event_name = "Payment", properties = properties)
        # 或者只上传账号ID
        te.track(account_id = userid, event_name = eventName, properties = prop)
        
        sendcount = sendcount + 1
        DEBUG_MSG("dbg.ThinkingData :AnalyseEvent  %s" % (eventName))
    except Exception as e:
        #异常处理
        DEBUG_MSG("Error.ThinkingData :: %s" % (e))

def Flush():
    global sendcount,nextsend
    nowtime = int(time.time())
    if sendcount > 0 and nowtime > nextsend:
        te.flush();
        sendcount = 0
        nextsend = int(time.time()) + TIME_WRITE_FILE
        DEBUG_MSG("dbg.ThinkingData Flush .")


#AnalyseEvent("S1","test1",properties)


调用AnalyseEvent就开始打点,调用Flush立即写入log文件。这样如果启动了logbus程序,他就自动上报给TD了。

Centos下

我们下载Linux-amd64版本,然后把刚才windows的json配置文件覆盖,传到服务器。
我们先检测

$ ./logbus env

-bash: ./logbus: Permission denied
chmod -R 777
$ ./logbus env
6:34PM INF app_id [3fexxx] ok

给了权限,运行后提示app_id ok应该ok了,然后我们再运行start。

$ ./logbus start
6:38PM INF Current Version: 2.1.0.8
6:38PM INF app_id [114xx28f11] ok
6:38PM INF [localhost:21666] start daemon success, pid[1391]

成功了,下来就剩下调试了。

记得把logbus需要的库也传到对应的kbe服务端Lib目录下。
然后就可以上传服务端打点代码测试了。

我遇到了找不到zlib,于是重新安装了

yum install zlib-devel

然后把引擎重新make就可以了。

参考

https://docs.thinkingdata.cn/python_sdk_installation

https://docs.thinkingdata.cn/logbus2_installation.html

Logbus-ng-开源 Logbus-ng包含一组工具,可帮助开发人员在所有阶段进行日志分析:日志生成,收集,分发,存储和分析。 它是专为关键分布式系统中的现场故障数据分析而设计的 立即下载

相关推荐

bus hound log分析工具

分析bus hound的log,用于usb标准请求,mbim请求解析。

构建高效的日志分析系统:从数据采集到展示

日志分析在系统监控、故障排查和安全防护中起着重要作用。本文将探讨如何构建一个高效的日志分析系统,从数据采集到数据展示的全过程。

2301_82241352的博客 1418

Node.js内存溢出?一招搞定JavaScript heap out of memory错误(附永久配置方案)

本文深入解析Node.js内存溢出问题,提供从临时调整到永久配置的完整解决方案。重点介绍通过设置`max-old-space-size`参数和`NODE_OPTIONS`环境变量来扩展JavaScript堆内存限制,适用于Webpack、Vite等构建工具的大型项目场景,并涵盖Windows、Linux/macOS多平台配置方法。

cake8的博客 1057

后台守护进程的创建

后台守护进程的创建

Coolyqq的专栏 948

【网络协议】TCP的拥塞控制机制

前言 计算机网络中的带宽、交换节点中的缓存和处理机等,都是网络的资源,在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做拥塞。 所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载。要注意用拥塞控制与流量控制的区别,拥塞控制是一个全局性的过程,涉及到所有的额主机、路由器,以及与降低网 拥塞控制的算法有:慢开始、拥塞避免、快重传、快恢复四种。 慢开始和拥塞避免 发送方维持一个拥塞窗口的状态变量,其大小取决于网络的拥塞程度

兰亭风雨的专栏 1万+

青藏高原冻土数据实战:如何用QGIS分析1961-2020年冻土退化趋势(附完整操作步骤)

本文详细介绍了如何使用QGIS分析1961-2020年青藏高原冻土退化趋势,包括数据准备、预处理、时空分析和模型验证等全流程操作。通过TTOP模型和Stefan方程,揭示了冻土退化的空间差异和海拔依赖性,为环境研究提供科学依据。

weixin_29276847的博客 127

基于Python实现的停车场道闸管理系统

本文介绍了一种基于Python实现的智能化停车场道闸管理系统,该系统结合ESP32/ESP32-CAM硬件模块和SQLite3数据库技术,旨在解决传统人工管理效率低、易出错的问题。系统通过自动化道闸控制、实时车辆信息采集和数据处理等功能提升管理效率,并利用数据库实现车流量统计、收益分析等数据可视化功能。研究内容涵盖需求分析、硬件设计(ESP32主控+摄像头模块)、软件模块开发(Python+PyQt5界面)、系统测试优化及部署实施。系统通过Web视图展示统计图表,支持按月/年维度分析车流量与收益数据,为停车

毕业作品网站 2345

Agent本地部署教程详细步骤

在开始之前,你需要明确你要部署的Agent是什么。如果你需要部署其他Agent,请参考其官方文档调整步骤。

weixin_39673931的博客 2502

unity sdk(android)-ThinkingData统计平台接入

官方文档:https://www.thinkingdata.cn/manual.html 注意使用unity sdk最新版本,按官方文档接入 引入添加 ThinkingAnalytics GameObject,并设置 SDK 配置 Enable Log:是否开启日志,若开启,则会打印上报情况,以方便您的调试。您也可以在 Editor 模式下,检验事件上报是否正确,对于不符合条件的属性,会以warning日志显示在控制台中。 Network Type:设置上报数据到服务器的网络条件,默认...

小龙的博客 2838

5、AIX系统硬件管理与故障诊断全解析

本文全面解析了AIX系统的硬件管理与故障诊断方法,涵盖系统管理服务(SMS)的使用、设备兼容性配置、设备配置数据库结构、常用命令如cfgmgr、lsattr、smitty devices的操作详解,并深入介绍了错误日志管理机制,包括errdemon、errpt、errlogger等命令的应用。通过实际案例分析和流程图展示,帮助系统管理员掌握从问题怀疑到诊断执行再到日志清理的完整流程,同时提供注意事项与最佳实践,助力AIX系统的稳定运行与高效维护。

y2z3a4b5c的博客 62

uni-app - 刘海屏(Iphone X)底部横杠(——)白色区域块(安全距离处更改颜色)解决方案

场景:因为要做无tabbar页面,所以在配置文件中取消底部导航栏。取消后,iPhoneX(刘海屏)底部就出现如下图所示白色安全区域问题:这个问题,是因为uni-app默认会为iPhoneX(刘海屏)留出安全距离,这个安全距离的背景色就是白色。所以,如果你将页面颜色设置为其他颜色,就会与默认白色冲突。有2个不同的解决方案(原生占位),虽然原理是一样,但使用的场景不同,请根据您的需求来采纳。

🏆 前端领域优质创作者 1万+

Python的一些小问题记录

1.查看导入包的版本 上面是Linux的版本,如果是window版本print(tgasdk.__version__) __version__ 在__init__.py中如下设置 也可以查看所有的包信息比如 pip list 既可查看 Python的中央仓库https://pypi.org/project/ ...

zz_1111的博客 185

读懂 SAP S/4HANA 里的 SAP Fiori 架构:前端服务器、搜索链路、传统应用接入与内容组织全景解析

摘要:SAP Fiori架构并非简单的系统连接图,而是明确区分界面层与业务数据层的三层分工体系:用户交互层(浏览器与Fiori launchpad)、前端技术层(SAPUI5运行环境)和业务数据层(SAP S/4HANA后端)。这种分离实现了生命周期解耦,前端专注于统一体验治理,后端处理核心业务逻辑。值得注意的是,SAP Fiori front-end server本质仍是ABAP系统,负责UI技术组件运行。虽然SAP S/4HANA推荐嵌入式部署,但独立部署在多系统场景中仍有价值。典型Fiori应用通过O

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 179

ThinkingData接入Unity

ThinkingData(数数)是各个公司常用的一种用于打点统计数据的SDK。

m0_56305960的博客 578

【RH850/U2A】:HSM与APP通信(中断方式)

HSM与APP通信(中断方式)

1994

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

EventBus的简单实现与log日志的使用

compile 'org.greenrobot:eventbus:3.0.0' compile 'com.orhanobut:logger:2.1.1' public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceS

云卷云舒 707

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

分布式日志传输系统Databus(一)--系统介绍

Databus系统是微博DIP团队开源的分布式日志传输系统。它是一个分布式、高可用的,用于采集和移动大量日志数据的服务。它基于流式数据的简单而灵活的架构,具备健壮性和容错性,具有故障转移与恢复机制。它采用简单的可扩展的数据投递模型,允许用户自定义扩展传输组件。 主要特性返利网站 https://www.cpa5.cn/ All-In-One 所有的日志传输通道整合到一个系统,避免针对每种业务相应地定制一套日志传输组件,这样随着业务的增多,运维压力会剧增。 热加载 在JVM无需重启的情况下,可以添加、更新、.

nidongla的博客 827

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

宝马车型CAN Bus Log信息分析总结

转载请标明是引用于 http://blog.youkuaiyun.com/chenyujing1234  Log及分析请参考: http://www.rayfile.com/zh-cn/files/09227468-7723-11e1-872a-0015c55db73d/   最近在帮同事做宝马车型的CAN Bus Log信息进行分析,以找到各按钮的对应十六进制值。 现总结如下: 1、抓取Log方

chenyujing1234的专栏 2804

EventBus使用详解

EventBus是一个基于发布者/订阅者模式的事件总线框架。 发布者/订阅者模式,也就是观察者模式(定义了对象之间的一种一对多的依赖关系,当一个对象状态发生改变时,它的所有依赖者都会收到通知并自动更新)。在EventBus中,当发布者发布事件时,所有订阅该事件的事件处理方法将被调用。 EventBus的优点: 解耦和简化Activities, Fragments等组件以及后台线程之间的通信,分...

川峰的博客 2万+

正确使用日志的10个技巧

做一个苦逼的Java攻城师, 我们除了关心系统的架构这种high level的问题, 还需要了解一些语言的陷阱, 异常的处理, 以及日志的输出, 这些"鸡毛蒜皮"的细节. 这篇文章是JCP成员, Tomasz Nurkiewicz( [url]http://nurkiewicz.blogspot.com/[/url] )总结的10条如何正确使用日志的技巧(参见[url=http://nurkiew...

疯狂的菠菜 4436

用户行为数据分析的道、法、术、器、势

广义来讲,用户行为是指网站、APP、H5、小程序等线上平台,以及零售商铺、产品使用环境等所有场景下,用户与企业以及企业提供的产品的交互情况。而通常所说的用户行为分析,则指的是利用大数据分析方法,通过对用户线上行为数据、用户属性数据的收集,存储,分析,以找到相关规律,然后通过A/B测试等方式,探究有效方案的方式。在大数据分析技术发展成熟之前,对于用户行为的分析就从没有停止过,不过原有的分析方式是是在...

https://www.thinkingdata.cn 4308

艰难的起步

今天第一次写博客,以前学过很多的东西但总是为保存问题烦恼。今天开通博客就是为了更好地有助于学习,以后一定会好好加油,在学术上进步进步。

Thinking data 544

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 411

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 235

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 427

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 208
上一篇: Roslyn(三)运行脚本并引用DLL在不同上下文(AssemblyLoadContext - ALC)中的访问问题
下一篇: C#写一个UDP程序判断延迟并运行在Centos上
Thinbug
博客等级 码龄22年 2万+粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinbug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值