2015년 11월 27일 금요일

영화 Stay Tuned 자막 만들어 봄..

재미있는 영화인듯 한데.. 자막이 없어서..

직접 번역해서 만듬..

번역하면 채널 고정 쯤 되는 듯..

다른데로 퍼갈시 출처만 밝혀 주셈..

자막받기

2021-01-29 : 기존 파일 올려놓은 구글사이트가 구글드라이브로 서비스를 변경해서 다운이 안됨.. 링크 수정 완료.

asp에서 디렉토리 안의 파일출력시 정렬을 해서 출력하고 싶을때..

요점은.. 파일시스템객체를 생성후 이것을 레코드 셋에 담고

레코드 셋의 정렬 기능을 사용한 다음..

레코드 셋을 출력하면 된다..

진짜 기발하다!!

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Option Explicit %>
<%Response.ContentType = "text/xml"%>
<%Response.AddHeader "Content-Type","text/xml"%>
<songlist>
<%
Const adVarChar = 200
Const adInteger = 3
Const adDate = 7

Dim objFSO, oFolder, oFile
Dim fileCounter, objRS
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'point to a specific folder on the server to get files listing from...
Set oFolder = objFSO.GetFolder(Server.MapPath("."))
Set objFSO = Nothing

'create a disconnected recordset
Set objRS = Server.CreateObject("ADODB.Recordset")

'append proper fields
objRS.Fields.Append "Name", adVarChar, 255
objRS.Fields.Append "DateLastModified", adDate
objRS.Open

'loop through all the files found, add to the recordset
For Each oFile in oFolder.Files
    objRS.AddNew
    objRS.Fields("Name").Value = oFile.Name
    objRS.Fields("DateLastModified").Value = oFile.DateLastModified
Next
Set oFolder=nothing

'sort and apply:
objRS.Sort = "DateLastModified DESC"
objRS.MoveFirst

fileCounter = 0
'loop through all the records:
Do Until objRS.EOF %>
<song>
<songid><%=fileCounter%></songid>
<filename><%=objRS("Name")%></filename>
<datemodified><%=objRS("DateLastModified")%></datemodified>
</song><% 
    fileCounter = fileCounter + 1
    objRS.MoveNext()
Loop
objRS.Close
Set objRS = Nothing
%>
</songlist>

MSSQL에 Excel Import 시킬때.. 데이터가 길어서 오류 발생..



보통 IMPORT 시키면 자동으로 NVARCHR(255)로 지정된다..

값이 특별히 길면 IMPORT 과정에서 오류가 발생함..

TEXT로 변경해도 읽어오는 쪽에서 문제가 있기에 진행이 안됨..

위의 링크처럼 엑셀의 레지스트리를 수정하면 된다.

jQuery에서 문자열을 json 객체로 변환시...


parseJSON 을 사용하면 되는 건 맞는데!!! 주의 할 점!!!

문서 대강대강 보다가.. 2시간 날림..!!

문자열 만들때..


1
2
var obj = jQuery.parseJSON( '{ "name": "John" }' );
alert( obj.name === "John" );

반드시!!! 쌍따옴표를 써야 한다.. javascript여서.. 홑따옴표로 변형해서 썼더니 절대 안됐음..

설명을 잘 읽어 볼걸......

Passing in a malformed JSON string results in a JavaScript exception being thrown. For example, the following are all invalid JSON strings:
  • "{test: 1}" (test does not have double quotes around it).
  • "{'test': 1}" ('test' is using single quotes instead of double quotes).
  • "'test'" ('test' is using single quotes instead of double quotes).
  • ".1" (a number must start with a digit; "0.1" would be valid).
  • "undefined" (undefined cannot be represented in a JSON string; null, however, can be).
  • "NaN" (NaN cannot be represented in a JSON string; direct representation of Infinity is also not permitted).

jquery document, window ready, load 이벤트 순서 정리..

$(document).load(

function() {
console.log("doc load");
});
 해당 이벤트 없음
$(document).ready(

function() {
console.log("doc ready");
});
1등
$(window).ready(

function() {
console.log("window  ready");
});
2등
$(window).load(

function() {
console.log("window load")
$("#divOuter").fadeIn("slow");
});
document를 다 읽은 후 발생
3등

헷갈려서.. 그냥 함 돌려봄..

2015년 11월 26일 목요일

Apache SOLR 특정 컬럼에 빈값을 허용하지 않으려면..

환경 : solr 4.3

웹 문서에서 보통 필터 조건으로 

-컬럼명:[* TO *] 이라고 되어 있는데.... 

개뿔!!!!!!!!!!!!!! 되지도 않음


반대로 생각해서 허용 조건을 넣어야 함.


컬럼명:[1 TO *]

끗!

5. Classic ASP + Solr 연동

1. 혹시 모를까봐 알려주는데 query문 테스트는 solr 관리자 query에서 하는건 알지?

2. 이번엔 서비스를 준비해 보자.
 <%
Session.CodePage = 65001
Response.ContentType = "application/json"
Response.Charset = "utf-8"
 
sMode = Request.QueryString("sMode") '@sMode int, --0:전체, 1:도서명.......
if sMode = "" then sMode = 0
sMode2 = Request.QueryString("sMode2")
searchCol = "prma_name"
 
Select Case sMode
 Case 0123
  searchCol = "search_prma_name"
        ...
End Select
 
catLimit = ""
Select Case sMode
 Case 1,4,5,6
  catLimit = "A"
 ...
End Select
 
addSKey = ""
sKey = Request.QueryString("sKey")
sKeyLen = LEN(sKey)
 
if cfnChkSpecialChr(sKey) >0 And sKeyLen = 1 Then Response.End()  '특수문자 1글자 들어오면 검색 중단'
 
chkPlace = 0
chkPlace = INSTR(sKey, "(")   '특수문자 입력시에 체크함'
limitLen = 0
if chkPlace > 0 then
 addSKey = Mid(sKey, chkPlace, Len(sKey))  '특수문자 이후의 글자만 추출'
 limitLen = Len(addSKey)
end if
 
sKey = cfnEscapeStr(sKey)
sKeyOrigin = sKey
 
spaceChk = Split(sKeyOrigin," ")  '공백이 들어간 입력 체크'
Dim spaceDim
ReDim spaceDim(UBound(spaceChk))
cnt = 0
For Each item In spaceChk
 spaceDim(cnt) = spaceQuery & ".?" & item & ".?"
 cnt = cnt + 1
Next
 
sKeyOrigin = Server.URLEncode(sKeyOrigin)
 
if chkPlace < 0 then addSKey = sKeyOrigin
 
sKey = Replace(sKey, " """)
sKey = Server.URLEncode(sKey)
 
addSKey = cfnEscapeStr(addSKey)
addSKey = Server.URLEncode(addSKey)
 
sKey2 = Request.QueryString("sKey2")
 
nRowCnt = Request.QueryString("nRowCnt")
if nRowCnt = "" then nRowCnt = 10
 
nReqPage = Request.QueryString("nReqPage")
 
= Request.QueryString("j")
if j = "" then j = 1
 
dist1 = Request.QueryString("dist")
dist2 = ""
 
ord = Request.QueryString("ord") '--검색정렬 순 0:등록순, 1:판매순, 2:가격순, 99:초기검색(score)'
sortOpt = Request.QueryString("sortOpt")
if ord = "" then ord = 99
ordColNm = "prma_pcode+desc"
Select Case ord
 Case 0
  ordColNm = "입력일 "
 Case 99
  ordColNm = "score "
End Select
 
if sortOpt = "0" then
 ordColNm = ordColNm & "desc"
else
 ordColNm = ordColNm & "asc"
end if
 
ordColNm = ordColNm & ",pcode desc"
 
Dim HttpReq
Dim Diamond
Set HttpReq = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0")
 
urlParam = ""
fliterStr = "&fq=-prma_jeco:8 AND -ls_code:T"
 
if sKey <> "" then 
 if sMode=0 OR sMode=1 OR sMode=2 OR sMode=3 then  
  urlParam = urlParam & "?q=((search_pname:(" & skey & "* or """ & skey & """ or """ & sKeyOrigin & """)) OR ("
  for i = 0 to UBound(spaceDim) '공백 넣었을때 처리.. 각각 분리해서 키값으로 연산..'
   urlParam = urlParam & "pname:/"&Server.URLEncode(spaceDim(i))&"/ AND "
  next
  urlParam = Left(urlParam, Len(urlParam)-4) & ""
  if limitLen = 2 then urlParam = urlParam & " OR pname:/.?"&addSKey&".?/"
  urlParam = urlParam & ")" 
  if limitLen = 2 then urlParam = urlParam & " OR pname:"&Replace(sKeyOrigin, "("" (")&""  
  urlParam = urlParam & ")" 
 else
  urlParam = urlParam & "?q="& searchCol & ":" & skey & ""  
 end if
end if
 
if sKey2 <> "" then
 if sMode2 = 1 OR sMode2 = 0 then
  urlParam = urlParam & " AND (search_pname:(" & skey2 & "* or """ & skey2 & """ or " & sKeyOrigin2 & ")"& " OR search_pname:" & sKeyOrigin2 & "*)"
 else
  urlParam = urlParam & " AND "& searchCol2 & ":(" & skey2 & "* or """ & skey2 & """ or " & sKeyOrigin2 & ")"
 end if
end if
 
if j <> "-1" then
 if j = "1" then
  fliterStr = fliterStr & " AND 재고:1"
 else
  fliterStr = fliterStr & " AND 재고:0"
 end if
end if
 
if dist1<> "" then fliterStr = fliterStr & " AND 대분류:" & dist1
 
if dist2<> "" then fliterStr = fliterStr & " AND 중분류:" & dist2
 
rowStr = "&start="&((nReqPage-1) * nRowCnt)&"&rows="&nRowCnt
sortStr = "&sort=" & ordColNm
optStr = "&wt=json&indent=true&defType=edismax&stopwords=true&lowercaseOperators=true&q.op=AND"
 
url = "검색서버주소/solr/lifebook/select" & urlParam
url = url & optStr
url = url & fliterStr
url = url & sortStr
url = url & rowStr
 
if UCASE(Request.QueryString("d")) = "T" then    '디버깅용 코드'
 Response.Write(url)
 Response.End()
end if
 
HttpReq.open "GET", url, False
HttpReq.send
 
Response.Write HttpReq.responseText
 
Function cfnEscapeStr(chkKey)
 chkKey = Replace(chkKey, "\""\\")
 chkKey = Replace(chkKey, "+""\+")
 chkKey = Replace(chkKey, "-""\-")
 chkKey = Replace(chkKey, "&&""\&&")
 chkKey = Replace(chkKey, "||""\||")
 chkKey = Replace(chkKey, "!""\!")
 chkKey = Replace(chkKey, "(""\(")
 chkKey = Replace(chkKey, ")""\)")
 chkKey = Replace(chkKey, "{""\{")
 chkKey = Replace(chkKey, "}""\}") 
 chkKey = Replace(chkKey, "[""\[")
 chkKey = Replace(chkKey, "]""\]")
 chkKey = Replace(chkKey, "^""\^")
 chkKey = Replace(chkKey, Chr(34)"\" & Chr(34))
 chkKey = Replace(chkKey, "~""\~")
 chkKey = Replace(chkKey, "*""\*")
 chkKey = Replace(chkKey, "?""\?")
 chkKey = Replace(chkKey, ":""\:")
 cfnEscapeStr = chkKey
End Function
 
Function cfnChkSpecialChr(chkKey)
 Dim chkSpChar(17)
 chkSpChar(0) = "\"
 chkSpChar(1) = "+"
 chkSpChar(2) = "-"
 chkSpChar(3) = "&&"
 chkSpChar(4) = "||"
 chkSpChar(5) = "!"
 chkSpChar(6) = "("
 chkSpChar(7) = ")"
 chkSpChar(8) = "{"
 chkSpChar(9) = "}"
 chkSpChar(10) = "["
 chkSpChar(11) = "]"
 chkSpChar(12) = "^"
 chkSpChar(13) = """"
 chkSpChar(14) = "~"
 chkSpChar(15) = "*"
 chkSpChar(16) = "?"
 chkSpChar(17) = ":"
 rtnCnt = 0
 For tmp = 0 To UBound(chkSpChar)
  if Instr(chkKey, chkSpChar(tmp)) then
   rtnCnt = rtnCnt + 1
  end if
 Next
 cfnChkSpecialChr = rtnCnt
End Function
%>


2.1. 코드를 보면 최상단에 문자셋을 유니코드로 설정을 해주는게 있다. json을 사용해서 주고 받기에 컨텐츠 타입도 json으로 설정함.

2.2. 필터로 사용될 조건과 검색어로 들어갈 조건을 구분해서 잘 작성하도록..

2.3. 희안하게 공백을 넣었을때랑 안 넣을때랑 차이가 많이 나서 OR로 결과를 붙이는 방식으로 접근했다.

2.4. 특수문자 사용시에는 "회심(폴" 과 "회심 (폴"의 결과가 달라서 특수문자가 들어가면 특수문자 앞을 띄워줘서 결과를 OR로 결합을 했다.

2.5 특수문자 + 1글자만 사용해도 결과가 잘 안나와서 OR로 결과를 붙여왔다.

2.6. 질의어는 와일드카드(*)는 질의어의 LIKE와 동일함

2.7. 더블쿼테이션("")으로 감싸면 포함된 단어 검색

2.8. 슬래쉬(/)로 감싸면 정규식 사용이다. 그냥 일반적으로 /.?검색어/?/ 형식으로 사용했다.

2.9 검색어에 포함되는 특수문자는 당연히 공통 함수로 escape 처리해버렸음.

2.10. solr 관리자에는 안 보이는 항목인데 q.op 옵션으로 기본 검색 질의 결과를 OR이나 AND로 조절할 수 있다. 정확한 결과를 출력하기 위해 AND로 값을 지정했다.

2.11. 검색어는 Server.URLEncode(sKey)로 인코딩을 반드시 해 줘야 한다!

2.12. 3달동안 짠거라... 안 쓰는 값도 있을 수 있다.. 알아서 빼고 보셈.

3. 결과를 만드는 화면은 json 처리 하는 거라 굳이 안 만들겠음.. 혹시 나중에 내가 필요하면 추가 작성

4. 끗.... 개고생 그만하고 싶다..

BE Band (비밴드) - 2024년 03월 02일 잠실새내 락앤롤욱스 공연

나의 10~20대를 보낸 잠실에서의 공연.. 오랜만에 가보니.. 여기가.. 마눌님과 자주 가던 영화관이었는데... 여긴 뭐가 있었는데... 란 추억도 떠올리며 기분좋게 감.​ 공연장은 좀 협소한 편이었고, 인천의 쥐똥나무 보다는 약간 크고... 인천 ...