UiPath流程中输入点号

做UiPath Level 3 – Advanced Training的Generate Yearly Report任务,设计完Upload Year Report工作流后按常规做单元测试,手动设定了输入参数。

但当跑测试流程里,发现到了输入文件路径活动时,到了扩展名的点字符时流程就卡住了。

开始时以为是字符转义问题,在输入参数的文件名字符串里加上了转义符,但是还是卡在输入文件名环节。折腾了老半天,百思不得其解。

后来无意中发现自己的输入语言是中文,但是输入法是转到了英文输入。难道是这个问题导致的,于是把语言改到中文,重新测试,一次就跑通了。

把Generate Yearly Report整个工作流打包上传到UiPath网站,隔了几分钟就邮件通过说评估通过了。登上网站,很Happy的下载了完成任务的证书。

从这次培训学习中得到的几个经验教训:
1. 注意在开发及测试环境在英文环境;
2. 使用IE浏览器会少很多麻烦;
3.有时候电脑速度太快会使流程捕捉不到页面元素,可以在活动中设置Delay。

解决UiPath REFramework的Cannot assign from type ‘UiPath.Core.QueueItem’ to type ‘System.Data.DataRow’问题

在UiPath Academy做Level 3 – Advanced Training的指定练习Calculate Client Security Hash,使用UiPath的Robotic Enterprise Framework(REFramework)框架,照着向导资料设计好所有工作流,兴冲冲的运行时却抛出了Cannot assign from type ‘UiPath.Core.QueueItem’ to type ‘System.Data.DataRow’ in Assign activity ‘End Process’.错误,流程直接退出。

重复检查,确认自己已经把所有的变量与参数类型均正确设置,但是死活就跑不过去。反复折腾,后来用一个非常诡异的方法解决。

在Main流程下打开End Process,把End Process活动下的赋值TransactionItem=Nothing的Nothing去掉,保存流程。重新设置一次TransactionItem=Nothing,然后保存。

再试试运行流程,神奇地能够正常工作。

BTW:此设置对Cannot assign from type ‘UiPath.Core.QueueItem’ to type ‘System.String’ in Assign activity ‘End Process’.错误同样有效。

安装Oracle JET Core Extension for VSCode

2019年5月20日,Oracle发布了JET 7.0.1版本,同时释出了JET Core Extension for VSCode Beta版。作为VS Code重度用户的俺来说,当然是第一时间下来尝鲜了。

因为是Beta版,该扩展并没有正式发布在VS Code Marketplace,需要在OTN下载手动安装。俺在MAC下用Chrome下载后,发现扩展程序安装文件扩展名为zip,VS Code并没不能辨认,尝试把文件扩展名手工改为VSIX,但在MAC下VS Code还是没能认出是扩展程序(ps:大概是文件权限的问题,但是找到了新方法,就没有去试)。

无意中发现使用Safari在OTN下载文件是正常的VSIX扩展名,后来在Oracle社区发现有人在讨论此问题,说Chrome会自动把文件扩展改为zip,换成Firefox或Edge下载就正常。

打开VS Code,点开左边扩展图标,点右上角的 “…” 打开更多操作菜单,选择“从VSIX安装…”。

 

选择下载的oracle-jet-core-0.5.0.vsix文件,安装JET Core Extension for VSCode。好了,现在可以体验JET的智能提醒和自动完成功能了。

解决Jdeveloper 12C(12.2.1.3.0) CreateProcess error=206问题

已经有阵子没用Jdev写东西了,因一个客户项目,周末打开Jdeveloper写了个Web Service客户端的Java示例程序。驾轻就熟从WSDL生成客户端代码,写了Impl实现,运行测试却碰到了问题,系统提示了以下文件名或扩展名过长的错误信息:

The target .jpr cannot be started because an exception was thrown: java.io.IOException: Cannot run program “C:\Java\jdk1.8.0_121\bin\javaw.exe” (in directory “C:\\src\”): CreateProcess error=206, The filename or extension is too long

仔细看了下错误信息,大概是因为库文件的原因,以下列方式解决:

打开项目属性窗口,把自动引用的JAX-WS Client和JAX-WS Web Service删除掉。

菜单Tools—–>Manage Libraries…

点击New,新建一个名为“ My JAX-WS Client ”用户库,点击“Add Entry”,选择
<JDev安装目录>\wlserver\server\lib\weblogic.jar
<JDev安装目录>\oracle_common\modules\internal\features\jrf_wlsFmw_oracle.jrf.wls.classpath.jar
点OK确认。

重复上面操作,新建立名为“ My JAX-WS Web Service ”的用户库,加入
<JDev安装目录> \wlserver\server\lib\weblogic.jar
点击OK确认。

回到项目属性窗口,加入刚创建的两个用户库,再次Run JAVA代码,成功运行。

后来空了查了下Oracle Support,发现这个问题是Jdeveloper 12.2.1.3.0的一个bug,官方已经有补丁程序释出,具体可以参考Running a Java Class Fails With “CREATEPROCESS ERROR=206” (Doc ID 2330982.1)。

设置Ubuntu Server 18.04自动更新

厌倦了登录服务器经常提示有N个补丁需要更新,需要重新启动之类的,可以通过服务器自动更新解决。

1.安装自动更新支持包

安装unattended-upgrades包。

sudo apt install unattended-upgrades

2.配置自动更新

编辑配置文件

sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

该文件前半段长这样子:

最重要的是把“updates”这一行注释去掉。

“${distro_id}:${distro_codename}-updates”;

建议把自动清理不用内核文件的行也同时打开。

Unattended-Upgrade::Remove-Unused-Kernel-Packages “true”;
Unattended-Upgrade::Remove-Unused-Dependencies “true”;

自动重启及时间看个人喜好打开。

3.启用自动更新

sudo vi /etc/apt/apt.conf.d/20auto-upgrades

按需要修改内容

APT::Periodic::Update-Package-Lists “1”;
APT::Periodic::Download-Upgradeable-Packages “1”;
APT::Periodic::AutocleanInterval “3”;
APT::Periodic::Unattended-Upgrade “1”;

4.确认是配置是否起作用

用dry run方式看自动更新配置是否起作用

sudo unattended-upgrades –dry-run –debug

如何从Oracle Container Registry下载Docker镜像

习惯于从Oracle的github站点下载dockerfile,修改后生成自己所需的镜像。但是最近有个项目,自己生成镜像文件后发现磁盘居然满了,连容器都没法跑起来。查了一下镜像占用的磁盘空间,一下子被数字吓到了。


$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE


1c98d8816e19 About an hour ago 3.57GB


localhost/oracle/soasuite 12.2.1.3 078faf1a877d 7 days ago 13.5GB


oracle/fmw-infrastructure 12.2.1.3 d37d67bf7981 8 days ago 5.56GB


oracle/database 18.3.0-ee d9b807a62d9b 2 weeks ago 18GB

被动辄10几个G镜像,这容器怎么跑。但是为了项目可以快速测试,也只能想办法减少镜像的尺寸。看到github上有人吐槽这个问题,O记的工程师建议是去Oracle Container Registry上pull镜像。

去https://container-registry.oracle.com看了一眼,发现同样的image确实要小很多。于是从善如流,决定pull镜像下来用。

先login到站点


docker login container-registry.oracle.com

输入用户名密码后,运行pull镜像命令,连续试了几次都是报了镜像not found: does not exist or no pull access的错。

查了老半天原因,最后发现原来坑爹的O记是需要在Oracle Container Registry的页面上接受协议,才能有下载到镜像。

登录网站,在你需要下载的镜像页面点击协议,在弹出窗口接受协议,然后页面会显示当前用户协议的有效时间。再到系统里用命令pull镜像,正常下载。

Yum Update Error after upgrade CentOS from 6 to 7

一无聊又搞事情,把一台CentOS机器直接从6升级到7,结果升级后要安装东西时,用yum update出现了错误,显示python(abi) = 2.6 is needed by (installed) python-argparse-1.2.1-2.el6.centos.noarch。

放狗搜了半天,试了几种方法还是搞不好。仔细分析具体信息,应该是系统残留的CentOS6包导致的,删除所有的el6包解决问题。

rpm --erase --nodeps $(for pkg in $(rpm -qa | grep '\.el[56]\.' | grep -v kmod | grep -v kernel); do rpm -q $pkg --qf '%{NAME} ' ; done)

解决MacOS xcrun: error: invalid active developer path, missing xcrun的问题

最近开始把VS Code做为主力代码编辑器,结果在MAC上每次打开总提示

Git installation not found.

没有就装呗,打开Console,Git显示

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

重装Xcode command line tool解决

xcode-select  --install

Oracle 12C静默删除CDB

Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。

在安装或者维护数据库的过程中,可以通过DBCA对CDB进行静默删除(别问我为什么知道:))。步骤如下:

#dbca -silent -deleteDatabase -sourceDB CDB数据库名

耐心等待至命令完成,正常情况下会出现以下提示:

 
Connecting to database
4% complete
9% complete
14% complete
19% complete
23% complete
28% complete
47% complete
Updating network configuration files
52% complete
Deleting instance and datafiles
76% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/condb0.log" for further details.

Oracle Database 12.2.0.1静默安装

一客户升级系统,准备把数据库升级到12C,操作系统切换到Redhat 7,而他们家系统管理员不但不熟Oracle数据库,还不熟Linux。只好请客户开了个Teamview连接,远程帮他们安装系统。因为连Linux都是供应商帮忙装了,没有装X window,只能选择静默安装了。开搞。

安装依赖包

要说安装包最方便的方式,莫过于利用Oracle官方的源了。

# cd /etc/yum.repos.d

# wget http://yum.oracle.com/public-yum-ol7.repo

#vim public-yum-ol7.repo

把文件按如下修改:

[ol7_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=https://yum.oracle.com/repo/OracleLinux/OL7/latest/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=0
enabled=1

然后运行oracle-database-server-12cR2-preinstall安装依赖包。

#yum install oracle-database-server-12cR2-preinstall

如果有问题可以采用以下方式。

#vim req-rpm.txt

在文件输入以下包名。

 

binutils
compat-libcap1
compat-libstdc++-33
gcc
gcc-c++
glibc
glibc-devel
ksh
libgcc
libstdc++
libstdc++-devel
libaio
libaio-devel
libXext
libXtst
libX11
libXau
libxcb
libXi
make
sysstat
libXmu
libXt
libXv
libXxf86dga
libdmx
libXxf86misc
libXxf86vm
xorg-x11-utils
xorg-x11-xauth

保存退出后,运行以下命令安装。

#yum install `awk ‘{print $1}’  req-rpm.txt`

配置系统参数

#vim /etc/sysctl.conf

增加以下内容:

–kernel parameters for 12C installation

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

使用内核参数生效

#/sbin/sysctl -p

#vim /etc/security/limits.conf

–shell limits for users oracle 12C

oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768

#cat /etc/selinux/config

确认SELINUX设置如下:

 

SELINUX=permissive

setenforce Permissive

#service iptables stop

#chkconfig iptables off

创建oracle用户和组

#groupadd -g 54321 oinstall

#groupadd -g 54322 dba

#groupadd -g 54323 oper

#useradd –u 54321 –g oinstall –G dba,oracle,oper

#passwd oracle

#mkdir –p /u01
#chown oracle:dba /u01
#chmod 775 /u01

安装数据库

#su oracle

#unzip linuxx64_12201_database.zip

在解压文件夹的/database/response目录下,复制db_install.rsp文件到/home/oracle/oinstall/oracle/database目录下。

#vim db_install.rsp

oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true

#./runInstaller -silent -responseFile
/home/oracle/oinstall/database/db_install.rsp

完成数据库软件安装,切到root用户,运行以下脚本。

# /u01/app/oraInventory/orainstRoot.sh

#/u01/app/oracle/product/12.2.0.1/dbhome_1/root.sh

完成数据库软件安装。

静默创建数据库

类似上面步骤,复制dbca.rsp到当前目录。

#vim dbca.rsp

gdbName=orcl
sid=orcl
databaseConfigType=SI
createAsContainerDatabase=false
templateName=General_Purpose.dbc
sysPassword=oracle12C
systemPassword=oracle12C
emConfiguration=NONE
datafileDestination=/u01/oradata
recoveryAreaDestination=/u01/recovery_area
storageType=FS
characterSet=AL32UTF8
sampleSchema=TRUE

#export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1

#export PATH=$ORACLE_HOME/bin:$PATH.

#dbca -silent -createDatabase -responseFile dbca.rsp

完成数据库创建。

创建监听器

类似上面步骤,复制netca.rsp到当前目录。

#netca -silent  -responseFile netca.rsp

完成安装后,验证监听器状态正常。

#lsnrctl status