Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.

Python으로 Ideone.com에 업로드하는 스크립트를 만들어보자.

Am Anfang (개요)

Code-Sharing (코드 의 공유)

Betrachten verschiedener Websites der Programmiergemeinschaft, Um Ihren Code anzuzeigen und andere Syntaxhervorhebungen anzuwenden, Sie können sehen, dass Sie verschiedene Web-IDEs verwenden. Dies liegt daran, dass es nicht möglich ist, Schriftarten und Textfarben mit HTML-Tags einzeln zu schreiben.

여러 프프로그래밍 커뮤니티를 둘러보다 보면, 자신의 소스 코드를 보여주기 위해, 혹은 Syntax Highlighting을 적용시키기 위해, 여러가지 Web IDE를 사용하는 것을 발견할 수 있다. 일일히 HTML 태그를 적어가며 폰트를 지정하고, 글자 색을 입힐 수는 없는 노릇이다.

Informationen zu verschiedenen Web-IDEs (여러 Web-IDE 에 대해)

Codepad, Ideone, JSFiddle (nur HTML / CSS / Javascript) Wie auch immer), Coding Ground (verfügbar auf der Web Shell-Plattform), Es gibt viele wie Pastebin.com (lassen Sie es einfach nicht ausführbar aussehen), Für mich war "ideone.com" am einfachsten zu bedienen. Es unterstützt viele Sprachen und ermöglicht es Ihnen, Ihren Code tatsächlich auszuführen. Es ist ein Bonus, dass die Syntax-Highlights gut aussehen.

codepad, Ideone, JSFiddle(HTML / CSS / Javascript 밖에 못 쓰지만 아무튼), Coding Ground(여기는 Web Shell 기반으로 이용 가능함), Pastebin.com(실행은 부가능하고, 보여주기만 가능) 등 많이 있는데, 나는 ideone.com 쪽이 제일 쓰기 쉬웠던 것 같다. 지원하는 언어도 많을 뿐더러, 실제로 소스 코드를 실행해 볼 수도 있기 때문이다. Syntax Highlight 기능이 보기 좋게 꾸며주는 것은 덤.

Dies ist jedoch auch problematisch (허나, 이것 마 저도 귀찮다)

Suchen Sie einen Webbrowser, stellen Sie eine Verbindung zu "ideone.com" her, kopieren Sie meinen Code und kopieren Sie die erstellte URL erneut. Nur dann können Sie den Link teilen. Es ist ein wirklich ineffizienter Schritt. Versuchen wir also, die URL abzurufen, sobald wir sie erstellt haben, und laden sie nacheinander hoch.

웹 브라우저로 가서, ideone.com 등으로 접속하고, 내 소스 코드를 복붙하여 실행 후, 만들어진 URL을 또 다시 복붙한다. 이제야 링크를 공유할 수 있다. 실로 비효율적인 움직임이다. 그러므로, 작성하고 바로 업로드해서 바로 URL을 얻을 수 있도록 해보자.

Analyse des Datenflusses (데이터 흐름 의 분석)

Simulation zum Testen (테스트 를 위한 시뮬 시뮬 레)

Lassen Sie uns zunächst eine Verbindung zu "ideone.com" herstellen und den Code registrieren.

우선 실제로 ideone.com 으로 접속해서 소스 코드를 등록해보자.

0001.png

Schreiben Sie einfach nur "Test". Wenn Sie hier auf die Schaltfläche "Ausführen" klicken, wird eine URL angezeigt, die freigegeben werden kann. Dies ist jedoch jetzt nicht der Zweck. Da sich die Adresse ändert, werden wahrscheinlich das Tag "Form" und die Übertragung "POST" verwendet. Es ist notwendig, die Adresse und die Daten des Ziels herauszufinden, an das die Daten übertragen werden. Versuchen Sie es mit den Chrome-Entwicklertools.

간단하게 test만 적어둔다. 여기서 Run 버튼을 누르면 공유가 가능한 URL이 나올테지만, 지금 목적은 그게 아니다. 주소가 바뀐다는 사실을 보면 Form 태그로 POST 전송을 이용할 가능성이 높다. 데이터를 전송할 목적지의 주소와 데이터를 알아낼 필요가 있다. 이를 위해 Chrome의 개발자 도구를 사용한다.

0002.png

Wenn alle Seiten auf diese Weise geladen wurden, löschen Sie die Registerkarte Netzwerk und warten Sie. Und Run. Beenden Sie danach die Arbeit mit der ESC-Taste zum richtigen Zeitpunkt. Wenn das passiert,

위와 같이 페이지 로딩이 완전히 끝난 상태에서 Network 탭을 비워둔다. 그리고 Run. 그 후 타이밍에 맞춰 ESC 버튼을 눌러 동작을 정지시킨다. 그러면,

Ergebnis (결과)

0003.png

Wie in der Abbildung gezeigt, werden die Informationen der übertragenen Seite "POST" und der Seite, die zum späteren Verschieben erstellt wurde, angezeigt. Wenn Sie auf diese "Senden" -Seite klicken und sich die Informationen in der Kopfzeile ansehen, heißt es:

사진처럼 POST 전송한 페이지의 정보와, 앞으로 이동할 만들어진 페이지가 나타난다. 이 submit 페이지를 클릭하여 헤더 정보를 보면 이렇게 적혀있다.

0004.png

Wenn eine Verbindung zu / ideone / Index / submit / hergestellt wird, empfängt es HTTP 302 und leitet mit dem Header Location weiter. Werfen wir einen Blick auf die von hier gesendeten Daten.

/ideone/Index/submit/에 접속하면 HTTP 302를 받으며 Location 헤더를 통해 리다이렉션한다. 이쪽에서 보낸 데이터를 보자.

0005.png

Verschiedene Variablen wurden zusammen übertragen. Und Sie können sehen, dass die Variable "file" der Code ist, den Sie zuvor erstellt haben. Wenn Sie versuchen, eine Verbindung herzustellen, indem Sie direkt die Adresse des Headers "Standort" eingeben,

여러 변수가 함께 전송되었다. 그리고 file 변수에 아까 적은 소스 코드가 적혀있는 것을 확인할 수 있다. Location 헤더의 주소를 직접 입력하여 접속해보면,

0006.png

Sicherlich wird die richtige Seite erstellt.

제대로 된 페이지가 확실히 만들어져있다.

Organisieren (정리)

Lassen Sie es uns hier organisieren.

여기까지 일단 정리해보자.

--Run sendet mit POST Daten an die Seite/ ideone / Index / submit /.

Es ist einfach. Lassen Sie uns anhand dieser Informationen den Skriptcode schreiben.

매우 심플하다. 이번에는 이 정보를 이용해서 실제로 스크립트 코드를 적어보자.

Erstellen eines Skripts (스크립트 의 작성)

Die Testumgebung verwendet Python 3.5 in Ubuntu. Sie haben die Bibliotheken "request" und "lxml" bereits mit "pip" installiert. Da ich jedoch ursprünglich "Windows 10" verwendet habe, habe ich begonnen, "Entwicklertools von" Chrome "von" Windows "zu verwenden. Der Punkt ist, dass es überall sein kann.

테스트 환경은 Ubuntu 에서 Python 3.5를 사용한다. 이미 pip로 requests와 lxml 라이브러리를 설치해둔 상태이다. 그러나 원래 Windows 10을 사용하고 있기 때문에 Chrome의 Developer Tool은 Windows에서 사용했다. 말하자면, 어디든 상관 없다는 이야기다.

Testcode Nr. 1 (테스트 코드 Nr. 1)

Lassen Sie es uns zunächst so verkörpern, wie es im Screenshot angezeigt wird.

우선, 스크린 샷에 나와있는 대로 구현해보자.

ideone-test-1.py


from requests import get, post

from pprint import pprint

url = "http://ideone.com/ideone/Index/submit/"

headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }

data = {
    "p1": "69fc2d31721791fd3912a444035b0ba6",
    "p2": 9,
    "p3": 20,
    "p4": 1710,
    "clone_link": "/",
    "file": "Lorem ipsum dolor sit amet",
    "input": '',
    "syntax": 1,
    "timelimit": 0,
    "note": '',
    "_lang": 116,
    "public": 1,
    "run": 1,
    "Submit": '',
}

rs = post(url, headers=headers, data=data)
print(rs)
pprint(dict(rs.headers))

Der Inhalt des Codes wurde in "Lorem ipsum dolor sit amet" geändert. Ich habe den "User-Agent" in der Kopfzeile in den von "Chrome" geändert, weil ich nicht weiß, ob er vom Server gesperrt wird. Jetzt renn.

소스 코드의 내용은 'Lorem ipsum dolor sit amet' 으로 변경했다. 혹시 서버에서 밴당할까 싶어 User-Agent 헤더도 Chrome의 것으로 바꿨다. 이대로 실행.

<Response [200]>
{'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, '
                  'pre-check=0',
 'Connection': 'Keep-Alive',
 'Content-Encoding': 'gzip',
 'Content-Length': '11067',
 'Content-Type': 'text/html',
 'Date': 'Tue, 02 Aug 2016 05:23:03 GMT',
 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT',
 'Keep-Alive': 'timeout=1, max=90',
 'Pragma': 'no-cache',
 'Server': 'Apache/2.2.22 (Debian)',
 'Set-Cookie': 'JIDEONE=d6e51e6c3ec5a653d7e1be24b87cf050; expires=Thu, '
               '02-Aug-2018 05:23:04 GMT; path=/',
 'Vary': 'Accept-Encoding',
 'X-Powered-By': 'PHP/5.4.15-1'}

Nr. 200 kommt. Oh, ich habe die Weiterleitung verpasst. Fügen Sie dem Argument der Post-Funktion allow_redirects = True hinzu und führen Sie es erneut aus.

200번이 온다. 아, 리다이렉트한다는 것을 깜빡했다. post 함수의 인자에 allow_redirects=True 를 추가해서 재실행한다.

<Response [302]>
{'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, '
                  'pre-check=0',
 'Connection': 'Keep-Alive',
 'Content-Encoding': 'gzip',
 'Content-Length': '20',
 'Content-Type': 'text/html',
 'Date': 'Tue, 02 Aug 2016 05:54:25 GMT',
 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT',
 'Keep-Alive': 'timeout=1, max=85',
 'Location': '/',
 'Pragma': 'no-cache',
 'Server': 'Apache/2.2.22 (Debian)',
 'Set-Cookie': 'PHPSESSID=2gg67ij2vmh97d3aapqia8sgt4; path=/',
 'Vary': 'Accept-Encoding',
 'X-Powered-By': 'PHP/5.4.15-1'}

Es ist endlich 302, aber der Header "Location" ist falsch. Nun, das ist nicht unerwartet. Wahrscheinlich ein Problem mit Cookies oder dem Hash von "p1". Lassen Sie uns diesmal das Verhalten des Webbrowsers nachahmen.

드디어 302가 되었지만, Location 헤더가 맞지 않다. 뭐, 예상 못한 것은 아니다. 아마도 Cookie나 p1 의 해쉬코드가 문제일 것이다. 이번에는 웹 브라우저의 동작을 그대로 따라해보자.

Testcode Nr. 2 (테스트 코드 Nr. 2)

Wiederherstellung variabler Wurzeln (변수 값 의 복원)

Bevor Sie den Code schreiben, müssen Sie einige Dinge überprüfen. Variablen, die nicht 0 sind, wie "Syntax", "Public" und "Run", können mit "Booleschen" Variablen erraten werden, aber ich verstehe die Bedeutung von "p1, p2, p3, p4" nicht. Stellen Sie eine Verbindung zu view-source: http: // ideone.com / her und überprüfen Sie es.

소스 코드를 적기 전에 몇 가지 확인해야 할 것이 있다. syntax나 public, run 같이 0 혹은 1로 되어있는 변수들은 Boolean 변수로 추측이 가능하지만, p1, p2, p3, p4 의 의미를 알 수가 없다. 당장 view-source:http://ideone.com/ 에 접속해 조사해보자.

0011.png

Sie können es sehen, sobald Sie die Schriftrolle ein wenig absenken. Der Hash befindet sich direkt in "p1" der "Eingabe" -Tags, und die Zahlen werden auch in "p2" und "p3" eingegeben. Übrigens ... Gibt es irgendetwas in p4? ?? ?? Sie müssen nicht in Panik geraten. Sie sollten es auf jeden Fall irgendwo geben. In solchen Fällen ist es oft "Javascript". Lassen Sie uns mit <script oder .js als Schlüsselwort suchen.

스크롤을 조금 내리니 보인다. input 태그 중 p1 에 해쉬코드가 그대로 들어가있고, p2와 p3에는 숫자가 입력되어있다. 그런데... p4에는 아무것도 없어??? 당황할 필요 없다. 분명히 어딘가에서 값을 줄 것이다. 이런 경우에는 대체로 Javascript로 되어 있는 경우가 많다. '<script' 나 '.js' 로 검색해보자.

0013.png

Ich habe mich viel umgesehen, aber als ich herausfand, dass ideone-common.js am interessantesten war und es öffnete,

여기저기 둘러봤는데, 이 'ideone-common.js'가 가장 의심스러워 열어봤더니,

0014.png

Ich habe es gefunden.

찾았다.

Berechnung von Variablen (변수 의 계산)

Es ist ein wenig leicht zu sehen, weil es "jQuery" ist. Es scheint, dass die Funktion "Schutz" für "p4" verwendet wird, um "p1, p2, p3" zu faktorisieren und das Ergebnis zu ersetzen. Es scheint jedoch ein Problem zu geben. Ich kann die Definition der Schutzfunktion nicht sehen. Und Sie können den "Schutz" in dem "eval" Teil sehen, den Sie gezogen haben. Nach den Faktoren von "p, a, c, k, e, d" scheint es sich um eine zufällige Lesung zu handeln.

jQuery로 되어 있어 조금 보기 쉽다. p4에 protection이라는 함수로 p1, p2, p3를 인자로 넣어 그 결과를 대입하는 것으로 보인다. 그러나 문제가 있어 보인다. protection 함수의 정의가 보이지 않는다. 그리고 위의 드래그한 eval 부분에 protection이 보인다. p,a,c,k,e,d 라는 인자를 보아하니 난독화된 것 같다.

0015.png

Wenn Sie es tatsächlich mit den Entwicklertools ausführen, wird die Funktion "Schutz" erstellt. Es ist ein wenig interessant, aber es ist jetzt nicht der Zweck. Lassen Sie uns die Schutzfunktion analysieren.

실제로 개발자 도구에서 실행시켜보니 protection 함수가 만들어진다. 살짝 흥미가 동하지만 지금 목적은 이게 아니다. protection 함수를 분석해보자.

protection.js


function protection($a, $b, $c) {
    var $r = 0;
    $a = mul($c, 2);
    for (var $i = 0; $i < $c; $i++) {
        $r = add($r, _mul($i, $b))
    }
    return $r;
}

Der in einer Zeile geschriebene Code ist schwer zu erkennen, daher habe ich ihn von Online JavaScript Beautifier gesendet. Es war keine schwierige Berechnung. Ich brauche überhaupt kein $ a. Zusamenfassend,

한 줄로 써 있는 소스 코드는 보기 힘들기 때문에 Online JavaScript Beautifier에서 개행했다. 어려운 계산은 아니었다. 심지어 $a는 쓰이지도 않는다. 요약해보면,

protection-summary.js


function protection(a, b, c) {
    var r = 0;
    for (var i = 0; i < c; ++i) r += i * b;
    return r;
}

Es wird so sein. Wenn Sie die Berechnungsformel selbst organisieren,

이렇게 된다. 계산식 자체를 정리해보면,

protection-summary2.js


function protection(a, b, c) {
    return b * ((c - 1) * c) / 2;
}

Es wird auch so sein. Das brauche ich jetzt. Die Materialien sind fertig. Lassen Sie uns ein Python-Skript schreiben.

이렇게도 된다. 지금 필요한 것이 이것. 재료가 모였다. Python 스크립트를 쓰자.

Ganzer Skriptcode (전체 스크립트 코드)

ideone-test-2.py


from requests import get, post
from lxml.etree import HTML
namespaces = dict(re="http://exslt.org/regular-expressions")

from pprint import pprint

''' #1:Holen Sie sich Cookies.'''
#Erhalten Sie zuerst die Indexseite und speichern Sie das Cookie.
# (먼저 index 페이지를 받아 Cookie 등을 저장)
url = "http://ideone.com/"
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }
rs = get(url, headers=headers)
cookies = rs.cookies
root = HTML(rs.content if rs.ok else "<error/>")

data = {
    "file": "Lorem ipsum dolor sit amet",
    "input": '',
    "syntax": 1,
    "timelimit": 0,
    "note": '',
    "public": 1,
    "run": 1,
    "Submit": '',
}

''' #2: p1, p2,Berechnen Sie p4 aus p3.(p1, p2, p3을 이용해 p4 계산) '''
#Analysieren Sie den Inhalt von HTML und p1 mit XPath, p2,Holen Sie sich p3.
# (HTML의 내용을 분석하여 XPath를 이용해 p1, p2, p3을 가져온다.)
#for x in root.xpath('//*[@id="p1" or @id="p2" or @id="p3" or @id="p4"]'):
#Sie können dies auch mit einem regulären Ausdruck tun.
# (정규식으로 이렇게도 가능)
for x in root.xpath('//*[re:test(@id,"p[1-3]")]', namespaces=namespaces):
    data[x.get("id")] = x.get("value")

p2 = int(data["p2"])
p3 = int(data["p3"])
p4 = p2 * sum(range(p3))
data["p4"] = str(p4)


''' #3: _Holen Sie sich die Lang-Code-Liste.(_lang 코드 리스트를 획득) '''
#Holen Sie sich direkt eine Liste der Sprachcodes und verwenden Sie diese.
# (언어 코드 리스트를 직접 획득하여 사용해 보자.)
_langs = {}
#for x in root.xpath('//li/*[starts-with(@id,"menu-lang-")]'):
for x in root.xpath('//li/*[re:test(@id,"menu-lang-[0-9]+")]', namespaces=namespaces):
    _langs[x.text] = int(x.get("data-id"))

data["_lang"] = _langs["Python 3"]


url = "http://ideone.com/ideone/Index/submit/"
rs = post(url, headers=headers, cookies=cookies, data=data, allow_redirects=False)
print(rs)
pprint(dict(rs.headers))

Was ist das Ergebnis der Ausführung?

실행한 결과는?

<Response [302]>
{'Cache-Control': 'no-store, no-cache, must-revalidate, post-check=0, '
                  'pre-check=0',
 'Connection': 'Keep-Alive',
 'Content-Encoding': 'gzip',
 'Content-Length': '20',
 'Content-Type': 'text/html',
 'Date': 'Fri, 05 Aug 2016 06:40:25 GMT',
 'Expires': 'Thu, 19 Nov 1981 08:52:00 GMT',
 'Keep-Alive': 'timeout=1, max=79',
 'Location': '/UH3fgT',
 'Pragma': 'no-cache',
 'Server': 'Apache/2.2.22 (Debian)',
 'Set-Cookie': 'settings=%7B%22run_lang%22%3A%22116%22%7D; expires=Wed, '
               '01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%2C%22run_run%22%3A%221%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%2C%22run_run%22%3A%221%22%2C%22run_syntax%22%3A%221%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/, '
               'settings=%7B%22run_lang%22%3A%22116%22%2C%22run_public%22%3A%221%22%2C%22run_run%22%3A%221%22%2C%22run_syntax%22%3A%221%22%2C%22run_timelimit%22%3A%220%22%7D; '
               'expires=Wed, 01-Feb-2017 06:40:25 GMT; path=/',
 'Vary': 'Accept-Encoding',
 'X-Powered-By': 'PHP/5.4.15-1'}

Die Adresse ist häufig im Header "Location" enthalten.

Location 헤더에 주소가 잘 들어가있다.

0016.png

Die Seite wird auch normal angezeigt. Nun, es kann so verwendet werden, wie es ist, und man kann sagen, dass es fast fertig ist, aber lassen Sie es uns so organisieren, dass es mit bash verwendet werden kann.

페이지도 정상적으로 나온다. 뭐, 이대로도 쓸 수 있고, 거의 완성이라고도 할 수 있지만, bash에서 쓸 수 있도록 정리해보자.

Referenzcode (정리 소스 코드)

ideone.py


from os.path import exists, split, splitext
from sys import argv

from urllib.parse import urlunparse
from requests import get, post
from lxml.etree import HTML
namespaces = dict(re="http://exslt.org/regular-expressions")

from pprint import pprint


extensions = {
    ".c": "C",
    ".cpp": "C++14",
    ".java": "Java7",
    ".pl": "Perl",
    ".php": "PHP",
    ".py": "Python 3",
    ".ruby": "Ruby",
    ".sql": "SQL",
    ".vb": "VB.NET",
    ".go": "GO",
    ".js": "JavaScript (rhino)",
    ".lua": "Lua",
}

def get_ideone(_lang):
    url = "http://ideone.com/"
    headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }
    rs = get(url, headers=headers)
    root = HTML(rs.content if rs.ok else "<error/>")

    data = {}
    for x in root.xpath('//*[re:test(@id,"p[1-3]")]', namespaces=namespaces):
        data[x.get("id")] = x.get("value")

    p2 = int(data["p2"])
    p3 = int(data["p3"])
    p4 = p2 * sum(range(p3))
    data["p4"] = str(p4)

    _langs = {}
    for x in root.xpath('//li/*[re:test(@id,"menu-lang-[0-9]+")]', namespaces=namespaces):
        _langs[x.text.upper()] = int(x.get("data-id"))
    data["_lang"] = _langs[_lang]

    return rs.cookies, data

def ideone(path, _lang=''):
    d, f = split(path)
    n, e = splitext(f)

    if len(_lang) <= 0:
        _lang = "Text"
        if e.lower() in extensions.keys():
            _lang = extensions[e.lower()]

    cookies, data = get_ideone(_lang.upper())

    data.update({
        "input": '',
        "syntax": 1,
        "timelimit": 0,
        "note": '',
        "public": 1,
        "run": 1,
        "Submit": '',
    })

    with open(path, 'r') as ro:
        data["file"] = ro.read()

    url = "http://ideone.com/ideone/Index/submit/"
    headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" }
    rs = post(url, headers=headers, cookies=cookies, data=data, allow_redirects=False)

    scheme = "http"
    netloc = "ideone.com"
    path = rs.headers["Location"]
    params = ''
    query = ''
    favorite = ''
    return _lang, urlunparse((scheme, netloc, path, params, query, favorite))

def usage(name):
    print("Usage: ./{} <file1> <file2> ...".format(name))

def main(argc, args):
    if argc == 1:
        d, f = split(__file__)
        usage(f)
    else:
        for i, x in enumerate(args[1:]):
            d, f = split(x)
            _lang, url = ideone(x)
            print(" - #{} ({}): {} - {}".format(i + 1, f, _lang, url))

if __name__ == "__main__":
    main(len(argv), argv)

Ich bin ein wenig enttäuscht von der Methode zum Abgleichen von Dateierweiterungen, aber wenn Sie den Teil "Erweiterungen" im Code ändern und verwenden, wird die Erweiterung automatisch erkannt und hochgeladen.

파일 확장자를 매칭시키는 방법이 조금 아쉽지만, 소스 코드 안의 extensions 부분을 수정해서 사용하면 자동적으로 확장자를 인식하여 업로드 가능하다.

Ausführungsergebnis (실행 결과)

root@q:~# python3 ideone.py ideone.py
 - #1 (ideone.py): Python 3 - http://ideone.com/5QJTRR

Es ist richtig raus. Lassen Sie uns verbinden. http://ideone.com/5QJTRR

잘 나온다. 접속해보자.

0021.png

In Ordung. Der Code, den ich geschrieben habe, ist so wie er ist enthalten.

오케이. 내가 쓴 소스 소드가 그대로 들어가 있다.

Schlussfolgerung (결론)

Bisher habe ich zuerst bei Qiita geschrieben, wie man Zeit effizient verschwendet. Ich habe es geschrieben, aber ehrlich gesagt weiß ich nicht, wann ich es verwenden soll. Ich werde es eines Tages versuchen.

여기까지 시간을 효율적으로 낭비하는 방법에 대해 Qiita에 처음으로 기술하였다. 내가 적어놓고도 언제 쓸지 솔직히 모르겠다. 언젠간 쓰겠지.

Recommended Posts

Erstellen wir ein Skript, das sich bei Ideone.com in Python registriert.
Erstellen wir mit Python eine kostenlose Gruppe
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen wir eine Kundendatenbank, in der QR-Code automatisch in Python ausgegeben wird
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Erstellen Sie ein Verzeichnis mit Python
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Erstellen Sie in Python einen Dekorator, der Argumente dynamisch akzeptiert. Erstellen Sie einen Dekorator
Erstellen Sie mit Quarry einen gefälschten Minecraft-Server in Python
[Piyopiyokai # 1] Spielen wir mit Lambda: Erstellen eines Python-Skripts
Erstellen Sie einen DI-Container mit Python
Lassen Sie uns eine GUI mit Python erstellen.
Erstellen Sie mit PyInstaller eine exe-Datei, die in einer Windows-Umgebung ohne Python funktioniert
Erstellen Sie ein untergeordnetes Konto für die Verbindung mit Stripe in Python
Lassen Sie uns ein PRML-Diagramm mit Python, Numpy und matplotlib erstellen.
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Binärdatei in Python
Erstellen Sie den Code, der in Python "A und vorgeben B" ausgibt
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Erstellen Sie eine zufällige Zeichenfolge in Python
Schreiben Sie ein Batch-Skript mit Python3.5 ~
[Python / Django] Erstellen Sie eine Web-API, die im JSON-Format antwortet
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
Ich werde versuchen, eine Python-Verzeichnisstruktur zu erstellen, die ich später nicht bereuen werde
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Erstellen Sie mit Class einen Python-Funktionsdekorator
[Python] Ein Programm, das Treppen mit # erstellt
Lassen Sie uns mit Python ein Shiritori-Spiel machen
Erstellen Sie eine einfache GUI-App in Python
Erstellen wir eine virtuelle Umgebung für Python
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Führen Sie den Python-Interpreter im Skript aus
Lassen Sie uns mit Python langsam sprechen
Erstellen Sie ein Sternensystem mit Blender 2.80-Skript
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
[Python] Erstellen Sie einen LineBot, der regelmäßig ausgeführt wird
[GPS] Erstellen Sie eine kml-Datei mit Python
Eine typisierte Welt, die mit Python beginnt
Erstellen Sie ein Webframework mit Python! (1)
Lassen Sie uns eine Kombinationsberechnung mit Python durchführen
Lassen Sie uns das Bash-Skript in Java ausführen
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie ein Webframework mit Python! (2)
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
Erstellen Sie in 1 Minute eine Vim + Python-Testumgebung
Erstellen Sie eine GIF-Datei mit Pillow in Python
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Erstellen Sie solche Testdaten mit Python (Teil 1)
Ein Memo, das ich schnell in Python geschrieben habe
Erstellen Sie in Python ein Diagramm der Standardnormalverteilung