2019年10月26日 星期六
[JAVA] IBM MQ PUT / GET Example
// need to compile with com.ibm.mq.jar and j2ee.jar
import java.io.*;
import com.ibm.mq.*;
public class MQTest
{
private static String qMngrSrtr = "";
private static String replyQueue = "";
private static String requestQueue = "";
private static String hostName = "";
private static int port = 0;
private static final String channel = "SYSTEM.AITP.SVRCONN";
private static final String FILEPATH = "C:\\Test\\";
MQQueueManager qManager;
public void init(String environment)
{
try
{
qMngrSrtr = "MBKCQ04";
replyQueue = "MFS.MBK.REPL06";
requestQueue = "MBK.MFS.REQS01";
hostName = "10.41.72.69";
port = 1544;
MQEnvironment.hostname = hostName;
MQEnvironment.channel =- channel;
MQEnvironment.port = port;
qManager = new MQQueueManager(qMngrSrtr);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void putAndGetMessage(String path, String filename)
{
try
{
int openOptions2 = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
int openOptions3 = MQC.MQOO_INPUT_SHARED | MQC.MQOO_FAIL_IF_QUIESCING;
MQQueue mqReply = qManager.accessQueue(replyQueue, openOptions3, null, null, null);
MQQueue mqReqest = qManager.accessQueue(requestQueue, openOptions2, null, null, null);
MQMessage putMessage = new MQMessage();
putMessage.format = MQC.MQFMT_STRING;
putMessage.messageFlags = MQC.MQFMT_REQUEST;
putMessage.replyToQueueName = replyQueue;
putMessage.replyToQueueManagerName = qMngrSrtr;
String msg = readFile(path + filename);
putMessage.writeString(msg);
MQPutMessageOptions pmo = new MQPutMessageOptions();
pmo.options += MQC.MQPMO_NEW_MSG_ID | MQC.MQPMO_SYNCPOINT;
mqReqest.put(putMessage, pmo);
qManager.commit();
mqReqest.close();
MQMessage getMessages = new MQMessage();
getMessages.correlationId = putMessage.messageId;
MQGetMessageOptions gmo = new MQGetMessageOptions();
gmo.options += MQC.MQGMO_SYNCPOINT | MQC.MQGMO_WAIT;
gmo.maatchOptions = MQC.MQMO_MATCH_CORREL_ID;
gmo.waitInterval = 30000000;
mqReply.get(getMessages, gmo);
int a = getMessages.getDataLength();
String retrivedMsg = formatXmlString(getMessages.readStringOfCharLength(a));
System.out.println(retrivedMsg);
writeFile(path + filename + ".out", retrivedMsg);
mqReply.close();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
qManager.disconnect();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public static String readFile(String filename)
{
BufferedReader br = null;
try
{
br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "utf-8"));
StringBuffer sb = new StringBuffer();
String tmp = null;
while(true)
{
tmp = br.readLine();
if(tmp == null)
{
break;
}
sb.append(tmp.trim());
}
return sb.toString();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
br.close();
}
catch(Exception e)
{
}
}
return "";
}
public static void writeFile(String filename, String msg)
{
BufferedWriter br = null;
try
{
br = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "utf-8"));
br.write(msg);
br.newLine();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
br.close();
}
catch(Exception e)
{
}
}
}
public static String formatXmlString(String s)
{
StringBuffer sb = new StringBuffer();
try
{
char[] arr = s.toCharArray();
boolean quoteOpenFlag = false;
int arrowOpenFlag = -1;
boolean dataFlag = false;
boolean escapeFlag = false;
boolean firstArrowFlag = true;
boolean tagOpenFlag = false;
char prevC = '\0';
for(char c:arr)
{
if(c=='<')
{
if(!quoteOpenFlag)
{
if(prevC=='>')
{
dataFlag = true;
}
}
escapeFlag = false;
}
else
{
if(!quoteOpenFlag && prevC=='<' && c!='/')
{
if(firstArrowFlag)
{
firstArrowFlag = false;
}
else
{
sb.append("\n");
}
for(int i=0;i<arrowOpenFlag;i++)
{
sb.append("\t");
}
sb.append("<");
}
if(c=='>')
{
if(!quoteOpenFlag)
{
}
sb.append(c);
escapeFlag = false;
}
else if(c=='"')
{
if(!escapeFlag)
{
quoteOpenFlag = !quoteOpenFlag;
}
sb.append(c);
escapeFlag = false;
}
else if(c=='/')
{
if(!quoteOpenFlag && prevC=='<')
{
arrowOpenFlag--;
if(tagOpenFlag)
{
tagOpenFlag = false;
sb.append(prevC);
sb.append(c);
if(!dataFlag)
{
sb.append("\n");
for(int i = 0;i<arrowOpenFlag;i++)
{
sb.append("\t");
}
}
}
else
{
sb.append("\n");
for(int i = 0;i<arrowOpenFlag;i++)
{
sb.append("\t");
}
sb.append(prevC);
sb.append(c);
}
dataFlag = false;
}
escapeFlag = false;
}
else if(c=='\\')
{
escapeFlag = true;
sb.append(c);
}
else
{
if(!quoteOpenFlag && prevC=='>')
{
dataFlag = true;
}
if(!quoteOpenFlag && prevC=='<')
{
arrowOpenFlag++;
tagOpenFlag = true;
}
sb.append(c);
escapeFlag = false;
}
}
// end if
prevC = c;
}
return sb.toString();
}
catch(Exception e)
{
e.printStackTrace();
}
return "";
}
public static void main(String[] args)
{
MQTest test = new MQTest();
test.init();
test.putAndGetMessage(FILEPATH, "in.txt");
}
}
2019年10月12日 星期六
MAC OS INSTALL php intl extension
Go to https://php-osx.liip.ch
Choose your php version (e.g 7.2)
Copy command
Open terminal
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.2
// this will install php under /usr/local
cd /usr/local/php5-7.2.21-20190811-210031/lib/php/extensions/no-debug-non-zts-20170718
sudo cp intl.so /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20170718/intl.so
Restart apache web server
Good luck
Choose your php version (e.g 7.2)
Copy command
Open terminal
curl -s https://php-osx.liip.ch/install.sh | bash -s 7.2
// this will install php under /usr/local
cd /usr/local/php5-7.2.21-20190811-210031/lib/php/extensions/no-debug-non-zts-20170718
sudo cp intl.so /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20170718/intl.so
Restart apache web server
Good luck
2019年9月1日 星期日
Samsung 電池較正 (已測試S2和NOTE 3)
1. 撥號*#0228#
2. 按QUICKSTART (電量可能會大減10-20%,建議電量在80-100%時才試)。
3. 重覆以上步驟2 - 3次,見電量沒有大減便OK。
2. 按QUICKSTART (電量可能會大減10-20%,建議電量在80-100%時才試)。
3. 重覆以上步驟2 - 3次,見電量沒有大減便OK。
2019年5月25日 星期六
[kof98ol] 拳皇98OL噩夢第27章攻略
第27-1關
重點:
前排盧哥和傑斯奇數回合會使出必殺,阿修則每回合使出必殺。建議先打盧哥因他回血能力較低。
重點:
前後各一個無界,實力不高。兩個無界都是每隔一個回合出一次必殺。
注意無界復活後攻擊力會大大提升,建議各格鬥家滿怒,用普攻打死他。當他復活變成石像時則連放必殺和普攻,盡量一口氣打死石化無界。
注意無界復活後攻擊力會大大提升,建議各格鬥家滿怒,用普攻打死他。當他復活變成石像時則連放必殺和普攻,盡量一口氣打死石化無界。
重點:
4關之中最難的一關。4個BOSS每回合都會使出必殺,當中以假ZERO和海德攻擊力最高。有練盧哥的話通關不難,但3星很難。
當海德或假ZERO其中一個死後,另外一位就變成了每隔一個回合才出一次必殺。建議把無名留到最後,他雖然每回合出必殺,但傷害不高。
當海德或假ZERO其中一個死後,另外一位就變成了每隔一個回合才出一次必殺。建議把無名留到最後,他雖然每回合出必殺,但傷害不高。
第27-4關
重點:
只有齋祀一人,每回合都會使出必殺,優先攻擊「攻」格鬥家;如我方沒有「攻」格鬥家則攻擊我方攻擊力最高的那位格鬥家。
我的戰隊中盧哥攻擊力最高。
我的打法是只派出技和防格鬥家,齋祀每回合的必殺都會打在盧哥身上。而盧哥的必殺能回血,加上其他隊友的努力,十多個回合便3星了,呵呵。
2019年4月4日 星期四
[Synology] PHP Mysqli no such file or directory
PHP Mysqli no such file or directory
I am using apache server 2.2 + php 5.6
In my php file,
the line
$conn = new mysqli($servername, $username, $password);
causes error "no such file or directory ".
Here we go
1. Login your DSM
2. Open web station > php settings
3. Choose a php profile > Edit > Select tab "Core" > Search for "socket"
4. Set the socket value of mysqli to "/run/mysqld/mysqld10.sock"
5. Click OK
2019年3月23日 星期六
Taobao Lesson 3
- 開店 4 steps
- 裝修
- 宣傳
- SEO
- 一人一店
- TMALL > 收到邀請才能開店
- 個人店 VS 企業店
- 認証 (回鄉証 / 護照)
- 長期冇生意 > 舖名KEEP多一周但別人無法找到你 > 一周後關店
- 店內貨物類型要一致 > 方便TB為你分類
- 物流安排 > 內地設倉 / 自己帶上去
- 保証金可以拿回嗎? SEARCH "保証金解凍"
- 店評級︰紅心 > 鑽石 > 藍冠 > 皇冠
- 發佈物品有限制 > 有扣分制
- 閑魚市場
- 千牛 > 開店必裝
- 營銷套餐
- 按地區打折
- 裝修
- 宣傳
- SEO
- 一人一店
- TMALL > 收到邀請才能開店
- 個人店 VS 企業店
- 認証 (回鄉証 / 護照)
- 長期冇生意 > 舖名KEEP多一周但別人無法找到你 > 一周後關店
- 店內貨物類型要一致 > 方便TB為你分類
- 物流安排 > 內地設倉 / 自己帶上去
- 保証金可以拿回嗎? SEARCH "保証金解凍"
- 店評級︰紅心 > 鑽石 > 藍冠 > 皇冠
- 發佈物品有限制 > 有扣分制
- 閑魚市場
- 千牛 > 開店必裝
- 營銷套餐
- 按地區打折
2019年3月17日 星期日
Taobao Lesson 2
- install app
- tb app > 右上角 > 選香港區
- 右下角 > 我的淘寶
- search result > filter
- select an item > scroll picture > select spec > final price
- customer review / comment
- 向客服 check inventory
- 加入購物車 vs 立即購買
- click 店舖名稱 > browse all products of that shop
- history > 我的TB > 足跡
- fill in phone nuber, addr
- try submit order
- 集運 > 運費計算
- delete account
取消支付宝账户与淘宝账户绑定的条件(以下条件只要有一项是符合的,则无法解绑):
1、满足以下任意一项,淘宝账户将永久不能与支付宝账户解绑:
1)有发布过商品的行为。
2)有发布的历史库存宝贝。
3)历史上有创建过店铺。
4)淘宝账户永久不能使用,无法进入支付宝绑定设置页面。
5)支付宝绑定设置页面没有解绑或更换账户的按钮。
2、满足以下任意一项,淘宝账户暂时不能解绑,需完成后续操作再进行解绑。
1)提示支付宝账户尚未激活,需补全支付宝账户信息后再操作解绑。
2)提示存在不可用的拍卖押金,需在拍卖押金解冻后再操作解绑。
3)提示有进行的交易,需交易完结或关闭后再操作解绑。
4)提示有签约供应商身份,需先接触供应商身份后再操作解绑。
5)提示有签约支付宝代扣协议,需先解绑协议后再操作解绑。
解绑操作流程:
1、我的淘宝——设置——支付宝绑定设置。
2、点击解绑或更换账户,若绑定状态没有显示 解绑或更换账户,则该淘宝账户不允许和支付宝解绑。
3、若页面提示需要校验,点击 发送验证码,去邮箱中接收验证码,即可解绑成功。若无法通过验证,请点击 获取解决方案 寻求帮助或点此联系淘宝客服协助您解绑。
- TB取消綁定ALIPAY
- buyup, 多寶, 神州
- tb app > 右上角 > 選香港區
- 右下角 > 我的淘寶
- search result > filter
- select an item > scroll picture > select spec > final price
- customer review / comment
- 向客服 check inventory
- 加入購物車 vs 立即購買
- click 店舖名稱 > browse all products of that shop
- history > 我的TB > 足跡
- fill in phone nuber, addr
- try submit order
- 集運 > 運費計算
- delete account
取消支付宝账户与淘宝账户绑定的条件(以下条件只要有一项是符合的,则无法解绑):
1、满足以下任意一项,淘宝账户将永久不能与支付宝账户解绑:
1)有发布过商品的行为。
2)有发布的历史库存宝贝。
3)历史上有创建过店铺。
4)淘宝账户永久不能使用,无法进入支付宝绑定设置页面。
5)支付宝绑定设置页面没有解绑或更换账户的按钮。
2、满足以下任意一项,淘宝账户暂时不能解绑,需完成后续操作再进行解绑。
1)提示支付宝账户尚未激活,需补全支付宝账户信息后再操作解绑。
2)提示存在不可用的拍卖押金,需在拍卖押金解冻后再操作解绑。
3)提示有进行的交易,需交易完结或关闭后再操作解绑。
4)提示有签约供应商身份,需先接触供应商身份后再操作解绑。
5)提示有签约支付宝代扣协议,需先解绑协议后再操作解绑。
解绑操作流程:
1、我的淘宝——设置——支付宝绑定设置。
2、点击解绑或更换账户,若绑定状态没有显示 解绑或更换账户,则该淘宝账户不允许和支付宝解绑。
3、若页面提示需要校验,点击 发送验证码,去邮箱中接收验证码,即可解绑成功。若无法通过验证,请点击 获取解决方案 寻求帮助或点此联系淘宝客服协助您解绑。
- TB取消綁定ALIPAY
- buyup, 多寶, 神州
訂閱:
文章 (Atom)




