프로그래머를 위한 계산기 - pcalc

지리즈의 이미지

유수히 뛰어난 계산기가 있지만,
이 계산기의 강점은 프로그래머 혹은 시스템 관리자들에게 특화되어 있다는 점이다.
콘솔에서 돌아간다는 것과 2진수 16진수 10진수를 섞어서 자유롭게 계산할 수 있다.
그리고, 항상 결과값을 10진수 16진수 2진수로 보여준다.

zirize@zirize ~ $ pcalc 0y1001
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 0x9
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 9
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 0y1001 + 0x9 + 9
        27              0x1b            0y11011
zirize@zirize ~ $ pcalc 0x9 / 0y1001 * 9
        1               0x1             0y1
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        9               0x9             0y1001
zirize@zirize ~ $ pcalc  0y1001 / 9 * 0x9
        1               0x1             0y1
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        0               0x0             0y0
        9               0x9             0y1001
zirize@zirize ~ $ pcalc 0xa % 0y1001
        1               0x1             0y1
zirize@zirize ~ $ pcalc f
 
Functions: (case insensitive)
 
    SIN         math sinus              COS        math cos
    ATAN        math atan               LOG        math log
    LOG10       math log10              EXP        math exp
    SQRT        math sqrt               INT        math int
    ABS         math abs
 
    F2C         converting temperature -> fahrenheit to celsius
    C2F         converting temperature -> celsius to fahrenheit
    IN2MM       converting length      -> inches to millimeter
    MM2IN       converting length      -> millimeter to inches
    PO2KG       converting mass        -> pounds to kilogram
    KG2PO       converting mass        -> kilogram to pounds
 
For functions type pcalc f
For controls  type pcalc l
For operators type pcalc o
For constants type pcalc c
 
zirize@zirize ~ $ pcalc o
 
Operator priorities:
 
    right  assotiation:     '='         ASSIGNMENT
    left   assotiation:     or          BINARY OR
    left   assotiation:     and         BINARY AND
    left   assotiation:     '<' '>'     BINARY LEFT/RIGHT SHIFT
    left   assotiation:     '+' '-'     ADDITION/SUBTRUCTION
    left   assotiation:     '*' '/' '%' MULTIPLY/DIVIDE
    left   assotiation:     '-'         UNARY MINUS
    right  assotiation:     '^'         EXPONENTATION
 
For functions type pcalc f
For controls  type pcalc l
For operators type pcalc o
For constants type pcalc c
 
zirize@zirize ~ $ pcalc c
 
Constants:
 
    PI      3.14159265358979323846
    E       2.71828182845904523536
    GAMMA   0.57721566490153286060
    DEG     57.29577951308322087680
    PHI     1.61803389974989484820
 
For functions type pcalc f
For controls  type pcalc l
For operators type pcalc o
For constants type pcalc c
 
zirize@zirize ~ $    

댓글

체스맨의 이미지

좋군요. 꼭 있었으면 하던 기능이 있네요. bc 는 지워야겠습니다.

써보실 분들은 참고로, 구글에선 쉽게 안찾아지는 것 같은데, 소스포지에서 다운 받을 수 있습니다...

http://sourceforge.net/project/showfiles.php?group_id=196894&package_id=232861&release_id=565549

Orion Project : http://orionids.org

지리즈의 이미지

gentoo portage에 있길래, 다른 배포본들도 그냥 쉽게 구할 수 있는줄 알았습니다.

http://pcalc.sourceforge.net/

가도 별 내용은 없습니다.

복잡한 기능은 설치한 후 /usr/share/doc/pcalc 안의
readme파일과 example을 참조하시는 편이 좋을 듯합니다.

그래봤자 사칙연산외에는 거의 사용할 일이 없을 듯 하지만요. 쿠쿠

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

체스맨의 이미지

cygwin 에서도 ( 물론이겠지만 ) 잘 빌드 되네요.

octal number 는 결과에는 같이 표시를 안해주나봅니다... 옵션같은 걸 못찾겠네요.

> pcalc 0c777
   511             0x1ff           0y111111111

저는 무엇보다 AND, OR, SHIFT 등의 비트 연산이 되는 게 맘에 드네요. 좌,우 쉬프트는 < > 이고, redirection 과 혼동되지 않기 위해 "" 로 둘러싸주는 게 좋습니다.

> pcalc "0x10>4"
        1               0x1             0y1

다른 기능들은 소스 안에 있는 README 파일을 읽어보시면 잘 알 수 있을 것 같네요. 아무튼 좋은 툴 소개해주셔서 감사합니다.

--------------------
추가로... vim 에서는 다음 정도의 간단한 명령을 추가하면 ""를 둘러싸는 것 신경쓸 필요 없이 그냥 명령을 내리면 될 것 같네요. makeprg 나 grepprg 등을 통하지 않고 결과값을 quickfix 창으로 가져오는 방법은 잘 모르겠는데, 이건 질문을 올려봐야겠네요...

command! -nargs=* CALC :  !pcalc <q-args>

:CALC 0x10 > 4
        1               0x1             0y1

Orion Project : http://orionids.org

doodoo의 이미지

fl 라이브러리가 어떤 것인지 잘 모르겠군요

방금 설치하다가 에러났습니다.

cc -ggdb -Wall -DVERSION='"1.2"'  -c -o convert.o convert.c
cc   pcalc.o pcalcl.o funct.o math.o symbol.o help.o store.o print.o str.o convert.o  -lm -lfl -o pcalc
/usr/bin/ld: cannot find -lfl
collect2: ld returned 1 exit status
make: *** [pcalc] Error 1

체스맨의 이미지

flex 을 설치하셔야 될 겁니다.

Orion Project : http://orionids.org

feedseaotter의 이미지

저도 doodoo님과 같은 문제로 고민하고 있었는데 flex 설치해주니 잘 되는군요
감사합니다

doodoo의 이미지

저도 되네요 ^^;

감사합니다.

체스맨의 이미지

음... 제가 올린 스레드도 아닌데, 제가 도배를 하는 것 같아 좀 그렇지만,

수식에 '%' 나 '|' 가 포함돼 있을때 빔이 내부적으로 이들 문자를 확장하거나 다르게 해석하는 것으로 인해 제대로 수식이 전달되지 않을 수가 있네요.

외부 명령을 실행할 때 이러한 내부적 해석을 안하도록 만드는 방법을 찾아봤으나, 찾지 못해서, 이들 문자 앞에 escape 문자 를 붙여주는 방법으로 일단 수정을 해서 올려봅니다.

EscapeSpecialChar 함수가 지정된 문자 앞에 escape 문자를 붙이는 기능을 합니다.

function! EscapeSpecialChar(cmd,c)
    return substitute(a:cmd,"\\([".a:c."]\\)","\\\\\\1","g")
endfunction
 
function! Calc( eq )
    let oldprg=&makeprg
    let &makeprg='pcalc "'.EscapeSpecialChar(a:eq,"%|").'"'
    make
    let &makeprg=oldprg
endfunction
 
command! -nargs=* QCALC : call Calc( <q-args> )
command! -nargs=* RCALC : exe 'r !pcalc "'.EscapeSpecialChar(<q-args>,"%").'"'
command! -nargs=* CALC : exe '!pcalc "'.EscapeSpecialChar(<q-args>,"%").'"'

Orion Project : http://orionids.org

체스맨의 이미지

감기가 걸려 정신이 없어 그랬는지, 댓글을 단다는 게 원본글을 자체를 수정해서 이전 글을 날려먹었네요.

뭐 아무튼 저렇게 수정했습니다. 잘 되는 것 같네요.

Orion Project : http://orionids.org

지리즈의 이미지

부족한 글이 풍족해지는 것 같아서 제가 오히려 감사할 따름입니다.

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

specerx의 이미지

아치리눅스용 pcalc의 PKGBUILD 파일 입니다.

pkgname=pcalc
pkgver=1.2
pkgrel=1
pkgdesc="pcalc is porgrammer's calculator, command line utility."
url="http://pcalc.sourceforge.net"
license="GPL"
arch=('i686')
depends=('flex')
makedepends=('make')
source=(<a href="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2" rel="nofollow">http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2</a>)
md5sums=(b0d53adf9b7c393cdd5de089c7fe3699)
 
build() {
	cd $startdir/src/$pkgname-$pkgver
	make
	mkdir -p $startdir/pkg/usr/bin/
	mv $pkgname $startdir/pkg/usr/bin/
}
 
#vim: ft=sh

댓글 첨부 파일: 
첨부파일 크기
Binary Data PKGBUILD.456바이트
지리즈의 이미지

PKGBUILD로 설치하면 나중에 언인스톨할 때 설치된 파일이 깨끗이 삭제가 되나요?

There is no spoon. Neo from the Matrix 1999.

There is no spoon. Neo from the Matrix 1999.

atie의 이미지

그냥 참고 삼아서, AUR에 pcalc가 있습니다. PKGBUILD의 9번째 줄에 있는 괄호 하나 빼면 잘 만들어 쓸 수 있더군요.
----
I paint objects as I think them, not as I see them.
atie's minipage

----
I paint objects as I think them, not as I see them.
atie's minipage

specerx의 이미지

이미 있는것인데 괜한 짖을 했군요.

제가 아치리눅스를 사용한지 얼마 되지 않고
AUR에 들어가본적이 없어서 그런곳이 있는지 알지 못했습니다.

이제 부터는 pacman으로 찾아봐서 없으면 제일먼저 AUR을 찾아가봐야 겠군요.
알려 주셔서 감사합니다.

DebPolaris의 이미지

좋은 프로그램입니다.

--------------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'
http://heu

-----------------------------------------------------
남이 가르쳐주는 것만 받아들이는 것이 아니라, 스스로 만들고, 고쳐가는 사람을 '해커'라고 부른다.
그리고 자신이 쌓아온 노하우를 거리낌없이 나눌 줄 아는 사람을 '진정한' 해커라고 한다.
-Rob Flickenger 'Linux server hacks'

DEBIAN TESTING, KDE...
debpolaris.blogspot.kr

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.