Skip to content

기글하드웨어기글하드웨어

인터넷 / 소프트웨어 : 윈도우즈, 리눅스, 기타 운영체제, 각종 어플리케이션, 프로그램, 소프트웨어, 인터넷, 인터넷 서비스에 대한 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form
참고/링크 https://goalkicker.com/

무료로 e-Book을 제공하는 해외 사이트 중에서 GoalKicker.com이라는 곳이 있습니다. 프로그래밍 관련 질문과 답변을 주고받는 웹사이트인 스택 오버플로우의 사람들이 집단지성으로 작성한, 각 프로그래밍 언어의 요점노트 정도 되는 내용을 PDF로 편집해서 공짜(정확히는 CC BY-SA 라이센스)로 배포하는 곳이지요. 물론 모두 영어로 된 자료입니다만, 어차피 요즘 세상에 프로그래밍을 하려는데 영어로 된 기술 문서를 못 읽는다는 것은 말이 되지 않지요. 하여튼, 양질의 자료들을 무료로 제공하는 고마운 곳입니다.
 

그런데, 이곳에서 제공하는 책들이 한두 권이 아닌데(이 글을 작성하는 현 시점에서는 총 47권에 달합니다.) 좋은 자료가 많으니 이걸 몽땅 다운받고 싶다고 생각할 수도 있지 않겠습니까? 네, 바로 제가 그랬습니다. 처음에는 손으로 일일히 한 권씩 다운로드를 했는데, 곰곰히 생각해보니 프로그래밍을 안다는 놈이 이런 반복 작업을 컴퓨터에게 시키지 않는 것은 대단한 삽질에 불과하다는 결론이 나더군요. 그래서 혹시 이곳의 책들을 모두 다운받을 수 있는 스크립트를 다른 사람이 짜서 공개해두지는 않았나 잠깐 구글 검색을 하였고, 잠시 후 다음과 같은 코드를 발견했습니다.
 

https://www.reddit.com/r/PowerShell/comments/8aujts/free_powershell_pdf_book/dx2uile/


$Books = (Invoke-WebRequest -Uri "http://books.goalkicker.com" -UseBasicParsing).Links.href | Where-Object { $_ -match 'Book$' }
"Found $($Books.Count) books to download."

ForEach ($Book in $Books) {
    $PdfName = (Invoke-WebRequest -Uri "http://books.goalkicker.com/$Book" -UseBasicParsing).Links.href | Where-Object { $_ -match '\.pdf$' }

    "Downloading $PdfName"
    Invoke-WebRequest -Uri "http://books.goalkicker.com/$Book/$PdfName" -OutFile $PdfName
    "    Finished downloading $PdfName"
}

당연히 저는 희희낙락하며 룰루랄라 이 코드를 실행시켜 보았지만, 어쩐 일인지 이 코드는 제대로 동작하지 않았습니다. 살펴보니, 사이트의 URI 구조가 그 사이에 바뀐 모양이더라고요. 시무룩… 그래서, 제가 이 웹사이트의 무료 e-Book들을 일괄 다운로드하는 스크립트를 직접 짜 보기로 하였습니다.
 

이건 여담인데, 위 원본 코드의 언어인 PowerShell은 실은 대단히 강력한 객체지향 인터프리터 언어입니다. 기본적으로 .Net 프레임워크의 모든 기능을 가져다 쓸 수 있는 것은 물론이고, 화면에 출력되거나 혹은 파이프라인을 통해 리다이렉트되는 거의 모든 실행 결과물이 실은 단순한 텍스트 스트림이 아니라 하나의 .Net 객체라는 놀라운 물건이지요. 심지어는 PowerShell 자체의 능력이 모자라다 싶으면, C# 코드를 인라인으로 삽입하여 바로 사용할 수조차 있습니다. 이런 엄청난 것을 왜 이제서야 알았나 싶을 정도더라고요. 참고로, PowerShell의 최신 버전은 MS에서 오픈소스로 공개하면서 리눅스나 MacOS에서도 사용할 수 있게끔 바뀌었습니다.
 

어쨌든, 처음에는 위에서 발견한 코드를 기반으로 조금만 수정을 해서 쓰려고 했었습니다. 근데 이 새로 접한 언어에 익숙해지고자 일부러 여러 요소들을 이것저것 추가해보다 보니 대략 마흔 줄 정도 되는 코드가 나와 버렸네요. 제가 작성한 최종 코드는 다음과 같습니다.


# A PowerShell script for downloading free e-books from goalkicker.com in bulk.

$uri = "https://goalkicker.com/"
$errCount = 0

function pressToContinue {
    "Press any key to continue...`n"
    [System.Console]::ReadKey($true) | Out-Null
}

"This is a PowerShell script that automatically downloads all free e-books provided by goalkicker.com."
"Trying to access $uri..."
try {
    $Books = (Invoke-WebRequest -Uri $uri).Links.href -match ".*Book/$"
}
catch {
    "Unable to access website."
    pressToContinue
    Break
}
"Successful website access. Found $($Books.Count) books to download."

foreach ($book in $Books) {
    try {
        $PdfFile = ((Invoke-WebRequest -Uri "$uri/$book" -ErrorAction SilentlyContinue).Links.href -match ".*\.pdf$")[0]
        $fullLink = "$uri$book$PdfFile"
        Write-Host -NoNewline "$PdfFile downloading... "
        Invoke-WebRequest -Uri $fullLink -OutFile $PdfFile -ErrorAction SilentlyContinue
        Write-Output "Done."
    }
    catch {
        "Failed to download $book"
        $errCount += 1
    }
}

if ($errCount -eq 0) {
    "All books have been downloaded."
}
else {
    "$($Books.Count - $errCount) Books have been downloaded. $errCount books are missing."
}

pressToContinue
# End of file

이 코드의 사용 방법은 최신 윈도우 기준으로 다음과 같습니다.

  1. 탐색기에서 적당한 이름의 빈 폴더를 하나 만듭니다. 저는 폴더 이름을 eBooks_goalkicker.com이라고 지었습니다.
     
  2. 해당 폴더 안에 .ps1 확장자를 가진 빈 텍스트 파일을 하나 만듭니다. 저는 이 파일의 이름을 _allDownload.ps1이라고 지었습니다. 굳이 파일 이름 맨 앞에 _(밑줄, Underscore)을 붙인 이유는, 나중에 pdf 파일들이 다운로드되었을 때도 항상 이 스크립트 파일이 탐색기에서 맨 앞에 보이기를 원했기 때문입니다. 어쨌든 이 파일 이름은 스크립트의 실행에 아무런 영향도 주지 않습니다.
     
  3. 방금 만든 텍스트 파일을 선호하는 텍스트 편집기로 열고, 위 코드를 복사해서 편집기에 붙여넣고 저장합니다. 사용하는 편집기는 메모장도 좋고, VS Code와 같은 프로그래밍용 에디터도 좋습니다. 다만, 기글하드웨어 사이트에서는 글을 복사할 때 자동으로 맨 밑에 출처 관련 내용이 같이 복사되는데, 이게 그대로 있으면 실행시에 에러가 나니까 직접 지워줘야 합니다.
     
  4. 방금 저장한 .ps1 파일을 탐색기에서 마우스 오른쪽 버튼으로 클릭하면, 아마도 메뉴의 [열기] 바로 아래에 [PowerShell에서 실행]이라는 항목이 있을 것입니다. 제가 알기로는 윈도우 7 SP1부터 PowerShell이 윈도우와 함께 설치되어 나온다고 합니다. 요즘 시대에 윈도우 XP나 비스타를 쓰는 사람은 많지 않…겠죠? 여튼, 클릭해 줍니다.
     
  5. 스크립트가 실행되면, 스크립트가 있는 폴더에 자동으로 PDF 파일이 다운로드되기 시작합니다. 동시에 화면에는 지금 어느 파일을 다운받고 있는지도 함께 뜹니다. 만약에 인터넷이 연결되어 있지 않다거나 하면, 웹사이트에 접속할 수 없다는 오류 메시지가 뜹니다.
     
  6. 모든 작업이 끝나면, 아무 키나 누르라는 영문 메시지가 뜹니다. 만약에 일부 PDF 파일 다운로드에 문제가 있었다면, 몇 개나 그랬는지 표시해주는 기능도 있습니다. 아무 키나 누르면 창이 사라지고, 프로그램이 종료됩니다.

스크립트 실행중

스크립트 실행완료


이 코드의 사용/수정/재배포는 완전 자유입니다. 다만, 저는 이 코드의 실행결과를 보증하지 않습니다. 만약에 미래에 위 웹사이트의 주소체계가 다시 바뀌면, 이전의 코드처럼 이 코드도 제대로 작동하지 않겠지요. 참고로 위 웹사이트는 종종 e-Book의 내용을 업데이트하거나 새 e-Book을 추가하는 모양이니, 이 코드를 저장해뒀다가 생각날 때마다 주기적으로 실행해주는 것도 좋을 듯 합니다. 그럼 이만!



  • profile
    숲속떠돌이      컴퓨터를 좋아하는 사람입니다. 2018.09.29 03:01
    와... 굉장한 정보네요. 감사합니다. Powershell이 생각보다 막강하네요..
  • profile
    쮸쀼쮸쀼 2018.09.29 03:09
    이게 사실 처음에는 https://gigglehd.com/gg/soft/3559721 이걸 보고 비슷하게 따라해보려고 배치파일을 짜다가, 배치파일의 한계를 느껴서 그걸 극복하고자 다른 게 없나 해서 파워쉘을 기웃거렸던 것이었거든요. 그런데 이게 깜짝 놀랄 정도로 대단히 강력한 물건이었습니다.
  • ?
    초딱 2018.09.29 05:11
    좋은 정보 감사합니다
  • profile
    title: AMD알란 2018.09.29 07:51
    좋은 사이트와 정보를 제공해주셔서 고맙습니다.
  • ?
    정신은흐림 2018.09.29 08:57
    좋은 정보 감사합니다.
  • profile
    부녀자 2018.09.30 07:00
    1.
    ps1파일 편집하려니까 "Windows PowerShell ISE"라는 요상한 프로그램이 실행되었어요!

    2.
    그리고 어째서 PowerShell을 직접 실행해서, 명령어를 입력하면 오류가뜨는거죠?!
    PS D:\Downloads\eBooks_goalkicker> .\_allDownload.ps1
    .\_allDownload.ps1 : 이 시스템에서 스크립트를 실행할 수 없으므로 D:\Downloads\eBooks_goalkicker\_allDownload.ps1 파일을
    로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십
    시오.
    위치 줄:1 문자:1
    + .\_allDownload.ps1
    + ~~~~~~~~~~~~~~~~~~
    + CategoryInfo : 보안 오류: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

    3.
    그리고 지금은 해당 서버가 막혔나봐요
    This is a PowerShell script that automatically downloads all free e-books provided by goalkicker.com.
    Trying to access https://goalkicker.com/...
    Unable to access website.
    Press any key to continue...
  • profile
    쮸쀼쮸쀼 2018.09.30 14:21
    1. 해당 프로그램은 PowerShell 스크립트를 편집하기 위해 MS에서 공식 제공하던 프로그램입니다. 근데, PowerShell을 오픈소스화해버리는 과정에서 이 프로그램도 지원이 중단되고 말았지요. 지금은 VS Code에 PowerShell 확장 프로그램을 깔아서 쓰는 것이 권장됩니다. 뭐, 윈도우 내장 PowerShell만 쓸 것이라면 그냥 이걸 계속 써도 상관없긴 한데, 저에게는 조금 불편하더라고요.

    2. 윈도우의 기본 설정상 디지털 서명이 되지 않은 PowerShell 스크립트를 실행하지 않도록 막아둔 경우입니다. 이 문제를 해결하려면 PowerShell에서 “Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted”라는 명령을 실행하면 됩니다.

    3. 그건 이상하군요. 지금 다시 실행해 봤지만, 제 컴퓨터에서는 아주 잘 작동합니다. 혹시 위에서 언급한 파워쉘 스크립트 실행 제한 해제를 한 다음에 다시 시도해 보실래요?
  • profile
    오!감자      신해철(申海澈, 1968년 5월 6일 ~ 2014년 10월 27일)은 대한민국의 가수 겸 ... 2018.10.02 07:14
    Successful website access. Found 0 books to download.
    All books have been downloaded.
    Press any key to continue...

    Exception calling "ReadKey" with "1" argument(s): "Cannot read keys when either application does not have a console or when console
    input has been redirected from a file. Try Console.Read."
    At \_allDownload.ps1:8 char:5
    + [System.Console]::ReadKey($true) | Out-Null
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidOperationException
  • profile
    쮸쀼쮸쀼 2018.10.02 17:16
    어째선지 https://goalkicker.com/ 여기서 PDF 파일을 받을 수 있는 개별 링크를 찾아내지 못한 경우로군요. 웹 브라우저에서는 https://goalkicker.com/ 여기에 들어가면 책을 다운받을 수 있나요?
  • profile
    오!감자      신해철(申海澈, 1968년 5월 6일 ~ 2014년 10월 27일)은 대한민국의 가수 겸 ... 2018.10.05 08:22
    개별로 가면 받아지더라구요
  • profile
    쮸쀼쮸쀼 2018.10.05 09:25
    PowerShell이나 .Net의 버전 문제가 의심가는군요. PowerShell의 버전은 다음 명령어로 알 수 있습니다.

    $PSVersionTable.PSVersion | Write-Host

    참고로 제가 테스트한 PowerShell 버전은 5.1.17763.1과 그 이후 버전이었습니다.
  • profile
    오!감자      신해철(申海澈, 1968년 5월 6일 ~ 2014년 10월 27일)은 대한민국의 가수 겸 ... 2018.10.11 11:21
    5.1.17134.228 이네요
    파워셀 업뎃을 어떻게 하는 거죠?
  • ?
    포인트 팡팡! 2018.10.11 11:21
    오!감자님 축하합니다.
    팡팡!에 당첨되어 10포인트를 보너스로 받으셨습니다.
  • profile
    쮸쀼쮸쀼 2018.10.11 15:15
    파워쉘 버전 6부터는 윈도우와 분리되어 따로 설치해야 하고, 이렇게 설치한 파워쉘 6는 윈도우 내장 파워쉘과 따로 놉니다. 위에 서술된 방식은 윈도우 내장 파워쉘을 통해 실행하는 방식입니다. 일단 최신 버전 파워쉘은 https://github.com/PowerShell/PowerShell/releases 여기서 설치 파일을 다운받을 수 있기는 한데, 이 문제가 정말 버전 때문인지는 잘 모르겠어요. 새로 설치한 파워쉘 6를 실행하려면 [실행]에서 pwsh이라는 명령어를 치면 됩니다. 아니면 시작 메뉴에 추가된 새 파워쉘 바로가기를 눌러도 되고요.
  • profile
    오!감자      신해철(申海澈, 1968년 5월 6일 ~ 2014년 10월 27일)은 대한민국의 가수 겸 ... 2018.10.13 13:18
    수차례에 걸친 친절한 답변 정말 감사드립니다.
    일단 쮸쀼쮸쀼님께서 손수 만드신 프로그램을 한번 실행해보자는 것에서 시작한 것인데요,
    직접 한권씩 받는 것엔 문제가 없었고 한번 쭉 둘러보니 모든 책이 필요하진 않을거 같아서요
    그래도 프로그램 돌리기에 도전해보겠습니다.

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. No Image

    스포티파이, 올해 도 가격 인상?

    스포티파이는 작년에 프리미엄 등급 도입 이후 처음으로 가격을 인상했습니다. 그래도 사용자가 1억 1300만명이 늘어났는데요. 2023년 말 기준 스포티파이의 총 사용자 수는 6억 2백만명이고 그 중 2억 3600만명이 유료 고객이었습니다. ...
    Date2024.04.05 소식 By낄낄 Reply11 Views867
    Read More
  2. No Image

    윈도우 10의 유료 보안 업데이트, 25년 이후 61달러

    마이크로소프트는 윈도우 10을 윈도우 11로 업그레이드하라고 권고하지만, 윈도우 10을 유지하길 원하는 기업도 있습니다 그런 곳을 위해 마이크로소프트는 유료 업데이트를 제공하는데요. 2025년 10월 14일에 윈도우 10의 업데이트 제공...
    Date2024.04.05 소식 By낄낄 Reply0 Views840
    Read More
  3. 일본의 유명 기업인이 메타의 사기 광고를 비판

    마에자와 유사쿠는 일본의 유명 기업가로, 일본에서 가장 큰 온라인 패션 소매 사이트인 조조타운을 설립했습니다. 이 사람이 자신을 포함해서 여러 유명인의 사진을 도용한 사기 광고가 페이스북과 인스타그램에 꾸준히 올라온다면서, 페...
    Date2024.04.05 소식 By낄낄 Reply10 Views2019 file
    Read More
  4. 오페라, 로컬에서 AI를 실행하는 기능 추가

    오페라가 대규모 언어 모델을 다운로드해서, 인터넷 연결이 아닌 로컬 디바이스에서 직접 AI를 처리하는 기능을 추가했습니다. 웹 브라우저에 이런 기능이 추가된 건 처음이라고 합니다. 50여종의 모델 패밀리, 150개의 LLM을 선택할 수 ...
    Date2024.04.05 소식 By낄낄 Reply6 Views1309 file
    Read More
  5. 아마존, 2023년에 7백만개 이상의 위조품을 압수

    아마존이 2023년에 7백만개 이상의 위조품을 압수했다고 발표했습니다. 머신 러닝 모델을 사용해 로고가 위조된 것이 맞는지를 빠르고 정확하게 검출하고, 다양한 인증 기술을 추가해 악의적인 새 계정 추가를 막았다고 합니다.
    Date2024.04.05 소식 By낄낄 Reply0 Views300 file
    Read More
  6. No Image

    Temu, 국내 법인 설립

    [언론 보도]//soft_3 관련 글 1 - "쿠팡, '천원마켓'까지…알리·테무와 전면전" https://gigglehd.com/gg/soft/15780932 관련 글 2 - "알리바바 그룹, 연내 국내 물류센터 구축 예정" https://gigglehd.com/gg/bbs/15695901 'e커머스 교란...
    Date2024.04.04 소식 Bytitle: 컴맹임시닉네임 Reply2 Views632
    Read More
  7. No Image

    AMD, 더 많은 라데온 소프트웨어를 오픈소스로 제공하겠다고 약속

    AMD가 더 많은 라데온 소프트웨어를 오픈소스로 제공하고, 하드웨어 문서도 더 많이 제공하겠다고 약속했습니다. 구체적인 일정이나 공개 범위는 밝히지 않았으나, 내부적으로 계획이 있으니까 이렇게 글을 올렸을 것 같네요.
    Date2024.04.04 소식 By낄낄 Reply11 Views1078
    Read More
  8. No Image

    아마존의 저스트 워크 아웃 계산대, 운영 중단

    아마존의 슈퍼마켓인 아마존 프레시는 물건을 들고 그냥 걸어 나가면 계산이 끝나는 '저스트 워크 아웃'이라는 기능을 폐지하고 있습니다. 이 기능은 카메라와 센서를 사용해 제품의 QR 코드를 스캔해, 따로 결제하지 않아도 자동...
    Date2024.04.04 소식 By낄낄 Reply12 Views2145
    Read More
  9. No Image

    꽤나(?) 간단한 질문입니다.

    온라인에서 물건을 주문 할 때 평소대로라면 쇼핑몰 웹이나 앱에서 구매하기 혹은 주문하기 버튼을 누르고 주문서 페이지에 이름이나 전화번호, 주소, 결제 정보를 입력하잖아요?   여기서 주문서 화면에 아무런 정보를 입력하지 않고 뒤...
    Date2024.04.03 질문 Bytitle: 삼성MUGEN Reply5 Views423
    Read More
  10. 네이버 치지직 관련 스크립트 만들었습니다.

        트위치에서 되던 기능이 없어서... 버튼 하나 따로 만들어서 추가 하였습니다.   이제 방송중 아니여도 들어가서 대기를 탈 수 있습니다...
    Date2024.04.03 일반 Bytitle: 가난한카토메구미 Reply7 Views682 file
    Read More
  11. No Image

    쿠팡, '천원마켓'까지…알리·테무와 전면전

    쿠팡은 최근 1000원~3000원대 저가형 상품을 모아 '천원마켓' 기획전을 열었다. 로켓배송 가능 상품을 중심으로 물티슈, 세제 등 생활필수품부터 충전기·주방용품 등 생활 잡화까지 판매한다. 알리익스프레스가 운영하는 &...
    Date2024.04.03 소식 By낄낄 Reply7 Views926
    Read More
  12. No Image

    구글, 크롬의 시크릿 브라우징 수집 데이터를 삭제

    구글은 크롬 브라우저의 시크릿 모드를 사용한 고객에게서 수집한 데이터를 삭제해, 2020년에 시작된 집단 소송을 해결했습니다. 크롬의 시크릿 모드는 매우 안전하고 비밀을 지켜주는 것 같지만, 실제로는 데이터를 수집해 웹사이트 사용...
    Date2024.04.03 소식 By낄낄 Reply7 Views1074
    Read More
  13. No Image

    MS, 오피스에서 Teams를 분리

    마이크로소프트가 오피스에서 Teams를 분리합니다. EU의 반독점 벌금을 피하기 위해서 유럽 시장에서 먼저 분리했었는데요. 이제는 전 세계를 대상으로 분리 작업을 합니다. 그래서 마이크로소프트 365나 오피스 365에 tEams가 포함되지 ...
    Date2024.04.03 소식 By낄낄 Reply4 Views885
    Read More
  14. No Image

    챗GPT, 계정 없이 사용 가능

    오픈AI가 챗GPT를 회원 가입이나 로그인을 하지 않고도 쓸 수 있게 바꿨습니다. 로그인을 하면 채팅 이력, 채팅 공유 등의 추가 기능을 쓸 수는 있지만, 기본적인 채팅에는 아무 제한이 없습니다.
    Date2024.04.03 소식 By낄낄 Reply1 Views524
    Read More
  15. No Image

    미국 “한국 ‘망 사용료 법안’ 반경쟁적…과일 검역도 풀어야”

    미국 무역대표부가 정보통신망 이용요금, 이른바 망 사용료를 콘텐츠 사업자에게 부과하는 법안이 경쟁 원칙에 어긋난다며 재차 문제를 제기했습니다. 미국 무역대표부가 발표한 올해 국가별 무역장벽 보고서는 2021년부터 외국 콘텐츠 제...
    Date2024.04.03 소식 By낄낄 Reply7 Views739
    Read More
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 577 Next
/ 577

한미마이크로닉스
AMD
더함
MSI 코리아

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소