หา drive ของ USB drive

ทีมที่ต้องไปนำเสนองานเพื่อขอเงินล้านทีมหนึ่งต้องการใช้ Shiny ขอมาว่าให้ช่วยหน่อย โดยที่มีความต้องการว่าไม่ต้องการให้มีเซ็ตหรือเปิดอะไรยุ่งยากเพียงแค่ เสียบ USB drive ในเครื่องลูกค้าซึ่งเป็น Windows แล้ว double click อะไรก็แล้ว ให้ตัว Shiny app ก็เปิดขึ้นมาเลย ผมเลยบอกว่าได้ง่ายมาก เลี้ยงก๋วยเตี๋ยวผมก่อนชามหนึ่งเดี๋ยวเขียนscript ง่ายๆให้ เวลาใช้ก็เพียง double click ที่ icon ของ batch file นี้ วิธีที่ผมทำนั้นมันง่ายจริงๆครับ เพียงเขียน batch file หาว่า drive ที่เข้าเสียบนั้นอยู่ drive อะไรก่อน จากนั้นก็เพียง set ค่าพารามิเตอร์ที่ rstudio ต้องการใช้ในการหา R  และก็แก้ script นิดหน่อยให้ R มันโหลดตัว app เลย อันนี้เป็นตัวอย่างโค้ด batch file ที่ใช้หา

แบ่งคำ/ตัดคำ ภาษาไทยใน R ด้วย SWATH

โปรแกรมที่ช่วยในการแบ่งคำหรือตัดคำภาษาไทยที่น่าสนใจอีกตัวหนึ่งนอกเหนือจาก LexTo (http://www.sansarn.com/lexto/) ก็มี SWATH (https://linux.thai.net/projects/swath) ครับ SWATH มีความสามารถที่จะใช้ตัดคำภาษาไทยที่อยู่ในหลาย file format ครับไม่ว่าจะเป็น LaTex, HTML, RTF หรือ plain text  แต่การใช้งานต้องใช้ในแบบ command line ไม่มี GUI ครับ โดย swath จะมี options ต่างให้ เพื่อความสะดวกเอาไปใช้ใน R บน Windows ผมเลยเขียน packageเพื่อเรียกใช้งาน SWATH แบบง่ายๆไว้ที่ https://github.com/slphyx/RSwath หรือดูเพิ่มเติมที่ http://www.sakngoi.com/2018/01/23/rswath-the-r-interface-to-swath/ การใช้งานก็เริ่งจากติดตั้งจาก github ด้วยคำสั่ง library("devtools") install_github("slphyx/RSwath") จากนั้นก็เรียกใช้งาน library("RSwath") การใช้งานกับไฟล์ข้อความที่เป็นภาษาไทยที่ต้องการแบ่งสมมุติว่าชื่อ testTH.txt แล้วต้องการให้ไฟล์ที่แบ่งคำแล้วด้วย SWATH ชื่อ testTHX.txt ก็เพียงพิมพ์ rswath(inputfile="testTH.txt",outputfile="testTHX.txt")

RSwath: The R Interface to SWATH

RSwath: The R Interface to Swath ผมเอา SWATH (https://code.google.com/archive/p/swath/) มาทำเป็น r-package สำหรับใช้ใน R บน Windows ครับ ตอนนี้มันยังเป็นรุ่นเก่าอยู่ (swath 0.3.4) ครับ SWATH ก็เป็นตัวแบ่งคำภาษาไทยอีกตัวหนึ่งที่พัฒนาโดยท่าน Phaisarn Charoenpornsawat และ Theppitak Karoonboonyanan ครับ สนใจใช้งานก็ไปที่ https://github.com/slphyx/RSwath การใช้งานก็เริ่มจากติดตั้งจาก github ด้วยคำสั่ง library("devtools") install_github("slphyx/RSwath") จากนั้นก็เรียกใช้งาน library("RSwath") การใช้งานกับไฟล์ข้อความที่เป็นภาษาไทยที่ต้องการแบ่งสมมุติว่าชื่อ testTH.txt แล้วต้องการให้ไฟล์ที่แบ่งคำแล้วด้วย SWATH ชื่อ testTHX.txt ก็เพียงพิมพ์ rswath(inputfile="testTH.txt",outputfile="testTHX.txt") ตัวอย่างไฟล์ที่ใช้กับswathกับผลลัพธ์ที่ได้        

tidy data

ถ้าจะทำให้ชีวิตง่ายขึ้นในการใช้ ggplot2 ให้เปลี่ยนรูปแบบ data ที่ใช้เป็นแบบ tidy data ครับ เอามาจาก http://r4ds.had.co.nz/tidy-data.html หรืออ่านเพิ่มเติมได้จาก http://vita.had.co.nz/papers/tidy-data.html  

LexTo บน Windows

ผมเอา code LexTo เค้ามาลองเขียนเล่นสำหรับใช้งานแบบ offline บน Windows (7, 8 และ 10)ครับ สนใจdownload ได้ที่นี่ครับ ที่download มันจะเป็นไฟล์ zip ที่มีตัวโปรแกรมชื่อ Araiwa.exe กับไฟล์ dictionary ชื่อ lexitron.txt พร้อมกับไฟล์ araiwadll.dll ก็ให้แตกไฟล์ zip นี้ออก แล้วdouble click ที่ไฟล์ Araiwa.exe ได้เลยครับ ส่วนใครที่อยากใช้มันใน R ผมเขียนเป็นpackage เรียกมันว่า araiwa ครับ ดูเพิ่มเติมได้ที่ https://github.com/slphyx/Araiwa

ดูการกระจายข่าวใน FB

นักการตลาดท่านหนึ่งอยากรู้ว่าข่าวประชาสัมพันธ์ที่ท่านช่วยอยู่มีการแชร์อย่างไรใน FB ผมเลยช่วยทำให้ดูแบบง่ายๆแต่ท่านต้องหาคนมาช่วยเก็บข้อมูลให้ ในตัวอย่างนี้ network ของกลุ่มเป้าหมายบน FB ถูกสร้างขึ้นมาจากนั้นก็ลองโพสท์ข่าวลงไป แล้วนับดูว่าแต่ล่ะชั่วโมงมีการแชร์หรือเห็นหรือLike รวมกันจำนวนเท่าใด     ซึ่งวิธีนี้เราสามารถทำโมเดลเพื่อตอบได้ว่าประเภทข่าวหรือรูปแบบนำเสนอแบบใดที่จะถูกแพร่กระจายได้มากกว่ากัน พร้อมกับรู้ด้วยว่าข่าวมันจะถึงจุดอิ่มตัวเมื่อใดซึ่งมันจะช่วยให้เราว่างแผนการโฆษณาได้ง่ายขึ้นครับ    

Wolfram Mathematica Download Manager

ตั้งแต่ version 11.2 มานี่ Wolfram Mathematica มีการเปลี่ยนวิธีdownload ตัวโปรแกรมมาใช้ Download Manager แทน ไม่รู้เป็นเพราะเรื่องถูกcopy เยอะหรือเปล่า แต่ก็ดูแล้วสะดวกดีมี pause และ resume ด้วย

ทดลองใช้ C# กับงานวิจัย

ปกติผมจะใช้ Mathematica เป็นหลักในการทำงานโดยมากจะเป็นพวกแบบจำลองคณิตศาสตร์ที่ตองการเห็นว่าผลลัพธ์จะเปลี่ยนแปลงไปอย่างไรถ้าตัวแปรที่สนใจบางตัวมีการเปลี่ยนแปลง เพิ่มขึ้นหรือลดลง ซึ่งแน่นอนผมใช้พวกคำสั่ง Manipulate หรือ Dynamic เป็นหลัก แต่มาระยะหลังนี้เริ่มมีการใช้ R ในที่ทำงานกันเยอะ ผมเลยเขียนโมเดลของงานที่ทำใน R ไปพอสมควร แต่มันก็ติดปัญหาว่ามันช้ามากกับหลายโมเดลที่ทำอยู่ถึงแม้จะหันไปใช้ Rcpp แต่ก็รู้สึกว่าเสียเวลาเขียน wrapper functions ห่อพวกมันอีกทีใน R แถมเวลาส่งงานให้ Prof ทั้งหลายก็ติดเรื่อง compiler อีก แถมต้องมาเขียน shiny อีกดูวุ่นวายไปหมด สุดท้ายกลับมาตายรังที่ Mathematica เหมือนเดิม เขียนโมเดลเสร็จ อยากจะส่งให้ชาวบ้านดูก็ใช้เพียงแค่คำสั่ง Deploy ไปบนcloud เท่านั้นจบเลย …แต่มันก็แลกมาด้วยค่าใช้จ่ายพอสมควร ผมเลยหาทางเลือกอื่นๆที่มันประหยัดกับบางงานกับโมเดลที่ไม่ดูซับซ้อนและใช้เวลาทำไม่นาน หันซ้ายหันขวาก็มาจบที่ C# หลังจากดูแล้วก็มี library ที่พอช่วยงานได้อย่าง math.net แถม UI ก็ทำง่ายเพียงลากแปะเท่านั้น เลยทดลองใช้ดู ผลปรากฏว่าเป็นที่น่าพอใจ  ถึงจะดูยุ่งยากในส่วน UI แต่ก็รู้สึกว่าไม่ได้เลวร้ายอะไร ส่งงานก็ง่ายแถมก็ไม่ต้องติดตั้งอะไรให้ดูวุ่นวาย

ปัญหา cuTexRefSetAddress2D_v3

พอดีว่าลงWindows 7 64bit กับ Mathematica 11.1.1 ใหม่ แล้วเจอปัญหา  ตามภาพด้านล่างตอนใช้ CUDALink พอเช็คดูเวอร์ชั่นของ nvidia driver ที่ใช้กับการ์ดจอ (Quadro 2000)ด้วยคำสั่ง CUDADriverVersion พบว่าเป็นรุ่นเก่ามากคือ27x.x  เลยทำการ update เป็นตัวใหม่กว่าคือ 377.55จากนั้นก็ลองใช้ QUDAQ ใหม่เช็คดูปรากฎว่าไม่มีปัญหาแล้วสามาถใช้งานได้ตามปกติ

INDIA + CHINA = JAPAN

เห็นมีคนโพสท์ถามกันใน FB ว่า INDIA + CHINA = JAPAN โดยที่ตัวอักษรอังกฤษแต่ละตัวแทนเลขโดด อักษรต่างกันแทนเลขต่างกัน ผมก็เขียนด้วยภาษาวุลแฟรมแก้ปัญหานี้แบบง่ายๆได้ตามนี้ครับ num = Range[0, 9]; bigls = Permutations[num, {8}]; outls = Reap[ (Clear[i, n, d, a, c, h, j, p]; {i, n, d, a, c, h, j, p} = #; If[ FromDigits@{i, n, d, i, a} + FromDigits@{c, h, i, n, a} == FromDigits@{j, a,