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

    윈도우 11, 재부팅 없이 업데이트 적용?

    마이크로소프트가 새로운 업데이트 절차를 테스트하고 있습니다. 재부팅 없이 업데이트를 적용하는 새로운 기능인 핫 패치가 윈도우 11 24H2에 추가됩니다. 핫 패치는 윈도우 서버나 Xbox에서 이미 도입한 기능입니다. 프로세스를 재시작...
    Date2024.02.25 소식 By낄낄 Reply6 Views1303
    Read More
  2. FurMark 2 발표

    FurMark 2 버전이 나왔습니다. 2007년부터 나오기 시작한 이 유서깊은 프로그램은 정말 오랫동안 버전 1대에 머무르다가 2022년 말부터 2.0 버전의 베타 버전을 내놓기 시작했고 이제야 정식 버전이 나왔습니다. 오픈GL 3.2, 벌칸 1.1 등...
    Date2024.02.25 소식 By낄낄 Reply5 Views1181 file
    Read More
  3. No Image

    제미나이의 사람 이미지 생성에 문제가 있어 일시 중단

    구글은 제미나이 AI에서 사람의 이미지를 만드는 기능을 일시 중단한다고 발표했습니다. 제미나이의 이미지 생성 기능을 개발할 때 폭력적이거나 성적인 이미지, 실제 사람은 만들지 않도록 조치를 취했는데요. 이것 때문에 이상한 프롬프...
    Date2024.02.25 소식 By낄낄 Reply1 Views546
    Read More
  4. 크롬 기반 비밀번호 관리자 기능 무섭네요

      웨일이든 크롬이든 '비밀번호 관리자'에 들어간 다음 윈도 헬로 비밀번호를 누르고, 눈깔 버튼 누르면 비밀번호가 바로뜨네요. 윈도 헬로 비밀번호를 같이 쓰고 있는 가족용 공용 컴퓨터에서는 크롬을 쓰면 안 되는 걸까요?  가족용 공...
    Date2024.02.25 질문 By부녀자 Reply5 Views705 file
    Read More
  5. No Image

    구글, 올해 말까지 구글 페이 앱을 종료

    구글이 '미국에서 결제 앱 단순화'라는 제목의 글을 올렸습니다. 올해 말까지 구글 페이 앱의 운영을 중단하겠다는 것입니다. 미국에서 주로 사용하는 구글의 비접촉 결제 앱은 구글 페이입니다. 하지만 구글 월렛이라는 대체제가...
    Date2024.02.25 소식 By낄낄 Reply1 Views566
    Read More
  6. 강력한 컴퓨터가 장착된 자동판매기 - 무허가로 안면인식

      대충 레딧에서 먼저 폭발한 건데, 캐나다의 워털루 대학교 M&M 자판기의 오류입니다. 보면 '안면인식.앱.exe' 라고 되어 있죠. 여튼 안면인식 데이터베이스로 학생 신원을 파악한 이 자판기와 다수 자판기가 대학교에서 퇴출되었습...
    Date2024.02.24 소식 Bytitle: 폭8책읽는달팽 Reply3 Views1018 file
    Read More
  7. NVIDIA 앱 발표. 지포스 익스피리언스와 제어판 통합

    NVIDIA가 'NVIDIA 앱(App)을 발표했습니다. 지포스 익스피리언스와 제어판 등의 기능을 하나로 통합하고, 데스크탑과 모바일에서 모두 사용할 수 있습니다 제어판의 여러 옵션을 만질 필요 없이 통합 최적화 기능을 제공하며, 글로벌 ...
    Date2024.02.24 소식 By낄낄 Reply18 Views1408 file
    Read More
  8. No Image

    방통위, 'VOD 중단' 트위치에 과징금 4억3500만원

    불법촬영 유통방지 조치 미이행도 과태료 부과 화질 제한 위반 없지만…망 대가 자료 미제출 "韓 사업 종료지만 이용자 보호 원칙 하 처분"   방송통신위원회가 VOD 서비스를 중단한 트위치에 과징금 4억3500만원을 부과했다.   ----------...
    Date2024.02.23 소식 Bytitle: 가난한카토메구미 Reply17 Views1158
    Read More
  9. No Image

    윈도우 11, 23H2로 자동 업데이트

    마이크로소프트가 윈도우 11을 이제 23H2로 자동 업데이트합니다. 23H2는 작년 10월에 출시된 버전입니다. 지금까지는 22H2로 자동 업데이트가 됐습니다. 상위 버전으로 업데이트 강제는 어쩔 수 없지만, 이번에는 별 탈 없이 조용히 좀 ...
    Date2024.02.23 소식 By낄낄 Reply4 Views1661
    Read More
  10. No Image

    구글 원 AI 프리미엄 플랜 발표

    구글 원 AI 프리미엄 플랜이 발표됐습니다. 가격은 메달 19.99달러. 제미나이 1.0 울트라 기반 제미나이 어드밴스드를 지메일이나 문서 등에서 쓸 수 있습니다. 지메일에서 초대장을 만들고 문서를 작성하고 스프레드시트에서 가계부를 쓰...
    Date2024.02.23 소식 By낄낄 Reply1 Views558
    Read More
  11. No Image

    NVIDIA GPU, Gemma 최적화

    NVIDIA가 구글의 대규모 언어 모델인 제미니의 공개 모델, Gemma에 최적화했다고 발표했습니다. 젬마 LLM를 NVIDIA GPU에서 최적화하는데 필요한 오픈소스 라이브러리인 텐서RT-LLM에서 지원해 젬마의 실행 속도를 높일 수 있습니다. 또 ...
    Date2024.02.23 소식 By낄낄 Reply0 Views416
    Read More
  12. No Image

    미국 특허청, GPT 상표 출원 불허

    미국 특허청은 GPT가 특정 상품이나 서비스의 특징, 기능, 특성을 기술한 것에 불과하기에 상표 출원을 불허한다고 반려했습니다. 오픈AI는 GPT의 상표를 작년부터 내려고 시도했으나 10월에 반려당했고, 이번에 또 허가가 나지 않으면서 ...
    Date2024.02.22 소식 By낄낄 Reply0 Views477
    Read More
  13. iMessage, 양자 컴퓨터 내성 시스템인 PQ3 도입

      애플이 보안 블로그에서 iMessage가 이제 시그널보다 더 빡세졌다고 발표했습니다.   그러니까, 그림에서 보듯이 E2EE가 기본이었는데(렙1), 이제 각 기기에서 로컬로 생성하고 Apple 서버로 전송하는데 Kyber 양자컴퓨터 내성 공개키...
    Date2024.02.22 소식 Bytitle: 폭8책읽는달팽 Reply0 Views764 file
    Read More
  14. No Image

    레딧, 사용자 컨텐츠를 AI 훈련에 6천만 달러에 판매

    레딧은 AI 모델 훈련에 데이터를 쓸 수 있도록 허용하고 매년 6천만 달러를 받는 라이센스 계약을 맺었습니다. 레딧이 입장을 밝히지 않았기에 금액이나 조건은 달라질 수 있습니다. 그리고 어떤 AI 회사와 계약을 맺었는지도 모릅니다. ...
    Date2024.02.22 소식 By낄낄 Reply10 Views1312
    Read More
  15. No Image

    몬테네그로 법원, 권도형 미국 송환 결정

    속보라 내용이 없습니다. 송환 전에 열심히 운동을 해서 몸이라도 만들어야겠군요.
    Date2024.02.22 소식 By낄낄 Reply7 Views691
    Read More
목록
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 577 Next
/ 577

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

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


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

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


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

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

설치 취소