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. Procyon에 AI 이미지 생성 벤치마크 추가

    UL 솔루션이 Procyon 벤치마크에 AI 이미지 생성 측정 기능인 AI Image Generation Benchmark을 추가해 25일에 출시합니다. 인텔 OpenVINO, NVIDIA의 TensorRT, ONNX Runtime with DirectML을 지원하며 GPU를 사용하는 걸 염두에 둔 테스...
    Date2024.03.24 소식 By낄낄 Reply3 Views401 file
    Read More
  2. No Image

    에픽 게임즈, iOS에서 윈도우와 똑같은 수수료를 매김

    에픽 게임즈가 애플 앱스토어 대신 iOS의 자체 앱스토어를 통해 판매하는 앱에서 12%의 수수료를 부과합니다. 윈도우/맥 버전과 똑같이 처음 6개월 동안은 수수료가 없고 이후부터 12%를 징수합니다. 다른 세부 규칙도 대충 같습니다. htt...
    Date2024.03.24 소식 By낄낄 Reply0 Views594
    Read More
  3. VR 화면에 가짜 레이어를 추가하는 공격 수법

    VR을 대상으로 한 공격 수법입니다. 일반적으로 VR 홈 스크린에서 VR 앱을 실행하는데, 그 위에 인셉션 레이어라는 가짜 홈스크린을 띄우고 거기에서 VR 앱을 실행하면서 얻는 모든 상호 작용을 탈취하는 수법입니다. 인셉션 레이어를 띄...
    Date2024.03.24 소식 By낄낄 Reply3 Views655 file
    Read More
  4. 메모장, 맞춤법 검사 기능 추가

    윈도우 11의 인사이더 프리뷰 버전에서 메모장에 맞춤법 검사 기능이 추가됩니다. 메모장이 등장한지 41년만의 일입니다. 시프트+F10을 누르거나 단어를 클릭/탭하면 권장 단어를 보여줍니다. 다만 기본적으로는 이 기능이 꺼져 있으며, ...
    Date2024.03.23 소식 By낄낄 Reply5 Views865 file
    Read More
  5. No Image

    코인베이스, 도지코인의 선물 거래를 미국에 신청

    가상화폐 거래소인 코인베이스가 도지코인, 라이트코인, 비트코인 캐시의 미국 정부 규제 선물 거래를 미국 삼품선물거래위원회 CFTC에 신청했습니다. 신청일은 3월 7일이며 CFTC가 거부하지 않는 한 선물 거래는 4월 1일부터 시작됩니다.
    Date2024.03.23 소식 By낄낄 Reply1 Views489
    Read More
  6. 어도비 서브스탠스 3D, 생성 AI 기능 추가

    어도비 서브스탠스 3D에 생성 AI 기능이 추가됐습니다. 이건 문장 입력으로 생성된 3D 오브젝트 텍스처입니다. 이건 배경 생성 기능으로 만든 이미지입니다. 3D 오브젝트가 정말 저 위치에 있는 것처럼 보이는 이미지를 문장 입력만드로 ...
    Date2024.03.22 소식 By낄낄 Reply0 Views400 file
    Read More
  7. No Image

    중국 가상화폐 투자자, 2023년에만 11억 5천만 달러의 수익 창출

    중국의 가상화폐 투자자가 2023년에만 11억 5천만 달러의 수익을 냈다고 합니다. 미국, 영국, 베트남에 이어 세계 4위입니다. 중국 정부가 가상화폐 거래를 금지하고 있지만, 중국에서 뭐 그런거 지켜가면서 돈을 벌겠나요.
    Date2024.03.22 소식 By낄낄 Reply0 Views460
    Read More
  8. 애플의 멀티모달 대규모 언어 모델, MM1

    애플이 멀티모달 대규모 언어 모델인 MM1의 논문을 공개했습니다. 최대 300억 패러미터의 LLM과 70억 패러미터의 MoE(Mixture-of-Experts)을 쓸 수 있습니다. 고성능 멀티모달 대규모 언어 모델을 구축하면서 사전 학습이나 알고리즘 설계...
    Date2024.03.22 소식 By낄낄 Reply0 Views635 file
    Read More
  9. No Image

    타오바오 모바일 주소 pc 주소 변환

    타오바오 모바일 링크는 PC 웹으로 이동해도 PC 웹으로 변경되지 않고 모바일 웹으로 유지되더군요.   그래서 모바일 링크 - PC 링크로 변환해주는 사이트들이 있긴 한데...   https://taobaotools.github.io/   모바일 주소를 변환하면 ...
    Date2024.03.22 질문 By투명드래곤 Reply2 Views462
    Read More
  10. No Image

    AcidPour, 러시아가 만든 새로운 사이버 무기

    우크라이나에서 데이터 와이퍼인 AcidRain의 변종인 AcidPour가 발견되었습니다.   이 AcidPour나 AcidRain에 감염되면 라우터나 위성 모뎀의 펌웨어를 날려버리는 걸로 악명 높습니다. 실제로 2022년 미국 Viasat의 약 만개 이하의 위성 ...
    Date2024.03.22 소식 Bytitle: 폭8책읽는달팽 Reply5 Views764
    Read More
  11. No Image

    몬테레그로 검찰청 권도형 한국행 불복

    몬테레그로 검찰은 법무부장관이 고유권한인 송환국 결정을 하급심 법원이 결정 하여 법령을 위반했으며 대법원에서 최종판결을 가리게 되었습니다    기각되면 한국행 인용되면 다시 가려야 하나 법무부장관은 미국행을 원한다고 합니다
    Date2024.03.22 소식 Bytitle: 명사수툴라 Reply8 Views887
    Read More
  12. No Image

    세계 3위 이통사 텔레포니카 "이제 망사용료 합의 도출할 때"

    글로벌 통신사들은 구글이나 넷플릭스와 같은 글로벌 콘텐츠 사업자들이 망사용료를 부담해야한다고 입을 모으고 있습니다. 특히 스페인 최대 이통사 텔레포니카는 이제 망사용료 관련 합의를 도출하고 싶다며 강한 의지를 드러냈는데요. ...
    Date2024.03.22 소식 By낄낄 Reply9 Views1081
    Read More
  13. Rufus로 32GB 이상 USB FAT32로 포맷하기

    윈도우 자체 디스크 포맷에서는 32GB 보다 큰 용량의 USB를 FAT32로 포맷할 수 없습니다.   리눅스 컴퓨터 같은게 있다면 거기서 포맷해오는 방법도 있겠지만 그렇지 않다면 USB 하나 포맷하자고 OS를 새로 설치하기엔 배보다 배꼽이 더 ...
    Date2024.03.21 일반 ByYukirena Reply7 Views810 file
    Read More
  14. 농어촌 NR 국내 로밍 보도자료 정리

    [참고] * 이 정책은 읍/면 지역에 한정됩니다. 시범지역 표시에서 전체라고 되어 있으면 전체 읍/면을 의미하는 겁니다. 예로 평택시 전체라고 해서 비전동 동삭동 고덕동 포함되는 것 아닙니다. 과기정통부, 농어촌 5세대 이동통신(5G) ...
    Date2024.03.21 소식 Bytitle: 컴맹임시닉네임 Reply9 Views543 file
    Read More
  15. No Image

    애플, KISA Root CA 인증 철회.

    2차 출처: https://twitter.com/kid1ng/status/1770459410688790794   ------------------------------------------------   애플이 KISA(그 알고있는 KISA 맞습니다.) 의 Root CA 1 인증을 철회 했습니다.   해당 인증서는 CA 제공자가 ...
    Date2024.03.21 소식 Bytitle: 가난한카토메구미 Reply10 Views1786
    Read More
목록
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 579 Next
/ 579

최근 코멘트 30개

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

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


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

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소