\

Facebook


วันอาทิตย์ที่ 23 มิถุนายน พ.ศ. 2562

วิธี Gen Certificate ด้วย OpenSSL


เริ่มต้มด้วยไฟล์ ตั้งต้นครับ มักเจอไฟล์นามสกุล .pem ซึ่งภายในจะบรรจุทั้ง RSA Private Key กุณแจสำคัญที่เอาไว้ถอดรหัส เเละ Certificate / Public Key  ที่เราสามารถแจกจ่ายให้ผู้อื่นได้ 

ตัวอย่างการ gen ไฟล์ pem

openssl req -config="C:\openssl\share\openssl.cnf" -newkey rsa:2048 -new -nodes -x509 -days 3650  -keyout key.pem -out cert.pem 

ซึ่งเราต้องชี้ไฟล์ openssl.cnf ให้ถูก path ด้วยครับ 

หลังจากนั้น ผมใช้ Windows เป็นหลักซึ่งต้องเขียน .Net สำหรับอ่านไฟล์ จึงต้องใช้ .pfx เป็นหลัก 

ตัวอย่างการ gen ไฟล์ pfx

openssl pkcs12 -export -inkey demo2.key  -in demo2.pem -name my_name -out demo2.pfx

หรือกรณีที่มี .crt อยู่เเล้ว 

openssl pkcs12 -export -inkey demo2.key -in demo2.crt -out demo2.pfx 

หรือ กรณีที่มี .cer

openssl pkcs12 -export -in certificate.cer -inkey private.key -out PKCS7.pfx -certfile bundle.cer


EXT: 

ถ้ามี .pem เเล้วต้องการ gen .key

openssl rsa -outform der -in demo2.pem -out demo2.key

วันอาทิตย์ที่ 10 กุมภาพันธ์ พ.ศ. 2562

ตัวอย่าง header ที่ใช้ include ในภาษา c



Header ของภาษา C คืออะไร 

คือไลบราลี่ ที่ประกาศบริเวณหัวของไฟล์ การเริ่มเขียน logical function ต่างๆ เพื่อให้สามารถใช้งานฟังชั่นที่อยู่ภายใต้ header เหล่านั้นได้ โดยคำสั่ง include <ไฟล์.h>

แต่เดิม มาตราฐานของไลบราลี่ที่กำหนดใน ISO/IEC 9899:1990 (C89, C90) มีเพียง 15 lib เท่านั้น ได้แก่

<assert.h>  <limits.h>  <signal.h>  <stdlib.h>
<ctype.h>   <locale.h>  <stdarg.h>  <string.h>
<errno.h>   <math.h>    <stddef.h>  <time.h>
<float.h>   <setjmp.h>  <stdio.h>
เเต่ก็มีการพัฒนา เพิ่มเติมชุดคำสั่ง จนปัจจุบันมี lib ที่ใช้จัดการเฉพาะมากมาย

ตัวอย่าง HEADER ที่สามารถใช้งานได้

ชื่อ Headerค่วามหมาย
<assert.h>บรรจุคำสั่ง macro ต่างๆ ใช้ในการช่วยตรวจสอบความผิดพลาดของการทำงาน หรือใช้ในการหาจุดบกพร่อง
<complex.h>กลุ่มคำสั่งที่ใช้จัดการ จำนวนเชิงซ้อน
<ctype.h>ชุดของฟังก์ชันที่ใช้เพื่อจำแนกอักขระตามชนิดหรือแปลงระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็กในลักษณะที่เป็นอิสระจากชุดอักขระที่ใช้ (โดยทั่วไปคือ ASCII หรือหนึ่งในส่วนขยายแม้ว่าจะรู้จักการใช้งานโดยใช้ EBCDIC)
<errno.h>สำหรับการทดสอบรหัสข้อผิดพลาดที่เกิดขึ้น
<fenv.h>ชุดของฟังก์ชั่นสำหรับการควบคุมจุดทศนิยม
<float.h>ค่าคงที่ของแมโครเพื่อกำหนดคุณสมบัติเฉพาะของการนำไปใช้งานของเลขทศนิยม
<inttypes.h>กำหนดจำนวนเต็มประเภทความกว้างคงที่
<iso646.h>มาโครชุดคำสั่งมาตรฐานที่ใช้รูปแบบอื่น สำหรับการเขียนโปรแกรมในชุดอักขระ ISO 646
<limits.h>แมโครเพื่อระบุคุณสมบัติเฉพาะการนำไปใช้งานของชนิดจำนวนเต็ม
<locale.h>ฟังชั่นเกี่ยวกับ สถานที่/ตำแหน่งของท้องถิ่นที่เรียกใช้โปรแกรม
<math.h>ฟังก์ชันทางคณิตศาสตร์ทั่วไป
<setjmp.h>ฟังชั่น setjmp และ longjmp ซึ่งใช้สำหรับการเรียกใช้งาน เพื่อกระโดดข้ามบรรทัดไปทำงานจุดอื่น
<signal.h>ฟังก์ชั่นการจัดการสัญญาณ
<stdalign.h>สำหรับการสอบถามและระบุการจัดตำแหน่งของ object
<stdarg.h>สำหรับการเข้าถึงจำนวนตัวแปรต่าง ๆ ที่ส่งผ่านไปยังฟังก์ชัน
<stdatomic.h>การทำงานส่วนงานย่อย ในข้อมูลที่แชร์ระหว่างเธรด
<stdbool.h>กำหนดประเภทข้อมูลบูลีน
<stddef.h>กำหนดประเภทและมาโครที่มีประโยชน์หลายชนิด
<stdint.h>กำหนดจำนวนเต็มประเภทความกว้างคงที่
<stdio.h>กำหนดฟังก์ชั่นอินพุตและเอาต์พุตหลัก
<stdlib.h>กำหนดฟังก์ชั่นการแปลงตัวเลขฟังก์ชันการสร้างตัวเลขสุ่มหลอกการจัดสรรหน่วยความจำฟังก์ชั่นการควบคุมกระบวนการ
<stdnoreturn.h>สำหรับการระบุฟังก์ชั่นที่ไม่ส่งคืน
<string.h>กำหนดฟังก์ชั่นการจัดการสตริง
<tgmath.h>กำหนดฟังก์ชันทางคณิตศาสตร์ชนิดทั่วไป
<threads.h>กำหนดฟังก์ชั่นสำหรับการจัดการหลายเธรด, mutexes และตัวแปรที่มีเงื่อนไข
<time.h>ฟังก์ชั่นการจัดการวันที่และเวลา
<uchar.h>ฟังก์ชั่นสำหรับจัดการกับอักขระ Unicode
<wchar.h>กำหนดฟังก์ชั่นจัดการขนาดอักษร
<wctype.h>ฟังก์ชันที่ใช้ในการจำแนกอักขระแบบกว้างตามประเภทหรือเพื่อแปลงระหว่างตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก
ที่มา
https://stackoverflow.com/questions/2027991/list-of-standard-header-files-in-c-and-c
https://en.wikipedia.org/wiki/C_standard_library

วันจันทร์ที่ 15 ตุลาคม พ.ศ. 2561

วิธีแก้ปัญหา lint บนโปรเจก nodejs





เหล่าโปรเจค ตัวอย่าง ที่น่าสนใจบน github บางโปรเจคใช้ lint มาช่วยกำกับ standard ของการเขียนโค๊ดที่ควรจะเป็น

เเต่บางทีมันก็สร้าง ปัญหา เช่น เขียน lint บน linux เเต่เครื่องที่เป็น windows ที่ clone source ลงมาจะเจอปัญหาประจำ เรื่อง \r\n กับ \n เฉยๆ เพื่อเคาะบรรทัด

วิธีเเก้คือ fix มันให้ไปตามกฏ โดยมีคำสั่งดังนี้

ไปที่โปรเจค เรียก cmd ขึ้นมา

npm run lint -- --fix




การเคาะบรรทัด ได้ถูดอธิบาย ไว้ด้วย 


จบ...

วันเสาร์ที่ 19 พฤษภาคม พ.ศ. 2561

สร้าง WebApp ด้วย VueJS บน Digital Ocean ตอนที่ 3 : ติดตั้ง MongoDB บน Debian 8




อย่างที่เกริ่นไปก่อนว่าผมใช้ database เป็น NoSQL ซึ่งผมใช้ MondgoDB มาเป็นตัวจัดการฐานข้อมูล เพราะข้อดีในเรื่อง การบันทึกก้อนข้อมูลที่ ไม่มี structure ตายตัว ทำให้โปรแกรมยืดหยุ่นขึ้นมาก เเละใน NodeJS ยังมีตัวช่วยชื่อ Mongoose ที่ยิ่งทำให้การจัดการ structure ง่ายขึ้น

วิธีติดตั้ง

1. ต้องทำการ import public key ให้กับ linux โดย GPG Key ก็เป็นเหมือนการระบุตัวตนของ package ที่ distributor สร้างเอาไว้บน package management โดยใช้คำสั้ง

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5

2. สร้าง list ไฟล์บน debian 8 ให้รู้จัก dependency ของ MondgoDB ทั้งหมด

echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list

3. สบายตัวละ ที่เหลือเเค่อัพเดต เบาๆ

sudo apt-get update

4. หลังอัพเดตก็อินสตอร์โลด

sudo apt-get install -y mongodb-org

ซึ่งมันจะเป็นมอนโกเวอร์ชั่นล่าสุด แต่ถ้าใครอยาก ได้เวอร์ชั่นอื่น ให้ใช้คำสั่ง

sudo apt-get install -y mongodb-org=3.6.4 mongodb-org-server=3.6.4 mongodb-org-shell=3.6.4 mongodb-org-mongos=3.6.4 mongodb-org-tools=3.6.4

5. รันตัว service ให้ทำงาน

sudo service mongod start

ถ้าไม่มีผิดพลาด มันจะขึ้นข้อความประมาณนี

[initandlisten] waiting for connections on port 27017

จบ..





วันศุกร์ที่ 18 พฤษภาคม พ.ศ. 2561

สร้าง WebApp ด้วย VueJS บน Digital Ocean ตอนที่ 2 : ติดตั้ง nodejs + npm





NodeJS คือ JavaScript framework ที่ใช้ทำ back-end ซึ่งในเคสของผม ผมเลือกเพื่อมาเป็นตัว API สำหรับให้ web app เราดึงหรือบันทึกข้อมูล และยังเป็นตัวหลักสำหรับ ติดต่อ database ซึ่งจะเล่น nodejs ได้ต้องรู้จัก npm หรือ node package management ด้วย เพราะเป็นคำสั้งสำหรับการ install package ที่เป็น dependency ทั้งหมดใน web app เรา

ติดตั้งดังนี้

1. ssh เข้า droplet ด้วย root
2. ติดตั้ง npm และ nodejs  ด้วยคำสั้งสีแดง

sudo apt-get install npm
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash 
sudo apt-get install -y nodejs



3. ทดสอบด้วยการ พิมพ์

node -v
npm -v 

ต้องมีเลข version แสดงออกมา

จบ

สร้าง WebApp ด้วย VueJS บน Digital Ocean ตอนที่ 1 : ตั้งค่า Droplets และ SSH


Digital Ocean เป็นหนึ่งในผู้ให้บริการ cloud Server ที่ราคาค่อนข้างถูก และคุ้มค่าเมื่อเทียบกับราคาที่เริ่มต้นเพียง 5$ ต่อเดือนเท่านั้น ผมเลยขอยกเป็นตัวอย่างในการสร้าง Web app ที่สร้างจาก VueJS ซึ่งผมเลือก NuxtJS เป็นเฟรมเวิร์ค และใช้ MondgoDB เป็น database

ขอข้ามขั้นตอนการสมัคร Digital Ocean นะครับ ไปสมัครกันเองให้เรียบร้อยเเล้วไปที่ https://cloud.digitalocean.com/droplets/new เพื่อสร้าง droplets ใหม่

ขั้นตอน
1. เริ่มจากกการสร้าง Droplets ใหม่ เลือกดีสโทรที่เราถนัดเลย อย่างผม เลือก Debian 8 เพราะชอบ apt


2. เลือกขนาด และ performance ของ server เรา ตามราคาครับ ยิ่งแพงยิ่งแรง


3. มาที่ part ของ SSH มันคือการสร้าง key สำหรับการ remote access เข้าไปบน server เราผ่าน SSH key ซึ่งเราต้อง generate ตัว private คีย์ เก็บไว้ และเอา public key ไปวางไว้บน digital ocean ถ้ายังไม่ได้เจนให้ไป download โปรแกรมที่มีชื่อว่า PuttyGen เพื่อสร้างคีย์ครับ

พาทนี้ไม่ควรข้ามด้วยประการทั้งปวง เพราะผมลองมาสร้างคีย์ หลังจากสร้าง droplets เกิดปัญหาขึ้นโดยไม่สามารถ connect ได้ จนต้องไป reset root password ก็ยังไม่หาย ฉนั้นทำให้จบตั้งเเต่สร้างใหม่ดีกว่า

กด New SSH Key เพื่อสร้าง key ใหม่ที่เราเพิ่ง generate 

ใช้ PuTTY Key Generator เพื่อสร้างคีย์ครับ 



4. ต่อมาเลือกประเทศที่จะวาง เซิฟ เลือกสิงค์โป เพราะใกล้บ้านเราที่สุด


5. กด Create เป็นอันเสร็จเรียบร้อยครับ

ติดตามตอนต่อไป


วันพฤหัสบดีที่ 1 มีนาคม พ.ศ. 2561

[VS2017] แก้ปัญหา The operation could not be completed ตอน add referrence



ใครที่ใช้งาน Visual Studio ไปสักพักเเล้วงงอแงงเกิด error ประมาณนี้ “The operation could not be completed” ตอนกำลัง add reference ทำตามนี้ครับ

จากนั้น run cmd ในโหมด administrator แล้วไปที่ไดเร็คทอรี่ C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\PublicAssemblies ซึ่งเป็นสถานที่เก็บ dll ไลบราลี่ของ VS2017 เอง ถ้าใช้ vs ตัวอื่นก็เปลี่ยนพาทตามด้วย

Run คอมมานตามนี้ gacutil.exe -i Microsoft.VisualStudio.Shell.Interop.11.0.dll

ถ้าขึ้นข้อความประมาณนี้เป็นอันเสร็จสมบูรณ์ครับ

Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.0
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

จบ.. ซ่อม vs เสร็จกลับสู่งานต่อ



สำหรับใครที่ ไม่เจอคำสั่ง gacutil.exe ก็ให้ทำตามนี้นะครับ 

ไป download ได้ฟรีที่ลิ้งของ Microsoft SDKs http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en

จากนั้นให้ install ให้เรียบร้อย เลือกเอาเฉพาะ .Net tool อย่างเดียวก็พอ หลังจากลงเรียบร้อย ให้ไปที่โฟลเดอร์ C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools จะพบกับ gacutil.exe

ให้เพิ่ม path นี้ลงให้ system variable เพื่อเรียกใช้จากที่ไหนก็ได้ ไป system properties > advanced > Environment Variables... > System 

variables แก้คีย์ path เพิ่มพาทที่อยู่ของ gacutil.exe ด้านบน

May be like this posts