Sunday, October 24, 2010

일본어 페이지를 빨리 한국어로 번역해 보는 방법

이미 쓰고 계시는 분들도 많겠지만,

FF, Opera, Chrome계열에서 일본어 페이지를 빨리 한국어로 번역해 보는 방법입니다.

MSDN같은 경우는 일본어로는 설명이 준비되어 있는데 한국어로는 준비되어 있지 않은 경우도 많습니다.

우선 bookmark 레코드를 하나 준비해서 다음의 이미지와 같이 준비합니다.
눈여겨 봐야 할 곳은 Location입니다. Location에 다음과 같이 입력합니다.
description은 적지 않아도 상관없습니다.

http://translate.google.com/translate?js=n&prev=_t&hl=en&ie=UTF-8&u=%s&sl=ja&tl=ko&history_state0=

이중 %s 는 url 입력창에서 parameter로 입력되는 string을 의미합니다.




즉 다음과 같은 일본어 페이지의 일본어 페이지의 url 앞에 'jako '라고 쓰면



다음과 같은 페이지로 이동합니다.



FF에서 작성된 BookMark 프롬프트는 Opera와 Chrome에서 import했을 때도 잘 작동합니다.
IE 8까지는 구현되지 않고 있습니다.

이 방법은 와이프가 만족해 잘 사용했습니다. 구약소(구청)등의 페이지를 얼른 번역해 보기에 편했습니다.

이 힌트는 이 책에서 얻었습니다. 여기에서는 url 주소창에 cpan 이라는 키워드를 이용해서 모듈의 페이지로 바로 이동하는 방법을 소개합니다.


저는 키워드로 jako로 선택해 사용하고 있습니다.
이와 비슷한 방법으로
koja
enko
chko
image (구글의 이미지 검색)
등을 준비해 사용하고 있습니다.
#api의 설명 페이지로 빨리 가는 방법으로도 확장해 쓸 수 있지만, 이쪽은 jd-gui(java의 경우)나 reflector(닷넷의 경우)등의 로컬 프로그램등으로 object browser를 빨리 띄워 보는 방법을 사용하고 있습니다.

그럼 어디까지나 참고로..
잘 부탁드립니다.

Wednesday, October 20, 2010

an emeditor magic - custom query console page on webpreview pane



나는 종종 관리자툴에 쿼리를 실행해볼 수 있는 페이지를 넣는다. 물론 Select권한만. 그래놓고 emeditor에서 요렇게 사용하는 것을 즐긴다.

Friday, October 8, 2010

an emeditor magic - checking emails through EmEditor webpreview


an emeditor magic - checking emails through EmEditor webpreview showing a html embedding outlook viewer ActiveX

Sunday, October 3, 2010

ItemDone

a simple dialog shows progress on top most window
the progress calculation based on keyword of 'item' and 'done' in a text file.




Imports System.IO
Imports System.Text.RegularExpressions
Imports System.Threading

Public Class MainFrm
Private strFilePath As String = "c:\itemdone.txt"
Private iIntervalSec As Integer = 5
Private datLastWriteTime As Date
Private strItemKeyword As String = "#item:"
Private strDoneKeyword As String = "#done"
Private iItemsCount As Integer = 0
Private iDoneCount As Integer = 0
Private Thrd As Thread

Private Sub MainFrm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.TopMost = True

Dim args As String() = Environment.GetCommandLineArgs()
For Each arg As String In args
If arg.StartsWith("/f:") Then
strFilePath = arg.Replace("/f:", "")
ElseIf arg.StartsWith("/t:") Then
If Integer.TryParse(arg.Replace("/t:", ""), iIntervalSec) = False Then
iIntervalSec = 5
End If
ElseIf arg.StartsWith("/ik:") Then
strItemKeyword = arg.Replace("/ik:", "")
ElseIf arg.StartsWith("/dk:") Then
strDoneKeyword = arg.Replace("/dk:", "")
End If
Next

'// set title
Me.Text = strFilePath

'// Thread begin
Dim TStart As New ThreadStart(AddressOf ThreadMain)
Thrd = New Thread(TStart)
Thrd.Priority = ThreadPriority.Highest
Thrd.Start()
End Sub

Private Sub MainFrm_Disposed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Disposed
If Thrd.IsAlive Then
Thrd.Abort()
Thrd = Nothing
End If
End Sub


Private Sub ThreadMain()
Try
While True
UpdateProgress()
Threading.Thread.Sleep(iIntervalSec * 1000)
End While
Catch ex As Exception
Console.WriteLine(ex.ToString)
Console.WriteLine(ex.Message)
End Try
End Sub

Private Sub UpdateProgress()
Dim myReader As StreamReader
Try

Dim fi As FileInfo = New FileInfo(strFilePath)
Dim bToGo As Boolean = False

'// now - save < interval
If datLastWriteTime = Nothing Then
bToGo = True
End If
If fi.LastWriteTime.AddSeconds(iIntervalSec) < Date.Now Then
bToGo = True
End If


If bToGo Then
'// file open
myReader = File.OpenText(strFilePath)
Dim strContent As String = myReader.ReadToEnd
myReader.Close()

'// count "#item:"
Dim regularExpression As Regex = New Regex(strItemKeyword)
Dim matchResult As MatchCollection = regularExpression.Matches(strContent)
iItemsCount = matchResult.Count
Me.lbItems.Text = iItemsCount.ToString

'// count "#done:"
regularExpression = New Regex(strDoneKeyword)
matchResult = regularExpression.Matches(strContent)
iDoneCount = matchResult.Count
Me.lbDone.Text = iDoneCount.ToString

If iDoneCount = 0 Then
Me.lbProgress.Text = "0 %"
Else
Me.lbProgress.Text = String.Format("{0:f2} %", (iDoneCount / iItemsCount) * 100)
End If
End If

datLastWriteTime = Date.Now

Catch ex As Exception
Console.WriteLine(ex.ToString)
Console.WriteLine(ex.Message)
Exit Sub
End Try
End Sub
End Class

Saturday, October 2, 2010

an emeditor magic. web preview pane showing a pdf file #Emeditor





function WebPreview_Navigate(strURL) {
var wndEmeditor = shell.FindWindow("EmEditorMainFrame3", "" );
var wndEEPaneContainer;
try {
wndEEPaneContainer = wndEmeditor.FindWindow("EEPaneContainer", "");
} catch(e) {
editor.ExecuteCommandByID(5632+9); Sleep(100);
wndEEPaneContainer = wndEmeditor.FindWindow("EEPaneContainer", "");
}

var wndEmEditorWebPreview = wndEEPaneContainer.FindWindow("EmEditorWebPreview", "");
var wndShellEmbedding = wndEmEditorWebPreview.FindWindow("Shell Embedding", "");
var wndShellDocObjectView = wndShellEmbedding.FindWindow("Shell DocObject View", "");
var wndInternetExplorerServer = wndShellDocObjectView.FindWindow("Internet Explorer_Server", "");

var com = new ActiveXObject("CrowdyEmeditorCom.WebPreviewController");
var Browser2 = com.GetIEBrowser(wndInternetExplorerServer.hWnd);
if (Browser2 != null) {
Browser2.Navigate(strURL);
} else {
alert('Browser2 is null.');
}
}