2020/11/11

用批处理自动重启被停止的Windows服务

Windows Server上某个服务无故被停止,在尚未找出原因前,先写个bat批处理脚本,让它定期检查服务是否停止了,若是,就启动它。

直接上源代码:

@echo off

sc query LeadService | find "STATE" | find "RUNNING"

if %errorlevel% == 1 (

  echo The service is stopped.

  net start LeadService

  echo %date% %time% Restart >> c:\LeadService.log

) else (

  echo The service is running.

  echo %date% %time% Do Nothing >> c:\LeaderService.log

)

2020/10/23

Tiptop成本结算,销货成本金额为0,全部到了结存调整的原因

 一个做贸易的新子公司,Tiptop ERP跑axcp500计算成本后,在axct100查询库存成本,只要是出货的料号,其销货成本金额ccc62都为0,而结存调整金额ccc93的值正好是销货成本。



起初以为是对应仓库是非成本仓,去axci500查看,没问题;

又查看asmi300的单别设定,也是计算成本的;

在asmq202里查看tlf资料,发现成会异动成本tlf21是null值;

一点头绪都没了,只能研究axcp500.4gl了,千辛万苦终于找到了原因,居然是成本阶的基础资料没维护,赶紧去axci020维护再执行axcp500就OK了。

哎……

希望你没犯这个低级的错误!Good luck!!!

2020/10/09

Tiptop ERP处理aimq102(img_file)负库存问题


原因:作完aimp620后又异动了库存,但没重新执行aimp620,而进行了成本结算。

处理方法:

  1. 通过SQL语句找到imk_file中imk09出现负库存的年月;
  2. 执行aimp620,条件选项中的重计年度、期别选择步骤1中找到的年月的前一月份;
    如果年月过于久远,从GUI界面上逐月执行就太累了,可从命令行(CLI)执行,传入相关参数就好。例:

2020/09/20

揪出挖矿病毒xmrig

朋友说他公司有台Windows服务器,最近慢的出奇,让我去帮他看看。

起初以为是硬件问题,不过打开Task Manager一看,惊呆了,其中一个进程的CPU占用率达到了93%,而进程并不是系统相关程序,而是此前就已出名的挖矿病毒xmrig啊。


2020/09/14

使用SVN管理Tiptop源代码

Tiptop服务器端默认是使用最原始的复制源代码文件加上当天日期后缀的方式来管理源代码版本的,这对于一两个人的小团队可能还可以应付,团队稍微再大一点,就很容易引起版本管理混乱、代码被覆盖等问题。

我的做法是使用SVN来管理,具体到服务器端是VisualSVN Server,客户端是Tortoise SVN (Windows平台)或Rabbit VCS (Linux平台)。

2020/08/16

Ubuntu 20.04 LTS 上使用小鹤音形

自从使用了小鹤音形,就爱不释手了,Windows和安卓手机都安装了,前几天把生产环境从Win切换到Ubuntu 20.04后,只能用小鹤双拼还是有点不习惯,今天终于折腾出了,以此文记录。

首先安装fctix:
sudo apt install fcitx 
sudo apt install fcitx-rime

安装完成后先重启电脑吧。

然后到http://flypy.ys168.com/下载 小鹤音形挂接第三方之MacOS文件到本地,将上述文件解压,将文件夹下的rime文件夹复制到~/.config/fcitx/下,若已存在rime文件夹,先将其删除;

最后命令行输入im-config,将默认的输入工具由iBus切换为fcitx,再重启。

这时候就能用control+space来切换到rime了,如果不能,先去fcitx中添加rime,并选择schema为小鹤音形喔。

如果已经有Windows下保存的自定义用户词库,可以将其内容复制到~/.config/fcitx/rime/flypy_user.txt中,再restart下fcitx就好了。

参考链接:小鹤音形论坛


2020/08/15

ThunderBird使用MagicWinmail LDAP联系人

 最近将生产力工具从Win10转到Ubuntu 20.04了,故邮件客户端使用了ThunderBird,原来使用Outlook时,直接访问MagicWinmail的LDAP很方便(https://www.winmail.cn/docs/outlookldap/),可官方没提供如何从ThunderBird连接,经过一番尝试,终于可以访问了,而且比Outlook还方便,写邮件时就能自动查找联系人了。

方法大致如下:

1. 新增LDAP Server;

2. 按下图填写信息,Name随便填,hostname是MagicWinmail的地址,Port Number是MgaicWinmail服务器中设定的端口,最让我头疼的是Base DN和Bind DN,其中Bind DN中的uid=后填写自己的邮件账号,用于LDAP验证,在首次查询时会要求填写密码。

ps: Base DN和Bind DN信息是借助ApacheDirectoryStudio找到的。

2020/07/29

Install .net Core 3.x SDK on Raspberry Pi 3


  1. 更新系统到最新 ps:系统大版本保证为stretch或更高
    sudo apt-get update
    sudo apt-get upgrade
  2. 下载32位SDK源
    网址:https://dotnet.microsoft.com/download/dotnet-core/3.1
    可以在下载网页中找到direct link,去Pi里用wget下载
  3. 安装
    在pi用户的当前目录下创建文件夹并解压
    mkdir dotnet-arm32
    tar zxf dotnet-sdk-3.1.102-linux-arm.tar.gz -C $HOME/dotnet-arm32 (注意文件名因版本号不同会不同)
  4. 设定环境变量
    export DOTNET_ROOT=$HOME/dotnet-arm32
    export PATH=$PATH:$HOME/dotnet-arm32
  5. 用dotnet --info确认是否安装成功
  6. 设定开机自动注册环境变量
    编辑"~/.profile"文件,加入第4步中的内容。

参考来源:edi.wang

2020/06/29

C#命名规则和编码规范

  • 用Pascal规则来命名属性、方法、事件和类名
  • 用Camel规则来命名成员变量、局部变量和方法的参数
  • 不要将常量或者只读变量的变量名全部大写,而使用Pascal规则来命名
  • 接口的名称一般以大写I作前缀
  • 自定义的属性以Attribute结尾
  • 自定义的异常以Exception结尾
  • 类的命名。用名词或名词短语来命名类名
  • 方法的命名。一般将其命名为动宾短语
  • 局部变量的名称要有意义
    不要直接用用i,j,k,l,m,n,x,y,z等做变量名,但for循环除外
  • 代码分块
    所有的成员变量声明在类的顶端,用一个换行把它和方法分开。同时可以使用成对的#region...#endregion标记,方便折叠。
  • 布尔型变量或者方法一般可以用is、can、has或者should做前缀。如,isFinished, canWork等。
  • 判断条件是一个布尔变量时不要使用==进行条件判断
  • 慎用缩写
    变量名是一个单词的尽量不要缩写,多单词组成的变量名可适当缩写。
  • 在类的顶部声明所有的成员变量,静态变量声明在最前面
  • 方法的书写规范
    如果一个方法超过25行,就需要考虑是否可以重构和拆分成多个方法。方法命名要见名知意,好的方法名可以省略多余的注释。方法功能尽量单一。

摘自:https://www.jianshu.com/p/dc26cb8ffcb9 只保留了认同的内容,部分不认同所以删除了。

2020/06/16

Tiptop建立Oracle数据库表

Tiptop ERP使用过程中可能出现系统预设的数据库表不存在的问题,例如今天遇到的问题就是各个程序都有的Action【相关文件】上传时,提示“上传失败”,经查是gcb_file在当前营运中心所在的Oracle User中不存在。

我曾试图打开p_zta直接按【录入】建表,但只能以表名只能以tc_开头,显然不符合要求,再考虑从Oracle端建表,也失败了。

原来是要通过SQL脚本在p_zta中建立,具体步骤如下:
  1. 以Tiptop用户身份登录Linux Terminal,键入命令:export TOPLINK=test,它的作用是表名不会再以tc_开头,且非致命性错误不会继续跳出;

2020/05/08

During 和 While 的用法总结

最近做英语测试时,下面这题总是做错,搞不清楚During和While的区别,每次靠刷题死记硬背。


终于,脑袋突然开窍,应该去网上找找相关的课程嘛,果然……

2020/04/26

EFGP更换已结案流程的附件

OA/BPM系统(Easyflow GP)的流程都跑完了,用户发现上传的附件是错误的,因为流程会更新Tiptop ERP系统的数据,所以不能重新跑流程。

那只能在Server端做替换了,方法如下:

2020/04/23

简单的大猫Big Cats分类知识点

为了学英语,整理了猫科动物的相关信息,记录一下。

中文 英文 外貌特征 分布地区
猎豹 cheetah /ˈtʃiːtə/ 黑色“泪痕”
实心斑点
非洲中南部
tiger 斑马纹 南亚、东南亚以及西伯利亚地区
lion 唯一雌雄两态
唯一群居的大猫
非洲中南部
美洲虎(豹) jaguar /ˈʤæˌgwɑɚ/ 环形斑纹中间有黑点,像玫瑰 南美 中美
leopard /ˈlɛpɚd/ 环状斑纹
体色多变,甚至纯黑
非洲、西亚和东亚
云豹 clouded leopard 云朵状斑纹 亚洲东南部
美洲狮
(美洲金猫)
cougar /ˈkuːgɚ/
puma /ˈpuːmə/
无花纹 美洲大陆
雪豹 snow leopard 白毛黑斑
无吼啸能力
中亚高海拔地区

来源:知乎

2020/04/21

Tiptop 4gl 程序读取格式化的文本文件

有时候,某些Tiptop参数不用用户去改动,在数据库中增加表或字段有点复杂,而且占用资源,所以可以考虑用配置文件的方式来处理。

此处的配置文件用竖线(|)将数据分开,保存在Server上。

程序示例如下:

2020/04/17

Tiptop ERP出货单价修改

Tiptop ERP的出货单作业(axmt620/axmt820)中有一个【单价】的action,它的使用时机点是什么呢?
【单价】action使用时机点有两个如下:
1.当执行订单变更作业变更订单单价时,可以透过该action去更改 出货单的单价。
2.若出货单价是在出货单已经确认且也做过帐时,便可以透过该 action去变更出货单价。

2020/04/07

Tiptop ERP:消耗性料件(Back Flush)与发料前调拨料件有何不同?

共同点:两者皆属有发料批量的料件,表现在生产现场设置的WIP 仓,由仓库转拨至WIP。

差异点:
A)消耗性料件(Backflush),由完工入库后才产生工单领料单。(有时差性),一般为低成本的料件。比如:螺丝、PE膜和涂料等。


B)发料前调拨料件(例:桶/卷……),调拨完即应依工单扣除WIP 仓的库存数量(工单在制材料)。一般为成本高或主要零组件。
C)在完工入库时,将同时检查“发料前调拨”料件的齐料套数,但消耗性料件为事后产生的发料单,故完工入库并不检查。

2020/03/27

Tiptop库存数量不相符问题处理

最近有同事反馈料号AXS1134的库存数量与实际有差异,且aimq102单身与其“异动明细”中推算的结果也有差异。


分别从数据库抓取该料及对应仓库的imk_file与该料的tlf_file值,进行对比发现该料在2018年4月的某笔工单发料单中,单据扣账日期是4月底,但实际扣账日期tlf07是18/05/12,成本计算时根本没把这笔单据算进去,导致了差异。具体是怎么发生的已无法回溯,应该是生产单位发现需过账资料,请成会开账到了那张单据的过账日,可成会再关账时,没有执行aimp620对库存进行重计,也没有跑axcp500重算成本。
那如今怎么处理差异呢?

2020/03/23

Tiptop财务答疑:年结可不可以还原

Tiptop ERP设计的逻辑是每月需做月结,年底还需做年结。

有小伙伴问,年结做过了,发现错了,还可不可以还原?或者需要做什么处理? 



2020/03/19

Tiptop财务答疑:更改会计科目别

随着对Tiptop系统使用的深入,如果前期规划不当,会遇到将独立帐户改为统制科目的情形,那么能改吗,如果能改,要注意些什么呢?



当然可以改,但做好确认。以下举例说明:
2019年的独立科目1403,到了2020年需改为统制科目140300,下设明细科目140301和140302。
可以利用『独立科目转为明细科目作业(aglp209)』将科目1403的余额转到2020年的明细科目下。
但需以下几点:

2020/03/18

Tiptop作业apmt800所维护的交期具体是什么意义?

采购单交期确认资料维护作业(apmt800 )的作用是维护PO的交期,那它的目的是什么呢?



上述交期对应采购订单单身的两个字段:
【 最近确认交货日期(pmn36)】和【最後一次到厂日期(pmn37)】
目的是可以与采购单上原始的交货日、到厂日做比对。
以了解厂商原始交货的日期,与后来实际的交货日期的出入。
可应用到的报表为『采购单跟催表列印(apmr503)』及『采购单交货数量确认表列印(apmr505)』。

2020/03/17

Isolation和Quarantine有什么区别?

最近新型冠状病毒(COVID-19)蔓延全球,大家都在讨论这个问题,在中文里同样都是隔离,英文中却不同,那么Isolation和Quarantine有什么区别呢?个人卓见,和朋友分享。


Isolation和Quarantine都是用于阻止或限制疾病传播的公共卫生措施。

2020/03/16

两阶段调拨在Tiptop中的应用

Tiptop系统中除了一般的调拨单,还有两阶段调拨,作业编号aimt325/aimt326。

图片来源:piqsels.com
那么为什么需要两阶段调拨?
 > 如果仓库调拨有时差性或距离很远时,即需要两阶段调拨,例:台湾 -> 大陆,深圳 -> 昆山。

两阶段调拨是如何做的?
 > 由拨出仓库确认後, 会产生在途仓, 再由拨入仓库确认,仓库存才由在途仓转入拨入仓,且拨出数量与拨入数量已可能不同。

我们如何能知道在途量?
 > 因为在途量也必须设定仓库,所以重库存量即可知道在途量。

2020/03/12

低阶码在Tiptop系统中有何用途?

在系统中,低阶码(ima16)没有实际的管理用途,只是供系统计算MRP 及成本系统才会用到,其由系统自动计算并非人工维护。
原由:MRP的BOM须由上往下算,净需求才会正确,而成本 BOM 须由下往上算,单位成本才会正确。

2020/03/10

Tiptop的工单展开选项如何运用?

BOM示例图:

如下是三种展开方式对应的工单开立结果和实际需求。

工单展开选项 (1).不展开 (2).不展开,但自动开立工单 (3).展开
开立A 料号工单时 (1).产生一张A工单, 备料为BCD (2).产生一张A工单, 备料为BCD, 且自动再开立一张B工单, 备料为EF (3).产生一张A工单, 备料为CDEF
实际需求 (1).分阶开立工单者 (2).由电脑自动产生子工单 (3).一条龙生产者

2020/03/09

EFGP/BPM启用用户密码策略

鼎捷的OA系统EasyFlow GP或称BPM,默认是不启用用户密码规则的,这样有很大的资讯安全风险,用户名与密码相同是超级弱密码了吧?

该怎样启用常见的密码策略呢?

  1. 定位至系统安装路径,我的是D:\EFGP;
  2. 用文本编辑器打开安装目录下的文件jboss-4.2.3.GA\NaNa\conf\NaNaEJB.properties;
  3. 定位至文件尾部,找“密碼政策”或“ForceChangePassword”字眼;
  4. 按注释根据公司的资讯安全策略修改文件,并保存;
  5. 停止EFGP服务,可以用Ctrl+C强行停止CMD窗口;
  6. 删除安装目录下EFGP\jboss-4.2.3.GA\server\default\下的data、tmp和work三个目录;
  7. 在到数据库将以下9个表mails OJB_DLIST OJB_DLIST_ENTRIES OJB_DSET OJB_DSET_ENTRIES JMS_MESSAGES JMS_TRANSACTIONS JMS_ROLES JMS_USERS进行TRUNCATE TABLE;
  8. 启动EFGP服务。

这样就完成了。

说明一下,第2步中的jboss-4.2.3.GA,是因为我的EFGP对应的jboss版本是这个,如果你的不同,请自行更改,我也只在这个版本测试过,其他版本是不是这样,不清楚喔,抱歉。

2020/03/06

通过注册表修改Office共享文件的默认程序

今天想要将制作好的Word文件直接以PDF通过邮件共享给同事,但点击后自动打开了Foxmail,而不是Outlook。可能是以前安装Foxmail在先,去控制面板修改Email的默认程序为Outlook也无效。

我的解决办法是到注册表(regedit),定位到以下位置:

2020/03/05

Tiptop: 多角贸易的“正抛”和“逆抛”有什么区别?


单据(出货单/出货通知单)抛转方向与订单相同,则为正抛;
单据(出货单/出货通知单)抛转方向与订单相反,则为逆抛。


直接看多角销售出货逆抛的图例:

2020/03/04

从数据库后台修改Tiptop资料可以吗?

有人问:若『一般凭证维护作业(aglt110)』中凭证日期做错了,而且凭证已过帐,是否可直接在数据库Update日期?

当然不可以直接更新,应将凭证过帐还原,从程序界面更改日期,再重新过帐, 否则科目统计资料会混乱。

2020/03/03

SSH免密登录远程主机


设定方法:
  1. 在当前主机上用ssh-keygen生成密钥,遇到录入信息的,一律回车即可。
  2. 在当前主机上用“ssh-copy-id 远程主机用户名@远程主机名”将公钥复制到远程主机,此时会要求提供远程主机上的用户对应的密码。其实就是将第1部中产生的公钥复制到远程主机用户的家目录下的.ssh目录中,文件名为authorized_keys,该文件若存在,则追加内容。
这样就完成了,后续即可从当前主机免密登录到远程主机了。

整个过程似乎与现实生活中的想法有点不同。其原理我大致理解如下:
  1. 当前主机向远程主机发起请求,远程主机检查是否在authorized_keys文件中存有公钥;
  2. 若检查出有公钥,远程主机将用公钥加密一个随机字串,作为口令发给本地主机;
  3. 本地主机用私钥将口令解密后发回远程主机;
  4. 远程主机验证口令后决定是否同意登录。

Tiptop中替代料的简要说明

替代料在Tiptop中从以下几个方面应用:

  • 在BOM 建立取/替代关系(取代:新旧料, 替代:主副料) 
  • 采购单输入时,可采买取/替料 
  • 工单备料时, 可选用取/替料 
  • MRP 时, 先考虑BOM 用料, 再考虑取/替代料 
  • 工单领用时, 可选用取/替料

2020/03/02

Tiptop财务模块中核算项(异动码)的设定与应用

异动码又称核算项,其优点包含:
 (1) 系统提供四组异动码可作为细项立冲、统计、分析…等灵活的弹性应用
 (2) 四组异动码皆为独立 KEY 值, 所以每一组可个别列印。
 (3) 对於金额较庞大之费用科目, 可依类型再作分类查核.例如广告费、交际费…
其缺点是登录传票作业较繁复。

那么Tiptop是如何利用系统功能来避免其缺点呢?一起来看其设定与应用方法,流程如下:

step 1.『agli102』科目资料明细维护:设定科目名称与相关基本资料。
step 2.『agli1021』异动码类型维护作业:设定异动码类型与其资料的来源,资料来源包含基本资料﹑预设值﹑自行输入。
step 3.『agli1022』科目异动码类型设定作业:设定该科目所属的异动码类型。 记得选择对应核算项的控制方式(字段aag151),否则分录底稿无法带出相关设定。
step 4.『agli120』分录底稿异动码弹性设定维护作业:便於分录底稿产生时,自动带出此预设值。

2020/02/15

Tiptop 4gl中如何调用Oracle存储过程

最近想用Tiptop程序直接调用Oracle的存储过程,从网上查资料发现了识途老驴的博客,测试后发现并不奏效,可能是版本不同吧,无法考证。

于是又查看了Genero的官方文档,曰:
To execute the stored procedure, you must include the procedure in an anonymous PL/SQL block with BEGIN and END keywords.
于是将4gl代码改造如下,即可执行。
     BEGIN WORK
    #PREPARE id1 FROM "CALL .pro_F001(?,?)"    #识途老驴的方法
     PREPARE id1 FROM "begin pro_F001(?,?); end;" #官方方法
     EXECUTE id1 USING l_str1 IN, l_str2 OUT   #传入所需参数
     PREPARE id2 FROM "begin pro_F002(); end;" #无需参数者
     EXECUTE id2
     COMMIT WORK
如果有参数同时具备传入/传出的参数,则为INOUT。