Yub.js는 수많은 유용한 검색 엔진과 바로가기, 재사용 가능한 명령, 그리고 스톱워치와 인라인 YouTube 동영상과 같은 숨겨진 기능이 많이 포함된 확장 가능한 클라이언트 측 웹 명령줄입니다. 또한 유연한 API가 있어 어디서나 yub.js 명령을 호출할 수 있습니다. 예를 들어 명령에 직접 연결하거나 브라우저 주소 표시줄에서 바로 액세스할 수 있습니다(yub.js를 가리키는 단일 검색 바로가기를 설정하기만 하면 됩니다). API를 사용하고 수백 가지 다른 검색 바로가기를 무료로 받으세요.)
모든 것은 처음부터 즉시 작동하는 데 필요한 모든 것을 포함하는 단일 페이지 독립형 HTML 문서로 설계되었습니다. 서버나 웹 호스팅 없이 로컬에 설치하고 컴퓨터에서 바로 실행할 수 있습니다. 그 이후로 상당히 성장했으며 개발은 보다 관리하기 쉬운 별도의 파일로 분할되었습니다. 독립형 HTML 페이지 버전은 여전히 사용할 수 있지만 이제 Ruby 스크립트에 의해 자동으로 생성되고 축소된 버전과 소스 버전으로 제공됩니다. 페이지를 컴퓨터에 직접 저장하거나 서버에 놓으면 바로 사용할 수 있습니다!
사용 가능한 검색 엔진 목록은 완전히 모듈식입니다. mods.js 파일(json)을 편집하거나 교체하여 자주 방문하는 웹 사이트 목록을 직접 추가할 수 있습니다. 자신만의 새 명령을 만드는 것은 쉽습니다. create
명령(선택적 인수로 새 명령의 이름 포함)을 사용하기만 하면 됩니다. functions.js
편집하여 자신만의 새로운 기능을 추가하거나 기존 기능을 확장해 보세요. 아, 그리고 정규식은 기본적으로 모든 곳에서 지원됩니다.
yub.js의 작동 방식을 이해하는 가장 좋은 방법은 바로 명령을 시도해 보는 것입니다. 따라서 기록이나 내부와 같은 지루한 내용을 시작하기 전에 바로 시도해 볼 수 있는 몇 가지 멋진 명령을 살펴보겠습니다.
list
또는 ls
입력하여 사용 가능한 모든 검색 바로가기 목록을 가져옵니다.http://commandlinefu.com/
또는 ftp://ftp.mozilla.org/
!
사이트로 직접 이동하려면 기본 URL 앞에 입력하세요. 예: Sydney Morning Herald 로 이동하려면 !smh.com.aug [searchterm]
사용하세요. 또는 대신 y
, b
, ix
또는 sp
사용하는 것을 선호할 수도 있습니다.help
또는 man
입력하여 help를 사용할 수 있습니다(선택적으로 도움말을 원하는 명령을 인수로 포함(예: help shuffle
)).calc 857*2^3
: 간단한 수학 공식 풀기calc (25+2)==(28-1)
: 동등성 테스트calc ~32.56
: 어림수rand 550
: 0-550 사이의 난수를 반환합니다.rand site
: 임의의 웹사이트로 이동rand img
: 임의의 이미지 표시rand git
: 임의의 GitHub 프로젝트를 방문합니다.watch ninja cat
: 검색어 '닌자 고양이'에 대한 YouTube 동영상 결과가 삽입된 재생목록을 시청하세요.link flint tigers
: flint Tigers 명령에 대한 고유 링크를 얻습니다(flickr에서 "흥미로움"으로 정렬된 호랑이 사진을 검색합니다).fspell sometext
: flickr 이미지로 sometext 작성ascii sometext
: ascii 아트에서 _sometext를 작성합니다.where gn
: gn 명령에 대한 키워드 및 기본 검색 주소를 표시합니다.> am Alice in Wonderland
: Amazon.com에서 "이상한 나라의 앨리스"라는 용어에 대한 첫 번째 Google 검색 결과로 바로 이동합니다.> wpde Turing complete
: 독일 위키피디아에서 "튜링 완전성"에 관한 기사를 읽어보세요.cat engadget.com
: engadget.com 웹페이지의 텍스트 전용 버전을 표시합니다.pop bbc gn yn bn
: BBC News, Google News, Yahoo News 및 Bing News가 포함된 개별 탭을 하나의 명령으로 모두 팝업합니다.pop gim yim bim -t horses
: Google, Yahoo 및 Bing에서 말에 대한 이미지 검색 결과를 표시하는 새 탭 팝업 참고: pop
명령을 사용하려면 브라우저의 yub.js 팝업 차단기에서 예외를 설정해야 할 수도 있습니다.
기본 검색 엔진은engine.js 파일에 저장됩니다. 여기에는 다양한 범용 웹 바로가기, 검색 엔진, 뉴스 소스 및 yub.js의 기본 기능을 보여주는 기타 흥미로운 내용이 포함되어 있으며 어떤 종류의 바로가기가 귀하의 필요에 유용할 수 있는지에 대한 아이디어를 제공합니다.
engine.js에서 찾을 수 있는 항목은 주요 검색 엔진(Google, Yahoo, Bing... 등) 및 다양한 관련 제품(이미지, 비디오, 지도, 뉴스, 날씨, 기계 번역), Wikipedia 및 다양한 관련 제품입니다. Wikimedia 자매 사이트(Wiktionary, Wikiquote, Wikinews... 등), 주요 언론사(BBC, Deutsche Welle, France 24... 등), 주요 웹메일 제공업체(Gmail, Yahoo, Hotmail... 등), 선적 서류 비치 여러 가지 인기 있는 스크립팅 언어(Bash, JS, PHP, Python, Ruby)와 기타 유용한 사이트 및 도구(Down For Everything Or Just Me?, Whois, What Is My Ip?... 등)에 대한 정보입니다. 자세한 가이드는 위키에서 보실 수 있습니다.
yub.js 단축키를 사용하면 https가 가능할 때마다(즉, 지원되는 모든 곳에서) 기본적으로 https가 사용된다는 장점이 있습니다.
모든 사용자 정의 링크와 바로가기는 편의를 위해 mods.js에 들어갑니다. 이 파일은 전적으로 선택 사항이므로 원하는 대로 항목을 추가하거나 삭제할 수 있습니다. yub.js를 사용하기 위해서는 mods.js 파일이 필요하지 않습니다 .
저장소에 있는 거대한 mods.js 파일은 순전히 유니코드 정규식 검색, 다양한 로컬 검색 사이트 및 선별적으로 선택할 수 있는 기타 흥미로운 항목과 같은 yub.js의 다양한 기능을 보여주기 위한 목적의 예입니다. 나만의 용도. 106Kb/870개 이상의 항목(이 글을 쓰는 시점)에서는 방대한 사용자 정의 단축키 목록이 있어도 yub.js가 눈에 띄는 속도 저하 없이 원활하게 실행된다는 것을 보여줍니다.
샘플 mods.js 파일에 무분별하게 버려진 것들의 몇 가지 예:
ebin
, Amazon UK의 경우 amuk
)enes
사용하고 스페인어-영어 사전에는 esen
사용하십시오. 한국어의 경우 enko
및 koen
, 프랑스어의 경우 enfr
및 fren
등한 가지 주목해야 할 점은 기본 단축키를 가능한 한 일반적 으로 유용하게 유지하기 위해 몇몇 정말 흥미로운 사이트가engine.js 및 심지어 mods.js에서 제외되었다는 것입니다. 하지만 걱정하지 마세요. mods.js 파일에 추가할 수 있습니다! mods.js를 사용자 정의하기 위해 추가할 수 있는 사항은 다음과 같습니다.
cl
또는 kj
명령을 생성하고 mods.js에 놓으십시오.http://www.xe.com/ucc/convert.cgi?Amount=%s&From=[CURRENCY1]&To=[CURRENCY2]
[CURRENCY1]
및 [CURRENCY2]
선택한 통화에 대한 3자리 코드로 대체) ) 테마 지원은 skin
명령을 통해 로드된 사용자 정의 CSS 파일 형식으로 제공됩니다. 스킨은 기본적으로 CSS 파일( /css
폴더에 위치)이며, skin
명령과 스킨 이름을 입력하여 로드할 수 있습니다( .css
확장자를 추가할 필요가 없습니다).
기본 스킨으로 돌아가려면 skin default
입력하면 됩니다. 모든 CSS를 제거하려면 skin none
사용하십시오.
스킨은 현재 yub 세션 전체에서 유지되지 않습니다(이를 위해서는 쿠키 설정이 필요하지만 지금까지 우리는 이를 피했습니다). yub.js 인스턴스에 대한 링크/북마크를 https://dohliam.github.io/yub/?skin%20terminal
과 같이 변경할 수 있습니다. https://dohliam.github.io/yub/?skin%20terminal
항상 특정 스킨이 로드된 상태로 yub.js를 시작합니다. 또는 로컬 설치에 대한 기본값으로 만들 스킨을 결정한 후 이름을 default.css
로 바꾸면 됩니다(덮어쓰지 않으려면 원본 default.css
파일의 이름을 old.css
또는 이와 유사한 이름으로 바꿀 수 있습니다). 그것). 다음에 yub.js를 열면 새 파일이 기본값으로 로드됩니다.
새 스킨을 만들려면 기존 스킨 파일 중 하나를 새 파일(예: mynewskin.css
에 복사하고 마음껏 사용자 정의하세요! (그리고 다른 사람들이 즐길 수 있도록 위키의 스킨 갤러리에 사용자 정의 스킨을 추가하는 것을 잊지 마세요!)
다음은 yub.js와 함께 제공되는 스킨의 스크린샷입니다:
기본 :
터미널 :
마운틴레이크 :
광선 :
스카이라인 :
nocss :
물론 yub.js를 사용하기 위해 설치할 필요는 없습니다. 일회성 검색의 경우 여기 GitHub에 호스팅된 최신 버전의 yub.js를 쉽게 사용할 수 있습니다. 모든 작업은 전적으로 클라이언트 측에서 수행되므로 쿼리가 네트워크를 통해 전송되지 않습니다.
API를 사용하여 GitHub 버전을 브라우저의 기본 검색으로 설정할 수도 있습니다. 그러나 API를 사용하면 입력한 모든 명령이 표시 되므로 (예: GitHub 서버 로그에) yub.js의 로컬 버전을 설정하고 완전히 오프라인으로(또는 자체 사이트에서 실행하는 것이 좋습니다) ).
yub.js를 기본 검색 엔진으로 만드는 방법에 대한 자세한 가이드는 Wiki에 있습니다. Chrome/Chromium 및 Firefox용 yub.js를 설정하는 방법에 대한 단계별 지침을 찾을 수 있습니다. (다른 브라우저를 사용하고 yub.js를 설치할 수 있는 경우, 수행한 단계를 가이드에 추가하는 것을 고려해 보세요) .
yub.js를 설치할 때 키워드 검색으로 설정할 것인지 아니면 기본 검색 엔진으로 사용할 것인지 고려해야 할 한 가지 사항입니다. 이를 기본값으로 설정하면 기본적으로 브라우저의 URL 표시줄 자체를 웹 명령줄로 만드는 이점이 있습니다.
yub.js의 가장 유용한 기능 중 하나는 사용하기 쉬운 API로, 서버에서와 마찬가지로 노트북에서도 잘 작동합니다. yub.js URL에 링크, 북마크 또는 키워드 검색을 지정하고 ?
결과로 바로 이동하려면 명령이나 검색어를 추가하세요.
예시 1:
http://example.com/yub
http://example.com/yub?weather tokyo
예시 2:
file:///home/user/yub/index.html?rand site
어떤 웹페이지에든 yub.js를 삽입하고 다음과 같은 기능적인 웹 명령줄을 얻을 수 있습니다.
다음 코드를 복사하여 페이지 아무 곳에나 포함시키세요.
<form method="get" action="#" onsubmit="window.location='https://dohliam.github.io/yub/?'+window.yub.value; return false"><img src="yub.gif" /> <input id="yub" type="text" size=27 value="yub.js web command-line" autocomplete="off" style="border-style: none none solid; color:gray; font-family:monospace;" onfocus="this.value=''; this.style.color='black'" onblur="if (this.value=='') {this.value='yub.js: enter commands here';this.style.color='gray'}"> <input style="visibility: hidden" type="submit" value="" />
이 작업을 수행하는 더 우아한 방법이 있을 수 있지만 몇 가지 테스트를 거친 후에는 이 방법이 Firefox와 Chrome 모두에서 작동하는 유일한 방법인 것처럼 보였습니다. 더 나은 것을 찾으면 자유롭게 실험하고 끌어오기 요청을여십시오!
아직 구현되지 않은 기능이 많이 있습니다. 가능한 한, 계획된 새로운 기능과 요청된 기능을 이슈 트래커에서 추적하고 있습니다. 아이디어가 있으면 계속해서 추가하세요(또는 프로젝트를 포크하고 끌어오기 요청을 통해 실행하세요)!
모든 사람의 사용자 정의 mods.js 파일을 보는 것은 정말 멋진 일입니다. 목록이 충분히 커지면 별도의 저장소가 장래에 또 다른 가능성이 있지만 이들에 대한 링크는 위키에서 공유될 수 있습니다. 그동안 공유하고 싶은 mods.js 파일이 있으면 알려주십시오. 특히 해당 파일이 특정 주제(예: 소셜 미디어 사이트 모음, 스웨덴 신문, 연구 데이터베이스, 역사가를 위한 도구 또는 해양 생물학자... 등).
아직 작업 중인 일부 계획된 기능은 다음과 같습니다.
watch
와 비슷하지만 음악용)이러한 기능(또는 제가 생각하지 못한 기능)을 추가하는 데 기여하고 싶다면 언제든지 끌어오기 요청을 제출하세요.
오래 전(정확히는 2005년), 사용자가 다양한 웹 서비스에 대한 명령과 바로가기를 직접 작성할 수 있는 YubNub이라는 획기적인 웹사이트가 공개되었습니다. bash와 같은 짧은 명령으로 웹 사이트에 액세스한다는 아이디어는 매우 매력적이고 실제로 중독성이 있으며, 곧 Split 및 gimyim 과 같은 모든 종류의 창의적인 도구로 이어졌습니다. 다른 많은 사람들과 함께 나는 많은 명령을 만들고 한동안 사이트를 꽤 많이 사용했습니다.
그러나 전혀 이해가 되지 않는 한 가지가 있었습니다. 왜 누군가가 (타인) 제3자 웹사이트를 통해 수행한 모든 단일 검색을 필터링하려고 할까요? 어쨌든 Firefox의 키워드 검색 기능이 널리 알려지자 YubNub 바로가기 사용의 매력은 사라지기 시작했습니다. 가장 일반적인 검색에 대해 로컬 Firefox 키워드를 설정한 다음 이를 대신 사용하는 것이 더 쉬웠습니다. 따라서 검색 키워드 형태의 이전 YubNub 명령 수십 개를 포함하는 북마크 파일은 컴퓨터에서 컴퓨터로 이동했으며, 이 시스템 역시 완전히 너무 투박하고 느리고 비실용적이라는 것이 명백해지기 전까지 거의 10년 동안 생존했습니다(예: 다른 컴퓨터를 사용하는 것은 고통스러웠고 여러 컴퓨터에 걸쳐 목록을 업데이트하는 것도 즐겁지 않았습니다. 게다가 이 방법은 YubNub이 제공하는 흥미로운 비검색 명령 기능도 많이 놓쳤습니다.
9년 후 YubNub을 방문하면 서비스가 여전히 실행되고 있음이 드러났으며 Wikipedia에 따르면 2008년 기준으로 22,000개 이상의 사용자 기여 명령을 자랑하기도 했습니다. 명령 목록을 보면 다음과 같은 실망스러운 결론에 도달하게 됩니다. 일단 멋진 서비스가 수천 개의 스팸 항목으로 가득 차서 한때 가장 사랑스러웠던 것 중 하나였던 공동체 의식( 소셜 명령줄 )이 모두 억압되었습니다. 사이트.
더욱 실망스러운 점은 가장 멋진 명령 중 다수(예: Split , gimyim )가 더 이상 작동하지 않는다는 것입니다. 물론 이것이 그렇게 놀라운 일은 아닙니다. 웹 아키텍처는 2005년 이후로 많이 바뀌었습니다. (분할의 경우 두 가지 모두 프레임에서 웹 사이트를 로드하는 것이 더 이상 정상적이고 허용되는 일이 아니기 때문입니다. 또한 gimyim 이 보여주듯이 Google과 Yahoo는 물론 거의 모든 주요 웹사이트가 이제 외부 사이트에서 콘텐츠를 로드하려는 시도를 적극적으로 막고 있기 때문입니다. 버머.
Yub.js는 누구나 자신의 필요에 맞게 조정하거나 로컬 컴퓨터에서 실행하거나 삭제할 수 있는 완전한 클라이언트 측 애플리케이션에서 이전 YubNub 명령줄의 일부 기능을 다시 가져오려는 시도로 시작되었습니다. 클라우드나 개인 서버에 접속하여 어디서나 액세스할 수 있습니다.
내가 이 아이디어를 수년 동안 헛되이 추진해 왔지만, 내가 하고 싶은 대부분의 작업을 JavaScript로 수행하는 것이 가능한지조차 확신할 수 없었기 때문에 항상 헛된 꿈으로 남아 있었습니다. 결국 나는 쿼리를 몇 가지 일반적인 검색 엔진으로 리디렉션하기 위해 작은 HTML 페이지를 만들었고 "yubSearch"가 탄생했습니다.
그러나 검색 단축키만으로는 충분하지 않다는 것이 곧 분명해졌습니다. 바로가기 목록을 검색하는 간단한 명령 뒤에는 날짜와 시간을 인쇄하고, 각 바로가기에 대한 설명을 표시하고, 텍스트를 정렬하는 다른 명령이 이어졌습니다. 계산기가 추가된 다음 스톱워치가 추가되었습니다. 새로운 명령이 코드 조각과 곳곳의 해결 방법에서 발전함에 따라 순수 JavaScript만으로 무엇을 조합할 수 있는지 확인하는 것이 거의 어려워졌습니다. 더 이상 검색 바로가기에 관한 것이 아니었습니다. 따라서 yubSearch는 yub.js가 되었습니다.
개발은 실제로 필요할 때마다 새로운 기능을 추가하면서 가려운 마음으로 열심히 진행되었습니다. 아주 초기부터 yub.js는 자체 개발 환경이 되었고, 공통 개발을 돕는 JavaScript(및 기타 널리 사용되는 스크립팅 언어), 린터 및 내부 명령 생성 구문에 대한 참조 도구가 내장되어 있습니다. -관련 작업이 훨씬 쉬워졌습니다.
어느 시점에서 yub.js는 그 자체로 생명을 얻었습니다. Turing이 완전히 완료되지는 않았지만 대화 프롬프트에 응답하기 위한 엔진으로 Eliza를 추가하는 패치가 고려되었을 때 위험할 정도로 가까워졌습니다...
Yub.js는 프레임워크나 외부 라이브러리를 사용하지 않고 순수 JS로 계속 개발됩니다. 서버 측 스크립팅, 프레임워크 및 기타 엄청난 코딩 포병을 사용하여 많은 흥미로운 기능을 추가할 수 있지만 주요 목표는 항상 이식성과 응답성이었습니다. 데스크톱, 컴퓨터 등 거의 모든 곳에 yub.js를 배치할 수 있습니다. 서버, ChromeBook, 심지어 휴대폰까지 모두 거의 동일한 방식으로 작동합니다. 이는 단순한 검색(보다 정교한 검색은 고사하고)조차 때때로 작업하기가 믿을 수 없을 정도로 서툴고 좌절스러울 수 있는 모바일 장치에서 특별한 생명의 은인임이 입증되었습니다.
그러나 위에서 언급한 것처럼 코드는 (아주 최근까지) 표준화 되거나 효율적이라는 것은 고사하고 보기 좋게 만들려는 생각도 없이 말 그대로 예비 부품으로 엮어져 있었습니다. 그럼에도 불구하고 상대적으로 작은 파일 크기와 전적으로 클라이언트 측에서 실행된다는 이점 덕분에 모든 것이 놀라운 속도로 진행됩니다.
더 빨라질 수도 있나요? 전적으로! 기존(아주 추악한) 코드베이스를 최적화하고 다듬기 위해 해야 할 일이 많이 남아 있다는 것은 의심의 여지가 없습니다. 일반 사용자가 이러한 개선 사항을 알 수 있습니까? 말하기가 더 어렵습니다. 결국 즉각적인 응답 시간과 그 절반 속도의 차이를 식별하기가 꽤 어려울 수 있습니다. 특정 시간에 JavaScript가 처리하는 대부분의 개별 작업은 매우 사소한 작업(목록 만들기, URL로 리디렉션)이므로 실제 사용 중에 속도가 문제가 되는 경우는 거의 없습니다.
반면에, 필요한 것보다 느린 것들이 원칙적으로 당신을 괴롭히는 경우에는 다음 섹션을 살펴보는 것이 좋습니다.
클라우드 동기화 애호가 : Firefox 동기화를 사용하거나 Google 계정으로 Chrome에 로그인할 수 있는데 이 모든 것이 무슨 의미인지 여전히 궁금하시다면 yub.js가 적합하지 않을 수 있습니다.
북마크 관리자 : 이제 거의 모든 주요 브라우저에 대한 클라우드 동기화 옵션이 어디에나 있으며, 해당 서비스 중 하나가 아닌 경우 언제든지 서버 어딘가에 북마크 파일을 백업하고 작업을 완료할 수 있습니다. 그것이 당신에게 효과가 있다면 좋습니다. 하지만 애초에 이러한 접근 방식에 대한 좌절감 때문에 yub.js가 탄생하게 되었습니다.
우아한 코드에 대한 고집 : 앞서 언급했듯이 코드는 현재 매우 보기 흉합니다. 물론 의도한 것은 아니지만 모든 새로운 기능이 즉시 시급한 요구로 인해 추가되었기 때문에 클러지 및 모든 종류의 무차별 대입 비효율적인 루프입니다. 많이 있다. 코드가 (천천히) 리팩터링됨에 따라 시간이 지남에 따라 변경될 것으로 예상됩니다. 하지만 보기 흉한 코드가 기분을 상하게 한다면 눈을 돌리는 것이 좋습니다.
eval을 싫어하는 사람 : 어떤 상황에서든 eval이 나쁘다고 생각한다면(심지어 정제된 수학 표현식을 구문 분석하는 경우에도)... yub.js 버전에서 계산기 기능을 제거하는 것이 좋습니다.
bash.js를 찾는 사람들 : Yub.js는 bash를 JavaScript로 이식한 것이 아닙니다. yub.js가 mount
명령을 제공하지 않거나, 프로세스를 kill
하거나, 마우스 드라이버를 modprobe
방법이 없는 이유가 궁금하다면... 아마도 잘못된 위치에 있는 것입니다(아마도 unixkcd를 찾고 있을 것입니다). 반면, 웹 명령줄에서 이해할 수 있는 mount
, kill
또는 modprobe
에 대한 적절한 비유를 생각할 수 있다면 여러분의 의견을 듣고 싶습니다! ?
Jon Aquino와 전성기에 YubNub에 기여한 모든 사람에게 yub.js의 원래 영감이 된 명령줄로서의 웹 비유에 대해 많은 감사를 드립니다.
Ruby용 Uglifier를 사용하여 만든 축소된 단일 페이지 버전입니다.
https://github.com/dohliam/tocdown에서 생성된 목차.
무작위 GitHub 저장소는 RyanDavison의 RandomRepo를 기반으로 합니다.
다양한 스킨을 위한 배경화면:
MIT - 자세한 내용은 LICENSE 파일을 참조하세요.