[카테고리:] 컴퓨터

  • ajaxplorer 삽질

    ajaxplorer 4.2.3에서는 3.x대에서 사용하던 conf.php 파일이 없다. ajaxplorer에 접속하여 admin으로 로그인 한 후 설정을 잘 찾아보면 거기서 다 할 수 있다. 특히, 용량 제한을 풀기 위해서 설정을 잘 찾아봐야 한다. 어딘가에 보면 limitation 항목이 있다.

    php.ini 파일에서는 upload_max_size인가와 post_max_size인가를 잘 고쳐줘야 한다. 2G보다 큰 수치를 입력하면 이해할 수 없는 에러가 나므로 그보다 작게 유지하도록 하자. 2000M이라든가 하는 식으로. 로그인이 안돼서 왜그런가 한참 찾았었다. 왜 업로드 가능한 최대 크기를 잘못 설정한 것이 로그인 안됨으로 나타나는 것인가. 역시 전산의 세계는 넓고 깊구나.


    http://ajaxplorer.info/

    개인용 웹하드 프로그램. 자기 컴퓨터에 설치해서 잘 쓰면 된다.


    일단은 친구들 위주로 시험삼아 계정을 뿌려봐야겠다.

  • 해커와 화가

    해커와 화가라는 폴 그래이엄의 책이 있다.



    이 책 읽고 감명받은 화가, 해커가 되었다.

  • 손톱에 코딩


    http://www.oddee.com/item_98395.aspx

    10가지 영리한 컨닝 방법이 소개되었다.



    한가지 흥미로운 것은, 이 친구는 손톱에 LaTeX의 수식 태그를 적었다는 점이다. 왜그랬을까.

    참고로 저 친구가 손톱에 적은 공식은 위와 같다. 이렇게 적는게 더 짧았을 텐데, 왜 LaTeX 태그로 적은 것일까 궁금하다.

  • 파일 이름 바꿔주는 프로그램

    1초마다 지정된 파일을 감시해서, 파일이 존재하면 자동으로 다른 이름으로 바꿔준다.




    Automover2.exe


    ‘Copyright: Keehwan Nam, 2012.

    Public Class Form1

    Private fn As String = “”

    Private index As Integer = 0

    Private begin As Integer = 0

    Private istep As Integer = 1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    OpenFileDialog1.Multiselect = False

    OpenFileDialog1.InitialDirectory = My.Application.Info.DirectoryPath

    OpenFileDialog1.Title = “Set the file that you want to audit”

    OpenFileDialog1.CheckFileExists = False

    If OpenFileDialog1.ShowDialog <> System.Windows.Forms.DialogResult.Cancel Then

    fn = OpenFileDialog1.FileName

    Try

    begin = CInt(TextBox1.Text)

    Catch

    MsgBox(“Please use integers only!”)

    Exit Sub

    End Try

    Try

    istep = CInt(TextBox2.Text)

    Catch

    MsgBox(“Please use integers only!”)

    Exit Sub

    End Try

    Timer1.Enabled = True

    End If

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    Timer1.Enabled = False

    If System.IO.File.Exists(fn) Then

    Dim fns As String() = fn.Split(“.”)

    Try


    System.IO.File.Move(fn, System.IO.Path.GetDirectoryName(fn) & “\ThisFileMustNot.Exist”)



    Do



    Try



    System.IO.File.Move(System.IO.Path.GetDirectoryName(fn) & “\ThisFileMustNot.Exist”, fn.Substring(0, fn.Length – fns(fns.Length – 1).Length – 1) & CStr(begin + (istep * index)) & “.” & fns(fns.Length – 1))

    ‘ 이 부분이 가장 신경쓴 부분이다. 자꾸 오류가 난대서…


    Exit Do



    Catch



    End Try



    index += 1



    Loop



    Catch


    End Try

    End If

    Timer1.Enabled = True

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim tip As New ToolTip()

    tip.AutoPopDelay = 5000

    tip.InitialDelay = 1

    tip.ReshowDelay = 1

    tip.ShowAlways = True

    tip.SetToolTip(Button1, “(c)Keehwan Nam,” & vbCr & “2012, APRI, GIST.”)

    tip.SetToolTip(TextBox1, “Starting index”)

    tip.SetToolTip(TextBox2, “Step”)

    begin = CInt(TextBox1.Text)

    istep = CInt(TextBox2.Text)

    End Sub

    End Class

    실행에는 닷넷2.0이 필요하고 윈도우즈 전용이다. 바이러스가 의심가면 VB.net에서 위의 소스코드를 직접 빌드해도 된다. 디자인 소스는 생략.

    뭐 이런걸 다 만드나 하겠지만, 누군가는 필요하고 누군가는 만들게 된다. 간단한 프로그램이라 그냥 민간에 공개한다. 코드를 읽어보면 알겠지만, 만들기가 매우 귀찮아 했다는 사실을 알 수 있다.

    이 루틴을 잘 활용하면 실험실 자동화에 한걸음 다가갈 수 있을듯.

  • csv 만들기

    파이썬에서는 쉼표로 구분된 자료 파일인 csv파일을 지원한다. csv모듈이 있어서, 이 모듈을 사용하면 자유롭게 csv파일을 씹고 뜯고 맛보고 즐길 수 있지만…


    http://docs.python.org/library/csv.html

    도저히 익숙해지지를 않는다.

    파이썬에서 배열은 다음과 같이 되어 있다.

    array = [[1,2,3],[3,4,5],[3,4,5]]

    이걸 str(array)로 출력시켜보면

    [[1,2,3],[3,4,5],[3,4,5]]

    이렇게 그대로 나온다.

    그래서

    for i in array:

    mycsv.write(str(i)[1:-1]+”\n”)

    이렇게 구문을 쓰면, 그럴듯한(!) csv파일이 만들어진다.

  • 윈도우즈8에 기대하는 것



    조금 전 윈도우즈7의 업데이트가 있었다. 이건 분명 MS 오피스에 대한 업데이트인데, 적용하려면 컴퓨터를 다시 시작해야 한다. 프로그램을 어떻게 만들었는지 모르겠지만, 응용 프로그램을 업데이트 하기 위해서 시스템 전체를 다시 시작해야 한다는 것은 운영체제의 설계가 처음부터 완전히 잘못되었다는 뜻이다.

    MS 오피스의 기능에 굳이 커널을 건드릴만한 것들이 없는 것으로 봐서는, MS 오피스의 성능을 위해서 운영체제에서 뭔가 특별한 API를 제공하는 것이라고 생각된다.

    아무튼 MS의 개발자들도 나름 굉장한 실력자들일텐데 어쩌다가 이런걸 만들었나 모르겠다.

    윈도우즈의 다음 버전에서는 이런 것들이 개선될까?

    하지만…


    http://www.zdnet.co.kr/news/news_view.asp?artice_id=20111119115550

    개선했다고 하는게 이모양이니 별로 기대가 되지는 않는다. 운영체제의 중요 파일을 바꾸기 위해 재시작 한다면 납득할 수 있지만, 오피스처럼 분명히 응용프로그램에 대한 업데이트인데도 재시작 하는 것은 설계를 잘못했다는 생각 밖에는 들지 않는다.

  • tiff-csv converter

    TIFF-CSV 변환기. Python 2.7에서 작성되었고 ImageMagick과 wxPython이 필요하다.

    # -*- coding: utf-8 -*-

    # This program converts 16-bit TIFF files from XCAP of EPIX CCD to .csv and .png.

    # This program depends on ImageMagick and wxPython.

    # Please make sure ‘convert’ command is possible at the program path.

    # Copyright 2012, Kee Hwan Nam, APRI, GIST.

    # This program can be used under Gnu Public Licence version 3.

    # Refer to http://www.gnu.org/copyleft/gpl.html

    import wx

    import os

    import csv

    import sys

    reload(sys)

    sys.setdefaultencoding(‘cp949’)

    def convertfilter(p):

    a = csv.reader(open(p.replace(“\\\\”,”\\”), ‘r’), delimiter=’,’)

    pp = p[:-3] + “csv”

    ppp=open(pp, ‘w’)

    index = 1

    flag = 0

    for i in a:

    if flag == 0:

    d=int(i[0].split(“:”)[1])

    flag+=1

    else:

    ppp.write(i[2])

    if index%d==0:

    ppp.write(“\n”)

    else:

    ppp.write(“,”)

    index+=1

    def converting(a, dirn,filen):

    for filens in filen:

    #~ print(filens)

    print(filens[-3:].lower())

    if filens[-3:].lower()==”tif”:

    filename = dirn+”\\”+filens

    print((“convert \”” + filename + “\” \”” + filename + “.txt\””))

    os.system(“convert \”” + filename + “\” \”” + filename + “.txt\””)

    os.system(“convert \”” + filename + “\” \”” + filename + “.png\””)

    convertfilter(filename + “.txt”)

    os.system(“del \”” + filename + “.txt\””)

    class mainframe(wx.Frame):

    def __init__(self, *args, **kwds):

    kwds[“style”] = wx.DEFAULT_FRAME_STYLE

    wx.Frame.__init__(self, *args, **kwds)

    dig = wx.DirDialog(None, message=”Choose data files”, style = wx.FD_MULTIPLE)

    if dig.ShowModal() == wx.ID_OK:

    pp = dig.GetPath()

    else:

    exit()

    os.path.walk(dig.GetPath(), converting, 0)

    class TIFFconv(wx.App):

    def OnInit(self):

    wx.InitAllImageHandlers()

    main = mainframe(None, -1, “”)

    self.SetTopWindow(main)

    main.Show(True)

    main.Show(False)

    exit()

    return 1

    if __name__ == “__main__”:

    TIFFconv = TIFFconv(0)

    TIFFconv.MainLoop()

  • 이메일 주소들



    토익 접수하다보니 이메일 선택창이 나왔다. 위의 주소 중 몇개나 살아있는지 보자.

    hanmail.net – 한국의 이메일 중 대명사지만, 스팸메일이 너무 많아서 차단당하는 비율이 많았다.

    freechal.com – 이 글 쓰려고 10년만에 접속해봤다. 아직 사용할 수 있더라. 30MB의 대용량을 제공한다. 헐.

    hananet.net – 없어졌다.

    hanmir.com – 없어졌다. 파란이랑 합쳤었던 것 같은데, 그 파란이 없어졌으니 이것도 없어진 셈이다.

    hotmail.com – MS의 이메일 서비스인데 이제 곧 없어진다.

    korea.com – 아직 서비스중이다. 도메인 값만 비싸고 그닥 인기는 없는 듯 싶다.

    lycos.co.kr – 네이트와 합병된 것 같다. 도메인이 살아있긴 한듯.

    nate.com – 한국의 대표 이메일 서비스가 되었다. 그러나 해킹을 당했으니…

    naver.com – 역시 한국의 대표 이메일 서비스 중 하나이다.

    netian.com – SMS전문 사이트로 거듭났지만 이메일은 살아있다. 하지만 아무래도 카톡때문에 곧 망할 것 같다.

    yahoo.co.kr – 아직 살아있다. 후후. -2013년부터는 한국에서 영업 안한댄다.

    orgio.net – 없어졌다.

    paran.com – 없어졌다.

    이정도면 nate와 naver를 제외하면 나머지는 거의 다 사라졌다고 해도 과언이 아니라고 생각한다.

    그냥 직접입력 하나만 둬도 괜찮을 것 같은데 왜 아직 안고치고 있는 것일까.

  • \의 비극

    MS-DOS는 유닉스/리눅스를 따라하였으나 따라잡지 못했다. 리눅스 시스템에서는 디렉토리의 하위단계 구분자가 /이다. DOS에서는 하위단계 구분자로 \를 사용한다. 이것이 비극의 시작이다.

    덕분에 지금 윈도우즈7에서도 \를 디렉토리 하위단계 구분자로 사용한다.

    문제는, 파이썬을 비롯한 많은 언어에서 \를 탈출 부호(Escape character)로 사용한다는 점이다. 예를 들어 \n은 줄넘김, \t는 탭 하나 등 많은 의미를 담고 있다.

    그래서 리눅스에서는 잘 작동하는 스크립트도 윈도우즈에서는 안되는 현상이 나타난다. \를 \\로 바꿔주는 루틴을 추가해주어야만 한다.

    엉엉.

  • 다음중 하나를 고르시오



    버스를 타고 다니다 보니 무슨 코드를 광고판에 걸어놓고 찍어보라고 한다.


    더보기