-
xdebug with XAMPP on Mac OS X
$svn co svn://svn.xdebug.org/svn/xdebug/xdebug/trunk xdebug $cd xdebug $/Applications/XAMPP/xamppfiles/bin/phpize $./configure --enable-xdebug \ --with-php-config=/Applications/XAMPP/xamppfiles/bin/php-config \ CFLAGS="-arch i386 $CFLAGS" CCFLAGS="-arch i386 $CCFLAGS" \ CXXFLAGS="-arch i386 $CXXFLAGS" LDFLAGS="-arch i386 $LDFLAGS" $make $sudo cp modules/* /Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/ $sudo vi /Applications/XAMPP/etc/php.ini
[xdebug] zend_extension=/Applications/XAMPP/xamppfiles//lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/xdebug.so xdebug.remote_enable=on xdebug.remote_handler=dbgp xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000
http://blog.laaz.org/tech/2010/08/27/xdebug-with-xampp-on-mac-os-x/
-
ติดตั้ง oci8 ใน XAMPP for Mac OS X 1.7.3
0.ติดตั้ง xcode ก่อน
1.ดาวน์โหลด xampp สำหรับ mac โดยดาวน์โหลดทั้ง XAMPP Mac OS X 1.7.3 และ Developer package
2.ติดตั้งโปรแกรมติดตั้ง oci8
1.ดาวน์โหลด และ ติดตั้ง Oracle Instant Client Basic และ SDK ที่เป็น 32 bit
URL http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/macsoft.html
-Oracle Instant Client วางไว้ใน /usr/local/oracle ก็ได้
-SDK วาง folder sdk ไว้ใน /usr/local/oracle
-ใน fodler Oracle Instant Client
ln -s libclntsh.dylib.10.1 libclntsh.dylib
ln -s libclntsh.dylib libclntsh.so2.export CFLAGS=”-arch i386″
3./Applications/XAMPP/xamppfiles/bin/pecl install oci8
ตอนถาม path ให้ระบุ path ที่วาง Oracle Instant Client ไว้ เช่น instantclient,/usr/local/oracle4.แก้ไขแฟ้ม /Applications/XAMPP/xamppfiles/etc/php.ini
เพิ่ม extension=oci8.so5.แก้ไขแฟ้ม /Applications/XAMPP/xamppfiles/bin/envvars
DYLD_LIBRARY_PATH=”/Applications/XAMPP/xamppfiles/lib:/usr/local/oracle:$DYLD_LIBRARY_PATH”
export DYLD_LIBRARY_PATH6.restart apache
REF http://www.apachefriends.org/en/xampp-macosx.html
-
วิธีติดตั้ง tomcat 6 บน mac leopard
mac leopard มี java ติดตั้งมาแล้วดังนั้นสามารถดาวน์โหลด tomcat แบบ tar.gz มาติดตั้งได้เลย
แต่ถ้าจะติดตั้งให้รันได้แบบ service ต้องมีการทำขั้นตอนดัง URL ด้านล่างนี้http://www.malisphoto.com/tips/tomcatonosx.html
-
IE toolbar button with ATL Com
วิธีการสร้าง Browser Helper Objects (BHO) ด้วย Visual Studio
วิธีการสร้าง Toolbar สำหรับ Internet Explorer
กระดานสนทนาสำหรับการพัฒนา Internet Explorer Extension
การ Deploy DLL สำหรับ Extension ที่สร้างด้วย ATL Com
1.เปลี่ยนตรง Build เป็น Release
2.แยกแฟ้ม manifest ออกจาก DLL
Project->Properties->Configuration Properties
Manifest Tool -> Input and Output
Embed Manifest เปลี่ยนจาก Yes เป็น NO3.เปลี่ยนเป็น Static Link to ATL หรือ MFC
Project->Properties->Configuration Properties -> General
Use of ATL เปลี่ยนเป็น Static Link to ATL
กรณีใช้ MFC ด้วย ให้เลือก Use of MFC เปลี่ยนเป็น Use MFC in a Static Library4.Rebuild
-
เปิดการทำงานของ HTTPS บน OSX
1.cd /etc/apache2/extra
2.
/System/Library/OpenSSL/misc/CA.pl -newca3.
openssl genrsa -des3 -out webserver.key 10244.
openssl rsa -in webserver.key -out webserver.nopass.key5.
openssl req -config /System/Library/OpenSSL/openssl.cnf -new -key webserver.key -out newreq.pem -days 36506.
/System/Library/OpenSSL/misc/CA.pl -signreq7.แก้ไขแฟ้ม
ssl.confแก้ไขแฟ้ม config อย่าลืมแก้ไข path ให้ถูกต้อง
<IfModule mod_ssl.c> Listen 80 Listen 443 SSLRandomSeed startup builtin SSLRandomSeed connect builtin <VirtualHost _default_:443> SSLEngine on ServerName sslthis.dyndns.org ServerAdmin youremailaddress ErrorLog /var/log/httpd/error_log SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /private/etc/apache2/extra/newcert.pem SSLCertificateKeyFile/private/etc/apache2/extra/webserver.nopass.key SSLCACertificateFile/private/etc/apache2/extra/demoCA/cacert.pem SSLCARevocationPath/private/etc/apache2/extra/demoCA/crl </VirtualHost> </IfModule> 8.แก้ไขแฟ้มvi /etc/httpd/httpd.conf เปิด comment ตรงLoadModule ssl_module กับInclude /private/etc/apache2/extra/httpd-ssl.conf 9.restart apache โดย apachectl restarthttp://hints.macworld.com/article.php?story=20041129143420344
-
วิธีติดตั้ง oci8 สำหรับ php ใน mac osx leopard
1.ดาวน์โหลด และ ติดตั้ง Oracle Instant Client Basic และ SDK
URL http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/macsoft.html
-Oracle Instant Client วางไว้ใน /usr/local/oracle ก็ได้
-SDK วาง folder sdk ไว้ใน /usr/local/oracle
-ใน fodler Oracle Instant Client
ln -s libclntsh.dylib.10.1 libclntsh.dylib
ln -s libclntsh.dylib libclntsh.so
2.ติดตั้ง OCI8 โดยใช้คำสั่ง
(ถ้าต้องการ compile 32 bit ให้ใช้คำสั่ง export CFLAGS=”-arch i386″ ก่อน)
pecl install oci8
ตอนถาม path ให้ระบุ path ที่วาง Oracle Instant Client ไว้ เช่น instantclient,/usr/local/oracle
จะได้ผลลัพธ์ประมาณนี้
Installing ‘/usr/lib/php/extensions/no-debug-non-zts-20090626/oci8.so’
install ok: channel://pecl.php.net/oci8-1.4.3
configuration option “php_ini” is not set to php.ini location
You should add “extension=oci8.so” to php.ini
3.ไปแก้ไขแฟ้ม /private/etc/php.ini
เพิ่ม
include_path=”.:/usr/share/PEAR”
extension_dir=”/usr/lib/php/extensions/no-debug-non-zts-20090626″
extension=oci8.so
4.แก้ไขแฟ้ม
/System/Library/LaunchDaemons/org.apache.httpd.plist
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>DYLD_LIBRARY_PATH</key>
<string>/usr/local/oracle</string>
<key>LD_LIBRARY_PATH</key>
<string>/usr/local/oracle</string>
<key>TNS_ADMIN</key>
<string>/usr/local/oracle</string>
</dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>org.apache.httpd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/arch</string>
<string>-i386</string><string>/usr/sbin/httpd</string>
<string>-D</string>
<string>FOREGROUND</string>
</array>
<key>OnDemand</key>
<false/>
<key>SHAuthorizationRight</key>
<string>system.preferences</string>
</dict>
</plist>5.สร้างแฟ้ม tnsnames.ora ใน /usr/local/oracle
6.ให้ httpd เริ่มต้นการทำงานใหม่
sudo launchctl unload /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo launchctl load /System/Library/LaunchDaemons/org.apache.httpd.plist -
วิธีติดตั้ง Oracle 10g (10.0.2.4) บน Mac OS X Snow Leopard 10.6
ก่อนจะติดตั้ง oracle server บน MAC นั้นจะต้องมีการติดตั้ง Xcode ตั้งแต่ version 3.0 ขึ้นไป
1.ขั้นตอนการเตรียมการ
-ก่อนรันคำสั่งขอสิทธิเป็น root ก่อนโดยใช้คำสั่งsudo -i
สร้างผู้่ใช้ oracle โดยใช้คำสั่ง
dscl . -create /groups/oinstall dscl . -append /groups/oinstall gid 600 dscl . -append /groups/oinstall passwd "*" dscl . -create /users/oracle dscl . -append /users/oracle uid 600 dscl . -append /users/oracle gid 600 dscl . -append /users/oracle shell /bin/bash dscl . -append /users/oracle home /Users/oracle dscl . -append /users/oracle realname "Oracle software owner" mkdir /Users/oracle chown oracle:oinstall /Users/oracle
เปลี่ยนรหัสผ่านให้ oracle
passwd oracle
แก้ไขค่า parameter ของ kernel
vi /etc/sysctl.conf
ใส่ข้อมูลดังนี้เข้าไปkern.sysv.semmsl=87381 kern.sysv.semmns=87381 kern.sysv.semmni=87381 kern.sysv.semmnu=87381 kern.sysv.semume=10 kern.sysv.shmall=2097152 kern.sysv.shmmax=2197815296 kern.sysv.shmmni=4096 kern.maxfiles=65536 kern.maxfilesperproc=65536 net.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=65000 kern.corefile=core kern.maxproc=2068 kern.maxprocperuid=2068ออกจาก root มาเป็น user oracle โดยใช้คำสั่ง su – oracle ก็ได้
แก้ไข .bah_profile ของ user oracle โดยใช้คำสั่งvi .bash_profile
ใส่รายละเอียดดังนี้เข้าไป
export DISPLAY=:0.0 export ORACLE_BASE=$HOME umask 022 ulimit -Hn 65536 ulimit -Sn 65536เสร็จแล้วให้ reboot เครื่องก่อน เพื่อที่จะให้ค่าที่แก้ไขใน kernel มีผล
2.ขั้นตอนการติดตั้ง
-เมื่อ restart เสร็จแล้วให้ login เป็น user oracle
-ให้ดาวน์โหลด oracle 10g จาก URL http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10204macsoft_x86-64.html
-เมื่อดาวน์โหลดเสร็จแล้วให้คลาย zip โดยใช้คำสั่งmkdir Install cd Install # download db.zip to this directory unzip db.zip cd db/Disk1
-เปิด X11 ให้ทำงาน โดยอยู่ใน Applications -> Utilities -> X11
เรียกคำสั่ง ติดตั้ง โดยมี parameter เพิ่มเพื่อให้เรียกใช้ 32 bit แทน./runInstaller -J-d32
-ติดตั้งตามปกติ แต่ตอนติดตั้งให้เลือกเป็น Standard Edition และติดตั้งเฉพาะ Software อย่างเดียว (Install Software Only) ส่วนของ database จะมาสร้างภายหลัง
-ตอนติดตั้งถ้าเกิด Error ว่า “Error in invoking target ‘all_no_orcl ipc_g ihsodbc32’ …” อย่าปิดโปรแกรมติดตั้ง ให้เปิด Terminal มาอีกอันหนึ่ง แล้วพิมพ์คำสั่งcd ~/oracle/product/10.2.0/db_1/rdbms/lib vi ins_rdbms.mk
หาบรรทัดที่เขียนว่า $(HSODBC_LINKLINE) เพื่อที่จะปิด (ใน vi พิมพ์ :/HSODBC_LINKLINE เพื่อค้นหาได้) ถ้าเจอแล้วให้ปิด โดยใส่เครื่องหมาย # ไว้ จะได้เป็น
# $(HSODBC_LINKLINE)เสร็จแล้วกดปุ่มบันทึก แล้วไปกด Retry ในโปรแกรมติดตั้ง oracle ก็จะผ่านขั้นตอนนี้ได้
ตอนสุดท้ายของการติดรั้งจะ oracle จะให้เราใช้สิทธฺิ root ในการรัน scrip จะมีประมาณนี้su - username sudo /Users/oracle/oracle/product/10.2.0/db_1/root.sh
3.การสร้าง listener และ database
-แก้ไขแฟ้ม .bash_profile ของ user oracleexport ORACLE_HOME=/Users/oracle/oracle/product/10.2.0/db_1 export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib export ORACLE_SID=ORCL PATH=$PATH:$ORACLE_HOME/bin-รัน .bash_profile ให้ทำงาน
. ~/.bash_profile
-แก้ไข java ของ oracle ให้ทำงานในโหมด 32 bit ก่อน โดยแก้ไขแฟ้ม $ORACLE_HOME/jdk/bin/java ในบรรทัดที่มีข้อความ
...java -Xbootclasspath...เป็น...java -d32 -Xbootclasspath....
เสร็จแล้วให้ download oracle ที่แก้ไขเพิ่มเพื่อให้รับ mac 10.6cd $ORACLE_HOME/bin curl -O http://rayapps.com/downloads/oracle_se.zip unzip oracle_se.zip chmod ug+s oracle #ตอนที่สร้าง database ของบางคนอาจจะยังเกิด error อยู่ ต้องเอาไปแทนตัวเก่าจึงจะหาย cd $ORACLE_HOME mv oracle oracle_bk unzip $ORACLE_HOME/bin/oracle_se.zip chmod ug+s oracle rm $ORACLE_HOME/bin/oracle_se.zip
-สร้าง listerner โดยใช้คำสั่ง
netca
กดปุ่มไปเรื่อย ๆ ตามค่า default จนกว่า oracle จะบอกว่าติดตั้งสำเร็จ
เสร็จแล้วสร้าง database โดยใช้คำสั่งdbca
เลือก
- Create a Database
- General Purpose
- กำหนดค่า Global Database Name และ SID เป็นค่าที่ต้องการในที่นี้กำหนดเป็น ORCL
- Specify password for SYS and SYSTEM users
- อาจจะเลือกส่วนของ Sample Schemas ด้วยหรือไม่ก็ได้
- ใสส่วนของ Character Sets เลือก TH8TISASCII เพื่อให้รองรับภาษาไทย
ในกรณีที่เราใช้งานเป็นส่วนการพัฒนา เราจะเปลี่ยน listener ให้อยู่ที่ localhost แทน ถ้าเรา Fix IP เป็น IP เดิมตลอดไม่ต้องทำส่วนนี้ก็ได้
vi $ORACLE_HOME/network/admin/listener.ora
เปลี่ยนเป็น
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /Users/oracle/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = orcl) (ORACLE_HOME = /Users/oracle/oracle/product/10.2.0/db_1) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) )และเปลี่ยนข้อมูลแฟ้ม $ORACLE_HOME/network/admin/tnsnames.ora เป็น
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) )4.เพิ่มให้ Oracle ทำงานอัตโนมัติตอน start เครื่อง
แก้ไขข้อมูลในแฟ้ม /etc/oratab บรรทัดสุดท้ายจาก N เป็น Y
สร้างแฟ้มmkdir /Library/StartupItems/Oracle cd /Library/StartupItems/Oracle vi Oracle
ใส่ข้อมูลดังนี้
#!/bin/sh # Suppress the annoying "$1: unbound variable" error when no option # was given if [ -z $1 ] ; then echo "Usage: $0 [start|stop|restart] " exit 1 fi # source the common startup script . /etc/rc.common # Change the value of ORACLE_HOME to specify the correct Oracle home # directory for the installation ORACLE_HOME=/Users/oracle/oracle/product/10.2.0/db_1 DYLD_LIBRARY_PATH=$ORACLE_HOME/lib export ORACLE_HOME DYLD_LIBRARY_PATH # change the value of ORACLE to the login name of the # oracle owner at your site ORACLE=oracle PATH=$PATH:$ORACLE_HOME/bin # Set shell limits for the Oracle Database ulimit -Hu 2068 ulimit -Su 2068 ulimit -Hn 65536 ulimit -Sn 65536 StartService() { ConsoleMessage "Starting Oracle Databases" su $ORACLE -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" } StopService() { ConsoleMessage "Stopping Oracle Databases" su $ORACLE -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" } RestartService() { StopService StartService } RunService "$1"เปลี่ยนโหมดให้รันได้
chmod a+x Oracle
แก้ไขแฟ้ม parameter
vi StartupParameters.plist
รายละเอียดเป็น
{ Description = "Oracle Database Startup"; Provides = ("Oracle Database"); Requires = ("Disks"); OrderPreference = "None"; }หยุดการทำงานของ oracle
sudo /Library/StartupItems/Oracle/Oracle stop
เริ่มต้นการทำงานของ oracle
sudo /Library/StartupItems/Oracle/Oracle start
ซ่อนผู้ใช้ Oracle จาก login
sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add oracle
link
http://blog.rayapps.com/2009/09/14/how-to-install-oracle-database-10g-on-mac-os-x-snow-leopard/
http://www.pythian.com/news/1937/quick-install-guide-for-oracle-10g-release-2-on-mac-os-x-leopard-intel/
http://download.oracle.com/docs/cd/B19306_01/install.102/b25286/toc.htm -
Oracle PL/SQL function to split strings into tokens
ใช้งาน
get_token(‘foo,bar,baz’,-1), — ‘baz’
get_token(‘foo,bar,baz’,-2), — ‘bar’create or replace function get_token (
the_list varchar2,
the_index number,
delim varchar2 :=';'
)
return varchar2
is
start_pos number;
end_pos number;begin
if the_index = 1 then
start_pos := 1;elsif the_index < 0 then
start_pos := instr(the_list, delim, -1, abs(the_index)) + 1;else
start_pos := instr(the_list, delim, 1, the_index - 1);if start_pos = 0 then
return null;
else
start_pos := start_pos + length(delim);
end if;end if;
if the_index < 0 then
end_pos := instr(the_list, delim, start_pos+1, 1);
else
end_pos := instr(the_list, delim, start_pos, 1);
end if;if end_pos = 0 then
return substr(the_list, start_pos);
else
return substr(the_list, start_pos, end_pos - start_pos);
end if;end get_token;
ที่มา http://glosoli.blogspot.com/2006/07/oracle-plsql-function-to-split-strings.html
-
วิธีเขียน activex ใน vb6 เพื่อที่จะไม่ต้องแก้ไขค่า config ใน IE
How To Implement IObjectSafety in VB6
1.Copy 4 แฟ้มจาก \Common\Tools\VB\Unsupprt\Typlib\ ไปไว้ใน folder project
ประกอบด้วย
C1.EXE 408064 Bytes
CL.EXE 37888 Bytes
MKTYPLIB.EXE 86016 Bytes
MSPDB41.DLL 271872 Bytes
2.สร้างแฟ้ม Objsafe.odl ใน project folder
[
uuid(C67830E0-D11D-11cf-BD80-00AA00575603),
helpstring("VB IObjectSafety Interface"),
version(1.0)
]
library IObjectSafetyTLB
{
importlib("stdole2.tlb");
[
uuid(CB5BDC81-93C1-11cf-8F20-00805F2CD064),
helpstring("IObjectSafety Interface"),
odl
]
interface IObjectSafety:IUnknown {
[helpstring("GetInterfaceSafetyOptions")]
HRESULT GetInterfaceSafetyOptions(
[in] long riid,
[in] long *pdwSupportedOptions,
[in] long *pdwEnabledOptions);[helpstring("SetInterfaceSafetyOptions")]
HRESULT SetInterfaceSafetyOptions(
[in] long riid,
[in] long dwOptionsSetMask,
[in] long dwEnabledOptions);
}
}
3.ใช้ command ที่ folder ของ projectSET PATH=C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\VB98
MKTYPLIB objsafe.odl /nocpp /tlb objsafe.tlb
4.ในเมนู Project กด Reference
5.ในหน้าต่างที่ปรากฏ Reference – ชื่อ project กด Browse ไปยังแฟ้ม Objsafe.tlb ที่อยู่ที่เดียวกับ folder project
จะมี VB IObjectSafety Interface ขึ้นมาให้เลือกอันนี้
ถ้าไม่มีให้มองหา IObjectSafetyTLB แทน สามารถใช้อันนี้แทนได้6.ใน Project สร้าง module ใหม่ชื่อ basSafeCtl โดยมีรายละเอียด code ดังนี้
Option Explicit Public Const IID_IDispatch = "{00020400-0000-0000-C000-000000000046}" Public Const IID_IDispatchEx = "{A6EF9860-C720-11D0-9337-00A0C90DCAA9}" Public Const IID_IPersistStorage = "{0000010A-0000-0000-C000-000000000046}" Public Const IID_IPersistStream = "{00000109-0000-0000-C000-000000000046}" Public Const IID_IPersistPropertyBag = "{37D84F60-42CB-11CE-8135-00AA004BB851}" Public Const INTERFACESAFE_FOR_UNTRUSTED_CALLER = &H1 Public Const INTERFACESAFE_FOR_UNTRUSTED_DATA = &H2 Public Const E_NOINTERFACE = &H80004002 Public Const E_FAIL = &H80004005 Public Const MAX_GUIDLEN = 40 Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pDest As Any, pSource As Any, ByVal ByteLen As Long) Public Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As _ Any, ByVal lpstrClsId As Long, ByVal cbMax As Integer) As Long Public Type udtGUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Public m_fSafeForScripting As Boolean Public m_fSafeForInitializing As Boolean Sub Main() m_fSafeForScripting = True m_fSafeForInitializing = True End Sub7.เมนู Project -> Properties
ใน General->Startup Object เลือก Sub Main8.เปิด source code หน้าต่าง activex control ที่เราสร้างไว้
ในบรรทัดแรกให้เพิ่ม
Implements IObjectSafety
เข้าไป
9.เพิ่ม code ด้านล่างเข้าไปใน sourcecode activex control ที่เราสร้างไว้
Private Sub IObjectSafety_GetInterfaceSafetyOptions(ByVal riid As _
Long, pdwSupportedOptions As Long, pdwEnabledOptions As Long)Dim rc As Long
Dim rClsId As udtGUID
Dim IID As String
Dim bIID() As BytepdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_CALLER Or _
INTERFACESAFE_FOR_UNTRUSTED_DATAIf (riid <> 0) Then
CopyMemory rClsId, ByVal riid, Len(rClsId)bIID = String$(MAX_GUIDLEN, 0)
rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
rc = InStr(1, bIID, vbNullChar) - 1
IID = Left$(UCase(bIID), rc)Select Case IID
Case IID_IDispatch, IID_IDispatchEx
pdwEnabledOptions = IIf(m_fSafeForScripting, _
INTERFACESAFE_FOR_UNTRUSTED_CALLER, 0)
Exit Sub
Case IID_IPersistStorage, IID_IPersistStream, _
IID_IPersistPropertyBag
pdwEnabledOptions = IIf(m_fSafeForInitializing, _
INTERFACESAFE_FOR_UNTRUSTED_DATA, 0)
Exit Sub
Case Else
Err.Raise E_NOINTERFACE
Exit Sub
End Select
End If
End SubPrivate Sub IObjectSafety_SetInterfaceSafetyOptions(ByVal riid As _
Long, ByVal dwOptionsSetMask As Long, ByVal dwEnabledOptions As Long)
Dim rc As Long
Dim rClsId As udtGUID
Dim IID As String
Dim bIID() As ByteIf (riid <> 0) Then
CopyMemory rClsId, ByVal riid, Len(rClsId)bIID = String$(MAX_GUIDLEN, 0)
rc = StringFromGUID2(rClsId, VarPtr(bIID(0)), MAX_GUIDLEN)
rc = InStr(1, bIID, vbNullChar) - 1
IID = Left$(UCase(bIID), rc)Select Case IID
Case IID_IDispatch, IID_IDispatchEx
If ((dwEnabledOptions And dwOptionsSetMask) <> _
INTERFACESAFE_FOR_UNTRUSTED_CALLER) Then
Err.Raise E_FAIL
Exit Sub
Else
If Not m_fSafeForScripting Then
Err.Raise E_FAIL
End If
Exit Sub
End IfCase IID_IPersistStorage, IID_IPersistStream, _
IID_IPersistPropertyBag
If ((dwEnabledOptions And dwOptionsSetMask) <> _
INTERFACESAFE_FOR_UNTRUSTED_DATA) Then
Err.Raise E_FAIL
Exit Sub
Else
If Not m_fSafeForInitializing Then
Err.Raise E_FAIL
End If
Exit Sub
End IfCase Else
Err.Raise E_NOINTERFACE
Exit Sub
End Select
End If
End Sub
10.แค่นี้ก็ใช้ได้แล้ว ให้ทดสอบโดย รัน activex ใน HTML -
ฟังก์ชันใช้ตรวจสอบว่ามีอักษร utf อยู่ในข้อความหรือไม่
function detectUTF8($string)
{
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)+%xs', $string);
}
หมวดหมู่
เว็บไซต์น่าสนใจ
| จ | อ | พ | พฤ | ศ | ส | อา |
|---|---|---|---|---|---|---|
| « ธ.ค. | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | |||
