2013年3月23日 星期六

Google Keep 出現了,Evernote 要丟嗎?

從2010年用Evernote到現在,兩年多的時間,這期間也會比較別家的產品,閱讀心得或是上課重點是與 Google 文件比較,網摘(攫取網頁)有Read it later, Instalpaper,怎麼比我都認為 Evernote  好用又方便而勝出。
只是最近在 Android 手機上面有個問題困擾我:當我在看書或是看展覽的時候要建立一則筆記,需要拍攝很多張相片,用 Evernote 筆記拍照片功能,每拍一張要等約二三十秒,拍10張就浪費好幾分鐘了,昨天看到 Google Keep 新聞後就下載到手機,4秒,拍一張4秒,繼續拍下一張,不虧是 Android 就 Google 自家產品,掌控得如此有效率。
不過目前看到 Google Keep 強的地方就只在這裡,To be, or not to be? This is a question. 再觀察吧!

2012年9月26日 星期三

VBScript get user full groups in Windows Server and map drive


This is I setup Logon Script in Microsoft Windows 2000 Server, and need to setup something by different group. Frist time I use GetObject("LDAP://" & objADSystemInfo.UserName)  to enumerate, but Primary Group not appear, so I find other way in http://www.vbforums.com that use "open database". Now it work fine to me.

Option Explicit
Dim DrvID, strGroup, strGroups(10), GroupName, OSVer, SystemDir, PosStart, PosEnd, strUserName, strComputerName
Dim objADSystemInfo, objUser, SystemSet, System, fso, objShell, objExecObject
Dim f, Flag, MyDate, MyTime
Dim intPrimaryGroupID, objConnection, objCommand, objRecordSet
'On Error resume next
'Wscript.Echo "Login.vbs Start"
Set objADSystemInfo = CreateObject("ADSystemInfo")
strUserName = TrimCN(objADSystemInfo.UserName)
strComputerName = TrimCN(objADSystemInfo.ComputerName)

MyDate = Date  
MyTime = Time
Set fso = CreateObject("Scripting.FileSystemObject")
LogTxt MyDate & " " & MyTime & " " & strUserName & "@ " & strComputerName & ": "
Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName)
intPrimaryGroupID = objUser.Get("primaryGroupID")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = ";(objectCategory=Group);" & "distinguishedName,primaryGroupToken;subtree" 
Set objRecordSet = objCommand.Execute
Do Until objRecordset.EOF
    If objRecordset.Fields("primaryGroupToken") = intPrimaryGroupID Then  
        strGroups(0) = TrimCN(objRecordset.Fields("distinguishedName"))
        'WScript.Echo "Primary group:" & objRecordset.Fields("distinguishedName")
    End If
    objRecordset.MoveNext
Loop
objConnection.Close
DrvID=1
For each strGroup in objUser.Groups '
  strGroups(DrvID) = Mid(strGroup.Name, 4)
  DrvID = DrvID + 1
Next
 
DrvID=77  'Map Drive from M Drive
Flag = False
For each strGroup in strGroups 'depends on which group to map drive
  If strGroup="" Then Exit For
  LogTxt strGroup & ", "
  If UCase(GroupName) = "HR" then DrvID = NetMap(DrvID, "\\Nas_SA\HR")
  If UCase(GroupName) = "MEPD" then
    DrvID = NetMap(DrvID, "\\NAS_SA\MEPD_S")
    DrvID = NetMap(DrvID, "\\NAS_SA\MEPD")
   
    Flag = True
  End If
  If UCase(GroupName) = "DESK" then
    DrvID = NetMap(DrvID, "\\Nas_SA\Desk")
    DrvID = NetMap(DrvID, "\\NAS_SA\SchoolPlanning")
  End If
  If UCase(GroupName) = "BB" then DrvID = NetMap(DrvID, "\\NAS_SA\BB")
  If UCase(GroupName) = "SB" then DrvID = NetMap(DrvID, "\\NAS_SA\SB")
  If UCase(GroupName) = "PRINTDEPT" then DrvID = NetMap(DrvID, "\\NAS_SA\PrintDept")
  If UCase(GroupName) = "MARKETING" then DrvID = NetMap(DrvID, "\\NAS_SA\Marketing")
  If UCase(GroupName) = "CEDIT" then DrvID = NetMap(DrvID, "\\NAS_SA\CEdit")
  If UCase(GroupName) = "Typeset" then DrvID = NetMap(DrvID, "\\NAS_SA\Typeset")
  If UCase(GroupName) = "Typeset" then DrvID = NetMap(DrvID, "\\MACFILESERV\8F_art")
  If UCase(GroupName) = "Typeset" then DrvID = NetMap(DrvID, "\\MACFILESERV\Mac2Pc")
Next

LogTxt vbCrLf

'Wscript.Echo "2"  'test
Set objShell = WScript.CreateObject("WScript.Shell")

If FindIP10() Then  'brand company
objShell.Run "ROUTE ADD 192.168.1.0 MASK 255.255.255.0 10.0.1.250", 0
objShell.Run "ROUTE ADD 210.59.236.224 MASK 255.255.255.248 10.0.1.250", 0
objShell.Run "ROUTE ADD 60.254.165.16 MASK 255.255.255.252 10.0.1.250", 0
objShell.Run "ROUTE ADD 0.0.0.0 MASK 0.0.0.0 10.0.1.254", 0
Else  'other
objShell.Run "ROUTE ADD 10.0.0.0 MASK 255.0.0.0 192.168.1.253", 0
objShell.Run "ROUTE ADD 210.59.236.224 MASK 255.255.255.248 192.168.1.253", 0
objShell.Run "ROUTE ADD 60.254.165.16 MASK 255.255.255.252 192.168.1.253", 0
objShell.Run "ROUTE ADD 61.63.52.192 MASK 255.255.255.224 192.168.1.253", 0
objShell.Run "ROUTE ADD 0.0.0.0 MASK 0.0.0.0 192.168.1.254", 0
End If
'Wscript.Echo "3"
If DrvID = 77 Then WScript.Quit()
Dim objWMIService, colProcesses, objProcess, objDir
Set objWMIService = GetObject("winmgmts:")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process where name='Client.exe'")
Do While  colProcesses.Count
    For Each objProcess In colProcesses
       objProcess.Terminate (0)
    Next
    Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process where name='Client.exe'")
Loop

'Clean client's program... hunting high and low....
On Error Resume Next
Set objDir = FSO.GetFolder("C:\")
getInfo(objDir)
Set objDir = FSO.GetFolder("D:\")
getInfo(objDir)
Set objDir = FSO.GetFolder("E:\")
getInfo(objDir)
If Flag = True Then objShell.Exec("autorun.exe") 'Some group need run other program
WScript.Quit()

Sub getInfo(pCurrentDir)
Dim aItem
    On Error Resume Next
For Each aItem In pCurrentDir.Files
'   If Err.Number>0 Then WScript.Echo "pCurrentDir:" & pCurrentDir.Path & vbCrLf & Err.Description
  If LCase(aItem.Name) = "client.exe" Then
    Err.Clear
  aItem.Delete
'   If Err.Number>0 Then WScript.Echo aItem.Path & vbCrLf & Err.Description
  End If
Next
For Each aItem In pCurrentDir.SubFolders
  getInfo(aItem)
Next
End Sub

Function NetMap(DrvID, strDistination ) 'Map Drive
  Dim objNetwork, fso, DrvName
  On Error resume next
  DrvName = Chr(DrvID) + ":"
  Set objNetwork = CreateObject("WScript.Network")
  Set fso = CreateObject("Scripting.FileSystemObject")
  If (fso.FolderExists(DrvName)) Then
    objNetwork.RemoveNetworkDrive DrvName
    objNetwork.MapNetworkDrive DrvName, strDistination
  Else
    objNetwork.MapNetworkDrive DrvName, strDistination
  End If
  NetMap = DrvID + 1  'If much drive need map
  On Error GoTo 0
End Function

Function FindIP10() 'different sub net
Dim objWMIService, IPConfigSet, IPConfig, i
FindIP10=False
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration ")
For Each IPConfig in IPConfigSet
   If Not IsNull(IPConfig.IPAddress) Then
       For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
           If Left(IPConfig.IPAddress(i),6) = "10.0.1" Then FindIP10=True
       Next
   End If
Next
End Function

Sub LogTxt(LT)
  Const ForReading = 1, ForWriting = 2, ForAppending = 8
  Set f = fso.OpenTextFile("\\Server1\pub$\VBSLog.txt", ForAppending, True)
  f.Write LT
  f.Close
End Sub

Function TrimCN(strCN)
  PosStart = InStr(strCN, "=")+1
  PosEnd = InStr(PosStart, strCN, ",")
  TrimCN = Mid(strCN, PosStart, PosEnd - PosStart)
End Function

2010年8月18日 星期三

[分享] 讓iBook也有繁體中文字典

[分享] 讓iBook也有繁體中文字典: "MAC內建字典跟iPad的字典檔的格式是相同的, 只要把MAC上的字典檔送上iPad就行了!
1.先去抓字典檔吧!
http://www.versiontracker.com/dyn/moreinfo/macosx/33845

2.解開壓縮後, 應該會有4個檔案(或是4個目錄):我是用[Langdao Englih-Chinese Dictionary.dictionary]這個檔案
3.如果你用Mac, 也可以放在MAC上使用
4.用Cyberduck或是wincp連上iPad吧!
5.進到/Library/Dictionaries的目錄
6.先將New Oxford American Dictionary.dictionary備份起來(我是直接下載備份的
7.上傳Langdao Englih-Chinese Dictionary.dictionary並將目錄名稱改為New Oxford American Dictionary.dictionary
8.將iPad respring或是重啓iPad
9.打完收工!

- 已使用 Google 工具列寄出"

2008年10月4日 星期六

DreamWeaver 設計網頁連接 MySQL,出現 #2013 - Lost connection to MySQL server at 'reading initial communication packet', system error: 111

使用 Dreamweaver CS3, MySQL 5.0.45 on UBUNTU Server
按照書上說 Dreamweaver 設定好網站然後到資料庫新增 MySQL 連線,打上 Server IP, 帳號密碼,就可以選 MySQL 裡面的資料庫了。
偏偏我就出現了 #2013 - Lost connection to MySQL server at 'reading initial communication packet', system error: 111
經過研究許久原來是設定問題:
nano /etc/mysql/my.cnf
有人說 [mysqld] 下方增加 skip-name-resolve
有人說 max_allowed_packet = 32M
不過我最後是改了 bind-address 把 127.0.0.1 改成聯外界面卡的 IP 就通了。

後記附註 :
安裝 phpmyadmin 要先改 config.sample.inc.php 改其中一行
$cfg['Servers'][$i]['auth_type'] = 'cookie';
改成
$cfg['Servers'][$i]['auth_type'] = 'http';
較為安全
存成 config.inc.php

2008年7月15日 星期二

MAC 電腦要用便宜 3G 上網

MAC 電腦要用 3G 上網 survey了半天的結果:
(目前條件是已經有 3g 門號, 也申請上網功能, 在不綁約的情形)

純3G(or 3.5G) 網卡上網
華為 E220 在 MAC 相容性高, 在拍賣網找到的價格也比較便宜:2990 .
華碩 T500 目前不相容 MAC, 但據說傳輸率較高, 找到 3100 的.
網拍搜尋 'E220 免 -兌' or 't500 免 -兌'

手機上網
SonyEricsson G502 有 HSDPA 7.2Mbps 速率, 網拍看到全新品 5900.
只是在 MAC 上要自己找 driver.

真是難抉擇阿!

2008年6月5日 星期四

SVN Server 加上使用者認證

在安裝完 SVN Server 後如果沒有設立認證, 任何人只要知道網址, 就可以 check out 所有檔案了, 所以要加上認證功能.
先建立密碼檔:
sudo htpasswd -c /etc/subversion/passwd user-name
-c 代表新建立密碼檔,(-m 可以用 md5 加密, 多一層保障) 建立一個叫做 user-name 的使用者, 並會要求輸入密碼兩次.
想要確認是否建立, 可以輸入 cat /etc/subversion/passwd 查詢
建立後再進入 Apache 設定檔修改
sudo nano /etc/apache2/sites-available/default
將 location 段落修改如下
<Location /svn>
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName DAV
AuthUserFile /etc/subversion/passwd
Require valid-user
</Location>
再重新啟動 Apache 即可
/etc/init.d/apache2 restart

2008年6月2日 星期一

Ubuntu 7.04 Server Apache 2 安裝 ssl

在安裝完 Ubuntu Server 版後, 預設已經裝了 Apache, 但沒有 ssl 功能.
我在安裝完 webmin 後, 多了 ssl 功能, 卻在安裝 ssl 網頁時發生衝突.
後來參考了國外的網頁安裝說明, 重新裝一次, 指令順序如下(預設已經安裝完 webmin 的環境):

先建立憑證檔案
sudo mkdir /etc/apache2/ssl
sudo openssl req -new -x509 -nodes -out /etc/apache2/ssl/apache.crt -keyout /etc/apache2/ssl/apache.key
啟動 Apache 的 ssl 模組
sudo a2enmod ssl

加入監聽port
sudo nano /etc/apache2/ports.conf
加一行

Listen 443

加入
虛擬伺服器
sudo nano /etc/apache2/sites-available/default
原來的
NameVirtualHost *
改成
NameVirtualHost *:80
最下面新增
NameVirtualHost *:443
<virtualhost *:443>
# 預設網頁根目錄 /var/www/https/ 可按照需求更改, 相關權限再另外參考 Apache 設定
DocumentRoot /var/www/https/
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</virtualhost>

這裡面自己產生的憑證檔案, 大多是自己用, 如果要公機關認可的憑證, 參考原網站有許多的地方提供.