genPogPerf

#!/usr/bin/perl

#usage: perl genPogPerf.pl outputPsaFileName cfgFilePath
#for example: perl genPogPerf.pl prd.txt pog.cfg
#Input file format: raw .psa file exported from Prospace software.
#     while all the fields are separated by comma: entry type,field1,field2,...
#Output format: rowid,required fields separated by comma. like
#Description: This script is used to pre-process the raw .psa file before loading in DataStage jobs.
# The script splits the file into several files based on the entry type (Planogram, Product, Fixture and Position).
#           All the other types of records will be discarded.  
# The pieces of smaller files will be further processed by the DataStage jobs and loaded into Database.

# TODO
# 1. Generate a product list
# 2. Generate the planogram records
# 3. Generate the fixture records
# 4. Generate the position records

use strict;
use File::Basename;
use File::Spec;
use File::stat;

# Config these parameters to generate expected number of records
my $numOfProducts=100;
my $numOfPlanogram=100;
my $numOfFixturePerPOG=50;
my $numOfPositionPerFixture=100;

# The length of DPCI before prefix with TGT
my $lengthOfDPCI=10;

# Expected number of mapping fields in config file
my $numOfPogCols = 5;
my $numOfFixCols = 12;
my $numOfPosCols = 17;
my $numOfPrdCols = 9;

my @dpciList=();

&initDPCIList();

# Check the input parameters

my $requiredParameterNumber = 2; # Please modify this parameter in case new parameter is added.
my $actualInputParameterNumb er = scalar @ARGV;
print "Input parameters: ", (join ' ', @ARGV), "\n" if($requiredParameterNumber == $actualInputParameterNumb er) or die "Required number of parameters: $requiredParameterNumber; Actual number of parameters: $actualInputParameterNumb er.";

# Check the files and directories
my $outputFile = shift;
#print "Input file: $outputFile\n" if(-r $outputFile) or die "The $outputFile is not readable. <$!>";
my $fileName = basename $outputFile;
print "Basename: $fileName\n";

my $cfgFile = shift;
print "Config File: $cfgFile\n" if (-r $cfgFile) or die "The $cfgFile is not readable. <$!>";


# Start - Read fields Mapping info from config file

my %typesMap = ();
my $type;

my (%pogMap, %fixMap, %posMap, %prdMap);
# Hash key: Record Type; Hash value: Reference of field mapping hash.
$typesMap{'Planogram'} = \%pogMap;
$typesMap{'Fixture'} = \%fixMap;
$typesMap{'Position'} = \%posMap;
$typesMap{'Product'} = \%prdMap;

open(FH_CONFIG, "<$cfgFile") || die "Unable to open the field map config file : $cfgFile <$!>";

while(<FH_CONFIG>) {
    chomp;
    next if /^#/;         # skip comments
    next if /^\s*$/;     # skip empty lines
if(/^\s*\[\s*(\w+)\s*\]\s*$/){# This is the record type block, like [Planogram]
$type = $1;
next;
}
    # Store field name as key, index as value.
if (/^\s*(\w+)\s*=\s*(\w+)\s*$/){ # Format: FieldName = Index
$typesMap{$type}->{$1} = $2;
}

close FH_CONFIG;
# End - Read fields Mapping info from config file


# Key columns:
# Planogram: PlanogramKey
# Fixture: FixtureName
# Position: DPCI
# Product: DPCI

# Open the files
open(FH, ">$outputFile") || die "Unable to open the file : $outputFile <$!>";

# Generate Products
&genProduct();

# Generate Planograms
&genPlanogram();

print "Start processing the file: $fileName..\n";


sub genProduct{
foreach my $dpci (@dpciList){
my @prd=();
my $randNum=0;
$prd[0]='Product';
foreach my $key (keys %prdMap){
$randNum = int(rand(100));
if($key eq 'DPCI'){
$prd[$prdMap{$key}]=$dpci;
}
else{
$prd[$prdMap{$key}]=$randNum;
}
}
my $product = join ',',@prd;
print FH "$product\n";
}

}
sub genPlanogram{
my $randNum=0;
for(my $i=0;$i<$numOfPlanogram;$i++){
my @pog=();
$pog[0]='Planogram';
my $pogNum=&prefixPOG($i);
foreach my $key (keys %pogMap){
$randNum = int(rand(100));
if($key eq 'PlanogramKey'){
$pog[$pogMap{$key}]=$pogNum;
}
elsif($key eq 'Name' || $key eq 'Description'){
$pog[$pogMap{$key}]="POG_".$pogNum;
}
else{
$pog[$pogMap{$key}]=$randNum;
}
}
my $planogram = join ',',@pog;
print FH "$planogram\n";
&genFixture();
}
}


sub genFixture{
my $randNum=0;
for(my $i=0;$i<$numOfFixturePerPOG;$i++){
my @fix=();
$fix[0]='Fixture';
my $fixtureName=&prefixFix($i);
foreach my $key (keys %fixMap){
$randNum = int(rand(100));
if($key eq 'FixtureName'){
$fix[$fixMap{$key}]=$fixtureName;
}
elsif($key eq 'FixtureType'){
$fix[$fixMap{$key}]=0;
}
else{
$fix[$fixMap{$key}]=$randNum;
}
}
my $fixture = join ',',@fix;
print FH "$fixture\n";
&genPosition();
}
}

sub genPosition{
my $randNum=0;
for(my $i=0;$i<$numOfPositionPerFixture;$i++){
my @pos=();
$pos[0]='Position';
my $randIdx = int(rand(scalar @dpciList))%(scalar @dpciList);
my $dpic=$dpciList[$randIdx];
foreach my $key (keys %posMap){
$randNum = int(rand(100));
if($key eq 'DPCI'){
$pos[$posMap{$key}]=$dpic;
}
else{
$pos[$posMap{$key}]=$randNum;
}
}
my $position = join ',',@pos;
print FH "$position\n";
}
}


print "Complete generating the psa file: $fileName.\n";



sub initDPCIList{
for(my $i=0;$i<$numOfProducts;$i++){
$dpciList[$i]=&prefixDPCI($i);
}
}

# Prefix the passed-in string
sub prefixDPCI{
my $str = shift;
if ($lengthOfDPCI - length($str) > 0) {    
$str = ('0' x ($lengthOfDPCI- length($str))).$str;
}
$str;
}

# Prefix the passed-in string
sub prefixPOG{
my $str = shift;
if (7 - length($str) > 0) {    
$str = 'P'.('0' x (6- length($str))).$str;
}
$str;
}

# Prefix the passed-in string
sub prefixFix{
my $str = shift;
$str = 'Fix'.('0' x (5- length($str))).$str;
$str;
}

sub trim{
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
各种安全相关思维导图整理收集。渗透步骤,web安全,CTF,业务安全,人工智能,区块链安全,数据安全,安全开发,无线安全,社会工程学,二进制安全,移动安全,红蓝对抗,运维安全,风控安全,linux安全.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值