12/13/2017

Axapta : Axapta กดปุ่มแล้วให้ใน Gride ไป Select แถวแรกเสมอ เพื่อใช้งานแถวแรกเป็นตัวหลัก

Axapta : Axapta กดปุ่มแล้วให้ใน Gride ไป Select แถวแรกเสมอ เพื่อใช้งานแถวแรกเป็นตัวหลัก

Code
  1.        *_ds.getFirst(1, false);
  2.         *_ds.refresh();
  3.         *_ds.reread();
  4.         *_ds.research();

เช่น
  1.        InventJournalTrans_ds.getFirst(1, false);
  2.         InventJournalTrans_ds.refresh();
  3.         InventJournalTrans_ds.reread();
  4.         InventJournalTrans_ds.research();

11/24/2017

Ubuntu : Ubuntu Remote จอใหญ่แล้วต้องเลื่อนจอเอง

Ubuntu : Ubuntu Remote จอใหญ่แล้วต้องเลื่อนจอเอง
เดิมใช้โปรแกรม xtightvncviewer ซึ่งไม่มี Option auto scale จอ

ให้เปลี่ยนไปใช้โปรแกรมใหม่ ชื่อ realvnc
Download ได้ที่
https://www.realvnc.com/en/connect/download/viewer/linux/

- ถอด โปรแกรมเดิมออกก่อน
- ติดตั้งโปรแกรมใหม่
- เรียกใช้ด้วยคำสั่ง vncview เหมือนเดิม
ก็จะเห็นหน้าจอเต็มจอ ถ้าจอใหญ่กว่าเช่น AIO

11/10/2017

PHP : PHP อ่านไฟล์ jpg ใน Folder มาแสดง

PHP : PHP อ่านไฟล์ jpg ใน Folder มาแสดง

  1. $dir = "Ams_Delete/".$DepRun."/";
  2. foreach(glob($dir.'*.jpg') as $file) {
  3.     //print $file . "\n";
  4.     $ShowImage  = $ShowImage."<br><a href=".$file."  target="."_blank"."> <img src=".$file." width="."500"." height="."400"." alt="."Fire!"."></a>";
  5. }


https://stackoverflow.com/questions/8682206/retrieve-the-list-of-alla-jpg-file-of-a-directory

11/08/2017

Axapta : Axapta Join InventTable แสดงข้อมูลในหน้า Onhand

Axapta : Axapta Join InventTable แสดงข้อมูลในหน้า Onhand
1. ลาก Table InventTable ไปเป็น Data Sources แล้วกำหนด Properties
JoinSource : InventSum
LinkType : InnerJoin
2. แก้ Classes InventDimCtrl_Frm_OnHand
Method : modifyQuery
  1. FormDataSource InventTable_DS
  2. ;
  3. QueryBuildDataSource    qbsInventLookup;
และ Code ส่วนนี้ไว้ล่างสุด
  1.    if(InventTable_DS)
  2.     {
  3.         qbsInventLookup = query.dataSourceName(InventTable_DS.name());
  4.  
  5.         //filter current company language
  6.         /*qbr = SysQuery::findOrCreateRange(qbsInventLookup, fieldnum(TIDInventLookup, LanguageId));
  7.         qbr.value(queryValue(CompanyInfo::languageId()));
  8.         */
  9.         //qbsInventLookup.addGroupByField(fieldNum(SCI_InventSumLookUp, ItemName));
  10.         //qbsInventLookup.addGroupByField(fieldNum(TIDInventLookup,NameAlias));
  11.         //qbsInventLookup.addDataSource(fieldNum(SCI_InventSumLookUp, ItemName));
  12.         qbsInventLookup.orderMode(OrderMode::GROUPBY);
  13.         //qbsInventLookup.addSelectionField(fieldnum(SCI_InventSumLookUp, ItemName));
  14.         qbsInventLookup.addSortField(fieldnum(InventTable, ItemName));
  15.         //qbsInventLookup.addGroupByField(fieldnum(SalesLine,ItemId));
  16.  
  17.     }


3. ที่ Form
Method : executeQuery แก้
  1. element.inventDimSetupObject().modifyQuery(inventSum_DS,inventDim_DS,InventTable_DS);

4. ลาก Field จาก Data Sources InventTable ที่ต้องการแสดงเช่น ItemName ไปใส่ใน Form
 
 
 https://community.dynamics.com/ax/b/hellodax/archive/2015/06/19/join-itemname-from-ecoresproducttranslation-and-search-name-from-inventtable-to-onhand-form-for-search-matter

10/31/2017

Server HP :: HP Use iLo Port

Server HP :: HP Use iLo Port
1. ต่อสาย Lan เข้า Port iLo ด้านหลังจะมีเขียนว่า iLO และต่อเข้ากับ Switch ที่ต้องการใช้งาน เช่นวง 2
2. Boot เครื่องแล้วกด F10 เพื่อเข้า Config IP และ Password ตามรูป Config IP ไว้แล้วจะแสดง ว่าเข้าผ่าน IP นี้ ตามรูป
3. เลือก Perform Maintenance ตามรูป
4. เลือก iLO Configuration
5. Menu ด้านซ้าย เลือก Standard Network Settings
แล้วกำหนด IP
6. Menu ด้านซ้าย เลือก User Accounts ตั้ง รหัสผ่าน กด Apply กด Exit
7. Reboot เครื่อง
เข้าใช้งาน ใส่ User Name และ Password ที่ตั้งไว้

ไว้ดู Log ดูการทำงานของเครื่อง และ อื่น ๆ

Server HP :: Gen8 Server HP Firmware Update เช่น HP ProLiant DL160 Gen8

Server HP :: Gen8 Server HP Firmware Update เช่น HP ProLiant DL160 Gen8
Gen8 ใช้แผ่นเดียวกัน
Gen9 ใช้แผ่นต่างหาก

สิ่งที่ต้องมี
1. ไฟล์แผ่น Firmware (หาใน Web ยังไม่ได้ ของจาก HP) เขาจะ Upload file แล้วส่ง Link มาให้ ขนาดไฟล์ 5 - 6 G
2. ทำ USB Boot โดยใช้โปรแกรมของ HP
https://support.hpe.com/hpsc/swd/public/detail?swItemId=MTX_360731071b404454b454390208

ขั้นตอน DL160 Gen8
Firmware ณ ปัจจุบัน เป็น วันที่ 12/14/2012
1. Boot Server ด้วย USB กด F11 Boot Menu ตามรูปด้านบน
2. กด 3 เพื่อ Boot เข้า USB
3. เลือก Automatic Firmware Update Version Gen8.0 แล้วกด Enter
4. รอจนกว่าจะ Update เสร็จ Step 1 --> 3


 5. ขึ้นหน้า Please wait, analyzing system.... รอประมาณ 30 นาที ถ้าไม่ Reboot Auto ให้เรา Reboot เครื่องเองเลย

ดูผลการ Update วันที่จะเปลี่ยนไป
08/02/2014




การ Update นี้มีผล Update หลาย ๆ อย่าง ตามรูป

Ubuntu : Ubuntu Image Resize. On terminal

Ubuntu : Ubuntu Image Resize. On terminal
1. Install software
  1. sudo apt-get install imagemagick


2. Use Command. The command mogrify overwrites the original files with the resized images:
  1. mogrify -resize 50% *.jpg      # keep image aspect ratio
  2. mogrify -resize 320x240 *.jpg  # keep image aspect ratio
  3. mogrify -resize 320x240! *.png # don't keep image aspect ratio
  4. mogrify -resize x240 *.png     # don't keep image aspect ratio
  5. mogrify -resize 320x *.png     # don't keep image aspect ratio


https://askubuntu.com/questions/1164/how-to-easily-resize-images-via-command-line

Firefox :: How can I make Firefox remember my proxy's username and password?

How can I make Firefox remember my proxy's username and password?
1. Browse to about:config in Firefox
2. Click on "I'll be carefull, I promise!"

3. Search signon.autologin.proxy and network.websocket.enabled in the Search Input Box then change their values as follow:

signon.autologin.proxy=true
network.websocket.enabled=false

4. Restart Firefox, input user name and password for your proxy and click Remember.

https://superuser.com/questions/379160/how-can-i-make-firefox-remember-my-proxys-username-and-password

PfSense : Limit Download Speed IP By PfSense

PfSense : Limit Download Speed IP By PfSense
1. สร้าง Aliases ที่ Firewall --> Aliases

2. สร้าง Traffic Shaper ที่ Firewall --> Traffic Shaper --> Limiters
DownloadLimit , UploadLimit

3. สร้าง Schedules ที่ต้องการให้ทำงาน (ต้องทำเป็นเดือน ต่อเดือนทุกเดือน)
ที่ Firewall --> Schedules เลือกวันทำงาน และตั้งเวลา 8.00 - 11.59, 13.00 - 20.59
4. สร้าง Rules สำหรับใช้งาน ที่ Firewall --> Rules --> Lan
ตั้ง ชื่อ , Source เลือก Aliases ที่ต้องการใช้กับ Rules , Destination เป็น DMZ net , Schedule ที่ตั้งชื่อไว้ , IN/Out Pipe

ต่อไปถ้ามี IP ไหน Download เยอะ ๆ ใช้ Traffice Lan หนัก ๆ ตลอดเวลา ก็ Add เข้า Aliases

https://www.youtube.com/results?search_query=limit+size+bandwidth+per+ip+pfsense+schedule+time

Ubuntu : Ubuntu Server 16.04 /dev/sdb1 Errors

Ubuntu : Ubuntu Server 16.04 /dev/sdb1 Errors
  1.  
  2. *** /dev/sdb1 should be checked for errors ***
  3.  

- reboot แล้วไม่ Check Disk ตามที่ Error

แก้โดย
- Run คำสั่ง
  1. touch /forcefsck


-Edit rcS file
  1. nano /etc/default/rcS

แก้ FSCKFIX จาก No เป็น Yes
FSCKFIX=yes


- Edit /etc/fstab file
  1. nano /etc/fstab

แก้ตัวหลังสุดจาก 0 เป็น 1
-Reboot the system
- แล้วจะมีการ Check Disk ตอนเปิดเครื่อง

เสร็จแล้วแก้ ไฟล์ rcS และ fstab กลับเป็นเหมือนเดิม

https://www.cyberciti.biz/faq/ubuntu-devxvda2-should-be-checked-for-errors/

Ubuntu : Ubuntu Server 16.04 Install Samba Check Status ไม่แสดงชื่อ User ที่เข้ามาใช้งาน มีสีแดงขึ้นแทน

Ubuntu : Ubuntu Server 16.04 Install Samba Check Status ไม่แสดงชื่อ User ที่เข้ามาใช้งาน มีสีแดงขึ้นแทน
ใช้คำสั่ง
  1. /etc/init.d/smbd status
Oct 11 15:57:13 datacenter1 smbd[4894]: [2017/10/11 15:57:13.044034, 0] ../lib/util/become_daemon.c:124(daemon_ready)
Oct 11 15:57:13 datacenter1 smbd[4894]: STATUS=daemon 'smbd' finished starting up and ready to serve connections

แต่ถ้าใช้ไฟล์ smb.conf ของเดิมที่ติดตั้งมากับ samba จะไม่ Error

จึงแก้ไขไฟล์ smb.conf ใหม่ ใช้ตัวอย่างจากไฟล์เดิม แล้วเอา Code เดิม Winbind เพื่อใช้งาน AD
Code เดิม
  1.  
  2. [global]
  3. security = ads
  4. realm = SCI.COM
  5. password server = dc01.sci.com
  6. workgroup = SCI
  7. idmap uid = 10000-20000
  8. idmap gid = 10000-20000
  9. winbind enum users = yes
  10. winbind enum groups = yes
  11. template homedir = /home/%U
  12. template shell = /bin/bash
  13. client use spnego = yes
  14. client ntlmv2 auth = yes
  15. encrypt passwords = yes
  16. winbind use default domain = yes
  17. restrict anonymous = 2
  18. map acl inherit = yes
  19. nt acl support = yes
  20. disable spoolss = yes
  21. wins server = 192.168.0.253
  22.  


Code ใหม่ที่แก้ไข
  1.  
  2. [global]
  3. ## Browsing/Identification ###
  4. workgroup = SCI
  5. server string = %h server (Samba, Ubuntu)
  6. ;   wins server = w.x.y.z
  7.  
  8. #### Networking ####
  9. dns proxy = no
  10. ;   interfaces = 127.0.0.0/8 eth0
  11. ;   bind interfaces only = yes
  12.  
  13. #### Debugging/Accounting ####
  14.    log file = /var/log/samba/log.%m
  15.    max log size = 1000
  16.    syslog = 0
  17.    panic action = /usr/share/samba/panic-action %d
  18.  
  19. ####### Authentication #######
  20.    server role = standalone server
  21.    passdb backend = tdbsam
  22.  
  23.    obey pam restrictions = yes
  24.    unix password sync = yes
  25.    passwd program = /usr/bin/passwd %u
  26.    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
  27.    pam password change = yes
  28.    map to guest = bad user
  29.  
  30. ########## Domains ###########
  31. ;   logon path = \\%N\profiles\%U
  32. ;   logon drive = H:
  33. ;   logon script = logon.cmd
  34. ; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
  35. ; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
  36. ; add group script = /usr/sbin/addgroup --force-badname %g
  37.  
  38. ############ Misc ############
  39. ;   include = /home/samba/etc/smb.conf.%m
  40. ;   idmap uid = 10000-20000
  41. ;   idmap gid = 10000-20000
  42. ;   template shell = /bin/bash
  43. ;   usershare max shares = 100
  44.    usershare allow guests = yes
  45.  
  46. ############ Edit Winbind Login ###############
  47. security = ads
  48. password server = dc01.sci.com
  49. winbind enum users = yes
  50. winbind enum groups = yes
  51. encrypt passwords = yes
  52. winbind use default domain = yes
  53. wins server = 192.168.0.253
  54.  


Axapta : Axapta การกำหนดสิทธิ์ให้กับ TabPage ที่บันทึกข้อมูลลง Data Sources อื่น

Axapta : Axapta การกำหนดสิทธิ์ให้กับ TabPage ที่บันทึกข้อมูลลง Data Sources อื่น
เช่น ใน Form InventTable เพิ่ม TabPage ชื่อ Item Alternative
โดยการสร้าง Table ItemAlternative แล้วนำเข้ามาทำเป็น Data Sources ใน Form InventTable
**ปัญหาคือเราจะกำหนดสิทธิ์ที่ Group Permissions Main Menu หรือ Security ไม่ได้เพราะไม่เจอ Field หรือ Tab ที่สร้างขึ้น **
น่าจะเกิดจาก Table ที่จะบันทึกอยู่อีก Table ไม่ได้ลง InventTable ทำให้กำหนดสิทธิ์ไม่ได้ จึงต้องกำหนด Securitykey ให้กับ Table ที่นำมาเป็น Data Sources ก่อน

แก้ปัญหาโดย
1. ที่ Form InventTable TabPage ชื่อ Item Alternative ที่สร้างขึ้นไม่ ต้องไม่กำหนด Securitykey ที่ Properties
2. ไปที่ Table ItemAlternative ที่สร้างขึ้นใหม่ กำหนด Securitykey เป็น InventMisc กรณีที่ใช้เกี่ยวกับ Invent ถ้าใช้เกี่ยวกับ Module อื่นก็กำหนดให้ถูก เช่น CustMisc หรือ LedgerMisc ..... อื่น ๆ
3. สร้าง Group Permissions ขึ้นเข้าไปที่ Main Menu จะมี Item Alternative ขึ้นมา

และที่ Miscellaneous ก็จะมี Item Alternative ขึ้นสามารถกำหนดสิทธิ์ได้เช่นกัน



https://community.dynamics.com/ax/f/33/t/126831

Ubuntu : Ubuntu install cer VMware Server.

Ubuntu : Ubuntu install cer VMware Server.

1. You must have file cert for server file .cer
You Can use this step.
https://intranet.scivalve.com/blog.php?u=281&b=1060
2. On Ubuntu Go to folder /usr/share/ca-certificates/
3. Create a new folder, i.e. "sudo mkdir chrome"
4. Copy the .crt file into the chrome folder
5. Make sure the permissions are OK (755 for the folder, 644 for the file)
6. Run "sudo update-ca-certificates"

Test login to server VMware ESXi

https://askubuntu.com/questions/645818/how-to-install-certificates-for-command-line

Axapta : Axapta refresh other form runing.

Axapta : Axapta refresh other form runing.

  1. public void close()
  2. {
  3.     FormDataSource  fds;
  4.     super();
  5.  
  6.     fds = element.args().record().dataSource();
  7.     fds.research(true);
  8. }


https://community.dynamics.com/ax/f/33/t/89243

ตัวอย่างปุ่ม Create SCI_SerialNumber

WIFI : Sumsung J7 มีปัญหาต่อ Wifi ติด ๆ หลุด ต่อได้ไม่นานก็หลุดแล้วก็ต่อเอง

WIFI : Sumsung J7 มีปัญหาต่อ Wifi ติด ๆ หลุด ต่อได้ไม่นานก็หลุดแล้วก็ต่อเอง
เกิดจากตัว Software Sumsung J7 ไม่รองรับการใช้ต่อเข้ารหัสแบบ WPA
ต้องแก้ที่ตัว Router Wifi เปลี่ยน Security Mode
จาก WPA เป็น WPA2 จึงจะสามารถใช้งานได้ตามปกติ



VMware : Vmware ESXi 6.5.0 Copy and Move Folder

VMware : Vmware ESXi 6.5.0 Copy and Move Folder
* ไม่สามารถทำผ่านหน้า Web Browser ได้ หน้า Web Copy หรือ Move ได้ทีละไฟล์ *

เจอวิธีใหม่ Copy ผ่านหน้า Web ได้ แต่ต้องมี Folder มารอง ต่อจาก Folder Disk ก่อน
เช่น /vmfs/volumes/DATA/OS/ ภายใน OS จึงจะสามารถวางข้อมูลเป็น Folder ได้
หรือถ้าจะ Move ให้พิมพ์ชื่อของ Folder ที่ตำแหน่งที่จะ Move ไปด้วย


ถ้าต้องการ Copy หรือ Move Folder หลาย ๆ File พร้อมกันต้อง SSH เข้าไปแล้วใช้คำสั่งผ่าน Terminal
เข้าไปที่ Data Store ของ VMware ESXi อยู่ที /vmfs/volumes/
  1. cd /vmfs/volumes/

1. คำสั่ง Move ใช้ mv
Usage: mv [-fin] SOURCE DEST
or: mv [-fin] SOURCE... DIRECTORY

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY

-f Don't prompt before overwriting
-i Interactive, prompt before overwrite
-n Don't overwrite an existing file

เช่น
  1. mv -fin AX_DB_Test/ /vmfs/volumes/DATA/ActiveServer/


2. คำสั่ง Copy สามารถใช้ copy -r ได้เลย เช่น
  1. cp -r Test/ /vmfs/volumes/DATA/ActiveServer/

VMware : Vmware ESXi 6.5.0 Update patches

VMware : Vmware ESXi 6.5.0 Update patches
1. Download patches ที่ต้องการ Update ที่
https://my.vmware.com/group/vmware/patch

เลือก ESXi(Embedded and Installable) และ 6.5.0 แล้วเลือก Download patch update ที่เราต้องการ

2. นำไฟล์ Zip ที่ได้ Up ขึ้นไปไว้ที่ Datastore ของ Server เช่น
ESXi --> UpDateVm หรือที่อื่น ตามที่เราต้องการ

3. ปิดเครื่องที่ Run อยู่ใน VM ทั้งหมด
4. SSH ไปที่เครื่อง VM หรือไปที่หน้าเครื่อง กด Alt+F1 (ในของจริงกดแล้วไม่ขึ้นให้ Login)
จึงใช้วิธี SSH เอา
5. ใช้คำสั่ง เพื่อเปิด mode maintenance
  1. vim-cmd hostsvc/maintenance_mode_enter

6. เข้าไปที่ Up load file ไว้ ตามข้อ 2.
  1. cd /vmfs/volumes/ESXi/UpDateVM/

7. ls ดูว่ามีไฟล์อยู่หรือไม่
  1. ls

8. ติดตั้งโดยใช้คำสั่ง
  1. esxcli software vib update -d /vmfs/volumes/58e65db8-567b22bb-3035-30e171533e54/UpDateVM/ESXi650-XXX.zip

XXX.zip เป็นชื่อไฟล์ วันที่ ที่จะ Update
9. reboot เครื่องโดยใช้คำสั่ง
  1. reboot

10. เสร็จแล้วใช้คำสั่ง เพื่อปิด mote maintenance
  1. vim-cmd hostsvc/maintenance_mode_exit

เลข Build ก็จะเปลี่ยนไปตาม patch ที่เรา Update

ที่มา
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2008939

Axapta : Axapta กด F9 Debug ไว้แล้วลืมเอาออก และจำไม่ได้ว่า Debug ไว้ที่ไหน

Axapta : Axapta กด F9 Debug ไว้แล้วลืมเอาออก และจำไม่ได้ว่า Debug ไว้ที่ไหน
เวลาเปิดใช้งานจะมี Error เตือน X++ debugging is not enabled on .....

แก้โดย
- กด Shift + F9
- จะแสดงข้อมูลหน้า Code ที่มีการ กด Debug ไว้ สามารถ กด Edit แล้วไป ปลด Debug ออกได้เลย


PfSense : ติดตั้ง VMware Tools PfSense ON VMWare Esxi 6.5

PfSense : ติดตั้ง VMware Tools PfSense ON VMWare Esxi 6.5
การติดตั้ง Vmware Tools ของ PfSense ทำได้โดย
เครื่อง PfSense ต้องออก Internet ตรงได้ ถึงจะสามารถ Download Package ต่าง ๆ ได้
1. Login เข้า PfSense เลือก Menu System --> Package Manger
2. เลือก Available Packages
3. เลือก Open-VM-Tools แล้วกด Install รอจนกว่าจะเสร็จ

ติดตั้งเสร็จแล้ว

AMS : Export Database To SQLITE

AMS : Export Database To SQLITE
- PHPmyadmin
Query คำสั่ง
  1. SELECT CONCAT( FirstCode, AccountCode, TypeCode, SubTypeCode, RunNo ) AS AssetCode, AssetDetail, AssetRP, AssetReceive, AssetCost, EmpName, DepCode
  2. FROM `asset`
  3. LEFT JOIN sci._employees ON _employees.EmpID = Owner
  4. WHERE 1


- Export ข้อมูลที่ Query ได้จาก PHPMyAdmin
- เลือกชนิดเป็น CSV
- Fields terminated by : I (pipe)
- Fields enclosed by : ไม่ต้องมี
- Fields escaped by : \

- ใช้โปรแกรม Sqlite Manger หรือโปรแกรม อื่นๆ
- new Database
- สร้าง Table Code
  1. CREATE TABLE "asset_info" (
  2. "AssetCode" TEXT NOT NULL,
  3. "AssetDetail" TEXT,
  4. "AssetRP" TEXT,
  5. "AssetReceive" TEXT,
  6. "AssetCost" REAL,
  7. "Owner" TEXT,
  8. "DepCode" TEXT
  9. );


- import Table data ที่ได้จาก phpmyadmin สำเร็จ

หรือ ใช้ addon sqlite-manager ของ Firefox ก็สามารถทำได้
https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/


Windows 10 : Add Driver Printer จาก Windows 7

Windows 10 : Add Driver Printer จาก Windows 7 Printer Epson lq-590
Windows XP เข้าไป Connect Printer จาก Windows 10

1. You have to see the printer in explorer - so you have to log into \\PR-ARTHIMA ComputerName (with valid credentials)
2. Select Add Printer - LOCAL Printer, new Local Port : \\PR-ARTHIMA\sharedPrinterName (e.g \\PR-ARTHIMA\epson lq-590 escp2)
3. If the port is in use, find it in existing Local Ports
4. Select Driver by have disk. and select printer we need.
5. Finish and Test Print.

https://superuser.com/questions/963755/how-to-connect-windows-xp-to-printer-connected-to-windows-10-pro

เครื่องพิมพ์ barcode Zebra Stripe 600 Print แล้วเลขกระโดด ไม่ run ตามที่ต้องการ

เครื่องพิมพ์ barcode Zebra Stripe 600 Print แล้วเลขกระโดด ไม่ run ตามที่ต้องการ
ตอนสั่ง Print มี Error
Demonstration Print Mode. ตามรูป

จาก Error เกิดจากโปรแกรม เป็น Demo เข้า Help About ดู จะเห็นเป็น Demo Version

ตรวจดูที่เครื่อง เวลาไม่ตรง ทำให้เปิดโปรแกรม แล้ว เป็น Demo แก้ไขเรื่องเวลา ก็สามารถใช้งานได้ตามปกติ

Windows 7 : Install Error

Windows 7 : Install Error
windows setup could not configure windows to run on this computer's hardware



Manually run msoobe.exe to finish the install
A possible resolution to this issue is to manually run the msoobe.exe program to allow the install to complete. Follow the steps below to manually run the msoobe.exe program:

Windows 7:

1.At the error screen, press Shift+F10 to open a command prompt.
2.Type cd \ and press Enter.
3.Type cd c:\windows\system32\oobe and press Enter.
4.Type msoobe and press Enter. The installation process should now automatically continue.
5.Remove the installation media and the system should finish the installation and boot into Windows.

Windows 10:

1.While on the screen where the error appears, press Shift+F10 to bring up the command prompt.
2.Type CD C:\windows\system32\oobe and hit Enter.
3.Type msoobe and hit Enter.
4.You may then be prompted to create an account name and password, and set the time and date. Click Finish when done.
NOTE: If this is a retail version of Windows 10, you may also be prompted to enter a product key for Windows 10. Enter the product key and click Finish.

5.The installation process should then complete and allow the computer to boot into Windows.

http://www.dell.com/support/article/us/en/19/SLN293812/-windows-setup-could-not-configure-to-run-on-this-computers-hardware--error-during-windows-7-or-windows-10-installation?lang=EN

Qnap : Problem maintaining CIFS mount from Ubuntu Virtual Machin Error Host is down

update Qnap To Version 4.3.3.0210 แล้วมีปัญหา Mount to ubuntu error Host is down

When it comes to the max SMB version - the control has not made it to the UI of the CAT1 systems, you need to call the readily available smb[N|NN]enable, and check the current settings using smb2status form the NAS shell:

Up to QTS 4.2.x, SMB 2.1 is the max available:

[~] # smb21enable
...

QTS 4.3.x will bring SMB up to the 3.0 subset available in SAMBA 4.4 to all QNAP Marvell Kirkwood NAS.

[~] # smb3enable
...

Check status:

[~] # smb2status

smbd (samba daemon) Version 4.4.9
smbd (samba daemon) is running.
max protocol SMB 3.0 enabled.

[~] # smb<TAB>
smb21enable smb2disable smb2enable smb2status smb3enable smbtools

reboot Qnap and mount again.

https://forum.qnap.com/viewtopic.php?t=132166

และเวลา Mount ต้องใส่ Version 3 ด้วย
  1. sudo mount -t cifs -o username=xxx,password=xxx  vers=3.0 //192.168.0.218/backup /BACKUP/BackupToQnap/


https://forum.qnap.com/viewtopic.php?t=132166

PHP : PHP ดึง rate จาก Web กสิกรใหม่มาแสดงใน Internet

ดยใช้วิธีดึงค่าจาก aspx ของ ธนาคารเลย
https://www.kasikornbank.com/TH/Rate/Pages/Foreign-Exchange.aspx

https://stackoverflow.com/questions/24134886/get-html-code-from-aspx-page-with-php
  1. <?php
  2. include_once("simple_html_dom.php");
  3. $url = 'https://www.kasikornbank.com/TH/Rate/Pages/Foreign-Exchange.aspx';
  4. $contents = htmlentities(file_get_contents($url));
  5. echo $contents;
  6.  
  7. ?>


สามารถส่งวันที่ เข้าไปได้ ก็จะได้ค่าเช่นกัน

  1. <?php
  2. include_once("simple_html_dom.php");
  3. $url = 'https://www.kasikornbank.com/TH/Rate/Pages/Foreign-Exchange.aspx?d=19&m=05&y=2017&r=0';
  4. $contents = htmlentities(file_get_contents($url));
  5. echo $contents;
  6.  
  7. ?>



เอาค่ามาใช้งานโดย ใช้ explode <div> เอา
https://stackoverflow.com/questions/20446598/get-div-content-from-external-website

  1. <?php
  2. include_once("simple_html_dom.php");
  3. $url = 'https://www.kasikornbank.com/TH/Rate/Pages/Foreign-Exchange.aspx';
  4. //$contents = htmlentities(file_get_contents($url));
  5. //$contents  = file_get_contents($url);
  6. //echo $contents;
  7. //exit;
  8.  
  9. // FIND THE DESIRED DIV
  10. $htm = file_get_contents($url);
  11. echo htmlentities($htm);
  12.  
  13. $strDate = '<div id="divRate"';
  14. $arrDate = explode($strDate, $htm);
  15. $arrDate = explode('</div', $arrDate[1]);
  16.  
  17. // RECONSTRUCT THE DIV WITH HTML TAGS
  18. $new = $strDate . $arrDate[0] .'</div>';
  19.  
  20. echo htmlentities($new);
  21.  
  22. ?>


ตัวอย่าง Rate ข้อเสนอแนะคุณพเยาว์
https://intranet.scivalve.com/sci/AF/rate_bank.php
  1.  
  2. <?php
  3. error_reporting(E_ERROR);
  4. define('IN_PHPBB', true);
  5. $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../';
  6. $phpEx = substr(strrchr(__FILE__, '.'), 1);
  7. include($phpbb_root_path . 'common.' . $phpEx);
  8.  
  9. include($phpbb_root_path ."sci/include/config.php");
  10. //include($phpbb_root_path ."sci/include/db.php");
  11. include($phpbb_root_path ."sci/include/functions.php");
  12. //include($phpbb_root_path ."sci/include/db2.php");
  13.  
  14. include_once("simple_html_dom.php");
  15.  
  16. //$url = 'https://www.kasikornbank.com/TH/Rate/Pages/Foreign-Exchange.aspx?d=19&m=05&y=2017&r=0';
  17. $url = 'https://www.kasikornbank.com/TH/Rate/Pages/Foreign-Exchange.aspx';
  18. //$contents = htmlentities(file_get_contents($url));
  19. //$contents  = file_get_contents($url);
  20. //echo $contents;
  21. //exit;
  22.  
  23. // FIND THE DESIRED DIV
  24. $htm = file_get_contents($url);
  25. echo htmlentities($htm);
  26. /*
  27. $strDate = '<div id="divRate"';
  28. $arrDate = explode($strDate, $htm);
  29. $arrDate = explode('</div', $arrDate[1]);
  30.  
  31. // RECONSTRUCT THE DIV WITH HTML TAGS
  32. $new = $strDate . $arrDate[0] .'</div>';
  33.  
  34. echo htmlentities($new);
  35. */
  36.  
  37. //########### USD ############//
  38. $strDiv = '<div id="divLastRate"';
  39. $arrDiv = explode($strDiv, $htm);
  40.  
  41. $arrDiv = explode('</div>', $arrDiv[1]);
  42.  
  43. // RECONSTRUCT THE DIV WITH HTML TAGS
  44. $newDiv = $strDiv . $arrDiv[0] .'</div>';
  45.  
  46. //echo htmlentities($newDiv);
  47.  
  48. // Explode Data For Show Buying.
  49. $strBuyUSD = 'data-BuyTelex="';
  50. $arrBuyUSD = explode($strBuyUSD, $newDiv);
  51. $arrBuyUSD = explode('"', $arrBuyUSD[1]);
  52. $newBuyUSD = $arrBuyUSD[0];
  53.  
  54. //echo $newBuyUSD;
  55.  
  56. // Explode Data For Show Selling.
  57. $strSellUSD = 'data-SellChq="';
  58. $arrSellUSD = explode($strSellUSD, $newDiv);
  59. $arrSellUSD = explode('"', $arrSellUSD[1]);
  60. $newSellUSD = $arrSellUSD[0];
  61.  
  62. //echo $newSellUSD;
  63. //########### USD ############//
  64.  
  65. //########### CNY ############//
  66. $strDiv = '<div id="divLastRate"';
  67. $arrDiv = explode($strDiv, $htm);
  68. $arrDiv = explode('</div>', $arrDiv[1]);
  69.  
  70. // RECONSTRUCT THE DIV WITH HTML TAGS
  71. $newDiv = $strDiv . $arrDiv[10] .'</div>';
  72.  
  73. //echo htmlentities($newDiv);
  74.  
  75. // Explode Data For Show Buying.
  76. $strBuyCNY = 'data-BuyTelex="';
  77. $arrBuyCNY = explode($strBuyCNY, $newDiv);
  78. $arrBuyCNY = explode('"', $arrBuyCNY[1]);
  79. $newBuyCNY = $arrBuyCNY[0];
  80.  
  81. //echo $newBuyCNY;
  82.  
  83. // Explode Data For Show Selling.
  84. $strSellCNY = 'data-SellChq="';
  85. $arrSellCNY = explode($strSellCNY, $newDiv);
  86. $arrSellCNY = explode('"', $arrSellCNY[1]);
  87. $newSellCNY = $arrSellCNY[0];
  88.  
  89. //echo $newSellCNY;
  90. //########### CNY ############//
  91.  
  92. //########### EUR ############//
  93. $strDiv = '<div id="divLastRate"';
  94. $arrDiv = explode($strDiv, $htm);
  95. $arrDiv = explode('</div>', $arrDiv[1]);
  96.  
  97. // RECONSTRUCT THE DIV WITH HTML TAGS
  98. $newDiv = $strDiv . $arrDiv[12] .'</div>';
  99.  
  100. //echo htmlentities($newDiv);
  101.  
  102. // Explode Data For Show Buying.
  103. $strBuyEUR = 'data-BuyTelex="';
  104. $arrBuyEUR = explode($strBuyEUR, $newDiv);
  105. $arrBuyEUR = explode('"', $arrBuyEUR[1]);
  106. $newBuyEUR = $arrBuyEUR[0];
  107.  
  108. //echo $newBuyEUR;
  109.  
  110. // Explode Data For Show Selling.
  111. $strSellEUR = 'data-SellChq="';
  112. $arrSellEUR = explode($strSellEUR, $newDiv);
  113. $arrSellEUR = explode('"', $arrSellEUR[1]);
  114. $newSellEUR = $arrSellEUR[0];
  115.  
  116. //echo $newSellEUR;
  117. //########### EUR ############//
  118.  
  119. //########### GBP ############//
  120. $strDiv = '<div id="divLastRate"';
  121. $arrDiv = explode($strDiv, $htm);
  122. $arrDiv = explode('</div>', $arrDiv[1]);
  123.  
  124. // RECONSTRUCT THE DIV WITH HTML TAGS
  125. $newDiv = $strDiv . $arrDiv[13] .'</div>';
  126.  
  127. //echo htmlentities($newDiv);
  128.  
  129. // Explode Data For Show Buying.
  130. $strBuyGBP = 'data-BuyTelex="';
  131. $arrBuyGBP = explode($strBuyGBP, $newDiv);
  132. $arrBuyGBP = explode('"', $arrBuyGBP[1]);
  133. $newBuyGBP = $arrBuyGBP[0];
  134.  
  135. //echo $newBuyGBP;
  136.  
  137. // Explode Data For Show Selling.
  138. $strSellGBP = 'data-SellChq="';
  139. $arrSellGBP = explode($strSellGBP, $newDiv);
  140. $arrSellGBP = explode('"', $arrSellGBP[1]);
  141. $newSellGBP = $arrSellGBP[0];
  142.  
  143. //echo $newSellGBP;
  144. //########### GBP ############//
  145.  
  146. //########### HKD ############//
  147. $strDiv = '<div id="divLastRate"';
  148. $arrDiv = explode($strDiv, $htm);
  149. $arrDiv = explode('</div>', $arrDiv[1]);
  150.  
  151. // RECONSTRUCT THE DIV WITH HTML TAGS
  152. $newDiv = $strDiv . $arrDiv[14] .'</div>';
  153.  
  154. //echo htmlentities($newDiv);
  155.  
  156. // Explode Data For Show Buying.
  157. $strBuyHKD = 'data-BuyTelex="';
  158. $arrBuyHKD = explode($strBuyHKD, $newDiv);
  159. $arrBuyHKD = explode('"', $arrBuyHKD[1]);
  160. $newBuyHKD = $arrBuyHKD[0];
  161.  
  162. //echo $newBuyHKD;
  163.  
  164. // Explode Data For Show Selling.
  165. $strSellHKD = 'data-SellChq="';
  166. $arrSellHKD = explode($strSellHKD, $newDiv);
  167. $arrSellHKD = explode('"', $arrSellHKD[1]);
  168. $newSellHKD = $arrSellHKD[0];
  169.  
  170. //echo $newSellHKD;
  171. //########### HKD ############//
  172.  
  173. //########### JPY ############//
  174. $strDiv = '<div id="divLastRate"';
  175. $arrDiv = explode($strDiv, $htm);
  176. $arrDiv = explode('</div>', $arrDiv[1]);
  177.  
  178. // RECONSTRUCT THE DIV WITH HTML TAGS
  179. $newDiv = $strDiv . $arrDiv[18] .'</div>';
  180.  
  181. //echo htmlentities($newDiv);
  182.  
  183. // Explode Data For Show Buying.
  184. $strBuyJPY = 'data-BuyTelex="';
  185. $arrBuyJPY = explode($strBuyHKD, $newDiv);
  186. $arrBuyJPY = explode('"', $arrBuyHKD[1]);
  187. $newBuyJPY = $arrBuyHKD[0];
  188.  
  189. //echo $newBuyJPY;
  190.  
  191. // Explode Data For Show Selling.
  192. $strSellJPY = 'data-SellChq="';
  193. $arrSellJPY = explode($strSellJPY, $newDiv);
  194. $arrSellJPY = explode('"', $arrSellJPY[1]);
  195. $newSellJPY = $arrSellJPY[0];
  196.  
  197. //echo $newSellJPY;
  198. //########### JPY ############//
  199.  
  200. //########### MYR ############//
  201. $strDiv = '<div id="divLastRate"';
  202. $arrDiv = explode($strDiv, $htm);
  203. $arrDiv = explode('</div>', $arrDiv[1]);
  204.  
  205. // RECONSTRUCT THE DIV WITH HTML TAGS
  206. $newDiv = $strDiv . $arrDiv[24] .'</div>';
  207.  
  208. //echo htmlentities($newDiv);
  209.  
  210. // Explode Data For Show Buying.
  211. $strBuyMYR = 'data-BuyTelex="';
  212. $arrBuyMYR = explode($strBuyHKD, $newDiv);
  213. $arrBuyMYR = explode('"', $arrBuyMYR[1]);
  214. $newBuyMYR = $arrBuyMYR[0];
  215.  
  216. //echo $newBuyMYR;
  217.  
  218. // Explode Data For Show Selling.
  219. $strSellMYR = 'data-SellChq="';
  220. $arrSellMYR = explode($strSellMYR, $newDiv);
  221. $arrSellMYR = explode('"', $arrSellMYR[1]);
  222. $newSellMYR = $arrSellMYR[0];
  223.  
  224. //echo $newSellMYR;
  225. //########### MYR ############//
  226.  
  227. //########### SGD ############//
  228. $strDiv = '<div id="divLastRate"';
  229. $arrDiv = explode($strDiv, $htm);
  230. $arrDiv = explode('</div>', $arrDiv[1]);
  231.  
  232. // RECONSTRUCT THE DIV WITH HTML TAGS
  233. $newDiv = $strDiv . $arrDiv[24] .'</div>';
  234.  
  235. //echo htmlentities($newDiv);
  236.  
  237. // Explode Data For Show Buying.
  238. $strBuySGD = 'data-BuyTelex="';
  239. $arrBuySGD = explode($strBuySGD, $newDiv);
  240. $arrBuySGD = explode('"', $arrBuySGD[1]);
  241. $newBuySGD = $arrBuySGD[0];
  242.  
  243. //echo $newBuySGD;
  244.  
  245. // Explode Data For Show Selling.
  246. $strSellSGD = 'data-SellChq="';
  247. $arrSellSGD = explode($strSellSGD, $newDiv);
  248. $arrSellSGD = explode('"', $arrSellSGD[1]);
  249. $newSellSGD = $arrSellSGD[0];
  250.  
  251. //echo $newSellSGD;
  252. //########### SGD ############//
  253.  
  254. ?>
  255.